From 311b549b6f416ee8cbc5bc518b52f9a84d3e8b11 Mon Sep 17 00:00:00 2001 From: nattthebear Date: Mon, 25 May 2020 12:44:22 -0400 Subject: [PATCH 01/29] Add mednafen sobmodule --- .gitmodules | 3 +++ waterbox/nyma/mednafen | 1 + 2 files changed, 4 insertions(+) create mode 160000 waterbox/nyma/mednafen diff --git a/.gitmodules b/.gitmodules index b455dedccc..1ee8ea2124 100644 --- a/.gitmodules +++ b/.gitmodules @@ -22,3 +22,6 @@ [submodule "waterbox/musl"] path = waterbox/musl url = https://github.com/nattthebear/musl.git +[submodule "waterbox/nyma/mednafen"] + path = waterbox/nyma/mednafen + url = https://github.com/TASVideos/mednafen.git diff --git a/waterbox/nyma/mednafen b/waterbox/nyma/mednafen new file mode 160000 index 0000000000..740d63996f --- /dev/null +++ b/waterbox/nyma/mednafen @@ -0,0 +1 @@ +Subproject commit 740d63996fc7cebffd39ee253a29ee434965db21 From e892dcef8280ab2707588ce5266a455108bc680e Mon Sep 17 00:00:00 2001 From: nattthebear Date: Thu, 21 May 2020 19:08:13 -0400 Subject: [PATCH 02/29] milestone: vb and ngp compile --- waterbox/common.mak | 38 +- waterbox/libsnes/Makefile | 2 +- waterbox/ngp/Makefile | 2 +- waterbox/nyma/Interfaces.cpp | 88 +++ waterbox/nyma/common.mak | 43 ++ waterbox/nyma/common/config.h | 864 +++++++++++++++++++++++++ waterbox/nyma/common/minilzo/minilzo.h | 1 + waterbox/nyma/common/trio/trio.h | 1 + waterbox/nyma/common/trio/triodef.h | 1 + waterbox/nyma/common/trio/trionan.h | 1 + waterbox/nyma/common/trio/triop.h | 1 + waterbox/nyma/common/trio/triostr.h | 1 + waterbox/nyma/ngp.mak | 7 + waterbox/nyma/vb.mak | 7 + waterbox/pcfx/Makefile | 2 +- waterbox/sameboy/Makefile | 2 +- waterbox/snes9x | 2 +- waterbox/ss/Makefile | 2 +- waterbox/uzem/Makefile | 2 +- waterbox/vb/Makefile | 2 +- 20 files changed, 1044 insertions(+), 25 deletions(-) create mode 100644 waterbox/nyma/Interfaces.cpp create mode 100644 waterbox/nyma/common.mak create mode 100644 waterbox/nyma/common/config.h create mode 100644 waterbox/nyma/common/minilzo/minilzo.h create mode 100644 waterbox/nyma/common/trio/trio.h create mode 100644 waterbox/nyma/common/trio/triodef.h create mode 100644 waterbox/nyma/common/trio/trionan.h create mode 100644 waterbox/nyma/common/trio/triop.h create mode 100644 waterbox/nyma/common/trio/triostr.h create mode 100644 waterbox/nyma/ngp.mak create mode 100644 waterbox/nyma/vb.mak diff --git a/waterbox/common.mak b/waterbox/common.mak index 4bf52ff161..20185c123e 100644 --- a/waterbox/common.mak +++ b/waterbox/common.mak @@ -1,10 +1,13 @@ # common parts of all waterbox cores WATERBOX_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) -ROOT_DIR := $(shell dirname $(realpath $(lastword $(filter-out $(lastword $(MAKEFILE_LIST)), $(MAKEFILE_LIST))))) +ROOT_DIR := $(shell dirname $(realpath $(lastword $(filter-out $(lastword $(MAKEFILE_LIST)),$(MAKEFILE_LIST))))) OUTPUTDLL_DIR := $(realpath $(WATERBOX_DIR)/../output/dll) -OBJ_DIR := $(ROOT_DIR)/obj/release -DOBJ_DIR := $(ROOT_DIR)/obj/debug +ifeq ($(OUT_DIR),) +OUT_DIR := $(ROOT_DIR)/obj +endif +OBJ_DIR := $(OUT_DIR)/release +DOBJ_DIR := $(OUT_DIR)/debug EMULIBC_OBJS := $(WATERBOX_DIR)/emulibc/obj/release/emulibc.c.o EMULIBC_DOBJS := $(WATERBOX_DIR)/emulibc/obj/debug/emulibc.c.o SYSROOT := $(WATERBOX_DIR)/sysroot @@ -19,25 +22,26 @@ print-%: ; #LD_PLUGIN := $(shell gcc --print-file-name=liblto_plugin.so) CC := $(SYSROOT)/bin/musl-gcc -CCFLAGS := $(CCFLAGS) -mabi=ms -fvisibility=hidden -I$(WATERBOX_DIR)/emulibc -Wall -mcmodel=large \ - -mstack-protector-guard=global +COMMONFLAGS := -mabi=ms -fvisibility=hidden -I$(WATERBOX_DIR)/emulibc -Wall -mcmodel=large \ + -mstack-protector-guard=global -no-pie -fno-pic -fno-pie +CCFLAGS := $(CCFLAGS) $(COMMONFLAGS) LDFLAGS := $(LDFLAGS) -fuse-ld=gold -static -Wl,-Ttext,0x0000036f00000000 #-Wl,--plugin,$(LD_PLUGIN) CCFLAGS_DEBUG := -O0 -g CCFLAGS_RELEASE := -O3 -flto LDFLAGS_DEBUG := LDFLAGS_RELEASE := -CXXFLAGS := $(CXXFLAGS) -I$(SYSROOT)/include/c++/v1 -fno-use-cxa-atexit -CXXFLAGS_DEBUG := -CXXFLAGS_RELEASE := +CXXFLAGS := $(CXXFLAGS) $(COMMONFLAGS) -I$(SYSROOT)/include/c++/v1 -fno-use-cxa-atexit +CXXFLAGS_DEBUG := -O0 -g +CXXFLAGS_RELEASE := -O3 -flto EXTRA_LIBS := -L $(SYSROOT)/lib/linux -lclang_rt.builtins-x86_64 -ifneq ($(filter %.cpp, $(SRCS)), ) +ifneq ($(filter %.cpp,$(SRCS)),) EXTRA_LIBS := -lc++ -lc++abi -lunwind $(EXTRA_LIBS) endif -_OBJS := $(addsuffix .o, $(realpath $(SRCS))) -OBJS := $(patsubst $(ROOT_DIR)%, $(OBJ_DIR)%, $(_OBJS)) -DOBJS := $(patsubst $(ROOT_DIR)%, $(DOBJ_DIR)%, $(_OBJS)) +_OBJS := $(addsuffix .o,$(realpath $(SRCS))) +OBJS := $(patsubst $(ROOT_DIR)%,$(OBJ_DIR)%,$(_OBJS)) +DOBJS := $(patsubst $(ROOT_DIR)%,$(DOBJ_DIR)%,$(_OBJS)) $(OBJ_DIR)/%.c.o: %.c @echo cc $< @@ -46,7 +50,7 @@ $(OBJ_DIR)/%.c.o: %.c $(OBJ_DIR)/%.cpp.o: %.cpp @echo cxx $< @mkdir -p $(@D) - @$(CC) -c -o $@ $< $(CCFLAGS) $(CXXFLAGS) $(CCFLAGS_RELEASE) + @$(CC) -c -o $@ $< $(CXXFLAGS) $(CXXFLAGS_RELEASE) $(DOBJ_DIR)/%.c.o: %.c @echo cc $< @mkdir -p $(@D) @@ -54,7 +58,7 @@ $(DOBJ_DIR)/%.c.o: %.c $(DOBJ_DIR)/%.cpp.o: %.cpp @echo cxx $< @mkdir -p $(@D) - @$(CC) -c -o $@ $< $(CCFLAGS) $(CXXFLAGS) $(CCFLAGS_DEBUG) $(CXXFLAGS_DEBUG) + @$(CC) -c -o $@ $< $(CXXFLAGS) $(CXXFLAGS_DEBUG) ifndef NO_WBX_TARGETS @@ -97,8 +101,8 @@ endif .PHONY: clean clean-release clean-debug clean: - rm -rf $(ROOT_DIR)/obj + rm -rf $(OUT_DIR) clean-release: - rm -rf $(ROOT_DIR)/obj/release + rm -rf $(OUT_DIR)/release clean-debug: - rm -rf $(ROOT_DIR)/obj/debug + rm -rf $(OUT_DIR)/debug diff --git a/waterbox/libsnes/Makefile b/waterbox/libsnes/Makefile index e10850848b..43e4e3a2ea 100644 --- a/waterbox/libsnes/Makefile +++ b/waterbox/libsnes/Makefile @@ -1,7 +1,7 @@ NEED_LIBCO := 1 #-DPROFILE_PERFORMANCE -CCFLAGS := -DHOOKS -DBIZHAWK -DPROFILE_COMPATIBILITY -DGAMEBOY \ +CXXFLAGS := -DHOOKS -DBIZHAWK -DPROFILE_COMPATIBILITY -DGAMEBOY \ -D_GNU_SOURCE \ -Werror=int-to-pointer-cast \ -I../libco -I./bsnes \ diff --git a/waterbox/ngp/Makefile b/waterbox/ngp/Makefile index 5cc4a8b526..b3c4154807 100644 --- a/waterbox/ngp/Makefile +++ b/waterbox/ngp/Makefile @@ -1,4 +1,4 @@ -CCFLAGS:= -I. \ +CXXFLAGS:= -I. \ -Wall -Werror=int-to-pointer-cast \ -std=c++0x -fomit-frame-pointer -fno-exceptions -fno-rtti \ -DLSB_FIRST diff --git a/waterbox/nyma/Interfaces.cpp b/waterbox/nyma/Interfaces.cpp new file mode 100644 index 0000000000..21aaf82fbc --- /dev/null +++ b/waterbox/nyma/Interfaces.cpp @@ -0,0 +1,88 @@ +#include "mednafen/src/mednafen.h" +#include "mednafen/src/general.h" +#include "mednafen/src/state.h" +#include "mednafen/src/settings.h" +#include "mednafen/src/mempatcher.h" +#include "mednafen/src/mednafen-driver.h" + +namespace Mednafen +{ + MDFNGI *MDFNGameInfo = NULL; + + std::string MDFN_MakeFName(MakeFName_Type type, int id1, const char *cd1) + { + return ""; + } + + // mednafen-driver.h + void MDFN_indent(int indent) + {} + void MDFN_printf(const char *format, ...) noexcept + {} + void MDFND_OutputNotice(MDFN_NoticeType t, const char* s) noexcept + {} + void MDFND_OutputInfo(const char* s) noexcept + {} + void MDFN_Notify(MDFN_NoticeType t, const char* format, ...) noexcept + {} + void MDFND_MidSync(EmulateSpecStruct *espec, const unsigned flags) + {} + + bool MDFNSS_StateAction(StateMem *sm, const unsigned load, const bool data_only, const SFORMAT *sf, const char *sname, const bool optional) noexcept + { + abort(); + } + + uint64 MDFN_GetSettingUI(const char *name) + { + return 0; + } + int64 MDFN_GetSettingI(const char *name) + { + return 0; + } + double MDFN_GetSettingF(const char *name) + { + return 0; + } + bool MDFN_GetSettingB(const char *name) + { + return false; + } + std::string MDFN_GetSettingS(const char *name) + { + return ""; + } + + void MDFNMP_Init(uint32 ps, uint32 numpages) + {} + void MDFNMP_AddRAM(uint32 size, uint32 address, uint8 *RAM, bool use_in_search) // Deprecated + {} + void MDFNMP_RegSearchable(uint32 addr, uint32 size) + {} + void MDFNMP_Kill(void) + {} + + void MDFN_LoadGameCheats(Stream* override) + {} + void MDFNMP_InstallReadPatches(void) + {} + void MDFNMP_RemoveReadPatches(void) + {} + void MDFNMP_ApplyPeriodicCheats(void) + {} + + // file.h + bool MDFN_DumpToFile(const std::string& path, const void *data, const uint64 length, bool throw_on_error) + { + return true; + } + bool MDFN_DumpToFile(const std::string& path, const std::vector &pearpairs, bool throw_on_error) + { + return true; + } + std::unique_ptr MDFN_AmbigGZOpenHelper(const std::string& path, std::vector good_sizes) + { + return nullptr; + } +} diff --git a/waterbox/nyma/common.mak b/waterbox/nyma/common.mak new file mode 100644 index 0000000000..bb0c0f4c01 --- /dev/null +++ b/waterbox/nyma/common.mak @@ -0,0 +1,43 @@ +# common things across all mednafen cores + +MEDNAFLAGS := \ + -Imednafen/include -Icommon -Imednafen/src/trio \ + -DHAVE_CONFIG_H=1 -DMDFN_DISABLE_NO_OPT_ERRWARN=1 \ + -fwrapv \ + -fno-strict-aliasing \ + -fomit-frame-pointer \ + -fsigned-char \ + -fno-aggressive-loop-optimizations \ + -fno-fast-math \ + -fno-unsafe-math-optimizations \ + -fjump-tables \ + -mfunction-return=keep \ + -mindirect-branch=keep \ + -mno-indirect-branch-register \ + -Wall -Wshadow -Wempty-body -Wignored-qualifiers \ + -Wvla -Wvariadic-macros -Wdisabled-optimization -Werror=write-strings + +CCFLAGS := $(MEDNAFLAGS) -std=gnu99 +CXXFLAGS := $(MEDNAFLAGS) -std=gnu++11 + +cppdir = $(shell find mednafen/src/$(1) -type f -name '*.cpp') +cdir = $(shell find mednafen/src/$(1) -type f -name '*.c') + +MODULENAME := $(lastword $(filter-out $(lastword $(MAKEFILE_LIST)),$(MAKEFILE_LIST))) +MODULENAME := $(MODULENAME:.mak=) + +TARGET := $(MODULENAME).wbx +OUT_DIR := obj/$(MODULENAME) + +SRCS := \ + mednafen/src/error.cpp \ + mednafen/src/FileStream.cpp \ + mednafen/src/Stream.cpp \ + mednafen/src/Time.cpp \ + mednafen/src/git.cpp \ + $(call cppdir,string) \ + $(call cppdir,hash) \ + $(call cdir,trio) \ + $(call cdir,cputest) \ + $(filter-out %generate.cpp,$(call cppdir,sound)) \ + Interfaces.cpp diff --git a/waterbox/nyma/common/config.h b/waterbox/nyma/common/config.h new file mode 100644 index 0000000000..ac6ce75801 --- /dev/null +++ b/waterbox/nyma/common/config.h @@ -0,0 +1,864 @@ +/* manually modified */ + +/* Define if building universal (internal helper macro) */ +#undef AC_APPLE_UNIVERSAL_BUILD + +/* Define if we are compiling for PPC architectures. */ +#undef ARCH_POWERPC + +/* Define if we are compiling for 32-bit or 64-bit x86 architectures. */ +#define ARCH_X86 1 + +/* Define if we are compiling for 32-bit x86 architectures. */ +#undef ARCH_X86_32 + +/* Define if we are compiling for 64-bit x86 architectures. */ +#define ARCH_X86_64 1 + +/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP + systems. This function is required for `alloca.c' support on those systems. + */ +#undef CRAY_STACKSEG_END + +/* Define to 1 if using `alloca.c'. */ +#undef C_ALLOCA + +/* Define if we are compiling for DOS. */ +#undef DOS + +/* Define if we are compiling in libxxx mode. */ +#define ENABLE_LIBXXX_MODE 1 + +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +#undef ENABLE_NLS + +/* Define to 1 if you have the `accept' function. */ +#undef HAVE_ACCEPT + +/* Define to 1 if you have `alloca', as a function or macro. */ +#undef HAVE_ALLOCA + +/* Define to 1 if you have and it should be used (not on Ultrix). + */ +#undef HAVE_ALLOCA_H + +/* Define if we are compiling with ALSA support. */ +#undef HAVE_ALSA + +/* Define if altivec.h is present and usable. */ +#undef HAVE_ALTIVEC_H + +/* Define to 1 if you have the `argz_count' function. */ +#undef HAVE_ARGZ_COUNT + +/* Define to 1 if you have the header file. */ +#undef HAVE_ARGZ_H + +/* Define to 1 if you have the `argz_next' function. */ +#undef HAVE_ARGZ_NEXT + +/* Define to 1 if you have the `argz_stringify' function. */ +#undef HAVE_ARGZ_STRINGIFY + +/* Define to 1 if you have the `asprintf' function. */ +#undef HAVE_ASPRINTF + +/* Define to 1 if you have the `bind' function. */ +#undef HAVE_BIND + +/* Define to 1 if the compiler understands __builtin_expect. */ +#define HAVE_BUILTIN_EXPECT 1 + +/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the + CoreFoundation framework. */ +#undef HAVE_CFLOCALECOPYCURRENT + +/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in + the CoreFoundation framework. */ +#undef HAVE_CFPREFERENCESCOPYAPPVALUE + +/* Define to 1 if you have the `clock_gettime' function. */ +#undef HAVE_CLOCK_GETTIME + +/* Define to 1 if you have the `close' function. */ +#undef HAVE_CLOSE + +/* Define to 1 if you have the `connect' function. */ +#undef HAVE_CONNECT + +/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +#undef HAVE_DCGETTEXT + +/* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you + don't. */ +#undef HAVE_DECL_FEOF_UNLOCKED + +/* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if + you don't. */ +#undef HAVE_DECL_FGETS_UNLOCKED + +/* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you + don't. */ +#undef HAVE_DECL_GETC_UNLOCKED + +/* Define to 1 if you have the declaration of `_snprintf', and to 0 if you + don't. */ +#undef HAVE_DECL__SNPRINTF + +/* Define to 1 if you have the declaration of `_snwprintf', and to 0 if you + don't. */ +#undef HAVE_DECL__SNWPRINTF + +/* Define if we are compiling with DirectSound support. */ +#undef HAVE_DIRECTSOUND + +/* Define to 1 if you have the `dup2' function. */ +#undef HAVE_DUP2 + +/* Define if we are compiling and linking with external LZO. */ +#undef HAVE_EXTERNAL_LZO2 + +/* Define if we are compiling and linking with external mpcdec. */ +#undef HAVE_EXTERNAL_MPCDEC + +/* Define if we are compiling and linking with external tremor. */ +#undef HAVE_EXTERNAL_TREMOR + +/* Define if we are compiling and linking with external trio. */ +#undef HAVE_EXTERNAL_TRIO + +/* Define to 1 if you have the `fcntl' function. */ +#undef HAVE_FCNTL + +/* Define to 1 if you have the header file. */ +#undef HAVE_FCNTL_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_FENV_H + +/* Define to 1 if you have the `fopen64' function. */ +#undef HAVE_FOPEN64 + +/* Define to 1 if you have the `fork' function. */ +#undef HAVE_FORK + +/* Define to 1 if you have the `freeaddrinfo' function. */ +#undef HAVE_FREEADDRINFO + +/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ +#undef HAVE_FSEEKO + +/* Define to 1 if you have the `fseeko64' function. */ +#undef HAVE_FSEEKO64 + +/* Define to 1 if you have the `fstat64' function. */ +#undef HAVE_FSTAT64 + +/* Define to 1 if you have the `ftello' function. */ +#undef HAVE_FTELLO + +/* Define to 1 if you have the `ftello64' function. */ +#undef HAVE_FTELLO64 + +/* Define to 1 if you have the `ftruncate64' function. */ +#undef HAVE_FTRUNCATE64 + +/* Define to 1 if you have the `fwprintf' function. */ +#undef HAVE_FWPRINTF + +/* Define to 1 if you have the `gai_strerror' function. */ +#undef HAVE_GAI_STRERROR + +/* Define to 1 if you have the `getaddrinfo' function. */ +#undef HAVE_GETADDRINFO + +/* Define to 1 if you have the `getcwd' function. */ +#undef HAVE_GETCWD + +/* Define to 1 if you have the `getegid' function. */ +#undef HAVE_GETEGID + +/* Define to 1 if you have the `getenv' function. */ +#undef HAVE_GETENV + +/* Define to 1 if you have the `geteuid' function. */ +#undef HAVE_GETEUID + +/* Define to 1 if you have the `getgid' function. */ +#undef HAVE_GETGID + +/* Define to 1 if you have the `gethostbyaddr' function. */ +#undef HAVE_GETHOSTBYADDR + +/* Define to 1 if you have the `gethostbyname' function. */ +#undef HAVE_GETHOSTBYNAME + +/* Define to 1 if you have the `getpagesize' function. */ +#undef HAVE_GETPAGESIZE + +/* Define to 1 if you have the `getpwuid' function. */ +#undef HAVE_GETPWUID + +/* Define to 1 if you have the `getsockopt' function. */ +#undef HAVE_GETSOCKOPT + +/* Define if the GNU gettext() function is already present or preinstalled. */ +#undef HAVE_GETTEXT + +/* Define to 1 if you have the `gettimeofday' function. */ +#undef HAVE_GETTIMEOFDAY + +/* Define to 1 if you have the `getuid' function. */ +#undef HAVE_GETUID + +/* Define to 1 if you have the `gmtime_r' function. */ +#undef HAVE_GMTIME_R + +/* Define if you have the iconv() function and it works. */ +#undef HAVE_ICONV + +/* Define if GNU-style AVX inline assembly is supported. */ +#undef HAVE_INLINEASM_AVX + +/* Define if you have the 'intmax_t' type in or . */ +#define HAVE_INTMAX_T 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define if exists, doesn't clash with , and + declares uintmax_t. */ +#define HAVE_INTTYPES_H_WITH_UINTMAX 1 + +/* Define if we are compiling with JACK support. */ +#undef HAVE_JACK + +/* Define if you have and nl_langinfo(CODESET). */ +#undef HAVE_LANGINFO_CODESET + +/* Define if your file defines LC_MESSAGES. */ +#undef HAVE_LC_MESSAGES + +/* Define to 1 if you have the `asound' library (-lasound). */ +#undef HAVE_LIBASOUND + +/* Define to 1 if you have the `mpcdec' library (-lmpcdec). */ +#undef HAVE_LIBMPCDEC + +/* Define if we are compiling with libsndfile support. */ +#undef HAVE_LIBSNDFILE + +/* Define to 1 if you have the `trio' library (-ltrio). */ +#undef HAVE_LIBTRIO + +/* Define to 1 if you have the `vorbisidec' library (-lvorbisidec). */ +#undef HAVE_LIBVORBISIDEC + +/* Define to 1 if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define if we are compiling with Linux joystick support. */ +#undef HAVE_LINUX_JOYSTICK + +/* Define to 1 if you have the `listen' function. */ +#undef HAVE_LISTEN + +/* Define to 1 if you have the `localtime_r' function. */ +#undef HAVE_LOCALTIME_R + +/* Define to 1 if the system has the type `long long int'. */ +#define HAVE_LONG_LONG_INT 1 + +/* Define to 1 if you have the `madvise' function. */ +#undef HAVE_MADVISE + +/* Define to 1 if you have the `mbrtowc' function. */ +#undef HAVE_MBRTOWC + +/* Define to 1 if you have the `memcmp' function. */ +#define HAVE_MEMCMP 1 + +/* Define to 1 if you have the `memcpy' function. */ +#define HAVE_MEMCPY 1 + +/* Define to 1 if you have the `memmove' function. */ +#define HAVE_MEMMOVE 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `mempcpy' function. */ +#define HAVE_MEMPCPY 1 + +/* Define to 1 if you have the `memset' function. */ +#define HAVE_MEMSET 1 + +/* Define to 1 if you have the `mkdir' function. */ +#undef HAVE_MKDIR + +/* Define to 1 if you have a working `mmap' system call. */ +#undef HAVE_MMAP + +/* Define to 1 if you have the `munmap' function. */ +#undef HAVE_MUNMAP + +/* Define to 1 if you have the `nanosleep' function. */ +#undef HAVE_NANOSLEEP + +/* Define to 1 if you have the `nearbyint' function. */ +#undef HAVE_NEARBYINT + +/* Define to 1 if you have the `nearbyintf' function. */ +#undef HAVE_NEARBYINTF + +/* Define to 1 if you have the `newlocale' function. */ +#undef HAVE_NEWLOCALE + +/* Define if we are compiling with OpenBSD audio support. */ +#undef HAVE_OPENBSD_AUDIO + +/* Define if we are compiling with OSS support. */ +#undef HAVE_OSSDSP + +/* Define to 1 if you have the `pipe' function. */ +#undef HAVE_PIPE + +/* Define to 1 if you have the `poll' function. */ +#undef HAVE_POLL + +/* Define if your printf() function supports format strings with positions. */ +#define HAVE_POSIX_PRINTF 1 + +/* Define if we are compiling with POSIX sockets support. */ +#undef HAVE_POSIX_SOCKETS + +/* Define to 1 if you have the `pthread_condattr_setclock' function. */ +#undef HAVE_PTHREAD_CONDATTR_SETCLOCK + +/* Define to 1 if you have the `pthread_cond_timedwait_relative_np' function. + */ +#undef HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE_NP + +/* Define to 1 if you have the `pthread_create' function. */ +#undef HAVE_PTHREAD_CREATE + +/* Define to 1 if you have the `pthread_getaffinity_np' function. */ +#undef HAVE_PTHREAD_GETAFFINITY_NP + +/* Define to 1 if you have the header file. */ +#undef HAVE_PTHREAD_H + +/* Define if the defines PTHREAD_MUTEX_RECURSIVE. */ +#undef HAVE_PTHREAD_MUTEX_RECURSIVE + +/* Define to 1 if you have the header file. */ +#undef HAVE_PTHREAD_NP_H + +/* Define if the POSIX multithreading library has read/write locks. */ +#undef HAVE_PTHREAD_RWLOCK + +/* Define to 1 if you have the `pthread_setaffinity_np' function. */ +#undef HAVE_PTHREAD_SETAFFINITY_NP + +/* Define to 1 if you have the `pthread_setname_np' function. */ +#undef HAVE_PTHREAD_SETNAME_NP + +/* Define to 1 if you have the `pthread_set_name_np' function. */ +#undef HAVE_PTHREAD_SET_NAME_NP + +/* Define to 1 if you have the `putenv' function. */ +#undef HAVE_PUTENV + +/* Define to 1 if you have the `recv' function. */ +#undef HAVE_RECV + +/* Define to 1 if you have the `rint' function. */ +#undef HAVE_RINT + +/* Define to 1 if you have the `rintf' function. */ +#undef HAVE_RINTF + +/* Define to 1 if you have the `round' function. */ +#undef HAVE_ROUND + +/* Define to 1 if you have the header file. */ +#undef HAVE_SCHED_H + +/* Define if we are compiling with SDL. */ +#undef HAVE_SDL + +/* Define to 1 if you have the `select' function. */ +#undef HAVE_SELECT + +/* Define to 1 if you have the `sem_clockwait' function. */ +#undef HAVE_SEM_CLOCKWAIT + +/* Define to 1 if you have the `sem_clockwait_np' function. */ +#undef HAVE_SEM_CLOCKWAIT_NP + +/* Define to 1 if you have the `sem_init' function. */ +#undef HAVE_SEM_INIT + +/* Define to 1 if you have the `sem_timedwait' function. */ +#undef HAVE_SEM_TIMEDWAIT + +/* Define to 1 if you have the `sem_timedwait_monotonic' function. */ +#undef HAVE_SEM_TIMEDWAIT_MONOTONIC + +/* Define to 1 if you have the `send' function. */ +#undef HAVE_SEND + +/* Define to 1 if you have the `setenv' function. */ +#undef HAVE_SETENV + +/* Define to 1 if you have the `setlocale' function. */ +#undef HAVE_SETLOCALE + +/* Define to 1 if you have the `setsockopt' function. */ +#undef HAVE_SETSOCKOPT + +/* Define to 1 if you have the `sigaction' function. */ +#undef HAVE_SIGACTION + +/* Define to 1 if you have the `signal' function. */ +#undef HAVE_SIGNAL + +/* Define to 1 if you have the `snprintf' function. */ +#undef HAVE_SNPRINTF + +/* Define to 1 if you have the `socket' function. */ +#undef HAVE_SOCKET + +/* Define to 1 if you have the header file. */ +#define HAVE_STDDEF_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define if exists, doesn't clash with , and declares + uintmax_t. */ +#define HAVE_STDINT_H_WITH_UINTMAX 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `stpcpy' function. */ +#define HAVE_STPCPY 1 + +/* Define to 1 if you have the `strcasecmp' function. */ +#define HAVE_STRCASECMP 1 + +/* Define to 1 if you have the `strdup' function. */ +#define HAVE_STRDUP 1 + +/* Define to 1 if you have the `strerror' function. */ +#undef HAVE_STRERROR + +/* Define to 1 if you have the `strerror_r' function. */ +#undef HAVE_STRERROR_R + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `strnlen' function. */ +#define HAVE_STRNLEN 1 + +/* Define to 1 if you have the `strtoul' function. */ +#define HAVE_STRTOUL 1 + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_PARAM_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the `tsearch' function. */ +#undef HAVE_TSEARCH + +/* Define if you have the 'uintmax_t' type in or . */ +#define HAVE_UINTMAX_T 1 + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if the system has the type `unsigned long long int'. */ +#define HAVE_UNSIGNED_LONG_LONG_INT 1 + +/* Define to 1 if you have the `uselocale' function. */ +#undef HAVE_USELOCALE + +/* Define to 1 if you have the `usleep' function. */ +#undef HAVE_USLEEP + +/* Define to 1 or 0, depending whether the compiler supports simple visibility + declarations. */ +#undef HAVE_VISIBILITY + +/* Define if we are compiling with WASAPI support. */ +#undef HAVE_WASAPI + +/* Define if you have the 'wchar_t' type. */ +#define HAVE_WCHAR_T 1 + +/* Define to 1 if you have the `wcrtomb' function. */ +#define HAVE_WCRTOMB 1 + +/* Define to 1 if you have the `wcslen' function. */ +#define HAVE_WCSLEN 1 + +/* Define to 1 if you have the `wcsnlen' function. */ +#define HAVE_WCSNLEN 1 + +/* Define if you have the 'wint_t' type. */ +#undef HAVE_WINT_T + +/* Define to 1 if O_NOATIME works. */ +#undef HAVE_WORKING_O_NOATIME + +/* Define to 1 if O_NOFOLLOW works. */ +#undef HAVE_WORKING_O_NOFOLLOW + +/* Define to 1 if you have the `_mkdir' function. */ +#undef HAVE__MKDIR + +/* Define to 1 if you have the `__fsetlocking' function. */ +#undef HAVE___FSETLOCKING + +/* Define to 1 if you have the `__mingw_get_crt_info' function. */ +#undef HAVE___MINGW_GET_CRT_INFO + +/* Define as const if the declaration of iconv() needs const. */ +#define ICONV_CONST + +/* Define if integer division by zero raises signal SIGFPE. */ +#undef INTDIV0_RAISES_SIGFPE + +/* Define on little-endian platforms. */ +#define LSB_FIRST 1 + +/* Define if we are compiling with expensive Mednafen developer features + enabled. */ +#undef MDFN_ENABLE_DEV_BUILD + +/* Mednafen version definition. */ +#define MEDNAFEN_VERSION "1.24.3" + +/* Mednafen version numeric. */ +#define MEDNAFEN_VERSION_NUMERIC 0x00102403 + +/* Define if config.h is present */ +#undef MINILZO_HAVE_CONFIG_H + +/* Define if mkdir takes only one argument. */ +#undef MKDIR_TAKES_ONE_ARG + +/* Define to use fixed-point MPC decoder. */ +#undef MPC_FIXED_POINT + +/* Define on big-endian platforms. */ +#undef MSB_FIRST + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define if exists and defines unusable PRI* macros. */ +#undef PRI_MACROS_BROKEN + +/* Defines the filesystem path-separator type. */ +#define PSS_STYLE 1 + +/* Define to CPU set type if we are compiling with pthreads affinity setting + support. */ +#undef PTHREAD_AFFINITY_NP + +/* Define if the pthread_in_use() detection is hard. */ +#undef PTHREAD_IN_USE_DETECTION_HARD + +/* The size of `char', as computed by sizeof. */ +#undef SIZEOF_CHAR + +/* The size of `int', as computed by sizeof. */ +#undef SIZEOF_INT + +/* The size of `long', as computed by sizeof. */ +#undef SIZEOF_LONG + +/* The size of `long long', as computed by sizeof. */ +#undef SIZEOF_LONG_LONG + +/* The size of `off_t', as computed by sizeof. */ +#undef SIZEOF_OFF_T + +/* The size of `ptrdiff_t', as computed by sizeof. */ +#undef SIZEOF_PTRDIFF_T + +/* The size of `short', as computed by sizeof. */ +#undef SIZEOF_SHORT + +/* The size of `size_t', as computed by sizeof. */ +#undef SIZEOF_SIZE_T + +/* The size of `void *', as computed by sizeof. */ +#undef SIZEOF_VOID_P + +/* The size of `__int64', as computed by sizeof. */ +#undef SIZEOF___INT64 + +/* Define as the maximum value of type 'size_t', if the system doesn't define + it. */ +#ifndef SIZE_MAX +# undef SIZE_MAX +#endif + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at runtime. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +#undef STACK_DIRECTION + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define if the POSIX multithreading library can be used. */ +#undef USE_POSIX_THREADS + +/* Define if references to the POSIX multithreading library should be made + weak. */ +#undef USE_POSIX_THREADS_WEAK + +/* Define if the GNU Pth multithreading library can be used. */ +#undef USE_PTH_THREADS + +/* Define if references to the GNU Pth multithreading library should be made + weak. */ +#undef USE_PTH_THREADS_WEAK + +/* Define if the old Solaris multithreading library can be used. */ +#undef USE_SOLARIS_THREADS + +/* Define if references to the old Solaris multithreading library should be + made weak. */ +#undef USE_SOLARIS_THREADS_WEAK + +/* Enable extensions on AIX 3, Interix. */ +#ifndef _ALL_SOURCE +# undef _ALL_SOURCE +#endif +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE +#endif +/* Enable threading extensions on Solaris. */ +#ifndef _POSIX_PTHREAD_SEMANTICS +# undef _POSIX_PTHREAD_SEMANTICS +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# undef _TANDEM_SOURCE +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# undef __EXTENSIONS__ +#endif + + +/* Define if the Win32 multithreading API can be used. */ +#undef USE_WIN32_THREADS + +/* Version number of package */ +#undef VERSION + +/* Define if we are compiling with Apple II+ emulation. */ +#undef WANT_APPLE2_EMU + +/* Define if we are compiling with debugger. */ +#undef WANT_DEBUGGER + +/* Define if we are compiling with with fancy CPU-intensive software video + scalers. */ +#undef WANT_FANCY_SCALERS + +/* Define if we are compiling with GBA emulation. */ +#undef WANT_GBA_EMU + +/* Define if we are compiling with GB emulation. */ +#undef WANT_GB_EMU + +/* Define if we are compiling with internal CJK fonts. */ +#undef WANT_INTERNAL_CJK + +/* Define if we are compiling with Lynx emulation. */ +#define WANT_LYNX_EMU 1 + +/* Define if we are compiling with Sega Genesis/MegaDrive emulation. */ +#undef WANT_MD_EMU + +/* Define if we are compiling with NES emulation. */ +#undef WANT_NES_EMU + +/* Define if we are compiling with NGP emulation. */ +#define WANT_NGP_EMU 1 + +/* Define if we are compiling with PCE emulation. */ +#define WANT_PCE_EMU 1 + +/* Define if we are compiling with separate fast PCE emulation. */ +#undef WANT_PCE_FAST_EMU + +/* Define if we are compiling with PC-FX emulation. */ +#define WANT_PCFX_EMU 1 + +/* Define if we are compiling with PlayStation emulation. */ +#define WANT_PSX_EMU 1 + +/* Define if we are compiling with SMS+GG emulation. */ +#define WANT_SMS_EMU 1 + +/* Define if we are compiling with SNES emulation. */ +#undef WANT_SNES_EMU + +/* Define if we are compiling with experimental fast SNES emulation. */ +#undef WANT_SNES_FAUST_EMU + +/* Define if we are compiling with SSF playback support. */ +#undef WANT_SSFPLAY_EMU + +/* Define if we are compiling with Sega Saturn emulation. */ +#define WANT_SS_EMU 1 + +/* Define if we are compiling with Virtual Boy emulation. */ +#define WANT_VB_EMU 1 + +/* Define if we are compiling with WonderSwan emulation. */ +#define WANT_WSWAN_EMU 1 + +/* Define if we are compiling for Win32. */ +#undef WIN32 + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +# undef WORDS_BIGENDIAN +# endif +#endif + +/* Enable large inode numbers on Mac OS X 10.5. */ +#ifndef _DARWIN_USE_64_BIT_INODE +# define _DARWIN_USE_64_BIT_INODE 1 +#endif + +/* Number of bits in a file offset, on hosts where this is settable. */ +#undef _FILE_OFFSET_BITS + +/* Define for largefile support through extra functions. */ +#undef _LARGEFILE64_SOURCE + +/* Define for fseeko and ftello on some hosts. */ +#undef _LARGEFILE_SOURCE + +/* Define for large files, on AIX-style hosts. */ +#undef _LARGE_FILES + +/* Define to 1 if on MINIX. */ +#undef _MINIX + +/* Define to 2 if the system does not provide POSIX.1 features except with + this defined. */ +#undef _POSIX_1_SOURCE + +/* Define to 1 if you need to in order for `stat' and other things to work. */ +#undef _POSIX_SOURCE + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +#undef inline +#endif + +/* Define as the type of the result of subtracting two pointers, if the system + doesn't define it. */ +#undef ptrdiff_t + +/* Define to `unsigned int' if does not define. */ +#undef size_t + +/* Define to unsigned long or unsigned long long if and + don't define. */ +#undef uintmax_t + + +#define __libc_lock_t gl_lock_t +#define __libc_lock_define gl_lock_define +#define __libc_lock_define_initialized gl_lock_define_initialized +#define __libc_lock_init gl_lock_init +#define __libc_lock_lock gl_lock_lock +#define __libc_lock_unlock gl_lock_unlock +#define __libc_lock_recursive_t gl_recursive_lock_t +#define __libc_lock_define_recursive gl_recursive_lock_define +#define __libc_lock_define_initialized_recursive gl_recursive_lock_define_initialized +#define __libc_lock_init_recursive gl_recursive_lock_init +#define __libc_lock_lock_recursive gl_recursive_lock_lock +#define __libc_lock_unlock_recursive gl_recursive_lock_unlock +#define glthread_in_use libintl_thread_in_use +#define glthread_lock_init_func libintl_lock_init_func +#define glthread_lock_lock_func libintl_lock_lock_func +#define glthread_lock_unlock_func libintl_lock_unlock_func +#define glthread_lock_destroy_func libintl_lock_destroy_func +#define glthread_rwlock_init_multithreaded libintl_rwlock_init_multithreaded +#define glthread_rwlock_init_func libintl_rwlock_init_func +#define glthread_rwlock_rdlock_multithreaded libintl_rwlock_rdlock_multithreaded +#define glthread_rwlock_rdlock_func libintl_rwlock_rdlock_func +#define glthread_rwlock_wrlock_multithreaded libintl_rwlock_wrlock_multithreaded +#define glthread_rwlock_wrlock_func libintl_rwlock_wrlock_func +#define glthread_rwlock_unlock_multithreaded libintl_rwlock_unlock_multithreaded +#define glthread_rwlock_unlock_func libintl_rwlock_unlock_func +#define glthread_rwlock_destroy_multithreaded libintl_rwlock_destroy_multithreaded +#define glthread_rwlock_destroy_func libintl_rwlock_destroy_func +#define glthread_recursive_lock_init_multithreaded libintl_recursive_lock_init_multithreaded +#define glthread_recursive_lock_init_func libintl_recursive_lock_init_func +#define glthread_recursive_lock_lock_multithreaded libintl_recursive_lock_lock_multithreaded +#define glthread_recursive_lock_lock_func libintl_recursive_lock_lock_func +#define glthread_recursive_lock_unlock_multithreaded libintl_recursive_lock_unlock_multithreaded +#define glthread_recursive_lock_unlock_func libintl_recursive_lock_unlock_func +#define glthread_recursive_lock_destroy_multithreaded libintl_recursive_lock_destroy_multithreaded +#define glthread_recursive_lock_destroy_func libintl_recursive_lock_destroy_func +#define glthread_once_func libintl_once_func +#define glthread_once_singlethreaded libintl_once_singlethreaded +#define glthread_once_multithreaded libintl_once_multithreaded + diff --git a/waterbox/nyma/common/minilzo/minilzo.h b/waterbox/nyma/common/minilzo/minilzo.h new file mode 100644 index 0000000000..227805e00f --- /dev/null +++ b/waterbox/nyma/common/minilzo/minilzo.h @@ -0,0 +1 @@ +#include diff --git a/waterbox/nyma/common/trio/trio.h b/waterbox/nyma/common/trio/trio.h new file mode 100644 index 0000000000..d37b63597f --- /dev/null +++ b/waterbox/nyma/common/trio/trio.h @@ -0,0 +1 @@ +#include diff --git a/waterbox/nyma/common/trio/triodef.h b/waterbox/nyma/common/trio/triodef.h new file mode 100644 index 0000000000..ddfd6e0220 --- /dev/null +++ b/waterbox/nyma/common/trio/triodef.h @@ -0,0 +1 @@ +#include diff --git a/waterbox/nyma/common/trio/trionan.h b/waterbox/nyma/common/trio/trionan.h new file mode 100644 index 0000000000..ef10af79bb --- /dev/null +++ b/waterbox/nyma/common/trio/trionan.h @@ -0,0 +1 @@ +#include diff --git a/waterbox/nyma/common/trio/triop.h b/waterbox/nyma/common/trio/triop.h new file mode 100644 index 0000000000..bceace773b --- /dev/null +++ b/waterbox/nyma/common/trio/triop.h @@ -0,0 +1 @@ +#include diff --git a/waterbox/nyma/common/trio/triostr.h b/waterbox/nyma/common/trio/triostr.h new file mode 100644 index 0000000000..8c10589ed8 --- /dev/null +++ b/waterbox/nyma/common/trio/triostr.h @@ -0,0 +1 @@ +#include diff --git a/waterbox/nyma/ngp.mak b/waterbox/nyma/ngp.mak new file mode 100644 index 0000000000..8f782fc593 --- /dev/null +++ b/waterbox/nyma/ngp.mak @@ -0,0 +1,7 @@ +include common.mak + +SRCS += \ + $(call cppdir,ngp) \ + $(call cppdir,hw_cpu/z80-fuse) + +include ../common.mak diff --git a/waterbox/nyma/vb.mak b/waterbox/nyma/vb.mak new file mode 100644 index 0000000000..36807a96c3 --- /dev/null +++ b/waterbox/nyma/vb.mak @@ -0,0 +1,7 @@ +include common.mak + +SRCS += \ + $(filter-out %debug.cpp,$(call cppdir,vb)) \ + $(call cppdir,hw_cpu/v810) + +include ../common.mak diff --git a/waterbox/pcfx/Makefile b/waterbox/pcfx/Makefile index 29ca2afd7f..7e7b6bd8fa 100644 --- a/waterbox/pcfx/Makefile +++ b/waterbox/pcfx/Makefile @@ -1,4 +1,4 @@ -CCFLAGS:= \ +CXXFLAGS := \ -Wall -Werror=int-to-pointer-cast \ -std=c++0x -fomit-frame-pointer -fno-exceptions -fno-rtti \ -DLSB_FIRST diff --git a/waterbox/sameboy/Makefile b/waterbox/sameboy/Makefile index 0f5fed8b06..0ed75959c5 100644 --- a/waterbox/sameboy/Makefile +++ b/waterbox/sameboy/Makefile @@ -6,7 +6,7 @@ CCFLAGS := $(FLAGS) \ -std=gnu99 \ -DLSB_FIRST -D_GNU_SOURCE -DGB_INTERNAL -CPPFLAGS := $(FLAGS) -DSPC_NO_COPY_STATE_FUNCS -std=c++0x -D_GNU_SOURCE -DGB_INTERNAL +CXXFLAGS := $(FLAGS) -DSPC_NO_COPY_STATE_FUNCS -std=c++0x -D_GNU_SOURCE -DGB_INTERNAL TARGET := sameboy.wbx diff --git a/waterbox/snes9x b/waterbox/snes9x index a261d2a22b..410cf7bafe 160000 --- a/waterbox/snes9x +++ b/waterbox/snes9x @@ -1 +1 @@ -Subproject commit a261d2a22b2fefb4b7eab633a2d5fd7d691ce890 +Subproject commit 410cf7bafec3895d88c085115d22d6c13e754033 diff --git a/waterbox/ss/Makefile b/waterbox/ss/Makefile index bd5961ce47..47a8d0d8ba 100644 --- a/waterbox/ss/Makefile +++ b/waterbox/ss/Makefile @@ -1,4 +1,4 @@ -CCFLAGS:= \ +CXXFLAGS := \ -Wall -Werror=int-to-pointer-cast \ -std=c++0x -fomit-frame-pointer -fno-exceptions -fno-rtti \ -DLSB_FIRST diff --git a/waterbox/uzem/Makefile b/waterbox/uzem/Makefile index 38228496a2..0869eeeec6 100644 --- a/waterbox/uzem/Makefile +++ b/waterbox/uzem/Makefile @@ -1,4 +1,4 @@ -CCFLAGS := \ +CXXFLAGS := \ -Wall -Werror=int-to-pointer-cast \ -Wno-reorder \ -std=c++0x -fomit-frame-pointer \ diff --git a/waterbox/vb/Makefile b/waterbox/vb/Makefile index 372c0172d6..8abcd0561f 100644 --- a/waterbox/vb/Makefile +++ b/waterbox/vb/Makefile @@ -1,4 +1,4 @@ -CCFLAGS:= -I. \ +CXXFLAGS := -I. \ -Wall -Werror=int-to-pointer-cast \ -std=c++0x -fomit-frame-pointer -fno-exceptions -fno-rtti \ -DLSB_FIRST From fa139cbcf8a9afacdcd56be2468dd9a0ff6f0b76 Mon Sep 17 00:00:00 2001 From: nattthebear Date: Thu, 21 May 2020 19:24:50 -0400 Subject: [PATCH 03/29] lynx and wonderswan compile At least one of these is in need of upstream updates, so maybe we waterbox them, maybe we don't --- waterbox/nyma/Interfaces.cpp | 13 +++++++++++++ waterbox/nyma/common/zlib.h | 4 ++++ waterbox/nyma/lynx.mak | 6 ++++++ waterbox/nyma/wswan.mak | 6 ++++++ 4 files changed, 29 insertions(+) create mode 100644 waterbox/nyma/common/zlib.h create mode 100644 waterbox/nyma/lynx.mak create mode 100644 waterbox/nyma/wswan.mak diff --git a/waterbox/nyma/Interfaces.cpp b/waterbox/nyma/Interfaces.cpp index 21aaf82fbc..cccbd49b14 100644 --- a/waterbox/nyma/Interfaces.cpp +++ b/waterbox/nyma/Interfaces.cpp @@ -4,6 +4,7 @@ #include "mednafen/src/settings.h" #include "mednafen/src/mempatcher.h" #include "mednafen/src/mednafen-driver.h" +#include "mednafen/src/player.h" namespace Mednafen { @@ -85,4 +86,16 @@ namespace Mednafen { return nullptr; } + + // player.h + void Player_Init(int tsongs, const std::string &album, const std::string &artist, const std::string ©right, const std::vector &snames, bool override_gi) + {} + void Player_Draw(MDFN_Surface *surface, MDFN_Rect *dr, int CurrentSong, int16 *samples, int32 sampcount) + {} +} + +// zlib.h +uint32_t crc32(uint32_t crc, unsigned const char *buf, size_t len) +{ + return 0; } diff --git a/waterbox/nyma/common/zlib.h b/waterbox/nyma/common/zlib.h new file mode 100644 index 0000000000..3cdaf2bd48 --- /dev/null +++ b/waterbox/nyma/common/zlib.h @@ -0,0 +1,4 @@ +#pragma once + +// TODO: See how much zlib anything actually needs +uint32_t crc32(uint32_t crc, unsigned const char *buf, size_t len); diff --git a/waterbox/nyma/lynx.mak b/waterbox/nyma/lynx.mak new file mode 100644 index 0000000000..c3e93935c9 --- /dev/null +++ b/waterbox/nyma/lynx.mak @@ -0,0 +1,6 @@ +include common.mak + +SRCS += \ + $(call cppdir,lynx) + +include ../common.mak diff --git a/waterbox/nyma/wswan.mak b/waterbox/nyma/wswan.mak new file mode 100644 index 0000000000..cf8f10e93d --- /dev/null +++ b/waterbox/nyma/wswan.mak @@ -0,0 +1,6 @@ +include common.mak + +SRCS += \ + $(filter-out %debug.cpp,$(call cppdir,wswan)) + +include ../common.mak From 9fe80952ffdd2dc3a5005f52f78361f17448ff06 Mon Sep 17 00:00:00 2001 From: nattthebear Date: Thu, 21 May 2020 20:05:17 -0400 Subject: [PATCH 04/29] zlib blah blah --- waterbox/nyma/Interfaces.cpp | 6 - waterbox/nyma/build-and-install-zlib.sh | 5 + waterbox/nyma/common/zlib.h | 4 - waterbox/nyma/zlib/ChangeLog | 1515 +++++++++++++++ waterbox/nyma/zlib/FAQ | 368 ++++ waterbox/nyma/zlib/Makefile.in | 410 ++++ waterbox/nyma/zlib/README | 115 ++ waterbox/nyma/zlib/adler32.c | 186 ++ waterbox/nyma/zlib/compress.c | 86 + waterbox/nyma/zlib/configure | 921 +++++++++ waterbox/nyma/zlib/configure-for-waterbox | 6 + waterbox/nyma/zlib/crc32.c | 442 +++++ waterbox/nyma/zlib/crc32.h | 441 +++++ waterbox/nyma/zlib/deflate.c | 2163 +++++++++++++++++++++ waterbox/nyma/zlib/deflate.h | 349 ++++ waterbox/nyma/zlib/gzclose.c | 25 + waterbox/nyma/zlib/gzguts.h | 218 +++ waterbox/nyma/zlib/gzlib.c | 637 ++++++ waterbox/nyma/zlib/gzread.c | 654 +++++++ waterbox/nyma/zlib/gzwrite.c | 665 +++++++ waterbox/nyma/zlib/infback.c | 640 ++++++ waterbox/nyma/zlib/inffast.c | 323 +++ waterbox/nyma/zlib/inffast.h | 11 + waterbox/nyma/zlib/inffixed.h | 94 + waterbox/nyma/zlib/inflate.c | 1561 +++++++++++++++ waterbox/nyma/zlib/inflate.h | 125 ++ waterbox/nyma/zlib/inftrees.c | 304 +++ waterbox/nyma/zlib/inftrees.h | 62 + waterbox/nyma/zlib/install-for-waterbox | 8 + waterbox/nyma/zlib/treebuild.xml | 116 ++ waterbox/nyma/zlib/trees.c | 1203 ++++++++++++ waterbox/nyma/zlib/trees.h | 128 ++ waterbox/nyma/zlib/uncompr.c | 93 + waterbox/nyma/zlib/zconf.h | 534 +++++ waterbox/nyma/zlib/zconf.h.cmakein | 536 +++++ waterbox/nyma/zlib/zconf.h.in | 534 +++++ waterbox/nyma/zlib/zlib.h | 1912 ++++++++++++++++++ waterbox/nyma/zlib/zlib.map | 94 + waterbox/nyma/zlib/zlib.pc | 13 + waterbox/nyma/zlib/zlib.pc.cmakein | 13 + waterbox/nyma/zlib/zlib.pc.in | 13 + waterbox/nyma/zlib/zutil.c | 325 ++++ waterbox/nyma/zlib/zutil.h | 271 +++ 43 files changed, 18119 insertions(+), 10 deletions(-) create mode 100644 waterbox/nyma/build-and-install-zlib.sh delete mode 100644 waterbox/nyma/common/zlib.h create mode 100644 waterbox/nyma/zlib/ChangeLog create mode 100644 waterbox/nyma/zlib/FAQ create mode 100644 waterbox/nyma/zlib/Makefile.in create mode 100644 waterbox/nyma/zlib/README create mode 100644 waterbox/nyma/zlib/adler32.c create mode 100644 waterbox/nyma/zlib/compress.c create mode 100644 waterbox/nyma/zlib/configure create mode 100644 waterbox/nyma/zlib/configure-for-waterbox create mode 100644 waterbox/nyma/zlib/crc32.c create mode 100644 waterbox/nyma/zlib/crc32.h create mode 100644 waterbox/nyma/zlib/deflate.c create mode 100644 waterbox/nyma/zlib/deflate.h create mode 100644 waterbox/nyma/zlib/gzclose.c create mode 100644 waterbox/nyma/zlib/gzguts.h create mode 100644 waterbox/nyma/zlib/gzlib.c create mode 100644 waterbox/nyma/zlib/gzread.c create mode 100644 waterbox/nyma/zlib/gzwrite.c create mode 100644 waterbox/nyma/zlib/infback.c create mode 100644 waterbox/nyma/zlib/inffast.c create mode 100644 waterbox/nyma/zlib/inffast.h create mode 100644 waterbox/nyma/zlib/inffixed.h create mode 100644 waterbox/nyma/zlib/inflate.c create mode 100644 waterbox/nyma/zlib/inflate.h create mode 100644 waterbox/nyma/zlib/inftrees.c create mode 100644 waterbox/nyma/zlib/inftrees.h create mode 100644 waterbox/nyma/zlib/install-for-waterbox create mode 100644 waterbox/nyma/zlib/treebuild.xml create mode 100644 waterbox/nyma/zlib/trees.c create mode 100644 waterbox/nyma/zlib/trees.h create mode 100644 waterbox/nyma/zlib/uncompr.c create mode 100644 waterbox/nyma/zlib/zconf.h create mode 100644 waterbox/nyma/zlib/zconf.h.cmakein create mode 100644 waterbox/nyma/zlib/zconf.h.in create mode 100644 waterbox/nyma/zlib/zlib.h create mode 100644 waterbox/nyma/zlib/zlib.map create mode 100644 waterbox/nyma/zlib/zlib.pc create mode 100644 waterbox/nyma/zlib/zlib.pc.cmakein create mode 100644 waterbox/nyma/zlib/zlib.pc.in create mode 100644 waterbox/nyma/zlib/zutil.c create mode 100644 waterbox/nyma/zlib/zutil.h diff --git a/waterbox/nyma/Interfaces.cpp b/waterbox/nyma/Interfaces.cpp index cccbd49b14..a131a61569 100644 --- a/waterbox/nyma/Interfaces.cpp +++ b/waterbox/nyma/Interfaces.cpp @@ -93,9 +93,3 @@ namespace Mednafen void Player_Draw(MDFN_Surface *surface, MDFN_Rect *dr, int CurrentSong, int16 *samples, int32 sampcount) {} } - -// zlib.h -uint32_t crc32(uint32_t crc, unsigned const char *buf, size_t len) -{ - return 0; -} diff --git a/waterbox/nyma/build-and-install-zlib.sh b/waterbox/nyma/build-and-install-zlib.sh new file mode 100644 index 0000000000..af2c2f7c85 --- /dev/null +++ b/waterbox/nyma/build-and-install-zlib.sh @@ -0,0 +1,5 @@ +#!/bin/sh +cd zlib +./configure-for-waterbox +make +./install-for-waterbox diff --git a/waterbox/nyma/common/zlib.h b/waterbox/nyma/common/zlib.h deleted file mode 100644 index 3cdaf2bd48..0000000000 --- a/waterbox/nyma/common/zlib.h +++ /dev/null @@ -1,4 +0,0 @@ -#pragma once - -// TODO: See how much zlib anything actually needs -uint32_t crc32(uint32_t crc, unsigned const char *buf, size_t len); diff --git a/waterbox/nyma/zlib/ChangeLog b/waterbox/nyma/zlib/ChangeLog new file mode 100644 index 0000000000..30199a65a0 --- /dev/null +++ b/waterbox/nyma/zlib/ChangeLog @@ -0,0 +1,1515 @@ + + ChangeLog file for zlib + +Changes in 1.2.11 (15 Jan 2017) +- Fix deflate stored bug when pulling last block from window +- Permit immediate deflateParams changes before any deflate input + +Changes in 1.2.10 (2 Jan 2017) +- Avoid warnings on snprintf() return value +- Fix bug in deflate_stored() for zero-length input +- Fix bug in gzwrite.c that produced corrupt gzip files +- Remove files to be installed before copying them in Makefile.in +- Add warnings when compiling with assembler code + +Changes in 1.2.9 (31 Dec 2016) +- Fix contrib/minizip to permit unzipping with desktop API [Zouzou] +- Improve contrib/blast to return unused bytes +- Assure that gzoffset() is correct when appending +- Improve compress() and uncompress() to support large lengths +- Fix bug in test/example.c where error code not saved +- Remedy Coverity warning [Randers-Pehrson] +- Improve speed of gzprintf() in transparent mode +- Fix inflateInit2() bug when windowBits is 16 or 32 +- Change DEBUG macro to ZLIB_DEBUG +- Avoid uninitialized access by gzclose_w() +- Allow building zlib outside of the source directory +- Fix bug that accepted invalid zlib header when windowBits is zero +- Fix gzseek() problem on MinGW due to buggy _lseeki64 there +- Loop on write() calls in gzwrite.c in case of non-blocking I/O +- Add --warn (-w) option to ./configure for more compiler warnings +- Reject a window size of 256 bytes if not using the zlib wrapper +- Fix bug when level 0 used with Z_HUFFMAN or Z_RLE +- Add --debug (-d) option to ./configure to define ZLIB_DEBUG +- Fix bugs in creating a very large gzip header +- Add uncompress2() function, which returns the input size used +- Assure that deflateParams() will not switch functions mid-block +- Dramatically speed up deflation for level 0 (storing) +- Add gzfread(), duplicating the interface of fread() +- Add gzfwrite(), duplicating the interface of fwrite() +- Add deflateGetDictionary() function +- Use snprintf() for later versions of Microsoft C +- Fix *Init macros to use z_ prefix when requested +- Replace as400 with os400 for OS/400 support [Monnerat] +- Add crc32_z() and adler32_z() functions with size_t lengths +- Update Visual Studio project files [AraHaan] + +Changes in 1.2.8 (28 Apr 2013) +- Update contrib/minizip/iowin32.c for Windows RT [Vollant] +- Do not force Z_CONST for C++ +- Clean up contrib/vstudio [Roß] +- Correct spelling error in zlib.h +- Fix mixed line endings in contrib/vstudio + +Changes in 1.2.7.3 (13 Apr 2013) +- Fix version numbers and DLL names in contrib/vstudio/*/zlib.rc + +Changes in 1.2.7.2 (13 Apr 2013) +- Change check for a four-byte type back to hexadecimal +- Fix typo in win32/Makefile.msc +- Add casts in gzwrite.c for pointer differences + +Changes in 1.2.7.1 (24 Mar 2013) +- Replace use of unsafe string functions with snprintf if available +- Avoid including stddef.h on Windows for Z_SOLO compile [Niessink] +- Fix gzgetc undefine when Z_PREFIX set [Turk] +- Eliminate use of mktemp in Makefile (not always available) +- Fix bug in 'F' mode for gzopen() +- Add inflateGetDictionary() function +- Correct comment in deflate.h +- Use _snprintf for snprintf in Microsoft C +- On Darwin, only use /usr/bin/libtool if libtool is not Apple +- Delete "--version" file if created by "ar --version" [Richard G.] +- Fix configure check for veracity of compiler error return codes +- Fix CMake compilation of static lib for MSVC2010 x64 +- Remove unused variable in infback9.c +- Fix argument checks in gzlog_compress() and gzlog_write() +- Clean up the usage of z_const and respect const usage within zlib +- Clean up examples/gzlog.[ch] comparisons of different types +- Avoid shift equal to bits in type (caused endless loop) +- Fix uninitialized value bug in gzputc() introduced by const patches +- Fix memory allocation error in examples/zran.c [Nor] +- Fix bug where gzopen(), gzclose() would write an empty file +- Fix bug in gzclose() when gzwrite() runs out of memory +- Check for input buffer malloc failure in examples/gzappend.c +- Add note to contrib/blast to use binary mode in stdio +- Fix comparisons of differently signed integers in contrib/blast +- Check for invalid code length codes in contrib/puff +- Fix serious but very rare decompression bug in inftrees.c +- Update inflateBack() comments, since inflate() can be faster +- Use underscored I/O function names for WINAPI_FAMILY +- Add _tr_flush_bits to the external symbols prefixed by --zprefix +- Add contrib/vstudio/vc10 pre-build step for static only +- Quote --version-script argument in CMakeLists.txt +- Don't specify --version-script on Apple platforms in CMakeLists.txt +- Fix casting error in contrib/testzlib/testzlib.c +- Fix types in contrib/minizip to match result of get_crc_table() +- Simplify contrib/vstudio/vc10 with 'd' suffix +- Add TOP support to win32/Makefile.msc +- Suport i686 and amd64 assembler builds in CMakeLists.txt +- Fix typos in the use of _LARGEFILE64_SOURCE in zconf.h +- Add vc11 and vc12 build files to contrib/vstudio +- Add gzvprintf() as an undocumented function in zlib +- Fix configure for Sun shell +- Remove runtime check in configure for four-byte integer type +- Add casts and consts to ease user conversion to C++ +- Add man pages for minizip and miniunzip +- In Makefile uninstall, don't rm if preceding cd fails +- Do not return Z_BUF_ERROR if deflateParam() has nothing to write + +Changes in 1.2.7 (2 May 2012) +- Replace use of memmove() with a simple copy for portability +- Test for existence of strerror +- Restore gzgetc_ for backward compatibility with 1.2.6 +- Fix build with non-GNU make on Solaris +- Require gcc 4.0 or later on Mac OS X to use the hidden attribute +- Include unistd.h for Watcom C +- Use __WATCOMC__ instead of __WATCOM__ +- Do not use the visibility attribute if NO_VIZ defined +- Improve the detection of no hidden visibility attribute +- Avoid using __int64 for gcc or solo compilation +- Cast to char * in gzprintf to avoid warnings [Zinser] +- Fix make_vms.com for VAX [Zinser] +- Don't use library or built-in byte swaps +- Simplify test and use of gcc hidden attribute +- Fix bug in gzclose_w() when gzwrite() fails to allocate memory +- Add "x" (O_EXCL) and "e" (O_CLOEXEC) modes support to gzopen() +- Fix bug in test/minigzip.c for configure --solo +- Fix contrib/vstudio project link errors [Mohanathas] +- Add ability to choose the builder in make_vms.com [Schweda] +- Add DESTDIR support to mingw32 win32/Makefile.gcc +- Fix comments in win32/Makefile.gcc for proper usage +- Allow overriding the default install locations for cmake +- Generate and install the pkg-config file with cmake +- Build both a static and a shared version of zlib with cmake +- Include version symbols for cmake builds +- If using cmake with MSVC, add the source directory to the includes +- Remove unneeded EXTRA_CFLAGS from win32/Makefile.gcc [Truta] +- Move obsolete emx makefile to old [Truta] +- Allow the use of -Wundef when compiling or using zlib +- Avoid the use of the -u option with mktemp +- Improve inflate() documentation on the use of Z_FINISH +- Recognize clang as gcc +- Add gzopen_w() in Windows for wide character path names +- Rename zconf.h in CMakeLists.txt to move it out of the way +- Add source directory in CMakeLists.txt for building examples +- Look in build directory for zlib.pc in CMakeLists.txt +- Remove gzflags from zlibvc.def in vc9 and vc10 +- Fix contrib/minizip compilation in the MinGW environment +- Update ./configure for Solaris, support --64 [Mooney] +- Remove -R. from Solaris shared build (possible security issue) +- Avoid race condition for parallel make (-j) running example +- Fix type mismatch between get_crc_table() and crc_table +- Fix parsing of version with "-" in CMakeLists.txt [Snider, Ziegler] +- Fix the path to zlib.map in CMakeLists.txt +- Force the native libtool in Mac OS X to avoid GNU libtool [Beebe] +- Add instructions to win32/Makefile.gcc for shared install [Torri] + +Changes in 1.2.6.1 (12 Feb 2012) +- Avoid the use of the Objective-C reserved name "id" +- Include io.h in gzguts.h for Microsoft compilers +- Fix problem with ./configure --prefix and gzgetc macro +- Include gz_header definition when compiling zlib solo +- Put gzflags() functionality back in zutil.c +- Avoid library header include in crc32.c for Z_SOLO +- Use name in GCC_CLASSIC as C compiler for coverage testing, if set +- Minor cleanup in contrib/minizip/zip.c [Vollant] +- Update make_vms.com [Zinser] +- Remove unnecessary gzgetc_ function +- Use optimized byte swap operations for Microsoft and GNU [Snyder] +- Fix minor typo in zlib.h comments [Rzesniowiecki] + +Changes in 1.2.6 (29 Jan 2012) +- Update the Pascal interface in contrib/pascal +- Fix function numbers for gzgetc_ in zlibvc.def files +- Fix configure.ac for contrib/minizip [Schiffer] +- Fix large-entry detection in minizip on 64-bit systems [Schiffer] +- Have ./configure use the compiler return code for error indication +- Fix CMakeLists.txt for cross compilation [McClure] +- Fix contrib/minizip/zip.c for 64-bit architectures [Dalsnes] +- Fix compilation of contrib/minizip on FreeBSD [Marquez] +- Correct suggested usages in win32/Makefile.msc [Shachar, Horvath] +- Include io.h for Turbo C / Borland C on all platforms [Truta] +- Make version explicit in contrib/minizip/configure.ac [Bosmans] +- Avoid warning for no encryption in contrib/minizip/zip.c [Vollant] +- Minor cleanup up contrib/minizip/unzip.c [Vollant] +- Fix bug when compiling minizip with C++ [Vollant] +- Protect for long name and extra fields in contrib/minizip [Vollant] +- Avoid some warnings in contrib/minizip [Vollant] +- Add -I../.. -L../.. to CFLAGS for minizip and miniunzip +- Add missing libs to minizip linker command +- Add support for VPATH builds in contrib/minizip +- Add an --enable-demos option to contrib/minizip/configure +- Add the generation of configure.log by ./configure +- Exit when required parameters not provided to win32/Makefile.gcc +- Have gzputc return the character written instead of the argument +- Use the -m option on ldconfig for BSD systems [Tobias] +- Correct in zlib.map when deflateResetKeep was added + +Changes in 1.2.5.3 (15 Jan 2012) +- Restore gzgetc function for binary compatibility +- Do not use _lseeki64 under Borland C++ [Truta] +- Update win32/Makefile.msc to build test/*.c [Truta] +- Remove old/visualc6 given CMakefile and other alternatives +- Update AS400 build files and documentation [Monnerat] +- Update win32/Makefile.gcc to build test/*.c [Truta] +- Permit stronger flushes after Z_BLOCK flushes +- Avoid extraneous empty blocks when doing empty flushes +- Permit Z_NULL arguments to deflatePending +- Allow deflatePrime() to insert bits in the middle of a stream +- Remove second empty static block for Z_PARTIAL_FLUSH +- Write out all of the available bits when using Z_BLOCK +- Insert the first two strings in the hash table after a flush + +Changes in 1.2.5.2 (17 Dec 2011) +- fix ld error: unable to find version dependency 'ZLIB_1.2.5' +- use relative symlinks for shared libs +- Avoid searching past window for Z_RLE strategy +- Assure that high-water mark initialization is always applied in deflate +- Add assertions to fill_window() in deflate.c to match comments +- Update python link in README +- Correct spelling error in gzread.c +- Fix bug in gzgets() for a concatenated empty gzip stream +- Correct error in comment for gz_make() +- Change gzread() and related to ignore junk after gzip streams +- Allow gzread() and related to continue after gzclearerr() +- Allow gzrewind() and gzseek() after a premature end-of-file +- Simplify gzseek() now that raw after gzip is ignored +- Change gzgetc() to a macro for speed (~40% speedup in testing) +- Fix gzclose() to return the actual error last encountered +- Always add large file support for windows +- Include zconf.h for windows large file support +- Include zconf.h.cmakein for windows large file support +- Update zconf.h.cmakein on make distclean +- Merge vestigial vsnprintf determination from zutil.h to gzguts.h +- Clarify how gzopen() appends in zlib.h comments +- Correct documentation of gzdirect() since junk at end now ignored +- Add a transparent write mode to gzopen() when 'T' is in the mode +- Update python link in zlib man page +- Get inffixed.h and MAKEFIXED result to match +- Add a ./config --solo option to make zlib subset with no library use +- Add undocumented inflateResetKeep() function for CAB file decoding +- Add --cover option to ./configure for gcc coverage testing +- Add #define ZLIB_CONST option to use const in the z_stream interface +- Add comment to gzdopen() in zlib.h to use dup() when using fileno() +- Note behavior of uncompress() to provide as much data as it can +- Add files in contrib/minizip to aid in building libminizip +- Split off AR options in Makefile.in and configure +- Change ON macro to Z_ARG to avoid application conflicts +- Facilitate compilation with Borland C++ for pragmas and vsnprintf +- Include io.h for Turbo C / Borland C++ +- Move example.c and minigzip.c to test/ +- Simplify incomplete code table filling in inflate_table() +- Remove code from inflate.c and infback.c that is impossible to execute +- Test the inflate code with full coverage +- Allow deflateSetDictionary, inflateSetDictionary at any time (in raw) +- Add deflateResetKeep and fix inflateResetKeep to retain dictionary +- Fix gzwrite.c to accommodate reduced memory zlib compilation +- Have inflate() with Z_FINISH avoid the allocation of a window +- Do not set strm->adler when doing raw inflate +- Fix gzeof() to behave just like feof() when read is not past end of file +- Fix bug in gzread.c when end-of-file is reached +- Avoid use of Z_BUF_ERROR in gz* functions except for premature EOF +- Document gzread() capability to read concurrently written files +- Remove hard-coding of resource compiler in CMakeLists.txt [Blammo] + +Changes in 1.2.5.1 (10 Sep 2011) +- Update FAQ entry on shared builds (#13) +- Avoid symbolic argument to chmod in Makefile.in +- Fix bug and add consts in contrib/puff [Oberhumer] +- Update contrib/puff/zeros.raw test file to have all block types +- Add full coverage test for puff in contrib/puff/Makefile +- Fix static-only-build install in Makefile.in +- Fix bug in unzGetCurrentFileInfo() in contrib/minizip [Kuno] +- Add libz.a dependency to shared in Makefile.in for parallel builds +- Spell out "number" (instead of "nb") in zlib.h for total_in, total_out +- Replace $(...) with `...` in configure for non-bash sh [Bowler] +- Add darwin* to Darwin* and solaris* to SunOS\ 5* in configure [Groffen] +- Add solaris* to Linux* in configure to allow gcc use [Groffen] +- Add *bsd* to Linux* case in configure [Bar-Lev] +- Add inffast.obj to dependencies in win32/Makefile.msc +- Correct spelling error in deflate.h [Kohler] +- Change libzdll.a again to libz.dll.a (!) in win32/Makefile.gcc +- Add test to configure for GNU C looking for gcc in output of $cc -v +- Add zlib.pc generation to win32/Makefile.gcc [Weigelt] +- Fix bug in zlib.h for _FILE_OFFSET_BITS set and _LARGEFILE64_SOURCE not +- Add comment in zlib.h that adler32_combine with len2 < 0 makes no sense +- Make NO_DIVIDE option in adler32.c much faster (thanks to John Reiser) +- Make stronger test in zconf.h to include unistd.h for LFS +- Apply Darwin patches for 64-bit file offsets to contrib/minizip [Slack] +- Fix zlib.h LFS support when Z_PREFIX used +- Add updated as400 support (removed from old) [Monnerat] +- Avoid deflate sensitivity to volatile input data +- Avoid division in adler32_combine for NO_DIVIDE +- Clarify the use of Z_FINISH with deflateBound() amount of space +- Set binary for output file in puff.c +- Use u4 type for crc_table to avoid conversion warnings +- Apply casts in zlib.h to avoid conversion warnings +- Add OF to prototypes for adler32_combine_ and crc32_combine_ [Miller] +- Improve inflateSync() documentation to note indeterminancy +- Add deflatePending() function to return the amount of pending output +- Correct the spelling of "specification" in FAQ [Randers-Pehrson] +- Add a check in configure for stdarg.h, use for gzprintf() +- Check that pointers fit in ints when gzprint() compiled old style +- Add dummy name before $(SHAREDLIBV) in Makefile [Bar-Lev, Bowler] +- Delete line in configure that adds -L. libz.a to LDFLAGS [Weigelt] +- Add debug records in assmebler code [Londer] +- Update RFC references to use http://tools.ietf.org/html/... [Li] +- Add --archs option, use of libtool to configure for Mac OS X [Borstel] + +Changes in 1.2.5 (19 Apr 2010) +- Disable visibility attribute in win32/Makefile.gcc [Bar-Lev] +- Default to libdir as sharedlibdir in configure [Nieder] +- Update copyright dates on modified source files +- Update trees.c to be able to generate modified trees.h +- Exit configure for MinGW, suggesting win32/Makefile.gcc +- Check for NULL path in gz_open [Homurlu] + +Changes in 1.2.4.5 (18 Apr 2010) +- Set sharedlibdir in configure [Torok] +- Set LDFLAGS in Makefile.in [Bar-Lev] +- Avoid mkdir objs race condition in Makefile.in [Bowler] +- Add ZLIB_INTERNAL in front of internal inter-module functions and arrays +- Define ZLIB_INTERNAL to hide internal functions and arrays for GNU C +- Don't use hidden attribute when it is a warning generator (e.g. Solaris) + +Changes in 1.2.4.4 (18 Apr 2010) +- Fix CROSS_PREFIX executable testing, CHOST extract, mingw* [Torok] +- Undefine _LARGEFILE64_SOURCE in zconf.h if it is zero, but not if empty +- Try to use bash or ksh regardless of functionality of /bin/sh +- Fix configure incompatibility with NetBSD sh +- Remove attempt to run under bash or ksh since have better NetBSD fix +- Fix win32/Makefile.gcc for MinGW [Bar-Lev] +- Add diagnostic messages when using CROSS_PREFIX in configure +- Added --sharedlibdir option to configure [Weigelt] +- Use hidden visibility attribute when available [Frysinger] + +Changes in 1.2.4.3 (10 Apr 2010) +- Only use CROSS_PREFIX in configure for ar and ranlib if they exist +- Use CROSS_PREFIX for nm [Bar-Lev] +- Assume _LARGEFILE64_SOURCE defined is equivalent to true +- Avoid use of undefined symbols in #if with && and || +- Make *64 prototypes in gzguts.h consistent with functions +- Add -shared load option for MinGW in configure [Bowler] +- Move z_off64_t to public interface, use instead of off64_t +- Remove ! from shell test in configure (not portable to Solaris) +- Change +0 macro tests to -0 for possibly increased portability + +Changes in 1.2.4.2 (9 Apr 2010) +- Add consistent carriage returns to readme.txt's in masmx86 and masmx64 +- Really provide prototypes for *64 functions when building without LFS +- Only define unlink() in minigzip.c if unistd.h not included +- Update README to point to contrib/vstudio project files +- Move projects/vc6 to old/ and remove projects/ +- Include stdlib.h in minigzip.c for setmode() definition under WinCE +- Clean up assembler builds in win32/Makefile.msc [Rowe] +- Include sys/types.h for Microsoft for off_t definition +- Fix memory leak on error in gz_open() +- Symbolize nm as $NM in configure [Weigelt] +- Use TEST_LDSHARED instead of LDSHARED to link test programs [Weigelt] +- Add +0 to _FILE_OFFSET_BITS and _LFS64_LARGEFILE in case not defined +- Fix bug in gzeof() to take into account unused input data +- Avoid initialization of structures with variables in puff.c +- Updated win32/README-WIN32.txt [Rowe] + +Changes in 1.2.4.1 (28 Mar 2010) +- Remove the use of [a-z] constructs for sed in configure [gentoo 310225] +- Remove $(SHAREDLIB) from LIBS in Makefile.in [Creech] +- Restore "for debugging" comment on sprintf() in gzlib.c +- Remove fdopen for MVS from gzguts.h +- Put new README-WIN32.txt in win32 [Rowe] +- Add check for shell to configure and invoke another shell if needed +- Fix big fat stinking bug in gzseek() on uncompressed files +- Remove vestigial F_OPEN64 define in zutil.h +- Set and check the value of _LARGEFILE_SOURCE and _LARGEFILE64_SOURCE +- Avoid errors on non-LFS systems when applications define LFS macros +- Set EXE to ".exe" in configure for MINGW [Kahle] +- Match crc32() in crc32.c exactly to the prototype in zlib.h [Sherrill] +- Add prefix for cross-compilation in win32/makefile.gcc [Bar-Lev] +- Add DLL install in win32/makefile.gcc [Bar-Lev] +- Allow Linux* or linux* from uname in configure [Bar-Lev] +- Allow ldconfig to be redefined in configure and Makefile.in [Bar-Lev] +- Add cross-compilation prefixes to configure [Bar-Lev] +- Match type exactly in gz_load() invocation in gzread.c +- Match type exactly of zcalloc() in zutil.c to zlib.h alloc_func +- Provide prototypes for *64 functions when building zlib without LFS +- Don't use -lc when linking shared library on MinGW +- Remove errno.h check in configure and vestigial errno code in zutil.h + +Changes in 1.2.4 (14 Mar 2010) +- Fix VER3 extraction in configure for no fourth subversion +- Update zlib.3, add docs to Makefile.in to make .pdf out of it +- Add zlib.3.pdf to distribution +- Don't set error code in gzerror() if passed pointer is NULL +- Apply destination directory fixes to CMakeLists.txt [Lowman] +- Move #cmakedefine's to a new zconf.in.cmakein +- Restore zconf.h for builds that don't use configure or cmake +- Add distclean to dummy Makefile for convenience +- Update and improve INDEX, README, and FAQ +- Update CMakeLists.txt for the return of zconf.h [Lowman] +- Update contrib/vstudio/vc9 and vc10 [Vollant] +- Change libz.dll.a back to libzdll.a in win32/Makefile.gcc +- Apply license and readme changes to contrib/asm686 [Raiter] +- Check file name lengths and add -c option in minigzip.c [Li] +- Update contrib/amd64 and contrib/masmx86/ [Vollant] +- Avoid use of "eof" parameter in trees.c to not shadow library variable +- Update make_vms.com for removal of zlibdefs.h [Zinser] +- Update assembler code and vstudio projects in contrib [Vollant] +- Remove outdated assembler code contrib/masm686 and contrib/asm586 +- Remove old vc7 and vc8 from contrib/vstudio +- Update win32/Makefile.msc, add ZLIB_VER_SUBREVISION [Rowe] +- Fix memory leaks in gzclose_r() and gzclose_w(), file leak in gz_open() +- Add contrib/gcc_gvmat64 for longest_match and inflate_fast [Vollant] +- Remove *64 functions from win32/zlib.def (they're not 64-bit yet) +- Fix bug in void-returning vsprintf() case in gzwrite.c +- Fix name change from inflate.h in contrib/inflate86/inffas86.c +- Check if temporary file exists before removing in make_vms.com [Zinser] +- Fix make install and uninstall for --static option +- Fix usage of _MSC_VER in gzguts.h and zutil.h [Truta] +- Update readme.txt in contrib/masmx64 and masmx86 to assemble + +Changes in 1.2.3.9 (21 Feb 2010) +- Expunge gzio.c +- Move as400 build information to old +- Fix updates in contrib/minizip and contrib/vstudio +- Add const to vsnprintf test in configure to avoid warnings [Weigelt] +- Delete zconf.h (made by configure) [Weigelt] +- Change zconf.in.h to zconf.h.in per convention [Weigelt] +- Check for NULL buf in gzgets() +- Return empty string for gzgets() with len == 1 (like fgets()) +- Fix description of gzgets() in zlib.h for end-of-file, NULL return +- Update minizip to 1.1 [Vollant] +- Avoid MSVC loss of data warnings in gzread.c, gzwrite.c +- Note in zlib.h that gzerror() should be used to distinguish from EOF +- Remove use of snprintf() from gzlib.c +- Fix bug in gzseek() +- Update contrib/vstudio, adding vc9 and vc10 [Kuno, Vollant] +- Fix zconf.h generation in CMakeLists.txt [Lowman] +- Improve comments in zconf.h where modified by configure + +Changes in 1.2.3.8 (13 Feb 2010) +- Clean up text files (tabs, trailing whitespace, etc.) [Oberhumer] +- Use z_off64_t in gz_zero() and gz_skip() to match state->skip +- Avoid comparison problem when sizeof(int) == sizeof(z_off64_t) +- Revert to Makefile.in from 1.2.3.6 (live with the clutter) +- Fix missing error return in gzflush(), add zlib.h note +- Add *64 functions to zlib.map [Levin] +- Fix signed/unsigned comparison in gz_comp() +- Use SFLAGS when testing shared linking in configure +- Add --64 option to ./configure to use -m64 with gcc +- Fix ./configure --help to correctly name options +- Have make fail if a test fails [Levin] +- Avoid buffer overrun in contrib/masmx64/gvmat64.asm [Simpson] +- Remove assembler object files from contrib + +Changes in 1.2.3.7 (24 Jan 2010) +- Always gzopen() with O_LARGEFILE if available +- Fix gzdirect() to work immediately after gzopen() or gzdopen() +- Make gzdirect() more precise when the state changes while reading +- Improve zlib.h documentation in many places +- Catch memory allocation failure in gz_open() +- Complete close operation if seek forward in gzclose_w() fails +- Return Z_ERRNO from gzclose_r() if close() fails +- Return Z_STREAM_ERROR instead of EOF for gzclose() being passed NULL +- Return zero for gzwrite() errors to match zlib.h description +- Return -1 on gzputs() error to match zlib.h description +- Add zconf.in.h to allow recovery from configure modification [Weigelt] +- Fix static library permissions in Makefile.in [Weigelt] +- Avoid warnings in configure tests that hide functionality [Weigelt] +- Add *BSD and DragonFly to Linux case in configure [gentoo 123571] +- Change libzdll.a to libz.dll.a in win32/Makefile.gcc [gentoo 288212] +- Avoid access of uninitialized data for first inflateReset2 call [Gomes] +- Keep object files in subdirectories to reduce the clutter somewhat +- Remove default Makefile and zlibdefs.h, add dummy Makefile +- Add new external functions to Z_PREFIX, remove duplicates, z_z_ -> z_ +- Remove zlibdefs.h completely -- modify zconf.h instead + +Changes in 1.2.3.6 (17 Jan 2010) +- Avoid void * arithmetic in gzread.c and gzwrite.c +- Make compilers happier with const char * for gz_error message +- Avoid unused parameter warning in inflate.c +- Avoid signed-unsigned comparison warning in inflate.c +- Indent #pragma's for traditional C +- Fix usage of strwinerror() in glib.c, change to gz_strwinerror() +- Correct email address in configure for system options +- Update make_vms.com and add make_vms.com to contrib/minizip [Zinser] +- Update zlib.map [Brown] +- Fix Makefile.in for Solaris 10 make of example64 and minizip64 [Torok] +- Apply various fixes to CMakeLists.txt [Lowman] +- Add checks on len in gzread() and gzwrite() +- Add error message for no more room for gzungetc() +- Remove zlib version check in gzwrite() +- Defer compression of gzprintf() result until need to +- Use snprintf() in gzdopen() if available +- Remove USE_MMAP configuration determination (only used by minigzip) +- Remove examples/pigz.c (available separately) +- Update examples/gun.c to 1.6 + +Changes in 1.2.3.5 (8 Jan 2010) +- Add space after #if in zutil.h for some compilers +- Fix relatively harmless bug in deflate_fast() [Exarevsky] +- Fix same problem in deflate_slow() +- Add $(SHAREDLIBV) to LIBS in Makefile.in [Brown] +- Add deflate_rle() for faster Z_RLE strategy run-length encoding +- Add deflate_huff() for faster Z_HUFFMAN_ONLY encoding +- Change name of "write" variable in inffast.c to avoid library collisions +- Fix premature EOF from gzread() in gzio.c [Brown] +- Use zlib header window size if windowBits is 0 in inflateInit2() +- Remove compressBound() call in deflate.c to avoid linking compress.o +- Replace use of errno in gz* with functions, support WinCE [Alves] +- Provide alternative to perror() in minigzip.c for WinCE [Alves] +- Don't use _vsnprintf on later versions of MSVC [Lowman] +- Add CMake build script and input file [Lowman] +- Update contrib/minizip to 1.1 [Svensson, Vollant] +- Moved nintendods directory from contrib to . +- Replace gzio.c with a new set of routines with the same functionality +- Add gzbuffer(), gzoffset(), gzclose_r(), gzclose_w() as part of above +- Update contrib/minizip to 1.1b +- Change gzeof() to return 0 on error instead of -1 to agree with zlib.h + +Changes in 1.2.3.4 (21 Dec 2009) +- Use old school .SUFFIXES in Makefile.in for FreeBSD compatibility +- Update comments in configure and Makefile.in for default --shared +- Fix test -z's in configure [Marquess] +- Build examplesh and minigzipsh when not testing +- Change NULL's to Z_NULL's in deflate.c and in comments in zlib.h +- Import LDFLAGS from the environment in configure +- Fix configure to populate SFLAGS with discovered CFLAGS options +- Adapt make_vms.com to the new Makefile.in [Zinser] +- Add zlib2ansi script for C++ compilation [Marquess] +- Add _FILE_OFFSET_BITS=64 test to make test (when applicable) +- Add AMD64 assembler code for longest match to contrib [Teterin] +- Include options from $SFLAGS when doing $LDSHARED +- Simplify 64-bit file support by introducing z_off64_t type +- Make shared object files in objs directory to work around old Sun cc +- Use only three-part version number for Darwin shared compiles +- Add rc option to ar in Makefile.in for when ./configure not run +- Add -WI,-rpath,. to LDFLAGS for OSF 1 V4* +- Set LD_LIBRARYN32_PATH for SGI IRIX shared compile +- Protect against _FILE_OFFSET_BITS being defined when compiling zlib +- Rename Makefile.in targets allstatic to static and allshared to shared +- Fix static and shared Makefile.in targets to be independent +- Correct error return bug in gz_open() by setting state [Brown] +- Put spaces before ;;'s in configure for better sh compatibility +- Add pigz.c (parallel implementation of gzip) to examples/ +- Correct constant in crc32.c to UL [Leventhal] +- Reject negative lengths in crc32_combine() +- Add inflateReset2() function to work like inflateEnd()/inflateInit2() +- Include sys/types.h for _LARGEFILE64_SOURCE [Brown] +- Correct typo in doc/algorithm.txt [Janik] +- Fix bug in adler32_combine() [Zhu] +- Catch missing-end-of-block-code error in all inflates and in puff + Assures that random input to inflate eventually results in an error +- Added enough.c (calculation of ENOUGH for inftrees.h) to examples/ +- Update ENOUGH and its usage to reflect discovered bounds +- Fix gzerror() error report on empty input file [Brown] +- Add ush casts in trees.c to avoid pedantic runtime errors +- Fix typo in zlib.h uncompress() description [Reiss] +- Correct inflate() comments with regard to automatic header detection +- Remove deprecation comment on Z_PARTIAL_FLUSH (it stays) +- Put new version of gzlog (2.0) in examples with interruption recovery +- Add puff compile option to permit invalid distance-too-far streams +- Add puff TEST command options, ability to read piped input +- Prototype the *64 functions in zlib.h when _FILE_OFFSET_BITS == 64, but + _LARGEFILE64_SOURCE not defined +- Fix Z_FULL_FLUSH to truly erase the past by resetting s->strstart +- Fix deflateSetDictionary() to use all 32K for output consistency +- Remove extraneous #define MIN_LOOKAHEAD in deflate.c (in deflate.h) +- Clear bytes after deflate lookahead to avoid use of uninitialized data +- Change a limit in inftrees.c to be more transparent to Coverity Prevent +- Update win32/zlib.def with exported symbols from zlib.h +- Correct spelling errors in zlib.h [Willem, Sobrado] +- Allow Z_BLOCK for deflate() to force a new block +- Allow negative bits in inflatePrime() to delete existing bit buffer +- Add Z_TREES flush option to inflate() to return at end of trees +- Add inflateMark() to return current state information for random access +- Add Makefile for NintendoDS to contrib [Costa] +- Add -w in configure compile tests to avoid spurious warnings [Beucler] +- Fix typos in zlib.h comments for deflateSetDictionary() +- Fix EOF detection in transparent gzread() [Maier] + +Changes in 1.2.3.3 (2 October 2006) +- Make --shared the default for configure, add a --static option +- Add compile option to permit invalid distance-too-far streams +- Add inflateUndermine() function which is required to enable above +- Remove use of "this" variable name for C++ compatibility [Marquess] +- Add testing of shared library in make test, if shared library built +- Use ftello() and fseeko() if available instead of ftell() and fseek() +- Provide two versions of all functions that use the z_off_t type for + binary compatibility -- a normal version and a 64-bit offset version, + per the Large File Support Extension when _LARGEFILE64_SOURCE is + defined; use the 64-bit versions by default when _FILE_OFFSET_BITS + is defined to be 64 +- Add a --uname= option to configure to perhaps help with cross-compiling + +Changes in 1.2.3.2 (3 September 2006) +- Turn off silly Borland warnings [Hay] +- Use off64_t and define _LARGEFILE64_SOURCE when present +- Fix missing dependency on inffixed.h in Makefile.in +- Rig configure --shared to build both shared and static [Teredesai, Truta] +- Remove zconf.in.h and instead create a new zlibdefs.h file +- Fix contrib/minizip/unzip.c non-encrypted after encrypted [Vollant] +- Add treebuild.xml (see http://treebuild.metux.de/) [Weigelt] + +Changes in 1.2.3.1 (16 August 2006) +- Add watcom directory with OpenWatcom make files [Daniel] +- Remove #undef of FAR in zconf.in.h for MVS [Fedtke] +- Update make_vms.com [Zinser] +- Use -fPIC for shared build in configure [Teredesai, Nicholson] +- Use only major version number for libz.so on IRIX and OSF1 [Reinholdtsen] +- Use fdopen() (not _fdopen()) for Interix in zutil.h [Bäck] +- Add some FAQ entries about the contrib directory +- Update the MVS question in the FAQ +- Avoid extraneous reads after EOF in gzio.c [Brown] +- Correct spelling of "successfully" in gzio.c [Randers-Pehrson] +- Add comments to zlib.h about gzerror() usage [Brown] +- Set extra flags in gzip header in gzopen() like deflate() does +- Make configure options more compatible with double-dash conventions + [Weigelt] +- Clean up compilation under Solaris SunStudio cc [Rowe, Reinholdtsen] +- Fix uninstall target in Makefile.in [Truta] +- Add pkgconfig support [Weigelt] +- Use $(DESTDIR) macro in Makefile.in [Reinholdtsen, Weigelt] +- Replace set_data_type() with a more accurate detect_data_type() in + trees.c, according to the txtvsbin.txt document [Truta] +- Swap the order of #include and #include "zlib.h" in + gzio.c, example.c and minigzip.c [Truta] +- Shut up annoying VS2005 warnings about standard C deprecation [Rowe, + Truta] (where?) +- Fix target "clean" from win32/Makefile.bor [Truta] +- Create .pdb and .manifest files in win32/makefile.msc [Ziegler, Rowe] +- Update zlib www home address in win32/DLL_FAQ.txt [Truta] +- Update contrib/masmx86/inffas32.asm for VS2005 [Vollant, Van Wassenhove] +- Enable browse info in the "Debug" and "ASM Debug" configurations in + the Visual C++ 6 project, and set (non-ASM) "Debug" as default [Truta] +- Add pkgconfig support [Weigelt] +- Add ZLIB_VER_MAJOR, ZLIB_VER_MINOR and ZLIB_VER_REVISION in zlib.h, + for use in win32/zlib1.rc [Polushin, Rowe, Truta] +- Add a document that explains the new text detection scheme to + doc/txtvsbin.txt [Truta] +- Add rfc1950.txt, rfc1951.txt and rfc1952.txt to doc/ [Truta] +- Move algorithm.txt into doc/ [Truta] +- Synchronize FAQ with website +- Fix compressBound(), was low for some pathological cases [Fearnley] +- Take into account wrapper variations in deflateBound() +- Set examples/zpipe.c input and output to binary mode for Windows +- Update examples/zlib_how.html with new zpipe.c (also web site) +- Fix some warnings in examples/gzlog.c and examples/zran.c (it seems + that gcc became pickier in 4.0) +- Add zlib.map for Linux: "All symbols from zlib-1.1.4 remain + un-versioned, the patch adds versioning only for symbols introduced in + zlib-1.2.0 or later. It also declares as local those symbols which are + not designed to be exported." [Levin] +- Update Z_PREFIX list in zconf.in.h, add --zprefix option to configure +- Do not initialize global static by default in trees.c, add a response + NO_INIT_GLOBAL_POINTERS to initialize them if needed [Marquess] +- Don't use strerror() in gzio.c under WinCE [Yakimov] +- Don't use errno.h in zutil.h under WinCE [Yakimov] +- Move arguments for AR to its usage to allow replacing ar [Marot] +- Add HAVE_VISIBILITY_PRAGMA in zconf.in.h for Mozilla [Randers-Pehrson] +- Improve inflateInit() and inflateInit2() documentation +- Fix structure size comment in inflate.h +- Change configure help option from --h* to --help [Santos] + +Changes in 1.2.3 (18 July 2005) +- Apply security vulnerability fixes to contrib/infback9 as well +- Clean up some text files (carriage returns, trailing space) +- Update testzlib, vstudio, masmx64, and masmx86 in contrib [Vollant] + +Changes in 1.2.2.4 (11 July 2005) +- Add inflatePrime() function for starting inflation at bit boundary +- Avoid some Visual C warnings in deflate.c +- Avoid more silly Visual C warnings in inflate.c and inftrees.c for 64-bit + compile +- Fix some spelling errors in comments [Betts] +- Correct inflateInit2() error return documentation in zlib.h +- Add zran.c example of compressed data random access to examples + directory, shows use of inflatePrime() +- Fix cast for assignments to strm->state in inflate.c and infback.c +- Fix zlibCompileFlags() in zutil.c to use 1L for long shifts [Oberhumer] +- Move declarations of gf2 functions to right place in crc32.c [Oberhumer] +- Add cast in trees.c t avoid a warning [Oberhumer] +- Avoid some warnings in fitblk.c, gun.c, gzjoin.c in examples [Oberhumer] +- Update make_vms.com [Zinser] +- Initialize state->write in inflateReset() since copied in inflate_fast() +- Be more strict on incomplete code sets in inflate_table() and increase + ENOUGH and MAXD -- this repairs a possible security vulnerability for + invalid inflate input. Thanks to Tavis Ormandy and Markus Oberhumer for + discovering the vulnerability and providing test cases. +- Add ia64 support to configure for HP-UX [Smith] +- Add error return to gzread() for format or i/o error [Levin] +- Use malloc.h for OS/2 [Necasek] + +Changes in 1.2.2.3 (27 May 2005) +- Replace 1U constants in inflate.c and inftrees.c for 64-bit compile +- Typecast fread() return values in gzio.c [Vollant] +- Remove trailing space in minigzip.c outmode (VC++ can't deal with it) +- Fix crc check bug in gzread() after gzungetc() [Heiner] +- Add the deflateTune() function to adjust internal compression parameters +- Add a fast gzip decompressor, gun.c, to examples (use of inflateBack) +- Remove an incorrect assertion in examples/zpipe.c +- Add C++ wrapper in infback9.h [Donais] +- Fix bug in inflateCopy() when decoding fixed codes +- Note in zlib.h how much deflateSetDictionary() actually uses +- Remove USE_DICT_HEAD in deflate.c (would mess up inflate if used) +- Add _WIN32_WCE to define WIN32 in zconf.in.h [Spencer] +- Don't include stderr.h or errno.h for _WIN32_WCE in zutil.h [Spencer] +- Add gzdirect() function to indicate transparent reads +- Update contrib/minizip [Vollant] +- Fix compilation of deflate.c when both ASMV and FASTEST [Oberhumer] +- Add casts in crc32.c to avoid warnings [Oberhumer] +- Add contrib/masmx64 [Vollant] +- Update contrib/asm586, asm686, masmx86, testzlib, vstudio [Vollant] + +Changes in 1.2.2.2 (30 December 2004) +- Replace structure assignments in deflate.c and inflate.c with zmemcpy to + avoid implicit memcpy calls (portability for no-library compilation) +- Increase sprintf() buffer size in gzdopen() to allow for large numbers +- Add INFLATE_STRICT to check distances against zlib header +- Improve WinCE errno handling and comments [Chang] +- Remove comment about no gzip header processing in FAQ +- Add Z_FIXED strategy option to deflateInit2() to force fixed trees +- Add updated make_vms.com [Coghlan], update README +- Create a new "examples" directory, move gzappend.c there, add zpipe.c, + fitblk.c, gzlog.[ch], gzjoin.c, and zlib_how.html. +- Add FAQ entry and comments in deflate.c on uninitialized memory access +- Add Solaris 9 make options in configure [Gilbert] +- Allow strerror() usage in gzio.c for STDC +- Fix DecompressBuf in contrib/delphi/ZLib.pas [ManChesTer] +- Update contrib/masmx86/inffas32.asm and gvmat32.asm [Vollant] +- Use z_off_t for adler32_combine() and crc32_combine() lengths +- Make adler32() much faster for small len +- Use OS_CODE in deflate() default gzip header + +Changes in 1.2.2.1 (31 October 2004) +- Allow inflateSetDictionary() call for raw inflate +- Fix inflate header crc check bug for file names and comments +- Add deflateSetHeader() and gz_header structure for custom gzip headers +- Add inflateGetheader() to retrieve gzip headers +- Add crc32_combine() and adler32_combine() functions +- Add alloc_func, free_func, in_func, out_func to Z_PREFIX list +- Use zstreamp consistently in zlib.h (inflate_back functions) +- Remove GUNZIP condition from definition of inflate_mode in inflate.h + and in contrib/inflate86/inffast.S [Truta, Anderson] +- Add support for AMD64 in contrib/inflate86/inffas86.c [Anderson] +- Update projects/README.projects and projects/visualc6 [Truta] +- Update win32/DLL_FAQ.txt [Truta] +- Avoid warning under NO_GZCOMPRESS in gzio.c; fix typo [Truta] +- Deprecate Z_ASCII; use Z_TEXT instead [Truta] +- Use a new algorithm for setting strm->data_type in trees.c [Truta] +- Do not define an exit() prototype in zutil.c unless DEBUG defined +- Remove prototype of exit() from zutil.c, example.c, minigzip.c [Truta] +- Add comment in zlib.h for Z_NO_FLUSH parameter to deflate() +- Fix Darwin build version identification [Peterson] + +Changes in 1.2.2 (3 October 2004) +- Update zlib.h comments on gzip in-memory processing +- Set adler to 1 in inflateReset() to support Java test suite [Walles] +- Add contrib/dotzlib [Ravn] +- Update win32/DLL_FAQ.txt [Truta] +- Update contrib/minizip [Vollant] +- Move contrib/visual-basic.txt to old/ [Truta] +- Fix assembler builds in projects/visualc6/ [Truta] + +Changes in 1.2.1.2 (9 September 2004) +- Update INDEX file +- Fix trees.c to update strm->data_type (no one ever noticed!) +- Fix bug in error case in inflate.c, infback.c, and infback9.c [Brown] +- Add "volatile" to crc table flag declaration (for DYNAMIC_CRC_TABLE) +- Add limited multitasking protection to DYNAMIC_CRC_TABLE +- Add NO_vsnprintf for VMS in zutil.h [Mozilla] +- Don't declare strerror() under VMS [Mozilla] +- Add comment to DYNAMIC_CRC_TABLE to use get_crc_table() to initialize +- Update contrib/ada [Anisimkov] +- Update contrib/minizip [Vollant] +- Fix configure to not hardcode directories for Darwin [Peterson] +- Fix gzio.c to not return error on empty files [Brown] +- Fix indentation; update version in contrib/delphi/ZLib.pas and + contrib/pascal/zlibpas.pas [Truta] +- Update mkasm.bat in contrib/masmx86 [Truta] +- Update contrib/untgz [Truta] +- Add projects/README.projects [Truta] +- Add project for MS Visual C++ 6.0 in projects/visualc6 [Cadieux, Truta] +- Update win32/DLL_FAQ.txt [Truta] +- Update list of Z_PREFIX symbols in zconf.h [Randers-Pehrson, Truta] +- Remove an unnecessary assignment to curr in inftrees.c [Truta] +- Add OS/2 to exe builds in configure [Poltorak] +- Remove err dummy parameter in zlib.h [Kientzle] + +Changes in 1.2.1.1 (9 January 2004) +- Update email address in README +- Several FAQ updates +- Fix a big fat bug in inftrees.c that prevented decoding valid + dynamic blocks with only literals and no distance codes -- + Thanks to "Hot Emu" for the bug report and sample file +- Add a note to puff.c on no distance codes case. + +Changes in 1.2.1 (17 November 2003) +- Remove a tab in contrib/gzappend/gzappend.c +- Update some interfaces in contrib for new zlib functions +- Update zlib version number in some contrib entries +- Add Windows CE definition for ptrdiff_t in zutil.h [Mai, Truta] +- Support shared libraries on Hurd and KFreeBSD [Brown] +- Fix error in NO_DIVIDE option of adler32.c + +Changes in 1.2.0.8 (4 November 2003) +- Update version in contrib/delphi/ZLib.pas and contrib/pascal/zlibpas.pas +- Add experimental NO_DIVIDE #define in adler32.c + - Possibly faster on some processors (let me know if it is) +- Correct Z_BLOCK to not return on first inflate call if no wrap +- Fix strm->data_type on inflate() return to correctly indicate EOB +- Add deflatePrime() function for appending in the middle of a byte +- Add contrib/gzappend for an example of appending to a stream +- Update win32/DLL_FAQ.txt [Truta] +- Delete Turbo C comment in README [Truta] +- Improve some indentation in zconf.h [Truta] +- Fix infinite loop on bad input in configure script [Church] +- Fix gzeof() for concatenated gzip files [Johnson] +- Add example to contrib/visual-basic.txt [Michael B.] +- Add -p to mkdir's in Makefile.in [vda] +- Fix configure to properly detect presence or lack of printf functions +- Add AS400 support [Monnerat] +- Add a little Cygwin support [Wilson] + +Changes in 1.2.0.7 (21 September 2003) +- Correct some debug formats in contrib/infback9 +- Cast a type in a debug statement in trees.c +- Change search and replace delimiter in configure from % to # [Beebe] +- Update contrib/untgz to 0.2 with various fixes [Truta] +- Add build support for Amiga [Nikl] +- Remove some directories in old that have been updated to 1.2 +- Add dylib building for Mac OS X in configure and Makefile.in +- Remove old distribution stuff from Makefile +- Update README to point to DLL_FAQ.txt, and add comment on Mac OS X +- Update links in README + +Changes in 1.2.0.6 (13 September 2003) +- Minor FAQ updates +- Update contrib/minizip to 1.00 [Vollant] +- Remove test of gz functions in example.c when GZ_COMPRESS defined [Truta] +- Update POSTINC comment for 68060 [Nikl] +- Add contrib/infback9 with deflate64 decoding (unsupported) +- For MVS define NO_vsnprintf and undefine FAR [van Burik] +- Add pragma for fdopen on MVS [van Burik] + +Changes in 1.2.0.5 (8 September 2003) +- Add OF to inflateBackEnd() declaration in zlib.h +- Remember start when using gzdopen in the middle of a file +- Use internal off_t counters in gz* functions to properly handle seeks +- Perform more rigorous check for distance-too-far in inffast.c +- Add Z_BLOCK flush option to return from inflate at block boundary +- Set strm->data_type on return from inflate + - Indicate bits unused, if at block boundary, and if in last block +- Replace size_t with ptrdiff_t in crc32.c, and check for correct size +- Add condition so old NO_DEFLATE define still works for compatibility +- FAQ update regarding the Windows DLL [Truta] +- INDEX update: add qnx entry, remove aix entry [Truta] +- Install zlib.3 into mandir [Wilson] +- Move contrib/zlib_dll_FAQ.txt to win32/DLL_FAQ.txt; update [Truta] +- Adapt the zlib interface to the new DLL convention guidelines [Truta] +- Introduce ZLIB_WINAPI macro to allow the export of functions using + the WINAPI calling convention, for Visual Basic [Vollant, Truta] +- Update msdos and win32 scripts and makefiles [Truta] +- Export symbols by name, not by ordinal, in win32/zlib.def [Truta] +- Add contrib/ada [Anisimkov] +- Move asm files from contrib/vstudio/vc70_32 to contrib/asm386 [Truta] +- Rename contrib/asm386 to contrib/masmx86 [Truta, Vollant] +- Add contrib/masm686 [Truta] +- Fix offsets in contrib/inflate86 and contrib/masmx86/inffas32.asm + [Truta, Vollant] +- Update contrib/delphi; rename to contrib/pascal; add example [Truta] +- Remove contrib/delphi2; add a new contrib/delphi [Truta] +- Avoid inclusion of the nonstandard in contrib/iostream, + and fix some method prototypes [Truta] +- Fix the ZCR_SEED2 constant to avoid warnings in contrib/minizip + [Truta] +- Avoid the use of backslash (\) in contrib/minizip [Vollant] +- Fix file time handling in contrib/untgz; update makefiles [Truta] +- Update contrib/vstudio/vc70_32 to comply with the new DLL guidelines + [Vollant] +- Remove contrib/vstudio/vc15_16 [Vollant] +- Rename contrib/vstudio/vc70_32 to contrib/vstudio/vc7 [Truta] +- Update README.contrib [Truta] +- Invert the assignment order of match_head and s->prev[...] in + INSERT_STRING [Truta] +- Compare TOO_FAR with 32767 instead of 32768, to avoid 16-bit warnings + [Truta] +- Compare function pointers with 0, not with NULL or Z_NULL [Truta] +- Fix prototype of syncsearch in inflate.c [Truta] +- Introduce ASMINF macro to be enabled when using an ASM implementation + of inflate_fast [Truta] +- Change NO_DEFLATE to NO_GZCOMPRESS [Truta] +- Modify test_gzio in example.c to take a single file name as a + parameter [Truta] +- Exit the example.c program if gzopen fails [Truta] +- Add type casts around strlen in example.c [Truta] +- Remove casting to sizeof in minigzip.c; give a proper type + to the variable compared with SUFFIX_LEN [Truta] +- Update definitions of STDC and STDC99 in zconf.h [Truta] +- Synchronize zconf.h with the new Windows DLL interface [Truta] +- Use SYS16BIT instead of __32BIT__ to distinguish between + 16- and 32-bit platforms [Truta] +- Use far memory allocators in small 16-bit memory models for + Turbo C [Truta] +- Add info about the use of ASMV, ASMINF and ZLIB_WINAPI in + zlibCompileFlags [Truta] +- Cygwin has vsnprintf [Wilson] +- In Windows16, OS_CODE is 0, as in MSDOS [Truta] +- In Cygwin, OS_CODE is 3 (Unix), not 11 (Windows32) [Wilson] + +Changes in 1.2.0.4 (10 August 2003) +- Minor FAQ updates +- Be more strict when checking inflateInit2's windowBits parameter +- Change NO_GUNZIP compile option to NO_GZIP to cover deflate as well +- Add gzip wrapper option to deflateInit2 using windowBits +- Add updated QNX rule in configure and qnx directory [Bonnefoy] +- Make inflate distance-too-far checks more rigorous +- Clean up FAR usage in inflate +- Add casting to sizeof() in gzio.c and minigzip.c + +Changes in 1.2.0.3 (19 July 2003) +- Fix silly error in gzungetc() implementation [Vollant] +- Update contrib/minizip and contrib/vstudio [Vollant] +- Fix printf format in example.c +- Correct cdecl support in zconf.in.h [Anisimkov] +- Minor FAQ updates + +Changes in 1.2.0.2 (13 July 2003) +- Add ZLIB_VERNUM in zlib.h for numerical preprocessor comparisons +- Attempt to avoid warnings in crc32.c for pointer-int conversion +- Add AIX to configure, remove aix directory [Bakker] +- Add some casts to minigzip.c +- Improve checking after insecure sprintf() or vsprintf() calls +- Remove #elif's from crc32.c +- Change leave label to inf_leave in inflate.c and infback.c to avoid + library conflicts +- Remove inflate gzip decoding by default--only enable gzip decoding by + special request for stricter backward compatibility +- Add zlibCompileFlags() function to return compilation information +- More typecasting in deflate.c to avoid warnings +- Remove leading underscore from _Capital #defines [Truta] +- Fix configure to link shared library when testing +- Add some Windows CE target adjustments [Mai] +- Remove #define ZLIB_DLL in zconf.h [Vollant] +- Add zlib.3 [Rodgers] +- Update RFC URL in deflate.c and algorithm.txt [Mai] +- Add zlib_dll_FAQ.txt to contrib [Truta] +- Add UL to some constants [Truta] +- Update minizip and vstudio [Vollant] +- Remove vestigial NEED_DUMMY_RETURN from zconf.in.h +- Expand use of NO_DUMMY_DECL to avoid all dummy structures +- Added iostream3 to contrib [Schwardt] +- Replace rewind() with fseek() for WinCE [Truta] +- Improve setting of zlib format compression level flags + - Report 0 for huffman and rle strategies and for level == 0 or 1 + - Report 2 only for level == 6 +- Only deal with 64K limit when necessary at compile time [Truta] +- Allow TOO_FAR check to be turned off at compile time [Truta] +- Add gzclearerr() function [Souza] +- Add gzungetc() function + +Changes in 1.2.0.1 (17 March 2003) +- Add Z_RLE strategy for run-length encoding [Truta] + - When Z_RLE requested, restrict matches to distance one + - Update zlib.h, minigzip.c, gzopen(), gzdopen() for Z_RLE +- Correct FASTEST compilation to allow level == 0 +- Clean up what gets compiled for FASTEST +- Incorporate changes to zconf.in.h [Vollant] + - Refine detection of Turbo C need for dummy returns + - Refine ZLIB_DLL compilation + - Include additional header file on VMS for off_t typedef +- Try to use _vsnprintf where it supplants vsprintf [Vollant] +- Add some casts in inffast.c +- Enchance comments in zlib.h on what happens if gzprintf() tries to + write more than 4095 bytes before compression +- Remove unused state from inflateBackEnd() +- Remove exit(0) from minigzip.c, example.c +- Get rid of all those darn tabs +- Add "check" target to Makefile.in that does the same thing as "test" +- Add "mostlyclean" and "maintainer-clean" targets to Makefile.in +- Update contrib/inflate86 [Anderson] +- Update contrib/testzlib, contrib/vstudio, contrib/minizip [Vollant] +- Add msdos and win32 directories with makefiles [Truta] +- More additions and improvements to the FAQ + +Changes in 1.2.0 (9 March 2003) +- New and improved inflate code + - About 20% faster + - Does not allocate 32K window unless and until needed + - Automatically detects and decompresses gzip streams + - Raw inflate no longer needs an extra dummy byte at end + - Added inflateBack functions using a callback interface--even faster + than inflate, useful for file utilities (gzip, zip) + - Added inflateCopy() function to record state for random access on + externally generated deflate streams (e.g. in gzip files) + - More readable code (I hope) +- New and improved crc32() + - About 50% faster, thanks to suggestions from Rodney Brown +- Add deflateBound() and compressBound() functions +- Fix memory leak in deflateInit2() +- Permit setting dictionary for raw deflate (for parallel deflate) +- Fix const declaration for gzwrite() +- Check for some malloc() failures in gzio.c +- Fix bug in gzopen() on single-byte file 0x1f +- Fix bug in gzread() on concatenated file with 0x1f at end of buffer + and next buffer doesn't start with 0x8b +- Fix uncompress() to return Z_DATA_ERROR on truncated input +- Free memory at end of example.c +- Remove MAX #define in trees.c (conflicted with some libraries) +- Fix static const's in deflate.c, gzio.c, and zutil.[ch] +- Declare malloc() and free() in gzio.c if STDC not defined +- Use malloc() instead of calloc() in zutil.c if int big enough +- Define STDC for AIX +- Add aix/ with approach for compiling shared library on AIX +- Add HP-UX support for shared libraries in configure +- Add OpenUNIX support for shared libraries in configure +- Use $cc instead of gcc to build shared library +- Make prefix directory if needed when installing +- Correct Macintosh avoidance of typedef Byte in zconf.h +- Correct Turbo C memory allocation when under Linux +- Use libz.a instead of -lz in Makefile (assure use of compiled library) +- Update configure to check for snprintf or vsnprintf functions and their + return value, warn during make if using an insecure function +- Fix configure problem with compile-time knowledge of HAVE_UNISTD_H that + is lost when library is used--resolution is to build new zconf.h +- Documentation improvements (in zlib.h): + - Document raw deflate and inflate + - Update RFCs URL + - Point out that zlib and gzip formats are different + - Note that Z_BUF_ERROR is not fatal + - Document string limit for gzprintf() and possible buffer overflow + - Note requirement on avail_out when flushing + - Note permitted values of flush parameter of inflate() +- Add some FAQs (and even answers) to the FAQ +- Add contrib/inflate86/ for x86 faster inflate +- Add contrib/blast/ for PKWare Data Compression Library decompression +- Add contrib/puff/ simple inflate for deflate format description + +Changes in 1.1.4 (11 March 2002) +- ZFREE was repeated on same allocation on some error conditions. + This creates a security problem described in + http://www.zlib.org/advisory-2002-03-11.txt +- Returned incorrect error (Z_MEM_ERROR) on some invalid data +- Avoid accesses before window for invalid distances with inflate window + less than 32K. +- force windowBits > 8 to avoid a bug in the encoder for a window size + of 256 bytes. (A complete fix will be available in 1.1.5). + +Changes in 1.1.3 (9 July 1998) +- fix "an inflate input buffer bug that shows up on rare but persistent + occasions" (Mark) +- fix gzread and gztell for concatenated .gz files (Didier Le Botlan) +- fix gzseek(..., SEEK_SET) in write mode +- fix crc check after a gzeek (Frank Faubert) +- fix miniunzip when the last entry in a zip file is itself a zip file + (J Lillge) +- add contrib/asm586 and contrib/asm686 (Brian Raiter) + See http://www.muppetlabs.com/~breadbox/software/assembly.html +- add support for Delphi 3 in contrib/delphi (Bob Dellaca) +- add support for C++Builder 3 and Delphi 3 in contrib/delphi2 (Davide Moretti) +- do not exit prematurely in untgz if 0 at start of block (Magnus Holmgren) +- use macro EXTERN instead of extern to support DLL for BeOS (Sander Stoks) +- added a FAQ file + +- Support gzdopen on Mac with Metrowerks (Jason Linhart) +- Do not redefine Byte on Mac (Brad Pettit & Jason Linhart) +- define SEEK_END too if SEEK_SET is not defined (Albert Chin-A-Young) +- avoid some warnings with Borland C (Tom Tanner) +- fix a problem in contrib/minizip/zip.c for 16-bit MSDOS (Gilles Vollant) +- emulate utime() for WIN32 in contrib/untgz (Gilles Vollant) +- allow several arguments to configure (Tim Mooney, Frodo Looijaard) +- use libdir and includedir in Makefile.in (Tim Mooney) +- support shared libraries on OSF1 V4 (Tim Mooney) +- remove so_locations in "make clean" (Tim Mooney) +- fix maketree.c compilation error (Glenn, Mark) +- Python interface to zlib now in Python 1.5 (Jeremy Hylton) +- new Makefile.riscos (Rich Walker) +- initialize static descriptors in trees.c for embedded targets (Nick Smith) +- use "foo-gz" in example.c for RISCOS and VMS (Nick Smith) +- add the OS/2 files in Makefile.in too (Andrew Zabolotny) +- fix fdopen and halloc macros for Microsoft C 6.0 (Tom Lane) +- fix maketree.c to allow clean compilation of inffixed.h (Mark) +- fix parameter check in deflateCopy (Gunther Nikl) +- cleanup trees.c, use compressed_len only in debug mode (Christian Spieler) +- Many portability patches by Christian Spieler: + . zutil.c, zutil.h: added "const" for zmem* + . Make_vms.com: fixed some typos + . Make_vms.com: msdos/Makefile.*: removed zutil.h from some dependency lists + . msdos/Makefile.msc: remove "default rtl link library" info from obj files + . msdos/Makefile.*: use model-dependent name for the built zlib library + . msdos/Makefile.emx, nt/Makefile.emx, nt/Makefile.gcc: + new makefiles, for emx (DOS/OS2), emx&rsxnt and mingw32 (Windows 9x / NT) +- use define instead of typedef for Bytef also for MSC small/medium (Tom Lane) +- replace __far with _far for better portability (Christian Spieler, Tom Lane) +- fix test for errno.h in configure (Tim Newsham) + +Changes in 1.1.2 (19 March 98) +- added contrib/minzip, mini zip and unzip based on zlib (Gilles Vollant) + See http://www.winimage.com/zLibDll/unzip.html +- preinitialize the inflate tables for fixed codes, to make the code + completely thread safe (Mark) +- some simplifications and slight speed-up to the inflate code (Mark) +- fix gzeof on non-compressed files (Allan Schrum) +- add -std1 option in configure for OSF1 to fix gzprintf (Martin Mokrejs) +- use default value of 4K for Z_BUFSIZE for 16-bit MSDOS (Tim Wegner + Glenn) +- added os2/Makefile.def and os2/zlib.def (Andrew Zabolotny) +- add shared lib support for UNIX_SV4.2MP (MATSUURA Takanori) +- do not wrap extern "C" around system includes (Tom Lane) +- mention zlib binding for TCL in README (Andreas Kupries) +- added amiga/Makefile.pup for Amiga powerUP SAS/C PPC (Andreas Kleinert) +- allow "make install prefix=..." even after configure (Glenn Randers-Pehrson) +- allow "configure --prefix $HOME" (Tim Mooney) +- remove warnings in example.c and gzio.c (Glenn Randers-Pehrson) +- move Makefile.sas to amiga/Makefile.sas + +Changes in 1.1.1 (27 Feb 98) +- fix macros _tr_tally_* in deflate.h for debug mode (Glenn Randers-Pehrson) +- remove block truncation heuristic which had very marginal effect for zlib + (smaller lit_bufsize than in gzip 1.2.4) and degraded a little the + compression ratio on some files. This also allows inlining _tr_tally for + matches in deflate_slow. +- added msdos/Makefile.w32 for WIN32 Microsoft Visual C++ (Bob Frazier) + +Changes in 1.1.0 (24 Feb 98) +- do not return STREAM_END prematurely in inflate (John Bowler) +- revert to the zlib 1.0.8 inflate to avoid the gcc 2.8.0 bug (Jeremy Buhler) +- compile with -DFASTEST to get compression code optimized for speed only +- in minigzip, try mmap'ing the input file first (Miguel Albrecht) +- increase size of I/O buffers in minigzip.c and gzio.c (not a big gain + on Sun but significant on HP) + +- add a pointer to experimental unzip library in README (Gilles Vollant) +- initialize variable gcc in configure (Chris Herborth) + +Changes in 1.0.9 (17 Feb 1998) +- added gzputs and gzgets functions +- do not clear eof flag in gzseek (Mark Diekhans) +- fix gzseek for files in transparent mode (Mark Diekhans) +- do not assume that vsprintf returns the number of bytes written (Jens Krinke) +- replace EXPORT with ZEXPORT to avoid conflict with other programs +- added compress2 in zconf.h, zlib.def, zlib.dnt +- new asm code from Gilles Vollant in contrib/asm386 +- simplify the inflate code (Mark): + . Replace ZALLOC's in huft_build() with single ZALLOC in inflate_blocks_new() + . ZALLOC the length list in inflate_trees_fixed() instead of using stack + . ZALLOC the value area for huft_build() instead of using stack + . Simplify Z_FINISH check in inflate() + +- Avoid gcc 2.8.0 comparison bug a little differently than zlib 1.0.8 +- in inftrees.c, avoid cc -O bug on HP (Farshid Elahi) +- in zconf.h move the ZLIB_DLL stuff earlier to avoid problems with + the declaration of FAR (Gilles VOllant) +- install libz.so* with mode 755 (executable) instead of 644 (Marc Lehmann) +- read_buf buf parameter of type Bytef* instead of charf* +- zmemcpy parameters are of type Bytef*, not charf* (Joseph Strout) +- do not redeclare unlink in minigzip.c for WIN32 (John Bowler) +- fix check for presence of directories in "make install" (Ian Willis) + +Changes in 1.0.8 (27 Jan 1998) +- fixed offsets in contrib/asm386/gvmat32.asm (Gilles Vollant) +- fix gzgetc and gzputc for big endian systems (Markus Oberhumer) +- added compress2() to allow setting the compression level +- include sys/types.h to get off_t on some systems (Marc Lehmann & QingLong) +- use constant arrays for the static trees in trees.c instead of computing + them at run time (thanks to Ken Raeburn for this suggestion). To create + trees.h, compile with GEN_TREES_H and run "make test". +- check return code of example in "make test" and display result +- pass minigzip command line options to file_compress +- simplifying code of inflateSync to avoid gcc 2.8 bug + +- support CC="gcc -Wall" in configure -s (QingLong) +- avoid a flush caused by ftell in gzopen for write mode (Ken Raeburn) +- fix test for shared library support to avoid compiler warnings +- zlib.lib -> zlib.dll in msdos/zlib.rc (Gilles Vollant) +- check for TARGET_OS_MAC in addition to MACOS (Brad Pettit) +- do not use fdopen for Metrowerks on Mac (Brad Pettit)) +- add checks for gzputc and gzputc in example.c +- avoid warnings in gzio.c and deflate.c (Andreas Kleinert) +- use const for the CRC table (Ken Raeburn) +- fixed "make uninstall" for shared libraries +- use Tracev instead of Trace in infblock.c +- in example.c use correct compressed length for test_sync +- suppress +vnocompatwarnings in configure for HPUX (not always supported) + +Changes in 1.0.7 (20 Jan 1998) +- fix gzseek which was broken in write mode +- return error for gzseek to negative absolute position +- fix configure for Linux (Chun-Chung Chen) +- increase stack space for MSC (Tim Wegner) +- get_crc_table and inflateSyncPoint are EXPORTed (Gilles Vollant) +- define EXPORTVA for gzprintf (Gilles Vollant) +- added man page zlib.3 (Rick Rodgers) +- for contrib/untgz, fix makedir() and improve Makefile + +- check gzseek in write mode in example.c +- allocate extra buffer for seeks only if gzseek is actually called +- avoid signed/unsigned comparisons (Tim Wegner, Gilles Vollant) +- add inflateSyncPoint in zconf.h +- fix list of exported functions in nt/zlib.dnt and mdsos/zlib.def + +Changes in 1.0.6 (19 Jan 1998) +- add functions gzprintf, gzputc, gzgetc, gztell, gzeof, gzseek, gzrewind and + gzsetparams (thanks to Roland Giersig and Kevin Ruland for some of this code) +- Fix a deflate bug occurring only with compression level 0 (thanks to + Andy Buckler for finding this one). +- In minigzip, pass transparently also the first byte for .Z files. +- return Z_BUF_ERROR instead of Z_OK if output buffer full in uncompress() +- check Z_FINISH in inflate (thanks to Marc Schluper) +- Implement deflateCopy (thanks to Adam Costello) +- make static libraries by default in configure, add --shared option. +- move MSDOS or Windows specific files to directory msdos +- suppress the notion of partial flush to simplify the interface + (but the symbol Z_PARTIAL_FLUSH is kept for compatibility with 1.0.4) +- suppress history buffer provided by application to simplify the interface + (this feature was not implemented anyway in 1.0.4) +- next_in and avail_in must be initialized before calling inflateInit or + inflateInit2 +- add EXPORT in all exported functions (for Windows DLL) +- added Makefile.nt (thanks to Stephen Williams) +- added the unsupported "contrib" directory: + contrib/asm386/ by Gilles Vollant + 386 asm code replacing longest_match(). + contrib/iostream/ by Kevin Ruland + A C++ I/O streams interface to the zlib gz* functions + contrib/iostream2/ by Tyge Løvset + Another C++ I/O streams interface + contrib/untgz/ by "Pedro A. Aranda Guti\irrez" + A very simple tar.gz file extractor using zlib + contrib/visual-basic.txt by Carlos Rios + How to use compress(), uncompress() and the gz* functions from VB. +- pass params -f (filtered data), -h (huffman only), -1 to -9 (compression + level) in minigzip (thanks to Tom Lane) + +- use const for rommable constants in deflate +- added test for gzseek and gztell in example.c +- add undocumented function inflateSyncPoint() (hack for Paul Mackerras) +- add undocumented function zError to convert error code to string + (for Tim Smithers) +- Allow compilation of gzio with -DNO_DEFLATE to avoid the compression code. +- Use default memcpy for Symantec MSDOS compiler. +- Add EXPORT keyword for check_func (needed for Windows DLL) +- add current directory to LD_LIBRARY_PATH for "make test" +- create also a link for libz.so.1 +- added support for FUJITSU UXP/DS (thanks to Toshiaki Nomura) +- use $(SHAREDLIB) instead of libz.so in Makefile.in (for HPUX) +- added -soname for Linux in configure (Chun-Chung Chen, +- assign numbers to the exported functions in zlib.def (for Windows DLL) +- add advice in zlib.h for best usage of deflateSetDictionary +- work around compiler bug on Atari (cast Z_NULL in call of s->checkfn) +- allow compilation with ANSI keywords only enabled for TurboC in large model +- avoid "versionString"[0] (Borland bug) +- add NEED_DUMMY_RETURN for Borland +- use variable z_verbose for tracing in debug mode (L. Peter Deutsch). +- allow compilation with CC +- defined STDC for OS/2 (David Charlap) +- limit external names to 8 chars for MVS (Thomas Lund) +- in minigzip.c, use static buffers only for 16-bit systems +- fix suffix check for "minigzip -d foo.gz" +- do not return an error for the 2nd of two consecutive gzflush() (Felix Lee) +- use _fdopen instead of fdopen for MSC >= 6.0 (Thomas Fanslau) +- added makelcc.bat for lcc-win32 (Tom St Denis) +- in Makefile.dj2, use copy and del instead of install and rm (Frank Donahoe) +- Avoid expanded $Id$. Use "rcs -kb" or "cvs admin -kb" to avoid Id expansion. +- check for unistd.h in configure (for off_t) +- remove useless check parameter in inflate_blocks_free +- avoid useless assignment of s->check to itself in inflate_blocks_new +- do not flush twice in gzclose (thanks to Ken Raeburn) +- rename FOPEN as F_OPEN to avoid clash with /usr/include/sys/file.h +- use NO_ERRNO_H instead of enumeration of operating systems with errno.h +- work around buggy fclose on pipes for HP/UX +- support zlib DLL with BORLAND C++ 5.0 (thanks to Glenn Randers-Pehrson) +- fix configure if CC is already equal to gcc + +Changes in 1.0.5 (3 Jan 98) +- Fix inflate to terminate gracefully when fed corrupted or invalid data +- Use const for rommable constants in inflate +- Eliminate memory leaks on error conditions in inflate +- Removed some vestigial code in inflate +- Update web address in README + +Changes in 1.0.4 (24 Jul 96) +- In very rare conditions, deflate(s, Z_FINISH) could fail to produce an EOF + bit, so the decompressor could decompress all the correct data but went + on to attempt decompressing extra garbage data. This affected minigzip too. +- zlibVersion and gzerror return const char* (needed for DLL) +- port to RISCOS (no fdopen, no multiple dots, no unlink, no fileno) +- use z_error only for DEBUG (avoid problem with DLLs) + +Changes in 1.0.3 (2 Jul 96) +- use z_streamp instead of z_stream *, which is now a far pointer in MSDOS + small and medium models; this makes the library incompatible with previous + versions for these models. (No effect in large model or on other systems.) +- return OK instead of BUF_ERROR if previous deflate call returned with + avail_out as zero but there is nothing to do +- added memcmp for non STDC compilers +- define NO_DUMMY_DECL for more Mac compilers (.h files merged incorrectly) +- define __32BIT__ if __386__ or i386 is defined (pb. with Watcom and SCO) +- better check for 16-bit mode MSC (avoids problem with Symantec) + +Changes in 1.0.2 (23 May 96) +- added Windows DLL support +- added a function zlibVersion (for the DLL support) +- fixed declarations using Bytef in infutil.c (pb with MSDOS medium model) +- Bytef is define's instead of typedef'd only for Borland C +- avoid reading uninitialized memory in example.c +- mention in README that the zlib format is now RFC1950 +- updated Makefile.dj2 +- added algorithm.doc + +Changes in 1.0.1 (20 May 96) [1.0 skipped to avoid confusion] +- fix array overlay in deflate.c which sometimes caused bad compressed data +- fix inflate bug with empty stored block +- fix MSDOS medium model which was broken in 0.99 +- fix deflateParams() which could generate bad compressed data. +- Bytef is define'd instead of typedef'ed (work around Borland bug) +- added an INDEX file +- new makefiles for DJGPP (Makefile.dj2), 32-bit Borland (Makefile.b32), + Watcom (Makefile.wat), Amiga SAS/C (Makefile.sas) +- speed up adler32 for modern machines without auto-increment +- added -ansi for IRIX in configure +- static_init_done in trees.c is an int +- define unlink as delete for VMS +- fix configure for QNX +- add configure branch for SCO and HPUX +- avoid many warnings (unused variables, dead assignments, etc...) +- no fdopen for BeOS +- fix the Watcom fix for 32 bit mode (define FAR as empty) +- removed redefinition of Byte for MKWERKS +- work around an MWKERKS bug (incorrect merge of all .h files) + +Changes in 0.99 (27 Jan 96) +- allow preset dictionary shared between compressor and decompressor +- allow compression level 0 (no compression) +- add deflateParams in zlib.h: allow dynamic change of compression level + and compression strategy. +- test large buffers and deflateParams in example.c +- add optional "configure" to build zlib as a shared library +- suppress Makefile.qnx, use configure instead +- fixed deflate for 64-bit systems (detected on Cray) +- fixed inflate_blocks for 64-bit systems (detected on Alpha) +- declare Z_DEFLATED in zlib.h (possible parameter for deflateInit2) +- always return Z_BUF_ERROR when deflate() has nothing to do +- deflateInit and inflateInit are now macros to allow version checking +- prefix all global functions and types with z_ with -DZ_PREFIX +- make falloc completely reentrant (inftrees.c) +- fixed very unlikely race condition in ct_static_init +- free in reverse order of allocation to help memory manager +- use zlib-1.0/* instead of zlib/* inside the tar.gz +- make zlib warning-free with "gcc -O3 -Wall -Wwrite-strings -Wpointer-arith + -Wconversion -Wstrict-prototypes -Wmissing-prototypes" +- allow gzread on concatenated .gz files +- deflateEnd now returns Z_DATA_ERROR if it was premature +- deflate is finally (?) fully deterministic (no matches beyond end of input) +- Document Z_SYNC_FLUSH +- add uninstall in Makefile +- Check for __cpluplus in zlib.h +- Better test in ct_align for partial flush +- avoid harmless warnings for Borland C++ +- initialize hash_head in deflate.c +- avoid warning on fdopen (gzio.c) for HP cc -Aa +- include stdlib.h for STDC compilers +- include errno.h for Cray +- ignore error if ranlib doesn't exist +- call ranlib twice for NeXTSTEP +- use exec_prefix instead of prefix for libz.a +- renamed ct_* as _tr_* to avoid conflict with applications +- clear z->msg in inflateInit2 before any error return +- initialize opaque in example.c, gzio.c, deflate.c and inflate.c +- fixed typo in zconf.h (_GNUC__ => __GNUC__) +- check for WIN32 in zconf.h and zutil.c (avoid farmalloc in 32-bit mode) +- fix typo in Make_vms.com (f$trnlnm -> f$getsyi) +- in fcalloc, normalize pointer if size > 65520 bytes +- don't use special fcalloc for 32 bit Borland C++ +- use STDC instead of __GO32__ to avoid redeclaring exit, calloc, etc... +- use Z_BINARY instead of BINARY +- document that gzclose after gzdopen will close the file +- allow "a" as mode in gzopen. +- fix error checking in gzread +- allow skipping .gz extra-field on pipes +- added reference to Perl interface in README +- put the crc table in FAR data (I dislike more and more the medium model :) +- added get_crc_table +- added a dimension to all arrays (Borland C can't count). +- workaround Borland C bug in declaration of inflate_codes_new & inflate_fast +- guard against multiple inclusion of *.h (for precompiled header on Mac) +- Watcom C pretends to be Microsoft C small model even in 32 bit mode. +- don't use unsized arrays to avoid silly warnings by Visual C++: + warning C4746: 'inflate_mask' : unsized array treated as '__far' + (what's wrong with far data in far model?). +- define enum out of inflate_blocks_state to allow compilation with C++ + +Changes in 0.95 (16 Aug 95) +- fix MSDOS small and medium model (now easier to adapt to any compiler) +- inlined send_bits +- fix the final (:-) bug for deflate with flush (output was correct but + not completely flushed in rare occasions). +- default window size is same for compression and decompression + (it's now sufficient to set MAX_WBITS in zconf.h). +- voidp -> voidpf and voidnp -> voidp (for consistency with other + typedefs and because voidnp was not near in large model). + +Changes in 0.94 (13 Aug 95) +- support MSDOS medium model +- fix deflate with flush (could sometimes generate bad output) +- fix deflateReset (zlib header was incorrectly suppressed) +- added support for VMS +- allow a compression level in gzopen() +- gzflush now calls fflush +- For deflate with flush, flush even if no more input is provided. +- rename libgz.a as libz.a +- avoid complex expression in infcodes.c triggering Turbo C bug +- work around a problem with gcc on Alpha (in INSERT_STRING) +- don't use inline functions (problem with some gcc versions) +- allow renaming of Byte, uInt, etc... with #define. +- avoid warning about (unused) pointer before start of array in deflate.c +- avoid various warnings in gzio.c, example.c, infblock.c, adler32.c, zutil.c +- avoid reserved word 'new' in trees.c + +Changes in 0.93 (25 June 95) +- temporarily disable inline functions +- make deflate deterministic +- give enough lookahead for PARTIAL_FLUSH +- Set binary mode for stdin/stdout in minigzip.c for OS/2 +- don't even use signed char in inflate (not portable enough) +- fix inflate memory leak for segmented architectures + +Changes in 0.92 (3 May 95) +- don't assume that char is signed (problem on SGI) +- Clear bit buffer when starting a stored block +- no memcpy on Pyramid +- suppressed inftest.c +- optimized fill_window, put longest_match inline for gcc +- optimized inflate on stored blocks. +- untabify all sources to simplify patches + +Changes in 0.91 (2 May 95) +- Default MEM_LEVEL is 8 (not 9 for Unix) as documented in zlib.h +- Document the memory requirements in zconf.h +- added "make install" +- fix sync search logic in inflateSync +- deflate(Z_FULL_FLUSH) now works even if output buffer too short +- after inflateSync, don't scare people with just "lo world" +- added support for DJGPP + +Changes in 0.9 (1 May 95) +- don't assume that zalloc clears the allocated memory (the TurboC bug + was Mark's bug after all :) +- let again gzread copy uncompressed data unchanged (was working in 0.71) +- deflate(Z_FULL_FLUSH), inflateReset and inflateSync are now fully implemented +- added a test of inflateSync in example.c +- moved MAX_WBITS to zconf.h because users might want to change that. +- document explicitly that zalloc(64K) on MSDOS must return a normalized + pointer (zero offset) +- added Makefiles for Microsoft C, Turbo C, Borland C++ +- faster crc32() + +Changes in 0.8 (29 April 95) +- added fast inflate (inffast.c) +- deflate(Z_FINISH) now returns Z_STREAM_END when done. Warning: this + is incompatible with previous versions of zlib which returned Z_OK. +- work around a TurboC compiler bug (bad code for b << 0, see infutil.h) + (actually that was not a compiler bug, see 0.81 above) +- gzread no longer reads one extra byte in certain cases +- In gzio destroy(), don't reference a freed structure +- avoid many warnings for MSDOS +- avoid the ERROR symbol which is used by MS Windows + +Changes in 0.71 (14 April 95) +- Fixed more MSDOS compilation problems :( There is still a bug with + TurboC large model. + +Changes in 0.7 (14 April 95) +- Added full inflate support. +- Simplified the crc32() interface. The pre- and post-conditioning + (one's complement) is now done inside crc32(). WARNING: this is + incompatible with previous versions; see zlib.h for the new usage. + +Changes in 0.61 (12 April 95) +- workaround for a bug in TurboC. example and minigzip now work on MSDOS. + +Changes in 0.6 (11 April 95) +- added minigzip.c +- added gzdopen to reopen a file descriptor as gzFile +- added transparent reading of non-gziped files in gzread. +- fixed bug in gzread (don't read crc as data) +- fixed bug in destroy (gzio.c) (don't return Z_STREAM_END for gzclose). +- don't allocate big arrays in the stack (for MSDOS) +- fix some MSDOS compilation problems + +Changes in 0.5: +- do real compression in deflate.c. Z_PARTIAL_FLUSH is supported but + not yet Z_FULL_FLUSH. +- support decompression but only in a single step (forced Z_FINISH) +- added opaque object for zalloc and zfree. +- added deflateReset and inflateReset +- added a variable zlib_version for consistency checking. +- renamed the 'filter' parameter of deflateInit2 as 'strategy'. + Added Z_FILTERED and Z_HUFFMAN_ONLY constants. + +Changes in 0.4: +- avoid "zip" everywhere, use zlib instead of ziplib. +- suppress Z_BLOCK_FLUSH, interpret Z_PARTIAL_FLUSH as block flush + if compression method == 8. +- added adler32 and crc32 +- renamed deflateOptions as deflateInit2, call one or the other but not both +- added the method parameter for deflateInit2. +- added inflateInit2 +- simplied considerably deflateInit and inflateInit by not supporting + user-provided history buffer. This is supported only in deflateInit2 + and inflateInit2. + +Changes in 0.3: +- prefix all macro names with Z_ +- use Z_FINISH instead of deflateEnd to finish compression. +- added Z_HUFFMAN_ONLY +- added gzerror() diff --git a/waterbox/nyma/zlib/FAQ b/waterbox/nyma/zlib/FAQ new file mode 100644 index 0000000000..99b7cf92e4 --- /dev/null +++ b/waterbox/nyma/zlib/FAQ @@ -0,0 +1,368 @@ + + Frequently Asked Questions about zlib + + +If your question is not there, please check the zlib home page +http://zlib.net/ which may have more recent information. +The lastest zlib FAQ is at http://zlib.net/zlib_faq.html + + + 1. Is zlib Y2K-compliant? + + Yes. zlib doesn't handle dates. + + 2. Where can I get a Windows DLL version? + + The zlib sources can be compiled without change to produce a DLL. See the + file win32/DLL_FAQ.txt in the zlib distribution. Pointers to the + precompiled DLL are found in the zlib web site at http://zlib.net/ . + + 3. Where can I get a Visual Basic interface to zlib? + + See + * http://marknelson.us/1997/01/01/zlib-engine/ + * win32/DLL_FAQ.txt in the zlib distribution + + 4. compress() returns Z_BUF_ERROR. + + Make sure that before the call of compress(), the length of the compressed + buffer is equal to the available size of the compressed buffer and not + zero. For Visual Basic, check that this parameter is passed by reference + ("as any"), not by value ("as long"). + + 5. deflate() or inflate() returns Z_BUF_ERROR. + + Before making the call, make sure that avail_in and avail_out are not zero. + When setting the parameter flush equal to Z_FINISH, also make sure that + avail_out is big enough to allow processing all pending input. Note that a + Z_BUF_ERROR is not fatal--another call to deflate() or inflate() can be + made with more input or output space. A Z_BUF_ERROR may in fact be + unavoidable depending on how the functions are used, since it is not + possible to tell whether or not there is more output pending when + strm.avail_out returns with zero. See http://zlib.net/zlib_how.html for a + heavily annotated example. + + 6. Where's the zlib documentation (man pages, etc.)? + + It's in zlib.h . Examples of zlib usage are in the files test/example.c + and test/minigzip.c, with more in examples/ . + + 7. Why don't you use GNU autoconf or libtool or ...? + + Because we would like to keep zlib as a very small and simple package. + zlib is rather portable and doesn't need much configuration. + + 8. I found a bug in zlib. + + Most of the time, such problems are due to an incorrect usage of zlib. + Please try to reproduce the problem with a small program and send the + corresponding source to us at zlib@gzip.org . Do not send multi-megabyte + data files without prior agreement. + + 9. Why do I get "undefined reference to gzputc"? + + If "make test" produces something like + + example.o(.text+0x154): undefined reference to `gzputc' + + check that you don't have old files libz.* in /usr/lib, /usr/local/lib or + /usr/X11R6/lib. Remove any old versions, then do "make install". + +10. I need a Delphi interface to zlib. + + See the contrib/delphi directory in the zlib distribution. + +11. Can zlib handle .zip archives? + + Not by itself, no. See the directory contrib/minizip in the zlib + distribution. + +12. Can zlib handle .Z files? + + No, sorry. You have to spawn an uncompress or gunzip subprocess, or adapt + the code of uncompress on your own. + +13. How can I make a Unix shared library? + + By default a shared (and a static) library is built for Unix. So: + + make distclean + ./configure + make + +14. How do I install a shared zlib library on Unix? + + After the above, then: + + make install + + However, many flavors of Unix come with a shared zlib already installed. + Before going to the trouble of compiling a shared version of zlib and + trying to install it, you may want to check if it's already there! If you + can #include , it's there. The -lz option will probably link to + it. You can check the version at the top of zlib.h or with the + ZLIB_VERSION symbol defined in zlib.h . + +15. I have a question about OttoPDF. + + We are not the authors of OttoPDF. The real author is on the OttoPDF web + site: Joel Hainley, jhainley@myndkryme.com. + +16. Can zlib decode Flate data in an Adobe PDF file? + + Yes. See http://www.pdflib.com/ . To modify PDF forms, see + http://sourceforge.net/projects/acroformtool/ . + +17. Why am I getting this "register_frame_info not found" error on Solaris? + + After installing zlib 1.1.4 on Solaris 2.6, running applications using zlib + generates an error such as: + + ld.so.1: rpm: fatal: relocation error: file /usr/local/lib/libz.so: + symbol __register_frame_info: referenced symbol not found + + The symbol __register_frame_info is not part of zlib, it is generated by + the C compiler (cc or gcc). You must recompile applications using zlib + which have this problem. This problem is specific to Solaris. See + http://www.sunfreeware.com for Solaris versions of zlib and applications + using zlib. + +18. Why does gzip give an error on a file I make with compress/deflate? + + The compress and deflate functions produce data in the zlib format, which + is different and incompatible with the gzip format. The gz* functions in + zlib on the other hand use the gzip format. Both the zlib and gzip formats + use the same compressed data format internally, but have different headers + and trailers around the compressed data. + +19. Ok, so why are there two different formats? + + The gzip format was designed to retain the directory information about a + single file, such as the name and last modification date. The zlib format + on the other hand was designed for in-memory and communication channel + applications, and has a much more compact header and trailer and uses a + faster integrity check than gzip. + +20. Well that's nice, but how do I make a gzip file in memory? + + You can request that deflate write the gzip format instead of the zlib + format using deflateInit2(). You can also request that inflate decode the + gzip format using inflateInit2(). Read zlib.h for more details. + +21. Is zlib thread-safe? + + Yes. However any library routines that zlib uses and any application- + provided memory allocation routines must also be thread-safe. zlib's gz* + functions use stdio library routines, and most of zlib's functions use the + library memory allocation routines by default. zlib's *Init* functions + allow for the application to provide custom memory allocation routines. + + Of course, you should only operate on any given zlib or gzip stream from a + single thread at a time. + +22. Can I use zlib in my commercial application? + + Yes. Please read the license in zlib.h. + +23. Is zlib under the GNU license? + + No. Please read the license in zlib.h. + +24. The license says that altered source versions must be "plainly marked". So + what exactly do I need to do to meet that requirement? + + You need to change the ZLIB_VERSION and ZLIB_VERNUM #defines in zlib.h. In + particular, the final version number needs to be changed to "f", and an + identification string should be appended to ZLIB_VERSION. Version numbers + x.x.x.f are reserved for modifications to zlib by others than the zlib + maintainers. For example, if the version of the base zlib you are altering + is "1.2.3.4", then in zlib.h you should change ZLIB_VERNUM to 0x123f, and + ZLIB_VERSION to something like "1.2.3.f-zachary-mods-v3". You can also + update the version strings in deflate.c and inftrees.c. + + For altered source distributions, you should also note the origin and + nature of the changes in zlib.h, as well as in ChangeLog and README, along + with the dates of the alterations. The origin should include at least your + name (or your company's name), and an email address to contact for help or + issues with the library. + + Note that distributing a compiled zlib library along with zlib.h and + zconf.h is also a source distribution, and so you should change + ZLIB_VERSION and ZLIB_VERNUM and note the origin and nature of the changes + in zlib.h as you would for a full source distribution. + +25. Will zlib work on a big-endian or little-endian architecture, and can I + exchange compressed data between them? + + Yes and yes. + +26. Will zlib work on a 64-bit machine? + + Yes. It has been tested on 64-bit machines, and has no dependence on any + data types being limited to 32-bits in length. If you have any + difficulties, please provide a complete problem report to zlib@gzip.org + +27. Will zlib decompress data from the PKWare Data Compression Library? + + No. The PKWare DCL uses a completely different compressed data format than + does PKZIP and zlib. However, you can look in zlib's contrib/blast + directory for a possible solution to your problem. + +28. Can I access data randomly in a compressed stream? + + No, not without some preparation. If when compressing you periodically use + Z_FULL_FLUSH, carefully write all the pending data at those points, and + keep an index of those locations, then you can start decompression at those + points. You have to be careful to not use Z_FULL_FLUSH too often, since it + can significantly degrade compression. Alternatively, you can scan a + deflate stream once to generate an index, and then use that index for + random access. See examples/zran.c . + +29. Does zlib work on MVS, OS/390, CICS, etc.? + + It has in the past, but we have not heard of any recent evidence. There + were working ports of zlib 1.1.4 to MVS, but those links no longer work. + If you know of recent, successful applications of zlib on these operating + systems, please let us know. Thanks. + +30. Is there some simpler, easier to read version of inflate I can look at to + understand the deflate format? + + First off, you should read RFC 1951. Second, yes. Look in zlib's + contrib/puff directory. + +31. Does zlib infringe on any patents? + + As far as we know, no. In fact, that was originally the whole point behind + zlib. Look here for some more information: + + http://www.gzip.org/#faq11 + +32. Can zlib work with greater than 4 GB of data? + + Yes. inflate() and deflate() will process any amount of data correctly. + Each call of inflate() or deflate() is limited to input and output chunks + of the maximum value that can be stored in the compiler's "unsigned int" + type, but there is no limit to the number of chunks. Note however that the + strm.total_in and strm_total_out counters may be limited to 4 GB. These + counters are provided as a convenience and are not used internally by + inflate() or deflate(). The application can easily set up its own counters + updated after each call of inflate() or deflate() to count beyond 4 GB. + compress() and uncompress() may be limited to 4 GB, since they operate in a + single call. gzseek() and gztell() may be limited to 4 GB depending on how + zlib is compiled. See the zlibCompileFlags() function in zlib.h. + + The word "may" appears several times above since there is a 4 GB limit only + if the compiler's "long" type is 32 bits. If the compiler's "long" type is + 64 bits, then the limit is 16 exabytes. + +33. Does zlib have any security vulnerabilities? + + The only one that we are aware of is potentially in gzprintf(). If zlib is + compiled to use sprintf() or vsprintf(), then there is no protection + against a buffer overflow of an 8K string space (or other value as set by + gzbuffer()), other than the caller of gzprintf() assuring that the output + will not exceed 8K. On the other hand, if zlib is compiled to use + snprintf() or vsnprintf(), which should normally be the case, then there is + no vulnerability. The ./configure script will display warnings if an + insecure variation of sprintf() will be used by gzprintf(). Also the + zlibCompileFlags() function will return information on what variant of + sprintf() is used by gzprintf(). + + If you don't have snprintf() or vsnprintf() and would like one, you can + find a portable implementation here: + + http://www.ijs.si/software/snprintf/ + + Note that you should be using the most recent version of zlib. Versions + 1.1.3 and before were subject to a double-free vulnerability, and versions + 1.2.1 and 1.2.2 were subject to an access exception when decompressing + invalid compressed data. + +34. Is there a Java version of zlib? + + Probably what you want is to use zlib in Java. zlib is already included + as part of the Java SDK in the java.util.zip package. If you really want + a version of zlib written in the Java language, look on the zlib home + page for links: http://zlib.net/ . + +35. I get this or that compiler or source-code scanner warning when I crank it + up to maximally-pedantic. Can't you guys write proper code? + + Many years ago, we gave up attempting to avoid warnings on every compiler + in the universe. It just got to be a waste of time, and some compilers + were downright silly as well as contradicted each other. So now, we simply + make sure that the code always works. + +36. Valgrind (or some similar memory access checker) says that deflate is + performing a conditional jump that depends on an uninitialized value. + Isn't that a bug? + + No. That is intentional for performance reasons, and the output of deflate + is not affected. This only started showing up recently since zlib 1.2.x + uses malloc() by default for allocations, whereas earlier versions used + calloc(), which zeros out the allocated memory. Even though the code was + correct, versions 1.2.4 and later was changed to not stimulate these + checkers. + +37. Will zlib read the (insert any ancient or arcane format here) compressed + data format? + + Probably not. Look in the comp.compression FAQ for pointers to various + formats and associated software. + +38. How can I encrypt/decrypt zip files with zlib? + + zlib doesn't support encryption. The original PKZIP encryption is very + weak and can be broken with freely available programs. To get strong + encryption, use GnuPG, http://www.gnupg.org/ , which already includes zlib + compression. For PKZIP compatible "encryption", look at + http://www.info-zip.org/ + +39. What's the difference between the "gzip" and "deflate" HTTP 1.1 encodings? + + "gzip" is the gzip format, and "deflate" is the zlib format. They should + probably have called the second one "zlib" instead to avoid confusion with + the raw deflate compressed data format. While the HTTP 1.1 RFC 2616 + correctly points to the zlib specification in RFC 1950 for the "deflate" + transfer encoding, there have been reports of servers and browsers that + incorrectly produce or expect raw deflate data per the deflate + specification in RFC 1951, most notably Microsoft. So even though the + "deflate" transfer encoding using the zlib format would be the more + efficient approach (and in fact exactly what the zlib format was designed + for), using the "gzip" transfer encoding is probably more reliable due to + an unfortunate choice of name on the part of the HTTP 1.1 authors. + + Bottom line: use the gzip format for HTTP 1.1 encoding. + +40. Does zlib support the new "Deflate64" format introduced by PKWare? + + No. PKWare has apparently decided to keep that format proprietary, since + they have not documented it as they have previous compression formats. In + any case, the compression improvements are so modest compared to other more + modern approaches, that it's not worth the effort to implement. + +41. I'm having a problem with the zip functions in zlib, can you help? + + There are no zip functions in zlib. You are probably using minizip by + Giles Vollant, which is found in the contrib directory of zlib. It is not + part of zlib. In fact none of the stuff in contrib is part of zlib. The + files in there are not supported by the zlib authors. You need to contact + the authors of the respective contribution for help. + +42. The match.asm code in contrib is under the GNU General Public License. + Since it's part of zlib, doesn't that mean that all of zlib falls under the + GNU GPL? + + No. The files in contrib are not part of zlib. They were contributed by + other authors and are provided as a convenience to the user within the zlib + distribution. Each item in contrib has its own license. + +43. Is zlib subject to export controls? What is its ECCN? + + zlib is not subject to export controls, and so is classified as EAR99. + +44. Can you please sign these lengthy legal documents and fax them back to us + so that we can use your software in our product? + + No. Go away. Shoo. diff --git a/waterbox/nyma/zlib/Makefile.in b/waterbox/nyma/zlib/Makefile.in new file mode 100644 index 0000000000..5a77949ff0 --- /dev/null +++ b/waterbox/nyma/zlib/Makefile.in @@ -0,0 +1,410 @@ +# Makefile for zlib +# Copyright (C) 1995-2017 Jean-loup Gailly, Mark Adler +# For conditions of distribution and use, see copyright notice in zlib.h + +# To compile and test, type: +# ./configure; make test +# Normally configure builds both a static and a shared library. +# If you want to build just a static library, use: ./configure --static + +# To use the asm code, type: +# cp contrib/asm?86/match.S ./match.S +# make LOC=-DASMV OBJA=match.o + +# To install /usr/local/lib/libz.* and /usr/local/include/zlib.h, type: +# make install +# To install in $HOME instead of /usr/local, use: +# make install prefix=$HOME + +CC=cc + +CFLAGS=-O +#CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7 +#CFLAGS=-g -DZLIB_DEBUG +#CFLAGS=-O3 -Wall -Wwrite-strings -Wpointer-arith -Wconversion \ +# -Wstrict-prototypes -Wmissing-prototypes + +SFLAGS=-O +LDFLAGS= +TEST_LDFLAGS=-L. libz.a +LDSHARED=$(CC) +CPP=$(CC) -E + +STATICLIB=libz.a +SHAREDLIB=libz.so +SHAREDLIBV=libz.so.1.2.11 +SHAREDLIBM=libz.so.1 +LIBS=$(STATICLIB) $(SHAREDLIBV) + +AR=ar +ARFLAGS=rc +RANLIB=ranlib +LDCONFIG=ldconfig +LDSHAREDLIBC=-lc +TAR=tar +SHELL=/bin/sh +EXE= + +prefix = /usr/local +exec_prefix = ${prefix} +libdir = ${exec_prefix}/lib +sharedlibdir = ${libdir} +includedir = ${prefix}/include +mandir = ${prefix}/share/man +man3dir = ${mandir}/man3 +pkgconfigdir = ${libdir}/pkgconfig +SRCDIR= +ZINC= +ZINCOUT=-I. + +OBJZ = adler32.o crc32.o deflate.o infback.o inffast.o inflate.o inftrees.o trees.o zutil.o +OBJG = compress.o uncompr.o gzclose.o gzlib.o gzread.o gzwrite.o +OBJC = $(OBJZ) $(OBJG) + +PIC_OBJZ = adler32.lo crc32.lo deflate.lo infback.lo inffast.lo inflate.lo inftrees.lo trees.lo zutil.lo +PIC_OBJG = compress.lo uncompr.lo gzclose.lo gzlib.lo gzread.lo gzwrite.lo +PIC_OBJC = $(PIC_OBJZ) $(PIC_OBJG) + +# to use the asm code: make OBJA=match.o, PIC_OBJA=match.lo +OBJA = +PIC_OBJA = + +OBJS = $(OBJC) $(OBJA) + +PIC_OBJS = $(PIC_OBJC) $(PIC_OBJA) + +all: static shared + +static: example$(EXE) minigzip$(EXE) + +shared: examplesh$(EXE) minigzipsh$(EXE) + +all64: example64$(EXE) minigzip64$(EXE) + +check: test + +test: all teststatic testshared + +teststatic: static + @TMPST=tmpst_$$; \ + if echo hello world | ./minigzip | ./minigzip -d && ./example $$TMPST ; then \ + echo ' *** zlib test OK ***'; \ + else \ + echo ' *** zlib test FAILED ***'; false; \ + fi; \ + rm -f $$TMPST + +testshared: shared + @LD_LIBRARY_PATH=`pwd`:$(LD_LIBRARY_PATH) ; export LD_LIBRARY_PATH; \ + LD_LIBRARYN32_PATH=`pwd`:$(LD_LIBRARYN32_PATH) ; export LD_LIBRARYN32_PATH; \ + DYLD_LIBRARY_PATH=`pwd`:$(DYLD_LIBRARY_PATH) ; export DYLD_LIBRARY_PATH; \ + SHLIB_PATH=`pwd`:$(SHLIB_PATH) ; export SHLIB_PATH; \ + TMPSH=tmpsh_$$; \ + if echo hello world | ./minigzipsh | ./minigzipsh -d && ./examplesh $$TMPSH; then \ + echo ' *** zlib shared test OK ***'; \ + else \ + echo ' *** zlib shared test FAILED ***'; false; \ + fi; \ + rm -f $$TMPSH + +test64: all64 + @TMP64=tmp64_$$; \ + if echo hello world | ./minigzip64 | ./minigzip64 -d && ./example64 $$TMP64; then \ + echo ' *** zlib 64-bit test OK ***'; \ + else \ + echo ' *** zlib 64-bit test FAILED ***'; false; \ + fi; \ + rm -f $$TMP64 + +infcover.o: $(SRCDIR)test/infcover.c $(SRCDIR)zlib.h zconf.h + $(CC) $(CFLAGS) $(ZINCOUT) -c -o $@ $(SRCDIR)test/infcover.c + +infcover: infcover.o libz.a + $(CC) $(CFLAGS) -o $@ infcover.o libz.a + +cover: infcover + rm -f *.gcda + ./infcover + gcov inf*.c + +libz.a: $(OBJS) + $(AR) $(ARFLAGS) $@ $(OBJS) + -@ ($(RANLIB) $@ || true) >/dev/null 2>&1 + +match.o: match.S + $(CPP) match.S > _match.s + $(CC) -c _match.s + mv _match.o match.o + rm -f _match.s + +match.lo: match.S + $(CPP) match.S > _match.s + $(CC) -c -fPIC _match.s + mv _match.o match.lo + rm -f _match.s + +example.o: $(SRCDIR)test/example.c $(SRCDIR)zlib.h zconf.h + $(CC) $(CFLAGS) $(ZINCOUT) -c -o $@ $(SRCDIR)test/example.c + +minigzip.o: $(SRCDIR)test/minigzip.c $(SRCDIR)zlib.h zconf.h + $(CC) $(CFLAGS) $(ZINCOUT) -c -o $@ $(SRCDIR)test/minigzip.c + +example64.o: $(SRCDIR)test/example.c $(SRCDIR)zlib.h zconf.h + $(CC) $(CFLAGS) $(ZINCOUT) -D_FILE_OFFSET_BITS=64 -c -o $@ $(SRCDIR)test/example.c + +minigzip64.o: $(SRCDIR)test/minigzip.c $(SRCDIR)zlib.h zconf.h + $(CC) $(CFLAGS) $(ZINCOUT) -D_FILE_OFFSET_BITS=64 -c -o $@ $(SRCDIR)test/minigzip.c + + +adler32.o: $(SRCDIR)adler32.c + $(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)adler32.c + +crc32.o: $(SRCDIR)crc32.c + $(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)crc32.c + +deflate.o: $(SRCDIR)deflate.c + $(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)deflate.c + +infback.o: $(SRCDIR)infback.c + $(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)infback.c + +inffast.o: $(SRCDIR)inffast.c + $(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)inffast.c + +inflate.o: $(SRCDIR)inflate.c + $(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)inflate.c + +inftrees.o: $(SRCDIR)inftrees.c + $(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)inftrees.c + +trees.o: $(SRCDIR)trees.c + $(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)trees.c + +zutil.o: $(SRCDIR)zutil.c + $(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)zutil.c + +compress.o: $(SRCDIR)compress.c + $(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)compress.c + +uncompr.o: $(SRCDIR)uncompr.c + $(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)uncompr.c + +gzclose.o: $(SRCDIR)gzclose.c + $(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)gzclose.c + +gzlib.o: $(SRCDIR)gzlib.c + $(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)gzlib.c + +gzread.o: $(SRCDIR)gzread.c + $(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)gzread.c + +gzwrite.o: $(SRCDIR)gzwrite.c + $(CC) $(CFLAGS) $(ZINC) -c -o $@ $(SRCDIR)gzwrite.c + + +adler32.lo: $(SRCDIR)adler32.c + -@mkdir objs 2>/dev/null || test -d objs + $(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/adler32.o $(SRCDIR)adler32.c + -@mv objs/adler32.o $@ + +crc32.lo: $(SRCDIR)crc32.c + -@mkdir objs 2>/dev/null || test -d objs + $(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/crc32.o $(SRCDIR)crc32.c + -@mv objs/crc32.o $@ + +deflate.lo: $(SRCDIR)deflate.c + -@mkdir objs 2>/dev/null || test -d objs + $(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/deflate.o $(SRCDIR)deflate.c + -@mv objs/deflate.o $@ + +infback.lo: $(SRCDIR)infback.c + -@mkdir objs 2>/dev/null || test -d objs + $(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/infback.o $(SRCDIR)infback.c + -@mv objs/infback.o $@ + +inffast.lo: $(SRCDIR)inffast.c + -@mkdir objs 2>/dev/null || test -d objs + $(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/inffast.o $(SRCDIR)inffast.c + -@mv objs/inffast.o $@ + +inflate.lo: $(SRCDIR)inflate.c + -@mkdir objs 2>/dev/null || test -d objs + $(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/inflate.o $(SRCDIR)inflate.c + -@mv objs/inflate.o $@ + +inftrees.lo: $(SRCDIR)inftrees.c + -@mkdir objs 2>/dev/null || test -d objs + $(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/inftrees.o $(SRCDIR)inftrees.c + -@mv objs/inftrees.o $@ + +trees.lo: $(SRCDIR)trees.c + -@mkdir objs 2>/dev/null || test -d objs + $(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/trees.o $(SRCDIR)trees.c + -@mv objs/trees.o $@ + +zutil.lo: $(SRCDIR)zutil.c + -@mkdir objs 2>/dev/null || test -d objs + $(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/zutil.o $(SRCDIR)zutil.c + -@mv objs/zutil.o $@ + +compress.lo: $(SRCDIR)compress.c + -@mkdir objs 2>/dev/null || test -d objs + $(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/compress.o $(SRCDIR)compress.c + -@mv objs/compress.o $@ + +uncompr.lo: $(SRCDIR)uncompr.c + -@mkdir objs 2>/dev/null || test -d objs + $(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/uncompr.o $(SRCDIR)uncompr.c + -@mv objs/uncompr.o $@ + +gzclose.lo: $(SRCDIR)gzclose.c + -@mkdir objs 2>/dev/null || test -d objs + $(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/gzclose.o $(SRCDIR)gzclose.c + -@mv objs/gzclose.o $@ + +gzlib.lo: $(SRCDIR)gzlib.c + -@mkdir objs 2>/dev/null || test -d objs + $(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/gzlib.o $(SRCDIR)gzlib.c + -@mv objs/gzlib.o $@ + +gzread.lo: $(SRCDIR)gzread.c + -@mkdir objs 2>/dev/null || test -d objs + $(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/gzread.o $(SRCDIR)gzread.c + -@mv objs/gzread.o $@ + +gzwrite.lo: $(SRCDIR)gzwrite.c + -@mkdir objs 2>/dev/null || test -d objs + $(CC) $(SFLAGS) $(ZINC) -DPIC -c -o objs/gzwrite.o $(SRCDIR)gzwrite.c + -@mv objs/gzwrite.o $@ + + +placebo $(SHAREDLIBV): $(PIC_OBJS) libz.a + $(LDSHARED) $(SFLAGS) -o $@ $(PIC_OBJS) $(LDSHAREDLIBC) $(LDFLAGS) + rm -f $(SHAREDLIB) $(SHAREDLIBM) + ln -s $@ $(SHAREDLIB) + ln -s $@ $(SHAREDLIBM) + -@rmdir objs + +example$(EXE): example.o $(STATICLIB) + $(CC) $(CFLAGS) -o $@ example.o $(TEST_LDFLAGS) + +minigzip$(EXE): minigzip.o $(STATICLIB) + $(CC) $(CFLAGS) -o $@ minigzip.o $(TEST_LDFLAGS) + +examplesh$(EXE): example.o $(SHAREDLIBV) + $(CC) $(CFLAGS) -o $@ example.o -L. $(SHAREDLIBV) + +minigzipsh$(EXE): minigzip.o $(SHAREDLIBV) + $(CC) $(CFLAGS) -o $@ minigzip.o -L. $(SHAREDLIBV) + +example64$(EXE): example64.o $(STATICLIB) + $(CC) $(CFLAGS) -o $@ example64.o $(TEST_LDFLAGS) + +minigzip64$(EXE): minigzip64.o $(STATICLIB) + $(CC) $(CFLAGS) -o $@ minigzip64.o $(TEST_LDFLAGS) + +install-libs: $(LIBS) + -@if [ ! -d $(DESTDIR)$(exec_prefix) ]; then mkdir -p $(DESTDIR)$(exec_prefix); fi + -@if [ ! -d $(DESTDIR)$(libdir) ]; then mkdir -p $(DESTDIR)$(libdir); fi + -@if [ ! -d $(DESTDIR)$(sharedlibdir) ]; then mkdir -p $(DESTDIR)$(sharedlibdir); fi + -@if [ ! -d $(DESTDIR)$(man3dir) ]; then mkdir -p $(DESTDIR)$(man3dir); fi + -@if [ ! -d $(DESTDIR)$(pkgconfigdir) ]; then mkdir -p $(DESTDIR)$(pkgconfigdir); fi + rm -f $(DESTDIR)$(libdir)/$(STATICLIB) + cp $(STATICLIB) $(DESTDIR)$(libdir) + chmod 644 $(DESTDIR)$(libdir)/$(STATICLIB) + -@($(RANLIB) $(DESTDIR)$(libdir)/libz.a || true) >/dev/null 2>&1 + -@if test -n "$(SHAREDLIBV)"; then \ + rm -f $(DESTDIR)$(sharedlibdir)/$(SHAREDLIBV); \ + cp $(SHAREDLIBV) $(DESTDIR)$(sharedlibdir); \ + echo "cp $(SHAREDLIBV) $(DESTDIR)$(sharedlibdir)"; \ + chmod 755 $(DESTDIR)$(sharedlibdir)/$(SHAREDLIBV); \ + echo "chmod 755 $(DESTDIR)$(sharedlibdir)/$(SHAREDLIBV)"; \ + rm -f $(DESTDIR)$(sharedlibdir)/$(SHAREDLIB) $(DESTDIR)$(sharedlibdir)/$(SHAREDLIBM); \ + ln -s $(SHAREDLIBV) $(DESTDIR)$(sharedlibdir)/$(SHAREDLIB); \ + ln -s $(SHAREDLIBV) $(DESTDIR)$(sharedlibdir)/$(SHAREDLIBM); \ + ($(LDCONFIG) || true) >/dev/null 2>&1; \ + fi + rm -f $(DESTDIR)$(man3dir)/zlib.3 + cp $(SRCDIR)zlib.3 $(DESTDIR)$(man3dir) + chmod 644 $(DESTDIR)$(man3dir)/zlib.3 + rm -f $(DESTDIR)$(pkgconfigdir)/zlib.pc + cp zlib.pc $(DESTDIR)$(pkgconfigdir) + chmod 644 $(DESTDIR)$(pkgconfigdir)/zlib.pc +# The ranlib in install is needed on NeXTSTEP which checks file times +# ldconfig is for Linux + +install: install-libs + -@if [ ! -d $(DESTDIR)$(includedir) ]; then mkdir -p $(DESTDIR)$(includedir); fi + rm -f $(DESTDIR)$(includedir)/zlib.h $(DESTDIR)$(includedir)/zconf.h + cp $(SRCDIR)zlib.h zconf.h $(DESTDIR)$(includedir) + chmod 644 $(DESTDIR)$(includedir)/zlib.h $(DESTDIR)$(includedir)/zconf.h + +uninstall: + cd $(DESTDIR)$(includedir) && rm -f zlib.h zconf.h + cd $(DESTDIR)$(libdir) && rm -f libz.a; \ + if test -n "$(SHAREDLIBV)" -a -f $(SHAREDLIBV); then \ + rm -f $(SHAREDLIBV) $(SHAREDLIB) $(SHAREDLIBM); \ + fi + cd $(DESTDIR)$(man3dir) && rm -f zlib.3 + cd $(DESTDIR)$(pkgconfigdir) && rm -f zlib.pc + +docs: zlib.3.pdf + +zlib.3.pdf: $(SRCDIR)zlib.3 + groff -mandoc -f H -T ps $(SRCDIR)zlib.3 | ps2pdf - $@ + +zconf.h.cmakein: $(SRCDIR)zconf.h.in + -@ TEMPFILE=zconfh_$$; \ + echo "/#define ZCONF_H/ a\\\\\n#cmakedefine Z_PREFIX\\\\\n#cmakedefine Z_HAVE_UNISTD_H\n" >> $$TEMPFILE &&\ + sed -f $$TEMPFILE $(SRCDIR)zconf.h.in > $@ &&\ + touch -r $(SRCDIR)zconf.h.in $@ &&\ + rm $$TEMPFILE + +zconf: $(SRCDIR)zconf.h.in + cp -p $(SRCDIR)zconf.h.in zconf.h + +mostlyclean: clean +clean: + rm -f *.o *.lo *~ \ + example$(EXE) minigzip$(EXE) examplesh$(EXE) minigzipsh$(EXE) \ + example64$(EXE) minigzip64$(EXE) \ + infcover \ + libz.* foo.gz so_locations \ + _match.s maketree contrib/infback9/*.o + rm -rf objs + rm -f *.gcda *.gcno *.gcov + rm -f contrib/infback9/*.gcda contrib/infback9/*.gcno contrib/infback9/*.gcov + +maintainer-clean: distclean +distclean: clean zconf zconf.h.cmakein docs + rm -f Makefile zlib.pc configure.log + -@rm -f .DS_Store + @if [ -f Makefile.in ]; then \ + printf 'all:\n\t-@echo "Please use ./configure first. Thank you."\n' > Makefile ; \ + printf '\ndistclean:\n\tmake -f Makefile.in distclean\n' >> Makefile ; \ + touch -r $(SRCDIR)Makefile.in Makefile ; fi + @if [ ! -f zconf.h.in ]; then rm -f zconf.h zconf.h.cmakein ; fi + @if [ ! -f zlib.3 ]; then rm -f zlib.3.pdf ; fi + +tags: + etags $(SRCDIR)*.[ch] + +adler32.o zutil.o: $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h +gzclose.o gzlib.o gzread.o gzwrite.o: $(SRCDIR)zlib.h zconf.h $(SRCDIR)gzguts.h +compress.o example.o minigzip.o uncompr.o: $(SRCDIR)zlib.h zconf.h +crc32.o: $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h $(SRCDIR)crc32.h +deflate.o: $(SRCDIR)deflate.h $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h +infback.o inflate.o: $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h $(SRCDIR)inftrees.h $(SRCDIR)inflate.h $(SRCDIR)inffast.h $(SRCDIR)inffixed.h +inffast.o: $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h $(SRCDIR)inftrees.h $(SRCDIR)inflate.h $(SRCDIR)inffast.h +inftrees.o: $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h $(SRCDIR)inftrees.h +trees.o: $(SRCDIR)deflate.h $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h $(SRCDIR)trees.h + +adler32.lo zutil.lo: $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h +gzclose.lo gzlib.lo gzread.lo gzwrite.lo: $(SRCDIR)zlib.h zconf.h $(SRCDIR)gzguts.h +compress.lo example.lo minigzip.lo uncompr.lo: $(SRCDIR)zlib.h zconf.h +crc32.lo: $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h $(SRCDIR)crc32.h +deflate.lo: $(SRCDIR)deflate.h $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h +infback.lo inflate.lo: $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h $(SRCDIR)inftrees.h $(SRCDIR)inflate.h $(SRCDIR)inffast.h $(SRCDIR)inffixed.h +inffast.lo: $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h $(SRCDIR)inftrees.h $(SRCDIR)inflate.h $(SRCDIR)inffast.h +inftrees.lo: $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h $(SRCDIR)inftrees.h +trees.lo: $(SRCDIR)deflate.h $(SRCDIR)zutil.h $(SRCDIR)zlib.h zconf.h $(SRCDIR)trees.h diff --git a/waterbox/nyma/zlib/README b/waterbox/nyma/zlib/README new file mode 100644 index 0000000000..51106de475 --- /dev/null +++ b/waterbox/nyma/zlib/README @@ -0,0 +1,115 @@ +ZLIB DATA COMPRESSION LIBRARY + +zlib 1.2.11 is a general purpose data compression library. All the code is +thread safe. The data format used by the zlib library is described by RFCs +(Request for Comments) 1950 to 1952 in the files +http://tools.ietf.org/html/rfc1950 (zlib format), rfc1951 (deflate format) and +rfc1952 (gzip format). + +All functions of the compression library are documented in the file zlib.h +(volunteer to write man pages welcome, contact zlib@gzip.org). A usage example +of the library is given in the file test/example.c which also tests that +the library is working correctly. Another example is given in the file +test/minigzip.c. The compression library itself is composed of all source +files in the root directory. + +To compile all files and run the test program, follow the instructions given at +the top of Makefile.in. In short "./configure; make test", and if that goes +well, "make install" should work for most flavors of Unix. For Windows, use +one of the special makefiles in win32/ or contrib/vstudio/ . For VMS, use +make_vms.com. + +Questions about zlib should be sent to , or to Gilles Vollant + for the Windows DLL version. The zlib home page is +http://zlib.net/ . Before reporting a problem, please check this site to +verify that you have the latest version of zlib; otherwise get the latest +version and check whether the problem still exists or not. + +PLEASE read the zlib FAQ http://zlib.net/zlib_faq.html before asking for help. + +Mark Nelson wrote an article about zlib for the Jan. 1997 +issue of Dr. Dobb's Journal; a copy of the article is available at +http://marknelson.us/1997/01/01/zlib-engine/ . + +The changes made in version 1.2.11 are documented in the file ChangeLog. + +Unsupported third party contributions are provided in directory contrib/ . + +zlib is available in Java using the java.util.zip package, documented at +http://java.sun.com/developer/technicalArticles/Programming/compression/ . + +A Perl interface to zlib written by Paul Marquess is available +at CPAN (Comprehensive Perl Archive Network) sites, including +http://search.cpan.org/~pmqs/IO-Compress-Zlib/ . + +A Python interface to zlib written by A.M. Kuchling is +available in Python 1.5 and later versions, see +http://docs.python.org/library/zlib.html . + +zlib is built into tcl: http://wiki.tcl.tk/4610 . + +An experimental package to read and write files in .zip format, written on top +of zlib by Gilles Vollant , is available in the +contrib/minizip directory of zlib. + + +Notes for some targets: + +- For Windows DLL versions, please see win32/DLL_FAQ.txt + +- For 64-bit Irix, deflate.c must be compiled without any optimization. With + -O, one libpng test fails. The test works in 32 bit mode (with the -n32 + compiler flag). The compiler bug has been reported to SGI. + +- zlib doesn't work with gcc 2.6.3 on a DEC 3000/300LX under OSF/1 2.1 it works + when compiled with cc. + +- On Digital Unix 4.0D (formely OSF/1) on AlphaServer, the cc option -std1 is + necessary to get gzprintf working correctly. This is done by configure. + +- zlib doesn't work on HP-UX 9.05 with some versions of /bin/cc. It works with + other compilers. Use "make test" to check your compiler. + +- gzdopen is not supported on RISCOS or BEOS. + +- For PalmOs, see http://palmzlib.sourceforge.net/ + + +Acknowledgments: + + The deflate format used by zlib was defined by Phil Katz. The deflate and + zlib specifications were written by L. Peter Deutsch. Thanks to all the + people who reported problems and suggested various improvements in zlib; they + are too numerous to cite here. + +Copyright notice: + + (C) 1995-2017 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + +If you use the zlib library in a product, we would appreciate *not* receiving +lengthy legal documents to sign. The sources are provided for free but without +warranty of any kind. The library has been entirely written by Jean-loup +Gailly and Mark Adler; it does not include third-party code. + +If you redistribute modified sources, we would appreciate that you include in +the file ChangeLog history information documenting your changes. Please read +the FAQ for more information on the distribution of modified source versions. diff --git a/waterbox/nyma/zlib/adler32.c b/waterbox/nyma/zlib/adler32.c new file mode 100644 index 0000000000..d0be4380a3 --- /dev/null +++ b/waterbox/nyma/zlib/adler32.c @@ -0,0 +1,186 @@ +/* adler32.c -- compute the Adler-32 checksum of a data stream + * Copyright (C) 1995-2011, 2016 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* @(#) $Id$ */ + +#include "zutil.h" + +local uLong adler32_combine_ OF((uLong adler1, uLong adler2, z_off64_t len2)); + +#define BASE 65521U /* largest prime smaller than 65536 */ +#define NMAX 5552 +/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */ + +#define DO1(buf,i) {adler += (buf)[i]; sum2 += adler;} +#define DO2(buf,i) DO1(buf,i); DO1(buf,i+1); +#define DO4(buf,i) DO2(buf,i); DO2(buf,i+2); +#define DO8(buf,i) DO4(buf,i); DO4(buf,i+4); +#define DO16(buf) DO8(buf,0); DO8(buf,8); + +/* use NO_DIVIDE if your processor does not do division in hardware -- + try it both ways to see which is faster */ +#ifdef NO_DIVIDE +/* note that this assumes BASE is 65521, where 65536 % 65521 == 15 + (thank you to John Reiser for pointing this out) */ +# define CHOP(a) \ + do { \ + unsigned long tmp = a >> 16; \ + a &= 0xffffUL; \ + a += (tmp << 4) - tmp; \ + } while (0) +# define MOD28(a) \ + do { \ + CHOP(a); \ + if (a >= BASE) a -= BASE; \ + } while (0) +# define MOD(a) \ + do { \ + CHOP(a); \ + MOD28(a); \ + } while (0) +# define MOD63(a) \ + do { /* this assumes a is not negative */ \ + z_off64_t tmp = a >> 32; \ + a &= 0xffffffffL; \ + a += (tmp << 8) - (tmp << 5) + tmp; \ + tmp = a >> 16; \ + a &= 0xffffL; \ + a += (tmp << 4) - tmp; \ + tmp = a >> 16; \ + a &= 0xffffL; \ + a += (tmp << 4) - tmp; \ + if (a >= BASE) a -= BASE; \ + } while (0) +#else +# define MOD(a) a %= BASE +# define MOD28(a) a %= BASE +# define MOD63(a) a %= BASE +#endif + +/* ========================================================================= */ +uLong ZEXPORT adler32_z(adler, buf, len) + uLong adler; + const Bytef *buf; + z_size_t len; +{ + unsigned long sum2; + unsigned n; + + /* split Adler-32 into component sums */ + sum2 = (adler >> 16) & 0xffff; + adler &= 0xffff; + + /* in case user likes doing a byte at a time, keep it fast */ + if (len == 1) { + adler += buf[0]; + if (adler >= BASE) + adler -= BASE; + sum2 += adler; + if (sum2 >= BASE) + sum2 -= BASE; + return adler | (sum2 << 16); + } + + /* initial Adler-32 value (deferred check for len == 1 speed) */ + if (buf == Z_NULL) + return 1L; + + /* in case short lengths are provided, keep it somewhat fast */ + if (len < 16) { + while (len--) { + adler += *buf++; + sum2 += adler; + } + if (adler >= BASE) + adler -= BASE; + MOD28(sum2); /* only added so many BASE's */ + return adler | (sum2 << 16); + } + + /* do length NMAX blocks -- requires just one modulo operation */ + while (len >= NMAX) { + len -= NMAX; + n = NMAX / 16; /* NMAX is divisible by 16 */ + do { + DO16(buf); /* 16 sums unrolled */ + buf += 16; + } while (--n); + MOD(adler); + MOD(sum2); + } + + /* do remaining bytes (less than NMAX, still just one modulo) */ + if (len) { /* avoid modulos if none remaining */ + while (len >= 16) { + len -= 16; + DO16(buf); + buf += 16; + } + while (len--) { + adler += *buf++; + sum2 += adler; + } + MOD(adler); + MOD(sum2); + } + + /* return recombined sums */ + return adler | (sum2 << 16); +} + +/* ========================================================================= */ +uLong ZEXPORT adler32(adler, buf, len) + uLong adler; + const Bytef *buf; + uInt len; +{ + return adler32_z(adler, buf, len); +} + +/* ========================================================================= */ +local uLong adler32_combine_(adler1, adler2, len2) + uLong adler1; + uLong adler2; + z_off64_t len2; +{ + unsigned long sum1; + unsigned long sum2; + unsigned rem; + + /* for negative len, return invalid adler32 as a clue for debugging */ + if (len2 < 0) + return 0xffffffffUL; + + /* the derivation of this formula is left as an exercise for the reader */ + MOD63(len2); /* assumes len2 >= 0 */ + rem = (unsigned)len2; + sum1 = adler1 & 0xffff; + sum2 = rem * sum1; + MOD(sum2); + sum1 += (adler2 & 0xffff) + BASE - 1; + sum2 += ((adler1 >> 16) & 0xffff) + ((adler2 >> 16) & 0xffff) + BASE - rem; + if (sum1 >= BASE) sum1 -= BASE; + if (sum1 >= BASE) sum1 -= BASE; + if (sum2 >= ((unsigned long)BASE << 1)) sum2 -= ((unsigned long)BASE << 1); + if (sum2 >= BASE) sum2 -= BASE; + return sum1 | (sum2 << 16); +} + +/* ========================================================================= */ +uLong ZEXPORT adler32_combine(adler1, adler2, len2) + uLong adler1; + uLong adler2; + z_off_t len2; +{ + return adler32_combine_(adler1, adler2, len2); +} + +uLong ZEXPORT adler32_combine64(adler1, adler2, len2) + uLong adler1; + uLong adler2; + z_off64_t len2; +{ + return adler32_combine_(adler1, adler2, len2); +} diff --git a/waterbox/nyma/zlib/compress.c b/waterbox/nyma/zlib/compress.c new file mode 100644 index 0000000000..e2db404abf --- /dev/null +++ b/waterbox/nyma/zlib/compress.c @@ -0,0 +1,86 @@ +/* compress.c -- compress a memory buffer + * Copyright (C) 1995-2005, 2014, 2016 Jean-loup Gailly, Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* @(#) $Id$ */ + +#define ZLIB_INTERNAL +#include "zlib.h" + +/* =========================================================================== + Compresses the source buffer into the destination buffer. The level + parameter has the same meaning as in deflateInit. sourceLen is the byte + length of the source buffer. Upon entry, destLen is the total size of the + destination buffer, which must be at least 0.1% larger than sourceLen plus + 12 bytes. Upon exit, destLen is the actual size of the compressed buffer. + + compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_BUF_ERROR if there was not enough room in the output buffer, + Z_STREAM_ERROR if the level parameter is invalid. +*/ +int ZEXPORT compress2 (dest, destLen, source, sourceLen, level) + Bytef *dest; + uLongf *destLen; + const Bytef *source; + uLong sourceLen; + int level; +{ + z_stream stream; + int err; + const uInt max = (uInt)-1; + uLong left; + + left = *destLen; + *destLen = 0; + + stream.zalloc = (alloc_func)0; + stream.zfree = (free_func)0; + stream.opaque = (voidpf)0; + + err = deflateInit(&stream, level); + if (err != Z_OK) return err; + + stream.next_out = dest; + stream.avail_out = 0; + stream.next_in = (z_const Bytef *)source; + stream.avail_in = 0; + + do { + if (stream.avail_out == 0) { + stream.avail_out = left > (uLong)max ? max : (uInt)left; + left -= stream.avail_out; + } + if (stream.avail_in == 0) { + stream.avail_in = sourceLen > (uLong)max ? max : (uInt)sourceLen; + sourceLen -= stream.avail_in; + } + err = deflate(&stream, sourceLen ? Z_NO_FLUSH : Z_FINISH); + } while (err == Z_OK); + + *destLen = stream.total_out; + deflateEnd(&stream); + return err == Z_STREAM_END ? Z_OK : err; +} + +/* =========================================================================== + */ +int ZEXPORT compress (dest, destLen, source, sourceLen) + Bytef *dest; + uLongf *destLen; + const Bytef *source; + uLong sourceLen; +{ + return compress2(dest, destLen, source, sourceLen, Z_DEFAULT_COMPRESSION); +} + +/* =========================================================================== + If the default memLevel or windowBits for deflateInit() is changed, then + this function needs to be updated. + */ +uLong ZEXPORT compressBound (sourceLen) + uLong sourceLen; +{ + return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + + (sourceLen >> 25) + 13; +} diff --git a/waterbox/nyma/zlib/configure b/waterbox/nyma/zlib/configure new file mode 100644 index 0000000000..e974d1fd79 --- /dev/null +++ b/waterbox/nyma/zlib/configure @@ -0,0 +1,921 @@ +#!/bin/sh +# configure script for zlib. +# +# Normally configure builds both a static and a shared library. +# If you want to build just a static library, use: ./configure --static +# +# To impose specific compiler or flags or install directory, use for example: +# prefix=$HOME CC=cc CFLAGS="-O4" ./configure +# or for csh/tcsh users: +# (setenv prefix $HOME; setenv CC cc; setenv CFLAGS "-O4"; ./configure) + +# Incorrect settings of CC or CFLAGS may prevent creating a shared library. +# If you have problems, try without defining CC and CFLAGS before reporting +# an error. + +# start off configure.log +echo -------------------- >> configure.log +echo $0 $* >> configure.log +date >> configure.log + +# get source directory +SRCDIR=`dirname $0` +if test $SRCDIR = "."; then + ZINC="" + ZINCOUT="-I." + SRCDIR="" +else + ZINC='-include zconf.h' + ZINCOUT='-I. -I$(SRCDIR)' + SRCDIR="$SRCDIR/" +fi + +# set command prefix for cross-compilation +if [ -n "${CHOST}" ]; then + uname="`echo "${CHOST}" | sed -e 's/^[^-]*-\([^-]*\)$/\1/' -e 's/^[^-]*-[^-]*-\([^-]*\)$/\1/' -e 's/^[^-]*-[^-]*-\([^-]*\)-.*$/\1/'`" + CROSS_PREFIX="${CHOST}-" +fi + +# destination name for static library +STATICLIB=libz.a + +# extract zlib version numbers from zlib.h +VER=`sed -n -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < ${SRCDIR}zlib.h` +VER3=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\\.[0-9]*\).*/\1/p' < ${SRCDIR}zlib.h` +VER2=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\)\\..*/\1/p' < ${SRCDIR}zlib.h` +VER1=`sed -n -e '/VERSION "/s/.*"\([0-9]*\)\\..*/\1/p' < ${SRCDIR}zlib.h` + +# establish commands for library building +if "${CROSS_PREFIX}ar" --version >/dev/null 2>/dev/null || test $? -lt 126; then + AR=${AR-"${CROSS_PREFIX}ar"} + test -n "${CROSS_PREFIX}" && echo Using ${AR} | tee -a configure.log +else + AR=${AR-"ar"} + test -n "${CROSS_PREFIX}" && echo Using ${AR} | tee -a configure.log +fi +ARFLAGS=${ARFLAGS-"rc"} +if "${CROSS_PREFIX}ranlib" --version >/dev/null 2>/dev/null || test $? -lt 126; then + RANLIB=${RANLIB-"${CROSS_PREFIX}ranlib"} + test -n "${CROSS_PREFIX}" && echo Using ${RANLIB} | tee -a configure.log +else + RANLIB=${RANLIB-"ranlib"} +fi +if "${CROSS_PREFIX}nm" --version >/dev/null 2>/dev/null || test $? -lt 126; then + NM=${NM-"${CROSS_PREFIX}nm"} + test -n "${CROSS_PREFIX}" && echo Using ${NM} | tee -a configure.log +else + NM=${NM-"nm"} +fi + +# set defaults before processing command line options +LDCONFIG=${LDCONFIG-"ldconfig"} +LDSHAREDLIBC="${LDSHAREDLIBC--lc}" +ARCHS= +prefix=${prefix-/usr/local} +exec_prefix=${exec_prefix-'${prefix}'} +libdir=${libdir-'${exec_prefix}/lib'} +sharedlibdir=${sharedlibdir-'${libdir}'} +includedir=${includedir-'${prefix}/include'} +mandir=${mandir-'${prefix}/share/man'} +shared_ext='.so' +shared=1 +solo=0 +cover=0 +zprefix=0 +zconst=0 +build64=0 +gcc=0 +warn=0 +debug=0 +old_cc="$CC" +old_cflags="$CFLAGS" +OBJC='$(OBJZ) $(OBJG)' +PIC_OBJC='$(PIC_OBJZ) $(PIC_OBJG)' + +# leave this script, optionally in a bad way +leave() +{ + if test "$*" != "0"; then + echo "** $0 aborting." | tee -a configure.log + fi + rm -f $test.[co] $test $test$shared_ext $test.gcno ./--version + echo -------------------- >> configure.log + echo >> configure.log + echo >> configure.log + exit $1 +} + +# process command line options +while test $# -ge 1 +do +case "$1" in + -h* | --help) + echo 'usage:' | tee -a configure.log + echo ' configure [--const] [--zprefix] [--prefix=PREFIX] [--eprefix=EXPREFIX]' | tee -a configure.log + echo ' [--static] [--64] [--libdir=LIBDIR] [--sharedlibdir=LIBDIR]' | tee -a configure.log + echo ' [--includedir=INCLUDEDIR] [--archs="-arch i386 -arch x86_64"]' | tee -a configure.log + exit 0 ;; + -p*=* | --prefix=*) prefix=`echo $1 | sed 's/.*=//'`; shift ;; + -e*=* | --eprefix=*) exec_prefix=`echo $1 | sed 's/.*=//'`; shift ;; + -l*=* | --libdir=*) libdir=`echo $1 | sed 's/.*=//'`; shift ;; + --sharedlibdir=*) sharedlibdir=`echo $1 | sed 's/.*=//'`; shift ;; + -i*=* | --includedir=*) includedir=`echo $1 | sed 's/.*=//'`;shift ;; + -u*=* | --uname=*) uname=`echo $1 | sed 's/.*=//'`;shift ;; + -p* | --prefix) prefix="$2"; shift; shift ;; + -e* | --eprefix) exec_prefix="$2"; shift; shift ;; + -l* | --libdir) libdir="$2"; shift; shift ;; + -i* | --includedir) includedir="$2"; shift; shift ;; + -s* | --shared | --enable-shared) shared=1; shift ;; + -t | --static) shared=0; shift ;; + --solo) solo=1; shift ;; + --cover) cover=1; shift ;; + -z* | --zprefix) zprefix=1; shift ;; + -6* | --64) build64=1; shift ;; + -a*=* | --archs=*) ARCHS=`echo $1 | sed 's/.*=//'`; shift ;; + --sysconfdir=*) echo "ignored option: --sysconfdir" | tee -a configure.log; shift ;; + --localstatedir=*) echo "ignored option: --localstatedir" | tee -a configure.log; shift ;; + -c* | --const) zconst=1; shift ;; + -w* | --warn) warn=1; shift ;; + -d* | --debug) debug=1; shift ;; + *) + echo "unknown option: $1" | tee -a configure.log + echo "$0 --help for help" | tee -a configure.log + leave 1;; + esac +done + +# temporary file name +test=ztest$$ + +# put arguments in log, also put test file in log if used in arguments +show() +{ + case "$*" in + *$test.c*) + echo === $test.c === >> configure.log + cat $test.c >> configure.log + echo === >> configure.log;; + esac + echo $* >> configure.log +} + +# check for gcc vs. cc and set compile and link flags based on the system identified by uname +cat > $test.c <&1` in + *gcc*) gcc=1 ;; + *clang*) gcc=1 ;; +esac + +show $cc -c $test.c +if test "$gcc" -eq 1 && ($cc -c $test.c) >> configure.log 2>&1; then + echo ... using gcc >> configure.log + CC="$cc" + CFLAGS="${CFLAGS--O3}" + SFLAGS="${CFLAGS--O3} -fPIC" + if test "$ARCHS"; then + CFLAGS="${CFLAGS} ${ARCHS}" + LDFLAGS="${LDFLAGS} ${ARCHS}" + fi + if test $build64 -eq 1; then + CFLAGS="${CFLAGS} -m64" + SFLAGS="${SFLAGS} -m64" + fi + if test "$warn" -eq 1; then + if test "$zconst" -eq 1; then + CFLAGS="${CFLAGS} -Wall -Wextra -Wcast-qual -pedantic -DZLIB_CONST" + else + CFLAGS="${CFLAGS} -Wall -Wextra -pedantic" + fi + fi + if test $debug -eq 1; then + CFLAGS="${CFLAGS} -DZLIB_DEBUG" + SFLAGS="${SFLAGS} -DZLIB_DEBUG" + fi + if test -z "$uname"; then + uname=`(uname -s || echo unknown) 2>/dev/null` + fi + case "$uname" in + Linux* | linux* | GNU | GNU/* | solaris*) + LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1,--version-script,${SRCDIR}zlib.map"} ;; + *BSD | *bsd* | DragonFly) + LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1,--version-script,${SRCDIR}zlib.map"} + LDCONFIG="ldconfig -m" ;; + CYGWIN* | Cygwin* | cygwin* | OS/2*) + EXE='.exe' ;; + MINGW* | mingw*) +# temporary bypass + rm -f $test.[co] $test $test$shared_ext + echo "Please use win32/Makefile.gcc instead." | tee -a configure.log + leave 1 + LDSHARED=${LDSHARED-"$cc -shared"} + LDSHAREDLIBC="" + EXE='.exe' ;; + QNX*) # This is for QNX6. I suppose that the QNX rule below is for QNX2,QNX4 + # (alain.bonnefoy@icbt.com) + LDSHARED=${LDSHARED-"$cc -shared -Wl,-hlibz.so.1"} ;; + HP-UX*) + LDSHARED=${LDSHARED-"$cc -shared $SFLAGS"} + case `(uname -m || echo unknown) 2>/dev/null` in + ia64) + shared_ext='.so' + SHAREDLIB='libz.so' ;; + *) + shared_ext='.sl' + SHAREDLIB='libz.sl' ;; + esac ;; + Darwin* | darwin*) + shared_ext='.dylib' + SHAREDLIB=libz$shared_ext + SHAREDLIBV=libz.$VER$shared_ext + SHAREDLIBM=libz.$VER1$shared_ext + LDSHARED=${LDSHARED-"$cc -dynamiclib -install_name $libdir/$SHAREDLIBM -compatibility_version $VER1 -current_version $VER3"} + if libtool -V 2>&1 | grep Apple > /dev/null; then + AR="libtool" + else + AR="/usr/bin/libtool" + fi + ARFLAGS="-o" ;; + *) LDSHARED=${LDSHARED-"$cc -shared"} ;; + esac +else + # find system name and corresponding cc options + CC=${CC-cc} + gcc=0 + echo ... using $CC >> configure.log + if test -z "$uname"; then + uname=`(uname -sr || echo unknown) 2>/dev/null` + fi + case "$uname" in + HP-UX*) SFLAGS=${CFLAGS-"-O +z"} + CFLAGS=${CFLAGS-"-O"} +# LDSHARED=${LDSHARED-"ld -b +vnocompatwarnings"} + LDSHARED=${LDSHARED-"ld -b"} + case `(uname -m || echo unknown) 2>/dev/null` in + ia64) + shared_ext='.so' + SHAREDLIB='libz.so' ;; + *) + shared_ext='.sl' + SHAREDLIB='libz.sl' ;; + esac ;; + IRIX*) SFLAGS=${CFLAGS-"-ansi -O2 -rpath ."} + CFLAGS=${CFLAGS-"-ansi -O2"} + LDSHARED=${LDSHARED-"cc -shared -Wl,-soname,libz.so.1"} ;; + OSF1\ V4*) SFLAGS=${CFLAGS-"-O -std1"} + CFLAGS=${CFLAGS-"-O -std1"} + LDFLAGS="${LDFLAGS} -Wl,-rpath,." + LDSHARED=${LDSHARED-"cc -shared -Wl,-soname,libz.so -Wl,-msym -Wl,-rpath,$(libdir) -Wl,-set_version,${VER}:1.0"} ;; + OSF1*) SFLAGS=${CFLAGS-"-O -std1"} + CFLAGS=${CFLAGS-"-O -std1"} + LDSHARED=${LDSHARED-"cc -shared -Wl,-soname,libz.so.1"} ;; + QNX*) SFLAGS=${CFLAGS-"-4 -O"} + CFLAGS=${CFLAGS-"-4 -O"} + LDSHARED=${LDSHARED-"cc"} + RANLIB=${RANLIB-"true"} + AR="cc" + ARFLAGS="-A" ;; + SCO_SV\ 3.2*) SFLAGS=${CFLAGS-"-O3 -dy -KPIC "} + CFLAGS=${CFLAGS-"-O3"} + LDSHARED=${LDSHARED-"cc -dy -KPIC -G"} ;; + SunOS\ 5* | solaris*) + LDSHARED=${LDSHARED-"cc -G -h libz$shared_ext.$VER1"} + SFLAGS=${CFLAGS-"-fast -KPIC"} + CFLAGS=${CFLAGS-"-fast"} + if test $build64 -eq 1; then + # old versions of SunPRO/Workshop/Studio don't support -m64, + # but newer ones do. Check for it. + flag64=`$CC -flags | egrep -- '^-m64'` + if test x"$flag64" != x"" ; then + CFLAGS="${CFLAGS} -m64" + SFLAGS="${SFLAGS} -m64" + else + case `(uname -m || echo unknown) 2>/dev/null` in + i86*) + SFLAGS="$SFLAGS -xarch=amd64" + CFLAGS="$CFLAGS -xarch=amd64" ;; + *) + SFLAGS="$SFLAGS -xarch=v9" + CFLAGS="$CFLAGS -xarch=v9" ;; + esac + fi + fi + if test -n "$ZINC"; then + ZINC='-I- -I. -I$(SRCDIR)' + fi + ;; + SunOS\ 4*) SFLAGS=${CFLAGS-"-O2 -PIC"} + CFLAGS=${CFLAGS-"-O2"} + LDSHARED=${LDSHARED-"ld"} ;; + SunStudio\ 9*) SFLAGS=${CFLAGS-"-fast -xcode=pic32 -xtarget=ultra3 -xarch=v9b"} + CFLAGS=${CFLAGS-"-fast -xtarget=ultra3 -xarch=v9b"} + LDSHARED=${LDSHARED-"cc -xarch=v9b"} ;; + UNIX_System_V\ 4.2.0) + SFLAGS=${CFLAGS-"-KPIC -O"} + CFLAGS=${CFLAGS-"-O"} + LDSHARED=${LDSHARED-"cc -G"} ;; + UNIX_SV\ 4.2MP) + SFLAGS=${CFLAGS-"-Kconform_pic -O"} + CFLAGS=${CFLAGS-"-O"} + LDSHARED=${LDSHARED-"cc -G"} ;; + OpenUNIX\ 5) + SFLAGS=${CFLAGS-"-KPIC -O"} + CFLAGS=${CFLAGS-"-O"} + LDSHARED=${LDSHARED-"cc -G"} ;; + AIX*) # Courtesy of dbakker@arrayasolutions.com + SFLAGS=${CFLAGS-"-O -qmaxmem=8192"} + CFLAGS=${CFLAGS-"-O -qmaxmem=8192"} + LDSHARED=${LDSHARED-"xlc -G"} ;; + # send working options for other systems to zlib@gzip.org + *) SFLAGS=${CFLAGS-"-O"} + CFLAGS=${CFLAGS-"-O"} + LDSHARED=${LDSHARED-"cc -shared"} ;; + esac +fi + +# destination names for shared library if not defined above +SHAREDLIB=${SHAREDLIB-"libz$shared_ext"} +SHAREDLIBV=${SHAREDLIBV-"libz$shared_ext.$VER"} +SHAREDLIBM=${SHAREDLIBM-"libz$shared_ext.$VER1"} + +echo >> configure.log + +# define functions for testing compiler and library characteristics and logging the results + +cat > $test.c </dev/null; then + try() + { + show $* + test "`( $* ) 2>&1 | tee -a configure.log`" = "" + } + echo - using any output from compiler to indicate an error >> configure.log +else + try() + { + show $* + ( $* ) >> configure.log 2>&1 + ret=$? + if test $ret -ne 0; then + echo "(exit code "$ret")" >> configure.log + fi + return $ret + } +fi + +tryboth() +{ + show $* + got=`( $* ) 2>&1` + ret=$? + printf %s "$got" >> configure.log + if test $ret -ne 0; then + return $ret + fi + test "$got" = "" +} + +cat > $test.c << EOF +int foo() { return 0; } +EOF +echo "Checking for obsessive-compulsive compiler options..." >> configure.log +if try $CC -c $CFLAGS $test.c; then + : +else + echo "Compiler error reporting is too harsh for $0 (perhaps remove -Werror)." | tee -a configure.log + leave 1 +fi + +echo >> configure.log + +# see if shared library build supported +cat > $test.c <> configure.log + show "$NM $test.o | grep _hello" + if test "`$NM $test.o | grep _hello | tee -a configure.log`" = ""; then + CPP="$CPP -DNO_UNDERLINE" + echo Checking for underline in external names... No. | tee -a configure.log + else + echo Checking for underline in external names... Yes. | tee -a configure.log + fi ;; +esac + +echo >> configure.log + +# check for size_t +cat > $test.c < +#include +size_t dummy = 0; +EOF +if try $CC -c $CFLAGS $test.c; then + echo "Checking for size_t... Yes." | tee -a configure.log + need_sizet=0 +else + echo "Checking for size_t... No." | tee -a configure.log + need_sizet=1 +fi + +echo >> configure.log + +# find the size_t integer type, if needed +if test $need_sizet -eq 1; then + cat > $test.c < $test.c < +int main(void) { + if (sizeof(void *) <= sizeof(int)) puts("int"); + else if (sizeof(void *) <= sizeof(long)) puts("long"); + else puts("z_longlong"); + return 0; +} +EOF + else + echo "Checking for long long... No." | tee -a configure.log + cat > $test.c < +int main(void) { + if (sizeof(void *) <= sizeof(int)) puts("int"); + else puts("long"); + return 0; +} +EOF + fi + if try $CC $CFLAGS -o $test $test.c; then + sizet=`./$test` + echo "Checking for a pointer-size integer type..." $sizet"." | tee -a configure.log + else + echo "Failed to find a pointer-size integer type." | tee -a configure.log + leave 1 + fi +fi + +if test $need_sizet -eq 1; then + CFLAGS="${CFLAGS} -DNO_SIZE_T=${sizet}" + SFLAGS="${SFLAGS} -DNO_SIZE_T=${sizet}" +fi + +echo >> configure.log + +# check for large file support, and if none, check for fseeko() +cat > $test.c < +off64_t dummy = 0; +EOF +if try $CC -c $CFLAGS -D_LARGEFILE64_SOURCE=1 $test.c; then + CFLAGS="${CFLAGS} -D_LARGEFILE64_SOURCE=1" + SFLAGS="${SFLAGS} -D_LARGEFILE64_SOURCE=1" + ALL="${ALL} all64" + TEST="${TEST} test64" + echo "Checking for off64_t... Yes." | tee -a configure.log + echo "Checking for fseeko... Yes." | tee -a configure.log +else + echo "Checking for off64_t... No." | tee -a configure.log + echo >> configure.log + cat > $test.c < +int main(void) { + fseeko(NULL, 0, 0); + return 0; +} +EOF + if try $CC $CFLAGS -o $test $test.c; then + echo "Checking for fseeko... Yes." | tee -a configure.log + else + CFLAGS="${CFLAGS} -DNO_FSEEKO" + SFLAGS="${SFLAGS} -DNO_FSEEKO" + echo "Checking for fseeko... No." | tee -a configure.log + fi +fi + +echo >> configure.log + +# check for strerror() for use by gz* functions +cat > $test.c < +#include +int main() { return strlen(strerror(errno)); } +EOF +if try $CC $CFLAGS -o $test $test.c; then + echo "Checking for strerror... Yes." | tee -a configure.log +else + CFLAGS="${CFLAGS} -DNO_STRERROR" + SFLAGS="${SFLAGS} -DNO_STRERROR" + echo "Checking for strerror... No." | tee -a configure.log +fi + +# copy clean zconf.h for subsequent edits +cp -p ${SRCDIR}zconf.h.in zconf.h + +echo >> configure.log + +# check for unistd.h and save result in zconf.h +cat > $test.c < +int main() { return 0; } +EOF +if try $CC -c $CFLAGS $test.c; then + sed < zconf.h "/^#ifdef HAVE_UNISTD_H.* may be/s/def HAVE_UNISTD_H\(.*\) may be/ 1\1 was/" > zconf.temp.h + mv zconf.temp.h zconf.h + echo "Checking for unistd.h... Yes." | tee -a configure.log +else + echo "Checking for unistd.h... No." | tee -a configure.log +fi + +echo >> configure.log + +# check for stdarg.h and save result in zconf.h +cat > $test.c < +int main() { return 0; } +EOF +if try $CC -c $CFLAGS $test.c; then + sed < zconf.h "/^#ifdef HAVE_STDARG_H.* may be/s/def HAVE_STDARG_H\(.*\) may be/ 1\1 was/" > zconf.temp.h + mv zconf.temp.h zconf.h + echo "Checking for stdarg.h... Yes." | tee -a configure.log +else + echo "Checking for stdarg.h... No." | tee -a configure.log +fi + +# if the z_ prefix was requested, save that in zconf.h +if test $zprefix -eq 1; then + sed < zconf.h "/#ifdef Z_PREFIX.* may be/s/def Z_PREFIX\(.*\) may be/ 1\1 was/" > zconf.temp.h + mv zconf.temp.h zconf.h + echo >> configure.log + echo "Using z_ prefix on all symbols." | tee -a configure.log +fi + +# if --solo compilation was requested, save that in zconf.h and remove gz stuff from object lists +if test $solo -eq 1; then + sed '/#define ZCONF_H/a\ +#define Z_SOLO + +' < zconf.h > zconf.temp.h + mv zconf.temp.h zconf.h +OBJC='$(OBJZ)' +PIC_OBJC='$(PIC_OBJZ)' +fi + +# if code coverage testing was requested, use older gcc if defined, e.g. "gcc-4.2" on Mac OS X +if test $cover -eq 1; then + CFLAGS="${CFLAGS} -fprofile-arcs -ftest-coverage" + if test -n "$GCC_CLASSIC"; then + CC=$GCC_CLASSIC + fi +fi + +echo >> configure.log + +# conduct a series of tests to resolve eight possible cases of using "vs" or "s" printf functions +# (using stdarg or not), with or without "n" (proving size of buffer), and with or without a +# return value. The most secure result is vsnprintf() with a return value. snprintf() with a +# return value is secure as well, but then gzprintf() will be limited to 20 arguments. +cat > $test.c < +#include +#include "zconf.h" +int main() +{ +#ifndef STDC + choke me +#endif + return 0; +} +EOF +if try $CC -c $CFLAGS $test.c; then + echo "Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf()." | tee -a configure.log + + echo >> configure.log + cat > $test.c < +#include +int mytest(const char *fmt, ...) +{ + char buf[20]; + va_list ap; + va_start(ap, fmt); + vsnprintf(buf, sizeof(buf), fmt, ap); + va_end(ap); + return 0; +} +int main() +{ + return (mytest("Hello%d\n", 1)); +} +EOF + if try $CC $CFLAGS -o $test $test.c; then + echo "Checking for vsnprintf() in stdio.h... Yes." | tee -a configure.log + + echo >> configure.log + cat >$test.c < +#include +int mytest(const char *fmt, ...) +{ + int n; + char buf[20]; + va_list ap; + va_start(ap, fmt); + n = vsnprintf(buf, sizeof(buf), fmt, ap); + va_end(ap); + return n; +} +int main() +{ + return (mytest("Hello%d\n", 1)); +} +EOF + + if try $CC -c $CFLAGS $test.c; then + echo "Checking for return value of vsnprintf()... Yes." | tee -a configure.log + else + CFLAGS="$CFLAGS -DHAS_vsnprintf_void" + SFLAGS="$SFLAGS -DHAS_vsnprintf_void" + echo "Checking for return value of vsnprintf()... No." | tee -a configure.log + echo " WARNING: apparently vsnprintf() does not return a value. zlib" | tee -a configure.log + echo " can build but will be open to possible string-format security" | tee -a configure.log + echo " vulnerabilities." | tee -a configure.log + fi + else + CFLAGS="$CFLAGS -DNO_vsnprintf" + SFLAGS="$SFLAGS -DNO_vsnprintf" + echo "Checking for vsnprintf() in stdio.h... No." | tee -a configure.log + echo " WARNING: vsnprintf() not found, falling back to vsprintf(). zlib" | tee -a configure.log + echo " can build but will be open to possible buffer-overflow security" | tee -a configure.log + echo " vulnerabilities." | tee -a configure.log + + echo >> configure.log + cat >$test.c < +#include +int mytest(const char *fmt, ...) +{ + int n; + char buf[20]; + va_list ap; + va_start(ap, fmt); + n = vsprintf(buf, fmt, ap); + va_end(ap); + return n; +} +int main() +{ + return (mytest("Hello%d\n", 1)); +} +EOF + + if try $CC -c $CFLAGS $test.c; then + echo "Checking for return value of vsprintf()... Yes." | tee -a configure.log + else + CFLAGS="$CFLAGS -DHAS_vsprintf_void" + SFLAGS="$SFLAGS -DHAS_vsprintf_void" + echo "Checking for return value of vsprintf()... No." | tee -a configure.log + echo " WARNING: apparently vsprintf() does not return a value. zlib" | tee -a configure.log + echo " can build but will be open to possible string-format security" | tee -a configure.log + echo " vulnerabilities." | tee -a configure.log + fi + fi +else + echo "Checking whether to use vs[n]printf() or s[n]printf()... using s[n]printf()." | tee -a configure.log + + echo >> configure.log + cat >$test.c < +int mytest() +{ + char buf[20]; + snprintf(buf, sizeof(buf), "%s", "foo"); + return 0; +} +int main() +{ + return (mytest()); +} +EOF + + if try $CC $CFLAGS -o $test $test.c; then + echo "Checking for snprintf() in stdio.h... Yes." | tee -a configure.log + + echo >> configure.log + cat >$test.c < +int mytest() +{ + char buf[20]; + return snprintf(buf, sizeof(buf), "%s", "foo"); +} +int main() +{ + return (mytest()); +} +EOF + + if try $CC -c $CFLAGS $test.c; then + echo "Checking for return value of snprintf()... Yes." | tee -a configure.log + else + CFLAGS="$CFLAGS -DHAS_snprintf_void" + SFLAGS="$SFLAGS -DHAS_snprintf_void" + echo "Checking for return value of snprintf()... No." | tee -a configure.log + echo " WARNING: apparently snprintf() does not return a value. zlib" | tee -a configure.log + echo " can build but will be open to possible string-format security" | tee -a configure.log + echo " vulnerabilities." | tee -a configure.log + fi + else + CFLAGS="$CFLAGS -DNO_snprintf" + SFLAGS="$SFLAGS -DNO_snprintf" + echo "Checking for snprintf() in stdio.h... No." | tee -a configure.log + echo " WARNING: snprintf() not found, falling back to sprintf(). zlib" | tee -a configure.log + echo " can build but will be open to possible buffer-overflow security" | tee -a configure.log + echo " vulnerabilities." | tee -a configure.log + + echo >> configure.log + cat >$test.c < +int mytest() +{ + char buf[20]; + return sprintf(buf, "%s", "foo"); +} +int main() +{ + return (mytest()); +} +EOF + + if try $CC -c $CFLAGS $test.c; then + echo "Checking for return value of sprintf()... Yes." | tee -a configure.log + else + CFLAGS="$CFLAGS -DHAS_sprintf_void" + SFLAGS="$SFLAGS -DHAS_sprintf_void" + echo "Checking for return value of sprintf()... No." | tee -a configure.log + echo " WARNING: apparently sprintf() does not return a value. zlib" | tee -a configure.log + echo " can build but will be open to possible string-format security" | tee -a configure.log + echo " vulnerabilities." | tee -a configure.log + fi + fi +fi + +# see if we can hide zlib internal symbols that are linked between separate source files +if test "$gcc" -eq 1; then + echo >> configure.log + cat > $test.c <> configure.log +echo ALL = $ALL >> configure.log +echo AR = $AR >> configure.log +echo ARFLAGS = $ARFLAGS >> configure.log +echo CC = $CC >> configure.log +echo CFLAGS = $CFLAGS >> configure.log +echo CPP = $CPP >> configure.log +echo EXE = $EXE >> configure.log +echo LDCONFIG = $LDCONFIG >> configure.log +echo LDFLAGS = $LDFLAGS >> configure.log +echo LDSHARED = $LDSHARED >> configure.log +echo LDSHAREDLIBC = $LDSHAREDLIBC >> configure.log +echo OBJC = $OBJC >> configure.log +echo PIC_OBJC = $PIC_OBJC >> configure.log +echo RANLIB = $RANLIB >> configure.log +echo SFLAGS = $SFLAGS >> configure.log +echo SHAREDLIB = $SHAREDLIB >> configure.log +echo SHAREDLIBM = $SHAREDLIBM >> configure.log +echo SHAREDLIBV = $SHAREDLIBV >> configure.log +echo STATICLIB = $STATICLIB >> configure.log +echo TEST = $TEST >> configure.log +echo VER = $VER >> configure.log +echo Z_U4 = $Z_U4 >> configure.log +echo SRCDIR = $SRCDIR >> configure.log +echo exec_prefix = $exec_prefix >> configure.log +echo includedir = $includedir >> configure.log +echo libdir = $libdir >> configure.log +echo mandir = $mandir >> configure.log +echo prefix = $prefix >> configure.log +echo sharedlibdir = $sharedlibdir >> configure.log +echo uname = $uname >> configure.log + +# udpate Makefile with the configure results +sed < ${SRCDIR}Makefile.in " +/^CC *=/s#=.*#=$CC# +/^CFLAGS *=/s#=.*#=$CFLAGS# +/^SFLAGS *=/s#=.*#=$SFLAGS# +/^LDFLAGS *=/s#=.*#=$LDFLAGS# +/^LDSHARED *=/s#=.*#=$LDSHARED# +/^CPP *=/s#=.*#=$CPP# +/^STATICLIB *=/s#=.*#=$STATICLIB# +/^SHAREDLIB *=/s#=.*#=$SHAREDLIB# +/^SHAREDLIBV *=/s#=.*#=$SHAREDLIBV# +/^SHAREDLIBM *=/s#=.*#=$SHAREDLIBM# +/^AR *=/s#=.*#=$AR# +/^ARFLAGS *=/s#=.*#=$ARFLAGS# +/^RANLIB *=/s#=.*#=$RANLIB# +/^LDCONFIG *=/s#=.*#=$LDCONFIG# +/^LDSHAREDLIBC *=/s#=.*#=$LDSHAREDLIBC# +/^EXE *=/s#=.*#=$EXE# +/^SRCDIR *=/s#=.*#=$SRCDIR# +/^ZINC *=/s#=.*#=$ZINC# +/^ZINCOUT *=/s#=.*#=$ZINCOUT# +/^prefix *=/s#=.*#=$prefix# +/^exec_prefix *=/s#=.*#=$exec_prefix# +/^libdir *=/s#=.*#=$libdir# +/^sharedlibdir *=/s#=.*#=$sharedlibdir# +/^includedir *=/s#=.*#=$includedir# +/^mandir *=/s#=.*#=$mandir# +/^OBJC *=/s#=.*#= $OBJC# +/^PIC_OBJC *=/s#=.*#= $PIC_OBJC# +/^all: */s#:.*#: $ALL# +/^test: */s#:.*#: $TEST# +" > Makefile + +# create zlib.pc with the configure results +sed < ${SRCDIR}zlib.pc.in " +/^CC *=/s#=.*#=$CC# +/^CFLAGS *=/s#=.*#=$CFLAGS# +/^CPP *=/s#=.*#=$CPP# +/^LDSHARED *=/s#=.*#=$LDSHARED# +/^STATICLIB *=/s#=.*#=$STATICLIB# +/^SHAREDLIB *=/s#=.*#=$SHAREDLIB# +/^SHAREDLIBV *=/s#=.*#=$SHAREDLIBV# +/^SHAREDLIBM *=/s#=.*#=$SHAREDLIBM# +/^AR *=/s#=.*#=$AR# +/^ARFLAGS *=/s#=.*#=$ARFLAGS# +/^RANLIB *=/s#=.*#=$RANLIB# +/^EXE *=/s#=.*#=$EXE# +/^prefix *=/s#=.*#=$prefix# +/^exec_prefix *=/s#=.*#=$exec_prefix# +/^libdir *=/s#=.*#=$libdir# +/^sharedlibdir *=/s#=.*#=$sharedlibdir# +/^includedir *=/s#=.*#=$includedir# +/^mandir *=/s#=.*#=$mandir# +/^LDFLAGS *=/s#=.*#=$LDFLAGS# +" | sed -e " +s/\@VERSION\@/$VER/g; +" > zlib.pc + +# done +leave 0 diff --git a/waterbox/nyma/zlib/configure-for-waterbox b/waterbox/nyma/zlib/configure-for-waterbox new file mode 100644 index 0000000000..81443a1359 --- /dev/null +++ b/waterbox/nyma/zlib/configure-for-waterbox @@ -0,0 +1,6 @@ +#!/bin/sh +MYPATH="`dirname \"$0\"`" +SYSROOT="`realpath \"$MYPATH/../../sysroot\"`" +export CC=$SYSROOT/bin/musl-gcc +export CFLAGS="-O3 -mabi=ms -mcmodel=large -mstack-protector-guard=global -no-pie -fno-pic -fno-pie" +./configure --static --prefix=$SYSROOT diff --git a/waterbox/nyma/zlib/crc32.c b/waterbox/nyma/zlib/crc32.c new file mode 100644 index 0000000000..9580440c0e --- /dev/null +++ b/waterbox/nyma/zlib/crc32.c @@ -0,0 +1,442 @@ +/* crc32.c -- compute the CRC-32 of a data stream + * Copyright (C) 1995-2006, 2010, 2011, 2012, 2016 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + * + * Thanks to Rodney Brown for his contribution of faster + * CRC methods: exclusive-oring 32 bits of data at a time, and pre-computing + * tables for updating the shift register in one step with three exclusive-ors + * instead of four steps with four exclusive-ors. This results in about a + * factor of two increase in speed on a Power PC G4 (PPC7455) using gcc -O3. + */ + +/* @(#) $Id$ */ + +/* + Note on the use of DYNAMIC_CRC_TABLE: there is no mutex or semaphore + protection on the static variables used to control the first-use generation + of the crc tables. Therefore, if you #define DYNAMIC_CRC_TABLE, you should + first call get_crc_table() to initialize the tables before allowing more than + one thread to use crc32(). + + DYNAMIC_CRC_TABLE and MAKECRCH can be #defined to write out crc32.h. + */ + +#ifdef MAKECRCH +# include +# ifndef DYNAMIC_CRC_TABLE +# define DYNAMIC_CRC_TABLE +# endif /* !DYNAMIC_CRC_TABLE */ +#endif /* MAKECRCH */ + +#include "zutil.h" /* for STDC and FAR definitions */ + +/* Definitions for doing the crc four data bytes at a time. */ +#if !defined(NOBYFOUR) && defined(Z_U4) +# define BYFOUR +#endif +#ifdef BYFOUR + local unsigned long crc32_little OF((unsigned long, + const unsigned char FAR *, z_size_t)); + local unsigned long crc32_big OF((unsigned long, + const unsigned char FAR *, z_size_t)); +# define TBLS 8 +#else +# define TBLS 1 +#endif /* BYFOUR */ + +/* Local functions for crc concatenation */ +local unsigned long gf2_matrix_times OF((unsigned long *mat, + unsigned long vec)); +local void gf2_matrix_square OF((unsigned long *square, unsigned long *mat)); +local uLong crc32_combine_ OF((uLong crc1, uLong crc2, z_off64_t len2)); + + +#ifdef DYNAMIC_CRC_TABLE + +local volatile int crc_table_empty = 1; +local z_crc_t FAR crc_table[TBLS][256]; +local void make_crc_table OF((void)); +#ifdef MAKECRCH + local void write_table OF((FILE *, const z_crc_t FAR *)); +#endif /* MAKECRCH */ +/* + Generate tables for a byte-wise 32-bit CRC calculation on the polynomial: + x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1. + + Polynomials over GF(2) are represented in binary, one bit per coefficient, + with the lowest powers in the most significant bit. Then adding polynomials + is just exclusive-or, and multiplying a polynomial by x is a right shift by + one. If we call the above polynomial p, and represent a byte as the + polynomial q, also with the lowest power in the most significant bit (so the + byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p, + where a mod b means the remainder after dividing a by b. + + This calculation is done using the shift-register method of multiplying and + taking the remainder. The register is initialized to zero, and for each + incoming bit, x^32 is added mod p to the register if the bit is a one (where + x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by + x (which is shifting right by one and adding x^32 mod p if the bit shifted + out is a one). We start with the highest power (least significant bit) of + q and repeat for all eight bits of q. + + The first table is simply the CRC of all possible eight bit values. This is + all the information needed to generate CRCs on data a byte at a time for all + combinations of CRC register values and incoming bytes. The remaining tables + allow for word-at-a-time CRC calculation for both big-endian and little- + endian machines, where a word is four bytes. +*/ +local void make_crc_table() +{ + z_crc_t c; + int n, k; + z_crc_t poly; /* polynomial exclusive-or pattern */ + /* terms of polynomial defining this crc (except x^32): */ + static volatile int first = 1; /* flag to limit concurrent making */ + static const unsigned char p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26}; + + /* See if another task is already doing this (not thread-safe, but better + than nothing -- significantly reduces duration of vulnerability in + case the advice about DYNAMIC_CRC_TABLE is ignored) */ + if (first) { + first = 0; + + /* make exclusive-or pattern from polynomial (0xedb88320UL) */ + poly = 0; + for (n = 0; n < (int)(sizeof(p)/sizeof(unsigned char)); n++) + poly |= (z_crc_t)1 << (31 - p[n]); + + /* generate a crc for every 8-bit value */ + for (n = 0; n < 256; n++) { + c = (z_crc_t)n; + for (k = 0; k < 8; k++) + c = c & 1 ? poly ^ (c >> 1) : c >> 1; + crc_table[0][n] = c; + } + +#ifdef BYFOUR + /* generate crc for each value followed by one, two, and three zeros, + and then the byte reversal of those as well as the first table */ + for (n = 0; n < 256; n++) { + c = crc_table[0][n]; + crc_table[4][n] = ZSWAP32(c); + for (k = 1; k < 4; k++) { + c = crc_table[0][c & 0xff] ^ (c >> 8); + crc_table[k][n] = c; + crc_table[k + 4][n] = ZSWAP32(c); + } + } +#endif /* BYFOUR */ + + crc_table_empty = 0; + } + else { /* not first */ + /* wait for the other guy to finish (not efficient, but rare) */ + while (crc_table_empty) + ; + } + +#ifdef MAKECRCH + /* write out CRC tables to crc32.h */ + { + FILE *out; + + out = fopen("crc32.h", "w"); + if (out == NULL) return; + fprintf(out, "/* crc32.h -- tables for rapid CRC calculation\n"); + fprintf(out, " * Generated automatically by crc32.c\n */\n\n"); + fprintf(out, "local const z_crc_t FAR "); + fprintf(out, "crc_table[TBLS][256] =\n{\n {\n"); + write_table(out, crc_table[0]); +# ifdef BYFOUR + fprintf(out, "#ifdef BYFOUR\n"); + for (k = 1; k < 8; k++) { + fprintf(out, " },\n {\n"); + write_table(out, crc_table[k]); + } + fprintf(out, "#endif\n"); +# endif /* BYFOUR */ + fprintf(out, " }\n};\n"); + fclose(out); + } +#endif /* MAKECRCH */ +} + +#ifdef MAKECRCH +local void write_table(out, table) + FILE *out; + const z_crc_t FAR *table; +{ + int n; + + for (n = 0; n < 256; n++) + fprintf(out, "%s0x%08lxUL%s", n % 5 ? "" : " ", + (unsigned long)(table[n]), + n == 255 ? "\n" : (n % 5 == 4 ? ",\n" : ", ")); +} +#endif /* MAKECRCH */ + +#else /* !DYNAMIC_CRC_TABLE */ +/* ======================================================================== + * Tables of CRC-32s of all single-byte values, made by make_crc_table(). + */ +#include "crc32.h" +#endif /* DYNAMIC_CRC_TABLE */ + +/* ========================================================================= + * This function can be used by asm versions of crc32() + */ +const z_crc_t FAR * ZEXPORT get_crc_table() +{ +#ifdef DYNAMIC_CRC_TABLE + if (crc_table_empty) + make_crc_table(); +#endif /* DYNAMIC_CRC_TABLE */ + return (const z_crc_t FAR *)crc_table; +} + +/* ========================================================================= */ +#define DO1 crc = crc_table[0][((int)crc ^ (*buf++)) & 0xff] ^ (crc >> 8) +#define DO8 DO1; DO1; DO1; DO1; DO1; DO1; DO1; DO1 + +/* ========================================================================= */ +unsigned long ZEXPORT crc32_z(crc, buf, len) + unsigned long crc; + const unsigned char FAR *buf; + z_size_t len; +{ + if (buf == Z_NULL) return 0UL; + +#ifdef DYNAMIC_CRC_TABLE + if (crc_table_empty) + make_crc_table(); +#endif /* DYNAMIC_CRC_TABLE */ + +#ifdef BYFOUR + if (sizeof(void *) == sizeof(ptrdiff_t)) { + z_crc_t endian; + + endian = 1; + if (*((unsigned char *)(&endian))) + return crc32_little(crc, buf, len); + else + return crc32_big(crc, buf, len); + } +#endif /* BYFOUR */ + crc = crc ^ 0xffffffffUL; + while (len >= 8) { + DO8; + len -= 8; + } + if (len) do { + DO1; + } while (--len); + return crc ^ 0xffffffffUL; +} + +/* ========================================================================= */ +unsigned long ZEXPORT crc32(crc, buf, len) + unsigned long crc; + const unsigned char FAR *buf; + uInt len; +{ + return crc32_z(crc, buf, len); +} + +#ifdef BYFOUR + +/* + This BYFOUR code accesses the passed unsigned char * buffer with a 32-bit + integer pointer type. This violates the strict aliasing rule, where a + compiler can assume, for optimization purposes, that two pointers to + fundamentally different types won't ever point to the same memory. This can + manifest as a problem only if one of the pointers is written to. This code + only reads from those pointers. So long as this code remains isolated in + this compilation unit, there won't be a problem. For this reason, this code + should not be copied and pasted into a compilation unit in which other code + writes to the buffer that is passed to these routines. + */ + +/* ========================================================================= */ +#define DOLIT4 c ^= *buf4++; \ + c = crc_table[3][c & 0xff] ^ crc_table[2][(c >> 8) & 0xff] ^ \ + crc_table[1][(c >> 16) & 0xff] ^ crc_table[0][c >> 24] +#define DOLIT32 DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4 + +/* ========================================================================= */ +local unsigned long crc32_little(crc, buf, len) + unsigned long crc; + const unsigned char FAR *buf; + z_size_t len; +{ + register z_crc_t c; + register const z_crc_t FAR *buf4; + + c = (z_crc_t)crc; + c = ~c; + while (len && ((ptrdiff_t)buf & 3)) { + c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8); + len--; + } + + buf4 = (const z_crc_t FAR *)(const void FAR *)buf; + while (len >= 32) { + DOLIT32; + len -= 32; + } + while (len >= 4) { + DOLIT4; + len -= 4; + } + buf = (const unsigned char FAR *)buf4; + + if (len) do { + c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8); + } while (--len); + c = ~c; + return (unsigned long)c; +} + +/* ========================================================================= */ +#define DOBIG4 c ^= *buf4++; \ + c = crc_table[4][c & 0xff] ^ crc_table[5][(c >> 8) & 0xff] ^ \ + crc_table[6][(c >> 16) & 0xff] ^ crc_table[7][c >> 24] +#define DOBIG32 DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4 + +/* ========================================================================= */ +local unsigned long crc32_big(crc, buf, len) + unsigned long crc; + const unsigned char FAR *buf; + z_size_t len; +{ + register z_crc_t c; + register const z_crc_t FAR *buf4; + + c = ZSWAP32((z_crc_t)crc); + c = ~c; + while (len && ((ptrdiff_t)buf & 3)) { + c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8); + len--; + } + + buf4 = (const z_crc_t FAR *)(const void FAR *)buf; + while (len >= 32) { + DOBIG32; + len -= 32; + } + while (len >= 4) { + DOBIG4; + len -= 4; + } + buf = (const unsigned char FAR *)buf4; + + if (len) do { + c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8); + } while (--len); + c = ~c; + return (unsigned long)(ZSWAP32(c)); +} + +#endif /* BYFOUR */ + +#define GF2_DIM 32 /* dimension of GF(2) vectors (length of CRC) */ + +/* ========================================================================= */ +local unsigned long gf2_matrix_times(mat, vec) + unsigned long *mat; + unsigned long vec; +{ + unsigned long sum; + + sum = 0; + while (vec) { + if (vec & 1) + sum ^= *mat; + vec >>= 1; + mat++; + } + return sum; +} + +/* ========================================================================= */ +local void gf2_matrix_square(square, mat) + unsigned long *square; + unsigned long *mat; +{ + int n; + + for (n = 0; n < GF2_DIM; n++) + square[n] = gf2_matrix_times(mat, mat[n]); +} + +/* ========================================================================= */ +local uLong crc32_combine_(crc1, crc2, len2) + uLong crc1; + uLong crc2; + z_off64_t len2; +{ + int n; + unsigned long row; + unsigned long even[GF2_DIM]; /* even-power-of-two zeros operator */ + unsigned long odd[GF2_DIM]; /* odd-power-of-two zeros operator */ + + /* degenerate case (also disallow negative lengths) */ + if (len2 <= 0) + return crc1; + + /* put operator for one zero bit in odd */ + odd[0] = 0xedb88320UL; /* CRC-32 polynomial */ + row = 1; + for (n = 1; n < GF2_DIM; n++) { + odd[n] = row; + row <<= 1; + } + + /* put operator for two zero bits in even */ + gf2_matrix_square(even, odd); + + /* put operator for four zero bits in odd */ + gf2_matrix_square(odd, even); + + /* apply len2 zeros to crc1 (first square will put the operator for one + zero byte, eight zero bits, in even) */ + do { + /* apply zeros operator for this bit of len2 */ + gf2_matrix_square(even, odd); + if (len2 & 1) + crc1 = gf2_matrix_times(even, crc1); + len2 >>= 1; + + /* if no more bits set, then done */ + if (len2 == 0) + break; + + /* another iteration of the loop with odd and even swapped */ + gf2_matrix_square(odd, even); + if (len2 & 1) + crc1 = gf2_matrix_times(odd, crc1); + len2 >>= 1; + + /* if no more bits set, then done */ + } while (len2 != 0); + + /* return combined crc */ + crc1 ^= crc2; + return crc1; +} + +/* ========================================================================= */ +uLong ZEXPORT crc32_combine(crc1, crc2, len2) + uLong crc1; + uLong crc2; + z_off_t len2; +{ + return crc32_combine_(crc1, crc2, len2); +} + +uLong ZEXPORT crc32_combine64(crc1, crc2, len2) + uLong crc1; + uLong crc2; + z_off64_t len2; +{ + return crc32_combine_(crc1, crc2, len2); +} diff --git a/waterbox/nyma/zlib/crc32.h b/waterbox/nyma/zlib/crc32.h new file mode 100644 index 0000000000..9e0c778102 --- /dev/null +++ b/waterbox/nyma/zlib/crc32.h @@ -0,0 +1,441 @@ +/* crc32.h -- tables for rapid CRC calculation + * Generated automatically by crc32.c + */ + +local const z_crc_t FAR crc_table[TBLS][256] = +{ + { + 0x00000000UL, 0x77073096UL, 0xee0e612cUL, 0x990951baUL, 0x076dc419UL, + 0x706af48fUL, 0xe963a535UL, 0x9e6495a3UL, 0x0edb8832UL, 0x79dcb8a4UL, + 0xe0d5e91eUL, 0x97d2d988UL, 0x09b64c2bUL, 0x7eb17cbdUL, 0xe7b82d07UL, + 0x90bf1d91UL, 0x1db71064UL, 0x6ab020f2UL, 0xf3b97148UL, 0x84be41deUL, + 0x1adad47dUL, 0x6ddde4ebUL, 0xf4d4b551UL, 0x83d385c7UL, 0x136c9856UL, + 0x646ba8c0UL, 0xfd62f97aUL, 0x8a65c9ecUL, 0x14015c4fUL, 0x63066cd9UL, + 0xfa0f3d63UL, 0x8d080df5UL, 0x3b6e20c8UL, 0x4c69105eUL, 0xd56041e4UL, + 0xa2677172UL, 0x3c03e4d1UL, 0x4b04d447UL, 0xd20d85fdUL, 0xa50ab56bUL, + 0x35b5a8faUL, 0x42b2986cUL, 0xdbbbc9d6UL, 0xacbcf940UL, 0x32d86ce3UL, + 0x45df5c75UL, 0xdcd60dcfUL, 0xabd13d59UL, 0x26d930acUL, 0x51de003aUL, + 0xc8d75180UL, 0xbfd06116UL, 0x21b4f4b5UL, 0x56b3c423UL, 0xcfba9599UL, + 0xb8bda50fUL, 0x2802b89eUL, 0x5f058808UL, 0xc60cd9b2UL, 0xb10be924UL, + 0x2f6f7c87UL, 0x58684c11UL, 0xc1611dabUL, 0xb6662d3dUL, 0x76dc4190UL, + 0x01db7106UL, 0x98d220bcUL, 0xefd5102aUL, 0x71b18589UL, 0x06b6b51fUL, + 0x9fbfe4a5UL, 0xe8b8d433UL, 0x7807c9a2UL, 0x0f00f934UL, 0x9609a88eUL, + 0xe10e9818UL, 0x7f6a0dbbUL, 0x086d3d2dUL, 0x91646c97UL, 0xe6635c01UL, + 0x6b6b51f4UL, 0x1c6c6162UL, 0x856530d8UL, 0xf262004eUL, 0x6c0695edUL, + 0x1b01a57bUL, 0x8208f4c1UL, 0xf50fc457UL, 0x65b0d9c6UL, 0x12b7e950UL, + 0x8bbeb8eaUL, 0xfcb9887cUL, 0x62dd1ddfUL, 0x15da2d49UL, 0x8cd37cf3UL, + 0xfbd44c65UL, 0x4db26158UL, 0x3ab551ceUL, 0xa3bc0074UL, 0xd4bb30e2UL, + 0x4adfa541UL, 0x3dd895d7UL, 0xa4d1c46dUL, 0xd3d6f4fbUL, 0x4369e96aUL, + 0x346ed9fcUL, 0xad678846UL, 0xda60b8d0UL, 0x44042d73UL, 0x33031de5UL, + 0xaa0a4c5fUL, 0xdd0d7cc9UL, 0x5005713cUL, 0x270241aaUL, 0xbe0b1010UL, + 0xc90c2086UL, 0x5768b525UL, 0x206f85b3UL, 0xb966d409UL, 0xce61e49fUL, + 0x5edef90eUL, 0x29d9c998UL, 0xb0d09822UL, 0xc7d7a8b4UL, 0x59b33d17UL, + 0x2eb40d81UL, 0xb7bd5c3bUL, 0xc0ba6cadUL, 0xedb88320UL, 0x9abfb3b6UL, + 0x03b6e20cUL, 0x74b1d29aUL, 0xead54739UL, 0x9dd277afUL, 0x04db2615UL, + 0x73dc1683UL, 0xe3630b12UL, 0x94643b84UL, 0x0d6d6a3eUL, 0x7a6a5aa8UL, + 0xe40ecf0bUL, 0x9309ff9dUL, 0x0a00ae27UL, 0x7d079eb1UL, 0xf00f9344UL, + 0x8708a3d2UL, 0x1e01f268UL, 0x6906c2feUL, 0xf762575dUL, 0x806567cbUL, + 0x196c3671UL, 0x6e6b06e7UL, 0xfed41b76UL, 0x89d32be0UL, 0x10da7a5aUL, + 0x67dd4accUL, 0xf9b9df6fUL, 0x8ebeeff9UL, 0x17b7be43UL, 0x60b08ed5UL, + 0xd6d6a3e8UL, 0xa1d1937eUL, 0x38d8c2c4UL, 0x4fdff252UL, 0xd1bb67f1UL, + 0xa6bc5767UL, 0x3fb506ddUL, 0x48b2364bUL, 0xd80d2bdaUL, 0xaf0a1b4cUL, + 0x36034af6UL, 0x41047a60UL, 0xdf60efc3UL, 0xa867df55UL, 0x316e8eefUL, + 0x4669be79UL, 0xcb61b38cUL, 0xbc66831aUL, 0x256fd2a0UL, 0x5268e236UL, + 0xcc0c7795UL, 0xbb0b4703UL, 0x220216b9UL, 0x5505262fUL, 0xc5ba3bbeUL, + 0xb2bd0b28UL, 0x2bb45a92UL, 0x5cb36a04UL, 0xc2d7ffa7UL, 0xb5d0cf31UL, + 0x2cd99e8bUL, 0x5bdeae1dUL, 0x9b64c2b0UL, 0xec63f226UL, 0x756aa39cUL, + 0x026d930aUL, 0x9c0906a9UL, 0xeb0e363fUL, 0x72076785UL, 0x05005713UL, + 0x95bf4a82UL, 0xe2b87a14UL, 0x7bb12baeUL, 0x0cb61b38UL, 0x92d28e9bUL, + 0xe5d5be0dUL, 0x7cdcefb7UL, 0x0bdbdf21UL, 0x86d3d2d4UL, 0xf1d4e242UL, + 0x68ddb3f8UL, 0x1fda836eUL, 0x81be16cdUL, 0xf6b9265bUL, 0x6fb077e1UL, + 0x18b74777UL, 0x88085ae6UL, 0xff0f6a70UL, 0x66063bcaUL, 0x11010b5cUL, + 0x8f659effUL, 0xf862ae69UL, 0x616bffd3UL, 0x166ccf45UL, 0xa00ae278UL, + 0xd70dd2eeUL, 0x4e048354UL, 0x3903b3c2UL, 0xa7672661UL, 0xd06016f7UL, + 0x4969474dUL, 0x3e6e77dbUL, 0xaed16a4aUL, 0xd9d65adcUL, 0x40df0b66UL, + 0x37d83bf0UL, 0xa9bcae53UL, 0xdebb9ec5UL, 0x47b2cf7fUL, 0x30b5ffe9UL, + 0xbdbdf21cUL, 0xcabac28aUL, 0x53b39330UL, 0x24b4a3a6UL, 0xbad03605UL, + 0xcdd70693UL, 0x54de5729UL, 0x23d967bfUL, 0xb3667a2eUL, 0xc4614ab8UL, + 0x5d681b02UL, 0x2a6f2b94UL, 0xb40bbe37UL, 0xc30c8ea1UL, 0x5a05df1bUL, + 0x2d02ef8dUL +#ifdef BYFOUR + }, + { + 0x00000000UL, 0x191b3141UL, 0x32366282UL, 0x2b2d53c3UL, 0x646cc504UL, + 0x7d77f445UL, 0x565aa786UL, 0x4f4196c7UL, 0xc8d98a08UL, 0xd1c2bb49UL, + 0xfaefe88aUL, 0xe3f4d9cbUL, 0xacb54f0cUL, 0xb5ae7e4dUL, 0x9e832d8eUL, + 0x87981ccfUL, 0x4ac21251UL, 0x53d92310UL, 0x78f470d3UL, 0x61ef4192UL, + 0x2eaed755UL, 0x37b5e614UL, 0x1c98b5d7UL, 0x05838496UL, 0x821b9859UL, + 0x9b00a918UL, 0xb02dfadbUL, 0xa936cb9aUL, 0xe6775d5dUL, 0xff6c6c1cUL, + 0xd4413fdfUL, 0xcd5a0e9eUL, 0x958424a2UL, 0x8c9f15e3UL, 0xa7b24620UL, + 0xbea97761UL, 0xf1e8e1a6UL, 0xe8f3d0e7UL, 0xc3de8324UL, 0xdac5b265UL, + 0x5d5daeaaUL, 0x44469febUL, 0x6f6bcc28UL, 0x7670fd69UL, 0x39316baeUL, + 0x202a5aefUL, 0x0b07092cUL, 0x121c386dUL, 0xdf4636f3UL, 0xc65d07b2UL, + 0xed705471UL, 0xf46b6530UL, 0xbb2af3f7UL, 0xa231c2b6UL, 0x891c9175UL, + 0x9007a034UL, 0x179fbcfbUL, 0x0e848dbaUL, 0x25a9de79UL, 0x3cb2ef38UL, + 0x73f379ffUL, 0x6ae848beUL, 0x41c51b7dUL, 0x58de2a3cUL, 0xf0794f05UL, + 0xe9627e44UL, 0xc24f2d87UL, 0xdb541cc6UL, 0x94158a01UL, 0x8d0ebb40UL, + 0xa623e883UL, 0xbf38d9c2UL, 0x38a0c50dUL, 0x21bbf44cUL, 0x0a96a78fUL, + 0x138d96ceUL, 0x5ccc0009UL, 0x45d73148UL, 0x6efa628bUL, 0x77e153caUL, + 0xbabb5d54UL, 0xa3a06c15UL, 0x888d3fd6UL, 0x91960e97UL, 0xded79850UL, + 0xc7cca911UL, 0xece1fad2UL, 0xf5facb93UL, 0x7262d75cUL, 0x6b79e61dUL, + 0x4054b5deUL, 0x594f849fUL, 0x160e1258UL, 0x0f152319UL, 0x243870daUL, + 0x3d23419bUL, 0x65fd6ba7UL, 0x7ce65ae6UL, 0x57cb0925UL, 0x4ed03864UL, + 0x0191aea3UL, 0x188a9fe2UL, 0x33a7cc21UL, 0x2abcfd60UL, 0xad24e1afUL, + 0xb43fd0eeUL, 0x9f12832dUL, 0x8609b26cUL, 0xc94824abUL, 0xd05315eaUL, + 0xfb7e4629UL, 0xe2657768UL, 0x2f3f79f6UL, 0x362448b7UL, 0x1d091b74UL, + 0x04122a35UL, 0x4b53bcf2UL, 0x52488db3UL, 0x7965de70UL, 0x607eef31UL, + 0xe7e6f3feUL, 0xfefdc2bfUL, 0xd5d0917cUL, 0xcccba03dUL, 0x838a36faUL, + 0x9a9107bbUL, 0xb1bc5478UL, 0xa8a76539UL, 0x3b83984bUL, 0x2298a90aUL, + 0x09b5fac9UL, 0x10aecb88UL, 0x5fef5d4fUL, 0x46f46c0eUL, 0x6dd93fcdUL, + 0x74c20e8cUL, 0xf35a1243UL, 0xea412302UL, 0xc16c70c1UL, 0xd8774180UL, + 0x9736d747UL, 0x8e2de606UL, 0xa500b5c5UL, 0xbc1b8484UL, 0x71418a1aUL, + 0x685abb5bUL, 0x4377e898UL, 0x5a6cd9d9UL, 0x152d4f1eUL, 0x0c367e5fUL, + 0x271b2d9cUL, 0x3e001cddUL, 0xb9980012UL, 0xa0833153UL, 0x8bae6290UL, + 0x92b553d1UL, 0xddf4c516UL, 0xc4eff457UL, 0xefc2a794UL, 0xf6d996d5UL, + 0xae07bce9UL, 0xb71c8da8UL, 0x9c31de6bUL, 0x852aef2aUL, 0xca6b79edUL, + 0xd37048acUL, 0xf85d1b6fUL, 0xe1462a2eUL, 0x66de36e1UL, 0x7fc507a0UL, + 0x54e85463UL, 0x4df36522UL, 0x02b2f3e5UL, 0x1ba9c2a4UL, 0x30849167UL, + 0x299fa026UL, 0xe4c5aeb8UL, 0xfdde9ff9UL, 0xd6f3cc3aUL, 0xcfe8fd7bUL, + 0x80a96bbcUL, 0x99b25afdUL, 0xb29f093eUL, 0xab84387fUL, 0x2c1c24b0UL, + 0x350715f1UL, 0x1e2a4632UL, 0x07317773UL, 0x4870e1b4UL, 0x516bd0f5UL, + 0x7a468336UL, 0x635db277UL, 0xcbfad74eUL, 0xd2e1e60fUL, 0xf9ccb5ccUL, + 0xe0d7848dUL, 0xaf96124aUL, 0xb68d230bUL, 0x9da070c8UL, 0x84bb4189UL, + 0x03235d46UL, 0x1a386c07UL, 0x31153fc4UL, 0x280e0e85UL, 0x674f9842UL, + 0x7e54a903UL, 0x5579fac0UL, 0x4c62cb81UL, 0x8138c51fUL, 0x9823f45eUL, + 0xb30ea79dUL, 0xaa1596dcUL, 0xe554001bUL, 0xfc4f315aUL, 0xd7626299UL, + 0xce7953d8UL, 0x49e14f17UL, 0x50fa7e56UL, 0x7bd72d95UL, 0x62cc1cd4UL, + 0x2d8d8a13UL, 0x3496bb52UL, 0x1fbbe891UL, 0x06a0d9d0UL, 0x5e7ef3ecUL, + 0x4765c2adUL, 0x6c48916eUL, 0x7553a02fUL, 0x3a1236e8UL, 0x230907a9UL, + 0x0824546aUL, 0x113f652bUL, 0x96a779e4UL, 0x8fbc48a5UL, 0xa4911b66UL, + 0xbd8a2a27UL, 0xf2cbbce0UL, 0xebd08da1UL, 0xc0fdde62UL, 0xd9e6ef23UL, + 0x14bce1bdUL, 0x0da7d0fcUL, 0x268a833fUL, 0x3f91b27eUL, 0x70d024b9UL, + 0x69cb15f8UL, 0x42e6463bUL, 0x5bfd777aUL, 0xdc656bb5UL, 0xc57e5af4UL, + 0xee530937UL, 0xf7483876UL, 0xb809aeb1UL, 0xa1129ff0UL, 0x8a3fcc33UL, + 0x9324fd72UL + }, + { + 0x00000000UL, 0x01c26a37UL, 0x0384d46eUL, 0x0246be59UL, 0x0709a8dcUL, + 0x06cbc2ebUL, 0x048d7cb2UL, 0x054f1685UL, 0x0e1351b8UL, 0x0fd13b8fUL, + 0x0d9785d6UL, 0x0c55efe1UL, 0x091af964UL, 0x08d89353UL, 0x0a9e2d0aUL, + 0x0b5c473dUL, 0x1c26a370UL, 0x1de4c947UL, 0x1fa2771eUL, 0x1e601d29UL, + 0x1b2f0bacUL, 0x1aed619bUL, 0x18abdfc2UL, 0x1969b5f5UL, 0x1235f2c8UL, + 0x13f798ffUL, 0x11b126a6UL, 0x10734c91UL, 0x153c5a14UL, 0x14fe3023UL, + 0x16b88e7aUL, 0x177ae44dUL, 0x384d46e0UL, 0x398f2cd7UL, 0x3bc9928eUL, + 0x3a0bf8b9UL, 0x3f44ee3cUL, 0x3e86840bUL, 0x3cc03a52UL, 0x3d025065UL, + 0x365e1758UL, 0x379c7d6fUL, 0x35dac336UL, 0x3418a901UL, 0x3157bf84UL, + 0x3095d5b3UL, 0x32d36beaUL, 0x331101ddUL, 0x246be590UL, 0x25a98fa7UL, + 0x27ef31feUL, 0x262d5bc9UL, 0x23624d4cUL, 0x22a0277bUL, 0x20e69922UL, + 0x2124f315UL, 0x2a78b428UL, 0x2bbade1fUL, 0x29fc6046UL, 0x283e0a71UL, + 0x2d711cf4UL, 0x2cb376c3UL, 0x2ef5c89aUL, 0x2f37a2adUL, 0x709a8dc0UL, + 0x7158e7f7UL, 0x731e59aeUL, 0x72dc3399UL, 0x7793251cUL, 0x76514f2bUL, + 0x7417f172UL, 0x75d59b45UL, 0x7e89dc78UL, 0x7f4bb64fUL, 0x7d0d0816UL, + 0x7ccf6221UL, 0x798074a4UL, 0x78421e93UL, 0x7a04a0caUL, 0x7bc6cafdUL, + 0x6cbc2eb0UL, 0x6d7e4487UL, 0x6f38fadeUL, 0x6efa90e9UL, 0x6bb5866cUL, + 0x6a77ec5bUL, 0x68315202UL, 0x69f33835UL, 0x62af7f08UL, 0x636d153fUL, + 0x612bab66UL, 0x60e9c151UL, 0x65a6d7d4UL, 0x6464bde3UL, 0x662203baUL, + 0x67e0698dUL, 0x48d7cb20UL, 0x4915a117UL, 0x4b531f4eUL, 0x4a917579UL, + 0x4fde63fcUL, 0x4e1c09cbUL, 0x4c5ab792UL, 0x4d98dda5UL, 0x46c49a98UL, + 0x4706f0afUL, 0x45404ef6UL, 0x448224c1UL, 0x41cd3244UL, 0x400f5873UL, + 0x4249e62aUL, 0x438b8c1dUL, 0x54f16850UL, 0x55330267UL, 0x5775bc3eUL, + 0x56b7d609UL, 0x53f8c08cUL, 0x523aaabbUL, 0x507c14e2UL, 0x51be7ed5UL, + 0x5ae239e8UL, 0x5b2053dfUL, 0x5966ed86UL, 0x58a487b1UL, 0x5deb9134UL, + 0x5c29fb03UL, 0x5e6f455aUL, 0x5fad2f6dUL, 0xe1351b80UL, 0xe0f771b7UL, + 0xe2b1cfeeUL, 0xe373a5d9UL, 0xe63cb35cUL, 0xe7fed96bUL, 0xe5b86732UL, + 0xe47a0d05UL, 0xef264a38UL, 0xeee4200fUL, 0xeca29e56UL, 0xed60f461UL, + 0xe82fe2e4UL, 0xe9ed88d3UL, 0xebab368aUL, 0xea695cbdUL, 0xfd13b8f0UL, + 0xfcd1d2c7UL, 0xfe976c9eUL, 0xff5506a9UL, 0xfa1a102cUL, 0xfbd87a1bUL, + 0xf99ec442UL, 0xf85cae75UL, 0xf300e948UL, 0xf2c2837fUL, 0xf0843d26UL, + 0xf1465711UL, 0xf4094194UL, 0xf5cb2ba3UL, 0xf78d95faUL, 0xf64fffcdUL, + 0xd9785d60UL, 0xd8ba3757UL, 0xdafc890eUL, 0xdb3ee339UL, 0xde71f5bcUL, + 0xdfb39f8bUL, 0xddf521d2UL, 0xdc374be5UL, 0xd76b0cd8UL, 0xd6a966efUL, + 0xd4efd8b6UL, 0xd52db281UL, 0xd062a404UL, 0xd1a0ce33UL, 0xd3e6706aUL, + 0xd2241a5dUL, 0xc55efe10UL, 0xc49c9427UL, 0xc6da2a7eUL, 0xc7184049UL, + 0xc25756ccUL, 0xc3953cfbUL, 0xc1d382a2UL, 0xc011e895UL, 0xcb4dafa8UL, + 0xca8fc59fUL, 0xc8c97bc6UL, 0xc90b11f1UL, 0xcc440774UL, 0xcd866d43UL, + 0xcfc0d31aUL, 0xce02b92dUL, 0x91af9640UL, 0x906dfc77UL, 0x922b422eUL, + 0x93e92819UL, 0x96a63e9cUL, 0x976454abUL, 0x9522eaf2UL, 0x94e080c5UL, + 0x9fbcc7f8UL, 0x9e7eadcfUL, 0x9c381396UL, 0x9dfa79a1UL, 0x98b56f24UL, + 0x99770513UL, 0x9b31bb4aUL, 0x9af3d17dUL, 0x8d893530UL, 0x8c4b5f07UL, + 0x8e0de15eUL, 0x8fcf8b69UL, 0x8a809decUL, 0x8b42f7dbUL, 0x89044982UL, + 0x88c623b5UL, 0x839a6488UL, 0x82580ebfUL, 0x801eb0e6UL, 0x81dcdad1UL, + 0x8493cc54UL, 0x8551a663UL, 0x8717183aUL, 0x86d5720dUL, 0xa9e2d0a0UL, + 0xa820ba97UL, 0xaa6604ceUL, 0xaba46ef9UL, 0xaeeb787cUL, 0xaf29124bUL, + 0xad6fac12UL, 0xacadc625UL, 0xa7f18118UL, 0xa633eb2fUL, 0xa4755576UL, + 0xa5b73f41UL, 0xa0f829c4UL, 0xa13a43f3UL, 0xa37cfdaaUL, 0xa2be979dUL, + 0xb5c473d0UL, 0xb40619e7UL, 0xb640a7beUL, 0xb782cd89UL, 0xb2cddb0cUL, + 0xb30fb13bUL, 0xb1490f62UL, 0xb08b6555UL, 0xbbd72268UL, 0xba15485fUL, + 0xb853f606UL, 0xb9919c31UL, 0xbcde8ab4UL, 0xbd1ce083UL, 0xbf5a5edaUL, + 0xbe9834edUL + }, + { + 0x00000000UL, 0xb8bc6765UL, 0xaa09c88bUL, 0x12b5afeeUL, 0x8f629757UL, + 0x37def032UL, 0x256b5fdcUL, 0x9dd738b9UL, 0xc5b428efUL, 0x7d084f8aUL, + 0x6fbde064UL, 0xd7018701UL, 0x4ad6bfb8UL, 0xf26ad8ddUL, 0xe0df7733UL, + 0x58631056UL, 0x5019579fUL, 0xe8a530faUL, 0xfa109f14UL, 0x42acf871UL, + 0xdf7bc0c8UL, 0x67c7a7adUL, 0x75720843UL, 0xcdce6f26UL, 0x95ad7f70UL, + 0x2d111815UL, 0x3fa4b7fbUL, 0x8718d09eUL, 0x1acfe827UL, 0xa2738f42UL, + 0xb0c620acUL, 0x087a47c9UL, 0xa032af3eUL, 0x188ec85bUL, 0x0a3b67b5UL, + 0xb28700d0UL, 0x2f503869UL, 0x97ec5f0cUL, 0x8559f0e2UL, 0x3de59787UL, + 0x658687d1UL, 0xdd3ae0b4UL, 0xcf8f4f5aUL, 0x7733283fUL, 0xeae41086UL, + 0x525877e3UL, 0x40edd80dUL, 0xf851bf68UL, 0xf02bf8a1UL, 0x48979fc4UL, + 0x5a22302aUL, 0xe29e574fUL, 0x7f496ff6UL, 0xc7f50893UL, 0xd540a77dUL, + 0x6dfcc018UL, 0x359fd04eUL, 0x8d23b72bUL, 0x9f9618c5UL, 0x272a7fa0UL, + 0xbafd4719UL, 0x0241207cUL, 0x10f48f92UL, 0xa848e8f7UL, 0x9b14583dUL, + 0x23a83f58UL, 0x311d90b6UL, 0x89a1f7d3UL, 0x1476cf6aUL, 0xaccaa80fUL, + 0xbe7f07e1UL, 0x06c36084UL, 0x5ea070d2UL, 0xe61c17b7UL, 0xf4a9b859UL, + 0x4c15df3cUL, 0xd1c2e785UL, 0x697e80e0UL, 0x7bcb2f0eUL, 0xc377486bUL, + 0xcb0d0fa2UL, 0x73b168c7UL, 0x6104c729UL, 0xd9b8a04cUL, 0x446f98f5UL, + 0xfcd3ff90UL, 0xee66507eUL, 0x56da371bUL, 0x0eb9274dUL, 0xb6054028UL, + 0xa4b0efc6UL, 0x1c0c88a3UL, 0x81dbb01aUL, 0x3967d77fUL, 0x2bd27891UL, + 0x936e1ff4UL, 0x3b26f703UL, 0x839a9066UL, 0x912f3f88UL, 0x299358edUL, + 0xb4446054UL, 0x0cf80731UL, 0x1e4da8dfUL, 0xa6f1cfbaUL, 0xfe92dfecUL, + 0x462eb889UL, 0x549b1767UL, 0xec277002UL, 0x71f048bbUL, 0xc94c2fdeUL, + 0xdbf98030UL, 0x6345e755UL, 0x6b3fa09cUL, 0xd383c7f9UL, 0xc1366817UL, + 0x798a0f72UL, 0xe45d37cbUL, 0x5ce150aeUL, 0x4e54ff40UL, 0xf6e89825UL, + 0xae8b8873UL, 0x1637ef16UL, 0x048240f8UL, 0xbc3e279dUL, 0x21e91f24UL, + 0x99557841UL, 0x8be0d7afUL, 0x335cb0caUL, 0xed59b63bUL, 0x55e5d15eUL, + 0x47507eb0UL, 0xffec19d5UL, 0x623b216cUL, 0xda874609UL, 0xc832e9e7UL, + 0x708e8e82UL, 0x28ed9ed4UL, 0x9051f9b1UL, 0x82e4565fUL, 0x3a58313aUL, + 0xa78f0983UL, 0x1f336ee6UL, 0x0d86c108UL, 0xb53aa66dUL, 0xbd40e1a4UL, + 0x05fc86c1UL, 0x1749292fUL, 0xaff54e4aUL, 0x322276f3UL, 0x8a9e1196UL, + 0x982bbe78UL, 0x2097d91dUL, 0x78f4c94bUL, 0xc048ae2eUL, 0xd2fd01c0UL, + 0x6a4166a5UL, 0xf7965e1cUL, 0x4f2a3979UL, 0x5d9f9697UL, 0xe523f1f2UL, + 0x4d6b1905UL, 0xf5d77e60UL, 0xe762d18eUL, 0x5fdeb6ebUL, 0xc2098e52UL, + 0x7ab5e937UL, 0x680046d9UL, 0xd0bc21bcUL, 0x88df31eaUL, 0x3063568fUL, + 0x22d6f961UL, 0x9a6a9e04UL, 0x07bda6bdUL, 0xbf01c1d8UL, 0xadb46e36UL, + 0x15080953UL, 0x1d724e9aUL, 0xa5ce29ffUL, 0xb77b8611UL, 0x0fc7e174UL, + 0x9210d9cdUL, 0x2aacbea8UL, 0x38191146UL, 0x80a57623UL, 0xd8c66675UL, + 0x607a0110UL, 0x72cfaefeUL, 0xca73c99bUL, 0x57a4f122UL, 0xef189647UL, + 0xfdad39a9UL, 0x45115eccUL, 0x764dee06UL, 0xcef18963UL, 0xdc44268dUL, + 0x64f841e8UL, 0xf92f7951UL, 0x41931e34UL, 0x5326b1daUL, 0xeb9ad6bfUL, + 0xb3f9c6e9UL, 0x0b45a18cUL, 0x19f00e62UL, 0xa14c6907UL, 0x3c9b51beUL, + 0x842736dbUL, 0x96929935UL, 0x2e2efe50UL, 0x2654b999UL, 0x9ee8defcUL, + 0x8c5d7112UL, 0x34e11677UL, 0xa9362eceUL, 0x118a49abUL, 0x033fe645UL, + 0xbb838120UL, 0xe3e09176UL, 0x5b5cf613UL, 0x49e959fdUL, 0xf1553e98UL, + 0x6c820621UL, 0xd43e6144UL, 0xc68bceaaUL, 0x7e37a9cfUL, 0xd67f4138UL, + 0x6ec3265dUL, 0x7c7689b3UL, 0xc4caeed6UL, 0x591dd66fUL, 0xe1a1b10aUL, + 0xf3141ee4UL, 0x4ba87981UL, 0x13cb69d7UL, 0xab770eb2UL, 0xb9c2a15cUL, + 0x017ec639UL, 0x9ca9fe80UL, 0x241599e5UL, 0x36a0360bUL, 0x8e1c516eUL, + 0x866616a7UL, 0x3eda71c2UL, 0x2c6fde2cUL, 0x94d3b949UL, 0x090481f0UL, + 0xb1b8e695UL, 0xa30d497bUL, 0x1bb12e1eUL, 0x43d23e48UL, 0xfb6e592dUL, + 0xe9dbf6c3UL, 0x516791a6UL, 0xccb0a91fUL, 0x740cce7aUL, 0x66b96194UL, + 0xde0506f1UL + }, + { + 0x00000000UL, 0x96300777UL, 0x2c610eeeUL, 0xba510999UL, 0x19c46d07UL, + 0x8ff46a70UL, 0x35a563e9UL, 0xa395649eUL, 0x3288db0eUL, 0xa4b8dc79UL, + 0x1ee9d5e0UL, 0x88d9d297UL, 0x2b4cb609UL, 0xbd7cb17eUL, 0x072db8e7UL, + 0x911dbf90UL, 0x6410b71dUL, 0xf220b06aUL, 0x4871b9f3UL, 0xde41be84UL, + 0x7dd4da1aUL, 0xebe4dd6dUL, 0x51b5d4f4UL, 0xc785d383UL, 0x56986c13UL, + 0xc0a86b64UL, 0x7af962fdUL, 0xecc9658aUL, 0x4f5c0114UL, 0xd96c0663UL, + 0x633d0ffaUL, 0xf50d088dUL, 0xc8206e3bUL, 0x5e10694cUL, 0xe44160d5UL, + 0x727167a2UL, 0xd1e4033cUL, 0x47d4044bUL, 0xfd850dd2UL, 0x6bb50aa5UL, + 0xfaa8b535UL, 0x6c98b242UL, 0xd6c9bbdbUL, 0x40f9bcacUL, 0xe36cd832UL, + 0x755cdf45UL, 0xcf0dd6dcUL, 0x593dd1abUL, 0xac30d926UL, 0x3a00de51UL, + 0x8051d7c8UL, 0x1661d0bfUL, 0xb5f4b421UL, 0x23c4b356UL, 0x9995bacfUL, + 0x0fa5bdb8UL, 0x9eb80228UL, 0x0888055fUL, 0xb2d90cc6UL, 0x24e90bb1UL, + 0x877c6f2fUL, 0x114c6858UL, 0xab1d61c1UL, 0x3d2d66b6UL, 0x9041dc76UL, + 0x0671db01UL, 0xbc20d298UL, 0x2a10d5efUL, 0x8985b171UL, 0x1fb5b606UL, + 0xa5e4bf9fUL, 0x33d4b8e8UL, 0xa2c90778UL, 0x34f9000fUL, 0x8ea80996UL, + 0x18980ee1UL, 0xbb0d6a7fUL, 0x2d3d6d08UL, 0x976c6491UL, 0x015c63e6UL, + 0xf4516b6bUL, 0x62616c1cUL, 0xd8306585UL, 0x4e0062f2UL, 0xed95066cUL, + 0x7ba5011bUL, 0xc1f40882UL, 0x57c40ff5UL, 0xc6d9b065UL, 0x50e9b712UL, + 0xeab8be8bUL, 0x7c88b9fcUL, 0xdf1ddd62UL, 0x492dda15UL, 0xf37cd38cUL, + 0x654cd4fbUL, 0x5861b24dUL, 0xce51b53aUL, 0x7400bca3UL, 0xe230bbd4UL, + 0x41a5df4aUL, 0xd795d83dUL, 0x6dc4d1a4UL, 0xfbf4d6d3UL, 0x6ae96943UL, + 0xfcd96e34UL, 0x468867adUL, 0xd0b860daUL, 0x732d0444UL, 0xe51d0333UL, + 0x5f4c0aaaUL, 0xc97c0dddUL, 0x3c710550UL, 0xaa410227UL, 0x10100bbeUL, + 0x86200cc9UL, 0x25b56857UL, 0xb3856f20UL, 0x09d466b9UL, 0x9fe461ceUL, + 0x0ef9de5eUL, 0x98c9d929UL, 0x2298d0b0UL, 0xb4a8d7c7UL, 0x173db359UL, + 0x810db42eUL, 0x3b5cbdb7UL, 0xad6cbac0UL, 0x2083b8edUL, 0xb6b3bf9aUL, + 0x0ce2b603UL, 0x9ad2b174UL, 0x3947d5eaUL, 0xaf77d29dUL, 0x1526db04UL, + 0x8316dc73UL, 0x120b63e3UL, 0x843b6494UL, 0x3e6a6d0dUL, 0xa85a6a7aUL, + 0x0bcf0ee4UL, 0x9dff0993UL, 0x27ae000aUL, 0xb19e077dUL, 0x44930ff0UL, + 0xd2a30887UL, 0x68f2011eUL, 0xfec20669UL, 0x5d5762f7UL, 0xcb676580UL, + 0x71366c19UL, 0xe7066b6eUL, 0x761bd4feUL, 0xe02bd389UL, 0x5a7ada10UL, + 0xcc4add67UL, 0x6fdfb9f9UL, 0xf9efbe8eUL, 0x43beb717UL, 0xd58eb060UL, + 0xe8a3d6d6UL, 0x7e93d1a1UL, 0xc4c2d838UL, 0x52f2df4fUL, 0xf167bbd1UL, + 0x6757bca6UL, 0xdd06b53fUL, 0x4b36b248UL, 0xda2b0dd8UL, 0x4c1b0aafUL, + 0xf64a0336UL, 0x607a0441UL, 0xc3ef60dfUL, 0x55df67a8UL, 0xef8e6e31UL, + 0x79be6946UL, 0x8cb361cbUL, 0x1a8366bcUL, 0xa0d26f25UL, 0x36e26852UL, + 0x95770cccUL, 0x03470bbbUL, 0xb9160222UL, 0x2f260555UL, 0xbe3bbac5UL, + 0x280bbdb2UL, 0x925ab42bUL, 0x046ab35cUL, 0xa7ffd7c2UL, 0x31cfd0b5UL, + 0x8b9ed92cUL, 0x1daede5bUL, 0xb0c2649bUL, 0x26f263ecUL, 0x9ca36a75UL, + 0x0a936d02UL, 0xa906099cUL, 0x3f360eebUL, 0x85670772UL, 0x13570005UL, + 0x824abf95UL, 0x147ab8e2UL, 0xae2bb17bUL, 0x381bb60cUL, 0x9b8ed292UL, + 0x0dbed5e5UL, 0xb7efdc7cUL, 0x21dfdb0bUL, 0xd4d2d386UL, 0x42e2d4f1UL, + 0xf8b3dd68UL, 0x6e83da1fUL, 0xcd16be81UL, 0x5b26b9f6UL, 0xe177b06fUL, + 0x7747b718UL, 0xe65a0888UL, 0x706a0fffUL, 0xca3b0666UL, 0x5c0b0111UL, + 0xff9e658fUL, 0x69ae62f8UL, 0xd3ff6b61UL, 0x45cf6c16UL, 0x78e20aa0UL, + 0xeed20dd7UL, 0x5483044eUL, 0xc2b30339UL, 0x612667a7UL, 0xf71660d0UL, + 0x4d476949UL, 0xdb776e3eUL, 0x4a6ad1aeUL, 0xdc5ad6d9UL, 0x660bdf40UL, + 0xf03bd837UL, 0x53aebca9UL, 0xc59ebbdeUL, 0x7fcfb247UL, 0xe9ffb530UL, + 0x1cf2bdbdUL, 0x8ac2bacaUL, 0x3093b353UL, 0xa6a3b424UL, 0x0536d0baUL, + 0x9306d7cdUL, 0x2957de54UL, 0xbf67d923UL, 0x2e7a66b3UL, 0xb84a61c4UL, + 0x021b685dUL, 0x942b6f2aUL, 0x37be0bb4UL, 0xa18e0cc3UL, 0x1bdf055aUL, + 0x8def022dUL + }, + { + 0x00000000UL, 0x41311b19UL, 0x82623632UL, 0xc3532d2bUL, 0x04c56c64UL, + 0x45f4777dUL, 0x86a75a56UL, 0xc796414fUL, 0x088ad9c8UL, 0x49bbc2d1UL, + 0x8ae8effaUL, 0xcbd9f4e3UL, 0x0c4fb5acUL, 0x4d7eaeb5UL, 0x8e2d839eUL, + 0xcf1c9887UL, 0x5112c24aUL, 0x1023d953UL, 0xd370f478UL, 0x9241ef61UL, + 0x55d7ae2eUL, 0x14e6b537UL, 0xd7b5981cUL, 0x96848305UL, 0x59981b82UL, + 0x18a9009bUL, 0xdbfa2db0UL, 0x9acb36a9UL, 0x5d5d77e6UL, 0x1c6c6cffUL, + 0xdf3f41d4UL, 0x9e0e5acdUL, 0xa2248495UL, 0xe3159f8cUL, 0x2046b2a7UL, + 0x6177a9beUL, 0xa6e1e8f1UL, 0xe7d0f3e8UL, 0x2483dec3UL, 0x65b2c5daUL, + 0xaaae5d5dUL, 0xeb9f4644UL, 0x28cc6b6fUL, 0x69fd7076UL, 0xae6b3139UL, + 0xef5a2a20UL, 0x2c09070bUL, 0x6d381c12UL, 0xf33646dfUL, 0xb2075dc6UL, + 0x715470edUL, 0x30656bf4UL, 0xf7f32abbUL, 0xb6c231a2UL, 0x75911c89UL, + 0x34a00790UL, 0xfbbc9f17UL, 0xba8d840eUL, 0x79dea925UL, 0x38efb23cUL, + 0xff79f373UL, 0xbe48e86aUL, 0x7d1bc541UL, 0x3c2ade58UL, 0x054f79f0UL, + 0x447e62e9UL, 0x872d4fc2UL, 0xc61c54dbUL, 0x018a1594UL, 0x40bb0e8dUL, + 0x83e823a6UL, 0xc2d938bfUL, 0x0dc5a038UL, 0x4cf4bb21UL, 0x8fa7960aUL, + 0xce968d13UL, 0x0900cc5cUL, 0x4831d745UL, 0x8b62fa6eUL, 0xca53e177UL, + 0x545dbbbaUL, 0x156ca0a3UL, 0xd63f8d88UL, 0x970e9691UL, 0x5098d7deUL, + 0x11a9ccc7UL, 0xd2fae1ecUL, 0x93cbfaf5UL, 0x5cd76272UL, 0x1de6796bUL, + 0xdeb55440UL, 0x9f844f59UL, 0x58120e16UL, 0x1923150fUL, 0xda703824UL, + 0x9b41233dUL, 0xa76bfd65UL, 0xe65ae67cUL, 0x2509cb57UL, 0x6438d04eUL, + 0xa3ae9101UL, 0xe29f8a18UL, 0x21cca733UL, 0x60fdbc2aUL, 0xafe124adUL, + 0xeed03fb4UL, 0x2d83129fUL, 0x6cb20986UL, 0xab2448c9UL, 0xea1553d0UL, + 0x29467efbUL, 0x687765e2UL, 0xf6793f2fUL, 0xb7482436UL, 0x741b091dUL, + 0x352a1204UL, 0xf2bc534bUL, 0xb38d4852UL, 0x70de6579UL, 0x31ef7e60UL, + 0xfef3e6e7UL, 0xbfc2fdfeUL, 0x7c91d0d5UL, 0x3da0cbccUL, 0xfa368a83UL, + 0xbb07919aUL, 0x7854bcb1UL, 0x3965a7a8UL, 0x4b98833bUL, 0x0aa99822UL, + 0xc9fab509UL, 0x88cbae10UL, 0x4f5def5fUL, 0x0e6cf446UL, 0xcd3fd96dUL, + 0x8c0ec274UL, 0x43125af3UL, 0x022341eaUL, 0xc1706cc1UL, 0x804177d8UL, + 0x47d73697UL, 0x06e62d8eUL, 0xc5b500a5UL, 0x84841bbcUL, 0x1a8a4171UL, + 0x5bbb5a68UL, 0x98e87743UL, 0xd9d96c5aUL, 0x1e4f2d15UL, 0x5f7e360cUL, + 0x9c2d1b27UL, 0xdd1c003eUL, 0x120098b9UL, 0x533183a0UL, 0x9062ae8bUL, + 0xd153b592UL, 0x16c5f4ddUL, 0x57f4efc4UL, 0x94a7c2efUL, 0xd596d9f6UL, + 0xe9bc07aeUL, 0xa88d1cb7UL, 0x6bde319cUL, 0x2aef2a85UL, 0xed796bcaUL, + 0xac4870d3UL, 0x6f1b5df8UL, 0x2e2a46e1UL, 0xe136de66UL, 0xa007c57fUL, + 0x6354e854UL, 0x2265f34dUL, 0xe5f3b202UL, 0xa4c2a91bUL, 0x67918430UL, + 0x26a09f29UL, 0xb8aec5e4UL, 0xf99fdefdUL, 0x3accf3d6UL, 0x7bfde8cfUL, + 0xbc6ba980UL, 0xfd5ab299UL, 0x3e099fb2UL, 0x7f3884abUL, 0xb0241c2cUL, + 0xf1150735UL, 0x32462a1eUL, 0x73773107UL, 0xb4e17048UL, 0xf5d06b51UL, + 0x3683467aUL, 0x77b25d63UL, 0x4ed7facbUL, 0x0fe6e1d2UL, 0xccb5ccf9UL, + 0x8d84d7e0UL, 0x4a1296afUL, 0x0b238db6UL, 0xc870a09dUL, 0x8941bb84UL, + 0x465d2303UL, 0x076c381aUL, 0xc43f1531UL, 0x850e0e28UL, 0x42984f67UL, + 0x03a9547eUL, 0xc0fa7955UL, 0x81cb624cUL, 0x1fc53881UL, 0x5ef42398UL, + 0x9da70eb3UL, 0xdc9615aaUL, 0x1b0054e5UL, 0x5a314ffcUL, 0x996262d7UL, + 0xd85379ceUL, 0x174fe149UL, 0x567efa50UL, 0x952dd77bUL, 0xd41ccc62UL, + 0x138a8d2dUL, 0x52bb9634UL, 0x91e8bb1fUL, 0xd0d9a006UL, 0xecf37e5eUL, + 0xadc26547UL, 0x6e91486cUL, 0x2fa05375UL, 0xe836123aUL, 0xa9070923UL, + 0x6a542408UL, 0x2b653f11UL, 0xe479a796UL, 0xa548bc8fUL, 0x661b91a4UL, + 0x272a8abdUL, 0xe0bccbf2UL, 0xa18dd0ebUL, 0x62defdc0UL, 0x23efe6d9UL, + 0xbde1bc14UL, 0xfcd0a70dUL, 0x3f838a26UL, 0x7eb2913fUL, 0xb924d070UL, + 0xf815cb69UL, 0x3b46e642UL, 0x7a77fd5bUL, 0xb56b65dcUL, 0xf45a7ec5UL, + 0x370953eeUL, 0x763848f7UL, 0xb1ae09b8UL, 0xf09f12a1UL, 0x33cc3f8aUL, + 0x72fd2493UL + }, + { + 0x00000000UL, 0x376ac201UL, 0x6ed48403UL, 0x59be4602UL, 0xdca80907UL, + 0xebc2cb06UL, 0xb27c8d04UL, 0x85164f05UL, 0xb851130eUL, 0x8f3bd10fUL, + 0xd685970dUL, 0xe1ef550cUL, 0x64f91a09UL, 0x5393d808UL, 0x0a2d9e0aUL, + 0x3d475c0bUL, 0x70a3261cUL, 0x47c9e41dUL, 0x1e77a21fUL, 0x291d601eUL, + 0xac0b2f1bUL, 0x9b61ed1aUL, 0xc2dfab18UL, 0xf5b56919UL, 0xc8f23512UL, + 0xff98f713UL, 0xa626b111UL, 0x914c7310UL, 0x145a3c15UL, 0x2330fe14UL, + 0x7a8eb816UL, 0x4de47a17UL, 0xe0464d38UL, 0xd72c8f39UL, 0x8e92c93bUL, + 0xb9f80b3aUL, 0x3cee443fUL, 0x0b84863eUL, 0x523ac03cUL, 0x6550023dUL, + 0x58175e36UL, 0x6f7d9c37UL, 0x36c3da35UL, 0x01a91834UL, 0x84bf5731UL, + 0xb3d59530UL, 0xea6bd332UL, 0xdd011133UL, 0x90e56b24UL, 0xa78fa925UL, + 0xfe31ef27UL, 0xc95b2d26UL, 0x4c4d6223UL, 0x7b27a022UL, 0x2299e620UL, + 0x15f32421UL, 0x28b4782aUL, 0x1fdeba2bUL, 0x4660fc29UL, 0x710a3e28UL, + 0xf41c712dUL, 0xc376b32cUL, 0x9ac8f52eUL, 0xada2372fUL, 0xc08d9a70UL, + 0xf7e75871UL, 0xae591e73UL, 0x9933dc72UL, 0x1c259377UL, 0x2b4f5176UL, + 0x72f11774UL, 0x459bd575UL, 0x78dc897eUL, 0x4fb64b7fUL, 0x16080d7dUL, + 0x2162cf7cUL, 0xa4748079UL, 0x931e4278UL, 0xcaa0047aUL, 0xfdcac67bUL, + 0xb02ebc6cUL, 0x87447e6dUL, 0xdefa386fUL, 0xe990fa6eUL, 0x6c86b56bUL, + 0x5bec776aUL, 0x02523168UL, 0x3538f369UL, 0x087faf62UL, 0x3f156d63UL, + 0x66ab2b61UL, 0x51c1e960UL, 0xd4d7a665UL, 0xe3bd6464UL, 0xba032266UL, + 0x8d69e067UL, 0x20cbd748UL, 0x17a11549UL, 0x4e1f534bUL, 0x7975914aUL, + 0xfc63de4fUL, 0xcb091c4eUL, 0x92b75a4cUL, 0xa5dd984dUL, 0x989ac446UL, + 0xaff00647UL, 0xf64e4045UL, 0xc1248244UL, 0x4432cd41UL, 0x73580f40UL, + 0x2ae64942UL, 0x1d8c8b43UL, 0x5068f154UL, 0x67023355UL, 0x3ebc7557UL, + 0x09d6b756UL, 0x8cc0f853UL, 0xbbaa3a52UL, 0xe2147c50UL, 0xd57ebe51UL, + 0xe839e25aUL, 0xdf53205bUL, 0x86ed6659UL, 0xb187a458UL, 0x3491eb5dUL, + 0x03fb295cUL, 0x5a456f5eUL, 0x6d2fad5fUL, 0x801b35e1UL, 0xb771f7e0UL, + 0xeecfb1e2UL, 0xd9a573e3UL, 0x5cb33ce6UL, 0x6bd9fee7UL, 0x3267b8e5UL, + 0x050d7ae4UL, 0x384a26efUL, 0x0f20e4eeUL, 0x569ea2ecUL, 0x61f460edUL, + 0xe4e22fe8UL, 0xd388ede9UL, 0x8a36abebUL, 0xbd5c69eaUL, 0xf0b813fdUL, + 0xc7d2d1fcUL, 0x9e6c97feUL, 0xa90655ffUL, 0x2c101afaUL, 0x1b7ad8fbUL, + 0x42c49ef9UL, 0x75ae5cf8UL, 0x48e900f3UL, 0x7f83c2f2UL, 0x263d84f0UL, + 0x115746f1UL, 0x944109f4UL, 0xa32bcbf5UL, 0xfa958df7UL, 0xcdff4ff6UL, + 0x605d78d9UL, 0x5737bad8UL, 0x0e89fcdaUL, 0x39e33edbUL, 0xbcf571deUL, + 0x8b9fb3dfUL, 0xd221f5ddUL, 0xe54b37dcUL, 0xd80c6bd7UL, 0xef66a9d6UL, + 0xb6d8efd4UL, 0x81b22dd5UL, 0x04a462d0UL, 0x33cea0d1UL, 0x6a70e6d3UL, + 0x5d1a24d2UL, 0x10fe5ec5UL, 0x27949cc4UL, 0x7e2adac6UL, 0x494018c7UL, + 0xcc5657c2UL, 0xfb3c95c3UL, 0xa282d3c1UL, 0x95e811c0UL, 0xa8af4dcbUL, + 0x9fc58fcaUL, 0xc67bc9c8UL, 0xf1110bc9UL, 0x740744ccUL, 0x436d86cdUL, + 0x1ad3c0cfUL, 0x2db902ceUL, 0x4096af91UL, 0x77fc6d90UL, 0x2e422b92UL, + 0x1928e993UL, 0x9c3ea696UL, 0xab546497UL, 0xf2ea2295UL, 0xc580e094UL, + 0xf8c7bc9fUL, 0xcfad7e9eUL, 0x9613389cUL, 0xa179fa9dUL, 0x246fb598UL, + 0x13057799UL, 0x4abb319bUL, 0x7dd1f39aUL, 0x3035898dUL, 0x075f4b8cUL, + 0x5ee10d8eUL, 0x698bcf8fUL, 0xec9d808aUL, 0xdbf7428bUL, 0x82490489UL, + 0xb523c688UL, 0x88649a83UL, 0xbf0e5882UL, 0xe6b01e80UL, 0xd1dadc81UL, + 0x54cc9384UL, 0x63a65185UL, 0x3a181787UL, 0x0d72d586UL, 0xa0d0e2a9UL, + 0x97ba20a8UL, 0xce0466aaUL, 0xf96ea4abUL, 0x7c78ebaeUL, 0x4b1229afUL, + 0x12ac6fadUL, 0x25c6adacUL, 0x1881f1a7UL, 0x2feb33a6UL, 0x765575a4UL, + 0x413fb7a5UL, 0xc429f8a0UL, 0xf3433aa1UL, 0xaafd7ca3UL, 0x9d97bea2UL, + 0xd073c4b5UL, 0xe71906b4UL, 0xbea740b6UL, 0x89cd82b7UL, 0x0cdbcdb2UL, + 0x3bb10fb3UL, 0x620f49b1UL, 0x55658bb0UL, 0x6822d7bbUL, 0x5f4815baUL, + 0x06f653b8UL, 0x319c91b9UL, 0xb48adebcUL, 0x83e01cbdUL, 0xda5e5abfUL, + 0xed3498beUL + }, + { + 0x00000000UL, 0x6567bcb8UL, 0x8bc809aaUL, 0xeeafb512UL, 0x5797628fUL, + 0x32f0de37UL, 0xdc5f6b25UL, 0xb938d79dUL, 0xef28b4c5UL, 0x8a4f087dUL, + 0x64e0bd6fUL, 0x018701d7UL, 0xb8bfd64aUL, 0xddd86af2UL, 0x3377dfe0UL, + 0x56106358UL, 0x9f571950UL, 0xfa30a5e8UL, 0x149f10faUL, 0x71f8ac42UL, + 0xc8c07bdfUL, 0xada7c767UL, 0x43087275UL, 0x266fcecdUL, 0x707fad95UL, + 0x1518112dUL, 0xfbb7a43fUL, 0x9ed01887UL, 0x27e8cf1aUL, 0x428f73a2UL, + 0xac20c6b0UL, 0xc9477a08UL, 0x3eaf32a0UL, 0x5bc88e18UL, 0xb5673b0aUL, + 0xd00087b2UL, 0x6938502fUL, 0x0c5fec97UL, 0xe2f05985UL, 0x8797e53dUL, + 0xd1878665UL, 0xb4e03addUL, 0x5a4f8fcfUL, 0x3f283377UL, 0x8610e4eaUL, + 0xe3775852UL, 0x0dd8ed40UL, 0x68bf51f8UL, 0xa1f82bf0UL, 0xc49f9748UL, + 0x2a30225aUL, 0x4f579ee2UL, 0xf66f497fUL, 0x9308f5c7UL, 0x7da740d5UL, + 0x18c0fc6dUL, 0x4ed09f35UL, 0x2bb7238dUL, 0xc518969fUL, 0xa07f2a27UL, + 0x1947fdbaUL, 0x7c204102UL, 0x928ff410UL, 0xf7e848a8UL, 0x3d58149bUL, + 0x583fa823UL, 0xb6901d31UL, 0xd3f7a189UL, 0x6acf7614UL, 0x0fa8caacUL, + 0xe1077fbeUL, 0x8460c306UL, 0xd270a05eUL, 0xb7171ce6UL, 0x59b8a9f4UL, + 0x3cdf154cUL, 0x85e7c2d1UL, 0xe0807e69UL, 0x0e2fcb7bUL, 0x6b4877c3UL, + 0xa20f0dcbUL, 0xc768b173UL, 0x29c70461UL, 0x4ca0b8d9UL, 0xf5986f44UL, + 0x90ffd3fcUL, 0x7e5066eeUL, 0x1b37da56UL, 0x4d27b90eUL, 0x284005b6UL, + 0xc6efb0a4UL, 0xa3880c1cUL, 0x1ab0db81UL, 0x7fd76739UL, 0x9178d22bUL, + 0xf41f6e93UL, 0x03f7263bUL, 0x66909a83UL, 0x883f2f91UL, 0xed589329UL, + 0x546044b4UL, 0x3107f80cUL, 0xdfa84d1eUL, 0xbacff1a6UL, 0xecdf92feUL, + 0x89b82e46UL, 0x67179b54UL, 0x027027ecUL, 0xbb48f071UL, 0xde2f4cc9UL, + 0x3080f9dbUL, 0x55e74563UL, 0x9ca03f6bUL, 0xf9c783d3UL, 0x176836c1UL, + 0x720f8a79UL, 0xcb375de4UL, 0xae50e15cUL, 0x40ff544eUL, 0x2598e8f6UL, + 0x73888baeUL, 0x16ef3716UL, 0xf8408204UL, 0x9d273ebcUL, 0x241fe921UL, + 0x41785599UL, 0xafd7e08bUL, 0xcab05c33UL, 0x3bb659edUL, 0x5ed1e555UL, + 0xb07e5047UL, 0xd519ecffUL, 0x6c213b62UL, 0x094687daUL, 0xe7e932c8UL, + 0x828e8e70UL, 0xd49eed28UL, 0xb1f95190UL, 0x5f56e482UL, 0x3a31583aUL, + 0x83098fa7UL, 0xe66e331fUL, 0x08c1860dUL, 0x6da63ab5UL, 0xa4e140bdUL, + 0xc186fc05UL, 0x2f294917UL, 0x4a4ef5afUL, 0xf3762232UL, 0x96119e8aUL, + 0x78be2b98UL, 0x1dd99720UL, 0x4bc9f478UL, 0x2eae48c0UL, 0xc001fdd2UL, + 0xa566416aUL, 0x1c5e96f7UL, 0x79392a4fUL, 0x97969f5dUL, 0xf2f123e5UL, + 0x05196b4dUL, 0x607ed7f5UL, 0x8ed162e7UL, 0xebb6de5fUL, 0x528e09c2UL, + 0x37e9b57aUL, 0xd9460068UL, 0xbc21bcd0UL, 0xea31df88UL, 0x8f566330UL, + 0x61f9d622UL, 0x049e6a9aUL, 0xbda6bd07UL, 0xd8c101bfUL, 0x366eb4adUL, + 0x53090815UL, 0x9a4e721dUL, 0xff29cea5UL, 0x11867bb7UL, 0x74e1c70fUL, + 0xcdd91092UL, 0xa8beac2aUL, 0x46111938UL, 0x2376a580UL, 0x7566c6d8UL, + 0x10017a60UL, 0xfeaecf72UL, 0x9bc973caUL, 0x22f1a457UL, 0x479618efUL, + 0xa939adfdUL, 0xcc5e1145UL, 0x06ee4d76UL, 0x6389f1ceUL, 0x8d2644dcUL, + 0xe841f864UL, 0x51792ff9UL, 0x341e9341UL, 0xdab12653UL, 0xbfd69aebUL, + 0xe9c6f9b3UL, 0x8ca1450bUL, 0x620ef019UL, 0x07694ca1UL, 0xbe519b3cUL, + 0xdb362784UL, 0x35999296UL, 0x50fe2e2eUL, 0x99b95426UL, 0xfcdee89eUL, + 0x12715d8cUL, 0x7716e134UL, 0xce2e36a9UL, 0xab498a11UL, 0x45e63f03UL, + 0x208183bbUL, 0x7691e0e3UL, 0x13f65c5bUL, 0xfd59e949UL, 0x983e55f1UL, + 0x2106826cUL, 0x44613ed4UL, 0xaace8bc6UL, 0xcfa9377eUL, 0x38417fd6UL, + 0x5d26c36eUL, 0xb389767cUL, 0xd6eecac4UL, 0x6fd61d59UL, 0x0ab1a1e1UL, + 0xe41e14f3UL, 0x8179a84bUL, 0xd769cb13UL, 0xb20e77abUL, 0x5ca1c2b9UL, + 0x39c67e01UL, 0x80fea99cUL, 0xe5991524UL, 0x0b36a036UL, 0x6e511c8eUL, + 0xa7166686UL, 0xc271da3eUL, 0x2cde6f2cUL, 0x49b9d394UL, 0xf0810409UL, + 0x95e6b8b1UL, 0x7b490da3UL, 0x1e2eb11bUL, 0x483ed243UL, 0x2d596efbUL, + 0xc3f6dbe9UL, 0xa6916751UL, 0x1fa9b0ccUL, 0x7ace0c74UL, 0x9461b966UL, + 0xf10605deUL +#endif + } +}; diff --git a/waterbox/nyma/zlib/deflate.c b/waterbox/nyma/zlib/deflate.c new file mode 100644 index 0000000000..1ec761448d --- /dev/null +++ b/waterbox/nyma/zlib/deflate.c @@ -0,0 +1,2163 @@ +/* deflate.c -- compress data using the deflation algorithm + * Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* + * ALGORITHM + * + * The "deflation" process depends on being able to identify portions + * of the input text which are identical to earlier input (within a + * sliding window trailing behind the input currently being processed). + * + * The most straightforward technique turns out to be the fastest for + * most input files: try all possible matches and select the longest. + * The key feature of this algorithm is that insertions into the string + * dictionary are very simple and thus fast, and deletions are avoided + * completely. Insertions are performed at each input character, whereas + * string matches are performed only when the previous match ends. So it + * is preferable to spend more time in matches to allow very fast string + * insertions and avoid deletions. The matching algorithm for small + * strings is inspired from that of Rabin & Karp. A brute force approach + * is used to find longer strings when a small match has been found. + * A similar algorithm is used in comic (by Jan-Mark Wams) and freeze + * (by Leonid Broukhis). + * A previous version of this file used a more sophisticated algorithm + * (by Fiala and Greene) which is guaranteed to run in linear amortized + * time, but has a larger average cost, uses more memory and is patented. + * However the F&G algorithm may be faster for some highly redundant + * files if the parameter max_chain_length (described below) is too large. + * + * ACKNOWLEDGEMENTS + * + * The idea of lazy evaluation of matches is due to Jan-Mark Wams, and + * I found it in 'freeze' written by Leonid Broukhis. + * Thanks to many people for bug reports and testing. + * + * REFERENCES + * + * Deutsch, L.P.,"DEFLATE Compressed Data Format Specification". + * Available in http://tools.ietf.org/html/rfc1951 + * + * A description of the Rabin and Karp algorithm is given in the book + * "Algorithms" by R. Sedgewick, Addison-Wesley, p252. + * + * Fiala,E.R., and Greene,D.H. + * Data Compression with Finite Windows, Comm.ACM, 32,4 (1989) 490-595 + * + */ + +/* @(#) $Id$ */ + +#include "deflate.h" + +const char deflate_copyright[] = + " deflate 1.2.11 Copyright 1995-2017 Jean-loup Gailly and Mark Adler "; +/* + If you use the zlib library in a product, an acknowledgment is welcome + in the documentation of your product. If for some reason you cannot + include such an acknowledgment, I would appreciate that you keep this + copyright string in the executable of your product. + */ + +/* =========================================================================== + * Function prototypes. + */ +typedef enum { + need_more, /* block not completed, need more input or more output */ + block_done, /* block flush performed */ + finish_started, /* finish started, need only more output at next deflate */ + finish_done /* finish done, accept no more input or output */ +} block_state; + +typedef block_state (*compress_func) OF((deflate_state *s, int flush)); +/* Compression function. Returns the block state after the call. */ + +local int deflateStateCheck OF((z_streamp strm)); +local void slide_hash OF((deflate_state *s)); +local void fill_window OF((deflate_state *s)); +local block_state deflate_stored OF((deflate_state *s, int flush)); +local block_state deflate_fast OF((deflate_state *s, int flush)); +#ifndef FASTEST +local block_state deflate_slow OF((deflate_state *s, int flush)); +#endif +local block_state deflate_rle OF((deflate_state *s, int flush)); +local block_state deflate_huff OF((deflate_state *s, int flush)); +local void lm_init OF((deflate_state *s)); +local void putShortMSB OF((deflate_state *s, uInt b)); +local void flush_pending OF((z_streamp strm)); +local unsigned read_buf OF((z_streamp strm, Bytef *buf, unsigned size)); +#ifdef ASMV +# pragma message("Assembler code may have bugs -- use at your own risk") + void match_init OF((void)); /* asm code initialization */ + uInt longest_match OF((deflate_state *s, IPos cur_match)); +#else +local uInt longest_match OF((deflate_state *s, IPos cur_match)); +#endif + +#ifdef ZLIB_DEBUG +local void check_match OF((deflate_state *s, IPos start, IPos match, + int length)); +#endif + +/* =========================================================================== + * Local data + */ + +#define NIL 0 +/* Tail of hash chains */ + +#ifndef TOO_FAR +# define TOO_FAR 4096 +#endif +/* Matches of length 3 are discarded if their distance exceeds TOO_FAR */ + +/* Values for max_lazy_match, good_match and max_chain_length, depending on + * the desired pack level (0..9). The values given below have been tuned to + * exclude worst case performance for pathological files. Better values may be + * found for specific files. + */ +typedef struct config_s { + ush good_length; /* reduce lazy search above this match length */ + ush max_lazy; /* do not perform lazy search above this match length */ + ush nice_length; /* quit search above this match length */ + ush max_chain; + compress_func func; +} config; + +#ifdef FASTEST +local const config configuration_table[2] = { +/* good lazy nice chain */ +/* 0 */ {0, 0, 0, 0, deflate_stored}, /* store only */ +/* 1 */ {4, 4, 8, 4, deflate_fast}}; /* max speed, no lazy matches */ +#else +local const config configuration_table[10] = { +/* good lazy nice chain */ +/* 0 */ {0, 0, 0, 0, deflate_stored}, /* store only */ +/* 1 */ {4, 4, 8, 4, deflate_fast}, /* max speed, no lazy matches */ +/* 2 */ {4, 5, 16, 8, deflate_fast}, +/* 3 */ {4, 6, 32, 32, deflate_fast}, + +/* 4 */ {4, 4, 16, 16, deflate_slow}, /* lazy matches */ +/* 5 */ {8, 16, 32, 32, deflate_slow}, +/* 6 */ {8, 16, 128, 128, deflate_slow}, +/* 7 */ {8, 32, 128, 256, deflate_slow}, +/* 8 */ {32, 128, 258, 1024, deflate_slow}, +/* 9 */ {32, 258, 258, 4096, deflate_slow}}; /* max compression */ +#endif + +/* Note: the deflate() code requires max_lazy >= MIN_MATCH and max_chain >= 4 + * For deflate_fast() (levels <= 3) good is ignored and lazy has a different + * meaning. + */ + +/* rank Z_BLOCK between Z_NO_FLUSH and Z_PARTIAL_FLUSH */ +#define RANK(f) (((f) * 2) - ((f) > 4 ? 9 : 0)) + +/* =========================================================================== + * Update a hash value with the given input byte + * IN assertion: all calls to UPDATE_HASH are made with consecutive input + * characters, so that a running hash key can be computed from the previous + * key instead of complete recalculation each time. + */ +#define UPDATE_HASH(s,h,c) (h = (((h)<hash_shift) ^ (c)) & s->hash_mask) + + +/* =========================================================================== + * Insert string str in the dictionary and set match_head to the previous head + * of the hash chain (the most recent string with same hash key). Return + * the previous length of the hash chain. + * If this file is compiled with -DFASTEST, the compression level is forced + * to 1, and no hash chains are maintained. + * IN assertion: all calls to INSERT_STRING are made with consecutive input + * characters and the first MIN_MATCH bytes of str are valid (except for + * the last MIN_MATCH-1 bytes of the input file). + */ +#ifdef FASTEST +#define INSERT_STRING(s, str, match_head) \ + (UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \ + match_head = s->head[s->ins_h], \ + s->head[s->ins_h] = (Pos)(str)) +#else +#define INSERT_STRING(s, str, match_head) \ + (UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \ + match_head = s->prev[(str) & s->w_mask] = s->head[s->ins_h], \ + s->head[s->ins_h] = (Pos)(str)) +#endif + +/* =========================================================================== + * Initialize the hash table (avoiding 64K overflow for 16 bit systems). + * prev[] will be initialized on the fly. + */ +#define CLEAR_HASH(s) \ + s->head[s->hash_size-1] = NIL; \ + zmemzero((Bytef *)s->head, (unsigned)(s->hash_size-1)*sizeof(*s->head)); + +/* =========================================================================== + * Slide the hash table when sliding the window down (could be avoided with 32 + * bit values at the expense of memory usage). We slide even when level == 0 to + * keep the hash table consistent if we switch back to level > 0 later. + */ +local void slide_hash(s) + deflate_state *s; +{ + unsigned n, m; + Posf *p; + uInt wsize = s->w_size; + + n = s->hash_size; + p = &s->head[n]; + do { + m = *--p; + *p = (Pos)(m >= wsize ? m - wsize : NIL); + } while (--n); + n = wsize; +#ifndef FASTEST + p = &s->prev[n]; + do { + m = *--p; + *p = (Pos)(m >= wsize ? m - wsize : NIL); + /* If n is not on any hash chain, prev[n] is garbage but + * its value will never be used. + */ + } while (--n); +#endif +} + +/* ========================================================================= */ +int ZEXPORT deflateInit_(strm, level, version, stream_size) + z_streamp strm; + int level; + const char *version; + int stream_size; +{ + return deflateInit2_(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, + Z_DEFAULT_STRATEGY, version, stream_size); + /* To do: ignore strm->next_in if we use it as window */ +} + +/* ========================================================================= */ +int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy, + version, stream_size) + z_streamp strm; + int level; + int method; + int windowBits; + int memLevel; + int strategy; + const char *version; + int stream_size; +{ + deflate_state *s; + int wrap = 1; + static const char my_version[] = ZLIB_VERSION; + + ushf *overlay; + /* We overlay pending_buf and d_buf+l_buf. This works since the average + * output size for (length,distance) codes is <= 24 bits. + */ + + if (version == Z_NULL || version[0] != my_version[0] || + stream_size != sizeof(z_stream)) { + return Z_VERSION_ERROR; + } + if (strm == Z_NULL) return Z_STREAM_ERROR; + + strm->msg = Z_NULL; + if (strm->zalloc == (alloc_func)0) { +#ifdef Z_SOLO + return Z_STREAM_ERROR; +#else + strm->zalloc = zcalloc; + strm->opaque = (voidpf)0; +#endif + } + if (strm->zfree == (free_func)0) +#ifdef Z_SOLO + return Z_STREAM_ERROR; +#else + strm->zfree = zcfree; +#endif + +#ifdef FASTEST + if (level != 0) level = 1; +#else + if (level == Z_DEFAULT_COMPRESSION) level = 6; +#endif + + if (windowBits < 0) { /* suppress zlib wrapper */ + wrap = 0; + windowBits = -windowBits; + } +#ifdef GZIP + else if (windowBits > 15) { + wrap = 2; /* write gzip wrapper instead */ + windowBits -= 16; + } +#endif + if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method != Z_DEFLATED || + windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || + strategy < 0 || strategy > Z_FIXED || (windowBits == 8 && wrap != 1)) { + return Z_STREAM_ERROR; + } + if (windowBits == 8) windowBits = 9; /* until 256-byte window bug fixed */ + s = (deflate_state *) ZALLOC(strm, 1, sizeof(deflate_state)); + if (s == Z_NULL) return Z_MEM_ERROR; + strm->state = (struct internal_state FAR *)s; + s->strm = strm; + s->status = INIT_STATE; /* to pass state test in deflateReset() */ + + s->wrap = wrap; + s->gzhead = Z_NULL; + s->w_bits = (uInt)windowBits; + s->w_size = 1 << s->w_bits; + s->w_mask = s->w_size - 1; + + s->hash_bits = (uInt)memLevel + 7; + s->hash_size = 1 << s->hash_bits; + s->hash_mask = s->hash_size - 1; + s->hash_shift = ((s->hash_bits+MIN_MATCH-1)/MIN_MATCH); + + s->window = (Bytef *) ZALLOC(strm, s->w_size, 2*sizeof(Byte)); + s->prev = (Posf *) ZALLOC(strm, s->w_size, sizeof(Pos)); + s->head = (Posf *) ZALLOC(strm, s->hash_size, sizeof(Pos)); + + s->high_water = 0; /* nothing written to s->window yet */ + + s->lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */ + + overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2); + s->pending_buf = (uchf *) overlay; + s->pending_buf_size = (ulg)s->lit_bufsize * (sizeof(ush)+2L); + + if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL || + s->pending_buf == Z_NULL) { + s->status = FINISH_STATE; + strm->msg = ERR_MSG(Z_MEM_ERROR); + deflateEnd (strm); + return Z_MEM_ERROR; + } + s->d_buf = overlay + s->lit_bufsize/sizeof(ush); + s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize; + + s->level = level; + s->strategy = strategy; + s->method = (Byte)method; + + return deflateReset(strm); +} + +/* ========================================================================= + * Check for a valid deflate stream state. Return 0 if ok, 1 if not. + */ +local int deflateStateCheck (strm) + z_streamp strm; +{ + deflate_state *s; + if (strm == Z_NULL || + strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0) + return 1; + s = strm->state; + if (s == Z_NULL || s->strm != strm || (s->status != INIT_STATE && +#ifdef GZIP + s->status != GZIP_STATE && +#endif + s->status != EXTRA_STATE && + s->status != NAME_STATE && + s->status != COMMENT_STATE && + s->status != HCRC_STATE && + s->status != BUSY_STATE && + s->status != FINISH_STATE)) + return 1; + return 0; +} + +/* ========================================================================= */ +int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength) + z_streamp strm; + const Bytef *dictionary; + uInt dictLength; +{ + deflate_state *s; + uInt str, n; + int wrap; + unsigned avail; + z_const unsigned char *next; + + if (deflateStateCheck(strm) || dictionary == Z_NULL) + return Z_STREAM_ERROR; + s = strm->state; + wrap = s->wrap; + if (wrap == 2 || (wrap == 1 && s->status != INIT_STATE) || s->lookahead) + return Z_STREAM_ERROR; + + /* when using zlib wrappers, compute Adler-32 for provided dictionary */ + if (wrap == 1) + strm->adler = adler32(strm->adler, dictionary, dictLength); + s->wrap = 0; /* avoid computing Adler-32 in read_buf */ + + /* if dictionary would fill window, just replace the history */ + if (dictLength >= s->w_size) { + if (wrap == 0) { /* already empty otherwise */ + CLEAR_HASH(s); + s->strstart = 0; + s->block_start = 0L; + s->insert = 0; + } + dictionary += dictLength - s->w_size; /* use the tail */ + dictLength = s->w_size; + } + + /* insert dictionary into window and hash */ + avail = strm->avail_in; + next = strm->next_in; + strm->avail_in = dictLength; + strm->next_in = (z_const Bytef *)dictionary; + fill_window(s); + while (s->lookahead >= MIN_MATCH) { + str = s->strstart; + n = s->lookahead - (MIN_MATCH-1); + do { + UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); +#ifndef FASTEST + s->prev[str & s->w_mask] = s->head[s->ins_h]; +#endif + s->head[s->ins_h] = (Pos)str; + str++; + } while (--n); + s->strstart = str; + s->lookahead = MIN_MATCH-1; + fill_window(s); + } + s->strstart += s->lookahead; + s->block_start = (long)s->strstart; + s->insert = s->lookahead; + s->lookahead = 0; + s->match_length = s->prev_length = MIN_MATCH-1; + s->match_available = 0; + strm->next_in = next; + strm->avail_in = avail; + s->wrap = wrap; + return Z_OK; +} + +/* ========================================================================= */ +int ZEXPORT deflateGetDictionary (strm, dictionary, dictLength) + z_streamp strm; + Bytef *dictionary; + uInt *dictLength; +{ + deflate_state *s; + uInt len; + + if (deflateStateCheck(strm)) + return Z_STREAM_ERROR; + s = strm->state; + len = s->strstart + s->lookahead; + if (len > s->w_size) + len = s->w_size; + if (dictionary != Z_NULL && len) + zmemcpy(dictionary, s->window + s->strstart + s->lookahead - len, len); + if (dictLength != Z_NULL) + *dictLength = len; + return Z_OK; +} + +/* ========================================================================= */ +int ZEXPORT deflateResetKeep (strm) + z_streamp strm; +{ + deflate_state *s; + + if (deflateStateCheck(strm)) { + return Z_STREAM_ERROR; + } + + strm->total_in = strm->total_out = 0; + strm->msg = Z_NULL; /* use zfree if we ever allocate msg dynamically */ + strm->data_type = Z_UNKNOWN; + + s = (deflate_state *)strm->state; + s->pending = 0; + s->pending_out = s->pending_buf; + + if (s->wrap < 0) { + s->wrap = -s->wrap; /* was made negative by deflate(..., Z_FINISH); */ + } + s->status = +#ifdef GZIP + s->wrap == 2 ? GZIP_STATE : +#endif + s->wrap ? INIT_STATE : BUSY_STATE; + strm->adler = +#ifdef GZIP + s->wrap == 2 ? crc32(0L, Z_NULL, 0) : +#endif + adler32(0L, Z_NULL, 0); + s->last_flush = Z_NO_FLUSH; + + _tr_init(s); + + return Z_OK; +} + +/* ========================================================================= */ +int ZEXPORT deflateReset (strm) + z_streamp strm; +{ + int ret; + + ret = deflateResetKeep(strm); + if (ret == Z_OK) + lm_init(strm->state); + return ret; +} + +/* ========================================================================= */ +int ZEXPORT deflateSetHeader (strm, head) + z_streamp strm; + gz_headerp head; +{ + if (deflateStateCheck(strm) || strm->state->wrap != 2) + return Z_STREAM_ERROR; + strm->state->gzhead = head; + return Z_OK; +} + +/* ========================================================================= */ +int ZEXPORT deflatePending (strm, pending, bits) + unsigned *pending; + int *bits; + z_streamp strm; +{ + if (deflateStateCheck(strm)) return Z_STREAM_ERROR; + if (pending != Z_NULL) + *pending = strm->state->pending; + if (bits != Z_NULL) + *bits = strm->state->bi_valid; + return Z_OK; +} + +/* ========================================================================= */ +int ZEXPORT deflatePrime (strm, bits, value) + z_streamp strm; + int bits; + int value; +{ + deflate_state *s; + int put; + + if (deflateStateCheck(strm)) return Z_STREAM_ERROR; + s = strm->state; + if ((Bytef *)(s->d_buf) < s->pending_out + ((Buf_size + 7) >> 3)) + return Z_BUF_ERROR; + do { + put = Buf_size - s->bi_valid; + if (put > bits) + put = bits; + s->bi_buf |= (ush)((value & ((1 << put) - 1)) << s->bi_valid); + s->bi_valid += put; + _tr_flush_bits(s); + value >>= put; + bits -= put; + } while (bits); + return Z_OK; +} + +/* ========================================================================= */ +int ZEXPORT deflateParams(strm, level, strategy) + z_streamp strm; + int level; + int strategy; +{ + deflate_state *s; + compress_func func; + + if (deflateStateCheck(strm)) return Z_STREAM_ERROR; + s = strm->state; + +#ifdef FASTEST + if (level != 0) level = 1; +#else + if (level == Z_DEFAULT_COMPRESSION) level = 6; +#endif + if (level < 0 || level > 9 || strategy < 0 || strategy > Z_FIXED) { + return Z_STREAM_ERROR; + } + func = configuration_table[s->level].func; + + if ((strategy != s->strategy || func != configuration_table[level].func) && + s->high_water) { + /* Flush the last buffer: */ + int err = deflate(strm, Z_BLOCK); + if (err == Z_STREAM_ERROR) + return err; + if (strm->avail_out == 0) + return Z_BUF_ERROR; + } + if (s->level != level) { + if (s->level == 0 && s->matches != 0) { + if (s->matches == 1) + slide_hash(s); + else + CLEAR_HASH(s); + s->matches = 0; + } + s->level = level; + s->max_lazy_match = configuration_table[level].max_lazy; + s->good_match = configuration_table[level].good_length; + s->nice_match = configuration_table[level].nice_length; + s->max_chain_length = configuration_table[level].max_chain; + } + s->strategy = strategy; + return Z_OK; +} + +/* ========================================================================= */ +int ZEXPORT deflateTune(strm, good_length, max_lazy, nice_length, max_chain) + z_streamp strm; + int good_length; + int max_lazy; + int nice_length; + int max_chain; +{ + deflate_state *s; + + if (deflateStateCheck(strm)) return Z_STREAM_ERROR; + s = strm->state; + s->good_match = (uInt)good_length; + s->max_lazy_match = (uInt)max_lazy; + s->nice_match = nice_length; + s->max_chain_length = (uInt)max_chain; + return Z_OK; +} + +/* ========================================================================= + * For the default windowBits of 15 and memLevel of 8, this function returns + * a close to exact, as well as small, upper bound on the compressed size. + * They are coded as constants here for a reason--if the #define's are + * changed, then this function needs to be changed as well. The return + * value for 15 and 8 only works for those exact settings. + * + * For any setting other than those defaults for windowBits and memLevel, + * the value returned is a conservative worst case for the maximum expansion + * resulting from using fixed blocks instead of stored blocks, which deflate + * can emit on compressed data for some combinations of the parameters. + * + * This function could be more sophisticated to provide closer upper bounds for + * every combination of windowBits and memLevel. But even the conservative + * upper bound of about 14% expansion does not seem onerous for output buffer + * allocation. + */ +uLong ZEXPORT deflateBound(strm, sourceLen) + z_streamp strm; + uLong sourceLen; +{ + deflate_state *s; + uLong complen, wraplen; + + /* conservative upper bound for compressed data */ + complen = sourceLen + + ((sourceLen + 7) >> 3) + ((sourceLen + 63) >> 6) + 5; + + /* if can't get parameters, return conservative bound plus zlib wrapper */ + if (deflateStateCheck(strm)) + return complen + 6; + + /* compute wrapper length */ + s = strm->state; + switch (s->wrap) { + case 0: /* raw deflate */ + wraplen = 0; + break; + case 1: /* zlib wrapper */ + wraplen = 6 + (s->strstart ? 4 : 0); + break; +#ifdef GZIP + case 2: /* gzip wrapper */ + wraplen = 18; + if (s->gzhead != Z_NULL) { /* user-supplied gzip header */ + Bytef *str; + if (s->gzhead->extra != Z_NULL) + wraplen += 2 + s->gzhead->extra_len; + str = s->gzhead->name; + if (str != Z_NULL) + do { + wraplen++; + } while (*str++); + str = s->gzhead->comment; + if (str != Z_NULL) + do { + wraplen++; + } while (*str++); + if (s->gzhead->hcrc) + wraplen += 2; + } + break; +#endif + default: /* for compiler happiness */ + wraplen = 6; + } + + /* if not default parameters, return conservative bound */ + if (s->w_bits != 15 || s->hash_bits != 8 + 7) + return complen + wraplen; + + /* default settings: return tight bound for that case */ + return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + + (sourceLen >> 25) + 13 - 6 + wraplen; +} + +/* ========================================================================= + * Put a short in the pending buffer. The 16-bit value is put in MSB order. + * IN assertion: the stream state is correct and there is enough room in + * pending_buf. + */ +local void putShortMSB (s, b) + deflate_state *s; + uInt b; +{ + put_byte(s, (Byte)(b >> 8)); + put_byte(s, (Byte)(b & 0xff)); +} + +/* ========================================================================= + * Flush as much pending output as possible. All deflate() output, except for + * some deflate_stored() output, goes through this function so some + * applications may wish to modify it to avoid allocating a large + * strm->next_out buffer and copying into it. (See also read_buf()). + */ +local void flush_pending(strm) + z_streamp strm; +{ + unsigned len; + deflate_state *s = strm->state; + + _tr_flush_bits(s); + len = s->pending; + if (len > strm->avail_out) len = strm->avail_out; + if (len == 0) return; + + zmemcpy(strm->next_out, s->pending_out, len); + strm->next_out += len; + s->pending_out += len; + strm->total_out += len; + strm->avail_out -= len; + s->pending -= len; + if (s->pending == 0) { + s->pending_out = s->pending_buf; + } +} + +/* =========================================================================== + * Update the header CRC with the bytes s->pending_buf[beg..s->pending - 1]. + */ +#define HCRC_UPDATE(beg) \ + do { \ + if (s->gzhead->hcrc && s->pending > (beg)) \ + strm->adler = crc32(strm->adler, s->pending_buf + (beg), \ + s->pending - (beg)); \ + } while (0) + +/* ========================================================================= */ +int ZEXPORT deflate (strm, flush) + z_streamp strm; + int flush; +{ + int old_flush; /* value of flush param for previous deflate call */ + deflate_state *s; + + if (deflateStateCheck(strm) || flush > Z_BLOCK || flush < 0) { + return Z_STREAM_ERROR; + } + s = strm->state; + + if (strm->next_out == Z_NULL || + (strm->avail_in != 0 && strm->next_in == Z_NULL) || + (s->status == FINISH_STATE && flush != Z_FINISH)) { + ERR_RETURN(strm, Z_STREAM_ERROR); + } + if (strm->avail_out == 0) ERR_RETURN(strm, Z_BUF_ERROR); + + old_flush = s->last_flush; + s->last_flush = flush; + + /* Flush as much pending output as possible */ + if (s->pending != 0) { + flush_pending(strm); + if (strm->avail_out == 0) { + /* Since avail_out is 0, deflate will be called again with + * more output space, but possibly with both pending and + * avail_in equal to zero. There won't be anything to do, + * but this is not an error situation so make sure we + * return OK instead of BUF_ERROR at next call of deflate: + */ + s->last_flush = -1; + return Z_OK; + } + + /* Make sure there is something to do and avoid duplicate consecutive + * flushes. For repeated and useless calls with Z_FINISH, we keep + * returning Z_STREAM_END instead of Z_BUF_ERROR. + */ + } else if (strm->avail_in == 0 && RANK(flush) <= RANK(old_flush) && + flush != Z_FINISH) { + ERR_RETURN(strm, Z_BUF_ERROR); + } + + /* User must not provide more input after the first FINISH: */ + if (s->status == FINISH_STATE && strm->avail_in != 0) { + ERR_RETURN(strm, Z_BUF_ERROR); + } + + /* Write the header */ + if (s->status == INIT_STATE) { + /* zlib header */ + uInt header = (Z_DEFLATED + ((s->w_bits-8)<<4)) << 8; + uInt level_flags; + + if (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2) + level_flags = 0; + else if (s->level < 6) + level_flags = 1; + else if (s->level == 6) + level_flags = 2; + else + level_flags = 3; + header |= (level_flags << 6); + if (s->strstart != 0) header |= PRESET_DICT; + header += 31 - (header % 31); + + putShortMSB(s, header); + + /* Save the adler32 of the preset dictionary: */ + if (s->strstart != 0) { + putShortMSB(s, (uInt)(strm->adler >> 16)); + putShortMSB(s, (uInt)(strm->adler & 0xffff)); + } + strm->adler = adler32(0L, Z_NULL, 0); + s->status = BUSY_STATE; + + /* Compression must start with an empty pending buffer */ + flush_pending(strm); + if (s->pending != 0) { + s->last_flush = -1; + return Z_OK; + } + } +#ifdef GZIP + if (s->status == GZIP_STATE) { + /* gzip header */ + strm->adler = crc32(0L, Z_NULL, 0); + put_byte(s, 31); + put_byte(s, 139); + put_byte(s, 8); + if (s->gzhead == Z_NULL) { + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, 0); + put_byte(s, s->level == 9 ? 2 : + (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2 ? + 4 : 0)); + put_byte(s, OS_CODE); + s->status = BUSY_STATE; + + /* Compression must start with an empty pending buffer */ + flush_pending(strm); + if (s->pending != 0) { + s->last_flush = -1; + return Z_OK; + } + } + else { + put_byte(s, (s->gzhead->text ? 1 : 0) + + (s->gzhead->hcrc ? 2 : 0) + + (s->gzhead->extra == Z_NULL ? 0 : 4) + + (s->gzhead->name == Z_NULL ? 0 : 8) + + (s->gzhead->comment == Z_NULL ? 0 : 16) + ); + put_byte(s, (Byte)(s->gzhead->time & 0xff)); + put_byte(s, (Byte)((s->gzhead->time >> 8) & 0xff)); + put_byte(s, (Byte)((s->gzhead->time >> 16) & 0xff)); + put_byte(s, (Byte)((s->gzhead->time >> 24) & 0xff)); + put_byte(s, s->level == 9 ? 2 : + (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2 ? + 4 : 0)); + put_byte(s, s->gzhead->os & 0xff); + if (s->gzhead->extra != Z_NULL) { + put_byte(s, s->gzhead->extra_len & 0xff); + put_byte(s, (s->gzhead->extra_len >> 8) & 0xff); + } + if (s->gzhead->hcrc) + strm->adler = crc32(strm->adler, s->pending_buf, + s->pending); + s->gzindex = 0; + s->status = EXTRA_STATE; + } + } + if (s->status == EXTRA_STATE) { + if (s->gzhead->extra != Z_NULL) { + ulg beg = s->pending; /* start of bytes to update crc */ + uInt left = (s->gzhead->extra_len & 0xffff) - s->gzindex; + while (s->pending + left > s->pending_buf_size) { + uInt copy = s->pending_buf_size - s->pending; + zmemcpy(s->pending_buf + s->pending, + s->gzhead->extra + s->gzindex, copy); + s->pending = s->pending_buf_size; + HCRC_UPDATE(beg); + s->gzindex += copy; + flush_pending(strm); + if (s->pending != 0) { + s->last_flush = -1; + return Z_OK; + } + beg = 0; + left -= copy; + } + zmemcpy(s->pending_buf + s->pending, + s->gzhead->extra + s->gzindex, left); + s->pending += left; + HCRC_UPDATE(beg); + s->gzindex = 0; + } + s->status = NAME_STATE; + } + if (s->status == NAME_STATE) { + if (s->gzhead->name != Z_NULL) { + ulg beg = s->pending; /* start of bytes to update crc */ + int val; + do { + if (s->pending == s->pending_buf_size) { + HCRC_UPDATE(beg); + flush_pending(strm); + if (s->pending != 0) { + s->last_flush = -1; + return Z_OK; + } + beg = 0; + } + val = s->gzhead->name[s->gzindex++]; + put_byte(s, val); + } while (val != 0); + HCRC_UPDATE(beg); + s->gzindex = 0; + } + s->status = COMMENT_STATE; + } + if (s->status == COMMENT_STATE) { + if (s->gzhead->comment != Z_NULL) { + ulg beg = s->pending; /* start of bytes to update crc */ + int val; + do { + if (s->pending == s->pending_buf_size) { + HCRC_UPDATE(beg); + flush_pending(strm); + if (s->pending != 0) { + s->last_flush = -1; + return Z_OK; + } + beg = 0; + } + val = s->gzhead->comment[s->gzindex++]; + put_byte(s, val); + } while (val != 0); + HCRC_UPDATE(beg); + } + s->status = HCRC_STATE; + } + if (s->status == HCRC_STATE) { + if (s->gzhead->hcrc) { + if (s->pending + 2 > s->pending_buf_size) { + flush_pending(strm); + if (s->pending != 0) { + s->last_flush = -1; + return Z_OK; + } + } + put_byte(s, (Byte)(strm->adler & 0xff)); + put_byte(s, (Byte)((strm->adler >> 8) & 0xff)); + strm->adler = crc32(0L, Z_NULL, 0); + } + s->status = BUSY_STATE; + + /* Compression must start with an empty pending buffer */ + flush_pending(strm); + if (s->pending != 0) { + s->last_flush = -1; + return Z_OK; + } + } +#endif + + /* Start a new block or continue the current one. + */ + if (strm->avail_in != 0 || s->lookahead != 0 || + (flush != Z_NO_FLUSH && s->status != FINISH_STATE)) { + block_state bstate; + + bstate = s->level == 0 ? deflate_stored(s, flush) : + s->strategy == Z_HUFFMAN_ONLY ? deflate_huff(s, flush) : + s->strategy == Z_RLE ? deflate_rle(s, flush) : + (*(configuration_table[s->level].func))(s, flush); + + if (bstate == finish_started || bstate == finish_done) { + s->status = FINISH_STATE; + } + if (bstate == need_more || bstate == finish_started) { + if (strm->avail_out == 0) { + s->last_flush = -1; /* avoid BUF_ERROR next call, see above */ + } + return Z_OK; + /* If flush != Z_NO_FLUSH && avail_out == 0, the next call + * of deflate should use the same flush parameter to make sure + * that the flush is complete. So we don't have to output an + * empty block here, this will be done at next call. This also + * ensures that for a very small output buffer, we emit at most + * one empty block. + */ + } + if (bstate == block_done) { + if (flush == Z_PARTIAL_FLUSH) { + _tr_align(s); + } else if (flush != Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */ + _tr_stored_block(s, (char*)0, 0L, 0); + /* For a full flush, this empty block will be recognized + * as a special marker by inflate_sync(). + */ + if (flush == Z_FULL_FLUSH) { + CLEAR_HASH(s); /* forget history */ + if (s->lookahead == 0) { + s->strstart = 0; + s->block_start = 0L; + s->insert = 0; + } + } + } + flush_pending(strm); + if (strm->avail_out == 0) { + s->last_flush = -1; /* avoid BUF_ERROR at next call, see above */ + return Z_OK; + } + } + } + + if (flush != Z_FINISH) return Z_OK; + if (s->wrap <= 0) return Z_STREAM_END; + + /* Write the trailer */ +#ifdef GZIP + if (s->wrap == 2) { + put_byte(s, (Byte)(strm->adler & 0xff)); + put_byte(s, (Byte)((strm->adler >> 8) & 0xff)); + put_byte(s, (Byte)((strm->adler >> 16) & 0xff)); + put_byte(s, (Byte)((strm->adler >> 24) & 0xff)); + put_byte(s, (Byte)(strm->total_in & 0xff)); + put_byte(s, (Byte)((strm->total_in >> 8) & 0xff)); + put_byte(s, (Byte)((strm->total_in >> 16) & 0xff)); + put_byte(s, (Byte)((strm->total_in >> 24) & 0xff)); + } + else +#endif + { + putShortMSB(s, (uInt)(strm->adler >> 16)); + putShortMSB(s, (uInt)(strm->adler & 0xffff)); + } + flush_pending(strm); + /* If avail_out is zero, the application will call deflate again + * to flush the rest. + */ + if (s->wrap > 0) s->wrap = -s->wrap; /* write the trailer only once! */ + return s->pending != 0 ? Z_OK : Z_STREAM_END; +} + +/* ========================================================================= */ +int ZEXPORT deflateEnd (strm) + z_streamp strm; +{ + int status; + + if (deflateStateCheck(strm)) return Z_STREAM_ERROR; + + status = strm->state->status; + + /* Deallocate in reverse order of allocations: */ + TRY_FREE(strm, strm->state->pending_buf); + TRY_FREE(strm, strm->state->head); + TRY_FREE(strm, strm->state->prev); + TRY_FREE(strm, strm->state->window); + + ZFREE(strm, strm->state); + strm->state = Z_NULL; + + return status == BUSY_STATE ? Z_DATA_ERROR : Z_OK; +} + +/* ========================================================================= + * Copy the source state to the destination state. + * To simplify the source, this is not supported for 16-bit MSDOS (which + * doesn't have enough memory anyway to duplicate compression states). + */ +int ZEXPORT deflateCopy (dest, source) + z_streamp dest; + z_streamp source; +{ +#ifdef MAXSEG_64K + return Z_STREAM_ERROR; +#else + deflate_state *ds; + deflate_state *ss; + ushf *overlay; + + + if (deflateStateCheck(source) || dest == Z_NULL) { + return Z_STREAM_ERROR; + } + + ss = source->state; + + zmemcpy((voidpf)dest, (voidpf)source, sizeof(z_stream)); + + ds = (deflate_state *) ZALLOC(dest, 1, sizeof(deflate_state)); + if (ds == Z_NULL) return Z_MEM_ERROR; + dest->state = (struct internal_state FAR *) ds; + zmemcpy((voidpf)ds, (voidpf)ss, sizeof(deflate_state)); + ds->strm = dest; + + ds->window = (Bytef *) ZALLOC(dest, ds->w_size, 2*sizeof(Byte)); + ds->prev = (Posf *) ZALLOC(dest, ds->w_size, sizeof(Pos)); + ds->head = (Posf *) ZALLOC(dest, ds->hash_size, sizeof(Pos)); + overlay = (ushf *) ZALLOC(dest, ds->lit_bufsize, sizeof(ush)+2); + ds->pending_buf = (uchf *) overlay; + + if (ds->window == Z_NULL || ds->prev == Z_NULL || ds->head == Z_NULL || + ds->pending_buf == Z_NULL) { + deflateEnd (dest); + return Z_MEM_ERROR; + } + /* following zmemcpy do not work for 16-bit MSDOS */ + zmemcpy(ds->window, ss->window, ds->w_size * 2 * sizeof(Byte)); + zmemcpy((voidpf)ds->prev, (voidpf)ss->prev, ds->w_size * sizeof(Pos)); + zmemcpy((voidpf)ds->head, (voidpf)ss->head, ds->hash_size * sizeof(Pos)); + zmemcpy(ds->pending_buf, ss->pending_buf, (uInt)ds->pending_buf_size); + + ds->pending_out = ds->pending_buf + (ss->pending_out - ss->pending_buf); + ds->d_buf = overlay + ds->lit_bufsize/sizeof(ush); + ds->l_buf = ds->pending_buf + (1+sizeof(ush))*ds->lit_bufsize; + + ds->l_desc.dyn_tree = ds->dyn_ltree; + ds->d_desc.dyn_tree = ds->dyn_dtree; + ds->bl_desc.dyn_tree = ds->bl_tree; + + return Z_OK; +#endif /* MAXSEG_64K */ +} + +/* =========================================================================== + * Read a new buffer from the current input stream, update the adler32 + * and total number of bytes read. All deflate() input goes through + * this function so some applications may wish to modify it to avoid + * allocating a large strm->next_in buffer and copying from it. + * (See also flush_pending()). + */ +local unsigned read_buf(strm, buf, size) + z_streamp strm; + Bytef *buf; + unsigned size; +{ + unsigned len = strm->avail_in; + + if (len > size) len = size; + if (len == 0) return 0; + + strm->avail_in -= len; + + zmemcpy(buf, strm->next_in, len); + if (strm->state->wrap == 1) { + strm->adler = adler32(strm->adler, buf, len); + } +#ifdef GZIP + else if (strm->state->wrap == 2) { + strm->adler = crc32(strm->adler, buf, len); + } +#endif + strm->next_in += len; + strm->total_in += len; + + return len; +} + +/* =========================================================================== + * Initialize the "longest match" routines for a new zlib stream + */ +local void lm_init (s) + deflate_state *s; +{ + s->window_size = (ulg)2L*s->w_size; + + CLEAR_HASH(s); + + /* Set the default configuration parameters: + */ + s->max_lazy_match = configuration_table[s->level].max_lazy; + s->good_match = configuration_table[s->level].good_length; + s->nice_match = configuration_table[s->level].nice_length; + s->max_chain_length = configuration_table[s->level].max_chain; + + s->strstart = 0; + s->block_start = 0L; + s->lookahead = 0; + s->insert = 0; + s->match_length = s->prev_length = MIN_MATCH-1; + s->match_available = 0; + s->ins_h = 0; +#ifndef FASTEST +#ifdef ASMV + match_init(); /* initialize the asm code */ +#endif +#endif +} + +#ifndef FASTEST +/* =========================================================================== + * Set match_start to the longest match starting at the given string and + * return its length. Matches shorter or equal to prev_length are discarded, + * in which case the result is equal to prev_length and match_start is + * garbage. + * IN assertions: cur_match is the head of the hash chain for the current + * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1 + * OUT assertion: the match length is not greater than s->lookahead. + */ +#ifndef ASMV +/* For 80x86 and 680x0, an optimized version will be provided in match.asm or + * match.S. The code will be functionally equivalent. + */ +local uInt longest_match(s, cur_match) + deflate_state *s; + IPos cur_match; /* current match */ +{ + unsigned chain_length = s->max_chain_length;/* max hash chain length */ + register Bytef *scan = s->window + s->strstart; /* current string */ + register Bytef *match; /* matched string */ + register int len; /* length of current match */ + int best_len = (int)s->prev_length; /* best match length so far */ + int nice_match = s->nice_match; /* stop if match long enough */ + IPos limit = s->strstart > (IPos)MAX_DIST(s) ? + s->strstart - (IPos)MAX_DIST(s) : NIL; + /* Stop when cur_match becomes <= limit. To simplify the code, + * we prevent matches with the string of window index 0. + */ + Posf *prev = s->prev; + uInt wmask = s->w_mask; + +#ifdef UNALIGNED_OK + /* Compare two bytes at a time. Note: this is not always beneficial. + * Try with and without -DUNALIGNED_OK to check. + */ + register Bytef *strend = s->window + s->strstart + MAX_MATCH - 1; + register ush scan_start = *(ushf*)scan; + register ush scan_end = *(ushf*)(scan+best_len-1); +#else + register Bytef *strend = s->window + s->strstart + MAX_MATCH; + register Byte scan_end1 = scan[best_len-1]; + register Byte scan_end = scan[best_len]; +#endif + + /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. + * It is easy to get rid of this optimization if necessary. + */ + Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever"); + + /* Do not waste too much time if we already have a good match: */ + if (s->prev_length >= s->good_match) { + chain_length >>= 2; + } + /* Do not look for matches beyond the end of the input. This is necessary + * to make deflate deterministic. + */ + if ((uInt)nice_match > s->lookahead) nice_match = (int)s->lookahead; + + Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead"); + + do { + Assert(cur_match < s->strstart, "no future"); + match = s->window + cur_match; + + /* Skip to next match if the match length cannot increase + * or if the match length is less than 2. Note that the checks below + * for insufficient lookahead only occur occasionally for performance + * reasons. Therefore uninitialized memory will be accessed, and + * conditional jumps will be made that depend on those values. + * However the length of the match is limited to the lookahead, so + * the output of deflate is not affected by the uninitialized values. + */ +#if (defined(UNALIGNED_OK) && MAX_MATCH == 258) + /* This code assumes sizeof(unsigned short) == 2. Do not use + * UNALIGNED_OK if your compiler uses a different size. + */ + if (*(ushf*)(match+best_len-1) != scan_end || + *(ushf*)match != scan_start) continue; + + /* It is not necessary to compare scan[2] and match[2] since they are + * always equal when the other bytes match, given that the hash keys + * are equal and that HASH_BITS >= 8. Compare 2 bytes at a time at + * strstart+3, +5, ... up to strstart+257. We check for insufficient + * lookahead only every 4th comparison; the 128th check will be made + * at strstart+257. If MAX_MATCH-2 is not a multiple of 8, it is + * necessary to put more guard bytes at the end of the window, or + * to check more often for insufficient lookahead. + */ + Assert(scan[2] == match[2], "scan[2]?"); + scan++, match++; + do { + } while (*(ushf*)(scan+=2) == *(ushf*)(match+=2) && + *(ushf*)(scan+=2) == *(ushf*)(match+=2) && + *(ushf*)(scan+=2) == *(ushf*)(match+=2) && + *(ushf*)(scan+=2) == *(ushf*)(match+=2) && + scan < strend); + /* The funny "do {}" generates better code on most compilers */ + + /* Here, scan <= window+strstart+257 */ + Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); + if (*scan == *match) scan++; + + len = (MAX_MATCH - 1) - (int)(strend-scan); + scan = strend - (MAX_MATCH-1); + +#else /* UNALIGNED_OK */ + + if (match[best_len] != scan_end || + match[best_len-1] != scan_end1 || + *match != *scan || + *++match != scan[1]) continue; + + /* The check at best_len-1 can be removed because it will be made + * again later. (This heuristic is not always a win.) + * It is not necessary to compare scan[2] and match[2] since they + * are always equal when the other bytes match, given that + * the hash keys are equal and that HASH_BITS >= 8. + */ + scan += 2, match++; + Assert(*scan == *match, "match[2]?"); + + /* We check for insufficient lookahead only every 8th comparison; + * the 256th check will be made at strstart+258. + */ + do { + } while (*++scan == *++match && *++scan == *++match && + *++scan == *++match && *++scan == *++match && + *++scan == *++match && *++scan == *++match && + *++scan == *++match && *++scan == *++match && + scan < strend); + + Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); + + len = MAX_MATCH - (int)(strend - scan); + scan = strend - MAX_MATCH; + +#endif /* UNALIGNED_OK */ + + if (len > best_len) { + s->match_start = cur_match; + best_len = len; + if (len >= nice_match) break; +#ifdef UNALIGNED_OK + scan_end = *(ushf*)(scan+best_len-1); +#else + scan_end1 = scan[best_len-1]; + scan_end = scan[best_len]; +#endif + } + } while ((cur_match = prev[cur_match & wmask]) > limit + && --chain_length != 0); + + if ((uInt)best_len <= s->lookahead) return (uInt)best_len; + return s->lookahead; +} +#endif /* ASMV */ + +#else /* FASTEST */ + +/* --------------------------------------------------------------------------- + * Optimized version for FASTEST only + */ +local uInt longest_match(s, cur_match) + deflate_state *s; + IPos cur_match; /* current match */ +{ + register Bytef *scan = s->window + s->strstart; /* current string */ + register Bytef *match; /* matched string */ + register int len; /* length of current match */ + register Bytef *strend = s->window + s->strstart + MAX_MATCH; + + /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. + * It is easy to get rid of this optimization if necessary. + */ + Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever"); + + Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead"); + + Assert(cur_match < s->strstart, "no future"); + + match = s->window + cur_match; + + /* Return failure if the match length is less than 2: + */ + if (match[0] != scan[0] || match[1] != scan[1]) return MIN_MATCH-1; + + /* The check at best_len-1 can be removed because it will be made + * again later. (This heuristic is not always a win.) + * It is not necessary to compare scan[2] and match[2] since they + * are always equal when the other bytes match, given that + * the hash keys are equal and that HASH_BITS >= 8. + */ + scan += 2, match += 2; + Assert(*scan == *match, "match[2]?"); + + /* We check for insufficient lookahead only every 8th comparison; + * the 256th check will be made at strstart+258. + */ + do { + } while (*++scan == *++match && *++scan == *++match && + *++scan == *++match && *++scan == *++match && + *++scan == *++match && *++scan == *++match && + *++scan == *++match && *++scan == *++match && + scan < strend); + + Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); + + len = MAX_MATCH - (int)(strend - scan); + + if (len < MIN_MATCH) return MIN_MATCH - 1; + + s->match_start = cur_match; + return (uInt)len <= s->lookahead ? (uInt)len : s->lookahead; +} + +#endif /* FASTEST */ + +#ifdef ZLIB_DEBUG + +#define EQUAL 0 +/* result of memcmp for equal strings */ + +/* =========================================================================== + * Check that the match at match_start is indeed a match. + */ +local void check_match(s, start, match, length) + deflate_state *s; + IPos start, match; + int length; +{ + /* check that the match is indeed a match */ + if (zmemcmp(s->window + match, + s->window + start, length) != EQUAL) { + fprintf(stderr, " start %u, match %u, length %d\n", + start, match, length); + do { + fprintf(stderr, "%c%c", s->window[match++], s->window[start++]); + } while (--length != 0); + z_error("invalid match"); + } + if (z_verbose > 1) { + fprintf(stderr,"\\[%d,%d]", start-match, length); + do { putc(s->window[start++], stderr); } while (--length != 0); + } +} +#else +# define check_match(s, start, match, length) +#endif /* ZLIB_DEBUG */ + +/* =========================================================================== + * Fill the window when the lookahead becomes insufficient. + * Updates strstart and lookahead. + * + * IN assertion: lookahead < MIN_LOOKAHEAD + * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD + * At least one byte has been read, or avail_in == 0; reads are + * performed for at least two bytes (required for the zip translate_eol + * option -- not supported here). + */ +local void fill_window(s) + deflate_state *s; +{ + unsigned n; + unsigned more; /* Amount of free space at the end of the window. */ + uInt wsize = s->w_size; + + Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead"); + + do { + more = (unsigned)(s->window_size -(ulg)s->lookahead -(ulg)s->strstart); + + /* Deal with !@#$% 64K limit: */ + if (sizeof(int) <= 2) { + if (more == 0 && s->strstart == 0 && s->lookahead == 0) { + more = wsize; + + } else if (more == (unsigned)(-1)) { + /* Very unlikely, but possible on 16 bit machine if + * strstart == 0 && lookahead == 1 (input done a byte at time) + */ + more--; + } + } + + /* If the window is almost full and there is insufficient lookahead, + * move the upper half to the lower one to make room in the upper half. + */ + if (s->strstart >= wsize+MAX_DIST(s)) { + + zmemcpy(s->window, s->window+wsize, (unsigned)wsize - more); + s->match_start -= wsize; + s->strstart -= wsize; /* we now have strstart >= MAX_DIST */ + s->block_start -= (long) wsize; + slide_hash(s); + more += wsize; + } + if (s->strm->avail_in == 0) break; + + /* If there was no sliding: + * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 && + * more == window_size - lookahead - strstart + * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1) + * => more >= window_size - 2*WSIZE + 2 + * In the BIG_MEM or MMAP case (not yet supported), + * window_size == input_size + MIN_LOOKAHEAD && + * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD. + * Otherwise, window_size == 2*WSIZE so more >= 2. + * If there was sliding, more >= WSIZE. So in all cases, more >= 2. + */ + Assert(more >= 2, "more < 2"); + + n = read_buf(s->strm, s->window + s->strstart + s->lookahead, more); + s->lookahead += n; + + /* Initialize the hash value now that we have some input: */ + if (s->lookahead + s->insert >= MIN_MATCH) { + uInt str = s->strstart - s->insert; + s->ins_h = s->window[str]; + UPDATE_HASH(s, s->ins_h, s->window[str + 1]); +#if MIN_MATCH != 3 + Call UPDATE_HASH() MIN_MATCH-3 more times +#endif + while (s->insert) { + UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); +#ifndef FASTEST + s->prev[str & s->w_mask] = s->head[s->ins_h]; +#endif + s->head[s->ins_h] = (Pos)str; + str++; + s->insert--; + if (s->lookahead + s->insert < MIN_MATCH) + break; + } + } + /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage, + * but this is not important since only literal bytes will be emitted. + */ + + } while (s->lookahead < MIN_LOOKAHEAD && s->strm->avail_in != 0); + + /* If the WIN_INIT bytes after the end of the current data have never been + * written, then zero those bytes in order to avoid memory check reports of + * the use of uninitialized (or uninitialised as Julian writes) bytes by + * the longest match routines. Update the high water mark for the next + * time through here. WIN_INIT is set to MAX_MATCH since the longest match + * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead. + */ + if (s->high_water < s->window_size) { + ulg curr = s->strstart + (ulg)(s->lookahead); + ulg init; + + if (s->high_water < curr) { + /* Previous high water mark below current data -- zero WIN_INIT + * bytes or up to end of window, whichever is less. + */ + init = s->window_size - curr; + if (init > WIN_INIT) + init = WIN_INIT; + zmemzero(s->window + curr, (unsigned)init); + s->high_water = curr + init; + } + else if (s->high_water < (ulg)curr + WIN_INIT) { + /* High water mark at or above current data, but below current data + * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up + * to end of window, whichever is less. + */ + init = (ulg)curr + WIN_INIT - s->high_water; + if (init > s->window_size - s->high_water) + init = s->window_size - s->high_water; + zmemzero(s->window + s->high_water, (unsigned)init); + s->high_water += init; + } + } + + Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD, + "not enough room for search"); +} + +/* =========================================================================== + * Flush the current block, with given end-of-file flag. + * IN assertion: strstart is set to the end of the current match. + */ +#define FLUSH_BLOCK_ONLY(s, last) { \ + _tr_flush_block(s, (s->block_start >= 0L ? \ + (charf *)&s->window[(unsigned)s->block_start] : \ + (charf *)Z_NULL), \ + (ulg)((long)s->strstart - s->block_start), \ + (last)); \ + s->block_start = s->strstart; \ + flush_pending(s->strm); \ + Tracev((stderr,"[FLUSH]")); \ +} + +/* Same but force premature exit if necessary. */ +#define FLUSH_BLOCK(s, last) { \ + FLUSH_BLOCK_ONLY(s, last); \ + if (s->strm->avail_out == 0) return (last) ? finish_started : need_more; \ +} + +/* Maximum stored block length in deflate format (not including header). */ +#define MAX_STORED 65535 + +/* Minimum of a and b. */ +#define MIN(a, b) ((a) > (b) ? (b) : (a)) + +/* =========================================================================== + * Copy without compression as much as possible from the input stream, return + * the current block state. + * + * In case deflateParams() is used to later switch to a non-zero compression + * level, s->matches (otherwise unused when storing) keeps track of the number + * of hash table slides to perform. If s->matches is 1, then one hash table + * slide will be done when switching. If s->matches is 2, the maximum value + * allowed here, then the hash table will be cleared, since two or more slides + * is the same as a clear. + * + * deflate_stored() is written to minimize the number of times an input byte is + * copied. It is most efficient with large input and output buffers, which + * maximizes the opportunites to have a single copy from next_in to next_out. + */ +local block_state deflate_stored(s, flush) + deflate_state *s; + int flush; +{ + /* Smallest worthy block size when not flushing or finishing. By default + * this is 32K. This can be as small as 507 bytes for memLevel == 1. For + * large input and output buffers, the stored block size will be larger. + */ + unsigned min_block = MIN(s->pending_buf_size - 5, s->w_size); + + /* Copy as many min_block or larger stored blocks directly to next_out as + * possible. If flushing, copy the remaining available input to next_out as + * stored blocks, if there is enough space. + */ + unsigned len, left, have, last = 0; + unsigned used = s->strm->avail_in; + do { + /* Set len to the maximum size block that we can copy directly with the + * available input data and output space. Set left to how much of that + * would be copied from what's left in the window. + */ + len = MAX_STORED; /* maximum deflate stored block length */ + have = (s->bi_valid + 42) >> 3; /* number of header bytes */ + if (s->strm->avail_out < have) /* need room for header */ + break; + /* maximum stored block length that will fit in avail_out: */ + have = s->strm->avail_out - have; + left = s->strstart - s->block_start; /* bytes left in window */ + if (len > (ulg)left + s->strm->avail_in) + len = left + s->strm->avail_in; /* limit len to the input */ + if (len > have) + len = have; /* limit len to the output */ + + /* If the stored block would be less than min_block in length, or if + * unable to copy all of the available input when flushing, then try + * copying to the window and the pending buffer instead. Also don't + * write an empty block when flushing -- deflate() does that. + */ + if (len < min_block && ((len == 0 && flush != Z_FINISH) || + flush == Z_NO_FLUSH || + len != left + s->strm->avail_in)) + break; + + /* Make a dummy stored block in pending to get the header bytes, + * including any pending bits. This also updates the debugging counts. + */ + last = flush == Z_FINISH && len == left + s->strm->avail_in ? 1 : 0; + _tr_stored_block(s, (char *)0, 0L, last); + + /* Replace the lengths in the dummy stored block with len. */ + s->pending_buf[s->pending - 4] = len; + s->pending_buf[s->pending - 3] = len >> 8; + s->pending_buf[s->pending - 2] = ~len; + s->pending_buf[s->pending - 1] = ~len >> 8; + + /* Write the stored block header bytes. */ + flush_pending(s->strm); + +#ifdef ZLIB_DEBUG + /* Update debugging counts for the data about to be copied. */ + s->compressed_len += len << 3; + s->bits_sent += len << 3; +#endif + + /* Copy uncompressed bytes from the window to next_out. */ + if (left) { + if (left > len) + left = len; + zmemcpy(s->strm->next_out, s->window + s->block_start, left); + s->strm->next_out += left; + s->strm->avail_out -= left; + s->strm->total_out += left; + s->block_start += left; + len -= left; + } + + /* Copy uncompressed bytes directly from next_in to next_out, updating + * the check value. + */ + if (len) { + read_buf(s->strm, s->strm->next_out, len); + s->strm->next_out += len; + s->strm->avail_out -= len; + s->strm->total_out += len; + } + } while (last == 0); + + /* Update the sliding window with the last s->w_size bytes of the copied + * data, or append all of the copied data to the existing window if less + * than s->w_size bytes were copied. Also update the number of bytes to + * insert in the hash tables, in the event that deflateParams() switches to + * a non-zero compression level. + */ + used -= s->strm->avail_in; /* number of input bytes directly copied */ + if (used) { + /* If any input was used, then no unused input remains in the window, + * therefore s->block_start == s->strstart. + */ + if (used >= s->w_size) { /* supplant the previous history */ + s->matches = 2; /* clear hash */ + zmemcpy(s->window, s->strm->next_in - s->w_size, s->w_size); + s->strstart = s->w_size; + } + else { + if (s->window_size - s->strstart <= used) { + /* Slide the window down. */ + s->strstart -= s->w_size; + zmemcpy(s->window, s->window + s->w_size, s->strstart); + if (s->matches < 2) + s->matches++; /* add a pending slide_hash() */ + } + zmemcpy(s->window + s->strstart, s->strm->next_in - used, used); + s->strstart += used; + } + s->block_start = s->strstart; + s->insert += MIN(used, s->w_size - s->insert); + } + if (s->high_water < s->strstart) + s->high_water = s->strstart; + + /* If the last block was written to next_out, then done. */ + if (last) + return finish_done; + + /* If flushing and all input has been consumed, then done. */ + if (flush != Z_NO_FLUSH && flush != Z_FINISH && + s->strm->avail_in == 0 && (long)s->strstart == s->block_start) + return block_done; + + /* Fill the window with any remaining input. */ + have = s->window_size - s->strstart - 1; + if (s->strm->avail_in > have && s->block_start >= (long)s->w_size) { + /* Slide the window down. */ + s->block_start -= s->w_size; + s->strstart -= s->w_size; + zmemcpy(s->window, s->window + s->w_size, s->strstart); + if (s->matches < 2) + s->matches++; /* add a pending slide_hash() */ + have += s->w_size; /* more space now */ + } + if (have > s->strm->avail_in) + have = s->strm->avail_in; + if (have) { + read_buf(s->strm, s->window + s->strstart, have); + s->strstart += have; + } + if (s->high_water < s->strstart) + s->high_water = s->strstart; + + /* There was not enough avail_out to write a complete worthy or flushed + * stored block to next_out. Write a stored block to pending instead, if we + * have enough input for a worthy block, or if flushing and there is enough + * room for the remaining input as a stored block in the pending buffer. + */ + have = (s->bi_valid + 42) >> 3; /* number of header bytes */ + /* maximum stored block length that will fit in pending: */ + have = MIN(s->pending_buf_size - have, MAX_STORED); + min_block = MIN(have, s->w_size); + left = s->strstart - s->block_start; + if (left >= min_block || + ((left || flush == Z_FINISH) && flush != Z_NO_FLUSH && + s->strm->avail_in == 0 && left <= have)) { + len = MIN(left, have); + last = flush == Z_FINISH && s->strm->avail_in == 0 && + len == left ? 1 : 0; + _tr_stored_block(s, (charf *)s->window + s->block_start, len, last); + s->block_start += len; + flush_pending(s->strm); + } + + /* We've done all we can with the available input and output. */ + return last ? finish_started : need_more; +} + +/* =========================================================================== + * Compress as much as possible from the input stream, return the current + * block state. + * This function does not perform lazy evaluation of matches and inserts + * new strings in the dictionary only for unmatched strings or for short + * matches. It is used only for the fast compression options. + */ +local block_state deflate_fast(s, flush) + deflate_state *s; + int flush; +{ + IPos hash_head; /* head of the hash chain */ + int bflush; /* set if current block must be flushed */ + + for (;;) { + /* Make sure that we always have enough lookahead, except + * at the end of the input file. We need MAX_MATCH bytes + * for the next match, plus MIN_MATCH bytes to insert the + * string following the next match. + */ + if (s->lookahead < MIN_LOOKAHEAD) { + fill_window(s); + if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) { + return need_more; + } + if (s->lookahead == 0) break; /* flush the current block */ + } + + /* Insert the string window[strstart .. strstart+2] in the + * dictionary, and set hash_head to the head of the hash chain: + */ + hash_head = NIL; + if (s->lookahead >= MIN_MATCH) { + INSERT_STRING(s, s->strstart, hash_head); + } + + /* Find the longest match, discarding those <= prev_length. + * At this point we have always match_length < MIN_MATCH + */ + if (hash_head != NIL && s->strstart - hash_head <= MAX_DIST(s)) { + /* To simplify the code, we prevent matches with the string + * of window index 0 (in particular we have to avoid a match + * of the string with itself at the start of the input file). + */ + s->match_length = longest_match (s, hash_head); + /* longest_match() sets match_start */ + } + if (s->match_length >= MIN_MATCH) { + check_match(s, s->strstart, s->match_start, s->match_length); + + _tr_tally_dist(s, s->strstart - s->match_start, + s->match_length - MIN_MATCH, bflush); + + s->lookahead -= s->match_length; + + /* Insert new strings in the hash table only if the match length + * is not too large. This saves time but degrades compression. + */ +#ifndef FASTEST + if (s->match_length <= s->max_insert_length && + s->lookahead >= MIN_MATCH) { + s->match_length--; /* string at strstart already in table */ + do { + s->strstart++; + INSERT_STRING(s, s->strstart, hash_head); + /* strstart never exceeds WSIZE-MAX_MATCH, so there are + * always MIN_MATCH bytes ahead. + */ + } while (--s->match_length != 0); + s->strstart++; + } else +#endif + { + s->strstart += s->match_length; + s->match_length = 0; + s->ins_h = s->window[s->strstart]; + UPDATE_HASH(s, s->ins_h, s->window[s->strstart+1]); +#if MIN_MATCH != 3 + Call UPDATE_HASH() MIN_MATCH-3 more times +#endif + /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not + * matter since it will be recomputed at next deflate call. + */ + } + } else { + /* No match, output a literal byte */ + Tracevv((stderr,"%c", s->window[s->strstart])); + _tr_tally_lit (s, s->window[s->strstart], bflush); + s->lookahead--; + s->strstart++; + } + if (bflush) FLUSH_BLOCK(s, 0); + } + s->insert = s->strstart < MIN_MATCH-1 ? s->strstart : MIN_MATCH-1; + if (flush == Z_FINISH) { + FLUSH_BLOCK(s, 1); + return finish_done; + } + if (s->last_lit) + FLUSH_BLOCK(s, 0); + return block_done; +} + +#ifndef FASTEST +/* =========================================================================== + * Same as above, but achieves better compression. We use a lazy + * evaluation for matches: a match is finally adopted only if there is + * no better match at the next window position. + */ +local block_state deflate_slow(s, flush) + deflate_state *s; + int flush; +{ + IPos hash_head; /* head of hash chain */ + int bflush; /* set if current block must be flushed */ + + /* Process the input block. */ + for (;;) { + /* Make sure that we always have enough lookahead, except + * at the end of the input file. We need MAX_MATCH bytes + * for the next match, plus MIN_MATCH bytes to insert the + * string following the next match. + */ + if (s->lookahead < MIN_LOOKAHEAD) { + fill_window(s); + if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) { + return need_more; + } + if (s->lookahead == 0) break; /* flush the current block */ + } + + /* Insert the string window[strstart .. strstart+2] in the + * dictionary, and set hash_head to the head of the hash chain: + */ + hash_head = NIL; + if (s->lookahead >= MIN_MATCH) { + INSERT_STRING(s, s->strstart, hash_head); + } + + /* Find the longest match, discarding those <= prev_length. + */ + s->prev_length = s->match_length, s->prev_match = s->match_start; + s->match_length = MIN_MATCH-1; + + if (hash_head != NIL && s->prev_length < s->max_lazy_match && + s->strstart - hash_head <= MAX_DIST(s)) { + /* To simplify the code, we prevent matches with the string + * of window index 0 (in particular we have to avoid a match + * of the string with itself at the start of the input file). + */ + s->match_length = longest_match (s, hash_head); + /* longest_match() sets match_start */ + + if (s->match_length <= 5 && (s->strategy == Z_FILTERED +#if TOO_FAR <= 32767 + || (s->match_length == MIN_MATCH && + s->strstart - s->match_start > TOO_FAR) +#endif + )) { + + /* If prev_match is also MIN_MATCH, match_start is garbage + * but we will ignore the current match anyway. + */ + s->match_length = MIN_MATCH-1; + } + } + /* If there was a match at the previous step and the current + * match is not better, output the previous match: + */ + if (s->prev_length >= MIN_MATCH && s->match_length <= s->prev_length) { + uInt max_insert = s->strstart + s->lookahead - MIN_MATCH; + /* Do not insert strings in hash table beyond this. */ + + check_match(s, s->strstart-1, s->prev_match, s->prev_length); + + _tr_tally_dist(s, s->strstart -1 - s->prev_match, + s->prev_length - MIN_MATCH, bflush); + + /* Insert in hash table all strings up to the end of the match. + * strstart-1 and strstart are already inserted. If there is not + * enough lookahead, the last two strings are not inserted in + * the hash table. + */ + s->lookahead -= s->prev_length-1; + s->prev_length -= 2; + do { + if (++s->strstart <= max_insert) { + INSERT_STRING(s, s->strstart, hash_head); + } + } while (--s->prev_length != 0); + s->match_available = 0; + s->match_length = MIN_MATCH-1; + s->strstart++; + + if (bflush) FLUSH_BLOCK(s, 0); + + } else if (s->match_available) { + /* If there was no match at the previous position, output a + * single literal. If there was a match but the current match + * is longer, truncate the previous match to a single literal. + */ + Tracevv((stderr,"%c", s->window[s->strstart-1])); + _tr_tally_lit(s, s->window[s->strstart-1], bflush); + if (bflush) { + FLUSH_BLOCK_ONLY(s, 0); + } + s->strstart++; + s->lookahead--; + if (s->strm->avail_out == 0) return need_more; + } else { + /* There is no previous match to compare with, wait for + * the next step to decide. + */ + s->match_available = 1; + s->strstart++; + s->lookahead--; + } + } + Assert (flush != Z_NO_FLUSH, "no flush?"); + if (s->match_available) { + Tracevv((stderr,"%c", s->window[s->strstart-1])); + _tr_tally_lit(s, s->window[s->strstart-1], bflush); + s->match_available = 0; + } + s->insert = s->strstart < MIN_MATCH-1 ? s->strstart : MIN_MATCH-1; + if (flush == Z_FINISH) { + FLUSH_BLOCK(s, 1); + return finish_done; + } + if (s->last_lit) + FLUSH_BLOCK(s, 0); + return block_done; +} +#endif /* FASTEST */ + +/* =========================================================================== + * For Z_RLE, simply look for runs of bytes, generate matches only of distance + * one. Do not maintain a hash table. (It will be regenerated if this run of + * deflate switches away from Z_RLE.) + */ +local block_state deflate_rle(s, flush) + deflate_state *s; + int flush; +{ + int bflush; /* set if current block must be flushed */ + uInt prev; /* byte at distance one to match */ + Bytef *scan, *strend; /* scan goes up to strend for length of run */ + + for (;;) { + /* Make sure that we always have enough lookahead, except + * at the end of the input file. We need MAX_MATCH bytes + * for the longest run, plus one for the unrolled loop. + */ + if (s->lookahead <= MAX_MATCH) { + fill_window(s); + if (s->lookahead <= MAX_MATCH && flush == Z_NO_FLUSH) { + return need_more; + } + if (s->lookahead == 0) break; /* flush the current block */ + } + + /* See how many times the previous byte repeats */ + s->match_length = 0; + if (s->lookahead >= MIN_MATCH && s->strstart > 0) { + scan = s->window + s->strstart - 1; + prev = *scan; + if (prev == *++scan && prev == *++scan && prev == *++scan) { + strend = s->window + s->strstart + MAX_MATCH; + do { + } while (prev == *++scan && prev == *++scan && + prev == *++scan && prev == *++scan && + prev == *++scan && prev == *++scan && + prev == *++scan && prev == *++scan && + scan < strend); + s->match_length = MAX_MATCH - (uInt)(strend - scan); + if (s->match_length > s->lookahead) + s->match_length = s->lookahead; + } + Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan"); + } + + /* Emit match if have run of MIN_MATCH or longer, else emit literal */ + if (s->match_length >= MIN_MATCH) { + check_match(s, s->strstart, s->strstart - 1, s->match_length); + + _tr_tally_dist(s, 1, s->match_length - MIN_MATCH, bflush); + + s->lookahead -= s->match_length; + s->strstart += s->match_length; + s->match_length = 0; + } else { + /* No match, output a literal byte */ + Tracevv((stderr,"%c", s->window[s->strstart])); + _tr_tally_lit (s, s->window[s->strstart], bflush); + s->lookahead--; + s->strstart++; + } + if (bflush) FLUSH_BLOCK(s, 0); + } + s->insert = 0; + if (flush == Z_FINISH) { + FLUSH_BLOCK(s, 1); + return finish_done; + } + if (s->last_lit) + FLUSH_BLOCK(s, 0); + return block_done; +} + +/* =========================================================================== + * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table. + * (It will be regenerated if this run of deflate switches away from Huffman.) + */ +local block_state deflate_huff(s, flush) + deflate_state *s; + int flush; +{ + int bflush; /* set if current block must be flushed */ + + for (;;) { + /* Make sure that we have a literal to write. */ + if (s->lookahead == 0) { + fill_window(s); + if (s->lookahead == 0) { + if (flush == Z_NO_FLUSH) + return need_more; + break; /* flush the current block */ + } + } + + /* Output a literal byte */ + s->match_length = 0; + Tracevv((stderr,"%c", s->window[s->strstart])); + _tr_tally_lit (s, s->window[s->strstart], bflush); + s->lookahead--; + s->strstart++; + if (bflush) FLUSH_BLOCK(s, 0); + } + s->insert = 0; + if (flush == Z_FINISH) { + FLUSH_BLOCK(s, 1); + return finish_done; + } + if (s->last_lit) + FLUSH_BLOCK(s, 0); + return block_done; +} diff --git a/waterbox/nyma/zlib/deflate.h b/waterbox/nyma/zlib/deflate.h new file mode 100644 index 0000000000..23ecdd312b --- /dev/null +++ b/waterbox/nyma/zlib/deflate.h @@ -0,0 +1,349 @@ +/* deflate.h -- internal compression state + * Copyright (C) 1995-2016 Jean-loup Gailly + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* WARNING: this file should *not* be used by applications. It is + part of the implementation of the compression library and is + subject to change. Applications should only use zlib.h. + */ + +/* @(#) $Id$ */ + +#ifndef DEFLATE_H +#define DEFLATE_H + +#include "zutil.h" + +/* define NO_GZIP when compiling if you want to disable gzip header and + trailer creation by deflate(). NO_GZIP would be used to avoid linking in + the crc code when it is not needed. For shared libraries, gzip encoding + should be left enabled. */ +#ifndef NO_GZIP +# define GZIP +#endif + +/* =========================================================================== + * Internal compression state. + */ + +#define LENGTH_CODES 29 +/* number of length codes, not counting the special END_BLOCK code */ + +#define LITERALS 256 +/* number of literal bytes 0..255 */ + +#define L_CODES (LITERALS+1+LENGTH_CODES) +/* number of Literal or Length codes, including the END_BLOCK code */ + +#define D_CODES 30 +/* number of distance codes */ + +#define BL_CODES 19 +/* number of codes used to transfer the bit lengths */ + +#define HEAP_SIZE (2*L_CODES+1) +/* maximum heap size */ + +#define MAX_BITS 15 +/* All codes must not exceed MAX_BITS bits */ + +#define Buf_size 16 +/* size of bit buffer in bi_buf */ + +#define INIT_STATE 42 /* zlib header -> BUSY_STATE */ +#ifdef GZIP +# define GZIP_STATE 57 /* gzip header -> BUSY_STATE | EXTRA_STATE */ +#endif +#define EXTRA_STATE 69 /* gzip extra block -> NAME_STATE */ +#define NAME_STATE 73 /* gzip file name -> COMMENT_STATE */ +#define COMMENT_STATE 91 /* gzip comment -> HCRC_STATE */ +#define HCRC_STATE 103 /* gzip header CRC -> BUSY_STATE */ +#define BUSY_STATE 113 /* deflate -> FINISH_STATE */ +#define FINISH_STATE 666 /* stream complete */ +/* Stream status */ + + +/* Data structure describing a single value and its code string. */ +typedef struct ct_data_s { + union { + ush freq; /* frequency count */ + ush code; /* bit string */ + } fc; + union { + ush dad; /* father node in Huffman tree */ + ush len; /* length of bit string */ + } dl; +} FAR ct_data; + +#define Freq fc.freq +#define Code fc.code +#define Dad dl.dad +#define Len dl.len + +typedef struct static_tree_desc_s static_tree_desc; + +typedef struct tree_desc_s { + ct_data *dyn_tree; /* the dynamic tree */ + int max_code; /* largest code with non zero frequency */ + const static_tree_desc *stat_desc; /* the corresponding static tree */ +} FAR tree_desc; + +typedef ush Pos; +typedef Pos FAR Posf; +typedef unsigned IPos; + +/* A Pos is an index in the character window. We use short instead of int to + * save space in the various tables. IPos is used only for parameter passing. + */ + +typedef struct internal_state { + z_streamp strm; /* pointer back to this zlib stream */ + int status; /* as the name implies */ + Bytef *pending_buf; /* output still pending */ + ulg pending_buf_size; /* size of pending_buf */ + Bytef *pending_out; /* next pending byte to output to the stream */ + ulg pending; /* nb of bytes in the pending buffer */ + int wrap; /* bit 0 true for zlib, bit 1 true for gzip */ + gz_headerp gzhead; /* gzip header information to write */ + ulg gzindex; /* where in extra, name, or comment */ + Byte method; /* can only be DEFLATED */ + int last_flush; /* value of flush param for previous deflate call */ + + /* used by deflate.c: */ + + uInt w_size; /* LZ77 window size (32K by default) */ + uInt w_bits; /* log2(w_size) (8..16) */ + uInt w_mask; /* w_size - 1 */ + + Bytef *window; + /* Sliding window. Input bytes are read into the second half of the window, + * and move to the first half later to keep a dictionary of at least wSize + * bytes. With this organization, matches are limited to a distance of + * wSize-MAX_MATCH bytes, but this ensures that IO is always + * performed with a length multiple of the block size. Also, it limits + * the window size to 64K, which is quite useful on MSDOS. + * To do: use the user input buffer as sliding window. + */ + + ulg window_size; + /* Actual size of window: 2*wSize, except when the user input buffer + * is directly used as sliding window. + */ + + Posf *prev; + /* Link to older string with same hash index. To limit the size of this + * array to 64K, this link is maintained only for the last 32K strings. + * An index in this array is thus a window index modulo 32K. + */ + + Posf *head; /* Heads of the hash chains or NIL. */ + + uInt ins_h; /* hash index of string to be inserted */ + uInt hash_size; /* number of elements in hash table */ + uInt hash_bits; /* log2(hash_size) */ + uInt hash_mask; /* hash_size-1 */ + + uInt hash_shift; + /* Number of bits by which ins_h must be shifted at each input + * step. It must be such that after MIN_MATCH steps, the oldest + * byte no longer takes part in the hash key, that is: + * hash_shift * MIN_MATCH >= hash_bits + */ + + long block_start; + /* Window position at the beginning of the current output block. Gets + * negative when the window is moved backwards. + */ + + uInt match_length; /* length of best match */ + IPos prev_match; /* previous match */ + int match_available; /* set if previous match exists */ + uInt strstart; /* start of string to insert */ + uInt match_start; /* start of matching string */ + uInt lookahead; /* number of valid bytes ahead in window */ + + uInt prev_length; + /* Length of the best match at previous step. Matches not greater than this + * are discarded. This is used in the lazy match evaluation. + */ + + uInt max_chain_length; + /* To speed up deflation, hash chains are never searched beyond this + * length. A higher limit improves compression ratio but degrades the + * speed. + */ + + uInt max_lazy_match; + /* Attempt to find a better match only when the current match is strictly + * smaller than this value. This mechanism is used only for compression + * levels >= 4. + */ +# define max_insert_length max_lazy_match + /* Insert new strings in the hash table only if the match length is not + * greater than this length. This saves time but degrades compression. + * max_insert_length is used only for compression levels <= 3. + */ + + int level; /* compression level (1..9) */ + int strategy; /* favor or force Huffman coding*/ + + uInt good_match; + /* Use a faster search when the previous match is longer than this */ + + int nice_match; /* Stop searching when current match exceeds this */ + + /* used by trees.c: */ + /* Didn't use ct_data typedef below to suppress compiler warning */ + struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */ + struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */ + struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */ + + struct tree_desc_s l_desc; /* desc. for literal tree */ + struct tree_desc_s d_desc; /* desc. for distance tree */ + struct tree_desc_s bl_desc; /* desc. for bit length tree */ + + ush bl_count[MAX_BITS+1]; + /* number of codes at each bit length for an optimal tree */ + + int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */ + int heap_len; /* number of elements in the heap */ + int heap_max; /* element of largest frequency */ + /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used. + * The same heap array is used to build all trees. + */ + + uch depth[2*L_CODES+1]; + /* Depth of each subtree used as tie breaker for trees of equal frequency + */ + + uchf *l_buf; /* buffer for literals or lengths */ + + uInt lit_bufsize; + /* Size of match buffer for literals/lengths. There are 4 reasons for + * limiting lit_bufsize to 64K: + * - frequencies can be kept in 16 bit counters + * - if compression is not successful for the first block, all input + * data is still in the window so we can still emit a stored block even + * when input comes from standard input. (This can also be done for + * all blocks if lit_bufsize is not greater than 32K.) + * - if compression is not successful for a file smaller than 64K, we can + * even emit a stored file instead of a stored block (saving 5 bytes). + * This is applicable only for zip (not gzip or zlib). + * - creating new Huffman trees less frequently may not provide fast + * adaptation to changes in the input data statistics. (Take for + * example a binary file with poorly compressible code followed by + * a highly compressible string table.) Smaller buffer sizes give + * fast adaptation but have of course the overhead of transmitting + * trees more frequently. + * - I can't count above 4 + */ + + uInt last_lit; /* running index in l_buf */ + + ushf *d_buf; + /* Buffer for distances. To simplify the code, d_buf and l_buf have + * the same number of elements. To use different lengths, an extra flag + * array would be necessary. + */ + + ulg opt_len; /* bit length of current block with optimal trees */ + ulg static_len; /* bit length of current block with static trees */ + uInt matches; /* number of string matches in current block */ + uInt insert; /* bytes at end of window left to insert */ + +#ifdef ZLIB_DEBUG + ulg compressed_len; /* total bit length of compressed file mod 2^32 */ + ulg bits_sent; /* bit length of compressed data sent mod 2^32 */ +#endif + + ush bi_buf; + /* Output buffer. bits are inserted starting at the bottom (least + * significant bits). + */ + int bi_valid; + /* Number of valid bits in bi_buf. All bits above the last valid bit + * are always zero. + */ + + ulg high_water; + /* High water mark offset in window for initialized bytes -- bytes above + * this are set to zero in order to avoid memory check warnings when + * longest match routines access bytes past the input. This is then + * updated to the new high water mark. + */ + +} FAR deflate_state; + +/* Output a byte on the stream. + * IN assertion: there is enough room in pending_buf. + */ +#define put_byte(s, c) {s->pending_buf[s->pending++] = (Bytef)(c);} + + +#define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1) +/* Minimum amount of lookahead, except at the end of the input file. + * See deflate.c for comments about the MIN_MATCH+1. + */ + +#define MAX_DIST(s) ((s)->w_size-MIN_LOOKAHEAD) +/* In order to simplify the code, particularly on 16 bit machines, match + * distances are limited to MAX_DIST instead of WSIZE. + */ + +#define WIN_INIT MAX_MATCH +/* Number of bytes after end of data in window to initialize in order to avoid + memory checker errors from longest match routines */ + + /* in trees.c */ +void ZLIB_INTERNAL _tr_init OF((deflate_state *s)); +int ZLIB_INTERNAL _tr_tally OF((deflate_state *s, unsigned dist, unsigned lc)); +void ZLIB_INTERNAL _tr_flush_block OF((deflate_state *s, charf *buf, + ulg stored_len, int last)); +void ZLIB_INTERNAL _tr_flush_bits OF((deflate_state *s)); +void ZLIB_INTERNAL _tr_align OF((deflate_state *s)); +void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf, + ulg stored_len, int last)); + +#define d_code(dist) \ + ((dist) < 256 ? _dist_code[dist] : _dist_code[256+((dist)>>7)]) +/* Mapping from a distance to a distance code. dist is the distance - 1 and + * must not have side effects. _dist_code[256] and _dist_code[257] are never + * used. + */ + +#ifndef ZLIB_DEBUG +/* Inline versions of _tr_tally for speed: */ + +#if defined(GEN_TREES_H) || !defined(STDC) + extern uch ZLIB_INTERNAL _length_code[]; + extern uch ZLIB_INTERNAL _dist_code[]; +#else + extern const uch ZLIB_INTERNAL _length_code[]; + extern const uch ZLIB_INTERNAL _dist_code[]; +#endif + +# define _tr_tally_lit(s, c, flush) \ + { uch cc = (c); \ + s->d_buf[s->last_lit] = 0; \ + s->l_buf[s->last_lit++] = cc; \ + s->dyn_ltree[cc].Freq++; \ + flush = (s->last_lit == s->lit_bufsize-1); \ + } +# define _tr_tally_dist(s, distance, length, flush) \ + { uch len = (uch)(length); \ + ush dist = (ush)(distance); \ + s->d_buf[s->last_lit] = dist; \ + s->l_buf[s->last_lit++] = len; \ + dist--; \ + s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \ + s->dyn_dtree[d_code(dist)].Freq++; \ + flush = (s->last_lit == s->lit_bufsize-1); \ + } +#else +# define _tr_tally_lit(s, c, flush) flush = _tr_tally(s, 0, c) +# define _tr_tally_dist(s, distance, length, flush) \ + flush = _tr_tally(s, distance, length) +#endif + +#endif /* DEFLATE_H */ diff --git a/waterbox/nyma/zlib/gzclose.c b/waterbox/nyma/zlib/gzclose.c new file mode 100644 index 0000000000..caeb99a317 --- /dev/null +++ b/waterbox/nyma/zlib/gzclose.c @@ -0,0 +1,25 @@ +/* gzclose.c -- zlib gzclose() function + * Copyright (C) 2004, 2010 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +#include "gzguts.h" + +/* gzclose() is in a separate file so that it is linked in only if it is used. + That way the other gzclose functions can be used instead to avoid linking in + unneeded compression or decompression routines. */ +int ZEXPORT gzclose(file) + gzFile file; +{ +#ifndef NO_GZCOMPRESS + gz_statep state; + + if (file == NULL) + return Z_STREAM_ERROR; + state = (gz_statep)file; + + return state->mode == GZ_READ ? gzclose_r(file) : gzclose_w(file); +#else + return gzclose_r(file); +#endif +} diff --git a/waterbox/nyma/zlib/gzguts.h b/waterbox/nyma/zlib/gzguts.h new file mode 100644 index 0000000000..990a4d2514 --- /dev/null +++ b/waterbox/nyma/zlib/gzguts.h @@ -0,0 +1,218 @@ +/* gzguts.h -- zlib internal header definitions for gz* operations + * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +#ifdef _LARGEFILE64_SOURCE +# ifndef _LARGEFILE_SOURCE +# define _LARGEFILE_SOURCE 1 +# endif +# ifdef _FILE_OFFSET_BITS +# undef _FILE_OFFSET_BITS +# endif +#endif + +#ifdef HAVE_HIDDEN +# define ZLIB_INTERNAL __attribute__((visibility ("hidden"))) +#else +# define ZLIB_INTERNAL +#endif + +#include +#include "zlib.h" +#ifdef STDC +# include +# include +# include +#endif + +#ifndef _POSIX_SOURCE +# define _POSIX_SOURCE +#endif +#include + +#ifdef _WIN32 +# include +#endif + +#if defined(__TURBOC__) || defined(_MSC_VER) || defined(_WIN32) +# include +#endif + +#if defined(_WIN32) || defined(__CYGWIN__) +# define WIDECHAR +#endif + +#ifdef WINAPI_FAMILY +# define open _open +# define read _read +# define write _write +# define close _close +#endif + +#ifdef NO_DEFLATE /* for compatibility with old definition */ +# define NO_GZCOMPRESS +#endif + +#if defined(STDC99) || (defined(__TURBOC__) && __TURBOC__ >= 0x550) +# ifndef HAVE_VSNPRINTF +# define HAVE_VSNPRINTF +# endif +#endif + +#if defined(__CYGWIN__) +# ifndef HAVE_VSNPRINTF +# define HAVE_VSNPRINTF +# endif +#endif + +#if defined(MSDOS) && defined(__BORLANDC__) && (BORLANDC > 0x410) +# ifndef HAVE_VSNPRINTF +# define HAVE_VSNPRINTF +# endif +#endif + +#ifndef HAVE_VSNPRINTF +# ifdef MSDOS +/* vsnprintf may exist on some MS-DOS compilers (DJGPP?), + but for now we just assume it doesn't. */ +# define NO_vsnprintf +# endif +# ifdef __TURBOC__ +# define NO_vsnprintf +# endif +# ifdef WIN32 +/* In Win32, vsnprintf is available as the "non-ANSI" _vsnprintf. */ +# if !defined(vsnprintf) && !defined(NO_vsnprintf) +# if !defined(_MSC_VER) || ( defined(_MSC_VER) && _MSC_VER < 1500 ) +# define vsnprintf _vsnprintf +# endif +# endif +# endif +# ifdef __SASC +# define NO_vsnprintf +# endif +# ifdef VMS +# define NO_vsnprintf +# endif +# ifdef __OS400__ +# define NO_vsnprintf +# endif +# ifdef __MVS__ +# define NO_vsnprintf +# endif +#endif + +/* unlike snprintf (which is required in C99), _snprintf does not guarantee + null termination of the result -- however this is only used in gzlib.c where + the result is assured to fit in the space provided */ +#if defined(_MSC_VER) && _MSC_VER < 1900 +# define snprintf _snprintf +#endif + +#ifndef local +# define local static +#endif +/* since "static" is used to mean two completely different things in C, we + define "local" for the non-static meaning of "static", for readability + (compile with -Dlocal if your debugger can't find static symbols) */ + +/* gz* functions always use library allocation functions */ +#ifndef STDC + extern voidp malloc OF((uInt size)); + extern void free OF((voidpf ptr)); +#endif + +/* get errno and strerror definition */ +#if defined UNDER_CE +# include +# define zstrerror() gz_strwinerror((DWORD)GetLastError()) +#else +# ifndef NO_STRERROR +# include +# define zstrerror() strerror(errno) +# else +# define zstrerror() "stdio error (consult errno)" +# endif +#endif + +/* provide prototypes for these when building zlib without LFS */ +#if !defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0 + ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); + ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int)); + ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile)); + ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile)); +#endif + +/* default memLevel */ +#if MAX_MEM_LEVEL >= 8 +# define DEF_MEM_LEVEL 8 +#else +# define DEF_MEM_LEVEL MAX_MEM_LEVEL +#endif + +/* default i/o buffer size -- double this for output when reading (this and + twice this must be able to fit in an unsigned type) */ +#define GZBUFSIZE 8192 + +/* gzip modes, also provide a little integrity check on the passed structure */ +#define GZ_NONE 0 +#define GZ_READ 7247 +#define GZ_WRITE 31153 +#define GZ_APPEND 1 /* mode set to GZ_WRITE after the file is opened */ + +/* values for gz_state how */ +#define LOOK 0 /* look for a gzip header */ +#define COPY 1 /* copy input directly */ +#define GZIP 2 /* decompress a gzip stream */ + +/* internal gzip file state data structure */ +typedef struct { + /* exposed contents for gzgetc() macro */ + struct gzFile_s x; /* "x" for exposed */ + /* x.have: number of bytes available at x.next */ + /* x.next: next output data to deliver or write */ + /* x.pos: current position in uncompressed data */ + /* used for both reading and writing */ + int mode; /* see gzip modes above */ + int fd; /* file descriptor */ + char *path; /* path or fd for error messages */ + unsigned size; /* buffer size, zero if not allocated yet */ + unsigned want; /* requested buffer size, default is GZBUFSIZE */ + unsigned char *in; /* input buffer (double-sized when writing) */ + unsigned char *out; /* output buffer (double-sized when reading) */ + int direct; /* 0 if processing gzip, 1 if transparent */ + /* just for reading */ + int how; /* 0: get header, 1: copy, 2: decompress */ + z_off64_t start; /* where the gzip data started, for rewinding */ + int eof; /* true if end of input file reached */ + int past; /* true if read requested past end */ + /* just for writing */ + int level; /* compression level */ + int strategy; /* compression strategy */ + /* seek request */ + z_off64_t skip; /* amount to skip (already rewound if backwards) */ + int seek; /* true if seek request pending */ + /* error information */ + int err; /* error code */ + char *msg; /* error message */ + /* zlib inflate or deflate stream */ + z_stream strm; /* stream structure in-place (not a pointer) */ +} gz_state; +typedef gz_state FAR *gz_statep; + +/* shared functions */ +void ZLIB_INTERNAL gz_error OF((gz_statep, int, const char *)); +#if defined UNDER_CE +char ZLIB_INTERNAL *gz_strwinerror OF((DWORD error)); +#endif + +/* GT_OFF(x), where x is an unsigned value, is true if x > maximum z_off64_t + value -- needed when comparing unsigned to z_off64_t, which is signed + (possible z_off64_t types off_t, off64_t, and long are all signed) */ +#ifdef INT_MAX +# define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > INT_MAX) +#else +unsigned ZLIB_INTERNAL gz_intmax OF((void)); +# define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > gz_intmax()) +#endif diff --git a/waterbox/nyma/zlib/gzlib.c b/waterbox/nyma/zlib/gzlib.c new file mode 100644 index 0000000000..4105e6aff9 --- /dev/null +++ b/waterbox/nyma/zlib/gzlib.c @@ -0,0 +1,637 @@ +/* gzlib.c -- zlib functions common to reading and writing gzip files + * Copyright (C) 2004-2017 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +#include "gzguts.h" + +#if defined(_WIN32) && !defined(__BORLANDC__) && !defined(__MINGW32__) +# define LSEEK _lseeki64 +#else +#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0 +# define LSEEK lseek64 +#else +# define LSEEK lseek +#endif +#endif + +/* Local functions */ +local void gz_reset OF((gz_statep)); +local gzFile gz_open OF((const void *, int, const char *)); + +#if defined UNDER_CE + +/* Map the Windows error number in ERROR to a locale-dependent error message + string and return a pointer to it. Typically, the values for ERROR come + from GetLastError. + + The string pointed to shall not be modified by the application, but may be + overwritten by a subsequent call to gz_strwinerror + + The gz_strwinerror function does not change the current setting of + GetLastError. */ +char ZLIB_INTERNAL *gz_strwinerror (error) + DWORD error; +{ + static char buf[1024]; + + wchar_t *msgbuf; + DWORD lasterr = GetLastError(); + DWORD chars = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM + | FORMAT_MESSAGE_ALLOCATE_BUFFER, + NULL, + error, + 0, /* Default language */ + (LPVOID)&msgbuf, + 0, + NULL); + if (chars != 0) { + /* If there is an \r\n appended, zap it. */ + if (chars >= 2 + && msgbuf[chars - 2] == '\r' && msgbuf[chars - 1] == '\n') { + chars -= 2; + msgbuf[chars] = 0; + } + + if (chars > sizeof (buf) - 1) { + chars = sizeof (buf) - 1; + msgbuf[chars] = 0; + } + + wcstombs(buf, msgbuf, chars + 1); + LocalFree(msgbuf); + } + else { + sprintf(buf, "unknown win32 error (%ld)", error); + } + + SetLastError(lasterr); + return buf; +} + +#endif /* UNDER_CE */ + +/* Reset gzip file state */ +local void gz_reset(state) + gz_statep state; +{ + state->x.have = 0; /* no output data available */ + if (state->mode == GZ_READ) { /* for reading ... */ + state->eof = 0; /* not at end of file */ + state->past = 0; /* have not read past end yet */ + state->how = LOOK; /* look for gzip header */ + } + state->seek = 0; /* no seek request pending */ + gz_error(state, Z_OK, NULL); /* clear error */ + state->x.pos = 0; /* no uncompressed data yet */ + state->strm.avail_in = 0; /* no input data yet */ +} + +/* Open a gzip file either by name or file descriptor. */ +local gzFile gz_open(path, fd, mode) + const void *path; + int fd; + const char *mode; +{ + gz_statep state; + z_size_t len; + int oflag; +#ifdef O_CLOEXEC + int cloexec = 0; +#endif +#ifdef O_EXCL + int exclusive = 0; +#endif + + /* check input */ + if (path == NULL) + return NULL; + + /* allocate gzFile structure to return */ + state = (gz_statep)malloc(sizeof(gz_state)); + if (state == NULL) + return NULL; + state->size = 0; /* no buffers allocated yet */ + state->want = GZBUFSIZE; /* requested buffer size */ + state->msg = NULL; /* no error message yet */ + + /* interpret mode */ + state->mode = GZ_NONE; + state->level = Z_DEFAULT_COMPRESSION; + state->strategy = Z_DEFAULT_STRATEGY; + state->direct = 0; + while (*mode) { + if (*mode >= '0' && *mode <= '9') + state->level = *mode - '0'; + else + switch (*mode) { + case 'r': + state->mode = GZ_READ; + break; +#ifndef NO_GZCOMPRESS + case 'w': + state->mode = GZ_WRITE; + break; + case 'a': + state->mode = GZ_APPEND; + break; +#endif + case '+': /* can't read and write at the same time */ + free(state); + return NULL; + case 'b': /* ignore -- will request binary anyway */ + break; +#ifdef O_CLOEXEC + case 'e': + cloexec = 1; + break; +#endif +#ifdef O_EXCL + case 'x': + exclusive = 1; + break; +#endif + case 'f': + state->strategy = Z_FILTERED; + break; + case 'h': + state->strategy = Z_HUFFMAN_ONLY; + break; + case 'R': + state->strategy = Z_RLE; + break; + case 'F': + state->strategy = Z_FIXED; + break; + case 'T': + state->direct = 1; + break; + default: /* could consider as an error, but just ignore */ + ; + } + mode++; + } + + /* must provide an "r", "w", or "a" */ + if (state->mode == GZ_NONE) { + free(state); + return NULL; + } + + /* can't force transparent read */ + if (state->mode == GZ_READ) { + if (state->direct) { + free(state); + return NULL; + } + state->direct = 1; /* for empty file */ + } + + /* save the path name for error messages */ +#ifdef WIDECHAR + if (fd == -2) { + len = wcstombs(NULL, path, 0); + if (len == (z_size_t)-1) + len = 0; + } + else +#endif + len = strlen((const char *)path); + state->path = (char *)malloc(len + 1); + if (state->path == NULL) { + free(state); + return NULL; + } +#ifdef WIDECHAR + if (fd == -2) + if (len) + wcstombs(state->path, path, len + 1); + else + *(state->path) = 0; + else +#endif +#if !defined(NO_snprintf) && !defined(NO_vsnprintf) + (void)snprintf(state->path, len + 1, "%s", (const char *)path); +#else + strcpy(state->path, path); +#endif + + /* compute the flags for open() */ + oflag = +#ifdef O_LARGEFILE + O_LARGEFILE | +#endif +#ifdef O_BINARY + O_BINARY | +#endif +#ifdef O_CLOEXEC + (cloexec ? O_CLOEXEC : 0) | +#endif + (state->mode == GZ_READ ? + O_RDONLY : + (O_WRONLY | O_CREAT | +#ifdef O_EXCL + (exclusive ? O_EXCL : 0) | +#endif + (state->mode == GZ_WRITE ? + O_TRUNC : + O_APPEND))); + + /* open the file with the appropriate flags (or just use fd) */ + state->fd = fd > -1 ? fd : ( +#ifdef WIDECHAR + fd == -2 ? _wopen(path, oflag, 0666) : +#endif + open((const char *)path, oflag, 0666)); + if (state->fd == -1) { + free(state->path); + free(state); + return NULL; + } + if (state->mode == GZ_APPEND) { + LSEEK(state->fd, 0, SEEK_END); /* so gzoffset() is correct */ + state->mode = GZ_WRITE; /* simplify later checks */ + } + + /* save the current position for rewinding (only if reading) */ + if (state->mode == GZ_READ) { + state->start = LSEEK(state->fd, 0, SEEK_CUR); + if (state->start == -1) state->start = 0; + } + + /* initialize stream */ + gz_reset(state); + + /* return stream */ + return (gzFile)state; +} + +/* -- see zlib.h -- */ +gzFile ZEXPORT gzopen(path, mode) + const char *path; + const char *mode; +{ + return gz_open(path, -1, mode); +} + +/* -- see zlib.h -- */ +gzFile ZEXPORT gzopen64(path, mode) + const char *path; + const char *mode; +{ + return gz_open(path, -1, mode); +} + +/* -- see zlib.h -- */ +gzFile ZEXPORT gzdopen(fd, mode) + int fd; + const char *mode; +{ + char *path; /* identifier for error messages */ + gzFile gz; + + if (fd == -1 || (path = (char *)malloc(7 + 3 * sizeof(int))) == NULL) + return NULL; +#if !defined(NO_snprintf) && !defined(NO_vsnprintf) + (void)snprintf(path, 7 + 3 * sizeof(int), "", fd); +#else + sprintf(path, "", fd); /* for debugging */ +#endif + gz = gz_open(path, fd, mode); + free(path); + return gz; +} + +/* -- see zlib.h -- */ +#ifdef WIDECHAR +gzFile ZEXPORT gzopen_w(path, mode) + const wchar_t *path; + const char *mode; +{ + return gz_open(path, -2, mode); +} +#endif + +/* -- see zlib.h -- */ +int ZEXPORT gzbuffer(file, size) + gzFile file; + unsigned size; +{ + gz_statep state; + + /* get internal structure and check integrity */ + if (file == NULL) + return -1; + state = (gz_statep)file; + if (state->mode != GZ_READ && state->mode != GZ_WRITE) + return -1; + + /* make sure we haven't already allocated memory */ + if (state->size != 0) + return -1; + + /* check and set requested size */ + if ((size << 1) < size) + return -1; /* need to be able to double it */ + if (size < 2) + size = 2; /* need two bytes to check magic header */ + state->want = size; + return 0; +} + +/* -- see zlib.h -- */ +int ZEXPORT gzrewind(file) + gzFile file; +{ + gz_statep state; + + /* get internal structure */ + if (file == NULL) + return -1; + state = (gz_statep)file; + + /* check that we're reading and that there's no error */ + if (state->mode != GZ_READ || + (state->err != Z_OK && state->err != Z_BUF_ERROR)) + return -1; + + /* back up and start over */ + if (LSEEK(state->fd, state->start, SEEK_SET) == -1) + return -1; + gz_reset(state); + return 0; +} + +/* -- see zlib.h -- */ +z_off64_t ZEXPORT gzseek64(file, offset, whence) + gzFile file; + z_off64_t offset; + int whence; +{ + unsigned n; + z_off64_t ret; + gz_statep state; + + /* get internal structure and check integrity */ + if (file == NULL) + return -1; + state = (gz_statep)file; + if (state->mode != GZ_READ && state->mode != GZ_WRITE) + return -1; + + /* check that there's no error */ + if (state->err != Z_OK && state->err != Z_BUF_ERROR) + return -1; + + /* can only seek from start or relative to current position */ + if (whence != SEEK_SET && whence != SEEK_CUR) + return -1; + + /* normalize offset to a SEEK_CUR specification */ + if (whence == SEEK_SET) + offset -= state->x.pos; + else if (state->seek) + offset += state->skip; + state->seek = 0; + + /* if within raw area while reading, just go there */ + if (state->mode == GZ_READ && state->how == COPY && + state->x.pos + offset >= 0) { + ret = LSEEK(state->fd, offset - state->x.have, SEEK_CUR); + if (ret == -1) + return -1; + state->x.have = 0; + state->eof = 0; + state->past = 0; + state->seek = 0; + gz_error(state, Z_OK, NULL); + state->strm.avail_in = 0; + state->x.pos += offset; + return state->x.pos; + } + + /* calculate skip amount, rewinding if needed for back seek when reading */ + if (offset < 0) { + if (state->mode != GZ_READ) /* writing -- can't go backwards */ + return -1; + offset += state->x.pos; + if (offset < 0) /* before start of file! */ + return -1; + if (gzrewind(file) == -1) /* rewind, then skip to offset */ + return -1; + } + + /* if reading, skip what's in output buffer (one less gzgetc() check) */ + if (state->mode == GZ_READ) { + n = GT_OFF(state->x.have) || (z_off64_t)state->x.have > offset ? + (unsigned)offset : state->x.have; + state->x.have -= n; + state->x.next += n; + state->x.pos += n; + offset -= n; + } + + /* request skip (if not zero) */ + if (offset) { + state->seek = 1; + state->skip = offset; + } + return state->x.pos + offset; +} + +/* -- see zlib.h -- */ +z_off_t ZEXPORT gzseek(file, offset, whence) + gzFile file; + z_off_t offset; + int whence; +{ + z_off64_t ret; + + ret = gzseek64(file, (z_off64_t)offset, whence); + return ret == (z_off_t)ret ? (z_off_t)ret : -1; +} + +/* -- see zlib.h -- */ +z_off64_t ZEXPORT gztell64(file) + gzFile file; +{ + gz_statep state; + + /* get internal structure and check integrity */ + if (file == NULL) + return -1; + state = (gz_statep)file; + if (state->mode != GZ_READ && state->mode != GZ_WRITE) + return -1; + + /* return position */ + return state->x.pos + (state->seek ? state->skip : 0); +} + +/* -- see zlib.h -- */ +z_off_t ZEXPORT gztell(file) + gzFile file; +{ + z_off64_t ret; + + ret = gztell64(file); + return ret == (z_off_t)ret ? (z_off_t)ret : -1; +} + +/* -- see zlib.h -- */ +z_off64_t ZEXPORT gzoffset64(file) + gzFile file; +{ + z_off64_t offset; + gz_statep state; + + /* get internal structure and check integrity */ + if (file == NULL) + return -1; + state = (gz_statep)file; + if (state->mode != GZ_READ && state->mode != GZ_WRITE) + return -1; + + /* compute and return effective offset in file */ + offset = LSEEK(state->fd, 0, SEEK_CUR); + if (offset == -1) + return -1; + if (state->mode == GZ_READ) /* reading */ + offset -= state->strm.avail_in; /* don't count buffered input */ + return offset; +} + +/* -- see zlib.h -- */ +z_off_t ZEXPORT gzoffset(file) + gzFile file; +{ + z_off64_t ret; + + ret = gzoffset64(file); + return ret == (z_off_t)ret ? (z_off_t)ret : -1; +} + +/* -- see zlib.h -- */ +int ZEXPORT gzeof(file) + gzFile file; +{ + gz_statep state; + + /* get internal structure and check integrity */ + if (file == NULL) + return 0; + state = (gz_statep)file; + if (state->mode != GZ_READ && state->mode != GZ_WRITE) + return 0; + + /* return end-of-file state */ + return state->mode == GZ_READ ? state->past : 0; +} + +/* -- see zlib.h -- */ +const char * ZEXPORT gzerror(file, errnum) + gzFile file; + int *errnum; +{ + gz_statep state; + + /* get internal structure and check integrity */ + if (file == NULL) + return NULL; + state = (gz_statep)file; + if (state->mode != GZ_READ && state->mode != GZ_WRITE) + return NULL; + + /* return error information */ + if (errnum != NULL) + *errnum = state->err; + return state->err == Z_MEM_ERROR ? "out of memory" : + (state->msg == NULL ? "" : state->msg); +} + +/* -- see zlib.h -- */ +void ZEXPORT gzclearerr(file) + gzFile file; +{ + gz_statep state; + + /* get internal structure and check integrity */ + if (file == NULL) + return; + state = (gz_statep)file; + if (state->mode != GZ_READ && state->mode != GZ_WRITE) + return; + + /* clear error and end-of-file */ + if (state->mode == GZ_READ) { + state->eof = 0; + state->past = 0; + } + gz_error(state, Z_OK, NULL); +} + +/* Create an error message in allocated memory and set state->err and + state->msg accordingly. Free any previous error message already there. Do + not try to free or allocate space if the error is Z_MEM_ERROR (out of + memory). Simply save the error message as a static string. If there is an + allocation failure constructing the error message, then convert the error to + out of memory. */ +void ZLIB_INTERNAL gz_error(state, err, msg) + gz_statep state; + int err; + const char *msg; +{ + /* free previously allocated message and clear */ + if (state->msg != NULL) { + if (state->err != Z_MEM_ERROR) + free(state->msg); + state->msg = NULL; + } + + /* if fatal, set state->x.have to 0 so that the gzgetc() macro fails */ + if (err != Z_OK && err != Z_BUF_ERROR) + state->x.have = 0; + + /* set error code, and if no message, then done */ + state->err = err; + if (msg == NULL) + return; + + /* for an out of memory error, return literal string when requested */ + if (err == Z_MEM_ERROR) + return; + + /* construct error message with path */ + if ((state->msg = (char *)malloc(strlen(state->path) + strlen(msg) + 3)) == + NULL) { + state->err = Z_MEM_ERROR; + return; + } +#if !defined(NO_snprintf) && !defined(NO_vsnprintf) + (void)snprintf(state->msg, strlen(state->path) + strlen(msg) + 3, + "%s%s%s", state->path, ": ", msg); +#else + strcpy(state->msg, state->path); + strcat(state->msg, ": "); + strcat(state->msg, msg); +#endif +} + +#ifndef INT_MAX +/* portably return maximum value for an int (when limits.h presumed not + available) -- we need to do this to cover cases where 2's complement not + used, since C standard permits 1's complement and sign-bit representations, + otherwise we could just use ((unsigned)-1) >> 1 */ +unsigned ZLIB_INTERNAL gz_intmax() +{ + unsigned p, q; + + p = 1; + do { + q = p; + p <<= 1; + p++; + } while (p > q); + return q >> 1; +} +#endif diff --git a/waterbox/nyma/zlib/gzread.c b/waterbox/nyma/zlib/gzread.c new file mode 100644 index 0000000000..956b91ea7d --- /dev/null +++ b/waterbox/nyma/zlib/gzread.c @@ -0,0 +1,654 @@ +/* gzread.c -- zlib functions for reading gzip files + * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +#include "gzguts.h" + +/* Local functions */ +local int gz_load OF((gz_statep, unsigned char *, unsigned, unsigned *)); +local int gz_avail OF((gz_statep)); +local int gz_look OF((gz_statep)); +local int gz_decomp OF((gz_statep)); +local int gz_fetch OF((gz_statep)); +local int gz_skip OF((gz_statep, z_off64_t)); +local z_size_t gz_read OF((gz_statep, voidp, z_size_t)); + +/* Use read() to load a buffer -- return -1 on error, otherwise 0. Read from + state->fd, and update state->eof, state->err, and state->msg as appropriate. + This function needs to loop on read(), since read() is not guaranteed to + read the number of bytes requested, depending on the type of descriptor. */ +local int gz_load(state, buf, len, have) + gz_statep state; + unsigned char *buf; + unsigned len; + unsigned *have; +{ + int ret; + unsigned get, max = ((unsigned)-1 >> 2) + 1; + + *have = 0; + do { + get = len - *have; + if (get > max) + get = max; + ret = read(state->fd, buf + *have, get); + if (ret <= 0) + break; + *have += (unsigned)ret; + } while (*have < len); + if (ret < 0) { + gz_error(state, Z_ERRNO, zstrerror()); + return -1; + } + if (ret == 0) + state->eof = 1; + return 0; +} + +/* Load up input buffer and set eof flag if last data loaded -- return -1 on + error, 0 otherwise. Note that the eof flag is set when the end of the input + file is reached, even though there may be unused data in the buffer. Once + that data has been used, no more attempts will be made to read the file. + If strm->avail_in != 0, then the current data is moved to the beginning of + the input buffer, and then the remainder of the buffer is loaded with the + available data from the input file. */ +local int gz_avail(state) + gz_statep state; +{ + unsigned got; + z_streamp strm = &(state->strm); + + if (state->err != Z_OK && state->err != Z_BUF_ERROR) + return -1; + if (state->eof == 0) { + if (strm->avail_in) { /* copy what's there to the start */ + unsigned char *p = state->in; + unsigned const char *q = strm->next_in; + unsigned n = strm->avail_in; + do { + *p++ = *q++; + } while (--n); + } + if (gz_load(state, state->in + strm->avail_in, + state->size - strm->avail_in, &got) == -1) + return -1; + strm->avail_in += got; + strm->next_in = state->in; + } + return 0; +} + +/* Look for gzip header, set up for inflate or copy. state->x.have must be 0. + If this is the first time in, allocate required memory. state->how will be + left unchanged if there is no more input data available, will be set to COPY + if there is no gzip header and direct copying will be performed, or it will + be set to GZIP for decompression. If direct copying, then leftover input + data from the input buffer will be copied to the output buffer. In that + case, all further file reads will be directly to either the output buffer or + a user buffer. If decompressing, the inflate state will be initialized. + gz_look() will return 0 on success or -1 on failure. */ +local int gz_look(state) + gz_statep state; +{ + z_streamp strm = &(state->strm); + + /* allocate read buffers and inflate memory */ + if (state->size == 0) { + /* allocate buffers */ + state->in = (unsigned char *)malloc(state->want); + state->out = (unsigned char *)malloc(state->want << 1); + if (state->in == NULL || state->out == NULL) { + free(state->out); + free(state->in); + gz_error(state, Z_MEM_ERROR, "out of memory"); + return -1; + } + state->size = state->want; + + /* allocate inflate memory */ + state->strm.zalloc = Z_NULL; + state->strm.zfree = Z_NULL; + state->strm.opaque = Z_NULL; + state->strm.avail_in = 0; + state->strm.next_in = Z_NULL; + if (inflateInit2(&(state->strm), 15 + 16) != Z_OK) { /* gunzip */ + free(state->out); + free(state->in); + state->size = 0; + gz_error(state, Z_MEM_ERROR, "out of memory"); + return -1; + } + } + + /* get at least the magic bytes in the input buffer */ + if (strm->avail_in < 2) { + if (gz_avail(state) == -1) + return -1; + if (strm->avail_in == 0) + return 0; + } + + /* look for gzip magic bytes -- if there, do gzip decoding (note: there is + a logical dilemma here when considering the case of a partially written + gzip file, to wit, if a single 31 byte is written, then we cannot tell + whether this is a single-byte file, or just a partially written gzip + file -- for here we assume that if a gzip file is being written, then + the header will be written in a single operation, so that reading a + single byte is sufficient indication that it is not a gzip file) */ + if (strm->avail_in > 1 && + strm->next_in[0] == 31 && strm->next_in[1] == 139) { + inflateReset(strm); + state->how = GZIP; + state->direct = 0; + return 0; + } + + /* no gzip header -- if we were decoding gzip before, then this is trailing + garbage. Ignore the trailing garbage and finish. */ + if (state->direct == 0) { + strm->avail_in = 0; + state->eof = 1; + state->x.have = 0; + return 0; + } + + /* doing raw i/o, copy any leftover input to output -- this assumes that + the output buffer is larger than the input buffer, which also assures + space for gzungetc() */ + state->x.next = state->out; + if (strm->avail_in) { + memcpy(state->x.next, strm->next_in, strm->avail_in); + state->x.have = strm->avail_in; + strm->avail_in = 0; + } + state->how = COPY; + state->direct = 1; + return 0; +} + +/* Decompress from input to the provided next_out and avail_out in the state. + On return, state->x.have and state->x.next point to the just decompressed + data. If the gzip stream completes, state->how is reset to LOOK to look for + the next gzip stream or raw data, once state->x.have is depleted. Returns 0 + on success, -1 on failure. */ +local int gz_decomp(state) + gz_statep state; +{ + int ret = Z_OK; + unsigned had; + z_streamp strm = &(state->strm); + + /* fill output buffer up to end of deflate stream */ + had = strm->avail_out; + do { + /* get more input for inflate() */ + if (strm->avail_in == 0 && gz_avail(state) == -1) + return -1; + if (strm->avail_in == 0) { + gz_error(state, Z_BUF_ERROR, "unexpected end of file"); + break; + } + + /* decompress and handle errors */ + ret = inflate(strm, Z_NO_FLUSH); + if (ret == Z_STREAM_ERROR || ret == Z_NEED_DICT) { + gz_error(state, Z_STREAM_ERROR, + "internal error: inflate stream corrupt"); + return -1; + } + if (ret == Z_MEM_ERROR) { + gz_error(state, Z_MEM_ERROR, "out of memory"); + return -1; + } + if (ret == Z_DATA_ERROR) { /* deflate stream invalid */ + gz_error(state, Z_DATA_ERROR, + strm->msg == NULL ? "compressed data error" : strm->msg); + return -1; + } + } while (strm->avail_out && ret != Z_STREAM_END); + + /* update available output */ + state->x.have = had - strm->avail_out; + state->x.next = strm->next_out - state->x.have; + + /* if the gzip stream completed successfully, look for another */ + if (ret == Z_STREAM_END) + state->how = LOOK; + + /* good decompression */ + return 0; +} + +/* Fetch data and put it in the output buffer. Assumes state->x.have is 0. + Data is either copied from the input file or decompressed from the input + file depending on state->how. If state->how is LOOK, then a gzip header is + looked for to determine whether to copy or decompress. Returns -1 on error, + otherwise 0. gz_fetch() will leave state->how as COPY or GZIP unless the + end of the input file has been reached and all data has been processed. */ +local int gz_fetch(state) + gz_statep state; +{ + z_streamp strm = &(state->strm); + + do { + switch(state->how) { + case LOOK: /* -> LOOK, COPY (only if never GZIP), or GZIP */ + if (gz_look(state) == -1) + return -1; + if (state->how == LOOK) + return 0; + break; + case COPY: /* -> COPY */ + if (gz_load(state, state->out, state->size << 1, &(state->x.have)) + == -1) + return -1; + state->x.next = state->out; + return 0; + case GZIP: /* -> GZIP or LOOK (if end of gzip stream) */ + strm->avail_out = state->size << 1; + strm->next_out = state->out; + if (gz_decomp(state) == -1) + return -1; + } + } while (state->x.have == 0 && (!state->eof || strm->avail_in)); + return 0; +} + +/* Skip len uncompressed bytes of output. Return -1 on error, 0 on success. */ +local int gz_skip(state, len) + gz_statep state; + z_off64_t len; +{ + unsigned n; + + /* skip over len bytes or reach end-of-file, whichever comes first */ + while (len) + /* skip over whatever is in output buffer */ + if (state->x.have) { + n = GT_OFF(state->x.have) || (z_off64_t)state->x.have > len ? + (unsigned)len : state->x.have; + state->x.have -= n; + state->x.next += n; + state->x.pos += n; + len -= n; + } + + /* output buffer empty -- return if we're at the end of the input */ + else if (state->eof && state->strm.avail_in == 0) + break; + + /* need more data to skip -- load up output buffer */ + else { + /* get more output, looking for header if required */ + if (gz_fetch(state) == -1) + return -1; + } + return 0; +} + +/* Read len bytes into buf from file, or less than len up to the end of the + input. Return the number of bytes read. If zero is returned, either the + end of file was reached, or there was an error. state->err must be + consulted in that case to determine which. */ +local z_size_t gz_read(state, buf, len) + gz_statep state; + voidp buf; + z_size_t len; +{ + z_size_t got; + unsigned n; + + /* if len is zero, avoid unnecessary operations */ + if (len == 0) + return 0; + + /* process a skip request */ + if (state->seek) { + state->seek = 0; + if (gz_skip(state, state->skip) == -1) + return 0; + } + + /* get len bytes to buf, or less than len if at the end */ + got = 0; + do { + /* set n to the maximum amount of len that fits in an unsigned int */ + n = -1; + if (n > len) + n = len; + + /* first just try copying data from the output buffer */ + if (state->x.have) { + if (state->x.have < n) + n = state->x.have; + memcpy(buf, state->x.next, n); + state->x.next += n; + state->x.have -= n; + } + + /* output buffer empty -- return if we're at the end of the input */ + else if (state->eof && state->strm.avail_in == 0) { + state->past = 1; /* tried to read past end */ + break; + } + + /* need output data -- for small len or new stream load up our output + buffer */ + else if (state->how == LOOK || n < (state->size << 1)) { + /* get more output, looking for header if required */ + if (gz_fetch(state) == -1) + return 0; + continue; /* no progress yet -- go back to copy above */ + /* the copy above assures that we will leave with space in the + output buffer, allowing at least one gzungetc() to succeed */ + } + + /* large len -- read directly into user buffer */ + else if (state->how == COPY) { /* read directly */ + if (gz_load(state, (unsigned char *)buf, n, &n) == -1) + return 0; + } + + /* large len -- decompress directly into user buffer */ + else { /* state->how == GZIP */ + state->strm.avail_out = n; + state->strm.next_out = (unsigned char *)buf; + if (gz_decomp(state) == -1) + return 0; + n = state->x.have; + state->x.have = 0; + } + + /* update progress */ + len -= n; + buf = (char *)buf + n; + got += n; + state->x.pos += n; + } while (len); + + /* return number of bytes read into user buffer */ + return got; +} + +/* -- see zlib.h -- */ +int ZEXPORT gzread(file, buf, len) + gzFile file; + voidp buf; + unsigned len; +{ + gz_statep state; + + /* get internal structure */ + if (file == NULL) + return -1; + state = (gz_statep)file; + + /* check that we're reading and that there's no (serious) error */ + if (state->mode != GZ_READ || + (state->err != Z_OK && state->err != Z_BUF_ERROR)) + return -1; + + /* since an int is returned, make sure len fits in one, otherwise return + with an error (this avoids a flaw in the interface) */ + if ((int)len < 0) { + gz_error(state, Z_STREAM_ERROR, "request does not fit in an int"); + return -1; + } + + /* read len or fewer bytes to buf */ + len = gz_read(state, buf, len); + + /* check for an error */ + if (len == 0 && state->err != Z_OK && state->err != Z_BUF_ERROR) + return -1; + + /* return the number of bytes read (this is assured to fit in an int) */ + return (int)len; +} + +/* -- see zlib.h -- */ +z_size_t ZEXPORT gzfread(buf, size, nitems, file) + voidp buf; + z_size_t size; + z_size_t nitems; + gzFile file; +{ + z_size_t len; + gz_statep state; + + /* get internal structure */ + if (file == NULL) + return 0; + state = (gz_statep)file; + + /* check that we're reading and that there's no (serious) error */ + if (state->mode != GZ_READ || + (state->err != Z_OK && state->err != Z_BUF_ERROR)) + return 0; + + /* compute bytes to read -- error on overflow */ + len = nitems * size; + if (size && len / size != nitems) { + gz_error(state, Z_STREAM_ERROR, "request does not fit in a size_t"); + return 0; + } + + /* read len or fewer bytes to buf, return the number of full items read */ + return len ? gz_read(state, buf, len) / size : 0; +} + +/* -- see zlib.h -- */ +#ifdef Z_PREFIX_SET +# undef z_gzgetc +#else +# undef gzgetc +#endif +int ZEXPORT gzgetc(file) + gzFile file; +{ + int ret; + unsigned char buf[1]; + gz_statep state; + + /* get internal structure */ + if (file == NULL) + return -1; + state = (gz_statep)file; + + /* check that we're reading and that there's no (serious) error */ + if (state->mode != GZ_READ || + (state->err != Z_OK && state->err != Z_BUF_ERROR)) + return -1; + + /* try output buffer (no need to check for skip request) */ + if (state->x.have) { + state->x.have--; + state->x.pos++; + return *(state->x.next)++; + } + + /* nothing there -- try gz_read() */ + ret = gz_read(state, buf, 1); + return ret < 1 ? -1 : buf[0]; +} + +int ZEXPORT gzgetc_(file) +gzFile file; +{ + return gzgetc(file); +} + +/* -- see zlib.h -- */ +int ZEXPORT gzungetc(c, file) + int c; + gzFile file; +{ + gz_statep state; + + /* get internal structure */ + if (file == NULL) + return -1; + state = (gz_statep)file; + + /* check that we're reading and that there's no (serious) error */ + if (state->mode != GZ_READ || + (state->err != Z_OK && state->err != Z_BUF_ERROR)) + return -1; + + /* process a skip request */ + if (state->seek) { + state->seek = 0; + if (gz_skip(state, state->skip) == -1) + return -1; + } + + /* can't push EOF */ + if (c < 0) + return -1; + + /* if output buffer empty, put byte at end (allows more pushing) */ + if (state->x.have == 0) { + state->x.have = 1; + state->x.next = state->out + (state->size << 1) - 1; + state->x.next[0] = (unsigned char)c; + state->x.pos--; + state->past = 0; + return c; + } + + /* if no room, give up (must have already done a gzungetc()) */ + if (state->x.have == (state->size << 1)) { + gz_error(state, Z_DATA_ERROR, "out of room to push characters"); + return -1; + } + + /* slide output data if needed and insert byte before existing data */ + if (state->x.next == state->out) { + unsigned char *src = state->out + state->x.have; + unsigned char *dest = state->out + (state->size << 1); + while (src > state->out) + *--dest = *--src; + state->x.next = dest; + } + state->x.have++; + state->x.next--; + state->x.next[0] = (unsigned char)c; + state->x.pos--; + state->past = 0; + return c; +} + +/* -- see zlib.h -- */ +char * ZEXPORT gzgets(file, buf, len) + gzFile file; + char *buf; + int len; +{ + unsigned left, n; + char *str; + unsigned char *eol; + gz_statep state; + + /* check parameters and get internal structure */ + if (file == NULL || buf == NULL || len < 1) + return NULL; + state = (gz_statep)file; + + /* check that we're reading and that there's no (serious) error */ + if (state->mode != GZ_READ || + (state->err != Z_OK && state->err != Z_BUF_ERROR)) + return NULL; + + /* process a skip request */ + if (state->seek) { + state->seek = 0; + if (gz_skip(state, state->skip) == -1) + return NULL; + } + + /* copy output bytes up to new line or len - 1, whichever comes first -- + append a terminating zero to the string (we don't check for a zero in + the contents, let the user worry about that) */ + str = buf; + left = (unsigned)len - 1; + if (left) do { + /* assure that something is in the output buffer */ + if (state->x.have == 0 && gz_fetch(state) == -1) + return NULL; /* error */ + if (state->x.have == 0) { /* end of file */ + state->past = 1; /* read past end */ + break; /* return what we have */ + } + + /* look for end-of-line in current output buffer */ + n = state->x.have > left ? left : state->x.have; + eol = (unsigned char *)memchr(state->x.next, '\n', n); + if (eol != NULL) + n = (unsigned)(eol - state->x.next) + 1; + + /* copy through end-of-line, or remainder if not found */ + memcpy(buf, state->x.next, n); + state->x.have -= n; + state->x.next += n; + state->x.pos += n; + left -= n; + buf += n; + } while (left && eol == NULL); + + /* return terminated string, or if nothing, end of file */ + if (buf == str) + return NULL; + buf[0] = 0; + return str; +} + +/* -- see zlib.h -- */ +int ZEXPORT gzdirect(file) + gzFile file; +{ + gz_statep state; + + /* get internal structure */ + if (file == NULL) + return 0; + state = (gz_statep)file; + + /* if the state is not known, but we can find out, then do so (this is + mainly for right after a gzopen() or gzdopen()) */ + if (state->mode == GZ_READ && state->how == LOOK && state->x.have == 0) + (void)gz_look(state); + + /* return 1 if transparent, 0 if processing a gzip stream */ + return state->direct; +} + +/* -- see zlib.h -- */ +int ZEXPORT gzclose_r(file) + gzFile file; +{ + int ret, err; + gz_statep state; + + /* get internal structure */ + if (file == NULL) + return Z_STREAM_ERROR; + state = (gz_statep)file; + + /* check that we're reading */ + if (state->mode != GZ_READ) + return Z_STREAM_ERROR; + + /* free memory and close file */ + if (state->size) { + inflateEnd(&(state->strm)); + free(state->out); + free(state->in); + } + err = state->err == Z_BUF_ERROR ? Z_BUF_ERROR : Z_OK; + gz_error(state, Z_OK, NULL); + free(state->path); + ret = close(state->fd); + free(state); + return ret ? Z_ERRNO : err; +} diff --git a/waterbox/nyma/zlib/gzwrite.c b/waterbox/nyma/zlib/gzwrite.c new file mode 100644 index 0000000000..c7b5651d70 --- /dev/null +++ b/waterbox/nyma/zlib/gzwrite.c @@ -0,0 +1,665 @@ +/* gzwrite.c -- zlib functions for writing gzip files + * Copyright (C) 2004-2017 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +#include "gzguts.h" + +/* Local functions */ +local int gz_init OF((gz_statep)); +local int gz_comp OF((gz_statep, int)); +local int gz_zero OF((gz_statep, z_off64_t)); +local z_size_t gz_write OF((gz_statep, voidpc, z_size_t)); + +/* Initialize state for writing a gzip file. Mark initialization by setting + state->size to non-zero. Return -1 on a memory allocation failure, or 0 on + success. */ +local int gz_init(state) + gz_statep state; +{ + int ret; + z_streamp strm = &(state->strm); + + /* allocate input buffer (double size for gzprintf) */ + state->in = (unsigned char *)malloc(state->want << 1); + if (state->in == NULL) { + gz_error(state, Z_MEM_ERROR, "out of memory"); + return -1; + } + + /* only need output buffer and deflate state if compressing */ + if (!state->direct) { + /* allocate output buffer */ + state->out = (unsigned char *)malloc(state->want); + if (state->out == NULL) { + free(state->in); + gz_error(state, Z_MEM_ERROR, "out of memory"); + return -1; + } + + /* allocate deflate memory, set up for gzip compression */ + strm->zalloc = Z_NULL; + strm->zfree = Z_NULL; + strm->opaque = Z_NULL; + ret = deflateInit2(strm, state->level, Z_DEFLATED, + MAX_WBITS + 16, DEF_MEM_LEVEL, state->strategy); + if (ret != Z_OK) { + free(state->out); + free(state->in); + gz_error(state, Z_MEM_ERROR, "out of memory"); + return -1; + } + strm->next_in = NULL; + } + + /* mark state as initialized */ + state->size = state->want; + + /* initialize write buffer if compressing */ + if (!state->direct) { + strm->avail_out = state->size; + strm->next_out = state->out; + state->x.next = strm->next_out; + } + return 0; +} + +/* Compress whatever is at avail_in and next_in and write to the output file. + Return -1 if there is an error writing to the output file or if gz_init() + fails to allocate memory, otherwise 0. flush is assumed to be a valid + deflate() flush value. If flush is Z_FINISH, then the deflate() state is + reset to start a new gzip stream. If gz->direct is true, then simply write + to the output file without compressing, and ignore flush. */ +local int gz_comp(state, flush) + gz_statep state; + int flush; +{ + int ret, writ; + unsigned have, put, max = ((unsigned)-1 >> 2) + 1; + z_streamp strm = &(state->strm); + + /* allocate memory if this is the first time through */ + if (state->size == 0 && gz_init(state) == -1) + return -1; + + /* write directly if requested */ + if (state->direct) { + while (strm->avail_in) { + put = strm->avail_in > max ? max : strm->avail_in; + writ = write(state->fd, strm->next_in, put); + if (writ < 0) { + gz_error(state, Z_ERRNO, zstrerror()); + return -1; + } + strm->avail_in -= (unsigned)writ; + strm->next_in += writ; + } + return 0; + } + + /* run deflate() on provided input until it produces no more output */ + ret = Z_OK; + do { + /* write out current buffer contents if full, or if flushing, but if + doing Z_FINISH then don't write until we get to Z_STREAM_END */ + if (strm->avail_out == 0 || (flush != Z_NO_FLUSH && + (flush != Z_FINISH || ret == Z_STREAM_END))) { + while (strm->next_out > state->x.next) { + put = strm->next_out - state->x.next > (int)max ? max : + (unsigned)(strm->next_out - state->x.next); + writ = write(state->fd, state->x.next, put); + if (writ < 0) { + gz_error(state, Z_ERRNO, zstrerror()); + return -1; + } + state->x.next += writ; + } + if (strm->avail_out == 0) { + strm->avail_out = state->size; + strm->next_out = state->out; + state->x.next = state->out; + } + } + + /* compress */ + have = strm->avail_out; + ret = deflate(strm, flush); + if (ret == Z_STREAM_ERROR) { + gz_error(state, Z_STREAM_ERROR, + "internal error: deflate stream corrupt"); + return -1; + } + have -= strm->avail_out; + } while (have); + + /* if that completed a deflate stream, allow another to start */ + if (flush == Z_FINISH) + deflateReset(strm); + + /* all done, no errors */ + return 0; +} + +/* Compress len zeros to output. Return -1 on a write error or memory + allocation failure by gz_comp(), or 0 on success. */ +local int gz_zero(state, len) + gz_statep state; + z_off64_t len; +{ + int first; + unsigned n; + z_streamp strm = &(state->strm); + + /* consume whatever's left in the input buffer */ + if (strm->avail_in && gz_comp(state, Z_NO_FLUSH) == -1) + return -1; + + /* compress len zeros (len guaranteed > 0) */ + first = 1; + while (len) { + n = GT_OFF(state->size) || (z_off64_t)state->size > len ? + (unsigned)len : state->size; + if (first) { + memset(state->in, 0, n); + first = 0; + } + strm->avail_in = n; + strm->next_in = state->in; + state->x.pos += n; + if (gz_comp(state, Z_NO_FLUSH) == -1) + return -1; + len -= n; + } + return 0; +} + +/* Write len bytes from buf to file. Return the number of bytes written. If + the returned value is less than len, then there was an error. */ +local z_size_t gz_write(state, buf, len) + gz_statep state; + voidpc buf; + z_size_t len; +{ + z_size_t put = len; + + /* if len is zero, avoid unnecessary operations */ + if (len == 0) + return 0; + + /* allocate memory if this is the first time through */ + if (state->size == 0 && gz_init(state) == -1) + return 0; + + /* check for seek request */ + if (state->seek) { + state->seek = 0; + if (gz_zero(state, state->skip) == -1) + return 0; + } + + /* for small len, copy to input buffer, otherwise compress directly */ + if (len < state->size) { + /* copy to input buffer, compress when full */ + do { + unsigned have, copy; + + if (state->strm.avail_in == 0) + state->strm.next_in = state->in; + have = (unsigned)((state->strm.next_in + state->strm.avail_in) - + state->in); + copy = state->size - have; + if (copy > len) + copy = len; + memcpy(state->in + have, buf, copy); + state->strm.avail_in += copy; + state->x.pos += copy; + buf = (const char *)buf + copy; + len -= copy; + if (len && gz_comp(state, Z_NO_FLUSH) == -1) + return 0; + } while (len); + } + else { + /* consume whatever's left in the input buffer */ + if (state->strm.avail_in && gz_comp(state, Z_NO_FLUSH) == -1) + return 0; + + /* directly compress user buffer to file */ + state->strm.next_in = (z_const Bytef *)buf; + do { + unsigned n = (unsigned)-1; + if (n > len) + n = len; + state->strm.avail_in = n; + state->x.pos += n; + if (gz_comp(state, Z_NO_FLUSH) == -1) + return 0; + len -= n; + } while (len); + } + + /* input was all buffered or compressed */ + return put; +} + +/* -- see zlib.h -- */ +int ZEXPORT gzwrite(file, buf, len) + gzFile file; + voidpc buf; + unsigned len; +{ + gz_statep state; + + /* get internal structure */ + if (file == NULL) + return 0; + state = (gz_statep)file; + + /* check that we're writing and that there's no error */ + if (state->mode != GZ_WRITE || state->err != Z_OK) + return 0; + + /* since an int is returned, make sure len fits in one, otherwise return + with an error (this avoids a flaw in the interface) */ + if ((int)len < 0) { + gz_error(state, Z_DATA_ERROR, "requested length does not fit in int"); + return 0; + } + + /* write len bytes from buf (the return value will fit in an int) */ + return (int)gz_write(state, buf, len); +} + +/* -- see zlib.h -- */ +z_size_t ZEXPORT gzfwrite(buf, size, nitems, file) + voidpc buf; + z_size_t size; + z_size_t nitems; + gzFile file; +{ + z_size_t len; + gz_statep state; + + /* get internal structure */ + if (file == NULL) + return 0; + state = (gz_statep)file; + + /* check that we're writing and that there's no error */ + if (state->mode != GZ_WRITE || state->err != Z_OK) + return 0; + + /* compute bytes to read -- error on overflow */ + len = nitems * size; + if (size && len / size != nitems) { + gz_error(state, Z_STREAM_ERROR, "request does not fit in a size_t"); + return 0; + } + + /* write len bytes to buf, return the number of full items written */ + return len ? gz_write(state, buf, len) / size : 0; +} + +/* -- see zlib.h -- */ +int ZEXPORT gzputc(file, c) + gzFile file; + int c; +{ + unsigned have; + unsigned char buf[1]; + gz_statep state; + z_streamp strm; + + /* get internal structure */ + if (file == NULL) + return -1; + state = (gz_statep)file; + strm = &(state->strm); + + /* check that we're writing and that there's no error */ + if (state->mode != GZ_WRITE || state->err != Z_OK) + return -1; + + /* check for seek request */ + if (state->seek) { + state->seek = 0; + if (gz_zero(state, state->skip) == -1) + return -1; + } + + /* try writing to input buffer for speed (state->size == 0 if buffer not + initialized) */ + if (state->size) { + if (strm->avail_in == 0) + strm->next_in = state->in; + have = (unsigned)((strm->next_in + strm->avail_in) - state->in); + if (have < state->size) { + state->in[have] = (unsigned char)c; + strm->avail_in++; + state->x.pos++; + return c & 0xff; + } + } + + /* no room in buffer or not initialized, use gz_write() */ + buf[0] = (unsigned char)c; + if (gz_write(state, buf, 1) != 1) + return -1; + return c & 0xff; +} + +/* -- see zlib.h -- */ +int ZEXPORT gzputs(file, str) + gzFile file; + const char *str; +{ + int ret; + z_size_t len; + gz_statep state; + + /* get internal structure */ + if (file == NULL) + return -1; + state = (gz_statep)file; + + /* check that we're writing and that there's no error */ + if (state->mode != GZ_WRITE || state->err != Z_OK) + return -1; + + /* write string */ + len = strlen(str); + ret = gz_write(state, str, len); + return ret == 0 && len != 0 ? -1 : ret; +} + +#if defined(STDC) || defined(Z_HAVE_STDARG_H) +#include + +/* -- see zlib.h -- */ +int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va) +{ + int len; + unsigned left; + char *next; + gz_statep state; + z_streamp strm; + + /* get internal structure */ + if (file == NULL) + return Z_STREAM_ERROR; + state = (gz_statep)file; + strm = &(state->strm); + + /* check that we're writing and that there's no error */ + if (state->mode != GZ_WRITE || state->err != Z_OK) + return Z_STREAM_ERROR; + + /* make sure we have some buffer space */ + if (state->size == 0 && gz_init(state) == -1) + return state->err; + + /* check for seek request */ + if (state->seek) { + state->seek = 0; + if (gz_zero(state, state->skip) == -1) + return state->err; + } + + /* do the printf() into the input buffer, put length in len -- the input + buffer is double-sized just for this function, so there is guaranteed to + be state->size bytes available after the current contents */ + if (strm->avail_in == 0) + strm->next_in = state->in; + next = (char *)(state->in + (strm->next_in - state->in) + strm->avail_in); + next[state->size - 1] = 0; +#ifdef NO_vsnprintf +# ifdef HAS_vsprintf_void + (void)vsprintf(next, format, va); + for (len = 0; len < state->size; len++) + if (next[len] == 0) break; +# else + len = vsprintf(next, format, va); +# endif +#else +# ifdef HAS_vsnprintf_void + (void)vsnprintf(next, state->size, format, va); + len = strlen(next); +# else + len = vsnprintf(next, state->size, format, va); +# endif +#endif + + /* check that printf() results fit in buffer */ + if (len == 0 || (unsigned)len >= state->size || next[state->size - 1] != 0) + return 0; + + /* update buffer and position, compress first half if past that */ + strm->avail_in += (unsigned)len; + state->x.pos += len; + if (strm->avail_in >= state->size) { + left = strm->avail_in - state->size; + strm->avail_in = state->size; + if (gz_comp(state, Z_NO_FLUSH) == -1) + return state->err; + memcpy(state->in, state->in + state->size, left); + strm->next_in = state->in; + strm->avail_in = left; + } + return len; +} + +int ZEXPORTVA gzprintf(gzFile file, const char *format, ...) +{ + va_list va; + int ret; + + va_start(va, format); + ret = gzvprintf(file, format, va); + va_end(va); + return ret; +} + +#else /* !STDC && !Z_HAVE_STDARG_H */ + +/* -- see zlib.h -- */ +int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, + a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) + gzFile file; + const char *format; + int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, + a11, a12, a13, a14, a15, a16, a17, a18, a19, a20; +{ + unsigned len, left; + char *next; + gz_statep state; + z_streamp strm; + + /* get internal structure */ + if (file == NULL) + return Z_STREAM_ERROR; + state = (gz_statep)file; + strm = &(state->strm); + + /* check that can really pass pointer in ints */ + if (sizeof(int) != sizeof(void *)) + return Z_STREAM_ERROR; + + /* check that we're writing and that there's no error */ + if (state->mode != GZ_WRITE || state->err != Z_OK) + return Z_STREAM_ERROR; + + /* make sure we have some buffer space */ + if (state->size == 0 && gz_init(state) == -1) + return state->error; + + /* check for seek request */ + if (state->seek) { + state->seek = 0; + if (gz_zero(state, state->skip) == -1) + return state->error; + } + + /* do the printf() into the input buffer, put length in len -- the input + buffer is double-sized just for this function, so there is guaranteed to + be state->size bytes available after the current contents */ + if (strm->avail_in == 0) + strm->next_in = state->in; + next = (char *)(strm->next_in + strm->avail_in); + next[state->size - 1] = 0; +#ifdef NO_snprintf +# ifdef HAS_sprintf_void + sprintf(next, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, + a13, a14, a15, a16, a17, a18, a19, a20); + for (len = 0; len < size; len++) + if (next[len] == 0) + break; +# else + len = sprintf(next, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, + a12, a13, a14, a15, a16, a17, a18, a19, a20); +# endif +#else +# ifdef HAS_snprintf_void + snprintf(next, state->size, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, + a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20); + len = strlen(next); +# else + len = snprintf(next, state->size, format, a1, a2, a3, a4, a5, a6, a7, a8, + a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20); +# endif +#endif + + /* check that printf() results fit in buffer */ + if (len == 0 || len >= state->size || next[state->size - 1] != 0) + return 0; + + /* update buffer and position, compress first half if past that */ + strm->avail_in += len; + state->x.pos += len; + if (strm->avail_in >= state->size) { + left = strm->avail_in - state->size; + strm->avail_in = state->size; + if (gz_comp(state, Z_NO_FLUSH) == -1) + return state->err; + memcpy(state->in, state->in + state->size, left); + strm->next_in = state->in; + strm->avail_in = left; + } + return (int)len; +} + +#endif + +/* -- see zlib.h -- */ +int ZEXPORT gzflush(file, flush) + gzFile file; + int flush; +{ + gz_statep state; + + /* get internal structure */ + if (file == NULL) + return Z_STREAM_ERROR; + state = (gz_statep)file; + + /* check that we're writing and that there's no error */ + if (state->mode != GZ_WRITE || state->err != Z_OK) + return Z_STREAM_ERROR; + + /* check flush parameter */ + if (flush < 0 || flush > Z_FINISH) + return Z_STREAM_ERROR; + + /* check for seek request */ + if (state->seek) { + state->seek = 0; + if (gz_zero(state, state->skip) == -1) + return state->err; + } + + /* compress remaining data with requested flush */ + (void)gz_comp(state, flush); + return state->err; +} + +/* -- see zlib.h -- */ +int ZEXPORT gzsetparams(file, level, strategy) + gzFile file; + int level; + int strategy; +{ + gz_statep state; + z_streamp strm; + + /* get internal structure */ + if (file == NULL) + return Z_STREAM_ERROR; + state = (gz_statep)file; + strm = &(state->strm); + + /* check that we're writing and that there's no error */ + if (state->mode != GZ_WRITE || state->err != Z_OK) + return Z_STREAM_ERROR; + + /* if no change is requested, then do nothing */ + if (level == state->level && strategy == state->strategy) + return Z_OK; + + /* check for seek request */ + if (state->seek) { + state->seek = 0; + if (gz_zero(state, state->skip) == -1) + return state->err; + } + + /* change compression parameters for subsequent input */ + if (state->size) { + /* flush previous input with previous parameters before changing */ + if (strm->avail_in && gz_comp(state, Z_BLOCK) == -1) + return state->err; + deflateParams(strm, level, strategy); + } + state->level = level; + state->strategy = strategy; + return Z_OK; +} + +/* -- see zlib.h -- */ +int ZEXPORT gzclose_w(file) + gzFile file; +{ + int ret = Z_OK; + gz_statep state; + + /* get internal structure */ + if (file == NULL) + return Z_STREAM_ERROR; + state = (gz_statep)file; + + /* check that we're writing */ + if (state->mode != GZ_WRITE) + return Z_STREAM_ERROR; + + /* check for seek request */ + if (state->seek) { + state->seek = 0; + if (gz_zero(state, state->skip) == -1) + ret = state->err; + } + + /* flush, free memory, and close file */ + if (gz_comp(state, Z_FINISH) == -1) + ret = state->err; + if (state->size) { + if (!state->direct) { + (void)deflateEnd(&(state->strm)); + free(state->out); + } + free(state->in); + } + gz_error(state, Z_OK, NULL); + free(state->path); + if (close(state->fd) == -1) + ret = Z_ERRNO; + free(state); + return ret; +} diff --git a/waterbox/nyma/zlib/infback.c b/waterbox/nyma/zlib/infback.c new file mode 100644 index 0000000000..59679ecbfc --- /dev/null +++ b/waterbox/nyma/zlib/infback.c @@ -0,0 +1,640 @@ +/* infback.c -- inflate using a call-back interface + * Copyright (C) 1995-2016 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* + This code is largely copied from inflate.c. Normally either infback.o or + inflate.o would be linked into an application--not both. The interface + with inffast.c is retained so that optimized assembler-coded versions of + inflate_fast() can be used with either inflate.c or infback.c. + */ + +#include "zutil.h" +#include "inftrees.h" +#include "inflate.h" +#include "inffast.h" + +/* function prototypes */ +local void fixedtables OF((struct inflate_state FAR *state)); + +/* + strm provides memory allocation functions in zalloc and zfree, or + Z_NULL to use the library memory allocation functions. + + windowBits is in the range 8..15, and window is a user-supplied + window and output buffer that is 2**windowBits bytes. + */ +int ZEXPORT inflateBackInit_(strm, windowBits, window, version, stream_size) +z_streamp strm; +int windowBits; +unsigned char FAR *window; +const char *version; +int stream_size; +{ + struct inflate_state FAR *state; + + if (version == Z_NULL || version[0] != ZLIB_VERSION[0] || + stream_size != (int)(sizeof(z_stream))) + return Z_VERSION_ERROR; + if (strm == Z_NULL || window == Z_NULL || + windowBits < 8 || windowBits > 15) + return Z_STREAM_ERROR; + strm->msg = Z_NULL; /* in case we return an error */ + if (strm->zalloc == (alloc_func)0) { +#ifdef Z_SOLO + return Z_STREAM_ERROR; +#else + strm->zalloc = zcalloc; + strm->opaque = (voidpf)0; +#endif + } + if (strm->zfree == (free_func)0) +#ifdef Z_SOLO + return Z_STREAM_ERROR; +#else + strm->zfree = zcfree; +#endif + state = (struct inflate_state FAR *)ZALLOC(strm, 1, + sizeof(struct inflate_state)); + if (state == Z_NULL) return Z_MEM_ERROR; + Tracev((stderr, "inflate: allocated\n")); + strm->state = (struct internal_state FAR *)state; + state->dmax = 32768U; + state->wbits = (uInt)windowBits; + state->wsize = 1U << windowBits; + state->window = window; + state->wnext = 0; + state->whave = 0; + return Z_OK; +} + +/* + Return state with length and distance decoding tables and index sizes set to + fixed code decoding. Normally this returns fixed tables from inffixed.h. + If BUILDFIXED is defined, then instead this routine builds the tables the + first time it's called, and returns those tables the first time and + thereafter. This reduces the size of the code by about 2K bytes, in + exchange for a little execution time. However, BUILDFIXED should not be + used for threaded applications, since the rewriting of the tables and virgin + may not be thread-safe. + */ +local void fixedtables(state) +struct inflate_state FAR *state; +{ +#ifdef BUILDFIXED + static int virgin = 1; + static code *lenfix, *distfix; + static code fixed[544]; + + /* build fixed huffman tables if first call (may not be thread safe) */ + if (virgin) { + unsigned sym, bits; + static code *next; + + /* literal/length table */ + sym = 0; + while (sym < 144) state->lens[sym++] = 8; + while (sym < 256) state->lens[sym++] = 9; + while (sym < 280) state->lens[sym++] = 7; + while (sym < 288) state->lens[sym++] = 8; + next = fixed; + lenfix = next; + bits = 9; + inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work); + + /* distance table */ + sym = 0; + while (sym < 32) state->lens[sym++] = 5; + distfix = next; + bits = 5; + inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work); + + /* do this just once */ + virgin = 0; + } +#else /* !BUILDFIXED */ +# include "inffixed.h" +#endif /* BUILDFIXED */ + state->lencode = lenfix; + state->lenbits = 9; + state->distcode = distfix; + state->distbits = 5; +} + +/* Macros for inflateBack(): */ + +/* Load returned state from inflate_fast() */ +#define LOAD() \ + do { \ + put = strm->next_out; \ + left = strm->avail_out; \ + next = strm->next_in; \ + have = strm->avail_in; \ + hold = state->hold; \ + bits = state->bits; \ + } while (0) + +/* Set state from registers for inflate_fast() */ +#define RESTORE() \ + do { \ + strm->next_out = put; \ + strm->avail_out = left; \ + strm->next_in = next; \ + strm->avail_in = have; \ + state->hold = hold; \ + state->bits = bits; \ + } while (0) + +/* Clear the input bit accumulator */ +#define INITBITS() \ + do { \ + hold = 0; \ + bits = 0; \ + } while (0) + +/* Assure that some input is available. If input is requested, but denied, + then return a Z_BUF_ERROR from inflateBack(). */ +#define PULL() \ + do { \ + if (have == 0) { \ + have = in(in_desc, &next); \ + if (have == 0) { \ + next = Z_NULL; \ + ret = Z_BUF_ERROR; \ + goto inf_leave; \ + } \ + } \ + } while (0) + +/* Get a byte of input into the bit accumulator, or return from inflateBack() + with an error if there is no input available. */ +#define PULLBYTE() \ + do { \ + PULL(); \ + have--; \ + hold += (unsigned long)(*next++) << bits; \ + bits += 8; \ + } while (0) + +/* Assure that there are at least n bits in the bit accumulator. If there is + not enough available input to do that, then return from inflateBack() with + an error. */ +#define NEEDBITS(n) \ + do { \ + while (bits < (unsigned)(n)) \ + PULLBYTE(); \ + } while (0) + +/* Return the low n bits of the bit accumulator (n < 16) */ +#define BITS(n) \ + ((unsigned)hold & ((1U << (n)) - 1)) + +/* Remove n bits from the bit accumulator */ +#define DROPBITS(n) \ + do { \ + hold >>= (n); \ + bits -= (unsigned)(n); \ + } while (0) + +/* Remove zero to seven bits as needed to go to a byte boundary */ +#define BYTEBITS() \ + do { \ + hold >>= bits & 7; \ + bits -= bits & 7; \ + } while (0) + +/* Assure that some output space is available, by writing out the window + if it's full. If the write fails, return from inflateBack() with a + Z_BUF_ERROR. */ +#define ROOM() \ + do { \ + if (left == 0) { \ + put = state->window; \ + left = state->wsize; \ + state->whave = left; \ + if (out(out_desc, put, left)) { \ + ret = Z_BUF_ERROR; \ + goto inf_leave; \ + } \ + } \ + } while (0) + +/* + strm provides the memory allocation functions and window buffer on input, + and provides information on the unused input on return. For Z_DATA_ERROR + returns, strm will also provide an error message. + + in() and out() are the call-back input and output functions. When + inflateBack() needs more input, it calls in(). When inflateBack() has + filled the window with output, or when it completes with data in the + window, it calls out() to write out the data. The application must not + change the provided input until in() is called again or inflateBack() + returns. The application must not change the window/output buffer until + inflateBack() returns. + + in() and out() are called with a descriptor parameter provided in the + inflateBack() call. This parameter can be a structure that provides the + information required to do the read or write, as well as accumulated + information on the input and output such as totals and check values. + + in() should return zero on failure. out() should return non-zero on + failure. If either in() or out() fails, than inflateBack() returns a + Z_BUF_ERROR. strm->next_in can be checked for Z_NULL to see whether it + was in() or out() that caused in the error. Otherwise, inflateBack() + returns Z_STREAM_END on success, Z_DATA_ERROR for an deflate format + error, or Z_MEM_ERROR if it could not allocate memory for the state. + inflateBack() can also return Z_STREAM_ERROR if the input parameters + are not correct, i.e. strm is Z_NULL or the state was not initialized. + */ +int ZEXPORT inflateBack(strm, in, in_desc, out, out_desc) +z_streamp strm; +in_func in; +void FAR *in_desc; +out_func out; +void FAR *out_desc; +{ + struct inflate_state FAR *state; + z_const unsigned char FAR *next; /* next input */ + unsigned char FAR *put; /* next output */ + unsigned have, left; /* available input and output */ + unsigned long hold; /* bit buffer */ + unsigned bits; /* bits in bit buffer */ + unsigned copy; /* number of stored or match bytes to copy */ + unsigned char FAR *from; /* where to copy match bytes from */ + code here; /* current decoding table entry */ + code last; /* parent table entry */ + unsigned len; /* length to copy for repeats, bits to drop */ + int ret; /* return code */ + static const unsigned short order[19] = /* permutation of code lengths */ + {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; + + /* Check that the strm exists and that the state was initialized */ + if (strm == Z_NULL || strm->state == Z_NULL) + return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + + /* Reset the state */ + strm->msg = Z_NULL; + state->mode = TYPE; + state->last = 0; + state->whave = 0; + next = strm->next_in; + have = next != Z_NULL ? strm->avail_in : 0; + hold = 0; + bits = 0; + put = state->window; + left = state->wsize; + + /* Inflate until end of block marked as last */ + for (;;) + switch (state->mode) { + case TYPE: + /* determine and dispatch block type */ + if (state->last) { + BYTEBITS(); + state->mode = DONE; + break; + } + NEEDBITS(3); + state->last = BITS(1); + DROPBITS(1); + switch (BITS(2)) { + case 0: /* stored block */ + Tracev((stderr, "inflate: stored block%s\n", + state->last ? " (last)" : "")); + state->mode = STORED; + break; + case 1: /* fixed block */ + fixedtables(state); + Tracev((stderr, "inflate: fixed codes block%s\n", + state->last ? " (last)" : "")); + state->mode = LEN; /* decode codes */ + break; + case 2: /* dynamic block */ + Tracev((stderr, "inflate: dynamic codes block%s\n", + state->last ? " (last)" : "")); + state->mode = TABLE; + break; + case 3: + strm->msg = (char *)"invalid block type"; + state->mode = BAD; + } + DROPBITS(2); + break; + + case STORED: + /* get and verify stored block length */ + BYTEBITS(); /* go to byte boundary */ + NEEDBITS(32); + if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) { + strm->msg = (char *)"invalid stored block lengths"; + state->mode = BAD; + break; + } + state->length = (unsigned)hold & 0xffff; + Tracev((stderr, "inflate: stored length %u\n", + state->length)); + INITBITS(); + + /* copy stored block from input to output */ + while (state->length != 0) { + copy = state->length; + PULL(); + ROOM(); + if (copy > have) copy = have; + if (copy > left) copy = left; + zmemcpy(put, next, copy); + have -= copy; + next += copy; + left -= copy; + put += copy; + state->length -= copy; + } + Tracev((stderr, "inflate: stored end\n")); + state->mode = TYPE; + break; + + case TABLE: + /* get dynamic table entries descriptor */ + NEEDBITS(14); + state->nlen = BITS(5) + 257; + DROPBITS(5); + state->ndist = BITS(5) + 1; + DROPBITS(5); + state->ncode = BITS(4) + 4; + DROPBITS(4); +#ifndef PKZIP_BUG_WORKAROUND + if (state->nlen > 286 || state->ndist > 30) { + strm->msg = (char *)"too many length or distance symbols"; + state->mode = BAD; + break; + } +#endif + Tracev((stderr, "inflate: table sizes ok\n")); + + /* get code length code lengths (not a typo) */ + state->have = 0; + while (state->have < state->ncode) { + NEEDBITS(3); + state->lens[order[state->have++]] = (unsigned short)BITS(3); + DROPBITS(3); + } + while (state->have < 19) + state->lens[order[state->have++]] = 0; + state->next = state->codes; + state->lencode = (code const FAR *)(state->next); + state->lenbits = 7; + ret = inflate_table(CODES, state->lens, 19, &(state->next), + &(state->lenbits), state->work); + if (ret) { + strm->msg = (char *)"invalid code lengths set"; + state->mode = BAD; + break; + } + Tracev((stderr, "inflate: code lengths ok\n")); + + /* get length and distance code code lengths */ + state->have = 0; + while (state->have < state->nlen + state->ndist) { + for (;;) { + here = state->lencode[BITS(state->lenbits)]; + if ((unsigned)(here.bits) <= bits) break; + PULLBYTE(); + } + if (here.val < 16) { + DROPBITS(here.bits); + state->lens[state->have++] = here.val; + } + else { + if (here.val == 16) { + NEEDBITS(here.bits + 2); + DROPBITS(here.bits); + if (state->have == 0) { + strm->msg = (char *)"invalid bit length repeat"; + state->mode = BAD; + break; + } + len = (unsigned)(state->lens[state->have - 1]); + copy = 3 + BITS(2); + DROPBITS(2); + } + else if (here.val == 17) { + NEEDBITS(here.bits + 3); + DROPBITS(here.bits); + len = 0; + copy = 3 + BITS(3); + DROPBITS(3); + } + else { + NEEDBITS(here.bits + 7); + DROPBITS(here.bits); + len = 0; + copy = 11 + BITS(7); + DROPBITS(7); + } + if (state->have + copy > state->nlen + state->ndist) { + strm->msg = (char *)"invalid bit length repeat"; + state->mode = BAD; + break; + } + while (copy--) + state->lens[state->have++] = (unsigned short)len; + } + } + + /* handle error breaks in while */ + if (state->mode == BAD) break; + + /* check for end-of-block code (better have one) */ + if (state->lens[256] == 0) { + strm->msg = (char *)"invalid code -- missing end-of-block"; + state->mode = BAD; + break; + } + + /* build code tables -- note: do not change the lenbits or distbits + values here (9 and 6) without reading the comments in inftrees.h + concerning the ENOUGH constants, which depend on those values */ + state->next = state->codes; + state->lencode = (code const FAR *)(state->next); + state->lenbits = 9; + ret = inflate_table(LENS, state->lens, state->nlen, &(state->next), + &(state->lenbits), state->work); + if (ret) { + strm->msg = (char *)"invalid literal/lengths set"; + state->mode = BAD; + break; + } + state->distcode = (code const FAR *)(state->next); + state->distbits = 6; + ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist, + &(state->next), &(state->distbits), state->work); + if (ret) { + strm->msg = (char *)"invalid distances set"; + state->mode = BAD; + break; + } + Tracev((stderr, "inflate: codes ok\n")); + state->mode = LEN; + + case LEN: + /* use inflate_fast() if we have enough input and output */ + if (have >= 6 && left >= 258) { + RESTORE(); + if (state->whave < state->wsize) + state->whave = state->wsize - left; + inflate_fast(strm, state->wsize); + LOAD(); + break; + } + + /* get a literal, length, or end-of-block code */ + for (;;) { + here = state->lencode[BITS(state->lenbits)]; + if ((unsigned)(here.bits) <= bits) break; + PULLBYTE(); + } + if (here.op && (here.op & 0xf0) == 0) { + last = here; + for (;;) { + here = state->lencode[last.val + + (BITS(last.bits + last.op) >> last.bits)]; + if ((unsigned)(last.bits + here.bits) <= bits) break; + PULLBYTE(); + } + DROPBITS(last.bits); + } + DROPBITS(here.bits); + state->length = (unsigned)here.val; + + /* process literal */ + if (here.op == 0) { + Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? + "inflate: literal '%c'\n" : + "inflate: literal 0x%02x\n", here.val)); + ROOM(); + *put++ = (unsigned char)(state->length); + left--; + state->mode = LEN; + break; + } + + /* process end of block */ + if (here.op & 32) { + Tracevv((stderr, "inflate: end of block\n")); + state->mode = TYPE; + break; + } + + /* invalid code */ + if (here.op & 64) { + strm->msg = (char *)"invalid literal/length code"; + state->mode = BAD; + break; + } + + /* length code -- get extra bits, if any */ + state->extra = (unsigned)(here.op) & 15; + if (state->extra != 0) { + NEEDBITS(state->extra); + state->length += BITS(state->extra); + DROPBITS(state->extra); + } + Tracevv((stderr, "inflate: length %u\n", state->length)); + + /* get distance code */ + for (;;) { + here = state->distcode[BITS(state->distbits)]; + if ((unsigned)(here.bits) <= bits) break; + PULLBYTE(); + } + if ((here.op & 0xf0) == 0) { + last = here; + for (;;) { + here = state->distcode[last.val + + (BITS(last.bits + last.op) >> last.bits)]; + if ((unsigned)(last.bits + here.bits) <= bits) break; + PULLBYTE(); + } + DROPBITS(last.bits); + } + DROPBITS(here.bits); + if (here.op & 64) { + strm->msg = (char *)"invalid distance code"; + state->mode = BAD; + break; + } + state->offset = (unsigned)here.val; + + /* get distance extra bits, if any */ + state->extra = (unsigned)(here.op) & 15; + if (state->extra != 0) { + NEEDBITS(state->extra); + state->offset += BITS(state->extra); + DROPBITS(state->extra); + } + if (state->offset > state->wsize - (state->whave < state->wsize ? + left : 0)) { + strm->msg = (char *)"invalid distance too far back"; + state->mode = BAD; + break; + } + Tracevv((stderr, "inflate: distance %u\n", state->offset)); + + /* copy match from window to output */ + do { + ROOM(); + copy = state->wsize - state->offset; + if (copy < left) { + from = put + copy; + copy = left - copy; + } + else { + from = put - state->offset; + copy = left; + } + if (copy > state->length) copy = state->length; + state->length -= copy; + left -= copy; + do { + *put++ = *from++; + } while (--copy); + } while (state->length != 0); + break; + + case DONE: + /* inflate stream terminated properly -- write leftover output */ + ret = Z_STREAM_END; + if (left < state->wsize) { + if (out(out_desc, state->window, state->wsize - left)) + ret = Z_BUF_ERROR; + } + goto inf_leave; + + case BAD: + ret = Z_DATA_ERROR; + goto inf_leave; + + default: /* can't happen, but makes compilers happy */ + ret = Z_STREAM_ERROR; + goto inf_leave; + } + + /* Return unused input */ + inf_leave: + strm->next_in = next; + strm->avail_in = have; + return ret; +} + +int ZEXPORT inflateBackEnd(strm) +z_streamp strm; +{ + if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0) + return Z_STREAM_ERROR; + ZFREE(strm, strm->state); + strm->state = Z_NULL; + Tracev((stderr, "inflate: end\n")); + return Z_OK; +} diff --git a/waterbox/nyma/zlib/inffast.c b/waterbox/nyma/zlib/inffast.c new file mode 100644 index 0000000000..0dbd1dbc09 --- /dev/null +++ b/waterbox/nyma/zlib/inffast.c @@ -0,0 +1,323 @@ +/* inffast.c -- fast decoding + * Copyright (C) 1995-2017 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +#include "zutil.h" +#include "inftrees.h" +#include "inflate.h" +#include "inffast.h" + +#ifdef ASMINF +# pragma message("Assembler code may have bugs -- use at your own risk") +#else + +/* + Decode literal, length, and distance codes and write out the resulting + literal and match bytes until either not enough input or output is + available, an end-of-block is encountered, or a data error is encountered. + When large enough input and output buffers are supplied to inflate(), for + example, a 16K input buffer and a 64K output buffer, more than 95% of the + inflate execution time is spent in this routine. + + Entry assumptions: + + state->mode == LEN + strm->avail_in >= 6 + strm->avail_out >= 258 + start >= strm->avail_out + state->bits < 8 + + On return, state->mode is one of: + + LEN -- ran out of enough output space or enough available input + TYPE -- reached end of block code, inflate() to interpret next block + BAD -- error in block data + + Notes: + + - The maximum input bits used by a length/distance pair is 15 bits for the + length code, 5 bits for the length extra, 15 bits for the distance code, + and 13 bits for the distance extra. This totals 48 bits, or six bytes. + Therefore if strm->avail_in >= 6, then there is enough input to avoid + checking for available input while decoding. + + - The maximum bytes that a single length/distance pair can output is 258 + bytes, which is the maximum length that can be coded. inflate_fast() + requires strm->avail_out >= 258 for each loop to avoid checking for + output space. + */ +void ZLIB_INTERNAL inflate_fast(strm, start) +z_streamp strm; +unsigned start; /* inflate()'s starting value for strm->avail_out */ +{ + struct inflate_state FAR *state; + z_const unsigned char FAR *in; /* local strm->next_in */ + z_const unsigned char FAR *last; /* have enough input while in < last */ + unsigned char FAR *out; /* local strm->next_out */ + unsigned char FAR *beg; /* inflate()'s initial strm->next_out */ + unsigned char FAR *end; /* while out < end, enough space available */ +#ifdef INFLATE_STRICT + unsigned dmax; /* maximum distance from zlib header */ +#endif + unsigned wsize; /* window size or zero if not using window */ + unsigned whave; /* valid bytes in the window */ + unsigned wnext; /* window write index */ + unsigned char FAR *window; /* allocated sliding window, if wsize != 0 */ + unsigned long hold; /* local strm->hold */ + unsigned bits; /* local strm->bits */ + code const FAR *lcode; /* local strm->lencode */ + code const FAR *dcode; /* local strm->distcode */ + unsigned lmask; /* mask for first level of length codes */ + unsigned dmask; /* mask for first level of distance codes */ + code here; /* retrieved table entry */ + unsigned op; /* code bits, operation, extra bits, or */ + /* window position, window bytes to copy */ + unsigned len; /* match length, unused bytes */ + unsigned dist; /* match distance */ + unsigned char FAR *from; /* where to copy match from */ + + /* copy state to local variables */ + state = (struct inflate_state FAR *)strm->state; + in = strm->next_in; + last = in + (strm->avail_in - 5); + out = strm->next_out; + beg = out - (start - strm->avail_out); + end = out + (strm->avail_out - 257); +#ifdef INFLATE_STRICT + dmax = state->dmax; +#endif + wsize = state->wsize; + whave = state->whave; + wnext = state->wnext; + window = state->window; + hold = state->hold; + bits = state->bits; + lcode = state->lencode; + dcode = state->distcode; + lmask = (1U << state->lenbits) - 1; + dmask = (1U << state->distbits) - 1; + + /* decode literals and length/distances until end-of-block or not enough + input data or output space */ + do { + if (bits < 15) { + hold += (unsigned long)(*in++) << bits; + bits += 8; + hold += (unsigned long)(*in++) << bits; + bits += 8; + } + here = lcode[hold & lmask]; + dolen: + op = (unsigned)(here.bits); + hold >>= op; + bits -= op; + op = (unsigned)(here.op); + if (op == 0) { /* literal */ + Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? + "inflate: literal '%c'\n" : + "inflate: literal 0x%02x\n", here.val)); + *out++ = (unsigned char)(here.val); + } + else if (op & 16) { /* length base */ + len = (unsigned)(here.val); + op &= 15; /* number of extra bits */ + if (op) { + if (bits < op) { + hold += (unsigned long)(*in++) << bits; + bits += 8; + } + len += (unsigned)hold & ((1U << op) - 1); + hold >>= op; + bits -= op; + } + Tracevv((stderr, "inflate: length %u\n", len)); + if (bits < 15) { + hold += (unsigned long)(*in++) << bits; + bits += 8; + hold += (unsigned long)(*in++) << bits; + bits += 8; + } + here = dcode[hold & dmask]; + dodist: + op = (unsigned)(here.bits); + hold >>= op; + bits -= op; + op = (unsigned)(here.op); + if (op & 16) { /* distance base */ + dist = (unsigned)(here.val); + op &= 15; /* number of extra bits */ + if (bits < op) { + hold += (unsigned long)(*in++) << bits; + bits += 8; + if (bits < op) { + hold += (unsigned long)(*in++) << bits; + bits += 8; + } + } + dist += (unsigned)hold & ((1U << op) - 1); +#ifdef INFLATE_STRICT + if (dist > dmax) { + strm->msg = (char *)"invalid distance too far back"; + state->mode = BAD; + break; + } +#endif + hold >>= op; + bits -= op; + Tracevv((stderr, "inflate: distance %u\n", dist)); + op = (unsigned)(out - beg); /* max distance in output */ + if (dist > op) { /* see if copy from window */ + op = dist - op; /* distance back in window */ + if (op > whave) { + if (state->sane) { + strm->msg = + (char *)"invalid distance too far back"; + state->mode = BAD; + break; + } +#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR + if (len <= op - whave) { + do { + *out++ = 0; + } while (--len); + continue; + } + len -= op - whave; + do { + *out++ = 0; + } while (--op > whave); + if (op == 0) { + from = out - dist; + do { + *out++ = *from++; + } while (--len); + continue; + } +#endif + } + from = window; + if (wnext == 0) { /* very common case */ + from += wsize - op; + if (op < len) { /* some from window */ + len -= op; + do { + *out++ = *from++; + } while (--op); + from = out - dist; /* rest from output */ + } + } + else if (wnext < op) { /* wrap around window */ + from += wsize + wnext - op; + op -= wnext; + if (op < len) { /* some from end of window */ + len -= op; + do { + *out++ = *from++; + } while (--op); + from = window; + if (wnext < len) { /* some from start of window */ + op = wnext; + len -= op; + do { + *out++ = *from++; + } while (--op); + from = out - dist; /* rest from output */ + } + } + } + else { /* contiguous in window */ + from += wnext - op; + if (op < len) { /* some from window */ + len -= op; + do { + *out++ = *from++; + } while (--op); + from = out - dist; /* rest from output */ + } + } + while (len > 2) { + *out++ = *from++; + *out++ = *from++; + *out++ = *from++; + len -= 3; + } + if (len) { + *out++ = *from++; + if (len > 1) + *out++ = *from++; + } + } + else { + from = out - dist; /* copy direct from output */ + do { /* minimum length is three */ + *out++ = *from++; + *out++ = *from++; + *out++ = *from++; + len -= 3; + } while (len > 2); + if (len) { + *out++ = *from++; + if (len > 1) + *out++ = *from++; + } + } + } + else if ((op & 64) == 0) { /* 2nd level distance code */ + here = dcode[here.val + (hold & ((1U << op) - 1))]; + goto dodist; + } + else { + strm->msg = (char *)"invalid distance code"; + state->mode = BAD; + break; + } + } + else if ((op & 64) == 0) { /* 2nd level length code */ + here = lcode[here.val + (hold & ((1U << op) - 1))]; + goto dolen; + } + else if (op & 32) { /* end-of-block */ + Tracevv((stderr, "inflate: end of block\n")); + state->mode = TYPE; + break; + } + else { + strm->msg = (char *)"invalid literal/length code"; + state->mode = BAD; + break; + } + } while (in < last && out < end); + + /* return unused bytes (on entry, bits < 8, so in won't go too far back) */ + len = bits >> 3; + in -= len; + bits -= len << 3; + hold &= (1U << bits) - 1; + + /* update state and return */ + strm->next_in = in; + strm->next_out = out; + strm->avail_in = (unsigned)(in < last ? 5 + (last - in) : 5 - (in - last)); + strm->avail_out = (unsigned)(out < end ? + 257 + (end - out) : 257 - (out - end)); + state->hold = hold; + state->bits = bits; + return; +} + +/* + inflate_fast() speedups that turned out slower (on a PowerPC G3 750CXe): + - Using bit fields for code structure + - Different op definition to avoid & for extra bits (do & for table bits) + - Three separate decoding do-loops for direct, window, and wnext == 0 + - Special case for distance > 1 copies to do overlapped load and store copy + - Explicit branch predictions (based on measured branch probabilities) + - Deferring match copy and interspersed it with decoding subsequent codes + - Swapping literal/length else + - Swapping window/direct else + - Larger unrolled copy loops (three is about right) + - Moving len -= 3 statement into middle of loop + */ + +#endif /* !ASMINF */ diff --git a/waterbox/nyma/zlib/inffast.h b/waterbox/nyma/zlib/inffast.h new file mode 100644 index 0000000000..e5c1aa4ca8 --- /dev/null +++ b/waterbox/nyma/zlib/inffast.h @@ -0,0 +1,11 @@ +/* inffast.h -- header to use inffast.c + * Copyright (C) 1995-2003, 2010 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* WARNING: this file should *not* be used by applications. It is + part of the implementation of the compression library and is + subject to change. Applications should only use zlib.h. + */ + +void ZLIB_INTERNAL inflate_fast OF((z_streamp strm, unsigned start)); diff --git a/waterbox/nyma/zlib/inffixed.h b/waterbox/nyma/zlib/inffixed.h new file mode 100644 index 0000000000..d628327769 --- /dev/null +++ b/waterbox/nyma/zlib/inffixed.h @@ -0,0 +1,94 @@ + /* inffixed.h -- table for decoding fixed codes + * Generated automatically by makefixed(). + */ + + /* WARNING: this file should *not* be used by applications. + It is part of the implementation of this library and is + subject to change. Applications should only use zlib.h. + */ + + static const code lenfix[512] = { + {96,7,0},{0,8,80},{0,8,16},{20,8,115},{18,7,31},{0,8,112},{0,8,48}, + {0,9,192},{16,7,10},{0,8,96},{0,8,32},{0,9,160},{0,8,0},{0,8,128}, + {0,8,64},{0,9,224},{16,7,6},{0,8,88},{0,8,24},{0,9,144},{19,7,59}, + {0,8,120},{0,8,56},{0,9,208},{17,7,17},{0,8,104},{0,8,40},{0,9,176}, + {0,8,8},{0,8,136},{0,8,72},{0,9,240},{16,7,4},{0,8,84},{0,8,20}, + {21,8,227},{19,7,43},{0,8,116},{0,8,52},{0,9,200},{17,7,13},{0,8,100}, + {0,8,36},{0,9,168},{0,8,4},{0,8,132},{0,8,68},{0,9,232},{16,7,8}, + {0,8,92},{0,8,28},{0,9,152},{20,7,83},{0,8,124},{0,8,60},{0,9,216}, + {18,7,23},{0,8,108},{0,8,44},{0,9,184},{0,8,12},{0,8,140},{0,8,76}, + {0,9,248},{16,7,3},{0,8,82},{0,8,18},{21,8,163},{19,7,35},{0,8,114}, + {0,8,50},{0,9,196},{17,7,11},{0,8,98},{0,8,34},{0,9,164},{0,8,2}, + {0,8,130},{0,8,66},{0,9,228},{16,7,7},{0,8,90},{0,8,26},{0,9,148}, + {20,7,67},{0,8,122},{0,8,58},{0,9,212},{18,7,19},{0,8,106},{0,8,42}, + {0,9,180},{0,8,10},{0,8,138},{0,8,74},{0,9,244},{16,7,5},{0,8,86}, + {0,8,22},{64,8,0},{19,7,51},{0,8,118},{0,8,54},{0,9,204},{17,7,15}, + {0,8,102},{0,8,38},{0,9,172},{0,8,6},{0,8,134},{0,8,70},{0,9,236}, + {16,7,9},{0,8,94},{0,8,30},{0,9,156},{20,7,99},{0,8,126},{0,8,62}, + {0,9,220},{18,7,27},{0,8,110},{0,8,46},{0,9,188},{0,8,14},{0,8,142}, + {0,8,78},{0,9,252},{96,7,0},{0,8,81},{0,8,17},{21,8,131},{18,7,31}, + {0,8,113},{0,8,49},{0,9,194},{16,7,10},{0,8,97},{0,8,33},{0,9,162}, + {0,8,1},{0,8,129},{0,8,65},{0,9,226},{16,7,6},{0,8,89},{0,8,25}, + {0,9,146},{19,7,59},{0,8,121},{0,8,57},{0,9,210},{17,7,17},{0,8,105}, + {0,8,41},{0,9,178},{0,8,9},{0,8,137},{0,8,73},{0,9,242},{16,7,4}, + {0,8,85},{0,8,21},{16,8,258},{19,7,43},{0,8,117},{0,8,53},{0,9,202}, + {17,7,13},{0,8,101},{0,8,37},{0,9,170},{0,8,5},{0,8,133},{0,8,69}, + {0,9,234},{16,7,8},{0,8,93},{0,8,29},{0,9,154},{20,7,83},{0,8,125}, + {0,8,61},{0,9,218},{18,7,23},{0,8,109},{0,8,45},{0,9,186},{0,8,13}, + {0,8,141},{0,8,77},{0,9,250},{16,7,3},{0,8,83},{0,8,19},{21,8,195}, + {19,7,35},{0,8,115},{0,8,51},{0,9,198},{17,7,11},{0,8,99},{0,8,35}, + {0,9,166},{0,8,3},{0,8,131},{0,8,67},{0,9,230},{16,7,7},{0,8,91}, + {0,8,27},{0,9,150},{20,7,67},{0,8,123},{0,8,59},{0,9,214},{18,7,19}, + {0,8,107},{0,8,43},{0,9,182},{0,8,11},{0,8,139},{0,8,75},{0,9,246}, + {16,7,5},{0,8,87},{0,8,23},{64,8,0},{19,7,51},{0,8,119},{0,8,55}, + {0,9,206},{17,7,15},{0,8,103},{0,8,39},{0,9,174},{0,8,7},{0,8,135}, + {0,8,71},{0,9,238},{16,7,9},{0,8,95},{0,8,31},{0,9,158},{20,7,99}, + {0,8,127},{0,8,63},{0,9,222},{18,7,27},{0,8,111},{0,8,47},{0,9,190}, + {0,8,15},{0,8,143},{0,8,79},{0,9,254},{96,7,0},{0,8,80},{0,8,16}, + {20,8,115},{18,7,31},{0,8,112},{0,8,48},{0,9,193},{16,7,10},{0,8,96}, + {0,8,32},{0,9,161},{0,8,0},{0,8,128},{0,8,64},{0,9,225},{16,7,6}, + {0,8,88},{0,8,24},{0,9,145},{19,7,59},{0,8,120},{0,8,56},{0,9,209}, + {17,7,17},{0,8,104},{0,8,40},{0,9,177},{0,8,8},{0,8,136},{0,8,72}, + {0,9,241},{16,7,4},{0,8,84},{0,8,20},{21,8,227},{19,7,43},{0,8,116}, + {0,8,52},{0,9,201},{17,7,13},{0,8,100},{0,8,36},{0,9,169},{0,8,4}, + {0,8,132},{0,8,68},{0,9,233},{16,7,8},{0,8,92},{0,8,28},{0,9,153}, + {20,7,83},{0,8,124},{0,8,60},{0,9,217},{18,7,23},{0,8,108},{0,8,44}, + {0,9,185},{0,8,12},{0,8,140},{0,8,76},{0,9,249},{16,7,3},{0,8,82}, + {0,8,18},{21,8,163},{19,7,35},{0,8,114},{0,8,50},{0,9,197},{17,7,11}, + {0,8,98},{0,8,34},{0,9,165},{0,8,2},{0,8,130},{0,8,66},{0,9,229}, + {16,7,7},{0,8,90},{0,8,26},{0,9,149},{20,7,67},{0,8,122},{0,8,58}, + {0,9,213},{18,7,19},{0,8,106},{0,8,42},{0,9,181},{0,8,10},{0,8,138}, + {0,8,74},{0,9,245},{16,7,5},{0,8,86},{0,8,22},{64,8,0},{19,7,51}, + {0,8,118},{0,8,54},{0,9,205},{17,7,15},{0,8,102},{0,8,38},{0,9,173}, + {0,8,6},{0,8,134},{0,8,70},{0,9,237},{16,7,9},{0,8,94},{0,8,30}, + {0,9,157},{20,7,99},{0,8,126},{0,8,62},{0,9,221},{18,7,27},{0,8,110}, + {0,8,46},{0,9,189},{0,8,14},{0,8,142},{0,8,78},{0,9,253},{96,7,0}, + {0,8,81},{0,8,17},{21,8,131},{18,7,31},{0,8,113},{0,8,49},{0,9,195}, + {16,7,10},{0,8,97},{0,8,33},{0,9,163},{0,8,1},{0,8,129},{0,8,65}, + {0,9,227},{16,7,6},{0,8,89},{0,8,25},{0,9,147},{19,7,59},{0,8,121}, + {0,8,57},{0,9,211},{17,7,17},{0,8,105},{0,8,41},{0,9,179},{0,8,9}, + {0,8,137},{0,8,73},{0,9,243},{16,7,4},{0,8,85},{0,8,21},{16,8,258}, + {19,7,43},{0,8,117},{0,8,53},{0,9,203},{17,7,13},{0,8,101},{0,8,37}, + {0,9,171},{0,8,5},{0,8,133},{0,8,69},{0,9,235},{16,7,8},{0,8,93}, + {0,8,29},{0,9,155},{20,7,83},{0,8,125},{0,8,61},{0,9,219},{18,7,23}, + {0,8,109},{0,8,45},{0,9,187},{0,8,13},{0,8,141},{0,8,77},{0,9,251}, + {16,7,3},{0,8,83},{0,8,19},{21,8,195},{19,7,35},{0,8,115},{0,8,51}, + {0,9,199},{17,7,11},{0,8,99},{0,8,35},{0,9,167},{0,8,3},{0,8,131}, + {0,8,67},{0,9,231},{16,7,7},{0,8,91},{0,8,27},{0,9,151},{20,7,67}, + {0,8,123},{0,8,59},{0,9,215},{18,7,19},{0,8,107},{0,8,43},{0,9,183}, + {0,8,11},{0,8,139},{0,8,75},{0,9,247},{16,7,5},{0,8,87},{0,8,23}, + {64,8,0},{19,7,51},{0,8,119},{0,8,55},{0,9,207},{17,7,15},{0,8,103}, + {0,8,39},{0,9,175},{0,8,7},{0,8,135},{0,8,71},{0,9,239},{16,7,9}, + {0,8,95},{0,8,31},{0,9,159},{20,7,99},{0,8,127},{0,8,63},{0,9,223}, + {18,7,27},{0,8,111},{0,8,47},{0,9,191},{0,8,15},{0,8,143},{0,8,79}, + {0,9,255} + }; + + static const code distfix[32] = { + {16,5,1},{23,5,257},{19,5,17},{27,5,4097},{17,5,5},{25,5,1025}, + {21,5,65},{29,5,16385},{16,5,3},{24,5,513},{20,5,33},{28,5,8193}, + {18,5,9},{26,5,2049},{22,5,129},{64,5,0},{16,5,2},{23,5,385}, + {19,5,25},{27,5,6145},{17,5,7},{25,5,1537},{21,5,97},{29,5,24577}, + {16,5,4},{24,5,769},{20,5,49},{28,5,12289},{18,5,13},{26,5,3073}, + {22,5,193},{64,5,0} + }; diff --git a/waterbox/nyma/zlib/inflate.c b/waterbox/nyma/zlib/inflate.c new file mode 100644 index 0000000000..ac333e8c2e --- /dev/null +++ b/waterbox/nyma/zlib/inflate.c @@ -0,0 +1,1561 @@ +/* inflate.c -- zlib decompression + * Copyright (C) 1995-2016 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* + * Change history: + * + * 1.2.beta0 24 Nov 2002 + * - First version -- complete rewrite of inflate to simplify code, avoid + * creation of window when not needed, minimize use of window when it is + * needed, make inffast.c even faster, implement gzip decoding, and to + * improve code readability and style over the previous zlib inflate code + * + * 1.2.beta1 25 Nov 2002 + * - Use pointers for available input and output checking in inffast.c + * - Remove input and output counters in inffast.c + * - Change inffast.c entry and loop from avail_in >= 7 to >= 6 + * - Remove unnecessary second byte pull from length extra in inffast.c + * - Unroll direct copy to three copies per loop in inffast.c + * + * 1.2.beta2 4 Dec 2002 + * - Change external routine names to reduce potential conflicts + * - Correct filename to inffixed.h for fixed tables in inflate.c + * - Make hbuf[] unsigned char to match parameter type in inflate.c + * - Change strm->next_out[-state->offset] to *(strm->next_out - state->offset) + * to avoid negation problem on Alphas (64 bit) in inflate.c + * + * 1.2.beta3 22 Dec 2002 + * - Add comments on state->bits assertion in inffast.c + * - Add comments on op field in inftrees.h + * - Fix bug in reuse of allocated window after inflateReset() + * - Remove bit fields--back to byte structure for speed + * - Remove distance extra == 0 check in inflate_fast()--only helps for lengths + * - Change post-increments to pre-increments in inflate_fast(), PPC biased? + * - Add compile time option, POSTINC, to use post-increments instead (Intel?) + * - Make MATCH copy in inflate() much faster for when inflate_fast() not used + * - Use local copies of stream next and avail values, as well as local bit + * buffer and bit count in inflate()--for speed when inflate_fast() not used + * + * 1.2.beta4 1 Jan 2003 + * - Split ptr - 257 statements in inflate_table() to avoid compiler warnings + * - Move a comment on output buffer sizes from inffast.c to inflate.c + * - Add comments in inffast.c to introduce the inflate_fast() routine + * - Rearrange window copies in inflate_fast() for speed and simplification + * - Unroll last copy for window match in inflate_fast() + * - Use local copies of window variables in inflate_fast() for speed + * - Pull out common wnext == 0 case for speed in inflate_fast() + * - Make op and len in inflate_fast() unsigned for consistency + * - Add FAR to lcode and dcode declarations in inflate_fast() + * - Simplified bad distance check in inflate_fast() + * - Added inflateBackInit(), inflateBack(), and inflateBackEnd() in new + * source file infback.c to provide a call-back interface to inflate for + * programs like gzip and unzip -- uses window as output buffer to avoid + * window copying + * + * 1.2.beta5 1 Jan 2003 + * - Improved inflateBack() interface to allow the caller to provide initial + * input in strm. + * - Fixed stored blocks bug in inflateBack() + * + * 1.2.beta6 4 Jan 2003 + * - Added comments in inffast.c on effectiveness of POSTINC + * - Typecasting all around to reduce compiler warnings + * - Changed loops from while (1) or do {} while (1) to for (;;), again to + * make compilers happy + * - Changed type of window in inflateBackInit() to unsigned char * + * + * 1.2.beta7 27 Jan 2003 + * - Changed many types to unsigned or unsigned short to avoid warnings + * - Added inflateCopy() function + * + * 1.2.0 9 Mar 2003 + * - Changed inflateBack() interface to provide separate opaque descriptors + * for the in() and out() functions + * - Changed inflateBack() argument and in_func typedef to swap the length + * and buffer address return values for the input function + * - Check next_in and next_out for Z_NULL on entry to inflate() + * + * The history for versions after 1.2.0 are in ChangeLog in zlib distribution. + */ + +#include "zutil.h" +#include "inftrees.h" +#include "inflate.h" +#include "inffast.h" + +#ifdef MAKEFIXED +# ifndef BUILDFIXED +# define BUILDFIXED +# endif +#endif + +/* function prototypes */ +local int inflateStateCheck OF((z_streamp strm)); +local void fixedtables OF((struct inflate_state FAR *state)); +local int updatewindow OF((z_streamp strm, const unsigned char FAR *end, + unsigned copy)); +#ifdef BUILDFIXED + void makefixed OF((void)); +#endif +local unsigned syncsearch OF((unsigned FAR *have, const unsigned char FAR *buf, + unsigned len)); + +local int inflateStateCheck(strm) +z_streamp strm; +{ + struct inflate_state FAR *state; + if (strm == Z_NULL || + strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0) + return 1; + state = (struct inflate_state FAR *)strm->state; + if (state == Z_NULL || state->strm != strm || + state->mode < HEAD || state->mode > SYNC) + return 1; + return 0; +} + +int ZEXPORT inflateResetKeep(strm) +z_streamp strm; +{ + struct inflate_state FAR *state; + + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + strm->total_in = strm->total_out = state->total = 0; + strm->msg = Z_NULL; + if (state->wrap) /* to support ill-conceived Java test suite */ + strm->adler = state->wrap & 1; + state->mode = HEAD; + state->last = 0; + state->havedict = 0; + state->dmax = 32768U; + state->head = Z_NULL; + state->hold = 0; + state->bits = 0; + state->lencode = state->distcode = state->next = state->codes; + state->sane = 1; + state->back = -1; + Tracev((stderr, "inflate: reset\n")); + return Z_OK; +} + +int ZEXPORT inflateReset(strm) +z_streamp strm; +{ + struct inflate_state FAR *state; + + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + state->wsize = 0; + state->whave = 0; + state->wnext = 0; + return inflateResetKeep(strm); +} + +int ZEXPORT inflateReset2(strm, windowBits) +z_streamp strm; +int windowBits; +{ + int wrap; + struct inflate_state FAR *state; + + /* get the state */ + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + + /* extract wrap request from windowBits parameter */ + if (windowBits < 0) { + wrap = 0; + windowBits = -windowBits; + } + else { + wrap = (windowBits >> 4) + 5; +#ifdef GUNZIP + if (windowBits < 48) + windowBits &= 15; +#endif + } + + /* set number of window bits, free window if different */ + if (windowBits && (windowBits < 8 || windowBits > 15)) + return Z_STREAM_ERROR; + if (state->window != Z_NULL && state->wbits != (unsigned)windowBits) { + ZFREE(strm, state->window); + state->window = Z_NULL; + } + + /* update state and reset the rest of it */ + state->wrap = wrap; + state->wbits = (unsigned)windowBits; + return inflateReset(strm); +} + +int ZEXPORT inflateInit2_(strm, windowBits, version, stream_size) +z_streamp strm; +int windowBits; +const char *version; +int stream_size; +{ + int ret; + struct inflate_state FAR *state; + + if (version == Z_NULL || version[0] != ZLIB_VERSION[0] || + stream_size != (int)(sizeof(z_stream))) + return Z_VERSION_ERROR; + if (strm == Z_NULL) return Z_STREAM_ERROR; + strm->msg = Z_NULL; /* in case we return an error */ + if (strm->zalloc == (alloc_func)0) { +#ifdef Z_SOLO + return Z_STREAM_ERROR; +#else + strm->zalloc = zcalloc; + strm->opaque = (voidpf)0; +#endif + } + if (strm->zfree == (free_func)0) +#ifdef Z_SOLO + return Z_STREAM_ERROR; +#else + strm->zfree = zcfree; +#endif + state = (struct inflate_state FAR *) + ZALLOC(strm, 1, sizeof(struct inflate_state)); + if (state == Z_NULL) return Z_MEM_ERROR; + Tracev((stderr, "inflate: allocated\n")); + strm->state = (struct internal_state FAR *)state; + state->strm = strm; + state->window = Z_NULL; + state->mode = HEAD; /* to pass state test in inflateReset2() */ + ret = inflateReset2(strm, windowBits); + if (ret != Z_OK) { + ZFREE(strm, state); + strm->state = Z_NULL; + } + return ret; +} + +int ZEXPORT inflateInit_(strm, version, stream_size) +z_streamp strm; +const char *version; +int stream_size; +{ + return inflateInit2_(strm, DEF_WBITS, version, stream_size); +} + +int ZEXPORT inflatePrime(strm, bits, value) +z_streamp strm; +int bits; +int value; +{ + struct inflate_state FAR *state; + + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + if (bits < 0) { + state->hold = 0; + state->bits = 0; + return Z_OK; + } + if (bits > 16 || state->bits + (uInt)bits > 32) return Z_STREAM_ERROR; + value &= (1L << bits) - 1; + state->hold += (unsigned)value << state->bits; + state->bits += (uInt)bits; + return Z_OK; +} + +/* + Return state with length and distance decoding tables and index sizes set to + fixed code decoding. Normally this returns fixed tables from inffixed.h. + If BUILDFIXED is defined, then instead this routine builds the tables the + first time it's called, and returns those tables the first time and + thereafter. This reduces the size of the code by about 2K bytes, in + exchange for a little execution time. However, BUILDFIXED should not be + used for threaded applications, since the rewriting of the tables and virgin + may not be thread-safe. + */ +local void fixedtables(state) +struct inflate_state FAR *state; +{ +#ifdef BUILDFIXED + static int virgin = 1; + static code *lenfix, *distfix; + static code fixed[544]; + + /* build fixed huffman tables if first call (may not be thread safe) */ + if (virgin) { + unsigned sym, bits; + static code *next; + + /* literal/length table */ + sym = 0; + while (sym < 144) state->lens[sym++] = 8; + while (sym < 256) state->lens[sym++] = 9; + while (sym < 280) state->lens[sym++] = 7; + while (sym < 288) state->lens[sym++] = 8; + next = fixed; + lenfix = next; + bits = 9; + inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work); + + /* distance table */ + sym = 0; + while (sym < 32) state->lens[sym++] = 5; + distfix = next; + bits = 5; + inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work); + + /* do this just once */ + virgin = 0; + } +#else /* !BUILDFIXED */ +# include "inffixed.h" +#endif /* BUILDFIXED */ + state->lencode = lenfix; + state->lenbits = 9; + state->distcode = distfix; + state->distbits = 5; +} + +#ifdef MAKEFIXED +#include + +/* + Write out the inffixed.h that is #include'd above. Defining MAKEFIXED also + defines BUILDFIXED, so the tables are built on the fly. makefixed() writes + those tables to stdout, which would be piped to inffixed.h. A small program + can simply call makefixed to do this: + + void makefixed(void); + + int main(void) + { + makefixed(); + return 0; + } + + Then that can be linked with zlib built with MAKEFIXED defined and run: + + a.out > inffixed.h + */ +void makefixed() +{ + unsigned low, size; + struct inflate_state state; + + fixedtables(&state); + puts(" /* inffixed.h -- table for decoding fixed codes"); + puts(" * Generated automatically by makefixed()."); + puts(" */"); + puts(""); + puts(" /* WARNING: this file should *not* be used by applications."); + puts(" It is part of the implementation of this library and is"); + puts(" subject to change. Applications should only use zlib.h."); + puts(" */"); + puts(""); + size = 1U << 9; + printf(" static const code lenfix[%u] = {", size); + low = 0; + for (;;) { + if ((low % 7) == 0) printf("\n "); + printf("{%u,%u,%d}", (low & 127) == 99 ? 64 : state.lencode[low].op, + state.lencode[low].bits, state.lencode[low].val); + if (++low == size) break; + putchar(','); + } + puts("\n };"); + size = 1U << 5; + printf("\n static const code distfix[%u] = {", size); + low = 0; + for (;;) { + if ((low % 6) == 0) printf("\n "); + printf("{%u,%u,%d}", state.distcode[low].op, state.distcode[low].bits, + state.distcode[low].val); + if (++low == size) break; + putchar(','); + } + puts("\n };"); +} +#endif /* MAKEFIXED */ + +/* + Update the window with the last wsize (normally 32K) bytes written before + returning. If window does not exist yet, create it. This is only called + when a window is already in use, or when output has been written during this + inflate call, but the end of the deflate stream has not been reached yet. + It is also called to create a window for dictionary data when a dictionary + is loaded. + + Providing output buffers larger than 32K to inflate() should provide a speed + advantage, since only the last 32K of output is copied to the sliding window + upon return from inflate(), and since all distances after the first 32K of + output will fall in the output data, making match copies simpler and faster. + The advantage may be dependent on the size of the processor's data caches. + */ +local int updatewindow(strm, end, copy) +z_streamp strm; +const Bytef *end; +unsigned copy; +{ + struct inflate_state FAR *state; + unsigned dist; + + state = (struct inflate_state FAR *)strm->state; + + /* if it hasn't been done already, allocate space for the window */ + if (state->window == Z_NULL) { + state->window = (unsigned char FAR *) + ZALLOC(strm, 1U << state->wbits, + sizeof(unsigned char)); + if (state->window == Z_NULL) return 1; + } + + /* if window not in use yet, initialize */ + if (state->wsize == 0) { + state->wsize = 1U << state->wbits; + state->wnext = 0; + state->whave = 0; + } + + /* copy state->wsize or less output bytes into the circular window */ + if (copy >= state->wsize) { + zmemcpy(state->window, end - state->wsize, state->wsize); + state->wnext = 0; + state->whave = state->wsize; + } + else { + dist = state->wsize - state->wnext; + if (dist > copy) dist = copy; + zmemcpy(state->window + state->wnext, end - copy, dist); + copy -= dist; + if (copy) { + zmemcpy(state->window, end - copy, copy); + state->wnext = copy; + state->whave = state->wsize; + } + else { + state->wnext += dist; + if (state->wnext == state->wsize) state->wnext = 0; + if (state->whave < state->wsize) state->whave += dist; + } + } + return 0; +} + +/* Macros for inflate(): */ + +/* check function to use adler32() for zlib or crc32() for gzip */ +#ifdef GUNZIP +# define UPDATE(check, buf, len) \ + (state->flags ? crc32(check, buf, len) : adler32(check, buf, len)) +#else +# define UPDATE(check, buf, len) adler32(check, buf, len) +#endif + +/* check macros for header crc */ +#ifdef GUNZIP +# define CRC2(check, word) \ + do { \ + hbuf[0] = (unsigned char)(word); \ + hbuf[1] = (unsigned char)((word) >> 8); \ + check = crc32(check, hbuf, 2); \ + } while (0) + +# define CRC4(check, word) \ + do { \ + hbuf[0] = (unsigned char)(word); \ + hbuf[1] = (unsigned char)((word) >> 8); \ + hbuf[2] = (unsigned char)((word) >> 16); \ + hbuf[3] = (unsigned char)((word) >> 24); \ + check = crc32(check, hbuf, 4); \ + } while (0) +#endif + +/* Load registers with state in inflate() for speed */ +#define LOAD() \ + do { \ + put = strm->next_out; \ + left = strm->avail_out; \ + next = strm->next_in; \ + have = strm->avail_in; \ + hold = state->hold; \ + bits = state->bits; \ + } while (0) + +/* Restore state from registers in inflate() */ +#define RESTORE() \ + do { \ + strm->next_out = put; \ + strm->avail_out = left; \ + strm->next_in = next; \ + strm->avail_in = have; \ + state->hold = hold; \ + state->bits = bits; \ + } while (0) + +/* Clear the input bit accumulator */ +#define INITBITS() \ + do { \ + hold = 0; \ + bits = 0; \ + } while (0) + +/* Get a byte of input into the bit accumulator, or return from inflate() + if there is no input available. */ +#define PULLBYTE() \ + do { \ + if (have == 0) goto inf_leave; \ + have--; \ + hold += (unsigned long)(*next++) << bits; \ + bits += 8; \ + } while (0) + +/* Assure that there are at least n bits in the bit accumulator. If there is + not enough available input to do that, then return from inflate(). */ +#define NEEDBITS(n) \ + do { \ + while (bits < (unsigned)(n)) \ + PULLBYTE(); \ + } while (0) + +/* Return the low n bits of the bit accumulator (n < 16) */ +#define BITS(n) \ + ((unsigned)hold & ((1U << (n)) - 1)) + +/* Remove n bits from the bit accumulator */ +#define DROPBITS(n) \ + do { \ + hold >>= (n); \ + bits -= (unsigned)(n); \ + } while (0) + +/* Remove zero to seven bits as needed to go to a byte boundary */ +#define BYTEBITS() \ + do { \ + hold >>= bits & 7; \ + bits -= bits & 7; \ + } while (0) + +/* + inflate() uses a state machine to process as much input data and generate as + much output data as possible before returning. The state machine is + structured roughly as follows: + + for (;;) switch (state) { + ... + case STATEn: + if (not enough input data or output space to make progress) + return; + ... make progress ... + state = STATEm; + break; + ... + } + + so when inflate() is called again, the same case is attempted again, and + if the appropriate resources are provided, the machine proceeds to the + next state. The NEEDBITS() macro is usually the way the state evaluates + whether it can proceed or should return. NEEDBITS() does the return if + the requested bits are not available. The typical use of the BITS macros + is: + + NEEDBITS(n); + ... do something with BITS(n) ... + DROPBITS(n); + + where NEEDBITS(n) either returns from inflate() if there isn't enough + input left to load n bits into the accumulator, or it continues. BITS(n) + gives the low n bits in the accumulator. When done, DROPBITS(n) drops + the low n bits off the accumulator. INITBITS() clears the accumulator + and sets the number of available bits to zero. BYTEBITS() discards just + enough bits to put the accumulator on a byte boundary. After BYTEBITS() + and a NEEDBITS(8), then BITS(8) would return the next byte in the stream. + + NEEDBITS(n) uses PULLBYTE() to get an available byte of input, or to return + if there is no input available. The decoding of variable length codes uses + PULLBYTE() directly in order to pull just enough bytes to decode the next + code, and no more. + + Some states loop until they get enough input, making sure that enough + state information is maintained to continue the loop where it left off + if NEEDBITS() returns in the loop. For example, want, need, and keep + would all have to actually be part of the saved state in case NEEDBITS() + returns: + + case STATEw: + while (want < need) { + NEEDBITS(n); + keep[want++] = BITS(n); + DROPBITS(n); + } + state = STATEx; + case STATEx: + + As shown above, if the next state is also the next case, then the break + is omitted. + + A state may also return if there is not enough output space available to + complete that state. Those states are copying stored data, writing a + literal byte, and copying a matching string. + + When returning, a "goto inf_leave" is used to update the total counters, + update the check value, and determine whether any progress has been made + during that inflate() call in order to return the proper return code. + Progress is defined as a change in either strm->avail_in or strm->avail_out. + When there is a window, goto inf_leave will update the window with the last + output written. If a goto inf_leave occurs in the middle of decompression + and there is no window currently, goto inf_leave will create one and copy + output to the window for the next call of inflate(). + + In this implementation, the flush parameter of inflate() only affects the + return code (per zlib.h). inflate() always writes as much as possible to + strm->next_out, given the space available and the provided input--the effect + documented in zlib.h of Z_SYNC_FLUSH. Furthermore, inflate() always defers + the allocation of and copying into a sliding window until necessary, which + provides the effect documented in zlib.h for Z_FINISH when the entire input + stream available. So the only thing the flush parameter actually does is: + when flush is set to Z_FINISH, inflate() cannot return Z_OK. Instead it + will return Z_BUF_ERROR if it has not reached the end of the stream. + */ + +int ZEXPORT inflate(strm, flush) +z_streamp strm; +int flush; +{ + struct inflate_state FAR *state; + z_const unsigned char FAR *next; /* next input */ + unsigned char FAR *put; /* next output */ + unsigned have, left; /* available input and output */ + unsigned long hold; /* bit buffer */ + unsigned bits; /* bits in bit buffer */ + unsigned in, out; /* save starting available input and output */ + unsigned copy; /* number of stored or match bytes to copy */ + unsigned char FAR *from; /* where to copy match bytes from */ + code here; /* current decoding table entry */ + code last; /* parent table entry */ + unsigned len; /* length to copy for repeats, bits to drop */ + int ret; /* return code */ +#ifdef GUNZIP + unsigned char hbuf[4]; /* buffer for gzip header crc calculation */ +#endif + static const unsigned short order[19] = /* permutation of code lengths */ + {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; + + if (inflateStateCheck(strm) || strm->next_out == Z_NULL || + (strm->next_in == Z_NULL && strm->avail_in != 0)) + return Z_STREAM_ERROR; + + state = (struct inflate_state FAR *)strm->state; + if (state->mode == TYPE) state->mode = TYPEDO; /* skip check */ + LOAD(); + in = have; + out = left; + ret = Z_OK; + for (;;) + switch (state->mode) { + case HEAD: + if (state->wrap == 0) { + state->mode = TYPEDO; + break; + } + NEEDBITS(16); +#ifdef GUNZIP + if ((state->wrap & 2) && hold == 0x8b1f) { /* gzip header */ + if (state->wbits == 0) + state->wbits = 15; + state->check = crc32(0L, Z_NULL, 0); + CRC2(state->check, hold); + INITBITS(); + state->mode = FLAGS; + break; + } + state->flags = 0; /* expect zlib header */ + if (state->head != Z_NULL) + state->head->done = -1; + if (!(state->wrap & 1) || /* check if zlib header allowed */ +#else + if ( +#endif + ((BITS(8) << 8) + (hold >> 8)) % 31) { + strm->msg = (char *)"incorrect header check"; + state->mode = BAD; + break; + } + if (BITS(4) != Z_DEFLATED) { + strm->msg = (char *)"unknown compression method"; + state->mode = BAD; + break; + } + DROPBITS(4); + len = BITS(4) + 8; + if (state->wbits == 0) + state->wbits = len; + if (len > 15 || len > state->wbits) { + strm->msg = (char *)"invalid window size"; + state->mode = BAD; + break; + } + state->dmax = 1U << len; + Tracev((stderr, "inflate: zlib header ok\n")); + strm->adler = state->check = adler32(0L, Z_NULL, 0); + state->mode = hold & 0x200 ? DICTID : TYPE; + INITBITS(); + break; +#ifdef GUNZIP + case FLAGS: + NEEDBITS(16); + state->flags = (int)(hold); + if ((state->flags & 0xff) != Z_DEFLATED) { + strm->msg = (char *)"unknown compression method"; + state->mode = BAD; + break; + } + if (state->flags & 0xe000) { + strm->msg = (char *)"unknown header flags set"; + state->mode = BAD; + break; + } + if (state->head != Z_NULL) + state->head->text = (int)((hold >> 8) & 1); + if ((state->flags & 0x0200) && (state->wrap & 4)) + CRC2(state->check, hold); + INITBITS(); + state->mode = TIME; + case TIME: + NEEDBITS(32); + if (state->head != Z_NULL) + state->head->time = hold; + if ((state->flags & 0x0200) && (state->wrap & 4)) + CRC4(state->check, hold); + INITBITS(); + state->mode = OS; + case OS: + NEEDBITS(16); + if (state->head != Z_NULL) { + state->head->xflags = (int)(hold & 0xff); + state->head->os = (int)(hold >> 8); + } + if ((state->flags & 0x0200) && (state->wrap & 4)) + CRC2(state->check, hold); + INITBITS(); + state->mode = EXLEN; + case EXLEN: + if (state->flags & 0x0400) { + NEEDBITS(16); + state->length = (unsigned)(hold); + if (state->head != Z_NULL) + state->head->extra_len = (unsigned)hold; + if ((state->flags & 0x0200) && (state->wrap & 4)) + CRC2(state->check, hold); + INITBITS(); + } + else if (state->head != Z_NULL) + state->head->extra = Z_NULL; + state->mode = EXTRA; + case EXTRA: + if (state->flags & 0x0400) { + copy = state->length; + if (copy > have) copy = have; + if (copy) { + if (state->head != Z_NULL && + state->head->extra != Z_NULL) { + len = state->head->extra_len - state->length; + zmemcpy(state->head->extra + len, next, + len + copy > state->head->extra_max ? + state->head->extra_max - len : copy); + } + if ((state->flags & 0x0200) && (state->wrap & 4)) + state->check = crc32(state->check, next, copy); + have -= copy; + next += copy; + state->length -= copy; + } + if (state->length) goto inf_leave; + } + state->length = 0; + state->mode = NAME; + case NAME: + if (state->flags & 0x0800) { + if (have == 0) goto inf_leave; + copy = 0; + do { + len = (unsigned)(next[copy++]); + if (state->head != Z_NULL && + state->head->name != Z_NULL && + state->length < state->head->name_max) + state->head->name[state->length++] = (Bytef)len; + } while (len && copy < have); + if ((state->flags & 0x0200) && (state->wrap & 4)) + state->check = crc32(state->check, next, copy); + have -= copy; + next += copy; + if (len) goto inf_leave; + } + else if (state->head != Z_NULL) + state->head->name = Z_NULL; + state->length = 0; + state->mode = COMMENT; + case COMMENT: + if (state->flags & 0x1000) { + if (have == 0) goto inf_leave; + copy = 0; + do { + len = (unsigned)(next[copy++]); + if (state->head != Z_NULL && + state->head->comment != Z_NULL && + state->length < state->head->comm_max) + state->head->comment[state->length++] = (Bytef)len; + } while (len && copy < have); + if ((state->flags & 0x0200) && (state->wrap & 4)) + state->check = crc32(state->check, next, copy); + have -= copy; + next += copy; + if (len) goto inf_leave; + } + else if (state->head != Z_NULL) + state->head->comment = Z_NULL; + state->mode = HCRC; + case HCRC: + if (state->flags & 0x0200) { + NEEDBITS(16); + if ((state->wrap & 4) && hold != (state->check & 0xffff)) { + strm->msg = (char *)"header crc mismatch"; + state->mode = BAD; + break; + } + INITBITS(); + } + if (state->head != Z_NULL) { + state->head->hcrc = (int)((state->flags >> 9) & 1); + state->head->done = 1; + } + strm->adler = state->check = crc32(0L, Z_NULL, 0); + state->mode = TYPE; + break; +#endif + case DICTID: + NEEDBITS(32); + strm->adler = state->check = ZSWAP32(hold); + INITBITS(); + state->mode = DICT; + case DICT: + if (state->havedict == 0) { + RESTORE(); + return Z_NEED_DICT; + } + strm->adler = state->check = adler32(0L, Z_NULL, 0); + state->mode = TYPE; + case TYPE: + if (flush == Z_BLOCK || flush == Z_TREES) goto inf_leave; + case TYPEDO: + if (state->last) { + BYTEBITS(); + state->mode = CHECK; + break; + } + NEEDBITS(3); + state->last = BITS(1); + DROPBITS(1); + switch (BITS(2)) { + case 0: /* stored block */ + Tracev((stderr, "inflate: stored block%s\n", + state->last ? " (last)" : "")); + state->mode = STORED; + break; + case 1: /* fixed block */ + fixedtables(state); + Tracev((stderr, "inflate: fixed codes block%s\n", + state->last ? " (last)" : "")); + state->mode = LEN_; /* decode codes */ + if (flush == Z_TREES) { + DROPBITS(2); + goto inf_leave; + } + break; + case 2: /* dynamic block */ + Tracev((stderr, "inflate: dynamic codes block%s\n", + state->last ? " (last)" : "")); + state->mode = TABLE; + break; + case 3: + strm->msg = (char *)"invalid block type"; + state->mode = BAD; + } + DROPBITS(2); + break; + case STORED: + BYTEBITS(); /* go to byte boundary */ + NEEDBITS(32); + if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) { + strm->msg = (char *)"invalid stored block lengths"; + state->mode = BAD; + break; + } + state->length = (unsigned)hold & 0xffff; + Tracev((stderr, "inflate: stored length %u\n", + state->length)); + INITBITS(); + state->mode = COPY_; + if (flush == Z_TREES) goto inf_leave; + case COPY_: + state->mode = COPY; + case COPY: + copy = state->length; + if (copy) { + if (copy > have) copy = have; + if (copy > left) copy = left; + if (copy == 0) goto inf_leave; + zmemcpy(put, next, copy); + have -= copy; + next += copy; + left -= copy; + put += copy; + state->length -= copy; + break; + } + Tracev((stderr, "inflate: stored end\n")); + state->mode = TYPE; + break; + case TABLE: + NEEDBITS(14); + state->nlen = BITS(5) + 257; + DROPBITS(5); + state->ndist = BITS(5) + 1; + DROPBITS(5); + state->ncode = BITS(4) + 4; + DROPBITS(4); +#ifndef PKZIP_BUG_WORKAROUND + if (state->nlen > 286 || state->ndist > 30) { + strm->msg = (char *)"too many length or distance symbols"; + state->mode = BAD; + break; + } +#endif + Tracev((stderr, "inflate: table sizes ok\n")); + state->have = 0; + state->mode = LENLENS; + case LENLENS: + while (state->have < state->ncode) { + NEEDBITS(3); + state->lens[order[state->have++]] = (unsigned short)BITS(3); + DROPBITS(3); + } + while (state->have < 19) + state->lens[order[state->have++]] = 0; + state->next = state->codes; + state->lencode = (const code FAR *)(state->next); + state->lenbits = 7; + ret = inflate_table(CODES, state->lens, 19, &(state->next), + &(state->lenbits), state->work); + if (ret) { + strm->msg = (char *)"invalid code lengths set"; + state->mode = BAD; + break; + } + Tracev((stderr, "inflate: code lengths ok\n")); + state->have = 0; + state->mode = CODELENS; + case CODELENS: + while (state->have < state->nlen + state->ndist) { + for (;;) { + here = state->lencode[BITS(state->lenbits)]; + if ((unsigned)(here.bits) <= bits) break; + PULLBYTE(); + } + if (here.val < 16) { + DROPBITS(here.bits); + state->lens[state->have++] = here.val; + } + else { + if (here.val == 16) { + NEEDBITS(here.bits + 2); + DROPBITS(here.bits); + if (state->have == 0) { + strm->msg = (char *)"invalid bit length repeat"; + state->mode = BAD; + break; + } + len = state->lens[state->have - 1]; + copy = 3 + BITS(2); + DROPBITS(2); + } + else if (here.val == 17) { + NEEDBITS(here.bits + 3); + DROPBITS(here.bits); + len = 0; + copy = 3 + BITS(3); + DROPBITS(3); + } + else { + NEEDBITS(here.bits + 7); + DROPBITS(here.bits); + len = 0; + copy = 11 + BITS(7); + DROPBITS(7); + } + if (state->have + copy > state->nlen + state->ndist) { + strm->msg = (char *)"invalid bit length repeat"; + state->mode = BAD; + break; + } + while (copy--) + state->lens[state->have++] = (unsigned short)len; + } + } + + /* handle error breaks in while */ + if (state->mode == BAD) break; + + /* check for end-of-block code (better have one) */ + if (state->lens[256] == 0) { + strm->msg = (char *)"invalid code -- missing end-of-block"; + state->mode = BAD; + break; + } + + /* build code tables -- note: do not change the lenbits or distbits + values here (9 and 6) without reading the comments in inftrees.h + concerning the ENOUGH constants, which depend on those values */ + state->next = state->codes; + state->lencode = (const code FAR *)(state->next); + state->lenbits = 9; + ret = inflate_table(LENS, state->lens, state->nlen, &(state->next), + &(state->lenbits), state->work); + if (ret) { + strm->msg = (char *)"invalid literal/lengths set"; + state->mode = BAD; + break; + } + state->distcode = (const code FAR *)(state->next); + state->distbits = 6; + ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist, + &(state->next), &(state->distbits), state->work); + if (ret) { + strm->msg = (char *)"invalid distances set"; + state->mode = BAD; + break; + } + Tracev((stderr, "inflate: codes ok\n")); + state->mode = LEN_; + if (flush == Z_TREES) goto inf_leave; + case LEN_: + state->mode = LEN; + case LEN: + if (have >= 6 && left >= 258) { + RESTORE(); + inflate_fast(strm, out); + LOAD(); + if (state->mode == TYPE) + state->back = -1; + break; + } + state->back = 0; + for (;;) { + here = state->lencode[BITS(state->lenbits)]; + if ((unsigned)(here.bits) <= bits) break; + PULLBYTE(); + } + if (here.op && (here.op & 0xf0) == 0) { + last = here; + for (;;) { + here = state->lencode[last.val + + (BITS(last.bits + last.op) >> last.bits)]; + if ((unsigned)(last.bits + here.bits) <= bits) break; + PULLBYTE(); + } + DROPBITS(last.bits); + state->back += last.bits; + } + DROPBITS(here.bits); + state->back += here.bits; + state->length = (unsigned)here.val; + if ((int)(here.op) == 0) { + Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? + "inflate: literal '%c'\n" : + "inflate: literal 0x%02x\n", here.val)); + state->mode = LIT; + break; + } + if (here.op & 32) { + Tracevv((stderr, "inflate: end of block\n")); + state->back = -1; + state->mode = TYPE; + break; + } + if (here.op & 64) { + strm->msg = (char *)"invalid literal/length code"; + state->mode = BAD; + break; + } + state->extra = (unsigned)(here.op) & 15; + state->mode = LENEXT; + case LENEXT: + if (state->extra) { + NEEDBITS(state->extra); + state->length += BITS(state->extra); + DROPBITS(state->extra); + state->back += state->extra; + } + Tracevv((stderr, "inflate: length %u\n", state->length)); + state->was = state->length; + state->mode = DIST; + case DIST: + for (;;) { + here = state->distcode[BITS(state->distbits)]; + if ((unsigned)(here.bits) <= bits) break; + PULLBYTE(); + } + if ((here.op & 0xf0) == 0) { + last = here; + for (;;) { + here = state->distcode[last.val + + (BITS(last.bits + last.op) >> last.bits)]; + if ((unsigned)(last.bits + here.bits) <= bits) break; + PULLBYTE(); + } + DROPBITS(last.bits); + state->back += last.bits; + } + DROPBITS(here.bits); + state->back += here.bits; + if (here.op & 64) { + strm->msg = (char *)"invalid distance code"; + state->mode = BAD; + break; + } + state->offset = (unsigned)here.val; + state->extra = (unsigned)(here.op) & 15; + state->mode = DISTEXT; + case DISTEXT: + if (state->extra) { + NEEDBITS(state->extra); + state->offset += BITS(state->extra); + DROPBITS(state->extra); + state->back += state->extra; + } +#ifdef INFLATE_STRICT + if (state->offset > state->dmax) { + strm->msg = (char *)"invalid distance too far back"; + state->mode = BAD; + break; + } +#endif + Tracevv((stderr, "inflate: distance %u\n", state->offset)); + state->mode = MATCH; + case MATCH: + if (left == 0) goto inf_leave; + copy = out - left; + if (state->offset > copy) { /* copy from window */ + copy = state->offset - copy; + if (copy > state->whave) { + if (state->sane) { + strm->msg = (char *)"invalid distance too far back"; + state->mode = BAD; + break; + } +#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR + Trace((stderr, "inflate.c too far\n")); + copy -= state->whave; + if (copy > state->length) copy = state->length; + if (copy > left) copy = left; + left -= copy; + state->length -= copy; + do { + *put++ = 0; + } while (--copy); + if (state->length == 0) state->mode = LEN; + break; +#endif + } + if (copy > state->wnext) { + copy -= state->wnext; + from = state->window + (state->wsize - copy); + } + else + from = state->window + (state->wnext - copy); + if (copy > state->length) copy = state->length; + } + else { /* copy from output */ + from = put - state->offset; + copy = state->length; + } + if (copy > left) copy = left; + left -= copy; + state->length -= copy; + do { + *put++ = *from++; + } while (--copy); + if (state->length == 0) state->mode = LEN; + break; + case LIT: + if (left == 0) goto inf_leave; + *put++ = (unsigned char)(state->length); + left--; + state->mode = LEN; + break; + case CHECK: + if (state->wrap) { + NEEDBITS(32); + out -= left; + strm->total_out += out; + state->total += out; + if ((state->wrap & 4) && out) + strm->adler = state->check = + UPDATE(state->check, put - out, out); + out = left; + if ((state->wrap & 4) && ( +#ifdef GUNZIP + state->flags ? hold : +#endif + ZSWAP32(hold)) != state->check) { + strm->msg = (char *)"incorrect data check"; + state->mode = BAD; + break; + } + INITBITS(); + Tracev((stderr, "inflate: check matches trailer\n")); + } +#ifdef GUNZIP + state->mode = LENGTH; + case LENGTH: + if (state->wrap && state->flags) { + NEEDBITS(32); + if (hold != (state->total & 0xffffffffUL)) { + strm->msg = (char *)"incorrect length check"; + state->mode = BAD; + break; + } + INITBITS(); + Tracev((stderr, "inflate: length matches trailer\n")); + } +#endif + state->mode = DONE; + case DONE: + ret = Z_STREAM_END; + goto inf_leave; + case BAD: + ret = Z_DATA_ERROR; + goto inf_leave; + case MEM: + return Z_MEM_ERROR; + case SYNC: + default: + return Z_STREAM_ERROR; + } + + /* + Return from inflate(), updating the total counts and the check value. + If there was no progress during the inflate() call, return a buffer + error. Call updatewindow() to create and/or update the window state. + Note: a memory error from inflate() is non-recoverable. + */ + inf_leave: + RESTORE(); + if (state->wsize || (out != strm->avail_out && state->mode < BAD && + (state->mode < CHECK || flush != Z_FINISH))) + if (updatewindow(strm, strm->next_out, out - strm->avail_out)) { + state->mode = MEM; + return Z_MEM_ERROR; + } + in -= strm->avail_in; + out -= strm->avail_out; + strm->total_in += in; + strm->total_out += out; + state->total += out; + if ((state->wrap & 4) && out) + strm->adler = state->check = + UPDATE(state->check, strm->next_out - out, out); + strm->data_type = (int)state->bits + (state->last ? 64 : 0) + + (state->mode == TYPE ? 128 : 0) + + (state->mode == LEN_ || state->mode == COPY_ ? 256 : 0); + if (((in == 0 && out == 0) || flush == Z_FINISH) && ret == Z_OK) + ret = Z_BUF_ERROR; + return ret; +} + +int ZEXPORT inflateEnd(strm) +z_streamp strm; +{ + struct inflate_state FAR *state; + if (inflateStateCheck(strm)) + return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + if (state->window != Z_NULL) ZFREE(strm, state->window); + ZFREE(strm, strm->state); + strm->state = Z_NULL; + Tracev((stderr, "inflate: end\n")); + return Z_OK; +} + +int ZEXPORT inflateGetDictionary(strm, dictionary, dictLength) +z_streamp strm; +Bytef *dictionary; +uInt *dictLength; +{ + struct inflate_state FAR *state; + + /* check state */ + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + + /* copy dictionary */ + if (state->whave && dictionary != Z_NULL) { + zmemcpy(dictionary, state->window + state->wnext, + state->whave - state->wnext); + zmemcpy(dictionary + state->whave - state->wnext, + state->window, state->wnext); + } + if (dictLength != Z_NULL) + *dictLength = state->whave; + return Z_OK; +} + +int ZEXPORT inflateSetDictionary(strm, dictionary, dictLength) +z_streamp strm; +const Bytef *dictionary; +uInt dictLength; +{ + struct inflate_state FAR *state; + unsigned long dictid; + int ret; + + /* check state */ + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + if (state->wrap != 0 && state->mode != DICT) + return Z_STREAM_ERROR; + + /* check for correct dictionary identifier */ + if (state->mode == DICT) { + dictid = adler32(0L, Z_NULL, 0); + dictid = adler32(dictid, dictionary, dictLength); + if (dictid != state->check) + return Z_DATA_ERROR; + } + + /* copy dictionary to window using updatewindow(), which will amend the + existing dictionary if appropriate */ + ret = updatewindow(strm, dictionary + dictLength, dictLength); + if (ret) { + state->mode = MEM; + return Z_MEM_ERROR; + } + state->havedict = 1; + Tracev((stderr, "inflate: dictionary set\n")); + return Z_OK; +} + +int ZEXPORT inflateGetHeader(strm, head) +z_streamp strm; +gz_headerp head; +{ + struct inflate_state FAR *state; + + /* check state */ + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + if ((state->wrap & 2) == 0) return Z_STREAM_ERROR; + + /* save header structure */ + state->head = head; + head->done = 0; + return Z_OK; +} + +/* + Search buf[0..len-1] for the pattern: 0, 0, 0xff, 0xff. Return when found + or when out of input. When called, *have is the number of pattern bytes + found in order so far, in 0..3. On return *have is updated to the new + state. If on return *have equals four, then the pattern was found and the + return value is how many bytes were read including the last byte of the + pattern. If *have is less than four, then the pattern has not been found + yet and the return value is len. In the latter case, syncsearch() can be + called again with more data and the *have state. *have is initialized to + zero for the first call. + */ +local unsigned syncsearch(have, buf, len) +unsigned FAR *have; +const unsigned char FAR *buf; +unsigned len; +{ + unsigned got; + unsigned next; + + got = *have; + next = 0; + while (next < len && got < 4) { + if ((int)(buf[next]) == (got < 2 ? 0 : 0xff)) + got++; + else if (buf[next]) + got = 0; + else + got = 4 - got; + next++; + } + *have = got; + return next; +} + +int ZEXPORT inflateSync(strm) +z_streamp strm; +{ + unsigned len; /* number of bytes to look at or looked at */ + unsigned long in, out; /* temporary to save total_in and total_out */ + unsigned char buf[4]; /* to restore bit buffer to byte string */ + struct inflate_state FAR *state; + + /* check parameters */ + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + if (strm->avail_in == 0 && state->bits < 8) return Z_BUF_ERROR; + + /* if first time, start search in bit buffer */ + if (state->mode != SYNC) { + state->mode = SYNC; + state->hold <<= state->bits & 7; + state->bits -= state->bits & 7; + len = 0; + while (state->bits >= 8) { + buf[len++] = (unsigned char)(state->hold); + state->hold >>= 8; + state->bits -= 8; + } + state->have = 0; + syncsearch(&(state->have), buf, len); + } + + /* search available input */ + len = syncsearch(&(state->have), strm->next_in, strm->avail_in); + strm->avail_in -= len; + strm->next_in += len; + strm->total_in += len; + + /* return no joy or set up to restart inflate() on a new block */ + if (state->have != 4) return Z_DATA_ERROR; + in = strm->total_in; out = strm->total_out; + inflateReset(strm); + strm->total_in = in; strm->total_out = out; + state->mode = TYPE; + return Z_OK; +} + +/* + Returns true if inflate is currently at the end of a block generated by + Z_SYNC_FLUSH or Z_FULL_FLUSH. This function is used by one PPP + implementation to provide an additional safety check. PPP uses + Z_SYNC_FLUSH but removes the length bytes of the resulting empty stored + block. When decompressing, PPP checks that at the end of input packet, + inflate is waiting for these length bytes. + */ +int ZEXPORT inflateSyncPoint(strm) +z_streamp strm; +{ + struct inflate_state FAR *state; + + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + return state->mode == STORED && state->bits == 0; +} + +int ZEXPORT inflateCopy(dest, source) +z_streamp dest; +z_streamp source; +{ + struct inflate_state FAR *state; + struct inflate_state FAR *copy; + unsigned char FAR *window; + unsigned wsize; + + /* check input */ + if (inflateStateCheck(source) || dest == Z_NULL) + return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)source->state; + + /* allocate space */ + copy = (struct inflate_state FAR *) + ZALLOC(source, 1, sizeof(struct inflate_state)); + if (copy == Z_NULL) return Z_MEM_ERROR; + window = Z_NULL; + if (state->window != Z_NULL) { + window = (unsigned char FAR *) + ZALLOC(source, 1U << state->wbits, sizeof(unsigned char)); + if (window == Z_NULL) { + ZFREE(source, copy); + return Z_MEM_ERROR; + } + } + + /* copy state */ + zmemcpy((voidpf)dest, (voidpf)source, sizeof(z_stream)); + zmemcpy((voidpf)copy, (voidpf)state, sizeof(struct inflate_state)); + copy->strm = dest; + if (state->lencode >= state->codes && + state->lencode <= state->codes + ENOUGH - 1) { + copy->lencode = copy->codes + (state->lencode - state->codes); + copy->distcode = copy->codes + (state->distcode - state->codes); + } + copy->next = copy->codes + (state->next - state->codes); + if (window != Z_NULL) { + wsize = 1U << state->wbits; + zmemcpy(window, state->window, wsize); + } + copy->window = window; + dest->state = (struct internal_state FAR *)copy; + return Z_OK; +} + +int ZEXPORT inflateUndermine(strm, subvert) +z_streamp strm; +int subvert; +{ + struct inflate_state FAR *state; + + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; +#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR + state->sane = !subvert; + return Z_OK; +#else + (void)subvert; + state->sane = 1; + return Z_DATA_ERROR; +#endif +} + +int ZEXPORT inflateValidate(strm, check) +z_streamp strm; +int check; +{ + struct inflate_state FAR *state; + + if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + state = (struct inflate_state FAR *)strm->state; + if (check) + state->wrap |= 4; + else + state->wrap &= ~4; + return Z_OK; +} + +long ZEXPORT inflateMark(strm) +z_streamp strm; +{ + struct inflate_state FAR *state; + + if (inflateStateCheck(strm)) + return -(1L << 16); + state = (struct inflate_state FAR *)strm->state; + return (long)(((unsigned long)((long)state->back)) << 16) + + (state->mode == COPY ? state->length : + (state->mode == MATCH ? state->was - state->length : 0)); +} + +unsigned long ZEXPORT inflateCodesUsed(strm) +z_streamp strm; +{ + struct inflate_state FAR *state; + if (inflateStateCheck(strm)) return (unsigned long)-1; + state = (struct inflate_state FAR *)strm->state; + return (unsigned long)(state->next - state->codes); +} diff --git a/waterbox/nyma/zlib/inflate.h b/waterbox/nyma/zlib/inflate.h new file mode 100644 index 0000000000..a46cce6b6d --- /dev/null +++ b/waterbox/nyma/zlib/inflate.h @@ -0,0 +1,125 @@ +/* inflate.h -- internal inflate state definition + * Copyright (C) 1995-2016 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* WARNING: this file should *not* be used by applications. It is + part of the implementation of the compression library and is + subject to change. Applications should only use zlib.h. + */ + +/* define NO_GZIP when compiling if you want to disable gzip header and + trailer decoding by inflate(). NO_GZIP would be used to avoid linking in + the crc code when it is not needed. For shared libraries, gzip decoding + should be left enabled. */ +#ifndef NO_GZIP +# define GUNZIP +#endif + +/* Possible inflate modes between inflate() calls */ +typedef enum { + HEAD = 16180, /* i: waiting for magic header */ + FLAGS, /* i: waiting for method and flags (gzip) */ + TIME, /* i: waiting for modification time (gzip) */ + OS, /* i: waiting for extra flags and operating system (gzip) */ + EXLEN, /* i: waiting for extra length (gzip) */ + EXTRA, /* i: waiting for extra bytes (gzip) */ + NAME, /* i: waiting for end of file name (gzip) */ + COMMENT, /* i: waiting for end of comment (gzip) */ + HCRC, /* i: waiting for header crc (gzip) */ + DICTID, /* i: waiting for dictionary check value */ + DICT, /* waiting for inflateSetDictionary() call */ + TYPE, /* i: waiting for type bits, including last-flag bit */ + TYPEDO, /* i: same, but skip check to exit inflate on new block */ + STORED, /* i: waiting for stored size (length and complement) */ + COPY_, /* i/o: same as COPY below, but only first time in */ + COPY, /* i/o: waiting for input or output to copy stored block */ + TABLE, /* i: waiting for dynamic block table lengths */ + LENLENS, /* i: waiting for code length code lengths */ + CODELENS, /* i: waiting for length/lit and distance code lengths */ + LEN_, /* i: same as LEN below, but only first time in */ + LEN, /* i: waiting for length/lit/eob code */ + LENEXT, /* i: waiting for length extra bits */ + DIST, /* i: waiting for distance code */ + DISTEXT, /* i: waiting for distance extra bits */ + MATCH, /* o: waiting for output space to copy string */ + LIT, /* o: waiting for output space to write literal */ + CHECK, /* i: waiting for 32-bit check value */ + LENGTH, /* i: waiting for 32-bit length (gzip) */ + DONE, /* finished check, done -- remain here until reset */ + BAD, /* got a data error -- remain here until reset */ + MEM, /* got an inflate() memory error -- remain here until reset */ + SYNC /* looking for synchronization bytes to restart inflate() */ +} inflate_mode; + +/* + State transitions between above modes - + + (most modes can go to BAD or MEM on error -- not shown for clarity) + + Process header: + HEAD -> (gzip) or (zlib) or (raw) + (gzip) -> FLAGS -> TIME -> OS -> EXLEN -> EXTRA -> NAME -> COMMENT -> + HCRC -> TYPE + (zlib) -> DICTID or TYPE + DICTID -> DICT -> TYPE + (raw) -> TYPEDO + Read deflate blocks: + TYPE -> TYPEDO -> STORED or TABLE or LEN_ or CHECK + STORED -> COPY_ -> COPY -> TYPE + TABLE -> LENLENS -> CODELENS -> LEN_ + LEN_ -> LEN + Read deflate codes in fixed or dynamic block: + LEN -> LENEXT or LIT or TYPE + LENEXT -> DIST -> DISTEXT -> MATCH -> LEN + LIT -> LEN + Process trailer: + CHECK -> LENGTH -> DONE + */ + +/* State maintained between inflate() calls -- approximately 7K bytes, not + including the allocated sliding window, which is up to 32K bytes. */ +struct inflate_state { + z_streamp strm; /* pointer back to this zlib stream */ + inflate_mode mode; /* current inflate mode */ + int last; /* true if processing last block */ + int wrap; /* bit 0 true for zlib, bit 1 true for gzip, + bit 2 true to validate check value */ + int havedict; /* true if dictionary provided */ + int flags; /* gzip header method and flags (0 if zlib) */ + unsigned dmax; /* zlib header max distance (INFLATE_STRICT) */ + unsigned long check; /* protected copy of check value */ + unsigned long total; /* protected copy of output count */ + gz_headerp head; /* where to save gzip header information */ + /* sliding window */ + unsigned wbits; /* log base 2 of requested window size */ + unsigned wsize; /* window size or zero if not using window */ + unsigned whave; /* valid bytes in the window */ + unsigned wnext; /* window write index */ + unsigned char FAR *window; /* allocated sliding window, if needed */ + /* bit accumulator */ + unsigned long hold; /* input bit accumulator */ + unsigned bits; /* number of bits in "in" */ + /* for string and stored block copying */ + unsigned length; /* literal or length of data to copy */ + unsigned offset; /* distance back to copy string from */ + /* for table and code decoding */ + unsigned extra; /* extra bits needed */ + /* fixed and dynamic code tables */ + code const FAR *lencode; /* starting table for length/literal codes */ + code const FAR *distcode; /* starting table for distance codes */ + unsigned lenbits; /* index bits for lencode */ + unsigned distbits; /* index bits for distcode */ + /* dynamic table building */ + unsigned ncode; /* number of code length code lengths */ + unsigned nlen; /* number of length code lengths */ + unsigned ndist; /* number of distance code lengths */ + unsigned have; /* number of code lengths in lens[] */ + code FAR *next; /* next available space in codes[] */ + unsigned short lens[320]; /* temporary storage for code lengths */ + unsigned short work[288]; /* work area for code table building */ + code codes[ENOUGH]; /* space for code tables */ + int sane; /* if false, allow invalid distance too far */ + int back; /* bits back of last unprocessed length/lit */ + unsigned was; /* initial length of match */ +}; diff --git a/waterbox/nyma/zlib/inftrees.c b/waterbox/nyma/zlib/inftrees.c new file mode 100644 index 0000000000..2ea08fc13e --- /dev/null +++ b/waterbox/nyma/zlib/inftrees.c @@ -0,0 +1,304 @@ +/* inftrees.c -- generate Huffman trees for efficient decoding + * Copyright (C) 1995-2017 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +#include "zutil.h" +#include "inftrees.h" + +#define MAXBITS 15 + +const char inflate_copyright[] = + " inflate 1.2.11 Copyright 1995-2017 Mark Adler "; +/* + If you use the zlib library in a product, an acknowledgment is welcome + in the documentation of your product. If for some reason you cannot + include such an acknowledgment, I would appreciate that you keep this + copyright string in the executable of your product. + */ + +/* + Build a set of tables to decode the provided canonical Huffman code. + The code lengths are lens[0..codes-1]. The result starts at *table, + whose indices are 0..2^bits-1. work is a writable array of at least + lens shorts, which is used as a work area. type is the type of code + to be generated, CODES, LENS, or DISTS. On return, zero is success, + -1 is an invalid code, and +1 means that ENOUGH isn't enough. table + on return points to the next available entry's address. bits is the + requested root table index bits, and on return it is the actual root + table index bits. It will differ if the request is greater than the + longest code or if it is less than the shortest code. + */ +int ZLIB_INTERNAL inflate_table(type, lens, codes, table, bits, work) +codetype type; +unsigned short FAR *lens; +unsigned codes; +code FAR * FAR *table; +unsigned FAR *bits; +unsigned short FAR *work; +{ + unsigned len; /* a code's length in bits */ + unsigned sym; /* index of code symbols */ + unsigned min, max; /* minimum and maximum code lengths */ + unsigned root; /* number of index bits for root table */ + unsigned curr; /* number of index bits for current table */ + unsigned drop; /* code bits to drop for sub-table */ + int left; /* number of prefix codes available */ + unsigned used; /* code entries in table used */ + unsigned huff; /* Huffman code */ + unsigned incr; /* for incrementing code, index */ + unsigned fill; /* index for replicating entries */ + unsigned low; /* low bits for current root entry */ + unsigned mask; /* mask for low root bits */ + code here; /* table entry for duplication */ + code FAR *next; /* next available space in table */ + const unsigned short FAR *base; /* base value table to use */ + const unsigned short FAR *extra; /* extra bits table to use */ + unsigned match; /* use base and extra for symbol >= match */ + unsigned short count[MAXBITS+1]; /* number of codes of each length */ + unsigned short offs[MAXBITS+1]; /* offsets in table for each length */ + static const unsigned short lbase[31] = { /* Length codes 257..285 base */ + 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, + 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0}; + static const unsigned short lext[31] = { /* Length codes 257..285 extra */ + 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, + 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 77, 202}; + static const unsigned short dbase[32] = { /* Distance codes 0..29 base */ + 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, + 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, + 8193, 12289, 16385, 24577, 0, 0}; + static const unsigned short dext[32] = { /* Distance codes 0..29 extra */ + 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, + 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, + 28, 28, 29, 29, 64, 64}; + + /* + Process a set of code lengths to create a canonical Huffman code. The + code lengths are lens[0..codes-1]. Each length corresponds to the + symbols 0..codes-1. The Huffman code is generated by first sorting the + symbols by length from short to long, and retaining the symbol order + for codes with equal lengths. Then the code starts with all zero bits + for the first code of the shortest length, and the codes are integer + increments for the same length, and zeros are appended as the length + increases. For the deflate format, these bits are stored backwards + from their more natural integer increment ordering, and so when the + decoding tables are built in the large loop below, the integer codes + are incremented backwards. + + This routine assumes, but does not check, that all of the entries in + lens[] are in the range 0..MAXBITS. The caller must assure this. + 1..MAXBITS is interpreted as that code length. zero means that that + symbol does not occur in this code. + + The codes are sorted by computing a count of codes for each length, + creating from that a table of starting indices for each length in the + sorted table, and then entering the symbols in order in the sorted + table. The sorted table is work[], with that space being provided by + the caller. + + The length counts are used for other purposes as well, i.e. finding + the minimum and maximum length codes, determining if there are any + codes at all, checking for a valid set of lengths, and looking ahead + at length counts to determine sub-table sizes when building the + decoding tables. + */ + + /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */ + for (len = 0; len <= MAXBITS; len++) + count[len] = 0; + for (sym = 0; sym < codes; sym++) + count[lens[sym]]++; + + /* bound code lengths, force root to be within code lengths */ + root = *bits; + for (max = MAXBITS; max >= 1; max--) + if (count[max] != 0) break; + if (root > max) root = max; + if (max == 0) { /* no symbols to code at all */ + here.op = (unsigned char)64; /* invalid code marker */ + here.bits = (unsigned char)1; + here.val = (unsigned short)0; + *(*table)++ = here; /* make a table to force an error */ + *(*table)++ = here; + *bits = 1; + return 0; /* no symbols, but wait for decoding to report error */ + } + for (min = 1; min < max; min++) + if (count[min] != 0) break; + if (root < min) root = min; + + /* check for an over-subscribed or incomplete set of lengths */ + left = 1; + for (len = 1; len <= MAXBITS; len++) { + left <<= 1; + left -= count[len]; + if (left < 0) return -1; /* over-subscribed */ + } + if (left > 0 && (type == CODES || max != 1)) + return -1; /* incomplete set */ + + /* generate offsets into symbol table for each length for sorting */ + offs[1] = 0; + for (len = 1; len < MAXBITS; len++) + offs[len + 1] = offs[len] + count[len]; + + /* sort symbols by length, by symbol order within each length */ + for (sym = 0; sym < codes; sym++) + if (lens[sym] != 0) work[offs[lens[sym]]++] = (unsigned short)sym; + + /* + Create and fill in decoding tables. In this loop, the table being + filled is at next and has curr index bits. The code being used is huff + with length len. That code is converted to an index by dropping drop + bits off of the bottom. For codes where len is less than drop + curr, + those top drop + curr - len bits are incremented through all values to + fill the table with replicated entries. + + root is the number of index bits for the root table. When len exceeds + root, sub-tables are created pointed to by the root entry with an index + of the low root bits of huff. This is saved in low to check for when a + new sub-table should be started. drop is zero when the root table is + being filled, and drop is root when sub-tables are being filled. + + When a new sub-table is needed, it is necessary to look ahead in the + code lengths to determine what size sub-table is needed. The length + counts are used for this, and so count[] is decremented as codes are + entered in the tables. + + used keeps track of how many table entries have been allocated from the + provided *table space. It is checked for LENS and DIST tables against + the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in + the initial root table size constants. See the comments in inftrees.h + for more information. + + sym increments through all symbols, and the loop terminates when + all codes of length max, i.e. all codes, have been processed. This + routine permits incomplete codes, so another loop after this one fills + in the rest of the decoding tables with invalid code markers. + */ + + /* set up for code type */ + switch (type) { + case CODES: + base = extra = work; /* dummy value--not used */ + match = 20; + break; + case LENS: + base = lbase; + extra = lext; + match = 257; + break; + default: /* DISTS */ + base = dbase; + extra = dext; + match = 0; + } + + /* initialize state for loop */ + huff = 0; /* starting code */ + sym = 0; /* starting code symbol */ + len = min; /* starting code length */ + next = *table; /* current table to fill in */ + curr = root; /* current table index bits */ + drop = 0; /* current bits to drop from code for index */ + low = (unsigned)(-1); /* trigger new sub-table when len > root */ + used = 1U << root; /* use root table entries */ + mask = used - 1; /* mask for comparing low */ + + /* check available table space */ + if ((type == LENS && used > ENOUGH_LENS) || + (type == DISTS && used > ENOUGH_DISTS)) + return 1; + + /* process all codes and make table entries */ + for (;;) { + /* create table entry */ + here.bits = (unsigned char)(len - drop); + if (work[sym] + 1U < match) { + here.op = (unsigned char)0; + here.val = work[sym]; + } + else if (work[sym] >= match) { + here.op = (unsigned char)(extra[work[sym] - match]); + here.val = base[work[sym] - match]; + } + else { + here.op = (unsigned char)(32 + 64); /* end of block */ + here.val = 0; + } + + /* replicate for those indices with low len bits equal to huff */ + incr = 1U << (len - drop); + fill = 1U << curr; + min = fill; /* save offset to next table */ + do { + fill -= incr; + next[(huff >> drop) + fill] = here; + } while (fill != 0); + + /* backwards increment the len-bit code huff */ + incr = 1U << (len - 1); + while (huff & incr) + incr >>= 1; + if (incr != 0) { + huff &= incr - 1; + huff += incr; + } + else + huff = 0; + + /* go to next symbol, update count, len */ + sym++; + if (--(count[len]) == 0) { + if (len == max) break; + len = lens[work[sym]]; + } + + /* create new sub-table if needed */ + if (len > root && (huff & mask) != low) { + /* if first time, transition to sub-tables */ + if (drop == 0) + drop = root; + + /* increment past last table */ + next += min; /* here min is 1 << curr */ + + /* determine length of next table */ + curr = len - drop; + left = (int)(1 << curr); + while (curr + drop < max) { + left -= count[curr + drop]; + if (left <= 0) break; + curr++; + left <<= 1; + } + + /* check for enough space */ + used += 1U << curr; + if ((type == LENS && used > ENOUGH_LENS) || + (type == DISTS && used > ENOUGH_DISTS)) + return 1; + + /* point entry in root table to sub-table */ + low = huff & mask; + (*table)[low].op = (unsigned char)curr; + (*table)[low].bits = (unsigned char)root; + (*table)[low].val = (unsigned short)(next - *table); + } + } + + /* fill in remaining table entry if code is incomplete (guaranteed to have + at most one remaining entry, since if the code is incomplete, the + maximum code length that was allowed to get this far is one bit) */ + if (huff != 0) { + here.op = (unsigned char)64; /* invalid code marker */ + here.bits = (unsigned char)(len - drop); + here.val = (unsigned short)0; + next[huff] = here; + } + + /* set return parameters */ + *table += used; + *bits = root; + return 0; +} diff --git a/waterbox/nyma/zlib/inftrees.h b/waterbox/nyma/zlib/inftrees.h new file mode 100644 index 0000000000..baa53a0b1a --- /dev/null +++ b/waterbox/nyma/zlib/inftrees.h @@ -0,0 +1,62 @@ +/* inftrees.h -- header to use inftrees.c + * Copyright (C) 1995-2005, 2010 Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* WARNING: this file should *not* be used by applications. It is + part of the implementation of the compression library and is + subject to change. Applications should only use zlib.h. + */ + +/* Structure for decoding tables. Each entry provides either the + information needed to do the operation requested by the code that + indexed that table entry, or it provides a pointer to another + table that indexes more bits of the code. op indicates whether + the entry is a pointer to another table, a literal, a length or + distance, an end-of-block, or an invalid code. For a table + pointer, the low four bits of op is the number of index bits of + that table. For a length or distance, the low four bits of op + is the number of extra bits to get after the code. bits is + the number of bits in this code or part of the code to drop off + of the bit buffer. val is the actual byte to output in the case + of a literal, the base length or distance, or the offset from + the current table to the next table. Each entry is four bytes. */ +typedef struct { + unsigned char op; /* operation, extra bits, table bits */ + unsigned char bits; /* bits in this part of the code */ + unsigned short val; /* offset in table or code value */ +} code; + +/* op values as set by inflate_table(): + 00000000 - literal + 0000tttt - table link, tttt != 0 is the number of table index bits + 0001eeee - length or distance, eeee is the number of extra bits + 01100000 - end of block + 01000000 - invalid code + */ + +/* Maximum size of the dynamic table. The maximum number of code structures is + 1444, which is the sum of 852 for literal/length codes and 592 for distance + codes. These values were found by exhaustive searches using the program + examples/enough.c found in the zlib distribtution. The arguments to that + program are the number of symbols, the initial root table size, and the + maximum bit length of a code. "enough 286 9 15" for literal/length codes + returns returns 852, and "enough 30 6 15" for distance codes returns 592. + The initial root table size (9 or 6) is found in the fifth argument of the + inflate_table() calls in inflate.c and infback.c. If the root table size is + changed, then these maximum sizes would be need to be recalculated and + updated. */ +#define ENOUGH_LENS 852 +#define ENOUGH_DISTS 592 +#define ENOUGH (ENOUGH_LENS+ENOUGH_DISTS) + +/* Type of code to build for inflate_table() */ +typedef enum { + CODES, + LENS, + DISTS +} codetype; + +int ZLIB_INTERNAL inflate_table OF((codetype type, unsigned short FAR *lens, + unsigned codes, code FAR * FAR *table, + unsigned FAR *bits, unsigned short FAR *work)); diff --git a/waterbox/nyma/zlib/install-for-waterbox b/waterbox/nyma/zlib/install-for-waterbox new file mode 100644 index 0000000000..2d84b8e8ea --- /dev/null +++ b/waterbox/nyma/zlib/install-for-waterbox @@ -0,0 +1,8 @@ +#!/bin/sh +MYPATH="`dirname \"$0\"`" +SYSROOT="`realpath \"$MYPATH/../../sysroot\"`" + +cp zlib.h $SYSROOT/include +cp zconf.h $SYSROOT/include +cp libz.a $SYSROOT/lib +gcc-ranlib $SYSROOT/lib/libz.a diff --git a/waterbox/nyma/zlib/treebuild.xml b/waterbox/nyma/zlib/treebuild.xml new file mode 100644 index 0000000000..fd75525f99 --- /dev/null +++ b/waterbox/nyma/zlib/treebuild.xml @@ -0,0 +1,116 @@ + + + + zip compression library + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/waterbox/nyma/zlib/trees.c b/waterbox/nyma/zlib/trees.c new file mode 100644 index 0000000000..50cf4b4571 --- /dev/null +++ b/waterbox/nyma/zlib/trees.c @@ -0,0 +1,1203 @@ +/* trees.c -- output deflated data using Huffman coding + * Copyright (C) 1995-2017 Jean-loup Gailly + * detect_data_type() function provided freely by Cosmin Truta, 2006 + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* + * ALGORITHM + * + * The "deflation" process uses several Huffman trees. The more + * common source values are represented by shorter bit sequences. + * + * Each code tree is stored in a compressed form which is itself + * a Huffman encoding of the lengths of all the code strings (in + * ascending order by source values). The actual code strings are + * reconstructed from the lengths in the inflate process, as described + * in the deflate specification. + * + * REFERENCES + * + * Deutsch, L.P.,"'Deflate' Compressed Data Format Specification". + * Available in ftp.uu.net:/pub/archiving/zip/doc/deflate-1.1.doc + * + * Storer, James A. + * Data Compression: Methods and Theory, pp. 49-50. + * Computer Science Press, 1988. ISBN 0-7167-8156-5. + * + * Sedgewick, R. + * Algorithms, p290. + * Addison-Wesley, 1983. ISBN 0-201-06672-6. + */ + +/* @(#) $Id$ */ + +/* #define GEN_TREES_H */ + +#include "deflate.h" + +#ifdef ZLIB_DEBUG +# include +#endif + +/* =========================================================================== + * Constants + */ + +#define MAX_BL_BITS 7 +/* Bit length codes must not exceed MAX_BL_BITS bits */ + +#define END_BLOCK 256 +/* end of block literal code */ + +#define REP_3_6 16 +/* repeat previous bit length 3-6 times (2 bits of repeat count) */ + +#define REPZ_3_10 17 +/* repeat a zero length 3-10 times (3 bits of repeat count) */ + +#define REPZ_11_138 18 +/* repeat a zero length 11-138 times (7 bits of repeat count) */ + +local const int extra_lbits[LENGTH_CODES] /* extra bits for each length code */ + = {0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0}; + +local const int extra_dbits[D_CODES] /* extra bits for each distance code */ + = {0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13}; + +local const int extra_blbits[BL_CODES]/* extra bits for each bit length code */ + = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7}; + +local const uch bl_order[BL_CODES] + = {16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15}; +/* The lengths of the bit length codes are sent in order of decreasing + * probability, to avoid transmitting the lengths for unused bit length codes. + */ + +/* =========================================================================== + * Local data. These are initialized only once. + */ + +#define DIST_CODE_LEN 512 /* see definition of array dist_code below */ + +#if defined(GEN_TREES_H) || !defined(STDC) +/* non ANSI compilers may not accept trees.h */ + +local ct_data static_ltree[L_CODES+2]; +/* The static literal tree. Since the bit lengths are imposed, there is no + * need for the L_CODES extra codes used during heap construction. However + * The codes 286 and 287 are needed to build a canonical tree (see _tr_init + * below). + */ + +local ct_data static_dtree[D_CODES]; +/* The static distance tree. (Actually a trivial tree since all codes use + * 5 bits.) + */ + +uch _dist_code[DIST_CODE_LEN]; +/* Distance codes. The first 256 values correspond to the distances + * 3 .. 258, the last 256 values correspond to the top 8 bits of + * the 15 bit distances. + */ + +uch _length_code[MAX_MATCH-MIN_MATCH+1]; +/* length code for each normalized match length (0 == MIN_MATCH) */ + +local int base_length[LENGTH_CODES]; +/* First normalized length for each code (0 = MIN_MATCH) */ + +local int base_dist[D_CODES]; +/* First normalized distance for each code (0 = distance of 1) */ + +#else +# include "trees.h" +#endif /* GEN_TREES_H */ + +struct static_tree_desc_s { + const ct_data *static_tree; /* static tree or NULL */ + const intf *extra_bits; /* extra bits for each code or NULL */ + int extra_base; /* base index for extra_bits */ + int elems; /* max number of elements in the tree */ + int max_length; /* max bit length for the codes */ +}; + +local const static_tree_desc static_l_desc = +{static_ltree, extra_lbits, LITERALS+1, L_CODES, MAX_BITS}; + +local const static_tree_desc static_d_desc = +{static_dtree, extra_dbits, 0, D_CODES, MAX_BITS}; + +local const static_tree_desc static_bl_desc = +{(const ct_data *)0, extra_blbits, 0, BL_CODES, MAX_BL_BITS}; + +/* =========================================================================== + * Local (static) routines in this file. + */ + +local void tr_static_init OF((void)); +local void init_block OF((deflate_state *s)); +local void pqdownheap OF((deflate_state *s, ct_data *tree, int k)); +local void gen_bitlen OF((deflate_state *s, tree_desc *desc)); +local void gen_codes OF((ct_data *tree, int max_code, ushf *bl_count)); +local void build_tree OF((deflate_state *s, tree_desc *desc)); +local void scan_tree OF((deflate_state *s, ct_data *tree, int max_code)); +local void send_tree OF((deflate_state *s, ct_data *tree, int max_code)); +local int build_bl_tree OF((deflate_state *s)); +local void send_all_trees OF((deflate_state *s, int lcodes, int dcodes, + int blcodes)); +local void compress_block OF((deflate_state *s, const ct_data *ltree, + const ct_data *dtree)); +local int detect_data_type OF((deflate_state *s)); +local unsigned bi_reverse OF((unsigned value, int length)); +local void bi_windup OF((deflate_state *s)); +local void bi_flush OF((deflate_state *s)); + +#ifdef GEN_TREES_H +local void gen_trees_header OF((void)); +#endif + +#ifndef ZLIB_DEBUG +# define send_code(s, c, tree) send_bits(s, tree[c].Code, tree[c].Len) + /* Send a code of the given tree. c and tree must not have side effects */ + +#else /* !ZLIB_DEBUG */ +# define send_code(s, c, tree) \ + { if (z_verbose>2) fprintf(stderr,"\ncd %3d ",(c)); \ + send_bits(s, tree[c].Code, tree[c].Len); } +#endif + +/* =========================================================================== + * Output a short LSB first on the stream. + * IN assertion: there is enough room in pendingBuf. + */ +#define put_short(s, w) { \ + put_byte(s, (uch)((w) & 0xff)); \ + put_byte(s, (uch)((ush)(w) >> 8)); \ +} + +/* =========================================================================== + * Send a value on a given number of bits. + * IN assertion: length <= 16 and value fits in length bits. + */ +#ifdef ZLIB_DEBUG +local void send_bits OF((deflate_state *s, int value, int length)); + +local void send_bits(s, value, length) + deflate_state *s; + int value; /* value to send */ + int length; /* number of bits */ +{ + Tracevv((stderr," l %2d v %4x ", length, value)); + Assert(length > 0 && length <= 15, "invalid length"); + s->bits_sent += (ulg)length; + + /* If not enough room in bi_buf, use (valid) bits from bi_buf and + * (16 - bi_valid) bits from value, leaving (width - (16-bi_valid)) + * unused bits in value. + */ + if (s->bi_valid > (int)Buf_size - length) { + s->bi_buf |= (ush)value << s->bi_valid; + put_short(s, s->bi_buf); + s->bi_buf = (ush)value >> (Buf_size - s->bi_valid); + s->bi_valid += length - Buf_size; + } else { + s->bi_buf |= (ush)value << s->bi_valid; + s->bi_valid += length; + } +} +#else /* !ZLIB_DEBUG */ + +#define send_bits(s, value, length) \ +{ int len = length;\ + if (s->bi_valid > (int)Buf_size - len) {\ + int val = (int)value;\ + s->bi_buf |= (ush)val << s->bi_valid;\ + put_short(s, s->bi_buf);\ + s->bi_buf = (ush)val >> (Buf_size - s->bi_valid);\ + s->bi_valid += len - Buf_size;\ + } else {\ + s->bi_buf |= (ush)(value) << s->bi_valid;\ + s->bi_valid += len;\ + }\ +} +#endif /* ZLIB_DEBUG */ + + +/* the arguments must not have side effects */ + +/* =========================================================================== + * Initialize the various 'constant' tables. + */ +local void tr_static_init() +{ +#if defined(GEN_TREES_H) || !defined(STDC) + static int static_init_done = 0; + int n; /* iterates over tree elements */ + int bits; /* bit counter */ + int length; /* length value */ + int code; /* code value */ + int dist; /* distance index */ + ush bl_count[MAX_BITS+1]; + /* number of codes at each bit length for an optimal tree */ + + if (static_init_done) return; + + /* For some embedded targets, global variables are not initialized: */ +#ifdef NO_INIT_GLOBAL_POINTERS + static_l_desc.static_tree = static_ltree; + static_l_desc.extra_bits = extra_lbits; + static_d_desc.static_tree = static_dtree; + static_d_desc.extra_bits = extra_dbits; + static_bl_desc.extra_bits = extra_blbits; +#endif + + /* Initialize the mapping length (0..255) -> length code (0..28) */ + length = 0; + for (code = 0; code < LENGTH_CODES-1; code++) { + base_length[code] = length; + for (n = 0; n < (1< dist code (0..29) */ + dist = 0; + for (code = 0 ; code < 16; code++) { + base_dist[code] = dist; + for (n = 0; n < (1<>= 7; /* from now on, all distances are divided by 128 */ + for ( ; code < D_CODES; code++) { + base_dist[code] = dist << 7; + for (n = 0; n < (1<<(extra_dbits[code]-7)); n++) { + _dist_code[256 + dist++] = (uch)code; + } + } + Assert (dist == 256, "tr_static_init: 256+dist != 512"); + + /* Construct the codes of the static literal tree */ + for (bits = 0; bits <= MAX_BITS; bits++) bl_count[bits] = 0; + n = 0; + while (n <= 143) static_ltree[n++].Len = 8, bl_count[8]++; + while (n <= 255) static_ltree[n++].Len = 9, bl_count[9]++; + while (n <= 279) static_ltree[n++].Len = 7, bl_count[7]++; + while (n <= 287) static_ltree[n++].Len = 8, bl_count[8]++; + /* Codes 286 and 287 do not exist, but we must include them in the + * tree construction to get a canonical Huffman tree (longest code + * all ones) + */ + gen_codes((ct_data *)static_ltree, L_CODES+1, bl_count); + + /* The static distance tree is trivial: */ + for (n = 0; n < D_CODES; n++) { + static_dtree[n].Len = 5; + static_dtree[n].Code = bi_reverse((unsigned)n, 5); + } + static_init_done = 1; + +# ifdef GEN_TREES_H + gen_trees_header(); +# endif +#endif /* defined(GEN_TREES_H) || !defined(STDC) */ +} + +/* =========================================================================== + * Genererate the file trees.h describing the static trees. + */ +#ifdef GEN_TREES_H +# ifndef ZLIB_DEBUG +# include +# endif + +# define SEPARATOR(i, last, width) \ + ((i) == (last)? "\n};\n\n" : \ + ((i) % (width) == (width)-1 ? ",\n" : ", ")) + +void gen_trees_header() +{ + FILE *header = fopen("trees.h", "w"); + int i; + + Assert (header != NULL, "Can't open trees.h"); + fprintf(header, + "/* header created automatically with -DGEN_TREES_H */\n\n"); + + fprintf(header, "local const ct_data static_ltree[L_CODES+2] = {\n"); + for (i = 0; i < L_CODES+2; i++) { + fprintf(header, "{{%3u},{%3u}}%s", static_ltree[i].Code, + static_ltree[i].Len, SEPARATOR(i, L_CODES+1, 5)); + } + + fprintf(header, "local const ct_data static_dtree[D_CODES] = {\n"); + for (i = 0; i < D_CODES; i++) { + fprintf(header, "{{%2u},{%2u}}%s", static_dtree[i].Code, + static_dtree[i].Len, SEPARATOR(i, D_CODES-1, 5)); + } + + fprintf(header, "const uch ZLIB_INTERNAL _dist_code[DIST_CODE_LEN] = {\n"); + for (i = 0; i < DIST_CODE_LEN; i++) { + fprintf(header, "%2u%s", _dist_code[i], + SEPARATOR(i, DIST_CODE_LEN-1, 20)); + } + + fprintf(header, + "const uch ZLIB_INTERNAL _length_code[MAX_MATCH-MIN_MATCH+1]= {\n"); + for (i = 0; i < MAX_MATCH-MIN_MATCH+1; i++) { + fprintf(header, "%2u%s", _length_code[i], + SEPARATOR(i, MAX_MATCH-MIN_MATCH, 20)); + } + + fprintf(header, "local const int base_length[LENGTH_CODES] = {\n"); + for (i = 0; i < LENGTH_CODES; i++) { + fprintf(header, "%1u%s", base_length[i], + SEPARATOR(i, LENGTH_CODES-1, 20)); + } + + fprintf(header, "local const int base_dist[D_CODES] = {\n"); + for (i = 0; i < D_CODES; i++) { + fprintf(header, "%5u%s", base_dist[i], + SEPARATOR(i, D_CODES-1, 10)); + } + + fclose(header); +} +#endif /* GEN_TREES_H */ + +/* =========================================================================== + * Initialize the tree data structures for a new zlib stream. + */ +void ZLIB_INTERNAL _tr_init(s) + deflate_state *s; +{ + tr_static_init(); + + s->l_desc.dyn_tree = s->dyn_ltree; + s->l_desc.stat_desc = &static_l_desc; + + s->d_desc.dyn_tree = s->dyn_dtree; + s->d_desc.stat_desc = &static_d_desc; + + s->bl_desc.dyn_tree = s->bl_tree; + s->bl_desc.stat_desc = &static_bl_desc; + + s->bi_buf = 0; + s->bi_valid = 0; +#ifdef ZLIB_DEBUG + s->compressed_len = 0L; + s->bits_sent = 0L; +#endif + + /* Initialize the first block of the first file: */ + init_block(s); +} + +/* =========================================================================== + * Initialize a new block. + */ +local void init_block(s) + deflate_state *s; +{ + int n; /* iterates over tree elements */ + + /* Initialize the trees. */ + for (n = 0; n < L_CODES; n++) s->dyn_ltree[n].Freq = 0; + for (n = 0; n < D_CODES; n++) s->dyn_dtree[n].Freq = 0; + for (n = 0; n < BL_CODES; n++) s->bl_tree[n].Freq = 0; + + s->dyn_ltree[END_BLOCK].Freq = 1; + s->opt_len = s->static_len = 0L; + s->last_lit = s->matches = 0; +} + +#define SMALLEST 1 +/* Index within the heap array of least frequent node in the Huffman tree */ + + +/* =========================================================================== + * Remove the smallest element from the heap and recreate the heap with + * one less element. Updates heap and heap_len. + */ +#define pqremove(s, tree, top) \ +{\ + top = s->heap[SMALLEST]; \ + s->heap[SMALLEST] = s->heap[s->heap_len--]; \ + pqdownheap(s, tree, SMALLEST); \ +} + +/* =========================================================================== + * Compares to subtrees, using the tree depth as tie breaker when + * the subtrees have equal frequency. This minimizes the worst case length. + */ +#define smaller(tree, n, m, depth) \ + (tree[n].Freq < tree[m].Freq || \ + (tree[n].Freq == tree[m].Freq && depth[n] <= depth[m])) + +/* =========================================================================== + * Restore the heap property by moving down the tree starting at node k, + * exchanging a node with the smallest of its two sons if necessary, stopping + * when the heap property is re-established (each father smaller than its + * two sons). + */ +local void pqdownheap(s, tree, k) + deflate_state *s; + ct_data *tree; /* the tree to restore */ + int k; /* node to move down */ +{ + int v = s->heap[k]; + int j = k << 1; /* left son of k */ + while (j <= s->heap_len) { + /* Set j to the smallest of the two sons: */ + if (j < s->heap_len && + smaller(tree, s->heap[j+1], s->heap[j], s->depth)) { + j++; + } + /* Exit if v is smaller than both sons */ + if (smaller(tree, v, s->heap[j], s->depth)) break; + + /* Exchange v with the smallest son */ + s->heap[k] = s->heap[j]; k = j; + + /* And continue down the tree, setting j to the left son of k */ + j <<= 1; + } + s->heap[k] = v; +} + +/* =========================================================================== + * Compute the optimal bit lengths for a tree and update the total bit length + * for the current block. + * IN assertion: the fields freq and dad are set, heap[heap_max] and + * above are the tree nodes sorted by increasing frequency. + * OUT assertions: the field len is set to the optimal bit length, the + * array bl_count contains the frequencies for each bit length. + * The length opt_len is updated; static_len is also updated if stree is + * not null. + */ +local void gen_bitlen(s, desc) + deflate_state *s; + tree_desc *desc; /* the tree descriptor */ +{ + ct_data *tree = desc->dyn_tree; + int max_code = desc->max_code; + const ct_data *stree = desc->stat_desc->static_tree; + const intf *extra = desc->stat_desc->extra_bits; + int base = desc->stat_desc->extra_base; + int max_length = desc->stat_desc->max_length; + int h; /* heap index */ + int n, m; /* iterate over the tree elements */ + int bits; /* bit length */ + int xbits; /* extra bits */ + ush f; /* frequency */ + int overflow = 0; /* number of elements with bit length too large */ + + for (bits = 0; bits <= MAX_BITS; bits++) s->bl_count[bits] = 0; + + /* In a first pass, compute the optimal bit lengths (which may + * overflow in the case of the bit length tree). + */ + tree[s->heap[s->heap_max]].Len = 0; /* root of the heap */ + + for (h = s->heap_max+1; h < HEAP_SIZE; h++) { + n = s->heap[h]; + bits = tree[tree[n].Dad].Len + 1; + if (bits > max_length) bits = max_length, overflow++; + tree[n].Len = (ush)bits; + /* We overwrite tree[n].Dad which is no longer needed */ + + if (n > max_code) continue; /* not a leaf node */ + + s->bl_count[bits]++; + xbits = 0; + if (n >= base) xbits = extra[n-base]; + f = tree[n].Freq; + s->opt_len += (ulg)f * (unsigned)(bits + xbits); + if (stree) s->static_len += (ulg)f * (unsigned)(stree[n].Len + xbits); + } + if (overflow == 0) return; + + Tracev((stderr,"\nbit length overflow\n")); + /* This happens for example on obj2 and pic of the Calgary corpus */ + + /* Find the first bit length which could increase: */ + do { + bits = max_length-1; + while (s->bl_count[bits] == 0) bits--; + s->bl_count[bits]--; /* move one leaf down the tree */ + s->bl_count[bits+1] += 2; /* move one overflow item as its brother */ + s->bl_count[max_length]--; + /* The brother of the overflow item also moves one step up, + * but this does not affect bl_count[max_length] + */ + overflow -= 2; + } while (overflow > 0); + + /* Now recompute all bit lengths, scanning in increasing frequency. + * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all + * lengths instead of fixing only the wrong ones. This idea is taken + * from 'ar' written by Haruhiko Okumura.) + */ + for (bits = max_length; bits != 0; bits--) { + n = s->bl_count[bits]; + while (n != 0) { + m = s->heap[--h]; + if (m > max_code) continue; + if ((unsigned) tree[m].Len != (unsigned) bits) { + Tracev((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits)); + s->opt_len += ((ulg)bits - tree[m].Len) * tree[m].Freq; + tree[m].Len = (ush)bits; + } + n--; + } + } +} + +/* =========================================================================== + * Generate the codes for a given tree and bit counts (which need not be + * optimal). + * IN assertion: the array bl_count contains the bit length statistics for + * the given tree and the field len is set for all tree elements. + * OUT assertion: the field code is set for all tree elements of non + * zero code length. + */ +local void gen_codes (tree, max_code, bl_count) + ct_data *tree; /* the tree to decorate */ + int max_code; /* largest code with non zero frequency */ + ushf *bl_count; /* number of codes at each bit length */ +{ + ush next_code[MAX_BITS+1]; /* next code value for each bit length */ + unsigned code = 0; /* running code value */ + int bits; /* bit index */ + int n; /* code index */ + + /* The distribution counts are first used to generate the code values + * without bit reversal. + */ + for (bits = 1; bits <= MAX_BITS; bits++) { + code = (code + bl_count[bits-1]) << 1; + next_code[bits] = (ush)code; + } + /* Check that the bit counts in bl_count are consistent. The last code + * must be all ones. + */ + Assert (code + bl_count[MAX_BITS]-1 == (1<dyn_tree; + const ct_data *stree = desc->stat_desc->static_tree; + int elems = desc->stat_desc->elems; + int n, m; /* iterate over heap elements */ + int max_code = -1; /* largest code with non zero frequency */ + int node; /* new node being created */ + + /* Construct the initial heap, with least frequent element in + * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1]. + * heap[0] is not used. + */ + s->heap_len = 0, s->heap_max = HEAP_SIZE; + + for (n = 0; n < elems; n++) { + if (tree[n].Freq != 0) { + s->heap[++(s->heap_len)] = max_code = n; + s->depth[n] = 0; + } else { + tree[n].Len = 0; + } + } + + /* The pkzip format requires that at least one distance code exists, + * and that at least one bit should be sent even if there is only one + * possible code. So to avoid special checks later on we force at least + * two codes of non zero frequency. + */ + while (s->heap_len < 2) { + node = s->heap[++(s->heap_len)] = (max_code < 2 ? ++max_code : 0); + tree[node].Freq = 1; + s->depth[node] = 0; + s->opt_len--; if (stree) s->static_len -= stree[node].Len; + /* node is 0 or 1 so it does not have extra bits */ + } + desc->max_code = max_code; + + /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree, + * establish sub-heaps of increasing lengths: + */ + for (n = s->heap_len/2; n >= 1; n--) pqdownheap(s, tree, n); + + /* Construct the Huffman tree by repeatedly combining the least two + * frequent nodes. + */ + node = elems; /* next internal node of the tree */ + do { + pqremove(s, tree, n); /* n = node of least frequency */ + m = s->heap[SMALLEST]; /* m = node of next least frequency */ + + s->heap[--(s->heap_max)] = n; /* keep the nodes sorted by frequency */ + s->heap[--(s->heap_max)] = m; + + /* Create a new node father of n and m */ + tree[node].Freq = tree[n].Freq + tree[m].Freq; + s->depth[node] = (uch)((s->depth[n] >= s->depth[m] ? + s->depth[n] : s->depth[m]) + 1); + tree[n].Dad = tree[m].Dad = (ush)node; +#ifdef DUMP_BL_TREE + if (tree == s->bl_tree) { + fprintf(stderr,"\nnode %d(%d), sons %d(%d) %d(%d)", + node, tree[node].Freq, n, tree[n].Freq, m, tree[m].Freq); + } +#endif + /* and insert the new node in the heap */ + s->heap[SMALLEST] = node++; + pqdownheap(s, tree, SMALLEST); + + } while (s->heap_len >= 2); + + s->heap[--(s->heap_max)] = s->heap[SMALLEST]; + + /* At this point, the fields freq and dad are set. We can now + * generate the bit lengths. + */ + gen_bitlen(s, (tree_desc *)desc); + + /* The field len is now set, we can generate the bit codes */ + gen_codes ((ct_data *)tree, max_code, s->bl_count); +} + +/* =========================================================================== + * Scan a literal or distance tree to determine the frequencies of the codes + * in the bit length tree. + */ +local void scan_tree (s, tree, max_code) + deflate_state *s; + ct_data *tree; /* the tree to be scanned */ + int max_code; /* and its largest code of non zero frequency */ +{ + int n; /* iterates over all tree elements */ + int prevlen = -1; /* last emitted length */ + int curlen; /* length of current code */ + int nextlen = tree[0].Len; /* length of next code */ + int count = 0; /* repeat count of the current code */ + int max_count = 7; /* max repeat count */ + int min_count = 4; /* min repeat count */ + + if (nextlen == 0) max_count = 138, min_count = 3; + tree[max_code+1].Len = (ush)0xffff; /* guard */ + + for (n = 0; n <= max_code; n++) { + curlen = nextlen; nextlen = tree[n+1].Len; + if (++count < max_count && curlen == nextlen) { + continue; + } else if (count < min_count) { + s->bl_tree[curlen].Freq += count; + } else if (curlen != 0) { + if (curlen != prevlen) s->bl_tree[curlen].Freq++; + s->bl_tree[REP_3_6].Freq++; + } else if (count <= 10) { + s->bl_tree[REPZ_3_10].Freq++; + } else { + s->bl_tree[REPZ_11_138].Freq++; + } + count = 0; prevlen = curlen; + if (nextlen == 0) { + max_count = 138, min_count = 3; + } else if (curlen == nextlen) { + max_count = 6, min_count = 3; + } else { + max_count = 7, min_count = 4; + } + } +} + +/* =========================================================================== + * Send a literal or distance tree in compressed form, using the codes in + * bl_tree. + */ +local void send_tree (s, tree, max_code) + deflate_state *s; + ct_data *tree; /* the tree to be scanned */ + int max_code; /* and its largest code of non zero frequency */ +{ + int n; /* iterates over all tree elements */ + int prevlen = -1; /* last emitted length */ + int curlen; /* length of current code */ + int nextlen = tree[0].Len; /* length of next code */ + int count = 0; /* repeat count of the current code */ + int max_count = 7; /* max repeat count */ + int min_count = 4; /* min repeat count */ + + /* tree[max_code+1].Len = -1; */ /* guard already set */ + if (nextlen == 0) max_count = 138, min_count = 3; + + for (n = 0; n <= max_code; n++) { + curlen = nextlen; nextlen = tree[n+1].Len; + if (++count < max_count && curlen == nextlen) { + continue; + } else if (count < min_count) { + do { send_code(s, curlen, s->bl_tree); } while (--count != 0); + + } else if (curlen != 0) { + if (curlen != prevlen) { + send_code(s, curlen, s->bl_tree); count--; + } + Assert(count >= 3 && count <= 6, " 3_6?"); + send_code(s, REP_3_6, s->bl_tree); send_bits(s, count-3, 2); + + } else if (count <= 10) { + send_code(s, REPZ_3_10, s->bl_tree); send_bits(s, count-3, 3); + + } else { + send_code(s, REPZ_11_138, s->bl_tree); send_bits(s, count-11, 7); + } + count = 0; prevlen = curlen; + if (nextlen == 0) { + max_count = 138, min_count = 3; + } else if (curlen == nextlen) { + max_count = 6, min_count = 3; + } else { + max_count = 7, min_count = 4; + } + } +} + +/* =========================================================================== + * Construct the Huffman tree for the bit lengths and return the index in + * bl_order of the last bit length code to send. + */ +local int build_bl_tree(s) + deflate_state *s; +{ + int max_blindex; /* index of last bit length code of non zero freq */ + + /* Determine the bit length frequencies for literal and distance trees */ + scan_tree(s, (ct_data *)s->dyn_ltree, s->l_desc.max_code); + scan_tree(s, (ct_data *)s->dyn_dtree, s->d_desc.max_code); + + /* Build the bit length tree: */ + build_tree(s, (tree_desc *)(&(s->bl_desc))); + /* opt_len now includes the length of the tree representations, except + * the lengths of the bit lengths codes and the 5+5+4 bits for the counts. + */ + + /* Determine the number of bit length codes to send. The pkzip format + * requires that at least 4 bit length codes be sent. (appnote.txt says + * 3 but the actual value used is 4.) + */ + for (max_blindex = BL_CODES-1; max_blindex >= 3; max_blindex--) { + if (s->bl_tree[bl_order[max_blindex]].Len != 0) break; + } + /* Update opt_len to include the bit length tree and counts */ + s->opt_len += 3*((ulg)max_blindex+1) + 5+5+4; + Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld", + s->opt_len, s->static_len)); + + return max_blindex; +} + +/* =========================================================================== + * Send the header for a block using dynamic Huffman trees: the counts, the + * lengths of the bit length codes, the literal tree and the distance tree. + * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4. + */ +local void send_all_trees(s, lcodes, dcodes, blcodes) + deflate_state *s; + int lcodes, dcodes, blcodes; /* number of codes for each tree */ +{ + int rank; /* index in bl_order */ + + Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes"); + Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES, + "too many codes"); + Tracev((stderr, "\nbl counts: ")); + send_bits(s, lcodes-257, 5); /* not +255 as stated in appnote.txt */ + send_bits(s, dcodes-1, 5); + send_bits(s, blcodes-4, 4); /* not -3 as stated in appnote.txt */ + for (rank = 0; rank < blcodes; rank++) { + Tracev((stderr, "\nbl code %2d ", bl_order[rank])); + send_bits(s, s->bl_tree[bl_order[rank]].Len, 3); + } + Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent)); + + send_tree(s, (ct_data *)s->dyn_ltree, lcodes-1); /* literal tree */ + Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent)); + + send_tree(s, (ct_data *)s->dyn_dtree, dcodes-1); /* distance tree */ + Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent)); +} + +/* =========================================================================== + * Send a stored block + */ +void ZLIB_INTERNAL _tr_stored_block(s, buf, stored_len, last) + deflate_state *s; + charf *buf; /* input block */ + ulg stored_len; /* length of input block */ + int last; /* one if this is the last block for a file */ +{ + send_bits(s, (STORED_BLOCK<<1)+last, 3); /* send block type */ + bi_windup(s); /* align on byte boundary */ + put_short(s, (ush)stored_len); + put_short(s, (ush)~stored_len); + zmemcpy(s->pending_buf + s->pending, (Bytef *)buf, stored_len); + s->pending += stored_len; +#ifdef ZLIB_DEBUG + s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L; + s->compressed_len += (stored_len + 4) << 3; + s->bits_sent += 2*16; + s->bits_sent += stored_len<<3; +#endif +} + +/* =========================================================================== + * Flush the bits in the bit buffer to pending output (leaves at most 7 bits) + */ +void ZLIB_INTERNAL _tr_flush_bits(s) + deflate_state *s; +{ + bi_flush(s); +} + +/* =========================================================================== + * Send one empty static block to give enough lookahead for inflate. + * This takes 10 bits, of which 7 may remain in the bit buffer. + */ +void ZLIB_INTERNAL _tr_align(s) + deflate_state *s; +{ + send_bits(s, STATIC_TREES<<1, 3); + send_code(s, END_BLOCK, static_ltree); +#ifdef ZLIB_DEBUG + s->compressed_len += 10L; /* 3 for block type, 7 for EOB */ +#endif + bi_flush(s); +} + +/* =========================================================================== + * Determine the best encoding for the current block: dynamic trees, static + * trees or store, and write out the encoded block. + */ +void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last) + deflate_state *s; + charf *buf; /* input block, or NULL if too old */ + ulg stored_len; /* length of input block */ + int last; /* one if this is the last block for a file */ +{ + ulg opt_lenb, static_lenb; /* opt_len and static_len in bytes */ + int max_blindex = 0; /* index of last bit length code of non zero freq */ + + /* Build the Huffman trees unless a stored block is forced */ + if (s->level > 0) { + + /* Check if the file is binary or text */ + if (s->strm->data_type == Z_UNKNOWN) + s->strm->data_type = detect_data_type(s); + + /* Construct the literal and distance trees */ + build_tree(s, (tree_desc *)(&(s->l_desc))); + Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len, + s->static_len)); + + build_tree(s, (tree_desc *)(&(s->d_desc))); + Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len, + s->static_len)); + /* At this point, opt_len and static_len are the total bit lengths of + * the compressed block data, excluding the tree representations. + */ + + /* Build the bit length tree for the above two trees, and get the index + * in bl_order of the last bit length code to send. + */ + max_blindex = build_bl_tree(s); + + /* Determine the best encoding. Compute the block lengths in bytes. */ + opt_lenb = (s->opt_len+3+7)>>3; + static_lenb = (s->static_len+3+7)>>3; + + Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ", + opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len, + s->last_lit)); + + if (static_lenb <= opt_lenb) opt_lenb = static_lenb; + + } else { + Assert(buf != (char*)0, "lost buf"); + opt_lenb = static_lenb = stored_len + 5; /* force a stored block */ + } + +#ifdef FORCE_STORED + if (buf != (char*)0) { /* force stored block */ +#else + if (stored_len+4 <= opt_lenb && buf != (char*)0) { + /* 4: two words for the lengths */ +#endif + /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE. + * Otherwise we can't have processed more than WSIZE input bytes since + * the last block flush, because compression would have been + * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to + * transform a block into a stored block. + */ + _tr_stored_block(s, buf, stored_len, last); + +#ifdef FORCE_STATIC + } else if (static_lenb >= 0) { /* force static trees */ +#else + } else if (s->strategy == Z_FIXED || static_lenb == opt_lenb) { +#endif + send_bits(s, (STATIC_TREES<<1)+last, 3); + compress_block(s, (const ct_data *)static_ltree, + (const ct_data *)static_dtree); +#ifdef ZLIB_DEBUG + s->compressed_len += 3 + s->static_len; +#endif + } else { + send_bits(s, (DYN_TREES<<1)+last, 3); + send_all_trees(s, s->l_desc.max_code+1, s->d_desc.max_code+1, + max_blindex+1); + compress_block(s, (const ct_data *)s->dyn_ltree, + (const ct_data *)s->dyn_dtree); +#ifdef ZLIB_DEBUG + s->compressed_len += 3 + s->opt_len; +#endif + } + Assert (s->compressed_len == s->bits_sent, "bad compressed size"); + /* The above check is made mod 2^32, for files larger than 512 MB + * and uLong implemented on 32 bits. + */ + init_block(s); + + if (last) { + bi_windup(s); +#ifdef ZLIB_DEBUG + s->compressed_len += 7; /* align on byte boundary */ +#endif + } + Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3, + s->compressed_len-7*last)); +} + +/* =========================================================================== + * Save the match info and tally the frequency counts. Return true if + * the current block must be flushed. + */ +int ZLIB_INTERNAL _tr_tally (s, dist, lc) + deflate_state *s; + unsigned dist; /* distance of matched string */ + unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */ +{ + s->d_buf[s->last_lit] = (ush)dist; + s->l_buf[s->last_lit++] = (uch)lc; + if (dist == 0) { + /* lc is the unmatched char */ + s->dyn_ltree[lc].Freq++; + } else { + s->matches++; + /* Here, lc is the match length - MIN_MATCH */ + dist--; /* dist = match distance - 1 */ + Assert((ush)dist < (ush)MAX_DIST(s) && + (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) && + (ush)d_code(dist) < (ush)D_CODES, "_tr_tally: bad match"); + + s->dyn_ltree[_length_code[lc]+LITERALS+1].Freq++; + s->dyn_dtree[d_code(dist)].Freq++; + } + +#ifdef TRUNCATE_BLOCK + /* Try to guess if it is profitable to stop the current block here */ + if ((s->last_lit & 0x1fff) == 0 && s->level > 2) { + /* Compute an upper bound for the compressed length */ + ulg out_length = (ulg)s->last_lit*8L; + ulg in_length = (ulg)((long)s->strstart - s->block_start); + int dcode; + for (dcode = 0; dcode < D_CODES; dcode++) { + out_length += (ulg)s->dyn_dtree[dcode].Freq * + (5L+extra_dbits[dcode]); + } + out_length >>= 3; + Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ", + s->last_lit, in_length, out_length, + 100L - out_length*100L/in_length)); + if (s->matches < s->last_lit/2 && out_length < in_length/2) return 1; + } +#endif + return (s->last_lit == s->lit_bufsize-1); + /* We avoid equality with lit_bufsize because of wraparound at 64K + * on 16 bit machines and because stored blocks are restricted to + * 64K-1 bytes. + */ +} + +/* =========================================================================== + * Send the block data compressed using the given Huffman trees + */ +local void compress_block(s, ltree, dtree) + deflate_state *s; + const ct_data *ltree; /* literal tree */ + const ct_data *dtree; /* distance tree */ +{ + unsigned dist; /* distance of matched string */ + int lc; /* match length or unmatched char (if dist == 0) */ + unsigned lx = 0; /* running index in l_buf */ + unsigned code; /* the code to send */ + int extra; /* number of extra bits to send */ + + if (s->last_lit != 0) do { + dist = s->d_buf[lx]; + lc = s->l_buf[lx++]; + if (dist == 0) { + send_code(s, lc, ltree); /* send a literal byte */ + Tracecv(isgraph(lc), (stderr," '%c' ", lc)); + } else { + /* Here, lc is the match length - MIN_MATCH */ + code = _length_code[lc]; + send_code(s, code+LITERALS+1, ltree); /* send the length code */ + extra = extra_lbits[code]; + if (extra != 0) { + lc -= base_length[code]; + send_bits(s, lc, extra); /* send the extra length bits */ + } + dist--; /* dist is now the match distance - 1 */ + code = d_code(dist); + Assert (code < D_CODES, "bad d_code"); + + send_code(s, code, dtree); /* send the distance code */ + extra = extra_dbits[code]; + if (extra != 0) { + dist -= (unsigned)base_dist[code]; + send_bits(s, dist, extra); /* send the extra distance bits */ + } + } /* literal or match pair ? */ + + /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */ + Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx, + "pendingBuf overflow"); + + } while (lx < s->last_lit); + + send_code(s, END_BLOCK, ltree); +} + +/* =========================================================================== + * Check if the data type is TEXT or BINARY, using the following algorithm: + * - TEXT if the two conditions below are satisfied: + * a) There are no non-portable control characters belonging to the + * "black list" (0..6, 14..25, 28..31). + * b) There is at least one printable character belonging to the + * "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255). + * - BINARY otherwise. + * - The following partially-portable control characters form a + * "gray list" that is ignored in this detection algorithm: + * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}). + * IN assertion: the fields Freq of dyn_ltree are set. + */ +local int detect_data_type(s) + deflate_state *s; +{ + /* black_mask is the bit mask of black-listed bytes + * set bits 0..6, 14..25, and 28..31 + * 0xf3ffc07f = binary 11110011111111111100000001111111 + */ + unsigned long black_mask = 0xf3ffc07fUL; + int n; + + /* Check for non-textual ("black-listed") bytes. */ + for (n = 0; n <= 31; n++, black_mask >>= 1) + if ((black_mask & 1) && (s->dyn_ltree[n].Freq != 0)) + return Z_BINARY; + + /* Check for textual ("white-listed") bytes. */ + if (s->dyn_ltree[9].Freq != 0 || s->dyn_ltree[10].Freq != 0 + || s->dyn_ltree[13].Freq != 0) + return Z_TEXT; + for (n = 32; n < LITERALS; n++) + if (s->dyn_ltree[n].Freq != 0) + return Z_TEXT; + + /* There are no "black-listed" or "white-listed" bytes: + * this stream either is empty or has tolerated ("gray-listed") bytes only. + */ + return Z_BINARY; +} + +/* =========================================================================== + * Reverse the first len bits of a code, using straightforward code (a faster + * method would use a table) + * IN assertion: 1 <= len <= 15 + */ +local unsigned bi_reverse(code, len) + unsigned code; /* the value to invert */ + int len; /* its bit length */ +{ + register unsigned res = 0; + do { + res |= code & 1; + code >>= 1, res <<= 1; + } while (--len > 0); + return res >> 1; +} + +/* =========================================================================== + * Flush the bit buffer, keeping at most 7 bits in it. + */ +local void bi_flush(s) + deflate_state *s; +{ + if (s->bi_valid == 16) { + put_short(s, s->bi_buf); + s->bi_buf = 0; + s->bi_valid = 0; + } else if (s->bi_valid >= 8) { + put_byte(s, (Byte)s->bi_buf); + s->bi_buf >>= 8; + s->bi_valid -= 8; + } +} + +/* =========================================================================== + * Flush the bit buffer and align the output on a byte boundary + */ +local void bi_windup(s) + deflate_state *s; +{ + if (s->bi_valid > 8) { + put_short(s, s->bi_buf); + } else if (s->bi_valid > 0) { + put_byte(s, (Byte)s->bi_buf); + } + s->bi_buf = 0; + s->bi_valid = 0; +#ifdef ZLIB_DEBUG + s->bits_sent = (s->bits_sent+7) & ~7; +#endif +} diff --git a/waterbox/nyma/zlib/trees.h b/waterbox/nyma/zlib/trees.h new file mode 100644 index 0000000000..d35639d82a --- /dev/null +++ b/waterbox/nyma/zlib/trees.h @@ -0,0 +1,128 @@ +/* header created automatically with -DGEN_TREES_H */ + +local const ct_data static_ltree[L_CODES+2] = { +{{ 12},{ 8}}, {{140},{ 8}}, {{ 76},{ 8}}, {{204},{ 8}}, {{ 44},{ 8}}, +{{172},{ 8}}, {{108},{ 8}}, {{236},{ 8}}, {{ 28},{ 8}}, {{156},{ 8}}, +{{ 92},{ 8}}, {{220},{ 8}}, {{ 60},{ 8}}, {{188},{ 8}}, {{124},{ 8}}, +{{252},{ 8}}, {{ 2},{ 8}}, {{130},{ 8}}, {{ 66},{ 8}}, {{194},{ 8}}, +{{ 34},{ 8}}, {{162},{ 8}}, {{ 98},{ 8}}, {{226},{ 8}}, {{ 18},{ 8}}, +{{146},{ 8}}, {{ 82},{ 8}}, {{210},{ 8}}, {{ 50},{ 8}}, {{178},{ 8}}, +{{114},{ 8}}, {{242},{ 8}}, {{ 10},{ 8}}, {{138},{ 8}}, {{ 74},{ 8}}, +{{202},{ 8}}, {{ 42},{ 8}}, {{170},{ 8}}, {{106},{ 8}}, {{234},{ 8}}, +{{ 26},{ 8}}, {{154},{ 8}}, {{ 90},{ 8}}, {{218},{ 8}}, {{ 58},{ 8}}, +{{186},{ 8}}, {{122},{ 8}}, {{250},{ 8}}, {{ 6},{ 8}}, {{134},{ 8}}, +{{ 70},{ 8}}, {{198},{ 8}}, {{ 38},{ 8}}, {{166},{ 8}}, {{102},{ 8}}, +{{230},{ 8}}, {{ 22},{ 8}}, {{150},{ 8}}, {{ 86},{ 8}}, {{214},{ 8}}, +{{ 54},{ 8}}, {{182},{ 8}}, {{118},{ 8}}, {{246},{ 8}}, {{ 14},{ 8}}, +{{142},{ 8}}, {{ 78},{ 8}}, {{206},{ 8}}, {{ 46},{ 8}}, {{174},{ 8}}, +{{110},{ 8}}, {{238},{ 8}}, {{ 30},{ 8}}, {{158},{ 8}}, {{ 94},{ 8}}, +{{222},{ 8}}, {{ 62},{ 8}}, {{190},{ 8}}, {{126},{ 8}}, {{254},{ 8}}, +{{ 1},{ 8}}, {{129},{ 8}}, {{ 65},{ 8}}, {{193},{ 8}}, {{ 33},{ 8}}, +{{161},{ 8}}, {{ 97},{ 8}}, {{225},{ 8}}, {{ 17},{ 8}}, {{145},{ 8}}, +{{ 81},{ 8}}, {{209},{ 8}}, {{ 49},{ 8}}, {{177},{ 8}}, {{113},{ 8}}, +{{241},{ 8}}, {{ 9},{ 8}}, {{137},{ 8}}, {{ 73},{ 8}}, {{201},{ 8}}, +{{ 41},{ 8}}, {{169},{ 8}}, {{105},{ 8}}, {{233},{ 8}}, {{ 25},{ 8}}, +{{153},{ 8}}, {{ 89},{ 8}}, {{217},{ 8}}, {{ 57},{ 8}}, {{185},{ 8}}, +{{121},{ 8}}, {{249},{ 8}}, {{ 5},{ 8}}, {{133},{ 8}}, {{ 69},{ 8}}, +{{197},{ 8}}, {{ 37},{ 8}}, {{165},{ 8}}, {{101},{ 8}}, {{229},{ 8}}, +{{ 21},{ 8}}, {{149},{ 8}}, {{ 85},{ 8}}, {{213},{ 8}}, {{ 53},{ 8}}, +{{181},{ 8}}, {{117},{ 8}}, {{245},{ 8}}, {{ 13},{ 8}}, {{141},{ 8}}, +{{ 77},{ 8}}, {{205},{ 8}}, {{ 45},{ 8}}, {{173},{ 8}}, {{109},{ 8}}, +{{237},{ 8}}, {{ 29},{ 8}}, {{157},{ 8}}, {{ 93},{ 8}}, {{221},{ 8}}, +{{ 61},{ 8}}, {{189},{ 8}}, {{125},{ 8}}, {{253},{ 8}}, {{ 19},{ 9}}, +{{275},{ 9}}, {{147},{ 9}}, {{403},{ 9}}, {{ 83},{ 9}}, {{339},{ 9}}, +{{211},{ 9}}, {{467},{ 9}}, {{ 51},{ 9}}, {{307},{ 9}}, {{179},{ 9}}, +{{435},{ 9}}, {{115},{ 9}}, {{371},{ 9}}, {{243},{ 9}}, {{499},{ 9}}, +{{ 11},{ 9}}, {{267},{ 9}}, {{139},{ 9}}, {{395},{ 9}}, {{ 75},{ 9}}, +{{331},{ 9}}, {{203},{ 9}}, {{459},{ 9}}, {{ 43},{ 9}}, {{299},{ 9}}, +{{171},{ 9}}, {{427},{ 9}}, {{107},{ 9}}, {{363},{ 9}}, {{235},{ 9}}, +{{491},{ 9}}, {{ 27},{ 9}}, {{283},{ 9}}, {{155},{ 9}}, {{411},{ 9}}, +{{ 91},{ 9}}, {{347},{ 9}}, {{219},{ 9}}, {{475},{ 9}}, {{ 59},{ 9}}, +{{315},{ 9}}, {{187},{ 9}}, {{443},{ 9}}, {{123},{ 9}}, {{379},{ 9}}, +{{251},{ 9}}, {{507},{ 9}}, {{ 7},{ 9}}, {{263},{ 9}}, {{135},{ 9}}, +{{391},{ 9}}, {{ 71},{ 9}}, {{327},{ 9}}, {{199},{ 9}}, {{455},{ 9}}, +{{ 39},{ 9}}, {{295},{ 9}}, {{167},{ 9}}, {{423},{ 9}}, {{103},{ 9}}, +{{359},{ 9}}, {{231},{ 9}}, {{487},{ 9}}, {{ 23},{ 9}}, {{279},{ 9}}, +{{151},{ 9}}, {{407},{ 9}}, {{ 87},{ 9}}, {{343},{ 9}}, {{215},{ 9}}, +{{471},{ 9}}, {{ 55},{ 9}}, {{311},{ 9}}, {{183},{ 9}}, {{439},{ 9}}, +{{119},{ 9}}, {{375},{ 9}}, {{247},{ 9}}, {{503},{ 9}}, {{ 15},{ 9}}, +{{271},{ 9}}, {{143},{ 9}}, {{399},{ 9}}, {{ 79},{ 9}}, {{335},{ 9}}, +{{207},{ 9}}, {{463},{ 9}}, {{ 47},{ 9}}, {{303},{ 9}}, {{175},{ 9}}, +{{431},{ 9}}, {{111},{ 9}}, {{367},{ 9}}, {{239},{ 9}}, {{495},{ 9}}, +{{ 31},{ 9}}, {{287},{ 9}}, {{159},{ 9}}, {{415},{ 9}}, {{ 95},{ 9}}, +{{351},{ 9}}, {{223},{ 9}}, {{479},{ 9}}, {{ 63},{ 9}}, {{319},{ 9}}, +{{191},{ 9}}, {{447},{ 9}}, {{127},{ 9}}, {{383},{ 9}}, {{255},{ 9}}, +{{511},{ 9}}, {{ 0},{ 7}}, {{ 64},{ 7}}, {{ 32},{ 7}}, {{ 96},{ 7}}, +{{ 16},{ 7}}, {{ 80},{ 7}}, {{ 48},{ 7}}, {{112},{ 7}}, {{ 8},{ 7}}, +{{ 72},{ 7}}, {{ 40},{ 7}}, {{104},{ 7}}, {{ 24},{ 7}}, {{ 88},{ 7}}, +{{ 56},{ 7}}, {{120},{ 7}}, {{ 4},{ 7}}, {{ 68},{ 7}}, {{ 36},{ 7}}, +{{100},{ 7}}, {{ 20},{ 7}}, {{ 84},{ 7}}, {{ 52},{ 7}}, {{116},{ 7}}, +{{ 3},{ 8}}, {{131},{ 8}}, {{ 67},{ 8}}, {{195},{ 8}}, {{ 35},{ 8}}, +{{163},{ 8}}, {{ 99},{ 8}}, {{227},{ 8}} +}; + +local const ct_data static_dtree[D_CODES] = { +{{ 0},{ 5}}, {{16},{ 5}}, {{ 8},{ 5}}, {{24},{ 5}}, {{ 4},{ 5}}, +{{20},{ 5}}, {{12},{ 5}}, {{28},{ 5}}, {{ 2},{ 5}}, {{18},{ 5}}, +{{10},{ 5}}, {{26},{ 5}}, {{ 6},{ 5}}, {{22},{ 5}}, {{14},{ 5}}, +{{30},{ 5}}, {{ 1},{ 5}}, {{17},{ 5}}, {{ 9},{ 5}}, {{25},{ 5}}, +{{ 5},{ 5}}, {{21},{ 5}}, {{13},{ 5}}, {{29},{ 5}}, {{ 3},{ 5}}, +{{19},{ 5}}, {{11},{ 5}}, {{27},{ 5}}, {{ 7},{ 5}}, {{23},{ 5}} +}; + +const uch ZLIB_INTERNAL _dist_code[DIST_CODE_LEN] = { + 0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, + 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, +10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, +11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, +12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, +13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, +13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, +14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, +14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, +14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, +15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, +15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, +15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 16, 17, +18, 18, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, +23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, +24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, +26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, +26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, +27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, +27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, +28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, +28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, +28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, +29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, +29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, +29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29 +}; + +const uch ZLIB_INTERNAL _length_code[MAX_MATCH-MIN_MATCH+1]= { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12, +13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, +17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, +19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, +21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, +22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, +23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, +24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, +25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, +25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, +26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, +26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, +27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28 +}; + +local const int base_length[LENGTH_CODES] = { +0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, +64, 80, 96, 112, 128, 160, 192, 224, 0 +}; + +local const int base_dist[D_CODES] = { + 0, 1, 2, 3, 4, 6, 8, 12, 16, 24, + 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, + 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576 +}; + diff --git a/waterbox/nyma/zlib/uncompr.c b/waterbox/nyma/zlib/uncompr.c new file mode 100644 index 0000000000..f03a1a865e --- /dev/null +++ b/waterbox/nyma/zlib/uncompr.c @@ -0,0 +1,93 @@ +/* uncompr.c -- decompress a memory buffer + * Copyright (C) 1995-2003, 2010, 2014, 2016 Jean-loup Gailly, Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* @(#) $Id$ */ + +#define ZLIB_INTERNAL +#include "zlib.h" + +/* =========================================================================== + Decompresses the source buffer into the destination buffer. *sourceLen is + the byte length of the source buffer. Upon entry, *destLen is the total size + of the destination buffer, which must be large enough to hold the entire + uncompressed data. (The size of the uncompressed data must have been saved + previously by the compressor and transmitted to the decompressor by some + mechanism outside the scope of this compression library.) Upon exit, + *destLen is the size of the decompressed data and *sourceLen is the number + of source bytes consumed. Upon return, source + *sourceLen points to the + first unused input byte. + + uncompress returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_BUF_ERROR if there was not enough room in the output buffer, or + Z_DATA_ERROR if the input data was corrupted, including if the input data is + an incomplete zlib stream. +*/ +int ZEXPORT uncompress2 (dest, destLen, source, sourceLen) + Bytef *dest; + uLongf *destLen; + const Bytef *source; + uLong *sourceLen; +{ + z_stream stream; + int err; + const uInt max = (uInt)-1; + uLong len, left; + Byte buf[1]; /* for detection of incomplete stream when *destLen == 0 */ + + len = *sourceLen; + if (*destLen) { + left = *destLen; + *destLen = 0; + } + else { + left = 1; + dest = buf; + } + + stream.next_in = (z_const Bytef *)source; + stream.avail_in = 0; + stream.zalloc = (alloc_func)0; + stream.zfree = (free_func)0; + stream.opaque = (voidpf)0; + + err = inflateInit(&stream); + if (err != Z_OK) return err; + + stream.next_out = dest; + stream.avail_out = 0; + + do { + if (stream.avail_out == 0) { + stream.avail_out = left > (uLong)max ? max : (uInt)left; + left -= stream.avail_out; + } + if (stream.avail_in == 0) { + stream.avail_in = len > (uLong)max ? max : (uInt)len; + len -= stream.avail_in; + } + err = inflate(&stream, Z_NO_FLUSH); + } while (err == Z_OK); + + *sourceLen -= len + stream.avail_in; + if (dest != buf) + *destLen = stream.total_out; + else if (stream.total_out && err == Z_BUF_ERROR) + left = 1; + + inflateEnd(&stream); + return err == Z_STREAM_END ? Z_OK : + err == Z_NEED_DICT ? Z_DATA_ERROR : + err == Z_BUF_ERROR && left + stream.avail_out ? Z_DATA_ERROR : + err; +} + +int ZEXPORT uncompress (dest, destLen, source, sourceLen) + Bytef *dest; + uLongf *destLen; + const Bytef *source; + uLong sourceLen; +{ + return uncompress2(dest, destLen, source, &sourceLen); +} diff --git a/waterbox/nyma/zlib/zconf.h b/waterbox/nyma/zlib/zconf.h new file mode 100644 index 0000000000..77398c11a1 --- /dev/null +++ b/waterbox/nyma/zlib/zconf.h @@ -0,0 +1,534 @@ +/* zconf.h -- configuration of the zlib compression library + * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* @(#) $Id$ */ + +#ifndef ZCONF_H +#define ZCONF_H + +/* + * If you *really* need a unique prefix for all types and library functions, + * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. + * Even better than compiling with -DZ_PREFIX would be to use configure to set + * this permanently in zconf.h using "./configure --zprefix". + */ +#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */ +# define Z_PREFIX_SET + +/* all linked symbols and init macros */ +# define _dist_code z__dist_code +# define _length_code z__length_code +# define _tr_align z__tr_align +# define _tr_flush_bits z__tr_flush_bits +# define _tr_flush_block z__tr_flush_block +# define _tr_init z__tr_init +# define _tr_stored_block z__tr_stored_block +# define _tr_tally z__tr_tally +# define adler32 z_adler32 +# define adler32_combine z_adler32_combine +# define adler32_combine64 z_adler32_combine64 +# define adler32_z z_adler32_z +# ifndef Z_SOLO +# define compress z_compress +# define compress2 z_compress2 +# define compressBound z_compressBound +# endif +# define crc32 z_crc32 +# define crc32_combine z_crc32_combine +# define crc32_combine64 z_crc32_combine64 +# define crc32_z z_crc32_z +# define deflate z_deflate +# define deflateBound z_deflateBound +# define deflateCopy z_deflateCopy +# define deflateEnd z_deflateEnd +# define deflateGetDictionary z_deflateGetDictionary +# define deflateInit z_deflateInit +# define deflateInit2 z_deflateInit2 +# define deflateInit2_ z_deflateInit2_ +# define deflateInit_ z_deflateInit_ +# define deflateParams z_deflateParams +# define deflatePending z_deflatePending +# define deflatePrime z_deflatePrime +# define deflateReset z_deflateReset +# define deflateResetKeep z_deflateResetKeep +# define deflateSetDictionary z_deflateSetDictionary +# define deflateSetHeader z_deflateSetHeader +# define deflateTune z_deflateTune +# define deflate_copyright z_deflate_copyright +# define get_crc_table z_get_crc_table +# ifndef Z_SOLO +# define gz_error z_gz_error +# define gz_intmax z_gz_intmax +# define gz_strwinerror z_gz_strwinerror +# define gzbuffer z_gzbuffer +# define gzclearerr z_gzclearerr +# define gzclose z_gzclose +# define gzclose_r z_gzclose_r +# define gzclose_w z_gzclose_w +# define gzdirect z_gzdirect +# define gzdopen z_gzdopen +# define gzeof z_gzeof +# define gzerror z_gzerror +# define gzflush z_gzflush +# define gzfread z_gzfread +# define gzfwrite z_gzfwrite +# define gzgetc z_gzgetc +# define gzgetc_ z_gzgetc_ +# define gzgets z_gzgets +# define gzoffset z_gzoffset +# define gzoffset64 z_gzoffset64 +# define gzopen z_gzopen +# define gzopen64 z_gzopen64 +# ifdef _WIN32 +# define gzopen_w z_gzopen_w +# endif +# define gzprintf z_gzprintf +# define gzputc z_gzputc +# define gzputs z_gzputs +# define gzread z_gzread +# define gzrewind z_gzrewind +# define gzseek z_gzseek +# define gzseek64 z_gzseek64 +# define gzsetparams z_gzsetparams +# define gztell z_gztell +# define gztell64 z_gztell64 +# define gzungetc z_gzungetc +# define gzvprintf z_gzvprintf +# define gzwrite z_gzwrite +# endif +# define inflate z_inflate +# define inflateBack z_inflateBack +# define inflateBackEnd z_inflateBackEnd +# define inflateBackInit z_inflateBackInit +# define inflateBackInit_ z_inflateBackInit_ +# define inflateCodesUsed z_inflateCodesUsed +# define inflateCopy z_inflateCopy +# define inflateEnd z_inflateEnd +# define inflateGetDictionary z_inflateGetDictionary +# define inflateGetHeader z_inflateGetHeader +# define inflateInit z_inflateInit +# define inflateInit2 z_inflateInit2 +# define inflateInit2_ z_inflateInit2_ +# define inflateInit_ z_inflateInit_ +# define inflateMark z_inflateMark +# define inflatePrime z_inflatePrime +# define inflateReset z_inflateReset +# define inflateReset2 z_inflateReset2 +# define inflateResetKeep z_inflateResetKeep +# define inflateSetDictionary z_inflateSetDictionary +# define inflateSync z_inflateSync +# define inflateSyncPoint z_inflateSyncPoint +# define inflateUndermine z_inflateUndermine +# define inflateValidate z_inflateValidate +# define inflate_copyright z_inflate_copyright +# define inflate_fast z_inflate_fast +# define inflate_table z_inflate_table +# ifndef Z_SOLO +# define uncompress z_uncompress +# define uncompress2 z_uncompress2 +# endif +# define zError z_zError +# ifndef Z_SOLO +# define zcalloc z_zcalloc +# define zcfree z_zcfree +# endif +# define zlibCompileFlags z_zlibCompileFlags +# define zlibVersion z_zlibVersion + +/* all zlib typedefs in zlib.h and zconf.h */ +# define Byte z_Byte +# define Bytef z_Bytef +# define alloc_func z_alloc_func +# define charf z_charf +# define free_func z_free_func +# ifndef Z_SOLO +# define gzFile z_gzFile +# endif +# define gz_header z_gz_header +# define gz_headerp z_gz_headerp +# define in_func z_in_func +# define intf z_intf +# define out_func z_out_func +# define uInt z_uInt +# define uIntf z_uIntf +# define uLong z_uLong +# define uLongf z_uLongf +# define voidp z_voidp +# define voidpc z_voidpc +# define voidpf z_voidpf + +/* all zlib structs in zlib.h and zconf.h */ +# define gz_header_s z_gz_header_s +# define internal_state z_internal_state + +#endif + +#if defined(__MSDOS__) && !defined(MSDOS) +# define MSDOS +#endif +#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) +# define OS2 +#endif +#if defined(_WINDOWS) && !defined(WINDOWS) +# define WINDOWS +#endif +#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) +# ifndef WIN32 +# define WIN32 +# endif +#endif +#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) +# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) +# ifndef SYS16BIT +# define SYS16BIT +# endif +# endif +#endif + +/* + * Compile with -DMAXSEG_64K if the alloc function cannot allocate more + * than 64k bytes at a time (needed on systems with 16-bit int). + */ +#ifdef SYS16BIT +# define MAXSEG_64K +#endif +#ifdef MSDOS +# define UNALIGNED_OK +#endif + +#ifdef __STDC_VERSION__ +# ifndef STDC +# define STDC +# endif +# if __STDC_VERSION__ >= 199901L +# ifndef STDC99 +# define STDC99 +# endif +# endif +#endif +#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) +# define STDC +#endif +#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) +# define STDC +#endif +#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) +# define STDC +#endif +#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) +# define STDC +#endif + +#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ +# define STDC +#endif + +#ifndef STDC +# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ +# define const /* note: need a more gentle solution here */ +# endif +#endif + +#if defined(ZLIB_CONST) && !defined(z_const) +# define z_const const +#else +# define z_const +#endif + +#ifdef Z_SOLO + typedef unsigned long z_size_t; +#else +# define z_longlong long long +# if defined(NO_SIZE_T) + typedef unsigned NO_SIZE_T z_size_t; +# elif defined(STDC) +# include + typedef size_t z_size_t; +# else + typedef unsigned long z_size_t; +# endif +# undef z_longlong +#endif + +/* Maximum value for memLevel in deflateInit2 */ +#ifndef MAX_MEM_LEVEL +# ifdef MAXSEG_64K +# define MAX_MEM_LEVEL 8 +# else +# define MAX_MEM_LEVEL 9 +# endif +#endif + +/* Maximum value for windowBits in deflateInit2 and inflateInit2. + * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files + * created by gzip. (Files created by minigzip can still be extracted by + * gzip.) + */ +#ifndef MAX_WBITS +# define MAX_WBITS 15 /* 32K LZ77 window */ +#endif + +/* The memory requirements for deflate are (in bytes): + (1 << (windowBits+2)) + (1 << (memLevel+9)) + that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) + plus a few kilobytes for small objects. For example, if you want to reduce + the default memory requirements from 256K to 128K, compile with + make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" + Of course this will generally degrade compression (there's no free lunch). + + The memory requirements for inflate are (in bytes) 1 << windowBits + that is, 32K for windowBits=15 (default value) plus about 7 kilobytes + for small objects. +*/ + + /* Type declarations */ + +#ifndef OF /* function prototypes */ +# ifdef STDC +# define OF(args) args +# else +# define OF(args) () +# endif +#endif + +#ifndef Z_ARG /* function prototypes for stdarg */ +# if defined(STDC) || defined(Z_HAVE_STDARG_H) +# define Z_ARG(args) args +# else +# define Z_ARG(args) () +# endif +#endif + +/* The following definitions for FAR are needed only for MSDOS mixed + * model programming (small or medium model with some far allocations). + * This was tested only with MSC; for other MSDOS compilers you may have + * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, + * just define FAR to be empty. + */ +#ifdef SYS16BIT +# if defined(M_I86SM) || defined(M_I86MM) + /* MSC small or medium model */ +# define SMALL_MEDIUM +# ifdef _MSC_VER +# define FAR _far +# else +# define FAR far +# endif +# endif +# if (defined(__SMALL__) || defined(__MEDIUM__)) + /* Turbo C small or medium model */ +# define SMALL_MEDIUM +# ifdef __BORLANDC__ +# define FAR _far +# else +# define FAR far +# endif +# endif +#endif + +#if defined(WINDOWS) || defined(WIN32) + /* If building or using zlib as a DLL, define ZLIB_DLL. + * This is not mandatory, but it offers a little performance increase. + */ +# ifdef ZLIB_DLL +# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) +# ifdef ZLIB_INTERNAL +# define ZEXTERN extern __declspec(dllexport) +# else +# define ZEXTERN extern __declspec(dllimport) +# endif +# endif +# endif /* ZLIB_DLL */ + /* If building or using zlib with the WINAPI/WINAPIV calling convention, + * define ZLIB_WINAPI. + * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. + */ +# ifdef ZLIB_WINAPI +# ifdef FAR +# undef FAR +# endif +# include + /* No need for _export, use ZLIB.DEF instead. */ + /* For complete Windows compatibility, use WINAPI, not __stdcall. */ +# define ZEXPORT WINAPI +# ifdef WIN32 +# define ZEXPORTVA WINAPIV +# else +# define ZEXPORTVA FAR CDECL +# endif +# endif +#endif + +#if defined (__BEOS__) +# ifdef ZLIB_DLL +# ifdef ZLIB_INTERNAL +# define ZEXPORT __declspec(dllexport) +# define ZEXPORTVA __declspec(dllexport) +# else +# define ZEXPORT __declspec(dllimport) +# define ZEXPORTVA __declspec(dllimport) +# endif +# endif +#endif + +#ifndef ZEXTERN +# define ZEXTERN extern +#endif +#ifndef ZEXPORT +# define ZEXPORT +#endif +#ifndef ZEXPORTVA +# define ZEXPORTVA +#endif + +#ifndef FAR +# define FAR +#endif + +#if !defined(__MACTYPES__) +typedef unsigned char Byte; /* 8 bits */ +#endif +typedef unsigned int uInt; /* 16 bits or more */ +typedef unsigned long uLong; /* 32 bits or more */ + +#ifdef SMALL_MEDIUM + /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ +# define Bytef Byte FAR +#else + typedef Byte FAR Bytef; +#endif +typedef char FAR charf; +typedef int FAR intf; +typedef uInt FAR uIntf; +typedef uLong FAR uLongf; + +#ifdef STDC + typedef void const *voidpc; + typedef void FAR *voidpf; + typedef void *voidp; +#else + typedef Byte const *voidpc; + typedef Byte FAR *voidpf; + typedef Byte *voidp; +#endif + +#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC) +# include +# if (UINT_MAX == 0xffffffffUL) +# define Z_U4 unsigned +# elif (ULONG_MAX == 0xffffffffUL) +# define Z_U4 unsigned long +# elif (USHRT_MAX == 0xffffffffUL) +# define Z_U4 unsigned short +# endif +#endif + +#ifdef Z_U4 + typedef Z_U4 z_crc_t; +#else + typedef unsigned long z_crc_t; +#endif + +#if 1 /* was set to #if 1 by ./configure */ +# define Z_HAVE_UNISTD_H +#endif + +#if 1 /* was set to #if 1 by ./configure */ +# define Z_HAVE_STDARG_H +#endif + +#ifdef STDC +# ifndef Z_SOLO +# include /* for off_t */ +# endif +#endif + +#if defined(STDC) || defined(Z_HAVE_STDARG_H) +# ifndef Z_SOLO +# include /* for va_list */ +# endif +#endif + +#ifdef _WIN32 +# ifndef Z_SOLO +# include /* for wchar_t */ +# endif +#endif + +/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and + * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even + * though the former does not conform to the LFS document), but considering + * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as + * equivalently requesting no 64-bit operations + */ +#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1 +# undef _LARGEFILE64_SOURCE +#endif + +#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H) +# define Z_HAVE_UNISTD_H +#endif +#ifndef Z_SOLO +# if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE) +# include /* for SEEK_*, off_t, and _LFS64_LARGEFILE */ +# ifdef VMS +# include /* for off_t */ +# endif +# ifndef z_off_t +# define z_off_t off_t +# endif +# endif +#endif + +#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0 +# define Z_LFS64 +#endif + +#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64) +# define Z_LARGE64 +#endif + +#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64) +# define Z_WANT64 +#endif + +#if !defined(SEEK_SET) && !defined(Z_SOLO) +# define SEEK_SET 0 /* Seek from beginning of file. */ +# define SEEK_CUR 1 /* Seek from current position. */ +# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ +#endif + +#ifndef z_off_t +# define z_off_t long +#endif + +#if !defined(_WIN32) && defined(Z_LARGE64) +# define z_off64_t off64_t +#else +# if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO) +# define z_off64_t __int64 +# else +# define z_off64_t z_off_t +# endif +#endif + +/* MVS linker does not support external names larger than 8 bytes */ +#if defined(__MVS__) + #pragma map(deflateInit_,"DEIN") + #pragma map(deflateInit2_,"DEIN2") + #pragma map(deflateEnd,"DEEND") + #pragma map(deflateBound,"DEBND") + #pragma map(inflateInit_,"ININ") + #pragma map(inflateInit2_,"ININ2") + #pragma map(inflateEnd,"INEND") + #pragma map(inflateSync,"INSY") + #pragma map(inflateSetDictionary,"INSEDI") + #pragma map(compressBound,"CMBND") + #pragma map(inflate_table,"INTABL") + #pragma map(inflate_fast,"INFA") + #pragma map(inflate_copyright,"INCOPY") +#endif + +#endif /* ZCONF_H */ diff --git a/waterbox/nyma/zlib/zconf.h.cmakein b/waterbox/nyma/zlib/zconf.h.cmakein new file mode 100644 index 0000000000..a7f24cce60 --- /dev/null +++ b/waterbox/nyma/zlib/zconf.h.cmakein @@ -0,0 +1,536 @@ +/* zconf.h -- configuration of the zlib compression library + * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* @(#) $Id$ */ + +#ifndef ZCONF_H +#define ZCONF_H +#cmakedefine Z_PREFIX +#cmakedefine Z_HAVE_UNISTD_H + +/* + * If you *really* need a unique prefix for all types and library functions, + * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. + * Even better than compiling with -DZ_PREFIX would be to use configure to set + * this permanently in zconf.h using "./configure --zprefix". + */ +#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */ +# define Z_PREFIX_SET + +/* all linked symbols and init macros */ +# define _dist_code z__dist_code +# define _length_code z__length_code +# define _tr_align z__tr_align +# define _tr_flush_bits z__tr_flush_bits +# define _tr_flush_block z__tr_flush_block +# define _tr_init z__tr_init +# define _tr_stored_block z__tr_stored_block +# define _tr_tally z__tr_tally +# define adler32 z_adler32 +# define adler32_combine z_adler32_combine +# define adler32_combine64 z_adler32_combine64 +# define adler32_z z_adler32_z +# ifndef Z_SOLO +# define compress z_compress +# define compress2 z_compress2 +# define compressBound z_compressBound +# endif +# define crc32 z_crc32 +# define crc32_combine z_crc32_combine +# define crc32_combine64 z_crc32_combine64 +# define crc32_z z_crc32_z +# define deflate z_deflate +# define deflateBound z_deflateBound +# define deflateCopy z_deflateCopy +# define deflateEnd z_deflateEnd +# define deflateGetDictionary z_deflateGetDictionary +# define deflateInit z_deflateInit +# define deflateInit2 z_deflateInit2 +# define deflateInit2_ z_deflateInit2_ +# define deflateInit_ z_deflateInit_ +# define deflateParams z_deflateParams +# define deflatePending z_deflatePending +# define deflatePrime z_deflatePrime +# define deflateReset z_deflateReset +# define deflateResetKeep z_deflateResetKeep +# define deflateSetDictionary z_deflateSetDictionary +# define deflateSetHeader z_deflateSetHeader +# define deflateTune z_deflateTune +# define deflate_copyright z_deflate_copyright +# define get_crc_table z_get_crc_table +# ifndef Z_SOLO +# define gz_error z_gz_error +# define gz_intmax z_gz_intmax +# define gz_strwinerror z_gz_strwinerror +# define gzbuffer z_gzbuffer +# define gzclearerr z_gzclearerr +# define gzclose z_gzclose +# define gzclose_r z_gzclose_r +# define gzclose_w z_gzclose_w +# define gzdirect z_gzdirect +# define gzdopen z_gzdopen +# define gzeof z_gzeof +# define gzerror z_gzerror +# define gzflush z_gzflush +# define gzfread z_gzfread +# define gzfwrite z_gzfwrite +# define gzgetc z_gzgetc +# define gzgetc_ z_gzgetc_ +# define gzgets z_gzgets +# define gzoffset z_gzoffset +# define gzoffset64 z_gzoffset64 +# define gzopen z_gzopen +# define gzopen64 z_gzopen64 +# ifdef _WIN32 +# define gzopen_w z_gzopen_w +# endif +# define gzprintf z_gzprintf +# define gzputc z_gzputc +# define gzputs z_gzputs +# define gzread z_gzread +# define gzrewind z_gzrewind +# define gzseek z_gzseek +# define gzseek64 z_gzseek64 +# define gzsetparams z_gzsetparams +# define gztell z_gztell +# define gztell64 z_gztell64 +# define gzungetc z_gzungetc +# define gzvprintf z_gzvprintf +# define gzwrite z_gzwrite +# endif +# define inflate z_inflate +# define inflateBack z_inflateBack +# define inflateBackEnd z_inflateBackEnd +# define inflateBackInit z_inflateBackInit +# define inflateBackInit_ z_inflateBackInit_ +# define inflateCodesUsed z_inflateCodesUsed +# define inflateCopy z_inflateCopy +# define inflateEnd z_inflateEnd +# define inflateGetDictionary z_inflateGetDictionary +# define inflateGetHeader z_inflateGetHeader +# define inflateInit z_inflateInit +# define inflateInit2 z_inflateInit2 +# define inflateInit2_ z_inflateInit2_ +# define inflateInit_ z_inflateInit_ +# define inflateMark z_inflateMark +# define inflatePrime z_inflatePrime +# define inflateReset z_inflateReset +# define inflateReset2 z_inflateReset2 +# define inflateResetKeep z_inflateResetKeep +# define inflateSetDictionary z_inflateSetDictionary +# define inflateSync z_inflateSync +# define inflateSyncPoint z_inflateSyncPoint +# define inflateUndermine z_inflateUndermine +# define inflateValidate z_inflateValidate +# define inflate_copyright z_inflate_copyright +# define inflate_fast z_inflate_fast +# define inflate_table z_inflate_table +# ifndef Z_SOLO +# define uncompress z_uncompress +# define uncompress2 z_uncompress2 +# endif +# define zError z_zError +# ifndef Z_SOLO +# define zcalloc z_zcalloc +# define zcfree z_zcfree +# endif +# define zlibCompileFlags z_zlibCompileFlags +# define zlibVersion z_zlibVersion + +/* all zlib typedefs in zlib.h and zconf.h */ +# define Byte z_Byte +# define Bytef z_Bytef +# define alloc_func z_alloc_func +# define charf z_charf +# define free_func z_free_func +# ifndef Z_SOLO +# define gzFile z_gzFile +# endif +# define gz_header z_gz_header +# define gz_headerp z_gz_headerp +# define in_func z_in_func +# define intf z_intf +# define out_func z_out_func +# define uInt z_uInt +# define uIntf z_uIntf +# define uLong z_uLong +# define uLongf z_uLongf +# define voidp z_voidp +# define voidpc z_voidpc +# define voidpf z_voidpf + +/* all zlib structs in zlib.h and zconf.h */ +# define gz_header_s z_gz_header_s +# define internal_state z_internal_state + +#endif + +#if defined(__MSDOS__) && !defined(MSDOS) +# define MSDOS +#endif +#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) +# define OS2 +#endif +#if defined(_WINDOWS) && !defined(WINDOWS) +# define WINDOWS +#endif +#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) +# ifndef WIN32 +# define WIN32 +# endif +#endif +#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) +# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) +# ifndef SYS16BIT +# define SYS16BIT +# endif +# endif +#endif + +/* + * Compile with -DMAXSEG_64K if the alloc function cannot allocate more + * than 64k bytes at a time (needed on systems with 16-bit int). + */ +#ifdef SYS16BIT +# define MAXSEG_64K +#endif +#ifdef MSDOS +# define UNALIGNED_OK +#endif + +#ifdef __STDC_VERSION__ +# ifndef STDC +# define STDC +# endif +# if __STDC_VERSION__ >= 199901L +# ifndef STDC99 +# define STDC99 +# endif +# endif +#endif +#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) +# define STDC +#endif +#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) +# define STDC +#endif +#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) +# define STDC +#endif +#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) +# define STDC +#endif + +#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ +# define STDC +#endif + +#ifndef STDC +# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ +# define const /* note: need a more gentle solution here */ +# endif +#endif + +#if defined(ZLIB_CONST) && !defined(z_const) +# define z_const const +#else +# define z_const +#endif + +#ifdef Z_SOLO + typedef unsigned long z_size_t; +#else +# define z_longlong long long +# if defined(NO_SIZE_T) + typedef unsigned NO_SIZE_T z_size_t; +# elif defined(STDC) +# include + typedef size_t z_size_t; +# else + typedef unsigned long z_size_t; +# endif +# undef z_longlong +#endif + +/* Maximum value for memLevel in deflateInit2 */ +#ifndef MAX_MEM_LEVEL +# ifdef MAXSEG_64K +# define MAX_MEM_LEVEL 8 +# else +# define MAX_MEM_LEVEL 9 +# endif +#endif + +/* Maximum value for windowBits in deflateInit2 and inflateInit2. + * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files + * created by gzip. (Files created by minigzip can still be extracted by + * gzip.) + */ +#ifndef MAX_WBITS +# define MAX_WBITS 15 /* 32K LZ77 window */ +#endif + +/* The memory requirements for deflate are (in bytes): + (1 << (windowBits+2)) + (1 << (memLevel+9)) + that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) + plus a few kilobytes for small objects. For example, if you want to reduce + the default memory requirements from 256K to 128K, compile with + make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" + Of course this will generally degrade compression (there's no free lunch). + + The memory requirements for inflate are (in bytes) 1 << windowBits + that is, 32K for windowBits=15 (default value) plus about 7 kilobytes + for small objects. +*/ + + /* Type declarations */ + +#ifndef OF /* function prototypes */ +# ifdef STDC +# define OF(args) args +# else +# define OF(args) () +# endif +#endif + +#ifndef Z_ARG /* function prototypes for stdarg */ +# if defined(STDC) || defined(Z_HAVE_STDARG_H) +# define Z_ARG(args) args +# else +# define Z_ARG(args) () +# endif +#endif + +/* The following definitions for FAR are needed only for MSDOS mixed + * model programming (small or medium model with some far allocations). + * This was tested only with MSC; for other MSDOS compilers you may have + * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, + * just define FAR to be empty. + */ +#ifdef SYS16BIT +# if defined(M_I86SM) || defined(M_I86MM) + /* MSC small or medium model */ +# define SMALL_MEDIUM +# ifdef _MSC_VER +# define FAR _far +# else +# define FAR far +# endif +# endif +# if (defined(__SMALL__) || defined(__MEDIUM__)) + /* Turbo C small or medium model */ +# define SMALL_MEDIUM +# ifdef __BORLANDC__ +# define FAR _far +# else +# define FAR far +# endif +# endif +#endif + +#if defined(WINDOWS) || defined(WIN32) + /* If building or using zlib as a DLL, define ZLIB_DLL. + * This is not mandatory, but it offers a little performance increase. + */ +# ifdef ZLIB_DLL +# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) +# ifdef ZLIB_INTERNAL +# define ZEXTERN extern __declspec(dllexport) +# else +# define ZEXTERN extern __declspec(dllimport) +# endif +# endif +# endif /* ZLIB_DLL */ + /* If building or using zlib with the WINAPI/WINAPIV calling convention, + * define ZLIB_WINAPI. + * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. + */ +# ifdef ZLIB_WINAPI +# ifdef FAR +# undef FAR +# endif +# include + /* No need for _export, use ZLIB.DEF instead. */ + /* For complete Windows compatibility, use WINAPI, not __stdcall. */ +# define ZEXPORT WINAPI +# ifdef WIN32 +# define ZEXPORTVA WINAPIV +# else +# define ZEXPORTVA FAR CDECL +# endif +# endif +#endif + +#if defined (__BEOS__) +# ifdef ZLIB_DLL +# ifdef ZLIB_INTERNAL +# define ZEXPORT __declspec(dllexport) +# define ZEXPORTVA __declspec(dllexport) +# else +# define ZEXPORT __declspec(dllimport) +# define ZEXPORTVA __declspec(dllimport) +# endif +# endif +#endif + +#ifndef ZEXTERN +# define ZEXTERN extern +#endif +#ifndef ZEXPORT +# define ZEXPORT +#endif +#ifndef ZEXPORTVA +# define ZEXPORTVA +#endif + +#ifndef FAR +# define FAR +#endif + +#if !defined(__MACTYPES__) +typedef unsigned char Byte; /* 8 bits */ +#endif +typedef unsigned int uInt; /* 16 bits or more */ +typedef unsigned long uLong; /* 32 bits or more */ + +#ifdef SMALL_MEDIUM + /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ +# define Bytef Byte FAR +#else + typedef Byte FAR Bytef; +#endif +typedef char FAR charf; +typedef int FAR intf; +typedef uInt FAR uIntf; +typedef uLong FAR uLongf; + +#ifdef STDC + typedef void const *voidpc; + typedef void FAR *voidpf; + typedef void *voidp; +#else + typedef Byte const *voidpc; + typedef Byte FAR *voidpf; + typedef Byte *voidp; +#endif + +#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC) +# include +# if (UINT_MAX == 0xffffffffUL) +# define Z_U4 unsigned +# elif (ULONG_MAX == 0xffffffffUL) +# define Z_U4 unsigned long +# elif (USHRT_MAX == 0xffffffffUL) +# define Z_U4 unsigned short +# endif +#endif + +#ifdef Z_U4 + typedef Z_U4 z_crc_t; +#else + typedef unsigned long z_crc_t; +#endif + +#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ +# define Z_HAVE_UNISTD_H +#endif + +#ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */ +# define Z_HAVE_STDARG_H +#endif + +#ifdef STDC +# ifndef Z_SOLO +# include /* for off_t */ +# endif +#endif + +#if defined(STDC) || defined(Z_HAVE_STDARG_H) +# ifndef Z_SOLO +# include /* for va_list */ +# endif +#endif + +#ifdef _WIN32 +# ifndef Z_SOLO +# include /* for wchar_t */ +# endif +#endif + +/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and + * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even + * though the former does not conform to the LFS document), but considering + * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as + * equivalently requesting no 64-bit operations + */ +#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1 +# undef _LARGEFILE64_SOURCE +#endif + +#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H) +# define Z_HAVE_UNISTD_H +#endif +#ifndef Z_SOLO +# if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE) +# include /* for SEEK_*, off_t, and _LFS64_LARGEFILE */ +# ifdef VMS +# include /* for off_t */ +# endif +# ifndef z_off_t +# define z_off_t off_t +# endif +# endif +#endif + +#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0 +# define Z_LFS64 +#endif + +#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64) +# define Z_LARGE64 +#endif + +#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64) +# define Z_WANT64 +#endif + +#if !defined(SEEK_SET) && !defined(Z_SOLO) +# define SEEK_SET 0 /* Seek from beginning of file. */ +# define SEEK_CUR 1 /* Seek from current position. */ +# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ +#endif + +#ifndef z_off_t +# define z_off_t long +#endif + +#if !defined(_WIN32) && defined(Z_LARGE64) +# define z_off64_t off64_t +#else +# if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO) +# define z_off64_t __int64 +# else +# define z_off64_t z_off_t +# endif +#endif + +/* MVS linker does not support external names larger than 8 bytes */ +#if defined(__MVS__) + #pragma map(deflateInit_,"DEIN") + #pragma map(deflateInit2_,"DEIN2") + #pragma map(deflateEnd,"DEEND") + #pragma map(deflateBound,"DEBND") + #pragma map(inflateInit_,"ININ") + #pragma map(inflateInit2_,"ININ2") + #pragma map(inflateEnd,"INEND") + #pragma map(inflateSync,"INSY") + #pragma map(inflateSetDictionary,"INSEDI") + #pragma map(compressBound,"CMBND") + #pragma map(inflate_table,"INTABL") + #pragma map(inflate_fast,"INFA") + #pragma map(inflate_copyright,"INCOPY") +#endif + +#endif /* ZCONF_H */ diff --git a/waterbox/nyma/zlib/zconf.h.in b/waterbox/nyma/zlib/zconf.h.in new file mode 100644 index 0000000000..5e1d68a004 --- /dev/null +++ b/waterbox/nyma/zlib/zconf.h.in @@ -0,0 +1,534 @@ +/* zconf.h -- configuration of the zlib compression library + * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* @(#) $Id$ */ + +#ifndef ZCONF_H +#define ZCONF_H + +/* + * If you *really* need a unique prefix for all types and library functions, + * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. + * Even better than compiling with -DZ_PREFIX would be to use configure to set + * this permanently in zconf.h using "./configure --zprefix". + */ +#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */ +# define Z_PREFIX_SET + +/* all linked symbols and init macros */ +# define _dist_code z__dist_code +# define _length_code z__length_code +# define _tr_align z__tr_align +# define _tr_flush_bits z__tr_flush_bits +# define _tr_flush_block z__tr_flush_block +# define _tr_init z__tr_init +# define _tr_stored_block z__tr_stored_block +# define _tr_tally z__tr_tally +# define adler32 z_adler32 +# define adler32_combine z_adler32_combine +# define adler32_combine64 z_adler32_combine64 +# define adler32_z z_adler32_z +# ifndef Z_SOLO +# define compress z_compress +# define compress2 z_compress2 +# define compressBound z_compressBound +# endif +# define crc32 z_crc32 +# define crc32_combine z_crc32_combine +# define crc32_combine64 z_crc32_combine64 +# define crc32_z z_crc32_z +# define deflate z_deflate +# define deflateBound z_deflateBound +# define deflateCopy z_deflateCopy +# define deflateEnd z_deflateEnd +# define deflateGetDictionary z_deflateGetDictionary +# define deflateInit z_deflateInit +# define deflateInit2 z_deflateInit2 +# define deflateInit2_ z_deflateInit2_ +# define deflateInit_ z_deflateInit_ +# define deflateParams z_deflateParams +# define deflatePending z_deflatePending +# define deflatePrime z_deflatePrime +# define deflateReset z_deflateReset +# define deflateResetKeep z_deflateResetKeep +# define deflateSetDictionary z_deflateSetDictionary +# define deflateSetHeader z_deflateSetHeader +# define deflateTune z_deflateTune +# define deflate_copyright z_deflate_copyright +# define get_crc_table z_get_crc_table +# ifndef Z_SOLO +# define gz_error z_gz_error +# define gz_intmax z_gz_intmax +# define gz_strwinerror z_gz_strwinerror +# define gzbuffer z_gzbuffer +# define gzclearerr z_gzclearerr +# define gzclose z_gzclose +# define gzclose_r z_gzclose_r +# define gzclose_w z_gzclose_w +# define gzdirect z_gzdirect +# define gzdopen z_gzdopen +# define gzeof z_gzeof +# define gzerror z_gzerror +# define gzflush z_gzflush +# define gzfread z_gzfread +# define gzfwrite z_gzfwrite +# define gzgetc z_gzgetc +# define gzgetc_ z_gzgetc_ +# define gzgets z_gzgets +# define gzoffset z_gzoffset +# define gzoffset64 z_gzoffset64 +# define gzopen z_gzopen +# define gzopen64 z_gzopen64 +# ifdef _WIN32 +# define gzopen_w z_gzopen_w +# endif +# define gzprintf z_gzprintf +# define gzputc z_gzputc +# define gzputs z_gzputs +# define gzread z_gzread +# define gzrewind z_gzrewind +# define gzseek z_gzseek +# define gzseek64 z_gzseek64 +# define gzsetparams z_gzsetparams +# define gztell z_gztell +# define gztell64 z_gztell64 +# define gzungetc z_gzungetc +# define gzvprintf z_gzvprintf +# define gzwrite z_gzwrite +# endif +# define inflate z_inflate +# define inflateBack z_inflateBack +# define inflateBackEnd z_inflateBackEnd +# define inflateBackInit z_inflateBackInit +# define inflateBackInit_ z_inflateBackInit_ +# define inflateCodesUsed z_inflateCodesUsed +# define inflateCopy z_inflateCopy +# define inflateEnd z_inflateEnd +# define inflateGetDictionary z_inflateGetDictionary +# define inflateGetHeader z_inflateGetHeader +# define inflateInit z_inflateInit +# define inflateInit2 z_inflateInit2 +# define inflateInit2_ z_inflateInit2_ +# define inflateInit_ z_inflateInit_ +# define inflateMark z_inflateMark +# define inflatePrime z_inflatePrime +# define inflateReset z_inflateReset +# define inflateReset2 z_inflateReset2 +# define inflateResetKeep z_inflateResetKeep +# define inflateSetDictionary z_inflateSetDictionary +# define inflateSync z_inflateSync +# define inflateSyncPoint z_inflateSyncPoint +# define inflateUndermine z_inflateUndermine +# define inflateValidate z_inflateValidate +# define inflate_copyright z_inflate_copyright +# define inflate_fast z_inflate_fast +# define inflate_table z_inflate_table +# ifndef Z_SOLO +# define uncompress z_uncompress +# define uncompress2 z_uncompress2 +# endif +# define zError z_zError +# ifndef Z_SOLO +# define zcalloc z_zcalloc +# define zcfree z_zcfree +# endif +# define zlibCompileFlags z_zlibCompileFlags +# define zlibVersion z_zlibVersion + +/* all zlib typedefs in zlib.h and zconf.h */ +# define Byte z_Byte +# define Bytef z_Bytef +# define alloc_func z_alloc_func +# define charf z_charf +# define free_func z_free_func +# ifndef Z_SOLO +# define gzFile z_gzFile +# endif +# define gz_header z_gz_header +# define gz_headerp z_gz_headerp +# define in_func z_in_func +# define intf z_intf +# define out_func z_out_func +# define uInt z_uInt +# define uIntf z_uIntf +# define uLong z_uLong +# define uLongf z_uLongf +# define voidp z_voidp +# define voidpc z_voidpc +# define voidpf z_voidpf + +/* all zlib structs in zlib.h and zconf.h */ +# define gz_header_s z_gz_header_s +# define internal_state z_internal_state + +#endif + +#if defined(__MSDOS__) && !defined(MSDOS) +# define MSDOS +#endif +#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) +# define OS2 +#endif +#if defined(_WINDOWS) && !defined(WINDOWS) +# define WINDOWS +#endif +#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) +# ifndef WIN32 +# define WIN32 +# endif +#endif +#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) +# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) +# ifndef SYS16BIT +# define SYS16BIT +# endif +# endif +#endif + +/* + * Compile with -DMAXSEG_64K if the alloc function cannot allocate more + * than 64k bytes at a time (needed on systems with 16-bit int). + */ +#ifdef SYS16BIT +# define MAXSEG_64K +#endif +#ifdef MSDOS +# define UNALIGNED_OK +#endif + +#ifdef __STDC_VERSION__ +# ifndef STDC +# define STDC +# endif +# if __STDC_VERSION__ >= 199901L +# ifndef STDC99 +# define STDC99 +# endif +# endif +#endif +#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) +# define STDC +#endif +#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) +# define STDC +#endif +#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) +# define STDC +#endif +#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) +# define STDC +#endif + +#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ +# define STDC +#endif + +#ifndef STDC +# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ +# define const /* note: need a more gentle solution here */ +# endif +#endif + +#if defined(ZLIB_CONST) && !defined(z_const) +# define z_const const +#else +# define z_const +#endif + +#ifdef Z_SOLO + typedef unsigned long z_size_t; +#else +# define z_longlong long long +# if defined(NO_SIZE_T) + typedef unsigned NO_SIZE_T z_size_t; +# elif defined(STDC) +# include + typedef size_t z_size_t; +# else + typedef unsigned long z_size_t; +# endif +# undef z_longlong +#endif + +/* Maximum value for memLevel in deflateInit2 */ +#ifndef MAX_MEM_LEVEL +# ifdef MAXSEG_64K +# define MAX_MEM_LEVEL 8 +# else +# define MAX_MEM_LEVEL 9 +# endif +#endif + +/* Maximum value for windowBits in deflateInit2 and inflateInit2. + * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files + * created by gzip. (Files created by minigzip can still be extracted by + * gzip.) + */ +#ifndef MAX_WBITS +# define MAX_WBITS 15 /* 32K LZ77 window */ +#endif + +/* The memory requirements for deflate are (in bytes): + (1 << (windowBits+2)) + (1 << (memLevel+9)) + that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) + plus a few kilobytes for small objects. For example, if you want to reduce + the default memory requirements from 256K to 128K, compile with + make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" + Of course this will generally degrade compression (there's no free lunch). + + The memory requirements for inflate are (in bytes) 1 << windowBits + that is, 32K for windowBits=15 (default value) plus about 7 kilobytes + for small objects. +*/ + + /* Type declarations */ + +#ifndef OF /* function prototypes */ +# ifdef STDC +# define OF(args) args +# else +# define OF(args) () +# endif +#endif + +#ifndef Z_ARG /* function prototypes for stdarg */ +# if defined(STDC) || defined(Z_HAVE_STDARG_H) +# define Z_ARG(args) args +# else +# define Z_ARG(args) () +# endif +#endif + +/* The following definitions for FAR are needed only for MSDOS mixed + * model programming (small or medium model with some far allocations). + * This was tested only with MSC; for other MSDOS compilers you may have + * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, + * just define FAR to be empty. + */ +#ifdef SYS16BIT +# if defined(M_I86SM) || defined(M_I86MM) + /* MSC small or medium model */ +# define SMALL_MEDIUM +# ifdef _MSC_VER +# define FAR _far +# else +# define FAR far +# endif +# endif +# if (defined(__SMALL__) || defined(__MEDIUM__)) + /* Turbo C small or medium model */ +# define SMALL_MEDIUM +# ifdef __BORLANDC__ +# define FAR _far +# else +# define FAR far +# endif +# endif +#endif + +#if defined(WINDOWS) || defined(WIN32) + /* If building or using zlib as a DLL, define ZLIB_DLL. + * This is not mandatory, but it offers a little performance increase. + */ +# ifdef ZLIB_DLL +# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) +# ifdef ZLIB_INTERNAL +# define ZEXTERN extern __declspec(dllexport) +# else +# define ZEXTERN extern __declspec(dllimport) +# endif +# endif +# endif /* ZLIB_DLL */ + /* If building or using zlib with the WINAPI/WINAPIV calling convention, + * define ZLIB_WINAPI. + * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. + */ +# ifdef ZLIB_WINAPI +# ifdef FAR +# undef FAR +# endif +# include + /* No need for _export, use ZLIB.DEF instead. */ + /* For complete Windows compatibility, use WINAPI, not __stdcall. */ +# define ZEXPORT WINAPI +# ifdef WIN32 +# define ZEXPORTVA WINAPIV +# else +# define ZEXPORTVA FAR CDECL +# endif +# endif +#endif + +#if defined (__BEOS__) +# ifdef ZLIB_DLL +# ifdef ZLIB_INTERNAL +# define ZEXPORT __declspec(dllexport) +# define ZEXPORTVA __declspec(dllexport) +# else +# define ZEXPORT __declspec(dllimport) +# define ZEXPORTVA __declspec(dllimport) +# endif +# endif +#endif + +#ifndef ZEXTERN +# define ZEXTERN extern +#endif +#ifndef ZEXPORT +# define ZEXPORT +#endif +#ifndef ZEXPORTVA +# define ZEXPORTVA +#endif + +#ifndef FAR +# define FAR +#endif + +#if !defined(__MACTYPES__) +typedef unsigned char Byte; /* 8 bits */ +#endif +typedef unsigned int uInt; /* 16 bits or more */ +typedef unsigned long uLong; /* 32 bits or more */ + +#ifdef SMALL_MEDIUM + /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ +# define Bytef Byte FAR +#else + typedef Byte FAR Bytef; +#endif +typedef char FAR charf; +typedef int FAR intf; +typedef uInt FAR uIntf; +typedef uLong FAR uLongf; + +#ifdef STDC + typedef void const *voidpc; + typedef void FAR *voidpf; + typedef void *voidp; +#else + typedef Byte const *voidpc; + typedef Byte FAR *voidpf; + typedef Byte *voidp; +#endif + +#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC) +# include +# if (UINT_MAX == 0xffffffffUL) +# define Z_U4 unsigned +# elif (ULONG_MAX == 0xffffffffUL) +# define Z_U4 unsigned long +# elif (USHRT_MAX == 0xffffffffUL) +# define Z_U4 unsigned short +# endif +#endif + +#ifdef Z_U4 + typedef Z_U4 z_crc_t; +#else + typedef unsigned long z_crc_t; +#endif + +#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ +# define Z_HAVE_UNISTD_H +#endif + +#ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */ +# define Z_HAVE_STDARG_H +#endif + +#ifdef STDC +# ifndef Z_SOLO +# include /* for off_t */ +# endif +#endif + +#if defined(STDC) || defined(Z_HAVE_STDARG_H) +# ifndef Z_SOLO +# include /* for va_list */ +# endif +#endif + +#ifdef _WIN32 +# ifndef Z_SOLO +# include /* for wchar_t */ +# endif +#endif + +/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and + * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even + * though the former does not conform to the LFS document), but considering + * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as + * equivalently requesting no 64-bit operations + */ +#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1 +# undef _LARGEFILE64_SOURCE +#endif + +#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H) +# define Z_HAVE_UNISTD_H +#endif +#ifndef Z_SOLO +# if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE) +# include /* for SEEK_*, off_t, and _LFS64_LARGEFILE */ +# ifdef VMS +# include /* for off_t */ +# endif +# ifndef z_off_t +# define z_off_t off_t +# endif +# endif +#endif + +#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0 +# define Z_LFS64 +#endif + +#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64) +# define Z_LARGE64 +#endif + +#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64) +# define Z_WANT64 +#endif + +#if !defined(SEEK_SET) && !defined(Z_SOLO) +# define SEEK_SET 0 /* Seek from beginning of file. */ +# define SEEK_CUR 1 /* Seek from current position. */ +# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ +#endif + +#ifndef z_off_t +# define z_off_t long +#endif + +#if !defined(_WIN32) && defined(Z_LARGE64) +# define z_off64_t off64_t +#else +# if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO) +# define z_off64_t __int64 +# else +# define z_off64_t z_off_t +# endif +#endif + +/* MVS linker does not support external names larger than 8 bytes */ +#if defined(__MVS__) + #pragma map(deflateInit_,"DEIN") + #pragma map(deflateInit2_,"DEIN2") + #pragma map(deflateEnd,"DEEND") + #pragma map(deflateBound,"DEBND") + #pragma map(inflateInit_,"ININ") + #pragma map(inflateInit2_,"ININ2") + #pragma map(inflateEnd,"INEND") + #pragma map(inflateSync,"INSY") + #pragma map(inflateSetDictionary,"INSEDI") + #pragma map(compressBound,"CMBND") + #pragma map(inflate_table,"INTABL") + #pragma map(inflate_fast,"INFA") + #pragma map(inflate_copyright,"INCOPY") +#endif + +#endif /* ZCONF_H */ diff --git a/waterbox/nyma/zlib/zlib.h b/waterbox/nyma/zlib/zlib.h new file mode 100644 index 0000000000..f09cdaf1e0 --- /dev/null +++ b/waterbox/nyma/zlib/zlib.h @@ -0,0 +1,1912 @@ +/* zlib.h -- interface of the 'zlib' general purpose compression library + version 1.2.11, January 15th, 2017 + + Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + + + The data format used by the zlib library is described by RFCs (Request for + Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950 + (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format). +*/ + +#ifndef ZLIB_H +#define ZLIB_H + +#include "zconf.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define ZLIB_VERSION "1.2.11" +#define ZLIB_VERNUM 0x12b0 +#define ZLIB_VER_MAJOR 1 +#define ZLIB_VER_MINOR 2 +#define ZLIB_VER_REVISION 11 +#define ZLIB_VER_SUBREVISION 0 + +/* + The 'zlib' compression library provides in-memory compression and + decompression functions, including integrity checks of the uncompressed data. + This version of the library supports only one compression method (deflation) + but other algorithms will be added later and will have the same stream + interface. + + Compression can be done in a single step if the buffers are large enough, + or can be done by repeated calls of the compression function. In the latter + case, the application must provide more input and/or consume the output + (providing more output space) before each call. + + The compressed data format used by default by the in-memory functions is + the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped + around a deflate stream, which is itself documented in RFC 1951. + + The library also supports reading and writing files in gzip (.gz) format + with an interface similar to that of stdio using the functions that start + with "gz". The gzip format is different from the zlib format. gzip is a + gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. + + This library can optionally read and write gzip and raw deflate streams in + memory as well. + + The zlib format was designed to be compact and fast for use in memory + and on communications channels. The gzip format was designed for single- + file compression on file systems, has a larger header than zlib to maintain + directory information, and uses a different, slower check method than zlib. + + The library does not install any signal handler. The decoder checks + the consistency of the compressed data, so the library should never crash + even in the case of corrupted input. +*/ + +typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); +typedef void (*free_func) OF((voidpf opaque, voidpf address)); + +struct internal_state; + +typedef struct z_stream_s { + z_const Bytef *next_in; /* next input byte */ + uInt avail_in; /* number of bytes available at next_in */ + uLong total_in; /* total number of input bytes read so far */ + + Bytef *next_out; /* next output byte will go here */ + uInt avail_out; /* remaining free space at next_out */ + uLong total_out; /* total number of bytes output so far */ + + z_const char *msg; /* last error message, NULL if no error */ + struct internal_state FAR *state; /* not visible by applications */ + + alloc_func zalloc; /* used to allocate the internal state */ + free_func zfree; /* used to free the internal state */ + voidpf opaque; /* private data object passed to zalloc and zfree */ + + int data_type; /* best guess about the data type: binary or text + for deflate, or the decoding state for inflate */ + uLong adler; /* Adler-32 or CRC-32 value of the uncompressed data */ + uLong reserved; /* reserved for future use */ +} z_stream; + +typedef z_stream FAR *z_streamp; + +/* + gzip header information passed to and from zlib routines. See RFC 1952 + for more details on the meanings of these fields. +*/ +typedef struct gz_header_s { + int text; /* true if compressed data believed to be text */ + uLong time; /* modification time */ + int xflags; /* extra flags (not used when writing a gzip file) */ + int os; /* operating system */ + Bytef *extra; /* pointer to extra field or Z_NULL if none */ + uInt extra_len; /* extra field length (valid if extra != Z_NULL) */ + uInt extra_max; /* space at extra (only when reading header) */ + Bytef *name; /* pointer to zero-terminated file name or Z_NULL */ + uInt name_max; /* space at name (only when reading header) */ + Bytef *comment; /* pointer to zero-terminated comment or Z_NULL */ + uInt comm_max; /* space at comment (only when reading header) */ + int hcrc; /* true if there was or will be a header crc */ + int done; /* true when done reading gzip header (not used + when writing a gzip file) */ +} gz_header; + +typedef gz_header FAR *gz_headerp; + +/* + The application must update next_in and avail_in when avail_in has dropped + to zero. It must update next_out and avail_out when avail_out has dropped + to zero. The application must initialize zalloc, zfree and opaque before + calling the init function. All other fields are set by the compression + library and must not be updated by the application. + + The opaque value provided by the application will be passed as the first + parameter for calls of zalloc and zfree. This can be useful for custom + memory management. The compression library attaches no meaning to the + opaque value. + + zalloc must return Z_NULL if there is not enough memory for the object. + If zlib is used in a multi-threaded application, zalloc and zfree must be + thread safe. In that case, zlib is thread-safe. When zalloc and zfree are + Z_NULL on entry to the initialization function, they are set to internal + routines that use the standard library functions malloc() and free(). + + On 16-bit systems, the functions zalloc and zfree must be able to allocate + exactly 65536 bytes, but will not be required to allocate more than this if + the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS, pointers + returned by zalloc for objects of exactly 65536 bytes *must* have their + offset normalized to zero. The default allocation function provided by this + library ensures this (see zutil.c). To reduce memory requirements and avoid + any allocation of 64K objects, at the expense of compression ratio, compile + the library with -DMAX_WBITS=14 (see zconf.h). + + The fields total_in and total_out can be used for statistics or progress + reports. After compression, total_in holds the total size of the + uncompressed data and may be saved for use by the decompressor (particularly + if the decompressor wants to decompress everything in a single step). +*/ + + /* constants */ + +#define Z_NO_FLUSH 0 +#define Z_PARTIAL_FLUSH 1 +#define Z_SYNC_FLUSH 2 +#define Z_FULL_FLUSH 3 +#define Z_FINISH 4 +#define Z_BLOCK 5 +#define Z_TREES 6 +/* Allowed flush values; see deflate() and inflate() below for details */ + +#define Z_OK 0 +#define Z_STREAM_END 1 +#define Z_NEED_DICT 2 +#define Z_ERRNO (-1) +#define Z_STREAM_ERROR (-2) +#define Z_DATA_ERROR (-3) +#define Z_MEM_ERROR (-4) +#define Z_BUF_ERROR (-5) +#define Z_VERSION_ERROR (-6) +/* Return codes for the compression/decompression functions. Negative values + * are errors, positive values are used for special but normal events. + */ + +#define Z_NO_COMPRESSION 0 +#define Z_BEST_SPEED 1 +#define Z_BEST_COMPRESSION 9 +#define Z_DEFAULT_COMPRESSION (-1) +/* compression levels */ + +#define Z_FILTERED 1 +#define Z_HUFFMAN_ONLY 2 +#define Z_RLE 3 +#define Z_FIXED 4 +#define Z_DEFAULT_STRATEGY 0 +/* compression strategy; see deflateInit2() below for details */ + +#define Z_BINARY 0 +#define Z_TEXT 1 +#define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */ +#define Z_UNKNOWN 2 +/* Possible values of the data_type field for deflate() */ + +#define Z_DEFLATED 8 +/* The deflate compression method (the only one supported in this version) */ + +#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */ + +#define zlib_version zlibVersion() +/* for compatibility with versions < 1.0.2 */ + + + /* basic functions */ + +ZEXTERN const char * ZEXPORT zlibVersion OF((void)); +/* The application can compare zlibVersion and ZLIB_VERSION for consistency. + If the first character differs, the library code actually used is not + compatible with the zlib.h header file used by the application. This check + is automatically made by deflateInit and inflateInit. + */ + +/* +ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level)); + + Initializes the internal stream state for compression. The fields + zalloc, zfree and opaque must be initialized before by the caller. If + zalloc and zfree are set to Z_NULL, deflateInit updates them to use default + allocation functions. + + The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9: + 1 gives best speed, 9 gives best compression, 0 gives no compression at all + (the input data is simply copied a block at a time). Z_DEFAULT_COMPRESSION + requests a default compromise between speed and compression (currently + equivalent to level 6). + + deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_STREAM_ERROR if level is not a valid compression level, or + Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible + with the version assumed by the caller (ZLIB_VERSION). msg is set to null + if there is no error message. deflateInit does not perform any compression: + this will be done by deflate(). +*/ + + +ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); +/* + deflate compresses as much data as possible, and stops when the input + buffer becomes empty or the output buffer becomes full. It may introduce + some output latency (reading input without producing any output) except when + forced to flush. + + The detailed semantics are as follows. deflate performs one or both of the + following actions: + + - Compress more input starting at next_in and update next_in and avail_in + accordingly. If not all input can be processed (because there is not + enough room in the output buffer), next_in and avail_in are updated and + processing will resume at this point for the next call of deflate(). + + - Generate more output starting at next_out and update next_out and avail_out + accordingly. This action is forced if the parameter flush is non zero. + Forcing flush frequently degrades the compression ratio, so this parameter + should be set only when necessary. Some output may be provided even if + flush is zero. + + Before the call of deflate(), the application should ensure that at least + one of the actions is possible, by providing more input and/or consuming more + output, and updating avail_in or avail_out accordingly; avail_out should + never be zero before the call. The application can consume the compressed + output when it wants, for example when the output buffer is full (avail_out + == 0), or after each call of deflate(). If deflate returns Z_OK and with + zero avail_out, it must be called again after making room in the output + buffer because there might be more output pending. See deflatePending(), + which can be used if desired to determine whether or not there is more ouput + in that case. + + Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to + decide how much data to accumulate before producing output, in order to + maximize compression. + + If the parameter flush is set to Z_SYNC_FLUSH, all pending output is + flushed to the output buffer and the output is aligned on a byte boundary, so + that the decompressor can get all input data available so far. (In + particular avail_in is zero after the call if enough output space has been + provided before the call.) Flushing may degrade compression for some + compression algorithms and so it should be used only when necessary. This + completes the current deflate block and follows it with an empty stored block + that is three bits plus filler bits to the next byte, followed by four bytes + (00 00 ff ff). + + If flush is set to Z_PARTIAL_FLUSH, all pending output is flushed to the + output buffer, but the output is not aligned to a byte boundary. All of the + input data so far will be available to the decompressor, as for Z_SYNC_FLUSH. + This completes the current deflate block and follows it with an empty fixed + codes block that is 10 bits long. This assures that enough bytes are output + in order for the decompressor to finish the block before the empty fixed + codes block. + + If flush is set to Z_BLOCK, a deflate block is completed and emitted, as + for Z_SYNC_FLUSH, but the output is not aligned on a byte boundary, and up to + seven bits of the current block are held to be written as the next byte after + the next deflate block is completed. In this case, the decompressor may not + be provided enough bits at this point in order to complete decompression of + the data provided so far to the compressor. It may need to wait for the next + block to be emitted. This is for advanced applications that need to control + the emission of deflate blocks. + + If flush is set to Z_FULL_FLUSH, all output is flushed as with + Z_SYNC_FLUSH, and the compression state is reset so that decompression can + restart from this point if previous compressed data has been damaged or if + random access is desired. Using Z_FULL_FLUSH too often can seriously degrade + compression. + + If deflate returns with avail_out == 0, this function must be called again + with the same value of the flush parameter and more output space (updated + avail_out), until the flush is complete (deflate returns with non-zero + avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that + avail_out is greater than six to avoid repeated flush markers due to + avail_out == 0 on return. + + If the parameter flush is set to Z_FINISH, pending input is processed, + pending output is flushed and deflate returns with Z_STREAM_END if there was + enough output space. If deflate returns with Z_OK or Z_BUF_ERROR, this + function must be called again with Z_FINISH and more output space (updated + avail_out) but no more input data, until it returns with Z_STREAM_END or an + error. After deflate has returned Z_STREAM_END, the only possible operations + on the stream are deflateReset or deflateEnd. + + Z_FINISH can be used in the first deflate call after deflateInit if all the + compression is to be done in a single step. In order to complete in one + call, avail_out must be at least the value returned by deflateBound (see + below). Then deflate is guaranteed to return Z_STREAM_END. If not enough + output space is provided, deflate will not return Z_STREAM_END, and it must + be called again as described above. + + deflate() sets strm->adler to the Adler-32 checksum of all input read + so far (that is, total_in bytes). If a gzip stream is being generated, then + strm->adler will be the CRC-32 checksum of the input read so far. (See + deflateInit2 below.) + + deflate() may update strm->data_type if it can make a good guess about + the input data type (Z_BINARY or Z_TEXT). If in doubt, the data is + considered binary. This field is only for information purposes and does not + affect the compression algorithm in any manner. + + deflate() returns Z_OK if some progress has been made (more input + processed or more output produced), Z_STREAM_END if all input has been + consumed and all output has been produced (only when flush is set to + Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example + if next_in or next_out was Z_NULL or the state was inadvertently written over + by the application), or Z_BUF_ERROR if no progress is possible (for example + avail_in or avail_out was zero). Note that Z_BUF_ERROR is not fatal, and + deflate() can be called again with more input and more output space to + continue compressing. +*/ + + +ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm)); +/* + All dynamically allocated data structures for this stream are freed. + This function discards any unprocessed input and does not flush any pending + output. + + deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the + stream state was inconsistent, Z_DATA_ERROR if the stream was freed + prematurely (some input or output was discarded). In the error case, msg + may be set but then points to a static string (which must not be + deallocated). +*/ + + +/* +ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm)); + + Initializes the internal stream state for decompression. The fields + next_in, avail_in, zalloc, zfree and opaque must be initialized before by + the caller. In the current version of inflate, the provided input is not + read or consumed. The allocation of a sliding window will be deferred to + the first call of inflate (if the decompression does not complete on the + first call). If zalloc and zfree are set to Z_NULL, inflateInit updates + them to use default allocation functions. + + inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_VERSION_ERROR if the zlib library version is incompatible with the + version assumed by the caller, or Z_STREAM_ERROR if the parameters are + invalid, such as a null pointer to the structure. msg is set to null if + there is no error message. inflateInit does not perform any decompression. + Actual decompression will be done by inflate(). So next_in, and avail_in, + next_out, and avail_out are unused and unchanged. The current + implementation of inflateInit() does not process any header information -- + that is deferred until inflate() is called. +*/ + + +ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); +/* + inflate decompresses as much data as possible, and stops when the input + buffer becomes empty or the output buffer becomes full. It may introduce + some output latency (reading input without producing any output) except when + forced to flush. + + The detailed semantics are as follows. inflate performs one or both of the + following actions: + + - Decompress more input starting at next_in and update next_in and avail_in + accordingly. If not all input can be processed (because there is not + enough room in the output buffer), then next_in and avail_in are updated + accordingly, and processing will resume at this point for the next call of + inflate(). + + - Generate more output starting at next_out and update next_out and avail_out + accordingly. inflate() provides as much output as possible, until there is + no more input data or no more space in the output buffer (see below about + the flush parameter). + + Before the call of inflate(), the application should ensure that at least + one of the actions is possible, by providing more input and/or consuming more + output, and updating the next_* and avail_* values accordingly. If the + caller of inflate() does not provide both available input and available + output space, it is possible that there will be no progress made. The + application can consume the uncompressed output when it wants, for example + when the output buffer is full (avail_out == 0), or after each call of + inflate(). If inflate returns Z_OK and with zero avail_out, it must be + called again after making room in the output buffer because there might be + more output pending. + + The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FINISH, + Z_BLOCK, or Z_TREES. Z_SYNC_FLUSH requests that inflate() flush as much + output as possible to the output buffer. Z_BLOCK requests that inflate() + stop if and when it gets to the next deflate block boundary. When decoding + the zlib or gzip format, this will cause inflate() to return immediately + after the header and before the first block. When doing a raw inflate, + inflate() will go ahead and process the first block, and will return when it + gets to the end of that block, or when it runs out of data. + + The Z_BLOCK option assists in appending to or combining deflate streams. + To assist in this, on return inflate() always sets strm->data_type to the + number of unused bits in the last byte taken from strm->next_in, plus 64 if + inflate() is currently decoding the last block in the deflate stream, plus + 128 if inflate() returned immediately after decoding an end-of-block code or + decoding the complete header up to just before the first byte of the deflate + stream. The end-of-block will not be indicated until all of the uncompressed + data from that block has been written to strm->next_out. The number of + unused bits may in general be greater than seven, except when bit 7 of + data_type is set, in which case the number of unused bits will be less than + eight. data_type is set as noted here every time inflate() returns for all + flush options, and so can be used to determine the amount of currently + consumed input in bits. + + The Z_TREES option behaves as Z_BLOCK does, but it also returns when the + end of each deflate block header is reached, before any actual data in that + block is decoded. This allows the caller to determine the length of the + deflate block header for later use in random access within a deflate block. + 256 is added to the value of strm->data_type when inflate() returns + immediately after reaching the end of the deflate block header. + + inflate() should normally be called until it returns Z_STREAM_END or an + error. However if all decompression is to be performed in a single step (a + single call of inflate), the parameter flush should be set to Z_FINISH. In + this case all pending input is processed and all pending output is flushed; + avail_out must be large enough to hold all of the uncompressed data for the + operation to complete. (The size of the uncompressed data may have been + saved by the compressor for this purpose.) The use of Z_FINISH is not + required to perform an inflation in one step. However it may be used to + inform inflate that a faster approach can be used for the single inflate() + call. Z_FINISH also informs inflate to not maintain a sliding window if the + stream completes, which reduces inflate's memory footprint. If the stream + does not complete, either because not all of the stream is provided or not + enough output space is provided, then a sliding window will be allocated and + inflate() can be called again to continue the operation as if Z_NO_FLUSH had + been used. + + In this implementation, inflate() always flushes as much output as + possible to the output buffer, and always uses the faster approach on the + first call. So the effects of the flush parameter in this implementation are + on the return value of inflate() as noted below, when inflate() returns early + when Z_BLOCK or Z_TREES is used, and when inflate() avoids the allocation of + memory for a sliding window when Z_FINISH is used. + + If a preset dictionary is needed after this call (see inflateSetDictionary + below), inflate sets strm->adler to the Adler-32 checksum of the dictionary + chosen by the compressor and returns Z_NEED_DICT; otherwise it sets + strm->adler to the Adler-32 checksum of all output produced so far (that is, + total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described + below. At the end of the stream, inflate() checks that its computed Adler-32 + checksum is equal to that saved by the compressor and returns Z_STREAM_END + only if the checksum is correct. + + inflate() can decompress and check either zlib-wrapped or gzip-wrapped + deflate data. The header type is detected automatically, if requested when + initializing with inflateInit2(). Any information contained in the gzip + header is not retained unless inflateGetHeader() is used. When processing + gzip-wrapped deflate data, strm->adler32 is set to the CRC-32 of the output + produced so far. The CRC-32 is checked against the gzip trailer, as is the + uncompressed length, modulo 2^32. + + inflate() returns Z_OK if some progress has been made (more input processed + or more output produced), Z_STREAM_END if the end of the compressed data has + been reached and all uncompressed output has been produced, Z_NEED_DICT if a + preset dictionary is needed at this point, Z_DATA_ERROR if the input data was + corrupted (input stream not conforming to the zlib format or incorrect check + value, in which case strm->msg points to a string with a more specific + error), Z_STREAM_ERROR if the stream structure was inconsistent (for example + next_in or next_out was Z_NULL, or the state was inadvertently written over + by the application), Z_MEM_ERROR if there was not enough memory, Z_BUF_ERROR + if no progress was possible or if there was not enough room in the output + buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and + inflate() can be called again with more input and more output space to + continue decompressing. If Z_DATA_ERROR is returned, the application may + then call inflateSync() to look for a good compression block if a partial + recovery of the data is to be attempted. +*/ + + +ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm)); +/* + All dynamically allocated data structures for this stream are freed. + This function discards any unprocessed input and does not flush any pending + output. + + inflateEnd returns Z_OK if success, or Z_STREAM_ERROR if the stream state + was inconsistent. +*/ + + + /* Advanced functions */ + +/* + The following functions are needed only in some special applications. +*/ + +/* +ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm, + int level, + int method, + int windowBits, + int memLevel, + int strategy)); + + This is another version of deflateInit with more compression options. The + fields next_in, zalloc, zfree and opaque must be initialized before by the + caller. + + The method parameter is the compression method. It must be Z_DEFLATED in + this version of the library. + + The windowBits parameter is the base two logarithm of the window size + (the size of the history buffer). It should be in the range 8..15 for this + version of the library. Larger values of this parameter result in better + compression at the expense of memory usage. The default value is 15 if + deflateInit is used instead. + + For the current implementation of deflate(), a windowBits value of 8 (a + window size of 256 bytes) is not supported. As a result, a request for 8 + will result in 9 (a 512-byte window). In that case, providing 8 to + inflateInit2() will result in an error when the zlib header with 9 is + checked against the initialization of inflate(). The remedy is to not use 8 + with deflateInit2() with this initialization, or at least in that case use 9 + with inflateInit2(). + + windowBits can also be -8..-15 for raw deflate. In this case, -windowBits + determines the window size. deflate() will then generate raw deflate data + with no zlib header or trailer, and will not compute a check value. + + windowBits can also be greater than 15 for optional gzip encoding. Add + 16 to windowBits to write a simple gzip header and trailer around the + compressed data instead of a zlib wrapper. The gzip header will have no + file name, no extra data, no comment, no modification time (set to zero), no + header crc, and the operating system will be set to the appropriate value, + if the operating system was determined at compile time. If a gzip stream is + being written, strm->adler is a CRC-32 instead of an Adler-32. + + For raw deflate or gzip encoding, a request for a 256-byte window is + rejected as invalid, since only the zlib header provides a means of + transmitting the window size to the decompressor. + + The memLevel parameter specifies how much memory should be allocated + for the internal compression state. memLevel=1 uses minimum memory but is + slow and reduces compression ratio; memLevel=9 uses maximum memory for + optimal speed. The default value is 8. See zconf.h for total memory usage + as a function of windowBits and memLevel. + + The strategy parameter is used to tune the compression algorithm. Use the + value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a + filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no + string match), or Z_RLE to limit match distances to one (run-length + encoding). Filtered data consists mostly of small values with a somewhat + random distribution. In this case, the compression algorithm is tuned to + compress them better. The effect of Z_FILTERED is to force more Huffman + coding and less string matching; it is somewhat intermediate between + Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as + fast as Z_HUFFMAN_ONLY, but give better compression for PNG image data. The + strategy parameter only affects the compression ratio but not the + correctness of the compressed output even if it is not set appropriately. + Z_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler + decoder for special applications. + + deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_STREAM_ERROR if any parameter is invalid (such as an invalid + method), or Z_VERSION_ERROR if the zlib library version (zlib_version) is + incompatible with the version assumed by the caller (ZLIB_VERSION). msg is + set to null if there is no error message. deflateInit2 does not perform any + compression: this will be done by deflate(). +*/ + +ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, + const Bytef *dictionary, + uInt dictLength)); +/* + Initializes the compression dictionary from the given byte sequence + without producing any compressed output. When using the zlib format, this + function must be called immediately after deflateInit, deflateInit2 or + deflateReset, and before any call of deflate. When doing raw deflate, this + function must be called either before any call of deflate, or immediately + after the completion of a deflate block, i.e. after all input has been + consumed and all output has been delivered when using any of the flush + options Z_BLOCK, Z_PARTIAL_FLUSH, Z_SYNC_FLUSH, or Z_FULL_FLUSH. The + compressor and decompressor must use exactly the same dictionary (see + inflateSetDictionary). + + The dictionary should consist of strings (byte sequences) that are likely + to be encountered later in the data to be compressed, with the most commonly + used strings preferably put towards the end of the dictionary. Using a + dictionary is most useful when the data to be compressed is short and can be + predicted with good accuracy; the data can then be compressed better than + with the default empty dictionary. + + Depending on the size of the compression data structures selected by + deflateInit or deflateInit2, a part of the dictionary may in effect be + discarded, for example if the dictionary is larger than the window size + provided in deflateInit or deflateInit2. Thus the strings most likely to be + useful should be put at the end of the dictionary, not at the front. In + addition, the current implementation of deflate will use at most the window + size minus 262 bytes of the provided dictionary. + + Upon return of this function, strm->adler is set to the Adler-32 value + of the dictionary; the decompressor may later use this value to determine + which dictionary has been used by the compressor. (The Adler-32 value + applies to the whole dictionary even if only a subset of the dictionary is + actually used by the compressor.) If a raw deflate was requested, then the + Adler-32 value is not computed and strm->adler is not set. + + deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a + parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is + inconsistent (for example if deflate has already been called for this stream + or if not at a block boundary for raw deflate). deflateSetDictionary does + not perform any compression: this will be done by deflate(). +*/ + +ZEXTERN int ZEXPORT deflateGetDictionary OF((z_streamp strm, + Bytef *dictionary, + uInt *dictLength)); +/* + Returns the sliding dictionary being maintained by deflate. dictLength is + set to the number of bytes in the dictionary, and that many bytes are copied + to dictionary. dictionary must have enough space, where 32768 bytes is + always enough. If deflateGetDictionary() is called with dictionary equal to + Z_NULL, then only the dictionary length is returned, and nothing is copied. + Similary, if dictLength is Z_NULL, then it is not set. + + deflateGetDictionary() may return a length less than the window size, even + when more than the window size in input has been provided. It may return up + to 258 bytes less in that case, due to how zlib's implementation of deflate + manages the sliding window and lookahead for matches, where matches can be + up to 258 bytes long. If the application needs the last window-size bytes of + input, then that would need to be saved by the application outside of zlib. + + deflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the + stream state is inconsistent. +*/ + +ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest, + z_streamp source)); +/* + Sets the destination stream as a complete copy of the source stream. + + This function can be useful when several compression strategies will be + tried, for example when there are several ways of pre-processing the input + data with a filter. The streams that will be discarded should then be freed + by calling deflateEnd. Note that deflateCopy duplicates the internal + compression state which can be quite large, so this strategy is slow and can + consume lots of memory. + + deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_STREAM_ERROR if the source stream state was inconsistent + (such as zalloc being Z_NULL). msg is left unchanged in both source and + destination. +*/ + +ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm)); +/* + This function is equivalent to deflateEnd followed by deflateInit, but + does not free and reallocate the internal compression state. The stream + will leave the compression level and any other attributes that may have been + set unchanged. + + deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL). +*/ + +ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm, + int level, + int strategy)); +/* + Dynamically update the compression level and compression strategy. The + interpretation of level and strategy is as in deflateInit2(). This can be + used to switch between compression and straight copy of the input data, or + to switch to a different kind of input data requiring a different strategy. + If the compression approach (which is a function of the level) or the + strategy is changed, and if any input has been consumed in a previous + deflate() call, then the input available so far is compressed with the old + level and strategy using deflate(strm, Z_BLOCK). There are three approaches + for the compression levels 0, 1..3, and 4..9 respectively. The new level + and strategy will take effect at the next call of deflate(). + + If a deflate(strm, Z_BLOCK) is performed by deflateParams(), and it does + not have enough output space to complete, then the parameter change will not + take effect. In this case, deflateParams() can be called again with the + same parameters and more output space to try again. + + In order to assure a change in the parameters on the first try, the + deflate stream should be flushed using deflate() with Z_BLOCK or other flush + request until strm.avail_out is not zero, before calling deflateParams(). + Then no more input data should be provided before the deflateParams() call. + If this is done, the old level and strategy will be applied to the data + compressed before deflateParams(), and the new level and strategy will be + applied to the the data compressed after deflateParams(). + + deflateParams returns Z_OK on success, Z_STREAM_ERROR if the source stream + state was inconsistent or if a parameter was invalid, or Z_BUF_ERROR if + there was not enough output space to complete the compression of the + available input data before a change in the strategy or approach. Note that + in the case of a Z_BUF_ERROR, the parameters are not changed. A return + value of Z_BUF_ERROR is not fatal, in which case deflateParams() can be + retried with more output space. +*/ + +ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm, + int good_length, + int max_lazy, + int nice_length, + int max_chain)); +/* + Fine tune deflate's internal compression parameters. This should only be + used by someone who understands the algorithm used by zlib's deflate for + searching for the best matching string, and even then only by the most + fanatic optimizer trying to squeeze out the last compressed bit for their + specific input data. Read the deflate.c source code for the meaning of the + max_lazy, good_length, nice_length, and max_chain parameters. + + deflateTune() can be called after deflateInit() or deflateInit2(), and + returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. + */ + +ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm, + uLong sourceLen)); +/* + deflateBound() returns an upper bound on the compressed size after + deflation of sourceLen bytes. It must be called after deflateInit() or + deflateInit2(), and after deflateSetHeader(), if used. This would be used + to allocate an output buffer for deflation in a single pass, and so would be + called before deflate(). If that first deflate() call is provided the + sourceLen input bytes, an output buffer allocated to the size returned by + deflateBound(), and the flush value Z_FINISH, then deflate() is guaranteed + to return Z_STREAM_END. Note that it is possible for the compressed size to + be larger than the value returned by deflateBound() if flush options other + than Z_FINISH or Z_NO_FLUSH are used. +*/ + +ZEXTERN int ZEXPORT deflatePending OF((z_streamp strm, + unsigned *pending, + int *bits)); +/* + deflatePending() returns the number of bytes and bits of output that have + been generated, but not yet provided in the available output. The bytes not + provided would be due to the available output space having being consumed. + The number of bits of output not provided are between 0 and 7, where they + await more bits to join them in order to fill out a full byte. If pending + or bits are Z_NULL, then those values are not set. + + deflatePending returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. + */ + +ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm, + int bits, + int value)); +/* + deflatePrime() inserts bits in the deflate output stream. The intent + is that this function is used to start off the deflate output with the bits + leftover from a previous deflate stream when appending to it. As such, this + function can only be used for raw deflate, and must be used before the first + deflate() call after a deflateInit2() or deflateReset(). bits must be less + than or equal to 16, and that many of the least significant bits of value + will be inserted in the output. + + deflatePrime returns Z_OK if success, Z_BUF_ERROR if there was not enough + room in the internal buffer to insert the bits, or Z_STREAM_ERROR if the + source stream state was inconsistent. +*/ + +ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm, + gz_headerp head)); +/* + deflateSetHeader() provides gzip header information for when a gzip + stream is requested by deflateInit2(). deflateSetHeader() may be called + after deflateInit2() or deflateReset() and before the first call of + deflate(). The text, time, os, extra field, name, and comment information + in the provided gz_header structure are written to the gzip header (xflag is + ignored -- the extra flags are set according to the compression level). The + caller must assure that, if not Z_NULL, name and comment are terminated with + a zero byte, and that if extra is not Z_NULL, that extra_len bytes are + available there. If hcrc is true, a gzip header crc is included. Note that + the current versions of the command-line version of gzip (up through version + 1.3.x) do not support header crc's, and will report that it is a "multi-part + gzip file" and give up. + + If deflateSetHeader is not used, the default gzip header has text false, + the time set to zero, and os set to 255, with no extra, name, or comment + fields. The gzip header is returned to the default state by deflateReset(). + + deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +/* +ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, + int windowBits)); + + This is another version of inflateInit with an extra parameter. The + fields next_in, avail_in, zalloc, zfree and opaque must be initialized + before by the caller. + + The windowBits parameter is the base two logarithm of the maximum window + size (the size of the history buffer). It should be in the range 8..15 for + this version of the library. The default value is 15 if inflateInit is used + instead. windowBits must be greater than or equal to the windowBits value + provided to deflateInit2() while compressing, or it must be equal to 15 if + deflateInit2() was not used. If a compressed stream with a larger window + size is given as input, inflate() will return with the error code + Z_DATA_ERROR instead of trying to allocate a larger window. + + windowBits can also be zero to request that inflate use the window size in + the zlib header of the compressed stream. + + windowBits can also be -8..-15 for raw inflate. In this case, -windowBits + determines the window size. inflate() will then process raw deflate data, + not looking for a zlib or gzip header, not generating a check value, and not + looking for any check values for comparison at the end of the stream. This + is for use with other formats that use the deflate compressed data format + such as zip. Those formats provide their own check values. If a custom + format is developed using the raw deflate format for compressed data, it is + recommended that a check value such as an Adler-32 or a CRC-32 be applied to + the uncompressed data as is done in the zlib, gzip, and zip formats. For + most applications, the zlib format should be used as is. Note that comments + above on the use in deflateInit2() applies to the magnitude of windowBits. + + windowBits can also be greater than 15 for optional gzip decoding. Add + 32 to windowBits to enable zlib and gzip decoding with automatic header + detection, or add 16 to decode only the gzip format (the zlib format will + return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a + CRC-32 instead of an Adler-32. Unlike the gunzip utility and gzread() (see + below), inflate() will not automatically decode concatenated gzip streams. + inflate() will return Z_STREAM_END at the end of the gzip stream. The state + would need to be reset to continue decoding a subsequent gzip stream. + + inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_VERSION_ERROR if the zlib library version is incompatible with the + version assumed by the caller, or Z_STREAM_ERROR if the parameters are + invalid, such as a null pointer to the structure. msg is set to null if + there is no error message. inflateInit2 does not perform any decompression + apart from possibly reading the zlib header if present: actual decompression + will be done by inflate(). (So next_in and avail_in may be modified, but + next_out and avail_out are unused and unchanged.) The current implementation + of inflateInit2() does not process any header information -- that is + deferred until inflate() is called. +*/ + +ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, + const Bytef *dictionary, + uInt dictLength)); +/* + Initializes the decompression dictionary from the given uncompressed byte + sequence. This function must be called immediately after a call of inflate, + if that call returned Z_NEED_DICT. The dictionary chosen by the compressor + can be determined from the Adler-32 value returned by that call of inflate. + The compressor and decompressor must use exactly the same dictionary (see + deflateSetDictionary). For raw inflate, this function can be called at any + time to set the dictionary. If the provided dictionary is smaller than the + window and there is already data in the window, then the provided dictionary + will amend what's there. The application must insure that the dictionary + that was used for compression is provided. + + inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a + parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is + inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the + expected one (incorrect Adler-32 value). inflateSetDictionary does not + perform any decompression: this will be done by subsequent calls of + inflate(). +*/ + +ZEXTERN int ZEXPORT inflateGetDictionary OF((z_streamp strm, + Bytef *dictionary, + uInt *dictLength)); +/* + Returns the sliding dictionary being maintained by inflate. dictLength is + set to the number of bytes in the dictionary, and that many bytes are copied + to dictionary. dictionary must have enough space, where 32768 bytes is + always enough. If inflateGetDictionary() is called with dictionary equal to + Z_NULL, then only the dictionary length is returned, and nothing is copied. + Similary, if dictLength is Z_NULL, then it is not set. + + inflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the + stream state is inconsistent. +*/ + +ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm)); +/* + Skips invalid compressed data until a possible full flush point (see above + for the description of deflate with Z_FULL_FLUSH) can be found, or until all + available input is skipped. No output is provided. + + inflateSync searches for a 00 00 FF FF pattern in the compressed data. + All full flush points have this pattern, but not all occurrences of this + pattern are full flush points. + + inflateSync returns Z_OK if a possible full flush point has been found, + Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no flush point + has been found, or Z_STREAM_ERROR if the stream structure was inconsistent. + In the success case, the application may save the current current value of + total_in which indicates where valid compressed data was found. In the + error case, the application may repeatedly call inflateSync, providing more + input each time, until success or end of the input data. +*/ + +ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest, + z_streamp source)); +/* + Sets the destination stream as a complete copy of the source stream. + + This function can be useful when randomly accessing a large stream. The + first pass through the stream can periodically record the inflate state, + allowing restarting inflate at those points when randomly accessing the + stream. + + inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_STREAM_ERROR if the source stream state was inconsistent + (such as zalloc being Z_NULL). msg is left unchanged in both source and + destination. +*/ + +ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm)); +/* + This function is equivalent to inflateEnd followed by inflateInit, + but does not free and reallocate the internal decompression state. The + stream will keep attributes that may have been set by inflateInit2. + + inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL). +*/ + +ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm, + int windowBits)); +/* + This function is the same as inflateReset, but it also permits changing + the wrap and window size requests. The windowBits parameter is interpreted + the same as it is for inflateInit2. If the window size is changed, then the + memory allocated for the window is freed, and the window will be reallocated + by inflate() if needed. + + inflateReset2 returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL), or if + the windowBits parameter is invalid. +*/ + +ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm, + int bits, + int value)); +/* + This function inserts bits in the inflate input stream. The intent is + that this function is used to start inflating at a bit position in the + middle of a byte. The provided bits will be used before any bytes are used + from next_in. This function should only be used with raw inflate, and + should be used before the first inflate() call after inflateInit2() or + inflateReset(). bits must be less than or equal to 16, and that many of the + least significant bits of value will be inserted in the input. + + If bits is negative, then the input stream bit buffer is emptied. Then + inflatePrime() can be called again to put bits in the buffer. This is used + to clear out bits leftover after feeding inflate a block description prior + to feeding inflate codes. + + inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm)); +/* + This function returns two values, one in the lower 16 bits of the return + value, and the other in the remaining upper bits, obtained by shifting the + return value down 16 bits. If the upper value is -1 and the lower value is + zero, then inflate() is currently decoding information outside of a block. + If the upper value is -1 and the lower value is non-zero, then inflate is in + the middle of a stored block, with the lower value equaling the number of + bytes from the input remaining to copy. If the upper value is not -1, then + it is the number of bits back from the current bit position in the input of + the code (literal or length/distance pair) currently being processed. In + that case the lower value is the number of bytes already emitted for that + code. + + A code is being processed if inflate is waiting for more input to complete + decoding of the code, or if it has completed decoding but is waiting for + more output space to write the literal or match data. + + inflateMark() is used to mark locations in the input data for random + access, which may be at bit positions, and to note those cases where the + output of a code may span boundaries of random access blocks. The current + location in the input stream can be determined from avail_in and data_type + as noted in the description for the Z_BLOCK flush parameter for inflate. + + inflateMark returns the value noted above, or -65536 if the provided + source stream state was inconsistent. +*/ + +ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm, + gz_headerp head)); +/* + inflateGetHeader() requests that gzip header information be stored in the + provided gz_header structure. inflateGetHeader() may be called after + inflateInit2() or inflateReset(), and before the first call of inflate(). + As inflate() processes the gzip stream, head->done is zero until the header + is completed, at which time head->done is set to one. If a zlib stream is + being decoded, then head->done is set to -1 to indicate that there will be + no gzip header information forthcoming. Note that Z_BLOCK or Z_TREES can be + used to force inflate() to return immediately after header processing is + complete and before any actual data is decompressed. + + The text, time, xflags, and os fields are filled in with the gzip header + contents. hcrc is set to true if there is a header CRC. (The header CRC + was valid if done is set to one.) If extra is not Z_NULL, then extra_max + contains the maximum number of bytes to write to extra. Once done is true, + extra_len contains the actual extra field length, and extra contains the + extra field, or that field truncated if extra_max is less than extra_len. + If name is not Z_NULL, then up to name_max characters are written there, + terminated with a zero unless the length is greater than name_max. If + comment is not Z_NULL, then up to comm_max characters are written there, + terminated with a zero unless the length is greater than comm_max. When any + of extra, name, or comment are not Z_NULL and the respective field is not + present in the header, then that field is set to Z_NULL to signal its + absence. This allows the use of deflateSetHeader() with the returned + structure to duplicate the header. However if those fields are set to + allocated memory, then the application will need to save those pointers + elsewhere so that they can be eventually freed. + + If inflateGetHeader is not used, then the header information is simply + discarded. The header is always checked for validity, including the header + CRC if present. inflateReset() will reset the process to discard the header + information. The application would need to call inflateGetHeader() again to + retrieve the header from the next gzip stream. + + inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +/* +ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits, + unsigned char FAR *window)); + + Initialize the internal stream state for decompression using inflateBack() + calls. The fields zalloc, zfree and opaque in strm must be initialized + before the call. If zalloc and zfree are Z_NULL, then the default library- + derived memory allocation routines are used. windowBits is the base two + logarithm of the window size, in the range 8..15. window is a caller + supplied buffer of that size. Except for special applications where it is + assured that deflate was used with small window sizes, windowBits must be 15 + and a 32K byte window must be supplied to be able to decompress general + deflate streams. + + See inflateBack() for the usage of these routines. + + inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of + the parameters are invalid, Z_MEM_ERROR if the internal state could not be + allocated, or Z_VERSION_ERROR if the version of the library does not match + the version of the header file. +*/ + +typedef unsigned (*in_func) OF((void FAR *, + z_const unsigned char FAR * FAR *)); +typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned)); + +ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, + in_func in, void FAR *in_desc, + out_func out, void FAR *out_desc)); +/* + inflateBack() does a raw inflate with a single call using a call-back + interface for input and output. This is potentially more efficient than + inflate() for file i/o applications, in that it avoids copying between the + output and the sliding window by simply making the window itself the output + buffer. inflate() can be faster on modern CPUs when used with large + buffers. inflateBack() trusts the application to not change the output + buffer passed by the output function, at least until inflateBack() returns. + + inflateBackInit() must be called first to allocate the internal state + and to initialize the state with the user-provided window buffer. + inflateBack() may then be used multiple times to inflate a complete, raw + deflate stream with each call. inflateBackEnd() is then called to free the + allocated state. + + A raw deflate stream is one with no zlib or gzip header or trailer. + This routine would normally be used in a utility that reads zip or gzip + files and writes out uncompressed files. The utility would decode the + header and process the trailer on its own, hence this routine expects only + the raw deflate stream to decompress. This is different from the default + behavior of inflate(), which expects a zlib header and trailer around the + deflate stream. + + inflateBack() uses two subroutines supplied by the caller that are then + called by inflateBack() for input and output. inflateBack() calls those + routines until it reads a complete deflate stream and writes out all of the + uncompressed data, or until it encounters an error. The function's + parameters and return types are defined above in the in_func and out_func + typedefs. inflateBack() will call in(in_desc, &buf) which should return the + number of bytes of provided input, and a pointer to that input in buf. If + there is no input available, in() must return zero -- buf is ignored in that + case -- and inflateBack() will return a buffer error. inflateBack() will + call out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. + out() should return zero on success, or non-zero on failure. If out() + returns non-zero, inflateBack() will return with an error. Neither in() nor + out() are permitted to change the contents of the window provided to + inflateBackInit(), which is also the buffer that out() uses to write from. + The length written by out() will be at most the window size. Any non-zero + amount of input may be provided by in(). + + For convenience, inflateBack() can be provided input on the first call by + setting strm->next_in and strm->avail_in. If that input is exhausted, then + in() will be called. Therefore strm->next_in must be initialized before + calling inflateBack(). If strm->next_in is Z_NULL, then in() will be called + immediately for input. If strm->next_in is not Z_NULL, then strm->avail_in + must also be initialized, and then if strm->avail_in is not zero, input will + initially be taken from strm->next_in[0 .. strm->avail_in - 1]. + + The in_desc and out_desc parameters of inflateBack() is passed as the + first parameter of in() and out() respectively when they are called. These + descriptors can be optionally used to pass any information that the caller- + supplied in() and out() functions need to do their job. + + On return, inflateBack() will set strm->next_in and strm->avail_in to + pass back any unused input that was provided by the last in() call. The + return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR + if in() or out() returned an error, Z_DATA_ERROR if there was a format error + in the deflate stream (in which case strm->msg is set to indicate the nature + of the error), or Z_STREAM_ERROR if the stream was not properly initialized. + In the case of Z_BUF_ERROR, an input or output error can be distinguished + using strm->next_in which will be Z_NULL only if in() returned an error. If + strm->next_in is not Z_NULL, then the Z_BUF_ERROR was due to out() returning + non-zero. (in() will always be called before out(), so strm->next_in is + assured to be defined if out() returns non-zero.) Note that inflateBack() + cannot return Z_OK. +*/ + +ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm)); +/* + All memory allocated by inflateBackInit() is freed. + + inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream + state was inconsistent. +*/ + +ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void)); +/* Return flags indicating compile-time options. + + Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other: + 1.0: size of uInt + 3.2: size of uLong + 5.4: size of voidpf (pointer) + 7.6: size of z_off_t + + Compiler, assembler, and debug options: + 8: ZLIB_DEBUG + 9: ASMV or ASMINF -- use ASM code + 10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention + 11: 0 (reserved) + + One-time table building (smaller code, but not thread-safe if true): + 12: BUILDFIXED -- build static block decoding tables when needed + 13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed + 14,15: 0 (reserved) + + Library content (indicates missing functionality): + 16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking + deflate code when not needed) + 17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect + and decode gzip streams (to avoid linking crc code) + 18-19: 0 (reserved) + + Operation variations (changes in library functionality): + 20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate + 21: FASTEST -- deflate algorithm with only one, lowest compression level + 22,23: 0 (reserved) + + The sprintf variant used by gzprintf (zero is best): + 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format + 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure! + 26: 0 = returns value, 1 = void -- 1 means inferred string length returned + + Remainder: + 27-31: 0 (reserved) + */ + +#ifndef Z_SOLO + + /* utility functions */ + +/* + The following utility functions are implemented on top of the basic + stream-oriented functions. To simplify the interface, some default options + are assumed (compression level and memory usage, standard memory allocation + functions). The source code of these utility functions can be modified if + you need special options. +*/ + +ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen)); +/* + Compresses the source buffer into the destination buffer. sourceLen is + the byte length of the source buffer. Upon entry, destLen is the total size + of the destination buffer, which must be at least the value returned by + compressBound(sourceLen). Upon exit, destLen is the actual size of the + compressed data. compress() is equivalent to compress2() with a level + parameter of Z_DEFAULT_COMPRESSION. + + compress returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_BUF_ERROR if there was not enough room in the output + buffer. +*/ + +ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen, + int level)); +/* + Compresses the source buffer into the destination buffer. The level + parameter has the same meaning as in deflateInit. sourceLen is the byte + length of the source buffer. Upon entry, destLen is the total size of the + destination buffer, which must be at least the value returned by + compressBound(sourceLen). Upon exit, destLen is the actual size of the + compressed data. + + compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_BUF_ERROR if there was not enough room in the output buffer, + Z_STREAM_ERROR if the level parameter is invalid. +*/ + +ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen)); +/* + compressBound() returns an upper bound on the compressed size after + compress() or compress2() on sourceLen bytes. It would be used before a + compress() or compress2() call to allocate the destination buffer. +*/ + +ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen)); +/* + Decompresses the source buffer into the destination buffer. sourceLen is + the byte length of the source buffer. Upon entry, destLen is the total size + of the destination buffer, which must be large enough to hold the entire + uncompressed data. (The size of the uncompressed data must have been saved + previously by the compressor and transmitted to the decompressor by some + mechanism outside the scope of this compression library.) Upon exit, destLen + is the actual size of the uncompressed data. + + uncompress returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_BUF_ERROR if there was not enough room in the output + buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete. In + the case where there is not enough room, uncompress() will fill the output + buffer with the uncompressed data up to that point. +*/ + +ZEXTERN int ZEXPORT uncompress2 OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong *sourceLen)); +/* + Same as uncompress, except that sourceLen is a pointer, where the + length of the source is *sourceLen. On return, *sourceLen is the number of + source bytes consumed. +*/ + + /* gzip file access functions */ + +/* + This library supports reading and writing files in gzip (.gz) format with + an interface similar to that of stdio, using the functions that start with + "gz". The gzip format is different from the zlib format. gzip is a gzip + wrapper, documented in RFC 1952, wrapped around a deflate stream. +*/ + +typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */ + +/* +ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode)); + + Opens a gzip (.gz) file for reading or writing. The mode parameter is as + in fopen ("rb" or "wb") but can also include a compression level ("wb9") or + a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only + compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F' + for fixed code compression as in "wb9F". (See the description of + deflateInit2 for more information about the strategy parameter.) 'T' will + request transparent writing or appending with no compression and not using + the gzip format. + + "a" can be used instead of "w" to request that the gzip stream that will + be written be appended to the file. "+" will result in an error, since + reading and writing to the same gzip file is not supported. The addition of + "x" when writing will create the file exclusively, which fails if the file + already exists. On systems that support it, the addition of "e" when + reading or writing will set the flag to close the file on an execve() call. + + These functions, as well as gzip, will read and decode a sequence of gzip + streams in a file. The append function of gzopen() can be used to create + such a file. (Also see gzflush() for another way to do this.) When + appending, gzopen does not test whether the file begins with a gzip stream, + nor does it look for the end of the gzip streams to begin appending. gzopen + will simply append a gzip stream to the existing file. + + gzopen can be used to read a file which is not in gzip format; in this + case gzread will directly read from the file without decompression. When + reading, this will be detected automatically by looking for the magic two- + byte gzip header. + + gzopen returns NULL if the file could not be opened, if there was + insufficient memory to allocate the gzFile state, or if an invalid mode was + specified (an 'r', 'w', or 'a' was not provided, or '+' was provided). + errno can be checked to determine if the reason gzopen failed was that the + file could not be opened. +*/ + +ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode)); +/* + gzdopen associates a gzFile with the file descriptor fd. File descriptors + are obtained from calls like open, dup, creat, pipe or fileno (if the file + has been previously opened with fopen). The mode parameter is as in gzopen. + + The next call of gzclose on the returned gzFile will also close the file + descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor + fd. If you want to keep fd open, use fd = dup(fd_keep); gz = gzdopen(fd, + mode);. The duplicated descriptor should be saved to avoid a leak, since + gzdopen does not close fd if it fails. If you are using fileno() to get the + file descriptor from a FILE *, then you will have to use dup() to avoid + double-close()ing the file descriptor. Both gzclose() and fclose() will + close the associated file descriptor, so they need to have different file + descriptors. + + gzdopen returns NULL if there was insufficient memory to allocate the + gzFile state, if an invalid mode was specified (an 'r', 'w', or 'a' was not + provided, or '+' was provided), or if fd is -1. The file descriptor is not + used until the next gz* read, write, seek, or close operation, so gzdopen + will not detect if fd is invalid (unless fd is -1). +*/ + +ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size)); +/* + Set the internal buffer size used by this library's functions. The + default buffer size is 8192 bytes. This function must be called after + gzopen() or gzdopen(), and before any other calls that read or write the + file. The buffer memory allocation is always deferred to the first read or + write. Three times that size in buffer space is allocated. A larger buffer + size of, for example, 64K or 128K bytes will noticeably increase the speed + of decompression (reading). + + The new buffer size also affects the maximum length for gzprintf(). + + gzbuffer() returns 0 on success, or -1 on failure, such as being called + too late. +*/ + +ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy)); +/* + Dynamically update the compression level or strategy. See the description + of deflateInit2 for the meaning of these parameters. Previously provided + data is flushed before the parameter change. + + gzsetparams returns Z_OK if success, Z_STREAM_ERROR if the file was not + opened for writing, Z_ERRNO if there is an error writing the flushed data, + or Z_MEM_ERROR if there is a memory allocation error. +*/ + +ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); +/* + Reads the given number of uncompressed bytes from the compressed file. If + the input file is not in gzip format, gzread copies the given number of + bytes into the buffer directly from the file. + + After reaching the end of a gzip stream in the input, gzread will continue + to read, looking for another gzip stream. Any number of gzip streams may be + concatenated in the input file, and will all be decompressed by gzread(). + If something other than a gzip stream is encountered after a gzip stream, + that remaining trailing garbage is ignored (and no error is returned). + + gzread can be used to read a gzip file that is being concurrently written. + Upon reaching the end of the input, gzread will return with the available + data. If the error code returned by gzerror is Z_OK or Z_BUF_ERROR, then + gzclearerr can be used to clear the end of file indicator in order to permit + gzread to be tried again. Z_OK indicates that a gzip stream was completed + on the last gzread. Z_BUF_ERROR indicates that the input file ended in the + middle of a gzip stream. Note that gzread does not return -1 in the event + of an incomplete gzip stream. This error is deferred until gzclose(), which + will return Z_BUF_ERROR if the last gzread ended in the middle of a gzip + stream. Alternatively, gzerror can be used before gzclose to detect this + case. + + gzread returns the number of uncompressed bytes actually read, less than + len for end of file, or -1 for error. If len is too large to fit in an int, + then nothing is read, -1 is returned, and the error state is set to + Z_STREAM_ERROR. +*/ + +ZEXTERN z_size_t ZEXPORT gzfread OF((voidp buf, z_size_t size, z_size_t nitems, + gzFile file)); +/* + Read up to nitems items of size size from file to buf, otherwise operating + as gzread() does. This duplicates the interface of stdio's fread(), with + size_t request and return types. If the library defines size_t, then + z_size_t is identical to size_t. If not, then z_size_t is an unsigned + integer type that can contain a pointer. + + gzfread() returns the number of full items read of size size, or zero if + the end of the file was reached and a full item could not be read, or if + there was an error. gzerror() must be consulted if zero is returned in + order to determine if there was an error. If the multiplication of size and + nitems overflows, i.e. the product does not fit in a z_size_t, then nothing + is read, zero is returned, and the error state is set to Z_STREAM_ERROR. + + In the event that the end of file is reached and only a partial item is + available at the end, i.e. the remaining uncompressed data length is not a + multiple of size, then the final partial item is nevetheless read into buf + and the end-of-file flag is set. The length of the partial item read is not + provided, but could be inferred from the result of gztell(). This behavior + is the same as the behavior of fread() implementations in common libraries, + but it prevents the direct use of gzfread() to read a concurrently written + file, reseting and retrying on end-of-file, when size is not 1. +*/ + +ZEXTERN int ZEXPORT gzwrite OF((gzFile file, + voidpc buf, unsigned len)); +/* + Writes the given number of uncompressed bytes into the compressed file. + gzwrite returns the number of uncompressed bytes written or 0 in case of + error. +*/ + +ZEXTERN z_size_t ZEXPORT gzfwrite OF((voidpc buf, z_size_t size, + z_size_t nitems, gzFile file)); +/* + gzfwrite() writes nitems items of size size from buf to file, duplicating + the interface of stdio's fwrite(), with size_t request and return types. If + the library defines size_t, then z_size_t is identical to size_t. If not, + then z_size_t is an unsigned integer type that can contain a pointer. + + gzfwrite() returns the number of full items written of size size, or zero + if there was an error. If the multiplication of size and nitems overflows, + i.e. the product does not fit in a z_size_t, then nothing is written, zero + is returned, and the error state is set to Z_STREAM_ERROR. +*/ + +ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...)); +/* + Converts, formats, and writes the arguments to the compressed file under + control of the format string, as in fprintf. gzprintf returns the number of + uncompressed bytes actually written, or a negative zlib error code in case + of error. The number of uncompressed bytes written is limited to 8191, or + one less than the buffer size given to gzbuffer(). The caller should assure + that this limit is not exceeded. If it is exceeded, then gzprintf() will + return an error (0) with nothing written. In this case, there may also be a + buffer overflow with unpredictable consequences, which is possible only if + zlib was compiled with the insecure functions sprintf() or vsprintf() + because the secure snprintf() or vsnprintf() functions were not available. + This can be determined using zlibCompileFlags(). +*/ + +ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s)); +/* + Writes the given null-terminated string to the compressed file, excluding + the terminating null character. + + gzputs returns the number of characters written, or -1 in case of error. +*/ + +ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len)); +/* + Reads bytes from the compressed file until len-1 characters are read, or a + newline character is read and transferred to buf, or an end-of-file + condition is encountered. If any characters are read or if len == 1, the + string is terminated with a null character. If no characters are read due + to an end-of-file or len < 1, then the buffer is left untouched. + + gzgets returns buf which is a null-terminated string, or it returns NULL + for end-of-file or in case of error. If there was an error, the contents at + buf are indeterminate. +*/ + +ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c)); +/* + Writes c, converted to an unsigned char, into the compressed file. gzputc + returns the value that was written, or -1 in case of error. +*/ + +ZEXTERN int ZEXPORT gzgetc OF((gzFile file)); +/* + Reads one byte from the compressed file. gzgetc returns this byte or -1 + in case of end of file or error. This is implemented as a macro for speed. + As such, it does not do all of the checking the other functions do. I.e. + it does not check to see if file is NULL, nor whether the structure file + points to has been clobbered or not. +*/ + +ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file)); +/* + Push one character back onto the stream to be read as the first character + on the next read. At least one character of push-back is allowed. + gzungetc() returns the character pushed, or -1 on failure. gzungetc() will + fail if c is -1, and may fail if a character has been pushed but not read + yet. If gzungetc is used immediately after gzopen or gzdopen, at least the + output buffer size of pushed characters is allowed. (See gzbuffer above.) + The pushed character will be discarded if the stream is repositioned with + gzseek() or gzrewind(). +*/ + +ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush)); +/* + Flushes all pending output into the compressed file. The parameter flush + is as in the deflate() function. The return value is the zlib error number + (see function gzerror below). gzflush is only permitted when writing. + + If the flush parameter is Z_FINISH, the remaining data is written and the + gzip stream is completed in the output. If gzwrite() is called again, a new + gzip stream will be started in the output. gzread() is able to read such + concatenated gzip streams. + + gzflush should be called only when strictly necessary because it will + degrade compression if called too often. +*/ + +/* +ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file, + z_off_t offset, int whence)); + + Sets the starting position for the next gzread or gzwrite on the given + compressed file. The offset represents a number of bytes in the + uncompressed data stream. The whence parameter is defined as in lseek(2); + the value SEEK_END is not supported. + + If the file is opened for reading, this function is emulated but can be + extremely slow. If the file is opened for writing, only forward seeks are + supported; gzseek then compresses a sequence of zeroes up to the new + starting position. + + gzseek returns the resulting offset location as measured in bytes from + the beginning of the uncompressed stream, or -1 in case of error, in + particular if the file is opened for writing and the new starting position + would be before the current position. +*/ + +ZEXTERN int ZEXPORT gzrewind OF((gzFile file)); +/* + Rewinds the given file. This function is supported only for reading. + + gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET) +*/ + +/* +ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file)); + + Returns the starting position for the next gzread or gzwrite on the given + compressed file. This position represents a number of bytes in the + uncompressed data stream, and is zero when starting, even if appending or + reading a gzip stream from the middle of a file using gzdopen(). + + gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR) +*/ + +/* +ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file)); + + Returns the current offset in the file being read or written. This offset + includes the count of bytes that precede the gzip stream, for example when + appending or when using gzdopen() for reading. When reading, the offset + does not include as yet unused buffered input. This information can be used + for a progress indicator. On error, gzoffset() returns -1. +*/ + +ZEXTERN int ZEXPORT gzeof OF((gzFile file)); +/* + Returns true (1) if the end-of-file indicator has been set while reading, + false (0) otherwise. Note that the end-of-file indicator is set only if the + read tried to go past the end of the input, but came up short. Therefore, + just like feof(), gzeof() may return false even if there is no more data to + read, in the event that the last read request was for the exact number of + bytes remaining in the input file. This will happen if the input file size + is an exact multiple of the buffer size. + + If gzeof() returns true, then the read functions will return no more data, + unless the end-of-file indicator is reset by gzclearerr() and the input file + has grown since the previous end of file was detected. +*/ + +ZEXTERN int ZEXPORT gzdirect OF((gzFile file)); +/* + Returns true (1) if file is being copied directly while reading, or false + (0) if file is a gzip stream being decompressed. + + If the input file is empty, gzdirect() will return true, since the input + does not contain a gzip stream. + + If gzdirect() is used immediately after gzopen() or gzdopen() it will + cause buffers to be allocated to allow reading the file to determine if it + is a gzip file. Therefore if gzbuffer() is used, it should be called before + gzdirect(). + + When writing, gzdirect() returns true (1) if transparent writing was + requested ("wT" for the gzopen() mode), or false (0) otherwise. (Note: + gzdirect() is not needed when writing. Transparent writing must be + explicitly requested, so the application already knows the answer. When + linking statically, using gzdirect() will include all of the zlib code for + gzip file reading and decompression, which may not be desired.) +*/ + +ZEXTERN int ZEXPORT gzclose OF((gzFile file)); +/* + Flushes all pending output if necessary, closes the compressed file and + deallocates the (de)compression state. Note that once file is closed, you + cannot call gzerror with file, since its structures have been deallocated. + gzclose must not be called more than once on the same file, just as free + must not be called more than once on the same allocation. + + gzclose will return Z_STREAM_ERROR if file is not valid, Z_ERRNO on a + file operation error, Z_MEM_ERROR if out of memory, Z_BUF_ERROR if the + last read ended in the middle of a gzip stream, or Z_OK on success. +*/ + +ZEXTERN int ZEXPORT gzclose_r OF((gzFile file)); +ZEXTERN int ZEXPORT gzclose_w OF((gzFile file)); +/* + Same as gzclose(), but gzclose_r() is only for use when reading, and + gzclose_w() is only for use when writing or appending. The advantage to + using these instead of gzclose() is that they avoid linking in zlib + compression or decompression code that is not used when only reading or only + writing respectively. If gzclose() is used, then both compression and + decompression code will be included the application when linking to a static + zlib library. +*/ + +ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum)); +/* + Returns the error message for the last error which occurred on the given + compressed file. errnum is set to zlib error number. If an error occurred + in the file system and not in the compression library, errnum is set to + Z_ERRNO and the application may consult errno to get the exact error code. + + The application must not modify the returned string. Future calls to + this function may invalidate the previously returned string. If file is + closed, then the string previously returned by gzerror will no longer be + available. + + gzerror() should be used to distinguish errors from end-of-file for those + functions above that do not distinguish those cases in their return values. +*/ + +ZEXTERN void ZEXPORT gzclearerr OF((gzFile file)); +/* + Clears the error and end-of-file flags for file. This is analogous to the + clearerr() function in stdio. This is useful for continuing to read a gzip + file that is being written concurrently. +*/ + +#endif /* !Z_SOLO */ + + /* checksum functions */ + +/* + These functions are not related to compression but are exported + anyway because they might be useful in applications using the compression + library. +*/ + +ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); +/* + Update a running Adler-32 checksum with the bytes buf[0..len-1] and + return the updated checksum. If buf is Z_NULL, this function returns the + required initial value for the checksum. + + An Adler-32 checksum is almost as reliable as a CRC-32 but can be computed + much faster. + + Usage example: + + uLong adler = adler32(0L, Z_NULL, 0); + + while (read_buffer(buffer, length) != EOF) { + adler = adler32(adler, buffer, length); + } + if (adler != original_adler) error(); +*/ + +ZEXTERN uLong ZEXPORT adler32_z OF((uLong adler, const Bytef *buf, + z_size_t len)); +/* + Same as adler32(), but with a size_t length. +*/ + +/* +ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2, + z_off_t len2)); + + Combine two Adler-32 checksums into one. For two sequences of bytes, seq1 + and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for + each, adler1 and adler2. adler32_combine() returns the Adler-32 checksum of + seq1 and seq2 concatenated, requiring only adler1, adler2, and len2. Note + that the z_off_t type (like off_t) is a signed integer. If len2 is + negative, the result has no meaning or utility. +*/ + +ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); +/* + Update a running CRC-32 with the bytes buf[0..len-1] and return the + updated CRC-32. If buf is Z_NULL, this function returns the required + initial value for the crc. Pre- and post-conditioning (one's complement) is + performed within this function so it shouldn't be done by the application. + + Usage example: + + uLong crc = crc32(0L, Z_NULL, 0); + + while (read_buffer(buffer, length) != EOF) { + crc = crc32(crc, buffer, length); + } + if (crc != original_crc) error(); +*/ + +ZEXTERN uLong ZEXPORT crc32_z OF((uLong adler, const Bytef *buf, + z_size_t len)); +/* + Same as crc32(), but with a size_t length. +*/ + +/* +ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2)); + + Combine two CRC-32 check values into one. For two sequences of bytes, + seq1 and seq2 with lengths len1 and len2, CRC-32 check values were + calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 + check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and + len2. +*/ + + + /* various hacks, don't look :) */ + +/* deflateInit and inflateInit are macros to allow checking the zlib version + * and the compiler's view of z_stream: + */ +ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method, + int windowBits, int memLevel, + int strategy, const char *version, + int stream_size)); +ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits, + unsigned char FAR *window, + const char *version, + int stream_size)); +#ifdef Z_PREFIX_SET +# define z_deflateInit(strm, level) \ + deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream)) +# define z_inflateInit(strm) \ + inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream)) +# define z_deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ + deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ + (strategy), ZLIB_VERSION, (int)sizeof(z_stream)) +# define z_inflateInit2(strm, windowBits) \ + inflateInit2_((strm), (windowBits), ZLIB_VERSION, \ + (int)sizeof(z_stream)) +# define z_inflateBackInit(strm, windowBits, window) \ + inflateBackInit_((strm), (windowBits), (window), \ + ZLIB_VERSION, (int)sizeof(z_stream)) +#else +# define deflateInit(strm, level) \ + deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream)) +# define inflateInit(strm) \ + inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream)) +# define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ + deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ + (strategy), ZLIB_VERSION, (int)sizeof(z_stream)) +# define inflateInit2(strm, windowBits) \ + inflateInit2_((strm), (windowBits), ZLIB_VERSION, \ + (int)sizeof(z_stream)) +# define inflateBackInit(strm, windowBits, window) \ + inflateBackInit_((strm), (windowBits), (window), \ + ZLIB_VERSION, (int)sizeof(z_stream)) +#endif + +#ifndef Z_SOLO + +/* gzgetc() macro and its supporting function and exposed data structure. Note + * that the real internal state is much larger than the exposed structure. + * This abbreviated structure exposes just enough for the gzgetc() macro. The + * user should not mess with these exposed elements, since their names or + * behavior could change in the future, perhaps even capriciously. They can + * only be used by the gzgetc() macro. You have been warned. + */ +struct gzFile_s { + unsigned have; + unsigned char *next; + z_off64_t pos; +}; +ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ +#ifdef Z_PREFIX_SET +# undef z_gzgetc +# define z_gzgetc(g) \ + ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : (gzgetc)(g)) +#else +# define gzgetc(g) \ + ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : (gzgetc)(g)) +#endif + +/* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or + * change the regular functions to 64 bits if _FILE_OFFSET_BITS is 64 (if + * both are true, the application gets the *64 functions, and the regular + * functions are changed to 64 bits) -- in case these are set on systems + * without large file support, _LFS64_LARGEFILE must also be true + */ +#ifdef Z_LARGE64 + ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); + ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int)); + ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile)); + ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile)); + ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t)); + ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t)); +#endif + +#if !defined(ZLIB_INTERNAL) && defined(Z_WANT64) +# ifdef Z_PREFIX_SET +# define z_gzopen z_gzopen64 +# define z_gzseek z_gzseek64 +# define z_gztell z_gztell64 +# define z_gzoffset z_gzoffset64 +# define z_adler32_combine z_adler32_combine64 +# define z_crc32_combine z_crc32_combine64 +# else +# define gzopen gzopen64 +# define gzseek gzseek64 +# define gztell gztell64 +# define gzoffset gzoffset64 +# define adler32_combine adler32_combine64 +# define crc32_combine crc32_combine64 +# endif +# ifndef Z_LARGE64 + ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); + ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int)); + ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile)); + ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile)); + ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); +# endif +#else + ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *)); + ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile, z_off_t, int)); + ZEXTERN z_off_t ZEXPORT gztell OF((gzFile)); + ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile)); + ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); +#endif + +#else /* Z_SOLO */ + + ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); + +#endif /* !Z_SOLO */ + +/* undocumented functions */ +ZEXTERN const char * ZEXPORT zError OF((int)); +ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp)); +ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table OF((void)); +ZEXTERN int ZEXPORT inflateUndermine OF((z_streamp, int)); +ZEXTERN int ZEXPORT inflateValidate OF((z_streamp, int)); +ZEXTERN unsigned long ZEXPORT inflateCodesUsed OF ((z_streamp)); +ZEXTERN int ZEXPORT inflateResetKeep OF((z_streamp)); +ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp)); +#if (defined(_WIN32) || defined(__CYGWIN__)) && !defined(Z_SOLO) +ZEXTERN gzFile ZEXPORT gzopen_w OF((const wchar_t *path, + const char *mode)); +#endif +#if defined(STDC) || defined(Z_HAVE_STDARG_H) +# ifndef Z_SOLO +ZEXTERN int ZEXPORTVA gzvprintf Z_ARG((gzFile file, + const char *format, + va_list va)); +# endif +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* ZLIB_H */ diff --git a/waterbox/nyma/zlib/zlib.map b/waterbox/nyma/zlib/zlib.map new file mode 100644 index 0000000000..40fa9db2bc --- /dev/null +++ b/waterbox/nyma/zlib/zlib.map @@ -0,0 +1,94 @@ +ZLIB_1.2.0 { + global: + compressBound; + deflateBound; + inflateBack; + inflateBackEnd; + inflateBackInit_; + inflateCopy; + local: + deflate_copyright; + inflate_copyright; + inflate_fast; + inflate_table; + zcalloc; + zcfree; + z_errmsg; + gz_error; + gz_intmax; + _*; +}; + +ZLIB_1.2.0.2 { + gzclearerr; + gzungetc; + zlibCompileFlags; +} ZLIB_1.2.0; + +ZLIB_1.2.0.8 { + deflatePrime; +} ZLIB_1.2.0.2; + +ZLIB_1.2.2 { + adler32_combine; + crc32_combine; + deflateSetHeader; + inflateGetHeader; +} ZLIB_1.2.0.8; + +ZLIB_1.2.2.3 { + deflateTune; + gzdirect; +} ZLIB_1.2.2; + +ZLIB_1.2.2.4 { + inflatePrime; +} ZLIB_1.2.2.3; + +ZLIB_1.2.3.3 { + adler32_combine64; + crc32_combine64; + gzopen64; + gzseek64; + gztell64; + inflateUndermine; +} ZLIB_1.2.2.4; + +ZLIB_1.2.3.4 { + inflateReset2; + inflateMark; +} ZLIB_1.2.3.3; + +ZLIB_1.2.3.5 { + gzbuffer; + gzoffset; + gzoffset64; + gzclose_r; + gzclose_w; +} ZLIB_1.2.3.4; + +ZLIB_1.2.5.1 { + deflatePending; +} ZLIB_1.2.3.5; + +ZLIB_1.2.5.2 { + deflateResetKeep; + gzgetc_; + inflateResetKeep; +} ZLIB_1.2.5.1; + +ZLIB_1.2.7.1 { + inflateGetDictionary; + gzvprintf; +} ZLIB_1.2.5.2; + +ZLIB_1.2.9 { + inflateCodesUsed; + inflateValidate; + uncompress2; + gzfread; + gzfwrite; + deflateGetDictionary; + adler32_z; + crc32_z; +} ZLIB_1.2.7.1; diff --git a/waterbox/nyma/zlib/zlib.pc b/waterbox/nyma/zlib/zlib.pc new file mode 100644 index 0000000000..6158ffd90d --- /dev/null +++ b/waterbox/nyma/zlib/zlib.pc @@ -0,0 +1,13 @@ +prefix=/mnt/c/Develop/BizHawk/waterbox/sysroot +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +sharedlibdir=${libdir} +includedir=${prefix}/include + +Name: zlib +Description: zlib compression library +Version: 1.2.11 + +Requires: +Libs: -L${libdir} -L${sharedlibdir} -lz +Cflags: -I${includedir} diff --git a/waterbox/nyma/zlib/zlib.pc.cmakein b/waterbox/nyma/zlib/zlib.pc.cmakein new file mode 100644 index 0000000000..a5e642938c --- /dev/null +++ b/waterbox/nyma/zlib/zlib.pc.cmakein @@ -0,0 +1,13 @@ +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=@CMAKE_INSTALL_PREFIX@ +libdir=@INSTALL_LIB_DIR@ +sharedlibdir=@INSTALL_LIB_DIR@ +includedir=@INSTALL_INC_DIR@ + +Name: zlib +Description: zlib compression library +Version: @VERSION@ + +Requires: +Libs: -L${libdir} -L${sharedlibdir} -lz +Cflags: -I${includedir} diff --git a/waterbox/nyma/zlib/zlib.pc.in b/waterbox/nyma/zlib/zlib.pc.in new file mode 100644 index 0000000000..7e5acf9c77 --- /dev/null +++ b/waterbox/nyma/zlib/zlib.pc.in @@ -0,0 +1,13 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +sharedlibdir=@sharedlibdir@ +includedir=@includedir@ + +Name: zlib +Description: zlib compression library +Version: @VERSION@ + +Requires: +Libs: -L${libdir} -L${sharedlibdir} -lz +Cflags: -I${includedir} diff --git a/waterbox/nyma/zlib/zutil.c b/waterbox/nyma/zlib/zutil.c new file mode 100644 index 0000000000..a76c6b0c7e --- /dev/null +++ b/waterbox/nyma/zlib/zutil.c @@ -0,0 +1,325 @@ +/* zutil.c -- target dependent utility functions for the compression library + * Copyright (C) 1995-2017 Jean-loup Gailly + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* @(#) $Id$ */ + +#include "zutil.h" +#ifndef Z_SOLO +# include "gzguts.h" +#endif + +z_const char * const z_errmsg[10] = { + (z_const char *)"need dictionary", /* Z_NEED_DICT 2 */ + (z_const char *)"stream end", /* Z_STREAM_END 1 */ + (z_const char *)"", /* Z_OK 0 */ + (z_const char *)"file error", /* Z_ERRNO (-1) */ + (z_const char *)"stream error", /* Z_STREAM_ERROR (-2) */ + (z_const char *)"data error", /* Z_DATA_ERROR (-3) */ + (z_const char *)"insufficient memory", /* Z_MEM_ERROR (-4) */ + (z_const char *)"buffer error", /* Z_BUF_ERROR (-5) */ + (z_const char *)"incompatible version",/* Z_VERSION_ERROR (-6) */ + (z_const char *)"" +}; + + +const char * ZEXPORT zlibVersion() +{ + return ZLIB_VERSION; +} + +uLong ZEXPORT zlibCompileFlags() +{ + uLong flags; + + flags = 0; + switch ((int)(sizeof(uInt))) { + case 2: break; + case 4: flags += 1; break; + case 8: flags += 2; break; + default: flags += 3; + } + switch ((int)(sizeof(uLong))) { + case 2: break; + case 4: flags += 1 << 2; break; + case 8: flags += 2 << 2; break; + default: flags += 3 << 2; + } + switch ((int)(sizeof(voidpf))) { + case 2: break; + case 4: flags += 1 << 4; break; + case 8: flags += 2 << 4; break; + default: flags += 3 << 4; + } + switch ((int)(sizeof(z_off_t))) { + case 2: break; + case 4: flags += 1 << 6; break; + case 8: flags += 2 << 6; break; + default: flags += 3 << 6; + } +#ifdef ZLIB_DEBUG + flags += 1 << 8; +#endif +#if defined(ASMV) || defined(ASMINF) + flags += 1 << 9; +#endif +#ifdef ZLIB_WINAPI + flags += 1 << 10; +#endif +#ifdef BUILDFIXED + flags += 1 << 12; +#endif +#ifdef DYNAMIC_CRC_TABLE + flags += 1 << 13; +#endif +#ifdef NO_GZCOMPRESS + flags += 1L << 16; +#endif +#ifdef NO_GZIP + flags += 1L << 17; +#endif +#ifdef PKZIP_BUG_WORKAROUND + flags += 1L << 20; +#endif +#ifdef FASTEST + flags += 1L << 21; +#endif +#if defined(STDC) || defined(Z_HAVE_STDARG_H) +# ifdef NO_vsnprintf + flags += 1L << 25; +# ifdef HAS_vsprintf_void + flags += 1L << 26; +# endif +# else +# ifdef HAS_vsnprintf_void + flags += 1L << 26; +# endif +# endif +#else + flags += 1L << 24; +# ifdef NO_snprintf + flags += 1L << 25; +# ifdef HAS_sprintf_void + flags += 1L << 26; +# endif +# else +# ifdef HAS_snprintf_void + flags += 1L << 26; +# endif +# endif +#endif + return flags; +} + +#ifdef ZLIB_DEBUG +#include +# ifndef verbose +# define verbose 0 +# endif +int ZLIB_INTERNAL z_verbose = verbose; + +void ZLIB_INTERNAL z_error (m) + char *m; +{ + fprintf(stderr, "%s\n", m); + exit(1); +} +#endif + +/* exported to allow conversion of error code to string for compress() and + * uncompress() + */ +const char * ZEXPORT zError(err) + int err; +{ + return ERR_MSG(err); +} + +#if defined(_WIN32_WCE) + /* The Microsoft C Run-Time Library for Windows CE doesn't have + * errno. We define it as a global variable to simplify porting. + * Its value is always 0 and should not be used. + */ + int errno = 0; +#endif + +#ifndef HAVE_MEMCPY + +void ZLIB_INTERNAL zmemcpy(dest, source, len) + Bytef* dest; + const Bytef* source; + uInt len; +{ + if (len == 0) return; + do { + *dest++ = *source++; /* ??? to be unrolled */ + } while (--len != 0); +} + +int ZLIB_INTERNAL zmemcmp(s1, s2, len) + const Bytef* s1; + const Bytef* s2; + uInt len; +{ + uInt j; + + for (j = 0; j < len; j++) { + if (s1[j] != s2[j]) return 2*(s1[j] > s2[j])-1; + } + return 0; +} + +void ZLIB_INTERNAL zmemzero(dest, len) + Bytef* dest; + uInt len; +{ + if (len == 0) return; + do { + *dest++ = 0; /* ??? to be unrolled */ + } while (--len != 0); +} +#endif + +#ifndef Z_SOLO + +#ifdef SYS16BIT + +#ifdef __TURBOC__ +/* Turbo C in 16-bit mode */ + +# define MY_ZCALLOC + +/* Turbo C malloc() does not allow dynamic allocation of 64K bytes + * and farmalloc(64K) returns a pointer with an offset of 8, so we + * must fix the pointer. Warning: the pointer must be put back to its + * original form in order to free it, use zcfree(). + */ + +#define MAX_PTR 10 +/* 10*64K = 640K */ + +local int next_ptr = 0; + +typedef struct ptr_table_s { + voidpf org_ptr; + voidpf new_ptr; +} ptr_table; + +local ptr_table table[MAX_PTR]; +/* This table is used to remember the original form of pointers + * to large buffers (64K). Such pointers are normalized with a zero offset. + * Since MSDOS is not a preemptive multitasking OS, this table is not + * protected from concurrent access. This hack doesn't work anyway on + * a protected system like OS/2. Use Microsoft C instead. + */ + +voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, unsigned items, unsigned size) +{ + voidpf buf; + ulg bsize = (ulg)items*size; + + (void)opaque; + + /* If we allocate less than 65520 bytes, we assume that farmalloc + * will return a usable pointer which doesn't have to be normalized. + */ + if (bsize < 65520L) { + buf = farmalloc(bsize); + if (*(ush*)&buf != 0) return buf; + } else { + buf = farmalloc(bsize + 16L); + } + if (buf == NULL || next_ptr >= MAX_PTR) return NULL; + table[next_ptr].org_ptr = buf; + + /* Normalize the pointer to seg:0 */ + *((ush*)&buf+1) += ((ush)((uch*)buf-0) + 15) >> 4; + *(ush*)&buf = 0; + table[next_ptr++].new_ptr = buf; + return buf; +} + +void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr) +{ + int n; + + (void)opaque; + + if (*(ush*)&ptr != 0) { /* object < 64K */ + farfree(ptr); + return; + } + /* Find the original pointer */ + for (n = 0; n < next_ptr; n++) { + if (ptr != table[n].new_ptr) continue; + + farfree(table[n].org_ptr); + while (++n < next_ptr) { + table[n-1] = table[n]; + } + next_ptr--; + return; + } + Assert(0, "zcfree: ptr not found"); +} + +#endif /* __TURBOC__ */ + + +#ifdef M_I86 +/* Microsoft C in 16-bit mode */ + +# define MY_ZCALLOC + +#if (!defined(_MSC_VER) || (_MSC_VER <= 600)) +# define _halloc halloc +# define _hfree hfree +#endif + +voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, uInt items, uInt size) +{ + (void)opaque; + return _halloc((long)items, size); +} + +void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr) +{ + (void)opaque; + _hfree(ptr); +} + +#endif /* M_I86 */ + +#endif /* SYS16BIT */ + + +#ifndef MY_ZCALLOC /* Any system without a special alloc function */ + +#ifndef STDC +extern voidp malloc OF((uInt size)); +extern voidp calloc OF((uInt items, uInt size)); +extern void free OF((voidpf ptr)); +#endif + +voidpf ZLIB_INTERNAL zcalloc (opaque, items, size) + voidpf opaque; + unsigned items; + unsigned size; +{ + (void)opaque; + return sizeof(uInt) > 2 ? (voidpf)malloc(items * size) : + (voidpf)calloc(items, size); +} + +void ZLIB_INTERNAL zcfree (opaque, ptr) + voidpf opaque; + voidpf ptr; +{ + (void)opaque; + free(ptr); +} + +#endif /* MY_ZCALLOC */ + +#endif /* !Z_SOLO */ diff --git a/waterbox/nyma/zlib/zutil.h b/waterbox/nyma/zlib/zutil.h new file mode 100644 index 0000000000..b079ea6a80 --- /dev/null +++ b/waterbox/nyma/zlib/zutil.h @@ -0,0 +1,271 @@ +/* zutil.h -- internal interface and configuration of the compression library + * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* WARNING: this file should *not* be used by applications. It is + part of the implementation of the compression library and is + subject to change. Applications should only use zlib.h. + */ + +/* @(#) $Id$ */ + +#ifndef ZUTIL_H +#define ZUTIL_H + +#ifdef HAVE_HIDDEN +# define ZLIB_INTERNAL __attribute__((visibility ("hidden"))) +#else +# define ZLIB_INTERNAL +#endif + +#include "zlib.h" + +#if defined(STDC) && !defined(Z_SOLO) +# if !(defined(_WIN32_WCE) && defined(_MSC_VER)) +# include +# endif +# include +# include +#endif + +#ifdef Z_SOLO + typedef long ptrdiff_t; /* guess -- will be caught if guess is wrong */ +#endif + +#ifndef local +# define local static +#endif +/* since "static" is used to mean two completely different things in C, we + define "local" for the non-static meaning of "static", for readability + (compile with -Dlocal if your debugger can't find static symbols) */ + +typedef unsigned char uch; +typedef uch FAR uchf; +typedef unsigned short ush; +typedef ush FAR ushf; +typedef unsigned long ulg; + +extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ +/* (size given to avoid silly warnings with Visual C++) */ + +#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)] + +#define ERR_RETURN(strm,err) \ + return (strm->msg = ERR_MSG(err), (err)) +/* To be used only when the state is known to be valid */ + + /* common constants */ + +#ifndef DEF_WBITS +# define DEF_WBITS MAX_WBITS +#endif +/* default windowBits for decompression. MAX_WBITS is for compression only */ + +#if MAX_MEM_LEVEL >= 8 +# define DEF_MEM_LEVEL 8 +#else +# define DEF_MEM_LEVEL MAX_MEM_LEVEL +#endif +/* default memLevel */ + +#define STORED_BLOCK 0 +#define STATIC_TREES 1 +#define DYN_TREES 2 +/* The three kinds of block type */ + +#define MIN_MATCH 3 +#define MAX_MATCH 258 +/* The minimum and maximum match lengths */ + +#define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */ + + /* target dependencies */ + +#if defined(MSDOS) || (defined(WINDOWS) && !defined(WIN32)) +# define OS_CODE 0x00 +# ifndef Z_SOLO +# if defined(__TURBOC__) || defined(__BORLANDC__) +# if (__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__)) + /* Allow compilation with ANSI keywords only enabled */ + void _Cdecl farfree( void *block ); + void *_Cdecl farmalloc( unsigned long nbytes ); +# else +# include +# endif +# else /* MSC or DJGPP */ +# include +# endif +# endif +#endif + +#ifdef AMIGA +# define OS_CODE 1 +#endif + +#if defined(VAXC) || defined(VMS) +# define OS_CODE 2 +# define F_OPEN(name, mode) \ + fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512") +#endif + +#ifdef __370__ +# if __TARGET_LIB__ < 0x20000000 +# define OS_CODE 4 +# elif __TARGET_LIB__ < 0x40000000 +# define OS_CODE 11 +# else +# define OS_CODE 8 +# endif +#endif + +#if defined(ATARI) || defined(atarist) +# define OS_CODE 5 +#endif + +#ifdef OS2 +# define OS_CODE 6 +# if defined(M_I86) && !defined(Z_SOLO) +# include +# endif +#endif + +#if defined(MACOS) || defined(TARGET_OS_MAC) +# define OS_CODE 7 +# ifndef Z_SOLO +# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os +# include /* for fdopen */ +# else +# ifndef fdopen +# define fdopen(fd,mode) NULL /* No fdopen() */ +# endif +# endif +# endif +#endif + +#ifdef __acorn +# define OS_CODE 13 +#endif + +#if defined(WIN32) && !defined(__CYGWIN__) +# define OS_CODE 10 +#endif + +#ifdef _BEOS_ +# define OS_CODE 16 +#endif + +#ifdef __TOS_OS400__ +# define OS_CODE 18 +#endif + +#ifdef __APPLE__ +# define OS_CODE 19 +#endif + +#if defined(_BEOS_) || defined(RISCOS) +# define fdopen(fd,mode) NULL /* No fdopen() */ +#endif + +#if (defined(_MSC_VER) && (_MSC_VER > 600)) && !defined __INTERIX +# if defined(_WIN32_WCE) +# define fdopen(fd,mode) NULL /* No fdopen() */ +# ifndef _PTRDIFF_T_DEFINED + typedef int ptrdiff_t; +# define _PTRDIFF_T_DEFINED +# endif +# else +# define fdopen(fd,type) _fdopen(fd,type) +# endif +#endif + +#if defined(__BORLANDC__) && !defined(MSDOS) + #pragma warn -8004 + #pragma warn -8008 + #pragma warn -8066 +#endif + +/* provide prototypes for these when building zlib without LFS */ +#if !defined(_WIN32) && \ + (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0) + ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); +#endif + + /* common defaults */ + +#ifndef OS_CODE +# define OS_CODE 3 /* assume Unix */ +#endif + +#ifndef F_OPEN +# define F_OPEN(name, mode) fopen((name), (mode)) +#endif + + /* functions */ + +#if defined(pyr) || defined(Z_SOLO) +# define NO_MEMCPY +#endif +#if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__) + /* Use our own functions for small and medium model with MSC <= 5.0. + * You may have to use the same strategy for Borland C (untested). + * The __SC__ check is for Symantec. + */ +# define NO_MEMCPY +#endif +#if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY) +# define HAVE_MEMCPY +#endif +#ifdef HAVE_MEMCPY +# ifdef SMALL_MEDIUM /* MSDOS small or medium model */ +# define zmemcpy _fmemcpy +# define zmemcmp _fmemcmp +# define zmemzero(dest, len) _fmemset(dest, 0, len) +# else +# define zmemcpy memcpy +# define zmemcmp memcmp +# define zmemzero(dest, len) memset(dest, 0, len) +# endif +#else + void ZLIB_INTERNAL zmemcpy OF((Bytef* dest, const Bytef* source, uInt len)); + int ZLIB_INTERNAL zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len)); + void ZLIB_INTERNAL zmemzero OF((Bytef* dest, uInt len)); +#endif + +/* Diagnostic functions */ +#ifdef ZLIB_DEBUG +# include + extern int ZLIB_INTERNAL z_verbose; + extern void ZLIB_INTERNAL z_error OF((char *m)); +# define Assert(cond,msg) {if(!(cond)) z_error(msg);} +# define Trace(x) {if (z_verbose>=0) fprintf x ;} +# define Tracev(x) {if (z_verbose>0) fprintf x ;} +# define Tracevv(x) {if (z_verbose>1) fprintf x ;} +# define Tracec(c,x) {if (z_verbose>0 && (c)) fprintf x ;} +# define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;} +#else +# define Assert(cond,msg) +# define Trace(x) +# define Tracev(x) +# define Tracevv(x) +# define Tracec(c,x) +# define Tracecv(c,x) +#endif + +#ifndef Z_SOLO + voidpf ZLIB_INTERNAL zcalloc OF((voidpf opaque, unsigned items, + unsigned size)); + void ZLIB_INTERNAL zcfree OF((voidpf opaque, voidpf ptr)); +#endif + +#define ZALLOC(strm, items, size) \ + (*((strm)->zalloc))((strm)->opaque, (items), (size)) +#define ZFREE(strm, addr) (*((strm)->zfree))((strm)->opaque, (voidpf)(addr)) +#define TRY_FREE(s, p) {if (p) ZFREE(s, p);} + +/* Reverse the bytes in a 32-bit value */ +#define ZSWAP32(q) ((((q) >> 24) & 0xff) + (((q) >> 8) & 0xff00) + \ + (((q) & 0xff00) << 8) + (((q) & 0xff) << 24)) + +#endif /* ZUTIL_H */ From 9f358bc8cc7ce110acb00cee8b637ef747b7448b Mon Sep 17 00:00:00 2001 From: nattthebear Date: Thu, 21 May 2020 20:32:42 -0400 Subject: [PATCH 05/29] pcfx compiles --- waterbox/common.mak | 2 +- waterbox/nyma/Interfaces.cpp | 15 +-------------- waterbox/nyma/common.mak | 8 ++++++++ waterbox/nyma/common/config.h | 2 +- waterbox/nyma/pcfx.mak | 13 +++++++++++++ 5 files changed, 24 insertions(+), 16 deletions(-) create mode 100644 waterbox/nyma/pcfx.mak diff --git a/waterbox/common.mak b/waterbox/common.mak index 20185c123e..fda44f49d3 100644 --- a/waterbox/common.mak +++ b/waterbox/common.mak @@ -34,7 +34,7 @@ CXXFLAGS := $(CXXFLAGS) $(COMMONFLAGS) -I$(SYSROOT)/include/c++/v1 -fno-use-cxa- CXXFLAGS_DEBUG := -O0 -g CXXFLAGS_RELEASE := -O3 -flto -EXTRA_LIBS := -L $(SYSROOT)/lib/linux -lclang_rt.builtins-x86_64 +EXTRA_LIBS := -L $(SYSROOT)/lib/linux -lclang_rt.builtins-x86_64 $(EXTRA_LIBS) ifneq ($(filter %.cpp,$(SRCS)),) EXTRA_LIBS := -lc++ -lc++abi -lunwind $(EXTRA_LIBS) endif diff --git a/waterbox/nyma/Interfaces.cpp b/waterbox/nyma/Interfaces.cpp index a131a61569..7e7c895503 100644 --- a/waterbox/nyma/Interfaces.cpp +++ b/waterbox/nyma/Interfaces.cpp @@ -9,6 +9,7 @@ namespace Mednafen { MDFNGI *MDFNGameInfo = NULL; + NativeVFS NVFS; std::string MDFN_MakeFName(MakeFName_Type type, int id1, const char *cd1) { @@ -73,20 +74,6 @@ namespace Mednafen void MDFNMP_ApplyPeriodicCheats(void) {} - // file.h - bool MDFN_DumpToFile(const std::string& path, const void *data, const uint64 length, bool throw_on_error) - { - return true; - } - bool MDFN_DumpToFile(const std::string& path, const std::vector &pearpairs, bool throw_on_error) - { - return true; - } - std::unique_ptr MDFN_AmbigGZOpenHelper(const std::string& path, std::vector good_sizes) - { - return nullptr; - } - // player.h void Player_Init(int tsongs, const std::string &album, const std::string &artist, const std::string ©right, const std::vector &snames, bool override_gi) {} diff --git a/waterbox/nyma/common.mak b/waterbox/nyma/common.mak index bb0c0f4c01..30ccfbb4f7 100644 --- a/waterbox/nyma/common.mak +++ b/waterbox/nyma/common.mak @@ -19,6 +19,7 @@ MEDNAFLAGS := \ CCFLAGS := $(MEDNAFLAGS) -std=gnu99 CXXFLAGS := $(MEDNAFLAGS) -std=gnu++11 +EXTRA_LIBS := -lz cppdir = $(shell find mednafen/src/$(1) -type f -name '*.cpp') cdir = $(shell find mednafen/src/$(1) -type f -name '*.c') @@ -31,13 +32,20 @@ OUT_DIR := obj/$(MODULENAME) SRCS := \ mednafen/src/error.cpp \ + mednafen/src/VirtualFS.cpp \ mednafen/src/FileStream.cpp \ + mednafen/src/MemoryStream.cpp \ mednafen/src/Stream.cpp \ + mednafen/src/file.cpp \ + mednafen/src/NativeVFS.cpp \ + mednafen/src/IPSPatcher.cpp \ mednafen/src/Time.cpp \ mednafen/src/git.cpp \ + mednafen/src/endian.cpp \ $(call cppdir,string) \ $(call cppdir,hash) \ $(call cdir,trio) \ $(call cdir,cputest) \ + $(call cppdir,compress) \ $(filter-out %generate.cpp,$(call cppdir,sound)) \ Interfaces.cpp diff --git a/waterbox/nyma/common/config.h b/waterbox/nyma/common/config.h index ac6ce75801..402133fa4e 100644 --- a/waterbox/nyma/common/config.h +++ b/waterbox/nyma/common/config.h @@ -296,7 +296,7 @@ #define HAVE_MEMSET 1 /* Define to 1 if you have the `mkdir' function. */ -#undef HAVE_MKDIR +#define HAVE_MKDIR 1 /* Define to 1 if you have a working `mmap' system call. */ #undef HAVE_MMAP diff --git a/waterbox/nyma/pcfx.mak b/waterbox/nyma/pcfx.mak new file mode 100644 index 0000000000..b970306c4e --- /dev/null +++ b/waterbox/nyma/pcfx.mak @@ -0,0 +1,13 @@ +include common.mak + +SRCS += \ + $(filter-out %debug.cpp,$(call cppdir,pcfx)) \ + $(call cppdir,hw_cpu/v810) \ + $(filter-out %CDAFReader_SF.cpp,$(call cppdir,cdrom)) \ + $(call cppdir,hw_video/huc6270) \ + $(call cppdir,hw_sound/pce_psg) \ + $(call cdir,tremor) \ + $(call cdir,mpcdec) \ + mednafen/src/mthreading/MThreading_POSIX.cpp + +include ../common.mak From 39c0402bd80a7f9a9e9e50045486ead7ec766205 Mon Sep 17 00:00:00 2001 From: nattthebear Date: Fri, 22 May 2020 13:53:34 -0400 Subject: [PATCH 06/29] Starting to work on some api stuff ngp only for now --- waterbox/nyma/Interfaces.cpp | 37 ++++- waterbox/nyma/NymaCore.cpp | 269 +++++++++++++++++++++++++++++++++++ waterbox/nyma/common.mak | 3 +- waterbox/nyma/common/nyma.h | 4 + waterbox/nyma/ngp.cpp | 13 ++ waterbox/nyma/ngp.mak | 3 +- 6 files changed, 322 insertions(+), 7 deletions(-) create mode 100644 waterbox/nyma/NymaCore.cpp create mode 100644 waterbox/nyma/common/nyma.h create mode 100644 waterbox/nyma/ngp.cpp diff --git a/waterbox/nyma/Interfaces.cpp b/waterbox/nyma/Interfaces.cpp index 7e7c895503..3f05ff2d30 100644 --- a/waterbox/nyma/Interfaces.cpp +++ b/waterbox/nyma/Interfaces.cpp @@ -6,6 +6,9 @@ #include "mednafen/src/mednafen-driver.h" #include "mednafen/src/player.h" +#include +#include + namespace Mednafen { MDFNGI *MDFNGameInfo = NULL; @@ -17,16 +20,40 @@ namespace Mednafen } // mednafen-driver.h + static int curindent = 0; void MDFN_indent(int indent) - {} + { + curindent += indent; + if(curindent < 0) + { + fprintf(stderr, "MDFN_indent negative!\n"); + curindent = 0; + } + } void MDFN_printf(const char *format, ...) noexcept - {} + { + for (int i = 0; i < curindent; i++) + putchar('\t'); + va_list argp; + va_start(argp, format); + vprintf(format, argp); + va_end(argp); + } void MDFND_OutputNotice(MDFN_NoticeType t, const char* s) noexcept - {} + { + fputs(s, t == MDFN_NOTICE_ERROR ? stderr : stdout); + fputc('\n', t == MDFN_NOTICE_ERROR ? stderr : stdout); + } void MDFND_OutputInfo(const char* s) noexcept - {} + { + puts(s); + } void MDFN_Notify(MDFN_NoticeType t, const char* format, ...) noexcept - {} + { + va_list argp; + va_start(argp, format); + vfprintf(t == MDFN_NOTICE_ERROR ? stderr : stdout, format, argp); + } void MDFND_MidSync(EmulateSpecStruct *espec, const unsigned flags) {} diff --git a/waterbox/nyma/NymaCore.cpp b/waterbox/nyma/NymaCore.cpp new file mode 100644 index 0000000000..5b44c5097a --- /dev/null +++ b/waterbox/nyma/NymaCore.cpp @@ -0,0 +1,269 @@ +#include "mednafen/src/types.h" +#include +#include +#include +#include +#include "mednafen/src/FileStream.h" +#include "nyma.h" + +using namespace Mednafen; + +#define Game MDFNGameInfo + +static EmulateSpecStruct* EES; +static MDFN_Surface* Surf; +static uint32_t* pixels; +static int16_t* samples; + +struct InitData +{ + const char* FileNameBase; + const char* FileNameExt; + const char* FileNameFull; +}; + +enum { MAX_PORTS = 16 }; +enum { MAX_PORT_DATA = 16 }; +static uint8_t InputPortData[MAX_PORTS * MAX_PORT_DATA]; + +ECL_EXPORT bool Init(const InitData& data) +{ + try + { + SetupMDFNGameInfo(); + + pixels = new uint32_t[Game->fb_width * Game->fb_height]; + samples = new int16_t[22050 * 2]; + Surf = new MDFN_Surface( + pixels, Game->fb_width, Game->fb_height, Game->fb_width, + MDFN_PixelFormat(MDFN_COLORSPACE_RGB, 0, 8, 16, 24) + ); + EES = new EmulateSpecStruct(); + EES->surface = Surf; + EES->VideoFormatChanged = true; + EES->LineWidths = new int32_t[Game->fb_height]; + EES->SoundBuf = samples; + EES->SoundBufMaxSize = 22050; + EES->SoundFormatChanged = true; + EES->SoundRate = 44100; + + GameFile gf({ + &NVFS, + "", + std::unique_ptr(new FileStream(data.FileNameFull, FileStream::MODE_READ, false)).get(), + data.FileNameExt, + data.FileNameBase, + &NVFS, + "", + data.FileNameBase + }); + + Game->Load(&gf); + } + catch(...) + { + return false; + } + return true; +} + +struct MyFrameInfo: public FrameInfo +{ + // true to skip video rendering + int32_t SkipRendering; + // a single MDFN_MSC_* command to run at the start of this frame; 0 if none + int32_t Command; + // raw data for each input port, assumed to be MAX_PORTS * MAX_PORT_DATA long + uint8_t* InputPortData; +}; + +ECL_EXPORT void FrameAdvance(MyFrameInfo& frame) +{ + EES->skip = frame.SkipRendering; + + if (frame.Command) + Game->DoSimpleCommand(frame.Command); + + memcpy(InputPortData, frame.InputPortData, sizeof(InputPortData)); + + Game->TransformInput(); + Game->Emulate(EES); + + EES->VideoFormatChanged = false; + EES->SoundFormatChanged = false; + frame.Cycles = EES->MasterCycles; // TODO: Was this supposed to be total or delta? + memcpy(frame.SoundBuffer, EES->SoundBuf, EES->SoundBufSize * 4); + frame.Samples = EES->SoundBufSize; + + // TODO: Use linewidths + int w = EES->DisplayRect.w; + int h = EES->DisplayRect.h; + frame.Width = w; + frame.Height = h; + int srcp = Game->fb_width; + int dstp = Game->fb_height; + uint32_t* src = pixels + EES->DisplayRect.x + EES->DisplayRect.y * srcp; + uint32_t* dst = pixels; + for (int line = 0; line < h; line++) + { + memcpy(dst, src, w * 4); + src += srcp; + dst += dstp; + } +} + +ECL_EXPORT void SetLayers(uint64_t layers) +{ + Game->SetLayerEnableMask(layers); +} + +ECL_EXPORT void GetMemoryAreas(MemoryArea* m) +{} + +ECL_EXPORT void SetInputCallback(void (*cb)()) +{} + +// same information as PortInfo, but easier to marshal +struct NPortInfo +{ + const char *ShortName; + const char *FullName; + const char *DefaultDeviceShortName; + struct NDeviceInfo + { + const char *ShortName; + const char *FullName; + const char *Description; + uint32_t Flags; + uint32_t ByteLength; + struct NInput + { + const char *SettingName; + const char *Name; + int16_t ConfigOrder; + uint16_t BitOffset; + InputDeviceInputType Type; // uint8_t + uint8_t Flags; + uint8_t BitSize; + uint8_t _Padding; + union + { + struct + { + const char* ExcludeName; + } Button; + struct + { + // negative, then positive + const char* SettingName[2]; + const char* Name[2]; + } Axis; + struct + { + struct + { + const char* SettingName; + const char* Name; + const char* Description; + }* Positions; + uint32_t NumPositions; + uint32_t DefaultPosition; + } Switch; + struct + { + struct + { + const char* ShortName; + const char* Name; + int32_t Color; // (msb)0RGB(lsb), -1 for unused. + int32_t _Padding; + }* States; + uint32_t NumStates; + } Status; + }; + } Inputs[256]; + } Devices[32]; +}; + +NPortInfo PortInfos[MAX_PORTS] = {}; + +ECL_EXPORT NPortInfo* GetInputDevices() +{ + for (unsigned port = 0; port < MAX_PORTS && port < Game->PortInfo.size(); port++) + { + auto& a = PortInfos[port]; + auto& x = Game->PortInfo[port]; + a.ShortName = x.ShortName; + a.FullName = x.FullName; + a.DefaultDeviceShortName = x.DefaultDevice; + for (unsigned dev = 0; dev < 32 && dev < x.DeviceInfo.size(); dev++) + { + auto& b = a.Devices[dev]; + auto& y = x.DeviceInfo[dev]; + b.ShortName = y.ShortName; + b.FullName = y.FullName; + b.Description = y.Description; + b.Flags = y.Flags; + b.ByteLength = y.IDII.InputByteSize; + for (unsigned input = 0; input < 256 && input < y.IDII.size(); input++) + { + auto& c = b.Inputs[input]; + auto& z = y.IDII[input]; + c.SettingName = z.SettingName; + c.Name = z.Name; + c.ConfigOrder = z.ConfigOrder; + c.BitOffset = z.BitOffset; + c.Type = z.Type; + c.Flags = z.Flags; + c.BitSize = z.BitSize; + switch (z.Type) + { + case IDIT_BUTTON: + case IDIT_BUTTON_CAN_RAPID: + c.Button.ExcludeName = z.Button.ExcludeName; + break; + case IDIT_SWITCH: + c.Switch.NumPositions = z.Switch.NumPos; + c.Switch.DefaultPosition = z.Switch.DefPos; + c.Switch.Positions = (decltype(c.Switch.Positions))calloc(z.Switch.NumPos, sizeof(*c.Switch.Positions)); + for (unsigned i = 0; i < z.Switch.NumPos; i++) + { + c.Switch.Positions[i].SettingName = z.Switch.Pos[i].SettingName; + c.Switch.Positions[i].Name = z.Switch.Pos[i].Name; + c.Switch.Positions[i].Description = z.Switch.Pos[i].Description; + } + break; + case IDIT_STATUS: + c.Status.NumStates = z.Status.NumStates; + c.Status.States = (decltype(c.Status.States))calloc(z.Status.NumStates, sizeof(*c.Status.States)); + for (unsigned i = 0; i < z.Status.NumStates; i++) + { + c.Status.States[i].ShortName = z.Status.States[i].ShortName; + c.Status.States[i].Name = z.Status.States[i].Name; + c.Status.States[i].Color = z.Status.States[i].Color; + } + break; + case IDIT_AXIS: + case IDIT_AXIS_REL: + c.Axis.SettingName[0] = z.Axis.sname_dir[0]; + c.Axis.SettingName[1] = z.Axis.sname_dir[1]; + c.Axis.Name[0] = z.Axis.name_dir[0]; + c.Axis.Name[1] = z.Axis.name_dir[1]; + break; + default: + // other types have no extended information + break; + } + } + } + } + return PortInfos; +} + +ECL_EXPORT void SetInputDevices(const char** devices) +{ + for (unsigned port = 0; port < MAX_PORTS && devices[port]; port++) + { + Game->SetInput(port, devices[port], &InputPortData[port * MAX_PORT_DATA]); + } +} diff --git a/waterbox/nyma/common.mak b/waterbox/nyma/common.mak index 30ccfbb4f7..051cb857d4 100644 --- a/waterbox/nyma/common.mak +++ b/waterbox/nyma/common.mak @@ -47,5 +47,6 @@ SRCS := \ $(call cdir,trio) \ $(call cdir,cputest) \ $(call cppdir,compress) \ + $(call cppdir,video) \ $(filter-out %generate.cpp,$(call cppdir,sound)) \ - Interfaces.cpp + Interfaces.cpp NymaCore.cpp diff --git a/waterbox/nyma/common/nyma.h b/waterbox/nyma/common/nyma.h new file mode 100644 index 0000000000..a391c1108b --- /dev/null +++ b/waterbox/nyma/common/nyma.h @@ -0,0 +1,4 @@ +#pragma once + +// the one linked core should set the MDFNGameInfo global +void SetupMDFNGameInfo(); diff --git a/waterbox/nyma/ngp.cpp b/waterbox/nyma/ngp.cpp new file mode 100644 index 0000000000..48acb40608 --- /dev/null +++ b/waterbox/nyma/ngp.cpp @@ -0,0 +1,13 @@ +#include "mednafen/src/types.h" +#include "nyma.h" +#include +#include "mednafen/src/ngp/neopop.h" + +using namespace MDFN_IEN_NGP; + +extern Mednafen::MDFNGI EmulatedNGP; + +void SetupMDFNGameInfo() +{ + Mednafen::MDFNGameInfo = &EmulatedNGP; +} diff --git a/waterbox/nyma/ngp.mak b/waterbox/nyma/ngp.mak index 8f782fc593..82aeceeeb6 100644 --- a/waterbox/nyma/ngp.mak +++ b/waterbox/nyma/ngp.mak @@ -2,6 +2,7 @@ include common.mak SRCS += \ $(call cppdir,ngp) \ - $(call cppdir,hw_cpu/z80-fuse) + $(call cppdir,hw_cpu/z80-fuse) \ + ngp.cpp include ../common.mak From 2de9c1d117fb3cdf9fa2224876bbb9f7bb4b983f Mon Sep 17 00:00:00 2001 From: nattthebear Date: Fri, 22 May 2020 13:58:26 -0400 Subject: [PATCH 07/29] Teach yourself C++ in 5000 easy crashes --- waterbox/nyma/NymaCore.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/waterbox/nyma/NymaCore.cpp b/waterbox/nyma/NymaCore.cpp index 5b44c5097a..6bbf070a03 100644 --- a/waterbox/nyma/NymaCore.cpp +++ b/waterbox/nyma/NymaCore.cpp @@ -47,10 +47,11 @@ ECL_EXPORT bool Init(const InitData& data) EES->SoundFormatChanged = true; EES->SoundRate = 44100; + std::unique_ptr gamestream(new FileStream(data.FileNameFull, FileStream::MODE_READ, false)); GameFile gf({ &NVFS, "", - std::unique_ptr(new FileStream(data.FileNameFull, FileStream::MODE_READ, false)).get(), + gamestream.get(), data.FileNameExt, data.FileNameBase, &NVFS, From 0f65351e136a3be9e96529b8e916493673c216fb Mon Sep 17 00:00:00 2001 From: nattthebear Date: Fri, 22 May 2020 18:01:48 -0400 Subject: [PATCH 08/29] Marching onward --- src/BizHawk.BizInvoke/BizInvoker.cs | 4 +- .../Consoles/NEC/PCE/TerboGrafix.cs | 19 ++ .../Consoles/PC Engine/PCEngine.cs | 2 +- .../Waterbox/LibNymaCore.cs | 270 ++++++++++++++++++ .../Waterbox/NymaCore.cs | 247 ++++++++++++++++ .../Waterbox/WaterboxCore.cs | 2 +- waterbox/nyma/Interfaces.cpp | 4 +- waterbox/nyma/NymaCore.cpp | 54 +++- waterbox/nyma/pce.cpp | 13 + waterbox/nyma/pce.mak | 17 ++ 10 files changed, 613 insertions(+), 19 deletions(-) create mode 100644 src/BizHawk.Emulation.Cores/Consoles/NEC/PCE/TerboGrafix.cs create mode 100644 src/BizHawk.Emulation.Cores/Waterbox/LibNymaCore.cs create mode 100644 src/BizHawk.Emulation.Cores/Waterbox/NymaCore.cs create mode 100644 waterbox/nyma/pce.cpp create mode 100644 waterbox/nyma/pce.mak diff --git a/src/BizHawk.BizInvoke/BizInvoker.cs b/src/BizHawk.BizInvoke/BizInvoker.cs index 3177d7a147..3d99af00b4 100644 --- a/src/BizHawk.BizInvoke/BizInvoker.cs +++ b/src/BizHawk.BizInvoke/BizInvoker.cs @@ -287,7 +287,7 @@ namespace BizHawk.BizInvoke var paramTypes = paramInfos.Select(p => p.ParameterType).ToArray(); var nativeParamTypes = new List(); var returnType = baseMethod.ReturnType; - if (returnType != typeof(void) && !returnType.IsPrimitive) + if (returnType != typeof(void) && !returnType.IsPrimitive && !returnType.IsPointer) { throw new InvalidOperationException("Only primitive return types are supported"); } @@ -527,7 +527,7 @@ namespace BizHawk.BizInvoke return typeof(IntPtr); } - if (type.IsPrimitive || type.IsEnum) + if (type.IsPrimitive || type.IsEnum || type.IsPointer) { il.Emit(OpCodes.Ldarg, (short)idx); return type; diff --git a/src/BizHawk.Emulation.Cores/Consoles/NEC/PCE/TerboGrafix.cs b/src/BizHawk.Emulation.Cores/Consoles/NEC/PCE/TerboGrafix.cs new file mode 100644 index 0000000000..2b893e62ea --- /dev/null +++ b/src/BizHawk.Emulation.Cores/Consoles/NEC/PCE/TerboGrafix.cs @@ -0,0 +1,19 @@ +using BizHawk.Emulation.Common; +using BizHawk.Emulation.Cores.Waterbox; + +namespace BizHawk.Emulation.Cores.Consoles.NEC.PCE +{ + [Core("Terbo Grafix", "Mednafen Team", true, false, "", "", false)] + public class TerboGrafix : NymaCore, IRegionable + { + [CoreConstructor("PCE")] + public TerboGrafix(GameInfo game, byte[] rom, CoreComm comm) + : base(game, rom, comm, new Configuration + { + // TODO: This stuff isn't used so much + }) + { + DoInit(game, rom, "pce.wbx"); + } + } +} diff --git a/src/BizHawk.Emulation.Cores/Consoles/PC Engine/PCEngine.cs b/src/BizHawk.Emulation.Cores/Consoles/PC Engine/PCEngine.cs index b11a4bd28c..823393cd9a 100644 --- a/src/BizHawk.Emulation.Cores/Consoles/PC Engine/PCEngine.cs +++ b/src/BizHawk.Emulation.Cores/Consoles/PC Engine/PCEngine.cs @@ -19,7 +19,7 @@ namespace BizHawk.Emulation.Cores.PCEngine public sealed partial class PCEngine : IEmulator, ISaveRam, IInputPollable, IVideoLogicalOffsets, IRomInfo, IDebuggable, ISettable, IDriveLight, ICodeDataLogger { - [CoreConstructor(new[] { "PCE", "SGX" })] + // [CoreConstructor(new[] { "PCE", "SGX" })] public PCEngine(GameInfo game, byte[] rom, object settings, object syncSettings) { switch (game.System) diff --git a/src/BizHawk.Emulation.Cores/Waterbox/LibNymaCore.cs b/src/BizHawk.Emulation.Cores/Waterbox/LibNymaCore.cs new file mode 100644 index 0000000000..bd3f8668ea --- /dev/null +++ b/src/BizHawk.Emulation.Cores/Waterbox/LibNymaCore.cs @@ -0,0 +1,270 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using BizHawk.BizInvoke; + +namespace BizHawk.Emulation.Cores.Waterbox +{ + public abstract unsafe class LibNymaCore : LibWaterboxCore + { + [StructLayout(LayoutKind.Sequential)] + public class InitData + { + /// + /// Filename without extension. Used in autodetect + /// + public string FileNameBase; + /// + /// Just the extension. Used in autodetect. LOWERCASE PLEASE. + /// + public string FileNameExt; + /// + /// Full filename. This will be fopen()ed by the core + /// + public string FileNameFull; + } + + [BizImport(CC, Compatibility = true)] + public abstract bool Init([In]InitData data); + + public enum CommandType : int + { + NONE = 0x00, + RESET = 0x01, + POWER = 0x02, + + INSERT_COIN = 0x07, + + TOGGLE_DIP0 = 0x10, + TOGGLE_DIP1, + TOGGLE_DIP2, + TOGGLE_DIP3, + TOGGLE_DIP4, + TOGGLE_DIP5, + TOGGLE_DIP6, + TOGGLE_DIP7, + TOGGLE_DIP8, + TOGGLE_DIP9, + TOGGLE_DIP10, + TOGGLE_DIP11, + TOGGLE_DIP12, + TOGGLE_DIP13, + TOGGLE_DIP14, + TOGGLE_DIP15, + } + + [StructLayout(LayoutKind.Sequential)] + public new class FrameInfo : LibWaterboxCore.FrameInfo + { + /// + /// true to skip video rendering + /// + public int SkipRendering; + /// + /// a single command to run at the start of this frame + /// + public CommandType Command; + /// + /// raw data for each input port, assumed to be MAX_PORTS * MAX_PORT_DATA long + /// + public byte* InputPortData; + } + + [BizImport(CC)] + public abstract byte* GetLayerData(); + + /// + /// Gets a string array of valid layers to pass to SetLayers, or null if that method should not be called + /// TODO: This needs to be in NymaCore under a monitor lock + /// + public string[] GetLayerDataReal() + { + var p = GetLayerData(); + if (p == null) + return null; + var ret = new List(); + var q = p; + while (true) + { + if (*q == 0) + { + if (q > p) + ret.Add(Marshal.PtrToStringAnsi((IntPtr)p)); + else + break; + p = ++q; + } + q++; + } + return ret.ToArray(); + } + + /// + /// Set enabled layers (or is it disabled layers?). Only call if GetLayerDataReal() returned non null + /// + /// bitmask in order defined by GetLayerDataReal + [BizImport(CC)] + public abstract void SetLayers(ulong layers); + + public enum InputType : byte + { + PADDING = 0, // n-bit, zero + + BUTTON, // 1-bit + BUTTON_CAN_RAPID, // 1-bit + + SWITCH, // ceil(log2(n))-bit + // Current switch position(default 0). + // Persistent, and bidirectional communication(can be modified driver side, and Mednafen core and emulation module side) + + STATUS, // ceil(log2(n))-bit + // emulation module->driver communication + + AXIS, // 16-bits; 0 through 65535; 32768 is centered position + + POINTER_X, // mouse pointer, 16-bits, signed - in-screen/window range before scaling/offseting normalized coordinates: [0.0, 1.0) + POINTER_Y, // see: mouse_scale_x, mouse_scale_y, mouse_offs_x, mouse_offs_y + + AXIS_REL, // mouse relative motion, 16-bits, signed + + BYTE_SPECIAL, + + RESET_BUTTON, // 1-bit + + BUTTON_ANALOG, // 16-bits, 0 - 65535 + + RUMBLE, // 16-bits, lower 8 bits are weak rumble(0-255), next 8 bits are strong rumble(0-255), 0=no rumble, 255=max rumble. Somewhat subjective, too... + } + + [Flags] + public enum AxisFlags: byte + { + NONE = 0, + // Denotes analog data that may need to be scaled to ensure a more squareish logical range(for emulated analog sticks) + SQLR = 0x01, + // Invert config order of the two components(neg,pos) of the axis + INVERT_CO = 0x02, + SETTINGS_UNDOC = 0x80, + } + + [Flags] + public enum DeviceFlags: uint + { + NONE = 0, + KEYBOARD = 1 + } + + [StructLayout(LayoutKind.Sequential)] + public class NPortInfos + { + [MarshalAs(UnmanagedType.LPArray, SizeConst = 16)] + public NPortInfo[] Infos; + } + [StructLayout(LayoutKind.Sequential)] + public class NPortInfo + { + public string ShortName; + public string FullName; + public string DefaultDeviceShortName; + + [StructLayout(LayoutKind.Sequential)] + public class NDeviceInfo + { + public string ShortName; + public string FullName; + public string Description; + public DeviceFlags Flags; + public uint ByteLength; + [StructLayout(LayoutKind.Sequential)] + public class NInput + { + public string SettingName; + public string Name; + public short ConfigOrder; + public ushort BitOffset; + public InputType Type; + public AxisFlags Flags; + public byte BitSize; + public byte _Padding; + [StructLayout(LayoutKind.Sequential)] + public class Button + { + public string ExcludeName; + } + [StructLayout(LayoutKind.Sequential)] + public class Axis + { + public string SettingsNameNeg; + public string SettingsNamePos; + public string NameNeg; + public string NamePos; + } + [StructLayout(LayoutKind.Sequential)] + public class Switch + { + [StructLayout(LayoutKind.Sequential)] + public class Position + { + public string SettingName; + public string Name; + public string Description; + } + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] + public Position[] Positions; + public uint NumPositions; + public uint DefaultPosition; + } + [StructLayout(LayoutKind.Sequential)] + public class Status + { + public class State + { + public IntPtr ShortName; + public IntPtr Name; + public int Color; // (msb)0RGB(lsb), -1 for unused. + public int _Padding; + } + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] + public State[] States; + public uint NumStates; + } + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 400)] + public byte[] UnionData; + } + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] + public NInput[] Inputs; + } + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] + public NDeviceInfo[] Devices; + } + + [BizImport(CC, Compatibility = true)] + public abstract NPortInfos GetInputDevices(); + + [BizImport(CC, Compatibility = true)] + public abstract void SetInputDevices(string[] devices); + + public enum VideoSystem : int + { + NONE, + PAL, + PAL_M, + NTSC, + SECAM + } + + [StructLayout(LayoutKind.Sequential)] + public class SystemInfo + { + public int MaxWidth; + public int MaxHeight; + public int NominalWidth; + public int NominalHeight; + public VideoSystem VideoSystem; + public int FpsFixed; + } + + [BizImport(CC, Compatibility = true)] + public abstract SystemInfo GetSystemInfo(); + } +} diff --git a/src/BizHawk.Emulation.Cores/Waterbox/NymaCore.cs b/src/BizHawk.Emulation.Cores/Waterbox/NymaCore.cs new file mode 100644 index 0000000000..d463f34c9b --- /dev/null +++ b/src/BizHawk.Emulation.Cores/Waterbox/NymaCore.cs @@ -0,0 +1,247 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using BizHawk.Common; +using BizHawk.Emulation.Common; + +namespace BizHawk.Emulation.Cores.Waterbox +{ + public unsafe abstract class NymaCore : WaterboxCore + { + protected NymaCore(GameInfo game, byte[] rom, CoreComm comm, Configuration c) + : base(comm, c) + { + } + + private LibNymaCore _nyma; + private ControllerAdapter _controllerAdapter; + private readonly byte[] _inputPortData = new byte[16 * 16]; + + protected T DoInit(GameInfo game, byte[] rom, string filename) + where T : LibNymaCore + { + var t = PreInit(new WaterboxOptions + { + // TODO cfg and stuff + Filename = filename, + SbrkHeapSizeKB = 1024 * 16, + SealedHeapSizeKB = 1024 * 16, + InvisibleHeapSizeKB = 1024 * 16, + PlainHeapSizeKB = 1024 * 16, + StartAddress = WaterboxHost.CanonicalStart, + SkipCoreConsistencyCheck = CoreComm.CorePreferences.HasFlag(CoreComm.CorePreferencesFlags.WaterboxCoreConsistencyCheck), + SkipMemoryConsistencyCheck = CoreComm.CorePreferences.HasFlag(CoreComm.CorePreferencesFlags.WaterboxMemoryConsistencyCheck), + }); + _nyma = t; + + using (_exe.EnterExit()) + { + var fn = game.FilesystemSafeName(); + + _exe.AddReadonlyFile(rom, fn); + + var didInit = _nyma.Init(new LibNymaCore.InitData + { + // TODO: Set these as some cores need them + FileNameBase = "", + FileNameExt = "", + FileNameFull = fn + }); + + if (!didInit) + throw new InvalidOperationException("Core rejected the rom!"); + + _exe.RemoveReadonlyFile(fn); + + var info = _nyma.GetSystemInfo(); + _videoBuffer = new int[info.MaxWidth * info.MaxHeight]; + BufferWidth = info.NominalWidth; + BufferHeight = info.NominalHeight; + switch (info.VideoSystem) + { + // TODO: There seriously isn't any region besides these? + case LibNymaCore.VideoSystem.PAL: + case LibNymaCore.VideoSystem.SECAM: + Region = DisplayType.PAL; + break; + case LibNymaCore.VideoSystem.PAL_M: + Region = DisplayType.Dendy; // sort of... + break; + default: + Region = DisplayType.NTSC; + break; + } + VsyncNumerator = info.FpsFixed; + VsyncDenominator = 1 << 24; + + _controllerAdapter = new ControllerAdapter(_nyma.GetInputDevices().Infos, new string[0]); + _nyma.SetInputDevices(_controllerAdapter.Devices); + + PostInit(); + } + + return t; + } + + // todo: bleh + private GCHandle _frameAdvanceInputLock; + + protected override LibWaterboxCore.FrameInfo FrameAdvancePrep(IController controller, bool render, bool rendersound) + { + _controllerAdapter.SetBits(controller, _inputPortData); + _frameAdvanceInputLock = GCHandle.Alloc(_inputPortData, GCHandleType.Pinned); + var ret = new LibNymaCore.FrameInfo + { + SkipRendering = render ? 0 : 1, + Command = LibNymaCore.CommandType.NONE, + InputPortData = (byte*)_frameAdvanceInputLock.AddrOfPinnedObject() + }; + return ret; + } + protected override void FrameAdvancePost() + { + _frameAdvanceInputLock.Free(); + } + + private static T ControllerData(byte[] data) + { + fixed(byte *p = data) + { + return (T)Marshal.PtrToStructure((IntPtr)p, typeof(T)); + } + } + + protected delegate void ControllerThunk(IController c, byte[] b); + + protected class ControllerAdapter + { + public string[] Devices { get; } + public ControllerDefinition Definition { get; } + public ControllerAdapter(LibNymaCore.NPortInfo[] portInfos, string[] devices) + { + var ret = new ControllerDefinition + { + Name = "TODO" + }; + + var finalDevices = new List(); + + for (int i = 0, devByteStart = 0; i < portInfos.Length && portInfos[i].ShortName != null; i++) + { + var port = portInfos[i]; + var devName = i < devices.Length ? devices[i] : port.DefaultDeviceShortName; + finalDevices.Add(devName); + + var dev = port.Devices.SingleOrDefault(d => d.ShortName == devName); + var category = port.FullName + " - " + dev.FullName; + + foreach (var input in dev.Inputs.OrderBy(i => i.ConfigOrder)) + { + var bitSize = (int)input.BitSize; + var bitOffset = (int)input.BitOffset; + var byteStart = devByteStart + bitOffset / 8; + bitOffset %= 8; + var name = input.Name; + switch (input.Type) + { + case LibNymaCore.InputType.PADDING: + { + break; + } + case LibNymaCore.InputType.BUTTON: + case LibNymaCore.InputType.BUTTON_CAN_RAPID: + { + var data = ControllerData(input.UnionData); + // TODO: Wire up data.ExcludeName + ret.BoolButtons.Add(name); + _thunks.Add((c, b) => + { + if (c.IsPressed(name)) + b[byteStart] |= (byte)(1 << bitOffset); + }); + break; + } + case LibNymaCore.InputType.SWITCH: + { + var data = ControllerData(input.UnionData); + // TODO: Possibly bulebutton for 2 states? + ret.AxisControls.Add(name); + ret.AxisRanges.Add(new ControllerDefinition.AxisRange( + 0, (int)data.DefaultPosition, (int)data.NumPositions - 1)); + _thunks.Add((c, b) => + { + var val = (int)Math.Round(c.AxisValue(name)); + b[byteStart] |= (byte)(1 << bitOffset); + }); + break; + } + case LibNymaCore.InputType.AXIS: + { + var data = ControllerData(input.UnionData); + ret.AxisControls.Add(name); + ret.AxisRanges.Add(new ControllerDefinition.AxisRange( + 0, 0x8000, 0xffff, (input.Flags & LibNymaCore.AxisFlags.INVERT_CO) != 0 + )); + _thunks.Add((c, b) => + { + var val = (ushort)Math.Round(c.AxisValue(name)); + b[byteStart] = (byte)val; + b[byteStart + 1] = (byte)(val >> 8); + }); + break; + } + case LibNymaCore.InputType.AXIS_REL: + { + var data = ControllerData(input.UnionData); + ret.AxisControls.Add(name); + ret.AxisRanges.Add(new ControllerDefinition.AxisRange( + -0x8000, 0, 0x7fff, (input.Flags & LibNymaCore.AxisFlags.INVERT_CO) != 0 + )); + _thunks.Add((c, b) => + { + var val = (short)Math.Round(c.AxisValue(name)); + b[byteStart] = (byte)val; + b[byteStart + 1] = (byte)(val >> 8); + }); + break; + } + case LibNymaCore.InputType.POINTER_X: + { + throw new Exception("TODO: Axis ranges are ints????"); + // ret.AxisControls.Add(name); + // ret.AxisRanges.Add(new ControllerDefinition.AxisRange(0, 0.5, 1)); + // break; + } + case LibNymaCore.InputType.POINTER_Y: + { + throw new Exception("TODO: Axis ranges are ints????"); + // ret.AxisControls.Add(name); + // ret.AxisRanges.Add(new ControllerDefinition.AxisRange(0, 0.5, 1, true)); + // break; + } + default: + throw new NotImplementedException($"Unimplemented button type {input.Type}"); + } + ret.CategoryLabels[name] = category; + } + + devByteStart += (int)dev.ByteLength; + } + Definition = ret; + Devices = finalDevices.ToArray(); + } + + private readonly List> _thunks = new List>(); + + public void SetBits(IController src, byte[] dest) + { + Array.Clear(dest, 0, dest.Length); + foreach (var t in _thunks) + t(src, dest); + } + } + + public DisplayType Region { get; protected set; } + } +} diff --git a/src/BizHawk.Emulation.Cores/Waterbox/WaterboxCore.cs b/src/BizHawk.Emulation.Cores/Waterbox/WaterboxCore.cs index 70d3d86422..605e88f004 100644 --- a/src/BizHawk.Emulation.Cores/Waterbox/WaterboxCore.cs +++ b/src/BizHawk.Emulation.Cores/Waterbox/WaterboxCore.cs @@ -329,7 +329,7 @@ namespace BizHawk.Emulation.Cores.Waterbox return _videoBuffer; } - protected readonly int[] _videoBuffer; + protected int[] _videoBuffer; public virtual int VirtualWidth => BufferWidth; public virtual int VirtualHeight => BufferHeight; public int BufferWidth { get; protected set; } diff --git a/waterbox/nyma/Interfaces.cpp b/waterbox/nyma/Interfaces.cpp index 3f05ff2d30..851a42a6a5 100644 --- a/waterbox/nyma/Interfaces.cpp +++ b/waterbox/nyma/Interfaces.cpp @@ -54,7 +54,7 @@ namespace Mednafen va_start(argp, format); vfprintf(t == MDFN_NOTICE_ERROR ? stderr : stdout, format, argp); } - void MDFND_MidSync(EmulateSpecStruct *espec, const unsigned flags) + void MDFN_MidSync(EmulateSpecStruct *espec, const unsigned flags) {} bool MDFNSS_StateAction(StateMem *sm, const unsigned load, const bool data_only, const SFORMAT *sf, const char *sname, const bool optional) noexcept @@ -100,6 +100,8 @@ namespace Mednafen {} void MDFNMP_ApplyPeriodicCheats(void) {} + std::vector SubCheats[8]; + bool SubCheatsOn; // player.h void Player_Init(int tsongs, const std::string &album, const std::string &artist, const std::string ©right, const std::vector &snames, bool override_gi) diff --git a/waterbox/nyma/NymaCore.cpp b/waterbox/nyma/NymaCore.cpp index 6bbf070a03..c2f563fe91 100644 --- a/waterbox/nyma/NymaCore.cpp +++ b/waterbox/nyma/NymaCore.cpp @@ -113,6 +113,33 @@ ECL_EXPORT void FrameAdvance(MyFrameInfo& frame) } } +struct SystemInfo +{ + int32_t MaxWidth; + int32_t MaxHeight; + int32_t NominalWidth; + int32_t NominalHeight; + int32_t VideoSystem; + int32_t FpsFixed; +}; +SystemInfo SI; + +ECL_EXPORT SystemInfo* GetSystemInfo() +{ + SI.MaxWidth = Game->fb_width; + SI.MaxHeight = Game->fb_height; + SI.NominalWidth = Game->nominal_width; + SI.NominalHeight = Game->nominal_height; + SI.VideoSystem = Game->VideoSystem; + SI.FpsFixed = Game->fps; + return &SI; +} + +ECL_EXPORT const char* GetLayerData() +{ + return Game->LayerNames; +} + ECL_EXPORT void SetLayers(uint64_t layers) { Game->SetLayerEnableMask(layers); @@ -127,20 +154,20 @@ ECL_EXPORT void SetInputCallback(void (*cb)()) // same information as PortInfo, but easier to marshal struct NPortInfo { - const char *ShortName; - const char *FullName; - const char *DefaultDeviceShortName; + const char* ShortName; + const char* FullName; + const char* DefaultDeviceShortName; struct NDeviceInfo { - const char *ShortName; - const char *FullName; - const char *Description; + const char* ShortName; + const char* FullName; + const char* Description; uint32_t Flags; uint32_t ByteLength; struct NInput { - const char *SettingName; - const char *Name; + const char* SettingName; + const char* Name; int16_t ConfigOrder; uint16_t BitOffset; InputDeviceInputType Type; // uint8_t @@ -166,7 +193,7 @@ struct NPortInfo const char* SettingName; const char* Name; const char* Description; - }* Positions; + } Positions[16]; uint32_t NumPositions; uint32_t DefaultPosition; } Switch; @@ -178,9 +205,10 @@ struct NPortInfo const char* Name; int32_t Color; // (msb)0RGB(lsb), -1 for unused. int32_t _Padding; - }* States; + } States[16]; uint32_t NumStates; } Status; + uint8_t _Padding2[400]; }; } Inputs[256]; } Devices[32]; @@ -226,8 +254,7 @@ ECL_EXPORT NPortInfo* GetInputDevices() case IDIT_SWITCH: c.Switch.NumPositions = z.Switch.NumPos; c.Switch.DefaultPosition = z.Switch.DefPos; - c.Switch.Positions = (decltype(c.Switch.Positions))calloc(z.Switch.NumPos, sizeof(*c.Switch.Positions)); - for (unsigned i = 0; i < z.Switch.NumPos; i++) + for (unsigned i = 0; i < 16 && i < z.Switch.NumPos; i++) { c.Switch.Positions[i].SettingName = z.Switch.Pos[i].SettingName; c.Switch.Positions[i].Name = z.Switch.Pos[i].Name; @@ -236,8 +263,7 @@ ECL_EXPORT NPortInfo* GetInputDevices() break; case IDIT_STATUS: c.Status.NumStates = z.Status.NumStates; - c.Status.States = (decltype(c.Status.States))calloc(z.Status.NumStates, sizeof(*c.Status.States)); - for (unsigned i = 0; i < z.Status.NumStates; i++) + for (unsigned i = 0; i < 16 && i < z.Status.NumStates; i++) { c.Status.States[i].ShortName = z.Status.States[i].ShortName; c.Status.States[i].Name = z.Status.States[i].Name; diff --git a/waterbox/nyma/pce.cpp b/waterbox/nyma/pce.cpp new file mode 100644 index 0000000000..80637d85f5 --- /dev/null +++ b/waterbox/nyma/pce.cpp @@ -0,0 +1,13 @@ +#include "mednafen/src/types.h" +#include "nyma.h" +#include +#include "mednafen/src/pce/pce.h" + +using namespace MDFN_IEN_PCE; + +extern Mednafen::MDFNGI EmulatedPCE; + +void SetupMDFNGameInfo() +{ + Mednafen::MDFNGameInfo = &EmulatedPCE; +} diff --git a/waterbox/nyma/pce.mak b/waterbox/nyma/pce.mak new file mode 100644 index 0000000000..fb39ef5b55 --- /dev/null +++ b/waterbox/nyma/pce.mak @@ -0,0 +1,17 @@ +include common.mak + +# $(call cppdir,hw_video/huc6270) +# $(call cppdir,hw_sound/pce_psg) + +SRCS += \ + $(filter-out %debug.cpp,$(call cppdir,pce)) \ + $(filter-out %CDAFReader_SF.cpp,$(call cppdir,cdrom)) \ + $(call cdir,tremor) \ + $(call cdir,mpcdec) \ + mednafen/src/mthreading/MThreading_POSIX.cpp \ + $(call cppdir,hw_sound/pce_psg) \ + $(call cppdir,hw_misc/arcade_card) \ + $(call cppdir,hw_video/huc6270) \ + pce.cpp + +include ../common.mak From c8d558a275d353c41d435aff14883f11410793bb Mon Sep 17 00:00:00 2001 From: nattthebear Date: Sat, 23 May 2020 07:14:39 -0400 Subject: [PATCH 09/29] fix set_thread_area + get_thread_area, recompile libc nopic nopie So far I've only recompiled gpgx against the new libc, but I get a 10% smaller wbx file, which is cool --- output/dll/gpgx.wbx.gz | Bin 461860 -> 411333 bytes waterbox/musl | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/output/dll/gpgx.wbx.gz b/output/dll/gpgx.wbx.gz index 7db9eb1b7a4b338ce0ad782ea0b12dd0492b30d7..9045c3e27a51e9c148909f4b2d0f489e2354f53f 100644 GIT binary patch literal 411333 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� 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 z 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

cPsz^ literal 461860 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ℜ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 Date: Sat, 23 May 2020 07:33:31 -0400 Subject: [PATCH 10/29] recompile libcxx and friends with nopic nopie, and recompile libsnes to test it out once again, roughly 10% filesize savings. seems to be about 3% faster too --- output/dll/libsnes.wbx.gz | Bin 459905 -> 426618 bytes .../libcxx/configure-for-waterbox-phase-- | 4 ++-- .../libcxx/configure-for-waterbox-phase-0 | 4 ++-- .../libcxx/configure-for-waterbox-phase-1 | 4 ++-- .../libcxx/configure-for-waterbox-phase-2 | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/output/dll/libsnes.wbx.gz b/output/dll/libsnes.wbx.gz index f1835653be2800007aa7440bdb3b43f7a3094ba2..6852fce6c2eba7414bb71961a6a31fc7341e80a4 100644 GIT binary patch literal 426618 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

    X$kF2@bf2 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 z z#hZ#q{SAG*ZpqiD`YHM{74rI_juC%ePES_IRM1Y#Pv4qGRWRz;mRsnxe+|?)tNBAT ztx*Bg2bFic4JkIMHmO|r>{-sQZ>m3CkyqiSFHsRv@v)+-f~(@_E$>^O3ih{36<~wu z%G?T&{?1!iCGIu0q~){YTXO^RH`r=V6^RWZ=nZ}4cgnAo-IZfLq~9#OS$)fdw44Zj zYoQbN^JXJ)1Htf#WIJK;6EK}aNMn~$O(F?4RGj8@KV1~(Lfhl8n<2NVhY`vlfIH{B zzu1LWc*iP0x2tdXhQWLrIPbqgktzKxIRlS~f!9yTW#4&D+GT*jS$bPA;voLiUE55;%kNWy8tJz^s zM!G6Mn)F2j-J^5`4DTAxuM{5sz2*`O6?XMR=@c@Gr*;YjJDRNg#temNY0}XwAz`K| z3GC$YMTd9OqsbPY`#tzVlH-?eKw2)9TlvM zLvaS%jirB=`0$gMa}r9|N4O+^@EIfuPbfQpl^jpU@Gjt0`H!YiAX#xV>^Fpnq>&od z(fs41Y1}G1Q6tXPSsfxJsi%}(SnCvFQU8?*my?ZH{VyR8G{i8hc)NY}ZxNWUQD6CR z6i9>3qv6iH(P-NfIEd5jD+EoLZtwnV&hn`n#`~SHCW)UyQfe8A(6TQ} z@ZP*{aj3KI&8bLy zC~M29;-U^A8ZTRdf@#NhmbqGYvRs1|8xnW*{>_|M;c77GNStsXs*Fz!RtF%&1yE2c z@S_VPCCsSp+dMm_PEi)cxsj}3t1FV{xL+qSKW@v`&X@&;eQo!l4w=*5Wz-95LelWB zW=R?Qab3}?6?oEJIhM4S_(=6?&z$}Fq!@b(}f%)Rq?q$ZMCNGw6-cW!bz1scb_h2Mf)0e6#p1KGj8m5h?Ngz!U0xb&wCye| zm%H!GF)a2DbQ({)%gV`wB4ea=><6hLVt592A5wA+apkIc3y@Lp<)gi?kTQVQNm zCP({|!}(<&jl~yl%&Q9`1PxpPY6_U8so};XB8A`?WCzfCKs8j4?0QpIfyeouuX3dM z3GT@mkGGy%98gdG0u1x?wfRx$`Df+MqlbBF`Oh#-UiB6w75pe_Jn zxDsCnJAjJDBA>(Rnc@!(C||%7kl@&@;&FcX_w;r+Z?2Y+^e`h=s{7_@)Vi_gBqJAD z7a0@5rFa|O54{sUg{Rx5nb9sgzSS)jwWLQT0d=Yt7bZ9rGc}~6L__Q7EPZY^OR11{ z%O!}0zt+63KBpXhZF*TPARi=U>%bj!NW-czg<*@<}6A@b0SqNk9-cZu^s5CW%PVsp3mKrUlDgzq?Un@ z=gi{8h9>)~Gm7_477k2HNfhuq8v!A!QnMmKG8+fw0lg+LL)`L^@EPg;HtRgv5ja_q zc&FY#k#(vSv%`3}&>+g?d}h8QA;891V1()gboH#`S)>CaQK!dWsY1NgMk|uBKcB>S zxq1l}Bp+{Q_XSS`gqD z^xAUhQ7PCppidx=p%Di*uk5u$vq?)_Oy|ZjHUYK^aKZKisizIOBR>{~l4%67m|79i zZTT}rKfCUNU!$?hML4I$B>F7Av&zMMp;aSUrbH7d`t{)Kzs$rG(8C*fvU;^y%8)x&XwQT)yOp-_6MjZ!uS%r41 zUtx}gIRcBmcK0sY{g72$i~5k7a3>gDSC`IQFb#Eup>z7JVEkF70GY%e+j)}?t)?K^ z4y1htj=Cfn}WK`KKZmW$~Nnd*)X7#@13Qfbh5e{605VtzJVI;#q-rnOjYoG5~< zt<8(r{tc?chV;Jud3Tk*!Nmbr*aYb*Qb_>1{Jj3K`W&&9rlYpY45BbNiM%JWG@El14< zbp(H2Ig9&=y1c`@?Pk%cdOczIm0j>!R{r5n+XKzeNLU<8(EHQU-gxg;e1BE#KxCN< z;wTqW`&^;y?9<}h$$rUbxWP)m)3v1UUcqhz`taWDy^r1}J}U{K*Ve7%K^wziQ%FB9Pu{wZeDN_$P0N>kPA6AE{1TW0j z$2VvvV%>Q05urc-9O(U^1L}2bL=NoLtg4Y6rf_!<2f(o?H_#0GC+;dy$HS22^VIwa zg--_fPYFDhGrtrPPUTKEly`CzcJQYgTpw{>E?aZ#hZPUJMXPU}j9Vc|<1Aek8nVRZ z9&cGyhUJv!?zW-0e~kgJc7I7T^$aHRt8)HI1W(Mef1w`R(-JE)F5RNKuTTzB`fj7X z)_fGjpzZplG|1KOPX5f`(Bm;JZGoYD$Gi%@y6r9P!A5J_7du^#6w&CHB7MVxyC2() z3J7oF6)&ff&ieaxjy~2-t}4lhj20^oPhL+*255pNH8xNYxDTNZ@+A2q%+YO%)PbSnwh0rd)VN(08f*SQVnitqC$1qsLXUFJ+IY}2jPKZ%J|KuyKb9Pp`lCDvrGL4+c32&wa z!D<;XVPQpCF=2IfM#eM-R@Ta1O^$J!Mg-KHTy^EOY3&Je%9uoi`L&=NbU#lnZe z&$Fgg+E>%CH~47N|F>c}vDLDhQ0s8dlGZ2tYM9z)nKsrgBcZ6?b?@X&LqY7yuJ2p* zl*Km>E;q*fEmbvIwmUji@RzMBY2z&T4ikuBEw`r>48PjKSmP2n|C*nlXIc+}=EE*4 z#hx3uiX`>)akhsyh_`?96VP%Ej2w-LI#1Vo?`omimi2l$ZA-0S{Je$e!P#g|+Ad_N z>ciO8Rr4Re$)At0?7g?2^&^A6jumq#`gygVVhm0Wd;qU4X}0vuq-<&S@!xl5VHh&ovp(id<*PK^og$@(li~O+hYZ*kg#mfd9t3VaJ)c zj}l&%(;BVT*el+z=t-yLSAVcRz81uPrirbC1mvx+*vnhZ@;&fchP4#ppMgJlE%(H5 ztyhug8Z7^}-$;gOX@2sf#~Q0zakX5iH&$twJnMUu7mf>Kg}C^E;OaBdfp z&mX+T(USExAVMO4;D`{C2mj35v+F8>j;}ElpAdDowViNc?rgbb*PZ*YBtkdj!fjP7 z>co6~Lfy``+uHVdclMdFhl#njmUFJ;O74o3Dl;QHUB-&kD`uCGi4vy`pW{8_H&^y9 z*)m+RrL{UaX=zC`Wifhz=@4X7l+t(nV6ToVb?9m@&>Ap!avDpAH@#GsN~%@7TarOv zogks1Vbk;H^!SQ0Pf}8ti;GJ@QH;l&k&d}|beEZ~fUP7ZVKiC{9T$3IoXKO`D8yE4 z8!xcRbK>${jd@mzUzItJEschej;?qxHfpA{*QR^#oqF-$tC;9c$DQ>6L{Zd$1`hWjI(rXnB77h2g-sKfYxCcvU>(Dhh~kiD{RK_1boqW{DLSi+LY=950k-p2kwTL`V)e&-DIA$Ib4GHLTGV zPoE8oYjkJ2@vIvKnAbPw+Fb>%hP|+fXkiwclAz}(6|H58I6h=dYLI$dJmil)Ro$<= z9iTn1%P?40i$58^Os8sK*&8=Tiik;yy(*wjp(z>s1eEH1-doyh|6|WKBse(GO#N-D zFprpmnBJ@ugX0GSyBQlBTXmb~y*(J%mY4ZuU#n$8iT1Eofn+`K*U&A^?YCjq!vO)Y zt`lpMU$Ei>jGkp%S%sn!fCt+Edz3N*|MR(!G}F6XyK%PlA-)2JT;^$1aoc zc5rN2R7}DnR{B2U}K|t{wW-1p%mXRf??C@DW)2FPmJIi#rH*=*OLY>2RbAoD~Y8 z^ZlkLL#L?Sl#Gl|zhdc6ac4u^e0DCscLzZSJ)&WI_*N+ONd)oz|LQ1b z%R*0%se8KZnJS(+e8t)BqL%#Q^JIoJ`MOI{tBlZIGPlM7>2#zG{0PuhmZF3RhTnnS zfi6D|u_CMiSE)NR_m;H%vqW((nab$E+I{()Sk7Fv3wAg?)CX!=Z>{xE@L_PIJ0n5n z1*Dwyq1iLSfb>pIfe9cDt>SFc znmcB46d^0%#$+NNTM96jB#6c!pA+~fhJb7OL8BK<;iBbG44{ngcZ7l1Hg;qL*ij2} zVe;$fe;iqrvxC$KOrjiTM@HP2!0$3H{Ul0PDlGF+Cs zG=UT&^$dY#?p10D-PD{5ucJpydp%WDlTH*xNjahcjTrt74FW;O4i~s_F^cCb&O%1( z_0&Tp;lX8YIK%vs6E49=!N~+Z(&jvKFYJp&4=ubG&`TE$b<0cg5JpTCI0QfQ-{YO& zg1Z5f@OwSSeh=~UO1dH3n0@gdbWoYH5EN{SlnKU3pyZ??U&1xOO&*xqf}#t67?~b{ zGbMbLf7-0mlfrA0t1A7WP5^O8H>FcRs1wr%;XxGiI$)j~X*XRpx#5Vv7vST2G@z{n zhQkJ|)dM5b`vOLwmmEDBlI7oM;hIvUF_=wmBRk?DkU%^#dn6*=itv%;%N#5oiGP?7 zdZaHzs4li)j!I_#NK(G*dqKwupuJop0vplP4NPZXwrG^KPu zc`;V#xDCS;e8K93e`Fm6f~&PWWN9l0Pvxtt1iauzs6CTFY_Uqk;~NjA*lE-0z%MSy zEdhuVM}vvT`s|`;uW(rIJv>0rHolyGb6R+o;4uojo?ke zw-Jv%y}Ox_IvggLrTh8e`!pI4GoC+{=}g^C#j(^L0&BXj>s}115kkwy-h3|5ber$> z?ZrlSaHFblNlErt8G!dH(h_ArvVI_*+~rRY&ZjMa(RoVV$qM z+ifKc99G-D7>rMN4ZDX*4gMSB;yx}X&t6F5=ep&?8Q-a6nscNSd(~z7MW>Bk@5#Fu z{1wEM2b<|TQ$!addVR2c4J=c<7czi)dH{>6JhsS<*=tJJ;X_*` zS3DnZd4(PSP>-`H!T-(DBR|mrde8bpbVHVmQQyv3m0XefhIR!KN(Wh{$?-X|qfZpB zs{#;L@!5^M(qh zX2%Q6Lid{S`)pqC(0@G%&iT@vgF)q1$gAMHE6$rJ%GAAlKTkU{Q#`m8cYX>{%NFz7 zoyv{61YP#yl`gxoh(`oV6;RdF{7P5TlGB~WLX}tg39l4v&mKsi^e;DZrr!sB-Z}XNL~z%M_op58o&8mpD+cTS(%V9 z=i@y;D+=+pq*)LpirYQt$LhZRJPE%lBs#EH<+=(S6Ipou&cSa%l`Gws%T~_%uIs|) zFGd4=!PV*t%!}+gVXiQ>IO{68@Dvi>KrS@Tk}Q^QnlIw29h~+cXf=mU?mch8PSayH zv+&XPk7nL2_D^s~ho3L|Gb;MCULTm8Gs_x{M7f@Rri$A%9gA=+34T8rSbk*QcP@0A zAm(mEadyr4WTXV=LEn-t2|Bt=lsAjIJM_FVxiK0GbPkC07dW;ZF|GA#Yueih__;_o z;h2ur_sW-l0g2pYKbRgi4RaOL5HU%`6kvq9J-r(~Q_W(gyn~|EZNNtNG;W#tL7KwD zhgS+#S?Fgm*vnDD+NFX9Ag(PyN+LC{Lj)I=AYtUdd5~!wGY3dBIRK1oO$(MTM_H*^>8|IZA1&Ud`y?VrWqv!gU zM(+<#yyQH1;}hX|OWov*xnXtb*gD}-XaSEVacdhDI7n|8>v*IlGAcsy)w~uB6EXW7 z>vD7AJNL;VE$<6+2VJ|MKYHZ}8YxpRG>dtSs7*mcm zaGwlLsy8Y0JHoNMmhwg6!R(g?hae-#?|Yc~odAWPeBDRjB34U$q6 z81(ry2bzz6Z>~^Fic}3IDtOK-{LA4?yHP6pM9VqS(!Z+4X9JatSL_I@^so_F6nKa? zVToYS`h5cvx>ey`S<&uuVQ5x(`Z2)1OJ$BVyi2kAx9aivb7TFn+068A1)O2 zFQ1EC1tA%NLpOrB(l=a#!`tH9YQ6%J4G_$`a3xDc#jgF&NxvEXyPjy=hV0#s$Bcid zHf}l(9#N2fENOKoQjFC^2Dat(BB!`)?pZy;Ikw9+0KIV7u8vM%@m9KpIb%pVM99qzb zj^otV>izn2hV#ChvOKYm{p&zasQ>$PZu)g|-GOaSNR#);Z@fQhC;#g%R^1`*fBG$U zTOqvzos_>u{DZ1I^-k%iJN?U-5x;^5RrThT(uMdT>h6+$u-HGpCHt`4bbJ`!L(`w7 zGx1M%_&Xczcs1tWKrFhWiTlNx`7RcX?2<{A z6>OI(j%)k`^FNS&>0!U)NB@vUVbyNwHCVxZc?u(GuRH7ea=G-+*tJeteM~y#7wLUI z>Heb}A2^x3yIB9#C)i%-tClXnoFmeI{KWpIzdx}5zxhFWEk5wQG#Iy>lKxU7?L~Z; z?c)^k{B-cRjCa;c<2f!0sK4(p?a}{ww#SK+?0;NGemLu2q>=IMtp7mTznkN6dM(?R z{rlqAJl^qY+6!X+uVDKQXaC>E@l$({{ee$#yd7fu%|Hj+VazV+0LJ}C*5Caz=STMc zoy3u>|MkRq?Ei1KOLx61O(yPMCjI;!>NiOTuG-9bhq#FGB~f0-c3Vcjzig1ci}POMIKUg+JTKv%^*oQ^-Rq=t z@P`*U9&tE!#!&qJ?>rvyVXSyw>Un|3`x@z3${&4>;|L#kR@#>3uVJ~~EVqfgN7quW zwDUOUNnH07%RkBSg1esJJb~L?9PhY^<&Qnh`34WtUIi91&Rd_MJ>rwA*)ESsiyvis z5$FDma`J4{AEDm+bh|ePEm_UyuD?X+DqV%WG}yL>IcT3_UH3@7&k_`ORLx zQQW(w>nqNg-j9o?{pa^9qn$OqTX}s!{=#O*XYSL&_)af>0pqjNPEMcJUjHzw`RiX= z8sEZM7c@T6m*2ls?HM|AT>$&nF@@tmb-lHZ?QW#pl^fFh{DJi2o51feE#zAmpND+W zLVkHkY?Hsgolo0H*IXh1FP#2Ci2( zVFp^ziZ-;P1C6w^JWO7nF)&m*B3RmuI80Tp_(q7-jiHp!B@Qr3Cr3)ZjPQ4is(k2q z^3?Vx?-EshDsc=dU#X|30>KoOO_iNAblbd3uZ<~AWBK0Z`LC4`Bv#BdRu6d{6= zBSm1UQ3RNygsxq*(6(<_CN@@c`u&$nGunvmUE)Q0SCdHXmLL+kCyKa)wjwGqNkk+j zi_o?y4Q-?fL$X-}rKB~q(@q4WwQuv@Uj z)2plK-n*OV+_k&t*v%v+^ss2g^yn#uTY8DXJ$s9Rz50m$y)RL1AfX93^QQ%dhVQU* z{%9cc5xGC?xDwr1g`z~7fyRfWmQt2S+v{OGK4}L9^@7-fMy@}~P_9El5BWaKe49Kp zp#f{(l2&6CmZO(E50;@@kvzwyrggn3bz(6((2h2=q6N)w`nP9&qxt^STF5t}5e51- zv!3X|GIXO0omh+xw4)6zXhtIn^f5l~rq-=bYxOAm0as$}PWC%iVL6tfdk4#-6Rj1j zCz|oWZ5O72d>ahZ#nCM?()|4qt?apf_{9&MrHkob1)N&-}`m_*;LC}iGAA{ z58BYW{Xbj3mNe47oA{yK(p9+k6Mt7zz7|VyCH7Ql{DR{GbJ6!N&OhXB{Y?524#$4j z5qIv9K8s878tjJCK9wG1xhFrDhU{hi>3=R>i5;+>ygm3TI`IJQmEj=zb5u30Qt$eX z;}~<%{5{7Nu@jAls7DK0(S~+(pa+Fgev%m1{46cOl~{!Nn2R~+Il=gAs3*?BOw2$N zR@bsTmZ2M6=)@O~{MP`IToV>?Px=*5;I;aTCi4Gp4g7XY)1zgk2k*_WyjbL zScJK_GLreKW0-dv?Px)PRnbyM6!S`}v|z1~dC1X)PITa-ZNmM=akna7qKap#;#^fc zTow0I#T`{~tSZ*2;-BLD<9({wql({F#p_h@W2*QbReZB5o~4Q>s^T0~++P)^tKv9S zd@@%06~2!z#ro&{TAxz2bMtT1?nQqePUm>&b@90PuXGUmJq+J6NzL(6Bf2RsGWnM~ ziCq}mL0Xz1EypS}CGq^!p4SiLJE(8s9Uh_6Xho1NP@~rdh{&K&U3g%yCPE*g4GS=c z)X4atwxKb)G?j z-Z!pe;DChA!9AnWG+8O#Bl@*T*I%00C8Sq$JMF-vu3>#*I|O8!G7J`@S=>74hSYgI z#zZdae@*<2orVY9eA(o-H(m0F(D}W`#Y}BKRCmke*Co&CHY$8U-|=zNJ7xzi9xyRs zX6Gw||JZYER9@O(&9bcPQ|5Lb9kHA-7~ zW_KMKR@mq2*l8WE2q?Dyyf@^-rLH4(t{)9aj28-#}Duw+<;HxgSZ6qa1@T!O1lz=Vm{?hY9d$U$IqRU=WtA) zruw_~v3w3$;y+Fk<;G!L=Qzy&dPgJuh{>Fv7Kbj3ESzdc;4;Xv#vf%`_5AFktlIReQkQ+KekP6_!dhWN_D%wpE08%yy3u{FP4ii5iSf-sVnai5uaDg{d(`- zPgiZ;eB;!)5#Lqp{e0Eqn>Y5(8aQO*GaH{7GB9_j*O7I~JG^p%wo+)*J(W6bny8C# zt#21@J{1+9Ni!CYOxzz@9O$L*DVUJ{o;O(Tc8t=94STb(KjvlU9gIPvH87 z-lM#>G*P_1-Okw=CwFv-jtMvayyHMxWc|(+JBMYQ+P5Q0)Tik@5s_Jz=qz(|Vvi?w z_8*>QJpF@v%(Cad_6_gy{1fh8!xt}VNZ658?9KPiinyuE{)Vnb1P_gvdFH1b+de*! zCaUzBHiJ^El_RwKKG!J+~?=v)#bDLFS)NukOBW2hxUWb}p;9D{$YIhSbHMSU%M27T0Os*XwSn`yeB2 zn_d^8X`@^Ab?yJsb~Rve6luC(0!&CU{22lyfgU1e$Pa&s3E{#d5FjDL!3c?o=enI{ zx)}y%rpN9X7!(0@6M1%hZjxZtdy1wswtG=(QzN+r&8J^3WO^wcM9gC)h6B0mb6!lrcesAjO zY3}rg#_Dy^>8Hn7D&{^&&jmKFuuy8&z_9W>H_m z3~IrEUNumnIxc1Uv}%xWn^zMx5F07kx%PsFYQK~*mZ6JSy=75MOw6U2^+kxJ^hjlK zadGP}d7jU7UsBQSadB8OCgug$=Wig-Xh7Pf;r>cpB=q!x_MXhNOL6^`lya5SU!t4! zZo;S+N~jXlAoXo%UkdeB-}-lxr)}+zpVOZ-XEycC+nEb87xd{b;6PGg5Cz${u6JnyZot>KAG$ac9{aZNT27arG==M%WWYjwyjx~*XL0Tqcey2UN zCt9sn!!ANYGafl}1oh3CJ$g0ln-nTC=i-=-QfVU}h5h!W_JTTL?FFdeO-xEm(nLb< z=mE+mB}Gw}p*OXLi1x8%)Qp_6^t?r{P?hsirsWvYBVbmavpgamEb3ejhvH>0sC^?^ z0~VdosiB=U)Hf*^t>;S$=V_B;k^!B1ePzU!_Lp_D5;P#S^`V;czbyPx1GLLxqQP|7 z2ba}@?Uy{z_m^i34tzeXFJV`V7QAw||42PfC)mjJl|~ zi{X`I_Yk$0t#6jFn!HN)k58bn)VZGC9|$ z*|z9!uWN@SU5y%+oc?4M_4mH(>cNB*u)0{MN`>=oV1A_gl2;d}{Zt(d7X3-5p5`8# z2~A$=z8p2EPlqEjVFpOO{oYF%v{pS>lzCsvy^?vfc7}8XZ5+@=q3LrSPLK}WG*4BE zP7hPq<5n#+;=ZWp_+*f-hI3GRFSrh%BO(`_c=rAb?DnhJ)^_JqX2Yt z#Ki4A^%RtjOV_Wy@_k3g*he4l%~+#fJqo!h2?4g%- zJXRa=p~`_q3P7DuS?4-N=j-=%MIlQs&?t-+LBtTvbvu(4&s&|iJ&~Oo6V2Q0$By&QAAi34S^oHr zV+Rf-9#2Z#Z$EzgkI_{yO>8^b-DFSNx3qilQTC|q;a9i)TawWB;<00GZQKDXyS=k# zZ5P$}5paA&xhblU>e)&4?DO>W?)mo(ogQO)`c~?Mr>h6v`NdP76i*6B@lf3!D#Zh+ zlndt|@vPP9bSa)~s0gS%DS3l~gOq2;+i|L35c+AaskO9ccKW+UoV` z(q?u(@L+sGVq#D0i9aUKiFrAyElFAb^E}|V*1NZ$zm57{dy7|-pzkcWI8#4zu|VI_ zf|h74-K$X_FF?VsCPM$cCi+@5NSj-LqSR=?l>&|CeB{_y)Ma_mP8;|u82C>ht=J<8 zm&RA@kO5g*zd^4C=)pyO-o@znboHVw{iXVNDpF6OlK!;$)K^i|kbE_82HZckje19u zq(2Rt7;`bDD0$j&+1O6%dODa-{WzPt+E)`j?e+eIIj7+nMO~BD0%gw;xc7mP!3gc2 z*mlLJ--CgFRgAhYiBV=fyTwzAOq-S-shKIa4=ytEsjHf#o7?;r;OP5cWe;B*F5T%V zolU(HMb#uzDg7ZV_^G=r?X-x5ZjhFQc0>2W#$Q95p#}102-&|=l=rO;OdByZVj7RB z$05@md_5}2v=`GJOg)%(Vd}U?rg>sw$bEk28sI(UMM;NuFU-MEcM58Gm1DBs&)k#y z>(X6iEARQs_q{J3{@}&W?>uw+sw)Xs?l|<|n%(dIa^AChj>KGuxbvaJliTxee(nC5 zo1J%^6vm$WsPpOQ4G{R` zUEej=-lpGUJDcBqZlS8@jgC7`jm+?zUBBz;cW*Pj8EwwazG-{xOA8CNb8~*ME&0c! zS%r0*#8~c?*rw*3zB3POUn1<@KXmGVp&_l?@f*XLgST1VNFCb!_RZ0cp5K0}=4;2k zrugL3hf>wnmFZP28y3F!YR~c)X3kr+@yLbhnm3=gbA-=n{GSJZ>*P&`-8Z?<{YoAA z#v|9gCwG2fH6Hr*;CCmly6-t_zBIjQ`!Vw?!iar!(Y2bx9krU<9%+nv{Mq*&%19mX z+?i{$J9ACBWn437sL*Sb@6D;O!4vUo&mI}^XtEE1--es{mEp{>2Y%t%7a(#?4}ChYGgwLePz@@Gsx#xychrVB9LJ4LzkG=jr$uBgV^=%bTGmcnG?9@w)ZZRqG-!1%#f<&bb{>lw;{e#?C^o zQR79{R!ZQUF2T;Riah>@NltDO@k!*IjRMy~F?Nb`n>Yu$0mk@7m%vfY7QyLatdw$d zOqt-VGRMN@2$XSF4nl+%5uI#N(KxDfSF)i3a_6vI5#|eFo`Fp2An~ULx>bAn>*l zc*h95tpwgt0`D0DubaR-OyG4Bcn1l*eFWYpf%gP~H%j0=M&SK{z}sLBJ4GN zO<4YsFnWiM;`@iQGJWinOn3AU`*cCZyZnq?o;eBLr{`q4^EH_k94GEeFkUCdJMqlK zc)R;B-s{-!#|S@Rykv}19R|;Ol<*VQJKBxg-5pxbNa*QA9RINVy zhtd1tS;9Us^!H*(J>T~=4Q6081DF_iVB`Tz40d3&1DF`fU{WS!IGEu8B8D;+=2?J< zp{xPs8vr5($m0MKfD9HOE-Y;Th}8;=tpFwlH!!*ZObj+)v;mkHtiWgmFflX%V-tXh z!2*mH026}~7@Ytn1`!xV024zaFg6017#Lt=089)fc%ubOs3lMXo`@LApe#HQF_gJr z-USdbv;boZfQg|V80!H{49&pU44MJ7(RaUx=Yukz!oJ^-pGVUsx0|WAH0KwrqG^Zx z6pD88wEUI>?QC^$w8h@Q`@i4N`BU)o{qg-#{l2%Y;Nt!d)L#kp>lu+Fwf&xh;PI`@ zw?O;yX}Z~Fp-oms6hqs!c0zra7elI#`$d?f{h^fo?VnJ81x<5ymn~R*+dmq+FrT8vo~$x@O<=N#CII{Zl-6SS|G~dyB=+7Ev;#9gQ#m z%%{SE-XF0NqD4K>mT6A&_T{b0fjH!`hse0b&3o}xF`uA|GV%jlX4x^7d+ zIz#LY<5CTb#R@?cw2G2VB~`R>LrGnEK3!g0TT>f*!|gS5PTC>xCduZhRFK2id3&pk zcZoSutH)s~&U0s3-AgFZ$p}u`;!v(p6e`XVmrz!bWt2j{k7VScsrm^$^S9W|{s7}2 z2xK{8r|cJG`G%6}va0f0x}s)tby=)3E~l=)uBLiZW%cHAdUN%bN*}`1^+R`U82ti2 z{a7$Hxu0{q7W_Yr*Mgs8yiOTE?C2DIML%(z7EE<~O!PUX4?9;BOu3t-Y!wpB&oTK| zoF&4)qAZqL3Ms~AU4k?-q`?+?f{2WTr7TXWg?Cw5=nLLKHF5&CgsOKrDLdanS?scY z0g_^&u$^~~%iTynBKs?=;h3tblKfDTE1A$x0q0J+*$R%S}e{+YP|E5 zJ`3vqkj5(?RKi;ChPI*t(Pec~S?t8)hi>2n6UR<*_!E=q262CK@Vw!AV3!7aMsmfC z;y6%5X$^#oy}|ZOA*|mJo;GrmEOtpy#4DJ5otVhKf&DH`Cwg;9 zh(Q~OPs@>ru4ODDSFU`xE7efnq%26G`9JYH@BSQbiNjZxRLKpjk&TPFa9rc}~Ou z5zbQCdwK4PirBFJg7w#OX6ULqq!Fgt5PI?}4`Cb~x}Np5e(+16Kh4EiY=Ctk^y4j-9~1N@F;0hORF_K4d)sgBe~2j+h%+KauZYj26V4Mu!8K<<39_ z6D*}JyXbN_cmcg};x1f4uUL+JB5R3$2!h1{1QDK$8we~sP4KLTr)YuK@T`ZtLLjUH zLVg}R^Wj+l&t>pj4$oVG+h)r{Nj^#nP_hgq%TXe6SD<7iN(xc3N)nb;B%ORoDPPjc zm((EY_~M2e3eB#t^2~V4?Yv@G11k4Pipah|QCM)h^ioj>W%+F*KkcdaO9{)uwO6cj zFeXmvn$1<^rTGPgz$w7!#31jxtXw@Tp*Xh#Nu#$(Y>X8KH(O{X1gQ%G5ktx;uVMMT zg&$Q>9AdygiN;~s7P@=`Z7iqJU==uPkdPb;l+iLS&%zLc9T>T9<>0IrFs!|jR>;DpSCYu=YngNAoZVQ zBpf5YjMM~+&0*!x^B>pYR2i6oSE1_hN&4kO)##HGCz69(JShoP zQzd$WfN2oF$z^jmc}#-17O@U?9%HQ#7#Pz6u0q;`m+WdJjSr$Yl!>TeXt1$0_DZ8~ z4&x&nKTO|AJfeR8;vhBu_%CgjEq05Ow(@Wibq8WdRCVe}iMnEeKivMEY3W9L|2}?%k)Vm>IgAzPo1sx^6)Q z;oB$3TQRbR@c4GdUmW7syBeenq*a`~ILqqFjt$ZO;skEU4!Q5d?K6`#`m2SiN0g=$ z-5@Z*h6T$zQGn!VwuKQIXuSO}p+_Y;`Ti?-e=F%REK9SkuxS<(-N151R6WB|QU+}# zswzw6TMXJ*TUot{E-_Zt1r^E{mDTHmIAvQ(YAZ;8Z1&rny z%sSNka=TNoaAF9*!ddvg)Didv2LKcZTdx{=+8VbOXz7{pF>Er^1=FPD3Wd#S3hXCcG&cbOLQP~ zAu&zXO1J2!$jIy@#VBhBZsyPbf`zE=tmsB*B$QP|I*~SL+G~cFj{-88AQpeHQZ4fF zBvjTb&GD>*ij(N9_fzzZW1)f?3843idDiVq$x^jl*zO_N{3tddI!&w7ThDn9%yjQ< znQw77g(_E}Rf^m_EK<;ld2B|O!2}y#on2$&X}#g3fH> z_wv$^=Iw3Emrc}JzPu}&?(9nFU<9j7D=qO}2 zC|Z`un6IGIOON9CbSr$YH(v!{uF~IWkUCEJIw&~O`k0O1@$>FCKw61wUQkS`cTg+ZAmu#|HZ1~m^!%}8GDV_D=&d7(TXDWq??uC0rK zJjWD^iOYvNXRi;Pr>JZ@XY%H7(EeA1-g4=AjQs?2nf`=({28=S16$$omZsC;^n zNVaq4%~EF_H17rE#ZsOizk*yGvN|W?xGu>1oK6$(6J49htVwK43?_CW#uEDyQ;8#p zdBlmtnZ);r>xrKe=LX1pi@2J&m3WYNig=y)7tyCV<(C*jj3OozhZ9E;w<8F;wIuQ;y1)|#NUXIh~6z_HY5fSI};O#DMS@9zLiWPT~8p+BrYRvB<>_0 zC7vc;A>JlFA$n2#e#Bu zdg5B*38H&4)i+T?Tu3}ce626pc|VzLhzZ0k#JGXZ^Kqmz)hn?@7qSClw+NX>h=U_# zUMA*trFgr^e3#guyUY)WU7}?2nkFm06%8d(q2`9x1btLFPL~ z3U88G*DSM6uFUU=gY!rqqhyxmQ~xkpX45e;HxsXnCHojJbJ&FcpWIYH_Wzd5byH-< zOmV!nP*d*Ot4L3ZY$@$_8pnG%3T)`8xe;R{fo&Crpg>oEF#XH>KLvfK2QF$ zcd0*n-;rL^9k1V@>rKR}Gi0U_ONiBH%2X0dh(5E(9*NV5JBf#hkBE7*NuF414)v47 z0^%-Wjky#*aVhb4Vzu|EpCgVUmJn|dJIo`0;t`@aU*<((iv_fgn7EdBgV<&vm7BtA z7yh%k^dHVHi~iZXNP6hFSmp+D|Cp`=mpC7fAC7bUE~o4GXMaz${2??8Xx^el%a*NL z1qKGOBbXhn+3_+v+Rza~M<^X_>7efqjDK8aJBI%(f0w5CTN-zX$;9FcIE0u)I7?=>HLSU8!8So|pc2(kow{YnN%Ba=CKlw}h)G{$^C3 zeHZDzh4LLzLH>J|E5G9Mv&;Vz#oOSLBX5$s8(l9x?>wCK??Q%!x9`xgQ|B%b(J`@c z@d*v#jfM>yaxV`#gctwuv4n4k+TP6H&ASR*Uh?v3!2CUZxW6ZtAxZnAhE3ADI`^;6 z-xcwyA;nz7&i|>Sn%#L_>yKA8i)Xb8C2QH8*JS_QYf6%}ES|M0l&oWSUfcTPRmbAV z{xxD}jT$woFbW5MuS#?|zINyJtv_DA7Ej*_CG9^2?`Qq-s%P+!PVa_%&n!%Z45<>TU*yMY(#&Tc-H~0D%Ux#Kf9K>_Jh&2kK1V^xQH&PZe=bn zqYK8n9dp&VopBrOvfUN9<5t7{d4+7|-qF36`#=h(BTjPnsRGP#-^R|DImF>d+~I!6 z{i^#z_XZwqJrX>IduTn1J#M*t=5g5LtjA3cAJ6G7O+34JzUHa$WOFK)?Jmb$esU@F zT<%%oX^H7;&oiFaJs)}=v|9aUw8e*PzWYdKKk-cd&x_}Dp9KzRY;aL zm2n3yr|14Az97RgVKghVgbcMtIrMB1@u6vb@B8gxcuh@70DQERiAyh0VC z(=s8cgmTn~vy@WO28)^LELNx0ikAKLe33XkpXo_7*r|?xI!MLWU>yTzn2k)6y>&(t z-wdJB(Fag9EblIX-(5soo65A$IGa9zRM{3bO4{@)m7czrPesCrq2HL{g3Gw3+Ci zpOdcBsFjkEnUhX0*$3bDV+%BZo#ZIA`GQW*3d)m}3Qu*waxUdWB^s3mwVvgV<<(lP zF?{{f(VI&sv(y@u)g*Z!i+UvUv|6MsZJt3R7v<`+Pr+(gDrO>*ZsoUZbV{Y!fd2du zEVVHuf2b(Q^ffRw>&!-h)v?GMi$lv&@^ya=bFysndusWUWg~}WR*@-fCuK$BbtpHQ zMAlGE>I^mCZ6R&GQ6WyQYpqnLMia9nNo!I=vz3EFaogmUNsUYn&i7=Mk zPrArz!zi*cu{8P`bS9lrr=j}i8l@b{8nvmPSDm!T%QZuWW@Ks;O)LvW6aSJRFS2bj z2w7+n71&lc)->}B%uJ->%d6gUY*ufn;MQ_FINNs1_Lqd@NF06oI9yr9GZZQ!oU4y$FeR)s-QwUd)%{7Gy;Q)lV) zg2Kf6dCQXm^nBFpVGn*15@(9ypKP6<@PL0wcX+=eqq_3z!k2DE@Nh!QH@oobfC-m6 z@$mk4)Ex^Set@_>T09Q+!*_!MajwHXq@Uf5ZVTojdPXdi{r<+b()B1&e1%AD3mi|1 zL89jcc-;s^<5}O~SO32e{7GY6i&}$w9VZ}eTPPM^pNK83^oSmph7&U*(7!MOi|W*7|G++mE5s-G#XHp+Ekmn2D+{ z{enpgL@e`7!?d1RC^%JyKw}a-J;QKlpdY?oYsBb_!;xLQ8x8mO!qLoq@VfRB-Y9I1 zsk!^Hy77C6+jtHQ2YrWCQ6BK9Qik^9dSGw(HOx;g#kR5GXw`imnq=R^(g*)S$EJ}O z|HmQRp5l)&Gn!#Ui!u07`xn}U@V8i~sXpMq}<0)Eolw?$@NfLk2Vlntp-X-Y=oyH|Mc5tPB}VMqt4p1wMMz3**M0LV#F;@M}f* zW!G@r+AAG`ao;?oUUcr+e+0Dex$7nL=2=w3l z2X&+F;kVlb*nD*#4n7FNY>zqEGcpRHUYp?)e+O^ZS&a3C>}qIx z8?dzAO}sm2HMY#WkMH{T!!hqaAk1%%d#{eer^+mxi%LV!R5wg28jqCMgV9;F8#$+H zA-s1uhQ4M-pOHTxet;G}UVG5`o*KRxKO(To5~RBK#g?vTaU=IDOnF!ziP>Y}ANVES zQwQU~k&m#!cK~Kw9D%n_7om-zFWgt|L|&CSxYJG#JPyQ-k!z8$Hxa4}-7)W6Ay)L5 zhuAq!P5EanJ8=9DcO;qv@$1(6I2*7H-oEQl)T%91g}LzR+8#CL zG(x|~b?{%Y7aM>77{glCLC)SJguJ;Jy9dsLTaQ9`-MWvLdln-nYyl#+R6#Yt52yAG z#l2bkabUx%=yPZl)^t9KUq0-F^|R*STuc@kDoc@Dd=ptyU&rIKo$>MV^*HYr26lpK zkIq1ql!4zpN)Rlz!=Qn?(5oyGBOZPM^Uga6ntdMY3)&&0_&(eZ`{AzuPn^E&kM5gS zV$e&|(dnoc`ovsE-JL7ZzWHakwXPA8#kDxTXBB*U)WpzHN74LYE=EsvM^SwP4y^7E zo%SMb{t7I5Wia-iDZ#poFOhrf7`}7$$0xT#P`qFd_HD?+D7cG{Zned^ z-xi|Bu*A^7Xc6BM2O8$~;x;Bu}8o*zC&RDm9ow0?Lpr3^t)RiMahkJb$)BWcGC)}A(E zdX5%zGb0eTYbYk3?2UHk>)~KXELti$;%ogkXm|K??9x2JN_+qh&1DQZw+zj6y^vn# zIKCJ*5qd=;vIkzkg4bQpH>ES0{8)naxA&v2HVvumE@M*Yhw%S&AC`xALe-L$xbX?= zqyB7$>FUb}EXzYRw*uC$hamarG6<^{VDksxqiw1;wmghM?K6ilcIUTPbaoHc*WZCd zAH0RCBZeU~r9J|Yg7Ln$@N<>P@byvQz36F}va=Ltp0q}G%dHq))BzrM{>B%(-bdDm zWW3UPEt2;SLCAycI5}iK?jD?r>PgceM6SllL22;q@d*mL%*7GG1tZT*#@D4=v1|A} zHmR!(mnzvP-t-YZ-Tf{4rSwLVM>R0lun#LdyJC0Gj_~|xG%my+L7(8iaN^LvaqUht z#;8iMNOcOQcZOl*ynVT2nN0sDwgKEp^|IrD#^>Eg|2Iq_>x+WyP450wYZsU zEd>}ArS-6iE2b8fCG)})m2I~7IcH{mGxK{H82@5p8gL zVJ9>mI|=$>&%yAL!?57lIWX$MV))Hu2dp175PA;{f~y~X2PsGIz%K_}n$ZSlXBNY} zExTab-A;J_#=|gs+Ag>-^(f?*AA^qj4RCgu1@4GF3xA1u0pgR)F#X$8aC&tu>?vr3 zNmc)bDG^uU;uC*{O(VuZ>Z>DQ-ZPz0c1W4{3Wlp);!xE|lI2^Dd{uf1W=FGuvmuntA)- zNZo2E{QgB4vvDLCj}*f6r8mBXelzJ!Z=+9CU=G+D#M{R{w6E?wt z<}SE+W(_po`!0;?{RV!Rhc>Y7A29d7$H1?jc@5rLtB3vhoiO_BBe3AYS=d=K3=Z7( zEX@Bn5w5d0fN5_Wn6ev#GijLG_3D^*erJw7w;xZdXnO>u4sN{`eOod<-(Z)TVd0E_7mu<9~9?X9nZ>MIv=#WW$6i$a+ulxY@qX1!nw{G5(;(AlDn zDq44$-9rOu6Ai!T)5VxALb@2YIV@dFtPVGd$yE_XF|{(%DyCKFGDJ)HbtbVycol22 zn3}{itSuE=m25mFCZ@NEap@n4G3g(RhV3YVF0;}B_`xa~%6a}^RFkN)>OINY zQY^m|-pyh-|C~|(s`0ZcqML2I*Q2+O{u!x%R;hpSIO-N-KmE&g_mA4wi+U1`-Rut1 zpF`~v25{6sq)vZSBo(?iSEhsw2Syd z=pD;WJ3Fi9H!JzHPE7QEVV9kK6()@*f0TwZN6#Pk4688BJ-&RNzKH%V)i0#KR_bk@ zPyCBbQhj6}HFW>K*UoO`10o&6ZF)@e;O)BW8Gb{6YfS5|L(h4F#wC__Ix z;L}7sze)B{&;^on_55^Mv40(>U_UK?va=<;q%T7npHF4WmTwREnB%S?h3p^YR~@jk z3J6$V6@rQU3RUtzfDfUO&i1aGI+Qzsa&r~q(u{cGK|5O)fG6NrC*oUQv9osYw6mO_ zET-jd598}kVUs*VPIefE<7TO|v&~VG9p;c7TFDM=WQR7g!z{8x6WO7O>~OMJEM$g- zV1`+G$=(;Eo|3=WS+P#i^I)Ir+vu_PeVmXL8G@ory?1@Lqn`P1+u1K@esaZRVH8fR z&g5=KHLZUvU)5-5!+EJ4w*K2;#&yR(6+$!2WMvj>NZ!a}4;ARob?@5QOkUb&^2r{I zWDogh#7j8Erh;9e`8|qq$<1~~>(4X4W-*zcALW@`i(XnEUC5jEo}FcddHTDV{7f~~ zUq$}BlKNW_VHH!$aej+=XB0NO37g$4CZe`DY<>(j-+;|W56@q~Vr!7%bUn>;K_o!x zhjun4T-v8HX?)H7%yWtGPAL17(KnArQBU#-JNq_F(qj%y&!eHZPwZ-a2ossE_sydX z?RsCkot*+{9xc9j0XKR6HTf+1{A~q(Yx$?0xql#pHPC-i1(N^p+e-s}zY+PLf;uiC zJ%0_NryIXbK555Ozsyf!DD${djhi2P9Y7xP(?RK1XNfVnaz4$w4f!P}z3a-)rzU+M zbA+n{KAH6MWueddD1Y7PLFXx2M(t`qJ&7H5w$0bBJW0xu8%i6{q;-b{0yV|Z{S0qQC^$N;e2qO2ch8(pQk1J4r#?C&G&x=(y zFZn}6(zW65^<6q=$ zRomB6Wxd2VAwTsq|2zlqAJ*cRBER-CZ#*XFFVo`hN51Zyo$XckbCp&<+mXKt`GvB6 zntXe{RPR;f)t~c@zq}oP(P~E$#`DGJ?d)|mzfz2`s`y37cOkz{&0nv@uSR~!1v@*U z=GSVq=O~>oKKI*e0KWpQTgC52{#N8~RP*O*`PoZrS-!BdzpM4^ z(CSA8@;i{fTg_jn?1$U`Q~h0bwn^JRpwR{K|0uVwEA;V=9f{ka;v@!eSEu+ulp+W@f~8o`jKB2WPGOwX_pP<8d2_DwVr)i?OKcc z;!Ae+wwk}ivp!5RejU}H?O+?!{8?J{cOpM7$HDfi`K4O*M-M{#K>i#bKU?BwYt=si z`R9?Z;U|}9@fRaM&FWy^s`*V??b(fdgU#WahXDQzt@_)LUyS_UhseK*{6^%TR`Xw0 zwukH@X)yYyi4Jx+h+X_4h+WJS zNB)8!{YVe8&nM9X!#oFD9z@O>tp6xyLAh-q^v50lApdZl->#H?VL=c*Z765Rcd#b4 zo)IuczcWZbRs`us4a!*_aIlXw=Tl?; zk$(yKVVsKpxfZ_{`K<*Gc12zPNv(b)+<@^)p@SU@(vQ7C`cZ^($x|Gje2rYsDXn%@ z)1$_z4)#y^Imqij)$8Oa^6Qb$tNVRktNw1}Z=L2~|53N6Q*-|xivDD}-#(Q6{$sHH zALXu~98>E#tGWLpzx6?f=iDgo_lsKnZb1I3haBt;b^XsO>vx}jkgqFpu=2jn1ykj5 zcHp@n;YK|FpnPSJahMrw{!y;J$nP)vS}&BhsYZU<3+T*TbeT_36 zY$hkmr)Tz)KPaXYNC;^lzyFIte>ThEInTNCFHdS9 z0P!>B`5GhTYqG?8o}aWmws!cAn4Lp+4cR^TdBYxYZ}h$>VJjDP{@iD0JJ0;#77chD*HL*AmY>J+Q33fxDn|>|Q6AEU<*xZ&JM;cm zK>bI2{sITnQC`4I^OjBXW~O2CyUM>45!~~6WOsap7WcqyZ^{D zEOW43ipT475U_VuTNY9*`(0{D{|JT!odXm>U*!5wd-5*KoS@>QE_1ea*Cj}S7r6(P1Xn4Q(aPmC% zoNJq(-Kb|@m4n&B`|XcaHf}SoO;6a(05p9ER8!B>wn|eFq5?)mh*AUv!A?(ph>D05 z3!)NFN@xjDihvYpp(oM;1PCNR5>oCP{@?jd&e`nQ zGCMoF_nFzfduKHW;a}V^Xk}i2z!P1#r7`YRmVPuMIm)Tb;_Cf}HC0^tW8@ypHyX$- znqxOl>U`wh)o*}pNSe2uIuo;kdt*T3lX2c0Epx0#)x{r>@l7(3Ln_H5bL$3ornbui z5>>QPFRuWn%$xs}i3)IF)Lc$47dh5P9p8(Y-mWk7|8u$2~R^_#bN5sFGTQ#^~~6OSK5_ zsD`6cc>=fgs zGk@gM^1K~9ORtfZF4oaX;2*Ks4id~!&#v6mi$0WQ?J~vjfKA@)=CXC_2NdejV>Yb7 zlU5Vp93z{JSIb?Sm$TwnCTA)nUz~Usf1G3CN4xLMFiz>W>>j;_b9|(bQ_RY^R``;q*AOBM{q_e9s$2Nq&*Y!%lHZ3t6Ify;BnDCM%7k&<*BC` zdGd9p+8C3w;aPh7oVO}x3|P(GZRE(!BwvwTKw}rrz(Zm*R6eBEAf!w$Wxq!GR%hv0I+w_4+(xgLam|TwEPwQ^b26 z*lj?5H7h@3BEgVNiE|b_bhtaSemcqV6!r@H_OQTa)Z)__QLf&+YM}_yOklu`_ML3b zCea1AqenoKi_=ehG;eQQDk+ekP_e7L`hvaNtM`jcMj+;VXH|UkNfd42{uF!HUGcu5 zc*!-kCw8FK}-mCO6*pIRQv9m48cb(IUr){;?ViVaayUB-eg@`t$Iel9{*VJQx z-7rDehyqWh6b-TJXKt80%ldo$;K<5%FY8Jh<90OazpAROFg$;=oYo2XJ;7g+a^32_ zmp-m4L6(~QR2SP-KX~DwZaTOH7Q=UM7AcH=im$rOgd#<_h@GRVY7xq#3R@`dF|-Tf z$FL$45YI2W3eNt-Kx%v7BdTKQ4s#Xt_2j)d*vscVW)huW|Fs{lujoUsM{zVZ@f$xz zfR73}FXnlv=AN%+%pWpEIMG1F_hF+mD8tcT&ld4n#5$x785BHG@qYcH%wzoJJnWXh z?)ODXi&x~Fgu||N&U-K;JjqXO80@xS#qv!U#;l|L&hrw}Wyg&z`*@v%t=3 z>tZeB{I$nVI1B$W_s` znkHe_Mcgb*vYwO3E$y)QywYc{II6J~0m|dWp%P7jM3RFH0mmv zUM;FzBmuff`TGSyUW?}Is)^_eWSI#uySos{H~*U8D|+@2za5*WtGAQKjP9BHx>q_N zYWgjMRbpfbZJtl@s`~86F;dIZ-~W_&Mv(B0a?8v7T6JM?p4M-<#H_ml-|ZdnFfVa1 zucFUu>8SUiA9Zqs4{3)so~?6EPUaYUCpBDb>r_g~dGB{Gz`S?mZ=(pc?Ze~G$?p}3 zDuYJ%|M}Q0?_B0sqQBmG``!lt^h)r%!P)!Xa~n<|M45&#B#HhH)|L=uYdfYD4qm1I z)_ON~Y)qmU#YSk^WR&muU3~Fr9^&(jQ4ioMmZfZc|8WRlE0P_3BNKGbS$UM3uyW{) z7168f#XfeVN>vUuF62*;Q0(y;JMcy8$4QsQ?#veX$jy8Xe*P=V^gu!tAc< z!G&s){`L2aHz?%!0#TBz1vYEMQTPC4$iUV0?4w6^?l?qT9_pO)^e_98o1}R9C3Bs_ zSbyBAQTfuBB=}vXSNSIOCDXiXT#5J0!0dlMx$@xBS#B1`&1pC@6*s?rExNR{> zXB9B81o##SC_J<9TDJ7+5{K^Kw{E0svGA{tvfs{J?wY*&+OgdCbljQK8oN$;4?ZhX zer(?hkr?(Z}-sEZOUU557UADlc%;tWVPn+KFSK>e19Bz&eMweR$K}WVm zGKGJ*e~@HuE*s@@=iL3-f|Au=_YEneUF|J@EbgYf`77%0Peb3K8TQgzm+{}OidOfa z5fm*&su>27FFDe885Z2v4bpM;n=AHS-0q(p~(Oc(4?jxV(P#s~F1y!y{qm24%j^-&; zG>tGSU5P)q&r}w(WPr=N$vr>6RVx^Bb(`he@w>Q^Z>((14}rDU=(9oSP%2Z?%WPEk z{QPCSW{?t$vKx*_zs2+&ZXW$sx_rxM&;uE`&h7ZGeA8g~vHY7%*x|^dL$sr^(Bsz- z?SjHc>Lx$DorRM8(qcAf9tE}z z)h5cLb$k1rh)0bFlT)a$WqBh??;orTBJ8UTgfZ~o%p;1+cw;Ru$MdT6#+VVgQRGoB zz0D>%=U#`MwRZc@d^rD4GjOYDxX^O2zL)3iBrv}vIL_cY;eRCIU^(J(l$KK|bbGCUcb+|OG*B<;`PsQqnnGv0XO=mDLP_8c zo2-_VpTw`={mh?vt%s*zUb~~zg_&LOtAcihd~L1)&6KKRurb5EiC-aqqp637{(v=& zacDg;Ret#OP#-8$2&u*2v7A%N5E_*OF~MGpT{80MlxT@ky5_l;a@d>XTdk&Z;Z^+~ zPCOUOWaW8vc*BKvf`tx$B%qR0qjy3%e^wM|FWz+j(#pKSlBa+Dugs7aonvzQ2h5DF zjk^;XJ~8q*_l4m=;xq0cvT^u~lF-TP7AjA*oCBd|jcbGz4Vkp7^S);b@Qj4#yOuoq zOEzyJ`jUMN`LP?8OxrMxA#C4ytQ;+(^cJ(?`ke4sIV{~8)`pjm|Kwl(YB|JZo*BRM z5Tv#%OsmMWJ#J#MPl!^YX5KguBD_BzQdO_yKYW|RT0l};Hd~|!s|bZ+%enKC5S*3{ z%P#30ES?H3J~XA5gMqiFSSCB&wL+36C;ZWy$~lzol2>HV{$J##=AuoD)9`2dL?svvLwNI6;;K?Y{+WLm4q#4m z3^i&qi%maQUn0{Bqtt|+RaDx@-K&dsBTvP)6+lcAr76F?W%Xj=SBUTI(*b4q;kp|7 z{&e6OsN|+s*$vGQ$mMC9;}HngGOg!BhPoA1wcm$kN3b&rY)XB;-EaDsWhOoK5NM27 zEH6%HfgoqaW->!l#q;7K&xH@=)8e9CKWfYRYY1H`WFKxF=4l0>46onL3sL>{mmV7h z`0gX6<&V(!%V$Li>m({;_iELLOCZSW)a7C5BFXD1z(~gui3s?*)z#=4*mL=k?L)V| zq6g=@S^c+ajAap5ygI}=9>g?J>Aj$r$Vy)0^=oLqVS(3YEgS=foEE=*q?GTBbe=VN zDFKltqn9{})RgXNG4Wo|4c@MmNO=`8%IPhk82m+eXLBVkBifWE`2)--fI|sWShRmR zD?;L?Ee}W3*c64b72Hnm2=s~NN~rmSmhgZ#=OE{(yrIAjAM*-u$XM<)@X*k=gNF+b zl2MKV{I9$XuM6v{>~=^hXBS+ z#WLXgVJ77niy+p73a(}FpGUw&W4_(K=YFeL2Ffu?c%^wfap;UCe&4Eu5$l){fo*_& zBr*?0OT1n~c(F%w?g}X2*J9*>xgnX4B-`!$f;%{J{q%#w;G$!62z+i#z6LjjX{)zC zFIF&JeKZBYj9Xg|Rtr5mes1Xdq`%BLQmbBe-l#np8{>c($S-P<42ER_ zS7e~#oxe(*`{s)v2JNt`wZ?vjrfk3F8M*WmZY_8hzaGw;4|amLt{`@(cKsO4kM^!W z8Vo{EP29gxS3|%NIWooOzIMU4X{k(%%NviC_GqsRaYNbrE3b#p$yjyoqPV9lkO3qN@6(7Pprg( zs;x@lp%R4>rgzQoxofh~3(a-mEjhqLE^hFTHL`eVC?u$rfoZWe-4m?LkoWjYBdX>Q zZ3Eq|Y59009BuPrJxJMskUnPzUWk1DmfSdyLc7MOlz4W;nKzx5fGyy=NM5dQxnRuO5}H0SzmT=Kb0g-yyQZH^Z;;fg85RZ{abuJ!;Ts_ zF&>aQP$dul%Zd{F%F&ir>sGzmfZF=%TOG*p6=T=$$dk|!%3wY|XfAg;_+Gj%K=men zAo}bjHJC0(c_^2#TN9ZHcO)90=+~Npa|p^oz3WRW#lhAoV{ZysAF(RfJuEvNcxB-M3?r$540v z{pB-HcMzaF&bL|`mf?Xh=hr68PngCK`M+yK9t$7D^P^uBm8IHU5w>kFHI;2WbV3q4Xbq8SYA%2AoVq!!%c?cU*7{Z*L0j6kZPQ+_jMM zOFp-$e$F|)*XKI*JKC!wQ|f~8`Mr^&8!<}{U$7UI_8Svi9!t?siP^{kk#VIzjS(J&i{<*1PQiubI_LLljjY|Q25CU&` zVMCZ0eTCC<&F{n5_C=v)PTB2i#CxvIcVi+J6PU;N0&EO;kK-SVAx=^?5< z|1|<=Y~^@uw~w^n$v`D+je7Oj#N<6E;K@#`SwV|=MY%l-b)3Q3mZ($mbIH{@D0>bx z60KX{(?n-ql~{?t0F5JT1MTrfkwFSL@${Dj=t){jxZlg>0Ph&K<*Tc#^FKx!&W3*~ zdpw8G4y%OIulAq{*Q4yVmA2`BWeJVT=kKjj7-xL8w6qPtla5g|eU@)?ZQ+#580>!6!2z=W?CL z_~RAN9jI0NM!WwevyU$@h`RJzB ze*;_#-|F}4!5Q{b7edh3%O%)Y$a-Ru5ESbtR4xFuhy~kSu}(&3j<@YyQgd=fUBu>X zYJ+8TTs9{kx=|sa@*v0C0qa7l#IWf*_U423p-XwxD7^@RYgeR@e9|5%GyIB`TO zV__!l(}Jo$)Lw?P)Zd{{0nE9i935t4Ft=C+_)quW+mGKPTVj&5QJ@=`;%9pCil-#g z@ewM0EHnI94iLju+#>a1zY7d9WnvkfOx3w4KUETccbY~z+0T@;K8PMN1T~i^mmJLM zp#R3yZSJW&)qJ43J?_!drbXz4d6Iy^0&iJ;_Sw|ovgEc@(`#+*)w^?6LM?Hf-R9^? zEMjrcLaM&WzA$}#WTLKVi7fXeiife2=cnt{4VW}w@wdE1s;Ha$|CSW>KKp`x^=Nxb z_`Q;5r|&o(cneG95N&0)XCiZRtV7L<4&ua0v_pj?T744FK!z@(FSh~f+`cE@9jmNA zuSH6#U{|?dut7~(q;j7*MvHN9V0%2377J9|cb>mc?5B65m18Ou>Z?f+Bqz|k035tB zE(sPt30a6~`BxsaQa6^UGG1-%y8!~X`HTVyEwPP)Ytk7(3zjReg-2Uyw<2uMdz6mk z=@y^CR$UBq{#xr@qI<LyM$}n}DsZKH2t?SR@7|B{j9QjIjK8}fBUyc~Svro8wOFzrCzAyv`Y?^EUc!pM7vNq<^TWjY5JoimxK1^Mqi2|caF6aQHx zCQmq2^4#NFu0nN#b5ym4nfYI%?P+5K%Z+HfUzYV(u>ws#Amu)9`=?nCb3VU#N*^V8 zJzjq7p~m`hL;%I~nE=9YpVxi*0J5+A!U~q^9iX$MaczF^oRA{Vy|K_98iG6*t__C! zA1q~0d?77!LqW|51Tc7esG=7R`l+_3e@_*ntRA}xAnRMV1 zG+gMw*0FtE+ETdy>ml#KVs-67Y>+E<&q*>hykCNAk)A!_)f{u4k#}2pI0aZ8U}L>F zyB?3_t&?sF9T=qSmMHT5bA}u_e2{b#v=dR`)Z>xKu=|lDY3}c|IHyW_a)u{4XTncU zSe7*JAdPGOi#S3LEPuc1Kfu1}4B7jXYkw7;p^Mdnz(X^H!K7D<_!)8L4Mww;bZqB^ z*U-p#X7P_)!Nu#8WcQYNuWsR9U&i%U%b2s0>(4>vi98<>Fe6UAF)P5c#Hk)Zdd?)C z?PzZSMRI|iP#BXGc`iA7>1kEorH$kn-@^eRCm*$Mn>(Y-PxD#AoHZoHUa5g}f{Y_g zgLB;oE-@0J)mF|7_VPj4wME#1xBt92?c#zfHiV5o_OLygS_A7;CNodhz_x8*MmN>K z(!Xj+*ey|5U8!aEs|I$lNu@Hnrv~;_NmTnO3R?(#B?oZN(wH7?M-&z{b}N z%L-|4d3K!vo`M)DPbU|?6ItRksnI{|DH<;b9xE+oIE<)`>BBCq_=SogD6YGdse)~* zJx5Dno(({459Q!MW@Yf)&BOd3$Wv9Engc^#695h}^MFkVyYf}|-?F6X5NT_WbF)~o z?Qov7ifJvm#`$w}T%_cFPgJNe|0&s?4?8bOFcv|A-asmdNE7}O{BX};H<0orkg%mP zmWJJrKcSq1G%0Wk9ok?V)3k&&{fav1Nhf*-x4gx;Z7MnZGZz9aviMPJLGOPF$OYUb zZehY(+TS?}+h#|Etrk}onb84wqo{f&3%f3!Gy=_Gz@n?o=;Rcb^t z#YQtl*N4;+4HdvZ1z!{Fz#33yaB7SHk&;MYPhqtM^*C1R`?ofs-M7{jY-8J@*7qlYMtW=TkHKA^`v0snvTxvC6U>~i|**NL}QVf>mWX0(i}H6_o*gnN7}<3w<~bgp`J)M%-pNtF1gS(MVkCO7R>q^FjL8xb3kdE*tUm%?u ze;_&ButCDo0Wp2B7BKkXP@q5iypNqJA8<4Is?g_tfL|e*ImiZ;%;}3GT${$l#}*^J zXJBTKT(kDy-Pj=S%P>4B#_yf#;Ei_(`|Q5}HJ4S!_3mwXwTKYSr)=89EyiX|eyV3E zTJ6omw5FgCT#04S!P32~>cq1(Ig23CNDLj8G1sEigN_n2KD~Q1WfXuuHUMi_h}OYi z<5>{P@n!tM4m>IKfphUN1sSq3T!wYOO1}NO(-H$kJ-P>lH}MJo(B7Dj2b{hpEhapg z(jVeMGu+#K#-dC}H&MSWnDqg4x7n2%Ob(j9$p%G4Jlf55c!1KAfln6f73MuiO47nX zw)B2TqSA24DyJI?tCvaHs*1*J8aQf0QrhDW3gWZAF z`l5#wlO0V


    U;iF;W&6~XPlTEDjaI(YpARqzdb-kTZTSn!X9-fQSl_8SVyalLJ5 z>R<0Nn$5IQ{$s(j{1iW&u;sPFY_$9K0p{iQ33lU4CP}}rS=Ah%#ODHw>S*Fa8eaaH zh8^ZKcCJk3)9aNgO^Pt%dD zSmcIF;Fh?jT<7wJI<;2D^1yxUGq6Fk!-c$rkj3imd(RYHjPr;C4?}>>6_g+G0^w|M zP{8fopViv^j&cdL<&Lq=)vBvP$h^R4VL5}*LT!Yw@&Y#?4sRk$mteYllK)-eZ5~RV zUt+&d&p3(?ZKwHr@!UyFORDfGvOS?zL7!UG{nL>kO8}9_VZ+=WhOk={wJ5*g5@geLFA(7jg4b>*%3?R~Tl%ryT0Vro* z7A?Q}^o5Z}A&5%&$WzXNf+09yC)m;qoE{W3es>*-wxSF)$m?XA^*4BA&3(NwA5i`4 zV8H!fDbnwy^-h1h{PIfR$M@%7zE0Ye**0|ia(CJ5*N%q8Q!W?YjQ&y6w1Ah|zRlc! z@ABoG_gB9e4z}8K&r}eY;|fhpo7%ZKp+X;WBsPzUYLCR^G9%l#H3!GU}uyJbth=ez+1okkbGaBn?qgM=mn zKQh=@vj(iq5*GGv2M_}aSzarYQ( zL1wqefd7*aEG>o%UeL4r3j{AXGTgCk7bH|WGyb6nA3ZyP0<4Y-9(uw-)Jszp%p*V% zp~t1E>4=RF3k{ z9vPZ!Np)h|gNGWo7^_rsT31DIkSZ(77<&gr8qFe{)+STu<^bO`N$=c(7I9 zF3owu_weFvPqTv<>;aRfbj>69T%P4K9})KTUdy&B!%(fNeFsOr9>X83r#vFFmtO3! z$0Mryr%u7j&=aGTp(rhJp|x)ncyx8$Ql?K`UE+PQqi>X*vDj=$)#rUXj7X^Ka_Oe0 zzeD6Yuw$Y0Vk&k@p#W>`jtzZu1e*eK zig|CRSs|-fQ-OzD4RoD&sp1KZlF@{nLKn}l0!P-((@lD^5a1=9T}$hyhM6B|_>7cf zrr`|EhzDb9mC>1gcY%E3{Yym9f3V`uY{xFz_!1|?Q#k0l8sW+1 z)!?ZIb2EeO)xrhQV9$5#ZPdS5@~rlRc%!cPgoxb$_^;j;tsK}^UUfjdJUclRig>B{ za(F9#P_q(`GAZ$Z#9_v1Gs`Ec*R@7=vj+1`$d_?IhpERqsi4pv$`U$$v1wwh!Bs_N zi7kO%AWb(k^<4ngUnbIBmIw!?SlcAFbYx}}dgJOQLKOPh?u~%^a?~JB7n*Ki-LKy( zUo!|%O6SE(cM7p2<(^3$9`CX`PSR}=W!UR1({~izJBJ5#buL)IEoiDdJT%+Fu*$^ zeZ@*BKkWJ0KQHvjW-QCH*L%C&@W&$7Q25z9&Q-xHML!8c4Fuzym_0{YP(g$s7 zDd)snmwQzC4eD^vi6C!KXT`oCug!1;Gv1zDmO^=LZ3>QsdE8cCn<>d_Q@1YYN;wpy z64VOnsyGo8%7{Ngl6+=!qiP?-O%E-oj-$X9rd-)XA3G)|ua3X8)xt-?RB8V2<^Z=| z-eZkgf!5nlOi-L{n6Yd?YD~5)6P4ViDQntVn%c5s)yV7PyGBxoZ(H3B(9v-j)( z`F0EvPNK2rYDQ$lvGQpC{tz-=`uLmB-%tTq1~>K?A5?=}ds@KIHCRbFHZ>Q$AmZIy zfUL&V%+Q*CbtnL@Js>zT>U_-z^a+z_!;TpdCR@}Tlf;l0`d>s`IAa-n?@II$xsu$N zqt=e2`#a4wNTbXtxT=|n3~haY^lJqLHw!0b168ntw1c!!#;puIR)Y?c4!zQl`Ocxr zSuvimZwE;$C{8#%bjZw9#&oUIEkdORAK|oQfND-C3e~7xJ{*JzQj#hU_?T>NwybGw zt){NRb0D)VGg*4a0t3#F-)ROi<0^%ffOCX$tD#bjTr1Vct%rl;+Vjz_p+MvKzpsyZj6zTIfD!^n$1d5F! zW~i=*!CFe^#!%xk9>=;9jgqDndQSF;=qrz zLEam2goAX%*6MCX2VGwSGfFWPVEzN>(gFK_$qSlNETdaV$8i%M2rzokmi<}+s^FzX zBQgJC@o&J*+vCo7G!W5@X&j z(R&R?)=9w~ERn)#{D>ee3cY!ikrP!TK0O3r?=AqRw@sStEAhAo`KzE9;`3T$%TE44 zYs?Sa-p!iJ*gLZ}T1o9|MV3v6meB#Nt`H*1p&8<(SR@R)Zy1)`i~ zPy)nC5kTL5wWTlelI(QoLioZ&OTS=yI#hvf+lipI;nSC>?BA0nSFQ)9#F!la#?>Rf zu3<2;YqLRKQbemswi0+4Z^mpFO@Cl_e{4eD>lwHFevgxTU0vW*`~+2WB{O*B)xXb~ zSM<|AoeG⪼;>J>}}6j@8}G=_vehbS2V-S;BMC?yrzX!`nD9bH{wy+36NFP>)$@3 zk8KIgU97tVO4t;4=NYJuoz^Pq+&dS_Q;Q{mY-&5>Z!9U#5@Ko#b^UL5z(p6G*h`Au3<(;Hs!4cVqv>E#JPsNDT+(^ zNaLl7j!)^^OZ0Y$2>TY9aorXuC$T!GpSmW?yB)m$=&SzAtM*e;-7FV4CZ4gJS?XMc zEZKGt-{i1{*9SaZdni`}!vc2aWXB}MC>;qpjkU!#)tcA7bcp-IZ^%CKgHT5UYF&>6 zSu?8FY&si7{Z;^%E!SuT04gJRAa@Oo$E0Z7LTPE^;UEl#J{2rcunc@OcIF)a}XKk zI$G53TtA(dE{p;5htHhq+^(EOce(T+?o|amps|Gn?l7pnqdp4qvB9VJvi`wkbFIk3t zpr0NeZkq77h!bOn<)h!k4zG{?7K@gd4Unr+Sh*q>y>2C3E*eM}7g6pD56wd5gu1gg z6juyphZVywsm-Ot)@)pX_Tiu9!U7Y}>sDI22wk36zkce}*!%%dpwv=%50SlJxNpW+ z&G|d{*Hp;k>~Yb_aPlS;Sc+$me~e!Y2e(r0QAW*f6cxy)Fc_K)B|o{vi{4~gEjyYF zITOcTTN*gWn$k+S@9-|zoss(`O?Km`Gd5NywE$UZ;}qjhCI>e`Us#i?j`^dqD)Y1! z;+*!Xw;xHNoPugS8wFx`7GS!YD&3ZNu6{8C4Z4x_ST%A>rMb_lmCXUdoUh=seLXDC zHu~H3E$p_*s_~j6} zDeMPy*BQ*xb$qt&LM{I1d`NQT6X2l?UgOFU0;eC@xD6CFe>7k z(N56s)1!mk84>>-*VRhJ)ydr3v-t2{alo${2U*$cUWd;gTrB@}az5KSULrbXQ(d2` zsqcHR!e1q1@Lq9BJY3;K@Ab1gy1wp;qkJ?fIv@*s0%X8}lae@}jiZAN<5o)_^_T^I z>C9uh0z1ALpH01b_4I~j`kC=JJ}o}MWZ{PR`#H~3@@Mv6_Pl-qBYgvAhkTyDG+b9w z#@_ca6ph@fC%M}(ICE4@e2rs}aH$h;`D+Uh8`hviRT2>d$AZP)=_Yc&v?MnxBeD(p*r z$cx!#z!Nw{zGm*y5TLYX@e`|EYM@K|&FRi-ibl!?6bFEPrAAD1(*9MKd35>SsRxuR zL_Fq98*qtOuK5ViT3$UdWoYu30qg&Q`mjgq?6jLV%hYg+rYl`1xZp-s%xBo%Gt2%R z(sQdU+clbY1%VVe4nX9Kt4~T>asCfzz8FQ{)(%-+G3;TzL8Nk3rA%u#TGjw;p`K5B?HQ zUy;rSvh&(}n3tE1J9{me#yWFsYHg`@;R5zTL-m{3ygz#J`8*rozaJR%8F7fupSHZ` zTA`;b0QKoV+PVJy(>X8GLSJ>-iV!hOY{s4u+YJQM@mHXb-$GTw$kkh~k!n5bOd*q| z$dbOVR$uOa^37h1vK5h+br9@u8#HA))Q3otzI26RKyRR1X`gr);uiF&*{%Yb1pkgC>zF)_~>A^kJb3c^#?2#ikoV5v<@v$0* zErjDC*6i?YKQl`C=eVrM?Moou#@AUpHv3#{k^1e=5G-%&%jGGKW?Xq1dGmPxg*INR$b>-sp^kqTWeR7jX01wMt-ZhXsGZc9V$ zj*Pm&)v^)I9VroZ1z5HJhO_m6G<={DmwbPZAvOITM>`@ z?seXGO1f3vQ|+@fU1R)uG20@=ee)t4qC#V7w{ILRUgEeBuCc?vc2`}7|6IpuqU%3y zWMu?PkIrG5u6{;reyLZCjWHZHd3;B(3ZAY1LLuB?OFgB{Dt%FC;s&QJ7r5R=|K5w3 zym#!!jJMK>rZ~bbrA-9|{H$M|n^mu6{KWQb|FuqXy=Z|pQ;)937?!Y4cblM(1jt7c zh6r2Tvbuk5AZAyrI=YyzJj6fJmN(#@-ny5bS3qO_|R+-k;)-5_|{eib!I6_OcI1ev&&BJG| zU~OPL%*tvAHR}-ck=VTEJ^-FYLpF|nK}jQRGO>JRfyAUw19Y2sDf(uhb*dOH^QGz* z>w$4@#BWJmH#ItQ`jb%u%5HlWtVEZNOU^dv&KBneHw}#I>O5=6ioqIrjLoUAly3U3-_k>P=(0}zfBO>w7WuL>> zuM}#c2=~hh#qDwi6uUo3(MJa+vW^aTj}m2uPD-lzGo0Pru%uvBu&_~ji)bBl=i%2&Y&7lZ%u04DLwT&bGFjB+BBd(dTi4NmHLIG%q07|U&FaCX0W?D zC7&|ea0@!ao!FOP!Z|$l<=w`a3^uZS=4eY&_p8^RQ#l~9%VKrJ;J+r;N2jGE_s8Un zXINOIiF88j@LO^)OXe&ra`Yq!|HBxYC1rC7!uy&LQG*=2iv3f4H7}BKMW0!qaU1>Z zSIDjB^)fA+qK|L@lg?HGNgo}w4GSInO{}`_k<;zX#--&62f9Ovzd~W&n@lqT&d%Lw z`WtoQUnzI9_?~0iy0^FK=QTPP_iEyx=6R`aGX_k%QooJ0^gp1vJGK0scsDR+z-b30 z)g&&W%-Htt=r-uRi7Vee~8D_UjsH!+PhxJjJ>6+b6#}uch0%EiG&DIIp8%f z8XGlWTajU3sI_~eauN>GLY_Q%Qn@R6$6upcs@uaej5fV0E=W7o?P}U|=5YUxZHM=6 zHJtf)>cR!u6O+>V=RfW)jvqKNekw_8Bp6vXF;M(=JG%pn>}>s7pDncdR&~hI(z2cV zC4*)NPaYMl!q=nCtPkD6Jx z;GPKU)0R{U719fn<{*VW2u-!w>2C48`Y76&nc)Z5v~HA*ys(vsGHw3N2)Jcu2W5J` z+MSM!FMTdr>OJe}Ik6qQ-{~G1sqMSF|;&+~?rqBDS)kgLh-Go`%~nIC)m) zpg*8Jf6B^nL~?p4hX0bY61a^FYi=>q?ffN%#uoNPhWl3b1%~BT$VG;5E93&hZY$w3qi74^ z3Zsh?EavHRA|Ly(oyU{5nhZ$~1AW&CI0=_XuH#9rF@dL~eboyAbmj*L{Al)>YL!K2 z@8yv_qk4`uw=(uhgyP`3Y!&%9!=-d4f3FqfPkFv_K$5W5X*VE>9wOS#qV`8%k6N7g%j+3R3Ik8&aMFwP!Jm;$upXB#-zp@EyRxZ>4mY!WPjRL|cEC#$2v4K3*)D6sWJ zUKypRHd{+s(Pv6^FoAWps>G^S60YliTjRvJbfdqzN&KEqmx{%X1EKTWAQ;4PWW?|E zYT3Ccp7eqdD+4u$E>n|2kj}8^Do1qbEbo1x&-U8(1JkF^LN3^s>)c>ECGA4|TG^85i)(oo?E_Co<(`W&?L;4#{&g1OA}zbd++-XH z@IS!Bhb5e=)SPxaFdb0H)3pZ^fU}^o`f|ffgNghdqkd!bqIzDL^0hlYKaUZc`TxyU z)qZ#{iIU6J`1%K_JNabX(4bDZpv~#gMyy;Qqeg`gj=DC%Br5l{xH}%VEj{_t5{?^V z_=>$)iJ}bGs)4EZNwfP+K@Q_$LXTTVUi1dv(y4mwd}Vy|CxNOYJ$jg9{e*dO?y9VLWQm zG)Q^O+aq~5%NvO&aX~iJPk2F;Z5d!O;Ov$=VY;h59kcMQqrm9z&V;9d+8@6i@;J~X z&~VipZI9Ki#)=N_5O|z>r>fE3w<+!3%d_5LyT5A*LSglhGpb^j{nJ@oR!UZy3dUh+ zn?oS>Z6Trp95qdli-YO2nCe0vtzpt~q-3C739s*%(u2*Kc`#=-f?nj__Zn-9Kd7kr z%2NmykjsTfZ@mo5x$hpvzwH{Y$7wuSLsKOCDlY#wgzR}v5}$8co|SXsN4oSm*5t*T z7-Sti0*H@H-3W`V7{0NYJnk7z)~a6K7EV^K{`NQ*BFnCPmP=UAu1U@{A?;@Kvc7ST zGX@=JQAhbDhJ6B$1+?2&uB!Aim{P8}6wRLWM=J4~KJ^LY7YZh3QTqI)ZPNW+)co;T z)UMi}>boThS3?da0PC+in2SIik($zIWeIZu_8FM_QOpj#;C8B4mxS@*3sg+JC^r0+1rjgjFO;Gi}>c|A?RFGP(ji znRZlWz#V2+Nj%`!FYsK@qu*k(sP5%oxc-b>({IwZ_ctC$>#>KM{{h?hSPdz?a{5mx zA2*iQ+Cm!suYrbtfFA=Gl=chLSuf2jur!;I@{SDd1{k5kyO#k)KGxDs3?koFkcK0b z8E>Q{mx83ZH>#vv9f>wg0Elq_``-eLzalT~6}vJ^%BL_qln)VgXsG~MKLHPEGGVA? zjk?fGggDobAZ-qcgh^}S08o&$w@qRxOM(8QYod`^W7^`kwDgGWZV5$85;(a=`_~%N z4<4=2)*6>46l_-kh>rk>v<|&_ArlLfof7QYNI9U^Xrpta(OhR~ zW7RDC6CQA2XLb3(=0>vLO5H))Zh@pCIoYJcT!~atG?k+6RJ=Ji zdtH`fcWw*(Eo}nXQQ;Y+*WOieJ?JTT3Vzg#mK0W^0nZ?`rNsJS6WdygwYlJFxQ+P? zK5IHh6P};ZcKo4I%}J(3tvBTyQ=Y0G{`Y^^ac#4TZs^abq!a^D;tihJxHN0}IlV z*}M!fYphxeX(qRa+DQK6I?E8!J1^-5Cj9@n`u2FH{`mhQ39+Imw|zvZlqG2{W0fKa zT}duWDoMG^#%v)WAqmN4Nu?sI+;5v(2w4)7%Ql9|u$$Rtx8M3c9>4D&-+#_Id!KXO zd%a)hyx-5)dB0z;*HidkQGq-$qHtjQmGe@uhHQ0SrP-0D-J0}h-dnML5pZK-wNo4* zYmMaDfJ?l&Y;~*f%x^UC*T2@tq_(ZkMZb&qL=hP-=;qUY$r?n}XpixqKw`e~1$H;T zAWZL2G46liVYjx64#k|P?|5NZ8Js;3ZDE9Y;S_o2mH8_013mJXBd_3h)Sg!t`QyK% z9^d8LO6{VGHqOJ1FAN#j%_nC_-HadhrH4@|uK}_cjBCyA*v79Ror*V*R^6_1nZ;W^ zZlAO5&LLcR>w%e7*OMmu_R+@va!+96uG+Lz*T7M6ABuccSJo27{zjb$k>$g)oi5lp zpZ?>E%x2{%_~Q(4wOIRDXUi;h^yzy)!?aKAqd&1Xewy3p+7<)Bf4 zqPrl!aX>dRGT`$(5}NAT@ZLX+!i&4LFdLZUdf#=yy7Xrt)F!H^`A)SW!O5pg-`a%WbIUX|Ibqm{-8)0Ge-PPu)1UEtCt zf1j_k6Add?*`A3U^T09>m6q1SODl~f;1+M27OVNc?zhVV@awt6sImDhTBPC%`-g$w z+pZ$|PC4 z_nTOEr;Mm=WL#CG+HySOhOu_|BB4NMm>g`;g32E4e{QC~W_uvg$}XPcJu z^Dakkmw9~7@5c~bvFl@!gw;bj4~w}Ej>dF?t!m(8#D7NK#kuo3Utn#Tv;t+@j>P2W zL#jR;KL~K>Sw*>D>6*da}pRfrkg%*y-WL`7-pTcoe*q`j{|4US%-;>;%-b2vR-SC=%YNQ;eX6nlI9WRQ zy=l2-ya(Pc+lzk!`8BIVTbicG7ZuH}jFn&UL0ei8lPZ!emE#xz22&@siH&&u#2mk< z*S(ud^D6FmwbfQ0wj!^^h$MDUgx!vZsCnn5xTn!3D0E3SRX!Y}UBbZFL@i&Oy9Y-P z5sHt%8cQ(v8>`PPVHb+6o_FV&nRwSf`~;~Tjgi=l_HvFoBVIq!AWMV0h0C5*Sy3ih zbD87UIcIss6#))=k{_GsgDSc;<0>Bu$;UuUV%dP8!RIy}<IR63TD=wkX=h|LZ&|Xl`2P+lvw}QK~@x#E=abw3Q86m2~4et-GxNdyQs3 z3CG}`6@e6Bbx(?-o4&^sEFu;8@5=u{THQaW5PL+(fKLSb2bl6i8ElAplx6S&@csv5 zLvM8@`lAURYeuZLn6M`OKeA1w( zgX{vvnJG~gxymq!1mmvzNL8VHGd-R9dor(_&+`Ug1li=JO~yJ~Lao21NnZG77Y%@PI1u2|FU ztJ=5z<((UhqWKF{Z^V~J9mc#`FreFeKE;ctJg43t7qoq6O@YXbGi%5zRTccgyq$1s`Xzp{SZ4NEG(gkDKm)M8#NjV| zkwp(M2E`JLKP9hSSEgl(mL%V1wP<)!8PNrI#N=+yvZJ~{ZD|h#UY_yIPVUK)R1U|S z^_==NG(&Lyjsg$;in%{kej`i*Vn;`P(Q_-5I`{IlV+DIo3s9f=?Cp#8f|$`h4|x>3 zdvP{sBaA=vjR;HZVJ!Jf2(s27pSGgn=)eCu2H7LV6szfu1rLh3THnWtE{83hW(kwU zH=rG!$ImqY>r4*3y#4)9&(7zgy1FHWVSSnS$zn4W;0t=~bk->6>LC*$m z>bDEm0#@i3Hdl)A^D#A)7)il^MWW8j*AbHxIm}SQ`Op&3{Df}(VxYCh&nL7W(x2Eg zy+Q%{Z;UFX5cY2!xOk^EcvIypAu?FG5ZZH2s^=h%PAHMcgVkTd@?t`>tNvL&ldylb zP(#GO;~|eo)1^%dc&We4d>U5zSA;b^+hUqdL9QKYk;oHozKZCeYKP09X&I zIgFXn&U{TS=R6%mpN9{MH`V~MS#hiE+61im!R585aZ1Tqcv|o0P*-iD9arCfecw@T zmR4k#w8Qx@k@qy1cKqa3 z_~9^#`-$K7w3sSnmWXeussJM<2!3Z8OpIoOAL07CkkCxC1KnFbNMGq((a{{yF%lMi z=NXVInBMUPP7Q2iJ&fK_K~JmrX@2+p+1}xGlO?Lp!zbUIGxd7o-O>YfFTK~$13xuK zeGdhHFV0gDPW9Hg!Ys(rbY$GX=R^ z6?Dv4Z->UO4vc&b^=OZ{yoj;zt;k&MI&){|1${7EP@9z0z4k2q1Q)*&8m0fv&i_OU;6bPCAM4cd1M$$ zR|Y;apI;RQlwJ^)?XsVcepH<$Z`aK2;o(nAJmv>}jZ0fhDcBm_&ERe4DE#3xcz<V}gpov#Kl)KsGTR=N8v&y1uw*j&)^%4<`<=a`+oE8^2&)XoEzm$OeI0 zCj);e32A&<7=q(l@I$!Br0Uoy%)A8q(<$Wi-8`OQWl#zpFfGBRBrhwe>}HE$TM3Go z&r-9^zmoZW0$F*%vZ{*1AKbvV6s=`773_B&`V?{<3p*o(8IWp>S@r2D1ucWCUm~R* zo#VV|D^s$RyYDMG;yPj@Mn-R$oOJIi-*Q^g_4ynqjqsoT7*O--EKeF(4ODxW^hzXF z45NwR_-73C6FBN(wf^&E^b;9r`R8+crfi(V$#B3l-OZn@b+4-U*VFgChtw86q&rd@ zj_g^R`A_&}u9}L>e3*nU0+rd~TKo&7s7_52n$_mn#W#5uk@(vktYm!^6{xp*om=^C z6eRhQ?=AmdfQHQlm&)`XbD*Jxi)9_{&|>}A%r9S&-M`*|mv18cuIBjN-cXy7@Mo_3 z%T-JpqYV_Kb*lSIFSYB-oorO}o=WLvJvxsWTO88ePxSCQH*^V@{Uqx#0Uy8;BCQTw z+VQMH<63HvvE`L9;It4FDaL-zE8X6_e0izQZ2japtyrt@VnaIFbVBir)zOd74TCWj z;7Gm6yR%z}&<$ix%$52-r#T%{Z|KP~L?|lJU!~4PzCuZz;HZ|YneNHFNUQZMiGBCV zMq!v&n~-$Fik#?_*PtOLA0H{b2@M|Oz;U=A;kc$}y5O(+xq8-rpaC|fff$PfUUMSt z{TX3DQ|@Je=AWL!3r-i7Q8R$e4=-x-G>K^RdK&sbKg7;wvt9Hd*&YVKG2wS+jR;A> z^OhtP6#y!IjBz6kiw*IUygnzA&`&||(9J5bznA+QlD10OJ-i1}xABGtmoMLoMcURj zYK(>1-gp-=^%esV?9HX7ag{#hoF`AVxu|YW`yG^f`;G5zU@BHE zcX!MusuTNaZWb|E7qIIwxk1-llZcQ+EVYchjHn{sphnY$Ys_)HMb{O7yDr^`N()+V zf~XQJVjm~LcIq*|Dj(d}BDQz^7-ZOVnHB9al!HC*TAGk?Z%qhWkx0wak-!_ae+r|I zC}5)J#dtYx>}K&fvjy*iGPL}xgNWo zpuvn`?vo>_`5vI0FW;JZw;mGH%f4G-rfSl_K9) z$MyfQt45WFiPwPRJ;?LI1Dg+j(wQsJsy!i@PCfedtY*JS*@k?NJ;E94$TcM7kAwU7 zc*a2?#^ape^((B_8VT*CXL^Y`ktb+K-<&-fkrmgyi%ugyFixaJ zN^F0J+`}cm?5Qj`g#$U;4iDX^?d+_x>X*e9pBoNC^!8w?{=;k(m|y6Tk?kV?8d=;= z16`w`KjU?0znFwdlF1s{)|CY|`)}^k$Cvjrj*uLtc=7y}3l`J&&d|tj-_b?p!vj_R z_#(M6iC-BrRIzP^l#-+XE(j3H} z=HJ}E-PDsz(s@2K_S zg4bBeuJMX0PkPqxmC%{t;BlH}?}gZf5IpyDwEn7Z{h1X=zuqXS??#O^y0N|pf_ysXOH#n zYhpz_m^;{Gvyyy+cx=`s?;=_Hh-?fi&l0Sx8C}(vG~at{ZO`&L6!Q)zsq)QLTNyfi zwl#umDUuvS!Aino9O`R(79cquC#iK>L}PEPV7d-vt8Rg}>ve90HF_H6uP6e1pg`2k zXu{oLq*T6H8R@*v!=2#_*+S~5j@U#z_++q0buo&H^f*V_OxlDp?CbV|=%(^_G7CKI z2B*JJ&|1t(OqjwNr)^w;{g$$Du&qHN(So~$s$Wr~3BoNO(;@OlV5IBbw3@~01jdeQ zXkeDkjX(gu=m5HRI*gL608tScGsit8_1{!ly*99CDeOrP6q4i9P`Q#s}E#cQ?!o zW&67b!kHJCu~+PpSU}|5Qrj$-CvD}C^u2wruld+iHm&C&w#WKByJ`IKOzy3T4_WIE zpgX7S+nihdJqP9q3ZN$QS4C#cn~?d(q-Q>&pE@{%qxQT&jXXeG?yZN=1LP~mA$$Kb zJv6~8IdE?~^EUGiQ*r?4KUp?TSQ;zW60L&+bD=j_>P)v*#w|gWCU%3={S{ub`TQ&V zlzog^mBVs?;8L2+(eJ-@$BS<>Nnxw2lN2-AwuK_5E^_l8bgRI3!y8*s2l=IPLRHEv zOS|Fa?1v}Pf}4S;=D6mRjTlAW-kOd-x6o0EbtR%-mdj=h(N$RF;xc{%aufgH0fN6s zF}nK?9jkyo{tCao`Q$6|ms7c#O1)5RwaVEZyp#3PmXa`DLBeC>GTL3rD>A3WsY)1o`;ph~!+ zd*oitDzT;Av$uiKDk4Q#WL>K?bKYwIDm6u``E09mYnsBUNn4)EA~7LkOAq(~+VpAk z-R!revVSi)B}s&-_r$ivcB?D^A$xo&PHnKk_ z`RN!*MUvWsW?E-SDe1EN$4^QUd5w+~>HW^+*bS0IfC8hNy}1j`gs-3;~~!+83pi zs#ehZ3Q5(+60(ZjQ5Qq?0I3#7;@nCd%7TSUeEbD&g4^kvr)Lyj@L(#%FF$0tOo-9f z1OSvS(z+W{vw+qbbIWzGo8sT^lc|N7X@wi^MYm!GMoxq7BN0ynrIZFaU%BFqD2={9 zB1MS#I5hJRzx1qB5r|pBC>q@_3_1EBwo1l35hnd}R!UA^`%#MlIVM7lDZ$KL%rI}k z8?PlGGPd@WY}%q%?S-Rl7at(;sYRo%^LdA4dA7pVhpfXAYB3?!cDZlq;c|0|iy}o? zUYg?v&@Wj)(WIF+;>i${#0H9Hb_k=g)R~y>4J*(t)NcOV7j1!IpQp4fGkplj*qSf) zulR%3ZWW&WiDX3O^LWo^rI??nHuP5xP&DG5es*T2>eDK~?#63}JrNT@0)WK2zMX_& zmw$I|#k_ozMfViwzLT`Yw!F!@o$Gc@q$s`iEKVA{E<_Pa;UDgkYFCpX>DA%0(On1d z^V(~ZPadpxJkQjTz1QnqrTQ}Eeeg}62^Afe9i>xF>7oZ`awrj);nN0M(&DOVAe?bR z$e&oJ54~(i2wwx%iOBL|3L!$|WFmMd8gL~MP`93ENHB4)bX41CdwI>3j=i!U*e@nU3XNC{g1`DmEW=WP%b z$dlQA$OmOn{0SjKWWbzhr-ZqarOL%}lCzYxFjG8Aw?RwbTOx+*_Od;LPO=H~KlZPxX}x zw&^Rku>S19p19i}#viOlXFO;t^8j<2x7f{*gVx2mURJYHfn>}Q4$)=HL~V>~g6w_{ zfXStl)`y=y()VS%XcJ%PZF9x1HnHbwfA{_)zuH+B_hiaTsoI@8gCWa78Qq=~`Tg>1 zIu|7hvI_D>nc<-{#Z~S_Rg@CDJOKjwEmp)R30Q^F(u2~r=y*2@{1I0afIm=^kU7h@ zAK?I*qcz%y7gW!Ghh@aEKCK7X_2>ku#wQw-;u5q((;22{DTwyMc~LJJEhnl_`}@~| z6hK~?0`+d`wPES{&JyX*9vyGpmp8jgESbv%7Hnk?se-#W5n8*Qb8l6m{9+a0+dPaa zJfH}gSU{uh*>*y=`HvRCmQ$b#)Igr0F>+zm5ny`_7A$`T8>RX6z%!n9tI%H5U$^<(d1*0q5{ku~2v5@4Au(aj9}HMTZ$ zCnZT2Jut(iIFi0%c(QCcpt?-zd35gEWLYe$$VArXd+L^m7U6B!^}KMl#sO*D|5)Xh z<$UEOR%3z~(+uokD%_U;zG#(t+Xmk5Dzwyy>giq@QGJxaP{6;e0tSx}6v$sx1bgaC z7Y-9orL}^^PMns2yKLPET~8%cFo3g z*^)eu4Ap}IpGcJNua4u(rZ#47z~|2X9f1s}ERO+y0zMQuH5Xm*&Z{Bg?8;k%WVV#r zdkh*Nnblg)y4I;%(`nXJz~JSF7SXHE8A&>-6TX9CV4N

    F?!iWT98|-lA1{cHs8Igx6CgTSW#L&Osh^~MlDyAEDo>7e zGW2V?f_R%};3mxuxN$n%@8JXhpCilm{pU{V^<~9x(x4IWv(QvDVek9G(vwA{SHj4TtD~w79~;lj&V`0M6ItPd_roWhMbAcJ%hz^7 z%k7^L3YHH1H7gTN1i#HlTG;jN8E8{IW0b=F#$GfzQy3A`zvMf1uf#vA@roZ0OqCMI z04F!kfS5w^k!RLcFQ9)vG`>6Zw=<~a4ed5@^=~x^Uv`w9QM_mT)o-i2=iZ=lxTIR+ zp4f4Txc=tXMo+cB8`Rf)kNzNE&nVh+%HA*F$<1ylF7jh2diXTaH$V7-^ZjUcW8~{V z!g?STO*|P>BDLa8%vR;~;xR>c>hRYd24O!2H|~1KtBO+mV5@ChjI2yO`)(FKNjWC1 z;I&;m8ymblvG(=cC&8k{xmW@?OT6jTfG}~K!(6>0m3>5nT5L#5eT4R8(kab*4(H_3 z-n1R>i+B--2tNONsq*Qnxo~N?ofK{I@-*5AH!#xo8Em^D=({_j>$tet)@5b|-%65_ zCNIZsSDsYSe|`K;=5lnHe()}U!8*%6YEv+F?}mtdx#+AOsCFhe3upFO>pmgGw|MvG zy7KXz7yc%+yfE-tb-OHGSUeLOnAGy(dq9uj>HmuU@S=u&zq}6K{1)G&8cPbE2Z#%t zJOQI7uGiLNA%U@_-ces)(l*s>{LoVRnFx%NKZJorO5U z5GFD$&-YHo4`gaAQ9adb^3>sK@sLg+{1@0ShAeRuzk86=D! zx6?l#ms?Sa=sMh2T!Zb!1I>rg!LOP++Gg#fC1pQW@=R~YYw$YB4>;4dz zC<$yE4tkfzhR0q^7f%m*oc=YMkFr(GD{~}=Y_#2qEjC;kjVqf``>pXA^JnP{Ky=`F zR3nC6q z5h0;A{~XAFW6X)V3F&Kx7DWtXRaNWaLd_BE+xO9>m(_YVc6mvvPc%-M?G5)@y~83P zBE+lP2qD2B)519~T94BmhOgUG$~XFol?x8Hj3tA|o7-J{45)1nk> zRqWbDf8NT`eD{8<^NCIP5ya~(51C(KumR!M{is2IXmQji=J6%LB?`otpZxlL(XP>b z19uF*SL?86CxhT0s`C zeL1|=tN*^$Q`z?WE+g0n%#Y8p?8r2U-Q$a{%XgsfpXPwy*K0xy|?qHMisz{!DAVE>jP`jf^-yA0DKjGp>=( zIqh$T$>h&LKD=8(pMCTJe`%)^&#SC~{rr#Zr=qD;2jBUm3HD2T_WH;cLuhIF(qw-? z`72|;1!zxtOG(*b!{>-g%I2BY*!_PDc+oK#j@#n?lXO8(cMgA!KKw@L>c?gtWZU<3 zMC3N~N9eLkK#W?IHS4dO3y;M0e~%7i$BqU^9?5{M#)WK(DUt_0B?h*57k&SomfW=) z5bfGi+9t1&K0Y;{`S)j47K!YV-w%Ht9BrC74%T-$9|B-OpyFnqQBPF2!r?Sh$l+Lg z>YSi(C>jCWSaakaa?x_vrn5>qPFeqv2MIczV((^#+)ih@ zU*IhwTgLe{t8m1(x??~f1U*fw)<1e{V_@bYqAHji4fVSown-6AX92|3i}5N(2?J2x zt^0@F7@r4HZ``@Cmlg7GYk*oC=@>yFJasks(OF^Gfzf6}b=tcs9OqqS)|;*`T0QO` z%R=0V)7yOr%Y zn2XPwM~!MF-FUkc58+tP*2aMbOOtu)hu2VVyP>6+Z}-;<+jw_BUh*Ral>~X(=zNc= zj=LqGo6pcRaRKhFV_-vQOD^>x)eG=zS&Zhu=nUnSM%`c+X!)Xiwz*; zW3O;-f&VO?9KJGQ~3t_?+hdUJNNwY zH>DFLkB^<~{JP0c`IleS*UdMJdJdiSh3h5$m)rgn45r0CCGn+ZEWe#&?DjSC8 zO+*k{{%u@ph==8W1l?mglp<8go6+>z?#Vj#0B??4eL17)?yz_$tB(BGjQ5#jqoWH8 z8QC$Tm-D)jq`{ctWOQ5}|7Nbk6g-YK&0}^J=FuZ?BvuE*0NdFf+1eG&TI4;Ka z$Cuao{$J&Mv3P3j??v`D6P`Td?Z-+F-t)eyK`?3U!JXJ61JQ`XIRq1VJG*-&sNU^1 zKW4*B5P-J|FNw?8BHFeReM1?0v@djN7jZUL>R=;#cH|^%^wYI4pQ?e`*pQR4XCRe| zB{BZ5@; z^`C`77~qp=#O5=?=J&qXa{UOz+CE~Diuf|!;_lbJDn~){Wy(?yS@8CDMqk7bF;k5% znr0F+95O-?tNRHA@TyEXE!cV_$Du~*^sM@nwD3fra_@aiW~0*PtL(OTFm zM7j7Lqd8Be#@=eL^z}4u9eN;^6MT692z#UWlK28BJdNmPS z{AbeJsxqb=;&EAs`$e8x+UKwM!KRs4aBH?9;<1PaY_Kpbq%R!=c>P)_dDc}zH$GZv zwFk&-tIr8{i|!N>=5Q3N_x!q+I|8bT)A`dKRVYonp;T}wVrZ|{|dVgXwKtWYn=GSxN~-lH!(c^xzHRGQyZi6 zaKwUNN!xde(s2Iv{OCx0f0gHlBQy0F2&kG@iM>5)+n?PSN+f&Hg*M%!6~AOUlI-=m zh6*`>!*}wcGg=_U-Iu>p-@y@MgVto>{;S66vD5Aom}X>3_wdK=eccoX5ENOF!KFu9 zT`xTBhGT>bP*@q!}Z)J#2>IiDwAaC+VIOl{H9-pw}){hhXg)LGvjS*F>yBoDX6@Sn*Kf3O_ zPFZu=yP6*A*rQm6eH76)`FZ^=buBj0OL(wDCr>+SlB2l0vaoBG{5Y1RL)?lj`hS)aHNi1#Od1URmE$lj!{qM zH6qcp(I!^;xDQXPckAB%A4Hxz&W=>CutqO#*h;EDs|_|u=(hcvUhq@gNZbAv9iSiW zX!Gm|IE(J~MzHE9XGfYj9W5Yb50mD7$WhPcsy0#8oL}Z1!LxveZpe9u29{*N^hG^yobF~k1Zowev+$+SSguRUZHOtz| z4ZVJ>6)_|`iBci41?H%v>8Q#@z8}Bz=73nwaTi(`!&8)ixgOmg zRp!N**KW)C6WHPvRU|&*Z-!acrc_7g<{FSkeV18$dKrrWi`(LRN@NAMD9ns*@oAiQHMC5&0N`E9(!oA>=Ddm(R%4GWshAb?Y){cHe2EdfvWLcXO2>^61 z9BIkvlM_$pCAe=pQ^_gU#&fKlCn`tMJrRq00q9r1$7wFItdz^&sE#cD$uA-T_!fOKo_jwD zl+Z-cn~J5lR365tNsW;smsv4dqzyDMTpJ4Q0JIZI*XL7og7S?Ga9dEy5@-tO-fJ9w zvpN@5pf|)54vQ)l5#}H$FOm+B6ON54VwplsWYD4t?HN zF8%QyjcTrr4>2I=;d0=6kUA_SW=IOHqfP@|{vpN+`kZg9PX7ITn4qsy4wOKmbdXTi z8U8c3>ksK;Q}5>MDxPSp3YEUc5YC8RcVe%#tmWKo5yd?TdJmK|zkn{|l&}k?`k;~@ zFBrR6SL?I8sqo(x7eRzLb+_km{H+R+WA7Eg_;tsOr=6Mh&9U3lLOKcl&-jqeAonW1 z?o8darXww#F>uAorQIX;X3e!_J7AARbK$udJXp~11|sto$>0aQC+PKHyJMn8vvPif z`k44HCF7wjnKaK1wzorZX^)0mEnU~!QRL`k6>LPy@zU^gT=e1Tpn=c)q4_$%iRO2O-#B=eXM^5xu`WI4%W{2Hx{?=0sIQ%6&JftN zW-8v0bxK`&dith148&6YCs6!cg-`xqL~WC;O1^irV8ze^$~YE|E|1CVr3suE2g zAf9kf!(=7xFoi?Gw>x&g?xi8Hqgk1bRjlNRs%d`5o7+#IPpNUr6YDdRpeoVoXtiJi zgl~I{%Z-+Z^MqT!&C#S4efINgh|1K_X=lpr&b+oyoqd#3o%jbZ16tjWP(UG23ms2X zr|~{D7!m9i^XNX;lY|u=JsmXhf}lS8O^etl48Z0fI*`cAIvoq-vkOpb2U|Cr)aYFJ z<4)O|Wxz5st9LW&RHn9ST>nXM+s-2%aVpMN$C$8^%qsN8eyRzgq!*n;?x~DZ0^&4X zX{`gF-HAB?K{Kv_H-0qri|unMN?IE3el6BOAJHV(Lo>FI5l(iFJBg5R1=hhH>K=re zA?|T!a_5xjSaX1GSHASXoRcF`HIryGacS5n$G$<~;OixLrE@ z$89r|nYXh{H^veTZ^vdA=Q*cN;3Ik}A)!nil&F(}27uL}iiBPII++rER%CrXKaJ@< z4ea2g03W*TM(G6`kUnkaoS1G1HDT?7Z)IVxeh~+?ODx*(r;tjic;&jSj8X0Gtt>NU z__StyV!fX4anX_Hm+-2imdhz+ZAG1!MB)~hT(kyRK6)$u*GB5ndoamOEhvp+RG2AW z7o0}jT~HkWKlojG*xPa1qobxXvz6P~vD^{n2-z9@pPf?iNu=GxX`~G#hkvR*6<%=P z5|0U40aWKxs(_A=qB zC~DK?lj`Gyx`>m`K6F=8ePpghb9WAbNvqY2K1R2&aapbk7=Ib9u2Lf87fT`Wz zyzB4h?~vLd?|hgKnsS(KnsT2GfFn|1GKGVkT1DA6r=t!k1@E%k9K73ZXR)KmqCUPp z9hQ>x3IWGebpw#r?XA^n$BHxKaqj03g98CZZ*;U+hFlBoec%Ut6_q*f&dU>j!%IA32qq25L%_cTwCZLtT9RksN zeEUJ>QDiJapp`lcU?i}!`6uhMJIgvOzD-Nk^t?R|bm8T|tzI3@ls(f06vVgdh>Z46 zMv}u5u8{poOON58`U3u@`rt3~LsJ_qfdQ!Pc2QqOUF{ORD4rs_O}?k5Gi5Idwlydf z%y=A*1I2*h>a4T%S^RBqQeJ4gIhWM@w8_U zMn~B*emLA9m8=9x08=^UQ>*H%=7j{}^AzsHE5%jkRCv+j1mn29#bEWRThocM(Z)q4 zs9Rf&^C?2IPTu2Lq*k%>^iAq%=h$od--s3XtW4!Kwcybo5Pfm}9@{TI1)eAsc4WMb z$w@aF&di-pN?j~IAVsWr@kL)|L*p){AIjjFurJ-+#>19qrC~DR^2Oah;zKfTkO1^a z1-$x?<{c~-)&8{U7a^UibFGTCH*kuGT%AyoS9kAF8U{#lwFClw@1Y`bz7sHcic@Dm zYkH_1KtKppDI|DRJ{ot@cM0*%Ofl{#V&agx>niKIm8lCRQw{gc2!U{YR_?y{z@|}v zu3Gfix22Z~#5jYweTl|fp~}%ngAsf!pi)bxa}Br&eD^=@X2LGqYXDkp??`4Oq!til zjM!~}<40Cwp5x}F=pDPN%cG}qGhbjkJ3A9YZ#JI{15bOccCh$6)1WCz%lJfCL*}>G zpT&JsFG~+dEcZBw`l;LlINRwVp?S3LEtZ1i7o2M5QqMHz7(%U$qn>X(UH?82sJnPb!1aL3S8NQd5dC)d5rf}FC%^ngQHrt*AF(4cWgRSFvN01DC& z|JVFfmJ{85I#Ka8#vZ9Qaaxi;Bg;8?bB~h9D!|pl zmJ;_G7vf>&8-n9Gj2u~KIL@w+0R|L6y!3cB6Zn|x{&*I>q1a>JoIt)grCu+%eA{?| z#&X5Baj#1o7Xq~Y;F(6#U+H80oA2Az+3NSMIg4;g!N>%GEZs-4=%wLw{dE~}Chiu? z{RvDJ*d_X2ycqK(9|}&coBxJ1skF&UF0so@5r5y);VCkZPa}7d@j4k{a{)bktBErr za~YnPhpL46>{(0yu07R~+JCk>yQ8A;AU|S5J)Jo@EG_Q|c>>^k!w=8^t>sfDf(Xok z6_cxGn06TX{e&`fpj(lG;F)0`fMa%u z^Y8bgr)ajzOW(Mtb#)zX?dS(y-2O6_@TcRs0X4sN%17)NlZMyVsBo@!O4DL5ykJVM zVzc0`gE;~V9KN1R5bYJ|)PK?8Y^ea>*j8I^!zmC6w(<0@+g_PkEAB^hNOX9<{h2I; z;hsg1JO?WfgC^Fa6A3yG3!dfUm83hD&uWf)Ne3-6xoR5AK^xN@(C^L{G9^8Rp=r4S zKr=cC;t|@+33~v|=;GASIyoKI{B4#PLWDBnxr$^7VcPB@`q4@2*=3Gm(j^XtEOC)}Xtw(bW=eb7&;KXD2r<^4 zeHzK$F%ew~0lm_*Q;}9=UIDnzd^xg>7E$@oE7ha*p6WMV`)Yf63MRp33W=1cdk>xN z2ij>8VU~Eez<&@Tz?;ZA%C-8O`o)+mTg|01`+AUsEQ(RA+x<|5SMoMAViyO%kMOF0 zcd>`uXL{_EXlDKwyC)cq_SsbM_ia)A(yuD9yY-C=80q z7IOOSSw1BPf%Z_pjht*t=}MvpVY3#=Sx>NIIp}Jq62U%z!$)dD*HM++J8k@_4-pn7 zaQ*rsVA(|J^g|w<&|3AnlWMxil9n#HmcIEoV37elYcwY3Gkh>{>zi}c+b=1X>{K|j zMd8xzjrn(9H6A~H?BKCm53jrHzTcE_d+!E?#Ah2X>Hgf7k|Ou(v3k1EhxaGHeb_b~ znl-a=Rr=#9!S}B>BbmvnTa8(@6BeQfAL2Ihh3!i`?oGIL1=_K0`glAJRx6*m{kAZ> z(g0Y;b9qT|!isa?+I3{T2v)R8q=-O0USj9Q->rY}x5(UiCm|Wb_CN^hNO27p9R#atgrH-0xJ|7pP5wL=9%>Uz(C&>msk$QgrNVOSnn&Ob z^`AuPUu8(1#ykbiG>OJP1yesDiwKwDd*Ap5F0l%hT6P2h-K8UA$u;DjLzP3yGAgX% zRY<(nHpOsV(=HGfsb}|{W6Rej;M=7X1gen!+CAQzQPWvBrLoA63z@tc=O7wIeb_p& zU`s>VETM<4V!`?y7#7k{5>;?)0Mx{)8eiZ`p8#4xrIivrbbX6&=BeI7S?q(6wYgaoWA(v~UAwuDkvR%)kkr4WeWM-5%Pty{U3d;ykDZ*zG zI?QW|WFK*q)W(-mJ$)+|4rqsySoD??-t|WVP_&G!p2TPe(hniN;=*i-IYfx_SA+S} z)k_z7X&lp4@AR5(MX$IjR^eL?a*X>#v2Km5nQ1YQ&CphDud4qfJzGy2xmU>e%$elY z24@@7F9osSSpx*q=3gApT?ow@-9ZBB{6JZO+(r-sT~++F`;%#9vh0A{fJtR97a;v# zM4Td!zqGR5#55GALC!EPu)+k>f0f>|HFm=RqwdD9z=iJzA~s|miN+<12H?xPXs{_m z=G{IBLb9L+xw?paS)|BPMrv9KE8>D^1x&^#^3j3hsj~Fh`a3kF8A**$OURCDxWGv( z0+))7}jZyHgqyK6aKMkInNsWGek=q+px(klC_{-{LN;R zmFQ?1g~}dwf(&1#S=|%+78}#ZG}aDDd=Z{`yAC4I<9$lkAYUUGPM#Jn55T_CLm@;T z8XlnEkiep3A1Ev1L@=9Ja1c$nXswxkVy;BX(iE78<-44&%-A1 z=OG!y=|V4{dcPGXp*r@B64ZP!z zxx7X1u{`(^rZjFW2>o<55F2+xmp9nF+R|+XP4pH5maKPzb}k~HPI`Q^x3|)NL5O8x zx+l5)=bB&-jC-x5hY3y0#n6TARzUNCS2;K+Y6HW)f{vMDK^(Ud>0K(_5k(WPYb%1d z--y*e=}Y@$!;CO7liHveBNiw^eqG>5hUzkrkC{zG6F_3J-lWhi#=7me8$im=|rOa@Zxr zl+j31Gsk=7q4Wm6e-RR#qx}+YT#Byg|7#H8o3WEnQQfvhqr) zycNY8%Y;10JV8)N5CI9f;YYuJ20rieJTvpm^FHs)^E~s+5S99C5b@+*CQPMwfe1AL znMKaNH#?O_nm2s4#?}a$J;Gd)WG8;lkxA07cf|h6HOzD#aRX&>~Sd6tm1Vbjkm=!=$vR&oP*Gm5;_Q5)WL|6}e36F^}et(eQ>XGgdS_W6Q{ZVhH>Sf9n~m z)d{lStgiK5z!v8yGD@)Y*qCDw(wt*xpQUYWJ3eGvr$`&%6uVd$a}+4E?mAq&YJfO-OYX9b{n>)tt49<;r0tksM)XYh_q!> z<+~`ZIPsRSlTJL+k=hX8)Fv*{I59ON6e+ ztlEUYfpIEE!f0NU;fe+QhC0CZnxCIV^LobO8Pkl0jQ$KlVrT^vZ~*ic+D!+relhTF zeKlXhu28-YxeluRjF(1lT;kwMcymT)SOL!xaZ%$o*?m)We>Mi3gQVnb_n>C?8h18= zFR485@fStZQ(bQRZR85ab!;>{T7bMZ5TjmFp2zKonfs?BbINl*d46P}0qPvc0O{J~ z7B7u)5NCp}y79jJR#^+Os0Dp?TsNf`N_o3#!`#y>P1KU>#CI!TLCK)fmJ+r>g{WSE zI-gASRDE;p_FGmKia1eL|IE-=LO$u7YAAi7%gFHxNc4#%$BbCo1dMj>nGW722H43y z&EhO_tx-|(&*z1xh*oK{Kx2Y{Mhm3)x2^SYQr)dx_VxBNU-xZh3m-T)3_o;EGTowt zQVA}5**Ee+8^L>H-U1MFRSH9_X&IZoF-wgS+2MZTBfmYF!9%sCxVtBTaZjcFZm)So@ih-gG&5 z<%E%!jrn2g3cI|lxZ#nZen3+_Z%ozXvV6V}+z=m)hMWd&LP4xMxYd<+VP1M_j@xQS zyTN+DQhM3ATDTHxbi5lSlB}54S`jp}1UyO_+k6wI!@s-kRO^ZdJ!kik^u z7U6ko7$R+0H-{8#RJ23}k?E;%9TMYI4rW&vJFSxGjPQd&+>ca;?xo0ZK*aukJzBXp z;vegDD{OE6Dnaw6QF-<=Zua&Ur^+&OhjoXl`%tyoU6}T8We+ASNxL2rPu5=R0u>RO z=6s3<>Js&0PN1M?pXe&)pSRi_bpBH1L(IwgEHwdg&d1Q^If#tmfZLpv{T94tFegOt zzK=t^tWk1Q7YU1$AVKe=BlxuR zzJ;)eo63Av$W5`&Ek>EOEC+DWm@G=(GnZS0d|;n18sO(liO}N*S1M0raZek-S;)5( z^DabSQFT+|0nuyB+fuFhrkWp~JXsxJYM4Zyq{X^wY&p5SkA5P&{O`Z|$bwCYWRGxZM<~1Y+LiY8OKWgALmuecpzRU5wKP-!8`ShS}3|*ka_}koY1} zN8*^sS9Ttx?9So_8177}{An=&jlnFL_rI7W6Zu@b1LAxXpFfEdaNu2FrAXK?0g#LA zDO*GwI3yLTv?M)^Q})euHE3^WT7QCpc%=e5M^l*V*i4)2IDaakVtyYgp=QB4euA$h zR8=N1F#sm#?WPgtg)G!Dus+$Yk`JA5HlK++0>+&D{jaLm%}K=gWU~UiRP5nm2#)u=OVp{N$k$ zVfZ`K^#7gDG~;j%Z<@n?zhCs>Uz1RXRU`ANO+Cv`SPX$cRT`$=8=lf+mFmGsDT z*Nk}Lnz>SrRfD-XLt!otp_>OGkgl!$S6^ywnP~2I+hyASH&>a98Rl{8BAO*x(n&On z5))Zq#_`#SMkxCbbKoa;<{n=pybgdlnoiIN(BnqL&q1m-qqpb&9QQ%9XuF7JDQB4| z3dG)|WZ-4P6^24AAvgf9aA+NtpkjDOIq@uU0oc9JxR9dx%Rs{X2o-kUY7TP||DHlt zbyy2>r2Sx~oln1y;3K1in-)?snI6Ddr!(iSLQVIwqa&fqXw~o@JI z_&t>GWl&2R{j}FZAK(7!viHi%$gu-J&D|5L98V6GQvr{Vjl*nUsmQ!FQC zyw>5b(*ahzo|3%kN=5dh>I~6>_WiXne=@s}TA87Tio9fpkjeuMMSK+R32{B&U_;6(2Deyx_YVXbPbyV=iT`DozAZ9^1z#MtI{U4zBA&e> zF#89<3Ap4GaUDjlBU{(4(B8~M&>YK3@@V^5Z;V;8*G^gm5G$J*<#(MB1DiKb{zVE$>;Hoynt4jB%2Aqxej&Nj51RNDj;At8upky@%rEts6}eVh}H_G$?+WwyuGDf#Ldn{wpzqz`V{N z%WgT6*^!X3BvZi{0lBL$`%eR%G}Z4}|U7E1ljT=*evT z(C`{Fw?vrkPIwc@Dj1SRLR2dy=n_rZkhB0Z?>#yuTUkNOB5Z+gfa9JU=35;IWd^@} zu!Fkb4CcboF$wrvOn#X37l=B29y@n!Ugt4DNVl!VTr1V?%9Ri@hovh&Zn?)a0{@M0 z`kjarhS(x%4+=x7HCPW8t(2R8Q3%IB)}xg*H`4=V{6Y79#!gYw3+9Vy&570hXhGU> zr8j0WOsIMntVHnDBSmB5yReN%8*JDOFB@gMu+T$><@6o-#!bLs=~S(g!sHH&+p{xf zo8Ggd{6clfMvBBLOZbh}+=u66V(27oKIT=mR-DE4H8^xhix8fzILcH;s|Mo>Av_J` z_81v{kjU3lpWDj4`UCjWvm(#Ej9jf%7O^(IdDC2dadoq=A4d*o>dO|XLwIthXXOh? z(dW2fhK_z%x!zCoqI3d%2Hat1OE-i`6fycf*)6QCDH1a37gcq^FHi|LuTn*oh~12* z@hc(0Z=q{R)j#GvDWCh~um?UDzpJY+GP+%am&LBdh|AW71OBKCAEz@?QV2VMno*D& zud{`d3kB@+j1$p%i?>|GANJCXTF29))Ldu9NUZ)aq0xq^g=m& zlu7K3)jquL=MU*U*Mk|$9YH*;7Bh}BVq6L= zfwX)?hR@9sHnTig6uOu3C%#}ZrJ?S=knlx5FmjNw-Illkemhc_EIlurCfU1sz_w8D zTliduv+OWcMF`i%)Bs?lBpuTvw}jNO;sRJm7i2!NtXg7ddxN=F8A^2I3hGvnTsd+$ zrkhY5IhxE(5Y~y+)DC}$>4vmmri$PxRx_9mW)G4yd4C*PD}Bh=MG1W?kfO#;GGU9@ zlrjZFAA?04Wil4QD>)Is{j_{V5UPN4$u`76@hBtek!Ftv>jLKEDpz*FIDl95)q_=v zffNh$3)z)l<#`{v%BV3AEB^F+nPK4^Z9gD-tYiEIcUqdi0TH6vOxJrl$IMZs^p__{!DIxWTa#nE3SJF|0(l z3iJI=m~>s2yu)9$I@0(`a3h5Y4wq0bV`=-4GX2Tu`e{1YJIX$`I3=G)e)2gw!l;z^f_+mbi-=I z^)iABFzgL9?EOR1S?YbW32QcWSNB&7G+I$*_P3gUlo^8o%2(d@ zf`^&ChidiLak{eJBV)x;^f#DjJWu+?9LFmvCXtPAoz2c#B9K`Ye8=6flzrP%=ZDVn zNOnAEAj*x#01RK(1baaZf}6KKcwTRM=)cp4hXi9OrR91V0kND>mPB$G2WQJ_cj3I3 zgU#V8#$G0=I?5dufj-VNB%xJNk0pIi;~sW0H;J%=D1K4T*}HKO61VFoS<}(6cwzzZ ze^7H7FHcWx!Hf(g4r3kq0=`KfJl#*5S_tvh-L}nKjk$SeiWGQ^m_Dqm-UE!$IAP|u z;@S9BlvrsyBiTO4SpW0@>!5-Y(1WVMS5*wU;wtVPk$03nF9-s zWh3i4I$no1&IDHFb|LRr(R%f%sN0YSQw97j*~s*QAY)r4224(=#V!Z=w{Z84m-u2T zrE8?`*F)bXG0wIOWXUcjw_-`_p>LAl;PFsjOt;kcmT*16XF0JxiRL(NuMfvaPq+9y zmF4Wh;g_Rig7F5_at1AlfoyTjmK_nh5i>m)%u4ZHm6tblT6;aS(;mcYmNYMy}(L8Wu-Om@9~$K2!bXRuiOBPq;RA$(gvjnIrwfFd;mUx%@4pPBCI zDU2IN_39s)c7Jehct1i-iMYq1<8%HWeKuVuEYZB}3K;IxNu7v2N3ck51v-;mYjDZM zjZC5+f$MOJ6F;a+qg60ryQZQGG;&4y^tw?`P1IkhHlR#7;`A=|4pUAS zY8NtG(~+Bq`)rHCyGH3r{rc94Oea(GHLU5dVz`qk8S3L%We~F&bJ^Qq-zGuZKwDmG z03T`5V(Tz_YP4o5@Gfp+0Fk!|3-?iwGQqfF4ZJhOCzJrzyc>pgS4ZmW^`={^=k}l> z@SW5cP25DelWF)ImU>hXax1?v)O6>zjmZg?hWk1R+l@TmtUs(i4l#$|ttPf-2hkKS z`+tobaVmMDIqJ!a5DnM)4e-V%6JV)~lP$z1XLaCwJ$t?ttCKXVQu}k7RnKl5aC(f3 z_I?CV=x@%%vaG%iR_F>>K_$Ut^glpK%k74H-I$)q66vy`^2bt76Bz~qyGg5BJGz!g z-df`Ne4*aJ|ag|O?;DAZp6 zDTY~!CeG9P86QqhO`0PkD4f4X#8?2^Y1N7iq#vv4pF1r1?On=7^hydNNQ%vsPCz16 z%e`YGZK)-~_A_%4*+{tgwRjk7YcyW@-*Vy_IM=ct^^f3rYy_lY#r)+KmJj6auzq81 zk)>HXnt%%H0bAi}qQGsOUWnqNJMC|fy5TXlK&Aw%^};+hC|4PaC*zE=^+tD~);w`x zdwMBB;^$u0gMTt-t2C$Y>Iu2vHEd;%(0UX-jJek|@D2A4Qy9Q=7-U(-mXl5E^3bt7 zzg9bZj8{6l&~kWvzk6rW3D}?z(Gs;lWHPmNreN1tHroX|TpfKGCI9j5_=W6J5O8*r zdLhLkqXK6ov8Qq`3&;x@Lm4Grw?Zh2TUYLu)An-RI|n{QrAZx<5~&K1uUElQDAm+#W+7B$Bf9yZ+?Z8|WQ<9<+Q zN&^`@b@GN4IU$W>($83L+rR>vyT(SdzaG8~)U{aCjIZJD2F1aJwzl^Qu2~rAquKm% z@5$3d4+?qX1gy$v0~n7Dy4@nkX@X6dJgzH|YxKJb+*`OuTJ}=t78r=_WvN~&1~`(2 z4eZSjWjt>WmbwzouvKp(3}8m*P~r&nI>fKScxFZr_KViELNlsI(`)v~(j}@%?^`M4 z1V(3_bE*8BDuH;MT!v9In*!boEY6$H*KTty0fU&XZA6&o%zN)2)M0nvEq(8HEZ4ac zEjVOY0PrdszEoS8qRC1by82N29+~?Ia`~#s*ku~=*~czd+TV_Vk)mlt9nlEZO7bT=z%U51(+ zyG(NHw}HyAiFC88GTR+!Ocmaj2VgZup$Yn$_^%Y ztQ*P+Ir!Li!fv9Ju^JTDc1f3zg)#oG_APT@5!?Vf9#AbKZJ;cgKP?H}hx4QFh2vHXq8!1C)oy1$w%$1&tsJB$X zm^HKzl?fAD5LUg4VtgGmtCVt zl#L9Cz~}KoP@rK_BrY}XSAK{TfzP6nQ}U1*_F30WarK-FZ=qXAZYB%LrxIHGN@Nk} zRI_Q4zMOL5)!1r)JLs-`;~A3!MfaB>7{bT7Q!W-ZT7hw8gvebIG+{gC!gE6YWJDlx z>L6W~qqW9-()?wvwvv(y!hq^wMW5y)#+Cxyr70oMv!HZl9wXIis)%@381_XXvjj#E zf?SMTSRpmTsw{x9f#l9u!rs|$&)+VT^3zPGkoSd4i={1gEcl8(qqv{lx^kcx&~}+6 zZFXMNk8Jm52?f)k3x9fEklbi*SuwJk%3py|V^(ZcfY}>Reo5_|B`q+*yF5*-xqu?j zg+#jI4aRs}3Cuzh(kE#rsaN8J<&N9{{6@<6lHu_M2zpRM^Ku&i3*6GmLbW;L`#~*s z_zEx71!!4g=Nzj#u(3M6``H8;-Q=8I1bAom<;ar0Hr}5!?*`%E%5Kd2{IQe(ug8Ku z%>|4Wr*x3D#EJ4{g^CdQM6I@ghs4a=C>J6ifri41{b<5(l$qyai`Z2Gj3wYIf9e$_ znO&v5%?Y?*I3QvK8or8Fhx#)r>rri)Aw__e@>9y?82R7I>2ut;F;VpjNC<;^(U2vo z^m|EIsf;pH36)Q55ea0sqLcw|jng7UX``b193v;b(xV@C!fc^K&NhI|@l|vh&$oX5 zN})OBxeevkOQRhH^_I&dm3EmX_0f>gqYd_mTZPaKBv0Zh_K|*WYb%SjC21GY5V1GTyy_-S~fF;id z1fWuct)hTHLTt`kf1*7lccZ#1mYAMGCO)t?zA;)-$VG_Pzc6zZ&N6kqD0@8Tt@d}i zo3~*(WJ)i^Xl<1o%%wW*c8G``k)+G1=G2dCs{2tLb}Vyl6xSFXyDc5H*jR-Jw_awc zc+)pT%B^$6hO)8c=E)3%H@qQ$DAZ!32Qb3uPQjhUucTlPH^kdzI0z-Owk}bCU@*Ji zY)G?^ErKn|xO2kx{qEoc7qNNSu2ZJ?gAE%gL_`As7(=k8P+l7UK$ug6E`rSJ10lM% z@rBFH-;Bj@X#SWj8-C8@42+?4^ubHmE$Q$gTAP5S8XvUhh+SVBSf1k_?fWe;#t5Yx z)2}JPX!j}Ma{f*&?PXlus;HGI*L44!1d!f7MNQHVT-&`;ea+Ma zv&fa%%EDeShACf7l3|xL_5H&0W16j9+#;ZddGhVX#J`P4(=jO&D_22;ki;L{Cz1{c zJ&^b8eM+Pqiu`_Y6;B;8whm5;Hf%=FgAE9?%wizeT42UKlmob|dN zLRMAk%@Jd>(9prT!%DzjDemE9bqT0~t~eSv=eZDcgXu_#G5U0wij8+B$#C=4L&K&2gN3izhJKR<7C-s`@QeU7mZ9D5S8`J3%` z`{BasCd*Qez;>p#Oe?|sR&0E$$=Uc}%~Z-%X+QCIR1slj5VKM_H5F2byfzkuuhC44 z;5n}TrY8L#%F3yNVo=0A8)C8-o#bEQ- z9W8jA8s8A*?zgqj?9JeJit!7a{MNXQQbaRuqLdUEHzEp48Z80tv?!p2mT#W8fWMM-MU7@lPO2*@r(ruyV@Q|+;Zum{4r61e&Gwi2X;iRxvy0+b%) zTX_ovM+d>Ty9Y_J2GK*SBTEM=Pke<%e~?;<;ASlryxa$h!n)3ZhOpHb&%maQp;=s!%ETIEzCN6PFoEz=*LAF#&! zz$?LWJytX#OM%xZ{##PSCH)6FEAS(M*(pHh9Y{FX<0hxQQy^S#vlpir7sFE049Rc1r2NfKr zyFoi)f0;k)H9idlbE1^IczZ}}b^Jp1SP>KmAg#u&F#bld$u}0^XMa^bJjW=GAKcYX zJA+EF@8Vzu8UZIo(DR#lSf?*@guM2APJlq3Z`O)A$yeu$0r|dzq>_c~VW|;w?JBQC zLT`<7_%wmTZ2;p+p^DSiu(w7R;Ds`!YW)4xXRz1y%#Wv)>9YRy%3Rs!e@abOkn8~V ze1*J8)FpqUz+2-YIvwR3 zFp(BdT2IVhlQpfL&-VPTwVK}-&W@Si6+YlH-w@6`J0BH3ym9`M?PC-7n{~5y_F#R> zBE|<&l8@JU=6zv%ka7wwtMT?RPlZZup@N+?8rwGdf!NJ6JnX_-ZyabB2PEiNAf9(#>TV(GUPj(?x2M(QXLQy zX2WYr_cvPejL%-n&!gQpiti4@e2u%nx39EKw3rEhTd!XN#2wLl^pd1^#l5E?tEWBd zI@P{~$Ip%-*AbSMiM=fB$O}5q(bR-v;jo~A948JpIn-mAhe!wA^XVJRm#qyN7-gc{ z@nrikTayZb*`R1UUC9`%oQZh7eIM@BD%djg4p?7|*P9O1vFG?;e(z&y7~lH`A!)cO z4b6#*-%5)9?Ym}~ESxB3d2ro=%d*!!iZR?6qLJ27m!Q|IMJ4@kZI{t_z=?9pPYMX+ zTQJ0Sv@CsyE*}J?kOsP0wf9BPZri%*HKs#tPdJ>PM6KEavyJ-`YuctJ7%5 zb=A0KfC2Mw%-bYuK)8O*MBgR&^O$^B-fVpvdK#CO9o{gzL0T#;k^T94vDt^s5%Odk zuqR?)4Raz|6yu|n^A|-U|EXd8vrrPKTMqdFkSE4FxkJwTL4b0XcpmYoApYMqfWfwc zn>rd{SU-&Vj$2eC1j`Zei1{w{DD1>VpXqxkVL27j=2Z_Fdw>OolQrUd>TQ_U6mw}C z>AQYKjjryPs^<{q`~73OCh1I(^b{Y~glcWbZbzoLN|U2s@(1IAb=qC>P!GxyRqzI4 z5Zmk#?et&tC}_G=eCb3n%$xVPoPWw-z6wCyH;sF(knwKFlk14}77}=o`t&QdT@f0h_`MqPoI-l_B_UaNMsu$fADEp2M3hPGp zC@FbV^!Rvw9yJKVOT~D5x!M2?M{w@?v;aASXCFPX8tAo?lB8CK4-EVog4rlpRO_7QE#!eO0-~1%oX(jrlqb$hUrzRS%Er7_T6eXx#aX> zm1G_0j`n}^OzG_YB17CJ;IF?I8MXk>&6S2dU!wooT?wlm@3Gy@uHSrTE&=&Pyap|d z(v>ft9b`$^sI83dSBCFfS0Adqy^iS5HYE7CM(HvaktQN^QNY=;HVJ%an}NVm1;c7? zdsV~IEvEHRVMM<|i&{gG`)1`8$7(I2To4VKsY)-J|3oUcvnJD;q!@=fAgxNb{kI;^Cb%0%J1v z?Sin}4oRNf^6lMRoJA2v_WS3e=JF2d#3? z$S(uRQM<8z&3nG{5Bvh)d>X1>Ns)DKE(;*hlhvvdL#i2V>XoVO3K<_e z#b3(zPq8zgYrNuOYBJa_$w?NxF;jT`nN@&>c4fJi7>(RU$UrCP#(tmHcMpmXWw6|S zq);0bgx`$qUU!|E5?SAmPhw?Gs9tL9DyUu3!#=zh#u2Ac!vVhTetOvUfU;&a= z+dPwy_u_b-X@EyLjvI9zuX2-bQjZG41D0gY*Ot0(WnhP&i|0OHA7y`fF5bUkR+lLd zwggwZK|!+(ALX!Cva8#e5h~JvmKwlTBcT!CkudpT882quuob}Wm48(!J?RJ8VCLo^ zW{C}V4Y09AZpULe*f2KFYRH0gUL$wakk4$L_G;q%%2Kg+!^5p-0G`c;>{Z1nP%0~T zQf)&eqzKjjP-g?%<;yR}fb26+9_Lh7`H{00=s?_o5#rb9!co@yI&h}?#%&d^%sJ0b z5>Z1UTtmV9RH6JiqV=p-_atL6P@krVS_b@WQvU=*GhEF;Ev`0o%4tpH0=4#9A$3Ar zzXX_(itg1eKsVbr=l=a?T-N3v#`&*{B}lWTu&}>wde+BS2EenYVUTs2Br&#YL5-^B zpqQK8WZ-V;r$P3eQe9XtEtD?G3`g2bs;$Q7?QE#Opb6&FNZ#XC8|0<^z3x}O=n$dG zcL#-O3;+N)5ns7two1JZ^TWZ3J+ViPL`KBLQeGO+ej$4y;di_&fR6jG8|ULrSd>yk2%WKA)bLBwJbjtUDp64-mTK#$mJ%DcWNs$kTwoN!_7-^L?`6Z6! z&-8`kSFVbu-U6tkyy!QDLhA~e4p@V&KgfOG1s{-pTdEACQpybRiDLj}vt6z`!G46y zluw3iGX(i+WwIl_+VJ6}Wz_AMXtEhAgO~CApfuQV|5~aYftn$__FWrM7BCoI(9TGx z{~E4MbB zpnncaE*v%aC(dJ|yL)3s_~ICwEwktM8trf^N3yPdsZ%>_WgOK%Dg*zw+Vt(YvGdVj z-I`}&O{8*(4RQVKGqza(BAjEQwjJDTh+3r$)Aytdaa{{R=<@8gN*qhEFM+!jQfsVdb2{Xc(7VJYxg)1w zE-LPikpszHan>Wy!RLgpAldgriCU`@Q!fY^R&0*YWyJNI{$D6<`~X$GSq)Z16RZj{ z4}d0rA9}8^(>B}Xx0#9*@P42B;wH(S8ga0h&6rKwOm^SAR#q@jCyDMWfrLa;fP7)F z&mM%e+{HO2_|-wKWBpZ;)<@3#p;>5F8w~mq;MRXm5^E3Pe=neZSUU+z?USxS12({u zLs}9ItIg+aHb4q|$q25&Utff- zs~z*}R|{+L-o-#tWEt^tKRQT|e^vd@+#3RVMpv z&5aJz@n6?5Y)HuLrcuW@h{vS=L_sFT*H(I`zT_XhpRlJ{QrVup-56LSIhZ-r`de4H zEp4qCM^)HSIUyu^8xA^RqYVd&W3>~Il z3i)!Bo>o@Sc?6o9X5X3;BBozA`YGe8%7iWG|EZVMIQG1XdJVdmpf5;8aU!B>@}Z5~ zmh$m~IM}V^=;PyKReZ%-Bz6~}x*W5sjj;;d9_4PVe&Fk_RT(sE+*WIEWC0O zPgn=Ubv_qQrVQs=pP>Sp$ffN%F>dB;r?7k}M|dC{jZU1BkWx}+T?&Dl-u5d0Ge3@V zY?_^j-MZP#7>yHyTgnMBXAu%Dk>6^oP8^O;<0h*2$i4>$t-+3u70+z^I_+`QIQlg_ zu<3bJ_R^-r3qjm#Z~J0u_)lZ`ksyQuZl0sQf4ji#3UqN^y@Mh-!?*inyPGwZ^!_*_0jA3o8=o_pV(6CUd*U7 z_VF9`@rBG(cKSNvZ%1&+53e#|AKuSkR7du>f?3sCQ`~H-%JpG^LB6{+|05rL$#{GI zNG*Z`o6U*Tb;nQt>;lB^_HzWRYn4I~caF5s}+f!a+(AZ96 zW>fQ{oc^7QCO=V^*HJe^g3<)o7CS&HBV*}5k(4Jy2o} zqkKKK)SS{aC7M$673hvzNAT8rCwYfFEDwn5fH~4p|ACwxFjg@gekyIMk6&5!Tp#M| zQ5rqAAF_(!-xbn857shtz*^H$v!J{syG#$)F>W~w?eo>xc+(|u8MF_p#q0LUO?P#U z(EnLe7@Z^v+jAYTBL?+CH`Sa!*?u)tfFB{Yo#=JeCDBo$!E3-<( z^4l0aaW3J*-S^L+0&n}&->hv6Yx68_?@>`-$o~AGHpeKw>r>LvLwJ!htn_lsp!kUY zFrk?}#*N4pLk+hQ8SbaZ+zIs^aG4O((emS|w5MQGSBM6wTnjq>SlttEY6(`oQ{Ace zJo75*dDe9g7dI%c-t>GHm*3y25mA~4Fy_^7|mC!-A+zKVA{4rkBZ|GSk&>kErEAb_e&}#ai?)j zcm2!R)WGH}sMr;ZjwLhm{Qh_b1 zj~O{ccOg{UjzAL{q+z3g(j7`Bb0%v}p3_UI|52|BtDSw}5IMRio?&M@yyaMdM=$pm zz|{ctu&Wr8GsU2^F%nGJnCdd=TIpS@FW7lr9dZM00cw@`&}W)kA{LLw)-(oGB&1B) z_Zl(YmurZmSybLp@nY9z-~E=;LAB2N_zu#Iu+;+*4?ARCM}63(;*G5ZO+wsW!b{7_^nq%-ICg`0flQBH>UMuPwL4j<|ARqo6zqOT{2*2yvt6jwI znlfP*Ag;^BvddXN#2d3DWZwKnef?z~+#J4ta-V(y?$s_bcf7<=UOE3%a+~)$D|#%+ zo;IP@?1O;DF6}DtU!l6dcaVUGt(z5lr|FAfA!#5`>p+tj*D-CAj5a$i812lQ(os|MoG z?XqLdhn}HEe%ni_bb8F{%3UG-QHudU1{#xv6T5qByhQ^w@ao;Y8s+72ysLe$8}F3* z9ZrsnCa|{4XFb;!!TwvqPC~Xvi98^e7?{Q?Y)TKJx%#^fGQ#i;0!;X+mp1y0ybvg5 zJcOJXZDWDB_}@`Q^G#g3whFGleH+f(bC_TG1DecE5PPIL%T^xFidCknDb_*o-tke? zoZ=rF{U3UFbv&juaHd^WiMAhy#6JKvrwnW|Uzx1(X@}hrM{T!lY~o)Yci>gV;P=tj zB79VFiBxl9JJrQi4Ap-aN1yej1!1#(B(Pa0g!19h4?%^L;!y^OiE zL>95St>8s)-9noFKlSw|rsw}m6g*Y0c;&y0I$xvq_aHpbSJe)0$_~_T!j-rC6W4<8dRD-ci&&SCI}Pc3 z>Y%Pi^gGnx@Y~t*P2vNS=7gw_>vG)=zT>krT};p-ME?VUeN(;HN6Jbt{$FXnLbk3u z^Salqxnn;_7kBnRBu=sin`~ff5QaVTLF)B2Rjt|MCjxi(7<(W3rAcpp)PSOoYa`-f zK+mNgFQkG4&hlMv5H}g6rrsEp+-pF*h{>3@z4tp;+Hv~)?8T$`|7_?sWYxz=pZI59 zI2-X+)9m&IA1D|Z!&s0DR#g*3J#ztc7j`SgZg3|ln)MCe@>9?$5Vn=m(0tCbTufR zrQBEc$ybS&#?zk|Hi1>U^nW6S-Iyc5R`%*;B@x>`>d0Jjhawr`FOQjWgQmHLy~ZB^ z4*MWUs5pJD;V}tITQnPwtT~UAmIG=O;U(?>UnflBpS`N?GrB9IiLA_r0BEPeYxK5i z$&ke+(5r^K`Z)k$8~pyqzQ()a>;E;f|89?ZKun@_cy_73d9xV%q3cM%S-QP(`xv$+ z1EsW+Dmp+NR;vftkHND2xcmCxlp7YEUj~#m5YcW5x|fuOZh6fWY3*1RW3Sl4UFwe9 zA4VF!Kh88vuFfW8{@R^`)|Xdyo^1X zRfA4Iyes>{5bdJb+31uI896%1@B2WusGTjA`|LLR6Iv+znS~*{2f)LIU!<=7TmaKn z*mxiPuVy7fHs;c$$^0<3yHV>dB#jT8k>m0t`t3RBd*HlQ-Kz)nWwFrEGR4y9RA{OY z%#oUp)2On*SIDAgLf=mtMcVjmHFU`(mqv5U0j%sG#)-gFCDUKt3|1qwCZ)}GqccBU zgAJ7}=_0GLg#9%0iQ;RRp%)o!*!9L(l8UNnX-7R(CZ~dTA++7P^^8Q!1y{R8C`PX) z9%5;-p*f1_<5$(yy_9>Xpx4q?_$m0~BD0Cwb3x|-BwEw{KupM`vcJkl7h!&LVh`r` zo0cfMJW@i4Pvds6#Gl+AS?&ihHBi4NOYN_CmA$(N*qLP2IF9?(vtn|20NZK`v&+}$ z=w$RN6F;&1&=_>yum%f;M3g9&tG}3Ae$pJpnd9}C>L2*GARQtbeHtz0Im0bC>2f@# z8qji6KfjaSm%{S=q-YU1%RHg|!r@!Eolc6~Q*pQiW;SmTw3k~O3Tgbsjg?^*(NOKQP0RbHT1+y`0tF0GrNOnpV)WD-fmJ~FUz8n>R3 zuF~y%J9Xjn4>b<=d5vMrxRnr@LO_9ksOy2?7N*JJZHH!q03i6__rEPhDREk?#gYOr z`psh!|AtXZ^`AjgMI4WhDxRM({c0YAX(@Z?sf@UhNF=#t>wtu<+45^%esv1_Ooh)^ z?3U<%FkoOU6)F?be>>A5643+XCvC$1@p%g=0ch#~j+eWL5$ zJ>zO$F@?MYf!6ql6k;aUhzvHks1RBOaBjD`$?kH}O zw3+#-&O?3Yrorp%T`BD=Gs4OkSQ!TTRi$31r!nrGCARIOZ_YMypJmS0*2*p#a3qh7 zgJLXXMxIqL5-ZO860>_9@)~7eV4Z2de6D`gB6;Y|JRi9YW4Sc;c(wniSe|0O*xa$F zTc)^%bp;g7c=W@_clbB)m*noE}4O|XZmO!*k*rZawo<|Ux`-@xV;>AXFlZEDa* zOY-x9a&nSAZ$Cxz-g!1o)vJ^L#?A~G!SBh^{o4<-hVSPd1dpdpL91pS=m|N)v%z}O zUxR>bW|7=i%5&Y>UKE3^!iomR2WPV>9t=Ao@4lNkFY2!pZnH+QAJ8IL&5EQ%KkzqP zm8(zG(5V$Nj3)^VabSd46%5_*mreMw9BNFecFVFz!uz*@$>3ud{sQi-n|L1nVGwqK zqMpXwvNEWk2`cGJwmA*Ze`T!U&X|YjHtG|30+4%`#(eE1vBV(*@c5^}>UyUY6SExd zl8ql=_5G2$6kY6h8zDf@xU;cb4K6*yn13jAqt@3#>OU&hQm_q**%4E=py+aFQA~C5 zPQp{gTFI$Wf}r-?3=Zg8bA~>L+iu0OydbrLKZrEm`Alk6yd|Q5LfJZInB>?v%JHXX5$#L z#^AS1huIFxhxUiv+0KIPpf=}+4A5j%VEpUhS?-qe^Oh91Ud_QUoAKw0Z>Ly+@2Ob+ zN0kR`kEDU0Pey*y$QDu_+n!-g;_27#Dhei{c5;qiWG5kh?I~Gi#eE1&-UyHXlKnf`t=+rXe?7bc~BWl{F5IM2Xsl_ zPB?s0nfQwT-hoU6i`C-^XAg3yjcdV7My4Et=_z56x;%d4)0UiNME&I@x=?B=gJRq% zU?s0M^zKc_5h$hRKw$?l?6JDC&e(vN@(^0TA{RsB5P;&i6<+ewK^-n$3Bu9=UHN7< z#;#DS+j@W}-A{0!C}0OUPFhz;?eB#{u7oDvh-r{Cd>wHhw~l24iAXGqvP5Kb=`<(| zE3l4raJ4(=fXGA0KWrUCzKWR|KFA^Vyj(ZjK8e0`M35|9%&GYhgZZC>>KDYFPx8-p ztUwuLwaZiuNa*%|jC}=k96h#X%#N9vDR#`vOo`cX%*@QxW@e0;G3J<=nK@==#x}FJ z^ZzsR=Izeg-E(e#eXs5<)mM^EwMwOyu7npm?Gw`PnG4%BAO*gFT zfrEuSK2lGPKyW^ZdE74eXCB+$*E`x_L28ZiNp$q>7nvB99mj8%-*%P&6H&|9+tmS? z_nY3J*+K_w^8LoDKhj zR5#q)G>JPwfM?JkEpRq%*oK6270n*ej?pdpe^5eO@ZmV z2k7Uw^AccHHY6~+GwIQ`xKoc#?om2OeE;AQSw0f# zwAB<{&)4V>WG$9e;2|qrgcpZiKUEH#@x6Lf#9qv_SghS95((}CCkV-&G5BmNt~)Y9 z(t%fe2fV3^c5sXa{7Fv^gwDIKeZOXEU}KEEFx}+2B8%`kbI})6tsvMZ95J$Z`d{TX z1l1b#RX*JdtQG_j4L0HWv;^6>^7|j)*}4^6S5Qsb@nI(4U#bIY!Zre3Sss0Q;v*Z6 zPut3Ynn1Dm_n?W>Y)QNpdv=x>WX7(LQ7*E!-++%i2I9$wmRt+QwcrapOobCPf&uCK<_FZ@9SLJzS3;uo6*~b$x)(rEBKh;}mxn{& zC%I<$>?BNuPS&`H4PL4o?@2Sp#@UB0*-pQV` zCeTAlatOg-cYM1L1^im$&|`GM|n2gGy}H=(2DC zuPp;0YUMpsM87`E0^QR!zbY+e>8(u{tC;Xh8dl|e`%(1Z=G7}NEMqoa<^IxIn5x`d z=K?nvBlDZ-ajFvGw~h~;wHlN0+A)n4^VjHtHxD+Ry2@Xoo?lblB@|*J$-`SX96Z50 z@}(BsFguE+7M8F(8>JQ;(+6vT4JNHIIw!|t?9LN+eT>~P?|COnz85{l8FtK|HD`2R zEVp6MeH!aLHYH;$D>ue7Lu?5aCWG#XE>_0(xKU3gdeO{7y5BL7%5KR9wi2Uok;mMg z>9WQi8BY$z27UHllJ8b9XRrBghqz+LiQXgm_KZoLJ9#2)dyNImom>wzJCRB@-Yp`E zeD>Oi)`@Me3)ZuDE`LvoTC@$$#C3jEyN#h6V0@?hxh%-J&ClQfOdbWTT4l-A!Sc5C zei``f)sruvvwh~#%*|HDUf`_iS`uL2hLzpDK{@Cu7S6kYR(P~gP85SJJKgE{ip}R5 zF7VE|Q_?iHLO%%66d6#u5bzT3{03UR$td$ch0nQW;@XtYchuWk_DZn$`bGL`$3aJV zC#-4gq`9r=`jqBLzzsgj=tbZ2*62){V*Ozd&>yfI6DI$AM^kS5Bl6+1X!%J7F{us_ zKQmzbm8XOGjTLwmjvAx7S~(daeQ8*j#Q_K#-axJ7xOM7RO@AQzR#b8T?U`F*`oVi- zmK7u0=4vB2oAoxbPcr3U8cK%cPN^;>nqbbY>RWL38 zL^o8|sG${su~q&+J%W>YWzE-?1(*&5)UH`O5M0bW=R(Re-FgO3vOK;=H8S0v_See3 z#5@=mW*IsV$nvuTG?nDbPcn;AUT%T3GW?``-F=*cm29_K!GkI8ahFE%g1D6_IoCy- z3n?$0o0L@EBIuG{dkZyrFM!Ytr}6MA+)QJQ<<)>2{C;AKZ) zRuPab-UmrwYBoORQ|f~_prxcpD7v!bK-sgZELy#&wxKM4<|R)2JD#V1$pKFrndabqKQYto&n@GnmMr}T3Z==j2demY z8_)0(Q-qGGzKs}p)?1kY(^U7uof%pFW@|3n$+m7!Hq$L#(vIb^dh{gI z?XP}xnK#4-*21j&%QSnQjxTosB}Hn{7hKwtNH1b9ut0w&f6FT= z`u697Rrxk%9p$3)hjoh@ub~RFf*)Yfi9;Ac><4FL_`@Cyl;qK}jIKWIfPCkG$gqp3 zN~YVJLCb+-cbh)dRCk+!g_N^5unjg9TTXPJH7i%Tj%BNR?-#^t9cIjI<14}FPUGW@ zFw^vh&drOor-M;@wp+RZ&UAN`EgGtK{09}KNnU_|*gMP{sHwFQNGeStwJpwGQ|d5F z9K0jF_su$fU}OdgZt=?U&pCJw9=cC#w#vL6;y0bkyhU7A%DjR8=mcsQuIbmGP$xNV z>jpcSZ=D8aWZrBZh?L|R`G))M2k+BBT+wCtaUTSfCSlvCMzt6LK_#XHpt}9E9U{w* zyp_oP^n9;8Y}=9Sx=pFx^2P{6xF+;cIp)0Bnl8~=py~){daNLhHcfXg+@|r28ExxX zxFp!&rR)S+v^nM7?RzzKP?=wZ6yXua$a4yG%J1F{u=io7J%D;8wb}RE+)ckGb;)lx zS>%4{>mF1${c>Fcji|IKr>wbB^n@?S>)py_e|cHM%Ns2N~8t+R(SmK#>|?=y!Ow{7grAX?`) zPT&#M8~PP?>Wc?I(Dc%e%BQLGT7s%W)ThEVzO(Vu8^_BECeJ&>!w4qN8?I+fm=Dy2 z`S!+uq0EaZ;K+f{C*g_pV(xYU7lpfny~C(^VgsGna@&@u%gypC=DJVNPd7%F^x`AH zt9GpsNI#l^9RKV)h`fEBbo8PKk!i{>^T;?LN+n-22!ptLL0ItIDY2QFfAeZemSwP= z-38I~E4>aUTR>_y9p^U%BaP1xjr=OhVgDuGND8p^_;$BLp|Qls8#yhxxCXXee3eP)thvD z7TuSgb|z=s>Soef%MYXlI!fQTG;Z=H9iAm^S29jd4thN}Hrecb4PFzU8i`{jb+*jp?%77T6%vRSHO z*?L!2Urhzm52j6zeq5A=gvPMn7dReOyq{+#iyq(Cy00Bx8P!&JAU`tno@~~141SO4 z43*bJ`F8E9a}T;tA0%fW=WU$Tbhp{2JhdW66TFk@uK(=l-{f(XVu=Typ>d$%V_fVO??H+;kVly0z>+;`r`qubs1v2&#zZU zLd1;GL%0na$#hw6WpBu$fnCYC^8x@|kAUSRP|k>WXas*7zb|`EdsFOsKYUhxvW0w! z>8v;(eVTVhYV52yel-SruY-P927Ax0EWOmlzVs>W7R0+QEaypsXO&w?1w9pRv*C+(x26E=N> zbzh#teBU(?-!??vkoz{$sVBrAQ+?n478$iq8J`O9nRU@FSGFIke38AAdb1&4R3Tp~ zq1qngE_s6pfcFjIohPsOoa1gq@DJbHv(5ZM~I)-oH%ghP^`fyUD&&Zf?bhy`o-b!*Oqv z&Y4=L_I8qQS8;7vQEmF%DmxSRT);hm%A`k7bKl+PWTW(;B^|uuZ9)F?Mx(nlP)FvM zPjY{Ya@TwN9pCXJ)QjNj=T|}42jcl%Px70$3wek3nEv~!jsB)rsJ)_XkC#`$nP?>k z6Iz!PKDBA}Jjm0nv1qa&?hgUg5n$5pcq?NFo%(E3sf`dD17aB3Ua0=tFYJdF}!oN%>WqB-_FkqGWvl`#3_(W3KJFlNE?}Y27 z#IPW#qpgk-@PpD6n&#8-60li(X-nshM^<%h19^q1Wtm-a(;U~K027Q_}Fnb)ODLH=HMWgxP#Fu80 z+96{O4?A>;GbZ186BiBADY{8`Yg%zqpu|DcQnP)UI*~1W)4HQ-0_J>z-<(agihjno zY|4)~-K2`A=f4uBZ)gl`s*r*lv6MJ-Pd#$<-OLMF`@V?!L5-P zGs}v`UQ}L|>ZL8I2z7gVz`uG}e`6_RTWWdp6Y11GcgllKJ(#ABs^;|(&^QEbNPgVn z&S_y0L>1HIgdc(ohN$X_V*KQ=(4|Z|-2B;}$$$ph4bz>%oXcX$r)k_DW^5%+jV1TO zVN*Z^-(cp7#5Gk^+$p!X?=|kIsXWl@4L?sl>2FdE zg1cX#aaI}bLmZ^H`H$r~6?*Z?QzChMY<0h^I%B3C%F#0ME00&#f1zWV^xwSx1 zTu|7|-EoV#CuK6`6vBE7aPfjy{KF3$K9iQXw`W<+Y}du(An|!%Inp^Wlny507hXUfDkGb%b~c}l!3&3wdFR@K6DY2YGSh~l9AJo zh)4;sF1VLl7*5>1YrK()k{ne*m9OE$8HT5B8TwU+oEMR5SqH}*0dwCO(CsqTi`#-z zkWVio`*lxFnVRt^AHn>2P69jw zpusR!h4Jb7wdm!OqLkUGlb$cPP2A*nKdfLtlCIEhE5J`&+V8wYHAj?y64>)y-MAvT z1uRnZWS3?bJxyA|n#eg9xw=?P6DA2F_L*s=+8hxqFp2zfDSY3R1aeB8zbmPSrH_^* zJhR`_C~v%p-;SLEjsi^w0jbVKt`$2D=HjVaIJU+CLWjiBY|I5NhLu49U!F>fL`x=- zT4q%;_if6!xbIHHyHm$Qy{10`MFP~VgbyRpzAmHdH_4OHYTPQX8Bm1% z@zJpOW6g-@$^tSo7Y;*Dee(M*{QhQ%{QGyg(!hj@t*- z9y(>RP03B3Z$yNyJB49!tld1cCT+5GiY~^OV0+Lso5sBEBE-zZ;n)jAD=PpWun1WD zGs(xG_%QewUPuOieug3a1UN~hCq1CvKq{wLMGV82S5_9h7$m0fV@MWhz5%icxUjte zeTJBY;aO=UMQtGr84hpKxBy)UR{|JPdXtxCw+}nj5S_0^J3KMla0+lT6wL*(s-7(< zjK8-=*x~16YvNi_L#T#RFVlcYz+E zGI-6o8qI#nj**5fJ?Sp4l})h9NfO0Z6f2OloVQ{wS89>n6zlwYKsZul7rZCXyR1!0 zTHEer)N1%-frQ(7Q|mY{#&Z4eG20%(2-0RE2dI*r;JP9IZ5>Egds>6GCVG*Ko>FJ| z)Zl`lA_a>pwNcSuDHm$ycnAJhOIS>zKUt-_P9Yb%Q8>Ev`6;JvXORP(;Pu&3bE6rr zr4S&P-oja9CV}9irX$G=jT%arkog1&MO-8o(o=r1%s7rab^!lt2K=d5}X#WyS}3`hEweg^ls$D>`@WZFrLq&~Tm1$g+sCry|TzuzrtEW0y85ri#z~ zvRYNhQ>#CmYKY*6OJc%Tp0HeI+&qg_7UFf(UXvHfop*yZ6_zSa=lvSw;xPkW`P)!9 z+kaOzo0Ejfm&xMti1s>SAuG}9cBg;*RHZF6)rC~>LZrh+C{Eaq|3V_Zdc9!;U#C3{ znWy?EdYOwsz1(RrCT~ki3!W3Tcl>y3b#W7Eq?oT)@xxcj==9BAYo9%4Jc);i_+?st z{v8jYJg&&A+h-=TG>Cgw|h!6 z=A}16Xe2F~!KV_fI9P=eNY>^#VK1`y->Hz23s8&0D;+E*> zcFi)!EWsRdYj8M&vuKhG3d655Sp{cOS^af^$3*9o>uTpxPLxW2J8D&?WFno(l75`9 zq{cda&ST&*$5`7cma4rseh5oeTb7qbXq-bRtx;X@Waxs$SX+CUnkhbWO4np!TFqf` zWSEg4@XW^C^1JU)3O%1+HZq!xndfhVQWnzFvmZ36!h)*3x%8g}J>Wkih zV!rW3?4lVH7>C^Y3tI{kv@h=>6 zF@+w+R4f=;N>AQm8)aSqY$J+&Dg!0Cykt8Kzg}x(<1sTsV*~iw;&LL!XtoV8?K;3k z$Hyd+jG$w~U*dich_+eg^Eks?HQSJ`3Vrvu=PaQ&n(L(^o7OhIcl~n)fT-({0rR}j zLwo&oeT`pb8s;Ge!58>PaGb5lX&y|Hgx|-$R#{aNKjQ*rX3!!$F}TZizk5(Adk`Fm z1suzTpME3_$l`bA8(v?ZGyRBjsr7T6gRyf(px1Dyj9E@$rifkidfR`9tzb;=%V#Dd z%o}qsMg3)aK9-xQ*&*|c(%)R_#@Q-YQuNaeXziq*)?+a?7)`He3biJ_0}$NU2R>Si zVb58dDJPk6$zbI7VJ4;VKDc@;nRO!B;Y0=+3#osW-hG!m-F!Sg`Lx73cW*dkMhItu zDGXMdNfE~>sUvj~o2M*hy*69ZcupgcNnKJ@^lR}QHtU$Yz+!6A)4x7J@J3{G+O-`) zb@Ve(x+Olu@NAi_0L~EGOSFVoq??0&72M)X>yCuIqs>=U^E_Mp=1K(HjbXj^CD9O< z7)hREfUfFtYhTXi0BqRT<=7)ww}_=YeYD<&VTFe}g?04>i}h`Kk_OQVMX_!=HbPpI zg&}HY=QluD3op*ze5k(w_`8Ws2O~MyNDI%w-rO?~WZ@;ZQ@y}*HYKNBy0WlQH+7pT zu)y))rm0{w+8#JaCou#=L%nQ;Mf%GH8$#8_C(+g_C4JsoXEkbFi9NLuZD>UtKIizC z5vA0!!d24xEH?kZcgHwZAfu+Nj$lq1+!m*UUfG@Q=|Z=Z0WGk@<~$H~?0!2_FOYmz z1Q$VC-WRL-yG%_d^}nAd8w zxv;Kv&1bLOGZiK`d@bhwS)bi_@Y%+{D;>DidCre2sB2wstdrF{w?^{JSiFMey{aa1 zx;X#+1u$hO8`E%IPcE>IqqCR2#!&$)=%HI*U~fB^DF@wk(u70$)u-aCH)S_7uczR; zF1&ZWg(E%xP-{~EpkI>@>ncj#9wL=dXf`R2t9sn_fmSszXpim^B^itmVnEt}kQo1{ zReO|{m=u~X$%h%#1_Y4{sltLtN|LGRBOfGnq71AAKliQLwC*`I(jj>?SgF~hqR;iI zMX%MWukCY67qZDRzVBhZ^v{&$nfDQ`y zT;6kjmC>p5V^t$KtB$4Oq{8-q@ zzKi0HEcx**r|3wUaJ5s$iKmcapECLf?U0*mYs@Uawp>U+{M?|O-8;+7kzSa{>YiRR z%j)^&o5QlF620fE$M6|-789eubpI!;>$H&8Wurlr8h(P3Jfyl_kM3!Yms1BTQ|1l5 zz@p|*`3q@cY2xwBh#Nk%2=2%hAb7fI{v;P>%%K;_=UOgHc6hO2H!o8fS}A_RQxAoZRR6qe14Oj+K@ z&zDEa`vo?iqXkD&qew=6e_SNk1bWeCNn=~Vl!YGXjyStDs(q2+bH&sQk;IoQ=RAWbH6!``v@>uQl98{Z|&n22f_tdpe1k&@mm^R1g~@PwNFEGHv3!?7`NbV z8JEaO=&su4U6+_fipyj?8}1W<{Kj1aM`5F{3VeeXg%z*$A)|CX!#eD#fe zZyC~OJiAB#qy=MVsKw2|5BM2qrvb^(bDMjp%+$%~9Z-b(5DD4IafhzT7)v}I;@1vJ zz2jVP$N?pzN~qoPMe4nJwaY4xg&B+!;1lzaQ^UoZMMUr%M-5~K-;%0GmfN`wSaYw- z;F0hMg*Lp3Hr~8P9kp+k5e5=w9U!n8`7^9@Sag3wXuDHTq!fiHmO-(+n5arQdsTeP zWAfOayw02r8BZ8hp;7)_&Qq>fRDTpmm8kYBGJ8JoU^&hlttxPvJHJVDtxpM3I}n+R zAa35ob^8mjR~1HycVwMRN^k&md%N$FM`rCd{#@k;YqVx?77Y5pZ?>8guJyIKAbU;O zw^=p$I6Rd-n6_0GH3JHO$?cj&ed&)#PC75+rF*0?=7U`9a9pP_gAYN&AHCw4Lv}*3 zs$fQ5=yYpOA6UR!sFB)N9m}kuoDq=SXxFY;*qs+YuS~rfumZ`e9c!_4Gu&&6_D3r@ zw(;maj9fU&TZ)`_F3v1+x?CNnsw^x+GBx@qT-r7I2RL|~yJ)%gLSVlAl3Fb^(6SXW zq`fn{g&iLkM2RH_UymXL)ZO_KbJ7YW6NgGfiDc!|v^3}BB0r`k{(yO`yo?+L_dF0g z+s6DZ=eFf0;Tuw>%)!v|Tm zF~-bQ?*olq&te{O72R=vn}wc^Gb?fZH}t!!$}0E9D|H4>Co4)KXD?#eV=90dN!Oj2 zW=IW^)|9{W+0R5|ds)wyrDtulYsr0Cfb3>F(;}Nx4PH+ zu)v37;3HwQyj7?BlpgcfNcsz|TFX~^UntL2zO}p4so1Nl%%P(A)D>n{xC)(fiIf?t z$JnBl@7h4OQz4$iUIO7*?n)Q7GEnyizC)ZgQ^QkZ6XecqaWt_~n~Tbfx42g$L^BrH zKP(pf_*y#KIKVS8ixfl3?qX$ebTgYWShKADtYvYSsC7pP7ey1Cv>N#2r&mY?u{3#$ zE&&sd3v-*v&cHmkXkr@qXcHMG^U_!7RO4w%Kvlwgz{kMcE^&BPs$9A8Fj`_-KD4ig z%KWpYIyB>TYE*DJ`Q`BPXG*~~T%DO-)+D3MF@G~PvyUEk`EW}Ai{I*^bZs@&3}8F_ zxfm(4D61_Z7YHsQkUgxLo_@ab6Er{J`>= zyrHYx1F*eG3Af7fHoQ6wNR?%1@O@Bpz*O4JkZ_}ud;wf_q^tTZ~bX&YMD`3peW3&eXCZRz1*uOYt}Q{)VU(Y(W*rb0aJm8?%{#9FJboRQzVpy);91YfJ)?xI= zkYBFJ)lnKvoGk8y*Q3%}Wi2m7v|Jjc@jM79@7hvpfxm?xw=0L~eP)=FD?dJ- z1m!$OsoR>C6{ZxDYaX*+q(nvYI>F|Lc2X)T2S~Y!-(2XpTUq3V4&F;va_Il~rJQzO ztXg?*d$~SW(e=|ZOUkVwe5D|vb29?a|G zqq4oU5xbLBm)9x6PiDX&>sdG6&mGUE!|g$dY@3YLCGR)c_m`XRXUADSL)YQ-!G$Mh z@$4O*;lF_PpRz7czxRH>N7pG@4V)N*?}N&?qB;+A$53UAy2vTg4d89wHYc)a!6*!7 zQuypcg-~-A? zDgtg>_CVFMS)$g9%r>#z{r6#g{@oMhg^_Kt#x%j zL~N}Ycb?NBoR_B`(fj45=}D@8P{X)h3D&;*RJl#g_OX0^+&`$beS_XSe!)g-w4;mz zI&S%F_VwlQE<_HWpP!Xb)#|GmZsYmr32oJILkxoi`A58?oFA+h-?CmJl}2J>CCJ$^ z79eKn=)x~=lkSJE&8=ZJn|i!IuLV<>=2&&g!ZkQ3v?8ZN4{Dvi!#de71WwKy_yjzh z7tf6z!D9opy#?#FWS8^mtJ88tqdMq$ONm5fGj}1UW_!QBZd1kJ!mBGYLLrRLBz!5d z-qu4x;^^--VUlUk3glV0vac#>_{u&$_Z(gRnR;-xGr&UI;ErU$T09^j4AP zG<+OwPEPJfc&Os`o|Q}}44vVvu|cye^~o~Ja$WvJTvE43vy^k~$)RCaj8xyo^cB-c zxEt?&^`OwReFo+O8k<8H)I_xqGQ3lD7Y+2G{v&Ye1)%25M<+;>M2tKd6S8L-43ho7 z@NfMO4)$N|}yRWDp>-UM`l zNJ+&0dm%ZGq-x%Xn zz1{&at@;Z`M#FZ{`pm@tXU<57cr(pjy;O!v89{{lVU=f2YYx zC&H!OvGOW`cImLYTkur-hc4lBQ3*#T3F#<`Lj6Ra>lk`BKGK5ZHC;P~05EoBrI5D%LXh&eo8x}~ zCrd)nLjvQ2-4yvC&8<|NL8CT-@!1qEku_)}Rb)@bZ(kFGdCJog(vMUcg&78wDAZ0k zu;8!U82*u)f4^+^b|EtpM8QeUhp`_-ktFug1Xj@jZd@r50i-yjU!-7@(ETZbNYqKc zXu!r{`%{>N?HGssG!8Q~4kI@X+c65uHwrT}iUx_%U--BF2m5-Nw@Gn@qZ5(_1$R;icEdp|e=pQs7iTexx)}w!vIM21pk)#KhpybU9>rq0^ z*FYxH2@^Uh3=+(4`SI{6guox$2@@(Qgb-s>uYT8IBgL?qq2GuClt{A_a2MrTXcr-1$2M)EJg4IFIlzPh%lq3Dm*-PDZPg#mSk?8Rn#ZegRfq^#OCxiTTk6)W4g@#dp-?jyGtlXZpx<%%-A z^8+@tbuM&D<&N>kX@JU<#SyTPuo428iVV;=yk6LZHj?oLBAi;*XV#?u$uIux)!uXo-Bd-<>UmP_LGxOiFQl|<3 zRet!ZZ+@C(Of5lwAP<2R%Q&T)x;IiB*Me^3)KD=PCqm~6yzmggftdsuBF#`p8evG{ zhZrsm4=wXb{s&?DPy=iozQ4e1J;jxx)m_ zp=G(2VjhijOF;h|+hTct9GLONR{~}hC4i3SjvM21U~Y(ve3>~!*yotNiDNFfdh#jr z&)_Vatdqr_rorY(JL%t@>>VUSxJ#KVc3T@F?SsZU4q6|_;z}M7{a1nJj!I4nkUl43Gm*BRi~~v*xx*`v)w0rc;awyQps_uZLNja23`$SG@dS@86t>3d1PeY z(2zKAhOSpM-QnnOh-({nE1;}enjz;--~YAp*vi_z@XFMFcB}V!(&nqrQk!Qn>I}E= z8v*M{rj(DssjcGf%K6fDQ~;&hFJ+!OsSs=PG2yNAPibC_geB{Of=#6UazWX#f=r3E zusn&x0$RwjdvyM?1sw)@Y9iJ&PGJwSh!E0FSlvZem$&X_pFg2meLh3q452KF7bgy4 zoXjLj(vybO?isM(h8SIl7fU{m@ZoQBk|nj0dI^uzAI_k>^eXFsb64B2kjmBM7d-aX zD-(>+Q&Nw%0!qtT65G{1ADu&;nh6LAA&o&m?&3sXbHyY=p#A7wM*(B@--2o}MA5lo zOF{VZi=71FOX>L%0Ch<^WL9o%1v-|V7fDAijAYrxtLFo54n#_MDk<6>gI+yLFood- zBxprrU&sdhMU!pP;anbnYXbrj!wb0iM+?}4yNM4nWc7<(+(w&GqOyuUV_KXy>!e)5 zJH;$jW>O=>W}gt~W7%<6ig~KIOoe@#64~n%6buTNjP+7~#tM$H5Ncp)k|l*XAI@pl zX9zCl5qml(^V19s;iy$LR0-NdvDJm9h|%9IOtqBly>wfScRQQP!!<~R%l5!XQ(~8onyz28;kqeH&r_Yp+RC}>~$~tU}GB@c9+^IH!6ju^MjZMGMr1rlN zp0zUg&DIUwv0DUGgs|zh!0IZ*wBC3Hv(VuR5T!N3Ver1?)@-Y-NEZ2-{wI#w1=8OsErPj|va!(5#wTe_$qcq1O zGIN+UlD_MO>h+T8b(lE|J_tq9Eec(l!nR(MLG%>PNhG4@o7Fg_xg5mysOm44_mrs! zdB_~=X)&`tAd~yv;Uqym9lE$9xgLraFz+UD*s;Oif3rc0o^1XZKb1|Zv2C-F{+?w) zjE+06vNK>hsoJ@c6*Yy+R50=E?qHpXRMi!~xy3Sycbq-@{ML z_zKoQ`L0IMx%f%_I3lmaWjY2lYI zO}aClm^QBF+sVdDVOh0Aaf4^PITzdX;;R^5!Bc=UCx-oVj*EHgwalU@i%q4#L&SUW z2}Z<8c}J0V^Ioiz+Dr%da>QffuV0o2UA^0ZN@08!vRRz7lF`q$fkh)h;SPUN9v=-4DBH{8K&pRw!0^#DZ~f*HJE06C~a84ee8W3 zJJ?s0!Q*XcVs-WQdfzEGk!7dvmAJ4ZZIvxVm57iflgi(3 zlj&4LsRpdpI8PUzN}9oIOQwxz51x#;t60&V8(9C)(xhZhCz6j_qmL;~3jb^~|GRg= zQsjbNgXTVlwASigJb@EB`>A{}LDq0hKNoX>UVM0mNY|5I zgY`pZ{)Q&nF|y!zQ);jo?utNF3FcgjWD{mBif%)HdLKz*QV?n3kdiFIq*$6|{I;UL z2C8F%VRRZ^-a`?8p@DUO{Q@-0=YUxbnk<=b##aWRAM4r1`{~DF28VLOG)+?R3^=}H zi&8<^L#XIHJshhpAEt7r`9L}UoD24emzm7YO<{)gvqwpx0pB5GVuc(K)!T<11NT!m z;1WZP(ofSXroyTC7;I&r=aDOLU&oe571)IW6D*?->QA6hUg?2))O317Xu^cSI*^@^ z!c4+UGAI};8i?;)@Mi4n{~xiMgJ}pvUswPn!<&8-0Wfj@htVe#M+zN>z#MB7>PI1p zK#}T2f*Sm3ydzyx3}VYSlqR%l_tvd7z@j9WPCv9fNe;)qiwicgVAW0k#1=6Sf^74< z778;2s5_n#5DFEl))OhK2RruJ&%A$@NamOIl=6YtO5rh{h+Zg!XyKn{gHSX#CL<(K zEGDC{93)Xje_el)6cU_pW6y)GB{UPvRI@DSHL-9*# z6i9T)UYB^mU~E6;HrU85aXkb^a6czq1)QBmBjX1R(+lQR~;|{kxflhaS;4bncxaQTmhc+)CP&z>AAgKM~5vr^z_CYjd%6#8G8 z{P*ZBha%Yj+bRAW_jk;HoeZvNbqPUSxQGcVvj@WoPHBop=6^SWKpq!3r9~PU{URoi zv02rXbdTZkps=_lsvm+JL@4l|3{)iIaJvVEz}^rt0s)MzOFs?SU-P`^IRCGfK?NI5 z`afp+kJD{k=E8;`i*tEW_iTxRPGm;nR=q+Z`>!T<>i&OJ!$*I8|D2|2il^+^@AIrw zW!)lo^7fxMGYUw-%aN@#@(r^r?%^E|w(=h;(Ci}rJdd#T`w}38>ItDknuT@Ip`>tw z?~pR#)G%uq7E3Tkb*Uv0DkGg&m69?br1pRs016Ixve`#6ED{4GGCmYAbogtynQ%Q! zF&wTvT@tZd+0)mQI+lJM!IDrGLzydhr7;Hfeyb81s^}=@0-Alj1nz|3A5Fia!Js_W+w?_6vU7ZyJTO#e>-ED~qm&K5Mayj$gI z4_OP*gGrc>z*)uhv>;7_y8y6b1b*ryOwtG;)OpM@=m>L=z3knw)-?`&uHMtG0jO_7 zdx-XIrCsgSicsfKQJ?K>t-kwt80N#R;^QlCt}hmY-w#M&HgR(NR|o(U()}l79Tal; zCxlSrQ)K_8hg9hzr-XQ6gG=DbGOCTGWK%ie)_*p{Ge_)4hCvBmi!`UIGi`+L0WDCOr$<;$bD)H+?4HW3zAkZ8 z8{BZaQH4OwV6s&fjIE?x*hU2LCS&RzdeMKlA~k~zK(3vnT%1OP{wCut+0n~W<(^vA zkCQr-d>)Da!3axfm+CuJCNrr-WA;c4T`Ge#VbqTe(Tv9qlD8@p9h0&%pzRJThy2ul zma+Jsj6jelYf%bdK)V%I4l;fVRI^(-glqg(oQ;dlOLD@f|CwJ*NhnT#L~Zd^Qc;@c zAFgeXtMO-k6D46k$Yt{t#=3^l;RL173%gv9s!nd%NydzDvXeA?hVMP%Cu9%{naq;w{mRR+IxC8I|ZLRbCY~%@H-|E_DDy3?z0e76w_KUt~{A8^# zR}2ER!7^obMY+F7lbrf2-dayHW|u6kmr;i=3EkGHy=I!IqCDx}&2&|6en{~zAN+i5 zQ@&ku_|nsItEPKjd!&1nzby6p7_H@-XFEHe?rrVdfNNG|OTT4i*M@uP@&41>AQvOr zcCi3qf;h_B8=sbsLF^obTIi%`k8hN$x9R2YFe3Im$=YJt4sw9WBiwwePKz?`(r;^c zV)ha_)y|s7AM5uB*TPrQ=#XeZcl`t8YoNkr+=Dk_tnt-z#5GGmyJNjtqhN>-UwN3ssj^4ekgM~T5` zX|3y-as8y6RT#Us%XUvby|q)BR7f&zRh{2YFlqem#-({EjpVg?sO4mSW4aA@-US^K zv-uAixNMesE2;A%14){e#)c;vmd409oVp=}R`oT0f#oV3Eqy$+_}T`UiBa^`6Z8De zWj`9uOH4`kqM(RV-%3vNt*vt+z#2HFdOv95^JX1eTc4^`G}c#}pIBRqE#qnO;+t8S zHgG6n>Z=G)1qro!zt7?Q=7KiC>f(Yf#3DH(O=MaWgG6-9ISL5oZUCMjI$AB=20!|K zEX;O_!`?x3WZ?VF1oOKdcmM8t|9;9#Y-pCrG5e>fY494nmBkm!LP=lt*6Pfpet=;* zd<;j!G(9DumWd7_Xaq?yKcCRCO+3=pJ)e*oT(6G&c-)G|aA^jwQfMUh2%!#l$Z4Pf zuly*IzH#1ZfTe;x6DHECQdFrSZ9=F=Wd;{?(MORC)e}xcOr-|UbBa`#B_GITHnWG@nYS|qf&~SdF;>&;Fwq?__o;{jBI8DK90b~ zS&b-bYhy54!O4j#n!osovOM{%keB|_3`}Hwa2xG{eAR9SgF_l;z$B@wqkNlX1B=Ui zRt&pTY7D{%-wSdoM>4l*DBrh&5Jr*rP~X@@U6@=Yu0M!&SbuG_+l3LP%-(;FtJ{J? zEei5N%pRIYk)RG;e1B1=O~r%McTgNl@z&E(+$l$rkF7=AbQ8c!T?tt^cgLe9^62?Z z?I4f=D-CP8H;vUytv5gSe#dJqUbw~W*?y|U`cQ}0CAiKIf6-F;Ar&1aOb{GkjqDVB z(*@>b9Bw-|tPFgpXU-kJ0&&qp8f(HU|BEA#{K7B^yeCskjJ<0T=ghsbTxfg=dQM)P=_d;dfD_ z75!7fS%ygEimw28yG`#M+SwDNrVR*~SyC20K}ftVe6>bVVmW)q@$d)v3iV*4@tk$OrdR_)}%pAe$!|%=|5K`Aoi^c7p+%9sy_s zwTeMH(OH2|TPc|Ae+BR$58rdjPpT^RyDHcv*_vig{)i8Q)-m3K9V@K=gnFUk1p z=%fuF+^u8$qI9gV{#$aSu>J%5bv(d29w==+Nn<@^IXO_;{!Mf(i|m!7YdRe+Y(0+y zo38e_6eQh-FKGuzzh08@*U?Gq=gKm=V6MapYv)R=uy(Elgn_vdkhaa0*o5_SB_M5` zD^Ic`=Sp-Blf;?chMyN&b*L7D>7B@9&Q&(B(=LgY(c(Z^Sx z>JZ*jQhf;H@9QGpUFT`uJn;GqTg1El*COQU+~398l;V9+Bw6*9ZWFBvGAY7roo`o3 zvX+c~>q2z=&9_NehEIwAaHr1OE~|ojCeE&lXkYrLHsa8uJe*X5Sk>guW5P$>?0bR6}54FJ*U$D zG%2>UN)S9Lq(#^JLsGEHLg-S+mM&5AWxPq&`_u96Txxo=y7xZpA0Lx~5T^Nh6J}YG z*4GvY#ZIkwMYGtGf1a9|wz~ahWTyi4ak5HUac!1;ZF-6}eWc>y+?+i&KR?n&`<{tD z+yIoXWtD6j05Nhj0J5Vs0AdKT^pPfCdO~anNs9*2CPxG4Qe=ZDqBM|J)%P1`D_YYs z>w7AeHLi6rMf>TO#&|X@<1kBE$yZfaRC07}M9-OU9XAaxXP09nyD}7nsqB8Cf5!7hh^vfZu5Laxst1rp#r9HEC1T%$E1*diYp1^pZhG$ zx%pRXYiGpWh1JGaeejf`yGrv)KlEzycTHrbcsoC9K6h<;8t5BE^!V)%AM)3h7NNv( z|M*A$;ok*i6;?@*WMPyhfoSW8t2p0o8H6k(WS1o016I-?UZ>4Y-?~)kd#GE8sn)c@(BhY~=)K z!H(S3_2-))=C+A5<$r!+t>siHU-Dub3TmB6FLL#h4?JeUBWOk|0VA?zn0XOwMZ*qC z`pbkzk)^6vUSHhg2-1B^<|j!d`@-$|3u_#Q!3A>TeD~^`8iGa8A5Qwvv^K58bTWq) zLfZ=}Zi@-Z=9<`gU=n~u6Tm4?!`GxxP=T19t0QV!f=&IRgQfWsjl+};Do>P6K>|P~ zXFw~Qe{WT`P{6E6E?n~d8zkF(Q0`0qrYTvAzAT0*F;_8^u$P&+EDT#R6LDfDWU5oq z5{cJ%D9ZP&(DOz_CX8Qte#{5DK+FJTMWr?CI3lJuV)Fr8v`Z1)9jV1Yt(1ykDUdTo zRjJ}NnzW>!clscCN#cV(iVyFHO9zj0gLIr;3gVks*^PT~*_Ik&Xz>dXGt(9(D7QO9 zv~(G$XiuM;I$l%g=ia47)BF1$#rXKFALcgCW{E)p)^2SQ@`n|}K6IF*eC>r$h8!8M zgEDDv-3B$??e>j@76WLn9ODtD>&AFo?;_4!^ntD=3`xp$98d32W+ z&Gp`tji`QGnn-D>x@xPQai2}WrVz4pSdCXS{@%>+gDvz{^MMhTDGzbV;1VKupc*nIq%9X~o<12TQ1w#-Rhpk~&lRz|mGmOlFU|)(= z(_@_PGj*4nHSLpLGb&tlQO+a?i{uB}4SN=u}k_hCA@z3&|B`-S$ zOxE|jC&=d{5UWC(G0yA9HUegBF0Trx)He=@;5iGUyx_LKaNlt}VP%P5Uc!hT2=RiT z+|X@Mz3vibsXgYkRscm%DAncf?66su=R1OjYI5i>3fK^|X3LbUVy3aRIA$;z0-k6n zmpjC>&HT^PZ^bcrq*EEnD?AXzPtV1YWqo4`Df z<_thQAVP+V=!Q?@c(i1OQ4os@VejwQlC(c~`VaS-F}6R*jMStbGsb4CHxyh@zD@&w zJ57$eEAp64t-&L+Q`X8h;28g&D`xe(e$B!yjahp90|l=8{y=bMmwi^FY1pZ58_ z40ih{Wtw;*1J&zCnm0{>**@pe{~e{FAFtjr3C+kfwzcSnnzz(NypysZOG;*O8g=%W zv=2OghpOMO?=9=T$30oBWBdarAY5Bvx7$ZDoe}^f3%93@k6)zitBds>UBm0}bdGUKW za>Z>S*G5zmIEVatZl6BC8H4T7J(D4 zC@@vwj5;86VKg0J-lu~1Hsy8+!WbM-MSQ!>8NP+9w4t8AyTxRQZ$TT{biA@BvxZYz z3c9`tf7*b=<}9(U5F4*t-s${~^!!uKI_&%Px?q#{YR7k0u;MLx4Xlsj)DaH}oH|IL z=OTbh2E56c@tPpPk_`ly7ycfBYqv`Te!}oSe)2!?DtOo;1y(}@c#ixm&ezHMo=a@F z3?#I8WD#;6SS4abTKd}uKDjOA(_1#DonrhicR!~0#961oZnG}Lgtxsv_yOOM;Rf5) zEa>FZ^?&+PvHj;hEK2^OgK6$(!}keUCp_y6zApTS6$!RH8%{u+TEnd}qu;tn`VzUp z#~;5m3ibCzVSNtQ_d~TwijOxw(}ZYv9vAtj92#N}-QLIB`;O%N z;b))sY<4DuSqI5pmQ7XyL^}Z;qMGx<7K^w*$5arV65?y4M@7Map=#Z2Nb{aA$czI0HCPn)go zr|ErqQO7N1;Xbf6>-vZ6_Wm@bMd+ma=97K6n3rESv}_Ik%7W*6@q&~KT&4Nb`}^Cn zqs?h1ZkkJkv!rVi`F?g}!_sORyrD{NJ@b+37^sCuQ1O}TydL43$5g0ng?QZKt{vM7 zv*y`=p4yyx#&WjbCS3qqiPq0(*;2>;YDbo$k+J1e<0&f|-{`dF>zhEb!`5=~Ch0IX z6)PY%J6!Wf^NhY!8U@VHs)8nL-TCpbW&d?2qRI8g+W;^TmeNAt(~__c?zwreV8K9k zPZ7MnRl#wYo`&nS&oel(%%n*8^?dKs^fqHwA#265dC}~N2X21${^290WA#^D23&9U zxU4}th6df9?k-AWWX;S1F`17Oo(GZm8p9u3txEn!HcF0Zx{Do;XKl0DaxZME#1-Qu z4bu-7m2FaUll6*rNj2ZRZOiPNKNqPpT1gjaH5gNu=``3}7byiyv&(ebEVv6b+YG&n zRBP?Qi!`Fm#>-lV-nzW7aafJe%XDLG)r(TVo3xh~#A^9oG}<|D%eu##_s?jxspo_@ zRqsqyTmM+(TakkDH~8C!JCi5kdE`tkd=1<)u^llFI}WqOE4PPkgI*4|jhDd2qNfu?i1K=Utu56H9Pw$k|C3PfCnMZ=N-$ z&RXYH%l`*?6R)U5-rg`*XjeWreZKOq^+Z=#(O)M1W~?qxF8a^vWI@;peFKjLo_Q>| zoZ>~oZ0LPhCH~8fqvd>eVi|f#*Rb5A->WRS$EV~&NDyzn2T%L3Sht=$hBWOxQ2sJT zd6F?*Tve@+?{dGAo87rkQPr`HC)W5|hwNzd#W)2IN6w{KXS3JaQO_sld zYJ9abtH$Xd<%Z`?0XN4u+^Mo%t<#e`i@#oBVSYT!mE6N{B{wKAY(z80<38hMQ~Mi= zWS6p9Utcj61d8uCI7hE@{%OM1E-&c|-?Ak(FkHn6BP7nttH(6Yi>p#lx((L{S|(TZ zFW(Lm97DmwcFXd5`p0wmBUZqQ4J22mKiIP(5g7Ty!uw2wZs`~x~B z^+KZS)B)8GWI(oQR%f}w$UlNCN!F#psIj-o&tTaHG$7sq*ib1NvuM7o9N|8#W0r9B;EyaD=3Bq zF*TKJ!V>2ae3`2gO5`V^tU6@^Y|Z^noTbM~w|htUH;o}PeGW;mVf`pg-lZ%@Y%n{# zn>6C2bGR9YO`(r;&*ydX@9_Pqix!{AewtJHRUWs<>LXnK=;1wa-QX^MxaTWY76{lc zKLJgeTwjBm-49UEdX35SmAyJKqi&5K_T`cf9O76c|KR_aKKrcIx4Wb9YkFAO z#-Cu+>9WQ;lqU~mxinv0O}b3=YS(Gj4F959UkC4tEkBGc--*p-&of7sCtG=&*d@oRLhI49_xwZ|hcHu7eh9)Wy~oqJWov!mzxdZo`CJ^zlJ9(VYFGP+ z82vE4dQXV6-iARO6I&rTP@NEEHDZ* zPcJYO_w)VfnAy`kHAkOX(dU~<{0LSnk!*2Y89A5exw^{6f7l>!<;Dlf#QEfQs5}E4 zOkSK&Ar6s(q5N>%DpA+rU`UV_wm<`=6Nk{A;S|J^6Mnq|!A=9rRqO1NUR7s8HG&d} zWGx*-wFJKaP*1d=?~p=H!kQj}*D!!Iiu!oovc4ux7zWUsfah|DAb<#DAuAa!)N@%O zlHTr9RwjhHqN11#vNf7Gm3aX66;t!4G0kGaN+ z{L&ilIpyQ%Wz4f;4rkFt%O=Cb{CmSbrcr5b0!iiHLU-t2(-&-RMz_;~#Y!E5;5nCHs^57QyD z6y)KSb(hU%NCFce0m7hs`?!KT3|>`uJQ;|eKzO%V;OI#t!Ly}Gf+>7kRQ`XI=wyiK znQ{l9eBMlqzbBaAB1)%~vgS@5;3xMr>ieR&k73TDvLvqf6%A}$R<|?Q99lEwKeA%P zk=}jG-AK=p7+2bZ!QFV@k~mKjQisf$I&kvsGN)HK-dV_ZP6NsYc?%KxkkpOMnU*%R zvet>4wZBa4xWtsIEiL_5apJGsn&97Xl8l(81N^Onm8@|H&WTbGo)*;=HpNgWsN@C|Rj*eBv# zzuWf3QeRfVQtZA8`JNuRA*siHy+Mm+2U^mI?*RLgPji0v(8E5{X5X{}Y8KqZnk`QQ zG)ynn;6NJQQW+Vd%!QO)tO2n{&GRm=BX4zJ~iw=M62Upt6aj1lIOc2$B5q{(jVaafA*)s`G4~Mk5qK<3DKHdAd&B@$zTaGNP-`jF-U++cJw7l^J3lIJr4*vbXe&Z{3AAg`OmQO zq`PvEz?_+{Nl^_G;#*+(=L5|4T_-PXtGJ3EgIWKP+kZ6eKXUAY)$<>Tk*P6eHAX1& zl+YgSPTNptOqorgMw3_H<8*sAx;Z+q?`p1h?#uh12oh~t@978c`^)UHH?sY0YNi*+ zIv20pR4J#A2Kwtn-mvX?koR)6rJmwAU_)}5^Dl3!*WfS_ zU%qX3G);=4QeW_jZ|T&Rio1PPUX{(y8~OL0_2-T3@2f+3{-}|kXC}T_4CPmiyVtXf z`lM1Q6#q8At1PP>2df|T<)FMlMSOeQew1WP<|m(i`0)Ny@WaQCEB|Zo_5FuWesCqD zf=J#iz~z#4ScO-?&AEr|~ro>+7H8cRJ{=eF9+ne8A?}fz49|JLe_xp!iGfelGc^>sQ@V(bakH zKS`>eJe)!w^CC{v39{mL@l~}voqVqzEFy6ccUh@0neYc3B~D@bdfS2A_8|Ngx8@`F zxCu|!)iopPgT6XXiT0_Zd#cXF`}(b)i4IVS-!*dI%Gc@XIaB9Hr2ok2J!<5oNl*)N zl3MmIG-^FNt7_E`E7Mebec8P@k45makTf^#aUP~T{p55hfVdbi(8oC{?%aI%VFr1& zlD+Z#`1ZaT`V?kQ`|v4QvBc>kjc-J!Rq?A9dL>(=D6l?H%YJsm2?NZ)4fju*>YUxu z7^5PJq}miYKaq=W!{W6UAMcBT4dBLjn#F8%;fPbr=>o=%iZg)M*r~WTNt*C;Bied- z&pr$6s^Wxy;2-Ym;PTe(y2N7R+&U2#RA>EiD@UabB0efTw-@zvo!AO2dV6QY0Ioaq z`yk_OT^g+BCN7;u?JZlrK7Z{SvZUr%<*}s=W2h`t=Vo11i(UK0OyZA_#uKm&> zA#ppPVs23tbBp2o7R%%WCn2GJSNAF?Lo%RZ?sA2cE%;sqWk?28%w49CnGCC- z49S3sxx1;MH|k0KK!tBkz@!Ey3aB2aunN|(cQ@-AzgBqlK!sJXj=j5itnrTuuO6td z3f8fAb#_#GDkwuTQ0Ju1h)PKXWk?3DC9$pRQy1t)<-2~M!YWwD-rekL{9fVJ0~J=mI`;0U z;71u&K^c+(6>}FUWF*5XC_^%!V#L)s9C?so6_lZaX0RGQ{F-O6TTKGydEizJJ*dg$ z7Bhk0q9(|1g9-SCEYUYqQNCg3o^M#rzoF*4Z}=IsZQ`Gs9yio?=<7kxidzk%p}GCMfp501CcgFjjPKQOL#7|sD1xqO z=!F`YYqqgw=337iiF6xfAAEK*blP>>3DS;hB;AQ1riey5%|6vmr5V#~1?Eh$72LbB4i2=a_F*bLVf@-e!Kggzs!*;lA<%f-_pJnv(q+fz>Dt3q zr*wL778mZgr=~mZARkW7Zk5ByLsdU%%kw+vf)-p&f1L@qKgKqPr7rkR?q}o1jXZ-& zT~wQIw|RE^DI)xMY;pP@n>(7qhT$e$wOod+xQ;uq9p_l(3Em*R?f~0nv>DUpvlZi5 zWX^>3lwF?v+Bd1LBISVTw?g>J(<-782}3_`@SCcQh1ztA4dv+^Sz)Hgrk!p7D|PsXfxx!O1S4kzW z%elJFcdzQt&q-N^Y?Qp=*EZ2g-zG(8I{Vq1uJh(4(CwEDTFX|A(zm*W*0=scp>MY@ zlE#e2(o+#p@4KGF|@xTW#^9zpvgMqZjoSTB^Nzmu%Dv<9GZWy`)E;C2;kw+^`{yzpj3F z`hDGs-y#=px8I3>FaOVD|Nk}i|9_~$zs~~sZ^&Q%-*0sAzt#!=UPpeSeWDgUpOj#~b&l>A=-^7Vgz(2@TeCI2@{{+|Q#|EVK?^;c5<>Mx}HrcGau|DSi{ z|Mah={Ga|WDgXPwZI}N;m8V+%SN})K|LU)${2zY&r&jrYqtc&r+m(|4w}$px|GsDc z|3{jB`R7XhUv{4VgHHI*8f~}v-`^R`M1ve*Y)xrHGNFzef~XJUw{1T d*8cbJ4f4PGZ~sF4{uiMC{y*7sS1%C38vqT5;gSFV literal 459905 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