diff options
725 files changed, 5735 insertions, 1735 deletions
diff --git a/contrib/libarchive/.editorconfig b/contrib/libarchive/.editorconfig deleted file mode 100644 index 2b797a039e97..000000000000 --- a/contrib/libarchive/.editorconfig +++ /dev/null @@ -1,18 +0,0 @@ -# To use this config on you editor, follow the instructions at: -# http://editorconfig.org - -root = true - -[*] -charset = utf-8 -indent_style = tab -insert_final_newline = true -trim_trailing_whitespace = true - -[*.sh] -indent_style = space -indent_size = 4 - -[CMakeLists.txt] -indent_style = space -indent_size = 2 diff --git a/contrib/libarchive/.github/workflows/cifuzz.yml b/contrib/libarchive/.github/workflows/cifuzz.yml deleted file mode 100644 index e5c60e4b0de2..000000000000 --- a/contrib/libarchive/.github/workflows/cifuzz.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: CIFuzz -on: [pull_request] -jobs: - Fuzzing: - runs-on: ubuntu-latest - steps: - - name: Build Fuzzers - id: build - uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master - with: - oss-fuzz-project-name: 'libarchive' - dry-run: false - - name: Run Fuzzers - uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master - with: - oss-fuzz-project-name: 'libarchive' - fuzz-seconds: 600 - dry-run: false - - name: Upload Crash - uses: actions/upload-artifact@v1 - if: failure() && steps.build.outcome == 'success' - with: - name: artifacts - path: ./out/artifacts diff --git a/contrib/libarchive/NEWS b/contrib/libarchive/NEWS index 7509c9ce5fa1..f4395fd1c979 100644 --- a/contrib/libarchive/NEWS +++ b/contrib/libarchive/NEWS @@ -1,3 +1,7 @@ +Apr 08, 2024: libarchive 3.7.3 released + +Sep 12, 2023: libarchive 3.7.2 released + Jul 29, 2023: libarchive 3.7.1 released Jul 18, 2023: libarchive 3.7.0 released diff --git a/contrib/libarchive/build/autoconf/m4_ax_compile_check_sizeof.m4 b/contrib/libarchive/build/autoconf/m4_ax_compile_check_sizeof.m4 deleted file mode 100644 index f834df6346c9..000000000000 --- a/contrib/libarchive/build/autoconf/m4_ax_compile_check_sizeof.m4 +++ /dev/null @@ -1,115 +0,0 @@ -# ============================================================================ -# https://www.gnu.org/software/autoconf-archive/ax_compile_check_sizeof.html -# ============================================================================ -# -# SYNOPSIS -# -# AX_COMPILE_CHECK_SIZEOF(TYPE [, HEADERS [, EXTRA_SIZES...]]) -# -# DESCRIPTION -# -# This macro checks for the size of TYPE using compile checks, not run -# checks. You can supply extra HEADERS to look into. the check will cycle -# through 1 2 4 8 16 and any EXTRA_SIZES the user supplies. If a match is -# found, it will #define SIZEOF_`TYPE' to that value. Otherwise it will -# emit a configure time error indicating the size of the type could not be -# determined. -# -# The trick is that C will not allow duplicate case labels. While this is -# valid C code: -# -# switch (0) case 0: case 1:; -# -# The following is not: -# -# switch (0) case 0: case 0:; -# -# Thus, the AC_COMPILE_IFELSE will fail if the currently tried size does -# not match. -# -# Here is an example skeleton configure.in script, demonstrating the -# macro's usage: -# -# AC_PROG_CC -# AC_CHECK_HEADERS(stddef.h unistd.h) -# AC_TYPE_SIZE_T -# AC_CHECK_TYPE(ssize_t, int) -# -# headers='#ifdef HAVE_STDDEF_H -# #include <stddef.h> -# #endif -# #ifdef HAVE_UNISTD_H -# #include <unistd.h> -# #endif -# ' -# -# AX_COMPILE_CHECK_SIZEOF(char) -# AX_COMPILE_CHECK_SIZEOF(short) -# AX_COMPILE_CHECK_SIZEOF(int) -# AX_COMPILE_CHECK_SIZEOF(long) -# AX_COMPILE_CHECK_SIZEOF(unsigned char *) -# AX_COMPILE_CHECK_SIZEOF(void *) -# AX_COMPILE_CHECK_SIZEOF(size_t, $headers) -# AX_COMPILE_CHECK_SIZEOF(ssize_t, $headers) -# AX_COMPILE_CHECK_SIZEOF(ptrdiff_t, $headers) -# AX_COMPILE_CHECK_SIZEOF(off_t, $headers) -# -# LICENSE -# -# Copyright (c) 2008 Kaveh Ghazi <ghazi@caip.rutgers.edu> -# Copyright (c) 2017 Reini Urban <rurban@cpan.org> -# -# This program is free software: you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by the -# Free Software Foundation, either version 3 of the License, or (at your -# option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General -# Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program. If not, see <https://www.gnu.org/licenses/>. -# -# As a special exception, the respective Autoconf Macro's copyright owner -# gives unlimited permission to copy, distribute and modify the configure -# scripts that are the output of Autoconf when processing the Macro. You -# need not follow the terms of the GNU General Public License when using -# or distributing such scripts, even though portions of the text of the -# Macro appear in them. The GNU General Public License (GPL) does govern -# all other use of the material that constitutes the Autoconf Macro. -# -# This special exception to the GPL applies to versions of the Autoconf -# Macro released by the Autoconf Archive. When you make and distribute a -# modified version of the Autoconf Macro, you may extend this special -# exception to the GPL to apply to your modified version as well. - -#serial 8 - -AU_ALIAS([AC_COMPILE_CHECK_SIZEOF], [AX_COMPILE_CHECK_SIZEOF]) -AC_DEFUN([AX_COMPILE_CHECK_SIZEOF], -[changequote(<<, >>)dnl -dnl The name to #define. -define(<<AC_TYPE_NAME>>, translit(sizeof_$1, [a-z *], [A-Z_P]))dnl -dnl The cache variable name. -define(<<AC_CV_NAME>>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl -changequote([, ])dnl -AC_MSG_CHECKING(size of $1) -AC_CACHE_VAL(AC_CV_NAME, -[for ac_size in 4 8 1 2 16 $3 ; do # List sizes in rough order of prevalence. - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ -#include <sys/types.h> -$2 -]], [[switch (0) case 0: case (sizeof ($1) == $ac_size):;]])], [AC_CV_NAME=$ac_size]) - if test x$AC_CV_NAME != x ; then break; fi -done -]) -if test x$AC_CV_NAME = x ; then - AC_MSG_ERROR([cannot determine a size for $1]) -fi -AC_MSG_RESULT($AC_CV_NAME) -AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME, [The number of bytes in type $1]) -undefine([AC_TYPE_NAME])dnl -undefine([AC_CV_NAME])dnl -]) diff --git a/contrib/libarchive/cat/bsdcat.1 b/contrib/libarchive/cat/bsdcat.1 index 036623e4e4d6..9fa66d60e1e6 100644 --- a/contrib/libarchive/cat/bsdcat.1 +++ b/contrib/libarchive/cat/bsdcat.1 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd March 1, 2014 .Dt BSDCAT 1 .Os diff --git a/contrib/libarchive/cat/bsdcat.c b/contrib/libarchive/cat/bsdcat.c index bdb9c40b9150..19d3de65cea4 100644 --- a/contrib/libarchive/cat/bsdcat.c +++ b/contrib/libarchive/cat/bsdcat.c @@ -24,7 +24,6 @@ */ #include "bsdcat_platform.h" -__FBSDID("$FreeBSD$"); #include <stdio.h> #ifdef HAVE_STDLIB_H @@ -37,6 +36,9 @@ __FBSDID("$FreeBSD$"); #include <string.h> #endif +#include <archive.h> +#include <archive_entry.h> + #include "bsdcat.h" #include "err.h" @@ -48,7 +50,7 @@ static const char *bsdcat_current_path; static int exit_status = 0; -void +static __LA_NORETURN void usage(FILE *stream, int eval) { const char *p; @@ -58,7 +60,7 @@ usage(FILE *stream, int eval) exit(eval); } -static void +static __LA_NORETURN void version(void) { printf("bsdcat %s - %s \n", @@ -67,7 +69,15 @@ version(void) exit(0); } -void +static void +bsdcat_print_error(void) +{ + lafe_warnc(0, "%s: %s", + bsdcat_current_path, archive_error_string(a)); + exit_status = 1; +} + +static void bsdcat_next(void) { if (a != NULL) { @@ -82,15 +92,7 @@ bsdcat_next(void) archive_read_support_format_raw(a); } -void -bsdcat_print_error(void) -{ - lafe_warnc(0, "%s: %s", - bsdcat_current_path, archive_error_string(a)); - exit_status = 1; -} - -void +static void bsdcat_read_to_stdout(const char* filename) { int r; @@ -130,12 +132,16 @@ main(int argc, char **argv) switch (c) { case 'h': usage(stdout, 0); - break; + /* NOTREACHED */ + /* Fallthrough */ case OPTION_VERSION: version(); - break; + /* NOTREACHED */ + /* Fallthrough */ default: usage(stderr, 1); + /* Fallthrough */ + /* NOTREACHED */ } } diff --git a/contrib/libarchive/cat/bsdcat.h b/contrib/libarchive/cat/bsdcat.h index 6467d6e3d310..504757a44040 100644 --- a/contrib/libarchive/cat/bsdcat.h +++ b/contrib/libarchive/cat/bsdcat.h @@ -34,9 +34,6 @@ #include "config.h" #endif -#include <archive.h> -#include <archive_entry.h> - struct bsdcat { /* Option parser state */ int getopt_state; @@ -53,9 +50,5 @@ enum { }; int bsdcat_getopt(struct bsdcat *); -void usage(FILE *stream, int eval); -void bsdcat_next(void); -void bsdcat_print_error(void); -void bsdcat_read_to_stdout(const char* filename); #endif diff --git a/contrib/libarchive/cat/bsdcat_platform.h b/contrib/libarchive/cat/bsdcat_platform.h index 10b711322c37..78a6113e6f01 100644 --- a/contrib/libarchive/cat/bsdcat_platform.h +++ b/contrib/libarchive/cat/bsdcat_platform.h @@ -21,8 +21,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD: src/usr.bin/tar/bsdtar_platform.h,v 1.26 2008/12/06 07:37:14 kientzle Exp $ */ /* @@ -42,16 +40,6 @@ #include "config.h" #endif -/* Get a real definition for __FBSDID if we can */ -#if HAVE_SYS_CDEFS_H -#include <sys/cdefs.h> -#endif - -/* If not, define it so as to avoid dangling semicolons. */ -#ifndef __FBSDID -#define __FBSDID(a) struct _undefined_hack -#endif - #ifdef HAVE_LIBARCHIVE /* If we're using the platform libarchive, include system headers. */ #include <archive.h> @@ -64,12 +52,14 @@ /* How to mark functions that don't return. */ /* This facilitates use of some newer static code analysis tools. */ -#undef __LA_DEAD +#undef __LA_NORETURN #if defined(__GNUC__) && (__GNUC__ > 2 || \ - (__GNUC__ == 2 && __GNUC_MINOR__ >= 5)) -#define __LA_DEAD __attribute__((__noreturn__)) -#else -#define __LA_DEAD + (__GNUC__ == 2 && __GNUC_MINOR__ >= 5)) +#define __LA_NORETURN __attribute__((__noreturn__)) +#elif defined(_MSC_VER) +#define __LA_NORETURN __declspec(noreturn) +#else +#define __LA_NORETURN #endif #endif /* !BSDCAT_PLATFORM_H_INCLUDED */ diff --git a/contrib/libarchive/cat/cmdline.c b/contrib/libarchive/cat/cmdline.c index 3c4b7a8c4b9e..ea1e0eed6d0a 100644 --- a/contrib/libarchive/cat/cmdline.c +++ b/contrib/libarchive/cat/cmdline.c @@ -28,7 +28,6 @@ */ #include "bsdcat_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_ERRNO_H #include <errno.h> diff --git a/contrib/libarchive/cat/test/test.h b/contrib/libarchive/cat/test/test.h index 350bcad63464..ec83d476b6b8 100644 --- a/contrib/libarchive/cat/test/test.h +++ b/contrib/libarchive/cat/test/test.h @@ -21,8 +21,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ /* Every test program should #include "test.h" as the first thing. */ diff --git a/contrib/libarchive/cpio/bsdcpio.1 b/contrib/libarchive/cpio/bsdcpio.1 index 01b508e122f8..c52764a8c4f7 100644 --- a/contrib/libarchive/cpio/bsdcpio.1 +++ b/contrib/libarchive/cpio/bsdcpio.1 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd September 16, 2014 .Dt CPIO 1 .Os diff --git a/contrib/libarchive/cpio/cmdline.c b/contrib/libarchive/cpio/cmdline.c index 3d5a0ecad7f7..312d762c8f46 100644 --- a/contrib/libarchive/cpio/cmdline.c +++ b/contrib/libarchive/cpio/cmdline.c @@ -26,7 +26,6 @@ #include "cpio_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_ERRNO_H #include <errno.h> diff --git a/contrib/libarchive/cpio/cpio.c b/contrib/libarchive/cpio/cpio.c index 7bd6a782b5b2..c9af535f6d0a 100644 --- a/contrib/libarchive/cpio/cpio.c +++ b/contrib/libarchive/cpio/cpio.c @@ -26,7 +26,6 @@ #include "cpio_platform.h" -__FBSDID("$FreeBSD$"); #include <sys/types.h> #include <archive.h> @@ -108,22 +107,22 @@ static int entry_to_archive(struct cpio *, struct archive_entry *); static int file_to_archive(struct cpio *, const char *); static void free_cache(struct name_cache *cache); static void list_item_verbose(struct cpio *, struct archive_entry *); -static void long_help(void) __LA_DEAD; +static __LA_NORETURN void long_help(void); static const char *lookup_gname(struct cpio *, gid_t gid); static int lookup_gname_helper(struct cpio *, const char **name, id_t gid); static const char *lookup_uname(struct cpio *, uid_t uid); static int lookup_uname_helper(struct cpio *, const char **name, id_t uid); -static void mode_in(struct cpio *) __LA_DEAD; -static void mode_list(struct cpio *) __LA_DEAD; +static __LA_NORETURN void mode_in(struct cpio *); +static __LA_NORETURN void mode_list(struct cpio *); static void mode_out(struct cpio *); static void mode_pass(struct cpio *, const char *); static const char *remove_leading_slash(const char *); static int restore_time(struct cpio *, struct archive_entry *, const char *, int fd); -static void usage(void) __LA_DEAD; -static void version(void) __LA_DEAD; +static __LA_NORETURN void usage(void); +static __LA_NORETURN void version(void); static const char * passphrase_callback(struct archive *, void *); static void passphrase_free(char *); @@ -251,7 +250,7 @@ main(int argc, char *argv[]) break; case 'h': long_help(); - break; + /* NOTREACHED */ case 'I': /* NetBSD/OpenBSD */ cpio->filename = cpio->argument; break; @@ -358,7 +357,7 @@ main(int argc, char *argv[]) break; case OPTION_VERSION: /* GNU convention */ version(); - break; + /* NOTREACHED */ #if 0 /* * cpio_getopt() handles -W specially, so it's not @@ -427,7 +426,7 @@ main(int argc, char *argv[]) mode_list(cpio); else mode_in(cpio); - break; + /* NOTREACHED */ case 'p': if (*cpio->argv == NULL || **cpio->argv == '\0') lafe_errc(1, 0, diff --git a/contrib/libarchive/cpio/cpio.h b/contrib/libarchive/cpio/cpio.h index 6ab55e474c81..3e97c0900b73 100644 --- a/contrib/libarchive/cpio/cpio.h +++ b/contrib/libarchive/cpio/cpio.h @@ -21,8 +21,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ #ifndef CPIO_H_INCLUDED diff --git a/contrib/libarchive/cpio/cpio_platform.h b/contrib/libarchive/cpio/cpio_platform.h index 333848970496..263404b40dab 100644 --- a/contrib/libarchive/cpio/cpio_platform.h +++ b/contrib/libarchive/cpio/cpio_platform.h @@ -21,8 +21,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ /* @@ -46,16 +44,6 @@ #include "cpio_windows.h" #endif -/* Get a real definition for __FBSDID if we can */ -#if HAVE_SYS_CDEFS_H -#include <sys/cdefs.h> -#endif - -/* If not, define it so as to avoid dangling semicolons. */ -#ifndef __FBSDID -#define __FBSDID(a) struct _undefined_hack -#endif - #ifdef HAVE_LIBARCHIVE /* If we're using the platform libarchive, include system headers. */ #include <archive.h> @@ -69,9 +57,11 @@ /* How to mark functions that don't return. */ #if defined(__GNUC__) && (__GNUC__ > 2 || \ (__GNUC__ == 2 && __GNUC_MINOR__ >= 5)) -#define __LA_DEAD __attribute__((__noreturn__)) +#define __LA_NORETURN __attribute__((__noreturn__)) +#elif defined(_MSC_VER) +#define __LA_NORETURN __declspec(noreturn) #else -#define __LA_DEAD +#define __LA_NORETURN #endif #endif /* !CPIO_PLATFORM_H_INCLUDED */ diff --git a/contrib/libarchive/cpio/test/test.h b/contrib/libarchive/cpio/test/test.h index 1dadf68890bf..f8f3a4038b57 100644 --- a/contrib/libarchive/cpio/test/test.h +++ b/contrib/libarchive/cpio/test/test.h @@ -21,8 +21,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ /* Every test program should #include "test.h" as the first thing. */ diff --git a/contrib/libarchive/cpio/test/test_0.c b/contrib/libarchive/cpio/test/test_0.c index fa52def7eaf3..c09df5e137c4 100644 --- a/contrib/libarchive/cpio/test/test_0.c +++ b/contrib/libarchive/cpio/test/test_0.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * This first test does basic sanity checks on the environment. For diff --git a/contrib/libarchive/cpio/test/test_basic.c b/contrib/libarchive/cpio/test/test_basic.c index 3662b529e235..993d555b831c 100644 --- a/contrib/libarchive/cpio/test/test_basic.c +++ b/contrib/libarchive/cpio/test/test_basic.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static void verify_files(const char *msg) diff --git a/contrib/libarchive/cpio/test/test_cmdline.c b/contrib/libarchive/cpio/test/test_cmdline.c index 2dd7d651dc57..f4e05ee58599 100644 --- a/contrib/libarchive/cpio/test/test_cmdline.c +++ b/contrib/libarchive/cpio/test/test_cmdline.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Test the command-line parsing. diff --git a/contrib/libarchive/cpio/test/test_extract_cpio_Z.c b/contrib/libarchive/cpio/test/test_extract_cpio_Z.c index f908fc5b84f5..257d70d04211 100644 --- a/contrib/libarchive/cpio/test/test_extract_cpio_Z.c +++ b/contrib/libarchive/cpio/test/test_extract_cpio_Z.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_extract_cpio_Z) { diff --git a/contrib/libarchive/cpio/test/test_extract_cpio_bz2.c b/contrib/libarchive/cpio/test/test_extract_cpio_bz2.c index 9525e63ae906..08fe1fe53468 100644 --- a/contrib/libarchive/cpio/test/test_extract_cpio_bz2.c +++ b/contrib/libarchive/cpio/test/test_extract_cpio_bz2.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_extract_cpio_bz2) { diff --git a/contrib/libarchive/cpio/test/test_extract_cpio_grz.c b/contrib/libarchive/cpio/test/test_extract_cpio_grz.c index f1a080597e34..969b30e44de5 100644 --- a/contrib/libarchive/cpio/test/test_extract_cpio_grz.c +++ b/contrib/libarchive/cpio/test/test_extract_cpio_grz.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_extract_cpio_grz) { diff --git a/contrib/libarchive/cpio/test/test_extract_cpio_gz.c b/contrib/libarchive/cpio/test/test_extract_cpio_gz.c index 19cee510c857..16296146f87e 100644 --- a/contrib/libarchive/cpio/test/test_extract_cpio_gz.c +++ b/contrib/libarchive/cpio/test/test_extract_cpio_gz.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_extract_cpio_gz) { diff --git a/contrib/libarchive/cpio/test/test_extract_cpio_lrz.c b/contrib/libarchive/cpio/test/test_extract_cpio_lrz.c index 67667585e431..7ef213f74aac 100644 --- a/contrib/libarchive/cpio/test/test_extract_cpio_lrz.c +++ b/contrib/libarchive/cpio/test/test_extract_cpio_lrz.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_extract_cpio_lrz) { diff --git a/contrib/libarchive/cpio/test/test_extract_cpio_lz.c b/contrib/libarchive/cpio/test/test_extract_cpio_lz.c index 4454e7b191e9..bfdf87869b37 100644 --- a/contrib/libarchive/cpio/test/test_extract_cpio_lz.c +++ b/contrib/libarchive/cpio/test/test_extract_cpio_lz.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_extract_cpio_lz) { diff --git a/contrib/libarchive/cpio/test/test_extract_cpio_lz4.c b/contrib/libarchive/cpio/test/test_extract_cpio_lz4.c index c16247be2bef..f8cf5f8fab0d 100644 --- a/contrib/libarchive/cpio/test/test_extract_cpio_lz4.c +++ b/contrib/libarchive/cpio/test/test_extract_cpio_lz4.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_extract_cpio_lz4) { diff --git a/contrib/libarchive/cpio/test/test_extract_cpio_lzma.c b/contrib/libarchive/cpio/test/test_extract_cpio_lzma.c index ae630d6119d8..81fc3c236ab5 100644 --- a/contrib/libarchive/cpio/test/test_extract_cpio_lzma.c +++ b/contrib/libarchive/cpio/test/test_extract_cpio_lzma.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_extract_cpio_lzma) { diff --git a/contrib/libarchive/cpio/test/test_extract_cpio_lzo.c b/contrib/libarchive/cpio/test/test_extract_cpio_lzo.c index 99476af95318..d54d4f712374 100644 --- a/contrib/libarchive/cpio/test/test_extract_cpio_lzo.c +++ b/contrib/libarchive/cpio/test/test_extract_cpio_lzo.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_extract_cpio_lzo) { diff --git a/contrib/libarchive/cpio/test/test_extract_cpio_xz.c b/contrib/libarchive/cpio/test/test_extract_cpio_xz.c index 60f1b5a9de84..faeea202e050 100644 --- a/contrib/libarchive/cpio/test/test_extract_cpio_xz.c +++ b/contrib/libarchive/cpio/test/test_extract_cpio_xz.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_extract_cpio_xz) { diff --git a/contrib/libarchive/cpio/test/test_extract_cpio_zstd.c b/contrib/libarchive/cpio/test/test_extract_cpio_zstd.c index 289f33d0583c..31421c3b60d7 100644 --- a/contrib/libarchive/cpio/test/test_extract_cpio_zstd.c +++ b/contrib/libarchive/cpio/test/test_extract_cpio_zstd.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_extract_cpio_zstd) { diff --git a/contrib/libarchive/cpio/test/test_format_newc.c b/contrib/libarchive/cpio/test/test_format_newc.c index 6b9ba47cfe1a..ee0087d4ca94 100644 --- a/contrib/libarchive/cpio/test/test_format_newc.c +++ b/contrib/libarchive/cpio/test/test_format_newc.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* Number of bytes needed to pad 'n' to multiple of 'block', assuming * that 'block' is a power of two. This trick can be more easily diff --git a/contrib/libarchive/cpio/test/test_gcpio_compat.c b/contrib/libarchive/cpio/test/test_gcpio_compat.c index 0a6894fa8214..82c71ec3cd21 100644 --- a/contrib/libarchive/cpio/test/test_gcpio_compat.c +++ b/contrib/libarchive/cpio/test/test_gcpio_compat.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static void unpack_test(const char *from, const char *options, const char *se) diff --git a/contrib/libarchive/cpio/test/test_gcpio_compat_ref.bin.uu b/contrib/libarchive/cpio/test/test_gcpio_compat_ref.bin.uu index 745d8ab7851a..f2ffad975644 100644 --- a/contrib/libarchive/cpio/test/test_gcpio_compat_ref.bin.uu +++ b/contrib/libarchive/cpio/test/test_gcpio_compat_ref.bin.uu @@ -1,4 +1,3 @@ -$FreeBSD$ begin 644 test_gcpio_compat_ref.bin MQW%9`*IWI('H`^@#`@````U'=YD%````"@!F:6QE```Q,C,T-38W.#D*QW%9 M`*IWI('H`^@#`@````U'=YD)````"@!L:6YK9FEL90``,3(S-#4V-S@Y"L=Q diff --git a/contrib/libarchive/cpio/test/test_gcpio_compat_ref.crc.uu b/contrib/libarchive/cpio/test/test_gcpio_compat_ref.crc.uu index df8dde05bd82..56ba62c9ed1f 100644 --- a/contrib/libarchive/cpio/test/test_gcpio_compat_ref.crc.uu +++ b/contrib/libarchive/cpio/test/test_gcpio_compat_ref.crc.uu @@ -1,4 +1,3 @@ -$FreeBSD$ begin 644 test_gcpio_compat_ref.crc M,#<P-S`R,#`S,S<W86$P,#`P.#%A-#`P,#`P,V4X,#`P,#`S93@P,#`P,#`P M,C0W,&0Y.3<W,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#4Y,#`P,#`P,#`P,#`P diff --git a/contrib/libarchive/cpio/test/test_gcpio_compat_ref.newc.uu b/contrib/libarchive/cpio/test/test_gcpio_compat_ref.newc.uu index 1e29ba907bb4..449c083c311c 100644 --- a/contrib/libarchive/cpio/test/test_gcpio_compat_ref.newc.uu +++ b/contrib/libarchive/cpio/test/test_gcpio_compat_ref.newc.uu @@ -1,4 +1,3 @@ -$FreeBSD$ begin 644 test_gcpio_compat_ref.newc M,#<P-S`Q,#`S,S<W86$P,#`P.#%A-#`P,#`P,V4X,#`P,#`S93@P,#`P,#`P M,C0W,&0Y.3<W,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#4Y,#`P,#`P,#`P,#`P diff --git a/contrib/libarchive/cpio/test/test_gcpio_compat_ref.ustar.uu b/contrib/libarchive/cpio/test/test_gcpio_compat_ref.ustar.uu index 77989f4aed06..2f6a44057eac 100644 --- a/contrib/libarchive/cpio/test/test_gcpio_compat_ref.ustar.uu +++ b/contrib/libarchive/cpio/test/test_gcpio_compat_ref.ustar.uu @@ -1,4 +1,3 @@ -$FreeBSD$ begin 644 test_gcpio_compat_ref.ustar M9FEL90`````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` diff --git a/contrib/libarchive/cpio/test/test_missing_file.c b/contrib/libarchive/cpio/test/test_missing_file.c index a908f5301bc6..784d53cfe141 100644 --- a/contrib/libarchive/cpio/test/test_missing_file.c +++ b/contrib/libarchive/cpio/test/test_missing_file.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_missing_file) { diff --git a/contrib/libarchive/cpio/test/test_option_0.c b/contrib/libarchive/cpio/test/test_option_0.c index bc4aecd2afc2..fbe6f7ac4a85 100644 --- a/contrib/libarchive/cpio/test/test_option_0.c +++ b/contrib/libarchive/cpio/test/test_option_0.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_0) { diff --git a/contrib/libarchive/cpio/test/test_option_B_upper.c b/contrib/libarchive/cpio/test/test_option_B_upper.c index b040354b6053..79dc91efb5ba 100644 --- a/contrib/libarchive/cpio/test/test_option_B_upper.c +++ b/contrib/libarchive/cpio/test/test_option_B_upper.c @@ -23,8 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); - DEFINE_TEST(test_option_B_upper) { diff --git a/contrib/libarchive/cpio/test/test_option_C_upper.c b/contrib/libarchive/cpio/test/test_option_C_upper.c index c8e63fd34fb5..f9fd7e159339 100644 --- a/contrib/libarchive/cpio/test/test_option_C_upper.c +++ b/contrib/libarchive/cpio/test/test_option_C_upper.c @@ -23,8 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); - DEFINE_TEST(test_option_C_upper) { diff --git a/contrib/libarchive/cpio/test/test_option_J_upper.c b/contrib/libarchive/cpio/test/test_option_J_upper.c index e19d599e1ec7..f76d3b236913 100644 --- a/contrib/libarchive/cpio/test/test_option_J_upper.c +++ b/contrib/libarchive/cpio/test/test_option_J_upper.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_J_upper) { diff --git a/contrib/libarchive/cpio/test/test_option_L_upper.c b/contrib/libarchive/cpio/test/test_option_L_upper.c index 1b0ae7c3e956..b6fb713f110f 100644 --- a/contrib/libarchive/cpio/test/test_option_L_upper.c +++ b/contrib/libarchive/cpio/test/test_option_L_upper.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* This is a little pointless, as Windows doesn't support symlinks * (except for the seriously crippled CreateSymbolicLink API) so these diff --git a/contrib/libarchive/cpio/test/test_option_Z_upper.c b/contrib/libarchive/cpio/test/test_option_Z_upper.c index ff388427e372..aa408e4e548c 100644 --- a/contrib/libarchive/cpio/test/test_option_Z_upper.c +++ b/contrib/libarchive/cpio/test/test_option_Z_upper.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_Z_upper) { diff --git a/contrib/libarchive/cpio/test/test_option_a.c b/contrib/libarchive/cpio/test/test_option_a.c index 71345d62abe5..885eb12c80f5 100644 --- a/contrib/libarchive/cpio/test/test_option_a.c +++ b/contrib/libarchive/cpio/test/test_option_a.c @@ -28,7 +28,6 @@ #elif defined(HAVE_SYS_UTIME_H) #include <sys/utime.h> #endif -__FBSDID("$FreeBSD$"); static struct { const char *name; diff --git a/contrib/libarchive/cpio/test/test_option_b64encode.c b/contrib/libarchive/cpio/test/test_option_b64encode.c index 7c15a8230606..501976c202a1 100644 --- a/contrib/libarchive/cpio/test/test_option_b64encode.c +++ b/contrib/libarchive/cpio/test/test_option_b64encode.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_b64encode) { diff --git a/contrib/libarchive/cpio/test/test_option_c.c b/contrib/libarchive/cpio/test/test_option_c.c index dfa62c13b13e..0b6bed2fac93 100644 --- a/contrib/libarchive/cpio/test/test_option_c.c +++ b/contrib/libarchive/cpio/test/test_option_c.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static int is_octal(const char *p, size_t l) diff --git a/contrib/libarchive/cpio/test/test_option_d.c b/contrib/libarchive/cpio/test/test_option_d.c index 9ff14539698f..b96430e4f37a 100644 --- a/contrib/libarchive/cpio/test/test_option_d.c +++ b/contrib/libarchive/cpio/test/test_option_d.c @@ -23,8 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); - DEFINE_TEST(test_option_d) { diff --git a/contrib/libarchive/cpio/test/test_option_f.c b/contrib/libarchive/cpio/test/test_option_f.c index 784e0858431b..72383884ac1e 100644 --- a/contrib/libarchive/cpio/test/test_option_f.c +++ b/contrib/libarchive/cpio/test/test_option_f.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Unpack the archive in a new dir. diff --git a/contrib/libarchive/cpio/test/test_option_f.cpio.uu b/contrib/libarchive/cpio/test/test_option_f.cpio.uu index 42c63c39685e..60b74173f413 100644 --- a/contrib/libarchive/cpio/test/test_option_f.cpio.uu +++ b/contrib/libarchive/cpio/test/test_option_f.cpio.uu @@ -1,4 +1,3 @@ -$FreeBSD$ begin 644 test_option_f.cpio M,#<P-S`W,#`P,3,Q-C(Q-38Q,3`P-C0T,#`Q-S4P,#`Q-S4P,#`P,#`Q,#`P M,#`P,3`W,S4Q,3(U,C8P,#`P,#4P,#`P,#`P,#`P,&$Q,C,`,#<P-S`W,#`P diff --git a/contrib/libarchive/cpio/test/test_option_grzip.c b/contrib/libarchive/cpio/test/test_option_grzip.c index 7e7dd2c8e6f3..cd898cd9228f 100644 --- a/contrib/libarchive/cpio/test/test_option_grzip.c +++ b/contrib/libarchive/cpio/test/test_option_grzip.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_grzip) { diff --git a/contrib/libarchive/cpio/test/test_option_help.c b/contrib/libarchive/cpio/test/test_option_help.c index 56234306f539..cf69c76496d5 100644 --- a/contrib/libarchive/cpio/test/test_option_help.c +++ b/contrib/libarchive/cpio/test/test_option_help.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Test that "--help", "-h", and "-W help" options all work and diff --git a/contrib/libarchive/cpio/test/test_option_l.c b/contrib/libarchive/cpio/test/test_option_l.c index 5c76e688e6e9..3f4390a6ff22 100644 --- a/contrib/libarchive/cpio/test/test_option_l.c +++ b/contrib/libarchive/cpio/test/test_option_l.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_l) { diff --git a/contrib/libarchive/cpio/test/test_option_lrzip.c b/contrib/libarchive/cpio/test/test_option_lrzip.c index 8d9c0d576cc3..4c46f1c65bba 100644 --- a/contrib/libarchive/cpio/test/test_option_lrzip.c +++ b/contrib/libarchive/cpio/test/test_option_lrzip.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_lrzip) { diff --git a/contrib/libarchive/cpio/test/test_option_lz4.c b/contrib/libarchive/cpio/test/test_option_lz4.c index ebd376736f42..4c5186d55ccc 100644 --- a/contrib/libarchive/cpio/test/test_option_lz4.c +++ b/contrib/libarchive/cpio/test/test_option_lz4.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_lz4) { diff --git a/contrib/libarchive/cpio/test/test_option_lzma.c b/contrib/libarchive/cpio/test/test_option_lzma.c index b7cad3d1e99a..3c2648b827cd 100644 --- a/contrib/libarchive/cpio/test/test_option_lzma.c +++ b/contrib/libarchive/cpio/test/test_option_lzma.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_lzma) { diff --git a/contrib/libarchive/cpio/test/test_option_lzop.c b/contrib/libarchive/cpio/test/test_option_lzop.c index aa40ef5b6392..b787b720a878 100644 --- a/contrib/libarchive/cpio/test/test_option_lzop.c +++ b/contrib/libarchive/cpio/test/test_option_lzop.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_lzop) { diff --git a/contrib/libarchive/cpio/test/test_option_m.c b/contrib/libarchive/cpio/test/test_option_m.c index de880b2883e1..f2f297e10572 100644 --- a/contrib/libarchive/cpio/test/test_option_m.c +++ b/contrib/libarchive/cpio/test/test_option_m.c @@ -23,8 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); - DEFINE_TEST(test_option_m) { diff --git a/contrib/libarchive/cpio/test/test_option_m.cpio.uu b/contrib/libarchive/cpio/test/test_option_m.cpio.uu index 3d2002355e55..0c36ac4fdfd5 100644 --- a/contrib/libarchive/cpio/test/test_option_m.cpio.uu +++ b/contrib/libarchive/cpio/test/test_option_m.cpio.uu @@ -1,4 +1,3 @@ -$FreeBSD$ begin 644 test_option_m.cpio M,#<P-S`W,#`P,3,Q-#4P,#8T,3`P-C0T,#`Q-S4P,#`Q-S4P,#`P,#`Q,#`P M,#`P,#`P,#`P,#`P,#$P,#`P,#4P,#`P,#`P,#`P,&9I;&4`,#<P-S`W,#`P diff --git a/contrib/libarchive/cpio/test/test_option_passphrase.c b/contrib/libarchive/cpio/test/test_option_passphrase.c index ae77a23fcb74..d409b30c81cf 100644 --- a/contrib/libarchive/cpio/test/test_option_passphrase.c +++ b/contrib/libarchive/cpio/test/test_option_passphrase.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_passphrase) { diff --git a/contrib/libarchive/cpio/test/test_option_t.c b/contrib/libarchive/cpio/test/test_option_t.c index 9eef0da571c4..953e4a80651e 100644 --- a/contrib/libarchive/cpio/test/test_option_t.c +++ b/contrib/libarchive/cpio/test/test_option_t.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_LOCALE_H #include <locale.h> diff --git a/contrib/libarchive/cpio/test/test_option_t.cpio.uu b/contrib/libarchive/cpio/test/test_option_t.cpio.uu index 055fe747d06f..d0bf60bf7d9d 100644 --- a/contrib/libarchive/cpio/test/test_option_t.cpio.uu +++ b/contrib/libarchive/cpio/test/test_option_t.cpio.uu @@ -1,4 +1,3 @@ -$FreeBSD$ begin 644 test_option_t.cpio M,#<P-S`W,#`P,3,Q-#4P,#8T,3`P-C0T,#`Q-S4P,#`Q-S4P,#`P,#`Q,#`P M,#`P,#`P,#`P,#`P,#$P,#`P,#4P,#`P,#`P,#`P,&9I;&4`,#<P-S`W,#`P diff --git a/contrib/libarchive/cpio/test/test_option_t.stdout.uu b/contrib/libarchive/cpio/test/test_option_t.stdout.uu index 2457706eceed..c5144bb68029 100644 --- a/contrib/libarchive/cpio/test/test_option_t.stdout.uu +++ b/contrib/libarchive/cpio/test/test_option_t.stdout.uu @@ -1,4 +1,3 @@ -$FreeBSD$ begin 644 test_option_t.stdout %9FEL90H` ` diff --git a/contrib/libarchive/cpio/test/test_option_tv.stdout.uu b/contrib/libarchive/cpio/test/test_option_tv.stdout.uu index 7f1879c80b16..ad9481360f35 100644 --- a/contrib/libarchive/cpio/test/test_option_tv.stdout.uu +++ b/contrib/libarchive/cpio/test/test_option_tv.stdout.uu @@ -1,4 +1,3 @@ -$FreeBSD$ begin 644 test_option_tv.stdout M+7)W+7(M+7(M+2`@(#$@=&EM("`@("`@=&EM("`@("`@("`@("`@(#`@1&5C /(#,Q("`Q.38Y(&9I;&4* diff --git a/contrib/libarchive/cpio/test/test_option_u.c b/contrib/libarchive/cpio/test/test_option_u.c index cc790b1c0af2..fe5b863af0e2 100644 --- a/contrib/libarchive/cpio/test/test_option_u.c +++ b/contrib/libarchive/cpio/test/test_option_u.c @@ -28,7 +28,6 @@ #elif defined(HAVE_SYS_UTIME_H) #include <sys/utime.h> #endif -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_u) { diff --git a/contrib/libarchive/cpio/test/test_option_uuencode.c b/contrib/libarchive/cpio/test/test_option_uuencode.c index a42a0e03096f..28662ddfb659 100644 --- a/contrib/libarchive/cpio/test/test_option_uuencode.c +++ b/contrib/libarchive/cpio/test/test_option_uuencode.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_uuencode) { diff --git a/contrib/libarchive/cpio/test/test_option_xz.c b/contrib/libarchive/cpio/test/test_option_xz.c index f0d3b33d45b8..9116ecace3a7 100644 --- a/contrib/libarchive/cpio/test/test_option_xz.c +++ b/contrib/libarchive/cpio/test/test_option_xz.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_xz) { diff --git a/contrib/libarchive/cpio/test/test_option_y.c b/contrib/libarchive/cpio/test/test_option_y.c index ddb498ffc12f..a78dff8cf4ea 100644 --- a/contrib/libarchive/cpio/test/test_option_y.c +++ b/contrib/libarchive/cpio/test/test_option_y.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_y) { diff --git a/contrib/libarchive/cpio/test/test_option_z.c b/contrib/libarchive/cpio/test/test_option_z.c index 803232d045c2..9a1500d77f32 100644 --- a/contrib/libarchive/cpio/test/test_option_z.c +++ b/contrib/libarchive/cpio/test/test_option_z.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_z) { diff --git a/contrib/libarchive/cpio/test/test_option_zstd.c b/contrib/libarchive/cpio/test/test_option_zstd.c index 29b8c78b94aa..10c3ed9784e8 100644 --- a/contrib/libarchive/cpio/test/test_option_zstd.c +++ b/contrib/libarchive/cpio/test/test_option_zstd.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_zstd) { diff --git a/contrib/libarchive/cpio/test/test_owner_parse.c b/contrib/libarchive/cpio/test/test_owner_parse.c index bef02da7badf..fc6f18943f5d 100644 --- a/contrib/libarchive/cpio/test/test_owner_parse.c +++ b/contrib/libarchive/cpio/test/test_owner_parse.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #include "../cpio.h" #include "err.h" diff --git a/contrib/libarchive/cpio/test/test_passthrough_dotdot.c b/contrib/libarchive/cpio/test/test_passthrough_dotdot.c index 58d82349acad..831c1f81c1cb 100644 --- a/contrib/libarchive/cpio/test/test_passthrough_dotdot.c +++ b/contrib/libarchive/cpio/test/test_passthrough_dotdot.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Verify that "cpio -p .." works. diff --git a/contrib/libarchive/cpio/test/test_passthrough_reverse.c b/contrib/libarchive/cpio/test/test_passthrough_reverse.c index 42df75abd4ce..7ae0e6602a34 100644 --- a/contrib/libarchive/cpio/test/test_passthrough_reverse.c +++ b/contrib/libarchive/cpio/test/test_passthrough_reverse.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * As reported by Bernd Walter: Some people are in the habit of diff --git a/contrib/libarchive/libarchive/archive.h b/contrib/libarchive/libarchive/archive.h index 25e47e96c058..2e3a9f31cd33 100644 --- a/contrib/libarchive/libarchive/archive.h +++ b/contrib/libarchive/libarchive/archive.h @@ -21,8 +21,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ #ifndef ARCHIVE_H_INCLUDED @@ -36,7 +34,7 @@ * assert that ARCHIVE_VERSION_NUMBER >= 2012108. */ /* Note: Compiler will complain if this does not match archive_entry.h! */ -#define ARCHIVE_VERSION_NUMBER 3007001 +#define ARCHIVE_VERSION_NUMBER 3007003 #include <sys/stat.h> #include <stddef.h> /* for wchar_t */ @@ -157,7 +155,7 @@ __LA_DECL int archive_version_number(void); /* * Textual name/version of the library, useful for version displays. */ -#define ARCHIVE_VERSION_ONLY_STRING "3.7.1" +#define ARCHIVE_VERSION_ONLY_STRING "3.7.3" #define ARCHIVE_VERSION_STRING "libarchive " ARCHIVE_VERSION_ONLY_STRING __LA_DECL const char * archive_version_string(void); @@ -535,6 +533,10 @@ __LA_DECL int archive_read_open_filenames(struct archive *, const char **_filenames, size_t _block_size); __LA_DECL int archive_read_open_filename_w(struct archive *, const wchar_t *_filename, size_t _block_size); +#if defined(_WIN32) && !defined(__CYGWIN__) +__LA_DECL int archive_read_open_filenames_w(struct archive *, + const wchar_t **_filenames, size_t _block_size); +#endif /* archive_read_open_file() is a deprecated synonym for ..._open_filename(). */ __LA_DECL int archive_read_open_file(struct archive *, const char *_filename, size_t _block_size) __LA_DEPRECATED; diff --git a/contrib/libarchive/libarchive/archive_acl.c b/contrib/libarchive/libarchive/archive_acl.c index ead7e36e49ec..254324c71309 100644 --- a/contrib/libarchive/libarchive/archive_acl.c +++ b/contrib/libarchive/libarchive/archive_acl.c @@ -25,7 +25,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_ERRNO_H #include <errno.h> diff --git a/contrib/libarchive/libarchive/archive_acl_private.h b/contrib/libarchive/libarchive/archive_acl_private.h index af108162c664..750b4dd7d898 100644 --- a/contrib/libarchive/libarchive/archive_acl_private.h +++ b/contrib/libarchive/libarchive/archive_acl_private.h @@ -21,8 +21,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ #ifndef ARCHIVE_ACL_PRIVATE_H_INCLUDED diff --git a/contrib/libarchive/libarchive/archive_check_magic.c b/contrib/libarchive/libarchive/archive_check_magic.c index 9a69bd92b641..d12f0c496e27 100644 --- a/contrib/libarchive/libarchive/archive_check_magic.c +++ b/contrib/libarchive/libarchive/archive_check_magic.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> @@ -62,7 +61,7 @@ errmsg(const char *m) } } -static __LA_DEAD void +static __LA_NORETURN void diediedie(void) { #if defined(_WIN32) && !defined(__CYGWIN__) && defined(_DEBUG) @@ -99,13 +98,12 @@ archive_handle_type_name(unsigned m) } } - -static char * +static void write_all_states(char *buff, unsigned int states) { unsigned int lowbit; - buff[0] = '\0'; + *buff = '\0'; /* A trick for computing the lowest set bit. */ while ((lowbit = states & (1 + ~states)) != 0) { @@ -114,7 +112,6 @@ write_all_states(char *buff, unsigned int states) if (states != 0) strcat(buff, "/"); } - return buff; } /* @@ -160,16 +157,19 @@ __archive_check_magic(struct archive *a, unsigned int magic, if ((a->state & state) == 0) { /* If we're already FATAL, don't overwrite the error. */ - if (a->state != ARCHIVE_STATE_FATAL) + if (a->state != ARCHIVE_STATE_FATAL) { + write_all_states(states1, a->state); + write_all_states(states2, state); archive_set_error(a, -1, "INTERNAL ERROR: Function '%s' invoked with" " archive structure in state '%s'," " should be in state '%s'", function, - write_all_states(states1, a->state), - write_all_states(states2, state)); + states1, + states2); + } a->state = ARCHIVE_STATE_FATAL; return (ARCHIVE_FATAL); } - return ARCHIVE_OK; + return (ARCHIVE_OK); } diff --git a/contrib/libarchive/libarchive/archive_cmdline.c b/contrib/libarchive/libarchive/archive_cmdline.c index 5c519cd17f1b..2e5428cae516 100644 --- a/contrib/libarchive/libarchive/archive_cmdline.c +++ b/contrib/libarchive/libarchive/archive_cmdline.c @@ -25,8 +25,6 @@ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); - #ifdef HAVE_STRING_H # include <string.h> #endif diff --git a/contrib/libarchive/libarchive/archive_cmdline_private.h b/contrib/libarchive/libarchive/archive_cmdline_private.h index 57a19494fd7a..7495dfed55dd 100644 --- a/contrib/libarchive/libarchive/archive_cmdline_private.h +++ b/contrib/libarchive/libarchive/archive_cmdline_private.h @@ -21,8 +21,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ #ifndef ARCHIVE_CMDLINE_PRIVATE_H diff --git a/contrib/libarchive/libarchive/archive_crc32.h b/contrib/libarchive/libarchive/archive_crc32.h index c0456acc742f..98a4e2cf8f7f 100644 --- a/contrib/libarchive/libarchive/archive_crc32.h +++ b/contrib/libarchive/libarchive/archive_crc32.h @@ -21,8 +21,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ #ifndef ARCHIVE_CRC32_H diff --git a/contrib/libarchive/libarchive/archive_cryptor.c b/contrib/libarchive/libarchive/archive_cryptor.c index 112baf161348..437dba06be62 100644 --- a/contrib/libarchive/libarchive/archive_cryptor.c +++ b/contrib/libarchive/libarchive/archive_cryptor.c @@ -424,8 +424,8 @@ static int aes_ctr_release(archive_crypto_ctx *ctx) { EVP_CIPHER_CTX_free(ctx->ctx); - memset(ctx->key, 0, ctx->key_len); - memset(ctx->nonce, 0, sizeof(ctx->nonce)); + OPENSSL_cleanse(ctx->key, ctx->key_len); + OPENSSL_cleanse(ctx->nonce, sizeof(ctx->nonce)); return 0; } diff --git a/contrib/libarchive/libarchive/archive_digest.c b/contrib/libarchive/libarchive/archive_digest.c index 08a9aeb02320..3776831b21c9 100644 --- a/contrib/libarchive/libarchive/archive_digest.c +++ b/contrib/libarchive/libarchive/archive_digest.c @@ -110,7 +110,7 @@ win_crypto_Update(Digest_CTX *ctx, const unsigned char *buf, size_t len) #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptHashData(ctx->hHash, (PUCHAR)(uintptr_t)buf, - len, 0); + (ULONG)len, 0); #else CryptHashData(ctx->hash, (unsigned char *)(uintptr_t)buf, diff --git a/contrib/libarchive/libarchive/archive_endian.h b/contrib/libarchive/libarchive/archive_endian.h index 77c987031022..83b2efa531ef 100644 --- a/contrib/libarchive/libarchive/archive_endian.h +++ b/contrib/libarchive/libarchive/archive_endian.h @@ -23,8 +23,6 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD$ - * * Borrowed from FreeBSD's <sys/endian.h> */ diff --git a/contrib/libarchive/libarchive/archive_entry.3 b/contrib/libarchive/libarchive/archive_entry.3 index 2f62a4be233e..0fc0f8cc2fe6 100644 --- a/contrib/libarchive/libarchive/archive_entry.3 +++ b/contrib/libarchive/libarchive/archive_entry.3 @@ -23,8 +23,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd February 2, 2012 .Dt ARCHIVE_ENTRY 3 .Os diff --git a/contrib/libarchive/libarchive/archive_entry.c b/contrib/libarchive/libarchive/archive_entry.c index 819fe451aa4b..e017b0fd1ebc 100644 --- a/contrib/libarchive/libarchive/archive_entry.c +++ b/contrib/libarchive/libarchive/archive_entry.c @@ -25,7 +25,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_STAT_H #include <sys/stat.h> @@ -372,6 +371,12 @@ archive_entry_filetype(struct archive_entry *entry) return (AE_IFMT & entry->acl.mode); } +int +archive_entry_filetype_is_set(struct archive_entry *entry) +{ + return (entry->ae_set & AE_SET_FILETYPE); +} + void archive_entry_fflags(struct archive_entry *entry, unsigned long *set, unsigned long *clear) @@ -425,6 +430,12 @@ archive_entry_gid(struct archive_entry *entry) return (entry->ae_stat.aest_gid); } +int +archive_entry_gid_is_set(struct archive_entry *entry) +{ + return (entry->ae_set & AE_SET_GID); +} + const char * archive_entry_gname(struct archive_entry *entry) { @@ -631,6 +642,12 @@ archive_entry_perm(struct archive_entry *entry) return (~AE_IFMT & entry->acl.mode); } +int +archive_entry_perm_is_set(struct archive_entry *entry) +{ + return (entry->ae_set & AE_SET_PERM); +} + dev_t archive_entry_rdev(struct archive_entry *entry) { @@ -759,6 +776,12 @@ archive_entry_uid(struct archive_entry *entry) return (entry->ae_stat.aest_uid); } +int +archive_entry_uid_is_set(struct archive_entry *entry) +{ + return (entry->ae_set & AE_SET_UID); +} + const char * archive_entry_uname(struct archive_entry *entry) { @@ -827,6 +850,7 @@ archive_entry_set_filetype(struct archive_entry *entry, unsigned int type) entry->stat_valid = 0; entry->acl.mode &= ~AE_IFMT; entry->acl.mode |= AE_IFMT & type; + entry->ae_set |= AE_SET_FILETYPE; } void @@ -861,6 +885,7 @@ archive_entry_set_gid(struct archive_entry *entry, la_int64_t g) { entry->stat_valid = 0; entry->ae_stat.aest_gid = g; + entry->ae_set |= AE_SET_GID; } void @@ -1145,6 +1170,7 @@ archive_entry_set_mode(struct archive_entry *entry, mode_t m) { entry->stat_valid = 0; entry->acl.mode = m; + entry->ae_set |= AE_SET_PERM | AE_SET_FILETYPE; } void @@ -1220,6 +1246,7 @@ archive_entry_set_perm(struct archive_entry *entry, mode_t p) entry->stat_valid = 0; entry->acl.mode &= AE_IFMT; entry->acl.mode |= ~AE_IFMT & p; + entry->ae_set |= AE_SET_PERM; } void @@ -1354,6 +1381,7 @@ archive_entry_set_uid(struct archive_entry *entry, la_int64_t u) { entry->stat_valid = 0; entry->ae_stat.aest_uid = u; + entry->ae_set |= AE_SET_UID; } void diff --git a/contrib/libarchive/libarchive/archive_entry.h b/contrib/libarchive/libarchive/archive_entry.h index f6860ec9afcb..df9cb765f7e8 100644 --- a/contrib/libarchive/libarchive/archive_entry.h +++ b/contrib/libarchive/libarchive/archive_entry.h @@ -22,15 +22,13 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ #ifndef ARCHIVE_ENTRY_H_INCLUDED #define ARCHIVE_ENTRY_H_INCLUDED /* Note: Compiler will complain if this does not match archive.h! */ -#define ARCHIVE_VERSION_NUMBER 3007001 +#define ARCHIVE_VERSION_NUMBER 3007003 /* * Note: archive_entry.h is for use outside of libarchive; the @@ -251,11 +249,13 @@ __LA_DECL int archive_entry_dev_is_set(struct archive_entry *); __LA_DECL dev_t archive_entry_devmajor(struct archive_entry *); __LA_DECL dev_t archive_entry_devminor(struct archive_entry *); __LA_DECL __LA_MODE_T archive_entry_filetype(struct archive_entry *); +__LA_DECL int archive_entry_filetype_is_set(struct archive_entry *); __LA_DECL void archive_entry_fflags(struct archive_entry *, unsigned long * /* set */, unsigned long * /* clear */); __LA_DECL const char *archive_entry_fflags_text(struct archive_entry *); __LA_DECL la_int64_t archive_entry_gid(struct archive_entry *); +__LA_DECL int archive_entry_gid_is_set(struct archive_entry *); __LA_DECL const char *archive_entry_gname(struct archive_entry *); __LA_DECL const char *archive_entry_gname_utf8(struct archive_entry *); __LA_DECL const wchar_t *archive_entry_gname_w(struct archive_entry *); @@ -274,6 +274,7 @@ __LA_DECL const char *archive_entry_pathname(struct archive_entry *); __LA_DECL const char *archive_entry_pathname_utf8(struct archive_entry *); __LA_DECL const wchar_t *archive_entry_pathname_w(struct archive_entry *); __LA_DECL __LA_MODE_T archive_entry_perm(struct archive_entry *); +__LA_DECL int archive_entry_perm_is_set(struct archive_entry *); __LA_DECL dev_t archive_entry_rdev(struct archive_entry *); __LA_DECL dev_t archive_entry_rdevmajor(struct archive_entry *); __LA_DECL dev_t archive_entry_rdevminor(struct archive_entry *); @@ -287,6 +288,7 @@ __LA_DECL const char *archive_entry_symlink_utf8(struct archive_entry *); __LA_DECL int archive_entry_symlink_type(struct archive_entry *); __LA_DECL const wchar_t *archive_entry_symlink_w(struct archive_entry *); __LA_DECL la_int64_t archive_entry_uid(struct archive_entry *); +__LA_DECL int archive_entry_uid_is_set(struct archive_entry *); __LA_DECL const char *archive_entry_uname(struct archive_entry *); __LA_DECL const char *archive_entry_uname_utf8(struct archive_entry *); __LA_DECL const wchar_t *archive_entry_uname_w(struct archive_entry *); diff --git a/contrib/libarchive/libarchive/archive_entry_copy_stat.c b/contrib/libarchive/libarchive/archive_entry_copy_stat.c index 0f3592906949..f9c2e8469b1e 100644 --- a/contrib/libarchive/libarchive/archive_entry_copy_stat.c +++ b/contrib/libarchive/libarchive/archive_entry_copy_stat.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_STAT_H #include <sys/stat.h> diff --git a/contrib/libarchive/libarchive/archive_entry_link_resolver.c b/contrib/libarchive/libarchive/archive_entry_link_resolver.c index 5a22374c0d94..6c6173430250 100644 --- a/contrib/libarchive/libarchive/archive_entry_link_resolver.c +++ b/contrib/libarchive/libarchive/archive_entry_link_resolver.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_STAT_H #include <sys/stat.h> diff --git a/contrib/libarchive/libarchive/archive_entry_locale.h b/contrib/libarchive/libarchive/archive_entry_locale.h index 803c0368bb69..1b90c57eabf2 100644 --- a/contrib/libarchive/libarchive/archive_entry_locale.h +++ b/contrib/libarchive/libarchive/archive_entry_locale.h @@ -21,8 +21,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ #ifndef ARCHIVE_ENTRY_LOCALE_H_INCLUDED diff --git a/contrib/libarchive/libarchive/archive_entry_private.h b/contrib/libarchive/libarchive/archive_entry_private.h index 52a36799940b..3423966c60f3 100644 --- a/contrib/libarchive/libarchive/archive_entry_private.h +++ b/contrib/libarchive/libarchive/archive_entry_private.h @@ -21,8 +21,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ #ifndef ARCHIVE_ENTRY_PRIVATE_H_INCLUDED @@ -147,6 +145,10 @@ struct archive_entry { #define AE_SET_SIZE 64 #define AE_SET_INO 128 #define AE_SET_DEV 256 +#define AE_SET_PERM 512 +#define AE_SET_FILETYPE 1024 +#define AE_SET_UID 2048 +#define AE_SET_GID 4096 /* * Use aes here so that we get transparent mbs<->wcs conversions. diff --git a/contrib/libarchive/libarchive/archive_entry_sparse.c b/contrib/libarchive/libarchive/archive_entry_sparse.c index 74917b37b804..b81684d18730 100644 --- a/contrib/libarchive/libarchive/archive_entry_sparse.c +++ b/contrib/libarchive/libarchive/archive_entry_sparse.c @@ -25,7 +25,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #include "archive.h" #include "archive_entry.h" diff --git a/contrib/libarchive/libarchive/archive_entry_stat.c b/contrib/libarchive/libarchive/archive_entry_stat.c index 8ae5c87e3551..c4906838ed0f 100644 --- a/contrib/libarchive/libarchive/archive_entry_stat.c +++ b/contrib/libarchive/libarchive/archive_entry_stat.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_STAT_H #include <sys/stat.h> diff --git a/contrib/libarchive/libarchive/archive_entry_strmode.c b/contrib/libarchive/libarchive/archive_entry_strmode.c index d80a7d431cb7..5faa2faeefa0 100644 --- a/contrib/libarchive/libarchive/archive_entry_strmode.c +++ b/contrib/libarchive/libarchive/archive_entry_strmode.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_STAT_H #include <sys/stat.h> diff --git a/contrib/libarchive/libarchive/archive_entry_time.3 b/contrib/libarchive/libarchive/archive_entry_time.3 index d0563eaef43a..0f1dbb025127 100644 --- a/contrib/libarchive/libarchive/archive_entry_time.3 +++ b/contrib/libarchive/libarchive/archive_entry_time.3 @@ -23,8 +23,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd February 2, 2012 .Dt ARCHIVE_ENTRY_TIME 3 .Os diff --git a/contrib/libarchive/libarchive/archive_entry_xattr.c b/contrib/libarchive/libarchive/archive_entry_xattr.c index f9e7236d0cb5..14848a5ab2c4 100644 --- a/contrib/libarchive/libarchive/archive_entry_xattr.c +++ b/contrib/libarchive/libarchive/archive_entry_xattr.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_STAT_H #include <sys/stat.h> diff --git a/contrib/libarchive/libarchive/archive_getdate.c b/contrib/libarchive/libarchive/archive_getdate.c index 20ab1b1588fe..69eebb0a079f 100644 --- a/contrib/libarchive/libarchive/archive_getdate.c +++ b/contrib/libarchive/libarchive/archive_getdate.c @@ -28,10 +28,6 @@ */ #include "archive_platform.h" -#ifdef __FreeBSD__ -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); -#endif #include <ctype.h> #include <stdio.h> diff --git a/contrib/libarchive/libarchive/archive_getdate.h b/contrib/libarchive/libarchive/archive_getdate.h index 900a8f692e98..cfd49ddf7ebb 100644 --- a/contrib/libarchive/libarchive/archive_getdate.h +++ b/contrib/libarchive/libarchive/archive_getdate.h @@ -21,8 +21,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ #ifndef ARCHIVE_GETDATE_H_INCLUDED diff --git a/contrib/libarchive/libarchive/archive_match.c b/contrib/libarchive/libarchive/archive_match.c index 04747b1f6663..fc8a4ce8127b 100644 --- a/contrib/libarchive/libarchive/archive_match.c +++ b/contrib/libarchive/libarchive/archive_match.c @@ -25,7 +25,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_ERRNO_H #include <errno.h> diff --git a/contrib/libarchive/libarchive/archive_options.c b/contrib/libarchive/libarchive/archive_options.c index 6496025a5f6b..92647c9b41c1 100644 --- a/contrib/libarchive/libarchive/archive_options.c +++ b/contrib/libarchive/libarchive/archive_options.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_ERRNO_H #include <errno.h> diff --git a/contrib/libarchive/libarchive/archive_options_private.h b/contrib/libarchive/libarchive/archive_options_private.h index 9a7f8080d2f6..3e49222dabdf 100644 --- a/contrib/libarchive/libarchive/archive_options_private.h +++ b/contrib/libarchive/libarchive/archive_options_private.h @@ -27,8 +27,6 @@ #define ARCHIVE_OPTIONS_PRIVATE_H_INCLUDED #include "archive_platform.h" -__FBSDID("$FreeBSD$"); - #include "archive_private.h" typedef int (*option_handler)(struct archive *a, diff --git a/contrib/libarchive/libarchive/archive_pack_dev.c b/contrib/libarchive/libarchive/archive_pack_dev.c index d95444d979f2..3c6209b98405 100644 --- a/contrib/libarchive/libarchive/archive_pack_dev.c +++ b/contrib/libarchive/libarchive/archive_pack_dev.c @@ -33,13 +33,6 @@ #include "archive_platform.h" -#if HAVE_SYS_CDEFS_H -#include <sys/cdefs.h> -#endif -#if !defined(lint) -__RCSID("$NetBSD$"); -#endif /* not lint */ - #ifdef HAVE_LIMITS_H #include <limits.h> #endif diff --git a/contrib/libarchive/libarchive/archive_pathmatch.c b/contrib/libarchive/libarchive/archive_pathmatch.c index 0867a268eefe..19e0889ffe55 100644 --- a/contrib/libarchive/libarchive/archive_pathmatch.c +++ b/contrib/libarchive/libarchive/archive_pathmatch.c @@ -25,7 +25,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_STRING_H #include <string.h> diff --git a/contrib/libarchive/libarchive/archive_pathmatch.h b/contrib/libarchive/libarchive/archive_pathmatch.h index 9995142921e5..3f406ff7435f 100644 --- a/contrib/libarchive/libarchive/archive_pathmatch.h +++ b/contrib/libarchive/libarchive/archive_pathmatch.h @@ -22,8 +22,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ #ifndef ARCHIVE_PATHMATCH_H diff --git a/contrib/libarchive/libarchive/archive_platform.h b/contrib/libarchive/libarchive/archive_platform.h index bfd1c387eeba..24e8b50323d0 100644 --- a/contrib/libarchive/libarchive/archive_platform.h +++ b/contrib/libarchive/libarchive/archive_platform.h @@ -21,8 +21,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ /* !!ONLY FOR USE INTERNALLY TO LIBARCHIVE!! */ @@ -87,19 +85,6 @@ * headers as required. */ -/* Get a real definition for __FBSDID or __RCSID if we can */ -#if HAVE_SYS_CDEFS_H -#include <sys/cdefs.h> -#endif - -/* If not, define them so as to avoid dangling semicolons. */ -#ifndef __FBSDID -#define __FBSDID(a) struct _undefined_hack -#endif -#ifndef __RCSID -#define __RCSID(a) struct _undefined_hack -#endif - /* Try to get standard C99-style integer type definitions. */ #if HAVE_INTTYPES_H #include <inttypes.h> diff --git a/contrib/libarchive/libarchive/archive_platform_acl.h b/contrib/libarchive/libarchive/archive_platform_acl.h index 264e6de375a1..48556f87feed 100644 --- a/contrib/libarchive/libarchive/archive_platform_acl.h +++ b/contrib/libarchive/libarchive/archive_platform_acl.h @@ -21,8 +21,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ /* !!ONLY FOR USE INTERNALLY TO LIBARCHIVE!! */ diff --git a/contrib/libarchive/libarchive/archive_platform_xattr.h b/contrib/libarchive/libarchive/archive_platform_xattr.h index ad4b90ab7b2a..2ae222f61ef8 100644 --- a/contrib/libarchive/libarchive/archive_platform_xattr.h +++ b/contrib/libarchive/libarchive/archive_platform_xattr.h @@ -21,8 +21,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ /* !!ONLY FOR USE INTERNALLY TO LIBARCHIVE!! */ diff --git a/contrib/libarchive/libarchive/archive_private.h b/contrib/libarchive/libarchive/archive_private.h index 4eaf9ddbe680..0f05169b7d25 100644 --- a/contrib/libarchive/libarchive/archive_private.h +++ b/contrib/libarchive/libarchive/archive_private.h @@ -21,8 +21,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ #ifndef ARCHIVE_PRIVATE_H_INCLUDED @@ -40,10 +38,12 @@ #include "archive_string.h" #if defined(__GNUC__) && (__GNUC__ > 2 || \ - (__GNUC__ == 2 && __GNUC_MINOR__ >= 5)) -#define __LA_DEAD __attribute__((__noreturn__)) + (__GNUC__ == 2 && __GNUC_MINOR__ >= 5)) +#define __LA_NORETURN __attribute__((__noreturn__)) +#elif defined(_MSC_VER) +#define __LA_NORETURN __declspec(noreturn) #else -#define __LA_DEAD +#define __LA_NORETURN #endif #if defined(__GNUC__) && (__GNUC__ > 2 || \ @@ -153,7 +153,7 @@ int __archive_check_magic(struct archive *, unsigned int magic, return ARCHIVE_FATAL; \ } while (0) -void __archive_errx(int retvalue, const char *msg) __LA_DEAD; +__LA_NORETURN void __archive_errx(int retvalue, const char *msg); void __archive_ensure_cloexec_flag(int fd); int __archive_mktemp(const char *tmpdir); diff --git a/contrib/libarchive/libarchive/archive_random.c b/contrib/libarchive/libarchive/archive_random.c index 301765acd830..8c48d2d3b5a9 100644 --- a/contrib/libarchive/libarchive/archive_random.c +++ b/contrib/libarchive/libarchive/archive_random.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_STDLIB_H #include <stdlib.h> @@ -93,7 +92,7 @@ archive_random(void *buf, size_t nbytes) status = BCryptOpenAlgorithmProvider(&hAlg, BCRYPT_RNG_ALGORITHM, NULL, 0); if (!BCRYPT_SUCCESS(status)) return ARCHIVE_FAILED; - status = BCryptGenRandom(hAlg, buf, nbytes, 0); + status = BCryptGenRandom(hAlg, buf, (ULONG)nbytes, 0); BCryptCloseAlgorithmProvider(hAlg, 0); if (!BCRYPT_SUCCESS(status)) return ARCHIVE_FAILED; diff --git a/contrib/libarchive/libarchive/archive_read.3 b/contrib/libarchive/libarchive/archive_read.3 index cbedd0a19129..c81c98be2759 100644 --- a/contrib/libarchive/libarchive/archive_read.3 +++ b/contrib/libarchive/libarchive/archive_read.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd February 2, 2012 .Dt ARCHIVE_READ 3 .Os diff --git a/contrib/libarchive/libarchive/archive_read.c b/contrib/libarchive/libarchive/archive_read.c index ee514d78a618..d71fc2b7cc04 100644 --- a/contrib/libarchive/libarchive/archive_read.c +++ b/contrib/libarchive/libarchive/archive_read.c @@ -32,7 +32,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_ERRNO_H #include <errno.h> diff --git a/contrib/libarchive/libarchive/archive_read_add_passphrase.3 b/contrib/libarchive/libarchive/archive_read_add_passphrase.3 index ca60d4fc62f7..c35cfeb34cd5 100644 --- a/contrib/libarchive/libarchive/archive_read_add_passphrase.3 +++ b/contrib/libarchive/libarchive/archive_read_add_passphrase.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd September 14, 2014 .Dt ARCHIVE_READ_ADD_PASSPHRASE 3 .Os diff --git a/contrib/libarchive/libarchive/archive_read_add_passphrase.c b/contrib/libarchive/libarchive/archive_read_add_passphrase.c index f0b1ab93300f..c67d1df3d1b8 100644 --- a/contrib/libarchive/libarchive/archive_read_add_passphrase.c +++ b/contrib/libarchive/libarchive/archive_read_add_passphrase.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_ERRNO_H #include <errno.h> diff --git a/contrib/libarchive/libarchive/archive_read_append_filter.c b/contrib/libarchive/libarchive/archive_read_append_filter.c index 25dc4b2a2b7f..74eead83e0e7 100644 --- a/contrib/libarchive/libarchive/archive_read_append_filter.c +++ b/contrib/libarchive/libarchive/archive_read_append_filter.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_ERRNO_H #include <errno.h> diff --git a/contrib/libarchive/libarchive/archive_read_data.3 b/contrib/libarchive/libarchive/archive_read_data.3 index 78c0c9000419..694f29264ec1 100644 --- a/contrib/libarchive/libarchive/archive_read_data.3 +++ b/contrib/libarchive/libarchive/archive_read_data.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd February 2, 2012 .Dt ARCHIVE_READ_DATA 3 .Os diff --git a/contrib/libarchive/libarchive/archive_read_data_into_fd.c b/contrib/libarchive/libarchive/archive_read_data_into_fd.c index 81a36125a4ba..8fd5e12442bc 100644 --- a/contrib/libarchive/libarchive/archive_read_data_into_fd.c +++ b/contrib/libarchive/libarchive/archive_read_data_into_fd.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> diff --git a/contrib/libarchive/libarchive/archive_read_disk.3 b/contrib/libarchive/libarchive/archive_read_disk.3 index 8b568d7b0568..7cde3c232713 100644 --- a/contrib/libarchive/libarchive/archive_read_disk.3 +++ b/contrib/libarchive/libarchive/archive_read_disk.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd April 3, 2017 .Dt ARCHIVE_READ_DISK 3 .Os diff --git a/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c b/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c index ab0270bc2850..d89f435554f6 100644 --- a/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c +++ b/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c @@ -26,7 +26,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD"); /* This is the tree-walking code for POSIX systems. */ #if !defined(_WIN32) || defined(__CYGWIN__) diff --git a/contrib/libarchive/libarchive/archive_read_disk_posix.c b/contrib/libarchive/libarchive/archive_read_disk_posix.c index 8d5c32f0385e..76a4fa44de72 100644 --- a/contrib/libarchive/libarchive/archive_read_disk_posix.c +++ b/contrib/libarchive/libarchive/archive_read_disk_posix.c @@ -29,7 +29,6 @@ #if !defined(_WIN32) || defined(__CYGWIN__) #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_PARAM_H #include <sys/param.h> diff --git a/contrib/libarchive/libarchive/archive_read_disk_private.h b/contrib/libarchive/libarchive/archive_read_disk_private.h index 15c2864c58ce..cf8da99a029b 100644 --- a/contrib/libarchive/libarchive/archive_read_disk_private.h +++ b/contrib/libarchive/libarchive/archive_read_disk_private.h @@ -22,8 +22,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ #ifndef ARCHIVE_READ_DISK_PRIVATE_H_INCLUDED diff --git a/contrib/libarchive/libarchive/archive_read_disk_set_standard_lookup.c b/contrib/libarchive/libarchive/archive_read_disk_set_standard_lookup.c index 719196985878..3512d343f65b 100644 --- a/contrib/libarchive/libarchive/archive_read_disk_set_standard_lookup.c +++ b/contrib/libarchive/libarchive/archive_read_disk_set_standard_lookup.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> diff --git a/contrib/libarchive/libarchive/archive_read_extract.3 b/contrib/libarchive/libarchive/archive_read_extract.3 index 858f39742553..f3feb5ad551b 100644 --- a/contrib/libarchive/libarchive/archive_read_extract.3 +++ b/contrib/libarchive/libarchive/archive_read_extract.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd February 2, 2012 .Dt ARCHIVE_READ_EXTRACT 3 .Os diff --git a/contrib/libarchive/libarchive/archive_read_extract.c b/contrib/libarchive/libarchive/archive_read_extract.c index 7388b7bc1661..d2159c64cd83 100644 --- a/contrib/libarchive/libarchive/archive_read_extract.c +++ b/contrib/libarchive/libarchive/archive_read_extract.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_ERRNO_H #include <errno.h> diff --git a/contrib/libarchive/libarchive/archive_read_extract2.c b/contrib/libarchive/libarchive/archive_read_extract2.c index 4febd8ce056f..e11cac1590e9 100644 --- a/contrib/libarchive/libarchive/archive_read_extract2.c +++ b/contrib/libarchive/libarchive/archive_read_extract2.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_extract.c,v 1.61 2008/05/26 17:00:22 kientzle Exp $"); #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> diff --git a/contrib/libarchive/libarchive/archive_read_filter.3 b/contrib/libarchive/libarchive/archive_read_filter.3 index 4f5c3518a6ca..72ff240fd393 100644 --- a/contrib/libarchive/libarchive/archive_read_filter.3 +++ b/contrib/libarchive/libarchive/archive_read_filter.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd June 9, 2020 .Dt ARCHIVE_READ_FILTER 3 .Os diff --git a/contrib/libarchive/libarchive/archive_read_format.3 b/contrib/libarchive/libarchive/archive_read_format.3 index f3804ce3796a..990293c83131 100644 --- a/contrib/libarchive/libarchive/archive_read_format.3 +++ b/contrib/libarchive/libarchive/archive_read_format.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd February 2, 2012 .Dt ARCHIVE_READ_FORMAT 3 .Os diff --git a/contrib/libarchive/libarchive/archive_read_free.3 b/contrib/libarchive/libarchive/archive_read_free.3 index 8371c3a0c60c..7dc121fcaea3 100644 --- a/contrib/libarchive/libarchive/archive_read_free.3 +++ b/contrib/libarchive/libarchive/archive_read_free.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd February 2, 2012 .Dt ARCHIVE_READ_FREE 3 .Os diff --git a/contrib/libarchive/libarchive/archive_read_header.3 b/contrib/libarchive/libarchive/archive_read_header.3 index 1e97f3a27507..024dc41da831 100644 --- a/contrib/libarchive/libarchive/archive_read_header.3 +++ b/contrib/libarchive/libarchive/archive_read_header.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd February 2, 2012 .Dt ARCHIVE_READ_HEADER 3 .Os diff --git a/contrib/libarchive/libarchive/archive_read_new.3 b/contrib/libarchive/libarchive/archive_read_new.3 index 8bb6b848b06a..c2b5cddef098 100644 --- a/contrib/libarchive/libarchive/archive_read_new.3 +++ b/contrib/libarchive/libarchive/archive_read_new.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd February 2, 2012 .Dt ARCHIVE_READ_NEW 3 .Os diff --git a/contrib/libarchive/libarchive/archive_read_open.3 b/contrib/libarchive/libarchive/archive_read_open.3 index f67677823bd0..081b7114bea6 100644 --- a/contrib/libarchive/libarchive/archive_read_open.3 +++ b/contrib/libarchive/libarchive/archive_read_open.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd February 2, 2012 .Dt ARCHIVE_READ_OPEN 3 .Os diff --git a/contrib/libarchive/libarchive/archive_read_open_fd.c b/contrib/libarchive/libarchive/archive_read_open_fd.c index c1094b4e4b80..3ee2423d300e 100644 --- a/contrib/libarchive/libarchive/archive_read_open_fd.c +++ b/contrib/libarchive/libarchive/archive_read_open_fd.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_STAT_H #include <sys/stat.h> diff --git a/contrib/libarchive/libarchive/archive_read_open_file.c b/contrib/libarchive/libarchive/archive_read_open_file.c index c9dcbb1cfec1..dcf1d4698569 100644 --- a/contrib/libarchive/libarchive/archive_read_open_file.c +++ b/contrib/libarchive/libarchive/archive_read_open_file.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_STAT_H #include <sys/stat.h> diff --git a/contrib/libarchive/libarchive/archive_read_open_filename.c b/contrib/libarchive/libarchive/archive_read_open_filename.c index f5bf8934eea2..dd2e16022844 100644 --- a/contrib/libarchive/libarchive/archive_read_open_filename.c +++ b/contrib/libarchive/libarchive/archive_read_open_filename.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_IOCTL_H #include <sys/ioctl.h> @@ -155,55 +154,73 @@ no_memory: return (ARCHIVE_FATAL); } +/* + * This function is an implementation detail of archive_read_open_filename_w, + * which is exposed as a separate API on Windows. + */ +#if !defined(_WIN32) || defined(__CYGWIN__) +static +#endif int -archive_read_open_filename_w(struct archive *a, const wchar_t *wfilename, +archive_read_open_filenames_w(struct archive *a, const wchar_t **wfilenames, size_t block_size) { - struct read_file_data *mine = (struct read_file_data *)calloc(1, - sizeof(*mine) + wcslen(wfilename) * sizeof(wchar_t)); - if (!mine) + struct read_file_data *mine; + const wchar_t *wfilename = NULL; + if (wfilenames) + wfilename = *(wfilenames++); + + archive_clear_error(a); + do { - archive_set_error(a, ENOMEM, "No memory"); - return (ARCHIVE_FATAL); - } - mine->fd = -1; - mine->block_size = block_size; + if (wfilename == NULL) + wfilename = L""; + mine = (struct read_file_data *)calloc(1, + sizeof(*mine) + wcslen(wfilename) * sizeof(wchar_t)); + if (mine == NULL) + goto no_memory; + mine->block_size = block_size; + mine->fd = -1; - if (wfilename == NULL || wfilename[0] == L'\0') { - mine->filename_type = FNT_STDIN; - } else { + if (wfilename == NULL || wfilename[0] == L'\0') { + mine->filename_type = FNT_STDIN; + } else { #if defined(_WIN32) && !defined(__CYGWIN__) - mine->filename_type = FNT_WCS; - wcscpy(mine->filename.w, wfilename); + mine->filename_type = FNT_WCS; + wcscpy(mine->filename.w, wfilename); #else - /* - * POSIX system does not support a wchar_t interface for - * open() system call, so we have to translate a wchar_t - * filename to multi-byte one and use it. - */ - struct archive_string fn; - - archive_string_init(&fn); - if (archive_string_append_from_wcs(&fn, wfilename, - wcslen(wfilename)) != 0) { - if (errno == ENOMEM) - archive_set_error(a, errno, - "Can't allocate memory"); - else - archive_set_error(a, EINVAL, - "Failed to convert a wide-character" - " filename to a multi-byte filename"); + /* + * POSIX system does not support a wchar_t interface for + * open() system call, so we have to translate a wchar_t + * filename to multi-byte one and use it. + */ + struct archive_string fn; + + archive_string_init(&fn); + if (archive_string_append_from_wcs(&fn, wfilename, + wcslen(wfilename)) != 0) { + if (errno == ENOMEM) + archive_set_error(a, errno, + "Can't allocate memory"); + else + archive_set_error(a, EINVAL, + "Failed to convert a wide-character" + " filename to a multi-byte filename"); + archive_string_free(&fn); + free(mine); + return (ARCHIVE_FATAL); + } + mine->filename_type = FNT_MBS; + strcpy(mine->filename.m, fn.s); archive_string_free(&fn); - free(mine); - return (ARCHIVE_FATAL); - } - mine->filename_type = FNT_MBS; - strcpy(mine->filename.m, fn.s); - archive_string_free(&fn); #endif - } - if (archive_read_append_callback_data(a, mine) != (ARCHIVE_OK)) - return (ARCHIVE_FATAL); + } + if (archive_read_append_callback_data(a, mine) != (ARCHIVE_OK)) + return (ARCHIVE_FATAL); + if (wfilenames == NULL) + break; + wfilename = *(wfilenames++); + } while (wfilename != NULL && wfilename[0] != '\0'); archive_read_set_open_callback(a, file_open); archive_read_set_read_callback(a, file_read); archive_read_set_skip_callback(a, file_skip); @@ -212,6 +229,19 @@ archive_read_open_filename_w(struct archive *a, const wchar_t *wfilename, archive_read_set_seek_callback(a, file_seek); return (archive_read_open1(a)); +no_memory: + archive_set_error(a, ENOMEM, "No memory"); + return (ARCHIVE_FATAL); +} + +int +archive_read_open_filename_w(struct archive *a, const wchar_t *wfilename, + size_t block_size) +{ + const wchar_t *wfilenames[2]; + wfilenames[0] = wfilename; + wfilenames[1] = NULL; + return archive_read_open_filenames_w(a, wfilenames, block_size); } static int diff --git a/contrib/libarchive/libarchive/archive_read_open_memory.c b/contrib/libarchive/libarchive/archive_read_open_memory.c index 840b924a4dba..a057ce643890 100644 --- a/contrib/libarchive/libarchive/archive_read_open_memory.c +++ b/contrib/libarchive/libarchive/archive_read_open_memory.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #include <errno.h> #include <stdlib.h> diff --git a/contrib/libarchive/libarchive/archive_read_private.h b/contrib/libarchive/libarchive/archive_read_private.h index 906d3dae7aa2..0c374f487eba 100644 --- a/contrib/libarchive/libarchive/archive_read_private.h +++ b/contrib/libarchive/libarchive/archive_read_private.h @@ -21,8 +21,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ #ifndef ARCHIVE_READ_PRIVATE_H_INCLUDED diff --git a/contrib/libarchive/libarchive/archive_read_set_format.c b/contrib/libarchive/libarchive/archive_read_set_format.c index 796dcdcced11..c74361b20c13 100644 --- a/contrib/libarchive/libarchive/archive_read_set_format.c +++ b/contrib/libarchive/libarchive/archive_read_set_format.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_ERRNO_H #include <errno.h> diff --git a/contrib/libarchive/libarchive/archive_read_set_options.3 b/contrib/libarchive/libarchive/archive_read_set_options.3 index 162b79da48f4..ef18dfaa271a 100644 --- a/contrib/libarchive/libarchive/archive_read_set_options.3 +++ b/contrib/libarchive/libarchive/archive_read_set_options.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd January 31, 2020 .Dt ARCHIVE_READ_OPTIONS 3 .Os diff --git a/contrib/libarchive/libarchive/archive_read_set_options.c b/contrib/libarchive/libarchive/archive_read_set_options.c index 2bd9b811eaf4..c0a4b420734e 100644 --- a/contrib/libarchive/libarchive/archive_read_set_options.c +++ b/contrib/libarchive/libarchive/archive_read_set_options.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #include "archive_read_private.h" #include "archive_options_private.h" diff --git a/contrib/libarchive/libarchive/archive_read_support_filter_all.c b/contrib/libarchive/libarchive/archive_read_support_filter_all.c index edb508c1dfd8..cb46d120d102 100644 --- a/contrib/libarchive/libarchive/archive_read_support_filter_all.c +++ b/contrib/libarchive/libarchive/archive_read_support_filter_all.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #include "archive.h" #include "archive_private.h" diff --git a/contrib/libarchive/libarchive/archive_read_support_filter_by_code.c b/contrib/libarchive/libarchive/archive_read_support_filter_by_code.c index 94c4af695f4d..ce50d8cdf884 100644 --- a/contrib/libarchive/libarchive/archive_read_support_filter_by_code.c +++ b/contrib/libarchive/libarchive/archive_read_support_filter_by_code.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #include "archive.h" #include "archive_private.h" diff --git a/contrib/libarchive/libarchive/archive_read_support_filter_bzip2.c b/contrib/libarchive/libarchive/archive_read_support_filter_bzip2.c index 9158e668eb42..0392d450a203 100644 --- a/contrib/libarchive/libarchive/archive_read_support_filter_bzip2.c +++ b/contrib/libarchive/libarchive/archive_read_support_filter_bzip2.c @@ -25,8 +25,6 @@ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); - #ifdef HAVE_ERRNO_H #include <errno.h> #endif @@ -192,7 +190,7 @@ bzip2_reader_init(struct archive_read_filter *self) self->code = ARCHIVE_FILTER_BZIP2; self->name = "bzip2"; - state = (struct private_data *)calloc(sizeof(*state), 1); + state = (struct private_data *)calloc(1, sizeof(*state)); out_block = (unsigned char *)malloc(out_block_size); if (state == NULL || out_block == NULL) { archive_set_error(&self->archive->archive, ENOMEM, diff --git a/contrib/libarchive/libarchive/archive_read_support_filter_compress.c b/contrib/libarchive/libarchive/archive_read_support_filter_compress.c index 15fa72729811..36a3dbdea23c 100644 --- a/contrib/libarchive/libarchive/archive_read_support_filter_compress.c +++ b/contrib/libarchive/libarchive/archive_read_support_filter_compress.c @@ -64,7 +64,6 @@ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_ERRNO_H #include <errno.h> @@ -218,7 +217,7 @@ compress_bidder_init(struct archive_read_filter *self) self->code = ARCHIVE_FILTER_COMPRESS; self->name = "compress (.Z)"; - state = (struct private_data *)calloc(sizeof(*state), 1); + state = (struct private_data *)calloc(1, sizeof(*state)); out_block = malloc(out_block_size); if (state == NULL || out_block == NULL) { free(out_block); diff --git a/contrib/libarchive/libarchive/archive_read_support_filter_grzip.c b/contrib/libarchive/libarchive/archive_read_support_filter_grzip.c index d4d1737cd97e..15b6757cb90c 100644 --- a/contrib/libarchive/libarchive/archive_read_support_filter_grzip.c +++ b/contrib/libarchive/libarchive/archive_read_support_filter_grzip.c @@ -25,9 +25,6 @@ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); - - #ifdef HAVE_ERRNO_H #include <errno.h> #endif diff --git a/contrib/libarchive/libarchive/archive_read_support_filter_gzip.c b/contrib/libarchive/libarchive/archive_read_support_filter_gzip.c index 4135a6361802..152ea9bdbd7c 100644 --- a/contrib/libarchive/libarchive/archive_read_support_filter_gzip.c +++ b/contrib/libarchive/libarchive/archive_read_support_filter_gzip.c @@ -25,9 +25,6 @@ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); - - #ifdef HAVE_ERRNO_H #include <errno.h> #endif @@ -310,7 +307,7 @@ gzip_bidder_init(struct archive_read_filter *self) self->code = ARCHIVE_FILTER_GZIP; self->name = "gzip"; - state = (struct private_data *)calloc(sizeof(*state), 1); + state = (struct private_data *)calloc(1, sizeof(*state)); out_block = (unsigned char *)malloc(out_block_size); if (state == NULL || out_block == NULL) { free(out_block); diff --git a/contrib/libarchive/libarchive/archive_read_support_filter_lrzip.c b/contrib/libarchive/libarchive/archive_read_support_filter_lrzip.c index a2389894f1d8..a562d538ed81 100644 --- a/contrib/libarchive/libarchive/archive_read_support_filter_lrzip.c +++ b/contrib/libarchive/libarchive/archive_read_support_filter_lrzip.c @@ -25,9 +25,6 @@ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); - - #ifdef HAVE_ERRNO_H #include <errno.h> #endif diff --git a/contrib/libarchive/libarchive/archive_read_support_filter_lz4.c b/contrib/libarchive/libarchive/archive_read_support_filter_lz4.c index d0fc1a83e462..bccf4fb8f82d 100644 --- a/contrib/libarchive/libarchive/archive_read_support_filter_lz4.c +++ b/contrib/libarchive/libarchive/archive_read_support_filter_lz4.c @@ -25,8 +25,6 @@ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); - #ifdef HAVE_ERRNO_H #include <errno.h> #endif @@ -225,7 +223,7 @@ lz4_reader_init(struct archive_read_filter *self) self->code = ARCHIVE_FILTER_LZ4; self->name = "lz4"; - state = (struct private_data *)calloc(sizeof(*state), 1); + state = (struct private_data *)calloc(1, sizeof(*state)); if (state == NULL) { archive_set_error(&self->archive->archive, ENOMEM, "Can't allocate data for lz4 decompression"); @@ -449,8 +447,8 @@ lz4_filter_read_descriptor(struct archive_read_filter *self) chsum = __archive_xxhash.XXH32(read_buf, (int)descriptor_bytes -1, 0); chsum = (chsum >> 8) & 0xff; chsum_verifier = read_buf[descriptor_bytes-1] & 0xff; - if (chsum != chsum_verifier) #ifndef DONT_FAIL_ON_CRC_ERROR + if (chsum != chsum_verifier) goto malformed_error; #endif @@ -522,8 +520,8 @@ lz4_filter_read_data_block(struct archive_read_filter *self, const void **p) read_buf + 4, (int)compressed_size, 0); unsigned int chsum_block = archive_le32dec(read_buf + 4 + compressed_size); - if (chsum != chsum_block) #ifndef DONT_FAIL_ON_CRC_ERROR + if (chsum != chsum_block) goto malformed_error; #endif } diff --git a/contrib/libarchive/libarchive/archive_read_support_filter_lzop.c b/contrib/libarchive/libarchive/archive_read_support_filter_lzop.c index 4ebdd3bf3eb1..e971063dc68f 100644 --- a/contrib/libarchive/libarchive/archive_read_support_filter_lzop.c +++ b/contrib/libarchive/libarchive/archive_read_support_filter_lzop.c @@ -26,8 +26,6 @@ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); - #ifdef HAVE_UNISTD_H #include <unistd.h> #endif @@ -187,7 +185,7 @@ lzop_bidder_init(struct archive_read_filter *self) self->code = ARCHIVE_FILTER_LZOP; self->name = "lzop"; - state = (struct read_lzop *)calloc(sizeof(*state), 1); + state = (struct read_lzop *)calloc(1, sizeof(*state)); if (state == NULL) { archive_set_error(&self->archive->archive, ENOMEM, "Can't allocate data for lzop decompression"); @@ -282,8 +280,8 @@ consume_header(struct archive_read_filter *self) checksum = crc32(crc32(0, NULL, 0), p, len); else checksum = adler32(adler32(0, NULL, 0), p, len); - if (archive_be32dec(p + len) != checksum) #ifndef DONT_FAIL_ON_CRC_ERROR + if (archive_be32dec(p + len) != checksum) goto corrupted; #endif __archive_read_filter_consume(self->upstream, len + 4); diff --git a/contrib/libarchive/libarchive/archive_read_support_filter_none.c b/contrib/libarchive/libarchive/archive_read_support_filter_none.c index 95e5cfdb15dc..9eb8e54ae960 100644 --- a/contrib/libarchive/libarchive/archive_read_support_filter_none.c +++ b/contrib/libarchive/libarchive/archive_read_support_filter_none.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #include "archive.h" #include "archive_private.h" diff --git a/contrib/libarchive/libarchive/archive_read_support_filter_program.c b/contrib/libarchive/libarchive/archive_read_support_filter_program.c index 885b2c2056e6..0482c57c18eb 100644 --- a/contrib/libarchive/libarchive/archive_read_support_filter_program.c +++ b/contrib/libarchive/libarchive/archive_read_support_filter_program.c @@ -25,7 +25,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_WAIT_H # include <sys/wait.h> diff --git a/contrib/libarchive/libarchive/archive_read_support_filter_rpm.c b/contrib/libarchive/libarchive/archive_read_support_filter_rpm.c index 67a979cd78f6..87e9f2ec1939 100644 --- a/contrib/libarchive/libarchive/archive_read_support_filter_rpm.c +++ b/contrib/libarchive/libarchive/archive_read_support_filter_rpm.c @@ -141,7 +141,7 @@ rpm_bidder_init(struct archive_read_filter *self) self->code = ARCHIVE_FILTER_RPM; self->name = "rpm"; - rpm = (struct rpm *)calloc(sizeof(*rpm), 1); + rpm = (struct rpm *)calloc(1, sizeof(*rpm)); if (rpm == NULL) { archive_set_error(&self->archive->archive, ENOMEM, "Can't allocate data for rpm"); diff --git a/contrib/libarchive/libarchive/archive_read_support_filter_uu.c b/contrib/libarchive/libarchive/archive_read_support_filter_uu.c index 209b2a1593a0..689ceb8f8760 100644 --- a/contrib/libarchive/libarchive/archive_read_support_filter_uu.c +++ b/contrib/libarchive/libarchive/archive_read_support_filter_uu.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_ERRNO_H #include <errno.h> @@ -37,6 +36,7 @@ __FBSDID("$FreeBSD$"); #endif #include "archive.h" +#include "archive_entry.h" #include "archive_private.h" #include "archive_read_private.h" @@ -57,12 +57,17 @@ struct uudecode { #define ST_UUEND 2 #define ST_READ_BASE64 3 #define ST_IGNORE 4 + mode_t mode; + int mode_set; + char *name; }; static int uudecode_bidder_bid(struct archive_read_filter_bidder *, struct archive_read_filter *filter); static int uudecode_bidder_init(struct archive_read_filter *); +static int uudecode_read_header(struct archive_read_filter *, + struct archive_entry *entry); static ssize_t uudecode_filter_read(struct archive_read_filter *, const void **); static int uudecode_filter_close(struct archive_read_filter *); @@ -355,6 +360,7 @@ static const struct archive_read_filter_vtable uudecode_reader_vtable = { .read = uudecode_filter_read, .close = uudecode_filter_close, + .read_header = uudecode_read_header }; static int @@ -367,7 +373,7 @@ uudecode_bidder_init(struct archive_read_filter *self) self->code = ARCHIVE_FILTER_UU; self->name = "uu"; - uudecode = (struct uudecode *)calloc(sizeof(*uudecode), 1); + uudecode = (struct uudecode *)calloc(1, sizeof(*uudecode)); out_buff = malloc(OUT_BUFF_SIZE); in_buff = malloc(IN_BUFF_SIZE); if (uudecode == NULL || out_buff == NULL || in_buff == NULL) { @@ -385,6 +391,8 @@ uudecode_bidder_init(struct archive_read_filter *self) uudecode->in_allocated = IN_BUFF_SIZE; uudecode->out_buff = out_buff; uudecode->state = ST_FIND_HEAD; + uudecode->mode_set = 0; + uudecode->name = NULL; self->vtable = &uudecode_reader_vtable; return (ARCHIVE_OK); @@ -430,6 +438,22 @@ ensure_in_buff_size(struct archive_read_filter *self, return (ARCHIVE_OK); } +static int +uudecode_read_header(struct archive_read_filter *self, struct archive_entry *entry) +{ + + struct uudecode *uudecode; + uudecode = (struct uudecode *)self->data; + + if (uudecode->mode_set != 0) + archive_entry_set_mode(entry, S_IFREG | uudecode->mode); + + if (uudecode->name != NULL) + archive_entry_set_pathname(entry, uudecode->name); + + return (ARCHIVE_OK); +} + static ssize_t uudecode_filter_read(struct archive_read_filter *self, const void **buff) { @@ -439,7 +463,7 @@ uudecode_filter_read(struct archive_read_filter *self, const void **buff) ssize_t avail_in, ravail; ssize_t used; ssize_t total; - ssize_t len, llen, nl; + ssize_t len, llen, nl, namelen; uudecode = (struct uudecode *)self->data; @@ -544,6 +568,28 @@ read_more: uudecode->state = ST_READ_UU; else uudecode->state = ST_READ_BASE64; + uudecode->mode = (mode_t)( + ((int)(b[l] - '0') * 64) + + ((int)(b[l+1] - '0') * 8) + + (int)(b[l+2] - '0')); + uudecode->mode_set = 1; + namelen = len - nl - 4 - l; + if (namelen > 1) { + if (uudecode->name != NULL) + free(uudecode->name); + uudecode->name = malloc(namelen + 1); + if (uudecode->name == NULL) { + archive_set_error( + &self->archive->archive, + ENOMEM, + "Can't allocate data for uudecode"); + return (ARCHIVE_FATAL); + } + strncpy(uudecode->name, + (const char *)(b + l + 4), + namelen); + uudecode->name[namelen] = '\0'; + } } break; case ST_READ_UU: @@ -676,6 +722,7 @@ uudecode_filter_close(struct archive_read_filter *self) uudecode = (struct uudecode *)self->data; free(uudecode->in_buff); free(uudecode->out_buff); + free(uudecode->name); free(uudecode); return (ARCHIVE_OK); diff --git a/contrib/libarchive/libarchive/archive_read_support_filter_xz.c b/contrib/libarchive/libarchive/archive_read_support_filter_xz.c index e313d39c0cf2..e55fb00edb34 100644 --- a/contrib/libarchive/libarchive/archive_read_support_filter_xz.c +++ b/contrib/libarchive/libarchive/archive_read_support_filter_xz.c @@ -26,8 +26,6 @@ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); - #ifdef HAVE_ERRNO_H #include <errno.h> #endif @@ -478,7 +476,7 @@ xz_lzma_bidder_init(struct archive_read_filter *self) struct private_data *state; int ret; - state = (struct private_data *)calloc(sizeof(*state), 1); + state = (struct private_data *)calloc(1, sizeof(*state)); out_block = (unsigned char *)malloc(out_block_size); if (state == NULL || out_block == NULL) { archive_set_error(&self->archive->archive, ENOMEM, @@ -656,13 +654,16 @@ xz_filter_read(struct archive_read_filter *self, const void **p) struct private_data *state; size_t decompressed; ssize_t avail_in; + int64_t member_in; int ret; state = (struct private_data *)self->data; + redo: /* Empty our output buffer. */ state->stream.next_out = state->out_block; state->stream.avail_out = state->out_block_size; + member_in = state->member_in; /* Try to fill the output buffer. */ while (state->stream.avail_out > 0 && !state->eof) { @@ -707,9 +708,18 @@ xz_filter_read(struct archive_read_filter *self, const void **p) decompressed = state->stream.next_out - state->out_block; state->total_out += decompressed; state->member_out += decompressed; - if (decompressed == 0) + if (decompressed == 0) { + if (member_in != state->member_in && + self->code == ARCHIVE_FILTER_LZIP && + state->eof) { + ret = lzip_tail(self); + if (ret != ARCHIVE_OK) + return (ret); + if (!state->eof) + goto redo; + } *p = NULL; - else { + } else { *p = state->out_block; if (self->code == ARCHIVE_FILTER_LZIP) { state->crc32 = lzma_crc32(state->out_block, diff --git a/contrib/libarchive/libarchive/archive_read_support_filter_zstd.c b/contrib/libarchive/libarchive/archive_read_support_filter_zstd.c index 1959b5ac3991..f7326d2430d3 100644 --- a/contrib/libarchive/libarchive/archive_read_support_filter_zstd.c +++ b/contrib/libarchive/libarchive/archive_read_support_filter_zstd.c @@ -25,8 +25,6 @@ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); - #ifdef HAVE_ERRNO_H #include <errno.h> #endif @@ -177,7 +175,7 @@ zstd_bidder_init(struct archive_read_filter *self) self->code = ARCHIVE_FILTER_ZSTD; self->name = "zstd"; - state = (struct private_data *)calloc(sizeof(*state), 1); + state = (struct private_data *)calloc(1, sizeof(*state)); out_block = (unsigned char *)malloc(out_block_size); dstream = ZSTD_createDStream(); diff --git a/contrib/libarchive/libarchive/archive_read_support_format_7zip.c b/contrib/libarchive/libarchive/archive_read_support_format_7zip.c index b171bea01a2f..92495e628f9a 100644 --- a/contrib/libarchive/libarchive/archive_read_support_format_7zip.c +++ b/contrib/libarchive/libarchive/archive_read_support_format_7zip.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_ERRNO_H #include <errno.h> @@ -116,6 +115,30 @@ __FBSDID("$FreeBSD$"); #define kEncodedHeader 0x17 #define kDummy 0x19 +// Check that some windows file attribute constants are defined. +// Reference: https://learn.microsoft.com/en-us/windows/win32/fileio/file-attribute-constants +#ifndef FILE_ATTRIBUTE_READONLY +#define FILE_ATTRIBUTE_READONLY 0x00000001 +#endif + +#ifndef FILE_ATTRIBUTE_HIDDEN +#define FILE_ATTRIBUTE_HIDDEN 0x00000002 +#endif + +#ifndef FILE_ATTRIBUTE_SYSTEM +#define FILE_ATTRIBUTE_SYSTEM 0x00000004 +#endif + +#ifndef FILE_ATTRIBUTE_DIRECTORY +#define FILE_ATTRIBUTE_DIRECTORY 0x00000010 +#endif + +// This value is defined in 7zip with the comment "trick for Unix". +// +// 7z archives created on unix have this bit set in the high 16 bits of +// the attr field along with the unix permissions. +#define FILE_ATTRIBUTE_UNIX_EXTENSION 0x8000 + struct _7z_digests { unsigned char *defineds; uint32_t *digests; @@ -739,6 +762,37 @@ archive_read_format_7zip_read_header(struct archive_read *a, archive_entry_set_size(entry, 0); } + // These attributes are supported by the windows implementation of archive_write_disk. + const int supported_attrs = FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM; + + if (zip_entry->attr & supported_attrs) { + char *fflags_text, *ptr; + /* allocate for "rdonly,hidden,system," */ + fflags_text = malloc(22 * sizeof(char)); + if (fflags_text != NULL) { + ptr = fflags_text; + if (zip_entry->attr & FILE_ATTRIBUTE_READONLY) { + strcpy(ptr, "rdonly,"); + ptr = ptr + 7; + } + if (zip_entry->attr & FILE_ATTRIBUTE_HIDDEN) { + strcpy(ptr, "hidden,"); + ptr = ptr + 7; + } + if (zip_entry->attr & FILE_ATTRIBUTE_SYSTEM) { + strcpy(ptr, "system,"); + ptr = ptr + 7; + } + if (ptr > fflags_text) { + /* Delete trailing comma */ + *(ptr - 1) = '\0'; + archive_entry_copy_fflags_text(entry, + fflags_text); + } + free(fflags_text); + } + } + /* If there's no body, force read_data() to return EOF immediately. */ if (zip->entry_bytes_remaining < 1) zip->end_of_entry = 1; @@ -1333,6 +1387,7 @@ init_decompression(struct archive_read *a, struct _7zip *zip, case _7Z_IA64: case _7Z_ARM: case _7Z_ARMTHUMB: + case _7Z_ARM64: case _7Z_SPARC: case _7Z_DELTA: archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, @@ -2666,6 +2721,28 @@ read_Header(struct archive_read *a, struct _7z_header_info *h, entries[i].flg |= HAS_STREAM; /* The high 16 bits of attributes is a posix file mode. */ entries[i].mode = entries[i].attr >> 16; + + if (!(entries[i].attr & FILE_ATTRIBUTE_UNIX_EXTENSION)) { + // Only windows permissions specified for this entry. Translate to + // reasonable corresponding unix permissions. + + if (entries[i].attr & FILE_ATTRIBUTE_DIRECTORY) { + if (entries[i].attr & FILE_ATTRIBUTE_READONLY) { + // Read-only directory. + entries[i].mode = AE_IFDIR | 0555; + } else { + // Read-write directory. + entries[i].mode = AE_IFDIR | 0755; + } + } else if (entries[i].attr & FILE_ATTRIBUTE_READONLY) { + // Readonly file. + entries[i].mode = AE_IFREG | 0444; + } else { + // Assume read-write file. + entries[i].mode = AE_IFREG | 0644; + } + } + if (entries[i].flg & HAS_STREAM) { if ((size_t)sindex >= si->ss.unpack_streams) return (-1); @@ -2706,7 +2783,7 @@ read_Header(struct archive_read *a, struct _7z_header_info *h, } entries[i].ssIndex = -1; } - if (entries[i].attr & 0x01) + if (entries[i].attr & FILE_ATTRIBUTE_READONLY) entries[i].mode &= ~0222;/* Read only. */ if ((entries[i].flg & HAS_STREAM) == 0 && indexInFolder == 0) { @@ -2973,8 +3050,8 @@ slurp_central_directory(struct archive_read *a, struct _7zip *zip, /* Check the EncodedHeader CRC.*/ if (r == 0 && zip->header_crc32 != next_header_crc) { - archive_set_error(&a->archive, -1, #ifndef DONT_FAIL_ON_CRC_ERROR + archive_set_error(&a->archive, -1, "Damaged 7-Zip archive"); r = -1; #endif diff --git a/contrib/libarchive/libarchive/archive_read_support_format_all.c b/contrib/libarchive/libarchive/archive_read_support_format_all.c index f8a242c6d59f..5a4e1ab675a5 100644 --- a/contrib/libarchive/libarchive/archive_read_support_format_all.c +++ b/contrib/libarchive/libarchive/archive_read_support_format_all.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #include "archive.h" #include "archive_private.h" diff --git a/contrib/libarchive/libarchive/archive_read_support_format_ar.c b/contrib/libarchive/libarchive/archive_read_support_format_ar.c index 5815ddb8d2f3..ca8effb0b0ee 100644 --- a/contrib/libarchive/libarchive/archive_read_support_format_ar.c +++ b/contrib/libarchive/libarchive/archive_read_support_format_ar.c @@ -26,7 +26,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_STAT_H #include <sys/stat.h> diff --git a/contrib/libarchive/libarchive/archive_read_support_format_by_code.c b/contrib/libarchive/libarchive/archive_read_support_format_by_code.c index 89e96f1f591f..7ed045f5688c 100644 --- a/contrib/libarchive/libarchive/archive_read_support_format_by_code.c +++ b/contrib/libarchive/libarchive/archive_read_support_format_by_code.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_ERRNO_H #include <errno.h> diff --git a/contrib/libarchive/libarchive/archive_read_support_format_cpio.c b/contrib/libarchive/libarchive/archive_read_support_format_cpio.c index 9ed003efd655..dcff23f694a7 100644 --- a/contrib/libarchive/libarchive/archive_read_support_format_cpio.c +++ b/contrib/libarchive/libarchive/archive_read_support_format_cpio.c @@ -25,7 +25,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_ERRNO_H #include <errno.h> diff --git a/contrib/libarchive/libarchive/archive_read_support_format_empty.c b/contrib/libarchive/libarchive/archive_read_support_format_empty.c index 727b988ac9c0..0dccd9d9baba 100644 --- a/contrib/libarchive/libarchive/archive_read_support_format_empty.c +++ b/contrib/libarchive/libarchive/archive_read_support_format_empty.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #include "archive.h" #include "archive_entry.h" diff --git a/contrib/libarchive/libarchive/archive_read_support_format_iso9660.c b/contrib/libarchive/libarchive/archive_read_support_format_iso9660.c index b3f537bec800..db5cdb67f1cf 100644 --- a/contrib/libarchive/libarchive/archive_read_support_format_iso9660.c +++ b/contrib/libarchive/libarchive/archive_read_support_format_iso9660.c @@ -26,7 +26,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_ERRNO_H #include <errno.h> @@ -3015,6 +3014,11 @@ heap_add_entry(struct archive_read *a, struct heap_queue *heap, uint64_t file_key, parent_key; int hole, parent; + /* Reserve 16 bits for possible key collisions (needed for linked items) */ + /* For ISO files with more than 65535 entries, reordering will still occur */ + key <<= 16; + key += heap->used & 0xFFFF; + /* Expand our pending files list as necessary. */ if (heap->used >= heap->allocated) { struct file_info **new_pending_files; diff --git a/contrib/libarchive/libarchive/archive_read_support_format_mtree.c b/contrib/libarchive/libarchive/archive_read_support_format_mtree.c index 8fa1ede7adff..630cff6e3999 100644 --- a/contrib/libarchive/libarchive/archive_read_support_format_mtree.c +++ b/contrib/libarchive/libarchive/archive_read_support_format_mtree.c @@ -26,7 +26,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_STAT_H #include <sys/stat.h> diff --git a/contrib/libarchive/libarchive/archive_read_support_format_rar.c b/contrib/libarchive/libarchive/archive_read_support_format_rar.c index 16b6e6eed8df..99a11d170074 100644 --- a/contrib/libarchive/libarchive/archive_read_support_format_rar.c +++ b/contrib/libarchive/libarchive/archive_read_support_format_rar.c @@ -734,7 +734,7 @@ archive_read_support_format_rar(struct archive *_a) archive_check_magic(_a, ARCHIVE_READ_MAGIC, ARCHIVE_STATE_NEW, "archive_read_support_format_rar"); - rar = (struct rar *)calloc(sizeof(*rar), 1); + rar = (struct rar *)calloc(1, sizeof(*rar)); if (rar == NULL) { archive_set_error(&a->archive, ENOMEM, "Can't allocate rar data"); diff --git a/contrib/libarchive/libarchive/archive_read_support_format_rar5.c b/contrib/libarchive/libarchive/archive_read_support_format_rar5.c index 1f9099439412..e8846a5b0d0d 100644 --- a/contrib/libarchive/libarchive/archive_read_support_format_rar5.c +++ b/contrib/libarchive/libarchive/archive_read_support_format_rar5.c @@ -495,6 +495,11 @@ uint8_t bf_is_table_present(const struct compressed_block_header* hdr) { return (hdr->block_flags_u8 >> 7) & 1; } +static inline +uint8_t bf_is_last_block(const struct compressed_block_header* hdr) { + return (hdr->block_flags_u8 >> 6) & 1; +} + static inline struct rar5* get_context(struct archive_read* a) { return (struct rar5*) a->format->data; } @@ -3757,7 +3762,12 @@ static int do_uncompress_file(struct archive_read* a) { if(rar->cstate.last_write_ptr == rar->cstate.write_ptr) { /* The block didn't generate any new data, - * so just process a new block. */ + * so just process a new block if this one + * wasn't the last block in the file. */ + if (bf_is_last_block(&rar->last_block_hdr)) { + return ARCHIVE_EOF; + } + continue; } diff --git a/contrib/libarchive/libarchive/archive_read_support_format_raw.c b/contrib/libarchive/libarchive/archive_read_support_format_raw.c index b6328a952611..efdbf276baf7 100644 --- a/contrib/libarchive/libarchive/archive_read_support_format_raw.c +++ b/contrib/libarchive/libarchive/archive_read_support_format_raw.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_ERRNO_H #include <errno.h> diff --git a/contrib/libarchive/libarchive/archive_read_support_format_tar.c b/contrib/libarchive/libarchive/archive_read_support_format_tar.c index 892d9c7d26c9..db36b9e07767 100644 --- a/contrib/libarchive/libarchive/archive_read_support_format_tar.c +++ b/contrib/libarchive/libarchive/archive_read_support_format_tar.c @@ -26,7 +26,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_ERRNO_H #include <errno.h> diff --git a/contrib/libarchive/libarchive/archive_read_support_format_warc.c b/contrib/libarchive/libarchive/archive_read_support_format_warc.c index 61ab29ea145d..c49d44eba5e5 100644 --- a/contrib/libarchive/libarchive/archive_read_support_format_warc.c +++ b/contrib/libarchive/libarchive/archive_read_support_format_warc.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); /** * WARC is standardised by ISO TC46/SC4/WG12 and currently available as diff --git a/contrib/libarchive/libarchive/archive_read_support_format_xar.c b/contrib/libarchive/libarchive/archive_read_support_format_xar.c index ec9cb1981f3d..fd63594373cb 100644 --- a/contrib/libarchive/libarchive/archive_read_support_format_xar.c +++ b/contrib/libarchive/libarchive/archive_read_support_format_xar.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_ERRNO_H #include <errno.h> @@ -623,8 +622,8 @@ read_toc(struct archive_read *a) (size_t)xar->toc_chksum_size, NULL, 0); __archive_read_consume(a, xar->toc_chksum_size); xar->offset += xar->toc_chksum_size; - if (r != ARCHIVE_OK) #ifndef DONT_FAIL_ON_CRC_ERROR + if (r != ARCHIVE_OK) return (ARCHIVE_FATAL); #endif } diff --git a/contrib/libarchive/libarchive/archive_read_support_format_zip.c b/contrib/libarchive/libarchive/archive_read_support_format_zip.c index 5ba1085857bb..212bfff9fa7b 100644 --- a/contrib/libarchive/libarchive/archive_read_support_format_zip.c +++ b/contrib/libarchive/libarchive/archive_read_support_format_zip.c @@ -26,7 +26,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); /* * The definitive documentation of the Zip file format is: @@ -119,7 +118,7 @@ struct trad_enc_ctx { /* Bits used in zip_flags. */ #define ZIP_ENCRYPTED (1 << 0) -#define ZIP_LENGTH_AT_END (1 << 3) +#define ZIP_LENGTH_AT_END (1 << 3) /* Also called "Streaming bit" */ #define ZIP_STRONG_ENCRYPTED (1 << 6) #define ZIP_UTF8_NAME (1 << 11) /* See "7.2 Single Password Symmetric Encryption Method" @@ -166,8 +165,8 @@ struct zip { int64_t entry_compressed_bytes_read; int64_t entry_uncompressed_bytes_read; - /* Running CRC32 of the decompressed data */ - unsigned long entry_crc32; + /* Running CRC32 of the decompressed and decrypted data */ + unsigned long computed_crc32; unsigned long (*crc32func)(unsigned long, const void *, size_t); char ignore_crc32; @@ -945,7 +944,7 @@ zip_read_local_file_header(struct archive_read *a, struct archive_entry *entry, zip->end_of_entry = 0; zip->entry_uncompressed_bytes_read = 0; zip->entry_compressed_bytes_read = 0; - zip->entry_crc32 = zip->crc32func(0, NULL, 0); + zip->computed_crc32 = zip->crc32func(0, NULL, 0); /* Setup default conversion. */ if (zip->sconv == NULL && !zip->init_default_conversion) { @@ -1140,7 +1139,8 @@ zip_read_local_file_header(struct archive_read *a, struct archive_entry *entry, "Inconsistent CRC32 values"); ret = ARCHIVE_WARN; } - if (zip_entry->compressed_size == 0) { + if (zip_entry->compressed_size == 0 + || zip_entry->compressed_size == 0xffffffff) { zip_entry->compressed_size = zip_entry_central_dir.compressed_size; } else if (zip_entry->compressed_size @@ -1284,7 +1284,8 @@ zip_read_local_file_header(struct archive_read *a, struct archive_entry *entry, return ARCHIVE_FATAL; } } else if (0 == (zip_entry->zip_flags & ZIP_LENGTH_AT_END) - || zip_entry->uncompressed_size > 0) { + || (zip_entry->uncompressed_size > 0 + && zip_entry->uncompressed_size != 0xffffffff)) { /* Set the size only if it's meaningful. */ archive_entry_set_size(entry, zip_entry->uncompressed_size); } @@ -1343,25 +1344,267 @@ check_authentication_code(struct archive_read *a, const void *_p) } /* - * Read "uncompressed" data. There are three cases: - * 1) We know the size of the data. This is always true for the - * seeking reader (we've examined the Central Directory already). - * 2) ZIP_LENGTH_AT_END was set, but only the CRC was deferred. - * Info-ZIP seems to do this; we know the size but have to grab - * the CRC from the data descriptor afterwards. - * 3) We're streaming and ZIP_LENGTH_AT_END was specified and - * we have no size information. In this case, we can do pretty - * well by watching for the data descriptor record. The data - * descriptor is 16 bytes and includes a computed CRC that should - * provide a strong check. + * The Zip end-of-file marker is inherently ambiguous. The specification + * in APPNOTE.TXT allows any of four possible formats, and there is no + * guaranteed-correct way for a reader to know a priori which one the writer + * will have used. The four formats are: + * 1. 32-bit format with an initial PK78 marker + * 2. 32-bit format without that marker + * 3. 64-bit format with the marker + * 4. 64-bit format without the marker * - * TODO: Technically, the PK\007\010 signature is optional. - * In the original spec, the data descriptor contained CRC - * and size fields but had no leading signature. In practice, - * newer writers seem to provide the signature pretty consistently. + * Mark Adler's `sunzip` streaming unzip program solved this ambiguity + * by just looking at every possible combination and accepting the + * longest one that matches the expected values. His approach always + * consumes the longest possible matching EOF marker, based on an + * analysis of all the possible failures and how the values could + * overlap. * - * For uncompressed data, the PK\007\010 marker seems essential - * to be sure we've actually seen the end of the entry. + * For example, suppose both of the first two formats listed + * above match. In that case, we know the next four + * 32-bit words match this pattern: + * ``` + * [PK\07\08] [CRC32] [compressed size] [uncompressed size] + * ``` + * but we know they must also match this pattern: + * ``` + * [CRC32] [compressed size] [uncompressed size] [other PK marker] + * ``` + * + * Since the first word here matches both the PK78 signature in the + * first form and the CRC32 in the second, we know those two values + * are equal, the CRC32 must be exactly 0x08074b50. Similarly, the + * compressed and uncompressed size must also be exactly this value. + * So we know these four words are all 0x08074b50. If we were to + * accept the shorter pattern, it would be immediately followed by + * another PK78 marker, which is not possible in a well-formed ZIP + * archive unless there is garbage between entries. This implies we + * should not accept the shorter form in such a case; we should accept + * the longer form. + * + * If the second and third possibilities above both match, we + * have a slightly different situation. The following words + * must match both the 32-bit format + * ``` + * [CRC32] [compressed size] [uncompressed size] [other PK marker] + * ``` + * and the 64-bit format + * ``` + * [CRC32] [compressed low] [compressed high] [uncompressed low] [uncompressed high] [other PK marker] + * ``` + * Since the 32-bit and 64-bit compressed sizes both match, the + * actualy size must fit in 32 bits, which implies the high-order + * word of the compressed size is zero. So we know the uncompressed + * low word is zero, which again implies that if we accept the shorter + * format, there will not be a valid PK marker following it. + * + * Similar considerations rule out the shorter form in every other + * possibly-ambiguous pair. So if two of the four possible formats + * match, we should accept the longer option. + * + * If none of the four formats matches, we know the archive must be + * corrupted in some fashion. In particular, it's possible that the + * length-at-end bit was incorrect and we should not really be looking + * for an EOF marker at all. To allow for this possibility, we + * evaluate the following words to collect data for a later error + * report but do not consume any bytes. We instead rely on the later + * search for a new PK marker to re-sync to the next well-formed + * entry. + */ +static void +consume_end_of_file_marker(struct archive_read *a, struct zip *zip) +{ + const char *marker; + const char *p; + uint64_t compressed32, uncompressed32; + uint64_t compressed64, uncompressed64; + uint64_t compressed_actual, uncompressed_actual; + uint32_t crc32_actual; + const uint32_t PK78 = 0x08074B50ULL; + uint8_t crc32_ignored, crc32_may_be_zero; + + /* If there shouldn't be a marker, don't consume it. */ + if ((zip->entry->zip_flags & ZIP_LENGTH_AT_END) == 0) { + return; + } + + /* The longest Zip end-of-file record is 24 bytes. Since an + * end-of-file record can never appear at the end of the + * archive, we know 24 bytes will be available unless + * the archive is severely truncated. */ + if (NULL == (marker = __archive_read_ahead(a, 24, NULL))) { + return; + } + p = marker; + + /* The end-of-file record comprises: + * = Optional PK\007\010 marker + * = 4-byte CRC32 + * = Compressed size + * = Uncompressed size + * + * The last two fields are either both 32 bits or both 64 + * bits. We check all possible layouts and accept any one + * that gives us a complete match, else we make a best-effort + * attempt to parse out the pieces. + */ + + /* CRC32 checking can be tricky: + * * Test suites sometimes ignore the CRC32 + * * AES AE-2 always writes zero for the CRC32 + * * AES AE-1 sometimes writes zero for the CRC32 + */ + crc32_ignored = zip->ignore_crc32; + crc32_may_be_zero = 0; + crc32_actual = zip->computed_crc32; + if (zip->hctx_valid) { + switch (zip->entry->aes_extra.vendor) { + case AES_VENDOR_AE_2: + crc32_actual = 0; + break; + case AES_VENDOR_AE_1: + default: + crc32_may_be_zero = 1; + break; + } + } + + /* Values computed from the actual data in the archive. */ + compressed_actual = (uint64_t)zip->entry_compressed_bytes_read; + uncompressed_actual = (uint64_t)zip->entry_uncompressed_bytes_read; + + + /* Longest: PK78 marker, all 64-bit fields (24 bytes total) */ + if (archive_le32dec(p) == PK78 + && ((archive_le32dec(p + 4) == crc32_actual) + || (crc32_may_be_zero && (archive_le32dec(p + 4) == 0)) + || crc32_ignored) + && (archive_le64dec(p + 8) == compressed_actual) + && (archive_le64dec(p + 16) == uncompressed_actual)) { + if (!crc32_ignored) { + zip->entry->crc32 = crc32_actual; + } + zip->entry->compressed_size = compressed_actual; + zip->entry->uncompressed_size = uncompressed_actual; + zip->unconsumed += 24; + return; + } + + /* No PK78 marker, 64-bit fields (20 bytes total) */ + if (((archive_le32dec(p) == crc32_actual) + || (crc32_may_be_zero && (archive_le32dec(p + 4) == 0)) + || crc32_ignored) + && (archive_le64dec(p + 4) == compressed_actual) + && (archive_le64dec(p + 12) == uncompressed_actual)) { + if (!crc32_ignored) { + zip->entry->crc32 = crc32_actual; + } + zip->entry->compressed_size = compressed_actual; + zip->entry->uncompressed_size = uncompressed_actual; + zip->unconsumed += 20; + return; + } + + /* PK78 marker and 32-bit fields (16 bytes total) */ + if (archive_le32dec(p) == PK78 + && ((archive_le32dec(p + 4) == crc32_actual) + || (crc32_may_be_zero && (archive_le32dec(p + 4) == 0)) + || crc32_ignored) + && (archive_le32dec(p + 8) == compressed_actual) + && (archive_le32dec(p + 12) == uncompressed_actual)) { + if (!crc32_ignored) { + zip->entry->crc32 = crc32_actual; + } + zip->entry->compressed_size = compressed_actual; + zip->entry->uncompressed_size = uncompressed_actual; + zip->unconsumed += 16; + return; + } + + /* Shortest: No PK78 marker, all 32-bit fields (12 bytes total) */ + if (((archive_le32dec(p) == crc32_actual) + || (crc32_may_be_zero && (archive_le32dec(p + 4) == 0)) + || crc32_ignored) + && (archive_le32dec(p + 4) == compressed_actual) + && (archive_le32dec(p + 8) == uncompressed_actual)) { + if (!crc32_ignored) { + zip->entry->crc32 = crc32_actual; + } + zip->entry->compressed_size = compressed_actual; + zip->entry->uncompressed_size = uncompressed_actual; + zip->unconsumed += 12; + return; + } + + /* If none of the above patterns gives us a full exact match, + * then there's something definitely amiss. The fallback code + * below will parse out some plausible values for error + * reporting purposes. Note that this won't actually + * consume anything: + * + * = If there really is a marker here, the logic to resync to + * the next entry will suffice to skip it. + * + * = There might not really be a marker: Corruption or bugs + * may have set the length-at-end bit without a marker ever + * having actually been written. In this case, we + * explicitly should not consume any bytes, since that would + * prevent us from correctly reading the next entry. + */ + if (archive_le32dec(p) == PK78) { + p += 4; /* Ignore PK78 if it appears to be present */ + } + zip->entry->crc32 = archive_le32dec(p); /* Parse CRC32 */ + p += 4; + + /* Consider both 32- and 64-bit interpretations */ + compressed32 = archive_le32dec(p); + uncompressed32 = archive_le32dec(p + 4); + compressed64 = archive_le64dec(p); + uncompressed64 = archive_le64dec(p + 8); + + /* The earlier patterns may have failed because of CRC32 + * mismatch, so it's still possible that both sizes match. + * Try to match as many as we can... + */ + if (compressed32 == compressed_actual + && uncompressed32 == uncompressed_actual) { + /* Both 32-bit fields match */ + zip->entry->compressed_size = compressed32; + zip->entry->uncompressed_size = uncompressed32; + } else if (compressed64 == compressed_actual + || uncompressed64 == uncompressed_actual) { + /* One or both 64-bit fields match */ + zip->entry->compressed_size = compressed64; + zip->entry->uncompressed_size = uncompressed64; + } else { + /* Zero or one 32-bit fields match */ + zip->entry->compressed_size = compressed32; + zip->entry->uncompressed_size = uncompressed32; + } +} + +/* + * Read "uncompressed" data. + * + * This is straightforward if we know the size of the data. This is + * always true for the seeking reader (we've examined the Central + * Directory already), and will often be true for the streaming reader + * (the writer was writing uncompressed so probably knows the size). + * + * If we don't know the size, then life is more interesting. Note + * that a careful reading of the Zip specification says that a writer + * must use ZIP_LENGTH_AT_END if it cannot write the CRC into the + * local header. And if it uses ZIP_LENGTH_AT_END, then it is + * prohibited from storing the sizes in the local header. This + * prevents fully-compliant streaming writers from providing any size + * clues to a streaming reader. In this case, we have to scan the + * data as we read to try to locate the end-of-file marker. + * + * We assume here that the end-of-file marker always has the + * PK\007\010 signature. Although it's technically optional, newer + * writers seem to provide it pretty consistently, and it's not clear + * how to efficiently recognize an end-of-file marker that lacks it. * * Returns ARCHIVE_OK if successful, ARCHIVE_FATAL otherwise, sets * zip->end_of_entry if it consumes all of the data. @@ -1373,18 +1616,18 @@ zip_read_data_none(struct archive_read *a, const void **_buff, struct zip *zip; const char *buff; ssize_t bytes_avail; + ssize_t trailing_extra; int r; (void)offset; /* UNUSED */ zip = (struct zip *)(a->format->data); + trailing_extra = zip->hctx_valid ? AUTH_CODE_SIZE : 0; if (zip->entry->zip_flags & ZIP_LENGTH_AT_END) { const char *p; - ssize_t grabbing_bytes = 24; + ssize_t grabbing_bytes = 24 + trailing_extra; - if (zip->hctx_valid) - grabbing_bytes += AUTH_CODE_SIZE; /* Grab at least 24 bytes. */ buff = __archive_read_ahead(a, grabbing_bytes, &bytes_avail); if (bytes_avail < grabbing_bytes) { @@ -1399,44 +1642,19 @@ zip_read_data_none(struct archive_read *a, const void **_buff, } /* Check for a complete PK\007\010 signature, followed * by the correct 4-byte CRC. */ - p = buff; - if (zip->hctx_valid) - p += AUTH_CODE_SIZE; + p = buff + trailing_extra; if (p[0] == 'P' && p[1] == 'K' && p[2] == '\007' && p[3] == '\010' - && (archive_le32dec(p + 4) == zip->entry_crc32 + && (archive_le32dec(p + 4) == zip->computed_crc32 || zip->ignore_crc32 || (zip->hctx_valid && zip->entry->aes_extra.vendor == AES_VENDOR_AE_2))) { - if (zip->entry->flags & LA_USED_ZIP64) { - uint64_t compressed, uncompressed; - zip->entry->crc32 = archive_le32dec(p + 4); - compressed = archive_le64dec(p + 8); - uncompressed = archive_le64dec(p + 16); - if (compressed > INT64_MAX || uncompressed > - INT64_MAX) { - archive_set_error(&a->archive, - ARCHIVE_ERRNO_FILE_FORMAT, - "Overflow of 64-bit file sizes"); - return ARCHIVE_FAILED; - } - zip->entry->compressed_size = compressed; - zip->entry->uncompressed_size = uncompressed; - zip->unconsumed = 24; - } else { - zip->entry->crc32 = archive_le32dec(p + 4); - zip->entry->compressed_size = - archive_le32dec(p + 8); - zip->entry->uncompressed_size = - archive_le32dec(p + 12); - zip->unconsumed = 16; - } + zip->end_of_entry = 1; if (zip->hctx_valid) { r = check_authentication_code(a, buff); if (r != ARCHIVE_OK) return (r); } - zip->end_of_entry = 1; return (ARCHIVE_OK); } /* If not at EOF, ensure we consume at least one byte. */ @@ -1452,11 +1670,10 @@ zip_read_data_none(struct archive_read *a, const void **_buff, else if (p[3] == '\007') { p += 1; } else if (p[3] == '\010' && p[2] == '\007' && p[1] == 'K' && p[0] == 'P') { - if (zip->hctx_valid) - p -= AUTH_CODE_SIZE; break; } else { p += 4; } } + p -= trailing_extra; bytes_avail = p - buff; } else { if (zip->entry_bytes_remaining == 0) { @@ -1499,59 +1716,15 @@ zip_read_data_none(struct archive_read *a, const void **_buff, bytes_avail = dec_size; buff = (const char *)zip->decrypted_buffer; } - *size = bytes_avail; zip->entry_bytes_remaining -= bytes_avail; zip->entry_uncompressed_bytes_read += bytes_avail; zip->entry_compressed_bytes_read += bytes_avail; zip->unconsumed += bytes_avail; + *size = bytes_avail; *_buff = buff; return (ARCHIVE_OK); } -static int -consume_optional_marker(struct archive_read *a, struct zip *zip) -{ - if (zip->end_of_entry && (zip->entry->zip_flags & ZIP_LENGTH_AT_END)) { - const char *p; - - if (NULL == (p = __archive_read_ahead(a, 24, NULL))) { - archive_set_error(&a->archive, - ARCHIVE_ERRNO_FILE_FORMAT, - "Truncated ZIP end-of-file record"); - return (ARCHIVE_FATAL); - } - /* Consume the optional PK\007\010 marker. */ - if (p[0] == 'P' && p[1] == 'K' && - p[2] == '\007' && p[3] == '\010') { - p += 4; - zip->unconsumed = 4; - } - if (zip->entry->flags & LA_USED_ZIP64) { - uint64_t compressed, uncompressed; - zip->entry->crc32 = archive_le32dec(p); - compressed = archive_le64dec(p + 4); - uncompressed = archive_le64dec(p + 12); - if (compressed > INT64_MAX || - uncompressed > INT64_MAX) { - archive_set_error(&a->archive, - ARCHIVE_ERRNO_FILE_FORMAT, - "Overflow of 64-bit file sizes"); - return ARCHIVE_FAILED; - } - zip->entry->compressed_size = compressed; - zip->entry->uncompressed_size = uncompressed; - zip->unconsumed += 20; - } else { - zip->entry->crc32 = archive_le32dec(p); - zip->entry->compressed_size = archive_le32dec(p + 4); - zip->entry->uncompressed_size = archive_le32dec(p + 8); - zip->unconsumed += 12; - } - } - - return (ARCHIVE_OK); -} - #if HAVE_LZMA_H && HAVE_LIBLZMA static int zipx_xz_init(struct archive_read *a, struct zip *zip) @@ -1803,10 +1976,6 @@ zip_read_data_zipx_xz(struct archive_read *a, const void **buff, *size = zip->zipx_lzma_stream.total_out; *buff = zip->uncompressed_buffer; - ret = consume_optional_marker(a, zip); - if (ret != ARCHIVE_OK) - return (ret); - return (ARCHIVE_OK); } @@ -1871,8 +2040,6 @@ zip_read_data_zipx_lzma_alone(struct archive_read *a, const void **buff, /* This case is optional in lzma alone format. It can happen, * but most of the files don't have it. (GitHub #1257) */ case LZMA_STREAM_END: - lzma_end(&zip->zipx_lzma_stream); - zip->zipx_lzma_valid = 0; if((int64_t) zip->zipx_lzma_stream.total_in != zip->entry_bytes_remaining) { @@ -1906,21 +2073,18 @@ zip_read_data_zipx_lzma_alone(struct archive_read *a, const void **buff, zip->end_of_entry = 1; } - /* Return values. */ - *size = zip->zipx_lzma_stream.total_out; - *buff = zip->uncompressed_buffer; - - /* Behave the same way as during deflate decompression. */ - ret = consume_optional_marker(a, zip); - if (ret != ARCHIVE_OK) - return (ret); - /* Free lzma decoder handle because we'll no longer need it. */ + /* This cannot be folded into LZMA_STREAM_END handling above + * because the stream end marker is not required in this format. */ if(zip->end_of_entry) { lzma_end(&zip->zipx_lzma_stream); zip->zipx_lzma_valid = 0; } + /* Return values. */ + *size = zip->zipx_lzma_stream.total_out; + *buff = zip->uncompressed_buffer; + /* If we're here, then we're good! */ return (ARCHIVE_OK); } @@ -2078,10 +2242,6 @@ zip_read_data_zipx_ppmd(struct archive_read *a, const void **buff, ++consumed_bytes; } while(consumed_bytes < zip->uncompressed_buffer_size); - /* Update pointers for libarchive. */ - *buff = zip->uncompressed_buffer; - *size = consumed_bytes; - /* Update pointers so we can continue decompression in another call. */ zip->entry_bytes_remaining -= zip->zipx_ppmd_read_compressed; zip->entry_compressed_bytes_read += zip->zipx_ppmd_read_compressed; @@ -2093,10 +2253,9 @@ zip_read_data_zipx_ppmd(struct archive_read *a, const void **buff, zip->ppmd8_valid = 0; } - /* Seek for optional marker, same way as in each zip entry. */ - ret = consume_optional_marker(a, zip); - if (ret != ARCHIVE_OK) - return ret; + /* Update pointers for libarchive. */ + *buff = zip->uncompressed_buffer; + *size = consumed_bytes; return ARCHIVE_OK; } @@ -2238,11 +2397,6 @@ zip_read_data_zipx_bzip2(struct archive_read *a, const void **buff, *size = total_out; *buff = zip->uncompressed_buffer; - /* Seek for optional marker, like in other entries. */ - r = consume_optional_marker(a, zip); - if(r != ARCHIVE_OK) - return r; - return ARCHIVE_OK; } @@ -2373,11 +2527,6 @@ zip_read_data_zipx_zstd(struct archive_read *a, const void **buff, *size = total_out; *buff = zip->uncompressed_buffer; - /* Seek for optional marker, like in other entries. */ - r = consume_optional_marker(a, zip); - if(r != ARCHIVE_OK) - return r; - return ARCHIVE_OK; } #endif @@ -2413,7 +2562,7 @@ zip_read_data_deflate(struct archive_read *a, const void **buff, size_t *size, int64_t *offset) { struct zip *zip; - ssize_t bytes_avail; + ssize_t bytes_avail, to_consume = 0; const void *compressed_buff, *sp; int r; @@ -2534,34 +2683,33 @@ zip_read_data_deflate(struct archive_read *a, const void **buff, } /* Consume as much as the compressor actually used. */ - bytes_avail = zip->stream.total_in; + to_consume = zip->stream.total_in; + __archive_read_consume(a, to_consume); + zip->entry_bytes_remaining -= to_consume; + zip->entry_compressed_bytes_read += to_consume; + zip->entry_uncompressed_bytes_read += zip->stream.total_out; + if (zip->tctx_valid || zip->cctx_valid) { - zip->decrypted_bytes_remaining -= bytes_avail; + zip->decrypted_bytes_remaining -= to_consume; if (zip->decrypted_bytes_remaining == 0) zip->decrypted_ptr = zip->decrypted_buffer; else - zip->decrypted_ptr += bytes_avail; + zip->decrypted_ptr += to_consume; } - /* Calculate compressed data as much as we used.*/ if (zip->hctx_valid) - archive_hmac_sha1_update(&zip->hctx, sp, bytes_avail); - __archive_read_consume(a, bytes_avail); - zip->entry_bytes_remaining -= bytes_avail; - zip->entry_compressed_bytes_read += bytes_avail; - - *size = zip->stream.total_out; - zip->entry_uncompressed_bytes_read += zip->stream.total_out; - *buff = zip->uncompressed_buffer; + archive_hmac_sha1_update(&zip->hctx, sp, to_consume); - if (zip->end_of_entry && zip->hctx_valid) { - r = check_authentication_code(a, NULL); - if (r != ARCHIVE_OK) - return (r); + if (zip->end_of_entry) { + if (zip->hctx_valid) { + r = check_authentication_code(a, NULL); + if (r != ARCHIVE_OK) { + return (r); + } + } } - r = consume_optional_marker(a, zip); - if (r != ARCHIVE_OK) - return (r); + *size = zip->stream.total_out; + *buff = zip->uncompressed_buffer; return (ARCHIVE_OK); } @@ -3029,13 +3177,27 @@ archive_read_format_zip_read_data(struct archive_read *a, } if (r != ARCHIVE_OK) return (r); - /* Update checksum */ - if (*size) - zip->entry_crc32 = zip->crc32func(zip->entry_crc32, *buff, - (unsigned)*size); - /* If we hit the end, swallow any end-of-data marker. */ + if (*size > 0) { + zip->computed_crc32 = zip->crc32func(zip->computed_crc32, *buff, + (unsigned)*size); + } + /* If we hit the end, swallow any end-of-data marker and + * verify the final check values. */ if (zip->end_of_entry) { - /* Check file size, CRC against these values. */ + consume_end_of_file_marker(a, zip); + + /* Check computed CRC against header */ + if ((!zip->hctx_valid || + zip->entry->aes_extra.vendor != AES_VENDOR_AE_2) && + zip->entry->crc32 != zip->computed_crc32 + && !zip->ignore_crc32) { + archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, + "ZIP bad CRC: 0x%lx should be 0x%lx", + (unsigned long)zip->computed_crc32, + (unsigned long)zip->entry->crc32); + return (ARCHIVE_FAILED); + } + /* Check file size against header. */ if (zip->entry->compressed_size != zip->entry_compressed_bytes_read) { archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, @@ -3043,7 +3205,7 @@ archive_read_format_zip_read_data(struct archive_read *a, "(read %jd, expected %jd)", (intmax_t)zip->entry_compressed_bytes_read, (intmax_t)zip->entry->compressed_size); - return (ARCHIVE_WARN); + return (ARCHIVE_FAILED); } /* Size field only stores the lower 32 bits of the actual * size. */ @@ -3054,18 +3216,7 @@ archive_read_format_zip_read_data(struct archive_read *a, "(read %jd, expected %jd)\n", (intmax_t)zip->entry_uncompressed_bytes_read, (intmax_t)zip->entry->uncompressed_size); - return (ARCHIVE_WARN); - } - /* Check computed CRC against header */ - if ((!zip->hctx_valid || - zip->entry->aes_extra.vendor != AES_VENDOR_AE_2) && - zip->entry->crc32 != zip->entry_crc32 - && !zip->ignore_crc32) { - archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, - "ZIP bad CRC: 0x%lx should be 0x%lx", - (unsigned long)zip->entry_crc32, - (unsigned long)zip->entry->crc32); - return (ARCHIVE_WARN); + return (ARCHIVE_FAILED); } } diff --git a/contrib/libarchive/libarchive/archive_string.c b/contrib/libarchive/libarchive/archive_string.c index 65999c001763..f39677ad7a26 100644 --- a/contrib/libarchive/libarchive/archive_string.c +++ b/contrib/libarchive/libarchive/archive_string.c @@ -25,7 +25,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); /* * Basic resizable string support, to simplify manipulating arbitrary-sized @@ -553,6 +552,8 @@ archive_wstring_append_from_mbs_in_codepage(struct archive_wstring *dest, } else mbflag = MB_PRECOMPOSED; + mbflag |= MB_ERR_INVALID_CHARS; + buffsize = dest->length + length + 1; do { /* Allocate memory for WCS. */ @@ -1527,7 +1528,7 @@ get_current_codepage(void) p = strrchr(locale, '.'); if (p == NULL) return (GetACP()); - if (strcmp(p+1, "utf8") == 0) + if ((strcmp(p+1, "utf8") == 0) || (strcmp(p+1, "UTF-8") == 0)) return CP_UTF8; cp = my_atoi(p+1); if ((int)cp <= 0) @@ -4227,6 +4228,17 @@ archive_mstring_update_utf8(struct archive *a, struct archive_mstring *aes, if (sc == NULL) return (-1);/* Couldn't allocate memory for sc. */ r = archive_strcpy_l(&(aes->aes_mbs), utf8, sc); + +#if defined(_WIN32) && !defined(__CYGWIN__) + /* On failure, make an effort to convert UTF8 to WCS as the active code page + * may not be able to represent all characters in the string */ + if (r != 0) { + if (archive_wstring_append_from_mbs_in_codepage(&(aes->aes_wcs), + aes->aes_utf8.s, aes->aes_utf8.length, sc) == 0) + aes->aes_set = AES_SET_UTF8 | AES_SET_WCS; + } +#endif + if (a == NULL) free_sconv_object(sc); if (r != 0) diff --git a/contrib/libarchive/libarchive/archive_string.h b/contrib/libarchive/libarchive/archive_string.h index ccd696100687..e8987867d3ce 100644 --- a/contrib/libarchive/libarchive/archive_string.h +++ b/contrib/libarchive/libarchive/archive_string.h @@ -21,9 +21,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ - * */ #ifndef ARCHIVE_STRING_H_INCLUDED diff --git a/contrib/libarchive/libarchive/archive_string_composition.h b/contrib/libarchive/libarchive/archive_string_composition.h index d0ac340961a0..e917036f1167 100644 --- a/contrib/libarchive/libarchive/archive_string_composition.h +++ b/contrib/libarchive/libarchive/archive_string_composition.h @@ -22,8 +22,6 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD$ - * */ /* diff --git a/contrib/libarchive/libarchive/archive_string_sprintf.c b/contrib/libarchive/libarchive/archive_string_sprintf.c index 3c9b4c601327..c785e12bdf6d 100644 --- a/contrib/libarchive/libarchive/archive_string_sprintf.c +++ b/contrib/libarchive/libarchive/archive_string_sprintf.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); /* * The use of printf()-family functions can be troublesome diff --git a/contrib/libarchive/libarchive/archive_util.3 b/contrib/libarchive/libarchive/archive_util.3 index d5d4e7dfd7d5..3aa508f25aa2 100644 --- a/contrib/libarchive/libarchive/archive_util.3 +++ b/contrib/libarchive/libarchive/archive_util.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd February 2, 2012 .Dt ARCHIVE_UTIL 3 .Os diff --git a/contrib/libarchive/libarchive/archive_util.c b/contrib/libarchive/libarchive/archive_util.c index 83fcaac82003..32d4bd40988c 100644 --- a/contrib/libarchive/libarchive/archive_util.c +++ b/contrib/libarchive/libarchive/archive_util.c @@ -25,7 +25,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> diff --git a/contrib/libarchive/libarchive/archive_version_details.c b/contrib/libarchive/libarchive/archive_version_details.c index bfb20eab2027..29be24f3222e 100644 --- a/contrib/libarchive/libarchive/archive_version_details.c +++ b/contrib/libarchive/libarchive/archive_version_details.c @@ -25,7 +25,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD: head/lib/libarchive/archive_util.c 201098 2009-12-28 02:58:14Z kientzle $"); #ifdef HAVE_STDLIB_H #include <stdlib.h> diff --git a/contrib/libarchive/libarchive/archive_virtual.c b/contrib/libarchive/libarchive/archive_virtual.c index ee663d6cfac2..97e0b8a0d7b7 100644 --- a/contrib/libarchive/libarchive/archive_virtual.c +++ b/contrib/libarchive/libarchive/archive_virtual.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #include "archive.h" #include "archive_entry.h" diff --git a/contrib/libarchive/libarchive/archive_write.3 b/contrib/libarchive/libarchive/archive_write.3 index e7f7f1384ee8..227e4e028449 100644 --- a/contrib/libarchive/libarchive/archive_write.3 +++ b/contrib/libarchive/libarchive/archive_write.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd February 2, 2012 .Dt ARCHIVE_WRITE 3 .Os diff --git a/contrib/libarchive/libarchive/archive_write.c b/contrib/libarchive/libarchive/archive_write.c index 452836076dfa..b70bc785c738 100644 --- a/contrib/libarchive/libarchive/archive_write.c +++ b/contrib/libarchive/libarchive/archive_write.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); /* * This file contains the "essential" portions of the write API, that @@ -115,7 +114,7 @@ archive_write_new(void) /* Initialize a block of nulls for padding purposes. */ a->null_length = 1024; - nulls = (unsigned char *)calloc(1, a->null_length); + nulls = (unsigned char *)calloc(a->null_length, sizeof(unsigned char)); if (nulls == NULL) { free(a); return (NULL); diff --git a/contrib/libarchive/libarchive/archive_write_add_filter.c b/contrib/libarchive/libarchive/archive_write_add_filter.c index 203f4142b5c9..aa962515a044 100644 --- a/contrib/libarchive/libarchive/archive_write_add_filter.c +++ b/contrib/libarchive/libarchive/archive_write_add_filter.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> diff --git a/contrib/libarchive/libarchive/archive_write_add_filter_b64encode.c b/contrib/libarchive/libarchive/archive_write_add_filter_b64encode.c index 87fdb73ecb09..084d195402bc 100644 --- a/contrib/libarchive/libarchive/archive_write_add_filter_b64encode.c +++ b/contrib/libarchive/libarchive/archive_write_add_filter_b64encode.c @@ -25,8 +25,6 @@ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); - #ifdef HAVE_ERRNO_H #include <errno.h> #endif diff --git a/contrib/libarchive/libarchive/archive_write_add_filter_by_name.c b/contrib/libarchive/libarchive/archive_write_add_filter_by_name.c index ffa633c96371..fc62458c56ee 100644 --- a/contrib/libarchive/libarchive/archive_write_add_filter_by_name.c +++ b/contrib/libarchive/libarchive/archive_write_add_filter_by_name.c @@ -25,7 +25,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> diff --git a/contrib/libarchive/libarchive/archive_write_add_filter_bzip2.c b/contrib/libarchive/libarchive/archive_write_add_filter_bzip2.c index 3e5c0891ae85..561e11b5d70a 100644 --- a/contrib/libarchive/libarchive/archive_write_add_filter_bzip2.c +++ b/contrib/libarchive/libarchive/archive_write_add_filter_bzip2.c @@ -26,8 +26,6 @@ #include "archive_platform.h" -__FBSDID("$FreeBSD: head/lib/libarchive/archive_write_set_compression_bzip2.c 201091 2009-12-28 02:22:41Z kientzle $"); - #ifdef HAVE_ERRNO_H #include <errno.h> #endif diff --git a/contrib/libarchive/libarchive/archive_write_add_filter_compress.c b/contrib/libarchive/libarchive/archive_write_add_filter_compress.c index 3ed269fce943..78afebda3e35 100644 --- a/contrib/libarchive/libarchive/archive_write_add_filter_compress.c +++ b/contrib/libarchive/libarchive/archive_write_add_filter_compress.c @@ -58,8 +58,6 @@ #include "archive_platform.h" -__FBSDID("$FreeBSD: head/lib/libarchive/archive_write_set_compression_compress.c 201111 2009-12-28 03:33:05Z kientzle $"); - #ifdef HAVE_ERRNO_H #include <errno.h> #endif diff --git a/contrib/libarchive/libarchive/archive_write_add_filter_grzip.c b/contrib/libarchive/libarchive/archive_write_add_filter_grzip.c index 371102d74c05..f8bb886061e5 100644 --- a/contrib/libarchive/libarchive/archive_write_add_filter_grzip.c +++ b/contrib/libarchive/libarchive/archive_write_add_filter_grzip.c @@ -25,8 +25,6 @@ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); - #ifdef HAVE_ERRNO_H #include <errno.h> #endif diff --git a/contrib/libarchive/libarchive/archive_write_add_filter_gzip.c b/contrib/libarchive/libarchive/archive_write_add_filter_gzip.c index 8670d5ca7403..a7fabbfa6bd5 100644 --- a/contrib/libarchive/libarchive/archive_write_add_filter_gzip.c +++ b/contrib/libarchive/libarchive/archive_write_add_filter_gzip.c @@ -25,8 +25,6 @@ #include "archive_platform.h" -__FBSDID("$FreeBSD: head/lib/libarchive/archive_write_set_compression_gzip.c 201081 2009-12-28 02:04:42Z kientzle $"); - #ifdef HAVE_ERRNO_H #include <errno.h> #endif diff --git a/contrib/libarchive/libarchive/archive_write_add_filter_lrzip.c b/contrib/libarchive/libarchive/archive_write_add_filter_lrzip.c index e215f8903259..fe974c93d5d0 100644 --- a/contrib/libarchive/libarchive/archive_write_add_filter_lrzip.c +++ b/contrib/libarchive/libarchive/archive_write_add_filter_lrzip.c @@ -25,8 +25,6 @@ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); - #ifdef HAVE_ERRNO_H #include <errno.h> #endif diff --git a/contrib/libarchive/libarchive/archive_write_add_filter_lz4.c b/contrib/libarchive/libarchive/archive_write_add_filter_lz4.c index 6ac450357d28..24061a169521 100644 --- a/contrib/libarchive/libarchive/archive_write_add_filter_lz4.c +++ b/contrib/libarchive/libarchive/archive_write_add_filter_lz4.c @@ -25,8 +25,6 @@ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); - #ifdef HAVE_ERRNO_H #include <errno.h> #endif diff --git a/contrib/libarchive/libarchive/archive_write_add_filter_lzop.c b/contrib/libarchive/libarchive/archive_write_add_filter_lzop.c index 3bd9062e4d32..8580e58844af 100644 --- a/contrib/libarchive/libarchive/archive_write_add_filter_lzop.c +++ b/contrib/libarchive/libarchive/archive_write_add_filter_lzop.c @@ -25,7 +25,6 @@ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); //#undef HAVE_LZO_LZOCONF_H //#undef HAVE_LZO_LZO1X_H diff --git a/contrib/libarchive/libarchive/archive_write_add_filter_none.c b/contrib/libarchive/libarchive/archive_write_add_filter_none.c index 3c06c642e735..b7aa6d4bcd3c 100644 --- a/contrib/libarchive/libarchive/archive_write_add_filter_none.c +++ b/contrib/libarchive/libarchive/archive_write_add_filter_none.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD: head/lib/libarchive/archive_write_set_compression_none.c 201080 2009-12-28 02:03:54Z kientzle $"); #include "archive.h" diff --git a/contrib/libarchive/libarchive/archive_write_add_filter_program.c b/contrib/libarchive/libarchive/archive_write_add_filter_program.c index c096e7227ba4..c661cc7f412f 100644 --- a/contrib/libarchive/libarchive/archive_write_add_filter_program.c +++ b/contrib/libarchive/libarchive/archive_write_add_filter_program.c @@ -25,7 +25,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD: head/lib/libarchive/archive_write_set_compression_program.c 201104 2009-12-28 03:14:30Z kientzle $"); #ifdef HAVE_SYS_WAIT_H # include <sys/wait.h> diff --git a/contrib/libarchive/libarchive/archive_write_add_filter_uuencode.c b/contrib/libarchive/libarchive/archive_write_add_filter_uuencode.c index 1ad458921928..42dec8def1f1 100644 --- a/contrib/libarchive/libarchive/archive_write_add_filter_uuencode.c +++ b/contrib/libarchive/libarchive/archive_write_add_filter_uuencode.c @@ -25,8 +25,6 @@ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); - #ifdef HAVE_ERRNO_H #include <errno.h> #endif diff --git a/contrib/libarchive/libarchive/archive_write_add_filter_xz.c b/contrib/libarchive/libarchive/archive_write_add_filter_xz.c index 04bee90efa46..18da08274d92 100644 --- a/contrib/libarchive/libarchive/archive_write_add_filter_xz.c +++ b/contrib/libarchive/libarchive/archive_write_add_filter_xz.c @@ -26,8 +26,6 @@ #include "archive_platform.h" -__FBSDID("$FreeBSD: head/lib/libarchive/archive_write_set_compression_xz.c 201108 2009-12-28 03:28:21Z kientzle $"); - #ifdef HAVE_ERRNO_H #include <errno.h> #endif diff --git a/contrib/libarchive/libarchive/archive_write_add_filter_zstd.c b/contrib/libarchive/libarchive/archive_write_add_filter_zstd.c index 584cfb668f05..94249accd08b 100644 --- a/contrib/libarchive/libarchive/archive_write_add_filter_zstd.c +++ b/contrib/libarchive/libarchive/archive_write_add_filter_zstd.c @@ -1,5 +1,6 @@ /*- * Copyright (c) 2017 Sean Purcell + * Copyright (c) 2023-2024 Klara, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -25,9 +26,6 @@ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); - - #ifdef HAVE_ERRNO_H #include <errno.h> #endif @@ -54,15 +52,18 @@ __FBSDID("$FreeBSD$"); struct private_data { int compression_level; int threads; -#if HAVE_ZSTD_H && HAVE_LIBZSTD_COMPRESSOR + int long_distance; +#if HAVE_ZSTD_H && HAVE_ZSTD_compressStream enum { running, finishing, resetting, } state; int frame_per_file; - size_t min_frame_size; - size_t max_frame_size; + size_t min_frame_in; + size_t max_frame_in; + size_t min_frame_out; + size_t max_frame_out; size_t cur_frame; size_t cur_frame_in; size_t cur_frame_out; @@ -81,8 +82,11 @@ struct private_data { #define CLEVEL_STD_MAX 19 /* without using --ultra */ #define CLEVEL_MAX 22 +#define LONG_STD 27 + #define MINVER_NEGCLEVEL 10304 #define MINVER_MINCLEVEL 10306 +#define MINVER_LONG 10302 static int archive_compressor_zstd_options(struct archive_write_filter *, const char *, const char *); @@ -92,7 +96,7 @@ static int archive_compressor_zstd_write(struct archive_write_filter *, static int archive_compressor_zstd_flush(struct archive_write_filter *); static int archive_compressor_zstd_close(struct archive_write_filter *); static int archive_compressor_zstd_free(struct archive_write_filter *); -#if HAVE_ZSTD_H && HAVE_LIBZSTD_COMPRESSOR +#if HAVE_ZSTD_H && HAVE_ZSTD_compressStream static int drive_compressor(struct archive_write_filter *, struct private_data *, int, const void *, size_t); #endif @@ -125,10 +129,13 @@ archive_write_add_filter_zstd(struct archive *_a) f->name = "zstd"; data->compression_level = CLEVEL_DEFAULT; data->threads = 0; -#if HAVE_ZSTD_H && HAVE_LIBZSTD_COMPRESSOR + data->long_distance = 0; +#if HAVE_ZSTD_H && HAVE_ZSTD_compressStream data->frame_per_file = 0; - data->min_frame_size = 0; - data->max_frame_size = SIZE_MAX; + data->min_frame_in = 0; + data->max_frame_in = SIZE_MAX; + data->min_frame_out = 0; + data->max_frame_out = SIZE_MAX; data->cur_frame_in = 0; data->cur_frame_out = 0; data->cstream = ZSTD_createCStream(); @@ -157,7 +164,7 @@ static int archive_compressor_zstd_free(struct archive_write_filter *f) { struct private_data *data = (struct private_data *)f->data; -#if HAVE_ZSTD_H && HAVE_LIBZSTD_COMPRESSOR +#if HAVE_ZSTD_H && HAVE_ZSTD_compressStream ZSTD_freeCStream(data->cstream); free(data->out.dst); #else @@ -168,7 +175,8 @@ archive_compressor_zstd_free(struct archive_write_filter *f) return (ARCHIVE_OK); } -static int string_to_number(const char *string, intmax_t *numberp) +static int +string_to_number(const char *string, intmax_t *numberp) { char *end; @@ -182,6 +190,41 @@ static int string_to_number(const char *string, intmax_t *numberp) return (ARCHIVE_OK); } +static int +string_to_size(const char *string, size_t *numberp) +{ + uintmax_t number; + char *end; + unsigned int shift = 0; + + if (string == NULL || *string == '\0' || *string == '-') + return (ARCHIVE_WARN); + number = strtoumax(string, &end, 10); + if (end > string) { + if (*end == 'K' || *end == 'k') { + shift = 10; + end++; + } else if (*end == 'M' || *end == 'm') { + shift = 20; + end++; + } else if (*end == 'G' || *end == 'g') { + shift = 30; + end++; + } + if (*end == 'B' || *end == 'b') { + end++; + } + } + if (end == string || *end != '\0' || errno == EOVERFLOW) { + return (ARCHIVE_WARN); + } + if (number > (uintmax_t)SIZE_MAX >> shift) { + return (ARCHIVE_WARN); + } + *numberp = (size_t)(number << shift); + return (ARCHIVE_OK); +} + /* * Set write options. */ @@ -199,7 +242,7 @@ archive_compressor_zstd_options(struct archive_write_filter *f, const char *key, /* If we don't have the library, hard-code the max level */ int minimum = CLEVEL_MIN; int maximum = CLEVEL_MAX; -#if HAVE_ZSTD_H && HAVE_LIBZSTD_COMPRESSOR +#if HAVE_ZSTD_H && HAVE_ZSTD_compressStream maximum = ZSTD_maxCLevel(); #if ZSTD_VERSION_NUMBER >= MINVER_MINCLEVEL if (ZSTD_versionNumber() >= MINVER_MINCLEVEL) { @@ -226,32 +269,59 @@ archive_compressor_zstd_options(struct archive_write_filter *f, const char *key, } data->threads = (int)threads; return (ARCHIVE_OK); -#if HAVE_ZSTD_H && HAVE_LIBZSTD_COMPRESSOR +#if HAVE_ZSTD_H && HAVE_ZSTD_compressStream } else if (strcmp(key, "frame-per-file") == 0) { data->frame_per_file = 1; return (ARCHIVE_OK); - } else if (strcmp(key, "min-frame-size") == 0) { - intmax_t min_frame_size; - if (string_to_number(value, &min_frame_size) != ARCHIVE_OK) { + } else if (strcmp(key, "min-frame-in") == 0) { + if (string_to_size(value, &data->min_frame_in) != ARCHIVE_OK) { return (ARCHIVE_WARN); } - if (min_frame_size < 0) { + return (ARCHIVE_OK); + } else if (strcmp(key, "min-frame-out") == 0 || + strcmp(key, "min-frame-size") == 0) { + if (string_to_size(value, &data->min_frame_out) != ARCHIVE_OK) { return (ARCHIVE_WARN); } - data->min_frame_size = min_frame_size; return (ARCHIVE_OK); - } else if (strcmp(key, "max-frame-size") == 0) { - intmax_t max_frame_size; - if (string_to_number(value, &max_frame_size) != ARCHIVE_OK) { + } else if (strcmp(key, "max-frame-in") == 0 || + strcmp(key, "max-frame-size") == 0) { + if (string_to_size(value, &data->max_frame_in) != ARCHIVE_OK || + data->max_frame_in < 1024) { return (ARCHIVE_WARN); } - if (max_frame_size < 1024) { + return (ARCHIVE_OK); + } else if (strcmp(key, "max-frame-out") == 0) { + if (string_to_size(value, &data->max_frame_out) != ARCHIVE_OK || + data->max_frame_out < 1024) { return (ARCHIVE_WARN); } - data->max_frame_size = max_frame_size; return (ARCHIVE_OK); #endif } + else if (strcmp(key, "long") == 0) { + intmax_t long_distance; + if (string_to_number(value, &long_distance) != ARCHIVE_OK) { + return (ARCHIVE_WARN); + } +#if HAVE_ZSTD_H && HAVE_ZSTD_compressStream && ZSTD_VERSION_NUMBER >= MINVER_LONG + ZSTD_bounds bounds = ZSTD_cParam_getBounds(ZSTD_c_windowLog); + if (ZSTD_isError(bounds.error)) { + int max_distance = ((int)(sizeof(size_t) == 4 ? 30 : 31)); + if (((int)long_distance) < 10 || (int)long_distance > max_distance) + return (ARCHIVE_WARN); + } else { + if ((int)long_distance < bounds.lowerBound || (int)long_distance > bounds.upperBound) + return (ARCHIVE_WARN); + } +#else + int max_distance = ((int)(sizeof(size_t) == 4 ? 30 : 31)); + if (((int)long_distance) < 10 || (int)long_distance > max_distance) + return (ARCHIVE_WARN); +#endif + data->long_distance = (int)long_distance; + return (ARCHIVE_OK); + } /* Note: The "warn" return is just to inform the options * supervisor that we didn't handle it. It will generate @@ -259,7 +329,7 @@ archive_compressor_zstd_options(struct archive_write_filter *f, const char *key, return (ARCHIVE_WARN); } -#if HAVE_ZSTD_H && HAVE_LIBZSTD_COMPRESSOR +#if HAVE_ZSTD_H && HAVE_ZSTD_compressStream /* * Setup callback. */ @@ -301,6 +371,10 @@ archive_compressor_zstd_open(struct archive_write_filter *f) ZSTD_CCtx_setParameter(data->cstream, ZSTD_c_nbWorkers, data->threads); +#if ZSTD_VERSION_NUMBER >= MINVER_LONG + ZSTD_CCtx_setParameter(data->cstream, ZSTD_c_windowLog, data->long_distance); +#endif + return (ARCHIVE_OK); } @@ -324,9 +398,12 @@ archive_compressor_zstd_flush(struct archive_write_filter *f) { struct private_data *data = (struct private_data *)f->data; - if (data->frame_per_file && data->state == running && - data->cur_frame_out > data->min_frame_size) - data->state = finishing; + if (data->frame_per_file && data->state == running) { + if (data->cur_frame_in > data->min_frame_in && + data->cur_frame_out > data->min_frame_out) { + data->state = finishing; + } + } return (drive_compressor(f, data, 1, NULL, 0)); } @@ -385,9 +462,11 @@ drive_compressor(struct archive_write_filter *f, data->total_in += in.pos - ipos; data->cur_frame_in += in.pos - ipos; data->cur_frame_out += data->out.pos - opos; - if (data->state == running && - data->cur_frame_in >= data->max_frame_size) { - data->state = finishing; + if (data->state == running) { + if (data->cur_frame_in >= data->max_frame_in || + data->cur_frame_out >= data->max_frame_out) { + data->state = finishing; + } } if (data->out.pos == data->out.size || (flush && data->out.pos > 0)) { @@ -406,7 +485,7 @@ fatal: return (ARCHIVE_FATAL); } -#else /* HAVE_ZSTD_H && HAVE_LIBZSTD_COMPRESSOR */ +#else /* HAVE_ZSTD_H && HAVE_ZSTD_compressStream */ static int archive_compressor_zstd_open(struct archive_write_filter *f) @@ -433,6 +512,10 @@ archive_compressor_zstd_open(struct archive_write_filter *f) archive_string_sprintf(&as, " --threads=%d", data->threads); } + if (data->long_distance != 0) { + archive_string_sprintf(&as, " --long=%d", data->long_distance); + } + f->write = archive_compressor_zstd_write; r = __archive_write_program_open(f, data->pdata, as.s); archive_string_free(&as); @@ -464,4 +547,4 @@ archive_compressor_zstd_close(struct archive_write_filter *f) return __archive_write_program_close(f, data->pdata); } -#endif /* HAVE_ZSTD_H && HAVE_LIBZSTD_COMPRESSOR */ +#endif /* HAVE_ZSTD_H && HAVE_ZSTD_compressStream */ diff --git a/contrib/libarchive/libarchive/archive_write_blocksize.3 b/contrib/libarchive/libarchive/archive_write_blocksize.3 index 4973f9990566..3508851cefab 100644 --- a/contrib/libarchive/libarchive/archive_write_blocksize.3 +++ b/contrib/libarchive/libarchive/archive_write_blocksize.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd February 2, 2012 .Dt ARCHIVE_WRITE_BLOCKSIZE 3 .Os diff --git a/contrib/libarchive/libarchive/archive_write_data.3 b/contrib/libarchive/libarchive/archive_write_data.3 index bc208b45d53a..9f239f7c9ece 100644 --- a/contrib/libarchive/libarchive/archive_write_data.3 +++ b/contrib/libarchive/libarchive/archive_write_data.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd February 28, 2017 .Dt ARCHIVE_WRITE_DATA 3 .Os diff --git a/contrib/libarchive/libarchive/archive_write_disk.3 b/contrib/libarchive/libarchive/archive_write_disk.3 index 97f3fcde9f88..b046168c338c 100644 --- a/contrib/libarchive/libarchive/archive_write_disk.3 +++ b/contrib/libarchive/libarchive/archive_write_disk.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd January 19, 2020 .Dt ARCHIVE_WRITE_DISK 3 .Os diff --git a/contrib/libarchive/libarchive/archive_write_disk_posix.c b/contrib/libarchive/libarchive/archive_write_disk_posix.c index aeefe93b38ef..f671bc6db747 100644 --- a/contrib/libarchive/libarchive/archive_write_disk_posix.c +++ b/contrib/libarchive/libarchive/archive_write_disk_posix.c @@ -26,7 +26,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #if !defined(_WIN32) || defined(__CYGWIN__) diff --git a/contrib/libarchive/libarchive/archive_write_disk_private.h b/contrib/libarchive/libarchive/archive_write_disk_private.h index 7c5e6f815d72..3efe2bad336a 100644 --- a/contrib/libarchive/libarchive/archive_write_disk_private.h +++ b/contrib/libarchive/libarchive/archive_write_disk_private.h @@ -22,8 +22,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ #ifndef ARCHIVE_WRITE_DISK_PRIVATE_H_INCLUDED diff --git a/contrib/libarchive/libarchive/archive_write_disk_set_standard_lookup.c b/contrib/libarchive/libarchive/archive_write_disk_set_standard_lookup.c index a66964a94cec..964169898e45 100644 --- a/contrib/libarchive/libarchive/archive_write_disk_set_standard_lookup.c +++ b/contrib/libarchive/libarchive/archive_write_disk_set_standard_lookup.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> diff --git a/contrib/libarchive/libarchive/archive_write_filter.3 b/contrib/libarchive/libarchive/archive_write_filter.3 index c83eb77b6a5e..b39cabe04782 100644 --- a/contrib/libarchive/libarchive/archive_write_filter.3 +++ b/contrib/libarchive/libarchive/archive_write_filter.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd August 14, 2014 .Dt ARCHIVE_WRITE_FILTER 3 .Os diff --git a/contrib/libarchive/libarchive/archive_write_finish_entry.3 b/contrib/libarchive/libarchive/archive_write_finish_entry.3 index 5797e16a6dbc..574d6008581e 100644 --- a/contrib/libarchive/libarchive/archive_write_finish_entry.3 +++ b/contrib/libarchive/libarchive/archive_write_finish_entry.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd February 28, 2017 .Dt ARCHIVE_WRITE_FINISH_ENTRY 3 .Os diff --git a/contrib/libarchive/libarchive/archive_write_format.3 b/contrib/libarchive/libarchive/archive_write_format.3 index 653089f7795d..9e331368aeef 100644 --- a/contrib/libarchive/libarchive/archive_write_format.3 +++ b/contrib/libarchive/libarchive/archive_write_format.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd February 14, 2013 .Dt ARCHIVE_WRITE_FORMAT 3 .Os diff --git a/contrib/libarchive/libarchive/archive_write_free.3 b/contrib/libarchive/libarchive/archive_write_free.3 index 5210e2a633de..f6b84eae918f 100644 --- a/contrib/libarchive/libarchive/archive_write_free.3 +++ b/contrib/libarchive/libarchive/archive_write_free.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd February 2, 2012 .Dt ARCHIVE_WRITE_FREE 3 .Os diff --git a/contrib/libarchive/libarchive/archive_write_header.3 b/contrib/libarchive/libarchive/archive_write_header.3 index 2217b1871bba..9c6ecec4e097 100644 --- a/contrib/libarchive/libarchive/archive_write_header.3 +++ b/contrib/libarchive/libarchive/archive_write_header.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd February 2, 2012 .Dt ARCHIVE_WRITE_HEADER 3 .Os diff --git a/contrib/libarchive/libarchive/archive_write_new.3 b/contrib/libarchive/libarchive/archive_write_new.3 index 788cbb855985..15a7c40703bf 100644 --- a/contrib/libarchive/libarchive/archive_write_new.3 +++ b/contrib/libarchive/libarchive/archive_write_new.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd February 2, 2012 .Dt ARCHIVE_WRITE_NEW 3 .Os diff --git a/contrib/libarchive/libarchive/archive_write_open.3 b/contrib/libarchive/libarchive/archive_write_open.3 index 6bceb964f582..b12d097028c0 100644 --- a/contrib/libarchive/libarchive/archive_write_open.3 +++ b/contrib/libarchive/libarchive/archive_write_open.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd November 12, 2020 .Dt ARCHIVE_WRITE_OPEN 3 .Os diff --git a/contrib/libarchive/libarchive/archive_write_open_fd.c b/contrib/libarchive/libarchive/archive_write_open_fd.c index 1e6971d554db..a58ae047967b 100644 --- a/contrib/libarchive/libarchive/archive_write_open_fd.c +++ b/contrib/libarchive/libarchive/archive_write_open_fd.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_STAT_H #include <sys/stat.h> diff --git a/contrib/libarchive/libarchive/archive_write_open_file.c b/contrib/libarchive/libarchive/archive_write_open_file.c index fb5c9c734cd0..d787da3af388 100644 --- a/contrib/libarchive/libarchive/archive_write_open_file.c +++ b/contrib/libarchive/libarchive/archive_write_open_file.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_STAT_H #include <sys/stat.h> diff --git a/contrib/libarchive/libarchive/archive_write_open_filename.c b/contrib/libarchive/libarchive/archive_write_open_filename.c index 965f40e3bae5..7dc73d55f43e 100644 --- a/contrib/libarchive/libarchive/archive_write_open_filename.c +++ b/contrib/libarchive/libarchive/archive_write_open_filename.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_STAT_H #include <sys/stat.h> diff --git a/contrib/libarchive/libarchive/archive_write_open_memory.c b/contrib/libarchive/libarchive/archive_write_open_memory.c index 9ef446bd1e8d..609cc47d964a 100644 --- a/contrib/libarchive/libarchive/archive_write_open_memory.c +++ b/contrib/libarchive/libarchive/archive_write_open_memory.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #include <errno.h> #include <stdlib.h> diff --git a/contrib/libarchive/libarchive/archive_write_private.h b/contrib/libarchive/libarchive/archive_write_private.h index 3a11208122ea..abd5a8ddcd85 100644 --- a/contrib/libarchive/libarchive/archive_write_private.h +++ b/contrib/libarchive/libarchive/archive_write_private.h @@ -21,8 +21,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ #ifndef ARCHIVE_WRITE_PRIVATE_H_INCLUDED diff --git a/contrib/libarchive/libarchive/archive_write_set_format.c b/contrib/libarchive/libarchive/archive_write_set_format.c index 5395915e6569..f636cff74714 100644 --- a/contrib/libarchive/libarchive/archive_write_set_format.c +++ b/contrib/libarchive/libarchive/archive_write_set_format.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> diff --git a/contrib/libarchive/libarchive/archive_write_set_format_7zip.c b/contrib/libarchive/libarchive/archive_write_set_format_7zip.c index a5919061673d..f7d8890ba3bf 100644 --- a/contrib/libarchive/libarchive/archive_write_set_format_7zip.c +++ b/contrib/libarchive/libarchive/archive_write_set_format_7zip.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_ERRNO_H #include <errno.h> @@ -91,6 +90,26 @@ __FBSDID("$FreeBSD$"); #define kAttributes 0x15 #define kEncodedHeader 0x17 +// Check that some windows file attribute constants are defined. +// Reference: https://learn.microsoft.com/en-us/windows/win32/fileio/file-attribute-constants +#ifndef FILE_ATTRIBUTE_READONLY +#define FILE_ATTRIBUTE_READONLY 0x00000001 +#endif + +#ifndef FILE_ATTRIBUTE_DIRECTORY +#define FILE_ATTRIBUTE_DIRECTORY 0x00000010 +#endif + +#ifndef FILE_ATTRIBUTE_ARCHIVE +#define FILE_ATTRIBUTE_ARCHIVE 0x00000020 +#endif + +// This value is defined in 7zip with the comment "trick for Unix". +// +// 7z archives created on unix have this bit set in the high 16 bits of +// the attr field along with the unix permissions. +#define FILE_ATTRIBUTE_UNIX_EXTENSION 0x8000 + enum la_zaction { ARCHIVE_Z_FINISH, ARCHIVE_Z_RUN @@ -1424,14 +1443,19 @@ make_header(struct archive_write *a, uint64_t offset, uint64_t pack_size, * High 16bits is unix mode. * Low 16bits is Windows attributes. */ - uint32_t encattr, attr; + uint32_t encattr, attr = 0; + if (file->dir) - attr = 0x8010; + attr |= FILE_ATTRIBUTE_DIRECTORY; else - attr = 0x8020; + attr |= FILE_ATTRIBUTE_ARCHIVE; + if ((file->mode & 0222) == 0) - attr |= 1;/* Read Only. */ + attr |= FILE_ATTRIBUTE_READONLY; + + attr |= FILE_ATTRIBUTE_UNIX_EXTENSION; attr |= ((uint32_t)file->mode) << 16; + archive_le32enc(&encattr, attr); r = (int)compress_out(a, &encattr, 4, ARCHIVE_Z_RUN); if (r < 0) diff --git a/contrib/libarchive/libarchive/archive_write_set_format_ar.c b/contrib/libarchive/libarchive/archive_write_set_format_ar.c index b25ffbcc40ec..38689d89be0e 100644 --- a/contrib/libarchive/libarchive/archive_write_set_format_ar.c +++ b/contrib/libarchive/libarchive/archive_write_set_format_ar.c @@ -26,7 +26,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_ERRNO_H #include <errno.h> diff --git a/contrib/libarchive/libarchive/archive_write_set_format_by_name.c b/contrib/libarchive/libarchive/archive_write_set_format_by_name.c index bf75fc022e06..09519b123894 100644 --- a/contrib/libarchive/libarchive/archive_write_set_format_by_name.c +++ b/contrib/libarchive/libarchive/archive_write_set_format_by_name.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> diff --git a/contrib/libarchive/libarchive/archive_write_set_format_cpio_binary.c b/contrib/libarchive/libarchive/archive_write_set_format_cpio_binary.c index d6ce35a7bc1f..7a010ee00f22 100644 --- a/contrib/libarchive/libarchive/archive_write_set_format_cpio_binary.c +++ b/contrib/libarchive/libarchive/archive_write_set_format_cpio_binary.c @@ -25,7 +25,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD: head/lib/libarchive/archive_write_set_format_cpio.c 201170 2009-12-29 06:34:23Z kientzle $"); #ifdef HAVE_ERRNO_H #include <errno.h> diff --git a/contrib/libarchive/libarchive/archive_write_set_format_cpio_newc.c b/contrib/libarchive/libarchive/archive_write_set_format_cpio_newc.c index 9075616f9d71..006736a1fa22 100644 --- a/contrib/libarchive/libarchive/archive_write_set_format_cpio_newc.c +++ b/contrib/libarchive/libarchive/archive_write_set_format_cpio_newc.c @@ -26,7 +26,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_ERRNO_H #include <errno.h> diff --git a/contrib/libarchive/libarchive/archive_write_set_format_cpio_odc.c b/contrib/libarchive/libarchive/archive_write_set_format_cpio_odc.c index 091925a2f9f2..426f779a2b0b 100644 --- a/contrib/libarchive/libarchive/archive_write_set_format_cpio_odc.c +++ b/contrib/libarchive/libarchive/archive_write_set_format_cpio_odc.c @@ -25,7 +25,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD: head/lib/libarchive/archive_write_set_format_cpio.c 201170 2009-12-29 06:34:23Z kientzle $"); #ifdef HAVE_ERRNO_H #include <errno.h> diff --git a/contrib/libarchive/libarchive/archive_write_set_format_filter_by_ext.c b/contrib/libarchive/libarchive/archive_write_set_format_filter_by_ext.c index 9fe21e4542a0..1bb33b04bf91 100644 --- a/contrib/libarchive/libarchive/archive_write_set_format_filter_by_ext.c +++ b/contrib/libarchive/libarchive/archive_write_set_format_filter_by_ext.c @@ -25,7 +25,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD: head/lib/libarchive/archive_write_set_format_by_name.c 201168 2009-12-29 06:15:32Z kientzle $"); #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> diff --git a/contrib/libarchive/libarchive/archive_write_set_format_gnutar.c b/contrib/libarchive/libarchive/archive_write_set_format_gnutar.c index ec29c5c418e4..92b06c5f5fb4 100644 --- a/contrib/libarchive/libarchive/archive_write_set_format_gnutar.c +++ b/contrib/libarchive/libarchive/archive_write_set_format_gnutar.c @@ -27,8 +27,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD: head/lib/libarchive/archive_write_set_format_gnu_tar.c 191579 2009-04-27 18:35:03Z gastal $"); - #ifdef HAVE_ERRNO_H #include <errno.h> diff --git a/contrib/libarchive/libarchive/archive_write_set_format_mtree.c b/contrib/libarchive/libarchive/archive_write_set_format_mtree.c index 183071266bbf..6db9d27848af 100644 --- a/contrib/libarchive/libarchive/archive_write_set_format_mtree.c +++ b/contrib/libarchive/libarchive/archive_write_set_format_mtree.c @@ -25,7 +25,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> diff --git a/contrib/libarchive/libarchive/archive_write_set_format_pax.c b/contrib/libarchive/libarchive/archive_write_set_format_pax.c index 8ce1d18c61e5..e93333074a6a 100644 --- a/contrib/libarchive/libarchive/archive_write_set_format_pax.c +++ b/contrib/libarchive/libarchive/archive_write_set_format_pax.c @@ -26,7 +26,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_ERRNO_H #include <errno.h> diff --git a/contrib/libarchive/libarchive/archive_write_set_format_private.h b/contrib/libarchive/libarchive/archive_write_set_format_private.h index e20022755f8b..ef9dee9d808c 100644 --- a/contrib/libarchive/libarchive/archive_write_set_format_private.h +++ b/contrib/libarchive/libarchive/archive_write_set_format_private.h @@ -21,8 +21,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ #ifndef ARCHIVE_WRITE_SET_FORMAT_PRIVATE_H_INCLUDED diff --git a/contrib/libarchive/libarchive/archive_write_set_format_shar.c b/contrib/libarchive/libarchive/archive_write_set_format_shar.c index 625a86475a81..52ea6adc2264 100644 --- a/contrib/libarchive/libarchive/archive_write_set_format_shar.c +++ b/contrib/libarchive/libarchive/archive_write_set_format_shar.c @@ -25,7 +25,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_ERRNO_H #include <errno.h> diff --git a/contrib/libarchive/libarchive/archive_write_set_format_ustar.c b/contrib/libarchive/libarchive/archive_write_set_format_ustar.c index b1536dc97d16..673487b27fe3 100644 --- a/contrib/libarchive/libarchive/archive_write_set_format_ustar.c +++ b/contrib/libarchive/libarchive/archive_write_set_format_ustar.c @@ -25,8 +25,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); - #ifdef HAVE_ERRNO_H #include <errno.h> diff --git a/contrib/libarchive/libarchive/archive_write_set_format_v7tar.c b/contrib/libarchive/libarchive/archive_write_set_format_v7tar.c index 599407144121..e3724a096da7 100644 --- a/contrib/libarchive/libarchive/archive_write_set_format_v7tar.c +++ b/contrib/libarchive/libarchive/archive_write_set_format_v7tar.c @@ -25,8 +25,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); - #ifdef HAVE_ERRNO_H #include <errno.h> diff --git a/contrib/libarchive/libarchive/archive_write_set_format_warc.c b/contrib/libarchive/libarchive/archive_write_set_format_warc.c index 0ef003e2fc94..3d22e1f4ba57 100644 --- a/contrib/libarchive/libarchive/archive_write_set_format_warc.c +++ b/contrib/libarchive/libarchive/archive_write_set_format_warc.c @@ -26,7 +26,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_ERRNO_H #include <errno.h> diff --git a/contrib/libarchive/libarchive/archive_write_set_format_xar.c b/contrib/libarchive/libarchive/archive_write_set_format_xar.c index 7307757d37a1..2cf655da186a 100644 --- a/contrib/libarchive/libarchive/archive_write_set_format_xar.c +++ b/contrib/libarchive/libarchive/archive_write_set_format_xar.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_ERRNO_H #include <errno.h> diff --git a/contrib/libarchive/libarchive/archive_write_set_format_zip.c b/contrib/libarchive/libarchive/archive_write_set_format_zip.c index 84b7d8b14e8f..e37e7b5edda1 100644 --- a/contrib/libarchive/libarchive/archive_write_set_format_zip.c +++ b/contrib/libarchive/libarchive/archive_write_set_format_zip.c @@ -30,7 +30,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_ERRNO_H #include <errno.h> @@ -132,7 +131,6 @@ struct zip { enum compression entry_compression; enum encryption entry_encryption; int entry_flags; - int entry_uses_zip64; int experiments; struct trad_enc_ctx tctx; char tctx_valid; @@ -523,6 +521,7 @@ archive_write_zip_header(struct archive_write *a, struct archive_entry *entry) int ret, ret2 = ARCHIVE_OK; mode_t type; int version_needed = 10; +#define MIN_VERSION_NEEDED(x) do { if (version_needed < x) { version_needed = x; } } while (0) /* Ignore types of entries that we don't support. */ type = archive_entry_filetype(entry); @@ -557,12 +556,12 @@ archive_write_zip_header(struct archive_write *a, struct archive_entry *entry) /* Reset information from last entry. */ zip->entry_offset = zip->written_bytes; zip->entry_uncompressed_limit = INT64_MAX; + /* Zero size values implies that we're using a trailing data descriptor */ zip->entry_compressed_size = 0; zip->entry_uncompressed_size = 0; zip->entry_compressed_written = 0; zip->entry_uncompressed_written = 0; zip->entry_flags = 0; - zip->entry_uses_zip64 = 0; zip->entry_crc32 = zip->crc32func(0, NULL, 0); zip->entry_encryption = 0; archive_entry_free(zip->entry); @@ -672,11 +671,11 @@ archive_write_zip_header(struct archive_write *a, struct archive_entry *entry) zip->entry_crc32 = zip->crc32func(zip->entry_crc32, (const unsigned char *)slink, slink_size); zip->entry_compression = COMPRESSION_STORE; - version_needed = 20; + MIN_VERSION_NEEDED(20); } else if (type != AE_IFREG) { zip->entry_compression = COMPRESSION_STORE; zip->entry_uncompressed_limit = 0; - version_needed = 20; + MIN_VERSION_NEEDED(20); } else if (archive_entry_size_is_set(zip->entry)) { int64_t size = archive_entry_size(zip->entry); int64_t additional_size = 0; @@ -689,27 +688,27 @@ archive_write_zip_header(struct archive_write *a, struct archive_entry *entry) if (zip->entry_compression == COMPRESSION_STORE) { zip->entry_compressed_size = size; zip->entry_uncompressed_size = size; - version_needed = 10; + MIN_VERSION_NEEDED(10); } else { zip->entry_uncompressed_size = size; - version_needed = 20; + MIN_VERSION_NEEDED(20); } if (zip->entry_flags & ZIP_ENTRY_FLAG_ENCRYPTED) { switch (zip->entry_encryption) { case ENCRYPTION_TRADITIONAL: additional_size = TRAD_HEADER_SIZE; - version_needed = 20; + MIN_VERSION_NEEDED(20); break; case ENCRYPTION_WINZIP_AES128: additional_size = WINZIP_AES128_HEADER_SIZE + AUTH_CODE_SIZE; - version_needed = 20; + MIN_VERSION_NEEDED(20); break; case ENCRYPTION_WINZIP_AES256: additional_size = WINZIP_AES256_HEADER_SIZE + AUTH_CODE_SIZE; - version_needed = 20; + MIN_VERSION_NEEDED(20); break; case ENCRYPTION_NONE: default: @@ -733,8 +732,7 @@ archive_write_zip_header(struct archive_write *a, struct archive_entry *entry) || (zip->entry_uncompressed_size + additional_size > ZIP_4GB_MAX) || (zip->entry_uncompressed_size > ZIP_4GB_MAX_UNCOMPRESSED && zip->entry_compression != COMPRESSION_STORE)) { - zip->entry_uses_zip64 = 1; - version_needed = 45; + MIN_VERSION_NEEDED(45); } /* We may know the size, but never the CRC. */ @@ -742,7 +740,6 @@ archive_write_zip_header(struct archive_write *a, struct archive_entry *entry) } else { /* We don't know the size. Use the default * compression unless specified otherwise. - * We enable Zip64 extensions unless we're told not to. */ zip->entry_compression = zip->requested_compression; @@ -752,12 +749,12 @@ archive_write_zip_header(struct archive_write *a, struct archive_entry *entry) zip->entry_flags |= ZIP_ENTRY_FLAG_LENGTH_AT_END; if ((zip->flags & ZIP_FLAG_AVOID_ZIP64) == 0) { - zip->entry_uses_zip64 = 1; - version_needed = 45; + /* We might use zip64 extensions, so require 4.5 */ + MIN_VERSION_NEEDED(45); } else if (zip->entry_compression == COMPRESSION_STORE) { - version_needed = 10; + MIN_VERSION_NEEDED(10); } else { - version_needed = 20; + MIN_VERSION_NEEDED(20); } if (zip->entry_flags & ZIP_ENTRY_FLAG_ENCRYPTED) { @@ -765,8 +762,7 @@ archive_write_zip_header(struct archive_write *a, struct archive_entry *entry) case ENCRYPTION_TRADITIONAL: case ENCRYPTION_WINZIP_AES128: case ENCRYPTION_WINZIP_AES256: - if (version_needed < 20) - version_needed = 20; + MIN_VERSION_NEEDED(20); break; case ENCRYPTION_NONE: default: @@ -787,16 +783,8 @@ archive_write_zip_header(struct archive_write *a, struct archive_entry *entry) archive_le16enc(local_header + 8, zip->entry_compression); archive_le32enc(local_header + 10, dos_time(archive_entry_mtime(zip->entry))); - archive_le32enc(local_header + 14, zip->entry_crc32); - if (zip->entry_uses_zip64) { - /* Zip64 data in the local header "must" include both - * compressed and uncompressed sizes AND those fields - * are included only if these are 0xffffffff; - * THEREFORE these must be set this way, even if we - * know one of them is smaller. */ - archive_le32enc(local_header + 18, ZIP_4GB_MAX); - archive_le32enc(local_header + 22, ZIP_4GB_MAX); - } else { + if ((zip->entry_flags & ZIP_ENTRY_FLAG_LENGTH_AT_END) == 0) { + archive_le32enc(local_header + 14, zip->entry_crc32); archive_le32enc(local_header + 18, (uint32_t)zip->entry_compressed_size); archive_le32enc(local_header + 22, (uint32_t)zip->entry_uncompressed_size); } @@ -842,42 +830,19 @@ archive_write_zip_header(struct archive_write *a, struct archive_entry *entry) * the local file header and the central directory. * We format them once and then duplicate them. */ - /* UT timestamp, length depends on what timestamps are set. */ - memcpy(e, "UT", 2); - archive_le16enc(e + 2, - 1 - + (archive_entry_mtime_is_set(entry) ? 4 : 0) - + (archive_entry_atime_is_set(entry) ? 4 : 0) - + (archive_entry_ctime_is_set(entry) ? 4 : 0)); - e += 4; - *e++ = - (archive_entry_mtime_is_set(entry) ? 1 : 0) - | (archive_entry_atime_is_set(entry) ? 2 : 0) - | (archive_entry_ctime_is_set(entry) ? 4 : 0); - if (archive_entry_mtime_is_set(entry)) { - archive_le32enc(e, (uint32_t)archive_entry_mtime(entry)); - e += 4; - } - if (archive_entry_atime_is_set(entry)) { - archive_le32enc(e, (uint32_t)archive_entry_atime(entry)); + /* ux Unix extra data, length 11, version 1 */ + if (archive_entry_uid_is_set(entry) || archive_entry_gid_is_set(entry)) { + /* TODO: If uid < 64k, use 2 bytes, ditto for gid. */ + memcpy(e, "ux\013\000\001", 5); + e += 5; + *e++ = 4; /* Length of following UID */ + archive_le32enc(e, (uint32_t)archive_entry_uid(entry)); e += 4; - } - if (archive_entry_ctime_is_set(entry)) { - archive_le32enc(e, (uint32_t)archive_entry_ctime(entry)); + *e++ = 4; /* Length of following GID */ + archive_le32enc(e, (uint32_t)archive_entry_gid(entry)); e += 4; } - /* ux Unix extra data, length 11, version 1 */ - /* TODO: If uid < 64k, use 2 bytes, ditto for gid. */ - memcpy(e, "ux\013\000\001", 5); - e += 5; - *e++ = 4; /* Length of following UID */ - archive_le32enc(e, (uint32_t)archive_entry_uid(entry)); - e += 4; - *e++ = 4; /* Length of following GID */ - archive_le32enc(e, (uint32_t)archive_entry_gid(entry)); - e += 4; - /* AES extra data field: WinZIP AES information, ID=0x9901 */ if ((zip->entry_flags & ZIP_ENTRY_FLAG_ENCRYPTED) && (zip->entry_encryption == ENCRYPTION_WINZIP_AES128 @@ -904,7 +869,7 @@ archive_write_zip_header(struct archive_write *a, struct archive_entry *entry) e += 2; } - /* Copy UT ,ux, and AES-extra into central directory as well. */ + /* Copy ux, AES-extra into central directory as well. */ zip->file_header_extra_offset = zip->central_directory_bytes; cd_extra = cd_alloc(zip, e - local_extra); memcpy(cd_extra, local_extra, e - local_extra); @@ -916,17 +881,50 @@ archive_write_zip_header(struct archive_write *a, struct archive_entry *entry) * archive_write_zip_finish_entry() below. */ - /* "[Zip64 entry] in the local header MUST include BOTH - * original [uncompressed] and compressed size fields." */ - if (zip->entry_uses_zip64) { - unsigned char *zip64_start = e; - memcpy(e, "\001\000\020\000", 4); + /* UT timestamp: length depends on what timestamps are set. + * This header appears in the Central Directory also, but + * according to Info-Zip specification, the CD form + * only holds mtime, so we format it separately. */ + if (archive_entry_mtime_is_set(entry) + || archive_entry_atime_is_set(entry) + || archive_entry_ctime_is_set(entry)) { + unsigned char *ut = e; + memcpy(e, "UT\000\000", 4); + e += 4; + *e++ = (archive_entry_mtime_is_set(entry) ? 1 : 0) + | (archive_entry_atime_is_set(entry) ? 2 : 0) + | (archive_entry_ctime_is_set(entry) ? 4 : 0); + if (archive_entry_mtime_is_set(entry)) { + archive_le32enc(e, (uint32_t)archive_entry_mtime(entry)); + e += 4; + } + if (archive_entry_atime_is_set(entry)) { + archive_le32enc(e, (uint32_t)archive_entry_atime(entry)); + e += 4; + } + if (archive_entry_ctime_is_set(entry)) { + archive_le32enc(e, (uint32_t)archive_entry_ctime(entry)); + e += 4; + } + archive_le16enc(ut + 2, e - ut - 4); + } + + /* + * Note about Zip64 Extended Information Extra Field: + * Because libarchive always writes in a streaming + * fashion, we never know the CRC when we're writing + * the local header. So we have to use length-at-end, which + * prevents us from putting size information into a Zip64 + * extra field. However, apparently some readers find it + * a helpful clue to have an empty such field so they + * can expect a 64-bit length-at-end marker. + */ + if (archive_entry_size_is_set(zip->entry) + && (zip->entry_uncompressed_size > ZIP_4GB_MAX + || zip->entry_compressed_size > ZIP_4GB_MAX)) { + /* Header ID 0x0001, size 0 */ + memcpy(e, "\001\000\000\000", 4); e += 4; - archive_le64enc(e, zip->entry_uncompressed_size); - e += 8; - archive_le64enc(e, zip->entry_compressed_size); - e += 8; - archive_le16enc(zip64_start + 2, (uint16_t)(e - (zip64_start + 4))); } if (zip->flags & ZIP_FLAG_EXPERIMENT_xl) { @@ -1205,7 +1203,9 @@ archive_write_zip_finish_entry(struct archive_write *a) archive_le32enc(d + 4, 0);/* no CRC.*/ else archive_le32enc(d + 4, zip->entry_crc32); - if (zip->entry_uses_zip64) { + if (zip->entry_compressed_written > ZIP_4GB_MAX + || zip->entry_uncompressed_written > ZIP_4GB_MAX + || zip->flags & ZIP_FLAG_FORCE_ZIP64) { archive_le64enc(d + 8, (uint64_t)zip->entry_compressed_written); archive_le64enc(d + 16, @@ -1224,23 +1224,60 @@ archive_write_zip_finish_entry(struct archive_write *a) return (ARCHIVE_FATAL); } - /* Append Zip64 extra data to central directory information. */ - if (zip->entry_compressed_written > ZIP_4GB_MAX - || zip->entry_uncompressed_written > ZIP_4GB_MAX + /* UT timestamp: Info-Zip specifies that _only_ the mtime should + * be recorded here; ctime and atime are also included in the + * local file descriptor. */ + if (archive_entry_mtime_is_set(zip->entry)) { + unsigned char ut[9]; + unsigned char *u = ut, *ud; + memcpy(u, "UT\005\000\001", 5); + u += 5; + archive_le32enc(u, (uint32_t)archive_entry_mtime(zip->entry)); + u += 4; + ud = cd_alloc(zip, u - ut); + if (ud == NULL) { + archive_set_error(&a->archive, ENOMEM, + "Can't allocate zip data"); + return (ARCHIVE_FATAL); + } + memcpy(ud, ut, u - ut); + } + + /* Fill in size information in the central directory entry. */ + /* Fix up central directory file header. */ + if (zip->cctx_valid && zip->aes_vendor == AES_VENDOR_AE_2) + archive_le32enc(zip->file_header + 16, 0);/* no CRC.*/ + else + archive_le32enc(zip->file_header + 16, zip->entry_crc32); + /* Truncate to 32 bits; we'll fix up below. */ + archive_le32enc(zip->file_header + 20, (uint32_t)zip->entry_compressed_written); + archive_le32enc(zip->file_header + 24, (uint32_t)zip->entry_uncompressed_written); + archive_le16enc(zip->file_header + 30, + (uint16_t)(zip->central_directory_bytes - zip->file_header_extra_offset)); + archive_le32enc(zip->file_header + 42, (uint32_t)zip->entry_offset); + + /* If any of the values immediately above are too large, we'll + * need to put the corresponding value in a Zip64 extra field + * and set the central directory value to 0xffffffff as a flag. */ + if (zip->entry_compressed_written >= ZIP_4GB_MAX + || zip->entry_uncompressed_written >= ZIP_4GB_MAX || zip->entry_offset > ZIP_4GB_MAX) { unsigned char zip64[32]; unsigned char *z = zip64, *zd; memcpy(z, "\001\000\000\000", 4); z += 4; if (zip->entry_uncompressed_written >= ZIP_4GB_MAX) { + archive_le32enc(zip->file_header + 24, ZIP_4GB_MAX); archive_le64enc(z, zip->entry_uncompressed_written); z += 8; } if (zip->entry_compressed_written >= ZIP_4GB_MAX) { + archive_le32enc(zip->file_header + 20, ZIP_4GB_MAX); archive_le64enc(z, zip->entry_compressed_written); z += 8; } if (zip->entry_offset >= ZIP_4GB_MAX) { + archive_le32enc(zip->file_header + 42, ZIP_4GB_MAX); archive_le64enc(z, zip->entry_offset); z += 8; } diff --git a/contrib/libarchive/libarchive/archive_write_set_options.3 b/contrib/libarchive/libarchive/archive_write_set_options.3 index dd573588d573..454c79671b93 100644 --- a/contrib/libarchive/libarchive/archive_write_set_options.3 +++ b/contrib/libarchive/libarchive/archive_write_set_options.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd January 31, 2020 .Dt ARCHIVE_WRITE_OPTIONS 3 .Os @@ -257,12 +255,22 @@ If supported, the default value is read from The value is interpreted as a decimal integer specifying the compression level. Supported values depend on the library version, common values are from 1 to 22. +.It Cm long +Enables long distance matching. The value is interpreted as a +decimal integer specifying log2 window size in bytes. Values from +10 to 30 for 32 bit, or 31 for 64 bit, are supported. +.It Cm threads +The value is interpreted as a decimal integer specifying the +number of threads for multi-threaded zstd compression. +If set to 0, zstd will attempt to detect and use the number +of physical CPU cores. .El .It Format 7zip .Bl -tag -compact -width indent .It Cm compression The value is one of .Dq store , +.Dq copy , .Dq deflate , .Dq bzip2 , .Dq lzma1 , @@ -270,12 +278,18 @@ The value is one of or .Dq ppmd to indicate how the following entries should be compressed. +The values +.Dq store +and +.Dq copy +are synonyms. Note that this setting is ignored for directories, symbolic links, and other special entries. .It Cm compression-level The value is interpreted as a decimal integer specifying the compression level. -Values between 0 and 9 are supported. +Values between 0 and 9 are supported, with the exception of bzip2 +which only supports values between 1 and 9. The interpretation of the compression level depends on the chosen compression method. .El diff --git a/contrib/libarchive/libarchive/archive_write_set_options.c b/contrib/libarchive/libarchive/archive_write_set_options.c index 962309ada5ce..be2a6063188b 100644 --- a/contrib/libarchive/libarchive/archive_write_set_options.c +++ b/contrib/libarchive/libarchive/archive_write_set_options.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #include "archive_write_private.h" #include "archive_options_private.h" diff --git a/contrib/libarchive/libarchive/archive_write_set_passphrase.3 b/contrib/libarchive/libarchive/archive_write_set_passphrase.3 index 2db77034c76e..629e059b2372 100644 --- a/contrib/libarchive/libarchive/archive_write_set_passphrase.3 +++ b/contrib/libarchive/libarchive/archive_write_set_passphrase.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd September 21, 2014 .Dt ARCHIVE_WRITE_SET_PASSPHRASE 3 .Os diff --git a/contrib/libarchive/libarchive/archive_write_set_passphrase.c b/contrib/libarchive/libarchive/archive_write_set_passphrase.c index 710ecba52c3d..977fc4a9ee6b 100644 --- a/contrib/libarchive/libarchive/archive_write_set_passphrase.c +++ b/contrib/libarchive/libarchive/archive_write_set_passphrase.c @@ -24,7 +24,6 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_ERRNO_H #include <errno.h> diff --git a/contrib/libarchive/libarchive/cpio.5 b/contrib/libarchive/libarchive/cpio.5 index c71018b1996e..21c30d78d3c5 100644 --- a/contrib/libarchive/libarchive/cpio.5 +++ b/contrib/libarchive/libarchive/cpio.5 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd December 23, 2011 .Dt CPIO 5 .Os diff --git a/contrib/libarchive/libarchive/filter_fork.h b/contrib/libarchive/libarchive/filter_fork.h index 934795b7c307..aeab70ae634a 100644 --- a/contrib/libarchive/libarchive/filter_fork.h +++ b/contrib/libarchive/libarchive/filter_fork.h @@ -21,8 +21,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ #ifndef FILTER_FORK_H diff --git a/contrib/libarchive/libarchive/filter_fork_posix.c b/contrib/libarchive/libarchive/filter_fork_posix.c index 62085a7099b7..c895c08e59b3 100644 --- a/contrib/libarchive/libarchive/filter_fork_posix.c +++ b/contrib/libarchive/libarchive/filter_fork_posix.c @@ -30,8 +30,6 @@ #if defined(HAVE_PIPE) && defined(HAVE_FCNTL) && \ (defined(HAVE_FORK) || defined(HAVE_VFORK) || defined(HAVE_POSIX_SPAWNP)) -__FBSDID("$FreeBSD: head/lib/libarchive/filter_fork.c 182958 2008-09-12 05:33:00Z kientzle $"); - #if defined(HAVE_SYS_TYPES_H) # include <sys/types.h> #endif diff --git a/contrib/libarchive/libarchive/libarchive-formats.5 b/contrib/libarchive/libarchive/libarchive-formats.5 index 5a118ff5d240..fab2f8660270 100644 --- a/contrib/libarchive/libarchive/libarchive-formats.5 +++ b/contrib/libarchive/libarchive/libarchive-formats.5 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd December 27, 2016 .Dt LIBARCHIVE-FORMATS 5 .Os diff --git a/contrib/libarchive/libarchive/libarchive.3 b/contrib/libarchive/libarchive/libarchive.3 index 649056242285..c67172bf654f 100644 --- a/contrib/libarchive/libarchive/libarchive.3 +++ b/contrib/libarchive/libarchive/libarchive.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd March 18, 2012 .Dt LIBARCHIVE 3 .Os diff --git a/contrib/libarchive/libarchive/libarchive_changes.3 b/contrib/libarchive/libarchive/libarchive_changes.3 index 6bf8db038c73..fd0e721053ca 100644 --- a/contrib/libarchive/libarchive/libarchive_changes.3 +++ b/contrib/libarchive/libarchive/libarchive_changes.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd December 23, 2011 .Dt LIBARCHIVE_CHANGES 3 .Os diff --git a/contrib/libarchive/libarchive/libarchive_internals.3 b/contrib/libarchive/libarchive/libarchive_internals.3 index d672f3e8a64d..d4696f648292 100644 --- a/contrib/libarchive/libarchive/libarchive_internals.3 +++ b/contrib/libarchive/libarchive/libarchive_internals.3 @@ -22,8 +22,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd January 26, 2011 .Dt LIBARCHIVE_INTERNALS 3 .Os diff --git a/contrib/libarchive/libarchive/tar.5 b/contrib/libarchive/libarchive/tar.5 index 34ad4f79315e..725a7d68374a 100644 --- a/contrib/libarchive/libarchive/tar.5 +++ b/contrib/libarchive/libarchive/tar.5 @@ -23,8 +23,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd December 27, 2016 .Dt TAR 5 .Os diff --git a/contrib/libarchive/libarchive/test/README b/contrib/libarchive/libarchive/test/README index 51f065fe1d17..facf62030c9c 100644 --- a/contrib/libarchive/libarchive/test/README +++ b/contrib/libarchive/libarchive/test/README @@ -1,5 +1,3 @@ -$FreeBSD$ - This is the test harness for libarchive. It compiles into a single program "libarchive_test" that is intended diff --git a/contrib/libarchive/libarchive/test/read_open_memory.c b/contrib/libarchive/libarchive/test/read_open_memory.c index 3aa327f94cfb..6d2468cd10a6 100644 --- a/contrib/libarchive/libarchive/test/read_open_memory.c +++ b/contrib/libarchive/libarchive/test/read_open_memory.c @@ -24,7 +24,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); #include <errno.h> #include <stdlib.h> diff --git a/contrib/libarchive/libarchive/test/test_acl_nfs4.c b/contrib/libarchive/libarchive/test/test_acl_nfs4.c index fdc0191516e1..98d39689df69 100644 --- a/contrib/libarchive/libarchive/test/test_acl_nfs4.c +++ b/contrib/libarchive/libarchive/test/test_acl_nfs4.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Exercise the system-independent portion of the ACL support. diff --git a/contrib/libarchive/libarchive/test/test_acl_pax.c b/contrib/libarchive/libarchive/test/test_acl_pax.c index 8566f55a51a4..659073170fad 100644 --- a/contrib/libarchive/libarchive/test/test_acl_pax.c +++ b/contrib/libarchive/libarchive/test/test_acl_pax.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Exercise the system-independent portion of the ACL support. diff --git a/contrib/libarchive/libarchive/test/test_acl_platform_nfs4.c b/contrib/libarchive/libarchive/test/test_acl_platform_nfs4.c index 6a5b4394f8bc..18f047b149e6 100644 --- a/contrib/libarchive/libarchive/test/test_acl_platform_nfs4.c +++ b/contrib/libarchive/libarchive/test/test_acl_platform_nfs4.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #if ARCHIVE_ACL_NFS4 #if HAVE_SYS_ACL_H diff --git a/contrib/libarchive/libarchive/test/test_acl_platform_posix1e.c b/contrib/libarchive/libarchive/test/test_acl_platform_posix1e.c index c34f7c2e299d..f23eec0d336a 100644 --- a/contrib/libarchive/libarchive/test/test_acl_platform_posix1e.c +++ b/contrib/libarchive/libarchive/test/test_acl_platform_posix1e.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD: head/lib/libarchive/test/test_acl_freebsd.c 189427 2009-03-06 04:21:23Z kientzle $"); #if ARCHIVE_ACL_POSIX1E #include <sys/acl.h> diff --git a/contrib/libarchive/libarchive/test/test_acl_posix1e.c b/contrib/libarchive/libarchive/test/test_acl_posix1e.c index fa2628dbe794..3f9c9850f495 100644 --- a/contrib/libarchive/libarchive/test/test_acl_posix1e.c +++ b/contrib/libarchive/libarchive/test/test_acl_posix1e.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD: src/lib/libarchive/test/test_acl_basic.c,v 1.6 2008/10/19 00:13:57 kientzle Exp $"); /* * Exercise the system-independent portion of the ACL support. diff --git a/contrib/libarchive/libarchive/test/test_acl_text.c b/contrib/libarchive/libarchive/test/test_acl_text.c index 80728932cb54..f0931adc8adc 100644 --- a/contrib/libarchive/libarchive/test/test_acl_text.c +++ b/contrib/libarchive/libarchive/test/test_acl_text.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Test converting ACLs to text, both wide and non-wide diff --git a/contrib/libarchive/libarchive/test/test_archive_api_feature.c b/contrib/libarchive/libarchive/test/test_archive_api_feature.c index 343710cfbb16..597d0ed40245 100644 --- a/contrib/libarchive/libarchive/test/test_archive_api_feature.c +++ b/contrib/libarchive/libarchive/test/test_archive_api_feature.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_archive_api_feature) { diff --git a/contrib/libarchive/libarchive/test/test_archive_clear_error.c b/contrib/libarchive/libarchive/test/test_archive_clear_error.c index 66dbe93ec9e8..8b7609e07f2b 100644 --- a/contrib/libarchive/libarchive/test/test_archive_clear_error.c +++ b/contrib/libarchive/libarchive/test/test_archive_clear_error.c @@ -24,7 +24,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_archive_clear_error) { diff --git a/contrib/libarchive/libarchive/test/test_archive_cmdline.c b/contrib/libarchive/libarchive/test/test_archive_cmdline.c index a8236105af0b..e72acb4e9d37 100644 --- a/contrib/libarchive/libarchive/test/test_archive_cmdline.c +++ b/contrib/libarchive/libarchive/test/test_archive_cmdline.c @@ -24,7 +24,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); #define __LIBARCHIVE_TEST #include "archive_cmdline_private.h" diff --git a/contrib/libarchive/libarchive/test/test_archive_getdate.c b/contrib/libarchive/libarchive/test/test_archive_getdate.c index 9e91b83ba81d..e5b8bf7fa8f8 100644 --- a/contrib/libarchive/libarchive/test/test_archive_getdate.c +++ b/contrib/libarchive/libarchive/test/test_archive_getdate.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #include <time.h> diff --git a/contrib/libarchive/libarchive/test/test_archive_match_owner.c b/contrib/libarchive/libarchive/test/test_archive_match_owner.c index 6bf9c6f08cfd..dc31c525941c 100644 --- a/contrib/libarchive/libarchive/test/test_archive_match_owner.c +++ b/contrib/libarchive/libarchive/test/test_archive_match_owner.c @@ -24,7 +24,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); static void test_uid(void) diff --git a/contrib/libarchive/libarchive/test/test_archive_match_path.c b/contrib/libarchive/libarchive/test/test_archive_match_path.c index 5e9b9a8cbf63..ce48263f7614 100644 --- a/contrib/libarchive/libarchive/test/test_archive_match_path.c +++ b/contrib/libarchive/libarchive/test/test_archive_match_path.c @@ -24,7 +24,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); static void test_exclusion_mbs(void) diff --git a/contrib/libarchive/libarchive/test/test_archive_match_time.c b/contrib/libarchive/libarchive/test/test_archive_match_time.c index 23754a1538b1..25a0623a7e5a 100644 --- a/contrib/libarchive/libarchive/test/test_archive_match_time.c +++ b/contrib/libarchive/libarchive/test/test_archive_match_time.c @@ -24,7 +24,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); #define __LIBARCHIVE_BUILD 1 #include "archive_getdate.h" diff --git a/contrib/libarchive/libarchive/test/test_archive_pathmatch.c b/contrib/libarchive/libarchive/test/test_archive_pathmatch.c index 0116df0288d2..3696d38fcf19 100644 --- a/contrib/libarchive/libarchive/test/test_archive_pathmatch.c +++ b/contrib/libarchive/libarchive/test/test_archive_pathmatch.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #define __LIBARCHIVE_TEST #include "archive_pathmatch.h" diff --git a/contrib/libarchive/libarchive/test/test_archive_read_add_passphrase.c b/contrib/libarchive/libarchive/test/test_archive_read_add_passphrase.c index 0ce5a76aedbc..c9b051101433 100644 --- a/contrib/libarchive/libarchive/test/test_archive_read_add_passphrase.c +++ b/contrib/libarchive/libarchive/test/test_archive_read_add_passphrase.c @@ -25,7 +25,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); struct archive_read; extern void __archive_read_reset_passphrase(struct archive_read *); diff --git a/contrib/libarchive/libarchive/test/test_archive_read_close_twice.c b/contrib/libarchive/libarchive/test/test_archive_read_close_twice.c index 16cc805fe027..2f5ee77f117e 100644 --- a/contrib/libarchive/libarchive/test/test_archive_read_close_twice.c +++ b/contrib/libarchive/libarchive/test/test_archive_read_close_twice.c @@ -24,8 +24,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); - DEFINE_TEST(test_archive_read_close_twice) { diff --git a/contrib/libarchive/libarchive/test/test_archive_read_close_twice_open_fd.c b/contrib/libarchive/libarchive/test/test_archive_read_close_twice_open_fd.c index 3aba31791357..62a6a90df1fa 100644 --- a/contrib/libarchive/libarchive/test/test_archive_read_close_twice_open_fd.c +++ b/contrib/libarchive/libarchive/test/test_archive_read_close_twice_open_fd.c @@ -24,7 +24,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_archive_read_close_twice_open_fd) { diff --git a/contrib/libarchive/libarchive/test/test_archive_read_close_twice_open_filename.c b/contrib/libarchive/libarchive/test/test_archive_read_close_twice_open_filename.c index 9a194fdc4a8b..4824319b42bf 100644 --- a/contrib/libarchive/libarchive/test/test_archive_read_close_twice_open_filename.c +++ b/contrib/libarchive/libarchive/test/test_archive_read_close_twice_open_filename.c @@ -24,7 +24,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_archive_read_close_twice_open_filename) { diff --git a/contrib/libarchive/libarchive/test/test_archive_read_multiple_data_objects.c b/contrib/libarchive/libarchive/test/test_archive_read_multiple_data_objects.c index 9962cf7fdf33..f5adb5b7b567 100644 --- a/contrib/libarchive/libarchive/test/test_archive_read_multiple_data_objects.c +++ b/contrib/libarchive/libarchive/test/test_archive_read_multiple_data_objects.c @@ -25,7 +25,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); #if defined(_WIN32) && !defined(__CYGWIN__) #define open _open @@ -185,7 +184,7 @@ file_open(struct archive *a, void *data) mydata->fd = open(mydata->filename, O_RDONLY | O_BINARY); if (mydata->fd >= 0) { - if ((mydata->buffer = (void*)calloc(1, BLOCK_SIZE)) == NULL) + if ((mydata->buffer = (void*)calloc(BLOCK_SIZE, 1)) == NULL) return (ARCHIVE_FAILED); } } @@ -287,7 +286,7 @@ test_customized_multiple_data_objects(void) return; } assert((mydata->filename = - (char *)calloc(1, strlen(filename) + 1)) != NULL); + (char *)calloc(strlen(filename) + 1, sizeof(char))) != NULL); if (mydata->filename == NULL) { free(mydata); assertEqualInt(ARCHIVE_OK, archive_read_free(a)); diff --git a/contrib/libarchive/libarchive/test/test_archive_read_next_header_empty.c b/contrib/libarchive/libarchive/test/test_archive_read_next_header_empty.c index f43cbd934288..ee00291b51cd 100644 --- a/contrib/libarchive/libarchive/test/test_archive_read_next_header_empty.c +++ b/contrib/libarchive/libarchive/test/test_archive_read_next_header_empty.c @@ -24,7 +24,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); static void test_empty_file1(void) diff --git a/contrib/libarchive/libarchive/test/test_archive_read_next_header_raw.c b/contrib/libarchive/libarchive/test/test_archive_read_next_header_raw.c index 1c8af20f8c3e..c3fbb8c21ac4 100644 --- a/contrib/libarchive/libarchive/test/test_archive_read_next_header_raw.c +++ b/contrib/libarchive/libarchive/test/test_archive_read_next_header_raw.c @@ -24,7 +24,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); #define DATA "random garbage for testing purposes" diff --git a/contrib/libarchive/libarchive/test/test_archive_read_open2.c b/contrib/libarchive/libarchive/test/test_archive_read_open2.c index 0a801ac5d26d..6ba27cc4a134 100644 --- a/contrib/libarchive/libarchive/test/test_archive_read_open2.c +++ b/contrib/libarchive/libarchive/test/test_archive_read_open2.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static int open_cb(struct archive *a, void *client) diff --git a/contrib/libarchive/libarchive/test/test_archive_read_set_filter_option.c b/contrib/libarchive/libarchive/test/test_archive_read_set_filter_option.c index 31d575fc737e..68494abbc1e9 100644 --- a/contrib/libarchive/libarchive/test/test_archive_read_set_filter_option.c +++ b/contrib/libarchive/libarchive/test/test_archive_read_set_filter_option.c @@ -24,7 +24,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); #define should(__a, __code, __m, __o, __v) \ assertEqualInt(__code, archive_read_set_filter_option(__a, __m, __o, __v)) diff --git a/contrib/libarchive/libarchive/test/test_archive_read_set_format_option.c b/contrib/libarchive/libarchive/test/test_archive_read_set_format_option.c index 2d7acf3a0aa4..e32d8112445c 100644 --- a/contrib/libarchive/libarchive/test/test_archive_read_set_format_option.c +++ b/contrib/libarchive/libarchive/test/test_archive_read_set_format_option.c @@ -24,7 +24,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); #define should(__a, __code, __m, __o, __v) \ assertEqualInt(__code, archive_read_set_format_option(__a, __m, __o, __v)) diff --git a/contrib/libarchive/libarchive/test/test_archive_read_set_option.c b/contrib/libarchive/libarchive/test/test_archive_read_set_option.c index 0b816b7cd838..195c1eaa3e13 100644 --- a/contrib/libarchive/libarchive/test/test_archive_read_set_option.c +++ b/contrib/libarchive/libarchive/test/test_archive_read_set_option.c @@ -24,7 +24,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); #define should(__a, __code, __m, __o, __v) \ assertEqualInt(__code, archive_read_set_option(__a, __m, __o, __v)) diff --git a/contrib/libarchive/libarchive/test/test_archive_read_set_options.c b/contrib/libarchive/libarchive/test/test_archive_read_set_options.c index a8c68d7dd4cf..2f1f344eaad3 100644 --- a/contrib/libarchive/libarchive/test/test_archive_read_set_options.c +++ b/contrib/libarchive/libarchive/test/test_archive_read_set_options.c @@ -24,7 +24,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); #define should(__a, __code, __opts) \ assertEqualInt(__code, archive_read_set_options(__a, __opts)) diff --git a/contrib/libarchive/libarchive/test/test_archive_read_support.c b/contrib/libarchive/libarchive/test/test_archive_read_support.c index c6eb9346c627..b0c928023e8c 100644 --- a/contrib/libarchive/libarchive/test/test_archive_read_support.c +++ b/contrib/libarchive/libarchive/test/test_archive_read_support.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Verify that the various archive_read_support_* functions diff --git a/contrib/libarchive/libarchive/test/test_archive_set_error.c b/contrib/libarchive/libarchive/test/test_archive_set_error.c index b83c08c884e9..402d5522a661 100644 --- a/contrib/libarchive/libarchive/test/test_archive_set_error.c +++ b/contrib/libarchive/libarchive/test/test_archive_set_error.c @@ -24,7 +24,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); static void test(struct archive *a, int code, const char *msg) diff --git a/contrib/libarchive/libarchive/test/test_archive_string.c b/contrib/libarchive/libarchive/test/test_archive_string.c index 7fa743ba9ed2..f8f1e337bf73 100644 --- a/contrib/libarchive/libarchive/test/test_archive_string.c +++ b/contrib/libarchive/libarchive/test/test_archive_string.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #define __LIBARCHIVE_TEST #include "archive_string.h" @@ -406,7 +405,7 @@ DEFINE_TEST(test_archive_string_sort) srand((unsigned int)time(NULL)); size = sizeof(strings) / sizeof(char *); - assert((test_strings = (char **)calloc(1, sizeof(strings))) != NULL); + assert((test_strings = (char **)calloc(size, sizeof(char *))) != NULL); for (i = 0; i < (size - 1); i++) assert((test_strings[i] = strdup(strings[i])) != NULL); diff --git a/contrib/libarchive/libarchive/test/test_archive_string_conversion.c b/contrib/libarchive/libarchive/test/test_archive_string_conversion.c index 7faf58bfa117..d8c75888a4b3 100644 --- a/contrib/libarchive/libarchive/test/test_archive_string_conversion.c +++ b/contrib/libarchive/libarchive/test/test_archive_string_conversion.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #include <locale.h> @@ -42,8 +41,7 @@ if [ ! -f ${if} ]; then exit 0 fi of=test_archive_string_conversion.txt.Z -echo "\$FreeBSD\$" > ${of}.uu -awk -F ';' '$0 ~/^[0-9A-F]+/ {printf "%s;%s\n", $2, $3}' ${if} | compress | uuencode ${of} >> ${of}.uu +awk -F ';' '$0 ~/^[0-9A-F]+/ {printf "%s;%s\n", $2, $3}' ${if} | compress | uuencode ${of} > ${of}.uu exit 1 */ diff --git a/contrib/libarchive/libarchive/test/test_archive_string_conversion.txt.Z.uu b/contrib/libarchive/libarchive/test/test_archive_string_conversion.txt.Z.uu index 33c2e03bf7a2..a36323393720 100644 --- a/contrib/libarchive/libarchive/test/test_archive_string_conversion.txt.Z.uu +++ b/contrib/libarchive/libarchive/test/test_archive_string_conversion.txt.Z.uu @@ -1,4 +1,3 @@ -$FreeBSD$ begin 644 test_archive_string_conversion.txt.Z M'YV0,8K`"+(#!@P:-$#`F`'CAH*`,(84/)APH8P9#P4.4<CPQD2$'"]R;)@Q MXDB/!D%:G'&RY,:%#3]6G"$2ID.(+SO*#,G29LD@'&,(V;E0:$N<08>FG&ET diff --git a/contrib/libarchive/libarchive/test/test_archive_write_add_filter_by_name.c b/contrib/libarchive/libarchive/test/test_archive_write_add_filter_by_name.c index 49f91ac554dc..c80e161c3b58 100644 --- a/contrib/libarchive/libarchive/test/test_archive_write_add_filter_by_name.c +++ b/contrib/libarchive/libarchive/test/test_archive_write_add_filter_by_name.c @@ -23,9 +23,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - #include "test.h" -__FBSDID("$FreeBSD$"); static void test_filter_by_name(const char *filter_name, int filter_code, @@ -38,7 +36,7 @@ test_filter_by_name(const char *filter_name, int filter_code, char *buff; int r; - assert((buff = calloc(1, buffsize)) != NULL); + assert((buff = calloc(buffsize, sizeof(char))) != NULL); if (buff == NULL) return; diff --git a/contrib/libarchive/libarchive/test/test_archive_write_set_filter_option.c b/contrib/libarchive/libarchive/test/test_archive_write_set_filter_option.c index ab8e67773b50..6b90a831b469 100644 --- a/contrib/libarchive/libarchive/test/test_archive_write_set_filter_option.c +++ b/contrib/libarchive/libarchive/test/test_archive_write_set_filter_option.c @@ -24,7 +24,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); #define should(__a, __code, __m, __o, __v) \ assertEqualInt(__code, archive_write_set_filter_option(__a, __m, __o, __v)) diff --git a/contrib/libarchive/libarchive/test/test_archive_write_set_format_by_name.c b/contrib/libarchive/libarchive/test/test_archive_write_set_format_by_name.c index ef1327431b37..07942f6bffc8 100644 --- a/contrib/libarchive/libarchive/test/test_archive_write_set_format_by_name.c +++ b/contrib/libarchive/libarchive/test/test_archive_write_set_format_by_name.c @@ -23,9 +23,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - #include "test.h" -__FBSDID("$FreeBSD$"); static void test_format_by_name(const char *format_name, const char *compression_type, diff --git a/contrib/libarchive/libarchive/test/test_archive_write_set_format_filter_by_ext.c b/contrib/libarchive/libarchive/test/test_archive_write_set_format_filter_by_ext.c index 22345038609a..fe6c350e48e7 100644 --- a/contrib/libarchive/libarchive/test/test_archive_write_set_format_filter_by_ext.c +++ b/contrib/libarchive/libarchive/test/test_archive_write_set_format_filter_by_ext.c @@ -24,9 +24,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - #include "test.h" -__FBSDID("$FreeBSD$"); static void test_format_filter_by_ext(const char *output_file, diff --git a/contrib/libarchive/libarchive/test/test_archive_write_set_format_option.c b/contrib/libarchive/libarchive/test/test_archive_write_set_format_option.c index d964df44d7fa..38f83aba2ede 100644 --- a/contrib/libarchive/libarchive/test/test_archive_write_set_format_option.c +++ b/contrib/libarchive/libarchive/test/test_archive_write_set_format_option.c @@ -24,7 +24,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); #define should(__a, __code, __m, __o, __v) \ assertEqualInt(__code, archive_write_set_format_option(__a, __m, __o, __v)) diff --git a/contrib/libarchive/libarchive/test/test_archive_write_set_option.c b/contrib/libarchive/libarchive/test/test_archive_write_set_option.c index 27782342f330..aa44edad653d 100644 --- a/contrib/libarchive/libarchive/test/test_archive_write_set_option.c +++ b/contrib/libarchive/libarchive/test/test_archive_write_set_option.c @@ -24,7 +24,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); #define should(__a, __code, __m, __o, __v) \ assertEqualInt(__code, archive_write_set_option(__a, __m, __o, __v)) diff --git a/contrib/libarchive/libarchive/test/test_archive_write_set_options.c b/contrib/libarchive/libarchive/test/test_archive_write_set_options.c index db7e50e7f0f8..6a0198de35e1 100644 --- a/contrib/libarchive/libarchive/test/test_archive_write_set_options.c +++ b/contrib/libarchive/libarchive/test/test_archive_write_set_options.c @@ -24,7 +24,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); #define should(__a, __code, __opts) \ assertEqualInt(__code, archive_write_set_options(__a, __opts)) diff --git a/contrib/libarchive/libarchive/test/test_archive_write_set_passphrase.c b/contrib/libarchive/libarchive/test/test_archive_write_set_passphrase.c index 4bfcbb2c2dab..6e7e66531427 100644 --- a/contrib/libarchive/libarchive/test/test_archive_write_set_passphrase.c +++ b/contrib/libarchive/libarchive/test/test_archive_write_set_passphrase.c @@ -25,7 +25,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); struct archive_write; extern const char * __archive_write_get_passphrase(struct archive_write *); diff --git a/contrib/libarchive/libarchive/test/test_bad_fd.c b/contrib/libarchive/libarchive/test/test_bad_fd.c index 87dd4aa2b73e..11697da49d71 100644 --- a/contrib/libarchive/libarchive/test/test_bad_fd.c +++ b/contrib/libarchive/libarchive/test/test_bad_fd.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* Verify that attempting to open an invalid fd returns correct error. */ DEFINE_TEST(test_bad_fd) diff --git a/contrib/libarchive/libarchive/test/test_compat_bzip2.c b/contrib/libarchive/libarchive/test/test_compat_bzip2.c index 21417be0783f..e126e6f7d329 100644 --- a/contrib/libarchive/libarchive/test/test_compat_bzip2.c +++ b/contrib/libarchive/libarchive/test/test_compat_bzip2.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Verify our ability to read sample files compatibly with bunzip2. diff --git a/contrib/libarchive/libarchive/test/test_compat_bzip2_1.tbz.uu b/contrib/libarchive/libarchive/test/test_compat_bzip2_1.tbz.uu index 8c944140b039..8de9101478a9 100644 --- a/contrib/libarchive/libarchive/test/test_compat_bzip2_1.tbz.uu +++ b/contrib/libarchive/libarchive/test/test_compat_bzip2_1.tbz.uu @@ -1,5 +1,3 @@ -$FreeBSD$ - begin 644 test_compat_bzip2_1.tbz M0EIH.3%!62936;12^)(``#-;D=$00`!_@``!8RT>$`0`$```""``5#5/*'J> MD#(&30_5!H4_5-ZH`T``327U4@&L('"(9-%8<7&$I,`:7FXH<P(<:8)$*)(U diff --git a/contrib/libarchive/libarchive/test/test_compat_bzip2_2.tbz.uu b/contrib/libarchive/libarchive/test/test_compat_bzip2_2.tbz.uu index 286b3673b602..cd0dc6b93d3e 100644 --- a/contrib/libarchive/libarchive/test/test_compat_bzip2_2.tbz.uu +++ b/contrib/libarchive/libarchive/test/test_compat_bzip2_2.tbz.uu @@ -1,5 +1,3 @@ -$FreeBSD$ - begin 644 test_compat_bzip2_2.tbz M0EIH.3%!629361HI1P<``4#;D-$00`#_@``)9RT>$`0``!@P`/@#&$Q,F`F` M`,83$R8"8``1133"1/2-J-#$/U3@;XVF9V'`Y3882XA$*KO6\WTL`]QU&J"8 diff --git a/contrib/libarchive/libarchive/test/test_compat_cpio.c b/contrib/libarchive/libarchive/test/test_compat_cpio.c index 3c74cc373328..12512881112b 100644 --- a/contrib/libarchive/libarchive/test/test_compat_cpio.c +++ b/contrib/libarchive/libarchive/test/test_compat_cpio.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Verify our ability to read various sample files. diff --git a/contrib/libarchive/libarchive/test/test_compat_cpio_1.cpio.uu b/contrib/libarchive/libarchive/test/test_compat_cpio_1.cpio.uu index 3f0ee524c9fc..5cfc0d29f2f5 100644 --- a/contrib/libarchive/libarchive/test/test_compat_cpio_1.cpio.uu +++ b/contrib/libarchive/libarchive/test/test_compat_cpio_1.cpio.uu @@ -1,5 +1,3 @@ -$FreeBSD$ - begin 644 test_compat_cpio_1.cpio M,#<P-S`Q,#`U-CEE8F4P,#`P.#%A-#`P,#`P,V4X,#`P,#`S93@P,#`P,#`P M,31B,61E-#<T,#`P,#`P,#0P,#`P,#`P,#`P,#`P,#4T,#`P,#`P,#`P,#`P diff --git a/contrib/libarchive/libarchive/test/test_compat_gtar.c b/contrib/libarchive/libarchive/test/test_compat_gtar.c index 975b824c4ba0..ba42e726cf78 100644 --- a/contrib/libarchive/libarchive/test/test_compat_gtar.c +++ b/contrib/libarchive/libarchive/test/test_compat_gtar.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Verify our ability to read sample files created by GNU tar. diff --git a/contrib/libarchive/libarchive/test/test_compat_gtar_1.tar.uu b/contrib/libarchive/libarchive/test/test_compat_gtar_1.tar.uu index 1e8d25be8bfc..fbcd1aa3af2a 100644 --- a/contrib/libarchive/libarchive/test/test_compat_gtar_1.tar.uu +++ b/contrib/libarchive/libarchive/test/test_compat_gtar_1.tar.uu @@ -1,4 +1,3 @@ -$FreeBSD$ begin 644 test_compat_gtar_1.tar M+B\N+T!,;VYG3&EN:P`````````````````````````````````````````` M```````````````````````````````````````````````````````````` diff --git a/contrib/libarchive/libarchive/test/test_compat_gtar_2.tar.uu b/contrib/libarchive/libarchive/test/test_compat_gtar_2.tar.uu index 7843a2cbaeb6..63303056f47f 100644 --- a/contrib/libarchive/libarchive/test/test_compat_gtar_2.tar.uu +++ b/contrib/libarchive/libarchive/test/test_compat_gtar_2.tar.uu @@ -1,4 +1,4 @@ -begin 660 test_compat_gtar_2.tar.uu +begin 660 test_compat_gtar_2.tar M9FEL95]W:71H7V)I9U]U:61?9VED```````````````````````````````` M```````````````````````````````````````````````````````````` M`````````````#`P,#`V-C8`@``````@```Q,#`P,#`P,#`P,#`P,#`P,38W diff --git a/contrib/libarchive/libarchive/test/test_compat_gzip.c b/contrib/libarchive/libarchive/test/test_compat_gzip.c index af7164161312..20fce7af432d 100644 --- a/contrib/libarchive/libarchive/test/test_compat_gzip.c +++ b/contrib/libarchive/libarchive/test/test_compat_gzip.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Verify our ability to read sample files compatibly with gunzip. diff --git a/contrib/libarchive/libarchive/test/test_compat_gzip_1.tgz.uu b/contrib/libarchive/libarchive/test/test_compat_gzip_1.tgz.uu index 814ef67c09d7..c4793a634c00 100644 --- a/contrib/libarchive/libarchive/test/test_compat_gzip_1.tgz.uu +++ b/contrib/libarchive/libarchive/test/test_compat_gzip_1.tgz.uu @@ -1,5 +1,3 @@ -$FreeBSD$ - begin 644 test_compat_gzip_1.tgz M'XL(")B^(DD``W1E<W0M<W!L:70N=&%R86$`2S-DH#DP,#`P,S%1`-*&YJ:& MR#0,&"L8`H&!J;&9F:&A@H&AH9&),8."`>V=QL!06ER26`1T2G9F:EY)54XJ diff --git a/contrib/libarchive/libarchive/test/test_compat_gzip_2.tgz.uu b/contrib/libarchive/libarchive/test/test_compat_gzip_2.tgz.uu index bbc62fec8b96..92c0940b93f1 100644 --- a/contrib/libarchive/libarchive/test/test_compat_gzip_2.tgz.uu +++ b/contrib/libarchive/libarchive/test/test_compat_gzip_2.tgz.uu @@ -1,5 +1,3 @@ -$FreeBSD$ - begin 644 test_compat_gzip_2.tgz M'XL(`&76(DD``^W800["(!"%8=:>@ALXPP`]CXF=Q&A<:-UX>EN)C5M,AL;P MO@V[0A=_.E39F2.B'*.?5QX2?Z\?XGE&27)F]L0<HCA/]D=S[G&?#K?Y*.?3 diff --git a/contrib/libarchive/libarchive/test/test_compat_lz4.c b/contrib/libarchive/libarchive/test/test_compat_lz4.c index eb763c1a7021..9e309a9fbd20 100644 --- a/contrib/libarchive/libarchive/test/test_compat_lz4.c +++ b/contrib/libarchive/libarchive/test/test_compat_lz4.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Verify our ability to read sample files compatibly with 'lz4 -d'. diff --git a/contrib/libarchive/libarchive/test/test_compat_lzip.c b/contrib/libarchive/libarchive/test/test_compat_lzip.c index 8f4e06d3af77..d3b8b118322b 100644 --- a/contrib/libarchive/libarchive/test/test_compat_lzip.c +++ b/contrib/libarchive/libarchive/test/test_compat_lzip.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* Execute the following to rebuild the data for this program: @@ -130,6 +129,85 @@ compat_lzip(const char *name) } +static void +compat_lzip_3(const char *name) +{ + struct archive_entry *ae; + struct archive *a; + int r; + const int data_size = 65537; + static uint8_t buff[65537]; + + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + r = archive_read_support_filter_lzip(a); + if (r == ARCHIVE_WARN) { + skipping("lzip reading not fully supported on this platform"); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + return; + } + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_raw(a)); + extract_reference_file(name); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_open_filename(a, name, 64 * 1024)); + + /* Read an entry. */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("data", archive_entry_pathname(ae)); + /* Verify that whole data could be read. */ + assertEqualInt(data_size, archive_read_data(a, buff, data_size)); + + /* Verify the end-of-archive. */ + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + + /* Verify that the format detection worked. */ + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_LZIP); + assertEqualString(archive_filter_name(a, 0), "lzip"); + assertEqualInt(archive_format(a), ARCHIVE_FORMAT_RAW); + + assertEqualInt(ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} + + +static void +compat_lzip_4(const char *name) +{ + struct archive_entry *ae; + struct archive *a; + int r; + + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + r = archive_read_support_filter_lzip(a); + if (r == ARCHIVE_WARN) { + skipping("lzip reading not fully supported on this platform"); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + return; + } + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + extract_reference_file(name); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_open_filename(a, name, 64 * 1024)); + + /* Read an entry. */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("test.bin", archive_entry_pathname(ae)); + + /* Verify the end-of-archive. */ + archive_set_error(a, ARCHIVE_OK, NULL); + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + + /* Verify that the format detection worked. */ + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_LZIP); + assertEqualString(archive_filter_name(a, 0), "lzip"); + assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR); + + assertEqualInt(ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} + + DEFINE_TEST(test_compat_lzip) { /* This sample has been 'split', each piece compressed separately, @@ -138,4 +216,9 @@ DEFINE_TEST(test_compat_lzip) /* This sample has been compressed as a single stream, but then * some unrelated garbage text has been appended to the end. */ compat_lzip("test_compat_lzip_2.tlz"); + + /* These samples have been compressed as multi stream and an eof + * of a member is at a read buffer boundary. */ + compat_lzip_3("test_compat_lzip_3.lz"); + compat_lzip_4("test_compat_lzip_4.tlz"); } diff --git a/contrib/libarchive/libarchive/test/test_compat_lzip_3.lz.uu b/contrib/libarchive/libarchive/test/test_compat_lzip_3.lz.uu new file mode 100644 index 000000000000..d72f533f8e5a --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_compat_lzip_3.lz.uu @@ -0,0 +1,1461 @@ +begin 644 test_compat_lzip_3.lz +M3%I)4`$0``!O_?__H[;M`,8YD9AD^;BIA9FFD7XS]J)*M98.:(K;([EY2KQG +MHCP7GI_]B*OI^7KO>WLFXZ^$'FM@5`:DY1!TN1&HBD88#`!PBD2%]C?-;.OH +M.CD*#@S?#ZT.,VK:EC>M&3P@Y6#E2P4;]:ZGPC<Z[!8IK%LS?[5V?\"7A_$Z +M#V6<G76W_@*RE7PW/)F8,548C-AJ0"VF3=![24R&>!%9]MX<[QV8/(+:-<LA +M(5M\,A,/.N]8(Q>NVZPP0/<$'L"<E1?'CI+=9<,9SUDS#P[H$2@4^83E"G[] +MF<F`<D*$H3`.5F20A/UEXOZU?SC58<J.<M>@#M-U97_,O9,[)-C=WQF\#;/I +M/:?)P\LD+I'MSDVF+HV%F\WOJ$R2V<:,'&OLS*Z]4T;:T+0X?G0V!ZNJ/Q-\ +MQE5YN`.GF-)#-QJXPFV>*6B&<;.0&GJ`%Y(0D_50\KKX%.4]L05+4';KJ-V$ +MVL#+EB?+8%7%X;:GNJ4(]6,S=N&,"DM),\D=N4[M5_RF,6RI[%'Q.T]/"UI2 +MK>MMU(]0,9"U*K$(W"=LPT[/!9OZ&HFYF4T.[Z-D$WWX$M7D<&>\M'6R<*D_ +MN[1Y>2([+&>ZTU(G;#!E-7S=24W!*3L1VQGPE43J!Z0"4L2XV[]*,]HF-_?\ +M9%9T01.28SLQ,MKN5+@SE:["L51<Z)(]R_AN>,9\S?7YD]YFW4EIGM)D33(7 +M/N7(69I0U.S1&(%\"DWY>:Q;R<TOW1N55ROR4NX+L,](HBWFKCM3QN<B"F#= +MS!P<9PJL_R6*]&$Q,I63":L@O,W[$T`YLR5:6V:8-[#?I;%:;TU@,O'YI7F? +M>%`3QE:MCV'L]OTZ,.!K'KOKV5:>Y&3U_J^/DZ4I^H-K8XYHQ&]7RR0G<#7= +M#SG@WG#U`@]8*1OW=*C*8/`9@*DP.N'7/3;??EF@GGDYT^P.:['NCB3,/GT. +MZKGGL!OP*;[6:7IA"OF"`+G5[Y%7<7[R;%B,HRXU@(RXHB.#VN&8%,^4.RE2 +M]IP,'E:0-,/U&;Y0)R2P74`3WEC$NH+ZFFPUCW"!40RZ0A2(^5YH"JGW!MC` +M4LVA/AF]=(84`>IX2W<-U9OP2$ER[)"07JHM3WFAI)_NDUAF?01QSYQ.<YN) +MU6DM)ZF>4+9.(JK.UC.%D[AMK&14PW=:U3Z/SNE.E(Z1-'RGX/1H8N=<-N\4 +M]4W2Y]VEL:;)3UU_'X$WV]5;!OP0OFB:CK=080B"790'#=MP=O$RJ1@!+CHI +M.\L&7%!%M^G%&S<CKXL=E&8UVRBFT^D%H[H.`CC!Y[>>Q`^=R&ORLF>1H=FB +M%2%]XGW4VUF0Q@L.NDZ_&3/'=_7/E1XSJB.G`#->HK%5<0)D"#'GWKJMRM+T +M_YA4]<5OF44F3E6FEF?SSX5K9".8#?9JP?UEI(D5T=0ALWJ9=DICE;@LJIN2 +M[2C\$8MX315IA3PTF^W50Z]H<SVSH33;T3SPEX"F268<CF?6ZJ0P>8W>]]U, +M$)4+K.:(3(5$(8O@$NH&73`3_(OYRN?J$^2PE5^L@_>AT/F#J5KTGFI&J82I +MFI?KLOQU-C<\MT?8QDU'0!PUSVEM)BZ#Y7_@9>:.P*0;7FC>&?UPI6\8\KZ3 +M=NWS#T*BMYL%&6"5V4Y!3:U=Z`'*#[30H/":R\?UD*56",Z3E*-=F>GI6I5+ +M@,=X.E6#FM`@BU+!=/2C57=^Y3?I"]?&\,?6/S*;0Z;@Z30^K<[WPFGT]AA2 +MY",3*9-3=@>[;@[R.C[3L<E#)9Y+",3&GKWT:>0*OB=SCO4M@)`_(^0S.NGL +M.,,(QEU>5<1+`'%*>;J(IOQH!)!T]HX_L:#)^VE#VBK0EBY27%<IQ#2WW2W2 +M,4K*'D$O7`Y:IC9_=?F_XC>)L!P+W9\/_1GK7?G<(92R.)]^)"W(S,@.-1=/ +MCV]_''DC\#$ZV>EP7\&,D35S5+YD^[%N??$MJ^5U`Q#>PQTN$>G6\6*8BPJ5 +M;X#?`_C!10`]"VH0_*HS/^1)U?EUEGF'/':R$;D?@_]Q:R2Y]:Q"7#8=_G?M +M&*F>S^ZV1";E[=#:[COOSK,!T)2K^AZP1@3<O1HI^C\/-TLKW7C*DW,9Z$L, +M?!ZB9IB!NFPT$=6'3_B!0F$[5FZ*\Q/I=)DL=4#<,O(6FR`_%@#I:J*128P" +MC(MB5'##I7!)[N+^-LRZ0^I22>KWQK,S.<G-+\^![EA>;3:]#:[,T!U$KP@? +MR+>;%.3GS,4X]OMCZ%8<+ZD8*MC%)+KI#F0_#Y%?J=[G&0_UGLQVO[",,LLP +MFY-$^=0WOMI1GP$`:+XN'>`TM1=,@'02^$8N08F*,N>7H@Y;QWE&[;.V)5!E +MY9X?7E*/W!SCP(ZST)/;E0/D>$.I>)KG_$Z4#&SOWP65\0,LB9?M/W6+:`_% +MC5-,ZTE"BY]FB^X%Z;AS*$?E7!'N.OQ:EHE)7;V\F"B;<@7O;BGT'ME\H$JH +MF-(:@$$]Q[*@&76AP86N5JNJ]&T=\PVZ1G9=[N@3"Y9/>;=Y,]A!D467GK,2 +ME'1XVE@&(@=C[TU$4;D"2-S&,[$GB.0/P1!L-LZ`:&J/X!R4P[=9UZU(G^:7 +MT4W+74N:D:D)!2<5R#]<I?MB"6A_MO4$<MU1Z!S_"H=$F4G`(=_TE`>KB><* +MA8-K?#>MM#S*"%B)P&6+X8^7?R*//'9^Z/*G8S`9G(BJ(1O<:EBQ:V'"8[3< +MV=<6?E7&-2DEP0`,7,ZN>85L[T&:$X5-YI"B(W=]XH4[X4^,=_(JH-87W^I/ +MMO[5R-B/C6J.6U_`G=A.L1N'T4A%L$HD_JMV<.QPC.W$*^NM8'45?\6#1'H" +MZZ%V-S*IIL-7MG1^I"QU,7C`J7"Z*E^9&=46OA3I-1'&&4##XNS=&H[S79G6 +MG$WWG\8`D;AB$RH?*)V&FL@%,5@YE#FO->G$L;ASI!'U@=%9_M(0D"WU_*`* +MS7U1>)L^W'<2=[\OGWA^5.SUC/7%TWT)CB6\)@22[=P@I#U2_+P74?&]F4F@ +M1VV)1"!N0'0I4)@9_Z/K4T[@M&3>2(*P^1T2.M:,].(&$/8<:$;4-;&`B\L; +MTZBP$*##EXGS@[!AKD<79.2-<\^!U[>&D^NS-G6!4@=A$J464!0N0E^5:8=H +M!3<]*8+,B'TN<Q(O!-M,+1GKV.M6#Y/[_M>6^8PK".)P\^;3]?H=N6FBM<QQ +M[>$/"C)RL)"9G3#`[G#L21'[+%)OIT;T04N9F4]-5SVQI%FWU1SPB'`=X(F8 +MSI^G>*X+7%&_TF:@6UL"FJ14&?/U[R3]^!9D+:`R,?F7*>3*SZ,*_T`VLUWQ +MK=,5:%EYP<RVE92DL5X0$>_K=8Z[M-\/).&"Q'L7+\BI6U/;,=@S@[,BG3$G +MTGJ/P9PWP-W3*_$'O>@0C@2?#!W'`P*[8/`$2]LKP6\,"[>T8TM_IAV"L^>N +M#;"7*VO3F_6*)4NINCSLC)*E=('"_375C;.Q6+=]_-HOZQ<01UL_ZM$#!GO@ +MB8,__Y(;S8K&!AQ#=0E8=5:NV8>?6R0KRR`[_(82L$/JQ3$ZD`%JSV++4Q;^ +M/`)!BXK!$GZ>3=T9M/7WI+)8F*SV:/2!AV_6N!V'.%@638XUIT=3[Y7)Y66K +MLCZ!YVUQ4W&0^-U):_E^_X$L=LH<D;CQC&":]\HK?=5+LV24TH)6MRZ&[(M" +MED'M\C/0[*]6"*L?>>%9-_/15VH.@/=]\E&?^5SN/]NU":^YMQ_6AP#5)R1[ +MW`&=(1@:(0#_@=TYYVXM_3M\#CY+.72'?9;]Y9*S-*^R"A'MV@,>=$@6/`DN +M@7^E^9[]CD:#''>W&Z5QS/$0-G8K3=%KV#4]\9,.70/1_U^S\J;[PY>(_4PV +M(MX+"B-6EV-H"-4$F1))*\9T')J.FEU53"Q4-.W!)I@L#[:T,D/A[LM4YQBK +M[8)K$=2<,_@#L`%#RR7S=`[/F16$GV?+7L3X&TAPQ)+]BC;<;LEC^H'KYV'7 +M2'=2!B2V4`;R9%^'+&%CAR08F\#+D!>K7J*M\8$E-*0K3%^G'J<[`[;&";KS +MGNJ.$*>VFOYV+-:K9(L=Q7F>F$Q;V&7>]!H+GPZLL<9OV1$S/<T&XDS,\))@ +M*-I1Q+HN2=08Q%CT<1,*^$>3I$BCLE21NX7&LR5RZ0%J-4+1SU5!TT1,Y=T( +M)P93`NY!`05O1\76_&2Z]`[9G'P@>3H[0-L,\OV7*@&-;P83?VO655&,4XP< +M]$B0Z'@J3/;Q&!(>O3B3L'\<]I++0W/<',K=H8&/Q04F,]Y['WJ;B7/31K*G +MT=\\</'DJ;%>?;2#UZX'MVV2,'=,V&%GD4N=IOA&-"B[&C4\WOFCYZF3'ZQ0 +MZF#)V?EA)EFCTI9<2\RFD%'=3TQK#<9V-_R0)S;EF!)ZIO4P<SJ^\6=3^&V] +MBS9>:\#T[6*RTW^',$B=LLY4]9H/\06$-@=!EP@<!INV$VD5&^T+EM$L9JT1 +M#R!M"QR$/^-Z+].J0+K,YENA`#F%R"R5X5W!N9#<'0T"TB/<KGPOL1FL5LL& +M+Y8^?/A"^1@:O/Q`L33R]".''J5=1%0/?B"B!*_4#'!Z2\@#]L@C"C,((+3Z +M"+7!VLU\2W)=Z^8$.%%Y'C7_448,$23QQ.UR17*G1^8]XG`"=3]^$.S'>+6T +MD1\3LD2*@PH=#GYJL6S2M\.4]-5"V%<&[H\M/O?W%*?MA5<A:=F+'M!IL=TR +M*T,0R>X3FT;N@M@90:9%J!Y[,]S>2*<2JW<_#132S(NQA;G;8O`@7E3_B%V1 +M?P(B"X;IS`BZ2Q+<KME""'5;P;(N;`<I*27MAPGE']Y^^4S<7A&"S\8KGC<H +MN6M#O%G&))X5?Z;2J`385]NM(IU?[,V>LV8_*(S0"F`:CBX.0Z3<Z*2#:RJ' +M&&-3Q;U:CUF!3OWK"U7G]86WF7M!"FVEZ**\H"$4%^AV)$^C;5)F#:U"2.OS +M<FI*0G<,E,V#&H.7+)[2T/+9`[M$CUJ=&0R_,1T]MB8;%COFI"KUVEV#CZ%X +M!%>N96%(K",L*#!,2,5NM*4[=(R'Z&]#,\9"IP)!.BP#$T7L>+I6G3PT2P1B +MKQ#70'EIL44A8&9%$]4_NKNL;)8K<\$%?,:SZ8?6#$4VM^I1WBN+.]_W<M?" +MN27N9]:1J''ZYW5_E4'-JUP(&21KM^/?`6^W"_:(:H<Z-'"()."LAF%&::,= +M[@"F$H]WQIEH;T6]H7C-LY]1$8F:/X2QGBJ<=;YIH%CCAG/S/\ICA=K!:E-E +MHKZ\,V7^L`L)B#D5D'X^0"`8GYEA"Q.P!+O@?S;+#:_$4+WI7E/OX*!.$'!G +MOT5A)/>,TJ$_F2N5<S)`HA$R%I;4J"T\1<N_;7/5[[5!\-3SVEA,?Q4SXM]6 +M83CS<!519;%#.]?:<+`2FU89%8]%!:5OL"NV--@K6G>HZ.8)]S<?.+E2H20# +MG'7QNY&.PL>-IL$Q(G?"8Z>-Y!UJT*YMOU!0SH^+%8H;__,^OPA<%A4E_[IF +M98NBR!#*$97H;'E3:MVGF2PITGJ!^5,P&OCHLJ[R6@Y#A18'9G$&DS#:#@<. +M:49X)8.L!)054YUT9\%`NSCU*>6BCUQ)K2ENDN>0$L+OGKZI(](=%=,L"PO7 +ME^&/8X(U]0Y`L2`9M'OD`U/-[6I0]YA5]'U;9N<GZ[V^":I3[JZ\!QHNA$2$ +M-<))A@S_6_1!:Q]9(J3)+"9?^,&X#5I`%P?;]0T/+"0HW&KC"*64>B^4;J^* +M\K^P'"AR:A,XA6G)89#EAA'\49\^I@_SY<B`\9-9PDX#+1\\JV()VT*\T$B^ +M0U_3L7&\(/"7BI)%..IY8FIR?")J<F>+H`$W%5;HPM0$!UQD-1PT?BDN\:(P +M[H-NO7WU@>/\$+?L3Z,Q&,1Z0EH("\=PXO8"TCC).P6\Q3]#IME.,2G"23#. +MWBZVXUOS1^OGF6TD8F(X@7,L;\=J8RMM_CW#>>V<'PP`H$R',)XKLY`.LBY0 +ML=TN^`0*ZZ;1%NM%P]=G#*JM;^L/8SF?A8H!#/X(+J\XZ0"#WN:Q]&=P:)0U +M$7GTCVVO)#T>L'Y2L@_;5&A"RKFPZF3/8_H%:U"2:O_!&F[`9Q@T?V2=R'+= +M=E,]X9,)W844SSZJ5E]#U"+U#V&@I$U#>B53)7B,RFUY@$TCU`^D*>>FI3OQ +MY1F8*WMO34L9U4>AXZM8B=$%A_\^-/Q[QY^8MN4T4(QV.96!9'=S)J6Q;WDO +M>ZA7)U--5PGC,VM,X%OD.LN@'@0LG%%,5$S>6$PD:EX.PZ3#G+1?X32_8]TK +M`U.'@C8LOY7,\^>"/U=>M%]?@H8#0_\WB$X>%@;M@.'2XMH^4D@+_)L^V80# +MW1DA@Q/.3*I:M\,7?_:+#10Y":O>JE[TN5D&9IM*+&(1EI+SG6S4U82D:V2C +MC82E$1N]YD.(C:CQG#GBSNGZLL^E1%J4[SG]SL.)A]XU/>O1;:,QO#HGJ*ID +M@-'F"C33@-S[_\>GJ"QC(CE-X&U>A!3&:6MQZ@&$/\D/<N*18MBH"!NGZFWW +M$2FRVESRI,-8_N`-JKTXB;;T:J!R5_%E['6Y+I2%/!E.7F]*+%,9=@'OM4F9 +M?HA+GD/'RQ&MMZ@3SQ5"E6KRI;K0WEWY@_&N3N_3U@]NA9#"1=0J%W?/@K3M +M)65>0)^R7%'2<)(MJ;99,=4*SPV(GD.&0YB_,GJ""$0C9*60DI!#Z6TTQT+H +M,F>S$*!@DE`88?L,SV)/.]7()T@Y-KW$8-N1514$L#7UO9`+<2^0\Y3JZW(, +M/(`2]=,(::92MDYQTB<PO9CGY*O,Q]I61N?MDKO]D.N"E(B:R%PD3*L_6K"U +M;^B%(YCD"RISL4.T^[3GFK$WR0DH#^6F,0H>7`3*9GMWT2D":+_2LNT/YZT\ +MU;)HMO+;Q;UGA)$5GH(H*#!IV7;+`%81FG\JAK8BK*@3"Z:XBS:UH:,D0KO/ +MV\@%Z@Y\BMTX&PVTA+/KK@_=FU4%L;=D*H]5>+',TNT*Q:1"7;Y2L".URX9> +MD.R%"?87,Y<N\4!MY"-LI\O>IX8?`J[`$V&Y,B[4X_O4S:Z^S`[D&$,=]?'. +M"*4>4P:Q:SYC[@^0)^1XL<>S.I.^\E3)IUY>HK$TLY06$>9+I?+]YO<$$>`^ +M2P^`:VP_YCME;NEBGM%?'<%*2W8C.*T4<]X&V,=+N"U3\?V#(C2!L"47`?,B +MH\Q%0>L'?934CX#]=BB#FG"!?Z^--S9520073?E@NW%@?=HZ3)/865/+$`G/ +MM%N.:_P(.3*U@_JV*6L'ZU,-M.E",Y,N8+\%NJ0C?Y/K3G:V"EQ$P[6MBV7M +M-1*=WNXB*>PA0SLDM+.SQX#Y^1-G\\`QWK*53F?\#+O2(`$M$*?+NC0POB$] +M[/\^_0OPWE(8<CV!(8^"=9*04RO"Q033P^4I*2U]ACBB3TYF[^D^6;Z.W8-1 +M8@?Q;2DU:%]'$G\'9":X6W\:^&O8#C^#I2XXR&L*MZ,X/+ELK#UJTV>1TO%8 +MB>8;Q=_H(&Z&CU'ZO"+:?AOD'`J3[VF.Q+YV;C;)TJ#B;/B6'1>YNH7/AHYZ +MZ"HN6#6Y&1R3,1MB#6\BAWLG"B9S<@B%_HYQ_;1C6`8Y<+'D^L9]@[]6$.<- +M@:GCD19:7XCQ6I-L[HHX5.!GHD9-V\,,#X-R[/0:#J/_MFA3$5U^W[ED\M#M +MB8-+V`!=^:=Q^[E6=6:</(9]#%->%XCMR(8;ISC,LB!+%#6I0..49VK24C.Q +M(87P178<$C'@V$HO<F*AP=:"%.V\DU36R?XG'A]EHJ?6`_%B"OF'8P>3S;TY +MRT>950U1*&1"`-I6%H\#7JZ3-T^W"UF+9\*>@9;1\2]Q)L?ZT?'PK]/NWC.1 +MX*',Q20V,J6JO+^$F_.A0SI?%BU4HBU_>.8T#.?NFL*Y)K,_!3@9=9C8NP[D +M1^2/&$W:MWTZD&RPJ^\!6U#UI7#3OUL<^C!NJH:936KFCA:)05I1>J_+7Y`, +M^DBIZ_?=F$$,N-E]_?<@A[3<1ARZ@KU,[1:"$8\#IR+V3C3,);ANDA'`59G= +M\"YUBZ54O`T(?:M+ZUK_3N=2WF_I0Q2$LUO^&,Y43VTRDF<82!?JNL@X[4T' +M,#N^C+]8<_\5U*&*.Y9TL`L!:JQ<L8KAIMZDOL-[@V,D7R>-*4[S:QYP<F6< +M:F45,0/:O+XQC67NS2H;CJR'BD7)0$$NV2CG1AE-M'&QC6@"?^KR_%](584A +M6)FG>6-]H>4+1JE7L7JWP2]/)!Y/N3=;/Y19R\C^@?!,\%2T8CN-<1V=`D!3 +MP;A/.YG-(@N7;8N2\B^D>%+3"?;/)S;KZH)IM'"M,VK_]:\Q<ER(9=\D>WUE +M1EM_'IW:TW\KO#J1\.SWNO(9_/3ZKW[=*!JZQ\5`_BA5E/&3N?EK'^EH5#AN +MQS?3"JTJ7&F%RPC;#D1)9R@3T_JC*PAN\KLH9/6J)OG0BOO#>VSHPV)`0X=L +M%[M+-3_R^(13.[;P%M''U\ZJ.@\8ILN3]FD+Y[D;FA#G2CWL;@/T<U0X]7+5 +M1^[7H.[TL%[=)TL!1+$RZE@(4MK*8)FSGLBJV/-DJ[DB(*?X]?PTEGR.!JJ6 +M?I^:3AG%+%)_0[)32Z+QG"7?\A$0([#CI^B"H`(PZ:33Z"6\-<OW7V$>'(@N +M4&%1\62B65=N][.S^OMS?,.FV[VW7[+#*==-@@A!I>B@%@:\^-J,^T]ALW*5 +MR^1\(5>K*`O*0C%$&=LJHP&4Y,"+M`=O3\[YEM+?*T$]7P+9Z?Z7,-9(]X`< +ML,OE!>P'2-U:2-EG)TE%S^%S>V@%W2UD)DT?>#AC;]^?"&NM&&+YH:\/3VHV +M^DH.N9(6J74U3'.+M8=MK\FI71Y=6>1#JT-/(Q5&P4M7[A=G4:=ALU"@]X'$ +M2"L\48]U2>C(N?VH7@FVYYMT\JQ4M=(@H,@=L[`5@.V?_&RQ">0N'RD>9`*@ +M+A,)(1JNV$<#E>M=5R9M+[[KVBUHX*,L&X##1DR%GM<RN%'[S:^+/I8V`9W> +M81A2`IVM0K=L`D-B^CA*M;C=67NI`_>FZ&W_8Y4"R\;(3.@H(RN7S]AP:F>V +M(Z1JB<31_.\.P0!ZEB(6A95AK#]4EYC3>*['*^T#BFXJ-.0!FD##0VW1D'G& +M!+0W3!THD0_9Q=[_7:A"%J`);\#4TR2OVSEN;Z3&\YT]&B)3/@B7Z.V,=K[I +MP*SMUV^;\K58K._%TI(3._#KT&=P-[U;M$:O_@/I_.G`,)?CTD<4?,$G/0(T +M_EH<=%I![Z"LZ=:.*Q`K?YW^GG%D8DLC2W.3"^IK=WL1TOD735&U7N'!>!IH +MG(I3-!'`FI=9^@UB#-'M'[Z`AV+8*O'B=O:+@R:(_W<X]BB5I(*1O6[TZ#R% +M1>FX\Q)]%L\`VL#E\O0]-W1K#3`C=U)]H'UO@'BOJU16$HV8^K(#0:#;4-BZ +M5"98HB\Y0]`E4]4L7G-%P@4<U]A.\H`WG]XFK"5C1.HS!)#Y.5K6795C+]O4 +M5!CRW=G%>82):]L)/#+=HD)3,&\'8[#QS<[R(!KQ7X4W-B>3R(#ZFQ<67&KP +M.3^FE7*?+EDD9W2M)>`K<1A`4!YQ@1YP(M4=[]'"2FE?^_(_]U@=_R/I3<@, +M*&9;52&E8&^I_NMKZTHMJ4]S]9"-#._/BU:,Y4:M(X=OP!?)WT@NB*4_GS-; +M\;P$U5M3$OLJ]9'Q1<S(D%9*''V"J<+,;'XN085!ZF*!EU,,17:BGYU0,D^U +M)0YMP,PQ<'668KS[^,":Q(?3KW>4<:A'(B>)#4Z*M63.M;M_G`T>=>:CS$Z] +M7.^'33J_GC6%0X+U"O2;#/7_"M7$X@%];D^W;6KBO?:$[JA"!][CBW3B$7`_ +MG'!`8FV?QHT?94P*(G+EN:J$1QP[ONSE&4'",)/"E[%"*?:\E[P?QT\>YWIW +M96,.$^1\:^"H<B:Z3]>X&VW'<$SSFK/F;B8F$338(K:E*T"*G/;!JJ"S[Z[5 +M-O1_AZLM7(]46ZS?O[]*7[ZL:.D`QEAU.X/6B:RA7^'QX3UEJ^Q>@K0H6WA> +M\3F17?VM72]\!)5B;R6P<+4<MB2OI.BTSMQHN&SK(12XU[0.,W:,)$83C^<E +MP?\*K%'[5V")Y:]N5LB?0$1Z0:)L0JQERLIC`?4+^C834:Y:54-U^%)VD'LO +M**-!*J9*S*T9([H0AS]Y_]'/EVU8*I"XP\"US+)+C<QN6!PR/[_F]`K+"BW6 +M*SY7Y^B6N(%Q&HYJV"6;OKDE.B/9IU<4`/L]X3?/1S74]DL`CRO*9@L<[LM4 +M]/_0'9,)A;&4\1&-0?6(8/C!@,"F]X`/(R^EREW^X;EKR!94T^)L)8L'VGK& +MST58P)E@8$.Q=+_M;X<@66#WP;%YVH.;9<H[XIJGKN/75/S%4;'31;='X`93 +M1[]>$F'MKYN\^FS$@U[8?O>$JM!)+_&Y19>>K'/JOE/A(D`D;1I!%?ULH4@Z +MHN:6KBX&\'U!FV=X1Z%#*8R!=#(BE*7@6Q?%&.I'0(7^HK5B%;8KPIW'X=GK +M.,G$TI?BSJ1H<`JBHF[=,/8'4ML!O&OCNA@H3S+L#C#E)NJ8C%M-\L7[T$>^ +M(\#-#D64G0,C+K&X+I[W'V8S&CG`P)#/6R^)](/0'H\G/EA09X_V_UC_Q*H8 +MYMSSX>%1A7]LAO#>4"H01>0(X(RD8;(N5@E?Z<:5MQ%P^"95$_1Z3O$L8P:6 +M=P2FZK;AVJX$%C:+:L2^+"QQCH26%YEO,)H"HX<Z$"I);QFS("^.L)VE:$,] +MADA_=L72I$;DN@_=L4#*2[AU++^%1$5NBCH9[DH6<2;E2T2!BC=5;_O/K$19 +MTJ/+ME^8._*'_3BW#I\4^F2>4RK-_%.=`M3".VRT>C["&=+EJ!]?%;U9-PK< +M&;%UAHKKR74'TI,-C#N3!-KHPV')XF<B\[K(P(F;,/3;<&4_CFQ9!^!@]T^6 +M<B0>%GOOD>.&(5'O+FL^*#;BKH%(H[_%#?<,>X?]B?)F<8L7:\ZO)8P;1<N8 +MT7L>NPV3V:H++6<L1DR!&`/2^=1@2S8^&VF&[%](NV/AU;8$%._IO^'CH:\& +MR%!.@[^V2FB)IKX!3`2OKL[D1T/?=?71T320(:X/J.SFQ7[52YZ&Z+7>1KF< +MP;+`]6%[2NP##67SA72V)>541(RZD)B"N5^1KT4T'(3JV9R_,%;+6SX5[`]V +M9"6`OL$.>9IK]:K%1D,(_/@U7RQ43[82Y<Z`MMR6#J6DRNRIF%E_J-JT;QK` +MB-[3K?B5>*FX63.C3W2>Z7R$EIW8!*?!?6G>Z:JAP`AL+X)OEID824H^=S?4 +M:9Z,I,0K"#G1D)IG>@01(MF%%0\U9:QMQ9IRK-NY=*G*OC0=A?CC3.O_;32Z +MK<_17II)/,R;#W<B=6NQTOL#L@<PRDL-R*Y#+H/;8(S'$0L$C$+?<#?03KG; +MDM%M24<&:6D)^CCNN70QII!J!(:(SZA^$B#*A<_1/_;D84'<BCXEA0#&G,PA +MP')U.^0QUW^$O!Y&3U*:82(Y"$?Q2H@W"X%#8VLI?`G&5/#2J86"@CKO@6"X +M[#8*#,-%KJ^C&1X=D_ED8EC7TSZTMP>5=&+MV<':-`@,,V&]*@ON57W-5%1= +M`(\P(E;SP,=B`9E\R'I"E5!X[AU`5."A;RX`,-W37<)<J+,9`?=<7'FW)N2; +M/DF+6J>L7(72-B"6&<DTH'RJBAHDB_XM(?+8F&(!)CS_SK.V-5GNUWS464P6 +M!\RL4)15C7U?'PA._YRMQE\&I;:^\3(/CM'9.\LNXZ@2%BZ.BXIE`J=K`O:" +MBF-@V0]01FHYI$*>/\$349C6:("_6,^(2-9VD7-!6<W=J/;JLT>@:-_A.0F< +M;&Y9J$G_!H]*;()JJR_14VU&_>J+_+C*CT[<UYQSD%%NNA_S`>O"KD`)0R7O +M'J!9RQ]5V2)K4!B>1RX+_3G)'5ARTU9LXR:XC1:CRN+^GYH82T"C`*\7XDL) +MK%K%IXM%C;H?N*%/964+FHM@"X-&I(MX@-S[0=8XM'F!$KJ0MR2>>&5K))M\ +MJMR@I]K(A1-=X(@=(7Q73K2?TR84%OD`EH2_\D@P@\^A%,0R=A]X%BR@I]X: +MF(KVS\_^:G43RJRHD1D88I+SD0A#\9$5-Z_'+7YC!8>IG0Q0Q9E51[+^')0, +MJ0L?K@<+N1H6+XDMRR0BP,%KDEP!"S^6D!J230L>*NM#7A?VKF%^\[3&]C>A +MG64XR;_TZ>3OILJ0<RT4*O!]3G"OL`+./T($2COJ>U'(2V$T9PK&J;OF(Z:\ +M^&Q9NI"U1A][]5YF"H(B:/^KIX3IT]V$!C;X1,LV$A`UN'*-2B)<U:@BL^W: +MS6^<8<?QB!W(/Q?R@19828HO7_]7#T=Y:;/2#ESV#A@4;96]\VI[&1>+PX); +M]YF@%>!.GATA];5'@EZ!;VP=D,?ZL9LF`3K['?MX4:IU[!M/!V/@H.9;9E)5 +MD*.DWDWN%X,1[^;*H'Z3H:&J&,3=Y$A\A-6,.YYSOPEI=P["VWP`:EI&E8C; +M)M#>&7U866P+/2KO/U,%&/Y-V!S#%(72@17/,=.7`X^?#]%H)XQM^G%0V'$5 +MNE`\K`OCT'(!5"%^2LLIYK#]\NI[3I:5QH6`)2F5&77Z0-9*?1VMR-8[;[0/ +M38K.,!4&[%X`-<U-L?\#^Q=NX6WF0XGRP&Y/&QK&,V>8CIX6O5KO%R6W@;T3 +MY;-OC-[==5))NI"G]N`PU?,7D$*+E0\-360[A#E+!Z*R(.X=YWC"M7Z-NAU2 +MU7L3`2PGYI.,>.W/VBY80A,&7]E;JWG1=Q,.3(Q=W[E0CU",Z$2M=BN$-\-I +MA;F/GPR+SCZ$+*.?YU0P9YU#V+(O!-"8'9D6&ND`(,')O8N/J_E!N-D`:1:W +M96-^JO3[*ZVL+5!R8];Q?F]?6^:A7`NS9IF,+L@5H=7-1?1&)I0=A+M40!C+ +M]W^V]_`AUC`YNXBM=GK$PI/0UR!BL3E%V'IT!Z6]T%1ALY<ZX_3?MZF3`+?9 +M]>HX,(8`W`'&4R`HOO,8YITNO.1:I,!:&JC0:E="6!(PFSMZNZS*?7QA98"U +MZ^X=:XDKBQ]$#KY5B\"T@GE3->:3'%YNT0#`A)KB/38QQ`%Y<`:L&1`]E2(C +M$Z$*&H%?%"?7EM.<9[`H&?1LCS'IG7<(F]9N_9S?B(O2*AO()K5XTU?3SMQ9 +MB6]0\'D][_$F_&I^:^91U^1IJ^Q,)LC2U/TG4DK+OWB-9@I@]BN04^?`EL:* +M$VDBH-:2)C?;CI(GC1<$Q2;*1-1<"LEH^;#B!H++;@JQ\8ORS;[:I!X_4!N9 +M<V`"7H6?QUJ1WN4-5"AY&)JP^CVX(\[Z=>-GXUEH=IVU?QUO6:*2(#6H55[F +M"_O]7P[QR3>0Z$`D,TP'-06K]*8>CBYCVF"34@TSE8Q]/4+AHI44'0X"JC4= +MCF&>K=3'Q+=P)*,K5U\!M1+^#T!AI\Q^X-T<?=S!VY0B%;JE9XTI[UO8V8?* +M:0O"Z>Q"-8U@WQ!70V;\!FH"U,OIGON<V;GJ$7J6<67O=%/<=*()IZ#E=_IT +MJ[.CC4!4-?;$(</B&:=('K1>VBOA<#L9,6>S;;KT'X,H#BN<'?$6C2_$&N<Y +M::@>%8,!\56RRZITN]@(AV4L(M@/$S)WH"^PB^?EB?,(.*1/26TG^<Z2(2T\ +M7F*,`1N0PTRK^>N?-CO/OL!(J(C:_=9Z0W2%ZD[X$S)V:;*IOCJGE;FG&^,3 +M7:`SX%`JUA*ZPVQ;1_=I3NAO-;WM0B,PS&47RF=/%'$B'+.D:J`)P#9Y+]D3 +M8D&EJ,C#'Q'A`1P*HM#,3T[^/?!`1-/?RH##`+<I3S$N9_51)=UVN6E%+[EK +M``;CQ.O5H)07J1_+_8%0UJ2<A!4UXXO*/9Y[!#BA9S+WL,(SN'?"H)'\=TP/ +M%*:'TFR\4%5.V(\<4:<5TC">I*-/5RGWAU_;2D79.D^`@,E;M@IVVR*_1_O: +MQ\\O#Q1/PSP@1&94$!@BV"UFB/'?%%'K.&;?[:3*U7&2>375'\3WA;.5=N(< +MYF+LX:Y[HQ%!S!W6/>'>-.<#A<MP*=!JYUC13R5HGK^:514Y_V72`K5,6#IZ +M2G_)SVF)T*W:"JB3-7KH:02762<O23=K.8@L2@3A`H(I$/W/B1R._.'LUN^C +MD:V>D<TH)2PW."BRYFOHMZ)NK.GA5G!T:RW5Q06RH;@X,T(E5>,712Q[O0Y? +MNKC4(,-5FORO1=VN%V+/'/I!&UE:BC]>Z86Z0H\HYMA4O+BH/*.XUX">5`)@ +M3]^(/]>C[M2\*9AHG[98,BL.!YF[H>(A5JA];1A_O_"7KN*9>PO'F?1_)VL\ +M^X_3T\(E$+X8C2PVS7Q9&"GU=K9GNUB%78[=Z!_;JIP`Q-=X0XW!:K3F["]B +MMW\/J*/,7]!1$;9Z:J]HJ;9X])+C?^)ZY7Q^>3NCSQB2*F,(WA/5OB>@(;DG +M/\1B1A>5=:I:[O`UZJ@G8''#NT0DJAR)CWVTF"](1C$DR;64\*US-0YIQ%DN +MQ0P^3LYNA,GRO%IX,X="-GVB;DJ,5;Z+!`'KR#N;2H)C_U*L@3LCW@,U!*E1 +M+@A05L_P",-1WRV</_Q_6,V#\/DN9%YLL="C3XC)3`5P8S3`%<Y?8*0,3LT! +M?@;!TW<PST$BD>`E\1()C>KF+[2P&VJ*KQ`N@-?8?MD#%%%(2Z#XRNL<B=K> +MK`8D\E1#7[?'!OH5!!0[#XJR,=OJ)"`Z]V\"F_%":;1<)6C])Y-_==3$(N=] +M3Y7T$CI%"`1Q42)FQX?KD;G,.E"$5K*<((C")'[=/Y]<%Z!;LOTQHRT9&A_W +M,!")BF70,4<6OP)J\VVZW>W7%Y68C0;T#O0`>'ZF*[AE%(RG!)N]N[>5C[W@ +MH;JK__C]L.=(D!..C?F/F53W4F1WC-KMC=GPXHV1[$/(02%FN%M/^5&J& +M\W//WP)8<[+@XGV5=-&)/\@!FJ2FI591"0"SM?'EX/M3J9%7`=4_+LM5R.2G +M^;D@Q1?)O3&U=[3T#CKG,\U5A^#Y;$H3'ON5YN6;T`3"*=^?VL8#MY/\HR>R +M.[2OP\^,_=DY;ZH7QMBL@$9Z<CE=,/LS$^VV@3.8XL5M-(*PKKONOSBD*@:L +MB4L7*I]<K>@VM29J0V&MU@[F^&,NH<LI/4Z;Z)I?6F<I;L$$NDE'7`W"&*RQ +M'I3T"DS2QY2"I"5"4\OG$CCHPC"1L+:?Q(2)I%KV39'W\<#F?7S#A.MU:HM5 +MOB6<CS4L:F<V6#<08+C$/#,*=]L+-Z@K$-HGK$,+,$Z%#X98DMW*'PA+*,)[ +M=ZYJN>R!-EA:&XS8]780#$43*,P17N[_912"[F46!08HJPEZL2AT=GE\&E^Q +MZ:V<AY+!FF]FC.8;-`@ZD29JE1H&3F4GC.-6,I%RMM$P)MY%M=A7P'IQQQO% +M@>=2&VO??EPC3W^D#(F2*XVIC3EH;2?-EH?3+#;YKMFG-S[62IU;H]\(".!/ +MHW(^IQQ#YQ.E5F#Z*D1\3/#185H&E&I!QHC7"I/%2^=SO`*E34LWO+\3&4'$ +ME]1)/YMY$"B%F0P'YTU'8Y!U0K&7W!.[PE/ML"&S8O]ST5-K)W<^:J`T#<%L +M'S?24V*G&R&$@0`7#H.-//#]XFN;TUCSNC\M$FRCSS@XU36+*)#8%2;1MXF2 +MT9MV/AO6>@!L'Z#NQ"9-9++J!/B<)336`!SKSE)E<3`(?#?7H%7ZXS:-=0^B +MD'(&+A.(]5^1R$!:+E1SE:XS83^H`W0;NP2D,2H%%;*/GPFO7CZ)QL'W@>.E +M5W+N7"><+\5K7C+#I%TY%*.0:@YZB[\Z)'9E:,.1LR:X%J3>-S,].RJQ:5YK +M^42XP3BF6"=_]@(IUNK!_X;3=\R7]9W:57(>!5$,MO^6Z!6MEXD85/,QLF`J +M":]E0.EV?R-)<>=IDT-">"]`E4ZR^CZ+"[,V*<?(JF4:&<.OU::$/_J$>7'X +M60M?;=?L1%?A!YV7-]^%UY;T+_/I9AC"6B>3/A;#T(?K8T\++_"NR$'I#THG +M%+7QX)]Z9?&K,8.)N3$FE^6%5NYI_CM8T0.+0;%V(J81%&ASKD0)6_<KD1`. +M`^D6$MI`@I-1QRC@_9<8KEZK$$7M=(S!>UDL8ZF:J][W&8>'&C&9J%CRU`2S +M6"LIYCG?CEJ?:>7%_=LS'T29:@?#.@W<\3?$C0EIY/R&V:=Z=O6!]ZR-O)7< +MG]18K#R*DFG`:Z?==;SQN`\PP\ICL2&M?^TL!=-V;IA2R5%PK4O!Y=C>ES:X +M_!:SZOG^L&S,,^MUE65!>Y*Q`@M_2'KDRJ4D<,D8S>8R-M<I"5+22(W+-9O@ +MOZF0I\1!'#;&TWETDA=?Q/Q!>\(YS@`*#IU"VX71`JH\KI%J.E8E:$=93\#A +M2XCC(+_3G83AQL&Q01D0,WS_JXF+OM<2`BR^?]$6;QPPK8>%03")84<A&2PR +M[L1K_\"X[0LJBE^/"B"7TFIUQ?,U_4L(N2JT^VEWI_0P?76<(3>9%/;5K_MA +M*\7#E$X5J4PR9)6?TA;P6L@?(GSV2*Q2Y;92%-F@>,5?BEAJ7,844<?626(> +MM&AI$DS=!L;@$'C<UK0#24K#A,9[Q^RZ5X!]PA''IWBX?QR&CF*#M',@ZXG/ +M?>*E7'2%B=EN7=Z&F:S[B(8FU#CX(08<<(J(O_-M)Q-S4-%B;[D<G>7"KYHL +M<&1#\:C]=-!4ZZA)RD5:^F\N-&&_!@%D6O1O;E#I`@CY_CSIBG(>5<K.PMA[ +M$-F[AQM(1:SD8EK^,K"[!'<4O0D.D*HO@-O@^Z9E`XGRT\G`.CFRH"H?%V_N +MOV.NW%3YT`LO='"^D^24G+,(MR&?41RUXF)SC9$H_3L.X1+>:',RT:$>Z4PH +M-P-X>\LC):,;B]$NR5F9Y'XO:RX=[M8!D^MU`+7X:F<PN0XX&6FW]=PP)E5) +M3X%J-[)=7N%U/7)(-0(1?9RBT9+MZ/^TH^EWU4JV_>41Y^AN'E,AR<.J1=<D +M!V]J\*;I!WO%ZDHV!Y;#6)ES[XEX^R5ISPCE$>I85V6[.$]'LSQQ3%:VBZ'" +M6G>R=B9ELTK:#'6Y/RW.!1AU%W?X]@!:J!5K`N_GIPV<R(5?%Q?L^-2]GQN# +M'@32>1ROSW\^Q7I[]6X?2@J@UO^5^U3F9$M-(5!Q9OW]6!ZV]=WI5(Z;N7+S +MN]G?1"G.KYRMZQU>GOPR?T8I.+VJ@'7S)/JZ5;V=S5.>S]AIQ#$G9"&::;$\ +M>!`[LQKX\RK4#7VO5Z/.U:R2H43DV8",^^BS:H6X:[442:O\&I"VC34UKT4Z +M9KL/$KIDHN03TSDA]'PUA@#!#EE`PN`334A9A13[32/&4UM)N`.,8O`V<JS! +M(NV@,>BAQQ4A':0)"4C6"GP_)'/H$=S**J4];$7G2_TZT5Z`%_!H;O8\23?D +M&;YU.`N=-IC$R2=)X&C`HTONS"4>.@=-D<P(@EA-3(DGNTD3/1;C$S5QL25L +M^'B)M%&-4!9<21[J;*A)#&$XB*.``/]3\UJGT]5"P*V0V0IY`LEK)I:02B<C +M.RJ-36A24VZ;$H<3FA-?MH+U"@<H.U"0HH7+>Q%6M*(GJ!406X4E%B/'C)D= +M[0#T$D-C2Q#$Q(,XO0:SNNDYJ(]TBS;_MB#'!,[Y.+AN),=1.[87YHXS&E', +M(EZ-.H6Y/^TKU"^/>'@-@C:9O9(P;]C&\RV#M>A__@DIOYTOUFQ4YJA%LJ_7 +MJ`IP?YS<ME[ORR[`LB2YX1M@,9JH,!KF/&!XW%>CY00=:?\-]?GJCM@H9[?X +MC.ZR%-S*H85""GWZ.",EN=$!\A@0?)!BL-_6Y-`6_'D#P`WV<K!/-[;O@\YZ +M@#HU^(BW_L[I@I^V,I^&/Y4@019HY8Y3<)OR<LIE0J8>JT<J:<H-D?P4:7UQ +M[MVMQ!9+NK:_$IEUC%,B>,E#Q5@KEG2Y\P>CR8!82^XR1("N81=&>_4:R@MT +MQ)%NLG$1]M^^W'X[23@IZ2(^:NZ.8ZU`H^7YM^E;8_+G'T:V<W6?K$O0;N`< +M5+(6I4]S.=I>Q694PN"KH/\@.^S8&!ZT/UX/`IO=H+Y[@_\S_:RAYC3?"8G1 +M#94PPP^G7>,KU_[Y:$H46J``?R!L(;$S5W8[_!QJB*-,E=8[+_+5J,321M<( +MKF'X]6%N/K110L+/6XV,EK:O<*CX4X(1:HD9#MXR+GPF!Z+^80S)X*G9F[5! +MR:Z/N%]?7\@6G`_PRS#50.W3Q\O")K!1RP;2:C8-%IK8L_1EZR8Z&Y!\YKOJ +M4D!M:5[^H2H<]IW^'6.9!8Z..#%RK%XU0Q]J[4U319(8HI[@\."%!P=7"=F, +M&!_VF.?^4#5K5L[V5"7_GV<LDCDL;+%"C15?(TXE(.E7"L"\1#NW6%XL::$3 +MU\85[8$T'%SAAVN54%1^[V##4B-X!Z)MK&A_YLMF:_2:!&LW6;-M\BI:?\/9 +MK#O1*31[YNZ,E*)3/9/L9D+P"<JL1EC;5BF'RU-MPB!>U9JMWYN*X^_LT$JC +M\S@L.[@@F8^0[NB[*O3%9/:-GM.9?]&YX'Y2>H+CQ,TW\\XMJV[<YY4"6\I^ +MI#79OO;Y^#@JHP6+D89"I<I$:6A:"E^XC&-Z&<]ANAXFC[&/8P\DHIL89-1K +M(9&PUR_!:Q=I7E&%X<F7#J!-=5-I5?GL%U'-UI8$ZW5=964+(580KGFR<WI$ +M].*''4PSP/=H3U9M(#?!0?^YVQ;753T.4\(_++533ZI!O=CL<_?5?5!L(`DB +MK*DM)29#OMF5"8L`^#[S\^OQY:F2D^LG%IN40<3*\Z22'89=0,%XETEJ9LJK +MI@G7F.60!;&0VKP*E%J[*L\<Z#1%H[!84VR(?C#G)=+<"P&<`)18=N1$W%;E +MF6=2OUVQ:9^\9KRLZQ]U7I);Y^^S_J\NZ$B5MX/6-6S21*$5L)N.8LS_!0F[ +M7S5B17]_G9=<8\3`HG4WW1IU$+V&OX*_P"V,+9X2[#R+XA%.-AUJ]T`\52XE +MC1SDSTR+*UG*7LZR)NO;1,P\>4/=K8)]]AH1:1?81OOZ3%TFQ+&/)/:R4[6. +M_I;QS>%OFZ58VE8$F0*VLK'1\R'=@R$*RRFZ>X>P/N;=%VXXDR710-A\&HNN +M<)'D+G[4=;=GY.Q8ZGY^)2Q?BPQD/0"N?++<,Z`Y?]QMZ[#O6\'=S(8FRW-7 +MV3'9Y>2<4C5'9<:D$E)'[YQ8(R#%I)34XL`2BDYU-T1BO$I/6C!/Q)BE&J^E +M'PTDLJP"A!-I[H]XSKEK\`IJ3IH#1X&Q87^S]LAF0U9J6XB$WEJL#HZ9"LI8 +M_@M0@!/5[S1K9;:FEL*.9<)7CQTLY<4B_\(DK!E;Q$Q1M-*1*\+`TV//"%?( +M:"\,S:='2M<QC=BEP9G2%?NYIZ@#`M<NVQ1NK;;<C"@7*P*J![/Y_6@1]YV: +M>D+'8)`$_.MY:);43,?Q1N0:I_I-9P$*],<QR)!5=Q_W/03F80:V=T`ENTNT +MUBW-CUKYX5PO55*"B,`O'S6,J4D))F1RX'P#PY7JD33].L@CT%]S)=IO-BH? +M%G%I&KNH>\BF`IS52-Q).=&4A_7!Q\-OATO(Q9E';`&/S31YWR%.\8`L8BCW +M$ROJQ?`/C8*_01HNDS)8_6/4$OO>('/UX.;QR%[4X$\E`!-I[<A/`M6W:]W@ +M62RDKZ*35ED96CFLS'=Q,>'1'VH,'?K]UXO/+$EGSVG"\E"%MV0`XEQT%8%< +MYL95K8P!VM4`6W+.=-,`*`28D^3D;>]AV>1OI:\MOT/X['3K[`1%7P[Q<17C +MDR0K'G&:!ICGSV@3J"[VV>!R7C@>RAWRQ1/[3;.?X6L909CES@K]#HD9)D?D +MD6:X9H,!]M:S08Q*1SI!`R>DA[/FH^-4&16!84.'@[4L5#H2R:QQ)!RB+6:1 +M-WD/)4/6XW<W9H-XOW-AJ7E55T_D(:FQ+N5$JHY`R-.4GG4OIKQC@B[WY@L9 +M;2=>F4SB<OD++Z>/7T?&26PGJ5'W]0GTO8%=Z?!7X%<O>4DD*/C'[20-VV\< +MY9%3'T5EW2G>M1E+2TTD`$SMB%G^:7>BP]*()-_6DO?OW9<V3JS,J]$=7N^A +M*FX_$5;X=TB7LV(^>W,`2L56"9F0&?,Q*DM50DR*[B`5X-3&ZIHJR,/+\7@_ +M/XNAZ6?%HMPJU*!6JN=T>A&<U<R&7TWF>,*<[ZB..CN>@?Q"QX/Y>;VA`;>K +M@=A;"=(]^FK5;2;-9<\Q]E)5!QX*U5^H'^/,2C432YQ*8XJNV5B$*7=2WXR\ +M?!(#,V)"4DD;@CA8TIOS%&;2FY"98IK/L$7'K-(F>N1PO=_#+>_HNA>N)^[P +MS*],/;RCR9ZZ.O=BR4\GX[LI5!'H]%@@"_Q6#X56MC^.V>/??MNN`7$]5E*^ +MA97DW_)E\'7C)&8<V#;@88D5:H:[Y>^7</D99]@A9FJ*P'YPC:9X_OD-_'G1 +MT)+D,B5@)^4`ND;!FN&K!"%(2"J^'X$@-O/_G9_E_HSP8]5%K&KS2\LNJS8F +MW0CF+1P(222Y]9T?,>9J773B<'-/90X/&P1?K"I9O50^-PG7A4^*SH-'*GH= +M?>`H]FM'3NH[8IOPI@E-;&\=B<Q2J30_O;#:]C,U?2]1`<;F,$A-VW\(DXL* +MRJPT(QR].-",*"!K`5)#)DW;&/:AU+R_!VYQ-ARHPSF2G:0S?[RHW]DM,_N> +M9&Q,C7$ZZ_6]3@NZ9O&7;5-;S1LX>>RJ>%8^@F764_-09Z%.$9@X>[8<EBTO +M0U/V;!(\RN_C[V>A6W7BF6_)EST71T$?_9MYFA[=8ZA\TN1,FKAMWB0:-$UR +M^N?!\.EA=9'#,IO8@P'_8R/B-&:7!R)X!F&QH[M.$89Z6F-VD9VD7<ZV?1'4 +M%8&\)9!!;7E9C^HR%I/0C>#;67H+?^1_27X4PQ`3!.`<(F$`TQ>F_'@=5H1& +M;XZ9T^I7F<[60K)7J:'S<%+9G8C2B-"8NZ0TUA%(ST4+)CL!`&B3_K7IXXC0 +M6[?;H-WA?TJ$H7XSAAH,6#1MI.M[H[C8UT>7Z^^`\QTF;$DY8<LZ*)CVN-)6 +MQ/Y!1ZA[`[I,`/7@AGN=G35"0+ESN7O1`&\5\4'J-MG<!G;_.%<9S1N1S&D3 +M-B34WD/+]@_$F7"%8BJE[3H!,GP^=%O76R!6^C;F5;2<)NMK)8T%8YKX;D"> +M<\07EJ4QRTPK:[K84I?<E/V_O2#<HDD+5\J`T>)6#CT$4!;[2^&3H/CKS'8[ +M&07+S(GKM8<@,\85L>(V"FF^F`YQVH)MCJ0!CA8X09]29"@;R%01]M-/6/GQ +MM"T7FZ&+8[Z!4R/6R0\QBG$M+-:A^_X.P'XV3'!6*GK\HQ``CTSQ*2!F_:"O +M@PI5+DE'RL;8#Y?8A@GWH;XR!)RFZ#G849H"DY?&.`MJ>&'^1=>A?)!`/EW# +M`8>@<-"PYPX!C)H!4_;0"I0%3=5^&><`*)[H5QAA`,`GQ118:!(F73NA-K$1 +MP8N_]&101Q%6)->P?IACP>*&/Q$F:1<Q'IASK-"D3SP-=6KKW*S/U`JG9U(W +M-FMM-0^KK[*PO$S0"3E,NX:U@.\F`W!I6;;4[;$@T95^(J-?*QC3M[6-52A& +M71S9HR)V)YD\O18:_&10O*R,J['>4`XZ`_.,[-`Q]EMSRT(GK.H(KDC\JYHM +MN<%T0P4&P*F8\Q3STISC*U>247<-59^9O42*>D5`GUF*M;<+\I=4M(F3Y32V +MH_<D<H2T[EB^@:LU=A'P<N]D_5UMK$."M&F$BM6:DQAP0/CJD(2/O.&)1&=K +M&%-H'W@O%U)@%[]H^L"`N'8,B`/9<D?AG.PX6YA/KDXI\2'V'HF8D_J]AOX= +MW3!44G1")`$J1K$<XE]#LKY]4=^<[%5/E_$Q=E]^87K-.@6>^=^:J;(#?[,- +M'N7Z1HN%D<O-ND53G6`WH_WLRV:PRIK3>GL^BN)J`]#E(<47U!(AL,-\H":C +M["&ZS1P]R"8K49;Z^K^6\%]WK`0CB9R?!Q[)]@WQZL-6S<7C#B#F?;9M&TLN +M9C[H"`JN2Q"CE#+=7ZW5&T<98.AZXBPN?WH&2P=+%G,,\I_.VJ#K]"'A6P[N +M7Z'7>K052VI`B=TKQAT0.@V&^Z3!S!92:T>85>M?\FXQ72'F*8%46*V9GL9I +M_4^-UDSQ_BK7U[KI5DR%O<'&D`R<FTI.0)?V)I0XQ&P^+QJ3+)#PD-@?83*F +M6&#_?W_$J'0)0M1A5+7U'7+`M4'1)8WD^HU!%=IVF(M?YR`>[F2P14E2UHSA +M&*]K8M"^4'U;+[/__25+*\AF#5*);R.',14Q5OJEP90"JZ%CLYPEX(_`CGA[ +MBAM,4<>%.'!B3!%E./4OS7B;/U+M59+)^U6Z/@':_2MP$[X`N^R3[)>SQ(9< +MKO9=VQVE=?FHNU?)FIBXP_U<3A`-9MHGM+Q`%,+&0$Z/@Y1Y!J?7ZYB@X4+L +M^``::)[4AOC4`6;NT@I'?+0;]9($@+#2<&BXSX>,!#R'91';#<5)I'Y9R6(/ +M:+L/$7JGUD:GPJ&&_TRGX>?)8`R]#5#='[!#QW-(U_RFYY+J(7U4Q`IW**'% +M'/<(GT9;S1REK7L@"2S;8-W>OZC!5@D:0IF$G[L&X=9CO\:,T%A5YQ_,>J>W +MAT3"+W+A%.4AQ`2WLX/C6`OL/8+#7X-1-PG31EH+.'<QL5B/UDAP%#22].]L +MV/4ZU[^<9RR)WG3-[>2\E-EC%A!0NF7'O+D/0\?ZE1S57H1(DRA^\OI',B@% +MQOIH;`P5%GWD34<)J#A/X%K9/H+N3_N,P#&C(M<J!-!2G/55E1T/0N;Q("(2 +M>Q;D_W^\E>#/!4?J0ZP3'_YQMK3"+T9;',UD\AB3B*TFH+S)MZC022;T>:S/ +M*:S+'^V4_`3B9QL;[R\JS]SUR(%&6`J*GK6O=K2*QVY2:WFD0+,=F0-82"%1 +M#D$+U=]WN&9VH!?DK$I+DV1K;K%W`GCQP$3(D<RL_IG6%4F&V_"4R*_=.8H` +MA?2]ZP3$C0=C4Z`K31Q\QV)YDG)VY*[HALB041%:DQNW?I-*\,,"G_RO]R6B +M*>%FR'2]FQX/G!.($5;P2"M(E'8=Y?JFW*0+?UB!1.E/L_9;(RS1*NJQ9A)+ +M/_B!TXLN^RA/7HB3@?8O\+JZHL%-GO"_*@7BH?Q^<MA<A.C0^*"9=<K;)MW? +M7&:D:B]L?"@Q,W1U2/D!:/3_O?QPY)`Q:=%)WD93CZK/K$=DWP]`:IP']FK1 +M7EKB8C*=5HW?TN)L38$,>+SS9J+WMH"9=ODHOI&*\]+C(WS",,CJKMJC,<5Y +MU#[J+-UYL.S&NTU0PYJOVX[C;>33!W7S.6]IMA.)`H*.EZAY=^IL][-_F66R +M:UYS`5DN?FKM17W"Y-;0I!TC;5$KA2?MFT$$=+,B-HK25UH$\A$^+".`Y5VZ +M2\Z[>$BG/M^ZEBSF05-E)WPU8K;5,,2@.*TWA:VUH@C4"3H22D9L:I^#=X!< +M-G$S7IMZHBBT*I7N*`$[5B0E(/G;L.CG7@Y,Q+*F/D;"#E(7;3S(R4LL-9]L +M-2@]JRW2U61.D\;%RL3T)6>54UY"\IK\HGF2",6EQYN!UZ]!C(E(Q1Z!)?[" +M9*+Y30N`[>P';(6`*B`#0H1G7MQ]$0(:G9LLI^1Q'I&QHFUHG[(/JA;@YQRQ +MBS_&A"_AL=9?3>*)/QO!HRXVO!S$G/8^["+9UN^&&9&*()3M.\VJZD@#N@3+ +MG=Z2&\WY/Q@$?32<FDHX?>;),O$=((]I/$JMU$L#<@CGK@=@Z/"?Y^XG>WB0 +MO&)--<=)-*AMZR)&OTUL3F)W9RPN?3]UYY=/%)U(*]UPDK!_3!E-H\$8P!U` +M;8GWGCM_H18[5`5WC".+A8+\^$N2[HIPB^2+[VM(!9UA2.?B+O\.6F<<$AE@ +MM*8\:J"2JN,FUBS5$2TEG'A'`5PI>0KO/24ELEM.@ARIQZ#VRI\J"\M8@Z_K +M7)4XJ90.28\[]XL?/?2M4`!?@_12$G^&)TH\!2``)4"@'-`%\=5\)SGW9[N5 +M_)N3<"VV7SHKX"B1,F'VGDU01(I*QQ0I_>L:5B/_*J.$\V%ARW4,4Y'4A[A5 +M-,NF9$75>42G7RNBY+I73`M(PH14I#DQ/O[2W]HJ9&#@6(6OX:-\B/)8`O(< +M(U_!AG4\HD3$(J>G+K6$2/,[Z'0\CF$#5A0C5!]4>/,+B"<G9V&ZF,^,A%?F +M\%YRW[CXJ;`!Y?$C`U;-NMXKG2I!>C:CB`KIDA#=DO>-_FT_N:A[)2`VQ'O_ +MR:#>[;`X';_#X*Y]G,+,"3YU/(8QYI^@X]62KSU3`+OCHB!,RMU(%\5J43%_ +M%'J7I[R_'%M+J\1`XIYP@2ECT!N<9467[$Q&Z!X"\.,U6PXA<GM^OGZ'J-W> +M]=U*@G6]/#%54IA):PC).0EL;ERB8AI!R:X%EZB:P0.,`:&O/IGFH+M3GK_W +M4W;,%Q\=>[X1Y:5#O`,FE945@0VV`0E(S[J/:,.2:`Z(1RO/(45[!63,].<O +M@`AAJ2(A9U<,H9SKKO#R66TYC[G"QTQ&!Z]SMX*#[)>O4;SQ<>T,ECUR$:XY +MW^>`^6XQTACO>$Y??Y/I`]O7;=NR4"SLTUNRE"$>72@]D60\@\/S<^?JGUR: +M)X.^P<F*KYDSO]FA3IB3C!@]3"GVSEXPJ4_J48G>*^^?NL<C2TVK<&@*H-2^ +M8ZU-/Z?'HM(&X],I(S:IV>CK#[8N5,MZ6`\^<SQ`];,%PI\:$!XZ4#<Z$`Y; +M!&[)&C+"9V)Q\$9@O25[UDW3R*A3/[U1P*-=U5MP#_OOESEHGD?WP'66W@(( +M%[BTJWZ0N/R9JW<(-29<.*I8U.ZD%6@*F.PB?<I3_6Q+.?!X35N2QUD5\82; +M"[25R`B\]KOSBV3,GK<[72R/XFETB08$9"0K0Q8`U(8*SK(9BDL-!4%F1CAV +M)39D]=>U,B$:;41,<:V3;,/MBI_U;2%:/]@>`-I_2,68)8.SZ@6*Z,@T,+[> +M9D`NUM%_!!E#JO>?2$^4M07WRW(O$M!/<*QGVWWN8Z,WK!$7;'1;XB7('ZMH +M#&!N4E6C.R]&-CQL_4E+CFY:H/XB2.CPV`6<))^&O%HT]+_P4'4L%C_J4;;M +MYI9\("O<=PI:_:;0T*E`]OI_D:(*LR4G%9>H1RFE94;WL<_A><\+2+E,>/FV +MB.XN2(I^O_<IW7^!M;LT*/1+.%4T\6TVJ<4$X2@-?9RG%84L-M?A(A4.T@YY +M-<U'H1%M:&0BW&&%/NDR;0';MR3GYY>+_^"+5AH`#%,J7JJ;4Z50Z0F,MZ76 +M]YS%!>+SM$(Y.A6K7[ZM7*,Y;RLDC,RT,;?>K:19M>@[$:ZEXA5-W0NKHC[6 +MSD^**`?(K6#G)D]@)O=?'T9$;INJVF1:]C8EK@AX:]P@CNY/-\\]\?3UM,$S +M1>!&Z3KAC12X!%G"B7&-N26QH0Y%DA[-C^CG]8CFO6_>&*DK;_9;JJ_8O@S0 +MSPH".L%G-L;BNHF(<D8"(ERF-/35),Z0DE0J>^!KE_5'05S>?$U"A?GRHV?& +MH]2"LDOE[`UEN#D8ZCG^=SH^%%,5NZ#FGE*7_.V<4EZ3DVHKJXVP7F$PJ'FL +MM)H"'#@QYB!M@$\XCZ<BWU5!UCZ(\1F744)QIN3-V(6KMGY:EV/>P3++OU,; +M!Y2EHL:>REI3MISWNH7@5[(,MDBN9YR4Z2X<J,L')81^H9AYJ"[M6!;KO@'1 +M*JUNXD*^"_'T"N16A]1?0LS#(!D"+&*S>JI5FIH]:$5/VU`RGPV5/G:=@,L$ +M-M[==2'!5Z?7"6!*_9-#Q5E:U0JFWV$T=UUZ8"S1!Z()]^XSJ`?`%K&G%;+X +M+7-V\,R095<D&`L'<LV2`7`OJW8\BGP%;Z?R!!>.WHM.MSHKF_@Y8OVV6S?Y +M`F7'%2*1">A2X),$(&&;_4N(1&8<LJ]J9Y&!GB-I1?;P?L_L$.16QW?\IGAC +MWH2C03`GD.Q6">V,5Y_$Q.T6-CFQ4I>H\?.TW;N%$:P'F@6R[H$9M<4&B!78 +M,A^]=3/E,X0POTO7$8/<9KJ>5*(3,+(;3%TWZ,Y>E+<;#\E9Q$0VA\1@B(U* +MQG_J+=01E7#08\U.&ANWM\=DB.^_OB]D=K29A87$H?@A-W^;Q_,HL$]KF.0S +M:_=$DI0QI"7)6JG.'[=,ZN0[3`9+Q.-ME`8Y\9R)I_\3W+4)<5)E:[0RRQK> +M!CZMM=IIDQ78S(_!;SQ"!;(IW/[,D7P\[YGZ*"8([97;4E4Q=G3D?4H3C$Z% +MPU;FH[KY,/1H%TM7U#'"I_?D;0K7XVBP+9XQ9ZU,AX/W['G1XN]0Z\UW/NF- +M42_+DM2A($=T*7#T86>`?V_!:D'].1W8%S&Y&<(<_ZNQK+4`:J+T!67>;I+] +M]\`Y][RVBVOR>K85POMN"X@\$9$X+26#SN)0B.J)EW/M*]B3^<A((A*C^B/U +M#IN,(EHT;^]60H5?^.]\T*U8!-.2XB8H-:L#/.X])HNNY[@W153F([X81B$_ +M,^#ZTFRSMR3<84PJ#LS7@MA2GI=-MJNYEISS;O^)A"?K1&C%$7I]LUAUQD%Q +M?E[P5K2;(0K,&WYU<8EADKZ7YZ7`+Z>BR59;Z&!G/W'`F2W?'Q#.KO]9-9O: +MK?$Q/^ZNV#HZFE%)"JZ<\?HWT,*]*/:]>M`"XJF\\;KEB!+\#B;U]8F[T/#> +M-\>UQ9'FU%^:.M^BQY-4DY7D(OT7^(-3O]1107#.*2EE!;*@;2?]^`$[>N76 +M.]%YGF=G]9:`>B&/7CW?@D^LN&W?0H5($]'F_%+R?#5-9Z:6C;>^DSJ\$['L +MQ[=?3A(`!2&=D^_51&*:Y(U'9_U"S@>1OK9FFHYB`"E];2ZP%JL!`!946J+< +MP#`X+Q$N[Y64)PE00#J/TX5%/OY(/<K.Z>)&[M8SE%_*:*H&$4ZO8D;WU'KU +MIO?'**$\P6"8V;^[+?7%W3W*IM$87-9L\P('#K:4NQ#?'PJI=`_FM&I? +M@XE3>BR,P+TQ$BFE-:JH(Z)T)G&[SYC,2ZVT7ZUZ<*1R,AE=NZ3]X[GI%ES= +M./$UUQ8LH6@2TNY;C0:,R=C?D?$IO80]1B^*B3WV)9W\!WA_)W_FO"CJFFD] +M-PE,DEUC,Z.T."ZJL&OZI@I0(A4EV#E[MS*NN-L:`Z8[/8.*-,G&57S!B\^] +M6.*9G$DO*\,^MX!\I''FH1GW%7=IX]A*U8C^\&Q9.)QAL^6&4:<I!-V'^P%3 +MNYZXEU7NNY4WT]_9FR*_9:J<A!R7S[,"'_7H5Y!FW\%&4W*#:<6ZPC!,YP:* +MY8\RTF0:/U,>"#;+DL?_=*TZ/;5M#CA=U.:^TA$MX8<?.(U-%MVUL.07-(M9 +MG5E[[:\TR&Z>UX*.&O$;^D3M;S8*A`/E-'A9-KN/P$_7>A_;]F#VXLO&55XV +MI[@2MU;<`D.TI=WY\RJ?HL-28NT=?TN8G!.W50`SE`]JOOR!W;-(>?61Y3QJ +M7W)7>'?IZP,]_G7:!BJ7M5Y&$O=\3`Q#J>P'8\F6..Z!+O\`&)O9,<VRWG); +MC3(-^H9%&:O[\Q).JWE"DDEN('DY0RG0G.Q>BC;'7?GNX2?PW@;[0U.CN66Q +M`M#:1/"KHH8X@I=\T]K*!8:[Z"3#$XB,07_FS0E-(N]+/F#*'7X>'=OU([&6 +M\JR'<4<PPYM:=!.YL=GW48,F)$K9[C&Z8P7%)A4#8N+/!RTFC+PD^A!#:F-C +M2[&\5QB^>$CS>\?.*JG?)`]M:=^T*Y?NOJ3/%"YM2$FY5F^#Y=D@]HO@/_XH +M'IPQWX.&WJQS40G.K@:/]Z4(RN%,%+ES#\)`P>O<X:_>4^/CR`*LJ[I."]]? +M<4^@-1M//H>;W+Z"9F>*>(^[3M,(.U5!;GA.#<QX@1,J7>!V1X_BA((<?")5 +M[0WVMZ_%7W&^D]`D:+(G%KOZ@%(:LFRRB%X,E7&,`ZSQ<.WW#V]=*=1MTOTF +M"(E[1'\[]]85A`-O=>O3+PPF8,<$D^$MYZ--*]UI4)-@!F<$Y!-<XH<11C)4 +MVE#9=7@K:-`QYYFBLPU:CYOC48CTG`K_4-RQL&*BN$;R((ANW.2#$L)-FDQW +M1.>$P'$&5AL=E0+0B<`1$U;(W'7$<TK(V@BEN`QFC&X#3TP,5-5\)_`8`Y<0 +MC&QGK3I,.MI5WY=2?7&68VI\YB;1N&;.A8IR\<MFB34]HBRN>MN.Y;@=Q>3W +MV26J%Q.Z`@^\9I'>)$],<6&DGGZN@>^K`XR:KLUMG3H_`2&GE:+JR%&>MLU4 +MTW2A2)2/2O#EF_,BGD^V"J1QRRQM08UZCN&%?9:!%S0[!(S)3&W35=?$6F*7 +M^MG@@`45N5E%<$CJ!J%D.><8YG'^2:`A.Q_E^@8"3W$HPUFT#GU#2#KHEAQ' +M\`/7<9,-WGB53-?X`!F$ADQ8YOY==>$MXJZV,S\U*OM:!;=6OJM"Q\)G$[@& +MM,]Z/O)H1!B@BQ"E_"U)J7BG%A@Y_=@8.40I,ZDKE7?K7,&22EOC>`_-87QV +MNI-].D6T>PL#^1X%WDEU@63+>J+6C*T\($3**4)#!9V"&\M.H7^N4Q*-!EC? +MA;#'',?(9Y(%Q8=D=0RO-@<]3(^I14^T\A*/0"5VG'H4=/#R6P"3`OB%G.:H +MAI2R%OM0XF#3<P1MZ8;5K^ST]XOH4)+41T+NHQ-E(A]HGZ8H9+6!RP"IOCE$ +M?`-?KL=M3*UK5.,G4V/JN0"3/SR?..?9P3LX[>G=GDAXPE['3AZV"EKB[9RY +MC`4>[<[9G"%"Y,0+-+,VLMM6E7%NNJ.$Y-L78=VE31?19XK'+Z,*R)P=6-#, +MH3QWZ+4;6MQ`FDFAP3I=Y!,;-#K=_5Q`)TY16EL,@CL;4Y<DOW@Q6&]&HB"L +M\E0.'#O13X+D);P:5@Z8'7P"8<DGM5;3F38:TFGWQHBM*LWBP%6I(-WRCZD' +M9KFX.78DED!H%U\^\J01EF:`[]NF]Q5)'E;N1]<[X#"5!);RU@5?)G+$MGWP +M%77C?M^3GQ57T0[$GCWI_=R(D]L+RSL<`VHXAVXV1S,]EVX#!A$+J;L-+2S5 +M:P#5G5RV/U%%AL1`F_)&#!,+:.7'Y:BO3JU"UQU`SUG>]@F8N9RZ&(WU,[G3 +M5[+R:)%***G\H5G:E[AIP5>Y'T$M9J>)"2C0]T>[H$C)!4?Z0Q?8O6><[I/[ +MWE"+I"*F$ZDWT=P)&Q".J0TDC.714^A3[DD"O'Z)B=T[NJ.4:>RZ`RJ8F>>M +M9_Y^`PD@^TRYD/;3U1\@VBX+T$..G4%2LTTQ8[:&('E]SU<XM:+U8,@K"BA? +MZ5_-NB_R<+OQ'\,":1PYB*E"+JQ3"9;COH#BIO;^]&7,;/"Q%CJ=!RV8'@*: +MB2P.QPW7^V,##$E/`VDHZ*TD*.;!L'4D;;0OTR$`'51A,9^2@7L,5CJ+]M"B +M25:%WEW`5])V)N]B9?T+9T@#+=XL.L^:O3]Z+8)P>1[M[+LW''S;$3Z$\N^5 +MTLS;+'"Y`2:9#5D%XX7:`U$>J8%(&3L`4$J3Y>?%+'V,K<)L^A!&'F_*1Z;+ +MBYD[D"@^F!J4(3DUP3`ND`29A&&)!C%H.N9;B-\^;]J"Y^2$&+F"[>?H?3*C +MB(W2'#`@:=-2(,F#\T;AA"<.")/08SB`29Z4_`P8:^4<&U?(X;%("$FTSEZR +MH@UO"FH5HL>.8JAGNW46\M15DB[SSK-RYUR:4G*MX=$48)#\36%AQTF9."OC +M'#`!?*%ZN22X0<[W+V75*';A_B9L[9I:RH1.%1NS51I1D""[8]FX^0%LK\!? +MZ&GEMW.GN$K*/HY^]F:A>F5GYQA'K[P,&_VLE.]96&L`454H3&G`EM6+XX^8 +M'&RLX,YX;@^>?[VS786%N1=P4-.!U"#S%PT<BU(&)I+,!<I#GECB[';HR*2T +MPU-$SZ'R\`\\P/-&F8Q0%()HB)GX3R)W:W+L<1Z>L2!N`$;(W^"3[*%1[\4% +MG&?;Y<_5>C8^KY[FMB1.Y+'Z&!T^%TR2833_:?FDREL[8&^JFEURP?&*H(9C +MC,H<QSHC;3-$P@C$H5LRC1Z[MP;`_"#YV4/_P#GG\_U^\9$!1@LCGH6C[V)_ +MF8$+L$1;.&GF^DK55RWV\/-I-3^M`REZ^!X.3%%*]E(U)ZQ#HDE:VAR^>F?I +MD`C?;;JO522G@;1H;I()Z.SBB#P63C'89CA7^7H?&7'X>T!,OC]=EC>7Z/?! +M_L:[*]:&GW\8.0H[23<!UO2^`8PW.#@D,W5YZU,\38-]!5K5=Z8[2(1SYRM0 +M4?6+.'$`9Q6T!'="(9_*PB<^4=ZC/#L@V6^(KJ-Q)]8L.H@H%Q#9=I"?@956 +MKL`+*JF>0,5=O>YJ!]A>IS2/.H`AX$<#0=PK?S7S#KX[6:0M;Z\F<_%OK[>* +M]O$4#T@2/487C>Q.G7=3[9`T-<2PNFI:=,9;N8N_NB@1Q7+T'^&42`JH%L`8 +MORL*OC5%V[=3#KGH(@,1`1T@.Z8?]'NJ6K`^TCJ!?R:#WA+&\9.0.&1B]06N +M`U@*0.593>G-3*BYY-$]IBPXS_=0&$QQ#4]!,F'?9'(=><(U:512#HP0K3_O +MS'.-2]PI^P`4U:`UFWF<_W,)?"%T-7VWP&;#42Y@=R!EK4:N:*GL#GKN"[2G +MJ+!9R8:A#"!AE8(`"V8@[I@];%',PM2JW>81/TI<_!"9$4C*6Y0RD-=IZNQ6 +M4@9G>9$98DC=+3H0;+_"0/WC1U,Q@:W@!R5&5T:_FG.^W;\ZRA:]9"J0M@E2 +M_Q8*4R91^.5*U**%>!NMMY>8<+H-#A25&=#9'!^:):/!!24T^+8"]3^'2_S0 +MFC%@I;QL?&7B_"%%!EP&.C'S4Z:$I;<!@RUKM*9`X\SZ[(CI&9C19Q=:8`,Q +M93L)V>$C\J]`5;<ZJ$@/"N8HB+I^B"V<4V)3`9<%G0!);,+<N52TR/D\+V:5 +MXV&0`"=I5.X7'?_.VH%4R\?^&.2HZ./KD"O+%<#6?YO#U:A$+(S,@A7LGE+7 +M1QWTR1US?7SOZ-:^P5+*NZ7"3EMFX'Q6!^<_/<$",JVM7B8V'MJE<;'B#OEI +MKRO'=3>`XP@(*]$(6MS2GJM@^X!I%WR;SL30GHQ<2#'_*S5&+M//-X*^C]3) +M*8(;'A5X7UT^@Z^6AMRKU;U6?SVU5[VB,JL(IE7P=!I&'?I#[(#`N6T"5]D+ +MU:[H)5.X^F$&3^&;KHL>:(`#=36W+[M:QE)9B<K&UF/^PO>BE=P=/P,2=6P6 +M6>T!E?1-U@@C$GA8E0R>Q7-2@B<\Q"TF7Z*O9))?Z9S+QSB*=L[IC6-#$-": +M2"QV&B;#?+-YT+FU[!?41E6%?IT1C3]6NZ0SD<&$,9NVC>QH:B15_>4D>93I +M]3(O]II!<)[CE#2%0/C4W`Y;MVE;FIJQJ`YC0*F'$UP?$^1@:KIS%[#QM?') +M[3]EE;K\#):?Q"9^9B3F!.C;7TYR!N:!U^'WLQ&N0P_2\T7:ZQWH1TR/!;:1 +MW6Y0W0[E.3/C%0U,IUE?,+\75!F<G'65Y#CSZ(ZXUPQR#="D33CL.4!;2"J- +M-9$B63GQO2GPO)@2"0(9PUDRY839QL%2PF6Z('KIWKI7U8'@7;L_[1<``+`[ +M!=8V`C9L]+O`9-H4H<V2WW6+**+HB^.-"$S&J^*.>1F>[_<%IUU9/DA5X-C1 +M:`4:(9UB$][/D%/[SL$VT0=$$S%(3IX4\;YW.G,TM-Z,\WI=-K4XB2M',HN' +M>5%>(Y#I'TG4UM4B,Q"TAY..]'I>96:BU+<A<,'-?DA@5Q:1A#0/+)44Y_&X +M%I\5)>3DF[9&X,#8V#KZ03U+II@`I5K!#'#"H,1I%@JJ6@F*YP-OGECH%UC_ +MXKJ/65?@1J?UP5@L8<"ENAGR&404%#*'/\3!<N@*P"AL:>.!QZ;Z(#O:DSK# +MA+_6:%QTLY:.39]KO:%5[^K$SG]2C?%DVS4%C?9O(?.+=I23T4`N8F]Y&<RA +MO"L<!B1U"=:2:/^IE3WBP^&W3X?@A1A6U]W*;C!_Z1%3T.OKXYXV0IEN^=P! +M+M&G^%ZPKKY.-T^O!LR6@/_AQHAG[YW@YSZR63!IL1=F4VUVK^CN\9QYV6KO +MCP2PCN$[%^H@TW1X$A)2KNG/8LN>W-UYKDTY+%)6G:?=V4/Z12$CWN+(?CT] +M:\@LB&(@#<B0OE@*9B2`;@==+.3"YUT[[;B531@"JYF;QQ,NE@)^A6@[P(HA +MZ2_-49TWV,N0N^<$J?#%.):E%L=PR\5$`:7W:[W(+"DPDE#[->$AT&PR87`@ +M:X9U1VL+;O3[4`H3HO`UWX]#E+70/,M;XW#M,<BO#6K[:9.]FJ#F!6@0M5]; +M,\I,DL]W"K.H0M##"N._CZ">PQE-8P$`R>M"OMU+]BI1;$87/E>=)%"/I%<W +M^S*<A,QF\*D;RV+`?OPR%)>6>^-%`6$%^+^$LJ^+25?OVEL0ITETD*Y$6BV: +M_*+P[\8(!\DQK3#]\,#GS><(`(:,(0UUO\HPK6'4?;BC7]?R`^N)B_2*%<0( +MA1-&*])37S>/M9I$G^OK0SZAA\HRY_J<DHJ!&1(2K(AOE<=-I5B1]51L"6HH +MP0JZ;4#'$,+;_U8*:.8A0A`/$K"_W+!#O66R,K+1U^7LB6/-7UGLO2A"EGTP +M.F@O":04,JKALNM?"QO=O4EC[7^&^*G`LQJP(QO9!$LKZL-!-@V6C&^W8JCM +M,(DS@.FP>RU;E++6TUR57PNE.+[&0-DB]=FC?9JS`2FA*;UI)\F#1-!6M\(< +M!\*<PSL93OH35Q#MN,F;=*B\5&-K*H>`8ER&T@8PA!\C([Z$X';L52B_#-Y` +MJX#'061MY8"@__&-@_`++Y6:@AM!"MST>BS#*&^=:5;PAW]HQ?B4:QM)0+3( +M:<%7"?&`"0\:,TUMJWTF_@$GBC]R7I@"G^Q`N3TDVB[F$E.+%CIXB#(:'#QS +M#I`#:#._S?LNCL42>J41GIX94,\`OZ=Q[RLXQM=>S_#$2<8AAM6F#8V'=[%H +MUKAXI&?-!LM@A49.HJO:3O"]5T/+/QO\>1\T,PN46TI10,'\.&EF3P&DY35' +MV(DN=:#9'*F&GJ*72?8_UR6QCW(K[&,PWBP>>LQF/MB`_[(PX)/9PKJH`#Q+ +MYN.7,)WC?2U/]&ZV^4,O2;C0WR9:&SYVFM;+<NWM/A*<4P)QZ_.MT92U7VH2 +M(-\.'CQ*3YENMZV&/,Y\H)^[B]F;]MR7G_B%MG=3X$]?"N^UIP=4<@1*DW/# +MK=0T!KVFD$/7[5&E#M^UI7`9EA`)>]E'I+D1X:E+.F<G'?-_*>>,9?8R+2H) +MS)Y[K+*787NH](Y4)\GK%%<%S9Z38*'9(>ZB^V(3N*/'57#(1>V8P"Q]U=(2 +MNTA]G%G*8N8-SM>38D.D#XHCM$M%Y;%T%%0+\K0YF%[-#(7/#+$)WJX\&L); +MB.U:EG%MX%VN9FQG%;9`-IL&U-N-E0M,U[U*7*6PWJ#ZND7V+*WAV*T6,O>H +MPH$G2LUD0M.%JP#=I6W%H7CRW-4;'!>P'D0*EO"V$U3:?]#E.'D?!]C*H7!Q +M%0^'`>$[5HDWSN<!SO317&_M[D7!H#+NH]?ZU/["2@K*-734D),J1#SU<--5 +M&=UA8Z"SOU*/(H+?%0@VV)`D>5_\\\45[FGR:@?BN5&_E74UA2YN:2K7B\L3 +M'-HVZ"EGX44:J2NF[^F:&0#(\U7`UT&@6L68'EU)I8?E&]C"CO:?)RF=3(@Z +MFGW>^)3923_+03@-$3=E;-8*L$$DX_.YV0X)71J4W493D\R]:>H.DL6J8'`J +MS$O3^)>_A!+XO>FJ^,8KO&L\,AD3!6C@WGUVC[C"I=FL=MXLKIN-"DQ2Z,V> +M[Z)OKR>5&HM\B\/R]+X=DLC*&+P%L`]6=K]$-4G<S>,60&?(FMG6,)2`&VSH +MIF!-_@X!_YSL\2+;#XOWGUN!\['7688V'34O!JF/5L[JC#ILK0ZS%Q0C-K>R +M0Y)N=\^T6.+G>H)MM3`///D3;_E;]>8O&<&0[J>9H_<'K@6HBV#^->/8>R(# +MG]*N;?F<2:=D>>8ASV"`62MCS+N!6@(\#YOIHN\7&F!1`V"Y(<`!(U[3($N$ +M8R>*[2>]V9T\;QC0)O`TEVW@/3&H9P(XO8LL:(`-C6K!N>]"!I]:MD/F;377 +M2J&JW:$APYD!.HT"*?G9SNT^9B8O;)O![8I#Z1CCBC1K42??O:PM_7VKLZXD +M:1EF"5XBG.H;Q;$_M!'*-O]E("/=CT,$7HJAN-.Z(B`AQP9W["VOB#1]V'FV +MWC-2`1$S3[>7)R&VI3;=_UU>AM^2,9(,[Y/64U^P8J@:5VX2&_=,,$KS4X+V +MMR5`BDY^PO=R_$]73-&H&":421TZNXE/WF`1N.*`O/T8L\ZM8(#+OH9DF +M&-_U(/T&G9&68?O+U>,/)/1N"7$<,WPKY4H"D*BKRXA/WS4)8,*+?\7=]XO_ +M2ZMD(2-L9+"T-_NR'FC_I_%!KS_AYBJ'$S`V4N3EH5SY@+Q9*_D1HAX(UT?] +M?$"6]4`A2=2\W',"J?L#PS5B&9;XFLW^@/=@N>K%K4G?D>`GNLE=)E3P8,Z0 +M'.%2JA9,OB'IX@P,?'DG`2!CPQZ_104C7[-F6R"L!6#L'(:U27-0NINUY,'" +M^T`MQX8X:0Y;UTU.H8C`>`"7A`W*TP,"V+1G4R'L(0RP<OF7!\`ZG+;H+3:6 +MB//EZ(M;WWEPGUQOH@M#MV,KF/7(W9+*IOYVZ@%+[4=$`?U@&!5,>-&5K/L= +M=Z1^G9[3%@:7R%AJ?\Q\-?6G<1!R;90U(1N</)AX:W&MRFE62M)]4=!$:YY- +MJCBFAYA@(S@ENV5?BA(78W@#LIG+#=Y5`A]M!P<8=P3I=)V^?I]_6[I6+%`9 +M=+22^&G8Z`E<1^OKY3OH1[!U2/GF+09;`=*E`GE69+>O#D1]OS>[&M,'A`&F +MU^F'FT9:!J38N?/>%?O.LZ\OR438,VS`EX=A6*@P-W/!^_N`G$*G?TVE\VBL +M<8IN8H;9W?H'9I'4LS_$%X[PC'JIK,4\&UM+@1D';9<5PQ2OOXX=^L6?"8^W +M1E4P.O42GS:'[V*<1QH,H1430AC:<K<'>!0UJU(OZ9BE<&QW03K:&#\=7<$J +M:SDE,UU\A"@FX=":'B%#,[`W@:O/WW5[;6P54=>CWTD@.WQDOH9O+FK424OM +M]M<R4R@=%>S!)3Z9WJQ:W"P+6HBZE+-#VT\O$BAK7Z"-Z@R4=T=PB2%M7=FY +M8['WBR1;?8'^44;A<_5OD]=(3#Y`FKH+AA=6F]Z?;,`A\Y=GD0IAB6'S(6:O +MMV&$_>+OH/H"OQ+1#ED!/*1/?4;YTF6W&>`+G9"#R]M1"8@D)?:5E$\1Y`;D +M_!0`<>.,XG??JVKG6U[ZKR-HL]5+A4!M6:[L/EQ&Z>+D8CBV'VFM('!P`<%Q +M!18[^Y:;&$S]3Q8MZ@CAUM=D:TY1="*'JN_8B$0P[G?L++1TY!`]_)?:].OZ +M-CU5]\F\6[8Y\(9<(1^SK:^!&:]R6/CB]`3I;=A0[0E,S^B]EKDI;1XBF=Z[ +M"DUWM2V.<Z#!@D;JYGL\Y5^(%MTKYO^Q#(>34VUQ`9N.OJXDO\=K@SU#<ZCG +MC!'VV14F&4-2<@JN7ST[;,:O8I#1:R`R6BZCY+IC%C4"(QVJ)4^Z-!:>".?_ +MM`]>`NE>^"9E"^1H(S,LL#"LU8!R><_1:$"8XIAASWW)AW&C&2(]IPX\CQG" +MA*KM#6578]@ONU(FKPCC1C09'%MYO9F(G;U&/^'P:;(R15BH:6;>M1#HHYP^ +M%O+9I)_*1%G)26(=BS%/W)^D,7A6*OPU"3Z$_?5/*OU,F'QT5NZ]:#F,T1A` +M>D_W&L(67644,F52]E_41C^Y8+ZP7^!*?>]+"GEZL[09SYT/J//,=(2W6B[5 +MTLH-]:,,F]PP<[_\WG/VSCXY]=T,:N4&#?0NT3%7H!+*JV^>?]W4YMSYAX1Y +MK]_\H:O$4>O2INBEV"XMR;N2I_=M1]Q*GN9'Z"[/`GDAZQG1ENE[T"<4'S5/ +M&P'8Y*N4DR#WW2%=[%CM_H6DL)F^8R?O/&5[CQ);";),E&2Q7<5)9:,P?'JX +MRZ>1S_93<@DV;,WPM[1*SPA6LL(6;YI&Q'&Z*$6!W\5-BHFD.R!3K-3YHYD/ +M=+0O!L<2:8J+H3$2D0S#;A5:`'K0$1M#2\ON<ZD&7WG_$=+;53''/G/-=Y__ +M2?@]2+VYX:.;PTXJ8MT*IPK.,>`S@G=@<U!>!A`!LLU!!2&R@)[:7-39+WB( +MHVZY'<NY)Y4C&$66I$%[NA5N/Z:\PQ[W8OO*5;XU0?SD<3&C0^196-?78)O( +MC4^/88B2A&=WX@_P<MF>T*5?9;2HXCPA``*O>&J!9W?:I1KUU%HJ`&&;/2#8 +MX4SZ_"/<-IS9+S@839F@9>2"=D`#I!E#>VR2U*B_I,8NQC]Q42+]R`[)9%JQ +MLQI@,O0\/E%O/CMIW*9[<KS^GRYB&HA($_\6<GF):!<[]Y?K,R8V"YF`5: +M7^YT;K[W%\HJ^;BF/&>^7.A$OAHAC,0UX($C]\?YD$1UGKQ$Q*4<+'F5_0#= +M.HR_?V=+?(4.;U@#9@=!2)3]F-^D9G_-QW%QOHFJ-R1^W-3P7D&B`BNK3FU9 +M.$G4MA!2%-D?+02=6AUZ@@$)1HO*276WWMWG`CR\\AUA+EP&?*XS*;;7X1FJ +MH3Q<%#<#[*WHZF>@6D?;*<*@YL[*2K.)Z[;AW(4LA@0G0.^\)<+A\=:NU@%T +MC`:S+AS9MX]3@*4\F^#\8%PNVK1^`^A-*R)@K;L^\I8_2OATM_#M6H"U_!1C +M6DC]$WO1,!4#-W`Q<546M.\#^JO>N=R1</^FE%48=9[U)6'!KG\@II*DQ99] +MR#%BC[\?V\?2.4L5*T&1"@\,'6'*Z_;M$:=08\.?6(@UJ#ICV=;K/$/1.4U( +MYRG)I.BB5!LV%4SL5Y#,Z:$C#0W7@(AYH7+3>S'P(O^5UZ#D*F*E_OZB"_/K +M!2"3!DVQ19#0N>[W\$2"?KJ9.1HXU9A^7&%'3,S7`@%T<,S)'#R+MX`H(X_# +M+B3D6^TZ'X!@AM\@^+"0167-,G-N*<=G!,LF\@C#UP@*DXY]D0[OVR4@.F?% +M'0Z7LJ?)N$,`K6.*B58?JV`A"0C7ZDB?!.^7W:P=2PBM""[?W=&W7*7+EV8? +MV7L4H_H3S]S.N.3M^W+_83CHUW=V$.5CT"-^K$7>(3\R_;1O2%V5)9=0P58, +M<SK8)3IWHE0D#!/<M:=Z/"DKJ8I6PXUJ+_2E5`+/G\-ZY3&KXX^%KU:Q7+:$ +ME+7JO-*2LE9R%_;;[7@4@.Z\RD_O+GD\.6]V*#U70VL1(Y8N)ATF(Z+X%$O= +M8!_ZB#O?GM<N%AN]FU=`CY6%-1\H)/'5'C4AI]T2]#QCE<[J"+">U\.BL;AL +M>(?LA&]_.BO^>\E#:PN</=`V%%41Z8Y&5'$.S']G-6G]4;VG`O,+V)W"Y:8U +MF/?YH`WXRFQY,C5F3'"<9R:I\]S+UG,CCLL494<WQUC)NZIH#.HN')K.XXT6 +M<WZ9QW9:]`U4QP:LEZ^^<"A'NRX[K;.Z_15^6D/`:G>6&YNHB][^!E(-QVHV +MZ?31WD1H%;@K\KPS^?\MK:NW:`"PX!DKU@,1\IMBVG3769!4_O3EUL135.9V +MWVV#='SB65R#.EM2)S]*I[^=C"W$+N]$W>D)@RI482;A&-'OOZ.T)2`<T58? +MR*:D.\==VPKC(AYZ:0(>78>(H#V^0@UZE],)A)(,!KS</>BT`$E!%2AZ[0N, +MF<]6ON1!G^QG'T)M+4X5SNV1=:9=]2)TV`YFM"#RZW]"\:.-=/E_+URXTEN& +M)7"S")77#->8#,P'=/PK"0M\/*?-Q"JNE@\I\3Q4YU]"L=1R`^IE&J00EIFK +M[2TBUV7NJ#MDG$3\_":2NU/#4'@!9XC!`+DI,`,!&*3>UE=RH.@2Y'$VB+)T +M6O$I_X8P$:U%QD^!ZE1'<):&2*(5S=>:>4;M1]C#&E%B>U9K;MV="O2^JXU/ +M?=,S13@BM#-_M'I!#NQ$0H.-IYOK2_[9XJ]FTX6N!EZ<L4!MAC3L+L5&.9B] +MOR];"-=JP$"9]8-@!"$75`/5SA)/^F%;@^LU%\8`Y!SA\\'$O94/GYQ"!>/7 +M5S+8C&J`[S1Z1HZ6G0M]:,I%(%M:[/PQ[0D.[TAUWRM/EP_/0H;Y`XT_O(S[ +M,<2S[PS)N+&G'"W/#-Q!+RH'(>Q)9SFRUG4&]U$W07A8<KGDMR(=L*63S2>5 +MOXN()\]_6TY+@)[(ES+>27#?^QWGT/W05.Y[JY\\8ZH]'9V[/%X^\"Q+&<LX +M;T1Y(:YWVR2O4[8O[`V)QLS\X,BXGY&58T1<AQBL0M?`@Q4[.9,`]^4(.L8G +M3MD(5$1,HD,YD4#$-AQ;Q6WL<4#=UPP?M`X,+K\$^IOVGW`\L._*K>0#82-$ +M9X3,BZ=X%\%+S%BC)XLQJQCN;;"/`P`P?L[GSH#8^Q'F>&V^@)C!U`B:Y!\' +M9KAY@*[E;0B>[MMV.NUE[K8$26M!$I9\_9J)'`)2X`8\U@)P+2V#]LR:`V&+ +M8#&`WX^Q;S=^TJF)AMKTC^M$>=R2F]'J5!)S\,@,0P+^>W/R/6K</"6_%#0X +M#$G!3=,I-\5CRI-UH,\(5E-V(F&%U(1-/\*3SX]&*HUN!6F(AGBPK']2&1V[ +MB+/%N_%P<X(;)<(RXF&8AI]XDAB[PVZ9IPY"6$C0!T;\TH(_XR59SPS]-1/( +M+EW@W8RL@9U!S.$%_MQ1RQ-[6:Q:[X#(RNFITNC0<M28`Q]D.-#H;C_,W^*F +M3[U*3A/GAVKUF[6*0!VA/GEQ&[7LOWD3Y]7[4*8<LDXFUD8<G'\\K1QNYI7Y +M)<0U_MP9[!;TKP:]6_7S6H5,97A283FJ-;(O!8^TB=M9FXIDP#51?M`_E=V4 +M?J`R+<VM$*09&^*V5C%[!(A=5@%&'T,3$ZI/PS>75G.=:_\9-IH+I>CNP)6* +MM8`L0=BA_G4F+L+@G5MGR?P]'F=E>KRR[@X`\@\.Y`$;AZZ`)1[C6;SI:M`K +M$%&!S`>`AQ=#,?^GO\!>"'"%@AD"FB5)AZ>E0[^X?9%[?H@(.)PST'./&?3^ +MEJS:-;#N>D(4:>,H96"SU?FV5:#MUACQS)$1H1[VR6"3EK+<OZ%\K5G[4]V< +MTGCIQ+>,)>J+"1;W^2U'FWG2EE"J"[F&9:.0ANHNP.F.UE6&QR/Q%UVUE(!" +ML]^KL;6N62Y2]T59L\BHMGGW0ID<A11/-QLG9!0\^#.OA[ZPK\E&0UR-4]MP +MANMN!^%/RXTB9CVWY>'[:=%`W)F,@U\YO$"YPM]M5.\W=XH@^M*R%+Y%+0H` +MU+P8>[YR^VBCR=VKU0Y.P4%'1?)X?S^(F%71+TQQ)C%66+"&T[7J;6DV*GDQ +MD%642:#N00*&E9NHX*4(_6;[+-0C175(B\7I]QL"T5+U]@-%SL$H,*8V?U[S +MA:-YIVLJ$)I@).<02_SZNW_HMU8X[;EBYJM%"J#T/2\YV33M`!9.LQDE][]H +M5-27WVH/N&YE!UROI&O9!9;*0F9Z+XXK?LZ$&@%ISET"67E$G/S,3D[P6-IQ +M5V$Q%V=KSE#C"9W_QD,JSIGE`<*BA4/'65A?DYKW$DQA-02_'W\*/S[HUJW> +M4Q9]S(;9."1GRL9^`JZ4R^G*<5S\O74'4SNS=N<5G_P)0J9+*1P1]ZN_VWJL +M\<WGY":Q;8N7=L@BN72CU^TG^`UOG'D$$*>GL?D^-4B&(_]>EA@[)`G^H(Y] +M9JOKXYTT+"/MX>_\LNR<P>^F1G3\TPUFG#[UV0MHT`.T^%=,OID6*X7J[.T` +M,D,8O&A#&FG(OWF0O;\G(/J_-!NE5T?PB"MDWE0RB?;5O9T5#R'4*(@^?FJ< +M*U"Y0$OY9CX]<>*[2YUE;9C3-C3N5H,)8#I$#"#@/0L!=+\'.(21>=!5,A_& +M@JQ<W5J$N"B2/U7DB@/&Y;:?<7;*C?UR\P3[C1,C+N5"/]!EAIQ1^;S"KE)2 +MLV]O4BG:8G/WVI5X1[[<8>4@WSW&M,XX>>W*;IF8[,YIZ\"!%F(^MF]<D-AY +M1W9-1?PH=K6Z_;?2J[N,@T8:0,4F;,ZK&9HX!RB9I@=0R>Q$%OB>UU7[73EG +M_68:4920D6JQ$-,U[:6NQ`0&)-CYIP%DY7#5NY,CGK*&6@W&;%GUI;;<\0V. +M469ZMV8SNJ<X#Z(J'#:M;?1;0'W5X:;TZ10^'T-4@T9#Q[1?[1JKG-LHM\!? +MZ\B4IY](IM\\^\SI@NJ-^M6$W,@/W?L:!"8!7$:J.0&5N#,P!0S]'WG.@!L@ +M`<[1;@9KU\!EV278*\!9U1+?V9:9;!MP)X`52M$]4\JZ[H^B,3R?_C2:/1:M +MJP@S/TB9Z]-Z)D1Q\8K2:1`4CL9:W!AF2M.A?OS1L=&VS?!)?ALF]X@?A894 +M&7_FD4]7/D1_M,*L"??)*GU)*33>(%,0,DZW?7``,D0^[NZ)&;HV&VT96*6? +MQ&3+Y!@/DF0T<:/*%MDZSAENF^\:_ZUG92>MK\:%8OS1N_N^38=N_[\Z:Z*( +M$IB$T#U\!N%=NH#A):X@;-+JA@I^8%MF/'IQ7_!'H(XST,$4KI)Q*+ZWO*ZZ +M=P"T`/S#[7L2_JC:7YMKP5`9U=1\H-*:$9C01#GSA6G(15ZY"%>ATXU*=O$# +M8-)X?8=380;]NB5;UN)/!(N1!L]5AM2?Y2G=3GX/#^6IR':++N!&OSG:9?[I +MPJ7&1Q-QBPY:G5/";BG.OTFO>QHJWX.%<F?6Q?T7.B(+U<)]L)O`QG[@?$WP +M3G;:3?DVOMNE$8CF\-.TB*%FA"NN$P=%E,UH7D'#$=@*AM'^]E(REG+_+NS4 +MKOO6^1\[?.L'H(<IB689EL^K*MH?^VV/5.2>9/_/A#4C=CG[:E.8YI*DY%4\ +MOT%Q.V4-K:X%$9@*U>MT>ZWKR4PH*@;+>(#[@1,LQU;EFSM(4=TFJ!<M,`3$ +MA'UR<+[X!G9D\[G1:620K-7@LR8*U!_P)$;$?#$[Y*N9[U;RFWQFE/%3L/I5 +M8MH/!DJYN^L5O';*?J_@#&1_"'T"CMN9F#P39X@06:WQHV)[:.`G%M9[FV8^ +M#UQYG4=\ML$'=RHYE82:1G@T$#EF>%!2#:MW+'9G7ED`=+BXZ0C%$9!S5EU6 +M33-\;8F]6S^GS+NZMV<>]"2%:R25%4Q-^22E>=HF=Y5K7MQKN8JE3@6"E3?= +M,PJD10[P%;<3"R)UJXY$A<CG,W_<*CQ21GC:[)H2NB;Z0/5]0<WG3]$8^Q!= +M4I2RJXQ9,E%]GGR.O0FUTQPPP?\NH%!2#K#M"#\R'3&FF>-R&:P[DL$,T]A_ +M9WT"FXJG=R-".X5]\:\_PE`A)O&VD3U+OY5,,-?B;B^+4C%-=/B7`KIC@(%N +MC8#6XE"^=3EKB<1P^AME_.$%Z3J]Q$8QV)!F:DSF]E+<OAL[XR*`U?F)$*]) +M10(OK/Y;<+^:G`&]!]]I8(FH)MZ]W/;U?&<7)4X3.9>QT@6C*-NH<JC"W18H +M=R)%`J]IJ2W%!=7.27ZM:=X[*?O77V7"3Z4+8#L`M&V6QK5Q*)W6[2;LQ*^0 +M$L&SH_)T?V06Q6O*[JC")A-ZT8\1OA'[6R#]`J;,&22#S/=I%",IW0*TJR4` +MLJ=6R\]:XQ;K:-)JN7&*)7>HWS0522YKE(*F*,&^"N+I92;\UK<3_YP9.\,M +MF%!8Q'.4:3/$*]1Z5VJBIM:B2=NAV`8XM!AM.P/H\C*5W2`T*52%=5@24^]@ +M5ZM[#SBXS9;GFYE]EI(#[?$%3S`SB#3N)$KT7,9.GS_\7A"M?"=*P,T6W$*B +MQAZQ`(=?)#F)P])+C5J/X9!/OL_0B9?CA$-S\1A(ZYL9/QKCB9A_YK2POY]& +MI&Y>4;ZK""%0&JFB#76:LB6X'.B?;#)K_*#@I=!3^@WX=3+BLMD4Z8SD&!84 +MW8JIZMT@$2&KV>BF;:!1;1IGE9%PWYVWXG:@J&,&T9H5[/9FER[IP](($F]L +M:&Z"`<]0V:PSIQ8O@>><A-K:D/UOY3+XOU1-%\$2(L`W'EQO93SO(2M%G'8Q +MW\38.)-0Z7NQW8,OM35)$S)<.V.)T(A`C_2,$UBFV>6].<]U1Z\ETWJU\^NZ +M\FS="N@U?Q%\!A2DD_GA.@<TYQS<?1PCYUA/L!?2Q(:]-,8U*,'B>VZ#,]3W +M_QEII%7/U$-`QTKX?\\\9PMB),.&B^T)*UH[QF$_1$XVFZ?Z1Y4.-`03=B`F +M"*!>U]_-C&S1V3;+/ZD8PQU[BRFWUV,_"M98"[)8X:BU/N&U9@7TC%BY=;4P +M-G%1&0PEP/?SO_$Q.;Y`7)B:=^L\TZ\"_971\!):N&8-/'LPLT[@(#%M';L6 +MQF\A/O%=O]F^6?1&K/[(DITL*@(F"R6"@5Y3TGYU'Z'/S044:&RT\Z[A0"QW +M3J<".BB'\/)%"[#+AP7LQ\JVOI5A/X%J.0Q!?&5:^H?_FZEDS>9]SAJ<!L^U +M8$W.LW++KES`UN($]9(,L2;UL=.V9'P[B$='8!?J!\F@>8G$E)OJ74E[I(1X +MWMKR`RN'UQ+Q7R)CI>;'ZD!';O@P*;88ZCP^92#";[7;DK%;G6/)4E?.6(^4 +M=G/@.'NQ)8=9L;&%[X:%,8T?U8<<OVQC]'*3'`Z>#+?F_`=L/:C4B?[Y.>I? +M7_?![+:R8$*G,(*P^=IN3<0W:2%E*U:\IE2.PC'D'PGC0%T.T?N:1CT!%@Q) +M.G$^+4;$2O-#67X0-3D;>:RS,5K7QP0RM12DL!Q-3B`]2R]?NOX*+3R^5EB> +M6K(6E+HY8=2-CKJ(HFJ1H)8C(]XVLLPLQ5;U.'UK\:*Y%N&X#90K4;F95;=! +MV+(Y/L)49'?K?&5Y983<GD^J&_;(CY4G0@<+3])T%O39!#WS-8CL<9DCZD<_ +MQH2BA'7&R5.&$[A'S3\4WQJ$4P:BPGPWA8>4LG0-:FS2#5!V]FN@%$?89#A( +MR+4G!QYM?29GJ1C!7C;&<\X;B&(-FS&YA3N*!+0OFO.+B$5QEV<]S0V02</P +MD1N+HBOM1R["3\HX^#%T!<FR[\F/&$K@RYFK]B=M5\_X!W?!%&(W%?RI$8[U +M0"NCUWM$S!$;#R-7DBTL6]<`H;)XB<>&(:,AB1Q56/,2NW%ZVLX13Z*_'J;G +M&YDZO_RZWOG\SI\(<S:+'W?,.@USP'!W(YRLZ[()@(`]V<MA1!L<)&"#+P.% +M#KS*LL:Y=6NO)H('N$?52E(JOQ@&-#P/@08>S\3I(VP3.>W5<H3LDTLQ+RWC +M[G8/WP3D60.[TQ"1.K]!NS&W35!C7)M#>9BUMIN;(*6-H>G4TD06C;HT-N%^ +MR&CI,ST!3,IJ_B6=>O4!>0?-W?,19*G.,8+\W1-:<\*/IQ%/D.BW%>;ODB>Y +MCW?:5RV=#G0H1=="I/(U*LPV/7*]_5L)Q:WF=XAJS!P.:8PD]-P):X/T+1:D +M#0'G.!K5>&5F^3U)CPMD-MXI(C0EU@7*WX*$-Y2?O,@!NU\+B*0F3V!79R(& +MCOI,SQ#Z'7H=OI^"<=(#+6?"5JMZ&H[[I-*JU3_]O'AE&$:L"+.?'W4",O\A +MA"B.R789UF,G)]5JUPV]ZR'4"XYCKE(`_&Z$G+KF5?0;G0LE&F"ZEPECS$'' +MJ1[C`U<O<9OO,*[)^1/FK$F]=;Z@^0-8?B:Z9+XA-/S<J>2:W$[,Q+@P1K6\ +MP^R6Z,VC8-[=*7:E_T%F)(@%B'\*6'"US8ME\]?;T@@0L]JH9_7ICLT.C"%# +MH@2P7'W;C;D0/8Y<$+SVT%B7F;<^R0(D;-ZSQ><N<(VYFR8RI+S'U\/8ZW-8 +MW[?.`N"H=?@>^QX0=,1684'8SB*F#A_<$JPS#HHN,F)]Q3'3Y(?'*G`/W*)U +M35%#AJJ/OLQ80G86G,P-&@4>4%O2,9B`K??88@@RDX)LL(X/;=\0]QW>*L%; +M:5(TD!H.M="%<3D8.\A@3*M`K,B]\Y:V+P"/S:XS1(_H-$:VY^24'<X<S+*` +M(YWH%KAJ%("KK\#,`/I`.Q+\M!&P$]A7CJ5Q&M?J2=(:WPRZU6_V2XFGLQ&@ +MK<16IRI'K_1.IEFP@B2[UI)''H#+2!J9BON448$-W"A%="J?OL,<$`HTV'`Y +MO<A(:1]_L"P7Y6""Q&<?\PQ&"<(W[SHW>JZHOEJX-@RP1T>,3%UMF1*V2O21 +M*-*A4F=!$]AW+S,K!X+@"$3$;Z-T]\FDN>``R6#6FZ'*=$U;K+](]"KCL=]3 +MV6PR9],4E<CPI/<$:?R2658B>LE0ZO/RA=U6:O*G6RTEH6?T/0ZHY3RICV6) +MM+Q29N51[?!^8!LM/:4*QE[4UKX1L0X=S^1UY_;D1&ZD(,7*+]3U##T'E+7O +MXO2&'6G+WRC5G7`GI+=7YDX&9Z#HI"I"/W?1#H\4YRPW`ENJU*?3YH8%EX@D +M)_#!)1*+HO<?+RY=F=Z9P5;?>^'LO)#!Y07'C5$41Z?YNP1J@9($TR.I_T$O +M)]!K@[>"F@)WITP/%%4G>2)8+'I]EX4KL6^PZ!AV:?)M"I"2#8S1IF83\!ZG +M(-*XZ.F"H@LS@YP47W?&Q?;"NAPB_&-LL3_MKE=8+SIO'N@)I%4V"$V2<YEG +M8==BW7-UE5_I45S&'#7WB7$LG\U&]>4W46UI5+)(XG9$/$<[)'8.-4Q)KW61 +M<WZHL)1J9(6]!VX$7[W.>`GYV9(C.G)*OKF)^TM18_SX.S]52<^45[KS*DWO +MRFSB`40Z,!5@6GO1DO#J/[+\W*Z80T880)9S'FXX/KO#72)['\NDY358KGE- +MJ"(EN8F1S7HTJN4?;7J@=\OX>1NW6"_J0SSQ!/BD2.QJKO-+JE4;5?^,('3\ +MIQ)^<[%5D3Y(*EXJ8+O21"$5IY/H'.&\W3?2+J>:BM#HZO[1UJ'D/1WR*&)L +M!7\5AS38C[#'FV#5_WWIP9<8,N\5\(4V]VK%)2''MXC@@6?08B;;_">ZMGXC +MD.(Y3R\8(*E$_*">&=<<6MRW?JVY'@1*['4<51&".*=/4&"CK"7F%K5<#[4[ +MI5/?NZO_P!$;XL1^416_L#R+/MT2?(]X$5;3-ZYP/FUR.7N\W2``PM6@YM5) +MP[E%LH9C_L]+&K*Q]L(&;.S;X3('^NXR_L0.@64I_*319OE'_T`9PMZ)])`Q +M\W>4-?EM1$.AZZXPC,>\*:->33_W/Z31Y,Q/&'>J<6CAE_YRB,#=1C?,0)FE +MT<OM[YB!3I%YI!!@/94SL!`2)7H]R!E2=W-S?D`)Z+_:TB03OQK]B;2$-=&^ +M7(30">`Z7>D\%*:!Y]O0+4.C-+.M@7E<ZP]>$QG2%8,X.LU_C[2<AKE-L/'< +M&QZ6;E^KL'[(EK+`T>Q,46R$,;7Q-V6-_,_<4-:2$^\<U01$PSC$`/EP5;/* +MI5IC8/4-#)?T=J3@$WT,W\^CKL5<,4_\B0,5:/-WJ1<<IGO'%CDJ$3"*2^NY +MNB$;+D+$IYM9'5KC_4H3-A(4KQBU<0`<>$AT[TF1JE$"*BXX%WW&P&O>?'$! +M:K+'+CG;)X<QP>Z5C/9VF#JMEK&L-U281V"+2;"BMR3@)O4?S[[A@A5![WX# +M#-A;NH>THR-R85\C*O`3T4!M676/59G^Y\P3IVR(?WNBK,AY#B\M7B2P/FOQ +M%T"N5GU4*;7)JQID41$G5@)*[=1#&%W'GC,;",9*'<<N;R`=C)R0K&QQA.X[ +M&WE>-/[7_;R-L:_J6;]^LG#PY,.K)SK;LG!?2MIX,"O5)K0=X@.1YZQPT_NW +M`8"$PR[KB%C;'C?U-/KN>\@0-FZ5+Q9J2^U@UG-23IM9^:7*0^D$!Q^B!)[% +MESA#1H_H:MY&E%=%!/[*3FZ<$XQ=3B_/,VMY%DMPKN!!TOTZ[@#T'5<@'@_! +M.IR(''_;SZYEZE,&W&'7$MDI#0>^(W!/AC>,"%U-*U19X)JV=$'$X2%1O@N` +M4_!MX-(+:34ABHD7H]&Y26_Z\[8O?A$Y6E-7J*-,C;F4'KP@]0:%?Z2_ASJ7 +M9,[N$2>N\^%2A3KH2!S1IH:<'=96,"KQ?P$Z0O)UK"[72=37#_D0^P87\3;U +M)B!ZHP<OW?N)[MH[]/$4A,T"X5*]Z2!`\L"HPPY&C]IRA%F:W'5,U$\E@V9Z +M:O$=T1I91E6O51.TL!G]+@C<4:-`*;:JQ(N@F,B405^,OS?8SS;8Y[\^6MB? +M>PU5<W;0\Y@M"4&87S&J7$Q,.$3Q4%Q;A+4U[WYH0G)!G:"3-BCC=GMXIVGM +MHS=&D=&Q01-L\J76-BZ#WQ-[3L3739`0-QDPW@'COHH@8%LG:!Z,ZNZ#9RS< +MGIFA7@$T]I=D"(MK-GJU.2+*AA^:;9_+[4/^2]&?D'FUY3Q][<:'ESU2BW+- +M*"I_SDSDLI:GMB!^&>ICIB2"_RL@7V?83O@`G:A.B*V"U)?[^[H[O?+BWK/' +MJ42%E880VBJ?.`=RWY4*T4)!G;)<2:E[6G!LQWMC/B\)EL7O$L&%?IRX(?OX +M/D](3K+GK(9@+AI%'@PZTPW2Z-/<^+\=A9.NM"*P$C/'E>@VNS>9CU+T(YH! +M14SI2"=8OL-(SS0P(X9#+/NOYAJHLJU5#^?&W0K)I"0=23[H"L`Q[Z+;#7/C +MC!LO<8OXO]>O4D;@I]N[W?B!!.165;0H_M[(F,Z5K[+@`@\E82=1]7602(ZP +MP:FE+S:N/F>&D#4C'?EEG,J+EHIA71B.1>JO^4H[@@='MWEMP=4?5_GPH]<\ +M`5+]48SORP1!5\@L!D;E98284?[_)<4K)N:9`):W"LDWT/I'C*!QF;TH5"/C +MLC?I5$H\.T?&M)AI$I=K!OS:1?VW:W+/G\NJTR8`YZW]J-PY5'T$BOL+<3(^ +MV^J9])L/,J4VYQH+$^MZ(V[4PA<&.&W_OHZ!WS&;DO(8K=:=2QUK.BO_0`9X +MO?7WPIF.3V/S?)5&8P(R"1)PFD5DV0Q?_(BIO,"ODY%QD<>1S6A,@SG"[G.' +M.,LH,^FIAB^>?AESY%4)H_`W41S,/ETM]\92U>86%J!7^B'<`P`D&F=I:F6D +MLV&SD&31VCFRXLIL_4U<5H_Y[-,W]Q'W*[HPP`3<.:8M;<#C4&;&,ZX,?+Z5 +M52`!L'80>=O\UR0]RLU@ZBZ"+['B_MZ8H;>8ZW0SVZ9V[/I+BZR[Y0-,7.16 +M7)*CFK40I)PKN0F65N5\-B%\N5X\VT,;/'?"_5[EJI(9.-X"8K9PGRB-:J)+ +MSE816?/8IB9I#GXJ[*4<C"%N!$TI6Y/GIH8HE)BS7$L&^Y9539SEV>`A\8L5 +MS"5X3)A+B6(`HFE!8G*YU\FWQB\]O&;)*;M4(W#D?&RRY+`7!4U]8H=^_'+G +MT7&KGRM/9*O8=L=>(BOF9Y]*O-(=HG]Z925[8H&9J8RX9M2IG!`!/<VMY@+^ +MZ%8N)0>W@Q4#@Q!?MHRI85>'GO`**9=,B`I(GJ'!B5IP')I0L`M&G->+':-\ +M&5=8"05:T(H3PKL4$WS.KR!X\G`[>`FY-%=/K4>T99V]DJU@;4G?BC8SG)TA +M<1%5?J"P#>ZAL%89><'!CXJ6D^?(,A5$Z@6P5*:!OI93);=Y(;@8KNT^WJ;R +M+CVOGSA-&`):U!_4``*##L@.>K*9_W@&C1/3W/DI$F.,X_$-^8-,P_Z7F'^, +M]!@XQU]P_PL>)#+LQ/%)^(=E7Q*4MO?:MB#?VS@[YM6E:FK'34&$5#=:S5V; +M2JE*O`ZQS6*H/BEJ&G?_8?GTC/.N'T,;,>]$H"9JCL*%IHK,:7%%W-`[Q4VQ +MP02MGE*W&JN9KZ2$I#W73"L_Q]&A(3(3+YMT[Q@R5AZTF8:;'>#D?.Z4/C1# +M;<:`3AG]OIA+9>X,8,ZD`)`-J.DF_<E$"LRZ*B2$2F$O3ZSN2N[ENQ)UY=@V +M_F/SL^CTJH8Z!ITV79%?MF\9A51$/14"(GN<$/4^7VL+&_=ULI+PX$`F%##H +M'2$G6\5T]G8;2<.;9J><Y<?<RE,0QT.)$8*LN,MZJR86C]&Z<5_YM[PIV$AZ +M:"%4@,YL@)?&VC7)/6K-$`<)TQ.$66<*MJUQG;;GA-UEH?&FH7F``7N)FLB/ +M4RI-1$BAD&'`5=/.M-W;^*S8-]OSGDL[L#/N7I-S9U#RTFV.18[+5/LC'&-2 +M.L5K!?!E>A$F7AD,*7^C'5EC+ZMJ.$QX3JSMM^!O1?A;-YITI6EM)50TE6O5 +M.NEU\9XN"@[I071[ZX-%;DOFRB..'Q2($KD"'I?>K%\7?MFZ^FGG=R>K0Q!] +MQ8A]N/,<N/5@RO!:`5K,DZC5HY.\+^LM<`F3"+.D@1X-@R7>2N60^EE9Y9.B +M<L@DNQ/%*KJJZ*:6^69I8(O^3@S!.KPHE:("*^^$G:YG]MU_6)0!I@6HH?H_ +MIHHZ+4P*(%8NFP]`-X#/TT"Q`PK-6%F!C%\SGF5<A:.7X1*V>PR8+1V@ONY! +M\UFKIX8DZ'OIL3]0J?AS>I^M^S-_94W*I2G@LHV4$>_K6-2,?P!^`43U_,T+ +MP`'[$@R"%MVHARF81#MOI4DDO<@MVP7%_?]8K9DUBY@ZI>TP-R96Z'`GS`>1 +MU9I<%SU#\:@.&,SF6W[!]\@>$7\8@=0Q46I:>^G%3'<,B)4Y8]`[WE^%?D[P +M_.\D9T`F'Q`$7I;XK=@=-%>VKNU"!^C$G&Y2'\*PZSA&3[;5)0"=O"(JE9-4 +M`OZU)+B[JEYKQ>"^#WV022[=P#8"&7GI]A>X+0^?AU6\WD+N'YH&0"XAU3EF +MG@$@/X#Y$9$Y!G`2U&_.IE:QOI"LM@TDA)P##O01!4"GN"2**B4'67F7Q!"? +MD'!3@<"?"6CF(+S?40OA#>0SIQLH(HO?-(R/9<$=]_")J0XM!<;!F/J%5J%` +M4FL3W+M05'>7%IA7)Y$"\C^+3<$'-^U,Z+*BS8T)!N5:L#[6=@.;+0+P@" +MCG:7=F;3N[1@\6A&RL_'.0HCN^1=8L)'XYA)%*>][@/`U_L``LY>;V*86-7+ +MLXHIC^-_\=FM;,[_*:O@UWQ2ZFZB\*4/KK,HOZ((("%O),,BG]:1],DL`9%Y +M!W=ZKHASR-3P[2[1U]]D_D;LHX?<&=5,_KOMLGFTZ]!E]3C**&<IJ!_`2M/H +MB(I(0A?\Q7(S9R3W7R6\72L$6@8#JF5=/@7=J`HDP;[3AS_U/].YXCU'FO.P +MMHV+#[+/#@!9Q_1#YDG]I-C18Y>R\V?S1"]NT?6D=0N@I\K7&@>I/0Y:C48* +M<_.?]N6`P,T;E4*V7<<>_*'W?B</1%&[Z'%>7I&^_9-AR.GR`05T8P6*FAE0 +MQ"@]Q#O1:VCL&:>5NBR(<T.HRH3M?NEYZM.Y*AVBEUM`LH]6ZYC7RU,_JI=V +MOLT9LYQU1P?(OV$*`&\C]8<C''(7.712$F<QZ=A[@(=P^LYJIX:U),R/!R:X +M\Q#T?0_+-GG7YW1E:]>+\.GK>N50%.IFZ)(K1P(FK3RA5\I7]FL&4PN6R8@! +MS;Y24,`G;`=!FI]7$DXPVTL34+N@T3`P^EF)?14R9\D^82^*V\6E,3C-:NS# +MG[^XZQ=E.R'`_F4%;D8#Y;$F+L&K`PRU6`SA27T#$4P[/=A#07>Q6RP&B[UX +M=0B$<W`*];6=P"JFS&';0<;I4JODZSUC9&(ZZPV]4Q#19\X2#!1].(4>>XEV +ME(A30'H=6#+4P\VVP7K*IF[](*;#?4A"H59?6%)30WB0;K0!P8:4;YWG(6:Q +MQDZ1MR]<DY*[51)D+>M1TN+<KWC$.T3I)F=W"R$TO%D',?>JV=@7.XW,L3VT +MY(Q+QB+HCGTY%)=1X:A)-QED<X:`/A,K\EK9:<5;[/+^Z`DV,A%/M*Y$&W#> +MY,&C:O%<!O>Y.<[B3NAAKB_"%+N%,5*\C%?.1C-#8!.8!^X;Y=.\FE?0Z5 +M2<5#^L8K<668NUK+_KW4BZQ/T2C/3@,<)(&9JE$Q/I5<3Y+%^->#J+K\MDJA +ML0TJ<W.7).U6\`#PO0309BQRRFC8[KK$VDV)CUV<7#^NRP1?GC6.J7&>)^A! +M7_1!-7^B]ZW8TYMC:MVB?D(OW>7XB.'ZP9B2'G#"?L#=;UP_SC8W$?]U>9,T +M>WF"8RSC6C"U<:LR?RA-CHQ)JKAJ2R2X`H+Z)\0A2X?Z+3?+^)]_NCKX5VL) +M4]CZ#<O-[P%K4H8^>=E%`?+;K26HC2/M`2JVNZD57#8H6.TZ9W*_UQ@E$WJ: +MAJ/(-BCYU,AX1DA\:B7QPG[GV+F,+.B1"0G%_B8NRV7%JQ':O>WLHNVHT5S. +M7?ASA]62U11]&#O;P]DC6.@-OG8?OT=(=G9IY@S/=8_F7D[Y'HANQ47NE#5O +M8O*%!<Z:%/9,0&]KHG3UXJ`Y\A_RQ7V6_*TP]F?6/0U9SQ<KUI3=2]]@DL$= +MN1"YM,$=EC/:QSR,J:^G08GUUP?+.<=R,$K9FE7GN:$"6SMMA+B:5_B_,PA1 +MG*IO^PNOL,_KB)0L4+LD0(7/53S,)!FF,V4*21L1PI8[C86QKYOT\K"8V^7- +MT/[BQ^]W=9M#_;MX9'1QL6S1)N5VS#-\P?Q77=3W"3&MN_F!4[2ED'(/5#&S +M18CBB<UX9/N5ST0/:%Y(^FSY`<S-Q]4UOHL76TIQ.HX<[6,:7G=("?U.6GJ, +M<&2Q[E0%9F&]UQS_-M6OG="@5:@+Y35DWF,.="Y@G^JW+E;_KV>/QO\BDHB) +ML'M(N9F]DRL;L,*!.OEK7.<=@"8.])L2_L2$[/A,9=]TV5"BHP$D52N;%4H7 +MS!J.I:"75K''NIHY.=T..;ZD5B-I\P?"#9U/62_J'6VW]8*G8E5PVZ]$A##" +M/U0A;$1A$<78Z!V6`V>TRG"!X`0<E#&/F[>&_!ZJ2!EK$+/?[RC1O+N,HCTU +M%M>@"G)3?NLYUN7"5B@IYG;Q3/P]\ECCV8]`__B]2>;U3Y0X-R513LPE?[_N +M1__B_:?FI"OT/Q;7$<I(2+6QR?0.6\JCA4?/JE=VQDX'O/[RUT4T>Q`ON<0P +M?*FZCW1A@WHC).V[6C(TBPU_HX8=BLV^]\-<FW_.QDNJ&ED%:?RJ`F+12[8+ +MWX\4%YP1G]@[HHF+SMA@9N2!C1LI5NB=<,T:M47!X+"/BF8)8@HB&Q[]EE'9 +M/%?]6<5`^B!'\^,US>'C(,/F''SW7'3--SQ\W<W^P#SJM8<PLRP9_J:L4-GH +MTYYP8P$R.7JDT#>4CS9/D(\<\BB[D&,RKMIDXE$?;2M'AT1+A36&B<H0H*@/ +ME"DW=DFH;-!GP<3/>84C.S<1YZTNM=VZ#Y[CO7ER9@;!WZOBU<ZJ&T);\$]8 +M&GBNPK`%3G?Q&7,7/H>RS`-`3P?7E5,M5"L!9J`,[9-FCUQL?#JL(FW2?'G, +M$4'+H7_8I--"Z69PM*V7,U[AT?&O#G7^U0Q.AW_^"`;(:[88J'3-_2#"?@;N +M$J_/?&91L<&930O=#NGM5379!HE!3-OJ<JX96PF:AZND!I_1]/%&UJ-#+DYR +MM*/Z_W/O*,8AH6^(<?KXU)JN[]D>/,,?YYQJ?W9V4-H=+U&%#K_-A9[^JRXO +M[M>Z]V:%4R5RMN6PBL)[D)'@GDR<![VESABSV0,<+51V>6\Q295'%'!8LDKT +M"L.?8-UY5(B(S_6@NU79P"Z"HT/GQ'W,)5E46QQ.T?XM6^9!!R;';R2U=GOU +MXLJ+\TIUOANF&:3C.19VP>3RH&!T)+-"JH$@I>Z-*^4XX0?9D\]"H0_F-+P" +M2SM&!NG<7@FIOY;DFF47>\Y\PG`7/AZY#B+0KGADD'(:=5P;S"L1C\SF,ET( +MUL+@0L,].LQGH+/I](S\OS;J8XSU`V=#H)C6:++XPY?-3[>Y[I9DZZQRBX8F +M2#T!SX2C&^8?)W1QA4P"R@?=0;,4R.3ER=JV>W2"3K)UHU0AW(I)XG!.J,K` +M7KP&7)Q\-;TK6+039GAL'2T54M'FTW!$>'A",-446@_W$!W)=NH$(WO\;+BJ +MED;Z7YE1;WMCYGT-JL^49/9H#R^%'&)YD92SKR@M?(;U$'"7%U<^@48LB]SX +M[TEJN>#Y_2)EG-*PHO!=@3P_,40L<N$$Q-IVSG,+1:#C;[UQ8-/QQ++B<[\/ +M+<J]@[OR^-]19O8(`/5&4-.F-Y)Q;C@9R4Q;R_(Q6=<CQ)6-6,NY')<7?[N3 +M#++HNH0@B5+>['9-*D(CXGBHO&Y!.,SD2CA,_^/I51#'$H9>RQL;"0P9\34( +M2!'(Z0%9V]1NRS_`BO#;\FHV?('Z:M=Z:F9"7D[1.%73Z0^;STK:<>6R\]O? +M`1I-'E*V]H#-QCLX"H_CJ4/BFIX,.!N__'IV]^'7`.QKU:/T5H5TUBZ;`<$8 +MW?>:Z&8XFO.Z7>Y`^)FZN+@+_W,R&^%K49JG.GT>W)IFPW&0+/__2CGG^9Y^ +M7RKM'(*CH?CEHS#TUB:E78]%M'#4CLHD;X]A%A-^:+0>2Z2=QJ!H2'M]9C'F +M_0PXV(QGFV2%<M`D7ZH*T^H7'?'D>7-SW%`$R_&X4MB4AKGIO8?$)VCHXYLF +M3:MP1`\SD@B.:F71`6OMQDHS?H>D$SN]%(%)H8_='S$'V[V6O<JR66`IQ/?E +MI.BG&779F4)1O"Y^`OX7\,="2?R(>-"G">(Y/?Y(QE,['HKAM:+6Z__CF^S[ +MH(J&5";P!4RC!<2XRZM/`LV`\-\#-2,/>,L-P'/1.O+4I"RGO)/KH[W#RP(V +M>CW3DK+Z?\7Y)])NXQNOQ/SJ1JPBK>@:A3X!OR-\'AT5M2U4;!SX77U?^JN> +M6.QQA!,@U\H/)R+2RKEW[!1\\U`6P8&QM5@I<=SI-Q@]X5_JM8`V\4J]NKB, +MBQQ0K<*-=3%GC/U)+G<9`;_\UI@=?&V./MW!'R:OX0"!K^</L6[U/AW??;7$ +M'4E3`2VN73''!;K$X[&_)P8P]NC79>Y1Z3]?">*$6+36HL:,C^D[,ET&V/+W +MOC@JC<UPSSW9:(T*I[%,-]%\_[9PK+(\?TJK?I3R*$@FI!G7$-S?1)1=#Z^! +M0;4\Y2-^TO=*B]5DV5OAV7>82%HJG=R5?BSK[H#<*(MP9GKOWE<WE48T88.$ +M3;YAV.!1RU+$P+F8W;_WD;I1TB*.H&MRSS[2MF9`7)=[:]?UZ-3GLQJ;'T2Y +M$M,[;&PIT;>"0%*S'TQ[G(2E--7K",DGB8X1PLGJ[U\&5C513>+15<".KE$8 +M_B:>I1=%Y;10Q=*%SPY-\]Y$[CJ;>IFX$&T/7UYB"#=6$W4)Z0.B-H8-C=DH +M?KFBYYR%RYL%4Z[9:5]%3+]V$J3PS6#3LC=7$6;0^MBB<U_^UQ3S4E<TED&^ +M,E"W>^T.8F9N*<E.O76PC*D(M,2+T$Q[,-GKI$DG&P8=32)+YY2,X/*;TRJC +M)ZD(__BQ>#)9IK&+Z^8MNR@$0UJC$[EHQ+G&UBK=MHVD>>>^7:BG/0UM4FE_ +M.EGU[=N\D(\I/`T1\DHO+B9]V@!T,DH#!P">NH\05R--@K'U61`@X9PBEW!? +MLJ;9FI0-NTY'4`4:_!8Y-YG*V_A'UU_RM`N3PRX>KN&K:7_R&<X>X:P!:X#Q +M".I:+!R5!(QRT"(WH=2,:,('AO!=Y@=''I6;.!S_"1FQ-KN0\+NS7H?B\F+C +M;V45YL?W<UCOK,5(_&-K7>MNMG/*G!0V(BRSI]0C0%(&+^)H7BZ)7ZL4K'=! +MG)]0L8W;P&`)9"O6Q%0"S$JN11%%`>Z4"K=#R>UW:/6)0T=B_XAX$,^!!5:C +M/`4F5]#=3:8TYM"3W&T2+Z\7/EQDL?3D"EV?LYGJKY"P6O&J&2`^2W"LE$VS +M.\\V`:R./"5UAO;GW]UFE8_`7@?A`G#X-N=41*?S=W?.,N%O(\PHFG#IPP?T +M:F[25EL_HAMEG=P/@(V!7@D:0@QC:^$F<+O%Z?1_;9<-[K]")8AM5]O\3,IV +MB'$-6)FN,VO$D1/9BKP03L#-!5APO]L',YS\)8)9T`9(VNX`EP*X1\`#`@Y= +M#HLQ'=".;=Z%W]B=WU6X5=W,ESSFK=,`>H;0"[8T$V1V#H3H`U&$RB`0+<6_ +ME=5O[3IG(LK_3C:KXNA)CA]V^WU8WN%`WJJQ/%?%B5<_]Z_4$!>!2R#].%9) +MD\>7[&[@>H'.83>7&!6B:V+_&,`PK&+>8(5K*1)<%%2_]4B(:NZ0RG-6C?'< +M2&5<(-FY`87-\Z_%9K^]L!3C&M=2S/@>,22P)9'(6N`BLGJ"<87SXD"RME1\ +M;G/?NE8SX-A-)0O>BXVI?9ZG9=#!BNDM2,IR("<G!TJ90Y*_RR<XLP!U>!RM +M1E_R-'8:`AOB5@8)=#/[$>/84[Z3,ME:.7;F],;NN"M`H]6!^0!T(I$FJ"4X +M>E1'6:[3=N%!L!2^VNP_)68V!U#H"@+JZ,X2QU>-\RM/!*I7E5%6W8%07G\Y +M8-GNT&9/TW$;I(D9&:;C,:L#.U+OC]4D^B+`2TC*N?`3/OG1F^^UH@OWOST% +M=(H4I0.])IDF&P2P)3Z5NUS`U*>OS)[G,L>+N<#_R=4"J.9ZKDE;-K,@H7M[ +MW,%&"0'#DC^J1;UFT=45!</)%/%.IUM??C*GF!Z-,WVJR5@2N22DY"GA8C/Y +MR@@/'?T'NC@7SS"LW27Q]+3AAR>TPB^;4`TR<?(0]5?EX>`V0:O\F(7D-:6) +M1[L59YM_&?O\CLV_J,',/.OP@"DC^CRTF0]$SM1_(GPJ5C?[CX*/(1BX^XB! +MWW#$79\<ORN1PJU8C-F34.^*"V0W8#Y8M!<3^!<P64X,HM'+1S<YNH?]?8@D +MWKVA`VA[9#I61B*4"M*N(V9!_'QH4B,3MW'R:3*P_\>+;K!YEN@0_.1Y4K1< +MNI-6=P`H-U#3CY^IE*LC'D#"YNF&&1B=FSJG7O#N6(5"[PMDY^KSSV]?NP$5 +MLV-4F;::F1(O&H79.&^V@V=[FG$'2XPZM`W,6E_TC'63)(\:^WW#FY^MOT&D +MX>8=L<?*496?JOVQ?=@GH>"\4?;>?%,K[RCN(KPF$1R$_:>;/S7S!VP]KK"A +MPU?@F`7?2V(V[^TYP"P/,A+*PH!.\MP+306O##AHB*,A)+YY<P<.V9,_\($Q +MO!@K%3)X*TUQWM)VNM)8[7B38:%Z8#ITMO;8QE,\7PCKY?7`X:7%[L.P.ZD8 +M(P.P3B+L9W0;L/9IG'[YY0!Q<N<-5WZ//0X6G%X6TF9\-OE9]_(P#B-O/GLZ +M2!^9+'$VYVAJ+E+A$[RMTLTT<:];17:*<\"FSB"7#P&+59ZOQ6%ZN*\&SSSC +M!;F]HMS>@4U@98)((*B$G&3#)+YTW>W0W7F)O\99G^]UP6!R766FNYSB\?`V +MUF;;%P^?*)SEB!MFO?+TFT5978ZU'`N]J]GMO[""BIQ)L>V"E#%>ELX9O)?G +MY.)_O)O^+0L-!%/G/)/*UN2D@\,&5K8/@RA'J.%4EENZ%)?M/]C<^SG!21#U +M@YONTL$_Z2ZS\I(Y1XM:$>UW&:D<$]4#/"DZGYLZNNTB\)=4F244O=F"]_WK +MCK#%<5//]`>?S?F9M$'+)L5,]1\BS,=@)-IV5WF@0&FZUN!5UHRS+X>[N;\C +M]K@HU(M[=E4U:K8"P!IA^7[JT0DNPH!BU!$HRZ_^:5$L*4H;U.PM*ZF*R?2; +M4,PM%D@,G'F6?P*7RST9@6+]X2\B'1!MA)#D-O,(RT(O28\OM<=GR>=_+=`A +MV`(YF)0SO5Y"$F5T[`V%,:*XJ)SD*4!^0V3D>251^$<+Y9*&BI=+J:%AOS;_ +MCH>,FHWI.W+(3)B@<99QFDAJC'!!)I'S4@FABC?$U.]::@JZVW4"C-[9L\-X +M?I[5M7LK?L'FI=!2UX'TG-7*K@KP+<NK.KZ8&VM2&)`:UW0_(&@EF&]8&1:Z +M^4[VC0YKFJ:P[D/:/:*:@H`4!F6"FG?L>MT-"OBW!%_18"D6YU0UM@)Q.DJ_ +MK42U_K(1"ER/.0W&`N=D;L84QA$Z]0BI]R69PJ/C"C1),>6XNUNL[/YJJP_H +M@+]SI=-<15BV'-J;1)NZS9;J=O^GN=:)[75:=A(XTUZ=_4``++=B[7ZP(0>$ +M*Z]E+9F='C5G)34;OU$'7=!`K@09Q,CZ$%UCG2O>_^+R@!>]CU^#POP0^V\M +MS(R80MZNV%3=(Q,5;5^4'.,T+>N$NA'<]%%QP!J&QKB12<%4E<,Z^\!),T&4 +MQY7N#70BP[4&L)@[,5?-R]+P%X6G2ZJO-9`/[O7':["Q@JJ>@>E`=+7:6"-< +M,H<D7!3W=`)L:XJ7=LC[J]$(C&M"FZ5,KF%&!B(K_ZVPB`J#?:9C9]R)50-W +MW64(Y4VN=%T-[[HI=F]S[VRXXH2!8QS^R(6,IKV`T-$@GOJ>9M'=EMPE7TS3 +M<6$,:-S6U8@<;1,*S6$%&O)+N2AM'8N_$0@A/"G"X*1ZALXDAN]&82X*FL\Z +M;KO_BR.)S2GIF:KRWZ"OODZ!)N/>6:I6G6UVN]5;0M7\)4O(XZ.-<=ML!8Y4 +M+<=YE:2ACRQL_!>AB^M.E,TIO4E+&7N"YU7N=4Q2B7J@VGO#TRC/DF%;SHY" +MJ-28#8O0QX]ZP5P(8_Z"@M>"*_BDU'1C<?K0^4'&Z:'C8;)82ASMZG,!7Y6U +M"(,43C!'#B(/G%I,*,H@'$1^$D\267,DJ55KO"#<UH&J(9KM'R4CZB@6C7$Z +MYL#Z[@X?:SI7I#^>@"GL*,B>H!77U,ILH<SW#3]MSSR7"W\[DD9J)>_9]-00 +MDTSM316[.G)^S#32U>>B8=M'0)9((FR-5%X]D:IW@GBK?>B9\S;D'<]$&E%P +M\`\8.4D?E_'V30V(NTC^;W`T_9[P31/K,Q<D;UJ$>I,ESX--_R4O,%&Q.GM" +MYP$Q_RT1]TCXQLD2!RDU9$3_(<(`XHCP9I/Q^>XG;Y/6VRD+952M7$:)5T+! +M*%E%;ME*0$G_A$5M*WS>DUTG54U=[BANH_8>_K":[[5UR1H'S"=7\?"PHC8S +M<=$H$K[7P/\8D7MI'-Z.4F2_UV:#=+7?HR?M"9#S95R2:V/L)0(L,UU#_X)9 +MS[IK']5C+EF5CVZ"2L(^@BV@J,BE7;`?]^"<W8Z%-%TB\<ASB4T"NJM(]0GW +M'H[!FG2Q-#>YU]4'207J6NWL$MIH[OL'HFO%Z7-<X#8,7FZ\?:93W+6JS??* +M-XO`3QV<ZIA!([U9G#M<R*K*)MG3!-ONA_MB/)R%!<PN66#&BJ>O+05BN:4A +M6]8_>E;@G*%-"BTR\%KVD=OZ2UZD&;E)&)_T]4M.)1]N0%J``);A1Y^7B5F$ +ME#4^1H@*.4[E5!19,9N_0@[E.1.G+O3GQBI@`/VK*7D&LD/S")J!GCX'_PMX +M";,)[ZW=G3:*J[S-?^;^7"+*:],8(9WFO^)&,V]#]FM/)T)%U^=TH(WP$`9R +MQ3PRFN2<#EM`9?$B@>EVNHM.K!1<4[@>L3/S8O?/#_/&_11Y1(DSG!<4KGZ[ +M\N1^%:$^D4=&-G`H(:9%S#/6$5/60]=M`SH3L^ZJ7;3OK3DW'!FS0NSS-A9M +MX'14""-AA"$POZS6+3V@@0HB'W!0="QHS/!A,>A0T'R)]9=#Y%%%W"GL4D`S +M%T(H,:J]H;X-B`*R0K,54#B\W[N<NC\P%[CO;2','*SH'GK:%);@1(11(X6V +M_QU5+/[ZIXWF3=\PK;(H\O]Q$+SAI&\YQ)KPGB6DF;#$M-)EM+N:</;6CZGW +MZ:R?_G?5Z?78QE.S>P<Q"?.R20AY)Z"M7?:AW9#@"(GK;O^!),%_:W87$+4H +MW<+]/%IL1<Q;DO\N.<G4"$QF>/VA.`F`^BGQ@&2)CV]FUO4AWT,_--`Z2;[I +MT.=S%Y@*>7_?#O"#9S)+>)3OA2U<\*^5,_0N*/RC.RZES9?.$_#34KC;WUL. +MP<4YD/(BQHPV0=]6-?$_12'0@WG8'RT77SV3Q3+'=)BAUE<.:IDM="FB\NS+ +MSTJT7.^XQBV1ZP:"9C&$`&O(X4[D%37-MIS)?#V1P5.GL[VF%XA"0\1VGD4+ +M5(P-3]8%,RAXC_@LJ^E?>131F1C=$L8?WQ4T,H[^FU?[L)PA"-*R![>VM\WT +MZCF;TXNZZ%S\5WC([+75;>$0(7+0Y<H&':>S&Z2YE7]*B3.IK)NCEQ<A2W_X +M=0A6_L)?N7H/+>UII4E[UH7<GPM9G$"ARN+K;;[HGN/Y&]ND/_.47J/1<XN; +M?]>"=N@Q^1/2V.N*O6Q-6.74L"XJT''*%)G$Q0H9@G$IG]SOYK\\G@D$XH4& +M.DPE#LI)NQC\O7NQ>T_O-NIF/CUW\)J,..\<L_\1RF+67?EDWRA17?D=(;3J +M$5]!P><B.#9!KS-=;\L.,\*MSP`(M>$2TS,=DK/YK`[+$$/MHIGM2C_R7!UP +MMS_=YLFO4(M=ME'-I;$$?RL9'*BMQ]N#T4!6TM)U4JVAR,JERZR&]C&8D75% +M&!55%W[Y>VE.Q]:W[Y_>/,>V"];AI%R'P#SK,X@WEJNL5)CR54V(+;$^-@HU +MJ$,X(M;):&!WWJI2AS\&B?"LOU:Z(X*SGS[N3RU&D8?V>%<V[JM3_38ER=NC +ME>9I'1XDELHF\UGUF+O7S@L-+@;@8(F-U>7:,$=63DZB*H)L"Z3O!+W<V/;B +MT!=;3$Y@Q]\1UP<FB%.KW;8S+-MQ#S5&($C"?/_B813*P'+==G5I(VD*-LTW +MFY1AM>2P-KM]'A\_9D7Q!DD7541\=JPWAR.X>(OG^>#GNKC`.YCF+@>FYHAA +M?B(-A-F!#8(U3-5^D>7(#A#ZI<`_+&6B."&3$&WVN8A.TS:)*X",B?;UR9>Z +MR-P3@Q#?*2(7+;+97O<J>ATSPS&7;>D'!+$<N,UOO&R4(C[ODN,"M<GIWI#X +M*V`M4M3)UF(FJ@N<EP>,'\Y(;/[`;SBN[Z<QDF\M=UJ2=*F-S:?_RH"5Z)7+ +MW>F%OHIIFX^EX/3`C6A=L?A[S)]*?#D%2>3Z=;8=ZR"K1Y:`Y2$?WE.\;65` +MR:`1([CA5-?JY8!B+.U/]&#U*94^>HF(0%G37F0"+-/"A0;.K\=U;ZO9(LIM +M_5W"/G'``74W*56I9XE*\)1+>I==U=)'5*X-:2>AQ%K^)>H+#I'4F-P4;UVI +MCM*`^"BGN4C*.A*:+.I_M'=_[CA6Y09PS?`AM'28EX0#'[=.Y`ZY1%Q>4H)- +M5ZA_2IIWB\KG#<A@H.J]%;KQ**L#U\O.9UT(W6$U",$MH3S7I57$;K/:60<Z +M+6PY^^TXM*_4RZ?1^*'/4N\*#-UKK^EL21ED)G>/K'$A$Q.8)QC*%GV9]HM) +MQ.CF8AH8>M$'$!BBCSN&B`0'I=DN:-(#6+SK&B"D`-G@]5#('>WP'%"E4S2Q +M9VPCN1OA3H9_W2VQ4/TMN\66#]3W;'7P:Y-S<`6-_J(T*#0\2!0=C0Q0)ZB' +MKD24_W86/;8RAW"8;_(Z#Z`%7/5"]M^.`B(%$\$!0.%M6^,,ZCA,$0R^R(E< +M=1QB3@Y1BLC[^P5K@@;B#D*]P3CU,.;9DS79]4=34QOY2#_4\+-.<D'3+KN5 +M^71;#%CC4L,[S:O#`.>>5B_&T-T,QM+6?2D4+Q&V_E\-&Z:!4\,!<YIX%T;( +M5KUR=+"&W!,E&!?16%2W\`L4=2/X;W"/%O$+M?)2N*3OL@011SC+0"3A?,IE +M^'IPLNOT>[).&U*L3*##/I&`($,FCG#_LG"NK%M"+\?-`9Z\X#QY1&2M+.]` +M"J4I3+W?SA][=C)CRJ4C?3F//^FH%`W`OPKK'CH1WY[$6!<QD*V:R8I:6'9W +M\5CQ[[NAUY-KC\_`6&["K+I@1Z7!($U(W`I\2=(25AI.$YI1>59G%6OH45&- +M]+[BW5JA)Z25G%:UHI[=K]$_R;J@I3)JMVPLBH]R4_\)PE<$L+A)DU<\_%]B +M#.MSS"S/:;3HWIE\3%`T35NKD^(0U`]^YJO1,*]`WI4KNP>VE)A$4_I'+P0, +M=IR8-:P-8%#U89RM;WVCZD:""0K^2'RXVIHWTHDC1)F.)#BGQCLJ4%V_9)ZE +MZ@)O.NS<WAP5@)2\RFZ;,P1*@UD7&AJR586;X5U7W"MJ5I@K]8##F@C5>A_" +M\'UAMAP0&W6"C`N29IQWM#29LL@JX7;,,#%!!>2E%%1W@?^[SP^J8N)#2_[Z +M`SYTM(21`:SX1-L!:0/,&^#?<0?YJXPR,L,N!$5MYA+M"+CSLN%Z?)7%OR/L +MUH+@[G#-(!&\I^]WQLZ;!=R?54J7C<T[CC/4EJ(4*114%.2[MKN43W.=.3T3 +MKAQ3U$V<MDM]Z+:YJC)H5>V8&EUKC7]T1`XM8%(03R@V#O_UKJ.]K\L>"?80 +MQ_QGD>PL^50S]9(7!/AS,4>^!"3`)@QI00KI[%*`,6N6<H)+(K8Z'@[G=/%' +M.P$2*+IT9Y.CJ,&RQH97WCHL@BSD/.#\?GY#N#1HYS=E5KAK!G7B173CX#;V +MTJ4H[/MB9=G_>.OH0-Z'H`R^7@D/<6/L15A"1VY%EPE,L[3*)U':]<4Z+RIT +M'H.:,!6\L,/L/C?;3BI7N*2+&PDAR:(1;(/=+#CO:G-XW+#E^'4_=%S1@)AI +MYQ?0:4FQ&_B*N!-+V`W%3%DDW\J0RZ<.D\9R1!2"<K@C`85F</,N2#3P/15U +M)#N7L6[J,0B1@H]?<.E4;)$&T?AL7M!NO-:,$818W)"+;GEWBW1#V+MU^\8? +M9C20CL!Y?SSGYQ$&-:I2P:9-*!`8LT934_-47$P)O[G-=?[%J*[J686SWRI0 +M\O12]+I'IF@%S\<<:#IAR,B)HSM]+]$6H:EFV:7UEWZPD[F?K(`<R)([I.&3 +MDP?W"D9N5&A@!>GNKW;!BT34&B>T\CW[(3;D&6:/_-32_'SE_VNE!<27K>&: +M1M@CK>!+/QFCKWK.#1AL28DM?@662`YOE!@NK>PU08?>3-^^639Q!IZ@<^&B +ML/:=C//X9UY$RAT@3>&R[T_W%H*EE"`2T*\KL4C+R_9C[[08B8"H22%ZCLIM +MAZ@U=M-B5FDAZ7\NDB'OLT)>EH,8X8J3BQ*8ZJP1G!(N,JX271B!"WKL<TQ4 +M]A'(P(-J._$;NQ-PXUB&0*T)6EXJ%@/1L993*4?8A?D2BH;C`7QM(`ZMW-VE +M$%3)`7S[KJZ)'_%%C2*+@_24GH`L"4:Q2`<E"R.K80X&"/P.WK-]MQ/M9W7% +MNX*_586)[W5P('J^)E2:'*;9Z\ZWN&Z:.YJQL%#4.HK_7A5WYFPC+7G2TG-Q +M).'+M673:_(=8.1^8+&CGV:*9WTM^@YG,VXU_"4B"\D$++E%BVBB#.M.+;D- +M2QBQK;=!`K>`$RQ=TOM!X`G[P\%?,^67V"N2/O@;`\3W_?H-JLA+H_X*AP&Z +MMRIG$#0!S,\O^+T46!5!FP'OLN$B\#)2]R3CY@=B?Q#M>GZSM[XB/)`AE4/C +M62KS/2PN3DWREXWB&W,%Y)"?+SQZ'C.8R&C@/_R$C3*1[`N$7(P7=;M7-U[K +M-!%,\-=>2(@T(XQ=E16O=M:A?=9#5I55K;)%@+5$(P=VEG2E^?N7DAM[`LU< +MUFY7YYM]#QH<!M2<9UFR6"F^RDKZT;IDI/)F^-?U:51U7U%@(&FI*P:G`]!8 +MZR+)<@+`+O"G5DJ%9%]STO6.ZW-I'RE'[]2,MY(D=]+L(^Q'`V=CPE-/J3!( +M^4P_\0W(B!T]<7+:?:`O"3HM&N2)_=N:UW<C^(E1)L(N9W=/:C/K=_;4U&F= +M<T.>?(X&6H=J$8?OV%>>J:3HM(*_+A8C)Y87#>TR=P98W2C!JN+WTI+#_/N' +M4#2;Z"N2WNX'P07)/OSL%;Z=.V8KJ.55S[!?S]TA0@#"8<*FI;TZB_"U=*3, +M_7K'M>V2\>@Z,8>5/OY38E1!(1,]VS8%82VI5JC-'YL\35_#3CZ@G[2?H2(8 +MC23%NX^1`5P3`*FG>3/65T\,!76=^E:2"=L8U[CWM'4EC[)9W#C]Z)\''G(U +M]%1<E/%@Y,\A*C1*YU+2@LJ,;KY$[TGFTT)TE^9=MC2$^=V3X]K/61,0:QF` +MFE_3<R'KS$PXO^-^?"R5TQKU7Z2;,26_%Y]@WY-(^I*%6J\OZY`RM33Z?Q7A +MMRYI_%?D^Q$,Q[K1])LPF32Q*J%+D#<.P4B28:*A^AMXCID]6-EG>2UKY,?7 +M;/FX:RAY6X1\SF^=T\>D`BRNE2#2>W?8VY>QKAG#(M.D_I2Z%5FW*57Z8)O5 +M`YXL04+)TA6`XV9RX&=0,N^FW+JEC`3*6]0%,9)?UX'JG)#]N!X2>/&YMQ!2 +MM#?(#_]I42\!^.S!NN@(:8X@M6D$;W,P]ML73O`\!MS.5I!!VXZ0<<!=1!"5 +MH/X!ML8MB35B;``UX8"-#E_YI-21C%?-J.MQ0\KQ))`!FQ?@WRJ':1Z(GB(A +M>WX$\"7T$$&S>\4Q)ZCPL,_8H@M:W*#&SGL:Z]&Q`S'CYI&3MP"HVAR7>C** +MEB4'F]4_^+P&=+^T<0FZG"8>8TSY%8XUX+)R]-`A9N;*;]NTEU^84E38>V`K +M;5_(JEZV,V"[["4>BH29Q?E>6].&_?_RS=+!EF4MKFM$-!*P1"XB),24U8`S +MG*^&,`2T)"91<4;FT!"KW':07")`>C6?@CKUI*:_!PFZN!V.5DI^)"@K8F4; +M:7JZ#@2OPLG%S>C+@(IBNM0-X7].M#`!2UH%,-"\X\+'NY@-[P6F66?O`A@Y +M4K//]65)5?;5<A"$)F9C?(6L3]=<;43"I,<]T)]#!)K(CO^#GV;C^0?;I->X +M5CSU)I/3][!+?NCW,[6(RND>?!.)26^KB^:#"TSEVZ^$D\JXGP8L]YG:N#,* +MNY3_.-XQ-X$4W==2%47J0NQ&.*CN`=46)@4`*PS&MS!2VB;FY-IA*J4+'R#8 +M;5C,+F<^<V-.P4.DC-[FRB,3&!(*$E2?6</`R?W*VP<)M<I?IXRH,4KUN<', +M`%&[:-$ZT)G;VOU(,.@%=DP,H^0:X(=#J(A.^X0&YY%Y2*N&$;69^!U"]>._ +MEUHML^V8GVZI#PGY:60RO=FP$)$+N&^F-B;=GHFZ0(O`5A2`=P?/3@MX8')M +M`LHW\:LT,RLW!S>HAZ=+RMN?''LV1D`#_4K/`2/]<OCF!TIV%6,9TF:2=..T +M<1[%Z2X^Y5584]1;>GA)2JG\8DK$YT*@\'^=$OC'@$AWHM,]L_N.4N^.?EL8 +M4SS.;ZJ"_(H8BV:@HVW&2=0S?L;OP9F>Q39_+:PG>9I1;9`TGG.$VE;![0[P +M5D%?D+;IGBK,+R=+A%7=;F04@M0(HC_JV#U:LKK0/"YIQ_J^S4%<2?8;!P&R +MR4%;VGQH\:B?7X,.YNB0J="?!>IXC%:U9<CE-'6J=%DC'#'%2@;9T8UX+T\U +MM'2*QQ7P?37<`L;*"U9#:5?(]C0T:<5AZEUM2J9#0%F10=-O&:F]J73))FAN +MQD4)`\U[:W3QXC%S1"PZ06`;Y]2[\JO]A&]%.2BOHG[J>GF5LDB\;3$S8-V< +M@WD-0/PJ0KNX_ES"<0X%\L-*1QQZ>_<7L6_Q/3<Q"'X/?5KZDFE913N-3[7' +M`$D%>ZH-:30X"@B\\]`4/\V&7*22(W84O[M5!VM98LX0FH.'A>'1#=O$5LY8 +MT<F3A<F$2_-4NAA=1ED?0]M.E1A>0`-P9)_,.))UXCQLR5E*[+B_"?;__LJ1 +M=//Z=>8D?M^N34OC37;=F803>4,2,1O(NA`<J+F`XNW%UUE+[VV=YT9,@RYB +MUWJO?@<GZ2&,R<&!XZMX'9ZIUO/IV9HC70"KR#Y;1.::0+_\VYU6/(?IB_A) +M;D%XPC4,<%WT#9X+&"'J%JS5YF+4@X5:S)?^NB$*%ANKMG=MW\S8>)I6+0B? +M-[=-3>;O:%LL@IC=P+$QXE,^,%$TB`EE$65[[,FYZ!%<O_$,:?WY&$X2_/5. +MPF"U6)C^Q8]3RDF\-CZ+M/>%T_=M[#;-8&];SVA&0R-+SL9"KIW&=D3KJVCG +M#KMF2LQ3*[>\#7QS'LZU$T!(+QW,PI<$#W!RQ]O[E*!QV\%3Y433.,):28,^ +MYQ8$EQ3K$!,A/M/4S<\L#=2KR#Z!,`N3C6_-P,C<E\5_.2^*^]H)O\37(I^( +M/^'2`R$BG=JUV=SK.DQR&\3`?[/#(GVG$4\:MY<C6(-EVN)P\LV2NT<@!U%( +M6T;B*UO_2?2*<HF:X?EJX8GK_^+`L&=N:R7>!2.8@^@3E3<"Z&P@!`()?W*/ +M<Z!NAN%2VM5*.FSV3HZZ#G>'U:LX&*"99H>I38#<IV;S_0FH(2G_Q,7^N)S+ +MC,QSY@XNC)B(<V%'*3CH>K.==7\2(TPB-XI(S0F2=)K(80).-_K9GZ=#HR-T +MF?'#LET]:>4N2?)'YXX7_'<AQ-I1$`'::]$>#5CG$]Y5QM>5',4>AE06.IMX +M4<A(B7^WVOY`2*55GLSX`*B<$9FO0^Q8-+GF7Y;M+`(0J"E"!7(;D!?AK_'& +M*0Z#^/!Q/([R?/8MFH!I]"1$1O;=!4RLP+:I;EA1<8T#!WX09SGI1X*/)+\L +M>''U,)F.?>:HVA%(H;70H27ATLM-@78_YG&[P1U[Z^)Q[I_N);I9X^W`,^CE +MSU._36MV<1Y2*<P)S*^5]./XR^D-]$>W<\"U!M;4EO%>O753O:]BSB4Q(0TO +MQ`D.;7`8?R0^($33=UYYD0RR=F:!\%!EI6'D?Z#,Y$(EML&)%\,^M!K$5A;A +MX.'0E:QL)U[:+RZUTQW7YC$?D)\PSQP6P#MF?QA)Y3K?_8V,E]*0!NLZ7M'M +MMRS$+LY\"^LF2JU/O0R90AOS=@)@GRHE<A.%JM,M-O(GC6K"/6Z[7Z4L"BS/ +M6'@7S@]FIL00&TU]11`;IWAY6'R,YAX%%V@FE\>9!>]XE?*W2E\:3%E*43HZ +ML5#O!LA"C"\LC<U3#LM[AR`*!E5X(?CDZ707J4?\>2+PV6UY:"O&@;<RWMRE +M9X^-O;@U+<+.W3'47#R@AD+UXPC<%E<_6BH5L(D0R-U/YST);NN64Q0_LN?! +M>1=%TT-.,8V4]K#G"_H8+#L]@0\-S=`!;Y_=ZM-P2L-0&ATAJ=#Y5AN>!\'I +M47,UUF=_QA5>\$,5=&WZ*>KNEF+WL#U>Z+3R%-:W?'+0K4Y';&KH)3),+RF? +M;6D9>K4&O(>YM$Q5%.7UQC,YGFH,+7,0`$U$7"]TRUV5FB!F5=']FPN6F5I9 +MNREN(UGK16,Y?!)\\;QPL)TV=Z_<F2B1Y*96%>7)=N7T)]@,^W)M8^.`=>^1 +M:6.D0M$`E.V;!#W'N,1!I:`L<<$DV)F1PQ:(77441J6OW_;>*Z&C(:;@A0?5 +MU+P&L.B.6Z:US`W1A4E'5E8S"9FYOY_R4&MMY#X>[2EDD;SI/87>^(+7Z386 +M$(<.M&::XL^MHM/D()O\0-5.5.N"N.^.3<F,+JV>JU6Z6Y]^0982(US[.V&L +MDE[85`$F/.?5P!]K9T@+"7R$4-3RP""[`-4^.>YD77V-PW71Y@>P6JZ13-7E +M,VM'%N2V#75X3,<5*NNFCS.?6#"0_P)O;7`6TQ>8#]VAW(Q<52&Z6<W06TL! +M2*[?WO81:1Q#\_@9OQV,WUTV7,$F"FF'6EV%5EAP0(M%(IQ,VN<=0`AB\:M0 +M13M+,IDFDU:,^&-L'KM6L'!:,U;5>NOA$Q+?,%SM5>;MU-MG4<^Y8H'8"B2) +MDJ"2-XG.?CEF"LNFO#PWH(BO"=W(#?591/QS9DG966[F9L>)^4ZD3/,/?&`F +M\?)00EA?IO,3;OP`7CO^7]!/CB*PQB;7K9F&_C8P-`[$]V*=)E]^]\G0V7#? +MYC64!?A,G?G$.8D<T>N;&+[I'GMQ2173%._>9`8R^0:AB&\M:#-"=OC6!5$8 +M;[7)I8?*L.%?)T.H]XRA+.D(:-W=*7C>-">$<L5],+*(G>"V'2:Z7HU.=0^R +M:;-',/N^^ZR!A$BQ#?)&0HH,AKF7BGHLH(D23^:-<.S<$DZ'8GTTM-LK]G!8 +M@^'@3K].82_72YHDZ:/(6'$"VL('O8=LE%5=CKM&!+BP]HI/J'3/``8E4"C- +M*I9-V6KN:U)N``^8Z8UR9C.U\\6*G.IN$FT8K)+.BE#\YI(?W__\M0)8:XLY +MCU3=(>[)$AA4U/?F>2=69:GRIEOAT)P;K]&ZV1V+K$/F'J0KD"OZFV)WI'3/ +MI,MT(,6NY>N/JC=-,>=R47?U"XRIHH=R/PC*V9+8O*2$FJ[S^_4=PRXQ57A3 +M/()_]57D4&-RNH.G;+5U'S9.B6N$6[#%L=X#"YF[]G(?!,E9^'(1RZX'7@Q5 +M,)A`KV+^(#68`!0BWD&XIQXNOTV#`W"'M=D;*B0W)IB(W@+LU\$G7/WKWW$> +MP<7$F.2&AF35SD;V5_\UQNU&N^X@6CG,/3K,Z`-_E8"(/S7I;U]@T`.UF&9W +M-Y*3:6E,\.`>X#+YG7P#')VQBHA:]65;]PXFVYD:.9JJTG2='LZF$J[W'*(\ +MFHH%(,:C_U!SV_!NH8_V&0FK`KWW#N19:E9[]Y=E5^N8WE^80JHQW^9F<F(J +MBLU$^,$2KCR]-AHK/*CY"AX\Y"%4Y&*.\KVWF<DVT$:U^$WVJK.8=/OJI+^$ +MSIKLH1AC#3G(^YAC4O*)[-F*\TX";EE)V@2JNH9TRZXL08OF%$KY*5HIFIUN +M"FSS^&['_+/BC$J4]"YYN=<OQWX@'\*UYS@`G0&.!U1H+ZCP++R$!T/$R)TU +MTW`00YA?`H2+2-`'0@#C&KX;>O>68BSR_-\";)GIC,57`6<W+(3-?W31O(C- +MQL;`$$^9!D)Z8?CQ'\Z[)AS<N1K1ORK.D`B;O1K$!S*0`7Z?BSJ/\6)Q1@D1 +M&>$;0UJ@U@P^`N.I^WIH\187"\5LQ0]Z\QV`-@*/NK3@!#).54MP_R.JZS'( +MD4/WS[#^;O:&CZP_N9%DBL?OF*-T&&C*%Z=779NXKN?#D()_ASN_P^,5V:>) +M=X4?(66JZRWGZ2E=++4<>5OF4I2]@_#=R0^SP-><C6\7C5P*)<.'Y%A'.K&" +M>&M&<$"<4%0/*W:DR;T)YW!AEZ$Q&$05+28&U)`.,S;D$<.1<M*Z[`U#.I*, +MM<AZS]]"0Y0&%;TB;A3I2N:J8W5X)!4B&L,K-OW=97'+]S#QHZ/N<4;.T,WJ +ME"5V"-VGZ)7D@B_6\USZ-,?%2#A?7'5I9]HN^8`4GT+V]V#0:7:/C.])@.Y- +M5Q>N*<&7*7T*Z+!'4J#_YRT"?)8B$US=DRG^QJ(I[`D?QKL!L8Y4#AAHK$RO +M+Y_7R8:&J>IX:>8ON`;6=N#4M$Y+!.C10J&:152WL]P(L2XRZ7<P+N"Q4CXY +M+B82L!@EM(^>WEK<Q-44W^=^+VJJ=_\2,C>[1_NC5`^@[&]\2)KYLXP?0[G2 +M*C1E9<S-ONVLX/]:_AQK'-]T"NJ@S,`]!=%_R\`''%^WJC256Q@D%J/`12NS +M*ENA45UBG!RUG2^1)73[\,H3"`//]X":W+!DBCFD=<M)4;[>G*VRT@;`=PH$ +M2!@R$*]%5$D>--I8/+`(0WP.^L3S&>O,F:-)/3!"M,P1*F-.J_)HG]E5>?GM +M,G08D*6KZV5S$!;C.%[-"NV5H<X%$\#A;'$$'O'&WK[^_)[!^DJFOO2WC`80 +M91:.(^IB->`%U8F,<!YX1K!9]"2M''WF*B[ZT4VE<90!Y+1'^-`9-?W==UXS +M-0<`*\<@U=;:5KY0R5ZDBQDH.E/\46&&2$SP0/,7(6V.54Q;;>#E0=^3(L^. +MR=/IOV20TKYUAJJVIHP$;I]O`-TM&Q&`F$]O_9<WZ)'CY_`V>0O&7D@N0J1Y +M4?[D`]L1^7[`V\H[D/Q?V$F]O*7E209(AE8NW"*`X>+%%1?FPXN(0U(M##9V +M(M^9(5366T#>##=5+A(L?Y'NK-3%&K=<@\58`0?/E0@R,*=)1@6%/YCG`$FB +MJ\35'&RIJP=7.L]4H&&(J3N`Y#'^2'_H\<*.03QFBV],N-TUSCTJVB3I6R?F +MC/8D81F3/$(DRFICIGQVO'0ZL(-5XK(XU%?J*\7T62/+_YKRRSN"U.5HUU$< +MVU;FSWIC"BN7<B-QSTT9S/S31,IM%#9/ROL*$O-T[<W66_F*G2NY-.IM)N() +MIO.WDEBIGKI<140^@$2F:MFJ?]WT9B_DL=I"-G\E,J7;@<?$`2,TI@$^QE"= +M`01&!"'O"'_;6SG\\VT)L4A+WB^ML]1W=U^T+.CH0U@,QQD;DJD(AGQ-4>(G +MGWKU$I<XE`IUG*#H3SKTM'D%&>XDOP,'8):^U@$2WM9'8KW?R3:R5`BJ!97[ +MIKG<B)5,8K0>,+9G\B_Y@H["F^FFWQ)U8!_V:0S-X.PNE8OE!>R"FA>BADVS +MVXS0$O]O;:0!<EO$-5X:?8NY=2#*CBQ(4QJ/,)[*Q]M_!AEH?X3W4\YS>7&, +MV]8,S%@6S-':;NZU]\`@XX.#^2\#`G+5NLQ9>E<8N?MS(T>\+)0"J_7H3&*Y +M34`*58OIH1`!"T;*^?A^JHH=/<F$;2*T7=K/*!4V?O)B)>NII1?6MQDYL`:Q +MIN8W[H/8$A)E`BKTB9'K9-#-IL]G+^V2IHSPN/$N?-?9M5,VQ5F<%0?:>8<, +MQ<V&TPTMG(BWK@'^L$AIB2.DU5^J&!QW@+<WM,B;6_Q4U4#E'8]6F^&W7L1C +MA1HA5:Q%$@FT;RS?&7N?8+>0*='TPL;>!7H05H^G3ENUO5T"[P[)H:73R'-R +MXD1XP;8-0%=EC?\BLHBWC).DW?#WZ"'9("<IEIK`@=4-YC[F9`?ZIVKJ_PVJ +MTJ=N"PSB;42$_E;DAQ1-XATGNV>A''`@XSDB5&)E5"`#N#&!`\2K[00NNL=& +MZOH@#T=ZC`>J=!U])4NW4D7GD,K-4NY7XM@#61#(V>1:-C.0<[!EK#NXZ"@? +MAII]!%B$AM!HR1*LKBMA,#..2=`44XZ$0$L9WGN=_Z;<GM14_NG7W[;Z)!"` +M6I7.DPX!;+U+;38"[@"');3L9F.[$$.YZ"9AJ9.+1GIQ(NRJ->2JPAZ&ID$7 +M.J2S%V^_Q)/03:V:=R4X&4*ZWFOH\PK)XNF96J:TP^A"X#M.GF\>4JZAC:1! +M)=Q!U>LE64H6A-VZ`RN4?.C8HF<#>DRD@[4?;DYS"+8J$Z@T]C/I)&?G;F'X +MU6VT/C,Q/X<^S$*3$2$@1Y*JT\>>T>(]!:#,A_PN9CA7QZY_.1<M98!],[=> +ML0<VB2<'$"@-]3;;X7T7))<6IY6L=GQ<(5.L`)*,<-T\N(*W?V(Y\]8`X-B; +MH6]Y1.M^V\7"G2LJZO5J.E]^GGF:))UC"\=,1)-BQKA%K^7[$T#&B\DS@$(= +M1L3^I@;]^+H?O&CLLJ8DI8D0I_9S"(T-/-%,6T(#$BB_#F34,;2.VMY0AP-\ +M<YH'/V72G(7H_F<W2/\J[RARJ)FQDN06\M<,MO$W[)6CY!CZN_-&.FH].R8> +M\?&TYF;):%6--G!8BUVQ((][C`-8C.O_R8+9\F6+3U'/3PO`26CSQN?616.8 +MS)[`VO\/4U^^R\Y*B*W-UBBNO@/0C--T-Z)NB$S>U0$ESZHW(`?[A,M='0>@ +M>\GJ*3\"?VZ;Q5NN;BY9"Z_*B9<<E;)0R2KZ:^SR1T$%<5OJ4`<DIYX:5]6* +M^[\&W*63!IFMM\=4N&X,,Q'L5*W+XR18ZJ&JLH77NW5C+,.I?J(-BQJI&"4G +MG]:\UHOA!88^K1G-K=4Q!^U0KW0RE=D[1AU5SE[CQ[3OPD4UY5!KC1J_.CY_ +MTX]L6R+LZODEV']9SLKCE!Q15$M!FW0*>K%*'<AD@OTAA/7PD367*"M-:<;` +M\WA;4O.&](DID)G:U)%^E%TDFK0K%P81?3]-4R=?D&R_TR2V3&'U^K'F*/\X +M(SY4.I*P&U34$=.?GQ"B?V&'_-CWM48U8@UJ.NS:)3:G'T/E@,QB0]$\&47E +MP]O-ZY.%'%<>Q4"CK**&Q4)O8Q)4^_QZS_+CE\.=0C25??Y7-#2E5(L11`=I +MU^Q)A-'S1)U8S%BM3)6PX;E`Q"X1\S$ZC;!83ZU`01F)@K9<&/W4/CW&^6\] +M$#^:[9E9M4HTB1$ZQ[_)_W=E:-!HHIKX.H"J]^2EPG[8+KP")RM'M]N9)]Q$ +M0/TA1#/@_7C(/%(OMW#-C^A4H[>F(%LK9^XDJP+"@35,-A-*^JO2Y.-WKD*Q +M-K/Q$K30)TXR..8*PB!7;)0*DI*3MJI(R"B461U3[6\E49@4F]VP'5[WO!1B +M52PJMAN5I7T)3_,[]&N;Z46`=P?!V>_1"/M,MZ*V\G=]!2Z!4!*BPE$Y5EPL +M*]M_@UE]!;;1!Z&:">%@"<Z;-KE?X.4T5P9I[J]D":R6%5R5Z,/'!,W=G65T +MW*<0NLC%OA,+]N3>=;Q"(?@Q-[!/Q'UJG!>/UJDA3.CWY=VAY^<J,@);P.S] +M-QH*]Z!NI&@.HE9?U?7[,O!`]H@3*&-P;+H+:;3HA+'_W*YV5BU,30)4:BC` +M2ESM*RTAF3'':#$CY5$*+?SF.TB9OAQ"+/KYGY6+]HXB;5`9Z[V.#`;?X>Q* +M4(6'0<:L<KF!.BV?KKNVU9;R1(]K-(U5=1P3"A8S,T?EUB(F7!XN+'YPH8U- +M=D3:C#.057&4D^%#!12YI#X"0PG6)AULDX)OSCQV3]S'RDH#I#MU<_<*G#&A +M#9N]T:NO+)CGHVY,9[K!W36`[8P-F]QYI$C'#Z6H-33G'!>EEMS!30;*Q-_L +MM&#;K"+2SH_K.P]@!)?#I)'8,H.:'<KI]7M#HRXTLF?,^,M^_SQ[P+OOXPLL +MF/K\1G[,S$>SX>UK5NM@>KQXR9\SUCEO<2,P,FQ1KQ7`\V+]YD:VST75< +M:9^$\*<X`1T#$&6L&*,>+*B@?H>\K'XK9-2YSW8I38/H1>^M);<_%H,"%9M_ +M@:#U[$&S(D9HT&E3E?R`!*I,)'^Q.@MQM/YEU9FU7@8\.T0;N'Q$^AK$!@ER +MVINNKOHW?;!SU]V>*U7&19HU\4=U\#2R&)&'F/%5L9!0I/![C'2<0YI-9CK# +M&YK54X[K0I"*4%LYQGF6@^AZIF.Q9WR>T2R[E/6M+&^A0T[(;-&54&XZQAF= +M;*T?+W/US60[M"#X/18>,U`9QG(PY-5C#FV#RNY5CWPC&^K'`I+<>N6H[U#T +MT,)1>(6[ZWW#=4Y1"^0B2KYO+H$_AE$I&9=:XW$C!(O>,D$=/@9I'NYHA++U +MK]&D(FXB;3@N_P2LS7_:C27N*TN3@`/>N2)M!;-[U%$C9YBD;S-8!?6-9_^_ +M9B'EX9B'*OQ/'6Z+YT?A>D]>2RY..S)X^`_-\J%?P]M8"A7_=Z\Z$1R+"/C9 +M#/U\U]PJ\3."M&#(!?J_QO4J'IU2D/5P?ES6JL*:713(8I8!Z*FP0),JKU-N +M*`"`N[@12-1+%$/55[*G>'+DZPTT4KUNV2E"8]8,!X<*</$#](M(@6S@"6T6 +MCWK3L>84]_RB_*+#A[PJM]=6_;NH6$X4V04>[9ILG`-S[\EE.)0*2XE]+B(E +M^J2+UTN@=N/5$-?:&,!H0GDOYNYOS3+-R/_DB9T\(Z*T;_#$9E.#.KRP,:2W +M(6-QJZJA.SS!]]IUBOOH^U3PUQO%!4$^_2Z@^H?)Q:3A@F]!,"\L\8"*^QI; +M!"96)0'`X`G]42NP,*AI%T@'"KMLCEJ9WM.N[J.FK[`9HU)BFV"&A(I(>3CQ +MWO;Q[,$#5WHJ:JDEQQY5V`%^NR(X1M8RL9'J[\'AM$K]G>\1<4T;;:IR#=8: +MD#!&SEP1I//DNF$8K6;"2UB-U]XPV63FQ'5?QW2VC(4B`G"*I4VUX]5JG3C2 +M0ZN+;\_I@+'YMARAQ5R&=N&J*:!W4E%F"`4[/S%Y/NBSU,IR1'K!A2ECS(<0 +MH#M.HEU:)/J(W\DG5)RM0+31X0RM9(O=2/83IKH)>^.BRX1T9N7R%N0#A\A. +M2Q&P4?"/'.6U3M.Z6XYW?>CG)RTF#G\^J8!LKE.EPH-\TCH^]-D"#(FNOPM` +M0^Q/ND']^4S6LRP@HQ7(`JM(.+W:X=R<)!$JX?H'SJA+-A]];!L\4RC)/].^ +M46/!!V(;AGM6Y1+2K]6>:AANB>^QB87\7_=IPBT_(-W\3U968WZ)'!R5I%P( +M&,$1E17:L06W?CQN[0P(UCN_X,5>0E79QRHRQX_O:^'0@RB)[AQ/K:(9IE/& +M3Y[EY4;[4+,/?&WI*:"G1W/&TCYF[$XNU>H5*SY_"<1DV=T@O8[B9,GOC>\X +MLNG5F7'_37%1WD#L_`&O-#*ES\D'*)[9$@O^%WY7`@E5GP0=\8AK]H]*N<YU +M'W/0+7W0C[@VY#444KJ>SZQY?A"C2T_5/\$?]8\Z<<^CZH=Q2,)6V-0#",`0 +M^)&\F`)8QB3T*)7NBF_'T&Q$87<Z);>*++J:)BW%.ODN53G[2W03X`?*,CGR +MA6J#;M[^.CL-*RYIK8/@;.\OP@?:76A>Y8FH,>^-=I)E4)GE38_FC+ZU/>&- +M&F8YQ8$6F267K\EAZ%5CU*](%;K!\+L)*JR&CJ;(*R=V5<1PWO)*K?AI)BE6 +M_E-;7Q35HN<O12&@94]WC0,]4L^;YW/JD`Y6X.;0F4``-1CM7]87_#QB_O(* +MN,1TJ/.`*WHF\>J4?)-(@\MGEK+DVTBF$="_XN\T,5_NR,A)%*2G`!")Y)WR +M>/&*;,5^X3?^S&Z^;7,^^D:P(70>3JNP6=C-,5H74Z$=JU81$F!&+%6ES:5Q +M!;3?QD2>1NLI#!D="4.HW&<)WYJKI1^WC\/JSD-3X=CW),=7S^X):KR=M'+^ +M7>ZL,*=WA?<R).KB%@=Y<)*[46SM?7]CT+[Q'U?<``Y]7Q+YI.,C?8FGZL<7 +MX;R;N/U=F0GC5-%%%<T>/4FTZ)OS]CO<BFD0%"!&>/L1L2-8GD\-^H4R)4UE +M3A,ZP%CJ@:OI`O!;`<6W+<S=,R\3X'Z_^M:Y\Z+$TCYM47;2%=>A).EBKOK> +MX?5AOJ)0<9>G$)&C;)0F@5*.5-UVM_\<,?#H]KK4O_OK_C@#T[E9N/N26L\, +MS+PT/S.=_#@S=2=K+:GGTH"TO"LI-'0ZEH;[+;+H_M%4!']D.:WE;(/OWM0_ +MU(\^.5NOGDZ`6^6&06!>$,+N_=""8#_\XS`3II81Q_!:24FNHF\_1EOZV<9_ +M;,R,?3X_L):U.6]]RWMHKS)+FRJG'NZGZJU"68-]E@JB7DZX^5<4RR:%%/Y* +M4W-?%\XRQ>H00#6;L66TN$GQ=7#=MB[^*CL5E)R>6O'9%=S?#=O-=K(`2X9# +M1=EK6&M"VJ1*=+9%">T087I^J[4U8S?N82>`O.4^<4[-=Z61H\L0J(T[X4)% +MJ@:VHT.>E;]N[6$%Y!(\SZMV>X,EXZW<.9YPZ&O@X)-'`O>-S3'HO_8[J#M; +MDW#9-\N`/:'/"]*OTWU?IU27$Z\&)H$)]W5W-<S7.E+D</`-0N2UGX>#[X6> +M&P6:U@>*_$2^(L<F%HGSE5T,+E4RDB#/=!!]4PX;%W?W\2$)TE0B5X'<2:&; +MK@/PD3=8EQ-E%<#3_0<M/$8&4&OF:K'WP^%207EQ$S&8447OI75!/F@%_Z?6 +M))4>FD(\[PPNFE(J\[<5]]&PB!W\H04[X-8ZXK$T4&SNE2VE:S\@_:C)EHV; +M@0&P)AFY_.I[*,JVLH/@>OQPX8B"*[U9ML6\I*^@;]<3]".C(?IL0,UF_:M? +M@&O*H^^M_]#_@3L>)QB)EV+PQ"'K!K5IHT'-NNG>CVK4MU]:^'8&8O4<XP&/ +MHG[]2R%-5X)H0USZL7F'FB6H[;]Q(<1(BPEIJ+:SP4RUT!M%^S4.J!;N[3OG +MX<U&B$X2`CKC95-`=0)<6U`;`7"45`R_._F$XXY#UVR&6.*?KX:%S-E/8V3_ +M&@Y7F%0'S7N':X6_%FA:[5@G#,L:X\B%7/0A%]N*>)W+)<[]B)_D7^`*I,$0 +M4ZTS4.F,#B6#G^#G3@[=(*DB#UJ$U:Y):I+Q!36MH\3>3,,SB2^)/IR<0#3- +M1@T^+X^'Z>QWLH!:6IXA=^L)RDE`EF?3<:!Q&B.T;8F\A=*3A)BDPP6&H.N+ +M&B"P&%,*I`=D])&-P60_C'/&MP]JE<_D^F\(ZA3\>0DK#]"G2;FA+6RX955% +M/OQ'K-SX2#!$$YR*(0^3^.W)?$`H'86LG"SP0!9,0'Z$<4:6&B?K,%(5MNFC +M?^*.SB20@UGU@TFU@B@OVD:(TX<`J]'0.\W2Y.Q.W1@1,X=D2;H.Q5HT&*'5 +MI>Y<9&PXZ6%9D/\+!706,<U*+V;_@AFT#>;"_HF:'D[+_@OCLR"D&1D^\&#G +M@*>J5JL6-.L\<?44B?-/'?`"V8<0BS=#,3#&,\,Y`6'$>,`9CS4%=OYQ)A2; +M85<0-$JX`R3O)#87<=_3*@LX*Z%?A872D/>/>(,AKY^]GX4HN!5;%DIVFL!S +MO61%I<N7/185SI/S'2N%PVYR-TU/]+8M0'<`U_0,#HP[8E*SA";\D,:?YK(O +MXUA^EJ])&F\LU^N!:S8A=?5..[6+Y":EI/Q=.;1"LPVZ$2.!/99$HWUG[&6L +M,(@*A;&!F50>MLA%?@^]C-OTTN4/'#HO2K%@"PMY'&MQCK&^TQW2747TN-[] +MUG(W7VB\L)828#*2&MKIA.MM:8=,%D*,.CX)1,\>"*3+/Z]JKARRM;2_-E]O +M;.N$N0PS(,YS\LF^;G/YELDWQUAY>)&0@X\BQ#B/HS((._XMU33`]KWPI=_5 +MPE?#ZT;XBG?;*`F!@>\^R@LCRK]=T.G.>Z@U\'F`Y[-L'J%Q8$Z%*3V!'$$T +M9+,<#+N4_)^!@+KJ4/(K@\L1GP'8-`)8HO1C[<0Y@TYW.WJM7DRYT.EV0&V+ +M%@S##:[+\M-_]Y>R5Y'F(Y#J%52%DFD8LBRSN!=9!8,D0(ZJD)@=`;L^+'MW +MI"'^*G3:Y];IO7LA^&9\\)(A#.2UU\\Z+GH1UX_NL5BT$/Q\"'O;E$`0,BU_ +MW$9DY@JB#):.4-M=7W'9MO7REJ:W=B;?Q%=02:EB+'QZ+MNRBHO/E+"8TW;1 +M<3,_))I.FLM<)GGL6MSH7II%:PD=B6%^%"V&S^4N!ZFU>V[.UBK;-L;G7BO` +MX18HD)F'8ZD7_'>=[UBT"VYGK8:P#I!-R)]U'2HJ+7R(H^ILL5[6I9=_)K%S +M*[2N/^UY:`HU\]RHJ)_BS6)^I*$;0]0^^$O:7OUK%M1832X!\DTCW.'Y3SOP +M20R-L3K6O[X'!J4I4;DQ79A22U>P"X/:V?QI$G1-Z&QP+JHJXJ/![$[/FKYG +M7V+;/O,G_0HX#9#B.7[]X5I">J2.VBW8URR=^Y(,R)2Y/7E8V(6]K(UVQ!3& +MS5B>]?/)'0+L8*IG#EHOX9LQ[J+`AI5:0E*R1/'D=)RF-]6O\74D/J03&QU; +M?FARE5]52BKJJF+I+T=?,^($`GSJH2?PT>A%G\!=@\Z,/O/72X4W.DN>GD<& +M5JZHDL'8+YXUDX-.37@'H!WY!\CW=+[*NTJ#@&#(\NN)>ZWYRSR[VBJ3+4OC +M<EUTT,%27H[UL>`KZYJMA>3U^?0NJ??9)^#E0:=*T&:^P)ECVQ0!Y$`M.Y'R +MYRM&Z8;D;[=9@&J\I6V)K-X!MY-]6EA54>`11*E]8E=+:N+!!<HRD""K2Z/$ +MZ8*7]!&#\N[`#?`P(7(VF28(K*O2+P/:_DZHOUZ0*3M=H\L?!&:^^QK.7L?L +M/5'S0Q%'2EO5UZDI>@\B\`1FF2$L.9E+##(\@5&UOVP"X&:JK4H<(@*]0>F7 +MD7X"[4OHER7L[A$8WUK7%1I\VZF(URK7/TY9==U8')KP/(MV<2/5*-<]^RV: +M$8'D88:V2O@-4I!LU/=3X67XR.1777PC3=FA#(V.L96.AA6D.XA9I+"E9>)6 +M=12T@6ZF:0'^-QC+1]$6UK3>Z6:6+G!H\M#C3!V9Y*)[)[TD-2+V2>&300!4 +M[BI.LRHPU>D1$+]-OQR;;^%P13E*J#B453'@0YX@_AQ`'%:DGI,*"D%B\>!5 +M=LWKAJ2H.6H58X`.[;2JVM2K=+HL=(=.0#KUU8MOTE-RM;[<'75!Q`GX_E:8 +MSG(*-OD#Z;39M?2.:LO[>HU<@3\LUIYFO=$403B>*CZ55X.O9PK';OC?24X+ +MU3I^K/1LN1@D*[V9:C*`K!(,C9;\\+)ES6(#R.%B@<9&Y5_)4`?%2)UK:MS& +MJO9CS([B>8Y7<`Z=D&]V\=00QNYSPF+UC*7I#*Y0K@!>/24FPMILVHJM?>I@ +M]E.9<V7^_J"LELQ<'S]6T#<)&>@-M\OL(E"%MAQAA7-=]O7AY<%'3&]DM*`K +M&DJOF;C44H%H.E=S1P=)*]7J!P^2^"1EK%U1G'W"QBZQ06^4XJ>54]L,^GA) +MO<_!Y9-/BG!Z6!338Y;WRH)&@GK\PE@P:UP`O8BE!XOW46OM_-%0A+12OO1) +M\.:K7,O[$?[J?\*FW2Z^__1"5B1R8?&!J?L]S((S8XML3!A2EJ&,K+X/082V +M3403\<^FJ8T"J\)0VQHM-T]J,K:U#;/_6C6?O\ZP7--MSEKLC"&+RJH2?I$: +M&2Z?&?R8Q3$S+N-&D]JU'B,5%M>[*TXM0NR!MREHK,.]F%FB50D2#&=M%([. +MW1"*X:X.6CS)H(SD1UF.U%9"A_2;R,Y,X&P2SG-/9;A5;@[>EA8K-&T#\FB4 +M<`@`OUZ#3TLZPO3A.JGT*OC+M3AO0].Z:\XZK1Q97-P;)F`TB\A%M*M+)3Y\ +M[O1H`A.:ZQQ""R$4`!_8Z1J2P^HR!$854(OJB4X<#-X#R1@XZ/_J5PJZ5A]K +M7EFUD@XMZ"X?L;!3X3#&Z9([O9*!GX=A%#V7Y<[.$S\6ILZ4\<!=C3)ZF@*U +MC@J%J@1LN#"J%^ZSLMG@@*YCE&X]!A8JIRQ<VKA2-T(I5>:,$IE$DC"P0IP= +M,UPZT&1^G%?(@?^3OD)@&CH!P5S(,85D),767KZG377;,T8,@TC_HO7>;GQ- +MJ*7GE9W$6XTC[JV[AIWL>0NVZZW;_*^#_?3YGM-<1.Z':H\82K$=GI\@,G#B +M?EZ$-FPO-!`N@A.QQ9,8TJAT139EMTW$CF\?#^AW?B5'T#?GDC[NNBQWG$.Q +M5X:Z&WC3I+\K7J/_*7IGD875\T5SZMTEC,:"LQGMOLL8WHACT!-Q;J@X]J#A +M*]!I.@8YRNY#;P;Y>EZ^-8?\O31>8:_"EEKC]S8_S89?`2<PR-P(FW>`S%T! +M@30,.^DRZCO"CP+CV$`;9\7A]*C&&,H[9`?/Z-:*N_#M[[J20OVXE5N6R07M +M7%$YP^WO4M3$C>J0A&O7P@4+A![L;F5DJ(&:VF)Y26X([\$46F)=V7#'@6TT +M]NN]BU].0N2SXM^((9N,:.?.KJH'Z4C^K,=]L<%I1!2:YPLYD@O,@BP]M\BN +M'=FS6AQL`N'56-EYUEXI!'Z#<&T,N'WK/[*-=W`0]2E/"0%_+TR`%5ANRJ[4 +M'4F9F/Q4[+F'"ILBBFF@"YX(>]0&;(H&F69([H12[$F.XYAI.@8I!MHP&2F3 +M@<-?O'R/JX'/[3;6[B#-Y7>+>_IB<^H7_*X'^[8_Z,)9_JV=)GW:N,P@W&-> +MU%A]"%F=WS2]BN'K(M3*T0O([=5=X\*">J54)-$>AR[2`MB>X");[.U/?[YF +M2'SP).G%0;_,SDBC1E.8A#/B-D!_>(/STZ,B(01M(2.[ST5?26*M?"ZU-1T` +M<`#3'E[J?K8X?LA474>@3_BJ',Z9A%1TUC*0;NL"'>*M>W_U7DKJW4YZ(T^_ +M4655/Y937]6,<86(JT5T[D4\O#H9^CE?%JN$.AW:H4.=TOF-?O[Z]I_?$$X^ +M:9^.\YS$#4;!HYSA.5S(M/QN.YWIYO`JR[=9\2^.VI`A:R?&B&_08DOF'2'\ +M(1V#"I#AKPF@!T$6$-"0!:X6R*V-5-W8>D_"^'6O!\XJP^F_7?_6*',]*0V+ +M3`?*V[4]?HL6E/-I*,;&F%>EU5:00Q+`WX3:@>'!=M?9DGR8CE/-M[1Z^733 +M*90O+7I@(!_$RP4P_14&VO@)C_L-KUD=>_?@C)BV8.M^(E9,J65'6YS7`Y`7 +M>D1AR20-38@".:P85H\"4&E?)O8!ZR:9]+"\\)U?BYG%"%*K36Y-\XNC+X@` +M%H4'=#]I?44L+!^<$D</*L1CTEWWRB/3N_!B7XGOX.^1WY2!_7Q-Y4VW#)Q[ +M@/P/E];[XN)?E7G.)<4[/%?&K%E7)QZ^XP]S@4(ZZ7_\\.7XO:)[,EEC=D!K +MA#6L>_<>$YL7NJ-1N\-?Z,95MPU\=^^G[I@(*!*U)-*[>L&TL#'2R36!L,?H +MW"FSB2%^6FH8-VF\D:^Z.C#U!U2/NX.W[U74/@&&'2SPJH>,'>:HOTH&26SL +MOK"[SKCTC!^%9-HWLXC<UD0:9P/64;YCIKSHDBZ0)T^7"VZ>28'2KI$#2T03 +MFJ.=@]^`',_1%XY)D^"+JXO1TIY:S@<@P>TX`=@(HO[.MOP0;^/:#?6%HQ#W +MBF-&S.<LY7S@5@<XFFHT7'P*5R9J5SK'04^!RI&/IGH35GS#WGS!#X$>2!TC +M]8]03],QUSHPP^I3S_9=-4&B@%CPK]Y^NF\FL5I$0W[`\E73"EUT<(TM+*)3 +M"?:2''*%0,ES*K#BYCSH38@>B+&"\X_Y/,J?JUKU-C!AQ:0K-B7\T1AO[KNJ +M)PTJ/&D76@VPR0GOTS&`J4*,'<GVY"VE,(9O\[LWUM/@'O>X/&^Z"'ZF52J) +MX#7"NEMZD?Q_XX,-KJ6)F6RMS"XVWCJG&5;U2"<(,29:DF.$38(7%=AO#6-M +MR<&*BHU(OKI'I?@\`"C`'PCJN)D?M1#PSD8;$5O_/W*'"SRL0OD(U1%X*[[H +MT_(GL8ZI&L,`2HA=QP0<M<(V[U;^A/+OSBEK_'L`["S`W@#Y`[5$2`5HIZX* +M5/V(/C%B-]<$)S)J5"$M5.**7,#S#@H1>P2+UP4JE`%Z7MJ_EHD4C?"4I^&I +M7#&*3G",RZ$0M$K2)W;@U*;%._RQEB-/EH;`G/:FXFN:AZ0(ME1\G_;^#LC( +M?(24:?FM(\:MRY5GA%/#QN55D=I+'UD`-5LWYC837^<J-?/8U?:JV4H.TQAJ +M4HYL,JLW2R.>`ON=^ZH0B95!]YU.H%R)DD&=:^);=,ZQPL2RSF3.\I)M<KPD +M4L>PRVEPJN*P32?3-K,_U!42KOK]'UW3UJ+2D64XQB@X=_Z&$MV_-2^M;A5L +M$47DZV$W*F14)<,V+>>&SUP@I+3HA=D=#W(OA"?GF2)Z:;2I0YK]V19N)#TC +MK/S`N)[9[_GN$\QO?M-^+=[^%GUSE4K2A?*;=!Y&J"ZXN@QQ6-.?<H*19@RU +MWBOTVI[?#4W2QJ)XFP,0N.%'A:=/X_V.HP1(L+1+/V'>*B:W`*Q*U`8[>-S+ +M0@5JQ=\Q.WEFG\WJGT:G%BJ[[40-G;N74&]HZ+48`$^VZ4^%+;U/1'@-C[1V +M,-"KP:5@#`VC9-!U/3D?CBOY+A@!GS;)%S']!2"5&Y6WRR;Q5/[E&[@:06*Z +M*6XB^L+W78N-FH7OA1K_4///LLN0(R5&#)5Y_HP:[:X@EZ'B:E:V#,OE;AJ2 +M%;S-O`'V`C,QT`'S=0)++/#>09_!TG+)UJM]M@>UOGSK-$<9V,-1?WQ#"-)C +M$)7*L(]I1VF=VYP_+^7ZF8L#'.0=U%2A.4EVP=R9'UKGBO8=S!\!B6!4^NL" +M`0S-8HQ3L7SSW;U-\0?89E?,X6SMNLS!)P1>#?$)*M99:BW9%M7#)W(:!)B< +M2>F$-5]E.-M<P."?4VGCG(:BONEG)O=3'@05OJKK0LH!8IZ3W+_D,GWB<'!6 +MTRZ0(.K"^117Y(F0T>8KX7:4VR/:KFIEY^Q_2IRML]H))T2.9W`#QZ3*MLN# +M@?X*7I<\E2'/JY=/S3^1&DV\(7!T3N<7(Q1Y*2+$6-)L#>1)GL&,,NZC.=@! +M3409^;,SHY+_(#"#E3%+;2+RT7#Q4`X:5TX!^QFK78C*AG^`?";8TL7)^'XW +MV(Y,X>%IJ/;!M54(8<+.BA_/?*!>)N7OD0)A<*GM,X'<;WCR)[&PD,83A>RV +M#,YYAH37Q7X),^JZ>TP@[UBBO"0H:GN87)/GRI>8*LE'K.C>5+DK+<B2%!TU +MO.&E5EZ0`16<\!W\ZN"NWU2>,I4S'T$6@0ULC'V%M!+D#F[ZE>5-<[=<<YFW +ML?RD=MIW%]UQ&2Y`EW<V<R&'H?L-CV]U$U0@RVP41N>)'\FL&:=UR+&EM]>" +M'&]7`./;YR:P+_DA[L[_S:,K>>L;['_QWE/0>VBRD`J)A]465_;PP1XN5]7' +M]NT3LE-P06-J7#X9N%;+D&>7Y5X&;\&)<L\<U1]I[S3\O[XAVU?MZ>!;4[,G +M`](!+3[=:59+!>(EW_>O_C$CNZ(9'[;"#X_"$U`JGY%_0T`.I3:XGN!#.QRH +MA0V^\0!!:T#N7IZ5[NB`_*>M^]J-X]Y!3"S7\J)9J-08MD^(C!MGMOQN'9?W +M<B1\"Z%+M.#[VGV#4K^@A7MYW9!$$?/^6I]5@+5GG21MV5``F#TUECH'J!TT +M(#W1?^.B>XM!D80P(,OMG=_EW'GAV@W3AXWJ9QDZ);=(,."TMH7J!E5V(<@@ +MRI298%>,K)K=2U',UR8!+Z)YT;'=+J$?@GCQ?B3WS41!LHV,9G#)F'+(9EM- +M:;'!6]]81C'5>`BIX2Y/F.6V5/JJ?J&\VVTR`<"J.3ED/OJ)PQ`XK_\ZJW1H +M%G6YM3L/!=J]EO3T#>O$<WOV&GK&<'[T%!W#5%)[X35W;!8N9K7@DY9``KU` +M1P[\[A*A$$%[P8W$+Y;!MCY%'][(N_CD$1P)^%[#`P1+-E#:H(B['%[:=\Z< +M25]:@N6\KI*_V1E$`;I8PTV,=%'(:7I.%%4LL*)[+_,1G0Z?4FP+VTS'$R)` +MD0DR/AMR?M.R"`WP?_<&03+ZBLK#5M*&I2DI)5J-U]\.^5PP3@DR`:,_)K:9 +M*@`(>F/4<)4RXU.3')IE6<H2WM+GY@=#6FS^[5P>\B@A0].`:W2[KZ(>7R:` +MD;16/W>EZ6%NWD>46+")Y.CFB5=I?Q8(\O=8-K5A]*0&KH_N'?XRP]>02+I0 +MI_2$[YDB']3%BZJ;+2*61:?058^5XTE_9WG*EQ_EBRPBEI."[A/"`3:0<T&L +M-P"P+S#"#FL'MUQ_A^<4#]G2G^`[>M+](D?E4;VOWM#B>.]0W3M/2T1"FW)? +M@[A_5\&R<YX$%T:?W'?Q0^),5`%3N+WW^2H`P<S6!?&<U]NC5S`J^FKZH$"( +MJ>DD4KC^R73@@_2HDE+T)M,E+0&V8`NU-,D4A1HSZ/&3!TZC^MB>/)11)>V@ +MS$F33C9\?+$$#(*`:-K@7`C.@$)Q;!L$5@ZL"+4)+MK8*!B<]XA2:OLT.!!; +M%\6*FC46#5YW;YS!1CF^,.XUG^3^=S53"/0`I4`_&+&WTVIDX%K+G%3<H4)K +MI=CI!,/+.]-ZY1Z._BW'Q-)BJQ6FL^Z8QJPDH!GYI2JGBLS!>=C7W0Q'X_(: +MG88I8'_P\KT%+=A)-+6WZNH-(;MFE+!\D,C\S.Z9#Y*K^M$&K8CZ86\/%A,X +M.:]JI$25^HS[_8Z1\"`Q92>7+1]Y+-D.3$7"'PR01LRHHN!09,^M=<A7TT>N +M1(M4+O%A4LI[+I<^FE52BW5\![1W4KLIP*-XAV]84RM`&RVW@"OE(B04S!:_ +M(P/!Q?[2_\)@?8%OP0W$@O>X@+NLONS$^J04(E5\O\I"NV3WQ(SRU!+._/Q9 +M4#<TM;"F_C85\"22%.=?HS@7<79T>XK@UW7`YPYV[K)+1L74($+AR'H9],*& +MW(<.,]"<R"Z`5HGY41%5%5(1E/5QOW_@($<`7_LID3483_G,EG6W,TH)Y7RJ +M(!G4=&>S;8!\'6/U1B`%)>12;NKDRN%![JEX-$/Q;IP8M]WB%(BIAU0(T*3$ +M:_!.50C6G[]M1OZLE3@2W.4KM'(IND9V;C*`Q1>SD2QFX%(GL%JCDH2':!>4 +M;K_,HHLJ1V`R>O8^B24,6BTXT#>.5A$LPAQ/B'1`^O3A^8UJ*4"2-;9-F%SV +M,AIC40EN4W,(/.Q5XDW-F:YD+O(B\/(#*\),Q_-S.VYV,]N;NDD"V;##DN.+ +ML,/)+D[[+E_M-NN(,I4Z&6"=(R\[S*G)PG2A/PCYK.[T_#+9;"_S7MX@`*<` +M7WL7FH8U=H6CLZ@P!NZ+)@<8[AKFWY?>%9]?.S/OHI1&CD$$F?_5Q?`LRTD8 +M<S#BE1%O7GL]8,:VBQ/)':-\D#I2<#M&-=Y,D;Z5M'HWHQ!5ROHO`!LX-YM- +M"KH'V\H3<?WGQ^B<Y6I89H#9J1M,\3N&X<T.%*2EEB"]RXE)/%^N%9I9:'ZP +MRU`EO]1N7P_O(<%N3L@K:2"?T;YSP?I#OEPD0&]-=^GH=NBWQZ\95OUXC?A: +MYS!4@[WJ\7WG2R"GK6:27E8VU3M"7#PX%"OX?HTS$3K=NIA3W)G9)2W@)4'_ +M/7O([Z_XSNPMANPK_[0MNH5GM=3#/="Q^&%/1_\A]JB5O5VS(0[OP242ERUJ +M*)/TY1=.X92I7D(E3=\$/Q!SGPZ4QK.BJR>>W@?8,;366G#$'::!@!5#>S,L +M6278WC'E'008E7/X<QD39IYE<)%C`]G-^MLMCB<[A<1WS(%KF[^6&:H:?H*A +MR*=U6?]POZPA!/)DOPO30R`-F493R_,3JN7>4@,?B(%3YT54/\2YF^.ZW?C3 +M*[_*OTVC%BN!+DIO_%]!)YZ5&>Q266#A'9J4MFZ-H^H$(JC.[36D&\0K5D#. +MFPD0RZ0/?+N'[?*`.%DZ;!OE$S$_T#_$@A")E($,;%7.E*/51*=2NP6AOJ:. +MY[6B[]1FAAE_)<1*BR)8K@M,12$3TJU0#MI`/M9+K"[.$L:ZU=ON$CX^=.S4 +ML+"Q\A@K!E;:I/A6P,0U?A<]N:::V`VV1SA>VLJTYD?).>;^.^-D7C!"BRH, +MO78DT)4PO,YH;4V=R"GI.W5\Z?_0M[[>1L-^EXT,%/3::&WQWP95ZERG7V_Z +M32=-6!]MFA*T:2.R#K/52O[9(I)@8R5B^IA,'@K):S8EPG1-SB?SBS??/@]% +M1_D(#''JF\HV43HHT;[@]0P?QG?[_Z[HYC*<1":K%V%Y0?'U9:\V5EZGZ6GC +M)L*8;DZ4\62L@:D_4J6A0T@>/!)(&"OQ70+<"*D[==]`\:WQ#6DQ.6+W!$*C +MFR0$)@K')]IP'&+'6@TA`(?,-JUV'OZXAKYU<Q',HIOK5!MT2C?AHUQ2A%O: +MK!Q:CLY(6^E>XJ,K9;^=F7E\)E62R8MW64R]6[J]HA-'?/5E;/+>9V&"%K7Z +M;$F`8`R$O6-^W\A*$7MLPAW6_P6P\@BL(ACY.0'2:V.5P_FY=>4O51S[=A48 +MQ]B0L2,J,T%*.%"^_*4B=7DY*\4X:/Z@;T6,4`4GW="\B#70_R'H#6`M4Y?C +M'S[$Q:;F,OU"L4</72^0X`S=BU$+1NO,N<%9)G;@VNK%+AWSUVYI&OZ0UX]7 +M(+RHR>#$#.YZI"[OC;KX@H`E_&'SA`S<G7A?GA*!(NP.O6=Z.DLYI(T0N_ID +M#7,8;^5,?$2B@6&E0FNL`CI5S)@T(ITUF=Z"2YA5""6C.SG2]R<_6D54CM<X +M!DX9`9[DVM'!8QAHQ8,),<B5R/"O9YL$^6'`)2N5I.D9\+',NGD['J4!UZV> +M_]&[P1,R:>H'<GO<*HT3[6$DTC3F)-O"3.TS)W@#8/9Z1:$:M)QR;O"5A[+J +MYY[8*]4#/=H9+].3*_M]*?:G[YV*DULUV_;(?4EE>7JDL7GQ4-ONC7L#SOC) +MW(4X>``AD6PI_F&*(IGO0C:1VYHAVP-XEY,1CK2+#5E%?>S5BVJX,W0P(EQA +M#T5'"NONIU;9#/SC(,504&N^S^Y^NERSBQ9ZQ)L#:=DB&"0[OT7TY\,>B]SC +M!%5^F(-'5XGL(2/R0PYM9-D5LIQ]Y:#@KF,C7"]"ZL3,RLYQ42CNIL:$2<\3 +M_NDH2[BCB:9]SD5&1"=I(50(CO:=)?^W!)`$V%G>TCHE.NYG$&U8J<GNCC?V +MWP:IBA>:Z^Y4"3.ME<D%5:&.BGB2W.1M'+WZ-).ONDKWA?%3#7^;BEOJKA(# +M)$"$!QE,0^8!48#*_<-Z&'JX)0]IS08[OQ`5.G<F^M]VDR^$7D*9!S4]$<)6 +M>`DP$\_9<EG?5[#_-'-?=@YK/Z_&\8'>:A2$5ZP'1E0YTMCR>S,*O)X,"`/R +MB'PIW.M(>JLZN3;:Z&2/!NH<SQMB#.WIDV?D2XF#V]G6`ZMM;<5-EQN]1X>1 +M`SHEX%R:..<]UI^\+E6'AKDB>8+!35,$1]?1<:<(YE#0:4T\ANU^3[MQ4E-4 +MEMS#'6+%PF?8AEU%[FPW8.^S-4'$E.CM_8/AR9!]YBHYK%2^IS"2I*V$:CH% +MFNY0<S6-J0Y%.;89NNV$=[I.$P=.W^45]"UDW%KQ+F_`56P:L#:!W$G49:F; +MP'+1$X*5$37'\<D*GH$,H+<P/D6)TNP-NW/!4CF4@356M,"81?W!4(5.0,Q8 +M0";-A%_*5\%#Y5>AO)'M)Y'8)/Q17)'MUA')#8/Q/M&XA>O*D=^_K_02+`*& +M#W0FWF;M#LL0=;X@)^G9%IKA+"--=V(46F,`7L-8IG2,$GD,L'<8KKY8LG.: +M0`\]/P'N!8G,9+%BY5,&.T)V=?D-4J]>\['-]!,Y9Y+@[.E(@P+\8LQ\HDH? +MNT,C-+9#+]E9[##2CKZR]8W6B%0+KE:4W?6ER!H!VR2L3R!%YXN,?+5>+,=K +M'E)+<MQGJ53MK;+@!2S!<`H6M^O.0!U[B,V$UI];P,(Z`4)T[1!N%LH@Q9EB +MS=K[4VSS=RUK=$#>3DM!51DN>V>TQ9TD.S>XS>8[BHMF()=-4S#.V=8+]#X2 +M38<B,'IF;:K"](QAD^N)?S6LHM(7QNNJUTG%:4F+Y+MAW8JT?Q#;Z<R.S]U. +M\-Z6/2E__!OMN\<R:MV$.2S/R6>,2)ET+?:X;2B6X]R@:D.S$,IMPCI8:*`* +M)Q3^QAAK57J?Z-M9-DDMLAO$6>I;KA'\H9B*ZS$W9[TN:O./M$W*#<,AX"GX +MI:'U7L'6%D+L\B^.[MD-E(A$V7@\.(?&^H'J"<;#41[$Z!<.RQNQZN='>YT+ +MBHAS$_:F_%(@2X*1$'?1EZZX#L4YP8=?WP&`RA0WWQPPYAU#+.!FI2Y[%>2D +M7IP#GNZ]G.,Z!J7F^=;!"&5?`BSTF[>DJ^_!XGZEII@L]`#$W2\XG<]5@!Q9 +MLT87O;5P[G>E[_DN=6U,H`V12A>LH;TXS114IZO:EH/];&'KK(I=*_$5T&U6 +MW/7L;R'D'5K4>6T45G<:OU><!F#L\,N%V+!$B:Q<+N%=#*X-H9,X7>)T"B=$ +M&_[65<5C'HP?2MZ0I#D(G&XXX*^D58P/YS,(Q>4?OGCKF#1#(1T*3)EOY;[N +M?07GS^?O7A;9`:JM:X(=&P'A<8C!>K<,CQ?^NY3G?,Q;>!DDP2BMZCL&&/[H +MX#+[3J])&$7_CO\96)K$'Q9]5G#(QU<K>8CV)(WC/E#O/'?)=<90;'6/61O: +M]$"_>D$7"<QKR)YZSZMM9E_'!ZZSTG`TNYM7H`T_IY8]UA3Z$A4?,GEQ$$@1 +MH0;\FO:U/89_%EH%SB9ZX9DJG];C!V-@TZP#!.A\LO7^2S1[@X`==78*=8B4 +M^O)JQ6PH*&E"=9I;B;VN5YP6V-:,UM.`,[,193NU&DA#W@Y<X<;?2M43ZMF1 +MG7MGZI*8HFM9LR\X:<CC2CQ.!9)08'NEZ2,+F)-XV^J"IR7U^6J&W^IODOKL +M:T.F$^V`;^.8D-!96RG".<.<1!E/@O8-<R>`#OJCJ^XH$N"W?2JIOK^:MO8P +M3]C_9<_T?KJ$,'+Q&Z/VK`"VPT$SWSR35P3#W'`H)3F!%[\MS\BJP3!.(\*1 +MG208+N!K22!'Y54V[G4G*(.R=\0__Z3[.+!P]G2-?BY:=J.]-)@D7GD-7/3L +MD"EE<CTT&8C=\CZA%G8V4PW?24+H[#.YU)HX/^-3[HVRH=[U=GDJ)A&>WI'` +M0V=7T6TIY3XXVN8E"^%3'0(2K#_['19@ZLV^KFF?5-2'6J3(\J0GU9Q/SS+& +MM9$^:5`:%FF-'+FB7,O)_"K8HIG!')=U9*QD6*VTN[\6YIV&&)!FNU5JAD&I +MTV)4K;0KU?(DB'4>H<PDDM.?<L%22,R]X%)ED"C[_9C[@B`UKHJE],G]>'-" +M&^DU=C`=LXD66:,["6[7.U=*`V^?[OF8`QVPTYROAR+(WU?-IDG;??@C<V&^ +MQ>;&;;]1_-U?@E7;YH#J(_B<K?JP#.XE$)?87<Q3+/B&'*&(N,G)U(TE@;9! +M.)X]5XRX<B_N7,24-`OQL:#&'#H^"ZGTG]5VNKXD:I94)DA\A\">0_H2WV;) +M=WR@5P8^DZ6RMO:)?'A')DA53B-QQW&4%"XYRO7?=&D4[_">A$5!R&3%`P[L +M._7V.9T0B]U5XXC5B8["JS^"&Z1\P%B=P5`<56;DG;%*"LS;@3_!.Q?W@8G: +M/Y^/KM.+=/*)XV^>+[#)[C!9G).QBQ!DO7F=R*NHO[/6FH13UAM(1'4V;Y!O +M0)%N(UFL#%JI"5;#9G#GACB@4W3[A'=2U.T'U$HWQ-7G\%N%?]\IHJE?CR-8 +MI;1^81FV([W;:I\BWEAH`E*?<7\O?>QDB1\O-:7K?',)`'G^J-=(Z=K2)/"0 +MZ6'C>QV#/#2%=(D^@2..^:E`FSCOI!#Y[S?+%SAF"G%/WBU"0^?:%-I]/&YM +M48[,R`*K?%D[8@1J@]DP1J5;X^Q8MJ7#\%H^:WP3-1<QGW;B*_N%UT*!MZ?[ +M6R0;MW$UOX<H!]U&&)]6F0\X`W74V3$[P@@$@>L&\2^;<5$HGI*YNLUQ2LLR +M[GZ@[H>6F@T.PB=*/1J6#P`!V7Q17^S4;B<;<[.)T[&9(ADEW9+EF@@P\>L< +M2,2PCZC=59ATXO_("FV(C2V%#D^^WIV7D<NOE3%.=+0M(QK)1#N0R(I7D%+D +M@*C)FNWD5_UW4P$VH@Y$L)B*#(9HLY\][E"R,ELY0N]Z*-FU^8E<?'8*MAEQ +M^R_TIF8V$[D`[[\0+"-_XU;BF^V7-<5V59X1,=7[U!1B#BL^)3`1[&?LNY"Y +MET^M0&[Y<[GU(.)'*&$WS/S[$;BBK:=\:J7+""T.59'QR.YWE':'V-5Q!37< +M(NRV*?'EY>ZWZNL`QR^?IG1BV^-2M00QAS"WR=KX4P_IF0/5),Y:3C%$(P.( +MU-"#V?1?:OKS)7(.64F.VQ=XJAR+V^7QS-*\`[XXE383092F=C#WD!C8OS3^ +MT0'"%P*I$H_UV+N^\FD.LWE%P+A!_301#3&8>9CTAUKN:H!$_?"2%&(PM(%Q +M!3G@FCE\2*YQ[_DON0!142OR\S\<2[BDF)*#*0<\P]/;)_`HH+@`^10@+&=# +M:'ZG5"W2Z#9ZVH<Q$[E]RK[K[>06A:$>PSA*=6V\7;B/:T2V_Y`>'EB%3I[I +M"*?L"A'"LPUVC;>?&YQ&N?4J"*#-@1>NN/@]&$Q^OT?[:$_B\H%B&]WE&&G. +M`\31";4TNC73HB''$XO(W3J$$?1R8CO]NH`Y%KGXIQDF7JN0S:J_Y*IU.#JT +M>QB>D$K6Z9^\43<JXJ8<A?HIS2E[,C,R@+A#"1:$BF(+9>)0#7C;QXXK#6H3 +MTNBC3?3>`&0I9I9EP`FT_-^UEH\2I;'='H9ILNCCT8I_M.OJP!X;@!86_J!X +M+J<BCO<S,TO/'A=42V1#I1!Q"^E%8?87"&8=[M#_J0=?P7!9_`?5'5-KB..( +M;=H)UUWJHY,TTO0#6RK;!(;YW&I'P]SKJ+$&X!DA8AQ\^3#R20<2\7DP+2ID +M1#3M5V3/*8<Z)Z#P00$%9*92A)8-NX3.GC3(55)T<`*U<.QAF&H9\6QT3EGL +M!=%522C#P?<FR"N+7$[UD85C5ZK""$%0<(#R$J(+@P_L3PJ^C$:`7^BCA3C3 +MC,01&_.3\(*Z,%,P'1L(:]T9;RX#;XD0)W(JH7U.RJY,O09G,V7ITQ48CI)L +M[%S1J[ZXR`>`OPN++*1B1/&-)5[I+7B.M\X0)L+WQCJADVX_86`*O796$F76 +M16FR'0YIL6]B'5-+>"'!\Z3Y?@%N69":2[J@P;#)ML'L1NL)5M;W_"^SVZ(0 +MLU<AG_"DC``O-1XII(M,8:!)XY?7SI<B6<`GAL-5X4+VX&?GO94R&W-IPLM! +ME!=X*CZ.L=(\5&E.7+OOG57EHNV!P1AT9TR=81B^>Y6).2P`C[8#Q9':4_UB +MR>V")LVF3]B!XB[M8-J??_M?_'RS8"V/E%D```$``````!H``0``````3%I) +B4`$,`![!^____^````"<HVJ*`0`````````E```````````` +` +end diff --git a/contrib/libarchive/libarchive/test/test_compat_lzip_4.tlz.uu b/contrib/libarchive/libarchive/test/test_compat_lzip_4.tlz.uu new file mode 100644 index 000000000000..6a230c5e1322 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_compat_lzip_4.tlz.uu @@ -0,0 +1,1474 @@ +begin 644 test_compat_lzip_4.tlz +M3%I)4`$0`#H92LX=B#^/,V.RMB3H=-9J&)_2[OLAN752"JXEYZ_G)C;@/J7Z +M@BB-Y9[^'[ALT^7`3(7N!KF!'#6PF`@=V`V">L0?;=OX-*CDH_90X##_1@T< +M];==,RL,I\/9VH>/%)Z>_:ZS4SDB_6N)LMB#H"1=E*W^T'6/5=R+'3I9%JVP +M`/W$QUD9J$$<D^\G\FI85#'0'QG6H_;I?0RGJ?1'Q9)8\&>":?1U-V.M]A"_ +MBJ=<*?B6VMA:Z/VM>WIK%(^--,QH\+P8\D!P->[9_W>%O/:-86#R\]Y!4RLQ +MQ:@7GT?14O-\49UMC=1EZ"CX373-#>9C*_W)Y3XF]5/\;`03YR709\T\<$C= +M(?O>E(E"T>Q:)(RKN_@J/C=:(AW)*=!U:>YTSXBEQ#B96G\^/Q0RNB9^"I:* +M3!'JB$H!,ADB5\UJ%$'<\0Z=U<R9MRS'<Y]"(KL/<N^'UIGXVOIY^:;<?6NR +MSU4S#M,.,0!T\F,7TOQW[XMF1*^_6G[A-H.:H`E[YR/EXLG80ZZ0D/BFC=W< +M:^C'KBK-=[K6XXCMW0JB_R4:?,M%R>AU?O=0%.'=]/9"/K4)WL?`H$MGKH0T +M8RL1;!17_8`->99"#@L=?7>G!N=GWDQ*MJ&23LM$3$6^.$2[5X,]'2^+%A1+ +M*K.7`17/0KM<PL!23`$%\\0+/4&[8TG4[U[GW>]^2\<OUGC=[@B+=Q7:5<;- +M?.3W'A"&E[I"RZ^VA,`8C+4[0W&VF2H>!R4#+JU(2R9^O(&;"B1?<4QS,!N# +M[87;Q7'3YJM$7U%!4WZ,,GPF4]SK_"9MC!]IU\^!/W?;28*6S>>7,7(^I0CR +M*WH)-&0-=4U)C0\@A\,W7A:H,LWXWW"S>LICA#"L/V)K&4VF2>N9[Z;$#QNU +MP"`0>$CRU)NSX;#84_SN"TLSU]5F2-:[BV77H,(Y/"_S.Z6G:NGR0!0]_[,` +MP#Q`QFTHKK+D'JGQ-N/GW+)MP)UA=XO!?*U9N[7\_EQ'6G\3U;?=F_5=L83? +M='R7)WE#G47`@KU!.3Q37&I29N<8R(.\[S$*XL)_N.9N,=A79K</<S^F=IH2 +M;9:3/W-UGZ7&Z);:(8"I[+CA8*+S!WO^B%':<)U#_W-NMS,.=FB5`GVH[6_R +MS=10X:R/KJ[*60Y%U4"LB9I^2-WIH@&G^8]S>F3*[ON;7IA78J>Y*7+(-(@L +M^P,4M"5?:AG&C]U*C[&[R<D0B>PCA8Y]@B$?>]DLI%>&@B4*XM.[S]KIM(ZM +MOBOM^AX>1I`/73B>>[#`K<!`"Q0%S6B</.^\=0MCHQB8P<83$=`)&*N6G,E* +MR,>L.'!1I1(]?9FT9<4WA5[Q"ZB>UI3@2[6?A/@\'+-MQN]K`&P;/M@4'O<E +M,D#V!*LT.HA&%1."]_3@11\R9X)K7,\+N"2!IH3DO_?2HS4:OMR:`BFF?SFC +MW6'=[ML1=&QQI.[/[0^_0BU\A6"1)[";;$2'-VQ9HJYVHG]?&2";^4[EAJ$E +M,8"MAOML!W,I0(^<6"/C`&1CO8LB&<W'F=17Q#G+2YNN\:+=`ZT'E(U'._[J +M<O'&Y6#PN(GHW(!#);X;=_J/J@#G--#=S\LE_A7P)JA;5<L+I'P3I,(X;@)M +M,C;Y0MLX!/`G&R3X<I<LKM/H6-+17U_[;R&+IUROW/4IGF+_UA*'EY_OKP%J +M&X>7L&/B.EWLLF/+O]80B&O&OPB7L+P96W65'I_,Q&@Z2(\]A=EJJ9O1KJAS +M(8M\93[Y2"O7$-!BY<986I_369=^3=+GFUPZO1XNKX^#680WE]&/&S\P27(K +M9QIB+_?JVBJTXR!*,QM.9MFU"51[ADM%CY5`+B<XC935^6%D&>CGJ^7,6[TK +MPI,BT0T7\>$D%VC6EK_+\[*]5_1I:#0ECE9J&])B+L$,^3(I,%O];F_X=`SE +M`*?.-%)\3!'X/G)#"'&#GH_R0>3Z-X?QCU3062B#DT\QV(5.UH;;VD3V_DD4 +MN%ETH#7T):]-=8:VE0/)Z?S4,G/"RP<T*>@V3+D!G*6^U=(QN[JZ4=GG>%LU +MS_/#J^B'8T@X4O1H83(X3LE'8T2]504$B[Y)YJ(WL0X<]QENV>Q?\1=,/W*) +M$R5:E`,N@W.'D$JVBXY<1D$:AQUJE4Q*NLHM.#^`&_D\^E=$K[R+#]9M;]X/ +M]5L3+!@P1AEBTOTAO3D+V%A>)BWU]FA:%7R5%JHVXHE+/WK/:DE8<'R&-^BN +MP29(77T"="9S=-?KUF2YC(.3@5H("SJKVQ''.8$MG)7[RTOB(9S'4]ORQ@6* +M.<X:U@'>Z_7WXAYG[)V8C*UL?C@^GQB#%W2D/+^FMG5CZ)WR']\C&QVRBDM+ +M=3U8=[.%/&KH2/WJY`,[L<>$H+A&M."3LV\G*A5WGT`W&5ZI?^*.)^V3V3/S +MS("R\[7RP8+Y5V3M)-6?MJ<UP0LSIZ"8SF0VT%E9C@K/U?J$4`(>N*U$&N&Z +MYFP&UF7$42?W"HPTJ4"._:0U"K2.E``.[(KRS:;0^GK0FWYZI6CRJ"^/GA=^ +M:Y4)?,$IQF2L+A1`XA,9"O^%$6&=Y$ZJX8MWX4L>L4UX>9B+H9^BJB4PC^8_ +MJ6\@[#4.1*M3AJ5P!B$'7PR1UT,EI,$CG2W'DY!I::+^#.NLCKFQDB3:Q;2V +M@67H)N-7LV.<</@0#NT/RCN.3VRUF-#3AJA6-OXB9V$$W>;S%/F%1R_#3+F0 +M^V0U#&.GEI7"5P\(AZ$-)`JR+[@7%-2H<Q=U_OSXM6\9_(-5.S7%I0Y+$4.O +MBF["#7?&PC)E-[G;CTT.L^#)QN)0'.HF7:-)K@3<F+>H0TR`3:1R9?S'V.F/ +M#SZT->AVTT1GL<*!O(T%OHD-\64#+0#\'`07ZZ1H/R!8,ASU307[:\(X$*[Y +MI(#-RH`.-*@]DNL(/,C<)&$F'!(@2S(XD]-QN,KR(8LWF]Q+G:SY+BK*48IU +M(CBU\@`73V%KY1XHA;IEMD=>!G.DA`&TV!I>JG,E:]&)#ZB*EZ@%K]=^=)R, +MI4INNLZS(;Q^+PRON5[A4K/MN)7%0*V\-(6&LU&3.=.V8(]Z)-8J',MP`:!, +M!PO_@8I!7\CU/IM%UU6"UKF]KYH,[I<;J!T(;##*H`OAL6R\7-%E$EV[_5]= +MX0#606T\\P1$)'D_%IJ+EQHJU%8(IU:%<:0L_56!0<4:W;7AICF\?Y3?GG4D +MGVJ?]ZM+<ED1#M:$OKN1&\P_'#;SKR-I8_V]"A,:-(TIC>M1=UD&-CCLT?J8 +M+P/WSX+<0/F21YKXX5@PEZUY-==!N<!6PRG1L>-_V.)67:SYQCD$4/OD&DF* +M56/$>U[\O=<%4&"L4]$COA+JC4\O&#+[6NKSA9^AOGY_4]:&QL!E@1NVYW-& +MW:)JBU[R/%D*ZS"Y$MNH5<\44N^4C]#ME`^H%IN+X<![M+7[A%Z<R`U,NG>` +MXZV?_GW@'K*X_9:1X!:P@';G@KM9AK<OQIGQH/=^Z@"62*NA+X`D&XG$Q9&9 +MR$"4F)@-KI4VFFP5(39]]FF7%^^9K50!1S%)L4M-8:-=!YL-S>7XV;=6*<1X +MGA\JV2;$?6NF?G_=EN3T+^[%)7:8V'HD%EA\Z04<XH:5-4XE?<9=`FQG<?8` +M'0[O[H"9@GS(UBWR.]V0!R?1/K?B^''C&?<D2]L\5?]OM8Y86V)=@&NY/(5A +MSV/N.G1(]F%U%CIJCK3A#+J8.=TB."7.;;V97[Z1-*KY)D+1:82D<!7WM:9D +MON54?9PH+A_Q@MR_%.&%_2*94-?'M1%,^IY`B$.AJ(.%B";Q]E%I148:YB!Q +MD1$6*S/IK("H/5H\&GQ@L7__O!CP<'Y"C&F.L4);^PR@T?&4]8MH+R''"1HO +MCN$;%/"6+V6H>?P+?/0;[J!(U_3-?]DHSXLZ-$I.10Z)2=`HIN!6,'IG#;3# +MQB0=4*;&T6\,'D+[;X!$+%&#W)67$50T1SNABMAXD$..-S;ZZ4'>('/$IIK/ +MB[HW:I?L.AD,:XE]?AZVD=FR39=;>=KMGC15Y3/HI[5EZED<<G!R[5"9,!R) +M7#4M$!*[/]B<I[&>+5KJ+V9#\R=GJ2@;/"\QXAI%V(*$:_T!BOWXJ>XAG-DU +M<FN'E*KYY27)AZ@G3S9YW91+P)T&0I[#,'OJ)K,D"YBL\.2W9<NIINJG(N8G +M(S4*6NWVYBZW/2AB5UW9A`SQK3'YPC5<655FT+^8/KE[#0N]%HE*WPV(X@20 +M[X<4?&DY4$/%HS&?+Z^RP+7L>W(MO`A,-\N#KX=>`K?3Y-O"TR"0YNKZ]$4_ +M#LW!#9]AQKWGE8><$(X`;W\:ZY<R4CU3M<`1+Y9CZG@)OD2^A^<T<F'J\DU' +MJ*#.F4.97J9CE]RX-[6?)MQFXA=2"?DR,]%ZV,V7`H`0GF:IU$G7P/R7[EJQ +M4)?-"=N[(AD*E:*7G%!]PLI)6*34B'JS)_RR3J7I^3\>[N+,(Y[F_^SJN"SH +MG_G:5:ORO`H9<?MNE<&YI:!IQS6?60F^KAQ/E,2T+DO#5$XB-HHH52D#61:\ +MGWZV4M5GHBZ>I8:2^HP+43HT>G]ORJ8'A'-\X`G*[7,%)K4;TWD>F:M;88W2 +M9#MY->P)56[-O)SBM%FNT$)2IHE(/6//2AW9N:.9(CQE;25[8)JTD\YZO1QO +MK??5V-H+=.7Q1^4L1Z[=.2%QUVTR'OPX>L]J_R2V2BX/_W*=U=C%<;<^"7[` +M#J85&2=2_U7)C^%YK8_&.-'_AS/D1NB]ZE](F)/A(H+!=J9E>6CB;-INS_6\ +MT=/%:!E?[AO!C(8^[1):7/RNBY!I&?+(+/P[,1W)O\I"65QU=5UG#*1PD[`G +M-@WNR4=*U_R+:1_7A163&Q`/.M9KP-+UK<3`\_.<*`4<TC=:APWLT$W+Y&"+ +M#HG3*O6`Q,2]?%TK,T>ZYK.EVU!1E*PM[FY)]<00(%V@98GD9WXKY_HH\;G/ +MM?VM*XK*D0*A^/_QR;#C/J$C@E>O&-+0H=28=8R)UBH`ZXHJ,,F/K#4A":BF +ME9IC7)*6%<ACMLNH&RQ1AZI3%2?H^M@(51M1V%0$P(XL!^@@K;N!1V\.@O`C +MHCGGRDOZ3;]^#Z57RVPKQ2D37\-^X43;YSKD\FC\7.Z?H/0UI/]B3Q])B3(E +M#&EK-`*ZAGN^DEGBS\8%:]<EGX=:RPO-4#T`KX>^C;I9+OZ7N:258J=!\5\O +M[TB-!+V@NJYF)](.B+FLXI;N?S>>`O]##%@<*S@8<)'M%H\(?T)>^;;LCI&0 +M%Y`)KOX?A/U\[45]?:^4HZ1VO7<O)/?"/(#(Y^-.\693MY)EL47V/\5G_+"\ +M7L`G,8C%C:,$33*`>:-BTN.T?>*LS1H`)@`^`E#"QGM$K<^$K+5H9DOM=GA? +MAQKQPG,[',Y)^_-`@Q5YNX3&P8XQAN&E<FJDM1M['0N!W]K]N8,U,@QVA"X# +MKA4N:Z/+#UN!(JR8A87Y`*64P=Q*26C$[3_$"=NAE10NQ7XPX,I@%E:#_9GM +MQECT[TC+4][[W1*:I>1'F__*+R_,5(MUYS%83-KX:'M`G\V0A,M[[MH3E[<I +M^I=?UN@.N'7/?9TR<:S0JIH-WL^%U9AHE-9/G[;!:>OFM&&+5@(3-N0XGP=- +MB[0.P7#;.P9"9SL_N/;9?5CIX+]!$2LNJ@ZU7!;+H,NYH0F7F6O'B=(-V1;D +M_JQNU_31Y_EQ1@4`*SUHDS03O'YE'$?MN%A=:3BJPQJAK:%2:^C-%K\9C#>K +M:Z^OKN@'8GS:1B\S,V@9BZI%1S8B+I=_]M)9?Y'[EUE>:4<Y.9QPG"=KVD;? +M*6\$?4VD^U6C8Z)VC0X`@)T5["^OK(Y4EP4"RK9I?GSNKH'$-LOT5-:G.U/G +MJ)`CZE.CA?7_IAT=ZUT#1E)DQH_GPP+-;\9YVTKG>$*HW%8(G*JJQ;?<<!VD +MQ$_1"S+F)12T7HYS[KSN4A*;.)-HD@3J(%ETB:$5)S<+GX*RB1P[<.K%`D5_ +M+PVXDF+YK!M+'&I1+"Y:5:9?$BKN/]I[ENW'M(^K7*G=1\`G6R8R4O7TN1K> +M'-ZHJW883"W\^TSOABE+Y-8"TO)CSCH:^YQY#Q5CX,?1R#+3@T+.FN5(`Z1H +M_3$[9F:[_@#0?ZAW:GAP"(W9#ZT"O'82@?=V?EQ\T+D[L&.`7#DAJ/6D835. +ME?0NG7QW2C9#5Y&H@)@&RXL'B*3/FZWW5I!#`ZNN5X.=NEZN8S451&K)P,4T +MX):/I.69JNJX/!C.BLPD5%)RDA(VA@;AH=)3YBBSMRZIO##)IR6GA5Y#SEHZ +MS8J.B@[6X#MI8>%GC4N#Q&L8@5I[_:'#KSA"%3XF(B/'H4FH.0*5J-]ISWYR +MDR&L[<S\:W5:Z[7M.2.#.&XX1-K'523PB3`7?ET)-<56;W%<$!&X'Z<-YUGM +MLTCJHQQ;S]]CJ&GM$ZC>W.(A8LBJ*$"(.ALZC4Q#KON]CV-41=O,$ND,&E^\ +M/S7)66B,(JWS[8_#?&&HU<:"X?SI)Q9_.SX^N[37NSEF!P^)*T`WQ(9<$N,* +M2V]WG09<E\F[[9)F)LIKN<0=KAI1-7)Q1$80<)@U7I)FYE\?!0ZKX::5HI8@ +M=F\R3"G\,6S)W/QD%T<J?.H9;B>&T,E]8J@!+AL@X\,9ZZ-*1[A_=-Q3_YU" +M\NR+VDA!DQ!O!<,\_9ZROABBD1M'J3P;.0XU_39Z>5B!,!D/XX!8`?L-D_6) +M8&F44JIG]B*`0JZ%6*?62@2W],'X^L5L;74I6X=N4G*CW9C<'E_R"+7R%<@Y +M^$;]KF:];^!F[I,1*$*<KMJZR6_CORN.<%7(W`AZN&QK5:7QXSQQ1Z;LG&08 +M'>=&O'8K>2/#*`S3V0WL4Z/9PQ\V8T;D\32NSS/45I24`7@+E1J`A!@*\?_> +MCVC7^;Q2+P*YEWTT9&W0D$SG&V.H4R,I?'ODRP!(U6[P*%3%XVH2S>^P2%A& +ML+HU;OUG%6[*,#!AG7.XU)/2"/&CS^EP>R<7M$HF:DY)^JKV3;)>;[.Z-3)J +MQ:\)I1M6Z<BG3O,=HW<D&3]];Y+%1_"5X@@S]FP>5I4#*2<W@M(/^4[[M'?P +M_"S!R@IN$_G(UK][VIE,S%J0R"8'VF[V(;9%^>#\HJ4N?9&R',"V1(4G>D3> +M5Q05OXK'DY.WK_2W&'%.(PP.2['T&5"5ESD%\^)R,PDXDZN<+^KG`P[WF5SL +MZ.8S&\QDT+<Y4:1G5*"KL4[2W.*4'/8B%^"E2PTZ:VF-.5+BAB6JQ`#Y(.K3 +MI?9_=N:NU:=APF%6XC(ZRK5=D[5ZGH!MML=*-*BHS2>XG1+>%J=H,18><2-K +M-)1E-6GGWAD'H8,>LTK:3:K#$B=AA-WJ*)_8YBJM6*]PPQI1O[6YMG[,:"A0 +M;K'*`""P;$@"0M8ABJ8NF_8,#B59<!];<]Y2JWB3@>1U%&@4%]!?D8K<&@?2 +MC3ICP5/76@=HJ3F%^*H*(,.57/\5[JBMR3:X)QOH*/2*)&I+]$P?,JNT]Y6C +M]S0*;?.A9M.']_<2Y%WL.T>G+9:ME723WQ7;HE0..>CO:W='C;VD19!&-=>? +MF3(@ZQKO_?3#2_R7F*VM528)S@C25J/F3!RG/\Y+[)-9-[86)D?%%)QE'ALT +MG;DS9?L;<3%(`=/Q#_2;YS/"O4>0;F6)P'LO*I\?"W?PB]J9@&2'%&J*[I6W +MGC4?)459G,^!Q!,OV(+H0<7QZP.TLRE2UGK!K([6X7C.>]E)8__0->YGK8IO +M'X"&PHD[N%<G+Z9[A'BU-Q2FTM4&+;>W2)OPM?2W]TYOL`T8FIB5B,YZPB94 +MB$K(,11,PO7HSBQE=JYT_1(BEPQS*"@F<9.>8`'4PFA0"3.RX>P5`9CM6N61 +M*_,GVM@JGI+*^&CB&4<K0$\F@`+S@\"^HJ3Z8-DBCT*9!N<"XWCF]!%6B]?8 +M:@E[JL\V'E>`W`D&$J<Q38]1+RAZ,)BQL<[M6_"$C_[7^9\><B$X7F,R$5,, +M`C)3`XX'[)YEY+1R.W[C@IYX-M4%I)L\^\PR`\/_(3MJLY@RTN#Q@XH-(,%E +MLY9&M.9[)Q-;#4X4/;HJ+O>GN+$F"HO]11IWDLCRHL-N)%"FEHI7^Y7&`NL8 +M:S:/T!V]XJ+!'3ON/^_@?U%F-[#8K<Z_,*B$ZHQ0MHGV:P*>H?_+-).H*/@N +M#E&O:!DFPA<2)C@?.1.:<`O6T]'Y1)'?N:%^8_PLR4L,]1CA23`5?-P]?@V] +MR?"CD4BQ87\FM@X@#][TC6UU<.5_<HHT;M=:L]%/Z(^DB_P-?*2`Q&^]-`<; +M@2C;_`0`47TQ[6>^OF8GZV':&3LBEE%<1"V(.:G7C7<07H8U"2;Q73'9?=/Z +M"D62.ZF8/MFH6=//7__?I(Q2/<ZZQ6&8ER]SKA*O@\2`%<'P$&>&EB&M91=> +MDH.HMZ!M=(P%L:;A^;KF=Q;S(C7DTO[L/HC@-VK<XUL@N-YIADL:S')SPXFU +MC^(-"V9AJ'4%1Y7;X5`9LR20?/F""10-^#LV`L/%+0!`[(>4!9#,^8*%$O1U +M8,`M1G'OQP`OQHNRDSR;ISMABJD1A]C^\J`[Z.@>?#QXG@E2(#X%P"IR0TAU +M/!,TR#X!7`BM/4D<MEQWFN\H;"VCE)[.F&X-R%'0B?+F@IE48=8W0)^!]8]4 +MY@T%.J>2E=O!ZGQY_%RSTP8("[*,4<DK76EHK#JR*[9[-H2S]-$/(=-@>^'L +MP+P#4[`'?,3X`\&^HF5?^1AK9`A>$//OO(A`L^13T,SR?RMZ2WGQZ#Q*V>A\ +MFUYT^A!P6W+5CV&^@W$YK64'U9?N8V_NBI<'6=!3.C6N9_1<UANWF<L\838. +M*K_'FX%]K^UO5L!H+P;R[4"4:C)]E>?\B8VO=KN?525GHZCO`D'Y]*&/'])U +M[@6`<;DDYV_[-_&MKLO6&MQ#_@N[*>C;ROT+0\ZNV8P)\[(8V>`G9.HT1>:, +MCY?$C#QN,GF`G:%3"PM@EI1$.!@C8C3,N=!/\V,6OE!>P^APHT$$C#/2-C:H +MTP3KKME/'(%='^GF1#4]8?#BUIW#"W47&:6.Y`<0+>T_/^581F/LJ8>FN"], +M'#%"Z'O.KLG78?8,:#<U>%7=&JH(MUXNX89`0IY5DUP[U%:&7[JR"@;KV=0A +MU0/:$?D'066J(Q>;,`]03>:Q71AA(W1RK'>)$[M5%I);8&6UM4F;`K[:GMI, +M!;+"YUN'MW`#@6P+9ZV->^$Z9.9Y,&FA?]Z[8S1(RPF&BJBIB5Y2Q_PP_)WB +M,>%$&RYNI'CY^I9>:O@7?CD=\C-Q2"(J(-2)L,DL&L_@OAXL:8WZ/'\0<6X\ +MB@J'%3J1/PA'GAL+1AKJ[#,TQ96WY]@%QL>7X343IIQ8(841?3X(*WK%M7H< +M6`2,KG,":;3743/YHEZK,_D):[WD7.=#1=B7$<8)U<I'C]26L&&\I%XB&`&[ +M'6@A\5:=/7>:.&)NV4%2(N19XWGV$;U@+A&EFN=%[\@_'1&<V>L,8HSN/!): +MHO0JSJ!R%%1W6@P(Q@1Y8NIWTT9%LUU^>82]^=]1*EX"S2PA_GY2B0@EHL@0 +MX1>%#8C;M-0MUP_9X2TPIMJ:YJ9/TW9OH;:%<VS^U@,G]B>S96QR#EJB''H? +MO^W1>]]_B#*DFMM/IC=/J&+07U.G5BU+N'QFY)9<R]3H&_]$GSFU84O5G@H$ +M'P(RZ@8-FW&?Q^];+A]W#`]HR<V-E6+*P5#X!9KLU.6IG901C_E(#B$\`).Z +M1O\(";1+`*7,F\UMN#4]VY5VF+R\D$GAW[[T"0=FT/!WI`J;!>%AQ5B:>7PH +M\@&-M+,<"=?U].N(MGT<X'U<$IL($1995L32X#^08:P_1\G202G^\,>4KF7) +M<[QM2N2!U>[@0++=A[$!`P"'F6B&K0LF&C__9[XC-H=-7EQ'M<+P1A;Q/T7U +M9P0"YA4L'O](:RZ=2\O":^WPUO"V^/(Y/(SM.T'.8N)3C<Y',Z.^`Y6?JNAN +M2?KR)A'WDKJ/.22F&9Z(K9CZ)FQ)VZ973W5RG\<VGD0C`>N>@PL?`1UFLO?D +MCWR:!+.N;XF:)P)2>Q.!.$173<344:"?56>+!4JX,]CB33J>G[-CC!:6QPA* +MTP.MA_,.U9.DZ4QA'UYW@CBE]P)>.,8\',Z".F%D]:F*%=0N2!9W$M])Z'*/ +M&0D]7=C$._S`W;7GCGB3=$8_U@8P[2*I;3LB$,V>+JNGXZ._XSFD;R-H2U@S +MT7[')E@0WXY43HL"(+MRS)_U&E2F6+%+I,]+',4&]("O0$8`^TZU$M!:$D]V +MA.@`.(*K<X%]K`-`L(NX7N*1K*"OG`7*6C:8>HTI!3Y,=S#2@Q7DX%,K4RQR +MSCS5?IB[,&`S@0_JENTX%4L#_P86$IW$@JWK$;.#;3$+7+1VQ\>+09?(G7L: +M?TEI&$[XUER],#EASB@1U>DQ#;8ITB60([BU)F5ER1(ML`'+.C)B_TC[6?L[ +MG4P/2LX.4HLN=C8>53>CF)275@:8HA7(82<=7&9#@%XBP9A<05YZJRGO-<>" +M+KQB=_;(6]H@DN)92UQG;:U_\RN25>X-V#-9J'^DE+17T_7":\&&4L<+NZR9 +M>,(1:ZRHY>`J--W\-'V>.($@ZT)W7**+^6CA*G#85CP&P??/SFVPYX'^GO@% +M!+POA)'`'=2'?B0X"G%W$I@N%KH%X=.1L$<8)==:$\6OP?H00)4WO/M[R%,[ +M<O\754^?$(>8:.CE?_1.(-O8QC;IKFNB[@498Q-]\DTLSN\[Z!D"8$N78-JW +M,J47AFEQI!)>N3#M8"$Y$YC(Z`0NB?RYVZ278@-KW&6`G<1RH]'<C`JA&L0& +M@G0)W6;SJ,,</91#^V",/0OQ*7@[SN$T46YNG16,B>;#[6.&(GJ&M?"WGVJZ +MIO(LD,]/J3X7I3`%O9A*'ZQW19MM7:``_CWT:]#4=>S2UGU?G1+7E%Q%Q/^' +MB0G-"2=M]MS6$QK:=X"B2J4)@)5'E>$SKH!%$^9/)`7$S>69&^>+G4KAOYH1 +M7H3,G/+LAA"Y2#XLD.46E6]'B9^]O?4ZN$:O+*09&7QK,TU/9H(PBYGM[`9[ +MOV5PX</P+903UH3->=Q9#PZ/Q$-5UY%;@*X>0$@50-)$[>4$XD:6$V3T__O; +MHJJ?B2R(D`Y8AI`#,:"WDP(C"LBHO1'"A"VQ=0W:OUFU2$0>O4LQT-GI\"LB +M@T.$^C99J,!2&J2YR](93N@1:MAY_=JZ>FFLWXLRO7X1&M?V6X^J;6&LW#[Q +ML&-'RW'_GO2?!S/I*G'_P^F"^E+_NQ]LT0QI:;-P0(G[M-Z*9PWUAN@(4T(T +M"W;_&9`LQM"P>`02[P3,9TUT&ZG'6\9)HHHTI2BR`3SQJYJ;44$5RU;08;S, +MAOK>-$?J`@.\&HTUCJZGS1BJWE=OV\Y&>C(50O4!TD4/,'N?A4U9E&AW@#4( +ME'YZ&V;TO]:5PK7#Z0VSAB'8IPJ3$&.A)'B!6W9Y625AO]$0U!XF4;:O79QA +M5CY[6:2%FHUME"F4>B0CHG1]@I-XVN(C]-<>CC!;^WZ4-7HCC'BMK+QS4$(] +M!FG2'[/DOV>&BC`\1P;5]NO:'@:#8]&D%#J[&F\C21CGX561J2(TVE,0W^?P +M*(&X<*.S9I<4\S,C1*S6QDCB@>B,*+U]H$4<1<:-4ZYS&U%IE>ZN!I<#Y3)Z +M$3.3=V?$.],E%L2IZL>&7R02C+37S:\?X]N53;37?>WK7+O^CD#KM%@,H'7S +M6'(#<4X5+(M18E&34T#:)P)CH&)CA6#:'>'ACIH><<$@"&3N+F@QL,[F5(*< +M6HVO+%_A4\ES&HYIM:*$'D.FB/5A9W6WJ+N2BL%$.M=IGDMZO8]\"@&P''@_ +M?"F-?N4V]W#2'&O(T574)>N.#()0_Q1X;L_LC*-18S]'.ZOTRGOHIB<4TBM5 +MG8-9B)L`&2K`&U!XL>\%Y?1<%1B95Y:.\YZ3?ZIKKW&EBU]-*.<];-')1#KH +M<,"*VLU+I1[@]X7,B()JN]4'<GI`",T-FUD_+5QA4ER-=[58A,)=\G:O9L"H +MAVE]K-=8'$,7&<Q1VAI`F$-J5>&I+5D)U)-_\D2F+[8YWTBAJ6WD9W^7KJFD +M/I?[2-(](WE@`:8==%&F6+S\^]#<COS)>!$>L]<2Z*@FAV%EK5/9DY1J%^T0 +MTIX=%R#L@>+X5P@]^DXF>B%'-XX@?2=_U(IFW_J$;.8GZC!UE7';RECAND@V +MVS3C.<`(K&%U?31G!.5$6Z9CMEL^-?)$O$(?=@4/\:GP^G63>JYQ;_OH7!5S +M0--EI@SO!'(*"?-6>@,8NR'H$]OV<<PY]N![MP-E**$S1NFWW1I*"[FT5\BQ +M]+"-TX+S!!YA(E2]9PE8&<N)@FTF82*OZAYWC=_K9?A4IL1(O1,`SP&T/?B) +M4:=*+5)PX9.(V;"V$64LT3\VIK&J"\$5:<,3@');HKN+QWB.H`&_VZFO2L,/ +MW\-F/3I\P!.6?TIDQ/^ZSQJ7S[)\KTQ[C]BG#7-!'I\X0)K#[UZBVC8P(XHT +MDE98\>9$[KE>NOC9S1O26V-XD8""5U?+6HAQA09+-E</*(R^_NXZX7U>IPRJ +MG442+-N=0CH9`*QSF^IL0QPI275&(VC=%/:>?C*BLJ8B7A>[I^>)T*K-L";S +M%$ELY$"1?%QS`AN5N/C=1Q?8R5*#AOLG\,@("-R?[,0T8?4O*>C7_R!2-?%9 +M.K4!?UD6QS;M'TJI[,X$%E#(8.:2DXZ05;VP0(LAI.SOI8?C8:G3I6I3(ZN) +M2@ILKTF&:@**3O\0AZC!$K"F2-FO0I18OV\I+*VF]LXH[/]0!*37G-Y,E^AQ +MH9108MD0\'OS904R6`2G6*N&0C(]_&;X2')54]-15PHX>-AJJ5B\DS^]6Y?A +M'P"*"&PFUW;RFL,IZ@0TZP$X#L2A)\O4BN=JT;8/TZOP"FRC.4_@PE.$`IWE +M@61(O"2)'B6;QA3@UN`"G37'\*DY..&\&LOL)W-Y*E7T3O]!U.9K>SKN?L7A +METN>&/65ZN9ZZ:&-YK5_B#C""Q`)=V[IBO`CA`5X^QR]6]7VJ+N%9OH`/!G\ +MAC0&YG$LW5A?R<$^^1M!+L,9K1QK5]1,`'.RC*0'+^1*`D?6U&OS\9S7ASK_ +M&;OFT*)<>O`,CN".T.Y:TL9,,A-IRB'%M*+CK/J&ZR++'>&N1E<0MT&(J.\C +MTQZ/]EX3HCS-7"&E+EJ`6FT"XD!>-`XO2AB2;`?R7GE/F/AD9NN\+S?F'35? +M1D(O:52DTZD"_2,I)?\Q%PC9DFTTNXR"Y"#8PK6,-RX?KG.9OBUYVQ_?$3-F +M7YHECGB$208)K"<B!P@A9G8J#H-Z)5E5/!IA8W3!K@P5162PZ93965[+EM,` +M;4M])>4W?ZAAM0'\I8#\"X-V"BF+0&9Y4J%*!T4/`W6>RK+U(0<NRJ)?3QVU +M?HZ]!FN0-7X8=-G[K>=[T`$+`A]G\&2+9:./DE0_7_;2'!.Y&CW,&TG%.[B: +M&6M;J3(7@0&LK\.I:$U7K8%@Q%NJ1COC2EG-H%$9?77RBKMV;N,F+?-Y#LFD +M0EM"$I7UTUR.RW8/=R3W%V6-8&-:L_#/[S):[MN<(L^SA$["&TG%S52QP/FY +M6#1+I5']G^4>`*!_5DMIO29!?M_M4!.?<4_@FL9!)]%:^7,)\S-V^<:BFNHW +MR@[3<',1%>]U%(1<R$3R=]VVOZUTE%;4SQJT):K)8\>:3)AMS:PFSO577TG( +M70C,5UBL^V0W#"(&F?7'K?'D@!L'HWW?31<R'/UHY*CHH=C8P^^B_0P`_=97 +M\B9=+DQ:\F.Q).:1J5_7$'>`(1T&W"V!R#'5/0#4G@"$OF,]HQ>FR:W70>8" +M=#5<2W0L(S'="%2G^.`<"Q</]X=`<XID?[?142?!DN!K`[%`AGU3:@/]@90^ +M.LY&+DM-)7P_445L`,-W%5[6YA?#@A*TDS4RY\6H@;8M\2/$@=`C[F=)S-.3 +MX>+PDL.18;BL6_JY=`Y3Y?,U<Q'6_-<-:#Q,7'1,)*G.(0)''[S2F52GN2(N +MI7K\)4AMA]Z/'8P6-TR$9_>$AH:&X#Q>0/?$@'81GL^0X^RN)M0/H?_:,G]Q +M1E@(0J,;\)^NZW#@P7T8AGQ\3D>E,3)&*)Z"ZV!'<^\-<)D0(K[&_A"BQ69> +MFX=[3FO2;"GY!($X.*SLDF[9AU8_?L82#IMVU":UY0E#9XQ4N^3S$OZ23H`. +MBYW0-`IY1K"<FF^4^GO$Y1O!Y5]8B^F]?THC96MIHUJNR04K)LO&BUD0TJ/H +M1^..GG1KPM&EA@M>]1SNNP<$I26*1#LDR,9/0?IGAHV'',.B$^H-]6(^")6N +M-"VJ&6WOG_LD])-9)L[BCV7/9]<*EZ15X!\QB5443BR'\'#:F+==X3F:(9\Y +M0^1.I+/ILK(A!3RSO?Q+M54[?CUJC;%`T93:)+ZH^8>ZE//K?QQ?ZE.@NI9] +ME&RIX&I>\$3/VY1G+Y\5)F:"#>X,<<I$FARZ29-9Z#%WJ<KZD-NA-3,I,ZF> +M"UNJXVT925OGBW(,.?LM82M`8[!&QM1WC\73O^!0LY%)6_LC<A">7W)E\EG\ +MFB&EMAEOU\ZO<UY?9NX]RGI.A+>S&1T@U&H(%B$I$U3"NV-K&6I7G156HM!/ +MBN^5),B\$?:*DTO:+Z1U.W2WOSY`"GU[@3"-Z(;&^!'U_T$F9>P]M9J3/**G +M;+%27\("A*.]Z6%D![D[F%+4AXH#?0\5U<T<S"03AF]2XL!']V(!'92LNDK? +MM>LM"ZI93I!`AB7!2.(_4]XEWM>K_H[`[6Z^-[8'.NTF^[>UDLQBI;JC'^'> +M,N*Q6K<`'/6C6W8#V,\WHD?[9":S@_T@3A+/\:53OQDUB:3-YKK78R]2^M%K +M#O=8_L;&7]BK*9K4JQY$*ULBD$9SY^VNHT2<=%1,SC7(6&4\BEBS<O\>N4&I +M.Z/SUPEAG5!A['@(9B\2%@V77LOFDN.E6$AA5(.:C+P5W31RB=EO"C!FZ'OZ +MF>=</FQ=;2&".?N%@,&;M5:VLH*TIR6_$TMH.K<Z^M*J,IL.U.I!TYZRT,;0 +M]A6XR*[P0""W`I5(,1$K*S(PVUYC2UDQF4&(SBL1T)_'(.9_@7Q*3^"!;KD& +M`307<V1,<\\PBX4&?ZF]N,DY&Y3NBWS%8@,J1/4[OA_=`9S2^[)3://-R,LY +MZP]\:Y."8_`Y`F6G-&>5U$-13,QF,G*`S6^-H."H.T7=DQR3Q^KMO`EMTG^! +M+ON3@U'0#'.UA2-I79A&@WYM8#VB<616%^].5J7;9,T>>PB$!YURL-WO7P+= +M$)13:IB:,AV(F/V4ZS7[KO_WVLM)Y?2_H`L=FB:0;92-:IK;,(VMINF^^U95 +M%NHA<5Y^IQW"%2C2VD,E^&XW39NL#>4AB7V98OWB[>2SBK[@D^>,UU"M,\>Z +MVMX_%6>&>,LB8RVT`CN\5%E+.E3$2$!P2<OT\VEIQ:>!^41?3D*A++MIS*&0 +MU2V=_$O4#:DU!C9*XGP;"-#O>_Z.:)@:OBL906KU=/S1!04-F0QW7.HC:(S\ +M1)_(>'\J*!FY*W=)8&`KY.)H[I:SGYE-B$5:0L'.:U>"DY)5U8;<5=]+)LCQ +MDI8PSOAF(VZ[*J_CT.`$FK+3#N0!+C".!?L7D%5D`AOI$-]-H["BEB^X)>", +M^QGI7IU@%)Z>`R!T@[B]@57UI5TR3?F>5L'Q@U?2/C3*EJ166E7A@EDH.DQ2 +MAOH`XDLK74J[H!3\_D$D/TD&G,#J#SW;L_J*[P1@W3?_XDC4V3UN<7]G!O)> +M9T4C()FO`2IJ]YB+RLQU]"LO#>JAN_+5T,NK4?[G,]]\N/EN'E4>`O)^?=1E +MC2&O1-HE9**K\&-)_G"45"N8TP/I7)?(ZM&\&U1QR/<VZ;*V)F&\+FVH(SY[ +MJ#=;S,"$R00/FMLMV;-=1#!WQ>2"@,G!:]>XM.PI7X#&$=TRX`G50=H"$Y@R +M8_7]])79.8,.(8R&T;#*`ZM&<#T["J$;![O%D>>X;ZIH:#/X9(PB??HCNXL0 +M%&/[N]T"GR`;:\%6U,\RFF6I.^;,DM(9HYN+2]*3H7B0:Q3N6CV-HKD!5LA9 +M,?(@VA.@,-8$\.X?LM(FE0=`3:7ND&Q\%@'GZ^6%:4AJ4>>%M@@Q@&`SHJ8E +MY%>N(X_]^LX<MJ:34TSN$Z8%IDEWD")4:A[6(]&S>]&WOUL$=`'HSX=W+>>? +M?N*2-H;CN=&UN/KL`Z@]ZJ>KAT_+"3F!7,9I!SK>[(#2%!'1745(3;^]\K;( +M^/$1J4/>K7*U7KHU?YE"!+SGK3I_(Z&NNHQT.&!JL%PI`T6%/C:F/T$E\X%@ +M6^Y5'AI3/FDG),LT"^T-!@17D](S3UIBI2Y^6K`CBUR&Z:I#9X12K>@.-3@' +M65"TVCDR*%`V73*E:@FF,>"!&596"RGR@'/IG"J@U&^5[`I$A,D9F'$[@R\< +M%7FMZA)3Y''I4]T,@8V(],"JS"&#Q2'3P(:WML:+#5"0:;&M')^.9H'V$"-/ +MW="L0S"8,.\%RQC"WM':18/A<>NPE^]SM7DV^T2C]OG3NG$PX*4"=+Y[K#7. +M&JMA9M8F-C:+Z))B,O-';?(7<&WW?]G(+'6UHDI;!.&(\+.<+Q,+DZR78"+# +MZ#F%A5K5*NL@!@(6SKK(DR:SOB.'X90C=D1@)$*ZGF8//1#0OWXC2<E),/&V +M(/^VG_VV[=G#$K!!&N3WYBZ1E)W$TU]GL8HXI_`H#/Q_!9-2FE\!7+QCO!J_ +MK2*/*C(LYS-+",ZB3@[K^T&W(3O`^-Q>:$_6[`T7F:(_GBTCY;%!&LX#"Y?8 +M</"Y=%X<G)I`Y7R7>$+8<1CU4X.<MPB4I;AA;W*VITM_FO_X(G%)4F`,/M+8 +MZQ.'**J;:L!GU$\#&`\#5<]F/#KJP[](/I:R$+]IL6YB/JP$$,/(_U8-U[3Z +M:N3WB:K:")*;.BBKZX;L$S\>A>I@578-@(DU*8'RKMN/2'3#EA^WLYO6IQ9K +MN[E>]6GIPJ40#E`(UR]DO`RF8?"G*6/=%IG*CHD>)/]E:!>%D\"!.O&NE.R_ +M-3WEG:#X6B(L[ZH/PHOS?U)!''+ZF/B]P+55FQ]E7>L]Q8*V=3:89F^\S2FV +MWV8J($'^:0REW86*5"$EDW&Z`F5AQS-49,!/BJ:KI3@/-)9!EY%()<)R#"^2 +M&4[HISGK`>%6I2_T#=WP*W%U[>@L.YE.C404IJZS#7>NK`^91>T0EHS</.$S +MZ`$=99>+UD?%9$=>2#7<AW/IFP$-+:EGYR3I6F-T>VP2-C1KR3%/(G/0=$PG +M=R$RN"E<@1-KNOL=AUG0IN!55.[TNE-EN@&P1HR;Q3Z^\XZ5>M6(CF9DIQ5& +MI;ZD-QHK92.,"2?9_`OAR/7D;,H9L:U=]*U`C1(Y]%![,!7=@*T7)XHVN1V_ +MLM>\=">W8P>FV!UEEN;CC(5K*XUT5TSAY%:]=9--OLSEI2ZG]2FU6OO?T0^N +M.QZ!B'K>NB3KX^*H*6G@LP]XL+.0=@&S0D[3)F"FRDB)?(6<"-\=#9!;)D5O +MO;OD%#8EP]3PMCV))IT7%((8A3I)^=,E((Q(F#MNB]G\FA.@R-^US6R:P'XB +M2E<P\+$QY_Z((>G;3`*BZFGZG5V\$M8L[X*1_#>YV[U,.7!8/C1Y$O:3XU_Z +MCWWK6HG]?M:L]*YR0`Y"P.`)',F7WA#&`)*LR&3N)I?%^JRDG@68<)9L?M7[ +MD,CGX7/>!C7#P4D>C=9A>*:4@OOJ7D1JA63QL>0E0(C;3<W6?<X+R.U!90QB +ML00=R3(A[?T[<C[M;=$W?^),<P;S1YG<)-C`B?J4K_Z)$1-7'H)B!8T?9V&4 +MJJ]_J^J3;[2V+C!L!:'P[$A<W,9IA)AXN7$-(YG0P]BM,\6T&0".C>WT>V7[ +M0<K.;4#2Q]!P3]-F15!$1<S\0#8JL>R<WL)R`^.$PX\<%L.0&9O8:DS$+S2R +M[BZB5OGKGH@.CTA4@J&J>FPW"!:#_Y[W2+.A#E7Y5CUL4N<)@(:6!BB>85SH +M#1NZ*1I*HCK^[W87$9`*$8)9$!0C/."6OW$%>AI4G2_5J&;I'7Q<4P%,@*(E +M#RO3A[8<N\)X8%!@-<TEFY9M':+:Y_61@N&2(?ZB3@=J@\EEBO['/V7E$XJ, +M=J0GE%OP4V^%K(.GC3J&CU$`7,9M>'GB_/.LB\[/O=6_M5&S,0!*2^V-,AJI +MISLC],1(&C#:7N[4!B)"IWNY!:%YMG<Z(8S]1D:1>""-ECO@M'>.2B#3?=]T +M\&SV9T+GVH[Q7#S&B$;#0EZR(\L.W*&_J9G&QSOM5A:$_WX,Y66X_<N&"`$@ +MEO**)CQ3AC;2Q*(2+3W?I#5V*E38U]A/F(Y^<*"85P"T1\%"V!N363:"2H.R +MLY*'%0/X:&$AF:NY?>6`@)5NY8)R)5YG,)C12^-BL,Z_Q9']6VNE/V8%8-TH +M:>3^@8;E/--]&,4`L]T3K/I..CQ0'-O[MW7?Y&0G4/01/RKN:C*]^#[%DJZV +MY1CD$)VYP5AJW+E72:Y=33NR?@%S63"1\(J49.P)J9R5>)/(ZVG0MO`6-Y&Z +MFS]G(]&HP`(1\[5,(""/*4LBAO%1Y.SN5Q\\3*5!SI[LHDDF,>2]5FBO>M2- +M0^`3P!5HR#M^5@91LO%"-_!C-5L%A3Z_/T,N[]4L(XAD3US8'"]:."LH=Z>V +MO26[]Y&OU2I7H<5XSSJ*U-Y&Y0^JK+L164AWS313F^=2^8Y>*`,K?7SZ83`1 +M9^T"+_#J*=I].TSRCQ,?"$:?,G_K[:>`--'?O9_6;3)'P>(Q8;74@N^JI?-3 +MUE+82Z97`[S3*5IR[XR9)^*07*R_T9[KI?F[03_P(30EDV^=N;$Z]T1;/QK2 +M>P`6^C=K%NQ<=1L,ZQ:^<8Y@(L=!):)H\5NJ$`/X6$2AZGO;MY6B6`GP04^G +M.X-9=!3[R$+1#BE?53RC>MW^)5Y5M+>[9L=3Q!@$J9-^.0NN\NA]=WF3&S"% +M<7QL5&M#U37Q^>-'BCD@XH6$B0DGY3**^_#VM";$\ZAA+"0ZW7=#@D#^;N@T +MA.ET&'5"`PQ&G&]I6OM$4D$$?)9,RX_9&UAHIN#)0XG]3A*39E+C/;P'Y6UE +M:B'=FOKAYRJPS+G+F(HH'^#P-#;7.8+S,*@%D]2HV*?Q`L3TG&,G$GVLN*E* +MZ`7(/9G8:K_;L(M>I_NIQ<7L+I_1E+!_8GE$6)=ODGD>+0_T"WV4B";WT2`N +M!S_NF"*-/5![Y\P94@A!]78RZL%7TGQ>9E":98JB2J^1(XFXQTBU[*R<K<%( +M0(D)W#>@6'[:9!6PUC"P\Q-(`^$N)P.-AU#PDWWD/N""^_H<6U`5%X_0,*VQ +M&_P=W1K)F795P?=8MTIDY(_LSDUJ^@#'"Y9SF.\N=+#@D$*8?ZK$!,3S2P=+ +MIA,C$7?`X0F7_41/\\O3UQT5CE*;7:9FQUI$32G88+*O<O()WEDO!#[Y9H?4 +M!!C5`L@>N(9O.D]:A)3#UG)%&!BXAL.3#_\ZHXQH.2"->:J+#JB^#!VOFZQ` +MFKH7![_.H]=VOR(W?X))$2^7)",SQ#(Q\,YFT\!\-"F?B!'O3XF-3\:9\\T/ +M`L#]2]:KGQH3)R$1^6/A>#+GLQ9Z(A(,;0X6]'YG$`P>DN^X#3V%_YNO'B^K +MY5B].NR'1,+&#R;BI,C?N+UP7-`;?.4`RZX\N]`V()J(J.(_[V:=JMV3C:%' +MIBTL*3<EY156G'"K1&HUAWO"ZSIV1^Y^E1OK;YO&FWJ\*(A)S1^<2I>CC*8& +M"F%&5`B)1M;.X=/T[G@YQF^0X".FXI@HTBY.S#BF9;T![QCU$F&Y96PAIU9Q +M*KN+%+9F$*>]@D9X"TPSF*$!IY<8K7!*K\_1X'CX,;`<]H1S--&>]1%]]$M* +M:=X"QF_46Z^A#?*35IEG]_HO!2S\RUEUM7#A7E/F-A[(N(9;6I]@/Q)>+I;\ +ME1,T9BFCAI1W<#O3F)Q,'Y2467?.GI0<@3-''Y;+2%UJD?UIP?758<QD)/NM +M`G[Q84YJ=;SG$*]25NO-?Z']/B=M8D\^\_#3O3YA9LF$;;0^)!6II?.U&,'G +M=.H2QWWR*1Z..:4'6X;^.]1`:;[1(8,E!`9#>&]`W1['-$V+(-BDLW-P2XF[ +MZ\<04J+R4`;*V-`?OLOW6]T8$`5B2Y"X\+@:IE?X+7K%ZR;&\%`0'M#<I5PO +MNEQ[`=W39S,&-9&9$)FJAZ/0H8M=$K>'RN#.4TFQFNE-`I'G$(2?B'C],KVK +MNWY!\\383#.H]*1Z9YE:0.>L?C$OCD48!P85S6^S7+UPWF16%FSA!X36J*E( +MK)NE(_Y^0L&.A9G_070^^XB[9M(;^S87!(*X"+B5E:XOT`1SO.Z@'!1_TH=Q +MS<7+J$^4#E9TFO@2!:8KN"CRG=T-@XMO&\>M?UGS+N0VS.OXXE?)BV-+?&+8 +MJ$S?I!A@.#ES%M@4!VJP^%;?XFW(??1T.:96OGR@:&&>*N4E^1^R?!3E;;X7 +M-.T/8,H#;'!.);I%U`9`4L<UD@B'I(Z#$S]0WE#6;JN2MO3Y%)\A<$8-=HFF +MC;)Z)">QK%,8V'3='3V2)[`C3PARWX5LE+"\@9*[1C,I*I#;WB,`-!0EC+%= +MY]IFYN,3G9TO(IC[$/AN;O.H!XPWM0CP,(G.F(Q159_E\.:U)MQ4/DWF$I+, +M0&&U(!JWT]XE:.D/QGU4".<*'YV;A/;E;M\H'UQVNREY:``?T,NI\N!_^=6D +MY$J_16EZ<)6GJ/1?*+;YR+:R^Q;)!,Q/0&=NT@M;I@HI*"V[K)F([AR5!%I` +MZ+TGR@7W&X99)Q,8[J-9,1ZPR;T&AF'.LSL5!$U<%"1/9)%Z2V[@Y`%-DOGA +M`KH0Y?H&82FBH.(RBH^B2RER?BZ^42^&'A0>R;!T205P%#1;/NSMW4B<B_?* +M=VQ8O4Z)_T%0715T\A(8D''*IR_3<+<9)I?NB0C@^4U@/0Q0FGGEWF-*TG^% +MP'1][PE2#!7#3WDHB-G34F=:4/DQKP4K":&7`#XR\95FM;3EGEQK>BC/V+;I +M;/@O7/K9ZMP<6(<'E4EZ.OY?HJJR`Y4F[@BAPGA6(SY9'M0S'1L_5BLW\QAF +MVC(Y4"5-)2?H83U8$DE;4EX-DJ>79-8A`^A'?#AY_.;C^?VKQVY5#4/9X$_P +MKT5@\.TO<%EU)_Z+ES?G-\-7DU_=8UQ7)8^[B:&=*D?V/3_[]<%9_PI@6#D\ +M2A[$<L5BQ0Q1HB0I@R_HPA1WY%KB&$92"7J:JNQ`GY)ZB-.YHZH8IZI2U]&Q +M1D6%Y;U1LL7R+KOM-F-.GS21:6+]`VF7_2M]_KHK`@2TT>K['Y=CR0MU%2)< +M'F6;L2Q!P^E#:0A=<*7RUL)7O96.JQ"__7N$330.QYKRDUF$NQ='0^:@0M<> +MQ_>@KV.O"-8X\E?K+LL?W[M'3#O\(CCVB<78]:-;3))45SG=E!>V6#3%])"5 +MOGS]15=&PMM>E+_]O23T'>=2'II'GMSKE8CJ/EQ[23J'CT;7ODFL*\'<.C[E +M(*Y._\L@]K@_'26\\RJ+R\X\IS,C8:\YKCK9\R,\L+LG'"3UN.'/^2WFH(;5 +M!K+-J)@^$O)I%^$W,/M.>N%XS0.D=:!L;92J6>>6E$#JHE*FQ9V!9[M;?X>P +M_>$MY@'/@/)@8@4A726@^TJ(I_)0:R*Q9T&[J/?_[?%6@TD8;5&_%Y=ULCBT +MT%"(AS:`%[M5B)>HF\R,I5009P.(-.JKZ-H/OY@5%:JZ2^1L9:-V;<H+-T<D +M<\3;"G(C`OSU<18\D+H.MJ/M:X!G*^7H?$=:R>`>>VW$$5%55;7G]*YD<O?Y +MR$X&#]:$(074CMGU]:/-($(Y(Y+<??+]N%D2B02.'17L&?])H8!P(E3KH__, +M1E\["FHQ^;C#6A`+6,A!Q2XC!:83)0FNI[OTK8U?)F@L;JPPJ-.;#**:]MTO +M&_XLQKVQC.6-,B"'!JSV:N#O.UH2_%3:OJ05S/$9"%]&%RI1;X($5!.P<S"K +MB'5L&VXV/_*"%Z:OD]G:;1H3`6\\'!73O.\SB`Z(FH[J:I1`C$ZI8-U:BH\[ +MY:G_)I=(P7L7#1M]VDFEU5PEU,>/KB$,5\'=0Z<O?%.Y+G!;EK4UG95"-4-A +M(,+KO89`34C01[2>A8D^CT&.N\H66E<F);BA3(0!G3YQ(3FP'!:<]D&:ZA@1 +M@=2<RY'U!Y""-_2GN?!)DG28>B&M^#/;M+2Y<DF[.=[4R"05"I+0XBD=G4/D +M3OII/W`9O=5U(>FY+K^^[I&Q;/G"4%'V,![D]F3LAS03>MGJZ91>.8P79^%6 +M@`_/F!6DTIJ"89"^1N(PG9J.N&N1.YS-5$X=O]L$V02*<4^T$P[Q)Z.X]_GY +MCY$VV"9;!]><9=,GH;Q'@=]TFQ6`LV6%M4#)[H5T`P(O?="$X:#D!=;DB<W+ +M$Y4%SO7.]R^;)>FI"8&[,C)3*N2W6M"7RO'!!G=P'\*W!@[4&I?'M.NJW\$U +M%"\,UL$^?&&\7A=>Q"R3W]VLQ`?@DGT+!U0=F8SFR`7PL_`54V4)TOR66PG\ +M>LZ%';W;2Z\;ZUU2OWR*`O?Z$-X;BKJEXP4AJX[\[^-5:?)=98DNSIXW>AB" +M"[P$CV8^(I,=3R%@<=2)/G^6-"))2/*L+["PJ%XWWN#3Q5>J6A&'FSB+-D]/ +ML_+NZ@F2-"0R:/ZSPW$"U7\+D@E.<V^A+Y-6[NKRFA+%6KH4OQ9_,.U0A^*1 +M)RQ+:-G`9$)^YV&3F5!ZF?^T0;F5!J/D\*,II,0C+#UHX"?G`NSS1E+*#N,< +M<IS:]:RD5M!UVOZ;KCIDW9H>U+M6PKG[&UB2LP@+3C8]TJ4/#!EC>[#^_FCT +M,LK#;3[><*.NN_;$7C2$J4]%>5*#IOZQOQ7B!I"SYYB?G5<:27?R88F=>'S1 +MHFX`#?XX3!8,-?-#]OGK6:D?E>5S\`?1=_S/?C)P<9(&=/:H=A5ML./0Z#;E +M2;ZI7)WEF6E08(P(P=P1QI_;MVV13CZZ:R#&9!7Q@JJ!/Z)MDN]P$:.Q&V20 +M(7?+(35&_#L6D&\@5AR#1V@U3LU4.Q"1E;@S\\%4WRH2-<V`R3K&S42Z'C.) +MQ'8/56="I'L>D6E\BH&]$QK4?N@E@[H$,_EV;DE%61+B=^Z8Q]]U;5&ZQ37V +M#U0D\YT@3(T^5Q=ERB"CD08263`/KFW;K#)QX*?[MPVW4;Y06S5P/\S.MC*; +MP$"'T=;S)>N$+.-'6&N<<TOD@.BE1F<1SM6ID0#F0B$WOG'?\^+3R-2"(R7+ +M6*^LOMG(]1^XES]\4+`5DY-38&M.(DQT$`>8QKW>'DH#&GCW@]5[^SR;S#`U +MJ744'._J23'6E01S[?").@!;_^%80]4FOR8:N^*)@\>/B&Q5F:="!J<`_ZZ4 +MWM5$3&QJZVT&+_\.PX=&!-K8@"FI&65D*M+Q*%._^W!J6WG#6!JNAL`_L1]8 +M^SWA1H.T6=FJY.PUORQ[>[RNKQ/GF1U+VKX1P6<K',X56XH>R5G71H`\84!O +M*;NWA0%]W>!:`FLA];<$1(1&A1@MB`L>1&#@=VGO96[C;[KLY<3Z!$P\%N1D +MBQ3V,R%(5P9EC&8WN&I(IR)VI;#LXH$_0++(UVERZ9'\IM.4G0I.A2%[/9)B +MX:/.KN]AS7K`FGF+9IJXNK87C>?Y<?GT$>$U6;B`;:IN8SL9QY<C[45T\2)& +M5$WL[X]+X)9@E3@IE/K?>W/S!68\&\%O^G$<<DEXKJFWZ9`2*1Z%0V'=*"SC +M&9^>KIW'9EXGB6C>OLMPBPUAH!G2M+:C4!XED#7,\B'7<`!`\]);U]3-&\2- +MFTC,=GVT,)ANZ6"(A.^#"3C:[`_+<+4`<MA"%\O=T)]WWF2O;$[BL43-VS!3 +M?*"E)\%!/QV>8VC'`>-F""3)VQU)NMQ%[P.NLG.H2E8ON+II`;%R2C$1L%'* +M2:;NSLA2Y"_:&8($CL9ZX$JM3V&T&N_OT6N\U+;(09C0<O]E=/U?'H5O])9@ +MWVCUBDSJD36BLM#X7*L0KRT_H+F4WFNLWHVE5P*!-8*-C@,>9&1"[O5KSN/L +M[GN`A'G62I9ZA\!!C.3.(6D<`1I42#$N3B0S>$4I_P#&@Z5'NZF2[,MPQ1LW +M+E,T1M7JJ!ZV/#%GT.0$F2<X@PQ&>R,[4`&V`!F[JJ)807AA'VMEM^2_'&*< +M/#0CI,>E<U&_LMJ4L24`D99`6^G2C&D'4]8;'-7-V*MRXUVRKQ3IX-2C0C': +M!R#&)D79'YJ>:RF5MDZ[VHOBIRN+=C-^C0[==8?3P$5W8PD._H-3@,#=.O@Z +M*1].4A2K&CY>-1W/VW7B7VV981ESW`5_FFH=--1S<!;.PQJ?S2U^R+A-DVT* +M)G$BWVBG>S,3U?1]E?80/@<&`P*$/\OT9$LM;H7]JS\G@:1.\:0<[YJ6?ZB' +M&`7DU0?1\$"']$Q^>65*+B<T@RD1-$,:UMR]Q:5+JQB:N=K#-[]B,]GB\6K9 +MG>=+$=:8,&'JX6GSK!>NJT:-B?O3#ANE#V%')1=F7IUCST(Q,1>;<;/8KJAJ +MM9.;$."V\4ZS<,+4\NA8*P'EG7>0^F\Z$N#23.7R5ZI:.:>IG.P6S$)9X7^L +M0H8%`8W^5'"?\3C?D>L'%<&:LHEE@G`02([CR+\#DX)+2G1_0!#(@=NXD<S; +MNXH%JCO2(3&PTIU6`?Y+^(,$[NXZ1"-G-<JG%C.LI/0I:]<T#I/;:C`L^.P, +MYA^K&78E8E_9X^-O:=(D\V:%%W#NY"7\KI,?[R;Z]%B]:M**AD^2]"N<7`;1 +M:*?-Z3HC`4&*4<YPMO0&V`/PCP>U68U!>C3*3(AY5U>%/PEW(=`[YTZ]CD%N +M_FT2J:KLI0K;C#$INRN:I'-284E8K@`CX\>RGHW.*81=OR\Q/.N@9U*A_3H[ +M?3%<6`ZF[1Q(XG.9=$E;MHS)NX2O+=6F70&7/!!H5;Y^3IE/K=$<ZG##2KEK +M^<&%(4FT%#56W1F^W;H5'F0ZL0Q\%/4[[[8C;O';5NI(\T##.3"3&\X84)>U +MXVET*/1**IO4?5U?W>?@(ZN3)A[/1@NS%KK`055KZ31A>2"Q)A3;L(2VZ+41 +M[,<!:@0'`YUZ(RX]N[K?`V(&&`VGR--Y&%Q20CCE"P_N-?GE6M+^(QG.Q8HV +MTUOFK5HM[4("^1`GA7756/!`S)?;?6?CZ:HAI3.,'MCW$>YB"C^A'_'VYK2W +M_4'IDY>0N"`CR7;!*=+?8"BD^&V9O4BK!<JI=;1HJ(G:.9><>"XP1?NA(H/W +MU^,2./L!1V.\;0.L$N!^9=;PW6G_)/=JK0WG<`J;C`S;E9C@JX`K9/U"!A;? +MS=?=/M-=7*4+#Z!_6(GZ=CJ'"$1%Q8M1@=MQ7[$?,IO[P0*?+S_?/7"3_CQP +MB(U&J[RU>^Q/H(EORB2F^RUZ++]?,\7BO0BR<3N;Q]4-L,T4%=#$L9RF:?37 +M7V<=I9VMTYJB*>18M\;NH0H=B>8[:X%X3)[10)B<;]$4!S?<OB5[Z-J8%.A1 +MZ@\#5!9!/P_.7G+<3]X@2TN)=4]1Q&\D*V=N7<D]WZ<VAZ#&1?4>NG`\_]RJ +MJKH8\<PAY\8(BI0:Z#5Y0+8D"@XY8D,?L7HQKSST)BVO#]4+0,M/APNLU"TR +M\C@:YFO>@:RH8,E22+E<X2R:PHNW[\(G4YZCTYY6A-A`BH27#/_3DN^J^`(U +M)V3B9\062B?S@SL[V!J%L?N[/%L6K!&HIW#6K:#U_P'+^O>?DGL+-9VZX^O8 +M"?0N#CQ7C;\U1IXC1&FV9*6@"T4<2B?'N]'9+S(6_#$^)2W16ZVV.,Y03`XH +MA%E^X9I@X1=$(#FBC/#V!`*",/'^15ULR*K>)S[(#[C(JM)UJ_BY2"NNTWBV +M-.0)PI_A=\@WXK!K!TE;2N8^^LOXF2W+!DQ=/,+AL3O>S$)ITL7BD!?J0F=D +MJ/>.;O9![[\.>+5;J!:9""@U?Y.*F"X87.F-YM57QML%K`AV&KCP\9:IO2"F +M`D\MT6`%(%_I1X]6\G9G/V%)3L2$9^0[ZE+:I1)^7\V5:Q!@?"G/"4*B="0' +MK]-'[*Y#S1T;10/4+21)3B*FL?TGFP*CVO69G"#=JDW^6?Z,>%EI]Y>P$QEL +M^IZF<VCD91(G39KMKX*)#L`D1>EAOJ"'_4<!DUQZMY$L<7O<CAN8XYF=@%"N +MV)U"\?\"&30NZ;K\?DU8%DYZ*W"#-NLU2:;;*.HD=ZNCGBIF9YQ&D,KB/ARG +M1"G1OQL`M,[+`\P`/`^7L1%PH,&9H<"!*D&OU$EHQ,XO3<(0?E6Q1+M;>G[U +MA_C04IK/@9N"I%=B#._\(VKP6+9K<F,,`I6:"CAVJ;4P)?H>,CV)1%V5ASLM +M2O17'K](VCNQOR'167I:=KS04^1F$X)&=U6U!T290",JD@_^$2=5;CKB:%K5 +M!_FCWG.8W4N8&HP64<>9^.%[5Y:;.A+(QD4U$G$!F.$JCI$Q>Y9.#I0S2)_H +MY.;K</)."ZXOQVG^G*X.`DJ$KW*<&6Z^?KIG<BITTY+J"W9A0E=R,:I,>OL] +M%_HO,;?Q@&E`;.\Q>6"_RTR.^_NFI6%ST$H][,*XX3`%ELNRR^LE0]V5C%#5 +M'97CQAW`K3&2XF'^QB=M6PU1%#XAD[VBYL?'R.)PG)I#/>:&SLJV%:Q7RX6- +MK.D8P<4(GI,6_V#+%4U0T1>[.@EC'W0@'85GE.CY*H$^B<RT^B,-VEO6G\@[ +MV.H)/>+'5)!?S0H/\^[`LI!,[ABY][B6?+&\0&Q.L$)94-\F/3204$#&9"JK +M=6!Y!TLOG]B29\BJ==1X04H&1C!4E7N-!$0Y5J-,KL1@G0]">S%'TR;CGD9` +M)J$K6B**V:7D*RH\+\+V_=-0BS)2^<><\6"XNX3&B/AW\(DT,T_#06$D((&2 +M9<LZIREV?XI%4(%O$6:#MV1=FY.1/JRF[4?L;<NS$).\[-SH&[Z10@UU=ZT3 +MCW_WY7'+ZE^(P*?KF45.`+LMN*A0&"Q?"LN>W^K:N>/`O5Y2VI>7GVVN?=&4 +M*]XF;(VE?W9&44>"^SX$A9]6XEU7,A9H3KU[/.)F6?RDW!OXGS+/8H\AJ+#" +M+01-!NNQC7,>7=6)V]/^.)\SY9#YFX\O'(!/U3#ZLJX<:40JD/Y`+9DQC0Z5 +MN%!]]5[H8X@W=+*RWQD]UHMIESO);Q*JDWD_NC3@ZR\]WYRX2$UF%FE6\*08 +M5>HA.RK4X+Q8_W4BE9UDBQ@?SQ^=UBXTBE).$X'.!2YUB"6&?N`[7%I8,%6E +M>:4*'!A7^L7;:)/H+UXM<D/+2?:DY,NY70\C3,V@DTR.!EAA0VWW8J4W.(0R +MJMSQ`U9EE@A_*[#$6C-,<[J`K7NY'$I^8N=?CF%F/%;AV\E%D@JBSU2?3BF0 +M]<%G%&JBG9'&1$P;&*2FE5[#0@A8(D@B3M_--7J8F,LK#=4^Y*4]QL#404+D +M,H8:+@((^6\5/&N[7U6?'>HY-PU0DJQ[AT%(F*M?_1__\Z/X,ACS_N^=K_N5 +M@99"TW98K$+L/]7?M$4>LZ6B<DV93>+Z'>(^;/J!N#;)P-YZ;N4BGY(.%WJB +MA9^\-YJ32K4.//PJ/YP\?]*I\)6N.E7U(;M8J2BZA^(34@46'(M%/67>5^]@ +M@2H$2-4F]AL9S^DEH$HM<-!F%CYZ]!7HHKN''Z\5\4NAGKN']@,J*M+A"RC& +M"M^.IM,+^QBZ*B?_>YG1V]DD&L+_#)EF]>S9"GD6$><#V"FC?MG/AE2D,K,[ +M%,87:I?G3_%:;>"/EOC+/4OXD@!N.<]]3Q,X>I&+Y2*LT\X,19C?#Y[?.H8. +M70S9WR[N#AR?L!AC4?9.$)DH-]"L5I`MD:KEX48I8RF@+Q<:Y1FP23/WV1GH +M,QQD;,KBOVZDDZ\MY-5)KT2"3$HLT!AU`F\CPV9NIA'/#]W/O\:W-E5<&J'0 +M(>_/X]93[\:MV5E?'^1XY6$H=TU+X^1=-W3_WZ@6;\]4C@111`="8#8,MRH_ +M=3K,"M28=\$\3?UI[]&GF)N!E6?Q90`TTZ-EL"O54HDM"0,L68NSL.;@3T#( +MB.(#A`S1$R%P:M)CXZ?UMN`LBM@)T'YUD&&\=_L5Q@,<<+65E4NK=U6+QG0G +M,ZBM:C7PXI?,=U[SE5L@<1D3,,OTPL64ZMY[Q<UKK``HV,GFZ-&_"_I?UQE7 +M[\Z/]6%CA[A<>.H?YI8)=:ZA^9BQ9.P#/MOYO/Z26(1Z7B5;*N.7TLH!BQO2 +M@3IUDUO6`2?)*%%+?/O,UMT>W5BN,.W/GG,[AM9(@F@J"9T9].,Q"DFR<]9@ +M92W"'/#:^-+UQ"?*$_"#JPHYSF@2``6*U]<S!"&O.\><IG%<[EDMXE/%6R#" +MK>$Q-Q]C6N6L[)FX.`XNHLNV1=-A-SZD)#]7>3W?RW7]_M3C;Y^LJ8]+R4)' +M31G1'H>.Q]7^5LH4VUJS@'3@59+OTY__UOD4/V;*>?`5(T!WMRYO6,D9NT5, +M`J">$7SEJ>3IW7LV=S-X(_69N793OF^:^XW95J;E7.*PE0#6_L<HFDSP@N_0 +MAU@CIY<R?TLH:#L+_'ETH^I)ECL_L<L?K4NT`7*&9%=M)MT*\IB"])T5E8@% +MJ%+CB^C5QMPAS+&OY+2VJYW:2@M5CL_G'6=0*[\SSHY[CT)YN$:;?E::'73= +M)EEY;TUN"0`^/X58&&]S7R$34K6[/?W_/\;%Y'>*75\'!G\Q\F4OOAUS.L+E +M((<^0+Y(_-QT`_#4\=#=USM7NJ[-0[%Z3`$*-L4T:CY"O(X&RB;XY^@3".3T +M\0]&_;!UH&1&"U=CRBOH@QF'>+JK\M:2SJI:AQW!EEC4RPX2D'5/E-%<^#GV +M]5??G#K59Q>[(IQ&<,5B:UN%4F$:N(_&Q?*)XHUF$H21W%X1=Y7L4JL(O1". +M?&*[ZJ/GG()(WS:$PO/3?>=[DU?'/;R3NB`8ON]!II>U22.38\8%Y^]5UM`> +M'Y:OJK[Z)2<)`O,VLHL<N82T3ASG#O`J-`+8@D%G.VD1\?FX"^>?*ARE1YJH +M;VUMD_O8P_02P_)J/V!I4@XR=&@%XJ3FPQ%F8[Q2BHK@8$)`(YL?7Y.PBX1, +MV%FD"1'V]:5L$1A=./+"2J<)XCC[@=5G>P1&4*+]]7)+"=-D.'LE"N#+D^;@ +ML\F)U2)W6T`RJBRB0?M[ZJ_7#F,C1]W?__**`^%RBFFV-!1XJCN)@8,4-,`; +MC&T6Y`^C;65%CH-2C9GL<',[ZX2!P2F4*(Q+^<!V(QC9/6%VA92Z879\K`F0 +M+P@R"!KYX:>&,AOI_-Z."M/9\D>6".$3SUM,C<TY@__HI:R-9S!*W3,Z)+6E +MT6K-9C0T,][,_`S0T9%^S:^S+^RPNK]K%\7&20>P"&5D,$)QUBX=+I^*5-A@ +ML@H+H81JYM0E6*]3@RC^LN05Q,Z4.-<N$1C6>/+@@9K.<39?]_@(^N/B8V'W +M?M%V=;P61E9T8HF^!6/S)P^@G+#=H#:[%+6#5/IQ!58TY=NN%7VX_JMIS[IE +MH$6S+&=CO_UUO\/W^=/*KI2%#8C!`=1OJO/[S6S91>57!'6",4/Z0X*[5+\B +M+_""BXS.*`7>,5$]A,;$BCJOJ,>@XZ^L,$G4/WG)K3RR)&T[/")$25BYY6]L +M%_B\K&\H+06TPQ%G^^4+X#6(I%H4PW=Z#O@%;FT;>)[.$F,@QG##8H\=#Y'O +M:0L'7(T3*P%36#)8V/A4.R"SP.'*>/V\K?0DJ9Q__7V[V\F3`JH;90_^N:&W +MEM2TQV^5^ZLC.4^BK="J>%*X#@+Z@ZA^A'W;.ZP3(4GSY;P"@-,1_[BG&J=K +M>>.M$S5,E/3!R\;.^,SCBA"S7YA!4,T0/LF.!`)/5#)6:1;&Q]ELP4X_:LUU +M4WR3<6;Z.,]Y=JSP@K8I:8-?'$SQ3.[=W>^[K>9B2`^OBFO0)K9?]53;DU$W +MNA:"JJ`8DB^9`,J><9?6<A4M3[8L-OKRVMCVI;7GVU*BW$82]I1RHI];:PX< +M&"[3MAK;#>`2`8PW]U\>WM:#E46)7I0#R+7WKJ"Q\["'(>L)J6B_@+Q2R<R: +MF9X!W%6OO\#'X?9.#PL>#@-9;M,9L.Y::+X:N<$AY_['@F'HHEY8RPWBY%0F +M1PO)1F'</*IUAN\/1=WD-Y1JQL%S%BTK__[EAO)W\:@3=-P`U.?K1*XSCC#N +MLG6FQ?N>P5<JA<)LS,YH%]$6&U3%G),T"`F-9$#+C9`<N07TOL*4*59\0OKO +M7,F*)^,00)1"S#UHXH91E6$D5#.?`3?`$^-4?F&TG=L/!95Q;H=!$)#EKWKD +MDE2;Y%K0`C=1A@;%RO*QUC+?Z1R&UJ;Q`U'9_W8.9']:]+++CHYM%2[G[O)S +M<37&AK[B0US+[".I?:Z-O*F\M!O9,_<DY7>#5D&8EQ2VTN$5EG43_XCZC8J^ +MZ@--.2)P,=+`K!FM!X0#T_WCN7=X8GMFRXK[3_RYN#H'<<T8EG=\9C%<%"\_ +M$`53<,^##/ZL$C+\AH%7%!N**!YEBTLK-OXI-*.>/CP6R!K5F(MW%B#9Y;7K +M4HC?/F0:K&YTHW6?L&KE%5#1O,X:>WW!;8/`[GV&%%M#5@^T$R^DD88#G+\D +M$!!I^8]E"[8HW0/9$*56^9%RGBJ#-/QSY<D7A2PY`'BY]^6)AUA-:=#6`"*I +MF50A8E\&$]0?NKII([]N;>S/L6SC!"(7Z6`6V32W?Y`M,;1(5T*X[4(1E4[Q +M.Q0;\#!2W>"\O\G]4B%!!.>.GFG!798B.S<.[.),E8.:1_\@4+):S^*28H@& +MD*T)AK+[M.6J,J3<04*D#Q?][2[L1&YP:$3?A\+(,RO5Y9TO:"8!=L?]1CR- +M/JQ5B1W,'NGGK$EBW+,OJ(%J^AV;5ADJ-NLT=Z;![EC#I0S[QZ1W%@-[N3,X +M^[=1E1P>[?SD8=@*/[O#?>J)^./@QG?3?]SZR&!3UN?[$+9@_ZTU3.[FA?.' +M?O?`0".F2'.2UA3\<%\$*Y7*;JCN./A=2K6)3RT^7;,DS"+/7*5Q\K-9$6;V +M/?G0SWV0CF:\X8F9NG-5U'&;T@DUW=[?7N=8*^!(F^P\=''CB?B,EJ$=*CSQ +M-^A1X\9W!KGQQ?;YGHFQ.63Z#DW038C,+_*).?VJ=4-%AIQ#70@3\FZ39D", +MNJS+1V7@=LF.<.!>H^[#OVSEK#$5GR^Y9S`R.+IXP`/E=;HOEQ^N9N"3MZ"_ +M893-C6;)#]#,@J/]DO9V:"$='4[S.H@7"+<S!V:S0V(C9WX91*AZ.+O!G&"O +M=*O5');]GPA/7RJ_]@#\XKF"6(C:!EF$6UFJ<X3;,VOI1=Z1!;EAB^3(XED( +MYM_9)<4`>!-,Q7<YP3F7S%*G`4IQ?R/$7*?=^OW4*6DW(P8S+'N/>>UEQE+& +M\>G@$TG*<5GH9,<X-E!%@2_M^K#=D0:>A)Z4U>^)VL3Q4)FS@->1?9QV%*R\ +MQ(C[E[8GY_K)"YCOI3'\F:<6I-88GYR#G\4MX&O/K^A*S1&;)U1'62[`V=U< +M/N%QD30XC_SZ816^/_KTG!9F4A-<Y1OE>O.?H<\!`T;RX:Y#=[HN$6"YWBPC +MGS#8%`U&'3Z<N>*_[_9#"@;]\$3-(=PMEWD8T6:S]WFJT-!U$BF;41L2FO=* +M$_:Q'97)D4/DNYWWK/86CEKR"F:T1*1FY%``*P?6Q&]XGEIAI\4E*\38G5^` +M1RG`Y[AN&+>P>!PJ](D882>BPW[T^=YFAG0@YMUKZ7?KG.4(/L(TR?-6P(P] +M"`ZYQO9Y:MPBK$6*+WZM$HU5.(PN_0`I9`L;#$(A2GCKEJ;*JN$K)#IS\>&< +M2R2S&&?S7RGH;K"=U.D^UWI-7"GXAX5J2K@G$\^J*=7Y`==V(]P/>5'?2!R" +MD2#+CO/\@M2GQ#[-$ED?EGS5QTW".L/JON`#X:N^U;GEW3.BZ0W]4)"1698) +M!(\D.P?N2GZ31(;I/6Z.P99;%_R]%L8N'Y+Q*!45#4#".*C\O&D;''ADPURW +M4/2Q<PT7N`^K/0W)6#I(S?$MY<$8Z4@5CF%4C<TVTY\I)=FH3!/I)]#>SF*L +MX`HZC;6C(9;WV0_7!'3U+(=H0;MTOM+X##[!M6(5>Q]8,JO._9G!JX@OI<!Y +M)&:F@(=A:@RE,Q'"\^=)(6%L%#+-K@KV0JGL64K$`('EVF</6Q+W\S#^W=#( +M&XE/EDOTN04)/H9TDFKOI(,/!D>U#&_13'&[O7X8,':OK)=4=_L2BDEQS1]M +M_*WRI7\9MZ7<1Q"!&5#LZ'UP39]@0%M2-#3=JLG`^<Y_R13?]84#K/I/_1'M +MS,6R<W9FE4L222NYP&I+$3D8KT]N%U4*HAOQ_>:Z?0AJ,1APPJN>#DAT=7>^ +M/DM".DCD?"^E[-2,:\)O[X2+(:Y484_0K7MP/BL/EO.[RYUC5T:5'`75/5I, +MKLV0T53+Y_H%(_U5L4"-'?]+#^-+N7\AB39&T#\U0@8?UVQ#O;_IG``G8:9. +M`<MY+\7Q@3R*$>NKXB1-\*S!_CC)T[9TK/`"61B$MKAB?,FA>`2YYVS(T/!E +M>YP`WXRQ;Q8DS1FGYZ>RKI[!<+H7PYM)IW]?SUH-48?>&U]+8!?N2J<6+E2; +M&Y2(V/LAEXM&6"?QXGE?E27EJEG?U2C^O38-?RUAX7H"<95<%H9%W/&>,W]K +M24\[9`2?95[G"J&UW.9_\OH!/W4I4I&AZ][4QX3`R0_SG4)+;]%JC+,X):.S +MEW*2<KUD#(.IYSBY)F:4#]=6?+C%B1`#N%%@`DJ[&@I*\K%VZ"D`>%,IV&X+ +M'SJJR26Y<+/?70W]?;`EOL^D_]9MHS!J1IQ1*]U#T.H2+3#?K-AE%!L+PLL& +M:=M&'T>>&_1<[Q6`RH/*6VAS6FZG8YHT?Z'^X/PB>7H#YI$-;07Q.E)Y'M[+ +MVYV/"U,SOG9;*L#86>U>`1O(RT^#+(!>P=CMFO7W1RNN$!<N")U)@G10>\!\ +M\G>N)8:X2>C57,V@B]4VX7%0RN!5.G;13T&2G(5[UGVW]@P,6SOS1DPW,RBT +MD8D.)<-@)L9;@QC3$GA)K%L<5&UOXRBX]U)LBN5W,5-*\D:WH8DK[N1R`FSO +MH;:>-=)$\K:E!/:Z?^=CV#[)O&M$M=9Y_C'+YL!>C<!9_Q_%[*A8S"\:4>9_ +M_1PQ7\_7C>V3&$$!QZ=@Z_*,$RA.A)6WY#[=3W9`L8?BN*#+A'.NE!H'U!F4 +MK66XD[.(Z8VC`$\T^BQW,F:7RU!_E);\!.]Z=ZY@D=WM6[]UY2M4/L%YK$WW +M_HV8PQ:\,0Q]QH:2O&L'5[G$E#4X7R.(W3K!'-W=UZ*#S[F*Q)F']&,(OJ"H +M[ST;GDFUADK`Q&!^4X9HE79AH.'AN%:GG4MX.O"3%SS%`L">;I`(+_:]CA0; +M#V8""B+1MOKGR$M$O%=-Z].Z=#2MET`9OSCI'U'9;,,>.H;DO^Z(OS5S?'$- +M&/=[&X=)AXL?1K.`X;&Y$<P9";FY__#:K5]EDA9O'VW]7!&3*GOJ!*W:"]DC +M!KTB34E51]XD6EG64'9!U3.R]^.VP;U%GCOW^H<]U7"-5OFF-:6)@O6'9:;% +M&Q4(V3%FNJ+.P(Q2/;052^-N7%]Y-TSMU9,H_![%0]+,E*ZL4QA]Q,CN/3^T +M5O[_=:-6:1LR>7-FM[VN6&ETA'8:PAA&R=9DE>IKTXT6NH;RV98>O/"0`@QA +M=3JC(D@I?!S,9J,.[-Z>R^)U+IHM=R7HK`0E/Y1IK-=&,%2KWFP4J+[>=@\4 +MU];.VJALJ&2^*0E@6_`=T@'_T.(,4V-Z-@C58S_)&83:VFQ]B;#P,(HU<)-I +M"E1W3GLX^%T8>EXR2X>3#0=3SI@_6:;6/@5]%U0I[J]OW*FW"^CO,5`<P`4) +MN9!=]APQ1Q24'KG5J`_A+@#0%7&^2VO;*7]>V78TH&#-$OZ+Y0VFG"Q</4^P +MX:Z)AJJ$+=GX6:D?DFM86=HNL^&*$T<2J!60$7.0++K(P-N353@-#[%MDA:M +MV5O>WFLC?3$L+]XU70C?"AKP>CG2C>%4T_`R6Z\!^/36L#[[B`^_;M=NX$<? +M.^<DW7B?E8GZVHY=0N=U>I[`%X"4;0M-%C-HGO!^:9I]2=X.Z3E$[N&">0LZ +M:PJ-@NF2*,!O5:+E.JI(SN[`TX*_,WE.CW9X;2Y\@_6(QM'B84SG07Y=?E/, +M[T)=">*-\<I)EV[$XYY2N_+^(9CNL#G_9"Q;:=<>1+C-=`'KJKP_2QHPT'>% +MV+B3`\M(0Z<\9`<I'FH#%3NU_9[Z(%G'AG&%^(NE*X`%Z=6!KB-^I3CPMC>L +M8;C%<]@+(=_^`\?6HL)N:"BSH'L:).0<K(TX6L7WFV^*;-<^6LN]1-J+M+/" +MI,XS@"":?TOI2V=$8'\9_-?MOF&U>^&KI%KA!#<D_(0;H:)/54%&(AJ-LV$Y +M;'=5<B[EQLW]:]3AL]`K4E%-MWF"\>@$FP[^F$AH(U%^_2JB>H1^V`</><Q3 +MJ-I/8<(ZU"30](CUC3F%]IL3M?;5R06F2'6NA)6KR,%_4ESK'B_M._YD(%E[ +MF^;6RK:'3/*VS3CGL<C**K*&R7@X;F(-ASQ`?6@9LMAD@5(((Y<6[.X3IC1< +MUW,W,B3^AOOU<W1INXW9+?F/+-8!2K"HM+,X+;I3E]FTDO@5@WP>7$]X$9CA +M"^?/K2R[EZ:;('!0O/]/)<D6&"MAQRJ[U;90B.5&Z@$)N2(6'BJ!!`^0B'5[ +MF^CIX7NAVAS)?<D4KAS\OU<8,S#S?;923`G4#C)9GA5F7X%\J`6^@S$3/N6# +MG/>L93Z3<!OL),X>PL!W(#EB9#\-&5=$])<$MMTTI%]Z"$/H<139'L=E]C_S +MXE6/VSYLV"#)0RJL>H>VGR2['WH*P",JC6D("PI(^>T27@D"*B`GYB(R"\OY +M.HOV^ZMR_@CQ_X"6TJG@5*!0U;&6^#"=]/UIU((6@N.\2OZ0_Q0(Q1!6@&7S +MZHLE^T_09?%6?1]>N%*C"#,".:L,5HG%T<]'/!_EB[("7"=]:Q*C'<+SV1,I +MVTB7,('?_R+2VNNMF"AYH"8R(-]I-:-N!O%3QO$%!^9/%H-Y*-H_SYJ1>PC' +M:+ZRM^PM70J5OS#W<BU??_CO@1R#FB#/^;**U;:+R`-`0+0RK^HOQ9G:*01X +M]KK4$1^ZD@5!U"`_)BMI99FA!#39Z^AC&U#B""D_3BU=<5-J*P7&U^S\.78Y +MS,S-6SXJ0\I,)SYWU[-8<KO?BJ^L)28(W'1[H_!WOLF@*>T=,!HN6?@.%J!` +M(:%3AM6G"J6K<G\QB7H466Z@1"*_?Y'-0T)XJ.`;24#R[SN=EF['311+2;^[ +M".I,C5D54UZ(5ZYC"TYM@:.2MTQUM&M8TE]MV5%)5HK*`=/"O%88J@=,6*@^ +MKR2E_01#,1FJ]ZO'$4SM(O!V;]TWD;%8##DL"N^Z3=V?$>-2S1Q@&8U;.I)% +M)_>%IK/T2_JR-1WKW3\YO?.;?""'8MZ%&*EX0OO)K6WW62:X\GQ$CS$E.S-I +M/"<W'`\-S>CBT(_\(E8J<8;=M3W`T=OT1^@X(I`(PW`=1;4'+021KOOV4P[# +MNEGT0$?E+E)V>^:U6"6#0E(XBRG^K#2?P(LRJA[XGGMNIJ)63Q`P5`UF](D` +M)%9</$\[:0^*W2W-#2%$G_8_C8W!K1_(AFT]/>L=`->.G,PT*G(?&?^)4_): +MY$=)7`!0H5R?PA?+N'<Y]@AM(4TFYU/<1S7&K68V0@OW6_Z,&!L)\+T!'LU< +MU'.K_#]0^7GK^+0M8^PQWP$"#)!=!"EO2D.G3/WM?<:[^<E\O)^1#25QWC`9 +M";RRA=^5&FR%-JG63O:A]Y7HJBK_L3-1WY_Z.\+..[FX.G15!B%7)2C"M^'_ +M7RWY=Z&%MX)/DB`>35G5^RL,]B\1@TMT]+9HSK2S=Q45[P,AB:\E.=,=<E]( +MPO`"*PS<C#MJKD3JABE6P:SZ*6&\Y]8>N"@&#_"1)+'(S_Q4OHT8ANDO+-]V +M,U!++H*9T,?JQ;*JZ"HJ-8^TWNE_#6*9],U[H&HP<?80F2NDO)NT!/C]Y<1" +M(DOR_]"/DE;0W)\DY+F$/2,PP.S<<18P#P&UHY-U&&WO`0M;)0*X939F5[!N +M0_SF86GXQ@\D##8:=_J\Z(&K-_QM0"&N`/!&KX:-V`!PSXJ\=V*CX,9FXQ0^ +M`2_5MHUB#LE5/(VR>E72LFBB-9K0H[M--$/M)*='92<`Z_BHUSFW8H&F6:.* +M;-K#"Y6KP$2^XGO\PW"#F`^!_<F3'`JT.Y/Z;RZ`VZC;TU(YK,6UM0L?IIIB +M)8-UL=EX7VB\]7+\'S38P4F_[)"D83C])!DUXA!@^_KA^Y73#H5V-7X;W[ZP +M)5^J9`^A`3T%J+1JZ[B"/3//2JYIFUB[V:D&N[2>QGBO]T>QL9WJ[08IOI@= +M&8#."@-ML?M[G''RZDS$RT"H5ZBO#/]O](Q?&/-83H!H0J?=UZ7HQ+6'0554 +MWUN5B>UUWMEH0/%;;F:V0IPI'"U`G);R.QN\I')G>;(R=0,GKEZ^-@,"/8%P +M+9J$3I#]?[@@[A'X/:94/!9M#"!/2JF4;@=44I4/`Z\\JQ'J5&RMD*]%%!R8 +M4V-(*8.COF$[[V&\UY#9`Y>E$PU/,ME*,=,*QZ35E#$&9JPZF>BF,,723&0$ +M;"$?^W;M>44=#;#`8'-N,/%!BS!=<D,>T4Z-Y_1>7-)'W+%V@37('\FS0]/\ +MA[FH"'#B%H92>-'LR=V11WJ$.:7;)\4"UW*TK2-`QY$=!<E)`7=.%#;(5'NA +M/M;@W['VP^2E,25'V+J"R9DXXW/40KE7A'.2H!N^AX1,TYO!6&*M?%<QB',_ +M]Z).*1Y1PO.I`?ZX:'-._ZSN*'\R0P7_=&2-=@G`[$/8Z*0G=9S@(Z=^8;Z@ +M:_`%H2(_E%9#_#$'8OUOU:L?6'8<*^^8^_4_X-R2#\-Q!"5Q1YM]473+<-`` +M%].;Q<G<$3=`'"H"^)Q3M_X4$367$FV7)/6EDHWM"*6LS:F$C-QI4&EY+6L[ +MW7_T0E)N!A+61XSN._.FTDD!#A.P;C!\)EM:PS;SINDE!]FEF]L3@W)%FQ-P +M@&I]6M^]MB(DWOR;U;H(%.E7%\".H(;E%O`\]A]J91VF[QATZ]G-5!)PX<7U +MG$3!E90!&%#Z5A*3.B-/UDOV+PIOSL>)M6(1UN_C`\'PZU^D[UN_VE6[[4Z# +M:X88KUR`6;`7>Q4<+-UP/Z6J'NBC"FP.+@F7#/^U^HC^/N]]'1PM+TZP#4:X +M//W"+SC`[F&'LZ/$Z7HJA2.8*+XR':0%Z/"[GFQ2,P<P5[.?EH)A%9`\)PL3 +M?M_/L;0.S((;T%#-L-OMRM\V;%/Q=R00/):A@N?2TP2-E'V38MN,82`UDZKG +MXM>_WTD7KHR,,#C<^\QK*J)<%]2]CP$.(X]V]UP2BK7"ANC\B$$@_"R/,S-! +M]VYQ9*,-O.C%\W'8:ABY)-TH$^.RH`)JU)S?3N6%U/`([:BP(./FU&Q;&IY/ +M[NENEJM8:M#$5IKD27+!+2\L@5A8'+)&#L1`_+$%VV[,EEN\P$_`K@"36+_H +MU:*O<>HG,.N&[C+AMTU'H\<GS8J^0I5N("(*A#?9^08D[/N`=54-U^5YMHZU +MEC!YLV]V_"!:+'M18"H7/D&$G!AI:W>W0Y?B]A"?8B,R7T^5<\R:-\66F^MJ +M*&H!Y8$"G>3"4-,:L;02)!-S2D9=CX5Q[RM,)N?CN3^BU.H3.+2JR)].YO+, +M+(/'NJMU1-?I9JE=B8`*?&IXNM,72PNT)>#/Z,;E:#3WT$Z6:=Z`J!_I?/(0 +M]9V@XLM<.E^8+3=4('ACEK!U'M%F^0GYS-6*'9W5F:$N#H=NW`$2]DA04LQI +M;8,8K4)L<.0ZG^H-*TH,5<G^5:>##\=]&P+!.B8X0Z-_XQ7.#?UI47(9C,%[ +MA+LF\K7_>B*<10HTQFCWDKN_BF3]RG%`AB[#(;#P;\'T/D.&M]3*,GI<0K*' +MB$]L6836;+`<1JZ$3A904*`#QN\7HZ>>"ZQJ2<&J"14&1?V\0&Y1/<Q`XP@4 +MP/@U.3^&F?_;1MWZ!>?*+H)C2:=HS/]=VBI)6G',<A!;OS-1%[)[E3X"W+UJ +M?`^CB*<<Z!BKH5?0/Y\8H>62&9/J96J^7D"0_J)^V%G7HR?9Z5Q$WO0%@<#- +M#E&^L2^`K+C8<,*3=(0,:/4?)&>\^:ZG1H)=5UT?LR.K(XW>`Q"9S<!A=7@% +M%)(6$FT`]EL4>O3<QI>:3A;_#IRLW0D[*VQNIHF,K@8S)_$0%!0)3$XQ2Y>B +M-E6(F1288-F3U#`&4=V\,30$&N0?35Y$'7XMFR*V%$Z<^;ES=.](2SN<X[8^ +M#E&I5A?C2OL1(8ID*Y+ZP];=HQWGSR7<+`3]Z/&GF_L5E^D>P@:($AQXCO.& +M!/_TW>2K.([#,<7]+E!`@T2*EL>ZJQ>A!8I4:5_:24IT+82Z32-9RD)+<H31 +M/%J!DK:M`ZX$@:Y4+B`6D$93(#&F.JJ[[1/DFO8=5S5(HLF3[B+0K92'92)* +MD9H^LH/ZH`KZ.1"Q*^P1I9RZQ5]K2#-%:24WTI3^^\NE;Y;F^-3SEWQ20GR; +MGUNPR%]1BX\PVG-N<0Z4<;/2CC[./$!YET_V_:&L9"P"&3>V_*7J4>.JMV*S +ME/)LA7JD,L=.`F:FGZKDM<^H.&Z1'1;(S3616<G9GKW/M&Z8'`)X85`=S/J+ +M:Q_3E+&8*]#<JH)ZX%^+:?V='59S&LHTS\@;>7MA!/L1J&#;<QM4OKSOMAXR +M^E9)9`MI=JDCT>PK$Y<J@?MU*%"3WK>=(J9K;5<B[.$U?$.Q+^#SW-XW,LLV +MFF2GD*N,JST,?4LC@6?DVO7\>P>9<%X>5)3%^&<J*9$:AN5"1J0C)G=6U5=3 +M8Z"<=2BVM9W:,OZF8G#8)LC\UBI[$V>+*,J"QDQ[!M'.K:PGF(/BPCA6D&@5 +M.0X;[[W)LU4GR#E:NW),0V`,7+\('H0I+Q:1BKI+0M8R,V';Y$C@B'?O;8Y: +M4UB%1821K].,>&+RUGQ9_8`"U4=OU)DJ@!Y,T,M[%1NDF30=6]I6[.PD/CDK +M^WD%9VB&&SLGV;J""W<OW>@"Y\L``:;^+]FS!<H!NGE9%_)X=IM+1%U:]NF. +MPWM[U4=N&QYPTU@5,`0B@J[O;?`72V3-Y.D34P2(S;>0ZD'H%S>2H>T%5CV4 +M!]XT@6VRLT)4^L`PP(-T(ZL.K(CB^7*@ZD[PXK#^-OP$R?G?S8@)`WGOFU11 +M^7$8M$?JI73Z(5R`H]AKKY[#C,%'M$1([I_5,;,A2<2S]P5^-<-(HY2OBQ)X +MN!IXN-\2:;:UT\,@.?-N)QP$-(Y9AUNQMCA\^:29>;:!W=><J19^*,@Y49[L +M5\_">$]NH3!)>TT/##T3_JZ"+E$1/P_6_O0=HX-630/XY='P%"(&`14J6AF% +MGK:%PSOT^QT7?-$)8I88]]3V6&IU3TS(VGL6X]>+=+\)'JH6#_0/RR&G#HW* +M:1-/(ERM'C_V0YME76ID,2@>_$>U\7]!V(#Z*21E_!JIM5Y0!3_,<\BK@**" +M*Q'"KZ:=FQ_O596<>8Q_QO0ZBBH5AU#9XT%34^)NC=2(]Y["AL_5._XH!I(7 +M4P)$)4KMHMCXTR;^.\21,"3A``=H(`>SNQOJV\S)_:G+LV/5E?B1T7^4BE;% +M>C7)_2'K]7)&P^S(9A+#IQ.$'!S_>B*#QJZM+CK"'*GISW:B"NCIA2.^Q38> +M?B=P29WVJA[8:/Q1PV\5++3[O3EY`&[J8F484]9A_%0<:BN^AD``Y/BOZ)TN +M:FD7UH?]7(D1"7*'3O-9T3R4YU*C_TGR"474I!25GUBCWFG-H<2C*4#_LBWD +MS+%M$YV,GK<??F^B/.?:QQXDE91GT8`PU4SCT!KI6>&N/_"-G-0]J1U:"PC^ +M#;O:VTO1FV;_I`FCD[[Y)OS.I&]_=^!VZ?REC3[<?8M`*F"K*$!L#3O6T]'? +MH&STD6WMZO\SV.Y8ZT_/]XM,PCW<BTX3(L,A^P[1N0'19G\H#(I8?O?)>V:! +MS(?3=VBJJ.#VA]ZZM&W-@-&M],EK-!/Q<<,O>;]+JCQJM?XM`,#AAEKN/U=B +M?P)M"YM,-/)*_J\J`-#9</*9]8T>*(2@3^ENI\>4&GGD;M=6K<Y3?W/@./77 +M[2&2R=24XE39`MPA!W;\UXC<E[CN+J\6TT0OVDX3,"0^8+G`WO55=O?W"ZZ1 +MK'+=NR1DE=I*;1@S%0)5^O6SVRO5$&.F:01]'D_T)!:RK_"_*D2LX`<D='C. +M,18WY7<N"S7@B)ZEY)+>T>?%CS6F^QRO[H>%@P\+4&46&0+GV#:\$.5Y]-M] +M1NPI!Y=_J0IE(IFOR2R5F%N]-(L.O4:I.[A[XBI$?ROV(2(2<Z)V-!?IQIZ; +MOSNN3,?+;.>A@U=[V"W>,<I%_&42J2%E1H#;6J6TA7X'J=VFKM$QAY)&)9QO +MMMD(X.$Q<`5,:>JS&^DG,$>\1.;>5!O.7-[5>J.W%!MW,MLVVW!Q-W4?;%3! +MFKEDZ^Z/-7M3U92D?Q,6R#,7&?):7@U.$\?L?N'D95*#>9;5Z>?3\S3M[IP< +M[CIW>H#J>R1THZ"#DZ4BD[RXRZ&`'=)>I''3H'&>)J/V38ZO@![E`#Y\Q3`/ +M8?&""YQ-W\_WVA\/2,N;"EWZ%@+M.E="/^4@MA-A-]:S[^\51_=W(RIF$U'` +MP:;_IEF!'9@DD,I=DQ:12)\IW+'DEQVS-U^<L?(_(.JT7Z$UZ"S\K.7W=T3R +MM)P=P]Z]J,,+0!RE[[P"N]V]L1^@^W6=<WHDX:;2$U[E]1P^:\_8?6'+X3@A +M;RG9C%<!C.=[;4"+CD20^8#:@R#9R&XBH*P!3\V-_J;Z38):7%XJ7R]\-DY" +M"&>I2,^S(9_&?,#<'!AX/1:MHTZ4-A[!BQ#'[ZJ!#:^FN68I0W$'?6%7;4-M +M#70$[1>M(GH1H#@5!7(T0K9:YR+!;YXB1L7U@`]#_FJ#VSQ4V(B;P<:;_B6S +M;IFS`IDW["P<L.Z`R6(R$+(Y3]LY6]YIEFNA#0U?L<2LD1AW=@H4_PZ.(.#) +MOAP$S=?G.(YTU:\>$/!,NT=.O::E"FD5FDR#1M!COT:P<+$*+++QTB'G7GD6 +M'U/%Y(GDVS!W$UR?SNNW1;IU>(5Q4A/$4Y9+D%]R&1"%>SI^BUVQ'#&BH$OV +M@!6C/V%_4Y2%8'Z?8"Q^V[''!73%ZYP8!!#A%KX:FC3=U,N=0OCW6*3N2;QQ +M4)#N;%C(S]$H;FH;,HC2/G]@5#D9\7->!N7:A_))IT=0L?Z@0XC"HK!\G$A\ +M[FC637[>>58'-D._P'<9L[GJ5Y34J8(:97FOU4KBO=CT;[R<_)N_WMBIUP'D +MGRSZ-T5J1G,452*$1S@NN-&"E'P2@DU-07L]^4;&QQTXT$<'D:`92N*,A+Q: +MB-P_[$4?_4M1Z[<BC,^/?J:$OOKN?Y0C3JK;AS7"R9M:P/)8DX!M6KM2/HQ3 +MW\M.!-U?P@<"P4?B^B@/>6=V:B@4BTZ(-7$GJYB/N%ODV!]A(DH0N-?Z^Q`' +M^:BWL!F5^%+,5.F]UYF,4#>SC:AVZBS>:>^1*.(PL-ET61GNOW<N67>R`H-^ +M`Q/,0R,.J;;QWY>DE`G#L+X_6>7:@1RGWF]W>X7H4`MM03?Z`,R*D7;`Z?]+ +M0K-:&@0",>!&%J@6`K1*:FGIL6ND?W9(DD81DFJ$4,^Y^$]G]!-@``.68[C2 +M3JR_J\46;T@HESTBCMI2'V7=D(=,RQN&M?.VF'<!`S$M3N3,-@2_;M5#?<E\ +MF!ZSMU^`L-_]`[$[C;50"/.$=L1!ELKN:+U9ROTC1IU3/[S9/ZCO,+.-/KQQ +M.?"\P;E$*?M+16>!SZNJIQ+\+IYNB>KU+RXC,EM0&+MH-,[7AN!\QRY[F3`& +M5SGHPE_\Q^HI%"8<DKO?H\C>$/O`Z?UY=VA*<;&S=4BW!/HN1=%\D]!A-:,< +M9=\G85>,1)XZD)A!;?2U-PJA"KHOXJM_5$]!NA+5_LM1TL`OXQ,4=\^)PZNS +M^4?X*D9;9.UK8FE*Y538!$LA#;36>4*/U1;YI.WOF84XM5_IC,7/[_[X)QN% +MA%*EQB(9?&..T$_@NU@@4K+/\,?2-(IQ[OKO]UQA#8(6B(D/C$<.DC\5.J/F +M4!O<Q9,MP+4V1^$#(HL.SI>\=XH3;GOM7Q].;JU<F9^X)*R%V[VN^UFBL*!( +MWUGU>D+$(2-43PHUAXP]+&`)HZMW=QG]_7[ZS]/-\S=QF_>9F:1EFN3L')0J +M;>_0;P(\\#,T0_,]/=A$DHAJ=GISK1OW(^73E1=S'5:0*\[C/\N%.4".?4,( +MI^!<2\5=U;P$;[;$6B#".KFP9G]$+X[7O[7#Z[4PCLB!5'U[-^\'E:5\U_5^ +M0632ALPGQ5PVSM+WZ3[_69-452)P_K7#<_/MC6S`Q<?@CG;YY'RD^`+7_WO> +M,4NS_9DGRY=WD."2JJM4GEG.*8-?NRW3M).P9M(2I)"M&$BP9T+M"-BZF>A. +MQ!'4;:'6T?R^PA'V#<3TRP,_*\7XII^\7+Z/-;#]M$%Y^(L%LE`Q-\).1?RV +MIHX7U7ZFM])29'!CM:(IL'%-AO9/5FQ`H:<+QAE]MDP*Z4$5<RM@KR8HU#/- +ME_UM1>^#E\QB5G)J@E$A@>L<8N+7>]<#MH"?2S5F.PB?BT8GR]1E;5"B1^1' +MJA7,R!^!FK$J>5L[V4.6`9X_E^-/WAK%`/H4[G][)W'J%ZZ7.LLI7$=W2GQ9 +MX5A!&HGISC'`W`9'WQ86ZMJN#-5?H(XKC\MCBY_9?_P`3RXXXU*6NK@N)38S +M_SRV1QI.YU(J59V?R^P\^.$Y?'G_NM),AT\EUD(X-)86&GW/=%5YO=-=_<\P +M_RQP:HEQ:UY\%+A4(41(ZTB5@/H3K#99;T;HKK^'SXA<%"\^N;")W`>>1*1L +M,YB")RF]XW-H2^%@_A"&V_870#:R(=R'TOG!W.U3=/T/>VR94)_54B-X0_., +MTH.*9)_J`<-E#CJC2B8_&!.MQNI)\H,S5!A9=,J'E:U2QI@*JF_!8&FB@YPJ +M6"OPH*2/(IH.8E:*XA80SO?5O\1-('`/DWI2U<44P+#[BDXJ5=YIZOZ#**KE +M^T6'OX!%/:7VXX.N\VY&'44$-I[[935J-C4E=ZEW[^@*D2^J(Q)?M!`]WB)( +MDL^/8QUH%6T)ILON24OFL?X)EGZ'.E67.L.99_;,-:#'`\K4$RF:#HPJ0F*` +MV6#N]TV\\3QS@FQP'.#<JSWN`]T3GQ_A]]PWM+UC_JE.FU]-)6V/OIWLKX)_ +MT5]J!AXB05T$0+#%HY288\//6TLFNY*XS.9X:=9#FPYUDV&J%6R:"WN:0824 +M<R>^9GHI7FVKQ!%%Z.,KUH%R*I_B8/ML5IP7$QNZBJ%V@>>VS=5`&G#XO1O$ +MYF0%:^'F!L-]RZ#&"9HP=B3-P*^=9HWZLYB9#JJ]Q>=G/Y4=F0OGRLR4;!#4 +M?;K)X!W1`9--EJJ=#EV)_B$[5^L<'L61A1(E!.Y`++_)]8"=\*869A-1ML/" +MQ)-^[0=:FDM/1@:DS/<+V@B0$W:C^E!H(*-<^'X,:K9T>O/[YE6AM`\SZ1'- +M4.M62VC$#$Y%<4\ET'%AXWJ[;240FOPP$4QH4QB*^S:MXREMB.+YON8CHTTA +M(EU&A0^UE%QN9@B[[D<]$Z@$0*Y]F<.&X^XI`?@CJV*S168U%")+W&GC+.M3 +MG9AYO:@5>XC\]0F[`F[".ZBH`CLDGF3W1P,T.$!^QR57F_LS\`%QC6HN1^9A +M*5R/CRVR..!L7,(WPB;233<4KG=IY+N=4^Y1;M*V@!H&V_XD%74A*R"<.+;5 +M;1-J'$R5I7F0'9!#CSAW5ON,3)@!(GX`+H\W%9N0(O2$IE0U9<T/QQJB&:Y0 +M_J+[="?VY.'/1E#'557K<AE1*9*\*`S(`/R(<?+K:UN?IGDY-4FIV&E\#%=! +M3S^[M,'[Y$2WJKTYTWW,R_VM?YAHDYPL_A1^D@`[>]FOL(9'$3)?ZQE(`'0A +M,3T6(OW"-'Y8/6VF+7DXF4W9>]Q8E;*KV/0+J=`DCM"JB@+JW*-)WC1-8OJK +MXIVM4,&>R@+Y`?069AN+?_T69_/:9"7/>7H?"[Z+25%&3OBP%8@=EM##Q0JE +MH_&=/[%'W?QF!^!U3!;GD58G7=GG+/1<`JUTF-*;WXUV0/KE3_F*(OA>K@[N +MZ[CC4?5\!9\8TNV&P2+[S8A802E.>TNNKXL"6H\AH$3H(L^H;<I0(2-QV-J\ +MYZ\:]\.IHZ-2'J_!R_6I/F?_L`C)P-&N/#FHV1V&L@)&_MJ0QF%_2#2=EJ<" +M5%3`'F,4.-HS]1NC3P7UCB`8MG9#E<=/)KR\HUYT:C/K>>6)HKJW`I>>H(OF +M[0:]\40#L*Q.HN>?";;@?=G?RRR^1=A$60A%3/T7M\K\B!S&>PJQ5^`<^G.H +MANZSE?6,?!V_B"9R)ET^.2V&ZH\&'QVR):-K]+_U&'4/OR^$MOW[C$>KO@G, +M5D*HT%&677]^1>$ECH1]K0T"-(^V5I6BBX(S[DF\8J'JUL\HI?BX@/-1LL0" +M.`ZZIK(FI-CDU7;E2]]>H%A)K[G'+84=I)-%YO^=O/)G/XF`-K-P;_$`^6#R +M$7'T"FCN9LL?)^V)./L(FL>+5^1`'X6`7=J-1*>R$XICS\0=:@8Z_@KU6DS@ +M627U5HANIF*2F(QY".P2<_V*B3HD=.5H->K3GP/;=?TDX*%RL;F_9B^:`3A/ +M"SL9^&X_RN=80=U=;]!=\&ZM@?Z>J@0%'[JV%+(+P>Q2_&F3.;O4JG^5BZ!: +M[?B,/"G%>;HKU+QLFTC>;-!)*F217Q&A1#4OO'QI1M2N#">1!\H7D"=80._. +M%R*<;,L^XEK*7[)#@H)*'SP90H54V-J5C0^&:GF[X+AZXNB#\U[`%X;C;E=; +MNLN;,)BY#$-[#JV8C1!XM,_:VV%D,UZIVP+KW&R0):_YV5#K4%>RHT80:!CV +MIO5Z!@4VHL>^BVG5BPAE+OU.\<1U@+3'8=P#US)2S87L.#2P/.G^S1@U&76$ +M9>O6$H2WQW&9F>&(UL&-@">&F`V.R^AO;\CDS?IT\ZI(.9MI.+K@NZ.H)T74 +M98=UYTS0UE&S@7J7HKCJQ-]90C9>&?9<$\$''+-OSG9U9&25-QROY<ZSBE9< +MS`!58-O?`"5#@8T%EL>H40@9)HQC2)VF]/%G:I_V1D,!"`+R2D4_Y%HNVE:K +M2>Q_C)5(N%'*G_+HRI77W^B'M@G31EH3!TA#\NTYO7SS&W4<]04'.F<*X4OH +ML/,Y?SH7N!&6/%\*ORC3'3N6Q"U<LHE?Y^,9+PR0Y)NR`:"#]3Z_D%.>PGMW +MXSYX?1@R=JO(-WZX##N&8#G$U@MS,!/^/]<6!E*.A8B7_,FR48"S%8=@#_VX +ML^;$>9R>5NOI+EP_OY"<1[/29#P]"#U[\94U>\)L_'LZB"NUQ60#%L;%T^AZ +MA"A-%+J?X+3GBF/T2---^/-T+,`%Z:L3<EQ'NLG9&&)O<KIF`6/$A*'L8"0( +M\<+\8$6!9B06L*4"NTU1%Y#(V/QEQ]_'PT&AM4+>931@P)C5Z/!W+T;@-B*O +MF12%@J."HQ(]_+D/&KN:/\2`>CEN/0^T`^9O"DG(8+D9%9K&.M_7L$[GUX6: +M='$[].JP85;R:(@G/Q(P6W#A(FH"4QQ+'TRBE-2O(0$P5M-JO@>)OE7?F\PH +M%B(TB!&BDL.;<$6O<P<A.13Z4N5V%%KOZP%AW]$^>/EY,($Y)OW=?ZF(R+2; +M+:GY_.9`@!TB4/"8&*5;XH8Z4<E$H;F!=N$,^WPE/-/+N;/,#*9+-GJRGL4( +M-&V&UNQ9\I0X)[!;WW#<RN/I#R;S\^!<\WL3<&&5J''E#^A.H8HMN%>V78"V +MR,L9RF.?_DW"9+PS4V/U(%?0>`#X,HI\52VDP14S<22$7K'_2AB%WH6J>*/( +M*J(NZ+V?V\GTLBG>H8R,NN0^_P>;!6/:_Y.:+;#[$>WY9QMON.*<7O!_2C>W +ML+*D`,H4EF,19RMH?O4'NH&G)#0+[&J-RQEKDJ<F/<;LO>]QFQ:&;CMVZ6I! +M`V5()ZF%)64-MT6J-,)TA=](MCCCAO"DM43[(HVQG;::ZH)L4=877E]#"81S +M8U/9?9I`70"(?"R\G!+W#2\AM'`\R2&W:^!%>4_:?4\%3XUW\YPKQ1O3!-1Y +M/>(0?M=.S+^197Z(X&A;)3H(2%KDL>)AG]SA;V<F(Z!&4`YA/(E0O:6T;"_' +MD4@YU)B)O$X5/6GI!V[6T3FMHXEJ%Q7UHX>Z@QI9G8OP*K_.\L.0V@P$!_>\ +M0XF2G1DA-3F:^&PA8;MROQ+CK^$+RBKNL`ED/M)B/A]"Y#\,Q"B0SAM%ML'0 +M\+16"SHUL/6</IBLC^2WIL21CN<GC3X?\A0]]8;5U!C]]T3:#4OZD@[X)J+8 +M;(`<=1#XGORBXGXS[JBB]+Y1GKJV1YIV^I[VOAE[?Z3?'?%:!4",XX_HT_VS +MG\P3QZ>>E$3@EQ,RXD?3YZ((33_3,MA_=5><QD#L%.DYK`.PPW(T&F5;9W6= +MN+\F%OF*)9O-61^"-C@IT]>X^Z.XHCS-W[!^&ZKKT[C<A>O30W>ZR`=EJK7Z +MKAGS>$(M*2ZH.,IE6WU5,R&?18]J/^SY1<(V;E[-,FOON9`@9K=!L(C^XD5S +M!`@Q=MI3YY@A1WY,-DUTIEU0T(,P<]@!_/<N9^_F@@I<K;UR6D:C#%JVN*I6 +MO_-:/)S>;.)`#?-?.Z;?>76!T"ZSWTEM0L!>R,XEZ]FQ;E-N?HXMR:,9<@3_ +MJ;OIO4:3V=]D2@)AK`84\:Q@+C[/"X*T%=<_&L^9#@?3\-#2,.Q6'`2T_$RE +M!.+KM6@2+B>N5RNT77I76>Q#WA>&.8F]FO]W00*]UM#2E6GVP%RT:;IJ^Z,P +M"=3N16=16]%?'!L[6_XBO0O\5:SZEL5[A,_6'TX,&MM'S\6?R5D`DGTWP*J7 +MWITR_K8G3$;19+-3][^&[P!^L`YPJ&IU/93NS<A7JVB4A8C^96]UCG*_-K). +M(\Q?A44M8:_ZX`X>FH0:V^J@H`@DU\F^@C&)LD">SX4$(.`3W9S3FDRRD6LY +MHS^^E'"MY'?5Z^GV-FBQ(EKG78CD$%/(="T@'!`#TYK_V@96&ME%=(PC/.^A +M4]A1Q<*786?MV=#2##KF#_#?M0JF=01H$<>B0O;IN`I%BKN"!S&GQNT35S5+ +M(E.C8+1;:P]9CLQ]]!11QM[MR8IH+64P/4;EX$U9G7CVY3;-7%(3<:F=OO_J +M2?#H=#9YN@2+.)^:3!*;.&<'BE;LB9[QE3]Y;\U78")WJH"L5YRSE2]X4P=S +M^`_@'#A98%;9#JWQL&)Y<?)N<5W=S"D"%$/#[(?0EI?6L"P4?"<W96E5.S*R +MT%BK:H38QJF')U"-$QS*@):.NYK"2*!7NA<BJ_OT!;PP@;0EC%UE:B7CU_W( +MU9YB%_#V9<4[M.`Z@B3>^:`N'O&;/U#1XALUYJAT#IANWL.2=[+-C?<`GU6@ +M)]`)QK_G8GT&`DVR8]CT2#O`&`2[[>H,:2@4YUT?[BB.3(B/%4".FW'>I:Z0 +M-29S,@H(36V0M\GT^/QP/BV#%:V3V_C1T62MWZ]45IVE/4GT/H..9%Z@5QXY +M7N+*.ZAV@<>D\FCA0;!E',%"T:STJDC,J=!3NU`@AW0LP6J\X2G>QW!!CY]! +MJ/WK"H%9:0,DXTC2*T"C-<(0HX/2E2,O*/0V,^FF?'%M#V9]3O"*3KRLQVK- +M4!F#T(-";'M\_DQ8_/CRG(/"*G@!K*5DZ?:UJVM4;4EF%U$@CA@'W4TM?T9C +MJWY.M`TK4X/\%%QX<"G$;:!+7<**<G;.=J-5*D8&S(Z$L<67;N%EU[_Y/0;B +M\+J!FJ/?\"JKLJ/HGL,$VP#MS^N4.(7^9:5S&B12[+3GPO)/V]MYNF#6=OV_ +MV7MYR'%[I+0<`;4(<-#/D4)P[REG,5>LP^$;DU67M[3BZAGQZ,)907'B<JO> +M5(6'`_8GL;=N&X'3?KM+N+H[K7&R<3/Z!,W5LM2+'6*$72P,%>ZWXF-]=34N +M!7^Q,[8D]$_LCBR.M:$NFY;7V;BF#=W7=V/LO):XETK;#7W)=HK%1<7F&2:: +M]49@I<.,I65Q$$(I>;AE5C$T0^+G<N4[`X_`X<\KZC21%^E(SZ;8%6'8++Q3 +M1D)I)0AQ&1GXU=W0H]AZ]0#O,#M>DKGR%>/W<8/O%D$6SQ^>B3BC)>DA@&8G +M!40]F%X0O.8F+MJ<U8=W0BJ3O`V'4,[=8QEANZP<BN43O>RQYCWW>\@Y<#WR +MB.<4?U,UBM'J;I[6-_5_3(0/ZB`9%)SZ3'[IG0/+#$E/W&4MNKK2'-.>U57L +M68B%KFF_AC]\FLP^CXS/RX%8A<CA/E-EZ$VZ`/.HS"KE!-IQ-./,-OHAID84 +M7K-6PWM?'=G3ANCQN)5]DUH.>!5LE@NYDTY$W_/EK78!A#IHO)*1+:U*"G1C +M9KS-4:;_%7=<QWOGE/Q-G,^8TS=^Y^.FKVH1Z\21-M?<!FO^3Z53]UJM`U/- +M=R4KX'PET7+5FM7U2P<B!HIJ^W&3#H]W.#/9`QXX>5YG)"PP[.U8O1+.A06/ +M@DW+(8?>3ON3H-#+`2L)3"0YIGE8_\`O28II_R)."QMMWOTU+[A:>V)`/__- +MK5$60W]A0KH^A?O^1;3R+0*('_*K2'8K&0YN8=%&&+)UVE=Q3!M3;2G5ZF2+ +M3=D-1^3_AP?OOV0BRE#:CM\+I)6DUCEO@_,;PF@CWUVCZ`AX@"Q)Z3$4^>P` +M@B-^9?_@3Z<\C>`H,`BU-R(I01BJ-YM=C2VWA-A`]IEG=@9]K>>QMOQU7"U( +MY%X+_AH,`-64[R7>BY'CK&RYZT)[2`$Y6C23)^>\[^^56+N+-[+L1VI&["V\ +M$),@R?#EA(>2W?)5S0M4-<B*Q:W36<C"S?AQDH3S\A``P<P^LN)<9*TJ-NYK +M<K<'MZC7Z\`]Z#8XH(A/;O,F6-D*UX@028P)C<%!6?QE0@G#9;X_(!(6UX&0 +MP\,J3,2BE0U041JPR#["U9#G@6&,2MSQ$;QHXL"0LJJ;@!6/YU_\2E#9*KN7 +MO8EW[43W3GQ;K#:.)X47`WY0P0@L0GS_$1-K%+!GE00L.&;31OSXHJ(\>)M! +M?!0SPMB1.;"'DU=*5[BF3SZ"%(*")/S(9X?8F4^YP;7-`]U$'.6.W*I'A?AP +M8T:):]1#7S4V14S/:(HDC?%=38I_*XBG^`/_A8[@!4Q@&&<__Z98LH%@J^F! +M</A14`Q#X\Q<2Z+7CXX"605C\X@(P\PD[I01[9&`>.3E+`FQ+\UOR9BSJQB= +MSAU^#[TBF#9+?9G_,KY"BC1`;X6&S;M'>6:GV1NUY"HPBL)W87`YDL[GOHJZ +M:V1&,W%+^EM7-3[D8`>;50T+;H'G_-G\@(1T#KX0L_['4J"KU9_"^H;K/B&) +M2/_[*&!L@M_^0UW%</%XA^9^Q]J8,$<_H-<KR41]Z"U36I?-05%5$;C99$UR +M6;4=[!7]$1:K1&A-2$Q%WSH1>`FJ`ZI-YWQ"\B&!D+O7*XK!P\V66C$LLK@8 +M45\3(F&^')XSG>%\3NTF[&6;5`/,]5,]_O%:A9<`^JEM:38I^GJ+RL<@EK8Q +M)^P9?^.J9CV7SJV@=S)"T+^7`F%V^OC?(03Q=5YYD'H:8/5M$.FQ)($]XLC+ +M46D'?\#)FM1*6`Y)NSFR;*L/72=TFT(\X45/<%$B7V2-GX%7$#*JOYN0]?4- +MUM&&FA^B5Y#I$?92;7SVP`W<;[X.FV';'&=4$Z,^!@":442X"10L)1_333Z; +MWI"DJ5AR!DLIUQ\JY)6@26IZXAE)JK_U'OR[`-Z;[NAM%H!4"V>?-+#!CKX8 +M$`)"O#*";=E3%'?^/8KK\S6Z0]57'(3&6BY!6)E@[^M.5PGX1K2O7A@Z.1@O +MBGL+6^Y0L*$5>!$^<IL8I9QHT,:/5$D-B@)1S0%N>-*>`$DL^92K7N!*S8;+ +M*#"E#HR?@APHF6@6:XK#)RDMC!,U%2?S\BQV4*+-],_*K/':0:DANDE;\6,2 +M+Q8%&+$9@:!KDBW%,W=2RPLPU%3M/O?R7"ZYDD`CGGKL^NO+%+#R@&>OF3-Z +M#]!J!AWF[SN1<4/!>&_Y/.)[".%ZGDO0X81NZ8$U1D/,?:M?OKXKQ,;P@#0A +M1)SIYA_WW.AEY=N1W54O0S0DWI?3Y$-*:HZT`,=22`:F6Y@&8J;6;'!]E34J +MR[)4-E$0:3ZS5=L6G';-R7QG@#OA2%WS+B:#,`<?&RPRRTDJ2N)O5ND'*_5T +M'Z0E3F6OK@C+^U:42T(OPN1"0@$_NFCF*+O@4YVZ_,&5=)N3PBT>JB*C,2V^ +MX,J*@NSE7A*>[H,X*<X,TFN30"53KK9_E5$(BM@5GH'#;@($Q/5)A[)^I;2% +M&T8FTY?U'JC&Z1E)$7*/]D/3WG(U'UC'U:V61-JL)MS9'";K7@0N\VMXGP#5 +M&M3Y:M")0BJ=\>01AQ19)J"D#Z[/4V!1.["(Y"N,BQESY:YAF:19V9[?<[JL +MYLAN^K0*45LM_K\-\Y2[N+*?`BQWUZNO3%S<.F7Q7[Z;8#2B26EE*$%W=%UN +MG+2)-:XR7?MJU.$Y/78);.[%C6;MBP?/D%6)FX#19;N)$`,NS3HX08]:6^[E +M5AHZ`</,*`IPHZQ442ZV6[Q&^[.RJ9MRP\B'_IP<"FN-)51R']=D6O/:=]SB +M=AEU\/U+;C9T4L6-.'LTK=_$-I3G&RR@QFX-@2!N^*$4>UOENI,/&CW2F3WR +MP=;43CEDU93=X=Z(#[TL@KTGF1Z:PN1@\*30S,";XRVY)HT:;B4?U^O8UM84 +M'$B:9"F2'A,&K)_F(RKUQ"LL#)RW3U!%NK0OV:4@SWAAM?BAAY8^J>),1T^W +M\@FYQ5BPRC$(%J,L:091[E'%(E<@DV*IKX8V*Q;/@8CGO7"BDR.A/5W=K)KF +MW@&43HU9!SN&O^PN7SQ"!GS>>N1-!)Y/3/0Y9*D*@-$#]=F,8HVLXWH';TFF +M;7=ZOSEC]ZD@JQUU#&=%HRQIXT"'%8<;OQB<!*O;Y*`@KS]UGMHMTWL/!J04 +M;_>P0#2>NX?ZU4';$MS!N:>SY%6I1N_L$)6MTN!?"HVU&*R:`E_)+<UYC`1C +M@[,27<>E%.L!*L,R'&NSW-*LED'6]OBVG4]0?(E+9+AV8"PJWBT"7G@0:Z)W +MY0%<G)666\BG0U>P7CZFS:#!!,,L*9GF:7E-[TC2'$FATP50:S*Q"8FEU.K: +MN?^/QFO2=SP24;_>#K\5TB$:2'P?`+..7%OSV(97*RO;<$33CZ7G>5XI?>!< +M/)E\ME'=.8+9EJ&@NPY^K5(>L_,FL$GKYJA&]:$VD+<$TX9^5B7R_P+\PK\K +M.3"V-$GD5'#:T;44[\/#Z<')+R1+',]_YQ8*/5_<PVC0VCZ1:N('*>`Q?YVB +M,93%@3(;B/O^K&9?]L'"O'?]A7#=]4QVQ*NC=/ZU$Z5Z*W>15!*?6K;WY1:L +MB$;][N'Q3W([>\ZI)?5`7.>C@`DQ\;MC:7>K4AVCQ,/2E7U>5\J0_EMTX.OE +M-`'I.US0\-7&@G`28;Y8-&UO+)D:ABA`%33-L.DRG28YN<`>=RZX$1-SA:9K +M:H%4V7JI8_^?D5:AG;/>/#7\_!H-'B&//C;`?+LQ3KW`>QU\6HF2PLX5UO15 +M*U5-A;*),38(:FEYY5V+L=@\RJ_0O\\#]ZK]-(3JT<'?P,`3GYG)US\2>B/( +MI6>NE`M^D<WP1@H$-%O](E:B&A2^I1VUN;)'"A?XH(-@*(VHI+#3<]O&)U%I +MGV8PELMMG[%9_1P.$I^_3':BD$6VN<$BQA"9NK'>0V+P4Y-E%UVE]52U9W*? +M#JJ_YHP8\H<O$'W7TPMMP`+6P.0\`D)/).&#%?379.M_X_IT@VK,8@4E#E4? +M3;%44I(A=S,LTLR'FY\MG,05PIQXV!"^@U7YWP(X57V"#>PPU<IGG-\HVTN3 +MFPS'G[`VACK4$<63G-UH=#@CN`Q"Q^/NBYLIH+Q%]#P[(-]L`-MG*<C"K(;< +M9&&/L%C^["4X<C6`P4\207&56Y+U*BILLN::H@IYM[-?!2D"DC$/OBA7ZZXQ +MR"5DSC%'W4&7CZ3?%<2XOGE+H\&-G@=QXC<0C#XO)P2!L`Z.(%?15J1VQSXU +M%%TQJ2^C3ZZ7/A&@0G(<OV!($"I['5"IZS.?\/'/80,]*SO%GO@BV[FV/"_) +M2DI1YG9:^2(P,X/8?D0C/!@FMH@?"X1W+#4M(_//$"K+Y?Y*09HAE#=C(=5V +M*+NZ^M<1!J5/'P-!+:'$/8(__F&S>MI+:<V.OQ#5(;<C^)^`T)):;!*XT!S- +ML=N2/=)$X[:[J,;A;><$+,\(C&Y-*UJ"Y5M0B:)^)_17$P9GSAN2GHSU"WW- +MX4N?@RN<$78R2G7^FZZBAJJ^,>>1$R_J_!"UM?,V,EV,:8!,C(X^^YOR)[^\ +MLS0S@?WM'[VYK%<>PV?#8T!&"!_;&1TXB#H#T;Q+@F@-FM\_`N>K#_1YP0EU +M^:)U7S854`T1U.O9.XV^PR_2[@CGJ:_OB\>=C$PO?<IN.?R_,CMWMF4)D`$M +MWQ<@*=HD[6#>Y9I(8:4,R$EE.R_'?W@E_T+Y`#8+28@"$1@/<X<H%/YY2)W& +MRK*1FT3_96X]Q424L]Y:I35;%IH^GYR,N&(;K.FMAXZ@-EU5)/@P;,Q*=,NC +MFNM1(C&`.?G=H^$Z"%PSO,QS-]/S?TA23=N^DR&`!C6[*)E(^5,<JD9%_K=I +M;*:LD?14+%DE`WA>OFWTIU#Q_KXF$$EU9]3GT^+-C\@UL^(J3=?':"5195;> +M\ZMG?,/RBL+L,86UGAORQS`EIHY.#]F==@&Q+E>8"QW92T((@"!)+&00.-*D +M&1"P4#+TKF&(TJO$/`;]?9,JO:JWOB/Q@T;X'7JNQVSF0@4\VY__UV_:'N6K +M]Z`"/(E?NF,U0?HMMC4B9*].2;@QF%_X!_U7599\$3;`T%O=H2%.?:4^N,A. +M,=L/:D=RU/+N\<R/(-7\X"*+YLZ<08A"QF:+BK]?>"`_YB2.5.:1/WFL[W,9 +M_X;S/WH5I?&YO*]=X&F(>A44+FOL+B#RC4C4,XLXY\!_<M#;>@@^YH<9<PSR +M8"2U/`Y2!<0*(C*97X_)EJ!Z'MSF.5%)";`8&SDZW%%,XF@KY0N:M>,@PKJF +M^?;V9(!2[`463E3/-H%#_$1NG[__?/!CXK,9:K;ON80;<*4*)"[3J=PLEY7" +MHD5*S\ML'[F)D08R)SI]EM8$+I_QVK7%O'\._B$6E11F#\YRN9U:,HR*1,&$ +MP6?RX,S;8Y+7SK&_(7&24^QRG'X2%+(=2AX;Q<!C8WO2IN"<"L[O)*M27'K? +MIL4=82E%L/</$1RTX5CZD+GTUJCJ18LT;!<QK?G$LBQ5RKEXIRWZJRDN[^'G +M.^K"P)JWW_.J)A5XZ+/!L\6N$8QU9$$T4X@;SR,OQ8-CXM,;<\[IMLA$[4GE +M$5,'IW;$AP9P0D21XC4,<,8/&^%%`U3FF@9@3DI@>HWU_G4]5<!KF8H[Q@#[ +MLL7+DK-@3)JS(I_8+!9U0TBV;/VC?V>>`'$G!7@5+H]6O%ML;*NI!G=,;10Y +M8QQ&R-B,5Y*M+1(:7.IF9.V"Z5-C2,`JV_RV"MX6"<648CW(D^D)6T5RV,Z3 +MA1O5I(T<JX!F&[Z$]#<N%&QC[Y_[BZL<L1//)#>;B"@8E!"[U79LI?#Z>=4] +MMK1MMH<7\7*1LK/4\LTGM*,&O_BX:6<+\Y3!^RS:4-__XST>BH+^T[<>([3B +MWW#7#4O3TME1FZ=>(;8TIFR:\ML#JKAEH<.+S=2Q"%=YOUAU!;PDKY8:J3A^ +MVT4&R#=B-L8T,Y(3,?7Q;IFZ6*=IP\VZ,/)]'F^F5:F"!IFL9?O,TYUBWDS( +M-DST0:&#H-NNA`S`>)2X_'TR;D%^A:&@#CUZ!K@9F+N&$,,T5!05G)213O5! +MA:W']F#4^0FW1<>9WQ.!2G$'&L4IGEW9["W7.[)M-&,"^`4,RCI4$&:B1;N: +M_CT8@$7K]9D'5)1Z>9_X$CN6<OO\*#O;%U!OR(U3O6J?VJ1Y,5.27F2I1H,\ +MQP?WBO=8[TE6%E*-$<UAX&.B'4(0+7@6M8<!Z>^)QH@TO`[4?(P4;F?6ML'N +M%"__6A5]BSC'9:U=*FMZ?`O%8A.54VLLBF2\'/%+ACA./)27KTX^@GXY\;>6 +M3L`1*/Q$F1/=J(1?"E\94P#H'K]=H.Q4MPA/Z[MM_J'U]YO+[Q,T:DQ3XX;M +M_;7(;&%^Y=-1PB#L/H@P<?]=B$1F[-8BX`7::'UI4M(KKTGR6WRMV*<@Y<3, +M\N23S,X"C?\+`T4U,R"?*\A_PGVO7EH^VJ*-O-&W!D8IZF6ZWA(<L:X;/$#H +MDI8)%[GW5P'_<SBNQOFWR]NATG!WZQ&>>RG)HYR*YE];'OY0VA1K95OY3OJD +MTBR/<XR>CDT(R,#S0%N8SD+$B'HB#F"NY^_]P]9.,^RK!Y*:3YR2KGRW8D99 +M;96\,%FCGNPC?R!.C4W_1?(-4XZ%(F+Q[:QHZYP@N8-@''M;KQM&+^$86^19 +M0+PQKJ14$14P>$I09N6`XNEO1)%B$<=FYMDI/7(K_BC*CB<.V2M6#E<%)K6O +M.^S[J1J^\#])"5VU=]O3L[6Z#5^ZPN@H]*TO=*H!$J@@U-+V*V^K?4*:^IY? +MXT>'0=3(WO:;+$"WC)0$/6NFGL&T5UH?IYREZ;><SKF>"1(#C9^VAQ.%+P6^ +M*__732YEV]8,4J83<"*%]CMV%='[C5J*FZ*C+-,L""V/F0:R76E/1:'B:[AD +M.2``C(B#&%^CK9(M/,+CVO(`@=K%:8RFG7=F*0M4:12>T#>*7H,O<P?1UG>A +M?`QQ`%W[;.L\B&Z)H)E!K^]0]G1E'K6+P'X/,>,Z*U3,`.21F-$22SB&W((0 +M-;L4`F+0<FIZL@4\@S4I18M=J5B@/K2^%R!UQVW_'XH@3:O[IDG(@QO"HT,T +M";Q/<[KBR&"IT%12^KS\Y",4=(U-6K63NJ/"WIDV\-,0JYNK]R4!"H[;U!8< +MF@54ST96!(&^F]#UK5+GD](S!L8R0`KZ6;&L>Y68KTF;_8Y#?+=/_@I5,0+3 +M$.9J?Q;X\]X>51*?DYQK<"PLKDF6!8ABVZ4%UH"O76B7!^95P@HHAC>#7B:Y +M)8N')LX*#J8@1#U790"B81-A09F#MFV1[!:!-5Y=&;5^>0G6^T/IU+JMTCIN +M&519.M&<$#,W1C#"RF23]-*UR%Z\C;9-=DBP5&6H'*A?H]A@Z;X_O:./_?@8 +M=65H+BR+%1`5C48FB*,+"K6'WQNF^4A;)I7"<I0"FL[[:OK0T>29&:JRCB5[ +MW>IX7:3EWE?$M#ZM14*1NK`/?9#F<*&ZT\"!A]N"$J#%;]'^X8]R(0+MN$O' +MVWBE8@HLI!Y"CXV7<=+H`4BG)TZ7!28H"X?\(D%C,'1[+H%OMZVZ_U%$LS1I +MAC'G%KC(*U?H#,Z(?P_5X0A&UN%V%`"*6N_!R="0R=@!2($CU&YV142TV4%% +M'=-T)2TF?@!*;#\Q8&]^]?.3"O>NBJ09.$%$8@KY6=VN@5;2RY3CUUM(7OF# +MS9.G6JEAPA%!"9"#[N".Z)33R=Q>!7!Q*Q7V)2\:-,!/C!S?L`W;3NOJR,6; +M),^%'6N_%U,;P\F`LZ;'<OM$(G:.X[Z$KR\*YNG>R\Q\$828E#S5UV'F>;VX +MYH$\$52,_&XW^?6`G@.=E!+Q';<2T:VQ;'C:,_W&"[)+_W!]DV6Q-G<'87I" +MQI/A9F&/K&]=L'[\16+'L,\24%"(SXQRGNODAZ-D6FZZ7BVC:$C#R)TO5`R_ +MWAD0"QT^ZN2N%XP!FW"&"'G\C2&0U"THR-2/RG)*#T/J&<-;8G/&]TUE@M_Y +M*CXQ?^-N$`P/F66\4S_BM^Q+1H/5>9UQT5^ON3C4S9@L+Z\&&N/QP]5[!#LS +MC]6NEJ*2X-S=:"A5Z5)GO3ZO]F;*?OX)I7U<#^(97*5#WT6RE?.AWZF@5>GE +MXW9=N]WK!D2T?.<>*_EKKH(,"EN5H1GI:?C@\H.9)S9(WC:PP^$W:DP#7VV4 +M'I"L/)&&V&9VV)R8>K#>!Z`0PLTLKBL_<\S"&88TFZL(_/`1>%."\B&NZ0TW +MN.2>`I.V5QS1BR7I`4$MNV,[:D7L*C4`+@B!<FT8-BY3,9^O6VAG1?QH2]+9 +M$OLDZ)@AD5A?7![+_QL_,RB`V)IQ.KNE:&8B^,C=$1,I*=/BP)K)EUX*.O#_ +MDO(D%AL@9F^8RWZ!\,*HBTJIE4IKP2%M8;4D-8Z$ZG60BQ:;^'V>T)]L_D1G +M1^\)-E1J0U@&`UH06W-G4@ZS#[S<AY=4W)#*=K=L31<;*"+5496":E;-&2)6 +ML;R'A*E2?:B@J?L<!^D'+C`WQI<IYJQT"53PVU.S.?!\7SPXTI?/O$28CP,R +M#O`;U7OE0;\`RK!)G'YP"@7.Z/"3$EW(?\]%HG:%PFDQC^FZE56.]^E+VKZG +M-/0!(XBK[L156Z*5&[WF=FTJ3R""&1\=_)16&+UCWMG([YJ_"_9^7*S?%O<M +MUH;L\Y0),]'R3JYJJ5;?B)HZ8];QJ8DR]FE_2UDPX%+BHIM8X%`9JAAPP5`, +M98I(3W;:NXI[R[B-!]HX`AE@O&S7GC`0THLB0G:ZQ?G2D?_CRO:.\.0.;],W +M$:@](V+W`W`?^Z"LD:Q=.E<\PV9I;JFF<XJ4K=9U(1*1L6&^G$:Z/[S\T'T+ +M>2HLZE6C$C9,`+L/"IM>>=Q#4TD7SZ@%%S<.KIWPD*&$UDE3A#-F[+*2$_2; +M)42>:R;5UP+%9*=/@)QGOMZJE*-=/[OQD0S47",^%Z@A!FU75FUD1^0;>C^% +M0JK<D*%_6)K;!$)&$^B6Q#!T.FA/7C3;.>9(@QYA'D'S5&G&[]]B-*F7A/\! +M1!'58,]V!3EA]]DZ2#VIVY?JEA=_#YIR=Z+[`F1EL;M)W0L*A/(YN9+EE)ED +MXC3:-S:0&(-_0`N^=F%MD_28@<YYQ'X-O>^'/,<KDPWD!)M(<Q1/3)5#&Z9V +ML/Z4$$_H//#DPS.@4$]'<KM<B\J"'\"AE<PUAN2M-LE+0^YU+7#^Y<:5JA:D +MS1/C0)KM>7I\3L=\3OC1)ZR:Z17DA>$-$K1!%0']E]1**"#B&49Z\5.)VL;7 +M%IOQCGJBQ#1V,F=^".0RYO`.7WR>N6@:HCA9;"\_72"!!+2`>5*YXRYY%>?P +M?+YAI"1*ZA6O*!4+]:W-,)NI:M&"_@`R!(_PD&T2N)\QHSRBI'M@EKEQZRJI +MCZ4II.(.C/2]U8(A)P!6@N%^`D(G])ZB/1AORKD-O6?OMIB#G8>`I?,P*-*= +MT+<?S[4U@Q,C.PE\:B?---+=Y>-]OE72`[_6DK?>YCI2#83SS_*+->^\@@). +M8H/?:*SD+WH&UP6?9M7+=JKZ3ZKB3/UDWN(_,T?>'4$%XQE<L5'M/9'W]MYZ +MI-/<CM"*I6?Y\BESL=;H.*%HIM8,F)*^O#@G>7]^*EHORRA",XMO1C4CR\-[ +M/P"O!U-AABK@:(>;4C[9YS9^F<-:>X^ZHR_1*]'AR:(D:;)^?W20Z,1Z#BHQ +M$]H#I%S+5/BB)KA6O,-U#P\R)%LD/Z,!*XJ_62@&PI\6=ZX<2<7C0DA'-L./ +MC0FE*Z%\%"8:9"T+9$[J6+WK3>DWQL^R$#MG?`@'I"?^:B\;7&0-GY%Y'H<^ +M*(46K6^>_-F>\,GO%M@Z$6)<7KZ5&*.G!_`=@9<"@>\^A$62"$`%FK%#1RMM +MF>4K3?:#124VKLN,G@H0*_C)*4:#9808B4AT`;!KO5`@+"G>P@:.<MC&W*9= +M$]]06BOA8O?3,*0C9F9,MZ*!@SJL8UE#Q0Q@+1#[0]"`28`^1@IL#[@RO'!( +M+Y1"78?,8J]4*#_B,UR[`RVDJ0Y09.O:T!K/3@7^\"H?9D._W+I+6YE*PT=! +MRV)I+PEZ?JFJDUA^!_JHQ^P0UQ<AC=QV<HL"G-<["`&IQ`V1.M[.?HT80'Y' +M?4VH(M0*$8G<8\EUA5F(.<^8Y2"D-V,F\TF=N2C/$</JUO*ZJQ',R$:DE32? +MAH\#B>$Y\LMY&L^<2J09>WS56-\IPFCJ$*]"P@HI!''E5DOI(<6&[&T%DTD7 +M.M9`'?SKAKRZ4Q2G2)S<>1V0XFT;:-)-.&="FT9&Y.62N<6=W^@F[!PUE9&Z +MC#ZBR(AOMAN@SU"0&$CO_T;-$D+.O$LZ)YDWC+QH,@#F8R34:@FWZ:"8VX9Q +M(TIZ;7_0P&6$X">456IW24Z4FQ-*`%.;L4!UEX74R.:O?KCN?D+\0XM628Y: +MDTD`U<PWCLFJI=N]R+'RKYH;7WJ,PR],888'.XN6ZO@4MUN"7.UF-]AM@`OG +MLS-'YZ=3(P3R]@=B9>)RW89I3X^PL\,LZ7>B=UO:,,'-J5H56N`)H@O?5E/I +ME?>$J35&N;1$S\!@(,#*6_LNP`^N4*082TS3G\!"0L*3EEE-`,_72V$.TCH: +M$O>5]/TF*I-6A_1ZK_B.]\26AN\]4>F".8Q04+*QGF92S1#!4)_$C#TX)J!) +MYGG]*!M0J9,)K3XJA/YJ]H?G6!>/\$_ST?TZ;%\6;-CPS0_N;Z.F"N^7*H(, +MUK6%T(Y',/=ONZ9KJ5SFJ0HPSBH>>]28:T:PET`5?Y?<:_+#/?10I1Z;.-BM +MR')Y>@425M/U56/`Z7Y&[/K'O0`E#*>Y*/X":6ZY5Y-1%?"JL%HYDWX'?`D_ +M2+`S?AX&7L0T63)U/\9P%&10Y;^-9KZ/KU"N[-2:EPMIO(+:WQNB<V)A$7H3 +MT,YA0^F?XRT<AK[\NX06A[*`IB-^EBYP[*GT&8F^9O3FZIE,)@'^#K;P485W +MW&0(TWEXJI6.*WTW`QO+0>PLF2N,3(PYQ6<"D;6!Z(CBZC>H>I$5`0ZK^>#? +M.E<T*^TC@/[.^2T+#7EXF3F)MG!+=Y]KZ%49:=%5IB8#'V)D$]7\616.?$EW +M".D=FR9P/P755^&)GOKS(/2X;9?*<@E+[B@>PR/RKH^2_6\:[6!13EGEFY2[ +M:-_C]$NZ253#^#G)/T^)[HS1GR`5M%JKKN0?$WZ4E.53PC\L'.LXU2RB")F% +MCG.B$PM[,*M7S6-`[:=O.NU5^WGKP#F5Y)'VVL/3K7]F_D&<DRBJ/I$MGLK[ +M0A%]Z(E8O.VOT\E',"L^Z(6-Z5YG(DU7CG%`3'C+\OZS%#"AU;B@6#]@'O<0 +M@L=W`CAY14>X2;QKP%.42-T2PT5T&-"I?MDL_8T-66HU!0*_)HY#K6=DJ2:= +MWK&A+S_T33_OR<5\<B3:0D/$VC#@05S\[*/>K\[VI9Q++7W9N]+'Y)'&)K#M +M9:"TDI66Q^SGQK@0$0BZ(_ZO-X>K1C1=%VDCGU)\:(ZK5\;6<(!IT[D8BA%F +MDB_:8U8`,3EBD.&-PNRO/[W+>.)H`6$N$.L\JD6!X7/*0@!LJ5PJ`K6=7ND] +M[H.GW.C%,`-`<Z3Q>3H?&+F=.;R[JTQN]?/1`89SY/^9;2H/CO]U\@YS"GY6 +M(CG`*3@S2AL0K+5&:V=%+5>2*!Q'+A!`K/8T*L%TK$)I$_?\:AT0/8TJD&_5 +M65.:O3?XY=.42Z8`/@WS\`]9I;K1B*LX?2Y)P#??A%S04OX@%0H>K1=H%!"Z +MN42EPOM:74KG@C7+C6HX'?PU;(A/5&I5T]:H13_'FM6?&F;_WFEP`9$1)1FL +MR<'6BRV5T%Q4R!$INA=!OS<"RL.8_&V@H/%#I`<!&?8?#`@GAZE"\"XD6X.I +M$WL[H$;+BL)__\MA.PDEAJ3*@_7%I4F3A?RR?I$3`WN"74"-$OR$!G.<RLFY +M.=Y_^OC?$`UAJ+EI51".($,HJ(>A1<=>*^OCAUJY'*.D0I[^B@^.UT:CC0"[ +M@<9`D<@W!F./AH1MQI3M<(HF2!$[<_Y<ZQN'2NL:A:W)M=S@"'""S0I803?( +M[?SV<(Q?W_=!EHT=&6J\J,@\H2%S'Y5:8=8TP1FS)MC86V:;Y,WN9EE>!"6W +MNFNG:8:N;2=(%ZMASVGQPV%`!SJA'/6UH-#J$SR=N)$/J$8FN_G6J$FV[2@L +M5V0#C:8\6^=+Z0_PR"/']]S*;:M)S[W3U7[!E__V#UO\V3?\:$[]"?\Y4(\; +M(21)2&/_Q#E\5Y'(!(:>YY*%R0MXF"P5Y8LF.HZ=D;0(`S43;!@RA\L@U,V- +M+Y;HL!;47!4GCTQH5[VN!9ZXB_<SMAY+Q5N&$G[AM-2*<6;29]DA0<4B&J9( +M`A?7J3`/79LL!#P<J<3EUK_]Z#&TP<OR?@\:&M0!72AHFWO7CHGS?[-&)(%- +MV:S-IVU5F,$\Q#%"Y!+''50*0+;/5A=9AEEF:_PV@/*5/KH;]'844<HV@Q39 +M?R8G`_-,8DG50XF8$H=5Q;!9,7ZK62G8*/RW+ZQW1<P%YFR^%P"G)N+098J; +MS8F]01II'H-2UZWN`VV1WT#@=>1ISP@D6L2V\(<^-LSK9\&D'_T9HK-5C&MZ +M:0"6WR0-A-&-IZ"WA!36]KS`M9P+4_*Y2$=H;&2.H+_9L*/ERLZ'Y.5V_I\( +MXX,'_W?M?"KK/D2I4(9#&V$\F%MIXU-[VF!\%?-8J&FE_KQ4F'_+%"1D@!$@ +M\\R:7^\EFLQT6=L9H&J1GPB%YM#8.CQNDT<8*W[T37%)FQ;R;O,/<7(VP09& +MOP*9-%#:)4JTE#R-OU['`C#STU85H>LDRP-46A11$DBBN-60"/JJJET!*4E^ +M]KGW<W8;]=<C*D2&?.&-/M*%`!%QFEQJ]4<WY^M)?DR26V8)"[*JR-3Y/"T^ +MCTG<J8\;@T%4$D)&9$<F4E3_,IQ,N=L78-PGS@Q]-JJUMTU#-S8\D<^;6L`U +M</FI_3V/J1A$@R"??/[&CU3R#J&C+4@HV)1I<M^TA,\)U^RN))6;WUB:<S%8 +M=LP"74D)5CP7JCV1/9M&QIP@)<2<FE3?D&*3V`7!AXQB96;6^*`]_#4U*K=M +MP`3'6-E*:*S.#6Q=PX&L)FB^_:6XH&$;3FMX0?3^SHG82F=FRY<G(A7PNA^T +M*[R%=_FU]FDE@M=9W*E:>#O8XBF=`<4`76@.JQOZ"JL=E48+4@97=!_XLRTO +M:B<$<60X^^,8\#\1]=J&5HJ34N29L%6:#@>035V/,]YJ5<*;L-M+.5'JZI,* +M5!G<B\9P"R)\#C9V+&D@]ZU/*[QW"DI__#J\W>9NBJ7T,(N.LI8U>ET7RGL, +M15HZ>'2+/SN<>D26(,W3YZ\+3\KH:&!FV0N#868U(WSOB23/;[FZB#?H!9V$ +MK;TA%=S"RI@@]9K,;=G8F%DH:5N8,`TF>$ZCTKKBXU=[!>A;UZPCK<J!:A]T +M(*]RD%SQ'=GA9NWV'?ZN]2=2UV&CLWX>;PV=7MJS"56\A6B19+!G`C;2Y6B\ +M*IYRNIU;Q2)EO\'V5/(QRWW?;D0*[Q5?AZN<AA+E+WY\BA?`$A9ML/,G%<[U +MJ@(XV9?#LEK<[((Y>X?!M9+SWC(TSE%V5TW[K#SW+DQV'4;.&$/A3M[3&$RE +M(M="'OBZQO@<4N6-ZU4U.V4V@<%4H#7J#?1[E+LZH2"L!T\;4!=P.[UO_63\ +MZ,;H7Y4O((<;D+)H_\@'))].R("9\N@,^G63YGYG7/(WU]R*DI"ZU?ZYVNX& +M76@U)/^/9NB7A"9W?!RW!QZ^D8=1U/!8#/HH159WS8?88'YLS;%>00;LO8DX +M,'S1\;.+;-2^%0)Q`4UO:;\]&K,D(E+9"".H(X7]_V?4+LD_@MTP?P<QDBB7 +M9N1ZYC&]+FW7JY:CZ->LL<T&[AR9>,A72B+$+0BP>:0A;;XT/_D'P-?D)\=L +M7Z)L@;<%`PA7QS)!R^B'1"(\/L%L:%JR20Y+!^)VXMSVB'*=(8IE%1Z[&]4' +M>3R,0M]%QFR^=<<[\^4>WQW>.R3`+$4"JKB`5+Q4/R,>2`4;<T3(C1%LN&$8 +M^6G+*>U.N'C<PL']#B+=A69*_PUGX2VH'NVBA2+CM:%6Q[B3>CDD+A;!YHL- +M,;WP!.Z!H0M^^<I4""ECE@T>?4Q,KV3%%WZB$34B:LL05"X8G2&`<$Y[<X[/ +MGS0+U-,?'#<A%0VD6S?&6:C:GU$2T/M13"&H-48T!4'9]-"A'[TY*>NS!DS# +M$`HDR0[1&*;-N3.$Z8B/02HRVES+5*GI)@F\>KV0U-F8]6@X;4NH(1[=?.>J +MR@M5]S_ST@^JK0J4R)#\\Q*?B+CLMP3G-7S/F,,S&'&T`(D`E=M6\C/^]_I< +MT/YLT._K'932#OZI0W>^3AL.B3V05X8U[@!3+-HO-LJ>JX^4+A]$[T7<HH!Z +M_J-CW9B0&.!&L7]FW@2>J@UK!\PN<%A_I-G:5)=]YOOJZGXT5A&V:&/<!D5J +MH;<M'9>=UWF_`Y&`C[^[1&:`466X[5<CI?N0&@7)2"=G-)<O%X+L/?C8@IT^ +M+7ULC=^F!>3OWN1"?[MU0S]3$LS#Q?\`(V[V(V\XCK;K;>+E5]N:-3'&WDI5 +MUG^(%"`0S9_UYLL"KZY[=P/[N^]S0]#);$*SD/1R#''HH]=D9;2,K0P%(^OX +M\A52.Z)0</<<#P(RH9O%]5]ILI;#JWK9V+:QA=NJ\W.$$NV$;3I"J/3\<QXK +M%MH?09[P&6R\J>#_1/M)FDPT:';4@F%+4-PUZU(-8&L^?WOPHS2THT*$8X1[ +M$^;.@F>A"`YYS?'WL&J2>8KJ3^"B`6CGULOPA'+Z;$Q:;^W*4R=UI8[W,!P) +M?D@G[>'.?6:?-22+3]S:<WZ=7XM*^(4CU@DR&LC.DUZ3-B64+<B_+R-%TL<U +M7L@1^"A0[,Z[T83A]'V"_U/BE^R`K+.`6W+OA[%ON/!N/@0^0UH.4:S#@P>X +M5NZ3G5;ZZ2KAXG0_(]^)10%;TP$XBD;L30[--QOT+63L9G9J7).HC3M_]S7R +M1)@3$.OBL<J3_R.,J1?6_^,WE)<0Q]4C1M)V#J`M,JP.G(?8+G4;6SI/<NA& +MW6<T)U^AAY^2DE5;A7_4M0L;]HR6K<W]UJSF0'7]GZ?!^ECQ5"=%<4XP#P+] +MF*HMBDIPW-D!G"(I(H:AIT[V^!NOUE(-P\*%M)7HRCUE+J"I4?7<#%8?D,AZ +M(ZF-\?^$KL["#0/.7EQ08DYRMR:B,MKU)I*)UN03':M]>'_Y58<"0O=0M121 +M8)=!7#<%ULN%@IG#>)5V4`J93,M:GC12R]."ZON9$BL<4DB0'CA9L[P8N3`L +MR`2!*=-'``E$T:QD&:CAW]2T<\X')^F7CJJ&P:D7PP9P$Z5T13-;=GU8L_6U +M^+T4)@+A`L*_:H,TBP/66W/#1WU0>MY_U679HTVX$R;:3H]8L*EA*P(9)C*. +MB_V3&?<_;+V-@'37J_O.J]?A&TM^/15Y.R+\IG):BJC)["PXTYC#9A>0G=-' +M.)07C_?`A>\6%\GV$FN[:'!#E^,<BG:=A(`!!,"[>RTY2J`&?3(!A3D4(,1] +ME:&07(M)B'5_(#XV*$?*H]EC421LX`:5KL-,`:(,%2ASM>L]K-Y5';RQL;Y1 +MD7*FO.)U`?`8_BH*Q52,Z?A:LH9D*1%">L)1,M4S=2"MKM$=W6@,5*)W,``S +MCI,#9\/>:T)"T(BG>?O0KFYS;0VD,@L-';6?J#2\",Y\A?$@3:(Z!N2#<,AA +M/@9\N9IUG#MM/V)O)B@A\"MLJZHFU6^2N_2X\=TB?Y@8?2=%[J"6.YL23<$F +M:Q'5)-I,DV53?H&M(*^43(-^Z`97TH%C%+(0A@H!X?3%+D8V"(60%+GR-S4I +M6^-5PZI*LX<B%[SM01S1@79O`1&V&RH*0ET(VK=59+=)31/U,_>,'E/UZ'26 +MP\/^N(*>%H7A/T]2'=T'#CAZ.*FJ^_$M`3%^A51(B75,,\$M!'7WISF8L4E7 +MWA.^?\87*T=OWX=;HM;69I^B,!V/TUETXLPM**F\*V#0F$&6Y@-/<Y6`V6M3 +M3!A:B=,#V)=_2NY+94Y"95_&1PHKG7T<+S):?I:+=96B584_>4ITI$V$$)8) +M;!$W+;M42NG<K_6.)H#%BOV5=_)V:JJ&\.FS+`.^T&]G%LIYX3TG(J1@UKT3 +M9LA%^WL:-!)9,9IDJ)>UPQ^`>^[/6[WD+[%I_2P1>NMB&U:<CDN)H,K`=_>, +MLD-V/)KESF@7A=S?/\W`>0O;K,Z)>V_U>':><#1\348VB^H>&=HCV,QZ$=?O +MW4=O]6=4L+]^?/9AO@G#4[4L3@NHMT'-$9+ZXF6FX[Z'K<5O!>_*,P\#IJ<P +M.@RF/!,RB-@65$!P1TS/[S?]8'^:#^Q8Y2F89.PK8-8-SZ%Q_4(E/B[S5&V0 +M%P0_>^PWS>SUX4&YE((-U<32M@N)UZZOP(*Q3[]["2_(&.'UC0)DCN1>-9*= +MNC<2(N?`&V?]6\!V:42G-ECE6^.-S%;1UU&BST/N9PGO"%IK`\E$[#8/8-"" +M"U1.Y,1#\9ZT-WLA+5S^3CKK'.1XL)!F9FF9.89"`ZR"+2-[+%K9/P*7]=EO +MHK3="C%Y*_0+Q94PC\;^0ZLR_,*?YB]QITD75:U_87QA.E=$CU\Y[E=+A[I# +MU:Q1?X]GXX^G;F(-\9/CQ%Q`5+$-8$>JV53#JJZ1TRJ)\\\%-P)086P%FS&D +MB8,,44A80IF(H;*,91K1GV//N/^OFZ:M$D]2]POV83JMF)F+[F65^#S+E\?I +MWGP5TT1,5_F>G!*&_/]/GZ:7$*N=@?#LYR?2WCE6:%-U&;,?ICF3G%#/W@O+ +M"<^!)K5A7DKBT=!DQSFPN@MLO/RD?"]K]Q,RS7F$34V+]IF:H-%P$U2%4IH& +M7D0\V43)\A>;\<OR_QLR7>=Q:.*Q=G2U9D5/K=L%:%1>J:Q%(?6"KR0&7C#L +M![P$",-2!,G;.5'6?<:KNDMEVI.S3[:\0@Y.4ACP/R)T<*RXK^#RI(7'F4L+ +M[GX+<`J.H;T8\]RKU"48CJ2D\).A^+"ED=L[X8-_9782R-2`5KP>$P7-%]&! +M\T;T'#`8&\A]DG8=<I,L[FJ]C"-W4MEH#$V";!&_(["Q5+G2'V`O1SK(/=M9 +MB6]BI,F%C_=]W8@^7989R83'H5M,IXUD9)[M,%0AID["^EDW8H,?0PMYMNKF +M9?]D76D@_6RAZM*$TK+=K;3&ZR61U3"WPG\Z9\DQ.&8NTL!IT9%$`__RT#`& +ML'+'2"_B(2M1"M?'+.AJ/V\B<"%4&DZ7D\[AY_(B;WL,V,+YU?C8AD=LFV&T +M9X2?D4PF(HWR*KX1IKJZXYEU>SY`NUKL\J]U7Q!-,<*F//-R_SM2;_<@.<7_ +M*FZ2&SKH-,[%!,4[N=7P=K^52YT^>YGIN%.*6;P`RE%KC$_O<I2A8RIOO2(] +M^7FZ40@^QYVF'U>AMB_]"D%0M[%?,0\3#+S?4JT=(GZ&4(]R;`"43.#FA(SO +M'RB`=$M;(SA-E;=NX:"$=Z'?@$=K6+R;P]?3C;E!F"CG>;QE.F.CTX`^A\8U +M!N<892+U)>;VCB^>V[X)<%+9.`'$F?L!&C7-HY'1`"A;B3C:K<TCL^/:&><4 +MPKZ2\_X5#6R8Z$CLO,>JWM0?D?BUZ]<=#S>K_7+R.VL$`]ZQ]$[',(U4&+&0 +M!.68,6XN`Z=;JB6+/IF<7MID]XB^VK`,4MZ$W);[(1\[KG0_`\9;5@*503J5 +M+,\J&+=Y+U^""QX$R'@Q<$-N:3_QT4@QT-6/5H[[N;/N_M/#D<+!XWC1`_A9 +M^&V.9,:T>J]K+7AD=MG\)+.I9Y5ZTL9,F+IF_2'>&PBEAJF\]O>H8?.VR(N5 +MM$DR?]_YYOK-<E<^VH>7W+,EA<UV*\6#G;P(*20!??Q/?5AM^WE%5*#_/80R +M%1-PA_H9A,_J5(]%3/=`_7SC(`'(43/%O;N[<SQ+%OT>(\TMS^!%/N*^''5^ +M4SA8N2BNZ)M"54;X[]%!,7RLF&/SPA[`:OMWY,.D23X7Y%`X-M+1(G52W)8P +MNS_@,5_5STS:Q&3H>UMFO?B%*$-RV/:,&79<YK#;-B\ABA@YWH9!<%1V$*Z@ +M]^P!]]/8D-B<XIA:FA[VB3(,/+_E:_/5$8]T^.13\L80CLLAB@<+AG>=W]HZ +MS)C\.NR\..&=QQ/*B,1WOGG$(N%`9+EF:?I'C>3H9?X.(T=*A`74C0&@PTG. +MK7=0)YH25LLT0$)W+/,4!'5'BR>C'14X-CBA[;V6&GPC-77L.$@YP@ANBXY: +MQI'*Y8]X"'`V1:_CW?$,NES!6P]Y8;DIH`HACX`H/ZHB@*>Q+;T48L54@/)) +M)_,_A>UI7B%I2N3M;`!6;Y/+"6'O\[%]UWCNI[R,%PP.@44Z5.FCM$(R)$GK +M2(#S`P%45GG1?8=A*Q=_*R]GGEY,,=AN`PX'Q18NRC+_N];('.T3>896HEKJ +MAVA_1[5_6I`17.2*9#UY<8H1<1.1448WL$<75,^<ADTD&X[\W;R.Q2W%BLC0 +MJM8R]W58J%-<K^?Z5,@Q?K(`\8&A#RC5&&!DD0,'@S66L-E&%9YKTV[&EQ9: +M4?YOJ][]Z+8S+)'V;!*QRYRRIL@56,QV$GH/@LN=?.>3A,&^\[YHN'2!;7]) +M$4:ZE5[08MJG/+,7K54?XZ*Z_HOW3ZV?6#4_E1B!$[S+/JR,R@-ZJ`5SW8#` +M@RKR3@(#M7()*D[>(<>*VCK(MB.XF>HA_@T9<_+NA$?1J\=:E:G:O$XT;S[& +M2=E)+`7*1J7BF0C3I;KM_>$C/F(CG6N=5+"1->FG&DPX!.Y-[)/M>M^8[J4S +MYMOU>L^6GKEQ<C,W//3CA>I?@M>6$XATT320RWZJTH5:(_'&/`@)FLTV&K^Z +M]MG[-YR\C<TU7$<8H1=8.[8Y$._BTXNQRX#;45QQA97Y;LDDV72)G2@A<DM- +M,G6S73=-!:\]K*Q4[X+6_(@VR#2%.A_VF.OE>_E-^J+=5TR;D*>;_KM9Y()] +M\5QXO;W(/ED88M=-40YA+2Y_P)#^]G1X#7A90H?`ERN?ZDEX,=%\N90"3<C0 +M0PHL`C,LL>N&.7+F#FC;D1:1&Z9$I`?31WOD3GAZJ"V\P!9T4.=^0!J1?6/A +M)W+T1,_9M=Y8Q;>WNF\XK*+Z!)QBX;82./SR;HU!3OY;J0*.GC')<\U""(`Y +M0QUIZ5D,`X71Z6WDN-Z-37"V2"1][WO-69SDE(@_,FV)GD;TDQDKJHJJ-I0* +MO-%3K8J"E]E]7X0K7V02:^G6XJ<Y..K())CX9PISC0Y/&L_SE(C,__M:7<H! +MW_Z#A7*Y)BP"3"8&V(+N>P%3"S>)S[3PZER7`*R+<%;J*0^\1^,Q*MW2F.,+ +MLI2*\`EU4-"NDJ3HD:<EF6C$Q.NIR-<+K'U1+1Y$MT?[M9.\9L,&5+MEE=*% +M[F6"U<I@8:E8R^1+0O@3M8R_27BO`Y-'L\I>;=I'8A`9@QM_6$_=F4B]=(6P +MKL*K203L?2'MT;,R.1.\'J-;O[W^"<EEM^.5!UV[SK+.*_`KA<7SR_?/BV?Z +M^K;R"N*9+_2#%CR^C08DT7P]*;("0,LT7%WJJIO*R3F1;$6<7O5I[DFO(E-L +MWJ:OTBWP*B`@>$B2"GT?'4_%L>M)^+,SS8Q7)W9$%)L?PY\1$6S&]&2"D>LY +M#TB7<WR`K&2_]*J]_G)QR&WZC\&OW[JHB_*`L8?Y>S3UFN*]&F/)@U(:O9HC +M]E,$H37.^2]>]@SN=7SG0>83N(Q=ZO==I.",RJ-&42R82!EO&#A-$)NQ#%). +M:R;UM(.RCZ*@*S;/L\^">:+ML\)<BT$G_S+N2IAE=`:QD^5",\Z&/AY.QA[_ +MY8"$@^/5=?GS.+U?+COWY[].F^3Q\<W^"SU+__!.ZQR54,0(FC!?NLJ\X2/V +M6K$!%$7+8TIM^+:%OH&7=]V>\C&3+MS*NR0R?"+G`,;GCM<R:#&\*^,&$4.@ +MZFIAV]69HBI#)#-:FPL@MJGRTJ/._)F)Q<#,OG`PE/,A`_;A(SE[@I7G^VS[ +M&SFTW]:C(_)Y#3/*7%:&DYRHC77B1<X$JTJNC#M';H=6(SP?`T0]YI@QO;N` +M[]5]D8A]?Y\'\!$+`$]+ZTR.>>+:8CT0@7N'H)(A<G$-(6C!57%ZPQKMH#9* +M@85<]44]L!T=:T5S1\RRVC[US76@=$$C91Z@0C#H5=-_A<LWDI.V@F$%&:XM +M>8J9?XUQ1W2APUN+FV4),2RJ5LJBW#I=SCNU)N!RO=N%U@G[I`ZS)O8<D;CX +M=S[&3*,;L]X]YNU;>_=ZM<E%&XE%A)^"M^HRC>7)2KX;TNRE1C[>%^WO7'3F +MRR]/Y=`4HK.2+%K'EKA#FX&,SM>&E8^1#1]$&96G$2DV%FJ5/ER4'Z+9>_EY +MU#'..66*7B7-M6TE!J[5.S=%$TIBU-#/,:,YQ:-F#5Q26Y&8NC?60"`A2P9X +M<0<CRNL%0W`0[I2$/C/@>;M.(FSH?\Z5N#`)M39VG8:6FW0OBRQ\(Q/O7"QK +M/)[0)K1-2O+NX8>S]NM\3&<P-?P^:];;F+DP$NBB"3RCK>RFZ4%D8S!!K,I) +MC'Q!M-VPT:XZ94*GZ,V#6>?)2L"T=(=GQW//0@C4_NL[EI,C$/:*M+S%8YP& +M"G"=N`ENU[B**.:B8=XE0I;J;304Y4!3BB09Y[\6U>8*EZ@,KA4:0RX"%1P" +M`D\$]U5E+;P'??@K#NJ<(0_?4[U;18NJT4:5&GF2Q/HTO_").`YC6]]4I76^ +M`*U]%&&PCFVP5J]`5=R;3,I[*E.W&0!C*ZFD8KDU<[*'$CEI)D2%^IB1U=4G +M6=([`QLK8]TU)9A3F!G1N6O]L4/V[*)&"V:#$5,DA!!(3+!O/`N8BY#H4*M7 +MOG6?7$7:V9<UW<=%+OPP2UP%\FEZN"]2!G+PV@0VJ7#Z?/&_V,8J.-+=YZ.+ +MF,,#R[VASLKVWD;R)=L&E3`!"[Y^S>LYG.7QQ`_>)-RGJ]7H&)N!%D6"R.@7 +MC(Q[08B%#<&[_SK+%EWTVHI#R9TX#>]"A9VW*1^_HB^N#L-G1G;F]8^U)A<@ +MYXKJKB0!(<ZT*'_5KETJY8%K@-:.=!A7@H^PTYJ^GH^AP<PA$%*(O(K&YMHZ +M@'*I"DE%B/]/96NCQAO7@!F'L#$,U`#E3/''$/6<>03J,1@CMJ&Y&CNE^>+S +MHB]YV2?.U8KVL5SBINRH6GI7O1KQ;4QV(/(U5.[28[%E1$,&%8#I9[C@:W^5 +MM]JB/^+@G7Y)6Q!+A=-"1WMU!?LJ!WU,C7"FN;<I7+Y_&ZG00Q3.0(182_;@ +MGP"'3?0S6]^\`RSB2P-JU(YFPFM>Y/'6^=XL^R7&?@V(O'W@IE\?,6>?"PW> +M:J66J/G]B*MHR:DU&SK4@KI-4]<:.UFL=^]*QLA<>IE1K4XSZN'Q`##$8=[1 +MQ,RKL;(F^!7WB`6B(+*9T$A>9L0RV)/R#MW89?Y6%JH2L;Z[J:QV+V@5\5XO +MF;;2+=`P"OLP5L)-9^_IQ!J%_:`0[F#YJ=16Z(6[]H1D<XCEX3[.9"X&(Z<E +MQBEH<BE^09H/)&B7<KJ:_WD2/M;WPSD</FU'ZFKN^0+C,;.YI,3;',$%VGO& +M2%-JXV?;M,\GVD>N"=W2_EF9U_I?F.@?]F!$)G4?4'S+1-DO8V!U)5C1J<)@ +M4*8S'\R?=%R!7\<IZ]0ZLR*<O0+S+M*N:#*]]QSFU,9PA]2^J(S=3!"7P`JC +M&3/#F96'Z#/]Y^]3I+.]YLTX`Z(^)Y[E&5J.K8*P9[#=SA$,$HB@(O,L62`[ +M.2N/V-W[<Q2"*GFE('9BB]`<-\8_BPL6M&VD?#-?H&U-.<=+LXE5*?51<S^" +MGG?&\D##HB)I;;S$%?)EI\$6"[H1LRXR+VV&,T9]+H$?M_UJTPNKPDJ152V( +M,&]V5R'9XR?IF*SYE43-JJ7C8>=O_7G^X:6U@T;LW55UE'JUQ=[BRGNZ+7AH +MVN,+>R=M-,,5G75@+GNAO`I+9B$?Y#A1EF16N;JD-@7^65G`FI`J%6XU>D9S +M]O%H?`357S">`^WC\\Z@/\S!-1)`7L72TN[6^ZE/N!00<FA],T\6ST#AYRPX +MJTI+*>T]>ZGHF<U"]K#MM[<[EN&4#25SCD101T';)4Y._R6W\3*R$,9VF?,7 +M-F0<&&C,B\?JHQ&"%A!K_(ZGOMZ><OA<Y$/1T!-TZ%N<4M(1YQ/TDW%%UU;5 +M^^]PBM/M!R";<3?Z,Z?U:>;!JC3XH%0XPN!G5Z,"+D8/4<I,VK3E7WMBV\3> +MSTQ82E>CD2NW'3+NQ$YW&_)2X>NLYL*"V->WP80LE`D-C90LUA:[7QN^/`++ +MG$&0[[>MY-Q]'P$4ZXJG@//>2_)4<3@5E=PX$4Z,-SX=^Q+^7*'?*(GI;ELU +MH@7]YR0ZSSS__P%HL"1?MJ,7D)\3A.!91+0B)UQH[^Z\JFCWL`TZEJA8>#.P +MF8*N6LX[25,4WC&"8/08L#\)8?<N5P*XX47U,V0+<@NEKLQ[0KZTXT"O3C\^ +M::HVDX=Y%R0U-#D;?:-D\,.E3=]'OYZV+IXNO-:+Z-43.A/="AYN@>*HX%@' +MG4!KX+]H@^`O\?S7+C=*OWA&03J;XM0:F]9P'$'8:/D#)B><^](SJ4;H[`Q= +ME'.'(9;7Z.69;KA%Q[Y+R,*H,W`Q/->O?1@DVU86T.%T27_LN-^0/OF_.5J7 +M^QPNXA_0FP"R72O</&1]-G*[-7+:?+:K#GG)K&,"4091RQ'8\K]M+RS,W':Z +MWI@]3*-N'&1;U$,&_)#A4:%GQ16CK?K8:*Q9I@%(,$DC80K$$SGC%FH`^9T5 +M+OC:^N$EE`?+*U?"OXZ`\4.A1=7SN%,J6$L-%]G<%Z3/PP4@0]S1N+].#KZ, +M>]-\8(6+XQ.8\_$)%&54I=PK`3G!KG/.HX@BROF50?$_\6>['F.Y\Z<0HJ;M +MO8FOP!AQ>Y"UFJN`LG\U.*"Y]MB-!0$3Q$Z*B]5Y(5..5''G9WF+>"?U++CI +M>UP4DL3`,2$2Z(X-ZUFSMTOVAU7PC=[?\T(^!JT;XPU](E'?`>TD%8ONG6ZM +M/J9J\%]%CVKBH(M<;A(Q?$S+&AN7J6@DS_8!X)RB=4CS8`\T^Q(OY&H@?K,G +MW&\%R0L"G+#YD:T8MI9@AS*=%H,\P1AY5P%]X6.3>O^/D?'3VCPB[,=K.4HD +M0%D&>XWX:2).9XBUH/"?-20F":9O.`>]YO$$-#KLL6L>K&H[=,LL->I4@/9C +MGQEEJYS1$(CC,P3ULY%S*$#H:N`FL^J=L[.C7T8B3X@8U$N3)VQ)3AV3],(Y +M<<<EOOT!5Z.GU*',97";M7DH+.E1X;VS#70@'PXL++5M,-I\;?-*\TD:KCZZ +M6>*+U>O"KS^DSZ957'#R,BY6/FRSF072M<,,2:'>4.?8+2ESL%M1GBD0CC-- +MY:\>5ZWQ&3N5-5R"*DTG$ZGTK?,>)0XVPU`E5+/420K'A/C0<=V:U<8$<![R +M`9R,-HH1M3,`+:QMW,T\@(#X+=W`7WJES;J8OW@W`*1FHB;0KSKZ,8FEK\W` +M]+^L02=P>/FO+H4R5FB.6(#%NJ]MM=UI[&V*LG<R)+QPZVNKPZX1>J,Z[8DH +M^!4ON`#]0K!=8J=4]C!]CDD0%>2B?BPYKX72DA\3FN[K4OM@9LL99'Q+18^W +M?`U`Y%CX,D4<K862L7%WJKB:>D92FB<"-=5SF_:+%V%,Z'W;%/.SKH*PJZ+9 +MT:C`><$D9PIG%]E173QD6S%YRFQW[\QGPM57TCB&LU)EKWXZBZ$^65$3O#TY +M\U97F#!X)=!([&;/'(?F=T>NY,6O9D$9V:DJ=WLD6^ZJT?]F.D+=S#!@?$D- +M-S<(";-\&K>#B%H2H.$%%2G7?:SMEJ-?W#YYV#WG`Z2S$?`#N\P?1ENOW[BA +MV:K`++'P!;.&)XY3Q^9\13*@,YI,N1BW>9Q3HT`L(Y;X_O8!#J&?22JOKC*_ +MWC@^`,MU,P8KI<0.:RP)\7C"SY?,K&-A?SCES5D)]">*6V!!1T_`OE9%60&> +M`G5"9K(KBL]LTCMIK_)@!!T#1B"LYF]?CX>::K5J@S^\*JC<[%;B89>#X\^[ +M?N%P`D'L"<]`TR2E8.5D9CT%`<0VI:OF=;-3)M&SJLMX7/P]+]-,K<^@U&GJ +M'8ZM#&/S<UTS(FTZOPRGJ8#U'C`^2I"5!H>0NO@/A68%FIK$)7E2[GLXRPT+ +M>;Z+Z7?A@,WVNRD9'<_9S;MD*C;],L,_F7:#&B84RP%&5C.<K?J&@=DFY\S8 +M964\/]1/I<"C>_NW`CK7\.X)%E;H-1S^(I,F8,+,7'O;=G/@^+YW=[I8\Y-8 +M^<7QB[W\.T$MUFA=\T\<O!Q/J#]QR[F:F/Z3A,Q;R9%][NSTT?<H_$1C0F:C +MIB^@-K;HMYGNRE**=W@_@XD9&#-R0Z&>RP@[U0WB`;E5$D;?%&J2K(1#D8T8 +M0WA@9>'#1`;WV;BTT^59.P?`F?.85V=40(M!Y_*'NCM&LPWSOS5[A9^@4>`! +M168.+I4O^4`0H[T2*&5J5GCLK:V<4FX+\0!9)_SUH_<FEER2YUX+13XI$7=+ +MQ2L*<9:!'E['OA!2S7KT9RT^[R);"GKO(2?F[DY1`)9A"F:POT.F[T_%2O@; +MHWS5BDW%L%>%3#X!8Q.R\AR56D0;U^0"6-FW05,A<<8:LQ1U2FF-Q<8RI+X! +MT\03>EB/ZM'G(&(H:.GN9]0J9Y:*XUIK<\S%+*!H#KIM0^D$1RYL.TFR`_PQ +MZ-4:AON"D;)P3PE[S&RG]EA#QXP(KTHBN-/L9/WJ;L:$.\BA>NB2Y::WD^3H +M=5274?BBO$@XX.E&?GU6T-`C\%:7$Y3IK_U5"W<Q)14>(GB1P`S%6V]:'N*[ +M+48^RH13>ONN+N>5VN6!C#_&EI.2<U<?'8X6Y<F/,S$/D@W^ETFTE!EJ3\'' +MZD)3D7H70RFI=\()JN+LQJ3&ZHV^_1CVI@##!G?V1Y.)CB(D.X;]%A-QLEW6 +M&'E:X_95&#S52MVC&X(`]+#)28?ME]#_H`(@EN`CEOD69S6E[)G!I[TWT((H +MB"G^%,V!8J`L:[*J;XK'271CA-H<8/L3O'"+G7@XAFSZ745I*N7V?Y>OQ5'` +MB"3KFE<_FB(@K`'=U=BEI.+RJ"`Y`S/XCI3N()&4OIL,=R\%SY8,MIQ3@CDR +M$6';""@_"3`/6'H6E4AE*.8$E2A3=_T[^V3.RUW5,+K8?3*AUY7)13V\%;XW +MUFJ,S@-FHG<UJ')PNK*=4^&^*$8-DG2[A\PM04W-S(A`IH@N_@.1FT409<$8 +M/_TB'B-:BAP;]"(.VX@9Y\&@A^*">[51X(4`-F[I_Y.5)M]?3$9KB+44:\K6 +MQX*OAFBL;_\6M<YC?QH;H:WTRBA`*%3_L%+%773&_;@3NEHU(JH02V*G[C1X +MO8HV65K@TD"#U:OL20&A\\;[O+:6USM.FR=5$3_LU8XS?NIY-WQSD6UAO70` +MC.AIS^XEX>E#EB),W2X7TE?R-=X\SC'2"O^8DWY5%<K-0'SS@&66Z5SY73!] +MR0BK>C"UH@'P!3!@T8H'3F=?8)877J!'N33P'<<U!(76[=&EMS<-I.7HWAZ[ +M652\65IXO@]'(W$$,AX9`I&N5%:YSV]-2,CJV-X8I'Y4!!2HI5&"T99D[.V> +M.*E!,R8"_1M_L4Q$$P(^\!IN!1RW-/X+6HTZ=2N&S,OQ?K)?R1PQ:=A2_Z&\ +MD8[^KW-T]E$\(`.QNO]+HU6Q>#+U:2IZ,E4]F#_$3ZHY23E:4#;W^KS>ZFN$ +MG1!L;*>=%;JR=,MLT^)")7L275PQ7U9AK^?QEMB?[S]NF7E5]N%178'BEZQ, +M<5MY^^<?_H?T84S;FX:_`$5=5<ASVB5+9UFK4W`HC9$E^17I/E9Y9/6HXPG9 +M_-G[ND\Q`1EJ*"=^"QTK##V?G%>/G,V@G)]11.*S[K]3T:7I"6^GK?(2X-/X +M'QI!!2-:Z?6/;"F-D?P8?G502XJ6J]]I6R?N_\WD7,M*T=;X&P%N3U7I7$B= +M*0RG@[G_K!1Y(.*-4'6[RYALT%[HHC=^E[14S^M%X^HO@E!OP*VQNMH!D=]W +M#C;#^E1AFM4G1\."^A'D,&W26\NN'Q#$DFM,G_1JJ,IB+OF)_VL&0W9F'V2P +M,]]L7\S;9SLOCT"QNTM;&+,E>D$;13SYXN(AV)60TI9_'KJL3$(2KQ5![N58 +M'WA[)X,D]OB@"_&0KU^EE(FS>GB%&W%Z-I?YKP)NXV2ZMN]V4[V*?W(C7@!# +M8,$O_BVZ)9"YMZ@8@PU::R3RFRPH584MZ)'HE_?Y?G(RU_0Z`<.KDP?]E&H( +MSZM)]PX/`D7YFD8&;YH5IG$<U;)=3\UQ*=AP"-=[EU&:RL:C-S7^GZ97@]:3 +M\'V<5"Z(LZ?^9'`'W&#GDTP20[7=>9T`TH5^X81Z?9ADM(]RAB`?D&ZF>,P@ +M9-HNFEMP$>8Q=+KE]*MC('[?=37E6$Z'C-;7Y<M=3;"P)"K,[+UO]^X/&*,D +M#!GP,`B%=\8BGR-.P#X2XA@5^5O0O]18K?=;Q;[P^#9L/957F\OP7D*HH%LG +MNY;U233E.DYES/V,X31-D\NTU?M(@-RPFM_S,C!.GJ7.ZB:0%IA`(1I.96N) +M9NV7V6,@S_?K.T#W+"/"[$$^+_/U,_>;0K>YC9PA&A3+`8$%$^"*Z<O'=RV, +M'G?#9$S?P3PLJ9UY'E@;3%I+_1P'V<UZD[X'&[B*YG,L3WW2GF0`,#>2Y)<O +MB0_\[DON/(-I(ZS%I)'N/Z5B+_((%@LRJRE"7$Q-5*18OU(B>%D$R>TWA)*6 +M:1>F>H:Y8"?,,?D&5)@!E]`3&<^<>'Y+]@)O<W=^RMM>TZ-Q+%"4H5(*F/JJ +MJNJ&05Y5[G#Y3BE#S]#Q4#:/(,Y#"[@*-+(][KH^9B$2*'QRJBX/FLD.SI35 +MFKF#&Y33Q>Y())J;-<;%E_X<M_DUKS;=$OOWFPLR\B-UW4S*XP&:HBJ2GT^Q +M,-9@<TK5*WU!&***S*W#"+(_U5]9`Y=57NE(MS<\;F9[*H.#-X_LF=J`NMW! +MKI*O!%7N`QP?PTTX-WEL-4@M;+438FG#)BOJIK0/_?/*8)=J!T6G&W\XF%L0 +M84HAW,"VL%ZLBN;V"M:)P>[V)#\Q]&XU8O#A*`T0H.2)OXN76#!OF6/6@F]7 +MW*,\3CX=;"'!*"P;W<:1ZOOI@3]?([YO,T^@QV2>\`YH+0?QU#.<0U%Z"H8; +M*^'EC4[,9%;ZLGF0A:QA=W-'*)LE$&H1-A<@Y"-:-GI2#/_*>F%='B%"ZB>9 +M?YS)[948MS-`.4!81\Q7![(6T,3`J+F5+7GV0QAY)4/&5G>*``Z3#;.37)O> +MC.97U3@X*-"1$SW`MKP$4Y"NU4,FA%WK6#8_Y5^]?HD[L<@7&\4CVHK]$OT2 +MT!@B=%5H/53P7*N"AC4]KX1T(-+"$03\Z#B,:VZ&1DDE$OS_<[]$QCPP]J9K +M>NTGRBZ!*TLXA%]?T5IK;;+@1]/J2V$#\!0KNRL78R-@YD2-:!^U-RF5(*S; +M6QAV)84I&4!$=02+&Z!5-241B$8]$'D<=D%7)X`77N+($NZ)P!0$3$G]XQR: +MUBIU&/ITB.D&QD8_#!BN91P@AS>MJBF#VI53N_42=<6S,]^<D512F<H^N;[) +M5H/G[J@>TRHBDKM27\5#L+^('";+`WO&3MZGSWQ%J;*%97;O85S;3-ZRZ#8; +MDW*0.2#,\(($>$62U^W<P7"DE-1Y`#>98?QPI$!\Q#I]1[YJZ_ES,1<6.L$$ +ML82XLI69F#5('(4Q_@R9!,0M7X2>KR0//LEXQ?8L7%B1%W>CYQY'8[)UW-/4 +M[TFDYQ!`GQ-50FC/>@32\WE$HEK*Q&"NFWR\O`;1N<G`_FTHD@PK=C:`7>L[ +M`(?I\45$C0Y50%^_[Q#Z"G%Z(CM_&=*U!\B6?\,HQ>CV*(8PE.7E=.&;DMRV +M'%#TK5,GV9X?6.Z;P'#.*1G%C9VHI*L-L71HR<%YQ0_C*]G5P4WZ634JNWN# +M@1H6BVWP3]B)?H@FW9J66+UP#5+959JHONG@_3=($`A!B*;&"P=H;IDGT8-@ +M7\C_8\"FT$7@U;C%NOYD=&/E,5%,B/#'>_[XUI28"0\JN_(OZ8OZAM-,@4*> +MWA.C;;F+[=6?V_-P:CBW\H/<:JO\X,%$;"E+0<CW0QBFB!;'9-P--QI[)KX1 +M==NX6O:C`I0\A<83G0@K7BIWLN`_U)0FFG`>TE'EK89MK6>^C[9;=18S>8IP +M]9VA=>`;TT\9U*(4%]M`PRO)>7L66CIVR[@U/!FL#-9\O'M3.J`SZ5)=@\X$ +MAE83<$K:ZI4:Z%]_XD[?7/CM(R_&N.DJZ;P0=.<W7-+6*2V<PDFHHBV"M^8F +M<K)X'A.$V5X7<V*)SHNX\J5]?<<,\:O4B8]OQ0"YV%5L7Y^`FV7<R$C1!6:O +M):P1F..M/FX6@A`-U;23VE`,)/96XLH7X\-!]-*>`P$JV)0L3BWV;3\0^DA@ +MW<12/__-/=LLS^HCZ5E><;RQN^^=SJ-SNT%?91$>Q1]!+*#RX30AIN#]L1NE +M4TMF*MW874]046/XI=Y__/^&(?_.5B251)6L$^7D=A85\8'%^442Y,;6@O?< +M)N[*8P'O8\/0GDORO:XY:=Z^P.7"W3';"/^BK1Y5N;Y"4$*S0+GP:Q:M%KI4 +M3U\Y*"726E811R/EMI8`V%,%?-O\/'#UK*0=5#?(R^5U7.GH?YJ6TV;EP.9G +ML@XY\<OC>*DU[FU4X+@!5,//6<:*3A:[YI-YFJ9PF%!4;\K:=Z*^WDH\]&C5 +M4L#"7(X866A%@D]95;+8A9SMYV`O'/UATL`W<][GB!E+FC=YD^*D%,F)N8T5 +M6E:MA+;%0LYFIJ("95F)CK=63E3"\"FV%PZ`/0H9.WQ?DY&*QUMX(RZOJBP] +M*P<&1;KUOP@UXU]H2C`W>^84I^-XXT$/]@5/PDP"QH=M]FZ(_W$$02-+-[H` +M$5CB([_UO4$N>"F][XI:0O=*>AS+_NE@`?W*R6B`51'#:"8>\"C-6NXXRR\] +MR5<&QNJ`:I:<1D=J]#1`>5M<>USVSQGRFA&MZ_)3DPZ-I558K.9+IA$B:;IB +M-HK\^NI:Z]"HJB'J>@EW)&MLKFF_%H6LPNV^F$?AI;TH%+Z-N.RWV11[WC&: +M:BCS'HL+DJE<2J2^%,"(_X-\O\`RHBJY4O2XDIST=9'"Q?"XWU-C;@1H73_8 +MX+1!(D:M+=G!R"%!VXBA,Z4"$F6JIRD6';&NF(^G@,T_)2_=IG#$";1(=UV( +MH$1LO7?BN;\ZI6LI^R?,/U:M_CV..6M_?YAMHJ?=.JZ&BY`GH8$IV@56BCC) +M[&WU/A#>(Y$*W-"+"%YFX>[+3$5>31FXR0Y8)DM$IISZ^I5(ZLL0R!/XO>N7 +MN8'TQL2VE#N^*M?BX>M`<4&KD44&$2?*^7S"U7XC#`&L$ZA/P\B81\_ZT4// +MS`[#P476`N.D'X4N&X,\M-TU#6(K*3SXA/:!T:D!NARGY%B#6)5KE>2^1Y<0 +M_,6"N*G31C]7TR^P-OIPW),9^UI\DZ._G`KYL`P;4Q&^?YX%[^%4)3.\2=Q8 +M)0$88G#QIV<_`._E'ZL!.4/5!<K&EOJ1G0USSNKN!_UC:;P$`JT_+KC*F(VQ +MBYLJ4G=<^/;$AW2JG6H(.G3C'!P>\&7DJU:,/)2;P54GBQVV`#0.^0WL<<(# +MI9[]AZ2L'6XP':P+NJXWNNN^%0J^"77.N3HQ"O([L%43QAKOD%)X,_!?M2?` +MKXG$'=N`K(J>[L`J%W?V=]K7957!][IOA(8?"H/#P$KL&B[67I!74<E33)$5 +M)0_BZ,P-OOT]>W2C$12YR?R(N*T3.Q?5QISK+[4005!MAP^%(QC5%A)IID4` +MAM=3S8!/,#;Q`\%F]-KX5&J0W&T/[;7!7CC*WYM6"'*N;:JN,JH7QUE\PSP) +MS=[1R"JTM-I]#OV[M2?!Q[3CT(RCK*Y>J1+&M`T0E4Y2^-.C&!%PD(/NP2HR +M8\[^Q8XY;UPNW^T'+T0".N^)`"XSRJ_5SILV_-\<Q?-Y[?_I:PO;;8GI+\/5 +MAN^?1`[EY#-G+VL,!BJ2SX6$U;LHW?&9VVQZ/#0;B:LN4LT[(ZH71@,0/!HH +M!WG5$$\XX/:$8X'UVG4750B9=P3:V3*W&)\X]\R]X,X(L!,W-V>@"8+8+]'V +MK<H_./,W!*.L4E[:L81NRMY$C>(T\T5V0R.^V((&%V'$><#@N!Y1.H9<4:ZF +MX>6#ZW6S&`B?%HM\N[Y.QNJ*&0U5)<GEKV'72-;7M<P*'KU\+SC<NGE9KMPF +MRK2AM\+_=5D1N\GEJ7<^1J>9"=&=G)*P4<.",+2C;AD-H-/Y^@5=A.`YHIQ, +M%8@S$;L`,-M#DA<%C`)0(CS74?2)B+FFSN2`Q^4@TI>0;5)?7UQX`,,BU:TN +M*M]GEDFF$`U3#Q4W4NYWX8!`9$RXZ(3P9GKF#-R=`B8R5X6_R&7A92B?I&,U +MUJYY_+H!)S75Y8%!\*]EE):+/X6Q[#3A@A]>.B0ZD/8*'9DG?^(C8^)O"E^G +M^6;J2RZ?JL90W\;$8"=?Q+O9;R;+`)XAI[VIN!G"SD_BQ4'A_NQ:SE#8<9F3 +M*(@?H^&!^6]F-YH.O*-TWCL9/GV'0&:\`N]04`2?3-]-V@J5CEZKA*08H@&1 +MD<XGU>S6992Z?MFJ(/?:57.1LSGZGHQP'B*C#F9X+*8F1S&YAL@[?F+68G06 +M.;:]TACHBAS*4'[]2-HG#*1O;)P5SJ71:_HP1!Y-"6!/VU!'F<_SU%Z;\BSJ +M0@J1=R<I0BJ!8%'D"8-:>"ZFU+)IS_G1_`2BPVGQ:\LJ[@\)]?Q4^TN^E]!H +M%0WZ;EBXZ`A%I3S&I1?Z?H5=]@RU`RLUJ@[[#B9+N.\._(!.@8>P3M.((2A0 +MZT9#R[(_+C1?)KM24CD;L$O(!/:<+;*NX?]0JY2XD[`"'(3U&R$Q8:/_,P@- +MZ%^%G;'TD4Y6]QNNV4.%Q>U+&;GW!X-1P2/P#A;,)SG^/(I&[K?->4(4/*>\ +M"LMD@*3)#66=-9^.AY2+WA>4&;NW:"O`O6+7$T)3J5($(ZP3;O-#+W-A^$_9 +M&13\>L7>BZNB5Q.4?UQQ\G\)L&;[XEDV^WH8L$DKYR(P%;,#WX@XHO4PG-#4 +M:#ZS,+*+L_N=SR487I,$.J,.1S<<!2XCI'104WUZ!DK[5IN"BU*8$!4A;/E> +M7T1*3/\7+<.]GB50FD_")12(R+^LDQ9I"X'$K"BG=FBC\+A_0"PEF2#)A/_9 +MRDW:%/:N31?H[F!W*^O7(!5(%K\;Y>K6G<,<;Z2#:IP8Y"SAF3:LG5U7OY9L +M^XE/^2YV."6=Y!YPKM@G1ST!/1R=EW+)4RCZ:'-&%'W^S/W4C6_>$ECX#H_C +MD"8E&58^TZVDM*4RT'DMQ(\"G%DKW&XA>CR()Y-JO>2X"G>CTNG1U25:0%R- +M7RCVR!?AB_"^5L[%W4I_F@#FL!AV6^KE>B8A2Z#SS5<081O=C%&W6WP!VTSD +M6K!(2EC;&<Q,5D121?)W?IDC0I-?7^#'Q4BO`DR3YQHU>A`X#-](S@''3AM) +M-$?R@"?.S#!/Z&PP\Q+$]ETS2"3S)['?"83ZR)I.XX$TF;$M1MZZB(FLFF4# +MX`/*@_'U?R_?-5T@"^6'<5%<AFVU`^0$E-L1*@\.8#XVHP$#*,HS0O*`J1O3 +MM*2-*-E'P\(1CHF"7HBMII&1X3R0FKDUF?O=F-=>E<P[J)JD>W<W3BN1$ +MH?'/6,<SS;IC-Z((#\BLLF/]DT<!/\#XF6.S*(<47(52@&=$*L1D;<4+B@)M +M.LDG@6X:IK*``@9!M./VW]L+/U#6ZF-"`\RQ[(QF;+<9%`H![`!8C;#9*0Z1 +M>&QSQ%.%)&1VQ_N+`J12\\*6W-_!CU"NK:1!)Z1FB"/<R2(B8;VG6F<27=FG +MDE?_K#V%-4=YM0/0E,$]HH_(L0N+;\KQ5ZC_=&'MQ_])Y3EE%S.I:F=GTJ5C +M5W,;/"]J50.T;$FR\@BK?(=@.*&!#J&:OC<6^Z=C,ZM-P&>AAU)WA6WG1?Z` +M*R3>VOR)GRP,<)$S8UR&#'JD]%5B^X]0B!\I(/LQNE^0GMQ>H%+B]P'"I)+( +M6T"67Y1CZ#^^'IDSJOPHA+)6,]V:,%O<\@E,,UJY_;??E3)RQ#I_8K0#\T6M +M:\O1GEDML+)@\$&`M41F3T*^#F^W>*9?9"3L)QM$Q[-)^CB1N(5J_$8OO$@^ +MG.X;8)OS^#I#^74ZKO.+Y!0HEGDE88DOQ1_&>J?JG5#UUVY2^JA'I9<0!"^X +MT/Y?&H3Y[3\=PW<SV";A\(^?3,>;7<H!;DK[_`Z@0TP2<`:+8OA$913O[V?+ +M?\=TRL"?6,ZN=X/2>P]&`3)F`<QEF0"G16JYWX=`N]_K>`9Y+`.`=7GLHA/` +MC*N]";A!]9JS\BNKW"?1*]*9=AU-MQ#/5*,#QL\TUB+=,8R&<BPUV9LXLHF% +M2"F!WOMZ^(,6$U7WIOO34M8H_J*/FR[PQT,:0(^39>^S<*[7E^ITGT30?)9, +ML&$MN>4Q:IF4^H/<0!N^&)-2>P76:XXW.>_Y>Q="V4@\-M&W7\%"!?M(2`:. +M/Z:B.(3W`"Y.I/!6KOR=5$3&&?47ED3WNB,1IXBU@PR)\.&K9':'SYNPTDP3 +MS8AR'ZVIX,.@`I#R?'FF/R^BPOYA7MA9($+3LO&PXIMGRUO=H@60+A"K+=(@ +M#PUR+FF<2=534=H!2X%%A6F@(1*5O?M1^"[K^$R;4&F^Y8<AL=/E<0-0U"QG +M6U`]Y]I=FR]T:S4(4)R)M)H+K:M+(011SQ-Z4YQT66##CWBG,EW^&!J3(_]; +M&TX9-@@9!=V;U%XQKSM+7%87@/$WK2(@T9%&M5?J=:E45X9\UK=K26(-WX:: +MN0#I3<!IB&K>3Q-VEIVC0.297Z@E+'W':*LM0IWMW5L!!T![#!!0S%G9&-NQ +M@/W\NC]>;8POM;Z61H%49+JF)KG9`#`JE/303-_>WUAWFL26$VMI2!YEX@\( +MI":85W[*,X?#Y8/,YAQ/40L\P]=H\S4)R.K+B$)VR'8SE/X&=X#T.8M3WFN% +M_J?IXO>LF)=XQ(YAYO\^0PI,R'T@S[4A!MJ58]O9YK,HQT[[36CD%G5MF?"6 +MT;1W8&GN&9#!VNR05ME<FBTVY&@$Y!'M:%V273(G;`[K&_M7:C1;,.AQL-7A +M1,V'XC\34E$^:FBNQU![M.!KE=K>Q.E4*_FW:'0=+H:=-K:ZHOTZ8J&"5:;- +M4R,P`L6EQ^1F>[P\CAZ2.13\'/T5W+;_T5\"`EIOJ8X"6I!`U(66AE``>@6] +M+J0"7D8H@S_2MN5-0`_)R-O5!F(W?&8F<^44U+RQ)K$A`KH_(?TCO)%9E-KS +M+B6'#+_@Z2-:.^'J6(9EX"K=7)TU?9Y7+$7WS@$V]KU?@4?F0QG/UO[;BI]1 +MKRSX]DP!QY4")LD=DMK!E4-%,86SXQ,WJDMMS75LX?"5(MD/"-*W;T*A-+HA +M"I_O_VZ)0K?J&&!MYO,#"3C?)OS6Q/RDB;V'^^`L)!?9IGMD3^^$&53GKPFJ +M84YZ'-Z,J(:>(?*^+83V#+R>CY:\X`G/F,2]76%+@SAK>3;++K%>],O/YWU5 +M`@;9_>39<_[E7Y'*:C4X`V$N66SEONK2&Y'\2/;_$?ETG3QV9T"$\B(67%B4 +M$V6<,[#VA7N(S'UEH</]:B"*F!X_37:([7ZF(#=`EV`X5D'9E%2"3@Z4YF$" +MJE9="SX*O)7^]?,X9`LV1@()(PG'+5!8)1ERYD!Q:\M([V<I'0+4G)$R.0)6 +MUCG*?Z'``;Q4'Z>NTS-!Q1Q/CMG^"9;P%Q>DR+EX-PH#NP*]'V=;Z+WMP$.Y +MG_"V&,%3O.4LXO#:3L3$0',7M$/&$.56L_C9CD[C7@Q0MNXL\"052\Y:--X0 +M:[1%6#8`C[YAD4I@IT8COD-!#].=<L$DD-:G]52?U9=)50F]RS6KE[`VE9:V +MT7GT5I.A7C(XYJ9F[V*Y9A#V#:#BAU)V:Y;!.B[9OIZ@V2YKI@'`9D#OJEY" +MW6.'M/Z@^%@TK_9@0&@'<MU<4U'65&9[&075VO*<0+EHJ;NR8?4`P53HY^"1 +M&=*>VH$Z4@EUA&R7?H#)8S4BP.TW;EU3-U%USDSV'AX](K#UHRC''`K6C<LH +MA7"LY7EV8>ZC+,8G_B&&0U7G_.&W!\A;V4?PSUV,I8`C(X9:82ZUEC[/3`@U +M-NX<=/>R`N@?M#>@P(6W7-!\:@Q7Z,+/"2]&^`B6[\Y4M?+[F4"CO^*R)221 +M8XGX:^GN.D2A\SMW&4J79:'/+[5U`'T`NVC26]C?UC`]#K$KUVL,7*],.I-` +M/W>;+J=`%+[.'K\G(SBY;+):I5NO?Y]_W]CI=37#3&!^GD'+`B$(`K1\[$!1 +MZXY2%RO[U.O$>(QZ!W]EI;;O)JR#9@<6"MBCN'G/_V_&%3`<(]H[4`S_FXI7 +M9<:OB3357K_&W:?JMWVH&!J?^(DBK\34]/N-,0!*I&T`V7^A:1IHD$VQYR?K +MT1^&6\I.J-R[H+)2NE_`NDVG2WE)-A6R[\A.CR@=`=]M3H!\!Y)UET(8I9,V +ME*K5,1P(YV_T7J5Q#%Y41UV_>MWOAUJ/*B=WT6"#J,G%I[,@!/[_Z'[56[]1 +MP*Q$GLNEPNVZY-(=L:<"X9/[IOM.LHVXQ$\B6_KC/N)9Z@R[L17-W2K7M+0R +MPI$6)AT,CE<>0U2"2<5W105<P%MQZ#"2KAQU)X>@/<^B&.--4MAHP<H63._" +MSK^S]@1_(HY!ILS$8&3UX*V:!&>.1=-IBK[&/!*:)JFKF;T]<B-X2/ND3W%( +M849C74."O/!5L$3/K['Z#&/.`+$6W[R$#(]/I"2XJ'26POZS&Q2T6]A^(R;; +M8%LJ"27K8H`7B4(%W'6\*M!4.?JG738]0TS%;8W(I$]IX<LM[A+<-Q[[!KN0 +MVS'8SR==UOD"AG>CYA.'+?])HFZ$=A`W)CR\4:?R[.?;X0GF`%WKL!V:Y;E[ +M-OTXB=9]8$S/ES@2(QY8H6XHT'PP80PJ%G^7+;:6G#DO&2/Y[OGCNKI0A)3" +M*+OYH>/@]U)!1$4@!5+G`YK4,_`%YWY!*VI-]!K^44):8ND?.-@G%E=?&.\G +MCB3G#)SV:/)H@$]<?4DL(5"^WZUN1-X:Q.M'`],$'G7OUBN;:1IIQ;POJ6B- +M>=VXME"Z\]`YH:'TYU]]J<P=,F5<5E4J3H_+M+^,Q(E(%+?1=PEOVO-W)Z<A +M90$GG[J<\(9ENTT?"S&H,V-@\[])TE-UT/CY"92MS.SS61T)&:CUE\S(7:QQ +M")V^XE9`?EZ'TOU<495MQL;**N2RW(D!^WFM%37+ZL:^`L_\50WVAZX<U\'? +M\Y=RMGX?"_Q("BHQA+ZR1B[0S4&K!80[U:_`LQ'`GE][D.G?F];2/[S_J7/X +M$>U??JV($.RL*&32)O,B5HFI9BA?&)<<^&W4!??@$:MK844Z3%;#`C+X$2:5 +M176N#/W2&/LVYB5?^4]/WP3%U2<=8L9_"DE`7W2A`[\6[*,WNT=:+I0#!C6L +M;VP?F($*'D<L[!WI;0X_QX?L]-2%2&]OI.^M*]DP<N'B9V_MM.35\,J_@$YW +MU";Z?M,)C0M2Y`_IK7PM8?$0"1%8493K*D>\7'\#*K/B_LH."2?F0T#IX@G> +M%S>"2H&>'0D#JUY!)7K+#*WLN!7[_BEAMS):B^F^5(](O?UZHT[;"8<9P)_W +M"N1_LD>T33CL:!AHC9?/7DIPZLF%;2FCW;BY0E2)R_QQ,C.L)V+0B(2*M1`U +M9`S%9+]#WK(^@OA?;B&6X_-QF&YR1D@"&EJ'-H7M'IKO:\3C9QE%_6OZ,K\A +MW61IFJ5[</5J":.?90%W#4U5$]K>V\/G5=CS,:W_?6:0725QW;/X"*@/J,J@ +MATS@8_VSR_B_J,\7,Q4OL<((NJ\B:T$_<[P4>R'Y'&<E^0"Z,SN"2^;,_1Z7 +MLBC;%"ULK/GIL8QV-?Q9/4T.MVNF=GE4!'2@+A;4.["E:>0QR]3UW/@T1:G, +M*AE8RMF@AEUL0?'PRY1*)#\7[=(0Q>"=R<*@3;R?OM^90%CH-Y_+%-O*@XM7 +M&5VZ/`)#7YJA:JGP5ER$$H`W@VPER@.R2[6Z;.>AJIJM6W""MLC$D5.$8%SD +MB2-9O-IPM]`UV?Z/K6!><)S02;<*SL^)'0Z[='PF_<(V/Z:`OQ'\;01!>VYV +M:`V5C"2HM-I;H\JD6TO9$9>LK2;%2S@C@5_*?EF.B>/SAQN,6L$RIW;UEF.4 +M-$9GDB*E(M`-@H[,T0\:YAE$FZ`6R*T_+QZ,.YB%#$=HFP/B4F(<$>0P`4UG +M9B.$;M4"SKOO-,BYO;,(\#==^(M]GKV#Q]C*0**5+A7#_MD>(Q8^$X!107P1 +MV9L[M>7*40--%_%`Q4!^Z'A3>57+3M-'KMV'[E`?M:2"'YRAWX55S55THU]Y +MX1`!DXMPV\<>%CWM#'D_657/#KAXP?65A)AV^Q\5N:KZ!=Y+,7LOJ1,G&5K1 +M7<EC&W31E"Q>B*ECY%2T-T#Y:;N5@)]DM:2P/QVM0G:R!QP[H_'PE2':J-;" +M\#>`(V@X0E_3$;XEF$]`3Z\_,IQ1&3.@>?]^#%?^0K$26).3"$@X(Y.`$$31 +M7A(ZFMH$,Y28VE1W>N.),6UVF$Q`)`=J'.:07A<,X"-4W^[5CE5``,8GQM$& +M!K=DO%#D%E&D";^@HU6)ZM#_0J*<?T?.6[3`X4K)^3)]U,FT]1]_N0UFZ_'< +MX3AZCM6+Y$X5H&(GRA7PLP6%3(AF7[G'P'017N\=_CS<^$5=Z<!:,2/:[^8K +MJ?S;4?-K+2I0C*/IFV3;Z_3EVY'<GE0]:+F/:27."B@V4Y#.G\5[ZHY6AN6B +M4#JNC&SC]M]6VHZ#0@J"8,R\*9]?W20B7,8QW('QL*]7VC>$YFQW&UH]^3=I +M-KY;J8HMF<!1!-XE"/6^.;:P5WQ)$QCAH(E:RGIWP">Z:"N00N1^`&3+8,9H +MLGW[.W0?=NS1;R"@*;&(U@8TJXOL\+>._))=Z5MD$6;C[0J2J+/E>;)2++QX +M',Z)CDUXCGQ.TX<I2V0#LDY$^G6/>_<:#R6<?D':)IB5UY)$4M075A*D>!"; +MUV-42_0XJW\.U3&.TQ-_L<,NRU;>KA_?EJ9_BF!&S%N?48'O^'U)7?\V?C86 +M;$$9M9?=S[^X[9G(@6VDJ9@"18308_M`(N!XDE+$;*B]"#@0K_9G)0]5>^`X +M#I!_-;S!8BBCQ.%A#W90L%_6'<^71:="8*+M-&(*H]M9`S!?PY,G';L*TOE0 +M7/P(6*IXB(R,LU84;T'Y8'S`"I+@&N8S](B4=X%=VD=EPDX--UT3DHJL:&JT +M';VD%QW0B-]6;X=93Q+-V/L6*@G+`=^5F2!%*.JHO)*A32O,6<)._+M![?PR +M8?<1;HABO=.NKP83.3).\C2%EZ7%56F_%8QD&(7_KP\<N+!AJ(P!YJG.6Z!< +MTK7"*4X:9QJV.NXKS#U&\O[I40<?-:,\M]R1CG)/%N-L(RE@T1&XGB8UO)\< +M]Z6\KN5-TT*T^$&-WF^G@Q.$TM]HOB.H`7L_`X37!$8V\9LMN[4*NWN=EN&, +M/<9JO$MBV4EJ`LF=KIWQ,#K1EV?X0';!7=1;JEH@]%99RCQ165F)`;!*-NM5 +M@5XS9'%(5+$9L>83`-\<#(D&8/]D*6ZZP<!W4UHY.C"T1Q[;J/-2$F9)&`NC +M]L]N4A'T1-?BX<:QY2C#ID1?9761S.LVR1D4G]E](+%M!&,[VHFK<V56=C/@ +M:\`#U>\F+$B$#!T)!)9(-P``0Q3O2S\S1S-/O3&LQ-<%LON;CVLCG;%=Y^@0 +M.1G2*'0;8M"3_-_P4ZNME"0+[Z.9<VJ3@^;^3=*,9BU./X%LX!>2%FH9+*F: +M*")C;*"HO9&>^"S:Z)39+.3?ME9XD"<BI/05\PECSO$A=M@(#DKX_!$.0]3C +M),[4Z$3HRH8"3)A8B@DF8UI+,;4!^\#57U9O=K/>?<;N@YVQM$^?GTU]E&EG +MEP2Y+H<?=('N?D]3=='<-J_?:@/X9T0S^ST<CZ1K?=+<@Z*D^"[`'?-F34;H +M;-9QI2O0@[<DS?5^^#>)B'L$PE4TGIIVF=+R1YA(OKDHOF75ML5N*&=JX,S3 +ML'UAYSPMZAAJER!\*^0:[_5!=QN9N$!4DCFR]<%?^,Q_E\Y/(-A4_;"<;?B1 +M5>W8:+35*=7F;R(:%P#NR?UO0ZT\&(N1OSP8KQ'"AU.4E#<NU(HN7>>.#P[` +MV'<-QL7:^AX<5`HGB'_OOR9RQ@=D-.^)BD\H'Y/?I(0#6&&L6$D[0\<9Y>;> +M(\Z6ZO3WN=6CR.9Q%(4%_7Y^Y"I:J=&1XC/+(#L$JB_(G?R\:O+3"!T8\RFO +MB5[X@TOPK.(*T(>5??Q<Y8*!YHLD'[?S"B@<21(6'9R4SD1;MD#:J!CLS09< +MF/==41*EF]NL7SK4Q9F6;9$=BD5[G;A.`ZQ=ERO@9R)&7W_:#HB:RX&8X1Q[ +MZ+15RDJ&/YH5.&(#T&NK_\Q1M+-I[=UGK'X!GR87D@CG/U6*X0Y1I"0$<9L> +M6<#?4P6W+3^':#3(=KC,&>3M2?/P8@*<T=-?(?3I_9C]?HL]!@@T'0#UL13R +M$[BF/`38O=XSBKM?48M+[ZMK<EC2$[%IZB]B4,"?C1QW13&H!_QAT-W#]7+( +M;D\(AG!2BMH9@0L5K_]#R_6'JU15[OI<(<%\""0F]N)^Q2Y68Y]2B/F1SWQ( +MT%,.K_&BB?1V)IVJ`-<H!;1,[!26N(`6](@0^5!`!AQL465SOM^YDC3.R69, +M,,Z5,\'0&8D]PE)[8AN:FN*[!.FY/I*ICC1S,RA6?2\'."DHZ.>G:DM4!),8 +M%WTZ;+WJ'`<73NB,!SVOP;M3G9(29]^ZOB^Z6*=@UZ(EKLE1)%L9UR/X',B[ +M!2,U\N;W*@(6>.VK/#8Z=).`6%K09Z7KNWHUTD\T4BAA0`8VT4$0K@OXK#:K +M;<8"8'_5QN4WI*-<""F0D%J-5868;M7\F#CG)^:]WUV@^+)1%:IZ.E(M<RQ! +M@EG04@"_"6X=3<$%Q/<6D[.\$^SE'C8)!"\UKRGWO,N^Z)!P0.T<-5\OB*TB +M@=V9P"H(R_3OG^W,]3S35VG@`@\T+<]QIZ?RQ4#ZWJC1]M`T='S1^/W!MVIR +M'YA-_\)@]S6#$-YQ6F=`Y;^ONO6?***9\!7N%^<);CZ1H:H)ETZ_7OG]Q5-^ +M@1;':A$G7>1,_B2*>I9EYU\>Y10K!ND&<LG.HEIH?TH1A1K:,M-XX-Z2`=TE +MX."2][%"2GR!,V0^W5(.785UHIG@CJ4UV4]-->UNG5"RHQ(3\+P3JY+NW4NA +M39JLJ'@)!-`(^+7N$*,62O)4R_(M>7&23^?DGKW&"/AKU=+WC.FCBG;F;#=W +M)+X8@#U7>`G-IJ_?YM?4?:P3&8D-HLU^+_&?YWPONC4]7`C8$%YH2ZA?A;0A +M1&&!OQ#`+VH[KJ;*LT5^H;?A1JF;`;,^PPC"NF1O-$TE;?VKYG`ARY[G,'YH +M%8K?-X.9'&C)15)2SDT.3F[]'UFS[B$34!P^:X%'%1(E]7(I%5\;M115L0&/ +M64DIODCFHZRM2_9*:^RQTITZIPV_.AUDPGVFG3_YDJYXTA0<\['7!I14[G]@ +M6"[`8A2$"DN^;&,/?)#^4#5*3P*\E1.:],Q5)$ZV&3M9U4.I%\V"EGJ,@OC6 +M5_:MX><2!ZR<7=M2KOHL2F$A6J]I6E\C_<0&E4NQ?7V;E)QQ8D2DUE1R3>\C +M#$V9Z90'4N92-,1*$D=*G/9?7S,-\?/S4LF=^PM_)<FG*(H,UJY,TE1M''%0 +MEX()?OMYXC6$ZY_4D>`Q*O"O$7#D6IA+#%8LGCX#HG/!D?HX'AR=2-QR11\Y +MWAWK$L^HXENX<6"V=OW]_91'J+BH'.B$S93#/FEA%9^SUN7Z`"XR#?V93=_P +M2Q?!KF2:9>\NZ@#+IQ&8U[018*Z._Z^%:K^:'3;(Z>*_*Q/D^17203^,MNOL +M>>0/C7>IJX>A+Y/V#<6^F,IKW\!!IG.-DFL4V6=B94'Y%B5T[3D4L@)91EZ, +MJ(W+-F#1U/<>N2L(DLOTT[N__MH=(-%CLO@```$``````!H``0``````3%I) +M4`&-`%P8!Z>2U-["^)5].:K-BO[_0:QY`;G+*KG)^"B=_8>[3?I.H=7"Y%,> +M2>,<N4RG=7;'J2;>*FBXDW:@+"'N"6Z97U*LPCB[;T"#;PV8:VD4_Q-ED*N7 +M?VXGQLO#_V#X&$GUK<=+U+5&CCX[NL'1CWC,M3^/PUC^L8//T$^;TD=07Z+I +MK&J?QMLOX#EV1B5CB2+>=7BYO/@#?PTA(DI8VM#'X7J*:I@L3F/_W1,9Y(U? +M+P6@U#5+?22WR*X$2HM68)@0_QOR%Y>.D_"BND'^Z2$TN$9M,\GZ`N*5#I.I +M._$ADQ8@O7F<S<&4]-@.X^AKKD*SHRTI_(\GU\%3*Y7EA88`TE[H?&.P+PE0 +MSLI]0GKUNYUM:Y2?A%^\M_^57[O'(8%Q$K.;K4DA[+/0".IT:CL;I[AU;O4` +M9`7B``SM-FC^>(SWL@UIJVV,VR-%11O+71%6,.Y(*(2<6\H;;MT@]D]2+0D] +MS`B3PE8Y`T%JA@I+<NF-S`W&6N42.\`*-IQ5#B2'X1+>8FZP^@5B$/V;K6G& +M)_D71^K31&O5]R83WVR6V2/1<C\2$O6N4K)54LAY*3--[:1V-1JW6D$FQ+L> +MX23XQ9TS)M)Q2KL&(NP15;E^Y^GOYH#R&`+'\-16VD8%$;^?7*\U,#O)-^X! +M:K\,_#9G>M!CT$%PUE5HPCTC:<9_E!_%@,J>%T;8_`5:]U`]58>6>;.A%N-] +M52?*B11FEJ;*^3RWD+6R_,#95S,V>ON/___,%P``X)_<F@`8````````40(` +%```````` +` +end diff --git a/contrib/libarchive/libarchive/test/test_compat_lzma.c b/contrib/libarchive/libarchive/test/test_compat_lzma.c index 3e3db0260345..b9cad55514a1 100644 --- a/contrib/libarchive/libarchive/test/test_compat_lzma.c +++ b/contrib/libarchive/libarchive/test/test_compat_lzma.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* Execute the following to rebuild the data for this program: diff --git a/contrib/libarchive/libarchive/test/test_compat_lzma_1.tlz.uu b/contrib/libarchive/libarchive/test/test_compat_lzma_1.tlz.uu index 3b6321114220..ceee3b979069 100644 --- a/contrib/libarchive/libarchive/test/test_compat_lzma_1.tlz.uu +++ b/contrib/libarchive/libarchive/test/test_compat_lzma_1.tlz.uu @@ -1,5 +1,3 @@ -$FreeBSD$ - begin 644 test_compat_lzma_1.tlz M70``@`#__________P`S##P;IXPT!HUK`DO\DC[V2OB%Z^'=ZT59ANYMTD(/ M^W;\8!%O7<+P&=#(9W<_!$Z.7/Y<&\(8+E0^,_-\Z"D^P'N0J^4-UH"WMJ<& diff --git a/contrib/libarchive/libarchive/test/test_compat_lzma_2.tlz.uu b/contrib/libarchive/libarchive/test/test_compat_lzma_2.tlz.uu index 3d738989b808..b57d990fe333 100644 --- a/contrib/libarchive/libarchive/test/test_compat_lzma_2.tlz.uu +++ b/contrib/libarchive/libarchive/test/test_compat_lzma_2.tlz.uu @@ -1,5 +1,3 @@ -$FreeBSD$ - begin 644 test_compat_lzma_2.tlz M7@``@`#__________P`S##P;IXPT!HUK`DO\DC[V2OB%Z^'<FN`(!=!,)@8W M9R(6\QIOTA6SGM20X;2'6#3B&HC%2XOX2?D['5WD"`>`W2"/3R1F1:P:&Q9A diff --git a/contrib/libarchive/libarchive/test/test_compat_lzma_3.tlz.uu b/contrib/libarchive/libarchive/test/test_compat_lzma_3.tlz.uu index b8d61b70afd3..1976f364d211 100644 --- a/contrib/libarchive/libarchive/test/test_compat_lzma_3.tlz.uu +++ b/contrib/libarchive/libarchive/test/test_compat_lzma_3.tlz.uu @@ -1,5 +1,3 @@ -$FreeBSD$ - begin 644 test_compat_lzma_3.tlz M70`0````'``````````S##P;IXPT!HUK`DO\DC[V2OB%Z^'=ZT59ANYMTD(1 M$Y^=;\4%U_CXKQ*F$OFZKEQUG)1U8="](V<2K"U1\Z6%H(UNQ[Y3.=D'>_G- diff --git a/contrib/libarchive/libarchive/test/test_compat_lzop.c b/contrib/libarchive/libarchive/test/test_compat_lzop.c index cd43afcf3e99..2da4e8eb6dc2 100644 --- a/contrib/libarchive/libarchive/test/test_compat_lzop.c +++ b/contrib/libarchive/libarchive/test/test_compat_lzop.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Verify our ability to read sample files compatibly with lzop. diff --git a/contrib/libarchive/libarchive/test/test_compat_mac.c b/contrib/libarchive/libarchive/test/test_compat_mac.c index 5caa17f83e63..976f04a473f6 100644 --- a/contrib/libarchive/libarchive/test/test_compat_mac.c +++ b/contrib/libarchive/libarchive/test/test_compat_mac.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* The sample has some files in a directory with a very long name. */ #define TESTPATH "abcdefghijklmnopqrstuvwxyz/" \ diff --git a/contrib/libarchive/libarchive/test/test_compat_perl_archive_tar.c b/contrib/libarchive/libarchive/test/test_compat_perl_archive_tar.c index 165a519a3432..94abe3f056a3 100644 --- a/contrib/libarchive/libarchive/test/test_compat_perl_archive_tar.c +++ b/contrib/libarchive/libarchive/test/test_compat_perl_archive_tar.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD"); /* * Verify our ability to read sample files created by Perl module Archive::Tar diff --git a/contrib/libarchive/libarchive/test/test_compat_plexus_archiver_tar.c b/contrib/libarchive/libarchive/test/test_compat_plexus_archiver_tar.c index 0f8bedc2df5f..419e84b1c4c9 100644 --- a/contrib/libarchive/libarchive/test/test_compat_plexus_archiver_tar.c +++ b/contrib/libarchive/libarchive/test/test_compat_plexus_archiver_tar.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD"); /* * Verify our ability to read sample files created by plexus-archiver version diff --git a/contrib/libarchive/libarchive/test/test_compat_solaris_pax_sparse.c b/contrib/libarchive/libarchive/test/test_compat_solaris_pax_sparse.c index 0ab333bb180b..c25c4eb8f51e 100644 --- a/contrib/libarchive/libarchive/test/test_compat_solaris_pax_sparse.c +++ b/contrib/libarchive/libarchive/test/test_compat_solaris_pax_sparse.c @@ -23,8 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); - /* * Verify our ability to read sample files created by Solaris pax for * a sparse file. diff --git a/contrib/libarchive/libarchive/test/test_compat_solaris_tar_acl.c b/contrib/libarchive/libarchive/test/test_compat_solaris_tar_acl.c index 815977290670..df7435c7cbec 100644 --- a/contrib/libarchive/libarchive/test/test_compat_solaris_tar_acl.c +++ b/contrib/libarchive/libarchive/test/test_compat_solaris_tar_acl.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Verify reading entries with POSIX.1e and NFSv4 ACLs from archives created diff --git a/contrib/libarchive/libarchive/test/test_compat_star_acl.c b/contrib/libarchive/libarchive/test/test_compat_star_acl.c index 824710194c18..749f5ce34294 100644 --- a/contrib/libarchive/libarchive/test/test_compat_star_acl.c +++ b/contrib/libarchive/libarchive/test/test_compat_star_acl.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Verify reading entries with POSIX.1e and NFSv4 ACLs from archives created diff --git a/contrib/libarchive/libarchive/test/test_compat_tar_directory.c b/contrib/libarchive/libarchive/test/test_compat_tar_directory.c index 5750db3628e3..3d086f1da7bc 100644 --- a/contrib/libarchive/libarchive/test/test_compat_tar_directory.c +++ b/contrib/libarchive/libarchive/test/test_compat_tar_directory.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Background: Original tar file format did not use its linkflag to diff --git a/contrib/libarchive/libarchive/test/test_compat_tar_directory_1.tar.uu b/contrib/libarchive/libarchive/test/test_compat_tar_directory_1.tar.uu index 3e1ead9b5172..513d55ffcb78 100644 --- a/contrib/libarchive/libarchive/test/test_compat_tar_directory_1.tar.uu +++ b/contrib/libarchive/libarchive/test/test_compat_tar_directory_1.tar.uu @@ -1,4 +1,3 @@ -$FreeBSD$ begin 644 test_compat_tar_directory_1.tar M9&ER96-T;W)Y,2\````````````````````````````````````````````` M```````````````````````````````````````````````````````````` diff --git a/contrib/libarchive/libarchive/test/test_compat_tar_hardlink.c b/contrib/libarchive/libarchive/test/test_compat_tar_hardlink.c index 6459fed13792..b8517440aea5 100644 --- a/contrib/libarchive/libarchive/test/test_compat_tar_hardlink.c +++ b/contrib/libarchive/libarchive/test/test_compat_tar_hardlink.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Background: There are two written standards for the tar file format. diff --git a/contrib/libarchive/libarchive/test/test_compat_tar_hardlink_1.tar.uu b/contrib/libarchive/libarchive/test/test_compat_tar_hardlink_1.tar.uu index f1658a27514a..eeb31786da7e 100644 --- a/contrib/libarchive/libarchive/test/test_compat_tar_hardlink_1.tar.uu +++ b/contrib/libarchive/libarchive/test/test_compat_tar_hardlink_1.tar.uu @@ -1,4 +1,3 @@ -$FreeBSD$ begin 644 test_compat_tar_hardlink_1.tar M>&UC9"TS+C,N,B]D;V-S7V0O4D5!1$UF```````````````````````````` M```````````````````````````````````````````````````````````` diff --git a/contrib/libarchive/libarchive/test/test_compat_uudecode.c b/contrib/libarchive/libarchive/test/test_compat_uudecode.c index cfb17c85788d..d6936d9dcd5d 100644 --- a/contrib/libarchive/libarchive/test/test_compat_uudecode.c +++ b/contrib/libarchive/libarchive/test/test_compat_uudecode.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static char archive_data[] = { "begin 644 test_read_uu.Z\n" diff --git a/contrib/libarchive/libarchive/test/test_compat_uudecode_large.c b/contrib/libarchive/libarchive/test/test_compat_uudecode_large.c index a2ffd22663a5..c4ab0ec3fd0d 100644 --- a/contrib/libarchive/libarchive/test/test_compat_uudecode_large.c +++ b/contrib/libarchive/libarchive/test/test_compat_uudecode_large.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_compat_uudecode_large) { diff --git a/contrib/libarchive/libarchive/test/test_compat_xz.c b/contrib/libarchive/libarchive/test/test_compat_xz.c index 2ced94331a5f..f904583782d2 100644 --- a/contrib/libarchive/libarchive/test/test_compat_xz.c +++ b/contrib/libarchive/libarchive/test/test_compat_xz.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Verify our ability to read sample files compatibly with unxz. diff --git a/contrib/libarchive/libarchive/test/test_compat_xz_1.txz.uu b/contrib/libarchive/libarchive/test/test_compat_xz_1.txz.uu index 82794fd8c278..af47f4eee314 100644 --- a/contrib/libarchive/libarchive/test/test_compat_xz_1.txz.uu +++ b/contrib/libarchive/libarchive/test/test_compat_xz_1.txz.uu @@ -1,5 +1,4 @@ -$FreeBSD$ -begin 644 test_compat_gzip_1.txz +begin 644 test_compat_xz_1.txz M_3=Z6%H```3FUK1&`@`A`18```!T+^6CX`^?`(-=`#,,/!NGC#0&C6L"2_R2 M/O9*^(7KX=WM^(=KA(RH"\09$$)!Q_+JUHQ*`]R;ITL_F3/I6:^Q0550A&)B MHS@=K]7@K1-9FOIP#PU!I<PUHW+W#<F(6FSL/<?5:4*>?E5&IHH&Q=N>_C&G diff --git a/contrib/libarchive/libarchive/test/test_compat_zip.c b/contrib/libarchive/libarchive/test/test_compat_zip.c index 898d3e5ce8d0..e2d41cc9b439 100644 --- a/contrib/libarchive/libarchive/test/test_compat_zip.c +++ b/contrib/libarchive/libarchive/test/test_compat_zip.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* Copy this function for each test file and adjust it accordingly. */ DEFINE_TEST(test_compat_zip_1) diff --git a/contrib/libarchive/libarchive/test/test_compat_zip_1.zip.uu b/contrib/libarchive/libarchive/test/test_compat_zip_1.zip.uu index 1ed2d69966bf..e13a6cac29d9 100644 --- a/contrib/libarchive/libarchive/test/test_compat_zip_1.zip.uu +++ b/contrib/libarchive/libarchive/test/test_compat_zip_1.zip.uu @@ -1,4 +1,3 @@ -$FreeBSD$ begin 644 test_compat_zip_1.zip M4$L#!!0`"``(``B$@S<````````````````4````345402U)3D8O34%.249% M4U0N34;S3<S+3$LM+M$-2RTJSLS/LU(PU#/@Y7+,0Q)Q+$A,SDA5`(H!)<U! diff --git a/contrib/libarchive/libarchive/test/test_compat_zip_8.zip.uu b/contrib/libarchive/libarchive/test/test_compat_zip_8.zip.uu index 316b6f62d4bb..2ab6cf70c670 100644 --- a/contrib/libarchive/libarchive/test/test_compat_zip_8.zip.uu +++ b/contrib/libarchive/libarchive/test/test_compat_zip_8.zip.uu @@ -1,6 +1,6 @@ -begin 666 test_compat_zip_8.zip
-M4$L#!!0````(`%A\;TOY6""D$`````X````(````87)C7'1E<W3[_Z^$(96A
-MF*&$@9>!BP$`4$L!`A0`%`````@`6'QO2_E8(*00````#@````@`````````
-H`````````````&%R8UQT97-T4$L%!@`````!``$`-@```#8`````````
-`
-end
+begin 666 test_compat_zip_8.zip +M4$L#!!0````(`%A\;TOY6""D$`````X````(````87)C7'1E<W3[_Z^$(96A +MF*&$@9>!BP$`4$L!`A0`%`````@`6'QO2_E8(*00````#@````@````````` +H`````````````&%R8UQT97-T4$L%!@`````!``$`-@```#8````````` +` +end diff --git a/contrib/libarchive/libarchive/test/test_compat_zstd.c b/contrib/libarchive/libarchive/test/test_compat_zstd.c index 134775816a94..34b8edeb924d 100644 --- a/contrib/libarchive/libarchive/test/test_compat_zstd.c +++ b/contrib/libarchive/libarchive/test/test_compat_zstd.c @@ -23,8 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); - /* * Verify our ability to read sample files compatibly with 'zstd -d'. * diff --git a/contrib/libarchive/libarchive/test/test_empty_write.c b/contrib/libarchive/libarchive/test/test_empty_write.c index 34830078285f..b5572f73d77a 100644 --- a/contrib/libarchive/libarchive/test/test_empty_write.c +++ b/contrib/libarchive/libarchive/test/test_empty_write.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_empty_write) { diff --git a/contrib/libarchive/libarchive/test/test_entry.c b/contrib/libarchive/libarchive/test/test_entry.c index a5777b148711..228fdd8bcc56 100644 --- a/contrib/libarchive/libarchive/test/test_entry.c +++ b/contrib/libarchive/libarchive/test/test_entry.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #include <locale.h> diff --git a/contrib/libarchive/libarchive/test/test_entry_strmode.c b/contrib/libarchive/libarchive/test/test_entry_strmode.c index 70c0e7556968..abeed4c483b2 100644 --- a/contrib/libarchive/libarchive/test/test_entry_strmode.c +++ b/contrib/libarchive/libarchive/test/test_entry_strmode.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_entry_strmode) { diff --git a/contrib/libarchive/libarchive/test/test_extattr_freebsd.c b/contrib/libarchive/libarchive/test/test_extattr_freebsd.c index ff05aa4a04b1..f69275854df8 100644 --- a/contrib/libarchive/libarchive/test/test_extattr_freebsd.c +++ b/contrib/libarchive/libarchive/test/test_extattr_freebsd.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #if defined(__FreeBSD__) && __FreeBSD__ > 4 #include <sys/extattr.h> diff --git a/contrib/libarchive/libarchive/test/test_filter_count.c b/contrib/libarchive/libarchive/test/test_filter_count.c index 4885ab89a52e..8b28795ee0d5 100644 --- a/contrib/libarchive/libarchive/test/test_filter_count.c +++ b/contrib/libarchive/libarchive/test/test_filter_count.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD: head/lib/libarchive/test/test_read_file_nonexistent.c 189473 2009-03-07 02:09:21Z kientzle $"); static void read_test(const char *name); static void write_test(void); diff --git a/contrib/libarchive/libarchive/test/test_fuzz.c b/contrib/libarchive/libarchive/test/test_fuzz.c index 7f85cbb04b35..dcb4f73ca372 100644 --- a/contrib/libarchive/libarchive/test/test_fuzz.c +++ b/contrib/libarchive/libarchive/test/test_fuzz.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * This was inspired by an ISO fuzz tester written by Michal Zalewski diff --git a/contrib/libarchive/libarchive/test/test_fuzz_1.iso.Z.uu b/contrib/libarchive/libarchive/test/test_fuzz_1.iso.Z.uu index 6044296c1ad6..0eb3f7deb4ce 100644 --- a/contrib/libarchive/libarchive/test/test_fuzz_1.iso.Z.uu +++ b/contrib/libarchive/libarchive/test/test_fuzz_1.iso.Z.uu @@ -1,5 +1,3 @@ -$FreeBSD$ - begin 644 test_fuzz_1.iso.Z M'YV0``(*'$BPH,&#"!,J7,BPH<.'$"-*G$BQHL6+&#-JW,BQH\>/($.*'$FR MI,F3*%.J7,FRI<N7,&/*G$FSILV;.'/JW,FSI\^?0(,*'4JTJ-&C2),J7<JT diff --git a/contrib/libarchive/libarchive/test/test_gnutar_filename_encoding.c b/contrib/libarchive/libarchive/test/test_gnutar_filename_encoding.c index 3ec4f61290f8..f473ddfb4fe9 100644 --- a/contrib/libarchive/libarchive/test/test_gnutar_filename_encoding.c +++ b/contrib/libarchive/libarchive/test/test_gnutar_filename_encoding.c @@ -23,8 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); - #include <locale.h> DEFINE_TEST(test_gnutar_filename_encoding_UTF8_CP866) diff --git a/contrib/libarchive/libarchive/test/test_link_resolver.c b/contrib/libarchive/libarchive/test/test_link_resolver.c index 032c05951078..5bea9a463b30 100644 --- a/contrib/libarchive/libarchive/test/test_link_resolver.c +++ b/contrib/libarchive/libarchive/test/test_link_resolver.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static void test_linkify_tar(void) { diff --git a/contrib/libarchive/libarchive/test/test_open_failure.c b/contrib/libarchive/libarchive/test/test_open_failure.c index 5316a872b6a8..a8eedadc95fe 100644 --- a/contrib/libarchive/libarchive/test/test_open_failure.c +++ b/contrib/libarchive/libarchive/test/test_open_failure.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #define MAGIC 123456789 struct my_data { diff --git a/contrib/libarchive/libarchive/test/test_open_fd.c b/contrib/libarchive/libarchive/test/test_open_fd.c index da5eeafcb866..bd73fb36197f 100644 --- a/contrib/libarchive/libarchive/test/test_open_fd.c +++ b/contrib/libarchive/libarchive/test/test_open_fd.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #if defined(_WIN32) && !defined(__CYGWIN__) #define open _open diff --git a/contrib/libarchive/libarchive/test/test_open_file.c b/contrib/libarchive/libarchive/test/test_open_file.c index 52b60efd2164..f4ca82bb01a0 100644 --- a/contrib/libarchive/libarchive/test/test_open_file.c +++ b/contrib/libarchive/libarchive/test/test_open_file.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_open_file) { diff --git a/contrib/libarchive/libarchive/test/test_open_filename.c b/contrib/libarchive/libarchive/test/test_open_filename.c index dee11bc110df..09a83690be0d 100644 --- a/contrib/libarchive/libarchive/test/test_open_filename.c +++ b/contrib/libarchive/libarchive/test/test_open_filename.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static void test_open_filename_mbs(void) diff --git a/contrib/libarchive/libarchive/test/test_pax_filename_encoding.c b/contrib/libarchive/libarchive/test/test_pax_filename_encoding.c index 635e8e69f896..737641c5abca 100644 --- a/contrib/libarchive/libarchive/test/test_pax_filename_encoding.c +++ b/contrib/libarchive/libarchive/test/test_pax_filename_encoding.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #include <locale.h> diff --git a/contrib/libarchive/libarchive/test/test_pax_filename_encoding.tar.uu b/contrib/libarchive/libarchive/test/test_pax_filename_encoding.tar.uu index e7773fdedd91..1c221fd6be20 100644 --- a/contrib/libarchive/libarchive/test/test_pax_filename_encoding.tar.uu +++ b/contrib/libarchive/libarchive/test/test_pax_filename_encoding.tar.uu @@ -1,4 +1,3 @@ -$FreeBSD$ begin 644 test_pax_filename_encoding.tar M4&%X2&5A9&5R+V%B8\R,;6YO6'AY>@`````````````````````````````` M```````````````````````````````````````````````````````````` diff --git a/contrib/libarchive/libarchive/test/test_pax_xattr_header.c b/contrib/libarchive/libarchive/test/test_pax_xattr_header.c index d0394aa09eda..8af81079ea7e 100644 --- a/contrib/libarchive/libarchive/test/test_pax_xattr_header.c +++ b/contrib/libarchive/libarchive/test/test_pax_xattr_header.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static struct archive_entry* create_archive_entry(void) { diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part1.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part1.rar.uu index 22b5c8dfa3e8..b2afdf152a48 100644 --- a/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part1.rar.uu +++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part1.rar.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_rar_multivolume_single_file.part1.rar M4F%R(1H'`%IN<Q$!#0````````"(KG0BD$,`[1H``(].```#D,J\!?-C(4`4 M,!D`I($``$QI8F%R8VAI=F5!9&1I;F=497-T+FAT;6S`S/-C(4#T8R%`/"%$ M3T-465!%($A434P@4%5"3$E#("(M+R]7,T,O+T141"!(5$U,(#0N,"!4<F%N diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part2.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part2.rar.uu index e00e06cb278e..615698bdefb3 100644 --- a/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part2.rar.uu +++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part2.rar.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_rar_multivolume_single_file.part2.rar M4F%R(1H'`!EZ<Q$`#0````````#7@W0CD$,`[1H``(].```#.)1.%?-C(4`4 M,!D`I($``$QI8F%R8VAI=F5!9&1I;F=497-T+FAT;6S`S/-C(4#T8R%`*0IG M96YE<F%T92!D971A:6QE9"!L;V<@;65S<V%G97,@;VX@9F%I;'5R92X@26X@ diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part3.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part3.rar.uu index 06e72a790dab..63c984782e1d 100644 --- a/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part3.rar.uu +++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part3.rar.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_rar_multivolume_single_file.part3.rar M4F%R(1H'`!EZ<Q$`#0`````````?;70AD$,`M1@``(].```#8Z8%7O-C(4`4 M,!D`I($``$QI8F%R8VAI=F5!9&1I;F=497-T+FAT;6S`S/-C(4#T8R%`=7-U M86QL>2!R=6X*"6%L;"!O9B!T:&4@=&5S=',N(`H)/"]0/@H)/$Q)/CQ0(%-4 diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part01.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part01.rar.uu index 876b7e9acbd1..b583f86f869e 100644 --- a/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part01.rar.uu +++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part01.rar.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_rar_multivolume_uncompressed_files.part01.rar M4F%R(1H'`%IN<Q$!#0````````"G@W0BD$P`C#,``(].```#]EC4PKM,-4$4 M,"(`I($``'1E<W1D:7)<3&EB87)C:&EV94%D9&EN9U1E<W0R+FAT;6R`S#)? M.T)17SM"/"%$3T-465!%($A434P@4%5"3$E#("(M+R]7,T,O+T141"!(5$U, diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part02.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part02.rar.uu index 97e826ee7a64..fdf944443a07 100644 --- a/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part02.rar.uu +++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part02.rar.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_rar_multivolume_uncompressed_files.part02.rar M4F%R(1H'`!EZ<Q$`#0````````#G!'0AD$P``QL``(].```#8Z8%7KM,-4$4 M,"(`I($``'1E<W1D:7)<3&EB87)C:&EV94%D9&EN9U1E<W0R+FAT;6R`S#)? M.T)17SM"(&%S<V5R=$5Q=6%L365M('1O('1E<W0@97%U86QI='D@:6YS=&5A diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part03.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part03.rar.uu index 027f050889fd..caf9e7569bd6 100644 --- a/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part03.rar.uu +++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part03.rar.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_rar_multivolume_uncompressed_files.part03.rar M4F%R(1H'`!EZ<Q$`#0````````"P,W0CD%<`@3,``(].```#*23KD;M,-4$4 M,"T`I($``'1E<W1D:7)<=&5S='-U8F1I<EQ,:6)A<F-H:79E061D:6YG5&5S M=#(N:'1M;,#,,U\[0F-?.T)I;VYS+B!)9B!T:&4@87-S97)T:6]N(&9A:6QS diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part04.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part04.rar.uu index be9a921bc33c..1e645fe35aa2 100644 --- a/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part04.rar.uu +++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part04.rar.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_rar_multivolume_uncompressed_files.part04.rar M4F%R(1H'`!EZ<Q$`#0````````!K>G0AD%<`W`(``(].```#8Z8%7KM,-4$4 M,"T`I($``'1E<W1D:7)<=&5S='-U8F1I<EQ,:6)A<F-H:79E061D:6YG5&5S M=#(N:'1M;,#,,U\[0F-?.T)B>0IT:&4@87)C:&EV92!W<FET97(@:7,@=&AE diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part05.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part05.rar.uu index 0891b2285b0c..eb271f063a64 100644 --- a/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part05.rar.uu +++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part05.rar.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_rar_multivolume_uncompressed_files.part05.rar M4F%R(1H'`!EZ<Q$`#0````````!U''0AD$0`+AX``(].```#8Z8%7KM,-4$4 M,!H`I($``$QI8F%R8VAI=F5!9&1I;F=497-T,BYH=&ULP,P)7SM",E\[0F9E M<F5N8V5?9FEL92@F<75O=#MT97-T7V9O;RYT87(F<75O=#LI.SPO4%)%/CQ0 diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part06.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part06.rar.uu index 6511cb68c6af..c63065865a0e 100644 --- a/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part06.rar.uu +++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part06.rar.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_rar_multivolume_uncompressed_files.part06.rar M4F%R(1H'`!EZ<Q$`#0`````````*JW0CD$L`C3,``(].```#8\SY_?-C(4`4 M,"$`I($``'1E<W1D:7)<3&EB87)C:&EV94%D9&EN9U1E<W0N:'1M;(#,,E\[ M0DU?.T(N+B!S971U<"!O;6ET=&5D("XN+B`J+PHF;F)S<#L@)FYB<W`[(&%S diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part07.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part07.rar.uu index fa3206266ce4..c7dab1b886e9 100644 --- a/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part07.rar.uu +++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part07.rar.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_rar_multivolume_uncompressed_files.part07.rar M4F%R(1H'`!EZ<Q$`#0````````!*\70AD$L`YP4``(].```#8Z8%7O-C(4`4 M,"$`I($``'1E<W1D:7)<3&EB87)C:&EV94%D9&EN9U1E<W0N:'1M;(#,,E\[ M0DU?.T)I=&@@82!D;WIE;B!E;G1R:65S(&1O=VX@=&\*:G5S="!A(&9E=R!K diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part08.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part08.rar.uu index e8e0ffe8c57e..9e53660ed0c5 100644 --- a/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part08.rar.uu +++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part08.rar.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_rar_multivolume_uncompressed_files.part08.rar M4F%R(1H'`!EZ<Q$`#0````````#I1G0AD%8`/R$``(].```#8Z8%7O-C(4`4 M,"P`I($``'1E<W1D:7)<=&5S='-U8F1I<EQ,:6)A<F-H:79E061D:6YG5&5S M="YH=&ULP,PS7SM"6U\[0D-O;G1E;G1S/"]45#XL"@D\5%0@0TQ!4U,](G=E diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part09.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part09.rar.uu index bdcdc999c4d6..c2d890401e69 100644 --- a/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part09.rar.uu +++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part09.rar.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_rar_multivolume_uncompressed_files.part09.rar M4F%R(1H'`!EZ<Q$`#0````````"N!'0CD$,`E3,``(].```#97_()_-C(4`4 M,!D`I($``$QI8F%R8VAI=F5!9&1I;F=497-T+FAT;6S`S`E?.T(R7SM"4STB M=V5S=&5R;B(^/$$@3D%-13TB0F%S:6-?=&5S=%]T97)M:6YO;&]G>2(^/"]! diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part10.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part10.rar.uu index aef15d214a21..66c22262e189 100644 --- a/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part10.rar.uu +++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part10.rar.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_rar_multivolume_uncompressed_files.part10.rar M4F%R(1H'`!EZ<Q$`#0`````````5)G0AD$,`^@@``(].```#8Z8%7O-C(4`4 M,!D`I($``$QI8F%R8VAI=F5!9&1I;F=497-T+FAT;6S`S`E?.T(R7SM"97AE M<F-I<V4@8F]U;F1A<GD@8V%S97,@=VET:"!V97)Y"FQA<F=E(&5N=')I97,L diff --git a/contrib/libarchive/libarchive/test/test_read_data_large.c b/contrib/libarchive/libarchive/test/test_read_data_large.c index e94b9aaf6f65..59cbfd496ca9 100644 --- a/contrib/libarchive/libarchive/test/test_read_data_large.c +++ b/contrib/libarchive/libarchive/test/test_read_data_large.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Test read/write of a 10M block of data in a single operation. diff --git a/contrib/libarchive/libarchive/test/test_read_disk.c b/contrib/libarchive/libarchive/test/test_read_disk.c index a57da1a537bf..24349574a7a2 100644 --- a/contrib/libarchive/libarchive/test/test_read_disk.c +++ b/contrib/libarchive/libarchive/test/test_read_disk.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static void gname_cleanup(void *d) diff --git a/contrib/libarchive/libarchive/test/test_read_disk_directory_traversals.c b/contrib/libarchive/libarchive/test/test_read_disk_directory_traversals.c index ad99acfef258..009c9a8db1e1 100644 --- a/contrib/libarchive/libarchive/test/test_read_disk_directory_traversals.c +++ b/contrib/libarchive/libarchive/test/test_read_disk_directory_traversals.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #include <limits.h> #if defined(_WIN32) && !defined(__CYGWIN__) diff --git a/contrib/libarchive/libarchive/test/test_read_disk_entry_from_file.c b/contrib/libarchive/libarchive/test/test_read_disk_entry_from_file.c index 3f364eef9ad1..386c3c48ebf4 100644 --- a/contrib/libarchive/libarchive/test/test_read_disk_entry_from_file.c +++ b/contrib/libarchive/libarchive/test/test_read_disk_entry_from_file.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static const char * gname_lookup(void *d, int64_t g) diff --git a/contrib/libarchive/libarchive/test/test_read_extract.c b/contrib/libarchive/libarchive/test/test_read_extract.c index da44ebb41e9b..32c1b6b18142 100644 --- a/contrib/libarchive/libarchive/test/test_read_extract.c +++ b/contrib/libarchive/libarchive/test/test_read_extract.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #define BUFF_SIZE 1000000 #define FILE_BUFF_SIZE 100000 diff --git a/contrib/libarchive/libarchive/test/test_read_file_nonexistent.c b/contrib/libarchive/libarchive/test/test_read_file_nonexistent.c index 127093865828..4a6d5d266227 100644 --- a/contrib/libarchive/libarchive/test/test_read_file_nonexistent.c +++ b/contrib/libarchive/libarchive/test/test_read_file_nonexistent.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_read_file_nonexistent) { diff --git a/contrib/libarchive/libarchive/test/test_read_filter_lrzip.tar.lrz.uu b/contrib/libarchive/libarchive/test/test_read_filter_lrzip.tar.lrz.uu index d9bbd6116e0a..2272c2778e82 100644 --- a/contrib/libarchive/libarchive/test/test_read_filter_lrzip.tar.lrz.uu +++ b/contrib/libarchive/libarchive/test/test_read_filter_lrzip.tar.lrz.uu @@ -1,4 +1,4 @@ -begin 644 test_read_filter_lrzip.tar.lrz.uu +begin 644 test_read_filter_lrzip.tar.lrz M3%):20`&`"@``````````%T````!`0```@$`*`,`````#@`#`````&4`!E`` MAP``````*(%=%O"2=0L1MCAA@GB4H1+_)V=!8=DS/0JC4Z+Q&5I0A'\SJ-#. M$U<4K-:^%:G^C3$B/80>END]NJE=5AP+]64N7$3):G02EKP>+AD`!IH`HQ(` diff --git a/contrib/libarchive/libarchive/test/test_read_filter_program.c b/contrib/libarchive/libarchive/test/test_read_filter_program.c index a27589a146c9..18b42121cc22 100644 --- a/contrib/libarchive/libarchive/test/test_read_filter_program.c +++ b/contrib/libarchive/libarchive/test/test_read_filter_program.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD: head/lib/libarchive/test/test_read_compress_program.c 201247 2009-12-30 05:59:21Z kientzle $"); static unsigned char archive[] = { 31,139,8,0,222,'C','p','C',0,3,211,'c',160,'=','0','0','0','0','7','5','U', diff --git a/contrib/libarchive/libarchive/test/test_read_filter_program_signature.c b/contrib/libarchive/libarchive/test/test_read_filter_program_signature.c index 110addb87fe9..46909f97ab9e 100644 --- a/contrib/libarchive/libarchive/test/test_read_filter_program_signature.c +++ b/contrib/libarchive/libarchive/test/test_read_filter_program_signature.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static unsigned char archive[] = { 31,139,8,0,222,'C','p','C',0,3,211,'c',160,'=','0','0','0','0','7','5','U', diff --git a/contrib/libarchive/libarchive/test/test_read_filter_uudecode.c b/contrib/libarchive/libarchive/test/test_read_filter_uudecode.c index ac2eff59f794..1bc9385c3f6a 100644 --- a/contrib/libarchive/libarchive/test/test_read_filter_uudecode.c +++ b/contrib/libarchive/libarchive/test/test_read_filter_uudecode.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD: head/lib/libarchive/test/test_read_uu.c 201248 2009-12-30 06:12:03Z kientzle $"); static const char archive[] = { "begin 644 test_read_uu.Z\n" diff --git a/contrib/libarchive/libarchive/test/test_read_filter_uudecode_base64_raw.uu b/contrib/libarchive/libarchive/test/test_read_filter_uudecode_base64_raw.uu new file mode 100644 index 000000000000..b4ddfb0a22e8 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_filter_uudecode_base64_raw.uu @@ -0,0 +1,11 @@ +begin-base64 600 LICENSE2.txt +VEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIOKAnEFTIElT4oCdLCBXSVRIT1VUIFdBUlJBTlRZIE9G +IEFOWSBLSU5ELCBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQg +VE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJ +Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg +QVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFN +QUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNU +LCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElP +TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBT +T0ZUV0FSRS4K +==== diff --git a/contrib/libarchive/libarchive/test/test_read_filter_uudecode_raw.c b/contrib/libarchive/libarchive/test/test_read_filter_uudecode_raw.c new file mode 100644 index 000000000000..6f02dc5de147 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_filter_uudecode_raw.c @@ -0,0 +1,67 @@ +/*- + * Copyright (c) 2023 Martin Matuska + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "test.h" + +DEFINE_TEST(test_read_filter_uudecode_raw) +{ + struct archive_entry *ae; + struct archive *a; + + const char *name = "test_read_filter_uudecode_raw.uu"; + + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_raw(a)); + copy_reference_file(name); + assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a, name, 670)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("LICENSE.txt", archive_entry_pathname(ae)); + assertEqualInt((AE_IFREG | 0755), archive_entry_mode(ae)); + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + + assertEqualInt(ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} + +DEFINE_TEST(test_read_filter_uudecode_base64_raw) +{ + struct archive_entry *ae; + struct archive *a; + + const char *name = "test_read_filter_uudecode_base64_raw.uu"; + + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_raw(a)); + copy_reference_file(name); + assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a, name, 670)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("LICENSE2.txt", archive_entry_pathname(ae)); + assertEqualInt((AE_IFREG | 0600), archive_entry_mode(ae)); + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + + assertEqualInt(ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} diff --git a/contrib/libarchive/libarchive/test/test_read_filter_uudecode_raw.uu b/contrib/libarchive/libarchive/test/test_read_filter_uudecode_raw.uu new file mode 100644 index 000000000000..8a5f8b5a607d --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_filter_uudecode_raw.uu @@ -0,0 +1,14 @@ +begin 755 LICENSE.txt +M5$A%(%-/1E1705)%($E3(%!23U9)1$5$(.*`G$%3($E3XH"=+"!7251(3U54 +M(%=!4E)!3E19($]&($%.62!+24Y$+"!%6%!215-3($]2($E-4$Q)140L($E. +M0TQ51$E.1R!"550@3D]4($Q)34E4140@5$\@5$A%(%=!4E)!3E1)15,@3T8@ +M34520TA!3E1!0DE,2519+"!&251.15-3($9/4B!!(%!!4E1)0U5,05(@4%52 +M4$]312!!3D0@3D].24Y&4DE.1T5-14Y4+B!)3B!.3R!%5D5.5"!32$%,3"!4 +M2$4@05542$]24R!/4B!#3U!94DE'2%0@2$],1$524R!"12!,24%"3$4@1D]2 +M($%.62!#3$%)32P@1$%-04=%4R!/4B!/5$A%4B!,24%"24Q)5%DL(%=(151( +M15(@24X@04X@04-424].($]&($-/3E1204-4+"!43U)4($]2($]42$525TE3 +M12P@05))4TE.1R!&4D]-+"!/550@3T8@3U(@24X@0T].3D5#5$E/3B!7251( +M(%1(12!33T945T%212!/4B!42$4@55-%($]2($]42$52($1%04Q)3D=3($E. +/(%1(12!33T945T%212X* +` +end diff --git a/contrib/libarchive/libarchive/test/test_read_format_7zip.c b/contrib/libarchive/libarchive/test/test_read_format_7zip.c index 1eca3936e5b4..9f76705deaf2 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_7zip.c +++ b/contrib/libarchive/libarchive/test/test_read_format_7zip.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD"); #if defined(_WIN32) && !defined(__CYGWIN__) #define close _close @@ -61,7 +60,7 @@ test_copy(int use_open_fd) /* Verify regular file1. */ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); - assertEqualInt((AE_IFREG | 0666), archive_entry_mode(ae)); + assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae)); assertEqualString("file1", archive_entry_pathname(ae)); assertEqualInt(86401, archive_entry_mtime(ae)); assertEqualInt(60, archive_entry_size(ae)); @@ -765,7 +764,7 @@ test_ppmd(void) /* Verify regular file1. */ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); - assertEqualInt((AE_IFREG | 0666), archive_entry_mode(ae)); + assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae)); assertEqualString("ppmd_test.txt", archive_entry_pathname(ae)); assertEqualInt(1322464589, archive_entry_mtime(ae)); assertEqualInt(102400, archive_entry_size(ae)); @@ -1182,3 +1181,79 @@ DEFINE_TEST(test_read_format_7zip_deflate_arm64) assertEqualInt(ARCHIVE_OK, archive_read_free(a)); } + +DEFINE_TEST(test_read_format_7zip_win_attrib) +{ + struct archive *a; + + assert((a = archive_read_new()) != NULL); + + if (ARCHIVE_OK != archive_read_support_filter_lzma(a)) { + skipping( + "7zip:lzma decoding is not supported on this platform"); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + return; + } + + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + + // This archive has four files and four directories: + // * hidden directory + // * readonly directory + // * regular directory + // * system directory + // * regular "archive" file + // * hidden file + // * readonly file + // * system file + const char *refname = "test_read_format_7zip_win_attrib.7z"; + extract_reference_file(refname); + + assertEqualIntA(a, ARCHIVE_OK, + archive_read_open_filename(a, refname, 10240)); + + struct archive_entry *ae; + + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("hidden_dir/", archive_entry_pathname(ae)); + assertEqualInt((AE_IFDIR | 0755), archive_entry_mode(ae)); + assertEqualString("hidden", archive_entry_fflags_text(ae)); + + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("readonly_dir/", archive_entry_pathname(ae)); + assertEqualInt((AE_IFDIR | 0555), archive_entry_mode(ae)); + assertEqualString("rdonly", archive_entry_fflags_text(ae)); + + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("regular_dir/", archive_entry_pathname(ae)); + assertEqualInt((AE_IFDIR | 0755), archive_entry_mode(ae)); + assertEqualString(NULL, archive_entry_fflags_text(ae)); + + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("system_dir/", archive_entry_pathname(ae)); + assertEqualInt((AE_IFDIR | 0755), archive_entry_mode(ae)); + assertEqualString("system", archive_entry_fflags_text(ae)); + + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("archive_file.txt", archive_entry_pathname(ae)); + assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae)); + assertEqualString(NULL, archive_entry_fflags_text(ae)); + + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("hidden_file.txt", archive_entry_pathname(ae)); + assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae)); + assertEqualString("hidden", archive_entry_fflags_text(ae)); + + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("readonly_file.txt", archive_entry_pathname(ae)); + assertEqualInt((AE_IFREG | 0444), archive_entry_mode(ae)); + assertEqualString("rdonly", archive_entry_fflags_text(ae)); + + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("system_file.txt", archive_entry_pathname(ae)); + assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae)); + assertEqualString("system", archive_entry_fflags_text(ae)); + + + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} diff --git a/contrib/libarchive/libarchive/test/test_read_format_7zip_copy.7z.uu b/contrib/libarchive/libarchive/test/test_read_format_7zip_copy.7z.uu index 2429834c26dc..92e7c5867ab2 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_7zip_copy.7z.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_7zip_copy.7z.uu @@ -1,4 +1,4 @@ -begin 644 test_read_format_7zip_none.7z +begin 644 test_read_format_7zip_copy.7z M-WJ\KR<<``-!QGV(/`````````!"`````````(/;BV,@("`@("`@("`@("`@ M("`@("`@("`@("`@(&9I;&4@,2!C;VYT96YT<PIH96QL;PIH96QL;PIH96QL M;PH!!`8``0D\``<+`0`!`0`,/``("@&J'=X/```%`1$-`&8`:0!L`&4`,0`` diff --git a/contrib/libarchive/libarchive/test/test_read_format_7zip_deflate_arm64.7z.uu b/contrib/libarchive/libarchive/test/test_read_format_7zip_deflate_arm64.7z.uu index e516ca5b4792..2199d921b549 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_7zip_deflate_arm64.7z.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_7zip_deflate_arm64.7z.uu @@ -1,4 +1,4 @@ -begin 664 libarchive/test/test_read_format_7zip_deflate_arm64.7z +begin 664 test_read_format_7zip_deflate_arm64.7z M-WJ\KR<<``2V^52G)0H```````!:`````````.HY+B_LU5^(3%$<P/%SYPY+ M_N1?*/]F5R'Y3_['&'^&0FB]T9BU@ZFQH]F1#65X4C:9"`](HI`'#PHO_N5! M>2.2T-J0XF&*!R-C_.Z=<^_<NSLKWK^?]MS?GM\]OW//W'ONS*&5:U<%#$,Y diff --git a/contrib/libarchive/libarchive/test/test_read_format_7zip_encryption_data.c b/contrib/libarchive/libarchive/test/test_read_format_7zip_encryption_data.c index adedbc5311c6..653044a46317 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_7zip_encryption_data.c +++ b/contrib/libarchive/libarchive/test/test_read_format_7zip_encryption_data.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD"); DEFINE_TEST(test_read_format_7zip_encryption_data) { diff --git a/contrib/libarchive/libarchive/test/test_read_format_7zip_encryption_header.c b/contrib/libarchive/libarchive/test/test_read_format_7zip_encryption_header.c index 7d2a4a8d7de4..d0c48044ea5e 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_7zip_encryption_header.c +++ b/contrib/libarchive/libarchive/test/test_read_format_7zip_encryption_header.c @@ -23,8 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD"); - DEFINE_TEST(test_read_format_7zip_encryption_header) { diff --git a/contrib/libarchive/libarchive/test/test_read_format_7zip_encryption_partially.c b/contrib/libarchive/libarchive/test/test_read_format_7zip_encryption_partially.c index 68290aa64fd9..51a6c06116d7 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_7zip_encryption_partially.c +++ b/contrib/libarchive/libarchive/test/test_read_format_7zip_encryption_partially.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD"); DEFINE_TEST(test_read_format_7zip_encryption_partially) { diff --git a/contrib/libarchive/libarchive/test/test_read_format_7zip_lzma2_arm64.7z.uu b/contrib/libarchive/libarchive/test/test_read_format_7zip_lzma2_arm64.7z.uu index 3792a187ff02..34025b8431ad 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_7zip_lzma2_arm64.7z.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_7zip_lzma2_arm64.7z.uu @@ -1,4 +1,4 @@ -begin 664 libarchive/test/test_read_format_7zip_lzma2_arm64.7z +begin 664 test_read_format_7zip_lzma2_arm64.7z M-WJ\KR<<``0W'TW><P@```````!:`````````&'_J;[A$M\(:UT`/Y%%A&@] MB:;:BN&&(J+"URDYX#ZEJ=1:R[LP;*R_8L2:_5F_1<^DV<8-2,=3[&X?U.=W M*%Q!?DN>B^),$C`%""HM.8#>=`<R:?!<.$B$K6X!RY4*=X/2*.1;F86;KQ[4 diff --git a/contrib/libarchive/libarchive/test/test_read_format_7zip_malformed.c b/contrib/libarchive/libarchive/test/test_read_format_7zip_malformed.c index 4ca6f0913e35..f2120879fa8c 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_7zip_malformed.c +++ b/contrib/libarchive/libarchive/test/test_read_format_7zip_malformed.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static void test_malformed1(void) diff --git a/contrib/libarchive/libarchive/test/test_read_format_7zip_packinfo_digests.c b/contrib/libarchive/libarchive/test/test_read_format_7zip_packinfo_digests.c index 7f105d1f2806..e46a17b3b1da 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_7zip_packinfo_digests.c +++ b/contrib/libarchive/libarchive/test/test_read_format_7zip_packinfo_digests.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD"); /* Read archive with digests in PackInfo */ DEFINE_TEST(test_read_format_7zip_packinfo_digests) @@ -49,7 +48,7 @@ DEFINE_TEST(test_read_format_7zip_packinfo_digests) /* Verify regular file1. */ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); - assertEqualInt((AE_IFREG | 0666), archive_entry_mode(ae)); + assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae)); assertEqualString("a.txt", archive_entry_pathname(ae)); assertEqualInt(1576808819, archive_entry_mtime(ae)); assertEqualInt(4, archive_entry_size(ae)); @@ -61,7 +60,7 @@ DEFINE_TEST(test_read_format_7zip_packinfo_digests) /* Verify regular file2. */ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); - assertEqualInt((AE_IFREG | 0666), archive_entry_mode(ae)); + assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae)); assertEqualString("b.txt", archive_entry_pathname(ae)); assertEqualInt(1576808819, archive_entry_mtime(ae)); assertEqualInt(4, archive_entry_size(ae)); diff --git a/contrib/libarchive/libarchive/test/test_read_format_7zip_win_attrib.7z.uu b/contrib/libarchive/libarchive/test/test_read_format_7zip_win_attrib.7z.uu new file mode 100644 index 000000000000..dc7495bcbf37 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_format_7zip_win_attrib.7z.uu @@ -0,0 +1,10 @@ +begin 644 test_read_format_7zip_win_attrib.7z +M-WJ\KR<<``0:MZ25^0`````````B`````````,/QN>$!`!IA<F-H:79E:&ED +M9&5N<F5A9&]N;'ES>7-T96T```"!,P>N#\_\\&P/Z^J<OS8]_GH-_C9=&O:; +MN?AF5PM%@/8R"MH"PK!D-+92R@HB57B\_G7B9D`HLH<G4Z@!).&WAAA(R4U? +M%0%=EB_VM=2[WZJHK$/PHCG(E(Y#O[W'JQD2%>%U\S6&7C"[<$<2GL2\B,** +MW`0[F2;R)EO2:N)4RB6G.3+R6%97BQ]K"X),-'`E&./R#`2A\R&D1#U8FUC& +MANR65$7S:?$CR7DS8<)L'MR%.5Y)T-;62DU\S8W?$4=U2972R-0]5J81R3E/ +M\K&`%O\H:/`E4``7!A\!"8#:``<+`0`!(P,!`05=`!````R!C@H!`M-R5@`` +` +end diff --git a/contrib/libarchive/libarchive/test/test_read_format_ar.ar.uu b/contrib/libarchive/libarchive/test/test_read_format_ar.ar.uu index 70507cc1da9d..1e644cc8ab07 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_ar.ar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_ar.ar.uu @@ -1,5 +1,3 @@ -$FreeBSD$ - begin 755 test_read_format_ar.ar M(3QA<F-H/@HO+R`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@ M("`@("`@("`@("`T,"`@("`@("`@8`IY>7ET='1S<W-A86%F9F8N;R\*:&AH diff --git a/contrib/libarchive/libarchive/test/test_read_format_ar.c b/contrib/libarchive/libarchive/test/test_read_format_ar.c index 40d11d16b9ed..6e279ec134d9 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_ar.c +++ b/contrib/libarchive/libarchive/test/test_read_format_ar.c @@ -26,8 +26,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); - DEFINE_TEST(test_read_format_ar) { diff --git a/contrib/libarchive/libarchive/test/test_read_format_cab.c b/contrib/libarchive/libarchive/test/test_read_format_cab.c index 8f6adae66a4a..f5ce21cbf19b 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_cab.c +++ b/contrib/libarchive/libarchive/test/test_read_format_cab.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD"); /* Execute the following command to rebuild the data for this program: diff --git a/contrib/libarchive/libarchive/test/test_read_format_cab_filename.c b/contrib/libarchive/libarchive/test/test_read_format_cab_filename.c index 2f46a7e6ed05..efab3ccd69f1 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_cab_filename.c +++ b/contrib/libarchive/libarchive/test/test_read_format_cab_filename.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD"); #include <locale.h> diff --git a/contrib/libarchive/libarchive/test/test_read_format_cab_filename_cp932.cab.uu b/contrib/libarchive/libarchive/test/test_read_format_cab_filename_cp932.cab.uu index 0d51f10c418a..9d59000c73ed 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_cab_filename_cp932.cab.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_cab_filename_cp932.cab.uu @@ -1,4 +1,4 @@ -begin 644 test_read_format_cab_cp932.cab +begin 644 test_read_format_cab_filename_cp932.cab M35-#1@````"4`````````"P``````````P$!``(````(_@``;@````$``Q(% M````````````=#ZO5"``E5R"OH+F7(J_CIHN='AT``4````%``````!T/KM4 M(`"57(*^@N9<B.J7EY5<+G1X=``I]2&+'@`*`%N`@(T`,*```0````$````! diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_afio.c b/contrib/libarchive/libarchive/test/test_read_format_cpio_afio.c index 95d3171e72cc..0eff8cfee856 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_cpio_afio.c +++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_afio.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* execute the following to rebuild the data for this program: diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin.c b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin.c index 9f754cfc226a..f5be2e65cdc1 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin.c +++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static unsigned char archive[] = { 199,'q',21,4,177,'y',237,'A',232,3,232,3,2,0,0,0,'p','C',244,'M',2,0,0,0, diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_Z.c b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_Z.c index 3ad9118cd6e2..aea5bcb4b5bc 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_Z.c +++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_Z.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static unsigned char archive[] = { 31,157,144,199,226,'T',' ',16,'+','O',187,' ',232,6,'$',20,0,160,'!',156, diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_be.c b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_be.c index 24d5f16f8f2b..66e4a9ca9afd 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_be.c +++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_be.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_read_format_cpio_bin_be) { diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_be.cpio.uu b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_be.cpio.uu index 999f1e0d961f..91d1b4c70075 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_be.cpio.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_be.cpio.uu @@ -1,4 +1,3 @@ -$FreeBSD$ begin 644 test_read_format_cpio_bin_be.cpio M<<<`"#P\@:0#Z`````$``$GS"&\`%0````5F:6QE,3$Q,3(R,C(S,S,S-#0T M-```86)C9&4`<<<```````````````$`````````"P````!44D%)3$52(2$A diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_bz2.c b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_bz2.c index 21fd86412def..b1a994bc5359 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_bz2.c +++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_bz2.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static unsigned char archive[] = { 'B','Z','h','9','1','A','Y','&','S','Y',134,'J',208,'4',0,0,30,246,141,253, diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_gz.c b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_gz.c index cb858d0e23ba..47545f913248 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_gz.c +++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_gz.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static unsigned char archive[] = { 31,139,8,0,244,'M','p','C',0,3,';','^','(',202,178,177,242,173,227,11,230, diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_le.c b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_le.c index 2d0484c5232f..0cb6cc845554 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_le.c +++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_le.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_read_format_cpio_bin_le) { diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_lzip.c b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_lzip.c index d9acf095ed77..72791aa60a69 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_lzip.c +++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_lzip.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static unsigned char archive[] = { 76, 90, 73, 80, 1, 12, 0, 99,156, 62,160, 67,124,230, 93,220, diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_lzma.c b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_lzma.c index f95ad49092f0..a629cb547e88 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_lzma.c +++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_lzma.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static unsigned char archive[] = { 93, 0, 0,128, 0,255,255,255,255,255,255,255,255, 0, 99,156, diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_xz.c b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_xz.c index 9619d57fa1d2..ff57982af436 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_xz.c +++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_xz.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static unsigned char archive[] = { 0xfd, 0x37, 0x7a, 0x58, 0x5a, 0x00, 0x00, 0x04, diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_filename.c b/contrib/libarchive/libarchive/test/test_read_format_cpio_filename.c index cf4f5ac266b3..c5aa9a7f52a0 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_cpio_filename.c +++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_filename.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD"); #include <locale.h> @@ -137,6 +136,11 @@ cleanup: DEFINE_TEST(test_read_format_cpio_filename_UTF8_UTF8_jp) { +#if defined(_WIN32) && !defined(__CYGWIN__) + /* Since we explicitly DON'T set hdrcharset=UTF-8 below */ + skipping("Windows defaults to OEMCP, not UTF-8"); + return; +#else const char *refname = "test_read_format_cpio_filename_utf8_jp.cpio"; struct archive *a; struct archive_entry *ae; @@ -180,6 +184,7 @@ DEFINE_TEST(test_read_format_cpio_filename_UTF8_UTF8_jp) /* Close the archive. */ assertEqualInt(ARCHIVE_OK, archive_read_close(a)); assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +#endif } DEFINE_TEST(test_read_format_cpio_filename_CP866_KOI8R) @@ -500,6 +505,11 @@ cleanup: DEFINE_TEST(test_read_format_cpio_filename_UTF8_UTF8_ru) { +#if defined(_WIN32) && !defined(__CYGWIN__) + /* Since we explicitly DON'T set hdrcharset=UTF-8 below */ + skipping("Windows defaults to OEMCP, not UTF-8"); + return; +#else const char *refname = "test_read_format_cpio_filename_utf8_ru.cpio"; struct archive *a; struct archive_entry *ae; @@ -542,6 +552,7 @@ DEFINE_TEST(test_read_format_cpio_filename_UTF8_UTF8_ru) /* Close the archive. */ assertEqualInt(ARCHIVE_OK, archive_read_close(a)); assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +#endif } DEFINE_TEST(test_read_format_cpio_filename_eucJP_CP932) diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_filename_cp866.cpio.uu b/contrib/libarchive/libarchive/test/test_read_format_cpio_filename_cp866.cpio.uu index 5f0658504039..b1ac82f545b3 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_cpio_filename_cp866.cpio.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_filename_cp866.cpio.uu @@ -1,4 +1,4 @@ -begin 644 test_read_format_cpio_cp866.cpio +begin 644 test_read_format_cpio_filename_cp866.cpio M,#<P-S`W,#`P,3,W,#`P,#`Q,3`P-S4U,#`Q-S4Q,#`Q-S4Q,#`P,#`Q,#`P M,#`P,3$U-#<S,C$U,#$P,#`P,#<P,#`P,#`P,#`P-H^0B(*%D@#P\NGWY?0P M-S`W,#<P,#`Q,S<P,#`P,#(Q,#`W-34P,#$W-3$P,#$W-3$P,#`P,#$P,#`P diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_filename_eucjp.cpio.uu b/contrib/libarchive/libarchive/test/test_read_format_cpio_filename_eucjp.cpio.uu index 9aa7666bc4a8..b900adb0561c 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_cpio_filename_eucjp.cpio.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_filename_eucjp.cpio.uu @@ -1,4 +1,4 @@ -begin 644 test_read_format_cpio_eucjp.cpio +begin 644 test_read_format_cpio_filename_eucjp.cpio M,#<P-S`W,#`P,3,W,#`P,#`Q,3`P-C0T,#`Q-S4Q,#`Q-S4Q,#`P,#`Q,#`P M,#`P,3$U-3$U,C(U,C`P,#`P,3$P,#`P,#`P,#`Q,+3!N_HN='AT`(J_CIJ" MJ8+(,#<P-S`W,#`P,3,W,#`P,#`R,3`P-C0T,#`Q-S4Q,#`Q-S4Q,#`P,#`Q diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_filename_koi8r.cpio.uu b/contrib/libarchive/libarchive/test/test_read_format_cpio_filename_koi8r.cpio.uu index dcdfd0ed63d8..76f58acace73 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_cpio_filename_koi8r.cpio.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_filename_koi8r.cpio.uu @@ -1,4 +1,4 @@ -begin 644 test_read_format_cpio_koi8r.cpio +begin 644 test_read_format_cpio_filename_koi8r.cpio M,#<P-S`W,#`P,3,W,#`P,#`Q,3`P-S4U,#`Q-S4Q,#`Q-S4Q,#`P,#`Q,#`P M,#`P,3$U-#<S,C`P,S8P,#`P,#<P,#`P,#`P,#`P-O#RZ??E]`#P\NGWY?0P M-S`W,#<P,#`Q,S<P,#`P,#(Q,#`W-34P,#$W-3$P,#$W-3$P,#`P,#$P,#`P diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_filename_utf8_jp.cpio.uu b/contrib/libarchive/libarchive/test/test_read_format_cpio_filename_utf8_jp.cpio.uu index 8f9a6f652c28..45c3c4791ffa 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_cpio_filename_utf8_jp.cpio.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_filename_utf8_jp.cpio.uu @@ -1,4 +1,4 @@ -begin 644 test_read_format_cpio_utf8_jp.cpio +begin 644 test_read_format_cpio_filename_utf8_jp.cpio M,#<P-S`W,#`P,3,W,#`P,#`Q,3`P-C0T,#`Q-S4Q,#`Q-S4Q,#`P,#`Q,#`P M,#`P,3$U-3$U,C(S-C8P,#`P,3,P,#`P,#`P,#`Q,.:\HN6MERYT>'0`BK^. MFH*I@L@P-S`W,#<P,#`Q,S<P,#`P,#(Q,#`V-#0P,#$W-3$P,#$W-3$P,#`P diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_filename_utf8_ru.cpio.uu b/contrib/libarchive/libarchive/test/test_read_format_cpio_filename_utf8_ru.cpio.uu index 9ed52f87c44c..849b9fe332cf 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_cpio_filename_utf8_ru.cpio.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_filename_utf8_ru.cpio.uu @@ -1,4 +1,4 @@ -begin 644 test_read_format_cpio_utf8_ru.cpio +begin 644 test_read_format_cpio_filename_utf8_ru.cpio M,#<P-S`W,#`P,3,W,#`P,#`Q,3`P-S4U,#`Q-S4Q,#`Q-S4Q,#`P,#`Q,#`P M,#`P,3$U,C$U,38U,38P,#`P,34P,#`P,#`P,#`P-M"?T*#0F-"2T)70H@#P M\NGWY?0P-S`W,#<P,#`Q,S<P,#`P,#(Q,#`W-34P,#$W-3$P,#$W-3$P,#`P diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_odc.c b/contrib/libarchive/libarchive/test/test_read_format_cpio_odc.c index f89c793b5d13..00b7c1c0698b 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_cpio_odc.c +++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_odc.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static unsigned char archive[] = { '0','7','0','7','0','7','0','0','2','0','2','5','0','7','4','6','6','1','0', diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_gzip.c b/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_gzip.c index de2ff2d90514..ae201de00f68 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_gzip.c +++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_gzip.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static unsigned char archive[] = { 31,139,8,0,236,'c',217,'D',0,3,'3','0','7','0','7','0','4','0','0',181,'0', diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4c_Z.c b/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4c_Z.c index 3f968e2fd952..b4d9a8470851 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4c_Z.c +++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4c_Z.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static unsigned char archive[] = { 31,157,144,'0','n',4,132,'!',3,6,140,26,'8','n',228,16,19,195,160,'A',26, diff --git a/contrib/libarchive/libarchive/test/test_read_format_empty.c b/contrib/libarchive/libarchive/test/test_read_format_empty.c index ea41792df414..fc8d8cc54ebf 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_empty.c +++ b/contrib/libarchive/libarchive/test/test_read_format_empty.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static unsigned char archive[] = { 0 }; diff --git a/contrib/libarchive/libarchive/test/test_read_format_gtar_filename.c b/contrib/libarchive/libarchive/test/test_read_format_gtar_filename.c index f81796b786da..cf9c30991b28 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_gtar_filename.c +++ b/contrib/libarchive/libarchive/test/test_read_format_gtar_filename.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD"); #include <locale.h> diff --git a/contrib/libarchive/libarchive/test/test_read_format_gtar_filename_cp866.tar.Z.uu b/contrib/libarchive/libarchive/test/test_read_format_gtar_filename_cp866.tar.Z.uu index a6fd80c24695..b06fb11d5528 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_gtar_filename_cp866.tar.Z.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_gtar_filename_cp866.tar.Z.uu @@ -1,4 +1,4 @@ -begin 644 test_read_format_gtar_cp866.tar.Z +begin 644 test_read_format_gtar_filename_cp866.tar.Z M'YV0CR`A$E1($H"#"!,J7,BPH<.'$"-*1`BC(HP;-6H`L!@#8XR-%3O6^&BQ MI$4;`&+$J$'CQ@P9*V&0C`'#Q@T9`$#`F,BSI\^?0`'4F4,GC!P0(`",J5,F MJ,.E39U*G4JUJM6K6'G"DY?N7CEZ6<.*'4NVK-FS:-.J7<NVK<-7X%")*B7. diff --git a/contrib/libarchive/libarchive/test/test_read_format_gtar_filename_eucjp.tar.Z.uu b/contrib/libarchive/libarchive/test/test_read_format_gtar_filename_eucjp.tar.Z.uu index 87fa582f6809..97d87728f9fb 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_gtar_filename_eucjp.tar.Z.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_gtar_filename_eucjp.tar.Z.uu @@ -1,4 +1,4 @@ -begin 644 test_read_format_gtar_eucjp.tar.Z +begin 644 test_read_format_gtar_filename_eucjp.tar.Z M'YV0M(+MTN>"#AXZ`!(J7,BPH<.'$"-*G$@1`(R+,&S0H&'Q8HP;-6)TA/$Q MY$B,&&/``!`C1HV0-63(B+F29`P:)D&LK,BSI\^?0.O,H1-&#@@0`,;4*0,T MHE*F3:-*G4JUJM6K4Q7]<J1)4"I!R+"*'4NVK-FS:-.J7<NVK=NHR7H5//BV diff --git a/contrib/libarchive/libarchive/test/test_read_format_gtar_filename_koi8r.tar.Z.uu b/contrib/libarchive/libarchive/test/test_read_format_gtar_filename_koi8r.tar.Z.uu index bf4ce01708cc..a198830ae1c9 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_gtar_filename_koi8r.tar.Z.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_gtar_filename_koi8r.tar.Z.uu @@ -1,4 +1,4 @@ -begin 644 test_read_format_gtar_koi8r.tar.Z +begin 644 test_read_format_gtar_filename_koi8r.tar.Z M'YV0T*0ENU:,&H"#"!,J7,BPH<.'$"-*1`BC(HP;-6H`L!@#8XR-%3O6^&BQ MI$4;`&+$J$'CQ@P9%6>@A*&RAHP;`$#`F,BSI\^?0`'4F4,GC!P0(`",J5,F MJ,.E39U*G4JUJM6K6'G"DY?N7CEZ6<.*'4NVK-FS:-.J7<NVK<.M7;^ZG<NP diff --git a/contrib/libarchive/libarchive/test/test_read_format_gtar_gz.c b/contrib/libarchive/libarchive/test/test_read_format_gtar_gz.c index d495a43000e7..bc712b9e6e44 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_gtar_gz.c +++ b/contrib/libarchive/libarchive/test/test_read_format_gtar_gz.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static unsigned char archive[] = { 31,139,8,0,'+','e',217,'D',0,3,211,211,'g',160,'9','0',0,2,'s','S','S',16, diff --git a/contrib/libarchive/libarchive/test/test_read_format_gtar_lzma.c b/contrib/libarchive/libarchive/test/test_read_format_gtar_lzma.c index 7b01b3a450dd..1aa0212da0e3 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_gtar_lzma.c +++ b/contrib/libarchive/libarchive/test/test_read_format_gtar_lzma.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static unsigned char archive[] = { 0x5d, 0x0, 0x0, 0x80, 0x0, 0x0, 0x28, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, diff --git a/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse.c b/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse.c index 5781c7fde7cf..6a2e3650c5a8 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse.c +++ b/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse.c @@ -23,8 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); - struct contents { int64_t o; diff --git a/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse_1_13.tar.uu b/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse_1_13.tar.uu index 7b19d671ac5c..5ab5190362a2 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse_1_13.tar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse_1_13.tar.uu @@ -1,4 +1,3 @@ -$FreeBSD$ begin 644 test_read_format_gtar_sparse_1_13.tar M<W!A<G-E```````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` diff --git a/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse_1_17.tar.uu b/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse_1_17.tar.uu index f8985b077b94..815ec6d64a07 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse_1_17.tar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse_1_17.tar.uu @@ -1,4 +1,3 @@ -$FreeBSD$ begin 644 test_read_format_gtar_sparse_1_17.tar M<W!A<G-E```````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` diff --git a/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse_1_17_posix00.tar.uu b/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse_1_17_posix00.tar.uu index d19dead5f909..d19a85810a87 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse_1_17_posix00.tar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse_1_17_posix00.tar.uu @@ -1,4 +1,3 @@ -$FreeBSD$ begin 644 test_read_format_gtar_sparse_1_17_posix00.tar M+B]087A(96%D97)S+C,X-C4Y+W-P87)S90`````````````````````````` M```````````````````````````````````````````````````````````` diff --git a/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse_1_17_posix01.tar.uu b/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse_1_17_posix01.tar.uu index 7fa0af9cc702..fac4feeb8f32 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse_1_17_posix01.tar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse_1_17_posix01.tar.uu @@ -1,4 +1,3 @@ -$FreeBSD$ begin 644 test_read_format_gtar_sparse_1_17_posix01.tar M+B]087A(96%D97)S+C,X-C8Q+W-P87)S90`````````````````````````` M```````````````````````````````````````````````````````````` diff --git a/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse_1_17_posix10.tar.uu b/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse_1_17_posix10.tar.uu index ca1f12b4b910..7ddd3fd15c2c 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse_1_17_posix10.tar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse_1_17_posix10.tar.uu @@ -1,4 +1,3 @@ -$FreeBSD$ begin 644 test_read_format_gtar_sparse_1_17_posix10.tar M+B]087A(96%D97)S+C,X-C8S+W-P87)S90`````````````````````````` M```````````````````````````````````````````````````````````` diff --git a/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse_1_17_posix10_modified.tar.uu b/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse_1_17_posix10_modified.tar.uu index a0673de19d35..cf8fd77cc0ca 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse_1_17_posix10_modified.tar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse_1_17_posix10_modified.tar.uu @@ -1,4 +1,3 @@ -$FreeBSD$ begin 644 test_read_format_gtar_sparse_1_17_posix10_modified.tar M+B]087A(96%D97)S+C,X-C8S+W-P87)S90`````````````````````````` M```````````````````````````````````````````````````````````` diff --git a/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse_skip_entry.c b/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse_skip_entry.c index 6ddd42122d18..d592c466f76b 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse_skip_entry.c +++ b/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse_skip_entry.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD"); #if defined(__BORLANDC__) || (defined(_MSC_VER) && _MSC_VER <= 1300) # define LITERAL_LL(x) x##i64 diff --git a/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse_skip_entry.tar.Z.uu b/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse_skip_entry.tar.Z.uu index dc0daae9e1e2..634ac0673db7 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse_skip_entry.tar.Z.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_gtar_sparse_skip_entry.tar.Z.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_read_format_gtar_sparse_skip_entry.tar.Z M'YV04,+@05(F#)DR<EZ$`<"PH<.'$"-*G$BQHL6*,#+:L$$#!(",,6[4@.$1 MI$B2'S.JS#A#A@P0,63,L`$C!HP9-VB\K"FCAHT8`$#@N4BTJ-&C2"/6F4,G MC)R48^J424HQZE2J$E=F+*G5(]:O8,.*'3M6!LDY:?24Z6'S!DX:,7#(H$%# diff --git a/contrib/libarchive/libarchive/test/test_read_format_iso.iso.Z.uu b/contrib/libarchive/libarchive/test/test_read_format_iso.iso.Z.uu index 2f5cbd792041..033e33976930 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_iso.iso.Z.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_iso.iso.Z.uu @@ -1,5 +1,3 @@ -$FreeBSD$ - begin 644 test_read_format_iso.iso.Z M'YV0``(*'$BPH,&#"!,J7,BPH<.'$"-*G$BQHL6+&#-JW,BQH\>/($.*'$FR MI,F3*%.J7,FRI<N7,&/*G$FSILV;.'/JW,FSI\^?0(,*'4JTJ-&C2),J7<JT diff --git a/contrib/libarchive/libarchive/test/test_read_format_iso_Z.c b/contrib/libarchive/libarchive/test/test_read_format_iso_Z.c index 5656292bff98..09b0acb804ea 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_iso_Z.c +++ b/contrib/libarchive/libarchive/test/test_read_format_iso_Z.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static void test1(void) diff --git a/contrib/libarchive/libarchive/test/test_read_format_iso_joliet.iso.Z.uu b/contrib/libarchive/libarchive/test/test_read_format_iso_joliet.iso.Z.uu index b6ac2520083d..1854fc26ee84 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_iso_joliet.iso.Z.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_iso_joliet.iso.Z.uu @@ -1,5 +1,3 @@ -$FreeBSD$ - begin 644 test_read_format_iso_joliet.iso.Z M'YV0``(*'$BPH,&#"!,J7,BPH<.'$"-*G$BQHL6+&#-JW,BQH\>/($.*'$FR MI,F3*%.J7,FRI<N7,&/*G$FSILV;.'/JW,FSI\^?0(,*'4JTJ-&C2),J7<JT diff --git a/contrib/libarchive/libarchive/test/test_read_format_iso_joliet_long.iso.Z.uu b/contrib/libarchive/libarchive/test/test_read_format_iso_joliet_long.iso.Z.uu index 9babf696e12c..9dc675b5fe6a 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_iso_joliet_long.iso.Z.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_iso_joliet_long.iso.Z.uu @@ -1,5 +1,3 @@ -$FreeBSD$ - begin 644 test_read_format_iso_joliet_long.iso.Z M'YV0``(*'$BPH,&#"!,J7,BPH<.'$"-*G$BQHL6+&#-JW,BQH\>/($.*'$FR MI,F3*%.J7,FRI<N7,&/*G$FSILV;.'/JW,FSI\^?0(,*'4JTJ-&C2),J7<JT diff --git a/contrib/libarchive/libarchive/test/test_read_format_iso_joliet_rockridge.iso.Z.uu b/contrib/libarchive/libarchive/test/test_read_format_iso_joliet_rockridge.iso.Z.uu index fdccb0cf7143..ac2fea4ab675 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_iso_joliet_rockridge.iso.Z.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_iso_joliet_rockridge.iso.Z.uu @@ -1,5 +1,3 @@ -$FreeBSD$ - begin 644 test_read_format_iso_joliet_rockridge.iso.Z M'YV0``(*'$BPH,&#"!,J7,BPH<.'$"-*G$BQHL6+&#-JW,BQH\>/($.*'$FR MI,F3*%.J7,FRI<N7,&/*G$FSILV;.'/JW,FSI\^?0(,*'4JTJ-&C2),J7<JT diff --git a/contrib/libarchive/libarchive/test/test_read_format_iso_multi_extent.c b/contrib/libarchive/libarchive/test/test_read_format_iso_multi_extent.c index 0295d3114626..de9a40114c14 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_iso_multi_extent.c +++ b/contrib/libarchive/libarchive/test/test_read_format_iso_multi_extent.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_read_format_iso_multi_extent) { diff --git a/contrib/libarchive/libarchive/test/test_read_format_iso_multi_extent.iso.Z.uu b/contrib/libarchive/libarchive/test/test_read_format_iso_multi_extent.iso.Z.uu index 3ce33dc2001e..922b5e036872 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_iso_multi_extent.iso.Z.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_iso_multi_extent.iso.Z.uu @@ -1,5 +1,3 @@ -$FreeBSD$ - begin 644 test_read_format_iso_multi_extent.iso.Z M'YV0``(*'$BPH,&#"!,J7,BPH<.'$"-*G$BQHL6+&#-JW,BQH\>/($.*'$FR MI,F3*%.J7,FRI<N7,&/*G$FSILV;.'/JW,FSI\^?0(,*'4JTJ-&C2),J7<JT diff --git a/contrib/libarchive/libarchive/test/test_read_format_iso_rockridge.iso.Z.uu b/contrib/libarchive/libarchive/test/test_read_format_iso_rockridge.iso.Z.uu index 218631ca2c30..716036180cd0 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_iso_rockridge.iso.Z.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_iso_rockridge.iso.Z.uu @@ -1,5 +1,3 @@ -$FreeBSD$ - begin 644 test_read_format_iso_rockridge.iso.Z M'YV0``(*'$BPH,&#"!,J7,BPH<.'$"-*G$BQHL6+&#-JW,BQH\>/($.*'$FR MI,F3*%.J7,FRI<N7,&/*G$FSILV;.'/JW,FSI\^?0(,*'4JTJ-&C2),J7<JT diff --git a/contrib/libarchive/libarchive/test/test_read_format_iso_rockridge_ce.iso.Z.uu b/contrib/libarchive/libarchive/test/test_read_format_iso_rockridge_ce.iso.Z.uu index 818bb0e37272..cd817abce1f4 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_iso_rockridge_ce.iso.Z.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_iso_rockridge_ce.iso.Z.uu @@ -1,5 +1,3 @@ -$FreeBSD$ - begin 644 test_read_format_iso_rockridge_ce.iso.Z M'YV0``(*'$BPH,&#"!,J7,BPH<.'$"-*G$BQHL6+&#-JW,BQH\>/($.*'$FR MI,F3*%.J7,FRI<N7,&/*G$FSILV;.'/JW,FSI\^?0(,*'4JTJ-&C2),J7<JT diff --git a/contrib/libarchive/libarchive/test/test_read_format_iso_rockridge_new.iso.Z.uu b/contrib/libarchive/libarchive/test/test_read_format_iso_rockridge_new.iso.Z.uu index dd013ffc84d8..8ccfe59a73bd 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_iso_rockridge_new.iso.Z.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_iso_rockridge_new.iso.Z.uu @@ -1,5 +1,3 @@ -$FreeBSD$ - begin 644 test_read_format_iso_rockridge_new.iso.Z M'YV0``(*'$BPH,&#"!,J7,BPH<.'$"-*G$BQHL6+&#-JW,BQH\>/($.*'$FR MI,F3*%.J7,FRI<N7,&/*G$FSILV;.'/JW,FSI\^?0(,*'4JTJ-&C2),J7<JT diff --git a/contrib/libarchive/libarchive/test/test_read_format_iso_rockridge_rr_moved.iso.Z.uu b/contrib/libarchive/libarchive/test/test_read_format_iso_rockridge_rr_moved.iso.Z.uu index 69de12b43b9e..f710d2586c93 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_iso_rockridge_rr_moved.iso.Z.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_iso_rockridge_rr_moved.iso.Z.uu @@ -1,5 +1,3 @@ -$FreeBSD$ - begin 644 test_read_format_iso_rockridge_rr_moved.iso.Z M'YV0``(*'$BPH,&#"!,J7,BPH<.'$"-*G$BQHL6+&#-JW,BQH\>/($.*'$FR MI,F3*%.J7,FRI<N7,&/*G$FSILV;.'/JW,FSI\^?0(,*'4JTJ-&C2),J7<JT diff --git a/contrib/libarchive/libarchive/test/test_read_format_iso_xorriso.c b/contrib/libarchive/libarchive/test/test_read_format_iso_xorriso.c index ce71a560a01c..ca8a027b5ad2 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_iso_xorriso.c +++ b/contrib/libarchive/libarchive/test/test_read_format_iso_xorriso.c @@ -23,8 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); - /* Execute the following command to rebuild the data for this program: diff --git a/contrib/libarchive/libarchive/test/test_read_format_iso_zisofs.iso.Z.uu b/contrib/libarchive/libarchive/test/test_read_format_iso_zisofs.iso.Z.uu index 00896e1f67e7..53e75cabae1a 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_iso_zisofs.iso.Z.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_iso_zisofs.iso.Z.uu @@ -1,5 +1,3 @@ -$FreeBSD$ - begin 644 test_read_format_iso_zisofs.iso.Z M'YV0``(*'$BPH,&#"!,J7,BPH<.'$"-*G$BQHL6+&#-JW,BQH\>/($.*'$FR MI,F3*%.J7,FRI<N7,&/*G$FSILV;.'/JW,FSI\^?0(,*'4JTJ-&C2),J7<JT diff --git a/contrib/libarchive/libarchive/test/test_read_format_isojoliet_bz2.c b/contrib/libarchive/libarchive/test/test_read_format_isojoliet_bz2.c index df61254f63a9..68a9486e7aac 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_isojoliet_bz2.c +++ b/contrib/libarchive/libarchive/test/test_read_format_isojoliet_bz2.c @@ -27,7 +27,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* Execute the following to rebuild the data for this program: diff --git a/contrib/libarchive/libarchive/test/test_read_format_isojoliet_long.c b/contrib/libarchive/libarchive/test/test_read_format_isojoliet_long.c index 4e01249478b8..fa089c1de1c9 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_isojoliet_long.c +++ b/contrib/libarchive/libarchive/test/test_read_format_isojoliet_long.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* Execute the following to rebuild the data for this program: @@ -115,7 +114,7 @@ DEFINE_TEST(test_read_format_isojoliet_long) pathname[102] = '3'; pathname[103] = '\0'; assertEqualInt(0, archive_read_next_header(a, &ae)); - assertEqualString("hardlink", archive_entry_pathname(ae)); + assertEqualString(pathname, archive_entry_pathname(ae)); assertEqualInt(AE_IFREG, archive_entry_filetype(ae)); assert(archive_entry_hardlink(ae) == NULL); assertEqualInt(6, archive_entry_size(ae)); @@ -129,9 +128,9 @@ DEFINE_TEST(test_read_format_isojoliet_long) /* Second name for the same regular file (this happens to be * returned second, so does get marked as a hardlink). */ assertEqualInt(0, archive_read_next_header(a, &ae)); - assertEqualString(pathname, archive_entry_pathname(ae)); + assertEqualString("hardlink", archive_entry_pathname(ae)); assertEqualInt(AE_IFREG, archive_entry_filetype(ae)); - assertEqualString("hardlink", archive_entry_hardlink(ae)); + assertEqualString(pathname, archive_entry_hardlink(ae)); assert(!archive_entry_size_is_set(ae)); assertEqualInt(archive_entry_is_encrypted(ae), 0); assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED); diff --git a/contrib/libarchive/libarchive/test/test_read_format_isojoliet_rr.c b/contrib/libarchive/libarchive/test/test_read_format_isojoliet_rr.c index 52490dd87321..844f41367128 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_isojoliet_rr.c +++ b/contrib/libarchive/libarchive/test/test_read_format_isojoliet_rr.c @@ -27,7 +27,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* Execute the following to rebuild the data for this program: diff --git a/contrib/libarchive/libarchive/test/test_read_format_isojoliet_versioned.c b/contrib/libarchive/libarchive/test/test_read_format_isojoliet_versioned.c index 011b5e296b94..b8a03362274f 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_isojoliet_versioned.c +++ b/contrib/libarchive/libarchive/test/test_read_format_isojoliet_versioned.c @@ -27,7 +27,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD: head/lib/libarchive/test/test_read_format_isojoliet_bz2.c 201247 2009-12-30 05:59:21Z kientzle $"); /* * The data for this testcase was provided by Mike Qin <mikeandmore@gmail.com> diff --git a/contrib/libarchive/libarchive/test/test_read_format_isorr_bz2.c b/contrib/libarchive/libarchive/test/test_read_format_isorr_bz2.c index bff385ca1d59..c1accea78792 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_isorr_bz2.c +++ b/contrib/libarchive/libarchive/test/test_read_format_isorr_bz2.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* PLEASE use old cdrtools; mkisofs version is 2.01. diff --git a/contrib/libarchive/libarchive/test/test_read_format_isorr_ce.c b/contrib/libarchive/libarchive/test/test_read_format_isorr_ce.c index 9712eb432106..6b983e8ff4ab 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_isorr_ce.c +++ b/contrib/libarchive/libarchive/test/test_read_format_isorr_ce.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* Execute the following command to rebuild the data for this program: diff --git a/contrib/libarchive/libarchive/test/test_read_format_isorr_new_bz2.c b/contrib/libarchive/libarchive/test/test_read_format_isorr_new_bz2.c index 31fe1dbbf035..787c1e6301be 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_isorr_new_bz2.c +++ b/contrib/libarchive/libarchive/test/test_read_format_isorr_new_bz2.c @@ -23,8 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); - /* PLEASE use latest cdrtools at least mkisofs version is 2.01.01a63 or later. diff --git a/contrib/libarchive/libarchive/test/test_read_format_isorr_rr_moved.c b/contrib/libarchive/libarchive/test/test_read_format_isorr_rr_moved.c index 8f5354020448..a27230033672 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_isorr_rr_moved.c +++ b/contrib/libarchive/libarchive/test/test_read_format_isorr_rr_moved.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* Execute the following command to rebuild the data for this program: diff --git a/contrib/libarchive/libarchive/test/test_read_format_isozisofs_bz2.c b/contrib/libarchive/libarchive/test/test_read_format_isozisofs_bz2.c index 7fea6b1bfbea..3f059fde08b5 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_isozisofs_bz2.c +++ b/contrib/libarchive/libarchive/test/test_read_format_isozisofs_bz2.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* Execute the following command to rebuild the data for this program: diff --git a/contrib/libarchive/libarchive/test/test_read_format_lha.c b/contrib/libarchive/libarchive/test/test_read_format_lha.c index 6a53976c2a75..93e79183e5c3 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_lha.c +++ b/contrib/libarchive/libarchive/test/test_read_format_lha.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD"); /* Execute the following command to rebuild the data for this program: diff --git a/contrib/libarchive/libarchive/test/test_read_format_lha_bugfix_0.c b/contrib/libarchive/libarchive/test/test_read_format_lha_bugfix_0.c index 2b4160b3220e..bbdcb81569b6 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_lha_bugfix_0.c +++ b/contrib/libarchive/libarchive/test/test_read_format_lha_bugfix_0.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD"); DEFINE_TEST(test_read_format_lha_bugfix_0) { diff --git a/contrib/libarchive/libarchive/test/test_read_format_lha_filename.c b/contrib/libarchive/libarchive/test/test_read_format_lha_filename.c index 126a8704ce4a..d726f6245d7d 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_lha_filename.c +++ b/contrib/libarchive/libarchive/test/test_read_format_lha_filename.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD"); #include <locale.h> diff --git a/contrib/libarchive/libarchive/test/test_read_format_lha_filename_cp932.lzh.uu b/contrib/libarchive/libarchive/test/test_read_format_lha_filename_cp932.lzh.uu index 15170146083e..a579fb1aaa61 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_lha_filename_cp932.lzh.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_lha_filename_cp932.lzh.uu @@ -1,4 +1,4 @@ -begin 644 test_read_format_lha_cp932.lzh +begin 644 test_read_format_lha_filename_cp932.lzh M30`M;&@P+0@````(````*:2#32`"&4A-!P!&I`,```L``8J_CIHN='AT&P!! M-'"`))KERP%TJNDQFN7+`72JZ3&:Y<L!!@``T2,'``"*OXZ:@JF"R$L`+6QH M,"T$````!````#RD@TT@`NA;30<`1J0#```)``&57"YT>'0;`$&:91,VFN7+ diff --git a/contrib/libarchive/libarchive/test/test_read_format_lha_filename_utf16.c b/contrib/libarchive/libarchive/test/test_read_format_lha_filename_utf16.c index 7ab13e43bdd3..d0710799bba4 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_lha_filename_utf16.c +++ b/contrib/libarchive/libarchive/test/test_read_format_lha_filename_utf16.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD"); #include <locale.h> diff --git a/contrib/libarchive/libarchive/test/test_read_format_lha_filename_utf16.lzh.uu b/contrib/libarchive/libarchive/test/test_read_format_lha_filename_utf16.lzh.uu index ca5da7a64e59..0eeea817b462 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_lha_filename_utf16.lzh.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_lha_filename_utf16.lzh.uu @@ -1,19 +1,19 @@ -begin 644 test_read_format_lha_filename_utf16.lzh
-M@0`M;&@P+0P````,````L/5872`"IW%-!P!&I`,```T``5]?7U]?7RYT>'0*
-M``)?7U]?7U__%P!$Y`#V`/P`Q`#6`-P`+@!T`'@`=``1`$7<`-8`Q`#\`/8`
-MY`#__QL`078S<F.15=4!]0V8@I%5U0'U#9B"D575`08```\:!P``PZ3#ML.\
-MPX3#EL.<90`M;&AD+0``````````PX"D72`"``!-!P!&I`,```,``0H``E]?
-M7U]?7_\%`$`0`!$`1=P`U@#$`/P`]@#D`/__&P!!FDHB>9B"U0$H^DQ_F(+5
-M`2CZ3'^8@M4!!@``GW<'``!J`"UL:#`M&0```!D```!V)L1=(`*CNTT'`$:D
-M`P``#0`!@V6#6(-G+G1X=`H``E]?7U]?7_\1`$7<`-8`Q`#\`/8`Y`#__QL`
-M00IF#4J@E-4!L"5C?'65U0&P)6-\=975`08``$%^!P``5&5S="!I;B!*87!A
-M;F5S92!+871A:V%N87L`+6QH,"T,````#````+#U6%T@`J=Q30<`1J0#```-
-M``%?7U]?7U\N='AT"@`"@V6#6(-G_Q<`1.0`]@#\`,0`U@#<`"X`=`!X`'0`
-M"P!%QC"Y,,@P__\;`$'D5O!-H)35`?4-F(*15=4!Y%;P3:"4U0$&``"A+0<`
-M`,.DP[;#O,.$PY;#G%0`+6QH9"T``````````-3`PET@`@``30<`1J0#```#
-M``$*``*#98-8@V?_!0!`$``;`$%%!\Y.H)35`3/_]%&@E-4!,__T4:"4U0$&
-M``!>;@<``&8`+6QH,"T,````#````+#U6%T@`J=Q30<`1J0#```-``%?7U]?
-M7U\N='AT%P!$Y`#V`/P`Q`#6`-P`+@!T`'@`=``;`$'D5O!-H)35`?4-F(*1
-@5=4!Y%;P3:"4U0$&``"M>`<``,.DP[;#O,.$PY;#G`#D
-`
-end
+begin 644 test_read_format_lha_filename_utf16.lzh +M@0`M;&@P+0P````,````L/5872`"IW%-!P!&I`,```T``5]?7U]?7RYT>'0* +M``)?7U]?7U__%P!$Y`#V`/P`Q`#6`-P`+@!T`'@`=``1`$7<`-8`Q`#\`/8` +MY`#__QL`078S<F.15=4!]0V8@I%5U0'U#9B"D575`08```\:!P``PZ3#ML.\ +MPX3#EL.<90`M;&AD+0``````````PX"D72`"``!-!P!&I`,```,``0H``E]? +M7U]?7_\%`$`0`!$`1=P`U@#$`/P`]@#D`/__&P!!FDHB>9B"U0$H^DQ_F(+5 +M`2CZ3'^8@M4!!@``GW<'``!J`"UL:#`M&0```!D```!V)L1=(`*CNTT'`$:D +M`P``#0`!@V6#6(-G+G1X=`H``E]?7U]?7_\1`$7<`-8`Q`#\`/8`Y`#__QL` +M00IF#4J@E-4!L"5C?'65U0&P)6-\=975`08``$%^!P``5&5S="!I;B!*87!A +M;F5S92!+871A:V%N87L`+6QH,"T,````#````+#U6%T@`J=Q30<`1J0#```- +M``%?7U]?7U\N='AT"@`"@V6#6(-G_Q<`1.0`]@#\`,0`U@#<`"X`=`!X`'0` +M"P!%QC"Y,,@P__\;`$'D5O!-H)35`?4-F(*15=4!Y%;P3:"4U0$&``"A+0<` +M`,.DP[;#O,.$PY;#G%0`+6QH9"T``````````-3`PET@`@``30<`1J0#```# +M``$*``*#98-8@V?_!0!`$``;`$%%!\Y.H)35`3/_]%&@E-4!,__T4:"4U0$& +M``!>;@<``&8`+6QH,"T,````#````+#U6%T@`J=Q30<`1J0#```-``%?7U]? +M7U\N='AT%P!$Y`#V`/P`Q`#6`-P`+@!T`'@`=``;`$'D5O!-H)35`?4-F(*1 +@5=4!Y%;P3:"4U0$&``"M>`<``,.DP[;#O,.$PY;#G`#D +` +end diff --git a/contrib/libarchive/libarchive/test/test_read_format_mtree.c b/contrib/libarchive/libarchive/test/test_read_format_mtree.c index 500fd5384a5d..70730839386d 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_mtree.c +++ b/contrib/libarchive/libarchive/test/test_read_format_mtree.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static void test_read_format_mtree1(void) diff --git a/contrib/libarchive/libarchive/test/test_read_format_pax_bz2.c b/contrib/libarchive/libarchive/test/test_read_format_pax_bz2.c index 098df9731508..4f11137b9c6f 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_pax_bz2.c +++ b/contrib/libarchive/libarchive/test/test_read_format_pax_bz2.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static unsigned char archive[] = { 'B','Z','h','9','1','A','Y','&','S','Y',152,180,30,185,0,0,140,127,176,212, diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar.c b/contrib/libarchive/libarchive/test/test_read_format_rar.c index 1425eb9a4570..dce567af48a9 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar.c +++ b/contrib/libarchive/libarchive/test/test_read_format_rar.c @@ -214,6 +214,14 @@ DEFINE_TEST(test_read_format_rar_unicode_UTF8) assert((a = archive_read_new()) != NULL); assertA(0 == archive_read_support_filter_all(a)); assertA(0 == archive_read_support_format_all(a)); +#if defined(_WIN32) && !defined(__CYGWIN__) + /* Windows will use OEMCP as default, but the file is UTF-8. */ + if (ARCHIVE_OK != archive_read_set_options(a, "rar:hdrcharset=UTF-8")) { + skipping("This system cannot read input as UTF-8."); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + return; + } +#endif assertA(0 == archive_read_open_filename(a, reffile, 10240)); /* First header. */ @@ -879,16 +887,9 @@ DEFINE_TEST(test_read_format_rar_windows) assertEqualInt(ARCHIVE_OK, archive_read_free(a)); } -DEFINE_TEST(test_read_format_rar_multivolume) +static void +test_read_format_rar_multivolume_test_body_helper(struct archive *a) { - const char *reffiles[] = - { - "test_read_format_rar_multivolume.part0001.rar", - "test_read_format_rar_multivolume.part0002.rar", - "test_read_format_rar_multivolume.part0003.rar", - "test_read_format_rar_multivolume.part0004.rar", - NULL - }; int file1_size = 241647978, offset = 0; char buff[64]; const char file1_test_txt[] = "gin-bottom: 0in\"><BR>\n</P>\n</BODY>\n" @@ -903,13 +904,6 @@ DEFINE_TEST(test_read_format_rar_multivolume) int file3_size = sizeof(file3_buff); const char file3_test_txt[] = "test text document\r\n"; struct archive_entry *ae; - struct archive *a; - - extract_reference_files(reffiles); - assert((a = archive_read_new()) != NULL); - assertA(0 == archive_read_support_filter_all(a)); - assertA(0 == archive_read_support_format_all(a)); - assertA(0 == archive_read_open_filenames(a, reffiles, 10240)); /* First header. */ assertA(0 == archive_read_next_header(a, &ae)); @@ -1016,6 +1010,65 @@ DEFINE_TEST(test_read_format_rar_multivolume) assertEqualInt(ARCHIVE_OK, archive_read_free(a)); } +DEFINE_TEST(test_read_format_rar_multivolume) +{ + const char *reffiles[] = + { + "test_read_format_rar_multivolume.part0001.rar", + "test_read_format_rar_multivolume.part0002.rar", + "test_read_format_rar_multivolume.part0003.rar", + "test_read_format_rar_multivolume.part0004.rar", + NULL + }; + + struct archive *a; + + extract_reference_files(reffiles); + assert((a = archive_read_new()) != NULL); + assertA(0 == archive_read_support_filter_all(a)); + assertA(0 == archive_read_support_format_all(a)); + assertA(0 == archive_read_open_filenames(a, reffiles, 10240)); + + test_read_format_rar_multivolume_test_body_helper(a); +} + +/* As above, but using read_open_filenames_w */ +DEFINE_TEST(test_read_format_rar_multivolume_w) +{ +#if defined(_WIN32) && !defined(__CYGWIN__) + const char *reffiles[] = + { + "test_read_format_rar_multivolume.part0001.rar", + "test_read_format_rar_multivolume.part0002.rar", + "test_read_format_rar_multivolume.part0003.rar", + "test_read_format_rar_multivolume.part0004.rar", + NULL + }; + + const wchar_t *wreffiles[] = + { + L"test_read_format_rar_multivolume.part0001.rar", + L"test_read_format_rar_multivolume.part0002.rar", + L"test_read_format_rar_multivolume.part0003.rar", + L"test_read_format_rar_multivolume.part0004.rar", + NULL + }; + + struct archive *a; + + extract_reference_files(reffiles); + assert((a = archive_read_new()) != NULL); + assertA(0 == archive_read_support_filter_all(a)); + assertA(0 == archive_read_support_format_all(a)); + assertA(0 == archive_read_open_filenames_w(a, wreffiles, 10240)); + + test_read_format_rar_multivolume_test_body_helper(a); +#else + skipping("archive_read_open_filenames_w is not available on this platform"); + return; +#endif +} + DEFINE_TEST(test_read_format_rar_multivolume_skip) { const char *reffiles[] = diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar.rar.uu b/contrib/libarchive/libarchive/test/test_read_format_rar.rar.uu index 75f93b4c281a..f197a2983302 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar.rar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_rar.rar.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_read_format_rar.rar M4F%R(1H'`,^0<P``#0````````"$4G0@D#(`%````!0````#0J+(OK=VVCX4 M,`@`I($``'1E<W0N='AT@`BW=MH^MW;:/G1E<W0@=&5X="!D;V-U;65N=`T* MG2]T()`R``@````(`````WM$R;;13-@^%#`(`/^A``!T97-T;&EN:\`(T4S8 diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar5.c b/contrib/libarchive/libarchive/test/test_read_format_rar5.c index 34f33ccb3f93..705913b04cc2 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar5.c +++ b/contrib/libarchive/libarchive/test/test_read_format_rar5.c @@ -806,6 +806,36 @@ DEFINE_TEST(test_read_format_rar5_extract_win32) EPILOGUE(); } +DEFINE_TEST(test_read_format_rar5_unicode) +{ +#if !defined(WIN32) || defined(__CYGWIN__) + skipping("Skipping test on non-Windows"); + return; +#else + /* Corresponds to the names: + * 👋🌎.txt + * 𝒮𝓎𝓂𝒷𝑜𝓁𝒾𝒸 𝐿𝒾𝓃𝓀.txt + * Ⓗⓐⓡⓓ Ⓛⓘⓝⓚ.txt */ + const wchar_t* emoji_name = L"\U0001f44b\U0001f30e.txt"; + const wchar_t* italic_name = L"\U0001d4ae\U0001d4ce\U0001d4c2\U0001d4b7\U0001d45c\U0001d4c1\U0001d4be\U0001d4b8 \U0001d43f\U0001d4be\U0001d4c3\U0001d4c0.txt"; + const wchar_t* circle_name = L"\u24bd\u24d0\u24e1\u24d3 \u24c1\u24d8\u24dd\u24da.txt"; + + PROLOGUE("test_read_format_rar5_unicode.rar"); + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualWString(emoji_name, archive_entry_pathname_w(ae)); + assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644); + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualWString(circle_name, archive_entry_pathname_w(ae)); + assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644); + assertEqualWString(emoji_name, archive_entry_hardlink_w(ae)); + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualWString(italic_name, archive_entry_pathname_w(ae)); + assertEqualInt(archive_entry_mode(ae), AE_IFLNK | 0644); + assertEqualWString(emoji_name, archive_entry_symlink_w(ae)); + EPILOGUE(); +#endif +} + DEFINE_TEST(test_read_format_rar5_block_by_block) { /* This test uses strange buffer sizes intentionally. */ diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar5_bad_window_sz_in_mltarc_file.rar.uu b/contrib/libarchive/libarchive/test/test_read_format_rar5_bad_window_sz_in_mltarc_file.rar.uu index 7684bc199bf9..4decccb38574 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar5_bad_window_sz_in_mltarc_file.rar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_rar5_bad_window_sz_in_mltarc_file.rar.uu @@ -1,4 +1,4 @@ -begin 644 test_read_format_rar5_bad_window_size_in_multiarchive_file.rar +begin 644 test_read_format_rar5_bad_window_sz_in_mltarc_file.rar M4F%R(1H'`0`]/-[E`@$`_R`@1#[Z5P("`PL`("`@@"(`"?\@("#___\@("`@ M("`@("`@("`@4X`J]`,"YR(#$($@("`@``$@("`@@<L0("`@("`@("`@("`@ M("`@(""LCTJA`P$%`B`@`2!3@"KT`P+G(@,@("`@_P,!!B`@(/___R`@(('+ diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar5_compressed.rar.uu b/contrib/libarchive/libarchive/test/test_read_format_rar5_compressed.rar.uu index f9f811c6dc0d..dbd42f09cbb6 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar5_compressed.rar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_rar5_compressed.rar.uu @@ -1,4 +1,4 @@ -begin 644 rar5_compressed.rar +begin 644 test_read_format_rar5_compressed.rar M4F%R(1H'`0#SX8+K"P$%!P`&`0&`@(``B<9?VB8"`POI`@2P":2#`LUPRGR` M!0$(=&5S="YB:6X*`Q.+5ZQ;^!BM'LKT90$G96!4'U5V7;^4DG')SV6660QP MV663&,62$X9"223AD)"2220DXY))(0A))"$)))"22$(2$LVU;WM],PZ`?1T# diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar5_different_winsize_on_merge.rar.uu b/contrib/libarchive/libarchive/test/test_read_format_rar5_different_winsize_on_merge.rar.uu index 85391fa4e1f6..9a3423e37afa 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar5_different_winsize_on_merge.rar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_rar5_different_winsize_on_merge.rar.uu @@ -1,4 +1,4 @@ -begin 644 test_read_format_rar5_different_winsize_on_merge.rar.uu +begin 644 test_read_format_rar5_different_winsize_on_merge.rar M4F%R(1H'`0"-[P+2``+''QP,!`H``"0`N)$#`0(H$"<"``X`/3Q/`0"V```` MQ@$````V`/^%02`H^B7&,NX``"F&AK%M-50O<WY2!P$`C>\"T@`"_[6U,1"U MM;6UM[BU45)A<K6UM;6UM+6U```\______?______________P`&80"-[P+2 diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar5_multiarchive.part01.rar.uu b/contrib/libarchive/libarchive/test/test_read_format_rar5_multiarchive.part01.rar.uu index a83c78ca22cd..9006181efaee 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar5_multiarchive.part01.rar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_rar5_multiarchive.part01.rar.uu @@ -1,4 +1,4 @@ -begin 644 rar5_multiarchive.part01.rar +begin 644 test_read_format_rar5_multiarchive.part01.rar M4F%R(1H'`0!5`$'/#`$%"`$'`0'O]H"``.>[Y2I7`A,+@O8`!.#I".V#`FI) M!96`%0$W:&]M92]A;G1E:R]T96UP+V)U:6QD+W5N<F%R-2]L:6)A<F-H:79E M+V)I;B]B<V1C871?=&5S=`H#$Z@$JUL/WSH`BQ&75V"(540R)79@1V>KN2Y+ diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar5_multiarchive.part02.rar.uu b/contrib/libarchive/libarchive/test/test_read_format_rar5_multiarchive.part02.rar.uu index fce29824622d..d766ccee9d87 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar5_multiarchive.part02.rar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_rar5_multiarchive.part02.rar.uu @@ -1,4 +1,4 @@ -begin 644 rar5_multiarchive.part02.rar +begin 644 test_read_format_rar5_multiarchive.part02.rar M4F%R(1H'`0"ZHBK1#0$%"`,!!P$![_:`@`!@&RUZ5P(;"X'V``3@Z0CM@P)= M-\$R@!4!-VAO;64O86YT96LO=&5M<"]B=6EL9"]U;G)A<C4O;&EB87)C:&EV M92]B:6XO8G-D8V%T7W1E<W0*`Q.H!*M;#]\Z`,C&\^P15*#4'A\D!$R&)9;I diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar5_multiarchive.part03.rar.uu b/contrib/libarchive/libarchive/test/test_read_format_rar5_multiarchive.part03.rar.uu index c600f025395e..b2bd1a72bafa 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar5_multiarchive.part03.rar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_rar5_multiarchive.part03.rar.uu @@ -1,4 +1,4 @@ -begin 644 rar5_multiarchive.part03.rar +begin 644 test_read_format_rar5_multiarchive.part03.rar M4F%R(1H'`0`S!&6T#0$%"`,"!P$!@_:`@`#;[#5T5P(+"_W#``3@Z0CM@P)S M="<U@!4!-VAO;64O86YT96LO=&5M<"]B=6EL9"]U;G)A<C4O;&EB87)C:&EV M92]B:6XO8G-D8V%T7W1E<W0*`Q.H!*M;#]\Z`+YO1=#5A^0(J_-LW+!*WYK9 diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar5_multiarchive.part04.rar.uu b/contrib/libarchive/libarchive/test/test_read_format_rar5_multiarchive.part04.rar.uu index 3b47dd07c873..afd18ab0a896 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar5_multiarchive.part04.rar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_rar5_multiarchive.part04.rar.uu @@ -1,4 +1,4 @@ -begin 644 rar5_multiarchive.part04.rar +begin 644 test_read_format_rar5_multiarchive.part04.rar M4F%R(1H'`0`\BMS_#0$%"`,#!P$![_:`@``H3"7!5P(;"X'V``3HJ!;M@P)= M?Y*E@!4!-VAO;64O86YT96LO=&5M<"]B=6EL9"]U;G)A<C4O;&EB87)C:&EV M92]B:6XO8G-D=&%R7W1E<W0*`Q.J!*M;T74"-U,K[HY2T0OI6D^@"4>G(I3D diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar5_multiarchive.part05.rar.uu b/contrib/libarchive/libarchive/test/test_read_format_rar5_multiarchive.part05.rar.uu index 4dc97d65ea1e..a9f1981e4845 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar5_multiarchive.part05.rar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_rar5_multiarchive.part05.rar.uu @@ -1,4 +1,4 @@ -begin 644 rar5_multiarchive.part05.rar +begin 644 test_read_format_rar5_multiarchive.part05.rar M4F%R(1H'`0#UY[V;#0$%"`,$!P$![_:`@`"(]4(L5P(;"X'V``3HJ!;M@P+] MF?Z`@!4!-VAO;64O86YT96LO=&5M<"]B=6EL9"]U;G)A<C4O;&EB87)C:&EV M92]B:6XO8G-D=&%R7W1E<W0*`Q.J!*M;T74"-[]V(;"@ZL+ZZ0DS>@98+@$> diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar5_multiarchive.part06.rar.uu b/contrib/libarchive/libarchive/test/test_read_format_rar5_multiarchive.part06.rar.uu index 1e2ad0cf9833..1ba155dbf4c8 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar5_multiarchive.part06.rar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_rar5_multiarchive.part06.rar.uu @@ -1,4 +1,4 @@ -begin 644 rar5_multiarchive.part06.rar +begin 644 test_read_format_rar5_multiarchive.part06.rar M4F%R(1H'`0"V\\:,#0$%"`,%!P$![_:`@``2\>%K5P(;"X'V``3HJ!;M@P(] M(D2J@!4!-VAO;64O86YT96LO=&5M<"]B=6EL9"]U;G)A<C4O;&EB87)C:&EV M92]B:6XO8G-D=&%R7W1E<W0*`Q.J!*M;T74"-\2/YDWQ,%)DI56J+M4UB8>R diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar5_multiarchive.part07.rar.uu b/contrib/libarchive/libarchive/test/test_read_format_rar5_multiarchive.part07.rar.uu index de1044e30589..23ba290ad4ed 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar5_multiarchive.part07.rar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_rar5_multiarchive.part07.rar.uu @@ -1,4 +1,4 @@ -begin 644 rar5_multiarchive.part07.rar +begin 644 test_read_format_rar5_multiarchive.part07.rar M4F%R(1H'`0!SSTNU#0$%"`,&!P$![_:`@`#=K"Q/5P(;"X'V``3HJ!;M@P*V M0J=E@!4!-VAO;64O86YT96LO=&5M<"]B=6EL9"]U;G)A<C4O;&EB87)C:&EV M92]B:6XO8G-D=&%R7W1E<W0*`Q.J!*M;T74"-YY^$-E'40]L2'?%!?HA6*"R diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar5_multiarchive.part08.rar.uu b/contrib/libarchive/libarchive/test/test_read_format_rar5_multiarchive.part08.rar.uu index eae45fc7a2fb..459beb48d241 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar5_multiarchive.part08.rar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_rar5_multiarchive.part08.rar.uu @@ -1,4 +1,4 @@ -begin 644 rar5_multiarchive.part08.rar +begin 644 test_read_format_rar5_multiarchive.part08.rar M4F%R(1H'`0#"(ZNP#0$%"`,'!P$!\,:`@`#/Q#!K5P(+"X+&``3HJ!;M@P+X M99;E@!4!-VAO;64O86YT96LO=&5M<"]B=6EL9"]U;G)A<C4O;&EB87)C:&EV M92]B:6XO8G-D=&%R7W1E<W0*`Q.J!*M;T74"-P'V.L#Y#UMO#KJ6K6EJUOF6 diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar5_multiple_files.rar.uu b/contrib/libarchive/libarchive/test/test_read_format_rar5_multiple_files.rar.uu index 3fa8930c9d33..26ededc9b454 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar5_multiple_files.rar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_rar5_multiple_files.rar.uu @@ -1,4 +1,4 @@ -begin 644 rar5_multiple_files.rar +begin 644 test_read_format_rar5_multiple_files.rar M4F%R(1H'`0#SX8+K"P$%!P`&`0&`@(```Q:>PB<"`POD`@2`(*2#`L:R$WZ` M!0$)=&5S=#$N8FEN"@,39U^L6QI:GA#*\6`!$&149R]7!6]2222222222222 M2222222222222222222222222222222222222222222222223]_>QS,[=]KH diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar5_multiple_files_solid.rar.uu b/contrib/libarchive/libarchive/test/test_read_format_rar5_multiple_files_solid.rar.uu index 4a8acb08c45a..8ba78774dc48 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar5_multiple_files_solid.rar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_rar5_multiple_files_solid.rar.uu @@ -1,4 +1,4 @@ -begin 644 rar5_multiple_files_solid.rar +begin 644 test_read_format_rar5_multiple_files_solid.rar M4F%R(1H'`0`)[\AO"P$%!P0&`0&`@(``&8R4_R<"`POY`@2`(*2#`L:R$WZ` M'0$)=&5S=#$N8FEN"@,39U^L6QI:GA#)YW4!&&5492;T@%?U\^?/DDDDDDDD MDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDO\\YG#6M diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar5_sfx.exe.uu b/contrib/libarchive/libarchive/test/test_read_format_rar5_sfx.exe.uu index fdf83af1a238..7df65a110384 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar5_sfx.exe.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_rar5_sfx.exe.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_read_format_rar5_sfx.exe M35J0``,````$````__\``+@`````````0``````````````````````````` M````````````````````$`$```X?N@X`M`G-(;@!3,TA5&AI<R!P<F]G<F%M M(&-A;FYO="!B92!R=6X@:6X@1$]3(&UO9&4N#0T*)`````````!B8/>3)@&9 diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar5_stored.rar.uu b/contrib/libarchive/libarchive/test/test_read_format_rar5_stored.rar.uu index 405b8795a162..afd565ff97d4 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar5_stored.rar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_rar5_stored.rar.uu @@ -1,4 +1,4 @@ -begin 644 rar5_stored.rar +begin 644 test_read_format_rar5_stored.rar M4F%R(1H'`0`SDK7E"@$%!@`%`0&`@``X,`9C+`(#"YT`!)T`I(,"M$.@E8`` M`0YH96QL;W=O<FQD+G1X=`H#$WX.JUM6Z0X::&5L;&\@;&EB87)C:&EV92!T 397-T('-U:71E(0H==U91`P4$```` diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar5_unicode.rar.uu b/contrib/libarchive/libarchive/test/test_read_format_rar5_unicode.rar.uu new file mode 100644 index 000000000000..e011ab64e689 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_format_rar5_unicode.rar.uu @@ -0,0 +1,9 @@ +begin 0744 test_read_format_rar5_unicode.rar
+M4F%R(1H'`0#SX8+K"P$%!P`&`0&`@(``//TR$"@"`PN-``2-`"#FQN;K@```
+M#/"?D8OPGXR.+G1X=`H#`D:)>%;RZ]D!2&5L;&\L('=O<FQD(2/9BPA(`@,<
+M``0-(`````"````=XI*]XI.0XI.AXI.3(.*3@>*3F.*3G>*3FBYT>'0*`P)&
+MB7A6\NO9`1`%!``,\)^1B_"?C(XN='ATD-'.1V$"`QP`!`"@"`````"````U
+M\)V2KO"=DX[PG9."\)V2M_"=D9SPG9.!\)V2OO"=DK@@\)V0O_"=DK[PG9.#
+L\)V3@"YT>'0*`P(>7'J>!.S9`1`%`@`,\)^1B_"?C(XN='AT'7=640,%!```
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar_binary_data.rar.uu b/contrib/libarchive/libarchive/test/test_read_format_rar_binary_data.rar.uu index 4d1cbd36d633..712dd0e67879 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar_binary_data.rar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_rar_binary_data.rar.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_read_format_rar_binary_data.rar M4F%R(1H'`,^0<P``#0````````!W#G2@D#D`E`H0````$``#OES$M0V6!S\= M-0\`I($``')A;F1O;5]D871A+F)I;H#,#98'/Q*6!S\1#\T0T54`#0Z16Z5B MZ6W>FQ_"3YH!RD,Z.<P&4ZSGQ+1(6^9/\HXB^LD*'EY-":6Y)MO'@@4>_X"C diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar_compress_best.rar.uu b/contrib/libarchive/libarchive/test/test_read_format_rar_compress_best.rar.uu index 22fde0f8b673..d31adcc92b00 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar_compress_best.rar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_rar_compress_best.rar.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_read_format_rar_compress_best.rar M4F%R(1H'`,^0<P``#0````````"/6W0@D$,`\A8``(].```#8Z8%7C:SVCX= M-1D`I($``$QI8F%R8VAI=F5!9&1I;F=497-T+FAT;6R`S#:SVC[E:?8^IQ@[ MY,&O-%WTZIVL0'K=[L^M$"SZ*I?&B@$S2EO?UM\%P_[#*[0L[1)9)\]U]*;T diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar_compress_normal.rar.uu b/contrib/libarchive/libarchive/test/test_read_format_rar_compress_normal.rar.uu index afc6cc08db11..2cce0e14c239 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar_compress_normal.rar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_rar_compress_normal.rar.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_read_format_rar_compress_normal.rar M4F%R(1H'`,^0<P``#0````````!.!G0@D$,`LQL``(].```#8Z8%7C:SVCX= M,QD`I($``$QI8F%R8VAI=F5!9&1I;F=497-T+FAT;6R`S#:SVCZ4:NT^#!U1 M#,S1%\6=F]T/PH[-`V-[U)/P29F;F3P#KD;FQC9X>MJ;G<[Z6"DBFSK*16$E diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar_encryption_data.c b/contrib/libarchive/libarchive/test/test_read_format_rar_encryption_data.c index d0c06fb21499..540546a8dd8a 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar_encryption_data.c +++ b/contrib/libarchive/libarchive/test/test_read_format_rar_encryption_data.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_read_format_rar_encryption_data) { diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar_encryption_header.c b/contrib/libarchive/libarchive/test/test_read_format_rar_encryption_header.c index 81965eb6787f..e54db5152383 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar_encryption_header.c +++ b/contrib/libarchive/libarchive/test/test_read_format_rar_encryption_header.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_read_format_rar_encryption_header) { diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar_encryption_partially.c b/contrib/libarchive/libarchive/test/test_read_format_rar_encryption_partially.c index 81256a96a019..e68e78831b37 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar_encryption_partially.c +++ b/contrib/libarchive/libarchive/test/test_read_format_rar_encryption_partially.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_read_format_rar_encryption_partially) { diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar_filter.c b/contrib/libarchive/libarchive/test/test_read_format_rar_filter.c index 46c574743646..43619253e4ac 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar_filter.c +++ b/contrib/libarchive/libarchive/test/test_read_format_rar_filter.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_read_format_rar_filter) { diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar_invalid1.c b/contrib/libarchive/libarchive/test/test_read_format_rar_invalid1.c index 61dea1648f48..cac58688ce21 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar_invalid1.c +++ b/contrib/libarchive/libarchive/test/test_read_format_rar_invalid1.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_read_format_rar_invalid1) { diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar_multi_lzss_blocks.rar.uu b/contrib/libarchive/libarchive/test/test_read_format_rar_multi_lzss_blocks.rar.uu index dd6ab50f97cd..e717b00fd8ec 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar_multi_lzss_blocks.rar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_rar_multi_lzss_blocks.rar.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_read_format_rar_multi_lzss_blocks.rar M4F%R(1H'`,^0<P``#0````````"5L73`D$0`(TT``"<M,P$#<!6B:RZ@[CX= M,QH`I($``&UU;'1I7VQZ<W-?8FQO8VMS7W1E<W0N='ATP,PNH.X^+:#N/@W! ME1$,S1$`%=F]SKX56/`,:6:25T-W=Y;Z1J;2>M#'TZD7E[>^E"B3)2K$2:-U diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0001.rar.uu b/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0001.rar.uu index 7378a9b558e8..bbe4be4c9070 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0001.rar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0001.rar.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_read_format_rar_multivolume.part0001.rar M4F%R(1H'`%IN<Q$!#0`````````SE'3"D$<`\>D``&I!9PX#@*>#,/AM$C\= M-1T`I($``'!P;61?;'IS<U]C;VYV97)S:6]N7W1E<W0N='ATP,SX;1(_P&X2 M/Z<8.^3!KS1=].J=K$!ZW>[/K1`L^BJ7QHH!,TI;W];?!</^PRNT+.T262?/ diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0002.rar.uu b/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0002.rar.uu index 696ff565bdfd..a61a2fbc7312 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0002.rar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0002.rar.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_read_format_rar_multivolume.part0002.rar M4F%R(1H'`!EZ<Q$`#0````````#NWW3#D$<`\>D``&I!9PX#%Y:4IOAM$C\= M-1T`I($``'!P;61?;'IS<U]C;VYV97)S:6]N7W1E<W0N='ATP,SX;1(_P&X2 M/___________________________________________________________ diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0003.rar.uu b/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0003.rar.uu index 91b7f28c5968..ef70b9eba606 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0003.rar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0003.rar.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_read_format_rar_multivolume.part0003.rar M4F%R(1H'`!EZ<Q$`#0````````#U+'3!D$<`^-T``&I!9PX#=T0K]_AM$C\= M-1T`I($``'!P;61?;'IS<U]C;VYV97)S:6]N7W1E<W0N='ATP,SX;1(_P&X2 M/QOK1E#^H^/%2CSU*]SFZB-O0P7.9&(^"2;U+Z.1_C%^3WOV,>5:-FN$2BNW diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0004.rar.uu b/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0004.rar.uu index 0bfad779e1bd..20931f62c585 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0004.rar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0004.rar.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_read_format_rar_multivolume.part0004.rar M4F%R(1H'`!EZ<Q$`#0````````!AIG3!D$,`/`L``(].```#8Z8%7L"!$C\= M-1D`I($``$QI8F%R8VAI=F5!9&1I;F=497-T+FAT;6S`S,"!$C_!@1(_'H$B MVRP\K;>5J2C]?9NI\:;KW2+#TR@_Y5=4S)O&)O_B>J0/A0T-,@"ER';1YX:$ diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar_noeof.rar.uu b/contrib/libarchive/libarchive/test/test_read_format_rar_noeof.rar.uu index 7cf88e7c6248..fd2d0d3a12bb 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar_noeof.rar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_rar_noeof.rar.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_read_format_rar_noeof.rar M4F%R(1H'`,^0<P``#0````````"$4G0@D#(`%````!0````#0J+(OK=VVCX4 M,`@`I($``'1E<W0N='AT@`BW=MH^MW;:/G1E<W0@=&5X="!D;V-U;65N=`T* ` diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar_ppmd_lzss_conversion.rar.uu b/contrib/libarchive/libarchive/test/test_read_format_rar_ppmd_lzss_conversion.rar.uu index a41b007a0d23..472654259bb2 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar_ppmd_lzss_conversion.rar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_rar_ppmd_lzss_conversion.rar.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_read_format_rar_ppmd_lzss_conversion.rar M4F%R(1H'`,^0<P``#0````````!R,W3`D$<`VK$"`&I!9PX#=T0K]VL`!S\= M-1T`I($``'!P;61?;'IS<U]C;VYV97)S:6]N7W1E<W0N='ATP,B$``<_&[\& M/Z<8.^3!KS1=].J=K$!ZW>[/K1`L^BJ7QHH!,TI;W];?!</^PRNT+.T262?/ diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar_sfx.exe.uu b/contrib/libarchive/libarchive/test/test_read_format_rar_sfx.exe.uu index ea084ecacb76..275d0749687a 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar_sfx.exe.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_rar_sfx.exe.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_read_format_rar_sfx.exe M35J0``,````$````__\``+@`````````0``````````````````````````` M````````````````````Z`````X?N@X`M`G-(;@!3,TA5&AI<R!P<F]G<F%M M(&-A;FYO="!B92!R=6X@:6X@1$]3(&UO9&4N#0T*)`````````#3[14&EXQ[ diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar_subblock.rar.uu b/contrib/libarchive/libarchive/test/test_read_format_rar_subblock.rar.uu index 5c55ca11dd2a..8bd8e6038a8f 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar_subblock.rar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_rar_subblock.rar.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_read_format_rar_subblock.rar M4F%R(1H'`,^0<P``#0`````````##'H`@",`(@```!T````#&WQ`G@`````= M,P,``````$--5`@!"+Z0\5[-83@7PT#<+OM\M_$>H5JAD)Q_9XLAN3)VO("$ M4G0@D#(`%````!0````#0J+(OK=VVCX4,`@`I($``'1E<W0N='AT@`BW=MH^ diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar_windows.rar.uu b/contrib/libarchive/libarchive/test/test_read_format_rar_windows.rar.uu index 05fa8db85846..daaa32b25ef1 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar_windows.rar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_rar_windows.rar.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_read_format_rar_windows.rar M4F%R(1H'`,^0<P``#0````````"6GW0@D$,`$````!`````"\1+6EVQA$C\4 M,!``(````'1E<W1D:7)<=&5S="YT>'3POU/A"W5A$C_#FG]U81(_PYI_=&5S M="!T97AT(&9I;&4-"D."=""0.P`0````$`````+Q$M:7;&$2/Q0P"``@```` diff --git a/contrib/libarchive/libarchive/test/test_read_format_raw.bufr.uu b/contrib/libarchive/libarchive/test/test_read_format_raw.bufr.uu index 2f4cef74619f..896e09c8fd6b 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_raw.bufr.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_raw.bufr.uu @@ -1,4 +1,4 @@ -begin 660 test_read_format_raw.bufr.uu +begin 660 test_read_format_raw.bufr M,#`P-S0T.3@P,`$-#0HP,#`-#0I)15%8,#$@155-4"`P-S`U,#`-#0I"5492 M`2+?!```%@``_@`````#_]T0``?@"P<$.P````D``'C`Z`@!(K0``,``_@!N M@#T!^`"P!P"!`````"JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ@#=]]]]] diff --git a/contrib/libarchive/libarchive/test/test_read_format_raw.c b/contrib/libarchive/libarchive/test/test_read_format_raw.c index 58a341c02226..a0f68e5b880f 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_raw.c +++ b/contrib/libarchive/libarchive/test/test_read_format_raw.c @@ -26,7 +26,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_read_format_raw) { diff --git a/contrib/libarchive/libarchive/test/test_read_format_raw.data.Z.uu b/contrib/libarchive/libarchive/test/test_read_format_raw.data.Z.uu index 82add2ff1aca..3fe4deaba09d 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_raw.data.Z.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_raw.data.Z.uu @@ -1,4 +1,3 @@ -$FreeBSD$ begin 644 test_read_format_raw.data.Z ('YV09MZ\40`` ` diff --git a/contrib/libarchive/libarchive/test/test_read_format_raw.data.uu b/contrib/libarchive/libarchive/test/test_read_format_raw.data.uu index 1a3002a56d8a..7c68a2caa117 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_raw.data.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_raw.data.uu @@ -1,4 +1,3 @@ -$FreeBSD$ begin 644 test_read_format_raw.data $9F]O"@`` ` diff --git a/contrib/libarchive/libarchive/test/test_read_format_tar.c b/contrib/libarchive/libarchive/test/test_read_format_tar.c index 55b33481aedc..2b7cd8dedcca 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_tar.c +++ b/contrib/libarchive/libarchive/test/test_read_format_tar.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Each of these archives is a short archive with a single entry. The diff --git a/contrib/libarchive/libarchive/test/test_read_format_tar_concatenated.c b/contrib/libarchive/libarchive/test/test_read_format_tar_concatenated.c index d1f67e20f7df..f6ed03a4404b 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_tar_concatenated.c +++ b/contrib/libarchive/libarchive/test/test_read_format_tar_concatenated.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD"); /* * The sample tar file is the result of concatenating two tar files, diff --git a/contrib/libarchive/libarchive/test/test_read_format_tar_empty_filename.c b/contrib/libarchive/libarchive/test/test_read_format_tar_empty_filename.c index dfbae59070bb..310d260bb4d6 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_tar_empty_filename.c +++ b/contrib/libarchive/libarchive/test/test_read_format_tar_empty_filename.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Tar entries with empty filenames are unusual, but shouldn't crash us. diff --git a/contrib/libarchive/libarchive/test/test_read_format_tar_empty_filename.tar.uu b/contrib/libarchive/libarchive/test/test_read_format_tar_empty_filename.tar.uu index 08aaf2870719..6cd9629278ae 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_tar_empty_filename.tar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_tar_empty_filename.tar.uu @@ -1,5 +1,4 @@ -$FreeBSD$ -begin 644 test_compat_tar_1.tar +begin 644 test_read_format_tar_empty_filename.tar M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M`````````````#`P,#<W-2``,#`Q-S4P(``P,#`P,#`@`#`P,#`P,#`P,#`P diff --git a/contrib/libarchive/libarchive/test/test_read_format_tar_empty_pax.c b/contrib/libarchive/libarchive/test/test_read_format_tar_empty_pax.c index 5416021947e0..3de9c6719c63 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_tar_empty_pax.c +++ b/contrib/libarchive/libarchive/test/test_read_format_tar_empty_pax.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * A "usual" empty tar archive contains only zero bytes diff --git a/contrib/libarchive/libarchive/test/test_read_format_tar_empty_pax.tar.Z.uu b/contrib/libarchive/libarchive/test/test_read_format_tar_empty_pax.tar.Z.uu index 2557b3f9f02a..0b2d53b69f77 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_tar_empty_pax.tar.Z.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_tar_empty_pax.tar.Z.uu @@ -1,4 +1,4 @@ -begin 644 test_read_format_tar_empty.tar.Z +begin 644 test_read_format_tar_empty_pax.tar.Z M'YV0<,+@^7*&S1LQ8=A\05,F#)DR<@!(G$BQHL6+&#-JW,BQ(HR/,&R(!`"R M),F2'T^B_&B#!H`8,F+,B$%C1@V9,D[2K`&C!H`S'8,*'4JTZ,4Z<^B$B?A1 MSILW=(QF=`I5*L:5,%2:M,JUJ]>O8,'6D`%BS)LV;<JXH=.#3)BW-W#D,!-F diff --git a/contrib/libarchive/libarchive/test/test_read_format_tar_empty_with_gnulabel.c b/contrib/libarchive/libarchive/test/test_read_format_tar_empty_with_gnulabel.c index 83f20bb97115..3ff5b318d51a 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_tar_empty_with_gnulabel.c +++ b/contrib/libarchive/libarchive/test/test_read_format_tar_empty_with_gnulabel.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Tar archives with with just a GNU label (or ending with one) should diff --git a/contrib/libarchive/libarchive/test/test_read_format_tar_filename.c b/contrib/libarchive/libarchive/test/test_read_format_tar_filename.c index 9ee8e813f737..5da94967ddf8 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_tar_filename.c +++ b/contrib/libarchive/libarchive/test/test_read_format_tar_filename.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD"); #include <locale.h> diff --git a/contrib/libarchive/libarchive/test/test_read_format_tar_invalid_pax_size.c b/contrib/libarchive/libarchive/test/test_read_format_tar_invalid_pax_size.c index 0a03cb677593..64b5a7cc4b8d 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_tar_invalid_pax_size.c +++ b/contrib/libarchive/libarchive/test/test_read_format_tar_invalid_pax_size.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * The pax size attribute can be used to override the size. diff --git a/contrib/libarchive/libarchive/test/test_read_format_tar_invalid_pax_size.tar.uu b/contrib/libarchive/libarchive/test/test_read_format_tar_invalid_pax_size.tar.uu index 71309eab2cb3..3fa9a2e0ef62 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_tar_invalid_pax_size.tar.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_tar_invalid_pax_size.tar.uu @@ -1,4 +1,4 @@ -begin 644 test_read_format_tar_invalid_pax_size.tar.uu +begin 644 test_read_format_tar_invalid_pax_size.tar M+B]087A(96%D97)S+C$T-#8S+V%A80`````````````````````````````` M```````````````````````````````````````````````````````````` M`````````````#`P,#`V-#0`,#`P,#`P,``P,#`P,#`P`#`P,#`P,#`P,S$R diff --git a/contrib/libarchive/libarchive/test/test_read_format_tbz.c b/contrib/libarchive/libarchive/test/test_read_format_tbz.c index 1b2f805557b0..7323e13c98d0 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_tbz.c +++ b/contrib/libarchive/libarchive/test/test_read_format_tbz.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static unsigned char archive[] = { 'B','Z','h','9','1','A','Y','&','S','Y',237,7,140,'W',0,0,27,251,144,208, diff --git a/contrib/libarchive/libarchive/test/test_read_format_tgz.c b/contrib/libarchive/libarchive/test/test_read_format_tgz.c index 6d8b05002064..5bb5e02be4f4 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_tgz.c +++ b/contrib/libarchive/libarchive/test/test_read_format_tgz.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static unsigned char archive[] = { 31,139,8,0,222,'C','p','C',0,3,211,'c',160,'=','0','0','0','0','7','5','U', diff --git a/contrib/libarchive/libarchive/test/test_read_format_tlz.c b/contrib/libarchive/libarchive/test/test_read_format_tlz.c index bfb2abdc1043..5633baa4c6e8 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_tlz.c +++ b/contrib/libarchive/libarchive/test/test_read_format_tlz.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static unsigned char archive[] = { 93, 0, 0,128, 0,255,255,255,255,255,255,255,255, 0, 23, 0, diff --git a/contrib/libarchive/libarchive/test/test_read_format_txz.c b/contrib/libarchive/libarchive/test/test_read_format_txz.c index 130c0811bd74..e17b054a6213 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_txz.c +++ b/contrib/libarchive/libarchive/test/test_read_format_txz.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static unsigned char archive[] = { 253, 55,122, 88, 90, 0, 0, 4,230,214,180, 70, 2, 0, 33, 1, diff --git a/contrib/libarchive/libarchive/test/test_read_format_tz.c b/contrib/libarchive/libarchive/test/test_read_format_tz.c index 81469b5ec011..4dfc916a3608 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_tz.c +++ b/contrib/libarchive/libarchive/test/test_read_format_tz.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static unsigned char archive[] = { 31,157,144,'.',0,8,28,'H',176,160,193,131,8,19,'*','\\',200,176,'!','B',24, diff --git a/contrib/libarchive/libarchive/test/test_read_format_ustar_filename.c b/contrib/libarchive/libarchive/test/test_read_format_ustar_filename.c index 5c2717cdf2c0..0c7e8a3c8070 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_ustar_filename.c +++ b/contrib/libarchive/libarchive/test/test_read_format_ustar_filename.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD"); #include <locale.h> diff --git a/contrib/libarchive/libarchive/test/test_read_format_warc.c b/contrib/libarchive/libarchive/test/test_read_format_warc.c index 658ab8a6e72b..91e6dc67e133 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_warc.c +++ b/contrib/libarchive/libarchive/test/test_read_format_warc.c @@ -25,8 +25,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); - DEFINE_TEST(test_read_format_warc) { diff --git a/contrib/libarchive/libarchive/test/test_read_format_xar.c b/contrib/libarchive/libarchive/test/test_read_format_xar.c index 1c8524520b39..daff2921690a 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_xar.c +++ b/contrib/libarchive/libarchive/test/test_read_format_xar.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #define UID 1001 #define UNAME "cue" diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip.c b/contrib/libarchive/libarchive/test/test_read_format_zip.c index 0bd9c1407ab7..9e820f509c19 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip.c +++ b/contrib/libarchive/libarchive/test/test_read_format_zip.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #define __LIBARCHIVE_BUILD #include <archive_crc32.h> @@ -157,7 +156,7 @@ verify_basic(struct archive *a, int seek_checks) if (archive_zlib_version() != NULL) { failure("file2 has a bad CRC, so read should fail and not change buff"); memset(buff, 'a', 19); - assertEqualInt(ARCHIVE_WARN, archive_read_data(a, buff, 19)); + assertEqualInt(ARCHIVE_FAILED, archive_read_data(a, buff, 19)); assertEqualMem(buff, "aaaaaaaaaaaaaaaaaaa", 19); } else { assertEqualInt(ARCHIVE_FAILED, archive_read_data(a, buff, 19)); diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_7075_utf8_paths.c b/contrib/libarchive/libarchive/test/test_read_format_zip_7075_utf8_paths.c index a0a510c8f29b..fefcc82881f8 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_7075_utf8_paths.c +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_7075_utf8_paths.c @@ -25,7 +25,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #include <locale.h> diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_bzip2.zipx.uu b/contrib/libarchive/libarchive/test/test_read_format_zip_bzip2.zipx.uu index 6d9884aeddf5..4c9aeb77a941 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_bzip2.zipx.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_bzip2.zipx.uu @@ -1,4 +1,4 @@ -begin 644 bzip2.zipx +begin 644 test_read_format_zip_bzip2.zipx M4$L#!"X#```,`#TQD4VJ.XZZ-`(``)`#```%````=FEM<F-"6F@Y,4%9)E-9 MYPC!D@``3%^``!!TY^!2(B.7`+__W^%``C$[0!AJ>E,ID:&U-'E`T&C1IIIZ M@8&J>$9":`IZ@``'J:/2&#```````!@`2FB$T:31D9"F@8FC0`\H^:+Y;81F diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored.c b/contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored.c index 95df0107fecb..39f83a821006 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored.c +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Read a zip file that has a zip comment in the end of the central diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_encryption_data.c b/contrib/libarchive/libarchive/test/test_read_format_zip_encryption_data.c index b56d78e9074f..4a6502b9bf2d 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_encryption_data.c +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_encryption_data.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_read_format_zip_encryption_data) { diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_encryption_header.c b/contrib/libarchive/libarchive/test/test_read_format_zip_encryption_header.c index f40e1f5cb8da..fb19c1421946 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_encryption_header.c +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_encryption_header.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_read_format_zip_encryption_header) { diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_encryption_partially.c b/contrib/libarchive/libarchive/test/test_read_format_zip_encryption_partially.c index 77af235d58b7..cd5d2103ea6a 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_encryption_partially.c +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_encryption_partially.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_read_format_zip_encryption_partially) { diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_filename.c b/contrib/libarchive/libarchive/test/test_read_format_zip_filename.c index 4dd2e8ad6e8f..b673344738be 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_filename.c +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_filename.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD"); #include <locale.h> @@ -1179,6 +1178,11 @@ next_test: assertEqualInt(ARCHIVE_OK, archive_read_free(a)); /* + * By default, Windows will create an sconv_default object, which will + * interpret filenames as OEMCP + */ +#if !defined(_WIN32) || defined(__CYGWIN__) + /* * Read filename in en_US.UTF-8 without "hdrcharset=KOI8-R" option. * The filename we can properly read is only second file. */ @@ -1221,4 +1225,5 @@ next_test: /* Close the archive. */ assertEqualInt(ARCHIVE_OK, archive_read_close(a)); assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +#endif } diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_filename_cp866.zip.uu b/contrib/libarchive/libarchive/test/test_read_format_zip_filename_cp866.zip.uu index 52c6770609e1..7ef721490c4a 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_filename_cp866.zip.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_filename_cp866.zip.uu @@ -1,4 +1,4 @@ -begin 644 test_read_format_zip_cp866.zip +begin 644 test_read_format_zip_filename_cp866.zip M4$L#!`H``````%VEAS[,X8$4!@````8````&`!P`CY"(@H62550)``-!HYU- M0:.=375X"P`!!.D#```$Z0,``/#RZ??E]%!+`P0*``````!=I8<^S.&!%`8` M```&````!@`<`*_@J**EXE54"0`#0:.=34&CG4UU>`L``03I`P``!.D#``#P diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_filename_cp932.zip.uu b/contrib/libarchive/libarchive/test/test_read_format_zip_filename_cp932.zip.uu index 90c22f2d5c45..ec0f9c091b06 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_filename_cp932.zip.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_filename_cp932.zip.uu @@ -1,4 +1,4 @@ -begin 644 test_read_format_zip_cp932.zip +begin 644 test_read_format_zip_filename_cp932.zip M4$L#!`H``````/94=#Z"B='W!0````4````1````E5R"OH+F+XCJEY>57"YT M>'1(96QL;U!+`P0*``````"W5'0^W)UO0@4````%````#P```)5<@KZ"YB^* MOXZ:+G1X=&MA;FII4$L!`A0+"@``````]E1T/H*)T?<%````!0```!$````` diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_filename_koi8r.zip.uu b/contrib/libarchive/libarchive/test/test_read_format_zip_filename_koi8r.zip.uu index 05c669560270..242c902f0b64 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_filename_koi8r.zip.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_filename_koi8r.zip.uu @@ -1,4 +1,4 @@ -begin 644 test_read_format_zip_koi8r.zip +begin 644 test_read_format_zip_filename_koi8r.zip M4$L#!`H``````+&CAS[,X8$4!@````8````&`!P`T-+)U\74550)``,>H)U- M'J"=375X"P`!!.D#```$Z0,``/#RZ??E]%!+`P0*``````"QHX<^S.&!%`8` M```&````!@`<`/#RZ??E]%54"0`#'J"=31Z@G4UU>`L``03I`P``!.D#``#P diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_filename_utf8_jp.zip.uu b/contrib/libarchive/libarchive/test/test_read_format_zip_filename_utf8_jp.zip.uu index 00c2af33723a..3c9f4b9ea934 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_filename_utf8_jp.zip.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_filename_utf8_jp.zip.uu @@ -1,4 +1,4 @@ -begin 644 test_read_format_zip_utf8.zip +begin 644 test_read_format_zip_filename_utf8_jp.zip M4$L#!`H```@``,E4=#X````````````````*`!P`Z*&HXX&@XX*(+U54"0`# MBEJ%3;[UBDUU>`L``03M`P``!`$"``!02P,$"@``"```]51T/H*)T?<%```` M!0```!<`'`#HH:CC@:#C@H@OY+B`Z*:GZ*&H+G1X=%54"0`#WEJ%31KLBDUU diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_filename_utf8_ru.zip.uu b/contrib/libarchive/libarchive/test/test_read_format_zip_filename_utf8_ru.zip.uu index 9241776d7fdf..bd71cc2a497b 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_filename_utf8_ru.zip.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_filename_utf8_ru.zip.uu @@ -1,4 +1,4 @@ -begin 644 test_read_format_zip_utf8_ru.zip +begin 644 test_read_format_zip_filename_utf8_ru.zip M4$L#!`H```@``,NC/S[,X8$4!@````8````,`!P`T)_0H-"8T)+0E="B550) M``-.G49-'J"=375X"P`!!.D#```$Z0,``/#RZ??E]%!+`P0*```(``!KI3\^ MS.&!%`8````&````#``<`-"_T8#0N-"RT+71@E54"0`#6J!&31Z@G4UU>`L` diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_filename_utf8_ru2.zip.uu b/contrib/libarchive/libarchive/test/test_read_format_zip_filename_utf8_ru2.zip.uu index 651f8b1f8b10..65a34ed59147 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_filename_utf8_ru2.zip.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_filename_utf8_ru2.zip.uu @@ -1,4 +1,4 @@ -begin 644 test_read_format_zip_utf8_ru2.zip +begin 644 test_read_format_zip_filename_utf8_ru2.zip M4$L#!`H``````.:PCC[,X8$4!@````8````&`!P`\/+I]^7T550)``.`\:9- MI6>G375X"P`!!.D#```$Z0,``/#RZ??E]%!+`P0*```(``!KI3\^S.&!%`8` M```&````#``<`-"_T8#0N-"RT+71@E54"0`#6J!&357SIDUU>`L``03I`P`` diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_high_compression.c b/contrib/libarchive/libarchive/test/test_read_format_zip_high_compression.c index 16cfbb182893..d28897027747 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_high_compression.c +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_high_compression.c @@ -23,11 +23,9 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD"); #include <locale.h> - /* * Github Issue 748 reported problems with end-of-entry handling * with highly-compressible data. This resulted in the end of the diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_jar.c b/contrib/libarchive/libarchive/test/test_read_format_zip_jar.c index 912e67137704..75ea3eb9b868 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_jar.c +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_jar.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Issue 822: jar files have an empty External File Attributes field which diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_lzma.zipx.uu b/contrib/libarchive/libarchive/test/test_read_format_zip_lzma.zipx.uu index 24fdc8e7c288..d0aad44a17d1 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_lzma.zipx.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_lzma.zipx.uu @@ -1,4 +1,4 @@ -begin 644 lzma.zipx +begin 644 test_read_format_zip_lzma.zipx M4$L#!#\#```.`#TQD4VJ.XZZ.0(``)`#```%````=FEM<F,0`@4`70`0```` M$0@$J,)\D;(#4L%<^$P5TO^CM0KI0HWG08B&_].4<,CJ")TW/L>)82Q1PWAL M+U`,N0L_$]^&650C/X$D6#4QFD$\A/"_![4!O/5O/!KH`WCQ*4?T2*]4P#/D diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_mac_metadata.c b/contrib/libarchive/libarchive/test/test_read_format_zip_mac_metadata.c index 3f2813cc9894..9f7c35e1df85 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_mac_metadata.c +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_mac_metadata.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Read a zip file that has a zip comment in the end of the central diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_malformed.c b/contrib/libarchive/libarchive/test/test_read_format_zip_malformed.c index f1160648e759..7e46abd8a4c1 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_malformed.c +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_malformed.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static void test_malformed1(void) diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_nested.c b/contrib/libarchive/libarchive/test/test_read_format_zip_nested.c index 4418fc4f2502..95945638b074 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_nested.c +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_nested.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_read_format_zip_nested) { @@ -50,7 +49,7 @@ DEFINE_TEST(test_read_format_zip_nested) /* Save contents of inner Zip. */ innerLength = (size_t)archive_entry_size(ae); - inner = calloc(innerLength, 1); + inner = calloc(innerLength, sizeof(char)); assertEqualInt(innerLength, archive_read_data(a, inner, innerLength)); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_nofiletype.c b/contrib/libarchive/libarchive/test/test_read_format_zip_nofiletype.c index b3260fa7563b..d2798b283185 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_nofiletype.c +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_nofiletype.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Issue 332: Some epub files (which are really Zip archives) have diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_padded.c b/contrib/libarchive/libarchive/test/test_read_format_zip_padded.c index d8c694bae5e2..dcbf3406e867 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_padded.c +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_padded.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static void verify_padded_archive(const char *refname) diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_ppmd8.zipx.uu b/contrib/libarchive/libarchive/test/test_read_format_zip_ppmd8.zipx.uu index 4440e95b3158..cdbf0f44899d 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_ppmd8.zipx.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_ppmd8.zipx.uu @@ -1,4 +1,4 @@ -begin 644 ppmd8.zipx +begin 644 test_read_format_zip_ppmd8.zipx M4$L#!#\#``!B`#TQD4VJ.XZZV`$``)`#```%````=FEM<F,'`"']JO"&\1[R M;;G)@`(8>EJ>3<8@F_*<(\B>K]4_(WC8#)`_QSG+`7`B&_11VIJ)@#(<W.9L M>K)_I8R^=`VUO2_S,1C=1CAU>-*`]CC+&6Q;EE'#CG-W=^[,F,+UR-TE(9,G diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_sfx.c b/contrib/libarchive/libarchive/test/test_read_format_zip_sfx.c index a33c1b808c56..dad0a270d7bc 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_sfx.c +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_sfx.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Read a zip file that is a SFX. diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_traditional_encryption_data.c b/contrib/libarchive/libarchive/test/test_read_format_zip_traditional_encryption_data.c index 20e55bbc6948..8f0cfe6dc896 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_traditional_encryption_data.c +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_traditional_encryption_data.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_read_format_zip_traditional_encryption_data) { diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_winzip_aes.c b/contrib/libarchive/libarchive/test/test_read_format_zip_winzip_aes.c index 3f543927a41e..7c5d5ea61f77 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_winzip_aes.c +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_winzip_aes.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static void test_winzip_aes(const char *refname, int need_libz) diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_winzip_aes128.zip.uu b/contrib/libarchive/libarchive/test/test_read_format_zip_winzip_aes128.zip.uu index d0f03a3112e1..d3a69d8d41d4 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_winzip_aes128.zip.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_winzip_aes128.zip.uu @@ -1,4 +1,4 @@ -begin 644 test_read_format_zip_winzip_aes128_encryption_data.zip +begin 644 test_read_format_zip_winzip_aes128.zip M4$L#!#,#`0!C`(RP#D4`````@0H``*(:```&``L`4D5!1$U%`9D'``(`044! M"``>H87EHY!N6J#=V\<,#M>^H2IQID3@A--GSL+F%'R^%OKB.K(74CJ!,(%" ML\O.^D'TO'!T<+"]"28FXP@QKAY]R+02!E!XE_6A-W&<$&SJ5W]K'SJ4>'C< diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_winzip_aes256.zip.uu b/contrib/libarchive/libarchive/test/test_read_format_zip_winzip_aes256.zip.uu index a45c8fbe664f..ae51e66538d1 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_winzip_aes256.zip.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_winzip_aes256.zip.uu @@ -1,4 +1,4 @@ -begin 644 test_read_format_zip_winzip_aes256_encryption_data.zip +begin 644 test_read_format_zip_winzip_aes256.zip M4$L#!#,#`0!C`(RP#D4`````B0H``*(:```&``L`4D5!1$U%`9D'``(`044# M"`#8+Z><':+DENQS9*!7Y*&!7BQK,UN]RF*'<':@;]N)O5>]A5>0<AYWX=%S MGUTK5M-^&`+%Q<#PC+45O;+Q/4[_J7)A7*2<^!W;)^E_W%,]]7-&6R8]ZL.F diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_winzip_aes256_stored.zip.uu b/contrib/libarchive/libarchive/test/test_read_format_zip_winzip_aes256_stored.zip.uu index c49673aab2e7..e8300fa903a8 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_winzip_aes256_stored.zip.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_winzip_aes256_stored.zip.uu @@ -1,4 +1,4 @@ -begin 644 test_read_format_zip_winzip_aes256_encryption_stored_data.zip +begin 644 test_read_format_zip_winzip_aes256_stored.zip M4$L#!#,#`0!C`(RP#D4`````OAH``*(:```&``L`4D5!1$U%`9D'``(`044# M``#5>!R(9&J6OW+%/X2D%.HLH/4@[H=,;4@&P$:E>NK#GQM>2SUV&GDS9/G@ M#J5^X(O<TC2DQW<QV`U6]!AA].1DL/:C!^1V=PJ`#_Z7`]_@C+O\SN38$]ZL diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_winzip_aes_large.c b/contrib/libarchive/libarchive/test/test_read_format_zip_winzip_aes_large.c index f05e2183a21b..4b6202bde164 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_winzip_aes_large.c +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_winzip_aes_large.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_read_format_zip_winzip_aes256_large) { diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_with_invalid_traditional_eocd.c b/contrib/libarchive/libarchive/test/test_read_format_zip_with_invalid_traditional_eocd.c index aca8bed60948..e9549fef8e7d 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_with_invalid_traditional_eocd.c +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_with_invalid_traditional_eocd.c @@ -23,8 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); - /* * Issue 869: zip files without a valid EOCD header aren't loaded even if they * have a valid ZIP64 version of said header. diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_with_invalid_traditional_eocd.zip.uu b/contrib/libarchive/libarchive/test/test_read_format_zip_with_invalid_traditional_eocd.zip.uu index 63744f145ea2..7301c155e404 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_with_invalid_traditional_eocd.zip.uu +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_with_invalid_traditional_eocd.zip.uu @@ -1,4 +1,4 @@ -begin 644 test_read_format_zip_without_eocd.zip +begin 644 test_read_format_zip_with_invalid_traditional_eocd.zip M4$L#!"T`"````-IT@DH`````__________\)`"``=&5S=#$N='AT`0`<```` M```````````````````````````````````````````````````````````` M`%!+`P0M``@```#:=()*`````/__________"0`@`'1E<W0R+G1X=`$`'``` diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_zip64.c b/contrib/libarchive/libarchive/test/test_read_format_zip_zip64.c index bd2324e549b3..51968b71addb 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_zip64.c +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_zip64.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Sample file was created with: diff --git a/contrib/libarchive/libarchive/test/test_read_large.c b/contrib/libarchive/libarchive/test/test_read_large.c index 9a1d9ead4f21..46dee4e33d6c 100644 --- a/contrib/libarchive/libarchive/test/test_read_large.c +++ b/contrib/libarchive/libarchive/test/test_read_large.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static unsigned char testdata[10 * 1024 * 1024]; static unsigned char testdatacopy[10 * 1024 * 1024]; diff --git a/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_aa.uu b/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_aa.uu index a6c3b3cffebf..299b00b6814a 100644 --- a/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_aa.uu +++ b/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_aa.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_read_large_splitted_rar_aa M4F%R(1H'`,^0<P``#0````````!R,W3`D$<`VK$"`&I!9PX#=T0K]VL`!S\= M-1T`I($``'!P;61?;'IS<U]C;VYV97)S:6]N7W1E<W0N='ATP,B$``<_&[\& M/Z<8.^3!KS1=].J=K$!ZW>[/K1`L^BJ7QHH!,TI;W];?!</^PRNT+.T262?/ diff --git a/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ab.uu b/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ab.uu index 43869789a075..39ce2315c44f 100644 --- a/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ab.uu +++ b/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ab.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_read_large_splitted_rar_ab M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` diff --git a/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ac.uu b/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ac.uu index 0ceeae1b7fc4..7941aaaca7ad 100644 --- a/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ac.uu +++ b/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ac.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_read_large_splitted_rar_ac M____________________________________________________________ M____________________________________________________________ M____________________________________________________________ diff --git a/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ad.uu b/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ad.uu index f736f13c7cb1..9b633d19a931 100644 --- a/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ad.uu +++ b/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ad.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_read_large_splitted_rar_ad M>WI\4,Y&PE_B_KBY3_KR8A*=V5Y9^":+9OY.2W-%I:#J"YC[#9]&6)@HH1ZH MV*<8TFQK2]$<A645.":BA=R^<=NOJ(%,H)2+!9H%.!"J[E>+2^(@3/9+1"6W M2O)L"JZC)MCDJG+%_;+=UEV.2(I,V[T@E<XQKA"\G.*'GD,QF_.C^"NU*.#4 diff --git a/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ae.uu b/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ae.uu index 9f463a4ae384..fada05733f7c 100644 --- a/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ae.uu +++ b/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ae.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_read_large_splitted_rar_ae M____________________________________________________________ M____________________________________________________________ M____________________________________________________________ diff --git a/contrib/libarchive/libarchive/test/test_read_pax_truncated.c b/contrib/libarchive/libarchive/test/test_read_pax_truncated.c index 3d3570e5662e..a92ac3855c8d 100644 --- a/contrib/libarchive/libarchive/test/test_read_pax_truncated.c +++ b/contrib/libarchive/libarchive/test/test_read_pax_truncated.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_read_pax_truncated) { diff --git a/contrib/libarchive/libarchive/test/test_read_pax_xattr_schily.tar.uu b/contrib/libarchive/libarchive/test/test_read_pax_xattr_schily.tar.uu index 33a3ed4ea036..83a3cdbc52b9 100644 --- a/contrib/libarchive/libarchive/test/test_read_pax_xattr_schily.tar.uu +++ b/contrib/libarchive/libarchive/test/test_read_pax_xattr_schily.tar.uu @@ -1,4 +1,4 @@ -begin 644 test_read_pax_xattr_schily.tar.uu +begin 644 test_read_pax_xattr_schily.tar M+B]087A(96%D97)S+C$U,C4O8V]N9F9I;&5S```````````````````````` M```````````````````````````````````````````````````````````` M`````````````#`P,#`V-#0`,#`P,#`P,``P,#`P,#`P`#`P,#`P,#`P-C0W diff --git a/contrib/libarchive/libarchive/test/test_read_position.c b/contrib/libarchive/libarchive/test/test_read_position.c index 5e7f05fa666d..e404c066e516 100644 --- a/contrib/libarchive/libarchive/test/test_read_position.c +++ b/contrib/libarchive/libarchive/test/test_read_position.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static unsigned char nulls[1000]; static unsigned char tmp[1000]; diff --git a/contrib/libarchive/libarchive/test/test_read_splitted_rar_aa.uu b/contrib/libarchive/libarchive/test/test_read_splitted_rar_aa.uu index 9a510cb4c94a..a15d31454d26 100644 --- a/contrib/libarchive/libarchive/test/test_read_splitted_rar_aa.uu +++ b/contrib/libarchive/libarchive/test/test_read_splitted_rar_aa.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_read_splitted_rar_aa M4F%R(1H'`,^0<P``#0````````"$4G0@D#(`%````!0````#0J+(OK=VVCX4 M,`@`I($``'1E<W0N='AT@`BW=MH^MW;:/G1E<W0@=&5X="!D;V-U;65N=`T* *G2]T()`R``@````` diff --git a/contrib/libarchive/libarchive/test/test_read_splitted_rar_ab.uu b/contrib/libarchive/libarchive/test/test_read_splitted_rar_ab.uu index f34f25cc0b1f..0855fc3e7a9e 100644 --- a/contrib/libarchive/libarchive/test/test_read_splitted_rar_ab.uu +++ b/contrib/libarchive/libarchive/test/test_read_splitted_rar_ab.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_read_splitted_rar_ab M``@````#>T3)MM%,V#X4,`@`_Z$``'1E<W1L:6YKP`C13-@^4%_:/G1E<W0N M='ATS>!T()`Z`!0````4`````T*BR+YC=]H^%#`0`*2!``!T97-T9&ER7'1E *<W0N='ATP,QC=P`` diff --git a/contrib/libarchive/libarchive/test/test_read_splitted_rar_ac.uu b/contrib/libarchive/libarchive/test/test_read_splitted_rar_ac.uu index e131343bb9fe..5ec194b0a62d 100644 --- a/contrib/libarchive/libarchive/test/test_read_splitted_rar_ac.uu +++ b/contrib/libarchive/libarchive/test/test_read_splitted_rar_ac.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_read_splitted_rar_ac MVCYC=]H^=&5S="!T97AT(&1O8W5M96YT#0JAR'3@D#$````````````#```` M`&-WVCX4,`<`[4$``'1E<W1D:7+`S&-WVCYD=]H^YN=TX)`V```````````` *`P````"=J]4^%``` diff --git a/contrib/libarchive/libarchive/test/test_read_splitted_rar_ad.uu b/contrib/libarchive/libarchive/test/test_read_splitted_rar_ad.uu index f4d36093e04c..7d29b7d63bc9 100644 --- a/contrib/libarchive/libarchive/test/test_read_splitted_rar_ad.uu +++ b/contrib/libarchive/libarchive/test/test_read_splitted_rar_ad.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_read_splitted_rar_ad D,`P`[4$``'1E<W1E;7!T>61I<H#,G:O5/L5=VC[$/7L`0`<` ` end diff --git a/contrib/libarchive/libarchive/test/test_read_truncated.c b/contrib/libarchive/libarchive/test/test_read_truncated.c index 4d5e4385e92a..c28a9ee30e00 100644 --- a/contrib/libarchive/libarchive/test/test_read_truncated.c +++ b/contrib/libarchive/libarchive/test/test_read_truncated.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static char buff[1000000]; static char buff2[100000]; diff --git a/contrib/libarchive/libarchive/test/test_read_truncated_filter.c b/contrib/libarchive/libarchive/test/test_read_truncated_filter.c index f85ccaa140e3..9c5348d935d2 100644 --- a/contrib/libarchive/libarchive/test/test_read_truncated_filter.c +++ b/contrib/libarchive/libarchive/test/test_read_truncated_filter.c @@ -25,7 +25,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Check that we generate an error message when reading a truncated diff --git a/contrib/libarchive/libarchive/test/test_sparse_basic.c b/contrib/libarchive/libarchive/test/test_sparse_basic.c index 484c28656172..0350df1e9f27 100644 --- a/contrib/libarchive/libarchive/test/test_sparse_basic.c +++ b/contrib/libarchive/libarchive/test/test_sparse_basic.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_IOCTL_H #include <sys/ioctl.h> @@ -121,7 +120,7 @@ create_sparse_file(const char *path, const struct sparse *s) memset(buff, ' ', sizeof(buff)); handle = CreateFileA(path, GENERIC_WRITE, 0, - NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, + NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); assert(handle != INVALID_HANDLE_VALUE); assert(DeviceIoControl(handle, FSCTL_SET_SPARSE, NULL, 0, diff --git a/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_aa.uu b/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_aa.uu index 0344d2ce30ef..af2fcae348e8 100644 --- a/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_aa.uu +++ b/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_aa.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_splitted_rar_seek_support_aa M4F%R(1H'`,^0<P``#0````````"X!'0@D$,`CTX``(].```#8Z8%7F!.(4`4 M,!D`I($``$QI8F%R8VAI=F5!9&1I;F=497-T+FAT;6S`S&!.(4!B3B%`/"%$ M3T-465!%($A434P@4%5"3$E#("(M+R]7,T,O+T141"!(5$U,(#0N,"!4<F%N diff --git a/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_ab.uu b/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_ab.uu index 5f41f5fdac44..5652c6ac5ebf 100644 --- a/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_ab.uu +++ b/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_ab.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_splitted_rar_seek_support_ab M;&]G(&UE<W-A9V5S(&]N(&9A:6QU<F4N($EN('!A<G1I8W5L87(L('1H97D@ M<')I;G0*=&AE('9A;'5E(&]F(&)O=&@@87)G=6UE;G1S.R!T:&ES(&=R96%T M;'D@<VEM<&QI9FEE<R!D:6%G;F]S:6YG"F9A:6QU<F5S+B`*/"]0/@H\2#$@ diff --git a/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_ac.uu b/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_ac.uu index ee9f78c48967..3b45bdb4f8f3 100644 --- a/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_ac.uu +++ b/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_ac.uu @@ -1,4 +1,4 @@ -begin 644 - +begin 644 test_splitted_rar_seek_support_ac M<F]M(&-O;F9I9RYH+B`H268@=&AE('1E<W1S('5S92!T:&4@<V%M92`\5%0@ M0TQ!4U,](G=E<W1E<FXB/DA!5D5?/"]45#X*"6UA8W)O<R!A<R!T:&4@8V]D M92!B96EN9R!T97-T960@=&AE;B!C;VYF:6=U<F%T:6]N('!R;V)L96US('=I diff --git a/contrib/libarchive/libarchive/test/test_tar_filenames.c b/contrib/libarchive/libarchive/test/test_tar_filenames.c index 8a3ddab79f29..a8c9a3dc790d 100644 --- a/contrib/libarchive/libarchive/test/test_tar_filenames.c +++ b/contrib/libarchive/libarchive/test/test_tar_filenames.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Exercise various lengths of filenames in tar archives, diff --git a/contrib/libarchive/libarchive/test/test_tar_large.c b/contrib/libarchive/libarchive/test/test_tar_large.c index 8a9405b68e64..7ff3fee17717 100644 --- a/contrib/libarchive/libarchive/test/test_tar_large.c +++ b/contrib/libarchive/libarchive/test/test_tar_large.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #include <errno.h> #include <stdlib.h> diff --git a/contrib/libarchive/libarchive/test/test_ustar_filename_encoding.c b/contrib/libarchive/libarchive/test/test_ustar_filename_encoding.c index 5e4fba716c13..cc62453f1c1b 100644 --- a/contrib/libarchive/libarchive/test/test_ustar_filename_encoding.c +++ b/contrib/libarchive/libarchive/test/test_ustar_filename_encoding.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #include <locale.h> diff --git a/contrib/libarchive/libarchive/test/test_ustar_filenames.c b/contrib/libarchive/libarchive/test/test_ustar_filenames.c index c84dd67aa039..896b5cc9f1a1 100644 --- a/contrib/libarchive/libarchive/test/test_ustar_filenames.c +++ b/contrib/libarchive/libarchive/test/test_ustar_filenames.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Exercise various lengths of filenames in ustar archives. diff --git a/contrib/libarchive/libarchive/test/test_write_disk.c b/contrib/libarchive/libarchive/test/test_write_disk.c index 00b9e45af239..fa0743f949f6 100644 --- a/contrib/libarchive/libarchive/test/test_write_disk.c +++ b/contrib/libarchive/libarchive/test/test_write_disk.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #define UMASK 022 /* diff --git a/contrib/libarchive/libarchive/test/test_write_disk_appledouble.c b/contrib/libarchive/libarchive/test/test_write_disk_appledouble.c index d82d698ebda7..3265a94d2fed 100644 --- a/contrib/libarchive/libarchive/test/test_write_disk_appledouble.c +++ b/contrib/libarchive/libarchive/test/test_write_disk_appledouble.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_ACL_H #include <sys/acl.h> diff --git a/contrib/libarchive/libarchive/test/test_write_disk_failures.c b/contrib/libarchive/libarchive/test/test_write_disk_failures.c index 180c06214b87..ff688b993d5f 100644 --- a/contrib/libarchive/libarchive/test/test_write_disk_failures.c +++ b/contrib/libarchive/libarchive/test/test_write_disk_failures.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_write_disk_failures) { diff --git a/contrib/libarchive/libarchive/test/test_write_disk_hardlink.c b/contrib/libarchive/libarchive/test/test_write_disk_hardlink.c index 184b9a8ffeff..215633ab40bf 100644 --- a/contrib/libarchive/libarchive/test/test_write_disk_hardlink.c +++ b/contrib/libarchive/libarchive/test/test_write_disk_hardlink.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #if defined(_WIN32) && !defined(__CYGWIN__) /* Execution bits, Group members bits and others bits do not work. */ diff --git a/contrib/libarchive/libarchive/test/test_write_disk_hfs_compression.c b/contrib/libarchive/libarchive/test/test_write_disk_hfs_compression.c index 8a2e7df3b9b2..026e41533628 100644 --- a/contrib/libarchive/libarchive/test/test_write_disk_hfs_compression.c +++ b/contrib/libarchive/libarchive/test/test_write_disk_hfs_compression.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_XATTR_H #include <sys/xattr.h> diff --git a/contrib/libarchive/libarchive/test/test_write_disk_lookup.c b/contrib/libarchive/libarchive/test/test_write_disk_lookup.c index cabdae8ddc43..52b9a7457017 100644 --- a/contrib/libarchive/libarchive/test/test_write_disk_lookup.c +++ b/contrib/libarchive/libarchive/test/test_write_disk_lookup.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static void group_cleanup(void *d) diff --git a/contrib/libarchive/libarchive/test/test_write_disk_mac_metadata.c b/contrib/libarchive/libarchive/test/test_write_disk_mac_metadata.c index be13d96afddf..f9cfd9b3fd7c 100644 --- a/contrib/libarchive/libarchive/test/test_write_disk_mac_metadata.c +++ b/contrib/libarchive/libarchive/test/test_write_disk_mac_metadata.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_ACL_H #include <sys/acl.h> diff --git a/contrib/libarchive/libarchive/test/test_write_disk_no_hfs_compression.c b/contrib/libarchive/libarchive/test/test_write_disk_no_hfs_compression.c index 0af44d246a11..58ad187574c1 100644 --- a/contrib/libarchive/libarchive/test/test_write_disk_no_hfs_compression.c +++ b/contrib/libarchive/libarchive/test/test_write_disk_no_hfs_compression.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_XATTR_H #include <sys/xattr.h> diff --git a/contrib/libarchive/libarchive/test/test_write_disk_perms.c b/contrib/libarchive/libarchive/test/test_write_disk_perms.c index 89e593fd1b03..4df9f70bd998 100644 --- a/contrib/libarchive/libarchive/test/test_write_disk_perms.c +++ b/contrib/libarchive/libarchive/test/test_write_disk_perms.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #if !defined(_WIN32) || defined(__CYGWIN__) diff --git a/contrib/libarchive/libarchive/test/test_write_disk_secure.c b/contrib/libarchive/libarchive/test/test_write_disk_secure.c index 6dd8fd9b0f7d..ddaf95d7497c 100644 --- a/contrib/libarchive/libarchive/test/test_write_disk_secure.c +++ b/contrib/libarchive/libarchive/test/test_write_disk_secure.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #define UMASK 022 diff --git a/contrib/libarchive/libarchive/test/test_write_disk_secure744.c b/contrib/libarchive/libarchive/test/test_write_disk_secure744.c index 9b12d4cf1082..35824658ce65 100644 --- a/contrib/libarchive/libarchive/test/test_write_disk_secure744.c +++ b/contrib/libarchive/libarchive/test/test_write_disk_secure744.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #define UMASK 022 diff --git a/contrib/libarchive/libarchive/test/test_write_disk_secure745.c b/contrib/libarchive/libarchive/test/test_write_disk_secure745.c index 870b06475cef..7b908ccc8905 100644 --- a/contrib/libarchive/libarchive/test/test_write_disk_secure745.c +++ b/contrib/libarchive/libarchive/test/test_write_disk_secure745.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #define UMASK 022 diff --git a/contrib/libarchive/libarchive/test/test_write_disk_secure746.c b/contrib/libarchive/libarchive/test/test_write_disk_secure746.c index 99cb882c059a..3f0588914707 100644 --- a/contrib/libarchive/libarchive/test/test_write_disk_secure746.c +++ b/contrib/libarchive/libarchive/test/test_write_disk_secure746.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #define UMASK 022 diff --git a/contrib/libarchive/libarchive/test/test_write_disk_sparse.c b/contrib/libarchive/libarchive/test/test_write_disk_sparse.c index 1566cd7a845e..36fd6944584d 100644 --- a/contrib/libarchive/libarchive/test/test_write_disk_sparse.c +++ b/contrib/libarchive/libarchive/test/test_write_disk_sparse.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Write a file using archive_write_data call, read the file diff --git a/contrib/libarchive/libarchive/test/test_write_disk_symlink.c b/contrib/libarchive/libarchive/test/test_write_disk_symlink.c index b6f0b3c85170..65194d94c081 100644 --- a/contrib/libarchive/libarchive/test/test_write_disk_symlink.c +++ b/contrib/libarchive/libarchive/test/test_write_disk_symlink.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Exercise symlink recreation. diff --git a/contrib/libarchive/libarchive/test/test_write_disk_times.c b/contrib/libarchive/libarchive/test/test_write_disk_times.c index 7d02d5854d77..265da4c2b875 100644 --- a/contrib/libarchive/libarchive/test/test_write_disk_times.c +++ b/contrib/libarchive/libarchive/test/test_write_disk_times.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Exercise time restores in archive_write_disk(), including diff --git a/contrib/libarchive/libarchive/test/test_write_filter_b64encode.c b/contrib/libarchive/libarchive/test/test_write_filter_b64encode.c index 5b917e92a30a..e33ff8a9817c 100644 --- a/contrib/libarchive/libarchive/test/test_write_filter_b64encode.c +++ b/contrib/libarchive/libarchive/test/test_write_filter_b64encode.c @@ -25,7 +25,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * A basic exercise of b64encode reading and writing. diff --git a/contrib/libarchive/libarchive/test/test_write_filter_bzip2.c b/contrib/libarchive/libarchive/test/test_write_filter_bzip2.c index 9e089c0dfdb5..f48bcc213231 100644 --- a/contrib/libarchive/libarchive/test/test_write_filter_bzip2.c +++ b/contrib/libarchive/libarchive/test/test_write_filter_bzip2.c @@ -25,7 +25,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD: head/lib/libarchive/test/test_write_compress_bzip2.c 191183 2009-04-17 01:06:31Z kientzle $"); /* * A basic exercise of bzip2 reading and writing. diff --git a/contrib/libarchive/libarchive/test/test_write_filter_compress.c b/contrib/libarchive/libarchive/test/test_write_filter_compress.c index 5cc0fc80bd8c..f7b9565b7db2 100644 --- a/contrib/libarchive/libarchive/test/test_write_filter_compress.c +++ b/contrib/libarchive/libarchive/test/test_write_filter_compress.c @@ -25,7 +25,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD: head/lib/libarchive/test/test_write_compress.c 189308 2009-03-03 17:02:51Z kientzle $"); /* * A basic exercise of compress reading and writing. diff --git a/contrib/libarchive/libarchive/test/test_write_filter_gzip.c b/contrib/libarchive/libarchive/test/test_write_filter_gzip.c index 2b761627179e..ae81a4fc59d6 100644 --- a/contrib/libarchive/libarchive/test/test_write_filter_gzip.c +++ b/contrib/libarchive/libarchive/test/test_write_filter_gzip.c @@ -25,7 +25,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD: head/lib/libarchive/test/test_write_compress_gzip.c 191183 2009-04-17 01:06:31Z kientzle $"); /* * A basic exercise of gzip reading and writing. diff --git a/contrib/libarchive/libarchive/test/test_write_filter_gzip_timestamp.c b/contrib/libarchive/libarchive/test/test_write_filter_gzip_timestamp.c index 23b11dba79a6..ee29f034231c 100644 --- a/contrib/libarchive/libarchive/test/test_write_filter_gzip_timestamp.c +++ b/contrib/libarchive/libarchive/test/test_write_filter_gzip_timestamp.c @@ -26,7 +26,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_write_filter_gzip_timestamp) { diff --git a/contrib/libarchive/libarchive/test/test_write_filter_lz4.c b/contrib/libarchive/libarchive/test/test_write_filter_lz4.c index 071fee41dd95..97a80321dede 100644 --- a/contrib/libarchive/libarchive/test/test_write_filter_lz4.c +++ b/contrib/libarchive/libarchive/test/test_write_filter_lz4.c @@ -25,7 +25,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * A basic exercise of lz4 reading and writing. @@ -62,7 +61,7 @@ DEFINE_TEST(test_write_filter_lz4) assert(NULL != (buff = (char *)malloc(buffsize))); datasize = 10000; - assert(NULL != (data = (char *)calloc(1, datasize))); + assert(NULL != (data = (char *)calloc(datasize, 1))); filecount = 10; /* @@ -306,7 +305,7 @@ test_options(const char *options) assert(NULL != (buff = (char *)malloc(buffsize))); datasize = 10000; - assert(NULL != (data = (char *)calloc(1, datasize))); + assert(NULL != (data = (char *)calloc(datasize, 1))); filecount = 10; /* diff --git a/contrib/libarchive/libarchive/test/test_write_filter_lzip.c b/contrib/libarchive/libarchive/test/test_write_filter_lzip.c index ce70a5d629a7..8d6544668980 100644 --- a/contrib/libarchive/libarchive/test/test_write_filter_lzip.c +++ b/contrib/libarchive/libarchive/test/test_write_filter_lzip.c @@ -26,7 +26,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * A basic exercise of lzip reading and writing. diff --git a/contrib/libarchive/libarchive/test/test_write_filter_lzma.c b/contrib/libarchive/libarchive/test/test_write_filter_lzma.c index d055333a44c3..d7c0c5b21b6b 100644 --- a/contrib/libarchive/libarchive/test/test_write_filter_lzma.c +++ b/contrib/libarchive/libarchive/test/test_write_filter_lzma.c @@ -25,7 +25,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD: head/lib/libarchive/test/test_write_compress_lzma.c 191183 2009-04-17 01:06:31Z kientzle $"); /* * A basic exercise of lzma reading and writing. diff --git a/contrib/libarchive/libarchive/test/test_write_filter_lzop.c b/contrib/libarchive/libarchive/test/test_write_filter_lzop.c index 18fc332b44ff..87843f49bd3b 100644 --- a/contrib/libarchive/libarchive/test/test_write_filter_lzop.c +++ b/contrib/libarchive/libarchive/test/test_write_filter_lzop.c @@ -25,8 +25,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); - /* * A basic exercise of lzop reading and writing. */ @@ -57,7 +55,7 @@ DEFINE_TEST(test_write_filter_lzop) assert(NULL != (buff = (char *)malloc(buffsize))); datasize = 10000; - assert(NULL != (data = (char *)calloc(1, datasize))); + assert(NULL != (data = (char *)calloc(datasize, 1))); filecount = 10; /* diff --git a/contrib/libarchive/libarchive/test/test_write_filter_program.c b/contrib/libarchive/libarchive/test/test_write_filter_program.c index 9fe264c018dc..a1f93ab79f5a 100644 --- a/contrib/libarchive/libarchive/test/test_write_filter_program.c +++ b/contrib/libarchive/libarchive/test/test_write_filter_program.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD: head/lib/libarchive/test/test_write_compress_program.c 201247 2009-12-30 05:59:21Z kientzle $"); static char buff[1000000]; static char buff2[64]; diff --git a/contrib/libarchive/libarchive/test/test_write_filter_uuencode.c b/contrib/libarchive/libarchive/test/test_write_filter_uuencode.c index 2ce5b8931447..7eda278b35cd 100644 --- a/contrib/libarchive/libarchive/test/test_write_filter_uuencode.c +++ b/contrib/libarchive/libarchive/test/test_write_filter_uuencode.c @@ -25,7 +25,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * A basic exercise of uuencode reading and writing. diff --git a/contrib/libarchive/libarchive/test/test_write_filter_xz.c b/contrib/libarchive/libarchive/test/test_write_filter_xz.c index e2f1ec821425..db4e5dafa274 100644 --- a/contrib/libarchive/libarchive/test/test_write_filter_xz.c +++ b/contrib/libarchive/libarchive/test/test_write_filter_xz.c @@ -25,7 +25,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD: head/lib/libarchive/test/test_write_compress_xz.c 191183 2009-04-17 01:06:31Z kientzle $"); /* * A basic exercise of xz reading and writing. diff --git a/contrib/libarchive/libarchive/test/test_write_filter_zstd.c b/contrib/libarchive/libarchive/test/test_write_filter_zstd.c index aa77b49860c0..da711f9e4bf9 100644 --- a/contrib/libarchive/libarchive/test/test_write_filter_zstd.c +++ b/contrib/libarchive/libarchive/test/test_write_filter_zstd.c @@ -25,7 +25,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_write_filter_zstd) { @@ -133,32 +132,112 @@ DEFINE_TEST(test_write_filter_zstd) archive_write_set_filter_option(a, NULL, "threads", "-1")); /* negative */ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_filter_option(a, NULL, "threads", "4")); -#if HAVE_ZSTD_H && HAVE_LIBZSTD_COMPRESSOR +#if HAVE_ZSTD_H && HAVE_ZSTD_compressStream /* frame-per-file: boolean */ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_filter_option(a, NULL, "frame-per-file", "")); - /* min-frame-size: >= 0 */ + /* min-frame-in: >= 0 */ assertEqualIntA(a, ARCHIVE_FAILED, - archive_write_set_filter_option(a, NULL, "min-frame-size", "")); + archive_write_set_filter_option(a, NULL, "min-frame-out", "")); assertEqualIntA(a, ARCHIVE_FAILED, - archive_write_set_filter_option(a, NULL, "min-frame-size", "-1")); + archive_write_set_filter_option(a, NULL, "min-frame-out", "-1")); assertEqualIntA(a, ARCHIVE_OK, - archive_write_set_filter_option(a, NULL, "min-frame-size", "0")); + archive_write_set_filter_option(a, NULL, "min-frame-out", "0")); assertEqualIntA(a, ARCHIVE_OK, - archive_write_set_filter_option(a, NULL, "min-frame-size", "1048576")); - /* max-frame-size: >= 1024 */ + archive_write_set_filter_option(a, NULL, "min-frame-out", "1048576")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "min-frame-out", "1k")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "min-frame-out", "1kB")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "min-frame-out", "1M")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "min-frame-out", "1MB")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "min-frame-out", "1G")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "min-frame-out", "1GB")); + /* min-frame-out: >= 0 */ + assertEqualIntA(a, ARCHIVE_FAILED, + archive_write_set_filter_option(a, NULL, "min-frame-in", "")); + assertEqualIntA(a, ARCHIVE_FAILED, + archive_write_set_filter_option(a, NULL, "min-frame-in", "-1")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "min-frame-in", "0")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "min-frame-in", "1048576")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "min-frame-in", "1k")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "min-frame-in", "1kB")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "min-frame-in", "1M")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "min-frame-in", "1MB")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "min-frame-in", "1G")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "min-frame-in", "1GB")); + /* max-frame-in: >= 1024 */ + assertEqualIntA(a, ARCHIVE_FAILED, + archive_write_set_filter_option(a, NULL, "max-frame-in", "")); + assertEqualIntA(a, ARCHIVE_FAILED, + archive_write_set_filter_option(a, NULL, "max-frame-in", "-1")); + assertEqualIntA(a, ARCHIVE_FAILED, + archive_write_set_filter_option(a, NULL, "max-frame-in", "0")); assertEqualIntA(a, ARCHIVE_FAILED, - archive_write_set_filter_option(a, NULL, "max-frame-size", "")); + archive_write_set_filter_option(a, NULL, "max-frame-in", "1023")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "max-frame-in", "1024")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "max-frame-in", "1048576")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "max-frame-in", "1k")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "max-frame-in", "1kB")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "max-frame-in", "1M")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "max-frame-in", "1MB")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "max-frame-in", "1G")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "max-frame-in", "1GB")); + /* max-frame-out: >= 1024 */ assertEqualIntA(a, ARCHIVE_FAILED, - archive_write_set_filter_option(a, NULL, "max-frame-size", "-1")); + archive_write_set_filter_option(a, NULL, "max-frame-out", "")); assertEqualIntA(a, ARCHIVE_FAILED, - archive_write_set_filter_option(a, NULL, "max-frame-size", "0")); + archive_write_set_filter_option(a, NULL, "max-frame-out", "-1")); assertEqualIntA(a, ARCHIVE_FAILED, - archive_write_set_filter_option(a, NULL, "max-frame-size", "1023")); + archive_write_set_filter_option(a, NULL, "max-frame-out", "0")); + assertEqualIntA(a, ARCHIVE_FAILED, + archive_write_set_filter_option(a, NULL, "max-frame-out", "1023")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "max-frame-out", "1024")); assertEqualIntA(a, ARCHIVE_OK, - archive_write_set_filter_option(a, NULL, "max-frame-size", "1024")); + archive_write_set_filter_option(a, NULL, "max-frame-out", "1048576")); assertEqualIntA(a, ARCHIVE_OK, - archive_write_set_filter_option(a, NULL, "max-frame-size", "1048576")); + archive_write_set_filter_option(a, NULL, "max-frame-out", "1k")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "max-frame-out", "1kB")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "max-frame-out", "1M")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "max-frame-out", "1MB")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "max-frame-out", "1G")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "max-frame-out", "1GB")); +#endif +#if ZSTD_VERSION_NUMBER >= MINVER_LONG + if ((int)(sizeof(size_t) == 4)) + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "long", "26")); + else + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "long", "27")); + assertEqualIntA(a, ARCHIVE_FAILED, + archive_write_set_filter_option(a, NULL, "long", "-1")); /* negative */ #endif assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2)); for (i = 0; i < 100; i++) { diff --git a/contrib/libarchive/libarchive/test/test_write_format_7zip.c b/contrib/libarchive/libarchive/test/test_write_format_7zip.c index c8fdcd02cc84..d91e88d8f40f 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_7zip.c +++ b/contrib/libarchive/libarchive/test/test_write_format_7zip.c @@ -25,7 +25,6 @@ #include "test.h" -__FBSDID("$FreeBSD$"); static void test_basic(const char *compression_type) diff --git a/contrib/libarchive/libarchive/test/test_write_format_7zip_empty.c b/contrib/libarchive/libarchive/test/test_write_format_7zip_empty.c index 9a503e9d6bac..817009f4355b 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_7zip_empty.c +++ b/contrib/libarchive/libarchive/test/test_write_format_7zip_empty.c @@ -25,7 +25,6 @@ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Test writing an empty archive. diff --git a/contrib/libarchive/libarchive/test/test_write_format_7zip_large.c b/contrib/libarchive/libarchive/test/test_write_format_7zip_large.c index b7a90d187bae..ac2fa08b4125 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_7zip_large.c +++ b/contrib/libarchive/libarchive/test/test_write_format_7zip_large.c @@ -25,7 +25,6 @@ #include "test.h" -__FBSDID("$FreeBSD$"); #define LARGE_SIZE (1*1024*1024) static void diff --git a/contrib/libarchive/libarchive/test/test_write_format_ar.c b/contrib/libarchive/libarchive/test/test_write_format_ar.c index 85dffdc7277b..9c6cd5ecdb05 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_ar.c +++ b/contrib/libarchive/libarchive/test/test_write_format_ar.c @@ -26,7 +26,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); static char buff[4096]; static char buff2[64]; diff --git a/contrib/libarchive/libarchive/test/test_write_format_cpio.c b/contrib/libarchive/libarchive/test/test_write_format_cpio.c index a1c1a86fb0af..827cad3590c4 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_cpio.c +++ b/contrib/libarchive/libarchive/test/test_write_format_cpio.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static void test_format(int (*set_format)(struct archive *)) diff --git a/contrib/libarchive/libarchive/test/test_write_format_cpio_empty.c b/contrib/libarchive/libarchive/test/test_write_format_cpio_empty.c index df9dee3bf7e1..22682235fca3 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_cpio_empty.c +++ b/contrib/libarchive/libarchive/test/test_write_format_cpio_empty.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Check that an "empty" cpio archive is correctly created. diff --git a/contrib/libarchive/libarchive/test/test_write_format_cpio_newc.c b/contrib/libarchive/libarchive/test/test_write_format_cpio_newc.c index 6b4bb5b7817c..786b5d739b4d 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_cpio_newc.c +++ b/contrib/libarchive/libarchive/test/test_write_format_cpio_newc.c @@ -23,8 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); - static int is_hex(const char *p, size_t l) diff --git a/contrib/libarchive/libarchive/test/test_write_format_cpio_odc.c b/contrib/libarchive/libarchive/test/test_write_format_cpio_odc.c index ddf377231652..c763fcd2520c 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_cpio_odc.c +++ b/contrib/libarchive/libarchive/test/test_write_format_cpio_odc.c @@ -23,8 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); - static int is_octal(const char *p, size_t l) diff --git a/contrib/libarchive/libarchive/test/test_write_format_gnutar.c b/contrib/libarchive/libarchive/test/test_write_format_gnutar.c index 2a4c383e7aff..d72d076d115c 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_gnutar.c +++ b/contrib/libarchive/libarchive/test/test_write_format_gnutar.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static char buff2[64]; diff --git a/contrib/libarchive/libarchive/test/test_write_format_gnutar_filenames.c b/contrib/libarchive/libarchive/test/test_write_format_gnutar_filenames.c index 655e998ed827..aae5a2a6f787 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_gnutar_filenames.c +++ b/contrib/libarchive/libarchive/test/test_write_format_gnutar_filenames.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Inspired by Github issue #682, which reported that gnutar filenames diff --git a/contrib/libarchive/libarchive/test/test_write_format_iso9660.c b/contrib/libarchive/libarchive/test/test_write_format_iso9660.c index e4e98bb95c29..7b455794c5de 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_iso9660.c +++ b/contrib/libarchive/libarchive/test/test_write_format_iso9660.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static char buff2[64]; DEFINE_TEST(test_write_format_iso9660) @@ -385,14 +384,14 @@ DEFINE_TEST(test_write_format_iso9660) assertEqualInt(2048, archive_entry_size(ae)); /* - * Read "hardlnk" + * Read "file" */ assertEqualIntA(a, 0, archive_read_next_header(a, &ae)); assertEqualInt(2, archive_entry_atime(ae)); assertEqualInt(3, archive_entry_birthtime(ae)); assertEqualInt(4, archive_entry_ctime(ae)); assertEqualInt(5, archive_entry_mtime(ae)); - assertEqualString("hardlnk", archive_entry_pathname(ae)); + assertEqualString("file", archive_entry_pathname(ae)); assert((AE_IFREG | 0555) == archive_entry_mode(ae)); assertEqualInt(2, archive_entry_nlink(ae)); assertEqualInt(8, archive_entry_size(ae)); @@ -400,15 +399,15 @@ DEFINE_TEST(test_write_format_iso9660) assertEqualMem(buff2, "12345678", 8); /* - * Read "file" + * Read "hardlnk" */ assertEqualIntA(a, 0, archive_read_next_header(a, &ae)); assertEqualInt(2, archive_entry_atime(ae)); assertEqualInt(3, archive_entry_birthtime(ae)); assertEqualInt(4, archive_entry_ctime(ae)); assertEqualInt(5, archive_entry_mtime(ae)); - assertEqualString("file", archive_entry_pathname(ae)); - assertEqualString("hardlnk", archive_entry_hardlink(ae)); + assertEqualString("hardlnk", archive_entry_pathname(ae)); + assertEqualString("file", archive_entry_hardlink(ae)); assert((AE_IFREG | 0555) == archive_entry_mode(ae)); assertEqualInt(2, archive_entry_nlink(ae)); assertEqualInt(0, archive_entry_size(ae)); @@ -982,13 +981,13 @@ DEFINE_TEST(test_write_format_iso9660) assertEqualInt(2048, archive_entry_size(ae)); /* - * Read "hardlink" + * Read "file" */ assertEqualIntA(a, 0, archive_read_next_header(a, &ae)); assertEqualInt(5, archive_entry_atime(ae)); assertEqualInt(5, archive_entry_ctime(ae)); assertEqualInt(5, archive_entry_mtime(ae)); - assertEqualString("HARDLNK", archive_entry_pathname(ae)); + assertEqualString("FILE", archive_entry_pathname(ae)); assertEqualString(NULL, archive_entry_hardlink(ae)); assert((AE_IFREG | 0400) == archive_entry_mode(ae)); assertEqualInt(8, archive_entry_size(ae)); @@ -996,15 +995,15 @@ DEFINE_TEST(test_write_format_iso9660) assertEqualMem(buff2, "12345678", 8); /* - * Read "file" + * Read "hardlnk" */ assertEqualIntA(a, 0, archive_read_next_header(a, &ae)); assertEqualInt(5, archive_entry_atime(ae)); assertEqualInt(0, archive_entry_birthtime(ae)); assertEqualInt(5, archive_entry_ctime(ae)); assertEqualInt(5, archive_entry_mtime(ae)); - assertEqualString("FILE", archive_entry_pathname(ae)); - assertEqualString("HARDLNK", archive_entry_hardlink(ae)); + assertEqualString("HARDLNK", archive_entry_pathname(ae)); + assertEqualString("FILE", archive_entry_hardlink(ae)); assert((AE_IFREG | 0400) == archive_entry_mode(ae)); assertEqualInt(2, archive_entry_nlink(ae)); assertEqualInt(0, archive_entry_size(ae)); diff --git a/contrib/libarchive/libarchive/test/test_write_format_mtree.c b/contrib/libarchive/libarchive/test/test_write_format_mtree.c index 4dcefbc8bda3..ed065f9c1340 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_mtree.c +++ b/contrib/libarchive/libarchive/test/test_write_format_mtree.c @@ -25,7 +25,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); static char buff[4096]; static struct { diff --git a/contrib/libarchive/libarchive/test/test_write_format_mtree_absolute_path.c b/contrib/libarchive/libarchive/test/test_write_format_mtree_absolute_path.c index e3972f1f1135..0ad73792add1 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_mtree_absolute_path.c +++ b/contrib/libarchive/libarchive/test/test_write_format_mtree_absolute_path.c @@ -25,7 +25,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); static char buff[4096]; diff --git a/contrib/libarchive/libarchive/test/test_write_format_mtree_classic.c b/contrib/libarchive/libarchive/test/test_write_format_mtree_classic.c index 9a75fdd71f52..f155df591895 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_mtree_classic.c +++ b/contrib/libarchive/libarchive/test/test_write_format_mtree_classic.c @@ -25,7 +25,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); static char buff[4096]; static struct { diff --git a/contrib/libarchive/libarchive/test/test_write_format_mtree_classic_indent.c b/contrib/libarchive/libarchive/test/test_write_format_mtree_classic_indent.c index 6d1c54911558..187cc2be0e4b 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_mtree_classic_indent.c +++ b/contrib/libarchive/libarchive/test/test_write_format_mtree_classic_indent.c @@ -25,7 +25,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); static char buff[4096]; static struct { diff --git a/contrib/libarchive/libarchive/test/test_write_format_mtree_fflags.c b/contrib/libarchive/libarchive/test/test_write_format_mtree_fflags.c index 820d86f70b3d..42a1d6522d7f 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_mtree_fflags.c +++ b/contrib/libarchive/libarchive/test/test_write_format_mtree_fflags.c @@ -25,7 +25,7 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); + #ifdef HAVE_SYS_STAT_H #include <sys/stat.h> #endif diff --git a/contrib/libarchive/libarchive/test/test_write_format_mtree_no_separator.c b/contrib/libarchive/libarchive/test/test_write_format_mtree_no_separator.c index faf42dd5245b..c7b64c1ba6a7 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_mtree_no_separator.c +++ b/contrib/libarchive/libarchive/test/test_write_format_mtree_no_separator.c @@ -25,7 +25,7 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); + #ifdef HAVE_SYS_STAT_H #include <sys/stat.h> #endif diff --git a/contrib/libarchive/libarchive/test/test_write_format_mtree_quoted_filename.c b/contrib/libarchive/libarchive/test/test_write_format_mtree_quoted_filename.c index 63e927a81ffe..aca904c83f56 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_mtree_quoted_filename.c +++ b/contrib/libarchive/libarchive/test/test_write_format_mtree_quoted_filename.c @@ -25,7 +25,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); static char buff[4096]; diff --git a/contrib/libarchive/libarchive/test/test_write_format_pax.c b/contrib/libarchive/libarchive/test/test_write_format_pax.c index 4538aac8241d..625a3742c044 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_pax.c +++ b/contrib/libarchive/libarchive/test/test_write_format_pax.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static char buff2[64]; diff --git a/contrib/libarchive/libarchive/test/test_write_format_shar_empty.c b/contrib/libarchive/libarchive/test/test_write_format_shar_empty.c index 3ca6cceed84d..b4dbce957523 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_shar_empty.c +++ b/contrib/libarchive/libarchive/test/test_write_format_shar_empty.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Check that an "empty" shar archive is correctly created as an empty file. diff --git a/contrib/libarchive/libarchive/test/test_write_format_tar.c b/contrib/libarchive/libarchive/test/test_write_format_tar.c index 1d607bdb064f..631bfa4ed639 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_tar.c +++ b/contrib/libarchive/libarchive/test/test_write_format_tar.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static char buff[1000000]; static char buff2[64]; diff --git a/contrib/libarchive/libarchive/test/test_write_format_tar_empty.c b/contrib/libarchive/libarchive/test/test_write_format_tar_empty.c index e45e382b1984..29912f3b2821 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_tar_empty.c +++ b/contrib/libarchive/libarchive/test/test_write_format_tar_empty.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Check that an "empty" tar archive is correctly created. diff --git a/contrib/libarchive/libarchive/test/test_write_format_tar_sparse.c b/contrib/libarchive/libarchive/test/test_write_format_tar_sparse.c index 54ac00988e3d..1568b0eadc29 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_tar_sparse.c +++ b/contrib/libarchive/libarchive/test/test_write_format_tar_sparse.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static char buff[1000000]; diff --git a/contrib/libarchive/libarchive/test/test_write_format_tar_ustar.c b/contrib/libarchive/libarchive/test/test_write_format_tar_ustar.c index f62415bb8b18..d86749fd41b0 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_tar_ustar.c +++ b/contrib/libarchive/libarchive/test/test_write_format_tar_ustar.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static int is_null(const char *p, size_t l) diff --git a/contrib/libarchive/libarchive/test/test_write_format_tar_v7tar.c b/contrib/libarchive/libarchive/test/test_write_format_tar_v7tar.c index 16909956878b..5fa5f4e21f29 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_tar_v7tar.c +++ b/contrib/libarchive/libarchive/test/test_write_format_tar_v7tar.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static int is_null(const char *p, size_t l) diff --git a/contrib/libarchive/libarchive/test/test_write_format_warc.c b/contrib/libarchive/libarchive/test/test_write_format_warc.c index 3a4c2da1edf1..bb9f2388095b 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_warc.c +++ b/contrib/libarchive/libarchive/test/test_write_format_warc.c @@ -24,7 +24,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); static void test_read(struct archive *a, char *buff, size_t used, char *filedata) { diff --git a/contrib/libarchive/libarchive/test/test_write_format_warc_empty.c b/contrib/libarchive/libarchive/test/test_write_format_warc_empty.c index 0bd31bd7f8cb..d66e85d33e68 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_warc_empty.c +++ b/contrib/libarchive/libarchive/test/test_write_format_warc_empty.c @@ -24,7 +24,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_write_format_warc_empty) { diff --git a/contrib/libarchive/libarchive/test/test_write_format_xar.c b/contrib/libarchive/libarchive/test/test_write_format_xar.c index 02fd2c0e35a7..f1f3032912a7 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_xar.c +++ b/contrib/libarchive/libarchive/test/test_write_format_xar.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static void test_xar(const char *option) diff --git a/contrib/libarchive/libarchive/test/test_write_format_xar_empty.c b/contrib/libarchive/libarchive/test/test_write_format_xar_empty.c index 97c080887e40..b3ba6994e9c9 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_xar_empty.c +++ b/contrib/libarchive/libarchive/test/test_write_format_xar_empty.c @@ -29,7 +29,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_write_format_xar_empty) { diff --git a/contrib/libarchive/libarchive/test/test_write_format_zip.c b/contrib/libarchive/libarchive/test/test_write_format_zip.c index f37e4e2777bf..54240eeb7afe 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_zip.c +++ b/contrib/libarchive/libarchive/test/test_write_format_zip.c @@ -30,7 +30,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * This test doesn't actually check that the zip writer is @@ -290,9 +289,11 @@ verify_contents(struct archive *a, int seeking, int content) assertEqualString("file", archive_entry_pathname(ae)); if (seeking) { assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae)); + assert(archive_entry_size_is_set(ae)); + assertEqualInt(8, archive_entry_size(ae)); + } else { + assertEqualInt(0, archive_entry_size_is_set(ae)); } - assert(archive_entry_size_is_set(ae)); - assertEqualInt(8, archive_entry_size(ae)); if (content) { assertEqualIntA(a, 8, archive_read_data(a, filedata, sizeof(filedata))); @@ -308,9 +309,11 @@ verify_contents(struct archive *a, int seeking, int content) assertEqualString("file2", archive_entry_pathname(ae)); if (seeking) { assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae)); + assertEqualInt(4, archive_entry_size(ae)); + assert(archive_entry_size_is_set(ae)); + } else { + assertEqualInt(0, archive_entry_size_is_set(ae)); } - assertEqualInt(4, archive_entry_size(ae)); - assert(archive_entry_size_is_set(ae)); if (content) { assertEqualIntA(a, 4, archive_read_data(a, filedata, sizeof(filedata))); @@ -374,10 +377,13 @@ verify_contents(struct archive *a, int seeking, int content) assertEqualInt(0, archive_entry_atime(ae)); assertEqualInt(0, archive_entry_ctime(ae)); assertEqualString("file_deflate", archive_entry_pathname(ae)); - if (seeking) + if (seeking) { assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae)); - assertEqualInt(8, archive_entry_size(ae)); - assert(archive_entry_size_is_set(ae)); + assertEqualInt(8, archive_entry_size(ae)); + assert(archive_entry_size_is_set(ae)); + } else { + assertEqualInt(0, archive_entry_size_is_set(ae)); + } if (content) { assertEqualIntA(a, 8, archive_read_data(a, filedata, sizeof(filedata))); @@ -392,10 +398,13 @@ verify_contents(struct archive *a, int seeking, int content) assertEqualInt(0, archive_entry_atime(ae)); assertEqualInt(0, archive_entry_ctime(ae)); assertEqualString("file2_deflate", archive_entry_pathname(ae)); - if (seeking) + if (seeking) { assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae)); - assertEqualInt(4, archive_entry_size(ae)); - assert(archive_entry_size_is_set(ae)); + assertEqualInt(4, archive_entry_size(ae)); + assert(archive_entry_size_is_set(ae)); + } else { + assertEqualInt(0, archive_entry_size_is_set(ae)); + } if (content) { assertEqualIntA(a, 4, archive_read_data(a, filedata, sizeof(filedata))); @@ -410,6 +419,7 @@ verify_contents(struct archive *a, int seeking, int content) assertEqualInt(0, archive_entry_ctime(ae)); assertEqualString("file3_deflate", archive_entry_pathname(ae)); if (seeking) { + assert(archive_entry_size_is_set(ae)); assertEqualInt(5, archive_entry_size(ae)); assertEqualInt(AE_IFREG | 0621, archive_entry_mode(ae)); } else { @@ -460,10 +470,13 @@ verify_contents(struct archive *a, int seeking, int content) assertEqualInt(0, archive_entry_atime(ae)); assertEqualInt(0, archive_entry_ctime(ae)); assertEqualString("file_stored", archive_entry_pathname(ae)); - if (seeking) + if (seeking) { assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae)); - assert(archive_entry_size_is_set(ae)); - assertEqualInt(8, archive_entry_size(ae)); + assert(archive_entry_size_is_set(ae)); + assertEqualInt(8, archive_entry_size(ae)); + } else { + assertEqualInt(0, archive_entry_size_is_set(ae)); + } if (content) { assertEqualIntA(a, 8, archive_read_data(a, filedata, sizeof(filedata))); @@ -478,10 +491,13 @@ verify_contents(struct archive *a, int seeking, int content) assertEqualInt(0, archive_entry_atime(ae)); assertEqualInt(0, archive_entry_ctime(ae)); assertEqualString("file2_stored", archive_entry_pathname(ae)); - if (seeking) + if (seeking) { assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae)); - assertEqualInt(4, archive_entry_size(ae)); - assert(archive_entry_size_is_set(ae)); + assertEqualInt(4, archive_entry_size(ae)); + assert(archive_entry_size_is_set(ae)); + } else { + assertEqualInt(0, archive_entry_size_is_set(ae)); + } if (content) { assertEqualIntA(a, 4, archive_read_data(a, filedata, sizeof(filedata))); diff --git a/contrib/libarchive/libarchive/test/test_write_format_zip64_stream.c b/contrib/libarchive/libarchive/test/test_write_format_zip64_stream.c new file mode 100644 index 000000000000..bed97894e8da --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_write_format_zip64_stream.c @@ -0,0 +1,276 @@ +/*- + * Copyright (c) 2003-2023 Tim Kientzle + * Copyright (c) 2008 Anselm Strauss + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "test.h" + +/* + * Detailed byte-for-byte verification of the format of a zip archive + * written in streaming mode with Zip64 extensions enabled. + */ + +static unsigned long +bitcrc32(unsigned long c, void *_p, size_t s) +{ + /* This is a drop-in replacement for crc32() from zlib. + * Libarchive should be able to correctly generate + * uncompressed zip archives (including correct CRCs) even + * when zlib is unavailable, and this function helps us verify + * that. Yes, this is very, very slow and unsuitable for + * production use, but it's correct, compact, and works well + * enough for this particular usage. Libarchive internally + * uses a much more efficient implementation. */ + const unsigned char *p = _p; + int bitctr; + + if (p == NULL) + return (0); + + for (; s > 0; --s) { + c ^= *p++; + for (bitctr = 8; bitctr > 0; --bitctr) { + if (c & 1) c = (c >> 1); + else c = (c >> 1) ^ 0xedb88320; + c ^= 0x80000000; + } + } + return (c); +} + +/* Quick and dirty: Read 2-byte and 4-byte integers from Zip file. */ +static unsigned i2(const unsigned char *p) { return ((p[0] & 0xff) | ((p[1] & 0xff) << 8)); } +static unsigned i4(const unsigned char *p) { return (i2(p) | (i2(p + 2) << 16)); } +/* We're only working with small values here; ignore the 4 high bytes. */ +static unsigned i8(const unsigned char *p) { return (i4(p)); } + +DEFINE_TEST(test_write_format_zip64_stream) +{ + struct archive *a; + struct archive_entry *ae; + size_t used, buffsize = 1000000; + unsigned long crc; + unsigned long compressed_size = 0; + int file_perm = 00644; + int zip_version = 45; + int zip_compression = 8; + short file_uid = 10, file_gid = 20; + unsigned char *buff, *buffend, *p; + unsigned char *central_header, *local_header, *eocd, *eocd_record; + unsigned char *extension_start, *extension_end; + unsigned char *data_start, *data_end; + char file_data[] = {'1', '2', '3', '4', '5', '6', '7', '8'}; + const char *file_name = "file"; + +#ifndef HAVE_ZLIB_H + zip_compression = 0; +#endif + + buff = malloc(buffsize); + + /* Create a new archive in memory. */ + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_zip(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_options(a, "zip:zip64")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_options(a, "zip:experimental")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, buffsize, &used)); + + assert((ae = archive_entry_new()) != NULL); + archive_entry_copy_pathname(ae, file_name); + archive_entry_set_mode(ae, AE_IFREG | file_perm); + archive_entry_set_uid(ae, file_uid); + archive_entry_set_gid(ae, file_gid); + archive_entry_set_mtime(ae, 0, 0); + assertEqualInt(0, archive_write_header(a, ae)); + archive_entry_free(ae); + assertEqualInt(8, archive_write_data(a, file_data, sizeof(file_data))); + assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + buffend = buff + used; + dumpfile("constructed.zip", buff, used); + + /* Verify "End of Central Directory" record. */ + /* Get address of end-of-central-directory record. */ + eocd_record = p = buffend - 22; /* Assumes there is no zip comment field. */ + failure("End-of-central-directory begins with PK\\005\\006 signature"); + assertEqualMem(p, "PK\005\006", 4); + failure("This must be disk 0"); + assertEqualInt(i2(p + 4), 0); + failure("Central dir must start on disk 0"); + assertEqualInt(i2(p + 6), 0); + failure("All central dir entries are on this disk"); + assertEqualInt(i2(p + 8), i2(p + 10)); + eocd = buff + i4(p + 12) + i4(p + 16); + failure("no zip comment"); + assertEqualInt(i2(p + 20), 0); + + /* Get address of first entry in central directory. */ + central_header = p = buff + i4(buffend - 6); + failure("Central file record at offset %d should begin with" + " PK\\001\\002 signature", + i4(buffend - 10)); + + /* Verify file entry in central directory. */ + assertEqualMem(p, "PK\001\002", 4); /* Signature */ + assertEqualInt(i2(p + 4), 3 * 256 + zip_version); /* Version made by */ + assertEqualInt(i2(p + 6), zip_version); /* Version needed to extract */ + assertEqualInt(i2(p + 8), 8); /* Flags */ + assertEqualInt(i2(p + 10), zip_compression); /* Compression method */ + assertEqualInt(i2(p + 12), 0); /* File time */ + assertEqualInt(i2(p + 14), 33); /* File date */ + crc = bitcrc32(0, file_data, sizeof(file_data)); + assertEqualInt(i4(p + 16), crc); /* CRC-32 */ + compressed_size = i4(p + 20); /* Compressed size */ + assertEqualInt(i4(p + 24), sizeof(file_data)); /* Uncompressed size */ + assertEqualInt(i2(p + 28), strlen(file_name)); /* Pathname length */ + /* assertEqualInt(i2(p + 30), 28); */ /* Extra field length: See below */ + assertEqualInt(i2(p + 32), 0); /* File comment length */ + assertEqualInt(i2(p + 34), 0); /* Disk number start */ + assertEqualInt(i2(p + 36), 0); /* Internal file attrs */ + assertEqualInt(i4(p + 38) >> 16 & 01777, file_perm); /* External file attrs */ + assertEqualInt(i4(p + 42), 0); /* Offset of local header */ + assertEqualMem(p + 46, file_name, strlen(file_name)); /* Pathname */ + p = extension_start = central_header + 46 + strlen(file_name); + extension_end = extension_start + i2(central_header + 30); + + assertEqualInt(i2(p), 0x7875); /* 'ux' extension header */ + assertEqualInt(i2(p + 2), 11); /* 'ux' size */ + /* TODO: verify 'ux' contents */ + p += 4 + i2(p + 2); + + assertEqualInt(i2(p), 0x5455); /* 'UT' extension header */ + assertEqualInt(i2(p + 2), 5); /* 'UT' size */ + assertEqualInt(p[4], 1); /* 'UT' flags */ + assertEqualInt(i4(p + 5), 0); /* 'UT' mtime */ + p += 4 + i2(p + 2); + + /* Note: We don't expect to see zip64 extension in the central + * directory, since the writer knows the actual full size by + * the time it is ready to write the central directory and has + * no reason to insert it then. Info-Zip seems to do the same + * thing. */ + + /* Just in case: Report any extra extensions. */ + while (p < extension_end) { + failure("Unexpected extension 0x%04X", i2(p)); + assert(0); + p += 4 + i2(p + 2); + } + + /* Should have run exactly to end of extra data. */ + assertEqualAddress(p, extension_end); + + assertEqualAddress(p, eocd); + + /* After Central dir, we find Zip64 eocd and Zip64 eocd locator. */ + assertEqualMem(p, "PK\006\006", 4); /* Zip64 eocd */ + assertEqualInt(i8(p + 4), 44); /* We're using v1 Zip64 eocd */ + assertEqualInt(i2(p + 12), 45); /* Written by Version 4.5 */ + assertEqualInt(i2(p + 14), 45); /* Needs version 4.5 to extract */ + assertEqualInt(i4(p + 16), 0); /* This is disk #0 */ + assertEqualInt(i4(p + 20), 0); /* Dir starts on disk #0 */ + assertEqualInt(i8(p + 24), 1); /* 1 entry on this disk */ + assertEqualInt(i8(p + 32), 1); /* 1 entry total */ + assertEqualInt(i8(p + 40), eocd - central_header); /* size of cd */ + assertEqualInt(i8(p + 48), central_header - buff); /* start of cd */ + p += 12 + i8(p + 4); + + assertEqualMem(p, "PK\006\007", 4); /* Zip64 eocd locator */ + assertEqualInt(i4(p + 4), 0); /* Zip64 eocd is on disk #0 */ + assertEqualInt(i8(p + 8), eocd - buff); /* Offset of Zip64 eocd */ + assertEqualInt(i4(p + 16), 1); /* 1 disk */ + p += 20; + + /* Regular EOCD immediately follows Zip64 records. */ + assertEqualAddress(p, eocd_record); + + /* Verify local header of file entry. */ + p = local_header = buff; + assertEqualMem(p, "PK\003\004", 4); /* Signature */ + assertEqualInt(i2(p + 4), zip_version); /* Version needed to extract */ + assertEqualInt(i2(p + 6), 8); /* Flags: bit 3 = length-at-end */ + assertEqualInt(i2(p + 8), zip_compression); /* Compression method */ + assertEqualInt(i2(p + 10), 0); /* File time */ + assertEqualInt(i2(p + 12), 33); /* File date */ + assertEqualInt(i4(p + 14), 0); /* CRC-32 */ + assertEqualInt(i4(p + 18), 0); /* Compressed size must be zero for length-at-end */ + assertEqualInt(i4(p + 22), 0); /* Uncompressed size must be zero for length-at-end */ + assertEqualInt(i2(p + 26), strlen(file_name)); /* Pathname length */ + assertEqualInt(i2(p + 28), 37); /* Extra field length */ + assertEqualMem(p + 30, file_name, strlen(file_name)); /* Pathname */ + p = extension_start = local_header + 30 + strlen(file_name); + extension_end = extension_start + i2(local_header + 28); + + assertEqualInt(i2(p), 0x7875); /* 'ux' extension header */ + assertEqualInt(i2(p + 2), 11); /* 'ux' size */ + assertEqualInt(p[4], 1); /* 'ux' version */ + assertEqualInt(p[5], 4); /* 'ux' uid size */ + assertEqualInt(i4(p + 6), file_uid); /* 'Ux' UID */ + assertEqualInt(p[10], 4); /* 'ux' gid size */ + assertEqualInt(i4(p + 11), file_gid); /* 'Ux' GID */ + p += 4 + i2(p + 2); + + assertEqualInt(i2(p), 0x5455); /* 'UT' extension header */ + assertEqualInt(i2(p + 2), 5); /* 'UT' size */ + assertEqualInt(p[4], 1); /* 'UT' flags */ + assertEqualInt(i4(p + 5), 0); /* 'UT' mtime */ + p += 4 + i2(p + 2); + + assertEqualInt(i2(p), 0x6c78); /* 'xl' experimental extension header */ + assertEqualInt(i2(p + 2), 9); /* size */ + assertEqualInt(p[4], 7); /* bitmap of included fields */ + assertEqualInt(i2(p + 5) >> 8, 3); /* system & version made by */ + assertEqualInt(i2(p + 7), 0); /* internal file attributes */ + assertEqualInt(i4(p + 9) >> 16 & 01777, file_perm); /* external file attributes */ + p += 4 + i2(p + 2); + + /* Just in case: Report any extra extensions. */ + while (p < extension_end) { + failure("Unexpected extension 0x%04X", i2(p)); + assert(0); + p += 4 + i2(p + 2); + } + + /* Should have run exactly to end of extra data. */ + assertEqualAddress(p, extension_end); + data_start = p; + + /* Data descriptor should follow compressed data. */ + while (p < central_header && memcmp(p, "PK\007\010", 4) != 0) + ++p; + data_end = p; + assertEqualInt(data_end - data_start, compressed_size); + assertEqualMem(p, "PK\007\010", 4); + assertEqualInt(i4(p + 4), crc); /* CRC-32 */ + assertEqualInt(i8(p + 8), compressed_size); /* compressed size */ + assertEqualInt(i8(p + 16), sizeof(file_data)); /* uncompressed size */ + + /* Central directory should immediately follow the only entry. */ + assertEqualAddress(p + 24, central_header); + + free(buff); +} diff --git a/contrib/libarchive/libarchive/test/test_write_format_zip_compression_store.c b/contrib/libarchive/libarchive/test/test_write_format_zip_compression_store.c index b52d170ccea0..fc764ac7af83 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_zip_compression_store.c +++ b/contrib/libarchive/libarchive/test/test_write_format_zip_compression_store.c @@ -28,7 +28,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD: head/lib/libarchive/test/test_write_format_zip_no_compression.c 201247 2009-12-30 05:59:21Z kientzle $"); /* File data */ static const char file_name[] = "file"; @@ -184,7 +183,7 @@ static void verify_uncompressed_contents(const char *buff, size_t used) assertEqualInt(i4(p + 20), sizeof(file_data1) + sizeof(file_data2)); /* Compressed size */ assertEqualInt(i4(p + 24), sizeof(file_data1) + sizeof(file_data2)); /* Uncompressed size */ assertEqualInt(i2(p + 28), strlen(file_name)); /* Pathname length */ - assertEqualInt(i2(p + 30), 28); /* Extra field length */ + assertEqualInt(i2(p + 30), 24); /* Extra field length */ assertEqualInt(i2(p + 32), 0); /* File comment length */ assertEqualInt(i2(p + 34), 0); /* Disk number start */ assertEqualInt(i2(p + 36), 0); /* Internal file attrs */ @@ -192,38 +191,33 @@ static void verify_uncompressed_contents(const char *buff, size_t used) assertEqualInt(i4(p + 42), 0); /* Offset of local header */ assertEqualMem(p + 46, file_name, strlen(file_name)); /* Pathname */ p = p + 46 + strlen(file_name); - assertEqualInt(i2(p), 0x5455); /* 'UT' extension header */ - assertEqualInt(i2(p + 2), 9); /* 'UT' size */ - assertEqualInt(p[4], 3); /* 'UT' flags */ - assertEqualInt(i4(p + 5), now); /* 'UT' mtime */ - assertEqualInt(i4(p + 9), now + 3); /* 'UT' atime */ - p = p + 4 + i2(p + 2); + assertEqualInt(i2(p), 0x7875); /* 'ux' extension header */ assertEqualInt(i2(p + 2), 11); /* 'ux' size */ /* TODO */ p = p + 4 + i2(p + 2); + assertEqualInt(i2(p), 0x5455); /* 'UT' extension header */ + assertEqualInt(i2(p + 2), 5); /* 'UT' size */ + assertEqualInt(p[4], 1); /* 'UT' flags */ + assertEqualInt(i4(p + 5), now); /* 'UT' mtime */ + p = p + 4 + i2(p + 2); + /* Verify local header of file entry. */ local_header = q = buff; assertEqualMem(q, "PK\003\004", 4); /* Signature */ assertEqualInt(i2(q + 4), 10); /* Version needed to extract */ - assertEqualInt(i2(q + 6), 8); /* Flags */ + assertEqualInt(i2(q + 6), 8); /* Flags: bit 3 = length-at-end. Required because CRC32 is unknown */ assertEqualInt(i2(q + 8), 0); /* Compression method */ assertEqualInt(i2(q + 10), (tm->tm_hour * 2048) + (tm->tm_min * 32) + (tm->tm_sec / 2)); /* File time */ assertEqualInt(i2(q + 12), ((tm->tm_year - 80) * 512) + ((tm->tm_mon + 1) * 32) + tm->tm_mday); /* File date */ assertEqualInt(i4(q + 14), 0); /* CRC-32 */ - assertEqualInt(i4(q + 18), sizeof(file_data1) + sizeof(file_data2)); /* Compressed size */ - assertEqualInt(i4(q + 22), sizeof(file_data1) + sizeof(file_data2)); /* Uncompressed size */ + assertEqualInt(i4(q + 18), 0); /* Compressed size, must be zero because of length-at-end */ + assertEqualInt(i4(q + 22), 0); /* Uncompressed size, must be zero because of length-at-end */ assertEqualInt(i2(q + 26), strlen(file_name)); /* Pathname length */ assertEqualInt(i2(q + 28), 41); /* Extra field length */ assertEqualMem(q + 30, file_name, strlen(file_name)); /* Pathname */ extra_start = q = q + 30 + strlen(file_name); - assertEqualInt(i2(q), 0x5455); /* 'UT' extension header */ - assertEqualInt(i2(q + 2), 9); /* 'UT' size */ - assertEqualInt(q[4], 3); /* 'UT' flags */ - assertEqualInt(i4(q + 5), now); /* 'UT' mtime */ - assertEqualInt(i4(q + 9), now + 3); /* 'UT' atime */ - q = q + 4 + i2(q + 2); assertEqualInt(i2(q), 0x7875); /* 'ux' extension header */ assertEqualInt(i2(q + 2), 11); /* 'ux' size */ @@ -234,6 +228,13 @@ static void verify_uncompressed_contents(const char *buff, size_t used) assertEqualInt(i4(q + 11), file_gid); /* 'Ux' GID */ q = q + 4 + i2(q + 2); + assertEqualInt(i2(q), 0x5455); /* 'UT' extension header */ + assertEqualInt(i2(q + 2), 9); /* 'UT' size */ + assertEqualInt(q[4], 3); /* 'UT' flags */ + assertEqualInt(i4(q + 5), now); /* 'UT' mtime */ + assertEqualInt(i4(q + 9), now + 3); /* 'UT' atime */ + q = q + 4 + i2(q + 2); + assertEqualInt(i2(q), 0x6c78); /* 'xl' experimental extension header */ assertEqualInt(i2(q + 2), 9); /* size */ assertEqualInt(q[4], 7); /* Bitmap of fields included. */ @@ -270,7 +271,7 @@ static void verify_uncompressed_contents(const char *buff, size_t used) assertEqualInt(i4(p + 20), 0); /* Compressed size */ assertEqualInt(i4(p + 24), 0); /* Uncompressed size */ assertEqualInt(i2(p + 28), strlen(folder_name)); /* Pathname length */ - assertEqualInt(i2(p + 30), 28); /* Extra field length */ + assertEqualInt(i2(p + 30), 24); /* Extra field length */ assertEqualInt(i2(p + 32), 0); /* File comment length */ assertEqualInt(i2(p + 34), 0); /* Disk number start */ assertEqualInt(i2(p + 36), 0); /* Internal file attrs */ @@ -278,12 +279,7 @@ static void verify_uncompressed_contents(const char *buff, size_t used) assertEqualInt(i4(p + 42), q - buff); /* Offset of local header */ assertEqualMem(p + 46, folder_name, strlen(folder_name)); /* Pathname */ p = p + 46 + strlen(folder_name); - assertEqualInt(i2(p), 0x5455); /* 'UT' extension header */ - assertEqualInt(i2(p + 2), 9); /* 'UT' size */ - assertEqualInt(p[4], 5); /* 'UT' flags */ - assertEqualInt(i4(p + 5), now); /* 'UT' mtime */ - assertEqualInt(i4(p + 9), now + 5); /* 'UT' atime */ - p = p + 4 + i2(p + 2); + assertEqualInt(i2(p), 0x7875); /* 'ux' extension header */ assertEqualInt(i2(p + 2), 11); /* 'ux' size */ assertEqualInt(p[4], 1); /* 'ux' version */ @@ -291,7 +287,13 @@ static void verify_uncompressed_contents(const char *buff, size_t used) assertEqualInt(i4(p + 6), folder_uid); /* 'ux' UID */ assertEqualInt(p[10], 4); /* 'ux' gid size */ assertEqualInt(i4(p + 11), folder_gid); /* 'ux' GID */ - /*p = p + 4 + i2(p + 2);*/ + p = p + 4 + i2(p + 2); + + assertEqualInt(i2(p), 0x5455); /* 'UT' extension header */ + assertEqualInt(i2(p + 2), 5); /* 'UT' size */ + assertEqualInt(p[4], 1); /* 'UT' flags */ + assertEqualInt(i4(p + 5), now); /* 'UT' mtime */ + p = p + 4 + i2(p + 2); /* Verify local header of folder entry. */ local_header = q; @@ -308,12 +310,7 @@ static void verify_uncompressed_contents(const char *buff, size_t used) assertEqualInt(i2(q + 28), 41); /* Extra field length */ assertEqualMem(q + 30, folder_name, strlen(folder_name)); /* Pathname */ extra_start = q = q + 30 + strlen(folder_name); - assertEqualInt(i2(q), 0x5455); /* 'UT' extension header */ - assertEqualInt(i2(q + 2), 9); /* 'UT' size */ - assertEqualInt(q[4], 5); /* 'UT' flags */ - assertEqualInt(i4(q + 5), now); /* 'UT' mtime */ - assertEqualInt(i4(q + 9), now + 5); /* 'UT' atime */ - q = q + 4 + i2(q + 2); + assertEqualInt(i2(q), 0x7875); /* 'ux' extension header */ assertEqualInt(i2(q + 2), 11); /* 'ux' size */ assertEqualInt(q[4], 1); /* 'ux' version */ @@ -323,6 +320,13 @@ static void verify_uncompressed_contents(const char *buff, size_t used) assertEqualInt(i4(q + 11), folder_gid); /* 'ux' GID */ q = q + 4 + i2(q + 2); + assertEqualInt(i2(q), 0x5455); /* 'UT' extension header */ + assertEqualInt(i2(q + 2), 9); /* 'UT' size */ + assertEqualInt(q[4], 5); /* 'UT' flags */ + assertEqualInt(i4(q + 5), now); /* 'UT' mtime */ + assertEqualInt(i4(q + 9), now + 5); /* 'UT' atime */ + q = q + 4 + i2(q + 2); + assertEqualInt(i2(q), 0x6c78); /* 'xl' experimental extension header */ assertEqualInt(i2(q + 2), 9); /* size */ assertEqualInt(q[4], 7); /* bitmap of fields */ diff --git a/contrib/libarchive/libarchive/test/test_write_format_zip_empty.c b/contrib/libarchive/libarchive/test/test_write_format_zip_empty.c index 628ccb18194e..410304d44120 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_zip_empty.c +++ b/contrib/libarchive/libarchive/test/test_write_format_zip_empty.c @@ -28,7 +28,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_write_format_zip_empty) { diff --git a/contrib/libarchive/libarchive/test/test_write_format_zip_empty_zip64.c b/contrib/libarchive/libarchive/test/test_write_format_zip_empty_zip64.c index 8f9975b2102c..f56bf578e4cc 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_zip_empty_zip64.c +++ b/contrib/libarchive/libarchive/test/test_write_format_zip_empty_zip64.c @@ -28,7 +28,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD: head/lib/libarchive/test/test_write_format_zip_empty.c 201247 2009-12-30 05:59:21Z kientzle $"); DEFINE_TEST(test_write_format_zip_empty_zip64) { diff --git a/contrib/libarchive/libarchive/test/test_write_format_zip_entry_size_unset.c b/contrib/libarchive/libarchive/test/test_write_format_zip_entry_size_unset.c index 13b5f1b2db1a..10c191f7ce7d 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_zip_entry_size_unset.c +++ b/contrib/libarchive/libarchive/test/test_write_format_zip_entry_size_unset.c @@ -25,7 +25,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); /* File data */ static const char file_name[] = "file"; @@ -152,7 +151,7 @@ static void verify_contents(const char *zip_buff, size_t size) /* Check file name length */ assertEqualInt(i2(central_directory + 28), strlen(file_name)); /* Check extra field length */ - assertEqualInt(i2(central_directory + 30), 20); + assertEqualInt(i2(central_directory + 30), 15); /* Check file comment length */ assertEqualInt(i2(central_directory + 32), 0); /* Check disk number where file starts */ @@ -188,7 +187,7 @@ static void verify_contents(const char *zip_buff, size_t size) /* Check pathname length */ assertEqualInt(i2(local_file_header + 26), strlen(file_name)); /* Check extra field length */ - assertEqualInt(i2(local_file_header + 28), 20); + assertEqualInt(i2(local_file_header + 28), 15); /* Check path name match */ assertEqualMem(local_file_header + 30, file_name, strlen(file_name)); @@ -210,7 +209,7 @@ static void verify_contents(const char *zip_buff, size_t size) assertEqualInt(i4(data_descriptor + 12), sizeof(file_data1) + sizeof(file_data2)); /* Get folder entry in central directory */ - const char *central_directory_folder_entry = central_directory + 46 + 20 + strlen(file_name); + const char *central_directory_folder_entry = central_directory + 46 + i2(local_file_header + 28) + strlen(file_name); /* Get start of folder entry */ const char *local_folder_header = data_descriptor + 16; @@ -234,7 +233,7 @@ static void verify_contents(const char *zip_buff, size_t size) /* Check path name length */ assertEqualInt(i2(central_directory_folder_entry + 28), strlen(folder_name)); /* Check extra field length */ - assertEqualInt(i2(central_directory_folder_entry + 30), 20); + assertEqualInt(i2(central_directory_folder_entry + 30), 15); /* Check file comment length */ assertEqualInt(i2(central_directory_folder_entry + 32), 0); /* Check disk number start */ @@ -265,11 +264,11 @@ static void verify_contents(const char *zip_buff, size_t size) /* Check path name length */ assertEqualInt(i2(local_folder_header + 26), strlen(folder_name)); /* Check extra field length */ - assertEqualInt(i2(local_folder_header + 28), 20); + assertEqualInt(i2(local_folder_header + 28), 15); /* Check path name */ assertEqualMem(local_folder_header + 30, folder_name, strlen(folder_name)); - const char *post_local_folder = local_folder_header + 30 + strlen(folder_name) + 20; + const char *post_local_folder = local_folder_header + 30 + i2(local_folder_header + 28) + strlen(folder_name); assertEqualMem(post_local_folder, central_directory, 4); } diff --git a/contrib/libarchive/libarchive/test/test_write_format_zip_file.c b/contrib/libarchive/libarchive/test/test_write_format_zip_file.c index 4ccc30360691..d4f1b9b22054 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_zip_file.c +++ b/contrib/libarchive/libarchive/test/test_write_format_zip_file.c @@ -29,7 +29,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD: head/lib/libarchive/test/test_write_format_zip.c 201247 2009-12-30 05:59:21Z kientzle $"); /* * Detailed byte-for-byte verification of the format of a zip archive @@ -170,17 +169,17 @@ DEFINE_TEST(test_write_format_zip_file) p = extension_start = central_header + 46 + strlen(file_name); extension_end = extension_start + i2(central_header + 30); + assertEqualInt(i2(p), 0x7875); /* 'ux' extension header */ + assertEqualInt(i2(p + 2), 11); /* 'ux' size */ + /* TODO: verify 'ux' contents */ + p += 4 + i2(p + 2); + assertEqualInt(i2(p), 0x5455); /* 'UT' extension header */ assertEqualInt(i2(p + 2), 5); /* 'UT' size */ assertEqualInt(p[4], 1); /* 'UT' flags */ assertEqualInt(i4(p + 5), t); /* 'UT' mtime */ p += 4 + i2(p + 2); - assertEqualInt(i2(p), 0x7875); /* 'ux' extension header */ - assertEqualInt(i2(p + 2), 11); /* 'ux' size */ - /* TODO: verify 'ux' contents */ - p += 4 + i2(p + 2); - /* Just in case: Report any extra extensions. */ while (p < extension_end) { failure("Unexpected extension 0x%04X", i2(p)); @@ -189,36 +188,30 @@ DEFINE_TEST(test_write_format_zip_file) } /* Should have run exactly to end of extra data. */ - assert(p == extension_end); + assertEqualAddress(p, extension_end); - assert(p == eocd); + assertEqualAddress(p, eocd); /* Regular EOCD immediately follows central directory. */ - assert(p == eocd_record); + assertEqualAddress(p, eocd_record); /* Verify local header of file entry. */ p = local_header = buff; assertEqualMem(p, "PK\003\004", 4); /* Signature */ assertEqualInt(i2(p + 4), zip_version); /* Version needed to extract */ - assertEqualInt(i2(p + 6), 8); /* Flags */ + assertEqualInt(i2(p + 6), 8); /* Flags: bit 3 = length-at-end */ assertEqualInt(i2(p + 8), zip_compression); /* Compression method */ assertEqualInt(i2(p + 10), (tm->tm_hour * 2048) + (tm->tm_min * 32) + (tm->tm_sec / 2)); /* File time */ assertEqualInt(i2(p + 12), ((tm->tm_year - 80) * 512) + ((tm->tm_mon + 1) * 32) + tm->tm_mday); /* File date */ - assertEqualInt(i4(p + 14), 0); /* CRC-32 */ - /* assertEqualInt(i4(p + 18), sizeof(file_data)); */ /* Compressed size */ - /* assertEqualInt(i4(p + 22), sizeof(file_data)); */ /* Uncompressed size not stored because we're using length-at-end. */ + assertEqualInt(i4(p + 14), 0); /* CRC-32 stored as zero because we're using length-at-end */ + assertEqualInt(i4(p + 18), 0); /* Compressed size stored as zero because we're using length-at-end. */ + assertEqualInt(i4(p + 22), 0); /* Uncompressed size stored as zero because we're using length-at-end. */ assertEqualInt(i2(p + 26), strlen(file_name)); /* Pathname length */ assertEqualInt(i2(p + 28), 37); /* Extra field length */ assertEqualMem(p + 30, file_name, strlen(file_name)); /* Pathname */ p = extension_start = local_header + 30 + strlen(file_name); extension_end = extension_start + i2(local_header + 28); - assertEqualInt(i2(p), 0x5455); /* 'UT' extension header */ - assertEqualInt(i2(p + 2), 5); /* size */ - assertEqualInt(p[4], 1); /* 'UT' flags */ - assertEqualInt(i4(p + 5), t); /* 'UT' mtime */ - p += 4 + i2(p + 2); - assertEqualInt(i2(p), 0x7875); /* 'ux' extension header */ assertEqualInt(i2(p + 2), 11); /* size */ assertEqualInt(p[4], 1); /* 'ux' version */ @@ -228,6 +221,12 @@ DEFINE_TEST(test_write_format_zip_file) assertEqualInt(i4(p + 11), file_gid); /* 'Ux' GID */ p += 4 + i2(p + 2); + assertEqualInt(i2(p), 0x5455); /* 'UT' extension header */ + assertEqualInt(i2(p + 2), 5); /* size */ + assertEqualInt(p[4], 1); /* 'UT' flags */ + assertEqualInt(i4(p + 5), t); /* 'UT' mtime */ + p += 4 + i2(p + 2); + assertEqualInt(i2(p), 0x6c78); /* 'xl' experimental extension block */ assertEqualInt(i2(p + 2), 9); /* size */ assertEqualInt(p[4], 7); /* bitmap of fields in this block */ @@ -244,18 +243,18 @@ DEFINE_TEST(test_write_format_zip_file) } /* Should have run exactly to end of extra data. */ - assert(p == extension_end); + assertEqualAddress(p, extension_end); /* Data descriptor should follow compressed data. */ while (p < central_header && memcmp(p, "PK\007\010", 4) != 0) ++p; assertEqualMem(p, "PK\007\010", 4); assertEqualInt(i4(p + 4), crc); /* CRC-32 */ - /* assertEqualInt(i4(p + 8), ???); */ /* compressed size */ + assertEqualInt(i4(p + 8), p - extension_end); /* compressed size */ assertEqualInt(i4(p + 12), sizeof(file_data)); /* uncompressed size */ /* Central directory should immediately follow the only entry. */ - assert(p + 16 == central_header); + assertEqualAddress(p + 16, central_header); free(buff); } diff --git a/contrib/libarchive/libarchive/test/test_write_format_zip_file_zip64.c b/contrib/libarchive/libarchive/test/test_write_format_zip_file_zip64.c index 6a00fe14c389..f06f2aad3c95 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_zip_file_zip64.c +++ b/contrib/libarchive/libarchive/test/test_write_format_zip_file_zip64.c @@ -29,7 +29,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD: head/lib/libarchive/test/test_write_format_zip.c 201247 2009-12-30 05:59:21Z kientzle $"); /* * Detailed byte-for-byte verification of the format of a zip archive @@ -173,17 +172,17 @@ DEFINE_TEST(test_write_format_zip_file_zip64) p = extension_start = central_header + 46 + strlen(file_name); extension_end = extension_start + i2(central_header + 30); + assertEqualInt(i2(p), 0x7875); /* 'ux' extension header */ + assertEqualInt(i2(p + 2), 11); /* 'ux' size */ + /* TODO: verify 'ux' contents */ + p += 4 + i2(p + 2); + assertEqualInt(i2(p), 0x5455); /* 'UT' extension header */ assertEqualInt(i2(p + 2), 5); /* 'UT' size */ assertEqualInt(p[4], 1); /* 'UT' flags */ assertEqualInt(i4(p + 5), t); /* 'UT' mtime */ p += 4 + i2(p + 2); - assertEqualInt(i2(p), 0x7875); /* 'ux' extension header */ - assertEqualInt(i2(p + 2), 11); /* 'ux' size */ - /* TODO: verify 'ux' contents */ - p += 4 + i2(p + 2); - /* Note: We don't expect to see zip64 extension in the central * directory, since the writer knows the actual full size by * the time it is ready to write the central directory and has @@ -198,9 +197,9 @@ DEFINE_TEST(test_write_format_zip_file_zip64) } /* Should have run exactly to end of extra data. */ - assert(p == extension_end); + assertEqualAddress(p, extension_end); - assert(p == eocd); + assertEqualAddress(p, eocd); /* After Central dir, we find Zip64 eocd and Zip64 eocd locator. */ assertEqualMem(p, "PK\006\006", 4); /* Zip64 eocd */ @@ -222,31 +221,25 @@ DEFINE_TEST(test_write_format_zip_file_zip64) p += 20; /* Regular EOCD immediately follows Zip64 records. */ - assert(p == eocd_record); + assertEqualAddress(p, eocd_record); /* Verify local header of file entry. */ p = local_header = buff; assertEqualMem(p, "PK\003\004", 4); /* Signature */ assertEqualInt(i2(p + 4), zip_version); /* Version needed to extract */ - assertEqualInt(i2(p + 6), 8); /* Flags */ + assertEqualInt(i2(p + 6), 8); /* Flags: bit 3 = length-at-end */ assertEqualInt(i2(p + 8), zip_compression); /* Compression method */ assertEqualInt(i2(p + 10), (tm->tm_hour * 2048) + (tm->tm_min * 32) + (tm->tm_sec / 2)); /* File time */ assertEqualInt(i2(p + 12), ((tm->tm_year - 80) * 512) + ((tm->tm_mon + 1) * 32) + tm->tm_mday); /* File date */ - assertEqualInt(i4(p + 14), 0); /* CRC-32 */ - /* assertEqualInt(i4(p + 18), sizeof(file_data)); */ /* Compressed size */ - /* assertEqualInt(i4(p + 22), sizeof(file_data)); */ /* Uncompressed size not stored because we're using length-at-end. */ + assertEqualInt(i4(p + 14), 0); /* CRC-32 must be 0 because of length-at-end */ + assertEqualInt(i4(p + 18), 0); /* Compressed size must be 0 because of length-at-end */ + assertEqualInt(i4(p + 22), 0); /* Uncompressed size must be 0 because of length-at-end. */ assertEqualInt(i2(p + 26), strlen(file_name)); /* Pathname length */ - assertEqualInt(i2(p + 28), 57); /* Extra field length */ + assertEqualInt(i2(p + 28), 37); /* Extra field length */ assertEqualMem(p + 30, file_name, strlen(file_name)); /* Pathname */ p = extension_start = local_header + 30 + strlen(file_name); extension_end = extension_start + i2(local_header + 28); - assertEqualInt(i2(p), 0x5455); /* 'UT' extension header */ - assertEqualInt(i2(p + 2), 5); /* 'UT' size */ - assertEqualInt(p[4], 1); /* 'UT' flags */ - assertEqualInt(i4(p + 5), t); /* 'UT' mtime */ - p += 4 + i2(p + 2); - assertEqualInt(i2(p), 0x7875); /* 'ux' extension header */ assertEqualInt(i2(p + 2), 11); /* 'ux' size */ assertEqualInt(p[4], 1); /* 'ux' version */ @@ -256,10 +249,10 @@ DEFINE_TEST(test_write_format_zip_file_zip64) assertEqualInt(i4(p + 11), file_gid); /* 'Ux' GID */ p += 4 + i2(p + 2); - assertEqualInt(i2(p), 0x0001); /* Zip64 extension header */ - assertEqualInt(i2(p + 2), 16); /* size */ - assertEqualInt(i8(p + 4), 8); /* uncompressed file size */ - /* compressed file size we can't verify here */ + assertEqualInt(i2(p), 0x5455); /* 'UT' extension header */ + assertEqualInt(i2(p + 2), 5); /* 'UT' size */ + assertEqualInt(p[4], 1); /* 'UT' flags */ + assertEqualInt(i4(p + 5), t); /* 'UT' mtime */ p += 4 + i2(p + 2); assertEqualInt(i2(p), 0x6c78); /* 'xl' experimental extension header */ @@ -278,18 +271,18 @@ DEFINE_TEST(test_write_format_zip_file_zip64) } /* Should have run exactly to end of extra data. */ - assert(p == extension_end); + assertEqualAddress(p, extension_end); /* Data descriptor should follow compressed data. */ while (p < central_header && memcmp(p, "PK\007\010", 4) != 0) ++p; assertEqualMem(p, "PK\007\010", 4); assertEqualInt(i4(p + 4), crc); /* CRC-32 */ - /* assertEqualInt(i8(p + 8), ???); */ /* compressed size */ + assertEqualInt(i8(p + 8), p - extension_end); /* compressed size */ assertEqualInt(i8(p + 16), sizeof(file_data)); /* uncompressed size */ /* Central directory should immediately follow the only entry. */ - assert(p + 24 == central_header); + assertEqualAddress(p + 24, central_header); free(buff); } diff --git a/contrib/libarchive/libarchive/test/test_write_format_zip_large.c b/contrib/libarchive/libarchive/test/test_write_format_zip_large.c index e3594c97d398..90bd16aaa581 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_zip_large.c +++ b/contrib/libarchive/libarchive/test/test_write_format_zip_large.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #include <errno.h> #include <stdlib.h> @@ -273,22 +272,21 @@ static int64_t test_sizes[] = { 2 * GB - 1, 2 * GB, 2 * GB + 1, /* Test for 32-bit unsigned overflow. */ 4 * GB - 1, 4 * GB, 4 * GB + 1, - /* And beyond ... because we can. */ - 16 * GB - 1, 16 * GB, 16 * GB + 1, - 64 * GB - 1, 64 * GB, 64 * GB + 1, - 256 * GB - 1, 256 * GB, 256 * GB + 1, - 1 * TB, + /* And one larger sample */ + 5 * GB, 0 }; static void -verify_large_zip(struct archive *a, struct fileblocks *fileblocks) +verify_large_zip(struct archive *a, struct fileblocks *fileblocks, int seeking) { char namebuff[64]; struct archive_entry *ae; int i; + (void)seeking; /* UNUSED */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_set_options(a, "zip:ignorecrc32")); assertEqualIntA(a, ARCHIVE_OK, @@ -311,7 +309,13 @@ verify_large_zip(struct archive *a, struct fileblocks *fileblocks) archive_read_next_header(a, &ae)); snprintf(namebuff, sizeof(namebuff), "file_%d", i); assertEqualString(namebuff, archive_entry_pathname(ae)); - assertEqualInt(test_sizes[i], archive_entry_size(ae)); + if (seeking) { + assert(archive_entry_size_is_set(ae)); + assertEqualInt(test_sizes[i], archive_entry_size(ae)); + } else { + assertEqualInt(0, archive_entry_size_is_set(ae)); + } + /* TODO: Read to end of data, verify length */ } assertEqualIntA(a, 0, archive_read_next_header(a, &ae)); assertEqualString("lastfile", archive_entry_pathname(ae)); @@ -345,6 +349,7 @@ DEFINE_TEST(test_write_format_zip_large) */ a = archive_write_new(); archive_write_set_format_zip(a); + /* TODO: Repeat this entire test suite with default compression */ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_options(a, "zip:compression=store")); assertEqualIntA(a, ARCHIVE_OK, @@ -398,7 +403,7 @@ DEFINE_TEST(test_write_format_zip_large) a = archive_read_new(); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip_seekable(a)); - verify_large_zip(a, fileblocks); + verify_large_zip(a, fileblocks, 1); assertEqualInt(ARCHIVE_OK, archive_read_free(a)); /* @@ -407,7 +412,7 @@ DEFINE_TEST(test_write_format_zip_large) a = archive_read_new(); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip_streamable(a)); - verify_large_zip(a, fileblocks); + verify_large_zip(a, fileblocks, 0); assertEqualInt(ARCHIVE_OK, archive_read_free(a)); /* @@ -430,7 +435,7 @@ DEFINE_TEST(test_write_format_zip_large) /* Verify regular end-of-central-directory record */ eocd = p - 22; assertEqualMem(eocd, "PK\005\006\0\0\0\0", 8); - assertEqualMem(eocd + 8, "\021\0\021\0", 4); /* 17 entries total */ + assertEqualMem(eocd + 8, "\010\0\010\0", 4); /* 8 entries total */ cd_size = le32(eocd + 12); /* Start of CD offset should be 0xffffffff */ assertEqualMem(eocd + 16, "\xff\xff\xff\xff", 4); @@ -450,8 +455,8 @@ DEFINE_TEST(test_write_format_zip_large) assertEqualMem(zip64_eocd + 14, "\055\0", 2); // Requires version: 45 assertEqualMem(zip64_eocd + 16, "\0\0\0\0", 4); // This disk assertEqualMem(zip64_eocd + 20, "\0\0\0\0", 4); // Total disks - assertEqualInt(17, le64(zip64_eocd + 24)); // Entries on this disk - assertEqualInt(17, le64(zip64_eocd + 32)); // Total entries + assertEqualInt(8, le64(zip64_eocd + 24)); // Entries on this disk + assertEqualInt(8, le64(zip64_eocd + 32)); // Total entries cd_size = le64(zip64_eocd + 40); cd_start = p - (fileblocks->filesize - le64(zip64_eocd + 48)); diff --git a/contrib/libarchive/libarchive/test/test_write_format_zip_stream.c b/contrib/libarchive/libarchive/test/test_write_format_zip_stream.c new file mode 100644 index 000000000000..aff6a31ae171 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_write_format_zip_stream.c @@ -0,0 +1,247 @@ +/*- + * Copyright (c) 2003-2023 Tim Kientzle + * Copyright (c) 2008 Anselm Strauss + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "test.h" + +/* + * Detailed byte-for-byte verification of the format of a zip archive + * written in streaming mode WITHOUT Zip64 extensions enabled. + */ + +static unsigned long +bitcrc32(unsigned long c, void *_p, size_t s) +{ + /* This is a drop-in replacement for crc32() from zlib. + * Libarchive should be able to correctly generate + * uncompressed zip archives (including correct CRCs) even + * when zlib is unavailable, and this function helps us verify + * that. Yes, this is very, very slow and unsuitable for + * production use, but it's correct, compact, and works well + * enough for this particular usage. Libarchive internally + * uses a much more efficient implementation. */ + const unsigned char *p = _p; + int bitctr; + + if (p == NULL) + return (0); + + for (; s > 0; --s) { + c ^= *p++; + for (bitctr = 8; bitctr > 0; --bitctr) { + if (c & 1) c = (c >> 1); + else c = (c >> 1) ^ 0xedb88320; + c ^= 0x80000000; + } + } + return (c); +} + +/* Quick and dirty: Read 2-byte and 4-byte integers from Zip file. */ +static unsigned i2(const unsigned char *p) { return ((p[0] & 0xff) | ((p[1] & 0xff) << 8)); } +static unsigned i4(const unsigned char *p) { return (i2(p) | (i2(p + 2) << 16)); } + +DEFINE_TEST(test_write_format_zip_stream) +{ + struct archive *a; + struct archive_entry *ae; + size_t used, buffsize = 1000000; + unsigned long crc; + unsigned long compressed_size = 0; + int file_perm = 00644; + int zip_version = 20; + int zip_compression = 8; + short file_uid = 10, file_gid = 20; + unsigned char *buff, *buffend, *p; + unsigned char *central_header, *local_header, *eocd, *eocd_record; + unsigned char *extension_start, *extension_end; + unsigned char *data_start, *data_end; + char file_data[] = {'1', '2', '3', '4', '5', '6', '7', '8'}; + const char *file_name = "file"; + +#ifndef HAVE_ZLIB_H + zip_compression = 0; +#endif + + buff = malloc(buffsize); + + /* Create a new archive in memory. */ + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_zip(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_options(a, "zip:!zip64")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, buffsize, &used)); + + assert((ae = archive_entry_new()) != NULL); + archive_entry_copy_pathname(ae, file_name); + archive_entry_set_mode(ae, AE_IFREG | file_perm); + archive_entry_set_uid(ae, file_uid); + archive_entry_set_gid(ae, file_gid); + archive_entry_set_mtime(ae, 0, 0); + assertEqualInt(0, archive_write_header(a, ae)); + archive_entry_free(ae); + assertEqualInt(8, archive_write_data(a, file_data, sizeof(file_data))); + assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + buffend = buff + used; + dumpfile("constructed.zip", buff, used); + + /* Verify "End of Central Directory" record. */ + /* Get address of end-of-central-directory record. */ + eocd_record = p = buffend - 22; /* Assumes there is no zip comment field. */ + failure("End-of-central-directory begins with PK\\005\\006 signature"); + assertEqualMem(p, "PK\005\006", 4); + failure("This must be disk 0"); + assertEqualInt(i2(p + 4), 0); + failure("Central dir must start on disk 0"); + assertEqualInt(i2(p + 6), 0); + failure("All central dir entries are on this disk"); + assertEqualInt(i2(p + 8), i2(p + 10)); + eocd = buff + i4(p + 12) + i4(p + 16); + failure("no zip comment"); + assertEqualInt(i2(p + 20), 0); + + /* Get address of first entry in central directory. */ + central_header = p = buff + i4(buffend - 6); + failure("Central file record at offset %d should begin with" + " PK\\001\\002 signature", + i4(buffend - 10)); + + /* Verify file entry in central directory. */ + assertEqualMem(p, "PK\001\002", 4); /* Signature */ + assertEqualInt(i2(p + 4), 3 * 256 + zip_version); /* Version made by */ + assertEqualInt(i2(p + 6), zip_version); /* Version needed to extract */ + assertEqualInt(i2(p + 8), 8); /* Flags */ + assertEqualInt(i2(p + 10), zip_compression); /* Compression method */ + assertEqualInt(i2(p + 12), 0); /* File time */ + assertEqualInt(i2(p + 14), 33); /* File date */ + crc = bitcrc32(0, file_data, sizeof(file_data)); + assertEqualInt(i4(p + 16), crc); /* CRC-32 */ + compressed_size = i4(p + 20); /* Compressed size */ + assertEqualInt(i4(p + 24), sizeof(file_data)); /* Uncompressed size */ + assertEqualInt(i2(p + 28), strlen(file_name)); /* Pathname length */ + /* assertEqualInt(i2(p + 30), 28); */ /* Extra field length: See below */ + assertEqualInt(i2(p + 32), 0); /* File comment length */ + assertEqualInt(i2(p + 34), 0); /* Disk number start */ + assertEqualInt(i2(p + 36), 0); /* Internal file attrs */ + assertEqualInt(i4(p + 38) >> 16 & 01777, file_perm); /* External file attrs */ + assertEqualInt(i4(p + 42), 0); /* Offset of local header */ + assertEqualMem(p + 46, file_name, strlen(file_name)); /* Pathname */ + p = extension_start = central_header + 46 + strlen(file_name); + extension_end = extension_start + i2(central_header + 30); + + assertEqualInt(i2(p), 0x7875); /* 'ux' extension header */ + assertEqualInt(i2(p + 2), 11); /* 'ux' size */ + assertEqualInt(p[4], 1); /* 'ux' version */ + assertEqualInt(p[5], 4); /* 'ux' uid size */ + assertEqualInt(i4(p + 6), file_uid); /* 'Ux' UID */ + assertEqualInt(p[10], 4); /* 'ux' gid size */ + assertEqualInt(i4(p + 11), file_gid); /* 'Ux' GID */ + p += 4 + i2(p + 2); + + assertEqualInt(i2(p), 0x5455); /* 'UT' extension header */ + assertEqualInt(i2(p + 2), 5); /* 'UT' size */ + assertEqualInt(p[4], 1); /* 'UT' flags */ + assertEqualInt(i4(p + 5), 0); /* 'UT' mtime */ + p += 4 + i2(p + 2); + + /* Note: We don't expect to see zip64 extension in the central + * directory, since the writer knows the actual full size by + * the time it is ready to write the central directory and has + * no reason to insert it then. Info-Zip seems to do the same + * thing. */ + + /* Just in case: Report any extra extensions. */ + while (p < extension_end) { + failure("Unexpected extension 0x%04X", i2(p)); + assert(0); + p += 4 + i2(p + 2); + } + + /* Should have run exactly to end of extra data. */ + assert(p == extension_end); + + assert(p == eocd); + assert(p == eocd_record); + + /* Verify local header of file entry. */ + p = local_header = buff; + assertEqualMem(p, "PK\003\004", 4); /* Signature */ + assertEqualInt(i2(p + 4), zip_version); /* Version needed to extract */ + assertEqualInt(i2(p + 6), 8); /* Flags */ + assertEqualInt(i2(p + 8), zip_compression); /* Compression method */ + assertEqualInt(i2(p + 10), 0); /* File time */ + assertEqualInt(i2(p + 12), 33); /* File date */ + assertEqualInt(i4(p + 14), 0); /* CRC-32 */ + assertEqualInt(i4(p + 18), 0); /* Compressed size */ + assertEqualInt(i4(p + 22), 0); /* Uncompressed size */ + assertEqualInt(i2(p + 26), strlen(file_name)); /* Pathname length */ + assertEqualInt(i2(p + 28), 24); /* Extra field length */ + assertEqualMem(p + 30, file_name, strlen(file_name)); /* Pathname */ + p = extension_start = local_header + 30 + strlen(file_name); + extension_end = extension_start + i2(local_header + 28); + + assertEqualInt(i2(p), 0x7875); /* 'ux' extension header */ + assertEqualInt(i2(p + 2), 11); /* 'ux' size */ + assertEqualInt(p[4], 1); /* 'ux' version */ + assertEqualInt(p[5], 4); /* 'ux' uid size */ + assertEqualInt(i4(p + 6), file_uid); /* 'Ux' UID */ + assertEqualInt(p[10], 4); /* 'ux' gid size */ + assertEqualInt(i4(p + 11), file_gid); /* 'Ux' GID */ + p += 4 + i2(p + 2); + + assertEqualInt(i2(p), 0x5455); /* 'UT' extension header */ + assertEqualInt(i2(p + 2), 5); /* 'UT' size */ + assertEqualInt(p[4], 1); /* 'UT' flags */ + assertEqualInt(i4(p + 5), 0); /* 'UT' mtime */ + p += 4 + i2(p + 2); + + /* Just in case: Report any extra extensions. */ + while (p < extension_end) { + failure("Unexpected extension 0x%04X", i2(p)); + assert(0); + p += 4 + i2(p + 2); + } + + /* Should have run exactly to end of extra data. */ + assert(p == extension_end); + data_start = p; + + /* Data descriptor should follow compressed data. */ + while (p < central_header && memcmp(p, "PK\007\010", 4) != 0) + ++p; + data_end = p; + assertEqualInt(data_end - data_start, compressed_size); + assertEqualMem(p, "PK\007\010", 4); + assertEqualInt(i4(p + 4), crc); /* CRC-32 */ + assertEqualInt(i4(p + 8), compressed_size); /* compressed size */ + assertEqualInt(i4(p + 12), sizeof(file_data)); /* uncompressed size */ + + /* Central directory should immediately follow the data descriptor. */ + assert(p + 16 == central_header); + + free(buff); +} diff --git a/contrib/libarchive/libarchive/test/test_write_format_zip_zip64.c b/contrib/libarchive/libarchive/test/test_write_format_zip_zip64.c index c5f00a2e5d8d..259cdc47d3ae 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_zip_zip64.c +++ b/contrib/libarchive/libarchive/test/test_write_format_zip_zip64.c @@ -24,7 +24,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); static void verify_zip_filesize(uint64_t size, int expected) diff --git a/contrib/libarchive/libarchive/test/test_write_open_memory.c b/contrib/libarchive/libarchive/test/test_write_open_memory.c index c2cf6a5933f7..2ebe01e413e6 100644 --- a/contrib/libarchive/libarchive/test/test_write_open_memory.c +++ b/contrib/libarchive/libarchive/test/test_write_open_memory.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* Try to force archive_write_open_memory.c to write past the end of an array. */ static unsigned char buff[16384]; diff --git a/contrib/libarchive/libarchive/test/test_write_read_format_zip.c b/contrib/libarchive/libarchive/test/test_write_read_format_zip.c index 4f39489b5b53..828b092c7b3f 100644 --- a/contrib/libarchive/libarchive/test/test_write_read_format_zip.c +++ b/contrib/libarchive/libarchive/test/test_write_read_format_zip.c @@ -29,7 +29,6 @@ */ #include "test.h" -__FBSDID("$FreeBSD: head/lib/libarchive/test/test_write_format_zip.c 201247 2009-12-30 05:59:21Z kientzle $"); /* * These tests verify that our reader can read files @@ -288,8 +287,12 @@ verify_contents(struct archive *a, int seeking, int improved_streaming) if (seeking || improved_streaming) { assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae)); } - assertEqualInt(8, archive_entry_size(ae)); - assert(archive_entry_size_is_set(ae)); + if (seeking) { + assertEqualInt(8, archive_entry_size(ae)); + assert(archive_entry_size_is_set(ae)); + } else { + assertEqualInt(0, archive_entry_size_is_set(ae)); + } assertEqualIntA(a, 8, archive_read_data(a, filedata, sizeof(filedata))); assertEqualMem(filedata, "12345678", 8); @@ -305,8 +308,12 @@ verify_contents(struct archive *a, int seeking, int improved_streaming) if (seeking || improved_streaming) { assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae)); } - assertEqualInt(4, archive_entry_size(ae)); - assert(archive_entry_size_is_set(ae)); + if (seeking) { + assertEqualInt(4, archive_entry_size(ae)); + assert(archive_entry_size_is_set(ae)); + } else { + assertEqualInt(0, archive_entry_size_is_set(ae)); + } assertEqualIntA(a, 4, archive_read_data(a, filedata, sizeof(filedata))); assertEqualMem(filedata, "1234", 4); @@ -323,6 +330,7 @@ verify_contents(struct archive *a, int seeking, int improved_streaming) } if (seeking) { assertEqualInt(5, archive_entry_size(ae)); + assert(archive_entry_size_is_set(ae)); } else { assertEqualInt(0, archive_entry_size_is_set(ae)); } @@ -356,8 +364,9 @@ verify_contents(struct archive *a, int seeking, int improved_streaming) assertEqualInt(0, archive_entry_atime(ae)); assertEqualInt(0, archive_entry_ctime(ae)); assertEqualString("dir/", archive_entry_pathname(ae)); - if (seeking || improved_streaming) + if (seeking || improved_streaming) { assertEqualInt(AE_IFDIR | 0755, archive_entry_mode(ae)); + } assertEqualInt(0, archive_entry_size(ae)); assert(archive_entry_size_is_set(ae)); assertEqualIntA(a, 0, archive_read_data(a, filedata, 10)); @@ -378,8 +387,12 @@ verify_contents(struct archive *a, int seeking, int improved_streaming) if (seeking || improved_streaming) { assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae)); } - assertEqualInt(8, archive_entry_size(ae)); - assert(archive_entry_size_is_set(ae)); + if (seeking) { + assertEqualInt(8, archive_entry_size(ae)); + assert(archive_entry_size_is_set(ae)); + } else { + assertEqualInt(0, archive_entry_size_is_set(ae)); + } assertEqualIntA(a, 8, archive_read_data(a, filedata, sizeof(filedata))); assertEqualMem(filedata, "12345678", 8); @@ -395,8 +408,12 @@ verify_contents(struct archive *a, int seeking, int improved_streaming) if (seeking || improved_streaming) { assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae)); } - assertEqualInt(4, archive_entry_size(ae)); - assert(archive_entry_size_is_set(ae)); + if (seeking) { + assertEqualInt(4, archive_entry_size(ae)); + assert(archive_entry_size_is_set(ae)); + } else { + assertEqualInt(0, archive_entry_size_is_set(ae)); + } assertEqualIntA(a, 4, archive_read_data(a, filedata, sizeof(filedata))); assertEqualMem(filedata, "1234", 4); @@ -413,6 +430,7 @@ verify_contents(struct archive *a, int seeking, int improved_streaming) } if (seeking) { assertEqualInt(5, archive_entry_size(ae)); + assert(archive_entry_size_is_set(ae)); } else { assertEqualInt(0, archive_entry_size_is_set(ae)); } @@ -468,9 +486,12 @@ verify_contents(struct archive *a, int seeking, int improved_streaming) if (seeking || improved_streaming) { assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae)); } - assert(archive_entry_size_is_set(ae)); - assert(archive_entry_size_is_set(ae)); - assertEqualInt(8, archive_entry_size(ae)); + if (seeking) { + assert(archive_entry_size_is_set(ae)); + assertEqualInt(8, archive_entry_size(ae)); + } else { + assertEqualInt(0, archive_entry_size_is_set(ae)); + } assertEqualIntA(a, 8, archive_read_data(a, filedata, sizeof(filedata))); assertEqualMem(filedata, "12345678", 8); @@ -486,8 +507,12 @@ verify_contents(struct archive *a, int seeking, int improved_streaming) if (seeking || improved_streaming) { assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae)); } - assertEqualInt(4, archive_entry_size(ae)); - assert(archive_entry_size_is_set(ae)); + if (seeking) { + assertEqualInt(4, archive_entry_size(ae)); + assert(archive_entry_size_is_set(ae)); + } else { + assertEqualInt(0, archive_entry_size_is_set(ae)); + } assertEqualIntA(a, 4, archive_read_data(a, filedata, sizeof(filedata))); assertEqualMem(filedata, "ACEG", 4); @@ -503,6 +528,7 @@ verify_contents(struct archive *a, int seeking, int improved_streaming) assertEqualInt(AE_IFREG | 0621, archive_entry_mode(ae)); if (seeking) { assertEqualInt(5, archive_entry_size(ae)); + assert(archive_entry_size_is_set(ae)); } else { assertEqualInt(0, archive_entry_size_is_set(ae)); } diff --git a/contrib/libarchive/libarchive/test/test_xattr_platform.c b/contrib/libarchive/libarchive/test/test_xattr_platform.c index df3f81a5b3fd..3f16cac34154 100644 --- a/contrib/libarchive/libarchive/test/test_xattr_platform.c +++ b/contrib/libarchive/libarchive/test/test_xattr_platform.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_xattr_platform) { diff --git a/contrib/libarchive/libarchive/test/test_zip_filename_encoding.c b/contrib/libarchive/libarchive/test/test_zip_filename_encoding.c index 54cd00630b8e..448fb9b1d4ef 100644 --- a/contrib/libarchive/libarchive/test/test_zip_filename_encoding.c +++ b/contrib/libarchive/libarchive/test/test_zip_filename_encoding.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #include <locale.h> @@ -71,7 +70,9 @@ DEFINE_TEST(test_zip_filename_encoding_UTF8) /* * Verify that UTF-8 filenames are correctly stored without * hdrcharset=UTF-8 option. + * Skip on Windows where we default to OEMCP */ +#if !defined(_WIN32) || defined(__CYGWIN__) a = archive_write_new(); assertEqualInt(ARCHIVE_OK, archive_write_set_format_zip(a)); assertEqualInt(ARCHIVE_OK, @@ -90,6 +91,7 @@ DEFINE_TEST(test_zip_filename_encoding_UTF8) * which indicates the filename charset is UTF-8. */ assertEqualInt(0x08, buff[7]); assertEqualMem(buff + 30, "\xD0\xBF\xD1\x80\xD0\xB8", 6); +#endif /* * Verify that A bit 11 of general purpose flag is not set diff --git a/contrib/libarchive/libarchive_fe/err.c b/contrib/libarchive/libarchive_fe/err.c index 8c860350bc3e..f6dcf44af347 100644 --- a/contrib/libarchive/libarchive_fe/err.c +++ b/contrib/libarchive/libarchive_fe/err.c @@ -25,8 +25,6 @@ */ #include "lafe_platform.h" -__FBSDID("$FreeBSD$"); - #ifdef HAVE_STDARG_H #include <stdarg.h> #endif diff --git a/contrib/libarchive/libarchive_fe/err.h b/contrib/libarchive/libarchive_fe/err.h index 2f84c2fe6fe0..f4a66350a669 100644 --- a/contrib/libarchive/libarchive_fe/err.h +++ b/contrib/libarchive/libarchive_fe/err.h @@ -29,10 +29,12 @@ #define LAFE_ERR_H #if defined(__GNUC__) && (__GNUC__ > 2 || \ - (__GNUC__ == 2 && __GNUC_MINOR__ >= 5)) -#define __LA_DEAD __attribute__((__noreturn__)) + (__GNUC__ == 2 && __GNUC_MINOR__ >= 5)) +#define __LA_NORETURN __attribute__((__noreturn__)) +#elif defined(_MSC_VER) +#define __LA_NORETURN __declspec(noreturn) #else -#define __LA_DEAD +#define __LA_NORETURN #endif #if defined(__GNUC__) && (__GNUC__ > 2 || \ @@ -48,8 +50,7 @@ #endif void lafe_warnc(int code, const char *fmt, ...) __LA_PRINTFLIKE(2, 3); -void lafe_errc(int eval, int code, const char *fmt, ...) __LA_DEAD - __LA_PRINTFLIKE(3, 4); +__LA_NORETURN void lafe_errc(int eval, int code, const char *fmt, ...) __LA_PRINTFLIKE(3, 4); const char * lafe_getprogname(void); void lafe_setprogname(const char *name, const char *defaultname); diff --git a/contrib/libarchive/libarchive_fe/lafe_platform.h b/contrib/libarchive/libarchive_fe/lafe_platform.h index 38e100d78da8..6de8f898a22f 100644 --- a/contrib/libarchive/libarchive_fe/lafe_platform.h +++ b/contrib/libarchive/libarchive_fe/lafe_platform.h @@ -21,8 +21,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ /* @@ -42,14 +40,4 @@ #include "config.h" #endif -/* Get a real definition for __FBSDID if we can */ -#if HAVE_SYS_CDEFS_H -#include <sys/cdefs.h> -#endif - -/* If not, define it so as to avoid dangling semicolons. */ -#ifndef __FBSDID -#define __FBSDID(a) struct _undefined_hack -#endif - #endif diff --git a/contrib/libarchive/libarchive_fe/line_reader.c b/contrib/libarchive/libarchive_fe/line_reader.c index c7c4694eeb82..7f0429ece3cf 100644 --- a/contrib/libarchive/libarchive_fe/line_reader.c +++ b/contrib/libarchive/libarchive_fe/line_reader.c @@ -26,8 +26,6 @@ */ #include "lafe_platform.h" -__FBSDID("$FreeBSD$"); - #include <errno.h> #include <stdio.h> #include <stdlib.h> diff --git a/contrib/libarchive/libarchive_fe/passphrase.c b/contrib/libarchive/libarchive_fe/passphrase.c index 1cae6a7bc80a..9d95d527067b 100644 --- a/contrib/libarchive/libarchive_fe/passphrase.c +++ b/contrib/libarchive/libarchive_fe/passphrase.c @@ -50,8 +50,6 @@ #include "lafe_platform.h" -__FBSDID("$FreeBSD$"); - #include <errno.h> #ifdef HAVE_STDLIB_H #include <stdlib.h> @@ -331,7 +329,7 @@ lafe_readpassphrase(const char *prompt, char *buf, size_t bufsiz) break; default: lafe_errc(1, errno, "Couldn't read passphrase"); - break; + /* NOTREACHED */ } } return (p); diff --git a/contrib/libarchive/tar/bsdtar.1 b/contrib/libarchive/tar/bsdtar.1 index 1b78fbc04943..e570d2a48a01 100644 --- a/contrib/libarchive/tar/bsdtar.1 +++ b/contrib/libarchive/tar/bsdtar.1 @@ -23,9 +23,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" -.Dd December 1, 2022 +.Dd March 1, 2024 .Dt TAR 1 .Os .Sh NAME @@ -274,6 +272,15 @@ will be used instead. On create, this sets the group name that will be stored in the archive; the name will not be verified against the system group database. +.It Fl Fl group Ar name Ns Op : Ns Ar gid +Use the provided group, if +.Ar gid +is not provided, +.Ar name +can be either a group name or numeric id. +See the +.Fl Fl gname +option for details. .It Fl H (c and r modes only) Symbolic links named on the command line will be followed; the @@ -403,6 +410,8 @@ This is the reverse of and the default behavior in c, r, and u modes or if .Nm is run in x mode as root. +Currently supported only for pax formats +(including "pax restricted", the default tar format for bsdtar.) .It Fl n , Fl Fl norecurse , Fl Fl no-recursion Do not operate recursively on the content of directories. .It Fl Fl newer Ar date @@ -646,16 +655,56 @@ use as many threads as there are CPU cores on the system. .It Cm zstd:frame-per-file Start a new compression frame at the beginning of each file in the archive. -.It Cm zstd:min-frame-size Ns = Ns Ar N +.It Cm zstd:min-frame-in Ns = Ns Ar N In combination with .Cm zstd:frame-per-file , -do not start a new compression frame unless the current frame is at least +do not start a new compression frame unless the uncompressed size of +the current frame is at least .Ar N bytes. -.It Cm zstd:max-frame-size Ns = Ns Ar N -Start a new compression frame as soon as the current frame exceeds +The number may be followed by +.Li k / Li kB , +.Li M / Li MB , +or +.Li G / Li GB +to indicate kilobytes, megabytes or gigabytes respectively. +.It Cm zstd:min-frame-out Ns = Ns Ar N , Cm zstd:min-frame-size Ns = Ns Ar N +In combination with +.Cm zstd:frame-per-file , +do not start a new compression frame unless the compressed size of the +current frame is at least .Ar N bytes. +The number may be followed by +.Li k / Li kB , +.Li M / Li MB , +or +.Li G / Li GB +to indicate kilobytes, megabytes or gigabytes respectively. +.It Cm zstd:max-frame-in Ns = Ns Ar N , Cm zstd:max-frame-size Ns = Ns Ar N +Start a new compression frame as soon as possible after the +uncompressed size of the current frame exceeds +.Ar N +bytes. +The number may be followed by +.Li k / Li kB , +.Li M / Li MB , +or +.Li G / Li GB +to indicate kilobytes, megabytes or gigabytes respectively. +Values less than 1,024 will be rejected. +.It Cm zstd:max-frame-out Ns = Ns Ar N +Start a new compression frame as soon as possible after the compressed +size of the current frame exceeds +.Ar N +bytes. +The number may be followed by +.Li k / Li kB , +.Li M / Li MB , +or +.Li G / Li GB +to indicate kilobytes, megabytes or gigabytes respectively. +Values less than 1,024 will be rejected. .It Cm lzop:compression-level A decimal integer from 1 to 9 specifying the lzop compression level. .It Cm xz:compression-level @@ -774,7 +823,7 @@ This works similar to the conv=sparse option of dd. Modify file or archive member names according to .Pa pattern . The pattern has the format -.Ar /old/new/ Ns Op ghHprRsS +.Ar /old/new/ Ns Op bghHprRsS where .Ar old is a basic regular expression, @@ -796,6 +845,9 @@ of symbolic links. The optional trailing p specifies that after a successful substitution the original path name and the new path name should be printed to standard error. +The optional trailing b specifies that the substitution should be +matched from the beginning of the string rather than from right after the +position at which the previous matching substitution ended. Optional trailing H, R, or S characters suppress substitutions for hardlink targets, regular filenames, or symlink targets, respectively. @@ -901,6 +953,15 @@ the name is not verified against the system user database. Pipe the input (in x or t mode) or the output (in c mode) through .Pa program instead of using the builtin compression support. +.It Fl Fl owner Ar name Ns Op : Ns Ar uid +Use the provided user, if +.Ar uid +is not provided, +.Ar name +can be either an username or numeric id. +See the +.Fl Fl uname +option for details. .It Fl v , Fl Fl verbose Produce verbose output. In create and extract modes, diff --git a/contrib/libarchive/tar/bsdtar.c b/contrib/libarchive/tar/bsdtar.c index bff71d742586..b070e0faeb66 100644 --- a/contrib/libarchive/tar/bsdtar.c +++ b/contrib/libarchive/tar/bsdtar.c @@ -24,7 +24,6 @@ */ #include "bsdtar_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_PARAM_H #include <sys/param.h> @@ -114,11 +113,11 @@ need_report(void) } #endif -static void long_help(void) __LA_DEAD; +static __LA_NORETURN void long_help(void); static void only_mode(struct bsdtar *, const char *opt, const char *valid); static void set_mode(struct bsdtar *, char opt); -static void version(void) __LA_DEAD; +static __LA_NORETURN void version(void); /* A basic set of security flags to request from libarchive. */ #define SECURITY \ @@ -155,7 +154,7 @@ main(int argc, char **argv) char compression, compression2; const char *compression_name, *compression2_name; const char *compress_program; - char *tptr; + char *tptr, *uptr; char possible_help_request; char buff[16]; @@ -382,6 +381,36 @@ main(int argc, char **argv) case OPTION_GNAME: /* cpio */ bsdtar->gname = bsdtar->argument; break; + case OPTION_GROUP: /* GNU tar */ + errno = 0; + tptr = NULL; + + uptr = strchr(bsdtar->argument, ':'); + if(uptr != NULL) { + if(uptr[1] == 0) { + lafe_errc(1, 0, "Invalid argument to --group (missing id after :)"); + } + uptr[0] = 0; + uptr++; + t = (int)strtol(uptr, &tptr, 10); + if (errno || t < 0 || *uptr == '\0' || + tptr == NULL || *tptr != '\0') { + lafe_errc(1, 0, "Invalid argument to --group (%s is not a number)", uptr); + } else { + bsdtar->gid = t; + } + bsdtar->gname = bsdtar->argument; + } else { + t = (int)strtol(bsdtar->argument, &tptr, 10); + if (errno || t < 0 || *(bsdtar->argument) == '\0' || + tptr == NULL || *tptr != '\0') { + bsdtar->gname = bsdtar->argument; + } else { + bsdtar->gid = t; + bsdtar->gname = ""; + } + } + break; case OPTION_GRZIP: if (compression != '\0') lafe_errc(1, 0, @@ -400,8 +429,7 @@ main(int argc, char **argv) break; case OPTION_HELP: /* GNU tar, others */ long_help(); - exit(0); - break; + /* NOTREACHED*/ case OPTION_HFS_COMPRESSION: /* Mac OS X v10.6 or later */ bsdtar->extract_flags |= ARCHIVE_EXTRACT_HFS_COMPRESSION_FORCED; @@ -626,8 +654,43 @@ main(int argc, char **argv) ARCHIVE_READDISK_NO_TRAVERSE_MOUNTS; break; case OPTION_OPTIONS: + if (bsdtar->option_options != NULL) { + lafe_warnc(0, + "Ignoring previous option '%s', separate multiple options with commas", + bsdtar->option_options); + } bsdtar->option_options = bsdtar->argument; break; + case OPTION_OWNER: /* GNU tar */ + errno = 0; + tptr = NULL; + + uptr = strchr(bsdtar->argument, ':'); + if(uptr != NULL) { + if(uptr[1] == 0) { + lafe_errc(1, 0, "Invalid argument to --owner (missing id after :)"); + } + uptr[0] = 0; + uptr++; + t = (int)strtol(uptr, &tptr, 10); + if (errno || t < 0 || *uptr == '\0' || + tptr == NULL || *tptr != '\0') { + lafe_errc(1, 0, "Invalid argument to --owner (%s is not a number)", uptr); + } else { + bsdtar->uid = t; + } + bsdtar->uname = bsdtar->argument; + } else { + t = (int)strtol(bsdtar->argument, &tptr, 10); + if (errno || t < 0 || *(bsdtar->argument) == '\0' || + tptr == NULL || *tptr != '\0') { + bsdtar->uname = bsdtar->argument; + } else { + bsdtar->uid = t; + bsdtar->uname = ""; + } + } + break; #if 0 /* * The common BSD -P option is not necessary, since @@ -670,7 +733,7 @@ main(int argc, char **argv) bsdtar->extract_flags |= ARCHIVE_EXTRACT_SPARSE; break; case 's': /* NetBSD pax-as-tar */ -#if defined(HAVE_REGEX_H) || defined(HAVE_PCREPOSIX_H) +#if defined(HAVE_REGEX_H) || defined(HAVE_PCREPOSIX_H) || defined(HAVE_PCRE2POSIX_H) add_substitution(bsdtar, bsdtar->argument); #else lafe_warnc(0, @@ -738,7 +801,7 @@ main(int argc, char **argv) break; case OPTION_VERSION: /* GNU convention */ version(); - break; + /* NOTREACHED */ #if 0 /* * The -W longopt feature is handled inside of @@ -804,7 +867,6 @@ main(int argc, char **argv) /* If no "real" mode was specified, treat -h as --help. */ if ((bsdtar->mode == '\0') && possible_help_request) { long_help(); - exit(0); } /* Otherwise, a mode is required. */ @@ -950,7 +1012,7 @@ main(int argc, char **argv) } archive_match_free(bsdtar->matching); -#if defined(HAVE_REGEX_H) || defined(HAVE_PCREPOSIX_H) +#if defined(HAVE_REGEX_H) || defined(HAVE_PCREPOSIX_H) || defined(HAVE_PCRE2POSIX_H) cleanup_substitution(bsdtar); #endif cset_free(bsdtar->cset); diff --git a/contrib/libarchive/tar/bsdtar.h b/contrib/libarchive/tar/bsdtar.h index df4cc1a28885..22056c7920c4 100644 --- a/contrib/libarchive/tar/bsdtar.h +++ b/contrib/libarchive/tar/bsdtar.h @@ -21,8 +21,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ #ifndef BSDTAR_H_INCLUDED @@ -145,6 +143,7 @@ enum { OPTION_FORMAT, OPTION_GID, OPTION_GNAME, + OPTION_GROUP, OPTION_GRZIP, OPTION_HELP, OPTION_HFS_COMPRESSION, @@ -179,6 +178,7 @@ enum { OPTION_OLDER_MTIME_THAN, OPTION_ONE_FILE_SYSTEM, OPTION_OPTIONS, + OPTION_OWNER, OPTION_PASSPHRASE, OPTION_POSIX, OPTION_READ_SPARSE, @@ -208,10 +208,10 @@ void tar_mode_r(struct bsdtar *bsdtar); void tar_mode_t(struct bsdtar *bsdtar); void tar_mode_u(struct bsdtar *bsdtar); void tar_mode_x(struct bsdtar *bsdtar); -void usage(void) __LA_DEAD; +__LA_NORETURN void usage(void); int yes(const char *fmt, ...) __LA_PRINTF(1, 2); -#if defined(HAVE_REGEX_H) || defined(HAVE_PCREPOSIX_H) +#if defined(HAVE_REGEX_H) || defined(HAVE_PCREPOSIX_H) || defined(HAVE_PCRE2POSIX_H) void add_substitution(struct bsdtar *, const char *); int apply_substitution(struct bsdtar *, const char *, char **, int, int); void cleanup_substitution(struct bsdtar *); diff --git a/contrib/libarchive/tar/bsdtar_platform.h b/contrib/libarchive/tar/bsdtar_platform.h index c5342b44ba60..a4f37d95e9b3 100644 --- a/contrib/libarchive/tar/bsdtar_platform.h +++ b/contrib/libarchive/tar/bsdtar_platform.h @@ -21,8 +21,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ /* @@ -46,16 +44,6 @@ #include "bsdtar_windows.h" #endif -/* Get a real definition for __FBSDID if we can */ -#if HAVE_SYS_CDEFS_H -#include <sys/cdefs.h> -#endif - -/* If not, define it so as to avoid dangling semicolons. */ -#ifndef __FBSDID -#define __FBSDID(a) struct _undefined_hack -#endif - #ifdef HAVE_LIBARCHIVE /* If we're using the platform libarchive, include system headers. */ #include <archive.h> @@ -121,12 +109,14 @@ /* How to mark functions that don't return. */ /* This facilitates use of some newer static code analysis tools. */ -#undef __LA_DEAD +#undef __LA_NORETURN #if defined(__GNUC__) && (__GNUC__ > 2 || \ - (__GNUC__ == 2 && __GNUC_MINOR__ >= 5)) -#define __LA_DEAD __attribute__((__noreturn__)) -#else -#define __LA_DEAD + (__GNUC__ == 2 && __GNUC_MINOR__ >= 5)) +#define __LA_NORETURN __attribute__((__noreturn__)) +#elif defined(_MSC_VER) +#define __LA_NORETURN __declspec(noreturn) +#else +#define __LA_NORETURN #endif #endif /* !BSDTAR_PLATFORM_H_INCLUDED */ diff --git a/contrib/libarchive/tar/cmdline.c b/contrib/libarchive/tar/cmdline.c index d49e5b0d16e7..72292e8f27f3 100644 --- a/contrib/libarchive/tar/cmdline.c +++ b/contrib/libarchive/tar/cmdline.c @@ -28,7 +28,6 @@ */ #include "bsdtar_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_ERRNO_H #include <errno.h> @@ -94,6 +93,7 @@ static const struct bsdtar_option { { "format", 1, OPTION_FORMAT }, { "gid", 1, OPTION_GID }, { "gname", 1, OPTION_GNAME }, + { "group", 1, OPTION_GROUP }, { "grzip", 0, OPTION_GRZIP }, { "gunzip", 0, 'z' }, { "gzip", 0, 'z' }, @@ -142,6 +142,7 @@ static const struct bsdtar_option { { "older-than", 1, OPTION_OLDER_CTIME_THAN }, { "one-file-system", 0, OPTION_ONE_FILE_SYSTEM }, { "options", 1, OPTION_OPTIONS }, + { "owner", 1, OPTION_OWNER }, { "passphrase", 1, OPTION_PASSPHRASE }, { "posix", 0, OPTION_POSIX }, { "preserve-permissions", 0, 'p' }, diff --git a/contrib/libarchive/tar/creation_set.c b/contrib/libarchive/tar/creation_set.c index cfc5a642aed3..5cd1232b764c 100644 --- a/contrib/libarchive/tar/creation_set.c +++ b/contrib/libarchive/tar/creation_set.c @@ -24,7 +24,6 @@ */ #include "bsdtar_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_STDLIB_H #include <stdlib.h> diff --git a/contrib/libarchive/tar/read.c b/contrib/libarchive/tar/read.c index 94616f279e65..a7f14a07bb35 100644 --- a/contrib/libarchive/tar/read.c +++ b/contrib/libarchive/tar/read.c @@ -24,7 +24,6 @@ */ #include "bsdtar_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> diff --git a/contrib/libarchive/tar/subst.c b/contrib/libarchive/tar/subst.c index 7f3d1819984f..9747abb906c4 100644 --- a/contrib/libarchive/tar/subst.c +++ b/contrib/libarchive/tar/subst.c @@ -24,14 +24,15 @@ */ #include "bsdtar_platform.h" -__FBSDID("$FreeBSD$"); -#if defined(HAVE_REGEX_H) || defined(HAVE_PCREPOSIX_H) +#if defined(HAVE_REGEX_H) || defined(HAVE_PCREPOSIX_H) || defined(HAVE_PCRE2POSIX_H) #include "bsdtar.h" #include <errno.h> -#ifdef HAVE_PCREPOSIX_H +#if defined(HAVE_PCREPOSIX_H) #include <pcreposix.h> +#elif defined(HAVE_PCRE2POSIX_H) +#include <pcre2posix.h> #else #include <regex.h> #endif @@ -48,7 +49,7 @@ struct subst_rule { struct subst_rule *next; regex_t re; char *result; - unsigned int global:1, print:1, regular:1, symlink:1, hardlink:1; + unsigned int global:1, print:1, regular:1, symlink:1, hardlink:1, from_begin:1; }; struct substitution { @@ -128,9 +129,14 @@ add_substitution(struct bsdtar *bsdtar, const char *rule_text) rule->regular = 1; /* Rewrite regular filenames. */ rule->symlink = 1; /* Rewrite symlink targets. */ rule->hardlink = 1; /* Rewrite hardlink targets. */ + rule->from_begin = 0; /* Don't match from start. */ while (*++end_pattern) { switch (*end_pattern) { + case 'b': + case 'B': + rule->from_begin = 1; + break; case 'g': case 'G': rule->global = 1; @@ -159,6 +165,7 @@ add_substitution(struct bsdtar *bsdtar, const char *rule_text) break; default: lafe_errc(1, 0, "Invalid replacement flag %c", *end_pattern); + /* NOTREACHED */ } } } @@ -212,6 +219,7 @@ apply_substitution(struct bsdtar *bsdtar, const char *name, char **result, { const char *path = name; regmatch_t matches[10]; + char* buffer = NULL; size_t i, j; struct subst_rule *rule; struct substitution *subst; @@ -237,6 +245,13 @@ apply_substitution(struct bsdtar *bsdtar, const char *name, char **result, continue; } + if (rule->from_begin && *result) { + realloc_strcat(result, name); + realloc_strcat(&buffer, *result); + name = buffer; + (*result)[0] = 0; + } + while (1) { if (regexec(&rule->re, name, 10, matches, 0)) break; @@ -276,6 +291,7 @@ apply_substitution(struct bsdtar *bsdtar, const char *name, char **result, case '9': realloc_strncat(result, rule->result + j, i - j - 1); if ((size_t)(c - '0') > (size_t)(rule->re.re_nsub)) { + free(buffer); free(*result); *result = NULL; return -1; @@ -302,6 +318,8 @@ apply_substitution(struct bsdtar *bsdtar, const char *name, char **result, if (got_match) realloc_strcat(result, name); + free(buffer); + if (print_match) fprintf(stderr, "%s >> %s\n", path, *result); @@ -325,4 +343,4 @@ cleanup_substitution(struct bsdtar *bsdtar) } free(subst); } -#endif /* defined(HAVE_REGEX_H) || defined(HAVE_PCREPOSIX_H) */ +#endif /* defined(HAVE_REGEX_H) || defined(HAVE_PCREPOSIX_H) || defined(HAVE_PCRE2POSIX_H) */ diff --git a/contrib/libarchive/tar/test/test.h b/contrib/libarchive/tar/test/test.h index 1e1bee80709c..549357b4e0fd 100644 --- a/contrib/libarchive/tar/test/test.h +++ b/contrib/libarchive/tar/test/test.h @@ -21,8 +21,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ /* Every test program should #include "test.h" as the first thing. */ diff --git a/contrib/libarchive/tar/test/test_0.c b/contrib/libarchive/tar/test/test_0.c index 30d8d9318a82..7a3c2e46858f 100644 --- a/contrib/libarchive/tar/test/test_0.c +++ b/contrib/libarchive/tar/test/test_0.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * This first test does basic sanity checks on the environment. For diff --git a/contrib/libarchive/tar/test/test_basic.c b/contrib/libarchive/tar/test/test_basic.c index 16c0eafcb394..a59236c92b55 100644 --- a/contrib/libarchive/tar/test/test_basic.c +++ b/contrib/libarchive/tar/test/test_basic.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static const char * make_files(void) diff --git a/contrib/libarchive/tar/test/test_copy.c b/contrib/libarchive/tar/test/test_copy.c index 3092ed9d12a7..fd47a6d877e6 100644 --- a/contrib/libarchive/tar/test/test_copy.c +++ b/contrib/libarchive/tar/test/test_copy.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #if defined(__CYGWIN__) # include <limits.h> diff --git a/contrib/libarchive/tar/test/test_empty_mtree.c b/contrib/libarchive/tar/test/test_empty_mtree.c index 6f8a5e91aa1a..11cdfb56690a 100644 --- a/contrib/libarchive/tar/test/test_empty_mtree.c +++ b/contrib/libarchive/tar/test/test_empty_mtree.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Regression test: We used to get a bogus error message when we diff --git a/contrib/libarchive/tar/test/test_extract_tar_Z.c b/contrib/libarchive/tar/test/test_extract_tar_Z.c index 7c994b472a79..b03aca6d1da5 100644 --- a/contrib/libarchive/tar/test/test_extract_tar_Z.c +++ b/contrib/libarchive/tar/test/test_extract_tar_Z.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_extract_tar_Z) { diff --git a/contrib/libarchive/tar/test/test_extract_tar_bz2.c b/contrib/libarchive/tar/test/test_extract_tar_bz2.c index b734dd28ba74..02b3ee326d5b 100644 --- a/contrib/libarchive/tar/test/test_extract_tar_bz2.c +++ b/contrib/libarchive/tar/test/test_extract_tar_bz2.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_extract_tar_bz2) { diff --git a/contrib/libarchive/tar/test/test_extract_tar_grz.c b/contrib/libarchive/tar/test/test_extract_tar_grz.c index 9c0615e981f2..f0adf994dec6 100644 --- a/contrib/libarchive/tar/test/test_extract_tar_grz.c +++ b/contrib/libarchive/tar/test/test_extract_tar_grz.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_extract_tar_grz) { diff --git a/contrib/libarchive/tar/test/test_extract_tar_gz.c b/contrib/libarchive/tar/test/test_extract_tar_gz.c index 2fdb4ba7cdff..b17d66f01529 100644 --- a/contrib/libarchive/tar/test/test_extract_tar_gz.c +++ b/contrib/libarchive/tar/test/test_extract_tar_gz.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_extract_tar_gz) { diff --git a/contrib/libarchive/tar/test/test_extract_tar_lrz.c b/contrib/libarchive/tar/test/test_extract_tar_lrz.c index 56a0fb88231e..d6049809bb22 100644 --- a/contrib/libarchive/tar/test/test_extract_tar_lrz.c +++ b/contrib/libarchive/tar/test/test_extract_tar_lrz.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_extract_tar_lrz) { diff --git a/contrib/libarchive/tar/test/test_extract_tar_lz.c b/contrib/libarchive/tar/test/test_extract_tar_lz.c index 5ec7e9a48f2f..3889138928d1 100644 --- a/contrib/libarchive/tar/test/test_extract_tar_lz.c +++ b/contrib/libarchive/tar/test/test_extract_tar_lz.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_extract_tar_lz) { diff --git a/contrib/libarchive/tar/test/test_extract_tar_lz4.c b/contrib/libarchive/tar/test/test_extract_tar_lz4.c index 150d57d71551..f0e03ed3206e 100644 --- a/contrib/libarchive/tar/test/test_extract_tar_lz4.c +++ b/contrib/libarchive/tar/test/test_extract_tar_lz4.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_extract_tar_lz4) { diff --git a/contrib/libarchive/tar/test/test_extract_tar_lzma.c b/contrib/libarchive/tar/test/test_extract_tar_lzma.c index 2fa2af049446..fd9f547fb524 100644 --- a/contrib/libarchive/tar/test/test_extract_tar_lzma.c +++ b/contrib/libarchive/tar/test/test_extract_tar_lzma.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_extract_tar_lzma) { diff --git a/contrib/libarchive/tar/test/test_extract_tar_lzo.c b/contrib/libarchive/tar/test/test_extract_tar_lzo.c index 17b4295edf63..9c05e15a6b04 100644 --- a/contrib/libarchive/tar/test/test_extract_tar_lzo.c +++ b/contrib/libarchive/tar/test/test_extract_tar_lzo.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_extract_tar_lzo) { diff --git a/contrib/libarchive/tar/test/test_extract_tar_xz.c b/contrib/libarchive/tar/test/test_extract_tar_xz.c index 860bab75acf7..8684072d76f5 100644 --- a/contrib/libarchive/tar/test/test_extract_tar_xz.c +++ b/contrib/libarchive/tar/test/test_extract_tar_xz.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_extract_tar_xz) { diff --git a/contrib/libarchive/tar/test/test_extract_tar_zstd.c b/contrib/libarchive/tar/test/test_extract_tar_zstd.c index d67170ce3433..1eced8817387 100644 --- a/contrib/libarchive/tar/test/test_extract_tar_zstd.c +++ b/contrib/libarchive/tar/test/test_extract_tar_zstd.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_extract_tar_zstd) { diff --git a/contrib/libarchive/tar/test/test_format_newc.c b/contrib/libarchive/tar/test/test_format_newc.c index 808fa4b49180..5357cc7cdae4 100644 --- a/contrib/libarchive/tar/test/test_format_newc.c +++ b/contrib/libarchive/tar/test/test_format_newc.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_format_newc) { diff --git a/contrib/libarchive/tar/test/test_help.c b/contrib/libarchive/tar/test/test_help.c index 0e7d1c97ea62..fd97a217b789 100644 --- a/contrib/libarchive/tar/test/test_help.c +++ b/contrib/libarchive/tar/test/test_help.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Test that "--help", "-h", and "-W help" options all work and diff --git a/contrib/libarchive/tar/test/test_leading_slash.c b/contrib/libarchive/tar/test/test_leading_slash.c index 572c45e3cbb7..ca64ad154055 100644 --- a/contrib/libarchive/tar/test/test_leading_slash.c +++ b/contrib/libarchive/tar/test/test_leading_slash.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_leading_slash) { diff --git a/contrib/libarchive/tar/test/test_missing_file.c b/contrib/libarchive/tar/test/test_missing_file.c index 808e384e10b0..1cc40f3745e8 100644 --- a/contrib/libarchive/tar/test/test_missing_file.c +++ b/contrib/libarchive/tar/test/test_missing_file.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_missing_file) { diff --git a/contrib/libarchive/tar/test/test_option_C_mtree.c b/contrib/libarchive/tar/test/test_option_C_mtree.c index ccadc389974c..25679644af61 100644 --- a/contrib/libarchive/tar/test/test_option_C_mtree.c +++ b/contrib/libarchive/tar/test/test_option_C_mtree.c @@ -26,7 +26,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_C_mtree) { diff --git a/contrib/libarchive/tar/test/test_option_C_upper.c b/contrib/libarchive/tar/test/test_option_C_upper.c index 538890f58178..cadc924e1d47 100644 --- a/contrib/libarchive/tar/test/test_option_C_upper.c +++ b/contrib/libarchive/tar/test/test_option_C_upper.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_C_upper) { diff --git a/contrib/libarchive/tar/test/test_option_H_upper.c b/contrib/libarchive/tar/test/test_option_H_upper.c index 2c2ad33ce75b..097a9729d26f 100644 --- a/contrib/libarchive/tar/test/test_option_H_upper.c +++ b/contrib/libarchive/tar/test/test_option_H_upper.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_H_upper) { diff --git a/contrib/libarchive/tar/test/test_option_L_upper.c b/contrib/libarchive/tar/test/test_option_L_upper.c index 5697b0f293c2..fd1ed0a52c76 100644 --- a/contrib/libarchive/tar/test/test_option_L_upper.c +++ b/contrib/libarchive/tar/test/test_option_L_upper.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_L_upper) { diff --git a/contrib/libarchive/tar/test/test_option_O_upper.c b/contrib/libarchive/tar/test/test_option_O_upper.c index b9c8c0cad109..a5540dbe8417 100644 --- a/contrib/libarchive/tar/test/test_option_O_upper.c +++ b/contrib/libarchive/tar/test/test_option_O_upper.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static const char *test4out[] = {"file1", "file2", NULL}; static const char *test5err[] = {"file1", "file2", NULL}; diff --git a/contrib/libarchive/tar/test/test_option_T_upper.c b/contrib/libarchive/tar/test/test_option_T_upper.c index bc54bd26d0ce..c64767fcfb84 100644 --- a/contrib/libarchive/tar/test/test_option_T_upper.c +++ b/contrib/libarchive/tar/test/test_option_T_upper.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static int tryMakeFile(const char *fn) diff --git a/contrib/libarchive/tar/test/test_option_U_upper.c b/contrib/libarchive/tar/test/test_option_U_upper.c index d864e13c4f6b..4518a5f9fd8e 100644 --- a/contrib/libarchive/tar/test/test_option_U_upper.c +++ b/contrib/libarchive/tar/test/test_option_U_upper.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_U_upper) { diff --git a/contrib/libarchive/tar/test/test_option_X_upper.c b/contrib/libarchive/tar/test/test_option_X_upper.c index 4916af2970e8..b5ea98b9a0d7 100644 --- a/contrib/libarchive/tar/test/test_option_X_upper.c +++ b/contrib/libarchive/tar/test/test_option_X_upper.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_X_upper) { diff --git a/contrib/libarchive/tar/test/test_option_a.c b/contrib/libarchive/tar/test/test_option_a.c index d9eed8777ff2..52797411c751 100644 --- a/contrib/libarchive/tar/test/test_option_a.c +++ b/contrib/libarchive/tar/test/test_option_a.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_a) { diff --git a/contrib/libarchive/tar/test/test_option_acls.c b/contrib/libarchive/tar/test/test_option_acls.c index f7451c8eb36b..333ac2e4fb47 100644 --- a/contrib/libarchive/tar/test/test_option_acls.c +++ b/contrib/libarchive/tar/test/test_option_acls.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #if ARCHIVE_ACL_FREEBSD || ARCHIVE_ACL_DARWIN || ARCHIVE_ACL_LIBACL static const acl_perm_t acl_perms[] = { diff --git a/contrib/libarchive/tar/test/test_option_b.c b/contrib/libarchive/tar/test/test_option_b.c index d1b75e350613..d7e0f399c297 100644 --- a/contrib/libarchive/tar/test/test_option_b.c +++ b/contrib/libarchive/tar/test/test_option_b.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #define USTAR_OPT " --format=ustar" diff --git a/contrib/libarchive/tar/test/test_option_b64encode.c b/contrib/libarchive/tar/test/test_option_b64encode.c index 1d0420430e09..b9a2b809ea4a 100644 --- a/contrib/libarchive/tar/test/test_option_b64encode.c +++ b/contrib/libarchive/tar/test/test_option_b64encode.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_b64encode) { diff --git a/contrib/libarchive/tar/test/test_option_exclude.c b/contrib/libarchive/tar/test/test_option_exclude.c index 1345f70aa160..b21ec624aec2 100644 --- a/contrib/libarchive/tar/test/test_option_exclude.c +++ b/contrib/libarchive/tar/test/test_option_exclude.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_exclude) { diff --git a/contrib/libarchive/tar/test/test_option_exclude_vcs.c b/contrib/libarchive/tar/test/test_option_exclude_vcs.c index 202151139996..ec4dc5594f5c 100644 --- a/contrib/libarchive/tar/test/test_option_exclude_vcs.c +++ b/contrib/libarchive/tar/test/test_option_exclude_vcs.c @@ -23,10 +23,10 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_exclude_vcs) { + assertUmask(0); assertMakeDir("in", 0755); assertChdir("in"); assertMakeFile("file", 0644, ""); diff --git a/contrib/libarchive/tar/test/test_option_fflags.c b/contrib/libarchive/tar/test/test_option_fflags.c index f223feb19069..045c780edefc 100644 --- a/contrib/libarchive/tar/test/test_option_fflags.c +++ b/contrib/libarchive/tar/test/test_option_fflags.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__BORLANDC__) #define chmod _chmod diff --git a/contrib/libarchive/tar/test/test_option_gid_gname.c b/contrib/libarchive/tar/test/test_option_gid_gname.c index 4e5f51c8f486..a4cff1ab2f64 100644 --- a/contrib/libarchive/tar/test/test_option_gid_gname.c +++ b/contrib/libarchive/tar/test/test_option_gid_gname.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_gid_gname) { diff --git a/contrib/libarchive/tar/test/test_option_group.c b/contrib/libarchive/tar/test/test_option_group.c new file mode 100644 index 000000000000..d429ddab9f9f --- /dev/null +++ b/contrib/libarchive/tar/test/test_option_group.c @@ -0,0 +1,84 @@ +/*- + * Copyright (c) 2003-2010 Tim Kientzle + * Copyright (c) 2024 Haelwenn (lanodan) Monnier + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "test.h" + +DEFINE_TEST(test_option_group) +{ + char *reference, *data; + size_t s; + + assertUmask(0); + assertMakeFile("file", 0644, "1234567890"); + + /* Create archive with no special options. */ + failure("Error invoking %s c", testprog); + assertEqualInt(0, + systemf("%s cf archive1 --format=ustar file >stdout1.txt 2>stderr1.txt", + testprog)); + assertEmptyFile("stdout1.txt"); + assertEmptyFile("stderr1.txt"); + reference = slurpfile(&s, "archive1"); + + /* Create archive with --group (numeric) */ + failure("Error invoking %s c", testprog); + assertEqualInt(0, + systemf("%s cf archive2 --group=17 --format=ustar file >stdout2.txt 2>stderr2.txt", + testprog)); + assertEmptyFile("stdout2.txt"); + assertEmptyFile("stderr2.txt"); + data = slurpfile(&s, "archive2"); + assertEqualMem(data + 116, "000021 \0", 8); + /* Gname field in ustar header should be empty. */ + assertEqualMem(data + 297, "\0", 1); + free(data); + + /* Again with --group (name) */ + failure("Error invoking %s c", testprog); + assertEqualInt(0, + systemf("%s cf archive3 --group=foofoofoo --format=ustar file >stdout3.txt 2>stderr3.txt", + testprog)); + assertEmptyFile("stdout3.txt"); + assertEmptyFile("stderr3.txt"); + data = slurpfile(&s, "archive3"); + /* Gid should be unchanged from original reference. */ + assertEqualMem(data + 116, reference + 116, 8); + assertEqualMem(data + 297, "foofoofoo\0", 10); + free(data); + + /* Again with --group (name:id) */ + failure("Error invoking %s c", testprog); + assertEqualInt(0, + systemf("%s cf archive4 --group=foofoofoo:17 --format=ustar file >stdout4.txt 2>stderr4.txt", + testprog)); + assertEmptyFile("stdout4.txt"); + assertEmptyFile("stderr4.txt"); + data = slurpfile(&s, "archive4"); + assertEqualMem(data + 116, "000021 \0", 8); + assertEqualMem(data + 297, "foofoofoo\0", 10); + free(data); + + free(reference); +} diff --git a/contrib/libarchive/tar/test/test_option_grzip.c b/contrib/libarchive/tar/test/test_option_grzip.c index fbff252421d1..d898e4408151 100644 --- a/contrib/libarchive/tar/test/test_option_grzip.c +++ b/contrib/libarchive/tar/test/test_option_grzip.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_grzip) { diff --git a/contrib/libarchive/tar/test/test_option_ignore_zeros.c b/contrib/libarchive/tar/test/test_option_ignore_zeros.c index 26c9320e3008..985ad3082fce 100644 --- a/contrib/libarchive/tar/test/test_option_ignore_zeros.c +++ b/contrib/libarchive/tar/test/test_option_ignore_zeros.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); static int make_files(void) diff --git a/contrib/libarchive/tar/test/test_option_j.c b/contrib/libarchive/tar/test/test_option_j.c index 838234a2aeb5..cf4d91d0afac 100644 --- a/contrib/libarchive/tar/test/test_option_j.c +++ b/contrib/libarchive/tar/test/test_option_j.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_j) { diff --git a/contrib/libarchive/tar/test/test_option_k.c b/contrib/libarchive/tar/test/test_option_k.c index e57cc274cfc4..873a1209b0a9 100644 --- a/contrib/libarchive/tar/test/test_option_k.c +++ b/contrib/libarchive/tar/test/test_option_k.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_k) { diff --git a/contrib/libarchive/tar/test/test_option_keep_newer_files.c b/contrib/libarchive/tar/test/test_option_keep_newer_files.c index 089898cc27e0..2572a98c5812 100644 --- a/contrib/libarchive/tar/test/test_option_keep_newer_files.c +++ b/contrib/libarchive/tar/test/test_option_keep_newer_files.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_keep_newer_files) { diff --git a/contrib/libarchive/tar/test/test_option_lrzip.c b/contrib/libarchive/tar/test/test_option_lrzip.c index 11e9827e0405..8bf4633f643e 100644 --- a/contrib/libarchive/tar/test/test_option_lrzip.c +++ b/contrib/libarchive/tar/test/test_option_lrzip.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_lrzip) { diff --git a/contrib/libarchive/tar/test/test_option_lz4.c b/contrib/libarchive/tar/test/test_option_lz4.c index 70fdaac3600f..1b766d04969f 100644 --- a/contrib/libarchive/tar/test/test_option_lz4.c +++ b/contrib/libarchive/tar/test/test_option_lz4.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_lz4) { diff --git a/contrib/libarchive/tar/test/test_option_lzma.c b/contrib/libarchive/tar/test/test_option_lzma.c index ab6f13f91744..1d8697b53ee8 100644 --- a/contrib/libarchive/tar/test/test_option_lzma.c +++ b/contrib/libarchive/tar/test/test_option_lzma.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_lzma) { diff --git a/contrib/libarchive/tar/test/test_option_lzop.c b/contrib/libarchive/tar/test/test_option_lzop.c index 20ef06c5c8a0..d96a14f08fea 100644 --- a/contrib/libarchive/tar/test/test_option_lzop.c +++ b/contrib/libarchive/tar/test/test_option_lzop.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_lzop) { diff --git a/contrib/libarchive/tar/test/test_option_n.c b/contrib/libarchive/tar/test/test_option_n.c index f36658ef1656..a6bda0599e16 100644 --- a/contrib/libarchive/tar/test/test_option_n.c +++ b/contrib/libarchive/tar/test/test_option_n.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_WAIT_H #include <sys/wait.h> diff --git a/contrib/libarchive/tar/test/test_option_newer_than.c b/contrib/libarchive/tar/test/test_option_newer_than.c index 2a5fe04e6968..a250a4c8d8c6 100644 --- a/contrib/libarchive/tar/test/test_option_newer_than.c +++ b/contrib/libarchive/tar/test/test_option_newer_than.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_newer_than) { diff --git a/contrib/libarchive/tar/test/test_option_nodump.c b/contrib/libarchive/tar/test/test_option_nodump.c index 815b08ed9251..6a5b66e3215a 100644 --- a/contrib/libarchive/tar/test/test_option_nodump.c +++ b/contrib/libarchive/tar/test/test_option_nodump.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_nodump) { diff --git a/contrib/libarchive/tar/test/test_option_older_than.c b/contrib/libarchive/tar/test/test_option_older_than.c index 4bdd2edfe0bd..d57c4d414b8f 100644 --- a/contrib/libarchive/tar/test/test_option_older_than.c +++ b/contrib/libarchive/tar/test/test_option_older_than.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_older_than) { diff --git a/contrib/libarchive/tar/test/test_option_owner.c b/contrib/libarchive/tar/test/test_option_owner.c new file mode 100644 index 000000000000..04c86cc0e8d4 --- /dev/null +++ b/contrib/libarchive/tar/test/test_option_owner.c @@ -0,0 +1,84 @@ +/*- + * Copyright (c) 2003-2010 Tim Kientzle + * Copyright (c) 2024 Haelwenn (lanodan) Monnier + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "test.h" + +DEFINE_TEST(test_option_owner) +{ + char *reference, *data; + size_t s; + + assertUmask(0); + assertMakeFile("file", 0644, "1234567890"); + + /* Create archive with no special options. */ + failure("Error invoking %s c", testprog); + assertEqualInt(0, + systemf("%s cf archive1 --format=ustar file >stdout1.txt 2>stderr1.txt", + testprog)); + assertEmptyFile("stdout1.txt"); + assertEmptyFile("stderr1.txt"); + reference = slurpfile(&s, "archive1"); + + /* Create archive with --owner (numeric) */ + failure("Error invoking %s c", testprog); + assertEqualInt(0, + systemf("%s cf archive2 --owner=65123 --format=ustar file >stdout2.txt 2>stderr2.txt", + testprog)); + assertEmptyFile("stdout2.txt"); + assertEmptyFile("stderr2.txt"); + data = slurpfile(&s, "archive2"); + assertEqualMem(data + 108, "177143 \0", 8); + /* Uname field in ustar header should be empty. */ + assertEqualMem(data + 265, "\0", 1); + free(data); + + /* Again with just --owner (name) */ + failure("Error invoking %s c", testprog); + assertEqualInt(0, + systemf("%s cf archive3 --owner=foofoofoo --format=ustar file >stdout3.txt 2>stderr3.txt", + testprog)); + assertEmptyFile("stdout3.txt"); + assertEmptyFile("stderr3.txt"); + data = slurpfile(&s, "archive3"); + /* Uid should be unchanged from original reference. */ + assertEqualMem(data + 108, reference + 108, 8); + assertEqualMem(data + 265, "foofoofoo\0", 10); + free(data); + + /* Again with just --owner (name:id) */ + failure("Error invoking %s c", testprog); + assertEqualInt(0, + systemf("%s cf archive4 --owner=foofoofoo:65123 --format=ustar file >stdout4.txt 2>stderr4.txt", + testprog)); + assertEmptyFile("stdout4.txt"); + assertEmptyFile("stderr4.txt"); + data = slurpfile(&s, "archive4"); + assertEqualMem(data + 108, "177143 \0", 8); + assertEqualMem(data + 265, "foofoofoo\0", 10); + free(data); + + free(reference); +} diff --git a/contrib/libarchive/tar/test/test_option_passphrase.c b/contrib/libarchive/tar/test/test_option_passphrase.c index 337292c95bfc..74f3d3d5d031 100644 --- a/contrib/libarchive/tar/test/test_option_passphrase.c +++ b/contrib/libarchive/tar/test/test_option_passphrase.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_passphrase) { diff --git a/contrib/libarchive/tar/test/test_option_q.c b/contrib/libarchive/tar/test/test_option_q.c index d954f8927e6f..fd4b55e545ae 100644 --- a/contrib/libarchive/tar/test/test_option_q.c +++ b/contrib/libarchive/tar/test/test_option_q.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_q) { diff --git a/contrib/libarchive/tar/test/test_option_r.c b/contrib/libarchive/tar/test/test_option_r.c index 287e80939adf..655b973ad1e2 100644 --- a/contrib/libarchive/tar/test/test_option_r.c +++ b/contrib/libarchive/tar/test/test_option_r.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * Also see test_option_q for additional validation of -r support. diff --git a/contrib/libarchive/tar/test/test_option_s.c b/contrib/libarchive/tar/test/test_option_s.c index ceed9fb1faf7..564793b97d5e 100644 --- a/contrib/libarchive/tar/test/test_option_s.c +++ b/contrib/libarchive/tar/test/test_option_s.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_s) { @@ -89,6 +88,17 @@ DEFINE_TEST(test_option_s) assertFileContents("bar", 3, "test4/in/d1/baz"); /* + * Test 4b: Multiple substitutions behavior with option b). + */ + assertMakeDir("test4b", 0755); + systemf("%s -cf test4b.tar in/d1/foo in/d1/bar", + testprog); + systemf("%s -xf test4b.tar -s /oo/ar/ -s }ar}az}b -C test4b", + testprog); + assertFileContents("foo", 3, "test4b/in/d1/faz"); + assertFileContents("bar", 3, "test4b/in/d1/baz"); + + /* * Test 5: Name-switching substitutions when extracting archive. */ assertMakeDir("test5", 0755); diff --git a/contrib/libarchive/tar/test/test_option_safe_writes.c b/contrib/libarchive/tar/test/test_option_safe_writes.c index 7b42e8f62253..d1e36cfd4736 100644 --- a/contrib/libarchive/tar/test/test_option_safe_writes.c +++ b/contrib/libarchive/tar/test/test_option_safe_writes.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_safe_writes) { diff --git a/contrib/libarchive/tar/test/test_option_uid_uname.c b/contrib/libarchive/tar/test/test_option_uid_uname.c index 80c061961488..261e3b86565b 100644 --- a/contrib/libarchive/tar/test/test_option_uid_uname.c +++ b/contrib/libarchive/tar/test/test_option_uid_uname.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_uid_uname) { diff --git a/contrib/libarchive/tar/test/test_option_uuencode.c b/contrib/libarchive/tar/test/test_option_uuencode.c index a28a8e3407a3..4bb6e0898c2b 100644 --- a/contrib/libarchive/tar/test/test_option_uuencode.c +++ b/contrib/libarchive/tar/test/test_option_uuencode.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_uuencode) { diff --git a/contrib/libarchive/tar/test/test_option_xattrs.c b/contrib/libarchive/tar/test/test_option_xattrs.c index 79dfff528303..eef6c779bb52 100644 --- a/contrib/libarchive/tar/test/test_option_xattrs.c +++ b/contrib/libarchive/tar/test/test_option_xattrs.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_xattrs) { diff --git a/contrib/libarchive/tar/test/test_option_xz.c b/contrib/libarchive/tar/test/test_option_xz.c index 91da0730ac94..45163e735f19 100644 --- a/contrib/libarchive/tar/test/test_option_xz.c +++ b/contrib/libarchive/tar/test/test_option_xz.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_xz) { diff --git a/contrib/libarchive/tar/test/test_option_z.c b/contrib/libarchive/tar/test/test_option_z.c index 59744999fc5c..8e10e37ba22e 100644 --- a/contrib/libarchive/tar/test/test_option_z.c +++ b/contrib/libarchive/tar/test/test_option_z.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_z) { diff --git a/contrib/libarchive/tar/test/test_option_zstd.c b/contrib/libarchive/tar/test/test_option_zstd.c index 73965e33f3af..f9983670249c 100644 --- a/contrib/libarchive/tar/test/test_option_zstd.c +++ b/contrib/libarchive/tar/test/test_option_zstd.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_option_zstd) { diff --git a/contrib/libarchive/tar/test/test_patterns.c b/contrib/libarchive/tar/test/test_patterns.c index deffe322e1b4..64f8fffe90f9 100644 --- a/contrib/libarchive/tar/test/test_patterns.c +++ b/contrib/libarchive/tar/test/test_patterns.c @@ -24,7 +24,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_patterns) { diff --git a/contrib/libarchive/tar/test/test_print_longpath.c b/contrib/libarchive/tar/test/test_print_longpath.c index 4bac1679cc97..a21651fa15eb 100644 --- a/contrib/libarchive/tar/test/test_print_longpath.c +++ b/contrib/libarchive/tar/test/test_print_longpath.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_print_longpath) { diff --git a/contrib/libarchive/tar/test/test_stdio.c b/contrib/libarchive/tar/test/test_stdio.c index 7e53cb1b3fd5..d046727a2dd3 100644 --- a/contrib/libarchive/tar/test/test_stdio.c +++ b/contrib/libarchive/tar/test/test_stdio.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_stdio) { diff --git a/contrib/libarchive/tar/test/test_strip_components.c b/contrib/libarchive/tar/test/test_strip_components.c index ac19abf47e16..9bf79ab7cf20 100644 --- a/contrib/libarchive/tar/test/test_strip_components.c +++ b/contrib/libarchive/tar/test/test_strip_components.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); DEFINE_TEST(test_strip_components) { diff --git a/contrib/libarchive/tar/test/test_symlink_dir.c b/contrib/libarchive/tar/test/test_symlink_dir.c index df529d04a6e8..4c5666204388 100644 --- a/contrib/libarchive/tar/test/test_symlink_dir.c +++ b/contrib/libarchive/tar/test/test_symlink_dir.c @@ -23,7 +23,6 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); /* * tar -x -P should follow existing symlinks for dirs, but not other diff --git a/contrib/libarchive/tar/util.c b/contrib/libarchive/tar/util.c index 37f0d54f4b08..37c3a23231bd 100644 --- a/contrib/libarchive/tar/util.c +++ b/contrib/libarchive/tar/util.c @@ -24,7 +24,6 @@ */ #include "bsdtar_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_STAT_H #include <sys/stat.h> @@ -471,7 +470,7 @@ edit_pathname(struct bsdtar *bsdtar, struct archive_entry *entry) const char *original_name = name; const char *hardlinkname = archive_entry_hardlink(entry); const char *original_hardlinkname = hardlinkname; -#if defined(HAVE_REGEX_H) || defined(HAVE_PCREPOSIX_H) +#if defined(HAVE_REGEX_H) || defined(HAVE_PCREPOSIX_H) || defined(HAVE_PCRE2POSIX_H) char *subst_name; int r; diff --git a/contrib/libarchive/tar/write.c b/contrib/libarchive/tar/write.c index ac35c6f7c60e..5c7b13ae682f 100644 --- a/contrib/libarchive/tar/write.c +++ b/contrib/libarchive/tar/write.c @@ -25,7 +25,6 @@ */ #include "bsdtar_platform.h" -__FBSDID("$FreeBSD$"); #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> diff --git a/contrib/libarchive/test_utils/test_common.h b/contrib/libarchive/test_utils/test_common.h index 6250235c6ca9..8e1ec82436f8 100644 --- a/contrib/libarchive/test_utils/test_common.h +++ b/contrib/libarchive/test_utils/test_common.h @@ -21,8 +21,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ #ifndef TEST_COMMON_H @@ -134,16 +132,6 @@ #include <stdint.h> #endif -/* Get a real definition for __FBSDID if we can */ -#if HAVE_SYS_CDEFS_H -#include <sys/cdefs.h> -#endif - -/* If not, define it so as to avoid dangling semicolons. */ -#ifndef __FBSDID -#define __FBSDID(a) struct _undefined_hack -#endif - #ifndef O_BINARY #define O_BINARY 0 #endif @@ -178,6 +166,8 @@ /* Assert two integers are the same. Reports value of each one if not. */ #define assertEqualInt(v1,v2) \ assertion_equal_int(__FILE__, __LINE__, (v1), #v1, (v2), #v2, NULL) +#define assertEqualAddress(v1,v2) \ + assertion_equal_address(__FILE__, __LINE__, (v1), #v1, (v2), #v2, NULL) /* Assert two strings are the same. Reports value of each one if not. */ #define assertEqualString(v1,v2) \ assertion_equal_string(__FILE__, __LINE__, (v1), #v1, (v2), #v2, NULL, 0) @@ -291,6 +281,7 @@ int assertion_compare_fflags(const char *, int, const char *, const char *, int assertion_empty_file(const char *, int, const char *); int assertion_equal_file(const char *, int, const char *, const char *); int assertion_equal_int(const char *, int, long long, const char *, long long, const char *, void *); +int assertion_equal_address(const char *, int, const void *, const char *, const void *, const char *, void *); int assertion_equal_mem(const char *, int, const void *, const char *, const void *, const char *, size_t, const char *, void *); int assertion_memory_filled_with(const char *, int, const void *, const char *, size_t, const char *, char, const char *, void *); int assertion_equal_string(const char *, int, const char *v1, const char *, const char *v2, const char *, void *, int); diff --git a/contrib/libarchive/test_utils/test_main.c b/contrib/libarchive/test_utils/test_main.c index e4b884ee3c44..6617732a335b 100644 --- a/contrib/libarchive/test_utils/test_main.c +++ b/contrib/libarchive/test_utils/test_main.c @@ -625,6 +625,21 @@ assertion_equal_int(const char *file, int line, return (0); } +/* Verify two pointers are equal. */ +int +assertion_equal_address(const char *file, int line, + const void *v1, const char *e1, const void *v2, const char *e2, void *extra) +{ + assertion_count(file, line); + if (v1 == v2) + return (1); + failure_start(file, line, "%s != %s", e1, e2); + logprintf(" %s=0x%llx\n", e1, (unsigned long long)(uintptr_t)v1); + logprintf(" %s=0x%llx\n", e2, (unsigned long long)(uintptr_t)v2); + failure_finish(extra); + return (0); +} + /* * Utility to convert a single UTF-8 sequence. */ @@ -1245,7 +1260,7 @@ assertion_file_contains_lines_any_order(const char *file, int line, c = *p; } if (actual_count) { - actual = calloc(sizeof(char *), actual_count); + actual = calloc(actual_count, sizeof(char *)); if (actual == NULL) { failure_start(pathname, line, "Can't allocate memory"); failure_finish(NULL); @@ -4175,7 +4190,6 @@ main(int argc, char **argv) free(refdir_alloc); free(testprogdir); usage(progname); - return (1); } for (i = 0; i < test_num; i++) { tests_run++; diff --git a/contrib/libarchive/unzip/bsdunzip.1 b/contrib/libarchive/unzip/bsdunzip.1 index dda01e7b84d7..a67ca2327066 100644 --- a/contrib/libarchive/unzip/bsdunzip.1 +++ b/contrib/libarchive/unzip/bsdunzip.1 @@ -23,8 +23,6 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD$ -.\" .Dd June 27, 2023 .Dt BSDUNZIP 1 .Os diff --git a/contrib/libarchive/unzip/bsdunzip.c b/contrib/libarchive/unzip/bsdunzip.c index 29c3a1670483..af3fb14c3636 100644 --- a/contrib/libarchive/unzip/bsdunzip.c +++ b/contrib/libarchive/unzip/bsdunzip.c @@ -27,8 +27,6 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD$ - * * This file would be much shorter if we didn't care about command-line * compatibility with Info-ZIP's UnZip, which requires us to duplicate * parts of libarchive in order to gain more detailed control of its @@ -59,6 +57,9 @@ #ifdef HAVE_FNMATCH_H #include <fnmatch.h> #endif +#ifdef HAVE_LOCALE_H +#include <locale.h> +#endif #ifdef HAVE_STDARG_H #include <stdarg.h> #endif @@ -78,6 +79,9 @@ #include <sys/time.h> #endif #endif +#ifdef HAVE_GETOPT_OPTRESET +#include <getopt.h> +#endif #include "bsdunzip.h" #include "passphrase.h" @@ -1209,6 +1213,11 @@ main(int argc, char *argv[]) lafe_setprogname(*argv, "bsdunzip"); +#if HAVE_SETLOCALE + if (setlocale(LC_ALL, "") == NULL) + lafe_warnc(0, "Failed to set default locale"); +#endif + if (isatty(STDOUT_FILENO)) tty = 1; @@ -1229,10 +1238,8 @@ main(int argc, char *argv[]) */ nopts = getopts(argc, argv); - if (version_opt == 1) { + if (version_opt == 1) version(); - exit(EXIT_SUCCESS); - } /* * When more of the zipinfo mode options are implemented, this diff --git a/contrib/libarchive/unzip/bsdunzip_platform.h b/contrib/libarchive/unzip/bsdunzip_platform.h index 76eca4f90902..d4fcbb1aeab4 100644 --- a/contrib/libarchive/unzip/bsdunzip_platform.h +++ b/contrib/libarchive/unzip/bsdunzip_platform.h @@ -21,8 +21,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD: src/usr.bin/tar/bsdtar_platform.h,v 1.26 2008/12/06 07:37:14 kientzle Exp $ */ /* @@ -42,16 +40,6 @@ #include "config.h" #endif -/* Get a real definition for __FBSDID if we can */ -#if HAVE_SYS_CDEFS_H -#include <sys/cdefs.h> -#endif - -/* If not, define it so as to avoid dangling semicolons. */ -#ifndef __FBSDID -#define __FBSDID(a) struct _undefined_hack -#endif - #ifdef HAVE_LIBARCHIVE /* If we're using the platform libarchive, include system headers. */ #include <archive.h> @@ -64,12 +52,14 @@ /* How to mark functions that don't return. */ /* This facilitates use of some newer static code analysis tools. */ -#undef __LA_DEAD +#undef __LA_NORETURN #if defined(__GNUC__) && (__GNUC__ > 2 || \ - (__GNUC__ == 2 && __GNUC_MINOR__ >= 5)) -#define __LA_DEAD __attribute__((__noreturn__)) -#else -#define __LA_DEAD + (__GNUC__ == 2 && __GNUC_MINOR__ >= 5)) +#define __LA_NORETURN __attribute__((__noreturn__)) +#elif defined(_MSC_VER) +#define __LA_NORETURN __declspec(noreturn) +#else +#define __LA_NORETURN #endif #endif /* !BSDUNZIP_PLATFORM_H_INCLUDED */ diff --git a/contrib/libarchive/unzip/cmdline.c b/contrib/libarchive/unzip/cmdline.c index 76eb423de116..ab1aeb31fe18 100644 --- a/contrib/libarchive/unzip/cmdline.c +++ b/contrib/libarchive/unzip/cmdline.c @@ -28,8 +28,6 @@ */ #include "bsdunzip_platform.h" -__FBSDID("$FreeBSD$"); - #ifdef HAVE_ERRNO_H #include <errno.h> #endif @@ -115,6 +113,7 @@ bsdunzip_getopt(struct bsdunzip *bsdunzip) if (strcmp(bsdunzip->argv[0], "--") == 0) { ++bsdunzip->argv; --bsdunzip->argc; + bsdunzip_optind++; return (-1); } /* Get next word for parsing. */ diff --git a/contrib/libarchive/unzip/test/test.h b/contrib/libarchive/unzip/test/test.h index ba876afd8e24..822c3f08133f 100644 --- a/contrib/libarchive/unzip/test/test.h +++ b/contrib/libarchive/unzip/test/test.h @@ -21,8 +21,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ /* Every test program should #include "test.h" as the first thing. */ diff --git a/contrib/libarchive/unzip/test/test_I.c b/contrib/libarchive/unzip/test/test_I.c new file mode 100644 index 000000000000..a6bad85a011f --- /dev/null +++ b/contrib/libarchive/unzip/test/test_I.c @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2023 Aaron Lindros + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer + * in this position and unchanged. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "test.h" + +/* Test I arg - file name encoding */ +DEFINE_TEST(test_I) +{ + const char *reffile = "test_I.zip"; + int r; + + extract_reference_file(reffile); + r = systemf("%s -I UTF-8 %s >test.out 2>test.err", testprog, reffile); + assertEqualInt(0, r); + assertNonEmptyFile("test.out"); + assertEmptyFile("test.err"); + + assertTextFileContents("Hello, World!\n", "Γειά σου Κόσμε.txt"); +} diff --git a/contrib/libarchive/unzip/test/test_I.zip.uu b/contrib/libarchive/unzip/test/test_I.zip.uu new file mode 100644 index 000000000000..8a1e7afa5b92 --- /dev/null +++ b/contrib/libarchive/unzip/test/test_I.zip.uu @@ -0,0 +1,8 @@ +begin 644 test_I.zip +M4$L#!`H```@``&@)AU>$GNBT#@````X````>`!P`SI/.M<ZYSJP@SX/.O\^% +M(,Z:SXS/@\Z\SK4N='AT550)``,#8G%E"6)Q975X"P`!!.@#```$Z`,``$AE +M;&QO+"!7;W)L9"$*4$L!`AX#"@``"```:`F'5X2>Z+0.````#@```!X`&``` +M`````````*2!`````,Z3SK7.N<ZL(,^#SK_/A2#.FL^,SX/.O,ZU+G1X=%54 +L!0`#`V)Q975X"P`!!.@#```$Z`,``%!+!08``````0`!`&0```!F```````` +` +end diff --git a/contrib/libarchive/unzip/test/test_doubledash.c b/contrib/libarchive/unzip/test/test_doubledash.c new file mode 100644 index 000000000000..eb7d34e4f6cc --- /dev/null +++ b/contrib/libarchive/unzip/test/test_doubledash.c @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2023 Adrian Vovk + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer + * in this position and unchanged. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "test.h" + +/* Test double dash arg - swallow "--" and use next argument as file name */ +DEFINE_TEST(test_doubledash) +{ + const char *reffile = "test_basic.zip"; + int r; + + extract_reference_file(reffile); + r = systemf("%s -- %s >test.out 2>test.err", testprog, reffile); + assertEqualInt(0, r); + assertNonEmptyFile("test.out"); + assertEmptyFile("test.err"); + + assertTextFileContents("contents a\n", "test_basic/a"); + assertTextFileContents("contents b\n", "test_basic/b"); + assertTextFileContents("contents c\n", "test_basic/c"); + assertTextFileContents("contents CAPS\n", "test_basic/CAPS"); +} diff --git a/lib/libarchive/Makefile.inc b/lib/libarchive/Makefile.inc index 95d96df24eef..153f96b12165 100644 --- a/lib/libarchive/Makefile.inc +++ b/lib/libarchive/Makefile.inc @@ -4,7 +4,7 @@ LIBADD= z bz2 lzma bsdxml zstd CFLAGS+= -DHAVE_BZLIB_H=1 -DHAVE_LIBLZMA=1 -DHAVE_LZMA_H=1 \ - -DHAVE_ZSTD_H=1 -DHAVE_LIBZSTD=1 -DHAVE_LIBZSTD_COMPRESSOR=1 + -DHAVE_ZSTD_H=1 -DHAVE_LIBZSTD=1 -DHAVE_ZSTD_compressStream=1 CFLAGS+= -DPLATFORM_CONFIG_H=\"${.CURDIR}/config_freebsd.h\" .if ${MK_OPENSSL} != "no" diff --git a/lib/libarchive/tests/Makefile b/lib/libarchive/tests/Makefile index 2fe9bbcc7c2d..0d47e1a5ed3c 100644 --- a/lib/libarchive/tests/Makefile +++ b/lib/libarchive/tests/Makefile @@ -114,6 +114,7 @@ TESTS_SRCS= \ test_read_filter_program.c \ test_read_filter_program_signature.c \ test_read_filter_uudecode.c \ + test_read_filter_uudecode_raw.c \ test_read_format_7zip.c \ test_read_format_7zip_encryption_data.c \ test_read_format_7zip_encryption_header.c \ @@ -300,6 +301,8 @@ TESTS_SRCS= \ test_write_format_zip_file_zip64.c \ test_write_format_zip_large.c \ test_write_format_zip_zip64.c \ + test_write_format_zip64_stream.c \ + test_write_format_zip_stream.c \ test_write_open_memory.c \ test_write_read_format_zip.c \ test_xattr_platform.c \ @@ -426,6 +429,8 @@ ${PACKAGE}FILES+= test_read_filter_grzip.tar.grz.uu ${PACKAGE}FILES+= test_read_filter_lrzip.tar.lrz.uu ${PACKAGE}FILES+= test_read_filter_lzop.tar.lzo.uu ${PACKAGE}FILES+= test_read_filter_lzop_multiple_parts.tar.lzo.uu +${PACKAGE}FILES+= test_read_filter_uudecode_base64_raw.uu +${PACKAGE}FILES+= test_read_filter_uudecode_raw.uu ${PACKAGE}FILES+= test_read_format_7zip_bcj2_bzip2.7z.uu ${PACKAGE}FILES+= test_read_format_7zip_bcj2_copy_1.7z.uu ${PACKAGE}FILES+= test_read_format_7zip_bcj2_copy_2.7z.uu @@ -470,6 +475,7 @@ ${PACKAGE}FILES+= test_read_format_7zip_zstd.7z.uu ${PACKAGE}FILES+= test_read_format_7zip_zstd_arm.7z.uu ${PACKAGE}FILES+= test_read_format_7zip_zstd_bcj.7z.uu ${PACKAGE}FILES+= test_read_format_7zip_zstd_nobcj.7z.uu +${PACKAGE}FILES+= test_read_format_7zip_win_attrib.7z.uu ${PACKAGE}FILES+= test_read_format_ar.ar.uu ${PACKAGE}FILES+= test_read_format_cab_1.cab.uu ${PACKAGE}FILES+= test_read_format_cab_2.cab.uu @@ -586,6 +592,7 @@ ${PACKAGE}FILES+= test_read_format_rar5_stored.rar.uu ${PACKAGE}FILES+= test_read_format_rar5_stored_manyfiles.rar.uu ${PACKAGE}FILES+= test_read_format_rar5_symlink.rar.uu ${PACKAGE}FILES+= test_read_format_rar5_truncated_huff.rar.uu +${PACKAGE}FILES+= test_read_format_rar5_unicode.rar.uu ${PACKAGE}FILES+= test_read_format_rar5_win32.rar.uu ${PACKAGE}FILES+= test_read_format_rar5_window_buf_and_size_desync.rar.uu ${PACKAGE}FILES+= test_read_format_raw.bufr.uu diff --git a/usr.bin/unzip/tests/Makefile b/usr.bin/unzip/tests/Makefile index 39818203c753..85fc4b88cd78 100644 --- a/usr.bin/unzip/tests/Makefile +++ b/usr.bin/unzip/tests/Makefile @@ -30,11 +30,13 @@ UNZIP_SRCS+= err.c TESTS_SRCS= \ test_0.c \ test_C.c \ + test_I.c \ test_L.c \ test_P_encryption.c \ test_Z1.c \ test_basic.c \ test_d.c \ + test_doubledash.c \ test_glob.c \ test_j.c \ test_n.c \ @@ -65,6 +67,7 @@ list.h: ${TESTS_SRCS} Makefile CLEANFILES+= list.h list.h.tmp +${PACKAGE}FILES+= test_I.zip.uu ${PACKAGE}FILES+= test_basic.zip.uu ${PACKAGE}FILES+= test_encrypted.zip.uu ${PACKAGE}FILES+= test_singlefile.zip.uu |