diff -Nru spice-0.10.0/aclocal.m4 spice-0.10.1/aclocal.m4 --- spice-0.10.0/aclocal.m4 2011-11-10 15:02:14.000000000 +0000 +++ spice-0.10.1/aclocal.m4 2012-01-23 15:23:22.000000000 +0000 @@ -22,8 +22,8 @@ # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives @@ -32,8 +32,8 @@ m4_define([_LT_COPYING], [dnl # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. @@ -167,6 +167,8 @@ AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl +_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl +dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl @@ -652,7 +654,7 @@ m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. -Copyright (C) 2010 Free Software Foundation, Inc. +Copyright (C) 2011 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." @@ -816,6 +818,7 @@ m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], + [Go], [_LT_LANG(GO)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], @@ -837,6 +840,29 @@ ])# _LT_LANG +m4_ifndef([AC_PROG_GO], [ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_GO. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +m4_defun([AC_PROG_GO], +[AC_LANG_PUSH(Go)dnl +AC_ARG_VAR([GOC], [Go compiler command])dnl +AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl +_AC_ARG_VAR_LDFLAGS()dnl +AC_CHECK_TOOL(GOC, gccgo) +if test -z "$GOC"; then + if test -n "$ac_tool_prefix"; then + AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) + fi +fi +if test -z "$GOC"; then + AC_CHECK_PROG(GOC, gccgo, gccgo, false) +fi +])#m4_defun +])#m4_ifndef + + # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], @@ -867,6 +893,10 @@ m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) +AC_PROVIDE_IFELSE([AC_PROG_GO], + [LT_LANG(GO)], + [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) + AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) @@ -969,7 +999,13 @@ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? - if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD @@ -977,6 +1013,7 @@ rm -rf libconftest.dylib* rm -f conftest.* fi]) + AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no @@ -988,6 +1025,7 @@ [lt_cv_ld_exported_symbols_list=no]) LDFLAGS="$save_LDFLAGS" ]) + AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF @@ -1005,7 +1043,9 @@ echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? - if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD @@ -1050,8 +1090,8 @@ ]) -# _LT_DARWIN_LINKER_FEATURES -# -------------------------- +# _LT_DARWIN_LINKER_FEATURES([TAG]) +# --------------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ @@ -1062,6 +1102,8 @@ _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported if test "$lt_cv_ld_force_load" = "yes"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], + [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi @@ -1345,14 +1387,27 @@ CFLAGS="$SAVE_CFLAGS" fi ;; -sparc*-*solaris*) +*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; + yes*) + case $host in + i?86-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD="${LD-ld}_sol2" + fi + ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" @@ -1429,13 +1484,13 @@ if test -n "$RANLIB"; then case $host_os in openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in @@ -1615,6 +1670,11 @@ lt_cv_sys_max_cmd_len=196608 ;; + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not @@ -1654,7 +1714,7 @@ # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. - while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ + while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do @@ -2200,7 +2260,7 @@ case $host_os in aix3*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH @@ -2209,7 +2269,7 @@ ;; aix[[4-9]]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes @@ -2274,7 +2334,7 @@ ;; bsdi[[45]]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' @@ -2413,7 +2473,7 @@ ;; dgux*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' @@ -2421,10 +2481,6 @@ shlibpath_var=LD_LIBRARY_PATH ;; -freebsd1*) - dynamic_linker=no - ;; - freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. @@ -2432,7 +2488,7 @@ objformat=`/usr/bin/objformat` else case $host_os in - freebsd[[123]]*) objformat=aout ;; + freebsd[[23]].*) objformat=aout ;; *) objformat=elf ;; esac fi @@ -2450,7 +2506,7 @@ esac shlibpath_var=LD_LIBRARY_PATH case $host_os in - freebsd2*) + freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) @@ -2470,17 +2526,18 @@ ;; gnu*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; haiku*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" @@ -2541,7 +2598,7 @@ ;; interix[[3-9]]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' @@ -2557,7 +2614,7 @@ nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; @@ -2594,9 +2651,9 @@ dynamic_linker=no ;; -# This must be Linux ELF. +# This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -2663,7 +2720,7 @@ ;; newsos6) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes @@ -2732,7 +2789,7 @@ ;; solaris*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -2757,7 +2814,7 @@ ;; sysv4 | sysv4.3*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH @@ -2781,7 +2838,7 @@ sysv4*MP*) if test -d /usr/nec ;then - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH @@ -2812,7 +2869,7 @@ tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -2822,7 +2879,7 @@ ;; uts4*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH @@ -3244,7 +3301,7 @@ lt_cv_deplibs_check_method=pass_all ;; -# This must be Linux ELF. +# This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; @@ -3664,6 +3721,7 @@ # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ @@ -4248,7 +4306,9 @@ case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC' + if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" + fi ;; esac else @@ -4340,18 +4400,33 @@ ;; *) case `$CC -V 2>&1 | sed 5q` in - *Sun\ F* | *Sun*Fortran*) + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; + *Sun\ F* | *Sun*Fortran*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; + *Intel*\ [[CF]]*Compiler*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + *Portland\ Group*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; esac ;; esac @@ -4511,7 +4586,9 @@ ;; cygwin* | mingw* | cegcc*) case $cc_basename in - cl*) ;; + cl*) + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] @@ -4536,7 +4613,6 @@ _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported @@ -4787,8 +4863,7 @@ xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ @@ -5083,6 +5158,7 @@ # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' @@ -5129,10 +5205,6 @@ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; - freebsd1*) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little @@ -5145,7 +5217,7 @@ ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) + freebsd2.*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes @@ -5184,7 +5256,6 @@ fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes @@ -5626,9 +5697,6 @@ _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], - [[If ld is used when linking, flag to hardcode $libdir into a binary - during linking. This must work even if $libdir does not exist]]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], @@ -5782,7 +5850,6 @@ _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported @@ -6152,7 +6219,7 @@ esac ;; - freebsd[[12]]*) + freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no @@ -6913,12 +6980,18 @@ } }; _LT_EOF +], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF +package foo +func foo() { +} +_LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac dnl Parse the compiler output and extract the necessary @@ -7115,7 +7188,6 @@ _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no @@ -7248,7 +7320,6 @@ _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no @@ -7431,6 +7502,73 @@ ])# _LT_LANG_GCJ_CONFIG +# _LT_LANG_GO_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Go compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_GO_CONFIG], +[AC_REQUIRE([LT_PROG_GO])dnl +AC_LANG_SAVE + +# Source file extension for Go test sources. +ac_ext=go + +# Object file extension for compiled Go test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="package main; func main() { }" + +# Code to be used in simple link tests +lt_simple_link_test_code='package main; func main() { }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GOC-"gccgo"} +CFLAGS=$GOFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)="$LD" +_LT_CC_BASENAME([$compiler]) + +# Go did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GO_CONFIG + + # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler @@ -7500,6 +7638,13 @@ dnl AC_DEFUN([LT_AC_PROG_GCJ], []) +# LT_PROG_GO +# ---------- +AC_DEFUN([LT_PROG_GO], +[AC_CHECK_TOOL(GOC, gccgo,) +]) + + # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], @@ -8164,9 +8309,24 @@ # MODE is either `yes' or `no'. If omitted, it defaults to `both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], - [AS_HELP_STRING([--with-pic], + [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], - [pic_mode="$withval"], + [lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for lt_pkg in $withval; do + IFS="$lt_save_ifs" + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], [pic_mode=default]) test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) @@ -8338,15 +8498,15 @@ # @configure_input@ -# serial 3293 ltversion.m4 +# serial 3337 ltversion.m4 # This file is part of GNU Libtool -m4_define([LT_PACKAGE_VERSION], [2.4]) -m4_define([LT_PACKAGE_REVISION], [1.3293]) +m4_define([LT_PACKAGE_VERSION], [2.4.2]) +m4_define([LT_PACKAGE_REVISION], [1.3337]) AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.4' -macro_revision='1.3293' +[macro_version='2.4.2' +macro_revision='1.3337' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) diff -Nru spice-0.10.0/AUTHORS spice-0.10.1/AUTHORS --- spice-0.10.0/AUTHORS 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/AUTHORS 2012-01-18 10:19:15.000000000 +0000 @@ -0,0 +1,33 @@ + Spice Authors + ============= + +The current active Spice maintainers are + + Alon Levy + Christophe Fergeau + Gerd Hoffmann + Marc-André Lureau + Uri Lublin + Yonit Halperin + +Previous Spice maintainers were + + Izik Eidus + Yaniv Kamay (Original project author) + +Patches also contributed by + + Alexander Larsson + Arnon Gilboa + Daniel P. Berrange + Dan Kenigsberg + Gal Hammer + Hans de Goede + Jürg Billeter + Liang Guo + Søren Sandmann Pedersen + Thomas Tyminski + Tiziano Mueller + Zeeshan Ali (Khattak) + + ....send patches to get your name here... diff -Nru spice-0.10.0/client/application.cpp spice-0.10.1/client/application.cpp --- spice-0.10.0/client/application.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/application.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -599,7 +599,7 @@ void Application::on_start_running() { - _foreign_menu.reset(new ForeignMenu(this)); + _foreign_menu.reset(new ForeignMenu(this, _active)); if (_enable_controller) { _controller.reset(new Controller(this)); return; @@ -2645,6 +2645,13 @@ init_globals(); LOG_INFO("starting %s", version_str); + std::string command_line = argv[0]; + for (int i = 1 ; i < argc ; ++i) { + command_line += " "; + command_line += argv[i]; + } + LOG_INFO("command line: %s", command_line.c_str()); + std::auto_ptr app(new Application()); AutoAbort auto_abort(*app.get()); if (app->process_cmd_line(argc, argv, full_screen)) { @@ -2663,4 +2670,3 @@ cleanup_globals(); return ret; } - diff -Nru spice-0.10.0/client/application.h spice-0.10.1/client/application.h --- spice-0.10.0/client/application.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/application.h 2012-01-18 10:19:15.000000000 +0000 @@ -407,4 +407,3 @@ }; #endif - diff -Nru spice-0.10.0/client/audio_channels.h spice-0.10.1/client/audio_channels.h --- spice-0.10.0/client/audio_channels.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/audio_channels.h 2012-01-18 10:19:15.000000000 +0000 @@ -106,4 +106,3 @@ }; #endif - diff -Nru spice-0.10.0/client/audio_devices.h spice-0.10.1/client/audio_devices.h --- spice-0.10.0/client/audio_devices.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/audio_devices.h 2012-01-18 10:19:15.000000000 +0000 @@ -49,4 +49,3 @@ }; #endif - diff -Nru spice-0.10.0/client/cache.hpp spice-0.10.1/client/cache.hpp --- spice-0.10.0/client/cache.hpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/cache.hpp 2012-01-18 10:19:15.000000000 +0000 @@ -118,4 +118,3 @@ }; #endif - diff -Nru spice-0.10.0/client/canvas.h spice-0.10.1/client/canvas.h --- spice-0.10.0/client/canvas.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/canvas.h 2012-01-18 10:19:15.000000000 +0000 @@ -350,4 +350,3 @@ #endif - diff -Nru spice-0.10.0/client/client_net_socket.cpp spice-0.10.1/client/client_net_socket.cpp --- spice-0.10.0/client/client_net_socket.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/client_net_socket.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -386,4 +386,3 @@ _close_pending = false; _fin_pending = false; } - diff -Nru spice-0.10.0/client/cmd_line_parser.cpp spice-0.10.1/client/cmd_line_parser.cpp --- spice-0.10.0/client/cmd_line_parser.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/cmd_line_parser.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -517,4 +517,3 @@ os << "\n"; Platform::term_printf(os.str().c_str()); } - diff -Nru spice-0.10.0/client/cmd_line_parser.h spice-0.10.1/client/cmd_line_parser.h --- spice-0.10.0/client/cmd_line_parser.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/cmd_line_parser.h 2012-01-18 10:19:15.000000000 +0000 @@ -102,4 +102,3 @@ }; #endif - diff -Nru spice-0.10.0/client/common.h spice-0.10.1/client/common.h --- spice-0.10.0/client/common.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/common.h 2012-01-18 10:19:15.000000000 +0000 @@ -58,12 +58,12 @@ #pragma warning(disable:4355) #pragma warning(disable:4996) #pragma warning(disable:4200) + +extern const char* PACKAGE_VERSION; #endif #define strcasecmp stricmp -extern const char* PACKAGE_VERSION; - #else #include #include @@ -88,4 +88,3 @@ #include "red_types.h" #endif - diff -Nru spice-0.10.0/client/controller.cpp spice-0.10.1/client/controller.cpp --- spice-0.10.0/client/controller.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/controller.cpp 2011-12-22 11:14:44.000000000 +0000 @@ -216,7 +216,7 @@ pos += hdr->size; } if (nread > 0 && pos != _read_buf) { - memcpy(_read_buf, pos, nread); + memmove(_read_buf, pos, nread); } _read_pos = _read_buf + nread; return true; diff -Nru spice-0.10.0/client/cursor_channel.cpp spice-0.10.1/client/cursor_channel.cpp --- spice-0.10.0/client/cursor_channel.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/cursor_channel.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -667,4 +667,3 @@ { return factory; } - diff -Nru spice-0.10.0/client/cursor_channel.h spice-0.10.1/client/cursor_channel.h --- spice-0.10.0/client/cursor_channel.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/cursor_channel.h 2012-01-18 10:19:15.000000000 +0000 @@ -91,4 +91,3 @@ }; #endif - diff -Nru spice-0.10.0/client/cursor.cpp spice-0.10.1/client/cursor.cpp --- spice-0.10.0/client/cursor.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/cursor.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -113,4 +113,3 @@ return 0; } } - diff -Nru spice-0.10.0/client/cursor.h spice-0.10.1/client/cursor.h --- spice-0.10.0/client/cursor.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/cursor.h 2012-01-18 10:19:15.000000000 +0000 @@ -70,4 +70,3 @@ }; #endif - diff -Nru spice-0.10.0/client/debug.h spice-0.10.1/client/debug.h --- spice-0.10.0/client/debug.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/debug.h 2012-01-18 10:19:15.000000000 +0000 @@ -90,4 +90,3 @@ } #endif // _H_DEBUG - diff -Nru spice-0.10.0/client/demarshallers.h spice-0.10.1/client/demarshallers.h --- spice-0.10.0/client/demarshallers.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/demarshallers.h 2012-01-18 10:19:15.000000000 +0000 @@ -19,10 +19,9 @@ typedef void (*message_destructor_t)(uint8_t *message); typedef uint8_t * (*spice_parse_channel_func_t)(uint8_t *message_start, uint8_t *message_end, uint16_t message_type, int minor, - size_t *size_out, message_destructor_t *free_message); + size_t *size_out, message_destructor_t *free_message); spice_parse_channel_func_t spice_get_server_channel_parser(uint32_t channel, unsigned int *max_message_type); spice_parse_channel_func_t spice_get_server_channel_parser1(uint32_t channel, unsigned int *max_message_type); #endif - diff -Nru spice-0.10.0/client/display_channel.cpp spice-0.10.1/client/display_channel.cpp --- spice-0.10.0/client/display_channel.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/display_channel.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -1306,7 +1306,7 @@ AutoRef reset_timer(new ResetTimer(screen()->ref(), get_client())); detach_from_screen(get_client().get_application()); - + get_client().activate_interval_timer(*reset_timer, RESET_TIMEOUT); } @@ -1840,4 +1840,3 @@ { return factory; } - diff -Nru spice-0.10.0/client/display_channel.h spice-0.10.1/client/display_channel.h --- spice-0.10.0/client/display_channel.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/display_channel.h 2012-01-18 10:19:15.000000000 +0000 @@ -241,4 +241,3 @@ }; #endif - diff -Nru spice-0.10.0/client/event_sources.h spice-0.10.1/client/event_sources.h --- spice-0.10.0/client/event_sources.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/event_sources.h 2012-01-18 10:19:15.000000000 +0000 @@ -92,4 +92,3 @@ }; #endif - diff -Nru spice-0.10.0/client/foreign_menu.cpp spice-0.10.1/client/foreign_menu.cpp --- spice-0.10.0/client/foreign_menu.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/foreign_menu.cpp 2012-01-23 15:21:14.000000000 +0000 @@ -30,15 +30,15 @@ #ifdef WIN32 #define PIPE_NAME "SpiceForeignMenu-%lu" -#elif defined(__i386__) +#elif defined(__i386__) || __SIZEOF_LONG__ == 4 #define PIPE_NAME "/tmp/SpiceForeignMenu-%llu.uds" #else #define PIPE_NAME "/tmp/SpiceForeignMenu-%lu.uds" #endif -ForeignMenu::ForeignMenu(ForeignMenuInterface *handler) +ForeignMenu::ForeignMenu(ForeignMenuInterface *handler, bool active) : _handler (handler) - , _active (false) + , _active (active) , _refs (1) { char pipe_name[PIPE_NAME_MAX_LEN]; @@ -237,7 +237,7 @@ pos += hdr->size; } if (nread > 0 && pos != _read_buf) { - memcpy(_read_buf, pos, nread); + memmove(_read_buf, pos, nread); } _read_pos = _read_buf + nread; return true; diff -Nru spice-0.10.0/client/foreign_menu.h spice-0.10.1/client/foreign_menu.h --- spice-0.10.0/client/foreign_menu.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/foreign_menu.h 2011-12-22 11:14:44.000000000 +0000 @@ -38,7 +38,7 @@ class ForeignMenu : public NamedPipe::ListenerInterface { public: - ForeignMenu(ForeignMenuInterface *handler); + ForeignMenu(ForeignMenuInterface *handler, bool active = false); virtual ~ForeignMenu(); ForeignMenu* ref() { _refs++; return this;} diff -Nru spice-0.10.0/client/generated_demarshallers1.cpp spice-0.10.1/client/generated_demarshallers1.cpp --- spice-0.10.0/client/generated_demarshallers1.cpp 2011-11-10 15:09:45.000000000 +0000 +++ spice-0.10.1/client/generated_demarshallers1.cpp 2011-02-01 10:29:35.000000000 +0000 @@ -1,7 +1,3 @@ -/* this is a file autogenerated by spice_codegen.py */ -#ifdef HAVE_CONFIG_H -#include -#endif #include "common.h" #include "messages.h" #include diff -Nru spice-0.10.0/client/generated_demarshallers.cpp spice-0.10.1/client/generated_demarshallers.cpp --- spice-0.10.0/client/generated_demarshallers.cpp 2011-11-10 15:09:44.000000000 +0000 +++ spice-0.10.1/client/generated_demarshallers.cpp 2012-01-18 10:26:38.000000000 +0000 @@ -1116,14 +1116,15 @@ static uint8_t * parse_MainChannel_msg(uint8_t *message_start, uint8_t *message_end, uint16_t message_type, int minor, size_t *size_out, message_destructor_t *free_message) { - static parse_msg_func_t funcs1[7] = { + static parse_msg_func_t funcs1[8] = { parse_msg_migrate, parse_SpiceMsgData, parse_msg_set_ack, parse_msg_ping, parse_msg_wait_for_channels, parse_msg_disconnecting, - parse_msg_notify + parse_msg_notify, + parse_SpiceMsgData }; static parse_msg_func_t funcs2[12] = { parse_msg_main_migrate_begin, @@ -1139,7 +1140,7 @@ parse_msg_main_migrate_switch_host, parse_SpiceMsgEmpty }; - if (message_type >= 1 && message_type < 8) { + if (message_type >= 1 && message_type < 9) { return funcs1[message_type-1](message_start, message_end, minor, size_out, free_message); } else if (message_type >= 101 && message_type < 113) { return funcs2[message_type-101](message_start, message_end, minor, size_out, free_message); @@ -5515,14 +5516,15 @@ static uint8_t * parse_DisplayChannel_msg(uint8_t *message_start, uint8_t *message_end, uint16_t message_type, int minor, size_t *size_out, message_destructor_t *free_message) { - static parse_msg_func_t funcs1[7] = { + static parse_msg_func_t funcs1[8] = { parse_msg_migrate, parse_SpiceMsgData, parse_msg_set_ack, parse_msg_ping, parse_msg_wait_for_channels, parse_msg_disconnecting, - parse_msg_notify + parse_msg_notify, + parse_SpiceMsgData }; static parse_msg_func_t funcs2[8] = { parse_msg_display_mode, @@ -5557,7 +5559,7 @@ parse_msg_display_surface_create, parse_msg_display_surface_destroy }; - if (message_type >= 1 && message_type < 8) { + if (message_type >= 1 && message_type < 9) { return funcs1[message_type-1](message_start, message_end, minor, size_out, free_message); } else if (message_type >= 101 && message_type < 109) { return funcs2[message_type-101](message_start, message_end, minor, size_out, free_message); @@ -5661,14 +5663,15 @@ static uint8_t * parse_InputsChannel_msg(uint8_t *message_start, uint8_t *message_end, uint16_t message_type, int minor, size_t *size_out, message_destructor_t *free_message) { - static parse_msg_func_t funcs1[7] = { + static parse_msg_func_t funcs1[8] = { parse_msg_migrate, parse_SpiceMsgData, parse_msg_set_ack, parse_msg_ping, parse_msg_wait_for_channels, parse_msg_disconnecting, - parse_msg_notify + parse_msg_notify, + parse_SpiceMsgData }; static parse_msg_func_t funcs2[2] = { parse_msg_inputs_init, @@ -5677,7 +5680,7 @@ static parse_msg_func_t funcs3[1] = { parse_SpiceMsgEmpty }; - if (message_type >= 1 && message_type < 8) { + if (message_type >= 1 && message_type < 9) { return funcs1[message_type-1](message_start, message_end, minor, size_out, free_message); } else if (message_type >= 101 && message_type < 103) { return funcs2[message_type-101](message_start, message_end, minor, size_out, free_message); @@ -6021,14 +6024,15 @@ static uint8_t * parse_CursorChannel_msg(uint8_t *message_start, uint8_t *message_end, uint16_t message_type, int minor, size_t *size_out, message_destructor_t *free_message) { - static parse_msg_func_t funcs1[7] = { + static parse_msg_func_t funcs1[8] = { parse_msg_migrate, parse_SpiceMsgData, parse_msg_set_ack, parse_msg_ping, parse_msg_wait_for_channels, parse_msg_disconnecting, - parse_msg_notify + parse_msg_notify, + parse_SpiceMsgData }; static parse_msg_func_t funcs2[8] = { parse_msg_cursor_init, @@ -6040,7 +6044,7 @@ parse_msg_cursor_inval_one, parse_SpiceMsgEmpty }; - if (message_type >= 1 && message_type < 8) { + if (message_type >= 1 && message_type < 9) { return funcs1[message_type-1](message_start, message_end, minor, size_out, free_message); } else if (message_type >= 101 && message_type < 109) { return funcs2[message_type-101](message_start, message_end, minor, size_out, free_message); @@ -6320,14 +6324,15 @@ static uint8_t * parse_PlaybackChannel_msg(uint8_t *message_start, uint8_t *message_end, uint16_t message_type, int minor, size_t *size_out, message_destructor_t *free_message) { - static parse_msg_func_t funcs1[7] = { + static parse_msg_func_t funcs1[8] = { parse_msg_migrate, parse_SpiceMsgData, parse_msg_set_ack, parse_msg_ping, parse_msg_wait_for_channels, parse_msg_disconnecting, - parse_msg_notify + parse_msg_notify, + parse_SpiceMsgData }; static parse_msg_func_t funcs2[6] = { parse_msg_playback_data, @@ -6337,7 +6342,7 @@ parse_SpiceMsgAudioVolume, parse_SpiceMsgAudioMute }; - if (message_type >= 1 && message_type < 8) { + if (message_type >= 1 && message_type < 9) { return funcs1[message_type-1](message_start, message_end, minor, size_out, free_message); } else if (message_type >= 101 && message_type < 107) { return funcs2[message_type-101](message_start, message_end, minor, size_out, free_message); @@ -6395,14 +6400,15 @@ static uint8_t * parse_RecordChannel_msg(uint8_t *message_start, uint8_t *message_end, uint16_t message_type, int minor, size_t *size_out, message_destructor_t *free_message) { - static parse_msg_func_t funcs1[7] = { + static parse_msg_func_t funcs1[8] = { parse_msg_migrate, parse_SpiceMsgData, parse_msg_set_ack, parse_msg_ping, parse_msg_wait_for_channels, parse_msg_disconnecting, - parse_msg_notify + parse_msg_notify, + parse_SpiceMsgData }; static parse_msg_func_t funcs2[4] = { parse_msg_record_start, @@ -6410,7 +6416,7 @@ parse_SpiceMsgAudioVolume, parse_SpiceMsgAudioMute }; - if (message_type >= 1 && message_type < 8) { + if (message_type >= 1 && message_type < 9) { return funcs1[message_type-1](message_start, message_end, minor, size_out, free_message); } else if (message_type >= 101 && message_type < 105) { return funcs2[message_type-101](message_start, message_end, minor, size_out, free_message); @@ -6824,14 +6830,15 @@ static uint8_t * parse_TunnelChannel_msg(uint8_t *message_start, uint8_t *message_end, uint16_t message_type, int minor, size_t *size_out, message_destructor_t *free_message) { - static parse_msg_func_t funcs1[7] = { + static parse_msg_func_t funcs1[8] = { parse_msg_migrate, parse_SpiceMsgData, parse_msg_set_ack, parse_msg_ping, parse_msg_wait_for_channels, parse_msg_disconnecting, - parse_msg_notify + parse_msg_notify, + parse_SpiceMsgData }; static parse_msg_func_t funcs2[8] = { parse_msg_tunnel_init, @@ -6843,7 +6850,7 @@ parse_msg_tunnel_socket_closed_ack, parse_msg_tunnel_socket_token }; - if (message_type >= 1 && message_type < 8) { + if (message_type >= 1 && message_type < 9) { return funcs1[message_type-1](message_start, message_end, minor, size_out, free_message); } else if (message_type >= 101 && message_type < 109) { return funcs2[message_type-101](message_start, message_end, minor, size_out, free_message); @@ -6855,19 +6862,20 @@ static uint8_t * parse_SmartcardChannel_msg(uint8_t *message_start, uint8_t *message_end, uint16_t message_type, int minor, size_t *size_out, message_destructor_t *free_message) { - static parse_msg_func_t funcs1[7] = { + static parse_msg_func_t funcs1[8] = { parse_msg_migrate, parse_SpiceMsgData, parse_msg_set_ack, parse_msg_ping, parse_msg_wait_for_channels, parse_msg_disconnecting, - parse_msg_notify + parse_msg_notify, + parse_SpiceMsgData }; static parse_msg_func_t funcs2[1] = { parse_SpiceMsgData }; - if (message_type >= 1 && message_type < 8) { + if (message_type >= 1 && message_type < 9) { return funcs1[message_type-1](message_start, message_end, minor, size_out, free_message); } else if (message_type >= 101 && message_type < 102) { return funcs2[message_type-101](message_start, message_end, minor, size_out, free_message); @@ -6879,19 +6887,20 @@ static uint8_t * parse_UsbredirChannel_msg(uint8_t *message_start, uint8_t *message_end, uint16_t message_type, int minor, size_t *size_out, message_destructor_t *free_message) { - static parse_msg_func_t funcs1[7] = { + static parse_msg_func_t funcs1[8] = { parse_msg_migrate, parse_SpiceMsgData, parse_msg_set_ack, parse_msg_ping, parse_msg_wait_for_channels, parse_msg_disconnecting, - parse_msg_notify + parse_msg_notify, + parse_SpiceMsgData }; static parse_msg_func_t funcs2[1] = { parse_SpiceMsgData }; - if (message_type >= 1 && message_type < 8) { + if (message_type >= 1 && message_type < 9) { return funcs1[message_type-1](message_start, message_end, minor, size_out, free_message); } else if (message_type >= 101 && message_type < 102) { return funcs2[message_type-101](message_start, message_end, minor, size_out, free_message); diff -Nru spice-0.10.0/client/generated_marshallers1.cpp spice-0.10.1/client/generated_marshallers1.cpp --- spice-0.10.0/client/generated_marshallers1.cpp 2011-11-10 15:09:46.000000000 +0000 +++ spice-0.10.1/client/generated_marshallers1.cpp 2011-02-01 10:29:35.000000000 +0000 @@ -1,7 +1,3 @@ -/* this is a file autogenerated by spice_codegen.py */ -#ifdef HAVE_CONFIG_H -#include -#endif #include "common.h" #include "messages.h" #include "marshallers.h" diff -Nru spice-0.10.0/client/glz_decoded_image.h spice-0.10.1/client/glz_decoded_image.h --- spice-0.10.0/client/glz_decoded_image.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/glz_decoded_image.h 2012-01-18 10:19:15.000000000 +0000 @@ -62,4 +62,3 @@ } #endif - diff -Nru spice-0.10.0/client/glz_decoder_config.h spice-0.10.1/client/glz_decoder_config.h --- spice-0.10.0/client/glz_decoder_config.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/glz_decoder_config.h 2012-01-18 10:19:15.000000000 +0000 @@ -48,12 +48,12 @@ #ifdef RED_DEBUG -#define GLZ_ASSERT(debug, x) { \ - if (!(x)) { \ - std::ostringstream os; \ - os << __FUNCTION__ << ": ASSERT " << #x << " failed\n"; \ - (debug).error(os.str()); \ - } \ +#define GLZ_ASSERT(debug, x) { \ + if (!(x)) { \ + std::ostringstream os; \ + os << __FUNCTION__ << ": ASSERT " << #x << " failed\n"; \ + (debug).error(os.str()); \ + } \ } #else @@ -64,4 +64,3 @@ #define GLZ_DECODE_TO_RGB32 #endif //_H_GLZ_DECODER_CONFIG - diff -Nru spice-0.10.0/client/glz_decoder.cpp spice-0.10.1/client/glz_decoder.cpp --- spice-0.10.0/client/glz_decoder.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/glz_decoder.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -299,4 +299,3 @@ _images_window.post_decode(decoded_image); } - diff -Nru spice-0.10.0/client/glz_decoder.h spice-0.10.1/client/glz_decoder.h --- spice-0.10.0/client/glz_decoder.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/glz_decoder.h 2012-01-18 10:19:15.000000000 +0000 @@ -82,4 +82,3 @@ }; #endif // _H_GLZ_DECODER - diff -Nru spice-0.10.0/client/glz_decoder_window.cpp spice-0.10.1/client/glz_decoder_window.cpp --- spice-0.10.0/client/glz_decoder_window.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/glz_decoder_window.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -327,4 +327,3 @@ { return (int)((_head_idx + _n_images - 1 - (_tail_image_id - image_id)) % _images_capacity); } - diff -Nru spice-0.10.0/client/glz_decoder_window.h spice-0.10.1/client/glz_decoder_window.h --- spice-0.10.0/client/glz_decoder_window.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/glz_decoder_window.h 2012-01-18 10:19:15.000000000 +0000 @@ -120,4 +120,3 @@ } #endif // _H_GLZ_DECODER_WINDOW - diff -Nru spice-0.10.0/client/glz_decode_tmpl.c spice-0.10.1/client/glz_decode_tmpl.c --- spice-0.10.0/client/glz_decode_tmpl.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/glz_decode_tmpl.c 2012-01-18 10:19:15.000000000 +0000 @@ -136,7 +136,7 @@ out->b = (out->b << 3) | ((out->b >> 2) & 0x07); \ out->pad = 0; \ out++; \ -} +} #endif #endif @@ -335,4 +335,3 @@ #undef COPY_COMP_PIXEL #undef COPY_PLT_ENTRY #undef CAST_PLT_DISTANCE - diff -Nru spice-0.10.0/client/gui/gui.cpp spice-0.10.1/client/gui/gui.cpp --- spice-0.10.0/client/gui/gui.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/gui/gui.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -1412,4 +1412,3 @@ } return _dialog->message_box(type, text, buttons, _response_handler); } - diff -Nru spice-0.10.0/client/gui/gui.h spice-0.10.1/client/gui/gui.h --- spice-0.10.0/client/gui/gui.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/gui/gui.h 2012-01-18 10:19:15.000000000 +0000 @@ -141,4 +141,3 @@ }; #endif - diff -Nru spice-0.10.0/client/gui/resource_provider.cpp spice-0.10.1/client/gui/resource_provider.cpp --- spice-0.10.0/client/gui/resource_provider.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/gui/resource_provider.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -146,4 +146,3 @@ return NULL; } - diff -Nru spice-0.10.0/client/gui/resource_provider.h spice-0.10.1/client/gui/resource_provider.h --- spice-0.10.0/client/gui/resource_provider.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/gui/resource_provider.h 2012-01-18 10:19:15.000000000 +0000 @@ -57,4 +57,3 @@ const char* res_get_string(int id); #endif - diff -Nru spice-0.10.0/client/gui/softrenderer.cpp spice-0.10.1/client/gui/softrenderer.cpp --- spice-0.10.0/client/gui/softrenderer.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/gui/softrenderer.cpp 2012-01-23 15:21:14.000000000 +0000 @@ -45,7 +45,7 @@ , _image_codec_module (NULL) , _queueing(true) { - assert(stride == _width * 4); //for now + assert(stride == width * 4); //for now if (!_image_codec) { setupImageCodec(); } @@ -388,4 +388,3 @@ } } - diff -Nru spice-0.10.0/client/gui/softrenderer.h spice-0.10.1/client/gui/softrenderer.h --- spice-0.10.0/client/gui/softrenderer.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/gui/softrenderer.h 2012-01-18 10:19:15.000000000 +0000 @@ -146,4 +146,3 @@ } #endif - diff -Nru spice-0.10.0/client/gui/softtexture.cpp spice-0.10.1/client/gui/softtexture.cpp --- spice-0.10.0/client/gui/softtexture.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/gui/softtexture.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -137,4 +137,3 @@ } - diff -Nru spice-0.10.0/client/gui/softtexture.h spice-0.10.1/client/gui/softtexture.h --- spice-0.10.0/client/gui/softtexture.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/gui/softtexture.h 2012-01-18 10:19:15.000000000 +0000 @@ -56,4 +56,3 @@ } #endif - diff -Nru spice-0.10.0/client/hot_keys.cpp spice-0.10.1/client/hot_keys.cpp --- spice-0.10.0/client/hot_keys.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/hot_keys.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -147,4 +147,3 @@ std::string keys = hotkey.substr(key_start + 1); parse_keys(command_id, keys); } - diff -Nru spice-0.10.0/client/hot_keys.h spice-0.10.1/client/hot_keys.h --- spice-0.10.0/client/hot_keys.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/hot_keys.h 2012-01-18 10:19:15.000000000 +0000 @@ -46,4 +46,3 @@ }; #endif - diff -Nru spice-0.10.0/client/icon.h spice-0.10.1/client/icon.h --- spice-0.10.0/client/icon.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/icon.h 2012-01-18 10:19:15.000000000 +0000 @@ -33,4 +33,3 @@ }; #endif - diff -Nru spice-0.10.0/client/inputs_channel.cpp spice-0.10.1/client/inputs_channel.cpp --- spice-0.10.0/client/inputs_channel.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/inputs_channel.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -609,4 +609,3 @@ { return factory; } - diff -Nru spice-0.10.0/client/inputs_channel.h spice-0.10.1/client/inputs_channel.h --- spice-0.10.0/client/inputs_channel.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/inputs_channel.h 2012-01-18 10:19:15.000000000 +0000 @@ -94,4 +94,3 @@ #endif - diff -Nru spice-0.10.0/client/inputs_handler.h spice-0.10.1/client/inputs_handler.h --- spice-0.10.0/client/inputs_handler.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/inputs_handler.h 2012-01-18 10:19:15.000000000 +0000 @@ -40,4 +40,3 @@ }; #endif - diff -Nru spice-0.10.0/client/jpeg_decoder.cpp spice-0.10.1/client/jpeg_decoder.cpp --- spice-0.10.0/client/jpeg_decoder.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/jpeg_decoder.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -23,7 +23,7 @@ #include "debug.h" #include "utils.h" -#if !defined(jpeg_boolean) && !defined(__MINGW32__) +#if !defined(jpeg_boolean) #define jpeg_boolean boolean #endif @@ -85,7 +85,7 @@ _cinfo.src->skip_input_data = jpeg_decoder_skip_input_data; _cinfo.src->resync_to_restart = jpeg_resync_to_restart; _cinfo.src->term_source = jpeg_decoder_term_source; - + static SpiceJpegDecoderOps decoder_ops = { op_begin_decode, op_decode, diff -Nru spice-0.10.0/client/jpeg_decoder.h spice-0.10.1/client/jpeg_decoder.h --- spice-0.10.0/client/jpeg_decoder.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/jpeg_decoder.h 2012-01-18 10:19:15.000000000 +0000 @@ -22,7 +22,7 @@ #include "common.h" #include "red_canvas_base.h" -#ifdef WIN32 +#if defined(WIN32) && !defined(__MINGW32__) /* We need some hacks to avoid warnings from the jpeg headers */ #define XMD_H #undef FAR @@ -89,4 +89,3 @@ RGBToBGRXConverter _rgb2bgrx; }; #endif - diff -Nru spice-0.10.0/client/Makefile.am spice-0.10.1/client/Makefile.am --- spice-0.10.0/client/Makefile.am 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/Makefile.am 2012-01-18 10:19:15.000000000 +0000 @@ -136,6 +136,11 @@ windows/stdint.h \ windows/win_platform.h \ $(NULL) + +spicec_resource_LDADD = windows/redc.o + +windows/redc.o: windows/redc.rc + $(WINDRES) $< -o $@ else spicec_SOURCES += \ x11/atomic_count.h \ @@ -167,6 +172,12 @@ $(NULL) endif +if OS_WIN32 +PLATFORM_INCLUDES=-I$(top_srcdir)/client/windows +else +PLATFORM_INCLUDES=-I$(top_srcdir)/client/x11 +endif + if SUPPORT_TUNNEL spicec_SOURCES += \ tunnel_channel.cpp \ @@ -210,7 +221,7 @@ INCLUDES = \ -D__STDC_LIMIT_MACROS \ - -I$(top_srcdir)/client/x11 \ + $(PLATFORM_INCLUDES) \ -I$(top_srcdir)/common \ $(ALSA_CFLAGS) \ $(CEGUI_CFLAGS) \ @@ -226,6 +237,8 @@ $(XRANDR_CFLAGS) \ $(XFIXES_CFLAGS) \ $(WARN_CFLAGS) \ + $(XINERAMA_CFLAGS) \ + $(CXIMAGE_CFLAGS) \ $(NULL) spicec_LDFLAGS = $(SPICEC_STATIC_LINKAGE_BSTATIC) @@ -246,6 +259,8 @@ $(XFIXES_LIBS) \ $(XRANDR_LIBS) \ $(Z_LIBS) \ + $(XINERAMA_LIBS) \ + $(spicec_resource_LDADD) \ $(NULL) EXTRA_DIST = \ diff -Nru spice-0.10.0/client/Makefile.in spice-0.10.1/client/Makefile.in --- spice-0.10.0/client/Makefile.in 2011-11-10 15:02:16.000000000 +0000 +++ spice-0.10.1/client/Makefile.in 2012-01-23 15:23:22.000000000 +0000 @@ -254,6 +254,7 @@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(spicec_resource_LDADD) \ $(am__DEPENDENCIES_1) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) @@ -422,6 +423,8 @@ WINDRES = @WINDRES@ XFIXES_CFLAGS = @XFIXES_CFLAGS@ XFIXES_LIBS = @XFIXES_LIBS@ +XINERAMA_CFLAGS = @XINERAMA_CFLAGS@ +XINERAMA_LIBS = @XINERAMA_LIBS@ XRANDR12_CFLAGS = @XRANDR12_CFLAGS@ XRANDR12_LIBS = @XRANDR12_LIBS@ XRANDR_CFLAGS = @XRANDR_CFLAGS@ @@ -514,9 +517,12 @@ $(am__append_1) $(am__append_2) $(am__append_3) \ $(am__append_4) $(am__append_5) $(am__append_6) \ $(am__append_7) +@OS_WIN32_TRUE@spicec_resource_LDADD = windows/redc.o +@OS_WIN32_FALSE@PLATFORM_INCLUDES = -I$(top_srcdir)/client/x11 +@OS_WIN32_TRUE@PLATFORM_INCLUDES = -I$(top_srcdir)/client/windows INCLUDES = \ -D__STDC_LIMIT_MACROS \ - -I$(top_srcdir)/client/x11 \ + $(PLATFORM_INCLUDES) \ -I$(top_srcdir)/common \ $(ALSA_CFLAGS) \ $(CEGUI_CFLAGS) \ @@ -532,6 +538,8 @@ $(XRANDR_CFLAGS) \ $(XFIXES_CFLAGS) \ $(WARN_CFLAGS) \ + $(XINERAMA_CFLAGS) \ + $(CXIMAGE_CFLAGS) \ $(NULL) spicec_LDFLAGS = $(SPICEC_STATIC_LINKAGE_BSTATIC) @@ -551,6 +559,8 @@ $(XFIXES_LIBS) \ $(XRANDR_LIBS) \ $(Z_LIBS) \ + $(XINERAMA_LIBS) \ + $(spicec_resource_LDADD) \ $(NULL) EXTRA_DIST = \ @@ -1096,6 +1106,9 @@ generated_marshallers1.cpp: $(top_srcdir)/spice1.proto $(AM_V_GEN)$(PYTHON) $(top_srcdir)/spice_codegen.py --generate-marshallers -P --include "common.h" --include messages.h --include marshallers.h --client --prefix 1 --ptrsize 8 $(top_srcdir)/spice1.proto generated_marshallers1.cpp +@OS_WIN32_TRUE@windows/redc.o: windows/redc.rc +@OS_WIN32_TRUE@ $(WINDRES) $< -o $@ + # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff -Nru spice-0.10.0/client/menu.h spice-0.10.1/client/menu.h --- spice-0.10.0/client/menu.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/menu.h 2012-01-18 10:19:15.000000000 +0000 @@ -100,4 +100,3 @@ }; #endif - diff -Nru spice-0.10.0/client/mjpeg_decoder.cpp spice-0.10.1/client/mjpeg_decoder.cpp --- spice-0.10.0/client/mjpeg_decoder.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/mjpeg_decoder.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -24,7 +24,7 @@ #include "utils.h" #include "mjpeg_decoder.h" -#if !defined(jpeg_boolean) && !defined(__MINGW32__) +#if !defined(jpeg_boolean) #define jpeg_boolean boolean #endif diff -Nru spice-0.10.0/client/monitor.h spice-0.10.1/client/monitor.h --- spice-0.10.0/client/monitor.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/monitor.h 2012-01-18 10:19:15.000000000 +0000 @@ -55,4 +55,3 @@ }; #endif - diff -Nru spice-0.10.0/client/pixels_source.h spice-0.10.1/client/pixels_source.h --- spice-0.10.0/client/pixels_source.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/pixels_source.h 2012-01-18 10:19:15.000000000 +0000 @@ -56,4 +56,3 @@ }; #endif - diff -Nru spice-0.10.0/client/platform.h spice-0.10.1/client/platform.h --- spice-0.10.0/client/platform.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/platform.h 2012-01-18 10:19:15.000000000 +0000 @@ -201,4 +201,3 @@ }; #endif - diff -Nru spice-0.10.0/client/playback_channel.cpp spice-0.10.1/client/playback_channel.cpp --- spice-0.10.0/client/playback_channel.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/playback_channel.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -368,4 +368,3 @@ { return factory; } - diff -Nru spice-0.10.0/client/read_write_mutex.h spice-0.10.1/client/read_write_mutex.h --- spice-0.10.0/client/read_write_mutex.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/read_write_mutex.h 2012-01-18 10:19:15.000000000 +0000 @@ -117,4 +117,3 @@ }; #endif - diff -Nru spice-0.10.0/client/record_channel.cpp spice-0.10.1/client/record_channel.cpp --- spice-0.10.0/client/record_channel.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/record_channel.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -291,4 +291,3 @@ { return factory; } - diff -Nru spice-0.10.0/client/red_channel.cpp spice-0.10.1/client/red_channel.cpp --- spice-0.10.0/client/red_channel.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/red_channel.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -885,4 +885,3 @@ } _client.wait_for_channels(wait->wait_count, wait->wait_list); } - diff -Nru spice-0.10.0/client/red_channel.h spice-0.10.1/client/red_channel.h --- spice-0.10.0/client/red_channel.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/red_channel.h 2012-01-18 10:19:15.000000000 +0000 @@ -296,13 +296,13 @@ message_destructor_t parsed_free; if (_parser == NULL) { - /* We need to do this lazily rather than at constuction because we - don't know the major until we've connected */ - if (_obj.get_peer_major() == 1) { - _parser = spice_get_server_channel_parser1(channel_id, NULL); - } else { - _parser = spice_get_server_channel_parser(channel_id, NULL); - } + /* We need to do this lazily rather than at constuction because we + don't know the major until we've connected */ + if (_obj.get_peer_major() == 1) { + _parser = spice_get_server_channel_parser1(channel_id, NULL); + } else { + _parser = spice_get_server_channel_parser(channel_id, NULL); + } } if (message.sub_list()) { @@ -350,4 +350,3 @@ } #endif - diff -Nru spice-0.10.0/client/red_client.cpp spice-0.10.1/client/red_client.cpp --- spice-0.10.0/client/red_client.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/red_client.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -274,7 +274,6 @@ void Migrate::start(const SpiceMsgMainMigrationBegin* migrate) { - std::string cert_subject; uint32_t peer_major; uint32_t peer_minor; @@ -1312,7 +1311,7 @@ default: DBG(0, "Unsupported message type %u size %u", msg->type, msg->size); } -} +} void RedClient::handle_agent_tokens(RedPeer::InMessage* message) { @@ -1408,4 +1407,3 @@ { _factorys.push_back(&factory); } - diff -Nru spice-0.10.0/client/red_client.h spice-0.10.1/client/red_client.h --- spice-0.10.0/client/red_client.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/red_client.h 2012-01-18 10:19:15.000000000 +0000 @@ -385,4 +385,3 @@ }; #endif - diff -Nru spice-0.10.0/client/red_drawable.h spice-0.10.1/client/red_drawable.h --- spice-0.10.0/client/red_drawable.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/red_drawable.h 2012-01-18 10:19:15.000000000 +0000 @@ -120,4 +120,3 @@ }; #endif - diff -Nru spice-0.10.0/client/red_gdi_canvas.cpp spice-0.10.1/client/red_gdi_canvas.cpp --- spice-0.10.0/client/red_gdi_canvas.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/red_gdi_canvas.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -15,6 +15,9 @@ License along with this library; if not, see . */ #ifdef HAVE_CONFIG_H +#ifdef __MINGW32__ +#undef HAVE_STDLIB_H +#endif #include #endif @@ -88,4 +91,3 @@ { return CANVAS_TYPE_GDI; } - diff -Nru spice-0.10.0/client/red_gdi_canvas.h spice-0.10.1/client/red_gdi_canvas.h --- spice-0.10.0/client/red_gdi_canvas.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/red_gdi_canvas.h 2012-01-18 10:19:15.000000000 +0000 @@ -32,7 +32,7 @@ class GDICanvas: public Canvas { public: GDICanvas(int width, int height, uint32_t format, - PixmapCache& pixmap_cache, PaletteCache& palette_cache, + PixmapCache& pixmap_cache, PaletteCache& palette_cache, GlzDecoderWindow &glz_decoder_window, SurfacesCache &csurfaces); virtual ~GDICanvas(); @@ -53,4 +53,3 @@ }; #endif - diff -Nru spice-0.10.0/client/red_gl_canvas.cpp spice-0.10.1/client/red_gl_canvas.cpp --- spice-0.10.0/client/red_gl_canvas.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/red_gl_canvas.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -118,4 +118,3 @@ { _pixmap->past_copy(); } - diff -Nru spice-0.10.0/client/red_gl_canvas.h spice-0.10.1/client/red_gl_canvas.h --- spice-0.10.0/client/red_gl_canvas.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/red_gl_canvas.h 2012-01-18 10:19:15.000000000 +0000 @@ -64,4 +64,3 @@ }; #endif - diff -Nru spice-0.10.0/client/red_key.h spice-0.10.1/client/red_key.h --- spice-0.10.0/client/red_key.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/red_key.h 2012-01-18 10:19:15.000000000 +0000 @@ -147,4 +147,3 @@ }; #endif - diff -Nru spice-0.10.0/client/red_peer.h spice-0.10.1/client/red_peer.h --- spice-0.10.0/client/red_peer.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/red_peer.h 2012-01-18 10:19:15.000000000 +0000 @@ -69,7 +69,7 @@ }; ConnectionOptions(Type in_type, int in_port, int in_sport, - int in_protocol, + int in_protocol, const HostAuthOptions& in_host_auth, const std::string& in_ciphers) : type (in_type) @@ -206,4 +206,3 @@ }; #endif - diff -Nru spice-0.10.0/client/red_pixmap_gdi.h spice-0.10.1/client/red_pixmap_gdi.h --- spice-0.10.0/client/red_pixmap_gdi.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/red_pixmap_gdi.h 2012-01-18 10:19:15.000000000 +0000 @@ -33,4 +33,3 @@ }; #endif - diff -Nru spice-0.10.0/client/red_pixmap_gl.h spice-0.10.1/client/red_pixmap_gl.h --- spice-0.10.0/client/red_pixmap_gl.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/red_pixmap_gl.h 2012-01-18 10:19:15.000000000 +0000 @@ -47,4 +47,3 @@ }; #endif - diff -Nru spice-0.10.0/client/red_pixmap.h spice-0.10.1/client/red_pixmap.h --- spice-0.10.0/client/red_pixmap.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/red_pixmap.h 2012-01-18 10:19:15.000000000 +0000 @@ -46,4 +46,3 @@ }; #endif - diff -Nru spice-0.10.0/client/red_pixmap_sw.h spice-0.10.1/client/red_pixmap_sw.h --- spice-0.10.0/client/red_pixmap_sw.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/red_pixmap_sw.h 2012-01-18 10:19:15.000000000 +0000 @@ -28,4 +28,3 @@ }; #endif - diff -Nru spice-0.10.0/client/red_sw_canvas.cpp spice-0.10.1/client/red_sw_canvas.cpp --- spice-0.10.0/client/red_sw_canvas.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/red_sw_canvas.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -106,4 +106,3 @@ { return CANVAS_TYPE_SW; } - diff -Nru spice-0.10.0/client/red_sw_canvas.h spice-0.10.1/client/red_sw_canvas.h --- spice-0.10.0/client/red_sw_canvas.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/red_sw_canvas.h 2012-01-18 10:19:15.000000000 +0000 @@ -50,4 +50,3 @@ }; #endif - diff -Nru spice-0.10.0/client/red_types.h spice-0.10.1/client/red_types.h --- spice-0.10.0/client/red_types.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/red_types.h 2012-01-18 10:19:15.000000000 +0000 @@ -35,4 +35,3 @@ class RedDrawable; #endif - diff -Nru spice-0.10.0/client/red_window.h spice-0.10.1/client/red_window.h --- spice-0.10.0/client/red_window.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/red_window.h 2012-01-18 10:19:15.000000000 +0000 @@ -66,11 +66,11 @@ void set_cursor(LocalCursor* local_cursor); void hide_cursor(); void show_cursor(); - void cupture_mouse(); + void capture_mouse(); void release_mouse(); void start_key_interception(); void stop_key_interception(); - void set_menu(Menu* menu); + int set_menu(Menu* menu); #ifdef USE_OPENGL void untouch_context(); @@ -196,4 +196,3 @@ } #endif - diff -Nru spice-0.10.0/client/screen.cpp spice-0.10.1/client/screen.cpp --- spice-0.10.0/client/screen.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/screen.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -87,7 +87,8 @@ , _key_interception (false) , _update_by_timer (true) , _size_locked (false) - , _forec_update_timer (0) + , _menu_needs_update (false) + , _force_update_timer (0) , _update_timer (new UpdateTimer(this)) , _composit_area (NULL) , _update_mark (1) @@ -401,7 +402,7 @@ if (is_dirty()) { need_update = true; } else { - if (!_forec_update_timer) { + if (!_force_update_timer) { _owner.deactivate_interval_timer(*_update_timer); _periodic_update = false; } @@ -537,7 +538,7 @@ _mouse_captured = true; _window.hide_cursor(); reset_mouse_pos(); - _window.cupture_mouse(); + _window.capture_mouse(); } void RedScreen::relase_mouse() @@ -741,14 +742,14 @@ void RedScreen::enter_modal_loop() { - _forec_update_timer++; + _force_update_timer++; activate_timer(); } void RedScreen::exit_modal_loop() { - ASSERT(_forec_update_timer > 0) - _forec_update_timer--; + ASSERT(_force_update_timer > 0) + _force_update_timer--; } void RedScreen::pre_migrate() @@ -784,6 +785,9 @@ _origin.x = _origin.y = 0; _window.set_origin(0, 0); show(); + if (_menu_needs_update) { + update_menu(); + } _full_screen = false; _out_of_sync = false; _frame_area = false; @@ -875,7 +879,8 @@ void RedScreen::update_menu() { AutoRef menu(_owner.get_app_menu()); - _window.set_menu(*menu); + int ret = _window.set_menu(*menu); + _menu_needs_update = (ret != 0); /* try again if menu update failed */ } void RedScreen::on_exposed_rect(const SpiceRect& area) @@ -934,4 +939,3 @@ _window.unset_type_gl(); } #endif // USE_OPENGL - diff -Nru spice-0.10.0/client/screen.h spice-0.10.1/client/screen.h --- spice-0.10.0/client/screen.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/screen.h 2012-01-18 10:19:15.000000000 +0000 @@ -178,7 +178,8 @@ bool _key_interception; bool _update_by_timer; bool _size_locked; - int _forec_update_timer; + bool _menu_needs_update; + int _force_update_timer; AutoRef _update_timer; RedDrawable* _composit_area; uint64_t _update_mark; @@ -207,4 +208,3 @@ }; #endif - diff -Nru spice-0.10.0/client/screen_layer.cpp spice-0.10.1/client/screen_layer.cpp --- spice-0.10.0/client/screen_layer.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/screen_layer.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -237,4 +237,3 @@ } ASSERT(!_screen); } - diff -Nru spice-0.10.0/client/screen_layer.h spice-0.10.1/client/screen_layer.h --- spice-0.10.0/client/screen_layer.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/screen_layer.h 2012-01-18 10:19:15.000000000 +0000 @@ -85,4 +85,3 @@ }; #endif - diff -Nru spice-0.10.0/client/shared_cache.hpp spice-0.10.1/client/shared_cache.hpp --- spice-0.10.0/client/shared_cache.hpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/shared_cache.hpp 2012-01-18 10:19:15.000000000 +0000 @@ -221,4 +221,3 @@ }; #endif - diff -Nru spice-0.10.0/client/smartcard_channel.cpp spice-0.10.1/client/smartcard_channel.cpp --- spice-0.10.0/client/smartcard_channel.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/smartcard_channel.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -551,4 +551,3 @@ { return factory; } - diff -Nru spice-0.10.0/client/smartcard_channel.h spice-0.10.1/client/smartcard_channel.h --- spice-0.10.0/client/smartcard_channel.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/smartcard_channel.h 2012-01-18 10:19:15.000000000 +0000 @@ -157,4 +157,3 @@ }; #endif // __SMART_CARD_H__ - diff -Nru spice-0.10.0/client/threads.cpp spice-0.10.1/client/threads.cpp --- spice-0.10.0/client/threads.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/threads.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -133,4 +133,3 @@ { pthread_mutex_destroy(&_mutex); } - diff -Nru spice-0.10.0/client/threads.h spice-0.10.1/client/threads.h --- spice-0.10.0/client/threads.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/threads.h 2012-01-18 10:19:15.000000000 +0000 @@ -132,4 +132,3 @@ #endif - diff -Nru spice-0.10.0/client/utils.cpp spice-0.10.1/client/utils.cpp --- spice-0.10.0/client/utils.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/utils.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -42,4 +42,3 @@ } return port; } - diff -Nru spice-0.10.0/client/utils.h spice-0.10.1/client/utils.h --- spice-0.10.0/client/utils.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/utils.h 2012-01-18 10:19:15.000000000 +0000 @@ -148,4 +148,3 @@ }; #endif - diff -Nru spice-0.10.0/client/windows/atomic_count.h spice-0.10.1/client/windows/atomic_count.h --- spice-0.10.0/client/windows/atomic_count.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/windows/atomic_count.h 2012-01-18 10:19:15.000000000 +0000 @@ -39,4 +39,3 @@ }; #endif - diff -Nru spice-0.10.0/client/windows/event_sources_p.cpp spice-0.10.1/client/windows/event_sources_p.cpp --- spice-0.10.0/client/windows/event_sources_p.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/windows/event_sources_p.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -209,4 +209,3 @@ void EventSources::remove_file(File& file) { } - diff -Nru spice-0.10.0/client/windows/main.cpp spice-0.10.1/client/windows/main.cpp --- spice-0.10.0/client/windows/main.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/windows/main.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -41,6 +41,13 @@ } } +#ifdef __MINGW32__ +// XXX: for mingw32 we can do both actually, but it seems easier +// to just use the autoconf provided PACKAGE_VERSION. +static void init_version_string() +{ +} +#else const char* PACKAGE_VERSION = "???"; static char _version_string[40]; @@ -68,6 +75,7 @@ (int)(file_info->dwFileVersionLS & 0x0ffff)); PACKAGE_VERSION = _version_string; } +#endif int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, @@ -100,4 +108,3 @@ return exit_val; } - diff -Nru spice-0.10.0/client/windows/my_getopt.cpp spice-0.10.1/client/windows/my_getopt.cpp --- spice-0.10.0/client/windows/my_getopt.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/windows/my_getopt.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -20,4 +20,3 @@ #include "common.h" #include "../../common/win/my_getopt-1.5/my_getopt.c" - diff -Nru spice-0.10.0/client/windows/named_pipe.cpp spice-0.10.1/client/windows/named_pipe.cpp --- spice-0.10.0/client/windows/named_pipe.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/windows/named_pipe.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -230,4 +230,3 @@ THROW("ConnectNamedPipe() failed %u", GetLastError()); } } - diff -Nru spice-0.10.0/client/windows/named_pipe.h spice-0.10.1/client/windows/named_pipe.h --- spice-0.10.0/client/windows/named_pipe.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/windows/named_pipe.h 2012-01-18 10:19:15.000000000 +0000 @@ -92,4 +92,3 @@ }; #endif - diff -Nru spice-0.10.0/client/windows/pixels_source.cpp spice-0.10.1/client/windows/pixels_source.cpp --- spice-0.10.0/client/windows/pixels_source.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/windows/pixels_source.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -108,4 +108,3 @@ Lock lock(*p_data->source_p._mutex); return get_bitmap_size(p_data->source_p.dc); } - diff -Nru spice-0.10.0/client/windows/pixels_source_p.h spice-0.10.1/client/windows/pixels_source_p.h --- spice-0.10.0/client/windows/pixels_source_p.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/windows/pixels_source_p.h 2012-01-18 10:19:15.000000000 +0000 @@ -26,4 +26,3 @@ }; #endif - diff -Nru spice-0.10.0/client/windows/platform.cpp spice-0.10.1/client/windows/platform.cpp --- spice-0.10.0/client/windows/platform.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/windows/platform.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -139,7 +139,7 @@ for (size_t i = 0; i < clipboard_formats_count; i++) { for (uint32_t* ptype = clipboard_formats[i].types; *ptype; ptype++) { if (*ptype == type) { - return clipboard_formats[i].format; + return clipboard_formats[i].format; } } } @@ -228,7 +228,7 @@ // handling WM_RENDERFORMAT. Therefore, we try our best by sending CLIPBOARD_REQUEST to the // agent, while waiting alertably for a while (hoping for good) for receiving CLIPBOARD data // or CLIPBOARD_RELEASE from the agent, which both will signal clipboard_event. - uint32_t type = get_clipboard_type(wParam); + uint32_t type = get_clipboard_type(wParam); if (!type) { LOG_INFO("Unsupported clipboard format %u", wParam); break; @@ -985,11 +985,11 @@ static HGLOBAL utf8_alloc(LPCSTR data, int size) { - HGLOBAL handle; + HGLOBAL handle; LPVOID buf; int len; - // Received utf8 string is not null-terminated + // Received utf8 string is not null-terminated if (!(len = MultiByteToWideChar(CP_UTF8, 0, data, size, NULL, 0))) { return NULL; } @@ -1001,7 +1001,7 @@ if (!(buf = GlobalLock(handle))) { GlobalFree(handle); return NULL; - } + } // Translate data and set clipboard content if (!(MultiByteToWideChar(CP_UTF8, 0, data, size, (LPWSTR)buf, len))) { GlobalUnlock(handle); diff -Nru spice-0.10.0/client/windows/platform_utils.cpp spice-0.10.1/client/windows/platform_utils.cpp --- spice-0.10.0/client/windows/platform_utils.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/windows/platform_utils.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -51,7 +51,7 @@ { HBITMAP bitmap = LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(id)); if (!bitmap) { - THROW("get bitmpa #%d failed", id); + THROW("get bitmap #%d failed", id); } return bitmap; } @@ -61,7 +61,7 @@ AutoGDIObject bitmap(LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(id), IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR | LR_CREATEDIBSECTION | LR_SHARED)); if (!bitmap.valid()) { - THROW("get bitmpa #%d failed", id); + THROW("get alpha bitmap #%d failed", id); } BITMAP src_info; @@ -148,4 +148,3 @@ in_addr->S_un.S_addr = addr; return 1; } - diff -Nru spice-0.10.0/client/windows/platform_utils.h spice-0.10.1/client/windows/platform_utils.h --- spice-0.10.0/client/windows/platform_utils.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/windows/platform_utils.h 2012-01-18 10:19:15.000000000 +0000 @@ -98,4 +98,3 @@ int inet_aton(const char* ip, struct in_addr* in_addr); #endif - diff -Nru spice-0.10.0/client/windows/playback.cpp spice-0.10.1/client/windows/playback.cpp --- spice-0.10.0/client/windows/playback.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/windows/playback.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -176,4 +176,3 @@ { return _in_use * WavePlaybackAbstract::FRAME_SIZE / _sampels_per_ms; } - diff -Nru spice-0.10.0/client/windows/playback.h spice-0.10.1/client/windows/playback.h --- spice-0.10.0/client/windows/playback.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/windows/playback.h 2012-01-18 10:19:15.000000000 +0000 @@ -52,4 +52,3 @@ }; #endif - diff -Nru spice-0.10.0/client/windows/record.cpp spice-0.10.1/client/windows/record.cpp --- spice-0.10.0/client/windows/record.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/windows/record.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -193,4 +193,3 @@ { return true; } - diff -Nru spice-0.10.0/client/windows/record.h spice-0.10.1/client/windows/record.h --- spice-0.10.0/client/windows/record.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/windows/record.h 2012-01-18 10:19:15.000000000 +0000 @@ -55,4 +55,3 @@ }; #endif - diff -Nru spice-0.10.0/client/windows/red_drawable.cpp spice-0.10.1/client/windows/red_drawable.cpp --- spice-0.10.0/client/windows/red_drawable.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/windows/red_drawable.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -151,4 +151,3 @@ } DeleteObject(brush); } - diff -Nru spice-0.10.0/client/windows/red_pixmap.cpp spice-0.10.1/client/windows/red_pixmap.cpp --- spice-0.10.0/client/windows/red_pixmap.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/windows/red_pixmap.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -42,4 +42,3 @@ { return _format == RedDrawable::A1; } - diff -Nru spice-0.10.0/client/windows/red_pixmap_gdi.cpp spice-0.10.1/client/windows/red_pixmap_gdi.cpp --- spice-0.10.0/client/windows/red_pixmap_gdi.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/windows/red_pixmap_gdi.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -64,9 +64,12 @@ bitmap_info.inf.bmiColors[0].rgbRed = 0; bitmap_info.inf.bmiColors[0].rgbGreen = 0; bitmap_info.inf.bmiColors[0].rgbBlue = 0; +#ifndef __MINGW32__ + // inf.bmiColors is [1] in mingw/include/wingdi.h bitmap_info.inf.bmiColors[1].rgbRed = 0xff; bitmap_info.inf.bmiColors[1].rgbGreen = 0xff; bitmap_info.inf.bmiColors[1].rgbBlue = 0xff; +#endif break; case RedDrawable::RGB16_565: pixel_format = (DWORD *)bitmap_info.inf.bmiColors; @@ -116,4 +119,3 @@ RedPixmap_p* p_data = (RedPixmap_p*)get_opaque(); return *p_data->pixels_source_p._mutex; } - diff -Nru spice-0.10.0/client/windows/red_pixmap_sw.cpp spice-0.10.1/client/windows/red_pixmap_sw.cpp --- spice-0.10.0/client/windows/red_pixmap_sw.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/windows/red_pixmap_sw.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -77,9 +77,12 @@ bitmap_info.inf.bmiColors[0].rgbRed = 0; bitmap_info.inf.bmiColors[0].rgbGreen = 0; bitmap_info.inf.bmiColors[0].rgbBlue = 0; +#ifndef __MINGW32__ + // inf.bmiColors is [1] in mingw/include/wingdi.h bitmap_info.inf.bmiColors[1].rgbRed = 0xff; bitmap_info.inf.bmiColors[1].rgbGreen = 0xff; bitmap_info.inf.bmiColors[1].rgbBlue = 0xff; +#endif break; case RedDrawable::RGB16_565: pixel_format = (DWORD *)bitmap_info.inf.bmiColors; @@ -115,4 +118,3 @@ DeleteDC(dc); } } - diff -Nru spice-0.10.0/client/windows/red_window.cpp spice-0.10.1/client/windows/red_window.cpp --- spice-0.10.0/client/windows/red_window.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/windows/red_window.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -52,12 +52,40 @@ ((wParam & MK_RBUTTON) ? SPICE_MOUSE_BUTTON_MASK_RIGHT : 0); } -static inline RedKey translate_key(int virtual_key, uint32_t scan, bool escape) +// Return true if VK_RCONTROL is followed by a VK_RMENU with the same timestamp. +static bool is_fake_ctrl(UINT message, WPARAM wParam, LPARAM lParam) { + if ((wParam == VK_CONTROL) && ((HIWORD (lParam) & KF_EXTENDED) == 0)) { + UINT next_peek; + if (message == WM_KEYDOWN) { + next_peek = WM_KEYDOWN; + } else if (message == WM_SYSKEYUP) { + next_peek = WM_KEYUP; + } else { + next_peek = WM_NULL; + } + if (next_peek != WM_NULL) { + MSG next_msg; + LONG time = GetMessageTime(); + BOOL msg_exist = PeekMessage(&next_msg, NULL, + next_peek, next_peek, PM_NOREMOVE); + if ((msg_exist == TRUE) && (next_msg.time == time) && + (next_msg.wParam == VK_MENU) && + (HIWORD (next_msg.lParam) & KF_EXTENDED)) { + return true; + } + } + } + return false; +} + +static inline RedKey translate_key(UINT message, WPARAM wParam, LPARAM lParam) +{ + uint32_t scan = HIWORD(lParam) & 0xff; if (scan == 0) { return REDKEY_INVALID; } - switch (virtual_key) { + switch (wParam) { case VK_PAUSE: return REDKEY_PAUSE; case VK_SNAPSHOT: @@ -74,13 +102,23 @@ } else if (scan == 0xf2) { return REDKEY_KOREAN_HANGUL; } - default: - //todo: always use vitrtual key - if (escape) { - scan += REDKEY_ESCAPE_BASE; + break; + case VK_CONTROL: + // Ignore the fake right ctrl message which is send when alt-gr is + // pressed when using a non-US keyboard layout. + if (is_fake_ctrl(message, wParam, lParam)) { + return REDKEY_INVALID; } - return (RedKey)scan; + break; + default: + break; + } + // TODO: always use virtual key + bool extended = ((HIWORD (lParam) & KF_EXTENDED) != 0); + if (extended) { + scan += REDKEY_ESCAPE_BASE; } + return (RedKey)scan; } static inline void send_filtered_keys(RedWindow* window) @@ -141,9 +179,8 @@ switch (message) { case WM_PAINT: { PAINTSTRUCT ps; - HDC hdc; - hdc = BeginPaint(hWnd, &ps); + BeginPaint(hWnd, &ps); SpicePoint origin = window->get_origin(); SpiceRect r; r.left = ps.rcPaint.left - origin.x; @@ -214,7 +251,7 @@ break; case WM_SYSKEYDOWN: case WM_KEYDOWN: { - RedKey key = translate_key(wParam, HIWORD(lParam) & 0xff, (lParam & (1 << 24)) != 0); + RedKey key = translate_key(message, wParam, lParam); window->get_listener().on_key_press(key); BYTE key_state[256]; @@ -237,7 +274,7 @@ } case WM_SYSKEYUP: case WM_KEYUP: { - RedKey key = translate_key(wParam, HIWORD(lParam) & 0xff, (lParam & (1 << 24)) != 0); + RedKey key = translate_key(message, wParam, lParam); window->get_listener().on_key_release(key); break; } @@ -657,7 +694,7 @@ return true; } -void RedWindow::cupture_mouse() +void RedWindow::capture_mouse() { RECT client_rect; POINT origin; @@ -1026,18 +1063,26 @@ } } -void RedWindow::set_menu(Menu* menu) +int RedWindow::set_menu(Menu* menu) { release_menu(_menu); _menu = NULL; if (!menu) { - return; + return 0; } - _menu = menu->ref(); + _sys_menu = GetSystemMenu(_win, FALSE); + if (! _sys_menu) { + return -1; + } + + _menu = menu->ref(); + insert_separator(_sys_menu); insert_menu(_menu, _sys_menu, _commands_map); + + return 0; } static LRESULT CALLBACK MessageFilterProc(int nCode, WPARAM wParam, LPARAM lParam) @@ -1049,8 +1094,7 @@ switch (msg->message) { case WM_SYSKEYUP: case WM_KEYUP: { - RedKey key = translate_key(msg->wParam, HIWORD(msg->lParam) & 0xff, - (msg->lParam & (1 << 24)) != 0); + RedKey key = translate_key(msg->message, wParam, lParam); filtered_up_keys.push_back(key); break; } diff -Nru spice-0.10.0/client/windows/red_window_p.h spice-0.10.1/client/windows/red_window_p.h --- spice-0.10.0/client/windows/red_window_p.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/windows/red_window_p.h 2012-01-18 10:19:15.000000000 +0000 @@ -69,4 +69,3 @@ }; #endif - diff -Nru spice-0.10.0/client/windows/stdint.h spice-0.10.1/client/windows/stdint.h --- spice-0.10.0/client/windows/stdint.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/windows/stdint.h 2012-01-18 10:19:15.000000000 +0000 @@ -104,11 +104,11 @@ -/* 7.18.1.3 Fastest minimum-width integer types +/* 7.18.1.3 Fastest minimum-width integer types * Not actually guaranteed to be fastest for all purposes - * Here we use the exact-width types for 8 and 16-bit ints. + * Here we use the exact-width types for 8 and 16-bit ints. */ @@ -164,7 +164,7 @@ /* 7.18.2.1 Limits of exact-width integer types */ -#define INT8_MIN (-128) +#define INT8_MIN (-128) #define INT16_MIN (-32768) @@ -260,7 +260,7 @@ /* 7.18.2.4 Limits of integer types capable of holding - object pointers */ + object pointers */ #define INTPTR_MIN INT32_MIN @@ -298,7 +298,7 @@ -#ifndef WCHAR_MIN /* also in wchar.h */ +#ifndef WCHAR_MIN /* also in wchar.h */ #define WCHAR_MIN 0 @@ -338,21 +338,21 @@ Accoding to Douglas Gwyn : - "This spec was changed in ISO/IEC 9899:1999 TC1; in ISO/IEC + "This spec was changed in ISO/IEC 9899:1999 TC1; in ISO/IEC - 9899:1999 as initially published, the expansion was required + 9899:1999 as initially published, the expansion was required - to be an integer constant of precisely matching type, which + to be an integer constant of precisely matching type, which - is impossible to accomplish for the shorter types on most + is impossible to accomplish for the shorter types on most - platforms, because C99 provides no standard way to designate + platforms, because C99 provides no standard way to designate - an integer constant with width less than that of type int. + an integer constant with width less than that of type int. - TC1 changed this to require just an integer constant + TC1 changed this to require just an integer constant - *expression* with *promoted* type." + *expression* with *promoted* type." */ @@ -391,6 +391,3 @@ #endif - - - diff -Nru spice-0.10.0/client/windows/win_platform.h spice-0.10.1/client/windows/win_platform.h --- spice-0.10.0/client/windows/win_platform.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/windows/win_platform.h 2012-01-18 10:19:15.000000000 +0000 @@ -37,4 +37,3 @@ }; #endif - diff -Nru spice-0.10.0/client/x11/atomic_count.h spice-0.10.1/client/x11/atomic_count.h --- spice-0.10.0/client/x11/atomic_count.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/x11/atomic_count.h 2012-01-18 10:19:15.000000000 +0000 @@ -41,4 +41,3 @@ }; #endif - diff -Nru spice-0.10.0/client/x11/event_sources_p.cpp spice-0.10.1/client/x11/event_sources_p.cpp --- spice-0.10.0/client/x11/event_sources_p.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/x11/event_sources_p.cpp 2012-01-23 15:21:14.000000000 +0000 @@ -119,7 +119,7 @@ return false; } - for (int i = 0; i < _events.size(); i++) { + for (unsigned int i = 0; i < _events.size(); i++) { if (FD_ISSET(_fds[i], &rfds)) { _events[i]->action(); /* The action may have removed / added event sources changing diff -Nru spice-0.10.0/client/x11/event_sources_p.h spice-0.10.1/client/x11/event_sources_p.h --- spice-0.10.0/client/x11/event_sources_p.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/x11/event_sources_p.h 2012-01-18 10:19:15.000000000 +0000 @@ -52,4 +52,3 @@ }; #endif - diff -Nru spice-0.10.0/client/x11/images/alt_image.c spice-0.10.1/client/x11/images/alt_image.c --- spice-0.10.0/client/x11/images/alt_image.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/x11/images/alt_image.c 2012-01-18 10:19:15.000000000 +0000 @@ -1,735 +1,735 @@ static const struct { - uint32_t width; - uint32_t height; - uint8_t pixel_data[17496]; + int width; + int height; + uint8_t pixel_data[17496]; } _alt_image = { 81, 54, { - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x16,0x16,0x16,0x2d,0x39,0x39,0x39,0x70,0x48,0x48,0x48,0x8e,0x58,0x58,0x58,0xae,0x68,0x68,0x68,0xcd, - 0x78,0x78,0x78,0xec,0x82,0x82,0x82,0xff,0x81,0x81,0x81,0xfe,0x80,0x80,0x80,0xfd,0x80,0x80,0x80,0xfc,0x7f,0x7f,0x7f,0xfb, - 0x7f,0x7f,0x7f,0xfa,0x7e,0x7e,0x7e,0xf9,0x7e,0x7e,0x7e,0xf8,0x7e,0x7e,0x7e,0xf8,0x7d,0x7d,0x7d,0xf7,0x7d,0x7d,0x7d,0xf6, - 0x7c,0x7c,0x7c,0xf5,0x7c,0x7c,0x7c,0xf4,0x7b,0x7b,0x7b,0xf3,0x7b,0x7b,0x7b,0xf2,0x7a,0x7a,0x7a,0xf1,0x7a,0x7a,0x7a,0xf0, - 0x79,0x79,0x79,0xef,0x79,0x79,0x79,0xee,0x78,0x78,0x78,0xed,0x78,0x78,0x78,0xec,0x77,0x77,0x77,0xeb,0x77,0x77,0x77,0xea, - 0x76,0x76,0x76,0xe9,0x76,0x76,0x76,0xe8,0x75,0x75,0x75,0xe7,0x75,0x75,0x75,0xe6,0x74,0x74,0x74,0xe5,0x74,0x74,0x74,0xe4, - 0x74,0x74,0x74,0xe4,0x73,0x73,0x73,0xe3,0x73,0x73,0x73,0xe2,0x72,0x72,0x72,0xe1,0x72,0x72,0x72,0xe0,0x71,0x71,0x71,0xdf, - 0x71,0x71,0x71,0xde,0x70,0x70,0x70,0xdd,0x70,0x70,0x70,0xdc,0x6f,0x6f,0x6f,0xdb,0x6f,0x6f,0x6f,0xda,0x6e,0x6e,0x6e,0xd9, - 0x6e,0x6e,0x6e,0xd8,0x6d,0x6d,0x6d,0xd7,0x6d,0x6d,0x6d,0xd6,0x6c,0x6c,0x6c,0xd5,0x6c,0x6c,0x6c,0xd4,0x6b,0x6b,0x6b,0xd3, - 0x6b,0x6b,0x6b,0xd2,0x6a,0x6a,0x6a,0xd1,0x6a,0x6a,0x6a,0xd1,0x69,0x69,0x69,0xcf,0x61,0x61,0x61,0xc0,0x60,0x60,0x60,0xca, - 0x64,0x64,0x64,0xe2,0x5b,0x5b,0x5b,0xd3,0x52,0x52,0x52,0xc2,0x47,0x47,0x47,0xad,0x33,0x33,0x33,0x87,0x19,0x19,0x19,0x55, - 0x0b,0x0b,0x0b,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x11,0x11,0x23,0x53,0x53,0x53,0xa4,0x80,0x80,0x80,0xfd,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x79,0x79,0x79,0xff,0x64,0x64,0x64,0xff,0x3f,0x3f,0x3f,0xc4,0x1c,0x1c,0x1c,0x5d, - 0x02,0x02,0x02,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x0a,0x0a,0x15,0x4c,0x4c,0x4c,0x96,0x7f,0x7f,0x7f,0xfa, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x81,0x81,0x81,0xff,0x70,0x70,0x70,0xff,0x4d,0x4d,0x4d,0xf1,0x2c,0x2c,0x2c,0x95,0x03,0x03,0x03,0x0a, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x02, - 0x62,0x62,0x62,0xc2,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x7b,0x7b,0x7b,0xff,0x54,0x54,0x54,0xff,0x3b,0x3b,0x3b,0xc5,0x04,0x04,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x3e,0x3e,0x7b,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x83,0x7f,0x80,0xee,0x88,0x7d,0x7e,0xce,0x88,0x7c,0x7c,0xc2,0x8a,0x7a,0x7c,0xb7, - 0x8c,0x7a,0x7b,0xac,0x8d,0x79,0x7a,0xa5,0x8c,0x79,0x7a,0xa5,0x8d,0x79,0x7b,0xa6,0x8c,0x79,0x7b,0xa6,0x8c,0x79,0x7b,0xa6, - 0x8c,0x79,0x7b,0xa7,0x8c,0x79,0x7b,0xa7,0x8c,0x79,0x7a,0xa7,0x8c,0x79,0x7a,0xa7,0x8c,0x79,0x7b,0xa8,0x8c,0x79,0x7b,0xa8, - 0x8d,0x79,0x7b,0xa9,0x8c,0x79,0x7b,0xa9,0x8c,0x79,0x7b,0xa9,0x8c,0x7a,0x7b,0xaa,0x8c,0x79,0x7b,0xaa,0x8c,0x79,0x7b,0xaa, - 0x8c,0x7a,0x7b,0xab,0x8c,0x79,0x7b,0xab,0x8c,0x79,0x7b,0xab,0x8c,0x7a,0x7b,0xac,0x8c,0x79,0x7b,0xac,0x8b,0x79,0x7b,0xac, - 0x8c,0x7a,0x7b,0xad,0x8b,0x79,0x7b,0xad,0x8b,0x79,0x7b,0xad,0x8b,0x7a,0x7b,0xae,0x8b,0x79,0x7b,0xae,0x8c,0x7a,0x7c,0xaf, - 0x8c,0x7a,0x7b,0xaf,0x8c,0x7a,0x7b,0xaf,0x8b,0x7a,0x7b,0xaf,0x8c,0x7a,0x7c,0xb0,0x8b,0x7a,0x7b,0xb0,0x8b,0x7a,0x7b,0xb0, - 0x8c,0x7a,0x7c,0xb1,0x8b,0x7a,0x7b,0xb1,0x8b,0x7a,0x7b,0xb1,0x8b,0x7a,0x7c,0xb2,0x8b,0x7a,0x7c,0xb2,0x8a,0x7a,0x7b,0xb2, - 0x8b,0x7a,0x7c,0xb3,0x8a,0x7a,0x7c,0xb3,0x8a,0x7a,0x7b,0xb3,0x8b,0x7a,0x7c,0xb4,0x8b,0x7a,0x7c,0xb4,0x8b,0x7a,0x7c,0xb5, - 0x8b,0x7a,0x7c,0xb5,0x8b,0x7a,0x7c,0xb5,0x8b,0x7a,0x7c,0xb6,0x8a,0x7a,0x7c,0xb6,0x8a,0x7b,0x7c,0xbc,0x8c,0x7e,0x80,0xcc, - 0x8d,0x80,0x82,0xd8,0x8c,0x82,0x83,0xe0,0x8c,0x83,0x84,0xe7,0x89,0x83,0x84,0xf1,0x82,0x82,0x82,0xfe,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x7b,0x7b,0x7b,0xff,0x4f,0x4f,0x4f,0xff, - 0x3a,0x3a,0x3a,0xc3,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1b,0x1b,0x1b,0x36,0x7f,0x7f,0x7f,0xfb, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x83,0x80,0x80,0xf3,0x89,0x7c,0x7d,0xc5,0x8c,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8c,0x79,0x7b,0xac,0x87,0x7d,0x7e,0xcd,0x83,0x81,0x81,0xf2,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x69,0x69,0x69,0xff,0x4d,0x4d,0x4d,0xff,0x1c,0x1c,0x1c,0x5f,0x00,0x00,0x00,0x00, - 0x02,0x02,0x02,0x04,0x6f,0x6f,0x6f,0xdb,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x83,0x81,0x81,0xf7, - 0x8c,0x7a,0x7b,0xad,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8c,0x79,0x7b,0xa7,0x86,0x7f,0x7f,0xe1,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x81,0x81,0x81,0xff, - 0x50,0x50,0x50,0xff,0x44,0x44,0x44,0xe4,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x30,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x81,0x81,0x81,0xfe,0x89,0x7b,0x7c,0xbc,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8c,0x79,0x7b,0xa9,0x83,0x81,0x81,0xf6, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x5c,0x5c,0x5c,0xff,0x4d,0x4d,0x4d,0xff,0x0b,0x0b,0x0b,0x26, - 0x33,0x33,0x33,0x65,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x85,0x7f,0x7f,0xe2,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x86,0x7e,0x7f,0xda,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x68,0x68,0x68,0xff,0x4d,0x4d,0x4d,0xff,0x1d,0x1d,0x1d,0x61,0x4f,0x4f,0x4f,0x9b,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x87,0x7d,0x7e,0xce,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x7a,0x69,0x6b,0xb0,0x4c,0x40,0x42,0xcf,0x4c,0x40,0x42,0xcf,0x4c,0x40,0x42,0xcf, - 0x4c,0x40,0x42,0xcf,0x4c,0x40,0x42,0xcf,0x4c,0x40,0x42,0xcf,0x82,0x6f,0x71,0xac,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x88,0x7b,0x7d,0xc4, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x75,0x75,0x75,0xff,0x4d,0x4d,0x4d,0xff,0x2f,0x2f,0x2f,0x9d, - 0x6a,0x6a,0x6a,0xd0,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8a,0x7b,0x7d,0xbc,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x75,0x64,0x67,0xb4,0x6f,0x5f,0x60,0xb8,0x6f,0x5f,0x60,0xb8,0x6f,0x5f,0x60,0xb8, - 0x6f,0x5f,0x60,0xb8,0x6f,0x5f,0x60,0xb8,0x6f,0x5f,0x60,0xb8,0x6f,0x5f,0x60,0xb8,0x7c,0x6a,0x6c,0xb0,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, - 0x2e,0x28,0x28,0xe2,0x95,0x92,0x95,0xf4,0x95,0x92,0x95,0xf4,0x95,0x92,0x95,0xf4,0x95,0x92,0x95,0xf4,0x95,0x92,0x95,0xf4, - 0xb2,0xab,0xad,0xe1,0x9f,0x90,0x92,0xbd,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8c,0x7a,0x7b,0xaf,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x80,0x80,0x80,0xff,0x4e,0x4e,0x4e,0xff,0x41,0x41,0x41,0xd9,0x7f,0x7f,0x7f,0xfb,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x8c,0x7a,0x7b,0xaa,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x89,0x75,0x77,0xa7,0x32,0x2a,0x2b,0xdf, - 0x51,0x4c,0x4e,0xe8,0x6b,0x68,0x69,0xed,0x6b,0x68,0x69,0xed,0x6b,0x68,0x69,0xed,0x6b,0x68,0x69,0xed,0x6b,0x68,0x69,0xed, - 0x6b,0x68,0x69,0xed,0x78,0x73,0x74,0xe4,0xa3,0x96,0x98,0xc3,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6,0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x80,0x6e,0x70,0xac,0x80,0x6e,0x70,0xac, - 0x80,0x6e,0x70,0xac,0x80,0x6e,0x70,0xac,0x80,0x6e,0x70,0xac,0x80,0x6e,0x70,0xac,0x87,0x74,0x76,0xa8,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x83,0x80,0x80,0xf5,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x53,0x53,0x53,0xff,0x4d,0x4d,0x4d,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x6f,0x60,0x61,0xb7,0x2e,0x27,0x28,0xe1,0x87,0x83,0x86,0xf2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb7,0xb1,0xb3,0xe3, - 0x93,0x80,0x82,0xac,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, - 0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8b,0x78,0x7a,0xa6,0x2e,0x27,0x28,0xe1,0x4d,0x48,0x48,0xe7,0x57,0x53,0x54,0xe9,0x57,0x53,0x54,0xe9,0x57,0x53,0x54,0xe9, - 0x57,0x53,0x54,0xe9,0x81,0x76,0x78,0xcf,0x99,0x88,0x8a,0xb5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x83,0x80,0x80,0xf1,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4d,0x4d,0x4d,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x53,0x48,0x48,0xca,0x3b,0x35,0x36,0xe4, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xae,0xa9,0xab,0xe9,0xa0,0x91,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6,0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8b,0x78,0x7a,0xa6,0x2e,0x27,0x28,0xe1,0x80,0x7d,0x7f,0xf0, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xad,0xa8,0xaa,0xea,0xac,0xa1,0xa3,0xce, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x83,0x80,0x80,0xf1,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4d,0x4d,0x4d,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8c,0x78,0x7a,0xa5,0x37,0x2f,0x30,0xdc,0x5d,0x58,0x59,0xea,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xa4,0xa1,0xa4,0xef, - 0xae,0xa4,0xa6,0xd1,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, - 0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8b,0x78,0x7a,0xa6,0x2e,0x27,0x28,0xe1,0x80,0x7d,0x7f,0xf0,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0xad,0xa8,0xaa,0xea,0xac,0xa1,0xa3,0xce,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x83,0x80,0x80,0xf1,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4d,0x4d,0x4d,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x78,0x67,0x69,0xb2,0x2e,0x27,0x28,0xe1,0x7e,0x7a,0x7d,0xf0, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x9a,0x9b,0xf4,0xb9,0xb2,0xb4,0xe1,0x8e,0x7b,0x7e,0xa8,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6,0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8b,0x78,0x7a,0xa6,0x2e,0x27,0x28,0xe1,0x80,0x7d,0x7f,0xf0, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xad,0xa8,0xaa,0xea,0xac,0xa1,0xa3,0xce, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x83,0x81,0x81,0xf2,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4d,0x4d,0x4d,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x5b,0x4e,0x4f,0xc4,0x33,0x2d,0x2e,0xe2,0x98,0x96,0x98,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0xb0,0xab,0xad,0xe7,0x9b,0x8c,0x8e,0xb9,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, - 0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8b,0x78,0x7a,0xa6,0x2e,0x27,0x28,0xe1,0x80,0x7d,0x7f,0xf0,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0xad,0xa8,0xaa,0xea,0xac,0xa1,0xa3,0xce,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x83,0x81,0x81,0xf2,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4c,0x4c,0x4c,0xfe,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x3e,0x35,0x36,0xd7,0x52,0x4e,0x4f,0xe8,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xa7,0xa3,0xa6,0xee,0xaa,0x9f,0xa0,0xcc,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6,0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8b,0x78,0x7a,0xa6,0x2e,0x27,0x28,0xe1,0x80,0x7d,0x7f,0xf0, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xad,0xa8,0xaa,0xea,0xac,0xa1,0xa3,0xce, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x83,0x81,0x81,0xf2,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4c,0x4c,0x4c,0xfe, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x80,0x6d,0x6f,0xad, - 0x2e,0x27,0x28,0xe1,0x75,0x71,0x72,0xee,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9f,0x9d,0x9f,0xf3,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9e,0x9b,0x9d,0xf3,0xb6,0xaf,0xb2,0xdd,0x8d,0x79,0x7b,0xa6,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, - 0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x89,0x75,0x77,0xa7,0x7a,0x69,0x6b,0xb0,0x7a,0x69,0x6b,0xb0, - 0x7a,0x68,0x6a,0xb1,0x2e,0x27,0x28,0xe1,0x80,0x7d,0x7f,0xf0,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0xaa,0xa5,0xa8,0xec,0xa2,0x98,0x9b,0xd5,0x7a,0x69,0x6b,0xb0,0x7a,0x69,0x6b,0xb0,0x7a,0x69,0x6b,0xb0, - 0x7a,0x69,0x6b,0xb0,0x7a,0x69,0x6b,0xb0,0x8b,0x78,0x7a,0xa6,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x83,0x81,0x81,0xf2,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4c,0x4c,0x4c,0xfe,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x63,0x55,0x56,0xbf,0x2f,0x29,0x29,0xe2,0x94,0x91,0x94,0xf4,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xaf,0xab,0xac,0xe8,0x80,0x7d,0x7f,0xf0,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb3,0xae,0xaf,0xe6,0x98,0x87,0x8a,0xb4, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6,0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, - 0x7a,0x68,0x6a,0xb1,0x2e,0x27,0x28,0xe1,0x5b,0x56,0x56,0xe9,0x5e,0x59,0x59,0xea,0x5e,0x59,0x59,0xea,0x8d,0x8a,0x8c,0xf3, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x88,0x84,0x87,0xf2, - 0x5e,0x59,0x59,0xea,0x5e,0x59,0x59,0xea,0x5e,0x59,0x59,0xea,0x5e,0x59,0x59,0xea,0x5e,0x59,0x59,0xea,0x9c,0x8f,0x90,0xc3, - 0x94,0x82,0x83,0xae,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x83,0x81,0x81,0xf2,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4c,0x4c,0x4c,0xfe, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x46,0x3c,0x3d,0xd2, - 0x4a,0x45,0x45,0xe6,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xa2,0x9e,0xa1,0xf1, - 0xba,0xb3,0xb6,0xe2,0x4f,0x4a,0x4a,0xe4,0x93,0x90,0x92,0xf4,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0xaa,0xa5,0xa8,0xec,0xa7,0x9a,0x9c,0xc7,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, - 0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x7a,0x68,0x6a,0xb1,0x2e,0x27,0x28,0xe1,0x95,0x92,0x95,0xf4, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb8,0xb2,0xb4,0xe3,0x9c,0x8d,0x8e,0xb9,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x83,0x81,0x81,0xf2,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4c,0x4c,0x4c,0xfd,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x87,0x73,0x75,0xa9,0x30,0x29,0x2a,0xe0,0x6a,0x67,0x69,0xed,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xaa,0xa6,0xa8,0xeb,0xb8,0xb0,0xb4,0xdf,0x4d,0x42,0x43,0xd0,0x75,0x71,0x72,0xee, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xa0,0x9d,0x9f,0xf2,0xb4,0xab,0xae,0xd9, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6,0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, - 0x7a,0x68,0x6a,0xb1,0x2e,0x27,0x28,0xe1,0x95,0x92,0x95,0xf4,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb8,0xb2,0xb4,0xe3, - 0x9c,0x8d,0x8e,0xb9,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x83,0x81,0x81,0xf2,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4c,0x4c,0x4c,0xfd, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x6b,0x5c,0x5e,0xba,0x2e,0x27,0x28,0xe1, - 0x8d,0x8a,0x8c,0xf3,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb4,0xae,0xb0,0xe6, - 0xac,0xa2,0xa3,0xcf,0x66,0x57,0x59,0xbe,0x55,0x51,0x52,0xe9,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb5,0xb0,0xb2,0xe4,0x93,0x82,0x84,0xaf,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, - 0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x7a,0x68,0x6a,0xb1,0x2e,0x27,0x28,0xe1,0x95,0x92,0x95,0xf4, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb8,0xb2,0xb4,0xe3,0x9c,0x8d,0x8e,0xb9,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x83,0x81,0x81,0xf2,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4c,0x4c,0x4c,0xfd,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x4e,0x43,0x44,0xcd,0x40,0x3a,0x3c,0xe5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9d,0x9b,0x9d,0xf4,0xba,0xb4,0xb6,0xe1,0x9e,0x8f,0x93,0xbd,0x80,0x6e,0x70,0xad,0x38,0x31,0x31,0xe3, - 0x9a,0x97,0x9a,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xac,0xa7,0xaa,0xea, - 0xa2,0x95,0x98,0xc2,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6,0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, - 0x7a,0x68,0x6a,0xb1,0x2e,0x27,0x28,0xe1,0x95,0x92,0x95,0xf4,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb8,0xb2,0xb4,0xe3, - 0x9c,0x8d,0x8e,0xb9,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x82,0x80,0x81,0xf2,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4c,0x4c,0x4c,0xfd, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8b,0x77,0x79,0xa6,0x33,0x2c,0x2c,0xde,0x61,0x5d,0x5f,0xeb, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xa6,0xa2,0xa4,0xee,0xba,0xb4,0xb6,0xe1, - 0x92,0x7f,0x81,0xac,0x8d,0x79,0x7a,0xa5,0x3c,0x33,0x34,0xd9,0x85,0x82,0x84,0xf1,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xa2,0xa0,0xa1,0xf0,0xb0,0xa7,0xa9,0xd4,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, - 0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x86,0x73,0x74,0xaa,0x66,0x57,0x59,0xbe,0xa9,0xa3,0xa6,0xe7, - 0xad,0xa9,0xaa,0xe9,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0xa6,0xa2,0xa4,0xee,0xad,0xa9,0xaa,0xe9,0xad,0xa9,0xaa,0xe9,0xad,0xa9,0xaa,0xe9,0xad,0xa9,0xaa,0xe9, - 0xad,0xa9,0xaa,0xe9,0xad,0xa9,0xaa,0xe9,0xb9,0xb3,0xb5,0xe2,0x9c,0x8d,0x8e,0xb9,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x82,0x80,0x81,0xf2,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4c,0x4c,0x4c,0xfc,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x73,0x63,0x64,0xb5,0x2e,0x27,0x28,0xe1,0x83,0x7f,0x82,0xf1,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0xae,0xaa,0xac,0xe8,0xb2,0xa9,0xac,0xd8,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x57,0x4a,0x4b,0xc7, - 0x66,0x62,0x64,0xec,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9c,0x99,0x9c,0xf5, - 0xb8,0xb2,0xb4,0xe2,0x91,0x7e,0x80,0xaa,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6,0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x93,0x80,0x83,0xae,0x92,0x81,0x83,0xaf,0x3f,0x39,0x3a,0xe5,0x84,0x81,0x83,0xf1, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xad,0xa8,0xaa,0xea,0xae,0xa4,0xa6,0xd1, - 0x94,0x82,0x84,0xaf,0x94,0x82,0x84,0xaf,0x94,0x82,0x84,0xaf,0x94,0x82,0x84,0xaf,0x94,0x82,0x84,0xaf,0x94,0x82,0x84,0xaf, - 0x8e,0x7b,0x7d,0xa8,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x82,0x80,0x81,0xf2,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4c,0x4c,0x4c,0xfc, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x56,0x49,0x4b,0xc8,0x38,0x32,0x32,0xe3,0x9a,0x97,0x9a,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb7,0xb1,0xb3,0xe3,0xa7,0x9a,0x9b,0xc7, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x72,0x62,0x63,0xb6,0x48,0x42,0x44,0xe6,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xae,0xaa,0xac,0xe8,0x9e,0x8f,0x91,0xbc,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, - 0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8b,0x78,0x7a,0xa6,0x2e,0x27,0x28,0xe1,0x80,0x7d,0x7f,0xf0,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0xad,0xa8,0xaa,0xea,0xac,0xa1,0xa3,0xce,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x82,0x80,0x81,0xf2,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4c,0x4c,0x4c,0xfc,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x3a,0x31,0x32,0xda,0x59,0x54,0x55,0xe9,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0xa1,0x9e,0xa0,0xf1,0xba,0xb4,0xb6,0xe1,0x99,0x88,0x8a,0xb5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x89,0x75,0x77,0xa7, - 0x32,0x2b,0x2c,0xe0,0x95,0x92,0x95,0xf4,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0xa6,0xa2,0xa4,0xee,0xac,0xa1,0xa4,0xcf,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6,0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8b,0x78,0x7a,0xa6,0x2e,0x27,0x28,0xe1,0x80,0x7d,0x7f,0xf0, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xad,0xa8,0xaa,0xea,0xac,0xa1,0xa3,0xce, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x83,0x80,0x81,0xf3,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4c,0x4c,0x4c,0xfc, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x7a,0x69,0x6b,0xb0,0x2e,0x27,0x28,0xe1,0x7a,0x77,0x78,0xef,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xaa,0xa6,0xa8,0xec,0xb8,0xb1,0xb4,0xdf,0x8e,0x7b,0x7c,0xa7, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x48,0x3e,0x3f,0xd0,0x78,0x75,0x76,0xef,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9c,0x9b,0x9c,0xf4,0xb8,0xb1,0xb4,0xe0,0x8e,0x7b,0x7d,0xa7, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, - 0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8b,0x78,0x7a,0xa6,0x2e,0x27,0x28,0xe1,0x80,0x7d,0x7f,0xf0,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0xad,0xa8,0xaa,0xea,0xac,0xa1,0xa3,0xce,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x83,0x80,0x81,0xf3,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4b,0x4b,0x4b,0xfb,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x5e,0x51,0x52,0xc3, - 0x32,0x2c,0x2c,0xe2,0x97,0x95,0x97,0xf4,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0xb3,0xae,0xaf,0xe6,0xac,0xa2,0xa4,0xcf,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x63,0x55,0x56,0xbf,0x58,0x53,0x54,0xe9,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0xb2,0xad,0xaf,0xe7,0x9a,0x89,0x8c,0xb7,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6,0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8b,0x78,0x7a,0xa6,0x2e,0x27,0x28,0xe1,0x80,0x7d,0x7f,0xf0, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xad,0xa8,0xaa,0xea,0xac,0xa1,0xa3,0xce, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x83,0x80,0x81,0xf3,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4b,0x4b,0x4b,0xfb, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x41,0x38,0x39,0xd5,0x4f,0x4a,0x4c,0xe7,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9d,0x9b,0x9d,0xf4,0xba,0xb3,0xb6,0xe2,0x9f,0x91,0x93,0xbe,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x7e,0x6c,0x6e,0xaf,0x39,0x33,0x34,0xe3,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xa8,0xa4,0xa6,0xed,0xa8,0x9c,0x9f,0xca, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, - 0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8b,0x78,0x7a,0xa6,0x2e,0x27,0x28,0xe1,0x80,0x7d,0x7f,0xf0,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0xad,0xa8,0xaa,0xea,0xac,0xa1,0xa3,0xce,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x83,0x80,0x81,0xf3,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4b,0x4b,0x4b,0xfb,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x83,0x70,0x72,0xab,0x2e,0x28,0x28,0xe1, - 0x71,0x6d,0x6e,0xed,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9c,0x9b,0x9c,0xf4, - 0xa3,0xa0,0xa2,0xf0,0x54,0x4b,0x4c,0xd4,0x48,0x3e,0x3f,0xd0,0x48,0x3e,0x3f,0xd0,0x48,0x3e,0x3f,0xd0,0x48,0x3e,0x3f,0xd0, - 0x48,0x3e,0x3f,0xd0,0x2e,0x28,0x28,0xe1,0x88,0x85,0x86,0xf2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9f,0x9c,0x9e,0xf3,0xb6,0xae,0xb0,0xdc,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6,0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8b,0x78,0x7a,0xa6,0x2e,0x27,0x28,0xe1,0x80,0x7d,0x7f,0xf0, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xad,0xa8,0xaa,0xea,0xac,0xa1,0xa3,0xce, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x83,0x80,0x80,0xf3,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4b,0x4b,0x4b,0xfb, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x67,0x58,0x59,0xbd,0x2f,0x28,0x29,0xe1,0x90,0x8d,0x90,0xf3,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x97,0x95,0x97,0xf5,0x97,0x95,0x97,0xf5, - 0x97,0x95,0x97,0xf5,0x97,0x95,0x97,0xf5,0x97,0x95,0x97,0xf5,0x97,0x95,0x97,0xf5,0x97,0x95,0x97,0xf5,0x9a,0x97,0x9a,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb4,0xae,0xb0,0xe5, - 0x96,0x85,0x88,0xb2,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, - 0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8b,0x78,0x7a,0xa6,0x2e,0x27,0x28,0xe1,0x80,0x7d,0x7f,0xf0,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0xad,0xa8,0xaa,0xea,0xac,0xa1,0xa3,0xce,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x83,0x80,0x80,0xf3,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4b,0x4b,0x4b,0xfa,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x49,0x3e,0x40,0xd0,0x47,0x40,0x42,0xe6, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xaa,0xa6,0xa8,0xeb,0xa5,0x98,0x99,0xc5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6,0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8b,0x78,0x7a,0xa6,0x2e,0x27,0x28,0xe1,0x80,0x7d,0x7f,0xf0, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xad,0xa8,0xaa,0xea,0xac,0xa1,0xa3,0xce, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x83,0x80,0x80,0xf3,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4b,0x4b,0x4b,0xfa, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x88,0x75,0x77,0xa7,0x31,0x2a,0x2b,0xe0,0x67,0x63,0x64,0xec,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xa1,0x9e,0xa0,0xf1, - 0xb3,0xaa,0xac,0xd7,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, - 0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8c,0x78,0x7a,0xa5,0x2e,0x27,0x28,0xe1,0x80,0x7d,0x7f,0xf0,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0xad,0xa8,0xaa,0xea,0xac,0xa1,0xa3,0xce,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x83,0x80,0x80,0xf3,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4b,0x4b,0x4b,0xfa,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x6e,0x5e,0x5f,0xb8,0x2e,0x27,0x28,0xe1,0x89,0x86,0x88,0xf2, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe3,0x93,0x80,0x82,0xad,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6,0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x34,0x2d,0x2d,0xdd,0x7f,0x7c,0x7d,0xf0, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xa7,0xa3,0xa5,0xed,0xad,0xa3,0xa5,0xd0, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x83,0x80,0x80,0xf3,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4b,0x4b,0x4b,0xfa, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x51,0x46,0x47,0xcb,0x3c,0x37,0x37,0xe4,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0xad,0xa9,0xaa,0xe9,0xa1,0x92,0x94,0xbf,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, - 0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x3d,0x35,0x35,0xd7,0x74,0x70,0x73,0xee,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9f,0x9c,0x9f,0xf2,0xb6,0xaf,0xb1,0xdd,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x83,0x80,0x80,0xf3,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4b,0x4b,0x4b,0xfa,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8c,0x78,0x7a,0xa5,0x35,0x2d,0x2e,0xdd,0x5e,0x59,0x5b,0xea,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9e,0x9b,0x9d,0xf3,0xb0,0xab,0xad,0xe8,0xb0,0xab,0xad,0xe8, - 0xb0,0xab,0xad,0xe8,0xb0,0xab,0xad,0xe8,0xb0,0xab,0xad,0xe8,0xb0,0xab,0xad,0xe8,0xb0,0xab,0xad,0xe8,0xb0,0xab,0xad,0xe8, - 0xb0,0xab,0xad,0xe8,0xb0,0xab,0xad,0xe8,0xaf,0xa9,0xac,0xe9,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xa4,0xa0,0xa3,0xef,0xb0,0xa5,0xa8,0xd2,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6,0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x48,0x3d,0x3e,0xd1,0x6a,0x65,0x67,0xec, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xa1,0x9e,0xa0,0xf1, - 0x6d,0x61,0x64,0xce,0x6b,0x5c,0x5e,0xba,0x6c,0x5d,0x5e,0xba,0x6c,0x5d,0x5e,0xba,0x7c,0x6a,0x6d,0xb0,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x83,0x80,0x80,0xf3,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4b,0x4b,0x4b,0xf9, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x76,0x65,0x67,0xb3, - 0x2e,0x27,0x28,0xe1,0x80,0x7d,0x7f,0xf0,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0xa6,0xa2,0xa5,0xee,0xba,0xb4,0xb6,0xe1,0x93,0x81,0x83,0xae,0x8f,0x7c,0x7e,0xa9,0x8f,0x7c,0x7e,0xa9,0x8f,0x7c,0x7e,0xa9, - 0x8f,0x7c,0x7e,0xa9,0x8f,0x7c,0x7e,0xa9,0x8f,0x7c,0x7e,0xa9,0x8f,0x7c,0x7e,0xa9,0x8f,0x7c,0x7e,0xa9,0x8f,0x7c,0x7e,0xa9, - 0x42,0x3a,0x3a,0xda,0x85,0x82,0x85,0xf2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9c,0x99,0x9c,0xf5,0xb8,0xb1,0xb4,0xe1,0x8f,0x7c,0x7e,0xa9,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, - 0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x53,0x47,0x48,0xca,0x5e,0x59,0x5c,0xea,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x8b,0x88,0x8a,0xf2,0x71,0x6e,0x70,0xee, - 0x6f,0x6b,0x6b,0xed,0x8b,0x84,0x84,0xdc,0xa2,0x94,0x96,0xc1,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x83,0x80,0x80,0xf3,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4b,0x4b,0x4b,0xf9,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x5a,0x4c,0x4e,0xc6,0x35,0x2f,0x2f,0xe3,0x99,0x97,0x99,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xae,0xaa,0xac,0xe8,0xb1,0xa9,0xac,0xd7,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x57,0x4a,0x4b,0xc7,0x66,0x62,0x64,0xec,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb0,0xab,0xad,0xe8,0x9d,0x8e,0x91,0xbb, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6,0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x75,0x64,0x66,0xb4,0x4d,0x48,0x4a,0xe7, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xaa,0xa6,0xa8,0xec,0xb0,0xa7,0xa9,0xd4, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x83,0x81,0x81,0xf4,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4b,0x4b,0x4b,0xf9, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x3c,0x34,0x35,0xd8, - 0x55,0x50,0x51,0xe8,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0xb8,0xb2,0xb4,0xe3,0xa4,0x98,0x9a,0xc5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x72,0x62,0x63,0xb6,0x47,0x41,0x43,0xe6,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0xa6,0xa2,0xa5,0xee,0xac,0xa0,0xa3,0xcd,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, - 0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x41,0x38,0x39,0xd6,0x8d,0x8b,0x8d,0xf3,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0xaa,0xa6,0xa8,0xec,0xb0,0xa7,0xa9,0xd4,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x83,0x81,0x81,0xf4,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4b,0x4b,0x4b,0xf9,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x7e,0x6c,0x6e,0xae,0x2e,0x27,0x28,0xe1,0x76,0x72,0x75,0xee,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xa2,0x9e,0xa1,0xf1,0xba,0xb4,0xb6,0xe1,0x98,0x87,0x8a,0xb4,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8a,0x76,0x78,0xa7,0x32,0x2b,0x2b,0xe0,0x94,0x91,0x94,0xf4, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9d,0x9b,0x9d,0xf4,0xb8,0xb0,0xb2,0xde, - 0x8e,0x7a,0x7c,0xa6,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6,0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x77,0x66,0x68,0xb3, - 0x64,0x5e,0x60,0xe5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xaa,0xa6,0xa8,0xec,0xb0,0xa7,0xa9,0xd4, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x83,0x81,0x81,0xf4,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4a,0x4a,0x4a,0xf8, - 0x7e,0x7e,0x7e,0xf9,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8c,0x7a,0x7b,0xaa,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x62,0x54,0x55,0xc1,0x30,0x2a,0x2b,0xe2, - 0x96,0x93,0x95,0xf4,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xaa,0xa6,0xa8,0xeb, - 0xb8,0xb0,0xb3,0xde,0x8e,0x7a,0x7c,0xa6,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x49,0x3e,0x40,0xd0,0x76,0x73,0x75,0xef,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb2,0xad,0xaf,0xe6,0x99,0x88,0x8a,0xb5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, - 0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x87,0x74,0x76,0xaa,0x7f,0x77,0x7b,0xdc,0x9e,0x9b,0x9d,0xf3, - 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, - 0x9b,0x98,0x9b,0xf5,0xaa,0xa6,0xa8,0xec,0xb0,0xa7,0xa9,0xd4,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x83,0x81,0x81,0xf6,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x53,0x53,0x53,0xff,0x4a,0x4a,0x4a,0xf8,0x66,0x66,0x66,0xc9,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x89,0x7b,0x7c,0xbb,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x7e,0x6c,0x6e,0xaf,0x85,0x78,0x7a,0xc2,0xb2,0xad,0xaf,0xe6,0xb2,0xad,0xaf,0xe6,0xb2,0xad,0xaf,0xe6, - 0xb2,0xad,0xaf,0xe6,0xb2,0xad,0xaf,0xe6,0xb8,0xb2,0xb4,0xe3,0xac,0xa1,0xa3,0xce,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x80,0x6d,0x6f,0xad,0x8d,0x80,0x82,0xc7, - 0xb2,0xad,0xaf,0xe6,0xb2,0xad,0xaf,0xe6,0xb2,0xad,0xaf,0xe6,0xb2,0xad,0xaf,0xe6,0xb2,0xad,0xaf,0xe6,0xb6,0xb0,0xb2,0xe3, - 0xa6,0x99,0x9d,0xc8,0x8d,0x79,0x7a,0xa5,0x87,0x73,0x75,0xa9,0x75,0x64,0x66,0xb5,0xb2,0xad,0xaf,0xe6,0xb2,0xad,0xaf,0xe6, - 0xb2,0xad,0xaf,0xe6,0xb2,0xad,0xaf,0xe6,0xb2,0xad,0xaf,0xe6,0xb9,0xb3,0xb5,0xe2,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x97,0x86,0x88,0xb2,0xa6,0x9a,0x9d,0xcb,0xa6,0x9d,0xa1,0xd7,0xac,0xa5,0xa7,0xe1, - 0xb1,0xac,0xae,0xe6,0xb2,0xad,0xaf,0xe6,0xb2,0xad,0xaf,0xe6,0xb2,0xad,0xaf,0xe6,0xb6,0xb1,0xb2,0xe4,0xb0,0xa7,0xa9,0xd4, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8c,0x79,0x7b,0xa9, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x81,0x81,0x81,0xff,0x4e,0x4e,0x4e,0xff,0x4a,0x4a,0x4a,0xf8, - 0x4b,0x4b,0x4b,0x94,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8a,0x7f,0x80,0xd8,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8a,0x7a,0x7c,0xb7,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x79,0x79,0x79,0xff,0x4d,0x4d,0x4d,0xff,0x4a,0x4a,0x4a,0xf8,0x48,0x48,0x48,0xae,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x83,0x82,0x82,0xfb,0x8c,0x79,0x7b,0xab,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x86,0x7f,0x7f,0xde, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x71,0x71,0x71,0xff,0x4d,0x4d,0x4d,0xff,0x46,0x46,0x46,0xe8, - 0x25,0x25,0x25,0x6a,0x80,0x80,0x80,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x84,0x7f,0x7f,0xe7, - 0x8b,0x7a,0x7b,0xb0,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, - 0x8b,0x7a,0x7b,0xaf,0x85,0x7e,0x7f,0xdb,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x68,0x68,0x68,0xff,0x4d,0x4d,0x4d,0xff,0x39,0x39,0x39,0xc0,0x0a,0x0a,0x0a,0x23,0x66,0x66,0x66,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x81,0x80,0x81,0xfb,0x85,0x7f,0x80,0xe5,0x86,0x7d,0x7e,0xd7, - 0x88,0x7c,0x7d,0xca,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7, - 0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7, - 0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7, - 0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7, - 0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7, - 0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7, - 0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7, - 0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7, - 0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7, - 0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x88,0x7c,0x7d,0xc6,0x88,0x7c,0x7d,0xc8, - 0x87,0x7d,0x7e,0xce,0x86,0x7d,0x7e,0xd4,0x85,0x7f,0x80,0xe6,0x81,0x81,0x81,0xfe,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x7b,0x7b,0x7b,0xff,0x51,0x51,0x51,0xff,0x4d,0x4d,0x4d,0xff,0x2d,0x2d,0x2d,0x98, - 0x00,0x00,0x00,0x00,0x46,0x46,0x46,0xe7,0x79,0x79,0x79,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x7d,0x7d,0x7d,0xff,0x54,0x54,0x54,0xff, - 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x21,0x21,0x21,0x70,0x00,0x00,0x00,0x00,0x1c,0x1c,0x1c,0x5e,0x55,0x55,0x55,0xff, - 0x75,0x75,0x75,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x7f,0x7f,0x7f,0xff,0x57,0x57,0x57,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x48,0x48,0x48,0xf1,0x0c,0x0c,0x0c,0x28, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x39,0x39,0x39,0xbd,0x4d,0x4d,0x4d,0xff,0x60,0x60,0x60,0xff,0x7d,0x7d,0x7d,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, - 0x82,0x82,0x82,0xff,0x76,0x76,0x76,0xff,0x62,0x62,0x62,0xff,0x50,0x50,0x50,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, - 0x4a,0x4a,0x4a,0xf8,0x13,0x13,0x13,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0b,0x0b,0x0b,0x27, - 0x45,0x45,0x45,0xe6,0x4d,0x4d,0x4d,0xff,0x4e,0x4e,0x4e,0xff,0x57,0x57,0x57,0xff,0x5e,0x5e,0x5e,0xff,0x66,0x66,0x66,0xff, - 0x6d,0x6d,0x6d,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff, - 0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff, - 0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff, - 0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff, - 0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff, - 0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff, - 0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff, - 0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff, - 0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff, - 0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6c,0x6c,0x6c,0xff, - 0x68,0x68,0x68,0xff,0x65,0x65,0x65,0xff,0x61,0x61,0x61,0xff,0x54,0x54,0x54,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, - 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4c,0x4c,0x4c,0xfc,0x18,0x18,0x18,0x51,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x0c,0x29,0x29,0x29,0x89,0x4b,0x4b,0x4b,0xf9, - 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, - 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, - 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, - 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, - 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, - 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, - 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, - 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, - 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, - 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, - 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, - 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4c,0x4c,0x4c,0xfc,0x36,0x36,0x36,0xb4,0x15,0x15,0x15,0x46, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0b,0x0b,0x0b,0x25,0x25,0x25,0x25,0x7b,0x30,0x30,0x30,0xa1,0x3c,0x3c,0x3c,0xc8, - 0x47,0x47,0x47,0xee,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, - 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, - 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, - 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, - 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, - 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, - 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, - 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, - 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, - 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, - 0x4c,0x4c,0x4c,0xfd,0x47,0x47,0x47,0xec,0x42,0x42,0x42,0xdd,0x3e,0x3e,0x3e,0xce,0x38,0x38,0x38,0xbc,0x23,0x23,0x23,0x75, - 0x07,0x07,0x07,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00} + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x16,0x16,0x16,0x2d,0x39,0x39,0x39,0x70,0x48,0x48,0x48,0x8e,0x58,0x58,0x58,0xae,0x68,0x68,0x68,0xcd, + 0x78,0x78,0x78,0xec,0x82,0x82,0x82,0xff,0x81,0x81,0x81,0xfe,0x80,0x80,0x80,0xfd,0x80,0x80,0x80,0xfc,0x7f,0x7f,0x7f,0xfb, + 0x7f,0x7f,0x7f,0xfa,0x7e,0x7e,0x7e,0xf9,0x7e,0x7e,0x7e,0xf8,0x7e,0x7e,0x7e,0xf8,0x7d,0x7d,0x7d,0xf7,0x7d,0x7d,0x7d,0xf6, + 0x7c,0x7c,0x7c,0xf5,0x7c,0x7c,0x7c,0xf4,0x7b,0x7b,0x7b,0xf3,0x7b,0x7b,0x7b,0xf2,0x7a,0x7a,0x7a,0xf1,0x7a,0x7a,0x7a,0xf0, + 0x79,0x79,0x79,0xef,0x79,0x79,0x79,0xee,0x78,0x78,0x78,0xed,0x78,0x78,0x78,0xec,0x77,0x77,0x77,0xeb,0x77,0x77,0x77,0xea, + 0x76,0x76,0x76,0xe9,0x76,0x76,0x76,0xe8,0x75,0x75,0x75,0xe7,0x75,0x75,0x75,0xe6,0x74,0x74,0x74,0xe5,0x74,0x74,0x74,0xe4, + 0x74,0x74,0x74,0xe4,0x73,0x73,0x73,0xe3,0x73,0x73,0x73,0xe2,0x72,0x72,0x72,0xe1,0x72,0x72,0x72,0xe0,0x71,0x71,0x71,0xdf, + 0x71,0x71,0x71,0xde,0x70,0x70,0x70,0xdd,0x70,0x70,0x70,0xdc,0x6f,0x6f,0x6f,0xdb,0x6f,0x6f,0x6f,0xda,0x6e,0x6e,0x6e,0xd9, + 0x6e,0x6e,0x6e,0xd8,0x6d,0x6d,0x6d,0xd7,0x6d,0x6d,0x6d,0xd6,0x6c,0x6c,0x6c,0xd5,0x6c,0x6c,0x6c,0xd4,0x6b,0x6b,0x6b,0xd3, + 0x6b,0x6b,0x6b,0xd2,0x6a,0x6a,0x6a,0xd1,0x6a,0x6a,0x6a,0xd1,0x69,0x69,0x69,0xcf,0x61,0x61,0x61,0xc0,0x60,0x60,0x60,0xca, + 0x64,0x64,0x64,0xe2,0x5b,0x5b,0x5b,0xd3,0x52,0x52,0x52,0xc2,0x47,0x47,0x47,0xad,0x33,0x33,0x33,0x87,0x19,0x19,0x19,0x55, + 0x0b,0x0b,0x0b,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x11,0x11,0x23,0x53,0x53,0x53,0xa4,0x80,0x80,0x80,0xfd,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x79,0x79,0x79,0xff,0x64,0x64,0x64,0xff,0x3f,0x3f,0x3f,0xc4,0x1c,0x1c,0x1c,0x5d, + 0x02,0x02,0x02,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x0a,0x0a,0x15,0x4c,0x4c,0x4c,0x96,0x7f,0x7f,0x7f,0xfa, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x81,0x81,0x81,0xff,0x70,0x70,0x70,0xff,0x4d,0x4d,0x4d,0xf1,0x2c,0x2c,0x2c,0x95,0x03,0x03,0x03,0x0a, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x02, + 0x62,0x62,0x62,0xc2,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x7b,0x7b,0x7b,0xff,0x54,0x54,0x54,0xff,0x3b,0x3b,0x3b,0xc5,0x04,0x04,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x3e,0x3e,0x7b,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x83,0x7f,0x80,0xee,0x88,0x7d,0x7e,0xce,0x88,0x7c,0x7c,0xc2,0x8a,0x7a,0x7c,0xb7, + 0x8c,0x7a,0x7b,0xac,0x8d,0x79,0x7a,0xa5,0x8c,0x79,0x7a,0xa5,0x8d,0x79,0x7b,0xa6,0x8c,0x79,0x7b,0xa6,0x8c,0x79,0x7b,0xa6, + 0x8c,0x79,0x7b,0xa7,0x8c,0x79,0x7b,0xa7,0x8c,0x79,0x7a,0xa7,0x8c,0x79,0x7a,0xa7,0x8c,0x79,0x7b,0xa8,0x8c,0x79,0x7b,0xa8, + 0x8d,0x79,0x7b,0xa9,0x8c,0x79,0x7b,0xa9,0x8c,0x79,0x7b,0xa9,0x8c,0x7a,0x7b,0xaa,0x8c,0x79,0x7b,0xaa,0x8c,0x79,0x7b,0xaa, + 0x8c,0x7a,0x7b,0xab,0x8c,0x79,0x7b,0xab,0x8c,0x79,0x7b,0xab,0x8c,0x7a,0x7b,0xac,0x8c,0x79,0x7b,0xac,0x8b,0x79,0x7b,0xac, + 0x8c,0x7a,0x7b,0xad,0x8b,0x79,0x7b,0xad,0x8b,0x79,0x7b,0xad,0x8b,0x7a,0x7b,0xae,0x8b,0x79,0x7b,0xae,0x8c,0x7a,0x7c,0xaf, + 0x8c,0x7a,0x7b,0xaf,0x8c,0x7a,0x7b,0xaf,0x8b,0x7a,0x7b,0xaf,0x8c,0x7a,0x7c,0xb0,0x8b,0x7a,0x7b,0xb0,0x8b,0x7a,0x7b,0xb0, + 0x8c,0x7a,0x7c,0xb1,0x8b,0x7a,0x7b,0xb1,0x8b,0x7a,0x7b,0xb1,0x8b,0x7a,0x7c,0xb2,0x8b,0x7a,0x7c,0xb2,0x8a,0x7a,0x7b,0xb2, + 0x8b,0x7a,0x7c,0xb3,0x8a,0x7a,0x7c,0xb3,0x8a,0x7a,0x7b,0xb3,0x8b,0x7a,0x7c,0xb4,0x8b,0x7a,0x7c,0xb4,0x8b,0x7a,0x7c,0xb5, + 0x8b,0x7a,0x7c,0xb5,0x8b,0x7a,0x7c,0xb5,0x8b,0x7a,0x7c,0xb6,0x8a,0x7a,0x7c,0xb6,0x8a,0x7b,0x7c,0xbc,0x8c,0x7e,0x80,0xcc, + 0x8d,0x80,0x82,0xd8,0x8c,0x82,0x83,0xe0,0x8c,0x83,0x84,0xe7,0x89,0x83,0x84,0xf1,0x82,0x82,0x82,0xfe,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x7b,0x7b,0x7b,0xff,0x4f,0x4f,0x4f,0xff, + 0x3a,0x3a,0x3a,0xc3,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1b,0x1b,0x1b,0x36,0x7f,0x7f,0x7f,0xfb, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x83,0x80,0x80,0xf3,0x89,0x7c,0x7d,0xc5,0x8c,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8c,0x79,0x7b,0xac,0x87,0x7d,0x7e,0xcd,0x83,0x81,0x81,0xf2,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x69,0x69,0x69,0xff,0x4d,0x4d,0x4d,0xff,0x1c,0x1c,0x1c,0x5f,0x00,0x00,0x00,0x00, + 0x02,0x02,0x02,0x04,0x6f,0x6f,0x6f,0xdb,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x83,0x81,0x81,0xf7, + 0x8c,0x7a,0x7b,0xad,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8c,0x79,0x7b,0xa7,0x86,0x7f,0x7f,0xe1,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x81,0x81,0x81,0xff, + 0x50,0x50,0x50,0xff,0x44,0x44,0x44,0xe4,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x30,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x81,0x81,0x81,0xfe,0x89,0x7b,0x7c,0xbc,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8c,0x79,0x7b,0xa9,0x83,0x81,0x81,0xf6, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x5c,0x5c,0x5c,0xff,0x4d,0x4d,0x4d,0xff,0x0b,0x0b,0x0b,0x26, + 0x33,0x33,0x33,0x65,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x85,0x7f,0x7f,0xe2,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x86,0x7e,0x7f,0xda,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x68,0x68,0x68,0xff,0x4d,0x4d,0x4d,0xff,0x1d,0x1d,0x1d,0x61,0x4f,0x4f,0x4f,0x9b,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x87,0x7d,0x7e,0xce,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x7a,0x69,0x6b,0xb0,0x4c,0x40,0x42,0xcf,0x4c,0x40,0x42,0xcf,0x4c,0x40,0x42,0xcf, + 0x4c,0x40,0x42,0xcf,0x4c,0x40,0x42,0xcf,0x4c,0x40,0x42,0xcf,0x82,0x6f,0x71,0xac,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x88,0x7b,0x7d,0xc4, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x75,0x75,0x75,0xff,0x4d,0x4d,0x4d,0xff,0x2f,0x2f,0x2f,0x9d, + 0x6a,0x6a,0x6a,0xd0,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8a,0x7b,0x7d,0xbc,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x75,0x64,0x67,0xb4,0x6f,0x5f,0x60,0xb8,0x6f,0x5f,0x60,0xb8,0x6f,0x5f,0x60,0xb8, + 0x6f,0x5f,0x60,0xb8,0x6f,0x5f,0x60,0xb8,0x6f,0x5f,0x60,0xb8,0x6f,0x5f,0x60,0xb8,0x7c,0x6a,0x6c,0xb0,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, + 0x2e,0x28,0x28,0xe2,0x95,0x92,0x95,0xf4,0x95,0x92,0x95,0xf4,0x95,0x92,0x95,0xf4,0x95,0x92,0x95,0xf4,0x95,0x92,0x95,0xf4, + 0xb2,0xab,0xad,0xe1,0x9f,0x90,0x92,0xbd,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8c,0x7a,0x7b,0xaf,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x80,0x80,0x80,0xff,0x4e,0x4e,0x4e,0xff,0x41,0x41,0x41,0xd9,0x7f,0x7f,0x7f,0xfb,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x8c,0x7a,0x7b,0xaa,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x89,0x75,0x77,0xa7,0x32,0x2a,0x2b,0xdf, + 0x51,0x4c,0x4e,0xe8,0x6b,0x68,0x69,0xed,0x6b,0x68,0x69,0xed,0x6b,0x68,0x69,0xed,0x6b,0x68,0x69,0xed,0x6b,0x68,0x69,0xed, + 0x6b,0x68,0x69,0xed,0x78,0x73,0x74,0xe4,0xa3,0x96,0x98,0xc3,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6,0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x80,0x6e,0x70,0xac,0x80,0x6e,0x70,0xac, + 0x80,0x6e,0x70,0xac,0x80,0x6e,0x70,0xac,0x80,0x6e,0x70,0xac,0x80,0x6e,0x70,0xac,0x87,0x74,0x76,0xa8,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x83,0x80,0x80,0xf5,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x53,0x53,0x53,0xff,0x4d,0x4d,0x4d,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x6f,0x60,0x61,0xb7,0x2e,0x27,0x28,0xe1,0x87,0x83,0x86,0xf2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb7,0xb1,0xb3,0xe3, + 0x93,0x80,0x82,0xac,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, + 0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8b,0x78,0x7a,0xa6,0x2e,0x27,0x28,0xe1,0x4d,0x48,0x48,0xe7,0x57,0x53,0x54,0xe9,0x57,0x53,0x54,0xe9,0x57,0x53,0x54,0xe9, + 0x57,0x53,0x54,0xe9,0x81,0x76,0x78,0xcf,0x99,0x88,0x8a,0xb5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x83,0x80,0x80,0xf1,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4d,0x4d,0x4d,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x53,0x48,0x48,0xca,0x3b,0x35,0x36,0xe4, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xae,0xa9,0xab,0xe9,0xa0,0x91,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6,0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8b,0x78,0x7a,0xa6,0x2e,0x27,0x28,0xe1,0x80,0x7d,0x7f,0xf0, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xad,0xa8,0xaa,0xea,0xac,0xa1,0xa3,0xce, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x83,0x80,0x80,0xf1,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4d,0x4d,0x4d,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8c,0x78,0x7a,0xa5,0x37,0x2f,0x30,0xdc,0x5d,0x58,0x59,0xea,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xa4,0xa1,0xa4,0xef, + 0xae,0xa4,0xa6,0xd1,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, + 0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8b,0x78,0x7a,0xa6,0x2e,0x27,0x28,0xe1,0x80,0x7d,0x7f,0xf0,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0xad,0xa8,0xaa,0xea,0xac,0xa1,0xa3,0xce,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x83,0x80,0x80,0xf1,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4d,0x4d,0x4d,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x78,0x67,0x69,0xb2,0x2e,0x27,0x28,0xe1,0x7e,0x7a,0x7d,0xf0, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x9a,0x9b,0xf4,0xb9,0xb2,0xb4,0xe1,0x8e,0x7b,0x7e,0xa8,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6,0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8b,0x78,0x7a,0xa6,0x2e,0x27,0x28,0xe1,0x80,0x7d,0x7f,0xf0, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xad,0xa8,0xaa,0xea,0xac,0xa1,0xa3,0xce, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x83,0x81,0x81,0xf2,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4d,0x4d,0x4d,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x5b,0x4e,0x4f,0xc4,0x33,0x2d,0x2e,0xe2,0x98,0x96,0x98,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0xb0,0xab,0xad,0xe7,0x9b,0x8c,0x8e,0xb9,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, + 0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8b,0x78,0x7a,0xa6,0x2e,0x27,0x28,0xe1,0x80,0x7d,0x7f,0xf0,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0xad,0xa8,0xaa,0xea,0xac,0xa1,0xa3,0xce,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x83,0x81,0x81,0xf2,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4c,0x4c,0x4c,0xfe,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x3e,0x35,0x36,0xd7,0x52,0x4e,0x4f,0xe8,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xa7,0xa3,0xa6,0xee,0xaa,0x9f,0xa0,0xcc,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6,0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8b,0x78,0x7a,0xa6,0x2e,0x27,0x28,0xe1,0x80,0x7d,0x7f,0xf0, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xad,0xa8,0xaa,0xea,0xac,0xa1,0xa3,0xce, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x83,0x81,0x81,0xf2,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4c,0x4c,0x4c,0xfe, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x80,0x6d,0x6f,0xad, + 0x2e,0x27,0x28,0xe1,0x75,0x71,0x72,0xee,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9f,0x9d,0x9f,0xf3,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9e,0x9b,0x9d,0xf3,0xb6,0xaf,0xb2,0xdd,0x8d,0x79,0x7b,0xa6,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, + 0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x89,0x75,0x77,0xa7,0x7a,0x69,0x6b,0xb0,0x7a,0x69,0x6b,0xb0, + 0x7a,0x68,0x6a,0xb1,0x2e,0x27,0x28,0xe1,0x80,0x7d,0x7f,0xf0,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0xaa,0xa5,0xa8,0xec,0xa2,0x98,0x9b,0xd5,0x7a,0x69,0x6b,0xb0,0x7a,0x69,0x6b,0xb0,0x7a,0x69,0x6b,0xb0, + 0x7a,0x69,0x6b,0xb0,0x7a,0x69,0x6b,0xb0,0x8b,0x78,0x7a,0xa6,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x83,0x81,0x81,0xf2,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4c,0x4c,0x4c,0xfe,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x63,0x55,0x56,0xbf,0x2f,0x29,0x29,0xe2,0x94,0x91,0x94,0xf4,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xaf,0xab,0xac,0xe8,0x80,0x7d,0x7f,0xf0,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb3,0xae,0xaf,0xe6,0x98,0x87,0x8a,0xb4, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6,0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, + 0x7a,0x68,0x6a,0xb1,0x2e,0x27,0x28,0xe1,0x5b,0x56,0x56,0xe9,0x5e,0x59,0x59,0xea,0x5e,0x59,0x59,0xea,0x8d,0x8a,0x8c,0xf3, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x88,0x84,0x87,0xf2, + 0x5e,0x59,0x59,0xea,0x5e,0x59,0x59,0xea,0x5e,0x59,0x59,0xea,0x5e,0x59,0x59,0xea,0x5e,0x59,0x59,0xea,0x9c,0x8f,0x90,0xc3, + 0x94,0x82,0x83,0xae,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x83,0x81,0x81,0xf2,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4c,0x4c,0x4c,0xfe, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x46,0x3c,0x3d,0xd2, + 0x4a,0x45,0x45,0xe6,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xa2,0x9e,0xa1,0xf1, + 0xba,0xb3,0xb6,0xe2,0x4f,0x4a,0x4a,0xe4,0x93,0x90,0x92,0xf4,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0xaa,0xa5,0xa8,0xec,0xa7,0x9a,0x9c,0xc7,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, + 0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x7a,0x68,0x6a,0xb1,0x2e,0x27,0x28,0xe1,0x95,0x92,0x95,0xf4, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb8,0xb2,0xb4,0xe3,0x9c,0x8d,0x8e,0xb9,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x83,0x81,0x81,0xf2,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4c,0x4c,0x4c,0xfd,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x87,0x73,0x75,0xa9,0x30,0x29,0x2a,0xe0,0x6a,0x67,0x69,0xed,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xaa,0xa6,0xa8,0xeb,0xb8,0xb0,0xb4,0xdf,0x4d,0x42,0x43,0xd0,0x75,0x71,0x72,0xee, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xa0,0x9d,0x9f,0xf2,0xb4,0xab,0xae,0xd9, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6,0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, + 0x7a,0x68,0x6a,0xb1,0x2e,0x27,0x28,0xe1,0x95,0x92,0x95,0xf4,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb8,0xb2,0xb4,0xe3, + 0x9c,0x8d,0x8e,0xb9,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x83,0x81,0x81,0xf2,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4c,0x4c,0x4c,0xfd, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x6b,0x5c,0x5e,0xba,0x2e,0x27,0x28,0xe1, + 0x8d,0x8a,0x8c,0xf3,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb4,0xae,0xb0,0xe6, + 0xac,0xa2,0xa3,0xcf,0x66,0x57,0x59,0xbe,0x55,0x51,0x52,0xe9,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb5,0xb0,0xb2,0xe4,0x93,0x82,0x84,0xaf,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, + 0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x7a,0x68,0x6a,0xb1,0x2e,0x27,0x28,0xe1,0x95,0x92,0x95,0xf4, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb8,0xb2,0xb4,0xe3,0x9c,0x8d,0x8e,0xb9,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x83,0x81,0x81,0xf2,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4c,0x4c,0x4c,0xfd,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x4e,0x43,0x44,0xcd,0x40,0x3a,0x3c,0xe5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9d,0x9b,0x9d,0xf4,0xba,0xb4,0xb6,0xe1,0x9e,0x8f,0x93,0xbd,0x80,0x6e,0x70,0xad,0x38,0x31,0x31,0xe3, + 0x9a,0x97,0x9a,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xac,0xa7,0xaa,0xea, + 0xa2,0x95,0x98,0xc2,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6,0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, + 0x7a,0x68,0x6a,0xb1,0x2e,0x27,0x28,0xe1,0x95,0x92,0x95,0xf4,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb8,0xb2,0xb4,0xe3, + 0x9c,0x8d,0x8e,0xb9,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x82,0x80,0x81,0xf2,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4c,0x4c,0x4c,0xfd, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8b,0x77,0x79,0xa6,0x33,0x2c,0x2c,0xde,0x61,0x5d,0x5f,0xeb, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xa6,0xa2,0xa4,0xee,0xba,0xb4,0xb6,0xe1, + 0x92,0x7f,0x81,0xac,0x8d,0x79,0x7a,0xa5,0x3c,0x33,0x34,0xd9,0x85,0x82,0x84,0xf1,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xa2,0xa0,0xa1,0xf0,0xb0,0xa7,0xa9,0xd4,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, + 0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x86,0x73,0x74,0xaa,0x66,0x57,0x59,0xbe,0xa9,0xa3,0xa6,0xe7, + 0xad,0xa9,0xaa,0xe9,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0xa6,0xa2,0xa4,0xee,0xad,0xa9,0xaa,0xe9,0xad,0xa9,0xaa,0xe9,0xad,0xa9,0xaa,0xe9,0xad,0xa9,0xaa,0xe9, + 0xad,0xa9,0xaa,0xe9,0xad,0xa9,0xaa,0xe9,0xb9,0xb3,0xb5,0xe2,0x9c,0x8d,0x8e,0xb9,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x82,0x80,0x81,0xf2,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4c,0x4c,0x4c,0xfc,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x73,0x63,0x64,0xb5,0x2e,0x27,0x28,0xe1,0x83,0x7f,0x82,0xf1,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0xae,0xaa,0xac,0xe8,0xb2,0xa9,0xac,0xd8,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x57,0x4a,0x4b,0xc7, + 0x66,0x62,0x64,0xec,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9c,0x99,0x9c,0xf5, + 0xb8,0xb2,0xb4,0xe2,0x91,0x7e,0x80,0xaa,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6,0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x93,0x80,0x83,0xae,0x92,0x81,0x83,0xaf,0x3f,0x39,0x3a,0xe5,0x84,0x81,0x83,0xf1, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xad,0xa8,0xaa,0xea,0xae,0xa4,0xa6,0xd1, + 0x94,0x82,0x84,0xaf,0x94,0x82,0x84,0xaf,0x94,0x82,0x84,0xaf,0x94,0x82,0x84,0xaf,0x94,0x82,0x84,0xaf,0x94,0x82,0x84,0xaf, + 0x8e,0x7b,0x7d,0xa8,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x82,0x80,0x81,0xf2,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4c,0x4c,0x4c,0xfc, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x56,0x49,0x4b,0xc8,0x38,0x32,0x32,0xe3,0x9a,0x97,0x9a,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb7,0xb1,0xb3,0xe3,0xa7,0x9a,0x9b,0xc7, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x72,0x62,0x63,0xb6,0x48,0x42,0x44,0xe6,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xae,0xaa,0xac,0xe8,0x9e,0x8f,0x91,0xbc,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, + 0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8b,0x78,0x7a,0xa6,0x2e,0x27,0x28,0xe1,0x80,0x7d,0x7f,0xf0,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0xad,0xa8,0xaa,0xea,0xac,0xa1,0xa3,0xce,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x82,0x80,0x81,0xf2,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4c,0x4c,0x4c,0xfc,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x3a,0x31,0x32,0xda,0x59,0x54,0x55,0xe9,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0xa1,0x9e,0xa0,0xf1,0xba,0xb4,0xb6,0xe1,0x99,0x88,0x8a,0xb5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x89,0x75,0x77,0xa7, + 0x32,0x2b,0x2c,0xe0,0x95,0x92,0x95,0xf4,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0xa6,0xa2,0xa4,0xee,0xac,0xa1,0xa4,0xcf,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6,0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8b,0x78,0x7a,0xa6,0x2e,0x27,0x28,0xe1,0x80,0x7d,0x7f,0xf0, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xad,0xa8,0xaa,0xea,0xac,0xa1,0xa3,0xce, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x83,0x80,0x81,0xf3,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4c,0x4c,0x4c,0xfc, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x7a,0x69,0x6b,0xb0,0x2e,0x27,0x28,0xe1,0x7a,0x77,0x78,0xef,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xaa,0xa6,0xa8,0xec,0xb8,0xb1,0xb4,0xdf,0x8e,0x7b,0x7c,0xa7, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x48,0x3e,0x3f,0xd0,0x78,0x75,0x76,0xef,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9c,0x9b,0x9c,0xf4,0xb8,0xb1,0xb4,0xe0,0x8e,0x7b,0x7d,0xa7, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, + 0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8b,0x78,0x7a,0xa6,0x2e,0x27,0x28,0xe1,0x80,0x7d,0x7f,0xf0,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0xad,0xa8,0xaa,0xea,0xac,0xa1,0xa3,0xce,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x83,0x80,0x81,0xf3,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4b,0x4b,0x4b,0xfb,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x5e,0x51,0x52,0xc3, + 0x32,0x2c,0x2c,0xe2,0x97,0x95,0x97,0xf4,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0xb3,0xae,0xaf,0xe6,0xac,0xa2,0xa4,0xcf,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x63,0x55,0x56,0xbf,0x58,0x53,0x54,0xe9,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0xb2,0xad,0xaf,0xe7,0x9a,0x89,0x8c,0xb7,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6,0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8b,0x78,0x7a,0xa6,0x2e,0x27,0x28,0xe1,0x80,0x7d,0x7f,0xf0, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xad,0xa8,0xaa,0xea,0xac,0xa1,0xa3,0xce, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x83,0x80,0x81,0xf3,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4b,0x4b,0x4b,0xfb, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x41,0x38,0x39,0xd5,0x4f,0x4a,0x4c,0xe7,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9d,0x9b,0x9d,0xf4,0xba,0xb3,0xb6,0xe2,0x9f,0x91,0x93,0xbe,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x7e,0x6c,0x6e,0xaf,0x39,0x33,0x34,0xe3,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xa8,0xa4,0xa6,0xed,0xa8,0x9c,0x9f,0xca, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, + 0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8b,0x78,0x7a,0xa6,0x2e,0x27,0x28,0xe1,0x80,0x7d,0x7f,0xf0,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0xad,0xa8,0xaa,0xea,0xac,0xa1,0xa3,0xce,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x83,0x80,0x81,0xf3,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4b,0x4b,0x4b,0xfb,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x83,0x70,0x72,0xab,0x2e,0x28,0x28,0xe1, + 0x71,0x6d,0x6e,0xed,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9c,0x9b,0x9c,0xf4, + 0xa3,0xa0,0xa2,0xf0,0x54,0x4b,0x4c,0xd4,0x48,0x3e,0x3f,0xd0,0x48,0x3e,0x3f,0xd0,0x48,0x3e,0x3f,0xd0,0x48,0x3e,0x3f,0xd0, + 0x48,0x3e,0x3f,0xd0,0x2e,0x28,0x28,0xe1,0x88,0x85,0x86,0xf2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9f,0x9c,0x9e,0xf3,0xb6,0xae,0xb0,0xdc,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6,0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8b,0x78,0x7a,0xa6,0x2e,0x27,0x28,0xe1,0x80,0x7d,0x7f,0xf0, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xad,0xa8,0xaa,0xea,0xac,0xa1,0xa3,0xce, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x83,0x80,0x80,0xf3,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4b,0x4b,0x4b,0xfb, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x67,0x58,0x59,0xbd,0x2f,0x28,0x29,0xe1,0x90,0x8d,0x90,0xf3,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x97,0x95,0x97,0xf5,0x97,0x95,0x97,0xf5, + 0x97,0x95,0x97,0xf5,0x97,0x95,0x97,0xf5,0x97,0x95,0x97,0xf5,0x97,0x95,0x97,0xf5,0x97,0x95,0x97,0xf5,0x9a,0x97,0x9a,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb4,0xae,0xb0,0xe5, + 0x96,0x85,0x88,0xb2,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, + 0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8b,0x78,0x7a,0xa6,0x2e,0x27,0x28,0xe1,0x80,0x7d,0x7f,0xf0,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0xad,0xa8,0xaa,0xea,0xac,0xa1,0xa3,0xce,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x83,0x80,0x80,0xf3,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4b,0x4b,0x4b,0xfa,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x49,0x3e,0x40,0xd0,0x47,0x40,0x42,0xe6, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xaa,0xa6,0xa8,0xeb,0xa5,0x98,0x99,0xc5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6,0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8b,0x78,0x7a,0xa6,0x2e,0x27,0x28,0xe1,0x80,0x7d,0x7f,0xf0, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xad,0xa8,0xaa,0xea,0xac,0xa1,0xa3,0xce, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x83,0x80,0x80,0xf3,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4b,0x4b,0x4b,0xfa, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x88,0x75,0x77,0xa7,0x31,0x2a,0x2b,0xe0,0x67,0x63,0x64,0xec,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xa1,0x9e,0xa0,0xf1, + 0xb3,0xaa,0xac,0xd7,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, + 0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8c,0x78,0x7a,0xa5,0x2e,0x27,0x28,0xe1,0x80,0x7d,0x7f,0xf0,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0xad,0xa8,0xaa,0xea,0xac,0xa1,0xa3,0xce,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x83,0x80,0x80,0xf3,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4b,0x4b,0x4b,0xfa,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x6e,0x5e,0x5f,0xb8,0x2e,0x27,0x28,0xe1,0x89,0x86,0x88,0xf2, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe3,0x93,0x80,0x82,0xad,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6,0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x34,0x2d,0x2d,0xdd,0x7f,0x7c,0x7d,0xf0, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xa7,0xa3,0xa5,0xed,0xad,0xa3,0xa5,0xd0, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x83,0x80,0x80,0xf3,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4b,0x4b,0x4b,0xfa, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x51,0x46,0x47,0xcb,0x3c,0x37,0x37,0xe4,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0xad,0xa9,0xaa,0xe9,0xa1,0x92,0x94,0xbf,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, + 0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x3d,0x35,0x35,0xd7,0x74,0x70,0x73,0xee,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9f,0x9c,0x9f,0xf2,0xb6,0xaf,0xb1,0xdd,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x83,0x80,0x80,0xf3,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4b,0x4b,0x4b,0xfa,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8c,0x78,0x7a,0xa5,0x35,0x2d,0x2e,0xdd,0x5e,0x59,0x5b,0xea,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9e,0x9b,0x9d,0xf3,0xb0,0xab,0xad,0xe8,0xb0,0xab,0xad,0xe8, + 0xb0,0xab,0xad,0xe8,0xb0,0xab,0xad,0xe8,0xb0,0xab,0xad,0xe8,0xb0,0xab,0xad,0xe8,0xb0,0xab,0xad,0xe8,0xb0,0xab,0xad,0xe8, + 0xb0,0xab,0xad,0xe8,0xb0,0xab,0xad,0xe8,0xaf,0xa9,0xac,0xe9,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xa4,0xa0,0xa3,0xef,0xb0,0xa5,0xa8,0xd2,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6,0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x48,0x3d,0x3e,0xd1,0x6a,0x65,0x67,0xec, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xa1,0x9e,0xa0,0xf1, + 0x6d,0x61,0x64,0xce,0x6b,0x5c,0x5e,0xba,0x6c,0x5d,0x5e,0xba,0x6c,0x5d,0x5e,0xba,0x7c,0x6a,0x6d,0xb0,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x83,0x80,0x80,0xf3,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4b,0x4b,0x4b,0xf9, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x76,0x65,0x67,0xb3, + 0x2e,0x27,0x28,0xe1,0x80,0x7d,0x7f,0xf0,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0xa6,0xa2,0xa5,0xee,0xba,0xb4,0xb6,0xe1,0x93,0x81,0x83,0xae,0x8f,0x7c,0x7e,0xa9,0x8f,0x7c,0x7e,0xa9,0x8f,0x7c,0x7e,0xa9, + 0x8f,0x7c,0x7e,0xa9,0x8f,0x7c,0x7e,0xa9,0x8f,0x7c,0x7e,0xa9,0x8f,0x7c,0x7e,0xa9,0x8f,0x7c,0x7e,0xa9,0x8f,0x7c,0x7e,0xa9, + 0x42,0x3a,0x3a,0xda,0x85,0x82,0x85,0xf2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9c,0x99,0x9c,0xf5,0xb8,0xb1,0xb4,0xe1,0x8f,0x7c,0x7e,0xa9,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, + 0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x53,0x47,0x48,0xca,0x5e,0x59,0x5c,0xea,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x8b,0x88,0x8a,0xf2,0x71,0x6e,0x70,0xee, + 0x6f,0x6b,0x6b,0xed,0x8b,0x84,0x84,0xdc,0xa2,0x94,0x96,0xc1,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x83,0x80,0x80,0xf3,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4b,0x4b,0x4b,0xf9,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x5a,0x4c,0x4e,0xc6,0x35,0x2f,0x2f,0xe3,0x99,0x97,0x99,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xae,0xaa,0xac,0xe8,0xb1,0xa9,0xac,0xd7,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x57,0x4a,0x4b,0xc7,0x66,0x62,0x64,0xec,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb0,0xab,0xad,0xe8,0x9d,0x8e,0x91,0xbb, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6,0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x75,0x64,0x66,0xb4,0x4d,0x48,0x4a,0xe7, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xaa,0xa6,0xa8,0xec,0xb0,0xa7,0xa9,0xd4, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x83,0x81,0x81,0xf4,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4b,0x4b,0x4b,0xf9, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x3c,0x34,0x35,0xd8, + 0x55,0x50,0x51,0xe8,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0xb8,0xb2,0xb4,0xe3,0xa4,0x98,0x9a,0xc5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x72,0x62,0x63,0xb6,0x47,0x41,0x43,0xe6,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0xa6,0xa2,0xa5,0xee,0xac,0xa0,0xa3,0xcd,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, + 0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x41,0x38,0x39,0xd6,0x8d,0x8b,0x8d,0xf3,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0xaa,0xa6,0xa8,0xec,0xb0,0xa7,0xa9,0xd4,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x83,0x81,0x81,0xf4,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4b,0x4b,0x4b,0xf9,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x7e,0x6c,0x6e,0xae,0x2e,0x27,0x28,0xe1,0x76,0x72,0x75,0xee,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xa2,0x9e,0xa1,0xf1,0xba,0xb4,0xb6,0xe1,0x98,0x87,0x8a,0xb4,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8a,0x76,0x78,0xa7,0x32,0x2b,0x2b,0xe0,0x94,0x91,0x94,0xf4, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9d,0x9b,0x9d,0xf4,0xb8,0xb0,0xb2,0xde, + 0x8e,0x7a,0x7c,0xa6,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6,0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x77,0x66,0x68,0xb3, + 0x64,0x5e,0x60,0xe5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xaa,0xa6,0xa8,0xec,0xb0,0xa7,0xa9,0xd4, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x83,0x81,0x81,0xf4,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x54,0x54,0x54,0xff,0x4a,0x4a,0x4a,0xf8, + 0x7e,0x7e,0x7e,0xf9,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8c,0x7a,0x7b,0xaa,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x62,0x54,0x55,0xc1,0x30,0x2a,0x2b,0xe2, + 0x96,0x93,0x95,0xf4,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xaa,0xa6,0xa8,0xeb, + 0xb8,0xb0,0xb3,0xde,0x8e,0x7a,0x7c,0xa6,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x49,0x3e,0x40,0xd0,0x76,0x73,0x75,0xef,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0xb2,0xad,0xaf,0xe6,0x99,0x88,0x8a,0xb5,0x8d,0x79,0x7a,0xa5,0x73,0x63,0x64,0xb6, + 0x2e,0x28,0x28,0xe2,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0xb6,0xb0,0xb2,0xe5,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x87,0x74,0x76,0xaa,0x7f,0x77,0x7b,0xdc,0x9e,0x9b,0x9d,0xf3, + 0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5,0x9b,0x98,0x9b,0xf5, + 0x9b,0x98,0x9b,0xf5,0xaa,0xa6,0xa8,0xec,0xb0,0xa7,0xa9,0xd4,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x83,0x81,0x81,0xf6,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x53,0x53,0x53,0xff,0x4a,0x4a,0x4a,0xf8,0x66,0x66,0x66,0xc9,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x89,0x7b,0x7c,0xbb,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x7e,0x6c,0x6e,0xaf,0x85,0x78,0x7a,0xc2,0xb2,0xad,0xaf,0xe6,0xb2,0xad,0xaf,0xe6,0xb2,0xad,0xaf,0xe6, + 0xb2,0xad,0xaf,0xe6,0xb2,0xad,0xaf,0xe6,0xb8,0xb2,0xb4,0xe3,0xac,0xa1,0xa3,0xce,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x80,0x6d,0x6f,0xad,0x8d,0x80,0x82,0xc7, + 0xb2,0xad,0xaf,0xe6,0xb2,0xad,0xaf,0xe6,0xb2,0xad,0xaf,0xe6,0xb2,0xad,0xaf,0xe6,0xb2,0xad,0xaf,0xe6,0xb6,0xb0,0xb2,0xe3, + 0xa6,0x99,0x9d,0xc8,0x8d,0x79,0x7a,0xa5,0x87,0x73,0x75,0xa9,0x75,0x64,0x66,0xb5,0xb2,0xad,0xaf,0xe6,0xb2,0xad,0xaf,0xe6, + 0xb2,0xad,0xaf,0xe6,0xb2,0xad,0xaf,0xe6,0xb2,0xad,0xaf,0xe6,0xb9,0xb3,0xb5,0xe2,0xa0,0x92,0x94,0xbe,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x97,0x86,0x88,0xb2,0xa6,0x9a,0x9d,0xcb,0xa6,0x9d,0xa1,0xd7,0xac,0xa5,0xa7,0xe1, + 0xb1,0xac,0xae,0xe6,0xb2,0xad,0xaf,0xe6,0xb2,0xad,0xaf,0xe6,0xb2,0xad,0xaf,0xe6,0xb6,0xb1,0xb2,0xe4,0xb0,0xa7,0xa9,0xd4, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8c,0x79,0x7b,0xa9, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x81,0x81,0x81,0xff,0x4e,0x4e,0x4e,0xff,0x4a,0x4a,0x4a,0xf8, + 0x4b,0x4b,0x4b,0x94,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x8a,0x7f,0x80,0xd8,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8a,0x7a,0x7c,0xb7,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x79,0x79,0x79,0xff,0x4d,0x4d,0x4d,0xff,0x4a,0x4a,0x4a,0xf8,0x48,0x48,0x48,0xae,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x83,0x82,0x82,0xfb,0x8c,0x79,0x7b,0xab,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x86,0x7f,0x7f,0xde, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x71,0x71,0x71,0xff,0x4d,0x4d,0x4d,0xff,0x46,0x46,0x46,0xe8, + 0x25,0x25,0x25,0x6a,0x80,0x80,0x80,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x84,0x7f,0x7f,0xe7, + 0x8b,0x7a,0x7b,0xb0,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5,0x8d,0x79,0x7a,0xa5, + 0x8b,0x7a,0x7b,0xaf,0x85,0x7e,0x7f,0xdb,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x68,0x68,0x68,0xff,0x4d,0x4d,0x4d,0xff,0x39,0x39,0x39,0xc0,0x0a,0x0a,0x0a,0x23,0x66,0x66,0x66,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x81,0x80,0x81,0xfb,0x85,0x7f,0x80,0xe5,0x86,0x7d,0x7e,0xd7, + 0x88,0x7c,0x7d,0xca,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7, + 0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7, + 0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7, + 0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7, + 0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7, + 0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7, + 0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7, + 0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7, + 0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7, + 0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x89,0x7c,0x7d,0xc7,0x88,0x7c,0x7d,0xc6,0x88,0x7c,0x7d,0xc8, + 0x87,0x7d,0x7e,0xce,0x86,0x7d,0x7e,0xd4,0x85,0x7f,0x80,0xe6,0x81,0x81,0x81,0xfe,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x7b,0x7b,0x7b,0xff,0x51,0x51,0x51,0xff,0x4d,0x4d,0x4d,0xff,0x2d,0x2d,0x2d,0x98, + 0x00,0x00,0x00,0x00,0x46,0x46,0x46,0xe7,0x79,0x79,0x79,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x7d,0x7d,0x7d,0xff,0x54,0x54,0x54,0xff, + 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x21,0x21,0x21,0x70,0x00,0x00,0x00,0x00,0x1c,0x1c,0x1c,0x5e,0x55,0x55,0x55,0xff, + 0x75,0x75,0x75,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x7f,0x7f,0x7f,0xff,0x57,0x57,0x57,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x48,0x48,0x48,0xf1,0x0c,0x0c,0x0c,0x28, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x39,0x39,0x39,0xbd,0x4d,0x4d,0x4d,0xff,0x60,0x60,0x60,0xff,0x7d,0x7d,0x7d,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff,0x82,0x82,0x82,0xff, + 0x82,0x82,0x82,0xff,0x76,0x76,0x76,0xff,0x62,0x62,0x62,0xff,0x50,0x50,0x50,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, + 0x4a,0x4a,0x4a,0xf8,0x13,0x13,0x13,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0b,0x0b,0x0b,0x27, + 0x45,0x45,0x45,0xe6,0x4d,0x4d,0x4d,0xff,0x4e,0x4e,0x4e,0xff,0x57,0x57,0x57,0xff,0x5e,0x5e,0x5e,0xff,0x66,0x66,0x66,0xff, + 0x6d,0x6d,0x6d,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff, + 0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff, + 0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff, + 0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff, + 0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff, + 0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff, + 0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff, + 0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff, + 0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff, + 0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6e,0x6e,0x6e,0xff,0x6c,0x6c,0x6c,0xff, + 0x68,0x68,0x68,0xff,0x65,0x65,0x65,0xff,0x61,0x61,0x61,0xff,0x54,0x54,0x54,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, + 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4c,0x4c,0x4c,0xfc,0x18,0x18,0x18,0x51,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x0c,0x29,0x29,0x29,0x89,0x4b,0x4b,0x4b,0xf9, + 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, + 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, + 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, + 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, + 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, + 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, + 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, + 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, + 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, + 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, + 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, + 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4c,0x4c,0x4c,0xfc,0x36,0x36,0x36,0xb4,0x15,0x15,0x15,0x46, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0b,0x0b,0x0b,0x25,0x25,0x25,0x25,0x7b,0x30,0x30,0x30,0xa1,0x3c,0x3c,0x3c,0xc8, + 0x47,0x47,0x47,0xee,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, + 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, + 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, + 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, + 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, + 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, + 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, + 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, + 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, + 0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff,0x4d,0x4d,0x4d,0xff, + 0x4c,0x4c,0x4c,0xfd,0x47,0x47,0x47,0xec,0x42,0x42,0x42,0xdd,0x3e,0x3e,0x3e,0xce,0x38,0x38,0x38,0xbc,0x23,0x23,0x23,0x75, + 0x07,0x07,0x07,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00} }; diff -Nru spice-0.10.0/client/x11/images/red_icon.c spice-0.10.1/client/x11/images/red_icon.c --- spice-0.10.0/client/x11/images/red_icon.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/x11/images/red_icon.c 2012-01-18 10:19:15.000000000 +0000 @@ -1,6 +1,6 @@ static const struct { - uint32_t width; - uint32_t height; + int width; + int height; uint8_t pixmap[4096]; uint8_t mask[128]; } _red_icon = { 32, 32, { diff -Nru spice-0.10.0/client/x11/main.cpp spice-0.10.1/client/x11/main.cpp --- spice-0.10.0/client/x11/main.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/x11/main.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -49,4 +49,3 @@ return exit_val; } - diff -Nru spice-0.10.0/client/x11/named_pipe.cpp spice-0.10.1/client/x11/named_pipe.cpp --- spice-0.10.0/client/x11/named_pipe.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/x11/named_pipe.cpp 2012-01-23 15:21:14.000000000 +0000 @@ -20,7 +20,6 @@ #include #include -#include #include #include "named_pipe.h" #include "utils.h" @@ -169,4 +168,3 @@ conn_interface.bind((NamedPipe::ConnectionRef)conn); } } - diff -Nru spice-0.10.0/client/x11/named_pipe.h spice-0.10.1/client/x11/named_pipe.h --- spice-0.10.0/client/x11/named_pipe.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/x11/named_pipe.h 2012-01-18 10:19:15.000000000 +0000 @@ -59,4 +59,3 @@ }; #endif - diff -Nru spice-0.10.0/client/x11/pixels_source.cpp spice-0.10.1/client/x11/pixels_source.cpp --- spice-0.10.0/client/x11/pixels_source.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/x11/pixels_source.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -106,4 +106,3 @@ pt.y = pixman_image_get_height(image); return pt; } - diff -Nru spice-0.10.0/client/x11/pixels_source_p.h spice-0.10.1/client/x11/pixels_source_p.h --- spice-0.10.0/client/x11/pixels_source_p.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/x11/pixels_source_p.h 2012-01-18 10:19:15.000000000 +0000 @@ -89,4 +89,3 @@ }; #endif - diff -Nru spice-0.10.0/client/x11/platform.cpp spice-0.10.1/client/x11/platform.cpp --- spice-0.10.0/client/x11/platform.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/x11/platform.cpp 2012-01-23 15:21:14.000000000 +0000 @@ -34,7 +34,6 @@ #include #include #include -#include #include #include #include @@ -74,6 +73,11 @@ #define USE_XRANDR_1_2 #endif +#ifdef HAVE_XINERAMA +#include +#define USE_XINERAMA_1_0 +#endif + static Display* x_display = NULL; static bool x_shm_avail = false; static XVisualInfo **vinfo = NULL; @@ -106,6 +110,10 @@ static int xfixes_event_base; static int xfixes_error_base; +#ifdef USE_XINERAMA_1_0 +static bool using_xinerama_1_0 = false; +#endif + static unsigned int caps_lock_mask = 0; static unsigned int num_lock_mask = 0; @@ -127,7 +135,7 @@ { VD_AGENT_CLIPBOARD_IMAGE_JPG, { "image/jpeg", NULL }, }, }; -#define clipboard_format_count (sizeof(clipboard_formats)/sizeof(clipboard_formats[0])) +#define clipboard_format_count ((int)(sizeof(clipboard_formats)/sizeof(clipboard_formats[0]))) struct selection_request { XEvent event; @@ -137,11 +145,11 @@ static int expected_targets_notifies = 0; static bool waiting_for_property_notify = false; static uint8_t* clipboard_data = NULL; -static int32_t clipboard_data_size = 0; -static int32_t clipboard_data_space = 0; +static uint32_t clipboard_data_size = 0; +static uint32_t clipboard_data_space = 0; static Atom clipboard_request_target = None; static selection_request *next_selection_request = NULL; -static uint32_t clipboard_type_count = 0; +static int clipboard_type_count = 0; static uint32_t clipboard_agent_types[256]; static Atom clipboard_x11_targets[256]; static Mutex clipboard_lock; @@ -525,7 +533,7 @@ void XPlatform::set_win_proc(Window win, win_proc_t proc) { int res; - + XLockDisplay(x_display); res = XSaveContext(x_display, win, win_proc_context, (XPointer)proc); XUnlockDisplay(x_display); @@ -1037,7 +1045,7 @@ XLockDisplay(get_display()); config = XRRGetScreenInfo(get_display(), root_window); XUnlockDisplay(get_display()); - + if (!config) { LOG_WARN("get screen info failed"); return false; @@ -1069,6 +1077,91 @@ return true; } +#ifdef USE_XINERAMA_1_0 + +class XineramaMonitor; +typedef std::list XineramaMonitorsList; + +class XineramaScreen : public XScreen { +public: + XineramaScreen(Display* display, int screen, int& next_mon_id, XineramaScreenInfo* xin_screens, + int num_xin_screens); + virtual ~XineramaScreen(); + + void publish_monitors(MonitorsList& monitors); + +private: + XineramaMonitorsList _monitors; +}; + +class XineramaMonitor : public Monitor { +public: + XineramaMonitor(int id, XineramaScreenInfo& xin_screen); + + virtual void do_set_mode(int width, int height); + virtual void do_restore() {} + virtual int get_depth() { return 32;} + virtual SpicePoint get_position() { return _position;} + virtual SpicePoint get_size() const { return _size;} + virtual bool is_out_of_sync() { return _out_of_sync;} + virtual int get_screen_id() { return 0;} + +private: + SpicePoint _position; + SpicePoint _size; + bool _out_of_sync; +}; + +XineramaScreen::XineramaScreen(Display* display, int screen, int& next_mon_id, + XineramaScreenInfo* xin_screens, int num_xin_screens) + : XScreen(display, screen) +{ + X_DEBUG_SYNC(display); + for (int i = 0; i < num_xin_screens; i++) { + _monitors.push_back(new XineramaMonitor(next_mon_id++, xin_screens[i])); + } + Window root_window = RootWindow(display, screen); + XSelectInput(display, root_window, StructureNotifyMask); + XRRSelectInput(display, root_window, RRScreenChangeNotifyMask); // TODO: this fails if we don't have RR extension (but do have XINERAMA) + XPlatform::set_win_proc(root_window, root_win_proc); // Xlib: extension "RANDR" missing on display ":3.0". + X_DEBUG_SYNC(display); +} + +XineramaScreen::~XineramaScreen() +{ + while (!_monitors.empty()) { + XineramaMonitor* monitor = _monitors.front(); + _monitors.pop_front(); + delete monitor; + } +} + +void XineramaScreen::publish_monitors(MonitorsList& monitors) +{ + XineramaMonitorsList::iterator iter = _monitors.begin(); + for (; iter != _monitors.end(); iter++) { + monitors.push_back(*iter); + } +} + +XineramaMonitor::XineramaMonitor(int id, XineramaScreenInfo& screen_info) + : Monitor(id) + , _out_of_sync (false) +{ + _position.x = screen_info.x_org; + _position.y = screen_info.y_org; + _size.x = screen_info.width; + _size.y = screen_info.height; +} + + +void XineramaMonitor::do_set_mode(int width, int height) +{ + _out_of_sync = width > _size.x || height > _size.y; +} + +#endif + #ifdef USE_XRANDR_1_2 class MultyMonScreen: public XScreen { @@ -1149,7 +1242,7 @@ void update_position(); bool find_mode_in_outputs(RRMode mode, int start_index, XRRScreenResources* res); bool find_mode_in_clones(RRMode mode, XRRScreenResources* res); - XRRModeInfo* find_mode(int width, int height, XRRScreenResources* res); + XRRModeInfo* find_mode(unsigned int width, unsigned int height, XRRScreenResources* res); private: MultyMonScreen& _container; @@ -2088,7 +2181,7 @@ } }; -XRRModeInfo* XMonitor::find_mode(int width, int height, XRRScreenResources* res) +XRRModeInfo* XMonitor::find_mode(unsigned int width, unsigned int height, XRRScreenResources* res) { typedef std::set ModesSet; ModesSet modes_set; @@ -2314,6 +2407,35 @@ #endif +#ifdef USE_XINERAMA_1_0 + +static XineramaScreenInfo* init_xinerama_screens(int* num_xin_screens) +{ + XineramaScreenInfo* xin_screens = NULL; + + if (using_xinerama_1_0 && ScreenCount(x_display) == 1) { + int ncrtc = 0; +#ifdef USE_XRANDR_1_2 + if (using_xrandr_1_2) { + AutoScreenRes res(XRRGetScreenResources(x_display, RootWindow(x_display, 0))); + if (res.valid()) { + ncrtc = res->ncrtc; + } + } +#endif + if (ncrtc < 2) { + xin_screens = XineramaQueryScreens(x_display, num_xin_screens); + } + } + if (xin_screens && *num_xin_screens < 2) { + XFree(xin_screens); + return NULL; + } + return xin_screens; +} + +#endif + static MonitorsList monitors; static Monitor* primary_monitor = NULL; @@ -2324,6 +2446,15 @@ { int next_mon_id = 0; ASSERT(screens.empty()); + +#ifdef USE_XINERAMA_1_0 + int num_xin_screens; + XineramaScreenInfo* xin_screens = init_xinerama_screens(&num_xin_screens); + if (xin_screens) { + screens.push_back(new XineramaScreen(x_display, 0, next_mon_id, xin_screens, num_xin_screens)); + XFree(xin_screens); + } else +#endif #ifdef USE_XRANDR_1_2 if (using_xrandr_1_2) { for (int i = 0; i < ScreenCount(x_display); i++) { @@ -2944,6 +3075,20 @@ XRenderQueryVersion(x_display, &major, &minor) && (major > 0 || minor >= 5); } +static void init_xinerama() +{ +#ifdef USE_XINERAMA_1_0 + int event_base; + int error_base; + int major; + int minor; + + using_xinerama_1_0 = XineramaQueryExtension(x_display, &event_base, &error_base) && + XineramaQueryVersion(x_display, &major, &minor) && major >= 1 && minor >= 0 && + XineramaIsActive(x_display); +#endif +} + static void init_xfixes() { int major; @@ -3148,6 +3293,7 @@ init_xrender(); init_xfixes(); init_XIM(); + init_xinerama(); struct sigaction act; memset(&act, 0, sizeof(act)); diff -Nru spice-0.10.0/client/x11/platform_utils.h spice-0.10.1/client/x11/platform_utils.h --- spice-0.10.0/client/x11/platform_utils.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/x11/platform_utils.h 2012-01-18 10:19:15.000000000 +0000 @@ -36,4 +36,3 @@ #define sock_err_message(err) strerror(err) #endif - diff -Nru spice-0.10.0/client/x11/playback.cpp spice-0.10.1/client/x11/playback.cpp --- spice-0.10.0/client/x11/playback.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/x11/playback.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -218,4 +218,3 @@ } return delay / _sampels_per_ms; } - diff -Nru spice-0.10.0/client/x11/playback.h spice-0.10.1/client/x11/playback.h --- spice-0.10.0/client/x11/playback.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/x11/playback.h 2012-01-18 10:19:15.000000000 +0000 @@ -45,4 +45,3 @@ }; #endif - diff -Nru spice-0.10.0/client/x11/record.cpp spice-0.10.1/client/x11/record.cpp --- spice-0.10.0/client/x11/record.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/x11/record.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -238,4 +238,3 @@ } } } - diff -Nru spice-0.10.0/client/x11/record.h spice-0.10.1/client/x11/record.h --- spice-0.10.0/client/x11/record.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/x11/record.h 2012-01-18 10:19:15.000000000 +0000 @@ -57,4 +57,3 @@ }; #endif - diff -Nru spice-0.10.0/client/x11/red_drawable.cpp spice-0.10.1/client/x11/red_drawable.cpp --- spice-0.10.0/client/x11/red_drawable.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/x11/red_drawable.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -793,4 +793,3 @@ THROW("invalid dest type %d", dest->source.type); } } - diff -Nru spice-0.10.0/client/x11/red_pixmap.cpp spice-0.10.1/client/x11/red_pixmap.cpp --- spice-0.10.0/client/x11/red_pixmap.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/x11/red_pixmap.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -42,4 +42,3 @@ { return false; } - diff -Nru spice-0.10.0/client/x11/red_pixmap_gl.cpp spice-0.10.1/client/x11/red_pixmap_gl.cpp --- spice-0.10.0/client/x11/red_pixmap_gl.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/x11/red_pixmap_gl.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -309,4 +309,3 @@ */ GLC_ERROR_TEST_FINISH; } - diff -Nru spice-0.10.0/client/x11/red_pixmap_sw.cpp spice-0.10.1/client/x11/red_pixmap_sw.cpp --- spice-0.10.0/client/x11/red_pixmap_sw.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/x11/red_pixmap_sw.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -91,4 +91,3 @@ delete[] _data; } } - diff -Nru spice-0.10.0/client/x11/red_window.cpp spice-0.10.1/client/x11/red_window.cpp --- spice-0.10.0/client/x11/red_window.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/x11/red_window.cpp 2012-01-23 15:21:14.000000000 +0000 @@ -922,7 +922,7 @@ case ClientMessage: if (event.xclient.message_type == wm_protocol_atom) { ASSERT(event.xclient.format == 32); - if (event.xclient.data.l[0] == wm_delete_window_atom) { + if ((Atom)event.xclient.data.l[0] == wm_delete_window_atom) { DBG(0, "wm_delete_window"); Platform::send_quit_request(); } @@ -1867,7 +1867,7 @@ sync(true); } -void RedWindow::cupture_mouse() +void RedWindow::capture_mouse() { int grab_retries = MOUSE_GRAB_RETRIES; XLockDisplay(x_display); @@ -2218,8 +2218,9 @@ } } -void RedWindow::set_menu(Menu* menu) +int RedWindow::set_menu(Menu* menu) { + return 0; } void RedWindow::init() @@ -2253,4 +2254,3 @@ void RedWindow::cleanup() { } - diff -Nru spice-0.10.0/client/x11/red_window_p.h spice-0.10.1/client/x11/red_window_p.h --- spice-0.10.0/client/x11/red_window_p.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/x11/red_window_p.h 2012-01-18 10:19:15.000000000 +0000 @@ -87,4 +87,3 @@ }; #endif - diff -Nru spice-0.10.0/client/x11/res.cpp spice-0.10.1/client/x11/res.cpp --- spice-0.10.0/client/x11/res.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/x11/res.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -80,4 +80,3 @@ } return NULL; } - diff -Nru spice-0.10.0/client/x11/res.h spice-0.10.1/client/x11/res.h --- spice-0.10.0/client/x11/res.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/x11/res.h 2012-01-18 10:19:15.000000000 +0000 @@ -22,4 +22,3 @@ const IconHeader *res_get_icon(int id); #endif - diff -Nru spice-0.10.0/client/x11/resource.h spice-0.10.1/client/x11/resource.h --- spice-0.10.0/client/x11/resource.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/x11/resource.h 2012-01-18 10:19:15.000000000 +0000 @@ -22,4 +22,3 @@ #define ALT_IMAGE_RES_ID 4 #endif - diff -Nru spice-0.10.0/client/x11/x_icon.cpp spice-0.10.1/client/x11/x_icon.cpp --- spice-0.10.0/client/x11/x_icon.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/x11/x_icon.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -173,4 +173,3 @@ XIcon *xicon = new XIcon(id, icon); return xicon->ref(); } - diff -Nru spice-0.10.0/client/x11/x_icon.h spice-0.10.1/client/x11/x_icon.h --- spice-0.10.0/client/x11/x_icon.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/x11/x_icon.h 2012-01-18 10:19:15.000000000 +0000 @@ -50,4 +50,3 @@ }; #endif - diff -Nru spice-0.10.0/client/x11/x_platform.h spice-0.10.1/client/x11/x_platform.h --- spice-0.10.0/client/x11/x_platform.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/x11/x_platform.h 2012-01-18 10:19:15.000000000 +0000 @@ -42,16 +42,15 @@ static bool is_x_shm_avail(); static XImage *create_x_shm_image(RedDrawable::Format format, - int width, int height, int depth, - Visual *visual, - XShmSegmentInfo **shminfo_out); + int width, int height, int depth, + Visual *visual, + XShmSegmentInfo **shminfo_out); static XImage *create_x_image(RedDrawable::Format format, - int width, int height, int depth, - Visual *visual, - XShmSegmentInfo **shminfo_out); + int width, int height, int depth, + Visual *visual, + XShmSegmentInfo **shminfo_out); static void free_x_image(XImage *image, - XShmSegmentInfo *shminfo); + XShmSegmentInfo *shminfo); }; #endif - diff -Nru spice-0.10.0/client/zlib_decoder.cpp spice-0.10.1/client/zlib_decoder.cpp --- spice-0.10.0/client/zlib_decoder.cpp 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/client/zlib_decoder.cpp 2012-01-18 10:19:15.000000000 +0000 @@ -36,7 +36,7 @@ ZlibDecoder::ZlibDecoder() { int z_ret; - + _z_strm.zalloc = Z_NULL; _z_strm.zfree = Z_NULL; _z_strm.opaque = Z_NULL; @@ -71,7 +71,7 @@ _z_strm.avail_out = dest_size; z_ret = inflate(&_z_strm, Z_FINISH); - + if (z_ret != Z_STREAM_END) { THROW("zlib inflate failed, error %d", z_ret); } diff -Nru spice-0.10.0/common/backtrace.c spice-0.10.1/common/backtrace.c --- spice-0.10.0/common/backtrace.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/backtrace.c 2012-01-18 10:19:15.000000000 +0000 @@ -18,16 +18,20 @@ /* * Taken from xserver os/backtrace.c: - * Copyright 2008 Red Hat, Inc. + * Copyright (C) 2008 Red Hat, Inc. */ -#include "config.h" +#include #include #include #include #include +#include #include +#ifndef __MINGW32__ #include +#endif + #include "spice_common.h" #define GSTACK_PATH "/usr/bin/gstack" @@ -49,6 +53,10 @@ } #endif +/* XXX perhaps gstack can be available in windows but pipe/waitpid isn't, + * so until it is ported properly just compile it out, we lose the + * backtrace only. */ +#ifndef __MINGW32__ static int spice_backtrace_gstack(void) { pid_t kidpid; @@ -104,11 +112,22 @@ } return 0; } +#else +static int spice_backtrace_gstack(void) +{ + /* empty failing implementation */ + return -1; +} +#endif + +void spice_backtrace(void) +{ + int ret = -1; -void spice_backtrace() { if (!access(GSTACK_PATH, X_OK)) { - spice_backtrace_gstack(); - } else { + ret = spice_backtrace_gstack(); + } + if (ret != 0) { spice_backtrace_backtrace(); } } diff -Nru spice-0.10.0/common/backtrace.h spice-0.10.1/common/backtrace.h --- spice-0.10.0/common/backtrace.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/backtrace.h 2012-01-18 10:19:15.000000000 +0000 @@ -23,7 +23,7 @@ SPICE_BEGIN_DECLS -#ifdef WIN32 +#if defined(WIN32) && !defined(__MINGW32__) #define spice_backtrace() #else void spice_backtrace(void); diff -Nru spice-0.10.0/common/bitops.h spice-0.10.1/common/bitops.h --- spice-0.10.0/common/bitops.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/bitops.h 2012-01-18 10:19:15.000000000 +0000 @@ -27,7 +27,20 @@ extern "C" { #endif -#if defined(WIN32) && !defined(_WIN64) +#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) +static inline int spice_bit_find_msb(unsigned int val) +{ + int ret; + + asm ("bsrl %1,%0\n\t" + "jnz 1f\n\t" + "movl $-1,%0\n" + "1:" + : "=r"(ret) : "r"(val)); + return ret + 1; +} + +#elif defined(WIN32) && !defined(_WIN64) static INLINE int spice_bit_find_msb(uint32_t val) { uint32_t r; @@ -42,19 +55,6 @@ return r + 1; } -#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) -static inline int spice_bit_find_msb(unsigned int val) -{ - int ret; - - asm ("bsrl %1,%0\n\t" - "jnz 1f\n\t" - "movl $-1,%0\n" - "1:" - : "=r"(ret) : "r"(val)); - return ret + 1; -} - #else static INLINE int spice_bit_find_msb(unsigned int val) { diff -Nru spice-0.10.0/common/canvas_base.c spice-0.10.1/common/canvas_base.c --- spice-0.10.0/common/canvas_base.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/canvas_base.c 2012-01-18 10:19:15.000000000 +0000 @@ -619,7 +619,7 @@ decomp_alpha_buf = dest; } lz_decode(lz_data->lz, LZ_IMAGE_TYPE_XXXA, decomp_alpha_buf); - + if (invers) { uint8_t *end = dest + height * stride; for (; dest != end; dest += stride) { @@ -749,9 +749,7 @@ int free_palette; if (setjmp(lz_data->jmp_env)) { - if (decomp_buf) { - free(decomp_buf); - } + free(decomp_buf); CANVAS_ERROR("lz error, %s", lz_data->message_buf); } @@ -3134,9 +3132,7 @@ stroke_lines_draw(&lines, (lineGC *)&gc, dashed); - if (gc.base.dash) { - free(gc.base.dash); - } + free(gc.base.dash); stroke_lines_free(&lines); if (!gc.solid && gc.tile && !surface_canvas) { diff -Nru spice-0.10.0/common/canvas_base.h spice-0.10.1/common/canvas_base.h --- spice-0.10.0/common/canvas_base.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/canvas_base.h 2012-01-18 10:19:15.000000000 +0000 @@ -69,7 +69,7 @@ typedef struct { SpiceCanvas *(*get)(SpiceImageSurfaces *surfaces, - uint32_t surface_id); + uint32_t surface_id); } SpiceImageSurfacesOps; struct _SpiceImageSurfaces { @@ -177,10 +177,10 @@ pixman_image_t *tile, int offset_x, int offset_y); void (*fill_tiled_rects_from_surface)(SpiceCanvas *canvas, - pixman_box32_t *rects, - int n_rects, - SpiceCanvas *tile, - int offset_x, int offset_y); + pixman_box32_t *rects, + int n_rects, + SpiceCanvas *tile, + int offset_x, int offset_y); void (*fill_tiled_rects_rop)(SpiceCanvas *canvas, pixman_box32_t *rects, int n_rects, @@ -188,29 +188,29 @@ int offset_x, int offset_y, SpiceROP rop); void (*fill_tiled_rects_rop_from_surface)(SpiceCanvas *canvas, - pixman_box32_t *rects, - int n_rects, - SpiceCanvas *tile, - int offset_x, int offset_y, - SpiceROP rop); + pixman_box32_t *rects, + int n_rects, + SpiceCanvas *tile, + int offset_x, int offset_y, + SpiceROP rop); void (*blit_image)(SpiceCanvas *canvas, pixman_region32_t *region, pixman_image_t *src_image, int offset_x, int offset_y); void (*blit_image_from_surface)(SpiceCanvas *canvas, - pixman_region32_t *region, - SpiceCanvas *src_image, - int offset_x, int offset_y); + pixman_region32_t *region, + SpiceCanvas *src_image, + int offset_x, int offset_y); void (*blit_image_rop)(SpiceCanvas *canvas, pixman_region32_t *region, pixman_image_t *src_image, int offset_x, int offset_y, SpiceROP rop); void (*blit_image_rop_from_surface)(SpiceCanvas *canvas, - pixman_region32_t *region, - SpiceCanvas *src_image, - int offset_x, int offset_y, - SpiceROP rop); + pixman_region32_t *region, + SpiceCanvas *src_image, + int offset_x, int offset_y, + SpiceROP rop); void (*scale_image)(SpiceCanvas *canvas, pixman_region32_t *region, pixman_image_t *src_image, @@ -220,13 +220,13 @@ int dest_width, int dest_height, int scale_mode); void (*scale_image_from_surface)(SpiceCanvas *canvas, - pixman_region32_t *region, - SpiceCanvas *src_image, - int src_x, int src_y, - int src_width, int src_height, - int dest_x, int dest_y, - int dest_width, int dest_height, - int scale_mode); + pixman_region32_t *region, + SpiceCanvas *src_image, + int src_x, int src_y, + int src_width, int src_height, + int dest_x, int dest_y, + int dest_width, int dest_height, + int scale_mode); void (*scale_image_rop)(SpiceCanvas *canvas, pixman_region32_t *region, pixman_image_t *src_image, @@ -236,13 +236,13 @@ int dest_width, int dest_height, int scale_mode, SpiceROP rop); void (*scale_image_rop_from_surface)(SpiceCanvas *canvas, - pixman_region32_t *region, - SpiceCanvas *src_image, - int src_x, int src_y, - int src_width, int src_height, - int dest_x, int dest_y, - int dest_width, int dest_height, - int scale_mode, SpiceROP rop); + pixman_region32_t *region, + SpiceCanvas *src_image, + int src_x, int src_y, + int src_width, int src_height, + int dest_x, int dest_y, + int dest_width, int dest_height, + int scale_mode, SpiceROP rop); void (*blend_image)(SpiceCanvas *canvas, pixman_region32_t *region, int dest_has_alpha, @@ -252,14 +252,14 @@ int width, int height, int overall_alpha); void (*blend_image_from_surface)(SpiceCanvas *canvas, - pixman_region32_t *region, + pixman_region32_t *region, int dest_has_alpha, - SpiceCanvas *src_image, + SpiceCanvas *src_image, int src_has_alpha, - int src_x, int src_y, - int dest_x, int dest_y, - int width, int height, - int overall_alpha); + int src_x, int src_y, + int dest_x, int dest_y, + int width, int height, + int overall_alpha); void (*blend_scale_image)(SpiceCanvas *canvas, pixman_region32_t *region, int dest_has_alpha, @@ -271,26 +271,26 @@ int scale_mode, int overall_alpha); void (*blend_scale_image_from_surface)(SpiceCanvas *canvas, - pixman_region32_t *region, + pixman_region32_t *region, int dest_has_alpha, - SpiceCanvas *src_image, + SpiceCanvas *src_image, int src_has_alpha, - int src_x, int src_y, - int src_width, int src_height, - int dest_x, int dest_y, - int dest_width, int dest_height, - int scale_mode, - int overall_alpha); + int src_x, int src_y, + int src_width, int src_height, + int dest_x, int dest_y, + int dest_width, int dest_height, + int scale_mode, + int overall_alpha); void (*colorkey_image)(SpiceCanvas *canvas, pixman_region32_t *region, pixman_image_t *src_image, int offset_x, int offset_y, uint32_t transparent_color); void (*colorkey_image_from_surface)(SpiceCanvas *canvas, - pixman_region32_t *region, - SpiceCanvas *src_image, - int offset_x, int offset_y, - uint32_t transparent_color); + pixman_region32_t *region, + SpiceCanvas *src_image, + int offset_x, int offset_y, + uint32_t transparent_color); void (*colorkey_scale_image)(SpiceCanvas *canvas, pixman_region32_t *region, pixman_image_t *src_image, @@ -300,13 +300,13 @@ int dest_width, int dest_height, uint32_t transparent_color); void (*colorkey_scale_image_from_surface)(SpiceCanvas *canvas, - pixman_region32_t *region, - SpiceCanvas *src_image, - int src_x, int src_y, - int src_width, int src_height, - int dest_x, int dest_y, - int dest_width, int dest_height, - uint32_t transparent_color); + pixman_region32_t *region, + SpiceCanvas *src_image, + int src_x, int src_y, + int src_width, int src_height, + int dest_x, int dest_y, + int dest_width, int dest_height, + uint32_t transparent_color); void (*copy_region)(SpiceCanvas *canvas, pixman_region32_t *dest_region, int dx, int dy); diff -Nru spice-0.10.0/common/canvas_utils.c spice-0.10.1/common/canvas_utils.c --- spice-0.10.0/common/canvas_utils.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/canvas_utils.c 2012-01-18 10:19:15.000000000 +0000 @@ -51,9 +51,7 @@ gdi_handlers--; } #endif - if (data->data) { - free(data->data); - } + free(data->data); free(data); } @@ -299,4 +297,3 @@ canvas_data->out_surface = surface; return surface; } - diff -Nru spice-0.10.0/common/gdi_canvas.c spice-0.10.1/common/gdi_canvas.c --- spice-0.10.0/common/gdi_canvas.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/gdi_canvas.c 2012-01-18 10:19:15.000000000 +0000 @@ -16,6 +16,9 @@ License along with this library; if not, see . */ #ifdef HAVE_CONFIG_H +#ifdef __MINGW32__ +#undef HAVE_STDLIB_H +#endif #include #endif @@ -458,9 +461,6 @@ uint8_t i_offset; int i_count = 0; int i = 0; - int width_div_stride; - - width_div_stride = width / src_stride; if (alpha_bits_size == 1) { i_offset = 1; @@ -580,15 +580,15 @@ } static uint8_t *create_bitmap_from_pixman(HBITMAP *bitmap, HBITMAP *prev_bitmap, HDC *dc, - pixman_image_t *surface, int rotate) + pixman_image_t *surface, int rotate) { return create_bitmap(bitmap, prev_bitmap, dc, (uint8_t*)pixman_image_get_data(surface), - pixman_image_get_width(surface), - pixman_image_get_height(surface), - pixman_image_get_stride(surface), - spice_pixman_image_get_bpp(surface), - rotate); + pixman_image_get_width(surface), + pixman_image_get_height(surface), + pixman_image_get_stride(surface), + spice_pixman_image_get_bpp(surface), + rotate); } @@ -641,7 +641,7 @@ CANVAS_ERROR("CreateSolidBrush failed"); } return hbrush; - case SPICE_BRUSH_TYPE_PATTERN: { + case SPICE_BRUSH_TYPE_PATTERN: { GdiCanvas *gdi_surface = NULL; HBRUSH hbrush; pixman_image_t *surface = NULL; @@ -798,23 +798,23 @@ gdi_surface = (GdiCanvas *)canvas_get_surface_mask(&canvas->base, mask->bitmap); if (gdi_surface) { - HBITMAP _bitmap; + HBITMAP _bitmap; - _bitmap = (HBITMAP)GetCurrentObject(gdi_surface->dc, OBJ_BITMAP); - if (!_bitmap) { - CANVAS_ERROR ("GetCurrentObject failed"); - } - bitmap.dc = gdi_surface->dc; - bitmap.hbitmap = _bitmap; - bitmap.prev_hbitmap = (HBITMAP)0; - bitmap.cache = 0; - bitmap.from_surface = 1; + _bitmap = (HBITMAP)GetCurrentObject(gdi_surface->dc, OBJ_BITMAP); + if (!_bitmap) { + CANVAS_ERROR ("GetCurrentObject failed"); + } + bitmap.dc = gdi_surface->dc; + bitmap.hbitmap = _bitmap; + bitmap.prev_hbitmap = (HBITMAP)0; + bitmap.cache = 0; + bitmap.from_surface = 1; } else { - + if (!(surface = canvas_get_mask(&canvas->base, mask, NULL))) { return bitmap; } - + pixman_data = (PixmanData *)pixman_image_get_destroy_data (surface); if (pixman_data && (WaitForSingleObject(pixman_data->mutex, INFINITE) != WAIT_FAILED)) { bitmap.dc = create_compatible_dc(); @@ -1060,16 +1060,16 @@ } else { surface = canvas_get_image(&canvas->base, copy->src_bitmap, FALSE); pixman_data = (PixmanData *)pixman_image_get_destroy_data(surface); - + RecurciveLock lock(*canvas->lock); bitmapmask = get_mask_bitmap(canvas, ©->mask); set_scale_mode(canvas, copy->scale_mode); set_clip(canvas, clip); - + if (pixman_data && (WaitForSingleObject(pixman_data->mutex, INFINITE) != WAIT_FAILED)) { HDC dc; HBITMAP prev_bitmap; - + dc = create_compatible_dc(); prev_bitmap = (HBITMAP)SelectObject(dc, pixman_data->bitmap); gdi_draw_bitmap_redrop(canvas->dc, ©->src_area, bbox, dc, @@ -1083,7 +1083,6 @@ } pixman_image_unref(surface); - } free_mask(&bitmapmask); } @@ -1149,10 +1148,10 @@ gdi_draw_bitmap_redrop(canvas->dc, &src, dest, dc, NULL, SPICE_ROPD_OP_PUT, 0); } else { - pixman_image_t *image = pixman_image_create_bits(PIXMAN_a8r8g8b8, src_width, src_height, - (uint32_t *)src_data, src_stride); + pixman_image_t *image = pixman_image_create_bits(PIXMAN_a8r8g8b8, src_width, src_height, + (uint32_t *)src_data, src_stride); gdi_draw_image(canvas->dc, &src, dest, image, NULL, SPICE_ROPD_OP_PUT, 0); - pixman_image_unref(image); + pixman_image_unref(image); } } @@ -1166,7 +1165,7 @@ } static void gdi_draw_image_transparent(GdiCanvas *canvas, HDC dest_dc, const SpiceRect *src, - const SpiceRect *dest, pixman_image_t *image, + const SpiceRect *dest, pixman_image_t *image, uint32_t color, int rotate) { HDC dc; @@ -1203,12 +1202,12 @@ if (pixman_data && (WaitForSingleObject(pixman_data->mutex, INFINITE) != WAIT_FAILED)) { HDC dc; HBITMAP prev_bitmap; - + dc = create_compatible_dc(); prev_bitmap = (HBITMAP)SelectObject(dc, pixman_data->bitmap); gdi_draw_bitmap_transparent(canvas, canvas->dc, &transparent->src_area, bbox, dc, transparent->true_color); - + SelectObject(dc, prev_bitmap); DeleteObject(dc); ReleaseMutex(pixman_data->mutex); @@ -1216,7 +1215,7 @@ gdi_draw_image_transparent(canvas, canvas->dc, &transparent->src_area, bbox, surface, transparent->true_color, 0); } - + pixman_image_unref(surface); } } @@ -1244,7 +1243,7 @@ } static void gdi_draw_image_alpha(HDC dest_dc, const SpiceRect *src, const SpiceRect *dest, - pixman_image_t *image, uint8_t alpha, + pixman_image_t *image, uint8_t alpha, int rotate, int use_bitmap_alpha) { HDC dc; @@ -1278,13 +1277,13 @@ surface = canvas_get_image(&canvas->base, alpha_blend->src_bitmap, TRUE); use_bitmap_alpha = pixman_image_get_depth(surface) == 32; pixman_data = (PixmanData *)pixman_image_get_destroy_data(surface); - + RecurciveLock lock(*canvas->lock); set_clip(canvas, clip); if (pixman_data && (WaitForSingleObject(pixman_data->mutex, INFINITE) != WAIT_FAILED)) { HDC dc; HBITMAP prev_bitmap; - + dc = create_compatible_dc(); prev_bitmap = (HBITMAP)SelectObject(dc, pixman_data->bitmap); gdi_draw_bitmap_alpha(canvas->dc, &alpha_blend->src_area, bbox, dc, alpha_blend->alpha, @@ -1296,7 +1295,7 @@ gdi_draw_image_alpha(canvas->dc, &alpha_blend->src_area, bbox, surface, alpha_blend->alpha, 0, use_bitmap_alpha); } - + pixman_image_unref(surface); } } @@ -1334,18 +1333,18 @@ } else { surface = canvas_get_image(&canvas->base, opaque->src_bitmap, FALSE); pixman_data = (PixmanData *)pixman_image_get_destroy_data(surface); - + RecurciveLock lock(*canvas->lock); bitmapmask = get_mask_bitmap(canvas, &opaque->mask); hbrush = get_brush(canvas, &opaque->brush, &brush_lock); set_scale_mode(canvas, opaque->scale_mode); set_clip(canvas, clip); prev_hbrush = set_brush(canvas->dc, hbrush, &opaque->brush); - + if (pixman_data && (WaitForSingleObject(pixman_data->mutex, INFINITE) != WAIT_FAILED)) { HDC dc; HBITMAP prev_bitmap; - + dc = create_compatible_dc(); prev_bitmap = (HBITMAP)SelectObject(dc, pixman_data->bitmap); if (brush_lock) { @@ -1392,16 +1391,16 @@ } else { surface = canvas_get_image(&canvas->base, blend->src_bitmap, FALSE); pixman_data = (PixmanData *)pixman_image_get_destroy_data(surface); - + RecurciveLock lock(*canvas->lock); bitmapmask = get_mask_bitmap(canvas, &blend->mask); set_scale_mode(canvas, blend->scale_mode); set_clip(canvas, clip); - + if (pixman_data && (WaitForSingleObject(pixman_data->mutex, INFINITE) != WAIT_FAILED)) { HDC dc; HBITMAP prev_bitmap; - + dc = create_compatible_dc(); prev_bitmap = (HBITMAP)SelectObject(dc, pixman_data->bitmap); gdi_draw_bitmap_redrop(canvas->dc, &blend->src_area, bbox, dc, @@ -1411,7 +1410,7 @@ ReleaseMutex(pixman_data->mutex); } else { gdi_draw_image(canvas->dc, &blend->src_area, bbox, surface, - &bitmapmask, blend->rop_descriptor, 0); + &bitmapmask, blend->rop_descriptor, 0); } pixman_image_unref(surface); @@ -1497,11 +1496,11 @@ set_scale_mode(canvas, rop3->scale_mode); set_clip(canvas, clip); prev_hbrush = set_brush(canvas->dc, hbrush, &rop3->brush); - + if (pixman_data && (WaitForSingleObject(pixman_data->mutex, INFINITE) != WAIT_FAILED)) { HDC dc; HBITMAP prev_bitmap; - + dc = create_compatible_dc(); prev_bitmap = (HBITMAP)SelectObject(dc, pixman_data->bitmap); if (brush_lock) { @@ -1599,7 +1598,6 @@ static uint32_t *gdi_get_userstyle(GdiCanvas *canvas, uint8_t nseg, SPICE_FIXED28_4* style, int start_is_gap) { - double offset = 0; uint32_t *local_style; int i; @@ -1609,7 +1607,6 @@ local_style = spice_new(uint32_t , nseg); if (start_is_gap) { - offset = (uint32_t)fix_to_double(*style); local_style[nseg - 1] = (uint32_t)fix_to_double(*style); style++; @@ -1775,9 +1772,7 @@ } #endif - if (user_style) { - free(user_style); - } + free(user_style); } static void gdi_canvas_clear(SpiceCanvas *spice_canvas) @@ -1812,24 +1807,23 @@ ) { GdiCanvas *canvas; - int init_ok; if (need_init) { return NULL; } canvas = spice_new0(GdiCanvas, 1); - init_ok = canvas_base_init(&canvas->base, &gdi_canvas_ops, - width, height, format + canvas_base_init(&canvas->base, &gdi_canvas_ops, + width, height, format, #ifdef SW_CANVAS_CACHE - ,bits_cache - ,palette_cache + bits_cache, + palette_cache, #elif defined(SW_CANVAS_IMAGE_CACHE) - , bits_cache + bits_cache, #endif - , surfaces - , glz_decoder - , jpeg_decoder - , zlib_decoder); + surfaces, + glz_decoder, + jpeg_decoder, + zlib_decoder); canvas->dc = dc; canvas->lock = lock; return (SpiceCanvas *)canvas; @@ -1862,4 +1856,3 @@ rop3_init(); } - diff -Nru spice-0.10.0/common/gdi_canvas.h spice-0.10.1/common/gdi_canvas.h --- spice-0.10.0/common/gdi_canvas.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/gdi_canvas.h 2012-01-18 10:19:15.000000000 +0000 @@ -37,7 +37,7 @@ HDC dc, class RecurciveMutex *lock, uint32_t format, SpiceImageCache *bits_cache, SpicePaletteCache *palette_cache, - SpiceImageSurfaces *surfaces, + SpiceImageSurfaces *surfaces, SpiceGlzDecoder *glz_decoder, SpiceJpegDecoder *jpeg_decoder, SpiceZlibDecoder *zlib_decoder); diff -Nru spice-0.10.0/common/gl_canvas.c spice-0.10.1/common/gl_canvas.c --- spice-0.10.0/common/gl_canvas.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/gl_canvas.c 2012-01-18 10:19:15.000000000 +0000 @@ -870,9 +870,7 @@ } canvas_base_destroy(&canvas->base); glc_destroy(canvas->glc, canvas->textures_lost); - if (canvas->private_data) { - free(canvas->private_data); - } + free(canvas->private_data); free(canvas); } diff -Nru spice-0.10.0/common/gl_canvas.h spice-0.10.1/common/gl_canvas.h --- spice-0.10.0/common/gl_canvas.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/gl_canvas.h 2012-01-18 10:19:15.000000000 +0000 @@ -38,7 +38,7 @@ #elif defined(SW_CANVAS_IMAGE_CACHE) , SpiceImageCache *bits_cache #endif - , SpiceImageSurfaces *surfaces + , SpiceImageSurfaces *surfaces , SpiceGlzDecoder *glz_decoder , SpiceJpegDecoder *jpeg_decoder , SpiceZlibDecoder *zlib_decoder diff -Nru spice-0.10.0/common/glc.c spice-0.10.1/common/glc.c --- spice-0.10.0/common/glc.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/glc.c 2012-01-18 10:19:15.000000000 +0000 @@ -1511,4 +1511,3 @@ 8. support more image formats 9. use GLCImage in mask ops? */ - diff -Nru spice-0.10.0/common/lines.c spice-0.10.1/common/lines.c --- spice-0.10.0/common/lines.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/lines.c 2012-01-18 10:19:15.000000000 +0000 @@ -509,17 +509,15 @@ int *newwid; #define EXTRA 8 - newPt = - (DDXPointPtr) xrealloc (spans->points, - (spans->count + - EXTRA) * sizeof (DDXPointRec)); + newPt = xrealloc (spans->points, + (spans->count + + EXTRA) * sizeof (DDXPointRec)); if (!newPt) break; spansPt = newPt + (spansPt - spans->points); spans->points = newPt; - newwid = - (int *) xrealloc (spans->widths, - (spans->count + EXTRA) * sizeof (int)); + newwid = xrealloc (spans->widths, + (spans->count + EXTRA) * sizeof (int)); if (!newwid) break; spansWid = newwid + (spansWid - spans->widths); @@ -556,7 +554,7 @@ if (spansCount > 0) { if (spanGroup->size == spanGroup->count) { spanGroup->size = (spanGroup->size + 8) * 2; - spanGroup->group = (Spans *) + spanGroup->group = xrealloc (spanGroup->group, sizeof (Spans) * spanGroup->size); } @@ -580,8 +578,7 @@ static void miFreeSpanGroup (SpanGroup * spanGroup) { - if (spanGroup->group != NULL) - xfree (spanGroup->group); + xfree (spanGroup->group); } static void @@ -776,10 +773,8 @@ ysizes = (int *)xalloc (ylength * sizeof (int)); if (!yspans || !ysizes) { - if (yspans) - xfree (yspans); - if (ysizes) - xfree (ysizes); + xfree (yspans); + xfree (ysizes); miDisposeSpanGroup (spanGroup); return; } @@ -806,10 +801,10 @@ DDXPointPtr newpoints; int *newwidths; ysizes[index] = (ysizes[index] + 8) * 2; - newpoints = (DDXPointPtr) xrealloc (newspans->points, - ysizes[index] * sizeof (DDXPointRec)); - newwidths = (int *) xrealloc (newspans->widths, - ysizes[index] * sizeof (int)); + newpoints = xrealloc (newspans->points, + ysizes[index] * sizeof (DDXPointRec)); + newwidths = xrealloc (newspans->widths, + ysizes[index] * sizeof (int)); if (!newpoints || !newwidths) { int i; @@ -849,10 +844,8 @@ } xfree (yspans); xfree (ysizes); - if (points) - xfree (points); - if (widths) - xfree (widths); + xfree (points); + xfree (widths); return; } count = 0; diff -Nru spice-0.10.0/common/lz.c spice-0.10.1/common/lz.c --- spice-0.10.0/common/lz.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/lz.c 2012-01-18 10:19:15.000000000 +0000 @@ -1,7 +1,7 @@ /* -*- Mode: C; c-basic-offset: 4; indent-tabs-mode: nil -*- */ /* - Copyright 2009 Red Hat, Inc. and/or its affiliates. + Copyright (C) 2009 Red Hat, Inc. and/or its affiliates. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -439,7 +439,7 @@ #define COMP_LEVEL_SIZE_LIMIT 65536 // TODO: implemented lz2. should lz1 be an option (no RLE + distance limitation of MAX_DISTANCE) -// TODO: I think MAX_FARDISTANCE can be changed easily to 2^29 +// TODO: I think MAX_FARDISTANCE can be changed easily to 2^29 // (and maybe even more when pixel > byte). // i.e. we can support 512M Bytes/Pixels distance instead of only ~68K. #define MAX_DISTANCE 8191 // 2^13 @@ -738,4 +738,3 @@ encoder->usr->error(encoder->usr, "bad decode size\n"); } } - diff -Nru spice-0.10.0/common/lz_compress_tmpl.c spice-0.10.1/common/lz_compress_tmpl.c --- spice-0.10.0/common/lz_compress_tmpl.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/lz_compress_tmpl.c 2012-01-18 10:19:15.000000000 +0000 @@ -1,7 +1,7 @@ /* -*- Mode: C; c-basic-offset: 4; indent-tabs-mode: nil -*- */ /* - Copyright 2009 Red Hat, Inc. and/or its affiliates. + Copyright (C) 2009 Red Hat, Inc. and/or its affiliates. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -296,7 +296,7 @@ PIXEL x = *ref; while ((ip < ip_bound) && (ref < ref_limit)) { // TODO: maybe separate a run from // the same seg or from different - // ones in order to spare + // ones in order to spare // ref < ref_limit if (!SAME_PIXEL(*ref, x)) { ref++; diff -Nru spice-0.10.0/common/lz_decompress_tmpl.c spice-0.10.1/common/lz_decompress_tmpl.c --- spice-0.10.0/common/lz_decompress_tmpl.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/lz_decompress_tmpl.c 2012-01-18 10:19:15.000000000 +0000 @@ -1,7 +1,7 @@ /* -*- Mode: C; c-basic-offset: 4; indent-tabs-mode: nil -*- */ /* - Copyright 2009 Red Hat, Inc. and/or its affiliates. + Copyright (C) 2009 Red Hat, Inc. and/or its affiliates. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -170,7 +170,7 @@ out->b = (out->b << 3) | ((out->b >> 2) & 0x07); \ out->pad = 0; \ out++; \ -} +} #endif #endif @@ -324,4 +324,3 @@ #undef COPY_COMP_PIXEL #undef COPY_PLT_ENTRY #undef CAST_PLT_DISTANCE - diff -Nru spice-0.10.0/common/Makefile.am spice-0.10.1/common/Makefile.am --- spice-0.10.0/common/Makefile.am 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/Makefile.am 2012-01-18 10:19:15.000000000 +0000 @@ -74,4 +74,3 @@ quic_rgb_tmpl.c \ quic_tmpl.c \ $(NULL) - diff -Nru spice-0.10.0/common/Makefile.in spice-0.10.1/common/Makefile.in --- spice-0.10.0/common/Makefile.in 2011-11-10 15:02:16.000000000 +0000 +++ spice-0.10.1/common/Makefile.in 2012-01-23 15:23:22.000000000 +0000 @@ -253,6 +253,8 @@ WINDRES = @WINDRES@ XFIXES_CFLAGS = @XFIXES_CFLAGS@ XFIXES_LIBS = @XFIXES_LIBS@ +XINERAMA_CFLAGS = @XINERAMA_CFLAGS@ +XINERAMA_LIBS = @XINERAMA_LIBS@ XRANDR12_CFLAGS = @XRANDR12_CFLAGS@ XRANDR12_LIBS = @XRANDR12_LIBS@ XRANDR_CFLAGS = @XRANDR_CFLAGS@ diff -Nru spice-0.10.0/common/mem.c spice-0.10.1/common/mem.c --- spice-0.10.0/common/mem.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/mem.c 2012-01-18 10:19:15.000000000 +0000 @@ -130,9 +130,7 @@ (unsigned long)n_bytes); } - if (mem) { - free(mem); - } + free(mem); return NULL; } diff -Nru spice-0.10.0/common/ogl_ctx.c spice-0.10.1/common/ogl_ctx.c --- spice-0.10.0/common/ogl_ctx.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/ogl_ctx.c 2012-01-18 10:19:15.000000000 +0000 @@ -249,4 +249,3 @@ XCloseDisplay(ctx->x_display); free(ctx); } - diff -Nru spice-0.10.0/common/ogl_ctx.h spice-0.10.1/common/ogl_ctx.h --- spice-0.10.0/common/ogl_ctx.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/ogl_ctx.h 2012-01-18 10:19:15.000000000 +0000 @@ -36,4 +36,3 @@ #endif #endif - diff -Nru spice-0.10.0/common/pixman_utils.c spice-0.10.1/common/pixman_utils.c --- spice-0.10.0/common/pixman_utils.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/pixman_utils.c 2012-01-18 10:19:15.000000000 +0000 @@ -928,7 +928,7 @@ abort(); break; } - return (pixman_format_code_t)0; /* Not reached */ + return (pixman_format_code_t)0; /* Not reached */ } /* Returns the "spice native" pixman version of a specific bitmap format. diff -Nru spice-0.10.0/common/quic.c spice-0.10.1/common/quic.c --- spice-0.10.0/common/quic.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/quic.c 2012-01-18 10:19:15.000000000 +0000 @@ -1515,7 +1515,7 @@ encoder->width); \ encoder->rows_completed++; \ } - + int quic_decode(QuicContext *quic, QuicImageType type, uint8_t *buf, int stride) { Encoder *encoder = (Encoder *)quic; @@ -1697,4 +1697,3 @@ init_zeroLUT(); #endif } - diff -Nru spice-0.10.0/common/quic_config.h spice-0.10.1/common/quic_config.h --- spice-0.10.0/common/quic_config.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/quic_config.h 2012-01-18 10:19:15.000000000 +0000 @@ -46,4 +46,3 @@ #endif #endif - diff -Nru spice-0.10.0/common/quic_family_tmpl.c spice-0.10.1/common/quic_family_tmpl.c --- spice-0.10.0/common/quic_family_tmpl.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/quic_family_tmpl.c 2012-01-18 10:19:15.000000000 +0000 @@ -115,4 +115,3 @@ #undef FNAME #undef VNAME #undef BPC - diff -Nru spice-0.10.0/common/quic.h spice-0.10.1/common/quic.h --- spice-0.10.0/common/quic.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/quic.h 2012-01-18 10:19:15.000000000 +0000 @@ -70,4 +70,3 @@ #endif #endif - diff -Nru spice-0.10.0/common/quic_rgb_tmpl.c spice-0.10.1/common/quic_rgb_tmpl.c --- spice-0.10.0/common/quic_rgb_tmpl.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/quic_rgb_tmpl.c 2012-01-18 10:19:15.000000000 +0000 @@ -763,4 +763,3 @@ #undef SET_b #undef GET_b #undef UNCOMPRESS_PIX_START - diff -Nru spice-0.10.0/common/quic_tmpl.c spice-0.10.1/common/quic_tmpl.c --- spice-0.10.0/common/quic_tmpl.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/quic_tmpl.c 2012-01-18 10:19:15.000000000 +0000 @@ -633,4 +633,3 @@ #undef family #undef BPC #undef BPC_MASK - diff -Nru spice-0.10.0/common/rect.h spice-0.10.1/common/rect.h --- spice-0.10.0/common/rect.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/rect.h 2012-01-18 10:19:15.000000000 +0000 @@ -120,4 +120,3 @@ #endif #endif - diff -Nru spice-0.10.0/common/region.c spice-0.10.1/common/region.c --- spice-0.10.0/common/region.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/region.c 2012-01-18 10:19:15.000000000 +0000 @@ -888,4 +888,3 @@ } #endif - diff -Nru spice-0.10.0/common/region.h spice-0.10.1/common/region.h --- spice-0.10.0/common/region.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/region.h 2012-01-18 10:19:15.000000000 +0000 @@ -68,4 +68,3 @@ #endif #endif - diff -Nru spice-0.10.0/common/ring.h spice-0.10.1/common/ring.h --- spice-0.10.0/common/ring.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/ring.h 2012-01-18 10:19:15.000000000 +0000 @@ -170,4 +170,3 @@ #endif #endif - diff -Nru spice-0.10.0/common/rop3.h spice-0.10.1/common/rop3.h --- spice-0.10.0/common/rop3.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/rop3.h 2012-01-18 10:19:15.000000000 +0000 @@ -40,4 +40,3 @@ #endif #endif - diff -Nru spice-0.10.0/common/ssl_verify.h spice-0.10.1/common/ssl_verify.h --- spice-0.10.0/common/ssl_verify.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/ssl_verify.h 2012-01-18 10:19:15.000000000 +0000 @@ -19,7 +19,7 @@ #ifndef SSL_VERIFY_H #define SSL_VERIFY_H -#ifdef WIN32 +#if defined(WIN32) && !defined(__MINGW32__) #include #include #endif diff -Nru spice-0.10.0/common/sw_canvas.c spice-0.10.1/common/sw_canvas.c --- spice-0.10.0/common/sw_canvas.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/sw_canvas.c 2012-01-18 10:19:15.000000000 +0000 @@ -16,6 +16,9 @@ License along with this library; if not, see . */ #ifdef HAVE_CONFIG_H +#ifdef __MINGW32__ +#undef HAVE_STDLIB_H +#endif #include #endif @@ -469,8 +472,8 @@ pixman_transform_init_scale(&transform, fsx, fsy); pixman_transform_translate(&transform, NULL, - pixman_int_to_fixed (src_x), - pixman_int_to_fixed (src_y)); + pixman_int_to_fixed (src_x), + pixman_int_to_fixed (src_y)); pixman_image_set_transform(src, &transform); pixman_image_set_repeat(src, PIXMAN_REPEAT_NONE); @@ -550,8 +553,8 @@ pixman_transform_init_scale(&transform, fsx, fsy); pixman_transform_translate(&transform, NULL, - pixman_int_to_fixed (src_x), - pixman_int_to_fixed (src_y)); + pixman_int_to_fixed (src_x), + pixman_int_to_fixed (src_y)); pixman_image_set_transform(src, &transform); pixman_image_set_repeat(src, PIXMAN_REPEAT_NONE); @@ -744,8 +747,8 @@ pixman_transform_init_scale(&transform, fsx, fsy); pixman_transform_translate(&transform, NULL, - pixman_int_to_fixed (src_x), - pixman_int_to_fixed (src_y)); + pixman_int_to_fixed (src_x), + pixman_int_to_fixed (src_y)); mask = NULL; if (overall_alpha != 0xff) { @@ -906,8 +909,8 @@ pixman_transform_init_scale(&transform, fsx, fsy); pixman_transform_translate(&transform, NULL, - pixman_int_to_fixed (src_x), - pixman_int_to_fixed (src_y)); + pixman_int_to_fixed (src_x), + pixman_int_to_fixed (src_y)); pixman_image_set_transform(src, &transform); pixman_image_set_repeat(src, PIXMAN_REPEAT_NONE); @@ -1163,9 +1166,7 @@ } pixman_image_unref(canvas->image); canvas_base_destroy(&canvas->base); - if (canvas->private_data) { - free(canvas->private_data); - } + free(canvas->private_data); free(canvas); } diff -Nru spice-0.10.0/common/sw_canvas.h spice-0.10.1/common/sw_canvas.h --- spice-0.10.0/common/sw_canvas.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/sw_canvas.h 2012-01-18 10:19:15.000000000 +0000 @@ -41,7 +41,7 @@ #elif defined(SW_CANVAS_IMAGE_CACHE) , SpiceImageCache *bits_cache #endif - , SpiceImageSurfaces *surfaces + , SpiceImageSurfaces *surfaces , SpiceGlzDecoder *glz_decoder , SpiceJpegDecoder *jpeg_decoder , SpiceZlibDecoder *zlib_decoder @@ -54,7 +54,7 @@ #elif defined(SW_CANVAS_IMAGE_CACHE) , SpiceImageCache *bits_cache #endif - , SpiceImageSurfaces *surfaces + , SpiceImageSurfaces *surfaces , SpiceGlzDecoder *glz_decoder , SpiceJpegDecoder *jpeg_decoder , SpiceZlibDecoder *zlib_decoder diff -Nru spice-0.10.0/common/win/Makefile.in spice-0.10.1/common/win/Makefile.in --- spice-0.10.0/common/win/Makefile.in 2011-11-10 15:02:16.000000000 +0000 +++ spice-0.10.1/common/win/Makefile.in 2012-01-23 15:23:22.000000000 +0000 @@ -206,6 +206,8 @@ WINDRES = @WINDRES@ XFIXES_CFLAGS = @XFIXES_CFLAGS@ XFIXES_LIBS = @XFIXES_LIBS@ +XINERAMA_CFLAGS = @XINERAMA_CFLAGS@ +XINERAMA_LIBS = @XINERAMA_LIBS@ XRANDR12_CFLAGS = @XRANDR12_CFLAGS@ XRANDR12_LIBS = @XRANDR12_LIBS@ XRANDR_CFLAGS = @XRANDR_CFLAGS@ diff -Nru spice-0.10.0/common/win/my_getopt-1.5/getopt.h spice-0.10.1/common/win/my_getopt-1.5/getopt.h --- spice-0.10.0/common/win/my_getopt-1.5/getopt.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/win/my_getopt-1.5/getopt.h 2012-01-18 10:19:15.000000000 +0000 @@ -9,10 +9,10 @@ * modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND diff -Nru spice-0.10.0/common/win/my_getopt-1.5/main.c spice-0.10.1/common/win/my_getopt-1.5/main.c --- spice-0.10.0/common/win/my_getopt-1.5/main.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/win/my_getopt-1.5/main.c 2012-01-18 10:19:15.000000000 +0000 @@ -163,7 +163,7 @@ /* long option list index */ int longind = 0; - /* + /* * print a warning when the POSIXLY_CORRECT environment variable will * interfere with argument placement */ @@ -326,12 +326,12 @@ if (optind < argc) { int argindex; - + for (argindex = optind; argindex < argc; argindex ++) { char *infilename = argv[argindex]; FILE *infile; - + /* we allow "-" as a synonym for stdin here */ if (! strcmp(infilename, "-")) { diff -Nru spice-0.10.0/common/win/my_getopt-1.5/Makefile spice-0.10.1/common/win/my_getopt-1.5/Makefile --- spice-0.10.0/common/win/my_getopt-1.5/Makefile 2011-11-10 15:02:23.000000000 +0000 +++ spice-0.10.1/common/win/my_getopt-1.5/Makefile 2012-01-23 15:23:28.000000000 +0000 @@ -53,23 +53,23 @@ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = ${SHELL} /home/alon/src/spice_upstream/t/spice/missing --run aclocal-1.11 +ACLOCAL = ${SHELL} /home/hans/projects/spice/spice/missing --run aclocal-1.11 ALLOCA = ALSA_CFLAGS = -I/usr/include/alsa ALSA_LIBS = -lasound -AMTAR = ${SHELL} /home/alon/src/spice_upstream/t/spice/missing --run tar +AMTAR = ${SHELL} /home/hans/projects/spice/spice/missing --run tar AM_DEFAULT_VERBOSITY = 0 AR = ar -AUTOCONF = ${SHELL} /home/alon/src/spice_upstream/t/spice/missing --run autoconf -AUTOHEADER = ${SHELL} /home/alon/src/spice_upstream/t/spice/missing --run autoheader -AUTOMAKE = ${SHELL} /home/alon/src/spice_upstream/t/spice/missing --run automake-1.11 +AUTOCONF = ${SHELL} /home/hans/projects/spice/spice/missing --run autoconf +AUTOHEADER = ${SHELL} /home/hans/projects/spice/spice/missing --run autoheader +AUTOMAKE = ${SHELL} /home/hans/projects/spice/spice/missing --run automake-1.11 AWK = gawk -CAC_CARD_CFLAGS = -CAC_CARD_LIBS = +CAC_CARD_CFLAGS = -I/usr/include/cacard -I/usr/include/nss3 -I/usr/include/nspr4 +CAC_CARD_LIBS = -lcacard -lssl3 -lsmime3 -lnss3 -lnssutil3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl CC = gcc -std=gnu99 CCDEPMODE = depmode=gcc3 -CEGUI06_CFLAGS = -CEGUI06_LIBS = +CEGUI06_CFLAGS = -I/usr/include/CEGUI-0.6 +CEGUI06_LIBS = -L/usr/lib64/CEGUI-0.6 -lCEGUIBase CEGUI_CFLAGS = CEGUI_LIBS = CELT051_CFLAGS = @@ -116,7 +116,7 @@ LN_S = ln -s LTLIBOBJS = MAINT = -MAKEINFO = ${SHELL} /home/alon/src/spice_upstream/t/spice/missing --run makeinfo +MAKEINFO = ${SHELL} /home/hans/projects/spice/spice/missing --run makeinfo MANIFEST_TOOL = : MISC_X_CFLAGS = MISC_X_LIBS = -lXext -lXrender -lX11 @@ -130,10 +130,10 @@ PACKAGE = spice PACKAGE_BUGREPORT = PACKAGE_NAME = spice -PACKAGE_STRING = spice 0.10.0 +PACKAGE_STRING = spice 0.10.1 PACKAGE_TARNAME = spice PACKAGE_URL = -PACKAGE_VERSION = 0.10.0 +PACKAGE_VERSION = 0.10.1 PATH_SEPARATOR = : PIXMAN_CFLAGS = -I/usr/include/pixman-1 PIXMAN_LIBS = -lpixman-1 @@ -151,31 +151,33 @@ SHELL = /bin/sh SLIRP_CFLAGS = SLIRP_LIBS = -SMARTCARD_CFLAGS = -SMARTCARD_LIBS = +SMARTCARD_CFLAGS = -I/usr/include/cacard -I/usr/include/nss3 -I/usr/include/nspr4 +SMARTCARD_LIBS = -lcacard -lssl3 -lsmime3 -lnss3 -lnssutil3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl SPICEC_STATIC_LINKAGE_BSTATIC = SPICE_LT_VERSION = 1:0:2 SPICE_NONPKGCONFIG_CFLAGS = SPICE_NONPKGCONFIG_LIBS = -pthread -lm -lrt -SPICE_REQUIRES = pixman-1 >= 0.17.7 celt051 >= 0.5.1.1 openssl +SPICE_REQUIRES = pixman-1 >= 0.17.7 celt051 >= 0.5.1.1 openssl xinerama SSL_CFLAGS = -SSL_LIBS = -lssl -lcrypto -ldl -lz +SSL_LIBS = -lssl -lcrypto STRIP = strip -VERSION = 0.10.0 +VERSION = 0.10.1 VISIBILITY_HIDDEN_CFLAGS = -fvisibility=hidden WARN_CFLAGS = -Wall -Wno-sign-compare -Werror -Wno-deprecated-declarations -Werror WINDRES = XFIXES_CFLAGS = XFIXES_LIBS = -lXfixes +XINERAMA_CFLAGS = +XINERAMA_LIBS = -lXinerama XRANDR12_CFLAGS = XRANDR12_LIBS = -lXrandr XRANDR_CFLAGS = XRANDR_LIBS = -lXrandr Z_LIBS = -lz -abs_builddir = /home/alon/src/spice_upstream/t/spice/common/win/my_getopt-1.5 -abs_srcdir = /home/alon/src/spice_upstream/t/spice/common/win/my_getopt-1.5 -abs_top_builddir = /home/alon/src/spice_upstream/t/spice -abs_top_srcdir = /home/alon/src/spice_upstream/t/spice +abs_builddir = /home/hans/projects/spice/spice/common/win/my_getopt-1.5 +abs_srcdir = /home/hans/projects/spice/spice/common/win/my_getopt-1.5 +abs_top_builddir = /home/hans/projects/spice/spice +abs_top_srcdir = /home/hans/projects/spice/spice ac_ct_AR = ar ac_ct_CC = gcc ac_ct_CXX = g++ @@ -205,8 +207,8 @@ htmldir = ${docdir} includedir = ${prefix}/include infodir = ${datarootdir}/info -install_sh = ${SHELL} /home/alon/src/spice_upstream/t/spice/install-sh -libdir = ${exec_prefix}/lib +install_sh = ${SHELL} /home/hans/projects/spice/spice/install-sh +libdir = /usr/lib64 libexecdir = ${exec_prefix}/libexec localedir = ${datarootdir}/locale localstatedir = ${prefix}/var @@ -214,7 +216,7 @@ mkdir_p = /bin/mkdir -p oldincludedir = /usr/include pdfdir = ${docdir} -prefix = /usr/local +prefix = /usr program_transform_name = s,x,x, psdir = ${docdir} sbindir = ${exec_prefix}/sbin diff -Nru spice-0.10.0/common/win/my_getopt-1.5/Makefile.in spice-0.10.1/common/win/my_getopt-1.5/Makefile.in --- spice-0.10.0/common/win/my_getopt-1.5/Makefile.in 2011-11-10 15:02:16.000000000 +0000 +++ spice-0.10.1/common/win/my_getopt-1.5/Makefile.in 2012-01-23 15:23:23.000000000 +0000 @@ -167,6 +167,8 @@ WINDRES = @WINDRES@ XFIXES_CFLAGS = @XFIXES_CFLAGS@ XFIXES_LIBS = @XFIXES_LIBS@ +XINERAMA_CFLAGS = @XINERAMA_CFLAGS@ +XINERAMA_LIBS = @XINERAMA_LIBS@ XRANDR12_CFLAGS = @XRANDR12_CFLAGS@ XRANDR12_LIBS = @XRANDR12_LIBS@ XRANDR_CFLAGS = @XRANDR_CFLAGS@ diff -Nru spice-0.10.0/common/win/my_getopt-1.5/my_getopt.c spice-0.10.1/common/win/my_getopt-1.5/my_getopt.c --- spice-0.10.0/common/win/my_getopt-1.5/my_getopt.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/win/my_getopt-1.5/my_getopt.c 2012-01-18 10:19:15.000000000 +0000 @@ -9,10 +9,10 @@ * modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND @@ -198,7 +198,7 @@ if(((my_optopt = argv[my_optind][1]) != '-') && ! argv[my_optind][2]) { int c; - + ind = shortoff; while((c = shortopts[ind++])) { if(((shortopts[ind] == ':') || diff -Nru spice-0.10.0/common/win/my_getopt-1.5/my_getopt.h spice-0.10.1/common/win/my_getopt-1.5/my_getopt.h --- spice-0.10.0/common/win/my_getopt-1.5/my_getopt.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/common/win/my_getopt-1.5/my_getopt.h 2012-01-18 10:19:15.000000000 +0000 @@ -9,10 +9,10 @@ * modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND diff -Nru spice-0.10.0/config.h.in spice-0.10.1/config.h.in --- spice-0.10.0/config.h.in 2011-11-10 15:02:15.000000000 +0000 +++ spice-0.10.1/config.h.in 2012-01-23 15:23:28.000000000 +0000 @@ -66,6 +66,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H +/* Define if we have Xinerama */ +#undef HAVE_XINERAMA + /* Define if we have XRANDR 12 */ #undef HAVE_XRANDR12 diff -Nru spice-0.10.0/configure spice-0.10.1/configure --- spice-0.10.0/configure 2011-11-10 15:02:17.000000000 +0000 +++ spice-0.10.1/configure 2012-01-23 15:23:23.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for spice 0.10.0. +# Generated by GNU Autoconf 2.68 for spice 0.10.1. # # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -567,8 +567,8 @@ # Identity of this package. PACKAGE_NAME='spice' PACKAGE_TARNAME='spice' -PACKAGE_VERSION='0.10.0' -PACKAGE_STRING='spice 0.10.0' +PACKAGE_VERSION='0.10.1' +PACKAGE_STRING='spice 0.10.1' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -629,6 +629,10 @@ HAVE_SASL_TRUE Z_LIBS JPEG_LIBS +HAVE_XINERAMA_FALSE +HAVE_XINERAMA_TRUE +XINERAMA_LIBS +XINERAMA_CFLAGS MISC_X_LIBS MISC_X_CFLAGS HAVE_XRANDR12_FALSE @@ -868,7 +872,9 @@ XRANDR12_CFLAGS XRANDR12_LIBS MISC_X_CFLAGS -MISC_X_LIBS' +MISC_X_LIBS +XINERAMA_CFLAGS +XINERAMA_LIBS' # Initialize some variables set by options. @@ -1411,7 +1417,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures spice 0.10.0 to adapt to many kinds of systems. +\`configure' configures spice 0.10.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1481,7 +1487,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of spice 0.10.0:";; + short | recursive ) echo "Configuration of spice 0.10.1:";; esac cat <<\_ACEOF @@ -1511,7 +1517,7 @@ Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-pic try to use only PIC/non-PIC objects [default=use + --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot=DIR Search for dependent libraries within DIR @@ -1577,6 +1583,10 @@ MISC_X_CFLAGS C compiler flags for MISC_X, overriding pkg-config MISC_X_LIBS linker flags for MISC_X, overriding pkg-config + XINERAMA_CFLAGS + C compiler flags for XINERAMA, overriding pkg-config + XINERAMA_LIBS + linker flags for XINERAMA, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. @@ -1644,7 +1654,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -spice configure 0.10.0 +spice configure 0.10.1 generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. @@ -2184,7 +2194,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by spice $as_me 0.10.0, which was +It was created by spice $as_me 0.10.1, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ @@ -3004,7 +3014,7 @@ # Define the identity of the package. PACKAGE='spice' - VERSION='0.10.0' + VERSION='0.10.1' cat >>confdefs.h <<_ACEOF @@ -4691,8 +4701,8 @@ -macro_version='2.4' -macro_revision='1.3293' +macro_version='2.4.2' +macro_revision='1.3337' @@ -5466,6 +5476,11 @@ lt_cv_sys_max_cmd_len=196608 ;; + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not @@ -5505,7 +5520,7 @@ # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. - while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ + while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do @@ -5934,7 +5949,7 @@ lt_cv_deplibs_check_method=pass_all ;; -# This must be Linux ELF. +# This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) lt_cv_deplibs_check_method=pass_all ;; @@ -6575,13 +6590,13 @@ if test -n "$RANLIB"; then case $host_os in openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in @@ -6728,6 +6743,7 @@ # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ @@ -7116,7 +7132,7 @@ CFLAGS="$SAVE_CFLAGS" fi ;; -sparc*-*solaris*) +*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 @@ -7127,7 +7143,20 @@ case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; + yes*) + case $host in + i?86-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD="${LD-ld}_sol2" + fi + ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" @@ -7767,7 +7796,13 @@ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? - if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&5 + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 @@ -7778,6 +7813,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if ${lt_cv_ld_exported_symbols_list+:} false; then : @@ -7810,6 +7846,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 $as_echo_n "checking for -force_load linker flag... " >&6; } if ${lt_cv_ld_force_load+:} false; then : @@ -7831,7 +7868,9 @@ echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? - if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&5 + elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&5 @@ -8247,7 +8286,22 @@ # Check whether --with-pic was given. if test "${with_pic+set}" = set; then : - withval=$with_pic; pic_mode="$withval" + withval=$with_pic; lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for lt_pkg in $withval; do + IFS="$lt_save_ifs" + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac else pic_mode=default fi @@ -8325,6 +8379,10 @@ + + + + test -z "$LN_S" && LN_S="ln -s" @@ -8780,7 +8838,9 @@ case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' - lt_prog_compiler_pic='-Xcompiler -fPIC' + if test -n "$lt_prog_compiler_pic"; then + lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" + fi ;; esac else @@ -8871,18 +8931,33 @@ ;; *) case `$CC -V 2>&1 | sed 5q` in - *Sun\ F* | *Sun*Fortran*) + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; + *Sun\ F* | *Sun*Fortran*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Qoption ld ' + ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; + *Intel*\ [CF]*Compiler*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + *Portland\ Group*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; esac ;; esac @@ -9244,7 +9319,6 @@ hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported @@ -9494,8 +9568,7 @@ xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld='-rpath $libdir' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ @@ -9874,6 +9947,7 @@ # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes + exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' @@ -9919,6 +9993,7 @@ hardcode_shlibpath_var=unsupported if test "$lt_cv_ld_force_load" = "yes"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + else whole_archive_flag_spec='' fi @@ -9947,10 +10022,6 @@ hardcode_shlibpath_var=no ;; - freebsd1*) - ld_shlibs=no - ;; - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little @@ -9963,7 +10034,7 @@ ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) + freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes @@ -10002,7 +10073,6 @@ fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_flag_spec_ld='+b $libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes @@ -10626,11 +10696,6 @@ - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } @@ -10720,7 +10785,7 @@ case $host_os in aix3*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH @@ -10729,7 +10794,7 @@ ;; aix[4-9]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes @@ -10794,7 +10859,7 @@ ;; bsdi[45]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' @@ -10933,7 +10998,7 @@ ;; dgux*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' @@ -10941,10 +11006,6 @@ shlibpath_var=LD_LIBRARY_PATH ;; -freebsd1*) - dynamic_linker=no - ;; - freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. @@ -10952,7 +11013,7 @@ objformat=`/usr/bin/objformat` else case $host_os in - freebsd[123]*) objformat=aout ;; + freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi @@ -10970,7 +11031,7 @@ esac shlibpath_var=LD_LIBRARY_PATH case $host_os in - freebsd2*) + freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) @@ -10990,17 +11051,18 @@ ;; gnu*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; haiku*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" @@ -11061,7 +11123,7 @@ ;; interix[3-9]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' @@ -11077,7 +11139,7 @@ nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; @@ -11114,9 +11176,9 @@ dynamic_linker=no ;; -# This must be Linux ELF. +# This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -11202,7 +11264,7 @@ ;; newsos6) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes @@ -11271,7 +11333,7 @@ ;; solaris*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -11296,7 +11358,7 @@ ;; sysv4 | sysv4.3*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH @@ -11320,7 +11382,7 @@ sysv4*MP*) if test -d /usr/nec ;then - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH @@ -11351,7 +11413,7 @@ tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -11361,7 +11423,7 @@ ;; uts4*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH @@ -12286,7 +12348,6 @@ hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no hardcode_libdir_flag_spec_CXX= -hardcode_libdir_flag_spec_ld_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported @@ -12870,6 +12931,7 @@ hardcode_shlibpath_var_CXX=unsupported if test "$lt_cv_ld_force_load" = "yes"; then whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + else whole_archive_flag_spec_CXX='' fi @@ -12914,7 +12976,7 @@ esac ;; - freebsd[12]*) + freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF ld_shlibs_CXX=no @@ -13590,6 +13652,7 @@ case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 @@ -14379,7 +14442,9 @@ ;; cygwin* | mingw* | cegcc*) case $cc_basename in - cl*) ;; + cl*) + exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' @@ -14532,8 +14597,6 @@ - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } @@ -14559,7 +14622,7 @@ case $host_os in aix3*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH @@ -14568,7 +14631,7 @@ ;; aix[4-9]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes @@ -14633,7 +14696,7 @@ ;; bsdi[45]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' @@ -14770,7 +14833,7 @@ ;; dgux*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' @@ -14778,10 +14841,6 @@ shlibpath_var=LD_LIBRARY_PATH ;; -freebsd1*) - dynamic_linker=no - ;; - freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. @@ -14789,7 +14848,7 @@ objformat=`/usr/bin/objformat` else case $host_os in - freebsd[123]*) objformat=aout ;; + freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi @@ -14807,7 +14866,7 @@ esac shlibpath_var=LD_LIBRARY_PATH case $host_os in - freebsd2*) + freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) @@ -14827,17 +14886,18 @@ ;; gnu*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; haiku*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" @@ -14898,7 +14958,7 @@ ;; interix[3-9]*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' @@ -14914,7 +14974,7 @@ nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; @@ -14951,9 +15011,9 @@ dynamic_linker=no ;; -# This must be Linux ELF. +# This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -15039,7 +15099,7 @@ ;; newsos6) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes @@ -15108,7 +15168,7 @@ ;; solaris*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -15133,7 +15193,7 @@ ;; sysv4 | sysv4.3*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH @@ -15157,7 +15217,7 @@ sysv4*MP*) if test -d /usr/nec ;then - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH @@ -15188,7 +15248,7 @@ tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' @@ -15198,7 +15258,7 @@ ;; uts4*) - version_type=linux + version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH @@ -15337,6 +15397,8 @@ + + ac_config_commands="$ac_config_commands libtool" @@ -16294,12 +16356,12 @@ pkg_cv_PROTOCOL_CFLAGS="$PROTOCOL_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"spice-protocol >= 0.9.1\""; } >&5 - ($PKG_CONFIG --exists --print-errors "spice-protocol >= 0.9.1") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"spice-protocol >= 0.10.1\""; } >&5 + ($PKG_CONFIG --exists --print-errors "spice-protocol >= 0.10.1") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_PROTOCOL_CFLAGS=`$PKG_CONFIG --cflags "spice-protocol >= 0.9.1" 2>/dev/null` + pkg_cv_PROTOCOL_CFLAGS=`$PKG_CONFIG --cflags "spice-protocol >= 0.10.1" 2>/dev/null` else pkg_failed=yes fi @@ -16310,12 +16372,12 @@ pkg_cv_PROTOCOL_LIBS="$PROTOCOL_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"spice-protocol >= 0.9.1\""; } >&5 - ($PKG_CONFIG --exists --print-errors "spice-protocol >= 0.9.1") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"spice-protocol >= 0.10.1\""; } >&5 + ($PKG_CONFIG --exists --print-errors "spice-protocol >= 0.10.1") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_PROTOCOL_LIBS=`$PKG_CONFIG --libs "spice-protocol >= 0.9.1" 2>/dev/null` + pkg_cv_PROTOCOL_LIBS=`$PKG_CONFIG --libs "spice-protocol >= 0.10.1" 2>/dev/null` else pkg_failed=yes fi @@ -16335,14 +16397,14 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - PROTOCOL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "spice-protocol >= 0.9.1" 2>&1` + PROTOCOL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "spice-protocol >= 0.10.1" 2>&1` else - PROTOCOL_PKG_ERRORS=`$PKG_CONFIG --print-errors "spice-protocol >= 0.9.1" 2>&1` + PROTOCOL_PKG_ERRORS=`$PKG_CONFIG --print-errors "spice-protocol >= 0.10.1" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$PROTOCOL_PKG_ERRORS" >&5 - as_fn_error $? "Package requirements (spice-protocol >= 0.9.1) were not met: + as_fn_error $? "Package requirements (spice-protocol >= 0.10.1) were not met: $PROTOCOL_PKG_ERRORS @@ -17269,7 +17331,7 @@ if test ! -e client/generated_marshallers.cpp; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pyparsing python module" >&5 $as_echo_n "checking for pyparsing python module... " >&6; } -echo "import pyparsing" | python - >/dev/null 2>&1 +echo "import pyparsing" | ${PYTHON} - >/dev/null 2>&1 if test $? -ne 0 ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 $as_echo "not found" >&6; } @@ -17947,6 +18009,93 @@ fi + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XINERAMA" >&5 +$as_echo_n "checking for XINERAMA... " >&6; } + +if test -n "$XINERAMA_CFLAGS"; then + pkg_cv_XINERAMA_CFLAGS="$XINERAMA_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xinerama >= 1.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "xinerama >= 1.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_XINERAMA_CFLAGS=`$PKG_CONFIG --cflags "xinerama >= 1.0" 2>/dev/null` +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$XINERAMA_LIBS"; then + pkg_cv_XINERAMA_LIBS="$XINERAMA_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"xinerama >= 1.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "xinerama >= 1.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_XINERAMA_LIBS=`$PKG_CONFIG --libs "xinerama >= 1.0" 2>/dev/null` +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + XINERAMA_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "xinerama >= 1.0" 2>&1` + else + XINERAMA_PKG_ERRORS=`$PKG_CONFIG --print-errors "xinerama >= 1.0" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$XINERAMA_PKG_ERRORS" >&5 + + have_xinerama=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + have_xinerama=no +else + XINERAMA_CFLAGS=$pkg_cv_XINERAMA_CFLAGS + XINERAMA_LIBS=$pkg_cv_XINERAMA_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + have_xinerama=yes +fi + + if test "x$have_xinerama" = "xyes"; then + HAVE_XINERAMA_TRUE= + HAVE_XINERAMA_FALSE='#' +else + HAVE_XINERAMA_TRUE='#' + HAVE_XINERAMA_FALSE= +fi + +if test "x$have_xinerama" = "xyes" ; then + +$as_echo "#define HAVE_XINERAMA /**/" >>confdefs.h + + + + SPICE_REQUIRES+=" xinerama" +fi + # Add parameter for (partial) static linkage of spice client. # this is used to achive single binary package for all (?) distros. # Check whether --enable-static-linkage was given. @@ -18078,7 +18227,7 @@ SASL_LIBS= enable_sasl=no if test "x$with_sasl" != "xno"; then - if test "x$with_sasl" != "xyes" -a "x$with_sasl" != "xcheck"; then + if test "x$with_sasl" != "xyes" && test "x$with_sasl" != "xcheck"; then SASL_CFLAGS="-I$with_sasl" SASL_LIBS="-L$with_sasl" fi @@ -18144,7 +18293,7 @@ fi fi - if test "x$with_sasl2" = "xno" -a "x$with_sasl" != "xno" ; then + if test "x$with_sasl2" = "xno" && test "x$with_sasl" != "xno" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sasl_client_init in -lsasl" >&5 $as_echo_n "checking for sasl_client_init in -lsasl... " >&6; } if ${ac_cv_lib_sasl_sasl_client_init+:} false; then : @@ -18197,7 +18346,7 @@ fi CFLAGS="$old_cflags" LIBS="$old_libs" - if test "x$with_sasl2" = "xyes" -o "x$with_sasl" = "xyes" ; then + if test "x$with_sasl2" = "xyes" || test "x$with_sasl" = "xyes" ; then cat >>confdefs.h <<_ACEOF #define HAVE_SASL 1 @@ -18206,7 +18355,7 @@ enable_sasl=yes fi fi - if test "x$with_sasl2" = "xyes" -o "x$with_sasl" = "xyes"; then + if test "x$with_sasl2" = "xyes" || test "x$with_sasl" = "xyes"; then HAVE_SASL_TRUE= HAVE_SASL_FALSE='#' else @@ -18442,7 +18591,7 @@ fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -if test "x$have_gcc4" = "xyes" -a ! "$os_win32" = "yes" ; then +if test "x$have_gcc4" = "xyes" && test ! "$os_win32" = "yes" ; then VISIBILITY_HIDDEN_CFLAGS="-fvisibility=hidden" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_gcc4" >&5 @@ -18644,6 +18793,10 @@ as_fn_error $? "conditional \"HAVE_XRANDR12\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${HAVE_XINERAMA_TRUE}" && test -z "${HAVE_XINERAMA_FALSE}"; then + as_fn_error $? "conditional \"HAVE_XINERAMA\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${HAVE_SASL_TRUE}" && test -z "${HAVE_SASL_FALSE}"; then as_fn_error $? "conditional \"HAVE_SASL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -19057,7 +19210,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by spice $as_me 0.10.0, which was +This file was extended by spice $as_me 0.10.1, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -19123,7 +19276,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -spice config.status 0.10.0 +spice config.status 0.10.1 configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" @@ -19260,6 +19413,7 @@ enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' @@ -19342,7 +19496,6 @@ allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' @@ -19414,7 +19567,6 @@ allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_ld_CXX='`$ECHO "$hardcode_libdir_flag_spec_ld_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' @@ -19453,6 +19605,7 @@ # Quote evaled strings. for var in SHELL \ ECHO \ +PATH_SEPARATOR \ SED \ GREP \ EGREP \ @@ -19503,7 +19656,6 @@ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ -hardcode_libdir_flag_spec_ld \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ @@ -19537,7 +19689,6 @@ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ hardcode_libdir_flag_spec_CXX \ -hardcode_libdir_flag_spec_ld_CXX \ hardcode_libdir_separator_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX \ @@ -20352,8 +20503,8 @@ # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. @@ -20407,6 +20558,9 @@ # An echo program that protects backslashes. ECHO=$lt_ECHO +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + # The host system. host_alias=$host_alias host=$host @@ -20708,10 +20862,6 @@ # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld - # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator @@ -21054,10 +21204,6 @@ # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX - # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX @@ -21180,11 +21326,14 @@ prefix: ${prefix} c compiler: ${CC} c++ compiler: ${CXX} + python: ${PYTHON} Build Spice client: ${enable_client} Have XRANDR 1.2: ${have_xrandr12} + Have Xinerama: ${have_xinerama} + Support tunneling: ${enable_tunnel} Red target: ${red_target} diff -Nru spice-0.10.0/configure.ac spice-0.10.1/configure.ac --- spice-0.10.0/configure.ac 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/configure.ac 2012-01-23 15:21:14.000000000 +0000 @@ -2,7 +2,7 @@ m4_define([SPICE_MAJOR], 0) m4_define([SPICE_MINOR], 10) -m4_define([SPICE_MICRO], 0) +m4_define([SPICE_MICRO], 1) AC_INIT(spice, [SPICE_MAJOR.SPICE_MINOR.SPICE_MICRO], [], spice) @@ -99,7 +99,7 @@ AS_IF([test x"$enable_tunnel" != "xno"], [enable_tunnel="yes"]) AM_CONDITIONAL(SUPPORT_TUNNEL, test "x$enable_tunnel" != "xno") if test "x$enable_tunnel" != "xno"; then - AC_DEFINE(USE_TUNNEL, [1], [Define if supporting tunnel proxying]) + AC_DEFINE([USE_TUNNEL], [1], [Define if supporting tunnel proxying]) fi AC_ARG_ENABLE(gui, @@ -120,7 +120,7 @@ AS_IF([test x"$enable_smartcard" != "xno"], [enable_smartcard="yes"]) AM_CONDITIONAL(SUPPORT_SMARTCARD, test "x$enable_smartcard" != "xno") if test "x$enable_smartcard" = "xyes"; then - AC_DEFINE(USE_SMARTCARD, [1], [Define if supporting smartcard proxying]) + AC_DEFINE([USE_SMARTCARD], [1], [Define if supporting smartcard proxying]) fi AC_ARG_ENABLE(client, @@ -132,14 +132,14 @@ dnl ========================================================================= dnl Check deps -PKG_CHECK_MODULES(PROTOCOL, spice-protocol >= 0.9.1) +PKG_CHECK_MODULES(PROTOCOL, spice-protocol >= 0.10.1) AC_SUBST(PROTOCOL_CFLAGS) AC_CHECK_LIBM AC_SUBST(LIBM) AC_CHECK_LIB(rt, clock_gettime, - AC_DEFINE(HAVE_CLOCK_GETTIME, 1, [Defined if we have clock_gettime()]) + AC_DEFINE([HAVE_CLOCK_GETTIME], 1, [Defined if we have clock_gettime()]) LIBRT=-lrt ) AC_SUBST(LIBRT) @@ -168,7 +168,7 @@ AC_MSG_RESULT($posix_yield_func) posix_yield_func="$posix_yield_func()" fi -AC_DEFINE_UNQUOTED(POSIX_YIELD_FUNC,$posix_yield_func,[The POSIX RT yield function]) +AC_DEFINE_UNQUOTED([POSIX_YIELD_FUNC],$posix_yield_func,[The POSIX RT yield function]) SPICE_REQUIRES="" @@ -217,7 +217,7 @@ if test ! -e client/generated_marshallers.cpp; then AC_MSG_CHECKING([for pyparsing python module]) -echo "import pyparsing" | python - >/dev/null 2>&1 +echo "import pyparsing" | ${PYTHON} - >/dev/null 2>&1 if test $? -ne 0 ; then AC_MSG_RESULT([not found]) AC_MSG_ERROR([pyparsing python module is required to compile this package]) @@ -283,6 +283,19 @@ AC_SUBST(MISC_X_LIBS) fi +PKG_CHECK_MODULES(XINERAMA, + xinerama >= 1.0, + have_xinerama=yes, + have_xinerama=no) + +AM_CONDITIONAL([HAVE_XINERAMA], [test "x$have_xinerama" = "xyes"]) +if test "x$have_xinerama" = "xyes" ; then + AC_DEFINE([HAVE_XINERAMA], [], [Define if we have Xinerama]) + AC_SUBST(XINERAMA_CFLAGS) + AC_SUBST(XINERAMA_LIBS) + SPICE_REQUIRES+=" xinerama" +fi + # Add parameter for (partial) static linkage of spice client. # this is used to achive single binary package for all (?) distros. AC_ARG_ENABLE(static-linkage, @@ -319,7 +332,7 @@ SASL_LIBS= enable_sasl=no if test "x$with_sasl" != "xno"; then - if test "x$with_sasl" != "xyes" -a "x$with_sasl" != "xcheck"; then + if test "x$with_sasl" != "xyes" && test "x$with_sasl" != "xcheck"; then SASL_CFLAGS="-I$with_sasl" SASL_LIBS="-L$with_sasl" fi @@ -337,7 +350,7 @@ if test "x$with_sasl" != "xno" ; then AC_CHECK_LIB([sasl2], [sasl_client_init],[with_sasl2=yes],[with_sasl2=no]) fi - if test "x$with_sasl2" = "xno" -a "x$with_sasl" != "xno" ; then + if test "x$with_sasl2" = "xno" && test "x$with_sasl" != "xno" ; then AC_CHECK_LIB([sasl], [sasl_client_init],[with_sasl=yes],[with_sasl=no]) fi if test "x$with_sasl2" = "xyes"; then @@ -349,13 +362,13 @@ fi CFLAGS="$old_cflags" LIBS="$old_libs" - if test "x$with_sasl2" = "xyes" -o "x$with_sasl" = "xyes" ; then + if test "x$with_sasl2" = "xyes" || test "x$with_sasl" = "xyes" ; then AC_DEFINE_UNQUOTED([HAVE_SASL], 1, [whether Cyrus SASL is available for authentication]) enable_sasl=yes fi fi -AM_CONDITIONAL([HAVE_SASL], [test "x$with_sasl2" = "xyes" -o "x$with_sasl" = "xyes"]) +AM_CONDITIONAL([HAVE_SASL], [test "x$with_sasl2" = "xyes" || test "x$with_sasl" = "xyes"]) AC_SUBST([SASL_CFLAGS]) AC_SUBST([SASL_LIBS]) @@ -483,7 +496,7 @@ int main () { return 0; } ])], have_gcc4=yes) -if test "x$have_gcc4" = "xyes" -a ! "$os_win32" = "yes" ; then +if test "x$have_gcc4" = "xyes" && test ! "$os_win32" = "yes" ; then VISIBILITY_HIDDEN_CFLAGS="-fvisibility=hidden" fi AC_MSG_RESULT($have_gcc4) @@ -518,11 +531,14 @@ prefix: ${prefix} c compiler: ${CC} c++ compiler: ${CXX} + python: ${PYTHON} Build Spice client: ${enable_client} Have XRANDR 1.2: ${have_xrandr12} + Have Xinerama: ${have_xinerama} + Support tunneling: ${enable_tunnel} Red target: ${red_target} diff -Nru spice-0.10.0/debian/changelog spice-0.10.1/debian/changelog --- spice-0.10.0/debian/changelog 2011-12-08 07:32:40.000000000 +0000 +++ spice-0.10.1/debian/changelog 2012-01-28 07:25:04.000000000 +0000 @@ -1,45 +1,18 @@ -spice (0.10.0-1) unstable; urgency=low +spice (0.10.1-2ubuntu2) precise; urgency=high - [ Liang Guo ] - * New upstream release (Closes: #651262) - * Refresh debian/copyright - * Remove fix-typo-in-cmd_line_parser-cpp.patch, applied upstream - * Remove fix-typo-in-record-cpp.patch, applied upstream - * Remove use-requires-private-for-libspice-pkgconfig.patch, applied upstream - * Change Build-Depends on libspice-protocol-dev to (>= 0.9.1~) - * Refresh libspice-server1.symbols - * Update debian/rules clean target - * Ignore common/win/my_getopt-1.5/Makefile change when building package - * debian/control: set DMUA + * Build on Precise. GUI support disabled - [ Michael Tokarev ] - * use `rm -f' instead of `-rm' in debian/rules clean targets - * remove python_modules/*.pyc in clean target - - -- Liang Guo Tue, 29 Nov 2011 14:37:08 +0800 - -spice (0.8.3-1) unstable; urgency=low - - * New upstream release - * Update debian/copyright to fit DEP-5 - * Remove drop-unnecessary-build-request.patch, applied upstream - * Update Build-Depends on libspice-protocol-dev to 0.8.2~ - * Disable GUI support, CEGUI version in Debian not supported - * Add libjpeg-dev to Build-Depends - * Refresh libspice-server1.symbols + -- Boris Derzhavets Sat, 28 Jan 2012 11:36:31 +0800 - -- Liang Guo Thu, 20 Oct 2011 11:13:23 +0800 spice (0.8.2-2) unstable; urgency=low [ Michael Tokarev ] * move libraries used internally by libspice-server from Requires - to Requires.private in pkg-config file + to Requires.private in pkg-config file (Closes: #637189) [ Liang Guo ] - * Add libpixman-1-dev and libssl-dev to libspice-server-dev - Depends (Closes: #637189) - * Remove alsa, xrandr, xfixes, x11, xext and xrender + * Remove alsa, xrandr, xfixes, x11, xext and xrender from spice-server.pc Requires * Fix typo in debian/spicec.1 diff -Nru spice-0.10.0/debian/control spice-0.10.1/debian/control --- spice-0.10.0/debian/control 2011-12-08 06:09:12.000000000 +0000 +++ spice-0.10.1/debian/control 2012-01-28 07:25:04.000000000 +0000 @@ -1,10 +1,10 @@ Source: spice Section: misc -Priority: optional +Priority: optional Maintainer: Liang Guo -DM-Upload-Allowed: yes Build-Depends: debhelper (>= 7.0.50~), - libspice-protocol-dev (>= 0.9.1~), + libcegui-mk2-dev (>= 0.6.0~), + libspice-protocol-dev (>= 0.10.0~), libpixman-1-dev (>= 0.17.7~), libxrandr-dev (>= 1.2~), pkg-config, @@ -14,8 +14,8 @@ libglu1-mesa-dev, libgl1-mesa-dev, libsasl2-dev, - libjpeg-dev, - libogg-dev + libogg-dev, + libjpeg-dev Standards-Version: 3.9.2 Homepage: http://spice-space.org/ Vcs-Git: git://git.debian.org/collab-maint/spice.git diff -Nru spice-0.10.0/debian/copyright spice-0.10.1/debian/copyright --- spice-0.10.0/debian/copyright 2011-12-08 06:09:12.000000000 +0000 +++ spice-0.10.1/debian/copyright 2012-01-28 07:25:04.000000000 +0000 @@ -1,14 +1,13 @@ -Format: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=174 +Format: http://dep.debian.net/deps/dep5 Upstream-Name: spice Source: http://www.spice-space.org/ Comment: celt is downloaded from http://downloads.us.xiph.org/releases/celt/celt-0.5.1.3.tar.gz Files: * -Copyright: Copyright (C) 2009,2010,2011 Red Hat, Inc. +Copyright: Copyright (C) 2009,2010 Red Hat, Inc. License: LGPL-2.1+ Files: client/windows/stdint.h -Copyright: NOT COPYRIGHTED License: Based on ISO/IEC SC22/WG14 9899 Committee draft (SC22 N2794) THIS SOFTWARE IS NOT COPYRIGHTED @@ -20,11 +19,11 @@ DISCLAIMED. This includes but is not limited to warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -Files: common/draw.h common/messages.h server/zlib_encoder.h server/jpeg_encoder.h +Files: common/draw.h, common/messages.h, server/zlib_encoder.h, server/jpeg_encoder.h Copyright: Copyright (C) 2009-2010 Red Hat, Inc. License: BSD-3-clause -Files: common/lines.h common/lines.c +Files: common/lines.h, common/lines.c Copyright: Copyright 1987, 1998 The Open Group Copyright 1987 by Digital Equipment Corporation License: @@ -93,7 +92,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -Files: common/lz_decompress_tmpl.c common/lz.c common/lz_compress_tmpl.c +Files: common/lz_decompress_tmpl.c, common/lz.c, common/lz_compress_tmpl.c Copyright: Copyright 2009 Red Hat, Inc. and/or its affiliates Copyright (C) 2005, 2006, 2007 Ariya Hidayat (ariya@kde.org) License: LGPL-2.1+ @@ -124,7 +123,7 @@ . The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND @@ -136,8 +135,9 @@ . Files: common/lz.h -Copyright: NOT COPYRIGHTED License: MIT + dictionary compression for images based on fastlz (http://www.fastlz.org/) + (Distributed under MIT license). Files: celt/* Copyright: 2005-2007 Christopher Montgomery, Jean-Marc Valin, Timothy Terriberry, @@ -164,18 +164,19 @@ made about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. -Files: celt/tools/etopt1.c celt/tools/getopt.c celt/tools/getopt_win.h +Files: celt/tools/etopt1.c, celt/tools/getopt.c, celt/tools/getopt_win.h Copyright: Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98 Free Software Foundation, Inc. -License: LGPL-2.0+ +License: LGPL-2+ Files: debian/* Copyright: Copyright (C) 2010 Liang Guo -License: LGPL-2.1+ +License: LGPL-2.1 Files: debian/spicec.1 Copyright: Copyright (C) 2010 Liang Guo -License: CC-BY-SA-3.0 +License: CC-BY-SA 3.0 + License: LGPL-2.1+ This library is free software; you can redistribute it and/or @@ -194,25 +195,6 @@ On Debian systems, the complete text of the GNU Lesser General Public License can be found in "/usr/share/common-licenses/LGPL-2.1". -License: LGPL-2.0+ - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - . - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - . - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 51 Franklin St, Fifth - Floor, Boston, MA 02110-1301, USA. - . - On Debian systems, the complete text of the GNU Lesser General - Public License can be found in "/usr/share/common-licenses/LGPL-2". - License: BSD-3-clause Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -240,6 +222,24 @@ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +License: LGPL-2.0+ + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.0 of the License, or (at your option) any later version. + . + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + . + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + . + On Debian systems, the complete text of the GNU Lesser General + Public License can be found in "/usr/share/common-licenses/LGPL-2.1". + License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -259,7 +259,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -License: CC-BY-SA-3.0 +License: CC-BY-SA 3.0 THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS diff -Nru spice-0.10.0/debian/emacsen-install.ex spice-0.10.1/debian/emacsen-install.ex --- spice-0.10.0/debian/emacsen-install.ex 1970-01-01 00:00:00.000000000 +0000 +++ spice-0.10.1/debian/emacsen-install.ex 2012-01-28 07:22:11.000000000 +0000 @@ -0,0 +1,45 @@ +#! /bin/sh -e +# /usr/lib/emacsen-common/packages/install/spice + +# Written by Jim Van Zandt , borrowing heavily +# from the install scripts for gettext by Santiago Vila +# and octave by Dirk Eddelbuettel . + +FLAVOR=$1 +PACKAGE=spice + +if [ ${FLAVOR} = emacs ]; then exit 0; fi + +echo install/${PACKAGE}: Handling install for emacsen flavor ${FLAVOR} + +#FLAVORTEST=`echo $FLAVOR | cut -c-6` +#if [ ${FLAVORTEST} = xemacs ] ; then +# SITEFLAG="-no-site-file" +#else +# SITEFLAG="--no-site-file" +#fi +FLAGS="${SITEFLAG} -q -batch -l path.el -f batch-byte-compile" + +ELDIR=/usr/share/emacs/site-lisp/${PACKAGE} +ELCDIR=/usr/share/${FLAVOR}/site-lisp/${PACKAGE} + +# Install-info-altdir does not actually exist. +# Maybe somebody will write it. +if test -x /usr/sbin/install-info-altdir; then + echo install/${PACKAGE}: install Info links for ${FLAVOR} + install-info-altdir --quiet --section "" "" --dirname=${FLAVOR} /usr/share/info/${PACKAGE}.info.gz +fi + +install -m 755 -d ${ELCDIR} +cd ${ELDIR} +FILES=`echo *.el` +cp ${FILES} ${ELCDIR} +cd ${ELCDIR} + +cat << EOF > path.el +(setq load-path (cons "." load-path) byte-compile-warnings nil) +EOF +${FLAVOR} ${FLAGS} ${FILES} +rm -f *.el path.el + +exit 0 diff -Nru spice-0.10.0/debian/emacsen-remove.ex spice-0.10.1/debian/emacsen-remove.ex --- spice-0.10.0/debian/emacsen-remove.ex 1970-01-01 00:00:00.000000000 +0000 +++ spice-0.10.1/debian/emacsen-remove.ex 2012-01-28 07:22:11.000000000 +0000 @@ -0,0 +1,15 @@ +#!/bin/sh -e +# /usr/lib/emacsen-common/packages/remove/spice + +FLAVOR=$1 +PACKAGE=spice + +if [ ${FLAVOR} != emacs ]; then + if test -x /usr/sbin/install-info-altdir; then + echo remove/${PACKAGE}: removing Info links for ${FLAVOR} + install-info-altdir --quiet --remove --dirname=${FLAVOR} /usr/share/info/spice.info.gz + fi + + echo remove/${PACKAGE}: purging byte-compiled files for ${FLAVOR} + rm -rf /usr/share/${FLAVOR}/site-lisp/${PACKAGE} +fi diff -Nru spice-0.10.0/debian/emacsen-startup.ex spice-0.10.1/debian/emacsen-startup.ex --- spice-0.10.0/debian/emacsen-startup.ex 1970-01-01 00:00:00.000000000 +0000 +++ spice-0.10.1/debian/emacsen-startup.ex 2012-01-28 07:22:11.000000000 +0000 @@ -0,0 +1,25 @@ +;; -*-emacs-lisp-*- +;; +;; Emacs startup file, e.g. /etc/emacs/site-start.d/50spice.el +;; for the Debian spice package +;; +;; Originally contributed by Nils Naumann +;; Modified by Dirk Eddelbuettel +;; Adapted for dh-make by Jim Van Zandt + +;; The spice package follows the Debian/GNU Linux 'emacsen' policy and +;; byte-compiles its elisp files for each 'emacs flavor' (emacs19, +;; xemacs19, emacs20, xemacs20...). The compiled code is then +;; installed in a subdirectory of the respective site-lisp directory. +;; We have to add this to the load-path: +(let ((package-dir (concat "/usr/share/" + (symbol-name flavor) + "/site-lisp/spice"))) +;; If package-dir does not exist, the spice package must have +;; removed but not purged, and we should skip the setup. + (when (file-directory-p package-dir) + (setq load-path (cons package-dir load-path)) + (autoload 'spice-mode "spice-mode" + "Major mode for editing spice files." t) + (add-to-list 'auto-mode-alist '("\\.spice$" . spice-mode)))) + diff -Nru spice-0.10.0/debian/init.d.ex spice-0.10.1/debian/init.d.ex --- spice-0.10.0/debian/init.d.ex 1970-01-01 00:00:00.000000000 +0000 +++ spice-0.10.1/debian/init.d.ex 2012-01-28 07:22:11.000000000 +0000 @@ -0,0 +1,154 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: spice +# Required-Start: $network $local_fs +# Required-Stop: +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: +# Description: +# <...> +# <...> +### END INIT INFO + +# Author: boris + +# PATH should only include /usr/* if it runs after the mountnfs.sh script +PATH=/sbin:/usr/sbin:/bin:/usr/bin +DESC=spice # Introduce a short description here +NAME=spice # Introduce the short server's name here +DAEMON=/usr/sbin/spice # Introduce the server's location here +DAEMON_ARGS="" # Arguments to run the daemon with +PIDFILE=/var/run/$NAME.pid +SCRIPTNAME=/etc/init.d/$NAME + +# Exit if the package is not installed +[ -x $DAEMON ] || exit 0 + +# Read configuration variable file if it is present +[ -r /etc/default/$NAME ] && . /etc/default/$NAME + +# Load the VERBOSE setting and other rcS variables +. /lib/init/vars.sh + +# Define LSB log_* functions. +# Depend on lsb-base (>= 3.0-6) to ensure that this file is present. +. /lib/lsb/init-functions + +# +# Function that starts the daemon/service +# +do_start() +{ + # Return + # 0 if daemon has been started + # 1 if daemon was already running + # 2 if daemon could not be started + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ + || return 1 + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \ + $DAEMON_ARGS \ + || return 2 + # Add code here, if necessary, that waits for the process to be ready + # to handle requests from services started subsequently which depend + # on this one. As a last resort, sleep for some time. +} + +# +# Function that stops the daemon/service +# +do_stop() +{ + # Return + # 0 if daemon has been stopped + # 1 if daemon was already stopped + # 2 if daemon could not be stopped + # other if a failure occurred + start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME + RETVAL="$?" + [ "$RETVAL" = 2 ] && return 2 + # Wait for children to finish too if this is a daemon that forks + # and if the daemon is only ever run from this initscript. + # If the above conditions are not satisfied then add some other code + # that waits for the process to drop all resources that could be + # needed by services started subsequently. A last resort is to + # sleep for some time. + start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON + [ "$?" = 2 ] && return 2 + # Many daemons don't delete their pidfiles when they exit. + rm -f $PIDFILE + return "$RETVAL" +} + +# +# Function that sends a SIGHUP to the daemon/service +# +do_reload() { + # + # If the daemon can reload its configuration without + # restarting (for example, when it is sent a SIGHUP), + # then implement that here. + # + start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME + return 0 +} + +case "$1" in + start) + [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC " "$NAME" + do_start + case "$?" in + 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; + 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + esac + ;; + stop) + [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" + do_stop + case "$?" in + 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; + 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + esac + ;; + status) + status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? + ;; + #reload|force-reload) + # + # If do_reload() is not implemented then leave this commented out + # and leave 'force-reload' as an alias for 'restart'. + # + #log_daemon_msg "Reloading $DESC" "$NAME" + #do_reload + #log_end_msg $? + #;; + restart|force-reload) + # + # If the "reload" option is implemented then remove the + # 'force-reload' alias + # + log_daemon_msg "Restarting $DESC" "$NAME" + do_stop + case "$?" in + 0|1) + do_start + case "$?" in + 0) log_end_msg 0 ;; + 1) log_end_msg 1 ;; # Old process is still running + *) log_end_msg 1 ;; # Failed to start + esac + ;; + *) + # Failed to stop + log_end_msg 1 + ;; + esac + ;; + *) + #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 + echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 + exit 3 + ;; +esac + +: diff -Nru spice-0.10.0/debian/libspice-server1.symbols spice-0.10.1/debian/libspice-server1.symbols --- spice-0.10.0/debian/libspice-server1.symbols 2011-12-08 06:09:12.000000000 +0000 +++ spice-0.10.1/debian/libspice-server1.symbols 2012-01-28 07:25:04.000000000 +0000 @@ -15,13 +15,11 @@ celt051_mode_destroy@Base 0.8.2 celt051_mode_info@Base 0.8.2 libspice-server.so.1 libspice-server1 #MINVER# - SPICE_SERVER_0.10.0@SPICE_SERVER_0.10.0 0.10.0 SPICE_SERVER_0.6.0@SPICE_SERVER_0.6.0 0.8.2 SPICE_SERVER_0.6.1@SPICE_SERVER_0.6.1 0.8.2 SPICE_SERVER_0.8.0@SPICE_SERVER_0.8.0 0.8.2 SPICE_SERVER_0.8.1@SPICE_SERVER_0.8.1 0.8.2 SPICE_SERVER_0.8.2@SPICE_SERVER_0.8.2 0.8.2 - SPICE_SERVER_0.8.3@SPICE_SERVER_0.8.3 0.8.3 spice_get_current_compat_version@SPICE_SERVER_0.6.1 0.8.2 spice_qxl_add_memslot@SPICE_SERVER_0.8.2 0.8.2 spice_qxl_add_memslot_async@SPICE_SERVER_0.8.2 0.8.2 @@ -51,13 +49,11 @@ spice_server_char_device_wakeup@SPICE_SERVER_0.6.0 0.8.2 spice_server_destroy@SPICE_SERVER_0.6.0 0.8.2 spice_server_get_image_compression@SPICE_SERVER_0.6.0 0.8.2 - spice_server_get_num_clients@SPICE_SERVER_0.10.0 0.10.0 spice_server_get_peer_info@SPICE_SERVER_0.6.0 0.8.2 spice_server_get_sock_info@SPICE_SERVER_0.6.0 0.8.2 spice_server_init@SPICE_SERVER_0.6.0 0.8.2 spice_server_kbd_leds@SPICE_SERVER_0.6.0 0.8.2 spice_server_migrate_client_state@SPICE_SERVER_0.6.0 0.8.2 - spice_server_migrate_connect@SPICE_SERVER_0.8.3 0.8.3 spice_server_migrate_end@SPICE_SERVER_0.6.0 0.8.2 spice_server_migrate_info@SPICE_SERVER_0.6.0 0.8.2 spice_server_migrate_start@SPICE_SERVER_0.6.0 0.8.2 @@ -65,13 +61,9 @@ spice_server_new@SPICE_SERVER_0.6.0 0.8.2 spice_server_playback_get_buffer@SPICE_SERVER_0.6.0 0.8.2 spice_server_playback_put_samples@SPICE_SERVER_0.6.0 0.8.2 - spice_server_playback_set_mute@SPICE_SERVER_0.10.0 0.10.0 - spice_server_playback_set_volume@SPICE_SERVER_0.10.0 0.10.0 spice_server_playback_start@SPICE_SERVER_0.6.0 0.8.2 spice_server_playback_stop@SPICE_SERVER_0.6.0 0.8.2 spice_server_record_get_samples@SPICE_SERVER_0.6.0 0.8.2 - spice_server_record_set_mute@SPICE_SERVER_0.10.0 0.10.0 - spice_server_record_set_volume@SPICE_SERVER_0.10.0 0.10.0 spice_server_record_start@SPICE_SERVER_0.6.0 0.8.2 spice_server_record_stop@SPICE_SERVER_0.6.0 0.8.2 spice_server_remove_interface@SPICE_SERVER_0.6.0 0.8.2 diff -Nru spice-0.10.0/debian/manpage.1.ex spice-0.10.1/debian/manpage.1.ex --- spice-0.10.0/debian/manpage.1.ex 1970-01-01 00:00:00.000000000 +0000 +++ spice-0.10.1/debian/manpage.1.ex 2012-01-28 07:22:11.000000000 +0000 @@ -0,0 +1,59 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH SPICE SECTION "January 28, 2012" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +spice \- program to do something +.SH SYNOPSIS +.B spice +.RI [ options ] " files" ... +.br +.B bar +.RI [ options ] " files" ... +.SH DESCRIPTION +This manual page documents briefly the +.B spice +and +.B bar +commands. +.PP +.\" TeX users may be more comfortable with the \fB\fP and +.\" \fI\fP escape sequences to invode bold face and italics, +.\" respectively. +\fBspice\fP is a program that... +.SH OPTIONS +These programs follow the usual GNU command line syntax, with long +options starting with two dashes (`-'). +A summary of options is included below. +For a complete description, see the Info files. +.TP +.B \-h, \-\-help +Show summary of options. +.TP +.B \-v, \-\-version +Show version of program. +.SH SEE ALSO +.BR bar (1), +.BR baz (1). +.br +The programs are documented fully by +.IR "The Rise and Fall of a Fooish Bar" , +available via the Info system. +.SH AUTHOR +spice was written by . +.PP +This manual page was written by boris , +for the Debian project (and may be used by others). diff -Nru spice-0.10.0/debian/manpage.sgml.ex spice-0.10.1/debian/manpage.sgml.ex --- spice-0.10.0/debian/manpage.sgml.ex 1970-01-01 00:00:00.000000000 +0000 +++ spice-0.10.1/debian/manpage.sgml.ex 2012-01-28 07:22:11.000000000 +0000 @@ -0,0 +1,154 @@ + manpage.1'. You may view + the manual page with: `docbook-to-man manpage.sgml | nroff -man | + less'. A typical entry in a Makefile or Makefile.am is: + +manpage.1: manpage.sgml + docbook-to-man $< > $@ + + + The docbook-to-man binary is found in the docbook-to-man package. + Please remember that if you create the nroff version in one of the + debian/rules file targets (such as build), you will need to include + docbook-to-man in your Build-Depends control field. + + --> + + + FIRSTNAME"> + SURNAME"> + + January 28, 2012"> + + SECTION"> + bderzhavets@yahoo.com"> + + SPICE"> + + + Debian"> + GNU"> + GPL"> +]> + + + +
+ &dhemail; +
+ + &dhfirstname; + &dhsurname; + + + 2003 + &dhusername; + + &dhdate; +
+ + &dhucpackage; + + &dhsection; + + + &dhpackage; + + program to do something + + + + &dhpackage; + + + + + + + + DESCRIPTION + + This manual page documents briefly the + &dhpackage; and bar + commands. + + This manual page was written for the &debian; distribution + because the original program does not have a manual page. + Instead, it has documentation in the &gnu; + Info format; see below. + + &dhpackage; is a program that... + + + + OPTIONS + + These programs follow the usual &gnu; command line syntax, + with long options starting with two dashes (`-'). A summary of + options is included below. For a complete description, see the + Info files. + + + + + + + + Show summary of options. + + + + + + + + Show version of program. + + + + + + SEE ALSO + + bar (1), baz (1). + + The programs are documented fully by The Rise and + Fall of a Fooish Bar available via the + Info system. + + + AUTHOR + + This manual page was written by &dhusername; &dhemail; for + the &debian; system (and may be used by others). Permission is + granted to copy, distribute and/or modify this document under + the terms of the &gnu; General Public License, Version 2 any + later version published by the Free Software Foundation. + + + On Debian systems, the complete text of the GNU General Public + License can be found in /usr/share/common-licenses/GPL. + + + +
+ + diff -Nru spice-0.10.0/debian/manpage.xml.ex spice-0.10.1/debian/manpage.xml.ex --- spice-0.10.0/debian/manpage.xml.ex 1970-01-01 00:00:00.000000000 +0000 +++ spice-0.10.1/debian/manpage.xml.ex 2012-01-28 07:22:11.000000000 +0000 @@ -0,0 +1,291 @@ + +.
will be generated. You may view the +manual page with: nroff -man .
| less'. A typical entry +in a Makefile or Makefile.am is: + +DB2MAN = /usr/share/sgml/docbook/stylesheet/xsl/docbook-xsl/manpages/docbook.xsl +XP = xsltproc -''-nonet -''-param man.charmap.use.subset "0" + +manpage.1: manpage.xml + $(XP) $(DB2MAN) $< + +The xsltproc binary is found in the xsltproc package. The XSL files are in +docbook-xsl. A description of the parameters you can use can be found in the +docbook-xsl-doc-* packages. Please remember that if you create the nroff +version in one of the debian/rules file targets (such as build), you will need +to include xsltproc and docbook-xsl in your Build-Depends control field. +Alternatively use the xmlto command/package. That will also automatically +pull in xsltproc and docbook-xsl. + +Notes for using docbook2x: docbook2x-man does not automatically create the +AUTHOR(S) and COPYRIGHT sections. In this case, please add them manually as + ... . + +To disable the automatic creation of the AUTHOR(S) and COPYRIGHT sections +read /usr/share/doc/docbook-xsl/doc/manpages/authors.html. This file can be +found in the docbook-xsl-doc-html package. + +Validation can be done using: `xmllint -''-noout -''-valid manpage.xml` + +General documentation about man-pages and man-page-formatting: +man(1), man(7), http://www.tldp.org/HOWTO/Man-Page/ + +--> + + + + + + + + + + + + + +]> + + + + &dhtitle; + &dhpackage; + + + &dhfirstname; + &dhsurname; + Wrote this manpage for the Debian system. +
+ &dhemail; +
+
+
+ + 2007 + &dhusername; + + + This manual page was written for the Debian system + (and may be used by others). + Permission is granted to copy, distribute and/or modify this + document under the terms of the GNU General Public License, + Version 2 or (at your option) any later version published by + the Free Software Foundation. + On Debian systems, the complete text of the GNU General Public + License can be found in + /usr/share/common-licenses/GPL. + +
+ + &dhucpackage; + &dhsection; + + + &dhpackage; + program to do something + + + + &dhpackage; + + + + + + + + + this + + + + + + + + this + that + + + + + &dhpackage; + + + + + + + + + + + + + + + + + + + DESCRIPTION + This manual page documents briefly the + &dhpackage; and bar + commands. + This manual page was written for the Debian distribution + because the original program does not have a manual page. + Instead, it has documentation in the GNU + info + 1 + format; see below. + &dhpackage; is a program that... + + + OPTIONS + The program follows the usual GNU command line syntax, + with long options starting with two dashes (`-'). A summary of + options is included below. For a complete description, see the + + info + 1 + files. + + + + + + + Does this and that. + + + + + + + Show summary of options. + + + + + + + Show version of program. + + + + + + FILES + + + /etc/foo.conf + + The system-wide configuration file to control the + behaviour of &dhpackage;. See + + foo.conf + 5 + for further details. + + + + ${HOME}/.foo.conf + + The per-user configuration file to control the + behaviour of &dhpackage;. See + + foo.conf + 5 + for further details. + + + + + + ENVIONMENT + + + FOO_CONF + + If used, the defined file is used as configuration + file (see also ). + + + + + + DIAGNOSTICS + The following diagnostics may be issued + on stderr: + + + Bad configuration file. Exiting. + + The configuration file seems to contain a broken configuration + line. Use the option, to get more info. + + + + + &dhpackage; provides some return codes, that can + be used in scripts: + + Code + Diagnostic + + 0 + Program exited successfully. + + + 1 + The configuration file seems to be broken. + + + + + + BUGS + The program is currently limited to only work + with the foobar library. + The upstreams BTS can be found + at . + + + SEE ALSO + + + bar + 1 + , + baz + 1 + , + foo.conf + 5 + + The programs are documented fully by The Rise and + Fall of a Fooish Bar available via the + info + 1 + system. + +
+ diff -Nru spice-0.10.0/debian/menu.ex spice-0.10.1/debian/menu.ex --- spice-0.10.0/debian/menu.ex 1970-01-01 00:00:00.000000000 +0000 +++ spice-0.10.1/debian/menu.ex 2012-01-28 07:22:11.000000000 +0000 @@ -0,0 +1,2 @@ +?package(spice):needs="X11|text|vc|wm" section="Applications/see-menu-manual"\ + title="spice" command="/usr/bin/spice" diff -Nru spice-0.10.0/debian/patches/disable-werror.patch spice-0.10.1/debian/patches/disable-werror.patch --- spice-0.10.0/debian/patches/disable-werror.patch 1970-01-01 00:00:00.000000000 +0000 +++ spice-0.10.1/debian/patches/disable-werror.patch 2012-01-28 07:25:04.000000000 +0000 @@ -0,0 +1,11 @@ +--- a/configure 2011-07-22 20:39:14.000000000 +0100 ++++ b/configure 2011-08-04 15:04:59.261149676 +0100 +@@ -18227,7 +18227,7 @@ + if test "$red_target" = "windows"; then + MAYBE_WARN="-Wall -Wno-sign-compare -Wno-deprecated-declarations" + else +- MAYBE_WARN="-Wall -Wno-sign-compare -Werror -Wno-deprecated-declarations" ++ MAYBE_WARN="-Wall -Wno-sign-compare -Wno-deprecated-declarations" + fi + + # Check whether --enable-werror was given. diff -Nru spice-0.10.0/debian/patches/drop-unnecessary-build-request.patch spice-0.10.1/debian/patches/drop-unnecessary-build-request.patch --- spice-0.10.0/debian/patches/drop-unnecessary-build-request.patch 1970-01-01 00:00:00.000000000 +0000 +++ spice-0.10.1/debian/patches/drop-unnecessary-build-request.patch 2012-01-28 07:25:04.000000000 +0000 @@ -0,0 +1,55 @@ +From: Hans de Goede +Subject: Drop unnecessary X11 and alsa requires from spice-server.pc +Origin: upstream, http://cgit.freedesktop.org/spice/spice/commit/?h=0.8&id=54c660470a5aea19f799c5574cc0d4a707696712 +--- a/configure.ac ++++ b/configure.ac +@@ -219,7 +219,6 @@ + PKG_CHECK_MODULES(ALSA, alsa) + AC_SUBST(ALSA_CFLAGS) + AC_SUBST(ALSA_LIBS) +- SPICE_REQUIRES+=" alsa" + fi + + PKG_CHECK_MODULES(SSL, openssl) +@@ -253,7 +252,6 @@ + PKG_CHECK_MODULES(XFIXES, xfixes) + AC_SUBST(XRANDR_CFLAGS) + AC_SUBST(XRANDR_LIBS) +- SPICE_REQUIRES+=" xrandr xfixes" + + PKG_CHECK_MODULES(XRANDR12, + xrandr >= 1.2, +@@ -272,7 +270,6 @@ + PKG_CHECK_MODULES(MISC_X, x11 xext xrender) + AC_SUBST(MISC_X_CFLAGS) + AC_SUBST(MISC_X_LIBS) +- SPICE_REQUIRES+=" x11 xext xrender" + fi + + # Add parameter for (partial) static linkage of spice client. +--- a/configure ++++ b/configure +@@ -16907,7 +16907,6 @@ + fi + + +- SPICE_REQUIRES+=" alsa" + fi + + +@@ -17293,7 +17292,6 @@ + fi + + +- SPICE_REQUIRES+=" xrandr xfixes" + + + pkg_failed=no +@@ -17476,7 +17474,6 @@ + fi + + +- SPICE_REQUIRES+=" x11 xext xrender" + fi + + # Add parameter for (partial) static linkage of spice client. diff -Nru spice-0.10.0/debian/patches/fix-typo-in-cmd_line_parser-cpp.patch spice-0.10.1/debian/patches/fix-typo-in-cmd_line_parser-cpp.patch --- spice-0.10.0/debian/patches/fix-typo-in-cmd_line_parser-cpp.patch 1970-01-01 00:00:00.000000000 +0000 +++ spice-0.10.1/debian/patches/fix-typo-in-cmd_line_parser-cpp.patch 2012-01-28 07:25:04.000000000 +0000 @@ -0,0 +1,13 @@ +Fix typo in client/cmd_line_parser.cpp + seperator -> separator +--- a/client/cmd_line_parser.cpp ++++ b/client/cmd_line_parser.cpp +@@ -140,7 +140,7 @@ + } + + if (!ispunct(seperator)) { +- THROW("invalid seperator"); ++ THROW("invalid separator"); + } + + Option* opt = find(id); diff -Nru spice-0.10.0/debian/patches/fix-typo-in-record-cpp.patch spice-0.10.1/debian/patches/fix-typo-in-record-cpp.patch --- spice-0.10.0/debian/patches/fix-typo-in-record-cpp.patch 1970-01-01 00:00:00.000000000 +0000 +++ spice-0.10.1/debian/patches/fix-typo-in-record-cpp.patch 2012-01-28 07:25:04.000000000 +0000 @@ -0,0 +1,13 @@ +Fix typo in client/x11/record.cpp: + seperator -> separator +--- a/client/x11/record.cpp ++++ b/client/x11/record.cpp +@@ -179,7 +179,7 @@ + } + + if ((err = snd_pcm_sw_params_set_start_threshold(_pcm, _sw_params, frame_size)) < 0) { +- LOG_ERROR("cannot set start treshold %s", snd_strerror(err)); ++ LOG_ERROR("cannot set start threshold %s", snd_strerror(err)); + return false; + } + diff -Nru spice-0.10.0/debian/patches/series spice-0.10.1/debian/patches/series --- spice-0.10.0/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 +++ spice-0.10.1/debian/patches/series 2012-01-28 07:25:04.000000000 +0000 @@ -0,0 +1,5 @@ +# fix-typo-in-record-cpp.patch +# fix-typo-in-cmd_line_parser-cpp.patch +# drop-unnecessary-build-request.patch +# use-requires-private-for-libspice-pkgconfig.patch +# disable-werror.patch diff -Nru spice-0.10.0/debian/patches/use-requires-private-for-libspice-pkgconfig.patch spice-0.10.1/debian/patches/use-requires-private-for-libspice-pkgconfig.patch --- spice-0.10.0/debian/patches/use-requires-private-for-libspice-pkgconfig.patch 1970-01-01 00:00:00.000000000 +0000 +++ spice-0.10.1/debian/patches/use-requires-private-for-libspice-pkgconfig.patch 2012-01-28 07:25:04.000000000 +0000 @@ -0,0 +1,14 @@ +Use Requires.private pkg-config variable instead of Requires +for internal libspice-server libraries. + +--- spice.orig/spice-server.pc.in ++++ spice/spice-server.pc.in +@@ -7,7 +7,7 @@ + Description: SPICE server library + Version: @VERSION@ + +-Requires: @SPICE_REQUIRES@ ++Requires.private: @SPICE_REQUIRES@ + Libs: -L${libdir} -lspice-server + Libs.private: @SPICE_NONPKGCONFIG_LIBS@ + Cflags: -I${includedir}/spice-server diff -Nru spice-0.10.0/debian/postinst.ex spice-0.10.1/debian/postinst.ex --- spice-0.10.0/debian/postinst.ex 1970-01-01 00:00:00.000000000 +0000 +++ spice-0.10.1/debian/postinst.ex 2012-01-28 07:22:11.000000000 +0000 @@ -0,0 +1,39 @@ +#!/bin/sh +# postinst script for spice +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `configure' +# * `abort-upgrade' +# * `abort-remove' `in-favour' +# +# * `abort-remove' +# * `abort-deconfigure' `in-favour' +# `removing' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + configure) + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff -Nru spice-0.10.0/debian/postrm.ex spice-0.10.1/debian/postrm.ex --- spice-0.10.0/debian/postrm.ex 1970-01-01 00:00:00.000000000 +0000 +++ spice-0.10.1/debian/postrm.ex 2012-01-28 07:22:11.000000000 +0000 @@ -0,0 +1,37 @@ +#!/bin/sh +# postrm script for spice +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `remove' +# * `purge' +# * `upgrade' +# * `failed-upgrade' +# * `abort-install' +# * `abort-install' +# * `abort-upgrade' +# * `disappear' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) + ;; + + *) + echo "postrm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff -Nru spice-0.10.0/debian/preinst.ex spice-0.10.1/debian/preinst.ex --- spice-0.10.0/debian/preinst.ex 1970-01-01 00:00:00.000000000 +0000 +++ spice-0.10.1/debian/preinst.ex 2012-01-28 07:22:11.000000000 +0000 @@ -0,0 +1,35 @@ +#!/bin/sh +# preinst script for spice +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `install' +# * `install' +# * `upgrade' +# * `abort-upgrade' +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + install|upgrade) + ;; + + abort-upgrade) + ;; + + *) + echo "preinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff -Nru spice-0.10.0/debian/prerm.ex spice-0.10.1/debian/prerm.ex --- spice-0.10.0/debian/prerm.ex 1970-01-01 00:00:00.000000000 +0000 +++ spice-0.10.1/debian/prerm.ex 2012-01-28 07:22:11.000000000 +0000 @@ -0,0 +1,38 @@ +#!/bin/sh +# prerm script for spice +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `remove' +# * `upgrade' +# * `failed-upgrade' +# * `remove' `in-favour' +# * `deconfigure' `in-favour' +# `removing' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + remove|upgrade|deconfigure) + ;; + + failed-upgrade) + ;; + + *) + echo "prerm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff -Nru spice-0.10.0/debian/rules spice-0.10.1/debian/rules --- spice-0.10.0/debian/rules 2011-12-08 07:32:11.000000000 +0000 +++ spice-0.10.1/debian/rules 2012-01-28 07:25:04.000000000 +0000 @@ -21,7 +21,9 @@ build: build-stamp build-stamp: build-celt-stamp - CELT051_CFLAGS="-I$(CURDIR)" CELT051_LIBS="-L$(CURDIR)/celt051/.libs -lcelt051 -lm" ./configure --prefix=/usr + [ -f celt/config.log ] || rm -f celt/config.log + [ -f celt/config.status ] || rm -f celt/config.status + CELT051_CFLAGS="-I$(CURDIR)" CELT051_LIBS="-L$(CURDIR)/celt051/.libs -lcelt051 -lm" ./configure --prefix=/usr $(MAKE) touch build-stamp @@ -32,21 +34,17 @@ touch build-celt-stamp clean: clean-patched -clean-patched: clean-spice +clean-patched: dh_testdir dh_testroot + [ ! -f Makefile ] || $(MAKE) distclean [ ! -f celt/Makefile ] || $(MAKE) -C celt distclean - rm -f celt051 celt/celt051.pc - rm -f stamp-h1 - dh_clean + -rm celt051 celt/celt051.pc + dh_clean clean-spice: - [ ! -f Makefile ] || $(MAKE) clean - [ ! -f server/Makefile ] || $(MAKE) -C server distclean - [ ! -f client/Makefile ] || $(MAKE) -C client distclean - rm -f common/Makefile common/win/Makefile - rm -f Makefile build-celt-stamp celt051 config.h config.log config.status libtool python_modules/Makefile spice-server.pc - rm -f python_modules/*.pyc + [ ! -f Makefile ] || $(MAKE) distclean + rm build-stamp install: install-stamp install-stamp: build-stamp @@ -55,7 +53,7 @@ dh_prep dh_installdirs $(MAKE) -C celt install DESTDIR=$(CURDIR)/debian/tmp - $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp + $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp dh_install --sourcedir=debian/tmp touch install-stamp diff -Nru spice-0.10.0/debian/source/options spice-0.10.1/debian/source/options --- spice-0.10.0/debian/source/options 2011-12-08 06:09:12.000000000 +0000 +++ spice-0.10.1/debian/source/options 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -diff-ignore = common/win/my_getopt-1.5/Makefile|.git diff -Nru spice-0.10.0/debian/spice.cron.d.ex spice-0.10.1/debian/spice.cron.d.ex --- spice-0.10.0/debian/spice.cron.d.ex 1970-01-01 00:00:00.000000000 +0000 +++ spice-0.10.1/debian/spice.cron.d.ex 2012-01-28 07:22:11.000000000 +0000 @@ -0,0 +1,4 @@ +# +# Regular cron jobs for the spice package +# +0 4 * * * root [ -x /usr/bin/spice_maintenance ] && /usr/bin/spice_maintenance diff -Nru spice-0.10.0/debian/spice.default.ex spice-0.10.1/debian/spice.default.ex --- spice-0.10.0/debian/spice.default.ex 1970-01-01 00:00:00.000000000 +0000 +++ spice-0.10.1/debian/spice.default.ex 2012-01-28 07:22:11.000000000 +0000 @@ -0,0 +1,10 @@ +# Defaults for spice initscript +# sourced by /etc/init.d/spice +# installed at /etc/default/spice by the maintainer scripts + +# +# This is a POSIX shell fragment +# + +# Additional options that are passed to the Daemon. +DAEMON_OPTS="" diff -Nru spice-0.10.0/debian/spice.doc-base.EX spice-0.10.1/debian/spice.doc-base.EX --- spice-0.10.0/debian/spice.doc-base.EX 1970-01-01 00:00:00.000000000 +0000 +++ spice-0.10.1/debian/spice.doc-base.EX 2012-01-28 07:22:11.000000000 +0000 @@ -0,0 +1,20 @@ +Document: spice +Title: Debian spice Manual +Author: +Abstract: This manual describes what spice is + and how it can be used to + manage online manuals on Debian systems. +Section: unknown + +Format: debiandoc-sgml +Files: /usr/share/doc/spice/spice.sgml.gz + +Format: postscript +Files: /usr/share/doc/spice/spice.ps.gz + +Format: text +Files: /usr/share/doc/spice/spice.text.gz + +Format: HTML +Index: /usr/share/doc/spice/html/index.html +Files: /usr/share/doc/spice/html/*.html diff -Nru spice-0.10.0/debian/watch.ex spice-0.10.1/debian/watch.ex --- spice-0.10.0/debian/watch.ex 1970-01-01 00:00:00.000000000 +0000 +++ spice-0.10.1/debian/watch.ex 2012-01-28 07:22:11.000000000 +0000 @@ -0,0 +1,23 @@ +# Example watch control file for uscan +# Rename this file to "watch" and then you can run the "uscan" command +# to check for upstream updates and more. +# See uscan(1) for format + +# Compulsory line, this is a version 3 file +version=3 + +# Uncomment to examine a Webpage +# +#http://www.example.com/downloads.php spice-(.*)\.tar\.gz + +# Uncomment to examine a Webserver directory +#http://www.example.com/pub/spice-(.*)\.tar\.gz + +# Uncommment to examine a FTP server +#ftp://ftp.example.com/pub/spice-(.*)\.tar\.gz debian uupdate + +# Uncomment to find new files on sourceforge, for devscripts >= 2.9 +# http://sf.net/spice/spice-(.*)\.tar\.gz + +# Uncomment to find new files on GooglePages +# http://example.googlepages.com/foo.html spice-(.*)\.tar\.gz diff -Nru spice-0.10.0/ltmain.sh spice-0.10.1/ltmain.sh --- spice-0.10.0/ltmain.sh 2011-11-10 15:02:12.000000000 +0000 +++ spice-0.10.1/ltmain.sh 2012-01-23 14:17:00.000000000 +0000 @@ -1,9 +1,9 @@ -# libtool (GNU libtool) 2.4 +# libtool (GNU libtool) 2.4.2 # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, -# 2007, 2008, 2009, 2010 Free Software Foundation, Inc. +# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. @@ -41,6 +41,7 @@ # --quiet, --silent don't print informational messages # --no-quiet, --no-silent # print informational messages (default) +# --no-warn don't display warning messages # --tag=TAG use configuration variables from tag TAG # -v, --verbose print more informational messages than default # --no-verbose don't print the extra informational messages @@ -69,7 +70,7 @@ # compiler: $LTCC # compiler flags: $LTCFLAGS # linker: $LD (gnu? $with_gnu_ld) -# $progname: (GNU libtool) 2.4 +# $progname: (GNU libtool) 2.4.2 # automake: $automake_version # autoconf: $autoconf_version # @@ -79,9 +80,9 @@ PROGRAM=libtool PACKAGE=libtool -VERSION=2.4 +VERSION=2.4.2 TIMESTAMP="" -package_revision=1.3293 +package_revision=1.3337 # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then @@ -136,15 +137,10 @@ : ${CP="cp -f"} test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} -: ${EGREP="/bin/grep -E"} -: ${FGREP="/bin/grep -F"} -: ${GREP="/bin/grep"} -: ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} -: ${SED="/bin/sed"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} : ${Xsed="$SED -e 1s/^X//"} @@ -387,7 +383,7 @@ ;; *) save_IFS="$IFS" - IFS=: + IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS="$save_IFS" test -x "$progdir/$progname" && break @@ -771,8 +767,8 @@ s*\$LTCFLAGS*'"$LTCFLAGS"'* s*\$LD*'"$LD"'* s/\$with_gnu_ld/'"$with_gnu_ld"'/ - s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ - s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ + s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ + s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ p d } @@ -1052,6 +1048,7 @@ opt_help=false opt_help_all=false opt_silent=: +opt_warning=: opt_verbose=: opt_silent=false opt_verbose=false @@ -1120,6 +1117,10 @@ opt_silent=false func_append preserve_args " $opt" ;; + --no-warning|--no-warn) + opt_warning=false +func_append preserve_args " $opt" + ;; --no-verbose) opt_verbose=false func_append preserve_args " $opt" @@ -2059,7 +2060,7 @@ *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ - *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup) + *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; @@ -3201,11 +3202,13 @@ # Set up the ranlib parameters. oldlib="$destdir/$name" + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then - func_show_eval "$old_striplib $oldlib" 'exit $?' + func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. @@ -3470,7 +3473,7 @@ # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. - *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; @@ -3982,14 +3985,17 @@ # launches target application with the remaining arguments. func_exec_program () { - for lt_wr_arg - do - case \$lt_wr_arg in - --lt-*) ;; - *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; - esac - shift - done + case \" \$* \" in + *\\ --lt-*) + for lt_wr_arg + do + case \$lt_wr_arg in + --lt-*) ;; + *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; + esac + shift + done ;; + esac func_exec_program_core \${1+\"\$@\"} } @@ -5057,9 +5063,15 @@ { EOF func_emit_wrapper yes | - $SED -e 's/\([\\"]\)/\\\1/g' \ - -e 's/^/ fputs ("/' -e 's/$/\\n", f);/' - + $SED -n -e ' +s/^\(.\{79\}\)\(..*\)/\1\ +\2/ +h +s/\([\\"]\)/\\\1/g +s/$/\\n/ +s/\([^\n]*\).*/ fputs ("\1", f);/p +g +D' cat <<"EOF" } EOF @@ -5643,7 +5655,8 @@ continue ;; - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" @@ -6147,7 +6160,8 @@ lib= found=no case $deplib in - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" @@ -6831,7 +6845,7 @@ test "$hardcode_direct_absolute" = no; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then - add_dir="-L$dir" + add_dir="-L$absdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in @@ -7316,6 +7330,7 @@ # which has an extra 1 added just for fun # case $version_type in + # correct linux to gnu/linux during the next big refactor darwin|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result @@ -7432,7 +7447,7 @@ versuffix="$major.$revision" ;; - linux) + linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" @@ -8020,6 +8035,11 @@ # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then + # Remove ${wl} instances when linking with ld. + # FIXME: should test the right _cmds variable. + case $archive_cmds in + *\$LD\ *) wl= ;; + esac if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= @@ -8050,7 +8070,7 @@ elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; - *) func_apped perm_rpath " $libdir" ;; + *) func_append perm_rpath " $libdir" ;; esac fi done @@ -8058,11 +8078,7 @@ if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" - if test -n "$hardcode_libdir_flag_spec_ld"; then - eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" - else - eval dep_rpath=\"$hardcode_libdir_flag_spec\" - fi + eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. @@ -9152,6 +9168,8 @@ esac done fi + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" @@ -9261,7 +9279,8 @@ *.la) func_basename "$deplib" name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + func_resolve_sysroot "$deplib" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" diff -Nru spice-0.10.0/Makefile.in spice-0.10.1/Makefile.in --- spice-0.10.0/Makefile.in 2011-11-10 15:02:17.000000000 +0000 +++ spice-0.10.1/Makefile.in 2012-01-23 15:23:23.000000000 +0000 @@ -247,6 +247,8 @@ WINDRES = @WINDRES@ XFIXES_CFLAGS = @XFIXES_CFLAGS@ XFIXES_LIBS = @XFIXES_LIBS@ +XINERAMA_CFLAGS = @XINERAMA_CFLAGS@ +XINERAMA_LIBS = @XINERAMA_LIBS@ XRANDR12_CFLAGS = @XRANDR12_CFLAGS@ XRANDR12_LIBS = @XRANDR12_LIBS@ XRANDR_CFLAGS = @XRANDR_CFLAGS@ diff -Nru spice-0.10.0/NEWS spice-0.10.1/NEWS --- spice-0.10.0/NEWS 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/NEWS 2012-01-23 15:21:14.000000000 +0000 @@ -1,3 +1,11 @@ +Major changes in 0.10.1: +======================== +* Mini header support +* Add server API for injecting a client connection socket +* Add Xinerama support to spicec +* Many bugfixes / code cleanups +* Requires spice-protocol >= 0.10.1 + Major changes in 0.10.0: ======================== * 32 bit (little endian) server builds. diff -Nru spice-0.10.0/python_modules/Makefile.am spice-0.10.1/python_modules/Makefile.am --- spice-0.10.0/python_modules/Makefile.am 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/python_modules/Makefile.am 2012-01-18 10:19:15.000000000 +0000 @@ -3,4 +3,3 @@ PYTHON_MODULES = __init__.py codegen.py demarshal.py marshal.py ptypes.py spice_parser.py EXTRA_DIST = $(PYTHON_MODULES) - diff -Nru spice-0.10.0/python_modules/Makefile.in spice-0.10.1/python_modules/Makefile.in --- spice-0.10.0/python_modules/Makefile.in 2011-11-10 15:02:16.000000000 +0000 +++ spice-0.10.1/python_modules/Makefile.in 2012-01-23 15:23:23.000000000 +0000 @@ -166,6 +166,8 @@ WINDRES = @WINDRES@ XFIXES_CFLAGS = @XFIXES_CFLAGS@ XFIXES_LIBS = @XFIXES_LIBS@ +XINERAMA_CFLAGS = @XINERAMA_CFLAGS@ +XINERAMA_LIBS = @XINERAMA_LIBS@ XRANDR12_CFLAGS = @XRANDR12_CFLAGS@ XRANDR12_LIBS = @XRANDR12_LIBS@ XRANDR_CFLAGS = @XRANDR_CFLAGS@ diff -Nru spice-0.10.0/python_modules/ptypes.py spice-0.10.1/python_modules/ptypes.py --- spice-0.10.0/python_modules/ptypes.py 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/python_modules/ptypes.py 2012-01-18 10:19:15.000000000 +0000 @@ -947,6 +947,9 @@ server_messages_byname = self.base.server_messages_byname.copy() client_messages = self.base.client_messages[:] client_messages_byname = self.base.client_messages_byname.copy() + + # Set default member_name, FooChannel -> foo + self.member_name = self.name[:-7].lower() else: server_messages = [] server_messages_byname = {} @@ -998,7 +1001,6 @@ def resolve(self, protocol): self.channel_type = self.channel_type.resolve() - assert(self.channel_type.member_name == None) self.channel_type.member_name = self.name return self diff -Nru spice-0.10.0/python_modules/spice_parser.py spice-0.10.1/python_modules/spice_parser.py --- spice-0.10.0/python_modules/spice_parser.py 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/python_modules/spice_parser.py 2012-01-18 10:19:15.000000000 +0000 @@ -159,4 +159,3 @@ t.register() protocol = types[-1] return protocol - diff -Nru spice-0.10.0/README spice-0.10.1/README --- spice-0.10.0/README 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/README 2012-01-18 10:19:15.000000000 +0000 @@ -1,14 +1,82 @@ -Copyright 2009 Red Hat, Inc. and/or its affiliates. + SPICE: Simple Protocol for Independent Computing Environments + ============================================================= -This program and libraries is free software; you can redistribute it -and/or modify it under the terms of the GNU Lesser General Public +SPICE is a remote display system built for virtual environments which +allows you to view a computing 'desktop' environment not only on the +machine where it is running, but from anywhere on the Internet and +from a wide variety of machine architectures. + +Installation +------------ + +The SPICE package uses GNU autotools, so the build install process +follows the standard process documented in the INSTALL file. As a +quick start you can do + + ./configure --prefix=/usr --sysconfdir=/etc \ + --localstatedir=/var --libdir=/usr/lib + make + sudo make install + +Or to install into a private user specific location + + ./configure --prefix=$HOME/spice + make + make install + +The following mandatory dependancies are required in order to +build SPICE + + Spice protocol >= 0.9.0 + Celt >= 0.5.1.1, < 0.6.0 + Pixman >= 0.17.7 + OpenSSL + libjpeg + zlib + Cyrus-SASL + +The following optional dependancies increase the available +functionality + + GE Gui >= 0.6.0, < 0.7.0 (GUI app support) + OpenGL (GUI app support) + Alsa (Linux support) + XRandR >= 1.2 (X11 support) + Xinerama >= 1.0 (X11 support) + libcacard >= 0.1.2 (Smartcard support) + Slirp (Tunnelling support) + +Communication +------------- + +To communicate with the development team, or to post patches +there is a technical mailing list: + + http://lists.freedesktop.org/mailman/listinfo/spice-devel + +There is also a mailing list for new release announcements: + + http://lists.freedesktop.org/archives/spice-announce/ + +To view known bugs, or report new bugs, in SPICE visit + + https://bugs.freedesktop.org/describecomponents.cgi?product=Spice + +Bugs found when using an OS distribution's binary packages should +be reported to the OS vendors' own bug tracker first. + +The latest SPICE code can be found in GIT at: + + http://cgit.freedesktop.org/spice/ + +Licensing +--------- + +SPICE is provided under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. +Please see the COPYING file for the complete LGPLv2+ license +terms, or visit . -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, see . +-- End of readme diff -Nru spice-0.10.0/server/demarshallers.h spice-0.10.1/server/demarshallers.h --- spice-0.10.0/server/demarshallers.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/demarshallers.h 2012-01-18 10:19:15.000000000 +0000 @@ -19,9 +19,8 @@ typedef void (*message_destructor_t)(uint8_t *message); typedef uint8_t * (*spice_parse_channel_func_t)(uint8_t *message_start, uint8_t *message_end, uint16_t message_type, int minor, - size_t *size_out, message_destructor_t *free_message); + size_t *size_out, message_destructor_t *free_message); spice_parse_channel_func_t spice_get_client_channel_parser(uint32_t channel, unsigned int *max_message_type); #endif - diff -Nru spice-0.10.0/server/dispatcher.c spice-0.10.1/server/dispatcher.c --- spice-0.10.0/server/dispatcher.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/dispatcher.c 2012-01-18 10:19:15.000000000 +0000 @@ -1,3 +1,4 @@ +#include #include #include #include diff -Nru spice-0.10.0/server/glz_encoder.c spice-0.10.1/server/glz_encoder.c --- spice-0.10.0/server/glz_encoder.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/glz_encoder.c 2012-01-18 10:19:15.000000000 +0000 @@ -308,4 +308,3 @@ return encoder->io.bytes_count; } - diff -Nru spice-0.10.0/server/glz_encoder_config.h spice-0.10.1/server/glz_encoder_config.h --- spice-0.10.0/server/glz_encoder_config.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/glz_encoder_config.h 2012-01-18 10:19:15.000000000 +0000 @@ -59,4 +59,3 @@ #endif - diff -Nru spice-0.10.0/server/glz_encoder_dictionary.c spice-0.10.1/server/glz_encoder_dictionary.c --- spice-0.10.0/server/glz_encoder_dictionary.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/glz_encoder_dictionary.c 2012-01-18 10:19:15.000000000 +0000 @@ -631,4 +631,3 @@ dict->window.encoders_heads[encoder_id] = NULL_IMAGE_SEG_ID; pthread_mutex_unlock(&dict->lock); } - diff -Nru spice-0.10.0/server/glz_encoder_dictionary.h spice-0.10.1/server/glz_encoder_dictionary.h --- spice-0.10.0/server/glz_encoder_dictionary.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/glz_encoder_dictionary.h 2012-01-18 10:19:15.000000000 +0000 @@ -67,4 +67,3 @@ GlzEncDictImageContext *image, GlzEncoderUsrContext *usr); #endif // _H_GLZ_ENCODER_DICTIONARY - diff -Nru spice-0.10.0/server/glz_encoder_dictionary_protected.h spice-0.10.1/server/glz_encoder_dictionary_protected.h --- spice-0.10.0/server/glz_encoder_dictionary_protected.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/glz_encoder_dictionary_protected.h 2012-01-18 10:19:15.000000000 +0000 @@ -184,4 +184,3 @@ ref_seg->pixels_so_far))) #endif // _H_GLZ_ENCODER_DICTIONARY_PROTECTED - diff -Nru spice-0.10.0/server/glz_encoder.h spice-0.10.1/server/glz_encoder.h --- spice-0.10.0/server/glz_encoder.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/glz_encoder.h 2012-01-18 10:19:15.000000000 +0000 @@ -53,4 +53,3 @@ #endif // _H_GLZ_ENCODER - diff -Nru spice-0.10.0/server/glz_encode_tmpl.c spice-0.10.1/server/glz_encode_tmpl.c --- spice-0.10.0/server/glz_encode_tmpl.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/glz_encode_tmpl.c 2012-01-18 10:19:15.000000000 +0000 @@ -144,10 +144,10 @@ /* returns the length of the match. 0 if no match. if image_distance = 0, pixel_distance is the distance between the matching pixels. Otherwise, it is the offset from the beginning of the referred image */ -static INLINE size_t FNAME(do_match)(SharedDictionary *dict, - WindowImageSegment *ref_seg, const PIXEL *ref, +static INLINE size_t FNAME(do_match)(SharedDictionary *dict, + WindowImageSegment *ref_seg, const PIXEL *ref, const PIXEL *ref_limit, - WindowImageSegment *ip_seg, const PIXEL *ip, + WindowImageSegment *ip_seg, const PIXEL *ip, const PIXEL *ip_limit, #ifdef LZ_PLT int pix_per_byte, @@ -546,9 +546,9 @@ FNAME(compress_seg)(encoder, seg_id, ip, 2); // compressing the next segments - for (seg_id = dict->window.segs[seg_id].next; + for (seg_id = dict->window.segs[seg_id].next; seg_id != NULL_IMAGE_SEG_ID && ( - dict->window.segs[seg_id].image->id == encoder->cur_image.id); + dict->window.segs[seg_id].image->id == encoder->cur_image.id); seg_id = dict->window.segs[seg_id].next) { FNAME(compress_seg)(encoder, seg_id, (PIXEL *)dict->window.segs[seg_id].lines, 0); } @@ -572,4 +572,3 @@ #undef LZ_RGB32 #undef MIN_REF_ENCODE_SIZE #undef MAX_REF_ENCODE_SIZE - diff -Nru spice-0.10.0/server/inputs_channel.c spice-0.10.1/server/inputs_channel.c --- spice-0.10.0/server/inputs_channel.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/inputs_channel.c 2012-01-23 15:21:14.000000000 +0000 @@ -168,18 +168,22 @@ return &g_inputs_channel->mouse_state; } -static uint8_t *inputs_channel_alloc_msg_rcv_buf(RedChannelClient *rcc, SpiceDataHeader *msg_header) +static uint8_t *inputs_channel_alloc_msg_rcv_buf(RedChannelClient *rcc, + uint16_t type, + uint32_t size) { InputsChannel *inputs_channel = SPICE_CONTAINEROF(rcc->channel, InputsChannel, base); - if (msg_header->size > RECEIVE_BUF_SIZE) { + if (size > RECEIVE_BUF_SIZE) { red_printf("error: too large incoming message"); return NULL; } return inputs_channel->recv_buf; } -static void inputs_channel_release_msg_rcv_buf(RedChannelClient *rcc, SpiceDataHeader *msg_header, +static void inputs_channel_release_msg_rcv_buf(RedChannelClient *rcc, + uint16_t type, + uint32_t size, uint8_t *msg) { } @@ -278,7 +282,8 @@ red_channel_client_begin_send_message(rcc); } -static int inputs_channel_handle_parsed(RedChannelClient *rcc, uint32_t size, uint16_t type, void *message) +static int inputs_channel_handle_parsed(RedChannelClient *rcc, uint32_t size, uint16_t type, + void *message) { InputsChannel *inputs_channel = (InputsChannel *)rcc->channel; InputsChannelClient *icc = (InputsChannelClient *)rcc; @@ -460,21 +465,17 @@ static int inputs_channel_config_socket(RedChannelClient *rcc) { - int flags; int delay_val = 1; RedsStream *stream = red_channel_client_get_stream(rcc); if (setsockopt(stream->socket, IPPROTO_TCP, TCP_NODELAY, &delay_val, sizeof(delay_val)) == -1) { - red_printf("setsockopt failed, %s", strerror(errno)); - return FALSE; + if (errno != ENOTSUP) { + red_printf("setsockopt failed, %s", strerror(errno)); + return FALSE; + } } - if ((flags = fcntl(stream->socket, F_GETFL)) == -1 || - fcntl(stream->socket, F_SETFL, flags | O_ASYNC) == -1) { - red_printf("fcntl failed, %s", strerror(errno)); - return FALSE; - } return TRUE; } @@ -564,4 +565,3 @@ red_error("key modifiers timer create failed"); } } - diff -Nru spice-0.10.0/server/inputs_channel.h spice-0.10.1/server/inputs_channel.h --- spice-0.10.0/server/inputs_channel.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/inputs_channel.h 2012-01-18 10:19:15.000000000 +0000 @@ -36,4 +36,3 @@ void inputs_set_tablet_logical_size(int x_res, int y_res); #endif - diff -Nru spice-0.10.0/server/jpeg_encoder.c spice-0.10.1/server/jpeg_encoder.c --- spice-0.10.0/server/jpeg_encoder.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/jpeg_encoder.c 2012-01-18 10:19:15.000000000 +0000 @@ -41,13 +41,13 @@ /* jpeg destination manager callbacks */ -static void dest_mgr_init_destination(j_compress_ptr cinfo) +static void dest_mgr_init_destination(j_compress_ptr cinfo) { JpegEncoder *enc = (JpegEncoder *)cinfo->client_data; if (enc->dest_mgr.free_in_buffer == 0) { - enc->dest_mgr.free_in_buffer = enc->usr->more_space(enc->usr, + enc->dest_mgr.free_in_buffer = enc->usr->more_space(enc->usr, &enc->dest_mgr.next_output_byte); - + if (enc->dest_mgr.free_in_buffer == 0) { red_error("not enough space"); } @@ -59,12 +59,12 @@ static boolean dest_mgr_empty_output_buffer(j_compress_ptr cinfo) { JpegEncoder *enc = (JpegEncoder *)cinfo->client_data; - enc->dest_mgr.free_in_buffer = enc->usr->more_space(enc->usr, + enc->dest_mgr.free_in_buffer = enc->usr->more_space(enc->usr, &enc->dest_mgr.next_output_byte); - + if (enc->dest_mgr.free_in_buffer == 0) { red_error("not enough space"); - } + } enc->cur_image.out_size += enc->dest_mgr.free_in_buffer; return TRUE; } @@ -85,13 +85,13 @@ enc = spice_new0(JpegEncoder, 1); enc->usr = usr; - + enc->dest_mgr.init_destination = dest_mgr_init_destination; enc->dest_mgr.empty_output_buffer = dest_mgr_empty_output_buffer; enc->dest_mgr.term_destination = dest_mgr_term_destination; enc->cinfo.err = jpeg_std_error(&enc->jerr); - + jpeg_create_compress(&enc->cinfo); enc->cinfo.client_data = enc; enc->cinfo.dest = &enc->dest_mgr; @@ -99,7 +99,7 @@ } void jpeg_encoder_destroy(JpegEncoderContext* encoder) -{ +{ jpeg_destroy_compress(&((JpegEncoder*)encoder)->cinfo); free(encoder); } @@ -144,8 +144,8 @@ uint32_t *src_line = (uint32_t *)line; uint8_t *out_pix; int x; - - ASSERT(out_line && *out_line); + + ASSERT(out_line && *out_line); out_pix = *out_line; @@ -174,7 +174,7 @@ } static void do_jpeg_encode(JpegEncoder *jpeg, uint8_t *lines, unsigned int num_lines) -{ +{ uint8_t *lines_end; uint8_t *RGB24_line; int stride, width; @@ -204,7 +204,7 @@ int width, int height, uint8_t *lines, unsigned int num_lines, int stride, uint8_t *io_ptr, unsigned int num_io_bytes) { - JpegEncoder *enc = (JpegEncoder *)jpeg; + JpegEncoder *enc = (JpegEncoder *)jpeg; enc->cur_image.type = type; enc->cur_image.width = width; @@ -243,6 +243,6 @@ do_jpeg_encode(enc, lines, num_lines); - jpeg_finish_compress(&enc->cinfo); - return enc->cur_image.out_size; + jpeg_finish_compress(&enc->cinfo); + return enc->cur_image.out_size; } diff -Nru spice-0.10.0/server/jpeg_encoder.h spice-0.10.1/server/jpeg_encoder.h --- spice-0.10.0/server/jpeg_encoder.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/jpeg_encoder.h 2012-01-18 10:19:15.000000000 +0000 @@ -35,7 +35,7 @@ typedef enum { JPEG_IMAGE_TYPE_INVALID, JPEG_IMAGE_TYPE_RGB16, - /* in byte per color types, the notation is according to the order of the + /* in byte per color types, the notation is according to the order of the colors in the memory */ JPEG_IMAGE_TYPE_RGB24, JPEG_IMAGE_TYPE_BGR24, @@ -53,7 +53,7 @@ JpegEncoderContext* jpeg_encoder_create(JpegEncoderUsrContext *usr); void jpeg_encoder_destroy(JpegEncoderContext *encoder); -/* returns the total size of the encoded data. Images must be supplied from the the +/* returns the total size of the encoded data. Images must be supplied from the top line to the bottom */ int jpeg_encode(JpegEncoderContext *jpeg, int quality, JpegEncoderImageType type, int width, int height, uint8_t *lines, unsigned int num_lines, int stride, diff -Nru spice-0.10.0/server/main_channel.c spice-0.10.1/server/main_channel.c --- spice-0.10.0/server/main_channel.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/main_channel.c 2012-01-23 15:21:14.000000000 +0000 @@ -360,7 +360,8 @@ main_mouse_mode_item_new, &info); } -static void main_channel_marshall_mouse_mode(SpiceMarshaller *m, int current_mode, int is_client_mouse_allowed) +static void main_channel_marshall_mouse_mode(SpiceMarshaller *m, int current_mode, + int is_client_mouse_allowed) { SpiceMsgMainMouseMode mouse_mode; mouse_mode.supported_modes = SPICE_MOUSE_MODE_SERVER; @@ -435,7 +436,8 @@ static void main_channel_marshall_migrate_data_item(SpiceMarshaller *m, int serial, int ping_id) { - MainMigrateData *data = (MainMigrateData *)spice_marshaller_reserve_space(m, sizeof(MainMigrateData)); + MainMigrateData *data = (MainMigrateData *) + spice_marshaller_reserve_space(m, sizeof(MainMigrateData)); reds_marshall_migrate_data_item(m, data); // TODO: from reds split. ugly separation. data->serial = serial; @@ -755,7 +757,8 @@ mcc->mig_wait_prev_complete = FALSE; } } -static int main_channel_handle_parsed(RedChannelClient *rcc, uint32_t size, uint16_t type, void *message) +static int main_channel_handle_parsed(RedChannelClient *rcc, uint32_t size, uint16_t type, + void *message) { MainChannel *main_chan = SPICE_CONTAINEROF(rcc->channel, MainChannel, base); MainChannelClient *mcc = SPICE_CONTAINEROF(rcc, MainChannelClient, base); @@ -852,14 +855,18 @@ return TRUE; } -static uint8_t *main_channel_alloc_msg_rcv_buf(RedChannelClient *rcc, SpiceDataHeader *msg_header) +static uint8_t *main_channel_alloc_msg_rcv_buf(RedChannelClient *rcc, + uint16_t type, + uint32_t size) { MainChannel *main_chan = SPICE_CONTAINEROF(rcc->channel, MainChannel, base); return main_chan->recv_buf; } -static void main_channel_release_msg_rcv_buf(RedChannelClient *rcc, SpiceDataHeader *msg_header, +static void main_channel_release_msg_rcv_buf(RedChannelClient *rcc, + uint16_t type, + uint32_t size, uint8_t *msg) { } @@ -923,13 +930,10 @@ int num_common_caps, uint32_t *common_caps, int num_caps, uint32_t *caps) { - MainChannelClient *mcc = (MainChannelClient*)red_channel_client_create(sizeof(MainChannelClient), - &main_chan->base, - client, stream, - num_common_caps, - common_caps, - num_caps, - caps); + MainChannelClient *mcc = (MainChannelClient*) + red_channel_client_create(sizeof(MainChannelClient), &main_chan->base, + client, stream, num_common_caps, + common_caps, num_caps, caps); mcc->connection_id = connection_id; mcc->bitrate_per_sec = ~0; @@ -1035,7 +1039,8 @@ main_channel->num_clients_mig_wait = 0; RING_FOREACH(client_link, &main_channel->base.clients) { - MainChannelClient * mcc = SPICE_CONTAINEROF(client_link, MainChannelClient, base.channel_link); + MainChannelClient * mcc = SPICE_CONTAINEROF(client_link, MainChannelClient, + base.channel_link); if (red_channel_client_test_remote_cap(&mcc->base, SPICE_MAIN_CAP_SEMI_SEAMLESS_MIGRATE)) { if (red_client_during_migrate_at_target(mcc->base.client)) { @@ -1109,4 +1114,3 @@ } return semi_seamless_count; } - diff -Nru spice-0.10.0/server/main_dispatcher.c spice-0.10.1/server/main_dispatcher.c --- spice-0.10.0/server/main_dispatcher.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/main_dispatcher.c 2012-01-18 10:19:15.000000000 +0000 @@ -1,8 +1,8 @@ +#include #include #include #include #include -#include #include "red_common.h" #include "dispatcher.h" diff -Nru spice-0.10.0/server/Makefile.am spice-0.10.1/server/Makefile.am --- spice-0.10.0/server/Makefile.am 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/Makefile.am 2011-11-28 10:05:49.000000000 +0000 @@ -6,7 +6,6 @@ -I$(top_srcdir) \ -I$(top_srcdir)/common \ -DRED_STATISTICS \ - $(Z_LIBS) \ $(CELT051_CFLAGS) \ $(PIXMAN_CFLAGS) \ $(PROTOCOL_CFLAGS) \ @@ -48,6 +47,7 @@ $(SASL_LIBS) \ $(SLIRP_LIBS) \ $(SSL_LIBS) \ + $(Z_LIBS) \ $(NULL) libspice_server_la_SOURCES = \ diff -Nru spice-0.10.0/server/Makefile.in spice-0.10.1/server/Makefile.in --- spice-0.10.0/server/Makefile.in 2011-11-10 15:02:16.000000000 +0000 +++ spice-0.10.1/server/Makefile.in 2012-01-23 15:23:23.000000000 +0000 @@ -92,7 +92,7 @@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_1) + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) am__libspice_server_la_SOURCES_DIST = agent-msg-filter.c \ agent-msg-filter.h char_device.h demarshallers.h \ generated_demarshallers.c generated_marshallers.c \ @@ -317,6 +317,8 @@ WINDRES = @WINDRES@ XFIXES_CFLAGS = @XFIXES_CFLAGS@ XFIXES_LIBS = @XFIXES_LIBS@ +XINERAMA_CFLAGS = @XINERAMA_CFLAGS@ +XINERAMA_LIBS = @XINERAMA_LIBS@ XRANDR12_CFLAGS = @XRANDR12_CFLAGS@ XRANDR12_LIBS = @XRANDR12_LIBS@ XRANDR_CFLAGS = @XRANDR_CFLAGS@ @@ -381,7 +383,6 @@ -I$(top_srcdir) \ -I$(top_srcdir)/common \ -DRED_STATISTICS \ - $(Z_LIBS) \ $(CELT051_CFLAGS) \ $(PIXMAN_CFLAGS) \ $(PROTOCOL_CFLAGS) \ @@ -412,6 +413,7 @@ $(SASL_LIBS) \ $(SLIRP_LIBS) \ $(SSL_LIBS) \ + $(Z_LIBS) \ $(NULL) libspice_server_la_SOURCES = agent-msg-filter.c agent-msg-filter.h \ diff -Nru spice-0.10.0/server/mjpeg_encoder.c spice-0.10.1/server/mjpeg_encoder.c --- spice-0.10.0/server/mjpeg_encoder.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/mjpeg_encoder.c 2012-01-18 10:19:15.000000000 +0000 @@ -129,8 +129,7 @@ memcpy(nextbuffer, dest->buffer, dest->bufsize); - if (dest->newbuffer != NULL) - free(dest->newbuffer); + free(dest->newbuffer); dest->newbuffer = nextbuffer; diff -Nru spice-0.10.0/server/red_bitmap_utils.h spice-0.10.1/server/red_bitmap_utils.h --- spice-0.10.0/server/red_bitmap_utils.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/red_bitmap_utils.h 2012-01-18 10:19:15.000000000 +0000 @@ -159,4 +159,3 @@ #undef CONTRAST_TH #undef SAME_PIXEL_WEIGHT #undef NOT_CONTRAST_PIXELS_WEIGHT - diff -Nru spice-0.10.0/server/red_channel.c spice-0.10.1/server/red_channel.c --- spice-0.10.0/server/red_channel.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/red_channel.c 2012-01-23 15:21:14.000000000 +0000 @@ -38,6 +38,83 @@ static void red_channel_client_event(int fd, int event, void *data); static void red_client_add_channel(RedClient *client, RedChannelClient *rcc); static void red_client_remove_channel(RedChannelClient *rcc); +static void red_channel_client_restore_main_sender(RedChannelClient *rcc); + +static uint32_t full_header_get_msg_size(SpiceDataHeaderOpaque *header) +{ + return ((SpiceDataHeader *)header->data)->size; +} + +static uint32_t mini_header_get_msg_size(SpiceDataHeaderOpaque *header) +{ + return ((SpiceMiniDataHeader *)header->data)->size; +} + +static uint16_t full_header_get_msg_type(SpiceDataHeaderOpaque *header) +{ + return ((SpiceDataHeader *)header->data)->type; +} + +static uint16_t mini_header_get_msg_type(SpiceDataHeaderOpaque *header) +{ + return ((SpiceMiniDataHeader *)header->data)->type; +} + +static void full_header_set_msg_type(SpiceDataHeaderOpaque *header, uint16_t type) +{ + ((SpiceDataHeader *)header->data)->type = type; +} + +static void mini_header_set_msg_type(SpiceDataHeaderOpaque *header, uint16_t type) +{ + ((SpiceMiniDataHeader *)header->data)->type = type; +} + +static void full_header_set_msg_size(SpiceDataHeaderOpaque *header, uint32_t size) +{ + ((SpiceDataHeader *)header->data)->size = size; +} + +static void mini_header_set_msg_size(SpiceDataHeaderOpaque *header, uint32_t size) +{ + ((SpiceMiniDataHeader *)header->data)->size = size; +} + +static void full_header_set_msg_serial(SpiceDataHeaderOpaque *header, uint64_t serial) +{ + ((SpiceDataHeader *)header->data)->serial = serial; +} + +static void mini_header_set_msg_serial(SpiceDataHeaderOpaque *header, uint64_t serial) +{ + red_error("attempt to set header serial on mini header"); +} + +static void full_header_set_msg_sub_list(SpiceDataHeaderOpaque *header, uint32_t sub_list) +{ + ((SpiceDataHeader *)header->data)->sub_list = sub_list; +} + +static void mini_header_set_msg_sub_list(SpiceDataHeaderOpaque *header, uint32_t sub_list) +{ + red_error("attempt to set header sub list on mini header"); +} + +static SpiceDataHeaderOpaque full_header_wrapper = {NULL, sizeof(SpiceDataHeader), + full_header_set_msg_type, + full_header_set_msg_size, + full_header_set_msg_serial, + full_header_set_msg_sub_list, + full_header_get_msg_type, + full_header_get_msg_size}; + +static SpiceDataHeaderOpaque mini_header_wrapper = {NULL, sizeof(SpiceMiniDataHeader), + mini_header_set_msg_type, + mini_header_set_msg_size, + mini_header_set_msg_serial, + mini_header_set_msg_sub_list, + mini_header_get_msg_type, + mini_header_get_msg_size}; /* return the number of bytes read. -1 in case of error */ static int red_peer_receive(RedsStream *stream, uint8_t *buf, uint32_t size) @@ -82,27 +159,37 @@ uint8_t *parsed; size_t parsed_size; message_destructor_t parsed_free; + uint16_t msg_type; + uint32_t msg_size; + + /* XXX: This needs further investigation as to the underlying cause, it happened + * after spicec disconnect (but not with spice-gtk) repeatedly. */ + if (!stream) { + return; + } for (;;) { int ret_handle; - if (handler->header_pos < sizeof(SpiceDataHeader)) { + if (handler->header_pos < handler->header.header_size) { bytes_read = red_peer_receive(stream, - ((uint8_t *)&handler->header) + handler->header_pos, - sizeof(SpiceDataHeader) - handler->header_pos); + handler->header.data + handler->header_pos, + handler->header.header_size - handler->header_pos); if (bytes_read == -1) { handler->cb->on_error(handler->opaque); return; } handler->header_pos += bytes_read; - if (handler->header_pos != sizeof(SpiceDataHeader)) { + if (handler->header_pos != handler->header.header_size) { return; } } - if (handler->msg_pos < handler->header.size) { + msg_size = handler->header.get_msg_size(&handler->header); + msg_type = handler->header.get_msg_type(&handler->header); + if (handler->msg_pos < msg_size) { if (!handler->msg) { - handler->msg = handler->cb->alloc_msg_buf(handler->opaque, &handler->header); + handler->msg = handler->cb->alloc_msg_buf(handler->opaque, msg_type, msg_size); if (handler->msg == NULL) { red_printf("ERROR: channel refused to allocate buffer."); handler->cb->on_error(handler->opaque); @@ -112,37 +199,37 @@ bytes_read = red_peer_receive(stream, handler->msg + handler->msg_pos, - handler->header.size - handler->msg_pos); + msg_size - handler->msg_pos); if (bytes_read == -1) { - handler->cb->release_msg_buf(handler->opaque, &handler->header, handler->msg); + handler->cb->release_msg_buf(handler->opaque, msg_type, msg_size, handler->msg); handler->cb->on_error(handler->opaque); return; } handler->msg_pos += bytes_read; - if (handler->msg_pos != handler->header.size) { + if (handler->msg_pos != msg_size) { return; } } if (handler->cb->parser) { parsed = handler->cb->parser(handler->msg, - handler->msg + handler->header.size, handler->header.type, + handler->msg + msg_size, msg_type, SPICE_VERSION_MINOR, &parsed_size, &parsed_free); if (parsed == NULL) { - red_printf("failed to parse message type %d", handler->header.type); - handler->cb->release_msg_buf(handler->opaque, &handler->header, handler->msg); + red_printf("failed to parse message type %d", msg_type); + handler->cb->release_msg_buf(handler->opaque, msg_type, msg_size, handler->msg); handler->cb->on_error(handler->opaque); return; } ret_handle = handler->cb->handle_parsed(handler->opaque, parsed_size, - handler->header.type, parsed); + msg_type, parsed); parsed_free(parsed); } else { - ret_handle = handler->cb->handle_message(handler->opaque, &handler->header, - handler->msg); + ret_handle = handler->cb->handle_message(handler->opaque, msg_type, msg_size, + handler->msg); } handler->msg_pos = 0; - handler->cb->release_msg_buf(handler->opaque, &handler->header, handler->msg); + handler->cb->release_msg_buf(handler->opaque, msg_type, msg_size, handler->msg); handler->msg = NULL; handler->header_pos = 0; @@ -204,10 +291,13 @@ handler->pos += n; handler->cb->on_output(handler->opaque, n); if (handler->pos == handler->size) { // finished writing data - handler->cb->on_msg_done(handler->opaque); + /* reset handler before calling on_msg_done, since it + * can trigger another call to red_peer_handle_outgoing (when + * switching from the urgent marshaller to the main one */ handler->vec = handler->vec_buf; handler->pos = 0; handler->size = 0; + handler->cb->on_msg_done(handler->opaque); return; } } @@ -252,16 +342,41 @@ SPICE_WATCH_EVENT_WRITE); } +static inline int red_channel_client_urgent_marshaller_is_active(RedChannelClient *rcc) +{ + return (rcc->send_data.marshaller == rcc->send_data.urgent.marshaller); +} + static void red_channel_client_reset_send_data(RedChannelClient *rcc) { spice_marshaller_reset(rcc->send_data.marshaller); - rcc->send_data.header = (SpiceDataHeader *) - spice_marshaller_reserve_space(rcc->send_data.marshaller, sizeof(SpiceDataHeader)); - spice_marshaller_set_base(rcc->send_data.marshaller, sizeof(SpiceDataHeader)); - rcc->send_data.header->type = 0; - rcc->send_data.header->size = 0; - rcc->send_data.header->sub_list = 0; - rcc->send_data.header->serial = ++rcc->send_data.serial; + rcc->send_data.header.data = spice_marshaller_reserve_space(rcc->send_data.marshaller, + rcc->send_data.header.header_size); + spice_marshaller_set_base(rcc->send_data.marshaller, rcc->send_data.header.header_size); + rcc->send_data.header.set_msg_type(&rcc->send_data.header, 0); + rcc->send_data.header.set_msg_size(&rcc->send_data.header, 0); + + /* Keeping the serial consecutive: reseting it if reset_send_data + * has been called before, but no message has been sent since then. + */ + if (rcc->send_data.last_sent_serial != rcc->send_data.serial) { + ASSERT(rcc->send_data.serial - rcc->send_data.last_sent_serial == 1); + /* When the urgent marshaller is active, the serial was incremented by + * the call to reset_send_data that was made for the main marshaller. + * The urgent msg receives this serial, and the main msg serial is + * the following one. Thus, (rcc->send_data.serial - rcc->send_data.last_sent_serial) + * should be 1 in this case*/ + if (!red_channel_client_urgent_marshaller_is_active(rcc)) { + rcc->send_data.serial = rcc->send_data.last_sent_serial; + } + } + rcc->send_data.serial++; + + if (!rcc->is_mini_header) { + ASSERT(rcc->send_data.marshaller != rcc->send_data.urgent.marshaller); + rcc->send_data.header.set_msg_sub_list(&rcc->send_data.header, 0); + rcc->send_data.header.set_msg_serial(&rcc->send_data.header, rcc->send_data.serial); + } } void red_channel_client_push_set_ack(RedChannelClient *rcc) @@ -343,6 +458,12 @@ rcc->channel->core->watch_update_mask(rcc->stream->watch, SPICE_WATCH_EVENT_READ); } + + if (red_channel_client_urgent_marshaller_is_active(rcc)) { + red_channel_client_restore_main_sender(rcc); + ASSERT(rcc->send_data.header.data != NULL); + red_channel_client_begin_send_message(rcc); + } } static void red_channel_client_pipe_remove(RedChannelClient *rcc, PipeItem *item) @@ -407,7 +528,10 @@ // block flags) rcc->ack_data.client_generation = ~0; rcc->ack_data.client_window = CLIENT_ACK_WINDOW; - rcc->send_data.marshaller = spice_marshaller_new(); + rcc->send_data.main.marshaller = spice_marshaller_new(); + rcc->send_data.urgent.marshaller = spice_marshaller_new(); + + rcc->send_data.marshaller = rcc->send_data.main.marshaller; rcc->incoming.opaque = rcc; rcc->incoming.cb = &channel->incoming_cb; @@ -418,6 +542,18 @@ rcc->outgoing.size = 0; red_channel_client_set_remote_caps(rcc, num_common_caps, common_caps, num_caps, caps); + if (red_channel_client_test_remote_common_cap(rcc, SPICE_COMMON_CAP_MINI_HEADER)) { + rcc->incoming.header = mini_header_wrapper; + rcc->send_data.header = mini_header_wrapper; + rcc->is_mini_header = TRUE; + } else { + rcc->incoming.header = full_header_wrapper; + rcc->send_data.header = full_header_wrapper; + rcc->is_mini_header = FALSE; + } + + rcc->incoming.header.data = rcc->incoming.header_buf; + rcc->incoming.serial = 1; if (!channel->channel_cbs.config_socket(rcc)) { goto error; @@ -506,6 +642,7 @@ client_cbs.migrate = red_channel_client_default_migrate; red_channel_register_client_cbs(channel, &client_cbs); + red_channel_set_common_cap(channel, SPICE_COMMON_CAP_MINI_HEADER); channel->thread_id = pthread_self(); @@ -551,6 +688,7 @@ client_cbs.migrate = red_channel_client_default_migrate; red_channel_register_client_cbs(channel, &client_cbs); + red_channel_set_common_cap(channel, SPICE_COMMON_CAP_MINI_HEADER); channel->thread_id = pthread_self(); @@ -559,7 +697,10 @@ return channel; } -static int do_nothing_handle_message(RedChannelClient *rcc, SpiceDataHeader *header, uint8_t *msg) +static int do_nothing_handle_message(RedChannelClient *rcc, + uint16_t type, + uint32_t size, + uint8_t *msg) { return TRUE; } @@ -643,9 +784,14 @@ red_channel_client_disconnect(rcc); } red_client_remove_channel(rcc); - if (rcc->send_data.marshaller) { - spice_marshaller_destroy(rcc->send_data.marshaller); + if (rcc->send_data.main.marshaller) { + spice_marshaller_destroy(rcc->send_data.main.marshaller); + } + + if (rcc->send_data.urgent.marshaller) { + spice_marshaller_destroy(rcc->send_data.urgent.marshaller); } + red_channel_client_destroy_remote_caps(rcc); free(rcc); } @@ -803,7 +949,7 @@ } int red_channel_client_handle_message(RedChannelClient *rcc, uint32_t size, - uint16_t type, void *message) + uint16_t type, void *message) { switch (type) { case SPICE_MSGC_ACK_SYNC: @@ -850,7 +996,7 @@ { ASSERT(red_channel_client_no_item_being_sent(rcc)); ASSERT(msg_type != 0); - rcc->send_data.header->type = msg_type; + rcc->send_data.header.set_msg_type(&rcc->send_data.header, msg_type); rcc->send_data.item = item; if (item) { rcc->channel->channel_cbs.hold_item(rcc, item); @@ -862,18 +1008,44 @@ SpiceMarshaller *m = rcc->send_data.marshaller; // TODO - better check: type in channel_allowed_types. Better: type in channel_allowed_types(channel_state) - if (rcc->send_data.header->type == 0) { + if (rcc->send_data.header.get_msg_type(&rcc->send_data.header) == 0) { red_printf("BUG: header->type == 0"); return; } spice_marshaller_flush(m); rcc->send_data.size = spice_marshaller_get_total_size(m); - rcc->send_data.header->size = rcc->send_data.size - sizeof(SpiceDataHeader); + rcc->send_data.header.set_msg_size(&rcc->send_data.header, + rcc->send_data.size - rcc->send_data.header.header_size); rcc->ack_data.messages_window++; - rcc->send_data.header = NULL; /* avoid writing to this until we have a new message */ + rcc->send_data.last_sent_serial = rcc->send_data.serial; + rcc->send_data.header.data = NULL; /* avoid writing to this until we have a new message */ red_channel_client_send(rcc); } +SpiceMarshaller *red_channel_client_switch_to_urgent_sender(RedChannelClient *rcc) +{ + ASSERT(red_channel_client_no_item_being_sent(rcc)); + ASSERT(rcc->send_data.header.data != NULL); + rcc->send_data.main.header_data = rcc->send_data.header.data; + rcc->send_data.main.item = rcc->send_data.item; + + rcc->send_data.marshaller = rcc->send_data.urgent.marshaller; + rcc->send_data.item = NULL; + red_channel_client_reset_send_data(rcc); + return rcc->send_data.marshaller; +} + +static void red_channel_client_restore_main_sender(RedChannelClient *rcc) +{ + spice_marshaller_reset(rcc->send_data.urgent.marshaller); + rcc->send_data.marshaller = rcc->send_data.main.marshaller; + rcc->send_data.header.data = rcc->send_data.main.header_data; + if (!rcc->is_mini_header) { + rcc->send_data.header.set_msg_serial(&rcc->send_data.header, rcc->send_data.serial); + } + rcc->send_data.item = rcc->send_data.main.item; +} + uint64_t red_channel_client_get_message_serial(RedChannelClient *rcc) { return rcc->send_data.serial; @@ -1000,7 +1172,6 @@ rcc->ack_data.client_window = client_window; } - static void red_channel_remove_client(RedChannelClient *rcc) { ASSERT(pthread_equal(pthread_self(), rcc->channel->thread_id)); @@ -1058,6 +1229,19 @@ rcc->client = client; rcc->channel = channel; red_channel_client_set_remote_caps(rcc, num_common_caps, common_caps, num_caps, caps); + if (red_channel_client_test_remote_common_cap(rcc, SPICE_COMMON_CAP_MINI_HEADER)) { + rcc->incoming.header = mini_header_wrapper; + rcc->send_data.header = mini_header_wrapper; + rcc->is_mini_header = TRUE; + } else { + rcc->incoming.header = full_header_wrapper; + rcc->send_data.header = full_header_wrapper; + rcc->is_mini_header = FALSE; + } + + rcc->incoming.header.data = rcc->incoming.header_buf; + rcc->incoming.serial = 1; + red_channel_add_client(channel, rcc); return rcc; } @@ -1131,7 +1315,7 @@ int red_channel_client_send_message_pending(RedChannelClient *rcc) { - return rcc->send_data.header->type != 0; + return rcc->send_data.header.get_msg_type(&rcc->send_data.header) != 0; } /* accessors for RedChannelClient */ @@ -1150,10 +1334,11 @@ return rcc->client; } -SpiceDataHeader *red_channel_client_get_header(RedChannelClient *rcc) +void red_channel_client_set_header_sub_list(RedChannelClient *rcc, uint32_t sub_list) { - return rcc->send_data.header; + rcc->send_data.header.set_msg_sub_list(&rcc->send_data.header, sub_list); } + /* end of accessors */ int red_channel_get_first_socket(RedChannel *channel) diff -Nru spice-0.10.0/server/red_channel.h spice-0.10.1/server/red_channel.h --- spice-0.10.0/server/red_channel.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/red_channel.h 2012-01-18 10:19:15.000000000 +0000 @@ -33,16 +33,40 @@ #define MAX_SEND_VEC 100 #define CLIENT_ACK_WINDOW 20 +#define MAX_HEADER_SIZE sizeof(SpiceDataHeader) + /* Basic interface for channels, without using the RedChannel interface. The intention is to move towards one channel interface gradually. At the final stage, this interface shouldn't be exposed. Only RedChannel will use it. */ +typedef struct SpiceDataHeaderOpaque SpiceDataHeaderOpaque; + +typedef uint16_t (*get_msg_type_proc)(SpiceDataHeaderOpaque *header); +typedef uint32_t (*get_msg_size_proc)(SpiceDataHeaderOpaque *header); +typedef void (*set_msg_type_proc)(SpiceDataHeaderOpaque *header, uint16_t type); +typedef void (*set_msg_size_proc)(SpiceDataHeaderOpaque *header, uint32_t size); +typedef void (*set_msg_serial_proc)(SpiceDataHeaderOpaque *header, uint64_t serial); +typedef void (*set_msg_sub_list_proc)(SpiceDataHeaderOpaque *header, uint32_t sub_list); + +struct SpiceDataHeaderOpaque { + uint8_t *data; + uint16_t header_size; + + set_msg_type_proc set_msg_type; + set_msg_size_proc set_msg_size; + set_msg_serial_proc set_msg_serial; + set_msg_sub_list_proc set_msg_sub_list; + + get_msg_type_proc get_msg_type; + get_msg_size_proc get_msg_size; +}; + typedef int (*handle_message_proc)(void *opaque, - SpiceDataHeader *header, uint8_t *msg); + uint16_t type, uint32_t size, uint8_t *msg); typedef int (*handle_parsed_proc)(void *opaque, uint32_t size, uint16_t type, void *message); -typedef uint8_t *(*alloc_msg_recv_buf_proc)(void *opaque, SpiceDataHeader *msg_header); +typedef uint8_t *(*alloc_msg_recv_buf_proc)(void *opaque, uint16_t type, uint32_t size); typedef void (*release_msg_recv_buf_proc)(void *opaque, - SpiceDataHeader *msg_header, uint8_t *msg); + uint16_t type, uint32_t size, uint8_t *msg); typedef void (*on_incoming_error_proc)(void *opaque); typedef struct IncomingHandlerInterface { @@ -58,10 +82,12 @@ typedef struct IncomingHandler { IncomingHandlerInterface *cb; void *opaque; - SpiceDataHeader header; + uint8_t header_buf[MAX_HEADER_SIZE]; + SpiceDataHeaderOpaque header; uint32_t header_pos; uint8_t *msg; // data of the msg following the header. allocated by alloc_msg_buf. uint32_t msg_pos; + uint64_t serial; } IncomingHandler; typedef int (*get_outgoing_msg_size_proc)(void *opaque); @@ -119,13 +145,13 @@ } PipeItem; typedef uint8_t *(*channel_alloc_msg_recv_buf_proc)(RedChannelClient *channel, - SpiceDataHeader *msg_header); + uint16_t type, uint32_t size); typedef int (*channel_handle_parsed_proc)(RedChannelClient *rcc, uint32_t size, uint16_t type, void *message); typedef int (*channel_handle_message_proc)(RedChannelClient *rcc, - SpiceDataHeader *header, uint8_t *msg); + uint16_t type, uint32_t size, uint8_t *msg); typedef void (*channel_release_msg_recv_buf_proc)(RedChannelClient *channel, - SpiceDataHeader *msg_header, uint8_t *msg); + uint16_t type, uint32_t size, uint8_t *msg); typedef void (*channel_disconnect_proc)(RedChannelClient *rcc); typedef int (*channel_configure_socket_proc)(RedChannelClient *rcc); typedef void (*channel_send_pipe_item_proc)(RedChannelClient *rcc, PipeItem *item); @@ -202,11 +228,22 @@ struct { SpiceMarshaller *marshaller; - SpiceDataHeader *header; + SpiceDataHeaderOpaque header; uint32_t size; PipeItem *item; int blocked; uint64_t serial; + uint64_t last_sent_serial; + + struct { + SpiceMarshaller *marshaller; + uint8_t *header_data; + PipeItem *item; + } main; + + struct { + SpiceMarshaller *marshaller; + } urgent; } send_data; OutgoingHandler outgoing; @@ -217,6 +254,7 @@ uint32_t pipe_size; RedChannelCapabilities remote_caps; + int is_mini_header; }; struct RedChannel { @@ -323,7 +361,7 @@ /* handles general channel msgs from the client */ int red_channel_client_handle_message(RedChannelClient *rcc, uint32_t size, - uint16_t type, void *message); + uint16_t type, void *message); /* when preparing send_data: should call init and then use marshaller */ void red_channel_client_init_send_data(RedChannelClient *rcc, uint16_t msg_type, PipeItem *item); @@ -331,9 +369,23 @@ uint64_t red_channel_client_get_message_serial(RedChannelClient *channel); void red_channel_client_set_message_serial(RedChannelClient *channel, uint64_t); -/* when sending a msg. should first call red_channel_client_begin_send_message */ +/* When sending a msg. Should first call red_channel_client_begin_send_message. + * It will first send the pending urgent data, if there is any, and then + * the rest of the data. + */ void red_channel_client_begin_send_message(RedChannelClient *rcc); +/* + * Stores the current send data, and switches to urgent send data. + * When it begins the actual send, it will send first the urgent data + * and afterward the rest of the data. + * Should be called only if during the marshalling of on message, + * the need to send another message, before, rises. + * Important: the serial of the non-urgent sent data, will be succeeded. + * return: the urgent send data marshaller + */ +SpiceMarshaller *red_channel_client_switch_to_urgent_sender(RedChannelClient *rcc); + void red_channel_pipe_item_init(RedChannel *channel, PipeItem *item, int type); // TODO: add back the channel_pipe_add functionality - by adding reference counting @@ -419,13 +471,9 @@ RedsStream *red_channel_client_get_stream(RedChannelClient *rcc); RedClient *red_channel_client_get_client(RedChannelClient *rcc); -/* this is a convenience function for sending messages, sometimes (migration only?) - * the serial from the header needs to be available for sending. Note that the header - * pointer retrieved is not valid except between red_channel_reset_send_data and - * red_channel_begin_send_message. red_channel_init_send_data changes the header (sets - * the type in it) as a convenience function. It is preffered to do that through it and - * not via the below accessor and direct header manipulation. */ -SpiceDataHeader *red_channel_client_get_header(RedChannelClient *rcc); +/* Note that the header is valid only between red_channel_reset_send_data and + * red_channel_begin_send_message.*/ +void red_channel_client_set_header_sub_list(RedChannelClient *rcc, uint32_t sub_list); /* return the sum of all the rcc pipe size */ uint32_t red_channel_max_pipe_size(RedChannel *channel); diff -Nru spice-0.10.0/server/red_client_shared_cache.h spice-0.10.1/server/red_client_shared_cache.h --- spice-0.10.0/server/red_client_shared_cache.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/red_client_shared_cache.h 2012-01-18 10:19:15.000000000 +0000 @@ -75,7 +75,7 @@ break; } item = item->next; - } + } pthread_mutex_unlock(&cache->lock); return !!item; } diff -Nru spice-0.10.0/server/red_common.h spice-0.10.1/server/red_common.h --- spice-0.10.0/server/red_common.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/red_common.h 2012-01-18 10:19:15.000000000 +0000 @@ -35,4 +35,3 @@ }; #endif - diff -Nru spice-0.10.0/server/red_dispatcher.c spice-0.10.1/server/red_dispatcher.c --- spice-0.10.0/server/red_dispatcher.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/red_dispatcher.c 2012-01-18 10:19:15.000000000 +0000 @@ -102,6 +102,14 @@ payload.client = client; payload.stream = stream; payload.migration = migration; + payload.num_common_caps = num_common_caps; + payload.common_caps = spice_malloc(sizeof(uint32_t)*num_common_caps); + payload.num_caps = num_caps; + payload.caps = spice_malloc(sizeof(uint32_t)*num_caps); + + memcpy(payload.common_caps, common_caps, sizeof(uint32_t)*num_common_caps); + memcpy(payload.caps, caps, sizeof(uint32_t)*num_caps); + dispatcher_send_message(&dispatcher->dispatcher, RED_WORKER_MESSAGE_DISPLAY_CONNECT, &payload); @@ -154,6 +162,14 @@ payload.client = client; payload.stream = stream; payload.migration = migration; + payload.num_common_caps = num_common_caps; + payload.common_caps = spice_malloc(sizeof(uint32_t)*num_common_caps); + payload.num_caps = num_caps; + payload.caps = spice_malloc(sizeof(uint32_t)*num_caps); + + memcpy(payload.common_caps, common_caps, sizeof(uint32_t)*num_common_caps); + memcpy(payload.caps, caps, sizeof(uint32_t)*num_caps); + dispatcher_send_message(&dispatcher->dispatcher, RED_WORKER_MESSAGE_CURSOR_CONNECT, &payload); diff -Nru spice-0.10.0/server/red_dispatcher.h spice-0.10.1/server/red_dispatcher.h --- spice-0.10.0/server/red_dispatcher.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/red_dispatcher.h 2012-01-18 10:19:15.000000000 +0000 @@ -38,6 +38,10 @@ RedClient * client; RedsStream * stream; int migration; + uint32_t *common_caps; // red_worker should free + int num_common_caps; + uint32_t *caps; // red_worker should free + int num_caps; } RedWorkerMessageDisplayConnect; typedef struct RedWorkerMessageDisplayDisconnect { @@ -52,6 +56,10 @@ RedClient *client; RedsStream *stream; int migration; + uint32_t *common_caps; // red_worker should free + int num_common_caps; + uint32_t *caps; // red_worker should free + int num_caps; } RedWorkerMessageCursorConnect; typedef struct RedWorkerMessageCursorDisconnect { diff -Nru spice-0.10.0/server/red_parse_qxl.c spice-0.10.1/server/red_parse_qxl.c --- spice-0.10.0/server/red_parse_qxl.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/red_parse_qxl.c 2012-01-18 10:19:15.000000000 +0000 @@ -7,10 +7,10 @@ License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, + This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, see . @@ -409,9 +409,7 @@ switch (red->descriptor.type) { case SPICE_IMAGE_TYPE_BITMAP: - if (red->u.bitmap.palette) { - free(red->u.bitmap.palette); - } + free(red->u.bitmap.palette); spice_chunks_destroy(red->u.bitmap.data); break; case SPICE_IMAGE_TYPE_QUIC: @@ -1112,4 +1110,3 @@ break; } } - diff -Nru spice-0.10.0/server/red_parse_qxl.h spice-0.10.1/server/red_parse_qxl.h --- spice-0.10.0/server/red_parse_qxl.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/red_parse_qxl.h 2012-01-18 10:17:21.000000000 +0000 @@ -2,18 +2,18 @@ /* Copyright (C) 2009,2010 Red Hat, Inc. - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, + This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program. If not, see . + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, see . */ #ifndef RED_ABI_TRANSLATE_H diff -Nru spice-0.10.0/server/reds.c spice-0.10.1/server/reds.c --- spice-0.10.0/server/reds.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/reds.c 2012-01-23 15:21:14.000000000 +0000 @@ -263,6 +263,7 @@ int mess_pos; TicketInfo tiTicketing; SpiceLinkAuthMechanism auth_mechanism; + int skip_auth; } RedLinkInfo; typedef struct VDIPortBuf VDIPortBuf; @@ -1387,9 +1388,9 @@ return TRUE; } -static void reds_channel_init_auth_caps(RedChannel *channel) +static void reds_channel_init_auth_caps(RedLinkInfo *link, RedChannel *channel) { - if (sasl_enabled) { + if (sasl_enabled && !link->skip_auth) { red_channel_set_common_cap(channel, SPICE_COMMON_CAP_AUTH_SASL); } else { red_channel_set_common_cap(channel, SPICE_COMMON_CAP_AUTH_SPICE); @@ -1421,7 +1422,7 @@ channel = &reds->main_channel->base; } - reds_channel_init_auth_caps(channel); /* make sure common caps are set */ + reds_channel_init_auth_caps(link, channel); /* make sure common caps are set */ channel_caps = &channel->local_caps; ack.num_common_caps = channel_caps->num_common_caps; @@ -1822,7 +1823,7 @@ link->tiTicketing.encrypted_ticket.encrypted_data, (unsigned char *)password, link->tiTicketing.rsa, RSA_PKCS1_OAEP_PADDING); - if (ticketing_enabled) { + if (ticketing_enabled && !link->skip_auth) { int expired = taTicket.expiration_time < ltime; if (strlen(taTicket.password) == 0) { @@ -2584,7 +2585,7 @@ } if (!auth_selection) { - if (sasl_enabled) { + if (sasl_enabled && !link->skip_auth) { red_printf("SASL enabled, but peer supports only spice authentication"); reds_send_link_error(link, SPICE_LINK_ERR_VERSION_MISMATCH); return; @@ -2687,18 +2688,12 @@ reds_handle_new_link(link); } -static RedLinkInfo *__reds_accept_connection(int listen_socket) +static RedLinkInfo *reds_init_client_connection(int socket) { RedLinkInfo *link; RedsStream *stream; int delay_val = 1; int flags; - int socket; - - if ((socket = accept(listen_socket, NULL, 0)) == -1) { - red_printf("accept failed, %s", strerror(errno)); - return NULL; - } if ((flags = fcntl(socket, F_GETFL)) == -1) { red_printf("accept failed, %s", strerror(errno)); @@ -2711,7 +2706,9 @@ } if (setsockopt(socket, IPPROTO_TCP, TCP_NODELAY, &delay_val, sizeof(delay_val)) == -1) { - red_printf("setsockopt failed, %s", strerror(errno)); + if (errno != ENOTSUP) { + red_printf("setsockopt failed, %s", strerror(errno)); + } } link = spice_new0(RedLinkInfo, 1); @@ -2731,39 +2728,20 @@ return link; error: - close(socket); - return NULL; } -static RedLinkInfo *reds_accept_connection(int listen_socket) -{ - RedLinkInfo *link; - RedsStream *stream; - - if (!(link = __reds_accept_connection(listen_socket))) { - return NULL; - } - - stream = link->stream; - stream->read = stream_read_cb; - stream->write = stream_write_cb; - stream->writev = stream_writev_cb; - return link; -} - -static void reds_accept_ssl_connection(int fd, int event, void *data) +static RedLinkInfo *reds_init_client_ssl_connection(int socket) { RedLinkInfo *link; int return_code; int ssl_error; BIO *sbio; - link = __reds_accept_connection(reds->secure_listen_socket); - if (link == NULL) { - return; - } + link = reds_init_client_connection(socket); + if (link == NULL) + goto error; // Handle SSL handshaking if (!(sbio = BIO_new_socket(link->stream->socket, BIO_NOCLOSE))) { @@ -2787,7 +2765,7 @@ return_code = SSL_accept(link->stream->ssl); if (return_code == 1) { reds_handle_new_link(link); - return; + return link; } ssl_error = SSL_get_error(link->stream->ssl, return_code); @@ -2797,7 +2775,7 @@ SPICE_WATCH_EVENT_READ : SPICE_WATCH_EVENT_WRITE; link->stream->watch = core->watch_add(link->stream->socket, eventmask, reds_handle_ssl_accept, link); - return; + return link; } ERR_print_errors_fp(stderr); @@ -2805,24 +2783,80 @@ SSL_free(link->stream->ssl); error: - close(link->stream->socket); free(link->stream); BN_free(link->tiTicketing.bn); free(link); + return NULL; } +static void reds_accept_ssl_connection(int fd, int event, void *data) +{ + RedLinkInfo *link; + int socket; + + if ((socket = accept(reds->secure_listen_socket, NULL, 0)) == -1) { + red_printf("accept failed, %s", strerror(errno)); + return; + } + + if (!(link = reds_init_client_ssl_connection(socket))) { + close(socket); + return; + } +} + + static void reds_accept(int fd, int event, void *data) { + int socket; + + if ((socket = accept(reds->listen_socket, NULL, 0)) == -1) { + red_printf("accept failed, %s", strerror(errno)); + return; + } + + if (spice_server_add_client(reds, socket, 0) < 0) + close(socket); +} + + +SPICE_GNUC_VISIBLE int spice_server_add_client(SpiceServer *s, int socket, int skip_auth) +{ RedLinkInfo *link; + RedsStream *stream; - link = reds_accept_connection(reds->listen_socket); - if (link == NULL) { + ASSERT(reds == s); + if (!(link = reds_init_client_connection(socket))) { red_printf("accept failed"); - return; + return -1; } + + link->skip_auth = skip_auth; + + stream = link->stream; + stream->read = stream_read_cb; + stream->write = stream_write_cb; + stream->writev = stream_writev_cb; + reds_handle_new_link(link); + return 0; } + +SPICE_GNUC_VISIBLE int spice_server_add_ssl_client(SpiceServer *s, int socket, int skip_auth) +{ + RedLinkInfo *link; + + ASSERT(reds == s); + if (!(link = reds_init_client_ssl_connection(socket))) { + return -1; + } + + link->skip_auth = skip_auth; + return 0; +} + + static int reds_init_socket(const char *addr, int portnr, int family) { static const int on=1, off=0; diff -Nru spice-0.10.0/server/reds.h spice-0.10.1/server/reds.h --- spice-0.10.0/server/reds.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/reds.h 2012-01-18 10:19:15.000000000 +0000 @@ -149,4 +149,3 @@ void reds_on_main_mouse_mode_request(void *message, size_t size); void reds_on_client_migrate_complete(RedClient *client); #endif - diff -Nru spice-0.10.0/server/red_tunnel_worker.c spice-0.10.1/server/red_tunnel_worker.c --- spice-0.10.0/server/red_tunnel_worker.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/red_tunnel_worker.c 2012-01-23 15:21:14.000000000 +0000 @@ -323,7 +323,7 @@ static void free_simple_process_queue(TunneledBufferProcessQueue *queue); typedef struct ServiceCallback { - /* allocating the the queue & setting the analysis proc by service type */ + /* allocating the queue & setting the analysis proc by service type */ TunneledBufferProcessQueue *(*alloc_process_queue)(RedSocket * sckt); void (*free_process_queue)(TunneledBufferProcessQueue *queue); } ServiceCallback; @@ -1644,27 +1644,27 @@ } static uint8_t *tunnel_channel_alloc_msg_rcv_buf(RedChannelClient *rcc, - SpiceDataHeader *msg_header) + uint16_t type, uint32_t size) { TunnelChannelClient *tunnel_channel = (TunnelChannelClient *)rcc->channel; - if (msg_header->type == SPICE_MSGC_TUNNEL_SOCKET_DATA) { + if (type == SPICE_MSGC_TUNNEL_SOCKET_DATA) { return (__tunnel_worker_alloc_socket_rcv_buf(tunnel_channel->worker)->buf); - } else if ((msg_header->type == SPICE_MSGC_MIGRATE_DATA) || - (msg_header->type == SPICE_MSGC_TUNNEL_SERVICE_ADD)) { - return spice_malloc(msg_header->size); + } else if ((type == SPICE_MSGC_MIGRATE_DATA) || + (type == SPICE_MSGC_TUNNEL_SERVICE_ADD)) { + return spice_malloc(size); } else { return (tunnel_channel->control_rcv_buf); } } // called by the receive routine of the channel, before the buffer was assigned to a socket -static void tunnel_channel_release_msg_rcv_buf(RedChannelClient *rcc, SpiceDataHeader *msg_header, +static void tunnel_channel_release_msg_rcv_buf(RedChannelClient *rcc, uint16_t type, uint32_t size, uint8_t *msg) { TunnelChannelClient *tunnel_channel = (TunnelChannelClient *)rcc->channel; - if (msg_header->type == SPICE_MSGC_TUNNEL_SOCKET_DATA) { + if (type == SPICE_MSGC_TUNNEL_SOCKET_DATA) { ASSERT(!(SPICE_CONTAINEROF(msg, RedSocketRawRcvBuf, buf)->base.usr_opaque)); __tunnel_worker_free_socket_rcv_buf(tunnel_channel->worker, SPICE_CONTAINEROF(msg, RedSocketRawRcvBuf, buf)); @@ -2243,12 +2243,13 @@ } // msg was allocated by tunnel_channel_alloc_msg_rcv_buf -static int tunnel_channel_handle_message(RedChannelClient *rcc, SpiceDataHeader *header, uint8_t *msg) +static int tunnel_channel_handle_message(RedChannelClient *rcc, uint16_t type, + uint32_t size, uint8_t *msg) { TunnelChannelClient *tunnel_channel = (TunnelChannelClient *)rcc->channel; RedSocket *sckt = NULL; // retrieve the sckt - switch (header->type) { + switch (type) { case SPICE_MSGC_MIGRATE_FLUSH_MARK: case SPICE_MSGC_MIGRATE_DATA: case SPICE_MSGC_TUNNEL_SERVICE_ADD: @@ -2269,12 +2270,12 @@ } break; default: - return red_channel_client_handle_message(rcc, header->size, header->type, msg); + return red_channel_client_handle_message(rcc, size, type, msg); } - switch (header->type) { + switch (type) { case SPICE_MSGC_TUNNEL_SERVICE_ADD: - if (header->size < sizeof(SpiceMsgcTunnelAddGenericService)) { + if (size < sizeof(SpiceMsgcTunnelAddGenericService)) { red_printf("bad message size"); free(msg); return FALSE; @@ -2285,7 +2286,7 @@ red_printf("REDC_TUNNEL_REMOVE_SERVICE not supported yet"); return FALSE; case SPICE_MSGC_TUNNEL_SOCKET_OPEN_ACK: - if (header->size != sizeof(SpiceMsgcTunnelSocketOpenAck)) { + if (size != sizeof(SpiceMsgcTunnelSocketOpenAck)) { red_printf("bad message size"); return FALSE; } @@ -2294,7 +2295,7 @@ ((SpiceMsgcTunnelSocketOpenAck *)msg)->tokens); case SPICE_MSGC_TUNNEL_SOCKET_OPEN_NACK: - if (header->size != sizeof(SpiceMsgcTunnelSocketOpenNack)) { + if (size != sizeof(SpiceMsgcTunnelSocketOpenNack)) { red_printf("bad message size"); return FALSE; } @@ -2302,35 +2303,35 @@ return tunnel_channel_handle_socket_connect_nack(tunnel_channel, sckt); case SPICE_MSGC_TUNNEL_SOCKET_DATA: { - if (header->size < sizeof(SpiceMsgcTunnelSocketData)) { + if (size < sizeof(SpiceMsgcTunnelSocketData)) { red_printf("bad message size"); return FALSE; } return tunnel_channel_handle_socket_receive_data(tunnel_channel, sckt, SPICE_CONTAINEROF(msg, RedSocketRawRcvBuf, buf), - header->size - sizeof(SpiceMsgcTunnelSocketData)); + size - sizeof(SpiceMsgcTunnelSocketData)); } case SPICE_MSGC_TUNNEL_SOCKET_FIN: - if (header->size != sizeof(SpiceMsgcTunnelSocketFin)) { + if (size != sizeof(SpiceMsgcTunnelSocketFin)) { red_printf("bad message size"); return FALSE; } return tunnel_channel_handle_socket_fin(tunnel_channel, sckt); case SPICE_MSGC_TUNNEL_SOCKET_CLOSED: - if (header->size != sizeof(SpiceMsgcTunnelSocketClosed)) { + if (size != sizeof(SpiceMsgcTunnelSocketClosed)) { red_printf("bad message size"); return FALSE; } return tunnel_channel_handle_socket_closed(tunnel_channel, sckt); case SPICE_MSGC_TUNNEL_SOCKET_CLOSED_ACK: - if (header->size != sizeof(SpiceMsgcTunnelSocketClosedAck)) { + if (size != sizeof(SpiceMsgcTunnelSocketClosedAck)) { red_printf("bad message size"); return FALSE; } return tunnel_channel_handle_socket_closed_ack(tunnel_channel, sckt); case SPICE_MSGC_TUNNEL_SOCKET_TOKEN: - if (header->size != sizeof(SpiceMsgcTunnelSocketTokens)) { + if (size != sizeof(SpiceMsgcTunnelSocketTokens)) { red_printf("bad message size"); return FALSE; } @@ -2338,7 +2339,7 @@ return tunnel_channel_handle_socket_token(tunnel_channel, sckt, (SpiceMsgcTunnelSocketTokens *)msg); default: - return red_channel_client_handle_message(rcc, header->size, header->type, msg); + return red_channel_client_handle_message(rcc, size, type, msg); } return TRUE; } @@ -3364,7 +3365,9 @@ if (setsockopt(stream->socket, IPPROTO_TCP, TCP_NODELAY, &delay_val, sizeof(delay_val)) == -1) { - red_printf("setsockopt failed, %s", strerror(errno)); + if (errno != ENOTSUP) { + red_printf("setsockopt failed, %s", strerror(errno)); + } } return TRUE; @@ -3504,4 +3507,3 @@ red_channel_set_data(channel, worker); reds_register_channel(worker->channel); } - diff -Nru spice-0.10.0/server/red_worker.c spice-0.10.1/server/red_worker.c --- spice-0.10.0/server/red_worker.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/red_worker.c 2012-01-23 15:21:14.000000000 +0000 @@ -593,6 +593,9 @@ struct RedWorker *worker; } CommonChannelClient; +/* Each drawable can refer to at most 3 images: src, brush and mask */ +#define MAX_DRAWABLE_PIXMAP_CACHE_ITEMS 3 + struct DisplayChannelClient { CommonChannelClient common; @@ -616,6 +619,8 @@ RedCompressBuf *used_compress_bufs; FreeList free_list; + uint64_t pixmap_cache_items[MAX_DRAWABLE_PIXMAP_CACHE_ITEMS]; + int num_pixmap_cache_items; } send_data; /* global lz encoding entities */ @@ -986,8 +991,7 @@ static inline void red_detach_stream(RedWorker *worker, Stream *stream); static void red_stop_stream(RedWorker *worker, Stream *stream); static inline void red_stream_maintenance(RedWorker *worker, Drawable *candidate, Drawable *sect); -static inline void display_begin_send_message(RedChannelClient *rcc, - SpiceMarshaller *base_marshaller); +static inline void display_begin_send_message(RedChannelClient *rcc); static void red_release_pixmap_cache(DisplayChannelClient *dcc); static void red_release_glz(DisplayChannelClient *dcc); static void red_freeze_glz(DisplayChannelClient *dcc); @@ -1039,14 +1043,17 @@ #define DCC_FOREACH(link, dcc, channel) \ for (link = channel ? ring_get_head(&(channel)->clients) : NULL,\ - dcc = link ? SPICE_CONTAINEROF((link), DisplayChannelClient, common.base.channel_link) : NULL;\ + dcc = link ? SPICE_CONTAINEROF((link), DisplayChannelClient,\ + common.base.channel_link) : NULL;\ (link); \ (link) = ring_next(&(channel)->clients, link),\ dcc = SPICE_CONTAINEROF((link), DisplayChannelClient, common.base.channel_link)) #define WORKER_FOREACH_DCC(worker, link, dcc) \ - for (link = ((worker) && (worker)->display_channel) ? ring_get_head(&(worker)->display_channel->common.base.clients) : NULL,\ - dcc = link ? SPICE_CONTAINEROF((link), DisplayChannelClient, common.base.channel_link) : NULL;\ + for (link = ((worker) && (worker)->display_channel) ?\ + ring_get_head(&(worker)->display_channel->common.base.clients) : NULL,\ + dcc = link ? SPICE_CONTAINEROF((link), DisplayChannelClient,\ + common.base.channel_link) : NULL;\ (link); \ (link) = ring_next(&(worker)->display_channel->common.base.clients, link),\ dcc = SPICE_CONTAINEROF((link), DisplayChannelClient, common.base.channel_link)) @@ -1086,7 +1093,8 @@ // TODO: replace with DCC_FOREACH when it is introduced #define WORKER_TO_DCC(worker) \ - (worker->display_channel ? SPICE_CONTAINEROF(worker->display_channel->common.base.rcc, DisplayChannelClient, common.base) : NULL) + (worker->display_channel ? SPICE_CONTAINEROF(worker->display_channel->common.base.rcc,\ + DisplayChannelClient, common.base) : NULL) #define DCC_TO_DC(dcc) SPICE_CONTAINEROF((dcc)->common.base.channel,\ DisplayChannel, common.base) @@ -1477,7 +1485,8 @@ RING_FOREACH_SAFE(item, next, &drawable->pipes) { dpi = SPICE_CONTAINEROF(item, DrawablePipeItem, base); if (pipe_item_is_linked(&dpi->dpi_pipe_item)) { - red_channel_client_pipe_remove_and_release(&dpi->dcc->common.base, &dpi->dpi_pipe_item); + red_channel_client_pipe_remove_and_release(&dpi->dcc->common.base, + &dpi->dpi_pipe_item); } } } @@ -1517,15 +1526,15 @@ } } -static uint8_t *common_alloc_recv_buf(RedChannelClient *rcc, SpiceDataHeader *msg_header) +static uint8_t *common_alloc_recv_buf(RedChannelClient *rcc, uint16_t type, uint32_t size) { CommonChannel *common = SPICE_CONTAINEROF(rcc->channel, CommonChannel, base); return common->recv_buf; } -static void common_release_recv_buf(RedChannelClient *rcc, - SpiceDataHeader *msg_header, uint8_t* msg) +static void common_release_recv_buf(RedChannelClient *rcc, uint16_t type, uint32_t size, + uint8_t* msg) { } @@ -1930,7 +1939,8 @@ } } -static void red_clear_surface_drawables_from_pipe(DisplayChannelClient *dcc, int surface_id, int force) +static void red_clear_surface_drawables_from_pipe(DisplayChannelClient *dcc, int surface_id, + int force) { Ring *ring; PipeItem *item; @@ -2336,7 +2346,9 @@ // partial imp static int is_equal_brush(SpiceBrush *b1, SpiceBrush *b2) { - return b1->type == b2->type && b1->type == SPICE_BRUSH_TYPE_SOLID && b1->u.color == b1->u.color; + return b1->type == b2->type && + b1->type == SPICE_BRUSH_TYPE_SOLID && + b1->u.color == b1->u.color; } // partial imp @@ -2375,9 +2387,11 @@ switch (d1->red_drawable->type) { case QXL_DRAW_STROKE: - return is_equal_brush(&d1->red_drawable->u.stroke.brush, &d2->red_drawable->u.stroke.brush); + return is_equal_brush(&d1->red_drawable->u.stroke.brush, + &d2->red_drawable->u.stroke.brush); case QXL_DRAW_FILL: - return is_equal_brush(&d1->red_drawable->u.fill.brush, &d2->red_drawable->u.fill.brush); + return is_equal_brush(&d1->red_drawable->u.fill.brush, + &d2->red_drawable->u.fill.brush); default: return FALSE; } @@ -2468,9 +2482,7 @@ { if (!--item->refs) { red_display_release_stream(worker, item->stream_agent); - if (item->rects) { - free(item->rects); - } + free(item->rects); free(item); } } @@ -2934,7 +2946,8 @@ return; } - double drop_factor = ((double)agent->frames - (double)agent->drops) / (double)agent->frames; + double drop_factor = ((double)agent->frames - (double)agent->drops) / + (double)agent->frames; if (drop_factor == 1) { if (agent->fps < MAX_FPS) { @@ -3070,7 +3083,8 @@ other_drawable = SPICE_CONTAINEROF(other_draw_item, Drawable, tree_item); if (item->effect == QXL_EFFECT_OPAQUE) { - int add_after = !!other_drawable->stream && is_drawable_independent_from_surfaces(drawable); + int add_after = !!other_drawable->stream && + is_drawable_independent_from_surfaces(drawable); red_stream_maintenance(worker, drawable, other_drawable); __current_add_drawable(worker, drawable, &other->siblings_link); other_drawable->refs++; @@ -3096,7 +3110,7 @@ other_drawable->refs++; current_remove_drawable(worker, other_drawable); - /* sending the drawable to clients that already received + /* sending the drawable to clients that already received * (or will receive) other_drawable */ worker_ring_item = ring_get_head(&worker->display_channel->common.base.clients); dpi_ring_item = ring_get_head(&other_drawable->pipes); @@ -3353,7 +3367,8 @@ return shadow; } -static inline int red_current_add_with_shadow(RedWorker *worker, Ring *ring, Drawable *item, SpicePoint *delta) +static inline int red_current_add_with_shadow(RedWorker *worker, Ring *ring, Drawable *item, + SpicePoint *delta) { #ifdef RED_WORKER_STAT stat_time_t start_time = stat_now(); @@ -3735,7 +3750,8 @@ } } -static inline void red_process_drawable(RedWorker *worker, RedDrawable *drawable, uint32_t group_id) +static inline void red_process_drawable(RedWorker *worker, RedDrawable *drawable, + uint32_t group_id) { int surface_id; Drawable *item = get_drawable(worker, drawable->effect, drawable, group_id); @@ -3808,7 +3824,8 @@ uint32_t height, int32_t stride, uint32_t format, void *line_0, int data_is_valid, int send_client); -static inline void red_process_surface(RedWorker *worker, RedSurfaceCmd *surface, uint32_t group_id, int loadvm) +static inline void red_process_surface(RedWorker *worker, RedSurfaceCmd *surface, + uint32_t group_id, int loadvm) { int surface_id; RedSurface *red_surface; @@ -4816,8 +4833,8 @@ } // adding the pipe item after pos. If pos == NULL, adding to head. -static ImageItem *red_add_surface_area_image(DisplayChannelClient *dcc, int surface_id, SpiceRect *area, - PipeItem *pos, int can_lossy) +static ImageItem *red_add_surface_area_image(DisplayChannelClient *dcc, int surface_id, + SpiceRect *area, PipeItem *pos, int can_lossy) { DisplayChannel *display_channel = DCC_TO_DC(dcc); RedWorker *worker = display_channel->common.worker; @@ -5047,7 +5064,7 @@ RedGlzDrawable *ret; RingItem *item; - // TODO - I don't really understand what's going on here, so just doing the technical equivalent + // TODO - I don't really understand what's going on here, so doing the technical equivalent // now that we have multiple glz_dicts, so the only way to go from dcc to drawable glz is to go // over the glz_ring (unless adding some better data structure then a ring) DRAWABLE_FOREACH_GLZ(drawable, item, ret) { @@ -6162,7 +6179,8 @@ } else { if (drawable->copy_bitmap_graduality == BITMAP_GRADUAL_INVALID) { quic_compress = BITMAP_FMT_IS_RGB[src->format] && - (_get_bitmap_graduality_level(display_channel->common.worker, src, drawable->group_id) == + (_get_bitmap_graduality_level(display_channel->common.worker, src, + drawable->group_id) == BITMAP_GRADUAL_HIGH); } else { quic_compress = (drawable->copy_bitmap_graduality == BITMAP_GRADUAL_HIGH); @@ -6248,6 +6266,8 @@ image->descriptor.width * image->descriptor.height, is_lossy, dcc)) { io_image->descriptor.flags |= SPICE_IMAGE_FLAGS_CACHE_ME; + dcc->send_data.pixmap_cache_items[dcc->send_data.num_pixmap_cache_items++] = + image->descriptor.id; stat_inc_counter(display_channel->add_to_cache_counter, 1); } } @@ -6290,6 +6310,8 @@ int lossy_cache_item; if (pixmap_cache_hit(dcc->pixmap_cache, image.descriptor.id, &lossy_cache_item, dcc)) { + dcc->send_data.pixmap_cache_items[dcc->send_data.num_pixmap_cache_items++] = + image.descriptor.id; if (can_lossy || !lossy_cache_item) { if (!display_channel->enable_jpeg || lossy_cache_item) { image.descriptor.type = SPICE_IMAGE_TYPE_FROM_CACHE; @@ -6463,6 +6485,7 @@ { red_display_reset_compress_buf(dcc); dcc->send_data.free_list.res->count = 0; + dcc->send_data.num_pixmap_cache_items = 0; memset(dcc->send_data.free_list.sync, 0, sizeof(dcc->send_data.free_list.sync)); } @@ -7087,7 +7110,8 @@ SpiceMarshaller *src_bitmap_out; SpiceTransparent transparent; - red_channel_client_init_send_data(rcc, SPICE_MSG_DISPLAY_DRAW_TRANSPARENT, &dpi->dpi_pipe_item); + red_channel_client_init_send_data(rcc, SPICE_MSG_DISPLAY_DRAW_TRANSPARENT, + &dpi->dpi_pipe_item); fill_base(base_marshaller, item); transparent = drawable->u.transparent; spice_marshall_Transparent(base_marshaller, @@ -7137,13 +7161,15 @@ SpiceAlphaBlend alpha_blend; FillBitsType src_send_type; - red_channel_client_init_send_data(rcc, SPICE_MSG_DISPLAY_DRAW_ALPHA_BLEND, &dpi->dpi_pipe_item); + red_channel_client_init_send_data(rcc, SPICE_MSG_DISPLAY_DRAW_ALPHA_BLEND, + &dpi->dpi_pipe_item); fill_base(base_marshaller, item); alpha_blend = drawable->u.alpha_blend; spice_marshall_AlphaBlend(base_marshaller, &alpha_blend, &src_bitmap_out); - src_send_type = fill_bits(dcc, src_bitmap_out, alpha_blend.src_bitmap, item, src_allowed_lossy); + src_send_type = fill_bits(dcc, src_bitmap_out, alpha_blend.src_bitmap, item, + src_allowed_lossy); return src_send_type; } @@ -7780,28 +7806,123 @@ free_list->res->resources[free_list->res->count++].id = id; } -static inline void display_begin_send_message(RedChannelClient *rcc, - SpiceMarshaller *base_marshaller) +static inline void display_marshal_sub_msg_inval_list(SpiceMarshaller *m, + FreeList *free_list) +{ + /* type + size + submessage */ + spice_marshaller_add_uint16(m, SPICE_MSG_DISPLAY_INVAL_LIST); + spice_marshaller_add_uint32(m, sizeof(*free_list->res) + + free_list->res->count * sizeof(free_list->res->resources[0])); + spice_marshall_msg_display_inval_list(m, free_list->res); +} + +static inline void display_marshal_sub_msg_inval_list_wait(SpiceMarshaller *m, + FreeList *free_list) + +{ + /* type + size + submessage */ + spice_marshaller_add_uint16(m, SPICE_MSG_WAIT_FOR_CHANNELS); + spice_marshaller_add_uint32(m, sizeof(free_list->wait.header) + + free_list->wait.header.wait_count * sizeof(free_list->wait.buf[0])); + spice_marshall_msg_wait_for_channels(m, &free_list->wait.header); +} + +/* use legacy SpiceDataHeader (with sub_list) */ +static inline void display_channel_send_free_list_legacy(RedChannelClient *rcc) +{ + DisplayChannelClient *dcc = RCC_TO_DCC(rcc); + FreeList *free_list = &dcc->send_data.free_list; + SpiceMarshaller *marshaller; + int sub_list_len = 1; + SpiceMarshaller *wait_m = NULL; + SpiceMarshaller *inval_m; + SpiceMarshaller *sub_list_m; + + marshaller = red_channel_client_get_marshaller(rcc); + inval_m = spice_marshaller_get_submarshaller(marshaller); + + display_marshal_sub_msg_inval_list(inval_m, free_list); + + if (free_list->wait.header.wait_count) { + wait_m = spice_marshaller_get_submarshaller(marshaller); + display_marshal_sub_msg_inval_list_wait(wait_m, free_list); + sub_list_len++; + } + + sub_list_m = spice_marshaller_get_submarshaller(marshaller); + spice_marshaller_add_uint16(sub_list_m, sub_list_len); + if (wait_m) { + spice_marshaller_add_uint32(sub_list_m, spice_marshaller_get_offset(wait_m)); + } + spice_marshaller_add_uint32(sub_list_m, spice_marshaller_get_offset(inval_m)); + red_channel_client_set_header_sub_list(rcc, spice_marshaller_get_offset(sub_list_m)); +} + +/* use mini header and SPICE_MSG_LIST */ +static inline void display_channel_send_free_list(RedChannelClient *rcc) +{ + DisplayChannelClient *dcc = RCC_TO_DCC(rcc); + FreeList *free_list = &dcc->send_data.free_list; + int sub_list_len = 1; + SpiceMarshaller *urgent_marshaller; + SpiceMarshaller *wait_m = NULL; + SpiceMarshaller *inval_m; + uint32_t sub_arr_offset; + uint32_t wait_offset = 0; + uint32_t inval_offset = 0; + int i; + + urgent_marshaller = red_channel_client_switch_to_urgent_sender(rcc); + for (i = 0; i < dcc->send_data.num_pixmap_cache_items; i++) { + int dummy; + /* When using the urgent marshaller, the serial number of the message that is + * going to be sent right after the SPICE_MSG_LIST, is increased by one. + * But all this message pixmaps cache references used its old serial. + * we use pixmap_cache_items to collect these pixmaps, and we update their serial by calling pixmap_cache_hit.*/ + pixmap_cache_hit(dcc->pixmap_cache, dcc->send_data.pixmap_cache_items[i], + &dummy, dcc); + } + + if (free_list->wait.header.wait_count) { + red_channel_client_init_send_data(rcc, SPICE_MSG_LIST, NULL); + } else { /* only one message, no need for a list */ + red_channel_client_init_send_data(rcc, SPICE_MSG_DISPLAY_INVAL_LIST, NULL); + spice_marshall_msg_display_inval_list(urgent_marshaller, free_list->res); + return; + } + + inval_m = spice_marshaller_get_submarshaller(urgent_marshaller); + display_marshal_sub_msg_inval_list(inval_m, free_list); + + if (free_list->wait.header.wait_count) { + wait_m = spice_marshaller_get_submarshaller(urgent_marshaller); + display_marshal_sub_msg_inval_list_wait(wait_m, free_list); + sub_list_len++; + } + + sub_arr_offset = sub_list_len * sizeof(uint32_t); + + spice_marshaller_add_uint16(urgent_marshaller, sub_list_len); + inval_offset = spice_marshaller_get_offset(inval_m); // calc the offset before + // adding the sub list + // offsets array to the marshaller + /* adding the array of offsets */ + if (wait_m) { + wait_offset = spice_marshaller_get_offset(wait_m); + spice_marshaller_add_uint32(urgent_marshaller, wait_offset + sub_arr_offset); + } + spice_marshaller_add_uint32(urgent_marshaller, inval_offset + sub_arr_offset); +} + +static inline void display_begin_send_message(RedChannelClient *rcc) { DisplayChannelClient *dcc = RCC_TO_DCC(rcc); FreeList *free_list = &dcc->send_data.free_list; - SpiceDataHeader *header = red_channel_client_get_header(rcc); if (free_list->res->count) { - int sub_list_len = 1; - SpiceMarshaller *wait_m = NULL; - SpiceMarshaller *inval_m; int sync_count = 0; int i; - inval_m = spice_marshaller_get_submarshaller(base_marshaller); - - /* type + size + submessage */ - spice_marshaller_add_uint16(inval_m, SPICE_MSG_DISPLAY_INVAL_LIST); - spice_marshaller_add_uint32(inval_m, sizeof(*free_list->res) + - free_list->res->count * sizeof(free_list->res->resources[0])); - spice_marshall_msg_display_inval_list(inval_m, free_list->res); - for (i = 0; i < MAX_CACHE_CLIENTS; i++) { if (i != dcc->common.id && free_list->sync[i] != 0) { free_list->wait.header.wait_list[sync_count].channel_type = SPICE_CHANNEL_DISPLAY; @@ -7811,24 +7932,11 @@ } free_list->wait.header.wait_count = sync_count; - if (sync_count) { - wait_m = spice_marshaller_get_submarshaller(base_marshaller); - - /* type + size + submessage */ - spice_marshaller_add_uint16(wait_m, SPICE_MSG_WAIT_FOR_CHANNELS); - spice_marshaller_add_uint32(wait_m, sizeof(free_list->wait.header) + - sync_count * sizeof(free_list->wait.buf[0])); - spice_marshall_msg_wait_for_channels(wait_m, &free_list->wait.header); - sub_list_len++; - } - - SpiceMarshaller *sub_list_m = spice_marshaller_get_submarshaller(base_marshaller); - spice_marshaller_add_uint16(sub_list_m, sub_list_len); - if (wait_m) { - spice_marshaller_add_uint32(sub_list_m, spice_marshaller_get_offset(wait_m)); + if (rcc->is_mini_header) { + display_channel_send_free_list(rcc); + } else { + display_channel_send_free_list_legacy(rcc); } - spice_marshaller_add_uint32(sub_list_m, spice_marshaller_get_offset(inval_m)); - header->sub_list = spice_marshaller_get_offset(sub_list_m); } red_channel_client_begin_send_message(rcc); } @@ -8496,7 +8604,7 @@ // a message is pending if (red_channel_client_send_message_pending(rcc)) { - display_begin_send_message(rcc, m); + display_begin_send_message(rcc); } } @@ -8660,18 +8768,13 @@ void red_disconnect_all_display_TODO_remove_me(RedChannel *channel) { - DisplayChannel *display_channel; - RedWorker *worker; // TODO: we need to record the client that actually causes the timeout. So // we need to check the locations of the various pipe heads when counting, // and disconnect only those/that. if (!channel) { return; } - display_channel = SPICE_CONTAINEROF(channel, DisplayChannel, common.base); - worker = display_channel->common.worker; red_channel_apply_clients(channel, display_channel_client_disconnect); - worker->display_channel = NULL; } static void red_migrate_display(RedWorker *worker, RedChannelClient *rcc) @@ -8682,7 +8785,8 @@ red_pipe_add_verb(rcc, PIPE_ITEM_TYPE_MIGRATE); // red_pipes_add_verb(&worker->display_channel->common.base, // SPICE_MSG_DISPLAY_STREAM_DESTROY_ALL); -// red_channel_pipes_add_type(&worker->display_channel->common.base, PIPE_ITEM_TYPE_MIGRATE); +// red_channel_pipes_add_type(&worker->display_channel->common.base, +// PIPE_ITEM_TYPE_MIGRATE); } } @@ -8984,8 +9088,8 @@ } } -// TODO: on timeout, don't disconnect all channeld immeduiatly - try to disconnect the slowest ones first -// and maybe turn timeouts to several timeouts in order to disconnect channels gradually. +// TODO: on timeout, don't disconnect all channeld immeduiatly - try to disconnect the slowest ones +// first and maybe turn timeouts to several timeouts in order to disconnect channels gradually. // Should use disconnect or shutdown? static inline void flush_all_qxl_commands(RedWorker *worker) { @@ -9320,7 +9424,8 @@ return migrate_data->message_serial; } -static uint64_t display_channel_handle_migrate_data(RedChannelClient *rcc, uint32_t size, void *message) +static uint64_t display_channel_handle_migrate_data(RedChannelClient *rcc, uint32_t size, + void *message) { DisplayChannelMigrateData *migrate_data; DisplayChannel *display_channel = SPICE_CONTAINEROF(rcc->channel, DisplayChannel, common.base); @@ -9377,7 +9482,8 @@ return TRUE; } -static int display_channel_handle_message(RedChannelClient *rcc, uint32_t size, uint16_t type, void *message) +static int display_channel_handle_message(RedChannelClient *rcc, uint32_t size, uint16_t type, + void *message) { DisplayChannelClient *dcc = RCC_TO_DCC(rcc); switch (type) { @@ -9413,8 +9519,11 @@ // TODO - this should be dynamic, not one time at channel creation delay_val = main_channel_client_is_low_bandwidth(mcc) ? 0 : 1; - if (setsockopt(stream->socket, IPPROTO_TCP, TCP_NODELAY, &delay_val, sizeof(delay_val)) == -1) { - red_printf("setsockopt failed, %s", strerror(errno)); + if (setsockopt(stream->socket, IPPROTO_TCP, TCP_NODELAY, &delay_val, + sizeof(delay_val)) == -1) { + if (errno != ENOTSUP) { + red_printf("setsockopt failed, %s", strerror(errno)); + } } return TRUE; } @@ -9447,12 +9556,18 @@ }; static CommonChannelClient *common_channel_client_create(int size, - CommonChannel *common, RedClient *client, RedsStream *stream) + CommonChannel *common, + RedClient *client, + RedsStream *stream, + uint32_t *common_caps, + int num_common_caps, + uint32_t *caps, + int num_caps) { MainChannelClient *mcc = red_client_get_main(client); RedChannelClient *rcc = red_channel_client_create(size, &common->base, client, stream, - 0, NULL, 0, NULL); + num_common_caps, common_caps, num_caps, caps); CommonChannelClient *common_cc = (CommonChannelClient*)rcc; common_cc->worker = common->worker; @@ -9465,11 +9580,15 @@ DisplayChannelClient *display_channel_client_create(CommonChannel *common, - RedClient *client, RedsStream *stream) + RedClient *client, RedsStream *stream, + uint32_t *common_caps, int num_common_caps, + uint32_t *caps, int num_caps) { DisplayChannelClient *dcc = (DisplayChannelClient*)common_channel_client_create( - sizeof(DisplayChannelClient), common, client, stream); + sizeof(DisplayChannelClient), common, client, stream, + common_caps, num_common_caps, + caps, num_caps); if (!dcc) { return NULL; @@ -9480,11 +9599,17 @@ } CursorChannelClient *cursor_channel_create_rcc(CommonChannel *common, - RedClient *client, RedsStream *stream) + RedClient *client, RedsStream *stream, + uint32_t *common_caps, int num_common_caps, + uint32_t *caps, int num_caps) { CursorChannelClient *ccc = (CursorChannelClient*)common_channel_client_create( - sizeof(CursorChannelClient), common, client, stream); + sizeof(CursorChannelClient), common, client, stream, + common_caps, + num_common_caps, + caps, + num_caps); if (!ccc) { return NULL; @@ -9523,7 +9648,7 @@ channel_handle_parsed_proc handle_parsed, channel_handle_migrate_flush_mark_proc handle_migrate_flush_mark, channel_handle_migrate_data_proc handle_migrate_data, - channel_handle_migrate_data_get_serial_proc handle_migrate_data_get_serial) + channel_handle_migrate_data_get_serial_proc migrate_get_serial) { RedChannel *channel = NULL; CommonChannel *common; @@ -9538,7 +9663,7 @@ channel_cbs.release_recv_buf = common_release_recv_buf; channel_cbs.handle_migrate_flush_mark = handle_migrate_flush_mark; channel_cbs.handle_migrate_data = handle_migrate_data; - channel_cbs.handle_migrate_data_get_serial = handle_migrate_data_get_serial; + channel_cbs.handle_migrate_data_get_serial = migrate_get_serial; channel = red_channel_create_parser(size, &worker_core, channel_type, worker->id, @@ -9707,7 +9832,7 @@ } } -static void ensure_display_channel_created(RedWorker *worker, int migrate) +static void display_channel_create(RedWorker *worker, int migrate) { DisplayChannel *display_channel; @@ -9754,20 +9879,24 @@ static void handle_new_display_channel(RedWorker *worker, RedClient *client, RedsStream *stream, - int migrate) + int migrate, + uint32_t *common_caps, int num_common_caps, + uint32_t *caps, int num_caps) { DisplayChannel *display_channel; DisplayChannelClient *dcc; size_t stream_buf_size; int is_low_bandwidth = main_channel_client_is_low_bandwidth(red_client_get_main(client)); - ensure_display_channel_created(worker, migrate); if (!worker->display_channel) { + red_printf("Warning: Display channel was not created"); return; } display_channel = worker->display_channel; red_printf("add display channel client"); - dcc = display_channel_client_create(&display_channel->common, client, stream); + dcc = display_channel_client_create(&display_channel->common, client, stream, + common_caps, num_common_caps, + caps, num_caps); if (!dcc) { return; } @@ -9925,7 +10054,7 @@ } } -static void ensure_cursor_channel_created(RedWorker *worker, int migrate) +static void cursor_channel_create(RedWorker *worker, int migrate) { if (worker->cursor_channel != NULL) { return; @@ -9946,19 +10075,22 @@ } static void red_connect_cursor(RedWorker *worker, RedClient *client, RedsStream *stream, - int migrate) + int migrate, + uint32_t *common_caps, int num_common_caps, + uint32_t *caps, int num_caps) { CursorChannel *channel; CursorChannelClient *ccc; - ensure_cursor_channel_created(worker, migrate); if (worker->cursor_channel == NULL) { - red_printf("failed to create cursor channel"); + red_printf("Warning: cursor channel was not created"); return; } channel = worker->cursor_channel; red_printf("add cursor channel client"); - ccc = cursor_channel_create_rcc(&channel->common, client, stream); + ccc = cursor_channel_create_rcc(&channel->common, client, stream, + common_caps, num_common_caps, + caps, num_caps); if (!ccc) { return; } @@ -10241,7 +10373,8 @@ worker->cursor_trail_length = worker->cursor_trail_frequency = 0; if (cursor_is_connected(worker)) { - red_channel_pipes_add_type(&worker->cursor_channel->common.base, PIPE_ITEM_TYPE_INVAL_CURSOR_CACHE); + red_channel_pipes_add_type(&worker->cursor_channel->common.base, + PIPE_ITEM_TYPE_INVAL_CURSOR_CACHE); if (!worker->cursor_channel->common.base.migrate) { red_pipes_add_verb(&worker->cursor_channel->common.base, SPICE_MSG_CURSOR_RESET); } @@ -10298,8 +10431,8 @@ PANIC_ON(((uint64_t)abs(surface.stride) * (uint64_t)surface.height) != abs(surface.stride) * surface.height); - line_0 = (uint8_t*)get_virt(&worker->mem_slots, surface.mem, surface.height * abs(surface.stride), - surface.group_id); + line_0 = (uint8_t*)get_virt(&worker->mem_slots, surface.mem, + surface.height * abs(surface.stride), surface.group_id); if (surface.stride < 0) { line_0 -= (int32_t)(surface.stride * (surface.height -1)); } @@ -10514,7 +10647,7 @@ RedChannel *red_channel; // TODO: handle seemless migration. Temp, setting migrate to FALSE - ensure_display_channel_created(worker, FALSE); + display_channel_create(worker, FALSE); red_channel = &worker->display_channel->common.base; send_data(worker->channel, &red_channel, sizeof(RedChannel *)); } @@ -10528,7 +10661,11 @@ int migration = msg->migration; red_printf("connect"); - handle_new_display_channel(worker, client, stream, migration); + handle_new_display_channel(worker, client, stream, migration, + msg->common_caps, msg->num_common_caps, + msg->caps, msg->num_caps); + free(msg->caps); + free(msg->common_caps); } void handle_dev_display_disconnect(void *opaque, void *payload) @@ -10559,7 +10696,7 @@ RedChannel *red_channel; // TODO: handle seemless migration. Temp, setting migrate to FALSE - ensure_cursor_channel_created(worker, FALSE); + cursor_channel_create(worker, FALSE); red_channel = &worker->cursor_channel->common.base; send_data(worker->channel, &red_channel, sizeof(RedChannel *)); } @@ -10573,7 +10710,11 @@ int migration = msg->migration; red_printf("cursor connect"); - red_connect_cursor(worker, client, stream, migration); + red_connect_cursor(worker, client, stream, migration, + msg->common_caps, msg->num_common_caps, + msg->caps, msg->num_caps); + free(msg->caps); + free(msg->common_caps); } void handle_dev_cursor_disconnect(void *opaque, void *payload) diff -Nru spice-0.10.0/server/red_worker.h spice-0.10.1/server/red_worker.h --- spice-0.10.0/server/red_worker.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/red_worker.h 2012-01-18 10:19:15.000000000 +0000 @@ -165,4 +165,3 @@ } #endif - diff -Nru spice-0.10.0/server/smartcard.c spice-0.10.1/server/smartcard.c --- spice-0.10.0/server/smartcard.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/smartcard.c 2012-01-18 10:19:15.000000000 +0000 @@ -273,15 +273,18 @@ } static uint8_t *smartcard_channel_alloc_msg_rcv_buf(RedChannelClient *rcc, - SpiceDataHeader *msg_header) + uint16_t type, + uint32_t size) { - return spice_malloc(msg_header->size); + return spice_malloc(size); } static void smartcard_channel_release_msg_rcv_buf(RedChannelClient *rcc, - SpiceDataHeader *msg_header, uint8_t *msg) + uint16_t type, + uint32_t size, + uint8_t *msg) { - red_printf("freeing %d bytes", msg_header->size); + red_printf("freeing %d bytes", size); free(msg); } @@ -332,7 +335,8 @@ PipeItem *item, int item_pushed) { if (item->type == PIPE_ITEM_TYPE_MSG) { - free(((MsgItem*)item)->vheader); + MsgItem *mi = (MsgItem *)item; + free(mi->vheader); } free(item); } @@ -439,17 +443,18 @@ } static int smartcard_channel_handle_message(RedChannelClient *rcc, - SpiceDataHeader *header, + uint16_t type, + uint32_t size, uint8_t *msg) { VSCMsgHeader* vheader = (VSCMsgHeader*)msg; - if (header->type != SPICE_MSGC_SMARTCARD_DATA) { + if (type != SPICE_MSGC_SMARTCARD_DATA) { /* handle ack's, spicy sends them while spicec does not */ - return red_channel_client_handle_message(rcc, header->size, header->type, msg); + return red_channel_client_handle_message(rcc, size, type, msg); } - ASSERT(header->size == vheader->length + sizeof(VSCMsgHeader)); + ASSERT(size == vheader->length + sizeof(VSCMsgHeader)); switch (vheader->type) { case VSC_ReaderAdd: smartcard_add_reader(rcc, msg + sizeof(VSCMsgHeader)); diff -Nru spice-0.10.0/server/smartcard.h spice-0.10.1/server/smartcard.h --- spice-0.10.0/server/smartcard.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/smartcard.h 2012-01-18 10:19:15.000000000 +0000 @@ -30,4 +30,3 @@ void smartcard_device_disconnect(SpiceCharDeviceInstance *char_device); #endif // __SMART_CARD_H__ - diff -Nru spice-0.10.0/server/snd_worker.c spice-0.10.1/server/snd_worker.c --- spice-0.10.0/server/snd_worker.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/snd_worker.c 2012-01-23 15:21:14.000000000 +0000 @@ -101,7 +101,6 @@ struct { uint64_t serial; - SpiceDataHeader *header; SpiceMarshaller *marshaller; uint32_t size; uint32_t pos; @@ -109,7 +108,7 @@ struct { uint8_t buf[RECIVE_BUF_SIZE]; - SpiceDataHeader *message; + uint8_t *message_start; uint8_t *now; uint8_t *end; } recive_data; @@ -417,10 +416,14 @@ static void snd_receive(void* data) { SndChannel *channel = (SndChannel*)data; + SpiceDataHeaderOpaque *header; + if (!channel) { return; } + header = &channel->channel_client->incoming.header; + for (;;) { ssize_t n; n = channel->recive_data.end - channel->recive_data.now; @@ -448,40 +451,44 @@ } else { channel->recive_data.now += n; for (;;) { - SpiceDataHeader *header = channel->recive_data.message; - uint8_t *data = (uint8_t *)(header+1); + uint8_t *msg_start = channel->recive_data.message_start; + uint8_t *data = msg_start + header->header_size; size_t parsed_size; uint8_t *parsed; message_destructor_t parsed_free; - n = channel->recive_data.now - (uint8_t *)header; - if (n < sizeof(SpiceDataHeader) || n < sizeof(SpiceDataHeader) + header->size) { + header->data = msg_start; + n = channel->recive_data.now - msg_start; + + if (n < header->header_size || + n < header->header_size + header->get_msg_size(header)) { break; } - parsed = channel->parser((void *)data, data + header->size, header->type, + parsed = channel->parser((void *)data, data + header->get_msg_size(header), + header->get_msg_type(header), SPICE_VERSION_MINOR, &parsed_size, &parsed_free); if (parsed == NULL) { - red_printf("failed to parse message type %d", header->type); + red_printf("failed to parse message type %d", header->get_msg_type(header)); snd_disconnect_channel(channel); return; } - if (!channel->handle_message(channel, parsed_size, header->type, parsed)) { + if (!channel->handle_message(channel, parsed_size, + header->get_msg_type(header), parsed)) { free(parsed); snd_disconnect_channel(channel); return; } parsed_free(parsed); - channel->recive_data.message = (SpiceDataHeader *)((uint8_t *)header + - sizeof(SpiceDataHeader) + - header->size); + channel->recive_data.message_start = msg_start + header->header_size + + header->get_msg_size(header); } - if (channel->recive_data.now == (uint8_t *)channel->recive_data.message) { + if (channel->recive_data.now == channel->recive_data.message_start) { channel->recive_data.now = channel->recive_data.buf; - channel->recive_data.message = (SpiceDataHeader *)channel->recive_data.buf; + channel->recive_data.message_start = channel->recive_data.buf; } else if (channel->recive_data.now == channel->recive_data.end) { - memcpy(channel->recive_data.buf, channel->recive_data.message, n); + memcpy(channel->recive_data.buf, channel->recive_data.message_start, n); channel->recive_data.now = channel->recive_data.buf + n; - channel->recive_data.message = (SpiceDataHeader *)channel->recive_data.buf; + channel->recive_data.message_start = channel->recive_data.buf; } } } @@ -501,28 +508,37 @@ static inline int snd_reset_send_data(SndChannel *channel, uint16_t verb) { + SpiceDataHeaderOpaque *header; + if (!channel) { return FALSE; } + header = &channel->channel_client->send_data.header; spice_marshaller_reset(channel->send_data.marshaller); - channel->send_data.header = (SpiceDataHeader *) - spice_marshaller_reserve_space(channel->send_data.marshaller, sizeof(SpiceDataHeader)); - spice_marshaller_set_base(channel->send_data.marshaller, sizeof(SpiceDataHeader)); + header->data = spice_marshaller_reserve_space(channel->send_data.marshaller, + header->header_size); + spice_marshaller_set_base(channel->send_data.marshaller, + header->header_size); channel->send_data.pos = 0; - channel->send_data.header->sub_list = 0; - channel->send_data.header->size = 0; - channel->send_data.header->type = verb; - channel->send_data.header->serial = ++channel->send_data.serial; + header->set_msg_size(header, 0); + header->set_msg_type(header, verb); + channel->send_data.serial++; + if (!channel->channel_client->is_mini_header) { + header->set_msg_serial(header, channel->send_data.serial); + header->set_msg_sub_list(header, 0); + } + return TRUE; } static int snd_begin_send_message(SndChannel *channel) { + SpiceDataHeaderOpaque *header = &channel->channel_client->send_data.header; + spice_marshaller_flush(channel->send_data.marshaller); channel->send_data.size = spice_marshaller_get_total_size(channel->send_data.marshaller); - channel->send_data.header->size = channel->send_data.size - sizeof(SpiceDataHeader); - channel->send_data.header = NULL; /* avoid writing to this until we have a new message */ + header->set_msg_size(header, channel->send_data.size - header->header_size); return snd_send_data(channel); } @@ -709,22 +725,25 @@ { SndChannel *channel = (SndChannel *)record_channel; SpiceMsgMigrate migrate; - SpiceDataHeader *header; + SpiceDataHeaderOpaque *header; RecordMigrateData *data; if (!snd_reset_send_data(channel, SPICE_MSG_MIGRATE)) { return FALSE; } + header = &channel->channel_client->send_data.header; migrate.flags = SPICE_MIGRATE_NEED_DATA_TRANSFER; spice_marshall_msg_migrate(channel->send_data.marshaller, &migrate); - header = (SpiceDataHeader *)spice_marshaller_reserve_space(channel->send_data.marshaller, - sizeof(SpiceDataHeader)); - header->type = SPICE_MSG_MIGRATE_DATA; - header->size = sizeof(RecordMigrateData); - header->serial = ++channel->send_data.serial; - header->sub_list = 0; + header->data = spice_marshaller_reserve_space(channel->send_data.marshaller, header->header_size); + header->set_msg_size(header, sizeof(RecordMigrateData)); + header->set_msg_type(header, SPICE_MSG_MIGRATE_DATA); + ++channel->send_data.serial; + if (!channel->channel_client->is_mini_header) { + header->set_msg_serial(header, channel->send_data.serial); + header->set_msg_sub_list(header, 0); + } data = (RecordMigrateData *)spice_marshaller_reserve_space(channel->send_data.marshaller, sizeof(RecordMigrateData)); @@ -735,7 +754,8 @@ data->mode_time = record_channel->mode_time; channel->send_data.size = spice_marshaller_get_total_size(channel->send_data.marshaller); - channel->send_data.header->size = channel->send_data.size - sizeof(SpiceDataHeader) - sizeof(SpiceDataHeader) - sizeof(*data); + header->set_msg_size(header, channel->send_data.size - header->header_size - + header->header_size - sizeof(*data)); return snd_send_data(channel); } @@ -876,12 +896,15 @@ snd_channel_handle_message_proc handle_message, snd_channel_on_message_done_proc on_message_done, snd_channel_cleanup_channel_proc cleanup, + uint32_t *common_caps, int num_common_caps, uint32_t *caps, int num_caps) { SndChannel *channel; int delay_val; int flags; +#ifdef SO_PRIORITY int priority; +#endif int tos; MainChannelClient *mcc = red_client_get_main(client); @@ -890,20 +913,28 @@ goto error1; } +#ifdef SO_PRIORITY priority = 6; if (setsockopt(stream->socket, SOL_SOCKET, SO_PRIORITY, (void*)&priority, sizeof(priority)) == -1) { - red_printf("setsockopt failed, %s", strerror(errno)); + if (errno != ENOTSUP) { + red_printf("setsockopt failed, %s", strerror(errno)); + } } +#endif tos = IPTOS_LOWDELAY; if (setsockopt(stream->socket, IPPROTO_IP, IP_TOS, (void*)&tos, sizeof(tos)) == -1) { - red_printf("setsockopt failed, %s", strerror(errno)); + if (errno != ENOTSUP) { + red_printf("setsockopt failed, %s", strerror(errno)); + } } delay_val = main_channel_client_is_low_bandwidth(mcc) ? 0 : 1; if (setsockopt(stream->socket, IPPROTO_TCP, TCP_NODELAY, &delay_val, sizeof(delay_val)) == -1) { - red_printf("setsockopt failed, %s", strerror(errno)); + if (errno != ENOTSUP) { + red_printf("setsockopt failed, %s", strerror(errno)); + } } if (fcntl(stream->socket, F_SETFL, flags | O_NONBLOCK) == -1) { @@ -917,7 +948,7 @@ channel->parser = spice_get_client_channel_parser(channel_id, NULL); channel->stream = stream; channel->worker = worker; - channel->recive_data.message = (SpiceDataHeader *)channel->recive_data.buf; + channel->recive_data.message_start = channel->recive_data.buf; channel->recive_data.now = channel->recive_data.buf; channel->recive_data.end = channel->recive_data.buf + sizeof(channel->recive_data.buf); channel->send_data.marshaller = spice_marshaller_new(); @@ -938,7 +969,7 @@ channel->channel_client = red_channel_client_create_dummy(sizeof(RedChannelClient), worker->base_channel, client, - 0, NULL, + num_common_caps, common_caps, num_caps, caps); return channel; @@ -1159,6 +1190,7 @@ snd_playback_handle_message, snd_playback_on_message_done, snd_playback_cleanup, + common_caps, num_common_caps, caps, num_caps))) { goto error_2; } @@ -1367,6 +1399,7 @@ snd_record_handle_message, snd_record_on_message_done, snd_record_cleanup, + common_caps, num_common_caps, caps, num_caps))) { goto error_2; } @@ -1539,4 +1572,3 @@ { return (playback_compression == SPICE_AUDIO_DATA_MODE_RAW) ? FALSE : TRUE; } - diff -Nru spice-0.10.0/server/snd_worker.h spice-0.10.1/server/snd_worker.h --- spice-0.10.0/server/snd_worker.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/snd_worker.h 2012-01-18 10:19:15.000000000 +0000 @@ -30,4 +30,3 @@ int snd_get_playback_compression(void); #endif - diff -Nru spice-0.10.0/server/spice-experimental.h spice-0.10.1/server/spice-experimental.h --- spice-0.10.0/server/spice-experimental.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/spice-experimental.h 2012-01-18 10:19:15.000000000 +0000 @@ -38,4 +38,3 @@ int spice_server_migrate_client_state(SpiceServer *s); #endif // __SPICE_EXPERIMENTAL_H__ - diff -Nru spice-0.10.0/server/spice.h spice-0.10.1/server/spice.h --- spice-0.10.0/server/spice.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/spice.h 2012-01-23 15:21:14.000000000 +0000 @@ -22,7 +22,7 @@ #include #include -#define SPICE_SERVER_VERSION 0x000901 /* release 0.9.1 */ +#define SPICE_SERVER_VERSION 0x000a01 /* release 0.10.1 */ /* interface base type */ @@ -425,6 +425,9 @@ const char *private_key_file, const char *key_passwd, const char *dh_key_file, const char *ciphersuite); +int spice_server_add_client(SpiceServer *s, int socket, int skip_auth); +int spice_server_add_ssl_client(SpiceServer *s, int socket, int skip_auth); + int spice_server_add_interface(SpiceServer *s, SpiceBaseInstance *sin); int spice_server_remove_interface(SpiceBaseInstance *sin); diff -Nru spice-0.10.0/server/spice-server.syms spice-0.10.1/server/spice-server.syms --- spice-0.10.0/server/spice-server.syms 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/spice-server.syms 2012-01-18 10:19:15.000000000 +0000 @@ -96,3 +96,8 @@ spice_server_get_num_clients; } SPICE_SERVER_0.8.3; +SPICE_SERVER_0.10.1 { +global: + spice_server_add_client; + spice_server_add_ssl_client; +} SPICE_SERVER_0.10.0; diff -Nru spice-0.10.0/server/spicevmc.c spice-0.10.1/server/spicevmc.c --- spice-0.10.0/server/spicevmc.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/spicevmc.c 2012-01-23 15:21:14.000000000 +0000 @@ -23,6 +23,10 @@ #endif #include +#include +#include +#include // IPPROTO_TCP +#include // TCP_NODELAY #include "server/char_device.h" #include "server/red_channel.h" @@ -82,6 +86,19 @@ static int spicevmc_red_channel_client_config_socket(RedChannelClient *rcc) { + int delay_val = 1; + RedsStream *stream = red_channel_client_get_stream(rcc); + + if (rcc->channel->type == SPICE_CHANNEL_USBREDIR) { + if (setsockopt(stream->socket, IPPROTO_TCP, TCP_NODELAY, + &delay_val, sizeof(delay_val)) != 0) { + if (errno != ENOTSUP) { + red_printf("setsockopt failed, %s", strerror(errno)); + return FALSE; + } + } + } + return TRUE; } @@ -99,7 +116,11 @@ sin = state->chardev_sin; sif = SPICE_CONTAINEROF(sin->base.sif, SpiceCharDeviceInterface, base); - red_channel_client_destroy(rcc); + /* Don't destroy the rcc if the entire client is disconnecting, as then + red_client_destroy will already do this! */ + if (!rcc->client->disconnecting) + red_channel_client_destroy(rcc); + state->rcc = NULL; if (sif->state) { sif->state(sin, 0); @@ -107,7 +128,9 @@ } static int spicevmc_red_channel_client_handle_message(RedChannelClient *rcc, - SpiceDataHeader *header, uint8_t *msg) + uint16_t type, + uint32_t size, + uint8_t *msg) { SpiceVmcState *state; SpiceCharDeviceInstance *sin; @@ -117,22 +140,22 @@ sin = state->chardev_sin; sif = SPICE_CONTAINEROF(sin->base.sif, SpiceCharDeviceInterface, base); - if (header->type != SPICE_MSGC_SPICEVMC_DATA) { - return red_channel_client_handle_message(rcc, header->size, - header->type, msg); + if (type != SPICE_MSGC_SPICEVMC_DATA) { + return red_channel_client_handle_message(rcc, size, type, msg); } /* * qemu spicevmc will consume everything we give it, no need for * flow control checks (or to use a pipe). */ - sif->write(sin, msg, header->size); + sif->write(sin, msg, size); return TRUE; } static uint8_t *spicevmc_red_channel_alloc_msg_rcv_buf(RedChannelClient *rcc, - SpiceDataHeader *msg_header) + uint16_t type, + uint32_t size) { SpiceVmcState *state; @@ -140,9 +163,9 @@ assert(!state->rcv_buf_in_use); - if (msg_header->size > state->rcv_buf_size) { - state->rcv_buf = spice_realloc(state->rcv_buf, msg_header->size); - state->rcv_buf_size = msg_header->size; + if (size > state->rcv_buf_size) { + state->rcv_buf = spice_realloc(state->rcv_buf, size); + state->rcv_buf_size = size; } state->rcv_buf_in_use = 1; @@ -151,7 +174,9 @@ } static void spicevmc_red_channel_release_msg_rcv_buf(RedChannelClient *rcc, - SpiceDataHeader *msg_header, uint8_t *msg) + uint16_t type, + uint32_t size, + uint8_t *msg) { SpiceVmcState *state; diff -Nru spice-0.10.0/server/stat.h spice-0.10.1/server/stat.h --- spice-0.10.0/server/stat.h 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/stat.h 2012-01-18 10:19:15.000000000 +0000 @@ -45,4 +45,3 @@ #endif #endif - diff -Nru spice-0.10.0/server/tests/basic_event_loop.c spice-0.10.1/server/tests/basic_event_loop.c --- spice-0.10.0/server/tests/basic_event_loop.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/tests/basic_event_loop.c 2012-01-18 10:19:15.000000000 +0000 @@ -1,7 +1,7 @@ +#include #include #include #include -#include #include #include @@ -281,4 +281,3 @@ ignore_sigpipe(); return &core; } - diff -Nru spice-0.10.0/server/tests/Makefile.in spice-0.10.1/server/tests/Makefile.in --- spice-0.10.0/server/tests/Makefile.in 2011-11-10 15:02:17.000000000 +0000 +++ spice-0.10.1/server/tests/Makefile.in 2012-01-23 15:23:23.000000000 +0000 @@ -233,6 +233,8 @@ WINDRES = @WINDRES@ XFIXES_CFLAGS = @XFIXES_CFLAGS@ XFIXES_LIBS = @XFIXES_LIBS@ +XINERAMA_CFLAGS = @XINERAMA_CFLAGS@ +XINERAMA_LIBS = @XINERAMA_LIBS@ XRANDR12_CFLAGS = @XRANDR12_CFLAGS@ XRANDR12_LIBS = @XRANDR12_LIBS@ XRANDR_CFLAGS = @XRANDR_CFLAGS@ diff -Nru spice-0.10.0/server/tests/README spice-0.10.1/server/tests/README --- spice-0.10.0/server/tests/README 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/tests/README 2012-01-18 10:19:15.000000000 +0000 @@ -14,11 +14,10 @@ A complete server, only provides the main and inputs channels. Doesn't actually produce anything on the channels. Essentially a test of the regular link code (reds.c), good for multiple connect/disconnect tests. test_empty_success - tests calling + tests calling test_fail_on_null_core_interface should abort when run (when spice tries to watch_add) basic_event_loop.c used by test_just_sockets_no_ssl, can be used by other tests. very crude event loop. Should probably use libevent for better tests, but this is self contained. - diff -Nru spice-0.10.0/server/tests/test_display_base.c spice-0.10.1/server/tests/test_display_base.c --- spice-0.10.0/server/tests/test_display_base.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/tests/test_display_base.c 2012-01-18 10:19:15.000000000 +0000 @@ -1,3 +1,4 @@ +#include #include #include #include @@ -29,9 +30,7 @@ if (!update) { return; } - if (update->bitmap) { - free(update->bitmap); - } + free(update->bitmap); free(update); } @@ -576,4 +575,3 @@ wakeup_timer = core->timer_add(do_wakeup, NULL); return server; } - diff -Nru spice-0.10.0/server/tests/test_display_no_ssl.c spice-0.10.1/server/tests/test_display_no_ssl.c --- spice-0.10.0/server/tests/test_display_no_ssl.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/tests/test_display_no_ssl.c 2012-01-18 10:19:15.000000000 +0000 @@ -6,6 +6,7 @@ * existing ones in the test_display_base supplied queue. */ +#include #include #include "test_display_base.h" @@ -50,4 +51,3 @@ return 0; } - diff -Nru spice-0.10.0/server/tests/test_display_streaming.c spice-0.10.1/server/tests/test_display_streaming.c --- spice-0.10.0/server/tests/test_display_streaming.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/tests/test_display_streaming.c 2012-01-18 10:19:15.000000000 +0000 @@ -4,6 +4,7 @@ * TODO: stop updating same rect, check (prog) that stream stops */ +#include #include "test_display_base.h" int simple_commands[] = { @@ -24,4 +25,3 @@ basic_event_loop_mainloop(); return 0; } - diff -Nru spice-0.10.0/server/tests/test_empty_success.c spice-0.10.1/server/tests/test_empty_success.c --- spice-0.10.0/server/tests/test_empty_success.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/tests/test_empty_success.c 2012-01-23 15:21:14.000000000 +0000 @@ -1,5 +1,7 @@ +#include #include #include + #include SpiceTimer* timer_add(SpiceTimerFunc func, void *opaque) @@ -57,4 +59,3 @@ return 0; } - diff -Nru spice-0.10.0/server/tests/test_fail_on_null_core_interface.c spice-0.10.1/server/tests/test_fail_on_null_core_interface.c --- spice-0.10.0/server/tests/test_fail_on_null_core_interface.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/tests/test_fail_on_null_core_interface.c 2012-01-18 10:19:15.000000000 +0000 @@ -1,3 +1,4 @@ +#include #include int main(void) @@ -10,4 +11,3 @@ return 0; } - diff -Nru spice-0.10.0/server/tests/test_just_sockets_no_ssl.c spice-0.10.1/server/tests/test_just_sockets_no_ssl.c --- spice-0.10.0/server/tests/test_just_sockets_no_ssl.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/tests/test_just_sockets_no_ssl.c 2012-01-18 10:19:15.000000000 +0000 @@ -1,4 +1,4 @@ -#include +#include #include #include #include "basic_event_loop.h" @@ -16,4 +16,3 @@ return 0; } - diff -Nru spice-0.10.0/server/tests/test_playback.c spice-0.10.1/server/tests/test_playback.c --- spice-0.10.0/server/tests/test_playback.c 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/server/tests/test_playback.c 2012-01-18 10:19:15.000000000 +0000 @@ -1,5 +1,5 @@ +#include #include -#include #include #include #include diff -Nru spice-0.10.0/spice.proto spice-0.10.1/spice.proto --- spice-0.10.0/spice.proto 2011-11-10 15:02:06.000000000 +0000 +++ spice-0.10.1/spice.proto 2012-01-18 10:19:15.000000000 +0000 @@ -133,6 +133,7 @@ uint8 message[message_len] @end @nomarshal; } notify; + Data list; /* the msg body is SpiceSubMessageList */ client: message { uint32 generation; @@ -1112,13 +1113,16 @@ Data data = 101; }; -channel UsbredirChannel : BaseChannel { +channel SpicevmcChannel : BaseChannel { server: Data data = 101; client: Data data = 101; }; +channel UsbredirChannel : SpicevmcChannel { +}; + protocol Spice { MainChannel main = 1; DisplayChannel display;