diff options
author | mm <mm@FreeBSD.org> | 2013-03-22 13:36:03 +0000 |
---|---|---|
committer | mm <mm@FreeBSD.org> | 2013-03-22 13:36:03 +0000 |
commit | 5ee0a7b76c4addc27bb45864cb4e0ce790a4b80e (patch) | |
tree | e741e3532b574e7c25aa9bb07c18cdb16139824f /contrib/libarchive/libarchive/test | |
parent | af89cb16bfde2fc8e93708b89daff55026d3b216 (diff) | |
parent | 366f42737cba40ceb2e83af8d17c61c0242703c5 (diff) | |
download | FreeBSD-src-5ee0a7b76c4addc27bb45864cb4e0ce790a4b80e.zip FreeBSD-src-5ee0a7b76c4addc27bb45864cb4e0ce790a4b80e.tar.gz |
MFV r248590,248594:
Update libarchive to 3.1.2
Some of new features:
- support for lrzip and grzip compression
- support for writing tar v7 format
- b64encode and uuencode filters
- support for __MACOSX directory in Zip archives
- support for lzop compresion (external utility)
Diffstat (limited to 'contrib/libarchive/libarchive/test')
219 files changed, 26949 insertions, 1963 deletions
diff --git a/contrib/libarchive/libarchive/test/main.c b/contrib/libarchive/libarchive/test/main.c index 9d692d1..cdb8538 100644 --- a/contrib/libarchive/libarchive/test/main.c +++ b/contrib/libarchive/libarchive/test/main.c @@ -24,6 +24,7 @@ */ #include "test.h" +#include "test_utils.h" #ifdef HAVE_SYS_IOCTL_H #include <sys/ioctl.h> #endif @@ -89,6 +90,7 @@ __FBSDID("$FreeBSD$"); */ #if defined(_WIN32) && !defined(__CYGWIN__) #include <io.h> +#include <direct.h> #include <windows.h> #ifndef F_OK #define F_OK (0) @@ -387,7 +389,6 @@ failure_finish(void *extra) fprintf(stderr, " *** forcing core dump so failure can be debugged ***\n"); abort(); - exit(1); } } @@ -620,8 +621,8 @@ assertion_equal_string(const char *file, int line, if (v1 == v2 || (v1 != NULL && v2 != NULL && strcmp(v1, v2) == 0)) return (1); failure_start(file, line, "%s != %s", e1, e2); - l1 = strlen(e1); - l2 = strlen(e2); + l1 = (int)strlen(e1); + l2 = (int)strlen(e2); if (l1 < l2) l1 = l2; strdump(e1, v1, l1, utf8); @@ -744,6 +745,8 @@ assertion_equal_mem(const char *file, int line, assertion_count(file, line); if (v1 == v2 || (v1 != NULL && v2 != NULL && memcmp(v1, v2, l) == 0)) return (1); + if (v1 == NULL || v2 == NULL) + return (0); failure_start(file, line, "%s != %s", e1, e2); logprintf(" size %s = %d\n", ld, (int)l); @@ -837,9 +840,14 @@ assertion_equal_file(const char *filename, int line, const char *fn1, const char f1 = fopen(fn1, "rb"); f2 = fopen(fn2, "rb"); + if (f1 == NULL || f2 == NULL) { + if (f1) fclose(f1); + if (f2) fclose(f2); + return (0); + } for (;;) { - n1 = fread(buff1, 1, sizeof(buff1), f1); - n2 = fread(buff2, 1, sizeof(buff2), f2); + n1 = (int)fread(buff1, 1, sizeof(buff1), f1); + n2 = (int)fread(buff2, 1, sizeof(buff2), f2); if (n1 != n2) break; if (n1 == 0 && n2 == 0) { @@ -913,7 +921,7 @@ assertion_file_contents(const char *filename, int line, const void *buff, int s, return (0); } contents = malloc(s * 2); - n = fread(contents, 1, s * 2, f); + n = (int)fread(contents, 1, s * 2, f); fclose(f); if (n == s && memcmp(buff, contents, s) == 0) { free(contents); @@ -949,9 +957,9 @@ assertion_text_file_contents(const char *filename, int line, const char *buff, c failure_finish(NULL); return (0); } - s = strlen(buff); + s = (int)strlen(buff); contents = malloc(s * 2 + 128); - n = fread(contents, 1, s * 2 + 128 - 1, f); + n = (int)fread(contents, 1, s * 2 + 128 - 1, f); if (n >= 0) contents[n] = '\0'; fclose(f); @@ -1002,8 +1010,8 @@ assertion_file_contains_lines_any_order(const char *file, int line, char *buff; size_t buff_size; size_t expected_count, actual_count, i, j; - char **expected; - char *p, **actual; + char **expected = NULL; + char *p, **actual = NULL; char c; int expected_failure = 0, actual_failure = 0; @@ -1016,14 +1024,21 @@ assertion_file_contains_lines_any_order(const char *file, int line, return (0); } - /* Make a copy of the provided lines and count up the expected file size. */ - expected_count = 0; + /* Make a copy of the provided lines and count up the expected + * file size. */ for (i = 0; lines[i] != NULL; ++i) { } expected_count = i; - expected = malloc(sizeof(char *) * expected_count); - for (i = 0; lines[i] != NULL; ++i) { - expected[i] = strdup(lines[i]); + if (expected_count) { + expected = malloc(sizeof(char *) * expected_count); + if (expected == NULL) { + failure_start(pathname, line, "Can't allocate memory"); + failure_finish(NULL); + return (0); + } + for (i = 0; lines[i] != NULL; ++i) { + expected[i] = strdup(lines[i]); + } } /* Break the file into lines */ @@ -1035,11 +1050,20 @@ assertion_file_contains_lines_any_order(const char *file, int line, ++actual_count; c = *p; } - actual = malloc(sizeof(char *) * actual_count); - for (j = 0, p = buff; p < buff + buff_size; p += 1 + strlen(p)) { - if (*p != '\0') { - actual[j] = p; - ++j; + if (actual_count) { + actual = calloc(sizeof(char *), actual_count); + if (actual == NULL) { + failure_start(pathname, line, "Can't allocate memory"); + failure_finish(NULL); + free(expected); + return (0); + } + for (j = 0, p = buff; p < buff + buff_size; + p += 1 + strlen(p)) { + if (*p != '\0') { + actual[j] = p; + ++j; + } } } @@ -1174,11 +1198,11 @@ assertion_file_time(const char *file, int line, #if defined(_WIN32) && !defined(__CYGWIN__) #define EPOC_TIME (116444736000000000ULL) - FILETIME ftime, fbirthtime, fatime, fmtime; + FILETIME fxtime, fbirthtime, fatime, fmtime; ULARGE_INTEGER wintm; HANDLE h; - ftime.dwLowDateTime = 0; - ftime.dwHighDateTime = 0; + fxtime.dwLowDateTime = 0; + fxtime.dwHighDateTime = 0; assertion_count(file, line); /* Note: FILE_FLAG_BACKUP_SEMANTICS applies to open @@ -1193,9 +1217,9 @@ assertion_file_time(const char *file, int line, } r = GetFileTime(h, &fbirthtime, &fatime, &fmtime); switch (type) { - case 'a': ftime = fatime; break; - case 'b': ftime = fbirthtime; break; - case 'm': ftime = fmtime; break; + case 'a': fxtime = fatime; break; + case 'b': fxtime = fbirthtime; break; + case 'm': fxtime = fmtime; break; } CloseHandle(h); if (r == 0) { @@ -1203,8 +1227,8 @@ assertion_file_time(const char *file, int line, failure_finish(NULL); return (0); } - wintm.LowPart = ftime.dwLowDateTime; - wintm.HighPart = ftime.dwHighDateTime; + wintm.LowPart = fxtime.dwLowDateTime; + wintm.HighPart = fxtime.dwHighDateTime; filet = (wintm.QuadPart - EPOC_TIME) / 10000000; filet_nsec = ((wintm.QuadPart - EPOC_TIME) % 10000000) * 100; nsec = (nsec / 100) * 100; /* Round the request */ @@ -1832,15 +1856,45 @@ canSymlink(void) return (value); } -/* - * Can this platform run the gzip program? - */ /* Platform-dependent options for hiding the output of a subcommand. */ #if defined(_WIN32) && !defined(__CYGWIN__) static const char *redirectArgs = ">NUL 2>NUL"; /* Win32 cmd.exe */ #else static const char *redirectArgs = ">/dev/null 2>/dev/null"; /* POSIX 'sh' */ #endif +/* + * Can this platform run the bzip2 program? + */ +int +canBzip2(void) +{ + static int tested = 0, value = 0; + if (!tested) { + tested = 1; + if (systemf("bzip2 -d -V %s", redirectArgs) == 0) + value = 1; + } + return (value); +} + +/* + * Can this platform run the grzip program? + */ +int +canGrzip(void) +{ + static int tested = 0, value = 0; + if (!tested) { + tested = 1; + if (systemf("grzip -V %s", redirectArgs) == 0) + value = 1; + } + return (value); +} + +/* + * Can this platform run the gzip program? + */ int canGzip(void) { @@ -1854,15 +1908,87 @@ canGzip(void) } /* - * Can this platform run the gunzip program? + * Can this platform run the lrzip program? */ int -canGunzip(void) +canRunCommand(const char *cmd) +{ + static int tested = 0, value = 0; + if (!tested) { + tested = 1; + if (systemf("%s %s", cmd, redirectArgs) == 0) + value = 1; + } + return (value); +} + +int +canLrzip(void) { static int tested = 0, value = 0; if (!tested) { tested = 1; - if (systemf("gunzip -V %s", redirectArgs) == 0) + if (systemf("lrzip -V %s", redirectArgs) == 0) + value = 1; + } + return (value); +} + +/* + * Can this platform run the lzip program? + */ +int +canLzip(void) +{ + static int tested = 0, value = 0; + if (!tested) { + tested = 1; + if (systemf("lzip -V %s", redirectArgs) == 0) + value = 1; + } + return (value); +} + +/* + * Can this platform run the lzma program? + */ +int +canLzma(void) +{ + static int tested = 0, value = 0; + if (!tested) { + tested = 1; + if (systemf("lzma -V %s", redirectArgs) == 0) + value = 1; + } + return (value); +} + +/* + * Can this platform run the lzop program? + */ +int +canLzop(void) +{ + static int tested = 0, value = 0; + if (!tested) { + tested = 1; + if (systemf("lzop -V %s", redirectArgs) == 0) + value = 1; + } + return (value); +} + +/* + * Can this platform run the xz program? + */ +int +canXz(void) +{ + static int tested = 0, value = 0; + if (!tested) { + tested = 1; + if (systemf("xz -V %s", redirectArgs) == 0) value = 1; } return (value); @@ -2101,6 +2227,14 @@ is_LargeInode(const char *file) return (ino > 0xffffffff); #endif } + +void +extract_reference_files(const char **names) +{ + while (names && *names) + extract_reference_file(*names++); +} + /* * * TEST management @@ -2122,7 +2256,7 @@ is_LargeInode(const char *file) /* Use "list.h" to create a list of all tests (functions and names). */ #undef DEFINE_TEST #define DEFINE_TEST(n) { n, #n, 0 }, -struct { void (*func)(void); const char *name; int failures; } tests[] = { +struct test_list_t tests[] = { #include "list.h" }; @@ -2375,65 +2509,6 @@ success: return strdup(buff); } -static int -get_test_set(int *test_set, int limit, const char *test) -{ - int start, end; - int idx = 0; - - if (test == NULL) { - /* Default: Run all tests. */ - for (;idx < limit; idx++) - test_set[idx] = idx; - return (limit); - } - if (*test >= '0' && *test <= '9') { - const char *vp = test; - start = 0; - while (*vp >= '0' && *vp <= '9') { - start *= 10; - start += *vp - '0'; - ++vp; - } - if (*vp == '\0') { - end = start; - } else if (*vp == '-') { - ++vp; - if (*vp == '\0') { - end = limit - 1; - } else { - end = 0; - while (*vp >= '0' && *vp <= '9') { - end *= 10; - end += *vp - '0'; - ++vp; - } - } - } else - return (-1); - if (start < 0 || end >= limit || start > end) - return (-1); - while (start <= end) - test_set[idx++] = start++; - } else { - size_t len = strlen(test); - for (start = 0; start < limit; ++start) { - const char *name = tests[start].name; - const char *p; - - while ((p = strchr(name, test[0])) != NULL) { - if (strncmp(p, test, len) == 0) { - test_set[idx++] = start; - break; - } else - name = p + 1; - } - - } - } - return ((idx == 0)?-1:idx); -} - int main(int argc, char **argv) { @@ -2718,10 +2793,11 @@ main(int argc, char **argv) do { int test_num; - test_num = get_test_set(test_set, limit, *argv); + test_num = get_test_set(test_set, limit, *argv, tests); if (test_num < 0) { printf("*** INVALID Test %s\n", *argv); free(refdir_alloc); + free(testprogdir); usage(progname); return (1); } diff --git a/contrib/libarchive/libarchive/test/test.h b/contrib/libarchive/libarchive/test/test.h index 01a12fd..3b00bfb 100644 --- a/contrib/libarchive/libarchive/test/test.h +++ b/contrib/libarchive/libarchive/test/test.h @@ -266,11 +266,32 @@ void sleepUntilAfter(time_t); /* Return true if this platform can create symlinks. */ int canSymlink(void); +/* Return true if this platform can run the "bzip2" program. */ +int canBzip2(void); + +/* Return true if this platform can run the "grzip" program. */ +int canGrzip(void); + /* Return true if this platform can run the "gzip" program. */ int canGzip(void); -/* Return true if this platform can run the "gunzip" program. */ -int canGunzip(void); +/* Return true if this platform can run the specified command. */ +int canRunCommand(const char *); + +/* Return true if this platform can run the "lrzip" program. */ +int canLrzip(void); + +/* Return true if this platform can run the "lzip" program. */ +int canLzip(void); + +/* Return true if this platform can run the "lzma" program. */ +int canLzma(void); + +/* Return true if this platform can run the "lzop" program. */ +int canLzop(void); + +/* Return true if this platform can run the "xz" program. */ +int canXz(void); /* Return true if this filesystem can handle nodump flags. */ int canNodump(void); @@ -285,6 +306,11 @@ char *slurpfile(size_t *, const char *fmt, ...); /* Extracts named reference file to the current directory. */ void extract_reference_file(const char *); +/* Extracts a list of files to the current directory. + * List must be NULL terminated. + */ +void extract_reference_files(const char **); + /* Path to working directory for current test */ const char *testworkdir; diff --git a/contrib/libarchive/libarchive/test/test_acl_freebsd.c b/contrib/libarchive/libarchive/test/test_acl_freebsd.c deleted file mode 100644 index bd5aae1..0000000 --- a/contrib/libarchive/libarchive/test/test_acl_freebsd.c +++ /dev/null @@ -1,260 +0,0 @@ -/*- - * Copyright (c) 2003-2008 Tim Kientzle - * 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" -__FBSDID("$FreeBSD$"); - -#if defined(__FreeBSD__) && __FreeBSD__ > 4 -#include <sys/acl.h> - -struct myacl_t { - int type; /* Type of ACL: "access" or "default" */ - int permset; /* Permissions for this class of users. */ - int tag; /* Owner, User, Owning group, group, other, etc. */ - int qual; /* GID or UID of user/group, depending on tag. */ - const char *name; /* Name of user/group, depending on tag. */ -}; - -static struct myacl_t acls2[] = { - { ARCHIVE_ENTRY_ACL_TYPE_ACCESS, ARCHIVE_ENTRY_ACL_EXECUTE | ARCHIVE_ENTRY_ACL_READ, - ARCHIVE_ENTRY_ACL_USER_OBJ, -1, "" }, - { ARCHIVE_ENTRY_ACL_TYPE_ACCESS, ARCHIVE_ENTRY_ACL_READ, - ARCHIVE_ENTRY_ACL_USER, 77, "user77" }, - { ARCHIVE_ENTRY_ACL_TYPE_ACCESS, 0, - ARCHIVE_ENTRY_ACL_USER, 78, "user78" }, - { ARCHIVE_ENTRY_ACL_TYPE_ACCESS, ARCHIVE_ENTRY_ACL_READ, - ARCHIVE_ENTRY_ACL_GROUP_OBJ, -1, "" }, - { ARCHIVE_ENTRY_ACL_TYPE_ACCESS, 0007, - ARCHIVE_ENTRY_ACL_GROUP, 78, "group78" }, - { ARCHIVE_ENTRY_ACL_TYPE_ACCESS, - ARCHIVE_ENTRY_ACL_WRITE | ARCHIVE_ENTRY_ACL_EXECUTE, - ARCHIVE_ENTRY_ACL_OTHER, -1, "" }, - { ARCHIVE_ENTRY_ACL_TYPE_ACCESS, - ARCHIVE_ENTRY_ACL_WRITE | ARCHIVE_ENTRY_ACL_READ | ARCHIVE_ENTRY_ACL_EXECUTE, - ARCHIVE_ENTRY_ACL_MASK, -1, "" }, - { 0, 0, 0, 0, NULL } -}; - -static void -set_acls(struct archive_entry *ae, struct myacl_t *acls) -{ - int i; - - archive_entry_acl_clear(ae); - for (i = 0; acls[i].name != NULL; i++) { - archive_entry_acl_add_entry(ae, - acls[i].type, acls[i].permset, acls[i].tag, acls[i].qual, - acls[i].name); - } -} - -static int -acl_match(acl_entry_t aclent, struct myacl_t *myacl) -{ - gid_t g, *gp; - uid_t u, *up; - acl_tag_t tag_type; - acl_permset_t opaque_ps; - int permset = 0; - - acl_get_tag_type(aclent, &tag_type); - - /* translate the silly opaque permset to a bitmap */ - acl_get_permset(aclent, &opaque_ps); - if (acl_get_perm_np(opaque_ps, ACL_EXECUTE)) - permset |= ARCHIVE_ENTRY_ACL_EXECUTE; - if (acl_get_perm_np(opaque_ps, ACL_WRITE)) - permset |= ARCHIVE_ENTRY_ACL_WRITE; - if (acl_get_perm_np(opaque_ps, ACL_READ)) - permset |= ARCHIVE_ENTRY_ACL_READ; - - if (permset != myacl->permset) - return (0); - - switch (tag_type) { - case ACL_USER_OBJ: - if (myacl->tag != ARCHIVE_ENTRY_ACL_USER_OBJ) return (0); - break; - case ACL_USER: - if (myacl->tag != ARCHIVE_ENTRY_ACL_USER) - return (0); - up = acl_get_qualifier(aclent); - u = *up; - acl_free(up); - if ((uid_t)myacl->qual != u) - return (0); - break; - case ACL_GROUP_OBJ: - if (myacl->tag != ARCHIVE_ENTRY_ACL_GROUP_OBJ) return (0); - break; - case ACL_GROUP: - if (myacl->tag != ARCHIVE_ENTRY_ACL_GROUP) - return (0); - gp = acl_get_qualifier(aclent); - g = *gp; - acl_free(gp); - if ((gid_t)myacl->qual != g) - return (0); - break; - case ACL_MASK: - if (myacl->tag != ARCHIVE_ENTRY_ACL_MASK) return (0); - break; - case ACL_OTHER: - if (myacl->tag != ARCHIVE_ENTRY_ACL_OTHER) return (0); - break; - } - return (1); -} - -static void -compare_acls(acl_t acl, struct myacl_t *myacls) -{ - int *marker; - int entry_id = ACL_FIRST_ENTRY; - int matched; - int i, n; - acl_entry_t acl_entry; - - /* Count ACL entries in myacls array and allocate an indirect array. */ - for (n = 0; myacls[n].name != NULL; ++n) - continue; - marker = malloc(sizeof(marker[0]) * n); - for (i = 0; i < n; i++) - marker[i] = i; - - /* - * Iterate over acls in system acl object, try to match each - * one with an item in the myacls array. - */ - while (1 == acl_get_entry(acl, entry_id, &acl_entry)) { - /* After the first time... */ - entry_id = ACL_NEXT_ENTRY; - - /* Search for a matching entry (tag and qualifier) */ - for (i = 0, matched = 0; i < n && !matched; i++) { - if (acl_match(acl_entry, &myacls[marker[i]])) { - /* We found a match; remove it. */ - marker[i] = marker[n - 1]; - n--; - matched = 1; - } - } - - /* TODO: Print out more details in this case. */ - failure("ACL entry on file that shouldn't be there"); - assert(matched == 1); - } - - /* Dump entries in the myacls array that weren't in the system acl. */ - for (i = 0; i < n; ++i) { - failure(" ACL entry missing from file: " - "type=%d,permset=%d,tag=%d,qual=%d,name=``%s''\n", - myacls[marker[i]].type, myacls[marker[i]].permset, - myacls[marker[i]].tag, myacls[marker[i]].qual, - myacls[marker[i]].name); - assert(0); /* Record this as a failure. */ - } - free(marker); -} - -#endif - - -/* - * Verify ACL restore-to-disk. This test is FreeBSD-specific. - */ - -DEFINE_TEST(test_acl_freebsd) -{ -#if !defined(__FreeBSD__) - skipping("FreeBSD-specific ACL restore test"); -#elif __FreeBSD__ < 5 - skipping("ACL restore supported only on FreeBSD 5.0 and later"); -#else - struct stat st; - struct archive *a; - struct archive_entry *ae; - int n, fd; - acl_t acl; - - /* - * First, do a quick manual set/read of ACL data to - * verify that the local filesystem does support ACLs. - * If it doesn't, we'll simply skip the remaining tests. - */ - acl = acl_from_text("u::rwx,u:1:rw,g::rwx,g:15:rx,o::rwx,m::rwx"); - assert((void *)acl != NULL); - /* Create a test file and try to set an ACL on it. */ - fd = open("pretest", O_WRONLY | O_CREAT | O_EXCL, 0777); - failure("Could not create test file?!"); - if (!assert(fd >= 0)) { - acl_free(acl); - return; - } - - n = acl_set_fd(fd, acl); - acl_free(acl); - if (n != 0 && errno == EOPNOTSUPP) { - close(fd); - skipping("ACL tests require that ACL support be enabled on the filesystem"); - return; - } - if (n != 0 && errno == EINVAL) { - close(fd); - skipping("This filesystem does not support POSIX.1e ACLs"); - return; - } - failure("acl_set_fd(): errno = %d (%s)", - errno, strerror(errno)); - assertEqualInt(0, n); - close(fd); - - /* Create a write-to-disk object. */ - assert(NULL != (a = archive_write_disk_new())); - archive_write_disk_set_options(a, - ARCHIVE_EXTRACT_TIME | ARCHIVE_EXTRACT_PERM | ARCHIVE_EXTRACT_ACL); - - /* Populate an archive entry with some metadata, including ACL info */ - ae = archive_entry_new(); - assert(ae != NULL); - archive_entry_set_pathname(ae, "test0"); - archive_entry_set_mtime(ae, 123456, 7890); - archive_entry_set_size(ae, 0); - set_acls(ae, acls2); - assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); - archive_entry_free(ae); - - /* Close the archive. */ - assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); - assertEqualInt(ARCHIVE_OK, archive_write_free(a)); - - /* Verify the data on disk. */ - assertEqualInt(0, stat("test0", &st)); - assertEqualInt(st.st_mtime, 123456); - acl = acl_get_file("test0", ACL_TYPE_ACCESS); - assert(acl != (acl_t)NULL); - compare_acls(acl, acls2); - acl_free(acl); -#endif -} diff --git a/contrib/libarchive/libarchive/test/test_acl_freebsd_nfs4.c b/contrib/libarchive/libarchive/test/test_acl_freebsd_nfs4.c index 19211d4..fd2301d 100644 --- a/contrib/libarchive/libarchive/test/test_acl_freebsd_nfs4.c +++ b/contrib/libarchive/libarchive/test/test_acl_freebsd_nfs4.c @@ -545,550 +545,3 @@ DEFINE_TEST(test_acl_freebsd_nfs4) assertEqualInt(ARCHIVE_OK, archive_read_free(a)); #endif } -/*- - * Copyright (c) 2003-2010 Tim Kientzle - * 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" -__FBSDID("$FreeBSD$"); - -#if defined(__FreeBSD__) && __FreeBSD__ >= 8 -#define _ACL_PRIVATE -#include <sys/acl.h> - -struct myacl_t { - int type; - int permset; - int tag; - int qual; /* GID or UID of user/group, depending on tag. */ - const char *name; /* Name of user/group, depending on tag. */ -}; - -static struct myacl_t acls_reg[] = { - /* For this test, we need the file owner to be able to read and write the ACL. */ - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, - ARCHIVE_ENTRY_ACL_READ_DATA | ARCHIVE_ENTRY_ACL_READ_ACL | ARCHIVE_ENTRY_ACL_WRITE_ACL | ARCHIVE_ENTRY_ACL_READ_NAMED_ATTRS | ARCHIVE_ENTRY_ACL_READ_ATTRIBUTES, - ARCHIVE_ENTRY_ACL_USER_OBJ, -1, ""}, - - /* An entry for each type. */ - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_EXECUTE, - ARCHIVE_ENTRY_ACL_USER, 108, "user108" }, - { ARCHIVE_ENTRY_ACL_TYPE_DENY, ARCHIVE_ENTRY_ACL_EXECUTE, - ARCHIVE_ENTRY_ACL_USER, 109, "user109" }, - - /* An entry for each permission. */ - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_EXECUTE, - ARCHIVE_ENTRY_ACL_USER, 112, "user112" }, - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_READ_DATA, - ARCHIVE_ENTRY_ACL_USER, 113, "user113" }, - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_WRITE_DATA, - ARCHIVE_ENTRY_ACL_USER, 115, "user115" }, - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_APPEND_DATA, - ARCHIVE_ENTRY_ACL_USER, 117, "user117" }, - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_READ_NAMED_ATTRS, - ARCHIVE_ENTRY_ACL_USER, 119, "user119" }, - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_WRITE_NAMED_ATTRS, - ARCHIVE_ENTRY_ACL_USER, 120, "user120" }, - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_READ_ATTRIBUTES, - ARCHIVE_ENTRY_ACL_USER, 122, "user122" }, - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_WRITE_ATTRIBUTES, - ARCHIVE_ENTRY_ACL_USER, 123, "user123" }, - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_DELETE, - ARCHIVE_ENTRY_ACL_USER, 124, "user124" }, - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_READ_ACL, - ARCHIVE_ENTRY_ACL_USER, 125, "user125" }, - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_WRITE_ACL, - ARCHIVE_ENTRY_ACL_USER, 126, "user126" }, - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_WRITE_OWNER, - ARCHIVE_ENTRY_ACL_USER, 127, "user127" }, - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_SYNCHRONIZE, - ARCHIVE_ENTRY_ACL_USER, 128, "user128" }, - - /* One entry for each qualifier. */ - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_EXECUTE, - ARCHIVE_ENTRY_ACL_USER, 135, "user135" }, -// { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_EXECUTE, -// ARCHIVE_ENTRY_ACL_USER_OBJ, -1, "" }, - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_EXECUTE, - ARCHIVE_ENTRY_ACL_GROUP, 136, "group136" }, - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_EXECUTE, - ARCHIVE_ENTRY_ACL_GROUP_OBJ, -1, "" }, - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_EXECUTE, - ARCHIVE_ENTRY_ACL_EVERYONE, -1, "" } -}; - - -static struct myacl_t acls_dir[] = { - /* For this test, we need to be able to read and write the ACL. */ - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_READ_ACL, - ARCHIVE_ENTRY_ACL_USER_OBJ, -1, ""}, - - /* An entry for each type. */ - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_LIST_DIRECTORY, - ARCHIVE_ENTRY_ACL_USER, 101, "user101" }, - { ARCHIVE_ENTRY_ACL_TYPE_DENY, ARCHIVE_ENTRY_ACL_LIST_DIRECTORY, - ARCHIVE_ENTRY_ACL_USER, 102, "user102" }, - - /* An entry for each permission. */ - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_LIST_DIRECTORY, - ARCHIVE_ENTRY_ACL_USER, 201, "user201" }, - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_ADD_FILE, - ARCHIVE_ENTRY_ACL_USER, 202, "user202" }, - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_ADD_SUBDIRECTORY, - ARCHIVE_ENTRY_ACL_USER, 203, "user203" }, - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_READ_NAMED_ATTRS, - ARCHIVE_ENTRY_ACL_USER, 204, "user204" }, - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_WRITE_NAMED_ATTRS, - ARCHIVE_ENTRY_ACL_USER, 205, "user205" }, - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_DELETE_CHILD, - ARCHIVE_ENTRY_ACL_USER, 206, "user206" }, - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_READ_ATTRIBUTES, - ARCHIVE_ENTRY_ACL_USER, 207, "user207" }, - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_WRITE_ATTRIBUTES, - ARCHIVE_ENTRY_ACL_USER, 208, "user208" }, - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_DELETE, - ARCHIVE_ENTRY_ACL_USER, 209, "user209" }, - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_READ_ACL, - ARCHIVE_ENTRY_ACL_USER, 210, "user210" }, - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_WRITE_ACL, - ARCHIVE_ENTRY_ACL_USER, 211, "user211" }, - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_WRITE_OWNER, - ARCHIVE_ENTRY_ACL_USER, 212, "user212" }, - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_SYNCHRONIZE, - ARCHIVE_ENTRY_ACL_USER, 213, "user213" }, - - /* One entry with each inheritance value. */ - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, - ARCHIVE_ENTRY_ACL_READ_DATA | ARCHIVE_ENTRY_ACL_ENTRY_FILE_INHERIT, - ARCHIVE_ENTRY_ACL_USER, 301, "user301" }, - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, - ARCHIVE_ENTRY_ACL_READ_DATA | ARCHIVE_ENTRY_ACL_ENTRY_DIRECTORY_INHERIT, - ARCHIVE_ENTRY_ACL_USER, 302, "user302" }, -#if 0 - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, - ARCHIVE_ENTRY_ACL_READ_DATA | ARCHIVE_ENTRY_ACL_ENTRY_NO_PROPAGATE_INHERIT, - ARCHIVE_ENTRY_ACL_USER, 303, "user303" }, - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, - ARCHIVE_ENTRY_ACL_READ_DATA | ARCHIVE_ENTRY_ACL_ENTRY_INHERIT_ONLY, - ARCHIVE_ENTRY_ACL_USER, 304, "user304" }, -#endif - -#if 0 - /* FreeBSD does not support audit entries. */ - { ARCHIVE_ENTRY_ACL_TYPE_AUDIT, - ARCHIVE_ENTRY_ACL_READ_DATA | ARCHIVE_ENTRY_ACL_ENTRY_SUCCESSFUL_ACCESS, - ARCHIVE_ENTRY_ACL_USER, 401, "user401" }, - { ARCHIVE_ENTRY_ACL_TYPE_AUDIT, - ARCHIVE_ENTRY_ACL_READ_DATA | ARCHIVE_ENTRY_ACL_ENTRY_FAILED_ACCESS, - ARCHIVE_ENTRY_ACL_USER, 402, "user402" }, -#endif - - /* One entry for each qualifier. */ - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_LIST_DIRECTORY, - ARCHIVE_ENTRY_ACL_USER, 501, "user501" }, - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_LIST_DIRECTORY, - ARCHIVE_ENTRY_ACL_GROUP, 502, "group502" }, - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_LIST_DIRECTORY, - ARCHIVE_ENTRY_ACL_GROUP_OBJ, -1, "" }, - { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_LIST_DIRECTORY, - ARCHIVE_ENTRY_ACL_EVERYONE, -1, "" } -}; - -static void -set_acls(struct archive_entry *ae, struct myacl_t *acls, int start, int end) -{ - int i; - - archive_entry_acl_clear(ae); - if (start > 0) { - assertEqualInt(ARCHIVE_OK, - archive_entry_acl_add_entry(ae, - acls[0].type, acls[0].permset, acls[0].tag, - acls[0].qual, acls[0].name)); - } - for (i = start; i < end; i++) { - assertEqualInt(ARCHIVE_OK, - archive_entry_acl_add_entry(ae, - acls[i].type, acls[i].permset, acls[i].tag, - acls[i].qual, acls[i].name)); - } -} - -static int -acl_permset_to_bitmap(acl_permset_t opaque_ps) -{ - static struct { int machine; int portable; } perms[] = { - {ACL_EXECUTE, ARCHIVE_ENTRY_ACL_EXECUTE}, - {ACL_WRITE, ARCHIVE_ENTRY_ACL_WRITE}, - {ACL_READ, ARCHIVE_ENTRY_ACL_READ}, - {ACL_READ_DATA, ARCHIVE_ENTRY_ACL_READ_DATA}, - {ACL_LIST_DIRECTORY, ARCHIVE_ENTRY_ACL_LIST_DIRECTORY}, - {ACL_WRITE_DATA, ARCHIVE_ENTRY_ACL_WRITE_DATA}, - {ACL_ADD_FILE, ARCHIVE_ENTRY_ACL_ADD_FILE}, - {ACL_APPEND_DATA, ARCHIVE_ENTRY_ACL_APPEND_DATA}, - {ACL_ADD_SUBDIRECTORY, ARCHIVE_ENTRY_ACL_ADD_SUBDIRECTORY}, - {ACL_READ_NAMED_ATTRS, ARCHIVE_ENTRY_ACL_READ_NAMED_ATTRS}, - {ACL_WRITE_NAMED_ATTRS, ARCHIVE_ENTRY_ACL_WRITE_NAMED_ATTRS}, - {ACL_DELETE_CHILD, ARCHIVE_ENTRY_ACL_DELETE_CHILD}, - {ACL_READ_ATTRIBUTES, ARCHIVE_ENTRY_ACL_READ_ATTRIBUTES}, - {ACL_WRITE_ATTRIBUTES, ARCHIVE_ENTRY_ACL_WRITE_ATTRIBUTES}, - {ACL_DELETE, ARCHIVE_ENTRY_ACL_DELETE}, - {ACL_READ_ACL, ARCHIVE_ENTRY_ACL_READ_ACL}, - {ACL_WRITE_ACL, ARCHIVE_ENTRY_ACL_WRITE_ACL}, - {ACL_WRITE_OWNER, ARCHIVE_ENTRY_ACL_WRITE_OWNER}, - {ACL_SYNCHRONIZE, ARCHIVE_ENTRY_ACL_SYNCHRONIZE} - }; - int i, permset = 0; - - for (i = 0; i < (int)(sizeof(perms)/sizeof(perms[0])); ++i) - if (acl_get_perm_np(opaque_ps, perms[i].machine)) - permset |= perms[i].portable; - return permset; -} - -static int -acl_flagset_to_bitmap(acl_flagset_t opaque_fs) -{ - static struct { int machine; int portable; } flags[] = { - {ACL_ENTRY_FILE_INHERIT, ARCHIVE_ENTRY_ACL_ENTRY_FILE_INHERIT}, - {ACL_ENTRY_DIRECTORY_INHERIT, ARCHIVE_ENTRY_ACL_ENTRY_DIRECTORY_INHERIT}, - {ACL_ENTRY_NO_PROPAGATE_INHERIT, ARCHIVE_ENTRY_ACL_ENTRY_NO_PROPAGATE_INHERIT}, - {ACL_ENTRY_INHERIT_ONLY, ARCHIVE_ENTRY_ACL_ENTRY_INHERIT_ONLY}, - }; - int i, flagset = 0; - - for (i = 0; i < (int)(sizeof(flags)/sizeof(flags[0])); ++i) - if (acl_get_flag_np(opaque_fs, flags[i].machine)) - flagset |= flags[i].portable; - return flagset; -} - -static int -acl_match(acl_entry_t aclent, struct myacl_t *myacl) -{ - gid_t g, *gp; - uid_t u, *up; - acl_tag_t tag_type; - acl_permset_t opaque_ps; - acl_flagset_t opaque_fs; - int perms; - - acl_get_tag_type(aclent, &tag_type); - - /* translate the silly opaque permset to a bitmap */ - acl_get_permset(aclent, &opaque_ps); - acl_get_flagset_np(aclent, &opaque_fs); - perms = acl_permset_to_bitmap(opaque_ps) | acl_flagset_to_bitmap(opaque_fs); - if (perms != myacl->permset) - return (0); - - switch (tag_type) { - case ACL_USER_OBJ: - if (myacl->tag != ARCHIVE_ENTRY_ACL_USER_OBJ) return (0); - break; - case ACL_USER: - if (myacl->tag != ARCHIVE_ENTRY_ACL_USER) - return (0); - up = acl_get_qualifier(aclent); - u = *up; - acl_free(up); - if ((uid_t)myacl->qual != u) - return (0); - break; - case ACL_GROUP_OBJ: - if (myacl->tag != ARCHIVE_ENTRY_ACL_GROUP_OBJ) return (0); - break; - case ACL_GROUP: - if (myacl->tag != ARCHIVE_ENTRY_ACL_GROUP) - return (0); - gp = acl_get_qualifier(aclent); - g = *gp; - acl_free(gp); - if ((gid_t)myacl->qual != g) - return (0); - break; - case ACL_MASK: - if (myacl->tag != ARCHIVE_ENTRY_ACL_MASK) return (0); - break; - case ACL_EVERYONE: - if (myacl->tag != ARCHIVE_ENTRY_ACL_EVERYONE) return (0); - break; - } - return (1); -} - -static void -compare_acls(acl_t acl, struct myacl_t *myacls, const char *filename, int start, int end) -{ - int *marker; - int entry_id = ACL_FIRST_ENTRY; - int matched; - int i, n; - acl_entry_t acl_entry; - - n = end - start; - marker = malloc(sizeof(marker[0]) * (n + 1)); - for (i = 0; i < n; i++) - marker[i] = i + start; - /* Always include the first ACE. */ - if (start > 0) { - marker[n] = 0; - ++n; - } - - /* - * Iterate over acls in system acl object, try to match each - * one with an item in the myacls array. - */ - while (1 == acl_get_entry(acl, entry_id, &acl_entry)) { - /* After the first time... */ - entry_id = ACL_NEXT_ENTRY; - - /* Search for a matching entry (tag and qualifier) */ - for (i = 0, matched = 0; i < n && !matched; i++) { - if (acl_match(acl_entry, &myacls[marker[i]])) { - /* We found a match; remove it. */ - marker[i] = marker[n - 1]; - n--; - matched = 1; - } - } - - failure("ACL entry on file %s that shouldn't be there", filename); - assert(matched == 1); - } - - /* Dump entries in the myacls array that weren't in the system acl. */ - for (i = 0; i < n; ++i) { - failure(" ACL entry %d missing from %s: " - "type=%d,permset=%x,tag=%d,qual=%d,name=``%s''\n", - marker[i], filename, - myacls[marker[i]].type, myacls[marker[i]].permset, - myacls[marker[i]].tag, myacls[marker[i]].qual, - myacls[marker[i]].name); - assert(0); /* Record this as a failure. */ - } - free(marker); -} - -static void -compare_entry_acls(struct archive_entry *ae, struct myacl_t *myacls, const char *filename, int start, int end) -{ - int *marker; - int matched; - int i, n; - int type, permset, tag, qual; - const char *name; - - /* Count ACL entries in myacls array and allocate an indirect array. */ - n = end - start; - marker = malloc(sizeof(marker[0]) * (n + 1)); - for (i = 0; i < n; i++) - marker[i] = i + start; - /* Always include the first ACE. */ - if (start > 0) { - marker[n] = 0; - ++n; - } - - /* - * Iterate over acls in entry, try to match each - * one with an item in the myacls array. - */ - assertEqualInt(n, archive_entry_acl_reset(ae, ARCHIVE_ENTRY_ACL_TYPE_NFS4)); - while (ARCHIVE_OK == archive_entry_acl_next(ae, - ARCHIVE_ENTRY_ACL_TYPE_NFS4, &type, &permset, &tag, &qual, &name)) { - - /* Search for a matching entry (tag and qualifier) */ - for (i = 0, matched = 0; i < n && !matched; i++) { - if (tag == myacls[marker[i]].tag - && qual == myacls[marker[i]].qual - && permset == myacls[marker[i]].permset - && type == myacls[marker[i]].type) { - /* We found a match; remove it. */ - marker[i] = marker[n - 1]; - n--; - matched = 1; - } - } - - failure("ACL entry on file that shouldn't be there: " - "type=%d,permset=%x,tag=%d,qual=%d", - type,permset,tag,qual); - assert(matched == 1); - } - - /* Dump entries in the myacls array that weren't in the system acl. */ - for (i = 0; i < n; ++i) { - failure(" ACL entry %d missing from %s: " - "type=%d,permset=%x,tag=%d,qual=%d,name=``%s''\n", - marker[i], filename, - myacls[marker[i]].type, myacls[marker[i]].permset, - myacls[marker[i]].tag, myacls[marker[i]].qual, - myacls[marker[i]].name); - assert(0); /* Record this as a failure. */ - } - free(marker); -} -#endif - -/* - * Verify ACL restore-to-disk. This test is FreeBSD-specific. - */ - -DEFINE_TEST(test_acl_freebsd_nfs4) -{ -#if !defined(__FreeBSD__) - skipping("FreeBSD-specific NFS4 ACL restore test"); -#elif __FreeBSD__ < 8 - skipping("NFS4 ACLs supported only on FreeBSD 8.0 and later"); -#else - char buff[64]; - struct stat st; - struct archive *a; - struct archive_entry *ae; - int i, n; - acl_t acl; - - /* - * First, do a quick manual set/read of ACL data to - * verify that the local filesystem does support ACLs. - * If it doesn't, we'll simply skip the remaining tests. - */ - acl = acl_from_text("owner@:rwxp::allow,group@:rwp:f:allow"); - assert((void *)acl != NULL); - /* Create a test dir and try to set an ACL on it. */ - if (!assertMakeDir("pretest", 0755)) { - acl_free(acl); - return; - } - - n = acl_set_file("pretest", ACL_TYPE_NFS4, acl); - acl_free(acl); - if (n != 0 && errno == EOPNOTSUPP) { - skipping("NFS4 ACL tests require that NFS4 ACLs" - " be enabled on the filesystem"); - return; - } - if (n != 0 && errno == EINVAL) { - skipping("This filesystem does not support NFS4 ACLs"); - return; - } - failure("acl_set_file(): errno = %d (%s)", - errno, strerror(errno)); - assertEqualInt(0, n); - - /* Create a write-to-disk object. */ - assert(NULL != (a = archive_write_disk_new())); - archive_write_disk_set_options(a, - ARCHIVE_EXTRACT_TIME | ARCHIVE_EXTRACT_PERM | ARCHIVE_EXTRACT_ACL); - - /* Populate an archive entry with some metadata, including ACL info */ - ae = archive_entry_new(); - assert(ae != NULL); - archive_entry_set_pathname(ae, "testall"); - archive_entry_set_filetype(ae, AE_IFREG); - archive_entry_set_perm(ae, 0654); - archive_entry_set_mtime(ae, 123456, 7890); - archive_entry_set_size(ae, 0); - set_acls(ae, acls_reg, 0, (int)(sizeof(acls_reg)/sizeof(acls_reg[0]))); - - /* Write the entry to disk, including ACLs. */ - assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); - - /* Likewise for a dir. */ - archive_entry_set_pathname(ae, "dirall"); - archive_entry_set_filetype(ae, AE_IFDIR); - archive_entry_set_perm(ae, 0654); - archive_entry_set_mtime(ae, 123456, 7890); - set_acls(ae, acls_dir, 0, (int)(sizeof(acls_dir)/sizeof(acls_dir[0]))); - assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); - - for (i = 0; i < (int)(sizeof(acls_dir)/sizeof(acls_dir[0])); ++i) { - sprintf(buff, "dir%d", i); - archive_entry_set_pathname(ae, buff); - archive_entry_set_filetype(ae, AE_IFDIR); - archive_entry_set_perm(ae, 0654); - archive_entry_set_mtime(ae, 123456 + i, 7891 + i); - set_acls(ae, acls_dir, i, i + 1); - assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); - } - - archive_entry_free(ae); - - /* Close the archive. */ - assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); - assertEqualInt(ARCHIVE_OK, archive_write_free(a)); - - /* Verify the data on disk. */ - assertEqualInt(0, stat("testall", &st)); - assertEqualInt(st.st_mtime, 123456); - acl = acl_get_file("testall", ACL_TYPE_NFS4); - assert(acl != (acl_t)NULL); - compare_acls(acl, acls_reg, "testall", 0, (int)(sizeof(acls_reg)/sizeof(acls_reg[0]))); - acl_free(acl); - - /* Verify single-permission dirs on disk. */ - for (i = 0; i < (int)(sizeof(acls_dir)/sizeof(acls_dir[0])); ++i) { - sprintf(buff, "dir%d", i); - assertEqualInt(0, stat(buff, &st)); - assertEqualInt(st.st_mtime, 123456 + i); - acl = acl_get_file(buff, ACL_TYPE_NFS4); - assert(acl != (acl_t)NULL); - compare_acls(acl, acls_dir, buff, i, i + 1); - acl_free(acl); - } - - /* Verify "dirall" on disk. */ - assertEqualInt(0, stat("dirall", &st)); - assertEqualInt(st.st_mtime, 123456); - acl = acl_get_file("dirall", ACL_TYPE_NFS4); - assert(acl != (acl_t)NULL); - compare_acls(acl, acls_dir, "dirall", 0, (int)(sizeof(acls_dir)/sizeof(acls_dir[0]))); - acl_free(acl); - - /* Read and compare ACL via archive_read_disk */ - a = archive_read_disk_new(); - assert(a != NULL); - ae = archive_entry_new(); - assert(ae != NULL); - archive_entry_set_pathname(ae, "testall"); - assertEqualInt(ARCHIVE_OK, - archive_read_disk_entry_from_file(a, ae, -1, NULL)); - compare_entry_acls(ae, acls_reg, "testall", 0, (int)(sizeof(acls_reg)/sizeof(acls_reg[0]))); - archive_entry_free(ae); - assertEqualInt(ARCHIVE_OK, archive_read_free(a)); - - /* Read and compare ACL via archive_read_disk */ - a = archive_read_disk_new(); - assert(a != NULL); - ae = archive_entry_new(); - assert(ae != NULL); - archive_entry_set_pathname(ae, "dirall"); - assertEqualInt(ARCHIVE_OK, - archive_read_disk_entry_from_file(a, ae, -1, NULL)); - compare_entry_acls(ae, acls_dir, "dirall", 0, (int)(sizeof(acls_dir)/sizeof(acls_dir[0]))); - archive_entry_free(ae); - assertEqualInt(ARCHIVE_OK, archive_read_free(a)); -#endif -} diff --git a/contrib/libarchive/libarchive/test/test_acl_freebsd_posix1e.c b/contrib/libarchive/libarchive/test/test_acl_freebsd_posix1e.c index 37d1941..36f9499 100644 --- a/contrib/libarchive/libarchive/test/test_acl_freebsd_posix1e.c +++ b/contrib/libarchive/libarchive/test/test_acl_freebsd_posix1e.c @@ -139,269 +139,14 @@ compare_acls(acl_t acl, struct myacl_t *myacls) /* Count ACL entries in myacls array and allocate an indirect array. */ for (n = 0; myacls[n].name != NULL; ++n) continue; - marker = malloc(sizeof(marker[0]) * n); - for (i = 0; i < n; i++) - marker[i] = i; - - /* - * Iterate over acls in system acl object, try to match each - * one with an item in the myacls array. - */ - while (1 == acl_get_entry(acl, entry_id, &acl_entry)) { - /* After the first time... */ - entry_id = ACL_NEXT_ENTRY; - - /* Search for a matching entry (tag and qualifier) */ - for (i = 0, matched = 0; i < n && !matched; i++) { - if (acl_match(acl_entry, &myacls[marker[i]])) { - /* We found a match; remove it. */ - marker[i] = marker[n - 1]; - n--; - matched = 1; - } - } - - /* TODO: Print out more details in this case. */ - failure("ACL entry on file that shouldn't be there"); - assert(matched == 1); - } - - /* Dump entries in the myacls array that weren't in the system acl. */ - for (i = 0; i < n; ++i) { - failure(" ACL entry missing from file: " - "type=%d,permset=%d,tag=%d,qual=%d,name=``%s''\n", - myacls[marker[i]].type, myacls[marker[i]].permset, - myacls[marker[i]].tag, myacls[marker[i]].qual, - myacls[marker[i]].name); - assert(0); /* Record this as a failure. */ - } - free(marker); -} - -#endif - - -/* - * Verify ACL restore-to-disk. This test is FreeBSD-specific. - */ - -DEFINE_TEST(test_acl_freebsd_posix1e) -{ -#if !defined(__FreeBSD__) - skipping("FreeBSD-specific ACL restore test"); -#elif __FreeBSD__ < 5 - skipping("ACL restore supported only on FreeBSD 5.0 and later"); -#else - struct stat st; - struct archive *a; - struct archive_entry *ae; - int n, fd; - acl_t acl; - - /* - * First, do a quick manual set/read of ACL data to - * verify that the local filesystem does support ACLs. - * If it doesn't, we'll simply skip the remaining tests. - */ - acl = acl_from_text("u::rwx,u:1:rw,g::rwx,g:15:rx,o::rwx,m::rwx"); - assert((void *)acl != NULL); - /* Create a test file and try to set an ACL on it. */ - fd = open("pretest", O_WRONLY | O_CREAT | O_EXCL, 0777); - failure("Could not create test file?!"); - if (!assert(fd >= 0)) { - acl_free(acl); - return; - } - - n = acl_set_fd(fd, acl); - acl_free(acl); - if (n != 0 && errno == EOPNOTSUPP) { - close(fd); - skipping("ACL tests require that ACL support be enabled on the filesystem"); - return; - } - if (n != 0 && errno == EINVAL) { - close(fd); - skipping("This filesystem does not support POSIX.1e ACLs"); - return; - } - failure("acl_set_fd(): errno = %d (%s)", - errno, strerror(errno)); - assertEqualInt(0, n); - close(fd); - - /* Create a write-to-disk object. */ - assert(NULL != (a = archive_write_disk_new())); - archive_write_disk_set_options(a, - ARCHIVE_EXTRACT_TIME | ARCHIVE_EXTRACT_PERM | ARCHIVE_EXTRACT_ACL); - - /* Populate an archive entry with some metadata, including ACL info */ - ae = archive_entry_new(); - assert(ae != NULL); - archive_entry_set_pathname(ae, "test0"); - archive_entry_set_mtime(ae, 123456, 7890); - archive_entry_set_size(ae, 0); - set_acls(ae, acls2); - assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); - archive_entry_free(ae); - - /* Close the archive. */ - assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); - assertEqualInt(ARCHIVE_OK, archive_write_free(a)); - - /* Verify the data on disk. */ - assertEqualInt(0, stat("test0", &st)); - assertEqualInt(st.st_mtime, 123456); - acl = acl_get_file("test0", ACL_TYPE_ACCESS); - assert(acl != (acl_t)NULL); - compare_acls(acl, acls2); - acl_free(acl); -#endif -} -/*- - * Copyright (c) 2003-2008 Tim Kientzle - * 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" -__FBSDID("$FreeBSD: head/lib/libarchive/test/test_acl_freebsd.c 189427 2009-03-06 04:21:23Z kientzle $"); - -#if defined(__FreeBSD__) && __FreeBSD__ > 4 -#include <sys/acl.h> - -struct myacl_t { - int type; /* Type of ACL: "access" or "default" */ - int permset; /* Permissions for this class of users. */ - int tag; /* Owner, User, Owning group, group, other, etc. */ - int qual; /* GID or UID of user/group, depending on tag. */ - const char *name; /* Name of user/group, depending on tag. */ -}; - -static struct myacl_t acls2[] = { - { ARCHIVE_ENTRY_ACL_TYPE_ACCESS, ARCHIVE_ENTRY_ACL_EXECUTE | ARCHIVE_ENTRY_ACL_READ, - ARCHIVE_ENTRY_ACL_USER_OBJ, -1, "" }, - { ARCHIVE_ENTRY_ACL_TYPE_ACCESS, ARCHIVE_ENTRY_ACL_READ, - ARCHIVE_ENTRY_ACL_USER, 77, "user77" }, - { ARCHIVE_ENTRY_ACL_TYPE_ACCESS, 0, - ARCHIVE_ENTRY_ACL_USER, 78, "user78" }, - { ARCHIVE_ENTRY_ACL_TYPE_ACCESS, ARCHIVE_ENTRY_ACL_READ, - ARCHIVE_ENTRY_ACL_GROUP_OBJ, -1, "" }, - { ARCHIVE_ENTRY_ACL_TYPE_ACCESS, 0007, - ARCHIVE_ENTRY_ACL_GROUP, 78, "group78" }, - { ARCHIVE_ENTRY_ACL_TYPE_ACCESS, - ARCHIVE_ENTRY_ACL_WRITE | ARCHIVE_ENTRY_ACL_EXECUTE, - ARCHIVE_ENTRY_ACL_OTHER, -1, "" }, - { ARCHIVE_ENTRY_ACL_TYPE_ACCESS, - ARCHIVE_ENTRY_ACL_WRITE | ARCHIVE_ENTRY_ACL_READ | ARCHIVE_ENTRY_ACL_EXECUTE, - ARCHIVE_ENTRY_ACL_MASK, -1, "" }, - { 0, 0, 0, 0, NULL } -}; - -static void -set_acls(struct archive_entry *ae, struct myacl_t *acls) -{ - int i; - - archive_entry_acl_clear(ae); - for (i = 0; acls[i].name != NULL; i++) { - archive_entry_acl_add_entry(ae, - acls[i].type, acls[i].permset, acls[i].tag, acls[i].qual, - acls[i].name); - } -} - -static int -acl_match(acl_entry_t aclent, struct myacl_t *myacl) -{ - gid_t g, *gp; - uid_t u, *up; - acl_tag_t tag_type; - acl_permset_t opaque_ps; - int permset = 0; - - acl_get_tag_type(aclent, &tag_type); - - /* translate the silly opaque permset to a bitmap */ - acl_get_permset(aclent, &opaque_ps); - if (acl_get_perm_np(opaque_ps, ACL_EXECUTE)) - permset |= ARCHIVE_ENTRY_ACL_EXECUTE; - if (acl_get_perm_np(opaque_ps, ACL_WRITE)) - permset |= ARCHIVE_ENTRY_ACL_WRITE; - if (acl_get_perm_np(opaque_ps, ACL_READ)) - permset |= ARCHIVE_ENTRY_ACL_READ; - - if (permset != myacl->permset) - return (0); - - switch (tag_type) { - case ACL_USER_OBJ: - if (myacl->tag != ARCHIVE_ENTRY_ACL_USER_OBJ) return (0); - break; - case ACL_USER: - if (myacl->tag != ARCHIVE_ENTRY_ACL_USER) - return (0); - up = acl_get_qualifier(aclent); - u = *up; - acl_free(up); - if ((uid_t)myacl->qual != u) - return (0); - break; - case ACL_GROUP_OBJ: - if (myacl->tag != ARCHIVE_ENTRY_ACL_GROUP_OBJ) return (0); - break; - case ACL_GROUP: - if (myacl->tag != ARCHIVE_ENTRY_ACL_GROUP) - return (0); - gp = acl_get_qualifier(aclent); - g = *gp; - acl_free(gp); - if ((gid_t)myacl->qual != g) - return (0); - break; - case ACL_MASK: - if (myacl->tag != ARCHIVE_ENTRY_ACL_MASK) return (0); - break; - case ACL_OTHER: - if (myacl->tag != ARCHIVE_ENTRY_ACL_OTHER) return (0); - break; - } - return (1); -} - -static void -compare_acls(acl_t acl, struct myacl_t *myacls) -{ - int *marker; - int entry_id = ACL_FIRST_ENTRY; - int matched; - int i, n; - acl_entry_t acl_entry; - - /* Count ACL entries in myacls array and allocate an indirect array. */ - for (n = 0; myacls[n].name != NULL; ++n) - continue; - marker = malloc(sizeof(marker[0]) * n); - for (i = 0; i < n; i++) - marker[i] = i; + if (n) { + marker = malloc(sizeof(marker[0]) * n); + if (marker == NULL) + return; + for (i = 0; i < n; i++) + marker[i] = i; + } else + marker = NULL; /* * Iterate over acls in system acl object, try to match each diff --git a/contrib/libarchive/libarchive/test/test_acl_nfs4.c b/contrib/libarchive/libarchive/test/test_acl_nfs4.c index ebf9a46..c8f5937 100644 --- a/contrib/libarchive/libarchive/test/test_acl_nfs4.c +++ b/contrib/libarchive/libarchive/test/test_acl_nfs4.c @@ -174,8 +174,11 @@ set_acls(struct archive_entry *ae, struct acl_t *acls, int n) } static int -acl_match(struct acl_t *acl, int type, int permset, int tag, int qual, const char *name) +acl_match(struct acl_t *acl, int type, int permset, int tag, int qual, + const char *name) { + if (acl == NULL) + return (0); if (type != acl->type) return (0); if (permset != acl->permset) @@ -193,10 +196,12 @@ acl_match(struct acl_t *acl, int type, int permset, int tag, int qual, const cha if (name == NULL) { if (acl->name == NULL || acl->name[0] == '\0') return (1); + return (0); } if (acl->name == NULL) { if (name[0] == '\0') return (1); + return (0); } return (0 == strcmp(name, acl->name)); } diff --git a/contrib/libarchive/libarchive/test/test_acl_pax.c b/contrib/libarchive/libarchive/test/test_acl_pax.c index 464858f..5fcf61b 100644 --- a/contrib/libarchive/libarchive/test/test_acl_pax.c +++ b/contrib/libarchive/libarchive/test/test_acl_pax.c @@ -184,7 +184,7 @@ DEFINE_TEST(test_acl_pax) /* Write an archive to memory. */ assert(NULL != (a = archive_write_new())); assertA(0 == archive_write_set_format_pax(a)); - assertA(0 == archive_write_set_compression_none(a)); + assertA(0 == archive_write_add_filter_none(a)); assertA(0 == archive_write_set_bytes_per_block(a, 1)); assertA(0 == archive_write_set_bytes_in_last_block(a, 1)); assertA(0 == archive_write_open_memory(a, buff, sizeof(buff), &used)); diff --git a/contrib/libarchive/libarchive/test/test_acl_posix1e.c b/contrib/libarchive/libarchive/test/test_acl_posix1e.c index 2055682..9984d44 100644 --- a/contrib/libarchive/libarchive/test/test_acl_posix1e.c +++ b/contrib/libarchive/libarchive/test/test_acl_posix1e.c @@ -137,10 +137,12 @@ acl_match(struct acl_t *acl, int type, int permset, int tag, int qual, const cha if (name == NULL) { if (acl->name == NULL || acl->name[0] == '\0') return (1); + return (0); } if (acl->name == NULL) { if (name[0] == '\0') return (1); + return (0); } return (0 == strcmp(name, acl->name)); } diff --git a/contrib/libarchive/libarchive/test/test_archive_clear_error.c b/contrib/libarchive/libarchive/test/test_archive_clear_error.c index 43265b5..66dbe93e 100644 --- a/contrib/libarchive/libarchive/test/test_archive_clear_error.c +++ b/contrib/libarchive/libarchive/test/test_archive_clear_error.c @@ -38,5 +38,5 @@ DEFINE_TEST(test_archive_clear_error) assertEqualInt(0, archive_errno(a)); assertEqualString(NULL, archive_error_string(a)); - archive_read_finish(a); + archive_read_free(a); } diff --git a/contrib/libarchive/libarchive/test/test_archive_cmdline.c b/contrib/libarchive/libarchive/test/test_archive_cmdline.c new file mode 100644 index 0000000..a411821 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_archive_cmdline.c @@ -0,0 +1,141 @@ +/*- + * Copyright (c) 2012 Michihiro NAKAJIMA + * 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" +__FBSDID("$FreeBSD$"); + +#define __LIBARCHIVE_TEST +#include "archive_cmdline_private.h" + +DEFINE_TEST(test_archive_cmdline) +{ + struct archive_cmdline *cl; + + /* Command name only. */ + assert((cl = __archive_cmdline_allocate()) != NULL); + if (cl == NULL) + return; + assertEqualInt(ARCHIVE_OK, __archive_cmdline_parse(cl, "gzip")); + assertEqualInt(1, cl->argc); + assertEqualString("gzip", cl->path); + assertEqualString("gzip", cl->argv[0]); + assertEqualInt(ARCHIVE_OK, __archive_cmdline_free(cl)); + + assert((cl = __archive_cmdline_allocate()) != NULL); + if (cl == NULL) + return; + assertEqualInt(ARCHIVE_OK, __archive_cmdline_parse(cl, "gzip ")); + assertEqualInt(1, cl->argc); + failure("path should not include a space character"); + assertEqualString("gzip", cl->path); + failure("arg0 should not include a space character"); + assertEqualString("gzip", cl->argv[0]); + assertEqualInt(ARCHIVE_OK, __archive_cmdline_free(cl)); + + assert((cl = __archive_cmdline_allocate()) != NULL); + if (cl == NULL) + return; + assertEqualInt(ARCHIVE_OK, __archive_cmdline_parse(cl, + "/usr/bin/gzip ")); + assertEqualInt(1, cl->argc); + failure("path should be a full path"); + assertEqualString("/usr/bin/gzip", cl->path); + failure("arg0 should not be a full path"); + assertEqualString("gzip", cl->argv[0]); + assertEqualInt(ARCHIVE_OK, __archive_cmdline_free(cl)); + + /* A command line includes space characer. */ + assert((cl = __archive_cmdline_allocate()) != NULL); + if (cl == NULL) + return; + assertEqualInt(ARCHIVE_OK, __archive_cmdline_parse(cl, "\"gzip \"")); + assertEqualInt(1, cl->argc); + failure("path should include a space character"); + assertEqualString("gzip ", cl->path); + failure("arg0 should include a space character"); + assertEqualString("gzip ", cl->argv[0]); + assertEqualInt(ARCHIVE_OK, __archive_cmdline_free(cl)); + + /* A command line includes space characer: pattern 2.*/ + assert((cl = __archive_cmdline_allocate()) != NULL); + if (cl == NULL) + return; + assertEqualInt(ARCHIVE_OK, __archive_cmdline_parse(cl, "\"gzip \"x")); + assertEqualInt(1, cl->argc); + failure("path should include a space character"); + assertEqualString("gzip x", cl->path); + failure("arg0 should include a space character"); + assertEqualString("gzip x", cl->argv[0]); + assertEqualInt(ARCHIVE_OK, __archive_cmdline_free(cl)); + + /* A command line includes space characer: pattern 3.*/ + assert((cl = __archive_cmdline_allocate()) != NULL); + if (cl == NULL) + return; + assertEqualInt(ARCHIVE_OK, __archive_cmdline_parse(cl, + "\"gzip \"x\" s \"")); + assertEqualInt(1, cl->argc); + failure("path should include a space character"); + assertEqualString("gzip x s ", cl->path); + failure("arg0 should include a space character"); + assertEqualString("gzip x s ", cl->argv[0]); + assertEqualInt(ARCHIVE_OK, __archive_cmdline_free(cl)); + + /* A command line includes space characer: pattern 4.*/ + assert((cl = __archive_cmdline_allocate()) != NULL); + if (cl == NULL) + return; + assertEqualInt(ARCHIVE_OK, __archive_cmdline_parse(cl, + "\"gzip\\\" \"")); + assertEqualInt(1, cl->argc); + failure("path should include a space character"); + assertEqualString("gzip\" ", cl->path); + failure("arg0 should include a space character"); + assertEqualString("gzip\" ", cl->argv[0]); + assertEqualInt(ARCHIVE_OK, __archive_cmdline_free(cl)); + + /* A command name with a argument. */ + assert((cl = __archive_cmdline_allocate()) != NULL); + if (cl == NULL) + return; + assertEqualInt(ARCHIVE_OK, __archive_cmdline_parse(cl, "gzip -d")); + assertEqualInt(2, cl->argc); + assertEqualString("gzip", cl->path); + assertEqualString("gzip", cl->argv[0]); + assertEqualString("-d", cl->argv[1]); + assertEqualInt(ARCHIVE_OK, __archive_cmdline_free(cl)); + + /* A command name with two arguments. */ + assert((cl = __archive_cmdline_allocate()) != NULL); + if (cl == NULL) + return; + assertEqualInt(ARCHIVE_OK, __archive_cmdline_parse(cl, "gzip -d -q")); + assertEqualInt(3, cl->argc); + assertEqualString("gzip", cl->path); + assertEqualString("gzip", cl->argv[0]); + assertEqualString("-d", cl->argv[1]); + assertEqualString("-q", cl->argv[2]); + assertEqualInt(ARCHIVE_OK, __archive_cmdline_free(cl)); +} 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 d69054b..16cc805 100644 --- a/contrib/libarchive/libarchive/test/test_archive_read_close_twice.c +++ b/contrib/libarchive/libarchive/test/test_archive_read_close_twice.c @@ -39,5 +39,5 @@ DEFINE_TEST(test_archive_read_close_twice) assertEqualInt(0, archive_errno(a)); assertEqualString(NULL, archive_error_string(a)); - archive_read_finish(a); + archive_read_free(a); } 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 d30735e..3aba317 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 @@ -43,5 +43,5 @@ DEFINE_TEST(test_archive_read_close_twice_open_fd) assertEqualInt(0, archive_errno(a)); assertEqualString(NULL, archive_error_string(a)); - assertEqualInt(ARCHIVE_OK, archive_read_finish(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); } 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 456b6d6..f8253911 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 @@ -43,5 +43,5 @@ DEFINE_TEST(test_archive_read_close_twice_open_filename) assertEqualInt(0, archive_errno(a)); assertEqualString(NULL, archive_error_string(a)); - assertEqualInt(ARCHIVE_OK, archive_read_finish(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); } 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 new file mode 100644 index 0000000..9962cf7 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_archive_read_multiple_data_objects.c @@ -0,0 +1,372 @@ +/*- + * Copyright (c) 2011 Tim Kientzle + * Copyright (c) 2011-2012 Andres Mejia + * 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" +__FBSDID("$FreeBSD$"); + +#if defined(_WIN32) && !defined(__CYGWIN__) +#define open _open +#define close _close +#define read _read +#if !defined(__BORLANDC__) +#ifdef lseek +#undef lseek +#endif +#define lseek(f, o, w) _lseek(f, (long)(o), (int)(w)) +#endif +#endif + +static void +test_splitted_file(void) +{ + char buff[64]; + static const char *reffiles[] = + { + "test_read_splitted_rar_aa", + "test_read_splitted_rar_ab", + "test_read_splitted_rar_ac", + "test_read_splitted_rar_ad", + NULL + }; + const char test_txt[] = "test text document\r\n"; + int size = sizeof(test_txt)-1; + 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)); + assertEqualString("test.txt", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(20, archive_entry_size(ae)); + assertEqualInt(33188, archive_entry_mode(ae)); + assertA(size == archive_read_data(a, buff, size)); + assertEqualMem(buff, test_txt, size); + + /* Second header. */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("testlink", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(0, archive_entry_size(ae)); + assertEqualInt(41471, archive_entry_mode(ae)); + assertEqualString("test.txt", archive_entry_symlink(ae)); + assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff))); + + /* Third header. */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("testdir/test.txt", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(20, archive_entry_size(ae)); + assertEqualInt(33188, archive_entry_mode(ae)); + assertA(size == archive_read_data(a, buff, size)); + assertEqualMem(buff, test_txt, size); + + /* Fourth header. */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("testdir", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(0, archive_entry_size(ae)); + assertEqualInt(16877, archive_entry_mode(ae)); + + /* Fifth header. */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("testemptydir", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(0, archive_entry_size(ae)); + assertEqualInt(16877, archive_entry_mode(ae)); + + /* Test EOF */ + assertA(1 == archive_read_next_header(a, &ae)); + assertEqualInt(5, archive_file_count(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} + +static void +test_large_splitted_file(void) +{ + static const char *reffiles[] = + { + "test_read_large_splitted_rar_aa", + "test_read_large_splitted_rar_ab", + "test_read_large_splitted_rar_ac", + "test_read_large_splitted_rar_ad", + "test_read_large_splitted_rar_ae", + NULL + }; + const char test_txt[] = "gin-bottom: 0in\"><BR>\n</P>\n</BODY>\n</HTML>"; + int size = 241647978, offset = 0; + char buff[64]; + 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)); + assertEqualString("ppmd_lzss_conversion_test.txt", + archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(size, archive_entry_size(ae)); + assertEqualInt(33188, archive_entry_mode(ae)); + while (offset + (int)sizeof(buff) < size) + { + assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff))); + offset += sizeof(buff); + } + assertA(size - offset == archive_read_data(a, buff, size - offset)); + assertEqualMem(buff, test_txt, size - offset); + + /* Test EOF */ + assertA(1 == archive_read_next_header(a, &ae)); + assertEqualInt(1, archive_file_count(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} + +#define BLOCK_SIZE 10240 +struct mydata { + char *filename; + void *buffer; + int fd; +}; + +static int +file_open(struct archive *a, void *data) +{ + struct mydata *mydata = (struct mydata *)data; + (void)a; + if (mydata->fd < 0) + { + mydata->fd = open(mydata->filename, O_RDONLY | O_BINARY); + if (mydata->fd >= 0) + { + if ((mydata->buffer = (void*)calloc(1, BLOCK_SIZE)) == NULL) + return (ARCHIVE_FAILED); + } + } + return (ARCHIVE_OK); +} +static ssize_t +file_read(struct archive *a, void *data, const void **buff) +{ + struct mydata *mydata = (struct mydata *)data; + (void)a; + *buff = mydata->buffer; + return read(mydata->fd, mydata->buffer, BLOCK_SIZE); +} +static int64_t +file_skip(struct archive *a, void *data, int64_t request) +{ + struct mydata *mydata = (struct mydata *)data; + int64_t result = lseek(mydata->fd, SEEK_CUR, request); + if (result >= 0) + return result; + archive_set_error(a, errno, "Error seeking in '%s'", mydata->filename); + return -1; +} +static int +file_switch(struct archive *a, void *data1, void *data2) +{ + struct mydata *mydata1 = (struct mydata *)data1; + struct mydata *mydata2 = (struct mydata *)data2; + int r = (ARCHIVE_OK); + + (void)a; + if (mydata1 && mydata1->fd >= 0) + { + close(mydata1->fd); + free(mydata1->buffer); + mydata1->buffer = NULL; + mydata1->fd = -1; + } + if (mydata2) + { + r = file_open(a, mydata2); + } + return (r); +} +static int +file_close(struct archive *a, void *data) +{ + struct mydata *mydata = (struct mydata *)data; + if (mydata == NULL) + return (ARCHIVE_FATAL); + file_switch(a, mydata, NULL); + free(mydata->filename); + free(mydata); + return (ARCHIVE_OK); +} +static int64_t +file_seek(struct archive *a, void *data, int64_t request, int whence) +{ + struct mydata *mine = (struct mydata *)data; + int64_t r; + + (void)a; + r = lseek(mine->fd, request, whence); + if (r >= 0) + return r; + return (ARCHIVE_FATAL); +} + +static void +test_customized_multiple_data_objects(void) +{ + char buff[64]; + static const char *reffiles[] = + { + "test_read_splitted_rar_aa", + "test_read_splitted_rar_ab", + "test_read_splitted_rar_ac", + "test_read_splitted_rar_ad", + NULL + }; + const char test_txt[] = "test text document\r\n"; + int size = sizeof(test_txt)-1; + struct archive_entry *ae; + struct archive *a; + struct mydata *mydata; + const char *filename = *reffiles; + int i; + + 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)); + + for (i = 0; filename != NULL;) + { + assert((mydata = (struct mydata *)calloc(1, sizeof(*mydata))) != NULL); + if (mydata == NULL) { + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + return; + } + assert((mydata->filename = + (char *)calloc(1, strlen(filename) + 1)) != NULL); + if (mydata->filename == NULL) { + free(mydata); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + return; + } + strcpy(mydata->filename, filename); + mydata->fd = -1; + filename = reffiles[++i]; + assertA(0 == archive_read_append_callback_data(a, mydata)); + } + assertA(0 == archive_read_set_open_callback(a, file_open)); + assertA(0 == archive_read_set_read_callback(a, file_read)); + assertA(0 == archive_read_set_skip_callback(a, file_skip)); + assertA(0 == archive_read_set_close_callback(a, file_close)); + assertA(0 == archive_read_set_switch_callback(a, file_switch)); + assertA(0 == archive_read_set_seek_callback(a, file_seek)); + assertA(0 == archive_read_open1(a)); + + /* First header. */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("test.txt", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(20, archive_entry_size(ae)); + assertEqualInt(33188, archive_entry_mode(ae)); + assertA(size == archive_read_data(a, buff, size)); + assertEqualMem(buff, test_txt, size); + + /* Second header. */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("testlink", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(0, archive_entry_size(ae)); + assertEqualInt(41471, archive_entry_mode(ae)); + assertEqualString("test.txt", archive_entry_symlink(ae)); + assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff))); + + /* Third header. */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("testdir/test.txt", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(20, archive_entry_size(ae)); + assertEqualInt(33188, archive_entry_mode(ae)); + assertA(size == archive_read_data(a, buff, size)); + assertEqualMem(buff, test_txt, size); + + /* Fourth header. */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("testdir", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(0, archive_entry_size(ae)); + assertEqualInt(16877, archive_entry_mode(ae)); + + /* Fifth header. */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("testemptydir", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(0, archive_entry_size(ae)); + assertEqualInt(16877, archive_entry_mode(ae)); + + /* Test EOF */ + assertA(1 == archive_read_next_header(a, &ae)); + assertEqualInt(5, archive_file_count(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} + +DEFINE_TEST(test_archive_read_multiple_data_objects) +{ + test_splitted_file(); + test_large_splitted_file(); + test_customized_multiple_data_objects(); +} 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 7ff3c26..31d575f 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 @@ -45,7 +45,7 @@ test(int pristine) should(a, ARCHIVE_FAILED, "fubar", "snafu", NULL); should(a, ARCHIVE_FAILED, "fubar", "snafu", "betcha"); - archive_read_finish(a); + archive_read_free(a); } DEFINE_TEST(test_archive_read_set_filter_option) 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 e1aac57..2d7acf3 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 @@ -57,7 +57,7 @@ test(int pristine) should(a, known_option_rv, NULL, "joliet", NULL); should(a, known_option_rv, NULL, "joliet", NULL); - archive_read_finish(a); + archive_read_free(a); } DEFINE_TEST(test_archive_read_set_format_option) 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 2ad5b0b..0b816b7 100644 --- a/contrib/libarchive/libarchive/test/test_archive_read_set_option.c +++ b/contrib/libarchive/libarchive/test/test_archive_read_set_option.c @@ -59,7 +59,7 @@ test(int pristine) should(a, known_option_rv, NULL, "joliet", NULL); should(a, known_option_rv, NULL, "joliet", NULL); - archive_read_finish(a); + archive_read_free(a); } DEFINE_TEST(test_archive_read_set_option) 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 297d8fe..a8c68d7 100644 --- a/contrib/libarchive/libarchive/test/test_archive_read_set_options.c +++ b/contrib/libarchive/libarchive/test/test_archive_read_set_options.c @@ -116,7 +116,7 @@ test(int pristine) archive_error_string(a)); } - archive_read_finish(a); + archive_read_free(a); } DEFINE_TEST(test_archive_read_set_options) diff --git a/contrib/libarchive/libarchive/test/test_archive_set_error.c b/contrib/libarchive/libarchive/test/test_archive_set_error.c index 18897fb..b83c08c 100644 --- a/contrib/libarchive/libarchive/test/test_archive_set_error.c +++ b/contrib/libarchive/libarchive/test/test_archive_set_error.c @@ -47,5 +47,5 @@ DEFINE_TEST(test_archive_set_error) test(a, -1, "tuvw"); test(a, 34, "XYZ"); - archive_read_finish(a); + archive_read_free(a); } 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 new file mode 100644 index 0000000..ff5ca5b --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_archive_write_add_filter_by_name.c @@ -0,0 +1,194 @@ +/*- + * Copyright (c) 2012 Michihiro NAKAJIMA + * 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" +__FBSDID("$FreeBSD$"); + +static void +test_filter_by_name(const char *filter_name, int filter_code, + int (*can_filter_prog)(void)) +{ + struct archive_entry *ae; + struct archive *a; + size_t used; + size_t buffsize = 1024 * 128; + char *buff; + int r; + + assert((buff = malloc(buffsize)) != NULL); + if (buff == NULL) + return; + + /* Create a new archive in memory. */ + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); + r = archive_write_add_filter_by_name(a, filter_name); + if (r == ARCHIVE_WARN) { + if (!can_filter_prog()) { + skipping("%s filter not suported on this platform", + filter_name); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + free(buff); + return; + } + } else if (r == ARCHIVE_FATAL && + (strcmp(archive_error_string(a), + "lzma compression not supported on this platform") == 0 || + strcmp(archive_error_string(a), + "xz compression not supported on this platform") == 0)) { + skipping("%s filter not suported on this platform", filter_name); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + free(buff); + return; + } else { + if (!assertEqualIntA(a, ARCHIVE_OK, r)) { + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + free(buff); + return; + } + } + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_per_block(a, 10)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, buffsize, &used)); + + /* + * Write a file to it. + */ + assert((ae = archive_entry_new()) != NULL); + archive_entry_set_mtime(ae, 1, 0); + assertEqualInt(1, archive_entry_mtime(ae)); + archive_entry_set_ctime(ae, 1, 0); + assertEqualInt(1, archive_entry_ctime(ae)); + archive_entry_set_atime(ae, 1, 0); + assertEqualInt(1, archive_entry_atime(ae)); + archive_entry_copy_pathname(ae, "file"); + assertEqualString("file", archive_entry_pathname(ae)); + archive_entry_set_mode(ae, AE_IFREG | 0755); + assertEqualInt((AE_IFREG | 0755), archive_entry_mode(ae)); + archive_entry_set_size(ae, 8); + assertEqualInt(0, archive_write_header(a, ae)); + archive_entry_free(ae); + assertEqualInt(8, archive_write_data(a, "12345678", 8)); + + /* Close out the archive. */ + assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + /* + * Now, read the data back. + */ + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used)); + + /* + * Read and verify the file. + */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualInt(1, archive_entry_mtime(ae)); + assertEqualString("file", archive_entry_pathname(ae)); + assertEqualInt(AE_IFREG, archive_entry_filetype(ae)); + assertEqualInt(8, archive_entry_size(ae)); + + /* Verify the end of the archive. */ + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + + /* Verify archive format. */ + assertEqualIntA(a, filter_code, archive_filter_code(a, 0)); + assertEqualIntA(a, ARCHIVE_FORMAT_TAR_USTAR, archive_format(a)); + + assertEqualInt(ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + free(buff); +} + +static int +canAlways(void) +{ + return 1; +} + +static int +cannot(void) +{ + return 0; +} + +DEFINE_TEST(test_archive_write_add_filter_by_name_b64encode) +{ + test_filter_by_name("b64encode", ARCHIVE_FILTER_UU, canAlways); +} + +DEFINE_TEST(test_archive_write_add_filter_by_name_bzip2) +{ + test_filter_by_name("bzip2", ARCHIVE_FILTER_BZIP2, canBzip2); +} + +DEFINE_TEST(test_archive_write_add_filter_by_name_compress) +{ + test_filter_by_name("compress", ARCHIVE_FILTER_COMPRESS, canAlways); +} + +DEFINE_TEST(test_archive_write_add_filter_by_name_grzip) +{ + test_filter_by_name("grzip", ARCHIVE_FILTER_GRZIP, canGrzip); +} + +DEFINE_TEST(test_archive_write_add_filter_by_name_gzip) +{ + test_filter_by_name("gzip", ARCHIVE_FILTER_GZIP, canGzip); +} + +DEFINE_TEST(test_archive_write_add_filter_by_name_lrzip) +{ + test_filter_by_name("lrzip", ARCHIVE_FILTER_LRZIP, canLrzip); +} + +DEFINE_TEST(test_archive_write_add_filter_by_name_lzip) +{ + test_filter_by_name("lzip", ARCHIVE_FILTER_LZIP, cannot); +} + +DEFINE_TEST(test_archive_write_add_filter_by_name_lzma) +{ + test_filter_by_name("lzma", ARCHIVE_FILTER_LZMA, cannot); +} + +DEFINE_TEST(test_archive_write_add_filter_by_name_lzop) +{ + test_filter_by_name("lzop", ARCHIVE_FILTER_LZOP, canLzop); +} + +DEFINE_TEST(test_archive_write_add_filter_by_name_uuencode) +{ + test_filter_by_name("uuencode", ARCHIVE_FILTER_UU, canAlways); +} + +DEFINE_TEST(test_archive_write_add_filter_by_name_xz) +{ + test_filter_by_name("xz", ARCHIVE_FILTER_XZ, cannot); +} 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 87a3e53..ab8e6777 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 @@ -35,7 +35,7 @@ test(int pristine) struct archive* a = archive_write_new(); if (!pristine) - archive_write_set_compression_gzip(a); + archive_write_add_filter_gzip(a); should(a, ARCHIVE_OK, NULL, NULL, NULL); should(a, ARCHIVE_OK, "", "", ""); @@ -45,7 +45,7 @@ test(int pristine) should(a, ARCHIVE_FAILED, "fubar", "snafu", NULL); should(a, ARCHIVE_FAILED, "fubar", "snafu", "betcha"); - archive_write_finish(a); + archive_write_free(a); } DEFINE_TEST(test_archive_write_set_filter_option) 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 new file mode 100644 index 0000000..b5fad2a --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_archive_write_set_format_by_name.c @@ -0,0 +1,285 @@ +/*- + * Copyright (c) 2012 Michihiro NAKAJIMA + * 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" +__FBSDID("$FreeBSD$"); + +static void +test_format_by_name(const char *format_name, const char *compression_type, + int format_id, int dot_stored, const void *image, size_t image_size) +{ + struct archive_entry *ae; + struct archive *a; + size_t used; + size_t buffsize = 1024 * 1024; + char *buff; + int r; + + assert((buff = malloc(buffsize)) != NULL); + if (buff == NULL) + return; + + /* Create a new archive in memory. */ + assert((a = archive_write_new()) != NULL); + r = archive_write_set_format_by_name(a, format_name); + if (r == ARCHIVE_WARN) { + skipping("%s format not fully supported on this platform", + compression_type); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + free(buff); + return; + } + assertEqualIntA(a, ARCHIVE_OK, r); + if (compression_type != NULL && + ARCHIVE_OK != archive_write_set_format_option(a, format_name, + "compression", compression_type)) { + skipping("%s writing not fully supported on this platform", + compression_type); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + free(buff); + return; + } + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, buffsize, &used)); + + /* + * Write a file to it. + */ + assert((ae = archive_entry_new()) != NULL); + archive_entry_set_mtime(ae, 1, 0); + assertEqualInt(1, archive_entry_mtime(ae)); + archive_entry_set_ctime(ae, 1, 0); + assertEqualInt(1, archive_entry_ctime(ae)); + archive_entry_set_atime(ae, 1, 0); + assertEqualInt(1, archive_entry_atime(ae)); + archive_entry_copy_pathname(ae, "file"); + assertEqualString("file", archive_entry_pathname(ae)); + archive_entry_set_mode(ae, AE_IFREG | 0755); + assertEqualInt((AE_IFREG | 0755), archive_entry_mode(ae)); + archive_entry_set_size(ae, 8); + assertEqualInt(0, archive_write_header(a, ae)); + archive_entry_free(ae); + assertEqualInt(8, archive_write_data(a, "12345678", 8)); + + /* Close out the archive. */ + assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + if (image && image_size > 0) { + assertEqualMem(buff, image, image_size); + } + if (format_id > 0) { + /* + * Now, read the data back. + */ + /* With the test memory reader -- seeking mode. */ + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, + read_open_memory_seek(a, buff, used, 7)); + + if (dot_stored & 1) { + assertEqualIntA(a, ARCHIVE_OK, + archive_read_next_header(a, &ae)); + assertEqualString(".", archive_entry_pathname(ae)); + assertEqualInt(AE_IFDIR, archive_entry_filetype(ae)); + } + /* + * Read and verify the file. + */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualInt(1, archive_entry_mtime(ae)); + if (dot_stored & 2) { + assertEqualString("./file", archive_entry_pathname(ae)); + } else { + assertEqualString("file", archive_entry_pathname(ae)); + } + assertEqualInt(AE_IFREG, archive_entry_filetype(ae)); + assertEqualInt(8, archive_entry_size(ae)); + + /* Verify the end of the archive. */ + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + + /* Verify archive format. */ + assertEqualIntA(a, ARCHIVE_FILTER_NONE, + archive_filter_code(a, 0)); + assertEqualIntA(a, format_id, archive_format(a)); + + assertEqualInt(ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + } + free(buff); +} + +DEFINE_TEST(test_archive_write_set_format_by_name_7zip) +{ + test_format_by_name("7zip", "copy", ARCHIVE_FORMAT_7ZIP, 0, + "\x37\x7a\xbc\xaf\x27\x1c\x00\x03", 8); +} + +DEFINE_TEST(test_archive_write_set_format_by_name_ar) +{ + test_format_by_name("ar", NULL, ARCHIVE_FORMAT_AR, 0, NULL, 0); +} + +DEFINE_TEST(test_archive_write_set_format_by_name_arbsd) +{ + test_format_by_name("arbsd", NULL, ARCHIVE_FORMAT_AR, 0, NULL, 0); +} + +DEFINE_TEST(test_archive_write_set_format_by_name_argnu) +{ + test_format_by_name("argnu", NULL, ARCHIVE_FORMAT_AR_GNU, 0, NULL, 0); +} + +DEFINE_TEST(test_archive_write_set_format_by_name_arsvr4) +{ + test_format_by_name("arsvr4", NULL, ARCHIVE_FORMAT_AR_GNU, 0, NULL, 0); +} + +DEFINE_TEST(test_archive_write_set_format_by_name_bsdtar) +{ + test_format_by_name("bsdtar", NULL, ARCHIVE_FORMAT_TAR_USTAR, 0, NULL, 0); +} + +DEFINE_TEST(test_archive_write_set_format_by_name_cd9660) +{ + test_format_by_name("cd9660", NULL, ARCHIVE_FORMAT_ISO9660_ROCKRIDGE, 1, + NULL, 0); +} + +DEFINE_TEST(test_archive_write_set_format_by_name_cpio) +{ + test_format_by_name("cpio", NULL, ARCHIVE_FORMAT_CPIO_POSIX, 0, NULL, 0); +} + +DEFINE_TEST(test_archive_write_set_format_by_name_gnutar) +{ + test_format_by_name("gnutar", NULL, ARCHIVE_FORMAT_TAR_GNUTAR, 0, + NULL, 0); +} + +DEFINE_TEST(test_archive_write_set_format_by_name_iso) +{ + test_format_by_name("iso", NULL, ARCHIVE_FORMAT_ISO9660_ROCKRIDGE, 1, + NULL, 0); +} + +DEFINE_TEST(test_archive_write_set_format_by_name_iso9660) +{ + test_format_by_name("iso9660", NULL, ARCHIVE_FORMAT_ISO9660_ROCKRIDGE, 1, + NULL, 0); +} + +DEFINE_TEST(test_archive_write_set_format_by_name_mtree) +{ + test_format_by_name("mtree", NULL, ARCHIVE_FORMAT_MTREE, 2, NULL, 0); +} + +DEFINE_TEST(test_archive_write_set_format_by_name_mtree_classic) +{ + test_format_by_name("mtree-classic", NULL, ARCHIVE_FORMAT_MTREE, 1, + NULL, 0); +} + +DEFINE_TEST(test_archive_write_set_format_by_name_newc) +{ + test_format_by_name("newc", NULL, ARCHIVE_FORMAT_CPIO_SVR4_NOCRC, 0, + NULL, 0); +} + +DEFINE_TEST(test_archive_write_set_format_by_name_odc) +{ + test_format_by_name("odc", NULL, ARCHIVE_FORMAT_CPIO_POSIX, 0, NULL, 0); +} + +DEFINE_TEST(test_archive_write_set_format_by_name_oldtar) +{ + test_format_by_name("oldtar", NULL, ARCHIVE_FORMAT_TAR, 0, NULL, 0); +} + +DEFINE_TEST(test_archive_write_set_format_by_name_pax) +{ + test_format_by_name("pax", NULL, ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE, 0, + NULL, 0); +} + +DEFINE_TEST(test_archive_write_set_format_by_name_paxr) +{ + test_format_by_name("paxr", NULL, ARCHIVE_FORMAT_TAR_USTAR, 0, NULL, 0); +} + +DEFINE_TEST(test_archive_write_set_format_by_name_posix) +{ + test_format_by_name("posix", NULL, ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE, 0, + NULL, 0); +} + +DEFINE_TEST(test_archive_write_set_format_by_name_rpax) +{ + test_format_by_name("rpax", NULL, ARCHIVE_FORMAT_TAR_USTAR, 0, NULL, 0); +} + +DEFINE_TEST(test_archive_write_set_format_by_name_shar) +{ + test_format_by_name("shar", NULL, -1, 0, + "#!/bin/sh\n# This is a shell archive\n", 36); +} + +DEFINE_TEST(test_archive_write_set_format_by_name_shardump) +{ + test_format_by_name("shardump", NULL, -1, 0, + "#!/bin/sh\n# This is a shell archive\n", 36); +} + +DEFINE_TEST(test_archive_write_set_format_by_name_ustar) +{ + test_format_by_name("ustar", NULL, ARCHIVE_FORMAT_TAR_USTAR, 0, NULL, 0); +} + +DEFINE_TEST(test_archive_write_set_format_by_name_v7tar) +{ + test_format_by_name("v7tar", NULL, ARCHIVE_FORMAT_TAR, 0, NULL, 0); +} + +DEFINE_TEST(test_archive_write_set_format_by_name_v7) +{ + test_format_by_name("v7", NULL, ARCHIVE_FORMAT_TAR, 0, NULL, 0); +} + +DEFINE_TEST(test_archive_write_set_format_by_name_xar) +{ + test_format_by_name("xar", "gzip", ARCHIVE_FORMAT_XAR, 0, NULL, 0); +} + +DEFINE_TEST(test_archive_write_set_format_by_name_zip) +{ + test_format_by_name("zip", "store", ARCHIVE_FORMAT_ZIP, 0, NULL, 0); +} 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 ee53ca4..d964df4 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 @@ -57,7 +57,7 @@ test(int pristine) should(a, known_option_rv, NULL, "joliet", NULL); should(a, known_option_rv, NULL, "joliet", NULL); - archive_write_finish(a); + archive_write_free(a); } DEFINE_TEST(test_archive_write_set_format_option) 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 a7957ed..2778234 100644 --- a/contrib/libarchive/libarchive/test/test_archive_write_set_option.c +++ b/contrib/libarchive/libarchive/test/test_archive_write_set_option.c @@ -36,7 +36,7 @@ test(int pristine) int known_option_rv = pristine ? ARCHIVE_FAILED : ARCHIVE_OK; if (!pristine) { - archive_write_set_compression_gzip(a); + archive_write_add_filter_gzip(a); archive_write_set_format_iso9660(a); } @@ -59,7 +59,7 @@ test(int pristine) should(a, known_option_rv, NULL, "joliet", NULL); should(a, known_option_rv, NULL, "joliet", NULL); - archive_write_finish(a); + archive_write_free(a); } DEFINE_TEST(test_archive_write_set_option) 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 57aba98..db7e50e 100644 --- a/contrib/libarchive/libarchive/test/test_archive_write_set_options.c +++ b/contrib/libarchive/libarchive/test/test_archive_write_set_options.c @@ -37,7 +37,7 @@ test(int pristine) int known_option_rv = pristine ? ARCHIVE_FAILED : ARCHIVE_OK; if (!pristine) { - archive_write_set_compression_gzip(a); + archive_write_add_filter_gzip(a); archive_write_set_format_iso9660(a); } @@ -116,7 +116,7 @@ test(int pristine) archive_error_string(a)); } - archive_write_finish(a); + archive_write_free(a); } DEFINE_TEST(test_archive_write_set_options) diff --git a/contrib/libarchive/libarchive/test/test_compat_bzip2.c b/contrib/libarchive/libarchive/test/test_compat_bzip2.c index 2b6aa1d..21417be 100644 --- a/contrib/libarchive/libarchive/test/test_compat_bzip2.c +++ b/contrib/libarchive/libarchive/test/test_compat_bzip2.c @@ -67,13 +67,13 @@ compat_bzip2(const char *name) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify that the format detection worked. */ - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_BZIP2); - assertEqualString(archive_compression_name(a), "bzip2"); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_BZIP2); + assertEqualString(archive_filter_name(a, 0), "bzip2"); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR); assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_BZIP2); - assertEqualString(archive_compression_name(a), "bzip2"); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_BZIP2); + assertEqualString(archive_filter_name(a, 0), "bzip2"); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR); assertEqualInt(ARCHIVE_OK, archive_read_free(a)); diff --git a/contrib/libarchive/libarchive/test/test_compat_cpio.c b/contrib/libarchive/libarchive/test/test_compat_cpio.c index 40a6c41..3c74cc3 100644 --- a/contrib/libarchive/libarchive/test/test_compat_cpio.c +++ b/contrib/libarchive/libarchive/test/test_compat_cpio.c @@ -90,7 +90,7 @@ test_compat_cpio_1(void) assertEqualInt(0100644, archive_entry_mode(ae)); /* Verify that the format detection worked. */ - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_NONE); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_NONE); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_CPIO_SVR4_NOCRC); assertEqualInt(ARCHIVE_OK, archive_read_close(a)); diff --git a/contrib/libarchive/libarchive/test/test_compat_gtar.c b/contrib/libarchive/libarchive/test/test_compat_gtar.c index 98455b8..e059999 100644 --- a/contrib/libarchive/libarchive/test/test_compat_gtar.c +++ b/contrib/libarchive/libarchive/test/test_compat_gtar.c @@ -99,7 +99,7 @@ test_compat_gtar_1(void) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify that the format detection worked. */ - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_NONE); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_NONE); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_GNUTAR); assertEqualInt(ARCHIVE_OK, archive_read_close(a)); diff --git a/contrib/libarchive/libarchive/test/test_compat_gzip.c b/contrib/libarchive/libarchive/test/test_compat_gzip.c index 82ed25b..af71641 100644 --- a/contrib/libarchive/libarchive/test/test_compat_gzip.c +++ b/contrib/libarchive/libarchive/test/test_compat_gzip.c @@ -74,8 +74,8 @@ verify(const char *name) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify that the format detection worked. */ - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_GZIP); - assertEqualString(archive_compression_name(a), "gzip"); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_GZIP); + assertEqualString(archive_filter_name(a, 0), "gzip"); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR); assertEqualInt(ARCHIVE_OK, archive_read_close(a)); diff --git a/contrib/libarchive/libarchive/test/test_compat_lzip.c b/contrib/libarchive/libarchive/test/test_compat_lzip.c index f474cd4..8f4e06d 100644 --- a/contrib/libarchive/libarchive/test/test_compat_lzip.c +++ b/contrib/libarchive/libarchive/test/test_compat_lzip.c @@ -121,8 +121,8 @@ compat_lzip(const char *name) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify that the format detection worked. */ - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_LZIP); - assertEqualString(archive_compression_name(a), "lzip"); + 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)); diff --git a/contrib/libarchive/libarchive/test/test_compat_lzma.c b/contrib/libarchive/libarchive/test/test_compat_lzma.c index 4d3eab3..66fb9f1 100644 --- a/contrib/libarchive/libarchive/test/test_compat_lzma.c +++ b/contrib/libarchive/libarchive/test/test_compat_lzma.c @@ -130,8 +130,8 @@ compat_lzma(const char *name) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify that the format detection worked. */ - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_LZMA); - assertEqualString(archive_compression_name(a), "lzma"); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_LZMA); + assertEqualString(archive_filter_name(a, 0), "lzma"); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR); assertEqualInt(ARCHIVE_OK, archive_read_close(a)); diff --git a/contrib/libarchive/libarchive/test/test_compat_lzop.c b/contrib/libarchive/libarchive/test/test_compat_lzop.c new file mode 100644 index 0000000..cd43afc --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_compat_lzop.c @@ -0,0 +1,131 @@ +/*- + * Copyright (c) 2003-2008 Tim Kientzle + * Copyright (c) 2012 Michihiro NAKAJIMA + * 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" +__FBSDID("$FreeBSD$"); + +/* + * Verify our ability to read sample files compatibly with lzop. + * + * In particular: + * * lzop will stop at the end of a stream if the following data + * doesn't start with a lzop signature. + * + */ + +DEFINE_TEST(test_compat_lzop) +{ + const char *sample1 = "test_compat_lzop_1.tar.lzo"; + const char *sample2 = "test_compat_lzop_2.tar.lzo"; + const char *sample3 = "test_compat_lzop_3.tar.lzo"; + struct archive_entry *ae; + struct archive *a; + int r; + + /* + * Test1: tar ball compressed in one block. + */ + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + r = archive_read_support_filter_lzop(a); + if (r == ARCHIVE_WARN) { + skipping("lzop 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(sample1); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_open_filename(a, sample1, 2)); + + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("INSTALL", archive_entry_pathname(ae)); + + /* 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_LZOP); + assertEqualString(archive_filter_name(a, 0), "lzop"); + assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR); + + assertEqualInt(ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + + /* + * Test2: tar ball compressed in multi blocks. + */ + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + extract_reference_file(sample2); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_open_filename(a, sample2, 2)); + + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("file1", archive_entry_pathname(ae)); + assertEqualInt(19, archive_entry_size(ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("file2", archive_entry_pathname(ae)); + assertEqualInt(262144, archive_entry_size(ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("file3", archive_entry_pathname(ae)); + assertEqualInt(19, archive_entry_size(ae)); + + /* 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_LZOP); + assertEqualString(archive_filter_name(a, 0), "lzop"); + assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR); + + assertEqualInt(ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + + /* + * Test3: tar ball compressed in one block with junk data. + */ + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + extract_reference_file(sample3); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_open_filename(a, sample3, 2)); + + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("INSTALL", archive_entry_pathname(ae)); + + /* 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_LZOP); + assertEqualString(archive_filter_name(a, 0), "lzop"); + assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR); + + assertEqualInt(ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} diff --git a/contrib/libarchive/libarchive/test/test_compat_lzop_1.tar.lzo.uu b/contrib/libarchive/libarchive/test/test_compat_lzop_1.tar.lzo.uu new file mode 100644 index 0000000..9eeca6a --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_compat_lzop_1.tar.lzo.uu @@ -0,0 +1,30 @@ +begin 664 test_compat_lzop_1.tar.lzo +MB4Q:3P`-"AH*$#`@8`E``04#```!``"!M%"`FEX`````%G1E<W1?8V]M<&%T +M7VQZ;W!?,2YT87+U<0SS```,````!&]C)A,T!4E.4U1!3$P`(#L```LP,#`V +M-C0@`#`P,3<U,"H=`#!@```(,C8U-2`Q,3<Q,S4U,#,W,B`P,3$U,3<`(#`@ +M.U`"[`L(=7-T87(`,#!C=67H`C,<`#Y\`&49,)`;90$@,PP!(')0```]36]R +M92!C;VUP;&5T92!B=6EL9"!D;V-U;65N=&%T:6]N(&ES(&%V86EL86)L92!O +M;B!T:&4@;&EB87)C:&EV90I7:6MI.B`@:'1T<#HO+RA@```]+F=O;V=L96-O +M9&4N8V]M+PH*3VX@;6]S="!5;FEX+6QI:V4@<WES=&5M<RP@>6]U('-H;W5L +M9"!B92!A8FQE('1O(&EN<W1A;&P@;&EB8;0-``HL"F)S9'1A<BP@86YD(&)S +M9&-P:6\@=7-I;F<@?!(#9F]L;&]W=`$`"V-O;6UO;B!S=&5P<SH*("`@("XO +M8V]N9FEG=7)EGP%M86LH(0`@S`T!"@I)9I01#FYE960@=&\@8W5S=&]M:7IE +MG`L`&'1A<F=E="!D:7)E8W1O<FEE<R!O<B!O=&AE<G=I<V4@861J=7-T"G1H +M9<@I"'-E='1I;F<L('5SL`TI%`(,("TM:&5L<`IT;R!L:7-T@`PGBP(@;W!V +M+W,N)T0""&%R92!D979E;&]P8!PHI`6,(?P5`G5P9&%TD14**"P!`W-C<FEP +M=)P$C!70$P%F:6QET",$+V)I;B]S:*`#``$O875T;V=E;BYS:`H*5&\@8W)E +M;`H'82!D:7-T<FEB=603!2P@<&QE87-E9!N)%R=T`P1C:&5C:R<@O"2\+C9K +M`2`F)BI,!G@!:#*0#)@(A$8HL`AD/@%N;VXM*$0`)_H(=7.''B`B8V0("2(@ +M=71I;&ET>2`H82?@"@-F<F]M"FBP5)0$`RYO<F<O*6@\`F=E;F5R8!P!<W5I +M=)1<N&"8(P$@9F]R8$(*<B!P;&%T9F]R;2X*0W0,!B!R97%U:7)E<Y`?!&YA +M;64@;V:,`?1#!GD@8V]N=&%I;G@UC`8%3&ES=',N='B(,95$(M,/;W(B:!%@ +M&2?``;00!&5N=FER;VY\<0<N("!&;W(@97AA>'4"+"!T;PJL!`-W:71H(%AH +M;6!T!$UA8R!/4RQT%@$@8V%N)X`&+',,86YDO#.4(0(@+4<@(H0(`2(@?B\H +M;`D`#2UD;W=N;&]A9"UD:7(O"E1H92!R97-U;'0@=VEL;"!P=01P<')O<')I +M8"A\(I0F`BP@<V]LF40@W`$(;W(@<')O:F5C=`J$`@(@=&AA=)D38HI(9""0 +M&'!X!V-O<G)E<W!O;F1@)\A>?!\#('1O;VPND!`!9&5F8780;VXP.Q$@:7-L +M*<0K`V4@36%K98P.=!)U(@IW(F%L<V:'92"\'W]_96%D[#@N[`PJJ`0Y?`1\ +MC'`@)X`1)UX14V6H5"AH!0(@5VEK:7B'C!YT!@(@<VET98-.9G5R;(HL)A8N +I"B!R_!@@````CD@"``(``````````````````````````!$````````` +` +end diff --git a/contrib/libarchive/libarchive/test/test_compat_lzop_2.tar.lzo.uu b/contrib/libarchive/libarchive/test/test_compat_lzop_2.tar.lzo.uu new file mode 100644 index 0000000..07a0ee7 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_compat_lzop_2.tar.lzo.uu @@ -0,0 +1,39 @@ +begin 664 test_compat_lzop_2.tar.lzo +MB4Q:3P`-"AH*$#`@8`E``04#```!``"!M%"`F9,`````%G1E<W1?8V]M<&%T +M7VQZ;W!?,BYT87+[)0TH``0`````!3,8`"T1`V9I;&4Q`"`]```+,#`P-C8T +M(``P,#$W-3`J'0`PH```!C(S(#$R,#0P,3$T-#<W(#`Q,3,W,``@,"`]6`*T +M"PAU<W1A<@`P,&-U9:`"-10`/GP`I!EP&V4!(#44`2!P6``)8V]N=&5N=',@ +M;V8@CD$N"B!PC`(@`#Q``FT^,B`^@`4Z_0\Q=F4P,"?_#S4R-9Y_-3<@`$;\ +M#R`^Z`<@```````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M````````````````*7@!#P```````````````````````"`````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M``"+`````@``````````````````````````(``````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M`````````````````````````````````````````````````````(L````" +M```````````````````````````@```````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M````````````````````````````````````````````BP````(````````` +M`````````````````"`````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M``````````````````````````````````"+`````@`````````````````` +M````````(``````````````````````````````````````````````````` +M```````````````````````````````````+`````0`````````````````` +M```````1``````X`````H]OB&=8"```````@``````#?$``"9FEL93,@/OP7 +M"S`P,#8V-"``,#`Q-S4P*AT`,*````8R,R`Q,C`T,#$Q-#4V,R`P,3$S-C8` +M(#`@/EP"F`L(=7-T87(`,#!C=66<`380`#Y\`*09<!ME`2`V&`$@;UP`"6-O +M;G1E;G1S(&]F((Y!+@H@;X@"(```````,#P"#@`````````````````````` +'$0`````````` +` +end diff --git a/contrib/libarchive/libarchive/test/test_compat_lzop_3.tar.lzo.uu b/contrib/libarchive/libarchive/test/test_compat_lzop_3.tar.lzo.uu new file mode 100644 index 0000000..5291497 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_compat_lzop_3.tar.lzo.uu @@ -0,0 +1,32 @@ +begin 664 test_compat_lzop_3.tar.lzo +MB4Q:3P`-"AH*$#`@8`E``04#```!``"!M%"`FEX`````%G1E<W1?8V]M<&%T +M7VQZ;W!?,2YT87+U<0SS```,````!&]C)A,T!4E.4U1!3$P`(#L```LP,#`V +M-C0@`#`P,3<U,"H=`#!@```(,C8U-2`Q,3<Q,S4U,#,W,B`P,3$U,3<`(#`@ +M.U`"[`L(=7-T87(`,#!C=67H`C,<`#Y\`&49,)`;90$@,PP!(')0```]36]R +M92!C;VUP;&5T92!B=6EL9"!D;V-U;65N=&%T:6]N(&ES(&%V86EL86)L92!O +M;B!T:&4@;&EB87)C:&EV90I7:6MI.B`@:'1T<#HO+RA@```]+F=O;V=L96-O +M9&4N8V]M+PH*3VX@;6]S="!5;FEX+6QI:V4@<WES=&5M<RP@>6]U('-H;W5L +M9"!B92!A8FQE('1O(&EN<W1A;&P@;&EB8;0-``HL"F)S9'1A<BP@86YD(&)S +M9&-P:6\@=7-I;F<@?!(#9F]L;&]W=`$`"V-O;6UO;B!S=&5P<SH*("`@("XO +M8V]N9FEG=7)EGP%M86LH(0`@S`T!"@I)9I01#FYE960@=&\@8W5S=&]M:7IE +MG`L`&'1A<F=E="!D:7)E8W1O<FEE<R!O<B!O=&AE<G=I<V4@861J=7-T"G1H +M9<@I"'-E='1I;F<L('5SL`TI%`(,("TM:&5L<`IT;R!L:7-T@`PGBP(@;W!V +M+W,N)T0""&%R92!D979E;&]P8!PHI`6,(?P5`G5P9&%TD14**"P!`W-C<FEP +M=)P$C!70$P%F:6QET",$+V)I;B]S:*`#``$O875T;V=E;BYS:`H*5&\@8W)E +M;`H'82!D:7-T<FEB=603!2P@<&QE87-E9!N)%R=T`P1C:&5C:R<@O"2\+C9K +M`2`F)BI,!G@!:#*0#)@(A$8HL`AD/@%N;VXM*$0`)_H(=7.''B`B8V0("2(@ +M=71I;&ET>2`H82?@"@-F<F]M"FBP5)0$`RYO<F<O*6@\`F=E;F5R8!P!<W5I +M=)1<N&"8(P$@9F]R8$(*<B!P;&%T9F]R;2X*0W0,!B!R97%U:7)E<Y`?!&YA +M;64@;V:,`?1#!GD@8V]N=&%I;G@UC`8%3&ES=',N='B(,95$(M,/;W(B:!%@ +M&2?``;00!&5N=FER;VY\<0<N("!&;W(@97AA>'4"+"!T;PJL!`-W:71H(%AH +M;6!T!$UA8R!/4RQT%@$@8V%N)X`&+',,86YDO#.4(0(@+4<@(H0(`2(@?B\H +M;`D`#2UD;W=N;&]A9"UD:7(O"E1H92!R97-U;'0@=VEL;"!P=01P<')O<')I +M8"A\(I0F`BP@<V]LF40@W`$(;W(@<')O:F5C=`J$`@(@=&AA=)D38HI(9""0 +M&'!X!V-O<G)E<W!O;F1@)\A>?!\#('1O;VPND!`!9&5F8780;VXP.Q$@:7-L +M*<0K`V4@36%K98P.=!)U(@IW(F%L<V:'92"\'W]_96%D[#@N[`PJJ`0Y?`1\ +MC'`@)X`1)UX14V6H5"AH!0(@5VEK:7B'C!YT!@(@<VET98-.9G5R;(HL)A8N +M"B!R_!@@````CD@"``(``````````````````````````!$```````!4:&ES +M(&ES('5N<F5L871E9"!J=6YK(&1A=&$@870@=&AE(&5N9"!O9B!T:&4@9FEL +"90H` +` +end diff --git a/contrib/libarchive/libarchive/test/test_compat_mac.c b/contrib/libarchive/libarchive/test/test_compat_mac.c index 3cad9f3..c7e8525 100644 --- a/contrib/libarchive/libarchive/test/test_compat_mac.c +++ b/contrib/libarchive/libarchive/test/test_compat_mac.c @@ -127,7 +127,7 @@ test_compat_mac_1(void) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify that the format detection worked. */ - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_COMPRESS); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_GNUTAR); assertEqualInt(ARCHIVE_OK, archive_read_close(a)); @@ -197,7 +197,7 @@ test_compat_mac_2(void) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify that the format detection worked. */ - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_COMPRESS); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR); assertEqualInt(ARCHIVE_OK, archive_read_close(a)); diff --git a/contrib/libarchive/libarchive/test/test_compat_tar_hardlink.c b/contrib/libarchive/libarchive/test/test_compat_tar_hardlink.c index 0ce88e5..6459fed 100644 --- a/contrib/libarchive/libarchive/test/test_compat_tar_hardlink.c +++ b/contrib/libarchive/libarchive/test/test_compat_tar_hardlink.c @@ -89,7 +89,7 @@ test_compat_tar_hardlink_1(void) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify that the format detection worked. */ - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_NONE); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_NONE); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR); assertEqualInt(ARCHIVE_OK, archive_read_close(a)); diff --git a/contrib/libarchive/libarchive/test/test_compat_uudecode.c b/contrib/libarchive/libarchive/test/test_compat_uudecode.c new file mode 100644 index 0000000..95b1c9a --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_compat_uudecode.c @@ -0,0 +1,63 @@ +/*- + * Copyright (c) 2003-2007 Tim Kientzle + * Copyright (c) 2012 Michihiro NAKAJIMA + * 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" +__FBSDID("$FreeBSD$"); + +static char archive_data[] = { +"begin 644 test_read_uu.Z\n" +"M'YV0+@`('$BPH,&#\"!,J7,BP(4(8$&_4J`$\"`,08$F%4O)AQ(\\2/(#7&@#%C\n" +"M!@T8-##.L`$\"QL@:-F(``%'#H<V;.'/J!%!G#ITP<BS\"H).FS<Z$1(T>/1A2\n" +"IHU\"0%9=*G4JUJM6K6+-JW<JUJ]>O8,.*'4NVK-FS:-.J7<NVK=NW9P$`\n" +"`\n" +"end\n" +"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" +"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" +"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" +"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" +}; + +/* + * Compatibility: uudecode command ignores junk data placed ater the "end" + * marker. + */ +DEFINE_TEST(test_compat_uudecode) +{ + struct archive_entry *ae; + struct archive *a; + + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, + read_open_memory(a, archive_data, sizeof(archive_data), 2)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS); + assertEqualInt(archive_filter_code(a, 1), ARCHIVE_FILTER_UU); + assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} + diff --git a/contrib/libarchive/libarchive/test/test_compat_xz.c b/contrib/libarchive/libarchive/test/test_compat_xz.c index ff399b2..2ced943 100644 --- a/contrib/libarchive/libarchive/test/test_compat_xz.c +++ b/contrib/libarchive/libarchive/test/test_compat_xz.c @@ -69,8 +69,8 @@ compat_xz(const char *name) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify that the format detection worked. */ - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_XZ); - assertEqualString(archive_compression_name(a), "xz"); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_XZ); + assertEqualString(archive_filter_name(a, 0), "xz"); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR); assertEqualInt(ARCHIVE_OK, archive_read_close(a)); diff --git a/contrib/libarchive/libarchive/test/test_compat_zip.c b/contrib/libarchive/libarchive/test/test_compat_zip.c index 3ebf28c..6b6d894 100644 --- a/contrib/libarchive/libarchive/test/test_compat_zip.c +++ b/contrib/libarchive/libarchive/test/test_compat_zip.c @@ -62,7 +62,7 @@ test_compat_zip_1(void) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_NONE); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_NONE); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_ZIP); finish: diff --git a/contrib/libarchive/libarchive/test/test_empty_write.c b/contrib/libarchive/libarchive/test/test_empty_write.c index 0bf04fd..3483007 100644 --- a/contrib/libarchive/libarchive/test/test_empty_write.c +++ b/contrib/libarchive/libarchive/test/test_empty_write.c @@ -40,11 +40,14 @@ DEFINE_TEST(test_empty_write) /* Create a new archive in memory. */ assert((a = archive_write_new()) != NULL); assertA(0 == archive_write_set_format_ustar(a)); - r = archive_write_set_compression_gzip(a); - if (r == ARCHIVE_FATAL) { + r = archive_write_add_filter_gzip(a); + if (r != ARCHIVE_OK && !canGzip()) { skipping("Empty write to gzip-compressed archive"); } else { - assertEqualIntA(a, ARCHIVE_OK, r); + if (r != ARCHIVE_OK && canGzip()) + assertEqualIntA(a, ARCHIVE_WARN, r); + else + assertEqualIntA(a, ARCHIVE_OK, r); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, sizeof(buff), &used)); /* Write a file to it. */ @@ -71,11 +74,14 @@ DEFINE_TEST(test_empty_write) /* Create a new archive in memory. */ assert((a = archive_write_new()) != NULL); assertA(0 == archive_write_set_format_ustar(a)); - r = archive_write_set_compression_bzip2(a); - if (r == ARCHIVE_FATAL) { + r = archive_write_add_filter_bzip2(a); + if (r != ARCHIVE_OK && !canBzip2()) { skipping("Empty write to bzip2-compressed archive"); } else { - assertEqualIntA(a, ARCHIVE_OK, r); + if (r != ARCHIVE_OK && canBzip2()) + assertEqualIntA(a, ARCHIVE_WARN, r); + else + assertEqualIntA(a, ARCHIVE_OK, r); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, sizeof(buff), &used)); /* Write a file to it. */ @@ -101,7 +107,7 @@ DEFINE_TEST(test_empty_write) /* Create a new archive in memory. */ assert((a = archive_write_new()) != NULL); assertA(0 == archive_write_set_format_ustar(a)); - assertA(0 == archive_write_set_compression_none(a)); + assertA(0 == archive_write_add_filter_none(a)); assertA(0 == archive_write_open_memory(a, buff, sizeof(buff), &used)); /* Write a file to it. */ assert((ae = archive_entry_new()) != NULL); diff --git a/contrib/libarchive/libarchive/test/test_entry.c b/contrib/libarchive/libarchive/test/test_entry.c index 16f87da..151cd8e 100644 --- a/contrib/libarchive/libarchive/test/test_entry.c +++ b/contrib/libarchive/libarchive/test/test_entry.c @@ -696,6 +696,8 @@ DEFINE_TEST(test_entry) archive_entry_set_uid(e, 23); /* Retrieve a stat structure. */ assert((pst = archive_entry_stat(e)) != NULL); + if (pst == NULL) + return; /* Check that the values match. */ assertEqualInt(pst->st_atime, 456789); assertEqualInt(pst->st_ctime, 345678); @@ -717,33 +719,53 @@ DEFINE_TEST(test_entry) /* Changing any one value should update struct stat. */ archive_entry_set_atime(e, 456788, 0); assert((pst = archive_entry_stat(e)) != NULL); + if (pst == NULL) + return; assertEqualInt(pst->st_atime, 456788); archive_entry_set_ctime(e, 345677, 431); assert((pst = archive_entry_stat(e)) != NULL); + if (pst == NULL) + return; assertEqualInt(pst->st_ctime, 345677); archive_entry_set_dev(e, 122); assert((pst = archive_entry_stat(e)) != NULL); + if (pst == NULL) + return; assertEqualInt(pst->st_dev, 122); archive_entry_set_gid(e, 33); assert((pst = archive_entry_stat(e)) != NULL); + if (pst == NULL) + return; assertEqualInt(pst->st_gid, 33); archive_entry_set_ino(e, 233); assert((pst = archive_entry_stat(e)) != NULL); + if (pst == NULL) + return; assertEqualInt(pst->st_ino, 233); archive_entry_set_mode(e, 012344); assert((pst = archive_entry_stat(e)) != NULL); + if (pst == NULL) + return; assertEqualInt(pst->st_mode, 012344); archive_entry_set_mtime(e, 234566, 542); assert((pst = archive_entry_stat(e)) != NULL); + if (pst == NULL) + return; assertEqualInt(pst->st_mtime, 234566); archive_entry_set_nlink(e, 344); assert((pst = archive_entry_stat(e)) != NULL); + if (pst == NULL) + return; assertEqualInt(pst->st_nlink, 344); archive_entry_set_size(e, 123456788); assert((pst = archive_entry_stat(e)) != NULL); + if (pst == NULL) + return; assertEqualInt(pst->st_size, 123456788); archive_entry_set_uid(e, 22); assert((pst = archive_entry_stat(e)) != NULL); + if (pst == NULL) + return; assertEqualInt(pst->st_uid, 22); /* We don't need to check high-res fields here. */ diff --git a/contrib/libarchive/libarchive/test/test_filter_count.c b/contrib/libarchive/libarchive/test/test_filter_count.c index 175c88c..4885ab8 100644 --- a/contrib/libarchive/libarchive/test/test_filter_count.c +++ b/contrib/libarchive/libarchive/test/test_filter_count.c @@ -32,7 +32,10 @@ static void read_test(const char *name) { struct archive* a = archive_read_new(); - if(ARCHIVE_OK != archive_read_support_filter_bzip2(a)) { + int r; + + r = archive_read_support_filter_bzip2(a); + if((ARCHIVE_WARN == r && !canBzip2()) || ARCHIVE_WARN > r) { skipping("bzip2 unsupported"); return; } @@ -52,11 +55,13 @@ write_test(void) { char buff[4096]; struct archive* a = archive_write_new(); + int r; assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_per_block(a, 10)); - if(ARCHIVE_OK != archive_write_set_compression_bzip2(a)) { + r = archive_write_add_filter_bzip2(a); + if((ARCHIVE_WARN == r && !canBzip2()) || ARCHIVE_WARN > r) { skipping("bzip2 unsupported"); return; } diff --git a/contrib/libarchive/libarchive/test/test_fuzz.c b/contrib/libarchive/libarchive/test/test_fuzz.c index 5d2efa8..0409a16 100644 --- a/contrib/libarchive/libarchive/test/test_fuzz.c +++ b/contrib/libarchive/libarchive/test/test_fuzz.c @@ -46,77 +46,29 @@ __FBSDID("$FreeBSD$"); /* Because this works for any archive, we can just re-use the archives * developed for other tests. */ -static struct { +struct files { int uncompress; /* If 1, decompress the file before fuzzing. */ - const char *name; -} files[] = { - {0, "test_fuzz_1.iso.Z"}, /* Exercise compress decompressor. */ - {1, "test_fuzz_1.iso.Z"}, - {0, "test_fuzz.cab"}, - {0, "test_fuzz.lzh"}, - {0, "test_compat_bzip2_1.tbz"}, /* Exercise bzip2 decompressor. */ - {1, "test_compat_bzip2_1.tbz"}, - {0, "test_compat_gtar_1.tar"}, - {0, "test_compat_gzip_1.tgz"}, /* Exercise gzip decompressor. */ - {0, "test_compat_gzip_2.tgz"}, /* Exercise gzip decompressor. */ - {0, "test_compat_tar_hardlink_1.tar"}, - {0, "test_compat_xz_1.txz"}, /* Exercise xz decompressor. */ - {0, "test_compat_zip_1.zip"}, - {0, "test_read_format_7zip_bzip2.7z"}, - {0, "test_read_format_7zip_bcj_lzma1.7z"}, - {0, "test_read_format_7zip_bcj_lzma2.7z"}, - {0, "test_read_format_7zip_bcj2_lzma1_1.7z"}, - {0, "test_read_format_7zip_bcj2_lzma1_2.7z"}, - {0, "test_read_format_7zip_bcj2_lzma2_1.7z"}, - {0, "test_read_format_7zip_bcj2_lzma2_2.7z"}, - {0, "test_read_format_7zip_copy.7z"}, - {0, "test_read_format_7zip_deflate.7z"}, - {0, "test_read_format_7zip_lzma1.7z"}, - {0, "test_read_format_7zip_lzma1_lzma2.7z"}, - {0, "test_read_format_7zip_ppmd.7z"}, - {0, "test_read_format_ar.ar"}, - {0, "test_read_format_cpio_bin_be.cpio"}, - {0, "test_read_format_cpio_svr4_gzip_rpm.rpm"}, /* Test RPM unwrapper */ - {0, "test_read_format_rar.rar"}, /* Uncompressed RAR test */ - {0, "test_read_format_rar_binary_data.rar"}, /* RAR file with binary data */ - {0, "test_read_format_rar_compress_best.rar"}, /* Best Compressed RAR test */ - {0, "test_read_format_rar_compress_normal.rar"}, /* Normal Compressed RAR - * test */ - {0, "test_read_format_rar_multi_lzss_blocks.rar"}, /* Normal Compressed Multi - * LZSS blocks RAR test */ - {0, "test_read_format_rar_noeof.rar"}, /* RAR with no EOF header */ - {0, "test_read_format_rar_ppmd_lzss_conversion.rar"}, /* Best Compressed - * RAR file with both - * PPMd and LZSS - * blocks */ - {0, "test_read_format_rar_sfx.exe"}, /* RAR SFX archive */ - {0, "test_read_format_rar_subblock.rar"}, /* RAR with subblocks */ - {0, "test_read_format_rar_unicode.rar"}, /* RAR with Unicode filenames */ - {0, "test_read_format_gtar_sparse_1_17_posix10_modified.tar"}, - {0, "test_read_format_mtree.mtree"}, - {0, "test_read_format_tar_empty_filename.tar"}, - {0, "test_read_format_zip.zip"}, - {1, NULL} + const char **names; }; -DEFINE_TEST(test_fuzz) +static void +test_fuzz(const struct files *filesets) { const void *blk; size_t blk_size; int64_t blk_offset; int n; - for (n = 0; files[n].name != NULL; ++n) { + for (n = 0; filesets[n].names != NULL; ++n) { const size_t buffsize = 30000000; - const char *filename = files[n].name; struct archive_entry *ae; struct archive *a; - char *rawimage, *image; - size_t size; + char *rawimage = NULL, *image = NULL, *tmp = NULL; + size_t size = 0, oldsize = 0; int i, q; - extract_reference_file(filename); - if (files[n].uncompress) { + extract_reference_files(filesets[n].names); + if (filesets[n].uncompress) { int r; /* Use format_raw to decompress the data. */ assert((a = archive_read_new()) != NULL); @@ -124,10 +76,14 @@ DEFINE_TEST(test_fuzz) archive_read_support_filter_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_raw(a)); - r = archive_read_open_filename(a, filename, 16384); + r = archive_read_open_filenames(a, filesets[n].names, 16384); if (r != ARCHIVE_OK) { archive_read_free(a); - skipping("Cannot uncompress %s", filename); + if (filesets[n].names[0] == NULL || filesets[n].names[1] == NULL) { + skipping("Cannot uncompress fileset"); + } else { + skipping("Cannot uncompress %s", filesets[n].names[0]); + } continue; } assertEqualIntA(a, ARCHIVE_OK, @@ -139,19 +95,36 @@ DEFINE_TEST(test_fuzz) assertEqualInt(ARCHIVE_OK, archive_read_free(a)); assert(size > 0); - failure("Internal buffer is not big enough for " - "uncompressed test file: %s", filename); + if (filesets[n].names[0] == NULL || filesets[n].names[1] == NULL) { + failure("Internal buffer is not big enough for " + "uncompressed test files"); + } else { + failure("Internal buffer is not big enough for " + "uncompressed test file: %s", filesets[n].names[0]); + } if (!assert(size < buffsize)) { free(rawimage); continue; } } else { - rawimage = slurpfile(&size, filename); - if (!assert(rawimage != NULL)) - continue; + for (i = 0; filesets[n].names[i] != NULL; ++i) + { + tmp = slurpfile(&size, filesets[n].names[i]); + rawimage = (char *)realloc(rawimage, oldsize + size); + memcpy(rawimage + oldsize, tmp, size); + oldsize += size; + size = oldsize; + free(tmp); + if (!assert(rawimage != NULL)) + continue; + } } + if (size == 0) + continue; image = malloc(size); assert(image != NULL); + if (image == NULL) + return; srand((unsigned)time(NULL)); for (i = 0; i < 100; ++i) { @@ -160,7 +133,7 @@ DEFINE_TEST(test_fuzz) /* Fuzz < 1% of the bytes in the archive. */ memcpy(image, rawimage, size); - q = size / 100; + q = (int)size / 100; if (!q) q = 1; numbytes = (int)(rand() % q); for (j = 0; j < numbytes; ++j) @@ -206,4 +179,230 @@ DEFINE_TEST(test_fuzz) } } +DEFINE_TEST(test_fuzz_ar) +{ + static const char *fileset1[] = { + "test_read_format_ar.ar", + NULL + }; + static const struct files filesets[] = { + {0, fileset1}, + {1, NULL} + }; + test_fuzz(filesets); +} + +DEFINE_TEST(test_fuzz_cab) +{ + static const char *fileset1[] = { + "test_fuzz.cab", + NULL + }; + static const struct files filesets[] = { + {0, fileset1}, + {1, NULL} + }; + test_fuzz(filesets); +} + +DEFINE_TEST(test_fuzz_cpio) +{ + static const char *fileset1[] = { + "test_read_format_cpio_bin_be.cpio", + NULL + }; + static const char *fileset2[] = { + /* Test RPM unwrapper */ + "test_read_format_cpio_svr4_gzip_rpm.rpm", + NULL + }; + static const struct files filesets[] = { + {0, fileset1}, + {0, fileset2}, + {1, NULL} + }; + test_fuzz(filesets); +} + +DEFINE_TEST(test_fuzz_iso9660) +{ + static const char *fileset1[] = { + "test_fuzz_1.iso.Z", + NULL + }; + static const struct files filesets[] = { + {0, fileset1}, /* Exercise compress decompressor. */ + {1, fileset1}, + {1, NULL} + }; + test_fuzz(filesets); +} + +DEFINE_TEST(test_fuzz_lzh) +{ + static const char *fileset1[] = { + "test_fuzz.lzh", + NULL + }; + static const struct files filesets[] = { + {0, fileset1}, + {1, NULL} + }; + test_fuzz(filesets); +} + +DEFINE_TEST(test_fuzz_mtree) +{ + static const char *fileset1[] = { + "test_read_format_mtree.mtree", + NULL + }; + static const struct files filesets[] = { + {0, fileset1}, + {1, NULL} + }; + test_fuzz(filesets); +} + +DEFINE_TEST(test_fuzz_rar) +{ + static const char *fileset1[] = { + /* Uncompressed RAR test */ + "test_read_format_rar.rar", + NULL + }; + static const char *fileset2[] = { + /* RAR file with binary data */ + "test_read_format_rar_binary_data.rar", + NULL + }; + static const char *fileset3[] = { + /* Best Compressed RAR test */ + "test_read_format_rar_compress_best.rar", + NULL + }; + static const char *fileset4[] = { + /* Normal Compressed RAR test */ + "test_read_format_rar_compress_normal.rar", + NULL + }; + static const char *fileset5[] = { + /* Normal Compressed Multi LZSS blocks RAR test */ + "test_read_format_rar_multi_lzss_blocks.rar", + NULL + }; + static const char *fileset6[] = { + /* RAR with no EOF header */ + "test_read_format_rar_noeof.rar", + NULL + }; + static const char *fileset7[] = { + /* Best Compressed RAR file with both PPMd and LZSS blocks */ + "test_read_format_rar_ppmd_lzss_conversion.rar", + NULL + }; + static const char *fileset8[] = { + /* RAR with subblocks */ + "test_read_format_rar_subblock.rar", + NULL + }; + static const char *fileset9[] = { + /* RAR with Unicode filenames */ + "test_read_format_rar_unicode.rar", + NULL + }; + static const char *fileset10[] = { + "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 + }; + static const struct files filesets[] = { + {0, fileset1}, + {0, fileset2}, + {0, fileset3}, + {0, fileset4}, + {0, fileset5}, + {0, fileset6}, + {0, fileset7}, + {0, fileset8}, + {0, fileset9}, + {0, fileset10}, + {1, NULL} + }; + test_fuzz(filesets); +} + +DEFINE_TEST(test_fuzz_tar) +{ + static const char *fileset1[] = { + "test_compat_bzip2_1.tbz", + NULL + }; + static const char *fileset2[] = { + "test_compat_gtar_1.tar", + NULL + }; + static const char *fileset3[] = { + "test_compat_gzip_1.tgz", + NULL + }; + static const char *fileset4[] = { + "test_compat_gzip_2.tgz", + NULL + }; + static const char *fileset5[] = { + "test_compat_tar_hardlink_1.tar", + NULL + }; + static const char *fileset6[] = { + "test_compat_xz_1.txz", + NULL + }; + static const char *fileset7[] = { + "test_read_format_gtar_sparse_1_17_posix10_modified.tar", + NULL + }; + static const char *fileset8[] = { + "test_read_format_tar_empty_filename.tar", + NULL + }; + static const char *fileset9[] = { + "test_compat_lzop_1.tar.lzo", + NULL + }; + static const struct files filesets[] = { + {0, fileset1}, /* Exercise bzip2 decompressor. */ + {1, fileset1}, + {0, fileset2}, + {0, fileset3}, /* Exercise gzip decompressor. */ + {0, fileset4}, /* Exercise gzip decompressor. */ + {0, fileset5}, + {0, fileset6}, /* Exercise xz decompressor. */ + {0, fileset7}, + {0, fileset8}, + {0, fileset9}, /* Exercise lzo decompressor. */ + {1, NULL} + }; + test_fuzz(filesets); +} + +DEFINE_TEST(test_fuzz_zip) +{ + static const char *fileset1[] = { + "test_compat_zip_1.zip", + NULL + }; + static const char *fileset2[] = { + "test_read_format_zip.zip", + NULL + }; + static const struct files filesets[] = { + {0, fileset1}, + {0, fileset2}, + {1, NULL} + }; + test_fuzz(filesets); +} diff --git a/contrib/libarchive/libarchive/test/test_open_failure.c b/contrib/libarchive/libarchive/test/test_open_failure.c index 06a3a2c..845486c 100644 --- a/contrib/libarchive/libarchive/test/test_open_failure.c +++ b/contrib/libarchive/libarchive/test/test_open_failure.c @@ -97,7 +97,7 @@ DEFINE_TEST(test_open_failure) assertEqualInt(1, private.open_called); assertEqualInt(0, private.read_called); assertEqualInt(1, private.close_called); - assertEqualInt(ARCHIVE_OK, archive_read_finish(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); assertEqualInt(1, private.open_called); assertEqualInt(0, private.read_called); assertEqualInt(1, private.close_called); @@ -112,7 +112,7 @@ DEFINE_TEST(test_open_failure) assertEqualInt(1, private.open_called); assertEqualInt(0, private.read_called); assertEqualInt(1, private.close_called); - assertEqualInt(ARCHIVE_OK, archive_read_finish(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); assertEqualInt(1, private.open_called); assertEqualInt(0, private.read_called); assertEqualInt(1, private.close_called); @@ -127,7 +127,7 @@ DEFINE_TEST(test_open_failure) assertEqualInt(1, private.open_called); assertEqualInt(0, private.read_called); assertEqualInt(1, private.close_called); - assertEqualInt(ARCHIVE_OK, archive_read_finish(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); assertEqualInt(1, private.open_called); assertEqualInt(0, private.read_called); assertEqualInt(1, private.close_called); @@ -146,7 +146,7 @@ DEFINE_TEST(test_open_failure) assertEqualInt(1, private.open_called); assertEqualInt(1, private.read_called); assertEqualInt(1, private.close_called); - assertEqualInt(ARCHIVE_OK, archive_read_finish(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); assertEqualInt(1, private.open_called); assertEqualInt(1, private.read_called); assertEqualInt(1, private.close_called); @@ -161,7 +161,7 @@ DEFINE_TEST(test_open_failure) assertEqualInt(1, private.open_called); assertEqualInt(0, private.write_called); assertEqualInt(1, private.close_called); - assertEqualInt(ARCHIVE_OK, archive_write_finish(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); assertEqualInt(1, private.open_called); assertEqualInt(0, private.write_called); assertEqualInt(1, private.close_called); @@ -178,7 +178,7 @@ DEFINE_TEST(test_open_failure) assertEqualInt(1, private.open_called); assertEqualInt(0, private.write_called); assertEqualInt(1, private.close_called); - assertEqualInt(ARCHIVE_OK, archive_write_finish(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); assertEqualInt(1, private.open_called); assertEqualInt(0, private.write_called); assertEqualInt(1, private.close_called); @@ -194,7 +194,7 @@ DEFINE_TEST(test_open_failure) assertEqualInt(1, private.open_called); assertEqualInt(0, private.write_called); assertEqualInt(1, private.close_called); - assertEqualInt(ARCHIVE_OK, archive_write_finish(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); assertEqualInt(1, private.open_called); assertEqualInt(0, private.write_called); assertEqualInt(1, private.close_called); @@ -210,7 +210,7 @@ DEFINE_TEST(test_open_failure) assertEqualInt(1, private.open_called); assertEqualInt(0, private.write_called); assertEqualInt(1, private.close_called); - assertEqualInt(ARCHIVE_OK, archive_write_finish(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); assertEqualInt(1, private.open_called); assertEqualInt(0, private.write_called); assertEqualInt(1, private.close_called); diff --git a/contrib/libarchive/libarchive/test/test_open_fd.c b/contrib/libarchive/libarchive/test/test_open_fd.c index 764e374..4fbf87a 100644 --- a/contrib/libarchive/libarchive/test/test_open_fd.c +++ b/contrib/libarchive/libarchive/test/test_open_fd.c @@ -28,6 +28,9 @@ __FBSDID("$FreeBSD$"); #if defined(_WIN32) && !defined(__CYGWIN__) #define open _open #if !defined(__BORLANDC__) +#ifdef lseek +#undef lseek +#endif #define lseek _lseek #endif #define close _close @@ -52,7 +55,7 @@ DEFINE_TEST(test_open_fd) /* Write an archive through this fd. */ assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_none(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_fd(a, fd)); /* diff --git a/contrib/libarchive/libarchive/test/test_open_file.c b/contrib/libarchive/libarchive/test/test_open_file.c index 9c4611e..52b60ef 100644 --- a/contrib/libarchive/libarchive/test/test_open_file.c +++ b/contrib/libarchive/libarchive/test/test_open_file.c @@ -40,7 +40,7 @@ DEFINE_TEST(test_open_file) /* Write an archive through this FILE *. */ assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_none(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_FILE(a, f)); /* diff --git a/contrib/libarchive/libarchive/test/test_open_filename.c b/contrib/libarchive/libarchive/test/test_open_filename.c index 7526298..dee11bc 100644 --- a/contrib/libarchive/libarchive/test/test_open_filename.c +++ b/contrib/libarchive/libarchive/test/test_open_filename.c @@ -35,7 +35,7 @@ test_open_filename_mbs(void) /* Write an archive through this FILE *. */ assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_none(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_filename(a, "test.tar")); @@ -119,7 +119,7 @@ test_open_filename_wcs(void) /* Write an archive through this FILE *. */ assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_none(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_filename_w(a, L"test.tar")); diff --git a/contrib/libarchive/libarchive/test/test_pax_filename_encoding.c b/contrib/libarchive/libarchive/test/test_pax_filename_encoding.c index 169f978..aaef609 100644 --- a/contrib/libarchive/libarchive/test/test_pax_filename_encoding.c +++ b/contrib/libarchive/libarchive/test/test_pax_filename_encoding.c @@ -115,7 +115,7 @@ test_pax_filename_encoding_2(void) assert((a = archive_write_new()) != NULL); assertEqualIntA(a, 0, archive_write_set_format_pax(a)); - assertEqualIntA(a, 0, archive_write_set_compression_none(a)); + assertEqualIntA(a, 0, archive_write_add_filter_none(a)); assertEqualIntA(a, 0, archive_write_set_bytes_per_block(a, 0)); assertEqualInt(0, archive_write_open_memory(a, buff, sizeof(buff), &used)); @@ -234,7 +234,7 @@ test_pax_filename_encoding_3(void) assert((a = archive_write_new()) != NULL); assertEqualIntA(a, 0, archive_write_set_format_pax(a)); - assertEqualIntA(a, 0, archive_write_set_compression_none(a)); + assertEqualIntA(a, 0, archive_write_add_filter_none(a)); assertEqualIntA(a, 0, archive_write_set_bytes_per_block(a, 0)); assertEqualInt(0, archive_write_open_memory(a, buff, sizeof(buff), &used)); diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part1.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part1.rar.uu new file mode 100644 index 0000000..fee150c --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part1.rar.uu @@ -0,0 +1,163 @@ +begin 644 test_rar_multivolume_multiple_files.part1.rar +M4F%R(1H'`%IN<Q$!#0````````!9T70BD$0`E!L``(].```#O-PK5[M,-4$4 +M,!H`I($``$QI8F%R8VAI=F5!9&1I;F=497-T,BYH=&ULP,R[3#5!)TTU03PA +M1$]#5%E012!(5$U,(%!50DQ)0R`B+2\O5S-#+R]$5$0@2%1-3"`T+C`@5')A +M;G-I=&EO;F%L+R]%3B(^"CQ(5$U,/@H\2$5!1#X*"3Q-151!($A45%`M15%5 +M258](D-/3E1%3E0M5%E012(@0T].5$5.5#TB=&5X="]H=&UL.R!C:&%R<V5T +M/75T9BTX(CX*"3Q4251,13X\+U1)5$Q%/@H)/$U%5$$@3D%-13TB1T5.15)! +M5$]2(B!#3TY414Y4/2),:6)R94]F9FEC92`S+C,@("A5;FEX*2(^"@D\3454 +M02!.04U%/2)#4D5!5$5$(B!#3TY414Y4/2(R,#$Q,#8R-CLR,C(S-3$P,"(^ +M"@D\345402!.04U%/2)#2$%.1T5$(B!#3TY414Y4/2(R,#$Q,#8R-CLR,C(U +M-#4P,"(^"@D\4U193$4@5%E013TB=&5X="]C<W,B/@H)/"$M+0H)"4!P86=E +M('L@;6%R9VEN.B`P+C<Y:6X@?0H)"5`@>R!M87)G:6XM8F]T=&]M.B`P+C`X +M:6X@?0H)"4@Q('L@;6%R9VEN+6)O='1O;3H@,"XP.&EN('T*"0E(,2YW97-T +M97)N('L@9F]N="UF86UI;'DZ("),:6)E<F%T:6]N(%-E<FEF(BP@<V5R:68@ +M?0H)"4@Q+F-J:R![(&9O;G0M9F%M:6QY.B`B0FET<W1R96%M(%9E<F$@4V%N +M<R(@?0H)"4@Q+F-T;"![(&9O;G0M9F%M:6QY.B`B1G)E95-A;G,B('T*"0E0 +M4D4N8VIK('L@9F]N="UF86UI;'DZ(")":71S=')E86T@5F5R82!386YS(BP@ +M;6]N;W-P86-E('T*"0E(,B![(&UA<F=I;BUB;W1T;VTZ(#`N,#AI;B!]"@D) +M2#(N8W1L('L@9F]N="UF86UI;'DZ(")&<F5E4V%N<R(@?0H)"514+F-J:R![ +M(&9O;G0M9F%M:6QY.B`B0FET<W1R96%M(%9E<F$@4V%N<R(L(&UO;F]S<&%C +M92!]"@DM+3X*"3PO4U193$4^"CPO2$5!1#X*/$)/1%D@3$%.1STB96XM55,B +M($1)4CTB3%12(CX*/$@Q($-,05-3/2)W97-T97)N(CY);G1R;V1U8W1I;VX\ +M+T@Q/@H\4#Y,:6)A<F-H:79E(&ES(&YO=R!A(&9A:7)L>2!C;VUP;&5X('!I +M96-E(&]F('-O9G1W87)E('1H870@<G5N<R!O;@IA(&YU;6)E<B!O9B!D:69F +M97)E;G0@<&QA=&9O<FUS+B!!('1H;W)O=6=H('1E<W0@<W5I=&4@:7,@97-S +M96YT:6%L"F)O=&@@9F]R('9E<FEF>6EN9R!N97<@<&]R=',@86YD(&9O<B!E +M;G-U<FEN9R!T:&%T(&9U='5R92!C:&%N9V5S"F1O;B=T(&)R96%K(&5X:7-T +M:6YG(&9U;F-T:6]N86QI='DN(`H\+U`^"CQ0/D%N>2!S:6=N:69I8V%N="!C +M:&%N9V4@=&\@;&EB87)C:&EV92P@:6YC;'5D:6YG(&UO<W0@8G5G(&9I>&5S +M+`IS:&]U;&0@8F4@86-C;VUP86YI960@8GD@;F5W('1E<W1S(&]R(&-H86YG +M97,@=&\@97AI<W1I;F<@=&5S=',N(%1H:7,*87)T:6-L92!E>'!L86EN<R!H +M;W<@=&AE(&QI8F%R8VAI=F4@=&5S="!S=6ET97,@=V]R:R!A;F0@:&]W('1O +M"F5X=&5N9"!T:&5M+B`*/"]0/@H\2#$@0TQ!4U,](G=E<W1E<FXB/CQ!($Y! +M344](D)U:6QD:6YG7V%N9%]2=6YN:6YG7W1H95]497-T7U!R;V=R86US(CX\ +M+T$^"D)U:6QD:6YG(&%N9"!2=6YN:6YG('1H92!497-T(%!R;V=R86US/"]( +M,3X*/%`^16%C:"!M86IO<B!C;VUP;VYE;G0M+6QI8F%R8VAI=F4L(&)S9'1A +M<BP@86YD(&)S9&-P:6\M+6AA<R!A('1E<W0*<')O9W)A;2!T:&%T(&5X97)C +M:7-E<R!T:&4@9G5N8W1I;VYA;&ET>2!O9B!T:&%T(&-O;7!O;F5N="X@5&AE +M<V4*=&5S="!P<F]G<F%M<R!A<F4@8V]M<&EL960@:6X@=&AE('-A;64@=V%Y +M('1H870@=&AE(')E<W0@;V8@=&AE"FQI8F%R8VAI=F4@<W5I=&4@:7,@8V]M +M<&EL960N(`H\+U`^"CQ0/E1O(')U;B!T:&4@=&5S="!P<F]G<F%M<RP@>6]U +M(&YE960@=&\@9VEV92!T:&5M('1W;R!P:65C97,@;V8*:6YF;W)M871I;VXZ +M(`H\+U`^"CQ53#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN +M(CY4:&4@9G5L;"!P871H('1O('1H92!D:7)E8W1O<GD*"6AO;&1I;F<@=&AE +M("9Q=6]T.W)E9F5R96YC92!F:6QE<R9Q=6]T.R`*"3PO4#X*"3Q,23X\4#Y4 +M:&4@9G5L;"!P871H('1O('1H92!E>&5C=71A8FQE('!R;V=R86T@8F5I;F<@ +M=&5S=&5D("AN;W0*"6%P<&QI8V%B;&4@=&\@;&EB87)C:&EV95]T97-T('-I +M;F-E(&QI8F%R8VAI=F4@:7,@8V]M<&EL960@:6YT;R!T:&4*"71E<W0@<')O +M9W)A;2D@"@D\+U`^"CPO54P^"CQ0/E1H92!R969E<F5N8V4@9FEL97,@87)E +M(&$@8V]L;&5C=&EO;B!O9B!K;F]W;B!I;G!U=',@=&AA="!A<F4@=7-E9`II +M;B!T:&4@=&5S="!P<F]C97-S+B!4:&5Y(&%R92!A;&P@<W1O<F5D(&EN('5U +M96YC;V1E9"!F;W)M870@:6X@9FEL97,*=VET:"!A("9Q=6]T.RYU=29Q=6]T +M.R!E>'1E;G-I;VXN(%1H92!T97-T('!R;V=R86US(&QO;VL@:6X@82!F97<* +M<W1A;F1A<F0@;&]C871I;VYS.R!I9B!N;VYE(&]F('1H;W-E('=O<FLL('EO +M=2=L;"!N965D('1O('-P96-I9GD@=&AE"CQ45"!#3$%34STB=V5S=&5R;B(^ +M+7(\+U14/B!O<'1I;VX@=VET:"!T:&4@9G5L;"!P871H;F%M92!T;R!T:&4* +M87!P<F]P<FEA=&4@9&ER96-T;W)Y+B`*/"]0/@H\4#Y4:&4@8G-D=&%R7W1E +M<W0@86YD(&)S9&-P:6]?=&5S="!P<F]G<F%M<R!R=6X@8G-D=&%R(&]R(&)S +M9&-P:6\*<F5P96%T961L>3L@=&AE>2!N965D('1H92!F=6QL('!A=&@@=&\@ +M=&AE(&%P<')O<')I871E(&5X96-U=&%B;&4N"D%L=&AO=6=H(&)S9'1A<E]T +M97-T(&%N9"!B<V1C<&EO7W1E<W0@87)E('-P96-I9FEC86QL>2!I;G1E;F1E +M9"!F;W(*=&5S=&EN9R!B<V1T87(@86YD(&)S9&-P:6\L('1H97D@<VAO=6QD +M(&)E('5S86)L92!F;W(@=&5S=&EN9R!O=&AE<@IT87(@86YD(&-P:6\@<')O +M9W)A;7,N($EN(&9A8W0L(')U;FYI;F<@=&AE<V4@=&5S="!P<F]G<F%M<R!A +M9V%I;G-T"F]T:&5R('1A<B!I;7!L96UE;G1A=&EO;G,@:7,@82!G;V]D('=A +M>2!T;R!V97)I9GD@=&AA="!T:&4@=&5S=`IP<F]G<F%M<R!T:&5M<V5L=F5S +M(&%R92!W;W)K:6YG(&-O<G)E8W1L>2X@"CPO4#X*/%`^5VAE;B!R=6XL('1H +M92!T97-T('!R;V=R86US(&]U='!U="!A('!R;V=R97-S(&UE<W-A9V4@9F]R +M(&5A8V@*=&5S="P@86X@97)R;W(@;65S<V%G92!F;W(@96%C:"!F86EL960@ +M87-S97)T:6]N+"!A;F0@82!F:6YA;`IS=6UM87)Y.B`*/"]0/@H\4%)%($-, +M05-3/2)W97-T97)N(CXF;F)S<#M2=6YN:6YG('1E<W1S(&EN.B`O=&UP+V)S +M9'1A<E]T97-T+C(P,#DM,#(M,3=4,C$N,S`N-#`M,#`P"B9N8G-P.U)E9F5R +M96YC92!F:6QE<R!W:6QL(&)E(')E860@9G)O;3H@)FYB<W`[("9N8G-P.R]H +M;VUE+W1I;2]L:6)A<F-H:79E+W1R=6YK+W1A<B]T97-T"B9N8G-P.U)U;FYI +M;F<@=&5S=',@;VXZ("]H;VUE+W1I;2]L:6)A<F-H:79E+W1R=6YK+V)S9'1A +M<@HF;F)S<#M%>&5R8VES:6YG.B!B<V1T87(@,BXV+CDP,&$@+2!L:6)A<F-H +M:79E(#(N-BXY,#!A"B9N8G-P.S`Z('1E<W1?,`HF;F)S<#LQ.B!T97-T7V)A +M<VEC"B9N8G-P.S(Z('1E<W1?8V]P>0HF;F)S<#L@=&5S=%]C;W!Y+F,Z,3<Q +M.B!!<W-E<G1I;VX@9F%I;&5D.B!);G1S(&YO="!E<75A;`HF;F)S<#L@)FYB +M<W`[("9N8G-P.R`P/3`*)FYB<W`[("9N8G-P.R`F;F)S<#L@;'-T870H;F%M +M93(@*R`S+"`F86UP.W-T,BD]+3$*)FYB<W`[('1E<W1?8V]P>2YC.C$W,3H@ +M1F%I;&5D(#(V-"!T:6UE<PHF;F)S<#LS.B!T97-T7V=E=&1A=&4*)FYB<W`[ +M-#H@=&5S=%]H96QP"B9N8G-P.R`F;F)S<#L@+BXN(&UO<F4@;W5T<'5T(&]M +M:71T960@+BXN"B9N8G-P.S$@;V8@,3,@=&5S=',@<F5P;W)T960@9F%I;'5R +M97,*)FYB<W`[(%1O=&%L(&]F(#$P-3`Y-R!A<W-E<G1I;VYS(&-H96-K960N +M"B9N8G-P.R!4;W1A;"!O9B`R-C0@87-S97)T:6]N<R!F86EL960N"B9N8G-P +M.R!4;W1A;"!O9B`P(&%S<V5R=&EO;G,@<VMI<'!E9"X\+U!213X\4#X*5&AE +M(&AE861E<B!L:6YE<R!H97)E(')E8V]R9#H@"CPO4#X*/%5,/@H)/$Q)/CQ0 +M(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/G1H92!D:7)E8W1O<GD@=&AA +M="!W:6QL(&)E('5S960*"69O<B!S8W)A=&-H(&9I;&5S(&1U<FEN9R!T:&4@ +M=&5S="X@268@82!T97-T(&9A:6QS+"!T:&4@<V-R871C:`H)9FEL97,@=VEL +M;"!B92!L969T(&)E:&EN9"!I;B!T:&ES(&1I<F5C=&]R>2!F;W(@9G5R=&AE +M<B!D96)U9V=I;F<N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T +M=&]M.B`P:6XB/E1H92!D:7)E8W1O<GD@9G)O;2!W:&EC:"!T:&4*"7)E9F5R +M96YC92!F:6QE<R!W:6QL(&)E(')E860N(`H)/"]0/@H)/$Q)/CQ0(%-464Q% +M/2)M87)G:6XM8F]T=&]M.B`P:6XB/D9O<B!B<V1T87)?=&5S="!A;F0@8G-D +M8W!I;U]T97-T+`H)=&AE(&9U;&P@<&%T:"!T;R!T:&4@97AE8W5T86)L92!B +M96EN9R!E>&5R8VES960N(`H)/"]0/@H)/$Q)/CQ0/D)A<VEC('9E<G-I;VX@ +M:6YF;W)M871I;VX@86)O=70@=&AE('1A<F=E="X@"@D\+U`^"CPO54P^"CQ0 +M/DEN('1H:7,@8V%S92P@=&AE('1R86EL97(@:6YD:6-A=&5S('1H870@;VYE +M('1E<W0@9F%I;&5D+B!!<R!Y;W4*8V%N('-E92P@=&AE<F4@=V%S(&$@<VEN +M9VQE(&%S<V5R=&EO;B!I;B!T:&4@8V]D92!T:&%T(&9A:6QE9"`R-C0*=&EM +M97,N(%1H92!F:7)S="!T:6UE(&ET(&9A:6QE9"P@:70@=V%S(&)E8V%U<V4@ +M86X@/%14($-,05-3/2)W97-T97)N(CYL<W1A="@I/"]45#X*8V%L;"!R971U +M<FYE9"`M,2!I;G-T96%D(&]F('1H92!Z97)O('1H870@=V%S(&5X<&5C=&5D +M+B`*/"]0/@H\2#$@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](D)A<VEC7W1E +M<W1?=&5R;6EN;VQO9WDB/CPO03Y"87-I8R!T97-T"G1E<FUI;F]L;V=Y/"]( +M,3X*/%`^16%C:"!T97-T('!R;V=R86T@8V]N<VES=',@;V8@82!N=6UB97(@ +M;V8@)G%U;W0[=&5S=',F<75O=#LN($5A8V@*=&5S="!H87,@82!N86UE(&%N +M9"!I<R!I;7!L96UE;G1E9"!I;B!A($,@<V]U<F-E(&9I;&4@=VET:"!T:&4@ +M<V%M90IN86UE(&%S('1H92!T97-T+B!497-T<R!W;W)K(&)Y('!E<F9O<FUI +M;F<@<V]M92!S97)I97,@;V8@;W!E<F%T:6]N<PIA;F0@;6%K:6YG("9Q=6]T +M.V%S<V5R=&EO;G,F<75O=#L@86)O=70@=&AE(')E<W5L=',N($9O<B!E>&%M +M<&QE+`IM86YY(&]F('1H92!L:6)A<F-H:79E('1E<W1S(&]P96X@86YD(')E +M860@86X@87)C:&EV92!A;F0@87-S97)T('1H870*<&%R=&EC=6QA<B!O<&5R +M871I;VYS('-U8V-E961E9"!O<B!F86EL960N("A997,L(&ET(&ES(&]F=&5N +M"FEM<&]R=&%N="!T;R!V97)I9GD@=&AA="!I;&QE9V%L(')E<75E<W1S(&=E +M;F5R871E(&%P<')O<')I871E"F5R<F]R<RXI(`H\+U`^"CQ0/DAE<F4@:7,@ +M82!S;VUE=VAA="!E9&ET960@97AC97)P="!F<F]M(#Q45"!#3$%34STB=V5S +M=&5R;B(^=&5S=%]C;VUP871?>FEP/"]45#XL"G=H:6-H('9E<FEF:65S(&-O +M;7!A=&EB:6QI='D@=VET:"!V87)I;W5S(%I)4"!F;W)M870@87)C:&EV97,Z +M(`H\+U`^"CQ04D4@0TQ!4U,](G=E<W1E<FXB/B9N8G-P.R!$149)3D5?5$53 +M5"AT97-T7V-O;7!A=%]Z:7`I"B9N8G-P.R!["B9N8G-P.R`F;F)S<#L@+RH@ +M+BXN('-E='5P(&]M:71T960@+BXN("HO"B9N8G-P.R`F;F)S<#L@87-S97)T +M*"AA(#T@87)C:&EV95]R96%D7VYE=R@I*2`A/2!.54Q,*3L*)FYB<W`[("9N +M8G-P.R!A<W-E<G1%<75A;$EN="A!4D-(259%7T]++`HF;F)S<#L@)FYB<W`[ +M("9N8G-P.R`F;F)S<#L@87)C:&EV95]R96%D7W-U<'!O<G1?8V]M<')E<W-I +M;VY?86QL*&$I*3L*)FYB<W`[("9N8G-P.R!A<W-E<G1%<75A;$EN="A!4D-( +M259%7T]++`HF;F)S<#L@)FYB<W`[("9N8G-P.R`F;F)S<#L@87)C:&EV95]R +M96%D7W-U<'!O<G1?9F]R;6%T7V%L;"AA*2D["B9N8G-P.R`F;F)S<#L@97AT +M<F%C=%]R969E<F5N8V5?9FEL92AN86UE*3L*)FYB<W`[("9N8G-P.R!A<W-E +M<G1%<75A;$EN="A!4D-(259%7T]++`HF;F)S<#L@)FYB<W`[("9N8G-P.R`F +M;F)S<#L@87)C:&EV95]R96%D7V]P96Y?9FEL96YA;64H82P@;F%M92P@,3`R +M-#`I*3L*)FYB<W`[("9N8G-P.R`F;F)S<#LO*B!296%D(&9I<G-T(&5N=')Y +M+B`J+PHF;F)S<#L@)FYB<W`[("9N8G-P.V%S<V5R=$5Q=6%L26YT*$%20TA) +M5D5?3TLL(&%R8VAI=F5?<F5A9%]N97AT7VAE861E<BAA+"`F86UP.V%E*2D[ +M"B9N8G-P.R`F;F)S<#L@)FYB<W`[87-S97)T17%U86Q3=')I;F<H)G%U;W0[ +M345402U)3D8O34%.249%4U0N348F<75O=#LL(&%R8VAI=F5?96YT<GE?<&%T +M:&YA;64H864I*3L\+U!213X\4#X*5&AE(#Q45"!#3$%34STB=V5S=&5R;B(^ +M87-S97)T6%A86#PO5%0^(&UA8W)O<R!C:&5C:R!T:&%T('1H96ER"F%R9W5M +M96YT<R!S871I<V9Y(&-E<G1A:6X@8V]N9&ET:6]N<RX@268@=&AE(&%S<V5R +M=&EO;B!F86EL<RTM9F]R"F5X86UP;&4L(&EF('1H92!N86UE(&]F('1H92!F +M:7)S="!E;G1R>2!I<R!N;W0*)G%U;W0[345402U)3D8O34%.249%4U0N348F +M<75O=#LM+71H92!M86-R;R!W:6QL(')E<&]R="!T:&4@<')O8FQE;2X@"CPO +M4#X*/%`^5&AE<F4@87)E('1W;R!I;7!O<G1A;G0@9&EF9F5R96YC97,@8F5T +M=V5E;B!T:&4@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G186%@\+U14/@IM +M86-R;W,@=7-E9"!I;B!T:&5S92!T97-T(&AA<FYE<W-E<R!A;F0@=&AE($E3 +M3R!#('-T86YD87)D(#Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T/"]45#X* +M;6%C<F\Z($9I<G-T+"!T:&5S92!A<W-E<G0@;6%C<F]S(&1O;B=T(&5X:70@ +M;VX@9F%I;'5R92X@0GD@9&5F875L="P*=&AE>2!R97!O<G0@=&AE(&9A:6QU +M<F4@86YD(')E='5R;B!Z97)O("AT:&4@0R!N;W1I;VX@;V8@)G%U;W0[9F%L +M<V4F<75O=#LI+@I396-O;F0L('1H97-E(&UA8W)O<R!I;F-L=61E('9A<FEA +M;G1S('1H870@<&5R9F]R;2!A('9A<FEE='D@;V8*<W!E8VEF:6,@=&5S=',N +M(%1H97-E('-P96-I9FEC('9E<G-I;VYS("AS=6-H(&%S(#Q45"!#3$%34STB +M=V5S=&5R;B(^87-S97)T17%U86Q);G0\+U14/@IA;F0@/%14($-,05-3/2)W +M97-T97)N(CYA<W-E<G1%<75A;%-T<FEN9SPO5%0^(&EN('1H92!E>&%M<&QE +M(&%B;W9E*0IG96YE<F%T92!D971A:6QE9"!L;V<@;65S<V%G97,@;VX@9F%I +M;'5R92X@26X@<&%R=&EC=6QA<BP@=&AE>2!P<FEN=`IT:&4@=F%L=64@;V8@ +M8F]T:"!A<F=U;65N=',[('1H:7,@9W)E871L>2!S:6UP;&EF:65S(&1I86=N +M;W-I;F<*9F%I;'5R97,N(`H\+U`^"CQ(,2!#3$%34STB=V5S=&4`9GL/0!0` +-+CO?G@`````````````` +` +end diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part2.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part2.rar.uu new file mode 100644 index 0000000..012399a --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part2.rar.uu @@ -0,0 +1,163 @@ +begin 644 test_rar_multivolume_multiple_files.part2.rar +M4F%R(1H'`!EZ<Q$`#0````````!,070CD$0`E!L``(].```#H4_AX+M,-4$4 +M,!H`I($``$QI8F%R8VAI=F5!9&1I;F=497-T,BYH=&ULP,R[3#5!)TTU07)N +M(CX\02!.04U%/2),:69E7V-Y8VQE7V]F7V%?=&5S="(^/"]!/DQI9F4@8WEC +M;&4@;V8*82!T97-T/"](,3X*/%`^16%C:"!T97-T(')E<VED97,@:6X@82!# +M('-O=7)C92!F:6QE('=I=&@@=&AE('-A;64@;F%M92!A<R!T:&4*=&5S="X@ +M5&AE('1E<W0@:71S96QF(&ES(&$@9G5N8W1I;VX@=&AA="!T86ME<R!N;R!A +M<F=U;65N=',N(%1H92!T97-T"FES(&1E8VQA<F5D('5S:6YG('1H92`\5%0@ +M0TQ!4U,](G=E<W1E<FXB/D1%1DE.15]415-4*"D\+U14/B!M86-R;RX*5&AI +M<R!M86-R;R!S97)V97,@8F]T:"!T;R!E;G-U<F4@=&AA="!T:&4@=&5S="!I +M<R!D96-L87)E9"!C;W)R96-T;'D*86YD(&%S(&$@;&%B96P@=&AA="!C86X@ +M8F4@=7-E9"!T;R!L;V-A=&4@86QL(&1E9FEN960@=&5S=',N("A/;@I5;FEX +M+6QI:V4@<&QA=&9O<FUS+"!A('-I;7!L92`\5%0@0TQ!4U,](G=E<W1E<FXB +M/F=R97`\+U14/B!O<&5R871I;VX*:7,@=7-E9"!T;R!C;VYS=')U8W0@82!F +M:6QE(&-A;&QE9"`\5%0@0TQ!4U,](G=E<W1E<FXB/FQI<W0N:#PO5%0^"G1H +M870@:&]L9',@=&AE(&YA;65S(&]F(&%L;"!O9B!T:&4@=&5S=',N(%1H:7,@ +M;6%K97,@:70@=F5R>2!E87-Y('1O"F%D9"!N97<@=&5S=',N*2`*/"]0/@H\ +M4#Y4:&4@=&5S="!H87)N97-S(&1E=&5R;6EN97,@=VAI8V@@=&5S=',@=&\@ +M<G5N+B!)="!G;V5S('1H<F]U9V@*=&AE(&9O;&QO=VEN9R!S=&5P<R!W:&5N +M979E<B!I="!R=6YS(&$@=&5S=#H@"CPO4#X*/%5,/@H)/$Q)/CQ0(%-464Q% +M/2)M87)G:6XM8F]T=&]M.B`P:6XB/CQ35%))2T4^0VQO<V5S(&%L;"!F:6QE +M"@ED97-C<FEP=&]R<R!E>&-E<'0@9F]R('-T9&EN+"!S=&1O=70L(&%N9"!S +M=&1E<G(N/"]35%))2T4^("A4:&ES"@ES8W)E=W,@=7`@;&EB8R!O;B!S;VUE +M('!L871F;W)M<R!S;R!H87,@8F5E;B!R96UO=F5D+BD@"@D\+U`^"@D\3$D^ +M/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^0W)E871E<R!A('1E;7!O +M<F%R>2!D:7)E8W1O<GD*"7=H;W-E(&YA;64@;6%T8VAE<R!T:&4@;F%M92!O +M9B!T:&4@=&5S="!A;F0@<W=I=&-H97,@:6YT;R!T:&%T"@ED:7)E8W1O<GDN +M(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/E)E +M<V5T<R!T:&4@8W5R<F5N="!L;V-A;&4N(`H)/"]0/@H)/$Q)/CQ0(%-464Q% +M/2)M87)G:6XM8F]T=&]M.B`P:6XB/D-A;&QS('1H92!T97-T(&9U;F-T:6]N +M+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY) +M9B!T:&5R92!W97)E(&YO(&%S<V5R=&EO;@H)9F%I;'5R97,L(&ET('=I;&P@ +M<F5M;W9E('1H92!T96UP;W)A<GD@9&ER96-T;W)Y+B`H268@/%14($-,05-3 +M/2)W97-T97)N(CXM:SPO5%0^"@EI<R!S<&5C:69I960L('1E;7!O<F%R>2!D +M:7)E8W1O<GD@87)E(&QE9G0@979E;B!I9B!T:&4@=&5S=`H)<W5C8V5E9',N +M*2`*"3PO4#X*"3Q,23X\4#X\4U1224M%/DEF('1H97)E(&%R92!A;GD@;W!E +M;B!F:6QE(&1E<V-R:7!T;W)S(&]T:&5R('1H86X*"7-T9&EN+"!S=&1O=70L +M(&%N9"!S=&1E<G(L(&ET(')E<&]R=',@86X@97)R;W(N/"]35%))2T4^(%1E +M<W1S"@ES:&]U;&0@;F5V97(@;&5A=F4@;W!E;B!F:6QE(&1E<V-R:7!T;W)S +M+B`*"3PO4#X*/"]53#X*/%`^26X@<&%R=&EC=6QA<BP@=&5S=',@8V%N('-A +M9F5L>2!A<W-U;64@=&AA=#H@"CPO4#X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M +M87)G:6XM8F]T=&]M.B`P:6XB/E1H92!C=7)R96YT(&1I<F5C=&]R>2!I<R!E +M;7!T>0H)=VAE;B!T:&4@=&5S="!S=&%R=',N(`H)/"]0/@H)/$Q)/CQ0(%-4 +M64Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D%N>2!F:6QE<R!C<F5A=&5D(&EN +M('1H92!C=7)R96YT"@ED:7)E8W1O<GD@=VEL;"!B92!R96UO=F5D(&9O<B!Y +M;W4N(`H)/"]0/@H)/$Q)/CQ0/E1H92!C=7)R96YT(&QO8V%L92!I<R!T:&4@ +M9&5F875L="`F<75O=#M#)G%U;W0[(&QO8V%L92X@"@D\+U`^"CPO54P^"CQ0 +M/E1E<W1S('-H;W5L9#H@"CPO4#X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G +M:6XM8F]T=&]M.B`P:6XB/E)E;&5A<V4@86QL(&UE;6]R>2X@5&AE('1E<W0* +M"7-U:71E<R!A<F4@;V-C87-I;VYA;&QY(')U;B!U;F1E<B!A(&UE;6]R>2!D +M96)U9V=E<B!T;R!D971E8W0@;&5A:W,*"6EN('1H92!L:6)A<F-H:79E(&QI +M8G)A<GDN(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P +M:6XB/D-L;W-E(&%L;"!O<&5N960@9FEL97,N(%1H:7,@:&5L<',*"71O(&-A +M=&-H(&9I;&4@9&5S8W)I<'1O<B!L96%K<R!I;B!L:6)A<F-H:79E+B`*"3PO +M4#X*"3Q,23X\4#Y.;W0@<F5A9"!O<B!W<FET92!A8G-O;'5T92!P871H<RX@ +M"@D\+U`^"CPO54P^"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB4&QA +M=&9O<FU?=F%R:6%T:6]N(CX\+T$^4&QA=&9O<FT*=F%R:6%T:6]N/"](,3X* +M/%`^4V]M92!T97-T<R!A<F4@<W!E8VEF:6,@=&\@82!P87)T:6-U;&%R('!L +M871F;W)M+B!3=6-H('1E<W1S"G-H;W5L9"!U<V4@87!P<F]P<FEA=&4@<&QA +M=&9O<FTM<W!E8VEF:6,@;6%C<F]S(&%S(&9O;&QO=W,Z(`H\+U`^"CQ04D4@ +M0TQ!4U,](G=E<W1E<FXB/B-I9B!?7U!,051&3U)-"BXN+B!V87)I;W5S(&AE +M;'!E<B!F=6YC=&EO;G,@+BXN"B-E;F1I9@I$149)3D5?5$535"AF;V]?<&QA +M=&9O<FTI"GL*(VEF(%]?4$Q!5$9/4DT*)FYB<W`[("9N8G-P.RXN+B!T97-T +M<R!A<R!U<W5A;"`N+BXN"B-E;'-E"B9N8G-P.R`F;F)S<#MS:VEP<&EN9R@F +M<75O=#MP;&%T9F]R;2US<&5C:69I8R!T97-T<R9Q=6]T.RD["B-E;F1I9@I] +M/"]04D4^/%`^"DEN('!A<G1I8W5L87(L(&YO=&4@=&AA="!A;&P@=&5S=',@ +M87)E(&-O;7!I;&5D(&%N9"!R=6X@;VX@86QL"G!L871F;W)M<RX@"CPO4#X* +M/%`^36]S="!T97-T<R!A<F4@;F]T('!L871F;W)M+7-P96-I9FEC(&%N9"!W +M:6QL('1H=7,@96YD('5P(')U;FYI;F<*;VX@;6%N>2!D:69F97)E;G0@<&QA +M=&9O<FUS+B!);B!O<F1E<B!T;R!S:6UP;&EF>2!W<FET:6YG('-U8V@@=&5S +M=',L"G1R>2!T;R!U<V4@<&QA=&9O<FTM:6YD97!E;F1E;G0@8V]D:6YG.B`* +M/"]0/@H\54P^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^ +M57-E('-T9&EO(#Q45"!#3$%34STB=V5S=&5R;B(^9F]P96XH*3PO5%0^+`H) +M/%14($-,05-3/2)W97-T97)N(CYF=W)I=&4H*3PO5%0^+"`\5%0@0TQ!4U,] +M(G=E<W1E<FXB/F9R96%D*"D\+U14/BP*"6%N9"`\5%0@0TQ!4U,](G=E<W1E +M<FXB/F9C;&]S92@I/"]45#X@=&\@86-C97-S(&9I;&5S('=H96YE=F5R"@EF +M96%S:6)L92X@"@D\+U`^"@D\3$D^/%`^3&]O:R!T:')O=6=H('1H92`\5%0@ +M0TQ!4U,](G=E<W1E<FXB/G1E<W0N:#PO5%0^(&AE861E<B!T;PH)<V5E(&EF +M('1H97)E(&%R92!A<W-E<G18>'@H*2!F=6YC=&EO;G,@=&AA="!Y;W4@8V%N +M('5S92X@5&AE<F4G<R!A"@EL:7-T(&]F('1H92!M;W)E('!O<'5L87(@;VYE +M<R!B96QO=RP@8G5T(&YE=R!O;F5S(&%R92!O9G1E;B!A9&1E9"X@"@D\+U`^ +M"CPO54P^"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB07-S97)T7VUA +M8W)O<R(^/"]!/D%S<V5R="!M86-R;W,\+T@Q/@H\4#Y4:&4@9F]L;&]W:6YG +M(&ES(&$@;F5C97-S87)I;'D@:6YC;VUP;&5T92!L:7-T(&]F(&%S<V5R="!F +M=6YC=&EO;G,*879A:6QA8FQE('1O('1E<W1S.B`*/"]0/@H\54P^"@D\3$D^ +M/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^0F%S:6,@97%U86QI='DZ +M(#Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T17%U86Q);G0\+U14/BP*"3Q4 +M5"!#3$%34STB=V5S=&5R;B(^87-S97)T17%U86Q3=')I;F<\+U14/BP@/%14 +M($-,05-3/2)W97-T97)N(CYA<W-E<G1%<75A;$UE;3PO5%0^"@D)/"]0/@H) +M/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D9I;&4@8W)E871I +M;VXZ(#Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T36%K949I;&4\+U14/BP* +M"3Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T36%K95-Y;6QI;FL\+U14/BP@ +M/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1-86ME2&%R9&QI;FL\+U14/BP* +M"3Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T36%K941I<CPO5%0^(`H)/"]0 +M/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D9I;&4@=&5S +M=',Z(#Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T27-296<\+U14/BP*"3Q4 +M5"!#3$%34STB=V5S=&5R;B(^87-S97)T27-$:7(\+U14/BP@/%14($-,05-3 +M/2)W97-T97)N(CYA<W-E<G1)<U-Y;6QI;FL\+U14/BP*"3Q45"!#3$%34STB +M=V5S=&5R;B(^87-S97)T1FEL95-I>F4\+U14/BP@/%14($-,05-3/2)W97-T +M97)N(CYA<W-E<G1&:6QE3FQI;FMS/"]45#XL"@D\5%0@0TQ!4U,](G=E<W1E +M<FXB/F%S<V5R=$9I;&5-=&EM93PO5%0^(`H)/"]0/@H)/$Q)/CQ0/D9I;&4@ +M8V]N=&5N=',Z(#Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T1FEL945M<'1Y +M/"]45#XL"@D\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$9I;&5.;VY%;7!T +M>3PO5%0^+"`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$9I;&5#;VYT96YT +M<SPO5%0^+`H)/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1497AT1FEL94-O +M;G1E;G1S/"]45#X@"@D\+U`^"CPO54P^"CQ(,2!#3$%34STB=V5S=&5R;B(^ +M/$$@3D%-13TB4F5F97)E;F-E7T9I;&5S(CX\+T$^4F5F97)E;F-E($9I;&5S +M/"](,3X*/%`^36%N>2!T97-T<R!R97%U:7)E(')E861I;F<@82!P<F4M8V]N +M<W1R=6-T960@<F5F97)E;F-E(&9I;&4N(%-U8V@*9FEL97,@87)E('-T;W)E +M9"!W:71H('1H92!S;W5R8V4@8V]D92!F;W(@=&AE(&%S<V]C:6%T960@=&5S +M="!S=6ET92X*4F5F97)E;F-E(&9I;&5S(&%R92!N86UE9"!A8V-O<F1I;F<@ +M=&\@=&AE('1E<W0@86YD(&UU<W0@8F4@=75E;F-O9&5D"G1O(&)E(&-H96-K +M960@:6YT;R!S;W5R8V4@8V]N=')O;"X@"CPO4#X*/%`^1F]R(&5X86UP;&4L +M(&EF('EO=2!N965D(&$@<F5F97)E;F-E('1A<B!A<F-H:79E('1O('5S92!W +M:71H"CQ45"!#3$%34STB=V5S=&5R;B(^=&5S=%]F;V\\+U14/BP@=&AE(&9I +M;&4@<VAO=6QD(&)E(&YA;65D"CQ45"!#3$%34STB=V5S=&5R;B(^=&5S=%]F +M;V\N=&%R/"]45#X@86YD('-T;W)E9"!I;B!S;W5R8V4@8V]N=')O;"!A<PH\ +M5%0@0TQ!4U,](G=E<W1E<FXB/G1E<W1?9F]O+G1A<BYU=3PO5%0^+B`*/"]0 +M/@H\4#Y7:71H:6X@=&AE('1E<W0@8V]D92P@>6]U(&-A;B!R96-O=F5R('1H +M92!R969E<F5N8V4@9FEL92!W:71H.B`*/"]0/@H\4%)%($-,05-3/2)W97-T +M97)N(B!35%E,13TB;6%R9VEN+6)O='1O;3H@,"XR:6XB/B9N8G-P.R`F;F)S +M<#L@97AT<F%C=%]R969E<F5N8V5?9FEL92@F<75O=#MT97-T7V9O;RYT87(F +M<75O=#LI.SPO4%)%/CQ0/@I4:&4@/%14($-,05-3/2)W97-T97)N(CYE>'1R +M86-T7W)E9F5R96YC95]F:6QE*"D\+U14/B!F=6YC=&EO;B!W:6QL"G5U9&5C +M;V1E('1H92!R97%U97-T960@9FEL92!A;F0@<'5T('1H92!R97-U;'0@:6X@ +M=&AE(&-U<G)E;G0*9&ER96-T;W)Y+B`*/"]0/@H\4#Y,;V]K(&%T(#Q45"!# +M3$%34STB=V5S=&5R;B(^=&5S=%]R96%D7V9O<FUA=%]C<&EO7V)I;E]B92YC +M/"]45#X*9F]R(&$@<VEM<&QE(&5X86UP;&4@;V8@=&AI<R!U<V%G92X@"CPO +M4#X*/%`^02!F97<@;V8@=&AE(&]L9&5R('1E<W1S('-T;W)E(')E9F5R96YC +M92!D871A('=I=&AI;B!T:&4@<V]U<F-E"F-O9&4@87,@82!H97@M96YC;V1E +M9"!A<G)A>2!O9B!C:&%R86-T97)S+B!4:&ES('=A<R!C;VUM;VX@8F5F;W)E +M"CQ45"!#3$%34STB=V5S=&5R;B(^97AT<F%C=%]R969E<F5N8V5?9FEL92@I +M/"]45#X@=V%S(&%D9&5D(&%N9"!I<PIN;W0@<F5C;VUM96YD960@9F]R(&YE +M=R!C;V1E+B`*/"]0/@H\2#$@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](D1O +M<U]A;F1?1&]N=',B/CPO03Y$;W,@86YD($1O;G1S/"](,3X*/%5,/@H)/$Q) +M/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D1/('5S92!A<W-E<G1S +M(&QI8F5R86QL>2X@270G<PH)8V]M;6]N('1O(&AA=F4@86X@87-S97)T(&]N +M(&%L;6]S="!E=F5R>2!L:6YE+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R +M9VEN+6)O='1O;3H@,&EN(CY$3R!U<V4@87-S97)T17%U86Q);G0L"@EA<W-E +M<G1%<75A;%-T<FEN9RP@87-S97)T17%U86Q-96T@=&\@=&5S="!E<75A;&ET +M>2!I;G-T96%D(&]F('!L86EN"@EA<W-E<G0H*3L@=&AE('-P96-I86QI>F5D +M(&9O<FUS(&=I=F4@82!L;W0@;6]R92!I;F9O<FUA=&EO;B!O;B!A"@EF86EL +M=7)E+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN +M(CY$3R!T97-T('EO=7(@=&5S=',[(&5X<&5R:6UE;G0@8GD*"6-H86YG:6YG +M(&$@<&EE8V4@;V8@8V]D92!A;F0@;6%K92!S=7)E('EO=7(@=&5S="!F86EL +M<RX@268@>6]U('1H:6YK"@EY;W4G=F4@9F]U;F0@82!B=6<L('=E(')E8V]M +M;65N9"!W<FET:6YG('1H92!T97-T(&9I<G-T+"!M86ME('-U<F4*"71H92!T +M97-T(&9A:6QS+"!T:&5N(&9I>&EN9R!T:&4@8G5G+B`*"3PO4#X*"3Q,23X\ +M4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY$3R!R=6X@86QL(&]F('1H +M92!T97-T<R!B969O<F4*"7-U8FUI='1I;F<@82!C:&%N9V4N($1E<&5N9&EN +M9R!O;B!Y;W5R(&)U:6QD(&5N=FER;VYM96YT+"`\5%0@0TQ!4U,](G=E<W1E +M<FXB/FUA:V4*"71E<W0\+U14/B!O<B`\5%0@0TQ!4U,](G=E<W1E<FXB/FUA +M:V4@8VAE8VL\+U14/B!W:6QL('5S=6%L;'D@<G5N"@EA;&P@;V8@=&AE('1E +M<W1S+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN +M(CY$3TXG5"!R96QY(&]N(#Q45"!#3$%34STB=V5S=&5R;B(^2$%615\\+U14 +M/@H);6%C<F]S(&9R;VT@8V]N9FEG+F@N("A)9B!T:&4@=&5S=',@=7-E('1H +M92!S86UE(#Q45"!#3$%34STB=V5S=&5R;B(^2$%615\\+U14/@H);6%C<F]S +M(&%S('1H92!C;V1E(&)E:6YG('1E<W1E9"!T:&5N(&-O;F9I9W5R871I;VX@ +M<')O8FQE;7,@=VEL;"!B90H)8V]V97)E9"!U<"XI(`H)/"]0/@H)/$Q)/CQ0 +M(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D1/('5S92!R=6Y#!'L/0!0` +-+;`9T`$````````````` +` +end diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part3.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part3.rar.uu new file mode 100644 index 0000000..186a54e --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part3.rar.uu @@ -0,0 +1,163 @@ +begin 644 test_rar_multivolume_multiple_files.part3.rar +M4F%R(1H'`!EZ<Q$`#0`````````_$'0AD$0`9Q<``(].```#8Z8%7KM,-4$4 +M,!H`I($``$QI8F%R8VAI=F5!9&1I;F=497-T,BYH=&ULP,R[3#5!)TTU071I +M;64@=&5S=',@9F]R('!L871F;W)M"@EF96%T=7)E<RX@1F]R(&5X86UP;&4L +M('1H92!!0TP@=&5S=',@=')Y('1O('-E="!A;B!!0TP@;VX@82!F:6QE(&%N +M9`H)<F5A9"!I="!B86-K('1O(&1E=&5R;6EN92!I9B!!0TP@<W5P<&]R="!I +M<R!A=F%I;&%B;&4L('1H96X@=&AE>0H)97AE<F-I<V4@=&AE(&QI8F%R8VAI +M=F4@04-,(&AA;F1L:6YG+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN +M+6)O='1O;3H@,&EN(CY$3R!L;V]K(&%T(&5X:7-T:6YG('1E<W1S+B!/9G1E +M;BP*"6$@8G5G(&-A;B!B92!T97-T960@8GD@861D:6YG(&IU<W0@82!C;W5P +M;&4@;V8@87-S97)T<R!T;R!A;@H)97AI<W1I;F<@=&5S="!I;G-T96%D(&]F +M('=R:71I;F<@82!N97<@;VYE+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R +M9VEN+6)O='1O;3H@,&EN(CY$3R!I;7!R;W9E(&5X:7-T:6YG('1E<W1S+B!) +M;@H)<&%R=&EC=6QA<BP@:68@>6]U('-E92!A('1E<W0@9F%I;'5R92!T:&%T +M(&ES(&AA<F0@=&\@=6YD97)S=&%N9"P*"6-O;G-I9&5R(&%D9&EN9R!A(&9A +M:6QU<F4H*2!M97-S86=E(&]R(&-O;6UE;G1S('-O('1H92!N97AT('!E<G-O +M;@H)=VEL;"!H879E(&%N(&5A<VEE<B!T:6UE+B`*"3PO4#X*"3Q,23X\4#Y$ +M3R!A<VL@;VX@=&AE(&UA:6QI;F<@;&ES=',@:68@>6]U(&AA=F4@<75E<W1I +M;VYS+B!3;VUE('1E<W1S"@EA<F4@8F5T=&5R('=R:71T96X@=&AA;B!O=&AE +M<G,N(`H)/"]0/@H\+U5,/@H\2#$@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344] +M(E-O;65?97AA;7!L97-?;V9?=&5S=',B/CPO03Y3;VUE"F5X86UP;&5S(&]F +M('1E<W1S/"](,3X*/$@R($-,05-3/2)W97-T97)N(CX\02!.04U%/2),:6)A +M<F-H:79E7W)E861?=&5S=',B/CPO03Y,:6)A<F-H:79E"G)E860@=&5S=',\ +M+T@R/@H\4#Y4:&5R92!A<F4@<75I=&4@82!F97<@<F5A9"!T97-T<R!T:&%T +M('-I;7!L>2!R96%D(&$@<')E+6)U:6QT"FEN<'5T(&9I;&4@86YD('9E<FEF +M>2!T:&4@<F5S=6QT<RX@5&AE<V4@=7-E(#Q45"!#3$%34STB=V5S=&5R;B(^ +M97AT<F%C=%]R969E<F5N8V5?9FEL92@I/"]45#X*=&\@9&5C;V1E(&$@=75E +M;F-O9&5D(&EN<'5T(&9I;&4L('1H96X@;W!E;B!T:&%T(&9I;&4@=VET:"!L +M:6)A<F-H:79E"F%N9"!V97)I9GD@=&AE(')E<W5L=',N($UO<W0@;V8@=&AE +M<V4@87)E('!R971T>2!S=')A:6=H=&9O<G=A<F0N(`H\+U`^"CQ(,B!#3$%3 +M4STB=V5S=&5R;B(^/$$@3D%-13TB3&EB87)C:&EV95]R96%D+W=R:71E7W1E +M<W1S(CX\+T$^3&EB87)C:&EV90IR96%D+W=R:71E('1E<W1S/"](,CX*/%`^ +M36]S="!O9B!T:&4@=W)I=&4@=&5S=',@<F5A;&QY(&IU<W0@=F5R:69Y('1H +M870@;&EB87)C:&EV92!C86X*<F5A9"!W:&%T(&ET('=R:71E<RX@5&AE<V4@ +M9V5N97)A;&QY('5S92!T:&4@;65M;W)Y(&EN=&5R9F%C97,N(%1H97D*9F5E +M9"!A<F-H:79E(&5N=')I97,@:6YT;R!T:&4@=W)I=&5R('1O(&-R96%T92!A +M;B!A<F-H:79E(&EN(&UE;6]R>0IA;F0@=&AE;B!O<&5N('1H92!M96UO<GD@ +M86=A:6X@=&\@<F5A9"!T:&4@9&%T82!B86-K(&%N9"!V97)I9GD@=&AA=`II +M="!I<R!T:&4@<V%M92X@"CPO4#X*/$@R($-,05-3/2)W97-T97)N(CX\02!. +M04U%/2),:6)A<F-H:79E7W=R:71E7W9A;&ED871O<G,B/CPO03Y,:6)A<F-H +M:79E"G=R:71E('9A;&ED871O<G,\+T@R/@H\4#Y!(&9E=R!W<FET92!T97-T +M<R!W<FET92!A;B!A<F-H:79E(&EN=&\@;65M;W)Y(&%N9"!T:&5N(&EN<W!E +M8W0*=&AE(&%C='5A;"!B>71E<R!T;R!V97)I9GD@=&AA="!T:&4@87)C:&EV +M92!W87,@8W)E871E9"!C;W)R96-T;'DN"E1H97-E('1E<W1S(&%R92!N:6-E +M('1O(&AA=F4@8G5T(&%R92!T961I;W5S('1O(&)U:6QD+B`*/"]0/@H\4#Y4 +M:&5R92!A<F4@86QS;R!A(&-O=7!L92!O9B!S=6-H('9A;&ED871O<G,@9F]R +M(&)S9'1A<B!A;F0@8G-D8W!I;RX*5&AE<V4@87)E('9E<GD@=')I8VMY('-I +M;F-E('1H92!E>&%C="!D871A(&-O;G1A:6YS('9A;'5E<R!T:&%T('1H90IT +M97-T(&-A;FYO="!C;VUP;&5T96QY(&-O;G1R;VP@*'-U8V@@87,@=&AE(&-U +M<G)E;G0@=&EM92!O<@IU<V5R;F%M92DN(`H\+U`^"CQ(,B!#3$%34STB=V5S +M=&5R;B(^/$$@3D%-13TB1&ES:U]T97-T<R(^/"]!/D1I<VL@=&5S=',\+T@R +M/@H\4#Y,:6)A<F-H:79E)W,@9&ES:R!)+T\@05!)<RP@87,@=V5L;"!A<R!B +M<V1T87(@86YD(&)S9&-P:6\L(&YE960@=&\*;W!E<F%T92!B>2!V97)I9GEI +M;F<@9FEL97,@;VX@9&ES:RX@5&\@;6%K92!T:&ES(&5A<VEE<BP@=&AE('1E +M<W0*9G)A;65W;W)K(&YO=R!H87,@82!L87)G92!N=6UB97(@;V8@87-S97)T +M:6]N<R!T;R!V97)I9GD@=&EM97-T86UP<RP*<&5R;6ES<VEO;G,L(&%N9"!O +M=&AE<B!B87-I8R!F:6QE(&1A=&$N(%1H97-E(&%S<V5R=&EO;G,@=7-E"F%P +M<')O<')I871E('-Y<W1E;2!C86QL<R!F;W(@96%C:"!P;&%T9F]R;3L@;F5W +M('1E<W1S('-H;W5L9"!T<GD@=&\*879O:60@=7-I;F<@/%14($-,05-3/2)W +M97-T97)N(CYS=&%T*"D\+U14/BP@=VAI8V@@:7,@;F]T('5N:69O<FUL>0IA +M=F%I;&%B;&4N(`H\+U`^"CQ(,B!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB +M1G5Z>E]T97-T97(B/CPO03Y&=7IZ('1E<W1E<CPO2#(^"CQ0/E1H92!F=7IZ +M('1E<W1E<B!I<R!O;F4@;V8@=&AE(&9E=R!T97-T<R!T:&%T(&1O97,@;F]T +M(&%G9W)E<W-I=F5L>0IU<V4@87-S97)T:6]N<RX@271S('!U<G!O<V4@:7,@ +M=&\@=')Y(&%N9"!C<F%S:"!L:6)A<F-H:79E(&)Y(&9E961I;F<*:70@:6YP +M=70@=&AA="!I<R!S;&EG:'1L>2!D86UA9V5D+B`H4F5M96UB97(@=&AA="!L +M:6)A<F-H:79E(&1O97,*:&%V92!S;VUE(&9A:6QS869E(&-O9&4@=&AA="!D +M96QI8F5R871E;'D@86)O<G1S('1H92!E;G1I<F4@<')O9W)A;0II9B!C97)T +M86EN(&EN=F%R:6%N=',@87)E('9I;VQA=&5D+BD@"CPO4#X*/%`^4VEN8V4@ +M82!F=7IZ(&9A:6QU<F4@8V%U<V5S(&$@8W)A<V@L(&ET)W,@:6UP;W-S:6)L +M92!T;R!R97!O<G0@=&AE"F5R<F]R('1O('1H92!C;VYS;VQE+"!S;R!T:&4@ +M9G5Z>B!T97-T97(@:6YS=&5A9"!G96YE<F%T97,@80IR86YD;VUL>2UD86UA +M9V5D(&9I;&4L('-A=F5S('1H870@9FEL92!T;R!D:7-K+"!T:&5N(')U;G,@ +M=&AE(&9I;&4*=&AR;W5G:"!L:6)A<F-H:79E('1O('1R>2!T;R!P<F]V;VME +M(&$@8W)A<V@N($EF(&QI8F%R8VAI=F4@8W)A<VAE<PIT:&4@96YT:7)E('1E +M<W1E<BP@=&AE(&EN<'5T('1H870@8V%U<V5D('1H92!C<F%S:"!W:6QL(&)E +M(&%V86EL86)L90IO;B!D:7-K(&9O<B!F=7)T:&5R(&%N86QY<VES+B`*/"]0 +M/@H\4#Y!;'1H;W5G:"!I="!I<R!U;G5S=6%L(&9O<B!A('1E<W0@<')O9W)A +M;2!T;R!U<V4@<F%N9&]M(&EN<'5T+"!T:&4*9G5Z>B!T97-T97(@:&%S('!R +M;W9E;B!Q=6ET92!U<V5F=6P@870@=6YC;W9E<FEN9R!P;V]R(&5R<F]R"FAA +M;F1L:6YG+B!5;F9O<G1U;F%T96QY+"!T:&4@;F5E9"!T;R!W<FET92!T:&4@ +M9&%T82!T;R!D:7-K(&)E9F]R90IE86-H('1E<W0@:7,@82!S:6=N:69I8V%N +M="!P97)F;W)M86YC92!I<W-U92X@"CPO4#X*/$@R($-,05-3/2)W97-T97)N +M(CX\02!.04U%/2),87)G95]T87)?=&5S=&5R(CX\+T$^3&%R9V4@=&%R('1E +M<W1E<CPO2#(^"CQ0/E1H92!L87)G92!T87(@=&5S=&5R(&%T=&5M<'1S('1O +M(&5X97)C:7-E(&)O=6YD87)Y(&-A<V5S('=I=&@@=F5R>0IL87)G92!E;G1R +M:65S+"!U<"!T;R`Q('1E<F%B>71E+B!/9B!C;W5R<V4L('=R:71I;F<@82`Q +M('1E<F%B>71E"F5N=')Y('1O(&%N('5N8V]M<')E<W-E9"!A<F-H:79E(&]N +M(&1I<VL@;W(@;65M;W)Y(&ES('5N86-C97!T86)L92P*8F]T:"!F;W(@<&5R +M9F]R;6%N8V4@86YD('-P86-E(')E87-O;G,N($5V96X@9WII<"!O<B!B>FEP +M,@IC;VUP<F5S<VEO;B!W;VXG="!H96QP.R!A;'1H;W5G:"!S;6%L;&5R+"!T +M:&4@;W5T<'5T(&ES('-T:6QL(&QA<F=E"F%N9"!T:&4@=&EM92!N965D960@ +M=&\@8V]M<')E<W,@<W5C:"!A(&QA<F=E(&%M;W5N="!O9B!D871A(&ES"G!R +M;VAI8FET:79E+B!3;R!T:&4@;&%R9V4@=&%R('1E<W1E<B!U<V5S(&$@=')I +M8VLN(`H\+U`^"CQ0/E)E;65M8F5R('1H870@86X@=6YC;VUP<F5S<V5D('1A +M<B!A<F-H:79E(&-O;G-I<W1S(&]F(&%L=&5R;F%T:6YG"FAE861E<G,@86YD +M(&)O9&EE<RX@268@=&AE(&)O9&EE<R!C;VYS:7-T(&5N=&ER96QY(&]F('IE +M<F\@8GET97,L"G1H96X@86QL('1H870G<R!N965D960@=&\@<F5C;VYS=')U +M8W0@=&AE(&%R8VAI=F4@:7,@=&\@<F5C;W)D('1H90IR96QA=&EV96QY('-M +M86QL(&AE861E<G,@86YD('-T;W)E(&$@8V]U;G0@;V8@96%C:"!C;VYT:6=U +M;W5S(&)L;V-K"F]F('IE<F]S+B!4:&ES('-I;7!L92`F<75O=#MR=6XM;&5N +M9W1H(&5N8V]D:6YG)G%U;W0[(&ES('9E<GD*969F96-T:79E+"!C;VUP<F5S +M<VEN9R!A('-A;7!L92!A<F-H:79E('=I=&@@82!D;WIE;B!E;G1R:65S(&1O +M=VX@=&\*:G5S="!A(&9E=R!K:6QO8GET97,L(&5V96X@:68@=&AO<V4@96YT +M<FEE<R!R86YG92!U<"!T;R`Q5$(N(`H\+U`^"CQ0/D)Y('=R:71I;F<@82!C +M=7-T;VT@22]/(&QA>65R('1H870@:6UP;&5M96YT<R!S=6-H(&-O;7!R97-S +M:6]N+"!W90IC86X@=W)I=&4@=F5R>2!L87)G92!E;G1R:65S('1H<F]U9V@@ +M;&EB87)C:&EV92!T:&5N(')E860@=&AE;2!B86-K"F%N9"!V97)I9GD@=&AA +M="!L:6)A<F-H:79E(&-O<G)E8W1L>2!H86YD;&5S(&%L;"!O9B!T:&4@8F]U +M;F1A<GD*8V%S97,N(`H\+U`^"CQ0/D]F(&-O=7)S92P@979E;B!S8V%N;FEN +M9R!O=71P=70@=&\@9&5T97)M:6YE('IE<F\@8FQO8VMS(&-A;B!T86ME"G%U +M:71E(&$@=VAI;&4L('-O('1H92!L87)G92!T87(@=&5S=&5R(&UA:V5S(&]N +M92!M;W)E(&]P=&EM:7IA=&EO;CH*3&EB87)C:&EV92!I<R`F<75O=#MM;W-T +M;'DF<75O=#L@>F5R;RUC;W!Y+B!7:&5N('EO=2!G:79E(&ET(&$@;&%R9V4* +M8FQO8VL@=&\@=W)I=&4@=&\@86X@96YT<GD@8F]D>2P@:70@=VEL;"!P87-S +M('!O:6YT97)S('-T<F%I9VAT"G1H<F]U9V@@=&\@=&AE(&]U='!U="!R;W5T +M:6YE+"!E>&-E<'0@:6X@=&AO<V4@8V%S97,@=VAE<F4@:70@;75S=`IC;W!Y +M(&1A=&$@=&\@8V]R<F5C=&QY(&)U:6QD(&)L;V-K<RX@5&AE(&QA<F=E('1A +M<B!T97-T97(@=&%K97,*861V86YT86=E(&]F('1H:7,@=&\@<75I8VML>2!D +M971E8W0@=VAE;B!A(&)L;V-K(&)E:6YG('=R:71T96X@;W5T(&)Y"G1H92!A +M<F-H:79E('=R:71E<B!I<R!T:&4@<V%M92!A<R!S;VUE(&]F('1H92!D871A +M('1H870@=V%S(&=I=F5N(&)Y"G1H92!T97-T(&%S('1H92!E;G1R>2!B;V1Y +M+"!A;F0@<VEM:6QA<FQY('=H96X@<F5A9&EN9R!T:&4@87)C:&EV90IB86-K +M+B`*/"]0/@H\4#Y486ME;B!T;V=E=&AE<BP@=&AE<V4@=')I8VMS(&%L;&]W +M('1H92!L87)G92!T87(@=W)I=&5R('1O('1E<W0*9F]R(&ES<W5E<R!S=6-H +M(&%S('!R;W!E<B!S=&]R86=E(&]F('9E<GD@;&%R9V4@9FEL92!S:7IE<R`H +M=&%R(&9I;&5S"G-U<'!O<G0@<V5V97)A;"!D:69F97)E;G0@=V%Y<R!T;R!S +M=&]R92!F:6QE('-I>F5S('=H:6-H('1R861E(&]F9@IP;W)T86)I;&ET>2!V +M97)S=7,@<F%N9V4[(&QI8F%R8VAI=F4@=')I97,@=&\@=7-E('1H92!M;W-T +M('!O<G1A8FQE"F]N92!I="!C86X@9F]R(&5A8V@@96YT<GDI(&%N9"!I;G1E +M9V5R(&]V97)F;&]W("A7:6YD;W=S(#,R+6)I="`\5%0@0TQ!4U,](G=E<W1E +M<FXB/F]F9E]T/"]45#X*8G)O:V4@=&AE(&QA<F=E('1A<B!T97-T(&%N9"!L +M960@;&EB87)C:&EV92!T;R!M86ME(&AE879I97(@=7-E(&]F"CQ45"!#3$%3 +M4STB=V5S=&5R;B(^:6YT-C1?=#PO5%0^(&EN=&5R;F%L;'DI(&EN(&$@=&5S +M="!T:&%T(')U;G,@:6X*=6YD97(@,2\T('-E8V]N9"X@"CPO4#X*/%`@4U19 +M3$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^/$)2/@H\+U`^"CPO0D]$63X*/"]( +M5$U,/G_2="*00P#J`P``CTX```-FJ^+3\V,A0!0P&0"D@0``3&EB87)C:&EV +M94%D9&EN9U1E<W0N:'1M;,#,\V,A0+M,-4$\(41/0U194$4@2%1-3"!054), +M24,@(BTO+U<S0R\O1%1$($A434P@-"XP(%1R86YS:71I;VYA;"\O14XB/@H\ +M2%1-3#X*/$A%040^"@D\345402!(5%10+45154E6/2)#3TY414Y4+5194$4B +M($-/3E1%3E0](G1E>'0O:'1M;#L@8VAA<G-E=#UU=&8M."(^"@D\5$E43$4^ +M/"]4251,13X*"3Q-151!($Y!344](D=%3D52051/4B(@0T].5$5.5#TB3&EB +M<F5/9F9I8V4@,RXS("`H56YI>"DB/@H)/$U%5$$@3D%-13TB0U)%051%1"(@ +M0T].5$5.5#TB,C`Q,3`V,C8[,C(R,S4Q,#`B/@H)/$U%5$$@3D%-13TB0TA! +M3D=%1"(@0T].5$5.5#TB,C`Q,3`V,C8[,C(R-30U,#`B/@H)/%-464Q%(%19 +M4$4](G1E>'0O8W-S(CX*"3PA+2T*"0E`<&%G92![(&UA<F=I;CH@,"XW.6EN +M('T*"0E0('L@;6%R9VEN+6)O='1O;3H@,"XP.&EN('T*"0E(,2![(&UA<F=I +M;BUB;W1T;VTZ(#`N,#AI;B!]"@D)2#$N=V5S=&5R;B![(&9O;G0M9F%M:6QY +M.B`B3&EB97)A=&EO;B!397)I9B(L('-E<FEF('T*"0E(,2YC:FL@>R!F;VYT +M+69A;6EL>3H@(D)I='-T<F5A;2!697)A(%-A;G,B('T*"0E(,2YC=&P@>R!F +M;VYT+69A;6EL>3H@(D9R965386YS(B!]"@D)4%)%+F-J:R![(&9O;G0M9F%M +M:6QY.B`B0FET<W1R96%M(%9E<F$@4V%N<R(L(&UO;F]S<&%C92!]"@D)2#(@ +M>R!M87)G:6XM8F]T=&]M.B`P+C`X:6X@?0H)"4@R+F-T;"![(&9O;G0M9F%M +M:6QY.B`B1G)E95-A;G,B('T*"0E45"YC:FL@>R!F;VYT+69A;6EL>3H@(D)I +M='-T<F5A;2!697)A(%-A;G,B+"!M;VYO<W!A8V4@?0H)+2T^"@D\+U-464Q% +M/@H\+TA%040^"CQ"3T19($Q!3D<](F5N+553(B!$25(](DQ44B(^"CQ(,2!# +M3$%34STB=V5S=&5R;B(^26YT<F]D=6-T:6]N/"](,3X*/%`^3&EB87)C:&EV +M92!I<R!N;W<@82!F86ER;'D@8V]M<&QE>"!P:65C92!O9B!S;V9T=V%R92!T +M:&%T(')U;G,@;VX*82!N=6UB97(@;V8@9&EF9F5R96YT('!L871F;W)M<RX@ +M02!T:&]R;W5G:"!T97-T('-U:71E(&ES(&5S<V5N=&EA;`IB;W3-@7L/0!0` +-)(88NP(````````````` +` +end diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part4.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part4.rar.uu new file mode 100644 index 0000000..acd138d --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part4.rar.uu @@ -0,0 +1,163 @@ +begin 644 test_rar_multivolume_multiple_files.part4.rar +M4F%R(1H'`!EZ<Q$`#0````````#M^70CD$,`E1L``(].```#VUD;]_-C(4`4 +M,!D`I($``$QI8F%R8VAI=F5!9&1I;F=497-T+FAT;6S`S/-C(4"[3#5!:"!F +M;W(@=F5R:69Y:6YG(&YE=R!P;W)T<R!A;F0@9F]R(&5N<W5R:6YG('1H870@ +M9G5T=7)E(&-H86YG97,*9&]N)W0@8G)E86L@97AI<W1I;F<@9G5N8W1I;VYA +M;&ET>2X@"CPO4#X*/%`^06YY('-I9VYI9FEC86YT(&-H86YG92!T;R!L:6)A +M<F-H:79E+"!I;F-L=61I;F<@;6]S="!B=6<@9FEX97,L"G-H;W5L9"!B92!A +M8V-O;7!A;FEE9"!B>2!N97<@=&5S=',@;W(@8VAA;F=E<R!T;R!E>&ES=&EN +M9R!T97-T<RX@5&AI<PIA<G1I8VQE(&5X<&QA:6YS(&AO=R!T:&4@;&EB87)C +M:&EV92!T97-T('-U:71E<R!W;W)K(&%N9"!H;W<@=&\*97AT96YD('1H96TN +M(`H\+U`^"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB0G5I;&1I;F=? +M86YD7U)U;FYI;F=?=&AE7U1E<W1?4')O9W)A;7,B/CPO03X*0G5I;&1I;F<@ +M86YD(%)U;FYI;F<@=&AE(%1E<W0@4')O9W)A;7,\+T@Q/@H\4#Y%86-H(&UA +M:F]R(&-O;7!O;F5N="TM;&EB87)C:&EV92P@8G-D=&%R+"!A;F0@8G-D8W!I +M;RTM:&%S(&$@=&5S=`IP<F]G<F%M('1H870@97AE<F-I<V5S('1H92!F=6YC +M=&EO;F%L:71Y(&]F('1H870@8V]M<&]N96YT+B!4:&5S90IT97-T('!R;V=R +M86US(&%R92!C;VUP:6QE9"!I;B!T:&4@<V%M92!W87D@=&AA="!T:&4@<F5S +M="!O9B!T:&4*;&EB87)C:&EV92!S=6ET92!I<R!C;VUP:6QE9"X@"CPO4#X* +M/%`^5&\@<G5N('1H92!T97-T('!R;V=R86US+"!Y;W4@;F5E9"!T;R!G:79E +M('1H96T@='=O('!I96-E<R!O9@II;F9O<FUA=&EO;CH@"CPO4#X*/%5,/@H) +M/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/E1H92!F=6QL('!A +M=&@@=&\@=&AE(&1I<F5C=&]R>0H):&]L9&EN9R!T:&4@)G%U;W0[<F5F97)E +M;F-E(&9I;&5S)G%U;W0[(`H)/"]0/@H)/$Q)/CQ0/E1H92!F=6QL('!A=&@@ +M=&\@=&AE(&5X96-U=&%B;&4@<')O9W)A;2!B96EN9R!T97-T960@*&YO=`H) +M87!P;&EC86)L92!T;R!L:6)A<F-H:79E7W1E<W0@<VEN8V4@;&EB87)C:&EV +M92!I<R!C;VUP:6QE9"!I;G1O('1H90H)=&5S="!P<F]G<F%M*2`*"3PO4#X* +M/"]53#X*/%`^5&AE(')E9F5R96YC92!F:6QE<R!A<F4@82!C;VQL96-T:6]N +M(&]F(&MN;W=N(&EN<'5T<R!T:&%T(&%R92!U<V5D"FEN('1H92!T97-T('!R +M;V-E<W,N(%1H97D@87)E(&%L;"!S=&]R960@:6X@=75E;F-O9&5D(&9O<FUA +M="!I;B!F:6QE<PIW:71H(&$@)G%U;W0[+G5U)G%U;W0[(&5X=&5N<VEO;BX@ +M5&AE('1E<W0@<')O9W)A;7,@;&]O:R!I;B!A(&9E=PIS=&%N9&%R9"!L;V-A +M=&EO;G,[(&EF(&YO;F4@;V8@=&AO<V4@=V]R:RP@>6]U)VQL(&YE960@=&\@ +M<W!E8VEF>2!T:&4*/%14($-,05-3/2)W97-T97)N(CXM<CPO5%0^(&]P=&EO +M;B!W:71H('1H92!F=6QL('!A=&AN86UE('1O('1H90IA<'!R;W!R:6%T92!D +M:7)E8W1O<GDN(`H\+U`^"CQ0/E1H92!B<V1T87)?=&5S="!A;F0@8G-D8W!I +M;U]T97-T('!R;V=R86US(')U;B!B<V1T87(@;W(@8G-D8W!I;PIR97!E871E +M9&QY.R!T:&5Y(&YE960@=&AE(&9U;&P@<&%T:"!T;R!T:&4@87!P<F]P<FEA +M=&4@97AE8W5T86)L92X*06QT:&]U9V@@8G-D=&%R7W1E<W0@86YD(&)S9&-P +M:6]?=&5S="!A<F4@<W!E8VEF:6-A;&QY(&EN=&5N9&5D(&9O<@IT97-T:6YG +M(&)S9'1A<B!A;F0@8G-D8W!I;RP@=&AE>2!S:&]U;&0@8F4@=7-A8FQE(&9O +M<B!T97-T:6YG(&]T:&5R"G1A<B!A;F0@8W!I;R!P<F]G<F%M<RX@26X@9F%C +M="P@<G5N;FEN9R!T:&5S92!T97-T('!R;V=R86US(&%G86EN<W0*;W1H97(@ +M=&%R(&EM<&QE;65N=&%T:6]N<R!I<R!A(&=O;V0@=V%Y('1O('9E<FEF>2!T +M:&%T('1H92!T97-T"G!R;V=R86US('1H96US96QV97,@87)E('=O<FMI;F<@ +M8V]R<F5C=&QY+B`*/"]0/@H\4#Y7:&5N(')U;BP@=&AE('1E<W0@<')O9W)A +M;7,@;W5T<'5T(&$@<')O9W)E<W,@;65S<V%G92!F;W(@96%C:`IT97-T+"!A +M;B!E<G)O<B!M97-S86=E(&9O<B!E86-H(&9A:6QE9"!A<W-E<G1I;VXL(&%N +M9"!A(&9I;F%L"G-U;6UA<GDZ(`H\+U`^"CQ04D4@0TQ!4U,](G=E<W1E<FXB +M/B9N8G-P.U)U;FYI;F<@=&5S=',@:6XZ("]T;7`O8G-D=&%R7W1E<W0N,C`P +M.2TP,BTQ-U0R,2XS,"XT,"TP,#`*)FYB<W`[4F5F97)E;F-E(&9I;&5S('=I +M;&P@8F4@<F5A9"!F<F]M.B`F;F)S<#L@)FYB<W`[+VAO;64O=&EM+VQI8F%R +M8VAI=F4O=')U;FLO=&%R+W1E<W0*)FYB<W`[4G5N;FEN9R!T97-T<R!O;CH@ +M+VAO;64O=&EM+VQI8F%R8VAI=F4O=')U;FLO8G-D=&%R"B9N8G-P.T5X97)C +M:7-I;F<Z(&)S9'1A<B`R+C8N.3`P82`M(&QI8F%R8VAI=F4@,BXV+CDP,&$* +M)FYB<W`[,#H@=&5S=%\P"B9N8G-P.S$Z('1E<W1?8F%S:6,*)FYB<W`[,CH@ +M=&5S=%]C;W!Y"B9N8G-P.R!T97-T7V-O<'DN8SHQ-S$Z($%S<V5R=&EO;B!F +M86EL960Z($EN=',@;F]T(&5Q=6%L"B9N8G-P.R`F;F)S<#L@)FYB<W`[(#`] +M,`HF;F)S<#L@)FYB<W`[("9N8G-P.R!L<W1A="AN86UE,B`K(#,L("9A;7`[ +M<W0R*3TM,0HF;F)S<#L@=&5S=%]C;W!Y+F,Z,3<Q.B!&86EL960@,C8T('1I +M;65S"B9N8G-P.S,Z('1E<W1?9V5T9&%T90HF;F)S<#LT.B!T97-T7VAE;'`* +M)FYB<W`[("9N8G-P.R`N+BX@;6]R92!O=71P=70@;VUI='1E9"`N+BX*)FYB +M<W`[,2!O9B`Q,R!T97-T<R!R97!O<G1E9"!F86EL=7)E<PHF;F)S<#L@5&]T +M86P@;V8@,3`U,#DW(&%S<V5R=&EO;G,@8VAE8VME9"X*)FYB<W`[(%1O=&%L +M(&]F(#(V-"!A<W-E<G1I;VYS(&9A:6QE9"X*)FYB<W`[(%1O=&%L(&]F(#`@ +M87-S97)T:6]N<R!S:VEP<&5D+CPO4%)%/CQ0/@I4:&4@:&5A9&5R(&QI;F5S +M(&AE<F4@<F5C;W)D.B`*/"]0/@H\54P^"@D\3$D^/%`@4U193$4](FUA<F=I +M;BUB;W1T;VTZ(#!I;B(^=&AE(&1I<F5C=&]R>2!T:&%T('=I;&P@8F4@=7-E +M9`H)9F]R('-C<F%T8V@@9FEL97,@9'5R:6YG('1H92!T97-T+B!)9B!A('1E +M<W0@9F%I;',L('1H92!S8W)A=&-H"@EF:6QE<R!W:6QL(&)E(&QE9G0@8F5H +M:6YD(&EN('1H:7,@9&ER96-T;W)Y(&9O<B!F=7)T:&5R(&1E8G5G9VEN9RX@ +M"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^5&AE +M(&1I<F5C=&]R>2!F<F]M('=H:6-H('1H90H)<F5F97)E;F-E(&9I;&5S('=I +M;&P@8F4@<F5A9"X@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T +M;VTZ(#!I;B(^1F]R(&)S9'1A<E]T97-T(&%N9"!B<V1C<&EO7W1E<W0L"@ET +M:&4@9G5L;"!P871H('1O('1H92!E>&5C=71A8FQE(&)E:6YG(&5X97)C:7-E +M9"X@"@D\+U`^"@D\3$D^/%`^0F%S:6,@=F5R<VEO;B!I;F9O<FUA=&EO;B!A +M8F]U="!T:&4@=&%R9V5T+B`*"3PO4#X*/"]53#X*/%`^26X@=&AI<R!C87-E +M+"!T:&4@=')A:6QE<B!I;F1I8V%T97,@=&AA="!O;F4@=&5S="!F86EL960N +M($%S('EO=0IC86X@<V5E+"!T:&5R92!W87,@82!S:6YG;&4@87-S97)T:6]N +M(&EN('1H92!C;V1E('1H870@9F%I;&5D(#(V-`IT:6UE<RX@5&AE(&9I<G-T +M('1I;64@:70@9F%I;&5D+"!I="!W87,@8F5C875S92!A;B`\5%0@0TQ!4U,] +M(G=E<W1E<FXB/FQS=&%T*"D\+U14/@IC86QL(')E='5R;F5D("TQ(&EN<W1E +M860@;V8@=&AE('IE<F\@=&AA="!W87,@97AP96-T960N(`H\+U`^"CQ(,2!# +M3$%34STB=V5S=&5R;B(^/$$@3D%-13TB0F%S:6-?=&5S=%]T97)M:6YO;&]G +M>2(^/"]!/D)A<VEC('1E<W0*=&5R;6EN;VQO9WD\+T@Q/@H\4#Y%86-H('1E +M<W0@<')O9W)A;2!C;VYS:7-T<R!O9B!A(&YU;6)E<B!O9B`F<75O=#MT97-T +M<R9Q=6]T.RX@16%C:`IT97-T(&AA<R!A(&YA;64@86YD(&ES(&EM<&QE;65N +M=&5D(&EN(&$@0R!S;W5R8V4@9FEL92!W:71H('1H92!S86UE"FYA;64@87,@ +M=&AE('1E<W0N(%1E<W1S('=O<FL@8GD@<&5R9F]R;6EN9R!S;VUE('-E<FEE +M<R!O9B!O<&5R871I;VYS"F%N9"!M86MI;F<@)G%U;W0[87-S97)T:6]N<R9Q +M=6]T.R!A8F]U="!T:&4@<F5S=6QT<RX@1F]R(&5X86UP;&4L"FUA;GD@;V8@ +M=&AE(&QI8F%R8VAI=F4@=&5S=',@;W!E;B!A;F0@<F5A9"!A;B!A<F-H:79E +M(&%N9"!A<W-E<G0@=&AA=`IP87)T:6-U;&%R(&]P97)A=&EO;G,@<W5C8V5E +M9&5D(&]R(&9A:6QE9"X@*%EE<RP@:70@:7,@;V9T96X*:6UP;W)T86YT('1O +M('9E<FEF>2!T:&%T(&EL;&5G86P@<F5Q=65S=',@9V5N97)A=&4@87!P<F]P +M<FEA=&4*97)R;W)S+BD@"CPO4#X*/%`^2&5R92!I<R!A('-O;65W:&%T(&5D +M:71E9"!E>&-E<G!T(&9R;VT@/%14($-,05-3/2)W97-T97)N(CYT97-T7V-O +M;7!A=%]Z:7`\+U14/BP*=VAI8V@@=F5R:69I97,@8V]M<&%T:6)I;&ET>2!W +M:71H('9A<FEO=7,@6DE0(&9O<FUA="!A<F-H:79E<SH@"CPO4#X*/%!212!# +M3$%34STB=V5S=&5R;B(^)FYB<W`[($1%1DE.15]415-4*'1E<W1?8V]M<&%T +M7WII<"D*)FYB<W`[('L*)FYB<W`[("9N8G-P.R`O*B`N+BX@<V5T=7`@;VUI +M='1E9"`N+BX@*B\*)FYB<W`[("9N8G-P.R!A<W-E<G0H*&$@/2!A<F-H:79E +M7W)E861?;F5W*"DI("$]($Y53$PI.PHF;F)S<#L@)FYB<W`[(&%S<V5R=$5Q +M=6%L26YT*$%20TA)5D5?3TLL"B9N8G-P.R`F;F)S<#L@)FYB<W`[("9N8G-P +M.R!A<F-H:79E7W)E861?<W5P<&]R=%]C;VUP<F5S<VEO;E]A;&PH82DI.PHF +M;F)S<#L@)FYB<W`[(&%S<V5R=$5Q=6%L26YT*$%20TA)5D5?3TLL"B9N8G-P +M.R`F;F)S<#L@)FYB<W`[("9N8G-P.R!A<F-H:79E7W)E861?<W5P<&]R=%]F +M;W)M871?86QL*&$I*3L*)FYB<W`[("9N8G-P.R!E>'1R86-T7W)E9F5R96YC +M95]F:6QE*&YA;64I.PHF;F)S<#L@)FYB<W`[(&%S<V5R=$5Q=6%L26YT*$%2 +M0TA)5D5?3TLL"B9N8G-P.R`F;F)S<#L@)FYB<W`[("9N8G-P.R!A<F-H:79E +M7W)E861?;W!E;E]F:6QE;F%M92AA+"!N86UE+"`Q,#(T,"DI.PHF;F)S<#L@ +M)FYB<W`[("9N8G-P.R\J(%)E860@9FER<W0@96YT<GDN("HO"B9N8G-P.R`F +M;F)S<#L@)FYB<W`[87-S97)T17%U86Q);G0H05)#2$E615]/2RP@87)C:&EV +M95]R96%D7VYE>'1?:&5A9&5R*&$L("9A;7`[864I*3L*)FYB<W`[("9N8G-P +M.R`F;F)S<#MA<W-E<G1%<75A;%-T<FEN9R@F<75O=#M-151!+4E.1B]-04Y) +M1D535"Y-1B9Q=6]T.RP@87)C:&EV95]E;G1R>5]P871H;F%M92AA92DI.SPO +M4%)%/CQ0/@I4:&4@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G186%A8/"]4 +M5#X@;6%C<F]S(&-H96-K('1H870@=&AE:7(*87)G=6UE;G1S('-A=&ES9GD@ +M8V5R=&%I;B!C;VYD:71I;VYS+B!)9B!T:&4@87-S97)T:6]N(&9A:6QS+2UF +M;W(*97AA;7!L92P@:68@=&AE(&YA;64@;V8@=&AE(&9I<G-T(&5N=')Y(&ES +M(&YO=`HF<75O=#M-151!+4E.1B]-04Y)1D535"Y-1B9Q=6]T.RTM=&AE(&UA +M8W)O('=I;&P@<F5P;W)T('1H92!P<F]B;&5M+B`*/"]0/@H\4#Y4:&5R92!A +M<F4@='=O(&EM<&]R=&%N="!D:69F97)E;F-E<R!B971W965N('1H92`\5%0@ +M0TQ!4U,](G=E<W1E<FXB/F%S<V5R=%A86#PO5%0^"FUA8W)O<R!U<V5D(&EN +M('1H97-E('1E<W0@:&%R;F5S<V5S(&%N9"!T:&4@25-/($,@<W1A;F1A<F0@ +M/%14($-,05-3/2)W97-T97)N(CYA<W-E<G0\+U14/@IM86-R;SH@1FER<W0L +M('1H97-E(&%S<V5R="!M86-R;W,@9&]N)W0@97AI="!O;B!F86EL=7)E+B!" +M>2!D969A=6QT+`IT:&5Y(')E<&]R="!T:&4@9F%I;'5R92!A;F0@<F5T=7)N +M('IE<F\@*'1H92!#(&YO=&EO;B!O9B`F<75O=#MF86QS929Q=6]T.RDN"E-E +M8V]N9"P@=&AE<V4@;6%C<F]S(&EN8VQU9&4@=F%R:6%N=',@=&AA="!P97)F +M;W)M(&$@=F%R:65T>2!O9@IS<&5C:69I8R!T97-T<RX@5&AE<V4@<W!E8VEF +M:6,@=F5R<VEO;G,@*'-U8V@@87,@/%14($-,05-3/2)W97-T97)N(CYA<W-E +M<G1%<75A;$EN=#PO5%0^"F%N9"`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R +M=$5Q=6%L4W1R:6YG/"]45#X@:6X@=&AE(&5X86UP;&4@86)O=F4I"F=E;F5R +M871E(&1E=&%I;&5D(&QO9R!M97-S86=E<R!O;B!F86EL=7)E+B!);B!P87)T +M:6-U;&%R+"!T:&5Y('!R:6YT"G1H92!V86QU92!O9B!B;W1H(&%R9W5M96YT +M<SL@=&AI<R!G<F5A=&QY('-I;7!L:69I97,@9&EA9VYO<VEN9PIF86EL=7)E +M<RX@"CPO4#X*/$@Q($-,05-3/2)W97-T97)N(CX\02!.04U%/2),:69E7V-Y +M8VQE7V]F7V%?=&5S="(^/"]!/DQI9F4@8WEC;&4@;V8*82!T97-T/"](,3X* +M/%`^16%C:"!T97-T(')E<VED97,@:6X@82!#('-O=7)C92!F:6QE('=I=&@@ +M=&AE('-A;64@;F%M92!A<R!T:&4*=&5S="X@5&AE('1E<W0@:71S96QF(&ES +M(&$@9G5N8W1I;VX@=&AA="!T86ME<R!N;R!A<F=U;65N=',N(%1H92!T97-T +M"FES(&1E8VQA<F5D('5S:6YG('1H92`\5%0@0TQ!4U,](G=E<W1E<FXB/D1% +M1DE.15]415-4*"D\+U14/B!M86-R;RX*5&AI<R!M86-R;R!S97)V97,@8F]T +M:"!T;R!E;G-U<F4@=&AA="!T:&4@=&5S="!I<R!D96-L87)E9"!C;W)R96-T +M;'D*86YD(&%S(&$@;&%B96P@=&AA="!C86X@8F4@=7-E9"!T;R!L;V-A=&4@ +M86QL(&1E9FEN960@=&5S=',N("A/;@I5;FEX+6QI:V4@<&QA=&9O<FUS+"!A +M('-I;7!L92`\5%0@0TQ!4U,](G=E<W1E<FXB/F=R97`\+U14/B!O<&5R871I +M;VX*:7,@=7-E9"!T;R!C;VYS=')U8W0@82!F:6QE(&-A;&QE9"`\5%0@0TQ! +M4U,](G=E<W1E<FXB/FQI<W0N:#PO5%0^"G1H870@:&]L9',@=&AE(&YA;65S +M(&]F(&%L;"!O9B!T:&4@=&5S=',N(%1H:7,@;6%K97,@:70@=F5R>2!E87-Y +M('1O"F%D9"!N97<@=&5S=',N*2`*/"]0/@H\4#Y4:&4@=&5S="!H87)N97-S +M(&1E=&5R;6EN97,@=VAI8V@@=&5S=',@=&\@<G5N+B!)="!G;V5S('1H<F]U +M9V@*=&AE(&9O;&QO=VEN9R!S=&5P<R!W:&5N979E<B!I="!R=6YS(&$@=&5S +M=#H@"CPO4#X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P +M:6XB/CQ35%))2T4^0VQO<V5S(&%L;"!F:6QE"@ED97-C<FEP=&]R<R!E>&-E +M<'0@9F]R('-T9&EN+"!S=&1O=70L(&%N9"!S=&1E<G(N/"]35%))2T4^("A4 +M:&ES"@ES8W)E=W,@=7`@;&EB8R!O;B!S;VUE('!L871F;W)M<R!S;R!H87,@ +M8F5E;B!R96UO=F5D+BD@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB +M;W1T;VTZ(#!I;B(^0W)E871E<R!A('1E;7!O<F%R>2!D:7)E8W1P6GL/0!0` +-_]75M@,````````````` +` +end diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part5.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part5.rar.uu new file mode 100644 index 0000000..d5ff36a --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part5.rar.uu @@ -0,0 +1,163 @@ +begin 644 test_rar_multivolume_multiple_files.part5.rar +M4F%R(1H'`!EZ<Q$`#0````````#+ZG0CD$,`E1L``(].```#8']*W?-C(4`4 +M,!D`I($``$QI8F%R8VAI=F5!9&1I;F=497-T+FAT;6S`S/-C(4"[3#5!;W)Y +M"@EW:&]S92!N86UE(&UA=&-H97,@=&AE(&YA;64@;V8@=&AE('1E<W0@86YD +M('-W:71C:&5S(&EN=&\@=&AA=`H)9&ER96-T;W)Y+B`*"3PO4#X*"3Q,23X\ +M4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY297-E=',@=&AE(&-U<G)E +M;G0@;&]C86QE+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O +M;3H@,&EN(CY#86QL<R!T:&4@=&5S="!F=6YC=&EO;BX@"@D\+U`^"@D\3$D^ +M/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^268@=&AE<F4@=V5R92!N +M;R!A<W-E<G1I;VX*"69A:6QU<F5S+"!I="!W:6QL(')E;6]V92!T:&4@=&5M +M<&]R87)Y(&1I<F5C=&]R>2X@*$EF(#Q45"!#3$%34STB=V5S=&5R;B(^+6L\ +M+U14/@H):7,@<W!E8VEF:65D+"!T96UP;W)A<GD@9&ER96-T;W)Y(&%R92!L +M969T(&5V96X@:68@=&AE('1E<W0*"7-U8V-E961S+BD@"@D\+U`^"@D\3$D^ +M/%`^/%-44DE+13Y)9B!T:&5R92!A<F4@86YY(&]P96X@9FEL92!D97-C<FEP +M=&]R<R!O=&AE<B!T:&%N"@ES=&1I;BP@<W1D;W5T+"!A;F0@<W1D97)R+"!I +M="!R97!O<G1S(&%N(&5R<F]R+CPO4U1224M%/B!497-T<PH)<VAO=6QD(&YE +M=F5R(&QE879E(&]P96X@9FEL92!D97-C<FEP=&]R<RX@"@D\+U`^"CPO54P^ +M"CQ0/DEN('!A<G1I8W5L87(L('1E<W1S(&-A;B!S869E;'D@87-S=6UE('1H +M870Z(`H\+U`^"CQ53#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@ +M,&EN(CY4:&4@8W5R<F5N="!D:7)E8W1O<GD@:7,@96UP='D*"7=H96X@=&AE +M('1E<W0@<W1A<G1S+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O +M='1O;3H@,&EN(CY!;GD@9FEL97,@8W)E871E9"!I;B!T:&4@8W5R<F5N=`H) +M9&ER96-T;W)Y('=I;&P@8F4@<F5M;W9E9"!F;W(@>6]U+B`*"3PO4#X*"3Q, +M23X\4#Y4:&4@8W5R<F5N="!L;V-A;&4@:7,@=&AE(&1E9F%U;'0@)G%U;W0[ +M0R9Q=6]T.R!L;V-A;&4N(`H)/"]0/@H\+U5,/@H\4#Y497-T<R!S:&]U;&0Z +M(`H\+U`^"CQ53#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN +M(CY296QE87-E(&%L;"!M96UO<GDN(%1H92!T97-T"@ES=6ET97,@87)E(&]C +M8V%S:6]N86QL>2!R=6X@=6YD97(@82!M96UO<GD@9&5B=6=G97(@=&\@9&5T +M96-T(&QE86MS"@EI;B!T:&4@;&EB87)C:&EV92!L:6)R87)Y+B`*"3PO4#X* +M"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY#;&]S92!A;&P@ +M;W!E;F5D(&9I;&5S+B!4:&ES(&AE;'!S"@ET;R!C871C:"!F:6QE(&1E<V-R +M:7!T;W(@;&5A:W,@:6X@;&EB87)C:&EV92X@"@D\+U`^"@D\3$D^/%`^3F]T +M(')E860@;W(@=W)I=&4@86)S;VQU=&4@<&%T:',N(`H)/"]0/@H\+U5,/@H\ +M2#$@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](E!L871F;W)M7W9A<FEA=&EO +M;B(^/"]!/E!L871F;W)M"G9A<FEA=&EO;CPO2#$^"CQ0/E-O;64@=&5S=',@ +M87)E('-P96-I9FEC('1O(&$@<&%R=&EC=6QA<B!P;&%T9F]R;2X@4W5C:"!T +M97-T<PIS:&]U;&0@=7-E(&%P<')O<')I871E('!L871F;W)M+7-P96-I9FEC +M(&UA8W)O<R!A<R!F;VQL;W=S.B`*/"]0/@H\4%)%($-,05-3/2)W97-T97)N +M(CXC:68@7U]03$%41D]230HN+BX@=F%R:6]U<R!H96QP97(@9G5N8W1I;VYS +M("XN+@HC96YD:68*1$5&24Y%7U1%4U0H9F]O7W!L871F;W)M*0I["B-I9B!? +M7U!,051&3U)-"B9N8G-P.R`F;F)S<#LN+BX@=&5S=',@87,@=7-U86P@+BXN +M+@HC96QS90HF;F)S<#L@)FYB<W`[<VMI<'!I;F<H)G%U;W0[<&QA=&9O<FTM +M<W!E8VEF:6,@=&5S=',F<75O=#LI.PHC96YD:68*?3PO4%)%/CQ0/@I);B!P +M87)T:6-U;&%R+"!N;W1E('1H870@86QL('1E<W1S(&%R92!C;VUP:6QE9"!A +M;F0@<G5N(&]N(&%L;`IP;&%T9F]R;7,N(`H\+U`^"CQ0/DUO<W0@=&5S=',@ +M87)E(&YO="!P;&%T9F]R;2US<&5C:69I8R!A;F0@=VEL;"!T:'5S(&5N9"!U +M<"!R=6YN:6YG"F]N(&UA;GD@9&EF9F5R96YT('!L871F;W)M<RX@26X@;W)D +M97(@=&\@<VEM<&QI9GD@=W)I=&EN9R!S=6-H('1E<W1S+`IT<GD@=&\@=7-E +M('!L871F;W)M+6EN9&5P96YD96YT(&-O9&EN9SH@"CPO4#X*/%5,/@H)/$Q) +M/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/E5S92!S=&1I;R`\5%0@ +M0TQ!4U,](G=E<W1E<FXB/F9O<&5N*"D\+U14/BP*"3Q45"!#3$%34STB=V5S +M=&5R;B(^9G=R:71E*"D\+U14/BP@/%14($-,05-3/2)W97-T97)N(CYF<F5A +M9"@I/"]45#XL"@EA;F0@/%14($-,05-3/2)W97-T97)N(CYF8VQO<V4H*3PO +M5%0^('1O(&%C8V5S<R!F:6QE<R!W:&5N979E<@H)9F5A<VEB;&4N(`H)/"]0 +M/@H)/$Q)/CQ0/DQO;VL@=&AR;W5G:"!T:&4@/%14($-,05-3/2)W97-T97)N +M(CYT97-T+F@\+U14/B!H96%D97(@=&\*"7-E92!I9B!T:&5R92!A<F4@87-S +M97)T6'AX*"D@9G5N8W1I;VYS('1H870@>6]U(&-A;B!U<V4N(%1H97)E)W,@ +M80H);&ES="!O9B!T:&4@;6]R92!P;W!U;&%R(&]N97,@8F5L;W<L(&)U="!N +M97<@;VYE<R!A<F4@;V9T96X@861D960N(`H)/"]0/@H\+U5,/@H\2#$@0TQ! +M4U,](G=E<W1E<FXB/CQ!($Y!344](D%S<V5R=%]M86-R;W,B/CPO03Y!<W-E +M<G0@;6%C<F]S/"](,3X*/%`^5&AE(&9O;&QO=VEN9R!I<R!A(&YE8V5S<V%R +M:6QY(&EN8V]M<&QE=&4@;&ES="!O9B!A<W-E<G0@9G5N8W1I;VYS"F%V86EL +M86)L92!T;R!T97-T<SH@"CPO4#X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G +M:6XM8F]T=&]M.B`P:6XB/D)A<VEC(&5Q=6%L:71Y.B`\5%0@0TQ!4U,](G=E +M<W1E<FXB/F%S<V5R=$5Q=6%L26YT/"]45#XL"@D\5%0@0TQ!4U,](G=E<W1E +M<FXB/F%S<V5R=$5Q=6%L4W1R:6YG/"]45#XL(#Q45"!#3$%34STB=V5S=&5R +M;B(^87-S97)T17%U86Q-96T\+U14/@H)"3PO4#X*"3Q,23X\4"!35%E,13TB +M;6%R9VEN+6)O='1O;3H@,&EN(CY&:6QE(&-R96%T:6]N.B`\5%0@0TQ!4U,] +M(G=E<W1E<FXB/F%S<V5R=$UA:V5&:6QE/"]45#XL"@D\5%0@0TQ!4U,](G=E +M<W1E<FXB/F%S<V5R=$UA:V53>6UL:6YK/"]45#XL(#Q45"!#3$%34STB=V5S +M=&5R;B(^87-S97)T36%K94AA<F1L:6YK/"]45#XL"@D\5%0@0TQ!4U,](G=E +M<W1E<FXB/F%S<V5R=$UA:V5$:7(\+U14/B`*"3PO4#X*"3Q,23X\4"!35%E, +M13TB;6%R9VEN+6)O='1O;3H@,&EN(CY&:6QE('1E<W1S.B`\5%0@0TQ!4U,] +M(G=E<W1E<FXB/F%S<V5R=$ES4F5G/"]45#XL"@D\5%0@0TQ!4U,](G=E<W1E +M<FXB/F%S<V5R=$ES1&ER/"]45#XL(#Q45"!#3$%34STB=V5S=&5R;B(^87-S +M97)T27-3>6UL:6YK/"]45#XL"@D\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R +M=$9I;&53:7IE/"]45#XL(#Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T1FEL +M94YL:6YK<SPO5%0^+`H)/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1&:6QE +M371I;64\+U14/B`*"3PO4#X*"3Q,23X\4#Y&:6QE(&-O;G1E;G1S.B`\5%0@ +M0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$9I;&5%;7!T>3PO5%0^+`H)/%14($-, +M05-3/2)W97-T97)N(CYA<W-E<G1&:6QE3F]N16UP='D\+U14/BP@/%14($-, +M05-3/2)W97-T97)N(CYA<W-E<G1&:6QE0V]N=&5N=',\+U14/BP*"3Q45"!# +M3$%34STB=V5S=&5R;B(^87-S97)T5&5X=$9I;&5#;VYT96YT<SPO5%0^(`H) +M/"]0/@H\+U5,/@H\2#$@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](E)E9F5R +M96YC95]&:6QE<R(^/"]!/E)E9F5R96YC92!&:6QE<SPO2#$^"CQ0/DUA;GD@ +M=&5S=',@<F5Q=6ER92!R96%D:6YG(&$@<')E+6-O;G-T<G5C=&5D(')E9F5R +M96YC92!F:6QE+B!3=6-H"F9I;&5S(&%R92!S=&]R960@=VET:"!T:&4@<V]U +M<F-E(&-O9&4@9F]R('1H92!A<W-O8VEA=&5D('1E<W0@<W5I=&4N"E)E9F5R +M96YC92!F:6QE<R!A<F4@;F%M960@86-C;W)D:6YG('1O('1H92!T97-T(&%N +M9"!M=7-T(&)E('5U96YC;V1E9`IT;R!B92!C:&5C:V5D(&EN=&\@<V]U<F-E +M(&-O;G1R;VPN(`H\+U`^"CQ0/D9O<B!E>&%M<&QE+"!I9B!Y;W4@;F5E9"!A +M(')E9F5R96YC92!T87(@87)C:&EV92!T;R!U<V4@=VET:`H\5%0@0TQ!4U,] +M(G=E<W1E<FXB/G1E<W1?9F]O/"]45#XL('1H92!F:6QE('-H;W5L9"!B92!N +M86UE9`H\5%0@0TQ!4U,](G=E<W1E<FXB/G1E<W1?9F]O+G1A<CPO5%0^(&%N +M9"!S=&]R960@:6X@<V]U<F-E(&-O;G1R;VP@87,*/%14($-,05-3/2)W97-T +M97)N(CYT97-T7V9O;RYT87(N=74\+U14/BX@"CPO4#X*/%`^5VET:&EN('1H +M92!T97-T(&-O9&4L('EO=2!C86X@<F5C;W9E<B!T:&4@<F5F97)E;F-E(&9I +M;&4@=VET:#H@"CPO4#X*/%!212!#3$%34STB=V5S=&5R;B(@4U193$4](FUA +M<F=I;BUB;W1T;VTZ(#`N,FEN(CXF;F)S<#L@)FYB<W`[(&5X=')A8W1?<F5F +M97)E;F-E7V9I;&4H)G%U;W0[=&5S=%]F;V\N=&%R)G%U;W0[*3L\+U!213X\ +M4#X*5&AE(#Q45"!#3$%34STB=V5S=&5R;B(^97AT<F%C=%]R969E<F5N8V5? +M9FEL92@I/"]45#X@9G5N8W1I;VX@=VEL;`IU=61E8V]D92!T:&4@<F5Q=65S +M=&5D(&9I;&4@86YD('!U="!T:&4@<F5S=6QT(&EN('1H92!C=7)R96YT"F1I +M<F5C=&]R>2X@"CPO4#X*/%`^3&]O:R!A="`\5%0@0TQ!4U,](G=E<W1E<FXB +M/G1E<W1?<F5A9%]F;W)M871?8W!I;U]B:6Y?8F4N8SPO5%0^"F9O<B!A('-I +M;7!L92!E>&%M<&QE(&]F('1H:7,@=7-A9V4N(`H\+U`^"CQ0/D$@9F5W(&]F +M('1H92!O;&1E<B!T97-T<R!S=&]R92!R969E<F5N8V4@9&%T82!W:71H:6X@ +M=&AE('-O=7)C90IC;V1E(&%S(&$@:&5X+65N8V]D960@87)R87D@;V8@8VAA +M<F%C=&5R<RX@5&AI<R!W87,@8V]M;6]N(&)E9F]R90H\5%0@0TQ!4U,](G=E +M<W1E<FXB/F5X=')A8W1?<F5F97)E;F-E7V9I;&4H*3PO5%0^('=A<R!A9&1E +M9"!A;F0@:7,*;F]T(')E8V]M;65N9&5D(&9O<B!N97<@8V]D92X@"CPO4#X* +M/$@Q($-,05-3/2)W97-T97)N(CX\02!.04U%/2)$;W-?86YD7T1O;G1S(CX\ +M+T$^1&]S(&%N9"!$;VYT<SPO2#$^"CQ53#X*"3Q,23X\4"!35%E,13TB;6%R +M9VEN+6)O='1O;3H@,&EN(CY$3R!U<V4@87-S97)T<R!L:6)E<F%L;'DN($ET +M)W,*"6-O;6UO;B!T;R!H879E(&%N(&%S<V5R="!O;B!A;&UO<W0@979E<GD@ +M;&EN92X@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I +M;B(^1$\@=7-E(&%S<V5R=$5Q=6%L26YT+`H)87-S97)T17%U86Q3=')I;F<L +M(&%S<V5R=$5Q=6%L365M('1O('1E<W0@97%U86QI='D@:6YS=&5A9"!O9B!P +M;&%I;@H)87-S97)T*"D[('1H92!S<&5C:6%L:7IE9"!F;W)M<R!G:79E(&$@ +M;&]T(&UO<F4@:6YF;W)M871I;VX@;VX@80H)9F%I;'5R92X@"@D\+U`^"@D\ +M3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^1$\@=&5S="!Y;W5R +M('1E<W1S.R!E>'!E<FEM96YT(&)Y"@EC:&%N9VEN9R!A('!I96-E(&]F(&-O +M9&4@86YD(&UA:V4@<W5R92!Y;W5R('1E<W0@9F%I;',N($EF('EO=2!T:&EN +M:PH)>6]U)W9E(&9O=6YD(&$@8G5G+"!W92!R96-O;6UE;F0@=W)I=&EN9R!T +M:&4@=&5S="!F:7)S="P@;6%K92!S=7)E"@ET:&4@=&5S="!F86EL<RP@=&AE +M;B!F:7AI;F<@=&AE(&)U9RX@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I +M;BUB;W1T;VTZ(#!I;B(^1$\@<G5N(&%L;"!O9B!T:&4@=&5S=',@8F5F;W)E +M"@ES=6)M:71T:6YG(&$@8VAA;F=E+B!$97!E;F1I;F<@;VX@>6]U<B!B=6EL +M9"!E;G9I<F]N;65N="P@/%14($-,05-3/2)W97-T97)N(CYM86ME"@ET97-T +M/"]45#X@;W(@/%14($-,05-3/2)W97-T97)N(CYM86ME(&-H96-K/"]45#X@ +M=VEL;"!U<W5A;&QY(')U;@H)86QL(&]F('1H92!T97-T<RX@"@D\+U`^"@D\ +M3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^1$].)U0@<F5L>2!O +M;B`\5%0@0TQ!4U,](G=E<W1E<FXB/DA!5D5?/"]45#X*"6UA8W)O<R!F<F]M +M(&-O;F9I9RYH+B`H268@=&AE('1E<W1S('5S92!T:&4@<V%M92`\5%0@0TQ! +M4U,](G=E<W1E<FXB/DA!5D5?/"]45#X*"6UA8W)O<R!A<R!T:&4@8V]D92!B +M96EN9R!T97-T960@=&AE;B!C;VYF:6=U<F%T:6]N('!R;V)L96US('=I;&P@ +M8F4*"6-O=F5R960@=7`N*2`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN +M+6)O='1O;3H@,&EN(CY$3R!U<V4@<G5N=&EM92!T97-T<R!F;W(@<&QA=&9O +M<FT*"69E871U<F5S+B!&;W(@97AA;7!L92P@=&AE($%#3"!T97-T<R!T<GD@ +M=&\@<V5T(&%N($%#3"!O;B!A(&9I;&4@86YD"@ER96%D(&ET(&)A8VL@=&\@ +M9&5T97)M:6YE(&EF($%#3"!S=7!P;W)T(&ES(&%V86EL86)L92P@=&AE;B!T +M:&5Y"@EE>&5R8VES92!T:&4@;&EB87)C:&EV92!!0TP@:&%N9&QI;F<N(`H) +M/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D1/(&QO +M;VL@870@97AI<W1I;F<@=&5S=',N($]F=&5N+`H)82!B=6<@8V%N(&)E('1E +M<W1E9"!B>2!A9&1I;F<@:G5S="!A(&-O=7!L92!O9B!A<W-E<G1S('1O(&%N +M"@EE>&ES=&EN9R!T97-T(&EN<W1E860@;V8@=W)I=&EN9R!A(&YE=R!O;F4N +M(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D1/ +M(&EM<')O=F4@97AI<W1I;F<@=&5S=',N($EN"@EP87)T:6-U;&%R+"!I9B!Y +M;W4@<V5E(&$@=&5S="!F86EL=7)E('1H870@:7,@:&%R9"!T;R!U;F1E<G-T +M86YD+`H)8V]N<VED97(@861D:6YG(&$@9F%I;'5R92@I(&UE<W-A9V4@;W(@ +M8V]M;65N=',@<V\@=&AE(&YE>'0@<&5R<V]N"@EW:6QL(&AA=F4@86X@96%S +M:65R('1I;64N(`H)/"]0/@H)/$Q)/CQ0/D1/(&%S:R!O;B!T:&4@;6%I;&EN +M9R!L:7-T<R!I9B!Y;W4@:&%V92!Q=65S=&EO;G,N(%-O;64@=&5S=',*"6%R +M92!B971T97(@=W)I='1E;B!T:&%N(&]T:&5R<RX@"@D\+U`^"CPO54P^"CQ( +M,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB4V]M95]E>&%M<&QE<U]O9E]T +M97-T<R(^/"]!/E-O;64*97AA;7!L97,@;V8@=&5S=',\+T@Q/@H\2#(@0TQ! +M4U,](G=E<W1E<FXB/CQ!($Y!344](DQI8F%R8VAI=F5?<F5A9%]T97-T<R(^ +M/"]!/DQI8F%R8VAI=F4*<F5A9"!T97-T<SPO2#(^"CQ0/E1H97)E(&%R92!Q +M=6ET92!A(&9E=R!R96%D('1E<W1S('1H870@<VEM<&QY(')E860@82!P<F4M +M8G5I;'0*:6YP=70@9FEL92!A;F0@=F5R:69Y('1H92!R97-U;'2<OWL/0!0` +-+FN`*`0````````````` +` +end diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part6.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part6.rar.uu new file mode 100644 index 0000000..5ac8350 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part6.rar.uu @@ -0,0 +1,117 @@ +begin 644 test_rar_multivolume_multiple_files.part6.rar +M4F%R(1H'`!EZ<Q$`#0````````";:70AD$,`>Q,``(].```#8Z8%7O-C(4`4 +M,!D`I($``$QI8F%R8VAI=F5!9&1I;F=497-T+FAT;6S`S/-C(4"[3#5!<RX@ +M5&AE<V4@=7-E(#Q45"!#3$%34STB=V5S=&5R;B(^97AT<F%C=%]R969E<F5N +M8V5?9FEL92@I/"]45#X*=&\@9&5C;V1E(&$@=75E;F-O9&5D(&EN<'5T(&9I +M;&4L('1H96X@;W!E;B!T:&%T(&9I;&4@=VET:"!L:6)A<F-H:79E"F%N9"!V +M97)I9GD@=&AE(')E<W5L=',N($UO<W0@;V8@=&AE<V4@87)E('!R971T>2!S +M=')A:6=H=&9O<G=A<F0N(`H\+U`^"CQ(,B!#3$%34STB=V5S=&5R;B(^/$$@ +M3D%-13TB3&EB87)C:&EV95]R96%D+W=R:71E7W1E<W1S(CX\+T$^3&EB87)C +M:&EV90IR96%D+W=R:71E('1E<W1S/"](,CX*/%`^36]S="!O9B!T:&4@=W)I +M=&4@=&5S=',@<F5A;&QY(&IU<W0@=F5R:69Y('1H870@;&EB87)C:&EV92!C +M86X*<F5A9"!W:&%T(&ET('=R:71E<RX@5&AE<V4@9V5N97)A;&QY('5S92!T +M:&4@;65M;W)Y(&EN=&5R9F%C97,N(%1H97D*9F5E9"!A<F-H:79E(&5N=')I +M97,@:6YT;R!T:&4@=W)I=&5R('1O(&-R96%T92!A;B!A<F-H:79E(&EN(&UE +M;6]R>0IA;F0@=&AE;B!O<&5N('1H92!M96UO<GD@86=A:6X@=&\@<F5A9"!T +M:&4@9&%T82!B86-K(&%N9"!V97)I9GD@=&AA=`II="!I<R!T:&4@<V%M92X@ +M"CPO4#X*/$@R($-,05-3/2)W97-T97)N(CX\02!.04U%/2),:6)A<F-H:79E +M7W=R:71E7W9A;&ED871O<G,B/CPO03Y,:6)A<F-H:79E"G=R:71E('9A;&ED +M871O<G,\+T@R/@H\4#Y!(&9E=R!W<FET92!T97-T<R!W<FET92!A;B!A<F-H +M:79E(&EN=&\@;65M;W)Y(&%N9"!T:&5N(&EN<W!E8W0*=&AE(&%C='5A;"!B +M>71E<R!T;R!V97)I9GD@=&AA="!T:&4@87)C:&EV92!W87,@8W)E871E9"!C +M;W)R96-T;'DN"E1H97-E('1E<W1S(&%R92!N:6-E('1O(&AA=F4@8G5T(&%R +M92!T961I;W5S('1O(&)U:6QD+B`*/"]0/@H\4#Y4:&5R92!A<F4@86QS;R!A +M(&-O=7!L92!O9B!S=6-H('9A;&ED871O<G,@9F]R(&)S9'1A<B!A;F0@8G-D +M8W!I;RX*5&AE<V4@87)E('9E<GD@=')I8VMY('-I;F-E('1H92!E>&%C="!D +M871A(&-O;G1A:6YS('9A;'5E<R!T:&%T('1H90IT97-T(&-A;FYO="!C;VUP +M;&5T96QY(&-O;G1R;VP@*'-U8V@@87,@=&AE(&-U<G)E;G0@=&EM92!O<@IU +M<V5R;F%M92DN(`H\+U`^"CQ(,B!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB +M1&ES:U]T97-T<R(^/"]!/D1I<VL@=&5S=',\+T@R/@H\4#Y,:6)A<F-H:79E +M)W,@9&ES:R!)+T\@05!)<RP@87,@=V5L;"!A<R!B<V1T87(@86YD(&)S9&-P +M:6\L(&YE960@=&\*;W!E<F%T92!B>2!V97)I9GEI;F<@9FEL97,@;VX@9&ES +M:RX@5&\@;6%K92!T:&ES(&5A<VEE<BP@=&AE('1E<W0*9G)A;65W;W)K(&YO +M=R!H87,@82!L87)G92!N=6UB97(@;V8@87-S97)T:6]N<R!T;R!V97)I9GD@ +M=&EM97-T86UP<RP*<&5R;6ES<VEO;G,L(&%N9"!O=&AE<B!B87-I8R!F:6QE +M(&1A=&$N(%1H97-E(&%S<V5R=&EO;G,@=7-E"F%P<')O<')I871E('-Y<W1E +M;2!C86QL<R!F;W(@96%C:"!P;&%T9F]R;3L@;F5W('1E<W1S('-H;W5L9"!T +M<GD@=&\*879O:60@=7-I;F<@/%14($-,05-3/2)W97-T97)N(CYS=&%T*"D\ +M+U14/BP@=VAI8V@@:7,@;F]T('5N:69O<FUL>0IA=F%I;&%B;&4N(`H\+U`^ +M"CQ(,B!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB1G5Z>E]T97-T97(B/CPO +M03Y&=7IZ('1E<W1E<CPO2#(^"CQ0/E1H92!F=7IZ('1E<W1E<B!I<R!O;F4@ +M;V8@=&AE(&9E=R!T97-T<R!T:&%T(&1O97,@;F]T(&%G9W)E<W-I=F5L>0IU +M<V4@87-S97)T:6]N<RX@271S('!U<G!O<V4@:7,@=&\@=')Y(&%N9"!C<F%S +M:"!L:6)A<F-H:79E(&)Y(&9E961I;F<*:70@:6YP=70@=&AA="!I<R!S;&EG +M:'1L>2!D86UA9V5D+B`H4F5M96UB97(@=&AA="!L:6)A<F-H:79E(&1O97,* +M:&%V92!S;VUE(&9A:6QS869E(&-O9&4@=&AA="!D96QI8F5R871E;'D@86)O +M<G1S('1H92!E;G1I<F4@<')O9W)A;0II9B!C97)T86EN(&EN=F%R:6%N=',@ +M87)E('9I;VQA=&5D+BD@"CPO4#X*/%`^4VEN8V4@82!F=7IZ(&9A:6QU<F4@ +M8V%U<V5S(&$@8W)A<V@L(&ET)W,@:6UP;W-S:6)L92!T;R!R97!O<G0@=&AE +M"F5R<F]R('1O('1H92!C;VYS;VQE+"!S;R!T:&4@9G5Z>B!T97-T97(@:6YS +M=&5A9"!G96YE<F%T97,@80IR86YD;VUL>2UD86UA9V5D(&9I;&4L('-A=F5S +M('1H870@9FEL92!T;R!D:7-K+"!T:&5N(')U;G,@=&AE(&9I;&4*=&AR;W5G +M:"!L:6)A<F-H:79E('1O('1R>2!T;R!P<F]V;VME(&$@8W)A<V@N($EF(&QI +M8F%R8VAI=F4@8W)A<VAE<PIT:&4@96YT:7)E('1E<W1E<BP@=&AE(&EN<'5T +M('1H870@8V%U<V5D('1H92!C<F%S:"!W:6QL(&)E(&%V86EL86)L90IO;B!D +M:7-K(&9O<B!F=7)T:&5R(&%N86QY<VES+B`*/"]0/@H\4#Y!;'1H;W5G:"!I +M="!I<R!U;G5S=6%L(&9O<B!A('1E<W0@<')O9W)A;2!T;R!U<V4@<F%N9&]M +M(&EN<'5T+"!T:&4*9G5Z>B!T97-T97(@:&%S('!R;W9E;B!Q=6ET92!U<V5F +M=6P@870@=6YC;W9E<FEN9R!P;V]R(&5R<F]R"FAA;F1L:6YG+B!5;F9O<G1U +M;F%T96QY+"!T:&4@;F5E9"!T;R!W<FET92!T:&4@9&%T82!T;R!D:7-K(&)E +M9F]R90IE86-H('1E<W0@:7,@82!S:6=N:69I8V%N="!P97)F;W)M86YC92!I +M<W-U92X@"CPO4#X*/$@R($-,05-3/2)W97-T97)N(CX\02!.04U%/2),87)G +M95]T87)?=&5S=&5R(CX\+T$^3&%R9V4@=&%R('1E<W1E<CPO2#(^"CQ0/E1H +M92!L87)G92!T87(@=&5S=&5R(&%T=&5M<'1S('1O(&5X97)C:7-E(&)O=6YD +M87)Y(&-A<V5S('=I=&@@=F5R>0IL87)G92!E;G1R:65S+"!U<"!T;R`Q('1E +M<F%B>71E+B!/9B!C;W5R<V4L('=R:71I;F<@82`Q('1E<F%B>71E"F5N=')Y +M('1O(&%N('5N8V]M<')E<W-E9"!A<F-H:79E(&]N(&1I<VL@;W(@;65M;W)Y +M(&ES('5N86-C97!T86)L92P*8F]T:"!F;W(@<&5R9F]R;6%N8V4@86YD('-P +M86-E(')E87-O;G,N($5V96X@9WII<"!O<B!B>FEP,@IC;VUP<F5S<VEO;B!W +M;VXG="!H96QP.R!A;'1H;W5G:"!S;6%L;&5R+"!T:&4@;W5T<'5T(&ES('-T +M:6QL(&QA<F=E"F%N9"!T:&4@=&EM92!N965D960@=&\@8V]M<')E<W,@<W5C +M:"!A(&QA<F=E(&%M;W5N="!O9B!D871A(&ES"G!R;VAI8FET:79E+B!3;R!T +M:&4@;&%R9V4@=&%R('1E<W1E<B!U<V5S(&$@=')I8VLN(`H\+U`^"CQ0/E)E +M;65M8F5R('1H870@86X@=6YC;VUP<F5S<V5D('1A<B!A<F-H:79E(&-O;G-I +M<W1S(&]F(&%L=&5R;F%T:6YG"FAE861E<G,@86YD(&)O9&EE<RX@268@=&AE +M(&)O9&EE<R!C;VYS:7-T(&5N=&ER96QY(&]F('IE<F\@8GET97,L"G1H96X@ +M86QL('1H870G<R!N965D960@=&\@<F5C;VYS=')U8W0@=&AE(&%R8VAI=F4@ +M:7,@=&\@<F5C;W)D('1H90IR96QA=&EV96QY('-M86QL(&AE861E<G,@86YD +M('-T;W)E(&$@8V]U;G0@;V8@96%C:"!C;VYT:6=U;W5S(&)L;V-K"F]F('IE +M<F]S+B!4:&ES('-I;7!L92`F<75O=#MR=6XM;&5N9W1H(&5N8V]D:6YG)G%U +M;W0[(&ES('9E<GD*969F96-T:79E+"!C;VUP<F5S<VEN9R!A('-A;7!L92!A +M<F-H:79E('=I=&@@82!D;WIE;B!E;G1R:65S(&1O=VX@=&\*:G5S="!A(&9E +M=R!K:6QO8GET97,L(&5V96X@:68@=&AO<V4@96YT<FEE<R!R86YG92!U<"!T +M;R`Q5$(N(`H\+U`^"CQ0/D)Y('=R:71I;F<@82!C=7-T;VT@22]/(&QA>65R +M('1H870@:6UP;&5M96YT<R!S=6-H(&-O;7!R97-S:6]N+"!W90IC86X@=W)I +M=&4@=F5R>2!L87)G92!E;G1R:65S('1H<F]U9V@@;&EB87)C:&EV92!T:&5N +M(')E860@=&AE;2!B86-K"F%N9"!V97)I9GD@=&AA="!L:6)A<F-H:79E(&-O +M<G)E8W1L>2!H86YD;&5S(&%L;"!O9B!T:&4@8F]U;F1A<GD*8V%S97,N(`H\ +M+U`^"CQ0/D]F(&-O=7)S92P@979E;B!S8V%N;FEN9R!O=71P=70@=&\@9&5T +M97)M:6YE('IE<F\@8FQO8VMS(&-A;B!T86ME"G%U:71E(&$@=VAI;&4L('-O +M('1H92!L87)G92!T87(@=&5S=&5R(&UA:V5S(&]N92!M;W)E(&]P=&EM:7IA +M=&EO;CH*3&EB87)C:&EV92!I<R`F<75O=#MM;W-T;'DF<75O=#L@>F5R;RUC +M;W!Y+B!7:&5N('EO=2!G:79E(&ET(&$@;&%R9V4*8FQO8VL@=&\@=W)I=&4@ +M=&\@86X@96YT<GD@8F]D>2P@:70@=VEL;"!P87-S('!O:6YT97)S('-T<F%I +M9VAT"G1H<F]U9V@@=&\@=&AE(&]U='!U="!R;W5T:6YE+"!E>&-E<'0@:6X@ +M=&AO<V4@8V%S97,@=VAE<F4@:70@;75S=`IC;W!Y(&1A=&$@=&\@8V]R<F5C +M=&QY(&)U:6QD(&)L;V-K<RX@5&AE(&QA<F=E('1A<B!T97-T97(@=&%K97,* +M861V86YT86=E(&]F('1H:7,@=&\@<75I8VML>2!D971E8W0@=VAE;B!A(&)L +M;V-K(&)E:6YG('=R:71T96X@;W5T(&)Y"G1H92!A<F-H:79E('=R:71E<B!I +M<R!T:&4@<V%M92!A<R!S;VUE(&]F('1H92!D871A('1H870@=V%S(&=I=F5N +M(&)Y"G1H92!T97-T(&%S('1H92!E;G1R>2!B;V1Y+"!A;F0@<VEM:6QA<FQY +M('=H96X@<F5A9&EN9R!T:&4@87)C:&EV90IB86-K+B`*/"]0/@H\4#Y486ME +M;B!T;V=E=&AE<BP@=&AE<V4@=')I8VMS(&%L;&]W('1H92!L87)G92!T87(@ +M=W)I=&5R('1O('1E<W0*9F]R(&ES<W5E<R!S=6-H(&%S('!R;W!E<B!S=&]R +M86=E(&]F('9E<GD@;&%R9V4@9FEL92!S:7IE<R`H=&%R(&9I;&5S"G-U<'!O +M<G0@<V5V97)A;"!D:69F97)E;G0@=V%Y<R!T;R!S=&]R92!F:6QE('-I>F5S +M('=H:6-H('1R861E(&]F9@IP;W)T86)I;&ET>2!V97)S=7,@<F%N9V4[(&QI +M8F%R8VAI=F4@=')I97,@=&\@=7-E('1H92!M;W-T('!O<G1A8FQE"F]N92!I +M="!C86X@9F]R(&5A8V@@96YT<GDI(&%N9"!I;G1E9V5R(&]V97)F;&]W("A7 +M:6YD;W=S(#,R+6)I="`\5%0@0TQ!4U,](G=E<W1E<FXB/F]F9E]T/"]45#X* +M8G)O:V4@=&AE(&QA<F=E('1A<B!T97-T(&%N9"!L960@;&EB87)C:&EV92!T +M;R!M86ME(&AE879I97(@=7-E(&]F"CQ45"!#3$%34STB=V5S=&5R;B(^:6YT +M-C1?=#PO5%0^(&EN=&5R;F%L;'DI(&EN(&$@=&5S="!T:&%T(')U;G,@:6X* +M=6YD97(@,2\T('-E8V]N9"X@"CPO4#X*/%`@4U193$4](FUA<F=I;BUB;W1T +M;VTZ(#!I;B(^/$)2/@H\+U`^"CPO0D]$63X*/"](5$U,/OO\>PY`%`!.[9:E +)!0`````````` +` +end 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 new file mode 100644 index 0000000..22b5c8df --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part1.rar.uu @@ -0,0 +1,159 @@ +begin 644 - +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 +M<VET:6]N86PO+T5.(CX*/$A434P^"CQ(14%$/@H)/$U%5$$@2%144"U%455) +M5CTB0T].5$5.5"U465!%(B!#3TY414Y4/2)T97AT+VAT;6P[(&-H87)S970] +M=71F+3@B/@H)/%1)5$Q%/CPO5$E43$4^"@D\345402!.04U%/2)'14Y%4D%4 +M3U(B($-/3E1%3E0](DQI8G)E3V9F:6-E(#,N,R`@*%5N:7@I(CX*"3Q-151! +M($Y!344](D-214%4140B($-/3E1%3E0](C(P,3$P-C(V.S(R,C,U,3`P(CX* +M"3Q-151!($Y!344](D-(04Y'140B($-/3E1%3E0](C(P,3$P-C(V.S(R,C4T +M-3`P(CX*"3Q35%E,12!465!%/2)T97AT+V-S<R(^"@D\(2TM"@D)0'!A9V4@ +M>R!M87)G:6XZ(#`N-SEI;B!]"@D)4"![(&UA<F=I;BUB;W1T;VTZ(#`N,#AI +M;B!]"@D)2#$@>R!M87)G:6XM8F]T=&]M.B`P+C`X:6X@?0H)"4@Q+G=E<W1E +M<FX@>R!F;VYT+69A;6EL>3H@(DQI8F5R871I;VX@4V5R:68B+"!S97)I9B!] +M"@D)2#$N8VIK('L@9F]N="UF86UI;'DZ(")":71S=')E86T@5F5R82!386YS +M(B!]"@D)2#$N8W1L('L@9F]N="UF86UI;'DZ(")&<F5E4V%N<R(@?0H)"5!2 +M12YC:FL@>R!F;VYT+69A;6EL>3H@(D)I='-T<F5A;2!697)A(%-A;G,B+"!M +M;VYO<W!A8V4@?0H)"4@R('L@;6%R9VEN+6)O='1O;3H@,"XP.&EN('T*"0E( +M,BYC=&P@>R!F;VYT+69A;6EL>3H@(D9R965386YS(B!]"@D)5%0N8VIK('L@ +M9F]N="UF86UI;'DZ(")":71S=')E86T@5F5R82!386YS(BP@;6]N;W-P86-E +M('T*"2TM/@H)/"]35%E,13X*/"](14%$/@H\0D]$62!,04Y'/2)E;BU54R(@ +M1$E2/2),5%(B/@H\2#$@0TQ!4U,](G=E<W1E<FXB/DEN=')O9'5C=&EO;CPO +M2#$^"CQ0/DQI8F%R8VAI=F4@:7,@;F]W(&$@9F%I<FQY(&-O;7!L97@@<&EE +M8V4@;V8@<V]F='=A<F4@=&AA="!R=6YS(&]N"F$@;G5M8F5R(&]F(&1I9F9E +M<F5N="!P;&%T9F]R;7,N($$@=&AO<F]U9V@@=&5S="!S=6ET92!I<R!E<W-E +M;G1I86P*8F]T:"!F;W(@=F5R:69Y:6YG(&YE=R!P;W)T<R!A;F0@9F]R(&5N +M<W5R:6YG('1H870@9G5T=7)E(&-H86YG97,*9&]N)W0@8G)E86L@97AI<W1I +M;F<@9G5N8W1I;VYA;&ET>2X@"CPO4#X*/%`^06YY('-I9VYI9FEC86YT(&-H +M86YG92!T;R!L:6)A<F-H:79E+"!I;F-L=61I;F<@;6]S="!B=6<@9FEX97,L +M"G-H;W5L9"!B92!A8V-O;7!A;FEE9"!B>2!N97<@=&5S=',@;W(@8VAA;F=E +M<R!T;R!E>&ES=&EN9R!T97-T<RX@5&AI<PIA<G1I8VQE(&5X<&QA:6YS(&AO +M=R!T:&4@;&EB87)C:&EV92!T97-T('-U:71E<R!W;W)K(&%N9"!H;W<@=&\* +M97AT96YD('1H96TN(`H\+U`^"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%- +M13TB0G5I;&1I;F=?86YD7U)U;FYI;F=?=&AE7U1E<W1?4')O9W)A;7,B/CPO +M03X*0G5I;&1I;F<@86YD(%)U;FYI;F<@=&AE(%1E<W0@4')O9W)A;7,\+T@Q +M/@H\4#Y%86-H(&UA:F]R(&-O;7!O;F5N="TM;&EB87)C:&EV92P@8G-D=&%R +M+"!A;F0@8G-D8W!I;RTM:&%S(&$@=&5S=`IP<F]G<F%M('1H870@97AE<F-I +M<V5S('1H92!F=6YC=&EO;F%L:71Y(&]F('1H870@8V]M<&]N96YT+B!4:&5S +M90IT97-T('!R;V=R86US(&%R92!C;VUP:6QE9"!I;B!T:&4@<V%M92!W87D@ +M=&AA="!T:&4@<F5S="!O9B!T:&4*;&EB87)C:&EV92!S=6ET92!I<R!C;VUP +M:6QE9"X@"CPO4#X*/%`^5&\@<G5N('1H92!T97-T('!R;V=R86US+"!Y;W4@ +M;F5E9"!T;R!G:79E('1H96T@='=O('!I96-E<R!O9@II;F9O<FUA=&EO;CH@ +M"CPO4#X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB +M/E1H92!F=6QL('!A=&@@=&\@=&AE(&1I<F5C=&]R>0H):&]L9&EN9R!T:&4@ +M)G%U;W0[<F5F97)E;F-E(&9I;&5S)G%U;W0[(`H)/"]0/@H)/$Q)/CQ0/E1H +M92!F=6QL('!A=&@@=&\@=&AE(&5X96-U=&%B;&4@<')O9W)A;2!B96EN9R!T +M97-T960@*&YO=`H)87!P;&EC86)L92!T;R!L:6)A<F-H:79E7W1E<W0@<VEN +M8V4@;&EB87)C:&EV92!I<R!C;VUP:6QE9"!I;G1O('1H90H)=&5S="!P<F]G +M<F%M*2`*"3PO4#X*/"]53#X*/%`^5&AE(')E9F5R96YC92!F:6QE<R!A<F4@ +M82!C;VQL96-T:6]N(&]F(&MN;W=N(&EN<'5T<R!T:&%T(&%R92!U<V5D"FEN +M('1H92!T97-T('!R;V-E<W,N(%1H97D@87)E(&%L;"!S=&]R960@:6X@=75E +M;F-O9&5D(&9O<FUA="!I;B!F:6QE<PIW:71H(&$@)G%U;W0[+G5U)G%U;W0[ +M(&5X=&5N<VEO;BX@5&AE('1E<W0@<')O9W)A;7,@;&]O:R!I;B!A(&9E=PIS +M=&%N9&%R9"!L;V-A=&EO;G,[(&EF(&YO;F4@;V8@=&AO<V4@=V]R:RP@>6]U +M)VQL(&YE960@=&\@<W!E8VEF>2!T:&4*/%14($-,05-3/2)W97-T97)N(CXM +M<CPO5%0^(&]P=&EO;B!W:71H('1H92!F=6QL('!A=&AN86UE('1O('1H90IA +M<'!R;W!R:6%T92!D:7)E8W1O<GDN(`H\+U`^"CQ0/E1H92!B<V1T87)?=&5S +M="!A;F0@8G-D8W!I;U]T97-T('!R;V=R86US(')U;B!B<V1T87(@;W(@8G-D +M8W!I;PIR97!E871E9&QY.R!T:&5Y(&YE960@=&AE(&9U;&P@<&%T:"!T;R!T +M:&4@87!P<F]P<FEA=&4@97AE8W5T86)L92X*06QT:&]U9V@@8G-D=&%R7W1E +M<W0@86YD(&)S9&-P:6]?=&5S="!A<F4@<W!E8VEF:6-A;&QY(&EN=&5N9&5D +M(&9O<@IT97-T:6YG(&)S9'1A<B!A;F0@8G-D8W!I;RP@=&AE>2!S:&]U;&0@ +M8F4@=7-A8FQE(&9O<B!T97-T:6YG(&]T:&5R"G1A<B!A;F0@8W!I;R!P<F]G +M<F%M<RX@26X@9F%C="P@<G5N;FEN9R!T:&5S92!T97-T('!R;V=R86US(&%G +M86EN<W0*;W1H97(@=&%R(&EM<&QE;65N=&%T:6]N<R!I<R!A(&=O;V0@=V%Y +M('1O('9E<FEF>2!T:&%T('1H92!T97-T"G!R;V=R86US('1H96US96QV97,@ +M87)E('=O<FMI;F<@8V]R<F5C=&QY+B`*/"]0/@H\4#Y7:&5N(')U;BP@=&AE +M('1E<W0@<')O9W)A;7,@;W5T<'5T(&$@<')O9W)E<W,@;65S<V%G92!F;W(@ +M96%C:`IT97-T+"!A;B!E<G)O<B!M97-S86=E(&9O<B!E86-H(&9A:6QE9"!A +M<W-E<G1I;VXL(&%N9"!A(&9I;F%L"G-U;6UA<GDZ(`H\+U`^"CQ04D4@0TQ! +M4U,](G=E<W1E<FXB/B9N8G-P.U)U;FYI;F<@=&5S=',@:6XZ("]T;7`O8G-D +M=&%R7W1E<W0N,C`P.2TP,BTQ-U0R,2XS,"XT,"TP,#`*)FYB<W`[4F5F97)E +M;F-E(&9I;&5S('=I;&P@8F4@<F5A9"!F<F]M.B`F;F)S<#L@)FYB<W`[+VAO +M;64O=&EM+VQI8F%R8VAI=F4O=')U;FLO=&%R+W1E<W0*)FYB<W`[4G5N;FEN +M9R!T97-T<R!O;CH@+VAO;64O=&EM+VQI8F%R8VAI=F4O=')U;FLO8G-D=&%R +M"B9N8G-P.T5X97)C:7-I;F<Z(&)S9'1A<B`R+C8N.3`P82`M(&QI8F%R8VAI +M=F4@,BXV+CDP,&$*)FYB<W`[,#H@=&5S=%\P"B9N8G-P.S$Z('1E<W1?8F%S +M:6,*)FYB<W`[,CH@=&5S=%]C;W!Y"B9N8G-P.R!T97-T7V-O<'DN8SHQ-S$Z +M($%S<V5R=&EO;B!F86EL960Z($EN=',@;F]T(&5Q=6%L"B9N8G-P.R`F;F)S +M<#L@)FYB<W`[(#`],`HF;F)S<#L@)FYB<W`[("9N8G-P.R!L<W1A="AN86UE +M,B`K(#,L("9A;7`[<W0R*3TM,0HF;F)S<#L@=&5S=%]C;W!Y+F,Z,3<Q.B!& +M86EL960@,C8T('1I;65S"B9N8G-P.S,Z('1E<W1?9V5T9&%T90HF;F)S<#LT +M.B!T97-T7VAE;'`*)FYB<W`[("9N8G-P.R`N+BX@;6]R92!O=71P=70@;VUI +M='1E9"`N+BX*)FYB<W`[,2!O9B`Q,R!T97-T<R!R97!O<G1E9"!F86EL=7)E +M<PHF;F)S<#L@5&]T86P@;V8@,3`U,#DW(&%S<V5R=&EO;G,@8VAE8VME9"X* +M)FYB<W`[(%1O=&%L(&]F(#(V-"!A<W-E<G1I;VYS(&9A:6QE9"X*)FYB<W`[ +M(%1O=&%L(&]F(#`@87-S97)T:6]N<R!S:VEP<&5D+CPO4%)%/CQ0/@I4:&4@ +M:&5A9&5R(&QI;F5S(&AE<F4@<F5C;W)D.B`*/"]0/@H\54P^"@D\3$D^/%`@ +M4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^=&AE(&1I<F5C=&]R>2!T:&%T +M('=I;&P@8F4@=7-E9`H)9F]R('-C<F%T8V@@9FEL97,@9'5R:6YG('1H92!T +M97-T+B!)9B!A('1E<W0@9F%I;',L('1H92!S8W)A=&-H"@EF:6QE<R!W:6QL +M(&)E(&QE9G0@8F5H:6YD(&EN('1H:7,@9&ER96-T;W)Y(&9O<B!F=7)T:&5R +M(&1E8G5G9VEN9RX@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T +M;VTZ(#!I;B(^5&AE(&1I<F5C=&]R>2!F<F]M('=H:6-H('1H90H)<F5F97)E +M;F-E(&9I;&5S('=I;&P@8F4@<F5A9"X@"@D\+U`^"@D\3$D^/%`@4U193$4] +M(FUA<F=I;BUB;W1T;VTZ(#!I;B(^1F]R(&)S9'1A<E]T97-T(&%N9"!B<V1C +M<&EO7W1E<W0L"@ET:&4@9G5L;"!P871H('1O('1H92!E>&5C=71A8FQE(&)E +M:6YG(&5X97)C:7-E9"X@"@D\+U`^"@D\3$D^/%`^0F%S:6,@=F5R<VEO;B!I +M;F9O<FUA=&EO;B!A8F]U="!T:&4@=&%R9V5T+B`*"3PO4#X*/"]53#X*/%`^ +M26X@=&AI<R!C87-E+"!T:&4@=')A:6QE<B!I;F1I8V%T97,@=&AA="!O;F4@ +M=&5S="!F86EL960N($%S('EO=0IC86X@<V5E+"!T:&5R92!W87,@82!S:6YG +M;&4@87-S97)T:6]N(&EN('1H92!C;V1E('1H870@9F%I;&5D(#(V-`IT:6UE +M<RX@5&AE(&9I<G-T('1I;64@:70@9F%I;&5D+"!I="!W87,@8F5C875S92!A +M;B`\5%0@0TQ!4U,](G=E<W1E<FXB/FQS=&%T*"D\+U14/@IC86QL(')E='5R +M;F5D("TQ(&EN<W1E860@;V8@=&AE('IE<F\@=&AA="!W87,@97AP96-T960N +M(`H\+U`^"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB0F%S:6-?=&5S +M=%]T97)M:6YO;&]G>2(^/"]!/D)A<VEC('1E<W0*=&5R;6EN;VQO9WD\+T@Q +M/@H\4#Y%86-H('1E<W0@<')O9W)A;2!C;VYS:7-T<R!O9B!A(&YU;6)E<B!O +M9B`F<75O=#MT97-T<R9Q=6]T.RX@16%C:`IT97-T(&AA<R!A(&YA;64@86YD +M(&ES(&EM<&QE;65N=&5D(&EN(&$@0R!S;W5R8V4@9FEL92!W:71H('1H92!S +M86UE"FYA;64@87,@=&AE('1E<W0N(%1E<W1S('=O<FL@8GD@<&5R9F]R;6EN +M9R!S;VUE('-E<FEE<R!O9B!O<&5R871I;VYS"F%N9"!M86MI;F<@)G%U;W0[ +M87-S97)T:6]N<R9Q=6]T.R!A8F]U="!T:&4@<F5S=6QT<RX@1F]R(&5X86UP +M;&4L"FUA;GD@;V8@=&AE(&QI8F%R8VAI=F4@=&5S=',@;W!E;B!A;F0@<F5A +M9"!A;B!A<F-H:79E(&%N9"!A<W-E<G0@=&AA=`IP87)T:6-U;&%R(&]P97)A +M=&EO;G,@<W5C8V5E9&5D(&]R(&9A:6QE9"X@*%EE<RP@:70@:7,@;V9T96X* +M:6UP;W)T86YT('1O('9E<FEF>2!T:&%T(&EL;&5G86P@<F5Q=65S=',@9V5N +M97)A=&4@87!P<F]P<FEA=&4*97)R;W)S+BD@"CPO4#X*/%`^2&5R92!I<R!A +M('-O;65W:&%T(&5D:71E9"!E>&-E<G!T(&9R;VT@/%14($-,05-3/2)W97-T +M97)N(CYT97-T7V-O;7!A=%]Z:7`\+U14/BP*=VAI8V@@=F5R:69I97,@8V]M +M<&%T:6)I;&ET>2!W:71H('9A<FEO=7,@6DE0(&9O<FUA="!A<F-H:79E<SH@ +M"CPO4#X*/%!212!#3$%34STB=V5S=&5R;B(^)FYB<W`[($1%1DE.15]415-4 +M*'1E<W1?8V]M<&%T7WII<"D*)FYB<W`[('L*)FYB<W`[("9N8G-P.R`O*B`N +M+BX@<V5T=7`@;VUI='1E9"`N+BX@*B\*)FYB<W`[("9N8G-P.R!A<W-E<G0H +M*&$@/2!A<F-H:79E7W)E861?;F5W*"DI("$]($Y53$PI.PHF;F)S<#L@)FYB +M<W`[(&%S<V5R=$5Q=6%L26YT*$%20TA)5D5?3TLL"B9N8G-P.R`F;F)S<#L@ +M)FYB<W`[("9N8G-P.R!A<F-H:79E7W)E861?<W5P<&]R=%]C;VUP<F5S<VEO +M;E]A;&PH82DI.PHF;F)S<#L@)FYB<W`[(&%S<V5R=$5Q=6%L26YT*$%20TA) +M5D5?3TLL"B9N8G-P.R`F;F)S<#L@)FYB<W`[("9N8G-P.R!A<F-H:79E7W)E +M861?<W5P<&]R=%]F;W)M871?86QL*&$I*3L*)FYB<W`[("9N8G-P.R!E>'1R +M86-T7W)E9F5R96YC95]F:6QE*&YA;64I.PHF;F)S<#L@)FYB<W`[(&%S<V5R +M=$5Q=6%L26YT*$%20TA)5D5?3TLL"B9N8G-P.R`F;F)S<#L@)FYB<W`[("9N +M8G-P.R!A<F-H:79E7W)E861?;W!E;E]F:6QE;F%M92AA+"!N86UE+"`Q,#(T +M,"DI.PHF;F)S<#L@)FYB<W`[("9N8G-P.R\J(%)E860@9FER<W0@96YT<GDN +M("HO"B9N8G-P.R`F;F)S<#L@)FYB<W`[87-S97)T17%U86Q);G0H05)#2$E6 +M15]/2RP@87)C:&EV95]R96%D7VYE>'1?:&5A9&5R*&$L("9A;7`[864I*3L* +M)FYB<W`[("9N8G-P.R`F;F)S<#MA<W-E<G1%<75A;%-T<FEN9R@F<75O=#M- +M151!+4E.1B]-04Y)1D535"Y-1B9Q=6]T.RP@87)C:&EV95]E;G1R>5]P871H +M;F%M92AA92DI.SPO4%)%/CQ0/@I4:&4@/%14($-,05-3/2)W97-T97)N(CYA +M<W-E<G186%A8/"]45#X@;6%C<F]S(&-H96-K('1H870@=&AE:7(*87)G=6UE +M;G1S('-A=&ES9GD@8V5R=&%I;B!C;VYD:71I;VYS+B!)9B!T:&4@87-S97)T +M:6]N(&9A:6QS+2UF;W(*97AA;7!L92P@:68@=&AE(&YA;64@;V8@=&AE(&9I +M<G-T(&5N=')Y(&ES(&YO=`HF<75O=#M-151!+4E.1B]-04Y)1D535"Y-1B9Q +M=6]T.RTM=&AE(&UA8W)O('=I;&P@<F5P;W)T('1H92!P<F]B;&5M+B`*/"]0 +M/@H\4#Y4:&5R92!A<F4@='=O(&EM<&]R=&%N="!D:69F97)E;F-E<R!B971W +M965N('1H92`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=%A86#PO5%0^"FUA +M8W)O<R!U<V5D(&EN('1H97-E('1E<W0@:&%R;F5S<V5S(&%N9"!T:&4@25-/ +M($,@<W1A;F1A<F0@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G0\+U14/@IM +M86-R;SH@1FER<W0L('1H97-E(&%S<V5R="!M86-R;W,@9&]N)W0@97AI="!O +M;B!F86EL=7)E+B!">2!D969A=6QT+`IT:&5Y(')E<&]R="!T:&4@9F%I;'5R +M92!A;F0@<F5T=7)N('IE<F\@*'1H92!#(&YO=&EO;B!O9B`F<75O=#MF86QS +M929Q=6]T.RDN"E-E8V]N9"P@=&AE<V4@;6%C<F]S(&EN8VQU9&4@=F%R:6%N +M=',@=&AA="!P97)F;W)M(&$@=F%R:65T>2!O9@IS<&5C:69I8R!T97-T<RX@ +M5&AE<V4@<W!E8VEF:6,@=F5R<VEO;G,@*'-U8V@@87,@/%14($-,05-3/2)W +M97-T97)N(CYA<W-E<G1%<75A;$EN=#PO5%0^"F%N9"`\5%0@0TQ!4U,](G=E +M<W1E<FXB/F%S<V5R=$5Q=6%L4W1R:6YG/"]45#X@:6X@=&AE(&5X86UP;&4@ +986)O=F5>EGL/0!0`O*TOS@`````````````` +` +end 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 new file mode 100644 index 0000000..e00e06c --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part2.rar.uu @@ -0,0 +1,159 @@ +begin 644 - +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@ +M<&%R=&EC=6QA<BP@=&AE>2!P<FEN=`IT:&4@=F%L=64@;V8@8F]T:"!A<F=U +M;65N=',[('1H:7,@9W)E871L>2!S:6UP;&EF:65S(&1I86=N;W-I;F<*9F%I +M;'5R97,N(`H\+U`^"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB3&EF +M95]C>6-L95]O9E]A7W1E<W0B/CPO03Y,:69E(&-Y8VQE(&]F"F$@=&5S=#PO +M2#$^"CQ0/D5A8V@@=&5S="!R97-I9&5S(&EN(&$@0R!S;W5R8V4@9FEL92!W +M:71H('1H92!S86UE(&YA;64@87,@=&AE"G1E<W0N(%1H92!T97-T(&ET<V5L +M9B!I<R!A(&9U;F-T:6]N('1H870@=&%K97,@;F\@87)G=6UE;G1S+B!4:&4@ +M=&5S=`II<R!D96-L87)E9"!U<VEN9R!T:&4@/%14($-,05-3/2)W97-T97)N +M(CY$149)3D5?5$535"@I/"]45#X@;6%C<F\N"E1H:7,@;6%C<F\@<V5R=F5S +M(&)O=&@@=&\@96YS=7)E('1H870@=&AE('1E<W0@:7,@9&5C;&%R960@8V]R +M<F5C=&QY"F%N9"!A<R!A(&QA8F5L('1H870@8V%N(&)E('5S960@=&\@;&]C +M871E(&%L;"!D969I;F5D('1E<W1S+B`H3VX*56YI>"UL:6ME('!L871F;W)M +M<RP@82!S:6UP;&4@/%14($-,05-3/2)W97-T97)N(CYG<F5P/"]45#X@;W!E +M<F%T:6]N"FES('5S960@=&\@8V]N<W1R=6-T(&$@9FEL92!C86QL960@/%14 +M($-,05-3/2)W97-T97)N(CYL:7-T+F@\+U14/@IT:&%T(&AO;&1S('1H92!N +M86UE<R!O9B!A;&P@;V8@=&AE('1E<W1S+B!4:&ES(&UA:V5S(&ET('9E<GD@ +M96%S>2!T;PIA9&0@;F5W('1E<W1S+BD@"CPO4#X*/%`^5&AE('1E<W0@:&%R +M;F5S<R!D971E<FUI;F5S('=H:6-H('1E<W1S('1O(')U;BX@270@9V]E<R!T +M:')O=6=H"G1H92!F;VQL;W=I;F<@<W1E<',@=VAE;F5V97(@:70@<G5N<R!A +M('1E<W0Z(`H\+U`^"CQ53#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O +M;3H@,&EN(CX\4U1224M%/D-L;W-E<R!A;&P@9FEL90H)9&5S8W)I<'1O<G,@ +M97AC97!T(&9O<B!S=&1I;BP@<W1D;W5T+"!A;F0@<W1D97)R+CPO4U1224M% +M/B`H5&AI<PH)<V-R97=S('5P(&QI8F,@;VX@<V]M92!P;&%T9F]R;7,@<V\@ +M:&%S(&)E96X@<F5M;W9E9"XI(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G +M:6XM8F]T=&]M.B`P:6XB/D-R96%T97,@82!T96UP;W)A<GD@9&ER96-T;W)Y +M"@EW:&]S92!N86UE(&UA=&-H97,@=&AE(&YA;64@;V8@=&AE('1E<W0@86YD +M('-W:71C:&5S(&EN=&\@=&AA=`H)9&ER96-T;W)Y+B`*"3PO4#X*"3Q,23X\ +M4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY297-E=',@=&AE(&-U<G)E +M;G0@;&]C86QE+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O +M;3H@,&EN(CY#86QL<R!T:&4@=&5S="!F=6YC=&EO;BX@"@D\+U`^"@D\3$D^ +M/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^268@=&AE<F4@=V5R92!N +M;R!A<W-E<G1I;VX*"69A:6QU<F5S+"!I="!W:6QL(')E;6]V92!T:&4@=&5M +M<&]R87)Y(&1I<F5C=&]R>2X@*$EF(#Q45"!#3$%34STB=V5S=&5R;B(^+6L\ +M+U14/@H):7,@<W!E8VEF:65D+"!T96UP;W)A<GD@9&ER96-T;W)Y(&%R92!L +M969T(&5V96X@:68@=&AE('1E<W0*"7-U8V-E961S+BD@"@D\+U`^"@D\3$D^ +M/%`^/%-44DE+13Y)9B!T:&5R92!A<F4@86YY(&]P96X@9FEL92!D97-C<FEP +M=&]R<R!O=&AE<B!T:&%N"@ES=&1I;BP@<W1D;W5T+"!A;F0@<W1D97)R+"!I +M="!R97!O<G1S(&%N(&5R<F]R+CPO4U1224M%/B!497-T<PH)<VAO=6QD(&YE +M=F5R(&QE879E(&]P96X@9FEL92!D97-C<FEP=&]R<RX@"@D\+U`^"CPO54P^ +M"CQ0/DEN('!A<G1I8W5L87(L('1E<W1S(&-A;B!S869E;'D@87-S=6UE('1H +M870Z(`H\+U`^"CQ53#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@ +M,&EN(CY4:&4@8W5R<F5N="!D:7)E8W1O<GD@:7,@96UP='D*"7=H96X@=&AE +M('1E<W0@<W1A<G1S+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O +M='1O;3H@,&EN(CY!;GD@9FEL97,@8W)E871E9"!I;B!T:&4@8W5R<F5N=`H) +M9&ER96-T;W)Y('=I;&P@8F4@<F5M;W9E9"!F;W(@>6]U+B`*"3PO4#X*"3Q, +M23X\4#Y4:&4@8W5R<F5N="!L;V-A;&4@:7,@=&AE(&1E9F%U;'0@)G%U;W0[ +M0R9Q=6]T.R!L;V-A;&4N(`H)/"]0/@H\+U5,/@H\4#Y497-T<R!S:&]U;&0Z +M(`H\+U`^"CQ53#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN +M(CY296QE87-E(&%L;"!M96UO<GDN(%1H92!T97-T"@ES=6ET97,@87)E(&]C +M8V%S:6]N86QL>2!R=6X@=6YD97(@82!M96UO<GD@9&5B=6=G97(@=&\@9&5T +M96-T(&QE86MS"@EI;B!T:&4@;&EB87)C:&EV92!L:6)R87)Y+B`*"3PO4#X* +M"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY#;&]S92!A;&P@ +M;W!E;F5D(&9I;&5S+B!4:&ES(&AE;'!S"@ET;R!C871C:"!F:6QE(&1E<V-R +M:7!T;W(@;&5A:W,@:6X@;&EB87)C:&EV92X@"@D\+U`^"@D\3$D^/%`^3F]T +M(')E860@;W(@=W)I=&4@86)S;VQU=&4@<&%T:',N(`H)/"]0/@H\+U5,/@H\ +M2#$@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](E!L871F;W)M7W9A<FEA=&EO +M;B(^/"]!/E!L871F;W)M"G9A<FEA=&EO;CPO2#$^"CQ0/E-O;64@=&5S=',@ +M87)E('-P96-I9FEC('1O(&$@<&%R=&EC=6QA<B!P;&%T9F]R;2X@4W5C:"!T +M97-T<PIS:&]U;&0@=7-E(&%P<')O<')I871E('!L871F;W)M+7-P96-I9FEC +M(&UA8W)O<R!A<R!F;VQL;W=S.B`*/"]0/@H\4%)%($-,05-3/2)W97-T97)N +M(CXC:68@7U]03$%41D]230HN+BX@=F%R:6]U<R!H96QP97(@9G5N8W1I;VYS +M("XN+@HC96YD:68*1$5&24Y%7U1%4U0H9F]O7W!L871F;W)M*0I["B-I9B!? +M7U!,051&3U)-"B9N8G-P.R`F;F)S<#LN+BX@=&5S=',@87,@=7-U86P@+BXN +M+@HC96QS90HF;F)S<#L@)FYB<W`[<VMI<'!I;F<H)G%U;W0[<&QA=&9O<FTM +M<W!E8VEF:6,@=&5S=',F<75O=#LI.PHC96YD:68*?3PO4%)%/CQ0/@I);B!P +M87)T:6-U;&%R+"!N;W1E('1H870@86QL('1E<W1S(&%R92!C;VUP:6QE9"!A +M;F0@<G5N(&]N(&%L;`IP;&%T9F]R;7,N(`H\+U`^"CQ0/DUO<W0@=&5S=',@ +M87)E(&YO="!P;&%T9F]R;2US<&5C:69I8R!A;F0@=VEL;"!T:'5S(&5N9"!U +M<"!R=6YN:6YG"F]N(&UA;GD@9&EF9F5R96YT('!L871F;W)M<RX@26X@;W)D +M97(@=&\@<VEM<&QI9GD@=W)I=&EN9R!S=6-H('1E<W1S+`IT<GD@=&\@=7-E +M('!L871F;W)M+6EN9&5P96YD96YT(&-O9&EN9SH@"CPO4#X*/%5,/@H)/$Q) +M/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/E5S92!S=&1I;R`\5%0@ +M0TQ!4U,](G=E<W1E<FXB/F9O<&5N*"D\+U14/BP*"3Q45"!#3$%34STB=V5S +M=&5R;B(^9G=R:71E*"D\+U14/BP@/%14($-,05-3/2)W97-T97)N(CYF<F5A +M9"@I/"]45#XL"@EA;F0@/%14($-,05-3/2)W97-T97)N(CYF8VQO<V4H*3PO +M5%0^('1O(&%C8V5S<R!F:6QE<R!W:&5N979E<@H)9F5A<VEB;&4N(`H)/"]0 +M/@H)/$Q)/CQ0/DQO;VL@=&AR;W5G:"!T:&4@/%14($-,05-3/2)W97-T97)N +M(CYT97-T+F@\+U14/B!H96%D97(@=&\*"7-E92!I9B!T:&5R92!A<F4@87-S +M97)T6'AX*"D@9G5N8W1I;VYS('1H870@>6]U(&-A;B!U<V4N(%1H97)E)W,@ +M80H);&ES="!O9B!T:&4@;6]R92!P;W!U;&%R(&]N97,@8F5L;W<L(&)U="!N +M97<@;VYE<R!A<F4@;V9T96X@861D960N(`H)/"]0/@H\+U5,/@H\2#$@0TQ! +M4U,](G=E<W1E<FXB/CQ!($Y!344](D%S<V5R=%]M86-R;W,B/CPO03Y!<W-E +M<G0@;6%C<F]S/"](,3X*/%`^5&AE(&9O;&QO=VEN9R!I<R!A(&YE8V5S<V%R +M:6QY(&EN8V]M<&QE=&4@;&ES="!O9B!A<W-E<G0@9G5N8W1I;VYS"F%V86EL +M86)L92!T;R!T97-T<SH@"CPO4#X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G +M:6XM8F]T=&]M.B`P:6XB/D)A<VEC(&5Q=6%L:71Y.B`\5%0@0TQ!4U,](G=E +M<W1E<FXB/F%S<V5R=$5Q=6%L26YT/"]45#XL"@D\5%0@0TQ!4U,](G=E<W1E +M<FXB/F%S<V5R=$5Q=6%L4W1R:6YG/"]45#XL(#Q45"!#3$%34STB=V5S=&5R +M;B(^87-S97)T17%U86Q-96T\+U14/@H)"3PO4#X*"3Q,23X\4"!35%E,13TB +M;6%R9VEN+6)O='1O;3H@,&EN(CY&:6QE(&-R96%T:6]N.B`\5%0@0TQ!4U,] +M(G=E<W1E<FXB/F%S<V5R=$UA:V5&:6QE/"]45#XL"@D\5%0@0TQ!4U,](G=E +M<W1E<FXB/F%S<V5R=$UA:V53>6UL:6YK/"]45#XL(#Q45"!#3$%34STB=V5S +M=&5R;B(^87-S97)T36%K94AA<F1L:6YK/"]45#XL"@D\5%0@0TQ!4U,](G=E +M<W1E<FXB/F%S<V5R=$UA:V5$:7(\+U14/B`*"3PO4#X*"3Q,23X\4"!35%E, +M13TB;6%R9VEN+6)O='1O;3H@,&EN(CY&:6QE('1E<W1S.B`\5%0@0TQ!4U,] +M(G=E<W1E<FXB/F%S<V5R=$ES4F5G/"]45#XL"@D\5%0@0TQ!4U,](G=E<W1E +M<FXB/F%S<V5R=$ES1&ER/"]45#XL(#Q45"!#3$%34STB=V5S=&5R;B(^87-S +M97)T27-3>6UL:6YK/"]45#XL"@D\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R +M=$9I;&53:7IE/"]45#XL(#Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T1FEL +M94YL:6YK<SPO5%0^+`H)/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1&:6QE +M371I;64\+U14/B`*"3PO4#X*"3Q,23X\4#Y&:6QE(&-O;G1E;G1S.B`\5%0@ +M0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$9I;&5%;7!T>3PO5%0^+`H)/%14($-, +M05-3/2)W97-T97)N(CYA<W-E<G1&:6QE3F]N16UP='D\+U14/BP@/%14($-, +M05-3/2)W97-T97)N(CYA<W-E<G1&:6QE0V]N=&5N=',\+U14/BP*"3Q45"!# +M3$%34STB=V5S=&5R;B(^87-S97)T5&5X=$9I;&5#;VYT96YT<SPO5%0^(`H) +M/"]0/@H\+U5,/@H\2#$@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](E)E9F5R +M96YC95]&:6QE<R(^/"]!/E)E9F5R96YC92!&:6QE<SPO2#$^"CQ0/DUA;GD@ +M=&5S=',@<F5Q=6ER92!R96%D:6YG(&$@<')E+6-O;G-T<G5C=&5D(')E9F5R +M96YC92!F:6QE+B!3=6-H"F9I;&5S(&%R92!S=&]R960@=VET:"!T:&4@<V]U +M<F-E(&-O9&4@9F]R('1H92!A<W-O8VEA=&5D('1E<W0@<W5I=&4N"E)E9F5R +M96YC92!F:6QE<R!A<F4@;F%M960@86-C;W)D:6YG('1O('1H92!T97-T(&%N +M9"!M=7-T(&)E('5U96YC;V1E9`IT;R!B92!C:&5C:V5D(&EN=&\@<V]U<F-E +M(&-O;G1R;VPN(`H\+U`^"CQ0/D9O<B!E>&%M<&QE+"!I9B!Y;W4@;F5E9"!A +M(')E9F5R96YC92!T87(@87)C:&EV92!T;R!U<V4@=VET:`H\5%0@0TQ!4U,] +M(G=E<W1E<FXB/G1E<W1?9F]O/"]45#XL('1H92!F:6QE('-H;W5L9"!B92!N +M86UE9`H\5%0@0TQ!4U,](G=E<W1E<FXB/G1E<W1?9F]O+G1A<CPO5%0^(&%N +M9"!S=&]R960@:6X@<V]U<F-E(&-O;G1R;VP@87,*/%14($-,05-3/2)W97-T +M97)N(CYT97-T7V9O;RYT87(N=74\+U14/BX@"CPO4#X*/%`^5VET:&EN('1H +M92!T97-T(&-O9&4L('EO=2!C86X@<F5C;W9E<B!T:&4@<F5F97)E;F-E(&9I +M;&4@=VET:#H@"CPO4#X*/%!212!#3$%34STB=V5S=&5R;B(@4U193$4](FUA +M<F=I;BUB;W1T;VTZ(#`N,FEN(CXF;F)S<#L@)FYB<W`[(&5X=')A8W1?<F5F +M97)E;F-E7V9I;&4H)G%U;W0[=&5S=%]F;V\N=&%R)G%U;W0[*3L\+U!213X\ +M4#X*5&AE(#Q45"!#3$%34STB=V5S=&5R;B(^97AT<F%C=%]R969E<F5N8V5? +M9FEL92@I/"]45#X@9G5N8W1I;VX@=VEL;`IU=61E8V]D92!T:&4@<F5Q=65S +M=&5D(&9I;&4@86YD('!U="!T:&4@<F5S=6QT(&EN('1H92!C=7)R96YT"F1I +M<F5C=&]R>2X@"CPO4#X*/%`^3&]O:R!A="`\5%0@0TQ!4U,](G=E<W1E<FXB +M/G1E<W1?<F5A9%]F;W)M871?8W!I;U]B:6Y?8F4N8SPO5%0^"F9O<B!A('-I +M;7!L92!E>&%M<&QE(&]F('1H:7,@=7-A9V4N(`H\+U`^"CQ0/D$@9F5W(&]F +M('1H92!O;&1E<B!T97-T<R!S=&]R92!R969E<F5N8V4@9&%T82!W:71H:6X@ +M=&AE('-O=7)C90IC;V1E(&%S(&$@:&5X+65N8V]D960@87)R87D@;V8@8VAA +M<F%C=&5R<RX@5&AI<R!W87,@8V]M;6]N(&)E9F]R90H\5%0@0TQ!4U,](G=E +M<W1E<FXB/F5X=')A8W1?<F5F97)E;F-E7V9I;&4H*3PO5%0^('=A<R!A9&1E +M9"!A;F0@:7,*;F]T(')E8V]M;65N9&5D(&9O<B!N97<@8V]D92X@"CPO4#X* +M/$@Q($-,05-3/2)W97-T97)N(CX\02!.04U%/2)$;W-?86YD7T1O;G1S(CX\ +M+T$^1&]S(&%N9"!$;VYT<SPO2#$^"CQ53#X*"3Q,23X\4"!35%E,13TB;6%R +M9VEN+6)O='1O;3H@,&EN(CY$3R!U<V4@87-S97)T<R!L:6)E<F%L;'DN($ET +M)W,*"6-O;6UO;B!T;R!H879E(&%N(&%S<V5R="!O;B!A;&UO<W0@979E<GD@ +M;&EN92X@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I +M;B(^1$\@=7-E(&%S<V5R=$5Q=6%L26YT+`H)87-S97)T17%U86Q3=')I;F<L +M(&%S<V5R=$5Q=6%L365M('1O('1E<W0@97%U86QI='D@:6YS=&5A9"!O9B!P +M;&%I;@H)87-S97)T*"D[('1H92!S<&5C:6%L:7IE9"!F;W)M<R!G:79E(&$@ +M;&]T(&UO<F4@:6YF;W)M871I;VX@;VX@80H)9F%I;'5R92X@"@D\+U`^"@D\ +M3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^1$\@=&5S="!Y;W5R +M('1E<W1S.R!E>'!E<FEM96YT(&)Y"@EC:&%N9VEN9R!A('!I96-E(&]F(&-O +M9&4@86YD(&UA:V4@<W5R92!Y;W5R('1E<W0@9F%I;',N($EF('EO=2!T:&EN +M:PH)>6]U)W9E(&9O=6YD(&$@8G5G+"!W92!R96-O;6UE;F0@=W)I=&EN9R!T +M:&4@=&5S="!F:7)S="P@;6%K92!S=7)E"@ET:&4@=&5S="!F86EL<RP@=&AE +M;B!F:7AI;F<@=&AE(&)U9RX@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I +M;BUB;W1T;VTZ(#!I;B(^1$\@<G5N(&%L;"!O9B!T:&4@=&5S=',@8F5F;W)E +M"@ES=6)M:71T:6YG(&$@8VAA;F=E+B!$97!E;F1I;F<@;VX@>6]U<B!B=6EL +M9"!E;G9I<F]N;65N="P@/%14($-,05-3/2)W97-T97)N(CYM86ME"@ET97-T +M/"]45#X@;W(@/%14($-,05-3/2)W97-T97)N(CYM86ME(&-H96-K/"]45#X@ +9=VEL;"!W#WL/0!0`2)*LI@$````````````` +` +end 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 new file mode 100644 index 0000000..06e72a7 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part3.rar.uu @@ -0,0 +1,146 @@ +begin 644 - +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 +M64Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D1/3B=4(')E;'D@;VX@/%14($-, +M05-3/2)W97-T97)N(CY(059%7SPO5%0^"@EM86-R;W,@9G)O;2!C;VYF:6<N +M:"X@*$EF('1H92!T97-T<R!U<V4@=&AE('-A;64@/%14($-,05-3/2)W97-T +M97)N(CY(059%7SPO5%0^"@EM86-R;W,@87,@=&AE(&-O9&4@8F5I;F<@=&5S +M=&5D('1H96X@8V]N9FEG=7)A=&EO;B!P<F]B;&5M<R!W:6QL(&)E"@EC;W9E +M<F5D('5P+BD@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ +M(#!I;B(^1$\@=7-E(')U;G1I;64@=&5S=',@9F]R('!L871F;W)M"@EF96%T +M=7)E<RX@1F]R(&5X86UP;&4L('1H92!!0TP@=&5S=',@=')Y('1O('-E="!A +M;B!!0TP@;VX@82!F:6QE(&%N9`H)<F5A9"!I="!B86-K('1O(&1E=&5R;6EN +M92!I9B!!0TP@<W5P<&]R="!I<R!A=F%I;&%B;&4L('1H96X@=&AE>0H)97AE +M<F-I<V4@=&AE(&QI8F%R8VAI=F4@04-,(&AA;F1L:6YG+B`*"3PO4#X*"3Q, +M23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY$3R!L;V]K(&%T(&5X +M:7-T:6YG('1E<W1S+B!/9G1E;BP*"6$@8G5G(&-A;B!B92!T97-T960@8GD@ +M861D:6YG(&IU<W0@82!C;W5P;&4@;V8@87-S97)T<R!T;R!A;@H)97AI<W1I +M;F<@=&5S="!I;G-T96%D(&]F('=R:71I;F<@82!N97<@;VYE+B`*"3PO4#X* +M"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY$3R!I;7!R;W9E +M(&5X:7-T:6YG('1E<W1S+B!);@H)<&%R=&EC=6QA<BP@:68@>6]U('-E92!A +M('1E<W0@9F%I;'5R92!T:&%T(&ES(&AA<F0@=&\@=6YD97)S=&%N9"P*"6-O +M;G-I9&5R(&%D9&EN9R!A(&9A:6QU<F4H*2!M97-S86=E(&]R(&-O;6UE;G1S +M('-O('1H92!N97AT('!E<G-O;@H)=VEL;"!H879E(&%N(&5A<VEE<B!T:6UE +M+B`*"3PO4#X*"3Q,23X\4#Y$3R!A<VL@;VX@=&AE(&UA:6QI;F<@;&ES=',@ +M:68@>6]U(&AA=F4@<75E<W1I;VYS+B!3;VUE('1E<W1S"@EA<F4@8F5T=&5R +M('=R:71T96X@=&AA;B!O=&AE<G,N(`H)/"]0/@H\+U5,/@H\2#$@0TQ!4U,] +M(G=E<W1E<FXB/CQ!($Y!344](E-O;65?97AA;7!L97-?;V9?=&5S=',B/CPO +M03Y3;VUE"F5X86UP;&5S(&]F('1E<W1S/"](,3X*/$@R($-,05-3/2)W97-T +M97)N(CX\02!.04U%/2),:6)A<F-H:79E7W)E861?=&5S=',B/CPO03Y,:6)A +M<F-H:79E"G)E860@=&5S=',\+T@R/@H\4#Y4:&5R92!A<F4@<75I=&4@82!F +M97<@<F5A9"!T97-T<R!T:&%T('-I;7!L>2!R96%D(&$@<')E+6)U:6QT"FEN +M<'5T(&9I;&4@86YD('9E<FEF>2!T:&4@<F5S=6QT<RX@5&AE<V4@=7-E(#Q4 +M5"!#3$%34STB=V5S=&5R;B(^97AT<F%C=%]R969E<F5N8V5?9FEL92@I/"]4 +M5#X*=&\@9&5C;V1E(&$@=75E;F-O9&5D(&EN<'5T(&9I;&4L('1H96X@;W!E +M;B!T:&%T(&9I;&4@=VET:"!L:6)A<F-H:79E"F%N9"!V97)I9GD@=&AE(')E +M<W5L=',N($UO<W0@;V8@=&AE<V4@87)E('!R971T>2!S=')A:6=H=&9O<G=A +M<F0N(`H\+U`^"CQ(,B!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB3&EB87)C +M:&EV95]R96%D+W=R:71E7W1E<W1S(CX\+T$^3&EB87)C:&EV90IR96%D+W=R +M:71E('1E<W1S/"](,CX*/%`^36]S="!O9B!T:&4@=W)I=&4@=&5S=',@<F5A +M;&QY(&IU<W0@=F5R:69Y('1H870@;&EB87)C:&EV92!C86X*<F5A9"!W:&%T +M(&ET('=R:71E<RX@5&AE<V4@9V5N97)A;&QY('5S92!T:&4@;65M;W)Y(&EN +M=&5R9F%C97,N(%1H97D*9F5E9"!A<F-H:79E(&5N=')I97,@:6YT;R!T:&4@ +M=W)I=&5R('1O(&-R96%T92!A;B!A<F-H:79E(&EN(&UE;6]R>0IA;F0@=&AE +M;B!O<&5N('1H92!M96UO<GD@86=A:6X@=&\@<F5A9"!T:&4@9&%T82!B86-K +M(&%N9"!V97)I9GD@=&AA=`II="!I<R!T:&4@<V%M92X@"CPO4#X*/$@R($-, +M05-3/2)W97-T97)N(CX\02!.04U%/2),:6)A<F-H:79E7W=R:71E7W9A;&ED +M871O<G,B/CPO03Y,:6)A<F-H:79E"G=R:71E('9A;&ED871O<G,\+T@R/@H\ +M4#Y!(&9E=R!W<FET92!T97-T<R!W<FET92!A;B!A<F-H:79E(&EN=&\@;65M +M;W)Y(&%N9"!T:&5N(&EN<W!E8W0*=&AE(&%C='5A;"!B>71E<R!T;R!V97)I +M9GD@=&AA="!T:&4@87)C:&EV92!W87,@8W)E871E9"!C;W)R96-T;'DN"E1H +M97-E('1E<W1S(&%R92!N:6-E('1O(&AA=F4@8G5T(&%R92!T961I;W5S('1O +M(&)U:6QD+B`*/"]0/@H\4#Y4:&5R92!A<F4@86QS;R!A(&-O=7!L92!O9B!S +M=6-H('9A;&ED871O<G,@9F]R(&)S9'1A<B!A;F0@8G-D8W!I;RX*5&AE<V4@ +M87)E('9E<GD@=')I8VMY('-I;F-E('1H92!E>&%C="!D871A(&-O;G1A:6YS +M('9A;'5E<R!T:&%T('1H90IT97-T(&-A;FYO="!C;VUP;&5T96QY(&-O;G1R +M;VP@*'-U8V@@87,@=&AE(&-U<G)E;G0@=&EM92!O<@IU<V5R;F%M92DN(`H\ +M+U`^"CQ(,B!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB1&ES:U]T97-T<R(^ +M/"]!/D1I<VL@=&5S=',\+T@R/@H\4#Y,:6)A<F-H:79E)W,@9&ES:R!)+T\@ +M05!)<RP@87,@=V5L;"!A<R!B<V1T87(@86YD(&)S9&-P:6\L(&YE960@=&\* +M;W!E<F%T92!B>2!V97)I9GEI;F<@9FEL97,@;VX@9&ES:RX@5&\@;6%K92!T +M:&ES(&5A<VEE<BP@=&AE('1E<W0*9G)A;65W;W)K(&YO=R!H87,@82!L87)G +M92!N=6UB97(@;V8@87-S97)T:6]N<R!T;R!V97)I9GD@=&EM97-T86UP<RP* +M<&5R;6ES<VEO;G,L(&%N9"!O=&AE<B!B87-I8R!F:6QE(&1A=&$N(%1H97-E +M(&%S<V5R=&EO;G,@=7-E"F%P<')O<')I871E('-Y<W1E;2!C86QL<R!F;W(@ +M96%C:"!P;&%T9F]R;3L@;F5W('1E<W1S('-H;W5L9"!T<GD@=&\*879O:60@ +M=7-I;F<@/%14($-,05-3/2)W97-T97)N(CYS=&%T*"D\+U14/BP@=VAI8V@@ +M:7,@;F]T('5N:69O<FUL>0IA=F%I;&%B;&4N(`H\+U`^"CQ(,B!#3$%34STB +M=V5S=&5R;B(^/$$@3D%-13TB1G5Z>E]T97-T97(B/CPO03Y&=7IZ('1E<W1E +M<CPO2#(^"CQ0/E1H92!F=7IZ('1E<W1E<B!I<R!O;F4@;V8@=&AE(&9E=R!T +M97-T<R!T:&%T(&1O97,@;F]T(&%G9W)E<W-I=F5L>0IU<V4@87-S97)T:6]N +M<RX@271S('!U<G!O<V4@:7,@=&\@=')Y(&%N9"!C<F%S:"!L:6)A<F-H:79E +M(&)Y(&9E961I;F<*:70@:6YP=70@=&AA="!I<R!S;&EG:'1L>2!D86UA9V5D +M+B`H4F5M96UB97(@=&AA="!L:6)A<F-H:79E(&1O97,*:&%V92!S;VUE(&9A +M:6QS869E(&-O9&4@=&AA="!D96QI8F5R871E;'D@86)O<G1S('1H92!E;G1I +M<F4@<')O9W)A;0II9B!C97)T86EN(&EN=F%R:6%N=',@87)E('9I;VQA=&5D +M+BD@"CPO4#X*/%`^4VEN8V4@82!F=7IZ(&9A:6QU<F4@8V%U<V5S(&$@8W)A +M<V@L(&ET)W,@:6UP;W-S:6)L92!T;R!R97!O<G0@=&AE"F5R<F]R('1O('1H +M92!C;VYS;VQE+"!S;R!T:&4@9G5Z>B!T97-T97(@:6YS=&5A9"!G96YE<F%T +M97,@80IR86YD;VUL>2UD86UA9V5D(&9I;&4L('-A=F5S('1H870@9FEL92!T +M;R!D:7-K+"!T:&5N(')U;G,@=&AE(&9I;&4*=&AR;W5G:"!L:6)A<F-H:79E +M('1O('1R>2!T;R!P<F]V;VME(&$@8W)A<V@N($EF(&QI8F%R8VAI=F4@8W)A +M<VAE<PIT:&4@96YT:7)E('1E<W1E<BP@=&AE(&EN<'5T('1H870@8V%U<V5D +M('1H92!C<F%S:"!W:6QL(&)E(&%V86EL86)L90IO;B!D:7-K(&9O<B!F=7)T +M:&5R(&%N86QY<VES+B`*/"]0/@H\4#Y!;'1H;W5G:"!I="!I<R!U;G5S=6%L +M(&9O<B!A('1E<W0@<')O9W)A;2!T;R!U<V4@<F%N9&]M(&EN<'5T+"!T:&4* +M9G5Z>B!T97-T97(@:&%S('!R;W9E;B!Q=6ET92!U<V5F=6P@870@=6YC;W9E +M<FEN9R!P;V]R(&5R<F]R"FAA;F1L:6YG+B!5;F9O<G1U;F%T96QY+"!T:&4@ +M;F5E9"!T;R!W<FET92!T:&4@9&%T82!T;R!D:7-K(&)E9F]R90IE86-H('1E +M<W0@:7,@82!S:6=N:69I8V%N="!P97)F;W)M86YC92!I<W-U92X@"CPO4#X* +M/$@R($-,05-3/2)W97-T97)N(CX\02!.04U%/2),87)G95]T87)?=&5S=&5R +M(CX\+T$^3&%R9V4@=&%R('1E<W1E<CPO2#(^"CQ0/E1H92!L87)G92!T87(@ +M=&5S=&5R(&%T=&5M<'1S('1O(&5X97)C:7-E(&)O=6YD87)Y(&-A<V5S('=I +M=&@@=F5R>0IL87)G92!E;G1R:65S+"!U<"!T;R`Q('1E<F%B>71E+B!/9B!C +M;W5R<V4L('=R:71I;F<@82`Q('1E<F%B>71E"F5N=')Y('1O(&%N('5N8V]M +M<')E<W-E9"!A<F-H:79E(&]N(&1I<VL@;W(@;65M;W)Y(&ES('5N86-C97!T +M86)L92P*8F]T:"!F;W(@<&5R9F]R;6%N8V4@86YD('-P86-E(')E87-O;G,N +M($5V96X@9WII<"!O<B!B>FEP,@IC;VUP<F5S<VEO;B!W;VXG="!H96QP.R!A +M;'1H;W5G:"!S;6%L;&5R+"!T:&4@;W5T<'5T(&ES('-T:6QL(&QA<F=E"F%N +M9"!T:&4@=&EM92!N965D960@=&\@8V]M<')E<W,@<W5C:"!A(&QA<F=E(&%M +M;W5N="!O9B!D871A(&ES"G!R;VAI8FET:79E+B!3;R!T:&4@;&%R9V4@=&%R +M('1E<W1E<B!U<V5S(&$@=')I8VLN(`H\+U`^"CQ0/E)E;65M8F5R('1H870@ +M86X@=6YC;VUP<F5S<V5D('1A<B!A<F-H:79E(&-O;G-I<W1S(&]F(&%L=&5R +M;F%T:6YG"FAE861E<G,@86YD(&)O9&EE<RX@268@=&AE(&)O9&EE<R!C;VYS +M:7-T(&5N=&ER96QY(&]F('IE<F\@8GET97,L"G1H96X@86QL('1H870G<R!N +M965D960@=&\@<F5C;VYS=')U8W0@=&AE(&%R8VAI=F4@:7,@=&\@<F5C;W)D +M('1H90IR96QA=&EV96QY('-M86QL(&AE861E<G,@86YD('-T;W)E(&$@8V]U +M;G0@;V8@96%C:"!C;VYT:6=U;W5S(&)L;V-K"F]F('IE<F]S+B!4:&ES('-I +M;7!L92`F<75O=#MR=6XM;&5N9W1H(&5N8V]D:6YG)G%U;W0[(&ES('9E<GD* +M969F96-T:79E+"!C;VUP<F5S<VEN9R!A('-A;7!L92!A<F-H:79E('=I=&@@ +M82!D;WIE;B!E;G1R:65S(&1O=VX@=&\*:G5S="!A(&9E=R!K:6QO8GET97,L +M(&5V96X@:68@=&AO<V4@96YT<FEE<R!R86YG92!U<"!T;R`Q5$(N(`H\+U`^ +M"CQ0/D)Y('=R:71I;F<@82!C=7-T;VT@22]/(&QA>65R('1H870@:6UP;&5M +M96YT<R!S=6-H(&-O;7!R97-S:6]N+"!W90IC86X@=W)I=&4@=F5R>2!L87)G +M92!E;G1R:65S('1H<F]U9V@@;&EB87)C:&EV92!T:&5N(')E860@=&AE;2!B +M86-K"F%N9"!V97)I9GD@=&AA="!L:6)A<F-H:79E(&-O<G)E8W1L>2!H86YD +M;&5S(&%L;"!O9B!T:&4@8F]U;F1A<GD*8V%S97,N(`H\+U`^"CQ0/D]F(&-O +M=7)S92P@979E;B!S8V%N;FEN9R!O=71P=70@=&\@9&5T97)M:6YE('IE<F\@ +M8FQO8VMS(&-A;B!T86ME"G%U:71E(&$@=VAI;&4L('-O('1H92!L87)G92!T +M87(@=&5S=&5R(&UA:V5S(&]N92!M;W)E(&]P=&EM:7IA=&EO;CH*3&EB87)C +M:&EV92!I<R`F<75O=#MM;W-T;'DF<75O=#L@>F5R;RUC;W!Y+B!7:&5N('EO +M=2!G:79E(&ET(&$@;&%R9V4*8FQO8VL@=&\@=W)I=&4@=&\@86X@96YT<GD@ +M8F]D>2P@:70@=VEL;"!P87-S('!O:6YT97)S('-T<F%I9VAT"G1H<F]U9V@@ +M=&\@=&AE(&]U='!U="!R;W5T:6YE+"!E>&-E<'0@:6X@=&AO<V4@8V%S97,@ +M=VAE<F4@:70@;75S=`IC;W!Y(&1A=&$@=&\@8V]R<F5C=&QY(&)U:6QD(&)L +M;V-K<RX@5&AE(&QA<F=E('1A<B!T97-T97(@=&%K97,*861V86YT86=E(&]F +M('1H:7,@=&\@<75I8VML>2!D971E8W0@=VAE;B!A(&)L;V-K(&)E:6YG('=R +M:71T96X@;W5T(&)Y"G1H92!A<F-H:79E('=R:71E<B!I<R!T:&4@<V%M92!A +M<R!S;VUE(&]F('1H92!D871A('1H870@=V%S(&=I=F5N(&)Y"G1H92!T97-T +M(&%S('1H92!E;G1R>2!B;V1Y+"!A;F0@<VEM:6QA<FQY('=H96X@<F5A9&EN +M9R!T:&4@87)C:&EV90IB86-K+B`*/"]0/@H\4#Y486ME;B!T;V=E=&AE<BP@ +M=&AE<V4@=')I8VMS(&%L;&]W('1H92!L87)G92!T87(@=W)I=&5R('1O('1E +M<W0*9F]R(&ES<W5E<R!S=6-H(&%S('!R;W!E<B!S=&]R86=E(&]F('9E<GD@ +M;&%R9V4@9FEL92!S:7IE<R`H=&%R(&9I;&5S"G-U<'!O<G0@<V5V97)A;"!D +M:69F97)E;G0@=V%Y<R!T;R!S=&]R92!F:6QE('-I>F5S('=H:6-H('1R861E +M(&]F9@IP;W)T86)I;&ET>2!V97)S=7,@<F%N9V4[(&QI8F%R8VAI=F4@=')I +M97,@=&\@=7-E('1H92!M;W-T('!O<G1A8FQE"F]N92!I="!C86X@9F]R(&5A +M8V@@96YT<GDI(&%N9"!I;G1E9V5R(&]V97)F;&]W("A7:6YD;W=S(#,R+6)I +M="`\5%0@0TQ!4U,](G=E<W1E<FXB/F]F9E]T/"]45#X*8G)O:V4@=&AE(&QA +M<F=E('1A<B!T97-T(&%N9"!L960@;&EB87)C:&EV92!T;R!M86ME(&AE879I +M97(@=7-E(&]F"CQ45"!#3$%34STB=V5S=&5R;B(^:6YT-C1?=#PO5%0^(&EN +M=&5R;F%L;'DI(&EN(&$@=&5S="!T:&%T(')U;G,@:6X*=6YD97(@,2\T('-E +M8V]N9"X@"CPO4#X*/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^/$)2 +J/@H\+U`^"CPO0D]$63X*/"](5$U,/J>5>PY`%`"G$@X2`@`````````` +` +end 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 new file mode 100644 index 0000000..876b7e9 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part01.rar.uu @@ -0,0 +1,299 @@ +begin 644 - +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, +M(#0N,"!4<F%N<VET:6]N86PO+T5.(CX*/$A434P^"CQ(14%$/@H)/$U%5$$@ +M2%144"U%455)5CTB0T].5$5.5"U465!%(B!#3TY414Y4/2)T97AT+VAT;6P[ +M(&-H87)S970]=71F+3@B/@H)/%1)5$Q%/CPO5$E43$4^"@D\345402!.04U% +M/2)'14Y%4D%43U(B($-/3E1%3E0](DQI8G)E3V9F:6-E(#,N,R`@*%5N:7@I +M(CX*"3Q-151!($Y!344](D-214%4140B($-/3E1%3E0](C(P,3$P-C(V.S(R +M,C,U,3`P(CX*"3Q-151!($Y!344](D-(04Y'140B($-/3E1%3E0](C(P,3$P +M-C(V.S(R,C4T-3`P(CX*"3Q35%E,12!465!%/2)T97AT+V-S<R(^"@D\(2TM +M"@D)0'!A9V4@>R!M87)G:6XZ(#`N-SEI;B!]"@D)4"![(&UA<F=I;BUB;W1T +M;VTZ(#`N,#AI;B!]"@D)2#$@>R!M87)G:6XM8F]T=&]M.B`P+C`X:6X@?0H) +M"4@Q+G=E<W1E<FX@>R!F;VYT+69A;6EL>3H@(DQI8F5R871I;VX@4V5R:68B +M+"!S97)I9B!]"@D)2#$N8VIK('L@9F]N="UF86UI;'DZ(")":71S=')E86T@ +M5F5R82!386YS(B!]"@D)2#$N8W1L('L@9F]N="UF86UI;'DZ(")&<F5E4V%N +M<R(@?0H)"5!212YC:FL@>R!F;VYT+69A;6EL>3H@(D)I='-T<F5A;2!697)A +M(%-A;G,B+"!M;VYO<W!A8V4@?0H)"4@R('L@;6%R9VEN+6)O='1O;3H@,"XP +M.&EN('T*"0E(,BYC=&P@>R!F;VYT+69A;6EL>3H@(D9R965386YS(B!]"@D) +M5%0N8VIK('L@9F]N="UF86UI;'DZ(")":71S=')E86T@5F5R82!386YS(BP@ +M;6]N;W-P86-E('T*"2TM/@H)/"]35%E,13X*/"](14%$/@H\0D]$62!,04Y' +M/2)E;BU54R(@1$E2/2),5%(B/@H\2#$@0TQ!4U,](G=E<W1E<FXB/DEN=')O +M9'5C=&EO;CPO2#$^"CQ0/DQI8F%R8VAI=F4@:7,@;F]W(&$@9F%I<FQY(&-O +M;7!L97@@<&EE8V4@;V8@<V]F='=A<F4@=&AA="!R=6YS(&]N"F$@;G5M8F5R +M(&]F(&1I9F9E<F5N="!P;&%T9F]R;7,N($$@=&AO<F]U9V@@=&5S="!S=6ET +M92!I<R!E<W-E;G1I86P*8F]T:"!F;W(@=F5R:69Y:6YG(&YE=R!P;W)T<R!A +M;F0@9F]R(&5N<W5R:6YG('1H870@9G5T=7)E(&-H86YG97,*9&]N)W0@8G)E +M86L@97AI<W1I;F<@9G5N8W1I;VYA;&ET>2X@"CPO4#X*/%`^06YY('-I9VYI +M9FEC86YT(&-H86YG92!T;R!L:6)A<F-H:79E+"!I;F-L=61I;F<@;6]S="!B +M=6<@9FEX97,L"G-H;W5L9"!B92!A8V-O;7!A;FEE9"!B>2!N97<@=&5S=',@ +M;W(@8VAA;F=E<R!T;R!E>&ES=&EN9R!T97-T<RX@5&AI<PIA<G1I8VQE(&5X +M<&QA:6YS(&AO=R!T:&4@;&EB87)C:&EV92!T97-T('-U:71E<R!W;W)K(&%N +M9"!H;W<@=&\*97AT96YD('1H96TN(`H\+U`^"CQ(,2!#3$%34STB=V5S=&5R +M;B(^/$$@3D%-13TB0G5I;&1I;F=?86YD7U)U;FYI;F=?=&AE7U1E<W1?4')O +M9W)A;7,B/CPO03X*0G5I;&1I;F<@86YD(%)U;FYI;F<@=&AE(%1E<W0@4')O +M9W)A;7,\+T@Q/@H\4#Y%86-H(&UA:F]R(&-O;7!O;F5N="TM;&EB87)C:&EV +M92P@8G-D=&%R+"!A;F0@8G-D8W!I;RTM:&%S(&$@=&5S=`IP<F]G<F%M('1H +M870@97AE<F-I<V5S('1H92!F=6YC=&EO;F%L:71Y(&]F('1H870@8V]M<&]N +M96YT+B!4:&5S90IT97-T('!R;V=R86US(&%R92!C;VUP:6QE9"!I;B!T:&4@ +M<V%M92!W87D@=&AA="!T:&4@<F5S="!O9B!T:&4*;&EB87)C:&EV92!S=6ET +M92!I<R!C;VUP:6QE9"X@"CPO4#X*/%`^5&\@<G5N('1H92!T97-T('!R;V=R +M86US+"!Y;W4@;F5E9"!T;R!G:79E('1H96T@='=O('!I96-E<R!O9@II;F9O +M<FUA=&EO;CH@"CPO4#X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T +M=&]M.B`P:6XB/E1H92!F=6QL('!A=&@@=&\@=&AE(&1I<F5C=&]R>0H):&]L +M9&EN9R!T:&4@)G%U;W0[<F5F97)E;F-E(&9I;&5S)G%U;W0[(`H)/"]0/@H) +M/$Q)/CQ0/E1H92!F=6QL('!A=&@@=&\@=&AE(&5X96-U=&%B;&4@<')O9W)A +M;2!B96EN9R!T97-T960@*&YO=`H)87!P;&EC86)L92!T;R!L:6)A<F-H:79E +M7W1E<W0@<VEN8V4@;&EB87)C:&EV92!I<R!C;VUP:6QE9"!I;G1O('1H90H) +M=&5S="!P<F]G<F%M*2`*"3PO4#X*/"]53#X*/%`^5&AE(')E9F5R96YC92!F +M:6QE<R!A<F4@82!C;VQL96-T:6]N(&]F(&MN;W=N(&EN<'5T<R!T:&%T(&%R +M92!U<V5D"FEN('1H92!T97-T('!R;V-E<W,N(%1H97D@87)E(&%L;"!S=&]R +M960@:6X@=75E;F-O9&5D(&9O<FUA="!I;B!F:6QE<PIW:71H(&$@)G%U;W0[ +M+G5U)G%U;W0[(&5X=&5N<VEO;BX@5&AE('1E<W0@<')O9W)A;7,@;&]O:R!I +M;B!A(&9E=PIS=&%N9&%R9"!L;V-A=&EO;G,[(&EF(&YO;F4@;V8@=&AO<V4@ +M=V]R:RP@>6]U)VQL(&YE960@=&\@<W!E8VEF>2!T:&4*/%14($-,05-3/2)W +M97-T97)N(CXM<CPO5%0^(&]P=&EO;B!W:71H('1H92!F=6QL('!A=&AN86UE +M('1O('1H90IA<'!R;W!R:6%T92!D:7)E8W1O<GDN(`H\+U`^"CQ0/E1H92!B +M<V1T87)?=&5S="!A;F0@8G-D8W!I;U]T97-T('!R;V=R86US(')U;B!B<V1T +M87(@;W(@8G-D8W!I;PIR97!E871E9&QY.R!T:&5Y(&YE960@=&AE(&9U;&P@ +M<&%T:"!T;R!T:&4@87!P<F]P<FEA=&4@97AE8W5T86)L92X*06QT:&]U9V@@ +M8G-D=&%R7W1E<W0@86YD(&)S9&-P:6]?=&5S="!A<F4@<W!E8VEF:6-A;&QY +M(&EN=&5N9&5D(&9O<@IT97-T:6YG(&)S9'1A<B!A;F0@8G-D8W!I;RP@=&AE +M>2!S:&]U;&0@8F4@=7-A8FQE(&9O<B!T97-T:6YG(&]T:&5R"G1A<B!A;F0@ +M8W!I;R!P<F]G<F%M<RX@26X@9F%C="P@<G5N;FEN9R!T:&5S92!T97-T('!R +M;V=R86US(&%G86EN<W0*;W1H97(@=&%R(&EM<&QE;65N=&%T:6]N<R!I<R!A +M(&=O;V0@=V%Y('1O('9E<FEF>2!T:&%T('1H92!T97-T"G!R;V=R86US('1H +M96US96QV97,@87)E('=O<FMI;F<@8V]R<F5C=&QY+B`*/"]0/@H\4#Y7:&5N +M(')U;BP@=&AE('1E<W0@<')O9W)A;7,@;W5T<'5T(&$@<')O9W)E<W,@;65S +M<V%G92!F;W(@96%C:`IT97-T+"!A;B!E<G)O<B!M97-S86=E(&9O<B!E86-H +M(&9A:6QE9"!A<W-E<G1I;VXL(&%N9"!A(&9I;F%L"G-U;6UA<GDZ(`H\+U`^ +M"CQ04D4@0TQ!4U,](G=E<W1E<FXB/B9N8G-P.U)U;FYI;F<@=&5S=',@:6XZ +M("]T;7`O8G-D=&%R7W1E<W0N,C`P.2TP,BTQ-U0R,2XS,"XT,"TP,#`*)FYB +M<W`[4F5F97)E;F-E(&9I;&5S('=I;&P@8F4@<F5A9"!F<F]M.B`F;F)S<#L@ +M)FYB<W`[+VAO;64O=&EM+VQI8F%R8VAI=F4O=')U;FLO=&%R+W1E<W0*)FYB +M<W`[4G5N;FEN9R!T97-T<R!O;CH@+VAO;64O=&EM+VQI8F%R8VAI=F4O=')U +M;FLO8G-D=&%R"B9N8G-P.T5X97)C:7-I;F<Z(&)S9'1A<B`R+C8N.3`P82`M +M(&QI8F%R8VAI=F4@,BXV+CDP,&$*)FYB<W`[,#H@=&5S=%\P"B9N8G-P.S$Z +M('1E<W1?8F%S:6,*)FYB<W`[,CH@=&5S=%]C;W!Y"B9N8G-P.R!T97-T7V-O +M<'DN8SHQ-S$Z($%S<V5R=&EO;B!F86EL960Z($EN=',@;F]T(&5Q=6%L"B9N +M8G-P.R`F;F)S<#L@)FYB<W`[(#`],`HF;F)S<#L@)FYB<W`[("9N8G-P.R!L +M<W1A="AN86UE,B`K(#,L("9A;7`[<W0R*3TM,0HF;F)S<#L@=&5S=%]C;W!Y +M+F,Z,3<Q.B!&86EL960@,C8T('1I;65S"B9N8G-P.S,Z('1E<W1?9V5T9&%T +M90HF;F)S<#LT.B!T97-T7VAE;'`*)FYB<W`[("9N8G-P.R`N+BX@;6]R92!O +M=71P=70@;VUI='1E9"`N+BX*)FYB<W`[,2!O9B`Q,R!T97-T<R!R97!O<G1E +M9"!F86EL=7)E<PHF;F)S<#L@5&]T86P@;V8@,3`U,#DW(&%S<V5R=&EO;G,@ +M8VAE8VME9"X*)FYB<W`[(%1O=&%L(&]F(#(V-"!A<W-E<G1I;VYS(&9A:6QE +M9"X*)FYB<W`[(%1O=&%L(&]F(#`@87-S97)T:6]N<R!S:VEP<&5D+CPO4%)% +M/CQ0/@I4:&4@:&5A9&5R(&QI;F5S(&AE<F4@<F5C;W)D.B`*/"]0/@H\54P^ +M"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^=&AE(&1I<F5C +M=&]R>2!T:&%T('=I;&P@8F4@=7-E9`H)9F]R('-C<F%T8V@@9FEL97,@9'5R +M:6YG('1H92!T97-T+B!)9B!A('1E<W0@9F%I;',L('1H92!S8W)A=&-H"@EF +M:6QE<R!W:6QL(&)E(&QE9G0@8F5H:6YD(&EN('1H:7,@9&ER96-T;W)Y(&9O +M<B!F=7)T:&5R(&1E8G5G9VEN9RX@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA +M<F=I;BUB;W1T;VTZ(#!I;B(^5&AE(&1I<F5C=&]R>2!F<F]M('=H:6-H('1H +M90H)<F5F97)E;F-E(&9I;&5S('=I;&P@8F4@<F5A9"X@"@D\+U`^"@D\3$D^ +M/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^1F]R(&)S9'1A<E]T97-T +M(&%N9"!B<V1C<&EO7W1E<W0L"@ET:&4@9G5L;"!P871H('1O('1H92!E>&5C +M=71A8FQE(&)E:6YG(&5X97)C:7-E9"X@"@D\+U`^"@D\3$D^/%`^0F%S:6,@ +M=F5R<VEO;B!I;F9O<FUA=&EO;B!A8F]U="!T:&4@=&%R9V5T+B`*"3PO4#X* +M/"]53#X*/%`^26X@=&AI<R!C87-E+"!T:&4@=')A:6QE<B!I;F1I8V%T97,@ +M=&AA="!O;F4@=&5S="!F86EL960N($%S('EO=0IC86X@<V5E+"!T:&5R92!W +M87,@82!S:6YG;&4@87-S97)T:6]N(&EN('1H92!C;V1E('1H870@9F%I;&5D +M(#(V-`IT:6UE<RX@5&AE(&9I<G-T('1I;64@:70@9F%I;&5D+"!I="!W87,@ +M8F5C875S92!A;B`\5%0@0TQ!4U,](G=E<W1E<FXB/FQS=&%T*"D\+U14/@IC +M86QL(')E='5R;F5D("TQ(&EN<W1E860@;V8@=&AE('IE<F\@=&AA="!W87,@ +M97AP96-T960N(`H\+U`^"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB +M0F%S:6-?=&5S=%]T97)M:6YO;&]G>2(^/"]!/D)A<VEC('1E<W0*=&5R;6EN +M;VQO9WD\+T@Q/@H\4#Y%86-H('1E<W0@<')O9W)A;2!C;VYS:7-T<R!O9B!A +M(&YU;6)E<B!O9B`F<75O=#MT97-T<R9Q=6]T.RX@16%C:`IT97-T(&AA<R!A +M(&YA;64@86YD(&ES(&EM<&QE;65N=&5D(&EN(&$@0R!S;W5R8V4@9FEL92!W +M:71H('1H92!S86UE"FYA;64@87,@=&AE('1E<W0N(%1E<W1S('=O<FL@8GD@ +M<&5R9F]R;6EN9R!S;VUE('-E<FEE<R!O9B!O<&5R871I;VYS"F%N9"!M86MI +M;F<@)G%U;W0[87-S97)T:6]N<R9Q=6]T.R!A8F]U="!T:&4@<F5S=6QT<RX@ +M1F]R(&5X86UP;&4L"FUA;GD@;V8@=&AE(&QI8F%R8VAI=F4@=&5S=',@;W!E +M;B!A;F0@<F5A9"!A;B!A<F-H:79E(&%N9"!A<W-E<G0@=&AA=`IP87)T:6-U +M;&%R(&]P97)A=&EO;G,@<W5C8V5E9&5D(&]R(&9A:6QE9"X@*%EE<RP@:70@ +M:7,@;V9T96X*:6UP;W)T86YT('1O('9E<FEF>2!T:&%T(&EL;&5G86P@<F5Q +M=65S=',@9V5N97)A=&4@87!P<F]P<FEA=&4*97)R;W)S+BD@"CPO4#X*/%`^ +M2&5R92!I<R!A('-O;65W:&%T(&5D:71E9"!E>&-E<G!T(&9R;VT@/%14($-, +M05-3/2)W97-T97)N(CYT97-T7V-O;7!A=%]Z:7`\+U14/BP*=VAI8V@@=F5R +M:69I97,@8V]M<&%T:6)I;&ET>2!W:71H('9A<FEO=7,@6DE0(&9O<FUA="!A +M<F-H:79E<SH@"CPO4#X*/%!212!#3$%34STB=V5S=&5R;B(^)FYB<W`[($1% +M1DE.15]415-4*'1E<W1?8V]M<&%T7WII<"D*)FYB<W`[('L*)FYB<W`[("9N +M8G-P.R`O*B`N+BX@<V5T=7`@;VUI='1E9"`N+BX@*B\*)FYB<W`[("9N8G-P +M.R!A<W-E<G0H*&$@/2!A<F-H:79E7W)E861?;F5W*"DI("$]($Y53$PI.PHF +M;F)S<#L@)FYB<W`[(&%S<V5R=$5Q=6%L26YT*$%20TA)5D5?3TLL"B9N8G-P +M.R`F;F)S<#L@)FYB<W`[("9N8G-P.R!A<F-H:79E7W)E861?<W5P<&]R=%]C +M;VUP<F5S<VEO;E]A;&PH82DI.PHF;F)S<#L@)FYB<W`[(&%S<V5R=$5Q=6%L +M26YT*$%20TA)5D5?3TLL"B9N8G-P.R`F;F)S<#L@)FYB<W`[("9N8G-P.R!A +M<F-H:79E7W)E861?<W5P<&]R=%]F;W)M871?86QL*&$I*3L*)FYB<W`[("9N +M8G-P.R!E>'1R86-T7W)E9F5R96YC95]F:6QE*&YA;64I.PHF;F)S<#L@)FYB +M<W`[(&%S<V5R=$5Q=6%L26YT*$%20TA)5D5?3TLL"B9N8G-P.R`F;F)S<#L@ +M)FYB<W`[("9N8G-P.R!A<F-H:79E7W)E861?;W!E;E]F:6QE;F%M92AA+"!N +M86UE+"`Q,#(T,"DI.PHF;F)S<#L@)FYB<W`[("9N8G-P.R\J(%)E860@9FER +M<W0@96YT<GDN("HO"B9N8G-P.R`F;F)S<#L@)FYB<W`[87-S97)T17%U86Q) +M;G0H05)#2$E615]/2RP@87)C:&EV95]R96%D7VYE>'1?:&5A9&5R*&$L("9A +M;7`[864I*3L*)FYB<W`[("9N8G-P.R`F;F)S<#MA<W-E<G1%<75A;%-T<FEN +M9R@F<75O=#M-151!+4E.1B]-04Y)1D535"Y-1B9Q=6]T.RP@87)C:&EV95]E +M;G1R>5]P871H;F%M92AA92DI.SPO4%)%/CQ0/@I4:&4@/%14($-,05-3/2)W +M97-T97)N(CYA<W-E<G186%A8/"]45#X@;6%C<F]S(&-H96-K('1H870@=&AE +M:7(*87)G=6UE;G1S('-A=&ES9GD@8V5R=&%I;B!C;VYD:71I;VYS+B!)9B!T +M:&4@87-S97)T:6]N(&9A:6QS+2UF;W(*97AA;7!L92P@:68@=&AE(&YA;64@ +M;V8@=&AE(&9I<G-T(&5N=')Y(&ES(&YO=`HF<75O=#M-151!+4E.1B]-04Y) +M1D535"Y-1B9Q=6]T.RTM=&AE(&UA8W)O('=I;&P@<F5P;W)T('1H92!P<F]B +M;&5M+B`*/"]0/@H\4#Y4:&5R92!A<F4@='=O(&EM<&]R=&%N="!D:69F97)E +M;F-E<R!B971W965N('1H92`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=%A8 +M6#PO5%0^"FUA8W)O<R!U<V5D(&EN('1H97-E('1E<W0@:&%R;F5S<V5S(&%N +M9"!T:&4@25-/($,@<W1A;F1A<F0@/%14($-,05-3/2)W97-T97)N(CYA<W-E +M<G0\+U14/@IM86-R;SH@1FER<W0L('1H97-E(&%S<V5R="!M86-R;W,@9&]N +M)W0@97AI="!O;B!F86EL=7)E+B!">2!D969A=6QT+`IT:&5Y(')E<&]R="!T +M:&4@9F%I;'5R92!A;F0@<F5T=7)N('IE<F\@*'1H92!#(&YO=&EO;B!O9B`F +M<75O=#MF86QS929Q=6]T.RDN"E-E8V]N9"P@=&AE<V4@;6%C<F]S(&EN8VQU +M9&4@=F%R:6%N=',@=&AA="!P97)F;W)M(&$@=F%R:65T>2!O9@IS<&5C:69I +M8R!T97-T<RX@5&AE<V4@<W!E8VEF:6,@=F5R<VEO;G,@*'-U8V@@87,@/%14 +M($-,05-3/2)W97-T97)N(CYA<W-E<G1%<75A;$EN=#PO5%0^"F%N9"`\5%0@ +M0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$5Q=6%L4W1R:6YG/"]45#X@:6X@=&AE +M(&5X86UP;&4@86)O=F4I"F=E;F5R871E(&1E=&%I;&5D(&QO9R!M97-S86=E +M<R!O;B!F86EL=7)E+B!);B!P87)T:6-U;&%R+"!T:&5Y('!R:6YT"G1H92!V +M86QU92!O9B!B;W1H(&%R9W5M96YT<SL@=&AI<R!G<F5A=&QY('-I;7!L:69I +M97,@9&EA9VYO<VEN9PIF86EL=7)E<RX@"CPO4#X*/$@Q($-,05-3/2)W97-T +M97)N(CX\02!.04U%/2),:69E7V-Y8VQE7V]F7V%?=&5S="(^/"]!/DQI9F4@ +M8WEC;&4@;V8*82!T97-T/"](,3X*/%`^16%C:"!T97-T(')E<VED97,@:6X@ +M82!#('-O=7)C92!F:6QE('=I=&@@=&AE('-A;64@;F%M92!A<R!T:&4*=&5S +M="X@5&AE('1E<W0@:71S96QF(&ES(&$@9G5N8W1I;VX@=&AA="!T86ME<R!N +M;R!A<F=U;65N=',N(%1H92!T97-T"FES(&1E8VQA<F5D('5S:6YG('1H92`\ +M5%0@0TQ!4U,](G=E<W1E<FXB/D1%1DE.15]415-4*"D\+U14/B!M86-R;RX* +M5&AI<R!M86-R;R!S97)V97,@8F]T:"!T;R!E;G-U<F4@=&AA="!T:&4@=&5S +M="!I<R!D96-L87)E9"!C;W)R96-T;'D*86YD(&%S(&$@;&%B96P@=&AA="!C +M86X@8F4@=7-E9"!T;R!L;V-A=&4@86QL(&1E9FEN960@=&5S=',N("A/;@I5 +M;FEX+6QI:V4@<&QA=&9O<FUS+"!A('-I;7!L92`\5%0@0TQ!4U,](G=E<W1E +M<FXB/F=R97`\+U14/B!O<&5R871I;VX*:7,@=7-E9"!T;R!C;VYS=')U8W0@ +M82!F:6QE(&-A;&QE9"`\5%0@0TQ!4U,](G=E<W1E<FXB/FQI<W0N:#PO5%0^ +M"G1H870@:&]L9',@=&AE(&YA;65S(&]F(&%L;"!O9B!T:&4@=&5S=',N(%1H +M:7,@;6%K97,@:70@=F5R>2!E87-Y('1O"F%D9"!N97<@=&5S=',N*2`*/"]0 +M/@H\4#Y4:&4@=&5S="!H87)N97-S(&1E=&5R;6EN97,@=VAI8V@@=&5S=',@ +M=&\@<G5N+B!)="!G;V5S('1H<F]U9V@*=&AE(&9O;&QO=VEN9R!S=&5P<R!W +M:&5N979E<B!I="!R=6YS(&$@=&5S=#H@"CPO4#X*/%5,/@H)/$Q)/CQ0(%-4 +M64Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/CQ35%))2T4^0VQO<V5S(&%L;"!F +M:6QE"@ED97-C<FEP=&]R<R!E>&-E<'0@9F]R('-T9&EN+"!S=&1O=70L(&%N +M9"!S=&1E<G(N/"]35%))2T4^("A4:&ES"@ES8W)E=W,@=7`@;&EB8R!O;B!S +M;VUE('!L871F;W)M<R!S;R!H87,@8F5E;B!R96UO=F5D+BD@"@D\+U`^"@D\ +M3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^0W)E871E<R!A('1E +M;7!O<F%R>2!D:7)E8W1O<GD*"7=H;W-E(&YA;64@;6%T8VAE<R!T:&4@;F%M +M92!O9B!T:&4@=&5S="!A;F0@<W=I=&-H97,@:6YT;R!T:&%T"@ED:7)E8W1O +M<GDN(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB +M/E)E<V5T<R!T:&4@8W5R<F5N="!L;V-A;&4N(`H)/"]0/@H)/$Q)/CQ0(%-4 +M64Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D-A;&QS('1H92!T97-T(&9U;F-T +M:6]N+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN +M(CY)9B!T:&5R92!W97)E(&YO(&%S<V5R=&EO;@H)9F%I;'5R97,L(&ET('=I +M;&P@<F5M;W9E('1H92!T96UP;W)A<GD@9&ER96-T;W)Y+B`H268@/%14($-, +M05-3/2)W97-T97)N(CXM:SPO5%0^"@EI<R!S<&5C:69I960L('1E;7!O<F%R +M>2!D:7)E8W1O<GD@87)E(&QE9G0@979E;B!I9B!T:&4@=&5S=`H)<W5C8V5E +M9',N*2`*"3PO4#X*"3Q,23X\4#X\4U1224M%/DEF('1H97)E(&%R92!A;GD@ +M;W!E;B!F:6QE(&1E<V-R:7!T;W)S(&]T:&5R('1H86X*"7-T9&EN+"!S=&1O +M=70L(&%N9"!S=&1E<G(L(&ET(')E<&]R=',@86X@97)R;W(N/"]35%))2T4^ +M(%1E<W1S"@ES:&]U;&0@;F5V97(@;&5A=F4@;W!E;B!F:6QE(&1E<V-R:7!T +M;W)S+B`*"3PO4#X*/"]53#X*/%`^26X@<&%R=&EC=6QA<BP@=&5S=',@8V%N +M('-A9F5L>2!A<W-U;64@=&AA=#H@"CPO4#X*/%5,/@H)/$Q)/CQ0(%-464Q% +M/2)M87)G:6XM8F]T=&]M.B`P:6XB/E1H92!C=7)R96YT(&1I<F5C=&]R>2!I +M<R!E;7!T>0H)=VAE;B!T:&4@=&5S="!S=&%R=',N(`H)/"]0/@H)/$Q)/CQ0 +M(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D%N>2!F:6QE<R!C<F5A=&5D +M(&EN('1H92!C=7)R96YT"@ED:7)E8W1O<GD@=VEL;"!B92!R96UO=F5D(&9O +M<B!Y;W4N(`H)/"]0/@H)/$Q)/CQ0/E1H92!C=7)R96YT(&QO8V%L92!I<R!T +M:&4@9&5F875L="`F<75O=#M#)G%U;W0[(&QO8V%L92X@"@D\+U`^"CPO54P^ +M"CQ0/E1E<W1S('-H;W5L9#H@"CPO4#X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M +M87)G:6XM8F]T=&]M.B`P:6XB/E)E;&5A<V4@86QL(&UE;6]R>2X@5&AE('1E +M<W0*"7-U:71E<R!A<F4@;V-C87-I;VYA;&QY(')U;B!U;F1E<B!A(&UE;6]R +M>2!D96)U9V=E<B!T;R!D971E8W0@;&5A:W,*"6EN('1H92!L:6)A<F-H:79E +M(&QI8G)A<GDN(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M +M.B`P:6XB/D-L;W-E(&%L;"!O<&5N960@9FEL97,N(%1H:7,@:&5L<',*"71O +M(&-A=&-H(&9I;&4@9&5S8W)I<'1O<B!L96%K<R!I;B!L:6)A<F-H:79E+B`* +M"3PO4#X*"3Q,23X\4#Y.;W0@<F5A9"!O<B!W<FET92!A8G-O;'5T92!P871H +M<RX@"@D\+U`^"CPO54P^"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB +M4&QA=&9O<FU?=F%R:6%T:6]N(CX\+T$^4&QA=&9O<FT*=F%R:6%T:6]N/"]( +M,3X*/%`^4V]M92!T97-T<R!A<F4@<W!E8VEF:6,@=&\@82!P87)T:6-U;&%R +M('!L871F;W)M+B!3=6-H('1E<W1S"G-H;W5L9"!U<V4@87!P<F]P<FEA=&4@ +M<&QA=&9O<FTM<W!E8VEF:6,@;6%C<F]S(&%S(&9O;&QO=W,Z(`H\+U`^"CQ0 +M4D4@0TQ!4U,](G=E<W1E<FXB/B-I9B!?7U!,051&3U)-"BXN+B!V87)I;W5S +M(&AE;'!E<B!F=6YC=&EO;G,@+BXN"B-E;F1I9@I$149)3D5?5$535"AF;V]? +M<&QA=&9O<FTI"GL*(VEF(%]?4$Q!5$9/4DT*)FYB<W`[("9N8G-P.RXN+B!T +M97-T<R!A<R!U<W5A;"`N+BXN"B-E;'-E"B9N8G-P.R`F;F)S<#MS:VEP<&EN +M9R@F<75O=#MP;&%T9F]R;2US<&5C:69I8R!T97-T<R9Q=6]T.RD["B-E;F1I +M9@I]/"]04D4^/%`^"DEN('!A<G1I8W5L87(L(&YO=&4@=&AA="!A;&P@=&5S +M=',@87)E(&-O;7!I;&5D(&%N9"!R=6X@;VX@86QL"G!L871F;W)M<RX@"CPO +M4#X*/%`^36]S="!T97-T<R!A<F4@;F]T('!L871F;W)M+7-P96-I9FEC(&%N +M9"!W:6QL('1H=7,@96YD('5P(')U;FYI;F<*;VX@;6%N>2!D:69F97)E;G0@ +M<&QA=&9O<FUS+B!);B!O<F1E<B!T;R!S:6UP;&EF>2!W<FET:6YG('-U8V@@ +M=&5S=',L"G1R>2!T;R!U<V4@<&QA=&9O<FTM:6YD97!E;F1E;G0@8V]D:6YG +M.B`*/"]0/@H\54P^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I +M;B(^57-E('-T9&EO(#Q45"!#3$%34STB=V5S=&5R;B(^9F]P96XH*3PO5%0^ +M+`H)/%14($-,05-3/2)W97-T97)N(CYF=W)I=&4H*3PO5%0^+"`\5%0@0TQ! +M4U,](G=E<W1E<FXB/F9R96%D*"D\+U14/BP*"6%N9"`\5%0@0TQ!4U,](G=E +M<W1E<FXB/F9C;&]S92@I/"]45#X@=&\@86-C97-S(&9I;&5S('=H96YE=F5R +M"@EF96%S:6)L92X@"@D\+U`^"@D\3$D^/%`^3&]O:R!T:')O=6=H('1H92`\ +M5%0@0TQ!4U,](G=E<W1E<FXB/G1E<W0N:#PO5%0^(&AE861E<B!T;PH)<V5E +M(&EF('1H97)E(&%R92!A<W-E<G18>'@H*2!F=6YC=&EO;G,@=&AA="!Y;W4@ +M8V%N('5S92X@5&AE<F4G<R!A"@EL:7-T(&]F('1H92!M;W)E('!O<'5L87(@ +M;VYE<R!B96QO=RP@8G5T(&YE=R!O;F5S(&%R92!O9G1E;B!A9&1E9"X@"@D\ +M+U`^"CPO54P^"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB07-S97)T +M7VUA8W)O<R(^/"]!/D%S<V5R="!M86-R;W,\+T@Q/@H\4#Y4:&4@9F]L;&]W +M:6YG(&ES(&$@;F5C97-S87)I;'D@:6YC;VUP;&5T92!L:7-T(&]F(&%S<V5R +M="!F=6YC=&EO;G,*879A:6QA8FQE('1O('1E<W1S.B`*/"]0/@H\54P^"@D\ +M3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^0F%S:6,@97%U86QI +M='DZ(#Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T17%U86Q);G0\+U14/BP* +M"3Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T17%U86Q3=')I;F<\+U14/BP@ +M/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1%<75A;$UE;3PO5%0^"@D)/"]0 +M/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D9I;&4@8W)E +M871I;VXZ(#Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T36%K949I;&4\+U14 +M/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T36%K95-Y;6QI;FL\+U14 +M/BP@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1-86ME2&%R9&QI;FL\+U14 +M/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T36%K941I<CPO5%0^(`H) +M/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D9I;&4@ +M=&5S=',Z(#Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T27-296<\+U14/BP* +M"3Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T27-$:7(\+U14/BP@/%14($-, +M05-3/2)W97-T97)N(CYA<W-E<G1)<U-Y;6QI;FL\+U14/BP*"3Q45"!#3$%3 +M4STB=V5S=&5R;B(^87-S97)T1FEL95-I>F4\+U14/BP@/%14($-,05-3/2)W +M97-T97)N(CYA<W-E<G1&:6QE3FQI;FMS/"]45#XL"@D\5%0@0TQ!4U,](G=E +M<W1E<FXB/F%S<V5R=$9I;&5-=&EM93PO5%0^(`H)/"]0/@H)/$Q)/CQ0/D9I +M;&4@8V]N=&5N=',Z(#Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T1FEL945M +M<'1Y/"]45#XL"@D\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$9I;&5.;VY% +M;7!T>3PO5%0^+"`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$9I;&5#;VYT +M96YT<SPO5%0^+`H)/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1497AT1FEL +M94-O;G1E;G1S/"]45#X@"@D\+U`^"CPO54P^"CQ(,2!#3$%34STB=V5S=&5R +M;B(^/$$@3D%-13TB4F5F97)E;F-E7T9I;&5S(CX\+T$^4F5F97)E;F-E($9I +M;&5S/"](,3X*/%`^36%N>2!T97-T<R!R97%U:7)E(')E861I;F<@82!P<F4M +M8V]N<W1R=6-T960@<F5F97)E;F-E(&9I;&4N(%-U8V@*9FEL97,@87)E('-T +M;W)E9"!W:71H('1H92!S;W5R8V4@8V]D92!F;W(@=&AE(&%S<V]C:6%T960@ +M=&5S="!S=6ET92X*4F5F97)E;F-E(&9I;&5S(&%R92!N86UE9"!A8V-O<F1I +M;F<@=&\@=&AE('1E<W0@86YD(&UU<W0@8F4@=75E;F-O9&5D"G1O(&)E(&-H +M96-K960@:6YT;R!S;W5R8V4@8V]N=')O;"X@"CPO4#X*/%`^1F]R(&5X86UP +M;&4L(&EF('EO=2!N965D(&$@<F5F97)E;F-E('1A<B!A<F-H:79E('1O('5S +M92!W:71H"CQ45"!#3$%34STB=V5S=&5R;B(^=&5S=%]F;V\\+U14/BP@=&AE +M(&9I;&4@<VAO=6QD(&)E(&YA;65D"CQ45"!#3$%34STB=V5S=&5R;B(^=&5S +M=%]F;V\N=&%R/"]45#X@86YD('-T;W)E9"!I;B!S;W5R8V4@8V]N=')O;"!A +M<PH\5%0@0TQ!4U,](G=E<W1E<FXB/G1E<W1?9F]O+G1A<BYU=3PO5%0^+B`* +M/"]0/@H\4#Y7:71H:6X@=&AE('1E<W0@8V]D92P@>6]U(&-A;B!R96-O=F5R +M('1H92!R969E<F5N8V4@9FEL92!W:71H.B`*/"]0/@H\4%)%($-,05-3/2)W +M97-T97)N(B!35%E,13TB;6%R9VEN+6)O='1O;3H@,"XR:6XB/B9N8G-P.R`F +M;F)S<#L@97AT<F%C=%]R969E<F5N8V5?9FEL92@F<75O=#MT97-T7V9O;RYT +M87(F<75O=#LI.SPO4%)%/CQ0/@I4:&4@/%14($-,05-3/2)W97-T97)N(CYE +M>'1R86-T7W)E9F5R96YC95]F:6QE*"D\+U14/B!F=6YC=&EO;B!W:6QL"G5U +M9&5C;V1E('1H92!R97%U97-T960@9FEL92!A;F0@<'5T('1H92!R97-U;'0@ +M:6X@=&AE(&-U<G)E;G0*9&ER96-T;W)Y+B`*/"]0/@H\4#Y,;V]K(&%T(#Q4 +M5"!#3$%34STB=V5S=&5R;B(^=&5S=%]R96%D7V9O<FUA=%]C<&EO7V)I;E]B +M92YC/"]45#X*9F]R(&$@<VEM<&QE(&5X86UP;&4@;V8@=&AI<R!U<V%G92X@ +M"CPO4#X*/%`^02!F97<@;V8@=&AE(&]L9&5R('1E<W1S('-T;W)E(')E9F5R +M96YC92!D871A('=I=&AI;B!T:&4@<V]U<F-E"F-O9&4@87,@82!H97@M96YC +M;V1E9"!A<G)A>2!O9B!C:&%R86-T97)S+B!4:&ES('=A<R!C;VUM;VX@8F5F +M;W)E"CQ45"!#3$%34STB=V5S=&5R;B(^97AT<F%C=%]R969E<F5N8V5?9FEL +M92@I/"]45#X@=V%S(&%D9&5D(&%N9"!I<PIN;W0@<F5C;VUM96YD960@9F]R +M(&YE=R!C;V1E+B`*/"]0/@H\2#$@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344] +M(D1O<U]A;F1?1&]N=',B/CPO03Y$;W,@86YD($1O;G1S/"](,3X*/%5,/@H) +M/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D1/('5S92!A<W-E +M<G1S(&QI8F5R86QL>2X@270G<PH)8V]M;6]N('1O(&AA=F4@86X@87-S97)T +M(&]N(&%L;6]S="!E=F5R>2!L:6YE+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB +M;6%R9VEN+6)O='1O;3H@,&EN(CY$3R!U<V4@87-S97)T17%U86Q);G0L"@EA +E<W-E<G1%<75A;%-T<FEN9RS2*'L/0!0`Z@D750`````````````` +` +end 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 new file mode 100644 index 0000000..97e826e --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part02.rar.uu @@ -0,0 +1,299 @@ +begin 644 - +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 +M9"!O9B!P;&%I;@H)87-S97)T*"D[('1H92!S<&5C:6%L:7IE9"!F;W)M<R!G +M:79E(&$@;&]T(&UO<F4@:6YF;W)M871I;VX@;VX@80H)9F%I;'5R92X@"@D\ +M+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^1$\@=&5S +M="!Y;W5R('1E<W1S.R!E>'!E<FEM96YT(&)Y"@EC:&%N9VEN9R!A('!I96-E +M(&]F(&-O9&4@86YD(&UA:V4@<W5R92!Y;W5R('1E<W0@9F%I;',N($EF('EO +M=2!T:&EN:PH)>6]U)W9E(&9O=6YD(&$@8G5G+"!W92!R96-O;6UE;F0@=W)I +M=&EN9R!T:&4@=&5S="!F:7)S="P@;6%K92!S=7)E"@ET:&4@=&5S="!F86EL +M<RP@=&AE;B!F:7AI;F<@=&AE(&)U9RX@"@D\+U`^"@D\3$D^/%`@4U193$4] +M(FUA<F=I;BUB;W1T;VTZ(#!I;B(^1$\@<G5N(&%L;"!O9B!T:&4@=&5S=',@ +M8F5F;W)E"@ES=6)M:71T:6YG(&$@8VAA;F=E+B!$97!E;F1I;F<@;VX@>6]U +M<B!B=6EL9"!E;G9I<F]N;65N="P@/%14($-,05-3/2)W97-T97)N(CYM86ME +M"@ET97-T/"]45#X@;W(@/%14($-,05-3/2)W97-T97)N(CYM86ME(&-H96-K +M/"]45#X@=VEL;"!U<W5A;&QY(')U;@H)86QL(&]F('1H92!T97-T<RX@"@D\ +M+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^1$].)U0@ +M<F5L>2!O;B`\5%0@0TQ!4U,](G=E<W1E<FXB/DA!5D5?/"]45#X*"6UA8W)O +M<R!F<F]M(&-O;F9I9RYH+B`H268@=&AE('1E<W1S('5S92!T:&4@<V%M92`\ +M5%0@0TQ!4U,](G=E<W1E<FXB/DA!5D5?/"]45#X*"6UA8W)O<R!A<R!T:&4@ +M8V]D92!B96EN9R!T97-T960@=&AE;B!C;VYF:6=U<F%T:6]N('!R;V)L96US +M('=I;&P@8F4*"6-O=F5R960@=7`N*2`*"3PO4#X*"3Q,23X\4"!35%E,13TB +M;6%R9VEN+6)O='1O;3H@,&EN(CY$3R!U<V4@<G5N=&EM92!T97-T<R!F;W(@ +M<&QA=&9O<FT*"69E871U<F5S+B!&;W(@97AA;7!L92P@=&AE($%#3"!T97-T +M<R!T<GD@=&\@<V5T(&%N($%#3"!O;B!A(&9I;&4@86YD"@ER96%D(&ET(&)A +M8VL@=&\@9&5T97)M:6YE(&EF($%#3"!S=7!P;W)T(&ES(&%V86EL86)L92P@ +M=&AE;B!T:&5Y"@EE>&5R8VES92!T:&4@;&EB87)C:&EV92!!0TP@:&%N9&QI +M;F<N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB +M/D1/(&QO;VL@870@97AI<W1I;F<@=&5S=',N($]F=&5N+`H)82!B=6<@8V%N +M(&)E('1E<W1E9"!B>2!A9&1I;F<@:G5S="!A(&-O=7!L92!O9B!A<W-E<G1S +M('1O(&%N"@EE>&ES=&EN9R!T97-T(&EN<W1E860@;V8@=W)I=&EN9R!A(&YE +M=R!O;F4N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P +M:6XB/D1/(&EM<')O=F4@97AI<W1I;F<@=&5S=',N($EN"@EP87)T:6-U;&%R +M+"!I9B!Y;W4@<V5E(&$@=&5S="!F86EL=7)E('1H870@:7,@:&%R9"!T;R!U +M;F1E<G-T86YD+`H)8V]N<VED97(@861D:6YG(&$@9F%I;'5R92@I(&UE<W-A +M9V4@;W(@8V]M;65N=',@<V\@=&AE(&YE>'0@<&5R<V]N"@EW:6QL(&AA=F4@ +M86X@96%S:65R('1I;64N(`H)/"]0/@H)/$Q)/CQ0/D1/(&%S:R!O;B!T:&4@ +M;6%I;&EN9R!L:7-T<R!I9B!Y;W4@:&%V92!Q=65S=&EO;G,N(%-O;64@=&5S +M=',*"6%R92!B971T97(@=W)I='1E;B!T:&%N(&]T:&5R<RX@"@D\+U`^"CPO +M54P^"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB4V]M95]E>&%M<&QE +M<U]O9E]T97-T<R(^/"]!/E-O;64*97AA;7!L97,@;V8@=&5S=',\+T@Q/@H\ +M2#(@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](DQI8F%R8VAI=F5?<F5A9%]T +M97-T<R(^/"]!/DQI8F%R8VAI=F4*<F5A9"!T97-T<SPO2#(^"CQ0/E1H97)E +M(&%R92!Q=6ET92!A(&9E=R!R96%D('1E<W1S('1H870@<VEM<&QY(')E860@ +M82!P<F4M8G5I;'0*:6YP=70@9FEL92!A;F0@=F5R:69Y('1H92!R97-U;'1S +M+B!4:&5S92!U<V4@/%14($-,05-3/2)W97-T97)N(CYE>'1R86-T7W)E9F5R +M96YC95]F:6QE*"D\+U14/@IT;R!D96-O9&4@82!U=65N8V]D960@:6YP=70@ +M9FEL92P@=&AE;B!O<&5N('1H870@9FEL92!W:71H(&QI8F%R8VAI=F4*86YD +M('9E<FEF>2!T:&4@<F5S=6QT<RX@36]S="!O9B!T:&5S92!A<F4@<')E='1Y +M('-T<F%I9VAT9F]R=V%R9"X@"CPO4#X*/$@R($-,05-3/2)W97-T97)N(CX\ +M02!.04U%/2),:6)A<F-H:79E7W)E860O=W)I=&5?=&5S=',B/CPO03Y,:6)A +M<F-H:79E"G)E860O=W)I=&4@=&5S=',\+T@R/@H\4#Y-;W-T(&]F('1H92!W +M<FET92!T97-T<R!R96%L;'D@:G5S="!V97)I9GD@=&AA="!L:6)A<F-H:79E +M(&-A;@IR96%D('=H870@:70@=W)I=&5S+B!4:&5S92!G96YE<F%L;'D@=7-E +M('1H92!M96UO<GD@:6YT97)F86-E<RX@5&AE>0IF965D(&%R8VAI=F4@96YT +M<FEE<R!I;G1O('1H92!W<FET97(@=&\@8W)E871E(&%N(&%R8VAI=F4@:6X@ +M;65M;W)Y"F%N9"!T:&5N(&]P96X@=&AE(&UE;6]R>2!A9V%I;B!T;R!R96%D +M('1H92!D871A(&)A8VL@86YD('9E<FEF>2!T:&%T"FET(&ES('1H92!S86UE +M+B`*/"]0/@H\2#(@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](DQI8F%R8VAI +M=F5?=W)I=&5?=F%L:61A=&]R<R(^/"]!/DQI8F%R8VAI=F4*=W)I=&4@=F%L +M:61A=&]R<SPO2#(^"CQ0/D$@9F5W('=R:71E('1E<W1S('=R:71E(&%N(&%R +M8VAI=F4@:6YT;R!M96UO<GD@86YD('1H96X@:6YS<&5C=`IT:&4@86-T=6%L +M(&)Y=&5S('1O('9E<FEF>2!T:&%T('1H92!A<F-H:79E('=A<R!C<F5A=&5D +M(&-O<G)E8W1L>2X*5&AE<V4@=&5S=',@87)E(&YI8V4@=&\@:&%V92!B=70@ +M87)E('1E9&EO=7,@=&\@8G5I;&0N(`H\+U`^"CQ0/E1H97)E(&%R92!A;'-O +M(&$@8V]U<&QE(&]F('-U8V@@=F%L:61A=&]R<R!F;W(@8G-D=&%R(&%N9"!B +M<V1C<&EO+@I4:&5S92!A<F4@=F5R>2!T<FEC:WD@<VEN8V4@=&AE(&5X86-T +M(&1A=&$@8V]N=&%I;G,@=F%L=65S('1H870@=&AE"G1E<W0@8V%N;F]T(&-O +M;7!L971E;'D@8V]N=')O;"`H<W5C:"!A<R!T:&4@8W5R<F5N="!T:6UE(&]R +M"G5S97)N86UE*2X@"CPO4#X*/$@R($-,05-3/2)W97-T97)N(CX\02!.04U% +M/2)$:7-K7W1E<W1S(CX\+T$^1&ES:R!T97-T<SPO2#(^"CQ0/DQI8F%R8VAI +M=F4G<R!D:7-K($DO3R!!4$ES+"!A<R!W96QL(&%S(&)S9'1A<B!A;F0@8G-D +M8W!I;RP@;F5E9"!T;PIO<&5R871E(&)Y('9E<FEF>6EN9R!F:6QE<R!O;B!D +M:7-K+B!4;R!M86ME('1H:7,@96%S:65R+"!T:&4@=&5S=`IF<F%M97=O<FL@ +M;F]W(&AA<R!A(&QA<F=E(&YU;6)E<B!O9B!A<W-E<G1I;VYS('1O('9E<FEF +M>2!T:6UE<W1A;7!S+`IP97)M:7-S:6]N<RP@86YD(&]T:&5R(&)A<VEC(&9I +M;&4@9&%T82X@5&AE<V4@87-S97)T:6]N<R!U<V4*87!P<F]P<FEA=&4@<WES +M=&5M(&-A;&QS(&9O<B!E86-H('!L871F;W)M.R!N97<@=&5S=',@<VAO=6QD +M('1R>2!T;PIA=F]I9"!U<VEN9R`\5%0@0TQ!4U,](G=E<W1E<FXB/G-T870H +M*3PO5%0^+"!W:&EC:"!I<R!N;W0@=6YI9F]R;6QY"F%V86EL86)L92X@"CPO +M4#X*/$@R($-,05-3/2)W97-T97)N(CX\02!.04U%/2)&=7IZ7W1E<W1E<B(^ +M/"]!/D9U>GH@=&5S=&5R/"](,CX*/%`^5&AE(&9U>GH@=&5S=&5R(&ES(&]N +M92!O9B!T:&4@9F5W('1E<W1S('1H870@9&]E<R!N;W0@86=G<F5S<VEV96QY +M"G5S92!A<W-E<G1I;VYS+B!)=',@<'5R<&]S92!I<R!T;R!T<GD@86YD(&-R +M87-H(&QI8F%R8VAI=F4@8GD@9F5E9&EN9PII="!I;G!U="!T:&%T(&ES('-L +M:6=H=&QY(&1A;6%G960N("A296UE;6)E<B!T:&%T(&QI8F%R8VAI=F4@9&]E +M<PIH879E('-O;64@9F%I;'-A9F4@8V]D92!T:&%T(&1E;&EB97)A=&5L>2!A +M8F]R=',@=&AE(&5N=&ER92!P<F]G<F%M"FEF(&-E<G1A:6X@:6YV87)I86YT +M<R!A<F4@=FEO;&%T960N*2`*/"]0/@H\4#Y3:6YC92!A(&9U>GH@9F%I;'5R +M92!C875S97,@82!C<F%S:"P@:70G<R!I;7!O<W-I8FQE('1O(')E<&]R="!T +M:&4*97)R;W(@=&\@=&AE(&-O;G-O;&4L('-O('1H92!F=7IZ('1E<W1E<B!I +M;G-T96%D(&=E;F5R871E<R!A"G)A;F1O;6QY+61A;6%G960@9FEL92P@<V%V +M97,@=&AA="!F:6QE('1O(&1I<VLL('1H96X@<G5N<R!T:&4@9FEL90IT:')O +M=6=H(&QI8F%R8VAI=F4@=&\@=')Y('1O('!R;W9O:V4@82!C<F%S:"X@268@ +M;&EB87)C:&EV92!C<F%S:&5S"G1H92!E;G1I<F4@=&5S=&5R+"!T:&4@:6YP +M=70@=&AA="!C875S960@=&AE(&-R87-H('=I;&P@8F4@879A:6QA8FQE"F]N +M(&1I<VL@9F]R(&9U<G1H97(@86YA;'ES:7,N(`H\+U`^"CQ0/D%L=&AO=6=H +M(&ET(&ES('5N=7-U86P@9F]R(&$@=&5S="!P<F]G<F%M('1O('5S92!R86YD +M;VT@:6YP=70L('1H90IF=7IZ('1E<W1E<B!H87,@<')O=F5N('%U:71E('5S +M969U;"!A="!U;F-O=F5R:6YG('!O;W(@97)R;W(*:&%N9&QI;F<N(%5N9F]R +M='5N871E;'DL('1H92!N965D('1O('=R:71E('1H92!D871A('1O(&1I<VL@ +M8F5F;W)E"F5A8V@@=&5S="!I<R!A('-I9VYI9FEC86YT('!E<F9O<FUA;F-E +M(&ES<W5E+B`*/"]0/@H\2#(@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](DQA +M<F=E7W1A<E]T97-T97(B/CPO03Y,87)G92!T87(@=&5S=&5R/"](,CX*/%`^ +M5&AE(&QA<F=E('1A<B!T97-T97(@871T96UP=',@=&\@97AE<F-I<V4@8F]U +M;F1A<GD@8V%S97,@=VET:"!V97)Y"FQA<F=E(&5N=')I97,L('5P('1O(#$@ +M=&5R86)Y=&4N($]F(&-O=7)S92P@=W)I=&EN9R!A(#$@=&5R86)Y=&4*96YT +M<GD@=&\@86X@=6YC;VUP<F5S<V5D(&%R8VAI=F4@;VX@9&ES:R!O<B!M96UO +M<GD@:7,@=6YA8V-E<'1A8FQE+`IB;W1H(&9O<B!P97)F;W)M86YC92!A;F0@ +M<W!A8V4@<F5A<V]N<RX@179E;B!G>FEP(&]R(&)Z:7`R"F-O;7!R97-S:6]N +M('=O;B=T(&AE;'`[(&%L=&AO=6=H('-M86QL97(L('1H92!O=71P=70@:7,@ +M<W1I;&P@;&%R9V4*86YD('1H92!T:6UE(&YE961E9"!T;R!C;VUP<F5S<R!S +M=6-H(&$@;&%R9V4@86UO=6YT(&]F(&1A=&$@:7,*<')O:&EB:71I=F4N(%-O +M('1H92!L87)G92!T87(@=&5S=&5R('5S97,@82!T<FEC:RX@"CPO4#X*/%`^ +M4F5M96UB97(@=&AA="!A;B!U;F-O;7!R97-S960@=&%R(&%R8VAI=F4@8V]N +M<VES=',@;V8@86QT97)N871I;F<*:&5A9&5R<R!A;F0@8F]D:65S+B!)9B!T +M:&4@8F]D:65S(&-O;G-I<W0@96YT:7)E;'D@;V8@>F5R;R!B>71E<RP*=&AE +M;B!A;&P@=&AA="=S(&YE961E9"!T;R!R96-O;G-T<G5C="!T:&4@87)C:&EV +M92!I<R!T;R!R96-O<F0@=&AE"G)E;&%T:79E;'D@<VUA;&P@:&5A9&5R<R!A +M;F0@<W1O<F4@82!C;W5N="!O9B!E86-H(&-O;G1I9W5O=7,@8FQO8VL*;V8@ +M>F5R;W,N(%1H:7,@<VEM<&QE("9Q=6]T.W)U;BUL96YG=&@@96YC;V1I;F<F +M<75O=#L@:7,@=F5R>0IE9F9E8W1I=F4L(&-O;7!R97-S:6YG(&$@<V%M<&QE +M(&%R8VAI=F4@=VET:"!A(&1O>F5N(&5N=')I97,@9&]W;B!T;PIJ=7-T(&$@ +M9F5W(&MI;&]B>71E<RP@979E;B!I9B!T:&]S92!E;G1R:65S(')A;F=E('5P +M('1O(#%40BX@"CPO4#X*/%`^0GD@=W)I=&EN9R!A(&-U<W1O;2!)+T\@;&%Y +M97(@=&AA="!I;7!L96UE;G1S('-U8V@@8V]M<')E<W-I;VXL('=E"F-A;B!W +M<FET92!V97)Y(&QA<F=E(&5N=')I97,@=&AR;W5G:"!L:6)A<F-H:79E('1H +M96X@<F5A9"!T:&5M(&)A8VL*86YD('9E<FEF>2!T:&%T(&QI8F%R8VAI=F4@ +M8V]R<F5C=&QY(&AA;F1L97,@86QL(&]F('1H92!B;W5N9&%R>0IC87-E<RX@ +M"CPO4#X*/%`^3V8@8V]U<G-E+"!E=F5N('-C86YN:6YG(&]U='!U="!T;R!D +M971E<FUI;F4@>F5R;R!B;&]C:W,@8V%N('1A:V4*<75I=&4@82!W:&EL92P@ +M<V\@=&AE(&QA<F=E('1A<B!T97-T97(@;6%K97,@;VYE(&UO<F4@;W!T:6UI +M>F%T:6]N.@I,:6)A<F-H:79E(&ES("9Q=6]T.VUO<W1L>29Q=6]T.R!Z97)O +M+6-O<'DN(%=H96X@>6]U(&=I=F4@:70@82!L87)G90IB;&]C:R!T;R!W<FET +M92!T;R!A;B!E;G1R>2!B;V1Y+"!I="!W:6QL('!A<W,@<&]I;G1E<G,@<W1R +M86EG:'0*=&AR;W5G:"!T;R!T:&4@;W5T<'5T(')O=71I;F4L(&5X8V5P="!I +M;B!T:&]S92!C87-E<R!W:&5R92!I="!M=7-T"F-O<'D@9&%T82!T;R!C;W)R +M96-T;'D@8G5I;&0@8FQO8VMS+B!4:&4@;&%R9V4@=&%R('1E<W1E<B!T86ME +M<PIA9'9A;G1A9V4@;V8@=&AI<R!T;R!Q=6EC:VQY(&1E=&5C="!W:&5N(&$@ +M8FQO8VL@8F5I;F<@=W)I='1E;B!O=70@8GD*=&AE(&%R8VAI=F4@=W)I=&5R +M(&ES('1H92!S86UE(&%S('-O;64@;V8@=&AE(&1A=&$@=&AA="!W87,@9VEV +M96X@8GD*=&AE('1E<W0@87,@=&AE(&5N=')Y(&)O9'DL(&%N9"!S:6UI;&%R +M;'D@=VAE;B!R96%D:6YG('1H92!A<F-H:79E"F)A8VLN(`H\+U`^"CQ0/E1A +M:V5N('1O9V5T:&5R+"!T:&5S92!T<FEC:W,@86QL;W<@=&AE(&QA<F=E('1A +M<B!W<FET97(@=&\@=&5S=`IF;W(@:7-S=65S('-U8V@@87,@<')O<&5R('-T +M;W)A9V4@;V8@=F5R>2!L87)G92!F:6QE('-I>F5S("AT87(@9FEL97,*<W5P +M<&]R="!S979E<F%L(&1I9F9E<F5N="!W87ES('1O('-T;W)E(&9I;&4@<VEZ +M97,@=VAI8V@@=')A9&4@;V9F"G!O<G1A8FEL:71Y('9E<G-U<R!R86YG93L@ +M;&EB87)C:&EV92!T<FEE<R!T;R!U<V4@=&AE(&UO<W0@<&]R=&%B;&4*;VYE +M(&ET(&-A;B!F;W(@96%C:"!E;G1R>2D@86YD(&EN=&5G97(@;W9E<F9L;W<@ +M*%=I;F1O=W,@,S(M8FET(#Q45"!#3$%34STB=V5S=&5R;B(^;V9F7W0\+U14 +M/@IB<F]K92!T:&4@;&%R9V4@=&%R('1E<W0@86YD(&QE9"!L:6)A<F-H:79E +M('1O(&UA:V4@:&5A=FEE<B!U<V4@;V8*/%14($-,05-3/2)W97-T97)N(CYI +M;G0V-%]T/"]45#X@:6YT97)N86QL>2D@:6X@82!T97-T('1H870@<G5N<R!I +M;@IU;F1E<B`Q+S0@<V5C;VYD+B`*/"]0/@H\4"!35%E,13TB;6%R9VEN+6)O +M='1O;3H@,&EN(CX\0E(^"CPO4#X*/"]"3T19/@H\+TA434P^08%T(I!7`#(8 +M``"/3@```P5+K#^[3#5!%#`M`*2!``!T97-T9&ER7'1E<W1S=6)D:7)<3&EB +M87)C:&EV94%D9&EN9U1E<W0R+FAT;6S`S#-?.T)C7SM"/"%$3T-465!%($A4 +M34P@4%5"3$E#("(M+R]7,T,O+T141"!(5$U,(#0N,"!4<F%N<VET:6]N86PO +M+T5.(CX*/$A434P^"CQ(14%$/@H)/$U%5$$@2%144"U%455)5CTB0T].5$5. +M5"U465!%(B!#3TY414Y4/2)T97AT+VAT;6P[(&-H87)S970]=71F+3@B/@H) +M/%1)5$Q%/CPO5$E43$4^"@D\345402!.04U%/2)'14Y%4D%43U(B($-/3E1% +M3E0](DQI8G)E3V9F:6-E(#,N,R`@*%5N:7@I(CX*"3Q-151!($Y!344](D-2 +M14%4140B($-/3E1%3E0](C(P,3$P-C(V.S(R,C,U,3`P(CX*"3Q-151!($Y! +M344](D-(04Y'140B($-/3E1%3E0](C(P,3$P-C(V.S(R,C4T-3`P(CX*"3Q3 +M5%E,12!465!%/2)T97AT+V-S<R(^"@D\(2TM"@D)0'!A9V4@>R!M87)G:6XZ +M(#`N-SEI;B!]"@D)4"![(&UA<F=I;BUB;W1T;VTZ(#`N,#AI;B!]"@D)2#$@ +M>R!M87)G:6XM8F]T=&]M.B`P+C`X:6X@?0H)"4@Q+G=E<W1E<FX@>R!F;VYT +M+69A;6EL>3H@(DQI8F5R871I;VX@4V5R:68B+"!S97)I9B!]"@D)2#$N8VIK +M('L@9F]N="UF86UI;'DZ(")":71S=')E86T@5F5R82!386YS(B!]"@D)2#$N +M8W1L('L@9F]N="UF86UI;'DZ(")&<F5E4V%N<R(@?0H)"5!212YC:FL@>R!F +M;VYT+69A;6EL>3H@(D)I='-T<F5A;2!697)A(%-A;G,B+"!M;VYO<W!A8V4@ +M?0H)"4@R('L@;6%R9VEN+6)O='1O;3H@,"XP.&EN('T*"0E(,BYC=&P@>R!F +M;VYT+69A;6EL>3H@(D9R965386YS(B!]"@D)5%0N8VIK('L@9F]N="UF86UI +M;'DZ(")":71S=')E86T@5F5R82!386YS(BP@;6]N;W-P86-E('T*"2TM/@H) +M/"]35%E,13X*/"](14%$/@H\0D]$62!,04Y'/2)E;BU54R(@1$E2/2),5%(B +M/@H\2#$@0TQ!4U,](G=E<W1E<FXB/DEN=')O9'5C=&EO;CPO2#$^"CQ0/DQI +M8F%R8VAI=F4@:7,@;F]W(&$@9F%I<FQY(&-O;7!L97@@<&EE8V4@;V8@<V]F +M='=A<F4@=&AA="!R=6YS(&]N"F$@;G5M8F5R(&]F(&1I9F9E<F5N="!P;&%T +M9F]R;7,N($$@=&AO<F]U9V@@=&5S="!S=6ET92!I<R!E<W-E;G1I86P*8F]T +M:"!F;W(@=F5R:69Y:6YG(&YE=R!P;W)T<R!A;F0@9F]R(&5N<W5R:6YG('1H +M870@9G5T=7)E(&-H86YG97,*9&]N)W0@8G)E86L@97AI<W1I;F<@9G5N8W1I +M;VYA;&ET>2X@"CPO4#X*/%`^06YY('-I9VYI9FEC86YT(&-H86YG92!T;R!L +M:6)A<F-H:79E+"!I;F-L=61I;F<@;6]S="!B=6<@9FEX97,L"G-H;W5L9"!B +M92!A8V-O;7!A;FEE9"!B>2!N97<@=&5S=',@;W(@8VAA;F=E<R!T;R!E>&ES +M=&EN9R!T97-T<RX@5&AI<PIA<G1I8VQE(&5X<&QA:6YS(&AO=R!T:&4@;&EB +M87)C:&EV92!T97-T('-U:71E<R!W;W)K(&%N9"!H;W<@=&\*97AT96YD('1H +M96TN(`H\+U`^"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB0G5I;&1I +M;F=?86YD7U)U;FYI;F=?=&AE7U1E<W1?4')O9W)A;7,B/CPO03X*0G5I;&1I +M;F<@86YD(%)U;FYI;F<@=&AE(%1E<W0@4')O9W)A;7,\+T@Q/@H\4#Y%86-H +M(&UA:F]R(&-O;7!O;F5N="TM;&EB87)C:&EV92P@8G-D=&%R+"!A;F0@8G-D +M8W!I;RTM:&%S(&$@=&5S=`IP<F]G<F%M('1H870@97AE<F-I<V5S('1H92!F +M=6YC=&EO;F%L:71Y(&]F('1H870@8V]M<&]N96YT+B!4:&5S90IT97-T('!R +M;V=R86US(&%R92!C;VUP:6QE9"!I;B!T:&4@<V%M92!W87D@=&AA="!T:&4@ +M<F5S="!O9B!T:&4*;&EB87)C:&EV92!S=6ET92!I<R!C;VUP:6QE9"X@"CPO +M4#X*/%`^5&\@<G5N('1H92!T97-T('!R;V=R86US+"!Y;W4@;F5E9"!T;R!G +M:79E('1H96T@='=O('!I96-E<R!O9@II;F9O<FUA=&EO;CH@"CPO4#X*/%5, +M/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/E1H92!F=6QL +M('!A=&@@=&\@=&AE(&1I<F5C=&]R>0H):&]L9&EN9R!T:&4@)G%U;W0[<F5F +M97)E;F-E(&9I;&5S)G%U;W0[(`H)/"]0/@H)/$Q)/CQ0/E1H92!F=6QL('!A +M=&@@=&\@=&AE(&5X96-U=&%B;&4@<')O9W)A;2!B96EN9R!T97-T960@*&YO +M=`H)87!P;&EC86)L92!T;R!L:6)A<F-H:79E7W1E<W0@<VEN8V4@;&EB87)C +M:&EV92!I<R!C;VUP:6QE9"!I;G1O('1H90H)=&5S="!P<F]G<F%M*2`*"3PO +M4#X*/"]53#X*/%`^5&AE(')E9F5R96YC92!F:6QE<R!A<F4@82!C;VQL96-T +M:6]N(&]F(&MN;W=N(&EN<'5T<R!T:&%T(&%R92!U<V5D"FEN('1H92!T97-T +M('!R;V-E<W,N(%1H97D@87)E(&%L;"!S=&]R960@:6X@=75E;F-O9&5D(&9O +M<FUA="!I;B!F:6QE<PIW:71H(&$@)G%U;W0[+G5U)G%U;W0[(&5X=&5N<VEO +M;BX@5&AE('1E<W0@<')O9W)A;7,@;&]O:R!I;B!A(&9E=PIS=&%N9&%R9"!L +M;V-A=&EO;G,[(&EF(&YO;F4@;V8@=&AO<V4@=V]R:RP@>6]U)VQL(&YE960@ +M=&\@<W!E8VEF>2!T:&4*/%14($-,05-3/2)W97-T97)N(CXM<CPO5%0^(&]P +M=&EO;B!W:71H('1H92!F=6QL('!A=&AN86UE('1O('1H90IA<'!R;W!R:6%T +M92!D:7)E8W1O<GDN(`H\+U`^"CQ0/E1H92!B<V1T87)?=&5S="!A;F0@8G-D +M8W!I;U]T97-T('!R;V=R86US(')U;B!B<V1T87(@;W(@8G-D8W!I;PIR97!E +M871E9&QY.R!T:&5Y(&YE960@=&AE(&9U;&P@<&%T:"!T;R!T:&4@87!P<F]P +M<FEA=&4@97AE8W5T86)L92X*06QT:&]U9V@@8G-D=&%R7W1E<W0@86YD(&)S +M9&-P:6]?=&5S="!A<F4@<W!E8VEF:6-A;&QY(&EN=&5N9&5D(&9O<@IT97-T +M:6YG(&)S9'1A<B!A;F0@8G-D8W!I;RP@=&AE>2!S:&]U;&0@8F4@=7-A8FQE +M(&9O<B!T97-T:6YG(&]T:&5R"G1A<B!A;F0@8W!I;R!P<F]G<F%M<RX@26X@ +M9F%C="P@<G5N;FEN9R!T:&5S92!T97-T('!R;V=R86US(&%G86EN<W0*;W1H +M97(@=&%R(&EM<&QE;65N=&%T:6]N<R!I<R!A(&=O;V0@=V%Y('1O('9E<FEF +M>2!T:&%T('1H92!T97-T"G!R;V=R86US('1H96US96QV97,@87)E('=O<FMI +M;F<@8V]R<F5C=&QY+B`*/"]0/@H\4#Y7:&5N(')U;BP@=&AE('1E<W0@<')O +M9W)A;7,@;W5T<'5T(&$@<')O9W)E<W,@;65S<V%G92!F;W(@96%C:`IT97-T +M+"!A;B!E<G)O<B!M97-S86=E(&9O<B!E86-H(&9A:6QE9"!A<W-E<G1I;VXL +M(&%N9"!A(&9I;F%L"G-U;6UA<GDZ(`H\+U`^"CQ04D4@0TQ!4U,](G=E<W1E +M<FXB/B9N8G-P.U)U;FYI;F<@=&5S=',@:6XZ("]T;7`O8G-D=&%R7W1E<W0N +M,C`P.2TP,BTQ-U0R,2XS,"XT,"TP,#`*)FYB<W`[4F5F97)E;F-E(&9I;&5S +M('=I;&P@8F4@<F5A9"!F<F]M.B`F;F)S<#L@)FYB<W`[+VAO;64O=&EM+VQI +M8F%R8VAI=F4O=')U;FLO=&%R+W1E<W0*)FYB<W`[4G5N;FEN9R!T97-T<R!O +M;CH@+VAO;64O=&EM+VQI8F%R8VAI=F4O=')U;FLO8G-D=&%R"B9N8G-P.T5X +M97)C:7-I;F<Z(&)S9'1A<B`R+C8N.3`P82`M(&QI8F%R8VAI=F4@,BXV+CDP +M,&$*)FYB<W`[,#H@=&5S=%\P"B9N8G-P.S$Z('1E<W1?8F%S:6,*)FYB<W`[ +M,CH@=&5S=%]C;W!Y"B9N8G-P.R!T97-T7V-O<'DN8SHQ-S$Z($%S<V5R=&EO +M;B!F86EL960Z($EN=',@;F]T(&5Q=6%L"B9N8G-P.R`F;F)S<#L@)FYB<W`[ +M(#`],`HF;F)S<#L@)FYB<W`[("9N8G-P.R!L<W1A="AN86UE,B`K(#,L("9A +M;7`[<W0R*3TM,0HF;F)S<#L@=&5S=%]C;W!Y+F,Z,3<Q.B!&86EL960@,C8T +M('1I;65S"B9N8G-P.S,Z('1E<W1?9V5T9&%T90HF;F)S<#LT.B!T97-T7VAE +M;'`*)FYB<W`[("9N8G-P.R`N+BX@;6]R92!O=71P=70@;VUI='1E9"`N+BX* +M)FYB<W`[,2!O9B`Q,R!T97-T<R!R97!O<G1E9"!F86EL=7)E<PHF;F)S<#L@ +M5&]T86P@;V8@,3`U,#DW(&%S<V5R=&EO;G,@8VAE8VME9"X*)FYB<W`[(%1O +M=&%L(&]F(#(V-"!A<W-E<G1I;VYS(&9A:6QE9"X*)FYB<W`[(%1O=&%L(&]F +M(#`@87-S97)T:6]N<R!S:VEP<&5D+CPO4%)%/CQ0/@I4:&4@:&5A9&5R(&QI +M;F5S(&AE<F4@<F5C;W)D.B`*/"]0/@H\54P^"@D\3$D^/%`@4U193$4](FUA +M<F=I;BUB;W1T;VTZ(#!I;B(^=&AE(&1I<F5C=&]R>2!T:&%T('=I;&P@8F4@ +M=7-E9`H)9F]R('-C<F%T8V@@9FEL97,@9'5R:6YG('1H92!T97-T+B!)9B!A +M('1E<W0@9F%I;',L('1H92!S8W)A=&-H"@EF:6QE<R!W:6QL(&)E(&QE9G0@ +M8F5H:6YD(&EN('1H:7,@9&ER96-T;W)Y(&9O<B!F=7)T:&5R(&1E8G5G9VEN +M9RX@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^ +M5&AE(&1I<F5C=&]R>2!F<F]M('=H:6-H('1H90H)<F5F97)E;F-E(&9I;&5S +M('=I;&P@8F4@<F5A9"X@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB +M;W1T;VTZ(#!I;B(^1F]R(&)S9'1A<E]T97-T(&%N9"!B<V1C<&EO7W1E<W0L +M"@ET:&4@9G5L;"!P871H('1O('1H92!E>&5C=71A8FQE(&)E:6YG(&5X97)C +M:7-E9"X@"@D\+U`^"@D\3$D^/%`^0F%S:6,@=F5R<VEO;B!I;F9O<FUA=&EO +M;B!A8F]U="!T:&4@=&%R9V5T+B`*"3PO4#X*/"]53#X*/%`^26X@=&AI<R!C +M87-E+"!T:&4@=')A:6QE<B!I;F1I8V%T97,@=&AA="!O;F4@=&5S="!F86EL +M960N($%S('EO=0IC86X@<V5E+"!T:&5R92!W87,@82!S:6YG;&4@87-S97)T +M:6]N(&EN('1H92!C;V1E('1H870@9F%I;&5D(#(V-`IT:6UE<RX@5&AE(&9I +M<G-T('1I;64@:70@9F%I;&5D+"!I="!W87,@8F5C875S92!A;B`\5%0@0TQ! +M4U,](G=E<W1E<FXB/FQS=&%T*"D\+U14/@IC86QL(')E='5R;F5D("TQ(&EN +M<W1E860@;V8@=&AE('IE<F\@=&AA="!W87,@97AP96-T960N(`H\+U`^"CQ( +M,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB0F%S:6-?=&5S=%]T97)M:6YO +M;&]G>2(^/"]!/D)A<VEC('1E<W0*=&5R;6EN;VQO9WD\+T@Q/@H\4#Y%86-H +M('1E<W0@<')O9W)A;2!C;VYS:7-T<R!O9B!A(&YU;6)E<B!O9B`F<75O=#MT +M97-T<R9Q=6]T.RX@16%C:`IT97-T(&AA<R!A(&YA;64@86YD(&ES(&EM<&QE +M;65N=&5D(&EN(&$@0R!S;W5R8V4@9FEL92!W:71H('1H92!S86UE"FYA;64@ +M87,@=&AE('1E<W0N(%1E<W1S('=O<FL@8GD@<&5R9F]R;6EN9R!S;VUE('-E +M<FEE<R!O9B!O<&5R871I;VYS"F%N9"!M86MI;F<@)G%U;W0[87-S97)T:6]N +M<R9Q=6]T.R!A8F]U="!T:&4@<F5S=6QT<RX@1F]R(&5X86UP;&4L"FUA;GD@ +M;V8@=&AE(&QI8F%R8VAI=F4@=&5S=',@;W!E;B!A;F0@<F5A9"!A;B!A<F-H +M:79E(&%N9"!A<W-E<G0@=&AA=`IP87)T:6-U;&%R(&]P97)A=&EO;G,@<W5C +M8V5E9&5D(&]R(&9A:6QE9"X@*%EE<RP@:70@:7,@;V9T96X*:6UP;W)T86YT +M('1O('9E<FEF>2!T:&%T(&EL;&5G86P@<F5Q=65S=',@9V5N97)A=&4@87!P +M<F]P<FEA=&4*97)R;W)S+BD@"CPO4#X*/%`^2&5R92!I<R!A('-O;65W:&%T +M(&5D:71E9"!E>&-E<G!T(&9R;VT@/%14($-,05-3/2)W97-T97)N(CYT97-T +M7V-O;7!A=%]Z:7`\+U14/BP*=VAI8V@@=F5R:69I97,@8V]M<&%T:6)I;&ET +M>2!W:71H('9A<FEO=7,@6DE0(&9O<FUA="!A<F-H:79E<SH@"CPO4#X*/%!2 +M12!#3$%34STB=V5S=&5R;B(^)FYB<W`[($1%1DE.15]415-4*'1E<W1?8V]M +M<&%T7WII<"D*)FYB<W`[('L*)FYB<W`[("9N8G-P.R`O*B`N+BX@<V5T=7`@ +M;VUI='1E9"`N+BX@*B\*)FYB<W`[("9N8G-P.R!A<W-E<G0H*&$@/2!A<F-H +M:79E7W)E861?;F5W*"DI("$]($Y53$PI.PHF;F)S<#L@)FYB<W`[(&%S<V5R +M=$5Q=6%L26YT*$%20TA)5D5?3TLL"B9N8G-P.R`F;F)S<#L@)FYB<W`[("9N +M8G-P.R!A<F-H:79E7W)E861?<W5P<&]R=%]C;VUP<F5S<VEO;E]A;&PH82DI +M.PHF;F)S<#L@)FYB<W`[(&%S<V5R=$5Q=6%L26YT*$%20TA)5D5?3TLL"B9N +M8G-P.R`F;F)S<#L@)FYB<W`[("9N8G-P.R!A<F-H:79E7W)E861?<W5P<&]R +M=%]F;W)M871?86QL*&$I*3L*)FYB<W`[("9N8G-P.R!E>'1R86-T7W)E9F5R +M96YC95]F:6QE*&YA;64I.PHF;F)S<#L@)FYB<W`[(&%S<V5R=$5Q=6%L26YT +M*$%20TA)5D5?3TLL"B9N8G-P.R`F;F)S<#L@)FYB<W`[("9N8G-P.R!A<F-H +M:79E7W)E861?;W!E;E]F:6QE;F%M92AA+"!N86UE+"`Q,#(T,"DI.PHF;F)S +M<#L@)FYB<W`[("9N8G-P.R\J(%)E860@9FER<W0@96YT<GDN("HO"B9N8G-P +M.R`F;F)S<#L@)FYB<W`[87-S97)T17%U86Q);G0H05)#2$E615]/2RP@87)C +M:&EV95]R96%D7VYE>'1?:&5A9&5R*&$L("9A;7`[864I*3L*)FYB<W`[("9N +M8G-P.R`F;F)S<#MA<W-E<G1%<75A;%-T<FEN9R@F<75O=#M-151!+4E.1B]- +M04Y)1D535"Y-1B9Q=6]T.RP@87)C:&EV95]E;G1R>5]P871H;F%M92AA92DI +M.SPO4%)%/CQ0/@I4:&4@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G186%A8 +M/"]45#X@;6%C<F]S(&-H96-K('1H870@=&AE:7(*87)G=6UE;G1S('-A=&ES +E9GD@8V5R=&%I;B!C;VYD:73($7L/0!0`%XKPCP$````````````` +` +end 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 new file mode 100644 index 0000000..027f050 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part03.rar.uu @@ -0,0 +1,299 @@ +begin 644 - +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 +M+2UF;W(*97AA;7!L92P@:68@=&AE(&YA;64@;V8@=&AE(&9I<G-T(&5N=')Y +M(&ES(&YO=`HF<75O=#M-151!+4E.1B]-04Y)1D535"Y-1B9Q=6]T.RTM=&AE +M(&UA8W)O('=I;&P@<F5P;W)T('1H92!P<F]B;&5M+B`*/"]0/@H\4#Y4:&5R +M92!A<F4@='=O(&EM<&]R=&%N="!D:69F97)E;F-E<R!B971W965N('1H92`\ +M5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=%A86#PO5%0^"FUA8W)O<R!U<V5D +M(&EN('1H97-E('1E<W0@:&%R;F5S<V5S(&%N9"!T:&4@25-/($,@<W1A;F1A +M<F0@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G0\+U14/@IM86-R;SH@1FER +M<W0L('1H97-E(&%S<V5R="!M86-R;W,@9&]N)W0@97AI="!O;B!F86EL=7)E +M+B!">2!D969A=6QT+`IT:&5Y(')E<&]R="!T:&4@9F%I;'5R92!A;F0@<F5T +M=7)N('IE<F\@*'1H92!#(&YO=&EO;B!O9B`F<75O=#MF86QS929Q=6]T.RDN +M"E-E8V]N9"P@=&AE<V4@;6%C<F]S(&EN8VQU9&4@=F%R:6%N=',@=&AA="!P +M97)F;W)M(&$@=F%R:65T>2!O9@IS<&5C:69I8R!T97-T<RX@5&AE<V4@<W!E +M8VEF:6,@=F5R<VEO;G,@*'-U8V@@87,@/%14($-,05-3/2)W97-T97)N(CYA +M<W-E<G1%<75A;$EN=#PO5%0^"F%N9"`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S +M<V5R=$5Q=6%L4W1R:6YG/"]45#X@:6X@=&AE(&5X86UP;&4@86)O=F4I"F=E +M;F5R871E(&1E=&%I;&5D(&QO9R!M97-S86=E<R!O;B!F86EL=7)E+B!);B!P +M87)T:6-U;&%R+"!T:&5Y('!R:6YT"G1H92!V86QU92!O9B!B;W1H(&%R9W5M +M96YT<SL@=&AI<R!G<F5A=&QY('-I;7!L:69I97,@9&EA9VYO<VEN9PIF86EL +M=7)E<RX@"CPO4#X*/$@Q($-,05-3/2)W97-T97)N(CX\02!.04U%/2),:69E +M7V-Y8VQE7V]F7V%?=&5S="(^/"]!/DQI9F4@8WEC;&4@;V8*82!T97-T/"]( +M,3X*/%`^16%C:"!T97-T(')E<VED97,@:6X@82!#('-O=7)C92!F:6QE('=I +M=&@@=&AE('-A;64@;F%M92!A<R!T:&4*=&5S="X@5&AE('1E<W0@:71S96QF +M(&ES(&$@9G5N8W1I;VX@=&AA="!T86ME<R!N;R!A<F=U;65N=',N(%1H92!T +M97-T"FES(&1E8VQA<F5D('5S:6YG('1H92`\5%0@0TQ!4U,](G=E<W1E<FXB +M/D1%1DE.15]415-4*"D\+U14/B!M86-R;RX*5&AI<R!M86-R;R!S97)V97,@ +M8F]T:"!T;R!E;G-U<F4@=&AA="!T:&4@=&5S="!I<R!D96-L87)E9"!C;W)R +M96-T;'D*86YD(&%S(&$@;&%B96P@=&AA="!C86X@8F4@=7-E9"!T;R!L;V-A +M=&4@86QL(&1E9FEN960@=&5S=',N("A/;@I5;FEX+6QI:V4@<&QA=&9O<FUS +M+"!A('-I;7!L92`\5%0@0TQ!4U,](G=E<W1E<FXB/F=R97`\+U14/B!O<&5R +M871I;VX*:7,@=7-E9"!T;R!C;VYS=')U8W0@82!F:6QE(&-A;&QE9"`\5%0@ +M0TQ!4U,](G=E<W1E<FXB/FQI<W0N:#PO5%0^"G1H870@:&]L9',@=&AE(&YA +M;65S(&]F(&%L;"!O9B!T:&4@=&5S=',N(%1H:7,@;6%K97,@:70@=F5R>2!E +M87-Y('1O"F%D9"!N97<@=&5S=',N*2`*/"]0/@H\4#Y4:&4@=&5S="!H87)N +M97-S(&1E=&5R;6EN97,@=VAI8V@@=&5S=',@=&\@<G5N+B!)="!G;V5S('1H +M<F]U9V@*=&AE(&9O;&QO=VEN9R!S=&5P<R!W:&5N979E<B!I="!R=6YS(&$@ +M=&5S=#H@"CPO4#X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M +M.B`P:6XB/CQ35%))2T4^0VQO<V5S(&%L;"!F:6QE"@ED97-C<FEP=&]R<R!E +M>&-E<'0@9F]R('-T9&EN+"!S=&1O=70L(&%N9"!S=&1E<G(N/"]35%))2T4^ +M("A4:&ES"@ES8W)E=W,@=7`@;&EB8R!O;B!S;VUE('!L871F;W)M<R!S;R!H +M87,@8F5E;B!R96UO=F5D+BD@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I +M;BUB;W1T;VTZ(#!I;B(^0W)E871E<R!A('1E;7!O<F%R>2!D:7)E8W1O<GD* +M"7=H;W-E(&YA;64@;6%T8VAE<R!T:&4@;F%M92!O9B!T:&4@=&5S="!A;F0@ +M<W=I=&-H97,@:6YT;R!T:&%T"@ED:7)E8W1O<GDN(`H)/"]0/@H)/$Q)/CQ0 +M(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/E)E<V5T<R!T:&4@8W5R<F5N +M="!L;V-A;&4N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M +M.B`P:6XB/D-A;&QS('1H92!T97-T(&9U;F-T:6]N+B`*"3PO4#X*"3Q,23X\ +M4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY)9B!T:&5R92!W97)E(&YO +M(&%S<V5R=&EO;@H)9F%I;'5R97,L(&ET('=I;&P@<F5M;W9E('1H92!T96UP +M;W)A<GD@9&ER96-T;W)Y+B`H268@/%14($-,05-3/2)W97-T97)N(CXM:SPO +M5%0^"@EI<R!S<&5C:69I960L('1E;7!O<F%R>2!D:7)E8W1O<GD@87)E(&QE +M9G0@979E;B!I9B!T:&4@=&5S=`H)<W5C8V5E9',N*2`*"3PO4#X*"3Q,23X\ +M4#X\4U1224M%/DEF('1H97)E(&%R92!A;GD@;W!E;B!F:6QE(&1E<V-R:7!T +M;W)S(&]T:&5R('1H86X*"7-T9&EN+"!S=&1O=70L(&%N9"!S=&1E<G(L(&ET +M(')E<&]R=',@86X@97)R;W(N/"]35%))2T4^(%1E<W1S"@ES:&]U;&0@;F5V +M97(@;&5A=F4@;W!E;B!F:6QE(&1E<V-R:7!T;W)S+B`*"3PO4#X*/"]53#X* +M/%`^26X@<&%R=&EC=6QA<BP@=&5S=',@8V%N('-A9F5L>2!A<W-U;64@=&AA +M=#H@"CPO4#X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P +M:6XB/E1H92!C=7)R96YT(&1I<F5C=&]R>2!I<R!E;7!T>0H)=VAE;B!T:&4@ +M=&5S="!S=&%R=',N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T +M=&]M.B`P:6XB/D%N>2!F:6QE<R!C<F5A=&5D(&EN('1H92!C=7)R96YT"@ED +M:7)E8W1O<GD@=VEL;"!B92!R96UO=F5D(&9O<B!Y;W4N(`H)/"]0/@H)/$Q) +M/CQ0/E1H92!C=7)R96YT(&QO8V%L92!I<R!T:&4@9&5F875L="`F<75O=#M# +M)G%U;W0[(&QO8V%L92X@"@D\+U`^"CPO54P^"CQ0/E1E<W1S('-H;W5L9#H@ +M"CPO4#X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB +M/E)E;&5A<V4@86QL(&UE;6]R>2X@5&AE('1E<W0*"7-U:71E<R!A<F4@;V-C +M87-I;VYA;&QY(')U;B!U;F1E<B!A(&UE;6]R>2!D96)U9V=E<B!T;R!D971E +M8W0@;&5A:W,*"6EN('1H92!L:6)A<F-H:79E(&QI8G)A<GDN(`H)/"]0/@H) +M/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D-L;W-E(&%L;"!O +M<&5N960@9FEL97,N(%1H:7,@:&5L<',*"71O(&-A=&-H(&9I;&4@9&5S8W)I +M<'1O<B!L96%K<R!I;B!L:6)A<F-H:79E+B`*"3PO4#X*"3Q,23X\4#Y.;W0@ +M<F5A9"!O<B!W<FET92!A8G-O;'5T92!P871H<RX@"@D\+U`^"CPO54P^"CQ( +M,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB4&QA=&9O<FU?=F%R:6%T:6]N +M(CX\+T$^4&QA=&9O<FT*=F%R:6%T:6]N/"](,3X*/%`^4V]M92!T97-T<R!A +M<F4@<W!E8VEF:6,@=&\@82!P87)T:6-U;&%R('!L871F;W)M+B!3=6-H('1E +M<W1S"G-H;W5L9"!U<V4@87!P<F]P<FEA=&4@<&QA=&9O<FTM<W!E8VEF:6,@ +M;6%C<F]S(&%S(&9O;&QO=W,Z(`H\+U`^"CQ04D4@0TQ!4U,](G=E<W1E<FXB +M/B-I9B!?7U!,051&3U)-"BXN+B!V87)I;W5S(&AE;'!E<B!F=6YC=&EO;G,@ +M+BXN"B-E;F1I9@I$149)3D5?5$535"AF;V]?<&QA=&9O<FTI"GL*(VEF(%]? +M4$Q!5$9/4DT*)FYB<W`[("9N8G-P.RXN+B!T97-T<R!A<R!U<W5A;"`N+BXN +M"B-E;'-E"B9N8G-P.R`F;F)S<#MS:VEP<&EN9R@F<75O=#MP;&%T9F]R;2US +M<&5C:69I8R!T97-T<R9Q=6]T.RD["B-E;F1I9@I]/"]04D4^/%`^"DEN('!A +M<G1I8W5L87(L(&YO=&4@=&AA="!A;&P@=&5S=',@87)E(&-O;7!I;&5D(&%N +M9"!R=6X@;VX@86QL"G!L871F;W)M<RX@"CPO4#X*/%`^36]S="!T97-T<R!A +M<F4@;F]T('!L871F;W)M+7-P96-I9FEC(&%N9"!W:6QL('1H=7,@96YD('5P +M(')U;FYI;F<*;VX@;6%N>2!D:69F97)E;G0@<&QA=&9O<FUS+B!);B!O<F1E +M<B!T;R!S:6UP;&EF>2!W<FET:6YG('-U8V@@=&5S=',L"G1R>2!T;R!U<V4@ +M<&QA=&9O<FTM:6YD97!E;F1E;G0@8V]D:6YG.B`*/"]0/@H\54P^"@D\3$D^ +M/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^57-E('-T9&EO(#Q45"!# +M3$%34STB=V5S=&5R;B(^9F]P96XH*3PO5%0^+`H)/%14($-,05-3/2)W97-T +M97)N(CYF=W)I=&4H*3PO5%0^+"`\5%0@0TQ!4U,](G=E<W1E<FXB/F9R96%D +M*"D\+U14/BP*"6%N9"`\5%0@0TQ!4U,](G=E<W1E<FXB/F9C;&]S92@I/"]4 +M5#X@=&\@86-C97-S(&9I;&5S('=H96YE=F5R"@EF96%S:6)L92X@"@D\+U`^ +M"@D\3$D^/%`^3&]O:R!T:')O=6=H('1H92`\5%0@0TQ!4U,](G=E<W1E<FXB +M/G1E<W0N:#PO5%0^(&AE861E<B!T;PH)<V5E(&EF('1H97)E(&%R92!A<W-E +M<G18>'@H*2!F=6YC=&EO;G,@=&AA="!Y;W4@8V%N('5S92X@5&AE<F4G<R!A +M"@EL:7-T(&]F('1H92!M;W)E('!O<'5L87(@;VYE<R!B96QO=RP@8G5T(&YE +M=R!O;F5S(&%R92!O9G1E;B!A9&1E9"X@"@D\+U`^"CPO54P^"CQ(,2!#3$%3 +M4STB=V5S=&5R;B(^/$$@3D%-13TB07-S97)T7VUA8W)O<R(^/"]!/D%S<V5R +M="!M86-R;W,\+T@Q/@H\4#Y4:&4@9F]L;&]W:6YG(&ES(&$@;F5C97-S87)I +M;'D@:6YC;VUP;&5T92!L:7-T(&]F(&%S<V5R="!F=6YC=&EO;G,*879A:6QA +M8FQE('1O('1E<W1S.B`*/"]0/@H\54P^"@D\3$D^/%`@4U193$4](FUA<F=I +M;BUB;W1T;VTZ(#!I;B(^0F%S:6,@97%U86QI='DZ(#Q45"!#3$%34STB=V5S +M=&5R;B(^87-S97)T17%U86Q);G0\+U14/BP*"3Q45"!#3$%34STB=V5S=&5R +M;B(^87-S97)T17%U86Q3=')I;F<\+U14/BP@/%14($-,05-3/2)W97-T97)N +M(CYA<W-E<G1%<75A;$UE;3PO5%0^"@D)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M +M87)G:6XM8F]T=&]M.B`P:6XB/D9I;&4@8W)E871I;VXZ(#Q45"!#3$%34STB +M=V5S=&5R;B(^87-S97)T36%K949I;&4\+U14/BP*"3Q45"!#3$%34STB=V5S +M=&5R;B(^87-S97)T36%K95-Y;6QI;FL\+U14/BP@/%14($-,05-3/2)W97-T +M97)N(CYA<W-E<G1-86ME2&%R9&QI;FL\+U14/BP*"3Q45"!#3$%34STB=V5S +M=&5R;B(^87-S97)T36%K941I<CPO5%0^(`H)/"]0/@H)/$Q)/CQ0(%-464Q% +M/2)M87)G:6XM8F]T=&]M.B`P:6XB/D9I;&4@=&5S=',Z(#Q45"!#3$%34STB +M=V5S=&5R;B(^87-S97)T27-296<\+U14/BP*"3Q45"!#3$%34STB=V5S=&5R +M;B(^87-S97)T27-$:7(\+U14/BP@/%14($-,05-3/2)W97-T97)N(CYA<W-E +M<G1)<U-Y;6QI;FL\+U14/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T +M1FEL95-I>F4\+U14/BP@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1&:6QE +M3FQI;FMS/"]45#XL"@D\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$9I;&5- +M=&EM93PO5%0^(`H)/"]0/@H)/$Q)/CQ0/D9I;&4@8V]N=&5N=',Z(#Q45"!# +M3$%34STB=V5S=&5R;B(^87-S97)T1FEL945M<'1Y/"]45#XL"@D\5%0@0TQ! +M4U,](G=E<W1E<FXB/F%S<V5R=$9I;&5.;VY%;7!T>3PO5%0^+"`\5%0@0TQ! +M4U,](G=E<W1E<FXB/F%S<V5R=$9I;&5#;VYT96YT<SPO5%0^+`H)/%14($-, +M05-3/2)W97-T97)N(CYA<W-E<G1497AT1FEL94-O;G1E;G1S/"]45#X@"@D\ +M+U`^"CPO54P^"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB4F5F97)E +M;F-E7T9I;&5S(CX\+T$^4F5F97)E;F-E($9I;&5S/"](,3X*/%`^36%N>2!T +M97-T<R!R97%U:7)E(')E861I;F<@82!P<F4M8V]N<W1R=6-T960@<F5F97)E +M;F-E(&9I;&4N(%-U8V@*9FEL97,@87)E('-T;W)E9"!W:71H('1H92!S;W5R +M8V4@8V]D92!F;W(@=&AE(&%S<V]C:6%T960@=&5S="!S=6ET92X*4F5F97)E +M;F-E(&9I;&5S(&%R92!N86UE9"!A8V-O<F1I;F<@=&\@=&AE('1E<W0@86YD +M(&UU<W0@8F4@=75E;F-O9&5D"G1O(&)E(&-H96-K960@:6YT;R!S;W5R8V4@ +M8V]N=')O;"X@"CPO4#X*/%`^1F]R(&5X86UP;&4L(&EF('EO=2!N965D(&$@ +M<F5F97)E;F-E('1A<B!A<F-H:79E('1O('5S92!W:71H"CQ45"!#3$%34STB +M=V5S=&5R;B(^=&5S=%]F;V\\+U14/BP@=&AE(&9I;&4@<VAO=6QD(&)E(&YA +M;65D"CQ45"!#3$%34STB=V5S=&5R;B(^=&5S=%]F;V\N=&%R/"]45#X@86YD +M('-T;W)E9"!I;B!S;W5R8V4@8V]N=')O;"!A<PH\5%0@0TQ!4U,](G=E<W1E +M<FXB/G1E<W1?9F]O+G1A<BYU=3PO5%0^+B`*/"]0/@H\4#Y7:71H:6X@=&AE +M('1E<W0@8V]D92P@>6]U(&-A;B!R96-O=F5R('1H92!R969E<F5N8V4@9FEL +M92!W:71H.B`*/"]0/@H\4%)%($-,05-3/2)W97-T97)N(B!35%E,13TB;6%R +M9VEN+6)O='1O;3H@,"XR:6XB/B9N8G-P.R`F;F)S<#L@97AT<F%C=%]R969E +M<F5N8V5?9FEL92@F<75O=#MT97-T7V9O;RYT87(F<75O=#LI.SPO4%)%/CQ0 +M/@I4:&4@/%14($-,05-3/2)W97-T97)N(CYE>'1R86-T7W)E9F5R96YC95]F +M:6QE*"D\+U14/B!F=6YC=&EO;B!W:6QL"G5U9&5C;V1E('1H92!R97%U97-T +M960@9FEL92!A;F0@<'5T('1H92!R97-U;'0@:6X@=&AE(&-U<G)E;G0*9&ER +M96-T;W)Y+B`*/"]0/@H\4#Y,;V]K(&%T(#Q45"!#3$%34STB=V5S=&5R;B(^ +M=&5S=%]R96%D7V9O<FUA=%]C<&EO7V)I;E]B92YC/"]45#X*9F]R(&$@<VEM +M<&QE(&5X86UP;&4@;V8@=&AI<R!U<V%G92X@"CPO4#X*/%`^02!F97<@;V8@ +M=&AE(&]L9&5R('1E<W1S('-T;W)E(')E9F5R96YC92!D871A('=I=&AI;B!T +M:&4@<V]U<F-E"F-O9&4@87,@82!H97@M96YC;V1E9"!A<G)A>2!O9B!C:&%R +M86-T97)S+B!4:&ES('=A<R!C;VUM;VX@8F5F;W)E"CQ45"!#3$%34STB=V5S +M=&5R;B(^97AT<F%C=%]R969E<F5N8V5?9FEL92@I/"]45#X@=V%S(&%D9&5D +M(&%N9"!I<PIN;W0@<F5C;VUM96YD960@9F]R(&YE=R!C;V1E+B`*/"]0/@H\ +M2#$@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](D1O<U]A;F1?1&]N=',B/CPO +M03Y$;W,@86YD($1O;G1S/"](,3X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G +M:6XM8F]T=&]M.B`P:6XB/D1/('5S92!A<W-E<G1S(&QI8F5R86QL>2X@270G +M<PH)8V]M;6]N('1O(&AA=F4@86X@87-S97)T(&]N(&%L;6]S="!E=F5R>2!L +M:6YE+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN +M(CY$3R!U<V4@87-S97)T17%U86Q);G0L"@EA<W-E<G1%<75A;%-T<FEN9RP@ +M87-S97)T17%U86Q-96T@=&\@=&5S="!E<75A;&ET>2!I;G-T96%D(&]F('!L +M86EN"@EA<W-E<G0H*3L@=&AE('-P96-I86QI>F5D(&9O<FUS(&=I=F4@82!L +M;W0@;6]R92!I;F9O<FUA=&EO;B!O;B!A"@EF86EL=7)E+B`*"3PO4#X*"3Q, +M23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY$3R!T97-T('EO=7(@ +M=&5S=',[(&5X<&5R:6UE;G0@8GD*"6-H86YG:6YG(&$@<&EE8V4@;V8@8V]D +M92!A;F0@;6%K92!S=7)E('EO=7(@=&5S="!F86EL<RX@268@>6]U('1H:6YK +M"@EY;W4G=F4@9F]U;F0@82!B=6<L('=E(')E8V]M;65N9"!W<FET:6YG('1H +M92!T97-T(&9I<G-T+"!M86ME('-U<F4*"71H92!T97-T(&9A:6QS+"!T:&5N +M(&9I>&EN9R!T:&4@8G5G+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN +M+6)O='1O;3H@,&EN(CY$3R!R=6X@86QL(&]F('1H92!T97-T<R!B969O<F4* +M"7-U8FUI='1I;F<@82!C:&%N9V4N($1E<&5N9&EN9R!O;B!Y;W5R(&)U:6QD +M(&5N=FER;VYM96YT+"`\5%0@0TQ!4U,](G=E<W1E<FXB/FUA:V4*"71E<W0\ +M+U14/B!O<B`\5%0@0TQ!4U,](G=E<W1E<FXB/FUA:V4@8VAE8VL\+U14/B!W +M:6QL('5S=6%L;'D@<G5N"@EA;&P@;V8@=&AE('1E<W1S+B`*"3PO4#X*"3Q, +M23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY$3TXG5"!R96QY(&]N +M(#Q45"!#3$%34STB=V5S=&5R;B(^2$%615\\+U14/@H);6%C<F]S(&9R;VT@ +M8V]N9FEG+F@N("A)9B!T:&4@=&5S=',@=7-E('1H92!S86UE(#Q45"!#3$%3 +M4STB=V5S=&5R;B(^2$%615\\+U14/@H);6%C<F]S(&%S('1H92!C;V1E(&)E +M:6YG('1E<W1E9"!T:&5N(&-O;F9I9W5R871I;VX@<')O8FQE;7,@=VEL;"!B +M90H)8V]V97)E9"!U<"XI(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM +M8F]T=&]M.B`P:6XB/D1/('5S92!R=6YT:6UE('1E<W1S(&9O<B!P;&%T9F]R +M;0H)9F5A='5R97,N($9O<B!E>&%M<&QE+"!T:&4@04-,('1E<W1S('1R>2!T +M;R!S970@86X@04-,(&]N(&$@9FEL92!A;F0*"7)E860@:70@8F%C:R!T;R!D +M971E<FUI;F4@:68@04-,('-U<'!O<G0@:7,@879A:6QA8FQE+"!T:&5N('1H +M97D*"65X97)C:7-E('1H92!L:6)A<F-H:79E($%#3"!H86YD;&EN9RX@"@D\ +M+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^1$\@;&]O +M:R!A="!E>&ES=&EN9R!T97-T<RX@3V9T96XL"@EA(&)U9R!C86X@8F4@=&5S +M=&5D(&)Y(&%D9&EN9R!J=7-T(&$@8V]U<&QE(&]F(&%S<V5R=',@=&\@86X* +M"65X:7-T:6YG('1E<W0@:6YS=&5A9"!O9B!W<FET:6YG(&$@;F5W(&]N92X@ +M"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^1$\@ +M:6UP<F]V92!E>&ES=&EN9R!T97-T<RX@26X*"7!A<G1I8W5L87(L(&EF('EO +M=2!S964@82!T97-T(&9A:6QU<F4@=&AA="!I<R!H87)D('1O('5N9&5R<W1A +M;F0L"@EC;VYS:61E<B!A9&1I;F<@82!F86EL=7)E*"D@;65S<V%G92!O<B!C +M;VUM96YT<R!S;R!T:&4@;F5X="!P97)S;VX*"7=I;&P@:&%V92!A;B!E87-I +M97(@=&EM92X@"@D\+U`^"@D\3$D^/%`^1$\@87-K(&]N('1H92!M86EL:6YG +M(&QI<W1S(&EF('EO=2!H879E('%U97-T:6]N<RX@4V]M92!T97-T<PH)87)E +M(&)E='1E<B!W<FET=&5N('1H86X@;W1H97)S+B`*"3PO4#X*/"]53#X*/$@Q +M($-,05-3/2)W97-T97)N(CX\02!.04U%/2)3;VUE7V5X86UP;&5S7V]F7W1E +M<W1S(CX\+T$^4V]M90IE>&%M<&QE<R!O9B!T97-T<SPO2#$^"CQ(,B!#3$%3 +M4STB=V5S=&5R;B(^/$$@3D%-13TB3&EB87)C:&EV95]R96%D7W1E<W1S(CX\ +M+T$^3&EB87)C:&EV90IR96%D('1E<W1S/"](,CX*/%`^5&AE<F4@87)E('%U +M:71E(&$@9F5W(')E860@=&5S=',@=&AA="!S:6UP;'D@<F5A9"!A('!R92UB +M=6EL=`II;G!U="!F:6QE(&%N9"!V97)I9GD@=&AE(')E<W5L=',N(%1H97-E +M('5S92`\5%0@0TQ!4U,](G=E<W1E<FXB/F5X=')A8W1?<F5F97)E;F-E7V9I +M;&4H*3PO5%0^"G1O(&1E8V]D92!A('5U96YC;V1E9"!I;G!U="!F:6QE+"!T +M:&5N(&]P96X@=&AA="!F:6QE('=I=&@@;&EB87)C:&EV90IA;F0@=F5R:69Y +M('1H92!R97-U;'1S+B!-;W-T(&]F('1H97-E(&%R92!P<F5T='D@<W1R86EG +M:'1F;W)W87)D+B`*/"]0/@H\2#(@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344] +M(DQI8F%R8VAI=F5?<F5A9"]W<FET95]T97-T<R(^/"]!/DQI8F%R8VAI=F4* +M<F5A9"]W<FET92!T97-T<SPO2#(^"CQ0/DUO<W0@;V8@=&AE('=R:71E('1E +M<W1S(')E86QL>2!J=7-T('9E<FEF>2!T:&%T(&QI8F%R8VAI=F4@8V%N"G)E +M860@=VAA="!I="!W<FET97,N(%1H97-E(&=E;F5R86QL>2!U<V4@=&AE(&UE +M;6]R>2!I;G1E<F9A8V5S+B!4:&5Y"F9E960@87)C:&EV92!E;G1R:65S(&EN +M=&\@=&AE('=R:71E<B!T;R!C<F5A=&4@86X@87)C:&EV92!I;B!M96UO<GD* +M86YD('1H96X@;W!E;B!T:&4@;65M;W)Y(&%G86EN('1O(')E860@=&AE(&1A +M=&$@8F%C:R!A;F0@=F5R:69Y('1H870*:70@:7,@=&AE('-A;64N(`H\+U`^ +M"CQ(,B!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB3&EB87)C:&EV95]W<FET +M95]V86QI9&%T;W)S(CX\+T$^3&EB87)C:&EV90IW<FET92!V86QI9&%T;W)S +M/"](,CX*/%`^02!F97<@=W)I=&4@=&5S=',@=W)I=&4@86X@87)C:&EV92!I +M;G1O(&UE;6]R>2!A;F0@=&AE;B!I;G-P96-T"G1H92!A8W1U86P@8GET97,@ +M=&\@=F5R:69Y('1H870@=&AE(&%R8VAI=F4@=V%S(&-R96%T960@8V]R<F5C +M=&QY+@I4:&5S92!T97-T<R!A<F4@;FEC92!T;R!H879E(&)U="!A<F4@=&5D +M:6]U<R!T;R!B=6EL9"X@"CPO4#X*/%`^5&AE<F4@87)E(&%L<V\@82!C;W5P +M;&4@;V8@<W5C:"!V86QI9&%T;W)S(&9O<B!B<V1T87(@86YD(&)S9&-P:6\N +M"E1H97-E(&%R92!V97)Y('1R:6-K>2!S:6YC92!T:&4@97AA8W0@9&%T82!C +M;VYT86EN<R!V86QU97,@=&AA="!T:&4*=&5S="!C86YN;W0@8V]M<&QE=&5L +M>2!C;VYT<F]L("AS=6-H(&%S('1H92!C=7)R96YT('1I;64@;W(*=7-E<FYA +M;64I+B`*/"]0/@H\2#(@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](D1I<VM? +M=&5S=',B/CPO03Y$:7-K('1E<W1S/"](,CX*/%`^3&EB87)C:&EV92=S(&1I +M<VL@22]/($%027,L(&%S('=E;&P@87,@8G-D=&%R(&%N9"!B<V1C<&EO+"!N +M965D('1O"F]P97)A=&4@8GD@=F5R:69Y:6YG(&9I;&5S(&]N(&1I<VLN(%1O +M(&UA:V4@=&AI<R!E87-I97(L('1H92!T97-T"F9R86UE=V]R:R!N;W<@:&%S +M(&$@;&%R9V4@;G5M8F5R(&]F(&%S<V5R=&EO;G,@=&\@=F5R:69Y('1I;65S +M=&%M<',L"G!E<FUI<W-I;VYS+"!A;F0@;W1H97(@8F%S:6,@9FEL92!D871A +M+B!4:&5S92!A<W-E<G1I;VYS('5S90IA<'!R;W!R:6%T92!S>7-T96T@8V%L +M;',@9F]R(&5A8V@@<&QA=&9O<FT[(&YE=R!T97-T<R!S:&]U;&0@=')Y('1O +M"F%V;VED('5S:6YG(#Q45"!#3$%34STB=V5S=&5R;B(^<W1A="@I/"]45#XL +M('=H:6-H(&ES(&YO="!U;FEF;W)M;'D*879A:6QA8FQE+B`*/"]0/@H\2#(@ +M0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](D9U>GI?=&5S=&5R(CX\+T$^1G5Z +M>B!T97-T97(\+T@R/@H\4#Y4:&4@9G5Z>B!T97-T97(@:7,@;VYE(&]F('1H +M92!F97<@=&5S=',@=&AA="!D;V5S(&YO="!A9V=R97-S:79E;'D*=7-E(&%S +M<V5R=&EO;G,N($ET<R!P=7)P;W-E(&ES('1O('1R>2!A;F0@8W)A<V@@;&EB +M87)C:&EV92!B>2!F965D:6YG"FET(&EN<'5T('1H870@:7,@<VQI9VAT;'D@ +M9&%M86=E9"X@*%)E;65M8F5R('1H870@;&EB87)C:&EV92!D;V5S"FAA=F4@ +M<V]M92!F86EL<V%F92!C;V1E('1H870@9&5L:6)E<F%T96QY(&%B;W)T<R!T +M:&4@96YT:7)E('!R;V=R86T*:68@8V5R=&%I;B!I;G9A<FEA;G1S(&%R92!V +M:6]L871E9"XI(`H\+U`^"CQ0/E-I;F-E(&$@9G5Z>B!F86EL=7)E(&-A=7-E +M<R!A(&-R87-H+"!I="=S(&EM<&]S<VEB;&4@=&\@<F5P;W)T('1H90IE<G)O +M<B!T;R!T:&4@8V]N<V]L92P@<V\@=&AE(&9U>GH@=&5S=&5R(&EN<W1E860@ +M9V5N97)A=&5S(&$*<F%N9&]M;'DM9&%M86=E9"!F:6QE+"!S879E<R!T:&%T +M(&9I;&4@=&\@9&ES:RP@=&AE;B!R=6YS('1H92!F:6QE"G1H<F]U9V@@;&EB +M87)C:&EV92!T;R!T<GD@=&\@<')O=F]K92!A(&-R87-H+B!)9B!L:6)A<F-H +M:79E(&-R87-H97,*=&AE(&5N=&ER92!T97-T97(L('1H92!I;G!U="!T:&%T +M(&-A=7-E9"!T:&4@8W)A<V@@=VEL;"!B92!A=F%I;&%B;&4*;VX@9&ES:R!F +M;W(@9G5R=&AE<B!A;F%L>7-I<RX@"CPO4#X*/%`^06QT:&]U9V@@:70@:7,@ +M=6YU<W5A;"!F;W(@82!T97-T('!R;V=R86T@=&\@=7-E(')A;F1O;2!I;G!U +M="P@=&AE"F9U>GH@=&5S=&5R(&AA<R!P<F]V96X@<75I=&4@=7-E9G5L(&%T +M('5N8V]V97)I;F<@<&]O<B!E<G)O<@IH86YD;&EN9RX@56YF;W)T=6YA=&5L +M>2P@=&AE(&YE960@=&\@=W)I=&4@=&AE(&1A=&$@=&\@9&ES:R!B969O<F4* +M96%C:"!T97-T(&ES(&$@<VEG;FEF:6-A;G0@<&5R9F]R;6%N8V4@:7-S=64N +M(`H\+U`^"CQ(,B!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB3&%R9V5?=&%R +M7W1E<W1E<B(^/"]!/DQA<F=E('1A<B!T97-T97(\+T@R/@H\4#Y4:&4@;&%R +M9V4@=&%R('1E<W1E<B!A='1E;7!T<R!T;R!E>&5R8VES92!B;W5N9&%R>2!C +M87-E<R!W:71H('9E<GD*;&%R9V4@96YT<FEE<RP@=7`@=&\@,2!T97)A8GET +M92X@3V8@8V]U<G-E+"!W<FET:6YG(&$@,2!T97)A8GET90IE;G1R>2!T;R!A +M;B!U;F-O;7!R97-S960@87)C:&EV92!O;B!D:7-K(&]R(&UE;6]R>2!I<R!U +M;F%C8V5P=&%B;&4L"F)O=&@@9F]R('!E<F9O<FUA;F-E(&%N9"!S<&%C92!R +M96%S;VYS+B!%=F5N(&=Z:7`@;W(@8GII<#(*8V]M<')E<W-I;VX@=V]N)W0@ +M:&5L<#L@86QT:&]U9V@@<VUA;&QE<BP@=&AE(&]U='!U="!I<R!S=&EL;"!L +M87)G90IA;F0@=&AE('1I;64@;F5E9&5D('1O(&-O;7!R97-S('-U8V@@82!L +M87)G92!A;6]U;G0@;V8@9&%T82!I<PIP<F]H:6)I=&EV92X@4V\@=&AE(&QA +M<F=E('1A<B!T97-T97(@=7-E<R!A('1R:6-K+B`*/"]0/@H\4#Y296UE;6)E +M<B!T:&%T(&%N('5N8V]M<')E<W-E9"!T87(@87)C:&EV92!C;VYS:7-T<R!O +M9B!A;'1E<FYA=&EN9PIH96%D97)S(&%N9"!B;V1I97,N($EF('1H92!B;V1I +M97,@8V]N<VES="!E;G1I<F5L>2!O9B!Z97)O(&)Y=&5S+`IT:&5N(&%L;"!T +M:&%T)W,@;F5E9&5D('1O(')E8V]N<W1R=6-T('1H92!A<F-H:79E(&ES('1O +M(')E8V]R9"!T:&4*<F5L871I=F5L>2!S;6%L;"!H96%D97)S(&%N9"!S=&]R +M92!A(&-O=6YT(&]F(&5A8V@@8V]N=&EG=6]U<R!B;&]C:PIO9B!Z97)O<RX@ +M5&AI<R!S:6UP;&4@)G%U;W0[<G5N+6QE;F=T:"!E;F-O9&EN9R9Q=6]T.R!I +M<R!V97)Y"F5F9F5C=&EV92P@8V]M<')E<W-I;F<@82!S86UP;&4@87)C:&EV +M92!W:71H(&$@9&]Z96X@96YT<FEE<R!D;W=N('1O"FIU<W0@82!F97<@:VEL +M;V)Y=&5S+"!E=F5N(&EF('1H;W-E(&5N=')I97,@<F%N9V4@=7`@=&\@,51" +M+B`*/"]0/@H\4#Y">2!W<FET:6YG(&$@8W5S=&]M($DO3R!L87EE<B!T:&%T +M(&EM<&QE;65N=',@<W5C:"!C;VUP<F5S<VEO;BP@=V4*8V%N('=R:71E('9E +M<GD@;&%R9V4@96YT<FEE<R!T:')O=6=H(&QI8F%R8VAI=F4@=&AE;B!R96%D +M('1H96T@8F%C:PIA;F0@=F5R:69Y('1H870@;&EB87)C:&EV92!C;W)R96-T +M;'D@:&%N9&QE<R!A;&P@;V8@=&AE(&)O=6YD87)Y"F-A<V5S+B`*/"]0/@H\ +M4#Y/9B!C;W5R<V4L(&5V96X@<V-A;FYI;F<@;W5T<'5T('1O(&1E=&5R;6EN +M92!Z97)O(&)L;V-K<R!C86X@=&%K90IQ=6ET92!A('=H:6QE+"!S;R!T:&4@ +M;&%R9V4@=&%R('1E<W1E<B!M86ME<R!O;F4@;6]R92!O<'1I;6EZ871I;VXZ +M"DQI8F%R8VAI=F4@:7,@)G%U;W0[;6]S=&QY)G%U;W0[('IE<F\M8V]P>2X@ +M5VAE;B!Y;W4@9VEV92!I="!A(&QA<F=E"F)L;V-K('1O('=R:71E('1O(&%N +M(&5N=')Y(&)O9'DL(&ET('=I;&P@<&%S<R!P;VEN=&5R<R!S=')A:6=H=`IT +M:')O=6=H('1O('1H92!O=71P=70@<F]U=&EN92P@97AC97!T(&EN('1H;W-E +M(&-A<V5S('=H97)E(&ET(&UU<W0*8V]P>2!D871A('1O(&-O<G)E8W1L>2!B +M=6EL9"!B;&]C:W,N(%1H92!L87)G92!T87(@=&5S=&5R('1A:V5S"F%D=F%N +M=&%G92!O9B!T:&ES('1O('%U:6-K;'D@9&5T96-T('=H96X@82!B;&]C:R!B +E96EN9R!W<FET=&5N(&]U=""\'GL/0!0``#MMG`(````````````` +` +end 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 new file mode 100644 index 0000000..be9a921 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part04.rar.uu @@ -0,0 +1,299 @@ +begin 644 - +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 +M('-A;64@87,@<V]M92!O9B!T:&4@9&%T82!T:&%T('=A<R!G:79E;B!B>0IT +M:&4@=&5S="!A<R!T:&4@96YT<GD@8F]D>2P@86YD('-I;6EL87)L>2!W:&5N +M(')E861I;F<@=&AE(&%R8VAI=F4*8F%C:RX@"CPO4#X*/%`^5&%K96X@=&]G +M971H97(L('1H97-E('1R:6-K<R!A;&QO=R!T:&4@;&%R9V4@=&%R('=R:71E +M<B!T;R!T97-T"F9O<B!I<W-U97,@<W5C:"!A<R!P<F]P97(@<W1O<F%G92!O +M9B!V97)Y(&QA<F=E(&9I;&4@<VEZ97,@*'1A<B!F:6QE<PIS=7!P;W)T('-E +M=F5R86P@9&EF9F5R96YT('=A>7,@=&\@<W1O<F4@9FEL92!S:7IE<R!W:&EC +M:"!T<F%D92!O9F8*<&]R=&%B:6QI='D@=F5R<W5S(')A;F=E.R!L:6)A<F-H +M:79E('1R:65S('1O('5S92!T:&4@;6]S="!P;W)T86)L90IO;F4@:70@8V%N +M(&9O<B!E86-H(&5N=')Y*2!A;F0@:6YT96=E<B!O=F5R9FQO=R`H5VEN9&]W +M<R`S,BUB:70@/%14($-,05-3/2)W97-T97)N(CYO9F9?=#PO5%0^"F)R;VME +M('1H92!L87)G92!T87(@=&5S="!A;F0@;&5D(&QI8F%R8VAI=F4@=&\@;6%K +M92!H96%V:65R('5S92!O9@H\5%0@0TQ!4U,](G=E<W1E<FXB/FEN=#8T7W0\ +M+U14/B!I;G1E<FYA;&QY*2!I;B!A('1E<W0@=&AA="!R=6YS(&EN"G5N9&5R +M(#$O-"!S96-O;F0N(`H\+U`^"CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P +M:6XB/CQ"4CX*/"]0/@H\+T)/1%D^"CPO2%1-3#Y8>70BD$0`83```(].```# +MC+J$FKM,-4$4,!H`I($``$QI8F%R8VAI=F5!9&1I;F=497-T,BYH=&ULP,P) +M7SM",E\[0CPA1$]#5%E012!(5$U,(%!50DQ)0R`B+2\O5S-#+R]$5$0@2%1- +M3"`T+C`@5')A;G-I=&EO;F%L+R]%3B(^"CQ(5$U,/@H\2$5!1#X*"3Q-151! +M($A45%`M15%5258](D-/3E1%3E0M5%E012(@0T].5$5.5#TB=&5X="]H=&UL +M.R!C:&%R<V5T/75T9BTX(CX*"3Q4251,13X\+U1)5$Q%/@H)/$U%5$$@3D%- +M13TB1T5.15)!5$]2(B!#3TY414Y4/2),:6)R94]F9FEC92`S+C,@("A5;FEX +M*2(^"@D\345402!.04U%/2)#4D5!5$5$(B!#3TY414Y4/2(R,#$Q,#8R-CLR +M,C(S-3$P,"(^"@D\345402!.04U%/2)#2$%.1T5$(B!#3TY414Y4/2(R,#$Q +M,#8R-CLR,C(U-#4P,"(^"@D\4U193$4@5%E013TB=&5X="]C<W,B/@H)/"$M +M+0H)"4!P86=E('L@;6%R9VEN.B`P+C<Y:6X@?0H)"5`@>R!M87)G:6XM8F]T +M=&]M.B`P+C`X:6X@?0H)"4@Q('L@;6%R9VEN+6)O='1O;3H@,"XP.&EN('T* +M"0E(,2YW97-T97)N('L@9F]N="UF86UI;'DZ("),:6)E<F%T:6]N(%-E<FEF +M(BP@<V5R:68@?0H)"4@Q+F-J:R![(&9O;G0M9F%M:6QY.B`B0FET<W1R96%M +M(%9E<F$@4V%N<R(@?0H)"4@Q+F-T;"![(&9O;G0M9F%M:6QY.B`B1G)E95-A +M;G,B('T*"0E04D4N8VIK('L@9F]N="UF86UI;'DZ(")":71S=')E86T@5F5R +M82!386YS(BP@;6]N;W-P86-E('T*"0E(,B![(&UA<F=I;BUB;W1T;VTZ(#`N +M,#AI;B!]"@D)2#(N8W1L('L@9F]N="UF86UI;'DZ(")&<F5E4V%N<R(@?0H) +M"514+F-J:R![(&9O;G0M9F%M:6QY.B`B0FET<W1R96%M(%9E<F$@4V%N<R(L +M(&UO;F]S<&%C92!]"@DM+3X*"3PO4U193$4^"CPO2$5!1#X*/$)/1%D@3$%. +M1STB96XM55,B($1)4CTB3%12(CX*/$@Q($-,05-3/2)W97-T97)N(CY);G1R +M;V1U8W1I;VX\+T@Q/@H\4#Y,:6)A<F-H:79E(&ES(&YO=R!A(&9A:7)L>2!C +M;VUP;&5X('!I96-E(&]F('-O9G1W87)E('1H870@<G5N<R!O;@IA(&YU;6)E +M<B!O9B!D:69F97)E;G0@<&QA=&9O<FUS+B!!('1H;W)O=6=H('1E<W0@<W5I +M=&4@:7,@97-S96YT:6%L"F)O=&@@9F]R('9E<FEF>6EN9R!N97<@<&]R=',@ +M86YD(&9O<B!E;G-U<FEN9R!T:&%T(&9U='5R92!C:&%N9V5S"F1O;B=T(&)R +M96%K(&5X:7-T:6YG(&9U;F-T:6]N86QI='DN(`H\+U`^"CQ0/D%N>2!S:6=N +M:69I8V%N="!C:&%N9V4@=&\@;&EB87)C:&EV92P@:6YC;'5D:6YG(&UO<W0@ +M8G5G(&9I>&5S+`IS:&]U;&0@8F4@86-C;VUP86YI960@8GD@;F5W('1E<W1S +M(&]R(&-H86YG97,@=&\@97AI<W1I;F<@=&5S=',N(%1H:7,*87)T:6-L92!E +M>'!L86EN<R!H;W<@=&AE(&QI8F%R8VAI=F4@=&5S="!S=6ET97,@=V]R:R!A +M;F0@:&]W('1O"F5X=&5N9"!T:&5M+B`*/"]0/@H\2#$@0TQ!4U,](G=E<W1E +M<FXB/CQ!($Y!344](D)U:6QD:6YG7V%N9%]2=6YN:6YG7W1H95]497-T7U!R +M;V=R86US(CX\+T$^"D)U:6QD:6YG(&%N9"!2=6YN:6YG('1H92!497-T(%!R +M;V=R86US/"](,3X*/%`^16%C:"!M86IO<B!C;VUP;VYE;G0M+6QI8F%R8VAI +M=F4L(&)S9'1A<BP@86YD(&)S9&-P:6\M+6AA<R!A('1E<W0*<')O9W)A;2!T +M:&%T(&5X97)C:7-E<R!T:&4@9G5N8W1I;VYA;&ET>2!O9B!T:&%T(&-O;7!O +M;F5N="X@5&AE<V4*=&5S="!P<F]G<F%M<R!A<F4@8V]M<&EL960@:6X@=&AE +M('-A;64@=V%Y('1H870@=&AE(')E<W0@;V8@=&AE"FQI8F%R8VAI=F4@<W5I +M=&4@:7,@8V]M<&EL960N(`H\+U`^"CQ0/E1O(')U;B!T:&4@=&5S="!P<F]G +M<F%M<RP@>6]U(&YE960@=&\@9VEV92!T:&5M('1W;R!P:65C97,@;V8*:6YF +M;W)M871I;VXZ(`H\+U`^"CQ53#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O +M='1O;3H@,&EN(CY4:&4@9G5L;"!P871H('1O('1H92!D:7)E8W1O<GD*"6AO +M;&1I;F<@=&AE("9Q=6]T.W)E9F5R96YC92!F:6QE<R9Q=6]T.R`*"3PO4#X* +M"3Q,23X\4#Y4:&4@9G5L;"!P871H('1O('1H92!E>&5C=71A8FQE('!R;V=R +M86T@8F5I;F<@=&5S=&5D("AN;W0*"6%P<&QI8V%B;&4@=&\@;&EB87)C:&EV +M95]T97-T('-I;F-E(&QI8F%R8VAI=F4@:7,@8V]M<&EL960@:6YT;R!T:&4* +M"71E<W0@<')O9W)A;2D@"@D\+U`^"CPO54P^"CQ0/E1H92!R969E<F5N8V4@ +M9FEL97,@87)E(&$@8V]L;&5C=&EO;B!O9B!K;F]W;B!I;G!U=',@=&AA="!A +M<F4@=7-E9`II;B!T:&4@=&5S="!P<F]C97-S+B!4:&5Y(&%R92!A;&P@<W1O +M<F5D(&EN('5U96YC;V1E9"!F;W)M870@:6X@9FEL97,*=VET:"!A("9Q=6]T +M.RYU=29Q=6]T.R!E>'1E;G-I;VXN(%1H92!T97-T('!R;V=R86US(&QO;VL@ +M:6X@82!F97<*<W1A;F1A<F0@;&]C871I;VYS.R!I9B!N;VYE(&]F('1H;W-E +M('=O<FLL('EO=2=L;"!N965D('1O('-P96-I9GD@=&AE"CQ45"!#3$%34STB +M=V5S=&5R;B(^+7(\+U14/B!O<'1I;VX@=VET:"!T:&4@9G5L;"!P871H;F%M +M92!T;R!T:&4*87!P<F]P<FEA=&4@9&ER96-T;W)Y+B`*/"]0/@H\4#Y4:&4@ +M8G-D=&%R7W1E<W0@86YD(&)S9&-P:6]?=&5S="!P<F]G<F%M<R!R=6X@8G-D +M=&%R(&]R(&)S9&-P:6\*<F5P96%T961L>3L@=&AE>2!N965D('1H92!F=6QL +M('!A=&@@=&\@=&AE(&%P<')O<')I871E(&5X96-U=&%B;&4N"D%L=&AO=6=H +M(&)S9'1A<E]T97-T(&%N9"!B<V1C<&EO7W1E<W0@87)E('-P96-I9FEC86QL +M>2!I;G1E;F1E9"!F;W(*=&5S=&EN9R!B<V1T87(@86YD(&)S9&-P:6\L('1H +M97D@<VAO=6QD(&)E('5S86)L92!F;W(@=&5S=&EN9R!O=&AE<@IT87(@86YD +M(&-P:6\@<')O9W)A;7,N($EN(&9A8W0L(')U;FYI;F<@=&AE<V4@=&5S="!P +M<F]G<F%M<R!A9V%I;G-T"F]T:&5R('1A<B!I;7!L96UE;G1A=&EO;G,@:7,@ +M82!G;V]D('=A>2!T;R!V97)I9GD@=&AA="!T:&4@=&5S=`IP<F]G<F%M<R!T +M:&5M<V5L=F5S(&%R92!W;W)K:6YG(&-O<G)E8W1L>2X@"CPO4#X*/%`^5VAE +M;B!R=6XL('1H92!T97-T('!R;V=R86US(&]U='!U="!A('!R;V=R97-S(&UE +M<W-A9V4@9F]R(&5A8V@*=&5S="P@86X@97)R;W(@;65S<V%G92!F;W(@96%C +M:"!F86EL960@87-S97)T:6]N+"!A;F0@82!F:6YA;`IS=6UM87)Y.B`*/"]0 +M/@H\4%)%($-,05-3/2)W97-T97)N(CXF;F)S<#M2=6YN:6YG('1E<W1S(&EN +M.B`O=&UP+V)S9'1A<E]T97-T+C(P,#DM,#(M,3=4,C$N,S`N-#`M,#`P"B9N +M8G-P.U)E9F5R96YC92!F:6QE<R!W:6QL(&)E(')E860@9G)O;3H@)FYB<W`[ +M("9N8G-P.R]H;VUE+W1I;2]L:6)A<F-H:79E+W1R=6YK+W1A<B]T97-T"B9N +M8G-P.U)U;FYI;F<@=&5S=',@;VXZ("]H;VUE+W1I;2]L:6)A<F-H:79E+W1R +M=6YK+V)S9'1A<@HF;F)S<#M%>&5R8VES:6YG.B!B<V1T87(@,BXV+CDP,&$@ +M+2!L:6)A<F-H:79E(#(N-BXY,#!A"B9N8G-P.S`Z('1E<W1?,`HF;F)S<#LQ +M.B!T97-T7V)A<VEC"B9N8G-P.S(Z('1E<W1?8V]P>0HF;F)S<#L@=&5S=%]C +M;W!Y+F,Z,3<Q.B!!<W-E<G1I;VX@9F%I;&5D.B!);G1S(&YO="!E<75A;`HF +M;F)S<#L@)FYB<W`[("9N8G-P.R`P/3`*)FYB<W`[("9N8G-P.R`F;F)S<#L@ +M;'-T870H;F%M93(@*R`S+"`F86UP.W-T,BD]+3$*)FYB<W`[('1E<W1?8V]P +M>2YC.C$W,3H@1F%I;&5D(#(V-"!T:6UE<PHF;F)S<#LS.B!T97-T7V=E=&1A +M=&4*)FYB<W`[-#H@=&5S=%]H96QP"B9N8G-P.R`F;F)S<#L@+BXN(&UO<F4@ +M;W5T<'5T(&]M:71T960@+BXN"B9N8G-P.S$@;V8@,3,@=&5S=',@<F5P;W)T +M960@9F%I;'5R97,*)FYB<W`[(%1O=&%L(&]F(#$P-3`Y-R!A<W-E<G1I;VYS +M(&-H96-K960N"B9N8G-P.R!4;W1A;"!O9B`R-C0@87-S97)T:6]N<R!F86EL +M960N"B9N8G-P.R!4;W1A;"!O9B`P(&%S<V5R=&EO;G,@<VMI<'!E9"X\+U!2 +M13X\4#X*5&AE(&AE861E<B!L:6YE<R!H97)E(')E8V]R9#H@"CPO4#X*/%5, +M/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/G1H92!D:7)E +M8W1O<GD@=&AA="!W:6QL(&)E('5S960*"69O<B!S8W)A=&-H(&9I;&5S(&1U +M<FEN9R!T:&4@=&5S="X@268@82!T97-T(&9A:6QS+"!T:&4@<V-R871C:`H) +M9FEL97,@=VEL;"!B92!L969T(&)E:&EN9"!I;B!T:&ES(&1I<F5C=&]R>2!F +M;W(@9G5R=&AE<B!D96)U9V=I;F<N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M +M87)G:6XM8F]T=&]M.B`P:6XB/E1H92!D:7)E8W1O<GD@9G)O;2!W:&EC:"!T +M:&4*"7)E9F5R96YC92!F:6QE<R!W:6QL(&)E(')E860N(`H)/"]0/@H)/$Q) +M/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D9O<B!B<V1T87)?=&5S +M="!A;F0@8G-D8W!I;U]T97-T+`H)=&AE(&9U;&P@<&%T:"!T;R!T:&4@97AE +M8W5T86)L92!B96EN9R!E>&5R8VES960N(`H)/"]0/@H)/$Q)/CQ0/D)A<VEC +M('9E<G-I;VX@:6YF;W)M871I;VX@86)O=70@=&AE('1A<F=E="X@"@D\+U`^ +M"CPO54P^"CQ0/DEN('1H:7,@8V%S92P@=&AE('1R86EL97(@:6YD:6-A=&5S +M('1H870@;VYE('1E<W0@9F%I;&5D+B!!<R!Y;W4*8V%N('-E92P@=&AE<F4@ +M=V%S(&$@<VEN9VQE(&%S<V5R=&EO;B!I;B!T:&4@8V]D92!T:&%T(&9A:6QE +M9"`R-C0*=&EM97,N(%1H92!F:7)S="!T:6UE(&ET(&9A:6QE9"P@:70@=V%S +M(&)E8V%U<V4@86X@/%14($-,05-3/2)W97-T97)N(CYL<W1A="@I/"]45#X* +M8V%L;"!R971U<FYE9"`M,2!I;G-T96%D(&]F('1H92!Z97)O('1H870@=V%S +M(&5X<&5C=&5D+B`*/"]0/@H\2#$@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344] +M(D)A<VEC7W1E<W1?=&5R;6EN;VQO9WDB/CPO03Y"87-I8R!T97-T"G1E<FUI +M;F]L;V=Y/"](,3X*/%`^16%C:"!T97-T('!R;V=R86T@8V]N<VES=',@;V8@ +M82!N=6UB97(@;V8@)G%U;W0[=&5S=',F<75O=#LN($5A8V@*=&5S="!H87,@ +M82!N86UE(&%N9"!I<R!I;7!L96UE;G1E9"!I;B!A($,@<V]U<F-E(&9I;&4@ +M=VET:"!T:&4@<V%M90IN86UE(&%S('1H92!T97-T+B!497-T<R!W;W)K(&)Y +M('!E<F9O<FUI;F<@<V]M92!S97)I97,@;V8@;W!E<F%T:6]N<PIA;F0@;6%K +M:6YG("9Q=6]T.V%S<V5R=&EO;G,F<75O=#L@86)O=70@=&AE(')E<W5L=',N +M($9O<B!E>&%M<&QE+`IM86YY(&]F('1H92!L:6)A<F-H:79E('1E<W1S(&]P +M96X@86YD(')E860@86X@87)C:&EV92!A;F0@87-S97)T('1H870*<&%R=&EC +M=6QA<B!O<&5R871I;VYS('-U8V-E961E9"!O<B!F86EL960N("A997,L(&ET +M(&ES(&]F=&5N"FEM<&]R=&%N="!T;R!V97)I9GD@=&AA="!I;&QE9V%L(')E +M<75E<W1S(&=E;F5R871E(&%P<')O<')I871E"F5R<F]R<RXI(`H\+U`^"CQ0 +M/DAE<F4@:7,@82!S;VUE=VAA="!E9&ET960@97AC97)P="!F<F]M(#Q45"!# +M3$%34STB=V5S=&5R;B(^=&5S=%]C;VUP871?>FEP/"]45#XL"G=H:6-H('9E +M<FEF:65S(&-O;7!A=&EB:6QI='D@=VET:"!V87)I;W5S(%I)4"!F;W)M870@ +M87)C:&EV97,Z(`H\+U`^"CQ04D4@0TQ!4U,](G=E<W1E<FXB/B9N8G-P.R!$ +M149)3D5?5$535"AT97-T7V-O;7!A=%]Z:7`I"B9N8G-P.R!["B9N8G-P.R`F +M;F)S<#L@+RH@+BXN('-E='5P(&]M:71T960@+BXN("HO"B9N8G-P.R`F;F)S +M<#L@87-S97)T*"AA(#T@87)C:&EV95]R96%D7VYE=R@I*2`A/2!.54Q,*3L* +M)FYB<W`[("9N8G-P.R!A<W-E<G1%<75A;$EN="A!4D-(259%7T]++`HF;F)S +M<#L@)FYB<W`[("9N8G-P.R`F;F)S<#L@87)C:&EV95]R96%D7W-U<'!O<G1? +M8V]M<')E<W-I;VY?86QL*&$I*3L*)FYB<W`[("9N8G-P.R!A<W-E<G1%<75A +M;$EN="A!4D-(259%7T]++`HF;F)S<#L@)FYB<W`[("9N8G-P.R`F;F)S<#L@ +M87)C:&EV95]R96%D7W-U<'!O<G1?9F]R;6%T7V%L;"AA*2D["B9N8G-P.R`F +M;F)S<#L@97AT<F%C=%]R969E<F5N8V5?9FEL92AN86UE*3L*)FYB<W`[("9N +M8G-P.R!A<W-E<G1%<75A;$EN="A!4D-(259%7T]++`HF;F)S<#L@)FYB<W`[ +M("9N8G-P.R`F;F)S<#L@87)C:&EV95]R96%D7V]P96Y?9FEL96YA;64H82P@ +M;F%M92P@,3`R-#`I*3L*)FYB<W`[("9N8G-P.R`F;F)S<#LO*B!296%D(&9I +M<G-T(&5N=')Y+B`J+PHF;F)S<#L@)FYB<W`[("9N8G-P.V%S<V5R=$5Q=6%L +M26YT*$%20TA)5D5?3TLL(&%R8VAI=F5?<F5A9%]N97AT7VAE861E<BAA+"`F +M86UP.V%E*2D["B9N8G-P.R`F;F)S<#L@)FYB<W`[87-S97)T17%U86Q3=')I +M;F<H)G%U;W0[345402U)3D8O34%.249%4U0N348F<75O=#LL(&%R8VAI=F5? +M96YT<GE?<&%T:&YA;64H864I*3L\+U!213X\4#X*5&AE(#Q45"!#3$%34STB +M=V5S=&5R;B(^87-S97)T6%A86#PO5%0^(&UA8W)O<R!C:&5C:R!T:&%T('1H +M96ER"F%R9W5M96YT<R!S871I<V9Y(&-E<G1A:6X@8V]N9&ET:6]N<RX@268@ +M=&AE(&%S<V5R=&EO;B!F86EL<RTM9F]R"F5X86UP;&4L(&EF('1H92!N86UE +M(&]F('1H92!F:7)S="!E;G1R>2!I<R!N;W0*)G%U;W0[345402U)3D8O34%. +M249%4U0N348F<75O=#LM+71H92!M86-R;R!W:6QL(')E<&]R="!T:&4@<')O +M8FQE;2X@"CPO4#X*/%`^5&AE<F4@87)E('1W;R!I;7!O<G1A;G0@9&EF9F5R +M96YC97,@8F5T=V5E;B!T:&4@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G18 +M6%@\+U14/@IM86-R;W,@=7-E9"!I;B!T:&5S92!T97-T(&AA<FYE<W-E<R!A +M;F0@=&AE($E33R!#('-T86YD87)D(#Q45"!#3$%34STB=V5S=&5R;B(^87-S +M97)T/"]45#X*;6%C<F\Z($9I<G-T+"!T:&5S92!A<W-E<G0@;6%C<F]S(&1O +M;B=T(&5X:70@;VX@9F%I;'5R92X@0GD@9&5F875L="P*=&AE>2!R97!O<G0@ +M=&AE(&9A:6QU<F4@86YD(')E='5R;B!Z97)O("AT:&4@0R!N;W1I;VX@;V8@ +M)G%U;W0[9F%L<V4F<75O=#LI+@I396-O;F0L('1H97-E(&UA8W)O<R!I;F-L +M=61E('9A<FEA;G1S('1H870@<&5R9F]R;2!A('9A<FEE='D@;V8*<W!E8VEF +M:6,@=&5S=',N(%1H97-E('-P96-I9FEC('9E<G-I;VYS("AS=6-H(&%S(#Q4 +M5"!#3$%34STB=V5S=&5R;B(^87-S97)T17%U86Q);G0\+U14/@IA;F0@/%14 +M($-,05-3/2)W97-T97)N(CYA<W-E<G1%<75A;%-T<FEN9SPO5%0^(&EN('1H +M92!E>&%M<&QE(&%B;W9E*0IG96YE<F%T92!D971A:6QE9"!L;V<@;65S<V%G +M97,@;VX@9F%I;'5R92X@26X@<&%R=&EC=6QA<BP@=&AE>2!P<FEN=`IT:&4@ +M=F%L=64@;V8@8F]T:"!A<F=U;65N=',[('1H:7,@9W)E871L>2!S:6UP;&EF +M:65S(&1I86=N;W-I;F<*9F%I;'5R97,N(`H\+U`^"CQ(,2!#3$%34STB=V5S +M=&5R;B(^/$$@3D%-13TB3&EF95]C>6-L95]O9E]A7W1E<W0B/CPO03Y,:69E +M(&-Y8VQE(&]F"F$@=&5S=#PO2#$^"CQ0/D5A8V@@=&5S="!R97-I9&5S(&EN +M(&$@0R!S;W5R8V4@9FEL92!W:71H('1H92!S86UE(&YA;64@87,@=&AE"G1E +M<W0N(%1H92!T97-T(&ET<V5L9B!I<R!A(&9U;F-T:6]N('1H870@=&%K97,@ +M;F\@87)G=6UE;G1S+B!4:&4@=&5S=`II<R!D96-L87)E9"!U<VEN9R!T:&4@ +M/%14($-,05-3/2)W97-T97)N(CY$149)3D5?5$535"@I/"]45#X@;6%C<F\N +M"E1H:7,@;6%C<F\@<V5R=F5S(&)O=&@@=&\@96YS=7)E('1H870@=&AE('1E +M<W0@:7,@9&5C;&%R960@8V]R<F5C=&QY"F%N9"!A<R!A(&QA8F5L('1H870@ +M8V%N(&)E('5S960@=&\@;&]C871E(&%L;"!D969I;F5D('1E<W1S+B`H3VX* +M56YI>"UL:6ME('!L871F;W)M<RP@82!S:6UP;&4@/%14($-,05-3/2)W97-T +M97)N(CYG<F5P/"]45#X@;W!E<F%T:6]N"FES('5S960@=&\@8V]N<W1R=6-T +M(&$@9FEL92!C86QL960@/%14($-,05-3/2)W97-T97)N(CYL:7-T+F@\+U14 +M/@IT:&%T(&AO;&1S('1H92!N86UE<R!O9B!A;&P@;V8@=&AE('1E<W1S+B!4 +M:&ES(&UA:V5S(&ET('9E<GD@96%S>2!T;PIA9&0@;F5W('1E<W1S+BD@"CPO +M4#X*/%`^5&AE('1E<W0@:&%R;F5S<R!D971E<FUI;F5S('=H:6-H('1E<W1S +M('1O(')U;BX@270@9V]E<R!T:')O=6=H"G1H92!F;VQL;W=I;F<@<W1E<',@ +M=VAE;F5V97(@:70@<G5N<R!A('1E<W0Z(`H\+U`^"CQ53#X*"3Q,23X\4"!3 +M5%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CX\4U1224M%/D-L;W-E<R!A;&P@ +M9FEL90H)9&5S8W)I<'1O<G,@97AC97!T(&9O<B!S=&1I;BP@<W1D;W5T+"!A +M;F0@<W1D97)R+CPO4U1224M%/B`H5&AI<PH)<V-R97=S('5P(&QI8F,@;VX@ +M<V]M92!P;&%T9F]R;7,@<V\@:&%S(&)E96X@<F5M;W9E9"XI(`H)/"]0/@H) +M/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D-R96%T97,@82!T +M96UP;W)A<GD@9&ER96-T;W)Y"@EW:&]S92!N86UE(&UA=&-H97,@=&AE(&YA +M;64@;V8@=&AE('1E<W0@86YD('-W:71C:&5S(&EN=&\@=&AA=`H)9&ER96-T +M;W)Y+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN +M(CY297-E=',@=&AE(&-U<G)E;G0@;&]C86QE+B`*"3PO4#X*"3Q,23X\4"!3 +M5%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY#86QL<R!T:&4@=&5S="!F=6YC +M=&EO;BX@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I +M;B(^268@=&AE<F4@=V5R92!N;R!A<W-E<G1I;VX*"69A:6QU<F5S+"!I="!W +M:6QL(')E;6]V92!T:&4@=&5M<&]R87)Y(&1I<F5C=&]R>2X@*$EF(#Q45"!# +M3$%34STB=V5S=&5R;B(^+6L\+U14/@H):7,@<W!E8VEF:65D+"!T96UP;W)A +M<GD@9&ER96-T;W)Y(&%R92!L969T(&5V96X@:68@=&AE('1E<W0*"7-U8V-E +M961S+BD@"@D\+U`^"@D\3$D^/%`^/%-44DE+13Y)9B!T:&5R92!A<F4@86YY +M(&]P96X@9FEL92!D97-C<FEP=&]R<R!O=&AE<B!T:&%N"@ES=&1I;BP@<W1D +M;W5T+"!A;F0@<W1D97)R+"!I="!R97!O<G1S(&%N(&5R<F]R+CPO4U1224M% +M/B!497-T<PH)<VAO=6QD(&YE=F5R(&QE879E(&]P96X@9FEL92!D97-C<FEP +M=&]R<RX@"@D\+U`^"CPO54P^"CQ0/DEN('!A<G1I8W5L87(L('1E<W1S(&-A +M;B!S869E;'D@87-S=6UE('1H870Z(`H\+U`^"CQ53#X*"3Q,23X\4"!35%E, +M13TB;6%R9VEN+6)O='1O;3H@,&EN(CY4:&4@8W5R<F5N="!D:7)E8W1O<GD@ +M:7,@96UP='D*"7=H96X@=&AE('1E<W0@<W1A<G1S+B`*"3PO4#X*"3Q,23X\ +M4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY!;GD@9FEL97,@8W)E871E +M9"!I;B!T:&4@8W5R<F5N=`H)9&ER96-T;W)Y('=I;&P@8F4@<F5M;W9E9"!F +M;W(@>6]U+B`*"3PO4#X*"3Q,23X\4#Y4:&4@8W5R<F5N="!L;V-A;&4@:7,@ +M=&AE(&1E9F%U;'0@)G%U;W0[0R9Q=6]T.R!L;V-A;&4N(`H)/"]0/@H\+U5, +M/@H\4#Y497-T<R!S:&]U;&0Z(`H\+U`^"CQ53#X*"3Q,23X\4"!35%E,13TB +M;6%R9VEN+6)O='1O;3H@,&EN(CY296QE87-E(&%L;"!M96UO<GDN(%1H92!T +M97-T"@ES=6ET97,@87)E(&]C8V%S:6]N86QL>2!R=6X@=6YD97(@82!M96UO +M<GD@9&5B=6=G97(@=&\@9&5T96-T(&QE86MS"@EI;B!T:&4@;&EB87)C:&EV +M92!L:6)R87)Y+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O +M;3H@,&EN(CY#;&]S92!A;&P@;W!E;F5D(&9I;&5S+B!4:&ES(&AE;'!S"@ET +M;R!C871C:"!F:6QE(&1E<V-R:7!T;W(@;&5A:W,@:6X@;&EB87)C:&EV92X@ +M"@D\+U`^"@D\3$D^/%`^3F]T(')E860@;W(@=W)I=&4@86)S;VQU=&4@<&%T +M:',N(`H)/"]0/@H\+U5,/@H\2#$@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344] +M(E!L871F;W)M7W9A<FEA=&EO;B(^/"]!/E!L871F;W)M"G9A<FEA=&EO;CPO +M2#$^"CQ0/E-O;64@=&5S=',@87)E('-P96-I9FEC('1O(&$@<&%R=&EC=6QA +M<B!P;&%T9F]R;2X@4W5C:"!T97-T<PIS:&]U;&0@=7-E(&%P<')O<')I871E +M('!L871F;W)M+7-P96-I9FEC(&UA8W)O<R!A<R!F;VQL;W=S.B`*/"]0/@H\ +M4%)%($-,05-3/2)W97-T97)N(CXC:68@7U]03$%41D]230HN+BX@=F%R:6]U +M<R!H96QP97(@9G5N8W1I;VYS("XN+@HC96YD:68*1$5&24Y%7U1%4U0H9F]O +M7W!L871F;W)M*0I["B-I9B!?7U!,051&3U)-"B9N8G-P.R`F;F)S<#LN+BX@ +M=&5S=',@87,@=7-U86P@+BXN+@HC96QS90HF;F)S<#L@)FYB<W`[<VMI<'!I +M;F<H)G%U;W0[<&QA=&9O<FTM<W!E8VEF:6,@=&5S=',F<75O=#LI.PHC96YD +M:68*?3PO4%)%/CQ0/@I);B!P87)T:6-U;&%R+"!N;W1E('1H870@86QL('1E +M<W1S(&%R92!C;VUP:6QE9"!A;F0@<G5N(&]N(&%L;`IP;&%T9F]R;7,N(`H\ +M+U`^"CQ0/DUO<W0@=&5S=',@87)E(&YO="!P;&%T9F]R;2US<&5C:69I8R!A +M;F0@=VEL;"!T:'5S(&5N9"!U<"!R=6YN:6YG"F]N(&UA;GD@9&EF9F5R96YT +M('!L871F;W)M<RX@26X@;W)D97(@=&\@<VEM<&QI9GD@=W)I=&EN9R!S=6-H +M('1E<W1S+`IT<GD@=&\@=7-E('!L871F;W)M+6EN9&5P96YD96YT(&-O9&EN +M9SH@"CPO4#X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P +M:6XB/E5S92!S=&1I;R`\5%0@0TQ!4U,](G=E<W1E<FXB/F9O<&5N*"D\+U14 +M/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^9G=R:71E*"D\+U14/BP@/%14($-, +M05-3/2)W97-T97)N(CYF<F5A9"@I/"]45#XL"@EA;F0@/%14($-,05-3/2)W +M97-T97)N(CYF8VQO<V4H*3PO5%0^('1O(&%C8V5S<R!F:6QE<R!W:&5N979E +M<@H)9F5A<VEB;&4N(`H)/"]0/@H)/$Q)/CQ0/DQO;VL@=&AR;W5G:"!T:&4@ +M/%14($-,05-3/2)W97-T97)N(CYT97-T+F@\+U14/B!H96%D97(@=&\*"7-E +M92!I9B!T:&5R92!A<F4@87-S97)T6'AX*"D@9G5N8W1I;VYS('1H870@>6]U +M(&-A;B!U<V4N(%1H97)E)W,@80H);&ES="!O9B!T:&4@;6]R92!P;W!U;&%R +M(&]N97,@8F5L;W<L(&)U="!N97<@;VYE<R!A<F4@;V9T96X@861D960N(`H) +M/"]0/@H\+U5,/@H\2#$@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](D%S<V5R +M=%]M86-R;W,B/CPO03Y!<W-E<G0@;6%C<F]S/"](,3X*/%`^5&AE(&9O;&QO +M=VEN9R!I<R!A(&YE8V5S<V%R:6QY(&EN8V]M<&QE=&4@;&ES="!O9B!A<W-E +M<G0@9G5N8W1I;VYS"F%V86EL86)L92!T;R!T97-T<SH@"CPO4#X*/%5,/@H) +M/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D)A<VEC(&5Q=6%L +M:71Y.B`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$5Q=6%L26YT/"]45#XL +M"@D\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$5Q=6%L4W1R:6YG/"]45#XL +M(#Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T17%U86Q-96T\+U14/@H)"3PO +M4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY&:6QE(&-R +M96%T:6]N.B`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$UA:V5&:6QE/"]4 +M5#XL"@D\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$UA:V53>6UL:6YK/"]4 +M5#XL(#Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T36%K94AA<F1L:6YK/"]4 +M5#XL"@D\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$UA:V5$:7(\+U14/B`* +M"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY&:6QE +M('1E<W1S.B`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$ES4F5G/"]45#XL +M"@D\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$ES1&ER/"]45#XL(#Q45"!# +M3$%34STB=V5S=&5R;B(^87-S97)T27-3>6UL:6YK/"]45#XL"@D\5%0@0TQ! +M4U,](G=E<W1E<FXB/F%S<V5R=$9I;&53:7IE/"]45#XL(#Q45"!#3$%34STB +M=V5S=&5R;B(^87-S97)T1FEL94YL:6YK<SPO5%0^+`H)/%14($-,05-3/2)W +M97-T97)N(CYA<W-E<G1&:6QE371I;64\+U14/B`*"3PO4#X*"3Q,23X\4#Y& +M:6QE(&-O;G1E;G1S.B`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$9I;&5% +M;7!T>3PO5%0^+`H)/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1&:6QE3F]N +M16UP='D\+U14/BP@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1&:6QE0V]N +M=&5N=',\+U14/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T5&5X=$9I +M;&5#;VYT96YT<SPO5%0^(`H)/"]0/@H\+U5,/@H\2#$@0TQ!4U,](G=E<W1E +M<FXB/CQ!($Y!344](E)E9F5R96YC95]&:6QE<R(^/"]!/E)E9F5R96YC92!& +M:6QE<SPO2#$^"CQ0/DUA;GD@=&5S=',@<F5Q=6ER92!R96%D:6YG(&$@<')E +M+6-O;G-T<G5C=&5D(')E9F5R96YC92!F:6QE+B!3=6-H"F9I;&5S(&%R92!S +M=&]R960@=VET:"!T:&4@<V]U<F-E(&-O9&4@9F]R('1H92!A<W-O8VEA=&5D +M('1E<W0@<W5I=&4N"E)E9F5R96YC92!F:6QE<R!A<F4@;F%M960@86-C;W)D +M:6YG('1O('1H92!T97-T(&%N9"!M=7-T(&)E('5U96YC;V1E9`IT;R!B92!C +M:&5C:V5D(&EN=&\@<V]U<F-E(&-O;G1R;VPN(`H\+U`^"CQ0/D9O<B!E>&%M +M<&QE+"!I9B!Y;W4@;F5E9"!A(')E9F5R96YC92!T87(@87)C:&EV92!T;R!U +M<V4@=VET:`H\5%0@0TQ!4U,](G=E<W1E<FXB/G1E<W1?9F]O/"]45#XL('1H +M92!F:6QE('-H;W5L9"!B92!N86UE9`H\5%0@0TQ!4U,](G=E<W1E<FXB/G1E +M<W1?9F]O+G1A<CPO5%0^(&%N9"!S=&]R960@:6X@<V]U<F-E(&-O;G1R;VP@ +M87,*/%14($-,05-3/2)W97-T97)N(CYT97-T7V9O;RYT87(N=74\+U14/BX@ +M"CPO4#X*/%`^5VET:&EN('1H92!T97-T(&-O9&4L('EO=2!C86X@<F5C;W9E +M<B!T:&4@<F5F97)E;F-E(&9I;&4@=VET:#H@"CPO4#X*/%!212!#3$%34STB +M=V5S=&5R;B(@4U193$4](FUA<F=I;BUB;W1T;VTZ(#`N,FEN(CXF;F)S<#L@ +E)FYB<W`[(&5X=')A8W1?<F5\-GL/0!0``;$>S@,````````````` +` +end 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 new file mode 100644 index 0000000..0891b22 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part05.rar.uu @@ -0,0 +1,299 @@ +begin 644 - +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 +M/@I4:&4@/%14($-,05-3/2)W97-T97)N(CYE>'1R86-T7W)E9F5R96YC95]F +M:6QE*"D\+U14/B!F=6YC=&EO;B!W:6QL"G5U9&5C;V1E('1H92!R97%U97-T +M960@9FEL92!A;F0@<'5T('1H92!R97-U;'0@:6X@=&AE(&-U<G)E;G0*9&ER +M96-T;W)Y+B`*/"]0/@H\4#Y,;V]K(&%T(#Q45"!#3$%34STB=V5S=&5R;B(^ +M=&5S=%]R96%D7V9O<FUA=%]C<&EO7V)I;E]B92YC/"]45#X*9F]R(&$@<VEM +M<&QE(&5X86UP;&4@;V8@=&AI<R!U<V%G92X@"CPO4#X*/%`^02!F97<@;V8@ +M=&AE(&]L9&5R('1E<W1S('-T;W)E(')E9F5R96YC92!D871A('=I=&AI;B!T +M:&4@<V]U<F-E"F-O9&4@87,@82!H97@M96YC;V1E9"!A<G)A>2!O9B!C:&%R +M86-T97)S+B!4:&ES('=A<R!C;VUM;VX@8F5F;W)E"CQ45"!#3$%34STB=V5S +M=&5R;B(^97AT<F%C=%]R969E<F5N8V5?9FEL92@I/"]45#X@=V%S(&%D9&5D +M(&%N9"!I<PIN;W0@<F5C;VUM96YD960@9F]R(&YE=R!C;V1E+B`*/"]0/@H\ +M2#$@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](D1O<U]A;F1?1&]N=',B/CPO +M03Y$;W,@86YD($1O;G1S/"](,3X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G +M:6XM8F]T=&]M.B`P:6XB/D1/('5S92!A<W-E<G1S(&QI8F5R86QL>2X@270G +M<PH)8V]M;6]N('1O(&AA=F4@86X@87-S97)T(&]N(&%L;6]S="!E=F5R>2!L +M:6YE+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN +M(CY$3R!U<V4@87-S97)T17%U86Q);G0L"@EA<W-E<G1%<75A;%-T<FEN9RP@ +M87-S97)T17%U86Q-96T@=&\@=&5S="!E<75A;&ET>2!I;G-T96%D(&]F('!L +M86EN"@EA<W-E<G0H*3L@=&AE('-P96-I86QI>F5D(&9O<FUS(&=I=F4@82!L +M;W0@;6]R92!I;F9O<FUA=&EO;B!O;B!A"@EF86EL=7)E+B`*"3PO4#X*"3Q, +M23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY$3R!T97-T('EO=7(@ +M=&5S=',[(&5X<&5R:6UE;G0@8GD*"6-H86YG:6YG(&$@<&EE8V4@;V8@8V]D +M92!A;F0@;6%K92!S=7)E('EO=7(@=&5S="!F86EL<RX@268@>6]U('1H:6YK +M"@EY;W4G=F4@9F]U;F0@82!B=6<L('=E(')E8V]M;65N9"!W<FET:6YG('1H +M92!T97-T(&9I<G-T+"!M86ME('-U<F4*"71H92!T97-T(&9A:6QS+"!T:&5N +M(&9I>&EN9R!T:&4@8G5G+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN +M+6)O='1O;3H@,&EN(CY$3R!R=6X@86QL(&]F('1H92!T97-T<R!B969O<F4* +M"7-U8FUI='1I;F<@82!C:&%N9V4N($1E<&5N9&EN9R!O;B!Y;W5R(&)U:6QD +M(&5N=FER;VYM96YT+"`\5%0@0TQ!4U,](G=E<W1E<FXB/FUA:V4*"71E<W0\ +M+U14/B!O<B`\5%0@0TQ!4U,](G=E<W1E<FXB/FUA:V4@8VAE8VL\+U14/B!W +M:6QL('5S=6%L;'D@<G5N"@EA;&P@;V8@=&AE('1E<W1S+B`*"3PO4#X*"3Q, +M23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY$3TXG5"!R96QY(&]N +M(#Q45"!#3$%34STB=V5S=&5R;B(^2$%615\\+U14/@H);6%C<F]S(&9R;VT@ +M8V]N9FEG+F@N("A)9B!T:&4@=&5S=',@=7-E('1H92!S86UE(#Q45"!#3$%3 +M4STB=V5S=&5R;B(^2$%615\\+U14/@H);6%C<F]S(&%S('1H92!C;V1E(&)E +M:6YG('1E<W1E9"!T:&5N(&-O;F9I9W5R871I;VX@<')O8FQE;7,@=VEL;"!B +M90H)8V]V97)E9"!U<"XI(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM +M8F]T=&]M.B`P:6XB/D1/('5S92!R=6YT:6UE('1E<W1S(&9O<B!P;&%T9F]R +M;0H)9F5A='5R97,N($9O<B!E>&%M<&QE+"!T:&4@04-,('1E<W1S('1R>2!T +M;R!S970@86X@04-,(&]N(&$@9FEL92!A;F0*"7)E860@:70@8F%C:R!T;R!D +M971E<FUI;F4@:68@04-,('-U<'!O<G0@:7,@879A:6QA8FQE+"!T:&5N('1H +M97D*"65X97)C:7-E('1H92!L:6)A<F-H:79E($%#3"!H86YD;&EN9RX@"@D\ +M+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^1$\@;&]O +M:R!A="!E>&ES=&EN9R!T97-T<RX@3V9T96XL"@EA(&)U9R!C86X@8F4@=&5S +M=&5D(&)Y(&%D9&EN9R!J=7-T(&$@8V]U<&QE(&]F(&%S<V5R=',@=&\@86X* +M"65X:7-T:6YG('1E<W0@:6YS=&5A9"!O9B!W<FET:6YG(&$@;F5W(&]N92X@ +M"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^1$\@ +M:6UP<F]V92!E>&ES=&EN9R!T97-T<RX@26X*"7!A<G1I8W5L87(L(&EF('EO +M=2!S964@82!T97-T(&9A:6QU<F4@=&AA="!I<R!H87)D('1O('5N9&5R<W1A +M;F0L"@EC;VYS:61E<B!A9&1I;F<@82!F86EL=7)E*"D@;65S<V%G92!O<B!C +M;VUM96YT<R!S;R!T:&4@;F5X="!P97)S;VX*"7=I;&P@:&%V92!A;B!E87-I +M97(@=&EM92X@"@D\+U`^"@D\3$D^/%`^1$\@87-K(&]N('1H92!M86EL:6YG +M(&QI<W1S(&EF('EO=2!H879E('%U97-T:6]N<RX@4V]M92!T97-T<PH)87)E +M(&)E='1E<B!W<FET=&5N('1H86X@;W1H97)S+B`*"3PO4#X*/"]53#X*/$@Q +M($-,05-3/2)W97-T97)N(CX\02!.04U%/2)3;VUE7V5X86UP;&5S7V]F7W1E +M<W1S(CX\+T$^4V]M90IE>&%M<&QE<R!O9B!T97-T<SPO2#$^"CQ(,B!#3$%3 +M4STB=V5S=&5R;B(^/$$@3D%-13TB3&EB87)C:&EV95]R96%D7W1E<W1S(CX\ +M+T$^3&EB87)C:&EV90IR96%D('1E<W1S/"](,CX*/%`^5&AE<F4@87)E('%U +M:71E(&$@9F5W(')E860@=&5S=',@=&AA="!S:6UP;'D@<F5A9"!A('!R92UB +M=6EL=`II;G!U="!F:6QE(&%N9"!V97)I9GD@=&AE(')E<W5L=',N(%1H97-E +M('5S92`\5%0@0TQ!4U,](G=E<W1E<FXB/F5X=')A8W1?<F5F97)E;F-E7V9I +M;&4H*3PO5%0^"G1O(&1E8V]D92!A('5U96YC;V1E9"!I;G!U="!F:6QE+"!T +M:&5N(&]P96X@=&AA="!F:6QE('=I=&@@;&EB87)C:&EV90IA;F0@=F5R:69Y +M('1H92!R97-U;'1S+B!-;W-T(&]F('1H97-E(&%R92!P<F5T='D@<W1R86EG +M:'1F;W)W87)D+B`*/"]0/@H\2#(@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344] +M(DQI8F%R8VAI=F5?<F5A9"]W<FET95]T97-T<R(^/"]!/DQI8F%R8VAI=F4* +M<F5A9"]W<FET92!T97-T<SPO2#(^"CQ0/DUO<W0@;V8@=&AE('=R:71E('1E +M<W1S(')E86QL>2!J=7-T('9E<FEF>2!T:&%T(&QI8F%R8VAI=F4@8V%N"G)E +M860@=VAA="!I="!W<FET97,N(%1H97-E(&=E;F5R86QL>2!U<V4@=&AE(&UE +M;6]R>2!I;G1E<F9A8V5S+B!4:&5Y"F9E960@87)C:&EV92!E;G1R:65S(&EN +M=&\@=&AE('=R:71E<B!T;R!C<F5A=&4@86X@87)C:&EV92!I;B!M96UO<GD* +M86YD('1H96X@;W!E;B!T:&4@;65M;W)Y(&%G86EN('1O(')E860@=&AE(&1A +M=&$@8F%C:R!A;F0@=F5R:69Y('1H870*:70@:7,@=&AE('-A;64N(`H\+U`^ +M"CQ(,B!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB3&EB87)C:&EV95]W<FET +M95]V86QI9&%T;W)S(CX\+T$^3&EB87)C:&EV90IW<FET92!V86QI9&%T;W)S +M/"](,CX*/%`^02!F97<@=W)I=&4@=&5S=',@=W)I=&4@86X@87)C:&EV92!I +M;G1O(&UE;6]R>2!A;F0@=&AE;B!I;G-P96-T"G1H92!A8W1U86P@8GET97,@ +M=&\@=F5R:69Y('1H870@=&AE(&%R8VAI=F4@=V%S(&-R96%T960@8V]R<F5C +M=&QY+@I4:&5S92!T97-T<R!A<F4@;FEC92!T;R!H879E(&)U="!A<F4@=&5D +M:6]U<R!T;R!B=6EL9"X@"CPO4#X*/%`^5&AE<F4@87)E(&%L<V\@82!C;W5P +M;&4@;V8@<W5C:"!V86QI9&%T;W)S(&9O<B!B<V1T87(@86YD(&)S9&-P:6\N +M"E1H97-E(&%R92!V97)Y('1R:6-K>2!S:6YC92!T:&4@97AA8W0@9&%T82!C +M;VYT86EN<R!V86QU97,@=&AA="!T:&4*=&5S="!C86YN;W0@8V]M<&QE=&5L +M>2!C;VYT<F]L("AS=6-H(&%S('1H92!C=7)R96YT('1I;64@;W(*=7-E<FYA +M;64I+B`*/"]0/@H\2#(@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](D1I<VM? +M=&5S=',B/CPO03Y$:7-K('1E<W1S/"](,CX*/%`^3&EB87)C:&EV92=S(&1I +M<VL@22]/($%027,L(&%S('=E;&P@87,@8G-D=&%R(&%N9"!B<V1C<&EO+"!N +M965D('1O"F]P97)A=&4@8GD@=F5R:69Y:6YG(&9I;&5S(&]N(&1I<VLN(%1O +M(&UA:V4@=&AI<R!E87-I97(L('1H92!T97-T"F9R86UE=V]R:R!N;W<@:&%S +M(&$@;&%R9V4@;G5M8F5R(&]F(&%S<V5R=&EO;G,@=&\@=F5R:69Y('1I;65S +M=&%M<',L"G!E<FUI<W-I;VYS+"!A;F0@;W1H97(@8F%S:6,@9FEL92!D871A +M+B!4:&5S92!A<W-E<G1I;VYS('5S90IA<'!R;W!R:6%T92!S>7-T96T@8V%L +M;',@9F]R(&5A8V@@<&QA=&9O<FT[(&YE=R!T97-T<R!S:&]U;&0@=')Y('1O +M"F%V;VED('5S:6YG(#Q45"!#3$%34STB=V5S=&5R;B(^<W1A="@I/"]45#XL +M('=H:6-H(&ES(&YO="!U;FEF;W)M;'D*879A:6QA8FQE+B`*/"]0/@H\2#(@ +M0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](D9U>GI?=&5S=&5R(CX\+T$^1G5Z +M>B!T97-T97(\+T@R/@H\4#Y4:&4@9G5Z>B!T97-T97(@:7,@;VYE(&]F('1H +M92!F97<@=&5S=',@=&AA="!D;V5S(&YO="!A9V=R97-S:79E;'D*=7-E(&%S +M<V5R=&EO;G,N($ET<R!P=7)P;W-E(&ES('1O('1R>2!A;F0@8W)A<V@@;&EB +M87)C:&EV92!B>2!F965D:6YG"FET(&EN<'5T('1H870@:7,@<VQI9VAT;'D@ +M9&%M86=E9"X@*%)E;65M8F5R('1H870@;&EB87)C:&EV92!D;V5S"FAA=F4@ +M<V]M92!F86EL<V%F92!C;V1E('1H870@9&5L:6)E<F%T96QY(&%B;W)T<R!T +M:&4@96YT:7)E('!R;V=R86T*:68@8V5R=&%I;B!I;G9A<FEA;G1S(&%R92!V +M:6]L871E9"XI(`H\+U`^"CQ0/E-I;F-E(&$@9G5Z>B!F86EL=7)E(&-A=7-E +M<R!A(&-R87-H+"!I="=S(&EM<&]S<VEB;&4@=&\@<F5P;W)T('1H90IE<G)O +M<B!T;R!T:&4@8V]N<V]L92P@<V\@=&AE(&9U>GH@=&5S=&5R(&EN<W1E860@ +M9V5N97)A=&5S(&$*<F%N9&]M;'DM9&%M86=E9"!F:6QE+"!S879E<R!T:&%T +M(&9I;&4@=&\@9&ES:RP@=&AE;B!R=6YS('1H92!F:6QE"G1H<F]U9V@@;&EB +M87)C:&EV92!T;R!T<GD@=&\@<')O=F]K92!A(&-R87-H+B!)9B!L:6)A<F-H +M:79E(&-R87-H97,*=&AE(&5N=&ER92!T97-T97(L('1H92!I;G!U="!T:&%T +M(&-A=7-E9"!T:&4@8W)A<V@@=VEL;"!B92!A=F%I;&%B;&4*;VX@9&ES:R!F +M;W(@9G5R=&AE<B!A;F%L>7-I<RX@"CPO4#X*/%`^06QT:&]U9V@@:70@:7,@ +M=6YU<W5A;"!F;W(@82!T97-T('!R;V=R86T@=&\@=7-E(')A;F1O;2!I;G!U +M="P@=&AE"F9U>GH@=&5S=&5R(&AA<R!P<F]V96X@<75I=&4@=7-E9G5L(&%T +M('5N8V]V97)I;F<@<&]O<B!E<G)O<@IH86YD;&EN9RX@56YF;W)T=6YA=&5L +M>2P@=&AE(&YE960@=&\@=W)I=&4@=&AE(&1A=&$@=&\@9&ES:R!B969O<F4* +M96%C:"!T97-T(&ES(&$@<VEG;FEF:6-A;G0@<&5R9F]R;6%N8V4@:7-S=64N +M(`H\+U`^"CQ(,B!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB3&%R9V5?=&%R +M7W1E<W1E<B(^/"]!/DQA<F=E('1A<B!T97-T97(\+T@R/@H\4#Y4:&4@;&%R +M9V4@=&%R('1E<W1E<B!A='1E;7!T<R!T;R!E>&5R8VES92!B;W5N9&%R>2!C +M87-E<R!W:71H('9E<GD*;&%R9V4@96YT<FEE<RP@=7`@=&\@,2!T97)A8GET +M92X@3V8@8V]U<G-E+"!W<FET:6YG(&$@,2!T97)A8GET90IE;G1R>2!T;R!A +M;B!U;F-O;7!R97-S960@87)C:&EV92!O;B!D:7-K(&]R(&UE;6]R>2!I<R!U +M;F%C8V5P=&%B;&4L"F)O=&@@9F]R('!E<F9O<FUA;F-E(&%N9"!S<&%C92!R +M96%S;VYS+B!%=F5N(&=Z:7`@;W(@8GII<#(*8V]M<')E<W-I;VX@=V]N)W0@ +M:&5L<#L@86QT:&]U9V@@<VUA;&QE<BP@=&AE(&]U='!U="!I<R!S=&EL;"!L +M87)G90IA;F0@=&AE('1I;64@;F5E9&5D('1O(&-O;7!R97-S('-U8V@@82!L +M87)G92!A;6]U;G0@;V8@9&%T82!I<PIP<F]H:6)I=&EV92X@4V\@=&AE(&QA +M<F=E('1A<B!T97-T97(@=7-E<R!A('1R:6-K+B`*/"]0/@H\4#Y296UE;6)E +M<B!T:&%T(&%N('5N8V]M<')E<W-E9"!T87(@87)C:&EV92!C;VYS:7-T<R!O +M9B!A;'1E<FYA=&EN9PIH96%D97)S(&%N9"!B;V1I97,N($EF('1H92!B;V1I +M97,@8V]N<VES="!E;G1I<F5L>2!O9B!Z97)O(&)Y=&5S+`IT:&5N(&%L;"!T +M:&%T)W,@;F5E9&5D('1O(')E8V]N<W1R=6-T('1H92!A<F-H:79E(&ES('1O +M(')E8V]R9"!T:&4*<F5L871I=F5L>2!S;6%L;"!H96%D97)S(&%N9"!S=&]R +M92!A(&-O=6YT(&]F(&5A8V@@8V]N=&EG=6]U<R!B;&]C:PIO9B!Z97)O<RX@ +M5&AI<R!S:6UP;&4@)G%U;W0[<G5N+6QE;F=T:"!E;F-O9&EN9R9Q=6]T.R!I +M<R!V97)Y"F5F9F5C=&EV92P@8V]M<')E<W-I;F<@82!S86UP;&4@87)C:&EV +M92!W:71H(&$@9&]Z96X@96YT<FEE<R!D;W=N('1O"FIU<W0@82!F97<@:VEL +M;V)Y=&5S+"!E=F5N(&EF('1H;W-E(&5N=')I97,@<F%N9V4@=7`@=&\@,51" +M+B`*/"]0/@H\4#Y">2!W<FET:6YG(&$@8W5S=&]M($DO3R!L87EE<B!T:&%T +M(&EM<&QE;65N=',@<W5C:"!C;VUP<F5S<VEO;BP@=V4*8V%N('=R:71E('9E +M<GD@;&%R9V4@96YT<FEE<R!T:')O=6=H(&QI8F%R8VAI=F4@=&AE;B!R96%D +M('1H96T@8F%C:PIA;F0@=F5R:69Y('1H870@;&EB87)C:&EV92!C;W)R96-T +M;'D@:&%N9&QE<R!A;&P@;V8@=&AE(&)O=6YD87)Y"F-A<V5S+B`*/"]0/@H\ +M4#Y/9B!C;W5R<V4L(&5V96X@<V-A;FYI;F<@;W5T<'5T('1O(&1E=&5R;6EN +M92!Z97)O(&)L;V-K<R!C86X@=&%K90IQ=6ET92!A('=H:6QE+"!S;R!T:&4@ +M;&%R9V4@=&%R('1E<W1E<B!M86ME<R!O;F4@;6]R92!O<'1I;6EZ871I;VXZ +M"DQI8F%R8VAI=F4@:7,@)G%U;W0[;6]S=&QY)G%U;W0[('IE<F\M8V]P>2X@ +M5VAE;B!Y;W4@9VEV92!I="!A(&QA<F=E"F)L;V-K('1O('=R:71E('1O(&%N +M(&5N=')Y(&)O9'DL(&ET('=I;&P@<&%S<R!P;VEN=&5R<R!S=')A:6=H=`IT +M:')O=6=H('1O('1H92!O=71P=70@<F]U=&EN92P@97AC97!T(&EN('1H;W-E +M(&-A<V5S('=H97)E(&ET(&UU<W0*8V]P>2!D871A('1O(&-O<G)E8W1L>2!B +M=6EL9"!B;&]C:W,N(%1H92!L87)G92!T87(@=&5S=&5R('1A:V5S"F%D=F%N +M=&%G92!O9B!T:&ES('1O('%U:6-K;'D@9&5T96-T('=H96X@82!B;&]C:R!B +M96EN9R!W<FET=&5N(&]U="!B>0IT:&4@87)C:&EV92!W<FET97(@:7,@=&AE +M('-A;64@87,@<V]M92!O9B!T:&4@9&%T82!T:&%T('=A<R!G:79E;B!B>0IT +M:&4@=&5S="!A<R!T:&4@96YT<GD@8F]D>2P@86YD('-I;6EL87)L>2!W:&5N +M(')E861I;F<@=&AE(&%R8VAI=F4*8F%C:RX@"CPO4#X*/%`^5&%K96X@=&]G +M971H97(L('1H97-E('1R:6-K<R!A;&QO=R!T:&4@;&%R9V4@=&%R('=R:71E +M<B!T;R!T97-T"F9O<B!I<W-U97,@<W5C:"!A<R!P<F]P97(@<W1O<F%G92!O +M9B!V97)Y(&QA<F=E(&9I;&4@<VEZ97,@*'1A<B!F:6QE<PIS=7!P;W)T('-E +M=F5R86P@9&EF9F5R96YT('=A>7,@=&\@<W1O<F4@9FEL92!S:7IE<R!W:&EC +M:"!T<F%D92!O9F8*<&]R=&%B:6QI='D@=F5R<W5S(')A;F=E.R!L:6)A<F-H +M:79E('1R:65S('1O('5S92!T:&4@;6]S="!P;W)T86)L90IO;F4@:70@8V%N +M(&9O<B!E86-H(&5N=')Y*2!A;F0@:6YT96=E<B!O=F5R9FQO=R`H5VEN9&]W +M<R`S,BUB:70@/%14($-,05-3/2)W97-T97)N(CYO9F9?=#PO5%0^"F)R;VME +M('1H92!L87)G92!T87(@=&5S="!A;F0@;&5D(&QI8F%R8VAI=F4@=&\@;6%K +M92!H96%V:65R('5S92!O9@H\5%0@0TQ!4U,](G=E<W1E<FXB/FEN=#8T7W0\ +M+U14/B!I;G1E<FYA;&QY*2!I;B!A('1E<W0@=&AA="!R=6YS(&EN"G5N9&5R +M(#$O-"!S96-O;F0N(`H\+U`^"CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P +M:6XB/CQ"4CX*/"]0/@H\+T)/1%D^"CPO2%1-3#[^]W0BD$L`&Q4``(].```# +MX0\.Y?-C(4`4,"$`I($``'1E<W1D:7)<3&EB87)C:&EV94%D9&EN9U1E<W0N +M:'1M;(#,,E\[0DU?.T(\(41/0U194$4@2%1-3"!054),24,@(BTO+U<S0R\O +M1%1$($A434P@-"XP(%1R86YS:71I;VYA;"\O14XB/@H\2%1-3#X*/$A%040^ +M"@D\345402!(5%10+45154E6/2)#3TY414Y4+5194$4B($-/3E1%3E0](G1E +M>'0O:'1M;#L@8VAA<G-E=#UU=&8M."(^"@D\5$E43$4^/"]4251,13X*"3Q- +M151!($Y!344](D=%3D52051/4B(@0T].5$5.5#TB3&EB<F5/9F9I8V4@,RXS +M("`H56YI>"DB/@H)/$U%5$$@3D%-13TB0U)%051%1"(@0T].5$5.5#TB,C`Q +M,3`V,C8[,C(R,S4Q,#`B/@H)/$U%5$$@3D%-13TB0TA!3D=%1"(@0T].5$5. +M5#TB,C`Q,3`V,C8[,C(R-30U,#`B/@H)/%-464Q%(%194$4](G1E>'0O8W-S +M(CX*"3PA+2T*"0E`<&%G92![(&UA<F=I;CH@,"XW.6EN('T*"0E0('L@;6%R +M9VEN+6)O='1O;3H@,"XP.&EN('T*"0E(,2![(&UA<F=I;BUB;W1T;VTZ(#`N +M,#AI;B!]"@D)2#$N=V5S=&5R;B![(&9O;G0M9F%M:6QY.B`B3&EB97)A=&EO +M;B!397)I9B(L('-E<FEF('T*"0E(,2YC:FL@>R!F;VYT+69A;6EL>3H@(D)I +M='-T<F5A;2!697)A(%-A;G,B('T*"0E(,2YC=&P@>R!F;VYT+69A;6EL>3H@ +M(D9R965386YS(B!]"@D)4%)%+F-J:R![(&9O;G0M9F%M:6QY.B`B0FET<W1R +M96%M(%9E<F$@4V%N<R(L(&UO;F]S<&%C92!]"@D)2#(@>R!M87)G:6XM8F]T +M=&]M.B`P+C`X:6X@?0H)"4@R+F-T;"![(&9O;G0M9F%M:6QY.B`B1G)E95-A +M;G,B('T*"0E45"YC:FL@>R!F;VYT+69A;6EL>3H@(D)I='-T<F5A;2!697)A +M(%-A;G,B+"!M;VYO<W!A8V4@?0H)+2T^"@D\+U-464Q%/@H\+TA%040^"CQ" +M3T19($Q!3D<](F5N+553(B!$25(](DQ44B(^"CQ(,2!#3$%34STB=V5S=&5R +M;B(^26YT<F]D=6-T:6]N/"](,3X*/%`^3&EB87)C:&EV92!I<R!N;W<@82!F +M86ER;'D@8V]M<&QE>"!P:65C92!O9B!S;V9T=V%R92!T:&%T(')U;G,@;VX* +M82!N=6UB97(@;V8@9&EF9F5R96YT('!L871F;W)M<RX@02!T:&]R;W5G:"!T +M97-T('-U:71E(&ES(&5S<V5N=&EA;`IB;W1H(&9O<B!V97)I9GEI;F<@;F5W +M('!O<G1S(&%N9"!F;W(@96YS=7)I;F<@=&AA="!F=71U<F4@8VAA;F=E<PID +M;VXG="!B<F5A:R!E>&ES=&EN9R!F=6YC=&EO;F%L:71Y+B`*/"]0/@H\4#Y! +M;GD@<VEG;FEF:6-A;G0@8VAA;F=E('1O(&QI8F%R8VAI=F4L(&EN8VQU9&EN +M9R!M;W-T(&)U9R!F:7AE<RP*<VAO=6QD(&)E(&%C8V]M<&%N:65D(&)Y(&YE +M=R!T97-T<R!O<B!C:&%N9V5S('1O(&5X:7-T:6YG('1E<W1S+B!4:&ES"F%R +M=&EC;&4@97AP;&%I;G,@:&]W('1H92!L:6)A<F-H:79E('1E<W0@<W5I=&5S +M('=O<FL@86YD(&AO=R!T;PIE>'1E;F0@=&AE;2X@"CPO4#X*/$@Q($-,05-3 +M/2)W97-T97)N(CX\02!.04U%/2)"=6EL9&EN9U]A;F1?4G5N;FEN9U]T:&5? +M5&5S=%]0<F]G<F%M<R(^/"]!/@I"=6EL9&EN9R!A;F0@4G5N;FEN9R!T:&4@ +M5&5S="!0<F]G<F%M<SPO2#$^"CQ0/D5A8V@@;6%J;W(@8V]M<&]N96YT+2UL +M:6)A<F-H:79E+"!B<V1T87(L(&%N9"!B<V1C<&EO+2UH87,@82!T97-T"G!R +M;V=R86T@=&AA="!E>&5R8VES97,@=&AE(&9U;F-T:6]N86QI='D@;V8@=&AA +M="!C;VUP;VYE;G0N(%1H97-E"G1E<W0@<')O9W)A;7,@87)E(&-O;7!I;&5D +M(&EN('1H92!S86UE('=A>2!T:&%T('1H92!R97-T(&]F('1H90IL:6)A<F-H +M:79E('-U:71E(&ES(&-O;7!I;&5D+B`*/"]0/@H\4#Y4;R!R=6X@=&AE('1E +M<W0@<')O9W)A;7,L('EO=2!N965D('1O(&=I=F4@=&AE;2!T=V\@<&EE8V5S +M(&]F"FEN9F]R;6%T:6]N.B`*/"]0/@H\54P^"@D\3$D^/%`@4U193$4](FUA +M<F=I;BUB;W1T;VTZ(#!I;B(^5&AE(&9U;&P@<&%T:"!T;R!T:&4@9&ER96-T +M;W)Y"@EH;VQD:6YG('1H92`F<75O=#MR969E<F5N8V4@9FEL97,F<75O=#L@ +M"@D\+U`^"@D\3$D^/%`^5&AE(&9U;&P@<&%T:"!T;R!T:&4@97AE8W5T86)L +M92!P<F]G<F%M(&)E:6YG('1E<W1E9"`H;F]T"@EA<'!L:6-A8FQE('1O(&QI +M8F%R8VAI=F5?=&5S="!S:6YC92!L:6)A<F-H:79E(&ES(&-O;7!I;&5D(&EN +M=&\@=&AE"@ET97-T('!R;V=R86TI(`H)/"]0/@H\+U5,/@H\4#Y4:&4@<F5F +M97)E;F-E(&9I;&5S(&%R92!A(&-O;&QE8W1I;VX@;V8@:VYO=VX@:6YP=71S +M('1H870@87)E('5S960*:6X@=&AE('1E<W0@<')O8V5S<RX@5&AE>2!A<F4@ +M86QL('-T;W)E9"!I;B!U=65N8V]D960@9F]R;6%T(&EN(&9I;&5S"G=I=&@@ +M82`F<75O=#LN=74F<75O=#L@97AT96YS:6]N+B!4:&4@=&5S="!P<F]G<F%M +M<R!L;V]K(&EN(&$@9F5W"G-T86YD87)D(&QO8V%T:6]N<SL@:68@;F]N92!O +M9B!T:&]S92!W;W)K+"!Y;W4G;&P@;F5E9"!T;R!S<&5C:69Y('1H90H\5%0@ +M0TQ!4U,](G=E<W1E<FXB/BUR/"]45#X@;W!T:6]N('=I=&@@=&AE(&9U;&P@ +M<&%T:&YA;64@=&\@=&AE"F%P<')O<')I871E(&1I<F5C=&]R>2X@"CPO4#X* +M/%`^5&AE(&)S9'1A<E]T97-T(&%N9"!B<V1C<&EO7W1E<W0@<')O9W)A;7,@ +M<G5N(&)S9'1A<B!O<B!B<V1C<&EO"G)E<&5A=&5D;'D[('1H97D@;F5E9"!T +M:&4@9G5L;"!P871H('1O('1H92!A<'!R;W!R:6%T92!E>&5C=71A8FQE+@I! +M;'1H;W5G:"!B<V1T87)?=&5S="!A;F0@8G-D8W!I;U]T97-T(&%R92!S<&5C +M:69I8V%L;'D@:6YT96YD960@9F]R"G1E<W1I;F<@8G-D=&%R(&%N9"!B<V1C +M<&EO+"!T:&5Y('-H;W5L9"!B92!U<V%B;&4@9F]R('1E<W1I;F<@;W1H97(* +M=&%R(&%N9"!C<&EO('!R;V=R86US+B!);B!F86-T+"!R=6YN:6YG('1H97-E +M('1E<W0@<')O9W)A;7,@86=A:6YS=`IO=&AE<B!T87(@:6UP;&5M96YT871I +M;VYS(&ES(&$@9V]O9"!W87D@=&\@=F5R:69Y('1H870@=&AE('1E<W0*<')O +M9W)A;7,@=&AE;7-E;'9E<R!A<F4@=V]R:VEN9R!C;W)R96-T;'DN(`H\+U`^ +M"CQ0/E=H96X@<G5N+"!T:&4@=&5S="!P<F]G<F%M<R!O=71P=70@82!P<F]G +M<F5S<R!M97-S86=E(&9O<B!E86-H"G1E<W0L(&%N(&5R<F]R(&UE<W-A9V4@ +M9F]R(&5A8V@@9F%I;&5D(&%S<V5R=&EO;BP@86YD(&$@9FEN86P*<W5M;6%R +M>3H@"CPO4#X*/%!212!#3$%34STB=V5S=&5R;B(^)FYB<W`[4G5N;FEN9R!T +M97-T<R!I;CH@+W1M<"]B<V1T87)?=&5S="XR,#`Y+3`R+3$W5#(Q+C,P+C0P +M+3`P,`HF;F)S<#M2969E<F5N8V4@9FEL97,@=VEL;"!B92!R96%D(&9R;VTZ +M("9N8G-P.R`F;F)S<#LO:&]M92]T:6TO;&EB87)C:&EV92]T<G5N:R]T87(O +M=&5S=`HF;F)S<#M2=6YN:6YG('1E<W1S(&]N.B`O:&]M92]T:6TO;&EB87)C +M:&EV92]T<G5N:R]B<V1T87(*)FYB<W`[17AE<F-I<VEN9SH@8G-D=&%R(#(N +M-BXY,#!A("T@;&EB87)C:&EV92`R+C8N.3`P80HF;F)S<#LP.B!T97-T7S`* +M)FYB<W`[,3H@=&5S=%]B87-I8PHF;F)S<#LR.B!T97-T7V-O<'D*)FYB<W`[ +M('1E<W1?8V]P>2YC.C$W,3H@07-S97)T:6]N(&9A:6QE9#H@26YT<R!N;W0@ +M97%U86P*)FYB<W`[("9N8G-P.R`F;F)S<#L@,#TP"B9N8G-P.R`F;F)S<#L@ +M)FYB<W`[(&QS=&%T*&YA;64R("L@,RP@)F%M<#MS=#(I/2TQ"B9N8G-P.R!T +M97-T7V-O<'DN8SHQ-S$Z($9A:6QE9"`R-C0@=&EM97,*)FYB<W`[,SH@=&5S +M=%]G971D871E"B9N8G-P.S0Z('1E<W1?:&5L<`HF;F)S<#L@)FYB<W`[("XN +M+B!M;W)E(&]U='!U="!O;6ET=&5D("XN+@HF;F)S<#LQ(&]F(#$S('1E<W1S +M(')E<&]R=&5D(&9A:6QU<F5S"B9N8G-P.R!4;W1A;"!O9B`Q,#4P.3<@87-S +M97)T:6]N<R!C:&5C:V5D+@HF;F)S<#L@5&]T86P@;V8@,C8T(&%S<V5R=&EO +M;G,@9F%I;&5D+@HF;F)S<#L@5&]T86P@;V8@,"!A<W-E<G1I;VYS('-K:7!P +M960N/"]04D4^/%`^"E1H92!H96%D97(@;&EN97,@:&5R92!R96-O<F0Z(`H\ +M+U`^"CQ53#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CYT +M:&4@9&ER96-T;W)Y('1H870@=VEL;"!B92!U<V5D"@EF;W(@<V-R871C:"!F +M:6QE<R!D=7)I;F<@=&AE('1E<W0N($EF(&$@=&5S="!F86EL<RP@=&AE('-C +M<F%T8V@*"69I;&5S('=I;&P@8F4@;&5F="!B96AI;F0@:6X@=&AI<R!D:7)E +M8W1O<GD@9F]R(&9U<G1H97(@9&5B=6=G:6YG+B`*"3PO4#X*"3Q,23X\4"!3 +M5%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY4:&4@9&ER96-T;W)Y(&9R;VT@ +M=VAI8V@@=&AE"@ER969E<F5N8V4@9FEL97,@=VEL;"!B92!R96%D+B`*"3PO +M4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY&;W(@8G-D +M=&%R7W1E<W0@86YD(&)S9&-P:6]?=&5S="P*"71H92!F=6QL('!A=&@@=&\@ +M=&AE(&5X96-U=&%B;&4@8F5I;F<@97AE<F-I<V5D+B`*"3PO4#X*"3Q,23X\ +M4#Y"87-I8R!V97)S:6]N(&EN9F]R;6%T:6]N(&%B;W5T('1H92!T87)G970N +M(`H)/"]0/@H\+U5,/@H\4#Y);B!T:&ES(&-A<V4L('1H92!T<F%I;&5R(&EN +M9&EC871E<R!T:&%T(&]N92!T97-T(&9A:6QE9"X@07,@>6]U"F-A;B!S964L +M('1H97)E('=A<R!A('-I;F=L92!A<W-E<G1I;VX@:6X@=&AE(&-O9&4@=&AA +M="!F86EL960@,C8T"G1I;65S+B!4:&4@9FER<W0@=&EM92!I="!F86EL960L +M(&ET('=A<R!B96-A=7-E(&%N(#Q45"!#3$%34STB=V5S=&5R;B(^;'-T870H +M*3PO5%0^"F-A;&P@<F5T=7)N960@+3$@:6YS=&5A9"!O9B!T:&4@>F5R;R!T +M:&%T('=A<R!E>'!E8W1E9"X@"CPO4#X*/$@Q($-,05-3/2)W97-T97)N(CX\ +M02!.04U%/2)"87-I8U]T97-T7W1E<FUI;F]L;V=Y(CX\+T$^0F%S:6,@=&5S +M=`IT97)M:6YO;&]G>3PO2#$^"CQ0/D5A8V@@=&5S="!P<F]G<F%M(&-O;G-I +M<W1S(&]F(&$@;G5M8F5R(&]F("9Q=6]T.W1E<W1S)G%U;W0[+B!%86-H"G1E +M<W0@:&%S(&$@;F%M92!A;F0@:7,@:6UP;&5M96YT960@:6X@82!#('-O=7)C +M92!F:6QE('=I=&@@=&AE('-A;64*;F%M92!A<R!T:&4@=&5S="X@5&5S=',@ +M=V]R:R!B>2!P97)F;W)M:6YG('-O;64@<V5R:65S(&]F(&]P97)A=&EO;G,* +M86YD(&UA:VEN9R`F<75O=#MA<W-E<G1I;VYS)G%U;W0[(&%B;W5T('1H92!R +M97-U;'1S+B!&;W(@97AA;7!L92P*;6%N>2!O9B!T:&4@;&EB87)C:&EV92!T +M97-T<R!O<&5N(&%N9"!R96%D(&%N(&%R8VAI=F4@86YD(&%S<V5R="!T:&%T +M"G!A<G1I8W5L87(@;W!E<F%T:6]N<R!S=6-C965D960@;W(@9F%I;&5D+B`H +M665S+"!I="!I<R!O9G1E;@II;7!O<G1A;G0@=&\@=F5R:69Y('1H870@:6QL +M96=A;"!R97%U97-T<R!G96YE<F%T92!A<'!R;W!R:6%T90IE<G)O<G,N*2`* +M/"]0/@H\4#Y(97)E(&ES(&$@<V]M97=H870@961I=&5D(&5X8V5R<'0@9G)O +M;2`\5%0@0TQ!4U,](G=E<W1E<FXB/G1E<W1?8V]M<&%T7WII<#PO5%0^+`IW +M:&EC:"!V97)I9FEE<R!C;VUP871I8FEL:71Y('=I=&@@=F%R:6]U<R!:25`@ +M9F]R;6%T(&%R8VAI=F5S.B`*/"]0/@H\4%)%($-,05-3/2)W97-T97)N(CXF +M;F)S<#L@1$5&24Y%7U1%4U0H=&5S=%]C;VUP871?>FEP*0HF;F)S<#L@>PHF +E;F)S<#L@)FYB<W`[("\J("XI('L/0!0`9,5+3`0````````````` +` +end 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 new file mode 100644 index 0000000..6511cb6 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part06.rar.uu @@ -0,0 +1,299 @@ +begin 644 - +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 +M<V5R="@H82`](&%R8VAI=F5?<F5A9%]N97<H*2D@(3T@3E5,3"D["B9N8G-P +M.R`F;F)S<#L@87-S97)T17%U86Q);G0H05)#2$E615]/2RP*)FYB<W`[("9N +M8G-P.R`F;F)S<#L@)FYB<W`[(&%R8VAI=F5?<F5A9%]S=7!P;W)T7V-O;7!R +M97-S:6]N7V%L;"AA*2D["B9N8G-P.R`F;F)S<#L@87-S97)T17%U86Q);G0H +M05)#2$E615]/2RP*)FYB<W`[("9N8G-P.R`F;F)S<#L@)FYB<W`[(&%R8VAI +M=F5?<F5A9%]S=7!P;W)T7V9O<FUA=%]A;&PH82DI.PHF;F)S<#L@)FYB<W`[ +M(&5X=')A8W1?<F5F97)E;F-E7V9I;&4H;F%M92D["B9N8G-P.R`F;F)S<#L@ +M87-S97)T17%U86Q);G0H05)#2$E615]/2RP*)FYB<W`[("9N8G-P.R`F;F)S +M<#L@)FYB<W`[(&%R8VAI=F5?<F5A9%]O<&5N7V9I;&5N86UE*&$L(&YA;64L +M(#$P,C0P*2D["B9N8G-P.R`F;F)S<#L@)FYB<W`[+RH@4F5A9"!F:7)S="!E +M;G1R>2X@*B\*)FYB<W`[("9N8G-P.R`F;F)S<#MA<W-E<G1%<75A;$EN="A! +M4D-(259%7T]++"!A<F-H:79E7W)E861?;F5X=%]H96%D97(H82P@)F%M<#MA +M92DI.PHF;F)S<#L@)FYB<W`[("9N8G-P.V%S<V5R=$5Q=6%L4W1R:6YG*"9Q +M=6]T.TU%5$$M24Y&+TU!3DE&15-4+DU&)G%U;W0[+"!A<F-H:79E7V5N=')Y +M7W!A=&AN86UE*&%E*2D[/"]04D4^/%`^"E1H92`\5%0@0TQ!4U,](G=E<W1E +M<FXB/F%S<V5R=%A86%@\+U14/B!M86-R;W,@8VAE8VL@=&AA="!T:&5I<@IA +M<F=U;65N=',@<V%T:7-F>2!C97)T86EN(&-O;F1I=&EO;G,N($EF('1H92!A +M<W-E<G1I;VX@9F%I;',M+69O<@IE>&%M<&QE+"!I9B!T:&4@;F%M92!O9B!T +M:&4@9FER<W0@96YT<GD@:7,@;F]T"B9Q=6]T.TU%5$$M24Y&+TU!3DE&15-4 +M+DU&)G%U;W0[+2UT:&4@;6%C<F\@=VEL;"!R97!O<G0@=&AE('!R;V)L96TN +M(`H\+U`^"CQ0/E1H97)E(&%R92!T=V\@:6UP;W)T86YT(&1I9F9E<F5N8V5S +M(&)E='=E96X@=&AE(#Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T6%A8/"]4 +M5#X*;6%C<F]S('5S960@:6X@=&AE<V4@=&5S="!H87)N97-S97,@86YD('1H +M92!)4T\@0R!S=&%N9&%R9"`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=#PO +M5%0^"FUA8W)O.B!&:7)S="P@=&AE<V4@87-S97)T(&UA8W)O<R!D;VXG="!E +M>&ET(&]N(&9A:6QU<F4N($)Y(&1E9F%U;'0L"G1H97D@<F5P;W)T('1H92!F +M86EL=7)E(&%N9"!R971U<FX@>F5R;R`H=&AE($,@;F]T:6]N(&]F("9Q=6]T +M.V9A;'-E)G%U;W0[*2X*4V5C;VYD+"!T:&5S92!M86-R;W,@:6YC;'5D92!V +M87)I86YT<R!T:&%T('!E<F9O<FT@82!V87)I971Y(&]F"G-P96-I9FEC('1E +M<W1S+B!4:&5S92!S<&5C:69I8R!V97)S:6]N<R`H<W5C:"!A<R`\5%0@0TQ! +M4U,](G=E<W1E<FXB/F%S<V5R=$5Q=6%L26YT/"]45#X*86YD(#Q45"!#3$%3 +M4STB=V5S=&5R;B(^87-S97)T17%U86Q3=')I;F<\+U14/B!I;B!T:&4@97AA +M;7!L92!A8F]V92D*9V5N97)A=&4@9&5T86EL960@;&]G(&UE<W-A9V5S(&]N +M(&9A:6QU<F4N($EN('!A<G1I8W5L87(L('1H97D@<')I;G0*=&AE('9A;'5E +M(&]F(&)O=&@@87)G=6UE;G1S.R!T:&ES(&=R96%T;'D@<VEM<&QI9FEE<R!D +M:6%G;F]S:6YG"F9A:6QU<F5S+B`*/"]0/@H\2#$@0TQ!4U,](G=E<W1E<FXB +M/CQ!($Y!344](DQI9F5?8WEC;&5?;V9?85]T97-T(CX\+T$^3&EF92!C>6-L +M92!O9@IA('1E<W0\+T@Q/@H\4#Y%86-H('1E<W0@<F5S:61E<R!I;B!A($,@ +M<V]U<F-E(&9I;&4@=VET:"!T:&4@<V%M92!N86UE(&%S('1H90IT97-T+B!4 +M:&4@=&5S="!I='-E;&8@:7,@82!F=6YC=&EO;B!T:&%T('1A:V5S(&YO(&%R +M9W5M96YT<RX@5&AE('1E<W0*:7,@9&5C;&%R960@=7-I;F<@=&AE(#Q45"!# +M3$%34STB=V5S=&5R;B(^1$5&24Y%7U1%4U0H*3PO5%0^(&UA8W)O+@I4:&ES +M(&UA8W)O('-E<G9E<R!B;W1H('1O(&5N<W5R92!T:&%T('1H92!T97-T(&ES +M(&1E8VQA<F5D(&-O<G)E8W1L>0IA;F0@87,@82!L86)E;"!T:&%T(&-A;B!B +M92!U<V5D('1O(&QO8V%T92!A;&P@9&5F:6YE9"!T97-T<RX@*$]N"E5N:7@M +M;&EK92!P;&%T9F]R;7,L(&$@<VEM<&QE(#Q45"!#3$%34STB=V5S=&5R;B(^ +M9W)E<#PO5%0^(&]P97)A=&EO;@II<R!U<V5D('1O(&-O;G-T<G5C="!A(&9I +M;&4@8V%L;&5D(#Q45"!#3$%34STB=V5S=&5R;B(^;&ES="YH/"]45#X*=&AA +M="!H;VQD<R!T:&4@;F%M97,@;V8@86QL(&]F('1H92!T97-T<RX@5&AI<R!M +M86ME<R!I="!V97)Y(&5A<WD@=&\*861D(&YE=R!T97-T<RXI(`H\+U`^"CQ0 +M/E1H92!T97-T(&AA<FYE<W,@9&5T97)M:6YE<R!W:&EC:"!T97-T<R!T;R!R +M=6XN($ET(&=O97,@=&AR;W5G:`IT:&4@9F]L;&]W:6YG('-T97!S('=H96YE +M=F5R(&ET(')U;G,@82!T97-T.B`*/"]0/@H\54P^"@D\3$D^/%`@4U193$4] +M(FUA<F=I;BUB;W1T;VTZ(#!I;B(^/%-44DE+13Y#;&]S97,@86QL(&9I;&4* +M"61E<V-R:7!T;W)S(&5X8V5P="!F;W(@<W1D:6XL('-T9&]U="P@86YD('-T +M9&5R<BX\+U-44DE+13X@*%1H:7,*"7-C<F5W<R!U<"!L:6)C(&]N('-O;64@ +M<&QA=&9O<FUS('-O(&AA<R!B965N(')E;6]V960N*2`*"3PO4#X*"3Q,23X\ +M4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY#<F5A=&5S(&$@=&5M<&]R +M87)Y(&1I<F5C=&]R>0H)=VAO<V4@;F%M92!M871C:&5S('1H92!N86UE(&]F +M('1H92!T97-T(&%N9"!S=VET8VAE<R!I;G1O('1H870*"61I<F5C=&]R>2X@ +M"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^4F5S +M971S('1H92!C=7)R96YT(&QO8V%L92X@"@D\+U`^"@D\3$D^/%`@4U193$4] +M(FUA<F=I;BUB;W1T;VTZ(#!I;B(^0V%L;',@=&AE('1E<W0@9G5N8W1I;VXN +M(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/DEF +M('1H97)E('=E<F4@;F\@87-S97)T:6]N"@EF86EL=7)E<RP@:70@=VEL;"!R +M96UO=F4@=&AE('1E;7!O<F%R>2!D:7)E8W1O<GDN("A)9B`\5%0@0TQ!4U,] +M(G=E<W1E<FXB/BUK/"]45#X*"6ES('-P96-I9FEE9"P@=&5M<&]R87)Y(&1I +M<F5C=&]R>2!A<F4@;&5F="!E=F5N(&EF('1H92!T97-T"@ES=6-C965D<RXI +M(`H)/"]0/@H)/$Q)/CQ0/CQ35%))2T4^268@=&AE<F4@87)E(&%N>2!O<&5N +M(&9I;&4@9&5S8W)I<'1O<G,@;W1H97(@=&AA;@H)<W1D:6XL('-T9&]U="P@ +M86YD('-T9&5R<BP@:70@<F5P;W)T<R!A;B!E<G)O<BX\+U-44DE+13X@5&5S +M=',*"7-H;W5L9"!N979E<B!L96%V92!O<&5N(&9I;&4@9&5S8W)I<'1O<G,N +M(`H)/"]0/@H\+U5,/@H\4#Y);B!P87)T:6-U;&%R+"!T97-T<R!C86X@<V%F +M96QY(&%S<W5M92!T:&%T.B`*/"]0/@H\54P^"@D\3$D^/%`@4U193$4](FUA +M<F=I;BUB;W1T;VTZ(#!I;B(^5&AE(&-U<G)E;G0@9&ER96-T;W)Y(&ES(&5M +M<'1Y"@EW:&5N('1H92!T97-T('-T87)T<RX@"@D\+U`^"@D\3$D^/%`@4U19 +M3$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^06YY(&9I;&5S(&-R96%T960@:6X@ +M=&AE(&-U<G)E;G0*"61I<F5C=&]R>2!W:6QL(&)E(')E;6]V960@9F]R('EO +M=2X@"@D\+U`^"@D\3$D^/%`^5&AE(&-U<G)E;G0@;&]C86QE(&ES('1H92!D +M969A=6QT("9Q=6]T.T,F<75O=#L@;&]C86QE+B`*"3PO4#X*/"]53#X*/%`^ +M5&5S=',@<VAO=6QD.B`*/"]0/@H\54P^"@D\3$D^/%`@4U193$4](FUA<F=I +M;BUB;W1T;VTZ(#!I;B(^4F5L96%S92!A;&P@;65M;W)Y+B!4:&4@=&5S=`H) +M<W5I=&5S(&%R92!O8V-A<VEO;F%L;'D@<G5N('5N9&5R(&$@;65M;W)Y(&1E +M8G5G9V5R('1O(&1E=&5C="!L96%K<PH):6X@=&AE(&QI8F%R8VAI=F4@;&EB +M<F%R>2X@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I +M;B(^0VQO<V4@86QL(&]P96YE9"!F:6QE<RX@5&AI<R!H96QP<PH)=&\@8V%T +M8V@@9FEL92!D97-C<FEP=&]R(&QE86MS(&EN(&QI8F%R8VAI=F4N(`H)/"]0 +M/@H)/$Q)/CQ0/DYO="!R96%D(&]R('=R:71E(&%B<V]L=71E('!A=&AS+B`* +M"3PO4#X*/"]53#X*/$@Q($-,05-3/2)W97-T97)N(CX\02!.04U%/2)0;&%T +M9F]R;5]V87)I871I;VXB/CPO03Y0;&%T9F]R;0IV87)I871I;VX\+T@Q/@H\ +M4#Y3;VUE('1E<W1S(&%R92!S<&5C:69I8R!T;R!A('!A<G1I8W5L87(@<&QA +M=&9O<FTN(%-U8V@@=&5S=',*<VAO=6QD('5S92!A<'!R;W!R:6%T92!P;&%T +M9F]R;2US<&5C:69I8R!M86-R;W,@87,@9F]L;&]W<SH@"CPO4#X*/%!212!# +M3$%34STB=V5S=&5R;B(^(VEF(%]?4$Q!5$9/4DT*+BXN('9A<FEO=7,@:&5L +M<&5R(&9U;F-T:6]N<R`N+BX*(V5N9&EF"D1%1DE.15]415-4*&9O;U]P;&%T +M9F]R;2D*>PHC:68@7U]03$%41D]230HF;F)S<#L@)FYB<W`[+BXN('1E<W1S +M(&%S('5S=6%L("XN+BX*(V5L<V4*)FYB<W`[("9N8G-P.W-K:7!P:6YG*"9Q +M=6]T.W!L871F;W)M+7-P96-I9FEC('1E<W1S)G%U;W0[*3L*(V5N9&EF"GT\ +M+U!213X\4#X*26X@<&%R=&EC=6QA<BP@;F]T92!T:&%T(&%L;"!T97-T<R!A +M<F4@8V]M<&EL960@86YD(')U;B!O;B!A;&P*<&QA=&9O<FUS+B`*/"]0/@H\ +M4#Y-;W-T('1E<W1S(&%R92!N;W0@<&QA=&9O<FTM<W!E8VEF:6,@86YD('=I +M;&P@=&AU<R!E;F0@=7`@<G5N;FEN9PIO;B!M86YY(&1I9F9E<F5N="!P;&%T +M9F]R;7,N($EN(&]R9&5R('1O('-I;7!L:69Y('=R:71I;F<@<W5C:"!T97-T +M<RP*=')Y('1O('5S92!P;&%T9F]R;2UI;F1E<&5N9&5N="!C;V1I;F<Z(`H\ +M+U`^"CQ53#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY5 +M<V4@<W1D:6\@/%14($-,05-3/2)W97-T97)N(CYF;W!E;B@I/"]45#XL"@D\ +M5%0@0TQ!4U,](G=E<W1E<FXB/F9W<FET92@I/"]45#XL(#Q45"!#3$%34STB +M=V5S=&5R;B(^9G)E860H*3PO5%0^+`H)86YD(#Q45"!#3$%34STB=V5S=&5R +M;B(^9F-L;W-E*"D\+U14/B!T;R!A8V-E<W,@9FEL97,@=VAE;F5V97(*"69E +M87-I8FQE+B`*"3PO4#X*"3Q,23X\4#Y,;V]K('1H<F]U9V@@=&AE(#Q45"!# +M3$%34STB=V5S=&5R;B(^=&5S="YH/"]45#X@:&5A9&5R('1O"@ES964@:68@ +M=&AE<F4@87)E(&%S<V5R=%AX>"@I(&9U;F-T:6]N<R!T:&%T('EO=2!C86X@ +M=7-E+B!4:&5R92=S(&$*"6QI<W0@;V8@=&AE(&UO<F4@<&]P=6QA<B!O;F5S +M(&)E;&]W+"!B=70@;F5W(&]N97,@87)E(&]F=&5N(&%D9&5D+B`*"3PO4#X* +M/"]53#X*/$@Q($-,05-3/2)W97-T97)N(CX\02!.04U%/2)!<W-E<G1?;6%C +M<F]S(CX\+T$^07-S97)T(&UA8W)O<SPO2#$^"CQ0/E1H92!F;VQL;W=I;F<@ +M:7,@82!N96-E<W-A<FEL>2!I;F-O;7!L971E(&QI<W0@;V8@87-S97)T(&9U +M;F-T:6]N<PIA=F%I;&%B;&4@=&\@=&5S=',Z(`H\+U`^"CQ53#X*"3Q,23X\ +M4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY"87-I8R!E<75A;&ET>3H@ +M/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1%<75A;$EN=#PO5%0^+`H)/%14 +M($-,05-3/2)W97-T97)N(CYA<W-E<G1%<75A;%-T<FEN9SPO5%0^+"`\5%0@ +M0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$5Q=6%L365M/"]45#X*"0D\+U`^"@D\ +M3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^1FEL92!C<F5A=&EO +M;CH@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1-86ME1FEL93PO5%0^+`H) +M/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1-86ME4WEM;&EN:SPO5%0^+"`\ +M5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$UA:V5(87)D;&EN:SPO5%0^+`H) +M/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1-86ME1&ER/"]45#X@"@D\+U`^ +M"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^1FEL92!T97-T +M<SH@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1)<U)E9SPO5%0^+`H)/%14 +M($-,05-3/2)W97-T97)N(CYA<W-E<G1)<T1I<CPO5%0^+"`\5%0@0TQ!4U,] +M(G=E<W1E<FXB/F%S<V5R=$ES4WEM;&EN:SPO5%0^+`H)/%14($-,05-3/2)W +M97-T97)N(CYA<W-E<G1&:6QE4VEZ93PO5%0^+"`\5%0@0TQ!4U,](G=E<W1E +M<FXB/F%S<V5R=$9I;&5.;&EN:W,\+U14/BP*"3Q45"!#3$%34STB=V5S=&5R +M;B(^87-S97)T1FEL94UT:6UE/"]45#X@"@D\+U`^"@D\3$D^/%`^1FEL92!C +M;VYT96YT<SH@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1&:6QE16UP='D\ +M+U14/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T1FEL94YO;D5M<'1Y +M/"]45#XL(#Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T1FEL94-O;G1E;G1S +M/"]45#XL"@D\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=%1E>'1&:6QE0V]N +M=&5N=',\+U14/B`*"3PO4#X*/"]53#X*/$@Q($-,05-3/2)W97-T97)N(CX\ +M02!.04U%/2)2969E<F5N8V5?1FEL97,B/CPO03Y2969E<F5N8V4@1FEL97,\ +M+T@Q/@H\4#Y-86YY('1E<W1S(')E<75I<F4@<F5A9&EN9R!A('!R92UC;VYS +M=')U8W1E9"!R969E<F5N8V4@9FEL92X@4W5C:`IF:6QE<R!A<F4@<W1O<F5D +M('=I=&@@=&AE('-O=7)C92!C;V1E(&9O<B!T:&4@87-S;V-I871E9"!T97-T +M('-U:71E+@I2969E<F5N8V4@9FEL97,@87)E(&YA;65D(&%C8V]R9&EN9R!T +M;R!T:&4@=&5S="!A;F0@;75S="!B92!U=65N8V]D960*=&\@8F4@8VAE8VME +M9"!I;G1O('-O=7)C92!C;VYT<F]L+B`*/"]0/@H\4#Y&;W(@97AA;7!L92P@ +M:68@>6]U(&YE960@82!R969E<F5N8V4@=&%R(&%R8VAI=F4@=&\@=7-E('=I +M=&@*/%14($-,05-3/2)W97-T97)N(CYT97-T7V9O;SPO5%0^+"!T:&4@9FEL +M92!S:&]U;&0@8F4@;F%M960*/%14($-,05-3/2)W97-T97)N(CYT97-T7V9O +M;RYT87(\+U14/B!A;F0@<W1O<F5D(&EN('-O=7)C92!C;VYT<F]L(&%S"CQ4 +M5"!#3$%34STB=V5S=&5R;B(^=&5S=%]F;V\N=&%R+G5U/"]45#XN(`H\+U`^ +M"CQ0/E=I=&AI;B!T:&4@=&5S="!C;V1E+"!Y;W4@8V%N(')E8V]V97(@=&AE +M(')E9F5R96YC92!F:6QE('=I=&@Z(`H\+U`^"CQ04D4@0TQ!4U,](G=E<W1E +M<FXB(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P+C)I;B(^)FYB<W`[("9N8G-P +M.R!E>'1R86-T7W)E9F5R96YC95]F:6QE*"9Q=6]T.W1E<W1?9F]O+G1A<B9Q +M=6]T.RD[/"]04D4^/%`^"E1H92`\5%0@0TQ!4U,](G=E<W1E<FXB/F5X=')A +M8W1?<F5F97)E;F-E7V9I;&4H*3PO5%0^(&9U;F-T:6]N('=I;&P*=75D96-O +M9&4@=&AE(')E<75E<W1E9"!F:6QE(&%N9"!P=70@=&AE(')E<W5L="!I;B!T +M:&4@8W5R<F5N=`ID:7)E8W1O<GDN(`H\+U`^"CQ0/DQO;VL@870@/%14($-, +M05-3/2)W97-T97)N(CYT97-T7W)E861?9F]R;6%T7V-P:6]?8FEN7V)E+F,\ +M+U14/@IF;W(@82!S:6UP;&4@97AA;7!L92!O9B!T:&ES('5S86=E+B`*/"]0 +M/@H\4#Y!(&9E=R!O9B!T:&4@;VQD97(@=&5S=',@<W1O<F4@<F5F97)E;F-E +M(&1A=&$@=VET:&EN('1H92!S;W5R8V4*8V]D92!A<R!A(&AE>"UE;F-O9&5D +M(&%R<F%Y(&]F(&-H87)A8W1E<G,N(%1H:7,@=V%S(&-O;6UO;B!B969O<F4* +M/%14($-,05-3/2)W97-T97)N(CYE>'1R86-T7W)E9F5R96YC95]F:6QE*"D\ +M+U14/B!W87,@861D960@86YD(&ES"FYO="!R96-O;6UE;F1E9"!F;W(@;F5W +M(&-O9&4N(`H\+U`^"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB1&]S +M7V%N9%]$;VYT<R(^/"]!/D1O<R!A;F0@1&]N=',\+T@Q/@H\54P^"@D\3$D^ +M/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^1$\@=7-E(&%S<V5R=',@ +M;&EB97)A;&QY+B!)="=S"@EC;VUM;VX@=&\@:&%V92!A;B!A<W-E<G0@;VX@ +M86QM;W-T(&5V97)Y(&QI;F4N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G +M:6XM8F]T=&]M.B`P:6XB/D1/('5S92!A<W-E<G1%<75A;$EN="P*"6%S<V5R +M=$5Q=6%L4W1R:6YG+"!A<W-E<G1%<75A;$UE;2!T;R!T97-T(&5Q=6%L:71Y +M(&EN<W1E860@;V8@<&QA:6X*"6%S<V5R="@I.R!T:&4@<W!E8VEA;&EZ960@ +M9F]R;7,@9VEV92!A(&QO="!M;W)E(&EN9F]R;6%T:6]N(&]N(&$*"69A:6QU +M<F4N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB +M/D1/('1E<W0@>6]U<B!T97-T<SL@97AP97)I;65N="!B>0H)8VAA;F=I;F<@ +M82!P:65C92!O9B!C;V1E(&%N9"!M86ME('-U<F4@>6]U<B!T97-T(&9A:6QS +M+B!)9B!Y;W4@=&AI;FL*"7EO=2=V92!F;W5N9"!A(&)U9RP@=V4@<F5C;VUM +M96YD('=R:71I;F<@=&AE('1E<W0@9FER<W0L(&UA:V4@<W5R90H)=&AE('1E +M<W0@9F%I;',L('1H96X@9FEX:6YG('1H92!B=6<N(`H)/"]0/@H)/$Q)/CQ0 +M(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D1/(')U;B!A;&P@;V8@=&AE +M('1E<W1S(&)E9F]R90H)<W5B;6ET=&EN9R!A(&-H86YG92X@1&5P96YD:6YG +M(&]N('EO=7(@8G5I;&0@96YV:7)O;FUE;G0L(#Q45"!#3$%34STB=V5S=&5R +M;B(^;6%K90H)=&5S=#PO5%0^(&]R(#Q45"!#3$%34STB=V5S=&5R;B(^;6%K +M92!C:&5C:SPO5%0^('=I;&P@=7-U86QL>2!R=6X*"6%L;"!O9B!T:&4@=&5S +M=',N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB +M/D1/3B=4(')E;'D@;VX@/%14($-,05-3/2)W97-T97)N(CY(059%7SPO5%0^ +M"@EM86-R;W,@9G)O;2!C;VYF:6<N:"X@*$EF('1H92!T97-T<R!U<V4@=&AE +M('-A;64@/%14($-,05-3/2)W97-T97)N(CY(059%7SPO5%0^"@EM86-R;W,@ +M87,@=&AE(&-O9&4@8F5I;F<@=&5S=&5D('1H96X@8V]N9FEG=7)A=&EO;B!P +M<F]B;&5M<R!W:6QL(&)E"@EC;W9E<F5D('5P+BD@"@D\+U`^"@D\3$D^/%`@ +M4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^1$\@=7-E(')U;G1I;64@=&5S +M=',@9F]R('!L871F;W)M"@EF96%T=7)E<RX@1F]R(&5X86UP;&4L('1H92!! +M0TP@=&5S=',@=')Y('1O('-E="!A;B!!0TP@;VX@82!F:6QE(&%N9`H)<F5A +M9"!I="!B86-K('1O(&1E=&5R;6EN92!I9B!!0TP@<W5P<&]R="!I<R!A=F%I +M;&%B;&4L('1H96X@=&AE>0H)97AE<F-I<V4@=&AE(&QI8F%R8VAI=F4@04-, +M(&AA;F1L:6YG+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O +M;3H@,&EN(CY$3R!L;V]K(&%T(&5X:7-T:6YG('1E<W1S+B!/9G1E;BP*"6$@ +M8G5G(&-A;B!B92!T97-T960@8GD@861D:6YG(&IU<W0@82!C;W5P;&4@;V8@ +M87-S97)T<R!T;R!A;@H)97AI<W1I;F<@=&5S="!I;G-T96%D(&]F('=R:71I +M;F<@82!N97<@;VYE+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O +M='1O;3H@,&EN(CY$3R!I;7!R;W9E(&5X:7-T:6YG('1E<W1S+B!);@H)<&%R +M=&EC=6QA<BP@:68@>6]U('-E92!A('1E<W0@9F%I;'5R92!T:&%T(&ES(&AA +M<F0@=&\@=6YD97)S=&%N9"P*"6-O;G-I9&5R(&%D9&EN9R!A(&9A:6QU<F4H +M*2!M97-S86=E(&]R(&-O;6UE;G1S('-O('1H92!N97AT('!E<G-O;@H)=VEL +M;"!H879E(&%N(&5A<VEE<B!T:6UE+B`*"3PO4#X*"3Q,23X\4#Y$3R!A<VL@ +M;VX@=&AE(&UA:6QI;F<@;&ES=',@:68@>6]U(&AA=F4@<75E<W1I;VYS+B!3 +M;VUE('1E<W1S"@EA<F4@8F5T=&5R('=R:71T96X@=&AA;B!O=&AE<G,N(`H) +M/"]0/@H\+U5,/@H\2#$@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](E-O;65? +M97AA;7!L97-?;V9?=&5S=',B/CPO03Y3;VUE"F5X86UP;&5S(&]F('1E<W1S +M/"](,3X*/$@R($-,05-3/2)W97-T97)N(CX\02!.04U%/2),:6)A<F-H:79E +M7W)E861?=&5S=',B/CPO03Y,:6)A<F-H:79E"G)E860@=&5S=',\+T@R/@H\ +M4#Y4:&5R92!A<F4@<75I=&4@82!F97<@<F5A9"!T97-T<R!T:&%T('-I;7!L +M>2!R96%D(&$@<')E+6)U:6QT"FEN<'5T(&9I;&4@86YD('9E<FEF>2!T:&4@ +M<F5S=6QT<RX@5&AE<V4@=7-E(#Q45"!#3$%34STB=V5S=&5R;B(^97AT<F%C +M=%]R969E<F5N8V5?9FEL92@I/"]45#X*=&\@9&5C;V1E(&$@=75E;F-O9&5D +M(&EN<'5T(&9I;&4L('1H96X@;W!E;B!T:&%T(&9I;&4@=VET:"!L:6)A<F-H +M:79E"F%N9"!V97)I9GD@=&AE(')E<W5L=',N($UO<W0@;V8@=&AE<V4@87)E +M('!R971T>2!S=')A:6=H=&9O<G=A<F0N(`H\+U`^"CQ(,B!#3$%34STB=V5S +M=&5R;B(^/$$@3D%-13TB3&EB87)C:&EV95]R96%D+W=R:71E7W1E<W1S(CX\ +M+T$^3&EB87)C:&EV90IR96%D+W=R:71E('1E<W1S/"](,CX*/%`^36]S="!O +M9B!T:&4@=W)I=&4@=&5S=',@<F5A;&QY(&IU<W0@=F5R:69Y('1H870@;&EB +M87)C:&EV92!C86X*<F5A9"!W:&%T(&ET('=R:71E<RX@5&AE<V4@9V5N97)A +M;&QY('5S92!T:&4@;65M;W)Y(&EN=&5R9F%C97,N(%1H97D*9F5E9"!A<F-H +M:79E(&5N=')I97,@:6YT;R!T:&4@=W)I=&5R('1O(&-R96%T92!A;B!A<F-H +M:79E(&EN(&UE;6]R>0IA;F0@=&AE;B!O<&5N('1H92!M96UO<GD@86=A:6X@ +M=&\@<F5A9"!T:&4@9&%T82!B86-K(&%N9"!V97)I9GD@=&AA=`II="!I<R!T +M:&4@<V%M92X@"CPO4#X*/$@R($-,05-3/2)W97-T97)N(CX\02!.04U%/2), +M:6)A<F-H:79E7W=R:71E7W9A;&ED871O<G,B/CPO03Y,:6)A<F-H:79E"G=R +M:71E('9A;&ED871O<G,\+T@R/@H\4#Y!(&9E=R!W<FET92!T97-T<R!W<FET +M92!A;B!A<F-H:79E(&EN=&\@;65M;W)Y(&%N9"!T:&5N(&EN<W!E8W0*=&AE +M(&%C='5A;"!B>71E<R!T;R!V97)I9GD@=&AA="!T:&4@87)C:&EV92!W87,@ +M8W)E871E9"!C;W)R96-T;'DN"E1H97-E('1E<W1S(&%R92!N:6-E('1O(&AA +M=F4@8G5T(&%R92!T961I;W5S('1O(&)U:6QD+B`*/"]0/@H\4#Y4:&5R92!A +M<F4@86QS;R!A(&-O=7!L92!O9B!S=6-H('9A;&ED871O<G,@9F]R(&)S9'1A +M<B!A;F0@8G-D8W!I;RX*5&AE<V4@87)E('9E<GD@=')I8VMY('-I;F-E('1H +M92!E>&%C="!D871A(&-O;G1A:6YS('9A;'5E<R!T:&%T('1H90IT97-T(&-A +M;FYO="!C;VUP;&5T96QY(&-O;G1R;VP@*'-U8V@@87,@=&AE(&-U<G)E;G0@ +M=&EM92!O<@IU<V5R;F%M92DN(`H\+U`^"CQ(,B!#3$%34STB=V5S=&5R;B(^ +M/$$@3D%-13TB1&ES:U]T97-T<R(^/"]!/D1I<VL@=&5S=',\+T@R/@H\4#Y, +M:6)A<F-H:79E)W,@9&ES:R!)+T\@05!)<RP@87,@=V5L;"!A<R!B<V1T87(@ +M86YD(&)S9&-P:6\L(&YE960@=&\*;W!E<F%T92!B>2!V97)I9GEI;F<@9FEL +M97,@;VX@9&ES:RX@5&\@;6%K92!T:&ES(&5A<VEE<BP@=&AE('1E<W0*9G)A +M;65W;W)K(&YO=R!H87,@82!L87)G92!N=6UB97(@;V8@87-S97)T:6]N<R!T +M;R!V97)I9GD@=&EM97-T86UP<RP*<&5R;6ES<VEO;G,L(&%N9"!O=&AE<B!B +M87-I8R!F:6QE(&1A=&$N(%1H97-E(&%S<V5R=&EO;G,@=7-E"F%P<')O<')I +M871E('-Y<W1E;2!C86QL<R!F;W(@96%C:"!P;&%T9F]R;3L@;F5W('1E<W1S +M('-H;W5L9"!T<GD@=&\*879O:60@=7-I;F<@/%14($-,05-3/2)W97-T97)N +M(CYS=&%T*"D\+U14/BP@=VAI8V@@:7,@;F]T('5N:69O<FUL>0IA=F%I;&%B +M;&4N(`H\+U`^"CQ(,B!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB1G5Z>E]T +M97-T97(B/CPO03Y&=7IZ('1E<W1E<CPO2#(^"CQ0/E1H92!F=7IZ('1E<W1E +M<B!I<R!O;F4@;V8@=&AE(&9E=R!T97-T<R!T:&%T(&1O97,@;F]T(&%G9W)E +M<W-I=F5L>0IU<V4@87-S97)T:6]N<RX@271S('!U<G!O<V4@:7,@=&\@=')Y +M(&%N9"!C<F%S:"!L:6)A<F-H:79E(&)Y(&9E961I;F<*:70@:6YP=70@=&AA +M="!I<R!S;&EG:'1L>2!D86UA9V5D+B`H4F5M96UB97(@=&AA="!L:6)A<F-H +M:79E(&1O97,*:&%V92!S;VUE(&9A:6QS869E(&-O9&4@=&AA="!D96QI8F5R +M871E;'D@86)O<G1S('1H92!E;G1I<F4@<')O9W)A;0II9B!C97)T86EN(&EN +M=F%R:6%N=',@87)E('9I;VQA=&5D+BD@"CPO4#X*/%`^4VEN8V4@82!F=7IZ +M(&9A:6QU<F4@8V%U<V5S(&$@8W)A<V@L(&ET)W,@:6UP;W-S:6)L92!T;R!R +M97!O<G0@=&AE"F5R<F]R('1O('1H92!C;VYS;VQE+"!S;R!T:&4@9G5Z>B!T +M97-T97(@:6YS=&5A9"!G96YE<F%T97,@80IR86YD;VUL>2UD86UA9V5D(&9I +M;&4L('-A=F5S('1H870@9FEL92!T;R!D:7-K+"!T:&5N(')U;G,@=&AE(&9I +M;&4*=&AR;W5G:"!L:6)A<F-H:79E('1O('1R>2!T;R!P<F]V;VME(&$@8W)A +M<V@N($EF(&QI8F%R8VAI=F4@8W)A<VAE<PIT:&4@96YT:7)E('1E<W1E<BP@ +M=&AE(&EN<'5T('1H870@8V%U<V5D('1H92!C<F%S:"!W:6QL(&)E(&%V86EL +M86)L90IO;B!D:7-K(&9O<B!F=7)T:&5R(&%N86QY<VES+B`*/"]0/@H\4#Y! +M;'1H;W5G:"!I="!I<R!U;G5S=6%L(&9O<B!A('1E<W0@<')O9W)A;2!T;R!U +M<V4@<F%N9&]M(&EN<'5T+"!T:&4*9G5Z>B!T97-T97(@:&%S('!R;W9E;B!Q +M=6ET92!U<V5F=6P@870@=6YC;W9E<FEN9R!P;V]R(&5R<F]R"FAA;F1L:6YG +M+B!5;F9O<G1U;F%T96QY+"!T:&4@;F5E9"!T;R!W<FET92!T:&4@9&%T82!T +M;R!D:7-K(&)E9F]R90IE86-H('1E<W0@:7,@82!S:6=N:69I8V%N="!P97)F +M;W)M86YC92!I<W-U92X@"CPO4#X*/$@R($-,05-3/2)W97-T97)N(CX\02!. +M04U%/2),87)G95]T87)?=&5S=&5R(CX\+T$^3&%R9V4@=&%R('1E<W1E<CPO +M2#(^"CQ0/E1H92!L87)G92!T87(@=&5S=&5R(&%T=&5M<'1S('1O(&5X97)C +M:7-E(&)O=6YD87)Y(&-A<V5S('=I=&@@=F5R>0IL87)G92!E;G1R:65S+"!U +M<"!T;R`Q('1E<F%B>71E+B!/9B!C;W5R<V4L('=R:71I;F<@82`Q('1E<F%B +M>71E"F5N=')Y('1O(&%N('5N8V]M<')E<W-E9"!A<F-H:79E(&]N(&1I<VL@ +M;W(@;65M;W)Y(&ES('5N86-C97!T86)L92P*8F]T:"!F;W(@<&5R9F]R;6%N +M8V4@86YD('-P86-E(')E87-O;G,N($5V96X@9WII<"!O<B!B>FEP,@IC;VUP +M<F5S<VEO;B!W;VXG="!H96QP.R!A;'1H;W5G:"!S;6%L;&5R+"!T:&4@;W5T +M<'5T(&ES('-T:6QL(&QA<F=E"F%N9"!T:&4@=&EM92!N965D960@=&\@8V]M +M<')E<W,@<W5C:"!A(&QA<F=E(&%M;W5N="!O9B!D871A(&ES"G!R;VAI8FET +M:79E+B!3;R!T:&4@;&%R9V4@=&%R('1E<W1E<B!U<V5S(&$@=')I8VLN(`H\ +M+U`^"CQ0/E)E;65M8F5R('1H870@86X@=6YC;VUP<F5S<V5D('1A<B!A<F-H +M:79E(&-O;G-I<W1S(&]F(&%L=&5R;F%T:6YG"FAE861E<G,@86YD(&)O9&EE +M<RX@268@=&AE(&)O9&EE<R!C;VYS:7-T(&5N=&ER96QY(&]F('IE<F\@8GET +M97,L"G1H96X@86QL('1H870G<R!N965D960@=&\@<F5C;VYS=')U8W0@=&AE +M(&%R8VAI=F4@:7,@=&\@<F5C;W)D('1H90IR96QA=&EV96QY('-M86QL(&AE +M861E<G,@86YD('-T;W)E(&$@8V]U;G0@;V8@96%C:"!C;VYT:6=U;W5S(&)L +M;V-K"F]F('IE<F]S+B!4:&ES('-I;7!L92`F<75O=#MR=6XM;&5N9W1H(&5N +M8V]D:6YG)G%U;W0[(&ES('9E<GD*969F96-T:79E+"!C;VUP<F5S<VEN9R!A +E('-A;7!L92!A<F-H:79E('<*57L/0!0`[0V3P`4````````````` +` +end 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 new file mode 100644 index 0000000..fa32062 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part07.rar.uu @@ -0,0 +1,299 @@ +begin 644 - +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 +M:6QO8GET97,L(&5V96X@:68@=&AO<V4@96YT<FEE<R!R86YG92!U<"!T;R`Q +M5$(N(`H\+U`^"CQ0/D)Y('=R:71I;F<@82!C=7-T;VT@22]/(&QA>65R('1H +M870@:6UP;&5M96YT<R!S=6-H(&-O;7!R97-S:6]N+"!W90IC86X@=W)I=&4@ +M=F5R>2!L87)G92!E;G1R:65S('1H<F]U9V@@;&EB87)C:&EV92!T:&5N(')E +M860@=&AE;2!B86-K"F%N9"!V97)I9GD@=&AA="!L:6)A<F-H:79E(&-O<G)E +M8W1L>2!H86YD;&5S(&%L;"!O9B!T:&4@8F]U;F1A<GD*8V%S97,N(`H\+U`^ +M"CQ0/D]F(&-O=7)S92P@979E;B!S8V%N;FEN9R!O=71P=70@=&\@9&5T97)M +M:6YE('IE<F\@8FQO8VMS(&-A;B!T86ME"G%U:71E(&$@=VAI;&4L('-O('1H +M92!L87)G92!T87(@=&5S=&5R(&UA:V5S(&]N92!M;W)E(&]P=&EM:7IA=&EO +M;CH*3&EB87)C:&EV92!I<R`F<75O=#MM;W-T;'DF<75O=#L@>F5R;RUC;W!Y +M+B!7:&5N('EO=2!G:79E(&ET(&$@;&%R9V4*8FQO8VL@=&\@=W)I=&4@=&\@ +M86X@96YT<GD@8F]D>2P@:70@=VEL;"!P87-S('!O:6YT97)S('-T<F%I9VAT +M"G1H<F]U9V@@=&\@=&AE(&]U='!U="!R;W5T:6YE+"!E>&-E<'0@:6X@=&AO +M<V4@8V%S97,@=VAE<F4@:70@;75S=`IC;W!Y(&1A=&$@=&\@8V]R<F5C=&QY +M(&)U:6QD(&)L;V-K<RX@5&AE(&QA<F=E('1A<B!T97-T97(@=&%K97,*861V +M86YT86=E(&]F('1H:7,@=&\@<75I8VML>2!D971E8W0@=VAE;B!A(&)L;V-K +M(&)E:6YG('=R:71T96X@;W5T(&)Y"G1H92!A<F-H:79E('=R:71E<B!I<R!T +M:&4@<V%M92!A<R!S;VUE(&]F('1H92!D871A('1H870@=V%S(&=I=F5N(&)Y +M"G1H92!T97-T(&%S('1H92!E;G1R>2!B;V1Y+"!A;F0@<VEM:6QA<FQY('=H +M96X@<F5A9&EN9R!T:&4@87)C:&EV90IB86-K+B`*/"]0/@H\4#Y486ME;B!T +M;V=E=&AE<BP@=&AE<V4@=')I8VMS(&%L;&]W('1H92!L87)G92!T87(@=W)I +M=&5R('1O('1E<W0*9F]R(&ES<W5E<R!S=6-H(&%S('!R;W!E<B!S=&]R86=E +M(&]F('9E<GD@;&%R9V4@9FEL92!S:7IE<R`H=&%R(&9I;&5S"G-U<'!O<G0@ +M<V5V97)A;"!D:69F97)E;G0@=V%Y<R!T;R!S=&]R92!F:6QE('-I>F5S('=H +M:6-H('1R861E(&]F9@IP;W)T86)I;&ET>2!V97)S=7,@<F%N9V4[(&QI8F%R +M8VAI=F4@=')I97,@=&\@=7-E('1H92!M;W-T('!O<G1A8FQE"F]N92!I="!C +M86X@9F]R(&5A8V@@96YT<GDI(&%N9"!I;G1E9V5R(&]V97)F;&]W("A7:6YD +M;W=S(#,R+6)I="`\5%0@0TQ!4U,](G=E<W1E<FXB/F]F9E]T/"]45#X*8G)O +M:V4@=&AE(&QA<F=E('1A<B!T97-T(&%N9"!L960@;&EB87)C:&EV92!T;R!M +M86ME(&AE879I97(@=7-E(&]F"CQ45"!#3$%34STB=V5S=&5R;B(^:6YT-C1? +M=#PO5%0^(&EN=&5R;F%L;'DI(&EN(&$@=&5S="!T:&%T(')U;G,@:6X*=6YD +M97(@,2\T('-E8V]N9"X@"CPO4#X*/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ +M(#!I;B(^/$)2/@H\+U`^"CPO0D]$63X*/"](5$U,/A3!="*05@!0+0``CTX` +M``,]/=-T\V,A0!0P+`"D@0``=&5S=&1I<EQT97-T<W5B9&ER7$QI8F%R8VAI +M=F5!9&1I;F=497-T+FAT;6S`S#-?.T);7SM"/"%$3T-465!%($A434P@4%5" +M3$E#("(M+R]7,T,O+T141"!(5$U,(#0N,"!4<F%N<VET:6]N86PO+T5.(CX* +M/$A434P^"CQ(14%$/@H)/$U%5$$@2%144"U%455)5CTB0T].5$5.5"U465!% +M(B!#3TY414Y4/2)T97AT+VAT;6P[(&-H87)S970]=71F+3@B/@H)/%1)5$Q% +M/CPO5$E43$4^"@D\345402!.04U%/2)'14Y%4D%43U(B($-/3E1%3E0](DQI +M8G)E3V9F:6-E(#,N,R`@*%5N:7@I(CX*"3Q-151!($Y!344](D-214%4140B +M($-/3E1%3E0](C(P,3$P-C(V.S(R,C,U,3`P(CX*"3Q-151!($Y!344](D-( +M04Y'140B($-/3E1%3E0](C(P,3$P-C(V.S(R,C4T-3`P(CX*"3Q35%E,12!4 +M65!%/2)T97AT+V-S<R(^"@D\(2TM"@D)0'!A9V4@>R!M87)G:6XZ(#`N-SEI +M;B!]"@D)4"![(&UA<F=I;BUB;W1T;VTZ(#`N,#AI;B!]"@D)2#$@>R!M87)G +M:6XM8F]T=&]M.B`P+C`X:6X@?0H)"4@Q+G=E<W1E<FX@>R!F;VYT+69A;6EL +M>3H@(DQI8F5R871I;VX@4V5R:68B+"!S97)I9B!]"@D)2#$N8VIK('L@9F]N +M="UF86UI;'DZ(")":71S=')E86T@5F5R82!386YS(B!]"@D)2#$N8W1L('L@ +M9F]N="UF86UI;'DZ(")&<F5E4V%N<R(@?0H)"5!212YC:FL@>R!F;VYT+69A +M;6EL>3H@(D)I='-T<F5A;2!697)A(%-A;G,B+"!M;VYO<W!A8V4@?0H)"4@R +M('L@;6%R9VEN+6)O='1O;3H@,"XP.&EN('T*"0E(,BYC=&P@>R!F;VYT+69A +M;6EL>3H@(D9R965386YS(B!]"@D)5%0N8VIK('L@9F]N="UF86UI;'DZ(")" +M:71S=')E86T@5F5R82!386YS(BP@;6]N;W-P86-E('T*"2TM/@H)/"]35%E, +M13X*/"](14%$/@H\0D]$62!,04Y'/2)E;BU54R(@1$E2/2),5%(B/@H\2#$@ +M0TQ!4U,](G=E<W1E<FXB/DEN=')O9'5C=&EO;CPO2#$^"CQ0/DQI8F%R8VAI +M=F4@:7,@;F]W(&$@9F%I<FQY(&-O;7!L97@@<&EE8V4@;V8@<V]F='=A<F4@ +M=&AA="!R=6YS(&]N"F$@;G5M8F5R(&]F(&1I9F9E<F5N="!P;&%T9F]R;7,N +M($$@=&AO<F]U9V@@=&5S="!S=6ET92!I<R!E<W-E;G1I86P*8F]T:"!F;W(@ +M=F5R:69Y:6YG(&YE=R!P;W)T<R!A;F0@9F]R(&5N<W5R:6YG('1H870@9G5T +M=7)E(&-H86YG97,*9&]N)W0@8G)E86L@97AI<W1I;F<@9G5N8W1I;VYA;&ET +M>2X@"CPO4#X*/%`^06YY('-I9VYI9FEC86YT(&-H86YG92!T;R!L:6)A<F-H +M:79E+"!I;F-L=61I;F<@;6]S="!B=6<@9FEX97,L"G-H;W5L9"!B92!A8V-O +M;7!A;FEE9"!B>2!N97<@=&5S=',@;W(@8VAA;F=E<R!T;R!E>&ES=&EN9R!T +M97-T<RX@5&AI<PIA<G1I8VQE(&5X<&QA:6YS(&AO=R!T:&4@;&EB87)C:&EV +M92!T97-T('-U:71E<R!W;W)K(&%N9"!H;W<@=&\*97AT96YD('1H96TN(`H\ +M+U`^"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB0G5I;&1I;F=?86YD +M7U)U;FYI;F=?=&AE7U1E<W1?4')O9W)A;7,B/CPO03X*0G5I;&1I;F<@86YD +M(%)U;FYI;F<@=&AE(%1E<W0@4')O9W)A;7,\+T@Q/@H\4#Y%86-H(&UA:F]R +M(&-O;7!O;F5N="TM;&EB87)C:&EV92P@8G-D=&%R+"!A;F0@8G-D8W!I;RTM +M:&%S(&$@=&5S=`IP<F]G<F%M('1H870@97AE<F-I<V5S('1H92!F=6YC=&EO +M;F%L:71Y(&]F('1H870@8V]M<&]N96YT+B!4:&5S90IT97-T('!R;V=R86US +M(&%R92!C;VUP:6QE9"!I;B!T:&4@<V%M92!W87D@=&AA="!T:&4@<F5S="!O +M9B!T:&4*;&EB87)C:&EV92!S=6ET92!I<R!C;VUP:6QE9"X@"CPO4#X*/%`^ +M5&\@<G5N('1H92!T97-T('!R;V=R86US+"!Y;W4@;F5E9"!T;R!G:79E('1H +M96T@='=O('!I96-E<R!O9@II;F9O<FUA=&EO;CH@"CPO4#X*/%5,/@H)/$Q) +M/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/E1H92!F=6QL('!A=&@@ +M=&\@=&AE(&1I<F5C=&]R>0H):&]L9&EN9R!T:&4@)G%U;W0[<F5F97)E;F-E +M(&9I;&5S)G%U;W0[(`H)/"]0/@H)/$Q)/CQ0/E1H92!F=6QL('!A=&@@=&\@ +M=&AE(&5X96-U=&%B;&4@<')O9W)A;2!B96EN9R!T97-T960@*&YO=`H)87!P +M;&EC86)L92!T;R!L:6)A<F-H:79E7W1E<W0@<VEN8V4@;&EB87)C:&EV92!I +M<R!C;VUP:6QE9"!I;G1O('1H90H)=&5S="!P<F]G<F%M*2`*"3PO4#X*/"]5 +M3#X*/%`^5&AE(')E9F5R96YC92!F:6QE<R!A<F4@82!C;VQL96-T:6]N(&]F +M(&MN;W=N(&EN<'5T<R!T:&%T(&%R92!U<V5D"FEN('1H92!T97-T('!R;V-E +M<W,N(%1H97D@87)E(&%L;"!S=&]R960@:6X@=75E;F-O9&5D(&9O<FUA="!I +M;B!F:6QE<PIW:71H(&$@)G%U;W0[+G5U)G%U;W0[(&5X=&5N<VEO;BX@5&AE +M('1E<W0@<')O9W)A;7,@;&]O:R!I;B!A(&9E=PIS=&%N9&%R9"!L;V-A=&EO +M;G,[(&EF(&YO;F4@;V8@=&AO<V4@=V]R:RP@>6]U)VQL(&YE960@=&\@<W!E +M8VEF>2!T:&4*/%14($-,05-3/2)W97-T97)N(CXM<CPO5%0^(&]P=&EO;B!W +M:71H('1H92!F=6QL('!A=&AN86UE('1O('1H90IA<'!R;W!R:6%T92!D:7)E +M8W1O<GDN(`H\+U`^"CQ0/E1H92!B<V1T87)?=&5S="!A;F0@8G-D8W!I;U]T +M97-T('!R;V=R86US(')U;B!B<V1T87(@;W(@8G-D8W!I;PIR97!E871E9&QY +M.R!T:&5Y(&YE960@=&AE(&9U;&P@<&%T:"!T;R!T:&4@87!P<F]P<FEA=&4@ +M97AE8W5T86)L92X*06QT:&]U9V@@8G-D=&%R7W1E<W0@86YD(&)S9&-P:6]? +M=&5S="!A<F4@<W!E8VEF:6-A;&QY(&EN=&5N9&5D(&9O<@IT97-T:6YG(&)S +M9'1A<B!A;F0@8G-D8W!I;RP@=&AE>2!S:&]U;&0@8F4@=7-A8FQE(&9O<B!T +M97-T:6YG(&]T:&5R"G1A<B!A;F0@8W!I;R!P<F]G<F%M<RX@26X@9F%C="P@ +M<G5N;FEN9R!T:&5S92!T97-T('!R;V=R86US(&%G86EN<W0*;W1H97(@=&%R +M(&EM<&QE;65N=&%T:6]N<R!I<R!A(&=O;V0@=V%Y('1O('9E<FEF>2!T:&%T +M('1H92!T97-T"G!R;V=R86US('1H96US96QV97,@87)E('=O<FMI;F<@8V]R +M<F5C=&QY+B`*/"]0/@H\4#Y7:&5N(')U;BP@=&AE('1E<W0@<')O9W)A;7,@ +M;W5T<'5T(&$@<')O9W)E<W,@;65S<V%G92!F;W(@96%C:`IT97-T+"!A;B!E +M<G)O<B!M97-S86=E(&9O<B!E86-H(&9A:6QE9"!A<W-E<G1I;VXL(&%N9"!A +M(&9I;F%L"G-U;6UA<GDZ(`H\+U`^"CQ04D4@0TQ!4U,](G=E<W1E<FXB/B9N +M8G-P.U)U;FYI;F<@=&5S=',@:6XZ("]T;7`O8G-D=&%R7W1E<W0N,C`P.2TP +M,BTQ-U0R,2XS,"XT,"TP,#`*)FYB<W`[4F5F97)E;F-E(&9I;&5S('=I;&P@ +M8F4@<F5A9"!F<F]M.B`F;F)S<#L@)FYB<W`[+VAO;64O=&EM+VQI8F%R8VAI +M=F4O=')U;FLO=&%R+W1E<W0*)FYB<W`[4G5N;FEN9R!T97-T<R!O;CH@+VAO +M;64O=&EM+VQI8F%R8VAI=F4O=')U;FLO8G-D=&%R"B9N8G-P.T5X97)C:7-I +M;F<Z(&)S9'1A<B`R+C8N.3`P82`M(&QI8F%R8VAI=F4@,BXV+CDP,&$*)FYB +M<W`[,#H@=&5S=%\P"B9N8G-P.S$Z('1E<W1?8F%S:6,*)FYB<W`[,CH@=&5S +M=%]C;W!Y"B9N8G-P.R!T97-T7V-O<'DN8SHQ-S$Z($%S<V5R=&EO;B!F86EL +M960Z($EN=',@;F]T(&5Q=6%L"B9N8G-P.R`F;F)S<#L@)FYB<W`[(#`],`HF +M;F)S<#L@)FYB<W`[("9N8G-P.R!L<W1A="AN86UE,B`K(#,L("9A;7`[<W0R +M*3TM,0HF;F)S<#L@=&5S=%]C;W!Y+F,Z,3<Q.B!&86EL960@,C8T('1I;65S +M"B9N8G-P.S,Z('1E<W1?9V5T9&%T90HF;F)S<#LT.B!T97-T7VAE;'`*)FYB +M<W`[("9N8G-P.R`N+BX@;6]R92!O=71P=70@;VUI='1E9"`N+BX*)FYB<W`[ +M,2!O9B`Q,R!T97-T<R!R97!O<G1E9"!F86EL=7)E<PHF;F)S<#L@5&]T86P@ +M;V8@,3`U,#DW(&%S<V5R=&EO;G,@8VAE8VME9"X*)FYB<W`[(%1O=&%L(&]F +M(#(V-"!A<W-E<G1I;VYS(&9A:6QE9"X*)FYB<W`[(%1O=&%L(&]F(#`@87-S +M97)T:6]N<R!S:VEP<&5D+CPO4%)%/CQ0/@I4:&4@:&5A9&5R(&QI;F5S(&AE +M<F4@<F5C;W)D.B`*/"]0/@H\54P^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB +M;W1T;VTZ(#!I;B(^=&AE(&1I<F5C=&]R>2!T:&%T('=I;&P@8F4@=7-E9`H) +M9F]R('-C<F%T8V@@9FEL97,@9'5R:6YG('1H92!T97-T+B!)9B!A('1E<W0@ +M9F%I;',L('1H92!S8W)A=&-H"@EF:6QE<R!W:6QL(&)E(&QE9G0@8F5H:6YD +M(&EN('1H:7,@9&ER96-T;W)Y(&9O<B!F=7)T:&5R(&1E8G5G9VEN9RX@"@D\ +M+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^5&AE(&1I +M<F5C=&]R>2!F<F]M('=H:6-H('1H90H)<F5F97)E;F-E(&9I;&5S('=I;&P@ +M8F4@<F5A9"X@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ +M(#!I;B(^1F]R(&)S9'1A<E]T97-T(&%N9"!B<V1C<&EO7W1E<W0L"@ET:&4@ +M9G5L;"!P871H('1O('1H92!E>&5C=71A8FQE(&)E:6YG(&5X97)C:7-E9"X@ +M"@D\+U`^"@D\3$D^/%`^0F%S:6,@=F5R<VEO;B!I;F9O<FUA=&EO;B!A8F]U +M="!T:&4@=&%R9V5T+B`*"3PO4#X*/"]53#X*/%`^26X@=&AI<R!C87-E+"!T +M:&4@=')A:6QE<B!I;F1I8V%T97,@=&AA="!O;F4@=&5S="!F86EL960N($%S +M('EO=0IC86X@<V5E+"!T:&5R92!W87,@82!S:6YG;&4@87-S97)T:6]N(&EN +M('1H92!C;V1E('1H870@9F%I;&5D(#(V-`IT:6UE<RX@5&AE(&9I<G-T('1I +M;64@:70@9F%I;&5D+"!I="!W87,@8F5C875S92!A;B`\5%0@0TQ!4U,](G=E +M<W1E<FXB/FQS=&%T*"D\+U14/@IC86QL(')E='5R;F5D("TQ(&EN<W1E860@ +M;V8@=&AE('IE<F\@=&AA="!W87,@97AP96-T960N(`H\+U`^"CQ(,2!#3$%3 +M4STB=V5S=&5R;B(^/$$@3D%-13TB0F%S:6-?=&5S=%]T97)M:6YO;&]G>2(^ +M/"]!/D)A<VEC('1E<W0*=&5R;6EN;VQO9WD\+T@Q/@H\4#Y%86-H('1E<W0@ +M<')O9W)A;2!C;VYS:7-T<R!O9B!A(&YU;6)E<B!O9B`F<75O=#MT97-T<R9Q +M=6]T.RX@16%C:`IT97-T(&AA<R!A(&YA;64@86YD(&ES(&EM<&QE;65N=&5D +M(&EN(&$@0R!S;W5R8V4@9FEL92!W:71H('1H92!S86UE"FYA;64@87,@=&AE +M('1E<W0N(%1E<W1S('=O<FL@8GD@<&5R9F]R;6EN9R!S;VUE('-E<FEE<R!O +M9B!O<&5R871I;VYS"F%N9"!M86MI;F<@)G%U;W0[87-S97)T:6]N<R9Q=6]T +M.R!A8F]U="!T:&4@<F5S=6QT<RX@1F]R(&5X86UP;&4L"FUA;GD@;V8@=&AE +M(&QI8F%R8VAI=F4@=&5S=',@;W!E;B!A;F0@<F5A9"!A;B!A<F-H:79E(&%N +M9"!A<W-E<G0@=&AA=`IP87)T:6-U;&%R(&]P97)A=&EO;G,@<W5C8V5E9&5D +M(&]R(&9A:6QE9"X@*%EE<RP@:70@:7,@;V9T96X*:6UP;W)T86YT('1O('9E +M<FEF>2!T:&%T(&EL;&5G86P@<F5Q=65S=',@9V5N97)A=&4@87!P<F]P<FEA +M=&4*97)R;W)S+BD@"CPO4#X*/%`^2&5R92!I<R!A('-O;65W:&%T(&5D:71E +M9"!E>&-E<G!T(&9R;VT@/%14($-,05-3/2)W97-T97)N(CYT97-T7V-O;7!A +M=%]Z:7`\+U14/BP*=VAI8V@@=F5R:69I97,@8V]M<&%T:6)I;&ET>2!W:71H +M('9A<FEO=7,@6DE0(&9O<FUA="!A<F-H:79E<SH@"CPO4#X*/%!212!#3$%3 +M4STB=V5S=&5R;B(^)FYB<W`[($1%1DE.15]415-4*'1E<W1?8V]M<&%T7WII +M<"D*)FYB<W`[('L*)FYB<W`[("9N8G-P.R`O*B`N+BX@<V5T=7`@;VUI='1E +M9"`N+BX@*B\*)FYB<W`[("9N8G-P.R!A<W-E<G0H*&$@/2!A<F-H:79E7W)E +M861?;F5W*"DI("$]($Y53$PI.PHF;F)S<#L@)FYB<W`[(&%S<V5R=$5Q=6%L +M26YT*$%20TA)5D5?3TLL"B9N8G-P.R`F;F)S<#L@)FYB<W`[("9N8G-P.R!A +M<F-H:79E7W)E861?<W5P<&]R=%]C;VUP<F5S<VEO;E]A;&PH82DI.PHF;F)S +M<#L@)FYB<W`[(&%S<V5R=$5Q=6%L26YT*$%20TA)5D5?3TLL"B9N8G-P.R`F +M;F)S<#L@)FYB<W`[("9N8G-P.R!A<F-H:79E7W)E861?<W5P<&]R=%]F;W)M +M871?86QL*&$I*3L*)FYB<W`[("9N8G-P.R!E>'1R86-T7W)E9F5R96YC95]F +M:6QE*&YA;64I.PHF;F)S<#L@)FYB<W`[(&%S<V5R=$5Q=6%L26YT*$%20TA) +M5D5?3TLL"B9N8G-P.R`F;F)S<#L@)FYB<W`[("9N8G-P.R!A<F-H:79E7W)E +M861?;W!E;E]F:6QE;F%M92AA+"!N86UE+"`Q,#(T,"DI.PHF;F)S<#L@)FYB +M<W`[("9N8G-P.R\J(%)E860@9FER<W0@96YT<GDN("HO"B9N8G-P.R`F;F)S +M<#L@)FYB<W`[87-S97)T17%U86Q);G0H05)#2$E615]/2RP@87)C:&EV95]R +M96%D7VYE>'1?:&5A9&5R*&$L("9A;7`[864I*3L*)FYB<W`[("9N8G-P.R`F +M;F)S<#MA<W-E<G1%<75A;%-T<FEN9R@F<75O=#M-151!+4E.1B]-04Y)1D53 +M5"Y-1B9Q=6]T.RP@87)C:&EV95]E;G1R>5]P871H;F%M92AA92DI.SPO4%)% +M/CQ0/@I4:&4@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G186%A8/"]45#X@ +M;6%C<F]S(&-H96-K('1H870@=&AE:7(*87)G=6UE;G1S('-A=&ES9GD@8V5R +M=&%I;B!C;VYD:71I;VYS+B!)9B!T:&4@87-S97)T:6]N(&9A:6QS+2UF;W(* +M97AA;7!L92P@:68@=&AE(&YA;64@;V8@=&AE(&9I<G-T(&5N=')Y(&ES(&YO +M=`HF<75O=#M-151!+4E.1B]-04Y)1D535"Y-1B9Q=6]T.RTM=&AE(&UA8W)O +M('=I;&P@<F5P;W)T('1H92!P<F]B;&5M+B`*/"]0/@H\4#Y4:&5R92!A<F4@ +M='=O(&EM<&]R=&%N="!D:69F97)E;F-E<R!B971W965N('1H92`\5%0@0TQ! +M4U,](G=E<W1E<FXB/F%S<V5R=%A86#PO5%0^"FUA8W)O<R!U<V5D(&EN('1H +M97-E('1E<W0@:&%R;F5S<V5S(&%N9"!T:&4@25-/($,@<W1A;F1A<F0@/%14 +M($-,05-3/2)W97-T97)N(CYA<W-E<G0\+U14/@IM86-R;SH@1FER<W0L('1H +M97-E(&%S<V5R="!M86-R;W,@9&]N)W0@97AI="!O;B!F86EL=7)E+B!">2!D +M969A=6QT+`IT:&5Y(')E<&]R="!T:&4@9F%I;'5R92!A;F0@<F5T=7)N('IE +M<F\@*'1H92!#(&YO=&EO;B!O9B`F<75O=#MF86QS929Q=6]T.RDN"E-E8V]N +M9"P@=&AE<V4@;6%C<F]S(&EN8VQU9&4@=F%R:6%N=',@=&AA="!P97)F;W)M +M(&$@=F%R:65T>2!O9@IS<&5C:69I8R!T97-T<RX@5&AE<V4@<W!E8VEF:6,@ +M=F5R<VEO;G,@*'-U8V@@87,@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1% +M<75A;$EN=#PO5%0^"F%N9"`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$5Q +M=6%L4W1R:6YG/"]45#X@:6X@=&AE(&5X86UP;&4@86)O=F4I"F=E;F5R871E +M(&1E=&%I;&5D(&QO9R!M97-S86=E<R!O;B!F86EL=7)E+B!);B!P87)T:6-U +M;&%R+"!T:&5Y('!R:6YT"G1H92!V86QU92!O9B!B;W1H(&%R9W5M96YT<SL@ +M=&AI<R!G<F5A=&QY('-I;7!L:69I97,@9&EA9VYO<VEN9PIF86EL=7)E<RX@ +M"CPO4#X*/$@Q($-,05-3/2)W97-T97)N(CX\02!.04U%/2),:69E7V-Y8VQE +M7V]F7V%?=&5S="(^/"]!/DQI9F4@8WEC;&4@;V8*82!T97-T/"](,3X*/%`^ +M16%C:"!T97-T(')E<VED97,@:6X@82!#('-O=7)C92!F:6QE('=I=&@@=&AE +M('-A;64@;F%M92!A<R!T:&4*=&5S="X@5&AE('1E<W0@:71S96QF(&ES(&$@ +M9G5N8W1I;VX@=&AA="!T86ME<R!N;R!A<F=U;65N=',N(%1H92!T97-T"FES +M(&1E8VQA<F5D('5S:6YG('1H92`\5%0@0TQ!4U,](G=E<W1E<FXB/D1%1DE. +M15]415-4*"D\+U14/B!M86-R;RX*5&AI<R!M86-R;R!S97)V97,@8F]T:"!T +M;R!E;G-U<F4@=&AA="!T:&4@=&5S="!I<R!D96-L87)E9"!C;W)R96-T;'D* +M86YD(&%S(&$@;&%B96P@=&AA="!C86X@8F4@=7-E9"!T;R!L;V-A=&4@86QL +M(&1E9FEN960@=&5S=',N("A/;@I5;FEX+6QI:V4@<&QA=&9O<FUS+"!A('-I +M;7!L92`\5%0@0TQ!4U,](G=E<W1E<FXB/F=R97`\+U14/B!O<&5R871I;VX* +M:7,@=7-E9"!T;R!C;VYS=')U8W0@82!F:6QE(&-A;&QE9"`\5%0@0TQ!4U,] +M(G=E<W1E<FXB/FQI<W0N:#PO5%0^"G1H870@:&]L9',@=&AE(&YA;65S(&]F +M(&%L;"!O9B!T:&4@=&5S=',N(%1H:7,@;6%K97,@:70@=F5R>2!E87-Y('1O +M"F%D9"!N97<@=&5S=',N*2`*/"]0/@H\4#Y4:&4@=&5S="!H87)N97-S(&1E +M=&5R;6EN97,@=VAI8V@@=&5S=',@=&\@<G5N+B!)="!G;V5S('1H<F]U9V@* +M=&AE(&9O;&QO=VEN9R!S=&5P<R!W:&5N979E<B!I="!R=6YS(&$@=&5S=#H@ +M"CPO4#X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB +M/CQ35%))2T4^0VQO<V5S(&%L;"!F:6QE"@ED97-C<FEP=&]R<R!E>&-E<'0@ +M9F]R('-T9&EN+"!S=&1O=70L(&%N9"!S=&1E<G(N/"]35%))2T4^("A4:&ES +M"@ES8W)E=W,@=7`@;&EB8R!O;B!S;VUE('!L871F;W)M<R!S;R!H87,@8F5E +M;B!R96UO=F5D+BD@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T +M;VTZ(#!I;B(^0W)E871E<R!A('1E;7!O<F%R>2!D:7)E8W1O<GD*"7=H;W-E +M(&YA;64@;6%T8VAE<R!T:&4@;F%M92!O9B!T:&4@=&5S="!A;F0@<W=I=&-H +M97,@:6YT;R!T:&%T"@ED:7)E8W1O<GDN(`H)/"]0/@H)/$Q)/CQ0(%-464Q% +M/2)M87)G:6XM8F]T=&]M.B`P:6XB/E)E<V5T<R!T:&4@8W5R<F5N="!L;V-A +M;&4N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB +M/D-A;&QS('1H92!T97-T(&9U;F-T:6]N+B`*"3PO4#X*"3Q,23X\4"!35%E, +M13TB;6%R9VEN+6)O='1O;3H@,&EN(CY)9B!T:&5R92!W97)E(&YO(&%S<V5R +M=&EO;@H)9F%I;'5R97,L(&ET('=I;&P@<F5M;W9E('1H92!T96UP;W)A<GD@ +M9&ER96-T;W)Y+B`H268@/%14($-,05-3/2)W97-T97)N(CXM:SPO5%0^"@EI +M<R!S<&5C:69I960L('1E;7!O<F%R>2!D:7)E8W1O<GD@87)E(&QE9G0@979E +M;B!I9B!T:&4@=&5S=`H)<W5C8V5E9',N*2`*"3PO4#X*"3Q,23X\4#X\4U12 +M24M%/DEF('1H97)E(&%R92!A;GD@;W!E;B!F:6QE(&1E<V-R:7!T;W)S(&]T +M:&5R('1H86X*"7-T9&EN+"!S=&1O=70L(&%N9"!S=&1E<G(L(&ET(')E<&]R +M=',@86X@97)R;W(N/"]35%))2T4^(%1E<W1S"@ES:&]U;&0@;F5V97(@;&5A +M=F4@;W!E;B!F:6QE(&1E<V-R:7!T;W)S+B`*"3PO4#X*/"]53#X*/%`^26X@ +M<&%R=&EC=6QA<BP@=&5S=',@8V%N('-A9F5L>2!A<W-U;64@=&AA=#H@"CPO +M4#X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/E1H +M92!C=7)R96YT(&1I<F5C=&]R>2!I<R!E;7!T>0H)=VAE;B!T:&4@=&5S="!S +M=&%R=',N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P +M:6XB/D%N>2!F:6QE<R!C<F5A=&5D(&EN('1H92!C=7)R96YT"@ED:7)E8W1O +M<GD@=VEL;"!B92!R96UO=F5D(&9O<B!Y;W4N(`H)/"]0/@H)/$Q)/CQ0/E1H +M92!C=7)R96YT(&QO8V%L92!I<R!T:&4@9&5F875L="`F<75O=#M#)G%U;W0[ +M(&QO8V%L92X@"@D\+U`^"CPO54P^"CQ0/E1E<W1S('-H;W5L9#H@"CPO4#X* +M/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/E)E;&5A +M<V4@86QL(&UE;6]R>2X@5&AE('1E<W0*"7-U:71E<R!A<F4@;V-C87-I;VYA +M;&QY(')U;B!U;F1E<B!A(&UE;6]R>2!D96)U9V=E<B!T;R!D971E8W0@;&5A +M:W,*"6EN('1H92!L:6)A<F-H:79E(&QI8G)A<GDN(`H)/"]0/@H)/$Q)/CQ0 +M(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D-L;W-E(&%L;"!O<&5N960@ +M9FEL97,N(%1H:7,@:&5L<',*"71O(&-A=&-H(&9I;&4@9&5S8W)I<'1O<B!L +M96%K<R!I;B!L:6)A<F-H:79E+B`*"3PO4#X*"3Q,23X\4#Y.;W0@<F5A9"!O +M<B!W<FET92!A8G-O;'5T92!P871H<RX@"@D\+U`^"CPO54P^"CQ(,2!#3$%3 +M4STB=V5S=&5R;B(^/$$@3D%-13TB4&QA=&9O<FU?=F%R:6%T:6]N(CX\+T$^ +M4&QA=&9O<FT*=F%R:6%T:6]N/"](,3X*/%`^4V]M92!T97-T<R!A<F4@<W!E +M8VEF:6,@=&\@82!P87)T:6-U;&%R('!L871F;W)M+B!3=6-H('1E<W1S"G-H +M;W5L9"!U<V4@87!P<F]P<FEA=&4@<&QA=&9O<FTM<W!E8VEF:6,@;6%C<F]S +M(&%S(&9O;&QO=W,Z(`H\+U`^"CQ04D4@0TQ!4U,](G=E<W1E<FXB/B-I9B!? +M7U!,051&3U)-"BXN+B!V87)I;W5S(&AE;'!E<B!F=6YC=&EO;G,@+BXN"B-E +M;F1I9@I$149)3D5?5$535"AF;V]?<&QA=&9O<FTI"GL*(VEF(%]?4$Q!5$9/ +M4DT*)FYB<W`[("9N8G-P.RXN+B!T97-T<R!A<R!U<W5A;"`N+BXN"B-E;'-E +M"B9N8G-P.R`F;F)S<#MS:VEP<&EN9R@F<75O=#MP;&%T9F]R;2US<&5C:69I +M8R!T97-T<R9Q=6]T.RD["B-E;F1I9@I]/"]04D4^/%`^"DEN('!A<G1I8W5L +M87(L(&YO=&4@=&AA="!A;&P@=&5S=',@87)E(&-O;7!I;&5D(&%N9"!R=6X@ +M;VX@86QL"G!L871F;W)M<RX@"CPO4#X*/%`^36]S="!T97-T<R!A<F4@;F]T +M('!L871F;W)M+7-P96-I9FEC(&%N9"!W:6QL('1H=7,@96YD('5P(')U;FYI +M;F<*;VX@;6%N>2!D:69F97)E;G0@<&QA=&9O<FUS+B!);B!O<F1E<B!T;R!S +M:6UP;&EF>2!W<FET:6YG('-U8V@@=&5S=',L"G1R>2!T;R!U<V4@<&QA=&9O +M<FTM:6YD97!E;F1E;G0@8V]D:6YG.B`*/"]0/@H\54P^"@D\3$D^/%`@4U19 +M3$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^57-E('-T9&EO(#Q45"!#3$%34STB +M=V5S=&5R;B(^9F]P96XH*3PO5%0^+`H)/%14($-,05-3/2)W97-T97)N(CYF +M=W)I=&4H*3PO5%0^+"`\5%0@0TQ!4U,](G=E<W1E<FXB/F9R96%D*"D\+U14 +M/BP*"6%N9"`\5%0@0TQ!4U,](G=E<W1E<FXB/F9C;&]S92@I/"]45#X@=&\@ +M86-C97-S(&9I;&5S('=H96YE=F5R"@EF96%S:6)L92X@"@D\+U`^"@D\3$D^ +M/%`^3&]O:R!T:')O=6=H('1H92`\5%0@0TQ!4U,](G=E<W1E<FXB/G1E<W0N +M:#PO5%0^(&AE861E<B!T;PH)<V5E(&EF('1H97)E(&%R92!A<W-E<G18>'@H +M*2!F=6YC=&EO;G,@=&AA="!Y;W4@8V%N('5S92X@5&AE<F4G<R!A"@EL:7-T +M(&]F('1H92!M;W)E('!O<'5L87(@;VYE<R!B96QO=RP@8G5T(&YE=R!O;F5S +M(&%R92!O9G1E;B!A9&1E9"X@"@D\+U`^"CPO54P^"CQ(,2!#3$%34STB=V5S +M=&5R;B(^/$$@3D%-13TB07-S97)T7VUA8W)O<R(^/"]!/D%S<V5R="!M86-R +M;W,\+T@Q/@H\4#Y4:&4@9F]L;&]W:6YG(&ES(&$@;F5C97-S87)I;'D@:6YC +M;VUP;&5T92!L:7-T(&]F(&%S<V5R="!F=6YC=&EO;G,*879A:6QA8FQE('1O +M('1E<W1S.B`*/"]0/@H\54P^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T +M;VTZ(#!I;B(^0F%S:6,@97%U86QI='DZ(#Q45"!#3$%34STB=V5S=&5R;B(^ +M87-S97)T17%U86Q);G0\+U14/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^87-S +M97)T17%U86Q3=')I;F<\+U14/BP@/%14($-,05-3/2)W97-T97)N(CYA<W-E +M<G1%<75A;$UE;3PO5%0^"@D)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM +M8F]T=&]M.B`P:6XB/D9I;&4@8W)E871I;VXZ(#Q45"!#3$%34STB=V5S=&5R +M;B(^87-S97)T36%K949I;&4\+U14/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^ +M87-S97)T36%K95-Y;6QI;FL\+U14/BP@/%14($-,05-3/2)W97-T97)N(CYA +M<W-E<G1-86ME2&%R9&QI;FL\+U14/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^ +M87-S97)T36%K941I<CPO5%0^(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G +M:6XM8F]T=&]M.B`P:6XB/D9I;&4@=&5S=',Z(#Q45"!#3$%34STB=V5S=&5R +M;B(^87-S97)T27-296<\+U14/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^87-S +M97)T27-$:7(\+U14/BP@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1)<U-Y +M;6QI;FL\+U14/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T1FEL95-I +M>F4\+U14/BP@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1&:6QE3FQI;FMS +M/"]45#XL"@D\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$9I;&5-=&EM93PO +M5%0^(`H)/"]0/@H)/$Q)/CQ0/D9I;&4@8V]N=&5N=',Z(#Q45"!#3$%34STB +M=V5S=&5R;B(^87-S97)T1FEL945M<'1Y/"]45#XL"@D\5%0@0TQ!4U,](G=E +M<W1E<FXB/F%S<V5R=$9I;&5.;VY%;7!T>3PO5%0^+"`\5%0@0TQ!4U,](G=E +E<W1E<FXB/F%S<V5R=$9I;&7TXGL/0!0`&_A4F08````````````` +` +end 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 new file mode 100644 index 0000000..e8e0ffe --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part08.rar.uu @@ -0,0 +1,299 @@ +begin 644 - +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 +M<W1E<FXB/F%S<V5R=%1E>'1&:6QE0V]N=&5N=',\+U14/B`*"3PO4#X*/"]5 +M3#X*/$@Q($-,05-3/2)W97-T97)N(CX\02!.04U%/2)2969E<F5N8V5?1FEL +M97,B/CPO03Y2969E<F5N8V4@1FEL97,\+T@Q/@H\4#Y-86YY('1E<W1S(')E +M<75I<F4@<F5A9&EN9R!A('!R92UC;VYS=')U8W1E9"!R969E<F5N8V4@9FEL +M92X@4W5C:`IF:6QE<R!A<F4@<W1O<F5D('=I=&@@=&AE('-O=7)C92!C;V1E +M(&9O<B!T:&4@87-S;V-I871E9"!T97-T('-U:71E+@I2969E<F5N8V4@9FEL +M97,@87)E(&YA;65D(&%C8V]R9&EN9R!T;R!T:&4@=&5S="!A;F0@;75S="!B +M92!U=65N8V]D960*=&\@8F4@8VAE8VME9"!I;G1O('-O=7)C92!C;VYT<F]L +M+B`*/"]0/@H\4#Y&;W(@97AA;7!L92P@:68@>6]U(&YE960@82!R969E<F5N +M8V4@=&%R(&%R8VAI=F4@=&\@=7-E('=I=&@*/%14($-,05-3/2)W97-T97)N +M(CYT97-T7V9O;SPO5%0^+"!T:&4@9FEL92!S:&]U;&0@8F4@;F%M960*/%14 +M($-,05-3/2)W97-T97)N(CYT97-T7V9O;RYT87(\+U14/B!A;F0@<W1O<F5D +M(&EN('-O=7)C92!C;VYT<F]L(&%S"CQ45"!#3$%34STB=V5S=&5R;B(^=&5S +M=%]F;V\N=&%R+G5U/"]45#XN(`H\+U`^"CQ0/E=I=&AI;B!T:&4@=&5S="!C +M;V1E+"!Y;W4@8V%N(')E8V]V97(@=&AE(')E9F5R96YC92!F:6QE('=I=&@Z +M(`H\+U`^"CQ04D4@0TQ!4U,](G=E<W1E<FXB(%-464Q%/2)M87)G:6XM8F]T +M=&]M.B`P+C)I;B(^)FYB<W`[("9N8G-P.R!E>'1R86-T7W)E9F5R96YC95]F +M:6QE*"9Q=6]T.W1E<W1?9F]O+G1A<B9Q=6]T.RD[/"]04D4^/%`^"E1H92`\ +M5%0@0TQ!4U,](G=E<W1E<FXB/F5X=')A8W1?<F5F97)E;F-E7V9I;&4H*3PO +M5%0^(&9U;F-T:6]N('=I;&P*=75D96-O9&4@=&AE(')E<75E<W1E9"!F:6QE +M(&%N9"!P=70@=&AE(')E<W5L="!I;B!T:&4@8W5R<F5N=`ID:7)E8W1O<GDN +M(`H\+U`^"CQ0/DQO;VL@870@/%14($-,05-3/2)W97-T97)N(CYT97-T7W)E +M861?9F]R;6%T7V-P:6]?8FEN7V)E+F,\+U14/@IF;W(@82!S:6UP;&4@97AA +M;7!L92!O9B!T:&ES('5S86=E+B`*/"]0/@H\4#Y!(&9E=R!O9B!T:&4@;VQD +M97(@=&5S=',@<W1O<F4@<F5F97)E;F-E(&1A=&$@=VET:&EN('1H92!S;W5R +M8V4*8V]D92!A<R!A(&AE>"UE;F-O9&5D(&%R<F%Y(&]F(&-H87)A8W1E<G,N +M(%1H:7,@=V%S(&-O;6UO;B!B969O<F4*/%14($-,05-3/2)W97-T97)N(CYE +M>'1R86-T7W)E9F5R96YC95]F:6QE*"D\+U14/B!W87,@861D960@86YD(&ES +M"FYO="!R96-O;6UE;F1E9"!F;W(@;F5W(&-O9&4N(`H\+U`^"CQ(,2!#3$%3 +M4STB=V5S=&5R;B(^/$$@3D%-13TB1&]S7V%N9%]$;VYT<R(^/"]!/D1O<R!A +M;F0@1&]N=',\+T@Q/@H\54P^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T +M;VTZ(#!I;B(^1$\@=7-E(&%S<V5R=',@;&EB97)A;&QY+B!)="=S"@EC;VUM +M;VX@=&\@:&%V92!A;B!A<W-E<G0@;VX@86QM;W-T(&5V97)Y(&QI;F4N(`H) +M/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D1/('5S +M92!A<W-E<G1%<75A;$EN="P*"6%S<V5R=$5Q=6%L4W1R:6YG+"!A<W-E<G1% +M<75A;$UE;2!T;R!T97-T(&5Q=6%L:71Y(&EN<W1E860@;V8@<&QA:6X*"6%S +M<V5R="@I.R!T:&4@<W!E8VEA;&EZ960@9F]R;7,@9VEV92!A(&QO="!M;W)E +M(&EN9F]R;6%T:6]N(&]N(&$*"69A:6QU<F4N(`H)/"]0/@H)/$Q)/CQ0(%-4 +M64Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D1/('1E<W0@>6]U<B!T97-T<SL@ +M97AP97)I;65N="!B>0H)8VAA;F=I;F<@82!P:65C92!O9B!C;V1E(&%N9"!M +M86ME('-U<F4@>6]U<B!T97-T(&9A:6QS+B!)9B!Y;W4@=&AI;FL*"7EO=2=V +M92!F;W5N9"!A(&)U9RP@=V4@<F5C;VUM96YD('=R:71I;F<@=&AE('1E<W0@ +M9FER<W0L(&UA:V4@<W5R90H)=&AE('1E<W0@9F%I;',L('1H96X@9FEX:6YG +M('1H92!B=6<N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M +M.B`P:6XB/D1/(')U;B!A;&P@;V8@=&AE('1E<W1S(&)E9F]R90H)<W5B;6ET +M=&EN9R!A(&-H86YG92X@1&5P96YD:6YG(&]N('EO=7(@8G5I;&0@96YV:7)O +M;FUE;G0L(#Q45"!#3$%34STB=V5S=&5R;B(^;6%K90H)=&5S=#PO5%0^(&]R +M(#Q45"!#3$%34STB=V5S=&5R;B(^;6%K92!C:&5C:SPO5%0^('=I;&P@=7-U +M86QL>2!R=6X*"6%L;"!O9B!T:&4@=&5S=',N(`H)/"]0/@H)/$Q)/CQ0(%-4 +M64Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D1/3B=4(')E;'D@;VX@/%14($-, +M05-3/2)W97-T97)N(CY(059%7SPO5%0^"@EM86-R;W,@9G)O;2!C;VYF:6<N +M:"X@*$EF('1H92!T97-T<R!U<V4@=&AE('-A;64@/%14($-,05-3/2)W97-T +M97)N(CY(059%7SPO5%0^"@EM86-R;W,@87,@=&AE(&-O9&4@8F5I;F<@=&5S +M=&5D('1H96X@8V]N9FEG=7)A=&EO;B!P<F]B;&5M<R!W:6QL(&)E"@EC;W9E +M<F5D('5P+BD@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ +M(#!I;B(^1$\@=7-E(')U;G1I;64@=&5S=',@9F]R('!L871F;W)M"@EF96%T +M=7)E<RX@1F]R(&5X86UP;&4L('1H92!!0TP@=&5S=',@=')Y('1O('-E="!A +M;B!!0TP@;VX@82!F:6QE(&%N9`H)<F5A9"!I="!B86-K('1O(&1E=&5R;6EN +M92!I9B!!0TP@<W5P<&]R="!I<R!A=F%I;&%B;&4L('1H96X@=&AE>0H)97AE +M<F-I<V4@=&AE(&QI8F%R8VAI=F4@04-,(&AA;F1L:6YG+B`*"3PO4#X*"3Q, +M23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY$3R!L;V]K(&%T(&5X +M:7-T:6YG('1E<W1S+B!/9G1E;BP*"6$@8G5G(&-A;B!B92!T97-T960@8GD@ +M861D:6YG(&IU<W0@82!C;W5P;&4@;V8@87-S97)T<R!T;R!A;@H)97AI<W1I +M;F<@=&5S="!I;G-T96%D(&]F('=R:71I;F<@82!N97<@;VYE+B`*"3PO4#X* +M"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY$3R!I;7!R;W9E +M(&5X:7-T:6YG('1E<W1S+B!);@H)<&%R=&EC=6QA<BP@:68@>6]U('-E92!A +M('1E<W0@9F%I;'5R92!T:&%T(&ES(&AA<F0@=&\@=6YD97)S=&%N9"P*"6-O +M;G-I9&5R(&%D9&EN9R!A(&9A:6QU<F4H*2!M97-S86=E(&]R(&-O;6UE;G1S +M('-O('1H92!N97AT('!E<G-O;@H)=VEL;"!H879E(&%N(&5A<VEE<B!T:6UE +M+B`*"3PO4#X*"3Q,23X\4#Y$3R!A<VL@;VX@=&AE(&UA:6QI;F<@;&ES=',@ +M:68@>6]U(&AA=F4@<75E<W1I;VYS+B!3;VUE('1E<W1S"@EA<F4@8F5T=&5R +M('=R:71T96X@=&AA;B!O=&AE<G,N(`H)/"]0/@H\+U5,/@H\2#$@0TQ!4U,] +M(G=E<W1E<FXB/CQ!($Y!344](E-O;65?97AA;7!L97-?;V9?=&5S=',B/CPO +M03Y3;VUE"F5X86UP;&5S(&]F('1E<W1S/"](,3X*/$@R($-,05-3/2)W97-T +M97)N(CX\02!.04U%/2),:6)A<F-H:79E7W)E861?=&5S=',B/CPO03Y,:6)A +M<F-H:79E"G)E860@=&5S=',\+T@R/@H\4#Y4:&5R92!A<F4@<75I=&4@82!F +M97<@<F5A9"!T97-T<R!T:&%T('-I;7!L>2!R96%D(&$@<')E+6)U:6QT"FEN +M<'5T(&9I;&4@86YD('9E<FEF>2!T:&4@<F5S=6QT<RX@5&AE<V4@=7-E(#Q4 +M5"!#3$%34STB=V5S=&5R;B(^97AT<F%C=%]R969E<F5N8V5?9FEL92@I/"]4 +M5#X*=&\@9&5C;V1E(&$@=75E;F-O9&5D(&EN<'5T(&9I;&4L('1H96X@;W!E +M;B!T:&%T(&9I;&4@=VET:"!L:6)A<F-H:79E"F%N9"!V97)I9GD@=&AE(')E +M<W5L=',N($UO<W0@;V8@=&AE<V4@87)E('!R971T>2!S=')A:6=H=&9O<G=A +M<F0N(`H\+U`^"CQ(,B!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB3&EB87)C +M:&EV95]R96%D+W=R:71E7W1E<W1S(CX\+T$^3&EB87)C:&EV90IR96%D+W=R +M:71E('1E<W1S/"](,CX*/%`^36]S="!O9B!T:&4@=W)I=&4@=&5S=',@<F5A +M;&QY(&IU<W0@=F5R:69Y('1H870@;&EB87)C:&EV92!C86X*<F5A9"!W:&%T +M(&ET('=R:71E<RX@5&AE<V4@9V5N97)A;&QY('5S92!T:&4@;65M;W)Y(&EN +M=&5R9F%C97,N(%1H97D*9F5E9"!A<F-H:79E(&5N=')I97,@:6YT;R!T:&4@ +M=W)I=&5R('1O(&-R96%T92!A;B!A<F-H:79E(&EN(&UE;6]R>0IA;F0@=&AE +M;B!O<&5N('1H92!M96UO<GD@86=A:6X@=&\@<F5A9"!T:&4@9&%T82!B86-K +M(&%N9"!V97)I9GD@=&AA=`II="!I<R!T:&4@<V%M92X@"CPO4#X*/$@R($-, +M05-3/2)W97-T97)N(CX\02!.04U%/2),:6)A<F-H:79E7W=R:71E7W9A;&ED +M871O<G,B/CPO03Y,:6)A<F-H:79E"G=R:71E('9A;&ED871O<G,\+T@R/@H\ +M4#Y!(&9E=R!W<FET92!T97-T<R!W<FET92!A;B!A<F-H:79E(&EN=&\@;65M +M;W)Y(&%N9"!T:&5N(&EN<W!E8W0*=&AE(&%C='5A;"!B>71E<R!T;R!V97)I +M9GD@=&AA="!T:&4@87)C:&EV92!W87,@8W)E871E9"!C;W)R96-T;'DN"E1H +M97-E('1E<W1S(&%R92!N:6-E('1O(&AA=F4@8G5T(&%R92!T961I;W5S('1O +M(&)U:6QD+B`*/"]0/@H\4#Y4:&5R92!A<F4@86QS;R!A(&-O=7!L92!O9B!S +M=6-H('9A;&ED871O<G,@9F]R(&)S9'1A<B!A;F0@8G-D8W!I;RX*5&AE<V4@ +M87)E('9E<GD@=')I8VMY('-I;F-E('1H92!E>&%C="!D871A(&-O;G1A:6YS +M('9A;'5E<R!T:&%T('1H90IT97-T(&-A;FYO="!C;VUP;&5T96QY(&-O;G1R +M;VP@*'-U8V@@87,@=&AE(&-U<G)E;G0@=&EM92!O<@IU<V5R;F%M92DN(`H\ +M+U`^"CQ(,B!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB1&ES:U]T97-T<R(^ +M/"]!/D1I<VL@=&5S=',\+T@R/@H\4#Y,:6)A<F-H:79E)W,@9&ES:R!)+T\@ +M05!)<RP@87,@=V5L;"!A<R!B<V1T87(@86YD(&)S9&-P:6\L(&YE960@=&\* +M;W!E<F%T92!B>2!V97)I9GEI;F<@9FEL97,@;VX@9&ES:RX@5&\@;6%K92!T +M:&ES(&5A<VEE<BP@=&AE('1E<W0*9G)A;65W;W)K(&YO=R!H87,@82!L87)G +M92!N=6UB97(@;V8@87-S97)T:6]N<R!T;R!V97)I9GD@=&EM97-T86UP<RP* +M<&5R;6ES<VEO;G,L(&%N9"!O=&AE<B!B87-I8R!F:6QE(&1A=&$N(%1H97-E +M(&%S<V5R=&EO;G,@=7-E"F%P<')O<')I871E('-Y<W1E;2!C86QL<R!F;W(@ +M96%C:"!P;&%T9F]R;3L@;F5W('1E<W1S('-H;W5L9"!T<GD@=&\*879O:60@ +M=7-I;F<@/%14($-,05-3/2)W97-T97)N(CYS=&%T*"D\+U14/BP@=VAI8V@@ +M:7,@;F]T('5N:69O<FUL>0IA=F%I;&%B;&4N(`H\+U`^"CQ(,B!#3$%34STB +M=V5S=&5R;B(^/$$@3D%-13TB1G5Z>E]T97-T97(B/CPO03Y&=7IZ('1E<W1E +M<CPO2#(^"CQ0/E1H92!F=7IZ('1E<W1E<B!I<R!O;F4@;V8@=&AE(&9E=R!T +M97-T<R!T:&%T(&1O97,@;F]T(&%G9W)E<W-I=F5L>0IU<V4@87-S97)T:6]N +M<RX@271S('!U<G!O<V4@:7,@=&\@=')Y(&%N9"!C<F%S:"!L:6)A<F-H:79E +M(&)Y(&9E961I;F<*:70@:6YP=70@=&AA="!I<R!S;&EG:'1L>2!D86UA9V5D +M+B`H4F5M96UB97(@=&AA="!L:6)A<F-H:79E(&1O97,*:&%V92!S;VUE(&9A +M:6QS869E(&-O9&4@=&AA="!D96QI8F5R871E;'D@86)O<G1S('1H92!E;G1I +M<F4@<')O9W)A;0II9B!C97)T86EN(&EN=F%R:6%N=',@87)E('9I;VQA=&5D +M+BD@"CPO4#X*/%`^4VEN8V4@82!F=7IZ(&9A:6QU<F4@8V%U<V5S(&$@8W)A +M<V@L(&ET)W,@:6UP;W-S:6)L92!T;R!R97!O<G0@=&AE"F5R<F]R('1O('1H +M92!C;VYS;VQE+"!S;R!T:&4@9G5Z>B!T97-T97(@:6YS=&5A9"!G96YE<F%T +M97,@80IR86YD;VUL>2UD86UA9V5D(&9I;&4L('-A=F5S('1H870@9FEL92!T +M;R!D:7-K+"!T:&5N(')U;G,@=&AE(&9I;&4*=&AR;W5G:"!L:6)A<F-H:79E +M('1O('1R>2!T;R!P<F]V;VME(&$@8W)A<V@N($EF(&QI8F%R8VAI=F4@8W)A +M<VAE<PIT:&4@96YT:7)E('1E<W1E<BP@=&AE(&EN<'5T('1H870@8V%U<V5D +M('1H92!C<F%S:"!W:6QL(&)E(&%V86EL86)L90IO;B!D:7-K(&9O<B!F=7)T +M:&5R(&%N86QY<VES+B`*/"]0/@H\4#Y!;'1H;W5G:"!I="!I<R!U;G5S=6%L +M(&9O<B!A('1E<W0@<')O9W)A;2!T;R!U<V4@<F%N9&]M(&EN<'5T+"!T:&4* +M9G5Z>B!T97-T97(@:&%S('!R;W9E;B!Q=6ET92!U<V5F=6P@870@=6YC;W9E +M<FEN9R!P;V]R(&5R<F]R"FAA;F1L:6YG+B!5;F9O<G1U;F%T96QY+"!T:&4@ +M;F5E9"!T;R!W<FET92!T:&4@9&%T82!T;R!D:7-K(&)E9F]R90IE86-H('1E +M<W0@:7,@82!S:6=N:69I8V%N="!P97)F;W)M86YC92!I<W-U92X@"CPO4#X* +M/$@R($-,05-3/2)W97-T97)N(CX\02!.04U%/2),87)G95]T87)?=&5S=&5R +M(CX\+T$^3&%R9V4@=&%R('1E<W1E<CPO2#(^"CQ0/E1H92!L87)G92!T87(@ +M=&5S=&5R(&%T=&5M<'1S('1O(&5X97)C:7-E(&)O=6YD87)Y(&-A<V5S('=I +M=&@@=F5R>0IL87)G92!E;G1R:65S+"!U<"!T;R`Q('1E<F%B>71E+B!/9B!C +M;W5R<V4L('=R:71I;F<@82`Q('1E<F%B>71E"F5N=')Y('1O(&%N('5N8V]M +M<')E<W-E9"!A<F-H:79E(&]N(&1I<VL@;W(@;65M;W)Y(&ES('5N86-C97!T +M86)L92P*8F]T:"!F;W(@<&5R9F]R;6%N8V4@86YD('-P86-E(')E87-O;G,N +M($5V96X@9WII<"!O<B!B>FEP,@IC;VUP<F5S<VEO;B!W;VXG="!H96QP.R!A +M;'1H;W5G:"!S;6%L;&5R+"!T:&4@;W5T<'5T(&ES('-T:6QL(&QA<F=E"F%N +M9"!T:&4@=&EM92!N965D960@=&\@8V]M<')E<W,@<W5C:"!A(&QA<F=E(&%M +M;W5N="!O9B!D871A(&ES"G!R;VAI8FET:79E+B!3;R!T:&4@;&%R9V4@=&%R +M('1E<W1E<B!U<V5S(&$@=')I8VLN(`H\+U`^"CQ0/E)E;65M8F5R('1H870@ +M86X@=6YC;VUP<F5S<V5D('1A<B!A<F-H:79E(&-O;G-I<W1S(&]F(&%L=&5R +M;F%T:6YG"FAE861E<G,@86YD(&)O9&EE<RX@268@=&AE(&)O9&EE<R!C;VYS +M:7-T(&5N=&ER96QY(&]F('IE<F\@8GET97,L"G1H96X@86QL('1H870G<R!N +M965D960@=&\@<F5C;VYS=')U8W0@=&AE(&%R8VAI=F4@:7,@=&\@<F5C;W)D +M('1H90IR96QA=&EV96QY('-M86QL(&AE861E<G,@86YD('-T;W)E(&$@8V]U +M;G0@;V8@96%C:"!C;VYT:6=U;W5S(&)L;V-K"F]F('IE<F]S+B!4:&ES('-I +M;7!L92`F<75O=#MR=6XM;&5N9W1H(&5N8V]D:6YG)G%U;W0[(&ES('9E<GD* +M969F96-T:79E+"!C;VUP<F5S<VEN9R!A('-A;7!L92!A<F-H:79E('=I=&@@ +M82!D;WIE;B!E;G1R:65S(&1O=VX@=&\*:G5S="!A(&9E=R!K:6QO8GET97,L +M(&5V96X@:68@=&AO<V4@96YT<FEE<R!R86YG92!U<"!T;R`Q5$(N(`H\+U`^ +M"CQ0/D)Y('=R:71I;F<@82!C=7-T;VT@22]/(&QA>65R('1H870@:6UP;&5M +M96YT<R!S=6-H(&-O;7!R97-S:6]N+"!W90IC86X@=W)I=&4@=F5R>2!L87)G +M92!E;G1R:65S('1H<F]U9V@@;&EB87)C:&EV92!T:&5N(')E860@=&AE;2!B +M86-K"F%N9"!V97)I9GD@=&AA="!L:6)A<F-H:79E(&-O<G)E8W1L>2!H86YD +M;&5S(&%L;"!O9B!T:&4@8F]U;F1A<GD*8V%S97,N(`H\+U`^"CQ0/D]F(&-O +M=7)S92P@979E;B!S8V%N;FEN9R!O=71P=70@=&\@9&5T97)M:6YE('IE<F\@ +M8FQO8VMS(&-A;B!T86ME"G%U:71E(&$@=VAI;&4L('-O('1H92!L87)G92!T +M87(@=&5S=&5R(&UA:V5S(&]N92!M;W)E(&]P=&EM:7IA=&EO;CH*3&EB87)C +M:&EV92!I<R`F<75O=#MM;W-T;'DF<75O=#L@>F5R;RUC;W!Y+B!7:&5N('EO +M=2!G:79E(&ET(&$@;&%R9V4*8FQO8VL@=&\@=W)I=&4@=&\@86X@96YT<GD@ +M8F]D>2P@:70@=VEL;"!P87-S('!O:6YT97)S('-T<F%I9VAT"G1H<F]U9V@@ +M=&\@=&AE(&]U='!U="!R;W5T:6YE+"!E>&-E<'0@:6X@=&AO<V4@8V%S97,@ +M=VAE<F4@:70@;75S=`IC;W!Y(&1A=&$@=&\@8V]R<F5C=&QY(&)U:6QD(&)L +M;V-K<RX@5&AE(&QA<F=E('1A<B!T97-T97(@=&%K97,*861V86YT86=E(&]F +M('1H:7,@=&\@<75I8VML>2!D971E8W0@=VAE;B!A(&)L;V-K(&)E:6YG('=R +M:71T96X@;W5T(&)Y"G1H92!A<F-H:79E('=R:71E<B!I<R!T:&4@<V%M92!A +M<R!S;VUE(&]F('1H92!D871A('1H870@=V%S(&=I=F5N(&)Y"G1H92!T97-T +M(&%S('1H92!E;G1R>2!B;V1Y+"!A;F0@<VEM:6QA<FQY('=H96X@<F5A9&EN +M9R!T:&4@87)C:&EV90IB86-K+B`*/"]0/@H\4#Y486ME;B!T;V=E=&AE<BP@ +M=&AE<V4@=')I8VMS(&%L;&]W('1H92!L87)G92!T87(@=W)I=&5R('1O('1E +M<W0*9F]R(&ES<W5E<R!S=6-H(&%S('!R;W!E<B!S=&]R86=E(&]F('9E<GD@ +M;&%R9V4@9FEL92!S:7IE<R`H=&%R(&9I;&5S"G-U<'!O<G0@<V5V97)A;"!D +M:69F97)E;G0@=V%Y<R!T;R!S=&]R92!F:6QE('-I>F5S('=H:6-H('1R861E +M(&]F9@IP;W)T86)I;&ET>2!V97)S=7,@<F%N9V4[(&QI8F%R8VAI=F4@=')I +M97,@=&\@=7-E('1H92!M;W-T('!O<G1A8FQE"F]N92!I="!C86X@9F]R(&5A +M8V@@96YT<GDI(&%N9"!I;G1E9V5R(&]V97)F;&]W("A7:6YD;W=S(#,R+6)I +M="`\5%0@0TQ!4U,](G=E<W1E<FXB/F]F9E]T/"]45#X*8G)O:V4@=&AE(&QA +M<F=E('1A<B!T97-T(&%N9"!L960@;&EB87)C:&EV92!T;R!M86ME(&AE879I +M97(@=7-E(&]F"CQ45"!#3$%34STB=V5S=&5R;B(^:6YT-C1?=#PO5%0^(&EN +M=&5R;F%L;'DI(&EN(&$@=&5S="!T:&%T(')U;G,@:6X*=6YD97(@,2\T('-E +M8V]N9"X@"CPO4#X*/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^/$)2 +M/@H\+U`^"CPO0D]$63X*/"](5$U,/AS`="*00P``$@``CTX```,^!`4'\V,A +M0!0P&0"D@0``3&EB87)C:&EV94%D9&EN9U1E<W0N:'1M;,#,"5\[0C)?.T(\ +M(41/0U194$4@2%1-3"!054),24,@(BTO+U<S0R\O1%1$($A434P@-"XP(%1R +M86YS:71I;VYA;"\O14XB/@H\2%1-3#X*/$A%040^"@D\345402!(5%10+451 +M54E6/2)#3TY414Y4+5194$4B($-/3E1%3E0](G1E>'0O:'1M;#L@8VAA<G-E +M=#UU=&8M."(^"@D\5$E43$4^/"]4251,13X*"3Q-151!($Y!344](D=%3D52 +M051/4B(@0T].5$5.5#TB3&EB<F5/9F9I8V4@,RXS("`H56YI>"DB/@H)/$U% +M5$$@3D%-13TB0U)%051%1"(@0T].5$5.5#TB,C`Q,3`V,C8[,C(R,S4Q,#`B +M/@H)/$U%5$$@3D%-13TB0TA!3D=%1"(@0T].5$5.5#TB,C`Q,3`V,C8[,C(R +M-30U,#`B/@H)/%-464Q%(%194$4](G1E>'0O8W-S(CX*"3PA+2T*"0E`<&%G +M92![(&UA<F=I;CH@,"XW.6EN('T*"0E0('L@;6%R9VEN+6)O='1O;3H@,"XP +M.&EN('T*"0E(,2![(&UA<F=I;BUB;W1T;VTZ(#`N,#AI;B!]"@D)2#$N=V5S +M=&5R;B![(&9O;G0M9F%M:6QY.B`B3&EB97)A=&EO;B!397)I9B(L('-E<FEF +M('T*"0E(,2YC:FL@>R!F;VYT+69A;6EL>3H@(D)I='-T<F5A;2!697)A(%-A +M;G,B('T*"0E(,2YC=&P@>R!F;VYT+69A;6EL>3H@(D9R965386YS(B!]"@D) +M4%)%+F-J:R![(&9O;G0M9F%M:6QY.B`B0FET<W1R96%M(%9E<F$@4V%N<R(L +M(&UO;F]S<&%C92!]"@D)2#(@>R!M87)G:6XM8F]T=&]M.B`P+C`X:6X@?0H) +M"4@R+F-T;"![(&9O;G0M9F%M:6QY.B`B1G)E95-A;G,B('T*"0E45"YC:FL@ +M>R!F;VYT+69A;6EL>3H@(D)I='-T<F5A;2!697)A(%-A;G,B+"!M;VYO<W!A +M8V4@?0H)+2T^"@D\+U-464Q%/@H\+TA%040^"CQ"3T19($Q!3D<](F5N+553 +M(B!$25(](DQ44B(^"CQ(,2!#3$%34STB=V5S=&5R;B(^26YT<F]D=6-T:6]N +M/"](,3X*/%`^3&EB87)C:&EV92!I<R!N;W<@82!F86ER;'D@8V]M<&QE>"!P +M:65C92!O9B!S;V9T=V%R92!T:&%T(')U;G,@;VX*82!N=6UB97(@;V8@9&EF +M9F5R96YT('!L871F;W)M<RX@02!T:&]R;W5G:"!T97-T('-U:71E(&ES(&5S +M<V5N=&EA;`IB;W1H(&9O<B!V97)I9GEI;F<@;F5W('!O<G1S(&%N9"!F;W(@ +M96YS=7)I;F<@=&AA="!F=71U<F4@8VAA;F=E<PID;VXG="!B<F5A:R!E>&ES +M=&EN9R!F=6YC=&EO;F%L:71Y+B`*/"]0/@H\4#Y!;GD@<VEG;FEF:6-A;G0@ +M8VAA;F=E('1O(&QI8F%R8VAI=F4L(&EN8VQU9&EN9R!M;W-T(&)U9R!F:7AE +M<RP*<VAO=6QD(&)E(&%C8V]M<&%N:65D(&)Y(&YE=R!T97-T<R!O<B!C:&%N +M9V5S('1O(&5X:7-T:6YG('1E<W1S+B!4:&ES"F%R=&EC;&4@97AP;&%I;G,@ +M:&]W('1H92!L:6)A<F-H:79E('1E<W0@<W5I=&5S('=O<FL@86YD(&AO=R!T +M;PIE>'1E;F0@=&AE;2X@"CPO4#X*/$@Q($-,05-3/2)W97-T97)N(CX\02!. +M04U%/2)"=6EL9&EN9U]A;F1?4G5N;FEN9U]T:&5?5&5S=%]0<F]G<F%M<R(^ +M/"]!/@I"=6EL9&EN9R!A;F0@4G5N;FEN9R!T:&4@5&5S="!0<F]G<F%M<SPO +M2#$^"CQ0/D5A8V@@;6%J;W(@8V]M<&]N96YT+2UL:6)A<F-H:79E+"!B<V1T +M87(L(&%N9"!B<V1C<&EO+2UH87,@82!T97-T"G!R;V=R86T@=&AA="!E>&5R +M8VES97,@=&AE(&9U;F-T:6]N86QI='D@;V8@=&AA="!C;VUP;VYE;G0N(%1H +M97-E"G1E<W0@<')O9W)A;7,@87)E(&-O;7!I;&5D(&EN('1H92!S86UE('=A +M>2!T:&%T('1H92!R97-T(&]F('1H90IL:6)A<F-H:79E('-U:71E(&ES(&-O +M;7!I;&5D+B`*/"]0/@H\4#Y4;R!R=6X@=&AE('1E<W0@<')O9W)A;7,L('EO +M=2!N965D('1O(&=I=F4@=&AE;2!T=V\@<&EE8V5S(&]F"FEN9F]R;6%T:6]N +M.B`*/"]0/@H\54P^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I +M;B(^5&AE(&9U;&P@<&%T:"!T;R!T:&4@9&ER96-T;W)Y"@EH;VQD:6YG('1H +M92`F<75O=#MR969E<F5N8V4@9FEL97,F<75O=#L@"@D\+U`^"@D\3$D^/%`^ +M5&AE(&9U;&P@<&%T:"!T;R!T:&4@97AE8W5T86)L92!P<F]G<F%M(&)E:6YG +M('1E<W1E9"`H;F]T"@EA<'!L:6-A8FQE('1O(&QI8F%R8VAI=F5?=&5S="!S +M:6YC92!L:6)A<F-H:79E(&ES(&-O;7!I;&5D(&EN=&\@=&AE"@ET97-T('!R +M;V=R86TI(`H)/"]0/@H\+U5,/@H\4#Y4:&4@<F5F97)E;F-E(&9I;&5S(&%R +M92!A(&-O;&QE8W1I;VX@;V8@:VYO=VX@:6YP=71S('1H870@87)E('5S960* +M:6X@=&AE('1E<W0@<')O8V5S<RX@5&AE>2!A<F4@86QL('-T;W)E9"!I;B!U +M=65N8V]D960@9F]R;6%T(&EN(&9I;&5S"G=I=&@@82`F<75O=#LN=74F<75O +M=#L@97AT96YS:6]N+B!4:&4@=&5S="!P<F]G<F%M<R!L;V]K(&EN(&$@9F5W +M"G-T86YD87)D(&QO8V%T:6]N<SL@:68@;F]N92!O9B!T:&]S92!W;W)K+"!Y +M;W4G;&P@;F5E9"!T;R!S<&5C:69Y('1H90H\5%0@0TQ!4U,](G=E<W1E<FXB +M/BUR/"]45#X@;W!T:6]N('=I=&@@=&AE(&9U;&P@<&%T:&YA;64@=&\@=&AE +M"F%P<')O<')I871E(&1I<F5C=&]R>2X@"CPO4#X*/%`^5&AE(&)S9'1A<E]T +M97-T(&%N9"!B<V1C<&EO7W1E<W0@<')O9W)A;7,@<G5N(&)S9'1A<B!O<B!B +M<V1C<&EO"G)E<&5A=&5D;'D[('1H97D@;F5E9"!T:&4@9G5L;"!P871H('1O +M('1H92!A<'!R;W!R:6%T92!E>&5C=71A8FQE+@I!;'1H;W5G:"!B<V1T87)? +M=&5S="!A;F0@8G-D8W!I;U]T97-T(&%R92!S<&5C:69I8V%L;'D@:6YT96YD +M960@9F]R"G1E<W1I;F<@8G-D=&%R(&%N9"!B<V1C<&EO+"!T:&5Y('-H;W5L +M9"!B92!U<V%B;&4@9F]R('1E<W1I;F<@;W1H97(*=&%R(&%N9"!C<&EO('!R +M;V=R86US+B!);B!F86-T+"!R=6YN:6YG('1H97-E('1E<W0@<')O9W)A;7,@ +M86=A:6YS=`IO=&AE<B!T87(@:6UP;&5M96YT871I;VYS(&ES(&$@9V]O9"!W +M87D@=&\@=F5R:69Y('1H870@=&AE('1E<W0*<')O9W)A;7,@=&AE;7-E;'9E +M<R!A<F4@=V]R:VEN9R!C;W)R96-T;'DN(`H\+U`^"CQ0/E=H96X@<G5N+"!T +M:&4@=&5S="!P<F]G<F%M<R!O=71P=70@82!P<F]G<F5S<R!M97-S86=E(&9O +M<B!E86-H"G1E<W0L(&%N(&5R<F]R(&UE<W-A9V4@9F]R(&5A8V@@9F%I;&5D +M(&%S<V5R=&EO;BP@86YD(&$@9FEN86P*<W5M;6%R>3H@"CPO4#X*/%!212!# +M3$%34STB=V5S=&5R;B(^)FYB<W`[4G5N;FEN9R!T97-T<R!I;CH@+W1M<"]B +M<V1T87)?=&5S="XR,#`Y+3`R+3$W5#(Q+C,P+C0P+3`P,`HF;F)S<#M2969E +M<F5N8V4@9FEL97,@=VEL;"!B92!R96%D(&9R;VTZ("9N8G-P.R`F;F)S<#LO +M:&]M92]T:6TO;&EB87)C:&EV92]T<G5N:R]T87(O=&5S=`HF;F)S<#M2=6YN +M:6YG('1E<W1S(&]N.B`O:&]M92]T:6TO;&EB87)C:&EV92]T<G5N:R]B<V1T +M87(*)FYB<W`[17AE<F-I<VEN9SH@8G-D=&%R(#(N-BXY,#!A("T@;&EB87)C +M:&EV92`R+C8N.3`P80HF;F)S<#LP.B!T97-T7S`*)FYB<W`[,3H@=&5S=%]B +M87-I8PHF;F)S<#LR.B!T97-T7V-O<'D*)FYB<W`[('1E<W1?8V]P>2YC.C$W +M,3H@07-S97)T:6]N(&9A:6QE9#H@26YT<R!N;W0@97%U86P*)FYB<W`[("9N +M8G-P.R`F;F)S<#L@,#TP"B9N8G-P.R`F;F)S<#L@)FYB<W`[(&QS=&%T*&YA +M;64R("L@,RP@)F%M<#MS=#(I/2TQ"B9N8G-P.R!T97-T7V-O<'DN8SHQ-S$Z +M($9A:6QE9"`R-C0@=&EM97,*)FYB<W`[,SH@=&5S=%]G971D871E"B9N8G-P +M.S0Z('1E<W1?:&5L<`HF;F)S<#L@)FYB<W`[("XN+B!M;W)E(&]U='!U="!O +M;6ET=&5D("XN+@HF;F)S<#LQ(&]F(#$S('1E<W1S(')E<&]R=&5D(&9A:6QU +M<F5S"B9N8G-P.R!4;W1A;"!O9B`Q,#4P.3<@87-S97)T:6]N<R!C:&5C:V5D +M+@HF;F)S<#L@5&]T86P@;V8@,C8T(&%S<V5R=&EO;G,@9F%I;&5D+@HF;F)S +M<#L@5&]T86P@;V8@,"!A<W-E<G1I;VYS('-K:7!P960N/"]04D4^/%`^"E1H +M92!H96%D97(@;&EN97,@:&5R92!R96-O<F0Z(`H\+U`^"CQ53#X*"3Q,23X\ +M4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CYT:&4@9&ER96-T;W)Y('1H +M870@=VEL;"!B92!U<V5D"@EF;W(@<V-R871C:"!F:6QE<R!D=7)I;F<@=&AE +M('1E<W0N($EF(&$@=&5S="!F86EL<RP@=&AE('-C<F%T8V@*"69I;&5S('=I +M;&P@8F4@;&5F="!B96AI;F0@:6X@=&AI<R!D:7)E8W1O<GD@9F]R(&9U<G1H +M97(@9&5B=6=G:6YG+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O +M='1O;3H@,&EN(CY4:&4@9&ER96-T;W)Y(&9R;VT@=VAI8V@@=&AE"@ER969E +M<F5N8V4@9FEL97,@=VEL;"!B92!R96%D+B`*"3PO4#X*"3Q,23X\4"!35%E, +M13TB;6%R9VEN+6)O='1O;3H@,&EN(CY&;W(@8G-D=&%R7W1E<W0@86YD(&)S +M9&-P:6]?=&5S="P*"71H92!F=6QL('!A=&@@=&\@=&AE(&5X96-U=&%B;&4@ +M8F5I;F<@97AE<F-I<V5D+B`*"3PO4#X*"3Q,23X\4#Y"87-I8R!V97)S:6]N +M(&EN9F]R;6%T:6]N(&%B;W5T('1H92!T87)G970N(`H)/"]0/@H\+U5,/@H\ +M4#Y);B!T:&ES(&-A<V4L('1H92!T<F%I;&5R(&EN9&EC871E<R!T:&%T(&]N +M92!T97-T(&9A:6QE9"X@07,@>6]U"F-A;B!S964L('1H97)E('=A<R!A('-I +M;F=L92!A<W-E<G1I;VX@:6X@=&AE(&-O9&4@=&AA="!F86EL960@,C8T"G1I +M;65S+B!4:&4@9FER<W0@=&EM92!I="!F86EL960L(&ET('=A<R!B96-A=7-E +M(&%N(#Q45"!#3$%34STB=V5S=&5R;B(^;'-T870H*3PO5%0^"F-A;&P@<F5T +M=7)N960@+3$@:6YS=&5A9"!O9B!T:&4@>F5R;R!T:&%T('=A<R!E>'!E8W1E +E9"X@"CPO4#X*/$@Q($-,05.HQWL/0!0`.^^E?`<````````````` +` +end 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 new file mode 100644 index 0000000..bdcdc99 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part09.rar.uu @@ -0,0 +1,299 @@ +begin 644 - +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(^/"]! +M/D)A<VEC('1E<W0*=&5R;6EN;VQO9WD\+T@Q/@H\4#Y%86-H('1E<W0@<')O +M9W)A;2!C;VYS:7-T<R!O9B!A(&YU;6)E<B!O9B`F<75O=#MT97-T<R9Q=6]T +M.RX@16%C:`IT97-T(&AA<R!A(&YA;64@86YD(&ES(&EM<&QE;65N=&5D(&EN +M(&$@0R!S;W5R8V4@9FEL92!W:71H('1H92!S86UE"FYA;64@87,@=&AE('1E +M<W0N(%1E<W1S('=O<FL@8GD@<&5R9F]R;6EN9R!S;VUE('-E<FEE<R!O9B!O +M<&5R871I;VYS"F%N9"!M86MI;F<@)G%U;W0[87-S97)T:6]N<R9Q=6]T.R!A +M8F]U="!T:&4@<F5S=6QT<RX@1F]R(&5X86UP;&4L"FUA;GD@;V8@=&AE(&QI +M8F%R8VAI=F4@=&5S=',@;W!E;B!A;F0@<F5A9"!A;B!A<F-H:79E(&%N9"!A +M<W-E<G0@=&AA=`IP87)T:6-U;&%R(&]P97)A=&EO;G,@<W5C8V5E9&5D(&]R +M(&9A:6QE9"X@*%EE<RP@:70@:7,@;V9T96X*:6UP;W)T86YT('1O('9E<FEF +M>2!T:&%T(&EL;&5G86P@<F5Q=65S=',@9V5N97)A=&4@87!P<F]P<FEA=&4* +M97)R;W)S+BD@"CPO4#X*/%`^2&5R92!I<R!A('-O;65W:&%T(&5D:71E9"!E +M>&-E<G!T(&9R;VT@/%14($-,05-3/2)W97-T97)N(CYT97-T7V-O;7!A=%]Z +M:7`\+U14/BP*=VAI8V@@=F5R:69I97,@8V]M<&%T:6)I;&ET>2!W:71H('9A +M<FEO=7,@6DE0(&9O<FUA="!A<F-H:79E<SH@"CPO4#X*/%!212!#3$%34STB +M=V5S=&5R;B(^)FYB<W`[($1%1DE.15]415-4*'1E<W1?8V]M<&%T7WII<"D* +M)FYB<W`[('L*)FYB<W`[("9N8G-P.R`O*B`N+BX@<V5T=7`@;VUI='1E9"`N +M+BX@*B\*)FYB<W`[("9N8G-P.R!A<W-E<G0H*&$@/2!A<F-H:79E7W)E861? +M;F5W*"DI("$]($Y53$PI.PHF;F)S<#L@)FYB<W`[(&%S<V5R=$5Q=6%L26YT +M*$%20TA)5D5?3TLL"B9N8G-P.R`F;F)S<#L@)FYB<W`[("9N8G-P.R!A<F-H +M:79E7W)E861?<W5P<&]R=%]C;VUP<F5S<VEO;E]A;&PH82DI.PHF;F)S<#L@ +M)FYB<W`[(&%S<V5R=$5Q=6%L26YT*$%20TA)5D5?3TLL"B9N8G-P.R`F;F)S +M<#L@)FYB<W`[("9N8G-P.R!A<F-H:79E7W)E861?<W5P<&]R=%]F;W)M871? +M86QL*&$I*3L*)FYB<W`[("9N8G-P.R!E>'1R86-T7W)E9F5R96YC95]F:6QE +M*&YA;64I.PHF;F)S<#L@)FYB<W`[(&%S<V5R=$5Q=6%L26YT*$%20TA)5D5? +M3TLL"B9N8G-P.R`F;F)S<#L@)FYB<W`[("9N8G-P.R!A<F-H:79E7W)E861? +M;W!E;E]F:6QE;F%M92AA+"!N86UE+"`Q,#(T,"DI.PHF;F)S<#L@)FYB<W`[ +M("9N8G-P.R\J(%)E860@9FER<W0@96YT<GDN("HO"B9N8G-P.R`F;F)S<#L@ +M)FYB<W`[87-S97)T17%U86Q);G0H05)#2$E615]/2RP@87)C:&EV95]R96%D +M7VYE>'1?:&5A9&5R*&$L("9A;7`[864I*3L*)FYB<W`[("9N8G-P.R`F;F)S +M<#MA<W-E<G1%<75A;%-T<FEN9R@F<75O=#M-151!+4E.1B]-04Y)1D535"Y- +M1B9Q=6]T.RP@87)C:&EV95]E;G1R>5]P871H;F%M92AA92DI.SPO4%)%/CQ0 +M/@I4:&4@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G186%A8/"]45#X@;6%C +M<F]S(&-H96-K('1H870@=&AE:7(*87)G=6UE;G1S('-A=&ES9GD@8V5R=&%I +M;B!C;VYD:71I;VYS+B!)9B!T:&4@87-S97)T:6]N(&9A:6QS+2UF;W(*97AA +M;7!L92P@:68@=&AE(&YA;64@;V8@=&AE(&9I<G-T(&5N=')Y(&ES(&YO=`HF +M<75O=#M-151!+4E.1B]-04Y)1D535"Y-1B9Q=6]T.RTM=&AE(&UA8W)O('=I +M;&P@<F5P;W)T('1H92!P<F]B;&5M+B`*/"]0/@H\4#Y4:&5R92!A<F4@='=O +M(&EM<&]R=&%N="!D:69F97)E;F-E<R!B971W965N('1H92`\5%0@0TQ!4U,] +M(G=E<W1E<FXB/F%S<V5R=%A86#PO5%0^"FUA8W)O<R!U<V5D(&EN('1H97-E +M('1E<W0@:&%R;F5S<V5S(&%N9"!T:&4@25-/($,@<W1A;F1A<F0@/%14($-, +M05-3/2)W97-T97)N(CYA<W-E<G0\+U14/@IM86-R;SH@1FER<W0L('1H97-E +M(&%S<V5R="!M86-R;W,@9&]N)W0@97AI="!O;B!F86EL=7)E+B!">2!D969A +M=6QT+`IT:&5Y(')E<&]R="!T:&4@9F%I;'5R92!A;F0@<F5T=7)N('IE<F\@ +M*'1H92!#(&YO=&EO;B!O9B`F<75O=#MF86QS929Q=6]T.RDN"E-E8V]N9"P@ +M=&AE<V4@;6%C<F]S(&EN8VQU9&4@=F%R:6%N=',@=&AA="!P97)F;W)M(&$@ +M=F%R:65T>2!O9@IS<&5C:69I8R!T97-T<RX@5&AE<V4@<W!E8VEF:6,@=F5R +M<VEO;G,@*'-U8V@@87,@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1%<75A +M;$EN=#PO5%0^"F%N9"`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$5Q=6%L +M4W1R:6YG/"]45#X@:6X@=&AE(&5X86UP;&4@86)O=F4I"F=E;F5R871E(&1E +M=&%I;&5D(&QO9R!M97-S86=E<R!O;B!F86EL=7)E+B!);B!P87)T:6-U;&%R +M+"!T:&5Y('!R:6YT"G1H92!V86QU92!O9B!B;W1H(&%R9W5M96YT<SL@=&AI +M<R!G<F5A=&QY('-I;7!L:69I97,@9&EA9VYO<VEN9PIF86EL=7)E<RX@"CPO +M4#X*/$@Q($-,05-3/2)W97-T97)N(CX\02!.04U%/2),:69E7V-Y8VQE7V]F +M7V%?=&5S="(^/"]!/DQI9F4@8WEC;&4@;V8*82!T97-T/"](,3X*/%`^16%C +M:"!T97-T(')E<VED97,@:6X@82!#('-O=7)C92!F:6QE('=I=&@@=&AE('-A +M;64@;F%M92!A<R!T:&4*=&5S="X@5&AE('1E<W0@:71S96QF(&ES(&$@9G5N +M8W1I;VX@=&AA="!T86ME<R!N;R!A<F=U;65N=',N(%1H92!T97-T"FES(&1E +M8VQA<F5D('5S:6YG('1H92`\5%0@0TQ!4U,](G=E<W1E<FXB/D1%1DE.15]4 +M15-4*"D\+U14/B!M86-R;RX*5&AI<R!M86-R;R!S97)V97,@8F]T:"!T;R!E +M;G-U<F4@=&AA="!T:&4@=&5S="!I<R!D96-L87)E9"!C;W)R96-T;'D*86YD +M(&%S(&$@;&%B96P@=&AA="!C86X@8F4@=7-E9"!T;R!L;V-A=&4@86QL(&1E +M9FEN960@=&5S=',N("A/;@I5;FEX+6QI:V4@<&QA=&9O<FUS+"!A('-I;7!L +M92`\5%0@0TQ!4U,](G=E<W1E<FXB/F=R97`\+U14/B!O<&5R871I;VX*:7,@ +M=7-E9"!T;R!C;VYS=')U8W0@82!F:6QE(&-A;&QE9"`\5%0@0TQ!4U,](G=E +M<W1E<FXB/FQI<W0N:#PO5%0^"G1H870@:&]L9',@=&AE(&YA;65S(&]F(&%L +M;"!O9B!T:&4@=&5S=',N(%1H:7,@;6%K97,@:70@=F5R>2!E87-Y('1O"F%D +M9"!N97<@=&5S=',N*2`*/"]0/@H\4#Y4:&4@=&5S="!H87)N97-S(&1E=&5R +M;6EN97,@=VAI8V@@=&5S=',@=&\@<G5N+B!)="!G;V5S('1H<F]U9V@*=&AE +M(&9O;&QO=VEN9R!S=&5P<R!W:&5N979E<B!I="!R=6YS(&$@=&5S=#H@"CPO +M4#X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/CQ3 +M5%))2T4^0VQO<V5S(&%L;"!F:6QE"@ED97-C<FEP=&]R<R!E>&-E<'0@9F]R +M('-T9&EN+"!S=&1O=70L(&%N9"!S=&1E<G(N/"]35%))2T4^("A4:&ES"@ES +M8W)E=W,@=7`@;&EB8R!O;B!S;VUE('!L871F;W)M<R!S;R!H87,@8F5E;B!R +M96UO=F5D+BD@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ +M(#!I;B(^0W)E871E<R!A('1E;7!O<F%R>2!D:7)E8W1O<GD*"7=H;W-E(&YA +M;64@;6%T8VAE<R!T:&4@;F%M92!O9B!T:&4@=&5S="!A;F0@<W=I=&-H97,@ +M:6YT;R!T:&%T"@ED:7)E8W1O<GDN(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M +M87)G:6XM8F]T=&]M.B`P:6XB/E)E<V5T<R!T:&4@8W5R<F5N="!L;V-A;&4N +M(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D-A +M;&QS('1H92!T97-T(&9U;F-T:6]N+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB +M;6%R9VEN+6)O='1O;3H@,&EN(CY)9B!T:&5R92!W97)E(&YO(&%S<V5R=&EO +M;@H)9F%I;'5R97,L(&ET('=I;&P@<F5M;W9E('1H92!T96UP;W)A<GD@9&ER +M96-T;W)Y+B`H268@/%14($-,05-3/2)W97-T97)N(CXM:SPO5%0^"@EI<R!S +M<&5C:69I960L('1E;7!O<F%R>2!D:7)E8W1O<GD@87)E(&QE9G0@979E;B!I +M9B!T:&4@=&5S=`H)<W5C8V5E9',N*2`*"3PO4#X*"3Q,23X\4#X\4U1224M% +M/DEF('1H97)E(&%R92!A;GD@;W!E;B!F:6QE(&1E<V-R:7!T;W)S(&]T:&5R +M('1H86X*"7-T9&EN+"!S=&1O=70L(&%N9"!S=&1E<G(L(&ET(')E<&]R=',@ +M86X@97)R;W(N/"]35%))2T4^(%1E<W1S"@ES:&]U;&0@;F5V97(@;&5A=F4@ +M;W!E;B!F:6QE(&1E<V-R:7!T;W)S+B`*"3PO4#X*/"]53#X*/%`^26X@<&%R +M=&EC=6QA<BP@=&5S=',@8V%N('-A9F5L>2!A<W-U;64@=&AA=#H@"CPO4#X* +M/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/E1H92!C +M=7)R96YT(&1I<F5C=&]R>2!I<R!E;7!T>0H)=VAE;B!T:&4@=&5S="!S=&%R +M=',N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB +M/D%N>2!F:6QE<R!C<F5A=&5D(&EN('1H92!C=7)R96YT"@ED:7)E8W1O<GD@ +M=VEL;"!B92!R96UO=F5D(&9O<B!Y;W4N(`H)/"]0/@H)/$Q)/CQ0/E1H92!C +M=7)R96YT(&QO8V%L92!I<R!T:&4@9&5F875L="`F<75O=#M#)G%U;W0[(&QO +M8V%L92X@"@D\+U`^"CPO54P^"CQ0/E1E<W1S('-H;W5L9#H@"CPO4#X*/%5, +M/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/E)E;&5A<V4@ +M86QL(&UE;6]R>2X@5&AE('1E<W0*"7-U:71E<R!A<F4@;V-C87-I;VYA;&QY +M(')U;B!U;F1E<B!A(&UE;6]R>2!D96)U9V=E<B!T;R!D971E8W0@;&5A:W,* +M"6EN('1H92!L:6)A<F-H:79E(&QI8G)A<GDN(`H)/"]0/@H)/$Q)/CQ0(%-4 +M64Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D-L;W-E(&%L;"!O<&5N960@9FEL +M97,N(%1H:7,@:&5L<',*"71O(&-A=&-H(&9I;&4@9&5S8W)I<'1O<B!L96%K +M<R!I;B!L:6)A<F-H:79E+B`*"3PO4#X*"3Q,23X\4#Y.;W0@<F5A9"!O<B!W +M<FET92!A8G-O;'5T92!P871H<RX@"@D\+U`^"CPO54P^"CQ(,2!#3$%34STB +M=V5S=&5R;B(^/$$@3D%-13TB4&QA=&9O<FU?=F%R:6%T:6]N(CX\+T$^4&QA +M=&9O<FT*=F%R:6%T:6]N/"](,3X*/%`^4V]M92!T97-T<R!A<F4@<W!E8VEF +M:6,@=&\@82!P87)T:6-U;&%R('!L871F;W)M+B!3=6-H('1E<W1S"G-H;W5L +M9"!U<V4@87!P<F]P<FEA=&4@<&QA=&9O<FTM<W!E8VEF:6,@;6%C<F]S(&%S +M(&9O;&QO=W,Z(`H\+U`^"CQ04D4@0TQ!4U,](G=E<W1E<FXB/B-I9B!?7U!, +M051&3U)-"BXN+B!V87)I;W5S(&AE;'!E<B!F=6YC=&EO;G,@+BXN"B-E;F1I +M9@I$149)3D5?5$535"AF;V]?<&QA=&9O<FTI"GL*(VEF(%]?4$Q!5$9/4DT* +M)FYB<W`[("9N8G-P.RXN+B!T97-T<R!A<R!U<W5A;"`N+BXN"B-E;'-E"B9N +M8G-P.R`F;F)S<#MS:VEP<&EN9R@F<75O=#MP;&%T9F]R;2US<&5C:69I8R!T +M97-T<R9Q=6]T.RD["B-E;F1I9@I]/"]04D4^/%`^"DEN('!A<G1I8W5L87(L +M(&YO=&4@=&AA="!A;&P@=&5S=',@87)E(&-O;7!I;&5D(&%N9"!R=6X@;VX@ +M86QL"G!L871F;W)M<RX@"CPO4#X*/%`^36]S="!T97-T<R!A<F4@;F]T('!L +M871F;W)M+7-P96-I9FEC(&%N9"!W:6QL('1H=7,@96YD('5P(')U;FYI;F<* +M;VX@;6%N>2!D:69F97)E;G0@<&QA=&9O<FUS+B!);B!O<F1E<B!T;R!S:6UP +M;&EF>2!W<FET:6YG('-U8V@@=&5S=',L"G1R>2!T;R!U<V4@<&QA=&9O<FTM +M:6YD97!E;F1E;G0@8V]D:6YG.B`*/"]0/@H\54P^"@D\3$D^/%`@4U193$4] +M(FUA<F=I;BUB;W1T;VTZ(#!I;B(^57-E('-T9&EO(#Q45"!#3$%34STB=V5S +M=&5R;B(^9F]P96XH*3PO5%0^+`H)/%14($-,05-3/2)W97-T97)N(CYF=W)I +M=&4H*3PO5%0^+"`\5%0@0TQ!4U,](G=E<W1E<FXB/F9R96%D*"D\+U14/BP* +M"6%N9"`\5%0@0TQ!4U,](G=E<W1E<FXB/F9C;&]S92@I/"]45#X@=&\@86-C +M97-S(&9I;&5S('=H96YE=F5R"@EF96%S:6)L92X@"@D\+U`^"@D\3$D^/%`^ +M3&]O:R!T:')O=6=H('1H92`\5%0@0TQ!4U,](G=E<W1E<FXB/G1E<W0N:#PO +M5%0^(&AE861E<B!T;PH)<V5E(&EF('1H97)E(&%R92!A<W-E<G18>'@H*2!F +M=6YC=&EO;G,@=&AA="!Y;W4@8V%N('5S92X@5&AE<F4G<R!A"@EL:7-T(&]F +M('1H92!M;W)E('!O<'5L87(@;VYE<R!B96QO=RP@8G5T(&YE=R!O;F5S(&%R +M92!O9G1E;B!A9&1E9"X@"@D\+U`^"CPO54P^"CQ(,2!#3$%34STB=V5S=&5R +M;B(^/$$@3D%-13TB07-S97)T7VUA8W)O<R(^/"]!/D%S<V5R="!M86-R;W,\ +M+T@Q/@H\4#Y4:&4@9F]L;&]W:6YG(&ES(&$@;F5C97-S87)I;'D@:6YC;VUP +M;&5T92!L:7-T(&]F(&%S<V5R="!F=6YC=&EO;G,*879A:6QA8FQE('1O('1E +M<W1S.B`*/"]0/@H\54P^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ +M(#!I;B(^0F%S:6,@97%U86QI='DZ(#Q45"!#3$%34STB=V5S=&5R;B(^87-S +M97)T17%U86Q);G0\+U14/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T +M17%U86Q3=')I;F<\+U14/BP@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1% +M<75A;$UE;3PO5%0^"@D)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T +M=&]M.B`P:6XB/D9I;&4@8W)E871I;VXZ(#Q45"!#3$%34STB=V5S=&5R;B(^ +M87-S97)T36%K949I;&4\+U14/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^87-S +M97)T36%K95-Y;6QI;FL\+U14/BP@/%14($-,05-3/2)W97-T97)N(CYA<W-E +M<G1-86ME2&%R9&QI;FL\+U14/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^87-S +M97)T36%K941I<CPO5%0^(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM +M8F]T=&]M.B`P:6XB/D9I;&4@=&5S=',Z(#Q45"!#3$%34STB=V5S=&5R;B(^ +M87-S97)T27-296<\+U14/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T +M27-$:7(\+U14/BP@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1)<U-Y;6QI +M;FL\+U14/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T1FEL95-I>F4\ +M+U14/BP@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1&:6QE3FQI;FMS/"]4 +M5#XL"@D\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$9I;&5-=&EM93PO5%0^ +M(`H)/"]0/@H)/$Q)/CQ0/D9I;&4@8V]N=&5N=',Z(#Q45"!#3$%34STB=V5S +M=&5R;B(^87-S97)T1FEL945M<'1Y/"]45#XL"@D\5%0@0TQ!4U,](G=E<W1E +M<FXB/F%S<V5R=$9I;&5.;VY%;7!T>3PO5%0^+"`\5%0@0TQ!4U,](G=E<W1E +M<FXB/F%S<V5R=$9I;&5#;VYT96YT<SPO5%0^+`H)/%14($-,05-3/2)W97-T +M97)N(CYA<W-E<G1497AT1FEL94-O;G1E;G1S/"]45#X@"@D\+U`^"CPO54P^ +M"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB4F5F97)E;F-E7T9I;&5S +M(CX\+T$^4F5F97)E;F-E($9I;&5S/"](,3X*/%`^36%N>2!T97-T<R!R97%U +M:7)E(')E861I;F<@82!P<F4M8V]N<W1R=6-T960@<F5F97)E;F-E(&9I;&4N +M(%-U8V@*9FEL97,@87)E('-T;W)E9"!W:71H('1H92!S;W5R8V4@8V]D92!F +M;W(@=&AE(&%S<V]C:6%T960@=&5S="!S=6ET92X*4F5F97)E;F-E(&9I;&5S +M(&%R92!N86UE9"!A8V-O<F1I;F<@=&\@=&AE('1E<W0@86YD(&UU<W0@8F4@ +M=75E;F-O9&5D"G1O(&)E(&-H96-K960@:6YT;R!S;W5R8V4@8V]N=')O;"X@ +M"CPO4#X*/%`^1F]R(&5X86UP;&4L(&EF('EO=2!N965D(&$@<F5F97)E;F-E +M('1A<B!A<F-H:79E('1O('5S92!W:71H"CQ45"!#3$%34STB=V5S=&5R;B(^ +M=&5S=%]F;V\\+U14/BP@=&AE(&9I;&4@<VAO=6QD(&)E(&YA;65D"CQ45"!# +M3$%34STB=V5S=&5R;B(^=&5S=%]F;V\N=&%R/"]45#X@86YD('-T;W)E9"!I +M;B!S;W5R8V4@8V]N=')O;"!A<PH\5%0@0TQ!4U,](G=E<W1E<FXB/G1E<W1? +M9F]O+G1A<BYU=3PO5%0^+B`*/"]0/@H\4#Y7:71H:6X@=&AE('1E<W0@8V]D +M92P@>6]U(&-A;B!R96-O=F5R('1H92!R969E<F5N8V4@9FEL92!W:71H.B`* +M/"]0/@H\4%)%($-,05-3/2)W97-T97)N(B!35%E,13TB;6%R9VEN+6)O='1O +M;3H@,"XR:6XB/B9N8G-P.R`F;F)S<#L@97AT<F%C=%]R969E<F5N8V5?9FEL +M92@F<75O=#MT97-T7V9O;RYT87(F<75O=#LI.SPO4%)%/CQ0/@I4:&4@/%14 +M($-,05-3/2)W97-T97)N(CYE>'1R86-T7W)E9F5R96YC95]F:6QE*"D\+U14 +M/B!F=6YC=&EO;B!W:6QL"G5U9&5C;V1E('1H92!R97%U97-T960@9FEL92!A +M;F0@<'5T('1H92!R97-U;'0@:6X@=&AE(&-U<G)E;G0*9&ER96-T;W)Y+B`* +M/"]0/@H\4#Y,;V]K(&%T(#Q45"!#3$%34STB=V5S=&5R;B(^=&5S=%]R96%D +M7V9O<FUA=%]C<&EO7V)I;E]B92YC/"]45#X*9F]R(&$@<VEM<&QE(&5X86UP +M;&4@;V8@=&AI<R!U<V%G92X@"CPO4#X*/%`^02!F97<@;V8@=&AE(&]L9&5R +M('1E<W1S('-T;W)E(')E9F5R96YC92!D871A('=I=&AI;B!T:&4@<V]U<F-E +M"F-O9&4@87,@82!H97@M96YC;V1E9"!A<G)A>2!O9B!C:&%R86-T97)S+B!4 +M:&ES('=A<R!C;VUM;VX@8F5F;W)E"CQ45"!#3$%34STB=V5S=&5R;B(^97AT +M<F%C=%]R969E<F5N8V5?9FEL92@I/"]45#X@=V%S(&%D9&5D(&%N9"!I<PIN +M;W0@<F5C;VUM96YD960@9F]R(&YE=R!C;V1E+B`*/"]0/@H\2#$@0TQ!4U,] +M(G=E<W1E<FXB/CQ!($Y!344](D1O<U]A;F1?1&]N=',B/CPO03Y$;W,@86YD +M($1O;G1S/"](,3X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M +M.B`P:6XB/D1/('5S92!A<W-E<G1S(&QI8F5R86QL>2X@270G<PH)8V]M;6]N +M('1O(&AA=F4@86X@87-S97)T(&]N(&%L;6]S="!E=F5R>2!L:6YE+B`*"3PO +M4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY$3R!U<V4@ +M87-S97)T17%U86Q);G0L"@EA<W-E<G1%<75A;%-T<FEN9RP@87-S97)T17%U +M86Q-96T@=&\@=&5S="!E<75A;&ET>2!I;G-T96%D(&]F('!L86EN"@EA<W-E +M<G0H*3L@=&AE('-P96-I86QI>F5D(&9O<FUS(&=I=F4@82!L;W0@;6]R92!I +M;F9O<FUA=&EO;B!O;B!A"@EF86EL=7)E+B`*"3PO4#X*"3Q,23X\4"!35%E, +M13TB;6%R9VEN+6)O='1O;3H@,&EN(CY$3R!T97-T('EO=7(@=&5S=',[(&5X +M<&5R:6UE;G0@8GD*"6-H86YG:6YG(&$@<&EE8V4@;V8@8V]D92!A;F0@;6%K +M92!S=7)E('EO=7(@=&5S="!F86EL<RX@268@>6]U('1H:6YK"@EY;W4G=F4@ +M9F]U;F0@82!B=6<L('=E(')E8V]M;65N9"!W<FET:6YG('1H92!T97-T(&9I +M<G-T+"!M86ME('-U<F4*"71H92!T97-T(&9A:6QS+"!T:&5N(&9I>&EN9R!T +M:&4@8G5G+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@ +M,&EN(CY$3R!R=6X@86QL(&]F('1H92!T97-T<R!B969O<F4*"7-U8FUI='1I +M;F<@82!C:&%N9V4N($1E<&5N9&EN9R!O;B!Y;W5R(&)U:6QD(&5N=FER;VYM +M96YT+"`\5%0@0TQ!4U,](G=E<W1E<FXB/FUA:V4*"71E<W0\+U14/B!O<B`\ +M5%0@0TQ!4U,](G=E<W1E<FXB/FUA:V4@8VAE8VL\+U14/B!W:6QL('5S=6%L +M;'D@<G5N"@EA;&P@;V8@=&AE('1E<W1S+B`*"3PO4#X*"3Q,23X\4"!35%E, +M13TB;6%R9VEN+6)O='1O;3H@,&EN(CY$3TXG5"!R96QY(&]N(#Q45"!#3$%3 +M4STB=V5S=&5R;B(^2$%615\\+U14/@H);6%C<F]S(&9R;VT@8V]N9FEG+F@N +M("A)9B!T:&4@=&5S=',@=7-E('1H92!S86UE(#Q45"!#3$%34STB=V5S=&5R +M;B(^2$%615\\+U14/@H);6%C<F]S(&%S('1H92!C;V1E(&)E:6YG('1E<W1E +M9"!T:&5N(&-O;F9I9W5R871I;VX@<')O8FQE;7,@=VEL;"!B90H)8V]V97)E +M9"!U<"XI(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P +M:6XB/D1/('5S92!R=6YT:6UE('1E<W1S(&9O<B!P;&%T9F]R;0H)9F5A='5R +M97,N($9O<B!E>&%M<&QE+"!T:&4@04-,('1E<W1S('1R>2!T;R!S970@86X@ +M04-,(&]N(&$@9FEL92!A;F0*"7)E860@:70@8F%C:R!T;R!D971E<FUI;F4@ +M:68@04-,('-U<'!O<G0@:7,@879A:6QA8FQE+"!T:&5N('1H97D*"65X97)C +M:7-E('1H92!L:6)A<F-H:79E($%#3"!H86YD;&EN9RX@"@D\+U`^"@D\3$D^ +M/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^1$\@;&]O:R!A="!E>&ES +M=&EN9R!T97-T<RX@3V9T96XL"@EA(&)U9R!C86X@8F4@=&5S=&5D(&)Y(&%D +M9&EN9R!J=7-T(&$@8V]U<&QE(&]F(&%S<V5R=',@=&\@86X*"65X:7-T:6YG +M('1E<W0@:6YS=&5A9"!O9B!W<FET:6YG(&$@;F5W(&]N92X@"@D\+U`^"@D\ +M3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^1$\@:6UP<F]V92!E +M>&ES=&EN9R!T97-T<RX@26X*"7!A<G1I8W5L87(L(&EF('EO=2!S964@82!T +M97-T(&9A:6QU<F4@=&AA="!I<R!H87)D('1O('5N9&5R<W1A;F0L"@EC;VYS +M:61E<B!A9&1I;F<@82!F86EL=7)E*"D@;65S<V%G92!O<B!C;VUM96YT<R!S +M;R!T:&4@;F5X="!P97)S;VX*"7=I;&P@:&%V92!A;B!E87-I97(@=&EM92X@ +M"@D\+U`^"@D\3$D^/%`^1$\@87-K(&]N('1H92!M86EL:6YG(&QI<W1S(&EF +M('EO=2!H879E('%U97-T:6]N<RX@4V]M92!T97-T<PH)87)E(&)E='1E<B!W +M<FET=&5N('1H86X@;W1H97)S+B`*"3PO4#X*/"]53#X*/$@Q($-,05-3/2)W +M97-T97)N(CX\02!.04U%/2)3;VUE7V5X86UP;&5S7V]F7W1E<W1S(CX\+T$^ +M4V]M90IE>&%M<&QE<R!O9B!T97-T<SPO2#$^"CQ(,B!#3$%34STB=V5S=&5R +M;B(^/$$@3D%-13TB3&EB87)C:&EV95]R96%D7W1E<W1S(CX\+T$^3&EB87)C +M:&EV90IR96%D('1E<W1S/"](,CX*/%`^5&AE<F4@87)E('%U:71E(&$@9F5W +M(')E860@=&5S=',@=&AA="!S:6UP;'D@<F5A9"!A('!R92UB=6EL=`II;G!U +M="!F:6QE(&%N9"!V97)I9GD@=&AE(')E<W5L=',N(%1H97-E('5S92`\5%0@ +M0TQ!4U,](G=E<W1E<FXB/F5X=')A8W1?<F5F97)E;F-E7V9I;&4H*3PO5%0^ +M"G1O(&1E8V]D92!A('5U96YC;V1E9"!I;G!U="!F:6QE+"!T:&5N(&]P96X@ +M=&AA="!F:6QE('=I=&@@;&EB87)C:&EV90IA;F0@=F5R:69Y('1H92!R97-U +M;'1S+B!-;W-T(&]F('1H97-E(&%R92!P<F5T='D@<W1R86EG:'1F;W)W87)D +M+B`*/"]0/@H\2#(@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](DQI8F%R8VAI +M=F5?<F5A9"]W<FET95]T97-T<R(^/"]!/DQI8F%R8VAI=F4*<F5A9"]W<FET +M92!T97-T<SPO2#(^"CQ0/DUO<W0@;V8@=&AE('=R:71E('1E<W1S(')E86QL +M>2!J=7-T('9E<FEF>2!T:&%T(&QI8F%R8VAI=F4@8V%N"G)E860@=VAA="!I +M="!W<FET97,N(%1H97-E(&=E;F5R86QL>2!U<V4@=&AE(&UE;6]R>2!I;G1E +M<F9A8V5S+B!4:&5Y"F9E960@87)C:&EV92!E;G1R:65S(&EN=&\@=&AE('=R +M:71E<B!T;R!C<F5A=&4@86X@87)C:&EV92!I;B!M96UO<GD*86YD('1H96X@ +M;W!E;B!T:&4@;65M;W)Y(&%G86EN('1O(')E860@=&AE(&1A=&$@8F%C:R!A +M;F0@=F5R:69Y('1H870*:70@:7,@=&AE('-A;64N(`H\+U`^"CQ(,B!#3$%3 +M4STB=V5S=&5R;B(^/$$@3D%-13TB3&EB87)C:&EV95]W<FET95]V86QI9&%T +M;W)S(CX\+T$^3&EB87)C:&EV90IW<FET92!V86QI9&%T;W)S/"](,CX*/%`^ +M02!F97<@=W)I=&4@=&5S=',@=W)I=&4@86X@87)C:&EV92!I;G1O(&UE;6]R +M>2!A;F0@=&AE;B!I;G-P96-T"G1H92!A8W1U86P@8GET97,@=&\@=F5R:69Y +M('1H870@=&AE(&%R8VAI=F4@=V%S(&-R96%T960@8V]R<F5C=&QY+@I4:&5S +M92!T97-T<R!A<F4@;FEC92!T;R!H879E(&)U="!A<F4@=&5D:6]U<R!T;R!B +M=6EL9"X@"CPO4#X*/%`^5&AE<F4@87)E(&%L<V\@82!C;W5P;&4@;V8@<W5C +M:"!V86QI9&%T;W)S(&9O<B!B<V1T87(@86YD(&)S9&-P:6\N"E1H97-E(&%R +M92!V97)Y('1R:6-K>2!S:6YC92!T:&4@97AA8W0@9&%T82!C;VYT86EN<R!V +M86QU97,@=&AA="!T:&4*=&5S="!C86YN;W0@8V]M<&QE=&5L>2!C;VYT<F]L +M("AS=6-H(&%S('1H92!C=7)R96YT('1I;64@;W(*=7-E<FYA;64I+B`*/"]0 +M/@H\2#(@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](D1I<VM?=&5S=',B/CPO +M03Y$:7-K('1E<W1S/"](,CX*/%`^3&EB87)C:&EV92=S(&1I<VL@22]/($%0 +M27,L(&%S('=E;&P@87,@8G-D=&%R(&%N9"!B<V1C<&EO+"!N965D('1O"F]P +M97)A=&4@8GD@=F5R:69Y:6YG(&9I;&5S(&]N(&1I<VLN(%1O(&UA:V4@=&AI +M<R!E87-I97(L('1H92!T97-T"F9R86UE=V]R:R!N;W<@:&%S(&$@;&%R9V4@ +M;G5M8F5R(&]F(&%S<V5R=&EO;G,@=&\@=F5R:69Y('1I;65S=&%M<',L"G!E +M<FUI<W-I;VYS+"!A;F0@;W1H97(@8F%S:6,@9FEL92!D871A+B!4:&5S92!A +M<W-E<G1I;VYS('5S90IA<'!R;W!R:6%T92!S>7-T96T@8V%L;',@9F]R(&5A +M8V@@<&QA=&9O<FT[(&YE=R!T97-T<R!S:&]U;&0@=')Y('1O"F%V;VED('5S +M:6YG(#Q45"!#3$%34STB=V5S=&5R;B(^<W1A="@I/"]45#XL('=H:6-H(&ES +M(&YO="!U;FEF;W)M;'D*879A:6QA8FQE+B`*/"]0/@H\2#(@0TQ!4U,](G=E +M<W1E<FXB/CQ!($Y!344](D9U>GI?=&5S=&5R(CX\+T$^1G5Z>B!T97-T97(\ +M+T@R/@H\4#Y4:&4@9G5Z>B!T97-T97(@:7,@;VYE(&]F('1H92!F97<@=&5S +M=',@=&AA="!D;V5S(&YO="!A9V=R97-S:79E;'D*=7-E(&%S<V5R=&EO;G,N +M($ET<R!P=7)P;W-E(&ES('1O('1R>2!A;F0@8W)A<V@@;&EB87)C:&EV92!B +M>2!F965D:6YG"FET(&EN<'5T('1H870@:7,@<VQI9VAT;'D@9&%M86=E9"X@ +M*%)E;65M8F5R('1H870@;&EB87)C:&EV92!D;V5S"FAA=F4@<V]M92!F86EL +M<V%F92!C;V1E('1H870@9&5L:6)E<F%T96QY(&%B;W)T<R!T:&4@96YT:7)E +M('!R;V=R86T*:68@8V5R=&%I;B!I;G9A<FEA;G1S(&%R92!V:6]L871E9"XI +M(`H\+U`^"CQ0/E-I;F-E(&$@9G5Z>B!F86EL=7)E(&-A=7-E<R!A(&-R87-H +M+"!I="=S(&EM<&]S<VEB;&4@=&\@<F5P;W)T('1H90IE<G)O<B!T;R!T:&4@ +M8V]N<V]L92P@<V\@=&AE(&9U>GH@=&5S=&5R(&EN<W1E860@9V5N97)A=&5S +M(&$*<F%N9&]M;'DM9&%M86=E9"!F:6QE+"!S879E<R!T:&%T(&9I;&4@=&\@ +M9&ES:RP@=&AE;B!R=6YS('1H92!F:6QE"G1H<F]U9V@@;&EB87)C:&EV92!T +M;R!T<GD@=&\@<')O=F]K92!A(&-R87-H+B!)9B!L:6)A<F-H:79E(&-R87-H +M97,*=&AE(&5N=&ER92!T97-T97(L('1H92!I;G!U="!T:&%T(&-A=7-E9"!T +M:&4@8W)A<V@@=VEL;"!B92!A=F%I;&%B;&4*;VX@9&ES:R!F;W(@9G5R=&AE +M<B!A;F%L>7-I<RX@"CPO4#X*/%`^06QT:&]U9V@@:70@:7,@=6YU<W5A;"!F +M;W(@82!T97-T('!R;V=R86T@=&\@=7-E(')A;F1O;2!I;G!U="P@=&AE"F9U +M>GH@=&5S=&5R(&AA<R!P<F]V96X@<75I=&4@=7-E9G5L(&%T('5N8V]V97)I +M;F<@<&]O<B!E<G)O<@IH86YD;&EN9RX@56YF;W)T=6YA=&5L>2P@=&AE(&YE +M960@=&\@=W)I=&4@=&AE(&1A=&$@=&\@9&ES:R!B969O<F4*96%C:"!T97-T +M(&ES(&$@<VEG;FEF:6-A;G0@<&5R9F]R;6%N8V4@:7-S=64N(`H\+U`^"CQ( +M,B!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB3&%R9V5?=&%R7W1E<W1E<B(^ +M/"]!/DQA<F=E('1A<B!T97-T97(\+T@R/@H\4#Y4:&4@;&%R9V4@=&%R('1E +E<W1E<B!A='1E;7!T<R!T;R`Q_7L/0!0`M,4>&0@````````````` +` +end 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 new file mode 100644 index 0000000..aef15d2 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part10.rar.uu @@ -0,0 +1,75 @@ +begin 644 - +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 +M('5P('1O(#$@=&5R86)Y=&4N($]F(&-O=7)S92P@=W)I=&EN9R!A(#$@=&5R +M86)Y=&4*96YT<GD@=&\@86X@=6YC;VUP<F5S<V5D(&%R8VAI=F4@;VX@9&ES +M:R!O<B!M96UO<GD@:7,@=6YA8V-E<'1A8FQE+`IB;W1H(&9O<B!P97)F;W)M +M86YC92!A;F0@<W!A8V4@<F5A<V]N<RX@179E;B!G>FEP(&]R(&)Z:7`R"F-O +M;7!R97-S:6]N('=O;B=T(&AE;'`[(&%L=&AO=6=H('-M86QL97(L('1H92!O +M=71P=70@:7,@<W1I;&P@;&%R9V4*86YD('1H92!T:6UE(&YE961E9"!T;R!C +M;VUP<F5S<R!S=6-H(&$@;&%R9V4@86UO=6YT(&]F(&1A=&$@:7,*<')O:&EB +M:71I=F4N(%-O('1H92!L87)G92!T87(@=&5S=&5R('5S97,@82!T<FEC:RX@ +M"CPO4#X*/%`^4F5M96UB97(@=&AA="!A;B!U;F-O;7!R97-S960@=&%R(&%R +M8VAI=F4@8V]N<VES=',@;V8@86QT97)N871I;F<*:&5A9&5R<R!A;F0@8F]D +M:65S+B!)9B!T:&4@8F]D:65S(&-O;G-I<W0@96YT:7)E;'D@;V8@>F5R;R!B +M>71E<RP*=&AE;B!A;&P@=&AA="=S(&YE961E9"!T;R!R96-O;G-T<G5C="!T +M:&4@87)C:&EV92!I<R!T;R!R96-O<F0@=&AE"G)E;&%T:79E;'D@<VUA;&P@ +M:&5A9&5R<R!A;F0@<W1O<F4@82!C;W5N="!O9B!E86-H(&-O;G1I9W5O=7,@ +M8FQO8VL*;V8@>F5R;W,N(%1H:7,@<VEM<&QE("9Q=6]T.W)U;BUL96YG=&@@ +M96YC;V1I;F<F<75O=#L@:7,@=F5R>0IE9F9E8W1I=F4L(&-O;7!R97-S:6YG +M(&$@<V%M<&QE(&%R8VAI=F4@=VET:"!A(&1O>F5N(&5N=')I97,@9&]W;B!T +M;PIJ=7-T(&$@9F5W(&MI;&]B>71E<RP@979E;B!I9B!T:&]S92!E;G1R:65S +M(')A;F=E('5P('1O(#%40BX@"CPO4#X*/%`^0GD@=W)I=&EN9R!A(&-U<W1O +M;2!)+T\@;&%Y97(@=&AA="!I;7!L96UE;G1S('-U8V@@8V]M<')E<W-I;VXL +M('=E"F-A;B!W<FET92!V97)Y(&QA<F=E(&5N=')I97,@=&AR;W5G:"!L:6)A +M<F-H:79E('1H96X@<F5A9"!T:&5M(&)A8VL*86YD('9E<FEF>2!T:&%T(&QI +M8F%R8VAI=F4@8V]R<F5C=&QY(&AA;F1L97,@86QL(&]F('1H92!B;W5N9&%R +M>0IC87-E<RX@"CPO4#X*/%`^3V8@8V]U<G-E+"!E=F5N('-C86YN:6YG(&]U +M='!U="!T;R!D971E<FUI;F4@>F5R;R!B;&]C:W,@8V%N('1A:V4*<75I=&4@ +M82!W:&EL92P@<V\@=&AE(&QA<F=E('1A<B!T97-T97(@;6%K97,@;VYE(&UO +M<F4@;W!T:6UI>F%T:6]N.@I,:6)A<F-H:79E(&ES("9Q=6]T.VUO<W1L>29Q +M=6]T.R!Z97)O+6-O<'DN(%=H96X@>6]U(&=I=F4@:70@82!L87)G90IB;&]C +M:R!T;R!W<FET92!T;R!A;B!E;G1R>2!B;V1Y+"!I="!W:6QL('!A<W,@<&]I +M;G1E<G,@<W1R86EG:'0*=&AR;W5G:"!T;R!T:&4@;W5T<'5T(')O=71I;F4L +M(&5X8V5P="!I;B!T:&]S92!C87-E<R!W:&5R92!I="!M=7-T"F-O<'D@9&%T +M82!T;R!C;W)R96-T;'D@8G5I;&0@8FQO8VMS+B!4:&4@;&%R9V4@=&%R('1E +M<W1E<B!T86ME<PIA9'9A;G1A9V4@;V8@=&AI<R!T;R!Q=6EC:VQY(&1E=&5C +M="!W:&5N(&$@8FQO8VL@8F5I;F<@=W)I='1E;B!O=70@8GD*=&AE(&%R8VAI +M=F4@=W)I=&5R(&ES('1H92!S86UE(&%S('-O;64@;V8@=&AE(&1A=&$@=&AA +M="!W87,@9VEV96X@8GD*=&AE('1E<W0@87,@=&AE(&5N=')Y(&)O9'DL(&%N +M9"!S:6UI;&%R;'D@=VAE;B!R96%D:6YG('1H92!A<F-H:79E"F)A8VLN(`H\ +M+U`^"CQ0/E1A:V5N('1O9V5T:&5R+"!T:&5S92!T<FEC:W,@86QL;W<@=&AE +M(&QA<F=E('1A<B!W<FET97(@=&\@=&5S=`IF;W(@:7-S=65S('-U8V@@87,@ +M<')O<&5R('-T;W)A9V4@;V8@=F5R>2!L87)G92!F:6QE('-I>F5S("AT87(@ +M9FEL97,*<W5P<&]R="!S979E<F%L(&1I9F9E<F5N="!W87ES('1O('-T;W)E +M(&9I;&4@<VEZ97,@=VAI8V@@=')A9&4@;V9F"G!O<G1A8FEL:71Y('9E<G-U +M<R!R86YG93L@;&EB87)C:&EV92!T<FEE<R!T;R!U<V4@=&AE(&UO<W0@<&]R +M=&%B;&4*;VYE(&ET(&-A;B!F;W(@96%C:"!E;G1R>2D@86YD(&EN=&5G97(@ +M;W9E<F9L;W<@*%=I;F1O=W,@,S(M8FET(#Q45"!#3$%34STB=V5S=&5R;B(^ +M;V9F7W0\+U14/@IB<F]K92!T:&4@;&%R9V4@=&%R('1E<W0@86YD(&QE9"!L +M:6)A<F-H:79E('1O(&UA:V4@:&5A=FEE<B!U<V4@;V8*/%14($-,05-3/2)W +M97-T97)N(CYI;G0V-%]T/"]45#X@:6YT97)N86QL>2D@:6X@82!T97-T('1H +M870@<G5N<R!I;@IU;F1E<B`Q+S0@<V5C;VYD+B`*/"]0/@H\4"!35%E,13TB +M;6%R9VEN+6)O='1O;3H@,&EN(CX\0E(^"CPO4#X*/"]"3T19/@H\+TA434P^ +M53-T()`^`"0````D`````YBH8X5M7SM"%#`4`/^A``!T97-T9&ER7'1E<W1S +M>6UL:6YK-<#,;5\[0G%?.T)T97-T<W5B9&ER+TQI8F%R8VAI=F5!9&1I;F=4 +M97-T+FAT;6RT4'0@D#X`)0```"4````#L)33VW%?.T(4,!0`_Z$``'1E<W1D +M:7)<=&5S='-Y;6QI;FLVP`AQ7SM"<5\[0G1E<W1S=6)D:7(O3&EB87)C:&EV +M94%D9&EN9U1E<W0R+FAT;6P)1G0@D#4`(0```"$````#H$2H1$U?.T(4,`L` +M_Z$``'1E<W1S>6UL:6YK@`A-7SM"35\[0G1E<W1D:7(O3&EB87)C:&EV94%D +M9&EN9U1E<W0N:'1M;,31=""0-@`B````(@````/"YQ#S45\[0A0P#`#_H0`` +M=&5S='-Y;6QI;FLR@`A17SM"45\[0G1E<W1D:7(O3&EB87)C:&EV94%D9&EN +M9U1E<W0R+FAT;6RG=70@D#8`+````"P````#--1<+5M?.T(4,`P`_Z$``'1E +M<W1S>6UL:6YK,\`(6U\[0EM?.T)T97-T9&ER+W1E<W1S=6)D:7(O3&EB87)C +M:&EV94%D9&EN9U1E<W0N:'1M;#AD=""0-@`M````+0````,/1!L$8U\[0A0P +M#`#_H0``=&5S='-Y;6QI;FLTP`AC7SM"8U\[0G1E<W1D:7(O=&5S='-U8F1I +M<B],:6)A<F-H:79E061D:6YG5&5S=#(N:'1M;)Q9=."000````````````,` +M````+5\[0A0P%P#M00``=&5S=&1I<EQT97-T96UP='ES=6)D:7*`""U?.T)U +M8#M"+XITX)`\`````````````P`````S7SM"%#`2`.U!``!T97-T9&ER7'1E +M<W1S=6)D:7+`S#-?.T(S7SM"]J1TX)`Q`````````````P````!Q7SM"%#`' +M`.U!``!T97-T9&ERP`AQ7SM"<5\[0E-P=."0-@````````````,`````)U\[ +M0A0P#`#M00``=&5S=&5M<'1Y9&ER@,PG7SM"=6`[0E$`>PY`%`"RV@*;"0`` +&```````` +` +end diff --git a/contrib/libarchive/libarchive/test/test_read_data_large.c b/contrib/libarchive/libarchive/test/test_read_data_large.c index 2a4e130..fa24d5a 100644 --- a/contrib/libarchive/libarchive/test/test_read_data_large.c +++ b/contrib/libarchive/libarchive/test/test_read_data_large.c @@ -55,7 +55,7 @@ DEFINE_TEST(test_read_data_large) /* Create a new archive in memory. */ assert((a = archive_write_new()) != NULL); assertA(0 == archive_write_set_format_ustar(a)); - assertA(0 == archive_write_set_compression_none(a)); + assertA(0 == archive_write_add_filter_none(a)); assertA(0 == archive_write_open_memory(a, buff1, sizeof(buff1), &used)); /* diff --git a/contrib/libarchive/libarchive/test/test_read_disk.c b/contrib/libarchive/libarchive/test/test_read_disk.c index 0dc1f79..4cc2eb4 100644 --- a/contrib/libarchive/libarchive/test/test_read_disk.c +++ b/contrib/libarchive/libarchive/test/test_read_disk.c @@ -126,7 +126,8 @@ DEFINE_TEST(test_read_disk) /* Get the group name for group 0 and see if it makes sense. */ p = archive_read_disk_gname(a, 0); - if (assert(p != NULL)) { + assert(p != NULL); + if (p != NULL) { i = 0; while (i < sizeof(zero_groups)/sizeof(zero_groups[0])) { if (strcmp(zero_groups[i], p) == 0) diff --git a/contrib/libarchive/libarchive/test/test_read_extract.c b/contrib/libarchive/libarchive/test/test_read_extract.c index 93aee31..d4cae3f 100644 --- a/contrib/libarchive/libarchive/test/test_read_extract.c +++ b/contrib/libarchive/libarchive/test/test_read_extract.c @@ -45,7 +45,7 @@ DEFINE_TEST(test_read_extract) /* Create a new archive in memory containing various types of entries. */ assert((a = archive_write_new()) != NULL); assertA(0 == archive_write_set_format_ustar(a)); - assertA(0 == archive_write_set_compression_none(a)); + assertA(0 == archive_write_add_filter_none(a)); assertA(0 == archive_write_open_memory(a, buff, BUFF_SIZE, &used)); /* A directory to be restored with EXTRACT_PERM. */ ++numEntries; diff --git a/contrib/libarchive/libarchive/test/test_read_filter_grzip.c b/contrib/libarchive/libarchive/test/test_read_filter_grzip.c new file mode 100644 index 0000000..43bd5bc --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_filter_grzip.c @@ -0,0 +1,67 @@ +/*- + * Copyright (c) 2003-2008 Tim Kientzle + * 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_grzip) +{ + const char *name = "test_read_filter_grzip.tar.grz"; + /* grzip tracks directories as files, ensure that we list everything */ + const char *n[] = { + "f1", "f2", "f3", "d1/f1", "d1/f2", "d1/f3", NULL }; + struct archive_entry *ae; + struct archive *a; + int i; + + if (!canGrzip()) { + skipping("grzip command-line program not found"); + return; + } + + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_WARN, archive_read_support_filter_grzip(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + extract_reference_file(name); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_open_filename(a, name, 200)); + + /* Read entries, match up names with list above. */ + for (i = 0; n[i] != NULL; ++i) { + failure("Could not read file %d (%s) from %s", i, n[i], name); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_next_header(a, &ae)); + assertEqualString(n[i], archive_entry_pathname(ae)); + } + + /* 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_GRZIP); + assertEqualString(archive_filter_name(a, 0), "grzip"); + assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR); + + assertEqualInt(ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} diff --git a/contrib/libarchive/libarchive/test/test_read_filter_grzip.tar.grz.uu b/contrib/libarchive/libarchive/test/test_read_filter_grzip.tar.grz.uu new file mode 100644 index 0000000..3f55b93 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_filter_grzip.tar.grz.uu @@ -0,0 +1,8 @@ +begin 644 test_read_filter_grzip.tar.grz +M1U)::7!)20`"!#HI`!P``*P,```L`0``\````)D```#Y.$+F+B8PQP#^C=PP +MI/#7H?$H,(_!0<=O!,4![T/;;'S,=B0_3(R1=9"=YKA%RKR-\,+PJIO2]!<! +M\AP!@LM2^Y59+2"@**HBJMM-,M/UUOG7-KT;%6Y,M._"A*:Y_5*;A$^'S)81 +M+PF_/.REK[0F--T(I>I*2V31X]P[DN$GO</@P&.SJM'XHUSE;!A$5;1_%%ET +-?<[O4AO)SBUM$I^[```` +` +end diff --git a/contrib/libarchive/libarchive/test/test_read_filter_lrzip.c b/contrib/libarchive/libarchive/test/test_read_filter_lrzip.c new file mode 100644 index 0000000..47388da --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_filter_lrzip.c @@ -0,0 +1,67 @@ +/*- + * Copyright (c) 2003-2008 Tim Kientzle + * 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_lrzip) +{ + const char *name = "test_read_filter_lrzip.tar.lrz"; + /* lrzip tracks directories as files, ensure that we list everything */ + const char *n[] = { + "d1/", "d1/f1", "d1/f2", "d1/f3", "f1", "f2", "f3", NULL }; + struct archive_entry *ae; + struct archive *a; + int i; + + if (!canLrzip()) { + skipping("lrzip command-line program not found"); + return; + } + + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_WARN, archive_read_support_filter_lrzip(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + extract_reference_file(name); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_open_filename(a, name, 200)); + + /* Read entries, match up names with list above. */ + for (i = 0; i < 7; ++i) { + failure("Could not read file %d (%s) from %s", i, n[i], name); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_next_header(a, &ae)); + assertEqualString(n[i], archive_entry_pathname(ae)); + } + + /* 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_LRZIP); + assertEqualString(archive_filter_name(a, 0), "lrzip"); + assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_GNUTAR); + + assertEqualInt(ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} 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 new file mode 100644 index 0000000..d9bbd61 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_filter_lrzip.tar.lrz.uu @@ -0,0 +1,10 @@ +begin 644 test_read_filter_lrzip.tar.lrz.uu +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(` +M```R#$'@#E`G"/SW..;YC%X%73G3%U_;&GA#Y7N&P\[%?V!^'>:#?(>JQW** +M1]!%JV?=U`TD.@:H85S[7D\VH/]%6JQ<D/18:FO<&V(OV/D=4^5^62X5NA'. +MO*Q*>>/;HI.E&)I2N1_M4BU:942T`-IN<9%AZFZVY]'A)5%EY;Y0S/4MGN]Y +D9.U/9Y/!R!PQ$O_\1>]J_8\^I0",9(YV]K_!A:WK9='*J7,1 +` +end diff --git a/contrib/libarchive/libarchive/test/test_read_filter_lzop.c b/contrib/libarchive/libarchive/test/test_read_filter_lzop.c new file mode 100644 index 0000000..86a5e6e --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_filter_lzop.c @@ -0,0 +1,74 @@ +/*- + * Copyright (c) 2003-2008 Tim Kientzle + * Copyright (c) 2012 Michihiro NAKAJIMA + * 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_lzop) +{ + const char *reference = "test_read_filter_lzop.tar.lzo"; + /* lrzip tracks directories as files, ensure that we list everything */ + const char *n[] = { + "d1/", "d1/f2", "d1/f3", "d1/f1", "f1", "f2", "f3", NULL }; + struct archive_entry *ae; + struct archive *a; + int i, r; + + extract_reference_file(reference); + assert((a = archive_read_new()) != NULL); + r = archive_read_support_filter_lzop(a); + if (r != ARCHIVE_OK) { + if (r == ARCHIVE_WARN && !canLzop()) { + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + skipping("lzop compression is not supported " + "on this platform"); + } else + assertEqualIntA(a, ARCHIVE_OK, r); + return; + } + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_open_filename(a, reference, 10240)); + + /* Read entries, match up names with list above. */ + for (i = 0; n[i] != NULL; ++i) { + failure("Could not read file %d (%s) from %s", + i, n[i], reference); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_next_header(a, &ae)); + assertEqualString(n[i], archive_entry_pathname(ae)); + } + + /* Verify the end-of-archive. */ + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + + /* Verify that the format detection worked. */ + assertEqualInt(archive_filter_count(a), 2); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_LZOP); + assertEqualString(archive_filter_name(a, 0), "lzop"); + assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR); + + assertEqualInt(ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} diff --git a/contrib/libarchive/libarchive/test/test_read_filter_lzop.tar.lzo.uu b/contrib/libarchive/libarchive/test/test_read_filter_lzop.tar.lzo.uu new file mode 100644 index 0000000..d5fcc30 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_filter_lzop.tar.lzo.uu @@ -0,0 +1,11 @@ +begin 664 test_read_filter_lzop.tar.lzo +MB4Q:3P`-"AH*$#`@8`E``04#```!``"!M%!PQ.T`````&71E<W1?<F5A9%]F +M:6QT97)?;'IO<"YT87(T@P\,```2`````/]:XH">`V0Q+P```"`]```+,#`P +M-S<U(``P,#$W-3`J'0`PX```!"`Q,C`S-#$T,C,Q-2`P,3`W-3$`(#4@/5@" +MM`L(=7-T87(`,#!C=66@`C44`#Y\`*09<!ME`2`U%`$@<%@``F0Q+V8R(#Y4 +M`@,P,#`V-C1H(R`'_`<$,3$W,0`@,"`^7`*8"R#B_0<S@"$@.1``(!3]!S(@ +M`$K]!S$@.>@'A`L@%/T',"``1OT'9B`_\P<````@#?T'-W__-C8V(`!'_`<@ +M/_`?(!?]!S<@`$?\!R`_\!\@%OT'-R``1_P7@/0@````RA````$````````` +3````````````````$0`````````` +` +end diff --git a/contrib/libarchive/libarchive/test/test_read_filter_lzop_multiple_parts.c b/contrib/libarchive/libarchive/test/test_read_filter_lzop_multiple_parts.c new file mode 100644 index 0000000..3b0febb --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_filter_lzop_multiple_parts.c @@ -0,0 +1,72 @@ +/*- + * Copyright (c) 2003-2008 Tim Kientzle + * Copyright (c) 2012 Michihiro NAKAJIMA + * 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_lzop_multiple_parts) +{ + const char *reference = "test_read_filter_lzop_multiple_parts.tar.lzo"; + struct archive_entry *ae; + struct archive *a; + int r; + + extract_reference_file(reference); + assert((a = archive_read_new()) != NULL); + r = archive_read_support_filter_lzop(a); + if (r != ARCHIVE_OK) { + if (r == ARCHIVE_WARN && !canLzop()) { + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + skipping("lzop compression is not supported " + "on this platform"); + } else + assertEqualIntA(a, ARCHIVE_OK, r); + return; + } + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_open_filename(a, reference, 10240)); + + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("file1", archive_entry_pathname(ae)); + assertEqualInt(19, archive_entry_size(ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("file2", archive_entry_pathname(ae)); + assertEqualInt(262144, archive_entry_size(ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("file3", archive_entry_pathname(ae)); + assertEqualInt(19, archive_entry_size(ae)); + + /* Verify the end-of-archive. */ + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + + /* Verify that the format detection worked. */ + assertEqualInt(archive_filter_count(a), 2); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_LZOP); + assertEqualString(archive_filter_name(a, 0), "lzop"); + assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR); + + assertEqualInt(ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} diff --git a/contrib/libarchive/libarchive/test/test_read_filter_lzop_multiple_parts.tar.lzo.uu b/contrib/libarchive/libarchive/test/test_read_filter_lzop_multiple_parts.tar.lzo.uu new file mode 100644 index 0000000..4f8fcbf --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_filter_lzop_multiple_parts.tar.lzo.uu @@ -0,0 +1,89 @@ +begin 664 test_read_filter_lzop_multiple_parts.tar.lzo +MB4Q:3P`-"AH*$#`@8`E``04#```!``"!M%"`KW@`````"W1E<W1?;'IO<&%A +M?C\(\0``*`````#8F00M$0-F:6QE,0`@/0``"S`P,#8V-"``,#`Q-S4P*AT` +M,*````8R,R`Q,C`T,#$Q-#0W-R`P,3$S-S``(#`@/5@"M`L(=7-T87(`,#!C +M=66@`C44`#Y\`*09<!ME`2`U%`$@<%@`"6-O;G1E;G1S(&]F((Y!+@H@<(P" +M(``\0`)M/C(@/H`%.OT/,79E,#`G_P\U,C6>?S4W(`!&_`\@/N@'(``````` +M`````````````````````````````````````)!X`0X````````````````` +M`````!$```````")3%I/``T*&@H0,"!@"4`!!0,```$``(&T4("O>``````+ +M=&5S=%]L>F]P86)^0`CR```H`````$DH```!`@``````(``````````````` +M`````````````````````````````````````.X0```!```````````````` +M`````````!$```````")3%I/``T*&@H0,"!@"4`!!0,```$``(&T4("O>``` +M```+=&5S=%]L>F]P86-^00CS```H`````$DH```!`@``````(``````````` +M`````````````````````````````````````````.X0```!```````````` +M`````````````!$```````")3%I/``T*&@H0,"!@"4`!!0,```$``(&T4("O +M>``````+=&5S=%]L>F]P861^0@CT```H`````$DH```!`@``````(``````` +M`````````````````````````````````````````````.X0```!```````` +M`````````````````!$```````")3%I/``T*&@H0,"!@"4`!!0,```$``(&T +M4("O>``````+=&5S=%]L>F]P865^0PCU```H`````$DH```!`@``````(``` +M`````````````````````````````````````````````````.X0```!```` +M`````````````````````!$```````")3%I/``T*&@H0,"!@"4`!!0,```$` +M`(&T4("O>``````+=&5S=%]L>F]P869^1`CV```H`````$DH```!`@`````` +M(````````````````````````````````````````````````````.X0```! +M`````````````````````````!$```````")3%I/``T*&@H0,"!@"4`!!0,` +M``$``(&T4("O>``````+=&5S=%]L>F]P86=^10CW```H`````$DH```!`@`` +M````(````````````````````````````````````````````````````.X0 +M```!`````````````````````````!$```````")3%I/``T*&@H0,"!@"4`! +M!0,```$``(&T4("O>``````+=&5S=%]L>F]P86A^1@CX```H`````$DH```! +M`@``````(``````````````````````````````````````````````````` +M`.X0```!`````````````````````````!$```````")3%I/``T*&@H0,"!@ +M"4`!!0,```$``(&T4("O>``````+=&5S=%]L>F]P86E^1PCY```H`````$DH +M```!`@``````(``````````````````````````````````````````````` +M`````.X0```!`````````````````````````!$```````")3%I/``T*&@H0 +M,"!@"4`!!0,```$``(&T4("O>``````+=&5S=%]L>F]P86I^2`CZ```H```` +M`$DH```!`@``````(``````````````````````````````````````````` +M`````````.X0```!`````````````````````````!$```````")3%I/``T* +M&@H0,"!@"4`!!0,```$``(&T4("O>``````+=&5S=%]L>F]P86M^20C[```H +M`````$DH```!`@``````(``````````````````````````````````````` +M`````````````.X0```!`````````````````````````!$```````")3%I/ +M``T*&@H0,"!@"4`!!0,```$``(&T4("O>``````+=&5S=%]L>F]P86Q^2@C\ +M```H`````$DH```!`@``````(``````````````````````````````````` +M`````````````````.X0```!`````````````````````````!$```````") +M3%I/``T*&@H0,"!@"4`!!0,```$``(&T4("O>``````+=&5S=%]L>F]P86U^ +M2PC]```H`````$DH```!`@``````(``````````````````````````````` +M`````````````````````.X0```!`````````````````````````!$````` +M``")3%I/``T*&@H0,"!@"4`!!0,```$``(&T4("O>``````+=&5S=%]L>F]P +M86Y^3`C^```H`````$DH```!`@``````(``````````````````````````` +M`````````````````````````.X0```!`````````````````````````!$` +M``````")3%I/``T*&@H0,"!@"4`!!0,```$``(&T4("O>``````+=&5S=%]L +M>F]P86]^30C_```H`````$DH```!`@``````(``````````````````````` +M`````````````````````````````.X0```!```````````````````````` +M`!$```````")3%I/``T*&@H0,"!@"4`!!0,```$``(&T4("O>``````+=&5S +M=%]L>F]P87!^3@D````H`````$DH```!`@``````(``````````````````` +M`````````````````````````````````.X0```!```````````````````` +M`````!$```````")3%I/``T*&@H0,"!@"4`!!0,```$``(&T4("O>``````+ +M=&5S=%]L>F]P87%^3PD!```H`````$DH```!`@``````(``````````````` +M`````````````````````````````````````.X0```!```````````````` +M`````````!$```````")3%I/``T*&@H0,"!@"4`!!0,```$``(&T4("O>``` +M```+=&5S=%]L>F]P87)^4`D"```H`````$DH```!`@``````(``````````` +M`````````````````````````````````````````.X0```!```````````` +M`````````````!$```````")3%I/``T*&@H0,"!@"4`!!0,```$``(&T4("O +M>``````+=&5S=%]L>F]P87-^40D#```H`````$DH```!`@``````(``````` +M`````````````````````````````````````````````.X0```!```````` +M`````````````````!$```````")3%I/``T*&@H0,"!@"4`!!0,```$``(&T +M4("O>``````+=&5S=%]L>F]P871^4@D$```H`````$DH```!`@``````(``` +M`````````````````````````````````````````````````.X0```!```` +M`````````````````````!$```````")3%I/``T*&@H0,"!@"4`!!0,```$` +M`(&T4("O>``````+=&5S=%]L>F]P875^4PD%```H`````$DH```!`@`````` +M(````````````````````````````````````````````````````.X0```! +M`````````````````````````!$```````")3%I/``T*&@H0,"!@"4`!!0,` +M``$``(&T4("O>``````+=&5S=%]L>F]P879^5`D&```H`````$DH```!`@`` +M````(````````````````````````````````````````````````````.X0 +M```!`````````````````````````!$```````")3%I/``T*&@H0,"!@"4`! +M!0,```$``(&T4("O>``````+=&5S=%]L>F]P87=^50D'```H`````$DH```! +M`@``````(``````````````````````````````````````````````````` +M`.X0```!`````````````````````````!$```````")3%I/``T*&@H0,"!@ +M"4`!!0,```$``(&T4("O>``````+=&5S=%]L>F]P87A^5@D(```H`````$DH +M```!`@``````(``````````````````````````````````````````````` +M`````.X0```!`````````````````````````!$```````")3%I/``T*&@H0 +M,"!@"4`!!0,```$``(&T4("O>``````+=&5S=%]L>F]P87E^5PD)```H```` +M`$DH```!`@``````(``````````````````````````````````````````` +M`````````.X0```!`````````````````````````!$```````")3%I/``T* +M&@H0,"!@"4`!!0,```$``(&T4("O>``````+=&5S=%]L>F]P87I^6`D*```F +M`````+OSXAG6`@``````(``````````````````````````````````````` +M]Q```F9I;&4S(#[\=PLP,#`V-C0@`#`P,3<U,"H=`#"@```&,C,@,3(P-#`Q +M,30U-C,@,#$Q,S8V`"`P(#Y<`I@+"'5S=&%R`#`P8W5EG`$V$``^?`"D&7`; +M90$@-A@!(&]<``EC;VYT96YT<R!O9B".02X*(&^(`B```````#`\`@X````` +4`````````````````!$````````` +` +end diff --git a/contrib/libarchive/libarchive/test/test_read_compress_program.c b/contrib/libarchive/libarchive/test/test_read_filter_program.c index 3e98db8..a27589a 100644 --- a/contrib/libarchive/libarchive/test/test_read_compress_program.c +++ b/contrib/libarchive/libarchive/test/test_read_filter_program.c @@ -1,5 +1,6 @@ /*- * Copyright (c) 2003-2007 Tim Kientzle + * Copyright (c) 2012 Michhiro NAKAJIMA * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -23,7 +24,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); +__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', @@ -32,7 +33,7 @@ static unsigned char archive[] = { 148,'d',230,226,'U','G','H',30,234,15,'8','=',10,'F',193,'(',24,5,131,28, 0,0,29,172,5,240,0,6,0,0}; -DEFINE_TEST(test_read_compress_program) +DEFINE_TEST(test_read_filter_program) { int r; struct archive_entry *ae; @@ -60,25 +61,23 @@ DEFINE_TEST(test_read_compress_program) /* * If we have "gzip -d", try using that. */ - if (!canGunzip()) { - skipping("Can't run gunzip program on this platform"); + if (!canGzip()) { + skipping("Can't run gzip program on this platform"); return; } assert((a = archive_read_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_none(a)); assertEqualIntA(a, ARCHIVE_OK, - archive_read_support_filter_program(a, "gunzip")); + archive_read_support_filter_program(a, "gzip -d")); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, archive, sizeof(archive))); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_PROGRAM); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_PROGRAM); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR); assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); assertEqualInt(ARCHIVE_OK, archive_read_free(a)); } - - diff --git a/contrib/libarchive/libarchive/test/test_read_filter_program_signature.c b/contrib/libarchive/libarchive/test/test_read_filter_program_signature.c new file mode 100644 index 0000000..110addb --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_filter_program_signature.c @@ -0,0 +1,103 @@ +/*- + * Copyright (c) 2003-2007 Tim Kientzle + * Copyright (c) 2012 Michhiro NAKAJIMA + * 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" +__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', +0,210,134,230,166,6,200,'4',28,'(',24,26,24,27,155,24,152,24,154,27,155,')', +24,24,26,152,154,25,'2','(',152,210,193,'m',12,165,197,'%',137,'E','@',167, +148,'d',230,226,'U','G','H',30,234,15,'8','=',10,'F',193,'(',24,5,131,28, +0,0,29,172,5,240,0,6,0,0}; +#define signature archive +#define badsignature (&archive[1]) +#define signature_len 4 + +DEFINE_TEST(test_read_filter_program_signature) +{ + int r; + struct archive_entry *ae; + struct archive *a; + + /* + * First, test handling when a non-existent compression + * program is requested. + */ + assert((a = archive_read_new()) != NULL); + r = archive_read_support_filter_program(a, "nonexistent"); + if (r == ARCHIVE_FATAL) { + skipping("archive_read_support_filter_program() " + "unsupported on this platform"); + return; + } + assertEqualIntA(a, ARCHIVE_OK, r); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_FATAL, + archive_read_open_memory(a, archive, sizeof(archive))); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + + /* + * If we have "gzip -d", try using that. + */ + if (!canGzip()) { + skipping("Can't run gzip program on this platform"); + return; + } + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_support_filter_none(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_support_filter_program_signature(a, "gzip -d", + signature, signature_len)); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_open_memory(a, archive, sizeof(archive))); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_next_header(a, &ae)); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_PROGRAM); + assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + + /* + * Test bad signature. + */ + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_support_filter_none(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_support_filter_program_signature(a, "gunzip", + badsignature, signature_len)); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_FATAL, + archive_read_open_memory(a, archive, sizeof(archive))); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} diff --git a/contrib/libarchive/libarchive/test/test_read_uu.c b/contrib/libarchive/libarchive/test/test_read_filter_uudecode.c index b5415e0..ac2eff5 100644 --- a/contrib/libarchive/libarchive/test/test_read_uu.c +++ b/contrib/libarchive/libarchive/test/test_read_filter_uudecode.c @@ -24,7 +24,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); +__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" @@ -125,11 +125,11 @@ test_read_uu_sub(const char *uudata, size_t uusize, int no_nl) read_open_memory(a, buff, size, 2)); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); - failure("archive_compression_name(a)=\"%s\"" + failure("archive_filter_name(a, 0)=\"%s\"" "extra %d, NL %d", - archive_compression_name(a), extra, !no_nl); - assertEqualInt(archive_compression(a), - ARCHIVE_COMPRESSION_COMPRESS); + archive_filter_name(a, 0), extra, !no_nl); + assertEqualInt(archive_filter_code(a, 0), + ARCHIVE_FILTER_COMPRESS); failure("archive_format_name(a)=\"%s\"" "extra %d, NL %d", archive_format_name(a), extra, !no_nl); @@ -159,17 +159,20 @@ test_read_uu_sub(const char *uudata, size_t uusize, int no_nl) free(buff); } -DEFINE_TEST(test_read_uu) +DEFINE_TEST(test_read_filter_uudecode) { /* Read the traditional uuencoded data. */ test_read_uu_sub(archive, sizeof(archive)-1, 0); - /* Read the Base64 uuencoded data. */ - test_read_uu_sub(archive64, sizeof(archive64)-1, 0); /* Read the traditional uuencoded data with very long line extra * data in front of it. */ test_read_uu_sub(archive, sizeof(archive)-1, 1); +} + +DEFINE_TEST(test_read_filter_uudecode_base64) +{ + /* Read the Base64 uuencoded data. */ + test_read_uu_sub(archive64, sizeof(archive64)-1, 0); /* Read the Base64 uuencoded data with very long line extra data * in front of it. */ test_read_uu_sub(archive64, sizeof(archive64)-1, 1); } - diff --git a/contrib/libarchive/libarchive/test/test_read_format_7zip.c b/contrib/libarchive/libarchive/test/test_read_format_7zip.c index 043ef9f..62657a8 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_7zip.c +++ b/contrib/libarchive/libarchive/test/test_read_format_7zip.c @@ -59,7 +59,7 @@ test_copy() assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a)); /* Close the archive. */ @@ -90,7 +90,7 @@ test_empty_archive() assertEqualInt(0, archive_file_count(a)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a)); /* Close the archive. */ @@ -129,7 +129,7 @@ test_empty_file() assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a)); /* Close the archive. */ @@ -170,7 +170,7 @@ test_plain_header(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a)); /* Close the archive. */ @@ -245,7 +245,7 @@ test_extract_all_files(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a)); /* Close the archive. */ @@ -314,7 +314,7 @@ test_extract_last_file(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a)); /* Close the archive. */ @@ -427,7 +427,7 @@ test_extract_all_files2(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a)); /* Close the archive. */ @@ -481,7 +481,7 @@ test_delta_lzma(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a)); /* Close the archive. */ @@ -535,7 +535,7 @@ test_bcj(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a)); /* Close the archive. */ @@ -590,7 +590,7 @@ test_ppmd() assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a)); /* Close the archive. */ @@ -635,7 +635,7 @@ test_symname() assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a)); /* Close the archive. */ @@ -648,13 +648,24 @@ DEFINE_TEST(test_read_format_7zip) { struct archive *a; - test_copy(); - test_empty_archive(); - test_empty_file(); - test_ppmd(); - test_bcj("test_read_format_7zip_bcj_copy.7z"); - test_bcj("test_read_format_7zip_bcj2_copy_1.7z"); - test_bcj("test_read_format_7zip_bcj2_copy_2.7z"); + assert((a = archive_read_new()) != NULL); + + /* Extracting with liblzma */ + if (ARCHIVE_OK != archive_read_support_filter_xz(a)) { + skipping("7zip:lzma decoding is not supported on this platform"); + } else { + test_symname(); + test_extract_all_files("test_read_format_7zip_copy_2.7z"); + test_extract_last_file("test_read_format_7zip_copy_2.7z"); + test_extract_all_files2("test_read_format_7zip_lzma1_lzma2.7z"); + test_bcj("test_read_format_7zip_bcj2_copy_lzma.7z"); + } + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} + +DEFINE_TEST(test_read_format_7zip_bzip2) +{ + struct archive *a; assert((a = archive_read_new()) != NULL); @@ -667,37 +678,83 @@ DEFINE_TEST(test_read_format_7zip) test_bcj("test_read_format_7zip_bcj2_bzip2.7z"); } + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} + +DEFINE_TEST(test_read_format_7zip_copy) +{ + test_copy(); + test_bcj("test_read_format_7zip_bcj_copy.7z"); + test_bcj("test_read_format_7zip_bcj2_copy_1.7z"); + test_bcj("test_read_format_7zip_bcj2_copy_2.7z"); +} + +DEFINE_TEST(test_read_format_7zip_deflate) +{ + struct archive *a; + + assert((a = archive_read_new()) != NULL); + /* Extracting with libz */ if (ARCHIVE_OK != archive_read_support_filter_gzip(a)) { - skipping("7zip:deflate decoding is not supported on this platform"); + skipping( + "7zip:deflate decoding is not supported on this platform"); } else { test_plain_header("test_read_format_7zip_deflate.7z"); test_bcj("test_read_format_7zip_bcj_deflate.7z"); test_bcj("test_read_format_7zip_bcj2_deflate.7z"); } + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} + +DEFINE_TEST(test_read_format_7zip_empty) +{ + test_empty_archive(); + test_empty_file(); +} + +DEFINE_TEST(test_read_format_7zip_lzma1) +{ + struct archive *a; + + assert((a = archive_read_new()) != NULL); + /* Extracting with liblzma */ if (ARCHIVE_OK != archive_read_support_filter_xz(a)) { skipping("7zip:lzma decoding is not supported on this platform"); } else { - test_symname(); test_plain_header("test_read_format_7zip_lzma1.7z"); - test_plain_header("test_read_format_7zip_lzma2.7z"); - test_extract_all_files("test_read_format_7zip_copy_2.7z"); test_extract_all_files("test_read_format_7zip_lzma1_2.7z"); - test_extract_last_file("test_read_format_7zip_copy_2.7z"); test_extract_last_file("test_read_format_7zip_lzma1_2.7z"); - test_extract_all_files2("test_read_format_7zip_lzma1_lzma2.7z"); test_bcj("test_read_format_7zip_bcj_lzma1.7z"); - test_bcj("test_read_format_7zip_bcj_lzma2.7z"); - test_bcj("test_read_format_7zip_bcj2_copy_lzma.7z"); test_bcj("test_read_format_7zip_bcj2_lzma1_1.7z"); test_bcj("test_read_format_7zip_bcj2_lzma1_2.7z"); + test_delta_lzma("test_read_format_7zip_delta_lzma1.7z"); + } + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} + +DEFINE_TEST(test_read_format_7zip_lzma2) +{ + struct archive *a; + + assert((a = archive_read_new()) != NULL); + + /* Extracting with liblzma */ + if (ARCHIVE_OK != archive_read_support_filter_xz(a)) { + skipping("7zip:lzma decoding is not supported on this platform"); + } else { + test_plain_header("test_read_format_7zip_lzma2.7z"); + test_bcj("test_read_format_7zip_bcj_lzma2.7z"); test_bcj("test_read_format_7zip_bcj2_lzma2_1.7z"); test_bcj("test_read_format_7zip_bcj2_lzma2_2.7z"); - test_delta_lzma("test_read_format_7zip_delta_lzma1.7z"); test_delta_lzma("test_read_format_7zip_delta_lzma2.7z"); } assertEqualInt(ARCHIVE_OK, archive_read_free(a)); } +DEFINE_TEST(test_read_format_7zip_ppmd) +{ + test_ppmd(); +} diff --git a/contrib/libarchive/libarchive/test/test_read_format_ar.c b/contrib/libarchive/libarchive/test/test_read_format_ar.c index 5d50d7c..4e88fe2 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_ar.c +++ b/contrib/libarchive/libarchive/test/test_read_format_ar.c @@ -40,7 +40,7 @@ DEFINE_TEST(test_read_format_ar) 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_file(a, reffile, 7)); + assertA(0 == archive_read_open_filename(a, reffile, 7)); /* Filename table. */ assertA(0 == archive_read_next_header(a, &ae)); diff --git a/contrib/libarchive/libarchive/test/test_read_format_cab.c b/contrib/libarchive/libarchive/test/test_read_format_cab.c index 004d6e8..e09d46d 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_cab.c +++ b/contrib/libarchive/libarchive/test/test_read_format_cab.c @@ -260,7 +260,7 @@ verify(const char *refname, enum comp_type comp) } /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_CAB, archive_format(a)); /* Close the archive. */ @@ -280,6 +280,11 @@ verify2(const char *refname, enum comp_type comp) char buff[128]; char zero[128]; + if (comp == MSZIP && !libz_enabled) { + skipping("Skipping CAB format(MSZIP) check for %s", + refname); + return; + } memset(zero, 0, sizeof(zero)); extract_reference_file(refname); assert((a = archive_read_new()) != NULL); @@ -316,7 +321,7 @@ verify2(const char *refname, enum comp_type comp) } /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_CAB, archive_format(a)); /* Close the archive. */ @@ -363,7 +368,7 @@ verify3(const char *refname, enum comp_type comp) } /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_CAB, archive_format(a)); /* Close the archive. */ 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 54374de..f148590 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_cab_filename.c +++ b/contrib/libarchive/libarchive/test/test_read_format_cab_filename.c @@ -71,7 +71,7 @@ test_read_format_cab_filename_CP932_eucJP(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_CAB, archive_format(a)); /* Close the archive. */ @@ -145,7 +145,7 @@ test_read_format_cab_filename_CP932_UTF8(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_CAB, archive_format(a)); /* Close the archive. */ 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 7aec833..db6003f 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_cpio_afio.c +++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_afio.c @@ -84,7 +84,8 @@ DEFINE_TEST(test_read_format_cpio_afio) /* The default block size of afio is 5120. we simulate it */ size = (sizeof(archive) + 5120 -1 / 5120) * 5120; - if (!assert((p = malloc(size)) != NULL)) + assert((p = malloc(size)) != NULL); + if (p == NULL) return; memset(p, 0, size); memcpy(p, archive, sizeof(archive)); @@ -97,7 +98,7 @@ DEFINE_TEST(test_read_format_cpio_afio) */ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); assertEqualInt(17, archive_entry_size(ae)); - assertA(archive_compression(a) == ARCHIVE_COMPRESSION_NONE); + assertA(archive_filter_code(a, 0) == ARCHIVE_FILTER_NONE); assertA(archive_format(a) == ARCHIVE_FORMAT_CPIO_POSIX); /* * Second entry is afio large ASCII format. @@ -106,7 +107,7 @@ DEFINE_TEST(test_read_format_cpio_afio) assertEqualInt(17, archive_entry_size(ae)); if (uid_size() > 4) assertEqualInt(65536, archive_entry_uid(ae)); - assertA(archive_compression(a) == ARCHIVE_COMPRESSION_NONE); + assertA(archive_filter_code(a, 0) == ARCHIVE_FILTER_NONE); assertA(archive_format(a) == ARCHIVE_FORMAT_CPIO_AFIO_LARGE); assertEqualInt(ARCHIVE_OK, archive_read_close(a)); assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 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 c4e21d3..aa2f849 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin.c +++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin.c @@ -52,7 +52,7 @@ DEFINE_TEST(test_read_format_cpio_bin) assertEqualIntA(a, 0, archive_read_open_memory(a, archive, sizeof(archive))); assertEqualIntA(a, 0, archive_read_next_header(a, &ae)); assertEqualInt(1, archive_file_count(a)); - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_BIN_LE, archive_format(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 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 43ffca8..057d3d6 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 @@ -44,10 +44,10 @@ DEFINE_TEST(test_read_format_cpio_bin_Z) archive_read_open_memory(a, archive, sizeof(archive))); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); assertEqualInt(1, archive_file_count(a)); - failure("archive_compression_name(a)=\"%s\"", - archive_compression_name(a)); - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_COMPRESS); - assertEqualString(archive_compression_name(a), "compress (.Z)"); + failure("archive_filter_name(a, 0)=\"%s\"", + archive_filter_name(a, 0)); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS); + assertEqualString(archive_filter_name(a, 0), "compress (.Z)"); failure("archive_format_name(a)=\"%s\"", archive_format_name(a)); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_CPIO_BIN_LE); 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 fb161de..95ec2e3 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 @@ -45,7 +45,7 @@ DEFINE_TEST(test_read_format_cpio_bin_be) assertEqualInt(archive_entry_uid(ae), 1000); assertEqualInt(archive_entry_gid(ae), 0); - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_NONE); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_NONE); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_CPIO_BIN_BE); assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); assertEqualIntA(a, ARCHIVE_OK, archive_read_close(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 6a821f5..83ad8e1 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 @@ -49,7 +49,7 @@ DEFINE_TEST(test_read_format_cpio_bin_bz2) assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, archive, sizeof(archive))); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); - assert(archive_compression(a) == ARCHIVE_COMPRESSION_BZIP2); + assert(archive_filter_code(a, 0) == ARCHIVE_FILTER_BZIP2); assert(archive_format(a) == ARCHIVE_FORMAT_CPIO_BIN_LE); assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 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 8915edd..168bbe4 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 @@ -51,8 +51,8 @@ DEFINE_TEST(test_read_format_cpio_bin_gz) assertEqualInt(ARCHIVE_OK, archive_read_open_memory(a, archive, sizeof(archive))); assertEqualInt(ARCHIVE_OK, archive_read_next_header(a, &ae)); - assertEqualInt(archive_compression(a), - ARCHIVE_COMPRESSION_GZIP); + assertEqualInt(archive_filter_code(a, 0), + ARCHIVE_FILTER_GZIP); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_CPIO_BIN_LE); assertEqualInt(ARCHIVE_OK, archive_read_close(a)); assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 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 16effb9..4e3fb58 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 @@ -53,7 +53,7 @@ DEFINE_TEST(test_read_format_cpio_bin_lzip) assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, archive, sizeof(archive))); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_LZIP); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_LZIP); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_CPIO_BIN_LE); assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 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 8871e27..0817d98 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 @@ -52,7 +52,7 @@ DEFINE_TEST(test_read_format_cpio_bin_lzma) assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, archive, sizeof(archive))); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_LZMA); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_LZMA); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_CPIO_BIN_LE); assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 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 70d80b7..4138375 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 @@ -62,7 +62,7 @@ DEFINE_TEST(test_read_format_cpio_bin_xz) assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, archive, sizeof(archive))); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_XZ); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_XZ); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_CPIO_BIN_LE); assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 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 e347b50..d0c7c7a 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_cpio_filename.c +++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_filename.c @@ -68,7 +68,7 @@ test_read_format_cpio_filename_eucJP_UTF8(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a)); /* Close the archive. */ @@ -119,7 +119,7 @@ test_read_format_cpio_filename_UTF8_eucJP(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a)); /* Close the archive. */ @@ -166,7 +166,7 @@ test_read_format_cpio_filename_UTF8_UTF8_jp(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a)); /* Close the archive. */ @@ -217,7 +217,7 @@ test_read_format_cpio_filename_CP866_KOI8R(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a)); /* Close the archive. */ @@ -268,7 +268,7 @@ test_read_format_cpio_filename_CP866_UTF8(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a)); /* Close the archive. */ @@ -320,7 +320,7 @@ test_read_format_cpio_filename_KOI8R_CP866(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a)); /* Close the archive. */ @@ -371,7 +371,7 @@ test_read_format_cpio_filename_KOI8R_UTF8(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a)); /* Close the archive. */ @@ -423,7 +423,7 @@ test_read_format_cpio_filename_UTF8_KOI8R(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a)); /* Close the archive. */ @@ -475,7 +475,7 @@ test_read_format_cpio_filename_UTF8_CP866(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a)); /* Close the archive. */ @@ -521,7 +521,7 @@ test_read_format_cpio_filename_UTF8_UTF8_ru(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a)); /* Close the archive. */ @@ -570,7 +570,7 @@ test_read_format_cpio_filename_eucJP_CP932(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a)); /* Close the archive. */ @@ -621,7 +621,7 @@ test_read_format_cpio_filename_UTF8_CP932(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a)); /* Close the archive. */ @@ -673,7 +673,7 @@ test_read_format_cpio_filename_CP866_CP1251(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a)); /* Close the archive. */ @@ -725,7 +725,7 @@ test_read_format_cpio_filename_CP866_CP1251_win(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a)); /* Close the archive. */ @@ -776,7 +776,7 @@ test_read_format_cpio_filename_KOI8R_CP1251(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a)); /* Close the archive. */ @@ -828,7 +828,7 @@ test_read_format_cpio_filename_UTF8_CP1251(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a)); /* Close the archive. */ 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 c7d1db7..3c9e349 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_cpio_odc.c +++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_odc.c @@ -55,7 +55,7 @@ DEFINE_TEST(test_read_format_cpio_odc) assertA(0 == archive_read_support_format_all(a)); assertA(0 == archive_read_open_memory(a, archive, sizeof(archive))); assertEqualIntA(a, 0, archive_read_next_header(a, &ae)); - assertA(archive_compression(a) == ARCHIVE_COMPRESSION_NONE); + assertA(archive_filter_code(a, 0) == ARCHIVE_FILTER_NONE); assertA(archive_format(a) == ARCHIVE_FORMAT_CPIO_POSIX); assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); assertEqualInt(ARCHIVE_OK, archive_read_free(a)); diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_bzip2_rpm.c b/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_bzip2_rpm.c index b354b8c..d069da3 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_bzip2_rpm.c +++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_bzip2_rpm.c @@ -117,8 +117,8 @@ DEFINE_TEST(test_read_format_cpio_svr4_bzip2_rpm) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify that the format detection worked. */ - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_BZIP2); - assertEqualString(archive_compression_name(a), "bzip2"); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_BZIP2); + assertEqualString(archive_filter_name(a, 0), "bzip2"); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_CPIO_SVR4_NOCRC); assertEqualInt(ARCHIVE_OK, archive_read_close(a)); 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 1138c5b..f5b4c25 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 @@ -50,8 +50,8 @@ DEFINE_TEST(test_read_format_cpio_svr4_gzip) assertEqualInt(ARCHIVE_OK, archive_read_open_memory(a, archive, sizeof(archive))); assertEqualInt(ARCHIVE_OK, archive_read_next_header(a, &ae)); - assertEqualInt(archive_compression(a), - ARCHIVE_COMPRESSION_GZIP); + assertEqualInt(archive_filter_code(a, 0), + ARCHIVE_FILTER_GZIP); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_CPIO_SVR4_NOCRC); assertEqualInt(ARCHIVE_OK, archive_read_close(a)); diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_gzip_rpm.c b/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_gzip_rpm.c index 582096b..eccde65 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_gzip_rpm.c +++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_gzip_rpm.c @@ -117,8 +117,8 @@ DEFINE_TEST(test_read_format_cpio_svr4_gzip_rpm) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify that the format detection worked. */ - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_GZIP); - assertEqualString(archive_compression_name(a), "gzip"); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_GZIP); + assertEqualString(archive_filter_name(a, 0), "gzip"); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_CPIO_SVR4_NOCRC); assertEqualInt(ARCHIVE_OK, archive_read_close(a)); 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 9afbc3a..14ce8fd 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 @@ -46,9 +46,9 @@ DEFINE_TEST(test_read_format_cpio_svr4c_Z) assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, archive, sizeof(archive))); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); - failure("archive_compression_name(a)=\"%s\"", - archive_compression_name(a)); - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_COMPRESS); + failure("archive_filter_name(a, 0)=\"%s\"", + archive_filter_name(a, 0)); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS); failure("archive_format_name(a)=\"%s\"", archive_format_name(a)); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_CPIO_SVR4_CRC); assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); diff --git a/contrib/libarchive/libarchive/test/test_read_format_empty.c b/contrib/libarchive/libarchive/test/test_read_format_empty.c index 0598482..aa68de1 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_empty.c +++ b/contrib/libarchive/libarchive/test/test_read_format_empty.c @@ -36,7 +36,7 @@ DEFINE_TEST(test_read_format_empty) assertA(0 == archive_read_support_format_all(a)); assertA(0 == archive_read_open_memory(a, archive, 0)); assertA(ARCHIVE_EOF == archive_read_next_header(a, &ae)); - assertA(archive_compression(a) == ARCHIVE_COMPRESSION_NONE); + assertA(archive_filter_code(a, 0) == ARCHIVE_FILTER_NONE); assertA(archive_format(a) == ARCHIVE_FORMAT_EMPTY); assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 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 7842e45..4eba078 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_gtar_gz.c +++ b/contrib/libarchive/libarchive/test/test_read_format_gtar_gz.c @@ -51,8 +51,8 @@ DEFINE_TEST(test_read_format_gtar_gz) archive_read_open_memory(a, archive, sizeof(archive))); assertEqualInt(ARCHIVE_OK, archive_read_next_header(a, &ae)); assertEqualInt(1, archive_file_count(a)); - assertEqualInt(archive_compression(a), - ARCHIVE_COMPRESSION_GZIP); + assertEqualInt(archive_filter_code(a, 0), + ARCHIVE_FILTER_GZIP); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_GNUTAR); assertEqualInt(ARCHIVE_OK, archive_read_close(a)); assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 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 4473957..ca12e5c 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_gtar_lzma.c +++ b/contrib/libarchive/libarchive/test/test_read_format_gtar_lzma.c @@ -64,7 +64,7 @@ DEFINE_TEST(test_read_format_gtar_lzma) } assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_LZMA); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_LZMA); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_GNUTAR); assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); finish: 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 7cbbf12..653577b 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_iso_Z.c +++ b/contrib/libarchive/libarchive/test/test_read_format_iso_Z.c @@ -44,8 +44,8 @@ test1(void) assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); assertEqualInt(1, archive_file_count(a)); - assertEqualInt(archive_compression(a), - ARCHIVE_COMPRESSION_COMPRESS); + assertEqualInt(archive_filter_code(a, 0), + ARCHIVE_FILTER_COMPRESS); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_ISO9660); assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); assertEqualInt(ARCHIVE_OK, archive_read_free(a)); @@ -85,8 +85,8 @@ test2(void) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); assertEqualInt(5, archive_file_count(a)); - assertEqualInt(archive_compression(a), - ARCHIVE_COMPRESSION_COMPRESS); + assertEqualInt(archive_filter_code(a, 0), + ARCHIVE_FILTER_COMPRESS); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_ISO9660); assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 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 23acce4..445216d 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 @@ -83,7 +83,7 @@ DEFINE_TEST(test_read_format_iso_multi_extent) assertEqualInt(ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_COMPRESS); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_ISO9660_ROCKRIDGE); /* Close the archive. */ 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 bb53e3b..1350260 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_iso_xorriso.c +++ b/contrib/libarchive/libarchive/test/test_read_format_iso_xorriso.c @@ -202,7 +202,7 @@ DEFINE_TEST(test_read_format_iso_xorriso) assertEqualInt(ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_COMPRESS); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_ISO9660_ROCKRIDGE); /* Close the archive. */ 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 3617601..fcd6e73 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_isojoliet_bz2.c +++ b/contrib/libarchive/libarchive/test/test_read_format_isojoliet_bz2.c @@ -126,7 +126,7 @@ DEFINE_TEST(test_read_format_isojoliet_bz2) assertEqualInt(ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_COMPRESS); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS); /* Close the archive. */ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); 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 f5486ff..01c602e 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_isojoliet_long.c +++ b/contrib/libarchive/libarchive/test/test_read_format_isojoliet_long.c @@ -132,7 +132,7 @@ DEFINE_TEST(test_read_format_isojoliet_long) assertEqualInt(ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_COMPRESS); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS); /* Close the archive. */ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); 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 3d43a6e..231fb5d 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_isojoliet_rr.c +++ b/contrib/libarchive/libarchive/test/test_read_format_isojoliet_rr.c @@ -150,7 +150,7 @@ DEFINE_TEST(test_read_format_isojoliet_rr) assertEqualInt(ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_COMPRESS); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_ISO9660_ROCKRIDGE); /* Close the archive. */ 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 82c5ab1..8fa974b 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_isojoliet_versioned.c +++ b/contrib/libarchive/libarchive/test/test_read_format_isojoliet_versioned.c @@ -74,7 +74,7 @@ DEFINE_TEST(test_read_format_isojoliet_versioned) assertEqualInt(ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_COMPRESS); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS); /* Close the archive. */ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); 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 a7ba277..34711fd 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_isorr_bz2.c +++ b/contrib/libarchive/libarchive/test/test_read_format_isorr_bz2.c @@ -192,7 +192,7 @@ DEFINE_TEST(test_read_format_isorr_bz2) assertEqualInt(ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_COMPRESS); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_ISO9660_ROCKRIDGE); /* Close the archive. */ 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 6f42a4c..4fb057a 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_isorr_ce.c +++ b/contrib/libarchive/libarchive/test/test_read_format_isorr_ce.c @@ -212,7 +212,7 @@ DEFINE_TEST(test_read_format_isorr_ce) assertEqualInt(ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_COMPRESS); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_ISO9660_ROCKRIDGE); /* Close the archive. */ 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 630a96e..2de86be4 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 @@ -193,7 +193,7 @@ DEFINE_TEST(test_read_format_isorr_new_bz2) assertEqualInt(ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_COMPRESS); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_ISO9660_ROCKRIDGE); /* Close the archive. */ 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 3d37fdc..e4367ea 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 @@ -259,7 +259,7 @@ DEFINE_TEST(test_read_format_isorr_rr_moved) assertEqualInt(ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_COMPRESS); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_ISO9660_ROCKRIDGE); /* Close the archive. */ 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 61419e4..09ec50e 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_isozisofs_bz2.c +++ b/contrib/libarchive/libarchive/test/test_read_format_isozisofs_bz2.c @@ -176,7 +176,7 @@ DEFINE_TEST(test_read_format_isozisofs_bz2) assertEqualInt(ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_COMPRESS); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_ISO9660_ROCKRIDGE); /* Close the archive. */ diff --git a/contrib/libarchive/libarchive/test/test_read_format_lha.c b/contrib/libarchive/libarchive/test/test_read_format_lha.c index a01386e..36c5d08 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_lha.c +++ b/contrib/libarchive/libarchive/test/test_read_format_lha.c @@ -247,7 +247,7 @@ verify(const char *refname, int posix) } /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_LHA, archive_format(a)); /* Close the archive. */ 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 e39dfac..67b6f36 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_lha_filename.c +++ b/contrib/libarchive/libarchive/test/test_read_format_lha_filename.c @@ -79,7 +79,7 @@ test_read_format_lha_filename_CP932_eucJP(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_LHA, archive_format(a)); /* Close the archive. */ @@ -139,7 +139,7 @@ test_read_format_lha_filename_CP932_UTF8(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_LHA, archive_format(a)); /* Close the archive. */ @@ -189,7 +189,7 @@ test_read_format_lha_filename_CP932_Windows(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_LHA, archive_format(a)); /* Close the archive. */ diff --git a/contrib/libarchive/libarchive/test/test_read_format_mtree.c b/contrib/libarchive/libarchive/test/test_read_format_mtree.c index 1185bd2..4e389bb 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_mtree.c +++ b/contrib/libarchive/libarchive/test/test_read_format_mtree.c @@ -1,5 +1,6 @@ /*- * Copyright (c) 2003-2007 Tim Kientzle + * Copyright (c) 2011-2012 Michihiro NAKAJIMA * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -37,7 +38,8 @@ test_read_format_mtree1(void) * without relying on overflow. This assumes that long long * is at least 64 bits. */ static const long long max_int64 = ((((long long)1) << 62) - 1) + (((long long)1) << 62); - time_t min_time, t; + time_t min_time; + volatile time_t t; extract_reference_file(reffile); @@ -55,7 +57,8 @@ test_read_format_mtree1(void) archive_read_support_filter_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); - assertEqualIntA(a, ARCHIVE_OK, archive_read_open_file(a, reffile, 11)); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_open_filename(a, reffile, 11)); /* * Read "file", whose data is available on disk. @@ -222,9 +225,147 @@ test_read_format_mtree3(void) assertChdir(".."); } +DEFINE_TEST(test_read_format_mtree) +{ + test_read_format_mtree1(); + test_read_format_mtree2(); + test_read_format_mtree3(); +} -static void -test_read_format_mtree4(void) +DEFINE_TEST(test_read_format_mtree_filenames_only) +{ + static char archive[] = + "/set type=file mode=0644\n" + "./a\n" + "./b\n" + "./c\n" + "./d\n" + "./e\n" + "./f mode=0444\n"; + struct archive_entry *ae; + struct archive *a; + + assertMakeFile("file", 0644, "file contents"); + + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_open_memory(a, archive, sizeof(archive))); + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString(archive_entry_pathname(ae), "./a"); + assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644); + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString(archive_entry_pathname(ae), "./b"); + assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644); + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString(archive_entry_pathname(ae), "./c"); + assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644); + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString(archive_entry_pathname(ae), "./d"); + assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644); + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString(archive_entry_pathname(ae), "./e"); + assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644); + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString(archive_entry_pathname(ae), "./f"); + assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0444); + + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + assertEqualInt(6, archive_file_count(a)); + assertEqualInt(ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} + +DEFINE_TEST(test_read_format_mtree_nochange) +{ + static char archive[] = + "#mtree\n" + "./a type=file mode=0644 time=123\n" + "./b type=file mode=0644 time=234\n" + "./c type=file mode=0644 time=345\n"; + static char archive2[] = + "#mtree\n" + "./a type=file mode=0644 time=123 nochange\n" + "./b type=file mode=0644 time=234\n" + "./c type=file mode=0644 time=345 nochange\n"; + struct archive_entry *ae; + struct archive *a; + + assertMakeFile("a", 0640, "12345"); + assertMakeFile("b", 0664, "123456"); + assertMakeFile("c", 0755, "1234567"); + + /* + * Test 1. Read a mtree archive without `nochange' keyword. + */ + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_open_memory(a, archive, sizeof(archive))); + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString(archive_entry_pathname(ae), "./a"); + assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644); + assertEqualInt(archive_entry_mtime(ae), 123); + assertEqualInt(archive_entry_size(ae), 5); + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString(archive_entry_pathname(ae), "./b"); + assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644); + assertEqualInt(archive_entry_mtime(ae), 234); + assertEqualInt(archive_entry_size(ae), 6); + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString(archive_entry_pathname(ae), "./c"); + assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644); + assertEqualInt(archive_entry_mtime(ae), 345); + assertEqualInt(archive_entry_size(ae), 7); + + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + assertEqualInt(3, archive_file_count(a)); + assertEqualInt(ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + + /* + * Test 2. Read a mtree archive with `nochange' keyword. + */ + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_open_memory(a, archive2, sizeof(archive2))); + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString(archive_entry_pathname(ae), "./a"); +#if !defined(_WIN32) || defined(__CYGWIN__) + assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0640); +#endif + assert(archive_entry_mtime(ae) != 123); + assertEqualInt(archive_entry_size(ae), 5); + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString(archive_entry_pathname(ae), "./b"); + assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644); + assertEqualInt(archive_entry_mtime(ae), 234); + assertEqualInt(archive_entry_size(ae), 6); + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString(archive_entry_pathname(ae), "./c"); +#if !defined(_WIN32) || defined(__CYGWIN__) + assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0755); +#endif + assert(archive_entry_mtime(ae) != 345); + assertEqualInt(archive_entry_size(ae), 7); + + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + assertEqualInt(3, archive_file_count(a)); + assertEqualInt(ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} + +DEFINE_TEST(test_read_format_mtree_nomagic_v1_form) { const char reffile[] = "test_read_format_mtree_nomagic.mtree"; char buff[16]; @@ -232,9 +373,6 @@ test_read_format_mtree4(void) struct archive *a; FILE *f; - assertMakeDir("mtree4", 0777); - assertChdir("mtree4"); - extract_reference_file(reffile); assert((a = archive_read_new()) != NULL); @@ -242,7 +380,8 @@ test_read_format_mtree4(void) archive_read_support_filter_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); - assertEqualIntA(a, ARCHIVE_OK, archive_read_open_file(a, reffile, 11)); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_open_filename(a, reffile, 11)); /* * Read "file", whose data is available on disk. @@ -300,15 +439,142 @@ test_read_format_mtree4(void) assertEqualInt(12, archive_file_count(a)); assertEqualInt(ARCHIVE_OK, archive_read_close(a)); assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} - assertChdir(".."); +/* + * Test for a format that NetBSD mtree -C generates. + */ +DEFINE_TEST(test_read_format_mtree_nomagic_v2_form) +{ + const char reffile[] = "test_read_format_mtree_nomagic2.mtree"; + char buff[16]; + struct archive_entry *ae; + struct archive *a; + FILE *f; + + extract_reference_file(reffile); + + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_open_filename(a, reffile, 11)); + + /* + * Read "file", whose data is available on disk. + */ + f = fopen("file", "wb"); + assert(f != NULL); + assertEqualInt(3, fwrite("hi\n", 1, 3, f)); + fclose(f); + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualInt(archive_format(a), ARCHIVE_FORMAT_MTREE); + assertEqualString(archive_entry_pathname(ae), "./file"); + assertEqualInt(archive_entry_uid(ae), 18); + assertEqualInt(AE_IFREG, archive_entry_filetype(ae)); + assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0123); + assertEqualInt(archive_entry_size(ae), 3); + assertEqualInt(3, archive_read_data(a, buff, 3)); + assertEqualMem(buff, "hi\n", 3); + + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString(archive_entry_pathname(ae), "./dir"); + assertEqualInt(archive_entry_mode(ae), AE_IFDIR | 0755); + + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString(archive_entry_pathname(ae), "./dir/file with space"); + assertEqualInt(archive_entry_uid(ae), 18); + assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644); + + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString(archive_entry_pathname(ae), "./file with space"); + assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644); + + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString(archive_entry_pathname(ae), "./dir2"); + assertEqualInt(archive_entry_mode(ae), AE_IFDIR | 0755); + + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString(archive_entry_pathname(ae), "./dir2/dir3a"); + assertEqualInt(archive_entry_mode(ae), AE_IFDIR | 0755); + + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + assertEqualInt(6, archive_file_count(a)); + assertEqualInt(ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} + +/* + * Test for a format that NetBSD mtree -D generates. + */ +DEFINE_TEST(test_read_format_mtree_nomagic_v2_netbsd_form) +{ + const char reffile[] = "test_read_format_mtree_nomagic3.mtree"; + char buff[16]; + struct archive_entry *ae; + struct archive *a; + FILE *f; + + extract_reference_file(reffile); + + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_open_filename(a, reffile, 11)); + + /* + * Read "file", whose data is available on disk. + */ + f = fopen("file", "wb"); + assert(f != NULL); + assertEqualInt(3, fwrite("hi\n", 1, 3, f)); + fclose(f); + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualInt(archive_format(a), ARCHIVE_FORMAT_MTREE); + assertEqualString(archive_entry_pathname(ae), "./file"); + assertEqualInt(archive_entry_uid(ae), 18); + assertEqualInt(AE_IFREG, archive_entry_filetype(ae)); + assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0123); + assertEqualInt(archive_entry_size(ae), 3); + assertEqualInt(3, archive_read_data(a, buff, 3)); + assertEqualMem(buff, "hi\n", 3); + + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString(archive_entry_pathname(ae), "./dir"); + assertEqualInt(archive_entry_mode(ae), AE_IFDIR | 0755); + + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString(archive_entry_pathname(ae), "./dir/file with space"); + assertEqualInt(archive_entry_uid(ae), 18); + assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644); + + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString(archive_entry_pathname(ae), "./file with space"); + assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644); + + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString(archive_entry_pathname(ae), "./dir2"); + assertEqualInt(archive_entry_mode(ae), AE_IFDIR | 0755); + + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString(archive_entry_pathname(ae), "./dir2/dir3a"); + assertEqualInt(archive_entry_mode(ae), AE_IFDIR | 0755); + + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + assertEqualInt(6, archive_file_count(a)); + assertEqualInt(ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); } /* * We should get a warning if the contents file doesn't exist. */ -static void -test_read_format_mtree5(void) +DEFINE_TEST(test_read_format_mtree_nonexistent_contents_file) { static char archive[] = "#mtree\n" @@ -316,9 +582,6 @@ test_read_format_mtree5(void) struct archive_entry *ae; struct archive *a; - assertMakeDir("mtree5", 0777); - assertChdir("mtree5"); - assert((a = archive_read_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); @@ -335,15 +598,5 @@ test_read_format_mtree5(void) assertEqualInt(1, archive_file_count(a)); assertEqualInt(ARCHIVE_OK, archive_read_close(a)); assertEqualInt(ARCHIVE_OK, archive_read_free(a)); - - assertChdir(".."); } -DEFINE_TEST(test_read_format_mtree) -{ - test_read_format_mtree1(); - test_read_format_mtree2(); - test_read_format_mtree3(); - test_read_format_mtree4(); - test_read_format_mtree5(); -} diff --git a/contrib/libarchive/libarchive/test/test_read_format_mtree_nomagic2.mtree.uu b/contrib/libarchive/libarchive/test/test_read_format_mtree_nomagic2.mtree.uu new file mode 100644 index 0000000..f27fb2b9 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_format_mtree_nomagic2.mtree.uu @@ -0,0 +1,10 @@ +begin 644 test_read_format_mtree_nomagic2.mtree +M(PHC(%1H:7,@9F]R;2!I<R!G96YE<F%T960@8GD@3F5T0E-$(&UT<F5E("U# +M"B,*+B]F:6QE('1Y<&4]9FEL92!U:60],3@@;6]D93TP,3(S('-I>F4],PHN +M+V1I<B!T>7!E/61I<B!M;V1E/3`W-34*+B]D:7(O9FEL95PP-#!W:71H7#`T +M,'-P86-E('1Y<&4]9FEL92!U:60],3@@;6]D93TP-C0T"BXO9FEL95PP-#!W +M:71H7#`T,'-P86-E('1Y<&4]9FEL92!M;V1E/3`V-#0*+B]D:7(R('1Y<&4] +M9&ER(&UO9&4],#<U-0HN+V1I<C(O9&ER,V$@='EP93UD:7(@;6]D93TP-S4U +!"@`` +` +end diff --git a/contrib/libarchive/libarchive/test/test_read_format_mtree_nomagic3.mtree.uu b/contrib/libarchive/libarchive/test/test_read_format_mtree_nomagic3.mtree.uu new file mode 100644 index 0000000..97de341 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_format_mtree_nomagic3.mtree.uu @@ -0,0 +1,10 @@ +begin 644 test_read_format_mtree_nomagic3.mtree +M(PHC(%1H:7,@9F]R;2!I<R!G96YE<F%T960@8GD@3F5T0E-$(&UT<F5E("U$ +M"B,*='EP93UF:6QE('5I9#TQ."!M;V1E/3`Q,C,@<VEZ93TS("XO9FEL90IT +M>7!E/61I<B!M;V1E/3`W-34@+B]D:7(*='EP93UF:6QE(&UO9&4],#8T-"!U +M:60],3@@+B]D:7(O9FEL95PP-#!W:71H7#`T,'-P86-E"G1Y<&4]9FEL92!M +M;V1E/3`V-#0@+B]F:6QE7#`T,'=I=&A<,#0P<W!A8V4*='EP93UD:7(@;6]D +M93TP-S4U("XO9&ER,@IT>7!E/61I<B!M;V1E/3`W-34@+B]D:7(R+V1I<C-A +!"@`` +` +end 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 fefa69f..aec8e25 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_pax_bz2.c +++ b/contrib/libarchive/libarchive/test/test_read_format_pax_bz2.c @@ -58,7 +58,7 @@ DEFINE_TEST(test_read_format_pax_bz2) archive_read_open_memory(a, archive, sizeof(archive))); assertEqualIntA(a,ARCHIVE_OK, archive_read_next_header(a, &ae)); assertEqualInt(1, archive_file_count(a)); - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_BZIP2); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_BZIP2); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE); assertEqualIntA(a,ARCHIVE_OK, archive_read_close(a)); assertEqualInt(ARCHIVE_OK, archive_read_free(a)); diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar.c b/contrib/libarchive/libarchive/test/test_read_format_rar.c index a7c61f9..dc234e0 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_rar.c +++ b/contrib/libarchive/libarchive/test/test_read_format_rar.c @@ -28,8 +28,7 @@ #include <locale.h> -static void -test_basic(void) +DEFINE_TEST(test_read_format_rar_basic) { char buff[64]; const char reffile[] = "test_read_format_rar.rar"; @@ -42,7 +41,7 @@ test_basic(void) 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_file(a, reffile, 10240)); + assertA(0 == archive_read_open_filename(a, reffile, 10240)); /* First header. */ assertA(0 == archive_read_next_header(a, &ae)); @@ -102,8 +101,7 @@ test_basic(void) assertEqualInt(ARCHIVE_OK, archive_read_free(a)); } -static void -test_subblock(void) +DEFINE_TEST(test_read_format_rar_subblock) { char buff[64]; const char reffile[] = "test_read_format_rar_subblock.rar"; @@ -116,7 +114,7 @@ test_subblock(void) 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_file(a, reffile, 10240)); + assertA(0 == archive_read_open_filename(a, reffile, 10240)); /* First header. */ assertA(0 == archive_read_next_header(a, &ae)); @@ -136,8 +134,7 @@ test_subblock(void) assertEqualInt(ARCHIVE_OK, archive_read_free(a)); } -static void -test_noeof(void) +DEFINE_TEST(test_read_format_rar_noeof) { char buff[64]; const char reffile[] = "test_read_format_rar_noeof.rar"; @@ -150,7 +147,7 @@ test_noeof(void) 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_file(a, reffile, 10240)); + assertA(0 == archive_read_open_filename(a, reffile, 10240)); /* First header. */ assertA(0 == archive_read_next_header(a, &ae)); @@ -170,8 +167,7 @@ test_noeof(void) assertEqualInt(ARCHIVE_OK, archive_read_free(a)); } -static void -test_unicode_UTF8(void) +DEFINE_TEST(test_read_format_rar_unicode_UTF8) { char buff[30]; const char reffile[] = "test_read_format_rar_unicode.rar"; @@ -188,7 +184,7 @@ test_unicode_UTF8(void) 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_file(a, reffile, 10240)); + assertA(0 == archive_read_open_filename(a, reffile, 10240)); /* First header. */ assertA(0 == archive_read_next_header(a, &ae)); @@ -296,8 +292,7 @@ test_unicode_UTF8(void) assertEqualInt(ARCHIVE_OK, archive_read_free(a)); } -static void -test_unicode_CP932(void) +DEFINE_TEST(test_read_format_rar_unicode_CP932) { char buff[30]; const char reffile[] = "test_read_format_rar_unicode.rar"; @@ -322,7 +317,7 @@ test_unicode_CP932(void) assertEqualInt(ARCHIVE_OK, archive_read_free(a)); return; } - assertA(0 == archive_read_open_file(a, reffile, 10240)); + assertA(0 == archive_read_open_filename(a, reffile, 10240)); /* First header. */ assertA(0 == archive_read_next_header(a, &ae)); @@ -392,8 +387,7 @@ test_unicode_CP932(void) assertEqualInt(ARCHIVE_OK, archive_read_free(a)); } -static void -test_compress_normal(void) +DEFINE_TEST(test_read_format_rar_compress_normal) { const char reffile[] = "test_read_format_rar_compress_normal.rar"; char file1_buff[20111]; @@ -412,7 +406,7 @@ test_compress_normal(void) 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_file(a, reffile, 10240)); + assertA(0 == archive_read_open_filename(a, reffile, 10240)); /* First header. */ assertA(0 == archive_read_next_header(a, &ae)); @@ -490,8 +484,7 @@ test_compress_normal(void) /* This test is for sufficiently large files that would have been compressed * using multiple lzss blocks. */ -static void -test_multi_lzss_blocks(void) +DEFINE_TEST(test_read_format_rar_multi_lzss_blocks) { const char reffile[] = "test_read_format_rar_multi_lzss_blocks.rar"; const char test_txt[] = "-bottom: 0in\"><BR>\n</P>\n</BODY>\n</HTML>"; @@ -504,7 +497,7 @@ test_multi_lzss_blocks(void) 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_file(a, reffile, 10240)); + assertA(0 == archive_read_open_filename(a, reffile, 10240)); /* First header. */ assertA(0 == archive_read_next_header(a, &ae)); @@ -529,8 +522,7 @@ test_multi_lzss_blocks(void) assertEqualInt(ARCHIVE_OK, archive_read_free(a)); } -static void -test_compress_best(void) +DEFINE_TEST(test_read_format_rar_compress_best) { const char reffile[] = "test_read_format_rar_compress_best.rar"; char file1_buff[20111]; @@ -549,7 +541,7 @@ test_compress_best(void) 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_file(a, reffile, 10240)); + assertA(0 == archive_read_open_filename(a, reffile, 10240)); /* First header. */ assertA(0 == archive_read_next_header(a, &ae)); @@ -627,8 +619,7 @@ test_compress_best(void) /* This is a test for RAR files compressed using a technique where compression * switches back and forth to and from ppmd and lzss decoding. */ -static void -test_ppmd_lzss_conversion(void) +DEFINE_TEST(test_read_format_rar_ppmd_lzss_conversion) { const char reffile[] = "test_read_format_rar_ppmd_lzss_conversion.rar"; const char test_txt[] = "gin-bottom: 0in\"><BR>\n</P>\n</BODY>\n</HTML>"; @@ -641,7 +632,7 @@ test_ppmd_lzss_conversion(void) 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_file(a, reffile, 10240)); + assertA(0 == archive_read_open_filename(a, reffile, 10240)); /* First header. */ assertA(0 == archive_read_next_header(a, &ae)); @@ -667,8 +658,7 @@ test_ppmd_lzss_conversion(void) assertEqualInt(ARCHIVE_OK, archive_read_free(a)); } -static void -test_binary(void) +DEFINE_TEST(test_read_format_rar_binary) { const char reffile[] = "test_read_format_rar_binary_data.rar"; char file1_buff[1048576]; @@ -692,7 +682,7 @@ test_binary(void) 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_file(a, reffile, 10240)); + assertA(0 == archive_read_open_filename(a, reffile, 10240)); /* First header. */ assertA(0 == archive_read_next_header(a, &ae)); @@ -725,8 +715,7 @@ test_binary(void) assertEqualInt(ARCHIVE_OK, archive_read_free(a)); } -static void -test_windows(void) +DEFINE_TEST(test_read_format_rar_windows) { char buff[441]; const char reffile[] = "test_read_format_rar_windows.rar"; @@ -739,7 +728,7 @@ test_windows(void) 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_file(a, reffile, 10240)); + assertA(0 == archive_read_open_filename(a, reffile, 10240)); /* First header. */ assertA(0 == archive_read_next_header(a, &ae)); @@ -798,8 +787,225 @@ test_windows(void) assertEqualInt(ARCHIVE_OK, archive_read_free(a)); } -static void -test_sfx(void) +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 + }; + int file1_size = 241647978, offset = 0; + char buff[64]; + const char file1_test_txt[] = "gin-bottom: 0in\"><BR>\n</P>\n</BODY>\n" + "</HTML>"; + char file2_buff[20111]; + int file2_size = sizeof(file2_buff); + const char file2_test_txt[] = "<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n" + "</BODY>\n" + "</HTML>"; + char file3_buff[20]; + 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)); + assertEqualString("ppmd_lzss_conversion_test.txt", + archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(file1_size, archive_entry_size(ae)); + assertEqualInt(33188, archive_entry_mode(ae)); + while (offset + (int)sizeof(buff) < file1_size) + { + assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff))); + offset += sizeof(buff); + } + assertA(file1_size - offset == + archive_read_data(a, buff, file1_size - offset)); + assertEqualMem(buff, file1_test_txt, file1_size - offset); + + /* Second header. */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("LibarchiveAddingTest.html", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(file2_size, archive_entry_size(ae)); + assertEqualInt(33188, archive_entry_mode(ae)); + assertA(file2_size == archive_read_data(a, file2_buff, file2_size)); + assertEqualMem(&file2_buff[file2_size - sizeof(file2_test_txt) + 1], + file2_test_txt, sizeof(file2_test_txt) - 1); + + /* Third header. */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("testlink", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(0, archive_entry_size(ae)); + assertEqualInt(41471, archive_entry_mode(ae)); + assertEqualString("LibarchiveAddingTest.html", archive_entry_symlink(ae)); + assertEqualIntA(a, 0, archive_read_data(a, file2_buff, 30)); + + /* Fourth header. */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("testdir/test.txt", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(file3_size, archive_entry_size(ae)); + assertEqualInt(33188, archive_entry_mode(ae)); + assertA(file3_size == archive_read_data(a, file3_buff, file3_size)); + assertEqualMem(&file3_buff[file3_size + 1 - sizeof(file3_test_txt)], + file3_test_txt, sizeof(file3_test_txt) - 1); + + /* Fifth header. */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("testdir/LibarchiveAddingTest.html", + archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(file2_size, archive_entry_size(ae)); + assertEqualInt(33188, archive_entry_mode(ae)); + assertA(file2_size == archive_read_data(a, file2_buff, file2_size)); + assertEqualMem(&file2_buff[file2_size - sizeof(file2_test_txt) + 1], + file2_test_txt, sizeof(file2_test_txt) - 1); + + /* Sixth header. */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("testdir", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(0, archive_entry_size(ae)); + assertEqualInt(16877, archive_entry_mode(ae)); + + /* Seventh header. */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("testemptydir", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(0, archive_entry_size(ae)); + assertEqualInt(16877, archive_entry_mode(ae)); + + /* Test EOF */ + assertA(1 == archive_read_next_header(a, &ae)); + assertEqualInt(7, archive_file_count(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} + +DEFINE_TEST(test_read_format_rar_multivolume_skip) +{ + 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; + int file2_size = 20111; + int file3_size = 20; + 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)); + assertEqualString("ppmd_lzss_conversion_test.txt", + archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(file1_size, archive_entry_size(ae)); + assertEqualInt(33188, archive_entry_mode(ae)); + + /* Second header. */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("LibarchiveAddingTest.html", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(file2_size, archive_entry_size(ae)); + assertEqualInt(33188, archive_entry_mode(ae)); + + /* Third header. */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("testlink", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(0, archive_entry_size(ae)); + assertEqualInt(41471, archive_entry_mode(ae)); + assertEqualString("LibarchiveAddingTest.html", archive_entry_symlink(ae)); + + /* Fourth header. */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("testdir/test.txt", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(file3_size, archive_entry_size(ae)); + assertEqualInt(33188, archive_entry_mode(ae)); + + /* Fifth header. */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("testdir/LibarchiveAddingTest.html", + archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(file2_size, archive_entry_size(ae)); + assertEqualInt(33188, archive_entry_mode(ae)); + + /* Sixth header. */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("testdir", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(0, archive_entry_size(ae)); + assertEqualInt(16877, archive_entry_mode(ae)); + + /* Seventh header. */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("testemptydir", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(0, archive_entry_size(ae)); + assertEqualInt(16877, archive_entry_mode(ae)); + + /* Test EOF */ + assertA(1 == archive_read_next_header(a, &ae)); + assertEqualInt(7, archive_file_count(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} + +DEFINE_TEST(test_read_format_rar_sfx) { char buff[441]; const char reffile[] = "test_read_format_rar_sfx.exe"; @@ -812,7 +1018,7 @@ test_sfx(void) 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_file(a, reffile, 10240)); + assertA(0 == archive_read_open_filename(a, reffile, 10240)); /* First header. */ assertA(0 == archive_read_next_header(a, &ae)); @@ -871,18 +1077,2510 @@ test_sfx(void) assertEqualInt(ARCHIVE_OK, archive_read_free(a)); } -DEFINE_TEST(test_read_format_rar) +DEFINE_TEST(test_read_format_rar_multivolume_stored_file) +{ + const char *reffiles[] = + { + "test_rar_multivolume_single_file.part1.rar", + "test_rar_multivolume_single_file.part2.rar", + "test_rar_multivolume_single_file.part3.rar", + NULL + }; + char file_buff[20111]; + int file_size = sizeof(file_buff); + const char file_test_txt[] = "<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n" + "</BODY>\n" + "</HTML>"; + 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)); + assertEqualString("LibarchiveAddingTest.html", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(file_size, archive_entry_size(ae)); + assertEqualInt(33188, archive_entry_mode(ae)); + assertA(file_size == archive_read_data(a, file_buff, file_size)); + assertEqualMem(&file_buff[file_size - sizeof(file_test_txt) + 1], + file_test_txt, sizeof(file_test_txt) - 1); + + /* Test EOF */ + assertA(1 == archive_read_next_header(a, &ae)); + assertEqualInt(1, archive_file_count(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} + +DEFINE_TEST(test_read_format_rar_multivolume_stored_file_skip) { - test_basic(); - test_subblock(); - test_noeof(); - test_unicode_UTF8(); - test_unicode_CP932(); - test_compress_normal(); - test_multi_lzss_blocks(); - test_compress_best(); - test_ppmd_lzss_conversion(); - test_binary(); - test_windows(); - test_sfx(); + const char *reffiles[] = + { + "test_rar_multivolume_single_file.part1.rar", + "test_rar_multivolume_single_file.part2.rar", + "test_rar_multivolume_single_file.part3.rar", + NULL + }; + int file_size = 20111; + 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)); + assertEqualString("LibarchiveAddingTest.html", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(file_size, archive_entry_size(ae)); + assertEqualInt(33188, archive_entry_mode(ae)); + + /* Test EOF */ + assertA(1 == archive_read_next_header(a, &ae)); + assertEqualInt(1, archive_file_count(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} + +DEFINE_TEST(test_read_format_rar_multivolume_seek_data) +{ + const char *reffiles[] = + { + "test_rar_multivolume_single_file.part1.rar", + "test_rar_multivolume_single_file.part2.rar", + "test_rar_multivolume_single_file.part3.rar", + NULL + }; + char buff[64]; + int file_size = 20111; + const char file_test_txt1[] = "d. \n</P>\n<P STYLE=\"margin-bottom: 0in\">" + "<BR>\n</P>\n</BODY>\n</HTML>"; + const char file_test_txt2[] = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4." + "0 Transitional//EN\">\n<"; + const char file_test_txt3[] = "mplify writing such tests,\ntry to use plat" + "form-independent codin"; + const char file_test_txt4[] = "lString</TT> in the example above)\ngenerat" + "e detailed log message"; + const char file_test_txt5[] = "SS=\"western\">make check</TT> will usually" + " run\n\tall of the tests."; + 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)); + assertEqualString("LibarchiveAddingTest.html", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(file_size, archive_entry_size(ae)); + assertEqualInt(33188, archive_entry_mode(ae)); + + /* Seek to the end minus 64 bytes */ + assertA(file_size - (int)sizeof(buff) == + archive_seek_data(a, file_size - (int)sizeof(buff), SEEK_SET)); + assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff))); + assertEqualMem(buff, file_test_txt1, sizeof(file_test_txt1) - 1); + + /* Seek back to the beginning */ + assertA(0 == archive_seek_data(a, 0, SEEK_SET)); + assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff))); + assertEqualMem(buff, file_test_txt2, sizeof(file_test_txt2) - 1); + + /* Seek to the middle of the combined data block */ + assertA(10054 == archive_seek_data(a, 10054, SEEK_SET)); + assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff))); + assertEqualMem(buff, file_test_txt3, sizeof(file_test_txt3) - 1); + + /* Seek to 32 bytes before the end of the first data sub-block */ + assertA(6860 == archive_seek_data(a, 6860, SEEK_SET)); + assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff))); + assertEqualMem(buff, file_test_txt4, sizeof(file_test_txt4) - 1); + + /* Seek to 32 bytes before the end of the second data sub-block */ + assertA(13752 == archive_seek_data(a, 13752, SEEK_SET)); + assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff))); + assertEqualMem(buff, file_test_txt5, sizeof(file_test_txt5) - 1); + + /* Use various combinations of SEEK_SET, SEEK_CUR, and SEEK_END */ + assertEqualInt(file_size, archive_seek_data(a, 0, SEEK_END)); + assertEqualInt(0, archive_seek_data(a, 0, SEEK_SET)); + assertEqualInt(0, archive_seek_data(a, 0, SEEK_CUR)); + assertEqualInt(-1, archive_seek_data(a, -10, SEEK_CUR)); + assertEqualInt(10, archive_seek_data(a, 10, SEEK_CUR)); + assertEqualInt(-1, archive_seek_data(a, -20, SEEK_CUR)); + assertEqualInt(10, archive_seek_data(a, 0, SEEK_CUR)); + assertEqualInt(file_size, archive_seek_data(a, 0, SEEK_END)); + assertEqualInt(file_size - 20, archive_seek_data(a, -20, SEEK_END)); + assertEqualInt(file_size + 40, archive_seek_data(a, 40, SEEK_END)); + assertEqualInt(file_size + 40, archive_seek_data(a, 0, SEEK_CUR)); + assertEqualInt(file_size + 40 + 20, archive_seek_data(a, 20, SEEK_CUR)); + assertEqualInt(file_size + 40 + 20 + 20, archive_seek_data(a, 20, SEEK_CUR)); + assertEqualInt(file_size + 20, archive_seek_data(a, 20, SEEK_END)); + assertEqualInt(file_size - 20, archive_seek_data(a, -20, SEEK_END)); + + /* + * Attempt to read from the end of the file. These should return + * 0 for end of file. + */ + assertEqualInt(file_size, archive_seek_data(a, 0, SEEK_END)); + assertA(0 == archive_read_data(a, buff, sizeof(buff))); + assertEqualInt(file_size + 40, archive_seek_data(a, 40, SEEK_CUR)); + assertA(0 == archive_read_data(a, buff, sizeof(buff))); + + /* Seek to the end minus 64 bytes */ + assertA(0 == archive_seek_data(a, 0, SEEK_SET)); + assertA(file_size - (int)sizeof(buff) == + archive_seek_data(a, -(int)sizeof(buff), SEEK_END)); + assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff))); + assertEqualMem(buff, file_test_txt1, sizeof(file_test_txt1) - 1); + + /* The file position should be at the end of the file here */ + assertA(file_size == archive_seek_data(a, 0, SEEK_CUR)); + + /* Seek back to the beginning */ + assertA(0 == archive_seek_data(a, -file_size, SEEK_CUR)); + assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff))); + assertEqualMem(buff, file_test_txt2, sizeof(file_test_txt2) - 1); + + /* Seek to the middle of the combined data block */ + assertA(10054 == archive_seek_data(a, 10054 - (int)sizeof(buff), SEEK_CUR)); + assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff))); + assertEqualMem(buff, file_test_txt3, sizeof(file_test_txt3) - 1); + + /* Seek to 32 bytes before the end of the first data sub-block */ + assertA(6860 == archive_seek_data(a, 6860 - (10054 + (int)sizeof(buff)), + SEEK_CUR)); + assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff))); + assertEqualMem(buff, file_test_txt4, sizeof(file_test_txt4) - 1); + + /* Seek to 32 bytes before the end of the second data sub-block */ + assertA(13752 == archive_seek_data(a, 13752 - file_size, SEEK_END)); + assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff))); + assertEqualMem(buff, file_test_txt5, sizeof(file_test_txt5) - 1); + + /* Test EOF */ + assertA(1 == archive_read_next_header(a, &ae)); + assertEqualInt(1, archive_file_count(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} + +DEFINE_TEST(test_read_format_rar_multivolume_seek_multiple_files) +{ + const char *reffiles[] = + { + "test_rar_multivolume_multiple_files.part1.rar", + "test_rar_multivolume_multiple_files.part2.rar", + "test_rar_multivolume_multiple_files.part3.rar", + "test_rar_multivolume_multiple_files.part4.rar", + "test_rar_multivolume_multiple_files.part5.rar", + "test_rar_multivolume_multiple_files.part6.rar", + NULL + }; + char buff[64]; + int file_size = 20111; + const char file_test_txt1[] = "d. \n</P>\n<P STYLE=\"margin-bottom: 0in\">" + "<BR>\n</P>\n</BODY>\n</HTML>"; + const char file_test_txt2[] = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4." + "0 Transitional//EN\">\n<"; + const char file_test_txt3[] = "mplify writing such tests,\ntry to use plat" + "form-independent codin"; + const char file_test_txt4[] = "\nfailures. \n</P>\n<H1 CLASS=\"western\"><" + "A NAME=\"Life_cycle_of_a_te"; + const char file_test_txt5[] = "LE=\"margin-bottom: 0in\">DO use runtime te" + "sts for platform\n\tfeatu"; + const char file_test_txt6[] = "rough test suite is essential\nboth for ver" + "ifying new ports and f"; + const char file_test_txt7[] = "m: 0in\">Creates a temporary directory\n\tw" + "hose name matches the na"; + const char file_test_txt8[] = "lt\ninput file and verify the results. Thes" + "e use <TT CLASS=\"weste"; + 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)); + assertEqualString("LibarchiveAddingTest2.html", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(file_size, archive_entry_size(ae)); + assertEqualInt(33188, archive_entry_mode(ae)); + + /* Attempt to read past end of file */ + assertEqualInt(file_size, archive_seek_data(a, 0, SEEK_END)); + assertA(0 == archive_read_data(a, buff, sizeof(buff))); + assertEqualInt(file_size + 40, archive_seek_data(a, 40, SEEK_CUR)); + assertA(0 == archive_read_data(a, buff, sizeof(buff))); + + /* Seek to the end minus 64 bytes */ + assertA(file_size - (int)sizeof(buff) == + archive_seek_data(a, -(int)sizeof(buff), SEEK_END)); + assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff))); + assertEqualMem(buff, file_test_txt1, sizeof(file_test_txt1) - 1); + + /* Seek back to the beginning */ + assertA(0 == archive_seek_data(a, -file_size, SEEK_END)); + assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff))); + assertEqualMem(buff, file_test_txt2, sizeof(file_test_txt2) - 1); + + /* Seek to the middle of the combined data block */ + assertA(10054 == archive_seek_data(a, 10054 - (int)sizeof(buff), SEEK_CUR)); + assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff))); + assertEqualMem(buff, file_test_txt3, sizeof(file_test_txt3) - 1); + + /* Seek to 32 bytes before the end of the first data sub-block */ + assertA(7027 == archive_seek_data(a, 7027 - (10054 + (int)sizeof(buff)), + SEEK_CUR)); + assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff))); + assertEqualMem(buff, file_test_txt4, sizeof(file_test_txt4) - 1); + + /* Seek to 32 bytes before the end of the second data sub-block */ + assertA(14086 == archive_seek_data(a, 14086 - file_size, SEEK_END)); + assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff))); + assertEqualMem(buff, file_test_txt5, sizeof(file_test_txt5) - 1); + + /* Attempt to read past end of file */ + assertEqualInt(file_size, archive_seek_data(a, 0, SEEK_END)); + assertA(0 == archive_read_data(a, buff, sizeof(buff))); + assertEqualInt(file_size + 40, archive_seek_data(a, 40, SEEK_CUR)); + assertA(0 == archive_read_data(a, buff, sizeof(buff))); + + /* Second header. */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("LibarchiveAddingTest.html", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(file_size, archive_entry_size(ae)); + assertEqualInt(33188, archive_entry_mode(ae)); + + /* Attempt to read past end of file */ + assertEqualInt(file_size, archive_seek_data(a, 0, SEEK_END)); + assertA(0 == archive_read_data(a, buff, sizeof(buff))); + assertEqualInt(file_size + 40, archive_seek_data(a, 40, SEEK_CUR)); + assertA(0 == archive_read_data(a, buff, sizeof(buff))); + + /* Seek to the end minus 64 bytes */ + assertA(file_size - (int)sizeof(buff) == + archive_seek_data(a, file_size - (int)sizeof(buff), SEEK_SET)); + assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff))); + assertEqualMem(buff, file_test_txt1, sizeof(file_test_txt1) - 1); + + /* Seek back to the beginning */ + assertA(0 == archive_seek_data(a, 0, SEEK_SET)); + assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff))); + assertEqualMem(buff, file_test_txt2, sizeof(file_test_txt2) - 1); + + /* Seek to the middle of the combined data block */ + assertA(10054 == archive_seek_data(a, 10054 - (int)sizeof(buff), SEEK_CUR)); + assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff))); + assertEqualMem(buff, file_test_txt3, sizeof(file_test_txt3) - 1); + + /* Seek to 32 bytes before the end of the first data sub-block */ + assertA(969 == archive_seek_data(a, 969 - (10054 + (int)sizeof(buff)), SEEK_CUR)); + assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff))); + assertEqualMem(buff, file_test_txt6, sizeof(file_test_txt4) - 1); + + /* Seek to 32 bytes before the end of the second data sub-block */ + assertA(8029 == archive_seek_data(a, 8029 - file_size, SEEK_END)); + assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff))); + assertEqualMem(buff, file_test_txt7, sizeof(file_test_txt5) - 1); + + /* Seek to 32 bytes before the end of the third data sub-block */ + assertA(15089 == archive_seek_data(a, 15089 - file_size, SEEK_END)); + assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff))); + assertEqualMem(buff, file_test_txt8, sizeof(file_test_txt5) - 1); + + /* Attempt to read past end of file */ + assertEqualInt(file_size, archive_seek_data(a, 0, SEEK_END)); + assertA(0 == archive_read_data(a, buff, sizeof(buff))); + assertEqualInt(file_size + 40, archive_seek_data(a, 40, SEEK_CUR)); + assertA(0 == archive_read_data(a, buff, sizeof(buff))); + + /* Test EOF */ + assertA(1 == archive_read_next_header(a, &ae)); + assertEqualInt(2, archive_file_count(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} + +static void +test_read_format_rar_multivolume_uncompressed_files_helper(struct archive *a) +{ + char buff[64]; + + /* Do checks for seeks/reads past beginning and end of file */ + assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET)); + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, -1, archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_SET)); + assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualIntA(a, (sizeof(buff)-1), archive_seek_data(a, 0, SEEK_CUR)); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD " + "HTML 4.0 Transitional//EN\">\n", buff); + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, -1, archive_seek_data(a, -(((int)sizeof(buff)-1)*2), SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), archive_seek_data(a, 0, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualIntA(a, ((sizeof(buff)-1)*2), archive_seek_data(a, 0, SEEK_CUR)); + assertEqualStringA(a, "<HTML>\n<HEAD>\n\t<META HTTP-EQUIV=\"CONTENT-TYPE\" " + "CONTENT=\"text/ht", buff); + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, -1, archive_seek_data(a, -(20111+32), SEEK_END)); + assertEqualIntA(a, ((sizeof(buff)-1)*2), archive_seek_data(a, 0, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualIntA(a, ((sizeof(buff)-1)*3), archive_seek_data(a, 0, SEEK_CUR)); + assertEqualStringA(a, "ml; charset=utf-8\">\n\t<TITLE></TITLE>\n\t<META " + "NAME=\"GENERATOR\" CO", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111, archive_seek_data(a, 20111, SEEK_SET)); + assertEqualIntA(a, 20111, archive_seek_data(a, 0, SEEK_CUR)); + assertEqualIntA(a, 0, archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualIntA(a, 20111, archive_seek_data(a, 0, SEEK_CUR)); + assertEqualStringA(a, "", buff); + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 + (sizeof(buff)-1), + archive_seek_data(a, (sizeof(buff)-1), SEEK_CUR)); + assertEqualIntA(a, 0, archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualIntA(a, 20111 + (sizeof(buff)-1), + archive_seek_data(a, 0, SEEK_CUR)); + assertEqualStringA(a, "", buff); + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 + ((sizeof(buff)-1)*2), + archive_seek_data(a, ((sizeof(buff)-1)*2), SEEK_END)); + assertEqualIntA(a, 0, archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualIntA(a, 20111 + ((sizeof(buff)-1)*2), + archive_seek_data(a, 0, SEEK_CUR)); + assertEqualStringA(a, "", buff); +} + +DEFINE_TEST(test_read_format_rar_multivolume_uncompressed_files) +{ + const char *reffiles[] = + { + "test_rar_multivolume_uncompressed_files.part01.rar", + "test_rar_multivolume_uncompressed_files.part02.rar", + "test_rar_multivolume_uncompressed_files.part03.rar", + "test_rar_multivolume_uncompressed_files.part04.rar", + "test_rar_multivolume_uncompressed_files.part05.rar", + "test_rar_multivolume_uncompressed_files.part06.rar", + "test_rar_multivolume_uncompressed_files.part07.rar", + "test_rar_multivolume_uncompressed_files.part08.rar", + "test_rar_multivolume_uncompressed_files.part09.rar", + "test_rar_multivolume_uncompressed_files.part10.rar", + NULL + }; + char buff[64]; + ssize_t bytes_read; + struct archive *a; + struct archive_entry *ae; + + extract_reference_files(reffiles); + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_open_filenames(a, reffiles, 10240)); + + /* + * First header. + */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualStringA(a, "testdir/LibarchiveAddingTest2.html", + archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualIntA(a, 20111, archive_entry_size(ae)); + assertEqualIntA(a, 33188, archive_entry_mode(ae)); + + test_read_format_rar_multivolume_uncompressed_files_helper(a); + + /* Read from the beginning to the end of the file */ + assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET)); + do + { + memset(buff, 0, sizeof(buff)); + bytes_read = archive_read_data(a, buff, (sizeof(buff)-1)); + } while (bytes_read > 0); + + /* Seek to the end minus (sizeof(buff)-1) bytes */ + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + /* Seek back to the beginning */ + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, archive_seek_data(a, -20111, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + /* Test that SEEK_SET works correctly between data blocks */ + assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET)); + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 13164, + archive_seek_data(a, 13164, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "ertEqualInt,\n\tassertEqualString, " + "assertEqualMem to test equalit", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, 0, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 13164, + archive_seek_data(a, 13164, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "ertEqualInt,\n\tassertEqualString, " + "assertEqualMem to test equalit", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, 0, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 13164, + archive_seek_data(a, 13164, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "ertEqualInt,\n\tassertEqualString, " + "assertEqualMem to test equalit", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, 0, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + /* Test that SEEK_CUR works correctly between data blocks */ + assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET)); + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 13164, + archive_seek_data(a, 13164, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "ertEqualInt,\n\tassertEqualString, " + "assertEqualMem to test equalit", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -13227, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 19985, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 13164, + archive_seek_data(a, -6947, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "ertEqualInt,\n\tassertEqualString, " + "assertEqualMem to test equalit", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 6821, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -20111, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 19985, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 13164, + archive_seek_data(a, -6947, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "ertEqualInt,\n\tassertEqualString, " + "assertEqualMem to test equalit", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -13227, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + /* Test that SEEK_END works correctly between data blocks */ + assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET)); + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 13164, + archive_seek_data(a, -6947, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "ertEqualInt,\n\tassertEqualString, " + "assertEqualMem to test equalit", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -20111, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 13164, + archive_seek_data(a, -6947, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "ertEqualInt,\n\tassertEqualString, " + "assertEqualMem to test equalit", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -20111, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 13164, + archive_seek_data(a, -6947, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "ertEqualInt,\n\tassertEqualString, " + "assertEqualMem to test equalit", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -20111, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + test_read_format_rar_multivolume_uncompressed_files_helper(a); + + /* + * Second header. + */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualStringA(a, "testdir/testsubdir/LibarchiveAddingTest2.html", + archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualIntA(a, 20111, archive_entry_size(ae)); + assertEqualIntA(a, 33188, archive_entry_mode(ae)); + + test_read_format_rar_multivolume_uncompressed_files_helper(a); + + /* Read from the beginning to the end of the file */ + assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET)); + do + { + memset(buff, 0, sizeof(buff)); + bytes_read = archive_read_data(a, buff, (sizeof(buff)-1)); + } while (bytes_read > 0); + + /* Seek to the end minus (sizeof(buff)-1) bytes */ + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + /* Seek back to the beginning */ + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, archive_seek_data(a, -20111, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + /* Test that SEEK_SET works correctly between data blocks */ + assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET)); + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 6162, + archive_seek_data(a, 6162, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "arguments satisfy certain conditions. " + "If the assertion fails--f", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 19347, + archive_seek_data(a, 19347, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, " when a block being written out by\n" + "the archive writer is the sa", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 19347, + archive_seek_data(a, 19347, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, " when a block being written out by\n" + "the archive writer is the sa", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 6162, + archive_seek_data(a, 6162, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "arguments satisfy certain conditions. " + "If the assertion fails--f", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, 0, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 6162, + archive_seek_data(a, 6162, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "arguments satisfy certain conditions. " + "If the assertion fails--f", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 19347, + archive_seek_data(a, 19347, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, " when a block being written out by\n" + "the archive writer is the sa", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, 0, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, 0, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 19347, + archive_seek_data(a, 19347, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, " when a block being written out by\n" + "the archive writer is the sa", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 6162, + archive_seek_data(a, 6162, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "arguments satisfy certain conditions. " + "If the assertion fails--f", buff); + + /* Test that SEEK_CUR works correctly between data blocks */ + assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET)); + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 6162, + archive_seek_data(a, 6162, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "arguments satisfy certain conditions. " + "If the assertion fails--f", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 19347, + archive_seek_data(a, 13122, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, " when a block being written out by\n" + "the archive writer is the sa", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 638, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 19347, + archive_seek_data(a, -764, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, " when a block being written out by\n" + "the archive writer is the sa", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 6162, + archive_seek_data(a, -13248, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "arguments satisfy certain conditions. " + "If the assertion fails--f", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -6225, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 19985, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 6162, + archive_seek_data(a, -13949, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "arguments satisfy certain conditions. " + "If the assertion fails--f", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 19347, + archive_seek_data(a, 13122, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, " when a block being written out by\n" + "the archive writer is the sa", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -19410, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 19985, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -20111, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 19347, + archive_seek_data(a, 19284, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, " when a block being written out by\n" + "the archive writer is the sa", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 6162, + archive_seek_data(a, -13248, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "arguments satisfy certain conditions. " + "If the assertion fails--f", buff); + + /* Test that SEEK_END works correctly between data blocks */ + assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET)); + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 6162, + archive_seek_data(a, -13949, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "arguments satisfy certain conditions. " + "If the assertion fails--f", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 19347, + archive_seek_data(a, -764, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, " when a block being written out by\n" + "the archive writer is the sa", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 19347, + archive_seek_data(a, -764, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, " when a block being written out by\n" + "the archive writer is the sa", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 6162, + archive_seek_data(a, -13949, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "arguments satisfy certain conditions. " + "If the assertion fails--f", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -20111, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 6162, + archive_seek_data(a, -13949, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "arguments satisfy certain conditions. " + "If the assertion fails--f", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 19347, + archive_seek_data(a, -764, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, " when a block being written out by\n" + "the archive writer is the sa", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -20111, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -20111, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 19347, + archive_seek_data(a, -764, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, " when a block being written out by\n" + "the archive writer is the sa", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 6162, + archive_seek_data(a, -13949, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "arguments satisfy certain conditions. " + "If the assertion fails--f", buff); + + test_read_format_rar_multivolume_uncompressed_files_helper(a); + + /* + * Third header. + */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualStringA(a, "LibarchiveAddingTest2.html", + archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualIntA(a, 20111, archive_entry_size(ae)); + assertEqualIntA(a, 33188, archive_entry_mode(ae)); + + test_read_format_rar_multivolume_uncompressed_files_helper(a); + + /* Read from the beginning to the end of the file */ + assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET)); + do + { + memset(buff, 0, sizeof(buff)); + bytes_read = archive_read_data(a, buff, (sizeof(buff)-1)); + } while (bytes_read > 0); + + /* Seek to the end minus (sizeof(buff)-1) bytes */ + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + /* Seek back to the beginning */ + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, archive_seek_data(a, -20111, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + /* Test that SEEK_SET works correctly between data blocks */ + assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET)); + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 12353, + archive_seek_data(a, 12353, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, " 0.2in\"> " + "extract_reference_file("test_foo.tar", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, 0, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 12353, + archive_seek_data(a, 12353, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, " 0.2in\"> " + "extract_reference_file("test_foo.tar", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, 0, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 12353, + archive_seek_data(a, 12353, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, " 0.2in\"> " + "extract_reference_file("test_foo.tar", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, 0, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + /* Test that SEEK_CUR works correctly between data blocks */ + assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET)); + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 12353, + archive_seek_data(a, 12353, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, " 0.2in\"> " + "extract_reference_file("test_foo.tar", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -12416, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 19985, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 12353, + archive_seek_data(a, -7758, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, " 0.2in\"> " + "extract_reference_file("test_foo.tar", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 7632, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -20111, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 19985, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 12353, + archive_seek_data(a, -7758, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, " 0.2in\"> " + "extract_reference_file("test_foo.tar", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -12416, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + /* Test that SEEK_END works correctly between data blocks */ + assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET)); + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 12353, + archive_seek_data(a, -7758, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, " 0.2in\"> " + "extract_reference_file("test_foo.tar", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -20111, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 12353, + archive_seek_data(a, -7758, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, " 0.2in\"> " + "extract_reference_file("test_foo.tar", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -20111, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 12353, + archive_seek_data(a, -7758, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, " 0.2in\"> " + "extract_reference_file("test_foo.tar", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -20111, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + test_read_format_rar_multivolume_uncompressed_files_helper(a); + + /* + * Fourth header. + */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualStringA(a, "testdir/LibarchiveAddingTest.html", + archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualIntA(a, 20111, archive_entry_size(ae)); + assertEqualIntA(a, 33188, archive_entry_mode(ae)); + + test_read_format_rar_multivolume_uncompressed_files_helper(a); + + /* Read from the beginning to the end of the file */ + assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET)); + do + { + memset(buff, 0, sizeof(buff)); + bytes_read = archive_read_data(a, buff, (sizeof(buff)-1)); + } while (bytes_read > 0); + + /* Seek to the end minus (sizeof(buff)-1) bytes */ + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + /* Seek back to the beginning */ + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, archive_seek_data(a, -20111, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + /* Test that SEEK_SET works correctly between data blocks */ + assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET)); + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 5371, + archive_seek_data(a, 5371, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "zip)\n {\n " + "/* ... setup omitted ... */\n ", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 13165, + archive_seek_data(a, 13165, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, " + "assertEqualMem to test equality", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 13165, + archive_seek_data(a, 13165, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, " + "assertEqualMem to test equality", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 5371, + archive_seek_data(a, 5371, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "zip)\n {\n " + "/* ... setup omitted ... */\n ", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, 0, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 5371, + archive_seek_data(a, 5371, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "zip)\n {\n " + "/* ... setup omitted ... */\n ", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 13165, + archive_seek_data(a, 13165, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, " + "assertEqualMem to test equality", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, 0, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, 0, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 13165, + archive_seek_data(a, 13165, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, " + "assertEqualMem to test equality", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 5371, + archive_seek_data(a, 5371, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "zip)\n {\n " + "/* ... setup omitted ... */\n ", buff); + + /* Test that SEEK_CUR works correctly between data blocks */ + assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET)); + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 5371, + archive_seek_data(a, 5371, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "zip)\n {\n " + "/* ... setup omitted ... */\n ", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 13165, + archive_seek_data(a, 7731, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, " + "assertEqualMem to test equality", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 6820, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 13165, + archive_seek_data(a, -6946, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, " + "assertEqualMem to test equality", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 5371, + archive_seek_data(a, -7857, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "zip)\n {\n " + "/* ... setup omitted ... */\n ", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -5434, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 19985, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 5371, + archive_seek_data(a, -14740, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "zip)\n {\n " + "/* ... setup omitted ... */\n ", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 13165, + archive_seek_data(a, 7731, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, " + "assertEqualMem to test equality", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -13228, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 19985, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -20111, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 13165, + archive_seek_data(a, 13102, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, " + "assertEqualMem to test equality", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 5371, + archive_seek_data(a, -7857, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "zip)\n {\n " + "/* ... setup omitted ... */\n ", buff); + + /* Test that SEEK_END works correctly between data blocks */ + assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET)); + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 5371, + archive_seek_data(a, -14740, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "zip)\n {\n " + "/* ... setup omitted ... */\n ", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 13165, + archive_seek_data(a, -6946, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, " + "assertEqualMem to test equality", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 13165, + archive_seek_data(a, -6946, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, " + "assertEqualMem to test equality", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 5371, + archive_seek_data(a, -14740, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "zip)\n {\n " + "/* ... setup omitted ... */\n ", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -20111, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 5371, + archive_seek_data(a, -14740, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "zip)\n {\n " + "/* ... setup omitted ... */\n ", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 13165, + archive_seek_data(a, -6946, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, " + "assertEqualMem to test equality", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -20111, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -20111, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 13165, + archive_seek_data(a, -6946, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, " + "assertEqualMem to test equality", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 5371, + archive_seek_data(a, -14740, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "zip)\n {\n " + "/* ... setup omitted ... */\n ", buff); + + test_read_format_rar_multivolume_uncompressed_files_helper(a); + + /* + * Fifth header. + */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualStringA(a, "testdir/testsubdir/LibarchiveAddingTest.html", + archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualIntA(a, 20111, archive_entry_size(ae)); + assertEqualIntA(a, 33188, archive_entry_mode(ae)); + + test_read_format_rar_multivolume_uncompressed_files_helper(a); + + /* Read from the beginning to the end of the file */ + assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET)); + do + { + memset(buff, 0, sizeof(buff)); + bytes_read = archive_read_data(a, buff, (sizeof(buff)-1)); + } while (bytes_read > 0); + + /* Seek to the end minus (sizeof(buff)-1) bytes */ + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + /* Seek back to the beginning */ + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, archive_seek_data(a, -20111, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + /* Test that SEEK_SET works correctly between data blocks */ + assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET)); + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 11568, + archive_seek_data(a, 11568, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ", <TT CLASS=\"western\">assertFileContents</TT>," + "\n\t<TT CLASS=\"west", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, 0, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 11568, + archive_seek_data(a, 11568, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ", <TT CLASS=\"western\">assertFileContents</TT>," + "\n\t<TT CLASS=\"west", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, 0, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 11568, + archive_seek_data(a, 11568, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ", <TT CLASS=\"western\">assertFileContents</TT>," + "\n\t<TT CLASS=\"west", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, 0, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + /* Test that SEEK_CUR works correctly between data blocks */ + assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET)); + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 11568, + archive_seek_data(a, 11568, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ", <TT CLASS=\"western\">assertFileContents</TT>," + "\n\t<TT CLASS=\"west", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -11631, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 19985, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 11568, + archive_seek_data(a, -8543, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ", <TT CLASS=\"western\">assertFileContents</TT>," + "\n\t<TT CLASS=\"west", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 8417, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -20111, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 19985, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 11568, + archive_seek_data(a, -8543, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ", <TT CLASS=\"western\">assertFileContents</TT>," + "\n\t<TT CLASS=\"west", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -11631, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + /* Test that SEEK_END works correctly between data blocks */ + assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET)); + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 11568, + archive_seek_data(a, -8543, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ", <TT CLASS=\"western\">assertFileContents</TT>," + "\n\t<TT CLASS=\"west", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -20111, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 11568, + archive_seek_data(a, -8543, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ", <TT CLASS=\"western\">assertFileContents</TT>," + "\n\t<TT CLASS=\"west", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -20111, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 11568, + archive_seek_data(a, -8543, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ", <TT CLASS=\"western\">assertFileContents</TT>," + "\n\t<TT CLASS=\"west", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -20111, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + test_read_format_rar_multivolume_uncompressed_files_helper(a); + + /* + * Sixth header. + */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualStringA(a, "LibarchiveAddingTest.html", + archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualIntA(a, 20111, archive_entry_size(ae)); + assertEqualIntA(a, 33188, archive_entry_mode(ae)); + + test_read_format_rar_multivolume_uncompressed_files_helper(a); + + /* Read from the beginning to the end of the file */ + assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET)); + do + { + memset(buff, 0, sizeof(buff)); + bytes_read = archive_read_data(a, buff, (sizeof(buff)-1)); + } while (bytes_read > 0); + + /* Seek to the end minus (sizeof(buff)-1) bytes */ + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + /* Seek back to the beginning */ + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, archive_seek_data(a, -20111, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + /* Test that SEEK_SET works correctly between data blocks */ + assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET)); + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 4576, + archive_seek_data(a, 4576, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A " + "NAME=\"Basic_test", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 17749, + archive_seek_data(a, 17749, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The " + "large tar tester attempts to", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 17749, + archive_seek_data(a, 17749, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The " + "large tar tester attempts to", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 4576, + archive_seek_data(a, 4576, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A " + "NAME=\"Basic_test", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, 0, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 4576, + archive_seek_data(a, 4576, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A " + "NAME=\"Basic_test", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 17749, + archive_seek_data(a, 17749, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The " + "large tar tester attempts to", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, 0, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, 0, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 17749, + archive_seek_data(a, 17749, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The " + "large tar tester attempts to", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 4576, + archive_seek_data(a, 4576, SEEK_SET)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A " + "NAME=\"Basic_test", buff); + + /* Test that SEEK_CUR works correctly between data blocks */ + assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET)); + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 4576, + archive_seek_data(a, 4576, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A " + "NAME=\"Basic_test", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 17749, + archive_seek_data(a, 13110, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The " + "large tar tester attempts to", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 2236, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 17749, + archive_seek_data(a, -2362, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The " + "large tar tester attempts to", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 4576, + archive_seek_data(a, -13236, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A " + "NAME=\"Basic_test", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -4639, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 19985, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 4576, + archive_seek_data(a, -15535, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A " + "NAME=\"Basic_test", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 17749, + archive_seek_data(a, 13110, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The " + "large tar tester attempts to", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -17812, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, 19985, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -20111, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 17749, + archive_seek_data(a, 17686, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The " + "large tar tester attempts to", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 4576, + archive_seek_data(a, -13236, SEEK_CUR)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A " + "NAME=\"Basic_test", buff); + + /* Test that SEEK_END works correctly between data blocks */ + assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET)); + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 4576, + archive_seek_data(a, -15535, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A " + "NAME=\"Basic_test", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 17749, + archive_seek_data(a, -2362, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The " + "large tar tester attempts to", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 17749, + archive_seek_data(a, -2362, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The " + "large tar tester attempts to", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 4576, + archive_seek_data(a, -15535, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A " + "NAME=\"Basic_test", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -20111, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 4576, + archive_seek_data(a, -15535, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A " + "NAME=\"Basic_test", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 17749, + archive_seek_data(a, -2362, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The " + "large tar tester attempts to", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -20111, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1), + archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n" + "</P>\n</BODY>\n</HTML>", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 0, + archive_seek_data(a, -20111, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + "Transitional//EN\">\n", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 17749, + archive_seek_data(a, -2362, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The " + "large tar tester attempts to", buff); + + memset(buff, 0, sizeof(buff)); + assertEqualIntA(a, 4576, + archive_seek_data(a, -15535, SEEK_END)); + assertEqualIntA(a, (sizeof(buff)-1), + archive_read_data(a, buff, (sizeof(buff)-1))); + assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A " + "NAME=\"Basic_test", buff); + + test_read_format_rar_multivolume_uncompressed_files_helper(a); + + /* + * Seventh header. + */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("testdir/testsymlink5", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(0, archive_entry_size(ae)); + assertEqualInt(41471, archive_entry_mode(ae)); + assertEqualString("testsubdir/LibarchiveAddingTest.html", + archive_entry_symlink(ae)); + assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff))); + + /* + * Eigth header. + */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("testdir/testsymlink6", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(0, archive_entry_size(ae)); + assertEqualInt(41471, archive_entry_mode(ae)); + assertEqualString("testsubdir/LibarchiveAddingTest2.html", + archive_entry_symlink(ae)); + assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff))); + + /* + * Ninth header. + */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("testsymlink", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(0, archive_entry_size(ae)); + assertEqualInt(41471, archive_entry_mode(ae)); + assertEqualString("testdir/LibarchiveAddingTest.html", + archive_entry_symlink(ae)); + assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff))); + + /* + * Tenth header. + */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("testsymlink2", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(0, archive_entry_size(ae)); + assertEqualInt(41471, archive_entry_mode(ae)); + assertEqualString("testdir/LibarchiveAddingTest2.html", + archive_entry_symlink(ae)); + assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff))); + + /* + * Eleventh header. + */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("testsymlink3", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(0, archive_entry_size(ae)); + assertEqualInt(41471, archive_entry_mode(ae)); + assertEqualString("testdir/testsubdir/LibarchiveAddingTest.html", + archive_entry_symlink(ae)); + assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff))); + + /* + * Twelfth header. + */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("testsymlink4", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(0, archive_entry_size(ae)); + assertEqualInt(41471, archive_entry_mode(ae)); + assertEqualString("testdir/testsubdir/LibarchiveAddingTest2.html", + archive_entry_symlink(ae)); + assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff))); + + /* + * Thirteenth header. + */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("testdir/testemptysubdir", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(0, archive_entry_size(ae)); + assertEqualInt(16877, archive_entry_mode(ae)); + + /* + * Fourteenth header. + */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("testdir/testsubdir", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(0, archive_entry_size(ae)); + assertEqualInt(16877, archive_entry_mode(ae)); + + /* + * Fifteenth header. + */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("testdir", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(0, archive_entry_size(ae)); + assertEqualInt(16877, archive_entry_mode(ae)); + + /* + * Sixteenth header. + */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("testemptydir", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(0, archive_entry_size(ae)); + assertEqualInt(16877, archive_entry_mode(ae)); + + /* Test EOF */ + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + assertEqualIntA(a, 16, archive_file_count(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_free(a)); } 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 new file mode 100644 index 0000000..7378a9b --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0001.rar.uu @@ -0,0 +1,1337 @@ +begin 644 - +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?/ +M=?2F]"MN3:#=GV@Z\544CH$\)LC?;2Q(=58*Z.YM0BJBE7.WJAG_T;]:G>5Z +MF=E%3:9D!V5_BCOB__PLW,UT8MG.V$Q7KSZ2#K<#EP<%P9+`YQ-//JS/OG8% +MGF:=0?4;"T5`E9>J+-,;+NI2K6-O?[L^U3B+E^I-B0X8-!>K)^47].FJY*=Q +M10]!>FJ?S0;Z^B\I%7:4@H;0AA7'(3P&:[\JU(8)'5$62(J&$W\)QVW45M^2 +M9P3SADC_"!&+;L,CD'5DHA4.Y/8103RTR=4"1_^^"?<=_K`2[*UD!5]5ELOO +MD904KH(C.D_I,E_*W4G%?:"JL3FS&'X'!M8\]_4N^GIF="5&V)>M,/_6NL?& +MG-!'+L%_B<.$R[@F\:]E.SEGZX8JG*P!=:4?BQID^?>^$K):ZA*;%AT&QG4H +M87NK!"V.H]QRL!*Z75P*H=QH@.`K!%U)98?$)B5/#'Q"G2?IK:SG--F<>%0P +M/&L'[WB2!U7<*?4L4NOOUTT.SR!`I\R[_P1F=02HR>'QX8'^2HV&5JV`]-KQ +MI+1)$DI5RKBB(D_C'\_+]51?<,M@<U\*\L]@L[]`=#.M#,+%,BH#,N)&C\TG +MBP24KPRSFNFC,6/_CDNEALG,#"')+--^G]1[XDO;ZELQA\DZSZ%>,F]PE+VS +M]2/>+LTL^)KUF2N[8ZO?.RN>$#S?0H]0YSYGBDJB]E^_&DDB:%;!B8J8GW*J +MO9*/%:M1X$FFP^&O`[RU:XM%UY]0#EF9\,:3">!<)ETSY)F5GC:.-&AY:MMY +M?U9WS&?(9@3"\/]9=PU??)T!9PR=N(\&#=,WX8AKH;:/SKE13]KR`RMXSC6_ +M^IXE6RJ:_VX+-U:3J`1R_HK<>S2[KP=XHKKNY&^5,X`_EJ,Q%SP[P=:;DP!V +M0!/%2"66A!1(2(+-#&]E)ZM83H-(N9*;>3I['T&=*&8?"1L$%$;3I6]YGM7D +MA@WYC]Y1YC(KRNJ.,K9ISE/<O.)@Z+$V`.#O..J8F./E.BW0_9$#9T*HA1QS +MLRARA6.@6Z@!0*X?.1ESZ^LUOF_<,T5MAY.3:K)5'C,]C]"@++T*`^=P"2@! +M*:Z*J@L>HX0L[5W!@N8&,/@KJA3[(SRV0;9*#>[IC8&(O\6E?P5CO+^4Q.EB +M@5_+,2,=*PW'V6\5:'`GU$42X'+ML^24T+V!U"[7`*WU5Q]A$I;.G*JG3N>M +M(\%C1N33':_HHW*]Y@\[G\VP2BSYTEQL1<V7]WFOPBXQ>Z8P$U<D,D6U^J3. +M1W7Q%&G3SQS>-TE)M#',SS=QF:;,%!X>FAS*\$LTE:N;-E6JH>UCSZ1^<I2Q +M3Y3TY=F#.\B:[>*'21$RTA7<71W\*'6M7UH/$P-#82?]^*:&%&S?D\9SP=W8 +M=U"D#*O8TJ'PI?QPA5Y[1`3&LES]V4]=\A6GM]#HQ+($<>?RFPOA_\/#^3H) +M9M3;PAY%/JU7%9Y??]05JHLVQ:NH:N_*K(KT^-\AHXKO`8\.G#76!Y?X:87E +MA&>X_XI=4RLM_#NXEY+K_W!;ZRW]"9D4GN7+!"*$"@E$<<BYHGB'%53&ZW:P +MB)QLH'#\\?"J/&7EZ""W^Q?'7GB&>G,@,C`8B[OV4TA+G:`EC40T>@O<J4M* +M5`UR#5,6J>"IY@;Y\2/JDD=V1M![(CNP(_,E2-0U^CX,9BJE=-CP^H-4\+4& +MD]^J`VAH[`_"EO\Y>#/O3GZ<`Z:6=C5[_!MCXBCD:8T=_894T$+.WU<CK?UM +MA%=T/V5I2[*!O@]CJ<CUIX%_%/B,E5EVGH%M,902)1M[4EB,KFZU,-]Q_<8; +M4QF#1XJ?UMG7EEY9=*J56*3Q?MA^0"<=JOS<+>/1Y`8*W?RV7BIE:8CE&#G* +MKAR=I-M!\(2SH1`)U-_43!QP@2?TY36!`,FTEU"+G+UR\DX'0Z_/'SUZY'L\ +M<0WB\\&R.5`B`PTC#+4,\88"E0R2=P3'KS7/-:4F*.?&)JJ,1Z$$E`D\_G]: +MV`NESW?*QT"[,@OLIS&%#DX>O6[@;#9Z`ZT%+:?63G07XHA.O=(S8L_LA_@> +M\]+1T#1TE;]'*1$!&)GM0DS/_Q)^T>D@@/DD!>X+:`L4GV%@V((T>B"H_:6L +M;'9EB0&Z^8*/S-%;`K&EHFW1R0IJ1>OW_*'\4"G9B!S)($G=ZU?\%S<W4N,` +MGQB#(T_]#N+$X^NZV>A7*9M^EL80./SNR$4)E*K:0!TT,*59F65;WNQYN<Y< +M;;3V((WZ0C.URJF0QW`Q$V)<OAHY."Q3P4DYB(!&4TTQICRP&X7BW(S:`;:^ +M==YP.B55>2Q.Z,L"-H?=(U3A>/=1R/<QBC?5G`%DM;/:1M#NAC:^3`_XSUZ' +M!3<AV[;?]1;)/E$Y+$TE,?(ATA6UQ=@-H-0`SSW7+GK(W+@^L]9;!]?G#AA= +ML"_K[S@4`A+61<:P.6.!7_^">Y!KMGFG!/%DY8V50XA+>J82,Z"D#JFC<O4G +M[DR?9ZV]+$!S#@@'X'X+*X##JZ-Z";W_L?P\V\R-RSW6L]/*(RMRN\&QEN&A +MN&):R08^=UC>D'!XZBB48\M\!4L<-&XPOV&.MBD.".V.?&$P1P4SEWX]XVYY +M/DM9NEM8RJBP@JX`MF#PDC*4T$Z1ZZ%(V_XY#NX1+B8%\ZL>P(`W9GWOQR7: +M<P>+8<3CD!K`P6["#A8H,+&2R38"$I3JG>X/>XN:(7?G\R3GA;7`/=)[X,@S +MH"RE$#HVN0_>N!D3^9IE^DGBJ9V+YJM@YIK6_%4=OUV8U!^^(JX8"/)T`5%& +MTDD1HCVQQU=MDJ7]J/"5:Z4Q!0D@T'X=<[2(L_>PSMH*)HHVI-L$?3^",O.& +MT)16KLM`NPY``"J9YM+&Y^@'!?(+IPXR-`84ADYF:`&7!(*#<N_3PGJ6<%?/ +M-A%LX/%AK+U-<YFO/":;_%<[(B>Q@Z]BBE@.1:A^OSG:9$M^[];\N@Q3(X+W +MLW3&;=A2([8<"3P>I95^!<V2M(XY&#N="M&P<?L[]43+"\[0V7SS&V`X9ZZO +MAGM-R[ZO\.J=_/&P;L_6JUU[FJ[6Y91`O)BW>NIMJE^YJ5&S6(J`/T!2S-,' +MD6)@'GHT\L_2HV$04ZU\SOE')DN?AS<N<%?FOK%#"D8B:.XO*UYL5B@<SAUE +MSY-[?]3[NT'F3)`[PB]@&KC?P'F0<8])0YXL<A@SYIB^=/_\I08;!$]]%-34 +M+IIC@_(]!S-&$\]>L1NN^^7:V<[)Y\I*EYV;0WS5FYD3!6KRFYFE5CFI??*J +M-\ZJE,,<%,A9'!"O8)6/WUW=W@R<[=$$<1D1#G@4N:YEA(!4?2'_\H4)K'I` +MKQX_T=8OD1V$QU'F.652T;$^E!V!\%GRF>6J@J%#FTW+I/CY_;U,E7%R<ABE +MD3B?GJ9\TJ@NS,U$?&/F^O-4CA9Z?K'9LSR@7GU6@7+N#$;5!>2F"W:/F]OY +MT`W/7T#4Z=_;LS/5@2B`\A(2,WZSA?974DF3$<^RA?!ACA!^T/=BR4X+!8F3 +M^V075'/DF0UX9\E0<E[UQY$)B\VE5R>VY<AW#/F$!,4(S>NLUQJ.-$%SA9?S +M?8%ZQ#'_7KP%^D[YB#`YBS9'R<X#!?\5SY9_`&[I@4>-1]I1"2N1X`F!NO\Y +M<SN`0;M1PE!-V2!<9JH^BI(,*6855]I^E^'ON':]E-ZM\G5ND97B\O3M]@GK +MUF+N3V+"`,AI&ID;-7L01G72&'B+MI83B.X']V?J@D%X+^>U2FW]K[:,QOI# +M>G6&B3`V%ZV1>]#E':8;?F6OG8V^TQV;15_5-.W1-`CK,=C))^_Q_AF]F.H1 +MSAN"WK^*@1VTQ-&^[`74F:5-]?1;2U:NB`W][#)$@S:G:#QRQ9<)?V;4ZD7! +M-M(9_<.&X+E3&KHS/ZT,"@J!4[HEGW.#\NPS=&7V&Z>>=?0"-TW"#E7/V3CW +M_*1@*VI;B@^?21EF6?.^)_UN@CL82I]HIT<;:R<>@2+;+#RMMY6I*/U]FZGQ +MINO=(L/3*#_E5U3,F\8F_^)ZI`^%#0TR`*7(=M'GAH1Z&W%%SMK%$S(`QE,* +M^6?.6MVVEA^H`Y>:`Z^<*,$Q<"02QX)QTZ;O9%YPH;K('*2`L;>F?<U][KK[ +M_LDU==^:9;!=T[U##OJ<;%K/X!;RF+^#]'>*ZC0C^Z=G4^9(Z)%V9Q"G7_SY +M3!5I`B]/7H@7U]O`LQK!E,?3E$805$)KX47&Q-WX3RB7XV?S87X*S5;_:NQM +M5*7B3"56.2*M9KX!S[ZZR'YP-%++:"-V8:N'\Y%8HAP+$#WA*[C(+H9/)APU +M4E2Z:^Y:R%Z^]Z3`7?QMK@75!*C8YQ^2P+0'?Q"<PB^)T<#W,^;KQ7<((7-F +M#<[,YQ5^:&DZ+0>%Y#R%#PY?T$G""_TAOMOQHP89`J)7F\@W+<_BQ/#K!1_L +MAG]AD:E2F-"8]9EGWWO2_;$9R'?7$LL^Y]2H60AX..N<X_\;D4!825)@D0T+ +M9+,;XB)INQ)>#3IS1:;`LGOI![!L;C&Y)[`!-[XN#[5[/KF@*1866&"ZCC\[ +M#$*J]$%)"`#2V0FJ(>E2E8+H%]-05<!.)RMY,#/O<)55?%/A6R4=\I7%,U]W +MV<C2%QY'>@+:Q</./5+W5M-QM'6DOF`O")$(Q:P>0^"T&".^`;FHY$`!9IT1 +M:&R$ENRQ2$>1%A#&*R\466G@[JE7IH$`0$QBN#^#<^>3*/4@&>V59O$BH3JP +MKT62;#2"-^$8UR_#`H_[QL4]`XF&>SR3?@@3BX<*_J<O)#:#,<&^5I1<`[^" +M9RYXXO2F9TA>GC<'%5I0!UKZF<O)]E6D,O$,\T!98G_1&_"*WR)R0YS`J%M3 +M!;I+T3_=/=;0*9TU^M^R#/\8HYA#QQZ]PH2-G9X(-X#0)?OS=S<CN*K1\P7M +M?Z&#S3XJO9\FVU8N0-,2.)N!>7<7PSKFV!,]9X0=>Q\YS"+>G+V;#>"-"%-) +M1:#D=1.TV56\L3$1T/BORY6(_1U4=%8([W3PHIR[N'6+5L.G:NJ`W=78>FS+ +MG)>MXH:?N@U`&MJQ/P!F)D8/IFOA`*`51"H5&SFB:@@E2%,G)!O<[(BW%`Z+ +MFD5DG@I*@0]`X%3[Q1SH?1"=E.^ICW38DTXRZ7,1T=&6/("@U*2!7J)J.,00 +MT&7*=+9DO<0Z3W$.49(DMD':OZV[$'2VB+GR@7\@71JU(9?8F*!<3)&)*)@) +M8"[%UCD/\7O>/4EKE,440IR!+_<QW\]/\!OGUH\#270`&R;7R^DS)^J436Y3 +MH&8M8#JZ03TY^R^-_#,;_,JXK/<AP\I8_PT)6L[F@H7U^Y\='YL41J4E2V4W +M*`N1FKMFBUK\_1),UALZ69ZJC$&AH=U+;*/!$`6Z=%3!P(.%N"V9V<0H6S+D +M6$T':8G[D'=-R3-]V5HNW">!)AH")KL8J\Y1[0_LR4`I@JMCEH'M%T)8'[3: +M.7`6S#1:?%1#*>54`%8Z2P4#]S%B&_V61"Y,)("&PB4(`.?[C%?-J(?!-P_V +MKA:8H"G!Q2H].,.F'`T0J5+ZRVZ85AWI*N1B`8XOP7B<'#.;CJ*`G$9</1ZJ +M)QI`S(3ORO=STSW+'H(6S(+/[D+M_E2K>U%=O3/OVUF-OYYO3*G0K<[Y"%JX +M!X'#3S>P91<8Y-M-Z(0"Q_5-057,XS7*28Y')2*J7JJ_YD_SM7L@9-%NE)FN +M69TZ[;P-E8#\Y4AARJI`$6'](`O\MU7WIY<+CZ"*D/S-9[.=><+5K5G@WN"` +MB8:KHE*C_Q;\H_)G++W<[U"$K08NWP\U=SCFS"-;X;)SD4^*G#,CA('):_*S +M3*`"[MN"U\78A]Y^<=^7K^$FRTG\'<E0OS@)U9B5,)(*`#UJS!=>>_SJCL9T +M$M"4ZUH<ZET&T4YUCI<":LM9^PI2P&?IL#CN3J1(_'50[,,'CFJ=%UUUG91S +M`<;0WFW^2.VIV!>J/0EA^[PFK7Q;A(]-XN"OH#6$UD_>SG[@H><$6=?N#&-( +M8U!+]F`_72)=<[]`.?T[V@.OXQSLP$L<;_U]<"S%67%`?#N/XP24IE*&:FY/ +M/]><-A.`]LU1CP7C['B^B/\F5@IV24JC-_9TC0V_8E&&P13B^PZ`,.60P+_0 +MYN4)5L%`9^^!G[/#2>670#$FI9ZWD$^H[Q4T5X8!>3*5O-JJJ-@U7'!G(I[[ +M1".^J"/]&L'`?EZ/V4Y=41%=ZW]WF@%YSJW-2(I?"GK[)$+7C@I[D?FE2XJV +M#'61D;M2X2V.KG4IM.HTA(%3TZE:I-U)?SC>R.CBE3.!;1CDHOWK-,3R+('J +M;Q9TK_=H>)E9'<B:M/=\4;+J,'BS==1^THRUH'ZTF*IJ1VOTOC+04"JE(-JZ +M4]6;/*#]H&9"/4>=DFIO'7<4DPL-C"JG2$'P$^SO*'",7=;Z4M--IOR+8L77 +MKFY%V);CG'\H4(:WG65D!7T1\L&YJ[;J\Z!!]!>_8L@4\_+%1F)!]--)`88$ +M?&?TR&;0;@%<8[JA=KB)Z^:U5^;UT#O:.WTN^*GWC)M);IF@=[&ANVG)0HN6 +MWI6)5XC5T#-U5/%BTU]+&LQ%-ZL#+31#NZ,W6^VLT+E"2XDPCM]2D<?5&+[3 +M@6/5RL,-&;0`)F%)/A1@K4U4GM2+5C@0Y5?]BM'[>?N.6=O3=E'0I3B+-)_8 +M8N2D[;@(>GVU8<>K^H:>-3)/469((HJ<;6CJ=KK2X!'!\58]OVRT\[1DV%U] +M]+;#PU7;O9`@&L;N0[U2Y@W2A-BOF`(<C9.6NYM&'M;X7#[UJ+]E0ET5TQ9# +MEDF57BVN!P=M:V)<TD^?T4#%]88AY,2CX%@P2IES%8$J8$*D#N$(/Y*68U!) +M33/TU[OA]P6(2#82R$,DHWW:?6^>W&&K0H,S2"5<>AR;@*^<,<SQ8D[ZT[`, +M35A@*<404K]07/%05ZX:C5&D2PD@DGF)G\36APOYVY/G+(VG=0\NW0W'XB(O +MC!+M/U+^LIWG,D!MC]MNAC9#N1!RN7S>IOOFQ!U'L7^$Z\_D.?L;QY3J$>,W +MN$Q\]NFT?*;NZG_M#+:\_QZ[S7@V;?[0&J6__G*)]4W)`\_0^XZ/R3:#K@K6 +M:\'O[:!@B5S11B6L!7`+;.HUC9J$NGM(-^_$H//_Q^>`S:\O3"18!4__4F7R +MH')EA?'O33NS:7&?NTW9`?JJ6LS?_X^IPYJ!Z-0=WP[O,1K_W1`?[$7WE-XB +M.2OL-@GHY[[M]81'*WAM.[/'#)RHM!IZQG]$)PR][O1P[*4$8GX.\RJC^Y!) +M@8_V`(]5%ZF?!0$W5GHLA@ED:VDN?@V[C,*97#R42-NTMYJN?T'&^9*DHBGS +MW7<>Q=B%,(O&;%V222=;"N<4?;@TEI_N7=;L5%TK7H#G%&V$0W![+EJ#/];- +MJ5_:YB?0ER`ESRD3-"*;?]I8P?4?,0/%B;.-+Q*NFZZJ,3HU)%7["@!H"059 +MC#IY""-+"[C-/08(4I>EA*`;@(<$$<LP4B$B:E]?#U,P8XQN.MFCYG.&D$7\ +MXY4,^UV\E'`;)6U?KUHPW>AKE?.DQ,&/UQ0/K.V5HX5`<U0\Y,>-"?VMV*WQ +MP$G>?H1+KU,LQ3-+`GS.=>!$H2PGKS.OOBUK-<9'X/"]'FR$S]Q4S@]C"MUX +M84HP;6F6I$9PY<5N.A]:,3AT2Z:7X!.LW"SGLX&1WZ^6:U5`^%VJ*"HJ)2Q> +MR<@`'/+UQN+QY`D;S.@[Q97M"YI^`V2LX019:A-4J-C<8;Q+2=O_VI+4_CYU +M$P$T]ASI5Z2NP1\(W4NS*/O8Q1Y6/EUN*]U($#<#']T?-7OZBK:C5*8$#\.\ +M`.?4B6B?0H.VGOEB?`0L$[CWO0RV;PQG[]YO4([OS^KUC!*VS;,:7,B@%/B- +ML,D]E.)F'Q)BX=J>QGX66+-A(<C-Z+=,EJL.U1MY(6)_+B[5A8OL]=B"1[;K +M?$FFI>[-<4XT!"502XQSFA0'$.ZXX!39$L*F)I?UU_TX"L.M-<1SPH)CSO_O +MA8MW[+D&\>VQP,&#GUYN7_]:`O*R:X7CX8Z!!BVU2QBP<531RE'BN,(?(.K$ +M_/1ZJ6?\ZWC_%H<QACE?M-%ZHRLSEJRJI8)]$4(TH78FPT75%%"ANY]5S<?Y +MLW2!]S$0VDZ:0U!F<[*W9M/I^WGV7>$EZBK^[><0D/]$7S^D?T.:$(4@*$_V +MZ(`````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M`````````````8``````````````````*$OPP`Q?VO4_^?______________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_______________^@$?\B__K'_I_________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_________________________________________________________Z!' +M_(O_ZQ_Z?___________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M______________________________________^@3`'1%0R-%\6=F]S/A7.S +M5W8"T;9`[O=G2*&IP\3W2`(833>H2:8/`,[&-M/&Y!GWK4@<D`9+\//#CQL> +M,-D75WT2#SF<NKJ[NKJZ\=Y\2K^$7ZOU>#E*Z5VOR5^KBL`````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M`````````````````````````````````````````````````````````>K] +M7T\[_GZN?T/^/I_GT/4O.Q?SYW0Y_K]^YZGQ].4NQT.+`?0]2.AT80FY^38M +MC-UH&0]R&?>\/3Z/1^X4ZT^!N4Z4:9*:-$CN+!,AN>Z5('3INPWS_NJT>I`Q +MEA^_#-(OO7'F?`N31Z78C35VD7F4.&08ONMK<K,XNF:$WBM;".&=[T]&V&"+ +MHMZFYM^;8]6OP!<[^SJR::G]H/>'Z/IW^>?SOHYT6)%!7H['=ZO6]0\WN9L] +M'/S_R?R[&QY8,@B&!L_<S]^Z!]KT^S9^^)7_45@*%XUQ%IGP%SI<JO_+HTSA +MK.^-7&#H&1QK!T103:=;'QM&!),SC#L_^#BK9N4>=C>&?P",_X=^*>'IUO9+ +M!I_[\_Z8<@.GXJ4\>CJ)&GB\`A!8TU=.$"I:?N=I]G]/<]'-T^M!=`D`XCE8 +M!JN7'E&K`DR"8\?V]-7J,5K7UQ5'<+]FEU.;$!Z4&1SM88*"?3W?+[\X)U>A +MH^#]#>$#56&'M?;J>.KMZ57@N-):N7[XVZ;1QQ<R.J,\\K<T?V3-+IV9F2ID +M%`^=9XI"-3S7ABS_W'76*#17KC%$0TXP9KM^:/V0D#GFZ==1]M/7]U\WN=O2 +MT?!IRSBNZZQ`T]<;(-ZD!*EM2._7]532>;]1WA815)8\@RDMF"/+!(/T>IU? +MWK4OKS=:NG&%]=]*GRD($O%=%K]D%*E2C([A*)0WS=*OR3)?UZJ?1?%ZO+K] +MD&B@AY_W88M'73TMN!`>QOM7_-,4)_7>&W]L&3[?T^O_CYNE>^5_+W/_:R>8 +M&Z.WI9_@C:M]"Y\/W4G'3^Z+?@@J68M.)BZ/`ETX[^-^Z"[SJSX,)F&O/0HZ +M0PV66N,;O7>B\5ZX_>#AUFU*WVI\?&E]W:O[6[?0GQJ>MOWGAI^V)\"68D>& +M2/QE?L_#D"*?D5ZV<\L]1++_QO/P@DUZM6?[Q$%DXZ$[R\N0FZ([,@15!+0L +M!<DHSC:%-"WXR%15ER%+$0ZZ!+VH4G8^B:73-PSW'='!LF[Y/BW)TRMC0]&+ +M;<I1*R%D@F9[$<&YM;KDU:,ZJS$4_E5*9RYL`JD=\TW/W$\^KX*>=9%K?M7= +MA:Y<X]W!\(2BS*:S1PCN[,N<*@?FT6[OI=OCV^+(,/N+%"]'I\E_<GF\_._I +MG<Z,>U^7TJN7R`O'VY%71U(S)-WO;4&+1*YXM.65%X90P;)CC4=H$29N95RL +MRS#O),+>/5R.$9X*^/#N=GV$-TE:7,^."D3YWR48+\6.9(7^'M%":>`)GZ4R +M:N*>"^03M8ZJ74[FGT3>#<BX[:/LT,<7C@4]L]'M_+^KT3X<J6M4)W/KVTWX +M(9K-$YOJ?;V-B,:[T;G%B\1F3:W<80SKI&;05[*ROS;=5@PV/?J(+B8*F\TX +MK]L3+,(YWE6$BVBMDU6^8Y8:4E(B*D+?.4JM7&,"_YG)9?GV-6;DFPXHT_4@ +M^1L,HF2U=6C07JIF_2LS>9D960OE@UX%O&6._ZNJYLCB!,W-B\[)W7['!:PB +M\'XY%V/XRP=KA./R6^X<`T;BS9D,V"+I;FS-Y?XJ$K73X^QY*R2."*'P;UJO +M7E$H&N\X@/C%[1L5_;U7SR]WCO/9):4Y?(EI+>S$%V\]''EIWE6,$>6(O@+3 +ME[G#\?");LM@E?-3?CP*;D*S(U:ON4N?E<%T8)JF54U2VJU7FD,O@Z>QJR-2 +MZ]$'[.JA1.GM]KK]*3WMIN@Q8]9=O^N=OZ0OF$'83HEE&QW&8=Q9SC&7(HZ! +MT\56]-ARZ0CWLE=RG0:U[2V)E.'_K,KXFGKD,JPH2W)[CP\?_D'<+S8C_%+] +MEF32B&FU2Y,@:1B;SG3MZD%#;'BC"9%TM*_796%NG31&MW62'&8VV7G2&W*2 +M8_"I^'X>SX96^#80^^+?/@?3A_FU&%BKB"A6'M_R+O`W;3UFK8'X@2EPRF"B +MB.C*H#7`0[(C!G>Y?E@TZ^!XL9IZ9E*Z5Q"L),WOXAO=#HS/?P^GS03$?ROO +MBVREKR,\I>K(/.)^J/,R(!][,<Q;[LTFV9:0&O1ZO<2!,B<'DJ?R/P9VWZ*. +MU64VJ96?9T+E\S?2%'UY7OGE(*7EV*#=21E*WPC<F-+@GP>]7T6A38[L;5*M +MPVE56+MFK`W=K>U(0(/$!VRF)'4[YX]$*QA:#)'L^(WZY)E"Q)1K^B:IO3ZK +MA@.6<M),BQ6/?BE!QZ6"Z/%R5>L6=`"_YLZ(0Y&3%,0_)L67=S;-O4#B,0'6 +M</Z/`VI?C^9G6[0Y?SG[6"A0&?3J!7.B\H/FZ67V.S<IP->)R[=^,ZP/SWX0 +M@&.8'L81\%H:KS8?+YM;=WC9+O^/@B!''YT.F5OPU\[;]SX+9M#%'>I]%&&W +MG1`U:.-"-[8';;(*FK?I\/<X*59DR5NY:1'&'TY&0\V!,&S3I)'D:Q-U\&WC +M3W'[P*#Q(OR'-['5&/]\@8V'?D9WJU*P_=7HI`*6@&5+-T(44UMC4U<4/)"I +M%-#3F9U*_/5LT;,<N.&Z>LS.-T9XCHO61;2M@$\`6CG'QY4.\P!GUA3?ITK0 +MCW<&SL8L,37TB/+XZ90SU^_0EB>ZOK]_1MDA*F4]:`/,ZQR;5C2@1O+<G\^* +MZ1W*V[/N?`\E2"]_-@X!]J.Y*SB1CZ&.`>7Q/$52F4OGN\/,_'+"G,R[7/2I +ML$FBRTX>+,"R`D5>')8'I&,]:7?]56WD.)^0#G"0U,68W%CE(W]/6PQ0MZ). +MEB[;?2AL.OC$%1A/+!#J/''Z<ZZ]?(K=1,OS()I6=0`3AG7:X$R_Y!.6K=4& +M9;*[^/."%SG(VXW#*(W_/!H9[<TMZ0!LZ!-R_*:,4W6H;5H*E;YSKW%&TGB* +MG13UDRA5D%6:5<V[KE("RAFR4Z$^.<>]?K%@_&YC/\*V^;9#_'SSHD]N\V0$ +MIHKP^J$Y6AY=(?^EEA[BZV[/+6@$A"3V*>`XXEYGQI+%"%?@DKWC,5,9XRBG +M(DCB3:DC7,O:X1##E0=;8G*N,KDE4="68,2VHU`0SLDRPH(H$Y%RN%;TG->M +M7CEJU'K(37^^OJ7O,S+C%JL8X<2NN"?]\NON0;:O0Y^=/?!#'GEP9VO@VX(# +MO7]M?X]1HA445@;>0V`BP8$E=-_:ZTAPQIY[9A\I2Q_=L9@>&,5(2KFQQ\4* +M*J.*B+AW*?*`5[E.3JD;5XL%UE<[5R+HJ*^O*J4MBU*7)5S4_#J\_&(UO +MF-HZ@43FIH#,4-FD4T6"!9<<XI(G0XN,C\WF;_G<B2X>O"/P;L9Y0\$;5>\< +M;Q]KP2?\5:<AT:M&XM^9=H+[@PN:.A5I$\;TCY:J>G'1*;2JR2L'T?#/L4Z- +MGC21?PUWK.CGG+[7ZT8.C)'8_7G=L6D8=%L9<$O#1RM>'TQU#I3K..2U.S!< +MG1N#^&'R6-J&&N<DO'G_3_2(D<ZY/C_T00'(7ABLG?WV>&RG5WZN95X/S(V[ +M2D03%@"S:CD[T],"*J\LOZQ]K+%H3[(9Y<^Z0#>U9D`\NU<C)!W!U=EYKQNS +MY+K5E>,NSZ?:N?X/3?QI*:J(L6>($A+QV[!$AQ8)46R\6"NEJ5\U?;TP3K0" +MU=5=I'H=;4U\[\8:5_?#VZO-2-P(!N,YCV/$&*U=*H256[0JSR89H)LY4XPT +M5TM\KS6<!4R!=V2J]K>3+<@_!J;63WE0P!Z//K2TON'^XDKUL3+<UY4(6X4F +MWI?;MQ8]<=CERY9<C'CVMW9V]BC48CDC`[;P";^WLX-?2TNS5EM_6L([H>KA +MDX)KB4#CP3?2";-\^G*COB>2.&;FO5]JT=/^7\KM#RYKM7V_K5^E%>[Z/*X. +MTR*_CYZ_0DJ@8/1(I2Q7S@SD>/^WD&=5=70Y2B]C4!5^7+IL)S&C;)5@>\6# +M5ET-3EI4?=W.`GG8I@F2(!!$:V,5]4?O:'3\5?+%^M66W]%&>O!"[MZMB$/D +MRR?VZ4"2L?S$[1D#@=M95,6MKTC\C&%[XM+Y[N">&]*BY9?3`;8O;M<C')U[ +M2%;3I['8N2K'P3R;-'NQ+5S?'/"^0S&[O?[4:R9Z5U\:Y8N;7E+:6URS*G): +M`\"O'TYS3L[%W@XGY5PAGX(S<+-D5242(29Y"1&(,#K:R>>-B?KQDWU&&LKY +MO*7BN&Z)?.1LJ9O&\SL.%4K;C4F@!9NMF:=/8UM.OVN_[WZR2-K._^\9OGE/ +M8Z4/D)G&82NF::OD)F;4KU#B?LB_ON7)G*2`48/P@BRROKP^*$_2R0G^YH=[ +ML9>R6.]N[.33"H=?,_CT.?FQ98>3V_Y09`[MO>)F+Y9DU7KK_H\=2!=E-_<K +M,96&*94CHL,8:]C(\O&+<ZKM5UUUX52A[TNYO/#WJ=&;>'L[\&W'RYVML>6W +M2B5XVTKCM8$=QWDW7T)C=H/2`M>F>1Z.EFT89XYM6]Y`.74[6+UO9V-#+L2* +MRG?O$G&H]`_8.C5?AT",*;PS'GFM70XN>WV4Q427^(`*\<MHT\Z,Q>/X#CB^ +M$(`_Z;QM?B78W;%ULSQ]SP7'831UC7'T-)1'M@\&T\A	:U"^,-";S5OB:6 +MG$,M^1P8+(5[>J-K6.5*L'$0+)C=0HM;#!4F--U/NZDV&E#R0UWL[7NQTR?( +MK-5,,P+(U-G9HX8/FZ7$?96E_ZGDBWBI,:/#Y=^S<V9<3M.,W0C[WO8KMU4& +MCWKR[\3C:I4`$Q>;#LY:>^CB6&-NY)Y7X[_!HZ6Z,D&]`WT!%WRJ<9];OD]9 +MY>24+=]B3T1H[A.%^F.1/,DM#4>!\9]0K>"FYBN[!+*PDPZ'TMGH"-NLKU?X +MK&8!'XW9[RE.P5>/,E6Z?%N:LC`<1CX,4F<@B!KO78!YO$IQ`''Q7JO"IX\? +MBBR#]:TMSQ5EE<!YG2)LEROSGY*X[29)>G7D[+^G+:=BG2QFL>/B<S<5@J>O +M-QZJZ$.H`J_PPEC.-JXBK7]T=G#'\]ON_/CN":U"TF8LK:^LVXWN3E`F6;_# +MF@\C#/D]9LWKT#%HA\3BFCW4MIP#\!5<]$0Y$=*]?;JE'.^>7#5O5WUX9)44 +M:))UM76AT?_M<RXWJ8_@$J;H5DWIY9+6/\.[CW'_"CV+'_!9F\->55^=35MH +M8SBP1JTK'D6Y=#^?WQI>=*9C8FR=6JV)]+T%<P$RL@+#$!4A&2N\XMG.$]X5 +MWW8@^?H^XGGP2NK_;F<CX2^K9WA-F_Q\NW]5Z,S9=XP^^[;VM;-DM2SI++-- +M@@H`YNC!!SIW3#V[$/V?AT*=A:S^4#Q6O@YL<JZ6_-@X-O>__'6]A[DT)F]% +MM.9/8%$580S)=?9\16F`[F7>"]22&A^BE$`:%]89YK8LMX4\?*>YWLG)25RK +M*.K)901`V]&IJZOJ1J_6GW!LR>I^"`[07J:]@%V?5BQJ?SP/;WQ=6$)VG)G> +M,CD;"*2<J(OB#^)R.WIXC(N(!_+=$3KI$_"Y&<J\Q5+(W(X7)#A#<,6H'VJ; +MKZ/GF5"]\B[PZ519S;'6/<B@:0U3MEPP#*([L$OP@S9Q)Y5(EF?%RYY]=K^; +MI?UI"%T1]XXF5Y=++=$@N5HJRB67K$WBSO1:YU"=/B)_"P(1.ZQS8DE]0DN; +M6W9D1UHME*X8]ZG;,6*0/A>]BO';UTABY)#56A_?JZ>CVO<+0[/9T^Y#1S1\ +M'1BO@_7G[F+:SX]=K^LYM7V:F+!8@8V<W^7&F.UH?9[;T]#I]GH_9V^WV?K[ +M?:JWVNG*II\HB[\V"?8B%?71EDI077`I7TEG97?N-OC&L&=]$:UV8J4WMD;( +MG*L>WCQE9ON?5'U;4?[#8J%5Z%VJ6=4&'1J4HO;()4E6Z9]B#F&EOGA"Y<PY +M*_*Y79QUJ;7V+-FU!#KXE;:WU0`4;/;VD-!)[L=-D_3GC"?6D\X)5M6:Y*X< +M+KE2V3DFFO3[FCV[FFU<S"T-"?$!73TNQH=WJ]2@<ZW6JC("$K@L-Q6=P:XO +M-'M].TQ7R2^>]OY\)@Z$KQ<F"?P,&1XO_]!@N#:?_*]D'H2`OY#VK'@4R'XJ +MDN0LMMUQ&C74I_A^@C+K*0V\9**QJR&W&__7VZ!2?F94BHMCHVR!.MC7O1[5 +MW+S;QE,%.9<KMA)@>P\]L>4<',^O+3P:'OZ[N0-$59`T+&V[RU6]6;[V-V/2 +M\DOQI9RJV8A[VJ&3N-FHO1'WX^C$`6&2L/DNQK)5_WUI\QDNC?X],*1X0H=% +MT;6[0R[0Y+&X>-&5*QYNCCJ;<WU-K2NWC1F.X@]:,YCDB05]\JK(1(:L@[&W +MC[JL_"F?*N,%&DA]2?=TI8T@^XL&149^2<BG8ZO3_OIPHZ+U8;S.]U.G'\"P +M7.1:A`^22;?A\MOV=_1[/4TX4F2Z,'0#H]KK_7D2HNGW?<#O=O3]D^SNZ'L7 +M1ZWNGU;G,OA\4?^F_&,[%R65$^*GIFY'M_*R<].=CZ+\,;W(;5BA1TK@[=_( +M'NI*(.[=7+D9VR)6IV=19U8C"[HU.<QN9J5WY`7=25AKC)GFUP))-IG;$2[8 +MHT.WMZTJA2P`<*UL='CJ2U>GQV.5<O#5O5V.?:V0/-?F(K#<J='3\"=W;==P +M'`"UX%SJO[17QI["I]`&>63LCPVSZ%<=8_&<$7YI5O82X$^Z<##T4I_X<RDS +MGB;#97B_Q;L7>S;/-5[M4JN)*<.,PUX=<@21*+8?\@!8`NJL$\VJOXQXJ9_D +M3.WKH>4UTR@[R57^/8HS5-09>'[^!EC_/B&H.[#.Q3A=.O\</0`=G(/&Y;(. +MQEQI7,/5U67I!H=R(LY]RA\K)THR__[3U$`````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M````````````````````````````````````````/_9+R/Z,7]KU/_G_____ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_________________________H!'_(O_ZQ_Z?_______________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M______^@1_R+_^L?^G__________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M________________________________________________H$?\B__K'_I_ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_____________________________Z!,C_A?VNV[3!\````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M`'50AS509H$MI%\/F/4^T]A]:GY61>W-$D=K*48D@J19KZ-UX@W5I(05CF6[ +M[(CXM-/'Q^C,.*&X3^7'/##8'_F>E+Z+.!7!K[5XEI)C,E`)2K9=PC^3W!*> +M/=^JWKV#J"(QKCPP6:'6E9)Y.J(:%'W-59W0K-G+@+-9/@"A""<GR:A@3A.P +M``````&33]-UZFL!1#TW+M"JKMBU)9S'')>&TDQUZZ*Z!(7K==%W;K&"$J@J +MALS;<TVQBKXTKA=#*Y(`#AJ#EY0$%.@;"IQD$11"'Q4>75>P>"E5\-;N4E/M +M0A%P9LKU*,B)FLB7(LC%+GP-Z^OAE/&,`'46Y6\TGV,SB'PST\;25YCUTI@) +M"8'KR<U<*PA&](,1GI'N)KIH!Z:3E+K)N7)USOZ@\H4M!\3:X)%\=LBS"ZCD +M6YK)Z[B6G^+C,A,>_&OC2FE?A7ZGV6/IWY1];IKK:><9*`-O+^*CC4T2?\3C +M_M'7BFGLD;Y)8-WV+?F70"PKR_K2?DS;!F2K#Q)U^)[$X!XV5*%UYZ=7A]'N +MJRJW(KWG&Y:)'M=LW^%%XYMC7J/SQ2BQFE=9%4H:KU#/U&Z)XW&/F1DY^*&? +MKF)^:[Y;RQ8402:`0</+!;+PW_N?@5X6Z@WL^!Y%BTC-P"<?H(!?I(^8GY=@ +MU`LHF7*Y!!E[`L+.<=TADK8>.G!SK912WR+3;6S1-%I+>%40ZT<0YQAHQO;* +M\@_]:\Z&\O@X6JRH!7L'0]=%F\#4G+=W3O;]?@ST(*H"J*!>=9,1I"NM^<5$ +M,?M3##_F0@61;>:`LF\VDL')];&<]T56:4]2!OY.9(`/*6V>1@]'8#"*GU77 +M;#NK:^GSZ[&-$_(<R@/Y!>WYR<(5I51ZVR&>0E=MYM$UWTOV5=5'&,C<D_>R +MBKOW;AR"NES,-/?Z>M505*><)/.8)UL,A0CY:<H^]$D[**0$0_2(N!BT$_:` +MT`\&+E2X30\#D6B2O/V[A#:UK_T]K+T?9MN%3A#[MG+;V8Z!'5BZILB@;Q<< +M<G0PH8//]LG4,QQU]++IPI1WOLX05%SZVV@W\S!H.OB)>\.+<F#/K-E7&WE< +M%YM>IC`GC%8_TJ5_HG*`HW#K&]2WB/L(8";`73ZE8Y;1D(J@(T,=])2H!$P7 +M0R:0/B15*(]<*@J1D[43+>O$MZ$A&')!G0?"`I/RWJEW*L#<#D!I$\V:\",/ +M[J!XYT&0)B+9L6#"$>!0#V`<HEBN,5<W;Q5\J8+=U%]8TT1M/@["X-7T<)Z> +M*;I#]B(J/TC[I-H4P\V$J3&_7VBB^Z,]'9,8PUO5QM2^Y5?P<O:T28Q10CUV +MAMOL7GAFL=;P#WD,GL[IQ!T3/%1LD@(`2+V7GY,VWYF;ED6]`)N81B9;<O0> +M1\:_.IO%T4N"#U2-1H8Z]$6"3B%^+CQZ7CM4]>!+A*F1!\CK@_PCBB3,5V$W +MFK@M_W+2%)';;*J7&Y01`W``3(_X7]KVPYX0A2`H3^W1```````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M``````````````%`2_#`#%_:]3_Y________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M__________________________________________________________Z` +M1_R+_^L?^G__________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M________________________________________H$S/],17/Z59'_P````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M````````(``````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M`````````````````````````'!,`9$53(T7Q5F;[,_%5R8N9`6#;(',YDX1 +M0Q.'4\P@"&$PSB$FF#V!OD8VT]MR#/_42!R0!DOIUT[>VQ[89(N+GPD'O6]7 +M5U=W5U===[_)5Z$7E>5T:I72NUXE?QTE8``````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M`````````````````````````````````````````````!ZOS?3SO^?JY_0_ +MX^G^?0]2\[%_/G=#G^OW[GJ?'TY2['0XL!]#U(Z'1A";GY-BV,W6@9#W(9][ +MP]/H]'[A3K3X&Y3I1IDIHT2.XL$R&Y[I4@=.F[#?/^ZK1ZD#&6'[\,TB^]<> +M9\"Y-'I=B--7:1>90X9!B^ZVMRLSBZ9H3>*UL(X9WO3T;88(NBWJ;FWYMCU: +M_`%SO[.K)IJ?V@]X?H^G?YY_.^CG18D4%>CL=WJ];U#S>YFST<_/_)_+L;'E +M@R"(8&S]S/W[H'VO3[-G[XE?]16`H7C7$6F?`7.ERJ_\NC3.&L[XU<8.@9'& +ML'1%!-IUL?&T8$DS.,.S_X.*MFY1YV-X9_`(S_AWXIX>G6]DL&G_OS_IAR`Z +M?BI3QZ.HD:>+P"$%C35TX0*EI^YVGV?T]ST<W3ZT%T"0#B.5@&JY<>4:L"3( +M)CQ_;TU>HQ6M?7%4=POV:74YL0'I09'.UA@H)]/=\OOS@G5Z&CX/T-X0-588 +M>U]NIXZNWI5>"XTEJY?OC;IM''%S(ZHSSRMS1_9,TNG9F9*F04#YUGBD(U/- +M>&+/_<==8H-%>N,41#3C!FNWYH_9"0.>;IUU'VT]?W7S>YV]+1\&G+.*[KK$ +M#3UQL@WJ0$J6U([]?U5-)YOU'>%A%4ECR#*2V8(\L$@_1ZG5_>M2^O-UJZ<8 +M7UWTJ?*0@2\5T6OV04J5*,CN$HE#?-TJ_),E_7JI]%\7J\NOV0:*"'G_=ABT +M==/2VX$![&^U?\TQ0G]=X;?VP9/M_3Z_^/FZ5[Y7\O<_]K)Y@;H[>EG^"-JW +MT+GP_=2<=/[HM^""I9BTXF+H\"73COXW[H+O.K/@PF8:\]"CI##99:XQN]=Z +M+Q7KC]X.'6;4K?:GQ\:7W=J_M;M]"?&IZV_>>&G[8GP)9B1X9(_&5^S\.0(I +M^17K9SRSU$LO_&\_""37JU9_O$063CH3O+RY";HCLR!%4$M"P%R2C.-H4T+? +MC(5%67(4L1#KH$O:A2=CZ)I=,W#/<=T<&R;OD^+<G3*V-#T8MMRE$K(62"9G +ML1P;FUNN35HSJK,13^54IG+FP"J1WS3<_<3SZO@IYUD6M^U=V%KESCW<'PA* +M+,IK-'".[LRYPJ!^;1;N^EV^/;XL@P^XL4+T>GR7]R>;S\[^F=SHQ[7Y?2JY +M?("\?;D5='4C,DW>]M08M$KGBTY947AE#!LF.-1V@1)FYE7*S+,.\DPMX]7( +MX1G@KX\.YV?80W25I<SXX*1/G?)1@OQ8YDA?X>T4)IX`F?I3)JXIX+Y!.UCJ +MI=3N:?1-X-R+CMH^S0QQ>.!3VST>W\OZO1/ARI:U0G<^O;3?@AFLT3F^I]O8 +MV(QKO1N<6+Q&9-K=QA#.ND9M!7LK*_-MU6##8]^H@N)@J;S3BOVQ,LPCG>58 +M2+:*V35;YCEAI24B(J0M\Y2JU<8P+_F<EE^?8U9N2;#BC3]2#Y&PRB9+5U:- +M!>JF;]*S-YF1E9"^6#7@6\98[_JZKFR.($S<V+SLG=?L<%K"+P?CD78_C+!V +MN$X_);[AP#1N+-F0S8(NEN;,WE_BH2M=/C['DK)(X(H?!O6J]>42@:[SB`^, +M7M&Q7]O5?/+W>.\]DEI3E\B6DM[,07;ST<>6G>58P1Y8B^`M.7N</Q\(ENRV +M"5\U-^/`IN0K,C5J^Y2Y^5P71@FJ9535+:K5>:0R^#I[&K(U+KT0?LZJ%$Z> +MWVNOTI/>VFZ#%CUEV_ZYV_I"^80=A.B64;'<9AW%G.,9<BCH'3Q5;TV'+I"/ +M>R5W*=!K7M+8F4X?^LROB:>N0RK"A+<GN/#Q_^0=PO-B/\4OV69-*(:;5+DR +M!I&)O.=.WJ04-L>*,)D72TK]=E86Z=-$:W=9(<9C;9>=(;<I)C\*GX?A[/AE +M;X-A#[XM\^!].'^;486*N(*%8>W_(N\#=M/6:M@?B!*7#*8**(Z,J@-<!#LB +M,&=[E^6#3KX'BQFGIF4KI7$*PDS>_B&]T.C,]_#Z?-!,1_*^^+;*6O(SREZL +M@\XGZH\S(@'WLQS%ONS2;9EI`:]'J]Q($R)P>2I_(_!G;?HH[593:IE9]G0N +M7S-](4?7E>^>4@I>78H-U)&4K?"-R8TN"?![U?1:%-CNQM4JW#:558NV:L#= +MVM[4A`@\0';*8D=3OGCT0K&%H,D>SXC?KDF4+$E&OZ)JF]/JN&`Y9RTDR+%8 +M]^*4''I8+H\7)5ZQ9T`+_FSHA#D9,4Q#\FQ9=W-LV]0.(Q`=9P_H\#:E^/YF +M=;M#E_.?M8*%`9].H%<Z+R@^;I9?8[-RG`UXG+MWXSK`_/?A"`8Y@>QA'P6A +MJO-A\OFUMW>-DN_X^"($<?G0Z96_#7SMOW/@MFT,4=ZGT48;>=$#5HXT(WM@ +M=ML@J:M^GP]S@I5F3)6[EI$<8?3D9#S8$P;-.DD>1K$W7P;>-/<?O`H/$B_( +M<WL=48_WR!C8=^1G>K4K#]U>BD`I:`94LW0A136V-35Q0\D*D4T-.9G4K\]6 +MS1LQRXX;IZS,XW1GB.B]9%M*V`3P!:.<?'E0[S`&?6%-^G2M"/=P;.QBPQ-? +M2(\OCIE#/7[]"6)[J^OW]&V2$J93UH`\SK')M6-*!&\MR?SXKI'<K;L^Y\#R +M5(+W\V#@'VH[DK.)&/H8X!Y?$\15*92^>[P\S\<L*<S+M<]*FP2:++3AXLP+ +M("15X<E@>D8SUI=_U5;>0XGY`.<)#4Q9C<6.4C?T];#%"WHDZ6+MM]*&PZ^, +M05&$\L$.H\<?ISKKU\BMU$R_,@FE9U`!.&==K@3+_D$Y:MU09ELKOX\X(7.< +MC;C<,HC?\\&AGMS2WI`&SH$W+\IHQ3=:AM6@J5OG.O<4;2>(J=%/63*%6059 +MI5S;NN4@+*&;)3H3XYQ[U^L6#\;F,_PK;YMD/\?/.B3V[S9`2FBO#ZH3E:'E +MTA_Z66'N+K;L\M:`2$)/8IX#CB7F?&DL4(5^"2O>,Q4QGC**<B2.)-J2-<R] +MKA$,.5!UMB<JXRN251T)9@Q+:C4!#.R3+"@B@3D7*X5O2<UZU>.6K4>LA-?[ +MZ^I>\S,N,6JQCAQ*ZX)_WRZ^Y!MJ]#GYT]\$,>>7!G:^#;@@.]?VU_CU&B%1 +M16!MY#8"+!@25TW]KK2'#&GGMF'RE+']VQF!X8Q4A*N;''Q0HJHXJ(N'<I\H +M!7N4Y.J1M7BP765SM7(NBHKX8-6\JI2V+4I<E7-3\.KS\8C6^8VCJ!1.:F@, +MQ0V:1318(%EQSBDB=#BXR/S>9O^=R)+AZ\(_!NQGE#P1M5[QQO'VO!)_Q5IR +M'1JT;BWYEV@ON#"YHZ%6D3QO2/EJIZ<=$IM*K)*P?1\,^Q3HV>-)%_#7>LZ. +M><OM?K1@Z,D=C]>=VQ:1AT6QEP2\-'*UX?3'4.E.LXY+4[,%R=&X/X8?)8VH +M8:YR2\>?]/](B1SKD^/_1!`<A>&*R=_?9X;*=7?JYE7@_,C;M*1!,6`+-J.3 +MO3TP(JKRR_K'VLL6A/LAGES[I`-[5F0#R[5R,D'<'5V7FO&[/DNM65XR[/I] +MJY_@]-_&DIJHBQ9X@2$O';L$2'%@E1;+Q8*Z6I7S5]O3!.M`+5U5VD>AUM37 +MSOQAI7]\/;J\U(W`@&XSF/8\08K5TJA)5;M"K/)AF@FSE3C#172WRO-9P%3( +M%W9*KVMY,MR#\&IM9/>5#`'H\^M+2^X?[B2O6Q,MS7E0A;A2;>E]NW%CUQV. +M7+EER,>/:W=G;V*-1B.2,#MO`)O[>S@U]+2[-66W]:PCNAZN&3@FN)0./!-] +M()LWSZ<J.^)Y(X9N:]7VK1T_Y?RNT/+FNU?;^M7Z45[OH\K@[3(K^/GK]"2J +M!@]$BE+%?.#.1X_[>09U5U=#E*+V-0%7Y<NFPG,:-LE6![Q8-670U.6E1]W< +MX">=BF"9(@$$1K8Q7U1^]H=/Q5\L7ZU9;?T49Z\$+NWJV(0^3+)_;I0)*Q_, +M3M&0.!VUE4Q:VO2/R,87OBTOGNX)X;TJ+EE],!MB]NUR,<G7M(5M.GL=BY*L +M?!/)LT>[$M7-\<\+Y#,;N]_M1K)GI77QKEBYM>4MI;7+,J<EH#P*\?3G-.SL +M7>#B?E7"&?@C-PLV15)1(A)GD)$8@P.MK)YXV)^O&3?48:ROF\I>*X;HE\Y& +MRIF\;S.PX52MN-2:`%FZV9IT]C6TZ_:[_O?K)(VL[_[QF^>4]CI0^0F<9A*Z +M9IJ^0F9M2O4.)^R+^^Y<F<I(!1@_""++*^O#XH3]+)"?[FAWNQE[)8[V[LY- +M,*AU\S^/0Y^;%EAY/;_E!D#NV]XF8OEF35>NO^CQU(%V4W]RLQE88IE2.BPQ +MAKV,CR\8MSJNU7777A5*'O2[F\\/>IT9MX>SOP;<?+G:VQY;=*)7C;2N.U@1 +MW'>3=?0F-V@]("UZ9Y'HZ6;1AGCFU;WD`Y=3M8O6]G8T,NQ(K*=^\2<:CT#] +M@Z-5^'0(PIO#,>>:U=#BY[?93%1)?X@`KQRVC3SHS%X_@..+X0@#_IO&U^)= +MC=L76S/'W/!<=A-'6-<?0TE$>V#P;3R$8-EK4+XPT)O-6^)I:<0RWY'!@LA7 +MMZHVM8Y4JP<1`LF-U"BUL,%28TW4^[J38:4/)#7>SM>['3)\BLU4PS`LC4V= +MFCA@^;I<1]E:7_J>2+>*DQH\/EW[-S9EQ.TXS="/O>]BNW50:/>O+OQ.-JE0 +M`3%YL.SEI[Z.)88V[DGE?CO\&CI;HR0;T#?0$7?*IQGUN^3UGEY)0MWV)/1& +MCN$X7Z8Y$\R2T-1X'QGU"MX*;F*[L$LK"3#H?2V>@(VZRO5_BL9@$?C=GO*4 +M[!5X\R5;I\6YJR,!Q&/@Q29R"(&N]=@'F\2G$`<?%>J\*GCQ^*+(/UK2W/%6 +M65P'F=(FR7*_.?DKCM)DEZ=>3LOZ<MIV*=+&:QX^)S-Q6"IZ\W'JKH0Z@"K_ +M#"6,XVKB*M?W1V<,?SV^[\^.X)K4+29BRMKZS;C>Y.4"99O\.:#R,,^3UFS> +MO0,6B'Q.*:/=2VG`/P%5ST1#D1TKU]NJ4<[YY<-6]7?7ADE11HDG6U=:'1_^ +MUS+C>IC^`2INA63>GEDM8_P[N/<?\*/8L?\%F;PUY57YU-6VAC.+!&K2L>1; +MET/Y_?&EYTIF-B;)U:K8GTO05S`3*R`L,0%2$9*[SBV<X3WA7?=B#Y^C[B>? +M!*ZO]N9R/A+ZMG>$V;_'R[?U7HS-EWC#[[MO:ULV2U+.DLLTV""@#FZ,$'.G +M=,/;L0_9^'0IV%K/Y0/%:^#FQRKI;\V#@V][_\=;V'N30F;T6TYD]@415A#, +MEU]GQ%:8#N9=X+U)(:'Z*40!H7UAGFMBRWA3Q\I[G>R<E)7*LHZLEE!$#;T: +MFKJ^I&K]:?<&S)ZGX(#M!>IKV`79]6+&I_/`]O?%U80G:<F=XR.1L(I)RHB^ +M(/XG([>GB,BX@'\MT1.ND3\+D9RKS%4LC<CA<D.$-PQ:@?:INOH^>94+WR+O +M#I5%G-L=8]R*!I#5.V7#`,HCNP2_"#-G$GE4B69\7+GGUVOYNE_6D(71'WCB +M97ETLMT2"Y6BK*)9>L3>+.]%KG4)T^(G\+`A$[K'-B27U"2YM;=F1'6BV4KA +MCWJ=LQ8I`^%[V*\=O72&+DD-5:']^KIZ/:]PM#L]G3[D-'-'P=&*^#]>?N8M +MK/CUVOZSFU?9J8L%B!C9S?Y<:8[6A]GMO3T.GV>C]G;[?9^OM]JK?:Z<JFGR +MB+OS8)]B(5]=&62E!=<"E?26=E=^XV^,:P9WT1K79BI3>V1LB<JQ[>/&5F^Y +M]4?5M1_L-BH57H7:I9U08=&I2B]L@E25;IGV(.8:6^>$+ES#DK\KE=G'6IM? +M8LV;4$.OB5MK?5`!1L]O:0T$GNQTV3].>,)]:3S@E6U9KDKAPNN5+9.2::]/ +MN:/;N:;5S,+0T)\0%=/2[&AW>KU*!SK=:J,@(2N"PW%9W!KB\T>WT[3%?)+Y +M[V_GPF#H2O%R8)_`P9'B__T&"X-I_\KV0>A("_D/:L>!3(?BJ2Y"RVW7$:-= +M2G^'Z",NLI#;QDHK&K(;<;_]?;H%)^9E2*BV.C;($ZV->]'M7<O-O&4P4YER +MNV$F![#SVQY1P<SZ\M/!H>_KNY`T15D#0L;;O+5;U9OO8W8]+R2_&EG*K9B' +MO:H9.XV:B]$??CZ,0!89*P^2[&LE7_?6GS&2Z-_CTPI'A"AT71M;M#+M#DL; +MAXT94K'FZ..IMS?4VM*[>-&8[B#UHSF.2)!7WRJLA$AJR#L;>/NJS\*9\JXP +M4:2'U)]W2EC2#[BP9%1GY)R*=CJ]/^^G"CHO5AO,[W4Z<?P+!<Y%J$#Y))M^ +M'RV_9W]'L]33A29+HP=`.CVNO]>1*BZ?=]P.]V]/V3[.[H>Q='K>Z?5N<R^' +MQ1_Z;\8SL7)943XJ>F;D>W\K)STYV/HOPQO<AM6*%'2N#MW\@>ZDH@[MU<N1 +MG;(E:G9U%G5B,+NC4YS&YFI7?D!=U)6&N,F>;7`DDVF=L1+MBC0[>WK2J%+` +M!PK6QT>.I+5Z?'8Y5R\-6]78Y]K9`\U^8BL-RIT=/P)W=MUW`<`+7@7.J_M% +M?&GL*GT`9Y9.R/#;/H5QUC\9P1?FE6]A+@3[IP,/12G_AS*3.>)L-E>+_%NQ +M=[-L\U7NU2JXDIPXS#7AUR!)$HMA_R`%@"ZJP3S:J_C'BIG^1,[>NAY373*# +MO)5?X]BC-4U!EX?OX&6/\^(:@[L,[%.%TZ_QP]`!V<@\;EL@[&7&E<P]759> +MD&AW(BSGW*'RLG2C+__M/40````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````?^TO(_HQ?VO4_^?__________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M___________^@$?\B__K'_I_____________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_____________________________________________________Z!'_(O_ +MZQ_Z?_______________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M__________________________________^@1_R+_^L?^G______________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M________________H$?\B__K'_I_________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_____________________________________________]"'A_UBY2R"4]W" +ML*RE:_OGG3#+\L@,>,PN7D[&4009/5G@?.;JM:BXCPHCK]VV<T,.3>[!W!8P +MYAI3ZHH(AMZ-VR@&&VJ'#SQX0QE)?R4N3VT'614`IIGL^R($79%MI#B-X4CY +M2<,-?%!I-[HQ#<T2K08&<KK;P1)6"&,)P#]*3M`6Y.=>M]PYYZ?6SOAM+5LW +MF&<#GI93057E-9"T'5(%972#)X_X&MZ%%<J"NOIY_OUK2@9"Z7'@(^UR&T[# +M+P]D-$_7G4<D8W:7;LI=9VN1ARH&626N<A%DLZ$'=G_JPJ73$6EEM)]_^@:C +M[$G:9TAWFSF*0;F,MH?R-J_G#M3>>,"#R0K[^%DUAQ_L=6WC_=;3^$B&IX@7 +M6#\FJ!/@DO,_:Q4&@$=1%+9L9'QX-`*25C]4+S1EM<'\+&/@+SZ!Z;8S%PZ; +M(==I$41B7WFK6VK3@'SRI+W`+B[X)G@4O0_W,7;CI_)#=I9$>48_/@*<Z,`# +M1:R#@RJ\G3#6@:+N9D.6G[/":;%]QF^#*6^UW!`>[!9_P6E;Z30VBMPXWC4A +MRUON:T2OHRGTI6-N1.9O4Q7!K2]V<9LB\ZOK`;O-+6./K\O;V>YL3U0;<@G] +MLA2<ZT`*)K<C"YF[CY=CBNECVG&2>,Q)]X^--?L#,";:,7QJQN4A;W5Z;,Q7 +M)^5/T,L?'O%IN1VBJHSYE"_F##3P-7AKO2*<+FA"Q7SX?[-K1*!"L]\N9+:. +M0,0/+O.NFOO8/98)R4T.=YUS'P05OYLC5UIA3#;.%]R3H86ZW$_$0R7#/%`, +MXN35/Z7_EIY(DISE:VN1+&?5:$\/OB?_.UY_;YHU]1>KOO^1>SO&=^G!C.=( +MELO]V=4)15`MSI")D`+9IQ_M4>U*+:4'_Z><SR,EH8COU@/V/4I4X-J_)M[, +M2Q.1G';<E[*.*IH+V9&"@*P9YM0XX7^?&/@!AZZZ\GU1DZC&,^K)CMVF=-7A +M38QB*DN!E-C^354>[O6X((_Q"?<;ZJ5$<+9V6$EU40\:$&L%"BJB(8<0I[G_ +M!\`J./DJ`+W_1/'D9-O>\"'>)A+>%(A^RMG>^['D=3[P%6?=^<0A-E2XHAZ& +MM=M"/D&+NG;>+:_<_&(J-_X/$>`%(*^FHJEU.9*6OP.!?U:YX0_DSJ)4K>;9 +M<`K%R=FAF@5??,.T'?Q$9N9;%S:]GTXV!-OLL]NJ;\1'O+T/NS/BRH>?$*/D +M[P!,C_A?VNV'/"$*0%"?VZ(````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M`````````````````````````````````````````````````````H!+\,`, +M7]KU/_G_____________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_____________________________________________________U95>P]` +/%`##I8[U```````````` +` +end 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 new file mode 100644 index 0000000..696ff56 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0002.rar.uu @@ -0,0 +1,1337 @@ +begin 644 - +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/___________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_____________________________________________H!'_(O_ZQ_Z?___ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M__________________________^@1_R+_^L?^G______________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M________H$P!T14,C1?%G9O<SX5SLU=V`M&V0.[W9TBAJ</$]T@"&$TWJ$FF +M#P#.QC;3QN09]ZU(')`&2_#SPX\;'C#9%U=]$@\YG+JZN[JZNO'>?$J_A%^K +M]7@Y2NE=K\E:7/38```````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M``````````````````````````````'J_/Z>=_S]7/Z'_'T_SZ'J7G8OY\[H +M<_U^_<]3X^G*78Z'%@/H>I'0Z,(3<_)L6QFZT#(>Y#/O>'I]'H_<*=:?`W*= +M*-,E-&B1W%@F0W/=*D#ITW8;Y_W5:/4@8RP_?AFD7WKCS/@7)H]+L1IJ[2+S +M*'#(,7W6UN5F<73-";Q6MA'#.]Z>C;#!%T6]3<V_-L>K7X`N=_9U9--3^T'O +M#]'T[_//YWT<Z+$B@KT=CN]7K>H>;W,V>CGY_Y/Y=C8\L&01#`V?N9^_=`^U +MZ?9L_?$K_J*P%"\:XBTSX"YTN57_ET:9PUG?&KC!T#(XU@Z(H)M.MCXVC`DF +M9QAV?_!Q5LW*/.QO#/X!&?\._%/#TZWLE@T_]^?],.0'3\5*>/1U$C3Q>`0@ +ML::NG"!4M/W.T^S^GN>CFZ?6@N@2`<1RL`U7+CRC5@29!,>/[>FKU&*UKZXJ +MCN%^S2ZG-B`]*#(YVL,%!/I[OE]^<$ZO0T?!^AO"!JK##VOMU/'5V]*KP7&D +MM7+]\;=-HXXN9'5&>>5N:/[)FET[,S)4R"@?.L\4A&IYKPQ9_[CKK%!HKUQB +MB(:<8,UV_-'[(2!SS=.NH^VGK^Z^;W.WI:/@TY9Q7==8@:>N-D&]2`E2VI'? +MK^JII/-^H[PL(JDL>0926S!'E@D'Z/4ZO[UJ7UYNM73C"^N^E3Y2$"7BNBU^ +MR"E2I1D=PE$H;YNE7Y)DOZ]5/HOB]7EU^R#100\_[L,6CKIZ6W`@/8WVK_FF +M*$_KO#;^V#)]OZ?7_Q\W2O?*_E[G_M9/,#=';TL_P1M6^A<^'[J3CI_=%OP0 +M5+,6G$Q='@2Z<=_&_=!=YU9\&$S#7GH4=(8;++7&-WKO1>*]<?O!PZS:E;[4 +M^/C2^[M7]K=OH3XU/6W[SPT_;$^!+,2/#)'XROV?AR!%/R*];.>6>HEE_XWG +MX02:]6K/]XB"R<="=Y>7(3=$=F0(J@EH6`N249QM"FA;\9"HJRY"EB(==`E[ +M4*3L?1-+IFX9[CNC@V3=\GQ;DZ96QH>C%MN4HE9"R03,]B.#<VMUR:M&=59B +M*?RJE,Y<V`52.^:;G[B>?5\%/.LBUOVKNPM<N<>[@^$)19E-9HX1W=F7.%0/ +MS:+=WTNWQ[?%D&'W%BA>CT^2_N3S>?G?TSN=&/:_+Z57+Y`7C[<BKHZD9DF[ +MWMJ#%HE<\6G+*B\,H8-DQQJ.T"),W,JY699AWDF%O'JY'",\%?'AW.S["&Z2 +MM+F?'!2)\[Y*,%^+',D+_#VBA-/`$S]*9-7%/!?()VL=5+J=S3Z)O!N1<=M' +MV:&.+QP*>V>CV_E_5Z)\.5+6J$[GU[:;\$,UFB<WU/M[&Q&-=Z-SBQ>(S)M; +MN,(9UTC-H*]E97YMNJP8;'OU$%Q,%3>:<5^V)EF$<[RK"1;16R:K?,<L-*2D +M1%2%OG*56KC&!?\SDLOS[&K-R38<4:?J0?(V&43):NK1H+U4S?I69O,R,K(7 +MRP:\"WC+'?]75<V1Q`F;FQ>=D[K]C@M81>#\<B['\98.UPG'Y+?<.`:-Q9LR +M&;!%TMS9F\O\5"5KI\?8\E9)'!%#X-ZU7KRB4#7><0'QB]HV*_MZKYY>[QWG +MLDM*<OD2TEO9B"[>>CCRT[RK&"/+$7P%IR]SA^/A$MV6P2OFIOQX%-R%9D:M +M7W*7/RN"Z,$U3*J:I;5:KS2&7P=/8U9&I=>B#]G50HG3V^UU^E)[VTW08L>L +MNW_7.W](7S"#L)T2RC8[C,.XLYQC+D4=`Z>*K>FPY=(1[V2NY3H-:]I;$RG# +M_UF5\33UR&584);D]QX>/_R#N%YL1_BE^RS)I1#3:I<F0-(Q-YSIV]2"AMCQ +M1A,BZ6E?KLK"W3IHC6[K)#C,;;+SI#;E),?A4_#\/9\,K?!L(??%OGP/IP_S +M:C"Q5Q!0K#V_Y%W@;MIZS5L#\0)2X93!11'1E4!K@(=D1@SO<ORP:=?`\6,T +M],RE=*XA6$F;W\0WNAT9GOX?3YH)B/Y7WQ;92UY&>4O5D'G$_5'F9$`^]F.8 +MM]V:3;,M(#7H]7N)`F1.#R5/Y'X,[;]%':K*;5,K/LZ%R^9OI"CZ\KWSRD%+ +MR[%!NI(RE;X1N3&EP3X/>KZ+0IL=V-JE6X;2JK%VS5@;NUO:D($'B`[93$CJ +M=\\>B%8PM!DCV?$;]<DRA8DHU_1-4WI]5PP'+.6DF18K'OQ2@X]+!='BY*O6 +M+.@!?\V=$(<C)BF(?DV++NYMFWJ!Q&(#K.']'@;4OQ_,SK=H<OYS]K!0H#/I +MU`KG1>4'S=++['9N4X&O$Y=N_&=8'Y[\(0#',#V,(^"T-5YL/E\VMN[QLEW_ +M'P1`CC\Z'3*WX:^=M^Y\%LVABCO4^BC#;SH@:M'&A&]L#MMD%35OT^'N<%*L +MR9*W<M(CC#Z<C(>;`F#9ITDCR-8FZ^#;QI[C]X%!XD7Y#F]CJC'^^0,;#OR, +M[U:E8?NKT4@%+0#*EFZ$**:VQJ:N*'DA4BFAIS,ZE?GJV:-F.7'#=/69G&Z, +M\1T7K(MI6P">`+1SCX\J'>8`SZPIOTZ5H1[N#9V,6&)KZ1'E\=,H9Z_?H2Q/ +M=7U^_HVR0E3*>M`'F=8Y-JQI0(WEN3^?%=([E;=GW/@>2I!>_FP<`^U'<E9Q +M(Q]#'`/+XGB*I3*7SW>'F?CEA3F9=KGI4V"319:</%F!9`2*O#DL#TC&>M+O +M^JK;R'$_(!SA(:F+,;BQRD;^GK88H6]$G2Q=MOI0V'7QB"HPGE@AU'CC].== +M>OD5NHF7YD$TK.H`)PSKM<"9?\@G+5NJ#,ME=_'G!"YSD;<;AE$;_G@T,]N: +M6](`V=`FY?E-&*;K4-JT%2M\YU[BC:3Q%3HIZR90JR"K-*N;=URD!90S9*=" +M?'./>OUBP?C<QG^%;?-LA_CYYT2>W>;("4T5X?5"<K0\ND/_2RP]Q=;=GEK0 +M"0A)[%/`<<2\SXTEBA"OP25[QF*F,\913D21Q)M21KF7M<(AARH.ML3E7&5R +M2J.A+,&);4:@(9V2984$4"<BY7"MZ3FO6KQRU:CUD)K_?7U+WF9EQBU6,<.) +M77!/^^77W(-M7H<_.GO@ACSRX,[7P;<$!WK^VO\>HT0J**P-O(;`18,"2NF_ +MM=:0X8T\]LP^4I8_NV,P/#&*D)5S8X^*%%5'%1%P[E/E`*]RG)U2-J\6"ZRN +M=JY%T5%?#!JWE5*6Q:E+DJYJ?AU>?C$:WS&T=0*)S4T!F*&S2*:+!`LN.<4D +M3H<7&1^;S-_SN1)</7A'X-V,\H>"-JO>.-X^UX)/^*M.0Z-6C<6_,NT%]P87 +M-'0JTB>-Z1\M5/3CHE-I59)6#Z/AGV*=&SQI(OX:[UG1SSE]K]:,'1DCL?KS +MNV+2,.BV,N"7AHY6O#Z8ZATIUG'):G9@N3HW!_##Y+&U##7.27CS_I_I$2.= +M<GQ_Z((#D+PQ63O[[/#93J[]7,J\'YD;=I2()BP!9M1R=Z>F!%5>67]8^UEB +MT)]D,\N?=(!O:LR`>7:N1D@[@ZNR\UXW9\EUJRO&79]/M7/\'IOXTE-5$6+/ +M$"0EX[=@B0XL$J+9>+!72U*^:OMZ8)UH!:NJNTCT.MJ:^=^,-*_OA[=7FI&X +M$`W&<Q['B#%:NE4)*K=H59Y,,T$V<J<8:*Z6^5YK.`J9`N[)5>UO)EN0?@U- +MK)[RH8`]'GUI:7W#_<25ZV)EN:\J$+<*3;TOMVXL>N.QRY<LN1CQ[6[L[>Q1 +MJ,1R1@=MX!-_;V<&OI:79JRV_K6$=T/5PR<$UQ*!QX)OI!-F^?3E1WQ/)'#- +MS7J^U:.G_+^5VAY<UVK[?UJ_2BO=]'E<':9%?Q\]?H250,'HD4I8KYP9R/'_ +M;R#.JNKH<I1>QJ`J_+ETV$YC1MDJP/>+!JRZ&IRTJ/N[G`3SL4P3)$`@B-;& +M*^J/WM#I^*OEB_6K+;^BC/7@A=V]6Q"'R99/[=*!)6/YB=HR!P.VLJF+6UZ1 +M^1C"]\6E\]W!/#>E1<LOI@-L7MVN1CDZ]I"MIT]CL7)5CX)Y-FCW8EJYOCGA +M?(9C=WO]J-9,]*Z^-<L7-KREM+:Y9E3DM`>!7CZ<YIV=B[P<3\JX0S\$9N%F +MR*I*)$),\A(C$&!UM9//&Q/UXR;ZC#65\WE+Q7#=$OG(V5,WC>9V'"J5MQJ3 +M0`LW6S-.GL:VG7[7?][]9)&UG?_>,WSRGL=*'R$SC,)73--7R$S-J5ZAQ/V1 +M?WW+DSE)`*,'X01997UX?%"?I9(3_<T.]V,O9+'>W=G)IA4.OF?QZ'/S8LL/ +M)[?\H,@=VWO$S%\LR:KUU_T>.I`NRF_N5F,K#%,J1T6&,->QD>7C%N=5VJZZ +MZ\*I0]Z7<WGA[U.C-O#V=^#;CY<[6V/+;I1*\;:5QVL".X[R;KZ$QNT'I`6O +M3/(]'2S:,,\<VK>\@'+J=K%ZWL[&AEV)%93OWB3C4>@?L'1JOPZ!&%-X9CSS +M6KH<7/;[*8J)+_$`%>.6T:>=&8O'\!QQ?"$`?]-XVOQ+L;MBZV9X^YX+CL)H +MZQKCZ&DHCVP>#:>0C!LM:A?&&A-YJWQ-+3B&6_(X,%D*]O5&UK'*E6#B(%DQ +MNH46MA@J3&FZGW=2;#2AY(:[V=KW8Z9/D5FJF&8%D:FSLT<,'S=+B/LK2_]3 +MR1;Q4F-'A\N_9N;,N)VG&;H1][WL5VZJ#1[UY=^)QM4J`"8O-AV<M/?1Q+#& +MW<D\K\=_@T=+=&2#>@;Z`B[Y5.,^MWR>L\O)*%N^Q)Z(T=PG"_3'(GF26AJ/ +M`^,^H5O!3<Q7=@EE828=#Z6ST!&W65ZO\5C,`C\;L]Y2G8*O'F2K=/BW-61@ +M.(Q\&*3.01`UWKL`\WB4X@#CXKU7A4\>/Q19!^M:6YXJRRN`\SI$V2Y7YS\E +M<=I,DO3KR=E_3EM.Q3I8S6/'Q.9N*P5/7FX]5="'4`5?X82QG&U<15K^Z.SA +MC^>WW?GQW!-:A:3,65M?6;<;W)R@3+-_AS0>1AGR>LV;UZ!BT0^)Q31[J6TX +M!^`JN>B(<B.E>OMU2CG?/+AJWJ[Z\,DJ*-$DZVKK0Z/_VN9<;U,?P"5-T*R; +MT\LEK'^'=Q[C_A1[%C_@LS>&O*J_.IJVT,9Q8(U:5CR+<NA_/[XTO.E,QL39 +M.K5;$^EZ"N8"960%AB`J0C)7><6SG">\*[[L0?/T?<3SX)75_MS.1\)?5L[P +MFS?X^7;^J]&9LN\8??=M[6MFR6I9TEEFFP04`<W1@@YT[IA[=B'[/PZ%.PM9 +M_*!XK7P<V.5=+?FP<&WO?_CK>P]R:$S>BVG,GL"B*L(9DNOL^(K3`=S+O!>I +M)#0_12B`-"^L,\UL66\*>/E/<[V3DI*Y5E'5DLH(@;>C4U=7U(U?K3[@V9/4 +M_!`=H+U->P"[/JQ8U/YX'M[XNK"$[3DSO&1R-A%).5$7Q!_$Y';T\1D7$`_E +MNB)UTB?A<C.5>8JED;D<+DAPAN&+4#[5-U]'SS*A>^1=X=*HLYMCK'N10-(: +MIVRX8!E$=V"7X09LXD\JD2S/BY<\^NU_-TOZTA"Z(^\<3*\NEENB07*T591+ +M+UB;Q9WHM<ZA.GQ$_A8$(G=8YL22^H27-K;LR(ZT6RE<,>]3MF+%('PO>Q7C +MMZZ0Q<DAJK0_OU=/1[7N%H=GLZ?<AHYH^#HQ7P?KS]S%M9\>NU_6<VK[-3%@ +ML0,;.;_+C3':T/L]MZ>AT^ST?L[?;[/U]OM5;[73E4T^41=^;!/L1"OKHRR4 +MH+K@4KZ2SLKOW&WQC6#.^B-:[,5*;VR-D3E6/;QXRLWW/JCZMJ/]AL5"J]"[ +M5+.J##HU*47MD$J2K=,^Q!S#2WSPA<N8<E?E<KLXZU-K[%FS:@AU\2MM;ZH` +M*-GM[2&@D]V.FR?ISQA/K2><$JVK-<E<.%URI;)R337I]S1[=S3:N9A:&A/B +M`KIZ78T.[U>I0.=;K51D!"5P6&XK.X-<7FCV^G:8KY)?/>W\^$P="5XN3!/X +M&#(\7_^@P7!M/_E>R#T)`7\A[5CP*9#\527(66VZXC1KJ4_P_01EUE(;>,E% +M8U9#;C?_K[=`I/S,J146QT;9`G6QKWH]J[EYMXRF"G,N5VPDP/8>>V/*.#F? +M7EIX-#W]=W(&B*L@:%C;=Y:K>K-][&['I>27XTLY5;,0][5#)W&S47HC[\?1 +MB`+#)6'R78UDJ_[ZT^8R71O\>F%(\(4.BZ-K=H9=H<EC</&C*E8\W1QU-N;Z +MFUI7;QHS'<0>M&<QR1(*^^55D(D-60=C;Q]U6?A3/E7&"C20^I/NZ4L:0?<6 +M#(J,_).13L=7I_WTX4=%ZL-YG>ZG3C^!8+G(M0@?))-OP^6W[._H]GJ:<*3) +M=&#H!T>UU_KR)473[ON!WNWI^R?9W=#V+H];W3ZMSF7P^*/_3?C&=BY+*B?% +M3TS<CV_E9.>G.Q]%^&-[D-JQ0HZ5P=N_D#W4E$'=NKER,[9$K4[.HLZL1A=T +M:G.8W,U*[\@+NI*PUQDSS:X$DFTSMB)=L4:';V]:50I8`.%:V.CQU):O3X[' +M*N7AJWJ['/M;('FOS$5AN5.CI^!.[MNNX#@!:\"YU7]HKXT]A4^@#/+)V1X; +M9]"N.L?C."+\TJWL)<"?=.!AZ*4_\.929SQ-ALKQ?XMV+O9MGFJ]VJ57$E.' +M&8:\.N0)(E%L/^0`L`756">;57\8\5,_R)G;UT/*:Z90=Y*K_'L49JFH,O#] +M_`RQ_GQ#4'=AG8IPNG7^.'H`.SD'C<MD'8RXTKF'JZK+T@T.Y$6<^Y0^5DZ4 +M9?_]IZB````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M``````````_]@$O(_HQ?VO4_^?__________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_______________________________________________________^@$?\ +MB__K'_I_____________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_____________________________________Z!'_(O_ZQ_Z?___________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M__________________^@1_R+_^L?^G______________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +MH$PAU1$,S1$`%A6]G/PHZ,\&EFE%I)N[L8V+L!6VF+0Q]%A-9N;N^)%$FDE6 +M(DTM-46F7@W[O@!2?0B4HY'1,S15%(G!N;XZPPB3-1,=7.^*^)<_P@_<_OW. +M1'!//"8$>DR````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````Y?C_Q[O\?H[OZGR_P[GIYZ^E_ +M#YOX>G__+:2Q1_Q*=6?_1I\;_^NGE>L.A>"$BG>H5PH<%D4*^S`T'!>&1:+) +M"4O#P*AC8[^7\IS&7!O>S72H0ZD0SA*YNYG\/'#I(BP[V:2*1Q0[GKT:+:V. +M]*WYZ-^F:7M!0R>&RG3CF5FDO72W4\LTIFB;]$X]2:^LW/),H3'Q\R^;/%>W +MS?'QRC>"J+MHNHC0R%HR>:20#FF]Z96/AGJWGAY\87]Z$8?U^]P\DW9=,^YP +MZ;16UC9_>-[P38>$-MB'GYHV;L%PO)NQM+S=S4,.1G2BB7GXK9:B]K\HU>X$ +MH?BNB0B9IM4MK)'#*-LS5<4F&V&C8@_5/8R=GSW42Z(]'@OTWU)$YE<>WX>/ +MAX8_>7N[</P+;I%/-3HEUK9/$/34\N>DV.75X(W?R29IG!D_VC6TMD)-TR0< +MG:]_14#F!"JMDGJ2ZJNY55Y_+E6[FK.A.IR-`,T['?@\SBO,N[56(X"GO:.> +M;AOFDST9.3!MH<66]EW789MP"BM<-^\'N.,&_$=2<#O)FJ^@?V/1G]5]2<#* +M7G-+\ZF\`\4`S:DJ^\X/ES[^]J0=KZZF,;NU;S?Z5:HO,\1U][8-9R]OW;F6 +MP8$M0]B271S@P^CLV[60$.@XU9"PQC._J$8,7"-:%IX]Q.S;+E%!&N7>AH:< +M$5RNK?WZ/LR.0(5.I4@7\_LUJRUHLO'"0!FU>+(0L9@9<D[%-XFWIV/'QRP? +M/"7+3B:/'/%+HH'3DKNQM<QZ?I19MA'2G>7084^_GS^:+AG)X]H#&M1(#F]( +MWC[..'+0(+/HRS'D]QV)T4B.2>U^M1X.U2AA$Z&[S=XNI!2G#`?%=\,4L-7@ +M>XPW_+EQN7O&-AMZNGH$&I:8)W5L=TY(0]G&_R?1&'UD(_6@RX\E8`X[5W>W +M]/EF8O]]D>./=16BS<-5_F7'<R!L!8>Y1D+9IE;`N)QT:8D&8[>K.E4-O8]1 +M?K::?EX\DJ"Q\6!1?1T>>ZRC).Z=CE,T'3H<OU.?*)XLG"5O4))9]1D]V"QN +MOO"7A_9R[_XU$`@"B,;O9/&+D+_6K,(UK,[I+>N2GAE(Q'!">%Y*:_RR+CSV +MZ@M1^]YVL_%[GSUA(R2D[)=`M)FT@Y)-F??ND_<I$O>3Y[\G>'O^X%A.KR=Y +ME:9S&$GGY-/!Y_DQ<Z;7=[?;_R[7;[O:[G\O%W>YM?+V]KYNW^^_4NK<'0(, +M6:"\,M^:T=\]:O^T_'R>7UE)YMYN#4>=4MJ/->[W+M;EK/RG3^W3.%?9[]#7 +M4O<^>P/<413]FF38[71HC3+RU]?M_//#-NVF^Y7^Y+8F;=KX^ZW<_GY*^+#P +M;6[\_<_E+U>];A:O$\I!VTSA>N3.?EQ!7V-7\=O^?;U_P;\B6VGL01`[NQ_U +MV/EV?6_[KUMZT[O9_GVNYTV1/KH!%W?X_-$Q6Z*VCY:Z`\F73*L5=?+\R5(5 +M^AD3:_4FPZ;!;9^"3#]R[T>>VT\2BI\L[AOC&B]JMVN_Q>W[)OSM7;_AV_\O +MY8!>:*,6^1^+],QGW%9XO+6V;MX[)*$5_/*RR#[\/?@Z]=!4^=::8E1311V% +MRF!#BWNNH`6H?QP7P:$Q(8=<#1R8"'K?=\M1$]ZR9G0@1-I$T1<IZ0T4(1U] +M.[XM44C]WXY)?&63(+WK3:#AC\89X^=Z9."('X\DVG5JH+_5J)L0-A5[+:?4 +M<7O!W>LX+]>?B]\9(V;OBT_`1`Z(?=DI7W,=_I_6!I+X?QP1X]B^)PI8_(/; +M:]Q#A\%=U]V3*MJ6PXH!IAF0;TC;,)_4^:80)[^-XR)WIO9*Z(;.RY;.ZCT3 +M34X)`;^7`)G!CJ;U5;_QWC17<KHA@7SJ/L9K6/9C]HO;<R\]<H=0R:]RQ4(5 +M=F<(HP>2EQ5)6DA^I]KN8I@#C)'Y\TL_IF+YAP`2F?+J:F1&]L^.I?YQ<'.Q +MGW\_DY**7%."8^.[EOJJ4^I!8LAM<TR\GCV,:V51'?F15K!+7?L<<V**6\%% +M)TD>T8'W*)(_KSZ:PS!2,3M/EOH!?3V-&(93Q1@]%>'<Y+-5Z`<YQ8!EF]OI +MQ*!1B;:+HQB30JBR4S!@2%I_>('N10B'[ASSP(7E_+)&;-F[@P<5G16<]$X9 +M$C`X%NCG&WS1XZ85/CZ[%/J-^79*H.[NT;%V?BO"P['_B4;L9IM5*3!+D[3L +MW!!:^%X/H(?\AZ\ODR0"#[2YY/I(->I2G^:%![5NS8#7%`9,;<^B+JE`R>7> +MEK;V(<7GI)QFM"^J;$DOG?M?GFG3N'9NH20GEJ.`Z?/FW,TUHN?*TH$@S\?K +MK_SX/[V4-:[5Z.H(@FQ]7?^OP?=1Z&]CH9"[-C-?^_0.+?)_C,XS)I+\?GQG +M$]C_'Y.A::<4]CL9-C^=LJ[<<H[<F%5V.SV=C_IZV^[_3[/L[/T:[U^_"!A) +M`^['>\/T_V\'_;V2_?_GL]"T=#UL>!5=R.WA-/VW(@K["^S_S6'4X#Z7"9*V +M'%).\V[S+NWRDT.#_DLJP*//`HP'V(;,R&O[/<[?=^;M^[EVGXER]X8%UH6, +MD14XN36<M4_'3YCZ/-_MXVZ(0_8R51Q<F7I<@XKU_#3""!V*$4X;/G:\'W?7 +M\GV][[O!]<@LMK[?KI\.&'3S?MV6=NQ/!-5$.UHOM,1_[R_ZBV7P9)3/_1&< +MO5$LW%=DK#8<BI6G-HD0OW:N\:5#(<U*GL>"A-7)J)A>CM=J%AFQ/_8S4LD9 +MEL4&Q;XT:A^F[X.N.=2/8GFZB%%5_TQY9$J9('W!JKKM84)DR%\"?UFIS#(F +MW,OKO+29,??;54.TUVIA(`J?ELM&2<77#.I3M'WMZV\'X??!IFS")Z>_<5]2 +M3S8V5V:WS3Y[</T:N\FF_ZEGX;)NOMOPJP-=RQR8]E*V2>4Z($%$`R*0+_3& +M^=6.G3=_F=OZ*5FX[.U=^$44(MDNN1*-:FD-5<-F0!4Z+CD(&ZS`PP:Q,7/? +MY;W<_V)&P/+!Z/I]HK"YTVJC1OP+704FTUIQJZH1='G]V;KS<DY0%E!LN?R6 +M7@-&IO#)(VP.\U8:4CBOL.NTUAWV-PYMUF\3.DGER7]^>3?Y)T/"H;7WLW/# +MPQ+^MU<"T=21B_LYO9=O=Y)-L?;Y[=O)-&5HC$Q\.QRN-]Z*.6L1AY81FWLN +MCX2)IL<M[N6JHGV$G4Y+VQ94AG)ZEP.-AL%AZUTK?S\^Q^(3-OA-[6\B8ST? +M9Q$G]JZ&^33]X1I?QY8GOCIST<5V75C3O'B5[&YF!W-)1]<;GM(IZ5*4QS'5 +MTY\58<Y"L1%4]0P>Q]_#=?74B]R[[,U`28+FMTC(`+SV:&E:+,9M%^'8GO53 +M@OWCY>E$\5*(473SU#:(T7E6H1ZL)-IQN0*$K^<<92A6F3)<T1%*$HR0O<I. +M-'<\7EU2;$48IA,GRZ++'$>E2%V8K0OY,\U3Z;I^F(S?)\L4:%EZ\A<Y8]L9 +MJNM*@5/75YF4Z3^#_/O_T^GG<F5OB6QI1,[.;JO/);AT32@O/.%@N>&3>KV8 +M_$0/3``,OWR\5*LWQ=6QV)NB:'_!E]$N&O/"=)NP0$A+:PA03]]:&GY"G<$B +M).]M=GK"Y!],0%M37/1F*OG`]$VTQ,7Z2*O(\AH]PYM>NKZ/1FI8:M]^4*\8 +MVS)U;*?AD66TTPC=X^*;Q2B+V<O6;D^F7`VC#,%B#76;BM-4'HC_.'/@@I7? +M%?-5=:7=4W]CT=;N5(:N5W:YO@5KN[FT6-%PN[:RXYH'4V,M(+3ALAA3)G?% +M55ST>YSY>$[T9MNA*=H/!C"GJVLY/+^[XNF"HGK6A];1>V+,07LUM+TQ1NS4 +M%CYYY0F3KL4US$8U#<,QVIL.S)X\L0LC)LU4*P?\%VE6!6PW:A])<'L,F'EE +MQ.C22)=Q:='60-8?,$:@OA#FI^^N*8A%,3+6F-S6FJ^UK7=/JB%4HG1:O;%* +MB=4_'1$NP=J,]QZ<+==VW\-)P]@F]P9>"8:?BQ`_YM-7$[S]R99TWMEO\DW1 +M/^M#4`R5]6K0NG"*TZ7W0`WYI`7YN'HL(^D5F]:'X@L+/,L`UY:0^Y4SI#9F +MEA$&Y8)G=$(FF2-C'3D_W.#/NSZ:,1C/Q1%H,(X,5-\RS:(7N!F^]10O[U+D +M;<TKZ"+5$4"WGNY=WHGWX9^"T9:8G8+&YN3$)IA&*/X<=CCM8"]X]&J[@+6O +MM7W;5-=R:*G-/?L,[_"1(O;V_[^M?%]?W^'[;H81MF(S&^.7BO*_Z)M[[_"3 +MNKYI78T5KGFS[=LC=F[_>[H7EJ+4,7_78&$+:5%4]JE[24+M6U3;R>"V'[NJ +M,3/E[/T6RQ_[P6L^@2)X;4!J@&'#@:]]N04D@/2*Y<;]V$&%WH97VY]&G%[4 +MKRUG`$7/.I"7EEN++*T(`E7CI=*_)L\#6P;GBB)6J?+R6C>K1>`7)6<G&7L` +M&7X_*9X//EE_G#IAL7R]+KI">5#WX,<:ZF<_/)*_:IH\F[YKK%,52UCU]RP+ +M_Z;=*J_^/=@@76SS$@W=V$CJ!]<$?V1\SU+1FW/=07_Z?9#_$JD@],H0?H53 +M`[.>R4J,R;RVQFU#N=%[K\OR]B&(0Z8)=9Z9EP52)Y_CD`W=\6*5D9NPJM&8 +M\_#EI34W9_:XYT",S\-BP$-5Z47?Y=[K)(NCP\VZ#\T)#=[&OWWD@?%J)I4U +M7FL4&9IOXJ<,>R$HMG^FNL-:W83P1GH$=UT&:C?LF\U9-8WY^JKU?2`YZ]>I +MV?@WK]N7@K.H?5G4C!G&:`S$(#=/@$HU>BV?#SM%I_#DX-_TKS<OO%K_M)C_ +M86SX-\_5FXJSS[UK4=>5>GOSP:/#E\GP\A\QK9!V??79J;`^]O",N_AF_/+\ +M*\XM'W>DT=3O3[8=G6MVKILA3MRSWVR<6COPE#]3Q'[N=+%;?@7O]-<?^'?7 +MBR_E[OH]8(DV@9O;^OE*$2[_)L<KO(F_;!LB8%EJO86E*.)O'O81\CKNJ^%Z +M(;5U\,,TA<S!D>84'GK-B6*/6+1+#M7>'W89HDMS9=Z(GGXIY/TY]5;QX)2& +M[N9;X8YNG.)U(!5HN$7Y#B5K,2`-C=Q]9(FB%+\F+4TH)#O=SE#U<:=NZ9UB +M211Z<P6GY?"$[9Z0]][>U;J5F-07PXYJZ%EN)\*Y=KCXYW1BUC_K.A,5^X<Z +M9K6-^2@1;\:2V+J\SSUE[U*`Z4D9M=V"1W4G0)1("QZ`IX>HN+_I+RJ@[V-Z +MSD7#CDVK*OXC+9YPU4I)[Y>?4>VW16.]9#VDT*3)IZ9";HZ`ZNQF(#YW.=7] +M?+M;M#7<",7M"^S:4STF9&.HM,6&=Z41G60DI,^O+Q5&[F!5BXWWN>S)6B*> +M'0LT]=3:=_J7Y=JL2X9/:[DAO11(N,MR<O%96PE`$$J,]2V^]F,LTY;NO\`1 +M<<T0VK^PNX9JX-.D"JKNT(H,9,ZDV^?JSZ(C4G]OATU)O2\4[^]+J3<ZHAE? +M5]\QUZ%>XF4&73`DH?5\&GXY+5M=?Z<]*9*<-;5AV4)$U71",=Z/CUW&+(DT +M)I_11#=G8U4/2R-K>B_XH'AB.T;7)V.S]%.?H4UY6K\Z1:]HG&DLFWMGTT2V +ML4&<R__)>S8^N:1GE>)N%C]='T4FF"*8<;DF._$?-5,NUD-V@2LX%4EFOCXL +MN%PT>'UIG%B:"+J]`R>S+CB(_I,-'9DT)L`5;U7#!I`T=I%^`W?%A\5H6,AF +M-_E;UI7IUS7<+/'1;MUA-Y,:+<E`%M-=5H-=]4U>V?44--9]'H<_9Z>=4[YU +M1D*%\/LL.90.B]E1D.7?%T<W];UE]WQ\^?M<G.O6MQ_^W>D_$*IT=%,:<$"3 +ME^[:\M&LO?CENGP9NG;JEX4=3%`1,<>4SY0U*^'U?"MH;1@=V0W<K9Q^?:[/ +MIZ);A0DZUS[!,BR^5-;6TT=YFH@U1FOO?3]E?2JP!-&73!%B//`OEYH^Z='X +MY->[<R;OFLSLIN7>$+/"@^N.EI%0S)?Y(7&L.=]%GN1[D@AH4B^NAT;]3>?0 +MDUS[X6^H)@P)Y;I:NG!NYR08%BV4I2YNY^.INJQ7J&!%()+4O7&3:L.IDLNX +M=<SM(['Q0X)/5CP2Q3&R9:I!L,$+")K[WBE#3(A_A:<]&JW-_IRUK$-GR_NV +MI\EO6['9M&Y,Y.EI`HM$L^4$/0_,?WTLC7SXW#?7DNR9>*W2TN/5,:.]>^:M +M6_/;AFI3S"(W/\=]?XIH<,X&9P:74N(9:,W,NF0)<]U=,P+<G#1P_]::H<7K +MMU#=T0^B9X#0\K'QW<NHY!]+J>>]Y.,M\N-T1/L5YX?%=RE]Y=W5@>3_U"BQ +M2F8>%HIR#;HT#)O54Y8H2S=$EB8)!EH<5PA\:<!:P/WUY$)NF-]0W9A)=V&* +M;.%.1)YGO3?<5,/>ERS]M_2:.C+6DPVG3R="NQ6"+%U?@#Y)M!3WG`U+!T.# +M,64=C%\\;[P9_F0'Q1#SBZC]D0(GP]Z(^#-II[]^_\X&MBY+&,:N-V4E$<7C +MR;M;5R7>.:NE6]90B[FP>D5<JXIY`PB6W-PUO2>^./AF_#8DFF?43E*;$S3= +MYEJ]6B:5TXE[L;<Z[P)3?_\9(X6]DAW9_IG])PL'JW10RQ[_4_?4U3ISWZ2M +MJN17>48,3?W,@TH;\NYR2N#629=:Z/1DP=NU\F.W>*T*+U7V*=0W3)00U/X\ +MDO3FXL:T&EUL+<SJ6-B,=3;J&&M9G@O<E'>V0HN*:=5(`;=\W)27)Z0@;NZ: +M<>TZT5T5I:/;4L07U`3$*7]FK'O\EZ\I:$M\;\YF@.^Q.Z04W%$1T=2YX^K- +MH\V,6R/[Z`K>'/7QRA$*7S^#Y/OV.]_?P2@GZ7,?L9WX_.LE8.DMMW3@GZ7` +M/)A-_E&+]GX:49G\6>B9E-:-H:/OE-J[QRZW*B-.HJ0C2#2.+R9<(W-O?VNH +M!S+9:1S;@\\G(/+(O!FB*HM&SA])28DWV>3I\+6'YQ7=QZ-274K=QN2@'JTJ +M961D/HO@MBS&2HB^2;AN?-6$AM:74PCUO9I!=DXB@ETY_%]2A$>R+UU+E_Z^ +M/\_SY7EI]"%8\&QRSC-E;'CP\\8G:8K\LQU,1M&U:5,GDB66I`+RRKQZFV$+ +M:',3S\?%YX>T6:?!^FH^6[Q<Q\9F6`%(*=2V3F2YF:CLA^Z-^#)T@^M[)P9/ +M)$<O>'+.L:?N%R(RQ=,>B(,ZFJUY/'BD0W]NB[E,4S)N1`:DQDI)K5_?#7L% +M\=HIN_6M$-TQT?:Y+F.<&\V(9?A,=G)3<"R-[$BA0%'/5NS.D)\HH(T3=/\; +M'WQ)9..X;-'2$=OGEE4^*G]ZG#%4J&L0A2P&[]OA]O,@&.U7:*I]_V]?C8BC +M'@K2<_9M2T#1>T-[K.OC%N97C"G<>>?S9;:+FN/XK1/R2WXQ;CTS9/"<?)T] +MDZ&NZ`!U5&<*QRU(&8Y1T]KV3VN:,V-ZKVFCJANGVET?#5&6_CD?BK5)IM'3 +M)D\KW8]U8(FS3KN&J.53J*>6<Y,]&7GB57//G@>>.*;L%,O_2&&7IYBS!2G? +M-IO/H;[O/4UW_LO29;1(W"J;CH%12*TH["-D2MX^J'P8*&;=93_L/;/RS;+> +ML'RW^A\FQ3Z"&3&NO5R]R&'S*$GI2EWHHD1P;9NI[U4.C9A]:R];N2NOBR0> +M^A6CMVY?@JGX6"Z<;`S5BI[T3D$#$BB6`.S\5Z+I'-L/=SSQ*V>S?0E3'MK! +M&:=#69($.B9(_OQR['6R$K7'5W5V$A8^Q^?T3@R[\H_9L"[HYS=_?L&128FX +M))Z8"WGKVR-?,S+A23JU]40-+&J<GM"XY]B#S`1DTGY`Z^VC<S:8@GW\*#W^ +MYPK4B3-!(Q"":I0?H[A8W"=CE/W?@#?)'!EU'V'3O^S/O1U4W5B1T_JWLU'8 +MWYM;F(W&FC/Q&^M&4/ZCX\5*//4KW.;J(V]#!<YD8CX))O4OHY'^,7Y/>_8Q +MY5HV:X1**[<3$VA$&DQ:(1PMS?S[OFNKE6S9*FJYVH(]S9[7[SVVR`FFJ#2U +MQ3X(R5,,>=.%XH5_;<"@56B:R;@DY3H`YO9^>OAO3WY=55P?9PK6-YLWL4IL +M_A#WT'![>GQ0SD;"7^+^N+E/^O)B$IW97EGX)HMF_DY+<T6EH.H+F/L-GT98 +MF"BA'JC8IQC2;&M+T1R%914X)J*%W+YQVZ^H@4R@E(L%F@4X$*KN5XM+XB!, +M]DM$);=*\FP*KJ,FV.2J<L7]LMW678Y(BDS;O2"5SC&N$+R<XH>>0S&;\Z/X +M*[4HX-0`6&ZIZE3]YXSVHG.&W:\]&U[FTV'$NGEC$7?F2]H3)D)IR7Q1-YY( +MATC&DUB;1>N,WG:ZG[:[`2\<N=<NS6,/<W#4#.I72=,$=,WD1=&8;S*F'"$U +M,NNW$"$ZS9[3REV3>_&1F?)Y,'/Y*YY;P<U]_DK#U'HGUJW.[:M.NS&]S\<V +MZ_C'5JMN8EG78KV`_4!JF;JS03/MW.MR4>LM/:Q[D3(`2X^EH7?Y*90L^+\6 +M-W0%CC5P9:B@9'R14RFLDAS*>3"KK1WZ_9K!>8HHT9^*AW6Q;S13I3>9(RNV +MF(5JCUXDX[N8_8B[IT1(LU*J]_SWPM_[?N2>]\7;J>[2.V^9N]&!>.Z/?R4F +M(*5R<Z-2''T:@WM:OY7L)R&(13VIHI\P-8%%O4I9[Q=FGT/Q]N4HF?A#B\<; +M,]BOT"'^7N]K<U_:+$LM[=),.W.+/YLNL&(G?F_J?0JO357>D7>_'-0VK+4V +MN=\DLK?Q^:N!T8LT13%V9R1]/`+Z5.>L[IQ3MW/D^;8GW*#@`;__[3HX```` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M````````````````````/_E+Q/[,7]KU/_G_________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_____H!'_(O_ZQ_Z?___________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M______________________________________________^@1_R+_^L?^G__ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________H$?\B__K'_I_____________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_________Z!,`=$5#(T7Q9V;W,^%<[-7=@+1MD#N]V=(H:G#Q/=(`AA--ZA) +MI@\`SL8VT\;D&?>M2!R0!DOP\\./&QXPV1=7?1(/.9RZNKNZNKKQWGQ*OX1? +MJ_5X.4KI7=_DN>RP```````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M``````````>KO]/._Y^KG]#_CZ?Y]#U+SL7\^=T.?Z_?N>I\?3E+L=#BP'T/ +M4CH=&$)N?DV+8S=:!D/<AGWO#T^CT?N%.M/@;E.E&F2FC1([BP3(;GNE2!TZ +M;L-\_[JM'J0,98?OPS2+[UQYGP+DT>EV(TU=I%YE#AD&+[K:W*S.+IFA-XK6 +MPCAG>]/1MA@BZ+>IN;?FV/5K\`7._LZLFFI_:#WA^CZ=_GG\[Z.=%B105Z.Q +MW>KUO4/-[F;/1S\_\G\NQL>6#((A@;/W,_?N@?:]/LV?OB5_U%8"A>-<1:9\ +M!<Z7*K_RZ-,X:SOC5Q@Z!D<:P=$4$VG6Q\;1@23,XP[/_@XJV;E'G8WAG\`C +M/^'?BGAZ=;V2P:?^_/^F'(#I^*E/'HZB1IXO`(06--73A`J6G[G:?9_3W/1S +M=/K070)`.(Y6`:KEQY1JP),@F/']O35ZC%:U]<51W"_9I=3FQ`>E!D<[6&"@ +MGT]WR^_."=7H:/@_0WA`U5AA[7VZGCJ[>E5X+C26KE^^-NFT<<7,CJC//*W- +M']DS2Z=F9DJ9!0/G6>*0C4\UX8L_]QUUB@T5ZXQ1$-.,&:[?FC]D)`YYNG74 +M?;3U_=?-[G;TM'P:<LXKNNL0-/7&R#>I`2I;4COU_54TGF_4=X6$526/(,I+ +M9@CRP2#]'J=7]ZU+Z\W6KIQA?7?2I\I"!+Q71:_9!2I4HR.X2B4-\W2K\DR7 +M]>JGT7Q>KRZ_9!HH(>?]V&+1UT]+;@0'L;[5_S3%"?UWAM_;!D^W]/K_X^;I +M7OE?R]S_VLGF!NCMZ6?X(VK?0N?#]U)QT_NBWX(*EF+3B8NCP)=.._C?N@N\ +MZL^#"9AKST*.D,-EEKC&[UWHO%>N/W@X=9M2M]J?'QI?=VK^UNWT)\:GK;]Y +MX:?MB?`EF)'ADC\97[/PY`BGY%>MG/+/42R_\;S\()->K5G^\1!9..A.\O+D +M)NB.S($502T+`7)*,XVA30M^,A459<A2Q$.N@2]J%)V/HFETS<,]QW1P;)N^ +M3XMR=,K8T/1BVW*42LA9()F>Q'!N;6ZY-6C.JLQ%/Y52F<N;`*I'?--S]Q// +MJ^"GG61:W[5W86N7./=P?"$HLRFLT<([NS+G"H'YM%N[Z7;X]OBR##[BQ0O1 +MZ?)?W)YO/SOZ9W.C'M?E]*KE\@+Q]N15T=2,R3=[VU!BT2N>+3EE1>&4,&R8 +MXU':!$F;F5<K,LP[R3"WCU<CA&>"OCP[G9]A#=)6ES/C@I$^=\E&"_%CF2%_ +MA[10FG@"9^E,FKBG@OD$[6.JEU.YI]$W@W(N.VC[-#'%XX%/;/1[?R_J]$^' +M*EK5"=SZ]M-^"&:S1.;ZGV]C8C&N]&YQ8O$9DVMW&$,ZZ1FT%>RLK\VW58,- +MCWZB"XF"IO-.*_;$RS".=Y5A(MHK9-5OF.6&E)2(BI"WSE*K5QC`O^9R67Y] +MC5FY)L.*-/U(/D;#*)DM75HT%ZJ9OTK,WF9&5D+Y8->!;QECO^K]7-D<0)FY +ML7G9.Z_8X+6$7@_'(NQ_&6#M<)Q^2WW#@&C<6;,AFP1=+<V9O+_%0E:Z?'V/ +M)621P10^#>M5Z\HE`UWG$!\8O:-BO[>J^>7N\=Y[)+2G+Y$M);V8@NWGHX\M +M.\JQ@CRQ%\!:<O<X?CX1+=EL$KYJ;\>!3<A69&K5]RES\K@NC!-4RJFJ6U6J +M\TAE\'3V-61J77H@_9U4*)T]OM=?I2>]M-T&+'K+M_USM_2%\P@["=$LHV.X +MS#N+.<8RY%'0.GBJWIL.72$>]DKN4Z#6O:6Q,IP_]9E?$T]<AE6%"6Y/<>'C +M_\@[A>;$?XI?LLR:40TVJ7)D#2,3><Z=O4@H;8\483(NEI7Z[*PMTZ:(UNZR +M0XS&VR\Z0VY23'X5/P_#V?#*WP;"'WQ;Y\#Z</\VHPL5<04*P]O^1=X&[:>L +MU;`_$"4N&4P441T95`:X"'9$8,[W+\L&G7P/%C-/3,I72N(5A)F]_$-[H=&9 +M[^'T^:"8C^5]\6V4M>1GE+U9!YQ/U1YF1`/O9CF+?=FDVS+2`UZ/5[B0)D3@ +M\E3^1^#.V_11VJRFU3*S[.A<OF;Z0H^O*]\\I!2\NQ0;J2,I6^$;DQI<$^#W +MJ^BT*;'=C:I5N&TJJQ=LU8&[M;VI"!!X@.V4Q(ZG?/'HA6,+09(]GQ&_7),H +M6)*-?T35-Z?5<,!RSEI)D6*Q[\4H./2P71XN2KUBSH`7_-G1"'(R8IB'Y-BR +M[N;9MZ@<1B`ZSA_1X&U+\?S,ZW:'+^<_:P4*`SZ=0*YT7E!\W2R^QV;E.!KQ +M.7;OQG6!^>_"$`QS`]C"/@M#5>;#Y?-K;N\;)=_Q\$0(X_.ATRM^&OG;?N?! +M;-H8H[U/HHPV\Z(&K1QH1O;`[;9!4U;]/A[G!2K,F2MW+2(XP^G(R'FP)@V: +M=)(\C6)NO@V\:>X_>!0>)%^0YO8ZHQ_OD#&P[\C.]6I6'[J]%(!2T`RI9NA" +MBFML:FKBAY(5(IH:<S.I7YZMFC9CEQPW3UF9QNC/$=%ZR+:5L`G@"T<X^/*A +MWF`,^L*;].E:$>[@V=C%AB:^D1Y?'3*&>OWZ$L3W5]?OZ-LD)4RGK0!YG6.3 +M:L:4"-Y;D_GQ72.Y6W9]SX'DJ07OYL'`/M1W)6<2,?0QP#R^)XBJ4RE\]WAY +MGXY84YF7:YZ5-@DT66G#Q9@60$BKPY+`](QGK2[_JJV\AQ/R`<X2&IBS&XL< +MI&_IZV&*%O1)TL7;;Z4-AU\8@J,)Y8(=1XX_3G77KY%;J)E^9!-*SJ`"<,Z[ +M7`F7_()RU;J@S+97?QYP0N<Y&W&X91&_YX-#/;FEO2`-G0)N7Y31BFZU#:M! +M4K?.=>XHVD\14Z*>LF4*L@JS2KFW=<I`64,V2G0GQSCWK]8L'XW,9_A6WS;( +M?X^>=$GMWFR`E-%>'U0G*T/+I#_TLL/<76W9Y:T`D(2>Q3P''$O,^-)8H0K\ +M$E>\9BIC/&44Y$D<2;4D:YE[7"(8<J#K;$Y5QE<DJCH2S!B6U&H"&=DF6%!% +M`G(N5PK>DYKUJ\<M6H]9":_WU]2]YF9<8M5C'#B5UP3_OEU]R#;5Z'/SI[X( +M8\\N#.U\&W!`=Z_MK_'J-$*BBL#;R&P$6#`DKIO[76D.&-//;,/E*6/[MC,# +MPQBI"5<V./BA151Q41<.Y3Y0"O<IR=4C:O%@NLKG:N1=%17PP:MY52EL6I2Y +M*N:GX=7GXQ&M\QM'4"B<U-`9BALTBFBP0++CG%)$Z'%QD?F\S?\[D27#UX1^ +M#=C/*'@C:KWCC>/M>"3_BK3D.C5HW%OS+M!?<&%S1T*M(GC>D?+53TXZ)3:5 +M625@^CX9]BG1L\:2+^&N]9T<\Y?:_6C!T9(['Z\[MBTC#HMC+@EX:.5KP^F. +MH=*=9QR6IV8+DZ-P?PP^2QM0PUSDEX\_Z?Z1$CG7)\?^B"`Y"\,5D[^^SPV4 +MZN_5S*O!^9&W:4B"8L`6;4<G>GI@157EE_6/M98M"?9#/+GW2`;VK,@'EVKD +M9(.X.KLO->-V?)=:LKQEV?3[5S_!Z;^-)351%BSQ`D)>.W8(D.+!*BV7BP5T +MM2OFK[>F"=:`6KJKM(]#K:FOG?C#2O[X>W5YJ1N!`-QG,>QX@Q6KI5"2JW:% +M6>3#-!-G*G&&BNEOE>:S@*F0+NR57M;R9;D'X-3:R>\J&`/1Y]:6E]P_W$E> +MMB9;FO*A"W"DV]+[=N+'KCL<N7++D8\>UN[.WL4:C$<D8';>`3?V]G!KZ6EV +M:LMOZUA'=#U<,G!-<2@<>";Z039OGTY4=\3R1PS<UZOM6CI_R_E=H>7-=J^W +M]:OTHKW?1Y7!VF17\?/7Z$E4#!Z)%*6*^<&<CQ_V\@SJKJZ'*47L:@*ORY=- +MA.8T;9*L#WBP:LNAJ<M*C[NYP$\[%,$R1`((C6QBOJC][0Z?BKY8OUJRV_HH +MSUX(7=O5L0A\F63^W2@25C^8G:,@<#MK*IBUM>D?D8PO?%I?/=P3PWI47++Z +M8#;%[=KD8Y.O:0K:=/8[%R58^">39H]V):N;XYX7R&8W=[_:C63/2NOC7+%S +M:\I;2VN694Y+0'@5X^I7P&OL7>#B?E7"&?@C-PLV15)1(A)GD)$8@P.MK)YX +MV)^O&3?48:ROF\I>*X;HE\Y&RIF\;S.PX52MN-2:`%FZV9IT]C6TZ_:[_O?K +M)(VL[_[QF^>4]CI0^0F<9A*Z9IJ^0F9M2O4.)^R+^^Y<F<I(!1@_""++*^O# +MXH3]+)"?[FAWNQE[)8[V[LY-,*AU\S^/0Y^;%EAY/;_E!D#NV]XF8OEF35>N +MO^CQU(%V4W]RLQE88IE2.BPQAKV,CR\8MSJNU7777A5*'O2[F\\/>IT9MX>S +MOP;<?+G:VQY;=*)7C;2N.U@1W'>3=?0F-V@]("UZ9Y'HZ6;1AGCFU;WD`Y=3 +MM8O6]G8T,NQ(K*=^\2<:CT#]@Z-5^'0(PIO#,>>:U=#BY[?93%1)?X@`KQRV +MC3SHS%X_@..+X0@#_IO&U^)=C=L76S/'W/!<=A-'6-<?0TE$>V#P;3R$8-EK +M4+XPT)O-6^)I:<0RWY'!@LA7MZHVM8Y4JP<1`LF-U"BUL,%28TW4^[J38:4/ +M)#7>SM>['3)\BLU4PS`LC4V=FCA@^;I<1]E:7_J>2+>*DQH\/EW[-S9EQ.TX +MS="/O>]BNW50:/>O+OQ.-JE0`3%YL.SEI[Z.)88V[DGE?CO\&CI;HR0;T#?0 +M$7?*IQGUN^3UGEY)0MWV)/1&CN$X7Z8Y$\R2T-1X'QGU"MX*;F*[L$LK"3#H +M?2V>@(VZRO5_BL9@$?C=GO*4[!5X\R5;I\6YJR,!Q&/@Q29R"(&N]=@'F\2G +M$`<?%>J\*GCQ^*+(/UK2W/%665P'F=(FR7*_.?DKCM)DEZ=>3LOZ<MIV*=+& +M:QX^)S-Q6"IZ\W'JKH0Z@"K_#"6,XVKB*M?W1V<,?SV^[\^.X)K4+29BRMKZ +MS;C>Y.4"99O\.:#R,,^3UFS>O0,6B'Q.*:/=2VG`/P%5ST1#D1TKU]NJ4<[Y +MY<-6]7?7ADE11HDG6U=:'1_^US+C>IC^`2INA63>GEDM8_P[N/<?\*/8L?\% +MF;PUY57YU-6VAC.+!&K2L>1;ET/Y_?&EYTIF-B;)U:K8GTO05S`3*R`L,0%2 +M$9*[SBV<X3WA7?=B#Y^C[B>?!*ZO]N9R/A+ZMG>$V;_'R[?U7HS-EWC#[[MO +M:ULV2U+.DLLTV""@#FZ,$'.G=,/;L0_9^'0IV%K/Y0/%:^#FQRKI;\V#@V][ +M_\=;V'N30F;T6TYD]@415A#,EU]GQ%:8#N9=X+U)(:'Z*40!H7UAGFMBRWA3 +MQ\I[G>R<E)7*LHZLEE!$#;T:FKJ^I&K]:?<&S)ZGX(#M!>IKV`79]6+&I_/` +M]O?%U80G:<F=XR.1L(I)RHB^(/XG([>GB,BX@'\MT1.ND3\+D9RKS%4LC<CA +M<D.$-PQ:@?:INOH^>94+WR+O#I5%G-L=8]R*!I#5.V7#`,HCNP2_"#-G$GE4 +MB69\7+GGUVOYNE_6D(71'WCB97ETLMT2"Y6BK*)9>L3>+.]%KG4)T^(G\+`A +M$[K'-B27U"2YM;=F1'6BV4KACWJ=LQ8I`^%[V*\=O72&+DD-5:']^KIZ/:]P +MM#L]G3[D-'-'P=&*^#]>?N8MK/CUVOZSFU?9J8L%B!C9S?Y<:8[6A]GMO3T. +MGV>C]G;[?9^OM]JK?:Z<JFGRB+OS8)]B(5]=&62E!=<"E?26=E=^XV^,:P9W +MT1K79BI3>V1LB<JQ[>/&5F^Y]4?5M1_L-BH57H7:I9U08=&I2B]L@E25;IGV +M(.8:6^>$+ES#DK\KE=G'6IM?8LV;4$.OB5MK?5`!1L]O:0T$GNQTV3].>,)] +M:3S@E6U9KDKAPNN5+9.2::]/N:/;N:;5S,+0T)\0%=/2[&AW>KU*!SK=:J,@ +M(2N"PW%9W!KB\T>WT[3%?)+Y[V_GPF#H2O%R8)_`P9'B__T&"X-I_\KV0>A( +M"_D/:L>!3(?BJ2Y"RVW7$:-=2G^'Z",NLI#;QDHK&K(;<;_]?;H%)^9E2*BV +M.C;($ZV->]'M7<O-O&4P4YERNV$F![#SVQY1P<SZ\M/!H>_KNY`T15D#0L;; +MO+5;U9OO8W8]+R2_&EG*K9B'O:H9.XV:B]$??CZ,0!89*P^2[&LE7_?6GS&2 +MZ-_CTPI'A"AT71M;M#+M#DL;AXT94K'FZ..IMS?4VM*[>-&8[B#UHSF.2)!7 +MWRJLA$AJR#L;>/NJS\*9\JXP4:2'U)]W2EC2#[BP9%1GY)R*=CJ]/^^G"CHO +M5AO,[W4Z<?P+!<Y%J$#Y))M^'RV_9W]'L]33A29+HP=`.CVNO]>1*BZ?=]P. +M]V]/V3[.[H>Q='K>Z?5N<R^'Q1_Z;\8SL7)943XJ>F;D>W\K)STYV/HOPQO< +MAM6*%'2N#MW\@>ZDH@[MU<N1G;(E:G9U%G5B,+NC4YS&YFI7?D!=U)6&N,F> +M;7`DDVF=L1+MBC0[>WK2J%+`!PK6QT>.I+5Z?'8Y5R\-6]78Y]K9`\U^8BL- +MRIT=/P)W=MUW`<`+7@7.J_M%?&GL*GT`9Y9.R/#;/H5QUC\9P1?FE6]A+@3[ +MIP,/12G_AS*3.>)L-E>+_%NQ=[-L\U7NU2JXDIPXS#7AUR!)$HMA_R`%@"ZJ +MP3S:J_C'BIG^1,[>NAY373*#O)5?X]BC-4U!EX?OX&6/\^(:@[L,[%.%TZ_Q +MP]`!V<@\;EL@[&7&E<P]759>D&AW(BSGW*'RLG2C+__M/40````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M`````````#_V2\C^C%_:]3_Y____________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M______________________________________________________Z`1_R+ +M_^L?^G______________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________H$?\B__K'_I_____________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_________________Z!)#_4%IS_=3_\````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M``````````````````````````$````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M`!Q,(=41#,T1`!85O9S\*.C/!I9I1:2;N[&-B[`5MIBT,?1836;F[OB11)I) +M5B)-+34%IEX-^[V`4GT(E*.1T3,T512)P;F^.L,(DS43'5SOBOB7/\(/W/[] +MSD1P3SPF!'I,@``````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M````````````````.7XW\>[_'Z.[^I\O\.YZ>>OI?P^;^'I__RVDL4?\2G5G +M_T:?&__KIY7K#H7@A(IWJ%<*'!9%"OLP-!P7AD6BR0E+P\"H8V._E_*<QEP; +MWLUTJ$.I$,X2N;N9_#QPZ2(L.]FDBD<4.YZ]&BVMCO2M^>C?IFE[04,GALIT +MXYE9I+UTMU/+-*9HF_1./4FOK-SR3*$Q\?,OFSQ7M\WQ\<HW@JB[:+J(T,A: +M,GFDD`YIO>F5CX9ZMYX>?&%_>A&']?O</)-V73/N<.FT5M8V?WC>\$V'A#;8 +MAY^:-F[!<+R;L;2\W<U##D9THHEY^*V6HO:_*-7N!*'XKHD(F:;5+:R1PRC; +M,U7%)AMAHV(/U3V,G9\]U$NB/1X+]-]21.97'M^'CX>&/WE[NW#\"VZ13S4Z +M)=:V3Q#TU/+GI-CEU>"-W\DF:9P9/]HUM+9"3=,D')VO?T5`Y@0JK9)ZDNJK +MN55>?RY5NYJSH3J<C0#-.QWX/,XKS+NU5B.`I[VCGFX;YI,]&3DP;:'%EO9= +MUV&;<`HK7#?O![CC!OQ'4G`[R9JOH']CT9_5?4G`REYS2_.IO`/%`,VI*OO. +M#Y<^_O:D':^NIC&[M6\W^E6J+S/$=?>V#6<O;]VYEL&!+4/8DET<X,/H[-NU +MD!#H.-60L,8SOZA&#%PC6A:>/<3LVRY101KEWH:&G!%<KJW]^C[,CD"%3J5( +M%_/[-:LM:++QPD`9M7BR$+&8&7).Q3>)MZ=CQ\<L'SPERTXFCQSQ2Z*!TY*[ +ML;7,>GZ46;81TIWET&%/OY\_FBX9R>/:`QK42`YO2-X^SCART""SZ,LQY/<= +MB=%(CDGM?K4>#M4H81.AN\W>+J04IPP'Q7?#%+#5X'N,-_RY<;E[QC8;>KIZ +M!!J6F"=U;'=.2$/9QO\GT1A]9"/UH,N/)6`..U=WM_3Y9F+_?9'CCW45HLW# +M5?YEQW,@;`6'N49"V:96P+B<=&F)!F.WJSI5#;V/47ZVFGY>/)*@L?%@47T= +M'GNLHR3NG8Y3-!TZ'+]3GRB>+)PE;U"26?49/=@L;K[PEX?V<N_^-1`(`HC& +M[V3QBY"_UJS"-:S.Z2WKDIX92,1P0GA>2FO\LBX\]NH+4?O>=K/Q>Y\]82,D +MI.R70+29M(.239GW[I/W*1+WD^>_)WA[_N!83J\G>96F<QA)Y^33P>?Y,7.F +MUW>WV_\NUV^[VNY_+Q=WN;7R]O:^;M_OOU+JW!T"#%F@O#+?FM'?/6K_M/Q\ +MGE]92>;>;@U'G5+:CS7N]R[6Y:S\IT_MTSA7V>_0UU+W/GL#W%$4_9IDV.UT +M:(TR\M?7[?SSPS;MION5_N2V)FW:^/NMW/Y^2OBP\&UN_/W/Y2]7O6X6KQ/* +M0=M,X7KDSGY<05]C5_';_GV]?\&_(EMI[$$0.[L?]=CY=GUO^Z];>M.[V?Y] +MKN=-D3ZZ`1=W^/S1,5NBMH^6N@/)ETRK%77R_,E2%?H9$VOU)L.FP6V?@DP_ +M<N]'GMM/$HJ?+.X;XQHO:K=KO\7M^R;\[5V_X=O_+^6`7FBC%OD?B_3,9]Q6 +M>+RUMF[>.R2A%?SRLL@^_#WX.O705/G6FF)44T4=A<I@0XM[KJ`%J'\<%\&A +M,2&'7`T<F`AZWW?+41/>LF9T($3:1-$7*>D-%"$=?3N^+5%(_=^.27QEDR"] +MZTV@X8_&&>/G>F3@B!^/)-IU:J"_U:B;$#85>RVGU'%[P=WK."_7GXO?&2-F +M[XM/P$0.B'W9*5]S'?Z?U@:2^'\<$>/8OB<*6/R#VVO<0X?!7=?=DRK:EL.* +M`:89D&](VS"?U/FF$">_C>,B=Z;V2NB&SLN6SNH]$TU."0&_EP"9P8ZF]56_ +M\=XT5W*Z(8%\ZC[&:UCV8_:+VW,O/7*'4,FO<L5"%79G"*,'DI<525I(?J?: +M[F*8`XR1^?-+/Z9B^8<`$IGRZFID1O;/CJ7^<7!SL9]_/Y.2BEQ3@F/CNY;Z +MJE/J06+(;7-,O)X]C&ME41WYD5:P2UW[''-BBEO!12=)'M&!]RB2/Z\^FL,P +M4C$[3Y;Z`7T]C1B&4\48/17AW.2S5>@'.<6`99O;Z<2@48FVBZ,8DT*HLE,P +M8$A:?WB![D4(A^X<\\"%Y?RR1FS9NX,'%9T5G/1.&1(P.!;HYQM\T>.F%3X^ +MNQ3ZC?EV2J#N[M&Q=GXKPL.Q_XE&[&:;52DP2Y.T[-P06OA>#Z"'_(>O+Y,D +M`@^TN>3Z2#7J4I_FA0>U;LV`UQ0&3&W/HBZI0,GEWI:V]B'%YZ2<9K0OJFQ) +M+YW[7YYIT[AV;J$D)Y:C@.GSYMS--:+GRM*!(,_'ZZ_\^#^]E#6NU>CJ"()L +M?5W_K\'W4>AO8Z&0NS8S7_OT#BWR?XS.,R:2_'Y\9Q/8_Q^3H6FG%/8[&38_ +MG;*NW'*.W)A5=CL]G8_Z>MON_T^S[.S]&N]?OP@820/NQWO#]/]O!_V]DOW_ +MY[/0M'0];'@57<CMX33]MR(*^POL_\UAU.`^EPF2MAQ23O-N\R[M\I-#@_Y+ +M*L"CSP*,!]B&S,AK^SW.WW?F[?NY=I^)<O>&!=:%C)$5.+DUG+5/QT^8^CS? +M[>-NB$/V,E4<7)EZ7(.*]?PTP@@=BA%.&SYVO!]WU_)]O>^[P?7(++:^WZZ? +M#AAT\W[=EG;L3P351#M:+[3$?^\O^HME\&24S_T1G+U1+-Q79*PV'(J5IS:) +M$+]VKO&E0R'-2I['@H35R:B87H[7:A89L3_V,U+)&9;%!L6^-&H?IN^#KCG4 +MCV)YNHA15?],>61*F2!]P:JZ[6%"9,A?`G]9J<PR)MS+Z[RTF3'WVU5#M-=J +M82`*GY;+1DG%UPSJ4[1][>MO!^'WP:9LPB>GOW%?4D\V-E=FM\T^>W#]&KO) +MIO^I9^&R;K[;\*L#7<L<F/92MDGE.B!!1`,BD"_TQOG5CITW?YG;^BE9N.SM +M7?A%%"+9+KD2C6II#57#9D`5.BXY"!NLP,,&L3%SW^6]W/]B1L#RP>CZ?:*P +MN=-JHT;\"UT%)M-:<:NJ$71Y_=FZ\W).4!90;+G\EEX#1J;PR2-L#O-6&E(X +MK[#KM-8=]C<.;=9O$SI)Y<E_?GDW^2=#PJ&U][-SP\,2_K=7`M'4D8O[.;V7 +M;W>23;'V^>W;R31E:(Q,?#L<KC?>BCEK$8>6$9M[+H^$B:;'+>[EJJ)]A)U. +M2]L65(9R>I<#C8;!8>M=*W\_/L?B$S;X3>UO(F,]'V<1)_:NAODT_>$:7\>6 +M)[XZ<]'%=EU8T[QXE>QN9@=S24?7&Y[2*>E2E,<QU=.?%6'.0K$15/4,'L?? +MPW7UU(O<N^S-0$F"YK=(R`"\]FAI6BS&;1?AV)[U4X+]X^7I1/%2B%%T\]0V +MB-%Y5J$>K"3:<;D"A*_G'&4H5IDR7-$12A*,D+W*3C1W/%Y=4FQ%&*83)\NB +MRQQ'I4A=F*T+^3/-4^FZ?IB,WR?+%&A9>O(7.6/;&:KK2H%3UU>9E.D_@_S[ +M_]/IYW)E;XEL:43.SFZKSR6X=$TH+SSA8+GADWJ]F/Q$#TP`#+]\O%2K-\75 +ML=B;HFA_P9?1+AKSPG2;L$!(2VL(4$_?6AI^0IW!(B3O;79ZPN0?3$!;4UST +M9BKYP/1-M,3%^DBKR/(:/<.;7KJ^CT9J6&K??E"O&-LR=6RGX9%EM-,(W>/B +MF\4HB]G+UFY/IEP-HPS!8@UUFXK35!Z(_SASX(*5WQ7S576EW5-_8]'6[E2& +MKE=VN;X%:[NYM%C1<+NVLN.:!U-C+2"TX;(84R9WQ55<]'N<^7A.]&;;H2G: +M#P8PIZMK.3R_N^+I@J)ZUH?6T7MBS$%[-;2],4;LU!8^>>4)DZ[%-<Q&-0W# +M,=J;#LR>/+$+(R;-5"L'_!=I5@5L-VH?27![#)AY9<3HTDB7<6G1UD#6'S!& +MH+X0YJ?OKBF(13$RUIC<UIJOM:UW3ZHA5*)T6KVQ2HG5/QT1+L':C/<>G"W7 +M=M_#2</8)O<&7@F&GXL0/^;35Q.\_<F6=-[9;_)-T3_K0U`,E?5JT+IPBM.E +M]T`-^:0%^;AZ+"/I%9O6A^(+"SS+`->6D/N5,Z0V9I81!N6"9W1")IDC8QTY +M/]S@S[L^FC$8S\41:#".#%3?,LVB%[@9OO44+^]2Y&W-*^@BU1%`MY[N7=Z) +M]^&?@M&6F)V"QN;DQ":81BC^''8X[6`O>/1JNX"UK[5]VU37<FBIS3W[#._P +MD2+V]O^_K7Q?7]_A^VZ&$;9B,QOCEXKRO^B;>^_PD[J^:5V-%:YYL^W;(W9N +M_WNZ%Y:BU#%_UV!A"VE15/:I>TE"[5M4V\G@MA^[JC$SY>S]%LL?^\%K/H$B +M>&U`:H!APX&O?;D%)(#TBN7&_=A!A=Z&5]N?1IQ>U*\M9P!%SSJ0EY9;BRRM +M"`)5XZ72OR;/`UL&YXHB5JGR\EHWJT7@%R5G)QE[`!E^/RF>#SY9?YPZ8;%\ +MO2ZZ0GE0]^#'&NIG/SR2OVJ:/)N^:ZQ3%4M8]?<L"_^FW2JO_CW8(%UL\Q(- +MW=A(Z@?7!']D?,]2T9MSW4%_^GV0_Q*I(/3*$'Z%4P.SGLE*C,F\ML9M0[G1 +M>Z_+\O8AB$.F"76>F9<%4B>?XY`-W?%BE9&;L*K1F//PY:4U-V?VN.=`C,_# +M8L!#5>E%W^7>ZR2+H\/-N@_-"0W>QK]]Y('Q:B:5-5YK%!F:;^*G#'LA*+9_ +MIKK#6MV$\$9Z!'==!FHW[)O-636-^?JJ]7T@.>O7J=GX-Z_;EX*SJ'U9U(P9 +MQF@,Q"`W3X!*-7HMGP\[1:?PY.#?]*\W+[Q:_[28_V%L^#?/U9N*L\^]:U'7 +ME7I[\\&CPY?)\/(?,:V0=GWUV:FP/O;PC+OX9OSR_"O.+1]WI-'4[T^V'9UK +M=JZ;(4[<L]]LG%H[\)0_4\1^[G2Q6WX%[_37'_AWUXLOY>[Z/6")-H&;V_KY +M2A$N_R;'*[R)OVP;(F!9:KV%I2CB;Q[V$?(Z[JOA>B&U=?##-(7,P9'F%!YZ +MS8EBCUBT2P[5WA]V&:)+<V7>B)Y^*>3].?56\>"4AN[F6^&.;ISB=2`5:+A% +M^0XE:S$@#8W<?62)HA2_)BU-*"0[W<Y0]7&G;NF=8DD4>G,%I^7PA.V>D/?> +MWM6ZE9C4%\..:NA9;B?"N7:X^.=T8M8_ZSH3%?N'.F:UC?DH$6_&DMBZO,\] +M9>]2@.E)&;7=@D=U)T"42`L>@*>'J+B_Z2\JH.]C>LY%PXY-JRK^(RV><-5* +M2>^7GU'MMT5CO60]I-"DR:>F0FZ.@.KL9B`^=SG5_7R[6[0UW`C%[0OLVE,] +M)F1CJ+3%AG>E$9UD)*3/KR\51NY@58N-][GLR5HBGAT+-/74VG?ZE^7:K$N& +M3VNY(;T42+C+<G+Q65L)0!!*C/4MOO9C+-.6[K_`$7'-$-J_L+N&:N#3I`JJ +M[M"*#&3.I-OGZL^B(U)_;X=-2;TO%._O2ZDW.J(97U??,=>A7N)E!ETP)*'U +M?!I^.2U;77^G/2F2G#6U8=E"1-5T0C'>CX]=QBR)-":?T40W9V-5#TLC:WHO +M^*!X8CM&UR=CL_13GZ%->5J_.D6O:)QI+)M[9]-$MK%!G,O_R7LV/KFD9Y7B +M;A8_71]%)I@BF'&Y)COQ'S53+M9#=H$K.!5)9KX^++A<-'A]:9Q8F@BZO0,G +MLRXXB/Z3#1V9-";`%6]5PP:0-':1?@-WQ8?%:%C(9C?Y6]:5Z=<UW"SQT6[= +M83>3&BW)0!;375:#7?5-7MGU%#36?1Z'/V>GG5.^=49"A?#[+#F4#HO949#E +MWQ='-_6]9?=\?/G[7)SKUK<?_MWI/Q"J='13&G!`DY?NVO+1K+WXY;I\&;IV +MZI>%'4Q0$3''E,^4-2OA]7PK:&T8'=D-W*V<?GVNSZ>B6X4).M<^P3(LOE36 +MUM-'>9J(-49K[WT_97TJL`31ETP18CSP+Y>:/NG1^.37NW,F[YK,[*;EWA"S +MPH/KCI:14,R7^2%QK#G?19[D>Y((:%(OKH=&_4WGT)-<^^%OJ"8,">6Z6KIP +M;N<D&!8ME*4N;N?CJ;JL5ZA@12"2U+UQDVK#J9++N'7,[2.Q\4."3U8\$L4Q +MLF6J0;#!"PB:^]XI0TR(?X6G/1JMS?Z<M:Q#9\O[MJ?);UNQV;1N3.3I:0*+ +M1+/E!#T/S']]+(U\^-PWUY+LF7BMTM+CU3&CO7OFK5OSVX9J4\PB-S_'?7^* +M:'#.!F<&EU+B&6C-S+ID"7/=73,"W)PT</_6FJ'%Z[=0W=$/HF>`T/*Q\=W+ +MJ.0?2ZGGO>3C+?+C=$3[%>>'Q7<I?>7=U8'D_]0HL4IF'A:*<@VZ-`R;U5.6 +M*$LW1)8F"09:'%<(?&G`6L#]]>1";IC?4-V827=ABFSA3D2>9[TWW%3#WI<L +M_;?TFCHRUI,-IT\G0KL5@BQ=7X`^2;04]YP-2P=#@S%E'8Q?/&^\&?YD!\40 +M\XNH_9$")\/>B/@S::>_?O_.!K8N2QC&KC=E)1'%X\F[6U<EWCFKI5O64(NY +ML'I%7*N*>0,(EMS<-;TGOCCX9OPV))IGU$Y2FQ,TW>9:O5HFE=.)>[&W.N\" +M4W__&2.%O9(=V?Z9_2<+!ZMT4,L>_U/WU-4Z<]^DK:KD5WE&#$W]S(-*&_+N +M<DK@UDF76NCT9,';M?)CMWBM"B]5]BG4-TR4$-3^/)+TYN+&M!I=;"W,ZEC8 +MC'4VZAAK69X+W)1WMD*+BFG52`&W?-R4ER>D(&[NFG'M.M%=%:6CVU+$%]0$ +MQ"E_9JQ[_)>O*6A+?&_.9H#OL3ND%-Q1$='4N>/JS:/-C%LC^^@*WASU\<H1 +M"E\_@^3[]CO?W\$H)^ES'[&=^/SK)6#I+;=TX)^EP#R83?Y1B_9^&E&9_%GH +MF936C:&C[Y3:N\<NMRHC3J*D(T@TCB\F7"-S;W]KJ`<RV6D<VX//)R#RR+P9 +MHBJ+1LX?24F)-]GDZ?"UA^<5W<>C4EU*W<;DH!ZM*F5D9#Z+X+8LQDJ(ODFX +M;GS5A(;6EU,(];V:079.(H)=.?Q?4H1'LB]=2Y?^OC_/\^5Y:?0A6/!L<LXS +M96QX\//&)VF*_+,=3$;1M6E3)Y(EEJ0"\LJ\>IMA"VAS$\_'Q>>'M%FGP?IJ +M/EN\7,?&9E@!2"G4MDYDN9FH[(?NC?@R=(/K>R<&3R1'+WARSK&G[A<B,L73 +M'HB#.IJM>3QXI$-_;HNY3%,R;D0&I,9*2:U?WPU[!?':*;OUK1#=,='VN2YC +MG!O-B&7X3'9R4W`LC>Q(H4!1SU;LSI"?**"-$W3_&Q]\263CN&S1TA';YY95 +M/BI_>IPQ5*AK$(4L!N_;X?;S(!CM5VBJ??]O7XV(HQX*TG/V;4M`T7M#>ZSK +MXQ;F5XPIW'GG\V6VBYKC^*T3\DM^,6X],V3PG'R=/9.AKN@`=51G"L<M2!F. +M4=/:]D]KFC-C>J]IHZH;I]I='PU1EOXY'XJU2:;1TR9/*]V/=6")LTZ[AJCE +M4ZBGEG.3/1EYXE5SSYX'GCBF[!3+_TAAEZ>8LP4IWS:;SZ&^[SU-=_[+TF6T +M2-PJFXZ!44BM*.PC9$K>/JA\&"AFW64_[#VS\LVRWK!\M_H?)L4^@ADQKKU< +MO<AA\RA)Z4I=Z*)$<&V;J>]5#HV8?6LO6[DKKXLD'OH5H[=N7X*I^%@NG&P, +MU8J>]$Y!`Q(HE@#L_%>BZ1S;#W<\\2MGLWT)4Q[:P1FG0UF2!#HF2/[\<NQU +MLA*UQU=U=A(6/L?G]$X,N_*/V;`NZ.<W?W[!D4F)N"2>F`MYZ]LC7S,RX4DZ +MM?5$#2QJG)[0N.?8@\P$9-)^0.OMHW,VF()]_"@]_N<*U(DS02,0@FJ4'Z.X +M6-PG8Y3]WX`WR1P9=1]AT[_LS[T=5-U8D=/ZM[-1V-^;6YB-QIHS\8;">P]` +/%``FB51Y`0`````````` +` +end 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 new file mode 100644 index 0000000..91b7f28 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0003.rar.uu @@ -0,0 +1,1337 @@ +begin 644 - +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 +M$Q-H1!I,6B$<+<W\^[YKJY5LV2IJN=J"/<V>U^\]ML@)IJ@TM<4^",E3#'G3 +MA>*%?VW`H%5HFLFX).4Z`.;V?GKX;T]^755<'V<*UC>;-[%*;/X0]]!P>WI\ +M4,Y&PE_B_KBY3_KR8A*=V5Y9^":+9OY.2W-%I:#J"YC[#9]&6)@HH1ZHV*<8 +MTFQK2]$<A645.":BA=R^<=NOJ(%,H)2+!9H%.!"J[E>+2^(@3/9+1"6W2O)L +M"JZC)MCDJG+%_;+=UEV.2(I,V[T@E<XQKA"\G.*'GD,QF_.C^"NU*.#4`%AN +MJ>I4_>>,]J)SAMVO/1M>YM-AQ+IY8Q%WYDO:$R9":<E\43>>2(=(QI-8FT7K +MC-YVNI^VNP$O'+G7+LUC#W-PU`SJ5TG3!'3-Y$71F&\RIAPA-3+KMQ`A.LV> +MT\I=DWOQD9GR>3!S^2N>6\'-??Y*P]1Z)]:MSNVK3KLQO<_'-NOXQU:K;F)9 +MUV*]@/U`:IFZLT$S[=SK<E'K+3VL>Y$R`$N/I:%W^2F4+/B_%C=T!8XU<&6H +MH&1\D5,IK)(<RGDPJZT=^OV:P7F**-&?BH=UL6\T4Z4WF2,KMIB%:H]>)..[ +MF/V(NZ=$2+-2JO?\]\+?^W[DGO?%VZGNTCMOF;O1@7CNCW\E)B"E<G.C4AQ] +M&H-[6K^5["<AB$4]J:*?,#6!1;U*6>\79I]#\?;E*)GX0XO'&S/8K]`A_E[O +M:W-?VBQ++>W23#MSBS^;+K!B)WYOZGT*KTU5WI%WOQS4-JRU-KG?)+*W\?FK +M@=&+-$4Q=F<D?3P"^E3GK.Z<4[=SY/FV)]R@X`&__^TZ.``````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M`````````````````````````````#_Y2\3^S%_:]3_Y________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M______________Z`1_R+_^L?^G__________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M________________________________________________________H$?\ +MB__K'_I_____________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_____________________________________Z!'_(O_ZQ_Z?___________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M__________________^@3`'1%0R-%\6=F]S/A7.S5W8"T;9`[O=G2*&IP\3W +M2`(833>H2:8/`,[&-M/&Y!GWK4@<D`9+\//#CQL>,-D75WT2#SF<NKJ[NKJZ +M\=Y\2K^$7ZOU>#E*Z5W?Y+GLL``````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````' +MJ[_3SO^?JY_0_X^G^?0]2\[%_/G=#G^OW[GJ?'TY2['0XL!]#U(Z'1A";GY- +MBV,W6@9#W(9][P]/H]'[A3K3X&Y3I1IDIHT2.XL$R&Y[I4@=.F[#?/^ZK1ZD +M#&6'[\,TB^]<>9\"Y-'I=B--7:1>90X9!B^ZVMRLSBZ9H3>*UL(X9WO3T;88 +M(NBWJ;FWYMCU:_`%SO[.K)IJ?V@]X?H^G?YY_.^CG18D4%>CL=WJ];U#S>YF +MST<_/_)_+L;'E@R"(8&S]S/W[H'VO3[-G[XE?]16`H7C7$6F?`7.ERJ_\NC3 +M.&L[XU<8.@9'&L'1%!-IUL?&T8$DS.,.S_X.*MFY1YV-X9_`(S_AWXIX>G6] +MDL&G_OS_IAR`Z?BI3QZ.HD:>+P"$%C35TX0*EI^YVGV?T]ST<W3ZT%T"0#B. +M5@&JY<>4:L"3()CQ_;TU>HQ6M?7%4=POV:74YL0'I09'.UA@H)]/=\OOS@G5 +MZ&CX/T-X0-588>U]NIXZNWI5>"XTEJY?OC;IM''%S(ZHSSRMS1_9,TNG9F9* +MF04#YUGBD(U/->&+/_<==8H-%>N,41#3C!FNWYH_9"0.>;IUU'VT]?W7S>YV +M]+1\&G+.*[KK$#3UQL@WJ0$J6U([]?U5-)YOU'>%A%4ECR#*2V8(\L$@_1ZG +M5_>M2^O-UJZ<87UWTJ?*0@2\5T6OV04J5*,CN$HE#?-TJ_),E_7JI]%\7J\N +MOV0:*"'G_=ABT==/2VX$![&^U?\TQ0G]=X;?VP9/M_3Z_^/FZ5[Y7\O<_]K) +MY@;H[>EG^"-JWT+GP_=2<=/[HM^""I9BTXF+H\"73COXW[H+O.K/@PF8:\]" +MCI##99:XQN]=Z+Q7KC]X.'6;4K?:GQ\:7W=J_M;M]"?&IZV_>>&G[8GP)9B1 +MX9(_&5^S\.0(I^17K9SRSU$LO_&\_""37JU9_O$063CH3O+RY";HCLR!%4$M +M"P%R2C.-H4T+?C(5%67(4L1#KH$O:A2=CZ)I=,W#/<=T<&R;OD^+<G3*V-#T +M8MMRE$K(62"9GL1P;FUNN35HSJK,13^54IG+FP"J1WS3<_<3SZO@IYUD6M^U +M=V%KESCW<'PA*+,IK-'".[LRYPJ!^;1;N^EV^/;XL@P^XL4+T>GR7]R>;S\[ +M^F=SHQ[7Y?2JY?("\?;D5='4C,DW>]M08M$KGBTY947AE#!LF.-1V@1)FYE7 +M*S+,.\DPMX]7(X1G@KX\.YV?80W25I<SXX*1/G?)1@OQ8YDA?X>T4)IX`F?I +M3)JXIX+Y!.UCJI=3N:?1-X-R+CMH^S0QQ>.!3VST>W\OZO1/ARI:U0G<^O;3 +M?@AFLT3F^I]O8V(QKO1N<6+Q&9-K=QA#.ND9M!7LK*_-MU6##8]^H@N)@J;S +M3BOVQ,LPCG>582+:*V35;YCEAI24B(J0M\Y2JU<8P+_F<EE^?8U9N2;#BC3] +M2#Y&PRB9+5U:-!>JF;]*S-YF1E9"^6#7@6\98[_J_5S9'$"9N;%YV3NOV."U +MA%X/QR+L?QE@[7"<?DM]PX!HW%FS(9L$72W-F;R_Q4)6NGQ]CR5DD<$4/@WK +M5>O*)0-=YQ`?&+VC8K^WJOGE[O'>>R2TIR^1+26]F(+MYZ./+3O*L8(\L1?` +M6G+W.'X^$2W9;!*^:F_'@4W(5F1JU?<I<_*X+HP35,JIJEM5JO-(9?!T]C5D +M:EUZ(/V=5"B=/;[77Z4GO;3=!BQZR[?]<[?TA?,(.PG1+*-CN,P[BSG&,N11 +MT#IXJMZ;#ETA'O9*[E.@UKVEL3*</_697Q-/7(95A0EN3W'AX__(.X7FQ'^* +M7[+,FE$--JER9`TC$WG.G;U(*&V/%&$R+I:5^NRL+=.FB-;NLD.,QMLO.D-N +M4DQ^%3\/P]GPRM\&PA]\6^?`^G#_-J,+%7$%"L/;_D7>!NVGK-6P/Q`E+AE, +M%%$=&50&N`AV1&#.]R_+!IU\#Q8S3TS*5TKB%829O?Q#>Z'1F>_A]/F@F(_E +M??%ME+7D9Y2]60><3]4>9D0#[V8YBWW9I-LRT@->CU>XD"9$X/)4_D?@SMOT +M4=JLIM4RL^SH7+YF^D*/KRO?/*04O+L4&ZDC*5OA&Y,:7!/@]ZOHM"FQW8VJ +M5;AM*JL7;-6!N[6]J0@0>(#ME,2.IWSQZ(5C"T&2/9\1OUR3*%B2C7]$U3>G +MU7#`<LY:29%BL>_%*#CTL%T>+DJ]8LZ`%_S9T0AR,F*8A^38LN[FV;>H'$8@ +M.LX?T>!M2_'\S.MVAR_G/VL%"@,^G4"N=%Y0?-TLOL=FY3@:\3EV[\9U@?GO +MPA`,<P/8PCX+0U7FP^7S:V[O&R7?\?!$"./SH=,K?AKYVW[GP6S:&*.]3Z*, +M-O.B!JT<:$;VP.VV05-6_3X>YP4JS)DK=RTB.,/IR,AYL"8-FG22/(UB;KX- +MO&GN/W@4'B1?D.;V.J,?[Y`QL._(SO5J5A^ZO12`4M`,J6;H0HIK;&IJXH>2 +M%2*:&G,SJ5^>K9HV8Y<<-T]9F<;HSQ'1>LBVE;`)X`M'./CRH=Y@#/K"F_3I +M6A'NX-G8Q88FOI$>7QTRAGK]^A+$]U?7[^C;)"5,IZT`>9UCDVK&E`C>6Y/Y +M\5TCN5MV?<^!Y*D%[^;!P#[4=R5G$C'T,<`\OB>(JE,I?/=X>9^.6%.9EVN> +ME38)-%EIP\68%D!(J\.2P/2,9ZTN_ZJMO(<3\@'.$AJ8LQN+'*1OZ>MABA;T +M2=+%VV^E#8=?&(*C">6"'4>./TYUUZ^16ZB9?F032LZ@`G#.NUP)E_R"<M6Z +MH,RV5W\><$+G.1MQN&41O^>#0SVYI;T@#9T";E^4T8INM0VK05*WSG7N*-I/ +M$5.BGK)E"K(*LTJYMW7*0%E#-DIT)\<X]Z_6+!^-S&?X5M\VR'^/GG1)[=YL +M@)317A]4)RM#RZ0_]++#W%UMV>6M`)"$GL4\!QQ+S/C26*$*_!)7O&8J8SQE +M%.1)'$FU)&N9>UPB&'*@ZVQ.5<97)*HZ$LP8EM1J`AG9)EA010)R+E<*WI.: +M]:O'+5J/60FO]]?4O>9F7&+58QPXE=<$_[Y=?<@VU>AS\Z>^"&//+@SM?!MP +M0'>O[:_QZC1"HHK`V\AL!%@P)*Z;^UUI#AC3SVS#Y2EC^[8S`\,8J0E7-CCX +MH454<5$7#N4^4`KW*<G5(VKQ8+K*YVKD7145\,&K>54I;%J4N2KFI^'5Y^,1 +MK?,;1U`HG-30&8H;-(IHL$"RXYQ21.AQ<9'YO,W_.Y$EP]>$?@W8SRAX(VJ] +MXXWC[7@D_XJTY#HU:-Q;\R[07W!A<T="K2)XWI'RU4]..B4VE5DE8/H^&?8I +MT;/&DB_AKO6='/.7VOUHP=&2.Q^O.[8M(PZ+8RX)>&CE:\/ICJ'2G6<<EJ=F +M"Y.C<'\,/DL;4,-<Y)>//^G^D1(YUR?'_H@@.0O#%9._OL\-E.KOU<RKP?F1 +MMVE(@F+`%FU')WIZ8$55Y9?UC[66+0GV0SRY]T@&]JS(!Y=JY&2#N#J[+S7C +M=GR76K*\9=GT^U<_P>F_C24U418L\0)"7CMV")#BP2HMEXL%=+4KYJ^WI@G6 +M@%JZJ[2/0ZVIKYWXPTK^^'MU>:D;@0#<9S'L>(,5JZ50DJMVA5GDPS039RIQ +MAHKI;Y7FLX"ID"[LE5[6\F6Y!^#4VLGO*A@#T>?6EI?</]Q)7K8F6YKRH0MP +MI-O2^W;BQZX['+ERRY&/'M;NSM[%&HQ')&!VW@$W]O9P:^EI=FK+;^M81W0] +M7#)P37$H''@F^D$V;Y].5'?$\D<,W->K[5HZ?\OY7:'ES7:OM_6K]**]WT>5 +MP=ID5_'SU^A)5`P>B12EBOG!G(\?]O(,ZJZNARE%[&H"K\N7383F-&V2K`]X +ML&K+H:G+2H^[N<!/.Q3!,D0""(UL8KZH_>T.GXJ^6+]:LMOZ*,]>"%W;U;$( +M?)ED_MTH$E8_F)VC('`[:RJ8M;7I'Y&,+WQ:7SW<$\-Z5%RR^F`VQ>W:Y&.3 +MKVD*VG3V.Q<E6/@GDV:/=B6KF^.>%\AF-W>_VHUDSTKKXURQ<VO*6TMKEF5. +M2T!X%>/ISFG9V+O!Q/RKA#/P1FX6;(JDHD0DSR$B,08'6UD\\;$_7C)OJ,-9 +M7S>4O%<-T2^<C94S>-YG8<*I6W&I-`"S=;,TZ>QK:=?M=_WOUDD;6=_]XS?/ +M*>QTH?(3.,PE=,TU?(3,VI7J'$_9%_?<N3.4D`HP?A!%EE?7A\4)^EDA/]S0 +M[W8R]DL=[=V<FF%0Z^9_'H<_-BRP\GM_R@R!W;>\3,7RS)JO77_1XZD"[*;^ +MY68RL,4RI'188PU[&1Y>,6YU7:KKKKPJE#WI=S>>'O4Z,V\/9WX-N/ESM;8\ +MMNE$KQMI7':P([CO)NOH3&[0>D!:],\CT=+-HPSQS:M[R`<NIVL7K>SL:&78 +MD5E._>).-1Z!^P=&J_#H$84WAF//-:NAQ<]OLIBHDO\0`5XY;1IYT9B\?P'' +M%\(0!_TWC:_$NQNV+K9GC[G@N.PFCK&N/H:2B/;!X-IY",&RUJ%\8:$WFK?$ +MTM.(9;\C@P60KV]4;6L<J58.(@63&ZA1:V&"I,:;J?=U)L-*'DAKO9VO=CID +M^16:J89@61J;.S1PP?-TN(^RM+_U/)%O%28T>'R[]FYLRXG:<9NA'WO>Q7;J +MH-'O7EWXG&U2H`)B\V'9RT]]'$L,;=R3ROQW^#1TMT9(-Z!OH"+OE4XSZW?) +MZSR\DH6[[$GHC1W"<+],<B>9):&H\#XSZA6\%-S%=V"65A)AT/I;/0$;=97J +M_Q6,P"/QNSWE*=@J\>9*MT^+<U9&`XC'P8I,Y!$#7>NP#S>)3B`./BO5>%3Q +MX_%%D'ZUI;GBK+*X#S.D39+E?G/R5QVDR2].O)V7].6T[%.EC-8\?$YFXK!4 +M]>;CU5T(=0!5_AA+&<;5Q%6O[H[.&/Y[?=^?'<$UJ%I,Q96U]9MQO<G*!,LW +M^'-!Y&&?)ZS9O7H&+1#XG%-'NI;3@'X"JYZ(AR(Z5Z^W5*.=\\N&K>KOKPR2 +MHHT23K:NM#H__:YEQO4Q_`)4W0K)O3RR6L?X=W'N/^%'L6/^"S-X:\JK\ZFK +M;0QG%@C5I6/(MRZ'\_OC2\Z4S&Q-DZM5L3Z7H*Y@)E9`6&("I",E=YQ;.<)[ +MPKONQ!\_1]Q//@E=7^W,Y'PE]6SO";-_CY=OZKT9FR[QA]]VWM:V;):EG266 +M:;!!0!S=&"#G3NF'MV(?L_#H4["UG\H'BM?!S8Y5TM^;!P;>]_^.M[#W)H3- +MZ+:<R>P*(JPAF2Z^SXBM,!W,N\%ZDD-#]%*(`T+ZPSS6Q9;PIX^4]SO9.2DK +ME64=62R@B!MZ-35U?4C5^M/N#9D]3\$!V@O4U[`+L^K%C4_G@>WOBZL(3M.3 +M.\9'(V$4DY41?$'\3D=O3Q&1<0#^6Z(G72)^%R,Y5YBJ61N1PN2'"&X8M0/M +M4W7T?/,J%[Y%WATJBSFV.L>Y%`TAJG;+A@&41W8)?A!FSB3RJ1+,^+ESSZ[7 +M\W2_K2$+HC[QQ,KRZ66Z)!<K15E$LO6)O%G>BUSJ$Z?$3^%@0B=UCFQ)+ZA) +M<VMNS(CK1;*5PQ[U.V8L4@?"][%>.WKI#%R2&JM#^_5T]'M>X6AV>SI]R&CF +MCX.C%?!^O/W,6UGQZ[7]9S:OLU,6"Q`QLYO\N-,=K0^SVWIZ'3[/1^SM]OL_ +M7V^U5OM=.533Y1%WYL$^Q$*^NC+)2@NN!2OI+.RN_<;?&-8,[Z(UKLQ4IO;( +MV1.58]O'C*S?<^J/JVH_V&Q4*KT+M4LZH,.C4I1>V02I*MTS[$',-+?/"%RY +MAR5^5RNSCK4VOL6;-J"'7Q*VUOJ@`HV>WM(:"3W8Z;)^G/&$^M)YP2K:LUR5 +MPX77*ELG)-->GW-'MW--JYF%H:$^("NGI=C0[O5ZE`YUNM5&0$)7!8;BL[@U +MQ>:/;Z=IBODE\][?SX3!T)7BY,$_@8,CQ?_Z#!<&T_^5[(/0D!?R'M6/`ID/ +MQ5)<A9;;KB-&NI3_#]!&764AMXR45C5D-N-_^OMT"D_,RI%1;'1MD"=;&O>C +MVKN7FWC*8*<RY7;"3`]AY[8\HX.9]>6G@T/?UW<@:(JR!H6-MWEJMZLWWL;L +M>EY)?C2SE5LQ#WM4,G<;-1>B/OQ]&(`L,E8?)=C62K_OK3YC)=&_QZ84CPA0 +MZ+HVMVAEVAR6-P\:,J5CS=''4VYOJ;6E=O&C,=Q!ZT9S')$@K[Y560B0U9!V +M-O'W59^%,^5<8*-)#ZD^[I2QI!]Q8,BHS\DY%.QU>G_?3A1T7JPWF=[J=./X +M%@N<BU"!\DDV_#Y;?L[^CV>IIPI,ET8.@'1[77^O(E1=/N^X'>[>G[)]G=T/ +M8NCUO=/JW.9?#XH_]-^,9V+DLJ)\5/3-R/;^5DYZ<['T7X8WN0VK%"CI7!V[ +M^0/=240=VZN7(SMD2M3LZBSJQ&%W1J<YC<S4KOR`NZDK#7&3/-K@22;3.V(E +MVQ1H=O;UI5"E@`X5K8Z/'4EJ]/CL<JY>&K>KL<^UL@>:_,16&Y4Z.GX$[NVZ +M[@.`%KP+G5?VBOC3V%3Z`,\LG9'AMGT*XZQ^,X(OS2K>PEP)]TX&'HI3_PYE +M)G/$V&RO%_BW8N]FV>:KW:I5<24X<9AKPZY`DB46P_Y`"P!=58)YM5?QCQ4S +M_(F=O70\IKIE!WDJO\>Q1FJ:@R\/W\#+'^?$-0=V&=BG"Z=?XX>@`[.0>-RV +M0=C+C2N8>KJLO2#0[D19S[E#Y63I1E__VGJ(```````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M``````````````````!_[$O(_HQ?VO4_^?__________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M___^@$?\B__K'_I_____________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_____________________________________________Z!'_(O_ZQ_Z?___ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M__________________________^@1_R+_^L?^G______________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M________H$PAU1$,S1$`%A6]G/PHZ,\&EFE%I)N[L8V+L!6VF+0Q]%A-9N;N +M^)%$FDE6(DTM-46F7@W[O@!2?0B4HY'1,S15%(G!N;XZPPB3-1,=7.^*^)<_ +MP@_<_OW.1'!//"8$>DR````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M``!R_'_CW?X_1W?U/E_AW/3SU]+^'S?P]/_^6TEBC_B4ZL_^C3XW_]=/*]8= +M"\$)%.]0KA0X+(H5]F!H."\,BT62$I>'@5#&QW\OY3F,N#>]FNE0AU(AG"5S +M=S/X>.'21%AWLTD4CBAW/7HT6UL=Z5OST;],TO:"AD\-E.G',K-)>NENIY9I +M3-$WZ)QZDU]9N>290F/CYE\V>*]OF^/CE&\%47;1=1&AD+1D\TD@'--[TRL? +M#/5O/#SXPO[T(P_K][AY)NRZ9]SATVBMK&S^\;W@FP\(;;$//S1LW8+A>3=C +M:7F[FH8<C.E%$O/Q6RU%[7Y1J]P)0_%=$A$S3:I;62.&4;9FJXI,-L-&Q!^J +M>QD[/GNHET1Z/!?IOJ2)S*X]OP\?#PQ^\O=VX?@6W2*>:G1+K6R>(>FIY<]) +ML<NKP1N_DDS3.#)_M&MI;(2;ID@Y.U[^BH',"%5;)/4EU5=RJKS^7*MW-6=" +M=3D:`9IV._!YG%>9=VJL1P%/>T<\W#?-)GHR<F#;0XLM[+NNPS;@%%:X;]X/ +M<<8-^(ZDX'>3-5]`_L>C/ZKZDX&4O.:7YU-X!XH!FU)5]YP?+GW][4@[7UU, +M8W=JWF_TJU1>9XCK[VP:SE[?NW,M@P):A[$DNCG!A]'9MVL@(=!QJR%AC&=_ +M4(P8N$:T+3Q[B=FV7**"-<N]#0TX(KE=6_OT?9D<@0J=2I`OY_9K5EK19>.$ +M@#-J\60A8S`RY)V*;Q-O3L>/CE@^>$N6G$T>.>*710.G)7=C:YCT_2BS;".E +M.\N@PI]_/G\T7#.3Q[0&-:B0'-Z1O'V<<.6@06?1EF/)[CL3HI$<D]K]:CP= +MJE#")T-WF[Q=2"E.&`^*[X8I8:O`]QAO^7+C<O>,;#;U=/0(-2TP3NK8[IR0 +MA[.-_D^B,/K(1^M!EQY*P!QVKN]OZ?+,Q?[[(\<>ZBM%FX:K_,N.YD#8"P]R +MC(6S3*V!<3CHTQ(,QV]6=*H;>QZB_6TT_+QY)4%CXL"B^CH\]UE&2=T['*9H +M.G0Y?J<^43Q9.$K>H22SZC)[L%C=?>$O#^SEW_QJ(!`%$8W>R>,7(7^M681K +M69W26]<E/#*1B."$\+R4U_ED7'GMU!:C][SM9^+W/GK"1DE)V2Z!:3-I!R2; +M,^_=)^Y2)>\GSWY.\/?]P+"=7D[S*TSF,)//R:>#S_)BYTVN[V^W_EVNWW>U +MW/Y>+N]S:^7M[7S=O]]^I=6X.@08LT%X9;\UH[YZU?]I^/D\OK*3S;S<&H\Z +MI;4>:]WN7:W+6?E.G]NF<*^SWZ&NI>Y\]@>XHBG[-,FQVNC1&F7EKZ_;^>>& +M;=M-]RO]R6Q,V[7Q]UNY_/R5\6'@VMWY^Y_*7J]ZW"U>)Y2#MIG"]<F<_+B" +MOL:OX[?\^WK_@WY$MM/8@B!W=C_KL?+L^M_W7K;UIW>S_/M=SILB?70"+N_Q +M^:)BMT5M'RUT!Y,NF58JZ^7YDJ0K]#(FU^I-ATV"VS\$F'[EWH\]MIXE%3Y9 +MW#?&-%[5;M=_B]OV3?G:NW_#M_Y?RP"\T48M\C\7Z9C/N*SQ>6MLW;QV24(K +M^>5ED'WX>_!UZZ"I\ZTTQ*BFBCL+E,"'%O==0`M0_C@O@T)B0PZX&CDP$/6^ +M[Y:B)[UDS.A`B;2)HBY3TAHH0CKZ=WQ:HI'[OQR2^,LF07O6FT'#'XPSQ\[T +MR<$0/QY)M.K507^K438@;"KV6T^HXO>#N]9P7Z\_%[XR1LW?%I^`B!T0^[)2 +MON8[_3^L#27P_C@CQ[%\3A2Q^0>VU[B'#X*[K[LF5;4MAQ0#3#,@WI&V83^I +M\TP@3W\;QD3O3>R5T0V=ERV=U'HFFIP2`W\N`3.#'4WJJW_CO&BNY71#`OG4 +M?8S6L>S'[1>VYEYZY0ZADU[EBH0J[,X11@\E+BJ2M)#]3[7<Q3`'&2/SYI9_ +M3,7S#@`E,^74U,B-[9\=2_SBX.=C/OY_)R44N*<$Q\=W+?54I]2"Q9#:YIEY +M/'L8ULJB._,BK6"6N_8XYL44MX**3I(]HP/N421_7GTUAF"D8G:?+?0"^GL: +M,0RGBC!Z*\.YR6:KT`YSBP#+-[?3B4"C$VT71C$FA5%DIF#`D+3^\0/<BA$/ +MW#GG@0O+^62,V;-W!@XK.BLYZ)PR)&!P+='.-OFCQTPJ?'UV*?4;\NR50=W= +MHV+L_%>%AV/_$HW8S3:J4F"7)VG9N""U\+P?00_Y#UY?)D@$'VESR?20:]2E +M/\T*#VK=FP&N*`R8VY]$75*!D\N]+6WL0XO/23C-:%]4V))?._:_/-.G<.S= +M0DA/+4<!T^?-N9IK1<^5I0)!GX_77_GP?WLH:UVKT=01!-CZN_]?@^ZCT-[' +M0R%V;&:_]^@<6^3_&9QF327X_/C.)['^/R="TTXI['8R;'\[95VXY1VY,*KL +M=GL['_3UM]W^GV?9V?HUWK]^$#"2!]V.]X?I_MX/^WLE^__/9Z%HZ'K8\"J[ +MD=O":?MN1!7V%]G_FL.IP'TN$R5L.*2=YMWF7=OE)H<'_)95@4>>!1@/L0V9 +MD-?V>YV^[\W;]W+M/Q+E[PP+K0L9(BIQ<FLY:I^.GS'T>;_;QMT0A^QDJCBY +M,O2Y!Q7K^&F$$#L4(IPV?.UX/N^OY/M[WW>#ZY!9;7V_73X<,.GF_;LL[=B> +M":J(=K1?:8C_WE_U%LO@R2F?^B,Y>J)9N*[)6&PY%2M.;1(A?NU=XTJ&0YJ5 +M/8\%":N343"]':[4+#-B?^QFI9(S+8H-BWQHU#]-WP=<<ZD>Q/-U$**K_ICR +MR)4R0/N#577:PH3)D+X$_K-3F&1-N9?7>6DR8^^VJH=IKM3"0!4_+9:,DXNN +M&=2G:/O;UMX/P^^#3-F$3T]^XKZDGFQLKLUOFGSVX?HU=Y--_U+/PV3=?;?A +M5@:[ECDQ[*5LD\IT0(*(!D4@7^F-\ZL=.F[_,[?T4K-QV=J[\(HH1;)=<B4: +MU-(:JX;,@"IT7'(0-UF!A@UB8N>_RWNY_L2-@>6#T?3[16%SIM5&C?@6N@I- +MIK3C5U0BZ//[LW7FY)R@+*#9<_DLO`:-3>&21M@=YJPTI'%?8==IK#OL;AS; +MK-XF=)/+DO[\\F_R3H>%0VOO9N>'AB7];JX%HZDC%_9S>R[>[R2;8^WSV[>2 +M:,K1&)CX=CE<;[T4<M8C#RPC-O9='PD338Y;W<M51/L).IR7MBRI#.3U+@<; +M#8+#UKI6_GY]C\0F;?";VMY$QGH^SB)/[5T-\FG[PC2_CRQ/?'3GHXKLNK&G +M>/$KV-S,#N:2CZXW/:13TJ4ICF.KISXJPYR%8B*IZA@]C[^&Z^NI%[EWV9J` +MDP7-;I&0`7GLT-*T68S:+\.Q/>JG!?O'R]*)XJ40HNGGJ&T1HO*M0CU82;3C +M<@4)7\XXRE"M,F2YHB*4)1DA>Y2<:.YXO+JDV(HQ3"9/ET66.(]*D+LQ6A?R +M9YJGTW3],1F^3Y8HT++UY"YRQ[8S5=:5`J>NKS,ITG\'^??_I]/.Y,K?$MC2 +MB9V<W5>>2W#HFE!>><+!<\,F]7LQ^(@>F``9?OEXJ59OBZMCL3=$T/^#+Z)< +M->>$Z3=@@)"6UA"@G[ZT-/R%.X)$2=[:[/6%R#Z8@+:FN>C,5?.!Z)MIB8OT +MD5>1Y#1[AS:]=7T>C-2PU;[\H5XQMF3JV4_#(LMIIA&[Q\4WBE$7LY>LW)], +MN!M&&8+$&NLW%::H/1'^<.?!!2N^*^:JZTNZIO['HZW<J0U<KNUS?`K7=W-H +ML:+A=VUEQS0.IL9:06G#9#"F3.^*JKGH]SGR\)WHS;="4[0>#&%/5M9R>7]W +MQ=,%1/6M#ZVB]L68@O9K:7IBC=FH+'SSRA,G78IKF(QJ&X9CM38=F3QY8A9& +M39JH5@_X+M*L"MANU#Z2X/89,/++B=&DD2[BTZ.L@:P^8(U!?"'-3]]<4Q"* +M8F6M,;FM-5]K6NZ?5$*I1.BU>V*5$ZI^.B)=@[49[CTX6Z[MOX:3A[!-[@R\ +M$PT_%B!_S::N)WG[DRSIO;+?Y)NB?]:&H!DKZM6A=.$5ITON@!OS2`OS</18 +M1](K-ZT/Q!86>98!KRTA]RIG2&S-+"(-RP3.Z(1-,D;&.G)_N<&?=GTT8C&? +MBB+081P8J;YEFT0O<#-]ZBA?WJ7(VYI7T$6J(H%O/=R[O1/OPS\%HRTQ.P6- +MS<F(33",4?PX['':P%[QZ-5W`6M?:ONVJ:[DT5.:>_89W^$B1>WM_W]:^+Z_ +MO\/VW0PC;,1F-\<O%>5_T3;WW^$G=7S2NQHK7/-GV[9&[-W^]W0O+46H8O^N +MP,(6TJ*I[5+VDH7:MJFWD\%L/W=48F?+V?HMEC_W@M9]`D3PVH#5`,.'`U[[ +M<@I)`>D5RXW[L(,+O0ROMSZ-.+VI7EK.`(N>=2$O++<665H0!*O'2Z5^39X& +MM@W/%$2M4^7DM&]6B\`N2LY.,O8`,OQ^4SP>?++_.'3#8OEZ772$\J'OP8XU +MU,Y^>25^U31Y-WS76*8JEK'K[E@7_TVZ55_\>[!`NMGF)!N[L)'4#ZX(_LCY +MGJ6C-N>Z@O_T^R'^)5)!Z90@_0JF!V<]DI49DWEMC-J'<Z+W7Y?E[$,0ATP2 +MZSTS+@JD3S_'(!N[XL4K(S=A5:,QY^'+2FINS^UQSH$9GX;%@(:KTHN_R[W6 +M21='AYMT'YH2&[V-?OO)`^+432IJO-8H,S3?Q4X8]D)1;/]-=8:UNPG@C/0( +M[KH,U&_9-YJR:QOS]57J^D!SUZ]3L_!O7[<O!6=0^K.I&#.,T!F(0&Z?`)1J +M]%L^'G:+3^')P;_I7FY?>+7_:3'^PMGP;Y^K-Q5GGWK6HZ\J]/?G@T>'+Y/A +MY#YC6R#L^^NS4V!][>$9=_#-^>7X5YQ:/N])HZG>GVP[.M;M739"G;EGOMDX +MM'?A*'ZGB/W<Z6*V_`O?Z:X_\.^O%E_+W?1ZP1)M`S>W]?*4(EW^38Y7>1-^ +MV#9$P++5>PM*4<3>/>PCY'7=5\+T0VKKX89I"YF#(\PH//6;$L4>L6B6':N\ +M/NPS1);FR[T1//Q3R?ISZJWCP2D-W<RWPQS=.<3J0"K1<(OR'$K68D`;&[CZ +MR1-$*7Y,6II02'>[G*'JXT[=TSK$DBCTY@M/R^$)VSTA[[V]JW4K,:@OAQS5 +MT++<3X5R[7'QSNC%K'_6="8K]PYTS6L;\E`BWXTEL75YGGK+WJ4!TI(S:[L$ +MCNI.@2B0%CT!3P]1<7_27E5!WL;UG(N'')M65?Q&6SSAJI23WR\^H]MNBL=Z +MR'M)H4F33TR$W1T!U=C,0'SN<ZOZ^7:W:&NX$8O:%]FTIGI,R,=1:8L,[THC +M.LA)29]>7BJ-W,"K%QOO<]F2M$4\.A9IZZFT[_4OR[58EPR>UW)#>BB1<9;D +MY>*RMA*`()49ZEM][,99IRW=?X`BXYHAM7]A=PS5P:=(%57=H108R9U)M\_5 +MGT1&I/[?#IJ3>EXIW]Z74FYU1#*^K[YCKT*]Q,H,NF!)0^KX-/QR6K:Z_TYZ +M4R4X:VK#LH2)JNB$8[T?'KN,61)H33^BB&[.QJH>ED;6]%_Q0/#$=HVN3L=G +MZ*<_0IKRM7YTBU[1.-)9-O;/IHEM8H,YE_^2]FQ]<TC/*\3<+'ZZ/HI-,$4P +MXW),=^(^:J9=K(;M`E9P*I+-?'Q9<+AH\/K3.+$T$75Z!D]F7'$1_28:.S)H +M38`JWJN!H[2+\!N^+#XK0L9#,;_*WK2O3KFNX6>.BW;K";R8T6Y*`+::Z +MK0:[ZIJ]L^HH::SZ/0Y^ST\ZIWSJC(4+X?98<R@=%[*C(<N^+HYOZWK+[OCY +M\_:Y.=>M;C_]N])^(53HZ*8TX($G+]VUY:-9>_'+=/@S=.W5+PHZF*`B8X\I +MGRAJ5\/J^%;0VC`[LANY6SC\^UV?3T2W"A)UKGV"9%E\J:VMIH[S-1!JC-?> +M^G[*^E5@":,NF"+$>>!?+S1]TZ/QR:]VYDW?-9G93<N\(6>%!]<=+2*AF2_R +M0N-8<[Z+/<CW)!#0I%]=#HWZF\^A)KGWPM]03!@3RW2U=.#=SD@P+%LI2ES= +MS\=3=5BO4,"*026I>N,FU8=3)9=PZYG:1V/BAP2>K'@EBF-DRU2#88(6$37W +MO%*&F1#_"TYZ-5N;_3EK6(;/E_=M3Y+>MV.S:-R9R=+2!1:)9\H(>A^8_OI9 +M&OGQN&^O)=DR\5NEI<>J8T=Z]\U:M^>W#-2GF$1N?X[Z_Q30X9P,S@TNI<0R +MT9N9=,@2Y[JZ9@6Y.&CA_ZTU0XO7;J&[HA]$SP&AY6/CNY=1R#Z74\][R<9; +MY<;HB?8KSP^*[E+[R[NK`\G_J%%BE,P\+13D&W1H&3>JIRQ0EFZ)+$P2#+0X +MKA#XTX"U@?OKR(3=,;ZANS"2[L,4V<*<B3S/>F^XJ8>]+EG[;^DT=&6M)AM. +MGDZ%=BL$6+J_`'R3:"GO.!J6#H<&8LH[&+YXWW@S_,@/BB'G%U'[(@1/A[T1 +M\&;33W[]_YP-;%R6,8U<;LI*(XO'DW:VKDN\<U=*MZRA%W-@](JY5Q3R!A$M +MN;AK>D]\<?#-^&Q)-,^HG*4V)FF[S+5ZM$TKIQ+W8VYUW@2F__XR1PM[)#NS +M_3/Z3A8/5NBAECW^I^^IJG3GOTE;5<BN\HP8F_N9!I0WY=SDE<&LDRZUT>C) +M@[=KY,=N\5H47JOL4ZANF2@AJ?QY)>G-Q8UH-+K86YG4L;$8ZFW4,-:S/!>Y +M*.]LA1<4TZJ0`V[YN2DN3TA`W=TTX]IUHKHK2T>VI8@OJ`F(4O[-6/?Y+UY2 +MT);XWYS-`=]B=T@IN*(CHZESQ]6;1YL8MD?WT!6\.>OCE"(4OG\'R??L=[^_ +M@E!/TN8_8SOQ^=9*P=);;NG!/TN`>3";_*,7[/PTHS/XL]$S*:T;0T??*;5W +MCEUN5$:=14A&D&D<7DRX1N;>_M=0#F6RTCFW!YY.0>61>#-$51:-G#Z2DQ)O +ML\G3X6L/SBN[CT:DNI6[C<E`/5I4RLC(?1?!;%F,E1%\DW#<^:L)#:TNIA'K +M>S2"[)Q%!+IS^+ZE"(]D7KJ7+_U\?Y_GRO+3Z$*QX-CEG&;*V/'AYXQ.TQ7Y +M9CJ8C:-JTJ9/)$LM2`7EE7CU-L(6T.8GGX^+SP]HLT^#]-1\MWBYCXS,L`*0 +M4ZELG,ES,U'9#]T;\&3I!];V3@R>2(Y>\.6=8T_<+D1EBZ8]$09U-5KR>/%( +MAO[=%W*8IF3<B`U)C)236K^^&O8+X[13=^M:(;ICH^UR7,<X-YL0R_"8[.2F +MX%D;V)%"@*.>K=F=(3Y101HFZ?XV/OB2R<=PV:.D([?/+*I\5/[U.&*I4-8A +M"E@-W[?#[>9`,=JNT53[_MZ_&Q%&/!6DY^S:EH&B]H;W6=?&+<RO&%.X\\_F +MRVT7-<?Q6B?DEOQBW'IFR>$X^3I[)T-=T`#JJ,X5CEJ0,QRCI[7LGM<T9L;U +M7M-'5#=/M+H^&J,M_'(_%6J33:.F3)Y7NQ[JP1-FG7<-4<JG44\LYR9Z,O/$ +MJN>?/`\\<4W8*9?^D,,O3S%F"E.^;3>?0WW>>IKO_9>DRVB1N%4W'0*BD5I1 +MV$;(E;Q]4/@P4,VZRG_8>V?EFV6]8/EO]#Y-BGT$,F-=>KE[D,/F4)/2E+O1 +M1(C@VS=3WJH=&S#ZUEZW<E=?%D@]]"M';MR_!5/PL%TXV!FK%3WHG((&)%$L +M`=GXKT72.;8>[GGB5L]F^A*F/;6",TZ&LR0(=$R1_?CEV.MD)6N.KNKL)"Q] +MC\_HG!EWY1^S8%W1SF[^_8,BDQ-P23TP%O/7MD:^9F7"DG5KZH@:6-4Y/:%Q +MS[$'F`C)I/R!U]M&YFTQ!/OX4'O]SA6I$F:"1B$$U2@_1W"QN$['*?N_`&^2 +M.#+J/L.G?]F?>CJINK$CI_5O9J.QOS:W,1N--&?B-]:,H?U'QXJ4>>I7N<W4 +M1MZ&"YS(Q'P23>I?1R/\8OR>]^QCRK1LUPB45VXF)M"(-)BT0CA;F_GW?-=7 +M*MFR5-5SM01[FSVOWGMMD!--4&EKBGP1DJ88\Z<+Q0K^VX%`JM$UDW!)RG0! +MS>S\]?#>GORZJK@^SA6L;S9O8I39_"'OH.#V]/BAG(V$O\7]<7*?]>3$)3NR +MO+/P31;-_)R6YHM+0=07,?8;/HRQ,%%"/5&Q3C&DV-:7HCD*RBIP344+N7SC +MMU]1`IE!*18+-`IP(57<KQ:7Q$"9[):(2VZ5Y-@5749-L<E4Y8O[9;NLNQR1 +M%)FW>D$KG&-<(7DYQ0\\AF,WYT?P5VI1P:@`L-U3U*G[SQGM1.<-NUYZ-KW- +MIL.)=/+&(N_,E[0F3(33DOBB;SR1#I&-)K$VB]<9O.UU/VUV`EXY<ZY=FL8> +MYN&H&=2NDZ8(Z9O(BZ,PWF5,.$)J9==N($)UFSVGE+LF]^,C,^3R8.?R5SRW +M@YK[_)6'J/1/K5N=VU:==F-[GXYMU_&.K5;<Q+.NQ7L!^H#5,W5F@F?;N=;D +MH]9:>UCW(F0`EQ]+0N_R4RA9\7XL;N@+'&K@RU%`R/DBIE-9)#F4\F%76COU +M^S6"\Q11HS\5#NMBWFBG2F\R1E=M,0K5'KQ)QW<Q^Q%W3HB19J55[_GOA;_V +M_<D][XNW4]VD=M\S=Z,"\=T>_DI,04KDYT:D./HU!O:U?RO83D,0BGM313Y@ +M:P*+>I2SWB[-/H?C[<I1,_"'%XXV9[%?H$/\O=[6YK^T6)9;VZ28=N<6?S9= +M8,1._-_4^A5>FJN](N]^.:AM66IM<[Y)96_C\U<#HQ9HBF+LSDCZ>`7TJ<]9 +MW3BG;N?)\VQ/N4'``W__VG1P```````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M````````````````````````````/_E+Q/[,7]KU/_G_________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_____________H!'_(O_ZQ_Z?___________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M______________________________________________________^@1_R+ +M_^L?^G______________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________H$?\B__K'_I_____________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_________________Z!,`=$5#(T7Q9V;W,^%<[-7=@+1MD#N]V=(H:G#Q/=( +M`AA--ZA)I@\`SL8VT\;D&?>M2!R0!DOP\\./&QXPV1=7?1(/.9RZNKNZNKKQ +MWGQ*OX1?J_5X.4KI7=_DN>RP```````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M``````````````````````````````````````]7?Z>=_S]7/Z'_'T_SZ'J7 +MG8OY\[H<_U^_<]3X^G*78Z'%@/H>I'0Z,(3<_)L6QFZT#(>Y#/O>'I]'H_<* +M=:?`W*=*-,E-&B1W%@F0W/=*D#ITW8;Y_W5:/4@8RP_?AFD7WKCS/@7)H]+L +M1IJ[2+S*'#(,7W6UN5F<73-";Q6MA'#.]Z>C;#!%T6]3<V_-L>K7X`N=_9U9 +M--3^T'O#]'T[_//YWT<Z+$B@KT=CN]7K>H>;W,V>CGY_Y/Y=C8\L&01#`V?N +M9^_=`^UZ?9L_?$K_J*P%"\:XBTSX"YTN57_ET:9PUG?&KC!T#(XU@Z(H)M.M +MCXVC`DF9QAV?_!Q5LW*/.QO#/X!&?\._%/#TZWLE@T_]^?],.0'3\5*>/1U$ +MC3Q>`0@L::NG"!4M/W.T^S^GN>CFZ?6@N@2`<1RL`U7+CRC5@29!,>/[>FKU +M&*UKZXJCN%^S2ZG-B`]*#(YVL,%!/I[OE]^<$ZO0T?!^AO"!JK##VOMU/'5V +M]*KP7&DM7+]\;=-HXXN9'5&>>5N:/[)FET[,S)4R"@?.L\4A&IYKPQ9_[CKK +M%!HKUQBB(:<8,UV_-'[(2!SS=.NH^VGK^Z^;W.WI:/@TY9Q7==8@:>N-D&]2 +M`E2VI'?K^JII/-^H[PL(JDL>0926S!'E@D'Z/4ZO[UJ7UYNM73C"^N^E3Y2$ +M"7BNBU^R"E2I1D=PE$H;YNE7Y)DOZ]5/HOB]7EU^R#100\_[L,6CKIZ6W`@/ +M8WVK_FF*$_KO#;^V#)]OZ?7_Q\W2O?*_E[G_M9/,#=';TL_P1M6^A<^'[J3C +MI_=%OP05+,6G$Q='@2Z<=_&_=!=YU9\&$S#7GH4=(8;++7&-WKO1>*]<?O!P +MZS:E;[4^/C2^[M7]K=OH3XU/6W[SPT_;$^!+,2/#)'XROV?AR!%/R*];.>6> +MHEE_XWGX02:]6K/]XB"R<="=Y>7(3=$=F0(J@EH6`N249QM"FA;\9"HJRY"E +MB(==`E[4*3L?1-+IFX9[CNC@V3=\GQ;DZ96QH>C%MN4HE9"R03,]B.#<VMUR +M:M&=59B*?RJE,Y<V`52.^:;G[B>?5\%/.LBUOVKNPM<N<>[@^$)19E-9HX1W +M=F7.%0/S:+=WTNWQ[?%D&'W%BA>CT^2_N3S>?G?TSN=&/:_+Z57+Y`7C[<BK +MHZD9DF[WMJ#%HE<\6G+*B\,H8-DQQJ.T"),W,JY699AWDF%O'JY'",\%?'AW +M.S["&Z2M+F?'!2)\[Y*,%^+',D+_#VBA-/`$S]*9-7%/!?()VL=5+J=S3Z)O +M!N1<=M'V:&.+QP*>V>CV_E_5Z)\.5+6J$[GU[:;\$,UFB<WU/M[&Q&-=Z-SB +MQ>(S)M;N,(9UTC-H*]E97YMNJP8;'OU$%Q,%3>:<5^V)EF$<[RK"1;16R:K? +M,<L-*2D1%2%OG*56KC&!?\SDLOS[&K-R38<4:?J0?(V&43):NK1H+U4S?I69 +MO,R,K(7RP:\"WC+'?]7ZN;(X@3-S8O.R=U^QP6L(O!^.1=C^,L':X3C\EON' +M`-&XLV9#-@BZ6YLS>7^*A*UT^/L>2LDC@BA\&]:KUY1*!KO.(#XQ>T;%?V]5 +M\\O=X[SV26E.7R):2WLQ!=O/1QY:=Y5C!'EB+X"TY>YP_'PB6[+8)7S4WX\" +MFY"LR-6K[E+GY7!=&":IE5-4MJM5YI#+X.GL:LC4NO1!^SJH43I[?:Z_2D][ +M:;H,6/67;_KG;^D+YA!V$Z)91L=QF'<6<XQER*.@=/%5O38<ND(][)7<IT&M +M>TMB93A_ZS*^)IZY#*L*$MR>X\/'_Y!W"\V(_Q2_99DTHAIM4N3(&D8F\YT[ +M>I!0VQXHPF1=+2OUV5A;ITT1K=UDAQF-MEYTAMRDF/PJ?A^'L^&5O@V$/OBW +MSX'TX?YM1A8JX@H5A[?\B[P-VT]9JV!^($I<,I@HHCHRJ`UP$.R(P9WN7Y8- +M.O@>+&:>F92NE<0K"3-[^(;W0Z,SW\/I\T$Q'\K[XMLI:\C/*7JR#SB?JCS, +MB`?>S',6^[-)MF6D!KT>KW$@3(G!Y*G\C\&=M^BCM5E-JF5GV="Y?,WTA1]> +M5[YY2"EY=B@W4D92M\(W)C2X)\'O5]%H4V.[&U2K<-I55B[9JP-W:WM2$"#Q +M`=LIB1U.^>/1"L86@R1[/B-^N290L24:_HFJ;T^JX8#EG+23(L5CWXI0<>E@ +MNCQ<E7K%G0`O^;.B$.1DQ3$/R;%EW<VS;U`XC$!UG#^CP-J7X_F9UNT.7\Y^ +MU@H4!GTZ@5SHO*#YNEE]CLW*<#7B<NW?C.L#\]^$(!CF![&$?!:&J\V'R^;6 +MW=XV2[_CX(@1Q^=#IE;\-?.V_<^"V;0Q1WJ?11AMYT0-6CC0C>V!VVR"IJWZ +M?#W."E69,E;N6D1QA].1D/-@3!LTZ21Y&L3=?!MXT]Q^\"@\2+\AS>QU1C_? +M(&-AWY&=ZM2L/W5Z*0"EH!E2S="%%-;8U-7%#R0J130TYF=2OSU;-&S'+CAN +MGK,SC=&>(Z+UD6TK8!/`%HYQ\>5#O,`9]84WZ=*T(]W!L[&+#$U](CR^.F4, +M]?OT)8GNKZ_?T;9(2IE/6@#S.L<FU8TH$;RW)_/BND=RMNS[GP/)4@O?S8.` +M?:CN2LXD8^AC@'E\3Q%4IE+Y[O#S/QRPIS,NUSTJ;!)HLM.'BS`L@)%7AR6! +MZ1C/6EW_55MY#B?D`YPD-3%F-Q8Y2-_3UL,4+>B3I8NVWTH;#KXQ!483RP0Z +MCQQ^G.NO7R*W43+\R":5G4`$X9UVN!,O^03EJW5!F6RN_CS@A<YR-N-PRB-_ +MSP:&>W-+>D`;.@3<ORFC%-UJ&U:"I6^<Z]Q1M)XBIT4]9,H59!5FE7-NZY2` +MLH9LE.A/CG'O7ZQ8/QN8S_"MOFV0_Q\\Z)/;O-D!*:*\/JA.5H>72'_I98>X +MNMNSRUH!(0D]BG@..)>9\:2Q0A7X)*]XS%3&>,HIR)(XDVI(US+VN$0PY4'6 +MV)RKC*Y)5'0EF#$MJ-0$,[),L*"*!.1<KA6])S7K5XY:M1ZR$U_OKZE[S,RX +MQ:K&.'$KK@G_?+K[D&VKT.?G3WP0QYY<&=KX-N"`[U_;7^/4:(5%%8&WD-@( +ML&!)73?VNM(<,:>>V8?*4L?W;&8'AC%2$JYL<?%"BJCBHBX=RGR@%>Y3DZI& +MU>+!=97.U<BZ*BOA@U;RJE+8M2ER5<U/PZO/QB-;YC:.H%$YJ:`S%#9I%-%@ +M@67'.*2)T.+C(_-YF_YW(DN'KPC\&[&>4/!&U7O'&\?:\$G_%6G(=&K1N+?F +M7:"^X,+FCH5:1/&](^6JGIQT2FTJLDK!]'PS[%.C9XTD7\-=ZSHYYR^U^M&# +MHR1V/UYW;%I&'1;&7!+PT<K7A],=0Z4ZSCDM3LP7)T;@_AA\EC:AAKG)+QY_ +MT_TB)'.N3X_]$$!R%X8K)W]]GALIU=^KF5>#\R-NTI$$Q8`LVHY.]/3`BJO+ +M+^L?:RQ:$^R&>7/ND`WM69`/+M7(R0=P=79>:\;L^2ZU97C+L^GVKG^#TW\: +M2FJB+%GB!(2\=NP1(<6"5%LO%@KI:E?-7V],$ZT`M757:1Z'6U-?._&&E?WP +M]NKS4C<"`;C.8]CQ!BM72J$E5NT*L\F&:";.5.,-%=+?*\UG`5,@7=DJO:WD +MRW(/P:FUD]Y4,`>CSZTM+[A_N)*];$RW->5"%N%)MZ7V[<6/7'8Y<N67(QX] +MK=V=O8HU&(Y(P.V\`F_M[.#7TM+LU9;?UK".Z'JX9.":XE`X\$WT@FS?/IRH +M[XGDCAFYKU?:M'3_E_*[0\N:[5]OZU?I17N^CRN#M,BOX^>OT)*H&#T2*4L5 +M\X,Y'C_MY!G575T.4HO8U`5?ERZ;"<QHVR58'O%@U9=#4Y:5'W=S@)YV*8)D +MB`01&MC%?5'[VAT_%7RQ?K5EM_11GKP0N[>K8A#Y,LG]NE`DK'\Q.T9`X';6 +M53%K:](_(QA>^+2^>[@GAO2HN67TP&V+V[7(QR=>TA6TZ>QV+DJQ\$\FS1[L +M2U<WQSPOD,QN[W^U&LF>E=?&N6+FUY2VEM<LRIR6@/`KQ].<T[.Q=X.)^5<( +M9^",W"S9%4E$B$F>0D1B#`ZVLGGC8GZ\9-]1AK*^;REXKANB7SD;*F;QO,[# +MA5*VXU)H`6;K9FG3V-;3K]KO^]^LDC:SO_O&;YY3V.E#Y"9QF$KIFFKY"9FU +M*]0XG[(O[[ER9RD@%&#\((LLKZ\/BA/TLD)_N:'>[&7LECO;NSDTPJ'7S/X] +M#GYL66'D]O^4&0.[;WB9B^69-5ZZ_Z/'4@793?W*S&5ABF5(Z+#&&O8R/+QB +MW.J[5===>%4H>]+N;SP]ZG1FWA[._!MQ\N=K;'EMTHE>-M*X[6!'<=Y-U]"8 +MW:#T@+7IGD>CI9M&&>.;5O>0#EU.UB];V=C0R[$BLIW[Q)QJ/0/V#HU7X=`C +M"F\,QYYK5T.+GM]E,5$E_B`"O'+:-/.C,7C^`XXOA"`/^F\;7XEV-VQ=;,\? +M<\%QV$T=8UQ]#241[8/!M/(1@V6M0OC#0F\U;XFEIQ#+?D<&"R%>WJC:UCE2 +MK!Q$"R8W4*+6PP5)C3=3[NI-AI0\D-=[.U[L=,GR*S53#,"R-39V:.&#YNEQ +M'V5I?^IY(MXJ3&CP^7?LW-F7$[3C-T(^][V*[=5!H]Z\N_$XVJ5`!,7FP[.6 +MGOHXEAC;N2>5^._P:.ENC)!O0-]`1=\JG&?6[Y/6>7DE"W?8D]$:.X3A?ICD +M3S)+0U'@?&?4*W@IN8KNP2RL),.A]+9Z`C;K*]7^*QF`1^-V>\I3L%7CS)5N +MGQ;FK(P'$8^#%)G((@:[UV`>;Q*<0!Q\5ZKPJ>/'XHL@_6M+<\5997`>9TB; +M)<K\Y^2N.TF27IUY.R_IRVG8ITL9K'CXG,W%8*GKS<>JNA#J`*O\,)8SC:N( +MJU_='9PQ_/;[OSX[@FM0M)F+*VOK-N-[DY0)EF_PYH/(PSY/6;-Z]`Q:(?$X +MIH]U+:<`_`57/1$.1'2O7VZI1SOGEPU;U=]>&25%&B2=;5UH='_[7,N-ZF/X +M!*FZ%9-Z>62UC_#NX]Q_PH]BQ_P69O#7E5?G4U;:&,XL$:M*QY%N70_G]\:7 +MG2F8V)LG5JMB?2]!7,!,K("PQ`5(1DKO.+9SA/>%=]V(/GZ/N)Y\$KJ_VYG( +M^$OJV=X39O\?+M_5>C,V7>,/ONV]K6S9+4LZ2RS38(*`.;HP0<Z=TP]NQ#]G +MX="G86L_E`\5KX.;'*NEOS8.#;WO_QUO8>Y-"9O1;3F3V!1%6$,R77V?$5I@ +M.YEW@O4DAH?HI1`&A?6&>:V++>%/'RGN=[)R4E<JRCJR64$0-O1J:NKZD:OU +MI]P;,GJ?@@.T%ZFO8!=GU8L:G\\#V]\75A"=IR9WC(Y&PBDG*B+X@_B<CMZ> +M(R+B`?RW1$ZZ1/PN1G*O,52R-R.%R0X0W#%J!]JFZ^CYYE0O?(N\.E46<VQU +MCW(H&D-4[9<,`RB.[!+\(,V<2>52)9GQ<N>?7:_FZ7]:0A=$?>.)E>72RW1( +M+E:*LHEEZQ-XL[T6N=0G3XB?PL"$3NL<V))?4)+FUMV9$=:+92N&/>IVS%BD +M#X7O8KQV]=(8N20U5H?WZNGH]KW"T.SV=/N0T<T?!T8KX/UY^YBVL^/7:_K. +M;5]FIBP6(&-G-_EQICM:'V>V]/0Z?9Z/V=OM]GZ^WVJM]KIRJ:?*(N_-@GV( +MA7UT99*4%UP*5])9V5W[C;XQK!G?1&M=F*E-[9&R)RK'MX\96;[GU1]6U'^P +MV*A5>A=JEG5!AT:E*+VR"5)5NF?8@YAI;YX0N7,.2ORN5V<=:FU]BS9M00Z^ +M)6VM]4`%&SV]I#02>['39/TYXPGUI/."5;5FN2N'"ZY4MDY)IKT^YH]NYIM7 +M,PM#0GQ`5T]+L:'=ZO4H'.MUJHR`A*X+#<5G<&N+S1[?3M,5\DOGO;^?"8.A +M*\7)@G\#!D>+__08+@VG_RO9!Z$@+^0]JQX%,A^*I+D++;=<1HUU*?X?H(RZ +MRD-O&2BL:LAMQO_U]N@4GYF5(J+8Z-L@3K8U[T>U=R\V\93!3F7*[828'L// +M;'E'!S/KRT\&A[^N[D#1%60-"QMN\M5O5F^]C=CTO)+\:6<JMF(>]JAD[C9J +M+T1]^/HQ`%ADK#Y+L:R5?]]:?,9+HW^/3"D>$*'1=&UNT,NT.2QN'C1E2L>; +MHXZFW-]3:TKMXT9CN(/6C.8Y(D%??*JR$2&K(.QMX^ZK/PIGRKC!1I(?4GW= +M*6-(/N+!D5&?DG(IV.KT_[Z<*.B]6&\SO=3IQ_`L%SD6H0/DDFWX?+;]G?T> +MSU-.%)DNC!T`Z/:Z_UY$J+I]WW`[W;T_9/L[NA[%T>M[I]6YS+X?%'_IOQC. +MQ<EE1/BIZ9N1[?RLG/3G8^B_#&]R&U8H4=*X.W?R![J2B#NW5RY&=LB5J=G4 +M6=6(PNZ-3G,;F:E=^0%W4E8:XR9YM<"23:9VQ$NV*-#M[>M*H4L`'"M;'1XZ +MDM7I\=CE7+PU;U=CGVMD#S7YB*PW*G1T_`G=VW7<!P`M>!<ZK^T5\:>PJ?0! +MGED[(\-L^A7'6/QG!%^:5;V$N!/NG`P]%*?^',I,YXFPV5XO\6[%WLVSS5>[ +M5*KB2G#C,->'7($D2BV'_(`6`+JK!/-JK^,>*F?Y$SMZZ'E-=,H.\E5_CV*, +MU34&7A^_@98_SXAJ#NPSL4X73K_'#T`'9R#QN6R#L9<:5S#U=5EZ0:'<B+.? +M<H?*R=*,O_^T]1`````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M`````````````````'_L2\C^C%_:]3_Y____________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M__Z`1_R+_^L?^G______________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________H$?\B__K'_I_____ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_________________________Z!'_(O_ZQ_Z?_______________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M______^@2,_X7]KU=IP=H``````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M````````````````````````````````````````````.:0"\'3"D$,`M@L` +M`(].```#B$1N2\"!$C\=-1D`I($``$QI8F%R8VAI=F5!9&1I;F=497-T+FAT +M;6S`S,"!$C_!@1(_IQ@[Y,&O-%WTZIVL0'K=[L^M$"SZ*I?&B@$S2EO?UM\% +MP_[#*[0L[1)9)\]U]*;T*VY-H-V?:#KQ512.@3PFR-]M+$AU5@KH[FU"*J*5 +M<[>J&?_1OUJ=Y7J9V45-IF0'97^*.^+__"S<S71BV<[83%>O/I(.MP.7!P7! +MDL#G$T\^K,^^=@6>9IU!]1L+14"5EZHLTQLNZE*M8V]_NS[5.(N7ZDV)#A@T +M%ZLGY1?TZ:KDIW%%#T%Z:I_-!OKZ+RD5=I2"AM"&%<<A/`9KORK4A@D=419( +MBH83?PG';=16WY)G!/.&2/\($8MNPR.0=62B%0[D]A%!/+3)U0)'_[X)]QW^ +ML!+LK60%7U66R^^1E!2N@B,Z3^DR7\K=2<5]H*JQ.;,8?@<&UCSW]2[Z>F9T +M)4;8EZTP_]:ZQ\:<T$<NP7^)PX3+N";QKV4[.6?KABJ<K`%UI1^+&F3Y][X2 +MLEKJ$IL6'0;&=2AA>ZL$+8ZCW'*P$KI=7`JAW&B`X"L$74EEA\0F)4\,?$*= +M)^FMK.<TV9QX5#`\:P?O>)('5=PI]2Q2Z^_730[/($"GS+O_!&9U!*C)X?'A +M@?Y*C896K8#TVO&DM$D22E7*N*(B3^,?S\OU5%]PRV!S7PKRSV"SOT!T,ZT, +MPL4R*@,RXD:/S2>+!)2O#+.:Z:,Q8_^.2Z6&R<P,(<DLTWZ?U'OB2]OJ6S&' +MR3K/H5XR;W"4O;/U(]XNS2SXFO69*[MCJ]\[*YX0/-]"CU#G/F>*2J+V7[\: +M22)H5L&)BIB?<JJ]DH\5JU'@2:;#X:\#O+5KBT77GU`.69GPQI,)X%PF73/D +MF96>-HXT:'EJVWE_5G?,9\AF!,+P_UEW#5]\G0%G#)VXCP8-TS?AB&NAMH_. +MN5%/VO(#*WC.-;_ZGB5;*IK_;@LW5I.H!'+^BMQ[-+NO!WBBNN[D;Y4S@#^6 +MHS$7/#O!UIN3`'9`$\5()9:$%$A(@LT,;V4GJUA.@TBYDIMY.GL?09TH9A\) +M&P041M.E;WF>U>2&#?F/WE'F,BO*ZHXRMFG.4]R\XF#HL38`X.\XZIB8X^4Z +M+=#]D0-G0JB%''.S*'*%8Z!;J`%`KA\Y&7/KZS6^;]PS16V'DY-JLE4>,SV/ +MT*`LO0H#YW`)*`$IKHJJ"QZCA"SM7<&"Y@8P^"NJ%/LC/+9!MDH-[NF-@8B_ +MQ:5_!6.\OY3$Z6*!7\LQ(QTK#<?9;Q5H<"?411+@<NVSY)30O8'4+M<`K?57 +M'V$2ELZ<JJ=.YZTCP6-&Y-,=K^BC<KWF#SN?S;!*+/G27&Q%S9?W>:_"+C%[ +MIC`35R0R1;7ZI,Y'=?$4:=//'-XW24FT,<S/-W&9ILP4'AZ:',KP2S25JYLV +M5:JA[6//I'YRE+%/E/3EV8,[R)KMXH=)$3+2%=Q='?PH=:U?6@\3`T-A)_WX +MIH84;-^3QG/!W=AW4*0,J]C2H?"E_'"%7GM$!,:R7/W93UWR%:>WT.C$L@1Q +MY_*;"^'_P\/Y.@EFU-O"'D4^K5<5GE]_U!6JBS;%JZAJ[\JLBO3XWR&CBN\! +MCPZ<-=8'E_AIA>6$9[C_BEU3*RW\.[B7DNO_<%OK+?T)F12>Y<L$(H0*"41Q +MR+FB>(<55,;K=K"(G&R@</SQ\*H\9>7H(+?[%\=>>(9Z<R`R,!B+N_932$N= +MH"6-1#1Z"]RI2TI4#7(-4Q:IX*GF!OGQ(^J21W9&T'LB.[`C\R5(U#7Z/@QF +M*J5TV/#Z@U3PM0:3WZH#:&CL#\*6_SEX,^].?IP#II9V-7O\&V/B*.1IC1W] +MAE300L[?5R.M_6V$5W0_96E+LH&^#V.IR/6G@7\4^(R567:>@6TQE!(E&WM2 +M6(RN;K4PWW']QAM3&8-'BI_6V=>67EETJI58I/%^V'Y`)QVJ_-PMX]'D!@K= +M_+9>*F5IB.48.<JN')VDVT'PA+.A$`G4W]1,''"!)_3E-8$`R;274(N<O7+R +M3@=#K\\?/7KD>SQQ#>+SP;(Y4"(##2,,M0SQA@*5#))W!,>O-<\UI28HY\8F +MJHQ'H024"3S^?UK8"Z7/=\K'0+LR"^RG,84.3AZ];N!L-GH#K04MI]9.=!?B +MB$Z]TC-BS^R'^![STM'0-'25OT<I$0$8F>U"3,__$G[1Z2"`^20%[@MH"Q2? +M86#8@C1Z(*C]I:QL=F6)`;KY@H_,T5L"L:6B;=')"FI%Z_?\H?Q0*=F(',D@ +M2=WK5_P7-S=2XP"?&(,C3_T.XL3CZ[K9Z%<IFWZ6QA`X_.[(10F4JMI`'30P +MI5F995O>['FYSEQMM/8@C?I",[7*J9#'<#$38ER^&CDX+%/!23F(@$9333&F +M/+`;A>+<C-H!MKYUWG`Z)55Y+$[HRP(VA]TC5.%X]U'(]S&*-]6<`62UL]I& +MT.Z&-KY,#_C/7H<%-R';MM_U%LD^43DL324Q\B'2%;7%V`V@U`#//=<N>LC< +MN#ZSUEL'U^<.&%VP+^OO.!0"$M9%QK`Y8X%?_X)[D&NV>:<$\63EC95#B$MZ +MIA(SH*0.J:-R]2?N3)]GK;TL0',."`?@?@LK@,.KHWH)O?^Q_#S;S(W+/=:S +MT\HC*W*[P;&6X:&X8EK)!CYW6-Z0<'CJ*)1CRWP%2QPT;C"_88ZV*0X([8Y\ +M83!'!3.7?CWC;GD^2UFZ6UC*J+""K@"V8/"2,I303I'KH4C;_CD.[A$N)@7S +MJQ[`@#=F?>_')=IS!XMAQ..0&L#!;L(.%B@PL9+)-@(2E.J=[@][BYHA=^?S +M).>%M<`]TGO@R#.@+*40.C:Y#]ZX&1/YFF7Z2>*IG8OFJV#FFM;\51V_79C4 +M'[XBKA@(\G0!44;221&B/;''5VV2I?VH\)5KI3$%"2#0?AUSM(BS][#.V@HF +MBC:DVP1]/X(R\X;0E%:NRT"[#D``*IGFTL;GZ`<%\@NG#C(T!A2&3F9H`9<$ +M@H-R[]/">I9P5\\V$6S@\6&LO4USF:\\)IO\5SLB)[&#KV**6`Y%J'Z_.=ID +M2W[OUORZ#%,C@O>S=,9MV%(CMAP)/!ZEE7X%S9*TCCD8.YT*T;!Q^SOU1,L+ +MSM#9?/,;8#AGKJ^&>TW+OJ_PZIW\\;!NS]:K77N:KM;EE$"\F+=ZZFVJ7[FI +M4;-8BH`_0%+,TP>18F`>>C3RS]*C81!3K7S.^4<F2Y^'-RYP5^:^L4,*1B)H +M[B\K7FQ6*!S.'67/DWM_U/N[0>9,D#O"+V`:N-_`>9!QCTE#GBQR&#/FF+YT +M__RE!AL$3WT4U-0NFF.#\CT',T83SUZQ&Z[[Y=K9SLGGRDJ7G9M#?-6;F1,% +M:O*;F:56.:E]\JHWSJJ4PQP4R%D<$*]@E8_?7=W>#)SMT01Q&1$.>!2YKF6$ +M@%1](?_RA0FL>D"O'C_1UB^1'83'4>8Y95+1L3Z4'8'P6?*9Y:J"H4.;3<ND +M^/G]O4R5<7)R&*61.)^>IGS2J"[,S41\8^;Z\U2.%GI^L=FS/*!>?5:!<NX, +M1M4%Y*8+=H^;V_G0#<]?0-3IW]NS,]6!*(#R$A(S?K.%]E=229,1S[*%\&&. +M$'[0]V+)3@L%B9/[9!=4<^29#7AGR5!R7O7'D0F+S:57)[;ER'<,^80$Q0C- +MZZS7&HXT07.%E_-]@7K$,?]>O`7Z3OF(,#F+-D?)S@,%_Q7/EG\`;NF!1XU' +MVE$)*Y'@"8&Z_SES.X!!NU'"4$W9(%QFJCZ*D@PI9A57VGZ7X>^X=KV4WJWR +M=6Z1E>+R].WV">O68NY/8L(`R&D:F1LU>Q!&==(8>(NVEA.([@?W9^J"07@O +MY[5*;?VOMHS&^D-Z=8:),#87K9%[T.4=IAM^9:^=C;[3'9M%7]4T[=$T".LQ +MV,DG[_'^&;V8ZA'.&X+>OXJ!';3$T;[L!=29I4WU]%M+5JZ(#?WL,D2#-J=H +M/'+%EPE_9M3J1<$VTAG]PX;@N5,:NC,_K0P*"H%3NB6?<X/R[#-T9?8;IYYU +M]`(W3<(.5<_9./?\I&`K:EN*#Y])&699\[XG_6Z".QA*GVBG1QMK)Z1,>P]` +/%`!8UZ=L`@`````````` +` +end 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 new file mode 100644 index 0000000..0bfad77 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0004.rar.uu @@ -0,0 +1,208 @@ +begin 644 - +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:$ +M>AMQ1<[:Q1,R`,93"OEGSEK=MI8?J`.7F@.OG"C!,7`D$L>"<=.F[V1><*&Z +MR!RD@+&WIGW-?>ZZ^_[)-77?FF6P7=.]0P[ZG&Q:S^`6\IB_@_1WBNHT(_NG +M9U/F2.B1=F<0IU_\^4P5:0(O3UZ(%]?;P+,:P93'TY1&$%1":^%%QL3=^$\H +ME^-G\V%^"LU6_VKL;52EXDPE5CDBK6:^`<^^NLA^<#12RV@C=F&KA_.16*(< +M"Q`]X2NXR"Z&3R8<-5)4NFON6LA>OO>DP%W\;:X%U02HV.<?DL"T!W\0G,(O +MB='`]S/FZ\5W""%S9@W.S.<5?FAI.BT'A>0\A0\.7]!)P@O](;[;\:,&&0*B +M5YO(-RW/XL3PZP4?[(9_89&I4IC0F/699]][TOVQ&<AWUQ++/N?4J%D(>#CK +MG./_&Y%`6$E28)$-"V2S&^(B:;L27@TZ<T6FP+)[Z0>P;&XQN2>P`3>^+@^U +M>SZYH"D6%EA@NHX_.PQ"JO1!20@`TMD)JB'I4I6"Z!?34%7`3B<K>3`S[W"5 +M57Q3X5LE'?*5Q3-?=]G(TA<>1WH"VL7#SCU2]U;3<;1UI+Y@+PB1",6L'D/@ +MM!@CO@&YJ.1``6:=$6ALA);LL4A'D180QBLO%%EIX.ZI5Z:!`$!,8K@_@W/G +MDRCU(!GME6;Q(J$ZL*]%DFPT@C?A&-<OPP*/^\;%/0.)AGL\DWX($XN'"OZG +M+R0V@S'!OE:47`._@F<N>.+TIF=(7IXW!Q5:4`=:^IG+R?95I#+Q#/-`66)_ +MT1OPBM\B<D.<P*A;4P6Z2]$_W3W6T"F=-?K?L@S_&*.80\<>O<*$C9V>"#>` +MT"7[\W<W([BJT?,%[7^A@\T^*KV?)MM6+D#3$CB;@7EW%\,ZYM@3/6>$'7L? +M.<PBWIR]FPW@C0A3246@Y'43M-E5O+$Q$=#XK\N5B/T=5'16".]T\**<N[AU +MBU;#IVKJ@-W5V'ILRYR7K>*&G[H-0!K:L3\`9B9&#Z9KX0"@%40J%1LYHFH( +M)4A3)R0;W.R(MQ0.BYI%9)X*2H$/0.!4^\4<Z'T0G93OJ8]TV)-.,NES$='1 +MECR`H-2D@5ZB:CC$$-!ERG2V9+W$.D]Q#E&2)+9!VK^MNQ!TMHBY\H%_(%T: +MM2&7V)B@7$R1B2B8"6`NQ=8Y#_%[WCU):Y3%%$*<@2_W,=_/3_`;Y]:/`TET +M`!LFU\OI,R?JE$UN4Z!F+6`ZND$].?LOC?PS&_S*N*SW(</*6/\-"5K.YH*% +M]?N?'1^;%$:E)4ME-R@+D9J[9HM:_/T23-8;.EF>JHQ!H:'=2VRCP1`%NG14 +MP<"#A;@MF=G$*%LRY%A-!VF)^Y!W3<DS?=E:+MPG@28:`B:[&*O.4>T/[,E` +M*8*K8Y:![1="6!^TVCEP%LPT6GQ40RGE5`!6.DL%`_<Q8AO]ED0N3"2`AL(E +M"`#G^XQ7S:B'P3</]JX6F*`IP<4J/3C#IAP-$*E2^LMNF%8=Z2KD8@&.+\%X +MG!PSFXZB@)Q&7#T>JB<:0,R$[\KW<],]RQZ"%LR"S^Y"[?Y4JWM17;TS[]M9 +MC;^>;TRIT*W.^0A:N`>!PT\WL&47&.3;3>B$`L?U34%5S.,URDF.1R4BJEZJ +MO^9/\[5[(&31;I29KEF=.NV\#96`_.5(8<JJ0!%A_2`+_+=5]Z>7"X^@BI#\ +MS6>SG7G"U:U9X-[@@(F&JZ)2H_\6_*/R9RR]W.]0A*T&+M\/-7<XYLPC6^&R +M<Y%/BIPS(X2!R6ORLTR@`N[;@M?%V(?>?G'?EZ_A)LM)_!W)4+\X"=68E3"2 +M"@`]:LP77GO\ZH[&=!+0E.M:'.I=!M%.=8Z7`FK+6?L*4L!GZ;`X[DZD2/QU +M4.S#!XYJG1===9V4<P'&T-YM_DCMJ=@7JCT)8?N\)JU\6X2/3>+@KZ`UA-9/ +MWLY^X*'G!%G7[@QC2&-02_9@/UTB77._0#G].]H#K^,<[,!+'&_]?7`LQ5EQ +M0'P[C^,$E*92AFIN3S_7G#83@/;-48\%X^QXOHC_)E8*=DE*HS?V=(T-OV)1 +MAL$4XOL.@##ED,"_T.;E"5;!0&?O@9^SPTGEET`Q)J6>MY!/J.\5-%>&`7DR +ME;S:JJC8-5QP9R*>^T0COJ@C_1K!P'Y>C]E.75$17>M_=YH!><ZMS4B*7PIZ +M^R1"UXX*>Y'YI4N*M@QUD9&[4N$MCJYU*;3J-(2!4].I6J3=27\XWLCHXI4S +M@6T8Y*+]ZS3$\BR!ZF\6=*_W:'B961W(FK3W?%&RZC!XLW74?M*,M:!^M)BJ +M:D=K]+XRT%`JI2#:NE/5FSR@_:!F0CU'G9)J;QUW%),+#8PJITA!\!/L[RAP +MC%W6^E+33:;\BV+%UZYN1=B6XYQ_*%"&MYUE9`5]$?+!N:NVZO.@0?07OV+( +M%//RQ49B0?3320&&!'QG],AFT&X!7&.ZH7:XB>OFM5?F]=`[VCM]+OBI]XR; +M26Z9H'>QH;MIR4*+EMZ5B5>(U=`S=53Q8M-?2QK,13>K`RTT0[NC-UOMK-"Y +M0DN),([?4I''U1B^TX%CU<K##1FT`"9A23X48*U-5)[4BU8X$.57_8K1^WG[ +MCEG;TW91T*4XBS2?V&+DI.VX"'I]M6''J_J&GC4R3U%F2"**G&UHZG:ZTN`1 +MP?%6/;]LM/.T9-A=??2VP\-5V[V0(!K&[D.]4N8-TH38KY@"'(V3EKN;1A[6 +M^%P^]:B_94)=%=,60Y9)E5XMK@<';6MB7-)/G]%`Q?6&(>3$H^!8,$J9<Q6! +M*F!"I`[A"#^2EF-024TS]->[X?<%B$@V$LA#)*-]VGUOGMQAJT*#,T@E7'H< +MFX"OG#',\6).^M.P#$U88"G%$%*_4%SQ4%>N&HU1I$L)())YB9_$UH<+^=N3 +MYRR-IW4/+MT-Q^(B+XP2[3]2_K*=YS)`;8_;;H8V0[D0<KE\WJ;[YL0=1[%_ +MA.O/Y#G[&\>4ZA'C-[A,?/;IM'RF[NI_[0RVO/\>N\UX-FW^T!JEO_YRB?5- +MR0//T/N.C\DV@ZX*UFO![^V@8(E<T48EK`5P"VSJ-8V:A+I[2#?OQ*#S_\?G +M@,VO+TPD6`5/_U)E\J!R987Q[TT[LVEQG[M-V0'ZJEK,W_^/J<.:@>C4'=\. +M[S$:_]T0'^Q%]Y3>(CDK[#8)Z.>^[?6$1RMX;3NSQPR<J+0:>L9_1"<,O>[T +M<.RE!&)^#O,JH_N028&/]@"/51>IGP4!-U9Z+(8)9&MI+GX-NXS"F5P\E$C; +MM+>:KG]!QOF2I*(I\]UW'L78A3"+QFQ=DDDG6PKG%'VX-):?[EW6[%1=*UZ` +MYQ1MA$-P>RY:@S_6S:E?VN8GT)<@)<\I$S0BFW_:6,'U'S$#Q8FSC2\2KINN +MJC$Z-215^PH`:`D%68PZ>0@C2PNXS3T&"%*7I82@&X"'!!'+,%(A(FI?7P]3 +M,&.,;CK9H^9SAI!%_..5#/M=O)1P&R5M7Z]:,-WH:Y7SI,3!C]<4#ZSME:.% +M0'-4/.3'C0G]K=BM\<!)WGZ$2Z]3+,4S2P)\SG7@1*$L)Z\SK[XM:S7&1^#P +MO1YLA,_<5,X/8PK=>&%*,&UIEJ1&<.7%;CH?6C$X=$NFE^`3K-PLY[.!D=^O +MEFM50/A=JB@J*B4L7LG(`!SR]<;B\>0)&\SH.\65[0N:?@-DK.$$66H35*C8 +MW&&\2TG;_]J2U/X^=1,!-/8<Z5>DKL$?"-U+LRC[V,4>5CY=;BO=2!`W`Q_= +M'S5[^HJVHU2F!`_#O`#GU(EHGT*#MI[^DB$T(P```+^(9_:I_]3K4'3`D#(` +M&0```!D````#\=/\$2J%$C\4,`@`_Z$``'1E<W1L:6YKP`@JA1(_*H42/TQI +M8F%R8VAI=F5!9&1I;F=497-T+FAT;6QN273`D#H`(0```!0````#0J+(OK*! +M$C\=-1``I($``'1E<W1D:7)<=&5S="YT>'3`"+*!$C_3@1(_IQAS[Y;82LZ= +M4#-R:O8OE21=#P_TUX6[``"_B&?VJ?_44IATP)!+`/(6``"/3@```V.F!5ZR +M@1(_'34A`*2!``!T97-T9&ER7$QI8F%R8VAI=F5!9&1I;F=497-T+FAT;6S` +M"+*!$C_3@1(_IQ@[Y,&O-%WTZIVL0'K=[L^M$"SZ*I?&B@$S2EO?UM\%P_[# +M*[0L[1)9)\]U]*;T*VY-H-V?:#KQ512.@3PFR-]M+$AU5@KH[FU"*J*5<[>J +M&?_1OUJ=Y7J9V45-IF0'97^*.^+__"S<S71BV<[83%>O/I(.MP.7!P7!DL#G +M$T\^K,^^=@6>9IU!]1L+14"5EZHLTQLNZE*M8V]_NS[5.(N7ZDV)#A@T%ZLG +MY1?TZ:KDIW%%#T%Z:I_-!OKZ+RD5=I2"AM"&%<<A/`9KORK4A@D=419(BH83 +M?PG';=16WY)G!/.&2/\($8MNPR.0=62B%0[D]A%!/+3)U0)'_[X)]QW^L!+L +MK60%7U66R^^1E!2N@B,Z3^DR7\K=2<5]H*JQ.;,8?@<&UCSW]2[Z>F9T)4;8 +MEZTP_]:ZQ\:<T$<NP7^)PX3+N";QKV4[.6?KABJ<K`%UI1^+&F3Y][X2LEKJ +M$IL6'0;&=2AA>ZL$+8ZCW'*P$KI=7`JAW&B`X"L$74EEA\0F)4\,?$*=)^FM +MK.<TV9QX5#`\:P?O>)('5=PI]2Q2Z^_730[/($"GS+O_!&9U!*C)X?'A@?Y* +MC896K8#TVO&DM$D22E7*N*(B3^,?S\OU5%]PRV!S7PKRSV"SOT!T,ZT,PL4R +M*@,RXD:/S2>+!)2O#+.:Z:,Q8_^.2Z6&R<P,(<DLTWZ?U'OB2]OJ6S&'R3K/ +MH5XR;W"4O;/U(]XNS2SXFO69*[MCJ]\[*YX0/-]"CU#G/F>*2J+V7[\:22)H +M5L&)BIB?<JJ]DH\5JU'@2:;#X:\#O+5KBT77GU`.69GPQI,)X%PF73/DF96> +M-HXT:'EJVWE_5G?,9\AF!,+P_UEW#5]\G0%G#)VXCP8-TS?AB&NAMH_.N5%/ +MVO(#*WC.-;_ZGB5;*IK_;@LW5I.H!'+^BMQ[-+NO!WBBNN[D;Y4S@#^6HS$7 +M/#O!UIN3`'9`$\5()9:$%$A(@LT,;V4GJUA.@TBYDIMY.GL?09TH9A\)&P04 +M1M.E;WF>U>2&#?F/WE'F,BO*ZHXRMFG.4]R\XF#HL38`X.\XZIB8X^4Z+=#] +MD0-G0JB%''.S*'*%8Z!;J`%`KA\Y&7/KZS6^;]PS16V'DY-JLE4>,SV/T*`L +MO0H#YW`)*`$IKHJJ"QZCA"SM7<&"Y@8P^"NJ%/LC/+9!MDH-[NF-@8B_Q:5_ +M!6.\OY3$Z6*!7\LQ(QTK#<?9;Q5H<"?411+@<NVSY)30O8'4+M<`K?57'V$2 +MELZ<JJ=.YZTCP6-&Y-,=K^BC<KWF#SN?S;!*+/G27&Q%S9?W>:_"+C%[IC`3 +M5R0R1;7ZI,Y'=?$4:=//'-XW24FT,<S/-W&9ILP4'AZ:',KP2S25JYLV5:JA +M[6//I'YRE+%/E/3EV8,[R)KMXH=)$3+2%=Q='?PH=:U?6@\3`T-A)_WXIH84 +M;-^3QG/!W=AW4*0,J]C2H?"E_'"%7GM$!,:R7/W93UWR%:>WT.C$L@1QY_*; +M"^'_P\/Y.@EFU-O"'D4^K5<5GE]_U!6JBS;%JZAJ[\JLBO3XWR&CBN\!CPZ< +M-=8'E_AIA>6$9[C_BEU3*RW\.[B7DNO_<%OK+?T)F12>Y<L$(H0*"41QR+FB +M>(<55,;K=K"(G&R@</SQ\*H\9>7H(+?[%\=>>(9Z<R`R,!B+N_932$N=H"6- +M1#1Z"]RI2TI4#7(-4Q:IX*GF!OGQ(^J21W9&T'LB.[`C\R5(U#7Z/@QF*J5T +MV/#Z@U3PM0:3WZH#:&CL#\*6_SEX,^].?IP#II9V-7O\&V/B*.1IC1W]AE30 +M0L[?5R.M_6V$5W0_96E+LH&^#V.IR/6G@7\4^(R567:>@6TQE!(E&WM26(RN +M;K4PWW']QAM3&8-'BI_6V=>67EETJI58I/%^V'Y`)QVJ_-PMX]'D!@K=_+9> +M*F5IB.48.<JN')VDVT'PA+.A$`G4W]1,''"!)_3E-8$`R;274(N<O7+R3@=# +MK\\?/7KD>SQQ#>+SP;(Y4"(##2,,M0SQA@*5#))W!,>O-<\UI28HY\8FJHQ' +MH024"3S^?UK8"Z7/=\K'0+LR"^RG,84.3AZ];N!L-GH#K04MI]9.=!?BB$Z] +MTC-BS^R'^![STM'0-'25OT<I$0$8F>U"3,__$G[1Z2"`^20%[@MH"Q2?86#8 +M@C1Z(*C]I:QL=F6)`;KY@H_,T5L"L:6B;=')"FI%Z_?\H?Q0*=F(',D@2=WK +M5_P7-S=2XP"?&(,C3_T.XL3CZ[K9Z%<IFWZ6QA`X_.[(10F4JMI`'30PI5F9 +M95O>['FYSEQMM/8@C?I",[7*J9#'<#$38ER^&CDX+%/!23F(@$9333&F/+`; +MA>+<C-H!MKYUWG`Z)55Y+$[HRP(VA]TC5.%X]U'(]S&*-]6<`62UL]I&T.Z& +M-KY,#_C/7H<%-R';MM_U%LD^43DL324Q\B'2%;7%V`V@U`#//=<N>LC<N#ZS +MUEL'U^<.&%VP+^OO.!0"$M9%QK`Y8X%?_X)[D&NV>:<$\63EC95#B$MZIA(S +MH*0.J:-R]2?N3)]GK;TL0',."`?@?@LK@,.KHWH)O?^Q_#S;S(W+/=:ST\HC +M*W*[P;&6X:&X8EK)!CYW6-Z0<'CJ*)1CRWP%2QPT;C"_88ZV*0X([8Y\83!' +M!3.7?CWC;GD^2UFZ6UC*J+""K@"V8/"2,I303I'KH4C;_CD.[A$N)@7SJQ[` +M@#=F?>_')=IS!XMAQ..0&L#!;L(.%B@PL9+)-@(2E.J=[@][BYHA=^?S).>% +MM<`]TGO@R#.@+*40.C:Y#]ZX&1/YFF7Z2>*IG8OFJV#FFM;\51V_79C4'[XB +MKA@(\G0!44;221&B/;''5VV2I?VH\)5KI3$%"2#0?AUSM(BS][#.V@HFBC:D +MVP1]/X(R\X;0E%:NRT"[#D``*IGFTL;GZ`<%\@NG#C(T!A2&3F9H`9<$@H-R +M[]/">I9P5\\V$6S@\6&LO4USF:\\)IO\5SLB)[&#KV**6`Y%J'Z_.=ID2W[O +MUORZ#%,C@O>S=,9MV%(CMAP)/!ZEE7X%S9*TCCD8.YT*T;!Q^SOU1,L+SM#9 +M?/,;8#AGKJ^&>TW+OJ_PZIW\\;!NS]:K77N:KM;EE$"\F+=ZZFVJ7[FI4;-8 +MBH`_0%+,TP>18F`>>C3RS]*C81!3K7S.^4<F2Y^'-RYP5^:^L4,*1B)H[B\K +M7FQ6*!S.'67/DWM_U/N[0>9,D#O"+V`:N-_`>9!QCTE#GBQR&#/FF+YT__RE +M!AL$3WT4U-0NFF.#\CT',T83SUZQ&Z[[Y=K9SLGGRDJ7G9M#?-6;F1,%:O*; +MF:56.:E]\JHWSJJ4PQP4R%D<$*]@E8_?7=W>#)SMT01Q&1$.>!2YKF6$@%1] +M(?_RA0FL>D"O'C_1UB^1'83'4>8Y95+1L3Z4'8'P6?*9Y:J"H4.;3<ND^/G] +MO4R5<7)R&*61.)^>IGS2J"[,S41\8^;Z\U2.%GI^L=FS/*!>?5:!<NX,1M4% +MY*8+=H^;V_G0#<]?0-3IW]NS,]6!*(#R$A(S?K.%]E=229,1S[*%\&&.$'[0 +M]V+)3@L%B9/[9!=4<^29#7AGR5!R7O7'D0F+S:57)[;ER'<,^80$Q0C-ZZS7 +M&HXT07.%E_-]@7K$,?]>O`7Z3OF(,#F+-D?)S@,%_Q7/EG\`;NF!1XU'VE$) +M*Y'@"8&Z_SES.X!!NU'"4$W9(%QFJCZ*D@PI9A57VGZ7X>^X=KV4WJWR=6Z1 +ME>+R].WV">O68NY/8L(`R&D:F1LU>Q!&==(8>(NVEA.([@?W9^J"07@OY[5* +M;?VOMHS&^D-Z=8:),#87K9%[T.4=IAM^9:^=C;[3'9M%7]4T[=$T".LQV,DG +M[_'^&;V8ZA'.&X+>OXJ!';3$T;[L!=29I4WU]%M+5JZ(#?WL,D2#-J=H/'+% +MEPE_9M3J1<$VTAG]PX;@N5,:NC,_K0P*"H%3NB6?<X/R[#-T9?8;IYYU]`(W +M3<(.5<_9./?\I&`K:EN*#Y])&699\[XG_6Z".QA*GVBG1QMK)QZ!(MLL/*VW +ME:DH_7V;J?&FZ]TBP],H/^575,R;QB;_XGJD#X4-#3(`I<AVT>>&A'H;<47. +MVL43,@#&4PKY9\Y:W;:6'Z@#EYH#KYPHP3%P)!+'@G'3IN]D7G"ANL@<I("Q +MMZ9]S7WNNOO^R35UWYIEL%W3O4,.^IQL6L_@%O*8OX/T=XKJ-"/[IV=3YDCH +MD79G$*=?_/E,%6D"+T]>B!?7V\"S&L&4Q].41A!40FOA1<;$W?A/*)?C9_-A +M?@K-5O]J[&U4I>),)58Y(JUFO@'/OKK(?G`T4LMH(W9AJX?SD5BB'`L0/>$K +MN,@NAD\F'#525+IK[EK(7K[WI,!=_&VN!=4$J-CG'Y+`M`=_$)S"+XG1P/<S +MYNO%=P@A<V8-SLSG%7YH:3HM!X7D/(4/#E_02<(+_2&^V_&C!AD"HE>;R#<M +MS^+$\.L%'^R&?V&1J5*8T)CUF6??>]+]L1G(=]<2RS[GU*A9"'@XZYSC_QN1 +M0%A)4F"1#0MDLQOB(FF[$EX-.G-%IL"R>^D'L&QN,;DGL`$WOBX/M7L^N:`I +M%A988+J./SL,0JKT04D(`-+9":HAZ5*5@N@7TU!5P$XG*WDP,^]PE55\4^%; +M)1WRE<4S7W?9R-(7'D=Z`MK%P\X]4O=6TW&T=:2^8"\(D0C%K!Y#X+08([X! +MN:CD0`%FG1%H;(26[+%(1Y$6$,8K+Q19:>#NJ5>F@0!`3&*X/X-SYY,H]2`9 +M[95F\2*A.K"O19)L-((WX1C7+\,"C_O&Q3T#B89[/)-^"!.+APK^IR\D-H,Q +MP;Y6E%P#OX)G+GCB]*9G2%Z>-P<56E`'6OJ9R\GV5:0R\0SS0%EB?]$;\(K? +M(G)#G,"H6U,%NDO1/]T]UM`IG37ZW[(,_QBCF$/''KW"A(V=G@@W@-`E^_-W +M-R.XJM'S!>U_H8/-/BJ]GR;;5BY`TQ(XFX%Y=Q?#.N;8$SUGA!U['SG,(MZ< +MO9L-X(T(4TE%H.1U$[395;RQ,1'0^*_+E8C]'51T5@CO=/"BG+NX=8M6PZ=J +MZH#=U=AZ;,N<EZWBAI^Z#4`:VK$_`&8F1@^F:^$`H!5$*A4;.:)J""5(4R<D +M&]SLB+<4#HN:162>"DJ!#T#@5/O%'.A]$)V4[ZF/=-B33C+I<Q'1T98\@*#4 +MI(%>HFHXQ!#09<ITMF2]Q#I/<0Y1DB2V0=J_K;L0=+:(N?*!?R!=&K4AE]B8 +MH%Q,D8DHF`E@+L76.0_Q>]X]26N4Q11"G($O]S'?ST_P&^?6CP-)=``;)M?+ +MZ3,GZI1-;E.@9BU@.KI!/3G[+XW\,QO\RKBL]R'#REC_#0E:SN:"A?7[GQT? +MFQ1&I25+93<H"Y&:NV:+6OS]$DS6&SI9GJJ,0:&AW4MLH\$0!;IT5,'`@X6X +M+9G9Q"A;,N1830=IB?N0=TW),WW96B[<)X$F&@(FNQBKSE'M#^S)0"F"JV.6 +M@>T70E@?M-HY<!;,-%I\5$,IY50`5CI+!0/W,6(;_99$+DPD@(;")0@`Y_N, +M5\VHA\$W#_:N%IB@*<'%*CTXPZ8<#1"I4OK+;IA6'>DJY&(!CB_!>)P<,YN. +MHH"<1EP]'JHG&D#,A._*]W/3/<L>@A;,@L_N0NW^5*M[45V],^_;68V_GF], +MJ="MSOD(6K@'@<-/-[!E%QCDVTWHA`+']4U!5<SC-<I)CD<E(JI>JK_F3_.U +M>R!DT6Z4F:Y9G3KMO`V5@/SE2&'*JD`18?T@"_RW5?>GEPN/H(J0_,UGLYUY +MPM6M6>#>X(")AJNB4J/_%ORC\F<LO=SO4(2M!B[?#S5W..;,(UOALG.13XJ< +M,R.$@<EK\K-,H`+NVX+7Q=B'WGYQWY>OX2;+2?P=R5"_.`G5F)4PD@H`/6K, +M%UY[_.J.QG02T)3K6ASJ70;13G6.EP)JRUG["E+`9^FP..Y.I$C\=5#LPP>. +M:IT7776=E',!QM#>;?Y([:G8%ZH]"6'[O":M?%N$CTWBX*^@-8363][.?N"A +MYP19U^X,8TAC4$OV8#]=(EUSOT`Y_3O:`Z_C'.S`2QQO_7UP+,59<4!\.X_C +M!)2F4H9J;D\_UYPV$X#VS5&/!>/L>+Z(_R96"G9)2J,W]G2-#;]B48;!%.+[ +M#H`PY9#`O]#FY0E6P4!G[X&?L\-)Y9=`,2:EGK>03ZCO%317A@%Y,I6\VJJH +MV#5<<&<BGOM$([ZH(_T:P<!^7H_93EU1$5WK?W>:`7G.K<U(BE\*>OLD0M>. +M"GN1^:5+BK8,=9&1NU+A+8ZN=2FTZC2$@5/3J5JDW4E_.-[(Z.*5,X%M&.2B +M_>LTQ/(L@>IO%G2O]VAXF5D=R)JT]WQ1LNHP>+-UU'[2C+6@?K28JFI':_2^ +M,M!0*J4@VKI3U9L\H/V@9D(]1YV2:F\==Q23"PV,*J=(0?`3[.\H<(Q=UOI2 +MTTVF_(MBQ=>N;D78EN.<?RA0AK>=960%?1'RP;FKMNKSH$'T%[]BR!3S\L5& +M8D'TTTD!A@1\9_3(9M!N`5QCNJ%VN(GKYK57YO70.]H[?2[XJ?>,FTENF:!W +ML:&[:<E"BY;>E8E7B-70,W54\6+37TL:S$4WJP,M-$.[HS=;[:S0N4)+B3". +MWU*1Q]48OM.!8]7*PPT9M``F84D^%&"M352>U(M6.!#E5_V*T?MY^XY9V]-V +M4="E.(LTG]ABY*3MN`AZ?;5AQZOZAIXU,D]19D@BBIQM:.IVNM+@$<'Q5CV_ +M;+3SM&3877WTML/#5=N]D"`:QNY#O5+F#=*$V*^8`AR-DY:[FT8>UOA</O6H +MOV5"7173%D.6295>+:X'!VUK8ES23Y_10,7UAB'DQ*/@6#!*F7,5@2I@0J0. +MX0@_DI9C4$E-,_37N^'W!8A(-A+(0R2C?=I];Y[<8:M"@S-()5QZ')N`KYPQ +MS/%B3OK3L`Q-6&`IQ1!2OU!<\5!7KAJ-4:1+"2"2>8F?Q-:'"_G;D^<LC:=U +M#R[=#<?B(B^,$NT_4OZRG><R0&V/VVZ&-D.Y$'*Y?-ZF^^;$'4>Q?X3KS^0Y +M^QO'E.H1XS>X3'SVZ;1\IN[J?^T,MKS_'KO->#9M_M`:I;_^<HGU3<D#S]#[ +MCH_)-H.N"M9KP>_MH&")7-%&):P%<`MLZC6-FH2Z>T@W[\2@\__'YX#-KR], +M)%@%3_]29?*@<F6%\>]-.[-I<9^[3=D!^JI:S-__CZG#FH'HU!W?#N\Q&O_= +M$!_L1?>4WB(Y*^PV">CGONWUA$<K>&T[L\<,G*BT&GK&?T0G#+WN]'#LI01B +M?@[S*J/[D$F!C_8`CU47J9\%`3=6>BR&"61K:2Y^#;N,PIE</)1(V[2WFJY_ +M0<;YDJ2B*?/==Q[%V(4PB\9L79)))UL*YQ1]N#26G^Y=UNQ472M>@.<4;81# +M<'LN6H,_ULVI7]KF)]"7("7/*1,T(IM_VEC!]1\Q`\6)LXTO$JZ;KJHQ.C4D +M5?L*`&@)!5F,.GD((TL+N,T]!@A2EZ6$H!N`AP01RS!2(2)J7U\/4S!CC&XZ +MV:/F<X:01?SCE0S[7;R4<!LE;5^O6C#=Z&N5\Z3$P8_7%`^L[96CA4!S5#SD +MQXT)_:W8K?'`2=Y^A$NO4RS%,TL"?,YUX$2A+">O,Z^^+6LUQD?@\+T>;(3/ +MW%3.#V,*W7AA2C!M:9:D1G#EQ6XZ'UHQ.'1+II?@$ZS<+.>S@9'?KY9K54#X +M7:HH*BHE+%[)R``<\O7&XO'D"1O,Z#O%E>T+FGX#9*SA!%EJ$U2HV-QAO$M) +MV__:DM3^/G43`33V'.E7I*[!'PC=2[,H^]C%'E8^76XKW4@0-P,?W1\U>_J* +MMJ-4I@0/P[P`Y]2):)]"@[:>_I(A-",```"_B&?VJ?_4NIQTX)`Q```````` +M`````P````"R@1(_%#`'`.U!``!T97-T9&ERP`BR@1(_LX$2/YN==."0-@`` +M``````````,`````MX$2/Q0P#`#M00``=&5S=&5M<'1Y9&ER@`BW@1(_N8$2 +5/RRE>PY`%`!/(RA<`P`````````` +` +end diff --git a/contrib/libarchive/libarchive/test/test_read_format_tar.c b/contrib/libarchive/libarchive/test/test_read_format_tar.c index 5dea0f5..6a50c79 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_tar.c +++ b/contrib/libarchive/libarchive/test/test_read_format_tar.c @@ -70,8 +70,8 @@ static void verifyEmpty(void) assertA(0 == archive_read_support_format_all(a)); assertA(0 == archive_read_open_memory(a, archiveEmpty, 512)); assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_NONE); - assertEqualString(archive_compression_name(a), "none"); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_NONE); + assertEqualString(archive_filter_name(a, 0), "none"); failure("512 zero bytes should be recognized as a tar archive."); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR); @@ -437,7 +437,7 @@ static void verify(unsigned char *d, size_t s, assertA(0 == archive_read_support_format_all(a)); assertA(0 == archive_read_open_memory(a, buff, s + 1024)); assertA(0 == archive_read_next_header(a, &ae)); - assertEqualInt(archive_compression(a), compression); + assertEqualInt(archive_filter_code(a, 0), compression); assertEqualInt(archive_format(a), format); /* Verify the only entry. */ @@ -452,21 +452,21 @@ DEFINE_TEST(test_read_format_tar) { verifyEmpty(); verify(archive1, sizeof(archive1), verify1, - ARCHIVE_COMPRESSION_NONE, ARCHIVE_FORMAT_TAR_USTAR); + ARCHIVE_FILTER_NONE, ARCHIVE_FORMAT_TAR_USTAR); verify(archive2, sizeof(archive2), verify2, - ARCHIVE_COMPRESSION_NONE, ARCHIVE_FORMAT_TAR_USTAR); + ARCHIVE_FILTER_NONE, ARCHIVE_FORMAT_TAR_USTAR); verify(archive3, sizeof(archive3), verify3, - ARCHIVE_COMPRESSION_NONE, ARCHIVE_FORMAT_TAR_USTAR); + ARCHIVE_FILTER_NONE, ARCHIVE_FORMAT_TAR_USTAR); verify(archive4, sizeof(archive4), verify4, - ARCHIVE_COMPRESSION_NONE, ARCHIVE_FORMAT_TAR_USTAR); + ARCHIVE_FILTER_NONE, ARCHIVE_FORMAT_TAR_USTAR); verify(archive5, sizeof(archive5), verify5, - ARCHIVE_COMPRESSION_NONE, ARCHIVE_FORMAT_TAR_USTAR); + ARCHIVE_FILTER_NONE, ARCHIVE_FORMAT_TAR_USTAR); verify(archive6, sizeof(archive6), verify6, - ARCHIVE_COMPRESSION_NONE, ARCHIVE_FORMAT_TAR_USTAR); + ARCHIVE_FILTER_NONE, ARCHIVE_FORMAT_TAR_USTAR); verify(archiveK, sizeof(archiveK), verifyK, - ARCHIVE_COMPRESSION_NONE, ARCHIVE_FORMAT_TAR_GNUTAR); + ARCHIVE_FILTER_NONE, ARCHIVE_FORMAT_TAR_GNUTAR); verify(archivexL, sizeof(archivexL), verifyxL, - ARCHIVE_COMPRESSION_NONE, ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE); + ARCHIVE_FILTER_NONE, ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE); } 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 c76cfdc..187fe3c 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 @@ -54,7 +54,7 @@ DEFINE_TEST(test_read_format_tar_empty_filename) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify that the format detection worked. */ - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_NONE); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_NONE); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR); assertEqualInt(ARCHIVE_OK, archive_read_close(a)); diff --git a/contrib/libarchive/libarchive/test/test_read_format_tbz.c b/contrib/libarchive/libarchive/test/test_read_format_tbz.c index 0871a6a..7113318 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_tbz.c +++ b/contrib/libarchive/libarchive/test/test_read_format_tbz.c @@ -51,7 +51,7 @@ DEFINE_TEST(test_read_format_tbz) archive_read_open_memory(a, archive, sizeof(archive))); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); assertEqualInt(1, archive_file_count(a)); - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_BZIP2); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_BZIP2); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR); assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); assertEqualInt(ARCHIVE_OK, archive_read_free(a)); diff --git a/contrib/libarchive/libarchive/test/test_read_format_tgz.c b/contrib/libarchive/libarchive/test/test_read_format_tgz.c index f73ef30..bf19a47 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_tgz.c +++ b/contrib/libarchive/libarchive/test/test_read_format_tgz.c @@ -51,8 +51,8 @@ DEFINE_TEST(test_read_format_tgz) archive_read_open_memory(a, archive, sizeof(archive))); assertEqualInt(ARCHIVE_OK, archive_read_next_header(a, &ae)); assertEqualInt(1, archive_file_count(a)); - assertEqualInt(archive_compression(a), - ARCHIVE_COMPRESSION_GZIP); + assertEqualInt(archive_filter_code(a, 0), + ARCHIVE_FILTER_GZIP); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR); assertEqualInt(ARCHIVE_OK, archive_read_close(a)); assertEqualInt(ARCHIVE_OK,archive_read_free(a)); diff --git a/contrib/libarchive/libarchive/test/test_read_format_tlz.c b/contrib/libarchive/libarchive/test/test_read_format_tlz.c index 1809085..c726252 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_tlz.c +++ b/contrib/libarchive/libarchive/test/test_read_format_tlz.c @@ -54,7 +54,7 @@ DEFINE_TEST(test_read_format_tlz) archive_read_open_memory(a, archive, sizeof(archive))); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); assertEqualInt(1, archive_file_count(a)); - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_LZMA); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_LZMA); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR); assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); assertEqualInt(ARCHIVE_OK, archive_read_free(a)); diff --git a/contrib/libarchive/libarchive/test/test_read_format_txz.c b/contrib/libarchive/libarchive/test/test_read_format_txz.c index 0312c86..60e4359 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_txz.c +++ b/contrib/libarchive/libarchive/test/test_read_format_txz.c @@ -57,7 +57,7 @@ DEFINE_TEST(test_read_format_txz) archive_read_open_memory(a, archive, sizeof(archive))); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); assertEqualInt(1, archive_file_count(a)); - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_XZ); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_XZ); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR); assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); assertEqualInt(ARCHIVE_OK, archive_read_free(a)); diff --git a/contrib/libarchive/libarchive/test/test_read_format_tz.c b/contrib/libarchive/libarchive/test/test_read_format_tz.c index 50b35bd..3d1d8b2 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_tz.c +++ b/contrib/libarchive/libarchive/test/test_read_format_tz.c @@ -46,9 +46,9 @@ DEFINE_TEST(test_read_format_tz) archive_read_open_memory(a, archive, sizeof(archive))); assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); assertEqualInt(1, archive_file_count(a)); - failure("archive_compression_name(a)=\"%s\"", - archive_compression_name(a)); - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_COMPRESS); + failure("archive_filter_name(a, 0)=\"%s\"", + archive_filter_name(a, 0)); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS); failure("archive_format_name(a)=\"%s\"", archive_format_name(a)); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR); assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); diff --git a/contrib/libarchive/libarchive/test/test_read_format_xar.c b/contrib/libarchive/libarchive/test/test_read_format_xar.c index 4dc55c2..f2de1e0 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_xar.c +++ b/contrib/libarchive/libarchive/test/test_read_format_xar.c @@ -661,13 +661,13 @@ static void verify(unsigned char *d, size_t s, assertA(0 == archive_read_support_format_all(a)); assertA(0 == archive_read_open_memory(a, buff, s + 1024)); assertA(0 == archive_read_next_header(a, &ae)); - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_NONE); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_NONE); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_XAR); /* Verify the only entry. */ f1(a, ae); if (f2) { assertA(0 == archive_read_next_header(a, &ae)); - assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_NONE); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_NONE); assertEqualInt(archive_format(a), ARCHIVE_FORMAT_XAR); /* Verify the only entry. */ f2(a, ae); diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip.c b/contrib/libarchive/libarchive/test/test_read_format_zip.c index 2c2fc58..9e6a23e 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip.c +++ b/contrib/libarchive/libarchive/test/test_read_format_zip.c @@ -98,7 +98,7 @@ verify_basic(struct archive *a, int seek_checks) /* Verify the number of files read. */ failure("the archive file has three files"); assertEqualInt(3, archive_file_count(a)); - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); assertEqualInt(ARCHIVE_OK, archive_read_free(a)); @@ -165,7 +165,7 @@ verify_info_zip_ux(struct archive *a, int seek_checks) failure("the archive file has just one file"); assertEqualInt(1, archive_file_count(a)); - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); assertEqualInt(ARCHIVE_OK, archive_read_free(a)); 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 new file mode 100644 index 0000000..5394ceb --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored.c @@ -0,0 +1,66 @@ +/*- + * Copyright (c) 2012 Michihiro NAKAJIMA + * 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" +__FBSDID("$FreeBSD$"); + +/* + * Read a zip file that has a zip comment in the end of the central + * directory record. + */ +static void +verify(const char *refname) +{ + char *p; + size_t s; + struct archive *a; + struct archive_entry *ae; + + extract_reference_file(refname); + p = slurpfile(&s, refname); + + /* Symlinks can only be extracted with the seeking reader. */ + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip(a)); + assertEqualIntA(a, ARCHIVE_OK, read_open_memory_seek(a, p, s, 1)); + + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("file0", archive_entry_pathname(ae)); + assertEqualInt(AE_IFREG | 0644, archive_entry_mode(ae)); + + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("build.sh", archive_entry_pathname(ae)); + assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae)); + assertEqualInt(23, archive_entry_size(ae)); + + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_free(a)); +} + +DEFINE_TEST(test_read_format_zip_comment_stored) +{ + verify("test_read_format_zip_comment_stored_1.zip"); + verify("test_read_format_zip_comment_stored_2.zip"); +} diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored_1.zip.uu b/contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored_1.zip.uu new file mode 100644 index 0000000..9b6449e --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored_1.zip.uu @@ -0,0 +1,12 @@ +begin 644 test_read_format_zip_comment_stored_1.zip +M4$L#!`H``````.&`9D$````````````````%`!P`9FEL93!55`D``Q:WF%`6 +MMYA0=7@+``$$]0$```04````4$L#!`H``````+Q[9D'J6.I]%P```!<````( +M`!P`8G5I;&0N<VA55`D``V.NF%!SMIA0=7@+``$$]0$```04````(R$O8FEN +M+W-H"F5C:&\@(G1E<W0N(@I02P$"'@,*``````#A@&9!```````````````` +M!0`8````````````I($`````9FEL93!55`4``Q:WF%!U>`L``03U`0``!!0` +M``!02P$"'@,*``````"\>V9!ZECJ?1<````7````"``8```````!````[8$_ +M````8G5I;&0N<VA55`4``V.NF%!U>`L``03U`0``!!0```!02P4&``````(` +M`@"9````F````"0`5&AI<R!I<R!A('-A;7!L92!F:6QE(&9O<B!I<W-U92`R +#-S$N +` +end diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored_2.zip.uu b/contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored_2.zip.uu new file mode 100644 index 0000000..4768153 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored_2.zip.uu @@ -0,0 +1,548 @@ +begin 644 test_read_format_zip_comment_stored_2.zip +M4$L#!!0````(`!*<9T$V32@KLU<``&H^`0`%`!P`9FEL93!55`D``\0XFE#& +M.)I0=7@+``$$]0$```04````O#MI=]LXDI^C7X&UTQ,I*\N..Y,^LLZT(LL. +MMW6X)3E)CYX?0Y&0Q#6O(4C+2D_^^U85P%.0[>ZW;_.Z31*H"X5"'0#D!!Z[ +MBD.;"\&2M2O8TO4XV[C)FEEI$MIAL&1)R*(X=%*;,XMAB[M*8\Z$';M1TFDT +M'*!QX<8B:3.'+]T`P#R/A8"XYNR.Q\(-`Q:D_@)>61JQ91P&@(=H1L`B*TY< +M._6LN"TE`.1P(RK(OF7'(<JQX"P5W&%NP+H]TQ@9,\E^MN:"@^P@!$LVX0Y7 +M"^1-(\=*`!?'Y5O`$QAM&0!QRUZSF'O<$KS3\%^;<A3-^<!XWYWT/A@?^^;' +M_F1JC$?F]*8]_[YSTCD].;%N6H\`CQ#XY.0$@`&6!%T()[%B9@4.OMJ1F\OJ +M!BN6Q)9]*YCG+JS87KMWO,S@_?1\UIV4)=')UVRU:DB]*V/\%*P&:/1JTI_T +M?VN>=M[\'1H.&X=L%&Z8`)$3.2,',;>\`XT5'!(^SDAS7LB_CUN[!'/DN,). +MA?AE%88KCZ_B,(U$QPY]T-DA&UJWP`0Y(7L1VXX;(_O$<@/!#@HR!PQZN)V$ +M\18EZ8U'%\:E.9WTSHU)122D>@W68J7WKN=:\1;(+^0P!-JF+\T0&G."K&F# +M=01DO7$8)JT2A^[U9Y-8+%+7<XZS52.%?ZWT(TH(PVYO,MZ/DH()+T-<`RS' +MD0L`S'@1WO%.I]/H#DG5P'PV'G9_[3=ITMTE3'MS#IU38]`?S<S)]:`/,\[J +M3<WYEHN;%AKE(1NXBR0,O1>@33=(>+RT['SEP4Q;`:XZF(XHQ=6C%,1+1IH! +M=TK4V`XIMDC]2.!ZLX(MZUX9S%Y;P8JWF0@!VHZYSP-0U"';K'G``:O,PG># +M,,Y).2$7H`1E5T-C-)Z</6\V65.W")LM=LQ>P3)LL>_HR5HM*6A&_+3S`SL[ +M0W8UT7]B9^R4_2?[H0[_HQ[^U8E"^+&.\-,>A%=Z!'`Q>Q!.ZX#W^P"!ZGVN +M(V,TZT\NNKW^V1=NKT,&VB*(YW]4M/BMU?I291#S.Y=T#DL"9Q!,0$VA"-,8 +M&,E9!"$**3*<G/ND_]'`R:!)VC-'>^9&3OP.\V*@EN.X"0I8EL!:\9PY\)N- +MQX.,V=GS'9W\_+PN:-%":D'#GD+$N-6&-)`E5!ZQL\:%?MZ_,$9]??R838S1 +MY4W[0.\7#]J-9_./%?H82"O>*V=@7H]^NQ[/^N?ZX',]?-^?Z#F-GL")6>!O +MF("P!`D!JGO%XS)W36S)QK;3L9>=BH$[="N!KD2VTOX058A8TKO-,&JL.20D +M=U;L6@N/"[;F$$Y\=+0+%58LG\:+[R#(]/K]=`8FF6,`G04'C]P&*TPD1H4D +M"X``J"N"9`:<&*05X#:#L$X?R."7_UHE-`J+G#ICG];;?S#6%;=YYM5IZ%5\ +MIE%P0ZNULUV=-?9:Y9G>)G4(TKAT"&!:M%H@I"9N`B&#ADQCU"\<6E&@QS"5 +MR:>0JH:,@OW.19L9^.U"/)!AV96SM`3G`SEJXH)B-SS+.S=K*Z%<#])9F`<7 +M,SRE=)H"L?47H2<R95=UG4_\'L?1*B#TTU(%V)V,4O_>.7@81JI=IFHJF_C0 +M[YY#;W.>.:";<G)R85"TQR0*=:OKDSE(=+N2!(X+#]");+F&>FL.KF\)?G@= +M8H*]C3C1Z8[&(Z/7'9@?QE.5B/<@3W`]BQPR)N[@/C:4[?:VJPUD[0'G#N16 +M$;=A<E@F%XM37&60!9@`Y$#Z;Y(IG`4A-=J$7+39D*FS@^<HC1F*`S"D!F,O +MB=E+UF*[="#=86_?(I`D]5("5>@J&"XL&_,KT-*Y,0.M=P?-N3'JF9^,T?GX +MTU3J#9.JA(,RGN\P@XA.V9662._W2Z"CHU&6)2=!.CTGXT:[5]8=\W^ED)HZ +M-"6DRZ5KLPC4#@V^8$W>6778T;EY-9X:G\WI^'K2Z[<93^Q6XVK0G5V,)\/> +MU=7%H'LY/7M,F3L(0->\GE)DO/QD=D=3`VSWW!@7RLLLN(Y:&),@T:&J7,66 +M+SJR]!A?FKT>:DV]FCUSC#W(;/K[=-8?FOW/L_X(E\(4.[(%"AK]_M0\'PQR +M.JJ'K/1#O_>KB5_-.:ZQ*RC*1`))^8VJ<,816JN4B!8#5F(RA'0(`/1OI5Y" +MKB>4(*I?Q@,J6%G$PP@L&2#`U<6QZW":,"0!4G0GEV9_U'T_@/BFPA/&KNX4 +M%O#@2BW^YOSHB`<84(XR&#:7#8IM'MQ8TY%281+_[!$R9U#`0?:"U&"0D#/) +M[SK-)U%:@P$Z!25G"T%,2VJ7$M1YM;&IEEUL4DXQ>E-Q5XM"66REC^P6^F$, +M[I+1LLHAY'`/8%4=!.'!6XP'0>/9,]F<T0:W\HQ[@N]T`-'&LZ7;>$925EK! +MXI4"_BT5H^5./3O<P2B&4_#"76-P/0&KF!(8)&#!+1I@,=-JM8/7S"!*R>`> +MP7:'!J+*QM;C\-G8@K`.C)2TM%^B[=1&=!V(-(K"&,O&.\M+.2VQNHFW")\< +MQX['?']M#,Y-&4S1&C+-EF4ZD,Z2:1SN=-:=&3T-?F4()0(/^@-,5'<<`B9Y +M9:>`0%F6"-Y:5<_*(S@\T+L#RH$?\P<22.L0:!_IR1X!H4LN0>,,5$[^!"JY +M.]`Y@BRU?\@39*/2N0*)K_$%Q'N?,\#./^\-&&.%51#]PB'L]N$*8>I?907F +MO4_R#<X>YP!4G^0>:-[_A'^H2+?K#HINS7!W'4*N)8WB_K)+R$SO<9^`&;C6 +M*4@#>()7J%.HCJ/B%]B4)[C[YZA<#/-8&,."@_Q8'MM>2GX"]R;6W'*@O)&6 +M27E5-:?Z=YZ%LE:#9CJK?%4F`W]',Q#LY/[D[R<G(*#,`-'1O)!M+TAOGV3: +MR4YQXZ1[98C.38T@4/J(FP!_E50^"Y6\30Y05FN4N\DB!/<T^Z-9J0&R-O-3 +MUY@5>5A>KEBV1Z6&[776S$J2^/@>_\*''49;)(VO6&KD)4V5`'C4(`08?I^< +M+L4Q/LRE@(:E#14X/%=Q1*BR5`%L2:$YWZPY++.803)Y:AKCGGG9GU%^B@X] +M)3<$/@>7-DAIVG?FVKKCIL-MS]Q!R0"IK!I>05IO&A?]P11TCPEJ=W1)">FD +M.VS.?_GNYU^DI7#V7V(KCMW01DG?-2H]]0&]4SP>^3>':IK=@\WNRMC24L!@ +M\Q&*U&E_UGS*0)G:-/Z_H16@9Z<=:(5J7/P)*0JM[VR%?>A"P?QI//D58HV> +MP*L]"BVMC5<,7/4V3!G*PBRV"6-RNSK=*@NK6B=,!MHNVJ.+5NI9P<H-EO3J +M^FXB]E@U^/?T_GCI<M^*")8^1?[J6RO7SK\4"SVET+9H$456LD8"4>CALH@V +M3@>/NU;\'I["7046-HO(V@1[2(G$L>(5`B7@Y!+Y`HN77F+0RSX\L'&YP/'- +M!M\IU#L8MUSM>_'4VB!H_];A=]E[F*($>_$B"RI*!:M&C*^">]Q.L@]@GHN" +M'W?+?5I$"-QD4L!IY5W@!I[ZVD]"H:2!"UK#%]6PL2%>T_,!+Z=V%JCWD-FT +M$9.WR0-/2AI82"Y-A9XL)V!NTM$3M>-MA.J`5Z5I*(OIO\9\?D@'24RN)+7K +M\0'8YRXJE^!=XY`'CKMLW-S4BWNPC]B*714A,.']9,P^-.=?H8,6X&Y:B,?. +M89H<21!8CV'P(E$9H<H;B/3JJQO!H.,P7:T9`>/Q99Y<W3]'0B9V'+#_@,SJ +MODBM*#K6U/&53#D+G;)S8+QO?FW#BO6LA+<:D$551['X>OKX.#*@_2-9P$A. +M\Z$H>-U@9->3AK/8-QZ@T7[_SU.@=<[Q/`]R1F$$;J(9GO?5!T.R'QE?#K5_ +M@`B2CR^#UPU0]3UIA`I6-T;5U59/#".AHYM`UPZ#NT?&IV"RT27Q%F,#IN#, +M6N'Y,R1V!*(;$/7HAC,T#<A'/VI'1DC%6H25F.<+RN.^HS&7F%D^QLQE&M@9 +M2^0(0;)@J=4AA@?T0((G2I&,`2V!P1<T.3T[>(Z/`^I0#7_@\QNC)PWBVT&5 +M_,7UJ)?''E.15\0S&F4F"K\\'#L?3I6*4F5M8(P=,F/)JJ#-5E::NP'Z(=)+ +M&\\)*)S#'$*<IT(I4P!3Q"JVI#K;5>)R,&!/]$>[<IZP;!Y:,_=?*RMF[W)Y +M\EK9MU!HE4`]''.8$[E28JTS"$\?'1*"/.0&PL)C@]X)7C^N\/2)XPJ/X7\Z +MND$]T=>K>_U0P],V]=(@I>,#&USJ_$+`DT3E__N'FP%5!TRWIBBPAL7@\;K$ +M2(*W6E568<0#(;Q'>.50^[7KPPQR.F6YMR`'L,2:3@NDMC-\X*[?Z8?<3M:B +M-`!3P4,57U1_%;'O?>\Q<Y`@#U@XB%FR!@*O:X??0^+Z"!\%\S1&$EAG=,A? +M;W17W=D'*N":\\_#P:DZ.D..B',DC\QNVO#]_`^$_5;WSB4LQ:'LO?(S%7"+ +MV?LW]N7Y'R6T;^SHR(8T9"6^Z'SQ+C`H-`.M+`.4N`U_,.1?H2N+V_,D3L&, +M:[LT0U?@L3]#!)7&;5LX+MH->P+=5D,Y2%U]@[-]#/_'E*IV,@/`IDWL)EP6 +M!8"^$Q1D<FM*>#,G8:YUH:$^QS3[FDG6"4FP>5"L#):ZVJ!Q4PZU!S)@@K@G +M&(#RL-!ZS'OF8/LMF0#*BT9B:'VHZM2,=I]."3Y7Y![]8'!O`B2ZT#9KRTV/ +M7#-$HJVZ6S<EE1RRV?A\_#.[=._D;8`4%">+ED@>%"^AB7;/&/AF6-50*>$G +MU%4)]P&_=";-V`RO`6Q<S\M._:E.*4[+V6;MVFL)85O`"V]OT$Z_F1V1@M6! +MCX8N5B18G4[G'6FZ=KE-E51X'V'$N8.(&4YV?-VQ?$:%^4YZF(_@R,OH04JB +MC@;PMNEA18<*IJV>IKHP42^ML%[$8KJ-Y7=J)VF,%R70_]MT_`[:Q63%LF$U +MH2IM68/1R?]T!K3@8_;[5=^\-L[-&5/G!G2ZB5<`#]I*A7C=(K##&&]!$N.A +M&UQ^`GQD-9Q^['7D14IFIR()??<K[NIF=P$]J\2CD7$<CL_[9EF$\<5%700O +M#%:Y#'*W!.8*NUY?OE=W1,(`:/AAKF(!TY=1R8DPHL1P)F`22Y4P<FZ&RZ69 +M@!7GD+(`)ZFFQC_[YJR&X#H$GP:X:8(;[3E."2@%!49)7(6$MOI-BL0W5WX" +M,J!!R&F$MH+8L(]7/6CS1?5U<I1V@=`QS;P9XA!4[XW"I.5&P[M&G??2Q(T+ +MW[HO\99[(OOYJSV3''6'66GSY5VM6>W9Z`1Q0P%F4Y/C[C%![D@2B:L5)-_4 +MV>6Y<.-D3?>&JDP?YMB!E"G'W+D5XZ[61[`&0R\E?X8P@(377?\R#[S6T4GN +MS$!@P?PXHO]7D?XT$S.X:4'5U34^/XZ0^E)?`#^+TS>OG\HB)8$`ZT,:.]7I +M@VKLEI'19.'Q3^O8NR7#:54(0P=E635R#.]RL25U/4%#!"?MPRCM(*-7@$6# +M7F&#-P%%"O87Q="ZS(8AV'?_D];1RJZ&_CR([WEI'FR+@0%9<MC8G>M,7FWW +MMC6G"`,JB;K+7H[L$X5PUOOIIR.1;(OKH128!!V0VYXEK^S[E'-@2,4J.K^D +M1%>X,=.Q*(O;PC<382=WP,9H-NQ^+@6.ZYT6:'CSN@91:8#O[T]K`)4&^'[U +MI@:PT_`C?!=*.N_W!J`DB@\@3IM)IN578]1FUZ5FQ1;>*T<%2`D(993PE/M9 +M<:#1I*0&8<QIP>Q5>_\A!>K8(;U;65+U)4=](=,#0#K)D!Q,-#OR>!W/U_%O +MX42S0XIW&IG[%Z@<K<"R2PK:95$(A00>ZM-97>G`UPW@W77DCXW0'&"=`4P8 +MBWWRJ-.^=V4OI:0Q!M/^;WIIJ.O_21J*_G/:U#>Q;GU6G(WMGE)!+3";F%#R +M24'G-PJOI9UCNK]*:0X6]_2)*XU]45@O8!J=P).7BJ0T./'CBT*>;"!R-M7Q +M[,P8]K6[]EN&&W!T#::XFW?9@U4QZ68'Z24ZP^Y_CR?XC16">3'M]W\=YY_@ +M*7O#J_QS@,?O^5?M8]*?3,83<U)NNB`ILX:/5U`\S2[RLQ"0^6?X@%*:"K$/ +M5NP,(`'O-@=7/4!NL^(Y[?>N)\;L=[,[@PKL_?6L/\4(,`N9=1?"]`<<?P7G +M)EME%-F1?G'<DMVV!#\&(!O@55YQ^,N5,+ZUH$(+'$&.&KWD"R+^4AZSOU#A +M0B,+@!3&-)V=][J#@2RYYK6QW;3QLB^DOCBW[&6;5;\DO[)IJEU9>RT#G+T. +M-P'\Q5\R,9OB;8P!8>EHD);V&G]QM<R0X<4/'7P@$3IK9TL'-XT(#!2@(T*1 +ME/YFSZ60SSM\`:4$-@Q1ATK'97@=BU[R)V[E[`"O>,)3&#T\(_E8Q2M(VV/Y +M"JFK&>O1H@UU$N8FS5!`N`7>X>%L)?,2';:7J<:3JO&D:J@.I*"G-.R1$CPI +MOH:.OXB3<&,S2*]]O"T/3[EYO@-XBZKV;Y?N,H1'`#S]6_0.D08X\,SL[)FV +M`D&$R`7?@6>CZ!+=>Y..?B.&<9B$SEZT*I8'J0PDX\$=/N3N.!XD6^0Q5*60 +MY>DZ$@F4MYAPQ4X:X8.<+;X$=K0U$366$%N?!$*-K7P-I>2KP&LY@9*&5,N4 +MP<!`E<7<[;'*C0T*]Q=L8PO;C^@1;?'A\0!/9:D/9H$Z\1EM-51,6D$0[`4S +MEX+S6_?-:QT8F).)D%]#\.QF;A@2T;^5!D:HA^!5$E`RK%2Z)G3TJO-#&W^> +M$D+N)N061.CA#1Q5;(O=I2XOD^.YAXGG__EO82`IP\1,X._K+/4#E@`X0;:` +MTPZ&!98J7=A;]&!A0+^@L&R;1_*7+W2G_`@W&CQ$+0K^W2LP#;9[":8413$' +MI;KP1G^G9'YN3-A+@'J;)>02@_$V>QF_A7B&8#%/TCAHYM(WX6^;_0U@_A:W +M6F]OY(V5>FHP@<@%Y,U)^U7[@7L?-%C:50$7C[E#S@;(-DBI%S'G4"*\$*R\ +MU/*DW`JR72X\%:"[^EN6W4""/QC)TIB&I582!`W!_#!(UL>.M<6@`X]C:H`/ +MF':\<,&8D3#?NJ6-?B02IDF$=]'![^!A`VZD)8G+8_JU:#5C.C>'Y^9X<HX7 +MPQH[*6?>J4U%M&,L$41ETR6"0U==(,#I-T878[Q!4*27^768X@9!K:A6UN'@ +MA@,NR*7+/0<W\3W7=A.RRN9,_2+(@JH>U(%7\<!2+"C'DRQ`)VLK:)/D$.S^ +ME;H)_=`+Y:;KII9HJQ\(03V$?G'EW@&SQ5;^;"G[";QON?2+8]P(W*D"FQ7K +MS"6F?8E<#?)N7$4)N?WO4T'_'MP:7C/L)DGL+M($+WE*I=<O$=/E.<KQ]M^V +M+6#F?7F'^`$&^77BGV6FU:IO-:O;M$1T9]^X2$2+"W^E.WXW+1T$;MQDEP#I +MDI!5@Z0M4NAO@[\GP'*G\GSJ9A&Y6TKHLP;/%;+EY@$L@5@.JWSN05FNE!!L +MB:35:R89RWIUJ%Z.6F!ZI5?Q`"ZRY9;DB4]!G]2XCQ6WV/]6]ZW+;23)>K_) +MIVASQA:Y08`$*>H>&X9X$V9X"X*4-+-Q3#6`)MA+`(V#!B117K^4?_@%SHLY +MO\RLZNI&-U"8V?4)1\Q(`E"5=<O*>V9IZX'Y.YUKKXKM\><;B*1W%\WSX_95 +M\_`8V3<<.V_^SQO:-`*M:/&S\5UL?Q,G0(;7S<,SB\<_:8ZF\YUZ[:W!/`W@ +M&"),M69URX<:I/-.POOI-J>-L]D_1'#N5TX$O8^[G`*(Q,P)B50]5H*_<E22 +MH05,.3B['H8+FT.%%$%2`#D[?6BTKU38`O,^VD`"/$I&->$187>0*4W9="R) +MUIQ^*!1=4;=(:P`/8*HE(+\SM0I:I$?,!HA/>(Q*\@5HI"47W;0PU]S=6\]K +M32#*G$$+8OS$6Y:[JS)5_&FO8Z&58BE:=%G)N2.*2.HGOHA'?#(#<RFS?]Z1 +MM&H_"=`<5+%DH<4XFD"(OIN"&*]EU!B!R=R*"/):!4:O*55>R_6BO9SOPQO@ +M]-`)!8+:&V8#,)O-K0V+)XRLR1"X[116$'QBM*XKE,W6]%DJWK$IZ:=)YRNG +MRR8L>Q&S>ROA?]]B("S^%4$<20@^(I84")]P/F.0Y@-?+[)=Z,Z%@6Y7?2L( +MSA!@*K((>^ID2`4%E6C;2#[(P"<1ELZ$A(1A.'D,<&XI$AKH<D##`#TEB1Q2 +MXH;9%S.93H)2,UA<+YD!>46O9Q?9-Y:W<('YWHGD*19'!Z7K92%([I8;=#&? +M[0=QU3D?J.5_%J*<A]W+-IMWB`)(T"SO0<Q64EZZ"'V:4B0J`E(0GA0";QSH +MBY)8IMSYO1'YS_Q6:C,S/XKT=S-1&YDA@!SC(ACJ'$&5G2Q;LN4"32W7$`Y, +MD*J4_:!I8-?.B-(=(SM64E\O+F^.WP2'$E.C=),3]R<SXA%A*N&M-/_;B\V_ +M'5[_=G5S*4L%IW+]W3_?0Z6Y^[G!5.TI2AT'-Z+1>O,Q;_*U$Z)A_KE1C-TP +M_PQJK3K]_[-6J;'_<G*J<R$<^"OX>=B3OY_+;]-D1GQC@Q=[)]%$=\->_<%& +M="!4@]?(5-^-$3#IXKH1/S?N?M[+@AC.6A>_SB4G2&[PYM_6?U)GNH%!G8TV +M=W,,IW'A=W<,^Z-)^+7)Z:7K6/]YLQMRODUQ=W:,XUO:U[L;8$ZCZ3KD[TTD +M.(23?G=;35U_H0]?M];_)RW0]/MYG]3Q[P']_S;_+9C)YG^C[[<*/TA5*/Z) +MM$I`W.9!BNUH?>%`FUW<GIWQ[Z)[!KMOU__7NLV,^)LYI.OC]NW9C=;:4077 +MH*&3048X^K>_!;41;<CSC>#?_BT7W6AX2/WGYV*F3(-:9'SCQH<"LR.R[=O) +M@&2;-&CL$H7A;G<&N[2H%L`PE9YVD75#A(34L)$FE$DL/]U:8BE_M>/S_>'9 +M;7+E&`OR'\'/I]?'5X!)/.T?_PCD>\+K`D9K,)"BH1*;,CP2FA/\W`B^QF$I +MI@4V?:RN6UJUZ9)?XMZV[)K/7>#\59>?B4^47T):C)K12^@.XN57H3TKWF=` +M7_%"NSEEF@9F?Y/TL.*WE22@-/[?_5*S"O[J<VG7-H'.6_CMK?/AZ]OU]36] +M5YL_[VW]J:NU"-T^P4^W&-^HR1]`.,6/Q645UM>*6+-Y?G2P'1PVST[OZ%]E +M#=H?F@UM@7]6--D[>)$UNJ-/%>WV7SUWVM&GBG8'C3VG'7V2Y$Q:2Z&#+(#N +MU^$VD8+B"NRO4LFAM,GU^5'CQ:Z!,1GVZ%.QC6R"M$@?PN(N9+^;<2H:\399 +M,//;E&NSY]-HWZ.1,ZGRAGPJ=EKSIY)KL^?3:-^CD3.M\H:,!'9:@@25;?9\ +M&NU[-'*F9?%.`I*+(8\2D%T:OCB/A!?'-S=GQXR!VT%M('VWYAL;=#3M!2$7 +M=A'L,QV`>LN:,V8X'?CSXBY\:DX7_KRX"^^HTX4_9UWRT;9N&+CGEEY>'5^T +MVV=V3X5E+MA3VR';U,H^LJFVA]G51>UY%]T>NJV+^O`VNGUT7Q?UX7UT^^C& +MFCZB\UQ-D@['E`Y[0?/DACCN)>TN=8'HJZ*NFL%0O#24C/+,Z0"KE?:`-<RQ +M&$VC^GHIE3T_LF<Q[&VM5Y%9-,M.8*ZE):9H9_:]K)6A;]I.=[NLI;G;VE+W +M"RW72[2B#9:S+F]OKFYOUG?^8JOLD2I\&HVB26@M)_:7F*WWMD`IM?S+3JYK +M/*KJC>9A%]UA^)?`7^D/`+2U97("?0VA\M"1%'3$GT@>B>XKVWN!/3]:$2YU +M\`(LM+4`O$+)RW=I+(,N=&:5>6N/Y1/7J[8*;--E.?"\N+<4,)HK4+E197#E +MEY40Q.VR`GQ_3,GU\1UAM4/-=_(=8\73+?3244"SRL;`]RN=0];!$[+_"3@] +M/&&O<ET+?1K+!UCM<-TN/M-?\5AS?7S@KW!O;?L,+O&J"LCTRZH(8[NL`G_O +M#PRPM]((^W]@A/U51E@)];,^*XRPX@7(]VKX#;/R-7`Z^2YE]<O@]O(=9;4K +M87IDT$GTK8!.OZQZ*6R75>"O<BFR/JN,L,JER/JL,,***)OOU?`;9F64=3KY +M+F5UE'5[^8ZR&LJ:'AETTB0JH-,OJZ*L[;(*_%50-NNSR@BKH&S69X415J+C +M69\51ECQ4N1[-?R&6?E2.)U\E[+ZI7![^8ZRVJ4P/11Z9;EU=\O+2UD'&^:1 +MDXUJ4"A.FH<T7_.Z"&A1]LJ78AC(,QLID<,2ZZ<^O#YNWAS?'5_<7/^FN+$4 +MOG'U%V!GVVJAGQ[?L(O%;*<WZ+O1>-G,#>R[BZM5)H[H!;^)7QU?GZ\T<0V4 +M\)DX8*\P<;A>EX'%8R8>\-ZY50/_ZM8AK-H+I(4C$*-B+RHS:W+!0\_*)XU] +M:--^^,S\2Q:]M&PO`/+D:#68'B<G8%<X-Q-=Y06X1:13X'J&C%2<%T)/?/#V +MG1M.NAP3$-+XF?^LPH0\=*VA-0\XM_KWOQ-Z$42/#=4<D45[>?A!@DB\H"7? +M1HMA77ZZ\(.$+*#%H*XO+[TN9U:X<\F^'5Y>_0:,\=PZR9]9.$?DB-U=>TU2 +MBNTMFR&G?_I-KY!JL9@^:_U_U,[BXC(^V%C,ZBR/T;4IGG!4%+(\Y];'B:7E +M<(+=E2=DDUWGTTPQF45SL%T]MKIBV-;%'QZVY7-'YI)J*W-JEXUJ>OZ10?_$ +MJ']B6).<1==O]7%M.N<?&#A+FEY]X*SO'QSXCR+S[2K8G*5_N*1(QHRGMM#T +MEZ/6]3,.<9T;4C-*?(@49W<NHJ`$S$OF>-<;W'='2^GGT=G)X<6BJ?$V"M@O +M7Z60P3,NF]]+]-N[7C*>T/X\*Z&B1Y=7UQ<W%;1S28K2_%RSGV2Z?RA5?`ZL +MI,+_<T%R/KO/*9D$]<6G1-?SXM(+@=YI2:REDM;Q9^)JGD+67*'KY<!O]D[: +M4M29_O8:Y4LQ(6@Q?S8\\=0(M:L,85.,_,8X:[7_P""E2D3%"*I*K`S>>PGM +M5;9)4LD74:&3PP_(^?0@:/<>`O7)"A*UI+4O@79^Z:66W2\5ST^\Y7-.L%\, +MZN+FS.<&:UG\)22!P?GQ%)OUOQA53HY@].)47A\<X7RU)1#I<AXWO<&QDKAP +M"PD>*X=>JY84NB4SQ-7VG:)-_%LX1T#TGV0R*1JX\M`NKW\MA\,9[$FP"2D$ +M=5)GP[`S>`KNI]%@D&P%7)HO%1DE5=FI8,.5`;@&B-=44X\#;_L?>.ISX.U5 +M#AR%#!9#(UKH#6D.UMQ:"5JS2K8I`7B_F`8"W(D?"=2*#4O!??2$9ZIZ+`1X +M<WU[<=B\.?:"J*4=ENS@+:P!%VV_+90:$0NGR/#\EFQJD_C,L.UYRAX4T9\@ +M:H641>L%L-N6%Z?+"JPL`7AZ?=HZ\E($OV256I;"O&B>>\,<+UWTE?>:M5C, +M,GB?5IJ?5)U9"O-VA7VTY6N60*4+_?XW6($\X2XEL*LP5%-99R&\<W\#'S_[ +MLT3*.;V^*LHX13A<,WYS*\O55;T<N5;I/$2NAN\S/:WPOV2"#*Y*#*MT6IC* +M?27^"E,]SVN*]NV:9;.\N-'<6"^PI0II@9*U+CV51Z>"R.))9O5'?+!QX*%7 +MG*V@5PR6ZA5GWGK%8*E><>:M5PP\N,J9/UL95%"%$HA"&#Q=D\]L0;K-VH`^ +M;Y5"91^?'TB>H@L3542J@/I.M/-C+P>4/F^5'$[K_?O?]_R<,OS21`ZF>7VB +M8JZ''YK7)-5ZJOKC,`^<OZD"S28=/RSX,0QS</%%%=BSW\\]<4N><ID#3-\M +M@GUT?.@)/MDKP$[VJ@%?[GE!Y6KH.;#\317<Z^/3X\]>@%%M/P<77U2!Q<L` +M?M1TKBS_,JK*P._H_VNI`>G%`N9+_7L/\^FZ=>,YS)<?N0WZ47X7?_>;L)9! +M73;-\]:-'QO\4A)\4H!U4:&;%Z?FOA2WE+$2V-O/=R>MX_/FE2^+M8_/^4+W +MM,F^R[UEYPG\O'G:.EP)?J404PK?2#)>-,/#!K2""<C+`K22`6C@-<-5IE@U +MQS*8WBS^7?X5JF6W[/*P>::,SO.NY5YN6KB[@(U@!V&C/O=/WU?TF;1G*(%3 +M+73I7!<I1)4*@JWCC8K=)5K"V>7%J?Q!HKW7C#VL=V?^UKM!A?6N!**_&#E8 +M9L`[JS;@F<YF&SNSOI;EF0;IK-N-HEZ*:HXCK1M(;>"J_1%-$I*J1OWI@_CU +MN(9L..G/4.RF?$DTA[OC\ZN;WS1R\N[][:G?^I:;L,Z\35CO[-MZR\FF"%F^ +M))G?(?,"Z@W1OOGE`?82_S<^KP9;7A?SA8ZB-YX,1&O]+CJS\_?7-Y>?#GUN +MH58,7@CM^/S\\J./@><=04LF3TL)&T&\O/[-C[!)*>,E\_.CNU^X^O%"4+]Z +M^A"E@O)B4">M$R\W!I=A7@SJPD_+UU+.BV$A&MXGD/,=_'-^(28E>`VOG2=" +M.T$7BV9^<6;M,3Y[(06K%S,#>!?]]--W^A+R$L1&6)ZG+(]*VHN6>]6Z\K*I +MHACW0CB79UX^7GGP>-GZ")CG\ISRX(NGUVY]OFM?-3]Y11>_XR>HE\WRT]'2 +M22ZJSSP'T%9\]EFY*8&^:-4`Z*FL?<E*JB]&9@/3$Z'U%>\E6\G&!;\3E^KN +MBU;=/CX[/O0BU%*4?3&LFV,OJ_D76V=^"3B1MKT@FGKU"R&V3IN'>.["!ZO- +M4^I+3H-@7C3]+N`[?91]&41</,_S7>HP]O<7>[B+%WJ+O_P_$JW_L&3]SKQ[ +MOVS_;XY0G]?O1*>]>"[HLQ1DRS.V,WL9>BE([VP%>:%A\<E>'W[P(J7RS,,2 +M6$>W7FDI)AQY"30..UX%WF)]>Z5`9L"\AT*V!"(_:^-WO*C*N%QL$=SV],4) +M4$^8WC@CSW<LYG`$\N+PBJZBEUBI+X$LV<MJ5/QBWRM\)N\$T+\U@?%+[F'# +M4OF70-\>WBA)O#OA1`D$=Y?/_(MYD7#A4%^7C_61!VM=(FZ_:BSWJ<"%XY58 +M>9RAZ(^[]ZWKFP_5V/BEZE7"?]:P[:OCP[N;CW<7[>,*;?=+]FC?GQWT[%?> +MU<IAU/G[IP99X!S^4O92XY\<[MQ_$_7]1H\!J['3#GEWL0`YLV<<_TF#W;8K +M_7E?"B]9_E-&M)M9/:8\;OFG1[OE!5:-8U]WK1QG.JS&D9MS_'=Z?G-Y<E*! +M%LX#LDN'*%\(C7#G#.-%U^5EIX5T_;=S7U=85F9\"3LS9=E]@7:IMP?G);"' +M1\<GOKR7`'M;933QI[CQ-**W;>:=>4MEJ1T38(]]S:_Y9SZ\0&O2@#_\..EZ +MQ*P#=NORT#-N75XD?NQ%I5%8)=,^__7H^.,*DS:O'2^?]/GEK;>03X#];7G5 +M6.-OTLL]Z+Q\+5?-Z^:Y_UJ\+%4,U]=:)>\^L_W""[`8,E8`+0]@^^&,BHS^ +M&YT]6.TQ<Y415YJZ-V1_L/J\^'*PS,#]P7K%'CH/<_@"GE5-N.0`;W7.ON<W +MFZ90-+RF?7O3AB;A/_$*Q"B9]D<?I&.8W\*8<4(?&=$71AJ.+;5\\I^:K150 +MI+)`PQQ<4YW!0].4YR`7R0XXO--SGTEZX;`W_G[A!RD7SNSW2C=7I==^MB"N +M]W:5P-[9*$ZGRTWOMQ>M]LURZSLOV+R]N6C-MQ>+#+W5RYY[?;QL_1>PIQX? +M9:$+?WJ4BMB(^9%\@R1FR\Q!MYZVH"_V:=/%-A9-@/&,VEP>/N`?/5!)8N?A +M^>'7UV6I;!^K<]D*D$R6^0)8\KBTST+Y7>VE"_V$>**5P_CMJ]X5\+R03A^W +M7;3<3X?7-Y?G[_V@X8G<Q<#:AUXNZ2_RSNXR6%=>%;WDL=XEL,Z.O4+BY<7? +MQ;`\]XO0PZO,S"?_.C/N\RK+)(%/K0LN"N<IOV2ON7@`/KK\Y"O7$MQ*!6X> +ML-'@?$B6OLJ\\*SDW7FO@Y>WG9="6XJ2(6<'X0TE+E%`*T(FE)@#2]9,A`O6 +M]=*V2S?7JT"5?WVJ[!7KQ:Q%2BU1.S_[O7T1>PE4SA=NO7CN!]1]2GL)8-1Q +MP(Q_O[SP*U*0?YE["70;B>F_(=E+WTM@G_\J66]SFT*\HIO@%53E(84*-B9Q +M;<0.5&Z90PQ)+:,_VC<!@YVO[>@\OLHO,Z:$T@.\23&-^E$NL@)9,EJ&TM1] +MO+C%F\C!QO[N[N[>[FY5_4AGC,7PO.I(FCA-N@K1/?T_ZD8\<7U`7E^\)"F/ +MB]&%`1Z)IE_Z,)2D@S!]*!R!A&.>7)Z=@=RUSYKM#R3Y&9/DW$$S*Y]U:BCI +M0UQD\H3G-.6--EKG-$D&04I?TYQ(!*<#"0<#2)R<HQ"3LELH[W-V<W?Y_A=$ +ML6W4J5&Z4[[F8?CW!'69O@SC46(*-'W!B[.]B`1R/"-B,O0QGW?&Z#5O'CIO +M_G)Y3>*LV+JJ3-&KC8=!H`,.^7%=#%LQ)FE_Y\W#Z\L%%V@2'+)B2D1N8E^] +MTS?I:UV>1XU.(>GSL^J%@2XN4>CKMGUWJ']?FH$N$#I`N#@.NX]A/X>(5\W# +M7YNGQ\&&^W3C_*&'O1Z=*L<I3"2$81))P2&4]IGB>7(#/'W@1WT[]"\3J%`8 +M#'$)U\=7E]<W[K!XU;<[2]/_WD\2NH7]23(;IW7:C;+YW,\&`XF(2.YSPY>. +MQRF_2U:80>2WD_4>^T`W%]>YZ55W&`,1+<=][>"N/*!`I/<R;IK7/BMYP$/. +M8QQ%\6Q*H=Y>GP4;97!6V0,E8D7J=0-Z$?_@Y5EQ?ULH^W`\DV==N45RGX,+ +MY^7EB=4#GB]E.$W26NGR.%)"/GF9%/U#\YASN9R0Q4CH<Y>ION17N&99E`1G +M4=Q=+>"'>,,V#>_Q@K9Y/I#?`<Z9%8%OQCZ3FS-KCY]:-Q^L<5%GKL]=V]>& +M4SR*V6Q]#O:W@Q8QKTG\79[S^2F^YSG?-<_.],7$]9_4ANY^27#UI=X,^NG% +M;6$$4^B436EFYX>%D:C;_$C9EV4C31\0-@AQ,C^>/O-9&$"",*]N/B"&\*Y] +M?-Z\N&D=MIW1*EJ4#9T?\,-5<)&,VM-D7!CSIGEQ='P^OZ[<]V7P^_S\TL!K +M81"0CR]PC=IW=\X@N>^S02KDC1(:7W$Y,WQ])@]C/F."\4FTI(`:[@;-JU9: +MP']]2U.17M=)Z^E#<$H(PV4NO-#SL!L0O_L<-';K!X7E'C6O42'TMGU\1U+E +M^]8-\<C+(W=W*UHX6P#>EE7JCJ?ZO#?'RR7WJ)&SC6G@;4K#NYB4T7_TVS3L +MS&EI7.7K[O($I7,P9"FSGB;\WKTI(O0UEHIWN"*@O3+<9E3OUX,^7CX+]NIS +MJ:O9"]`&??(#X2AD5YF8;>L5UV?!>8A2B+R`*A$#1T(:Z.=B3_YROL]>P7P# +MB208)=-@/$F^QKW(&M/OHY`H)OT8?6=9!=(GY"+>;#G.8E5WO:6-\M6[1!0" +M/KZ@HTTF3-UI:S2H$K23GX3'4*-^BG;03<L'J]QH\Z#P'F%I@PZ1%PUS]/[> +MW92M58#"+ZB)H^EIU'T@<LU/I+X;"P'#9YHAM4"J*K%VINZQ[-@LQ0ZT[JWY +M"P"_`2'YQ>*HMVT"/\VM[43T/2T&PE0WI/XLYX^FX7<IFUA<HE8#+=I"%RZ/ +MKM7_3\NCZ:ZTO%?_7ZWNU=SB5B7-N2>0YT!%P_'TB14<5I:?9=<9Z5_)9(A& +M(D<5X(H:/@=07M?&?O"CVG=]KNX9T9+ED6T3'(0Q\QY/56VXSBR#*PR(4DLE +M`^:=&,_*X?**2J&6`[7V:)HT3``,WY@`S`_?XAZ);='WL#LE6:[Q0IG-/>O5 +M>,<^E*9.W3BFFU/Z5SCI&>DO1=G7;'Y!7`SDIG$;+_Y)L]S?^Q?.D@GC/V.6 +M+Y[_"V?)]*UTEC0)O`);-D7&*AN^SM*Y6RFHQX7'JY%,?9@EV`M_VZHX.R2) +MJA18YBQ<%20)1HLOUQ^9)W2X,JA%&C'[I]&(F<=U'@7NHOY3;O3,[TI[S_1? +M=ZMG?M?:>Z;_NIL]6WBU5Y_IJW_E1%\M(4'E<UQ,A*1`>_5MG"V@0G_JF@/P +M>#H1P"=1)]@]V"9QI+'WQC5T]Z*O)/^,D:A$H+ZQMD(#TBT_C:<?9ATVS`8/ +MT^GXS<Y.UJ_>)[6!?NTFPVK@SZ"]I;,(INWN8P1CS3",2:\&=+8<!H=$,W-# +M=/&%F!49^-@9=(>AI3NH^[%HT*$8TH,!8X0,ZHQY*N;*]?6CB-2]YPRBD=L4 +M5KZIXR`*29R4=ONFW4<28)-92J3Q.VW_,"*]3U]L/IE$T?OV4:%]VQC\]9$9 +MFLOO\3B0HD:,+E)XJ-#M.NG,TND(EEP9B1#B9=9Q??TB^1KLO:R8?:.335]: +MOC`M72#Y7]I#DI&ST5KM2YX>VD.G&T*5C())-C'V7'23R60VGC*6CF=3@6EW +MM:6]8+(+ASB5;'@Z*K,I$)EG_+XX;-<$"X]MQ5$JT'8-M(OH6\#>NQR<K*1^ +M^^0S?Z];4>S^?A8/>KI`TJ]51I<-:NQ7;.5N6-C*7;MAM^->.(49'?Z%FJGO +M9(RQ*",S&[`33&SO.<#?U]O1.-BU&W42?P_P>EDM?4N-H:NP60]?H2_)]=,) +M?8V5TW"<N;MC?4FS3CJ-IS,>:KTYZP>-5RY<8[/#B<;#L$_+[]!63&'1O8BF +MA+.X-8]QFMQK]P/3_9(V3"=]!S!WNM=WYJQHR+O/GS];QV&J3A?ZL<N/F1,* +MX8)_BPFW>G$:CL=1B"<&W.UX3ON\_LMLY"#C=?/:8"E^:-@?FKT>=N6-1`76 +M]KX'R9@=C:PW8<-)IYLDCU%NA#W:<%`9F@WO(9O?O@>W-R>U5VJ*IJ6/)\&> +M7?IU=!_"<\;3N$/>_^86*'%"+*=+1Q%UC7]3G)&U&(87&*L(UEOA3X+=[$L8 +M"-N8$%`X`NGV3+`7.BS>G-=;.!X@>#I.'Y4PR)AIA,#GJ1IR^&(:'9-NYB`" +M!0\5`0!OMW`#\3M?:UC*:5W@7I-PE!H$S>Y#??V<#FC?`C@G#9LM->@M]G;S +M&@0<A[0YV`/"=M[8L$,KWMQB&!DUPZ%IR2/GN(;AZ$D7*5,3)`_.WQ^VV98& +M?TO*H!J6TEW2_7H(9_!6NM2#=K)FGJHP%EP=J@CA!NS(V0=,"G8#AC/L=--` +M$QRWS0AL(#.[18N<)CM,\:G7I)9Y<B4?G$?;?9VA43?IC^!9&1(-5!LAD\YD +M-J7]_/=9/.&-8PV'C7,"(2,SJ=9^U3VB#9C:*=R.8O!,]RB&(1/(3L@7+R2F +M.1SKU>Q@3*#CX>O=P@XXV)!=9F:SV<Z=,.G$-C5;G[>#F^O;%\^W'<O>F/KC +M$%)A9H+3NV^"P^9[<YGYAUWSP]F'YL[9[Q^RFSX(=O?-CT,\TT<[0;(?,)R( +MRA#6#=R"-$^4^+9DGFYJ`B(<#H2FO#8`SX%O<>$^@"@J'S&!QB0^3)]<>K0K +MA\!&W@G1SOM[8"QG@N.%,3U3H0TC,S6A6Z\,@.O(WE-C;'=<#3EZR#UW[;3G +MEPI)S3(]NUK@^5.P9T?\3"1490O\T+!K`4_X'S>6&+[5IV](A)Z"#C"94IZ. +M,=-,2I$ALJDI<>G1V4PS>FC0P%R-;L!A8O;M&P'RW``9_%!6GHV#'055D)8- +MTQ+\7^_T&^&6-5BRZ$_VS-9J,_XTPR>AYJ_<\[LF+MT9X/++320\SDY_1ZFM +M(^H036&2,NH*-+T(P"1"39*6#(5F[A[UP^Z3R[2)%@GEL??@B/?9B0@QX2!, +M?\]0(E"PRG#LYN&9TN/=W.EU6)+AIH1PQ%NBG'B!G#DNF_D4V-@.OLI[#CH. +MB/^Y_!"Z/6T*"<_P#[REZY?"&DHR0G<0\VT!VJF;;/#$4GL0X$&&@?'FD!32 +M?7RRS\">-&^:9P'=5['ZXVJP!P;4RS(*GM:!12@Z#\59_L$>O;!%YACT!SO- +M]<:E$%MQ>Q]FM)'U0K^K[`R)#A&G9Q3O$*E^9$M(FM]P(SF*1(_+5@3(U%B5 +M6H?HLJEF&_H4_HI'"?YBPX<02+:3"JC=#!VZ,]&\"*]1+]C271FT8>]96SD= +MR3?3&+0P?TM8&7J9'>V016XXN!0K'=QHU+^S05HZ/<\ZX?[=QXF5AOAWB[I- +M[9Z.P<65XMG,C"?1!13YI:O=,?BY^RR[-,?CO"<7%\<EACW6/8G[=F93<[[R +MK._Z+W3J^XWBAO#;P;6/ZX75Y"2_5_7=3(0'F.P>XRZQ+)/=!$SI6=1]@,X^ +M8JL"3N@?.E+RK`!!KC0NBKZT0$(B(=@A/\&XSHVS3<Q-ZV7]]>Y>IEP$FU/8 +M&/0C3X.FOE6`H&K"#MKR'W<:*LL.PWAT^JFD@Y1/(UP('PN<)@"(5+HT*KK( +M!1%4`Y&83&=C)A.IJM"\%[NO2Y;76+X\UC?DX$I`-)R#(]E`K@[:X?PYS*F3 +M]$D9_Q9.1BI]SF"G^?Z#V\L%,NV!+W(N=`E>"GMN%!N@*.#.]Q\.@JM&R@B> +MDP"$?M2%Z]H5?``B14$?3$V`J!&'`5R2&D'Z5K#1_T%?;\`]VT<^HS`ZNY/- +MKPFLK\33,XJ<)U1,GU#LJ[XNO.E%Q18ZN.]H!G,-7]1?OW:PD9ONVNT#2K1; +MIUP\3&PZS($P$5[6>?OC8;VD3QI]Y:`*#L];A(<@D=G'.^"*3'?W5>5T&\7I +M9MO7Z\6@HS0R(SB"XL0SK<^-NP,T*@?8+0Y@FX()$&X06X'>/Z+CGHWHP+=I +M6_`WW3[@(/X$/@';U]=ZD:,S&W>],1K$1B4WBD$ZBSGH87TMB\D,)$HKX@MH +M]6U5R0S3_=2\OEA?BT?BT>_BLJ6)9>$(<PI[X9BM^*.(5-&4AJ^7+(\?`/G+ +MG9BH^`44?,B&E8@UH&,-<5/3)Y%3LHL`G2\GNA(UG=X)=]G;W-K6:%2:Y(P- +M3'L'_W5];0AE,[HGF1'SE4>;P<=T_F\%[]]/8EK'AW#")6-DW#TS[M71B;'! +MI*(.C41:@&$"(HR:A#D"E:.5XU0X#N*>`<Q`.D=TJ55]C52H)$1$,)*.#DF- +MPC7_1!01`(@3[90#@5&(HU&DKTK#V\$P26';)ECGM"/Q0SQ)@HOFK\U?6N?- +M)?`^DI!&6-Z>SGJQE:^K(*TU!^9"8!_&I!K6'?G+7-JCJ(/M?4^$^:>#QHN# +MER\=$0B-?@N[77&XLUN+*"$"/_2"86FD48#=LZ@`^PFD%6*CV'`B$\1M=@B@ +M71`+X[P@=]X\,]/FEX3.?^JNKSGJ$5*EP8=H-(D?4][Y`F!'6R"T(95@\1@? +MXOY##726V?B4=$YFJC>3&91<5GAQ%2#C?)A->MN`]/[O__%_Z.[]`OMV720# +M2Z^.2P0:<VQJ*F:`(O;3@:PQ*8592I0'`9A1-:QG3A>\@Z7TZ0[7@A]))/'C +M<01Y0%@A%(CM];42X6H[B*9="<$@F5B$+)Z/DDA5"L5`062(G2T2793I=1B* +M=(N^+EYT=\R5Q4DC,TA(DHI]7Q%B.5';&H(U2#X$II#J,"/V2I.=.'W!X4!@ +ML]LK9!)K"V?3A+8IANGI2:H.C'KQU[A'-V)]365C)\AYB!40SL16RQ-UG*9@ +M)'%-69#2;FOB,&#SRJ?X,:85D&8+!\8#S<.%P`*\#E@7H4C0X)4:'=2TMI._ +MKF*)9HI6=EWG`.59INNZ&;(2[GHA5/'IXN2BR5=9LNMU`3.)[?8P62(%2[>' +M+6$)CGT<)9#9J;.<43S&S:Z<R=RL"TS5D4:XW4%INP.2'0_"?%.56\J:/B\T +M57&RK.F^TY2-^:\KF^X5FY:OZ2`OYQ::MB$OLTUD$M6,\`L2;%2-_/ZHA^&E +MZ>Y>(W-GWK`4D)<F)G0?^);\?49RS1JB@&8:'T],JS?KHAYA)YY"D!@\U2"X +M]D0)-E+%).*/2$!98SRJM/9#+2(J@P313D1$?3SCU!'6U?C:\/WM(BXK")K$ +M$[=-3I`SX0Z)M[C-P+O4JK6$;L23(C$X$0FFZ04.-:"[==F=&D9$VZ.D2DAC +M3AX3UB/M&_:,.>(:4B$O+GS@B9+FUX_>:(2_VKN4UH1JZ68P8H'18>&!,)9L +M97,9-YQA"20RT>]W^(J$G?6U/IL5<#*J4CJ]V0(S0HA:9D*MLX,HF_LO8?CX +MF!"_BW$`HS?L=@KHV&&L-%0Q9T7D_A:5KJ(>49?3^)Y$N)C68.JG6:-<OOEY +M_#A(TN!C^/=1^(:U(M=E"0RFT[U(IK1S00N&'YH[`LV)W+"\EHRZT21G<@:Y +MKF5VPDU^;<=Y8IHD9$VC,6R^T.-;-!B0V,@L2R*#X?Q^BJAGQ+'-O0"N[\ER +MAQ5M].86S?\$<CD=]#9'KP[I[K`?8SD`[`>\0??K:^CY+:3SY/4PMFH//4&+ +MK:VOI,DE=!!3DB.5,5AOJW'FL/RTS0PE308S,<=#C10%V.*@F2*S?T96]K*G +M*E7S8]ZIA/YCE_BFXD6+]34F^P_1@,0;Z*C$EB>A'@F?!F>!Q!"=(;)MS$9@ +M\J.-+?;DK3'*T#9([M@FA(89>!IQ8'-\CWQUT'"K7ICU+TDTZ0?M9$08W('K +M?)*ST,T9YQG'U1[(D`X601('BYC&#%:+3V&O@G0?.,KQXH:=O"5BMTB#6(.+ +M<)'9E42R831*9GV2YYB!DK83L?+%^$6,M@'7,LY-_`R[<R2MA;B\VB!@#R^; +M6T35/OY\=/QQ6_P.G`T5#ZSW1VP:K^=@A9D^S,%H5BHF!M1AAR6+M;P.L>D) +MI(.<$,.&U@"[&HJ+1,3%65^0F*A85S;K>8?$`+:*5+'WY\YV<L/&HG.]A\5; +M!%3C^\[;Z^BV=`T5*<!C[R5;66`MRKR<UH#!_"^$"9[P;:/=3:;3#;5M!ZKD +M1K83V)4&^4]MIU\C6OWO$:V'9\S:O@'`PB/[-57!3.O%&4+E"IVT$"+O-4B: +MB1@`;+"1;#8;GNB*3.X'-*%M.U`VG:.01&`8@<.'`<)>Q.C*/M*$8+'_\B$B +M,80(\]QD#DG1&N%*=F,B(6]@].'*^(C=;IW>MJ\;@37)!ER^(LUV%Z7VUQU? +M4\8KGZ7,,G!\'#F2\<I>A!>[^60D%P1Y`ZS5FY4QO?J&1+1PQIPR'<\D!(=! +M6O,8&"A!96E+\Y]<(&9[WA-;`A8%UW6H7H_VC'MQV!\EQ)UU4QK/%^%D+<V% +M7>1\T6JQ%BC[BZ#PO1*RY9(^[;KT4MC;X!!Q6`G7U\POR@)Z\3U[G*;P:0WC +M5*WOD/.22=R/01FP_6P2BP?J_6>Q81(/8:!R+C`KL5;\$]7#2'\V"&J-5O-W +M%&Y/K2;"B:AI#!?MFV!-`[[&^F/]GCK2QM6327\'3"IRAU1@3$$['-_Q+65M +MUA[PS@YA4C+=@4M^YQ'&HA^#R`D>JPG=&D2VQQ'[BYF^OC'A9\3@O\;1MSK= +MDJ?99,`A:,]?#'M]/<U*S6+?(6AK?W%^I2ND-E#+ZOG$"&.3@:IE)F77L)+N +M)$SIA@*0)>&U<1GM`T@T@TM@''Y_$QR3X$\$;P8[/3SB'$%!K(B-7<]VGKUE +M11@TL4M"[CUQ,A;0UM>"8$BSGTT$K(9>B,F9)/=83+VP%.#%"O:V<FPP+XCV +MO+CH\W#RJ**(2"@:4L&B-<DA/(^PVYVQ7\C.`:8X:C:+TP=.,N0\"--U<X.$ +M$(F[&'$@"12>S8O;L[,MW0/CCN$-M*9RC243]BD@L^"2W+S9++RM]S?[8"W& +M).N^%W9)4FD(O^<;S'HR$]F=36OP`0Y(9@WP9`J.@,-(2#690*ZB*Q!Q6)0A +M6YA`;934.&@3R5>"(9*A#V*BGJ3Y>1)F/9+\EF6>J6G/2?_D%>_OU3IP[,-! +M"3!QFKQ^\<*ZKCJ:E#5YDL@6`J4QM)VD]Z31N=FNO<6"6?[F9X?I/),9*VL3 +MJ%%TJD1O8IHVGQ.K`JWV)<8S@3[VJ#@A)ZA-@MH-\Y1()">3,E]L9Z)[>$W4 +MB\:HS8IHITMB\ZH)57TH7MTV[#82L6.$@#=9Z[QAD_-I$/J.>\V<:!@^&:.8 +M*U?]%'/RC?F<VA1#1Z%S`JM*2$@N9I/C!JJDI]V<].0V-!2$`T0BS@!..$(S +MXNAI$8TSWL!4&\(3Z:=,,C28!ZE0`&.\X20C_0+EB/AK/)T.E((8,T8GNF=3 +MD1F<1%OZCD@G%[R@6PA9L5Z8:8O3`!\9T:#L8$+Q_9.$V$F4'$[B'JR)9FY( +MWOH:+AIK)!D]E)B@?AREQ5'$MJPF!&MLFV>G<_W`ES&M$KMH9E+V`N7*/9&+ +M6@:)9K,>VQC?8B^>6!\5ILTZ?2UF`IPP)1LD_;@K!EOI(S6Z;#@)6STENA"P +MQ([!IGE%OD8Y_WI>;SRW*/4VB'M$,F%69;<,?MTWZ:+LR0I%DF01!"2*HV]V +M..HF&,;?9V,PF\R.+1.&!!<CO@_6*+I,?(\Q>XG!Y..IBQ\_TQ>+L]S/$-_Q +M6[RR7E<PIVW&)4QF6V;&V8(R.YX)"1$@$I&)I<-L;#@=)@.;M#7M;CST)AJZ +MN)&9S^7TV[?M&L:O%V8#D9['ZZ*0"TB!A-EJ6,<KMQWN9,;KGI&L;*_=-J2U +MX-<P#CX1<2WT_9N@YK]!O!H2?4<PZ:BGEB2);^F1,-.-U,>363IA+-O0^[:1 +M$T1@%1`"RQJ5O6`ZQ[?9'1>#CQ3T$>)M-U,E`F82=2>*!$,;/2H7:>=>S9R- +M9+NH6DD0B"6@+9+7)Y%#!\!A61\D%4KB9/GR&BHFX1A[Y3H^89<3\Y]OR"%7 +M1$/&(/@L")%89`[.AG`I+2V0S@*HCZ3=W#_EI`H8"XCG,3")C6().^S#US#- +M-/.]^NNZ/0'IB7T4EX38V5BT=Q3\S9HHZ;4?6]O6S(:*3"/Y(+QK""\P/*2; +MM9IZ3K>)X0(;MH0CA.K!EUY3)L02!X!4[YY1OJ%2CF>P##;OIY%6-)EQE'Q> +MD.)@?QH*5\_&"+!4FJ3#B&B/1!EPE(#VVV81"\01Z-(K[NOQ=[HK,?MP!CEE +M+(T&]S6C'VG>0-7AB,LN0RBU<QD&\V3/QF&IR)]WU"T=R7AC,H300B?!YB>6 +MB@6P$;/H4$8FB(K#`D+:HP3BL80)<I(F!JAOB8-%+\'+>21V0F;R#1&\V^/8 +M=:Y:I'%/V09;B<4JS^*B>5TU4M&78QL:@+N$L+O@XA**B--`)A4;R.N%/H?` +MY$C22.A>:>2&-1BH6@VP9EY[%?-Z79B6;9?1=&&:R`N*B]8PHV\%M9#NP+_3 +M_V?T__TV7!.0_&%%-:'_Z%"+Y8+%QO6E"O_\O%X5_%FV'8<*L82!T)'`=9.( +M+,"LC5^9ZCQ-U<"99CBX#<DTL_X,2?D-3A.)SN$U07T2LT_,;89/8&3@\?": +MRVRJ=O.E(Y0Z;KCYAB\*/CA[LOEP-=@MZUT$:$`"3X,-#N/M!O^0>-[O&V+9 +M-'Y?@?72P6'&X-F8RX:4Q!7I>E3:GY_F05#F*E30.'HWM`X;?0?RAM)'2J&Y +M8L$P3!_I1D]2<^J[5:?^O#">;2<NJ]%]W(?";G"PAMI:,%/4N$ZUX);]+NP. +MZ+`S4U\[',X&<=">);01T6C97/:KYI*ASUDXIC]FU&<4*_D4H0+>Q.#WUI5J +MF@]@)`[X+KS($*L$6^%;47*#"F3QR(TT7E_;T-?2D*PQZFT$_,0-9\;I`.I% +MSV8HT`QA8=9D]'3Y),JO=MO+NDW`)1$LP+Z]@>GC$A>S;5578*]P!2H;%DAO +MUNY<F"?$G&WX:OL//"<@<"_IUJ9)#3'-(D&E2EG6UVR<,TT0#LA*FN\0XGP[ +M&=<0?(CK&>ZHYD)0.'&G7NAZ"7X$PP;[&(2[AS,-\0=+"H6,=DCO&HTTA)S= +MOT:35LLM8@PX4$*0V:8MJ-]!N!`1,H@#3^K@M;3CAC/_'6Z.1FKR,&8=1'$Y +M4MX;%R]%V``5C;[#IIVR,4SZ,7_>.WVOX6>-F_>ZSWLO2_=YWZ4=^7:'0HJ% +M?<Y&-JY.=%F(6"0"A4S96,C3^)*-/*D?11OS::%OA6J3I#1#WAC,FQR@1(+@ +MDPF<V]D'2!Y<;@%)&=F5AHASE293#4,<SSH#-:]QJ3C'^Z81NA+0CW`1">=^ +M!F=)OP:3]IJ;6XNI)6ED>[!22+<4TTB^D424:C6Z24+$:TBB2W[73E1]3!_C +M\=@)OK<GQ-H:=%C-_H;F:2/@"=V>GT)F4?N68V?A80Z*PQASH(-"FW]]=;J5 +MPQ[=;E)6:8,EBY"%_59`<BWOLH.,,!"8?`\3%\\WQ<S!WJ:6RC0F_@L]59ZH +M<=T%3(Q]19SL233N;=`BL3(9:QDLDI%'4W&S3B)::E=5?_$OL9@XY=)U2N`4 +ME34091Z5G^=1>?<@0V6XB&:LY>AD#=6=RF4DK*P7.C$O@VAV8*(MMU7L%Z_: +MAQCB+BF;J/VE4EQ#_,DZW88-TRS"QO']R')].>QJ&/5B`LZ;P<&OQY<GI@;5 +M=/($=5Z,/L:$"85P$O418*9UB0M19[++:D]7'N$X50C$CYS>P*[]"H*\[S): +MM%-[QDO$\_"FGJL;L1X.;00>3E/"&':4W=OTQ36:A7&QB^P:]Q^F6D>K7A@" +MFUN#S`(:PA]8![&)+9D!2JR!M$5(M%XS>K.[37/`;RID<E!YV'R`F-MJ%K`V +MPC30^$\3?``K*F+Q1G'7)`;QJL+^-.P7<FL%Z;J3>#Q-6?299JY@<PY[5>>P +M5SB'JG8-R1@VD#N1%(+BJ!5E)"(+@HQO;L',]ET,6D:E8+W%2N0ZK\:+RO%R +M\\K:Y6-",CUJ_TU@](!,U11+.,E!$Y-B2JAK$YMP<]5$L<VLWY6;TZA_S_Z+ +M>F$"(F?IK>(@$N&39=L@E'&66FM>H5&</E*CK+(,?*RY.$N;.(IX=53L`%4S +M-4Q3]C&9<M0R34L4W-AR"8#%EMP96]9VX4?2WU&=9]T-R"F>RIZKH'%N?HD^ +MNY?)+PC:#C8U`@FVB2V5@-A\+M8G?E)11MVM&M51L)`*LV_;M1U.8WB7DT*\ +MK7'LS#A'\DM&?]?7-IO&6!_E3",PW!$KSJH$"%TB8MD'[C?JC9>D<?`[Z_2W +MLC7ER'7IMI]U$Y<5,87>3HI43&,QR7)+XVG.HT+$;&1,#_=.1R[KPJ4#)LEX +M'&ER(P@Z[.3(UEB#Z]H.T"%VG$4H@T@DWT9L5>??9::[%J^1T5"K"7VM6:(E +M'(.CM^"^GEB[G*8E'52<V8O\F14884&I<_0WH2_;12E\?2WO0,C#-/YC*%*. +MI=3$^1Y^;+-CO2X13!7FA[VY4*<*C7_/%0WR[3*1,A\E\DS"R<``3`P%XV2/ +MZ22;2'4)7=`C^!72B&06B5OL0UP]BJ8<X13"_,N\#_JE.N5-XUR(0-C[&J<) +MD')'=Z+6;M9HFKL'=:=.39AV-<2EG!;ON;PZWZXL<P[ZJ2.B.^%IVW`&L@Q. +M0K):8<U3*I)0R9Y^ERS5'^`KYEA9"'$TR&@VUNC;_`YON\R4/2XDC>QT)-.( +M:?MH?0TR4#A*AJ'*@6Q,RD7=FL"6JI/?RV]%8\_=BGGB[L229-<2V<+)B`W$ +MXOCGB%X-$)&^6OG9"#X.%)BEB5JLKXE[P<4&>`));=%X1Z[!3%I.+E!3Y37P +M9TA9-&CR2,LPW)P(T0-7,S.A*C(S.-@8*)*W$(0J82$:0CUAAE2R=BD8V:&! +M'[=4U47D,[OTV-GH*#3*A;`Q49;X-.*RD^Q#9YLSY#P@5YJ`2CV);5\""3@N +M%393/A8KQ;0?$6F`>\74+%<&1,]ZMPKM&_FSSMJ=$&]YD/P*CJ9BS%-!3/&6 +MTT9"\2V#M7.P#U2\5$MRI1KQ#?=3P)6&>:-"#A"`LU@'QQZ]2TF8_:LF0.:D +M_I!]+F(_,GY#8#9-OOY:TU98;).!X#GM59H%=`!+'<^1RO7,?1>7U^P<MF`: +MXMBY6DM$;%/EUPDG6*?JWW?B(8'98?=!`]B%6,,"-L(>H4A*,@&/PEE:[38F +MU&1>1YP['L^TPH@5UY,14)*NQS"&5)[9YI&Q5Z&`-'*V>6YHI0IC$LHHCL+: +M*[>8-EQ[>KX=)W@F'`[<9?6SYIR3Q0C)FS4YC"27<"3!(#+Y.X^1D6SAQ)2G +M0^'ID:O!>H*8BDAH63MA(H`0%MTG?@!B<VN'#<'X6YY^X#""`K7MFH66<\B& +M*__EVSGF.Z*^"'=A&FU38*5\-JIGZPCE!+:1D_5R[8X'=+XCJ9=$:^<$`L*7 +M/'[RH&PX4GN<<*)4*U>DA90>6\4B0]"WZVMYD+%D`K+S:29DNH#_DE:%E)*> +MNL^M,CI-9HSKFD/Y:#*1R\UG#5=J6CO+?L($U$0I]\;D@-AD1=I?4RL_E^P\ +M/X0KY'##<@FNT=G+GT0C)\$Y]D-CP$M)3L@K+^Q%5>L>%_A=7[M(II9J,S<Q +M1R$'`2'I?C:H%T;,>2XWF),9GGVGZ>$;O"\;PG[F?A3=76)CW3!-#G?[KE-T +MQ0!.W)#$"9`UWF541I8D[,>(XVW2'&43=RS,^J3;=\+N(S$K9.!W88?IF6,I +M)R&DOC8*V_T\(\.3R-ZLB3EFE7<X&`)T8!GX`K4KE8'9"#SB6-/4/K:#D$B@ +M%\+T:#,T317R@<,Z=/1R!8YTP@*!S!J>YY/JD,\PM?F*F9J`A3L!NID=,P]- +MJLWUM&.]3^>1;IM/Z:RS;<(&-:^]_([0?`MT+FO(^^W0EIU<*H4;\:XA*?5< +M"GW)4"]=*<-E0^U<80!'K<D+OHR293%63F&=LG$/\N/F)5FUZZ).D"17#,*^ +M@5BYDN<%B);S&ML_J;4HX=(92`Z21AK-))OMB7\3(XF*F^L:M3^5\"U1#S3X +M7S/$V-@/:1\5*SF\A#-YC+#="QR#DP2YBY.''RZ1S#J1<SD_352(9$#[3K`W +MC?AM)8WNA"-3&9(-1"#IJ\^33TWL-=M5Z3)MB8%19B`#<0D;B1"Q<7"[N9MN +M3,HLTKKT!:Y'Y$&;<R@7;.@<]JK.X8/6\!*A)GVK-1\&@+J#UXJW56Z3%<ZY +M:E1+V]9^/YE78/HS]F0XEG5T;XGI((TB/MVD\Y4S$JRKS20E*,^."2Y$'AH3 +ML8O%O?F46=JM<U)MGF],DIL6WM2T(L&>1"W&$%#'FFBZP2(5,>;NXX8P(1-; +MI&)4]0:#1)H'=;(:3JVSXR/)*L"8H7FX1RL0L=K.Q9^^A4^"42Q-A$3/!"]@ +M\"695?;MC./<PYY8?7.%HF2RA"%L>0WS%2T4+W;+90O"BT8>+[*&357+&3M% +MGMCD&9J\#\UICT>2BD(7CV<*[+1O*DGOG.^';D"],)3XRAR4YKO"ER>YOY>: +MCOU$P&.7H:'2]P"G-HRWU$6M5%RB.-C$N#;=3FMINHO/A3I1*SKH';=ZF!:* +M";_+Z9G+#N/U;"2'1/Q[2[>WDJ#NYK?7M@M:R/#@AT:B"8#)*<;XEL2#*>U# +M/TEZ>O@YH))CB$H?S`]5^R(D#4T8:+GS:K?3<-@*-WR9X[@XKM/6D;5)\%U0 +M?X1>(I@I\*V^MP?TUB)EUILFU)>?P4V2X!ZU)";\3ZY!-I[$7^FB]XLQJR63 +M/2A,UC:48/4!7*@VAI`U02=:38(BVY>IH?`VSB>.^DFP<3((AU'T%*4;B)DD +MKO$?_UL0.Y)RG,,HR\!E",K\<!&X-@QA^"FM-E%NL*D!U_]E*Q@85Z[L"E@9 +M0S`&>MAS:UQGFXG+K+]T)YY7[81J^]G4,"TK",G,N&[?H/LP3'J;6V:H<O&> +MABH/%(:TS6&VV3W@1_(X;]-(?W3B6;J#9MB9JCPA1'D$Y1*AJ"7W-3/F,)P\ +MXI4_\9^8V94KFC2[O<+L['5Z3Y)B-[..*N8R1WH3X'6IZ^;AS5W[^/#V^OCN +MXO+H\H;^DYM-S+C80!^'E`S_U%X$3;,`,[=<39;9$41YXD=1:$MZ"+//UWHP +M3S-1(Q4(--]5<$-N$0FA6C1RKK6&?<`T/D05`MVK*L&KX\8S<L.Y>$8VKP`K +M;5':?#EPFSJ@R&LVZ>KX^IPG:;ZX_'1Q?+T=1%S=1%WM8F8PW+9]VY*:+6W0 +M%[@L-*9XOVKZCFZ0;]=D*<--%^=[N\&HMY$A*%X[Y>$E-:IK!393)"8(WHO4 +M,!.CDH3XB4F%%E/OU^5L-UA=IUY)G5J_E7"[R;WY8B,7'#V_D!?YA63M2FRC +MI`X;RX)Q"L/A;A^C2E62@/-H4B,=-C9%]27O0TI%EIAVYXO%`)!YOD^-O+!* +MLBA+4MG?609A!0\V6[W%2%$2KYDIE2"\D4T[FRBA0?0^$DM4SAAB`-(22#KK +MV)PXFH&0"?4DR?A;VW9J"&Z:Q#WA39R*L,.I"0C]@@L,'K!!DCR2X,J`-DWM +MV]RAAEP5C@MS??[\>7,K*\TE'SN#))QN*4KNEL?M[H;[^9-\73Q(W6MS@HX% +MCIUY@EFI92CL!T7M#2YYGIH\.XX8YQJI66:S^D.@_RH_:T,PLT^294D%62:O +M)AGEKJ6841F`C!B/OB8#/E-S0J+::`U45J@,%M0AO;-/M*N2&&<@?8>`C?.G +M,8&_B9:9EL+EJ:2,/64V/VN4UR#R;!N=!:LGO\)OYJY)%B/*%`>"FB=\'^/Q +MYI93ODI\!5G55N?AN<)$LF+-TH:E"%$2V9BGMJDLE%U.EF?BQ$BAF]J2U+(N +MNNCSTWI.(+E..JA+W>[&L\=UDSMO,\Y5!,$-%4N2>L6%+[_((6EC/D+"-GL_ +M&XYMA7U$[=7W;2A6:^?2%E67@('GIANL>NK+PP;BX3W7PE'1JU`GTP:^F)LA +M"`Y50L,4P@'7?1?Q%]7`V:#+PJ,8.N#N!$UD5E6SY\AY7>)S5NMI<4?VZ@>. +M])1O>#F;<LV;YON65K.9>V^`[OU;V7\N"2XE$:8L^R-E$QF?/\7WO>C^&=0" +MNH8V/Z_UC%D-;@9,-D\<=+1N3!<V`4C&K1=F9LNK9DN-\Y1]1VV:D((WM];% +MB/'$8IGX]J$G";%^,@Q>7$AE8TT@.*'$6`W.6,V6$[,)H6X?04_QO9P.ODLC +MI@`GUD_3#S3!1XNTNVD^%A,2#DZ'-F"48C&]YAFAOA<@WD08:*1^J4'SL +MC>PFJ[$^'X^9Z0'\FH`\>2Y38[U`+FCNW0PG0HWUM(;9'D:A@O$D^Q6;5QN7 +M2-T28L'IB'-5O3&I^<)R3%RT)N.N@0\E_.+XDU3U?XL_!S9D5:I7/TB(H-8D +MX*`@T!!-FFD]@YEZPDKU8T1W5,/U:#]F8S!1KC<H&3?LST#\X]G1\;6,VKX] +M/V]>MX[;:EUZ777'"E8$#9!Y40S,*EFU+>;H1.4@:C="]==UHS9%K*/K@\^< +M&IEDO*47P=IF*UJJT?*%+>C\;#I^9L9A5@PE/@3Q0<9F*)HW\)H8A3SJF9J4 +M0&;B7+I'2UP:@?L%8E.)!1!,)E:%*E//E"G7HI+TJG4E\F65FS</;4PJV_5J +M,+G4MXIC7T?)I!^.N!R96X;3O(W+M<XF4>:GBB"WUOL_#'*H&QA<.16[9Z&H +MK#':L>ZP;X_34&,YTS<.%Y3J95P`4?S7RO:VQ>*%@:_"[\[):P4F5!.H<_DV +M(4D'!<\.GYZ>NO,6D!.KXCA70*0S]\K;7,$K4^NJ\Y27D4V=*AE#:EP!$(>G +MI72%AMS]WQ'`RR5I8.2PAEZ=659MZR$B'10%W8NK8IF-C2DY!U&N<I.3CC2A +M1;Z?)"2'L;1N^:`F_'*!MCT#&V%:B*@V!1!,05%]8R?S(X-4L2'&.L3!#5X; +M.(?V.&5!@B;JI,T>SF*Z)J%Z4FG?\5\2E&)A'^,4BWKE6.;4\7K#K\U(_%)_ +M-/L6C_;WZFDRFW3!O(A3CJ+ICNO@.7`*AOX>CW?H_Q?/2UPO1R&2B;G2;!#4 +MSG9J#W(5OFL^>O[^YBC)P9M2I8H5%"?13&2_1)B.J?9!-YHE`7$5!EJIU/RF +M&13G[[>*`]*G[BP-3J.XK]8T:V:!($#H-3`6*J=R7;9WW]-1/*B36M6)Z!8C +M\`MP=W;W=NA/;5X;QM.:4^D%GJ5))R(T'^T`5$:1]241]JT+TR8JROMVR7H# +M>A_2OGZ@JW9.HNMG9R9#^OP]-Q.H@8_39"S%0:&IK>=MLR".\F\-B%.3)#YQ +M'PUX=Q3J`U3<B20:@(X!\69.&+IA,BQD0N2U;Y[4OH6#QUP2@2%\7)3VA0%N +MBG$X0+D'FYC>FNA15Q/1^N8RO>?*"1$J6K/5_Z-\53$I7H#:0`HU'$!)%"6; +M^+B)7)0X6HN%N91:.WV.>'IE!M=[!HQE.JWO"6\''ZYJMY^W\1K.]V]$*;8# +MJ6;1MZ8M#BSHY2."_B]02P,$"@``````O'MF0>I8ZGT7````%P````@`'`!B +M=6EL9"YS:%54"0`#8ZZ84,8XFE!U>`L``03U`0``!!0````C(2]B:6XO<V@* +M96-H;R`B=&5S="XB"E!+`0(>`Q0````(`!*<9T$V32@KLU<``&H^`0`%`!@` +M``````$```"D@0````!F:6QE,%54!0`#Q#B:4'5X"P`!!/4!```$%````%!+ +M`0(>`PH``````+Q[9D'J6.I]%P```!<````(`!@```````$```#M@?)7``!B +M=6EL9"YS:%54!0`#8ZZ84'5X"P`!!/4!```$%````%!+!08``````@`"`)D` +M``!+6```M094:&ES(&ES(&$@<V%M<&QE(&9I;&4@=&\@=&5S="!R96%D:6YG +M('II<"!A<F-H:79E<R!W:&EC:"!H879E(&$@>FEP(&-O;6UE;G0N#0IA86%A +M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A +M86%A86%A86%A86%A86%A86%A86%A86%A86%A#0IA86%A86%A86%A86%A86%A +M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A +M86%A86%A86%A86%A86%A#0IA86%A86%A86%A86%A86%A86%A86%A86%A86%A +M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A +M86%A#0IA86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A +M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A#0IA86%A86%A +M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A +M86%A86%A86%A86%A86%A86%A86%A86%A#0IA86%A86%A86%A86%A86%A86%A +M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A +M86%A86%A86%A86%A#0IA86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A +M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A +M#0IA86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A +M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A#0IA86%A86%A86%A +M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A +M86%A86%A86%A86%A86%A86%A86%A#0IA86%A86%A86%A86%A86%A86%A86%A +M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A +M86%A86%A86%A#0IA86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A +M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A#0IA +M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A +M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A#0IA86%A86%A86%A86%A +M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A +M86%A86%A86%A86%A86%A86%A#0IV#0IA86%A86%A86%A86%A86%A86%A86%A +M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A +M86%A86%A86%A#0IA86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A +M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A#0IA +M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A +M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A#0IA86%A86%A86%A86%A +M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A +M86%A86%A86%A86%A86%A86%A#0IA86%A86%A86%A86%A86%A86%A86%A86%A +M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A +M86%A86%A#0IA86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A +M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A#0IA86%A +M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A +M86%A86%A86%A86%A86%A86%A86%A86%A86%A#0IA86%A86%A86%A86%A86%A +M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A +/86%A86%A86%A86%A86%A +` +end 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 701fe05..21b6160 100644 --- a/contrib/libarchive/libarchive/test/test_read_format_zip_filename.c +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_filename.c @@ -71,7 +71,7 @@ test_read_format_zip_filename_CP932_eucJP(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a)); /* Close the archive. */ @@ -144,7 +144,7 @@ test_read_format_zip_filename_CP932_UTF8(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a)); /* Close the archive. */ @@ -211,7 +211,7 @@ test_read_format_zip_filename_UTF8_eucJP(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a)); /* Close the archive. */ @@ -299,7 +299,7 @@ test_read_format_zip_filename_UTF8_UTF8(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a)); /* Close the archive. */ @@ -350,7 +350,7 @@ test_read_format_zip_filename_CP866_KOI8R(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a)); /* Close the archive. */ @@ -401,7 +401,7 @@ test_read_format_zip_filename_CP866_UTF8(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a)); /* Close the archive. */ @@ -453,7 +453,7 @@ test_read_format_zip_filename_KOI8R_CP866(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a)); /* Close the archive. */ @@ -504,7 +504,7 @@ test_read_format_zip_filename_KOI8R_UTF8(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a)); /* Close the archive. */ @@ -561,7 +561,7 @@ test_read_format_zip_filename_UTF8_KOI8R(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a)); /* Close the archive. */ @@ -621,7 +621,7 @@ test_read_format_zip_filename_UTF8_CP866(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a)); /* Close the archive. */ @@ -669,7 +669,7 @@ test_read_format_zip_filename_UTF8_UTF8_ru(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a)); /* Close the archive. */ @@ -722,7 +722,7 @@ test_read_format_zip_filename_CP932_CP932(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a)); /* Close the archive. */ @@ -792,7 +792,7 @@ test_read_format_zip_filename_UTF8_CP932(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a)); /* Close the archive. */ @@ -844,7 +844,7 @@ test_read_format_zip_filename_CP866_CP1251(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a)); /* Close the archive. */ @@ -896,7 +896,7 @@ test_read_format_zip_filename_CP866_CP1251_win(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a)); /* Close the archive. */ @@ -947,7 +947,7 @@ test_read_format_zip_filename_KOI8R_CP1251(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a)); /* Close the archive. */ @@ -1006,7 +1006,7 @@ test_read_format_zip_filename_UTF8_CP1251(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a)); /* Close the archive. */ @@ -1071,7 +1071,7 @@ test_read_format_zip_filename_KOI8R_UTF8_2(const char *refname) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a)); /* Close the archive. */ @@ -1112,7 +1112,7 @@ next_test: assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a)); /* Close the archive. */ 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 new file mode 100644 index 0000000..dd48fd4 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_mac_metadata.c @@ -0,0 +1,118 @@ +/*- + * Copyright (c) 2012 Michihiro NAKAJIMA + * 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" +__FBSDID("$FreeBSD$"); + +#ifdef HAVE_LIBZ +static const int libz_enabled = 1; +#else +static const int libz_enabled = 0; +#endif + +/* + * Read a zip file that has a zip comment in the end of the central + * directory record. + */ +DEFINE_TEST(test_read_format_zip_mac_metadata) +{ + const char *refname = "test_read_format_zip_mac_metadata.zip"; + char *p; + size_t s; + struct archive *a; + struct archive_entry *ae; + const unsigned char appledouble[] = { + 0x00, 0x05, 0x16, 0x07, 0x00, 0x02, 0x00, 0x00, + 0x4d, 0x61, 0x63, 0x20, 0x4f, 0x53, 0x20, 0x58, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, + 0x00, 0x32, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x01, 0x1f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x41, 0x54, 0x54, 0x52, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1f, + 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x87, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x87, + 0x00, 0x00, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x61, + 0x70, 0x70, 0x6c, 0x65, 0x2e, 0x61, 0x63, 0x6c, + 0x2e, 0x74, 0x65, 0x78, 0x74, 0x00, 0x00, 0x00, + 0x21, 0x23, 0x61, 0x63, 0x6c, 0x20, 0x31, 0x0a, + 0x75, 0x73, 0x65, 0x72, 0x3a, 0x46, 0x46, 0x46, + 0x46, 0x45, 0x45, 0x45, 0x45, 0x2d, 0x44, 0x44, + 0x44, 0x44, 0x2d, 0x43, 0x43, 0x43, 0x43, 0x2d, + 0x42, 0x42, 0x42, 0x42, 0x2d, 0x41, 0x41, 0x41, + 0x41, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x43, + 0x39, 0x3a, 0x47, 0x75, 0x65, 0x73, 0x74, 0x3a, + 0x32, 0x30, 0x31, 0x3a, 0x64, 0x65, 0x6e, 0x79, + 0x3a, 0x72, 0x65, 0x61, 0x64, 0x0a, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x3a, 0x41, 0x42, 0x43, 0x44, + 0x45, 0x46, 0x41, 0x42, 0x2d, 0x43, 0x44, 0x45, + 0x46, 0x2d, 0x41, 0x42, 0x43, 0x44, 0x2d, 0x45, + 0x46, 0x41, 0x42, 0x2d, 0x43, 0x44, 0x45, 0x46, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x35, 0x30, + 0x3a, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x3a, 0x38, + 0x30, 0x3a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x3a, + 0x77, 0x72, 0x69, 0x74, 0x65, 0x0a, 0x00 + }; + + extract_reference_file(refname); + p = slurpfile(&s, refname); + + /* Mac metadata can only be extracted with the seeking reader. */ + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip(a)); + assertEqualIntA(a, ARCHIVE_OK, read_open_memory_seek(a, p, s, 1)); + + if (libz_enabled) { + assertEqualIntA(a, ARCHIVE_OK, + archive_read_next_header(a, &ae)); + } else { + assertEqualIntA(a, ARCHIVE_WARN, + archive_read_next_header(a, &ae)); + assertEqualString(archive_error_string(a), + "Unsupported ZIP compression method (deflation)"); + assert(archive_errno(a) != 0); + } + assertEqualString("file3", archive_entry_pathname(ae)); + assertEqualInt(AE_IFREG | 0644, archive_entry_mode(ae)); + failure("Mac metadata should be set"); + if (libz_enabled) { + const void *metadata; + if (assert((metadata = archive_entry_mac_metadata(ae, &s)) + != NULL)) { + assertEqualMem(metadata, appledouble, + sizeof(appledouble)); + } + } else { + assert(archive_entry_mac_metadata(ae, &s) == NULL); + } + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_free(a)); +} diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_mac_metadata.zip.uu b/contrib/libarchive/libarchive/test/test_read_format_zip_mac_metadata.zip.uu new file mode 100644 index 0000000..d54c24d --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_mac_metadata.zip.uu @@ -0,0 +1,17 @@ +begin 644 test_read_format_zip_mac_metadata.zip +M4$L#!!0`"``(`"UH8T$````````````````%`!``9FEL93-56`P`U?264!:7 +ME%#U`10`2TQ*3DE-2^<"`%!+!P@D*E,-"@````@```!02P,$"@``````5VAF +M00````````````````D`$`!?7TU!0T]36"]56`P`YHN84.:+F%#U`10`4$L# +M!!0`"``(`"UH8T$````````````````0`!``7U]-04-/4U@O+E]F:6QE,U58 +M#`#5])90%I>44/4!%`!C8!5C9V!B8/!-3%;P#U:(4(`"D!@#)Q`;`?%;(`;R +M&>49B`*.(2%!$!98QPP@;D=3PH@0%T[.S]5++"C(2=5+3,[1*TFM*`%**"H# +M.0J&7*7%J456;D#@"@2Z+D"@ZPP$NDY`H.L(!`9@X&QIY5Z:6EQB961@:)62 +MFE=I592:F,*57I1?6F#EZ.3LXNKFZ*0+HG1!/%TX%Z+=U,`J,24W,\_*`LC( +MR<DOMRHORBQ)Y6(``%!+!PCX/!>^LP```!\!``!02P$"%0,4``@`"``M:&-! +M)"I3#0H````(````!0`,``````````!`I($`````9FEL93-56`@`U?264!:7 +ME%!02P$"%0,*``````!7:&9!````````````````"0`,``````````!`_4%- +M````7U]-04-/4U@O55@(`.:+F%#FBYA04$L!`A4#%``(``@`+6AC0?@\%[ZS +M````'P$``!``#```````````0*2!A````%]?34%#3U-8+RY?9FEL93-56`@` +>U?264!:7E%!02P4&``````,``P#,````A0$````` +` +end diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_sfx.c b/contrib/libarchive/libarchive/test/test_read_format_zip_sfx.c new file mode 100644 index 0000000..50e5fa7 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_sfx.c @@ -0,0 +1,59 @@ +/*- + * Copyright (c) 2012 Michihiro NAKAJIMA + * 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" +__FBSDID("$FreeBSD$"); + +/* + * Read a zip file that is a SFX. + */ +DEFINE_TEST(test_read_format_zip_sfx) +{ + const char *refname = "test_read_format_zip_sfx"; + char *p; + size_t s; + struct archive *a; + struct archive_entry *ae; + + extract_reference_file(refname); + p = slurpfile(&s, refname); + + /* Symlinks can only be extracted with the seeking reader. */ + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip(a)); + assertEqualIntA(a, ARCHIVE_OK, read_open_memory_seek(a, p, s, 1)); + + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("file0", archive_entry_pathname(ae)); + assertEqualInt(AE_IFREG | 0644, archive_entry_mode(ae)); + + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("build.sh", archive_entry_pathname(ae)); + assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae)); + assertEqualInt(23, archive_entry_size(ae)); + + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_free(a)); +} diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_sfx.uu b/contrib/libarchive/libarchive/test/test_read_format_zip_sfx.uu new file mode 100644 index 0000000..aab730b --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_format_zip_sfx.uu @@ -0,0 +1,34 @@ +begin 644 test_read_format_zip_sfx +M!5@J$E]]1]?.)[Z/+RR:J';4YIJ7H0[7:BO"S8^VFB`_M_2)627VRG7%.)ZR +M->RL72GY3(0UJMJ0;.F=<-36\SK.=/A%FK!K4Z0URPF<&M#E<@RXT`A04/Z\ +M<^0G>R,X8]@8XDDNJY6M`)Q".-::"%RS&VR!DZ_:>D2?J2W="_<P5N5M]]PJ +M&!O^,VUD!7LUW?771M-Q"KS.HL7P+R/'1._KA6`3?M/8-2LMYS0_`TSQ*]C@ +M>+^EV*LRQR6=M7'6<;4-9>QC><TW/^PNF!Z%=$V1CRF]%XP#023PRV>@*<'9 +M/I<2W=CTNY/`P:EB;N!VD.N^;=8Z)1MJNOW`@8S9Z/X\U4^#H>WZQ>-61Y+W +M(K*N/]YP(XU?S7^FL2DM15A6H-!:D"W`W/DQN(2IZ12!O<K;KU>_3"Y6MC9` +MY#9LR=$B?G%0HZZ";I^LT<7@$6%T2#S-DG@K@LJ46)C>A`.T!2P@[Z5T;"DY +MVE@B9%<XV6"_YO/7%[]"9(-%:-V<-X*GGSJ4?1I72PTMM#X?:XQY)=$QZ2+P +MQ!HPVXKOE?PXR)A?:+D59>DHX=,"ER*),3<Y?2C-9V<"$L_LO+*'K;E"L0E. +MQ*C/H*H>-%];VC5,B-`,WNYTNOA[U"LZQ4Q`Y(!"J2SO6JA4>?8[`$P<Z62+ +M+QJ0GOE,=K+N6XOJR8`=][O+>N"E`@URA/B&/),005H.O-.^?T;PF])\WV?/ +M%K*51XKZU_[D_56VA6$UO(-5R<B=M'*\)7\;=`9H0B=#:7EZ/)V_8HPW)]ZY +M[HXW8KW`]Q`^K;I@0F)@G..KI]]2X6)B<X;X@7Y$:0^V!F#W]GI23)9*?<:G +MBCNO8DM<']_6[^R%8#]I>6'0T/$S]`("I-`+&!&2>Z-*%PO"D_Q.E:G7<7=[ +MI<^0VIH=CZH9$9^5"W?CGNJ0Y<%R^I(R-M5;9#,.B4;R8['I*P^0%-3("7H( +M2-#V.4!`(<0=EP,>0S*H?-O[N6'JE`,U`V\<<;=F6L4RZW#1$[,1Z5/-28A? +M0/ATG:"NW/_TZ('?]7E=9D`5WR`OZN4>7-%DR,5[;$^A,E7QE#[U]F*VZR_H +M*XX<X1!K_*LESD2GZ2>#+B;Z9*0M(\<#->VZV)%.6&`@!."\7,,/[8,WDDMU +M2*@5[=A":;?D^<$^*U.UN^B%7M*2^A@`.N)^7"-?@!V9$W$_4[\R"WJ*,Z-$ +M8=9[;;447S.)EED+*4FGT[<U^,V+(J&MAE*0+=7Y!90Y%U\]'JH!^VLMYL0/ +M$@W#!E*A@&A$0[:<8WR8Q%1:OEENQ=.01-<IQD\P`+]0>045[*=AI%;U(1L8 +M\[-R4%15\D,""]:=;;OVAJK.TY\J8A)G&J<JH:2H%!?=XE!+`P0*``````#A +M@&9!````````````````!0`<`&9I;&4P550)``,6MYA0=SN\4'5X"P`!!/4! +M```$%````%!+`P0*``````"\>V9!ZECJ?1<````7````"``<`&)U:6QD+G-H +M550)``-CKIA0=SN\4'5X"P`!!/4!```$%````",A+V)I;B]S:`IE8VAO(")T +M97-T+B(*4$L!`AX#"@``````X8!F00````````````````4`&``````````` +M`*2!`````&9I;&4P550%``,6MYA0=7@+``$$]0$```04````4$L!`AX#"@`` +M````O'MF0>I8ZGT7````%P````@`&````````0```.V!/P```&)U:6QD+G-H +M550%``-CKIA0=7@+``$$]0$```04````4$L%!@`````"``(`F0```)@````D +E`%1H:7,@:7,@82!S86UP;&4@9FEL92!F;W(@:7-S=64@,C4W+@`` +` +end 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 new file mode 100644 index 0000000..a6c3b3c --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_aa.uu @@ -0,0 +1,892 @@ +begin 644 - +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?/ +M=?2F]"MN3:#=GV@Z\544CH$\)LC?;2Q(=58*Z.YM0BJBE7.WJAG_T;]:G>5Z +MF=E%3:9D!V5_BCOB__PLW,UT8MG.V$Q7KSZ2#K<#EP<%P9+`YQ-//JS/OG8% +MGF:=0?4;"T5`E9>J+-,;+NI2K6-O?[L^U3B+E^I-B0X8-!>K)^47].FJY*=Q +M10]!>FJ?S0;Z^B\I%7:4@H;0AA7'(3P&:[\JU(8)'5$62(J&$W\)QVW45M^2 +M9P3SADC_"!&+;L,CD'5DHA4.Y/8103RTR=4"1_^^"?<=_K`2[*UD!5]5ELOO +MD904KH(C.D_I,E_*W4G%?:"JL3FS&'X'!M8\]_4N^GIF="5&V)>M,/_6NL?& +MG-!'+L%_B<.$R[@F\:]E.SEGZX8JG*P!=:4?BQID^?>^$K):ZA*;%AT&QG4H +M87NK!"V.H]QRL!*Z75P*H=QH@.`K!%U)98?$)B5/#'Q"G2?IK:SG--F<>%0P +M/&L'[WB2!U7<*?4L4NOOUTT.SR!`I\R[_P1F=02HR>'QX8'^2HV&5JV`]-KQ +MI+1)$DI5RKBB(D_C'\_+]51?<,M@<U\*\L]@L[]`=#.M#,+%,BH#,N)&C\TG +MBP24KPRSFNFC,6/_CDNEALG,#"')+--^G]1[XDO;ZELQA\DZSZ%>,F]PE+VS +M]2/>+LTL^)KUF2N[8ZO?.RN>$#S?0H]0YSYGBDJB]E^_&DDB:%;!B8J8GW*J +MO9*/%:M1X$FFP^&O`[RU:XM%UY]0#EF9\,:3">!<)ETSY)F5GC:.-&AY:MMY +M?U9WS&?(9@3"\/]9=PU??)T!9PR=N(\&#=,WX8AKH;:/SKE13]KR`RMXSC6_ +M^IXE6RJ:_VX+-U:3J`1R_HK<>S2[KP=XHKKNY&^5,X`_EJ,Q%SP[P=:;DP!V +M0!/%2"66A!1(2(+-#&]E)ZM83H-(N9*;>3I['T&=*&8?"1L$%$;3I6]YGM7D +MA@WYC]Y1YC(KRNJ.,K9ISE/<O.)@Z+$V`.#O..J8F./E.BW0_9$#9T*HA1QS +MLRARA6.@6Z@!0*X?.1ESZ^LUOF_<,T5MAY.3:K)5'C,]C]"@++T*`^=P"2@! +M*:Z*J@L>HX0L[5W!@N8&,/@KJA3[(SRV0;9*#>[IC8&(O\6E?P5CO+^4Q.EB +M@5_+,2,=*PW'V6\5:'`GU$42X'+ML^24T+V!U"[7`*WU5Q]A$I;.G*JG3N>M +M(\%C1N33':_HHW*]Y@\[G\VP2BSYTEQL1<V7]WFOPBXQ>Z8P$U<D,D6U^J3. +M1W7Q%&G3SQS>-TE)M#',SS=QF:;,%!X>FAS*\$LTE:N;-E6JH>UCSZ1^<I2Q +M3Y3TY=F#.\B:[>*'21$RTA7<71W\*'6M7UH/$P-#82?]^*:&%&S?D\9SP=W8 +M=U"D#*O8TJ'PI?QPA5Y[1`3&LES]V4]=\A6GM]#HQ+($<>?RFPOA_\/#^3H) +M9M3;PAY%/JU7%9Y??]05JHLVQ:NH:N_*K(KT^-\AHXKO`8\.G#76!Y?X:87E +MA&>X_XI=4RLM_#NXEY+K_W!;ZRW]"9D4GN7+!"*$"@E$<<BYHGB'%53&ZW:P +MB)QLH'#\\?"J/&7EZ""W^Q?'7GB&>G,@,C`8B[OV4TA+G:`EC40T>@O<J4M* +M5`UR#5,6J>"IY@;Y\2/JDD=V1M![(CNP(_,E2-0U^CX,9BJE=-CP^H-4\+4& +MD]^J`VAH[`_"EO\Y>#/O3GZ<`Z:6=C5[_!MCXBCD:8T=_894T$+.WU<CK?UM +MA%=T/V5I2[*!O@]CJ<CUIX%_%/B,E5EVGH%M,902)1M[4EB,KFZU,-]Q_<8; +M4QF#1XJ?UMG7EEY9=*J56*3Q?MA^0"<=JOS<+>/1Y`8*W?RV7BIE:8CE&#G* +MKAR=I-M!\(2SH1`)U-_43!QP@2?TY36!`,FTEU"+G+UR\DX'0Z_/'SUZY'L\ +M<0WB\\&R.5`B`PTC#+4,\88"E0R2=P3'KS7/-:4F*.?&)JJ,1Z$$E`D\_G]: +MV`NESW?*QT"[,@OLIS&%#DX>O6[@;#9Z`ZT%+:?63G07XHA.O=(S8L_LA_@> +M\]+1T#1TE;]'*1$!&)GM0DS/_Q)^T>D@@/DD!>X+:`L4GV%@V((T>B"H_:6L +M;'9EB0&Z^8*/S-%;`K&EHFW1R0IJ1>OW_*'\4"G9B!S)($G=ZU?\%S<W4N,` +MGQB#(T_]#N+$X^NZV>A7*9M^EL80./SNR$4)E*K:0!TT,*59F65;WNQYN<Y< +M;;3V((WZ0C.URJF0QW`Q$V)<OAHY."Q3P4DYB(!&4TTQICRP&X7BW(S:`;:^ +M==YP.B55>2Q.Z,L"-H?=(U3A>/=1R/<QBC?5G`%DM;/:1M#NAC:^3`_XSUZ' +M!3<AV[;?]1;)/E$Y+$TE,?(ATA6UQ=@-H-0`SSW7+GK(W+@^L]9;!]?G#AA= +ML"_K[S@4`A+61<:P.6.!7_^">Y!KMGFG!/%DY8V50XA+>J82,Z"D#JFC<O4G +M[DR?9ZV]+$!S#@@'X'X+*X##JZ-Z";W_L?P\V\R-RSW6L]/*(RMRN\&QEN&A +MN&):R08^=UC>D'!XZBB48\M\!4L<-&XPOV&.MBD.".V.?&$P1P4SEWX]XVYY +M/DM9NEM8RJBP@JX`MF#PDC*4T$Z1ZZ%(V_XY#NX1+B8%\ZL>P(`W9GWOQR7: +M<P>+8<3CD!K`P6["#A8H,+&2R38"$I3JG>X/>XN:(7?G\R3GA;7`/=)[X,@S +MH"RE$#HVN0_>N!D3^9IE^DGBJ9V+YJM@YIK6_%4=OUV8U!^^(JX8"/)T`5%& +MTDD1HCVQQU=MDJ7]J/"5:Z4Q!0D@T'X=<[2(L_>PSMH*)HHVI-L$?3^",O.& +MT)16KLM`NPY``"J9YM+&Y^@'!?(+IPXR-`84ADYF:`&7!(*#<N_3PGJ6<%?/ +M-A%LX/%AK+U-<YFO/":;_%<[(B>Q@Z]BBE@.1:A^OSG:9$M^[];\N@Q3(X+W +MLW3&;=A2([8<"3P>I95^!<V2M(XY&#N="M&P<?L[]43+"\[0V7SS&V`X9ZZO +MAGM-R[ZO\.J=_/&P;L_6JUU[FJ[6Y91`O)BW>NIMJE^YJ5&S6(J`/T!2S-,' +MD6)@'GHT\L_2HV$04ZU\SOE')DN?AS<N<%?FOK%#"D8B:.XO*UYL5B@<SAUE +MSY-[?]3[NT'F3)`[PB]@&KC?P'F0<8])0YXL<A@SYIB^=/_\I08;!$]]%-34 +M+IIC@_(]!S-&$\]>L1NN^^7:V<[)Y\I*EYV;0WS5FYD3!6KRFYFE5CFI??*J +M-\ZJE,,<%,A9'!"O8)6/WUW=W@R<[=$$<1D1#G@4N:YEA(!4?2'_\H4)K'I` +MKQX_T=8OD1V$QU'F.652T;$^E!V!\%GRF>6J@J%#FTW+I/CY_;U,E7%R<ABE +MD3B?GJ9\TJ@NS,U$?&/F^O-4CA9Z?K'9LSR@7GU6@7+N#$;5!>2F"W:/F]OY +MT`W/7T#4Z=_;LS/5@2B`\A(2,WZSA?974DF3$<^RA?!ACA!^T/=BR4X+!8F3 +M^V075'/DF0UX9\E0<E[UQY$)B\VE5R>VY<AW#/F$!,4(S>NLUQJ.-$%SA9?S +M?8%ZQ#'_7KP%^D[YB#`YBS9'R<X#!?\5SY9_`&[I@4>-1]I1"2N1X`F!NO\Y +M<SN`0;M1PE!-V2!<9JH^BI(,*6855]I^E^'ON':]E-ZM\G5ND97B\O3M]@GK +MUF+N3V+"`,AI&ID;-7L01G72&'B+MI83B.X']V?J@D%X+^>U2FW]K[:,QOI# +M>G6&B3`V%ZV1>]#E':8;?F6OG8V^TQV;15_5-.W1-`CK,=C))^_Q_AF]F.H1 +MSAN"WK^*@1VTQ-&^[`74F:5-]?1;2U:NB`W][#)$@S:G:#QRQ9<)?V;4ZD7! +M-M(9_<.&X+E3&KHS/ZT,"@J!4[HEGW.#\NPS=&7V&Z>>=?0"-TW"#E7/V3CW +M_*1@*VI;B@^?21EF6?.^)_UN@CL82I]HIT<;:R<>@2+;+#RMMY6I*/U]FZGQ +MINO=(L/3*#_E5U3,F\8F_^)ZI`^%#0TR`*7(=M'GAH1Z&W%%SMK%$S(`QE,* +M^6?.6MVVEA^H`Y>:`Z^<*,$Q<"02QX)QTZ;O9%YPH;K('*2`L;>F?<U][KK[ +M_LDU==^:9;!=T[U##OJ<;%K/X!;RF+^#]'>*ZC0C^Z=G4^9(Z)%V9Q"G7_SY +M3!5I`B]/7H@7U]O`LQK!E,?3E$805$)KX47&Q-WX3RB7XV?S87X*S5;_:NQM +M5*7B3"56.2*M9KX!S[ZZR'YP-%++:"-V8:N'\Y%8HAP+$#WA*[C(+H9/)APU +M4E2Z:^Y:R%Z^]Z3`7?QMK@75!*C8YQ^2P+0'?Q"<PB^)T<#W,^;KQ7<((7-F +M#<[,YQ5^:&DZ+0>%Y#R%#PY?T$G""_TAOMOQHP89`J)7F\@W+<_BQ/#K!1_L +MAG]AD:E2F-"8]9EGWWO2_;$9R'?7$LL^Y]2H60AX..N<X_\;D4!825)@D0T+ +M9+,;XB)INQ)>#3IS1:;`LGOI![!L;C&Y)[`!-[XN#[5[/KF@*1866&"ZCC\[ +M#$*J]$%)"`#2V0FJ(>E2E8+H%]-05<!.)RMY,#/O<)55?%/A6R4=\I7%,U]W +MV<C2%QY'>@+:Q</./5+W5M-QM'6DOF`O")$(Q:P>0^"T&".^`;FHY$`!9IT1 +M:&R$ENRQ2$>1%A#&*R\466G@[JE7IH$`0$QBN#^#<^>3*/4@&>V59O$BH3JP +MKT62;#2"-^$8UR_#`H_[QL4]`XF&>SR3?@@3BX<*_J<O)#:#,<&^5I1<`[^" +M9RYXXO2F9TA>GC<'%5I0!UKZF<O)]E6D,O$,\T!98G_1&_"*WR)R0YS`J%M3 +M!;I+T3_=/=;0*9TU^M^R#/\8HYA#QQZ]PH2-G9X(-X#0)?OS=S<CN*K1\P7M +M?Z&#S3XJO9\FVU8N0-,2.)N!>7<7PSKFV!,]9X0=>Q\YS"+>G+V;#>"-"%-) +M1:#D=1.TV56\L3$1T/BORY6(_1U4=%8([W3PHIR[N'6+5L.G:NJ`W=78>FS+ +MG)>MXH:?N@U`&MJQ/P!F)D8/IFOA`*`51"H5&SFB:@@E2%,G)!O<[(BW%`Z+ +MFD5DG@I*@0]`X%3[Q1SH?1"=E.^ICW38DTXRZ7,1T=&6/("@U*2!7J)J.,00 +MT&7*=+9DO<0Z3W$.49(DMD':OZV[$'2VB+GR@7\@71JU(9?8F*!<3)&)*)@) +M8"[%UCD/\7O>/4EKE,440IR!+_<QW\]/\!OGUH\#270`&R;7R^DS)^J436Y3 +MH&8M8#JZ03TY^R^-_#,;_,JXK/<AP\I8_PT)6L[F@H7U^Y\='YL41J4E2V4W +M*`N1FKMFBUK\_1),UALZ69ZJC$&AH=U+;*/!$`6Z=%3!P(.%N"V9V<0H6S+D +M6$T':8G[D'=-R3-]V5HNW">!)AH")KL8J\Y1[0_LR4`I@JMCEH'M%T)8'[3: +M.7`6S#1:?%1#*>54`%8Z2P4#]S%B&_V61"Y,)("&PB4(`.?[C%?-J(?!-P_V +MKA:8H"G!Q2H].,.F'`T0J5+ZRVZ85AWI*N1B`8XOP7B<'#.;CJ*`G$9</1ZJ +M)QI`S(3ORO=STSW+'H(6S(+/[D+M_E2K>U%=O3/OVUF-OYYO3*G0K<[Y"%JX +M!X'#3S>P91<8Y-M-Z(0"Q_5-057,XS7*28Y')2*J7JJ_YD_SM7L@9-%NE)FN +M69TZ[;P-E8#\Y4AARJI`$6'](`O\MU7WIY<+CZ"*D/S-9[.=><+5K5G@WN"` +MB8:KHE*C_Q;\H_)G++W<[U"$K08NWP\U=SCFS"-;X;)SD4^*G#,CA('):_*S +M3*`"[MN"U\78A]Y^<=^7K^$FRTG\'<E0OS@)U9B5,)(*`#UJS!=>>_SJCL9T +M$M"4ZUH<ZET&T4YUCI<":LM9^PI2P&?IL#CN3J1(_'50[,,'CFJ=%UUUG91S +M`<;0WFW^2.VIV!>J/0EA^[PFK7Q;A(]-XN"OH#6$UD_>SG[@H><$6=?N#&-( +M8U!+]F`_72)=<[]`.?T[V@.OXQSLP$L<;_U]<"S%67%`?#N/XP24IE*&:FY/ +M/]><-A.`]LU1CP7C['B^B/\F5@IV24JC-_9TC0V_8E&&P13B^PZ`,.60P+_0 +MYN4)5L%`9^^!G[/#2>670#$FI9ZWD$^H[Q4T5X8!>3*5O-JJJ-@U7'!G(I[[ +M1".^J"/]&L'`?EZ/V4Y=41%=ZW]WF@%YSJW-2(I?"GK[)$+7C@I[D?FE2XJV +M#'61D;M2X2V.KG4IM.HTA(%3TZE:I-U)?SC>R.CBE3.!;1CDHOWK-,3R+('J +M;Q9TK_=H>)E9'<B:M/=\4;+J,'BS==1^THRUH'ZTF*IJ1VOTOC+04"JE(-JZ +M4]6;/*#]H&9"/4>=DFIO'7<4DPL-C"JG2$'P$^SO*'",7=;Z4M--IOR+8L77 +MKFY%V);CG'\H4(:WG65D!7T1\L&YJ[;J\Z!!]!>_8L@4\_+%1F)!]--)`88$ +M?&?TR&;0;@%<8[JA=KB)Z^:U5^;UT#O:.WTN^*GWC)M);IF@=[&ANVG)0HN6 +MWI6)5XC5T#-U5/%BTU]+&LQ%-ZL#+31#NZ,W6^VLT+E"2XDPCM]2D<?5&+[3 +M@6/5RL,-&;0`)F%)/A1@K4U4GM2+5C@0Y5?]BM'[>?N.6=O3=E'0I3B+-)_8 +M8N2D[;@(>GVU8<>K^H:>-3)/469((HJ<;6CJ=KK2X!'!\58]OVRT\[1DV%U] +M]+;#PU7;O9`@&L;N0[U2Y@W2A-BOF`(<C9.6NYM&'M;X7#[UJ+]E0ET5TQ9# +MEDF57BVN!P=M:V)<TD^?T4#%]88AY,2CX%@P2IES%8$J8$*D#N$(/Y*68U!) +M33/TU[OA]P6(2#82R$,DHWW:?6^>W&&K0H,S2"5<>AR;@*^<,<SQ8D[ZT[`, +M35A@*<404K]07/%05ZX:C5&D2PD@DGF)G\36APOYVY/G+(VG=0\NW0W'XB(O +MC!+M/U+^LIWG,D!MC]MNAC9#N1!RN7S>IOOFQ!U'L7^$Z\_D.?L;QY3J$>,W +MN$Q\]NFT?*;NZG_M#+:\_QZ[S7@V;?[0&J6__G*)]4W)`\_0^XZ/R3:#K@K6 +M:\'O[:!@B5S11B6L!7`+;.HUC9J$NGM(-^_$H//_Q^>`S:\O3"18!4__4F7R +MH')EA?'O33NS:7&?NTW9`?JJ6LS?_X^IPYJ!Z-0=WP[O,1K_W1`?[$7WE-XB +M.2OL-@GHY[[M]81'*WAM.[/'#)RHM!IZQG]$)PR][O1P[*4$8GX.\RJC^Y!) +M@8_V`(]5%ZF?!0$W5GHLA@ED:VDN?@V[C,*97#R42-NTMYJN?T'&^9*DHBGS +MW7<>Q=B%,(O&;%V222=;"N<4?;@TEI_N7=;L5%TK7H#G%&V$0W![+EJ#/];- +MJ5_:YB?0ER`ESRD3-"*;?]I8P?4?,0/%B;.-+Q*NFZZJ,3HU)%7["@!H"059 +MC#IY""-+"[C-/08(4I>EA*`;@(<$$<LP4B$B:E]?#U,P8XQN.MFCYG.&D$7\ +MXY4,^UV\E'`;)6U?KUHPW>AKE?.DQ,&/UQ0/K.V5HX5`<U0\Y,>-"?VMV*WQ +MP$G>?H1+KU,LQ3-+`GS.=>!$H2PGKS.OOBUK-<9'X/"]'FR$S]Q4S@]C"MUX +M84HP;6F6I$9PY<5N.A]:,3AT2Z:7X!.LW"SGLX&1WZ^6:U5`^%VJ*"HJ)2Q> +MR<@`'/+UQN+QY`D;S.@[Q97M"YI^`V2LX019:A-4J-C<8;Q+2=O_VI+4_CYU +M$P$T]ASI5Z2NP1\(W4NS*/O8Q1Y6/EUN*]U($#<#']T?-7OZBK:C5*8$#\.\ +M`.?4B6B?0H.VGOEB?`0L$[CWO0RV;PQG[]YO4([OS^KUC!*VS;,:7,B@%/B- +ML,D]E.)F'Q)BX=J>QGX66+-A(<C-Z+=,EJL.U1MY(6)_+B[5A8OL]=B"1[;K +M?$FFI>[-<4XT!"502XQSFA0'$.ZXX!39$L*F)I?UU_TX"L.M-<1SPH)CSO_O +MA8MW[+D&\>VQP,&#GUYN7_]:`O*R:X7CX8Z!!BVU2QBP<531RE'BN,(?(.K$ +M_/1ZJ6?\ZWC_%H<QACE?M-%ZHRLSEJRJI8)]$4(TH78FPT75%%"ANY]5S<?Y +MLW2!]S$0VDZ:0U!F<[*W9M/I^WGV7>$EZBK^[><0D/]$7S^D?T.:$(4@*$_V +MZ(`````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M`````````````8``````````````````*$OPP`Q?VO4_^?______________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_______________^@$?\B__K'_I_________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_________________________________________________________Z!' +M_(O_ZQ_Z?___________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M______________________________________^@3`'1%0R-%\6=F]S/A7.S +M5W8"T;9`[O=G2*&IP\3W2`(833>H2:8/`,[&-M/&Y!GWK4@<D`9+\//#CQL> +M,-D75WT2#SF<NKJ[NKJZ\=Y\2K^$7ZOU>#E*Z5VOR5^KBL`````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M`````````````````````````````````````````````````````````>K] +M7T\[_GZN?T/^/I_GT/4O.Q?SYW0Y_K]^YZGQ].4NQT.+`?0]2.AT80FY^38M +MC-UH&0]R&?>\/3Z/1^X4ZT^!N4Z4:9*:-$CN+!,AN>Z5('3INPWS_NJT>I`Q +MEA^_#-(OO7'F?`N31Z78C35VD7F4.&08ONMK<K,XNF:$WBM;".&=[T]&V&"+ +MHMZFYM^;8]6OP!<[^SJR::G]H/>'Z/IW^>?SOHYT6)%!7H['=ZO6]0\WN9L] +M'/S_R?R[&QY8,@B&!L_<S]^Z!]KT^S9^^)7_45@*%XUQ%IGP%SI<JO_+HTSA +MK.^-7&#H&1QK!T103:=;'QM&!),SC#L_^#BK9N4>=C>&?P",_X=^*>'IUO9+ +M!I_[\_Z8<@.GXJ4\>CJ)&GB\`A!8TU=.$"I:?N=I]G]/<]'-T^M!=`D`XCE8 +M!JN7'E&K`DR"8\?V]-7J,5K7UQ5'<+]FEU.;$!Z4&1SM88*"?3W?+[\X)U>A +MH^#]#>$#56&'M?;J>.KMZ57@N-):N7[XVZ;1QQ<R.J,\\K<T?V3-+IV9F2ID +M%`^=9XI"-3S7ABS_W'76*#17KC%$0TXP9KM^:/V0D#GFZ==1]M/7]U\WN=O2 +MT?!IRSBNZZQ`T]<;(-ZD!*EM2._7]532>;]1WA815)8\@RDMF"/+!(/T>IU? +MWK4OKS=:NG&%]=]*GRD($O%=%K]D%*E2C([A*)0WS=*OR3)?UZJ?1?%ZO+K] +MD&B@AY_W88M'73TMN!`>QOM7_-,4)_7>&W]L&3[?T^O_CYNE>^5_+W/_:R>8 +M&Z.WI9_@C:M]"Y\/W4G'3^Z+?@@J68M.)BZ/`ETX[^-^Z"[SJSX,)F&O/0HZ +M0PV66N,;O7>B\5ZX_>#AUFU*WVI\?&E]W:O[6[?0GQJ>MOWGAI^V)\"68D>& +M2/QE?L_#D"*?D5ZV<\L]1++_QO/P@DUZM6?[Q$%DXZ$[R\N0FZ([,@15!+0L +M!<DHSC:%-"WXR%15ER%+$0ZZ!+VH4G8^B:73-PSW'='!LF[Y/BW)TRMC0]&+ +M;<I1*R%D@F9[$<&YM;KDU:,ZJS$4_E5*9RYL`JD=\TW/W$\^KX*>=9%K?M7= +MA:Y<X]W!\(2BS*:S1PCN[,N<*@?FT6[OI=OCV^+(,/N+%"]'I\E_<GF\_._I +MG<Z,>U^7TJN7R`O'VY%71U(S)-WO;4&+1*YXM.65%X90P;)CC4=H$29N95RL +MRS#O),+>/5R.$9X*^/#N=GV$-TE:7,^."D3YWR48+\6.9(7^'M%":>`)GZ4R +M:N*>"^03M8ZJ74[FGT3>#<BX[:/LT,<7C@4]L]'M_+^KT3X<J6M4)W/KVTWX +M(9K-$YOJ?;V-B,:[T;G%B\1F3:W<80SKI&;05[*ROS;=5@PV/?J(+B8*F\TX +MK]L3+,(YWE6$BVBMDU6^8Y8:4E(B*D+?.4JM7&,"_YG)9?GV-6;DFPXHT_4@ +M^1L,HF2U=6C07JIF_2LS>9D960OE@UX%O&6._ZNJYLCB!,W-B\[)W7['!:PB +M\'XY%V/XRP=KA./R6^X<`T;BS9D,V"+I;FS-Y?XJ$K73X^QY*R2."*'P;UJO +M7E$H&N\X@/C%[1L5_;U7SR]WCO/9):4Y?(EI+>S$%V\]''EIWE6,$>6(O@+3 +ME[G#\?");LM@E?-3?CP*;D*S(U:ON4N?E<%T8)JF54U2VJU7FD,O@Z>QJR-2 +MZ]$'[.JA1.GM]KK]*3WMIN@Q8]9=O^N=OZ0OF$'83HEE&QW&8=Q9SC&7(HZ! +MT\56]-ARZ0CWLE=RG0:U[2V)E.'_K,KXFGKD,JPH2W)[CP\?_D'<+S8C_%+] +MEF32B&FU2Y,@:1B;SG3MZD%#;'BC"9%TM*_796%NG31&MW62'&8VV7G2&W*2 +M8_"I^'X>SX96^#80^^+?/@?3A_FU&%BKB"A6'M_R+O`W;3UFK8'X@2EPRF"B +MB.C*H#7`0[(C!G>Y?E@TZ^!XL9IZ9E*Z5Q"L),WOXAO=#HS/?P^GS03$?ROO +MBVREKR,\I>K(/.)^J/,R(!][,<Q;[LTFV9:0&O1ZO<2!,B<'DJ?R/P9VWZ*. +MU64VJ96?9T+E\S?2%'UY7OGE(*7EV*#=21E*WPC<F-+@GP>]7T6A38[L;5*M +MPVE56+MFK`W=K>U(0(/$!VRF)'4[YX]$*QA:#)'L^(WZY)E"Q)1K^B:IO3ZK +MA@.6<M),BQ6/?BE!QZ6"Z/%R5>L6=`"_YLZ(0Y&3%,0_)L67=S;-O4#B,0'6 +M</Z/`VI?C^9G6[0Y?SG[6"A0&?3J!7.B\H/FZ67V.S<IP->)R[=^,ZP/SWX0 +M@&.8'L81\%H:KS8?+YM;=WC9+O^/@B!''YT.F5OPU\[;]SX+9M#%'>I]%&&W +MG1`U:.-"-[8';;(*FK?I\/<X*59DR5NY:1'&'TY&0\V!,&S3I)'D:Q-U\&WC +M3W'[P*#Q(OR'-['5&/]\@8V'?D9WJU*P_=7HI`*6@&5+-T(44UMC4U<4/)"I +M%-#3F9U*_/5LT;,<N.&Z>LS.-T9XCHO61;2M@$\`6CG'QY4.\P!GUA3?ITK0 +MCW<&SL8L,37TB/+XZ90SU^_0EB>ZOK]_1MDA*F4]:`/,ZQR;5C2@1O+<G\^* +MZ1W*V[/N?`\E2"]_-@X!]J.Y*SB1CZ&.`>7Q/$52F4OGN\/,_'+"G,R[7/2I +ML$FBRTX>+,"R`D5>')8'I&,]:7?]56WD.)^0#G"0U,68W%CE(W]/6PQ0MZ). +MEB[;?2AL.OC$%1A/+!#J/''Z<ZZ]?(K=1,OS()I6=0`3AG7:X$R_Y!.6K=4& +M9;*[^/."%SG(VXW#*(W_/!H9[<TMZ0!LZ!-R_*:,4W6H;5H*E;YSKW%&TGB* +MG13UDRA5D%6:5<V[KE("RAFR4Z$^.<>]?K%@_&YC/\*V^;9#_'SSHD]N\V0$ +MIHKP^J$Y6AY=(?^EEA[BZV[/+6@$A"3V*>`XXEYGQI+%"%?@DKWC,5,9XRBG +M(DCB3:DC7,O:X1##E0=;8G*N,KDE4="68,2VHU`0SLDRPH(H$Y%RN%;TG->M +M7CEJU'K(37^^OJ7O,S+C%JL8X<2NN"?]\NON0;:O0Y^=/?!#'GEP9VO@VX(# +MO7]M?X]1HA445@;>0V`BP8$E=-_:ZTAPQIY[9A\I2Q_=L9@>&,5(2KFQQ\4* +M*J.*B+AW*?*`5[E.3JD;5XL%UE<[5R+HJ*^O*J4MBU*7)5S4_#J\_&(UO +MF-HZ@43FIH#,4-FD4T6"!9<<XI(G0XN,C\WF;_G<B2X>O"/P;L9Y0\$;5>\< +M;Q]KP2?\5:<AT:M&XM^9=H+[@PN:.A5I$\;TCY:J>G'1*;2JR2L'T?#/L4Z- +MGC21?PUWK.CGG+[7ZT8.C)'8_7G=L6D8=%L9<$O#1RM>'TQU#I3K..2U.S!< +MG1N#^&'R6-J&&N<DO'G_3_2(D<ZY/C_T00'(7ABLG?WV>&RG5WZN95X/S(V[ +M2D03%@"S:CD[T],"*J\LOZQ]K+%H3[(9Y<^Z0#>U9D`\NU<C)!W!U=EYKQNS +MY+K5E>,NSZ?:N?X/3?QI*:J(L6>($A+QV[!$AQ8)46R\6"NEJ5\U?;TP3K0" +MU=5=I'H=;4U\[\8:5_?#VZO-2-P(!N,YCV/$&*U=*H256[0JSR89H)LY4XPT +M5TM\KS6<!4R!=V2J]K>3+<@_!J;63WE0P!Z//K2TON'^XDKUL3+<UY4(6X4F +MWI?;MQ8]<=CERY9<C'CVMW9V]BC48CDC`[;P";^WLX-?2TNS5EM_6L([H>KA +MDX)KB4#CP3?2";-\^G*COB>2.&;FO5]JT=/^7\KM#RYKM7V_K5^E%>[Z/*X. +MTR*_CYZ_0DJ@8/1(I2Q7S@SD>/^WD&=5=70Y2B]C4!5^7+IL)S&C;)5@>\6# +M5ET-3EI4?=W.`GG8I@F2(!!$:V,5]4?O:'3\5?+%^M66W]%&>O!"[MZMB$/D +MRR?VZ4"2L?S$[1D#@=M95,6MKTC\C&%[XM+Y[N">&]*BY9?3`;8O;M<C')U[ +M2%;3I['8N2K'P3R;-'NQ+5S?'/"^0S&[O?[4:R9Z5U\:Y8N;7E+:6URS*G): +M`\"O'TYS3L[%W@XGY5PAGX(S<+-D5242(29Y"1&(,#K:R>>-B?KQDWU&&LKY +MO*7BN&Z)?.1LJ9O&\SL.%4K;C4F@!9NMF:=/8UM.OVN_[WZR2-K._^\9OGE/ +M8Z4/D)G&82NF::OD)F;4KU#B?LB_ON7)G*2`48/P@BRROKP^*$_2R0G^YH=[ +ML9>R6.]N[.33"H=?,_CT.?FQ98>3V_Y09`[MO>)F+Y9DU7KK_H\=2!=E-_<K +M,96&*94CHL,8:]C(\O&+<ZKM5UUUX52A[TNYO/#WJ=&;>'L[\&W'RYVML>6W +M2B5XVTKCM8$=QWDW7T)C=H/2`M>F>1Z.EFT89XYM6]Y`.74[6+UO9V-#+L2* +MRG?O$G&H]`_8.C5?AT",*;PS'GFM70XN>WV4Q427^(`*\<MHT\Z,Q>/X#CB^ +M$(`_Z;QM?B78W;%ULSQ]SP7'831UC7'T-)1'M@\&T\A	:U"^,-";S5OB:6 +MG$,M^1P8+(5[>J-K6.5*L'$0+)C=0HM;#!4F--U/NZDV&E#R0UWL[7NQTR?( +MK-5,,P+(U-G9HX8/FZ7$?96E_ZGDBWBI,:/#Y=^S<V9<3M.,W0C[WO8KMU4& +MCWKR[\3C:I4`$Q>;#LY:>^CB6&-NY)Y7X[_!HZ6Z,D&]`WT!%WRJ<9];OD]9 +MY>24+=]B3T1H[A.%^F.1/,DM#4>!\9]0K>"FYBN[!+*PDPZ'TMGH"-NLKU?X +MK&8!'XW9[RE.P5>/,E6Z?%N:LC`<1CX,4F<@B!KO78!YO$IQ`''Q7JO"IX\? +MBBR#]:TMSQ5EE<!YG2)LEROSGY*X[29)>G7D[+^G+:=BG2QFL>/B<S<5@J>O +M-QZJZ$.H`J_PPEC.-JXBK7]T=G#'\]ON_/CN":U"TF8LK:^LVXWN3E`F6;_# +MF@\C#/D]9LWKT#%HA\3BFCW4MIP#\!5<]$0Y$=*]?;JE'.^>7#5O5WUX9)44 +M:))UM76AT?_M<RXWJ8_@$J;H5DWIY9+6/\.[CW'_"CV+'_!9F\->55^=35MH +M8SBP1JTK'D6Y=#^?WQI>=*9C8FR=6JV)]+T%<P$RL@+#$!4A&2N\XMG.$]X5 +MWW8@^?H^XGGP2NK_;F<CX2^K9WA-F_Q\NW]5Z,S9=XP^^[;VM;-DM2SI++-- +M@@H`YNC!!SIW3#V[$/V?AT*=A:S^4#Q6O@YL<JZ6_-@X-O>__'6]A[DT)F]% +MM.9/8%$580S)=?9\16F`[F7>"]22&A^BE$`:%]89YK8LMX4\?*>YWLG)25RK +M*.K)901`V]&IJZOJ1J_6GW!LR>I^"`[07J:]@%V?5BQJ?SP/;WQ=6$)VG)G> +M,CD;"*2<J(OB#^)R.WIXC(N(!_+=$3KI$_"Y&<J\Q5+(W(X7)#A#<,6H'VJ; +MKZ/GF5"]\B[PZ519S;'6/<B@:0U3MEPP#*([L$OP@S9Q)Y5(EF?%RYY]=K^; +MI?UI"%T1]XXF5Y=++=$@N5HJRB67K$WBSO1:YU"=/B)_"P(1.ZQS8DE]0DN; +M6W9D1UHME*X8]ZG;,6*0/A>]BO';UTABY)#56A_?JZ>CVO<+0[/9T^Y#1S1\ +M'1BO@_7G[F+:SX]=K^LYM7V:F+!8@8V<W^7&F.UH?9[;T]#I]GH_9V^WV?K[ +M?:JWVNG*II\HB[\V"?8B%?71EDI077`I7TEG97?N-OC&L&=]$:UV8J4WMD;( +MG*L>WCQE9ON?5'U;4?[#8J%5Z%VJ6=4&'1J4HO;()4E6Z9]B#F&EOGA"Y<PY +M*_*Y79QUJ;7V+-FU!#KXE;:WU0`4;/;VD-!)[L=-D_3GC"?6D\X)5M6:Y*X< +M+KE2V3DFFO3[FCV[FFU<S"T-"?$!73TNQH=WJ]2@<ZW6JC("$K@L-Q6=P:XO +M-'M].TQ7R2^>]OY\)@Z$KQ<F"?P,&1XO_]!@N#:?_*]D'H2`OY#VK'@4R'XJ +MDN0LMMUQ&C74I_A^@C+K*0V\9**QJR&W&__7VZ!2?F94BHMCHVR!.MC7O1[5 +MW+S;QE,%.9<KMA)@>P\]L>4<',^O+3P:'OZ[N0-$59`T+&V[RU6]6;[V-V/2 +M\DOQI9RJV8A[VJ&3N-FHO1'WX^C$`6&2L/DNQK)5_WUI\QDNC?X],*1X0H=% +MT;6[0R[0Y+&X>-&5*QYNCCJ;<WU-K2NWC1F.X@]:,YCDB05]\JK(1(:L@[&W +MC[JL_"F?*N,%&DA]2?=TI8T@^XL&149^2<BG8ZO3_OIPHZ+U8;S.]U.G'\"P +M7.1:A`^22;?A\MOV=_1[/4TX4F2Z,'0#H]KK_7D2HNGW?<#O=O3]D^SNZ'L7 +M1ZWNGU;G,OA\4?^F_&,[%R65$^*GIFY'M_*R<].=CZ+\,;W(;5BA1TK@[=_( +M'NI*(.[=7+D9VR)6IV=19U8C"[HU.<QN9J5WY`7=25AKC)GFUP))-IG;$2[8 +MHT.WMZTJA2P`<*UL='CJ2U>GQV.5<O#5O5V.?:V0/-?F(K#<J='3\"=W;==P +M'`"UX%SJO[17QI["I]`&>63LCPVSZ%<=8_&<$7YI5O82X$^Z<##T4I_X<RDS +MGB;#97B_Q;L7>S;/-5[M4JN)*<.,PUX=<@21*+8?\@!8`NJL$\VJOXQXJ9_D +M3.WKH>4UTR@[R57^/8HS5-09>'[^!EC_/B&H.[#.Q3A=.O\</0`=G(/&Y;(. +MQEQI7,/5U67I!H=R(LY]RA\K)THR__[3U$`````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M````````````````````````````````````````/_9+R/Z,7]KU/_G_____ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_________________________H!'_(O_ZQ_Z?_______________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M______^@1_R+_^L?^G__________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M________________________________________________H$?\B__K'_I_ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_____________________________Z!,C_A?VNV[3!\````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M`'50AS509H$MI%\/F/4^T]A]:GY61>W-$D=K*48D@J19KZ-UX@W5I(05CF6[ +M[(CXM-/'Q^C,.*&X3^7'/##8'_F>E+Z+.!7!K[5XEI)C,E`)2K9=PC^3W!*> +M/=^JWKV#J"(QKCPP6:'6E9)Y.J(:%'W-59W0K-G+@+-9/@"A""<GR:A@3A.P +M``````&33]-UZFL!1#TW+M"JKMBU)9S'')>&TDQUZZ*Z!(7K==%W;K&"$J@J +MALS;<TVQBKXTKA=#*Y(`#AJ#EY0$%.@;"IQD$11"'Q4>75>P>"E5\-;N4E/M +M0A%P9LKU*,B)FLB7(LC%+GP-Z^OAE/&,`'46Y6\TGV,SB'PST\;25YCUTI@) +M"8'KR<U<*PA&](,1GI'N)KIH!Z:3E+K)N7)USOZ@\H4M!\3:X)%\=LBS"ZCD +M6YK)Z[B6G^+C,A,>_&OC2FE?A7ZGV6/IWY1];IKK:><9*`-O+^*CC4T2?\3C +M_M'7BFGLD;Y)8-WV+?F70"PKR_K2?DS;!F2K#Q)U^)[$X!XV5*%UYZ=7A]'N +MJRJW(KWG&Y:)'M=LW^%%XYMC7J/SQ2BQFE=9%4H:KU#/U&Z)XW&/F1DY^*&? +MKF)^:[Y;RQ8402:`0</+!;+PW_N?@5X6Z@WL^!Y%BTC-P"<?H(!?I(^8GY=@ +MU`LHF7*Y!!E[`L+.<=TADK8>.G!SK912WR+3;6S1-%I+>%40ZT<0YQAHQO;* +M\@_]:\Z&\O@X6JRH!7L'0]=%F\#4G+=W3O;]?@ST(*H"J*!>=9,1I"NM^<5$ +M,?M3##_F0@61;>:`LF\VDL')];&<]T56:4]2!OY.9(`/*6V>1@]'8#"*GU77 +M;#NK:^GSZ[&-$_(<R@/Y!>WYR<(5I51ZVR&>0E=MYM$UWTOV5=5'&,C<D_>R +MBKOW;AR"NES,-/?Z>M505*><)/.8)UL,A0CY:<H^]$D[**0$0_2(N!BT$_:` +MT`\&+E2X30\#D6B2O/V[A#:UK_T]K+T?9MN%3A#[MG+;V8Z!'5BZILB@;Q<< +M<G0PH8//]LG4,QQU]++IPI1WOLX05%SZVV@W\S!H.OB)>\.+<F#/K-E7&WE< +M%YM>IC`GC%8_TJ5_HG*`HW#K&]2WB/L(8";`73ZE8Y;1D(J@(T,=])2H!$P7 +M0R:0/B15*(]<*@J1D[43+>O$MZ$A&')!G0?"`I/RWJEW*L#<#D!I$\V:\",/ +M[J!XYT&0)B+9L6#"$>!0#V`<HEBN,5<W;Q5\J8+=U%]8TT1M/@["X-7T<)Z> +M*;I#]B(J/TC[I-H4P\V$J3&_7VBB^Z,]'9,8PUO5QM2^Y5?P<O:T28Q10CUV +MAMOL7GAFL=;P#WD,GL[IQ!T3/%1LD@(`2+V7GY,VWYF;ED6]`)N81B9;<O0> +M1\:_.IO%T4N"#U2-1H8Z]$6"3B%^+CQZ7CM4]>!+A*F1!\CK@_PCBB3,5V$W +MFK@M_W+2%)';;*J7&Y01`W``3(_X7]KVPYX0A2`H3^W1```````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M``````````````%`2_#`#%_:]3_Y________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M__________________________________________________________Z` +M1_R+_^L?^G__________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M________________________________________H$S/],17/Z59'_P````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M````````(``````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +H```````````````````````````````````````````````````````` +` +end 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 new file mode 100644 index 0000000..4386978 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ab.uu @@ -0,0 +1,892 @@ +begin 644 - +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M````````````````````````````````<$P!D15,C1?%69OLS\57)BYD!8-L +M@<SF3A%#$X=3S"`(83#.(2:8/8&^1C;3VW(,_]1(')`&2^G73M[;'MADBXN? +M"0>];U=75W=75UUWO\E7H1>5Y71JE=*[7B5_'25@```````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M````````````````````````````````````````````````````'J_-]/._ +MY^KG]#_CZ?Y]#U+SL7\^=T.?Z_?N>I\?3E+L=#BP'T/4CH=&$)N?DV+8S=:! +MD/<AGWO#T^CT?N%.M/@;E.E&F2FC1([BP3(;GNE2!TZ;L-\_[JM'J0,98?OP +MS2+[UQYGP+DT>EV(TU=I%YE#AD&+[K:W*S.+IFA-XK6PCAG>]/1MA@BZ+>IN +M;?FV/5K\`7._LZLFFI_:#WA^CZ=_GG\[Z.=%B105Z.QW>KUO4/-[F;/1S\_\ +MG\NQL>6#((A@;/W,_?N@?:]/LV?OB5_U%8"A>-<1:9\!<Z7*K_RZ-,X:SOC5 +MQ@Z!D<:P=$4$VG6Q\;1@23,XP[/_@XJV;E'G8WAG\`C/^'?BGAZ=;V2P:?^_ +M/^F'(#I^*E/'HZB1IXO`(06--73A`J6G[G:?9_3W/1S=/K070)`.(Y6`:KEQ +MY1JP),@F/']O35ZC%:U]<51W"_9I=3FQ`>E!D<[6&"@GT]WR^_."=7H:/@_0 +MWA`U5AA[7VZGCJ[>E5X+C26KE^^-NFT<<7,CJC//*W-']DS2Z=F9DJ9!0/G6 +M>*0C4\UX8L_]QUUB@T5ZXQ1$-.,&:[?FC]D)`YYNG74?;3U_=?-[G;TM'P:< +MLXKNNL0-/7&R#>I`2I;4COU_54TGF_4=X6$526/(,I+9@CRP2#]'J=7]ZU+Z +M\W6KIQA?7?2I\I"!+Q71:_9!2I4HR.X2B4-\W2K\DR7]>JGT7Q>KRZ_9!HH( +M>?]V&+1UT]+;@0'L;[5_S3%"?UWAM_;!D^W]/K_X^;I7OE?R]S_VLGF!NCMZ +M6?X(VK?0N?#]U)QT_NBWX(*EF+3B8NCP)=.._C?N@N\ZL^#"9AKST*.D,-EE +MKC&[UWHO%>N/W@X=9M2M]J?'QI?=VK^UNWT)\:GK;]YX:?MB?`EF)'ADC\97 +M[/PY`BGY%>MG/+/42R_\;S\()->K5G^\1!9..A.\O+D)NB.S($502T+`7)*, +MXVA30M^,A459<A2Q$.N@2]J%)V/HFETS<,]QW1P;)N^3XMR=,K8T/1BVW*42 +MLA9()F>Q'!N;6ZY-6C.JLQ%/Y52F<N;`*I'?--S]Q//J^"GG61:W[5W86N7. +M/=P?"$HLRFLT<([NS+G"H'YM%N[Z7;X]OBR##[BQ0O1Z?)?W)YO/SOZ9W.C' +MM?E]*KE\@+Q]N15T=2,R3=[VU!BT2N>+3EE1>&4,&R8XU':!$F;F5<K,LP[R +M3"WCU<CA&>"OCP[G9]A#=)6ES/C@I$^=\E&"_%CF2%_A[10FG@"9^E,FKBG@ +MOD$[6.JEU.YI]$W@W(N.VC[-#'%XX%/;/1[?R_J]$^'*EK5"=SZ]M-^"&:S1 +M.;ZGV]C8C&N]&YQ8O$9DVMW&$,ZZ1FT%>RLK\VW58,-CWZB"XF"IO-.*_;$R +MS".=Y5A(MHK9-5OF.6&E)2(BI"WSE*K5QC`O^9R67Y]C5FY)L.*-/U(/D;#* +M)DM75HT%ZJ9OTK,WF9&5D+Y8->!;QECO^KJN;(X@3-S8O.R=U^QP6L(O!^.1 +M=C^,L':X3C\EON'`-&XLV9#-@BZ6YLS>7^*A*UT^/L>2LDC@BA\&]:KUY1*! +MKO.(#XQ>T;%?V]5\\O=X[SV26E.7R):2WLQ!=O/1QY:=Y5C!'EB+X"TY>YP_ +M'PB6[+8)7S4WX\"FY"LR-6K[E+GY7!=&":IE5-4MJM5YI#+X.GL:LC4NO1!^ +MSJH43I[?:Z_2D][:;H,6/67;_KG;^D+YA!V$Z)91L=QF'<6<XQER*.@=/%5O +M38<ND(][)7<IT&M>TMB93A_ZS*^)IZY#*L*$MR>X\/'_Y!W"\V(_Q2_99DTH +MAIM4N3(&D8F\YT[>I!0VQXHPF1=+2OUV5A;ITT1K=UDAQF-MEYTAMRDF/PJ? +MA^'L^&5O@V$/OBWSX'TX?YM1A8JX@H5A[?\B[P-VT]9JV!^($I<,I@HHCHRJ +M`UP$.R(P9WN7Y8-.O@>+&:>F92NE<0K"3-[^(;W0Z,SW\/I\T$Q'\K[XMLI: +M\C/*7JR#SB?JCS,B`?>S',6^[-)MF6D!KT>KW$@3(G!Y*G\C\&=M^BCM5E-J +MF5GV="Y?,WTA1]>5[YY2"EY=B@W4D92M\(W)C2X)\'O5]%H4V.[&U2K<-I55 +MB[9JP-W:WM2$"#Q`=LIB1U.^>/1"L86@R1[/B-^N290L24:_HFJ;T^JX8#EG +M+23(L5CWXI0<>E@NCQ<E7K%G0`O^;.B$.1DQ3$/R;%EW<VS;U`XC$!UG#^CP +M-J7X_F9UNT.7\Y^U@H4!GTZ@5SHO*#YNEE]CLW*<#7B<NW?C.L#\]^$(!CF! +M[&$?!:&J\V'R^;6W=XV2[_CX(@1Q^=#IE;\-?.V_<^"V;0Q1WJ?11AMYT0-6 +MCC0C>V!VVR"IJWZ?#W."E69,E;N6D1QA].1D/-@3!LTZ21Y&L3=?!MXT]Q^\ +M"@\2+\AS>QU1C_?(&-AWY&=ZM2L/W5Z*0"EH!E2S="%%-;8U-7%#R0J130TY +MF=2OSU;-&S'+CANGK,SC=&>(Z+UD6TK8!/`%HYQ\>5#O,`9]84WZ=*T(]W!L +M[&+#$U](CR^.F4,]?OT)8GNKZ_?T;9(2IE/6@#S.L<FU8TH$;RW)_/BND=RM +MNS[GP/)4@O?S8.`?:CN2LXD8^AC@'E\3Q%4IE+Y[O#S/QRPIS,NUSTJ;!)HL +MM.'BS`L@)%7AR6!Z1C/6EW_55MY#B?D`YPD-3%F-Q8Y2-_3UL,4+>B3I8NVW +MTH;#KXQ!483RP0ZCQQ^G.NO7R*W43+\R":5G4`$X9UVN!,O^03EJW5!F6RN_ +MCS@A<YR-N-PRB-_SP:&>W-+>D`;.@3<ORFC%-UJ&U:"I6^<Z]Q1M)XBIT4]9 +M,H59!5FE7-NZY2`LH9LE.A/CG'O7ZQ8/QN8S_"MOFV0_Q\\Z)/;O-D!*:*\/ +MJA.5H>72'_I98>XNMNSRUH!(0D]BG@..)>9\:2Q0A7X)*]XS%3&>,HIR)(XD +MVI(US+VN$0PY4'6V)RKC*Y)5'0EF#$MJ-0$,[),L*"*!.1<KA6])S7K5XY:M +M1ZR$U_OKZE[S,RXQ:K&.'$KK@G_?+K[D&VKT.?G3WP0QYY<&=KX-N"`[U_;7 +M^/4:(5%%8&WD-@(L&!)73?VNM(<,:>>V8?*4L?W;&8'AC%2$JYL<?%"BJCBH +MBX=RGR@%>Y3DZI&U>+!=97.U<BZ*BOA@U;RJE+8M2ER5<U/PZO/QB-;YC:.H +M%$YJ:`S%#9I%-%@@67'.*2)T.+C(_-YF_YW(DN'KPC\&[&>4/!&U7O'&\?:\ +M$G_%6G(=&K1N+?F7:"^X,+FCH5:1/&](^6JGIQT2FTJLDK!]'PS[%.C9XTD7 +M\-=ZSHYYR^U^M&#HR1V/UYW;%I&'1;&7!+PT<K7A],=0Z4ZSCDM3LP7)T;@_ +MAA\EC:AAKG)+QY_T_TB)'.N3X_]$$!R%X8K)W]]GALIU=^KF5>#\R-NTI$$Q +M8`LVHY.]/3`BJO++^L?:RQ:$^R&>7/ND`WM69`/+M7(R0=P=79>:\;L^2ZU9 +M7C+L^GVKG^#TW\:2FJB+%GB!(2\=NP1(<6"5%LO%@KI:E?-7V],$ZT`M757: +M1Z'6U-?._&&E?WP]NKS4C<"`;C.8]CQ!BM72J$E5NT*L\F&:";.5.,-%=+?* +M\UG`5,@7=DJO:WDRW(/P:FUD]Y4,`>CSZTM+[A_N)*];$RW->5"%N%)MZ7V[ +M<6/7'8Y<N67(QX]K=V=O8HU&(Y(P.V\`F_M[.#7TM+LU9;?UK".Z'JX9.":X +ME`X\$WT@FS?/IRH[XGDCAFYKU?:M'3_E_*[0\N:[5]OZU?I17N^CRN#M,BOX +M^>OT)*H&#T2*4L5\X,Y'C_MY!G575T.4HO8U`5?ERZ;"<QHVR58'O%@U9=#4 +MY:5'W=S@)YV*8)DB`01&MC%?5'[VAT_%7RQ?K5EM_11GKP0N[>K8A#Y,LG]N +ME`DK'\Q.T9`X';653%K:](_(QA>^+2^>[@GAO2HN67TP&V+V[7(QR=>TA6TZ +M>QV+DJQ\$\FS1[L2U<WQSPOD,QN[W^U&LF>E=?&N6+FUY2VEM<LRIR6@/`KQ +M].<T[.Q=X.)^5<(9^",W"S9%4E$B$F>0D1B#`ZVLGGC8GZ\9-]1AK*^;REXK +MANB7SD;*F;QO,[#A5*VXU)H`6;K9FG3V-;3K]KO^]^LDC:SO_O&;YY3V.E#Y +M"9QF$KIFFKY"9FU*]0XG[(O[[ER9RD@%&#\((LLKZ\/BA/TLD)_N:'>[&7LE +MCO;NSDTPJ'7S/X]#GYL66'D]O^4&0.[;WB9B^69-5ZZ_Z/'4@793?W*S&5AB +MF5(Z+#&&O8R/+QBW.J[5===>%4H>]+N;SP]ZG1FWA[._!MQ\N=K;'EMTHE>- +MM*X[6!'<=Y-U]"8W:#T@+7IGD>CI9M&&>.;5O>0#EU.UB];V=C0R[$BLIW[Q +M)QJ/0/V#HU7X=`C"F\,QYYK5T.+GM]E,5$E_B`"O'+:-/.C,7C^`XXOA"`/^ +MF\;7XEV-VQ=;,\?<\%QV$T=8UQ]#241[8/!M/(1@V6M0OC#0F\U;XFEIQ#+? +MD<&"R%>WJC:UCE2K!Q$"R8W4*+6PP5)C3=3[NI-AI0\D-=[.U[L=,GR*S53# +M,"R-39V:.&#YNEQ'V5I?^IY(MXJ3&CP^7?LW-F7$[3C-T(^][V*[=5!H]Z\N +M_$XVJ5`!,7FP[.6GOHXEAC;N2>5^._P:.ENC)!O0-]`1=\JG&?6[Y/6>7DE" +MW?8D]$:.X3A?ICD3S)+0U'@?&?4*W@IN8KNP2RL),.A]+9Z`C;K*]7^*QF`1 +M^-V>\I3L%7CS)5NGQ;FK(P'$8^#%)G((@:[UV`>;Q*<0!Q\5ZKPJ>/'XHL@_ +M6M+<\5997`>9TB;)<K\Y^2N.TF27IUY.R_IRVG8ITL9K'CXG,W%8*GKS<>JN +MA#J`*O\,)8SC:N(JU_='9PQ_/;[OSX[@FM0M)F+*VOK-N-[DY0)EF_PYH/(P +MSY/6;-Z]`Q:(?$XIH]U+:<`_`57/1$.1'2O7VZI1SOGEPU;U=]>&25%&B2=; +M5UH='_[7,N-ZF/X!*FZ%9-Z>62UC_#NX]Q_PH]BQ_P69O#7E5?G4U;:&,XL$ +M:M*QY%N70_G]\:7G2F8V)LG5JMB?2]!7,!,K("PQ`5(1DKO.+9SA/>%=]V(/ +MGZ/N)Y\$KJ_VYG(^$OJV=X39O\?+M_5>C,V7>,/ONV]K6S9+4LZ2RS38(*`. +M;HP0<Z=TP]NQ#]GX="G86L_E`\5KX.;'*NEOS8.#;WO_QUO8>Y-"9O1;3F3V +M!1%6$,R77V?$5I@.YEW@O4DAH?HI1`&A?6&>:V++>%/'RGN=[)R4E<JRCJR6 +M4$0-O1J:NKZD:OUI]P;,GJ?@@.T%ZFO8!=GU8L:G\\#V]\75A"=IR9WC(Y&P +MBDG*B+X@_B<CMZ>(R+B`?RW1$ZZ1/PN1G*O,52R-R.%R0X0W#%J!]JFZ^CYY +ME0O?(N\.E46<VQUCW(H&D-4[9<,`RB.[!+\(,V<2>52)9GQ<N>?7:_FZ7]:0 +MA=$?>.)E>72RW1(+E:*LHEEZQ-XL[T6N=0G3XB?PL"$3NL<V))?4)+FUMV9$ +M=:+92N&/>IVS%BD#X7O8KQV]=(8N20U5H?WZNGH]KW"T.SV=/N0T<T?!T8KX +M/UY^YBVL^/7:_K.;5]FIBP6(&-G-_EQICM:'V>V]/0Z?9Z/V=OM]GZ^WVJM] +MKIRJ:?*(N_-@GV(A7UT99*4%UP*5])9V5W[C;XQK!G?1&M=F*E-[9&R)RK'M +MX\96;[GU1]6U'^PV*A5>A=JEG5!AT:E*+VR"5)5NF?8@YAI;YX0N7,.2ORN5 +MV<=:FU]BS9M00Z^)6VM]4`%&SV]I#02>['39/TYXPGUI/."5;5FN2N'"ZY4M +MDY)IKT^YH]NYIM7,PM#0GQ`5T]+L:'=ZO4H'.MUJHR`A*X+#<5G<&N+S1[?3 +MM,5\DOGO;^?"8.A*\7)@G\#!D>+__08+@VG_RO9!Z$@+^0]JQX%,A^*I+D++ +M;=<1HUU*?X?H(RZRD-O&2BL:LAMQO_U]N@4GYF5(J+8Z-L@3K8U[T>U=R\V\ +M93!3F7*[828'L//;'E'!S/KRT\&A[^N[D#1%60-"QMN\M5O5F^]C=CTO)+\: +M6<JMF(>]JAD[C9J+T1]^/HQ`%ADK#Y+L:R5?]]:?,9+HW^/3"D>$*'1=&UNT +M,NT.2QN'C1E2L>;HXZFW-]3:TKMXT9CN(/6C.8Y(D%??*JR$2&K(.QMX^ZK/ +MPIGRKC!1I(?4GW=*6-(/N+!D5&?DG(IV.KT_[Z<*.B]6&\SO=3IQ_`L%SD6H +M0/DDFWX?+;]G?T>SU-.%)DNC!T`Z/:Z_UY$J+I]WW`[W;T_9/L[NA[%T>M[I +M]6YS+X?%'_IOQC.Q<EE1/BIZ9N1[?RLG/3G8^B_#&]R&U8H4=*X.W?R![J2B +M#NW5RY&=LB5J=G46=6(PNZ-3G,;F:E=^0%W4E8:XR9YM<"23:9VQ$NV*-#M[ +M>M*H4L`'"M;'1XZDM7I\=CE7+PU;U=CGVMD#S7YB*PW*G1T_`G=VW7<!P`M> +M!<ZK^T5\:>PJ?0!GED[(\-L^A7'6/QG!%^:5;V$N!/NG`P]%*?^',I,YXFPV +M5XO\6[%WLVSS5>[5*KB2G#C,->'7($D2BV'_(`6`+JK!/-JK^,>*F?Y$SMZZ +M'E-=,H.\E5_CV*,U34&7A^_@98_SXAJ#NPSL4X73K_'#T`'9R#QN6R#L9<:5 +MS#U=5EZ0:'<B+.?<H?*R=*,O_^T]1``````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M`````````````````````````````````!_[2\C^C%_:]3_Y____________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M__________________Z`1_R+_^L?^G______________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +MH$?\B__K'_I_________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_________________________________________Z!'_(O_ZQ_Z?_______ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M______________________^@1_R+_^L?^G__________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________T(>'_6+E +M+()3W<*PK*5K^^>=,,ORR`QXS"Y>3L91!!D]6>!\YNJUJ+B/"B.OW;9S0PY- +M[L'<%C#F&E/JB@B&WHW;*`8;:H<//'A#&4E_)2Y/;0=9%0"FF>S[(@1=D6VD +M.(WA2/E)PPU\4&DWNC$-S1*M!@9RNMO!$E8(8PG`/TI.T!;DYUZWW#GGI];. +M^&TM6S>89P.>EE-!5>4UD+0=4@5E=(,GC_@:WH45RH*Z^GG^_6M*!D+I<>`C +M[7(;3L,O#V0T3]>=1R1C=I=NREUG:Y&'*@99):YR$62SH0=V?^K"I=,1:66T +MGW_Z!J/L2=IG2'>;.8I!N8RVA_(VK^<.U-YXP(/)"OOX636''^QU;>/]UM/X +M2(:GB!=8/R:H$^"2\S]K%0:`1U$4MFQD?'@T`I)6/U0O-&6UP?PL8^`O/H'I +MMC,7#ILAUVD11&)?>:M;:M.`?/*DO<`N+O@F>!2]#_<Q=N.G\D-VED1Y1C\^ +M`ISHP`-%K(.#*KR=,-:!HNYF0Y:?L\)IL7W&;X,I;[7<$![L%G_!:5OI-#:* +MW#C>-2'+6^YK1*^C*?2E8VY$YF]3%<&M+W9QFR+SJ^L!N\TM8X^OR]O9[FQ/ +M5!MR"?VR%)SK0`HFMR,+F;N/EV.*Z6/:<9)XS$GWCXTU^P,P)MHQ?&K&Y2%O +M=7ILS%<GY4_0RQ\>\6FY':*JC/F4+^8,-/`U>&N](IPN:$+%?/A_LVM$H$*S +MWRYDMHY`Q`\N\ZZ:^]@]E@G)30YWG7,?!!6_FR-76F%,-LX7W).AA;K<3\1# +M)<,\4`SBY-4_I?^6GDB2G.5K:Y$L9]5H3P^^)_\[7G]OFC7U%ZN^_Y%[.\9W +MZ<&,YTB6R_W9U0E%4"W.D(F0`MFG'^U1[4HMI0?_IYS/(R6AB._6`_8]2E3@ +MVK\FWLQ+$Y&<=MR7LHXJF@O9D8*`K!GFU#CA?Y\8^`&'KKKR?5&3J,8SZLF. +MW:9TU>%-C&(J2X&4V/Y-51[N];@@C_$)]QOJI41PMG982751#QH0:P4**J(A +MAQ"GN?\'P"HX^2H`O?]$\>1DV][P(=XF$MX4B'[*V=[[L>1U/O`59]WYQ"$V +M5+BB'H:UVT(^08NZ=MXMK]S\8BHW_@\1X`4@KZ:BJ74YDI:_`X%_5KGA#^3. +MHE2MYMEP"L7)V:&:!5]\P[0=_$1FYEL7-KV?3C8$V^RSVZIOQ$>\O0^[,^+* +MAY\0H^3O`$R/^%_:[8<\(0I`4)_;H@`````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````" +M@$OPP`Q?VO4_^?______________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M___________________________________________^@$?\B__K'_I_____ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_________________________Z!'_(O_ZQ_Z?_______________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M______^@3`'1%0R-%\6=F]S/A7.S5W8"T;9`[O=G2*&IP\3W2`(833>H2:8/ +M`,[&-M/&Y!GWK4@<D`9+\//#CQL>,-D75WT2#SF<NKJ[NKJZ\=Y\2K^$7ZOU +M>#E*Z5VOR5I<]-@````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M`````````````````````````````>K\_IYW_/U<_H?\?3_/H>I>=B_GSNAS +M_7[]SU/CZ<I=CH<6`^AZD=#HPA-S\FQ;&;K0,A[D,^]X>GT>C]PIUI\#<ITH +MTR4T:)'<6"9#<]TJ0.G3=AOG_=5H]2!C+#]^&:1?>N/,^!<FCTNQ&FKM(O,H +M<,@Q?=;6Y69Q=,T)O%:V$<,[WIZ-L,$71;U-S;\VQZM?@"YW]G5DTU/[0>\/ +MT?3O\\_G?1SHL2*"O1V.[U>MZAYO<S9Z.?G_D_EV-CRP9!$,#9^YG[]T#[7I +M]FS]\2O^HK`4+QKB+3/@+G2Y5?^71IG#6=\:N,'0,CC6#HB@FTZV/C:,"29G +M&'9_\'%6S<H\[&\,_@$9_P[\4\/3K>R6#3_WY_TPY`=/Q4IX]'42-/%X!""Q +MIJZ<(%2T_<[3[/Z>YZ.;I]:"Z!(!Q'*P#5<N/*-6!)D$QX_MZ:O48K6OKBJ. +MX7[-+J<V(#TH,CG:PP4$^GN^7WYP3J]#1\'Z&\(&JL,/:^W4\=7;TJO!<:2U +M<OWQMTVCCBYD=49YY6YH_LF:73LS,E3(*!\ZSQ2$:GFO#%G_N.NL4&BO7&*( +MAIQ@S7;\T?LA('/-TZZC[:>O[KYO<[>EH^#3EG%=UUB!IZXV0;U("5+:D=^O +MZJFD\WZCO"PBJ2QY!E);,$>6"0?H]3J_O6I?7FZU=.,+Z[Z5/E(0)>*Z+7[( +M*5*E&1W"42AOFZ5?DF2_KU4^B^+U>77[(-%!#S_NPQ:.NGI;<"`]C?:O^:8H +M3^N\-O[8,GV_I]?_'S=*]\K^7N?^UD\P-T=O2S_!&U;Z%SX?NI..G]T6_!!4 +MLQ:<3%T>!+IQW\;]T%WG5GP83,->>A1TAALLM<8W>N]%XKUQ^\'#K-J5OM3X +M^-+[NU?VMV^A/C4];?O/#3]L3X$LQ(\,D?C*_9^'($4_(KULYY9ZB67_C>?A +M!)KU:L_WB(+)QT)WEY<A-T1V9`BJ"6A8"Y)1G&T*:%OQD*BK+D*6(AUT"7M0 +MI.Q]$TNF;AGN.Z.#9-WR?%N3IE;&AZ,6VY2B5D+)!,SV(X-S:W7)JT9U5F(I +M_*J4SES8!5([YIN?N)Y]7P4\ZR+6_:N["URYQ[N#X0E%F4UFCA'=V9<X5`_- +MHMW?2[?'M\608?<6*%Z/3Y+^Y/-Y^=_3.YT8]K\OI5<OD!>/MR*NCJ1F2;O> +MVH,6B5SQ:<LJ+PRA@V3'&H[0(DS<RKE9EF'>286\>KD<(SP5\>'<[/L(;I*T +MN9\<%(GSODHP7XL<R0O\/:*$T\`3/TIDU<4\%\@G:QU4NIW-/HF\&Y%QVT?9 +MH8XO'`I[9Z/;^7]7HGPY4M:H3N?7MIOP0S6:)S?4^WL;$8UWHW.+%XC,FUNX +MPAG72,V@KV5E?FVZK!AL>_407$P5-YIQ7[8F681SO*L)%M%;)JM\QRPTI*1$ +M5(6^<I5:N,8%_S.2R_/L:LW)-AQ1I^I!\C891,EJZM&@O53-^E9F\S(RLA?+ +M!KP+>,L=_U=5S9'$"9N;%YV3NOV."UA%X/QR+L?QE@[7"<?DM]PX!HW%FS(9 +ML$72W-F;R_Q4)6NGQ]CR5DD<$4/@WK5>O*)0-=YQ`?&+VC8K^WJOGE[O'>>R +M2TIR^1+26]F(+MYZ./+3O*L8(\L1?`6G+W.'X^$2W9;!*^:F_'@4W(5F1JU? +M<I<_*X+HP35,JIJEM5JO-(9?!T]C5D:EUZ(/V=5"B=/;[77Z4GO;3=!BQZR[ +M?]<[?TA?,(.PG1+*-CN,P[BSG&,N11T#IXJMZ;#ETA'O9*[E.@UKVEL3*</_ +M697Q-/7(95A0EN3W'AX__(.X7FQ'^*7[+,FE$--JER9`TC$WG.G;U(*&V/%& +M$R+I:5^NRL+=.FB-;NLD.,QMLO.D-N4DQ^%3\/P]GPRM\&PA]\6^?`^G#_-J +M,+%7$%"L/;_D7>!NVGK-6P/Q`E+AE,%%$=&50&N`AV1&#.]R_+!IU\#Q8S3T +MS*5TKB%829O?Q#>Z'1F>_A]/F@F(_E??%ME+7D9Y2]60><3]4>9D0#[V8YBW +MW9I-LRT@->CU>XD"9$X/)4_D?@SMOT4=JLIM4RL^SH7+YF^D*/KRO?/*04O+ +ML4&ZDC*5OA&Y,:7!/@]ZOHM"FQW8VJ5;AM*JL7;-6!N[6]J0@0>(#ME,2.IW +MSQZ(5C"T&2/9\1OUR3*%B2C7]$U3>GU7#`<LY:29%BL>_%*#CTL%T>+DJ]8L +MZ`%_S9T0AR,F*8A^38LN[FV;>H'$8@.LX?T>!M2_'\S.MVAR_G/VL%"@,^G4 +M"N=%Y0?-TLOL=FY3@:\3EV[\9U@?GOPA`,<P/8PCX+0U7FP^7S:V[O&R7?\? +M!$"./SH=,K?AKYVW[GP6S:&*.]3Z*,-O.B!JT<:$;VP.VV05-6_3X>YP4JS) +MDK=RTB.,/IR,AYL"8-FG22/(UB;KX-O&GN/W@4'B1?D.;V.J,?[Y`QL._(SO +M5J5A^ZO12`4M`,J6;H0HIK;&IJXH>2%2*:&G,SJ5^>K9HV8Y<<-T]9F<;HSQ +M'1>LBVE;`)X`M'./CRH=Y@#/K"F_3I6A'NX-G8Q88FOI$>7QTRAGK]^A+$]U +M?7[^C;)"5,IZT`>9UCDVK&E`C>6Y/Y\5TCN5MV?<^!Y*D%[^;!P#[4=R5G$C +M'T,<`\OB>(JE,I?/=X>9^.6%.9EVN>E38)-%EIP\68%D!(J\.2P/2,9ZTN_Z +MJMO(<3\@'.$AJ8LQN+'*1OZ>MABA;T2=+%VV^E#8=?&(*C">6"'4>./TYUUZ +M^16ZB9?F032LZ@`G#.NUP)E_R"<M6ZH,RV5W\><$+G.1MQN&41O^>#0SVYI; +MT@#9T";E^4T8INM0VK05*WSG7N*-I/$5.BGK)E"K(*LTJYMW7*0%E#-DIT)\ +M<X]Z_6+!^-S&?X5M\VR'^/GG1)[=YL@)317A]4)RM#RZ0_]++#W%UMV>6M`) +M"$GL4\!QQ+S/C26*$*_!)7O&8J8SQE%.1)'$FU)&N9>UPB&'*@ZVQ.5<97)* +MHZ$LP8EM1J`AG9)EA010)R+E<*WI.:]:O'+5J/60FO]]?4O>9F7&+58QPXE= +M<$_[Y=?<@VU>AS\Z>^"&//+@SM?!MP0'>O[:_QZC1"HHK`V\AL!%@P)*Z;^U +MUI#AC3SVS#Y2EC^[8S`\,8J0E7-CCXH454<5$7#N4^4`KW*<G5(VKQ8+K*YV +MKD7145\,&K>54I;%J4N2KFI^'5Y^,1K?,;1U`HG-30&8H;-(IHL$"RXYQ21. +MAQ<9'YO,W_.Y$EP]>$?@W8SRAX(VJ]XXWC[7@D_XJTY#HU:-Q;\R[07W!A<T +M="K2)XWI'RU4]..B4VE5DE8/H^&?8IT;/&DB_AKO6='/.7VOUHP=&2.Q^O.[ +M8M(PZ+8RX)>&CE:\/ICJ'2G6<<EJ=F"Y.C<'\,/DL;4,-<Y)>//^G^D1(YUR +M?'_H@@.0O#%9._OL\-E.KOU<RKP?F1MVE(@F+`%FU')WIZ8$55Y9?UC[66+0 +MGV0SRY]T@&]JS(!Y=JY&2#N#J[+S7C=GR76K*\9=GT^U<_P>F_C24U418L\0 +M)"7CMV")#BP2HMEXL%=+4KYJ^WI@G6@%JZJ[2/0ZVIKYWXPTK^^'MU>:D;@0 +M#<9S'L>(,5JZ50DJMVA5GDPS039RIQAHKI;Y7FLX"ID"[LE5[6\F6Y!^#4VL +MGO*A@#T>?6EI?</]Q)7K8F6YKRH0MPI-O2^W;BQZX['+ERRY&/'M;NSM[%&H +MQ')&!VW@$W]O9P:^EI=FK+;^M81W0]7#)P37$H''@F^D$V;Y].5'?$\D<,W- +M>K[5HZ?\OY7:'ES7:OM_6K]**]WT>5P=ID5_'SU^A)5`P>B12EBOG!G(\?]O +M(,ZJZNARE%[&H"K\N7383F-&V2K`]XL&K+H:G+2H^[N<!/.Q3!,D0""(UL8K +MZH_>T.GXJ^6+]:LMOZ*,]>"%W;U;$(?)ED_MTH$E8_F)VC('`[:RJ8M;7I'Y +M&,+WQ:7SW<$\-Z5%RR^F`VQ>W:Y&.3KVD*VG3V.Q<E6/@GDV:/=B6KF^.>%\ +MAF-W>_VHUDSTKKXURQ<VO*6TMKEF5.2T!X%>/ISFG9V+O!Q/RKA#/P1FX6;( +MJDHD0DSR$B,08'6UD\\;$_7C)OJ,-97S>4O%<-T2^<C94S>-YG8<*I6W&I-` +M"S=;,TZ>QK:=?M=_WOUDD;6=_]XS?/*>QTH?(3.,PE=,TU?(3,VI7J'$_9%_ +M?<N3.4D`HP?A!%EE?7A\4)^EDA/]S0[W8R]DL=[=V<FF%0Z^9_'H<_-BRP\G +MM_R@R!W;>\3,7RS)JO77_1XZD"[*;^Y68RL,4RI'188PU[&1Y>,6YU7:KKKK +MPJE#WI=S>>'O4Z,V\/9WX-N/ESM;8\MNE$KQMI7':P([CO)NOH3&[0>D!:], +M\CT=+-HPSQS:M[R`<NIVL7K>SL:&78D5E._>).-1Z!^P=&J_#H$84WAF//-: +MNAQ<]OLIBHDO\0`5XY;1IYT9B\?P''%\(0!_TWC:_$NQNV+K9GC[G@N.PFCK +M&N/H:2B/;!X-IY",&RUJ%\8:$WFK?$TM.(9;\C@P60KV]4;6L<J58.(@63&Z +MA1:V&"I,:;J?=U)L-*'DAKO9VO=CID^16:J89@61J;.S1PP?-TN(^RM+_U/) +M%O%28T>'R[]FYLRXG:<9NA'WO>Q7;JH-'O7EWXG&U2H`)B\V'9RT]]'$L,;= +MR3ROQW^#1TMT9(-Z!OH"+OE4XSZW?)ZSR\DH6[[$GHC1W"<+],<B>9):&H\# +MXSZA6\%-S%=V"65A)AT/I;/0$;=97J_Q6,P"/QNSWE*=@J\>9*MT^+<U9&`X +MC'P8I,Y!$#7>NP#S>)3B`./BO5>%3QX_%%D'ZUI;GBK+*X#S.D39+E?G/R5Q +MVDR2].O)V7].6T[%.EC-8\?$YFXK!4]>;CU5T(=0!5_AA+&<;5Q%6O[H[.&/ +MY[?=^?'<$UJ%I,Q96U]9MQO<G*!,LW^'-!Y&&?)ZS9O7H&+1#XG%-'NI;3@' +MX"JYZ(AR(Z5Z^W5*.=\\N&K>KOKPR2HHT23K:NM#H__:YEQO4Q_`)4W0K)O3 +MRR6L?X=W'N/^%'L6/^"S-X:\JK\ZFK;0QG%@C5I6/(MRZ'\_OC2\Z4S&Q-DZ +MM5L3Z7H*Y@)E9`6&("I",E=YQ;.<)[PKONQ!\_1]Q//@E=7^W,Y'PE]6SO"; +M-_CY=OZKT9FR[QA]]VWM:V;):EG266:;!!0!S=&"#G3NF'MV(?L_#H4["UG\ +MH'BM?!S8Y5TM^;!P;>]_^.M[#W)H3-Z+:<R>P*(JPAF2Z^SXBM,!W,N\%ZDD +M-#]%*(`T+ZPSS6Q9;PIX^4]SO9.2DKE64=62R@B!MZ-35U?4C5^M/N#9D]3\ +M$!V@O4U[`+L^K%C4_G@>WOBZL(3M.3.\9'(V$4DY41?$'\3D=O3Q&1<0#^6Z +M(G72)^%R,Y5YBJ61N1PN2'"&X8M0/M4W7T?/,J%[Y%WATJBSFV.L>Y%`TAJG +M;+A@&41W8)?A!FSB3RJ1+,^+ESSZ[7\W2_K2$+HC[QQ,KRZ66Z)!<K15E$LO +M6)O%G>BUSJ$Z?$3^%@0B=UCFQ)+ZA)<VMNS(CK1;*5PQ[U.V8L4@?"][%>.W +MKI#%R2&JM#^_5T]'M>X6AV>SI]R&CFCX.C%?!^O/W,6UGQZ[7]9S:OLU,6"Q +M`QLYO\N-,=K0^SVWIZ'3[/1^SM]OL_7V^U5OM=.533Y1%WYL$^Q$*^NC+)2@ +MNN!2OI+.RN_<;?&-8,[Z(UKLQ4IO;(V1.58]O'C*S?<^J/JVH_V&Q4*KT+M4 +MLZH,.C4I1>V02I*MTS[$',-+?/"%RYAR5^5RNSCK4VOL6;-J"'7Q*VUOJ@`H +MV>WM(:"3W8Z;)^G/&$^M)YP2K:LUR5PX77*ELG)-->GW-'MW--JYF%H:$^(" +MNGI=C0[O5ZE`YUNM5&0$)7!8;BL[@UQ>:/;Z=IBODE\][?SX3!T)7BY,$_@8 +M,CQ?_Z#!<&T_^5[(/0D!?R'M6/`ID/Q5)<A9;;KB-&NI3_#]!&764AMXR45C +M5D-N-_^OMT"D_,RI%1;'1MD"=;&O>CVKN7FWC*8*<RY7;"3`]AY[8\HX.9]> +M6G@T/?UW<@:(JR!H6-MWEJMZLWWL;L>EY)?C2SE5LQ#WM4,G<;-1>B/OQ]&( +M`L,E8?)=C62K_OK3YC)=&_QZ84CPA0Z+HVMVAEVAR6-P\:,J5CS=''4VYOJ; +M6E=O&C,=Q!ZT9S')$@K[Y560B0U9!V-O'W59^%,^5<8*-)#ZD^[I2QI!]Q8, +MBHS\DY%.QU>G_?3A1T7JPWF=[J=./X%@N<BU"!\DDV_#Y;?L[^CV>IIPI,ET +M8.@'1[77^O(E1=/N^X'>[>G[)]G=T/8NCUO=/JW.9?#XH_]-^,9V+DLJ)\5/ +M3-R/;^5DYZ<['T7X8WN0VK%"CI7!V[^0/=240=VZN7(SMD2M3LZBSJQ&%W1J +M<YC<S4KOR`NZDK#7&3/-K@22;3.V(EVQ1H=O;UI5"E@`X5K8Z/'4EJ]/CL<J +MY>&K>KL<^UL@>:_,16&Y4Z.GX$[NVZ[@.`%KP+G5?VBOC3V%3Z`,\LG9'AMG +MT*XZQ^,X(OS2K>PEP)]TX&'HI3_PYE)G/$V&RO%_BW8N]FV>:KW:I5<24X<9 +MAKPZY`DB46P_Y`"P!=58)YM5?QCQ4S_(F=O70\IKIE!WDJO\>Q1FJ:@R\/W\ +M#+'^?$-0=V&=BG"Z=?XX>@`[.0>-RV0=C+C2N8>KJLO2#0[D19S[E#Y63I1E +M__VGJ(`````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M````````#_V`2\C^C%_:]3_Y____________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M______________________________________________________Z`1_R+ +M_^L?^G______________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________H$?\B__K'_I_____________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_________________Z!'_(O_ZQ_Z?_______________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +H_____________________________________________________P`` +` +end 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 new file mode 100644 index 0000000..0ceeae1 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ac.uu @@ -0,0 +1,892 @@ +begin 644 - +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_____Z!,(=41#,T1`!85O9S\*.C/!I9I1:2;N[&-B[`5MIBT,?1836;F[OB1 +M1)I)5B)-+35%IEX-^[X`4GT(E*.1T3,T512)P;F^.L,(DS43'5SOBOB7/\(/ +MW/[]SD1P3SPF!'I,@``````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M````````````````````````````````````````.7X_\>[_'Z.[^I\O\.YZ +M>>OI?P^;^'I__RVDL4?\2G5G_T:?&__KIY7K#H7@A(IWJ%<*'!9%"OLP-!P7 +MAD6BR0E+P\"H8V._E_*<QEP;WLUTJ$.I$,X2N;N9_#QPZ2(L.]FDBD<4.YZ] +M&BVMCO2M^>C?IFE[04,GALITXYE9I+UTMU/+-*9HF_1./4FOK-SR3*$Q\?,O +MFSQ7M\WQ\<HW@JB[:+J(T,A:,GFDD`YIO>F5CX9ZMYX>?&%_>A&']?O</)-V +M73/N<.FT5M8V?WC>\$V'A#;8AY^:-F[!<+R;L;2\W<U##D9THHEY^*V6HO:_ +M*-7N!*'XKHD(F:;5+:R1PRC;,U7%)AMAHV(/U3V,G9\]U$NB/1X+]-]21.97 +M'M^'CX>&/WE[NW#\"VZ13S4Z)=:V3Q#TU/+GI-CEU>"-W\DF:9P9/]HUM+9" +M3=,D')VO?T5`Y@0JK9)ZDNJKN55>?RY5NYJSH3J<C0#-.QWX/,XKS+NU5B.` +MI[VCGFX;YI,]&3DP;:'%EO9=UV&;<`HK7#?O![CC!OQ'4G`[R9JOH']CT9_5 +M?4G`REYS2_.IO`/%`,VI*OO.#Y<^_O:D':^NIC&[M6\W^E6J+S/$=?>V#6<O +M;]VYEL&!+4/8DET<X,/H[-NUD!#H.-60L,8SOZA&#%PC6A:>/<3LVRY101KE +MWH:&G!%<KJW]^C[,CD"%3J5(%_/[-:LM:++QPD`9M7BR$+&8&7).Q3>)MZ=C +MQ\<L'SPERTXFCQSQ2Z*!TY*[L;7,>GZ46;81TIWET&%/OY\_FBX9R>/:`QK4 +M2`YO2-X^SCART""SZ,LQY/<=B=%(CDGM?K4>#M4H81.AN\W>+J04IPP'Q7?# +M%+#5X'N,-_RY<;E[QC8;>KIZ!!J6F"=U;'=.2$/9QO\GT1A]9"/UH,N/)6`. +M.U=WM_3Y9F+_?9'CCW45HLW#5?YEQW,@;`6'N49"V:96P+B<=&F)!F.WJSI5 +M#;V/47ZVFGY>/)*@L?%@47T='GNLHR3NG8Y3-!TZ'+]3GRB>+)PE;U"26?49 +M/=@L;K[PEX?V<N_^-1`(`HC&[V3QBY"_UJS"-:S.Z2WKDIX92,1P0GA>2FO\ +MLBX\]NH+4?O>=K/Q>Y\]82,DI.R70+29M(.239GW[I/W*1+WD^>_)WA[_N!8 +M3J\G>96F<QA)Y^33P>?Y,7.FUW>WV_\NUV^[VNY_+Q=WN;7R]O:^;M_OOU+J +MW!T"#%F@O#+?FM'?/6K_M/Q\GE]92>;>;@U'G5+:CS7N]R[6Y:S\IT_MTSA7 +MV>_0UU+W/GL#W%$4_9IDV.UT:(TR\M?7[?SSPS;MION5_N2V)FW:^/NMW/Y^ +M2OBP\&UN_/W/Y2]7O6X6KQ/*0=M,X7KDSGY<05]C5_';_GV]?\&_(EMI[$$0 +M.[L?]=CY=GUO^Z];>M.[V?Y]KN=-D3ZZ`1=W^/S1,5NBMH^6N@/)ETRK%77R +M_,E2%?H9$VOU)L.FP6V?@DP_<N]'GMM/$HJ?+.X;XQHO:K=KO\7M^R;\[5V_ +MX=O_+^6`7FBC%OD?B_3,9]Q6>+RUMF[>.R2A%?SRLL@^_#WX.O705/G6FF)4 +M4T4=A<I@0XM[KJ`%J'\<%\&A,2&'7`T<F`AZWW?+41/>LF9T($3:1-$7*>D- +M%"$=?3N^+5%(_=^.27QEDR"]ZTV@X8_&&>/G>F3@B!^/)-IU:J"_U:B;$#85 +M>RVGU'%[P=WK."_7GXO?&2-F[XM/P$0.B'W9*5]S'?Z?U@:2^'\<$>/8OB<* +M6/R#VVO<0X?!7=?=DRK:EL.*`:89D&](VS"?U/FF$">_C>,B=Z;V2NB&SLN6 +MSNH]$TU."0&_EP"9P8ZF]56_\=XT5W*Z(8%\ZC[&:UCV8_:+VW,O/7*'4,FO +M<L5"%79G"*,'DI<525I(?J?:[F*8`XR1^?-+/Z9B^8<`$IGRZFID1O;/CJ7^ +M<7!SL9]_/Y.2BEQ3@F/CNY;ZJE/J06+(;7-,O)X]C&ME41WYD5:P2UW[''-B +MBEO!12=)'M&!]RB2/Z\^FL,P4C$[3Y;Z`7T]C1B&4\48/17AW.2S5>@'.<6` +M99O;Z<2@48FVBZ,8DT*HLE,P8$A:?WB![D4(A^X<\\"%Y?RR1FS9NX,'%9T5 +MG/1.&1(P.!;HYQM\T>.F%3X^NQ3ZC?EV2J#N[M&Q=GXKPL.Q_XE&[&:;52DP +M2Y.T[-P06OA>#Z"'_(>O+Y,D`@^TN>3Z2#7J4I_FA0>U;LV`UQ0&3&W/HBZI +M0,GEWI:V]B'%YZ2<9K0OJFQ)+YW[7YYIT[AV;J$D)Y:C@.GSYMS--:+GRM*! +M(,_'ZZ_\^#^]E#6NU>CJ"()L?5W_K\'W4>AO8Z&0NS8S7_OT#BWR?XS.,R:2 +M_'Y\9Q/8_Q^3H6FG%/8[&38_G;*NW'*.W)A5=CL]G8_Z>MON_T^S[.S]&N]? +MOP@820/NQWO#]/]O!_V]DOW_Y[/0M'0];'@57<CMX33]MR(*^POL_\UAU.`^ +MEPF2MAQ23O-N\R[M\I-#@_Y+*L"CSP*,!]B&S,AK^SW.WW?F[?NY=I^)<O>& +M!=:%C)$5.+DUG+5/QT^8^CS?[>-NB$/V,E4<7)EZ7(.*]?PTP@@=BA%.&SYV +MO!]WU_)]O>^[P?7(++:^WZZ?#AAT\W[=EG;L3P351#M:+[3$?^\O^HME\&24 +MS_T1G+U1+-Q79*PV'(J5IS:)$+]VKO&E0R'-2I['@H35R:B87H[7:A89L3_V +M,U+)&9;%!L6^-&H?IN^#KCG4CV)YNHA15?],>61*F2!]P:JZ[6%"9,A?`G]9 +MJ<PR)MS+Z[RTF3'WVU5#M-=J82`*GY;+1DG%UPSJ4[1][>MO!^'WP:9LPB>G +MOW%?4D\V-E=FM\T^>W#]&KO)IO^I9^&R;K[;\*L#7<L<F/92MDGE.B!!1`,B +MD"_TQOG5CITW?YG;^BE9N.SM7?A%%"+9+KD2C6II#57#9D`5.BXY"!NLP,,& +ML3%SW^6]W/]B1L#RP>CZ?:*PN=-JHT;\"UT%)M-:<:NJ$71Y_=FZ\W).4!90 +M;+G\EEX#1J;PR2-L#O-6&E(XK[#KM-8=]C<.;=9O$SI)Y<E_?GDW^2=#PJ&U +M][-SP\,2_K=7`M'4D8O[.;V7;W>23;'V^>W;R31E:(Q,?#L<KC?>BCEK$8>6 +M$9M[+H^$B:;'+>[EJJ)]A)U.2]L65(9R>I<#C8;!8>M=*W\_/L?B$S;X3>UO +M(F,]'V<1)_:NAODT_>$:7\>6)[XZ<]'%=EU8T[QXE>QN9@=S24?7&Y[2*>E2 +ME,<QU=.?%6'.0K$15/4,'L??PW7UU(O<N^S-0$F"YK=(R`"\]FAI6BS&;1?A +MV)[U4X+]X^7I1/%2B%%T\]0VB-%Y5J$>K"3:<;D"A*_G'&4H5IDR7-$12A*, +MD+W*3C1W/%Y=4FQ%&*83)\NBRQQ'I4A=F*T+^3/-4^FZ?IB,WR?+%&A9>O(7 +M.6/;&:KK2H%3UU>9E.D_@_S[_]/IYW)E;XEL:43.SFZKSR6X=$TH+SSA8+GA +MDWJ]F/Q$#TP`#+]\O%2K-\75L=B;HFA_P9?1+AKSPG2;L$!(2VL(4$_?6AI^ +M0IW!(B3O;79ZPN0?3$!;4UST9BKYP/1-M,3%^DBKR/(:/<.;7KJ^CT9J6&K? +M?E"O&-LR=6RGX9%EM-,(W>/BF\4HB]G+UFY/IEP-HPS!8@UUFXK35!Z(_SAS +MX(*5WQ7S576EW5-_8]'6[E2&KE=VN;X%:[NYM%C1<+NVLN.:!U-C+2"TX;(8 +M4R9WQ55<]'N<^7A.]&;;H2G:#P8PIZMK.3R_N^+I@J)ZUH?6T7MBS$%[-;2] +M,4;LU!8^>>4)DZ[%-<Q&-0W#,=J;#LR>/+$+(R;-5"L'_!=I5@5L-VH?27![ +M#)AY9<3HTDB7<6G1UD#6'S!&H+X0YJ?OKBF(13$RUIC<UIJOM:UW3ZHA5*)T +M6KVQ2HG5/QT1+L':C/<>G"W7=M_#2</8)O<&7@F&GXL0/^;35Q.\_<F6=-[9 +M;_)-T3_K0U`,E?5JT+IPBM.E]T`-^:0%^;AZ+"/I%9O6A^(+"SS+`->6D/N5 +M,Z0V9I81!N6"9W1")IDC8QTY/]S@S[L^FC$8S\41:#".#%3?,LVB%[@9OO44 +M+^]2Y&W-*^@BU1%`MY[N7=Z)]^&?@M&6F)V"QN;DQ":81BC^''8X[6`O>/1J +MNX"UK[5]VU37<FBIS3W[#._PD2+V]O^_K7Q?7]_A^VZ&$;9B,QOCEXKRO^B; +M>^_PD[J^:5V-%:YYL^W;(W9N_WNZ%Y:BU#%_UV!A"VE15/:I>TE"[5M4V\G@ +MMA^[JC$SY>S]%LL?^\%K/H$B>&U`:H!APX&O?;D%)(#TBN7&_=A!A=Z&5]N? +M1IQ>U*\M9P!%SSJ0EY9;BRRM"`)5XZ72OR;/`UL&YXHB5JGR\EHWJT7@%R5G +M)QE[`!E^/RF>#SY9?YPZ8;%\O2ZZ0GE0]^#'&NIG/SR2OVJ:/)N^:ZQ3%4M8 +M]?<L"_^FW2JO_CW8(%UL\Q(-W=A(Z@?7!']D?,]2T9MSW4%_^GV0_Q*I(/3* +M$'Z%4P.SGLE*C,F\ML9M0[G1>Z_+\O8AB$.F"76>F9<%4B>?XY`-W?%BE9&; +ML*K1F//PY:4U-V?VN.=`C,_#8L!#5>E%W^7>ZR2+H\/-N@_-"0W>QK]]Y('Q +M:B:5-5YK%!F:;^*G#'LA*+9_IKK#6MV$\$9Z!'==!FHW[)O-636-^?JJ]7T@ +M.>O7J=GX-Z_;EX*SJ'U9U(P9QF@,Q"`W3X!*-7HMGP\[1:?PY.#?]*\W+[Q: +M_[28_V%L^#?/U9N*L\^]:U'7E7I[\\&CPY?)\/(?,:V0=GWUV:FP/O;PC+OX +M9OSR_"O.+1]WI-'4[T^V'9UK=JZ;(4[<L]]LG%H[\)0_4\1^[G2Q6WX%[_37 +M'_AWUXLOY>[Z/6")-H&;V_KY2A$N_R;'*[R)OVP;(F!9:KV%I2CB;Q[V$?(Z +M[JOA>B&U=?##-(7,P9'F%!YZS8EBCUBT2P[5WA]V&:)+<V7>B)Y^*>3].?56 +M\>"4AN[F6^&.;ISB=2`5:+A%^0XE:S$@#8W<?62)HA2_)BU-*"0[W<Y0]7&G +M;NF=8DD4>G,%I^7PA.V>D/?>WM6ZE9C4%\..:NA9;B?"N7:X^.=T8M8_ZSH3 +M%?N'.F:UC?DH$6_&DMBZO,\]9>]2@.E)&;7=@D=U)T"42`L>@*>'J+B_Z2\J +MH.]C>LY%PXY-JRK^(RV><-5*2>^7GU'MMT5CO60]I-"DR:>F0FZ.@.KL9B`^ +M=SG5_7R[6[0UW`C%[0OLVE,])F1CJ+3%AG>E$9UD)*3/KR\51NY@58N-][GL +MR5HBGAT+-/74VG?ZE^7:K$N&3VNY(;T42+C+<G+Q65L)0!!*C/4MOO9C+-.6 +M[K_`$7'-$-J_L+N&:N#3I`JJ[M"*#&3.I-OGZL^B(U)_;X=-2;TO%._O2ZDW +M.J(97U??,=>A7N)E!ETP)*'U?!I^.2U;77^G/2F2G#6U8=E"1-5T0C'>CX]= +MQBR)-":?T40W9V-5#TLC:WHO^*!X8CM&UR=CL_13GZ%->5J_.D6O:)QI+)M[ +M9]-$MK%!G,O_R7LV/KFD9Y7B;A8_71]%)I@BF'&Y)COQ'S53+M9#=H$K.!5) +M9KX^++A<-'A]:9Q8F@BZO0,GLRXXB/Z3#1V9-";`%6]5PP:0-':1?@-WQ8?% +M:%C(9C?Y6]:5Z=<UW"SQT6[=83>3&BW)0!;375:#7?5-7MGU%#36?1Z'/V>G +MG5.^=49"A?#[+#F4#HO949#EWQ='-_6]9?=\?/G[7)SKUK<?_MWI/Q"J='13 +M&G!`DY?NVO+1K+WXY;I\&;IVZI>%'4Q0$3''E,^4-2OA]7PK:&T8'=D-W*V< +M?GVNSZ>B6X4).M<^P3(LOE36UM-'>9J(-49K[WT_97TJL`31ETP18CSP+Y>: +M/NG1^.37NW,F[YK,[*;EWA"SPH/KCI:14,R7^2%QK#G?19[D>Y((:%(OKH=& +M_4WGT)-<^^%OJ"8,">6Z6KIP;N<D&!8ME*4N;N?CJ;JL5ZA@12"2U+UQDVK# +MJ9++N'7,[2.Q\4."3U8\$L4QLF6J0;#!"PB:^]XI0TR(?X6G/1JMS?Z<M:Q# +M9\O[MJ?);UNQV;1N3.3I:0*+1+/E!#T/S']]+(U\^-PWUY+LF7BMTM+CU3&C +MO7OFK5OSVX9J4\PB-S_'?7^*:'#.!F<&EU+B&6C-S+ID"7/=73,"W)PT</_6 +MFJ'%Z[=0W=$/HF>`T/*Q\=W+J.0?2ZGGO>3C+?+C=$3[%>>'Q7<I?>7=U8'D +M_]0HL4IF'A:*<@VZ-`R;U5.6*$LW1)8F"09:'%<(?&G`6L#]]>1";IC?4-V8 +M27=ABFSA3D2>9[TWW%3#WI<L_;?TFCHRUI,-IT\G0KL5@BQ=7X`^2;04]YP- +M2P=#@S%E'8Q?/&^\&?YD!\40\XNH_9$")\/>B/@S::>_?O_.!K8N2QC&KC=E +M)1'%X\F[6U<EWCFKI5O64(NYL'I%7*N*>0,(EMS<-;TGOCCX9OPV))IGU$Y2 +MFQ,TW>9:O5HFE=.)>[&W.N\"4W__&2.%O9(=V?Z9_2<+!ZMT4,L>_U/WU-4Z +M<]^DK:KD5WE&#$W]S(-*&_+N<DK@UDF76NCT9,';M?)CMWBM"B]5]BG4-TR4 +M$-3^/)+TYN+&M!I=;"W,ZEC8C'4VZAAK69X+W)1WMD*+BFG52`&W?-R4ER>D +M(&[NFG'M.M%=%:6CVU+$%]0$Q"E_9JQ[_)>O*6A+?&_.9H#OL3ND%-Q1$='4 +MN>/JS:/-C%LC^^@*WASU\<H1"E\_@^3[]CO?W\$H)^ES'[&=^/SK)6#I+;=T +MX)^EP#R83?Y1B_9^&E&9_%GHF936C:&C[Y3:N\<NMRHC3J*D(T@TCB\F7"-S +M;W]KJ`<RV6D<VX//)R#RR+P9HBJ+1LX?24F)-]GDZ?"UA^<5W<>C4EU*W<;D +MH!ZM*F5D9#Z+X+8LQDJ(ODFX;GS5A(;6EU,(];V:079.(H)=.?Q?4H1'LB]= +M2Y?^OC_/\^5Y:?0A6/!L<LXS96QX\//&)VF*_+,=3$;1M6E3)Y(EEJ0"\LJ\ +M>IMA"VAS$\_'Q>>'M%FGP?IJ/EN\7,?&9E@!2"G4MDYDN9FH[(?NC?@R=(/K +M>R<&3R1'+WARSK&G[A<B,L73'HB#.IJM>3QXI$-_;HNY3%,R;D0&I,9*2:U? +MWPU[!?':*;OUK1#=,='VN2YCG!O-B&7X3'9R4W`LC>Q(H4!1SU;LSI"?**"- +M$W3_&Q]\263CN&S1TA';YY95/BI_>IPQ5*AK$(4L!N_;X?;S(!CM5VBJ??]O +M7XV(HQX*TG/V;4M`T7M#>ZSKXQ;F5XPIW'GG\V6VBYKC^*T3\DM^,6X],V3P +MG'R=/9.AKN@`=51G"L<M2!F.4=/:]D]KFC-C>J]IHZH;I]I='PU1EOXY'XJU +M2:;1TR9/*]V/=6")LTZ[AJCE4ZBGEG.3/1EYXE5SSYX'GCBF[!3+_TAAEZ>8 +MLP4IWS:;SZ&^[SU-=_[+TF6T2-PJFXZ!44BM*.PC9$K>/JA\&"AFW64_[#VS +M\LVRWK!\M_H?)L4^@ADQKKU<O<AA\RA)Z4I=Z*)$<&V;J>]5#HV8?6LO6[DK +MKXLD'OH5H[=N7X*I^%@NG&P,U8J>]$Y!`Q(HE@#L_%>BZ1S;#W<\\2MGLWT) +M4Q[:P1FG0UF2!#HF2/[\<NQULA*UQU=U=A(6/L?G]$X,N_*/V;`NZ.<W?W[! +MD4F)N"2>F`MYZ]LC7S,RX4DZM?5$#2QJG)[0N.?8@\P$9-)^0.OMHW,VF()] +M_"@]_N<*U(DS02,0@FJ4'Z.X6-PG8Y3]WX`WR1P9=1]AT[_LS[T=5-U8D=/Z +MM[-1V-^;6YB-QIHS\1OK1E#^H^/%2CSU*]SFZB-O0P7.9&(^"2;U+Z.1_C%^ +M3WOV,>5:-FN$2BNW$Q-H1!I,6B$<+<W\^[YKJY5LV2IJN=J"/<V>U^\]ML@) +MIJ@TM<4^",E3#'G3A>*%?VW`H%5HFLFX).4Z`.;V?GKX;T]^755<'V<*UC>; +M-[%*;/X0]]!P>WI\4,Y&PE_B_KBY3_KR8A*=V5Y9^":+9OY.2W-%I:#J"YC[ +M#9]&6)@HH1ZHV*<8TFQK2]$<A645.":BA=R^<=NOJ(%,H)2+!9H%.!"J[E>+ +M2^(@3/9+1"6W2O)L"JZC)MCDJG+%_;+=UEV.2(I,V[T@E<XQKA"\G.*'GD,Q +MF_.C^"NU*.#4`%ANJ>I4_>>,]J)SAMVO/1M>YM-AQ+IY8Q%WYDO:$R9":<E\ +M43>>2(=(QI-8FT7KC-YVNI^VNP$O'+G7+LUC#W-PU`SJ5TG3!'3-Y$71F&\R +MIAPA-3+KMQ`A.LV>T\I=DWOQD9GR>3!S^2N>6\'-??Y*P]1Z)]:MSNVK3KLQ +MO<_'-NOXQU:K;F)9UV*]@/U`:IFZLT$S[=SK<E'K+3VL>Y$R`$N/I:%W^2F4 +M+/B_%C=T!8XU<&6HH&1\D5,IK)(<RGDPJZT=^OV:P7F**-&?BH=UL6\T4Z4W +MF2,KMIB%:H]>)..[F/V(NZ=$2+-2JO?\]\+?^W[DGO?%VZGNTCMOF;O1@7CN +MCW\E)B"E<G.C4AQ]&H-[6K^5["<AB$4]J:*?,#6!1;U*6>\79I]#\?;E*)GX +M0XO'&S/8K]`A_E[O:W-?VBQ++>W23#MSBS^;+K!B)WYOZGT*KTU5WI%WOQS4 +M-JRU-KG?)+*W\?FK@=&+-$4Q=F<D?3P"^E3GK.Z<4[=SY/FV)]R@X`&__^TZ +M.``````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M`````````````````````````#_Y2\3^S%_:]3_Y____________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M__________Z`1_R+_^L?^G______________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________H$?\B__K +M'_I_________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_________________________________Z!'_(O_ZQ_Z?_______________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M______________^@3`'1%0R-%\6=F]S/A7.S5W8"T;9`[O=G2*&IP\3W2`(8 +M33>H2:8/`,[&-M/&Y!GWK4@<D`9+\//#CQL>,-D75WT2#SF<NKJ[NKJZ\=Y\ +M2K^$7ZOU>#E*Z5W?Y+GLL``````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````'J[_3SO^?JY_0_X^G^?0]2\[%_/G=#G^OW[GJ?'TY2['0 +MXL!]#U(Z'1A";GY-BV,W6@9#W(9][P]/H]'[A3K3X&Y3I1IDIHT2.XL$R&Y[ +MI4@=.F[#?/^ZK1ZD#&6'[\,TB^]<>9\"Y-'I=B--7:1>90X9!B^ZVMRLSBZ9 +MH3>*UL(X9WO3T;88(NBWJ;FWYMCU:_`%SO[.K)IJ?V@]X?H^G?YY_.^CG18D +M4%>CL=WJ];U#S>YFST<_/_)_+L;'E@R"(8&S]S/W[H'VO3[-G[XE?]16`H7C +M7$6F?`7.ERJ_\NC3.&L[XU<8.@9'&L'1%!-IUL?&T8$DS.,.S_X.*MFY1YV- +MX9_`(S_AWXIX>G6]DL&G_OS_IAR`Z?BI3QZ.HD:>+P"$%C35TX0*EI^YVGV? +MT]ST<W3ZT%T"0#B.5@&JY<>4:L"3()CQ_;TU>HQ6M?7%4=POV:74YL0'I09' +M.UA@H)]/=\OOS@G5Z&CX/T-X0-588>U]NIXZNWI5>"XTEJY?OC;IM''%S(ZH +MSSRMS1_9,TNG9F9*F04#YUGBD(U/->&+/_<==8H-%>N,41#3C!FNWYH_9"0. +M>;IUU'VT]?W7S>YV]+1\&G+.*[KK$#3UQL@WJ0$J6U([]?U5-)YOU'>%A%4E +MCR#*2V8(\L$@_1ZG5_>M2^O-UJZ<87UWTJ?*0@2\5T6OV04J5*,CN$HE#?-T +MJ_),E_7JI]%\7J\NOV0:*"'G_=ABT==/2VX$![&^U?\TQ0G]=X;?VP9/M_3Z +M_^/FZ5[Y7\O<_]K)Y@;H[>EG^"-JWT+GP_=2<=/[HM^""I9BTXF+H\"73COX +MW[H+O.K/@PF8:\]"CI##99:XQN]=Z+Q7KC]X.'6;4K?:GQ\:7W=J_M;M]"?& +MIZV_>>&G[8GP)9B1X9(_&5^S\.0(I^17K9SRSU$LO_&\_""37JU9_O$063CH +M3O+RY";HCLR!%4$M"P%R2C.-H4T+?C(5%67(4L1#KH$O:A2=CZ)I=,W#/<=T +M<&R;OD^+<G3*V-#T8MMRE$K(62"9GL1P;FUNN35HSJK,13^54IG+FP"J1WS3 +M<_<3SZO@IYUD6M^U=V%KESCW<'PA*+,IK-'".[LRYPJ!^;1;N^EV^/;XL@P^ +MXL4+T>GR7]R>;S\[^F=SHQ[7Y?2JY?("\?;D5='4C,DW>]M08M$KGBTY947A +ME#!LF.-1V@1)FYE7*S+,.\DPMX]7(X1G@KX\.YV?80W25I<SXX*1/G?)1@OQ +M8YDA?X>T4)IX`F?I3)JXIX+Y!.UCJI=3N:?1-X-R+CMH^S0QQ>.!3VST>W\O +MZO1/ARI:U0G<^O;3?@AFLT3F^I]O8V(QKO1N<6+Q&9-K=QA#.ND9M!7LK*_- +MMU6##8]^H@N)@J;S3BOVQ,LPCG>582+:*V35;YCEAI24B(J0M\Y2JU<8P+_F +M<EE^?8U9N2;#BC3]2#Y&PRB9+5U:-!>JF;]*S-YF1E9"^6#7@6\98[_J_5S9 +M'$"9N;%YV3NOV."UA%X/QR+L?QE@[7"<?DM]PX!HW%FS(9L$72W-F;R_Q4)6 +MNGQ]CR5DD<$4/@WK5>O*)0-=YQ`?&+VC8K^WJOGE[O'>>R2TIR^1+26]F(+M +MYZ./+3O*L8(\L1?`6G+W.'X^$2W9;!*^:F_'@4W(5F1JU?<I<_*X+HP35,JI +MJEM5JO-(9?!T]C5D:EUZ(/V=5"B=/;[77Z4GO;3=!BQZR[?]<[?TA?,(.PG1 +M+*-CN,P[BSG&,N11T#IXJMZ;#ETA'O9*[E.@UKVEL3*</_697Q-/7(95A0EN +M3W'AX__(.X7FQ'^*7[+,FE$--JER9`TC$WG.G;U(*&V/%&$R+I:5^NRL+=.F +MB-;NLD.,QMLO.D-N4DQ^%3\/P]GPRM\&PA]\6^?`^G#_-J,+%7$%"L/;_D7> +M!NVGK-6P/Q`E+AE,%%$=&50&N`AV1&#.]R_+!IU\#Q8S3TS*5TKB%829O?Q# +M>Z'1F>_A]/F@F(_E??%ME+7D9Y2]60><3]4>9D0#[V8YBWW9I-LRT@->CU>X +MD"9$X/)4_D?@SMOT4=JLIM4RL^SH7+YF^D*/KRO?/*04O+L4&ZDC*5OA&Y,: +M7!/@]ZOHM"FQW8VJ5;AM*JL7;-6!N[6]J0@0>(#ME,2.IWSQZ(5C"T&2/9\1 +MOUR3*%B2C7]$U3>GU7#`<LY:29%BL>_%*#CTL%T>+DJ]8LZ`%_S9T0AR,F*8 +MA^38LN[FV;>H'$8@.LX?T>!M2_'\S.MVAR_G/VL%"@,^G4"N=%Y0?-TLOL=F +MY3@:\3EV[\9U@?GOPA`,<P/8PCX+0U7FP^7S:V[O&R7?\?!$"./SH=,K?AKY +MVW[GP6S:&*.]3Z*,-O.B!JT<:$;VP.VV05-6_3X>YP4JS)DK=RTB.,/IR,AY +ML"8-FG22/(UB;KX-O&GN/W@4'B1?D.;V.J,?[Y`QL._(SO5J5A^ZO12`4M`, +MJ6;H0HIK;&IJXH>2%2*:&G,SJ5^>K9HV8Y<<-T]9F<;HSQ'1>LBVE;`)X`M' +M./CRH=Y@#/K"F_3I6A'NX-G8Q88FOI$>7QTRAGK]^A+$]U?7[^C;)"5,IZT` +M>9UCDVK&E`C>6Y/Y\5TCN5MV?<^!Y*D%[^;!P#[4=R5G$C'T,<`\OB>(JE,I +M?/=X>9^.6%.9EVN>E38)-%EIP\68%D!(J\.2P/2,9ZTN_ZJMO(<3\@'.$AJ8 +MLQN+'*1OZ>MABA;T2=+%VV^E#8=?&(*C">6"'4>./TYUUZ^16ZB9?F032LZ@ +M`G#.NUP)E_R"<M6ZH,RV5W\><$+G.1MQN&41O^>#0SVYI;T@#9T";E^4T8IN +MM0VK05*WSG7N*-I/$5.BGK)E"K(*LTJYMW7*0%E#-DIT)\<X]Z_6+!^-S&?X +M5M\VR'^/GG1)[=YL@)317A]4)RM#RZ0_]++#W%UMV>6M`)"$GL4\!QQ+S/C2 +M6*$*_!)7O&8J8SQE%.1)'$FU)&N9>UPB&'*@ZVQ.5<97)*HZ$LP8EM1J`AG9 +M)EA010)R+E<*WI.:]:O'+5J/60FO]]?4O>9F7&+58QPXE=<$_[Y=?<@VU>AS +M\Z>^"&//+@SM?!MP0'>O[:_QZC1"HHK`V\AL!%@P)*Z;^UUI#AC3SVS#Y2EC +M^[8S`\,8J0E7-CCXH454<5$7#N4^4`KW*<G5(VKQ8+K*YVKD7145\,&K>54I +M;%J4N2KFI^'5Y^,1K?,;1U`HG-30&8H;-(IHL$"RXYQ21.AQ<9'YO,W_.Y$E +MP]>$?@W8SRAX(VJ]XXWC[7@D_XJTY#HU:-Q;\R[07W!A<T="K2)XWI'RU4]. +M.B4VE5DE8/H^&?8IT;/&DB_AKO6='/.7VOUHP=&2.Q^O.[8M(PZ+8RX)>&CE +M:\/ICJ'2G6<<EJ=F"Y.C<'\,/DL;4,-<Y)>//^G^D1(YUR?'_H@@.0O#%9._ +MOL\-E.KOU<RKP?F1MVE(@F+`%FU')WIZ8$55Y9?UC[66+0GV0SRY]T@&]JS( +M!Y=JY&2#N#J[+S7C=GR76K*\9=GT^U<_P>F_C24U418L\0)"7CMV")#BP2HM +MEXL%=+4KYJ^WI@G6@%JZJ[2/0ZVIKYWXPTK^^'MU>:D;@0#<9S'L>(,5JZ50 +MDJMVA5GDPS039RIQAHKI;Y7FLX"ID"[LE5[6\F6Y!^#4VLGO*A@#T>?6EI?< +M/]Q)7K8F6YKRH0MPI-O2^W;BQZX['+ERRY&/'M;NSM[%&HQ')&!VW@$W]O9P +M:^EI=FK+;^M81W0]7#)P37$H''@F^D$V;Y].5'?$\D<,W->K[5HZ?\OY7:'E +MS7:OM_6K]**]WT>5P=ID5_'SU^A)5`P>B12EBOG!G(\?]O(,ZJZNARE%[&H" +MK\N7383F-&V2K`]XL&K+H:G+2H^[N<!/.Q3!,D0""(UL8KZH_>T.GXJ^6+]: +MLMOZ*,]>"%W;U;$(?)ED_MTH$E8_F)VC('`[:RJ8M;7I'Y&,+WQ:7SW<$\-Z +M5%RR^F`VQ>W:Y&.3KVD*VG3V.Q<E6/@GDV:/=B6KF^.>%\AF-W>_VHUDSTKK +MXURQ<VO*6TMKEF5.2T!X%>/J5\!K[%W@XGY5PAGX(S<+-D5242(29Y"1&(,# +MK:R>>-B?KQDWU&&LKYO*7BN&Z)?.1LJ9O&\SL.%4K;C4F@!9NMF:=/8UM.OV +MN_[WZR2-K._^\9OGE/8Z4/D)G&82NF::OD)F;4KU#B?LB_ON7)G*2`48/P@B +MRROKP^*$_2R0G^YH=[L9>R6.]N[.33"H=?,_CT.?FQ98>3V_Y09`[MO>)F+Y +M9DU7KK_H\=2!=E-_<K,96&*94CHL,8:]C(\O&+<ZKM5UUUX52A[TNYO/#WJ= +M&;>'L[\&W'RYVML>6W2B5XVTKCM8$=QWDW7T)C=H/2`M>F>1Z.EFT89XYM6] +MY`.74[6+UO9V-#+L2*RG?O$G&H]`_8.C5?AT",*;PS'GFM70XN>WV4Q427^( +M`*\<MHT\Z,Q>/X#CB^$(`_Z;QM?B78W;%ULSQ]SP7'831UC7'T-)1'M@\&T\ +MA	:U"^,-";S5OB:6G$,M^1P8+(5[>J-K6.5*L'$0+)C=0HM;#!4F--U/NZ +MDV&E#R0UWL[7NQTR?(K-5,,P+(U-G9HX8/FZ7$?96E_ZGDBWBI,:/#Y=^S<V +M9<3M.,W0C[WO8KMU4&CWKR[\3C:I4`$Q>;#LY:>^CB6&-NY)Y7X[_!HZ6Z,D +M&]`WT!%WRJ<9];OD]9Y>24+=]B3T1H[A.%^F.1/,DM#4>!\9]0K>"FYBN[!+ +M*PDPZ'TMGH"-NLKU?XK&8!'XW9[RE.P5>/,E6Z?%N:LC`<1CX,4F<@B!KO78 +M!YO$IQ`''Q7JO"IX\?BBR#]:TMSQ5EE<!YG2)LEROSGY*X[29)>G7D[+^G+: +M=BG2QFL>/B<S<5@J>O-QZJZ$.H`J_PPEC.-JXBK7]T=G#'\]ON_/CN":U"TF +M8LK:^LVXWN3E`F6;_#F@\C#/D]9LWKT#%HA\3BFCW4MIP#\!5<]$0Y$=*]?; +MJE'.^>7#5O5WUX9)44:))UM76AT?_M<RXWJ8_@$J;H5DWIY9+6/\.[CW'_"C +MV+'_!9F\->55^=35MH8SBP1JTK'D6Y=#^?WQI>=*9C8FR=6JV)]+T%<P$RL@ +M+#$!4A&2N\XMG.$]X5WW8@^?H^XGGP2NK_;F<CX2^K9WA-F_Q\NW]5Z,S9=X +MP^^[;VM;-DM2SI++--@@H`YNC!!SIW3#V[$/V?AT*=A:S^4#Q6O@YL<JZ6_- +M@X-O>__'6]A[DT)F]%M.9/8%$580S)=?9\16F`[F7>"]22&A^BE$`:%]89YK +M8LMX4\?*>YWLG)25RK*.K)901`V]&IJZOJ1J_6GW!LR>I^"`[07J:]@%V?5B +MQJ?SP/;WQ=6$)VG)G>,CD;"*2<J(OB#^)R.WIXC(N(!_+=$3KI$_"Y&<J\Q5 +M+(W(X7)#A#<,6H'VJ;KZ/GF5"]\B[PZ519S;'6/<B@:0U3MEPP#*([L$OP@S +M9Q)Y5(EF?%RYY]=K^;I?UI"%T1]XXF5Y=++=$@N5HJRB67K$WBSO1:YU"=/B +M)_"P(1.ZQS8DE]0DN;6W9D1UHME*X8]ZG;,6*0/A>]BO';UTABY)#56A_?JZ +M>CVO<+0[/9T^Y#1S1\'1BO@_7G[F+:SX]=K^LYM7V:F+!8@8V<W^7&F.UH?9 +M[;T]#I]GH_9V^WV?K[?:JWVNG*II\HB[\V"?8B%?71EDI077`I7TEG97?N-O +MC&L&=]$:UV8J4WMD;(G*L>WCQE9ON?5'U;4?[#8J%5Z%VJ6=4&'1J4HO;()4 +ME6Z9]B#F&EOGA"Y<PY*_*Y79QUJ;7V+-FU!#KXE;:WU0`4;/;VD-!)[L=-D_ +M3GC"?6D\X)5M6:Y*X<+KE2V3DFFO3[FCV[FFU<S"T-"?$!73TNQH=WJ]2@<Z +MW6JC("$K@L-Q6=P:XO-'M].TQ7R2^>]OY\)@Z$KQ<F"?P,&1XO_]!@N#:?_* +M]D'H2`OY#VK'@4R'XJDN0LMMUQ&C74I_A^@C+K*0V\9**QJR&W&__7VZ!2?F +M94BHMCHVR!.MC7O1[5W+S;QE,%.9<KMA)@>P\]L>4<',^O+3P:'OZ[N0-$59 +M`T+&V[RU6]6;[V-V/2\DOQI9RJV8A[VJ&3N-FHO1'WX^C$`6&2L/DNQK)5_W +MUI\QDNC?X],*1X0H=%T;6[0R[0Y+&X>-&5*QYNCCJ;<WU-K2NWC1F.X@]:,Y +MCDB05]\JK(1(:L@[&WC[JL_"F?*N,%&DA]2?=TI8T@^XL&149^2<BG8ZO3_O +MIPHZ+U8;S.]U.G'\"P7.1:A`^22;?A\MOV=_1[/4TX4F2Z,'0#H]KK_7D2HN +MGW?<#O=O3]D^SNZ'L71ZWNGU;G,OA\4?^F_&,[%R65$^*GIFY'M_*R<].=CZ +M+\,;W(;5BA1TK@[=_('NI*(.[=7+D9VR)6IV=19U8C"[HU.<QN9J5WY`7=25 +MAKC)GFUP))-IG;$2[8HT.WMZTJA2P`<*UL='CJ2U>GQV.5<O#5O5V.?:V0/- +M?F(K#<J='3\"=W;==P'`"UX%SJO[17QI["I]`&>63LCPVSZ%<=8_&<$7YI5O +M82X$^Z<##T4I_X<RDSGB;#97B_Q;L7>S;/-5[M4JN)*<.,PUX=<@21*+8?\@ +M!8`NJL$\VJOXQXJ9_D3.WKH>4UTR@[R57^/8HS5-09>'[^!EC_/B&H.[#.Q3 +MA=.O\</0`=G(/&Y;(.QEQI7,/5U67I!H=R(LY]RA\K)THR__[3U$```````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````_]DO(_HQ?VO4_^?______________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M___________________________________________________________^ +M@$?\B__K'_I_________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_________________________________________Z!'_(O_ZQ_Z?_______ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M______________________^@20_U!:<_W4__```````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````!```````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````<3"'5$0S-$0`6%;V<_"CHSP:6:46DF[NQC8NP%;:8M#'T6$UFYN[X +MD42:258B32TU!:9>#?N]@%)]")2CD=$S-%44B<&YOCK#"),U$QU<[XKXES_" +M#]S^_<Y$<$\\)@1Z3(`````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M`````````````````````#E^-_'N_Q^CN_J?+_#N>GGKZ7\/F_AZ?_\MI+%' +M_$IU9_]&GQO_ZZ>5ZPZ%X(2*=ZA7"AP610K[,#0<%X9%HLD)2\/`J&-COY?R +MG,9<&][-=*A#J1#.$KF[F?P\<.DB+#O9I(I'%#N>O1HMK8[TK?GHWZ9I>T%# +M)X;*=..96:2]=+=3RS2F:)OT3CU)KZS<\DRA,?'S+YL\5[?-\?'*-X*HNVBZ +MB-#(6C)YI)`.:;WIE8^&>K>>'GQA?WH1A_7[W#R3=ETS[G#IM%;6-G]XWO!- +MAX0VV(>?FC9NP7"\F[&TO-W-0PY&=**)>?BMEJ+VORC5[@2A^*Z)")FFU2VL +MD<,HVS-5Q28;8:-B#]4]C)V?/=1+HCT>"_3?4D3F5Q[?AX^'AC]Y>[MP_`MN +MD4\U.B76MD\0]-3RYZ38Y=7@C=_))FF<&3_:-;2V0DW3)!R=KW]%0.8$*JV2 +M>I+JJ[E57G\N5;N:LZ$ZG(T`S3L=^#S.*\R[M58C@*>]HYYN&^:3/1DY,&VA +MQ9;V7==AFW`**UPW[P>XXP;\1U)P.\F:KZ!_8]&?U7U)P,I><TOSJ;P#Q0#- +MJ2K[S@^7/O[VI!VOKJ8QN[5O-_I5JB\SQ'7WM@UG+V_=N9;!@2U#V))='.## +MZ.S;M9`0Z#C5D+#&,[^H1@Q<(UH6GCW$[-LN44$:Y=Z&AIP17*ZM_?H^S(Y` +MA4ZE2!?S^S6K+6BR\<)`&;5XLA"QF!ER3L4WB;>G8\?'+!\\)<M.)H\<\4NB +M@=.2N[&US'I^E%FV$=*=Y=!A3[^?/YHN&<GCV@,:U$@.;TC>/LXX<M`@L^C+ +M,>3W'8G12(Y)[7ZU'@[5*&$3H;O-WBZD%*<,!\5WPQ2PU>![C#?\N7&Y>\8V +M&WJZ>@0:EI@G=6QW3DA#V<;_)]$8?60C]:#+CR5@#CM7=[?T^69B_WV1XX]U +M%:+-PU7^9<=S(&P%A[E&0MFF5L"XG'1IB09CMZLZ50V]CU%^MII^7CR2H+'Q +M8%%]'1Y[K*,D[IV.4S0=.AR_4Y\HGBR<)6]0DEGU&3W8+&Z^\)>']G+O_C40 +M"`*(QN]D\8N0O]:LPC6LSNDMZY*>&4C$<$)X7DIK_+(N//;J"U'[WG:S\7N? +M/6$C)*3LET"TF;2#DDV9]^Z3]RD2]Y/GOR=X>_[@6$ZO)WF5IG,82>?DT\'G +M^3%SIM=WM]O_+M=ON]KN?R\7=[FU\O;VOF[?[[]2ZMP=`@Q9H+PRWYK1WSUJ +M_[3\?)Y?64GFWFX-1YU2VH\U[O<NUN6L_*=/[=,X5]GOT-=2]SY[`]Q1%/V: +M9-CM=&B-,O+7U^W\\\,V[:;[E?[DMB9MVOC[K=S^?DKXL/!M;OS]S^4O5[UN +M%J\3RD';3.%ZY,Y^7$%?8U?QV_Y]O7_!OR);:>Q!$#N['_78^79];_NO6WK3 +MN]G^?:[G39$^N@$7=_C\T3%;HK:/EKH#R9=,JQ5U\OS)4A7Z&1-K]2;#IL%M +MGX),/W+O1Y[;3Q**GRSN&^,:+VJW:[_%[?LF_.U=O^';_R_E@%YHHQ;Y'XOT +MS&?<5GB\M;9NWCLDH17\\K+(/OP]^#KUT%3YUIIB5%-%'87*8$.+>ZZ@!:A_ +M'!?!H3$AAUP-')@(>M]WRU$3WK)F="!$VD31%RGI#10A'7T[OBU12/W?CDE\ +M99,@O>M-H.&/QAGCYWIDX(@?CR3:=6J@O]6HFQ`V%7LMI]1Q>\'=ZS@OUY^+ +MWQDC9N^+3\!$#HA]V2E?<QW^G]8&DOA_'!'CV+XG"EC\@]MKW$.'P5W7W9,J +MVI;#B@&F&9!O2-LPG]3YIA`GOXWC(G>F]DKHAL[+EL[J/1--3@D!OY<`F<&. +MIO55O_'>-%=RNB&!?.H^QFM8]F/VB]MS+SURAU#)KW+%0A5V9PBC!Y*7%4E: +M2'ZGVNYBF`.,D?GS2S^F8OF'`!*9\NIJ9$;VSXZE_G%P<[&??S^3DHI<4X)C +MX[N6^JI3ZD%BR&US3+R>/8QK95$=^9%6L$M=^QQS8HI;P44G21[1@?<HDC^O +M/IK#,%(Q.T^6^@%]/8T8AE/%&#T5X=SDLU7H!SG%@&6;V^G$H%&)MHNC&)-" +MJ+)3,&!(6G]X@>Y%"(?N'//`A>7\LD9LV;N#!Q6=%9ST3AD2,#@6Z.<;?-'C +MIA4^/KL4^HWY=DJ@[N[1L79^*\+#L?^)1NQFFU4I,$N3M.S<$%KX7@^@A_R' +MKR^3)`(/M+GD^D@UZE*?YH4'M6[-@-<4!DQMSZ(NJ4#)Y=Z6MO8AQ>>DG&:T +M+ZIL22^=^U^>:=.X=FZA)">6HX#I\^;<S36BY\K2@2#/Q^NO_/@_O90UKM7H +MZ@B";'U=_Z_!]U'H;V.AD+LV,U_[]`XM\G^,SC,FDOQ^?&<3V/\?DZ%IIQ3V +M.QDV/YVRKMQRCMR8578[/9V/^GK;[O]/L^SL_1KO7[\(&$D#[L=[P_3_;P?] +MO9+]_^>ST+1T/6QX%5W([>$T_;<B"OL+[/_-8=3@/I<)DK8<4D[S;O,N[?*3 +M0X/^2RK`H\\"C`?8ALS(:_L]SM]WYNW[N7:?B7+WA@76A8R1%3BY-9RU3\=/ +MF/H\W^WC;HA#]C)5'%R9>ER#BO7\-,(('8H13AL^=KP?=]?R?;WON\'UR"RV +MOM^NGPX8=/-^W99V[$\$U40[6B^TQ'_O+_J+9?!DE,_]$9R]42S<5V2L-AR* +ME:<VB1"_=J[QI4,AS4J>QX*$U<FHF%Z.UVH6&;$_]C-2R1F6Q0;%OC1J'Z;O +M@ZXYU(]B>;J(457_3'ED2ID@?<&JNNUA0F3(7P)_6:G,,B;<R^N\M)DQ]]M5 +M0[37:F$@"I^6RT9)Q=<,ZE.T?>WK;P?A]\&F;,(GI[]Q7U)/-C979K?-/GMP +M_1J[R:;_J6?ALFZ^V_"K`UW+')CV4K9)Y3H@040#(I`O],;YU8Z=-W^9V_HI +M6;CL[5WX110BV2ZY$HUJ:0U5PV9`%3HN.0@;K,##!K$Q<]_EO=S_8D;`\L'H +M^GVBL+G3:J-&_`M=!2;36G&KJA%T>?W9NO-R3E`64&RY_)9>`T:F\,DC;`[S +M5AI2.*^PZ[36'?8W#FW6;Q,Z2>7)?WYY-_DG0\*AM?>S<\/#$OZW5P+1U)&+ +M^SF]EV]WDDVQ]OGMV\DT96B,3'P['*XWWHHY:Q&'EA&;>RZ/A(FFQRWNY:JB +M?82=3DO;%E2&<GJ7`XV&P6'K72M_/S['XA,V^$WM;R)C/1]G$2?VKH;Y-/WA +M&E_'EB>^.G/1Q79=6-.\>)7L;F8'<TE'UQN>TBGI4I3',=73GQ5ASD*Q$53U +M#!['W\-U]=2+W+OLS4!)@N:W2,@`O/9H:5HLQFT7X=B>]5."_>/EZ43Q4HA1 +M=//4-HC1>5:A'JPDVG&Y`H2OYQQE*%:9,ES1$4H2C)"]RDXT=SQ>75)L11BF +M$R?+HLL<1Z5(79BM"_DSS5/INGZ8C-\GRQ1H67KR%SECVQFJZTJ!4]=7F93I +M/X/\^__3Z>=R96^);&E$SLYNJ\\EN'1-*"\\X6"YX9-ZO9C\1`],``R_?+Q4 +MJS?%U;'8FZ)H?\&7T2X:\\)TF[!`2$MK"%!/WUH:?D*=P2(D[VUV>L+D'TQ` +M6U-<]&8J^<#T3;3$Q?I(J\CR&CW#FUZZOH]&:EAJWWY0KQC;,G5LI^&19;33 +M"-WCXIO%*(O9R]9N3Z9<#:,,P6(-=9N*TU0>B/\X<^""E=\5\U5UI=U3?V/1 +MUNY4AJY7=KF^!6N[N;18T7"[MK+CF@=38RT@M.&R&%,F=\557/1[G/EX3O1F +MVZ$IV@\&,*>K:SD\O[OBZ8*B>M:'UM%[8LQ!>S6TO3%&[-06/GGE"9.NQ37, +M1C4-PS':FP[,GCRQ"R,FS50K!_P7:58%;#=J'TEP>PR8>67$Z-)(EW%IT=9` +MUA\P1J"^$.:G[ZXIB$4Q,M:8W-::K[6M=T^J(52B=%J]L4J)U3\=$2[!VHSW +M'IPMUW;?PTG#V";W!EX)AI^+$#_FTU<3O/W)EG3>V6_R3=$_ZT-0#)7U:M"Z +M<(K3I?=`#?FD!?FX>BPCZ16;UH?B"PL\RP#7EI#[E3.D-F:6$0;E@F=T0B:9 +M(V,=.3_<X,^[/IHQ&,_%$6@PC@Q4WS+-HA>X&;[U%"_O4N1MS2OH(M410+>> +M[EW>B??AGX+1EIB=@L;FY,0FF$8H_AQV..U@+WCT:KN`M:^U?=M4UW)HJ<T] +M^PSO\)$B]O;_OZU\7U_?X?MNAA&V8C,;XY>*\K_HFWOO\).ZOFE=C16N>;/M +MVR-V;O][NA>6HM0Q?]=@80MI453VJ7M)0NU;5-O)X+8?NZHQ,^7L_1;+'_O! +M:SZ!(GAM0&J`8<.!KWVY!22`](KEQOW8087>AE?;GT:<7M2O+6<`1<\ZD)>6 +M6XLLK0@"5>.ETK\FSP-;!N>*(E:I\O):-ZM%X!<E9R<9>P`9?C\IG@\^67^< +M.F&Q?+TNND)Y4/?@QQKJ9S\\DK]JFCR;OFNL4Q5+6/7W+`O_IMTJK_X]V"!= +M;/,2#=W82.H'UP1_9'S/4M&;<]U!?_I]D/\2J2#TRA!^A5,#LY[)2HS)O+;& +M;4.YT7NOR_+V(8A#I@EUGIF7!5(GG^.0#=WQ8I61F["JT9CS\.6E-3=G]KCG +M0(S/PV+`0U7I1=_EWNLDBZ/#S;H/S0D-WL:_?>2!\6HFE35>:Q09FF_BIPQ[ +M(2BV?Z:ZPUK=A/!&>@1W709J-^R;S5DUC?GZJO5](#GKUZG9^#>OVY>"LZA] +M6=2,&<9H#,0@-T^`2C5Z+9\/.T6G\.3@W_2O-R^\6O^TF/]A;/@WS]6;BK// +MO6M1UY5Z>_/!H\.7R?#R'S&MD'9]]=FIL#[V\(R[^&;\\OPKSBT?=Z31U.]/ +MMAV=:W:NFR%.W+/?;)Q:._"4/U/$?NYTL5M^!>_TUQ_X=]>++^7N^CU@B3:! +MF]OZ^4H1+O\FQRN\B;]L&R)@66J]A:4HXF\>]A'R.NZKX7HAM77PPS2%S,&1 +MYA0>>LV)8H]8M$L.U=X?=AFB2W-EWHB>?BGD_3GU5O'@E(;NYEOACFZ<XG4@ +M%6BX1?D.)6LQ(`V-W'UDB:(4OR8M32@D.]W.4/5QIV[IG6))%'IS!:?E\(3M +MGI#WWM[5NI68U!?#CFKH66XGPKEVN/CG=&+6/^LZ$Q7[ASIFM8WY*!%OQI+8 +MNKS//67O4H#I21FUW8)'=2=`E$@+'H"GAZBXO^DO*J#O8WK.1<..3:LJ_B,M +MGG#52DGOEY]1[;=%8[UD/:30I,FGID)NCH#J[&8@/G<YU?U\NUNT-=P(Q>T+ +M[-I3/29D8ZBTQ89WI1&=9"2DSZ\O%4;N8%6+C?>Y[,E:(IX="S3UU-IW^I?E +MVJQ+AD]KN2&]%$BXRW)R\5E;"4`02HSU+;[V8RS3ENZ_P!%QS1#:O["[AFK@ +MTZ0*JN[0B@QDSJ3;Y^K/HB-2?V^'34F]+Q3O[TNI-SJB&5]7WS'7H5[B909= +M,"2A]7P:?CDM6UU_ISTIDIPUM6'90D35=$(QWH^/7<8LB30FG]%$-V=C50]+ +M(VMZ+_B@>&([1M<G8[/T4Y^A37E:OSI%KVB<:2R;>V?31+:Q09S+_\E[-CZY +MI&>5XFX6/UT?12:8(IAQN28[\1\U4R[60W:!*S@526:^/BRX7#1X?6F<6)H( +MNKT#)[,N.(C^DPT=F30FP!5O5<,&D#1VD7X#=\6'Q6A8R&8W^5O6E>G7-=PL +M\=%NW6$WDQHMR4`6TUU6@UWU35[9]10TUGT>AS]GIYU3OG5&0H7P^RPYE`Z+ +MV5&0Y=\71S?UO67W?'SY^UR<Z]:W'_[=Z3\0JG1T4QIP0).7[MKRT:R]^.6Z +M?!FZ=NJ7A1U,4!$QQY3/E#4KX?5\*VAM&!W9#=RMG'Y]KL^GHEN%"3K7/L$R +M++Y4UM;31WF:B#5&:^]]/V5]*K`$T9=,$6(\\"^7FC[IT?CDU[MS)N^:S.RF +MY=X0L\*#ZXZ6D5#,E_DA<:PYWT6>Y'N2"&A2+ZZ'1OU-Y]"37/OA;Z@F#`GE +MNEJZ<&[G)!@6+92E+F[GXZFZK%>H8$4@DM2]<9-JPZF2R[AUS.TCL?%#@D]6 +M/!+%,;)EJD&PP0L(FOO>*4-,B'^%IST:K<W^G+6L0V?+^[:GR6];L=FT;DSD +MZ6D"BT2SY00]#\Q_?2R-?/C<-]>2[)EXK=+2X]4QH[U[YJU;\]N&:E/,(C<_ +MQWU_BFAPS@9G!I=2XAEHS<RZ9`ESW5TS`MR<-'#_UIJAQ>NW4-W1#Z)G@-#R +ML?'=RZCD'TNIY[WDXRWRXW1$^Q7GA\5W*7WEW=6!Y/_4*+%*9AX6BG(-NC0, +MF]53EBA+-T26)@D&6AQ7"'QIP%K`_?7D0FZ8WU#=F$EW88ILX4Y$GF>]-]Q4 +MP]Z7+/VW])HZ,M:3#:=/)T*[%8(L75^`/DFT%/><#4L'0X,Q91V,7SQOO!G^ +M9`?%$/.+J/V1`B?#WHCX,VFGOW[_S@:V+DL8QJXW9241Q>/)NUM7)=XYJZ5; +MUE"+N;!Z15RKBGD#");<W#6])[XX^&;\-B2:9]1.4IL3--WF6KU:)I73B7NQ +MMSKO`E-__QDCA;V2'=G^F?TG"P>K=%#+'O]3]]35.G/?I*VJY%=Y1@Q-_<R# +M2AOR[G)*X-9)EUKH]&3!V[7R8[=XK0HO5?8IU#=,E!#4_CR2].;BQK0:76PM +MS.I8V(QU-NH8:UF>"]R4=[9"BXIIU4@!MWS<E)<GI"!N[IIQ[3K1716EH]M2 +MQ!?4!,0I?V:L>_R7KREH2WQOSF:`[[$[I!3<41'1U+GCZLVCS8Q;(_OH"MX< +M]?'*$0I?/X/D^_8[W]_!*"?I<Q^QG?C\ZR5@Z2VW=."?I<`\F$W^48OV?AI1 +MF?Q9Z)F4UHVAH^^4VKO'+K<J(TZBI"-(-(XO)EPC<V]_:Z@',MEI'-N#SR<@ +M\LB\&:(JBT;.'TE)B3?9Y.GPM8?G%=W'HU)=2MW&Y*`>K2IE9&0^B^"V+,9* +MB+Y)N&Y\U82&UI=3"/6]FD%V3B*"73G\7U*$1[(O74N7_KX_S_/E>6GT(5CP +M;'+.,V5L>/#SQB=IBORS'4Q&T;5I4R>2)9:D`O+*O'J;80MH<Q//Q\7GA[19 +MI\'Z:CY;O%S'QF98`4@IU+9.9+F9J.R'[HWX,G2#ZWLG!D\D1R]X<LZQI^X7 +M(C+%TQZ(@SJ:K7D\>*1#?VZ+N4Q3,FY$!J3&2DFM7]\->P7QVBF[]:T0W3'1 +M]KDN8YP;S8AE^$QV<E-P+(WL2*%`4<]6[,Z0GRB@C1-T_QL??$EDX[ALT=(1 +MV^>653XJ?WJ<,52H:Q"%+`;OV^'V\R`8[5=HJGW_;U^-B*,>"M)S]FU+0-%[ +M0WNLZ^,6YE>,*=QYY_-EMHN:X_BM$_)+?C%N/3-D\)Q\G3V3H:[H`'549PK' +M+4@9CE'3VO9/:YHS8WJO::.J&Z?:71\-49;^.1^*M4FFT=,F3RO=CW5@B;-. +MNX:HY5.HIY9SDST9>>)5<\^>!YXXINP4R_](89>GF+,%*=\VF\^AON\]37?^ +MR])EM$C<*IN.@5%(K2CL(V1*WCZH?!@H9MUE/^P]L_+-LMZP?+?Z'R;%/H(9 +M,:Z]7+W(8?,H2>E*7>BB1'!MFZGO50Z-F'UK+UNY*Z^+)![Z%:.W;E^"J?A8 +M+IQL#-6*GO1.00,2*)8`[/Q7HND<VP]W//$K9[-]"5,>VL$9IT-9D@0Z)DC^ +M_'+L=;(2M<=7=782%C['Y_1.#+ORC]FP+NCG-W]^P9%)B;@DGI@+>>O;(U\S +M,N%).K7U1`TL:IR>T+CGV(/,!&32?D#K[:-S-IB"??PH/?[G"M2),T$C$()J +ME!^CN%C<)V.4_=^`-\D<&74?8=._[,^]'53=6)'3^K>S4=C?FUN8C<::,_$; +MZT90_J/CQ4H\]2O<YNHC;T,%SF1B/@DF]2^CD?XQ?D][]C'E6C9KA$HKMQ,3 +M:$0:3%HA'"W-_/N^:ZN5;-DJ:KG:@CW-GM?O/;;("::H-+7%/@C)4PQYTX7B +HA7]MP*!5:)K)N"3E.@#F]GYZ^&]/?EU57!]G"M8WFS>Q2FS^$/?0<``` +` +end 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 new file mode 100644 index 0000000..f736f13 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ad.uu @@ -0,0 +1,892 @@ +begin 644 - +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 +M`%ANJ>I4_>>,]J)SAMVO/1M>YM-AQ+IY8Q%WYDO:$R9":<E\43>>2(=(QI-8 +MFT7KC-YVNI^VNP$O'+G7+LUC#W-PU`SJ5TG3!'3-Y$71F&\RIAPA-3+KMQ`A +M.LV>T\I=DWOQD9GR>3!S^2N>6\'-??Y*P]1Z)]:MSNVK3KLQO<_'-NOXQU:K +M;F)9UV*]@/U`:IFZLT$S[=SK<E'K+3VL>Y$R`$N/I:%W^2F4+/B_%C=T!8XU +M<&6HH&1\D5,IK)(<RGDPJZT=^OV:P7F**-&?BH=UL6\T4Z4WF2,KMIB%:H]> +M)..[F/V(NZ=$2+-2JO?\]\+?^W[DGO?%VZGNTCMOF;O1@7CNCW\E)B"E<G.C +M4AQ]&H-[6K^5["<AB$4]J:*?,#6!1;U*6>\79I]#\?;E*)GX0XO'&S/8K]`A +M_E[O:W-?VBQ++>W23#MSBS^;+K!B)WYOZGT*KTU5WI%WOQS4-JRU-KG?)+*W +M\?FK@=&+-$4Q=F<D?3P"^E3GK.Z<4[=SY/FV)]R@X`&__^TZ.``````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M`````````````````````````````````#_Y2\3^S%_:]3_Y____________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M__________________Z`1_R+_^L?^G______________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +MH$?\B__K'_I_________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_________________________________________Z!'_(O_ZQ_Z?_______ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M______________________^@3`'1%0R-%\6=F]S/A7.S5W8"T;9`[O=G2*&I +MP\3W2`(833>H2:8/`,[&-M/&Y!GWK4@<D`9+\//#CQL>,-D75WT2#SF<NKJ[ +MNKJZ\=Y\2K^$7ZOU>#E*Z5W?Y+GLL``````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```'J[_3SO^?JY_0_X^G^?0]2\[%_/G=#G^OW[GJ?'TY2['0XL!]#U(Z'1A" +M;GY-BV,W6@9#W(9][P]/H]'[A3K3X&Y3I1IDIHT2.XL$R&Y[I4@=.F[#?/^Z +MK1ZD#&6'[\,TB^]<>9\"Y-'I=B--7:1>90X9!B^ZVMRLSBZ9H3>*UL(X9WO3 +MT;88(NBWJ;FWYMCU:_`%SO[.K)IJ?V@]X?H^G?YY_.^CG18D4%>CL=WJ];U# +MS>YFST<_/_)_+L;'E@R"(8&S]S/W[H'VO3[-G[XE?]16`H7C7$6F?`7.ERJ_ +M\NC3.&L[XU<8.@9'&L'1%!-IUL?&T8$DS.,.S_X.*MFY1YV-X9_`(S_AWXIX +M>G6]DL&G_OS_IAR`Z?BI3QZ.HD:>+P"$%C35TX0*EI^YVGV?T]ST<W3ZT%T" +M0#B.5@&JY<>4:L"3()CQ_;TU>HQ6M?7%4=POV:74YL0'I09'.UA@H)]/=\OO +MS@G5Z&CX/T-X0-588>U]NIXZNWI5>"XTEJY?OC;IM''%S(ZHSSRMS1_9,TNG +M9F9*F04#YUGBD(U/->&+/_<==8H-%>N,41#3C!FNWYH_9"0.>;IUU'VT]?W7 +MS>YV]+1\&G+.*[KK$#3UQL@WJ0$J6U([]?U5-)YOU'>%A%4ECR#*2V8(\L$@ +M_1ZG5_>M2^O-UJZ<87UWTJ?*0@2\5T6OV04J5*,CN$HE#?-TJ_),E_7JI]%\ +M7J\NOV0:*"'G_=ABT==/2VX$![&^U?\TQ0G]=X;?VP9/M_3Z_^/FZ5[Y7\O< +M_]K)Y@;H[>EG^"-JWT+GP_=2<=/[HM^""I9BTXF+H\"73COXW[H+O.K/@PF8 +M:\]"CI##99:XQN]=Z+Q7KC]X.'6;4K?:GQ\:7W=J_M;M]"?&IZV_>>&G[8GP +M)9B1X9(_&5^S\.0(I^17K9SRSU$LO_&\_""37JU9_O$063CH3O+RY";HCLR! +M%4$M"P%R2C.-H4T+?C(5%67(4L1#KH$O:A2=CZ)I=,W#/<=T<&R;OD^+<G3* +MV-#T8MMRE$K(62"9GL1P;FUNN35HSJK,13^54IG+FP"J1WS3<_<3SZO@IYUD +M6M^U=V%KESCW<'PA*+,IK-'".[LRYPJ!^;1;N^EV^/;XL@P^XL4+T>GR7]R> +M;S\[^F=SHQ[7Y?2JY?("\?;D5='4C,DW>]M08M$KGBTY947AE#!LF.-1V@1) +MFYE7*S+,.\DPMX]7(X1G@KX\.YV?80W25I<SXX*1/G?)1@OQ8YDA?X>T4)IX +M`F?I3)JXIX+Y!.UCJI=3N:?1-X-R+CMH^S0QQ>.!3VST>W\OZO1/ARI:U0G< +M^O;3?@AFLT3F^I]O8V(QKO1N<6+Q&9-K=QA#.ND9M!7LK*_-MU6##8]^H@N) +M@J;S3BOVQ,LPCG>582+:*V35;YCEAI24B(J0M\Y2JU<8P+_F<EE^?8U9N2;# +MBC3]2#Y&PRB9+5U:-!>JF;]*S-YF1E9"^6#7@6\98[_J_5S9'$"9N;%YV3NO +MV."UA%X/QR+L?QE@[7"<?DM]PX!HW%FS(9L$72W-F;R_Q4)6NGQ]CR5DD<$4 +M/@WK5>O*)0-=YQ`?&+VC8K^WJOGE[O'>>R2TIR^1+26]F(+MYZ./+3O*L8(\ +ML1?`6G+W.'X^$2W9;!*^:F_'@4W(5F1JU?<I<_*X+HP35,JIJEM5JO-(9?!T +M]C5D:EUZ(/V=5"B=/;[77Z4GO;3=!BQZR[?]<[?TA?,(.PG1+*-CN,P[BSG& +M,N11T#IXJMZ;#ETA'O9*[E.@UKVEL3*</_697Q-/7(95A0EN3W'AX__(.X7F +MQ'^*7[+,FE$--JER9`TC$WG.G;U(*&V/%&$R+I:5^NRL+=.FB-;NLD.,QMLO +M.D-N4DQ^%3\/P]GPRM\&PA]\6^?`^G#_-J,+%7$%"L/;_D7>!NVGK-6P/Q`E +M+AE,%%$=&50&N`AV1&#.]R_+!IU\#Q8S3TS*5TKB%829O?Q#>Z'1F>_A]/F@ +MF(_E??%ME+7D9Y2]60><3]4>9D0#[V8YBWW9I-LRT@->CU>XD"9$X/)4_D?@ +MSMOT4=JLIM4RL^SH7+YF^D*/KRO?/*04O+L4&ZDC*5OA&Y,:7!/@]ZOHM"FQ +MW8VJ5;AM*JL7;-6!N[6]J0@0>(#ME,2.IWSQZ(5C"T&2/9\1OUR3*%B2C7]$ +MU3>GU7#`<LY:29%BL>_%*#CTL%T>+DJ]8LZ`%_S9T0AR,F*8A^38LN[FV;>H +M'$8@.LX?T>!M2_'\S.MVAR_G/VL%"@,^G4"N=%Y0?-TLOL=FY3@:\3EV[\9U +M@?GOPA`,<P/8PCX+0U7FP^7S:V[O&R7?\?!$"./SH=,K?AKYVW[GP6S:&*.] +M3Z*,-O.B!JT<:$;VP.VV05-6_3X>YP4JS)DK=RTB.,/IR,AYL"8-FG22/(UB +M;KX-O&GN/W@4'B1?D.;V.J,?[Y`QL._(SO5J5A^ZO12`4M`,J6;H0HIK;&IJ +MXH>2%2*:&G,SJ5^>K9HV8Y<<-T]9F<;HSQ'1>LBVE;`)X`M'./CRH=Y@#/K" +MF_3I6A'NX-G8Q88FOI$>7QTRAGK]^A+$]U?7[^C;)"5,IZT`>9UCDVK&E`C> +M6Y/Y\5TCN5MV?<^!Y*D%[^;!P#[4=R5G$C'T,<`\OB>(JE,I?/=X>9^.6%.9 +MEVN>E38)-%EIP\68%D!(J\.2P/2,9ZTN_ZJMO(<3\@'.$AJ8LQN+'*1OZ>MA +MBA;T2=+%VV^E#8=?&(*C">6"'4>./TYUUZ^16ZB9?F032LZ@`G#.NUP)E_R" +M<M6ZH,RV5W\><$+G.1MQN&41O^>#0SVYI;T@#9T";E^4T8INM0VK05*WSG7N +M*-I/$5.BGK)E"K(*LTJYMW7*0%E#-DIT)\<X]Z_6+!^-S&?X5M\VR'^/GG1) +M[=YL@)317A]4)RM#RZ0_]++#W%UMV>6M`)"$GL4\!QQ+S/C26*$*_!)7O&8J +M8SQE%.1)'$FU)&N9>UPB&'*@ZVQ.5<97)*HZ$LP8EM1J`AG9)EA010)R+E<* +MWI.:]:O'+5J/60FO]]?4O>9F7&+58QPXE=<$_[Y=?<@VU>AS\Z>^"&//+@SM +M?!MP0'>O[:_QZC1"HHK`V\AL!%@P)*Z;^UUI#AC3SVS#Y2EC^[8S`\,8J0E7 +M-CCXH454<5$7#N4^4`KW*<G5(VKQ8+K*YVKD7145\,&K>54I;%J4N2KFI^'5 +MY^,1K?,;1U`HG-30&8H;-(IHL$"RXYQ21.AQ<9'YO,W_.Y$EP]>$?@W8SRAX +M(VJ]XXWC[7@D_XJTY#HU:-Q;\R[07W!A<T="K2)XWI'RU4]..B4VE5DE8/H^ +M&?8IT;/&DB_AKO6='/.7VOUHP=&2.Q^O.[8M(PZ+8RX)>&CE:\/ICJ'2G6<< +MEJ=F"Y.C<'\,/DL;4,-<Y)>//^G^D1(YUR?'_H@@.0O#%9._OL\-E.KOU<RK +MP?F1MVE(@F+`%FU')WIZ8$55Y9?UC[66+0GV0SRY]T@&]JS(!Y=JY&2#N#J[ +M+S7C=GR76K*\9=GT^U<_P>F_C24U418L\0)"7CMV")#BP2HMEXL%=+4KYJ^W +MI@G6@%JZJ[2/0ZVIKYWXPTK^^'MU>:D;@0#<9S'L>(,5JZ50DJMVA5GDPS03 +M9RIQAHKI;Y7FLX"ID"[LE5[6\F6Y!^#4VLGO*A@#T>?6EI?</]Q)7K8F6YKR +MH0MPI-O2^W;BQZX['+ERRY&/'M;NSM[%&HQ')&!VW@$W]O9P:^EI=FK+;^M8 +M1W0]7#)P37$H''@F^D$V;Y].5'?$\D<,W->K[5HZ?\OY7:'ES7:OM_6K]**] +MWT>5P=ID5_'SU^A)5`P>B12EBOG!G(\?]O(,ZJZNARE%[&H"K\N7383F-&V2 +MK`]XL&K+H:G+2H^[N<!/.Q3!,D0""(UL8KZH_>T.GXJ^6+]:LMOZ*,]>"%W; +MU;$(?)ED_MTH$E8_F)VC('`[:RJ8M;7I'Y&,+WQ:7SW<$\-Z5%RR^F`VQ>W: +MY&.3KVD*VG3V.Q<E6/@GDV:/=B6KF^.>%\AF-W>_VHUDSTKKXURQ<VO*6TMK +MEF5.2T!X%>/ISFG9V+O!Q/RKA#/P1FX6;(JDHD0DSR$B,08'6UD\\;$_7C)O +MJ,-97S>4O%<-T2^<C94S>-YG8<*I6W&I-`"S=;,TZ>QK:=?M=_WOUDD;6=_] +MXS?/*>QTH?(3.,PE=,TU?(3,VI7J'$_9%_?<N3.4D`HP?A!%EE?7A\4)^EDA +M/]S0[W8R]DL=[=V<FF%0Z^9_'H<_-BRP\GM_R@R!W;>\3,7RS)JO77_1XZD" +M[*;^Y68RL,4RI'188PU[&1Y>,6YU7:KKKKPJE#WI=S>>'O4Z,V\/9WX-N/ES +MM;8\MNE$KQMI7':P([CO)NOH3&[0>D!:],\CT=+-HPSQS:M[R`<NIVL7K>SL +M:&78D5E._>).-1Z!^P=&J_#H$84WAF//-:NAQ<]OLIBHDO\0`5XY;1IYT9B\ +M?P''%\(0!_TWC:_$NQNV+K9GC[G@N.PFCK&N/H:2B/;!X-IY",&RUJ%\8:$W +MFK?$TM.(9;\C@P60KV]4;6L<J58.(@63&ZA1:V&"I,:;J?=U)L-*'DAKO9VO +M=CID^16:J89@61J;.S1PP?-TN(^RM+_U/)%O%28T>'R[]FYLRXG:<9NA'WO> +MQ7;JH-'O7EWXG&U2H`)B\V'9RT]]'$L,;=R3ROQW^#1TMT9(-Z!OH"+OE4XS +MZW?)ZSR\DH6[[$GHC1W"<+],<B>9):&H\#XSZA6\%-S%=V"65A)AT/I;/0$; +M=97J_Q6,P"/QNSWE*=@J\>9*MT^+<U9&`XC'P8I,Y!$#7>NP#S>)3B`./BO5 +M>%3QX_%%D'ZUI;GBK+*X#S.D39+E?G/R5QVDR2].O)V7].6T[%.EC-8\?$YF +MXK!4]>;CU5T(=0!5_AA+&<;5Q%6O[H[.&/Y[?=^?'<$UJ%I,Q96U]9MQO<G* +M!,LW^'-!Y&&?)ZS9O7H&+1#XG%-'NI;3@'X"JYZ(AR(Z5Z^W5*.=\\N&K>KO +MKPR2HHT23K:NM#H__:YEQO4Q_`)4W0K)O3RR6L?X=W'N/^%'L6/^"S-X:\JK +M\ZFK;0QG%@C5I6/(MRZ'\_OC2\Z4S&Q-DZM5L3Z7H*Y@)E9`6&("I",E=YQ; +M.<)[PKONQ!\_1]Q//@E=7^W,Y'PE]6SO";-_CY=OZKT9FR[QA]]VWM:V;):E +MG266:;!!0!S=&"#G3NF'MV(?L_#H4["UG\H'BM?!S8Y5TM^;!P;>]_^.M[#W +M)H3-Z+:<R>P*(JPAF2Z^SXBM,!W,N\%ZDD-#]%*(`T+ZPSS6Q9;PIX^4]SO9 +M.2DKE64=62R@B!MZ-35U?4C5^M/N#9D]3\$!V@O4U[`+L^K%C4_G@>WOBZL( +M3M.3.\9'(V$4DY41?$'\3D=O3Q&1<0#^6Z(G72)^%R,Y5YBJ61N1PN2'"&X8 +MM0/M4W7T?/,J%[Y%WATJBSFV.L>Y%`TAJG;+A@&41W8)?A!FSB3RJ1+,^+ES +MSZ[7\W2_K2$+HC[QQ,KRZ66Z)!<K15E$LO6)O%G>BUSJ$Z?$3^%@0B=UCFQ) +M+ZA)<VMNS(CK1;*5PQ[U.V8L4@?"][%>.WKI#%R2&JM#^_5T]'M>X6AV>SI] +MR&CFCX.C%?!^O/W,6UGQZ[7]9S:OLU,6"Q`QLYO\N-,=K0^SVWIZ'3[/1^SM +M]OL_7V^U5OM=.533Y1%WYL$^Q$*^NC+)2@NN!2OI+.RN_<;?&-8,[Z(UKLQ4 +MIO;(V1.58]O'C*S?<^J/JVH_V&Q4*KT+M4LZH,.C4I1>V02I*MTS[$',-+?/ +M"%RYAR5^5RNSCK4VOL6;-J"'7Q*VUOJ@`HV>WM(:"3W8Z;)^G/&$^M)YP2K: +MLUR5PX77*ELG)-->GW-'MW--JYF%H:$^("NGI=C0[O5ZE`YUNM5&0$)7!8;B +ML[@UQ>:/;Z=IBODE\][?SX3!T)7BY,$_@8,CQ?_Z#!<&T_^5[(/0D!?R'M6/ +M`ID/Q5)<A9;;KB-&NI3_#]!&764AMXR45C5D-N-_^OMT"D_,RI%1;'1MD"=; +M&O>CVKN7FWC*8*<RY7;"3`]AY[8\HX.9]>6G@T/?UW<@:(JR!H6-MWEJMZLW +MWL;L>EY)?C2SE5LQ#WM4,G<;-1>B/OQ]&(`L,E8?)=C62K_OK3YC)=&_QZ84 +MCPA0Z+HVMVAEVAR6-P\:,J5CS=''4VYOJ;6E=O&C,=Q!ZT9S')$@K[Y560B0 +MU9!V-O'W59^%,^5<8*-)#ZD^[I2QI!]Q8,BHS\DY%.QU>G_?3A1T7JPWF=[J +M=./X%@N<BU"!\DDV_#Y;?L[^CV>IIPI,ET8.@'1[77^O(E1=/N^X'>[>G[)] +MG=T/8NCUO=/JW.9?#XH_]-^,9V+DLJ)\5/3-R/;^5DYZ<['T7X8WN0VK%"CI +M7!V[^0/=240=VZN7(SMD2M3LZBSJQ&%W1J<YC<S4KOR`NZDK#7&3/-K@22;3 +M.V(EVQ1H=O;UI5"E@`X5K8Z/'4EJ]/CL<JY>&K>KL<^UL@>:_,16&Y4Z.GX$ +M[NVZ[@.`%KP+G5?VBOC3V%3Z`,\LG9'AMGT*XZQ^,X(OS2K>PEP)]TX&'HI3 +M_PYE)G/$V&RO%_BW8N]FV>:KW:I5<24X<9AKPZY`DB46P_Y`"P!=58)YM5?Q +MCQ4S_(F=O70\IKIE!WDJO\>Q1FJ:@R\/W\#+'^?$-0=V&=BG"Z=?XX>@`[.0 +M>-RV0=C+C2N8>KJLO2#0[D19S[E#Y63I1E__VGJ(```````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M``````````````````````!_[$O(_HQ?VO4_^?______________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_______^@$?\B__K'_I_________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_________________________________________________Z!'_(O_ZQ_Z +M?___________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M______________________________^@1_R+_^L?^G__________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________H$PAU1$,S1$`%A6]G/PHZ,\&EFE%I)N[L8V+L!6VF+0Q]%A- +M9N;N^)%$FDE6(DTM-46F7@W[O@!2?0B4HY'1,S15%(G!N;XZPPB3-1,=7.^* +M^)<_P@_<_OW.1'!//"8$>DR````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M``````!R_'_CW?X_1W?U/E_AW/3SU]+^'S?P]/_^6TEBC_B4ZL_^C3XW_]=/ +M*]8="\$)%.]0KA0X+(H5]F!H."\,BT62$I>'@5#&QW\OY3F,N#>]FNE0AU(A +MG"5S=S/X>.'21%AWLTD4CBAW/7HT6UL=Z5OST;],TO:"AD\-E.G',K-)>NEN +MIY9I3-$WZ)QZDU]9N>290F/CYE\V>*]OF^/CE&\%47;1=1&AD+1D\TD@'--[ +MTRL?#/5O/#SXPO[T(P_K][AY)NRZ9]SATVBMK&S^\;W@FP\(;;$//S1LW8+A +M>3=C:7F[FH8<C.E%$O/Q6RU%[7Y1J]P)0_%=$A$S3:I;62.&4;9FJXI,-L-& +MQ!^J>QD[/GNHET1Z/!?IOJ2)S*X]OP\?#PQ^\O=VX?@6W2*>:G1+K6R>(>FI +MY<])L<NKP1N_DDS3.#)_M&MI;(2;ID@Y.U[^BH',"%5;)/4EU5=RJKS^7*MW +M-6="=3D:`9IV._!YG%>9=VJL1P%/>T<\W#?-)GHR<F#;0XLM[+NNPS;@%%:X +M;]X/<<8-^(ZDX'>3-5]`_L>C/ZKZDX&4O.:7YU-X!XH!FU)5]YP?+GW][4@[ +M7UU,8W=JWF_TJU1>9XCK[VP:SE[?NW,M@P):A[$DNCG!A]'9MVL@(=!QJR%A +MC&=_4(P8N$:T+3Q[B=FV7**"-<N]#0TX(KE=6_OT?9D<@0J=2I`OY_9K5EK1 +M9>.$@#-J\60A8S`RY)V*;Q-O3L>/CE@^>$N6G$T>.>*710.G)7=C:YCT_2BS +M;".E.\N@PI]_/G\T7#.3Q[0&-:B0'-Z1O'V<<.6@06?1EF/)[CL3HI$<D]K] +M:CP=JE#")T-WF[Q=2"E.&`^*[X8I8:O`]QAO^7+C<O>,;#;U=/0(-2TP3NK8 +M[IR0A[.-_D^B,/K(1^M!EQY*P!QVKN]OZ?+,Q?[[(\<>ZBM%FX:K_,N.YD#8 +M"P]RC(6S3*V!<3CHTQ(,QV]6=*H;>QZB_6TT_+QY)4%CXL"B^CH\]UE&2=T[ +M'*9H.G0Y?J<^43Q9.$K>H22SZC)[L%C=?>$O#^SEW_QJ(!`%$8W>R>,7(7^M +M681K69W26]<E/#*1B."$\+R4U_ED7'GMU!:C][SM9^+W/GK"1DE)V2Z!:3-I +M!R2;,^_=)^Y2)>\GSWY.\/?]P+"=7D[S*TSF,)//R:>#S_)BYTVN[V^W_EVN +MWW>UW/Y>+N]S:^7M[7S=O]]^I=6X.@08LT%X9;\UH[YZU?]I^/D\OK*3S;S< +M&H\ZI;4>:]WN7:W+6?E.G]NF<*^SWZ&NI>Y\]@>XHBG[-,FQVNC1&F7EKZ_; +M^>>&;=M-]RO]R6Q,V[7Q]UNY_/R5\6'@VMWY^Y_*7J]ZW"U>)Y2#MIG"]<F< +M_+B"OL:OX[?\^WK_@WY$MM/8@B!W=C_KL?+L^M_W7K;UIW>S_/M=SILB?70" +M+N_Q^:)BMT5M'RUT!Y,NF58JZ^7YDJ0K]#(FU^I-ATV"VS\$F'[EWH\]MIXE +M%3Y9W#?&-%[5;M=_B]OV3?G:NW_#M_Y?RP"\T48M\C\7Z9C/N*SQ>6MLW;QV +M24(K^>5ED'WX>_!UZZ"I\ZTTQ*BFBCL+E,"'%O==0`M0_C@O@T)B0PZX&CDP +M$/6^[Y:B)[UDS.A`B;2)HBY3TAHH0CKZ=WQ:HI'[OQR2^,LF07O6FT'#'XPS +MQ\[TR<$0/QY)M.K507^K438@;"KV6T^HXO>#N]9P7Z\_%[XR1LW?%I^`B!T0 +M^[)2ON8[_3^L#27P_C@CQ[%\3A2Q^0>VU[B'#X*[K[LF5;4MAQ0#3#,@WI&V +M83^I\TP@3W\;QD3O3>R5T0V=ERV=U'HFFIP2`W\N`3.#'4WJJW_CO&BNY71# +M`OG4?8S6L>S'[1>VYEYZY0ZADU[EBH0J[,X11@\E+BJ2M)#]3[7<Q3`'&2/S +MYI9_3,7S#@`E,^74U,B-[9\=2_SBX.=C/OY_)R44N*<$Q\=W+?54I]2"Q9#: +MYIEY/'L8ULJB._,BK6"6N_8XYL44MX**3I(]HP/N421_7GTUAF"D8G:?+?0" +M^GL:,0RGBC!Z*\.YR6:KT`YSBP#+-[?3B4"C$VT71C$FA5%DIF#`D+3^\0/< +MBA$/W#GG@0O+^62,V;-W!@XK.BLYZ)PR)&!P+='.-OFCQTPJ?'UV*?4;\NR5 +M0=W=HV+L_%>%AV/_$HW8S3:J4F"7)VG9N""U\+P?00_Y#UY?)D@$'VESR?20 +M:]2E/\T*#VK=FP&N*`R8VY]$75*!D\N]+6WL0XO/23C-:%]4V))?._:_/-.G +M<.S=0DA/+4<!T^?-N9IK1<^5I0)!GX_77_GP?WLH:UVKT=01!-CZN_]?@^ZC +MT-['0R%V;&:_]^@<6^3_&9QF327X_/C.)['^/R="TTXI['8R;'\[95VXY1VY +M,*KL=GL['_3UM]W^GV?9V?HUWK]^$#"2!]V.]X?I_MX/^WLE^__/9Z%HZ'K8 +M\"J[D=O":?MN1!7V%]G_FL.IP'TN$R5L.*2=YMWF7=OE)H<'_)95@4>>!1@/ +ML0V9D-?V>YV^[\W;]W+M/Q+E[PP+K0L9(BIQ<FLY:I^.GS'T>;_;QMT0A^QD +MJCBY,O2Y!Q7K^&F$$#L4(IPV?.UX/N^OY/M[WW>#ZY!9;7V_73X<,.GF_;LL +M[=B>":J(=K1?:8C_WE_U%LO@R2F?^B,Y>J)9N*[)6&PY%2M.;1(A?NU=XTJ& +M0YJ5/8\%":N343"]':[4+#-B?^QFI9(S+8H-BWQHU#]-WP=<<ZD>Q/-U$**K +M_ICRR)4R0/N#577:PH3)D+X$_K-3F&1-N9?7>6DR8^^VJH=IKM3"0!4_+9:, +MDXNN&=2G:/O;UMX/P^^#3-F$3T]^XKZDGFQLKLUOFGSVX?HU=Y--_U+/PV3= +M?;?A5@:[ECDQ[*5LD\IT0(*(!D4@7^F-\ZL=.F[_,[?T4K-QV=J[\(HH1;)= +M<B4:U-(:JX;,@"IT7'(0-UF!A@UB8N>_RWNY_L2-@>6#T?3[16%SIM5&C?@6 +MN@I-IK3C5U0BZ//[LW7FY)R@+*#9<_DLO`:-3>&21M@=YJPTI'%?8==IK#OL +M;AS;K-XF=)/+DO[\\F_R3H>%0VOO9N>'AB7];JX%HZDC%_9S>R[>[R2;8^WS +MV[>2:,K1&)CX=CE<;[T4<M8C#RPC-O9='PD338Y;W<M51/L).IR7MBRI#.3U +M+@<;#8+#UKI6_GY]C\0F;?";VMY$QGH^SB)/[5T-\FG[PC2_CRQ/?'3GHXKL +MNK&G>/$KV-S,#N:2CZXW/:13TJ4ICF.KISXJPYR%8B*IZA@]C[^&Z^NI%[EW +MV9J`DP7-;I&0`7GLT-*T68S:+\.Q/>JG!?O'R]*)XJ40HNGGJ&T1HO*M0CU8 +M2;3C<@4)7\XXRE"M,F2YHB*4)1DA>Y2<:.YXO+JDV(HQ3"9/ET66.(]*D+LQ +M6A?R9YJGTW3],1F^3Y8HT++UY"YRQ[8S5=:5`J>NKS,ITG\'^??_I]/.Y,K? +M$MC2B9V<W5>>2W#HFE!>><+!<\,F]7LQ^(@>F``9?OEXJ59OBZMCL3=$T/^# +M+Z)<->>$Z3=@@)"6UA"@G[ZT-/R%.X)$2=[:[/6%R#Z8@+:FN>C,5?.!Z)MI +MB8OTD5>1Y#1[AS:]=7T>C-2PU;[\H5XQMF3JV4_#(LMIIA&[Q\4WBE$7LY>L +MW)],N!M&&8+$&NLW%::H/1'^<.?!!2N^*^:JZTNZIO['HZW<J0U<KNUS?`K7 +M=W-HL:+A=VUEQS0.IL9:06G#9#"F3.^*JKGH]SGR\)WHS;="4[0>#&%/5M9R +M>7]WQ=,%1/6M#ZVB]L68@O9K:7IBC=FH+'SSRA,G78IKF(QJ&X9CM38=F3QY +M8A9&39JH5@_X+M*L"MANU#Z2X/89,/++B=&DD2[BTZ.L@:P^8(U!?"'-3]]< +M4Q"*8F6M,;FM-5]K6NZ?5$*I1.BU>V*5$ZI^.B)=@[49[CTX6Z[MOX:3A[!- +M[@R\$PT_%B!_S::N)WG[DRSIO;+?Y)NB?]:&H!DKZM6A=.$5ITON@!OS2`OS +M</181](K-ZT/Q!86>98!KRTA]RIG2&S-+"(-RP3.Z(1-,D;&.G)_N<&?=GTT +M8C&?BB+081P8J;YEFT0O<#-]ZBA?WJ7(VYI7T$6J(H%O/=R[O1/OPS\%HRTQ +M.P6-S<F(33",4?PX['':P%[QZ-5W`6M?:ONVJ:[DT5.:>_89W^$B1>WM_W]: +M^+Z_O\/VW0PC;,1F-\<O%>5_T3;WW^$G=7S2NQHK7/-GV[9&[-W^]W0O+46H +M8O^NP,(6TJ*I[5+VDH7:MJFWD\%L/W=48F?+V?HMEC_W@M9]`D3PVH#5`,.' +M`U[[<@I)`>D5RXW[L(,+O0ROMSZ-.+VI7EK.`(N>=2$O++<665H0!*O'2Z5^ +M39X&M@W/%$2M4^7DM&]6B\`N2LY.,O8`,OQ^4SP>?++_.'3#8OEZ772$\J'O +MP8XUU,Y^>25^U31Y-WS76*8JEK'K[E@7_TVZ55_\>[!`NMGF)!N[L)'4#ZX( +M_LCYGJ6C-N>Z@O_T^R'^)5)!Z90@_0JF!V<]DI49DWEMC-J'<Z+W7Y?E[$,0 +MATP2ZSTS+@JD3S_'(!N[XL4K(S=A5:,QY^'+2FINS^UQSH$9GX;%@(:KTHN_ +MR[W621='AYMT'YH2&[V-?OO)`^+432IJO-8H,S3?Q4X8]D)1;/]-=8:UNPG@ +MC/0([KH,U&_9-YJR:QOS]57J^D!SUZ]3L_!O7[<O!6=0^K.I&#.,T!F(0&Z? +M`)1J]%L^'G:+3^')P;_I7FY?>+7_:3'^PMGP;Y^K-Q5GGWK6HZ\J]/?G@T>' +M+Y/AY#YC6R#L^^NS4V!][>$9=_#-^>7X5YQ:/N])HZG>GVP[.M;M739"G;EG +MOMDXM'?A*'ZGB/W<Z6*V_`O?Z:X_\.^O%E_+W?1ZP1)M`S>W]?*4(EW^38Y7 +M>1-^V#9$P++5>PM*4<3>/>PCY'7=5\+T0VKKX89I"YF#(\PH//6;$L4>L6B6 +M':N\/NPS1);FR[T1//Q3R?ISZJWCP2D-W<RWPQS=.<3J0"K1<(OR'$K68D`; +M&[CZR1-$*7Y,6II02'>[G*'JXT[=TSK$DBCTY@M/R^$)VSTA[[V]JW4K,:@O +MAQS5T++<3X5R[7'QSNC%K'_6="8K]PYTS6L;\E`BWXTEL75YGGK+WJ4!TI(S +M:[L$CNI.@2B0%CT!3P]1<7_27E5!WL;UG(N'')M65?Q&6SSAJI23WR\^H]MN +MBL=ZR'M)H4F33TR$W1T!U=C,0'SN<ZOZ^7:W:&NX$8O:%]FTIGI,R,=1:8L, +M[THC.LA)29]>7BJ-W,"K%QOO<]F2M$4\.A9IZZFT[_4OR[58EPR>UW)#>BB1 +M<9;DY>*RMA*`()49ZEM][,99IRW=?X`BXYHAM7]A=PS5P:=(%57=H108R9U) +MM\_5GT1&I/[?#IJ3>EXIW]Z74FYU1#*^K[YCKT*]Q,H,NF!)0^KX-/QR6K:Z +M_TYZ4R4X:VK#LH2)JNB$8[T?'KN,61)H33^BB&[.QJH>ED;6]%_Q0/#$=HVN +M3L=GZ*<_0IKRM7YTBU[1.-)9-O;/IHEM8H,YE_^2]FQ]<TC/*\3<+'ZZ/HI- +M,$4PXW),=^(^:J9=K(;M`E9P*I+-?'Q9<+AH\/K3.+$T$75Z!D]F7'$1_28: +M.S)H38`JWJN!H[2+\!N^+#XK0L9#,;_*WK2O3KFNX6>.BW;K";R8T6Y*` +M+::ZK0:[ZIJ]L^HH::SZ/0Y^ST\ZIWSJC(4+X?98<R@=%[*C(<N^+HYOZWK+ +M[OCY\_:Y.=>M;C_]N])^(53HZ*8TX($G+]VUY:-9>_'+=/@S=.W5+PHZF*`B +M8X\IGRAJ5\/J^%;0VC`[LANY6SC\^UV?3T2W"A)UKGV"9%E\J:VMIH[S-1!J +MC-?>^G[*^E5@":,NF"+$>>!?+S1]TZ/QR:]VYDW?-9G93<N\(6>%!]<=+2*A +MF2_R0N-8<[Z+/<CW)!#0I%]=#HWZF\^A)KGWPM]03!@3RW2U=.#=SD@P+%LI +M2ES=S\=3=5BO4,"*026I>N,FU8=3)9=PZYG:1V/BAP2>K'@EBF-DRU2#88(6 +M$37WO%*&F1#_"TYZ-5N;_3EK6(;/E_=M3Y+>MV.S:-R9R=+2!1:)9\H(>A^8 +M_OI9&OGQN&^O)=DR\5NEI<>J8T=Z]\U:M^>W#-2GF$1N?X[Z_Q30X9P,S@TN +MI<0RT9N9=,@2Y[JZ9@6Y.&CA_ZTU0XO7;J&[HA]$SP&AY6/CNY=1R#Z74\][ +MR<9;Y<;HB?8KSP^*[E+[R[NK`\G_J%%BE,P\+13D&W1H&3>JIRQ0EFZ)+$P2 +M#+0XKA#XTX"U@?OKR(3=,;ZANS"2[L,4V<*<B3S/>F^XJ8>]+EG[;^DT=&6M +M)AM.GDZ%=BL$6+J_`'R3:"GO.!J6#H<&8LH[&+YXWW@S_,@/BB'G%U'[(@1/ +MA[T1\&;33W[]_YP-;%R6,8U<;LI*(XO'DW:VKDN\<U=*MZRA%W-@](JY5Q3R +M!A$MN;AK>D]\<?#-^&Q)-,^HG*4V)FF[S+5ZM$TKIQ+W8VYUW@2F__XR1PM[ +M)#NS_3/Z3A8/5NBAECW^I^^IJG3GOTE;5<BN\HP8F_N9!I0WY=SDE<&LDRZU +MT>C)@[=KY,=N\5H47JOL4ZANF2@AJ?QY)>G-Q8UH-+K86YG4L;$8ZFW4,-:S +M/!>Y*.]LA1<4TZJ0`V[YN2DN3TA`W=TTX]IUHKHK2T>VI8@OJ`F(4O[-6/?Y +M+UY2T);XWYS-`=]B=T@IN*(CHZESQ]6;1YL8MD?WT!6\.>OCE"(4OG\'R??L +M=[^_@E!/TN8_8SOQ^=9*P=);;NG!/TN`>3";_*,7[/PTHS/XL]$S*:T;0T?? +M*;5WCEUN5$:=14A&D&D<7DRX1N;>_M=0#F6RTCFW!YY.0>61>#-$51:-G#Z2 +MDQ)OL\G3X6L/SBN[CT:DNI6[C<E`/5I4RLC(?1?!;%F,E1%\DW#<^:L)#:TN +MIA'K>S2"[)Q%!+IS^+ZE"(]D7KJ7+_U\?Y_GRO+3Z$*QX-CEG&;*V/'AYXQ. +MTQ7Y9CJ8C:-JTJ9/)$LM2`7EE7CU-L(6T.8GGX^+SP]HLT^#]-1\MWBYCXS, +ML`*04ZELG,ES,U'9#]T;\&3I!];V3@R>2(Y>\.6=8T_<+D1EBZ8]$09U-5KR +M>/%(AO[=%W*8IF3<B`U)C)236K^^&O8+X[13=^M:(;ICH^UR7,<X-YL0R_"8 +M[.2FX%D;V)%"@*.>K=F=(3Y101HFZ?XV/OB2R<=PV:.D([?/+*I\5/[U.&*I +M4-8A"E@-W[?#[>9`,=JNT53[_MZ_&Q%&/!6DY^S:EH&B]H;W6=?&+<RO&%.X +M\\_FRVT7-<?Q6B?DEOQBW'IFR>$X^3I[)T-=T`#JJ,X5CEJ0,QRCI[7LGM<T +M9L;U7M-'5#=/M+H^&J,M_'(_%6J33:.F3)Y7NQ[JP1-FG7<-4<JG44\LYR9Z +M,O/$JN>?/`\\<4W8*9?^D,,O3S%F"E.^;3>?0WW>>IKO_9>DRVB1N%4W'0*B +MD5I1V$;(E;Q]4/@P4,VZRG_8>V?EFV6]8/EO]#Y-BGT$,F-=>KE[D,/F4)/2 +ME+O11(C@VS=3WJH=&S#ZUEZW<E=?%D@]]"M';MR_!5/PL%TXV!FK%3WHG((& +M)%$L`=GXKT72.;8>[GGB5L]F^A*F/;6",TZ&LR0(=$R1_?CEV.MD)6N.KNKL +M)"Q]C\_HG!EWY1^S8%W1SF[^_8,BDQ-P23TP%O/7MD:^9F7"DG5KZH@:6-4Y +M/:%QS[$'F`C)I/R!U]M&YFTQ!/OX4'O]SA6I$F:"1B$$U2@_1W"QN$['*?N_ +M`&^2.#+J/L.G?]F?>CJINK$CI_5O9J.QOS:W,1N--&?B-]:,H?U'QXJ4>>I7 +MN<W41MZ&"YS(Q'P23>I?1R/\8OR>]^QCRK1LUPB45VXF)M"(-)BT0CA;F_GW +M?-=7*MFR5-5SM01[FSVOWGMMD!--4&EKBGP1DJ88\Z<+Q0K^VX%`JM$UDW!) +MRG0!S>S\]?#>GORZJK@^SA6L;S9O8I39_"'OH.#V]/BAG(V$O\7]<7*?]>3$ +M)3NRO+/P31;-_)R6YHM+0=07,?8;/HRQ,%%"/5&Q3C&DV-:7HCD*RBIP344+ +MN7SCMU]1`IE!*18+-`IP(57<KQ:7Q$"9[):(2VZ5Y-@5749-L<E4Y8O[9;NL +MNQR1%)FW>D$KG&-<(7DYQ0\\AF,WYT?P5VI1P:@`L-U3U*G[SQGM1.<-NUYZ +M-KW-IL.)=/+&(N_,E[0F3(33DOBB;SR1#I&-)K$VB]<9O.UU/VUV`EXY<ZY= +MFL8>YN&H&=2NDZ8(Z9O(BZ,PWF5,.$)J9==N($)UFSVGE+LF]^,C,^3R8.?R +M5SRW@YK[_)6'J/1/K5N=VU:==F-[GXYMU_&.K5;<Q+.NQ7L!^H#5,W5F@F?; +MN=;DH]9:>UCW(F0`EQ]+0N_R4RA9\7XL;N@+'&K@RU%`R/DBIE-9)#F4\F%7 +M6COU^S6"\Q11HS\5#NMBWFBG2F\R1E=M,0K5'KQ)QW<Q^Q%W3HB19J55[_GO +MA;_V_<D][XNW4]VD=M\S=Z,"\=T>_DI,04KDYT:D./HU!O:U?RO83D,0BGM3 +M13Y@:P*+>I2SWB[-/H?C[<I1,_"'%XXV9[%?H$/\O=[6YK^T6)9;VZ28=N<6 +M?S9=8,1._-_4^A5>FJN](N]^.:AM66IM<[Y)96_C\U<#HQ9HBF+LSDCZ>`7T +MJ<]9W3BG;N?)\VQ/N4'``W__VG1P```````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M````````````````````````````````/_E+Q/[,7]KU/_G_____________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_________________H!'_(O_ZQ_Z?_______________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M__________________________________________________________^@ +M1_R+_^L?^G__________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M________________________________________H$?\B__K'_I_________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +H_____________________________________________________P`` +` +end 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 new file mode 100644 index 0000000..9f463a4 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ae.uu @@ -0,0 +1,375 @@ +begin 644 - +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________H$P!T14,C1?%G9O<SX5SLU=V`M&V0.[W +M9TBAJ</$]T@"&$TWJ$FF#P#.QC;3QN09]ZU(')`&2_#SPX\;'C#9%U=]$@\Y +MG+JZN[JZNO'>?$J_A%^K]7@Y2NE=W^2Y[+`````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M````````````````````````````````````````````````#U=_IYW_/U<_ +MH?\?3_/H>I>=B_GSNAS_7[]SU/CZ<I=CH<6`^AZD=#HPA-S\FQ;&;K0,A[D, +M^]X>GT>C]PIUI\#<ITHTR4T:)'<6"9#<]TJ0.G3=AOG_=5H]2!C+#]^&:1?> +MN/,^!<FCTNQ&FKM(O,H<,@Q?=;6Y69Q=,T)O%:V$<,[WIZ-L,$71;U-S;\VQ +MZM?@"YW]G5DTU/[0>\/T?3O\\_G?1SHL2*"O1V.[U>MZAYO<S9Z.?G_D_EV- +MCRP9!$,#9^YG[]T#[7I]FS]\2O^HK`4+QKB+3/@+G2Y5?^71IG#6=\:N,'0, +MCC6#HB@FTZV/C:,"29G&'9_\'%6S<H\[&\,_@$9_P[\4\/3K>R6#3_WY_TPY +M`=/Q4IX]'42-/%X!""QIJZ<(%2T_<[3[/Z>YZ.;I]:"Z!(!Q'*P#5<N/*-6! +M)D$QX_MZ:O48K6OKBJ.X7[-+J<V(#TH,CG:PP4$^GN^7WYP3J]#1\'Z&\(&J +ML,/:^W4\=7;TJO!<:2U<OWQMTVCCBYD=49YY6YH_LF:73LS,E3(*!\ZSQ2$: +MGFO#%G_N.NL4&BO7&*(AIQ@S7;\T?LA('/-TZZC[:>O[KYO<[>EH^#3EG%=U +MUB!IZXV0;U("5+:D=^OZJFD\WZCO"PBJ2QY!E);,$>6"0?H]3J_O6I?7FZU= +M.,+Z[Z5/E(0)>*Z+7[(*5*E&1W"42AOFZ5?DF2_KU4^B^+U>77[(-%!#S_NP +MQ:.NGI;<"`]C?:O^:8H3^N\-O[8,GV_I]?_'S=*]\K^7N?^UD\P-T=O2S_!& +MU;Z%SX?NI..G]T6_!!4LQ:<3%T>!+IQW\;]T%WG5GP83,->>A1TAALLM<8W> +MN]%XKUQ^\'#K-J5OM3X^-+[NU?VMV^A/C4];?O/#3]L3X$LQ(\,D?C*_9^'( +M$4_(KULYY9ZB67_C>?A!)KU:L_WB(+)QT)WEY<A-T1V9`BJ"6A8"Y)1G&T*: +M%OQD*BK+D*6(AUT"7M0I.Q]$TNF;AGN.Z.#9-WR?%N3IE;&AZ,6VY2B5D+)! +M,SV(X-S:W7)JT9U5F(I_*J4SES8!5([YIN?N)Y]7P4\ZR+6_:N["URYQ[N#X +M0E%F4UFCA'=V9<X5`_-HMW?2[?'M\608?<6*%Z/3Y+^Y/-Y^=_3.YT8]K\OI +M5<OD!>/MR*NCJ1F2;O>VH,6B5SQ:<LJ+PRA@V3'&H[0(DS<RKE9EF'>286\> +MKD<(SP5\>'<[/L(;I*TN9\<%(GSODHP7XL<R0O\/:*$T\`3/TIDU<4\%\@G: +MQU4NIW-/HF\&Y%QVT?9H8XO'`I[9Z/;^7]7HGPY4M:H3N?7MIOP0S6:)S?4^ +MWL;$8UWHW.+%XC,FUNXPAG72,V@KV5E?FVZK!AL>_407$P5-YIQ7[8F681SO +M*L)%M%;)JM\QRPTI*1$5(6^<I5:N,8%_S.2R_/L:LW)-AQ1I^I!\C891,EJZ +MM&@O53-^E9F\S(RLA?+!KP+>,L=_U?JYLCB!,W-B\[)W7['!:PB\'XY%V/XR +MP=KA./R6^X<`T;BS9D,V"+I;FS-Y?XJ$K73X^QY*R2."*'P;UJO7E$H&N\X@ +M/C%[1L5_;U7SR]WCO/9):4Y?(EI+>S$%V\]''EIWE6,$>6(O@+3E[G#\?"); +MLM@E?-3?CP*;D*S(U:ON4N?E<%T8)JF54U2VJU7FD,O@Z>QJR-2Z]$'[.JA1 +M.GM]KK]*3WMIN@Q8]9=O^N=OZ0OF$'83HEE&QW&8=Q9SC&7(HZ!T\56]-ARZ +M0CWLE=RG0:U[2V)E.'_K,KXFGKD,JPH2W)[CP\?_D'<+S8C_%+]EF32B&FU2 +MY,@:1B;SG3MZD%#;'BC"9%TM*_796%NG31&MW62'&8VV7G2&W*28_"I^'X>S +MX96^#80^^+?/@?3A_FU&%BKB"A6'M_R+O`W;3UFK8'X@2EPRF"BB.C*H#7`0 +M[(C!G>Y?E@TZ^!XL9IZ9E*Z5Q"L),WOXAO=#HS/?P^GS03$?ROOBVREKR,\I +M>K(/.)^J/,R(!][,<Q;[LTFV9:0&O1ZO<2!,B<'DJ?R/P9VWZ*.U64VJ96?9 +MT+E\S?2%'UY7OGE(*7EV*#=21E*WPC<F-+@GP>]7T6A38[L;5*MPVE56+MFK +M`W=K>U(0(/$!VRF)'4[YX]$*QA:#)'L^(WZY)E"Q)1K^B:IO3ZKA@.6<M),B +MQ6/?BE!QZ6"Z/%R5>L6=`"_YLZ(0Y&3%,0_)L67=S;-O4#B,0'6</Z/`VI?C +M^9G6[0Y?SG[6"A0&?3J!7.B\H/FZ67V.S<IP->)R[=^,ZP/SWX0@&.8'L81\ +M%H:KS8?+YM;=WC9+O^/@B!''YT.F5OPU\[;]SX+9M#%'>I]%&&WG1`U:.-"- +M[8';;(*FK?I\/<X*59DR5NY:1'&'TY&0\V!,&S3I)'D:Q-U\&WC3W'[P*#Q( +MOR'-['5&/]\@8V'?D9WJU*P_=7HI`*6@&5+-T(44UMC4U<4/)"I%-#3F9U*_ +M/5LT;,<N.&Z>LS.-T9XCHO61;2M@$\`6CG'QY4.\P!GUA3?ITK0CW<&SL8L, +M37TB/+XZ90SU^_0EB>ZOK]_1MDA*F4]:`/,ZQR;5C2@1O+<G\^*Z1W*V[/N? +M`\E2"]_-@X!]J.Y*SB1CZ&.`>7Q/$52F4OGN\/,_'+"G,R[7/2IL$FBRTX>+ +M,"R`D5>')8'I&,]:7?]56WD.)^0#G"0U,68W%CE(W]/6PQ0MZ).EB[;?2AL. +MOC$%1A/+!#J/''Z<ZZ]?(K=1,OS()I6=0`3AG7:X$R_Y!.6K=4&9;*[^/."% +MSG(VXW#*(W_/!H9[<TMZ0!LZ!-R_*:,4W6H;5H*E;YSKW%&TGB*G13UDRA5D +M%6:5<V[KE("RAFR4Z$^.<>]?K%@_&YC/\*V^;9#_'SSHD]N\V0$IHKP^J$Y6 +MAY=(?^EEA[BZV[/+6@$A"3V*>`XXEYGQI+%"%?@DKWC,5,9XRBG(DCB3:DC7 +M,O:X1##E0=;8G*N,KDE4="68,2VHU`0SLDRPH(H$Y%RN%;TG->M7CEJU'K(3 +M7^^OJ7O,S+C%JL8X<2NN"?]\NON0;:O0Y^=/?!#'GEP9VO@VX(#O7]M?X]1H +MA445@;>0V`BP8$E=-_:ZTAPQIY[9A\I2Q_=L9@>&,5(2KFQQ\4**J.*B+AW* +M?*`5[E.3JD;5XL%UE<[5R+HJ*^O*J4MBU*7)5S4_#J\_&(UOF-HZ@43FI +MH#,4-FD4T6"!9<<XI(G0XN,C\WF;_G<B2X>O"/P;L9Y0\$;5>\<;Q]KP2?\5 +M:<AT:M&XM^9=H+[@PN:.A5I$\;TCY:J>G'1*;2JR2L'T?#/L4Z-GC21?PUWK +M.CGG+[7ZT8.C)'8_7G=L6D8=%L9<$O#1RM>'TQU#I3K..2U.S!<G1N#^&'R6 +M-J&&N<DO'G_3_2(D<ZY/C_T00'(7ABLG?WV>&RG5WZN95X/S(V[2D03%@"S: +MCD[T],"*J\LOZQ]K+%H3[(9Y<^Z0#>U9D`\NU<C)!W!U=EYKQNSY+K5E>,NS +MZ?:N?X/3?QI*:J(L6>($A+QV[!$AQ8)46R\6"NEJ5\U?;TP3K0"U=5=I'H=; +M4U\[\8:5_?#VZO-2-P(!N,YCV/$&*U=*H256[0JSR89H)LY4XPT5TM\KS6<! +M4R!=V2J]K>3+<@_!J;63WE0P!Z//K2TON'^XDKUL3+<UY4(6X4FWI?;MQ8]< +M=CERY9<C'CVMW9V]BC48CDC`[;P";^WLX-?2TNS5EM_6L([H>KADX)KB4#CP +M3?2";-\^G*COB>2.&;FO5]JT=/^7\KM#RYKM7V_K5^E%>[Z/*X.TR*_CYZ_0 +MDJ@8/1(I2Q7S@SD>/^WD&=5=70Y2B]C4!5^7+IL)S&C;)5@>\6#5ET-3EI4? +M=W.`GG8I@F2(!!$:V,5]4?O:'3\5?+%^M66W]%&>O!"[MZMB$/DRR?VZ4"2L +M?S$[1D#@=M95,6MKTC\C&%[XM+Y[N">&]*BY9?3`;8O;M<C')U[2%;3I['8N +M2K'P3R;-'NQ+5S?'/"^0S&[O?[4:R9Z5U\:Y8N;7E+:6URS*G):`\"O'TYS3 +ML[%W@XGY5PAGX(S<+-D5242(29Y"1&(,#K:R>>-B?KQDWU&&LKYO*7BN&Z)? +M.1LJ9O&\SL.%4K;C4F@!9NMF:=/8UM.OVN_[WZR2-K._^\9OGE/8Z4/D)G&8 +M2NF::OD)F;4KU#B?LB_ON7)G*2`48/P@BRROKP^*$_2R0G^YH=[L9>R6.]N[ +M.33"H=?,_CT.?FQ98>3V_Y09`[MO>)F+Y9DU7KK_H\=2!=E-_<K,96&*94CH +ML,8:]C(\O&+<ZKM5UUUX52A[TNYO/#WJ=&;>'L[\&W'RYVML>6W2B5XVTKCM +M8$=QWDW7T)C=H/2`M>F>1Z.EFT89XYM6]Y`.74[6+UO9V-#+L2*RG?O$G&H] +M`_8.C5?AT",*;PS'GFM70XN>WV4Q427^(`*\<MHT\Z,Q>/X#CB^$(`_Z;QM? +MB78W;%ULSQ]SP7'831UC7'T-)1'M@\&T\A	:U"^,-";S5OB:6G$,M^1P8+ +M(5[>J-K6.5*L'$0+)C=0HM;#!4F--U/NZDV&E#R0UWL[7NQTR?(K-5,,P+(U +M-G9HX8/FZ7$?96E_ZGDBWBI,:/#Y=^S<V9<3M.,W0C[WO8KMU4&CWKR[\3C: +MI4`$Q>;#LY:>^CB6&-NY)Y7X[_!HZ6Z,D&]`WT!%WRJ<9];OD]9Y>24+=]B3 +MT1H[A.%^F.1/,DM#4>!\9]0K>"FYBN[!+*PDPZ'TMGH"-NLKU?XK&8!'XW9[ +MRE.P5>/,E6Z?%N:LC`<1CX,4F<@B!KO78!YO$IQ`''Q7JO"IX\?BBR#]:TMS +MQ5EE<!YG2)LEROSGY*X[29)>G7D[+^G+:=BG2QFL>/B<S<5@J>O-QZJZ$.H` +MJ_PPEC.-JXBK7]T=G#'\]ON_/CN":U"TF8LK:^LVXWN3E`F6;_#F@\C#/D]9 +MLWKT#%HA\3BFCW4MIP#\!5<]$0Y$=*]?;JE'.^>7#5O5WUX9)44:))UM76AT +M?_M<RXWJ8_@$J;H5DWIY9+6/\.[CW'_"CV+'_!9F\->55^=35MH8SBP1JTK' +MD6Y=#^?WQI>=*9C8FR=6JV)]+T%<P$RL@+#$!4A&2N\XMG.$]X5WW8@^?H^X +MGGP2NK_;F<CX2^K9WA-F_Q\NW]5Z,S9=XP^^[;VM;-DM2SI++--@@H`YNC!! +MSIW3#V[$/V?AT*=A:S^4#Q6O@YL<JZ6_-@X-O>__'6]A[DT)F]%M.9/8%$58 +M0S)=?9\16F`[F7>"]22&A^BE$`:%]89YK8LMX4\?*>YWLG)25RK*.K)901`V +M]&IJZOJ1J_6GW!LR>I^"`[07J:]@%V?5BQJ?SP/;WQ=6$)VG)G>,CD;"*2<J +M(OB#^)R.WIXC(N(!_+=$3KI$_"Y&<J\Q5+(W(X7)#A#<,6H'VJ;KZ/GF5"]\ +MB[PZ519S;'6/<B@:0U3MEPP#*([L$OP@S9Q)Y5(EF?%RYY]=K^;I?UI"%T1] +MXXF5Y=++=$@N5HJRB67K$WBSO1:YU"=/B)_"P(1.ZQS8DE]0DN;6W9D1UHME +M*X8]ZG;,6*0/A>]BO';UTABY)#56A_?JZ>CVO<+0[/9T^Y#1S1\'1BO@_7G[ +MF+:SX]=K^LYM7V:F+!8@8V<W^7&F.UH?9[;T]#I]GH_9V^WV?K[?:JWVNG*I +MI\HB[\V"?8B%?71EDI077`I7TEG97?N-OC&L&=]$:UV8J4WMD;(G*L>WCQE9 +MON?5'U;4?[#8J%5Z%VJ6=4&'1J4HO;()4E6Z9]B#F&EOGA"Y<PY*_*Y79QUJ +M;7V+-FU!#KXE;:WU0`4;/;VD-!)[L=-D_3GC"?6D\X)5M6:Y*X<+KE2V3DFF +MO3[FCV[FFU<S"T-"?$!73TNQH=WJ]2@<ZW6JC("$K@L-Q6=P:XO-'M].TQ7R +M2^>]OY\)@Z$KQ<F"?P,&1XO_]!@N#:?_*]D'H2`OY#VK'@4R'XJDN0LMMUQ& +MC74I_A^@C+K*0V\9**QJR&W&__7VZ!2?F94BHMCHVR!.MC7O1[5W+S;QE,%. +M9<KMA)@>P\]L>4<',^O+3P:'OZ[N0-$59`T+&V[RU6]6;[V-V/2\DOQI9RJV +M8A[VJ&3N-FHO1'WX^C$`6&2L/DNQK)5_WUI\QDNC?X],*1X0H=%T;6[0R[0Y +M+&X>-&5*QYNCCJ;<WU-K2NWC1F.X@]:,YCDB05]\JK(1(:L@[&WC[JL_"F?* +MN,%&DA]2?=TI8T@^XL&149^2<BG8ZO3_OIPHZ+U8;S.]U.G'\"P7.1:A`^22 +M;?A\MOV=_1[/4TX4F2Z,'0#H]KK_7D2HNGW?<#O=O3]D^SNZ'L71ZWNGU;G, +MOA\4?^F_&,[%R65$^*GIFY'M_*R<].=CZ+\,;W(;5BA1TK@[=_('NI*(.[=7 +M+D9VR)6IV=19U8C"[HU.<QN9J5WY`7=25AKC)GFUP))-IG;$2[8HT.WMZTJA +M2P`<*UL='CJ2U>GQV.5<O#5O5V.?:V0/-?F(K#<J='3\"=W;==P'`"UX%SJO +M[17QI["I]`&>63LCPVSZ%<=8_&<$7YI5O82X$^Z<##T4I_X<RDSGB;#97B_Q +M;L7>S;/-5[M4JN)*<.,PUX=<@21*+8?\@!8`NJL$\VJOXQXJ9_D3.WKH>4UT +MR@[R57^/8HS5-09>'[^!EC_/B&H.[#.Q3A=.O\</0`=G(/&Y;(.QEQI7,/5U +M67I!H=R(LY]RA\K)THR__[3U$``````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M````````````````````````````?^Q+R/Z,7]KU/_G_________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_____________H!'_(O_ZQ_Z?___________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M______________________________________________________^@1_R+ +M_^L?^G______________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________H$?\B__K'_I_____________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M____________________________________________________________ +M_________________Z!(S_A?VO5VG!V@```````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````````` +M```````````````````````````````````````````````````````YI,0] +%>P!`!P`` +` +end diff --git a/contrib/libarchive/libarchive/test/test_read_pax_truncated.c b/contrib/libarchive/libarchive/test/test_read_pax_truncated.c index 8c61f26..fe42638 100644 --- a/contrib/libarchive/libarchive/test/test_read_pax_truncated.c +++ b/contrib/libarchive/libarchive/test/test_read_pax_truncated.c @@ -38,7 +38,7 @@ DEFINE_TEST(test_read_pax_truncated) /* Create a new archive in memory. */ assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_pax(a)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_none(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buff_size, &used)); diff --git a/contrib/libarchive/libarchive/test/test_read_set_format.c b/contrib/libarchive/libarchive/test/test_read_set_format.c new file mode 100644 index 0000000..9208833 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_set_format.c @@ -0,0 +1,220 @@ +/*- + * Copyright (c) 2003-2007 Tim Kientzle + * Copyright (c) 2012 Andres Mejia + * Copyright (c) 2011-2012 Michihiro NAKAJIMA + * 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_set_format) +{ + char buff[64]; + const char reffile[] = "test_read_format_rar.rar"; + const char test_txt[] = "test text document\r\n"; + int size = sizeof(test_txt)-1; + struct archive_entry *ae; + struct archive *a; + + extract_reference_file(reffile); + assert((a = archive_read_new()) != NULL); + assertA(0 == archive_read_set_format(a, ARCHIVE_FORMAT_RAR)); + assertA(0 == archive_read_append_filter(a, ARCHIVE_FILTER_NONE)); + assertA(0 == archive_read_open_filename(a, reffile, 10240)); + + /* First header. */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("test.txt", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(20, archive_entry_size(ae)); + assertEqualInt(33188, archive_entry_mode(ae)); + assertA(size == archive_read_data(a, buff, size)); + assertEqualMem(buff, test_txt, size); + + /* Second header. */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("testlink", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(0, archive_entry_size(ae)); + assertEqualInt(41471, archive_entry_mode(ae)); + assertEqualString("test.txt", archive_entry_symlink(ae)); + assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff))); + + /* Third header. */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("testdir/test.txt", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(20, archive_entry_size(ae)); + assertEqualInt(33188, archive_entry_mode(ae)); + assertA(size == archive_read_data(a, buff, size)); + assertEqualMem(buff, test_txt, size); + + /* Fourth header. */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("testdir", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(0, archive_entry_size(ae)); + assertEqualInt(16877, archive_entry_mode(ae)); + + /* Fifth header. */ + assertA(0 == archive_read_next_header(a, &ae)); + assertEqualString("testemptydir", archive_entry_pathname(ae)); + assertA((int)archive_entry_mtime(ae)); + assertA((int)archive_entry_ctime(ae)); + assertA((int)archive_entry_atime(ae)); + assertEqualInt(0, archive_entry_size(ae)); + assertEqualInt(16877, archive_entry_mode(ae)); + + /* Test EOF */ + assertA(1 == archive_read_next_header(a, &ae)); + assertEqualInt(5, archive_file_count(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} + +DEFINE_TEST(test_read_set_wrong_format) +{ + const char reffile[] = "test_read_format_zip.zip"; + struct archive_entry *ae; + struct archive *a; + + extract_reference_file(reffile); + assert((a = archive_read_new()) != NULL); + assertA(0 == archive_read_set_format(a, ARCHIVE_FORMAT_RAR)); + assertA(0 == archive_read_append_filter(a, ARCHIVE_FILTER_NONE)); + assertA(0 == archive_read_open_filename(a, reffile, 10240)); + + /* Check that this actually fails, then close the archive. */ + assertA(archive_read_next_header(a, &ae) < (ARCHIVE_WARN)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} + +static unsigned char archive[] = { +31,139,8,0,222,'C','p','C',0,3,211,'c',160,'=','0','0','0','0','7','5','U', +0,210,134,230,166,6,200,'4',28,'(',24,26,24,27,155,24,152,24,154,27,155,')', +24,24,26,152,154,25,'2','(',152,210,193,'m',12,165,197,'%',137,'E','@',167, +148,'d',230,226,'U','G','H',30,234,15,'8','=',10,'F',193,'(',24,5,131,28, +0,0,29,172,5,240,0,6,0,0}; + +DEFINE_TEST(test_read_append_filter) +{ + struct archive_entry *ae; + struct archive *a; + int r; + + assert((a = archive_read_new()) != NULL); + assertA(0 == archive_read_set_format(a, ARCHIVE_FORMAT_TAR)); + r = archive_read_append_filter(a, ARCHIVE_FILTER_GZIP); + if (r == ARCHIVE_WARN && !canGzip()) { + skipping("gzip reading not fully supported on this platform"); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + return; + } + assertEqualInt(ARCHIVE_OK, + archive_read_open_memory(a, archive, sizeof(archive))); + assertEqualInt(ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualInt(1, archive_file_count(a)); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_COMPRESSION_GZIP); + 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_read_append_wrong_filter) +{ + struct archive_entry *ae; + struct archive *a; + int r; + + assert((a = archive_read_new()) != NULL); + assertA(0 == archive_read_set_format(a, ARCHIVE_FORMAT_TAR)); + r = archive_read_append_filter(a, ARCHIVE_FILTER_XZ); + if (r == ARCHIVE_WARN && !canXz()) { + skipping("xz reading not fully supported on this platform"); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + return; + } + assertEqualInt(ARCHIVE_OK, + archive_read_open_memory(a, archive, sizeof(archive))); + assertA(archive_read_next_header(a, &ae) < (ARCHIVE_WARN)); + if (r == ARCHIVE_WARN && canXz()) { + assertEqualIntA(a, ARCHIVE_WARN, archive_read_close(a)); + } else { + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + } + assertEqualInt(ARCHIVE_OK,archive_read_free(a)); +} + +DEFINE_TEST(test_read_append_filter_program) +{ + struct archive_entry *ae; + struct archive *a; + + if (!canGzip()) { + skipping("Can't run gzip program on this platform"); + return; + } + assert((a = archive_read_new()) != NULL); + assertA(0 == archive_read_set_format(a, ARCHIVE_FORMAT_TAR)); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_append_filter_program(a, "gzip -d")); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_open_memory(a, archive, sizeof(archive))); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_next_header(a, &ae)); + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_PROGRAM); + assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} + +DEFINE_TEST(test_read_append_filter_wrong_program) +{ + struct archive_entry *ae; + struct archive *a; + + /* + * If we have "bunzip2 -q", try using that. + */ + if (!canRunCommand("bunzip2 -V")) { + skipping("Can't run bunzip2 program on this platform"); + return; + } + assert((a = archive_read_new()) != NULL); + assertA(0 == archive_read_set_format(a, ARCHIVE_FORMAT_TAR)); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_append_filter_program(a, "bunzip2 -q")); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_open_memory(a, archive, sizeof(archive))); + assertA(archive_read_next_header(a, &ae) < (ARCHIVE_WARN)); + assertEqualIntA(a, ARCHIVE_WARN, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} diff --git a/contrib/libarchive/libarchive/test/test_read_splitted_rar_aa.uu b/contrib/libarchive/libarchive/test/test_read_splitted_rar_aa.uu new file mode 100644 index 0000000..9a510cb --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_splitted_rar_aa.uu @@ -0,0 +1,6 @@ +begin 644 - +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``@````` +` +end diff --git a/contrib/libarchive/libarchive/test/test_read_splitted_rar_ab.uu b/contrib/libarchive/libarchive/test/test_read_splitted_rar_ab.uu new file mode 100644 index 0000000..f34f25c --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_splitted_rar_ab.uu @@ -0,0 +1,6 @@ +begin 644 - +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`` +` +end diff --git a/contrib/libarchive/libarchive/test/test_read_splitted_rar_ac.uu b/contrib/libarchive/libarchive/test/test_read_splitted_rar_ac.uu new file mode 100644 index 0000000..e131343 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_splitted_rar_ac.uu @@ -0,0 +1,6 @@ +begin 644 - +MVCYC=]H^=&5S="!T97AT(&1O8W5M96YT#0JAR'3@D#$````````````#```` +M`&-WVCX4,`<`[4$``'1E<W1D:7+`S&-WVCYD=]H^YN=TX)`V```````````` +*`P````"=J]4^%``` +` +end diff --git a/contrib/libarchive/libarchive/test/test_read_splitted_rar_ad.uu b/contrib/libarchive/libarchive/test/test_read_splitted_rar_ad.uu new file mode 100644 index 0000000..f4d3609 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_read_splitted_rar_ad.uu @@ -0,0 +1,4 @@ +begin 644 - +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 4be967f..fbd04e2 100644 --- a/contrib/libarchive/libarchive/test/test_read_truncated.c +++ b/contrib/libarchive/libarchive/test/test_read_truncated.c @@ -38,7 +38,7 @@ DEFINE_TEST(test_read_truncated) /* Create a new archive in memory. */ assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_none(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, sizeof(buff), &used)); /* diff --git a/contrib/libarchive/libarchive/test/test_read_truncated_filter.c b/contrib/libarchive/libarchive/test/test_read_truncated_filter.c index cb7611e..6cc91e3 100644 --- a/contrib/libarchive/libarchive/test/test_read_truncated_filter.c +++ b/contrib/libarchive/libarchive/test/test_read_truncated_filter.c @@ -33,20 +33,27 @@ __FBSDID("$FreeBSD$"); */ static void -test_truncation(const char *compression, int (*set_compression)(struct archive *)) +test_truncation(const char *compression, + int (*set_compression)(struct archive *), int can_prog) { struct archive_entry *ae; struct archive* a; char path[16]; char *buff, *data; size_t buffsize, datasize, used1; - int i, j, r; + int i, j, r, use_prog; buffsize = 2000000; assert(NULL != (buff = (char *)malloc(buffsize))); + if (buff == NULL) + return; datasize = 10000; assert(NULL != (data = (char *)malloc(datasize))); + if (data == NULL) { + free(buff); + return; + } memset(data, 0, datasize); /* @@ -55,16 +62,21 @@ test_truncation(const char *compression, int (*set_compression)(struct archive * assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); assertEqualIntA(a, ARCHIVE_OK, - archive_write_set_compression_compress(a)); + archive_write_add_filter_compress(a)); r = (*set_compression)(a); - if (r == ARCHIVE_FATAL) { - skipping("%s writing not supported on this platform", compression); + if (r != ARCHIVE_OK && !can_prog) { + skipping("%s writing not supported on this platform", + compression); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + free(buff); + free(data); return; } + use_prog = (r == ARCHIVE_WARN && can_prog); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_per_block(a, 10)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used1)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, buffsize, &used1)); assert((ae = archive_entry_new()) != NULL); archive_entry_set_filetype(ae, AE_IFREG); archive_entry_set_size(ae, datasize); @@ -72,7 +84,8 @@ test_truncation(const char *compression, int (*set_compression)(struct archive * sprintf(path, "%s%d", compression, i); archive_entry_copy_pathname(ae, path); failure(path); - if (!assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae))) { + if (!assertEqualIntA(a, ARCHIVE_OK, + archive_write_header(a, ae))) { archive_write_free(a); free(data); free(buff); @@ -82,7 +95,8 @@ test_truncation(const char *compression, int (*set_compression)(struct archive * data[j] = (char)(rand() % 256); } failure(path); - if (!assertEqualIntA(a, datasize, archive_write_data(a, data, datasize))) { + if (!assertEqualIntA(a, datasize, + archive_write_data(a, data, datasize))) { archive_write_free(a); free(data); free(buff); @@ -97,7 +111,8 @@ test_truncation(const char *compression, int (*set_compression)(struct archive * assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); - assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used1 - used1/64)); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_open_memory(a, buff, used1 - used1/64)); for (i = 0; i < 100; i++) { if (ARCHIVE_OK != archive_read_next_header(a, &ae)) { failure("Should have non-NULL error message for %s", @@ -114,19 +129,45 @@ test_truncation(const char *compression, int (*set_compression)(struct archive * break; } } - assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualIntA(a, (use_prog)?ARCHIVE_WARN:ARCHIVE_OK, + archive_read_close(a)); assertEqualInt(ARCHIVE_OK, archive_read_free(a)); free(data); free(buff); } -DEFINE_TEST(test_read_truncated_filter) +DEFINE_TEST(test_read_truncated_filter_bzip2) +{ + test_truncation("bzip2", archive_write_add_filter_bzip2, canBzip2()); +} + +DEFINE_TEST(test_read_truncated_filter_compress) +{ + test_truncation("compress", archive_write_add_filter_compress, 0); +} + +DEFINE_TEST(test_read_truncated_filter_gzip) +{ + test_truncation("gzip", archive_write_add_filter_gzip, canGzip()); +} + +DEFINE_TEST(test_read_truncated_filter_lzip) +{ + test_truncation("lzip", archive_write_add_filter_lzip, 0); +} + +DEFINE_TEST(test_read_truncated_filter_lzma) +{ + test_truncation("lzma", archive_write_add_filter_lzma, 0); +} + +DEFINE_TEST(test_read_truncated_filter_lzop) +{ + test_truncation("lzop", archive_write_add_filter_lzop, canLzop()); +} + +DEFINE_TEST(test_read_truncated_filter_xz) { - test_truncation("bzip2", archive_write_set_compression_bzip2); - test_truncation("compress", archive_write_set_compression_compress); - test_truncation("gzip", archive_write_set_compression_gzip); - test_truncation("lzip", archive_write_set_compression_lzip); - test_truncation("lzma", archive_write_set_compression_lzma); - test_truncation("xz", archive_write_set_compression_xz); + test_truncation("xz", archive_write_add_filter_xz, 0); } diff --git a/contrib/libarchive/libarchive/test/test_sparse_basic.c b/contrib/libarchive/libarchive/test/test_sparse_basic.c index d564f0c..1963aa4 100644 --- a/contrib/libarchive/libarchive/test/test_sparse_basic.c +++ b/contrib/libarchive/libarchive/test/test_sparse_basic.c @@ -118,14 +118,15 @@ create_sparse_file(const char *path, const struct sparse *s) assert(SetFilePointerEx(handle, distance, NULL, FILE_CURRENT) != 0); } else { - DWORD w, wr, size; + DWORD w, wr; + size_t size; size = s->size; while (size) { if (size > sizeof(buff)) w = sizeof(buff); else - w = size; + w = (DWORD)size; assert(WriteFile(handle, buff, w, &wr, NULL) != 0); size -= wr; } @@ -172,6 +173,7 @@ is_sparse_supported(const char *path) const char *testfile = "can_sparse"; (void)path; /* UNUSED */ + memset(buff, 0, sizeof(buff)); create_sparse_file(testfile, sparse_file); fd = open(testfile, O_RDWR); if (fd < 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 new file mode 100644 index 0000000..0344d2c --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_aa.uu @@ -0,0 +1,159 @@ +begin 644 - +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 +M<VET:6]N86PO+T5.(CX*/$A434P^"CQ(14%$/@H)/$U%5$$@2%144"U%455) +M5CTB0T].5$5.5"U465!%(B!#3TY414Y4/2)T97AT+VAT;6P[(&-H87)S970] +M=71F+3@B/@H)/%1)5$Q%/CPO5$E43$4^"@D\345402!.04U%/2)'14Y%4D%4 +M3U(B($-/3E1%3E0](DQI8G)E3V9F:6-E(#,N,R`@*%5N:7@I(CX*"3Q-151! +M($Y!344](D-214%4140B($-/3E1%3E0](C(P,3$P-C(V.S(R,C,U,3`P(CX* +M"3Q-151!($Y!344](D-(04Y'140B($-/3E1%3E0](C(P,3$P-C(V.S(R,C4T +M-3`P(CX*"3Q35%E,12!465!%/2)T97AT+V-S<R(^"@D\(2TM"@D)0'!A9V4@ +M>R!M87)G:6XZ(#`N-SEI;B!]"@D)4"![(&UA<F=I;BUB;W1T;VTZ(#`N,#AI +M;B!]"@D)2#$@>R!M87)G:6XM8F]T=&]M.B`P+C`X:6X@?0H)"4@Q+G=E<W1E +M<FX@>R!F;VYT+69A;6EL>3H@(DQI8F5R871I;VX@4V5R:68B+"!S97)I9B!] +M"@D)2#$N8VIK('L@9F]N="UF86UI;'DZ(")":71S=')E86T@5F5R82!386YS +M(B!]"@D)2#$N8W1L('L@9F]N="UF86UI;'DZ(")&<F5E4V%N<R(@?0H)"5!2 +M12YC:FL@>R!F;VYT+69A;6EL>3H@(D)I='-T<F5A;2!697)A(%-A;G,B+"!M +M;VYO<W!A8V4@?0H)"4@R('L@;6%R9VEN+6)O='1O;3H@,"XP.&EN('T*"0E( +M,BYC=&P@>R!F;VYT+69A;6EL>3H@(D9R965386YS(B!]"@D)5%0N8VIK('L@ +M9F]N="UF86UI;'DZ(")":71S=')E86T@5F5R82!386YS(BP@;6]N;W-P86-E +M('T*"2TM/@H)/"]35%E,13X*/"](14%$/@H\0D]$62!,04Y'/2)E;BU54R(@ +M1$E2/2),5%(B/@H\2#$@0TQ!4U,](G=E<W1E<FXB/DEN=')O9'5C=&EO;CPO +M2#$^"CQ0/DQI8F%R8VAI=F4@:7,@;F]W(&$@9F%I<FQY(&-O;7!L97@@<&EE +M8V4@;V8@<V]F='=A<F4@=&AA="!R=6YS(&]N"F$@;G5M8F5R(&]F(&1I9F9E +M<F5N="!P;&%T9F]R;7,N($$@=&AO<F]U9V@@=&5S="!S=6ET92!I<R!E<W-E +M;G1I86P*8F]T:"!F;W(@=F5R:69Y:6YG(&YE=R!P;W)T<R!A;F0@9F]R(&5N +M<W5R:6YG('1H870@9G5T=7)E(&-H86YG97,*9&]N)W0@8G)E86L@97AI<W1I +M;F<@9G5N8W1I;VYA;&ET>2X@"CPO4#X*/%`^06YY('-I9VYI9FEC86YT(&-H +M86YG92!T;R!L:6)A<F-H:79E+"!I;F-L=61I;F<@;6]S="!B=6<@9FEX97,L +M"G-H;W5L9"!B92!A8V-O;7!A;FEE9"!B>2!N97<@=&5S=',@;W(@8VAA;F=E +M<R!T;R!E>&ES=&EN9R!T97-T<RX@5&AI<PIA<G1I8VQE(&5X<&QA:6YS(&AO +M=R!T:&4@;&EB87)C:&EV92!T97-T('-U:71E<R!W;W)K(&%N9"!H;W<@=&\* +M97AT96YD('1H96TN(`H\+U`^"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%- +M13TB0G5I;&1I;F=?86YD7U)U;FYI;F=?=&AE7U1E<W1?4')O9W)A;7,B/CPO +M03X*0G5I;&1I;F<@86YD(%)U;FYI;F<@=&AE(%1E<W0@4')O9W)A;7,\+T@Q +M/@H\4#Y%86-H(&UA:F]R(&-O;7!O;F5N="TM;&EB87)C:&EV92P@8G-D=&%R +M+"!A;F0@8G-D8W!I;RTM:&%S(&$@=&5S=`IP<F]G<F%M('1H870@97AE<F-I +M<V5S('1H92!F=6YC=&EO;F%L:71Y(&]F('1H870@8V]M<&]N96YT+B!4:&5S +M90IT97-T('!R;V=R86US(&%R92!C;VUP:6QE9"!I;B!T:&4@<V%M92!W87D@ +M=&AA="!T:&4@<F5S="!O9B!T:&4*;&EB87)C:&EV92!S=6ET92!I<R!C;VUP +M:6QE9"X@"CPO4#X*/%`^5&\@<G5N('1H92!T97-T('!R;V=R86US+"!Y;W4@ +M;F5E9"!T;R!G:79E('1H96T@='=O('!I96-E<R!O9@II;F9O<FUA=&EO;CH@ +M"CPO4#X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB +M/E1H92!F=6QL('!A=&@@=&\@=&AE(&1I<F5C=&]R>0H):&]L9&EN9R!T:&4@ +M)G%U;W0[<F5F97)E;F-E(&9I;&5S)G%U;W0[(`H)/"]0/@H)/$Q)/CQ0/E1H +M92!F=6QL('!A=&@@=&\@=&AE(&5X96-U=&%B;&4@<')O9W)A;2!B96EN9R!T +M97-T960@*&YO=`H)87!P;&EC86)L92!T;R!L:6)A<F-H:79E7W1E<W0@<VEN +M8V4@;&EB87)C:&EV92!I<R!C;VUP:6QE9"!I;G1O('1H90H)=&5S="!P<F]G +M<F%M*2`*"3PO4#X*/"]53#X*/%`^5&AE(')E9F5R96YC92!F:6QE<R!A<F4@ +M82!C;VQL96-T:6]N(&]F(&MN;W=N(&EN<'5T<R!T:&%T(&%R92!U<V5D"FEN +M('1H92!T97-T('!R;V-E<W,N(%1H97D@87)E(&%L;"!S=&]R960@:6X@=75E +M;F-O9&5D(&9O<FUA="!I;B!F:6QE<PIW:71H(&$@)G%U;W0[+G5U)G%U;W0[ +M(&5X=&5N<VEO;BX@5&AE('1E<W0@<')O9W)A;7,@;&]O:R!I;B!A(&9E=PIS +M=&%N9&%R9"!L;V-A=&EO;G,[(&EF(&YO;F4@;V8@=&AO<V4@=V]R:RP@>6]U +M)VQL(&YE960@=&\@<W!E8VEF>2!T:&4*/%14($-,05-3/2)W97-T97)N(CXM +M<CPO5%0^(&]P=&EO;B!W:71H('1H92!F=6QL('!A=&AN86UE('1O('1H90IA +M<'!R;W!R:6%T92!D:7)E8W1O<GDN(`H\+U`^"CQ0/E1H92!B<V1T87)?=&5S +M="!A;F0@8G-D8W!I;U]T97-T('!R;V=R86US(')U;B!B<V1T87(@;W(@8G-D +M8W!I;PIR97!E871E9&QY.R!T:&5Y(&YE960@=&AE(&9U;&P@<&%T:"!T;R!T +M:&4@87!P<F]P<FEA=&4@97AE8W5T86)L92X*06QT:&]U9V@@8G-D=&%R7W1E +M<W0@86YD(&)S9&-P:6]?=&5S="!A<F4@<W!E8VEF:6-A;&QY(&EN=&5N9&5D +M(&9O<@IT97-T:6YG(&)S9'1A<B!A;F0@8G-D8W!I;RP@=&AE>2!S:&]U;&0@ +M8F4@=7-A8FQE(&9O<B!T97-T:6YG(&]T:&5R"G1A<B!A;F0@8W!I;R!P<F]G +M<F%M<RX@26X@9F%C="P@<G5N;FEN9R!T:&5S92!T97-T('!R;V=R86US(&%G +M86EN<W0*;W1H97(@=&%R(&EM<&QE;65N=&%T:6]N<R!I<R!A(&=O;V0@=V%Y +M('1O('9E<FEF>2!T:&%T('1H92!T97-T"G!R;V=R86US('1H96US96QV97,@ +M87)E('=O<FMI;F<@8V]R<F5C=&QY+B`*/"]0/@H\4#Y7:&5N(')U;BP@=&AE +M('1E<W0@<')O9W)A;7,@;W5T<'5T(&$@<')O9W)E<W,@;65S<V%G92!F;W(@ +M96%C:`IT97-T+"!A;B!E<G)O<B!M97-S86=E(&9O<B!E86-H(&9A:6QE9"!A +M<W-E<G1I;VXL(&%N9"!A(&9I;F%L"G-U;6UA<GDZ(`H\+U`^"CQ04D4@0TQ! +M4U,](G=E<W1E<FXB/B9N8G-P.U)U;FYI;F<@=&5S=',@:6XZ("]T;7`O8G-D +M=&%R7W1E<W0N,C`P.2TP,BTQ-U0R,2XS,"XT,"TP,#`*)FYB<W`[4F5F97)E +M;F-E(&9I;&5S('=I;&P@8F4@<F5A9"!F<F]M.B`F;F)S<#L@)FYB<W`[+VAO +M;64O=&EM+VQI8F%R8VAI=F4O=')U;FLO=&%R+W1E<W0*)FYB<W`[4G5N;FEN +M9R!T97-T<R!O;CH@+VAO;64O=&EM+VQI8F%R8VAI=F4O=')U;FLO8G-D=&%R +M"B9N8G-P.T5X97)C:7-I;F<Z(&)S9'1A<B`R+C8N.3`P82`M(&QI8F%R8VAI +M=F4@,BXV+CDP,&$*)FYB<W`[,#H@=&5S=%\P"B9N8G-P.S$Z('1E<W1?8F%S +M:6,*)FYB<W`[,CH@=&5S=%]C;W!Y"B9N8G-P.R!T97-T7V-O<'DN8SHQ-S$Z +M($%S<V5R=&EO;B!F86EL960Z($EN=',@;F]T(&5Q=6%L"B9N8G-P.R`F;F)S +M<#L@)FYB<W`[(#`],`HF;F)S<#L@)FYB<W`[("9N8G-P.R!L<W1A="AN86UE +M,B`K(#,L("9A;7`[<W0R*3TM,0HF;F)S<#L@=&5S=%]C;W!Y+F,Z,3<Q.B!& +M86EL960@,C8T('1I;65S"B9N8G-P.S,Z('1E<W1?9V5T9&%T90HF;F)S<#LT +M.B!T97-T7VAE;'`*)FYB<W`[("9N8G-P.R`N+BX@;6]R92!O=71P=70@;VUI +M='1E9"`N+BX*)FYB<W`[,2!O9B`Q,R!T97-T<R!R97!O<G1E9"!F86EL=7)E +M<PHF;F)S<#L@5&]T86P@;V8@,3`U,#DW(&%S<V5R=&EO;G,@8VAE8VME9"X* +M)FYB<W`[(%1O=&%L(&]F(#(V-"!A<W-E<G1I;VYS(&9A:6QE9"X*)FYB<W`[ +M(%1O=&%L(&]F(#`@87-S97)T:6]N<R!S:VEP<&5D+CPO4%)%/CQ0/@I4:&4@ +M:&5A9&5R(&QI;F5S(&AE<F4@<F5C;W)D.B`*/"]0/@H\54P^"@D\3$D^/%`@ +M4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^=&AE(&1I<F5C=&]R>2!T:&%T +M('=I;&P@8F4@=7-E9`H)9F]R('-C<F%T8V@@9FEL97,@9'5R:6YG('1H92!T +M97-T+B!)9B!A('1E<W0@9F%I;',L('1H92!S8W)A=&-H"@EF:6QE<R!W:6QL +M(&)E(&QE9G0@8F5H:6YD(&EN('1H:7,@9&ER96-T;W)Y(&9O<B!F=7)T:&5R +M(&1E8G5G9VEN9RX@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T +M;VTZ(#!I;B(^5&AE(&1I<F5C=&]R>2!F<F]M('=H:6-H('1H90H)<F5F97)E +M;F-E(&9I;&5S('=I;&P@8F4@<F5A9"X@"@D\+U`^"@D\3$D^/%`@4U193$4] +M(FUA<F=I;BUB;W1T;VTZ(#!I;B(^1F]R(&)S9'1A<E]T97-T(&%N9"!B<V1C +M<&EO7W1E<W0L"@ET:&4@9G5L;"!P871H('1O('1H92!E>&5C=71A8FQE(&)E +M:6YG(&5X97)C:7-E9"X@"@D\+U`^"@D\3$D^/%`^0F%S:6,@=F5R<VEO;B!I +M;F9O<FUA=&EO;B!A8F]U="!T:&4@=&%R9V5T+B`*"3PO4#X*/"]53#X*/%`^ +M26X@=&AI<R!C87-E+"!T:&4@=')A:6QE<B!I;F1I8V%T97,@=&AA="!O;F4@ +M=&5S="!F86EL960N($%S('EO=0IC86X@<V5E+"!T:&5R92!W87,@82!S:6YG +M;&4@87-S97)T:6]N(&EN('1H92!C;V1E('1H870@9F%I;&5D(#(V-`IT:6UE +M<RX@5&AE(&9I<G-T('1I;64@:70@9F%I;&5D+"!I="!W87,@8F5C875S92!A +M;B`\5%0@0TQ!4U,](G=E<W1E<FXB/FQS=&%T*"D\+U14/@IC86QL(')E='5R +M;F5D("TQ(&EN<W1E860@;V8@=&AE('IE<F\@=&AA="!W87,@97AP96-T960N +M(`H\+U`^"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB0F%S:6-?=&5S +M=%]T97)M:6YO;&]G>2(^/"]!/D)A<VEC('1E<W0*=&5R;6EN;VQO9WD\+T@Q +M/@H\4#Y%86-H('1E<W0@<')O9W)A;2!C;VYS:7-T<R!O9B!A(&YU;6)E<B!O +M9B`F<75O=#MT97-T<R9Q=6]T.RX@16%C:`IT97-T(&AA<R!A(&YA;64@86YD +M(&ES(&EM<&QE;65N=&5D(&EN(&$@0R!S;W5R8V4@9FEL92!W:71H('1H92!S +M86UE"FYA;64@87,@=&AE('1E<W0N(%1E<W1S('=O<FL@8GD@<&5R9F]R;6EN +M9R!S;VUE('-E<FEE<R!O9B!O<&5R871I;VYS"F%N9"!M86MI;F<@)G%U;W0[ +M87-S97)T:6]N<R9Q=6]T.R!A8F]U="!T:&4@<F5S=6QT<RX@1F]R(&5X86UP +M;&4L"FUA;GD@;V8@=&AE(&QI8F%R8VAI=F4@=&5S=',@;W!E;B!A;F0@<F5A +M9"!A;B!A<F-H:79E(&%N9"!A<W-E<G0@=&AA=`IP87)T:6-U;&%R(&]P97)A +M=&EO;G,@<W5C8V5E9&5D(&]R(&9A:6QE9"X@*%EE<RP@:70@:7,@;V9T96X* +M:6UP;W)T86YT('1O('9E<FEF>2!T:&%T(&EL;&5G86P@<F5Q=65S=',@9V5N +M97)A=&4@87!P<F]P<FEA=&4*97)R;W)S+BD@"CPO4#X*/%`^2&5R92!I<R!A +M('-O;65W:&%T(&5D:71E9"!E>&-E<G!T(&9R;VT@/%14($-,05-3/2)W97-T +M97)N(CYT97-T7V-O;7!A=%]Z:7`\+U14/BP*=VAI8V@@=F5R:69I97,@8V]M +M<&%T:6)I;&ET>2!W:71H('9A<FEO=7,@6DE0(&9O<FUA="!A<F-H:79E<SH@ +M"CPO4#X*/%!212!#3$%34STB=V5S=&5R;B(^)FYB<W`[($1%1DE.15]415-4 +M*'1E<W1?8V]M<&%T7WII<"D*)FYB<W`[('L*)FYB<W`[("9N8G-P.R`O*B`N +M+BX@<V5T=7`@;VUI='1E9"`N+BX@*B\*)FYB<W`[("9N8G-P.R!A<W-E<G0H +M*&$@/2!A<F-H:79E7W)E861?;F5W*"DI("$]($Y53$PI.PHF;F)S<#L@)FYB +M<W`[(&%S<V5R=$5Q=6%L26YT*$%20TA)5D5?3TLL"B9N8G-P.R`F;F)S<#L@ +M)FYB<W`[("9N8G-P.R!A<F-H:79E7W)E861?<W5P<&]R=%]C;VUP<F5S<VEO +M;E]A;&PH82DI.PHF;F)S<#L@)FYB<W`[(&%S<V5R=$5Q=6%L26YT*$%20TA) +M5D5?3TLL"B9N8G-P.R`F;F)S<#L@)FYB<W`[("9N8G-P.R!A<F-H:79E7W)E +M861?<W5P<&]R=%]F;W)M871?86QL*&$I*3L*)FYB<W`[("9N8G-P.R!E>'1R +M86-T7W)E9F5R96YC95]F:6QE*&YA;64I.PHF;F)S<#L@)FYB<W`[(&%S<V5R +M=$5Q=6%L26YT*$%20TA)5D5?3TLL"B9N8G-P.R`F;F)S<#L@)FYB<W`[("9N +M8G-P.R!A<F-H:79E7W)E861?;W!E;E]F:6QE;F%M92AA+"!N86UE+"`Q,#(T +M,"DI.PHF;F)S<#L@)FYB<W`[("9N8G-P.R\J(%)E860@9FER<W0@96YT<GDN +M("HO"B9N8G-P.R`F;F)S<#L@)FYB<W`[87-S97)T17%U86Q);G0H05)#2$E6 +M15]/2RP@87)C:&EV95]R96%D7VYE>'1?:&5A9&5R*&$L("9A;7`[864I*3L* +M)FYB<W`[("9N8G-P.R`F;F)S<#MA<W-E<G1%<75A;%-T<FEN9R@F<75O=#M- +M151!+4E.1B]-04Y)1D535"Y-1B9Q=6]T.RP@87)C:&EV95]E;G1R>5]P871H +M;F%M92AA92DI.SPO4%)%/CQ0/@I4:&4@/%14($-,05-3/2)W97-T97)N(CYA +M<W-E<G186%A8/"]45#X@;6%C<F]S(&-H96-K('1H870@=&AE:7(*87)G=6UE +M;G1S('-A=&ES9GD@8V5R=&%I;B!C;VYD:71I;VYS+B!)9B!T:&4@87-S97)T +M:6]N(&9A:6QS+2UF;W(*97AA;7!L92P@:68@=&AE(&YA;64@;V8@=&AE(&9I +M<G-T(&5N=')Y(&ES(&YO=`HF<75O=#M-151!+4E.1B]-04Y)1D535"Y-1B9Q +M=6]T.RTM=&AE(&UA8W)O('=I;&P@<F5P;W)T('1H92!P<F]B;&5M+B`*/"]0 +M/@H\4#Y4:&5R92!A<F4@='=O(&EM<&]R=&%N="!D:69F97)E;F-E<R!B971W +M965N('1H92`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=%A86#PO5%0^"FUA +M8W)O<R!U<V5D(&EN('1H97-E('1E<W0@:&%R;F5S<V5S(&%N9"!T:&4@25-/ +M($,@<W1A;F1A<F0@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G0\+U14/@IM +M86-R;SH@1FER<W0L('1H97-E(&%S<V5R="!M86-R;W,@9&]N)W0@97AI="!O +M;B!F86EL=7)E+B!">2!D969A=6QT+`IT:&5Y(')E<&]R="!T:&4@9F%I;'5R +M92!A;F0@<F5T=7)N('IE<F\@*'1H92!#(&YO=&EO;B!O9B`F<75O=#MF86QS +M929Q=6]T.RDN"E-E8V]N9"P@=&AE<V4@;6%C<F]S(&EN8VQU9&4@=F%R:6%N +M=',@=&AA="!P97)F;W)M(&$@=F%R:65T>2!O9@IS<&5C:69I8R!T97-T<RX@ +M5&AE<V4@<W!E8VEF:6,@=F5R<VEO;G,@*'-U8V@@87,@/%14($-,05-3/2)W +M97-T97)N(CYA<W-E<G1%<75A;$EN=#PO5%0^"F%N9"`\5%0@0TQ!4U,](G=E +M<W1E<FXB/F%S<V5R=$5Q=6%L4W1R:6YG/"]45#X@:6X@=&AE(&5X86UP;&4@ +986)O=F4I"F=E;F5R871E(&1E=&%I;&5D(``` +` +end 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 new file mode 100644 index 0000000..5f41f5f --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_ab.uu @@ -0,0 +1,159 @@ +begin 644 - +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#$@ +M0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](DQI9F5?8WEC;&5?;V9?85]T97-T +M(CX\+T$^3&EF92!C>6-L92!O9@IA('1E<W0\+T@Q/@H\4#Y%86-H('1E<W0@ +M<F5S:61E<R!I;B!A($,@<V]U<F-E(&9I;&4@=VET:"!T:&4@<V%M92!N86UE +M(&%S('1H90IT97-T+B!4:&4@=&5S="!I='-E;&8@:7,@82!F=6YC=&EO;B!T +M:&%T('1A:V5S(&YO(&%R9W5M96YT<RX@5&AE('1E<W0*:7,@9&5C;&%R960@ +M=7-I;F<@=&AE(#Q45"!#3$%34STB=V5S=&5R;B(^1$5&24Y%7U1%4U0H*3PO +M5%0^(&UA8W)O+@I4:&ES(&UA8W)O('-E<G9E<R!B;W1H('1O(&5N<W5R92!T +M:&%T('1H92!T97-T(&ES(&1E8VQA<F5D(&-O<G)E8W1L>0IA;F0@87,@82!L +M86)E;"!T:&%T(&-A;B!B92!U<V5D('1O(&QO8V%T92!A;&P@9&5F:6YE9"!T +M97-T<RX@*$]N"E5N:7@M;&EK92!P;&%T9F]R;7,L(&$@<VEM<&QE(#Q45"!# +M3$%34STB=V5S=&5R;B(^9W)E<#PO5%0^(&]P97)A=&EO;@II<R!U<V5D('1O +M(&-O;G-T<G5C="!A(&9I;&4@8V%L;&5D(#Q45"!#3$%34STB=V5S=&5R;B(^ +M;&ES="YH/"]45#X*=&AA="!H;VQD<R!T:&4@;F%M97,@;V8@86QL(&]F('1H +M92!T97-T<RX@5&AI<R!M86ME<R!I="!V97)Y(&5A<WD@=&\*861D(&YE=R!T +M97-T<RXI(`H\+U`^"CQ0/E1H92!T97-T(&AA<FYE<W,@9&5T97)M:6YE<R!W +M:&EC:"!T97-T<R!T;R!R=6XN($ET(&=O97,@=&AR;W5G:`IT:&4@9F]L;&]W +M:6YG('-T97!S('=H96YE=F5R(&ET(')U;G,@82!T97-T.B`*/"]0/@H\54P^ +M"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^/%-44DE+13Y# +M;&]S97,@86QL(&9I;&4*"61E<V-R:7!T;W)S(&5X8V5P="!F;W(@<W1D:6XL +M('-T9&]U="P@86YD('-T9&5R<BX\+U-44DE+13X@*%1H:7,*"7-C<F5W<R!U +M<"!L:6)C(&]N('-O;64@<&QA=&9O<FUS('-O(&AA<R!B965N(')E;6]V960N +M*2`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY# +M<F5A=&5S(&$@=&5M<&]R87)Y(&1I<F5C=&]R>0H)=VAO<V4@;F%M92!M871C +M:&5S('1H92!N86UE(&]F('1H92!T97-T(&%N9"!S=VET8VAE<R!I;G1O('1H +M870*"61I<F5C=&]R>2X@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB +M;W1T;VTZ(#!I;B(^4F5S971S('1H92!C=7)R96YT(&QO8V%L92X@"@D\+U`^ +M"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^0V%L;',@=&AE +M('1E<W0@9G5N8W1I;VXN(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM +M8F]T=&]M.B`P:6XB/DEF('1H97)E('=E<F4@;F\@87-S97)T:6]N"@EF86EL +M=7)E<RP@:70@=VEL;"!R96UO=F4@=&AE('1E;7!O<F%R>2!D:7)E8W1O<GDN +M("A)9B`\5%0@0TQ!4U,](G=E<W1E<FXB/BUK/"]45#X*"6ES('-P96-I9FEE +M9"P@=&5M<&]R87)Y(&1I<F5C=&]R>2!A<F4@;&5F="!E=F5N(&EF('1H92!T +M97-T"@ES=6-C965D<RXI(`H)/"]0/@H)/$Q)/CQ0/CQ35%))2T4^268@=&AE +M<F4@87)E(&%N>2!O<&5N(&9I;&4@9&5S8W)I<'1O<G,@;W1H97(@=&AA;@H) +M<W1D:6XL('-T9&]U="P@86YD('-T9&5R<BP@:70@<F5P;W)T<R!A;B!E<G)O +M<BX\+U-44DE+13X@5&5S=',*"7-H;W5L9"!N979E<B!L96%V92!O<&5N(&9I +M;&4@9&5S8W)I<'1O<G,N(`H)/"]0/@H\+U5,/@H\4#Y);B!P87)T:6-U;&%R +M+"!T97-T<R!C86X@<V%F96QY(&%S<W5M92!T:&%T.B`*/"]0/@H\54P^"@D\ +M3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^5&AE(&-U<G)E;G0@ +M9&ER96-T;W)Y(&ES(&5M<'1Y"@EW:&5N('1H92!T97-T('-T87)T<RX@"@D\ +M+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^06YY(&9I +M;&5S(&-R96%T960@:6X@=&AE(&-U<G)E;G0*"61I<F5C=&]R>2!W:6QL(&)E +M(')E;6]V960@9F]R('EO=2X@"@D\+U`^"@D\3$D^/%`^5&AE(&-U<G)E;G0@ +M;&]C86QE(&ES('1H92!D969A=6QT("9Q=6]T.T,F<75O=#L@;&]C86QE+B`* +M"3PO4#X*/"]53#X*/%`^5&5S=',@<VAO=6QD.B`*/"]0/@H\54P^"@D\3$D^ +M/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^4F5L96%S92!A;&P@;65M +M;W)Y+B!4:&4@=&5S=`H)<W5I=&5S(&%R92!O8V-A<VEO;F%L;'D@<G5N('5N +M9&5R(&$@;65M;W)Y(&1E8G5G9V5R('1O(&1E=&5C="!L96%K<PH):6X@=&AE +M(&QI8F%R8VAI=F4@;&EB<F%R>2X@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA +M<F=I;BUB;W1T;VTZ(#!I;B(^0VQO<V4@86QL(&]P96YE9"!F:6QE<RX@5&AI +M<R!H96QP<PH)=&\@8V%T8V@@9FEL92!D97-C<FEP=&]R(&QE86MS(&EN(&QI +M8F%R8VAI=F4N(`H)/"]0/@H)/$Q)/CQ0/DYO="!R96%D(&]R('=R:71E(&%B +M<V]L=71E('!A=&AS+B`*"3PO4#X*/"]53#X*/$@Q($-,05-3/2)W97-T97)N +M(CX\02!.04U%/2)0;&%T9F]R;5]V87)I871I;VXB/CPO03Y0;&%T9F]R;0IV +M87)I871I;VX\+T@Q/@H\4#Y3;VUE('1E<W1S(&%R92!S<&5C:69I8R!T;R!A +M('!A<G1I8W5L87(@<&QA=&9O<FTN(%-U8V@@=&5S=',*<VAO=6QD('5S92!A +M<'!R;W!R:6%T92!P;&%T9F]R;2US<&5C:69I8R!M86-R;W,@87,@9F]L;&]W +M<SH@"CPO4#X*/%!212!#3$%34STB=V5S=&5R;B(^(VEF(%]?4$Q!5$9/4DT* +M+BXN('9A<FEO=7,@:&5L<&5R(&9U;F-T:6]N<R`N+BX*(V5N9&EF"D1%1DE. +M15]415-4*&9O;U]P;&%T9F]R;2D*>PHC:68@7U]03$%41D]230HF;F)S<#L@ +M)FYB<W`[+BXN('1E<W1S(&%S('5S=6%L("XN+BX*(V5L<V4*)FYB<W`[("9N +M8G-P.W-K:7!P:6YG*"9Q=6]T.W!L871F;W)M+7-P96-I9FEC('1E<W1S)G%U +M;W0[*3L*(V5N9&EF"GT\+U!213X\4#X*26X@<&%R=&EC=6QA<BP@;F]T92!T +M:&%T(&%L;"!T97-T<R!A<F4@8V]M<&EL960@86YD(')U;B!O;B!A;&P*<&QA +M=&9O<FUS+B`*/"]0/@H\4#Y-;W-T('1E<W1S(&%R92!N;W0@<&QA=&9O<FTM +M<W!E8VEF:6,@86YD('=I;&P@=&AU<R!E;F0@=7`@<G5N;FEN9PIO;B!M86YY +M(&1I9F9E<F5N="!P;&%T9F]R;7,N($EN(&]R9&5R('1O('-I;7!L:69Y('=R +M:71I;F<@<W5C:"!T97-T<RP*=')Y('1O('5S92!P;&%T9F]R;2UI;F1E<&5N +M9&5N="!C;V1I;F<Z(`H\+U`^"CQ53#X*"3Q,23X\4"!35%E,13TB;6%R9VEN +M+6)O='1O;3H@,&EN(CY5<V4@<W1D:6\@/%14($-,05-3/2)W97-T97)N(CYF +M;W!E;B@I/"]45#XL"@D\5%0@0TQ!4U,](G=E<W1E<FXB/F9W<FET92@I/"]4 +M5#XL(#Q45"!#3$%34STB=V5S=&5R;B(^9G)E860H*3PO5%0^+`H)86YD(#Q4 +M5"!#3$%34STB=V5S=&5R;B(^9F-L;W-E*"D\+U14/B!T;R!A8V-E<W,@9FEL +M97,@=VAE;F5V97(*"69E87-I8FQE+B`*"3PO4#X*"3Q,23X\4#Y,;V]K('1H +M<F]U9V@@=&AE(#Q45"!#3$%34STB=V5S=&5R;B(^=&5S="YH/"]45#X@:&5A +M9&5R('1O"@ES964@:68@=&AE<F4@87)E(&%S<V5R=%AX>"@I(&9U;F-T:6]N +M<R!T:&%T('EO=2!C86X@=7-E+B!4:&5R92=S(&$*"6QI<W0@;V8@=&AE(&UO +M<F4@<&]P=6QA<B!O;F5S(&)E;&]W+"!B=70@;F5W(&]N97,@87)E(&]F=&5N +M(&%D9&5D+B`*"3PO4#X*/"]53#X*/$@Q($-,05-3/2)W97-T97)N(CX\02!. +M04U%/2)!<W-E<G1?;6%C<F]S(CX\+T$^07-S97)T(&UA8W)O<SPO2#$^"CQ0 +M/E1H92!F;VQL;W=I;F<@:7,@82!N96-E<W-A<FEL>2!I;F-O;7!L971E(&QI +M<W0@;V8@87-S97)T(&9U;F-T:6]N<PIA=F%I;&%B;&4@=&\@=&5S=',Z(`H\ +M+U`^"CQ53#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY" +M87-I8R!E<75A;&ET>3H@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1%<75A +M;$EN=#PO5%0^+`H)/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1%<75A;%-T +M<FEN9SPO5%0^+"`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$5Q=6%L365M +M/"]45#X*"0D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I +M;B(^1FEL92!C<F5A=&EO;CH@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1- +M86ME1FEL93PO5%0^+`H)/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1-86ME +M4WEM;&EN:SPO5%0^+"`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$UA:V5( +M87)D;&EN:SPO5%0^+`H)/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1-86ME +M1&ER/"]45#X@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ +M(#!I;B(^1FEL92!T97-T<SH@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1) +M<U)E9SPO5%0^+`H)/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1)<T1I<CPO +M5%0^+"`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$ES4WEM;&EN:SPO5%0^ +M+`H)/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1&:6QE4VEZ93PO5%0^+"`\ +M5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$9I;&5.;&EN:W,\+U14/BP*"3Q4 +M5"!#3$%34STB=V5S=&5R;B(^87-S97)T1FEL94UT:6UE/"]45#X@"@D\+U`^ +M"@D\3$D^/%`^1FEL92!C;VYT96YT<SH@/%14($-,05-3/2)W97-T97)N(CYA +M<W-E<G1&:6QE16UP='D\+U14/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^87-S +M97)T1FEL94YO;D5M<'1Y/"]45#XL(#Q45"!#3$%34STB=V5S=&5R;B(^87-S +M97)T1FEL94-O;G1E;G1S/"]45#XL"@D\5%0@0TQ!4U,](G=E<W1E<FXB/F%S +M<V5R=%1E>'1&:6QE0V]N=&5N=',\+U14/B`*"3PO4#X*/"]53#X*/$@Q($-, +M05-3/2)W97-T97)N(CX\02!.04U%/2)2969E<F5N8V5?1FEL97,B/CPO03Y2 +M969E<F5N8V4@1FEL97,\+T@Q/@H\4#Y-86YY('1E<W1S(')E<75I<F4@<F5A +M9&EN9R!A('!R92UC;VYS=')U8W1E9"!R969E<F5N8V4@9FEL92X@4W5C:`IF +M:6QE<R!A<F4@<W1O<F5D('=I=&@@=&AE('-O=7)C92!C;V1E(&9O<B!T:&4@ +M87-S;V-I871E9"!T97-T('-U:71E+@I2969E<F5N8V4@9FEL97,@87)E(&YA +M;65D(&%C8V]R9&EN9R!T;R!T:&4@=&5S="!A;F0@;75S="!B92!U=65N8V]D +M960*=&\@8F4@8VAE8VME9"!I;G1O('-O=7)C92!C;VYT<F]L+B`*/"]0/@H\ +M4#Y&;W(@97AA;7!L92P@:68@>6]U(&YE960@82!R969E<F5N8V4@=&%R(&%R +M8VAI=F4@=&\@=7-E('=I=&@*/%14($-,05-3/2)W97-T97)N(CYT97-T7V9O +M;SPO5%0^+"!T:&4@9FEL92!S:&]U;&0@8F4@;F%M960*/%14($-,05-3/2)W +M97-T97)N(CYT97-T7V9O;RYT87(\+U14/B!A;F0@<W1O<F5D(&EN('-O=7)C +M92!C;VYT<F]L(&%S"CQ45"!#3$%34STB=V5S=&5R;B(^=&5S=%]F;V\N=&%R +M+G5U/"]45#XN(`H\+U`^"CQ0/E=I=&AI;B!T:&4@=&5S="!C;V1E+"!Y;W4@ +M8V%N(')E8V]V97(@=&AE(')E9F5R96YC92!F:6QE('=I=&@Z(`H\+U`^"CQ0 +M4D4@0TQ!4U,](G=E<W1E<FXB(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P+C)I +M;B(^)FYB<W`[("9N8G-P.R!E>'1R86-T7W)E9F5R96YC95]F:6QE*"9Q=6]T +M.W1E<W1?9F]O+G1A<B9Q=6]T.RD[/"]04D4^/%`^"E1H92`\5%0@0TQ!4U,] +M(G=E<W1E<FXB/F5X=')A8W1?<F5F97)E;F-E7V9I;&4H*3PO5%0^(&9U;F-T +M:6]N('=I;&P*=75D96-O9&4@=&AE(')E<75E<W1E9"!F:6QE(&%N9"!P=70@ +M=&AE(')E<W5L="!I;B!T:&4@8W5R<F5N=`ID:7)E8W1O<GDN(`H\+U`^"CQ0 +M/DQO;VL@870@/%14($-,05-3/2)W97-T97)N(CYT97-T7W)E861?9F]R;6%T +M7V-P:6]?8FEN7V)E+F,\+U14/@IF;W(@82!S:6UP;&4@97AA;7!L92!O9B!T +M:&ES('5S86=E+B`*/"]0/@H\4#Y!(&9E=R!O9B!T:&4@;VQD97(@=&5S=',@ +M<W1O<F4@<F5F97)E;F-E(&1A=&$@=VET:&EN('1H92!S;W5R8V4*8V]D92!A +M<R!A(&AE>"UE;F-O9&5D(&%R<F%Y(&]F(&-H87)A8W1E<G,N(%1H:7,@=V%S +M(&-O;6UO;B!B969O<F4*/%14($-,05-3/2)W97-T97)N(CYE>'1R86-T7W)E +M9F5R96YC95]F:6QE*"D\+U14/B!W87,@861D960@86YD(&ES"FYO="!R96-O +M;6UE;F1E9"!F;W(@;F5W(&-O9&4N(`H\+U`^"CQ(,2!#3$%34STB=V5S=&5R +M;B(^/$$@3D%-13TB1&]S7V%N9%]$;VYT<R(^/"]!/D1O<R!A;F0@1&]N=',\ +M+T@Q/@H\54P^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^ +M1$\@=7-E(&%S<V5R=',@;&EB97)A;&QY+B!)="=S"@EC;VUM;VX@=&\@:&%V +M92!A;B!A<W-E<G0@;VX@86QM;W-T(&5V97)Y(&QI;F4N(`H)/"]0/@H)/$Q) +M/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D1/('5S92!A<W-E<G1% +M<75A;$EN="P*"6%S<V5R=$5Q=6%L4W1R:6YG+"!A<W-E<G1%<75A;$UE;2!T +M;R!T97-T(&5Q=6%L:71Y(&EN<W1E860@;V8@<&QA:6X*"6%S<V5R="@I.R!T +M:&4@<W!E8VEA;&EZ960@9F]R;7,@9VEV92!A(&QO="!M;W)E(&EN9F]R;6%T +M:6]N(&]N(&$*"69A:6QU<F4N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G +M:6XM8F]T=&]M.B`P:6XB/D1/('1E<W0@>6]U<B!T97-T<SL@97AP97)I;65N +M="!B>0H)8VAA;F=I;F<@82!P:65C92!O9B!C;V1E(&%N9"!M86ME('-U<F4@ +M>6]U<B!T97-T(&9A:6QS+B!)9B!Y;W4@=&AI;FL*"7EO=2=V92!F;W5N9"!A +M(&)U9RP@=V4@<F5C;VUM96YD('=R:71I;F<@=&AE('1E<W0@9FER<W0L(&UA +M:V4@<W5R90H)=&AE('1E<W0@9F%I;',L('1H96X@9FEX:6YG('1H92!B=6<N +M(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D1/ +M(')U;B!A;&P@;V8@=&AE('1E<W1S(&)E9F]R90H)<W5B;6ET=&EN9R!A(&-H +M86YG92X@1&5P96YD:6YG(&]N('EO=7(@8G5I;&0@96YV:7)O;FUE;G0L(#Q4 +M5"!#3$%34STB=V5S=&5R;B(^;6%K90H)=&5S=#PO5%0^(&]R(#Q45"!#3$%3 +M4STB=V5S=&5R;B(^;6%K92!C:&5C:SPO5%0^('=I;&P@=7-U86QL>2!R=6X* +M"6%L;"!O9B!T:&4@=&5S=',N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G +M:6XM8F]T=&]M.B`P:6XB/D1/3B=4(')E;'D@;VX@/%14($-,05-3/2)W97-T +997)N(CY(059%7SPO5%0^"@EM86-R;W,@9@`` +` +end 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 new file mode 100644 index 0000000..ee9f78c --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_ac.uu @@ -0,0 +1,141 @@ +begin 644 - +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 +M;&P@8F4*"6-O=F5R960@=7`N*2`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R +M9VEN+6)O='1O;3H@,&EN(CY$3R!U<V4@<G5N=&EM92!T97-T<R!F;W(@<&QA +M=&9O<FT*"69E871U<F5S+B!&;W(@97AA;7!L92P@=&AE($%#3"!T97-T<R!T +M<GD@=&\@<V5T(&%N($%#3"!O;B!A(&9I;&4@86YD"@ER96%D(&ET(&)A8VL@ +M=&\@9&5T97)M:6YE(&EF($%#3"!S=7!P;W)T(&ES(&%V86EL86)L92P@=&AE +M;B!T:&5Y"@EE>&5R8VES92!T:&4@;&EB87)C:&EV92!!0TP@:&%N9&QI;F<N +M(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D1/ +M(&QO;VL@870@97AI<W1I;F<@=&5S=',N($]F=&5N+`H)82!B=6<@8V%N(&)E +M('1E<W1E9"!B>2!A9&1I;F<@:G5S="!A(&-O=7!L92!O9B!A<W-E<G1S('1O +M(&%N"@EE>&ES=&EN9R!T97-T(&EN<W1E860@;V8@=W)I=&EN9R!A(&YE=R!O +M;F4N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB +M/D1/(&EM<')O=F4@97AI<W1I;F<@=&5S=',N($EN"@EP87)T:6-U;&%R+"!I +M9B!Y;W4@<V5E(&$@=&5S="!F86EL=7)E('1H870@:7,@:&%R9"!T;R!U;F1E +M<G-T86YD+`H)8V]N<VED97(@861D:6YG(&$@9F%I;'5R92@I(&UE<W-A9V4@ +M;W(@8V]M;65N=',@<V\@=&AE(&YE>'0@<&5R<V]N"@EW:6QL(&AA=F4@86X@ +M96%S:65R('1I;64N(`H)/"]0/@H)/$Q)/CQ0/D1/(&%S:R!O;B!T:&4@;6%I +M;&EN9R!L:7-T<R!I9B!Y;W4@:&%V92!Q=65S=&EO;G,N(%-O;64@=&5S=',* +M"6%R92!B971T97(@=W)I='1E;B!T:&%N(&]T:&5R<RX@"@D\+U`^"CPO54P^ +M"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB4V]M95]E>&%M<&QE<U]O +M9E]T97-T<R(^/"]!/E-O;64*97AA;7!L97,@;V8@=&5S=',\+T@Q/@H\2#(@ +M0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](DQI8F%R8VAI=F5?<F5A9%]T97-T +M<R(^/"]!/DQI8F%R8VAI=F4*<F5A9"!T97-T<SPO2#(^"CQ0/E1H97)E(&%R +M92!Q=6ET92!A(&9E=R!R96%D('1E<W1S('1H870@<VEM<&QY(')E860@82!P +M<F4M8G5I;'0*:6YP=70@9FEL92!A;F0@=F5R:69Y('1H92!R97-U;'1S+B!4 +M:&5S92!U<V4@/%14($-,05-3/2)W97-T97)N(CYE>'1R86-T7W)E9F5R96YC +M95]F:6QE*"D\+U14/@IT;R!D96-O9&4@82!U=65N8V]D960@:6YP=70@9FEL +M92P@=&AE;B!O<&5N('1H870@9FEL92!W:71H(&QI8F%R8VAI=F4*86YD('9E +M<FEF>2!T:&4@<F5S=6QT<RX@36]S="!O9B!T:&5S92!A<F4@<')E='1Y('-T +M<F%I9VAT9F]R=V%R9"X@"CPO4#X*/$@R($-,05-3/2)W97-T97)N(CX\02!. +M04U%/2),:6)A<F-H:79E7W)E860O=W)I=&5?=&5S=',B/CPO03Y,:6)A<F-H +M:79E"G)E860O=W)I=&4@=&5S=',\+T@R/@H\4#Y-;W-T(&]F('1H92!W<FET +M92!T97-T<R!R96%L;'D@:G5S="!V97)I9GD@=&AA="!L:6)A<F-H:79E(&-A +M;@IR96%D('=H870@:70@=W)I=&5S+B!4:&5S92!G96YE<F%L;'D@=7-E('1H +M92!M96UO<GD@:6YT97)F86-E<RX@5&AE>0IF965D(&%R8VAI=F4@96YT<FEE +M<R!I;G1O('1H92!W<FET97(@=&\@8W)E871E(&%N(&%R8VAI=F4@:6X@;65M +M;W)Y"F%N9"!T:&5N(&]P96X@=&AE(&UE;6]R>2!A9V%I;B!T;R!R96%D('1H +M92!D871A(&)A8VL@86YD('9E<FEF>2!T:&%T"FET(&ES('1H92!S86UE+B`* +M/"]0/@H\2#(@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](DQI8F%R8VAI=F5? +M=W)I=&5?=F%L:61A=&]R<R(^/"]!/DQI8F%R8VAI=F4*=W)I=&4@=F%L:61A +M=&]R<SPO2#(^"CQ0/D$@9F5W('=R:71E('1E<W1S('=R:71E(&%N(&%R8VAI +M=F4@:6YT;R!M96UO<GD@86YD('1H96X@:6YS<&5C=`IT:&4@86-T=6%L(&)Y +M=&5S('1O('9E<FEF>2!T:&%T('1H92!A<F-H:79E('=A<R!C<F5A=&5D(&-O +M<G)E8W1L>2X*5&AE<V4@=&5S=',@87)E(&YI8V4@=&\@:&%V92!B=70@87)E +M('1E9&EO=7,@=&\@8G5I;&0N(`H\+U`^"CQ0/E1H97)E(&%R92!A;'-O(&$@ +M8V]U<&QE(&]F('-U8V@@=F%L:61A=&]R<R!F;W(@8G-D=&%R(&%N9"!B<V1C +M<&EO+@I4:&5S92!A<F4@=F5R>2!T<FEC:WD@<VEN8V4@=&AE(&5X86-T(&1A +M=&$@8V]N=&%I;G,@=F%L=65S('1H870@=&AE"G1E<W0@8V%N;F]T(&-O;7!L +M971E;'D@8V]N=')O;"`H<W5C:"!A<R!T:&4@8W5R<F5N="!T:6UE(&]R"G5S +M97)N86UE*2X@"CPO4#X*/$@R($-,05-3/2)W97-T97)N(CX\02!.04U%/2)$ +M:7-K7W1E<W1S(CX\+T$^1&ES:R!T97-T<SPO2#(^"CQ0/DQI8F%R8VAI=F4G +M<R!D:7-K($DO3R!!4$ES+"!A<R!W96QL(&%S(&)S9'1A<B!A;F0@8G-D8W!I +M;RP@;F5E9"!T;PIO<&5R871E(&)Y('9E<FEF>6EN9R!F:6QE<R!O;B!D:7-K +M+B!4;R!M86ME('1H:7,@96%S:65R+"!T:&4@=&5S=`IF<F%M97=O<FL@;F]W +M(&AA<R!A(&QA<F=E(&YU;6)E<B!O9B!A<W-E<G1I;VYS('1O('9E<FEF>2!T +M:6UE<W1A;7!S+`IP97)M:7-S:6]N<RP@86YD(&]T:&5R(&)A<VEC(&9I;&4@ +M9&%T82X@5&AE<V4@87-S97)T:6]N<R!U<V4*87!P<F]P<FEA=&4@<WES=&5M +M(&-A;&QS(&9O<B!E86-H('!L871F;W)M.R!N97<@=&5S=',@<VAO=6QD('1R +M>2!T;PIA=F]I9"!U<VEN9R`\5%0@0TQ!4U,](G=E<W1E<FXB/G-T870H*3PO +M5%0^+"!W:&EC:"!I<R!N;W0@=6YI9F]R;6QY"F%V86EL86)L92X@"CPO4#X* +M/$@R($-,05-3/2)W97-T97)N(CX\02!.04U%/2)&=7IZ7W1E<W1E<B(^/"]! +M/D9U>GH@=&5S=&5R/"](,CX*/%`^5&AE(&9U>GH@=&5S=&5R(&ES(&]N92!O +M9B!T:&4@9F5W('1E<W1S('1H870@9&]E<R!N;W0@86=G<F5S<VEV96QY"G5S +M92!A<W-E<G1I;VYS+B!)=',@<'5R<&]S92!I<R!T;R!T<GD@86YD(&-R87-H +M(&QI8F%R8VAI=F4@8GD@9F5E9&EN9PII="!I;G!U="!T:&%T(&ES('-L:6=H +M=&QY(&1A;6%G960N("A296UE;6)E<B!T:&%T(&QI8F%R8VAI=F4@9&]E<PIH +M879E('-O;64@9F%I;'-A9F4@8V]D92!T:&%T(&1E;&EB97)A=&5L>2!A8F]R +M=',@=&AE(&5N=&ER92!P<F]G<F%M"FEF(&-E<G1A:6X@:6YV87)I86YT<R!A +M<F4@=FEO;&%T960N*2`*/"]0/@H\4#Y3:6YC92!A(&9U>GH@9F%I;'5R92!C +M875S97,@82!C<F%S:"P@:70G<R!I;7!O<W-I8FQE('1O(')E<&]R="!T:&4* +M97)R;W(@=&\@=&AE(&-O;G-O;&4L('-O('1H92!F=7IZ('1E<W1E<B!I;G-T +M96%D(&=E;F5R871E<R!A"G)A;F1O;6QY+61A;6%G960@9FEL92P@<V%V97,@ +M=&AA="!F:6QE('1O(&1I<VLL('1H96X@<G5N<R!T:&4@9FEL90IT:')O=6=H +M(&QI8F%R8VAI=F4@=&\@=')Y('1O('!R;W9O:V4@82!C<F%S:"X@268@;&EB +M87)C:&EV92!C<F%S:&5S"G1H92!E;G1I<F4@=&5S=&5R+"!T:&4@:6YP=70@ +M=&AA="!C875S960@=&AE(&-R87-H('=I;&P@8F4@879A:6QA8FQE"F]N(&1I +M<VL@9F]R(&9U<G1H97(@86YA;'ES:7,N(`H\+U`^"CQ0/D%L=&AO=6=H(&ET +M(&ES('5N=7-U86P@9F]R(&$@=&5S="!P<F]G<F%M('1O('5S92!R86YD;VT@ +M:6YP=70L('1H90IF=7IZ('1E<W1E<B!H87,@<')O=F5N('%U:71E('5S969U +M;"!A="!U;F-O=F5R:6YG('!O;W(@97)R;W(*:&%N9&QI;F<N(%5N9F]R='5N +M871E;'DL('1H92!N965D('1O('=R:71E('1H92!D871A('1O(&1I<VL@8F5F +M;W)E"F5A8V@@=&5S="!I<R!A('-I9VYI9FEC86YT('!E<F9O<FUA;F-E(&ES +M<W5E+B`*/"]0/@H\2#(@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](DQA<F=E +M7W1A<E]T97-T97(B/CPO03Y,87)G92!T87(@=&5S=&5R/"](,CX*/%`^5&AE +M(&QA<F=E('1A<B!T97-T97(@871T96UP=',@=&\@97AE<F-I<V4@8F]U;F1A +M<GD@8V%S97,@=VET:"!V97)Y"FQA<F=E(&5N=')I97,L('5P('1O(#$@=&5R +M86)Y=&4N($]F(&-O=7)S92P@=W)I=&EN9R!A(#$@=&5R86)Y=&4*96YT<GD@ +M=&\@86X@=6YC;VUP<F5S<V5D(&%R8VAI=F4@;VX@9&ES:R!O<B!M96UO<GD@ +M:7,@=6YA8V-E<'1A8FQE+`IB;W1H(&9O<B!P97)F;W)M86YC92!A;F0@<W!A +M8V4@<F5A<V]N<RX@179E;B!G>FEP(&]R(&)Z:7`R"F-O;7!R97-S:6]N('=O +M;B=T(&AE;'`[(&%L=&AO=6=H('-M86QL97(L('1H92!O=71P=70@:7,@<W1I +M;&P@;&%R9V4*86YD('1H92!T:6UE(&YE961E9"!T;R!C;VUP<F5S<R!S=6-H +M(&$@;&%R9V4@86UO=6YT(&]F(&1A=&$@:7,*<')O:&EB:71I=F4N(%-O('1H +M92!L87)G92!T87(@=&5S=&5R('5S97,@82!T<FEC:RX@"CPO4#X*/%`^4F5M +M96UB97(@=&AA="!A;B!U;F-O;7!R97-S960@=&%R(&%R8VAI=F4@8V]N<VES +M=',@;V8@86QT97)N871I;F<*:&5A9&5R<R!A;F0@8F]D:65S+B!)9B!T:&4@ +M8F]D:65S(&-O;G-I<W0@96YT:7)E;'D@;V8@>F5R;R!B>71E<RP*=&AE;B!A +M;&P@=&AA="=S(&YE961E9"!T;R!R96-O;G-T<G5C="!T:&4@87)C:&EV92!I +M<R!T;R!R96-O<F0@=&AE"G)E;&%T:79E;'D@<VUA;&P@:&5A9&5R<R!A;F0@ +M<W1O<F4@82!C;W5N="!O9B!E86-H(&-O;G1I9W5O=7,@8FQO8VL*;V8@>F5R +M;W,N(%1H:7,@<VEM<&QE("9Q=6]T.W)U;BUL96YG=&@@96YC;V1I;F<F<75O +M=#L@:7,@=F5R>0IE9F9E8W1I=F4L(&-O;7!R97-S:6YG(&$@<V%M<&QE(&%R +M8VAI=F4@=VET:"!A(&1O>F5N(&5N=')I97,@9&]W;B!T;PIJ=7-T(&$@9F5W +M(&MI;&]B>71E<RP@979E;B!I9B!T:&]S92!E;G1R:65S(')A;F=E('5P('1O +M(#%40BX@"CPO4#X*/%`^0GD@=W)I=&EN9R!A(&-U<W1O;2!)+T\@;&%Y97(@ +M=&AA="!I;7!L96UE;G1S('-U8V@@8V]M<')E<W-I;VXL('=E"F-A;B!W<FET +M92!V97)Y(&QA<F=E(&5N=')I97,@=&AR;W5G:"!L:6)A<F-H:79E('1H96X@ +M<F5A9"!T:&5M(&)A8VL*86YD('9E<FEF>2!T:&%T(&QI8F%R8VAI=F4@8V]R +M<F5C=&QY(&AA;F1L97,@86QL(&]F('1H92!B;W5N9&%R>0IC87-E<RX@"CPO +M4#X*/%`^3V8@8V]U<G-E+"!E=F5N('-C86YN:6YG(&]U='!U="!T;R!D971E +M<FUI;F4@>F5R;R!B;&]C:W,@8V%N('1A:V4*<75I=&4@82!W:&EL92P@<V\@ +M=&AE(&QA<F=E('1A<B!T97-T97(@;6%K97,@;VYE(&UO<F4@;W!T:6UI>F%T +M:6]N.@I,:6)A<F-H:79E(&ES("9Q=6]T.VUO<W1L>29Q=6]T.R!Z97)O+6-O +M<'DN(%=H96X@>6]U(&=I=F4@:70@82!L87)G90IB;&]C:R!T;R!W<FET92!T +M;R!A;B!E;G1R>2!B;V1Y+"!I="!W:6QL('!A<W,@<&]I;G1E<G,@<W1R86EG +M:'0*=&AR;W5G:"!T;R!T:&4@;W5T<'5T(')O=71I;F4L(&5X8V5P="!I;B!T +M:&]S92!C87-E<R!W:&5R92!I="!M=7-T"F-O<'D@9&%T82!T;R!C;W)R96-T +M;'D@8G5I;&0@8FQO8VMS+B!4:&4@;&%R9V4@=&%R('1E<W1E<B!T86ME<PIA +M9'9A;G1A9V4@;V8@=&AI<R!T;R!Q=6EC:VQY(&1E=&5C="!W:&5N(&$@8FQO +M8VL@8F5I;F<@=W)I='1E;B!O=70@8GD*=&AE(&%R8VAI=F4@=W)I=&5R(&ES +M('1H92!S86UE(&%S('-O;64@;V8@=&AE(&1A=&$@=&AA="!W87,@9VEV96X@ +M8GD*=&AE('1E<W0@87,@=&AE(&5N=')Y(&)O9'DL(&%N9"!S:6UI;&%R;'D@ +M=VAE;B!R96%D:6YG('1H92!A<F-H:79E"F)A8VLN(`H\+U`^"CQ0/E1A:V5N +M('1O9V5T:&5R+"!T:&5S92!T<FEC:W,@86QL;W<@=&AE(&QA<F=E('1A<B!W +M<FET97(@=&\@=&5S=`IF;W(@:7-S=65S('-U8V@@87,@<')O<&5R('-T;W)A +M9V4@;V8@=F5R>2!L87)G92!F:6QE('-I>F5S("AT87(@9FEL97,*<W5P<&]R +M="!S979E<F%L(&1I9F9E<F5N="!W87ES('1O('-T;W)E(&9I;&4@<VEZ97,@ +M=VAI8V@@=')A9&4@;V9F"G!O<G1A8FEL:71Y('9E<G-U<R!R86YG93L@;&EB +M87)C:&EV92!T<FEE<R!T;R!U<V4@=&AE(&UO<W0@<&]R=&%B;&4*;VYE(&ET +M(&-A;B!F;W(@96%C:"!E;G1R>2D@86YD(&EN=&5G97(@;W9E<F9L;W<@*%=I +M;F1O=W,@,S(M8FET(#Q45"!#3$%34STB=V5S=&5R;B(^;V9F7W0\+U14/@IB +M<F]K92!T:&4@;&%R9V4@=&%R('1E<W0@86YD(&QE9"!L:6)A<F-H:79E('1O +M(&UA:V4@:&5A=FEE<B!U<V4@;V8*/%14($-,05-3/2)W97-T97)N(CYI;G0V +M-%]T/"]45#X@:6YT97)N86QL>2D@:6X@82!T97-T('1H870@<G5N<R!I;@IU +M;F1E<B`Q+S0@<V5C;VYD+B`*/"]0/@H\4"!35%E,13TB;6%R9VEN+6)O='1O +H;3H@,&EN(CX\0E(^"CPO4#X*/"]"3T19/@H\+TA434P^Q#U[`$`'```` +` +end diff --git a/contrib/libarchive/libarchive/test/test_tar_filenames.c b/contrib/libarchive/libarchive/test/test_tar_filenames.c index 5c5287a..8a3ddab 100644 --- a/contrib/libarchive/libarchive/test/test_tar_filenames.c +++ b/contrib/libarchive/libarchive/test/test_tar_filenames.c @@ -62,7 +62,7 @@ test_filename(const char *prefix, int dlen, int flen) /* Create a new archive in memory. */ assert((a = archive_write_new()) != NULL); assertA(0 == archive_write_set_format_pax_restricted(a)); - assertA(0 == archive_write_set_compression_none(a)); + assertA(0 == archive_write_add_filter_none(a)); assertA(0 == archive_write_set_bytes_per_block(a,0)); assertA(0 == archive_write_open_memory(a, buff, sizeof(buff), &used)); diff --git a/contrib/libarchive/libarchive/test/test_ustar_filenames.c b/contrib/libarchive/libarchive/test/test_ustar_filenames.c index 8afe4d1..c84dd67 100644 --- a/contrib/libarchive/libarchive/test/test_ustar_filenames.c +++ b/contrib/libarchive/libarchive/test/test_ustar_filenames.c @@ -60,7 +60,7 @@ test_filename(const char *prefix, int dlen, int flen) /* Create a new archive in memory. */ assert((a = archive_write_new()) != NULL); assertA(0 == archive_write_set_format_ustar(a)); - assertA(0 == archive_write_set_compression_none(a)); + assertA(0 == archive_write_add_filter_none(a)); assertA(0 == archive_write_set_bytes_per_block(a,0)); assertA(0 == archive_write_open_memory(a, buff, sizeof(buff), &used)); diff --git a/contrib/libarchive/libarchive/test/test_write_disk_appledouble.c b/contrib/libarchive/libarchive/test/test_write_disk_appledouble.c new file mode 100644 index 0000000..d604fbf --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_write_disk_appledouble.c @@ -0,0 +1,212 @@ +/*- + * Copyright (c) 2003-2007 Tim Kientzle + * Copyright (c) 2012 Michihiro NAKAJIMA + * 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" +__FBSDID("$FreeBSD$"); + +#ifdef HAVE_SYS_ACL_H +#include <sys/acl.h> +#endif +#ifdef HAVE_SYS_XATTR_H +#include <sys/xattr.h> +#endif + +#if defined(__APPLE__) && defined(UF_COMPRESSED) && defined(HAVE_SYS_XATTR_H)\ + && defined(HAVE_ZLIB_H) +static int +has_xattr(const char *filename, const char *xattrname) +{ + char *nl, *nlp; + ssize_t r; + int exisiting; + + r = listxattr(filename, NULL, 0, XATTR_SHOWCOMPRESSION); + if (r < 0) + return (0); + if (r == 0) + return (0); + + nl = malloc(r); + if (!assert(nl != NULL)) + return (0); + + r = listxattr(filename, nl, r, XATTR_SHOWCOMPRESSION); + if (r < 0) { + free(nl); + return (0); + } + + exisiting = 0; + for (nlp = nl; nlp < nl + r; nlp += strlen(nlp) + 1) { + if (strcmp(nlp, xattrname) == 0) { + exisiting = 1; + break; + } + } + free(nl); + return (exisiting); +} + +#endif + +/* + * Exercise HFS+ Compression. + */ +DEFINE_TEST(test_write_disk_appledouble) +{ +#if !defined(__APPLE__) || !defined(UF_COMPRESSED) || !defined(HAVE_SYS_XATTR_H)\ + || !defined(HAVE_ZLIB_H) + skipping("MacOS-specific AppleDouble test"); +#else + const char *refname = "test_write_disk_appledouble.cpio.gz"; + struct archive *ad, *a; + struct archive_entry *ae; + struct stat st; + acl_t acl; + + extract_reference_file(refname); + + /* + * Extract an archive to disk with HFS+ Compression. + */ + assert((ad = archive_write_disk_new()) != NULL); + assertEqualIntA(ad, ARCHIVE_OK, + archive_write_disk_set_standard_lookup(ad)); + assertEqualIntA(ad, ARCHIVE_OK, + archive_write_disk_set_options(ad, + ARCHIVE_EXTRACT_TIME | + ARCHIVE_EXTRACT_SECURE_SYMLINKS | + ARCHIVE_EXTRACT_SECURE_NODOTDOT | + ARCHIVE_EXTRACT_HFS_COMPRESSION_FORCED)); + + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a, + refname, 512 * 20)); + + assertMakeDir("hfscmp", 0755); + assertChdir("hfscmp"); + + /* Skip "." */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString(".", archive_entry_pathname(ae)); + /* Extract file3. */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("./file3", archive_entry_pathname(ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad)); + /* Extract ._file3 which will be merged into file3 as medtadata. */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("./._file3", archive_entry_pathname(ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad)); + + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + assertEqualIntA(ad, ARCHIVE_OK, archive_write_free(ad)); + + /* Test file3. */ + assertEqualInt(0, stat("file3", &st)); + assertEqualInt(UF_COMPRESSED, st.st_flags & UF_COMPRESSED); + assertFileSize("file3", 8); + failure("'%s' should not have Resource Fork", "file3"); + assertEqualInt(0, has_xattr("file3", "com.apple.ResourceFork")); + failure("'%s' should have decompfs xattr", "file3"); + assertEqualInt(1, has_xattr("file3", "com.apple.decmpfs")); + assert(NULL != (acl = acl_get_file("file3", ACL_TYPE_EXTENDED))); + assertEqualString(acl_to_text(acl, NULL), + "!#acl 1\n" + "user:FFFFEEEE-DDDD-CCCC-BBBB-AAAA000000C9:Guest:201:deny:read\n" + "group:ABCDEFAB-CDEF-ABCD-EFAB-CDEF00000050:admin:80:allow:write\n" + ); + if (acl) acl_free(acl); + /* Test ._file3. */ + failure("'file3' should be merged and removed"); + assertFileNotExists("._file3"); + + assertChdir(".."); + + /* + * Extract an archive to disk without HFS+ Compression. + */ + assert((ad = archive_write_disk_new()) != NULL); + assertEqualIntA(ad, ARCHIVE_OK, + archive_write_disk_set_standard_lookup(ad)); + assertEqualIntA(ad, ARCHIVE_OK, + archive_write_disk_set_options(ad, + ARCHIVE_EXTRACT_TIME | + ARCHIVE_EXTRACT_SECURE_SYMLINKS | + ARCHIVE_EXTRACT_SECURE_NODOTDOT)); + + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a, + refname, 512 * 20)); + + assertMakeDir("nocmp", 0755); + assertChdir("nocmp"); + + /* Skip "." */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString(".", archive_entry_pathname(ae)); + /* Extract file3. */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("./file3", archive_entry_pathname(ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad)); + /* Extract ._file3 which will be merged into file3 as medtadata. */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("./._file3", archive_entry_pathname(ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad)); + + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + assertEqualIntA(ad, ARCHIVE_OK, archive_write_free(ad)); + + /* Test file3. */ + assertEqualInt(0, stat("file3", &st)); + assertEqualInt(0, st.st_flags & UF_COMPRESSED); + assertFileSize("file3", 8); + failure("'%s' should not have Resource Fork", "file3"); + assertEqualInt(0, has_xattr("file3", "com.apple.ResourceFork")); + failure("'%s' should not have decmpfs", "file3"); + assertEqualInt(0, has_xattr("file3", "com.apple.decmpfs")); + assert(NULL != (acl = acl_get_file("file3", ACL_TYPE_EXTENDED))); + assertEqualString(acl_to_text(acl, NULL), + "!#acl 1\n" + "user:FFFFEEEE-DDDD-CCCC-BBBB-AAAA000000C9:Guest:201:deny:read\n" + "group:ABCDEFAB-CDEF-ABCD-EFAB-CDEF00000050:admin:80:allow:write\n" + ); + if (acl) acl_free(acl); + /* Test ._file3. */ + failure("'file3' should be merged and removed"); + assertFileNotExists("._file3"); + + assertChdir(".."); + + assertEqualFile("hfscmp/file3", "nocmp/file3"); +#endif +} diff --git a/contrib/libarchive/libarchive/test/test_write_disk_appledouble.cpio.gz.uu b/contrib/libarchive/libarchive/test/test_write_disk_appledouble.cpio.gz.uu new file mode 100644 index 0000000..f2797d9 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_write_disk_appledouble.cpio.gz.uu @@ -0,0 +1,12 @@ +begin 644 test_write_disk_appledouble.cpio.gz +M'XL("#N]E5```W1E<W1?=W)I=&5?9&ES:U]H9G-?8V]M<')E<W-I;VY?;6%C +M;65T861A=&$N8W!I;P#MD4%/@S`4QSL38^1JXE6(YW9M*:"]`6/&1&."'+P9 +MA&XA88,PR/03^!7\DGX''\-,PG:8%T_^FM>^_VO?/X52A[:CCZ".9<'JV.U, +MN6AG9G6;C%-A,2X<T]YHWFLDB`[=&*/4%F+H1EG?C9F"V[UJEY+Q+,N5B>*7 +M)%6SN;;CS7_GO;VI,!TR)L^=.SH^/T%'"-W'B?[PJ#_IW[0U=`K!(3XA0(\N +MT$&X411VV:;C`^)]<&3T4S]+B@6)RS)7)$YR4JO7&C:,2Q`ZTYJ5JN04"``\ +M`;`/8`_`+M!]DW\M;QJUJB6G3*9J^28K%:?:O"J:4KJ>/PFFKH?;!;<*;V77 +M;E$9IXML*:\@R?-B+==55BMM]T%-NA^VO]H_'H7N[5T0&H9QV&_\YP_X`B-U +&WD<`!``` +` +end diff --git a/contrib/libarchive/libarchive/test/test_write_disk_hfs_compression.c b/contrib/libarchive/libarchive/test/test_write_disk_hfs_compression.c new file mode 100644 index 0000000..24c13c4 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_write_disk_hfs_compression.c @@ -0,0 +1,278 @@ +/*- + * Copyright (c) 2003-2007 Tim Kientzle + * Copyright (c) 2012 Michihiro NAKAJIMA + * 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" +__FBSDID("$FreeBSD$"); + +#ifdef HAVE_SYS_XATTR_H +#include <sys/xattr.h> +#endif + +#if defined(__APPLE__) && defined(UF_COMPRESSED) && defined(HAVE_SYS_XATTR_H)\ + && defined(HAVE_ZLIB_H) +static int +has_xattr(const char *filename, const char *xattrname) +{ + char *nl, *nlp; + ssize_t r; + int exisiting; + + r = listxattr(filename, NULL, 0, XATTR_SHOWCOMPRESSION); + if (r < 0) + return (0); + if (r == 0) + return (0); + + nl = malloc(r); + if (!assert(nl != NULL)) + return (0); + + r = listxattr(filename, nl, r, XATTR_SHOWCOMPRESSION); + if (r < 0) { + free(nl); + return (0); + } + + exisiting = 0; + for (nlp = nl; nlp < nl + r; nlp += strlen(nlp) + 1) { + if (strcmp(nlp, xattrname) == 0) { + exisiting = 1; + break; + } + } + free(nl); + return (exisiting); +} +static int +get_rsrc_footer(const char *filename, char *buff, size_t s) +{ + ssize_t r; + + r = getxattr(filename, "com.apple.ResourceFork", NULL, 0, 0, + XATTR_SHOWCOMPRESSION); + if (r < (ssize_t)s) + return (-1); + r = getxattr(filename, "com.apple.ResourceFork", buff, s, + r - s, XATTR_SHOWCOMPRESSION); + if (r < (ssize_t)s) + return (-1); + return (0); +} + +#endif + +/* + * Exercise HFS+ Compression. + */ +DEFINE_TEST(test_write_disk_hfs_compression) +{ +#if !defined(__APPLE__) || !defined(UF_COMPRESSED) || !defined(HAVE_SYS_XATTR_H)\ + || !defined(HAVE_ZLIB_H) + skipping("MacOS-specific HFS+ Compression test"); +#else + const char *refname = "test_write_disk_hfs_compression.tgz"; + struct archive *ad, *a; + struct archive_entry *ae; + struct stat st; + char rsrc[50]; + static const char rsrc_footer[50] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x32, 0x00, 0x00, 'c', 'm', + 'p', 'f', 0x00, 0x00, 0x00, 0x0a, 0x00, 0x01, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00 + }; + + extract_reference_file(refname); + + /* + * Extract an archive to disk with HFS+ Compression. + */ + assert((ad = archive_write_disk_new()) != NULL); + assertEqualIntA(ad, ARCHIVE_OK, + archive_write_disk_set_standard_lookup(ad)); + assertEqualIntA(ad, ARCHIVE_OK, + archive_write_disk_set_options(ad, + ARCHIVE_EXTRACT_TIME | + ARCHIVE_EXTRACT_SECURE_SYMLINKS | + ARCHIVE_EXTRACT_SECURE_NODOTDOT | + ARCHIVE_EXTRACT_HFS_COMPRESSION_FORCED)); + + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a, + refname, 512 * 20)); + + assertMakeDir("hfscmp", 0755); + assertChdir("hfscmp"); + + /* Extract file1. */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad)); + /* Extract README. */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad)); + /* Extract NEWS. */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad)); + /* Extract Makefile. */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad)); + + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + assertEqualIntA(ad, ARCHIVE_OK, archive_write_free(ad)); + + /* Test file1. */ + assertEqualInt(0, stat("file1", &st)); + assertEqualInt(UF_COMPRESSED, st.st_flags & UF_COMPRESSED); + assertFileSize("file1", 8); + failure("'%s' should not have Resource Fork", "file1"); + assertEqualInt(0, has_xattr("file1", "com.apple.ResourceFork")); + failure("'%s' should have decompfs xattr", "file1"); + assertEqualInt(1, has_xattr("file1", "com.apple.decmpfs")); + + /* Test README. */ + assertEqualInt(0, stat("README", &st)); + assertEqualInt(UF_COMPRESSED, st.st_flags & UF_COMPRESSED); + assertFileSize("README", 6586); + failure("'%s' should not have Resource Fork", "README"); + assertEqualInt(0, has_xattr("README", "com.apple.ResourceFork")); + failure("'%s' should have decompfs xattr", "README"); + assertEqualInt(1, has_xattr("README", "com.apple.decmpfs")); + + /* Test NEWS. */ + assertEqualInt(0, stat("NEWS", &st)); + assertEqualInt(UF_COMPRESSED, st.st_flags & UF_COMPRESSED); + assertFileSize("NEWS", 28438); + failure("'%s' should have Resource Fork", "NEWS"); + assertEqualInt(1, has_xattr("NEWS", "com.apple.ResourceFork")); + failure("'%s' should have decompfs xattr", "NEWS"); + assertEqualInt(1, has_xattr("NEWS", "com.apple.decmpfs")); + assertEqualInt(0, get_rsrc_footer("NEWS", rsrc, sizeof(rsrc))); + failure("Resource Fork should have consistent 50 bytes data"); + assertEqualMem(rsrc_footer, rsrc, sizeof(rsrc)); + + /* Test Makefile. */ + assertEqualInt(0, stat("Makefile", &st)); + assertEqualInt(UF_COMPRESSED, st.st_flags & UF_COMPRESSED); + assertFileSize("Makefile", 1264000); + failure("'%s' should have Resource Fork", "Makefile"); + assertEqualInt(1, has_xattr("Makefile", "com.apple.ResourceFork")); + failure("'%s' should have decompfs xattr", "Makefile"); + assertEqualInt(1, has_xattr("Makefile", "com.apple.decmpfs")); + assertEqualInt(0, get_rsrc_footer("Makefile", rsrc, sizeof(rsrc))); + failure("Resource Fork should have consistent 50 bytes data"); + assertEqualMem(rsrc_footer, rsrc, sizeof(rsrc)); + + assertChdir(".."); + + /* + * Extract an archive to disk without HFS+ Compression. + */ + assert((ad = archive_write_disk_new()) != NULL); + assertEqualIntA(ad, ARCHIVE_OK, + archive_write_disk_set_standard_lookup(ad)); + assertEqualIntA(ad, ARCHIVE_OK, + archive_write_disk_set_options(ad, + ARCHIVE_EXTRACT_TIME | + ARCHIVE_EXTRACT_SECURE_SYMLINKS | + ARCHIVE_EXTRACT_SECURE_NODOTDOT)); + + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a, + refname, 512 * 20)); + + assertMakeDir("nocmp", 0755); + assertChdir("nocmp"); + + /* Extract file1. */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad)); + /* Extract README. */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad)); + /* Extract NEWS. */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad)); + /* Extract Makefile. */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad)); + + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + assertEqualIntA(ad, ARCHIVE_OK, archive_write_free(ad)); + + /* Test file1. */ + assertEqualInt(0, stat("file1", &st)); + assertEqualInt(0, st.st_flags & UF_COMPRESSED); + assertFileSize("file1", 8); + failure("'%s' should not have Resource Fork", "file1"); + assertEqualInt(0, has_xattr("file1", "com.apple.ResourceFork")); + failure("'%s' should not have decmpfs", "file1"); + assertEqualInt(0, has_xattr("file1", "com.apple.decmpfs")); + + /* Test README. */ + assertEqualInt(0, stat("README", &st)); + assertEqualInt(0, st.st_flags & UF_COMPRESSED); + assertFileSize("README", 6586); + failure("'%s' should not have Resource Fork", "README"); + assertEqualInt(0, has_xattr("README", "com.apple.ResourceFork")); + failure("'%s' should not have decmpfs", "README"); + assertEqualInt(0, has_xattr("README", "com.apple.decmpfs")); + + /* Test NEWS. */ + assertEqualInt(0, stat("NEWS", &st)); + assertEqualInt(0, st.st_flags & UF_COMPRESSED); + assertFileSize("NEWS", 28438); + failure("'%s' should not have Resource Fork", "NEWS"); + assertEqualInt(0, has_xattr("NEWS", "com.apple.ResourceFork")); + failure("'%s' should not have decmpfs", "NEWS"); + assertEqualInt(0, has_xattr("NEWS", "com.apple.decmpfs")); + + /* Test Makefile. */ + assertEqualInt(0, stat("Makefile", &st)); + assertEqualInt(0, st.st_flags & UF_COMPRESSED); + assertFileSize("Makefile", 1264000); + failure("'%s' should not have Resource Fork", "Makefile"); + assertEqualInt(0, has_xattr("Makefile", "com.apple.ResourceFork")); + failure("'%s' should not have decmpfs", "Makefile"); + assertEqualInt(0, has_xattr("Makefile", "com.apple.decmpfs")); + + assertChdir(".."); + + assertEqualFile("hfscmp/file1", "nocmp/file1"); + assertEqualFile("hfscmp/README", "nocmp/README"); + assertEqualFile("hfscmp/NEWS", "nocmp/NEWS"); + assertEqualFile("hfscmp/Makefile", "nocmp/Makefile"); +#endif +} diff --git a/contrib/libarchive/libarchive/test/test_write_disk_hfs_compression.tgz.uu b/contrib/libarchive/libarchive/test/test_write_disk_hfs_compression.tgz.uu new file mode 100644 index 0000000..35e26ae --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_write_disk_hfs_compression.tgz.uu @@ -0,0 +1,1800 @@ +begin 644 test_write_disk_hfs_compression.tgz +M'XL(`,'#B5```^R]ZWK;1K(HNO^*3X%1O$=2EDA=;2?RSEI#2[+-1+<CR8F3 +MR2P.2((D(A#@`*`M>9+]4.?'>8']8J<NW8UNW$'*SK>_SYZ)30!5U?>Z=77U +MV/6<O?_Q:?_L[NX^.SRTX-^]YT_W]'_%G[U=:V]_]W#_X'#OZ<&^M;NW=_!L +M]W]8NY^X7O1G$<5V"%49+IQ2N*KOW!)+_?M_R1][,!PYXTGKSZ['ES]_SI_K +MT^[)^>FG+:-\_>\=/GN^;^WM/3\X@/5_>'!(Z__P^9?U_SG^\/A;XR"T/'=@ +MA\.I^]ZQ!@M_Y#F=5NO_63A1[`9^]%^6U8LB>/JOEF597UO3.)X?[>PD.)V) +M&T\7@\XPF.U8;F3%4\>:!C.'2`?^)'#]":):>CDCY[WC!?.9X\?;ENL/O<4( +MP*Q1,%S@.QN+WK9L?R0Q_3N@'!!QC<S,=CW$\]PHCCI<P=O`"IUY$,:`#O6! +MJF];B\@A5'JTXM`>WCFA9<=,731I&(R@,4$P@0[`QLRU1NX09K2#!:EBHL5@ +MYE(QCC^U_:<=:)GC;UMQS;"B=8;D\VYHO/`]J^2_L9.N]:UNOW?@-]&%2 +MGP@JI'6L5A/M)Y*)6JW;*73["&H6NH,%]IP81M&Q#H_)./"\X`/V%A"<!S[4 +M-3KBMB0DCZ!R\!3:X0.-7^C8-#`P$M:'T(WQ-Y3CV#-ZRT@14X'E=$0E;0RB +M$3QL6/,PF(3V#&>%;8VALNVQ8\>+T!E9&PC`S:4_,&2>+7IPL'"]&*:.5B\N +M83AW@Z0(?$J5,7+'8R=$&JX?.^$8*,)X:,4X401?7=OS'HA.9.-$7?A#[#;; +M<^,'+LFYMV<P<M&1=8-3.9H!AGPIB\1NM6/K(5C`/(3N<J&/8*)!.SLFD1WH +M+)=ZQZ:^MX<Q%HRD1LX,UAA,2.I9G*;!6&NV(#0,?!S;(\OZT0[=8!%9;NQ` +M^9&8;U##`;;'#4?6W`YCUXE>:(T64Q"I8-'8;GL13X,PLC[`%(/!?;#^)==[ +M!^<3]MJ\[>$BA3X-G6$<P(0@`JZ?GDZN#S-E1DL6.@$[C6M]<?K3C=6VINYD +MZL%_<81M`UI8Z2&LEXF<.,>75S_W+EX#[`?9H4-85*.`JP?M$H"]BYO;[MD9 +M`$(M8A@2+A0?P@4-H0`4S*U-N%0IU9%C=P(3$#[)WTPC&H;N''A1Y#BJ&%P` +M(P>:[$G><GQNWSEGQ&SB^YCJ,5_$!+@^G,&W=9J\(^B^P#.(<:\FG48=!>C4 +MEWF=;4,E83Z,>&2=UH:J^X:HK.AFK!)2Z]@SX)A#+QC:7F=VN)TTMF,/Y6QH +M,TV8,Z*>:=:Q#>L.UH;O.",N&U@LC;H31JGR7%^6T9G"0VL-NMN!66W'T#)9 +M]:3'N=*MUNN%.\(F6R<ZLY<C*AL,U8H>(J`'K?S:8H;2V8,E!?3E%!3+!7\R +M@%R9`@491#D.0NA(VLH[L";(VI"[!^^=\+WK?)"(DD':R'(^3`.<75]+9MA' +MEMDYV%;/R#:=S(L^=/H=O649IV.+;UBQ]]A7/`>A9V!D2=Q%*#E`WD0T\[!* +MB$9D!)]VK.Y5+]*K!1T=/@!1,:$):YW7C0FS;L%$0$YH#3T[,F@04P4V&265 +M@V%"!@G=BTL<V:XN_C9HSD@TBXO#R8#U#.8.+[Z.V?5M9B=1YZG2!P3+@4ZP +MQ$<0J',4\FJ!R%%I"3G1>;IMS4!2.?@#B\,)]#3;ISKWL@?!@OAC1/QB'H"` +MA5DEM0U1M*ZP3.UPU(Z#-C%_V;5$!@G,0*,(?:J.K(+U'CBX[:.V@@QA9OL+ +MZ)BY/7$(#TK!A2]J.9(,8@,Z8D-C#K#:;,M?S`:@Q<"D3,2>[+I6ZV?@HM$T +M6,`BAP$+:(80K6$P)Q$"DHB[%LI8E[-^NLX5!883!8MPB.`C1TVS*"4`\?TL +M"!W%)BWKBH6-Y\2PUEIW?O!!="M*&2<,4>J@8C@#C0H9-K%[[#ZH\_$BQ%9X +M#]OF.EO$`8[0D,0V%`6]$%$]L5%I<31&6))!7UNO+]Y2IW.W6)O)P.$7+Q", +MV`<M`(:5GE'5M,0++"("@1KQW(NVB.A-`),"^-.WP%EBQ\=ARB^C>WPF4"YA +M%'Y\3F":SO2U=75YTWMGD26B/<_M>UXS+"4%90T@&,9.W`Y"%SH+V0(,*-?L +MQ^M#JWMSW.LE[\HQ7KH^]C#-T,V!.VE#>UQD>6@5Q+'GB!?<C-[-Y;?/GNU: +MQR?MZ\MSRYW1M-TD*1W,686RKH/A7>B.H-Y`Y/O`<V$F4$?1<#.A7WI7JB,$ +M/NA@H!J%J*"-$'-]Y(Q1E*Q;VGMD4*X<!QQ"'*&7-R?6!JJ;1M=NT.+?T#OO +M>?L7=VY"G;O#,(B"<6P==U_JL&=OND3\[)<W)L9U]]I\\4Y_08M:S5M<=_IT +MA>$<>213'J0L2>;MP!GC2G+>V]Z"U4%2U(1>3D4MD.L'..%H.M([5B2H"Z^O +MSH'YVW/@J_1I\A&:*WL/.I]>#N#E?N:M?-XY^^6GS$?OX\R&U0&(O"3N/QH@ +M1IM1<1O"LHR=9("!P>2V6#"KH^66PCJ4#[,!)O9HG>#XVS9(9'<XA1X!C5W4 +MA*@F]7'NA\Z<>"6I16)2L3:/1IF+'!@()K/6VB0[.<4O<'UO6TX\W.JH56YR +MG+IK=MUW/@S7DY?1-,TI_IP5(Q=\^2(R5\!/4T=,`=U$W!9J2K0`TPXGR8!X +M*HPL5%)9(>DI8D[[SSJI+X+8B1*-(%G4V"!<TJ#&'+50VR#SF\S/J6._=T%$ +ML86<##9KLB`<8:6$Z(6P_$!(<YR!0I4A:>KZ;3*$47=PQR#R2#%!2QPJ&<Q` +MP0>U#^4[%9Q4"]5X!W0P7VCW3B*<J'=A@NGM2ZF=2F^@*K()(%8"6>2N6!T\ +M."3G!J0BH0"V!Q[Q>M0[Z3?IQ=P'0IL`>,>&12F+(T53D`#1[\RQIGZL>LBF +M_T#B(V\+_+3;YR?WSI5JO?`N34'/@'9SHPT+&GOJTJ>:;J>[0#:&RO,^V`^1 +MX-?0;8;6P61Z&ZB?Q6CEQ-S/:-G/W(^@&:$9,V3M80[3EXPI:$]O3`K.*/`W +M:*RQUN[0!1T'&OX^N'/0&T1-)553^$>LS6B!W149<\,FI30!UAL32):S!>II +M;'W`\JP)B%[T$9$B229LS]<(`*16.[UJP.%H(#5@Q$X5.'+T%Z*FVT21RT<K +MDOUA_AW-M@G:8;%00T'7B^:!/Y(NJ4+*/,>!BU$3:+D)E7:T&`KO5H2#`.R# +MQP&'K(VEHGF`*HY+8H@&P'_OAH'/JN\'FFTT/V<XKF&4FB_&RA^BV(C(20'& +M>F@-P-:^8P46)3OT.U40-&]VG)&]-K"'=[A^QL!;L2_F8%.99,&`06D)L]"* +MW1FM"52K9_:<X-!?%2II2K,6+5,<Y<0ARI30:39DIQ&T@.S`5!-XCH/^SCU' +M@S"$$6]36U".+.+Y(D[X2S#X#0#:4?R`\V$.F+2.D3]SRZ$.4QM=L<#8730. +M9$69`9`!"):>KVIG26,=3/&(+7U0$%SHV/6_"=SU1/0F-9%T`=+QQMBEV,<[ +MV$J`!6HTCV2/2Y]>)(>$A`Z-"ORKW-`N-Q]&!WDK>B':,V>&)M9@@3:5Q3H" +MF]3<X\#:L*MBM7H^N-'4X%QD$0LC&K%576C\A0$*5M(#6H[HD%BG#D+-8GL= +M]0G@4_;<'B`!FO6R"U2#V;RGPG2N3\."#-6%(M"N%-(?*\%"@3I`\&KL-40" +MN3NR8VP6&GQ'26^Q]D0+E^<ZV9H("@,FN@FGHST:J;[1%"T2/,(2'KLAK'OI +M0;;)412PEQE=24F9B:U*;G44$S@V[-LP%@'W`\YNJI(:2FV($O[[`4QNT0M: +M)RK-#Z5Q=$=K18SA,/#?.[Z+7A9C_,BLM^\<GKC`P)PA>Y-Q/'FD4',XLM;S +M5==U,7$1!5N8M2"WL0@8U3G6\(.4NJAR@OG]`+/A<?9_T#O[.)2*_Y3O_SU[ +M?KC_#/?_#PZ?[S\_.-S%_;^]Y_M?]O\^QY]7SL#:?;IM[>_N[1\5;,U9Z+V9 +M!A&I0[&Q256Z#=@J(KX1I;;@0+\DURQ2IYTWZQAWX?0B:F_+E11J[!.*0K4R +M7X?!8HY\]L096ON'1&+/Z)2#SFYG'Q#)N35BN`,))S=EQNX],).9$T[00D>) +M\@J$/AA;*?B;AQGIB5*W@[J@386,"7<E)6\+4VC7P0#FK`]*D2@)V-;S!!%- +MEO?6_O."VN\-DNHSY#,)J1,QO]S0OI<J#<Q!JA["PZ,[0V$&0B6I&-D:J%4L +M2$.F[1&FJ7JU)["2;<2D^`U3X34L7"G+B-JNI'8!=DWD.'<F'4DELFY>O;,, +M@]5$?TF[(-Q`T#1_`MD)B@UWT-Y!05?NVJFNW%4=]G8^0H<#VN_.J"W5+E`6 +M29$%[01U:98EJ9WW@\Y]Z\:96[NJHUZY]R06VM$+81'KW@7>%`QX0P#=T#BE +M=B(UM091[,8+WA/K+B;6WC<Z7;FOBR,JW'B\ZSIX@"Z-8<[BJKESHV`LT)]* +M=/1R&+L5HJ_[FLK>?_?NG28V64^!CV#.(BMAVY,\-"!WT6%EH^6K=\<A]'/K +M^X6O34;TO(E9BA_VU(?NB.3G$>VMQNW]>^&,)(-PAAWN6(,0;"VCA'WH<.0R +MZ)/#K@#=!D7VV]M7[6_0DA_ACE=W'EK[JNG7SMA&!SQ5HX]*V^86;WG@QB[8 +M64.VUL$,`8J>T\9M6IB>9%F\T$U]%.F!-TJVJ2,T]H3SCHO=VU>K$.RRF#04 +MP1BXS,@!ZPS;Q@XF7)AB_N+*]!RUMR;H[:96H-A8"7`S%M@QT@6V[$=R@B;K +MH=,ZAP$Z4`3.T5'Y(0CO6)\"B]67KGVT[TC''*O=*GL`+=[<(AH)-\-!PX*A +M=[3AFJ$VRHWDJO$DM\Y?'M\DKC<BM:<XW26LKZF]0#-7YQ[0DV(K*3$G1%%I +M"K<HCK1^B&CWPAGQ!L=@&"&W@K9$V[($4B9E;Z&O-M@AC@]889NTPK$+^+0; +MZU!IN]\FTV@83'PT6,GCIKEPT=G$?A=6DU&U)X<`4TC8#!@-+JJHHH^@`V)5 +MA;>^2YLVVE"`QDHN9K%)"$)S-A=+4SFXCK_=3?6`-AN2Q4QB-NFY5\0ZL9NZ +MO7?;UNWUVV>'[%`+4)FV<#L8!R%B8<9S>O>(W.UB,=.'7?GA[$UW!YWN:J5[ +MUNZ!_"@"*50D1A(^@0LHO86J;9@!"#)AVV.>\JTD>([SS4VM!V2*0HXP2W$' +M;,MI_&B7!\&S0=B'PE@D?X*/&VP/:G^?#"Q9->9;WT@"UXY:IU"1H75YH[N< +M#7Y(F+NJVMFFHJ:FA)YJ+<[S!VM?E8B>6J%;X(<]U1:4"?]]JYCA"^42<BD0 +MA]B4D.F\YZ:T%"XBJ9I@+B/A2!/\4$X#N32&8%P^S)&)B>5$1`XE$73+2BM0 +M6GKL+1;%[4E(E/]B31^QM&Q/W!'^3193N[V@IP4^,3?_1A^_:Y#2`P\7/Z]$ +MF,?)Z.\(;JNI.L!3B*6`6<A,];F:2>@)!)-;X)!T=R;V\"&])4"<1ZV#$^IG +M*,RA'5RP-H4()_Y[YOJ+>YY54F+CID-'9P=B]#B>@T!Q_\[#V:M)._*9(8V' +M)-*"EO*^-AT]D'^Z/$1G&G0**,_`@D`+F;D1NBLPK,-S:;7@M)LXOA.B0=N2 +MH5SHY.=M'R#A#N\>K.[U\9O>CZ?]5]W;[ID%ZQ5Y0SS%I6&]=R/A/1""@JKU +M5$TH&`\Q9^F#&GH6BR0QX"^QA\Z2$=567+W3!71D)X5WE8PA\"&0]#3%V<&! +M;L3(['"UZT+,E4(S4@2)&_OQL\-^K#/=8#SNQ]MH3_4IR#'`?V`ZXC_LQ8.? +M3&HWF0X<\$#^>AAJW8]%C%>MLQLAZ93?S5PE9`P]3X9V1BHW.J;$K-3FQE[G +MGL-%".DP0<+U-W8#I0W1=S5UN]+1I^V0*X;I/;`M("8_HZH>ZP$_F9#NTIUC +MW36VAPM'9X8CLCTY/DF.+SL06]_#J!_LI3N$]K+;/[92K3$TOV\ZNXD*CV22 +M=8QKB7299"5@E3:<X32`Z>X#2X01AA'Z7904;*0H\)+&A3)>H$,W`B41)MCQ +MP^2#Z[<(..E$HUK/.]_N[B?&A;498WRH>*1J0-6W4A2$F;"#L/17_X/0`J%0 +MX$JO?\I!$-X[('R7DC06DH@89:\`A1<(3S5D$F&\F!.;B(0)37VQ^VU.\_:J +MFT?V!@]<#HD];>!`-^"E@W`X_FA^6(-@`L;X!SOTA?8)"L["O_](\+R`)#S. +M%QX76`3/63SOI0%PIW#G_J,VP85%2A/<T`"8?W18ZJH6O*%M?]ZY9"+"94L$ +M+L&,P`W9]<E'>+TN@VN8R*[JR>[[`"39&&1ZPI%-1D7\:>[.<<^+9-.S@B[4 +MYKYF&60`GW6^_5:;C02ZJ[H/I\1-[_55[^I4^'1(`F%%J%GG-S\>=W)P(MPZ +M`3D)JASJUL7ST#;V\?HX5[BZN]\45G<O7=VD^T8C5P2HT`1'I[78*N4P0+V` +MO<("=M,%*-"W%&$[`[&"=K\/P[WP:7-Y0/_"ZL,YB'_C?*+@@S5SF\LUHPM= +M:9)+PR!:\/YJ:RW9$./]6E#6<0$J>UN89%+H_M2]OFBM42@9$!U2.'J@1#AY +MW4?V/,8*^`YN+T/QG9SF39QX_N'K/KNHX&$2XD-2+$>)X71L1_;8B1]83TD6 +M`MI\ANH*W#3NLW39W]R2H1M0R04YF/:?_L_6&L67.6/0&5T1X<9R3-3_!<_[ +MEQA5!RLM1,M)E+LOR[TZ>25],!&;0[Z(N`/2/FV94*"\BK?3(V*)F*1T;O^& +MNR?"])5:H6`AK(*!=G0,9A0N\Y^`(R(!D$0[^430*43;"8RK]E!G081[&4#K +M''K$G;IA8%UT?^A^WSOO5M#[$90TF.4W\6+D*OVZB-):UY,+`OL!-R<[FOXE +M%^V),\#N?0F,^:NG>\^>/G^NJ4`(]+,]'(JX!HR2`4XH(HAEI/$+BQQCI"J@ +M_T1N0$&W`9L`:;,#!%6#2!FG!NGUIII)&!%9IK6OZX]@4D76&\</W;N(>CY% +M6+,68-J`25!>QAMW,FTCGR4Q'H/-24+U-ER@D4L&+RX%U''>+,+1-E)Z^=O_ +M^?]@[7V/_NT.:P:*7YWF*#1RV(2KF(/.2.V'`5DC5IH$-S'!A*MA>S*V((?Q +M]G%9]%'<@/J!89C2UJ>HI=9:CG)%L4S(&FA#7.S28GUDI#0;A2(PI+5&,0H< +MVY+8=5@4V!83T7BVW;&NI$Y*G8&0I-KWWJ%P$_:M.:-..DRAM19JN"CAD,$F +MJU><%\$84R-2E/;DU69H:TWHQC(L=H";UM`"F#.NLO+8'(<JF-'I'(/26N,- +M`W*OZ$$HD8P_20QZ5.!%@1U6BG@:?".<#L*UMF,N5_9$$T?+6ZX90J;(U+=N +M9F2$Z[L0PO`9XL@YX7MNLK[K(F(K1/<06W)CV3TRU+>U-G<"U-DIE@''R)WC +MRBZL2:;6*:&J:2,$]S07[BGHCD]M$U3H+7F@ARE0H4[F@1YHH.3,_[80=#\- +MFM^FIZ:>FP*]07V9?"*ATY;*+[)@:6J8_2-V&)Y+='T9R35S1%J`J4V$L!YH +ME?RV`+UF;0@L#^8SK0D1_@'K9^#&J$AX#VU47$<BHD5H%:%#CQA@M4;SJ-#; +MCV81<)DI,-^!`TQ=Q1QQ@(I8OT.8/4"Z"S*1HU+,"@]`O<75C/,N4F8M3#>0 +M20X[G(`%8\"-Q@U@;5T.8RF(H'L$JV+6:.AC+'H8?D^-<4^>3:#&V5.J*&W8 +M'^%""&/I[Q*\QA:>;B+#'AA1+!WP$IYL(>82:4BQ+J`RP?<^O@)EI[7&!TQP +M9(1)J6&3!P;#(;S$A=JA#:*D[M_;]MU=`/+.Q0'PCSAL5)[>R#M%1_AJ*ETY +M(^`NK]TQJ'`NM,$-XRE*.N64,\'/W3LOB*P?[=]\^XBL(GW+$F<PC"X'/U@] +M=/Q`W3$T"-@-Z6L8_1,:+F=DU^W$3[AY]LMY5S_E`1IRX$0H<Z283V%\<#P/ +MU$8261R$Z0>Q]>``)H>PC4#?IAI6;5A!1V]N0?U?H5X.`\UA;#-8.[2/44T` +M^P-W@\:M-1EP8E%[:+8*##&":K;VWH,E%\!`Q*!'"L&@=EOE9@[I3]LD4**` +M`PM%_#<9P&H.&J=X:++2+GLDM&J,*P?"%*R%O40K%2P'4`*)[4\=#]0;M%%! +M+.,N``T)C08%U[FH.J/*MK[P4<C[ZUNTD[=&4P:#L0-4E38YM&O!9S7$\/$Q +M$`3<ZJ1J_7W@A!/K)O!A!@]PZSPT/'09YSS-<>$/)$I/RRCQ!@N[QN2LYCV% +M_0+6_50SCLL!!Z8G8C?-@\B"<\2Y3K(+'#]83$"?(P$*UH[#858XOT#0[N'6 +M,HX;[S/L9EA:;VS95MOC(%-RM["I??KNY/3';=YW4.>DA".2?1K?9FC9B3U, +M8>U**P8!-*`-2U)KJ1WLTV-*3PTEAL_%8J]RM!KK7(/%A"<Q<+$A=];A`-0` +M\HH4B?=#K3L)<*]L7,?H\68%5>Y]F_XZ#*B77"1%CW8OR<N"WJ)DEU,Y,$C^ +MV>+$^?K-,(CC=76<5AZ%DD@S<1R2(MPET@\.M/X7!]I#-59'#2P*HATY\D3O +M0AZY-6N()I=^O@O8>QLUS4`$6.-VS$3P71FG"/K<&(,RMU5!275.;%"!T0EL +M3ST,>V&G*^V1!D!+G#7!DY$4^FE6YA@,+1^7Y-`%%G*$3I_>Q:M+C"*$GV]O +MKO<LY9*%;G5QG:K>Q=-U+6VO*9&5&Q&)#!P^BAQ)9"6'@]/(T$P.0N#@9-7+ +MEA&_^F"C[X+#/J/Y@D-PB*1RCZ$`!:JD;;')$>E$9/>\!+&$L\BZ[J#I=:?& +M>.3:$S\`Z2PZ9>^P;$ZV(R/LPMB+%AYKIG)01H76%;,MG?4)U,I%H5:#QL31 +M2]A:DU^$"$C.#,Z=4!W&(STO"-V)BYR!#DZC(\CUQ.X_J0VA.T,'E;:`R8A5 +MZA^;'E+[4T%0:]`:#":&D9>6"&5JB%S<HCVRUD3`UUQ\[&#(-'1<)P@G.RBD +MC#,`@I@\2S((8>Z3-:L&>&<'9E(0[^"6_,X=.HL^>GKZA#;S+3X;3G].:+^8 +M^.N1##\#`8]G?SNP2AX6H4<A:(?/9J.)&,U"R^)`8VAK9HZ%&^$#5:*>1@QF +M;.`)LPS8,_NRA2@9AG8$*Q0)*1;>GN?Q/B2)8+@E,+?OCZQ34/Q#>09JY(84 +M06$Y9!M;&SL;+\@01IXX!"5W#)*,SZ^N6=8,:K\(7?W4$[N<07-WV=6+G@(0 +M#E/:;1V[CC>B!D&?IQM];H=W0A5A#46$5'#(M!-3/>SA<$'[0JH.Z(H#L(4; +M3;%`/'J1H&ZN@Q+"<1<^!9*@P;-Y\?;L;$OT@=R.H0Y4KG(9^$OBDTDFP25& +MO<DMO"W6;_*@/,:@Z[YD<8E'8''?\PAK'2Y8=R?7&NX!>@X&*T-1.`041@*F +M28AZ%2P!A\*B)-O""K3]H(V:Z]CUY1&*`>84(&8B=I*R]829=0?Z&VU),.]D +MUQXR(V9_W.*#_?8`-_9Q@Q+)N%&`Q[QD7PTX=`/&B"-;.+4%'9D/1G1("ZT@ +MU6LOL,&D?R,;P/$,%F2LA13W/'"`W[AX/@7'B4P!>:Q,!/JHH>+X]79HM6]% +MO+K(5@"6$]0H#2>C>ZA-;8S5M]J+]+0332+WJCKEG%ZZ-^BWX8@=J00<)="F +M8W,8B'03N*Y)$F'V#WEN4-.KOG+'""R?>1BP^9I!IP56Y;`0(V:3X@:*M*== +M0WO2`24'H0`1!Z<`A0R)<Q]"-4YD`W%M5)[`/B66(8)YO)$XQBYVPT%'^AZ- +M(UN<$V8.(MT8?):UM28+!]46W@'K1$.>PM]=N3N0U+2'DPAX&86[@[&#%7+' +M#QQB)Y*Y4#8/GVP+R?)::[C0R"))^"''!$U<)TJ7PKYEX4)0SK:L.,W@H5S& +M:N7X11.7<BU2NM[CZ%-+3J+%8D0^QA?8%P]DC[+0)IN^[1(##HB3><'$';+# +MEG$B<=!2A).0UY.C"Y$6^S'(-2\FWUZ^_#KL[!VJ*?7"<O%X'KI5:5L&OQ[H +MQVC7;-8D205!%D71-SL4=6/-W/O%'(5-XL?F"J,&YV)\'WJC8#&);"^.B,&D +MX>GP/GYB+Z9K>9!,?&W?XANUZXK":9OF$E9FFVNV;5%T,=:.:@)*!#()1\;2 +M86U4.!U6!GW2RK6[/AV%(G1Q/7&?\^C?O+UI8_F=5&U0I:?R,*G&%%D!A]F* +ML(YO=#AY3(99K'%0=QNU->L'V[5^`N::POT[3\U_H'I%B:GFJ$@+3Q+'MXQ` +MF1DZ8H\G\72BLVQ=K+=U0Q%!KX`Z03I,%IBHXXMDC;/#!^=6))BWZDRA$9"0 +MZ&A1)%BTM*.,2#M]:1H^DNVT:<5!((J!]D!?#QV-#Z"$)7L03"B.D]6/@G<X +M'&,_W\:'V:7%_)N`%')E8[JED5"$'#_)D"5#N`0O3;'.%*D?P;H9/QA:!3H+ +M0.81,8Z-(@U;GI]4EOE^Y]N.&@'&Q'[D+0GVLY%JKQGXFVTVTML?M[:5FPU$ +MNI8'!7?G<1>8DCNTVV+G=!L$+LZ&+98(MMC!9ZR8&#''`<!*#T;2^)8'"BVK +M.Z98NBGM[N)FH*E(4;#_>SP.CML3(D:`M-(@FCEXMI;/>B!Y@;=-*A8R1YPN +MHW2_GM[#6G%I#\<SC#$\/]B6]I$X-U`T.+QEETPHX>>2`N9!C8TF4F&UZ.:6 +M*$GNQB03@C@S],SF3Z05,V&I9L&@^#*(BL(";.BC`-5C#A-$+8S86F>+-UC$ +M(GB>G<1:R(P)B,&[(Y&4#+5%CGM*.EAI+,IXYBV:;XM*2N_E*$!)<!<F[*X\ +MN\DIYCZX(W:0=U(XQSB3'3Y&XF+.-M-A(,QJRO73TJ*+<^KU;:I:"B[AZ2PT +M9WR@W/2&27O+:MNP!OX%_YW!?^-MW)I`S1^]J#+T'Q':+B\P5VY]"8,_6Z]O +M4OM9"HY"A4C#2"<VX"-9+-H^.F'0IL/#'(F;S,%MU$P3[\\,C%_K=<#1.=0F +M-)_8[>,2S.R!SK7['/#`M2GJS>>:4JIMPV4!GZ7VX-3(FN%JZ+?L##%``S7P +MR%JG,-ZA]3O'\]ZOLV=3[OLRK>?:'*89O$"7%L9V9.**1'N$MI^MYE,K;ZM0 +MD,:AUT/K*'<7LC?@T)'@T)17;&9'=WS,5997-.J'J?(4'&]9R7QI<@ZVVWA& +M9N`Y[7O4-7ANJ7?VT(/!3EQ]-_9LX;G6S2*`CG#\JKH<%-4EF3YG]AS^6@". +M[PKVR4H%[B927A*V-*<H2#3R0]Q%1K6*9RONK0AV,UA@TD`]TKBUM@[R?()9 +M0&)T3:Q;8\^>$*^7!8A=]*2&3$TR%A)-TD[G)S9^!=I^@H8GD8<8+$![>Y[$ +MT9F+[+:B);"?6@*%@"G6F\"=L_!$-6<;]VHG4ZH33N!1,,2#X1C3S!I4)#A+ +M:TW%.4,%<0.RD.=KC-B$XW(EPT=U/9D[PG(!*G1PIY-"O:2L(`M?SP)B+T2( +M/XHD<51Y`':7[XL0<MK^E9:TI7*E1!0HP9-9'5L0^PXLA8"1H3KP(#9X%>^X +MQ6'2I3D""9>'=.M@%)>FY1WI\Y*5#>2BSCWZM"-RAC$>R>?]UR]%^-G>[4O1 +MS_O/<_OY0.<=)MPQLV*1"\!7<75),CPZM8Z<C7-H<D^MFZS>=]:SQT)?,->6 +MV2_0O<F)(]:`)XG`N9T#)$F%\RH`+2-9TJCB7$5!+,(0YXN!)]QK2%@[XV") +M"%T.Z,=P$0[GWL#-DDD;7=IK^ME:K%H0.0J#C$)8I5B-X`-H1"+APSP,@'G- +M0'4Q>^V5,!^C.W<^UX+OS1Q-:,,Z]S8*.K0\500\3+?#UZBS"/^6YF>A8IZF +MBY'N0&T*;?[G-Z^WC-DCNAN,5>A@/D5(RG[/PM2?KNGG1P>!/.\AX^)E2CZJ +M@UI-/:'3R/@OQ!3Z!"S]>#CEM"@B^1[RN!=6#]3*8"YS#[R'3N%M5I$\-Q*) +M57!_26;2$]H<)C_DJ2P"4;)3^="<RKM/DZF,6T0+LG)$9277C7DQ8H++%!+) +M,DK#**,MMX7:S[MJ;UQ4=\'8A$%+4G72?K)*]BG#--.T<?@^)F=]*>QJYHQ< +M($Z=0<&OIY>O9(*..'Q`<YZ=/M*%B09AZ$PXZP[GH$@EQQ&Y8\F?+F2$MJD" +M)#X:=@-M[1<PY`-=T"*<\&<\QW@>ZE0MBZN*P./L+RCF=X2X5\<7UZ`6<HN= +M=5=*OXD.M(F($TF*P,YMH\Z"/(0>R`91!UL2!Q1[`Z&+\*#UFK2;]6[*$+\M +MT,DMSNM"$W-;N`64CS"2"4AD\`%Z43$6SW>'\F`0M<J>Q/8D=;:6)QUEDXU( +M]8F3K6`Y#OM%X["?&H<BN#T^,2PI#QS<:G3TE'PRCRNP\<TM=+/=LT-+FA1D +MMRB-7-1K[UEA>4:]$C@S)B2QHPZ.+&D')*8F>\)!#PKE$5.8NNI@$ZY<X:+8 +M)M&OZ\V1,QG3_D4G50'6L\2JHB`2D2TGIQN8,RXBY<U+`;G1'0#1.5_@<+S' +M:L19JH.C&*\>Q38EN24U`I4&/5FWJ*9B"GIL.0?`8I?TI2]K._41['?,SMK2 +M`W+2H[*O&VAT-C_'GMU/]!<,VK8V1002^B:V9$([=)^S]PGC9,5<V"TJ53.P +M\"C,@8*[T22-E%W:$6(],2TL()']5K+1UMIF5SKK'<,U@HX[$,5)E@#F2\`L +M)SCW]SI[S\'BP(W:>_A7B#4AD3N,=I"@\985"(713H1',:7')#E;ZL;&C@HP +M,U^Z'L8:X@!S0E'J@#"8SQUQN!$9NLB<CZ&HX4P5,`!QG$0H(Y,(/OCD5:?O +M7--=-:_Q1$.[S?RUK9A6DBZ(LFN%RB\GCB4]+1BS9^:8I01ARJC3[#?F+]MI +M+;RU9FX@F#3E_C$:4IJG5,;Y'O]X0QOK'8Y@*G`_[&="G0HL_GU=-3#A$I72 +MC!+9X'`R%``RAH(O$2`^R2FLN0E#Y$>XKQ`YH+-PW.($U=43F4P9W;^<C0X& +M7&S*2V`C1,`>O7<CS+D8[8B>:-]TVU#-W:<=+4^-'0U%B$L^+][79;4)EW=R +M#NU33477PM.V*3$6ZN"@)`LOK`A\%P<J::=?9TN=*>X54ZPL*G%0B+^8B^A; +MLX>W=6%*.RZ@C>P,^*01\7:_M88ZD.T',UOH@>1,,J)N96!+T<COFUVQMZ]W +M19:Y:[$DR;+$T\(!Y6E<XXU_BN@5`2*,.Q596X3BHU%!MS1PB]8:;R_HLP%W +M`L%L$?&.:`&AE6,$:@I]#>4S:EF8W^[.?E#2'!@13%-X*4-5N&:XP49$\?`6 +M!J%R6(@(H0Y)(.6T_0.?*H""[[:$J8N1S[2E1YN-FD$CI!!VC),<?$*K5.RA +MD\\9]3R<7%&`7.J!??L<2$!QJ>@SI6%16LS-'48:X+HB;F:D`1%CO5LT[??, +ML4[@7H%LF?+Y"HJFHIDG%#$Q;^G8B,U[RRC:*=@'33R,B>),EASQC=M/T,Z1 +MPQUE4X``)3[FPK&/_A?FDO]/<0#2T/IMVG-A_Y'<-\29#97O?"N.K9#:Q@7A +MSNFHT"T@"E#<\1R/<FV(E/AX]'V#VJP--L\TC&.G;"T.B$VAOX9TP%HDP]?C +M(7%FV\.I"&!G9HT>,!_[").D!"'**!Q+9=VZD<.R#B2W.U]X9B9=F*TX)6%Y +MS%S4RA/?/)[8*S!`]@S?/`$JK4*ZA!*.(VCMYWM,]W1_N@E'!SP#"@<>DOG9 +MUL9)S0@^-RO/,()>0I$$F#&>S^_<.5*SI=MU*+D@[O3PTB`[@5U%H+2LO2(F +M@"$LHI]F>!IN<VN'','X+]"#Z4!A!"EN.Y0-S9>0>[K^9\)I[CO@OACN0CQ: +M'8'%H]?V\/+&>B=*R&>P>X:N9\"=>C"^/N=+@K;3`0*8+^;\I$+)<23\<2R) +M(I&Y(DH=Z5%9+)()^J*U9I)T^20@;3XMF$VGYC\?J\(C)2.Q?:Z,T3A8T%P7 +M9RCOY$GD?/?9GJXUK9TEG[`"PD7)ZT:>`5&'%:%_Z>2&>V\>=LX6H2LY!)BO +MP>T-]LV1V#,T.,U_J%^"81HOM(LJO'N83P&8PT40*ZY-TD0.!0\$*DET7Y!9 +MHK%SN4Z23,KLOC@>SO<TK+/XR7QDVYUC8_4P30IWNQ=5U-4`.KC!!R>0K5$O +M.Z-M<0C[SJ%XF\C@;+P=BVY]L.TQYRH(*SR!/T0_S$@.2SX+`?-U+]7=APD; +M#AVULD(YS$+?H6`(Y`-5Y%/<+E<')B>P3[&FE#.'_9@;.QLXO3!,#SHCR9-J +M7-[`1/,-.+`)4PPR`3PW#]7A>0:5L%@S$^CFH21`-_%CFM0XV]Q(WL(S@?&( +MU)T\T6*P+<,&Q;GV_#4"]4WQN020^EOC+3O&40H]XEV$I'2,(_0Y13W7M0Q= +M#-T8B0$TL\94?&E*YL58:8EU\LI]:I9K:K+"KXMY@OAPA6=/),7"EARF*"K) +M*WW_8-9B"I>!QV>01*31(A(W0.`WD?F>U<V6B-J/.7R+S0,1_"].B)&S'[5] +MS%A)X25TDD<JVR-+<SAQD#MO\F!(ISA9QWHNG4]C$R+PH-^!]J94OY6FP0F` +M^0X^%8@`VM>$*A_)V&ORJ\)BVF('(]>`"Z(4-APAHN+@=HV5+EW*I-+J_`6W +M'O$<M!R'?,4&QF&_:!S>B!Q>K-1$+T3.!P^I[HPC-+98;^,69K9JA)6V+?"^ +M$ED"K,F"=C(TSSJBBTS#>.<7764P>"^OV>&M-GDH0<AL%R^<`94'RL38Q73? +M_)1XVM7FI/!Y'LE#;B+QICA6Q+,G4+G;(W)FHU!:)Y4*!//P;IV%D(PM$FI4 +M<0<CBV377Z3E<.J=G9[PJ0*+DD,+\TUD("*SG9(_?;`?>$:1-F$#/^-YX?(% +M=MQO9Q3G3I<3V;Z9*(HK"S.$/*^VF=%"S(O=?-T"YL6>.2\2P*XPRVEVLCZQ +M2354UQSQF7;M9@*J*<Y.Z8,6<]O8^X$5T$D5Q7MEVI2FM4*+)QB/.:?C)&#R +MV,MHH<)[)"=\&"\`17BI,,$\6+A8KCIN)Z_(U!IOA#H!%`STCIX]3"2*L>]Y +M].1B1^?UPN=!`OF]);JWD*'NFMVKX*P>GO#`*8H;B4",1]'%MZ`>Q-`/DR`8 +MB<$WB/(90\ST0?)06%\P26T9!IJ_>;4[V-/$"@$^-R0N#M?KWHGR2=!:$/L1 +M8A&AFP+?RMM*87J+)&5J-XVY[Y3,W,`:8RZ)D'Y2#K)YZ+Z'A3Y)QZSF5/9I +MJK(*D(/5/=Q"53&$9`EJT6H<%'ES&4D.K^)\7&<26.NO/'OF.`].M(XQDR`U +M_L__RQ/;X72<,R<Y@4L4A/##A4"Y86"&OX;6!D(:;(J`Z[]L69[<RN5>05%& +M%*2#'OVY;?3:TUP#05'9$X=%/2&L_:1J6"VE"''-*&^?-YS.@M'FEBPJ7[V' +MHO(#A5';IC#;9!U@"G@^MRFU/QCQY+B#.&$GL_+8J,IC4"XPBG8P;LLR9W9X +M!ZQ51+W(VN4;FE"[_53MU')Z"9KB,/&.BIE+$NG(ZI^^N[WN'M_V;TZ/WUZ? +M]B\N3RYOX?^\LD$8IP%N?CX_ZUW\P"?\([40U*603B+5N)D#GBCH,Z-SHB,, +MLS=S/<A+-)P'J1"(\ZX\-W@5@1(JDD9FH$78![K&\2H5V5=%BM=`CV<DP$P\ +M([E7<%:JI+1F.G!U=$!,7ME)5Z?7YU1)^>+RIXO3ZVT]S3^43&X&*6UOWO8X +M9\L-\A?<LA`QQ0=%U==L`Q.N2UJ&?ER<+Q:EJ;>>3%"\7H>*YZ-1R?V-,DF, +M9;U,W[!!MW2@2P4:TYET>&S7R5P'K*`#T"\XW"X<RQ?K1G!TMB'/S(8D<#F^ +M43"'I6=!;@KCAGNLKI$4F@1N'H5ML&%I$TF[Q'>:9%$U7+O99#%(2%XA*YR\ +MZ)7DF\#X.I.(#3STV8I5C$>4>-=,IDI@V4BNG4U,H0'\WF%/E.$,D02A":"= +M#=29.*@!LPFQD\3E;VVKJF%P4T@WH6+T(!V7H*,)=">(.]K!'3`O".Y`<25" +MFS+WK3&H-F6%H\1<[]Z]V]Q*4G/QX\`+['A+3,G=_+C=7?O`',EOTP,I^EJ. +MH.:!H\T\>:V=%"BT#XJY-RCE>23/V=E\6Q*8<,G)9K$?@O:OD&=TW[*X!BG2 +M#A4D)WG%(2-C6;(;E0APB7BYDD=C*D>(31N1`Y4,*CD+.JB]TY[H4&AB=`+I +M'A5L''\H$^=O(-),<^+RB(^,/20^/^64%T'D23=J#18[^07[9GJ;N#%L3,G+ +M8T@YO7/GFUM:^BIULZ`(N4N._Z4KDB1K9AC2(MA()&>>\$TEH>P\LE03+48* +MT80O27C6V18]?-TQ%)+K8(!YJ6^&[H*N?S)/G*NK5J4G2>R*LUQ^9DS2O6R$ +MA`)[N9C-589]C-KK'*A0K-[.I4JJS@$#AQ(-O7K:'3:OP*;1/1P%6*D\F2KP +M1:X,GN!H2J@[Q?DF;E)_,1LX.71)>61'!VYW(D\D4=56XTCGNGC/67A/TSVR +MWWFJ:4\FX.4BIIPWW9<]>=5V-K70[@M+774K+IT55Y\-G"F>^/S*'8^<\0:: +M!;`,U?D\N@6-G=[HLGF@H*.6=%VH`T!<;B=5,Y5>-6FJ:W+V'>'31"UX<XMO +M_`)E`=4RWMM'.XF9M;I0EK>0\LH*47'"%&-MW(P5I^78;0)3=X)!3^Z81P?? +M10YQ@%=JGV9BB0,^(DF[?LQ'S82`@M/I7B5A%+/KU12$XKX`>5&12(2B)N,Z +M+NSU9"4+9[T9CYG8`72;`-TR(*I&=@$O4./>#"U"C>RT/=D]-(52SI/D*W9> +M>YZC=7.(!1U'S&3UYAONTHGEB+F(G(R[DCX:X71#/!TAQK\]%;+*V:NG'"(H +M<A)04!#R$'%HIK>!;NJ0C.H[QYG+<#WHC\4<A2CE&^03-[2?@?&/9R>GUUSJ +MS=OS\^YU[_1&>)>^+5IC*2^"")!YE@[,RFFU2N:H1>5@U"Y=V-629I-#-KJM +M+H@BG["4+2,'O6TJHZ5P6CY3"9TWXOF&+(=$\0>Z>Q&8#Y[8M-GRQGD-@B(F +M#U$DCP22$*?4/2+%I52XGV%L*H@`O)\+F4$JR]2&$,IM)^=X54LP^;S,S9OJ +M=F?VZ[71Y=+92I=][03AQ/8I'9F>AA-TO"%N%Q_IEVCBN#ITL_?DHYP<8AL8 +MI7+$?L]44EGIM"/;X4`-I^3&/*9'FA3D[&64`)'WKX78VV:/%Q9\9=]K(R\R +M,&$V@0ZE;V.6]#2ULT.C)T9=NPM(BU71-E>022?;*R^,A%<RU]7@P=2199XJ +M+H-S7"$A"D^+8`G-"/U?&,!+*6G0R:$<O:)F2;:MJ0,V*"9T3[>*=#9RIA@; +M1$;F)NTX4@B-?!D&H(>1MJ[DH#CP2PG:]B5M#-.BR[I%`@294%3<L9/L(R.K +M(D>,VA!':?"MI'.LAI,;Q--$;-)2HBKJ"^)K'*K'F?:U_4N@DD[L(S?%G%'^ +M+-/R>!W1;3,<OS3Q%Q]<_V"_PW?N04^#I/2=>$??X'FJ)0S]Q9WOP'_/#G.V +M7DYL/$Q,F68MJWVVTY[R4K@7Y]'-]6MPDJ='N485&2C:03/6_0(6.C+;!ZQH +MT@1XJ]`2F4KE-W&"XOSE5KI`>!HN(NNUXTZ$-TVY67QYZ:OP4&F9ZY*^NX]\ +MU^N`635P8!5CX!?2W=G=WX&_!7A[YL9M+=,+[BR%`P>FN;_#=\Y*CBQN$J&] +M=1;:P$6IWR[);D#L8^C7-[#4SD%U?:?59`;/]T9-T`R\BX,Y)P=%2ZUE^F;I +M&E?Z+0+BA$L2GPA'!+QK!O53S+CC<#0`#`/&FVEAZ%+(D)*)*J^Z\Z3]P?;N +MC$,$DO%14MIGDKA,QJ$1)0QR,;V0T:.Z)2+RFW/U#H4DQ%#1MLK^[YA9Q3AY +M`>8&$E1M#XU$-K)!CLO(18ZC5;/0.%*KJD\13]_(PL4Z4[=[W@0>1M!L6V^N +MVF_?;>-M./<?@%-L6YS-8J)<6Q18,#(C@O[L6_D^WQ]YX.!3EE%V_^,A?'FV +MNXOW/Q[N[SW;.]Q_:NWN[>_M/_UR_^/G^/-5<N0$Q#'?X1(+'4)&8>UU]N#_ +M(AUQ<D"ET]*0+=PL$+@F('J2M:`&T+^_`BD\?^"C*IO'6Z!U?PN6-?S]E/Y^ +M1G\_I[^_H;]9>K/-P$)Q?QNHP+^LM[%=+EP![.6@OT7&;8L8"["$<8PLP'J% +M1BO%ZB`5T'*Q)10@I5=:7M8<";07*HM9'B6@P'E<,70`Q`X&NB7AJY1K9TXN +MAAV*Z8BDCNC&6`=B;'0(GOV0^JWON/',>RH</LG*GLM9<-"ZPR3.(^K66W&H +M#H-_Z"IX58Y*:2\.CMDQF0EH;;&C?KSPL")H*/S4NWUS^?;6ZE[\;/W4O;[N +M7MS^O"W=3J32B]#<6$P4S_[P0MWR^Q6=2"-8,E]0)[!#C"R@\U;GI]?';X!B +M]V7OK'?[,S;Z5>_VXO3FQGIU>6UU`?^J>WW;.WY[UKVVKMY>@Q)V"HWC/_.[ +M"9XP`>%F?6<]V12_M[1L;@@BT_@+J.0Q#0A/$HA_Y@`X]\Y0`Q*/!J`]Z_>' +M(X`X/KGJWK[Y;OW)DW__<O.F_^/I]4WO\N(_.G\\V<0/_9M3:%OW]O)Z:]WZ +MZU^MX:@E+F'J1]/^2?>V*^HKWVWA^??VS`(>J4->75^^ONZ>YP#K4#?'U[VK +MVSR@WL7-;??LK/_FM(N&,$+(5UB)K1;=^(9Z/WT3$ZJOWO91M]MJ75Q>GW?/ +M^@(50(]:5]>GYO/ES:WQ0N"\O4ACI=X@GOF*M'VH`Q[QC.&->_#-L[9(0=L6 +M\?_?=G9;>$]M#;"!Z\M^O*%6XB">OCL]?7?;W]LRG_>W6K1!IB.D3A(_V638 +M%.;!EO5K:\UX=;C5NCV]N6U$(TW@*WSDM#[]/2#T:^LK[6CSCK$U07D5^H/I +MV.T,U];6"D"36P/$K4%EP!)DNE8-,RR#41M#9:5RAF\T7C6PEM$'^Z(/UC"C +MA,C1EU2RZ$N*R($D0KD>*"%-BD;V`Y"(%H*'=%HG/9BUQY?GYY<7\'P-J^O\ +M5(R=$G_]D3./MA*N)!;AC9@H4<C<13\'FO,6F+D!+F+]INH#&!]]^9%6S@YP +M,X;2+VN>#W,QD@C$X\NKGWL7KRVY$LEI!O!,$S4$A-V1T4V9UTE`8BX6?0[1 +M7"Q`A=[-080^Q!+3.(+-M:-I#HX78U:73I0I29S):8&=?WD,O.G\D/B!WA_V +MD"[P[,P.B=>+Q_[LD$83P(LZ/6D.\8\H'N$65Q]W!8!8)1;=[5D'T+/[=*-< +M+5AWT/9&M2$QM5!-6%!&QNY]36CTXM0"C87U6`\X6DS`.*P%*C:+Z@'_[V`0 +M!1B^G0N>:+?VL)5=[TK`I&8.\H'CRXM7O=<8E'%R>G5Z<7)Z<=P[E>P@F9-; +M1):!^\AHCL].NQ=]W*]"42*72VS'%&Q(3T,\<2(?O&`"-#4]''>&_,#$%"]; +MLSNQEC#\.:M"C%JB(DJ#D`Q(?C!K5\J!3)0?25$2B-3F]\@>^O;HMS[?;_6= +MQ;V.JNW\NW_2A7SKBA6N6[];N-VQ$?W>@?]--O[YPJ2"E<7PIB=/Z%SBK^0# +M2#CIUUO66!%],I?DUJ/?__O)$ZW@G=]_7__GBQ<"G[``7+QP(GO(Q1)LGP6$ +MI(LE,]4V'C3Z_;\[7P,U65'9T3/['G`.=^FE'PR@SH*:[`8LJ5Y7[/S]'YV_ +M0_U__?7KW_^Q\RO\^>L.]$R&M"!*^[/8.4^><#:/46`E/4*7PCI)"Z!K,CVC +M4T82:@%D&[+UHKI,RRB7VLUC8J5*MGY_L;YA[5B=KW_=V?E+A#_@OYT75K3] +MZR:^W=KY^W_O_./K)T^V?]W;WA#$8)W]],.6M?'R]'7OPOHW[RW]?;VS_@^H +M]_JZ]8=Z]^3)/K[3'M;A?T^>[,F)X(ZMS?_X#U\`RE9K8[JU)2`M($IIT@&= +MSFI*DB\LB6[MOC#+I;K\(0@`K\!Z0;]MXOQRQ6T06X(JO)-4X><_K#\V:%#T +M(9$=N?'DR5\N7I3_%>W\ZN]8,&NT`<C%4X#Z;!9L!.;F">B^)[WK+65QK9MO +M!WA3$[X%_F=\F-G^7@X\O#XH1'B:@Z"X4#Z69BRNM\YNSWHOKVE_4-I_?>T= +MLF\_P"8:;ZGA.C-'';VE*?L@K?7/:G&8.$S'1+NY?'M]#!]1`!@&A-*I0<)T +MAMBJ_&]]#$^U8\QFG`_#BLK,GKA#H),',,-]::>P$/&]NJ!P>+#?F>8607=" +M%Y=`GRL+P`U.V\\O09Y6+<*D,]AE7]FJ0J%93L7,/E$%2[?$5Q1<W6S*:T%' +M.RK*JU%]D1^C`HHRTN5/EXD3XPY\(0'*`)*/*O6^(E3QO;)'4/*7%)-\+B0@ +MXAN*`>:SD5:-`HCGA2VAK]7M*"L@'!12AT_Y*&#S%R.10\".;3SH&/3'59`Y +M%P[6P*!D(G7@*KHF@02=HD^AYW8XZG/@9#E]&4!:"H0Q.Y5]P$"5#5=@Z$6K +M`<K1:>6`M?H'NZ9J39GQ`NQY`?G=")[R2S3"D&%*C9`F(933#*,I@M>X".]C +MT`P!-^,;(<A[H9O@A/-F\(M%(_#[CS7!.?[D>?U.50$KS>"+!6T>^`"E>8F, +MR\,9VB7\-@\>$]LU0:!H_T88XO:.1CC>U&X$S[FDFF"$#0<CM#\T@H\;TK]O +M"%\V5_GZF7RM0GPK8LC\F1@?7GR$;J@*T(C,NG%^:7C98V$UW[LAYF7(QR0? +M?"&JYJ$O,RPTL'*)K@-6B"P-M(E,3V)LR^2U#E4FL%-PI1);@ZT0V0Q9KP/L +MT4BPV0IR"6!_\.S0\4M96A;EH5^C<3I"J9#/@%=*^`Q&N7C/@C>"+A?L6?`R +MJ9Z!+A7I&>@J>9Y!6"R:#FZ)?&987&#BT%A=P'(IGH$NX;H9V'IS44,H%:ZY +MT'W,?%H?I4JT9A#*Y60&?&Y7L4P-&`->ZT-3>%-]\/?/&X%/_$4C^#+IFP&N +M-\&*+!IV\O5E9D##`M:WE/,%E@91XD'2]]8K+5.U9US4)+G9G"NFJY!SMM*+ +MFZ3M7Z./D?SG]FRN')$>IPGHCX)X2W[DO7)QBHZB#JR:80=>4`29[9QBV!H0 +MV3[(`N?U@A=@-R1`Z&F]?/G]Z7$J2L-PLA+I*@]J,9#PHGI!B0.T$)L=E.6? +M-0]E!:#IHJP`%H[%*J@:Q4K78@48^Q8+@:1_,;\CV:]7B"QY1SYRXA@L),!N +MO7ST<%",1ZZWTJ^F[ZT"-,_Y5@.%65\-P#P%O!Q->M7*H:2:7@>JNDVFFEX# +M5JCIY9"ZC*F`S+K-&B&P2MT(1:G5C;!8M6Z&TAC#:UX(J=F-,$C5;H0AU>U& +M2.@_:X2P6#2#!PV])KRF?#?":#`;E<;>"%YZT1HAH1NM&0*J^HTPV)'6"$6J +M^XV0T)76"(%MA$8H8=-!06]:(X2X:0GW31%*9Z[PFE5\5[ZP0CCRA^6+9>D- +M*\1ECUCYY\0E5@>N0LY6>+HJ\"IE:-K751>P7(IFO5T5H)HCJS:DYLEJ@"/< +M!PTPR@5OL3.K/DJ%R,UW9]4'KQ"V^0ZM^N#E8K;0I54?0_FTZJ.4B<R,5ZLV +M9(5DS?-KU0>N.3/3GJUFX.S:JH]3*>P*G%OUX=&[51^:W%OUP=F_51^>'5SU +MX86'JSY"J4#,]7'5@"XT0+*>+`!A)XYRU6RE8L\2UP8!YG[<:G7/^S_VO21R +M\ST\])]L_KC%<6GTF/X(.">GK[IOSV[Q[-/+RYO>[<\Z_"X@M-L1"I<X52E, +M1T?DSGHO;R\OSS"V3E1A"W!B>_+=\3&_$Q"OSKJO99RT^:K=1L?"=Y3"]\GF +M\?'9B:!V+`#@I8Z=JLF)@E(_V]"I?]-K/!:5?MD].>$XY<S'/`\2?-I)`[:= +M,#MC<@$IKHY3NZ//JJ3$],".S;'5SSIA>#:=BU''C_3/^_P9&4ON]P.%;AYA +MTF$.$QHI(.,`EGXBB_$E4BKJD8_AJ#!$=2K'^$V[:LF!'2V$*^=X3\Z[H>GO +MW)?^3H(4%6L;&$\VL7]%VV75DR$Q$47M%8ZJK4Y:^VPNZ?VM5K8``DF]3N#^ +MS/6EZE"XLO3&X92B*T50B8]V])G33M[G=S=]3W5)0CC3RTRT>##HPE\#ELX0 +MU0&DFNS6!QU@?L_ZX$WJS/>SL$..581?EL0;?-Q?$A/TWV4QET7TEB[26QYQ +M9B^-&BR)>=^@MD+K(!6Q-M*$GCFG1WTL5EF:+`&!\;*_P)1[C?&.E\3[?DF\ +MLR7Q?ED2K\',$AB)]=P4L\'L$!BCQACCQAAL1#?%PLM5&B-YS3&6JEPSCJ&0 +M@N8ES1IC-%_LB^88BR5GJ#R\V12O";<4*`^-,9J4@7=3]GE3M382WH,43^FZ +M>-RCA_\OAQMBXDZ]X)8.7Z1;ZM]2&*EC388%TO%LJ=6CN9!2ZI/S^:#&:P^D +MQVN']S5%'M\F9@`]879E'`"PF3G^`=^*<P[X,UH,HEC\%C&3^%,+@LS+(&#E +M)@\P[(-#:1\DH.T41EIAQ6])#V?PS!'5/F=5/_VCW@-%%*A#<M&Y?XKPJ,=R +M\;@##3Q3]SZDB6(V64XJ[:V"^I/-%:I"+6OE:<9:D;9PF;$B80IME:>J[^4R +M5F2S)D@N&)'?K0N88WX4`V-D25U8VGX3+L.Z*$*[Q;>_+(.4,5/JH65LE)IH +M2V%EK).::$MBI;6,NGC!,FAI&5N,56B/%*-DU;EBV#++H!+KS5)8N59!)=;E +M4EBW2V&]70KKW5)8M6>=M%B:PN=;.)5XSCV=\FZ(-7%'?;J<H2E>UC2HQ/FM +M(?Q=4WC'F>.ZP\T#2J7=##W'VJG&:<"%"BV=2I3:LE'"4Q]@&MVFB,%H,6M: +M.TIIODQI_VH(WW2E-IT`F&YHL<1:R#?X*M'JBY1\$ZP8?DYW$OJUVT^A)WU, +MQXCQH76QHGCDUI:EG!V%SH;YF#6[-A[?%8;QW'51<LWH8O"L+5.BS.9\,N'/ +M3FCWC!1L^)5)>$%`7U)>O/^2\N)+R@OC^Y>4%^[[+RDOOJ2\^)+RHA+C2\J+ +MVA'[7U)>5,;J?TEY40/C2\J+LMC]+RDOOJ2\^)+R(A?C2\J+`H0O*2^^I+SX +MDO+B2\J+(FG9*.6%OEV?_!31'[F?C.J18Y3VX-.ET9<<(S8-@G]E1*#Z0BY+ +M,80\4GO9994/[8^CPPI0`5+X/6]9IB"JJR0&R)Z[?7&#=PWHH>?889\N\JT# +M7>"2S8',]ZQF`8O<=EE(<IUQY%9M:-HLJ`N,]['6`-:]?%6P-"_I,N5^_,$= +MUB&?1BE4,6NC%NF3!01F"R_&>WS8*2="8^HBX\7M_2D=EBFP+&L@YIEF!6C8 +MPJQV6`!,+)^9$S/S1H@L*YHC+HM1N\^%(5D#'(G77>O*YJP'B'=OR&VM:AQ- +M!#<<CXSP7@)S:92R(1G`2)2N4@[E+[!G,F"YJF8&:I*G%&6A\A2<#)17$VJ6 +M]>3D0.78,1FHF9U5C3-`(!OUW<G],DDI4"*^A92BHO*\"84(6%;!AE8&!XF# +M@CRBJWHJH1>+D9-K2V4@<VRH#$SY2''P7[Z_18/*W9E,?2_<EM/@[F/<E%/Z +M;S&DLM`7?AFS&B\^EG4!6P)*JO7)1BWG5.5;HPD<BTO;]<IUIVJ!7.SOR8&I +MD,TX)YLT-ME/@SD]*:.L+(8Z,'UUM3'>2(B<WO;*V&']S;H43M$V60H,29$# +MY-Z-\&[,&O#%SIY\V'S?30%L.<-+@R9*%G";4NU*QRSRX)1"]R-WXE>9`SI> +M#5;%X"7NF7S04EFE`^9M>A1"UEE$!@JZ9>QQJ7C-P`^*+,]"\/XO31$&C5I` +M&!_+-(E<E$D9;\W%J-`+"G!*M81<G%+!E\%89M"#49F^D0&/WH>'K*[E[FM6 +M859H7<5(RY0VK#W=JJPR'7:B2]HF.+5GV40%RC>`KU31=`PW"FKW#<(29^[S +MA<L-T.Z#$#3(NCP%('\+/->)&RSA!`?#(!LCA769;X(B[#FG3-5)889ALQ8! +M?*E7)`ON.Q\:%P'_GP7OF[3C(_PWCAH4E+?!70C9=$WE>_GS85%?K%_MO%WS +M(L@RIXP.66Z3IB"%M=*P0Y;@2_&@+D^*:W.OV*L-65NZQ74!:<.E:2_D[8OD +M0]:77BBRZE:CEDV"4S@.%_[0CJO7K`IKJ("K35`!%FV')_`LB,0QOF(P?9S* +M='V2A14=9(YZ&343LH[IF.SMU`*2IG)9)33H&LX2#;H@^B(7=NZ$LYJ5B)QA +MN26DPU:I&3HL'P*H!XP;#=7UK8RQ*$*H<#`:P(7A$@7P%4IM!I;;BIGLZV)5 +M6=TF<"/84BTS!5MJSANPU5:Y`5X855$`7RHX!&0M2]R`+14#!F2%(SH#6VE@ +M9#%R8R3*$,H-.0.^('"@`+HH_J(<O#\(@C);(1>G43=)I!IB-A>/U=FZ6%7J +M9A:X;^,][8O8J=IQS4$=>G94+C^+D?JN/RJWTW)PQV//GC3KC+X/9K8#\L". +M2S?/<C#_M0B$+M%HY,I#`@Q0C--I-IT:K(AX"=IU):>&D1\]5(*0'S]4@%"N +M]:9!F[6W`=-%>=B4-LX\*:3+M=SJL-`T[$>^#5ZGWX]@@I>-G*[L:SJEF9?E +MF7ED,/G)AQKE0SJT23\.:5P?4T0@&_/4F,3RB-E`J-HT\B*DC&0EJB>?U^M) +MW.4T#I/6P-$/8#;&S4N$6`>/PX*:HO%>Y5)8VOG)Y?#-S</E:$0YF:;J(R]? +M=[E[NQPV'[9LBBL#NIKB<4A54RP9E]$4+PGB:HQ)!RR;8H6#YBB./5H*R3Q- +MN1R%O(W;Y2EQZ.OR^'GG,I:B)C>7ET*6^_XK("_=C6:TP/(DA&:P%`$]#FHY +M`MGCGH]!AQT>CT%)>4,>@UA._IEE*3T6H9S\,<M2RJ2(69(0G6%Y#$+2#?,8 +MM'`#]C'H+!:/0B:=AJ4Q&<T_]!B$5E^XR@GU&&3DL=K'H(61)X]"9YY./+,D +M(;87'X.2]&T]!BW<[7P,.CD9"I>D%#[29,)MSL>@$S]2?>X?B<XR:U^$@"^' +MILX1-T5/Y3NMAR2/'C?%RTFAVLSV7\;RSIQB7H'`8ZC&YE'F5;"7T6_SCCZO +M0&-)#3=S"'I5`D59$I<B)0ZJKDYH*56Y^)#URI264Y+S#V6O3&4Y]3C_$/?* +M5)92C`L/?:],*#^#X#*4EM!F,X?'5R6PG"Z<=]A\91JKK>WTX?1'H9*3&7@9 +M4LLJG`6'W%<F@UMJ*Q.A0_$K4^'MKI7)\";8RF3$'OG*=);157,/XR]/I*E_ +M*GM`W\`TT\,_,_=FOC&3T*=))Y_,O9T47&$R^N?I^\>^23>&=N72Q683U5=A +MU/8.YF)3&_).SZ]&A8[,+T=B!=0R%E&!N7RKQ1O]X/[R5/0#_2M0J=C?JT&A +M?*>OFD#5/E(U!3UAP*I4LEF'ER!""0:6)U*]9U5-(Y.0X/%(51J02Y.LL@IK +M$LY/;+`BT6S"@T<D6.:,JDF.$R2L2"1[4/\Q"!KG]Q^!X&-36GENR,0,RY-) +M$C:L0*/<BU>7@)[@87E:18D?'H7B(TVH3**(QR.US)02B26:(QH))Y9&+S4K +M*[$G989%-7:9,5")[:V(G;XWHQEVB0^H$AL38RR-G$V8L32I="*-E0EI"3:6 +MIF4DWEB:BCKEOC2%$C]6)>YR,U-/[+$$=FD0705>92A9"7XJ04AS"D;BD"70 +M,:%(<[3"1"/-2=6+(2S&-Q*3+(N^3,]7[^K4P%U2=\]/?-*<3CHARK(4\%C< +M"KCY"516(5@W/J^"5E5,7`5Z)A'+\G2J-X3JT2C?QZE)8SD!7I7H936*5;LY +MC:AHB6%6H[>"*,TDDEF-Q%*Z9CKQS,H45F%Z^8EJ'H'.H*E7N)!,^G;0Y0D- +M'J6'9"*<1R*5OEAT>4I+VA_%"74>B=92BFMQ`IY'H(7G.1^!3"IASV-17-(* +MK4CP\T@$ARLOQV6]EL6)@AZ!ULJK,$DL]`ATEC99LXF(5J=A)"A:G9Q,7+0R +M)2VAT6/1HD1'CT4L7%4YR$N,M#+%,.?B["7I++6;4YQ@Z3%HJ<1+*Q/3$C*M +M1JLL=+DVA<?B=>61+?5HR(1/JU$IBY^N2V&9S:ITXJB5*:032JU.\+%(#5:5 +M:?'*4C%.WV3?G,+*VF.\*H%4XJO5B)7%+-6CL+IV:"306I+42KXM,^'6LD1D +M(JXE\5>N0"9Q5W,Z1D*OYNAF:J[E\)<=R'1BL%4IK.)RU1*)K8*<)!A;B<H* +MFT79A&0KT>!$92N1$`G,5J.QK#F3D_!L)2*<"&U9$K7/6=0EM.1&>7Y"M17I +M+.ET*$O`MB*U9;WJV81M*]-8RJK/)GA;D<;RWOC\A'`KTEE*,<LFD%N1QE+J +M5#;AW"/06-JQ59"@[C$(+>?HS$MHMR*5JK,9S<AP`KQ'HO4HPY9)F/=(]$0B +MO16I+6OV5R;>>Q22,B'?8Q*3B?H>A:9(X/<HM(S$?H]",9WP;T6BRQU)*$H0 +MN"*E1^`\\2/6955--I.`\!$(E9_)JDEH.:]$02+#%0D]@E*0)#Y\!$*IA(C+ +M4ESMP%-5`L7F%/,3*RHZK112^MA8P><LWLGIU>G%R>G%<>\T.7.FO^SO;;5. +M3E]UWY[=]GL7QV=O3PBPW>NT1LX<FTIH-V].S\[PB%H<0">$PY$;;NT,%JXW +MVK$7<8"WXNX(>#HU![^Q>5%_9C\,'"`A7]#7V7MX`W^UQZWCR_.KWMDI%7)\ +MC"5`;6[$OT:M\)W^NWO>/[ZZ>G76?7U#_0[XZI&_J@?QJW5VJQ=WUGMY>WEY +M)J!_['OQEM5NQ_;DN^-C?B<@]#+,5^TVADE^A\V&QJ6:0/"-6J$W@;!S6T&5 +MA2K*X7P/#_TGFS]N\8%%>DQ_!!Q9DQ]/KU]>WO1N?];A=P'A;\YP&ECKE@6T +MX<^Z]>1O+[@P.];HP<+4"X/'],?2P@"""FL='Y^=R&%OG?4N?GCD04&'!5$_ +M.RF:$*J3ST[4)_6S'4`'R,X6597]=7:2ZG!XD06HZ'2`274[E*)W^^O3"XTH +M/!F%XG/F<VF1"&*4B`7($F\NWUX?"R:A<1'/[HLO6^:'L?F->G(0C<CPT3#D +M*^)&YGN4GQE\?)F&33,U^:EUTKNY[>L5QW;F5KZ/H**4XD8P@50K=-2BU@@T +MK44IK+QFI2JK?V;LULSV]X#34M/@-S%=?(<?#G(^'."'ISD?GK8NKB]?O8+7 +M?AB,QZWS[L6-A.GC`_1E][9+K^9W$W').;[::KTY[9Z<7C.XZP^]Q<CIBW=; +MK=-;6"OPR8$5&K6.Q=.0GK!]<8SINKP@C.#UKZW0&7WWPIJ$/OSM3?#O@;>` +MOZ-X]!V-YBM@SEP4C2VPZ_/+BRWYJ'7>[>F[WL6K2_H-$O.Z*[ILY`(MT0%7 +MW>,?NJ]/M]JP;*"V/:#40OFEPXC?O$1"!_>OM>^_MBSKWW3LV_J+U1Y9ZPG" +M.GVTK-]_!X@Q&#SFQW;\,'>L$:*A']AJ[^_N6FWGWAE:PRGP)VOQ'Q^L?_]A +M;;S8$(3HSU__:B'P.#2HO;#^@/_S=.]>'[_I_2@Z24)T4`N=?&R]_J5WU3^] +M^!$E>'L`U:;^6/BN#PJOYW$28`]>D2P&**IX1]1V#'7%+$Z$A$>+_;H(W>.S +MR^/N&=;IWZ0J_&'M3(.9LS-<.#OS,,##EYHBE-8<9BYH4_X$ZAPN?,L>>L'0 +M]MI[G;T]8(2WW>O'H0M]U,KCCT!]MT6%(`!WKY0R?3%QX./>_A&,X1&`8M_; +M4:O[]O;R^/+BU2.U6KPFLKR^'H\PGS`ETN?='TX?C_#,OG/$0/V$`MRW/]RU +M7MZ<'%_U+F7?]6]NKWL7K^'K06>W`WUH(P0,:PD`J3>3X1!^@+9Z?GERRCHD +M279X?]!B$8X3'>ISN=\"S8E1K/9I2ZI1I,GN+*)PAZ;4CN!?N2^QW?<S;S_W +M8^OXY]=7W=LW_9^0V8'X1*69R)^\Z<)TP7G0>]U_`Z^O3GHX<AVH;=0Z.3O# +M:825][PX"+S6R<W/YV]O>_BJ=?+V_.IE#R=7Z_3XS67_6/W"=VV??]_2V]?7 +MI]A`JMK`]7<FH3/'IIZ^.P7^AR"O\D%>M?+>MWH7-[?=LS/]O>`25GLHO_:E +M5/BW>/&'U9Y9SPX/%<#5]>7KZ^ZY`:,^WAQ?]ZYN"[[!F%_IZ)NB^'XT!>4+ +MAC%JD=:EJN>-6D(YP];"`I5K54ZCB[?G+VG5'.SN[L(TRH/)3C4`ZL'P_2B+ +MXG&'R8#_N7@.MA,%5OLG;[L=HMN-?IJ02`-,,%DOFA<>;ES`/X./,*.\CY;5 +M/C.1X"U/-_B8\XU*AG]G@.GY3AQ[3DLPI:Q%1NN4A#T@TS0[ZUU=4G6@R9A5 +MWJ?^O-4:6USF=;IUMUK[D'^@Y'T<'H+\P_7'`6HDO5>G(-]$`X]:YS_`0NKC +MQ$U1$/.D'4UIFHQ:%^?Z-/%!?KZ$=Z<G/5H64'%<9_`S&/PV6H"!RD8VOFA= +MBN+XQ[-#_"G4!B,7OWS9?_D65]/E]:WQN0T2<[B(HK]-@F#B.9,P6,RC#IB% +M"N^B>UY`4<W(Y%LR.240<,MB"F^OS[1Z:R)+(P.LZ^;TJGO=O;V\INZ].NO> +MOKJ\/M=89>NZ>P$C#;]"V\>!OSDU%F#DC.#5;5^(D!:-/@+0QVF+EC0\XQ'R +M>2NG&N_.S_8%JS17&Q+`Q=!FS;-E#R(UIQ&R9'X1+'LDZD#JJZ4N?$WJP_XP +M[DL]@I^4&.-'C=^CNBFET7>6E#)D$H"LQA/XHP"M[@Z](R^S1`,]AA8?J49_ +M@#H9@!X&^N(3^`#U7">@A9\"NP>@%O2S4'S_C:IH?QXZ8_?^#^S_%O4*UN7@ +MFV?MA7_G!Q_\MCC&^6UGE[_W;<^U40\4C\/Y0J"(%P$IB6FL]XX_"K!<0;>E +M#4&GA<?U9+7P=Q@$J-7^T=(>Z*.L+KJXG=8H&.9A[<#[G2?_3JT<(/;>5>"$ +M^4=+ZP.=?FL:1'%)3^#GI"/H2>L'>DYW`[W,],(TGGGI.HFID&ZRG"'(+'-; +M35PT$:'+LN>$N:(O,7>R(&>`__!=T7=\;M'2=G(KRY\8`F^\R#3W/2PAME^S +MR/"^-;N#GWWV39H"L$I8!-#C>A<3%Y*].Q^-T^.AID?"KEKR3%T,?#)"9S4E +M]4/.MWT/_VO-HS25J&CEX8<6S>=1;D>@#%'\I].*'B)L5AK*B8>M&$/)M'FI +MNB69X:T4]^NT#/;6409"__+J%G@W"@5HGN-.?"M:X&QHBT0ZTN+K=\\313LE +MJ%NMKUI?63]-[=B*`_YFP9!:8DC@*\R4/BD7U]UK=E`G$[/CV2T_0-A"D/Z8 +MH*0/PTJYKI1O(W$WI5Z1+R=Q@;Q\VSO3_4E93WX4=Z9H1QK/2$5_T;H%/>8& +MS?#>]27H(1>WZ9IE`+0J%GVCNF8_0@]WO0_V0Z1U,/DK!@&HJDR37@H28+A: +M>#C5`J&Q078^FO@;Y%LX?G-Z_(.0SV^O3_MJ9-N.;P\\IRW(Z<](L\5NFGYB +MDOU$9L1/O(^C?K0IG,V-'Z#2MU/'PN1'%F8>L]S(@HD^<WQ8`%:P@-H_@+4W +MMA=>#-/%BJ;N?(Y*HZ8BA0X(RLB).D"L%R.%A9_0,/$Q5O2N`[;9CWH=*=4. +M_HM'HN'?A;\`#0=^P'(<!1_@A]!5V[#>XP`]'A&\'-I1W/[7`MB`<BG3^!J= +MP+L`LCCRV6N*UI/-M/:U92X6J1E@W:&C<)Q"=[#`@%N`2_Q=%KJHUH[/08L^ +M`YBH$]_':VMK\"Y9BA/'[T13[>4`=."V3.YC?"&?#[W2WJ&*KK\0F/P*UCG6 +M;(V?@-N)7\Z]/9M[3L1/QN37O'69;^0#S0"(E:&_7\LX5O.P:,WDHB5>7-UY +MR(-P2O,A7*##"R:N1;VRF,,W6B1GI]T+Z:;,W>Y#'L#M3G$*T3<9?L'%GB5S +MF]TUT;85!8MPZ&Q;P-\["-1*.6!-)B4YYS3GI4@(,M5W"!/7=RX=2@*3OAM. +M^P9RQ7V/2?NF!3#ZG6/#O`)DXL&B0L3WZH+"X<%^?K-%9L+"$NAS90&@N+FP +M,DHZMJ@`T>UE7[5+RTJII!*+5,"2AE51<'6SM?O,RLNK47V95*8<BN\ARYTN +M,DED$0%.EYB+*A-R%:&*[Y4]DF1ES"TF^5Q(P+-CE(;%`//92*M&`<3SPI;0 +MU^IVE!40#@JIPZ=\%+R^K!`I<TU9.61>NI-J#$[H6P.NHFO*+R(KI2^3JY0" +MR?P\-8`J&VYFW:D&+;@JU`"LU3]ZDKM2:CFW@#6!S[_>O`RC\([S,J1)[C7D +MI1A-$?)O.B_%R+N6O`R!+A%H@E!TF7D9#F8S:`*_6#0"S[D`/1]<"V)O@E!_ +M`JH(]R;@\G:J)CB8AJ81?-X=[64(^;<0EV$4W8Q>AH-'K9O`Y]\[7H81-AP, +M/*/<!#[OCNDR^+R+ILO@R^:JR-N:JU6(;T4,665LG:E#F16@\K*FW-+H1J:B +M:LJ;EW(Q.5=A$6KJ&J4:8.4270>L$%D5-RB5EU`EK],W(M6$*Y78U;=[FY#U +M.D"[[ZB<7.Z]1O51Q!TG]1%*A7SQ?42U,<K%>_[]0K6ARP5[_GU!M:%+17KA +M_3^U$=1IM-H8)?(Y<V]/7<!R*9YW#T]MV'IS,7VO3B-H/B]6&Z5*M!;<AU,; +M'$^0U`:F^VUJ0_.IB=K@?#:B-K@XZE8;ODSZYMXS4PU<9-&(>$B9T]:P@+-W +MRJ2Q-0A`Y;A/>PZ\?83!]ZVOK+8?M!?^R!F[OC.R9G9X%UDQ>H(U=_<H<")_ +M(T:W]X,5^%;T,!L$7@38$D_XBH&RYPYM4@,LZW;J1N@;Q[TT//3TP![-A\D' +MU^^D?(%)<(U9(>DK;N,6(T92YX?(;:7)]5YV3SAL.HD[H?:>V_[<GC@1>[IY +M,TC#U?9SRGQJ!\*=6NA)0BVC$@A]:NZ8J96ZRNQX&E5#T9'_*BCRE576C.X/ +M*8$BETO%=\[*4`6D3_WBNI->6$**M;\J@,H:95=CMDK$I)^N98DD/[F(PL_H +MB7)"'Y/R9LDG/]O,/B(NS(1BOIQ7"V1C3]&K;W5'(U+(;4]?RQQ+6['-H]4U +MO=^3UVNN/PH^`.<JZE7Q?;I6R)L*::2VEWY-[=DD^Z?88A4]WE*_9*BU1_$$ +M6SLY(#+.D'>8U&M]/.=#)']#&R*1Y3O.B+?Y<*>1-CR%\A.U:%N'KN+2MC>@ +MULG[G>0G<^O\3V)G!HK5FJN715]3W\PRB\Y2K,F-L6QEM_)F%.X6T5U?PZ*O +M62=?/AS^Q5M115]S[_<:U@.GV[A*2DZN[!I6U8`4F4J@I'K%<*+[]2NWRIHC +MP/6[M>J`R[VL&C61FU(U0-6>1PU8_0JL&C76[KJJ#4U"J0:TMD]2#9RYIFH) +MG,1,7Q95V>3U".3?+U43.7N/U!*(Y-ZJA\;W0M7MUNR%/36+R=[+TP!1831% +MB>KCB"N::L`G=S'5`1;.NQIK-'N]4G47%5VCU`BSX;!DKD6JT0TYAE0ACKCG +MJ)3!&U<:E76N?GE1#3BZIJ@.'%F-U7!>;;B970\NJ$4/+PZJ`9:](JAD+`ON +M`JJ/H5WZ4SSZ>9?[5!>AKAZHT6CT4U5#50V<?@=/*1S'@)1-YE0,1!EDZ@J= +M,ECCLIQ20+P6I[2"A3?@E`Q,*B*EA+IQJ4TU8`5GT+SM=:"$7"^&S+]]IJ3A +MZ6MFRH@GAG@MJ/RK8XK74DG,1#F.BE:HJE7FTI>JCC'=[O6`O4;`51RRZF:6 +MBJY)^]/K%92]:J5>,3I?*X?7W>65K4^\Y35!:2.Z/JRQM&KAJ"M.FB`,W%+E +MH^#2DJ88@V:MD->0-,69?&R,(K2+ACBD:33"N6]6M1KV4N[-'TW*2%WQT:"D +MY"J/99"6*6U8?]))BZ\6L'G91KU*R4LUFA0AE=/:"$K)JX7"]V$T`#8NOJC7 +M;/V"B_HE:3=9U"Y&O[&B*5)8:E)674%1NS1QU43]HOA.B4;P\O*()I52ET34 +M1M(N@ZB'0Y%(->68<;U#S<:+'=EZP/+"AIK@80-YS0Z@>K!5)F_%O0KU.C[% +MJNKA#,HMM?25"+5AO0:P%=9BZD*#NJ"IJPOJ]>%]@X%JH@<:UPY4C4U-H\:\ +M2:"*J(I.JZ1KT*P)JB*;BA&,?/]EE,W<^E60U9V5SM9?'[:6,:IMK)91SDNU +M7XMJ+1]--GE^/6#>,J]9;Y$/OQ[E:@4E)\-]/6A.95]=Z6P075T,Z?.L!9U$ +MQ-5$F%38VF6)Y8O96$X"^;IE>,V`RU75;.[WNL`U#/[\;.YU$2H$339!>S7A +M6F9^-N=Z7<):<O5&*!P5UP2CPCK,RXM>%UP%W36#YTSGE1,^+Z-Y0Z0:2D)9 +MAO*:6)6*:V7*\28%J=3BRR#)%.+#!J@B4WBCXHR,X(TPTYF_Z]541C74`M92 +M>=<=M"H]OR`[=P/RM>5J)M]V$PP1/%H3HTII+LB579=\E9Y=D/ZZ`?ETGNNJ +MF9@*]"D'+DY<75Q,?H+J82L3[F2DVC/S0R>@F4^LZF+8D_IDY##3*V2U3[1$ +M;C>WW=O><6X*A735SD[R`E`UJ+Q$'5I1^+E/1_V_^^=P9":_?D$YJ^8?1O_, +M5/?L^I?>U7<7EYQ((U.KDF@^ZGZ9*Z!H9&1L%*Z/Q:(T0$H4FXTYB._CSB^$ +M782K[[WW]SIHI5-AM>#W:\.3X-_KD$92!YX\CWM)VZO`<1H#^*1>;0A\OS:X +M)ZA[#<#W&X#/[$;4`;PA]8,&X,%<]#O\K(^RWQSEH!'*S!ZVN5Z_U(;?;P"? +M#9Y(<"M0TS$4<M+61$L"*:#C<<%3H<V1]VLCZ^$8VB*KP+K_B+#W'RN841)Q +M`>`H4.OT/J^8)M`'C:`/&T$_;03]K!'T\\[]/"J'QA`.Z#O<W?BEHK,YVL,> +MU`'S/DXKP/*C(ZJF1XCYMG`3YSW8#X"H=N`I_+V#^_![G9"(Y(G!NC3V'X'& +MP2/0.'P$&D\?@<:SIC0PPY6@8`Q*[8%-$]A?E<!!)8%,D`GE/P\_ED_(3+0) +M"9HF6.A+TJ537:1T^(E&HX[O'CU!_<'P-^$6?%ZGQBE,S#&T%.+(`:LZ=I;" +M125C;VG,I1JZOWP?[7,BIJ4J+'!7*9>\FHS>#-L<H6:X-$*JR<O@[B^-N[]" +MN?M+E+O4O%AJW2PY%Y9=:B/'PT#$I19;@MN\OKQ'+`";#D>RP=RXW.5::D[7 +MIGC+]=!R6)C"JS$2'PAVAWS>O?Y@@"2J,J;3<7][B6I9%V6_.<I!<Q2EI`[G +MWQZH(FMAZW&`TAE1&U$K]YMGSQ2!YOC.8OC;?`7\N\#])EP!?Q&/O^FO5`.B +M$"Z:4TC%^N%_C=%5[%X#;".^3@R@,O&;$^`17($`#V%S`M)5T-\[D*;9$KC/ +M5\'ETYB[NX)&L05236-O=1I[CU"/O=W^#*S=L>N,FA!#$UTSTVNB`)-<`HDC +M!#7,9HB4(<4)M?HVQ*<8R&61PV!X%[JCB=.<@A$?VA@[I^#FN!@ON7S)N$.^ +M"KH*I)0TZI*0(;+-6RYVFYLAZA&60C`+EU-=;#[ONJL\5<WP]I;$VU\2[Z`Q +MGC=-VM8`Z=DR2,^;(WUPX^EOF$"]2;LXU(#_KEV:W)+GE-$)<F/<_02Y,>Y! +M,UQT585--&CT?H&F:8</=(!,(=?%E;NX?;S?KYZG+`?9QW=>4W1FNMY'+-T# +M3A0M18#=?N3JV]W=E?[&%4CLKT[B8'42APU)^($3C!L//^6'IA'0]G.;%1R- +M[SO.?8-U24B+`0UYXPHO?)="Y)KBR70TS?`^=&A1-5"B%$YMC)SX^`9:\ZK: +M?BI`>`F+)1UBW-QD25%8HA7H?J_<'RN*7Q>-%OA+8*,2LBPV-W99;&EAKX0? +M+I:OOC30&^(#]B2>XNW=CC]JBBR#J^6`U\5;W-><(Q2"#^:;Y\88DX?LP[:K +MB\I#&RR'-EP.;;0<6@VU**\SFF#4<;WE=4$3C%$YA@$<.<Z=2JA<,;@EB.7# +M6X)8.,"9VW=RH:Y/NR?GI^*JE^-@-@M\"\4BY6-,@*UQ&/A@THXB:Q/]6MMX +MV]26F65LG+JYQ2@-ONXX84XTI/PPS?O@V6/]:HH\"+R')20#)Q-PF/X^;66K +M6RM,4&1;$]=,R<MO1L$PTJ[`,>]9!WIXRPZ_[`SUAZGVD+IW`S\DE\_0$]0] +MIL!()Q:OL#7B)R@_D<AGBX\B13;^E#FOC;2>^UNREB>G5Z<7)Z<7QSG7FV5O +M,OM*8'ET%YP[I'L6,Z_:_$M!#X<9:.U53O"DA)+QD>6U2H5/"MSEPCX-VLF= +M9[*Z6[EAG:JVR?59J4Y1,.G82FTV[-&DU6:$D1(QY_U0OL_F/Z0)D\H)VU+C +MH>4O;65?Z552*#)WH8:BO>(W+6UM4"1ILA:(=Z7R#M*[_,2"ZEHJ+:.@\1[_ +M$CD",^_[NP(C\R$Y5Y?SD?91"[ZQ+JT.)^1!<*H2TIU_J0$C#MQ60&'`2`VH +M.D!>+5)>/:`D2U095%"#UGU1@4+)DH=T<B"FCC<O&C!.[]4_[H-P%'E_"H'> +MU`$ZJP-T60?HM@[0VSI`[^H`V>6?!Q6?]7.!A5#./66)+2<U<4?]B9[G*!]* +M'LHK!OFM_/-=Q6?'F>.L<D(1DE96&Z^Z-FHQE$`$%33\BL]4VWAJ^Z65]0.\ +M.[R<5."-ZI#Z5SF5BBD7E7]>P$185$X$_>!B,50A^Q#?BS[/[1BS*Q?5E&X? +MH8TCF7PT!RB*1R*;7^['D,)L9O/`=_RX8)H)LQ,3:A44DN1@S/VL5(&6(6DU +MW0=0EE9_<G`3H9W[%>]>S9R6D55FL9]WL:A>]QQ-(_W>4#&*;J75\/.^O;PY +MN>U>:\=F5'VU@S.,_V3S]-TI*&Y;`JGNL1O9;J,9>0H@C:>XJ[=(6B;.JW(0 +M5"QX$[@8AN-0*V`^5I?EU:!#QS>L*IB978-04`ESGU^?(M8ON[00HPQ$LA!Q +M@H2=304@!]4@A\4@)C/*K9%I`:BLX/)*Y6)#E4)3$L6<;GY-[$Y^Y`M'DM\T +M2=6C;K@:-N;!EBJ@N9%):"DK,_U.-S/I6\K.3+\K,#0)+&MI"MO2K&O&TB3D +M1S,UC1H7VIJBPH:Q:?1-`I7F-C1JXJ,P.).!-.S-[.NA>IVU-QDZU^`TKC#' +MD2FX7R,'U*QM0BTE(M+OY*7?^A+0[-'D9N7Z!JFY+M:,U[0`S=3WR7O\*TEF +M;[[7#=74EY2EFOIJ5"3[6=I7U-!?:D%)<[0"3-JC56"UH+QZQ+R:4(E-6@X7 +MU`&[+RHTSRQ-@4QX%=/)J2(8(5]V*[Z_3%EX^5!I*S<?ZOM:4&D[-Q_JEUI0 +M=L7WC'&9#U;8T>+[J.+[N.*[:7+FPR2^AD(0K^I[C6(,8[(()*BB,JOX7C4K +M%U7?%W6&S;!<"J$T`RX?X*'B>S$^WC+15YD@\D#F=A3%TS!83*;]41"/@KB@ +M23I@Z&#+'&%R)<+DS[*Y2,'+&EVJ!856EU'[(OTG$;I"%\U*WO0'4^+*IR+[ +MK/`CV%K'5[W+:@L-*1@F&J+5M=%4-YG-R=6;:#Z(Y`>%\H/CRF6401D,6VI5 +M4.+,8!54'2"O%BFO'A!9;-5@00VH^X(2=4$*RV[<P43+]2"'X;`F)$GR>J"< +M(X8MKPK8OA]$#S-1X?KP7.WZ\*+R]1%*FI!(RWERNJ10P%3"Q+5@(F"ZBSB_ +M_R70^R*HM-$+5L01+/27;WMGMTJ#M]@J`6L$N.!Y]X=3-*NZYWW\R9P0+^AJ +MV[-6JW/S]M6KWKO3FR/MIP6F;\<+K`[^?_!;RYZUV]"?H1--CUIK?SMJ/=F4 +MG!BK0\?%7/_(LG+>VS-+F,A<J47H]$?./-H"0KC+#K_QIK4G__4"+'4<(LL: +MVI%C;>0B;2`L`5G6UT^>P+NOM^2S93G#:6!M6,3Z1$6LO_X5V_[V]I+[H8V7 +MQSGNQ-]XD>")HD9;-?`0:PT^.O=N;.UJ1.C%W@OQQHGL(?T<!;Y#/_3*:7RY +MN"#9A5Q3O8XI="JPG$:K<W5]>MR[?`N#J][)'T=YXX9CDA:O/*O0WEY$,'QB +MG/XK&92O#9!D:$3;GVS>O#D].]NR.B:M9"R*(&2W9DAF!25W:#X9Z\G?Q&## +MS"%_&)C>#P-G*ZG!(Q'D"M,L:+5*._+(2NDV<L;#>TY61'Z;MS>&1VD+9T1! +MG7"Q#J?.\$Z6G"%]5+@F2Y<"5F<+:':/SRZ/NV?]\\,M1<D>>L'0]OJSPVI2 +MC+Z5_.QWSX6&ED_LJ-62+.W(HH27[>D>S$!WS+<,_L5JCV$H7N"%C6(JAC-\ +M)V%?R$62SPT-,,>#:7WTPAJ[K9;\H"\169,Z2\2L!3#R9K-+\?'<THM&T6JM +M;9:P"Q[+-Z?=D]/K+1BG=!WC8#&<0F^V6GCU)5ZXY[>GHQ`X?YM!9142G-(; +M(H_*>RDU_4M)0:,;]R$T1+C;VD"+7)G7W>L>BCFZ![*OO4*A]&3S`FP&F).] +M"UAW0)$OHK3:'ZUU=5WFNO7[[SB;?CCI7?>OMO#+"2C?\+25P``QU)R_V\B6 +M`_R&B?IIHH3Q@L/'HG@??J*49!GY!%\E<E+.?IS[3^;ZY+<L1EYGE'W\OBXE +MDYK>IGQ*&LDX5)M_"QQDMNOH">;;A<4*$D]B$:FOXKG=QDN5OA.=#Y]EAR8_ +M@;-=]Z[ZB+!ER;INY/3EQKI:P9^C"KG#237XH]5:^`7S29\\;R^2Z;/2+"@< +M?5[AO.=*BV#ED5(-$\PS;R!VGCP9KS88Z5+R^AI+65?3$Y@_,:%,=[?-A6GT +M+74CEY"[S$O&I+#+H6K?K?^3NA@6E/6[%>%%W*`#1;_O_/V_=_X!&NGOOV_\ +M4W8/U0Z6$Z"M6W_Y#G_.J5I(I_-"'S"NZ*\`\6_X^,=.%/11`M)]?;^N2X*R +MPW*`LKWE!]C/Q1W&WXO[+.>[UFTY7__O[SDM/%@H=6Y(,FZ+U[9B]UIP+)A# +MUG]:Q9@F45#A<*+7)I^@Y!540$TO4CJV,-6=%QR55#1UAKH1==(V^WQ`\!.6 +M(K:`/F$)?`7PIRN`KR3\Q/0YTPW=9_^I2S*O&OS4I8D<QY^\F,_1<_+.R4]= +MSCW>6OD)2Y%787^Z$F9T8_6GHR^OQ?UT)23W;G_",N:ST?-/2#\<?$KB>*CC +MTY+G>T%=/P[P'M-/75;>Q9]89H;R)RB7<J1\EA9B^G*`\T=V.)+WRWR&5LJ- +ME$_<1'GG[6<I1DZ0SU$0Q2%_CL)$*OQ/7)1^M?FG+DJ<.Q1)1,&(_1SS/54J +MITS\_.6J^XP^?]$<KO(GE/OG%.O]2<VE.)O/7RQ>8OTG%"NOE?K\)6,BO,]? +MZF+Q)Q1Z__&S%IJDWOP3BOW<XD"E"OW\A0[0R3#ZO*M6913],TJER)[/7BS? +M6/3YRY4WLWW^DO&6X,]?*I]R_OSEAG_*XL7<2I^_U/A/:>O]GU+JIY<_?'O4 +M)[1WQ/54$9W$&G_"@BAMQZ<C_]X-XX7]*4O@9".?F#X[7#[M+HY^_^\G]B$9 +MMP=_;B>2=EG?)W7OZ.5\6O].JJ1/[.#)7G;XJ<NR1^HF\<]7E'96YW/,1[W@ +MA[X:PL]9[&=P+&4*_4Q>I4RYG\.EE"WT3RCS<SB3LH5^>D]2ILS/X$;*E/EY +M?$B98M5IM,]<KO#F?,K24!U@+?HS%O4Y/$:9,NU/+\S^?_;>_5ERX[CS_=G\ +M*R9T)Y:D0Z0>ER''6LL(2T/:%'<D*FS2R\NUM]7G=)\S/8/3:*+1G)Y9^7^_ +MC7<54(7*%X"J@L)RD#R-3%1E97[RB[>RMSE[BK+;&4Z<&/=9/:T\\X[G.6TR +MV.T<9R\&.RT^7SKS+HL/K\^]S^KAL9EW6GUF?>:=/AXO"^QU^O,S@UW.B?KI +MKDO7'?DVI^F/UI6["N]>/1QFN;>D>0/+A"UR^CUT9SFFVYF:")/MY=-D6S\N +MT\PMV6Z^^?W77[[XMKS37_]!>U#M6?$DV._^N/GWS8L7+[_XN+_MRS_\Z7]^ +M_.R3K+A'[EG[``!\7\7KC;[XHG[:X-_4,1<O0.[-R'J?]6W;P0W6!ON!=^S] +MW)J598_NU:A>[:S\URT0GQ2OD=;7W3`!?>E9^U/?+3W$J>2^A\GW,)(3#X`4 +MK)(.Z[.?:LUC0'>'XY__]9M_^=??_;%\IJSX8&'SW^X'RFY;[UP/E#7;*,]? +M:#O1GR-2/8X_1U0]05$\D%$]'U8\!/'LK\76Q>,9'YY_T;YBXOGS7_SBP^JG +MMZ\.R?Y9L?`W?Z=?E8[T)]&*'2O_V3Q\63Z>UN[RMCOMWX=/I74C*1X4.?WV +M_/-/__X7/__Y;X^_??5A_>S(IW__UT__^F'E_EF]V;7=L#?^WS[_*,^VQW,A +M`SXN?GS>_=Y,KISWGWY;_-_YY_]Q_/FSGS_6O]P2Z'_=<N;#WW_Y+W_XT[/_ +M^ZQ\V/=__^S3G_WGL\^?%<^9%,G;_/>OGOU7-:C_^VSW^?/G_^]OBPA]5&ZQ +M^\_B@99??7S[J;RT\NQGNY_]_-FNMM]IUN4C?A\]?_[K9Y]_?HOD9Q_7>RVW +M:O_U9\7S7L]_U3[!7(:R]?YP\WX;P;.?_:+8ZK.?5YO^5[.+6Y$4D[DEQT>[ +M(CM*KQ^KQKN?=[OZKV$.Y.].^V+LU4;=$S_=XXG-<SR?/_NT?D;Q]I^?UTM> +M_.LOR@W:M2]LE8<12[_JPXC*0V[-,WQU)11O4_F8]E3:X!'!QF?Q4&`Y!/UQ +MN+K(RI&WS\,]FWM()DK4T;[%JWPCP?/BS0KUZ,HUK\I<?8Q1Y9?S&48\>(J1 +M?OZ74?YH['G6/ASVZE:$_\==RRT`*@0,*OLORO.MQ^;YUBY"O^Q>S_"S9Q\5 +M+P`PK?2'Q4/&Y6-D/^O"7S\4>C,Q\KHU:2R:9_-Z$7?'=FS([:"JN/Y'\T1W +M]8=!(B@+5H>H[[<<#G3!C)WB+_#Q-2$I'R$S!:5ZMFQU82E?^3(N*\L7/E8: +MTK1UXP*F4?6-=;<VE::^J_*3YNF\YQ\5&NHVY7\TCJJL%XS;X@3B!#[;8R6^ +M[_[[N/Y1>3VIHB=-+X8MI&G]DHB^E[YF;5^"6FK7T3V4+S;K=&KW+C5'#G0; +MUNMOM]2=PE+,9&+:D2W.RD;JB\L^Z?ZN+F93U.;Q#WZ%)$ZU.^%$+U_K!*C- +M\H5M2EF:[#2/B+K7+0Q[<<]`"U'Y9MA^?$P#;H-$VT^Y@K^<;4_5&VI[.6;? +M(W=WAD2;=H>]E^@NL]_B%8'+[+EX[>!">UYJQ\EB4TZ6V_'3=K%=IPOM^3IC +MM-771<^V4^T%U+/MM7VE]=Q[;%Z2/?=^7RRTWZ\7VN_+A?;[PT+[G9&,@Q>B +MS[WG&>G4OK5][CT^S+['ZK[*N?=:OJM^[ITF\^]QD>#.JYC4=_[/O=.GV?<X +MOUBYS+_'RT*$;S[',/=^YU3;[2<CYM[CG'-4/FLQVTX-'\I89-_-MS=$=Z[N +MTGC>NAR&X=1R^??Q,]BZ4_.M%\`=]4]D;[/^3/JGF+=9<T9YN&UM#SQ9K6ZK +M^;2>GFZ_(?U)_2EI9<D,PRE/04,]&LX%LEVJ'U<7]%N^S$O07_69=T&'Y1.G +M@OZJ!T`%'?:^><[UW/NBYS]VGVK7ZZ[XB[VT51>&:U.%L5+;9N_V"U/*YT*G +MO9[3?C[27?[%9DKEFZQ4=W"NZ`;#73C'KD:K?ZW%-M0F3RC[*"/[RUGV,KC& +M,MF>BON99]E1^1:/^BF-?D+;]LG;H?*Q^<%EG.EW:;B",_U.#1=O9MCI`OLT +M7+*98:>+['-XVF&.O0ZNT4R_T^$!XS3['+DT,\T.^^?E)F/L^/6):297[_.K +M!?9IN2XQZ3Z_66"?WRZPS^\6V.?W"^QS)K@VUWGFW9OMJM*D>]U?[Y/+S/M\ +M/.PVC^63W;/NU70A8M(]OIYU;V_FW=M^?RJ:<O$87W&;^*P[-UY3FG:/LPF[ +MD6M)D^YP<,EAVKV5F9._VLZ\VW1W>9HWKFFR6V*F/\ZZMWE5P+RPN=RZU67V +M;F6[`#GI3N<ZIK-=CIMF;Z=MGN^SXTQ94SZ&N$G2XV/Q>/@\^SSG._V)$^MN +MN,>LU;?[BGL6T^/^F,\4T_.[I_*K3;=MY]FAX2K\9"&U7#)A[$O9A>D*2KG7 +MX86.\L^CUU+`5TE=>^E=4U%>[*`\P%Y&J/F/XBVBO967?26%;<?J9^*6&8#Y +MB8J9=EY]7&Z1?5??G5MNU\HGZ18<A/ZUN@4'<C;>RS+K"!9>BN;S=PL.H?HR +MWB(#:#Z:M\C.JR_1+;+KYG58B^R\^PK?,KLO/]"WR*ZSP<G7F?;;NQ-HWCWK +M7_Q;<!BFCP$N/)SJC7$+#\+TYO?EAM1\57"Y$31OI%]Z!,OFI_X6^X7'4;_? +M?KE1J"^17'`4P^\>>C.8ZJWUW@RG?9^]-R,R7JM;<#A>C<9X]6O!X1BN5"TW +MFO*-^MZ,IGG7OC<#*C[CZ,U@+H/GNI8;R_#2QQ)C4=[L[\UH/.F<[0<(O!E+ +M\T%);P94?&?2G\&<#@N=.+9_E=*;X31?7?!F0,4W++T9C/&Q@^6&D_D$G>)# +MF-X,)O<I,E>?!K-8!Z\_LKG@OMOO;RXRAOZ#DO/MN?EJYR(['SS/.?.N-^VW +M/I<>PX*GB1U?"%UP3(N>INU_4]2'02QWHG;X)=(%AZ%\I-2+4=@?@EAJ//4G +MZ#P9S7+GC>T?0?5C.`N>,39_,M6/H2QXKMC\@54_AK+<66+KYUC]&(WMMO.% +MAK/46=G!=UV]&,6")X9-7X+U8R`>=.C^MV/]&8KQL?F%QK/H.4_+!VC]&$OQ +M75H_1E)^KM:/H51?L?5C+-7';?T82_W-6S\&L]@Y5^,7<A<>R2+W/`V_J;OT +M$Q/EYW87ODW3\$S5C!FQZ,Z'W^]=+!^G&T#Y%%GUVKS^`+J?!H\*=D:&_6J_ +M`B9N>C[/^@W=<NO!MW.-/@S[L(QF?&^=G76_T%GV0]Q_?5]OV6Q/+LH-`'&S +MZ_2#*1-G>Y]L'FZ*\NZ\JS#\JS%QN<"@C@_GS_P8D3\C&=?=<P[$FXRI_[(] +M'38/^VU^R3P:5/'1S6RSS[)T3'3./2CGX[ES#\CUR.[,XW$_-SCS@,KGZ:KW +ML_LV*-,;(Y8>4WX8/;DV\Y@@#T3./*12C-PGZ?GVX]O#O4?!ZH\,<!N`'R-T +M7Z!?8IQ/ER0_G))]]9!F>O=Z?S]\`<K"8SSNK\4;3+?%.Z=<][PN/;[Q6QF7 +M&%V1?6/7UY<84WF.JSJHKDXP^3B^ZAR<M^/S?&"^0:2^E]6?416A\DSW.^^S +M760\F_OT:/F"U')#4\[5^\FQP<4$?P?H^\@\0-G=C6`^:-SJP[[.>_;F'8WC +M_H1Y!_,X?B%SYL&,7T&<=S")7X,9OOMXP<&,WD0X[V">MF,WU\P[EM/VNE%^ +M_[4'I[;KD9W39)L=SN570\:?$%EF7$7DG&^WFW=H1:A>;;/BU/+@M>Z+#>IR +MV>T=]X;..Z#1NT/G'8H7O*X^VN5Z%&RNP3A>WSGG,`"O;IQK.->\>(5C<UEV +M^0&U3W-<CAX<\#]<WGM0T]4M=NUIZ$UY2[P71_O0M\'.-)SJ;/WVD'AQG=B; +MJQN01QWG'HH?UU,*J>5A676OWKPIPD</XM3>R>C14`K#_7V>WMIIGFV+LXS; +MX3UV2XX/_K[2.8?F?D?GG*,I`E,^_78]G/.]#RV_&1;D(<X%AN1Z@'*)(7EQ +M"J0_HN[R^.U0VH?KXNH`W0]9+C>HS?GP>/3D5CMU>/X<[E>C`CT"N<"(?#B' +MK8YG_"UPRPS((PFJC:QX1'+[X,,ED<&P[A:^Q]XZJN'GV3T9UYV/V54.;/AQ +M>4]&-OP8O"<#\^,"F&5H/EP.,P[-AQ/B@X%YC/YTY\'UN\&HSC]EGU6W#3A> +MU[SH`/VX7FX?F\>QN_>MA7IRI[`ZI$?U#+R'0_.M<Y:#\J\UE</RY>*Z.K## +M.?6M"HLAE2=1BG.&'IV;ZT9W3;/L]D_O!O8Z30[[W#^=W0VM^!ZPKV/+/#N! +MT8VLOI5Y[\$UO=X`L\S+;+L-RX<'T(:C.N[?^AJPV_^>TI\\S+'WM_]_./L7 +MMO%O!2PS($^EHNLM8PL,J;@$[UU*C7]B89$!>?!LHCH@+VZ5[PVHON'0S]+S +M]_@QO_/LV#'W[6`V3WP;D&]G5G//QE.^K='3>AM_2>$"`_+NS&EQNM2SM?/I +M1KQ",N79Y7B_S;TY3"A>&>7'HZ#E<'P+3SL>]^<M9AI6=1)T<[<]'SRXZ*32 +MVH-[M<J3UWY4O-[)/(B-/B"/[IKN7C7JTUB:YQ$\6#EE4/X\S*<,ROE=JOF' +M=-IG3WZMW'E_[\6MF>J0/+F>I@[IW9-WZ5V\N<Z;7$)\WVJ1<?GQE@IM3(`O +M3"TQ+#]N?!D,J4KWPH-G@_/D"0I]3#X.R8=[-WI#\N%!$VU(WCS(H8T*\-6L +M)8;EPTG+>D`^/;RA#<F'<X/:@/QX0]-@2+[<(S@<F.,35XN-RXN;B[5A.3\= +MM,2@W)\%6W!4F[LT]>`^/./0?"S(9FS^7$PP#J^ZL\:SP7ERK\AP3)OMW3E- +M+OG>D_?3&T9XGVS/7IQ7MX]M<SCNO+BIUS#$AX=D^^AE/6R.Z>:\/VVS;>[# +MVW\-`_SQDM:7F7PDGA>?N-%&5'QBTLO>Y9\TROV-E&?GH)6!N;X;NM2X7-\0 +M76)<7MP9TQ^1ERGOWXF+XI2OIY$JFG9S\MZ+6U2J`7KUP<!J2$6PBI>G*]': +MG&]*QP.PJO>$S7W303F,YQ]]^?V7U:Z>?]3[;5.,XL6W__:QX:>;^R__],67 +M?WKQAR]OOW_P=_^4/3W[Y.&9S?L'?_?\H]_]<?/OFQ<O7G[Q\?./7O[A3__3 +MY'9DCR^_^-T77Q0_O/S#[__MXP\^>$K/>?*N^%S=\9-B96]1_,</_NZ3:AQ_ +MW\6P_5MQON@7=^==\<]/!E^4LVRFG2>T;S/\"JMQVVKE'?LN%U`ST#\%ZMJZ +MC-8OD=OW[I@"V:#G45K5KVJK3M_]P#'6'K#`FS]F[UGF+.N$M_.$::U>!:/8 +M6XL"8G[%#KYN>OHY:)#E8_G?U>NCD:;5IS;0A52;_7YS.9W4.R(QQB\XQE]S +MC%]RC'_@&&,3LC8SW.J!,<?F4VVVHYD]T,QZ+VS$F+[:)T3+A&A&'RN!2JUE +M2MSG$\V,R)(+T6QPX1MC/?A2%<88C>K:[AW-#+VWXONRF]Y)$I#E:7L^YZ^R +M]/+X:K-+\UV*75+50;8O@FP:@J++&S&K?9S#M6&2CFUQ_VI__V;SM'TT2C>' +M@<.U5=N-;.QPV?MF,F#;<8>]CQ^X-P6XNVF%T[O-W:N'`\*Q8@3>Q>UPS)1R +M`"/(+BROL,<:0G;5/T<)M@`Y1T8)'*#!MRK@)A#WU^+[$QCGE<&XZ\%'OB$; +MC[OL?>79O>FXN\'GZ2`;C[LT?(L:MKG#[>EI]P]`E^6FX^ZR.YBOVW8.1_NM +M25S:MG0[J]ZX?SCFJ?;5!IP99#>C+X>GF4-W6SRF=\7NK#*"[J(X?WB#RW&W +MS7:#1SKH+J"[MY]>`ID!=C-X@S[8`N!\\-$0L`78.2[=.AO,#O1+ST@[Z([Z +MY\Y15H"=&#\CBK*"[*3ZN'%SC^PV`6I>FS%^E[UG+6CF^-T.'Z<@>\#OW':B +M`&5.V"UOK[2=VDXTH,P)NS6?:L!8XW=:?$J$OM/2&K_3P4,`5`?X76LOE:48 +MXW=Y,9V;@=OB=V@\LP*WQ>S0]%@`R1J_4R+X.V/"+H''719;_`[OBH-SZ*'D +MF`/\KK6O4%",";LT7Q'%6.-WVKL%@V:.W^W@KGFJ`_RNM=?_48SQN^S=&DTS +MQ^\VXQ1L1JI8[;US%&/\+G/.+'/2+*^<75Y)NV2U&'>'.>>9=GL,8%N(P\WY +M=/M';KHZY[89W\$E/P`;8+GEN+.?#EE^V0+]-1N/NT2=5X"=3>A]&=F]*<#= +M9KL;OF,(987;R>AE99P]=L?O-O"S#%9K[$[AQ\H66^0.<4?)=G/D;A''QQ9; +M[`X9^R/L#G%,;+'%[A!\-&PV1>X.?AQL-D7N#G4$;+5&[G3D8C_*'+E;Z.&H +MR1"RJ_)T-/C2=\\&O`/$A8"!%7@GY$L!#A_@`>":]M`.LB/4&7O=!.X>?,Z^ +M;X3:!;:?8D[;C]SSCC.#[*9(FDHK8_:B6.%V@CAC9#9%[@YZN&(R1.Z*H+(, +MULB=PL^<F$T)N[/=,HNS1^ZX_P($BC%REZ@3-59KY$X1YTLLML@=:H^9HBV1 +M.RN>("7NK31%[J[W0"'!%KG#WI."!%OD#L&G8XR6R)W1R8T!-^HR\M#,O)M: +M5]Z&`])SP\W=;D$"RF1@=MW]:W5_:/,?3KEK,P3?UVEU`+E[TVH,N$_39@NX +M)7/4%'K[)<")^];!<2>(6RC''4%ND'1X8$X%=+/CN`O`#8TV!Z#;%FW&@%O_ +M;*8@.MF,@;<=6LW=MQ?:3%VW$EKMG'<.CEDB;A,<=X.^#=#M#M`%W$[01^UN +MEZ`V,NH&=-/=J`?0<3K``V^9$,?:;C^0`^E1+V!I,NX%>0L;QAG@A#O&'>QT +M.L8CX$PYRIVH-\!I;I0[YTELC#?W.6J,-]`I:(Q#YZU5&&>NFZ8POEPGH&&^ +MH">N,-Z$*A]VD@OC"W3C$<:A\W8BE#/GZ2Z,-\`=0!AWH!-&&(?.^W4PS@!G +MEC#NG'?8X)PY[IW!.'.>@L$X<YY@P3@C$P1RC\JX+>QV%)L/]QTG-DO0[24V +M8Y86!MPR,FH*OCT$Z@5Z_P?<'^2"`]P;73X2;\4`NV,(1\+=$V!7#,E(N.D! +M[(HN%FDW*X"]P>Y"`+NCBCO,O0,`'XP3"9SK_P"??'SRS@2@KLH#G7"!QSX9 +M@+MJ#O7".+I`7_(&.Q+H+Z@KU2A7@*O08'^0B\M@9ZRC`,KU8+`OYZ5>L"?W +M=5RP*\`U6K`OP.57L"^R\,=?-G5[(IUX1%[S'#,'=9+RG39]+Y:W#+K,<"=N +MC2[*%^K<&OSFX59!=^?=YOAP_DS"3QG+7SF*<MP5=RC.2G:8,V=0_V5[.FP> +M]MM<^\@BS57QQLULL\^RU%%U`%>0R]0`-X`+UFXOH,N4;C?E1</JQ50RKO3/ +M07`\%=^NXWH"7A=U.RJQ<9^DY]N/;P_W[('U_<'T,-DO2-\"O3]=DOQP2O;5 +M-=CT[O7^/J<`?.CYN+_FFU>W?]L/7O@MY-5Y.A#HLXBJXY0&T%/9SJN&6/5B +M.:^52!#V.HD[F?2ISXER?17#$ND7D'.K4"^;^_1H?S4BRJ$B(R7S;J!.I=U. +MXX^<>G>WC*/SNGK'+^34J-.'^_#7Z>+1>73C=N$\&'&Z2"1<&%_*BG/A.E_J +M=/&T=9P_<'JXR?"-\ONOR:*\]G=.DVUV.)=^(3?X@1T67S%QGNMT>BN\W`[\ +M=_KGPDFN+I?=WGTJV.G&=0K8Z8"1RZ7T@5QE&G'AOK'580R["W/$R34O[L%L +MCFVI;MK+/I<CN;$_7-Z35[,Z@3?VT0N</\1MNG8GE:;?'A+&\3'S>`-X[AW@ +M@'-<4N!,;&FZ^TIO:'LDCZF]X9+MH/@,RNW8*KT58YYM"_6W3<ARA7B[J\,A +MZ(Y0AX]B$.6EQ>OAG._I9=XX`U[7A3D"7(D%.F+(BKZ?[A#\ULKIQ]ZJ6]#U +M6)2KS?GP>&2=PE.=<MMZY0MZ10SFAZZ952_.N]C`;M@XU?P55\*V#_1#BX&S +M.]+Y>JLOX\=XZ-[NY*)6NC-^[(?NS_CY'KH[SJ&6Q2']P,OHD"[`!^[$RT+[ +MBCO3U_FG[+/J-(#[9F>L6\XQN=VC^#CO94J9=<98=?2H*GXQAS(57+J2*K9' +MTT=;Z>X.9_,7TDB.2HE3Z$NV(NQ\7M,LN_U3R-WK-#GL<RG2=PZ3E'D,,_"8 +MB0B5SE]](GI//GKLN<TRP2C>G-$OSPU]'?=O90=W^]]3^I-8[-[?_O_A+#5$ +MYW,!8#>B``7<JP1S5)PP$`J5\S$%J!OR%4G5#>,$?L]-??I1<OFD^VE^)])+ +M<YF6G!N_;HEW(Z-X<Q$OY;USHFOFO.L-YD9(T:H?,F;YXY\J+)"49Y?C_39G +M-H7BYBO.)=+2B<Q06B^@YUSLSBIQ:OW<+\B'FLGD<V6E[.:LM5Y1[)/5NCOR +MM+I[^OD>FBL2`H-A7PQ47$$>>0`Y.NVS)XFYG??WC).BJB/6D9OJZ-V34+"+ +M>_:8,<(]T@;UQKG/0O,$>P`-Z(QS@F;@J`I^OGV2<<FZ\J%[DG-$/^_1<T2_ +M&*,Y8EXVT7S!'F(#.J.+R=H-_U*)YHBN_C0WG'N=!HYX9PR'[MS/#6&\,4XR +M:\X@CR`!78$>0,+YVMREQF\9TQW*+6KCD7N@8'1:G;<1<<DZ.S+TM-G>G=/D +MDN]9]_(;_-XGVS-#Q]L];@[''>,TL<'QPT.R?11<G<TQO>F^FU[;YO3[B@UN +M?[RD]4&67(8R'@'2_!2/\@E6HQ3$<NE1B>APQ1W@N46$-\"3BT!OC#,X?3^" +M"R`E4`H!+3JJHN2;@P7&21GDP^4N1\7`BIO?E9%MSC<FD=-7/9,&.ZNQ>=`> +M"7W8;Y+M)WO'-2JKD?$=M\:MBV?WRK-3CM-13F-EE[?:^L7=>7?[QR?5/PR> +M!]N,//2J;&M_VE#=Z#:DO%S#O:G]*5M:WK>I;'&^W)T=3BQOZU&VL-VU7&Q2 +M)E$=@C*!+(_P&K<MD\TD/>U;V\X:VBV*-_&B#*IK)38!-F)7W3=9$MITR1QF +M:;Z2!;-]S$Q'B$!;NFG"V*WQ.@O4U'CF`&IL.N:$V1J/P^VF=?NP'$G:[5[M +M$U,;M!M4#S]M7FPNIY.1AT[3K^BF+^FFW]!-OZ6;?D<W_9YNBLO8VLAT,ZG; +M:.1DJ]-X?[U/+C33Q\-N\V@Y<'$;6TY0.@U?4XQ,9\?=1OO]J2CF?76IQM;Q +M1WW8SL.Z#;',:^V,)T>==KA6WAB5P<E?;6G6Z>YB/-WMM$R3'6._/U*,2`P@ +MI<SE5E87:EF-G(9VVB*[76V%,SIM\WR?&9_;'3$J7E%9WEEG.:=E-SWG.^,Y +MYS&+['905!QAI<?]T?A\QHAQ=2VN>/8'96=_.-QN,W(<4OQ<J/US856>C^[, +MRK\[C?1=`6S,U[E[=A_L#N>\>*?+\9,BP#>H_F/KZ^\_S;=WG]Y_\,'A6':D +M9\6X?_'\HR^^_/,7?_C7CYN9M$=6?TZ=6Q:7&V";M<%T;E[-SC:(<J4L-N7Q +M$L:@#.$O\2;5D1/:C#*GTK!1S.6??V#:%T=%/`_%L1'3`]=!PAY"PG=PTP]< +M%\/RP7FX$F:A'D2AC1_+_ZX>XL9;UQV-4'*UY>_KPP6J_0NF_==,^Y=,^Q^8 +M]H2,'1P#43T0LJVVW)$M'\B6U>$3U;H\X4`U3NB6K$'3B*8>%E&-G\B6=`A= +MZ)879B4T8I1J3Z%^;?J.;$G99_'>O$UU^0]M?-J>S_FK++T\OMKLTOSV/YZ/ +M;%^$71N(<@6G\]*([.*U+7].@!NKW_B#&S5Z$&Q0O1H1O'WUFA/<YLHW^RB& +MY<?MD(;Z2S^0QO759:P589C-&U^09M6W]L!&S8LKP0;5^QO!FS>O]0(;=.^( +MA)N4W\L#;Y[=(;8MKM.AMM:_A8<T-;T0A."B>@LPP=#T=GJ"F_;@&V7:O+T$ +M9]6\.8=BA0^O_IX<@FU]UP#.4GT_'M)R^!TZEH/JSFV6B_:6;9:76B^S7+`] +M)/Q!5#J6XZ'\#`C+0W/;-,M)\1H"EH/+A6=?J%2:O7)S-<L#H[K:V[)9]LTW +MW5A.BC?@\!R4IVDY'JH[OU@NFINC64Z*YZ]9#JI;45@N,FY2%(\TLQSDW!%< +MN0Y0E5F_YQ>Y??O=-+!=>?<5>.OF^VA@`[2&JN[UPFVN?ON,;*F>JZ/[J+]! +MP_"`DR;V;YG172!%B?F;971SI!PQ?YN,;HX3(M9OD-$]="?*R"XP(J+W?3&* +M'?)`S?$=,8H?&F;P1UW];X11#2F0(!UX#;[_1;9$*DO3=[[HQD2N]K_GQ3.O +M+_Z1?=0/S=$=H-6@Y?M<=/OB,1ZZ=?D=+KIY]0P+W;YZ:H5NCQ*`QN]J$:S! +M)TR&W\]"F8`)VK^CIOF/LGD0;;4+`50?P_M$</;U90*B>7W5@&.M7D3@^ZE. +MUK/\]"XQL'R=!Q>T*$[X<VJO1["\U)<GB#[:JQ5$^_K"`M&Z)0K17KFT0?50 +M7>D@6A<7/JBFY740AG'OL@C+D_$J"=MCC7ZV'Z,R9WLUW,^(]]1>8>$X::4_ +MWPE[X7J'!6Q7S4$"QY&F/5B.#-=N!/W5YTL$/79G4`2=#FZ,XGN4=CBX#8KO +ML7=W$]MA=6Y&T&%[MD;09WD)2=#?Y2+J3K\-BN%./2L@Z%`.$-UY!T%W[<4I +M09_EM2I)?[TG#-@.ZRM9@A[;4QF"/LOK7(+^ZI,E@AXSX60L+XH)^LN%QW<5 +M]L=A37-!C67>75\CNJDNMQ&-VZMO1'NN^JZOS7&LM4MU0H[,=]DS738GG,4< +MLG3JR&4^*8\\A6JY""CEC:=-+9<(I;RQ5*G]`J*40].-]SR/#`G9O]K(=\,[ +MX>&Z%LEW*P)=]NF*P85+&3\"C)0X8S&\RBGDB'=X8[P&*N5+ID,-KI!*>AL\ +M+<ESV5P_E?+'/0:Q75V5<E=>;)5R5EU[E?)67XJ5<E=?F95RQSGL,%^W93NC +MGDHU7-5E>!CO1;T'P_J.^B\*@%L"STP[O)3/IMU$0_/UY\WQX?R9D*LRM+^R +MU2[4F\"`[#4/]L"?2OV7[>FP>=A77UOE>RO>KY%M]EF6VHH3Y6WT:C_*T]AU +M?XRC\:NZ&$_EU=7J.5`Q;^4K:J2<%1\%$'#FNI*,\54RYCY)S[<?WQ[N)8;7 +M=^D0X0*NQQ4U>@?M%YW+J];IW>O]?4Z$_]#Y<7\M7A%8O+QT]/PPR[']!"?: +M;1%AVPD8M+-2'U2-M>KLHHXKX2'O>"J/8CE5G^X5<%<,3JK7C)XYQCO:W*=' +MP[L,B#X5O2J<CP,E/('GR5QR4O*N^*0;A_+5BWY&3_DBW(P<ER.\/-J/L#!> +M[$=#""^)D)<GV_4^E!?KJ6"$EZ>M[3P'PDGQT3[E]U]SC@1JE^<TV6:'<^EZ +M]`Y,@L_B77SV<[@(AX6C]MML;&^7F^G(Z6Z$)^MI;H0/7J97;P(?N^P&\C)R +M:S+8WG'C+,C/-2]NFVT.NAF>VHM@ER-'+#Q<WG.6N#H?:?A0`=TEY(YKB)_J +M<*+Z="+;#6>E7%<<4#Z8QT8%!"47J[LAN/J()]=3\<%,`1_%6UYO!WKIK6;S +M;%LHS6W"D4/8NY7!/L?OXP6[*8927H.]'L[YG@6$QI_K>CC6U]CE:[0OGF#I +MN^I.$MSD`>OL@.IY_"(VT=OF?'@\<D]'JGX%I(+Z_>>1:X585RRMKCJRWUI( +M\"0!8<UE<8UP^\`ZO!GXNZ->I;"ZTU\>+.'P3C2"I<?WG"--H\M'CC8R>F0> +M]UE\LHX"C3Y9PG_@<8JB*;[C*>CN_%/V676Z8N3N=;IGYED#N],I1GLO5N[< +ML^*JKT?U2$/2IUB5/[:?1!+TQSYGH7H\G%.QM2U\E<JI4+$2HK-S>TVS[/9/ +M.8^OT^2PSP5;1.>S^/B%N--,2OQT+NOS[7O.H6S/<Y;)1O3FCW75<NCNN'\K +M/L3;_Y[2GR3C6'VS6'"@]L=`")ZDF3MVBQC65W$^0RYL]F=3\)XX%VU53[QK +M%CU/]=E4X06=H"_G=U(].1?K[GDBYDE,7>=2CLJ[&:57T7X3(M:3G'I6OZO+ +M=2ERSK-`6)Y=CO?;G-]3BCO?F)>32S]B`VH=C3_Q!/%7">'A-Y20;M0\YYSK +M*[4^,P'TJI,X(:][Y,RO>WY#Q$ES*49F2!(72Q5OHX^Z('V=]MF3T"3/^WO> +MF5[5%_<P4O55?4M/QEEQ(R4_7L#'(/$.F3>P:,X<3RRB_3%/*@U\56N1;Y_$ +MO'*O^NC.1'VQSM+T?+$N1VF^^%>--'>.!Q_1_EC"M?8D<J5(\\62F9HGYHUF +M`U_L$Z!#CR,/E-$<\DZD:_Y&'T]#>QM_.(WJ;G.7IIQSE4:?HLO<.!4X3#'Z +MK4XW27GEGLX9.MML[\YI<LGWW"<V#*[OD^V9=_Q@=[HY''>\\^`&WP\/R?91 +M=K$VQ_0F+6]Z<)NS;@XW>/[QDM;'>J*9RWLD3'-5/`0J6ZZ"Q,LG&)N4\E<\ +MCCWZ2G(X]O`KVB'OK%/?E>QZ"(J>0J]+CZT@0W.0PCN+!'VQ`=Q7,;SBX09E +M?)OS#6"<S%9/!CK.OFP>+$\8/^PWR?:3?69[,;;#L'B$LSQ5UOMP1_%U^<ZL +M^N[[)]4_U`&.;&9ZU-FXN>%!4O-VMV&67_2\+8-SX_Y[9HT;G2]W9[>K_@NC +MC!L-[A`OMNKE0!V7<OW[CW([-B_3Y9=8@\&Y2HA1\>IJK$UU76<@Q4"F]6?! +MB[_^P#'N78?#FO<^#H\V9UDGO)TG3&O]7`3>/N687]&#KQM&_T@48MK_OC7$ +MQOX)=H3U5RQKP^?7$=;?L*R_95E_Q[+^GF6-SNKFD_%4.]/97X3]_EJ:$*T? +M#[O-8_^H!V/?/U>*L'U-M'M#M=OO3T7][ZMK30.-`70S.#V,L250T_+)>80I +M6C,T=F6L\E=;LH-T=WFBCCI-=KR]_TBTHY*#FE"76PU>H.E^.,,>WTMH0 +M;7?:YOD^.Z+C5+Z[M;QGL7]N#6)]SG<'M-8H'OD_E8=MZ7%_S-%#KJ\V%L]T +M84T-[QB`F)D.G(J_%P<B9]VP/(/>699;0.ST'<+,S!?\&],//KW_-/W'#_[N +M^4>_^^/FWS<O7GR\VY]N!R#[S_^ROW^5/GO^3\_^^NR\WSW[\/S7__U_?O&? +M?__\^5\[W__MK[\]__4_/DUO?_SKAW_Y[7\4?EY\\\<__^'EEQ\_^^2/WQ;F +MG_SQB]O___GV___\[/GSVONGWY[29Y_</_NDW,/S__'LO_VWTGC[M-D\_?1Q +M;\/NOVXC_G^4L3[[C]M_GM-+=K___,/G_^/#9]6K6F[__D\?%@?3>9HFGQ_3 +M<K-JS)^W@W]V&^J+V[__\9LOOBS^X[:+(MLJG^HTNE%6T;I[S8[7W6MFQ/YR +ML_K__N7/O_OVJ\W_^OA9,?6_A!!"P[#+F";L%$RT''SY[;19F!!B^&Y_I@11 +MG8J:B?JI(N.9I5M4>V>4BK_>JY&^^?_#[[_]YIN7Q9[+/R;Y;4>?Y-O'SU^\ +MJ/Y6;_'/+W_W+_]6;*;_]R>?%`^W?UX,^2;IRLD4&WWQY3__6_W/WWWW\MO- +M'_[TXN5W7WQ9_DW]]_[`-R_^_.=V3^J_WP;RHONAV?EM<4&!T-8?=7JN2Q'8 +MCOY2\/79)P_//C2$_L-G?_WKLS*I/WS^T3F[OS6GCW_QX5_&%FF;?]PE)'KD +MZ#.1UK0VSJ;)<U!H^*40=*HND$,N2*AGD8>P4']=&33TP-#@H?H`0Z2W8ULB +M:$L#2@CS8M+@TI\9^:H%$#:]V0*AHX?R;_#Q)?<^*`Y^FH.@]BK2C3[EWYO_ +M[@$'%ZSF"`N-!?/0M/HO-QD<S+4;=Y5N\=6%59^O)9*6H&B%"QB28Y.Q8X+^ +M,)OR,\^/?<PPPT)/MSR6W+X=,?J;W7>O)?/[YNTOAX=GMBC^]EG^:G]\IA\& +M#K;9)^=];YLNZ(.M'PY_\;\N[EX'7AD++6ROHHH;;=M64?R'#Y54#@I41,66 +MM@JJO/3Y4\YQ%#YZ%$`%T`QC['=WZM=#,^=].9M`4YZW$J:,[1J`5SD+1+\S +M:\ULJ`(V`H9F`P`5FDW1K)\KU8/E^P(+.*R0]MJ)RO;VCY[42S=(:-6T%B/5 +MHW@U$*>+@8L\AFA!"T0;)F0[4,&H0[<63C?[<,MG@A4<JQ"ME_A;(_#>@JL2 +M*ZJ40(\C2]L0AB[-A-*#O"BQD'N4;PGP@7*MW79!_];,E*V4'T2*M?2'KEC( +ML+7"1=W"T%4P:#\=+BUQLB#3%56M*M$3P-ZT8:U3ZZ2:6H4$:9F2)237<LL. +MJL6B;099C;U&.F$]]LEJ6QTC7>T;CQ+6;F9MLX$7]%)=>,J2]B]S-`5=#7C2 +M2TVT^A\9)$`]ZQ9F]=SW.MOEI^'@(-MQ3[CWIAM6I4VW;F/5,,W%*?%Z`!U/ +M$BK"_PM67E12:%W+OQ6O:K#8JSZN\I'2IB>5/Y=_6;H*;0,=5F&YI24;2YM> +M'5H]]QBGQ&*,<J:0#:L*-$C8EL[*T@:NU99MZ@'6UH2K.%XI;;_ROU9,/4NJ +M6HP44X-MYYB^E9MD^O;CW<OO.@NRBWF9`;8:+6?Z2[V?U7_SKTJ;P>*JM+9R +MUFGKW43$)B9.)@Z"AZLY9;#0;6%UUTW`47E-&**H/.$U=561WNN\KR-LO\-6 +MDIUX;>@=S%.V`U)/L:!W/G^J,)(.Z%%&C-9P]2J?83>L_NYI)=>#)M1R90FK +MYV8O5I+6,8+1M!]00GUV@\=LCZC3=D*06JW#$T^U3K/>D.HS=-$0ZH_430D5 +MZ&!HLRP0CG;;8EC:63$[K)<5'%/']3-C1AG0O^K7.?'E>H=KX`0*6*Z`./=D +M93/H>M-8:`G5/+CB`;9`5+3M*H@K5/'4])2K#ZM,0W\.I39)/9I8G0[J0JY@ +MF;?&D!=^'3/L^HZI:_N=0:.,:-XX6O[Y!T,3[VW@*2_ZTR!`H^<"QH[!?JV( +M[\<11GIK]`DX,$R09(B`PW#2$$;T@QH/*&9/%U3M&V1"F-5/$@TB]>]H`(-5 +MA?0!@Q&F'1C,F;HB6)#$I#G"S3PXDXI7USL42;%)"%0JI\*E4N&$P*5JW[!6 +M4\:3T&ST=>!"I9DHT90*EGKR:+24`8X4+?,E#Y(++K42%!GXBH7#!DSOJ-88 +MW3T:,W+_:!Q(:I<0,1.MA@DR$^',*KZCX]`RQ28A$*N<"I=7A1,"KZI]P]I1 +M&4]".]+7@0N99J)$4RIDZLFC(5,&.%+$S)<\2"ZXM$Q09.!K&0X;,!VD6F-T +M!VG,R!VD<2"I94+$3+1:)LA,1##++64"X96$D*&Q"M&)B(U(5,30X<)@"Q$M +M$0N8>;(&1P*G>`F'!0+2A4P#5+N@=0MNLYA`M03&E7@52V@9"&=4XC[SD@1R +M?)5(G'E):$=7">+@.2$>/">B9UX2^B%1PC@D2HB'1$G$9U[F2QXD%USB)2@R +M\.4+APV8]I'0CG<3[O%N,L&9EQ`Q$ZV."3(3$<QR2YE`>"4A9&BL0G0B8B,2 +M%3%TN##80D1+Q`)FGJS!D<`I7L)A@8!T(=,`U2YHW8+;+"90+8%Q)5[%$EH& +M8ACUM'7KE=LV85"JF`R?4C<O)$Z5>X=VH"*FI!ZD+0:?,?5DJ;9TSE0!()"F +M"'.TI)DQA["4<&N9H#@AH6<XI,!UE'*I"3VEMF-TE=J#K+()DSH1*YQ`,Q+# +ML-0M=(0^3#DYOXP?6\7644ICE^'#H&/Q)/6G\<^YTB9*-*6C9OB]3'"`H\7, +M7,F#Y();V@1$!@EA0V<#KHF,?UW58<9H(9!/Z<:/F8CU3("9"&?6U7F-Z1K& +M>>6KP#6F*^FL\A5^M>!*NUIPE;S&="6?"[[2SP5?:>>"K_%>8YHI:W`D<(F7 +M@%C`ERYT&F#:Q95TAO_*/,-_E;_&%!I7HE4LP67@**,>TNQIFV^.^[>F-[^K +MOWI*)FT"!":I]C`>Z7NT]A@M=K#^8@XW@1S]2>&M$,3H311""RV$\7!BKLR` +M5[1!<816TR2EP:QJ!]_U!82PO6^!X7K?EJDJ@F)#3"HBK`P;9<QC^=]%F+>Y +M039H/WO*&'T*!,1H#F",Z>W3VB#T^,$ZA"7F!$`,)D8P0R"B/UD((_1`QH.( +M&1,$4=\&$1%>A9-D!+O&'9COK2.$\P,3#.@'QDPM$1PJ8M(3X67:*'/24WY( +MC\;/L;8_>4J:;N@$QK3&,+XH^[*VARY>L-9@B"\!!MI$D"8("*B3@P"@"U@\ +MI3]Q$@#KU*`+PJE4DAX@UZJ#SLI:0<BL;8ZALF;([/W>EWM,O=[_3((PX_>; +MR^FTS^P=OMG`;WJTTZ`3I'&!XDBW7Q?TVSBBT#^,/AT+Z@1)AGA$*)-&@*(- +M:G2PF"]=4+5O5PV!53]'0?#J']8#NE5%=`+5B-`/5',9?1$>2"+4'0%F'H1) +M+UQZY$401'K!UR,O*#QZ`6XP+T@-9AA].D9>4#'R@HR1%R2,O(A6C\R7+JC: +MM^N1P*J?HT=X]0_K"B\H7>$%KRN\$-<CX8$D0CT28.9!F/2U2X]\'021ON;K +MD:\I//H:W&"^)C688?3I&/F:BI&OR1CYFH21KZ/5(_.E"ZKV[7HDL.KGZ!%> +M_<.ZPM>4KO`UKRM\+:Y'P@-)A'HDP,R#,.FE2X^\#()(+_EZY"6%1R_!#>8E +MJ<$,HT_'R$LJ1EZ2,?*2A)&7T>J1^=(%5?MV/1)8]7/T"*_^85WA):4KO.1U +MA9?B>B0\D$2H1P+,/`B3?G#ID1^"(-(/?#WR`X5'/X`;S`^D!C.,/ATC/U`Q +M\@,9(S^0,/)#M'IDOG1!U;Y=CP16_1P]PJM_6%?X@=(5?N!UA1_$]4AX((E0 +MCP28>1`FF5[(WO[D-X5HKU]OC5'<&7U1=A<O5/-@OEI=FPC2!`\$\)N,NX!% +MAX"ID@!8IW;5$$"E<I0"OE9AC(:^4UK;G,!ED7>:>U_N$?9\CS,)PHR[WWRV +M/]ZGN[V]QW>;^$T092ITCG1.4#Q1]^W"OQ)/5!LPK0,=$OI$B:9X:&B31\!# +M"7!T")D[>9!<L&N*`,G`T1A\-L`ZA;K&B(ZAFQ$ZA^Y`1HN$BYD(M4K`F0AA +MENG5GNU/?A.*]E+/UAC%H]&7-G;Q0K47YHL\M8D@3?!P`+^CKPM8="B8*@F` +M=6K7%`%4*D=#X&L51FKH^Q.US0ED%GDWI_?E'F'O]SB3(,S8V7O[SG-B[#B] +M?8?CQ0Z`]1T2ZSN1WK[#%_N.4.P[9+'O(NSM4R4!L$[MO3V`2N7T=GRMPHB\ +MPQ%Y1R7R3K"W^UON$?9VCS,)PHP'>V]_\)P8#YS>_H#CQ0,`ZP](K#^(]/8' +M?+$_$(K]`5GL#Q'V]JF2`%BG]MX>0*5R>CN^5F%$?L`1^8%*Y`?!WNYON4?8 +MVSW.)`@S'K/WAY.]OU<_^TV.>@IT=E0.4/QH]NE"?1T_%.[[,:>#H)L8P0P/ +MA':R""C4@8P."W,D"**^[;H@H`KGZ`-ZC</HWJPC@O"="8'RG;&,9@@'%1%J +MB(`R#<*<5_MD1%*4O_K-FVH"=-B4]BC6U'MT=8LJ=JAFT0LWG1#MI/!6>#XT +M$T7@H0IA=&R8/#/@%6T7$<'4-$="4*L:AO5Z`1%4;RT(4&]M9=1#&&R(4#D$ +MDF$0QB1VR9!XSI:$(Q82'%,20#-(D)T@$1$("9X`":'\$V3M)Q&*@JF2`%BG +M=B$00*5R)`"^5F%H3G!<3JA03@1[OK_E'F&?]SB30,P8O\J0!'`.,N%>94CP +M9R`3X$GDA'`2N1]S!@AHIPX3XJG#A'#J,(GT*L,<"8*H[Q%=$$Z%L_0!N<:! +M=,>?^TTXYWX3X:L,X:`B1@T13J:!F//^:>3%1^6OGO.FG``#-H4]CC75'IW= +MHHP=KEGHX680HID4WHK`AWJB&#R4(8R/#5-G!KRB1T1$*#7-DA#$J@9BO5I` +M#-4;"PK4&ULA]1`$&V)4#F%D&(PQZ=B)B.)7WPF3\DY#%/9(OJ2@8\PR=LC> +MD`J=@F@FA;>BD"%%'U24(8R0"Q-G!KRBQU1#(#7-4PVTJH8R/<4>"S86)*:G +MHN<<@F!#E*HAB`R#,.;)+AF>/&?+$T<L/.&8\@1H!D_(3O`D(A">\`1X(I3_ +M$[+VGR(4!5,E`;!.[4(@@$KE2`!\K<+0_(3C\A,5RD^"/=_?<H^PSWN<21!F +MY/;>GGM.C)S3VW,<+W(`UG,DUG.1WI[CBSTG%'N.+/8\PMX^51(`Z]3>VP.H +M5$YOQ]<JC,@YCL@YE<BY8&_WM]PC[.T>9Q*$&1=[;[]X3HP+I[=?<+RX`+!^ +M06+](M+;+_ABOQ"*_8(L]DN$O7VJ)`#6J;VW!U"IG-Z.KU48D2\X(E^H1+X( +M]G9_RSW"WNYQ)H&8<7%]&*G=PG-^7/B?16I]X%AR`7_7IHLEK@$,EX!!APOU +M4R6M)8$5%]*'2KK0QL>-.;,&1X(1$1$:"UB2@DD#8%NX4+X]HUE1FL1%_!M( +M87(E1D429@9"&/73/CO?_FD7*\T&?O.IG08=3HT+%)NZ_;I:3AM'5,<91I^. +M$W6")$,\3)1)(UC2!C4ZD,R7+JC:M\N3P*J?(TYX]0]K#-VJ(OJ":D1H"ZJY +MC"X)#R01:I(`,P_"I.M[NQ2Y_>8WAXK!TP%TLT:QI]R;JX\4,4.U$"W(=$;4 +MD\':X,E031`!A2)LT=%@PER`5JU=1`11MQSI0*E<&+;+)4,0N]Z>`.O:4D8A +M^%W]$:H!SS,*PI!W]L;_SG-^O..T_7<X=KP#@/X=DO/O1%K^.WS-OR.4_#MD +MQ;^+L-U/E03`.K6W^@`JE=/H\;4*@_([')/?49'\3K#'^UON$?9WCS,)PHR1 +M@WK?CPU8A_3(XP+(01SV&$[F<)Z@YRER'JOF8SR4GRH)@'5J[^T!5"JGM^-K +M%49DY/$6^7!+\OC=WW*/L+=[G$GCS'A[W&>;TS8[&^]U5'[UE1OJ!"C@4.R! +M[-#V:*>\&CL@Z(WAIA"@-RF\%88#^D1!*%!#&!$+9LH,>$6;A$!@-4V3`[RJ +M=J%<6T`0S7L6**#W;+GJ("0V1*44@LJP4<:<MN=S_BI++X^O-KLTO_W/(!X, +M&WG*&]-T"-`QN(&QQ[A_:_LPQ1761497A(`2RX3)Q@BPF(,`X8LIV/%`9M%4 +M0C/#($_"I@9)K(ARP]%8C"L.Z2\60TR;L;A@ZIEH(!23UHDG,\%,R_;%K9*F +MLRBFK0)@6CLA)M(:/WBF=2,`=;`VMO@6-EP6)HG42=.MB2Q2`H&%41OR.%FT +M1$;A">*012$RA"V,!"B":$#=PF,[D&I);4&J#T%U%#R38E5(X6?H!_DV*R9Y +M^\<GU3\*'=3]D<VJFP\\I0R#TBA4_*ZEO[)EQQF3EZY[J'.T=`EC&+1:=@UD +M[/>Q>M0'U]2=84*SUQ5^/2=8"U/6%KW7P[SM]4]RYO8)HX7,2)+>%J/$Z&UK +M[5V+Y_L"G40NXV=?0[5.[I]VR>&X;_#>_.?2==(.RUTFS:;&.NG\Z%AIYSG" +ME6$LW$FO#F9T`U?:*P,TY'T[K0#37F9)C#G<P-Z[+(;@'I;')EATD;/20MW$ +MB0MU8QSSYT[_(+F_Z%IJ=9/MM^7-9>=]WC8`]6^+UX\V0$`)J=N;ZTCWV".0 +M-O<Q#)F#!*B/_@#=6SDKI3=H4[EHDPZQ8J98-7LEM&W$WUH`-11D-1AQI`?7 +MSJ3^=FXP]2V0G<:#2@JS^_BVYFH=WG[?-9VH_/>EJZX:D+O6RNV,-59[T)E5 +MS6V$5;W)N^NA'8#]5U?^-X,RY'TUB0"SG17]868VG<&CW(1T`E=VFBA0!\E: +M_>WOSJIOM\01?HZ,#I+@LZ^96@?GR]VY/5BH_F/I.JB'Y"Z#:D-C'30^=%#4 +M\QLA13\"[K3N!C'RLRNQVX$9,KN>2H")S5T$0YXVP/8J4R'(=N>J"0!-K*P$ +MZ#9P(J#;%,?MN1(\2'8OLG9J75SR0]+@N_SWI6NB&I"[(,KMC/50>]"I4<UM +M!!J]R;OSNAV`_5=75C>#,B1U-8D`,YH5_6%F-L#V*#<AN'9EIZG@ZR!9Z[W] +MW5GN[98X4L^1T4%2>O8U4^O@;7;(V^NQU7\L70?UD-QE4&UHK(/&APZ*>GXC +MI.A'P)W6W2!&?G8E=CLP0V;74PDPL;F+8,C3!MA>92H$V>Y<-0&@B965`-T& +M3@1TF^*X/5>"!\GN1=9N>.?9YNWAN$O?GO7[)MN_+ETG_4%"[T9K+4;N2E.\ +MFN[EZV+@O*?/$"[H?6?:0"';P>Y#4P=OO1^M"T"`]3/A&HY5B7Z?IK=U`K]O +M$U<I]GL`E5`[[@74M@3>$ZC94.[O]*/.@NQ4WN;`!^7S`<4!RKG9I'O0H?QS +MV=6ZC90?)`J6]@P38-!Z[7;;]W-V8*G4,&`O"C'-,;)!TQ%1O2:1P\=L/UJC +MMBFU9>J.T"+%2GWJ9XD5AU1@V3'#J\%^!YVJ"@<TM2R,&:C6C<>9:C6SM]:` +MRWBAKCMA(?N7-*5F;IXY;,?\M#T<FR/+\L?R#PO6O7V0`[U<;F?.W=)"U\LV +MK_I1B1*#D0,24Z0&.A<R/,AV+IVK#5F5N)89AU5J$Z[<6$4T1Y&>UX3A*%*D +M*DQ'$&J`K0</^D;.XP9]\]'#1E_+*;3>Y>.BFRNQG.(OM>Y4_\FS6FP&BJG% +MVL91C:UG`^N:6+AH-X@9IK248<*V!)57-_31`FMF'WZ!B:[C>+5HG<OO>L%U +M+US%6&'6AGL<9\IF,*`I!M0^YD6QQ=#/?$F"D4J]VYX/]\/>5OW9QWJM!XRN +MV,H.4K7-'FR,K&,#XF0_CN@R[(8-WQI>CNU4W"591R62HIQBC=U5-NR)WM<9 +MH3>B*VT<C\U2`!#9;8K`9&?$ZI>^%6HT_=/#)!FI]/OT]&[83LN_^ECEU7#1 +M)5Z:02J\]F_#;!47$&5[(4379SMD\,;PZFRFX2[.*AZ15*;XXCKK:MA`/:\L +M0OM$UM8X%^LU`&"QW1)!Q=:&U3E]JLQHNJ9GR3%2V?NG4_YN\Y1G^_VP<:H_ +M^ECEVN#1I:Y:0RI>WYN-NUK,0/@U1QE=R/WI8&W@9=V;HKNZM<A%4N+S9`.T +M<H>M.:C:)31J5O6.DUE?-`"@^P8(3O=-6;T\%`1$T^<#2JHQDESS;'N?;XJ_ +M_F!0`=K/7K)$GP">)9H]B":]/5KYK\<.U@$L\<;C8#`MO!4""?VI`J"@1S$6 +M*,R8&_"J-BB$T.J:HA*XE>V`>F\)(5@?F&#`/C#FZ87``!&/;@@OR8"DN7O_ +MZW$%46S@.VO*2;!84WC`TJ;:*Z1;E#%$]PL]\BQ8--.CV-&`44\9AXPRHA$B +M8YY,P53\N+H(IN:9"H-<]?`&4"THL@4T1L0FT)B+:8V0\!&EY@@LZ8`D>LS> +MCVN/8@/?.51.@D6AP@.60M5>(1VEC"&ZH^B19\&CF1[%C@:/>LHX>)01C1`= +M\V0*IN+'M4<P-<_4'N2JA[>!:D&1;:`Q(K:!QEQ,>X2$CRBU1V!)!R612WH$ +M0"&V\"`0"-Q,2+U$3G00H4%F!@49D0J.Z5,$4>,.L1%&E7.E!JW.$<RG()]' +M?&F5$0@OXE08X20;D#R)Z\Q&$L!13L(^LY$0CG$2\/%J0CI>3>3.;"3$0Y.$ +M?&B24`Y-DDC/;,R3*9B*'Q<;P=0\4VZ0JQ[>`Q+*06;".\A,I,]LA(2/*'5' +M8$D')9%+>@1`(;;P(!`(W$Q(O41.=!"A068&!1F1"H[I4P11XPZQ$4:5<Z4& +MK<X1S*<@GT=\:941""_B5!CA)!N8/$];E[ZX;>$_>XII,-ES<X&G3[E?6!,I +MXDAH(UKXF>RHIT@RI/*CFC:6($5<HR3(3`F#JG^7]@B&`&S]068`IBV4ZXIN +M#+45N374]H)*)"R:1*I(@DL^,)E2ES!)`Z!2RI8E*8%(*;C'I*06D\I)DI3( +MD)2,D)1"D#12.3)'IF`JWB5%`JEYMA`A5CVF$Z241I#R^D`JK4'"P4>D^B.H +MI`.2Z.JXYG+U_VSLE7O-Y8H_%WN%GE"_4DZH7\6NN5QIYU"OU'.H5\(YU&N< +MUUQF2!%$C8^+C4"JG"DUB'4.9_Z5<!K\RCH-?A6^YA(*+Z)4&`$EVPAY'M+L +M:9MOCONWAN]-J#_Z2!QM\&C8J-80TNA[L_4*+6:@1F&.,AH,_>E@;>!(Z$W1 +MS0,M<I&@8)YL@%;N4#`$5;L$J<"JWG%NZXL&@';?`$'LOBE+&X2"@&CT0$!) +M-4*25_OD-&S^Y5]])$<U7#0P2C,(*6K_-J17<0&QO!="=#VW0P9O#*_@9AKN +MTJWB$4G%BB^NLZZ&K=GSRB(T8V1MC9.R7@,`(MLM$6QL;5B=UJ?*C*:;>I8< +M(Y6=GO)#>MR\V%Q.IWTV[)V]WWVL]?X4T#7?<P"I_L$^;1CNQP\$9&O0T=5M +MF!K!#%[QP^FZ:[\?RT@8,'.*(&I\V,<#K')";Q>H\W&D#U82`'>##0+S!FN6 +M&@B1%]&HAD"3S4V>KQSJXBO_N?,55UU\A:?.5]#6\16E=0R#3J7%5S1:?$6E +MQ5<$6GP5I[J8*T40-6Y5%R%5.5U=<.H<!/RO",#_B@7\KX3515"\B$U=A)9L +M;O*\=*B+E_YSYR577;S$4^<EM'6\I+2.8="IM'A)H\5+*BU>$FCQ,DYU,5>* +M(&K<JBY"JG*ZNN#4.0CX+PG`?\D"_DMA=1$4+V)3%Z$EFYL\WSC4Q3?^<^<; +MKKKX!D^=;Z"MXQM*ZQ@&G4J+;VBT^(9*BV\(M/@F3G4Q5XH@:MRJ+D*J<KJZ +MX-0Y"/C?$(#_#0OXWPBKBZ!X$9NZ""W9W.3YUJ$NOO6?.]]RU<6W>.I\"VT= +MWU):QS#H5%I\2Z/%MU1:?$N@Q;=QJHNY4@11XU9U$5*5T]4%I\Y!P/^6`/QO +M6<#_5EA=!,6+V-1%:,GF)L]W#G7QG?_<^8ZK+K[#4^<[:.OXCM(ZAD>N([ +M&BV^H]+B.P(MOHM37<R5(H@:MZJ+D*J<KBXX=0X"_G<$X'_'`OYWPNHB*%[$ +MIBY"2S8W>;YWJ(OO_>?.]UQU\3V>.M]#6\?WE-8Q##J5%M_3:/$]E1;?$VCQ +M?9SJ8JX40=2X55V$5.5T=<&I<Q#POR<`_WL6\+\75A=!\2(V=1%:LKG)8_AF +M1ON+QZRA?".C-4709>P3!UV<,&V!]0T,;0HH`W3=`]].W\4IKDJ?9N%!]6C5 +M`+Y7)+WO8VL2A%_@YP&TK?'(%?@6A<]5'5L']S5YW&2XLW;J.Y^Y<$?OU'<8 +M*MRY@7V'`_:=0*>^P];T';ZF[U`U?1=;IYYFX4'U:.W4OE<DO5-C:Q($VSL4 +M;.^(L+T3Z]1>5G5LG=K7Y`&0X3>?[8_WZ6YO[]CM%CYSHIL&F1:M"PPUE/VZ +MP-[%$05X0_C)+-"F2#+$LT&=-IP175PC(\6L"8.J?[M""(P`#,7`9`"L"2CK +MBF@&FA6A*6CV(LHB1)I$ISP"33XWF?;7^^0RHDN:WSUF4CL%*H\:!P@:=?MT +MM)<V?ICF,@PZE1[JU`AF:'(HTP5SHXUE7,R8*T40-6[5'B%5.5UW<.H<A/UN +M)>'05VWPR%>M)=1&4+R(366$EFQN\CP>=IO'X_;)KB^Z+3QFCS(-*GLZ%PCZ +MJ/MU-!$ECI@V8@H_E1WZ%$F&:'YHTP831(EK7`29-V%0]6_5'J$1@*X_N`P` +MM05U7>&-0;?"MP;=7D*)!$F3V!1)J,D'(%/V_F#X8I7VJ\\\JH9/)E%ICJ%0 +MO3]74ZGBAFHHO5"3>=%."6V$YT0S33@CJOA%1H?)DP)<QW9U$4@E,U0%L99A +M0*_7#@'SUH(`\M961$&$0(3H%$,@R>4FRVNK.GCM,T]>TU7!:PQ%7KO!_QH' +M_=<"*N`UMMY?XVO]-:K.7\?6]:=9>%`]6KN\[Q5)[^[8F@2!]S4*NJ^)P'TM +MULF]K.K8.K>OR>,FPQMKIW[C,Q?>T#OU&PP5WKB!_08'[#<"G?H-MJ;?X&OZ +M#:JFW\36J:=9>%`]6CNU[Q5)[]38F@3!]@T*MF^(L'TCUJF]K.K8.K6OR0,@ +MPWY_VASW;_?9YN&0[,_VQMW?T&=J#"9%1DC?$X8HPU&XV#^(,:H5V%>(#`_3 +M]#GV>+080@(GS6`%(L/.\AE&(8Q=B@3-&(90$:4,K!,-$P'1F$S&A#YE<B.B +M>6+#5G1Z*<*D=9,P&;W#(?']NFC"N\,AP5X536`7LQ/\Q>Q^J*F<22C7,Q/: +M]<P$?3TSB?$.A^F3`ES'5AD32B73!0NUED&43]`7H1/&1>A$]`Z'((@0FYH( +M);D`9'G_9'_98_FCSU0I!T]&2F&-(4JU-U<?*&.&:@-ZE,D@:*:#M<%CH)XB +MG`)EY")#P+39`*U<NR0(HG89@H!4O3!B5XN&`'9C0.!U8RJB!7Q'0'0Z(("D +M@I`D'3E)4/SH-4=2SBF"PAI%D11R+%C&#$?]5.3T0#,=K`T!`"GR2*",7&SE +M/VDV0"MW1`.$4+L<#4"I7B"N4^1!6V-`P74J>#[`=P3$IP'\3RHW28Y6`7#T +MF2!'>NL_8LAQ=&/^B&/\4:#='[&%?L17^1%5XL?86OPT"P^J1VM;][TBZ0T= +M6Y,@ZAY1R#T2>7L4Z^!>5G5L7=O7Y`&0H;P3('^U'6G9W28^DT*9"!D8G0\, +M.=0]N^BNQ!*%>=,:D)&@3Y-FB8>$-G4X+93H1@:-N?,&1P.[8`B.!PP)P28" +MK"^HRXMH$+H9H5/H#D3T1JAPB4Z3!)R$`%*EN\N3_3I#_;//?*HG0"9398^A +M4K-'5Z^I8X?J,_UXD_'130MOA<=&.U4X,NHH1@:+.7(#7M5V[1%,73,T![FR +M89AOEA"!^,Z$@/?.6$1?A`*(Z/1$0$GF)DV:[%SG/91-/.:-.A$J<10?".IH +M>W;T#366F-YA7`,J.GK3I%FB$:)/'8P1-;IQ@63VO,'1P*H]PN,!78/PB0!J +M$]KRPEM%SPS?+GH.)'1)L'")3:>$G(1N4OUHE2L_^DRE'^GBY$<,@7YTMY0? +M<9WD1P'A\2,6"3_B2?`C"@`_QB8JIEEX4#U:!8/O%4F7!]B:!''X1Q1^?R12 +M]T>QCN]E5<?6S7U-'C<9,FNGSGSF0D;OU!F&"ID;V!D.V)E`I\ZP-9WA:SI# +MU7066Z>>9N%!]6CMU+Y7)+U38VL2!-L,!=N,"-M,K%-[6=6Q=6I?D\=-!OM+ +M([U^@QOCM9"H-[0!7LN'?`^?Q*L=T2]%([P%#??:L^A>SSC-PH/JT=JI?:]( +M>J?&UB0(MKA7S%'?*2?WYD,OJSJV3NUK\KC)<#GL-I?1KS]W6WC,"64:5%IT +M+A#44/?K`+L21PS@3>&GLD"?(LD0S09MVF!&*'&-BQ3S)@RJ_JT*(30"T!4# +MEP&@)J"N*[P9Z%;XIJ#;2RB+(&D2F_((-?D`9+KLC_?I;D28-!OX3*5V$F0D +M-1XP1.KVZNHQ;0Q1+688>3)$U.E1[/`(4:8,)T@;T<CP,5^F8"K>+D6"JGF& +M$&%5/:P3=`N*:`2J$:$/J.8B&B0T?$2G/P),.C>)KN^MJN/VD\?L*09.9<[- +M%D&;<D^.GE'$"M,MM-A2D5!/`V>!QD`U-3``BFC%5?B3K3^L.JT*P?_ZI*L" +M?(6"H%PN$QS']>9X$->&$GW?VR*/K;_[G$1N4MC;N->48#1Q%"$`"$<27**! +MHTN;4-FXPHZN>4^S\*!ZM#9NWRN2WK:Q-0GB+0ZW5-K*=6POJSJV;NUK\HR0 +MX;3-\WUV--PQV/[B(Q>Z8:.IT)I"J*#LQP;L+DX@8!O"BJYI;0HH`WA-J]-R +MUW07IT@J>M*%!]7CL%,'4I&$3DVLR7'8*NL#@*VV-0*VFAVK4_M<U=%T:L^3 +M9XP,V>&8;Y+T^'BS>F7HU_KO7C*B-P4\)W0'(%KT]VG%>2]^,*C;@HZO_N'4 +M"&8($@RF"^!!+Y:Q,&'>%$'4N$$#A%?E%#W`KW,'WOLK"8'\T`:#^J$U3RT$ +MR(MX5$28R39"GG.^.Z1#45']V4?*U`-&HZ6R@Q"EV8.M&]2Q`36!?AS1Y=X- +M&[XUO+C;J;AKNHY*)(4\Q1J[JVS8UKVO,T(31U?:.$6;I0#`L]L4P<S.B-67 +M?2O4:'JNATDR6NG9X;0IPI@>]\?<<'Y]L(6?U=^?!@$#/1<P(@SV:T=T/XY` +M6EO#3ZAYPQ1)AA@2#*<-@4(_KM'088&$0=6_J>D'20"2%!!A@(O]@W4%M0&# +M%:HC&.R9"B)<FD2D-H).OC$RO7M*#L<WFYL[@RA1?O221NK@\1A2K$$$TO9F +M[2=JS&"MQ!AE/"AZT\':(/"@3Q%`!C5RL2!AEFR`5JY!3H14NQ01P:E>![VU +M18.`NV>`87;/E*<5`D%`/+H@G*0:(<E/^^Q\2`U?"FI^\)$?[:#1Y&@L(=3H +M]F(C?!LC$-V'$447N3I\S/;PXE:FY"[L-D*1E/1T*PZIP&$?#Z(&"?V;5(7C +MB.T6!H!7=6,$6E4S5J_VM8RCZ<T>)\T("=X>CKOTK>$"0?.#CQQH!XVF0&,) +MH4"W%QN9VQB!R#R,*+J(U>%CMH<7L3(E=Q&W$8JDA*=;<4@%#GMQ$#5(Z,6D +M*AS':K<P`*RJ&R.PJIJQ>K&O91Q-+_8X:3ZX!7B;W;\Z_+3_1?>OU=B;_]C> +M)T5#5K94?V'1H+=+/!&@P]>@H!AU:3YFWI$!O+\.V;:X69CM#+-6WZ2IH(W& +M*MT^O:;4H3&;M]IYJ;=T,H#KMFCC05=NKZ'/4+M]2EO7S(CID:U'.3UB9^WN +M,57_W-U^QOKW,J$@!+E_M;]_LWG:/A[N+0I`W<)[GFC3H5-%=8.BB[[_T::@ +MQ17>',S+06=&?ZID8R1#>M-'L$2+<8Q$F3N)T)RP*(YP2<%1(#*L`#00?:VA +MC:1OA6TH?7L9I1(X=>)4,N$F)(A@3[OD<-S;5$[]J__<:J;!(%;M`D>K=K_C +M#:F)(Z(9#4+/X(HR-9(AEB?==#$L:6(9)45F2!14O=O42G`5SU(IK)J'-(-V +M/<&-0+%`-P'%5DB1A$6.2!5(,`D'(E#V[I2G-L%1_>@_?>I),-!3><"1I]GK +M>`^I8XAH(?VH,X#138MBA\5%.U4,+>HH1HF*J3,$4^$VB1%8C;,$!J/*(;1O +M%A(,^\X`S?K.5$A;A(.*2'5%$(D&(<[^F&?O+)*B^LU[VM13H*.F<H`B3;// +MT691QP_>*_H!IQ.BFQ+!#,F'=IH(/-3QBY$-TZ8&HJ8M(B*LJN9("'I=`[C> +MK"`4Z]WV6*IWEC+J(1`VQ*D<_$\P,&$V]^GIW>:<;_,Q_:!L%09SU&DQV:.X +MPE-(&X>[F:AQ1K85XQ(Q^=*;.LL!A3EZ.+#T46,?+8462C`27\:T3-"$8>L; +M,<9`6Y*6!ZCFU+,DM:F>#T%%%`^Q(E9.420LG(#E2RFR_3E-?MIGHRI+WS(0 +M#O:FQR6A[HY`P_YX`$VQ%W=L8[0M&Y=EPU"PG9"8-@@/FFN]-8F7;,LG'YE+ +MH^HL!C+Q59HTF\#-KY\CN`8XM*8UP:$?2>46+>UB5G(Q)C2<H.?3-CO;;A[6 +M-@F$F,V$N*"L_1`(V8X`T#F;V&);YF!-N.A2IDNW)L&J"P&:4DVDXX73K+F$ +MI\:HX`J3&WR)Q2<'N`>U2XYK/HH9K>LH#B3U4]`0BEDCA9J8"**Y+A^&=%Y? +MYJ(A]5P^_$H.[2*.\`5"SIEV^DEV\OGUV"\&SI0]6#*,*YW@V""@<EAT@#<2 +MRN42YI622:[J!8F9J#5-8(F((5;VE.X<)W7J;8*A5CTE/K8J1R1R-6,`-:<Z +MOOC^U%\8/GFZ*3/,B?QIPT!`4!WOF!DT;TH1&.(0/F%21$+^\#F"Z#W-RF/; +M3V='[4"=!UDU%#B3XE9&X28HG'#7;9Z/W\M4;1$(V^KI<+E6N2%0K=D_H)'5 +M<<6VL?YR<!G4395L3.)/.WTT?>H8QTN>^9((S8E1'10B*?@:B,L*<'MIUAK7 +M7#HK6FOI["653[#4B5GQA)B0$((][O/=-K>="6I^]9Y;[33HQ&I<H&C5[7>T +M(;5QA#>C8>CI7%&G1C)$\D29+H(E;2QCI,@<B8*J=XM:":_B.2J%5_.`9M"M +M)[01J!;8)J#:RBB2P,@1IP())^$@!'K:YO>O+'JC^LU[]M13H'.G<H"B3K// +MT?91QP_>//H!IY.BFQ+!#$F)=IH(1M3QBY$/TZ8&HJ8MFB*LJN;H"7I=`]#> +MK"`4[-WV6*QWEC(J(A`VQ*D>_$\P"&'24WY(CV>+;FA^]9XQ[33HC&E<H"C3 +M[7>T2;1QA+>)8>CIG%"G1C)$LD*9+H(6;2QCI,4<B8*J=XNF"*_B.;J"5_,` +M]'?K"86_:H'%OVHKHS`"(T><2B.<A(,0Z+3-7XV=J^A^]YY!RE3H#.J<H"BD +M[GNTI2CQA#<5TR+0*:)/D6B*)(DV;01+E+C&R)+YT@;)`HL>"9,&'$W"YP&@ +M3:BK"VT4N@VV5>C6,NHD4*[$J5+"2T`0H4Y/NW^P*97R-_^Y5$V!0:32`8Y& +M]3['6TP5/T1[Z06<08YV2@0S+#&::6)H4<4O2DY,FAJ(FK8ICJ"JFJ4TR'4- +M`7R]@F"XM]NCP=Y:"JF*,-@0J8KP/L$@A,GN+)+A]H/W9"D&3X?*S1I%E')O +MH[V@B!F\$6@1ID.@G@;6!EG^U=00M5]$*\:RGR0+H)5J$0*AU"I'`E"J%<#F +M<K&@8*XWQE*Y-I/I^1Z7>YQ]WL]$`A%CO]W9NGOQD__,*"?`8$9ACZ-&M<=Q +MOI>Q0Q!>CS6C])OIX*VPY5]/$0.`,G)1`F"ZG(!7L:WS!U3'K.Y/K&0(N*NE +M`Z.[V1P-[\902`?X#X-(]8#7B04ERF:WS;>;PS%/-P]C(D'?+@C2]*;&@X[N +M#$V@_EB<3:07;UQ'L2T6CS+#$#!=$/@S"`L21KUUB)5+RZ8;D3TCTB9\^G!% +MCRQ_@%VKGQ68%C:TI?2SH1<YU10AS^)56G$E,)R0A_.;^HT>#UGZM'DX)+8W +M=-BW#X27QJERJ6ER2J"G>6R`MFI<#VQ['5]4+@5M(1)R1:*B)6QH.AK7+5Y& +M^IBF3-:-JL+8:,=7B5/R#MQTS=F$:[XV'[0F;/,FJ297Q]&8U>::"@!'Z%-Z +M/ER=&K3:*B`6U].2X&_EBDC=9AS`IEW'F=*J^TLDP;]NZBP'9-:UX2`1KHY] +MW%2;/\%(?''JOE`)(Z/Q)!B#:F=-'N";6&=);UV=#VG%%@6Q8E=BH2<LCH#G +M?5Y\SNFXVV:[39*F;RXGI]XRV03$1N.4)3AI<DRDIGF,P#9J7!]*4QU?:`DB +MVD(FZ(Y,2TL82>PTKF?<'/4YA048Z=2,,5)21D].S4E4ZS9G&KZ1V_S0V[K- +MH[0J736#8U>S:RT0,.'WUSS;WMN^L:YM$@:]VPDQ4=WXP9.Y&X&[V[>Q13;W +MX9HP4:A.EVY-`9T2`BS7VDA'"[%Y<PE/C3$9&"@WV")/@!S0#M4M.:HAJ6:D +M_J,Z$-1C84,H8BT5;&*"B9:>]D?'8QG-)F'PK)T0DV:-'SS-NA&X>U<;6V3O +M&JX)$T'J=.G6%`0I(<`BJ(UTM`":-Y?PU!C308%R@ZV#!,@!;3?=DJ/:C6I& +M:C>J`T$=%#:$(M9!P28FDFB.1Q^ZC4)BFL1##ITG*M6@]XDK,2;U,=$'%_1I +M<^SI4"+>3ZM$/7(LS9M9%**X55*03!%22FRJX)H2X49IW9#1F"9X)B`.1$6O +MG0).5#SQCMLGF(XJ-PR,>]7DI,A7>F/0KQX-HOM5,:=VP-Z*2<&K#0/7!PMB +M36C((*M6(WZ4+91U5!*!]%>X+)+383(T0K>Y.CEHK:XUYK6[ULT4VBPJO*U! +MJ\62R#AB/NV?TNR=4[G5FP7$RF9B$IRL?1$IV8X$V#N;6%,ZYV"=)'"F3)_G +M@8RR+B0DD#4K$#?$%LDS&FV<ZBQ<WL@H,QGBH)I9FP[X5J:8TAN9XD1:CT4# +ML-AU6`R)"R9B<5-[^TEC.P_5S<+@H38Q)@U57W@:ZB-Q]T4MULB^:%XG)K[Z +MT^=YH."K%Q(LOK05B!9>R^49C39C^BMPWK#UER!QH&U,3P=4&^N;DMI8WXF@ +M_HH+8!'KKV@2%T[$R^F49GEQ!BW?9YMMDHS*L.'6@=#1,$TN(H<N":0TC0O0 +M.@WK@.V@8TO)Y9TY-"*.2/0SA@L-0<-:Q4M"OQ*3Q;-1H1<3T?BR;RJF@7NI +M*7]P+=7L@=99S;XDE>%J2!FS:EQ#PE,)?/?^</HU0E-6VP?)X'JJL@RNG+(I +MW(P-W<+K]>`U\?ZBRE*S"Y&0*P%RMF%CLK->M[6PTX\T9;(.H3?#IYVTYI3E +M';$--]G$:<2=#XE6W'F;3GVN@*/K4:%Q%P"5T,5*9OOS^+5FBTF0E.XF+(OI +MUB^;U,H(T5V_6QM>XS>LL2Q:M7#)>1,`K!I")F.[E5P+9#W+73X5$=(U%BY* +M"]@IR$CLXDJ*<1JYYD:BEVL.I].S*X/N>K3M>@J#2O3'[":7$2*WVCY(DM=3 +ME85XY91-\&9L:'%0KP=/&?0759:N78B$7`EPM0T;$ZKUNJV%IWZD*9-U".D: +M/NVD1:LL[XA=N<DF3DON?$CTX\[;="IU!1Q=CS*-NP#(A$:*T7#I/(44E2$S +MM<-+-/A)9:@</:7@*<3.=4G0Y?.31S>,_`R<;^+B4Y!PU,XKT'A%^^X,NC-N +M<*Y(<T:;^%0B)\BSGTFXYP.2*<Y^)C)G`Q+J::5$XK12?U%EZ9G(';4G4D?M +MB=!1>[*NLY]^I"F3=0CY&3[MI`6H+.^(G3@1./F3B)[\268X^[D"CJY'B<9= +M`&1"OT]18K38/$PZEQ,51G/ADT_F:F3X#E^N!;/!Z^LIC,\F/#*>).!9AXS+ +MSG+%5@/.Y?.31S>,_`R<;^+B4Y!PU,Y;I1&K\38N1/INXVQ"W1DW.%>D.:-- +M?"J1C^EQ]"LTILV#Y'$U45D:ES[9-*Y'AN[GU5KP^GEO/66QV89'QI,`-IN0 +M,;%9K=A:H.E!?O+HAM";H?--6F]*$H[8=NLTXK3=UH5$VVV=3:<W(P?G>O1F +MO(E/)?(I2Q^S[1-"<C8605*YG:XLEANW;#)WXT.W]W9=>!U^N+RR+%5#)>9, +M@*A*^)A0;==P+53U*6G9'$2(TSA(*"U1Y5E([-==;G%:MNI%HFNK_J93K"NB +M['K4ZSH*@DKP[(11L<7607*[G*8LL0N7;%I7XT(+@'(=>,U?7TI9CC:A$7$D +MP,\Z7$QVEFNU%FHNG9@LGB'4:-A$DU:A<DPC-MLJ?SB-MO$@T60;7],ISHA) +MN1Z%&6?"4PE\N2`$Y6WC(.E;3%(6O3>/;/*6HT+W[&(->"U;6T590-9AD?`C +M@,<J5$PZ%JNT%C0NFI$<@B$D9,@,DQ:04A0C=M,R<3C-M'8@T4MK5]-IQTC1 +MN![=&%^B4XE[?8_0C+>-@^1M,4E9VMX\LFE;C@K=H8LUX'5H;15EP5B'1<*/ +M`!BK4#'!6*S26K"X:$9R"(;0C"$S3%HS2E&,V$K+Q.&TTMJ!1"NM74VG&2-% +MXWHT8WR)CB=NFCUM\\T_0%]XI&P>&'/5B4HQ5_')H*XV,D2O5M>"VJV-ZRF% +MR5YX9#RQ4*F'C`Q+=<7BAZ4W^<FC&TA1QL$W.54I3SATP]72B-9R>RYX3;?G +M;`I]N0IPKD%GQI[X5"*7W[@'X[C\CGR(-"ZG*8OBPB6;Q-6XT*V\7`=>)]>7 +M4I:736A$'`G0L@X7$Y;E6JV%E$LG)HMG"($9-M&DY:4<TX@]MLH?3HMM/$AT +MV,;7=,HR8E*N1U7&F?!D`F<809D%2M],7$YF`N3-2#T[8[?L;#HIF0GQ,1/! +M8R9!QVQ%,G+)C.00#",A`V:8N(`4HABUFV;<9IK)]=)L:NT8)QI7I!NC2W0J +M<>_>;>[3'>QEE[I%D.1MIRL+W\8MF\#=^-"MNUT77O\>+J\L.]50B3D3H*@2 +M/B9*VS5<"TU]2EHV!Q'R,PX22@M1>182.W676YQVK7J1Z-FJO^D4ZHHHNQ[5 +MNHZ"H!+\?GN'4+'%UD%RNYRF++$+EVQ:5^-""X!R'7C-7U]*68XVH1%Q),#/ +M.EQ,=I9KM19J+IV8+)XAU&C81)-6H7),(S;;*G\XC;;Q(-%D&U_3*<Z(2;D> +MA1EGPI,)?#JD&$E9;!XF@<N)"@.X\,DG<#4R?/<NUX+9OO7U%,9E$QX93Q+` +MK$/&)6:Y8JL!YO+YR:,;1F`&SC=QB2E(.&K/K=*(U70;%R)=MW$VH<Z,&YPK +MTIK1)CZ5R/NG4_X.(3BK[8,D<CU562!73ME$;L:&;NKU>O"Z>G]19>G9A4C( +ME0`_V[`Q`5JOVUKXZ4>:,EF'D)_ATTY:@,KRCMB)FVSBM.+.AT0O[KQ-IT)7 +MP-'U*-&X"X!*Z,,Y_>^_^<TO$7JTL0B2T>UT91G=N&53NAL?NN&WZ\)K^</E +ME66J&BHQ9P)<5<+')&N[AFLAJT])R^8@0JO&04)IO2K/0F++[G*+T[15+Q)M +M6_4WG7)=$677HV#741!4@B>OM@@56VP=)+?+:<H2NW#)IG4U+K0`*->!U_SU +MI93E:!,:$4<"_*S#Q61GN59KH>;2B<GB&4*-ADTT:14JQS1BLZWRA]-H&P\2 +M3;;Q-9WBC)B4ZU&8<28\E<!/>;;'/#-?;1\D@^NIRC*X<LJF<#,V=`NOUX/7 +MQ/N+*DO-+D1"K@3(V8:-R<YZW=;"3C_2E,DZA-X,GW;2FE.6=\0VW&03IQ%W +M/B1:<>=M.O6Y`HZN1X7&70!40F>H%W]FH;XU+Y-_]6<F\=:\C/:JQ8S_KL5L +MPM=_9E(ON<MDWG*7B;SF+EO3*T"73DP6SQ!Z,VRB26M-.:81VVS&?D5B)OB. +MQ&SRMX%&3,KU*,LX$YY.X+<H1?DV5/Z^E5>4;R7H^Y;6N-_R&_?;"17E6RE. +MOI7AY%L13KY=DZ)<-C%9/$,IRI"))J\HI9A&;K!OV0WVK6"#?3NYHHR6E&M2 +ME#$F/)7`.>H<91[J$7TN?XXRESB>SVFG@G+^J:!\PG.4N=21=RYSY)V+''GG +M:SI'N71BLGB&4)1A$TU:4<HQC=A@<_8IFUSPE$T^^3G*B$FY'D499\)3"7Q% +M*<IKJ/R]RBO*JP1]K[3&?>4W[NN$BO(JQ<FK#">O(IR\KDE1+IV8+)XA%&78 +M1)-6E'),(S;8*[O!7@4;['5R11DQ*=>C*.-,>"J!WQ]."$59;!TD?\MIRM*W +M<,FF;S4N=.,NUX'7N/6EE.5D$QH11P*<K,/%Y&2Y5FNAY-*)R>(90E&&331I +M12G'-&*#K?*'TV`;#Q(-MO$UG:*,F)3K491Q)CR$P.<\.QP?+0*R_M%[NC:3 +MH*.T]H`B9[O7T1[;Q!#>4@=1IP-+F1;%#HFC;JH(^C11C!$UDV<(IL(MDBJT +M&N<()DZ5`[I#NY#09J`88-FOF,IHFX!0$:<N"2/1X,39G$^W?^0/H]JBW2@0 +M_G23XE*H]42@D3(*0&?I8HSM,(;5X0)&FS;'G@0<-11H\'11CQ<_"V06A2BC +M6B9<IO"UC0Q5P"U(20!<*](,:2U)<R&I@:)`5,P:*?1$A1#ODA\2BW(J?_*> +M;=4$Z#PK[5$4J_<XVK>JV,&[52_6=+2TT\%;(3'23!$!CRIR,0)CPIR`5[%% +MK814QQQE0JUD`-SKI8,BO=T<"_+64$9G!`"#./6#WXD%(<I/ARR_;&W2H/G5 +M>ZJTTZ!CI7&!(DNWW]&6T,81WA6&H:?S09T:R1!)"66Z"%"TL8R1%',D"JK> +M+2(BO(KG2`E>S0.XWZTG%/VJ!9;^JJV,L@B,''&JC'`2#D*@M]DAMWTUH/K- +M>_;44Z!SIW*`HDZSS]'V4<</WCSZ`:>3HIL2P0Q)B7::"$;4\8N1#].F!J*F +M+9HBK*KFZ`EZ70/0WJP@%.S=]EBL=Y8R*B(0-L2I'OQ/,#!A-KO#^<UF>V\[ +M7=';*`SB*)-B@J?SA">0.@IW'U%BC&PHIM5A@D6?-L>>@AHM%%CF*%&/%CU+ +M9!:%*&/B)6"FL.6,$%6@_4=-`%0CT@U)'4EW(:A]XD!4Q/HH^$1%$N^4G@]7 +MMXJJ-@N)>?7$1)A7^:)2KQD)M.?5L29UO?XZB>"JFS[/`QU9;4AHT*I7(')H +M+9%G--JX%5:PO!%262+$P36P)AT(+:PS932QSHFXWHH%8-'KK@@2%TG$\S[? +MG//M<;?-=ILD3=]<;"_=<1B%Q$KCI$6X:?),I:AYE-#N:EPC4J\=7VT10-K" +M)NF/#D]+*&DH-:YJY%CU.Y,EB.E6E%$R4TAM3DY-7$,W)QRAO=L<,9J]S:6X +M9ET[DJ/7NBLN%#CQT]/^N'G8C4KB9IM`:-Y.B8ONQA&!U-T8`"*@C2^VYP\7 +MADM&=<H,<Q+WE#"@,=?&.UZFS9U2!(:,BL10*<*7@!(<`?>M;N5Q;4JUHW4E +MU8.D6@N>23$KK9`3%$NX0S)Z-[VR55",*Z<EP[C"%9ERU3C`S:V,,ZV]Z4LD +MPZ=FZBP'#$;5X2!2JHQ][)2:.\%(?`%HJ#`)(Z6C^(Q!MJHJ#RC-JK'DM*O& +MA[RBBH!8\2NKL!.60,#C]@FHLLHM0^-@-3TQ$I;N.#2LQX-IBE7<R8VQMVQB +M+&M#P7;"8UH3'CK7JC59`=D62SXREV#J+&`R":HT(3;AFU^=(\0&V%HSFV#K +M9Q+E%AOM5J'D(DIH)$&?]D]I]LZMZ^KM0F)G,S41;M;.J-1LQP)MJ4V\20UU +ML%@B=%-"P'1!)UL7%AK7FG6(G&D+I1N1/6[M%C!]A'2;$']P+:[-"D*#4VP9 +M[4WQ(J[68N)9]"HMD@2&$W*[VQ7B+M]GH^),V2P0.JH3XZ)1\44@HS820*=4 +M8XUME,9UXF*L-WV>!Q+$])"@&::N0+P`6RS/:+09E6-A\X8OQN2(`^YD6CK@ +M&EG/E-;'>DXD=5A4`(M9@\62N!0B;NY^\]G^>)_NQB]_&@V"8Z0Z63E6*EY9 +MU-1&A^JDZIK0>ZIQ9>4@V`N3E"\F&/70,1"IKMX:4.E5MG+)!U2%L;!/4BE. +M03]"$]:2BMJ.>TZXC;GG;AIMN2*LKD.#KJ,0:,1^MW'>J&?8/$!6-Q.5Y'3M +MDTGI=F3(GM^L!:?C#]93$J-*>&0\L1':A8P%T&;%U@%/+_*31S>P&@V?;[)* +M5)9PI.;;IA&]]2HN^(U7<3:5_HP>G&O1G3$G/HW([P^G7X/59KEQ@"RN)BG) +MX=(CD\+UJ)!=O%H#3@_OK:(D*-NP2/AA0[()%0N1U2JM`X\+9R2'8&!%&3;# +M9-6D',5(#;5.''H[;1WPFVGK:BH-&2T:UZ(=8TQT$G&+I<OVYS-4-K;;AT?= +M;JJ"V&V=\LBKC`W7L+OU8/1LPZ(*TE(+D9`K+C/5L'&PV:W;*KCI39HR60<5 +MF%'03E1FBO..TH.5;"*W8<T'NQ-KWB92G>O@Z$H4:/0%0"+T8W93M%`I6FT< +M'IGK20I"N?+((W(S*EQ?K]>`T=3[JR@(S"XL$GZXJ&Q#Q>%DO4JK0.32&<DA +M&%1@!LXP46DI2#%*3VT2A]Q0.P?L;MJYFDA+QHO&E>C'*!.=1ER,9`R4MN*" +M48"TI.;,[LW3B44A((KP4`*'*Q**2Z8B@UE@D1@RM60EHA2W2'V3VS;ENN;4 +MZC!*%JY%&<:6X"3")I@SB4F@1^&)^)G$1.`8/"&=MTG8YVWZJR@(Q$3H<#D1 +M.5Q.)`Z7DQ6=25PZ(SD$@XK$P!DF*A,%*4;IHPGW!$LB=X(EF?I,8KQH7(E> +MC#+1:<1]G\(E8[%M@+0MIRB)VL(AD[35F)#-N8P_IS?K"RA)Q"8D`F[8/*S# +MQ,)AN3[K8.&2J<A@%E@DADPM68DHQ2U2WZPRAMXV&WM^UVP\3:4.HV3A6I1A +M;`E.(NPQ/8)?X5-N&QY?JRD*TK5TR*-K/29<*Z[BSVC%O044)&$;$@$W7!(V +M8>*0L%J?57!PT51D,`NJ"H.FEJ@J%.,6I6G6&4-NFJT]NVFVGB92A7&R<"6J +M,+H$)Q'VE*6/V?8)*@R;S<.C;#M10<PV/GFD[4:&Z\SM6C":\W`]!?&HAD?& +M$Q>22L@XG&Q7;!6@]",_>72#2L@(^"8J)(4)1^FV71J1&Z[J@MUS56<3Z<KX +MP;D2C1EUXI.(?+G@/GO3;A\>D;NI"@*Y=<HCLC(V7%/OUH/1U0V+*DA/+41" +MKKC\5,/&`6BW;JO@IS=IRF0=5'Y&03M1`2K..THG5K*)W(HU'^Q>K'F;2(6N +M@Z,K4:+1%P")T-?W4!UZVS(\)A?3$V3QS1V/PN5X<(V\B#NCA6O+)LC&.A1L +M)UP>5N'AD+!8DU40<*'D(W,)JAF#)9.H3A1A$Z4UECE";HJU-;L=UGXF4H)Q +MT6XEBB^:A(83]+S/-P]I]K3-1V6=LED@Y%0GQH6FXHM`3&TD@&ZJQAK;2HWK +MQ,5:;_H\#R2@Z2%!TTQ=@7A!MEB>T6@S*M;"Y@U?ILD1!]S/M'3`-;.>*:V3 +M]9Q(ZK*H`!:S%HLE<2E$W/R#Z[4U_6V#(V,]13DX5@Y9A&S&A&J8=?SI7;._ +M@'*$ZT(BX(;)NC9,#.#5Z[,&YBV;B@QF`:5<V-22%'5RW")TR29CJ*VRL^?V +MR\[3-&HO4A:N0P'&E^`DPFXSJ":\;1D>6XOI"7+UYHY'U7(\N`9<Q)W1?K5E +M$V1?'0JV$R[WJO!PJ%>LR2J(MU#RD;D$U7W!DDE4\XFPB=(.RQPA-\/:FMT* +M:S\3*;VX:+<2A1=-0I,(>O=N<]P^C3_68=@\/)*V$Q6$:>.31]1N9+BNVZX% +MH_4.UU,0AVIX9#QQP:B$C$/'=L56`4@_\I-'-ZA(C(!OHG)1F'"4/MNE$;G9 +MJB[8'5=U-I&.C!^<*]&642<^B<CWIT,*%9OEMN&1N)JB((1+ASP"UV/"-?`J +M_HSNW5M`04*V(1%PPV5C$R8.&*OU6043%TU%!K.@$C)H:HF*1S%N4;IGG3'D +MUMG:L_MFZVDBM1@G"U>B$*-+<#)A-\?]VWN,-*P,PB1M/5EAV%9>^<1M1H?O +MT?6:,!MU?V6%8=F%2<J7!#;;T''96:_>:O#I2[9RR8<1F!&P3UQJ"M./VI.; +MI&(UYLZ)2'?NW$VH0=>!U17ITN@+@43LPSG][[_YS2^A2K79/#Q6MQ,5Y'3C +MDT?I;F2XGM^N!:/C#]=3$*-J>&0\<1&JA(P#T';%5@%//_*31S>H&HV`;Z)* +M5)APE.;;I1&Y]:HNV(U7=3:1_HP?G"O1G5$G/HG(3WFV!]^?66T<'HOK20IR +MN/+(HW`S*EP7K]>`T</[JR@(RBXL$GZXD&Q#Q4%DO4JKP./2&<DA&%11!LXP +M434I2#%*0VT2A]Q..P?L9MJYFDA#QHO&E6C'*!.=1-S3]@I5C,6FX;&VG*`@ +M9PM_/,I6(\+UY3+VC*ZLKYT@"IMP\+UP,5B'B`/!<F56`<#E<I!.*:@J#)A3 +MHHI0B%24)EFE"KE%-N;L!MDXFD@'Q@>_E>B_J!*;1-3S*_B;>LIMPR-J-45! +MH)8.>42MQX1KO%7\&9VWMX""!&Q#(N"&R\`F3!P(5NNS"@8NFHH,9D%E8-#4 +M$A6"8MRB=,PZ8\@ML[5G]\S6TT1J,$X6KD011I?@),)>SCE<%E8;AT?8>I*" +M@*T\\@C;C`K7C^LU8#3D_BH*`K$+BX0?+A+;4'&86*_2*I"X=$9R"`85B8$S +M3%0F"E*,TD>;Q"$WTLX!NY-VKB;2BO&B<25Z,<I$)Q'WIW]`:,9JX_!X6T]2 +MD+:51QYMFU'A.G2]!HP.W5]%03!V89'PPP5C&RH.&.M56@46E\Y(#L&@FC%P +MAHEJ1D&*45IIDSCD5MHY8+?2SM5$FC%>-*Y$,T:9Z"3B/AXO"-%8;QT><9MI +M"@*W=LDC;CLN7)MNUH'1IP=+*<A')30BCKB$[,+%062S5JL@I`>)R>(95$(& +M3S11$2G*-$IW;?.'W%X5#^S^JOB:2$G&3<J5J,EH$YY$X"M<3EZ#).]56$A> +MV<2]$CKUE=FFKU.)QZL(#Z\",+SR27A=C6!<+@?IE(**Q(`Y)2H/A4A%Z9-7 +M7I.\2G7(Z[1Z,#[XK40#1I78)**6']V&\;3\MG5P/"TG*$C3YA/S]*2K1H3K +MN?7'Y,D]5U\[0?0UX>![X:*O#A$'?>7*K`)\R^4@G5)0W1<PIT1UGQ"I*.VQ +M2A5R>VS,V>VQ<321[HL/?BO1?5$E-HZHZ2D_I,>S4_0UVP5$TG9J$A!MG!$) +MVHT%V&3;>%,Z['"Q)"BGAH#I@LPW)2PDN+7K$#?7EDHW(GN<4BYD^LB(."G^ +MH+I<EQ7X%J?:TON;ZD5:M47%L]B56BP)/$;(AT.2[[-"T[W9G-+SH?\JP>'O +MWO+0,!4\!8=.0/0S[=O8!@WQ=+>_L47`4\D\1:(ID$+&:0/H8XAK3,R9/VV0 +M+.BII+!I0%%%<CP8:2*FU74U#[,-M&F8K7EJ)W"NQ*5FPDU`R/'<_IAG[S;W +MZ>G=YN[5P\%R)JF_E;>LLDZ+?A37=X4ZAAN.8_20?A!G^`&]?8GH1UNFJ;,< +M((^T#.%`'&<-8A\3E7Q(,!)?+&>+PB<,YTR1+&,`!]G#/(`>8ILLL0?8)A\R +MYX<B(U9<2BJ^A(40,-MO=YO=X?QF\_9PW*5O;5?KAMMYST##U.@,'#I#4=`T +MEM%6:(@WO!F.+1:=7N80,%T@"68,"X)AAG6(D6'+IQN1/1;]%0=].!I,GC^` +MMF;*"FAC,]MB6YO9BXP:BY1G<:JR^!(8=#_#J"8+AH4"^HM$/6#S([0\25U% +MI@^1.3321*V7YD@45+W;[EH*KN)9=RBQ:AYR,P>Z*7!:@;R""8P<<2J3<!(. +M?@<EX(2084/_J628'/<&2OHQF7$T@'MJJ8?IHRO&O>F1=QQE\$&Z[9%Q)&5: +MC2AQY4/644DT>C-W^"SBW\XM2R/P_;#$0VR+,>V.V(G.$D6,MTCU6)2)#+V? +MTRS:3%MX2TCC='AW=**(:-Z_\W9=1&\<7P[>'9EH2)F,"7=EXK!DC'%,-%HJ +MB="<&+GS.TQ2<._^YK,">`,NO,W8K"@WX<HII$BH$Y<*"C\A/RBC<LD/R7DP +MN^ZG0N`H&RH_+$LKX.`U1"DV]H)1K#LR0??6]1U+S"SMQA5A#1J4:6!MQA!A +MG5I#!F"T@L/!4ED`K=1"8@1<JSU!,7FU]FEM6RPCI.T;C[+9;F;5"+&4>X#] +M/]A$4H].BI\'PW_:'HZ]<Q?E=N7?O3D.&1FZ[=BC-+'G?&EL/.(8VY?Q<%*) +ME_L@TA1<VY$`=`I($Z#JUZ9ET/HC<0JNOA=9?F!M]LX7A%6=]G,#4]3GR&&7 +MNDJN@RU]6^@AEFX%.=(/MKX#[.!!)I"3$.7-KNEI?]P\[9_2[)VIDP^V\9L; +MPRD1"3)P!*>)80QV]`_C"VP#(PM#)(9QR@QS#$E,88!291COZ/BR6$H1&&)2 +M',%3A*Q$1#GB:C"&E0<U&Z,=JO$8/0BHF'B8%*'JB2)!G80KH[>]3S8/V7Y_ +M=]Y5[\7YU=ZDEJS;^LT[^Q2)U+,ZA--O9$SVUF>//[`%`A:02++1D`BXP9!M +M+$Q0PMG7)SK.>9>*#&:9U%ETU"*KM4FYY6J.(QD#:I*C]JAF.>I)0-6MAX41 +MJKY5)#B>L,>'\V<@25AN&!A9J\E)0;7TQB!J/1I$[ZUB3FV\O163@EX;!JX/ +M%NZ:T)!95ZU&_)A;*.NH)`()O7!9)"?Q9&B$[GUU<M`:7VO,ZWJMFRDT751X +M6X..BR61X<1T:K:0^"BCT:@TA'='6E<4UF`<.-&A1(91[!IKINS!DF%40X7' +M!KYFXM$!W%I(+8792B;10D%B)F:M$UHBPHEUVO:_$::[+7X/A%;E5+BH*IP0 +M2%7M&]"(RGAB^Y"^"%RZ-%,DFI+84D\;C98RKO%R98ZT0;)@5+R$1@.^=.'P +M`-POJM7%M8O&AM8M&FM)U1(<5V)6+"$E(()0@'NH`KL+0>R>*<8]!Z@;4\@W +MI,C?$\6\_L^Z[L^YWK^">Y[F3BD"0\:53J`4$5`\`AR!-Q[BK1S\6SBFNC<I +M>"9%K8H"3E`@X>J_;$^'S<-^FU^R$;5DV#8$WIFFR**>P2&6?L8QN5J?*?ZH +M%CBZ@"R264(BX`9/-G.8<(0SK4^DG/,H%1G,LJNSB*C%5&L3<0O6'(T9@VB2 +M%GM"L[1X$E-U:V!AM*HO\@3'$?8^V6^SS3[+TLRI"M5M`^*K-D4)NJH.B735 +MQP1LQ5K\*:W8O(`2).R'1,`-F82],)%(J*U/W!ST(149S'*JPABH):,*I;F% +M:IIZQN";9M^>WC3[GJ158=0LC%T5QIK@2,(^[9+#T7V>L-DN)*XV4Q,A:NV, +M2M-V+-"VV\2;U'('BR5".R4$3!=TRG5AH1&N68?(V;90NA'9XU9V`=-'2-$) +M\0?7Z-JL(#0YQ9;1X!0OXNHM)IY%K]8B26`D(;-WISQUB[-JLY#H6$],!(V5 +M+RH9FY%`.V4=:U*C[*^3",:ZZ?,\T"'6AH3&L'H%(@?8$GE&HXU;C@7+&R$Q +M)D(<7"=KTH'0R#I31A_KG(CKL%@`%KT&BR!Q<41\W.>[;>X^.]9L%Q`1VZE) +M`+%Q1B1B-Q9@<VSC3>F.P\62H)@:`J8+,L>4L)!`UJY#W!Q;*MV([''*L9#I +M(R/(I/B#ZFQ=5N!;FVI+[VVJ%VE5%A7/8E=FL20PCI!/V_S^U29]>]R[[VA3 +MMPV(D]H4)4BI.B324A\3L(5J\:>T4?,"2I"N'Q(!-V3B]<)$HIZV/G%SSX=4 +M9##+J>QBH):,PI/F%JI1ZAF#;Y9]>WK#['N25GU1LS!V%1AK@E,(>]KFKX"B +ML-PT.+I6$Y1#:^F/1=9Z1*@N7,6>WH1[:R>'P#8<?"],`#8A8O"O6IDUP&_! +M'*13"B@#0^:4I`B4(A6A0]:I0FV0K3FW/[:.IM%_$<)O'=HOKL2F$#4_/+DO +MURJ;!L?3:H)R-"W]L6A:CPC5<ZO8TWMN;^WDT->&@^^%B;XF1`ST52NS!O`M +MF(-T2@%U7\B<DM1]4J0BM,<Z5:CML37GML?6T32Z+T+XK4/WQ978.*(6DK%T +MXI1]W98!T529G@1*.W=$DJKC`;9;)>Z4;FM:-@GFZ:%@.R$33PL/"7C*FL1- +MNV63C\PEI]`+G4PR,D^23:A>J.8(OA7JUO1.J/N15GA1TBYV=1=;0N,(FNVW +MN\U]DIYO/[X]W+O/ZPT,`J+I<+(22!UX)9+5,#I@_QVN":4-CZRL!!R-89+R +M14:E*70D8@Y7+VYL>IBM7/(Y)61<[),1E-/1#]6-#4F%;\I&)_3>;'0GK3E7 +MA]78]>B:"H%'[$UZVA\W#SNT9FT-`^9W-_DI*-YZ%Z*Y,EJB2NC63$(M&#)@ +M"AAK893V*09G-;0BD.Y6>UVH]CC+I4B+ULAQL78:S3P=;5G204E&OH30G,E) +M"<WMU-IZ]3A?F_9><R&)=(Q#LC]N`7>+.LS#[QUM(";L'\T^9+M(-W*>IFG7 +M4E#9#/-C0NRKX9W&LW0+4$(NV0C:C%AE,PBC'F3I357]$?)[TB.`B0DN(6*Z +MM!63,JI+<4&C.I_I^.!OC6*8>.MN%7\K/-+QQ-,ER0^G9+_9;?/MILK,,^Q8 +MPFP:6A^R!$"L`YG]<[J/;<08K619.[).<N6"6"NPAU/>*Z\%6$-,Q[]EY5<` +M_I!R7H["L&."J#DL>"PP&XGQ4L26FD098G?'E"!VQY/H_K_!WI1<Z\7]6@N+ +MT%&.^VN^>77[MWVVV3^=\G<P33\T"ZV/&"8NUD&&OCG=PS12C)XQK!59RXRM +MNQC.S>&3]<C#N#&D=(0;5G@%\/8]KV5H"M/F4?)44)-/3E2\9#"E'U$NF%TQ +MI8+9Z23Z^V_`7HG>7GGA,#M"MGV+5]>%4<B]H)ST)'V@\"S5!:I14M5'N48B +MVD-?[4D`W81-TI\<G.M0RJ"Y7-658=FO3)8@)EY!1\',B=2S.#5Y`J!*.('V +MWS@2;/Z-R\DU\]J0O#JMO*)"(1"_N$GEUS!E7&T:&MOK"8KQO/+'H7@S(HQ. +MJ&-/5@?]M1-#:1<.OA<>-ML0T6%9K\P*`+ED#M(I!5.C07-*4'F*D0K?/)M4 +M(;;,SIS9*#M'D^C(&.&W"GT866(3B'K>Y\6]R?E-0::G_)`>81IP:!8:9PT3 +M%R/NT#>'OJ:18OJU8:W(O7MLW<5P:@Z?K$<>9HTAI2/7L,(K@*_O>2U#4YA6 +MC9*G@AIV<J+B)8`I_8ARP.R**0W,3B?1OW\#]DKT\LH+A]H1TNQIF^/UM686 +M9#_0)R[;#33?[&[0&RE:A^AKQ=,AEG67Q?4@?+(>!7#=#RD3U_H*KP76'N>U +M#$T1^CHVGDKKZRF)2I0)O?3CR(2!*PF9,'`ZG;Y>.;#7HZ_76SC$CH`5U@%W +M@$FDM!#QR2)#1%U,*Y<%L2O&6RG0KDP2>Y*F3-;!96\$M!,6NL*\HW5HB=8L +MVY/G4+%KX.AJE&KD!<`B-/"];*I!N(26?`>;ZE6&T-AW3VEK(M#L)WFW6C], +M4KZD<,I\H8ZV>JO"J0_9RB4?5IP&SKY)Y*D@_3C]F?$"IKX3L0X]X5O,UH35 +ME>G4J`N!0NS+Z91F.5"GUAL'Q^EFDG*$KCVRZ-R."M7IFS6@=_G!*LJ!4PF+ +MA!\F,+M0,6#9K-(:,+EX1G((!M2;H3-,4F=*4HS05MO$H;94Q0&WG2JNIM&4 +M$:-Q'1HRSD3'$;=0G?LL2S.G8.RV#(BTRO0D(-NY(Q)6'0^P)2MQI_1CT[)) +M,%`/!=L)F7Y:>$CH4]8D;NHMFWQD+CEE8.ADDA&`DFQ"=40U1_#M4+>F]T+= +MC[3BBY)VL:N\V!(:2=`\.QP?W;*NVBPD<M83$X%FY8M*S&8DT&Y:QYK42OOK +M)(*U;OH\#W2@M2&AT:Q>@<A!MD2>T6CC%FO!\D9(IHD0!]?/FG0@-+/.E-') +M.B?BNBP6@$6OQ2)(7`H1-_?I\:=]=H8\R3*T"(Z2VG3E<*FZ99%3'Q^JG6KK +M0N^LYN658V$_5&+.F(3LA8\!2VT-UT!-WY*6S4&@2(R'A)+2<1H6$OJRGEO4 +M%MWWPNW6?7_3*,Z5478=ZG0]!8$C^-OLD.]-+XER4-QF%Q#+K5.7X+G-.9'J +M]K$")8-UO2C"P;WX$C0>"Z&P2S*91\)*XK-UG>-F="CI+<16IT:.F:XR>GDN +MOJ*D@CT+\8)AS!==-HQYE5;3?^/WBMXU^K<"8JIOU`M';79A]@?Y5X[:G/.[ +M`^WEC-;U8LJ3"5\[.A9"89<2]!9YD9UUG5?#;J_36XBM&/4='5W%U?>D?*6* +M!_:K%,=\B8B'R=]"^C=^K^A-I'\K()[Z1LOND#O"-$);J@/0M8>,Z)A83$M2 +M6`Z_8MQ=FV#V)ENYY$.(XAC8)RV#I>E'[-LB#5NX4\^B<5>"U?7HV/@+@4=L +M]\M*AQ8!$UOH=:5#MT+$1KP"TK`N$AI`^I6EYE").1.C*_WU>H8U7!==_4A: +M-@?1TC5T$DXC7B59R.K:M-<VFKW(]>UIWF"Z2LJN3<7&7A`P@M]M=YN'G56V +MUC\'0.9F(AP(USZ0Q&WW[.C:32PQ+7H0?P[>E.G1+-'@ZJ:,HE03T3B!-$N^ +MX*K?*M;"JW^>#.,1`-1/VF6%-P_%!-\I%&,IG10<2&+5-B$E'HQ(1<RW-]OW +MA].OK:I$VR@`-NF3XO!)\X2D5&\4CNZCQQC3@RRKPP'.8-H<>S1\^J%`(4B/ +M>IP86BBS*$2Q*IVPF<)3/7)4`36B7@+`V]'`$-^4!BZD-%$TB(I5*\60J"CB +MW9\.J4M"E=N$0[MJ2@*H*QW12%>/`=;DJO@2>EQO803(U$Z984[E4A,&"I:J +M>$?-I%E3BL`0EV@*DB(BDHG-$4P?JE<>W89:.W(7:CT(JZ6PF12Y4@HV05&$ +M>\RW]B^QJ-N$P[=J2@)T*QW1Z%:/`=;2JO@26EIO802(U$Z984XE4A,&"I&J +M>$?-HUE3BL`0ETH*DB(B*HG-$4P3JE<>W81:.W(3:CT(JZ2PF12Y2@HV07&$ +M>W\X.552L4U`?"NG)$&WPA&1;M48@"VMC"^EI>D+(T&D9LH,<S*1ZC"0B%3& +M.VX>S9E2!(8X55*(%)%125R.H)I0M?+X)M38T9M0XT%:)07-I-A54J@)BB)< +M`E!)25A\2Z144D*G6X)I:0FUI27B*BGA$2GA$"EA$"F)7R7-FE($AKA44I`4 +M$5%);(Y@FE!";$()NPDE$ZFDL)D4N4H*-D&1A'O:NE72;9N0^%9,281N-T=4 +MNI5C@+:T(KZDEJ8MC`B1ZBDSS.E$JL)`(U(1[\AY-&-*$1CB5DD!4D1()3$Y +M@FM"Y<H3FE!MQVA"M0=QE10RDZ)728$F*))P*>!<4AK646`J=2XII1\#II@# +M_Y1ZX)^*GTM*><=M*>>X+64<MZ7QGTN:,:4(#'&KI``I(J22F!S!-:&4>*B> +ML@_5TXG.)87,I.A54J`)BB+<T_;>)9**3<*A6SDA`;05?FADJT8`ZV9E;`G- +M3%\3`10UTZ5;4T%4AX#"H3+244-HOES"4\,EBP+DAH@H8I(#TW&J)4<WG,:, +MW&\:!\)Z*%P(1:Z%@DQ,%-%.V^M&^?W75Y<J&AJ$PSK#9`6X-_1*HZ!I=+`. +M:%@30C\<6UD!R)G#).6+"D!CZ"@X-*Q>U&CT,5NYY',IN\C8)Z+Z)J0?IO&: +MD@K=ALU.R$W9[$Y8.ZX/JY%KSE45`HK8YS399H?S)M]FF^U]XE*J_<W#8?5@ +MH@*<[OND47HX,EC/'ZP%H>/;UU,`HZ;PR'BB(M00,@I`!RL6-3S]RD\>W5QJ +M-"*^B2C1B0B':;[#-$*W7I,+<N,U.1/6G^L!9^2Z<Q6)3R)R(5_/IVUVWD,E +MIV(1'I75Z0IB67'+([,V/EQ[5]>%T>&-RRO(TEZHQ)QQB:J'CP-5=0U7057/ +MDI;-0:@XC8:$HA)U$A92^K666^26W?/"[MH]?Q,IUG51=B7J=34%@2)X(8-? +M;;-=<CB^<6E8;=MPF*U/48#5FD,:I7MC@K5]/?Z$AF]90`%R#D(BX(9*RWZ8 +M*)S4UR=J/GJ1B@QFN?1F%-02T9CBW,*TT5[&H!OHP)[<.@>>A%5DW"R,7"U& +MF^`HPEXNN_U]NG.>U6RW"X>KW=0$B-HZH]%4&0NL[7;Q)K1<PV()T$X+`=,% +ME7)J6"B$Z]8A:K8MEFY$]KB47=#T$5%T8OS!-#HE*]!-3K,E-SC-B[!ZBXMG +MD:NU:!(81<CK>Y<NNVT1#A.+Z0BP\.:&1L%R_["&6,25T`JUY1!@5#U5LC&5 +M2]7T*40J8APUB69*(C0G7!HJ.%*(Z"86*S"MIEQK=).IK<CMI;875D9A4B=R +M!11<0J((!OCX05AO+9?Z]`']C>68M]137U(O_MD#WAO&.2\89[Q?//Y/'LR7 +M2WAJN(1/@-P0D3Y,<F!Z#?%%\NSWR$_TG8-P(12Y!@HR,6%$VS^=\G>;M]DA +MMU^+4[<)@&C:E#A`4QTAB::/P='`M/AB.IAY83@DZD^988YF42\,*!AI\8Z3 +M14ND%($A5ED4,D5XPDB*(Z`.I*\\O`7U[?`]J.]!2AU%P:18%5+H"0HDW#'/ +MWMGU4?EK"$RKIL%B6>D"2[%ZOZZF5<41U:YZH6=QIIT:R1#/EF:Z.*I4L8R4 +M)I,G"JK>[5HFL(IGZA=&S<-:0KV>B&;06A#:0&LKIE!"(D>T2B20A$,0:'/. +MLZ>QNZ3UK4+A43<M-I5:5Q0Z*>.`-)PNSNC&8U@B-F^TJ;,<T/BCA@//H2[V +M$=-HD00C\65<Z01,&`'E(\08>&-2\@#9H#1+8J/2?(@JI%B(%;6"BB!A@02\ +MYML\SS8/V7Y_=][9-59ONQ`8V)\:BX$]9U@*#L;B:H7]>*.:H76Q6/0RA(#I +M`D^P85AP#.NO0Z0,6SC=B.RQZZ\(Z,/48,+\@;6U058@&IO!EM#:#%[$U%B, +M/(M6E466P#!"/AR2?)]M[M/+,;=*,VVC`,BH3XH#1<T3DHB]43CZHQYC3'.T +MK`X'7(-I<^S1R.J'`L4K/>IQHFJAS*(0Q2JXPF8*3VK)4074HWH)`&]0`T-\ +M=QJXD-)6T2`J5CT50Z("B7=Y;W^0O_PQ!+Z5DV!1K?"`I5FU5U<'*V.(ZEQZ +MU%F@::9%L<.#I9XJ#BAE%"/%R+09@JEPNY8)JL:9VH5<Y;`64"TD`OV-`0'Y +MC:F8)@D%%=%JC@`2#4:<Q^.E>/OC397LC]NG_69_O$]WA^.C56=8#0+@DGVR +M'%)9O2+I-3(Z1U>RKPFF4P%6E@.MT3!)^4+#;2QT*.#95R].!'J<K5SR6?57 +MG.SCZ;3IZ0=JLR-)!6^]HT[P[7C4G9067"U68]66:RP$&+&+UY-OLOTY37[: +M9U:!JF\5`)E[T^+`6'>%)'!_'(XVWHLSIG?;EHC#P>'460[0Q!N$`X6Y7NSC +M)-MR"4;BBU4&ADX8GN"39`RHH_7S`-[&AI;XWC7T(:7<HB)6K&HLEH2%$3`] +M[8^;A^TAN63VAQ2UC0*@GSXI#OHT3TCR]4;AZ'UZC#&MS[(Z'%`-ILVQ1V.J +M'PH4I?2HQXFHA3*+0A2KI`J;*3Q!)4<54'?J)0"\.0T,\;UIX$)*2T6#J%AU +M5`R)BB&>_?G#YO=@*,=\WK!Q0B(;X(&O-I[X7B;U/*$Z1:(ID3GXYVS:N,;, +MF>G3!LD"A_`)BP82<H?.`T3OP#TFI=I0.X;L<WU!<B5N!1-.`F((=4A<IWN* +M+8)A5#D=/J,*-R1*5?L'-:`RKO@6I"\'GS'-5,G&1,[4TR>0IHQQS*29*XG0 +MG'!HF?!((:%G>*Q`M)1JK;%-I;&BMI7&7E;9!$J=N!5.>`F))%AQ"Y);[91; +MA<2Q:EHB)"M=46E6CP/:N*HXDYI7;XE$>-1.G>6`SJ4F'#0V5;&/G$ZS)QB) +M+VZ5%"AAA-22`&-P3:K.`T*C:BT9S:KU(:Z@8B!6](HJ\(2%$?"TO2(>)#1O +M'0`/+=/D4-'L$DE'V[@<C=*R#IB&Z5I*#N?LH1%QA.:>-5PH_EG6*DX*^I>8 +M+)Y9E5UL1.,IO2F9!FJDMOR!-U2[!WQCM?N24H2K(F6LBG$M"0\C<+;?[C:[ +M;;[=)-OLT7[6KK]=`,P=3(W#VKXS)&6'8W&TYD&\,4W9OE@<^IE"P'2!)IXA +M+"C6#=8A3L8MG6Y$]EAU7PSTX6D]:?Z`VMTP*^"-SF2+;W$F+U)J+DJ>Q:K: +M8DM@#"$/YS<.759L$0P3R^GP65BX(5&PVC^H(99QQ;="?3GXC&JF2C8F<JF> +M/H%(98QC)M'_W][9-[=Q'.O^_FM^B@T/*WJ)2%J6%5?(4FX467%4L667).?F +MQ+(A$%Q".,);@*4(R?+Y['=>=V=V%\1,=Z^`F9$KL4EPIC'3W?M['NPN@(_5 +M1-Z<V."APB,%A6_"L<)#:F2M?45&SX+*BYY/ZXP"I4[<#BB\AO0D&/O7@M5] +MMGC7*Q;]M_EBV1\O-]N?]FDAD6[-QDG@UQX;2L1U*W55PS6U`DGDIKJ38'!] +M^F@CPH&Y-J4PBJZI<.1@#:&O:6BZV21&RU,B._E1B.JG\^O:#R#^ZT,A','Z +MH.2^]1.P=0.EB>R4#AQ?19#?`'ZQF$VN?U?J^AE!J4!CNS3XKX<%D[^Y/F>[ +MT:@+S&FL+R\-B]M2118,0>"6]`'AVZAA[-3=Q:9%<]#!%,=%0BHKW!T+/76\ +MV5L0"6^+@E'OMGCTCC=!RL;O;M,Z(#P(GJ^8$QZL_YYS:U`HE"XWA<:RC@0A +M<;4*%TTO<^PMX\WJH$%H;ALS'X8[(Q7^A"NS'C'2/GYG08ARO0T,EBD$9H^$ +M*NX*5C6`IVB9$X$Z988@]6HQ("IJWQ5XHWH0CWNOWG0VS5>C99%/-YBIQNA0 +M"-C<)AJ$C9`0(K:LRT46FW7PUL=K2HGF6VMJ2`+!B->6+G_T-6L5,0%WJC%1 +M/+O>RD5$-`)SUQ'3W%6TI7\\Y;0U`E!76V.1.L%42!FU6TR@X?T(7.2+WG#Q +M?C3?Z":KD0%QU]@>!7&K<$#:FNMQ%&DC[Q"!;BL;!0OM5*"#@!EHI0?$/Z,F +M<9-ON\T'YM)&5Q@ZF6C<("6;O$31[!%_0;1GP\70CD/M_**D7>Q.+[:&]B?H +MV-G9C4/DYYC6V8VQ]!S[B^L8)Z[ULE&Q;DS!NC&>=6,TZ\:I.+OM-1^82T[. +M+F0RT3D[*C9Y"^$8)81C(B$<=^KLHJ-="LXNIH8&$/3]S-'8\8&AT5-LC@R= +M/!J&G'(U/KHJ<@Z65;MB9)#3:<#&P"%.I09..%&-!/"VG:Z#DLC-R@7+(D(C +M1T(C?]63S0$4/3T9J7DZ3"<>+B:\)>'?(FED&#%[D\MQ,9J/\]Z\OR@V?&#. +M-?,"I&ECZY1HK0='DK:Y5D]!;M0+H\_KBT])T;84$H=$,[8EK2CD-NJ<!G]W +MO;V)V.IL3F.D*ZUU[9JO(#_0[$*X/6B+A7<+;5&[<L&?^!W[)^E\.H`0[GN^ +MF`T7_8F3X]9C`].!<HM4Y-<!$;2OUN1A,<K\0VU%LX!4I#530A`&150C36"* +MEO6)GYO;;D4$LYR<;.C4HG.LE-SR%M:J8V!B:L['":@9J0O7&2T+4W"1,38X +MF+"]Y6@X[1>7BPV?L[AV5IC,-;=-S%XC-)["UCK]Q=NL$U+&6TM.S--:ZD@# +M4C#63B>6MF9MDZ'NCC8T"3]]O&I4!"7WKYTQ%"KY5M^AQ+\6B<0&U&)VZ'C3 +M)71"SCC)`\9?`2XOS_/![-S-.)>#`Z-]M4DJQ)<1$60W5N7A(:H:0*U#2Q6I +M`&NEA2(."J=FJL`4K:H4/SIWH",Q!'.RKN$SC,ZHTE+,6V6-QH&)JQ4`IZE6 +MJ"Z\9]1H3,%7QMKH/L2=+2;]HO?5YK>G&P.#X:RY.3QAC6@@NEJK<5)C,^?^ +M2MQ:,3S\:FG`Q@!"STX-`'AF-6)&W5:[#DJB#;XO=!91^#U*&GG(G]4<OM)7 +MFPR5O5H86F\7(=[B]G)Q-;(_,?L+)^?&A@7&2KXQ*DZR6`A*BI5X:"?/-50Y +MK3I1X4QM'Q<!A3*9$C#(>`7BA]A'[S,8;9S<69B\H7-F>.)XBYEH!YB4J:DX +M(5-!NO!C40`L!1\6>N/Z$W'0/W,R8'Q<8$046Z,"(@^&(*)<BX<XBGQ#U=$N +M%A7%=`J0(5`<4VD!@TS4(7Z.;:/=@.QQLF.ATH?.D%'PQUO99%?`I$W/Q6F; +MCM*%*XN&9RDXLQ@:&$1(?ITTG_8GF^Z(:YD0'C&-S1*"LXJ*(ZBY.C]M-6J" +M$-FVRA+"T$X352PL'JW483AI5"\)7.Y2MV+)YVH2(V$?J6WL@'X0'3:;"BS( +M=A"T,MOA.O*8Z6`U$1^:Q($`(/9\-.OU+T8S-Z-:C@Z-U-4VR2!=AL00VEB7 +MC]Q7=0!K?4LIR?AII88D$(Z<9KK@V*QJE0`Q=Z(Q43QSLY\1$(W0>!(SS5]I +MC?X!RJP5`:FQ5JQ.G&;LI$S"74;<\$`"GXVF[H:2#PZ1OF*3I.CE$;'DE:OR +MU6Q1`Y1DVU4D!:1."T4</!Y5JG!T%%5*!(W;[4@,P=PM9-`,(S:09!2#J:EL +M'(28Z@`$6JI#=>8=8T5C,KXQPD:'$[?W;R_7R(8'RER^46KFLI@$U!4K`V@U +MKP56K:UZ4F-2I8<F$@DJ9<K0L.052P>66^]/'-V\'&78?*-WE72$`PNN:".< +MY*H0-**K@G7I+Z,&9TH^,];&1Q#YS/$&36-\J$0^H[P]TPA*0>0SW]O=S'J@ +M5?VLDULS:RDB"D7#SS/D#41FW1+BYPZT*9)U?O8S<-IU8$`)>0=7XC/$36BU +M&$1:?-;AO9BI<#0I)QKQ`8`A]/LO/.THFQ`LH?EFZ0'-HI(06JP.I/6\)GBQ +MMRI+#U.5)JI81#B5J2/@*:]>2CC=B6[%DL_3G(;.OB[L*27]$/HLF@HKT"H( +ME4*K<-UZU`2PFI9/C?M`0!![^-[/JK+QH=*:;Y4<U2PH!:G%VB#"S^N!UGVK +MJ.0T52DB"D7#4IDV/$IYW1+BZ`ZT*9)U?N8T<-IU8$T)>0?78]%-2#E6,8C4 +M6$7KU)7&SM&D'&G$!P""T&/7+Y.Q9X3*Z#'IU\O882DH/?;^ZH]:7="2/^[F +M*VB:J2(+1L/5,?;K&VHU3(BL.].T:`[Z>=4(2-B!7R5F(5RRQYBO"VE&(9+M +M<9??A),<99-RL`D<$"B"3_J^3I;-")???+L=T)N%I:&W6!_,%/"Z$)@"J[P= +M,%:EBBP8%6-E^B@8RVN8%&%WI&G1'/1ULL&3L!,G2\I"C'"+WD(+MXI")MPJ +M7L=.-@W*)N9DHS\@$`1?>=XAL`KWFMFJBSL$5C17S%;02Z\KBDNOJT[O$%C1 +M7=E:45W96A%=V5JE=8?`#K0IDG5^7C5PVG7@4PEY!Y?D%<$%TA7I!=+51[A# +M(':.)N5*(SX`@(3V^S(F:T:(C.[@ZYBLL%A*`[_BQJX+2O*[_$JF1JK(@N&Y +M2O/U(78-$R'K3C4MFH/N7C42$A+[U0Y8")-L_-?2-*(0R';WW]"4&F63<;") +M'!!`@L_.!^XFE@\.D=IBDZ2XYA&QI):K\M5^40.4[-M5)`6H3@M%'#PV5:IP +MQ!152@25V^U(#,'<[6?0#",VG604@RFK;!R$J.H`!'JJ0W7F+6-%8S(^,L)& +M!Q)W^7;Q9>_L_6C^16\QG[C;Q]J\$"E<WSHICFO!L61NK-57V.OU0FG\VN*3 +M4K8EA<0A\>QMIA6'X7J=$^'QCK<W$5O=C6V$="6VNQWS%>8-&EV(L`DML0@< +M0TO4SESR)WXGY*@3/X`P"C'T^GB":DJPJC"D_X""*BZ)$@QA[_8V:H,W(+4: +MTZ.Y3!==-"(@ZQ02L'B8T@<5[%KOXJGH:9ECX&(71IF:C`AU'Z+?H&V'H=+T +M,F"W?C@AZ*;E?=,X,+!$!YQD+J<%S?6N3C&7L<GHCCD#5]6*QD-T?GK92A]M +M1$(L$YZ;J"J<&IQWL*]I:`KPR+'PM"NOW`51D=:`Z(28%8K2(GRD\\D)`SL] +M/YW>@8-0A`'_!E\?)1@$^@WBY6;)V3\@^`[Q:G40IS%`?Q-]L[+D$!X0?>FW +MCD4#W@'%%W^7U4L(M;O1K5CR^;G@X-G7@?,EI1]<M`?8+Y,W@Q`)]<#X0OE/ +M6$6U16I@C?=`\"=V/ID7[YQ,JAP9&*'5]JC`+,,AB*S7XR'M*N]03:^7C8J1 +M52K005!4+-,#QJ&J2?P4W%[S@;GD9"%#)A.=::1BD[<ZZAZ!R6(U&Z>'59PN +M'&%TM$O!]<74T/X$'1;]A=\G:=DS`N-I;;M45+7#(NA:7Y^'"-?J`A7C=>6E +M8F0S563!4,QLI`_,SEH-XR?H[C4MFH-.CC(F$M(YS*Y8Z"W0]=Z""74S"DZP +MF_&Z<*+)438%IYK2`0$D^-#MVPGTV!"9/23\5@(=$$MIWR^"+_./$OQA%]]" +M8*:$(`R>ELCOU"[KDP@?M]B*"&:Y^\V`J47L,8FX!9-1Q%>NF_,)I'/8W3<) +M1,O"9-QB9`T.)*SSMZ]6HT-D+.VWKE8AL93U_^)*HPXH6>[H6U;MU)`$PK,1 +M_9U_1JT2H>/6&Q/%,W?/&#C1B'TC(=-@THKZ@D@[`H&\=OI-J=&3,ADG&6G# +M`PF\G/<72X_KY6I\B`S66R5EL`J*I7"Y-E\)U_5`B7BCJ*34-%)$%`I/SBIM +M.';JNB7"SAUI4R3KW/UF!+0C]IS$O(/)<-E-""$V8A!(L1&M,_>9`D>3<:&1 +M'P#^A!XM9XYO'Y<C`V.RVAX5BV4X!(7U>CR$7.4=*N'ULE&QL4H%.@B*AV5Z +MP"14-8F?@-MK/C"7G#QCR&2B\XE4;/*61MTC,%&L9N/DL(K3A1.,CG8I.+Z8 +M&AI&T,GEN!CU\E613PMGDV=-"I"J]J8I\6I%1I*VMDI/3;9KA)'G-=6F!&<C +M;93QT#BMIQ)%5KNJ:2!V1SN9@IC.]C,N9M*:TNZH"5+V6L/!1;X1"*_WC9!= +M>=EDD9R*[TWQ0($1?S5;+-A_G>VQ'A\@Y<NM4N)=!T62O5J;IX$HZX'Q#LVB +M4M+63!%1*#1CC;2A\%K6+0VN[DJ;(EGG;&QCH!VMG:7F'4B;JVZ"R[(9`Z_( +M9K2N7&L2'$W%H<9^`(`(_3^S\2@O>F?OOW#UH\:,\!AM;I>0T498'*6M]?D) +MOED7A.2WEI>0J;54D07#<M5.'X:L9@V3(.N.-2V:@ZY>-1H2DOK53E@(D6RK +MM\"B78N"ENU:O(Z<:UJ43<3!)G-`8`@^GDV'GE963`F6X'+#]``7<4D(KE8( +M<@:R-GAK4*LQ/6K+=-%%(X*M3B$!;64E4X+M#O4NGHJ>QC8&+G9A;:G)B-!R +MU6)8,2_#4*EY&;!;?YL0=-/RN&D<&!BB+Q:>+I=-");E?+/T'&=122@N5@=R +M"+PF>']@598>LBI-5+&(`"M31X!77KV4T+H3W8HEGZ>3#9U]7;A82OHAA%HT +M%5:F51`JD5;ANO6N"6`U+<\:]X&`(?;;?+$<S:;YN:=EK>8%2V]CZ_0(KX*3 +MD-Q<*\@@&/7"^X2VXM-3V$XA<4@B)EMI)4"S4>>4^+R[[4W$5D]3'!==N[#( +MW?$5X1/,+L3:!3L6E6NPHW;KHA/G=UH..]T#"*00BX7/?;UJ='A:H+=)R'\5 +M$D?]<EU^9D/7`6$Q&J4DY*Z1&I)`6,96Z<*05=<J"9KN0&.B>.;J<X,G&JFG +M)64:1'[+_@&+KA$!+;5&K(X<:MRD3,1Y1MOP4`(/W+Y$H!P<)'T'A%\?4$9$ +MDW?@^8GL50UPDCWHXBL#K+10Q"'`XP#W"==5E5)!XU8[$D,P#PL9,L.H#205 +MQ8!J.H!_%+H5@$)+!]U]"T#4:$S'-\;7Z%#B3O,KSS.1>D:0Y"VW2PM?'19- +MX&I]WM)=U@6GW\WRTK+33!59,`**&NE#HK2L82HTW:6F17/0PW[&04)J(TK/ +M0J!25[V%D6LS"H5FF_&Z<Z@)438=UYK&`0$E./O?9/;6_496<TJ0!*\V3`OP +M,BZ:X,8*O9U!51N<-6BI,2UJK73112.`K9E")&VK2J8"VQWK73P5/8QM+%RD +MMK9=D!&HY4:+8<3<"D.AYE;`[OQM8M!-Q^.F<V"`B/Z>_?]BZ7/&UI@1'LW- +M[1*BW`B+([FU/C^;8-8%X1):RTO(VEJJR()A26NG#P-:LX9)4';'FA;-05=C +M&PT)26UM)RR$:+?56V#IKD5!*W<M7D>.-BW*)N)FDSD@_`D^?MUW\J]\7&"L +M%ENCXC,/AJ"R7(N'Q(M\0X7=+A85'74*D"%0)%1I`?-/U"%^YFVCW8#L<?*, +MH=*'SA]2\,=;^F17P`1/S\7)G([2A=N+AF<IN+@8&AA$R-[%:)Q/^Q.W=Q19 +M$\(CIK%90G!647$$-5?GIZU&31`BVU990AC:::**A<6CE3H,)XWJ)8'+7>I6 +M+/E<36(D[".UC1W0#Z+#9E.!!=D.@E9F.UQ''C,=K";B0Y,X$/R)/2D6N9M) +ME2,#([3:'A6893@$D?5Z/*1=Y1VJZ?6R43&R2@4Z"(J*97K`.%0UB9^"VVL^ +M,)><+&3(9*(SC51L\E9'W2,P6:QFX_2PBM.%(XR.=BFXOI@:VI^@\_[*^3Y' +M/38PAI9;I&*H#HB@:+4F#YDM\P\5VF8!J<AGIH0@#(I^1IK`_"OK$S__MMV* +M"&8Y^;[0J47G_2BYY2V75<?`!-.<CY-,,U(7+C!:%J;@!F-L<'_"+OIN7Z[) +MQP7&5;$U*J+R8`B:RK5XR*[(-U1R[6)1T4ZG`!D"13F5%C#A1!WB9]LVV@W( +M'B=G%RI]Z!P=!7^\A4YV!4SD]%R<P.DH7;BW:'B6@EN+H8$AA+QR=&=7X?'Q +MBM*=7>'H>.4KEU<8N;SJQ)U=X6EVA:79%9)F5VFXLX_?;D#V.+JS,.E#Z<[P +M_`&(VQ5"W*Y(Q.VJ0W<6"<_2<&?A-[`_(0O'<V=%>*]>"\IS9P7NM6OA>S*C +MP)S,*#HY=U;@7VL6V->:!?*U9I'&N;-MM!N0/4[N+%3ZT+DS"OYXBUN!./50 +MD)QZ*#H\=Q8-SU)P9S$T,(B0O7PR+][YO?>V95IX]&QLG!"E]=@XLC97ZJ>\ +MC5HAA'A]W0FQV98^VHA8J+:D%,/81H63`.YN]S4-35WM9X0\)36G'1,5HOS- +M]@,;@;90:%_0%K0CG_L)V(EXY*0/')@B>#OKD#6@&S=-17VXTZ#Q&!V[9DK\ +MTH&7#+FIN>,=ZE8L^9Q=<!SLHW6^]/0#B3:)7!,+]4?QMLE@-14/F\*!`"#V +MV7LWB\K&A49GOC4R)+-@&!*+M?@(.L\W6,>M8I%14:4`&0+'0)D6./IX'1+@ +MW1;:#<@>-Y,8*'T(+2$!?_QU3W0%4.[47*3*J2B=N+Q8>):$@XN@@0&$'#JZ +MLV%X?!Q2NK,ACHY#7[D<8N1RV(D[&^)I-L32;(BDV3`-=[:%=@.RQ\V=!4H? +M0G=&P!]_<1LBQ&U((F[##MU9+#Q+PIU%T,``0HX=W=DX/#Z.*=W9&$?'L:]< +MCC%R.>[$G8WQ-!MC:39&TFR<ACO;0KL!V>/FS@*E#Z$[(^"/O[B-$>(V)A&W +M<8?N+!:>)>'.(FA@`"%7CNYL%1X?5Y3N;(6CX\I7+E<8N5QUXLY6>)JML#1; +M(6FV2L.=;:'=@.QQ<V>!TH?0G1'PQU_<5@AQ6Y&(VZI#=Q8+SY)P9Q$T,("0 +MCN8L/#I26C,<&7V5$B.4G=@R/,6P$$,R+`U+]K'[#$8;-SL6)&\(S1B:./Y* +MAA`R$AWKT(?%`+`D/%C@C>M/Q,NE][M4:U,"XV1]PU3$K,5%T+.Q0@]-K=<& +MJJ]K:TR%Q)9TT45#H;*90C`VZY6,'Z`[V;MX*CIYQKBX2.<ENR.CMU0W6@PF +MVRUA<!+>$K`+'YHD=%/PK:D=&/Y$7SE^$O4JO,^"75%^$O4*]TFP*]^/!EYA +M/AIXU<DG4:_PG]RZPGYRZPKYR:VK-#Z)>AOM!F2/DX4,E3YT9I&"/][JMT)\ +MD.^*Y(-\5QU^$G4T/$O!R<70P/Z$?#^:.[DS/BXP/HJM4=&1!T/04:[%0RY% +MOJ%R:1>+BF8Z!<@0*)JIM(!I)NH0/\NVT6Y`]CBYLU#I0^?.*/CC+6ZR*V#B +MIN?BQ$U'Z<*=1<.S%-Q9#`T,(J3?%6)K0GC$[.#JL!451U#@U36[)@B1[?*J +M<"--5+&P>*2Y-&%7+PE<[E*W8LGG:A(C81^I;>R`?A`=QE_B:@1!*W/WUWV3 +MPFHB/C2)`\&#V./^8KC!G<HAH3!9;0C-8!D'0EV]`A?=5KGU5NIZ3=#(J[8+ +MGPW#6ID"?Y"I3$<,KH_92_[4N-[9!<D-`O>&)H>[,.F2>TI1-0TH/E4`4M\5 +M,H2B]D^!-J8'T>;]5:]87$X'_2(_O]X/V4-#X5MM@VC*V?$@M*NOR$7C:KGW +MUKIUM4.CJYD.?!08RAHI\D=:K3(1@VT7>A!.J>O]5Q2<(O!CY*1RE\%ZJWC* +M87,Z4!:;@4A]6\SPB]K71=K8/D2=+4?%:#;=8/GTJ&`H6FX+CT\="D3.:AU. +MTEKFV5]5FR7"<\W<.BH`D&9&.@`@*W,?,\&VT6`@OFPP:^$2AL*BT3#&0[^J +M/O"5+G,F5+7,&+1.+!)BQ>VZPF]8#P(ZGE4+[Y4JY=DTW.M3WS,8F+,7G9P] +MP[]XQ+YP1+YH3.-LV;;Z#$:;ZPU7T+PAL%QDQ''7,,0)`Y*3!1V>`8L)8%%[ +MKT@:%T)$?I]8D6_X/(_&Z.#H6&Z3#I$Z)(J4U;J\I+.L`UQ!FZ6DXYV9&I)` +M2/H9Z4)`L*Q5"B3<A<9$\<S1Z(5/-$K;1\LT@)96_0.55#,"5EG-6-TXP\A) +MF89KC+?AW0B\G/<7R[QWUE^.!FN-I#4H`-K:F\(@UHKD2=;:*C9HL9UC'PE> +M4QT,Z!K;QLSWQEH]%5XTL[,>)\*VU%D0HJRU<F$S!6?<Z*CBI%JU!G`7J\9$ +M?XUJA*#R8M$@*E:?%4.CNA'/_&C>Y5H398\*@'BU;6&`9X?R)%Y]'1ODKI9G +M'[U;5R(,IYI;1P7P)E4C'5ZHJN4^3E)MK\%`?%EKJ4(G#,Y443+&2:WJ?>`N +M5\V9_GK5C$'EK*(B5JSN*I:&=2?@]1]L48T(A'L$'VM1A0'0SO&#"(R\^@H= +MY4=:V%L%3P:Q"/96<B/'\1+HXS61-R>N=4DAD@+OCK"L<!89_P\+L&?!Q(7^ +M,RR"ID[,SB?$AG0CF/U%3^O/)M7'!<"RQM8P/*L'\Z1:<RT;)*R1;Q\A6U\L +M#)W:4H`,X4VJEK1X\:I1ASB9M>UV`[)GK8>*@3XX/T7-'R<I:W:%NZ"US?67 +MM;8H5&XK2I[%ZL)B:V`((7OY=#`['TV'CBZM&A\<+XVMTE&S"HJBI[DV+UDU +MZ@&7U[:BTE'03A%1*"05K;0AZ&C4+05&[DZ;(EGGZ`KCH!VE2Z3G'4!TS6Z" +MBJ\=`RO"=K1NW&0B'$W#;<9_`+@1^FHQ*O+>^6CY9JT!-88$0&%S0QCL&G$\ +M26NM8(-*F[GU$>;6FF!05]LN?+8WT.P4>#',S'2<T/KHO>1/C;56+EQNX`P; +M#3F<5,DJN;L0U:;Y:T\M`)7?"AY"L7JGD!O3EVB]B_YH?+FXYKIIV]B@"&=L +MD09T54`P\<PU.0N=D7^8XK45D(9@=DH(PB"89J4)"#>C/K$S;ONMB&"6@QT+ +MGUI4!HV66Y[*:'8,1"+M^1BMM"/1N[F(61B_XXNSP;T)^[J_.!^/IBZGR:JQ +M8?&UVB(17<N`<+H::W*7XBK_0"EN*2`1":V4$(3!D-!,$Y2$57VBY^#66Q'! +M+!=7&#RUR%PA*;=\1=/H&)!H6O-1HFE%ZL`5QLO"!%QAE`WN3=CQ;/;F<N[B +M"=7(L-BJMT?$514.3M5R/>X"K/,.E-]&V8C89Z0"'03#O2H]4.KIFD1/O"TV +M'YA++KXO:#*1>3XR-OG*8=DC(#$T9J.DT(C3@=.+CW8).+RH&MJ;H/-\,7&Z +M!"P'AD5/M3DB=,IH<'+JU;CKJLHY4%;K%2."7)4&;`P,XLK40`FGJA$]WK;5 +M=5`2N5BY@%E$9N2(:.2K>KHY0*)7349I7A6F`P\7%]X2\&_1-+(W,9?YX'*Q +M_G/>FB/#(J;>'A$P53@X,<OUN$NISCM02QME(V*<D0IT$`SEJO1`,:=K$CWE +MMMA\8"ZY6+F@R41FYLC8Y*N"98^`9-"8C=)!(TX'CBX^VB7@ZJ)J:'^"BF]8 +M<')V<F1@_%3;HZ*G#(>@IUZ/A[BJO$/%M5XV*M95J4`'0;&N3`^8=:HF\9-N +M>\T'YI*3LPN93'3.CHI-WD*H>P0FA-5LG!!6<;IP=M'1+@5G%U-#^Q/TW<3U +M[15Z:&`$U1ND`JB*AR!HN2(/A=6YATILHW94R#/2@8^"@EZ5(C#U=&7BA]Y6 +M>Q!.*2>C%S:GZ*P>':F\M;%L%9@X&M-QZF@$ZL+O10F_%#Q?;(WM3=1B=-U7 +M5#0&AL52M3DBCLIH<(KJU;@KK<HY4&?K%2."794&;`P,Z,K40#&GJA$]XK;5 +M=5`2N3B[@%E$YNJ(:.0K?+HY0+)734:)7A6F`R\7%]X2\'#1-+(/,2]&XR)? +M],[^^*7XX.%-EV0;PX-A9W.C>'XV8H(HVK(R)XUMUL)?::^I)QZ#K>FAB01$ +M8EO*`&!L5BQF..Y8?^+HML$5QL0W"H?8%>$\1+:EC7REMC4$5'!;@]'ZQX3` +M&;>O3*/Q(41^/YI_X>@UQ=#@."PW2$=@$0]%7[4B+^V6N8?K=JUV=&@LTX&/ +M@D2B3A$"A[(R*8!PBST(IY2C9PR94Y1>D8I4`*E4K0*5R7(Z5B++0-WXP@CA +MEX8/C*NQ`43E!5ODRTT7BNNC0Z-JM4TRK)8A,60UUN4CP54=P"K<4DHR'EJI +M(0F$HZ*9+C@8JUHE0,:=:$P4S]Q,8@1$([2*Q$SSUU6C?X#2:D5`JJL5JQ/G +M&#LIDW"1$3<\@,!#9DG=W*08&1IWY?;(B"O"86BKUN,CTC+O8(&NE8V,A64J +MT$%P#-3I@?-/UB0!\FVM^<!<<G.%`9.)T`T2L<E?%%6/``6QG(T4PS).)\XO +M-MHEX?0B:F@@0>6=C45_XN'QC#DA,M7<,BE;C<!8REIK])5CLSXH86XM-"DQ +M:RDC#(>GJ)U&'$_->B;"U1UL80)&NOO-B"A)[$$[XB1,QJU.0PAZ+0Z!M-<B +M=N9:4V1P,NXVL0,$0/CQPOD$IQP:&LW5!LD0+N-AR*U7Y.,*5.[!9J!>.S*$ +M5NG`1\$!LTP1G).J,@G`<9L]"*>4F_T,FE.$9I.,5/[*J5L%*)C5=*1.5H$Z +M\8\QPB\);QA98T.(ZF[[@J0IL>E#DQ0@MTBU[<KPD2"/@'AXX"5C]K;5?&`N +M.1J]<,E$:?-HV`300IP44BEAMPXO,MJEX>[B:6@002=]5V?'1H;'3[X]0GJR +M<#AZBO7XB2O/.T)<K;(1LDZE`AT$RSJ9'@SK>$V2(-V6F@_,)5=G%RR92)T= +M"9L@0BAZ!"R$:C9:"%6<CIQ=7+1+Q-E%T]`@@LZ<S]G-0GQE/*,]9S?#OBZ> +M^9\VF>%.F\PZ.F<WHW@5.\._BIVA7\7.4CEGMZ7F`W/)U=D%2R929T?")H@0 +MSE"G.&9$ISAFG9ZSBXMVB3B[:!H:0-#Y8C9<]"=NYDX/#HVBY2;),*HC8DA: +MK<I':\L:@.6V644R`)IIH8B#PZ"1*C@)RRHE@,+M=R2&8&XV,'B&$9I!4HKY +M*VC5.$`1-0,@==0,U8DWC!F-2?C$2!L=0-S+2Y^O5"E'AT;<:IMDP"U#8HAK +MK,M'IJLZ@'6ZI91D?+120Q((1T@S77!$5K5*@)`[T9@HGKE9R`B(1F@BB9GF +MKZY&_P#EU8J`U%<K5B=.,G92)N$F(VYX`(%7[]V\)!L7&G/YULA8RX)A*"O6 +MXB/-/-]@4;:*148_E0)D"!SQ9%K@K.-U2(!Q6V@W('O<?%^@]"'T>@3\\9<[ +MT15`H5-SD1*GHG3BYF+A61*N+8(&]B+D;#'I%[VO'-ZQ:XP,AY'F]@@8:82# +M4=):CYMPFGD'2&=KV0C85DL%.@B4;W9Z((0S:Q(UX;;<?&`N;?)NP9.)Q+^1 +MLLE'`JT>\1;!VFRP#-;B$#NY.&D7N:.+KJ$!!.TOW'P=&Q<:._G6R+C)@F&H +M*=;B(ZD\WV!!M8I%1C>5`F0('-ED6N!<XW5(@&E;:#<@>]R\6Z#T(?1M!/SQ +MESC1%4"!4W.1\J:B=.+68N%9$BXM@@8&$'(P'\W<_)D8&1HCY?;(&"G"82BI +MUN,CG#+O8.FLE8V,;64JT$%P?-/I@1-.UB0!PFVM^<!<<O-N`9.)T+\1L<E? +M`E6/`$6PG(V4P3).)TXN-MHEX>@B:F@@07OY9%Z\<_=W:GR(+-5;)>6I"HJE +M:KDV7^G5]4`)<*.HI%0T4D04"D_(*FTX3NJZ)<+*'6E3).O</6,$M"/VC\2\ +M@TEOV4T(`39B$,BP$:TS=YD"1Y-QG9$?`%!"3_.K@8<9%<.#I+/<*"V:14PT +MF=7*O!5>U@(G\+5ZTN*S3`]-)`)XZI0AV2DKE@HX=Z`_<73SL)^A\XW:?%(2 +M#JB\JHTPPEN&H-#=,EAWOC-R<*;C.>-M?"B19^<^=I./#I+&8INT*.8AT226 +MZ_*6<E$'G)+;I:3EI4X-22`"6JIT(6$I:I4**;?=F"B>>1C,L(E&;2_IF`;4 +M6-D_&(G5$2@45L?JSEE&3,IT7&6<#0\@\'!Z6;B^ET6-#8V]>HMDW%4!,=0M +MU^0CUSK_8+%N%)",C$9*",+@J%BE"<Y$79\$>+CE5D0PR\TS!DXM0K](R"U_ +MZ2P[!BB<QGRD;!J1.G&)L;(P"7<888,#"#M:SO[TQS]^[F8+]>#0"%MND@RP +M.B*&L-6J?/2XK`%8D)M5)`.BF1:*.#@D&JF",[&L4@)(W'Y'8@CF9A*#9QBA +M322EF+^.5HT#%%(S`%))S5"=>,68T9B$7XRTT>'$[9W-9H67<90S`B6OVBXU +M?&58`@+K]0&D6]4%J]_U\E*SLTH563`2BI;I0Z-4U3`=FNY.TZ(YZ&4_8R`A +MO1&E9B%8J75OX>2ZBD*CV56\+AUJ,I1-R;6F<$`@".[Q-G-[2J@$IWZSN1V7 +M@N"0]_+6:H.V!IV]\;R9+KIH-+`E>.=DK9()P7:7>A=/13]C&P47.["VY&2$ +M:SGR[;G-,$1JWO&[U%.$;E(>-Y$#`T'TB]$XG_8G&[^5>LVL4*E>;9L<ZV5H +M"K(;ZX18AZI.:/?04G)R#ENI(PU(0V,SG7@@5[5-B,@[V=`D_/0SQ1$1M`-K +MW!%#X3[`Z#ND%;`B$;D!*V:G3CE50B?EFA,\8!`*\)[]<+'T\\]J3JCLUULF +MY[X*3$']<HT0FZ'K@S89C4*3$]E(&6$X&AI7:<2S6-<S(0[O6`L3,-+/(T=" +MR0[\<0><A$M]V6E(H3?B$,F\$;%35YP:@Y-RPPD=(`#"3XI%[GCR6`X-C>9J +M@V0(E_$PY-8K\G$%*O=@,U"O'1E"JW3@H^"`6:8(SDE5F03@N,T>A%/*S7X& +MS2E"LTE&*G_EU*T"%,QJ.E(GJT"=^,<8X9>$-XRLL:%$[?7/EK/Q)7MTWB]> +M>[C`VL0@65O?/"UW:]'1%&ZLUENYZS7#Z?C:#J"%:TL:J6,2@+>96B2&Z]5. +M!<D[W^54I/5PLC&REMKE=DU;H%%H-"/&-K0$HS`1+6&[\\J?<*[:*56@IW<@ +M@15C,.XOER/'KPNPIX2I$>6&B;5!Q\6K0K5"?U]2U@;I2)HU)D:TF2ZZ:!18 +M-E*(!7)9R61`O%N]BZ>BCX..A(ODKKD#,D(%OFHQE+2;84A$W0S8H2]."[H) +M^=]D#@PLT7NCZ7D^=?STL=:90=.]W'XWB-?AR4A?K1=L)\JZT;B*9AMTPV@S +ME>1!"8EMI)<(W&7-4Z/W+C<[&7<!ACHN\G9EK[MC+])35#U)82W,:)0.PXS; +MO0/_1/<$W7G:!Q1802XNQOVAXSOGK!EAZH7>+K%*J+!X=2C7YV]2=%V0YJ11 +M7F)&&ZDB"T;!Y"I]6!;K&B9#X!UJ6C0'?1QT%"0D=\SD+(0*>ME;*"$WHI`( +MN!&O0R><#F43<KI)'!!@@D]GO64^[R_ZQ<SQ^W1;YH7)<GOKQ#RW@N.I7ENK +MOV6PZX4T#FN*3TSC1@J)0U*0N9Y6+)_M.B?#Z)UN;R*V^GCDZ.A*[I<[Y2O4 +M*M2Z$&48&K%(;$,C:H=N^A._$W+921]`8(7XS^6LR,\]/\JX?6J8*M%(`+%, +MU./CE:*Y8G^WTJ@=TK"L[P5BI+>EDSXJ!=A;4HQE>Z/RR<`]C)ZGH["/58^4 +MP^2&_2.0&.HZFJV),AYMX4B\1UO@#OW[)]B?I_8YRI\.+.QG*\_[*S<7SP>& +MIA5B<V2ZP*-A5$"NQL>)B)R#?8==,3+8ZC1@8^!`JE(#QZ:H1@*(W$[704GD +MYF2#91&A2R6AD;]0RN8`RJ*>C!1!':83+QD3WI+P@)$T,H"8R]?]A<_7)QOC +M0Z.GN54RA!I!,22UUN8CM&8]P'K;6E0R&M921!0*QT8[;7!$FG5+@),[U*9( +MUKF9Q$AH1V@9.^"=O^Y:W024WUH,I`K7HG7B*E/A:!*.,X$#`$#HHN]X0RX? +M&!J1Q>;(0,RC80@L5^.CX2+G8/&V*T8&19T&;`P<!E5JX/P3U4@`>]OI.BB) +MW$QBL"PBM(4D-/+70=D<0`'4DY'*I\-TXOEBPEL2OBZ21H81T^=$8A'L*^NB +M@].(!<FKZ@)X=J8@.#G35D]*#!*]\BV(7O@6-*][BZ1.'^Y*?^+HYNP*P^<; +MK4.D)1Q(9+$G30K*<R9%]^<,4P!G*KXRYL8'$GDY[R^6CF\A,L:'2&2]55(@ +MJZ!8(I=K\Q5U70^4JC>*2DI/(T5$H?#\K-*&`ZBN6R+\W)$V1;+.W7Y&0#MB +M`TK,.Y@2E]V$D&(C!H$6&]$Z<Z$I<#09)QKY`0`D].72Y_JU&AXBG=5&2=$L +M8V+)K%?FJ_"J%BB!K]>3%)]5>F@BX>%9I@S'3E6Q1,"Y"_V)HYN[_0R>;\3F +MDY1P,.75;800WBH$@>Y6P3KSG;&#,QG/&7'C`XG\]BLOORF'A\ACM5%2&LN8 +M6!KKE?GJN:H%2L_K]23%9I4>FDAX;)8IPV%352P1:.Y"?^+HYNXW@^<;L=\D +M)1Q,=G4;(62W"D$@NU6PSOQF[.!,QF]&W/@`(J]<G>8J0`:O2-WE"DG=E;=B +MKU!:O>K&1:X(,+A"`W"%1=\J$;>XG:Z#DLC-%0;+(D(G2$(C?Q%<8>1O12-\ +MJRZ]7DQX2\+31=+(,&+ZO#.G&AX@.\G?F5/%1%(4],X'HQ88I>WNG3EV>F@B +MH9%(<8.Y4;$TX+@3_8FCF[,K#)]OM`Z1EG`@D<6^0<$.@1?<KM^9DP(X4_&5 +M,3<^@,CO1W,WI\D'AL9@L3DR]O)H&.K*U?@HML@Y6*OMBI'!4*<!&P,'0)4: +M./I$-1)`WG:Z#DHB-U<8+(L(G2`)C?Q%4#8'4/[T9*3PZ3"=>+V8\):$IXND +MD6'$]#E76`T/D)WDYPJKF$B*@L[%&+7`*&UWYPKM]-!$0B.1XB6O4;$TX+@3 +M_8FCF[,K#)]OM`Z1EG`@D<6>,K%#X`6WZW.%*8`S%5\9<^,#B3R=]7@=%_ER +M.9I-W8UG;5Z(A*YOG134M>!88C?6ZBO^]7JA7,#:XI-2MR6%Q"'Q'&ZF%0?D +M>IT3X?*.MS<16]UM;X1T)3;"'?,5YA`:78BP"BVQ"#Q#2]3.7/,G?B?DK!,_ +M@'P48C;/I[U)/IDM-IWH-4<&HP'6]O#,-\.!*&^OQ\E86'GWMQ+M9<.SM9X* +M=!`@/VOI`1#3JDG,A-QV\X&YM,&KAD\F"C]*RR8/R;1[Q%<DZ[.ALEB/0^LD +M(Z5=W(XPOH;V(2@WB,N\,!UB;UG,%IL^)7W]O>LW6\9Q='QQ$W>O6ZB31 +MU]3+7[!=BH^GZ?4I)`X)).VU:05P]YHZQ\S@<-J;B*T;O&K<=*7PL1^/KQZ6 +MX+HN]#4(U\>"VH7KH]*ZX4_\KO51H@1/[`!R4P@>YV(TSJ?]2=[+IX/9^6@Z +M7.NYVT<'H`5KMHGA?WM(3^JO6]<&L[&F#CX68U,I,=Q=GQJ20-Z,79LN+[*N +MJ56<--V]QD3Q;*W/C8UH.$_;)=.<Y'==_[B+[OH(_E*[/A:50TV*E+$ZSU0: +M?F\R6Q;C=X-QWI\>JD*>['UVN)CP_=T^&L_V]EK_N+C(CMA#RZS'_UT]:*Q! +M_MUX8.W0WD5S-'],3M@['RV+-2M4#V2#V?1B-#P:%WNCZ;+HC\>'D_[T[@E+ +M%?MO[[N'3Y_?VOOL+P<WGW[_[+N'W[+V>O[BX;??LL=D*=]G^V+D79['?:YL +M!S>_^P?KWMX/M_B?6/>]X+UL#&+AQFQ=#V[PNHH@TT:0?#4JLL]/6:=_]FMV +M,5MDHVS$&N"`3SS-SF=2/_</#D;[_-=I+H:.OWAPPU@WKY0Q]8O6B=D'/C/+ +MEODY7\B-XY='=W_J'[[_^?;!P?'\AHC[&QMT]9JU0K;(^^?97`02LXR6/CB8 +MJSX]?Z#:[?S!?M5C^[QO3N4TO8AS-HD]KG_E/[._5\L2B\JS&]/3Y9VCV\=W +M[IS.3U^+GU\>L5^6=W[YZ9>[/__T^>&?U(KOW+USNKHAGX3_PR<O[[P\,H?< +M.3VX62SZTR6_'>76Z3<LS,OIG:,[-ZKGO/'T]*E\.+LSY(__*M++JW9J9H(? +M'ME9GVV5-T\S+6Q/_*_[V0.1<C9F7^5(Q-J7!66IXX'V5=;4XF52!,5$R_6^ +M?OCB(3]JQ>`;_/!M-M>Q?)8;^Z<Z3'W^OGJR]N94\ZL>/#CXORJ4*E[9;"Y= +MF?'#@:LAST*/#[LEDUS+X;)*7758B74NQ5)^W9`4-;8])]<D0\]K/U#M)/QF +M;/^WO;W+J<4+DQ$_/JTHX76HB\4\>+4C1[P^^/2AU]V!]TH\YW655W6_F0W. +MUQ0Y^_WO,T'V_:JJMW3EV:PU)=:S]"1>6Z.P][R%X)Z+$-S;(`3W=D,([@4E +M!/>L?KR7K!#<0PK!O0B%X!Y0".YY"L$];R%H/=2W)@2M1_PF(:`[\'!"<`\D +M!/><A."^MQ#<=Q&"^QN$X/YN",']H(3@OM6/]Y,5@OM((;@?H1#<!PK!?4\A +MN.\M!*V'^M:$H/6(WR0$=`<>3@CN@X3@_F8AF+\9RO-%O%FX(I0/R/;9J`OE +M^(WB8(\LVZ;QE'8?->,K1*G#<UYKH3JR%7)AT*Y`[7N(^QS$UA;+(]GI.&YF +MQR(:7[QY&-O5WG`\8PHC#_*V^HC$"!U5F2T/P0^_L&/PPP?K2)G:1XK!D;5' +MBYW-:PZ9^@%3VU#]J"D/F=%T,+X\S__^^.'7CY\]Y\>,>J2G'MI\T*@)&P\9 +M<YQ1E_KSV86I!P_S>)%[6W/$&%ML.5[J4]>F=./Q4BOUQ@,&7)@M'B]F+CV. +M%FLSC6-E[\G7_,#0>6`_/O_^QV>/Y(6K;Y\\_X'_]\7#;Y[W_O;DV\?\B-$I +M-,89LUNF2!%GM?K/92Y35W<32JCMYA[IYE:)':D6E[^632[^4+:Y:2D.;C[\ +M?_]@'O57V<(_'1Q\_C/SOG=/LRD;Q3]Y1?[V6V44'C_]FHD\6\=-/>16)@W0 +M3;%F$>A6-E^,ID4V$C;L-U76R9L1*_?%DZ_94N5>]XK^<'F2\4SL[?%_GV1K +M,JTN!+T^XFF1J?OZ\0]L,8^?/GK"![#XGUDYU9GFKQ"*;"56\#I?L/S.K\[E +M@JZKD_V$R=9L^7IT48B?RFT(ZC\6F7CX[)OGMPX.;NMZZKV=F"^-C*-9C>*' +MLTK<P8%83^]BM#JU^7UP\%_9X5`<\B)F^9)`//4M_8-Y:=A^P%ABE0JVB+_L +ME_VGR6^\C$/&KT56%;P8[0UDJS\2O?ZHLU[_U-(;6]KHXD=F%^OF%,\AC,PC +MW0F/ZIU@/_"HI1-*Q.U](XJMX2/-Q."<SRMF\][9Y6A\SO/#A8>3249@O]1' +MJCR6?Q_RCLH.1^S/WQ@+8`7AS[1O7E\7O5=>7.>#,T9A,2O[YIG\S_/__H[] +MF]]^D/'A>WN#U_G@S>$+II+"&(H?N$&XZ+/<GC]@QR6S%?P_*_Z(^&'>7R[Y +M#\LWH_D#J=5RU0_*-F"]L9K/%D4F?S<X7#Y')OM0[K]@<!C,QK/%\I:-(0$4 +M/G/?!`3O@(+]>5/;'K%V+/A?I3ED*SPZ+D\[Y&/K/)D]SAC%W21[9(V?%,^G +M]M1[_/2?3YY]__2[QT]?<#/W*QO]FQFY;&R>TU<L10LVBOV<_2&[^^JT^O.` +MG[SBWO)??WOXY-N>2M@^WV\YYO9/+[.7G_TLPLL?;TMFR/KHZ.*W*OYGJJ[Z +MS_)7X^^L"@S7B_S\E+G>Y8-__?#P^7-C9:?&S^KYY(SA8BIG7#,A7_8'+>EG +M7I85.L^^^NJCIDGT<YDF_ELC#>.AVI1X@NO3X)G8:P+6TE2I5B8/.?T4_)=& +M2L2SG(TOY;,\_\>3'\J_&CVK7P7]RL;_QE>U9#\OB_/?3N21L&_PNZ;8^Z(4 +M^\S1_X?3VBP8__ORP3[_3W5V[R&KX;[^U=R-,7I9&\[^E>F'RE4;"Y#)E6NH +M.0=CE*AIZZ`L.^M/ISD_J`_8<\GF8AOG2\GX`<."KZE`>WR="/[()4^\^D%I +M9/WAI060:U=SEK_NOV6-U%]RI.:#@OU\4_=K^8A,"8]\:[]9;W,'YOKY3C?F +M1S7R["*S%Z9JX)"FZFETFD2*EP_X?U2&C$>NR<ZZM9RSEQS36:&2U<B50.#E +MU,B6?)ZV7%76I;]\S58D+A;PY]=C^5$W9P=ZV=/&5OG?]@7+UG>E&M,\>HS0 +M-]7!+>9<L>WPS2TNI[?6I;MUYC*[8A:A9:Z17?$,KS0.5)A]?F5ID!T.7F6' +MX[SZLTI$]=</'ZHE5/G24>H97>3<$K0FKCR@>>JX[3%.0OSP\-$_'G[SN/?7 +M'[]Y]OB'[Y^]N+5O)T['_8&YH&6N?LT*[DI;Y[9N7<Y"[EP%6=-*933Y^[XZ +M-;(\/CI^<#Q\Y84Y'8K);AFOY6BO=G=>']8X(V:WN7'>O^J*#UF]4YJCRT1^ +MR&JYK9^!$\MAH0H[3'/C_&00W]0)!X-TO,Q9<;OZ]9/G+_3YF/*<EK[HLL%$ +MBN&M9[":1M+G,FK]A=.Y<7ZR?HFUW)4\65;O`6/E_*!0X8<LG]F-_EGV.A_/ +MOYCTI]EHR;K^/Y<C5F;>]\.<%;)?Y.PY1US/AOD-M;WLS\?G^=OCZ>5XW-9/ +M^6(Q8WF]F%U.SS,>F,]=\I>417\T'4V'?$[V\M5DM%SRW_0";O"#;MP?Y).< +MO1`K\E5QLI_]^?=?G%I+/AQ#5RT/E!O+XU^.,_W/\0WK&=390OD/BW8Q6O'% +M3NYDZM1H^;QWV+-.9EPFV"87N?&T>;7GT_UKHK^;CP8LXCN>B?X;/FLD$I0O +M#L4KL1O9U8@]H7H:OHI:-'Z2\ZYYN)Z4_6,TNGIM),/T5->7I^7%V4W]H#C< +M)F_8C]:C[*"0';HL%L(XRO;3;;M?)?:GGX]^^N7@X.7+VS\?OV3__/YXJ%]( +MS^:M,8P7JTYQ]-%9';(W-![97WK&"65Q_;[UG#+_2\OE4O8B8/F!/:NQSN,/ +M'TZ+_8K1Y1A[.\<?:J_/C_DTN6#QZH(=JN7JRM<5MX]OWS*O@%1@+\?NRP5^ +MQI]>I.;XY?'Q[\Y/V1H^5`5BS[:\<_S3+\?R2NP-<Q+7L,/+5^J50?F:P$Y0 +M]81K[OX00UEOZ)[1.50L.RIA9KQT;SAN,>_\V)JK,LM?&:OM'^M[&,R+U,;F +M7C7Y:/6PGE]W11>C:>NX[)`=B&SIV>^RPWG.3WI\]?GG[&E7^2`;O)[,SK/+ +M/RRN5MFOOV4OJY=7;9@^M\Y?B91I"\+VG?WN069DQU[<@&'M8OZL&<!8,"_3 +MHKJZ<??T(^RM7%=9-X<5U5^=20%K+DX-8=/YT\S7/$G+<.O9C%M7..J^>_B/ +MQ^J\&_]1G7:3MH`=H2KJ`T6>"GS&'ZH'2ZX<OI[-WNQ]=FCX2<Y4;E]Z+(TY +M/R4MQ[/EU:O15H;[]\4AVBC%G>'L#PM5$/Y&);&"WS4#?/GEETP(1],WR^RN +M5=#^'Q8.LVM=X#:)/Z68Q"^""3'L+5_+=U1-=`@91>9!QCY\)OYFZ8E(Z?#] +M:'ZB\\X$HK^0Y_[TL.JT)OL3OX[ZS;^?_,#^SO_#3Y'=RG@$_O1_KB8=L;%' +MP_?K1$\^\QF;]X774XL9V>&?VI[M[/T7US_=^/VD[_5L?,*:)^-_NO[95N^] +MGFOUONUI5ALRR,;\V^MI].<9M#W9OZ]_KN7K_L)X+OYK9CR38U_P:1L;P^Y( +M=0;<",+^OO>9"+[X3^UQX]=KGT/BA!T['[WU_RM[P1TQ&S7,B^R26<W%4KA5 +ML2R!76YEF9]A'J6?_5.<W9>7@2Z9L^6?[9NQ$/F416+\'5[V%_UID><\2+\H +M(RU&9Y=\,/?ERWQ\<:AL/]/RLW?,X[[ACK\_G;'Q"Q:)K8(_]9&\`,&O(LC$ +M*..DG%[OX;-'?W_R3^[VE'VZK;9[6\%]38;.!UDC0^5=&B('MY@U*N.Q8UD' +M5(=\,P`;<TT$?H#J$/(X;D80CZ\/L2HWQ0_.YO35=3OXMYY[.36/N?HAMR:" +M.DJ\DJKF9/PRK3@X52PVM%J+?82(`T8,XX:4E;I4BL,K8]AI*4]7UN$E7Z$8 +M%D$:[[8_<*'2\>W@U0N@1J#:'23G@Y[6.WY?CWU9SGXJ=5W.\JZ__/3+R<N7 +MQS^?_,3_?>>865B9%3:6A3[/M?$X^/7%=_S=TH?'Q63^VW%_PA)]>,#^.=XO +M)X@GOCJ7]R64C[8O2.Y%CSDZ.M8'<YX='JI+;4='[&?6)<R_\!74MEJ:+GD4 +M/OK[XT?_Z#WZ_NG?GGSSX[/'/=-<B55<8[ZN^?OYV]'&,8(,&T?IU^B.X]R" +MEG=%;=X(2WTY6@3OJ<JNRZM\[5.?53Z1=5RL#<,&WOS5B'AS<,ZKS4K+_G(Y +MZ2_?9)]_]17_1;^T/ZCZ;M^X'^&ZO:D;H![8D^V,`V/4$@R,8F2T/:M&+<I) +MS5'&JZK?Y#W*ZIWJ]LS3\D7(;U6#MXYTZIIZB+KJ.041)XUJ#70N+K1):%1W +M*\BUKSTS])>;^NQ,:4C4&_*7XA[&=^+*N2GV)^5U-O/\C*':I^MO>Q>W>O"7 +M;[=J9V/NOA;_5B>VQ<]S\>^5(.O!P?R&^F%U8Z]927G7H@;C#;F99DO<$C>V +MZQ?JKUJ'\06KFT3DJ?NQ/+%_5S6+Z!.9L\?/GGW_[$3>4I*-\XLBZU\4^:)J +M\I/][-1L5NLD;7F?8>/TA7GZ\*8LLAJ;+2_G_,2X<4U"OHJWGV?3QJS!97/S +M$XY[=G.=5,W&,JR77WT$Q8WL07:4F>NW,E/KU$%_FLVFXW?\VE)VL9A-2NLI +MY*M,EEQ1IN^0^NPO9KFJ>.VEXN?_R^9?7RG6G%(SV3;R03%;O%/%*Y^C5KSK +MGMT<9Z=3WBO3GYSP&Q/8?]>?MCB0E>[]\.S[;YX]_.[YK?5#C1MP]E29#F[^ +M]<<GW[[HZ=N[-DUF*Y$+.LF^Z[_)Q2N"@YO?OOCVR5^?/7SV1-X@5BXE4U=( +M.*OD??K5S6,OQ8T*\@:R\O;QL]%43S[1NL$_S,-X@CT]F)]8/9%G*;EBC:QC +M0WP"C#RQ8CW*GJ#ET>H-XFO>+KCFS2/7W2*_]H;@UK<ZZ9-DULWN!U)%])DK +M#0>/HND4LK+I'_G9F2JW_#?SK^?]HE_]E?_&_UJ!J6(4?WRO^KEJU+]L6HQZ +MSL:S[%EDM@R8N41Q-OUD_9[UG>ZJD?C9.OW0\Q?/V*L4]0=][JXZ3^4RQ7Z< +M/^6#PZ4,]$K7D]\NR?]\ZX9Q\58"I;8X_HKI@1C+'WA03=Q_I==E??*.N((T +M&ISH#]NI?J_NS2L?TZ<BY9V)PI'W'GW[^.%3=7>F:#A]_J+E[SK`D7CWHG$E +MYT.V+K"@\L;PYJCR%,I@/IH9GW0E55E</.E/YHUAU_RQ]I%9+F/;1QB?2+0Y +MG#5XXQ#'-39G;!K'/PW))ZX<WSZ*O>AWB"5'K?^;XU:-H6L&\`^I8D9RO'2) +M9@ZN#S&:5[QBY3W9TK*UO^WMU:^]&D?:7^31+4Z>#6:3"3])-N)7\8I\RK`O +MC&TU?<FO&E^RUV;E1";]Y_DX9RM37D.<+IOTW^G+UMERG@]&_7'&/\5*S%_D +MPH<<[=L[LI7!VE!--*19R>16.'[U3_HQ0XS5(X+%M<=4$L1E3/W96X9<9]8' +M<JG?IC,.-W,4FVURCB^G,E25MQ("4YYSY8558"F+96-E4>=*&R):#_3U1^NZ +MH\T^7EIZO[6%R^UH.[5G;K8JCY$#?LZ.^ZX&\H53*!]\?6Z8TK(`QB.S0=_\ +M7=ZD??YV=,+/ML@2B/\R=7E=3)CV\W^+Q]4/)URR+V9<JB]F2L'%#R=[>S5Q +MKSR%_;:Q\F%^.P1;?NN;,8UH?'7&+Y8)*5=;,QK5#+.C-[C+0[EE\S?KR<P4 +MZ(W)5%2_61.:J9GPUC8_5LK\Y9[YR_UJTOS\HIK$?K&>0_YN/,5\:0Q>VF.7 +MUM#R!4>3<R>-NTX`AZ%U%\=Q_[*83;XL\J-!GSUQP`=K2V9L7#5SIPY6ZR,5 +M68IK]+-_M_^N`=#B#.L@58?]WI[H&]TO99_P_E!]H?O!-/BFW3>/G75O`N7/ +M7OVM)@36!R9D:]YW7?M<A1-[UEW[UWOVK^PH.>*O`\1+$74V6+=U>1*RVESY +MHWA!P>;^\/?OG_ZW>D>5>B\+GZ%&]R>'AXO\8I$O7UNQQ<OIZGFT#&Y'0\6; +MPC+K&F)67<[.RFOJU0T+67GY6:N'N)B:E9=P,W7%.--7/[/R*ES5Z+;RK!<H +M6YVL26X"9<VI%L%/`+2<(^=7#:0J".WBDQ6WA61IW;JN.<P"&OK$9:W^`M84 +MIII(F5/%[1'K7@N+9=8TQIR\1CW5;BRE,:?5^LD\$-<+D#&?'UVFZM04*&L] +MEBT]7]HZ9!]\C8LM-5'2?^<NO@%4@;PUD#41V8K0&BY;II6-R;>MMLMV(W?! +M;UKD75E=GC#QN8:>%B1K!5U+3VN2#=#-8+1GUX"[]U]9_U;V2*1H=EEDR]DD +M9_.G>2Y>N8B7(_SUC#[A.<J7;,H9FS(;C]DC`I+GL\$EOR-7W`,@ALMO_^5W +M`=0O!,CK^((^[*634OY7XHXHXVK"(?\@XNS1/Y_KNXQ>;1I[M'P[K0U>._;& +M[?^]L7G,$<N'R[#!;)'S<8V[08YO'QNG28U'J\?%IP<8?V.9Y%=ECEG''#.I +MN9PSNN1'R]?6QQMS,IJ?L,R$J?K--E?'U:<T_R_[\:?:>85R>3^K:T'5W\35 +M0'[3L3J/WY@K'-,U`<2`]BC<<#5FL@?7CVY_,OV7]GG"/S;F\$>O&=_^1.6? +M:C/%+3-YML_/ZA^]WI?WR/S/)1O''UF*@V-V(>Y\46\@8G'YC2ZCJ?DW^<GL +MRR,6[J_\93V_`88=.J*4[)B2]X#/%[.WHW-QY\VR/QT5[Z29R&93T^8*XZI> +MY?-C^VSV-C]J^08%OM[J+#Z_EZ:HN?36SPEGW9Y]D'?9?_WX;T^>/A9OALS^ +MW/)YZ?P9]O;*XKD\93GX^N>JQ=S;JRKG\BS5Z.N?IAY55#MG57N;+_C7[BRS +MG^X=W?_3G7M'?[QWBY?RFZ<_RN8H9N+-4.JMR;S0;_N+4?]L+&O\/;^SZ6JT +MS'DIWRV+?,+2-V$%O\EA^?S=\I\96S1_DU%Q2YP&.LM9K(%`\M'>T=/O'_^+ +<O\7H9.__?/KGTS^?_OGTSY;^^?].?B"[`.(3```` +` +end diff --git a/contrib/libarchive/libarchive/test/test_write_disk_mac_metadata.c b/contrib/libarchive/libarchive/test/test_write_disk_mac_metadata.c new file mode 100644 index 0000000..f9e47d6 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_write_disk_mac_metadata.c @@ -0,0 +1,194 @@ +/*- + * Copyright (c) 2003-2007 Tim Kientzle + * Copyright (c) 2012 Michihiro NAKAJIMA + * 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" +__FBSDID("$FreeBSD$"); + +#ifdef HAVE_SYS_ACL_H +#include <sys/acl.h> +#endif +#ifdef HAVE_SYS_XATTR_H +#include <sys/xattr.h> +#endif + +#if defined(__APPLE__) && defined(UF_COMPRESSED) && defined(HAVE_SYS_XATTR_H)\ + && defined(HAVE_ZLIB_H) +static int +has_xattr(const char *filename, const char *xattrname) +{ + char *nl, *nlp; + ssize_t r; + int exisiting; + + r = listxattr(filename, NULL, 0, XATTR_SHOWCOMPRESSION); + if (r < 0) + return (0); + if (r == 0) + return (0); + + nl = malloc(r); + if (!assert(nl != NULL)) + return (0); + + r = listxattr(filename, nl, r, XATTR_SHOWCOMPRESSION); + if (r < 0) { + free(nl); + return (0); + } + + exisiting = 0; + for (nlp = nl; nlp < nl + r; nlp += strlen(nlp) + 1) { + if (strcmp(nlp, xattrname) == 0) { + exisiting = 1; + break; + } + } + free(nl); + return (exisiting); +} + +#endif + +/* + * Exercise HFS+ Compression. + */ +DEFINE_TEST(test_write_disk_mac_metadata) +{ +#if !defined(__APPLE__) || !defined(UF_COMPRESSED) || !defined(HAVE_SYS_XATTR_H)\ + || !defined(HAVE_ZLIB_H) + skipping("MacOS-specific Mac Metadata test"); +#else + const char *refname = "test_write_disk_mac_metadata.tar.gz"; + struct archive *ad, *a; + struct archive_entry *ae; + struct stat st; + acl_t acl; + + extract_reference_file(refname); + + /* + * Extract an archive to disk with HFS+ Compression. + */ + assert((ad = archive_write_disk_new()) != NULL); + assertEqualIntA(ad, ARCHIVE_OK, + archive_write_disk_set_standard_lookup(ad)); + assertEqualIntA(ad, ARCHIVE_OK, + archive_write_disk_set_options(ad, + ARCHIVE_EXTRACT_TIME | + ARCHIVE_EXTRACT_SECURE_SYMLINKS | + ARCHIVE_EXTRACT_SECURE_NODOTDOT | + ARCHIVE_EXTRACT_MAC_METADATA)); + + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a, + refname, 512 * 20)); + + assertMakeDir("hfscmp", 0755); + assertChdir("hfscmp"); + + /* Extract file3. */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("file3", archive_entry_pathname(ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad)); + + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + assertEqualIntA(ad, ARCHIVE_OK, archive_write_free(ad)); + + /* Test file3. */ + assertEqualInt(0, stat("file3", &st)); + assertEqualInt(UF_COMPRESSED, st.st_flags & UF_COMPRESSED); + assertFileSize("file3", 8); + failure("'%s' should not have Resource Fork", "file3"); + assertEqualInt(0, has_xattr("file3", "com.apple.ResourceFork")); + failure("'%s' should have decompfs xattr", "file3"); + assertEqualInt(1, has_xattr("file3", "com.apple.decmpfs")); + assert(NULL != (acl = acl_get_file("file3", ACL_TYPE_EXTENDED))); + assertEqualString(acl_to_text(acl, NULL), + "!#acl 1\n" + "user:FFFFEEEE-DDDD-CCCC-BBBB-AAAA000000C9:Guest:201:deny:read\n" + "group:ABCDEFAB-CDEF-ABCD-EFAB-CDEF00000050:admin:80:allow:write\n" + ); + if (acl) acl_free(acl); + + assertChdir(".."); + + /* + * Extract an archive to disk without HFS+ Compression. + */ + assert((ad = archive_write_disk_new()) != NULL); + assertEqualIntA(ad, ARCHIVE_OK, + archive_write_disk_set_standard_lookup(ad)); + assertEqualIntA(ad, ARCHIVE_OK, + archive_write_disk_set_options(ad, + ARCHIVE_EXTRACT_TIME | + ARCHIVE_EXTRACT_SECURE_SYMLINKS | + ARCHIVE_EXTRACT_SECURE_NODOTDOT | + ARCHIVE_EXTRACT_MAC_METADATA | + ARCHIVE_EXTRACT_NO_HFS_COMPRESSION)); + + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a, + refname, 512 * 20)); + + assertMakeDir("nocmp", 0755); + assertChdir("nocmp"); + + /* Extract file3. */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("file3", archive_entry_pathname(ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad)); + + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + assertEqualIntA(ad, ARCHIVE_OK, archive_write_free(ad)); + + /* Test file3. */ + assertEqualInt(0, stat("file3", &st)); + assertEqualInt(0, st.st_flags & UF_COMPRESSED); + assertFileSize("file3", 8); + failure("'%s' should not have Resource Fork", "file3"); + assertEqualInt(0, has_xattr("file3", "com.apple.ResourceFork")); + failure("'%s' should not have decmpfs", "file3"); + assertEqualInt(0, has_xattr("file3", "com.apple.decmpfs")); + assert(NULL != (acl = acl_get_file("file3", ACL_TYPE_EXTENDED))); + assertEqualString(acl_to_text(acl, NULL), + "!#acl 1\n" + "user:FFFFEEEE-DDDD-CCCC-BBBB-AAAA000000C9:Guest:201:deny:read\n" + "group:ABCDEFAB-CDEF-ABCD-EFAB-CDEF00000050:admin:80:allow:write\n" + ); + if (acl) acl_free(acl); + + assertChdir(".."); + + assertEqualFile("hfscmp/file3", "nocmp/file3"); +#endif +} diff --git a/contrib/libarchive/libarchive/test/test_write_disk_mac_metadata.tar.gz.uu b/contrib/libarchive/libarchive/test/test_write_disk_mac_metadata.tar.gz.uu new file mode 100644 index 0000000..216b6ef --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_write_disk_mac_metadata.tar.gz.uu @@ -0,0 +1,14 @@ +begin 644 test_write_disk_mac_metadata.tar.gz +M'XL(")$=EU```W1E<W1?=W)I=&5?9&ES:U]M86-?;65T861A=&$N=&%R`.V5 +MS4K#0!#'4T'$7`6OKGA.W-U\-0L]I%^V4%':(GJ2-=F40-J&?-#Z!+Z"+^D[ +M.&U**SVT'HPHS0^&V9F="9,-_ZSZ[`>AT*0BP1B;NHX6WC*-I<<TCY?HFH4( +MQ;I!B*93$V%"B4XDA`N=:D66I#R&4=Q,[*R#,M_?L9^_"EK[_\+Q^8ET)$FW +MW$5W`_2(5BQRTBD8!?L`@[AR\;U'.L-A/U\M.][!WK9**IO\F3L=JSR*0J%R +M-U13,4]AX_(*`D3D+!$Q:P,M0&D"2@-0ZH#B`/EY-VQVDXDD9103YHG)*XL% +M]^11/,TBYM0;S5;;J2L+IRPB91WF[09FW!L'$U:%11A.9VP6!ZF0?^*`_S;W +M?-Z!DQ+Q=7'_@7WZ)P;=TK]FFI:$YH5,L\6!ZY]BY*;!6-2(9A`;OD35E"'' +M-SF;F)3*6A7UNG6GW^AT'UJJ"^I*@^GD:R<Q;9E6T0`J>D^J[X=\E-1`VU$L +MDD1X!Z"E_TCQM_]^_6."M_1/+&R5]_]OP%]<3_BC4ITE)24E!\8G]#K>=@`0 +"```` +` +end 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 new file mode 100644 index 0000000..a1afb9b --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_write_disk_no_hfs_compression.c @@ -0,0 +1,231 @@ +/*- + * Copyright (c) 2003-2007 Tim Kientzle + * Copyright (c) 2012 Michihiro NAKAJIMA + * 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" +__FBSDID("$FreeBSD$"); + +#ifdef HAVE_SYS_XATTR_H +#include <sys/xattr.h> +#endif + +#if defined(__APPLE__) && defined(UF_COMPRESSED) && defined(HAVE_SYS_XATTR_H)\ + && defined(HAVE_ZLIB_H) +static int +has_xattr(const char *filename, const char *xattrname) +{ + char *nl, *nlp; + ssize_t r; + int exisiting; + + r = listxattr(filename, NULL, 0, XATTR_SHOWCOMPRESSION); + if (r < 0) + return (0); + if (r == 0) + return (0); + + nl = malloc(r); + if (!assert(nl != NULL)) + return (0); + + r = listxattr(filename, nl, r, XATTR_SHOWCOMPRESSION); + if (r < 0) { + free(nl); + return (0); + } + + exisiting = 0; + for (nlp = nl; nlp < nl + r; nlp += strlen(nlp) + 1) { + if (strcmp(nlp, xattrname) == 0) { + exisiting = 1; + break; + } + } + free(nl); + return (exisiting); +} +#endif + +/* + * Exercise HFS+ Compression. + */ +DEFINE_TEST(test_write_disk_no_hfs_compression) +{ +#if !defined(__APPLE__) || !defined(UF_COMPRESSED) || !defined(HAVE_SYS_XATTR_H)\ + || !defined(HAVE_ZLIB_H) + skipping("MacOS-specific HFS+ Compression test"); +#else + const char *refname = "test_write_disk_no_hfs_compression.tgz"; + struct archive *ad, *a; + struct archive_entry *ae; + struct stat st; + + extract_reference_file(refname); + + /* + * Extract an archive to disk with HFS+ Compression + * the file was compressed. + */ + assert((ad = archive_write_disk_new()) != NULL); + assertEqualIntA(ad, ARCHIVE_OK, + archive_write_disk_set_standard_lookup(ad)); + assertEqualIntA(ad, ARCHIVE_OK, + archive_write_disk_set_options(ad, + ARCHIVE_EXTRACT_TIME | + ARCHIVE_EXTRACT_SECURE_SYMLINKS | + ARCHIVE_EXTRACT_SECURE_NODOTDOT)); + + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a, + refname, 512 * 20)); + + assertMakeDir("hfscmp", 0755); + assertChdir("hfscmp"); + + /* Extract file1. */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad)); + /* Extract README. */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad)); + /* Extract NEWS. */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad)); + /* Extract Makefile. */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad)); + + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + assertEqualIntA(ad, ARCHIVE_OK, archive_write_free(ad)); + + /* Test file1. */ + assertEqualInt(0, stat("file1", &st)); + assertEqualInt(0, st.st_flags & UF_COMPRESSED); + assertFileSize("file1", 8); + assertEqualInt(0, has_xattr("file1", "com.apple.ResourceFork")); + assertEqualInt(0, has_xattr("file1", "com.apple.decmpfs")); + + /* Test README. */ + assertEqualInt(0, stat("README", &st)); + assertEqualInt(UF_COMPRESSED, st.st_flags & UF_COMPRESSED); + assertFileSize("README", 6586); + assertEqualInt(0, has_xattr("README", "com.apple.ResourceFork")); + assertEqualInt(1, has_xattr("README", "com.apple.decmpfs")); + + /* Test NEWS. */ + assertEqualInt(0, stat("NEWS", &st)); + assertEqualInt(0, st.st_flags & UF_COMPRESSED); + assertFileSize("NEWS", 28438); + assertEqualInt(0, has_xattr("NEWS", "com.apple.ResourceFork")); + assertEqualInt(0, has_xattr("NEWS", "com.apple.decmpfs")); + + /* Test Makefile. */ + assertEqualInt(0, stat("Makefile", &st)); + assertEqualInt(UF_COMPRESSED, st.st_flags & UF_COMPRESSED); + assertFileSize("Makefile", 1238119); + assertEqualInt(1, has_xattr("Makefile", "com.apple.ResourceFork")); + assertEqualInt(1, has_xattr("Makefile", "com.apple.decmpfs")); + + assertChdir(".."); + + /* + * Extract an archive to disk without HFS+ Compression. + */ + assert((ad = archive_write_disk_new()) != NULL); + assertEqualIntA(ad, ARCHIVE_OK, + archive_write_disk_set_standard_lookup(ad)); + assertEqualIntA(ad, ARCHIVE_OK, + archive_write_disk_set_options(ad, + ARCHIVE_EXTRACT_TIME | + ARCHIVE_EXTRACT_SECURE_SYMLINKS | + ARCHIVE_EXTRACT_SECURE_NODOTDOT | + ARCHIVE_EXTRACT_NO_HFS_COMPRESSION)); + + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a, + refname, 512 * 20)); + + assertMakeDir("nocmp", 0755); + assertChdir("nocmp"); + + /* Extract file1. */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad)); + /* Extract README. */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad)); + /* Extract NEWS. */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad)); + /* Extract Makefile. */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad)); + + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + assertEqualIntA(ad, ARCHIVE_OK, archive_write_free(ad)); + + /* Test file1. */ + assertEqualInt(0, stat("file1", &st)); + assertEqualInt(0, st.st_flags & UF_COMPRESSED); + assertFileSize("file1", 8); + assertEqualInt(0, has_xattr("file1", "com.apple.ResourceFork")); + assertEqualInt(0, has_xattr("file1", "com.apple.decmpfs")); + + /* Test README. */ + assertEqualInt(0, stat("README", &st)); + assertEqualInt(0, st.st_flags & UF_COMPRESSED); + assertFileSize("README", 6586); + assertEqualInt(0, has_xattr("README", "com.apple.ResourceFork")); + assertEqualInt(0, has_xattr("README", "com.apple.decmpfs")); + + /* Test NEWS. */ + assertEqualInt(0, stat("NEWS", &st)); + assertEqualInt(0, st.st_flags & UF_COMPRESSED); + assertFileSize("NEWS", 28438); + assertEqualInt(0, has_xattr("NEWS", "com.apple.ResourceFork")); + assertEqualInt(0, has_xattr("NEWS", "com.apple.decmpfs")); + + /* Test Makefile. */ + assertEqualInt(0, stat("Makefile", &st)); + assertEqualInt(0, st.st_flags & UF_COMPRESSED); + assertFileSize("Makefile", 1238119); + assertEqualInt(0, has_xattr("Makefile", "com.apple.ResourceFork")); + assertEqualInt(0, has_xattr("Makefile", "com.apple.decmpfs")); + + assertChdir(".."); + + assertEqualFile("hfscmp/file1", "nocmp/file1"); + assertEqualFile("hfscmp/README", "nocmp/README"); + assertEqualFile("hfscmp/NEWS", "nocmp/NEWS"); + assertEqualFile("hfscmp/Makefile", "nocmp/Makefile"); +#endif +} diff --git a/contrib/libarchive/libarchive/test/test_write_disk_no_hfs_compression.tgz.uu b/contrib/libarchive/libarchive/test/test_write_disk_no_hfs_compression.tgz.uu new file mode 100644 index 0000000..8db2825 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_write_disk_no_hfs_compression.tgz.uu @@ -0,0 +1,1765 @@ +begin 644 test_write_disk_no_hfs_compression.tgz +M'XL(`/2=D%```^R]^W[;1I(PNO^*3X%5?$9B5J1$2I9MZ<ONT))L<Z+;D>3$ +MR6:&"Y(@B0@$.`!H24[R4N>/\P+?BYVZ=#<:=X#4[)SOM_9,;`*HJK[7K:NK +M)[9C=?[E'_MG;V_O\.#`P']?';ZD?_>Z_,Q_.GM&I[MW<-#I'!Z\.C3V.IU7 +MG8-_,?;^P?6B/\L@-'VHRFAI%<(!V&12\)U;8JA__P_Y8PY'8VLR;?RSZ_'U +MSS_GS[7Y^,$RQY:_>W/6.[TX^T>44;;^.R^[:OV_W'\%ZW__L/OJ7XS'?T1E +MDG_^AZ__[IXQ"NVY]5UG_R7T_L&KEYT&O#.C=YW7;UZ]:>R_-L[[;WLW)Q_Z +M/YRU1[X%$)ZK0;U\<_BJT7UMW`+$^4_MR<0QI\%W(V^^\*T@L,9?.<S_+__\ +MXU9]]*=X_7<.#E\EUW\'7GV5__\=?WC\C8GG&XX]-/W1S/YL&<.E.W:L=J/Q +M?R^M`!=Z\!^&T0\">/J/AF$8WQJS,%P<[>Y&..VI'<Z6PS:L^%W##HQP9ADS +M;VX1:<^=>K8[151#+V=L?;8<;S&WW'#'L-V1LQP#F#'V1DM\1SQFQS#=L<1T +M[X&R1\0U,G/3=A#/L8,P:',%[SS#MQ:>'P(ZU`>JOF,L`XM0Z=$(?7-T;_G` +MZYBZ:-+(&T-C/&\*'8"-66B-W"7,8!<+4L4$R^'<IF(L=V:Z(PNKCK6,\':, +MA6.94#K#<GFFL5@Z#M3R[]C)QF?;--[;X0?HPZ@^`51(ZUBM)MI/)!,T&G<S +MZ/8QU,RWATOL.3&,HF,M'I.)YSC>`_86\F;/A;H&1]R6B.015`Z>?--_HO$# +M=D\#`R-A//AVB+^A',N<TUM&"I@*+*<C*FEK&(SA8<M8^-[4-^<X*TQC`I5M +M34!\+'UK;&PA`#>7_L"0.:;HP>'2=D*8.EJ]N(31PO:B(O`I4<;8GDPL'VG8 +M;FCY$Z`(XZ$5@Q()A)?I.$]$)S!QHB[=$7:;Z=CA$Y=D/9IS&+G@R+C%J1S, +M`4.^E$5BMYJA\>0M81Y"=]G01S#1H)WM.)%=Z"R;>L>DOC='(1:,I,;6'-88 +M3$CJ69RFWD1KMB`T`H$+8WMD&#^8ONTM`\,.+2@_$/,-:CC$]MC^V%B8?FA; +MP;'6:#$%D0H6C>TVE^',\P/C`:88#.Z3\7>YWMLXG[#7%BT'%RGTJ6^-0@\F +M!!&PW>1TLEV8*7-:LM`)V&E<Z\NS'V^-EC&SIS,'_@L#;!O0PDJ/8+U,Y<0Y +MN;K^J7_Y'F`?9(>.8%&-/:X>M$L`]B]O[WKGYP`(M0AA2+A0?/"7-(0"4#"W +M%N%2I51'3NPI3$#X)'\SC6#DVPO@18%EJ6)P`8PM:+(C><O)A7EOG1.S"1]# +MJL=B&1+@YF@.WS9I\HZA^SPG1HQ[->HTZBA`I[[,ZFP3*@GS8<PC:S6V5-VW +M1&5%-V.5D%K;G`/''#G>R'3:\X.=J+%M<R1G0XMIPIP1]4RRCAU8=[`V7,L: +M<]G`8FG4+3](E&>[LHSV#!X:&]#=%LQJ,X26R:I'/<Z5;C3>+^TQ-MDXU9F] +M'%'98*A6\!0`/6CEMP8SE'8'EA30EU-0+!?\R0!R90H49!#%.`BA(VDK;]^8 +M(FM#[NY]MOS/MO4@$26#-)'E/,P\G%W?2F8X0);9WM]1S\@VK=2+`73Z/;UE +M&:=CBV]8L<_85SP'H6=@9$G<!2@Y0-X$-/.P2HA&9`2?MHS>=3_0JP4=[3\! +M43&A"6N3UTT<9M.`B8"<T!@Y9A"C04P5V&0050Z&"1DD="\N<62[NOC;HCDC +MT0PN#B<#UM-;6+SXVO&N;S$["=HOE3X@6`YT@B$^@D!=H)!7"T2.2D/(B?;+ +M'6,.DLK"'U@<3J"7Z3[5N9<Y]);$'P/B%PL/!"S,*JEMB*)UA65F^N-6Z+6( +M^<NN)3)(8`X:A>]2=605C,_`P4T7M15D"'/374+'+,RI17A0"BY\4<NQ9!!; +MT!%;&G.`U68:[G(^!"T&)F4D]F37-1H_`1<-9MX2%CD,F$<SA&B-O`6)$)!$ +MW+50QJ:<];--KB@PG,!;^B,$'UMJF@4)`8COYYYO*39I&-<L;!PKA+76N'>] +M!]&M*&4LWT>I@XKA'#0J9-C$[K'[H,XG2Q];X3SMQ-?9,O1PA$8DMJ$HZ(6` +MZHF-2HJC"<*2#/K6>'_YD3J=N\78C@8.OSB>8,0N:`$PK/2,JJ8A7F`1`0C4 +M@.=>T"2BMQY,"N!/;X"SA):+PY1=1N_D7*!<P2C\\(K`-)WI6^/ZZK;_R2!+ +M1'M>F(^\9EA*"LH:@#<*K;#E^39T%K(%&%"NV0\W!T;O]J3?C]X58[RU7>QA +MFJ';0WO:@O;8R/+0*@A#QQ(ON!G]VZLWAX=[QLEIZ^;JPK#G-&VW24I["U:A +MC!MO=._;8Z@W$/F+Y]@P$ZBC:+B9T,_]:]41`A]T,.4R0,S-L35!4;)I:.^1 +M0=ER''`(<83>WIX:6ZANQKIVBQ;_EMYYKUH_VXLXU(4]\KW`FX3&2>^M#GO^ +MH4?$SW_^$,>XZ=W$7WS27]"B5O,6UYT^76$XQP[)E"<I2Z)Y.[0FN)*LSZ:S +M9'60%#6AEU-12^3Z'DXXFH[TCA4)ZL*;ZPM@_N8"^"I]FGZ!YLK>@\ZGET-X +MV4V]E<^[YS__F/KH?)F;L#H`D9?$XY<82*S-J+B1D\B*!A@83&:+!;,Z6FTI +M;$+Y,!M@8H\W"8Z_[8!$MD<SZ!'0V$5-B&I4'^MQ9"V(5Y):)"85:_-HE-G( +M@8%@-&N-;;*3$_P"U_>.886C9ENM\CC'J;IF-UWK8;09O0QF24[QSUDQ<L$7 +M+Z+X"OAQ9HDIH)N(.T)-"99@VN$D&1)/A9&%2BHK)#E%XM/^OW527WJA%40: +M0;2HL4&XI$&-.6J@MD'F-YF?,\O\;(.(8@LY&FS69$$XPDKQT0MAN)Z0YC@# +MA2I#TM1V6V0(H^Y@3T#DD6*"ECA4TIN#@@]J'\IW*CBJ%JKQ%NA@KM#NK4@X +M4>_"!-/;EU`[E=Y`56030*P$LLAML3IX<$C.#4E%0@%L#AWB]:AWTF_2B[D/ +MA#8!\)8)BU(61XJF(`&BWUI@3=U0]9!)_X'$1][FN4FWSX_VO2W5>N%=FH&> +M`>WF1L<L:.RI*Y=JNI/L`MD8*L]Y,)\"P:^AVV):!Y/I;Z%^%J*5$W(_HV4_ +MM[^`9H1FS(BUAP5,7S*FH#W]"2DX8\_=HK'&6MLC&W0<:/AG[]Y";Q`UE51- +MX1\QMH,E=E<0FQLF*:41L-X83[*<)JBGH?&`Y1E3$+WH(R)%DDS8OJL1`$BM +M=GK5@,/10&K`B)TH<&SI+T1-=X@BEX]6)/O#W'N:;5.TPT*AAH*N%RP\=RQ= +M4KF4>8X#%Z,FT'(3*NUX.1+>K0`'`=@'CP,.60M+1?,`51R;Q!`-@/O9]CV7 +M5=\'FFTT/^<XKGZ0F"^QE3]"L1&0DP*,==\8@JU]SPHL2G;H=ZH@:-[L."-[ +M;6B.[G']3("W8E\LP*:*DP4#!J4ES$(#MU60!*K5<W-!<.BO\I4TI5F+EBF. +M<N0094KH-!NQTPA:0'9@H@D\QT%_YYZC01C!B+>H+2A'EN%B&4;\Q1O^"@"M +M('S"^;``3%K'R)^YY5"'F8FN6&#L-AH'LJ+,`,@`!$O/5;4SI+$.IGC`ECXH +M"#9T[.:?!>YF)'JCFDBZ`&DY$^Q2[.-=;"7``C6:1[+'I4\OD$-"0H=&!?Y5 +M;FB;FP^C@[P5O1"MN35'$VNX1)O*8!V!36KN<6!MV%6A6CT/=C"+<2ZRB(41 +MC=BJ+C3^P@`%*^D)+4=T2&Q2!Z%FL;.)^@3P*7-A#I$`S7K9!:K!;-Y383K7 +MIV%!AFI#$6A7"NF/E6"A0!T@>#7V&B*!W!V;(38+#;ZCJ+=8>Z*%RW.=;$T$ +MA0$3W833T1R/5=]HBA8)'F$)3VP?UKWT()OD*/+8RXRNI*C,R%8EMSJ*"1P; +M]FW$%@'W`\YNJI(:2FV((O[[`":WZ`6M$Y7FA](XN*>U(L9PY+F?+==&+TML +M_,BL-^\MGKC`P*P1>Y-Q/'FD4',X,C:S5==-,7$1!5N8MB!WL`@8U076\$%* +M750YP?Q^@MGP//L_Z)U]'DKY?XKW_PY?'70/H_V_`XK_>=DY_+K_]]_QYYTU +M-/9>[AC=O4[W*&=KSD#OS<P+2!T*8YM4A=N`C3SB6T%B"P[T2W+-(G7:>3-. +M<!=.+Z+RMEQ!H;%]0E&H5N9[WULND,^>6B.C>T`D.K%.V6_OM;N`2,ZM,</M +M2SBY*3.Q'X&9S"U_BA8Z2I1W(/3!V$K`WS[-24^4NAW4!6TJG\)Q(M[F)]!N +MO"',61>4(E$2L*U7$2*:+)^-[JN<VG>&4?49\E!"ZD3B7VYIWTN5!N8@50_A +MX=&>HS`#H1)5C&P-U"J6I"'3]@C35+W:%UC1-F)4_%9<X8U9N%*6$;4]2>T2 +M[)K`LN[C="25P+A]]\F(&:QQ]+>T"\(-!$WS1Y"=H-AP!W7V<[IRSTQTY9[J +ML(^+,3H<T'ZWQBVI=H&R2(HL:">H2[,L2>R\[[<?&[?6PMA3'?7.?B2QT`J. +MA46L>Q=X4]#C#0%T0^.4V@W4U!H&H1TN>4^LMYP:G=<Z7;FOBR,JW'B\ZSI\ +M@BX-8<[BJKFW`V\BT%]*=/1RQ'8K1%\/-)5]\.G3)TULLIX"'\&<15;"MB=Y +M:$#NHL/*1,M7[XX#Z.?&7Y:N-AG1\R9F*7[HJ`^],<G/(]I;#5O=1^&,)(-P +MCAUN&4,?;*U8"5WH<.0RZ)/#K@#=!D7VQ[MWK==HR8]QQZNW\(VN:OJ--3'1 +M`4_5&*#2MMWD+0_<V`4[:\36.I@A0-&Q6KA-"].3+(MCW=1'D>XYXVB;.D!C +M3SCON-A.5ZU"L,M"TE`$8^`R`PNL,VP;.YAP88KYBRO3L=3>FJ"WEUB!8F/% +MP\U88,=(%]BR&\@)&JV'=N,"!FA?$;A`1^6#Y]^S/@46JRM=^VC?D8XY4;M5 +MYA!:O-TD&A$WPT'#@J%WM.&:HS;*C>2J\20W+MZ>W$:N-R+549SN"M;7S%RB +MF:MS#^A)L944F1.BJ"2%.Q1'6C\$M'MAC7F#8S@*D%M!6X(=60(ID[*WT%?K +M[1+'!RR_15KAQ`9\VHVUJ+2]-]$T&GE3%PU6\KAI+EQT-K'?A=5D5.W)(<`4 +M(C8#1H.-*JKH(^B`4%7AHVO3IHTV%*"QDHM9;!*"T)POQ-)4#JZ3-WN)'M!F +M0[282<Q&/?>.6"=V4Z__:<>XN_EX>,`.-0^5:0.W@W$0`A9F/*?WCLC=+A8S +M?=B3'\X_]';1Z:Y6NF/L[<N/(I!"16)$X1.X@));J-J&&8`@$S8=YBEO),$+ +MG&]V8CT@4Q1RA%F*/61;3N-'>SP(C@G"WA?&(OD37-Q@>U+[^V1@R:HQWWHM +M"=Q8:IU"14;&U:WN<H[Q0\+<4]5.-Q4U-27T5&MQGC\9754B>FJ%;H$?.JHM +M*!/^=J>8X;%R"=D4B$-L2LATWG-36@H7$55-,)>Q<*0)?BBG@5P:(S`NGQ;( +MQ,1R(B('D@BZ9:45*"T]]A:+XCH2$N6_6--'+"U;4WN,?Y/%U&HMZ6F)3\S- +M7^OC=P-2>NC@XN>5"/,X&OU=P6TU50=X"K$4,`N9J;Y2,PD]@6!R"QR2[M;4 +M'#TEMP2(\ZAU<$K]#(59M(,+UJ80X<1_SVUW^<BS2DILW'1HZ^Q`C!['<Q`H +M[M\Y.'LU:4<^,Z3Q%$5:T%+N:M/1`?FGRT-TID&G@/(,+`BTD+D=H+L"PSH< +MFU8+3KNIY5H^&K0-&<J%3G[>]@$2]NC^R1#QPX-WO;O>N0'K%7E#.,.E87RV +M`^$]$(*"JO5232@8#S%GZ8,:>A:+)#'@+[&'SI(1U59<O;,E=&0[@7<=C2'P +M(9#T-,79P8%NQ"#>X6K7A9@KA68D"!(W=L/#@T&H,UUO,AF$.VA/#2C(T<-_ +M8#KB/^S%@Y],:B^:#ASP0/YZ&&K=CT6,5ZVS6R'IE-\MODK(&'H5#>V<5&YT +M3(E9J<V-3ON1PT4(Z2!"PO4WL3VE#=%W-75[TM&G[9`KAND\L2T@)C^CJA[K +M`S^9DN[26V#=-;:'"T=GAF.R/3D^28XO.Q`;?X%1W^\D.X3VLEL_-!*MB6E^ +MK]M[D0J/9*)UC&N)=)EH)6"5MJS1S(/I[@)+A!&&$?I=E.1M)2CPDL:%,EFB +M0S<`)1$FV,G3],%V&P0<=6*L6J_:;_:ZD7%A;(<8'RH>J1I0]6:"@C`3=A&6 +M_AH\""T0"@6N]/['#`3AO0/"]PE)8R")@%$Z.2B\0'BJ(9/PP^6"V$0@3&CJ +MB[TW&<WKE#>/[`T>N`P2'6W@0#?@I8-P./YH?AA#;PK&^(/INT+[!`5GZ3Y^ +M(7A>0!(>YPN/"RR"5RR>.TD`W"G<??RB37!AD=($CVD`S#_:+'55"S[0MC_O +M7#(1X;(E`E=@1N"&[.;T"[S>E,$U3&1/]63OLP>2;`(R/>+(<49%_&EA+W#/ +MBV3384X7:G-?LPQ2@(?M-V^TV4B@>ZK[<$K<]M]?]Z_/A$^')!!6A)IU<?O# +M23L#)\"M$Y"3H,JA;IT_#\W8/MX`YPI7=^]U;G4[R>I&W3<>VR)`A28X.JW% +M5BF'`>H%='(+V$L6H$`_4H3M',0*VOTN#/?2I<WE(?T+JP_G(/Z-\XF"#S;B +MVUQV/+K0EB:Y-`R")>^O-C:B#3'>KP5E'1>@LK>%22:%[H^]F\O&!H62`=$1 +MA:-[2H23UWUL+D*L@&OA]C(4W\YHWM0*%P_?#MA%!0]3'Q^B8CE*#*=C*S`G +M5OC$>DJT$-#FBZFNP$W#`4N7[G93AFY`)9?D8.J^_+\:&Q1?9DU`9[1%A!O+ +M,5'_8Y[W;S&J#E::CY:3*+<KR[T^?2=],`&;0ZZ(N`/2+FV94*"\BK?3(V*) +MF*1T8?Z*NR?"])5:H6`AK(*!=G0"9A0N\Q^!(R(!D$2[V430*43;"8RK]E#G +M7H![&4#K`GK$GMF^9USVON_]I7_1*Z'W`RAI,,MOP^785OIU'J6-GB,7!/8# +M;DZV-?U++MI3:XC=^Q88\S=X6NS5*TT%0J"?S-%(Q#5@E`QP0A%!+".-CPUR +MC)&J@/X3N0$%W09L`J3-+A!4#2)EG!JDUYMJ)F%$9)G6OIX[ADD5&!\LU[?O +M`^KY!&'-6H!I`R9!<1D?[.FLA7R6Q'@(-B<)U3M_B48N&;RX%%#'^;#TQSM( +MZ>VO__O_A;7W%_1OMUDS4/SJ+$.AD<,F7,4<=$9J/PS(!K'2*+B)"49<#=N3 +ML@4YC'>`RV*`X@;4#PS#E+8^12TU-C*4*XIE0M9`&^)BEQ;K(R.EV2@4@2&- +M#8I1X-B6R*[#HL"VF(K&L^V.=25U4NH,A"35OL\6A9NP;\T:MY-A"HT-7\-% +M"8<,-EJ]XKP(QIC&(D5I3UYMAC8VA&XLPV*'N&D-+8`Y8RLKC\UQJ$(\.IUC +M4!H;O&%`[A4]""60\2>108\*O"BPS4H13X/7PND@7&N[\>7*GFCB:%G+-44H +M+C+UK9LY&>'Z+H0P?$8X<I;_F9NL[[J(V`K1/<26[%!VCPSU;6PL+`]U=HIE +MP#&R%[BR<VN2JG5"J&K:",&]S(1[";KC2S,.*O26+-"#!*A0)[-`]S50<N:_ +MR07M)D&SV_0RKN<F0&]17R:?B&^UI/*++%B:&O'^$3L,KR2ZOHSDFCDB+2"N +M3?BP'FB5_+H$O69C!"P/YC.M"1'^`>MG:(>H2#A/+51<QR*B16@5OD6/&&"U +M0?,HU]N/9A%PF1DPWZ$%3%W%''&`BEB_(Y@]0+H',I&C4N(5'H)ZBZL9YUV@ +MS%J8;B"3+'8X`0O&@!N-&\#:NAJ%4A!!]PA6Q:PQIH^QZ&'XCAKCOCR;0(TS +M9U11VK`_PH7@A]+?)7B-*3S=1(8],*)8.N`E/-E"S$72D&)=0&6"[P-\!<I. +M8X,/F.#(")-2PR8/#(9#.)$+M4T;1%'=_V*:]_<>R#L;!\`]XK!1>7HCZQ0= +MX:NI=&V-@;N\MR>@PMG0!ML/9RCIE%,N#GYAWSM>8/Q@_NJ:1V05Z5N6.(-A +M=#GXP>BCXP?JCJ%!P&Y(7\/H'S_F<D9VW8K\A-OG/U_T]%,>H"%[5H`R1XKY +M!,:#Y3B@-I+(XB!,UPN-)PLP.81M#/HVU;!LPPHZ>KL)]7^'>CD,-(>QS6'M +MT#Y&.0'L#]P-FC0V9,")0>VAV2HPQ`BJV=K_#):<!P,1@AXI!(/:;96;.:0_ +M[9!`"3P.+!3QWV0`JSD8.\5#DY5VV0.A56-<.1"F8"WL)5JI8#F`$DAL?V8Y +MH-Z@C0IB&7<!:$AH-"BXSD;5&56VS:6+0M[=;-).W@9-&0S&]E!5VN;0KB6? +MU1##Q\=`$+#93M3Z+Y[E3XU;SX49/,2M<S_FH4LYYVF."W\@47I91(DW6-@U +M)F<U[RET<UCW2\TX+@8<QCT1>TD>1!:<)<YUDEU@N=YR"OH<"5"P=BP.L\+Y +M!8*V@UO+.&Z\S["78FG]B6$:+8>#3,G=PJ;VV:?3LQ]V>-]!G9,2CDCV:;Q) +MT3(C>YC"VI56#`)H2!N6I-92.]BGQY1>QI08/A>+O<K1:JQS#9=3GL3`Q4;< +M60=#4`/(*Y(GW@^T[B3`3M&X3M#CS0JJW/N.^^LPH%YRD00]VKTD+PMZBZ)= +M3N7`(/EGBA/GF[<C+PPWU7%:>11*(LW%<4B*<)=(WUO0^I\M:`_56!TU,"B( +M=FS)$[U+>>0V7D,TN?3S7<#>6ZAI>B+`&K=CIH+ORCA%T.<F&)2YHPJ*JG-J +M@@J,3F!SYF#8"SM=:8_4`UKBK`F>C*30SWAE3L#0<G%)CFQ@(4?H].E?OKO" +M*$+X^?'VIF,HERQTJXWK5/4NGJYK:'M-D:S<"DADX/!1Y$@D*SD<G$:&9K+G +M`P<GJUZVC/C5@XF^"P[[#!9+#L$ADLH]A@(4J)*VQ29'H!.1W?,6Q!+.(N.F +MC:;7O1KCL6U.70^DL^B4SD'1G&P%L;"+V%ZT\%@SE?TB*K2NF&WIK$^@EBX* +MM1HT)HY>PL:&_")$0'1F<&'YZC`>Z7F>;T]MY`QT<!H=0;8C=O]);?#M.3JH +MM`5,1JQ2_]CTD-J?"H+:@-9@,#&,O+1$*%-#8.,6[9&Q(0*^%N)C&T.FH>/: +MGC_=12$5.P,@B,FS)$,?YCY9LVJ`=W=A)GGA+F[)[]ZCL^B+HZ=/:#'?XK/A +M].>4]HN)OQ[)\#,0\'CVMPVKY&GI.Q2"=G`X'T_%:.9:%OL:0]N(YUBX%3Y0 +M)>IIQ&#&>HXPRX`]LR];B)*1;P:P0I&08N&M11;O0Y((AEL""_/QR#@#Q=^7 +M9Z#&MD\1%(9%MK&QM;MU3(8P\L01*+D3D&1\?G7#,.90^Z5OZZ>>V.4,FKO- +MKE[T%(!PF-%NZ\2VG#$U"/H\V>@+T[\7J@AK*"*D@D.FK9#J88Y&2]H74G5` +M5QR`+>U@A@7BT8L(=7L3E!".NW`ID`0-GNW+C^?G3=$'<CN&.E"YRF7@+XE/ +M)AD%E\3J36[A';%^HP?E,09=]RV+2SP"B_N>1UAK?\FZ.[G6<`_0L3!8&8K" +M(:`P$C!-?-2K8`E8%!8EV196H.5Z+=1<)[8KCU`,,:<`,1.QDY2N)\RL>]#? +M:$N">2>[]I`9,?OC%N]W6T/<V,<-2B1C!QX>\Y)]->30#1@CCFSAU!9T9-X; +MTR$MM()4KQUC@TG_1C:`X^DMR5CS*>YY:`&_L?%\"HX3F0+R6)D(]%%#Q?'K +M+=]HW8EX=9&M`"PGJ%$23D;W4)M:&*MOM);):2>:1.Y5=<HYN71OT6_#$3M2 +M"3B*H...S9$GTDW@NB9)A-D_Y+E!3:_ZQIX@L'SF8<#F:P:=%EB5P4)B,9L4 +M-Y"G/>W%M"<=4'(0"A"Q<`I0R)`X]R%4XT@V$-=&Y0GL4V(9(IC'&8MC[&(W +M''2DOZ!Q9(ISPLQ!I!N#S[(V-F3AH-K".V"=:,A3^+LM=P>BFO9Q$@$OHW!W +M,':P0O;DB4/L1#(7RN;ADFTA65YC`Q<:6201/^28H*EM!<E2V+<L7`C*V986 +MIRD\E,M8K0R_:.12KD1*UWLL?6K)2;1<CLG'>(Q]\43V*`MMLNE;-C%@CSB9 +MXTWM$3ML&2<0!RU%.`EY/3FZ$&FQ'X-<\V+R=;+EUT&[<Z"FU+%AX_$\=*O2 +MM@Q^W=>/T6Z8K$F2"H(LBJ)O=BGJQIC;C\L%"IO(C\T51@W.QO@^]$;!8A+9 +M7BP1@TG#T^9]_,A>3-9R/YKXVK[%:[7KBL)IA^825F:':[9C4'0QUHYJ`DH$ +M,@E+QM)A;50X'58&?=+*M;LY&_LB='$S<I_SZ-]^O&UA^>U$;5"EI_(PJ<8, +M60&'V8JPCM<ZG#PFPRPV=E!W![4UXWO3-GX$YIK`_4^>FG]%]8H24RU0D1:> +M)(YO&8,R,[+$'D_DZ41GV:98;YLQ102]`NH$Z2A:8**.Q]$:9X</SJU`,&_5 +MF4(C("'1UJ)(L&AI1\4B[?2E&?.1["1-*PX"40RT#_JZ;VE\`"4LV8-@0G&< +MK'X4O,WA&-UL&Q]FEQ;S'P>DD"L3TRV-A2)DN5&&+!G")7AI@G4F2/T`ULWD +M*:95H+,`9!X1X]@HTK#E^4EEF7?;;]IJ!!@3^Y&W)-C/1JJ]9N!OM]A(;WUI +M[B@W&XAT+0\*[L[C+C`E=VBUQ,[I#@A<G`U-E@BFV,%GK)`8,<<!P$KWQM+X +ME@<*#:,WH5BZ&>WNXF9@7)&B8/_/>!P<MR=$C`!II5XPM_!L+9_U0/(";X=4 +M+&2..%W&R7X]>X2U8M,>CA,SQO#\8$O:1^+<0-[@\)9=-*&$GTL*F"<U-II( +MA=6BFUNB)+D;$TT(XLS0,]L_DE;,A*6:!8/BRB`J"@LPH8\\5(\Y3!"U,&)K +M[29OL(A%\"H]B;60F3@@!N^.15(RU!8Y[BGJ8*6Q*..9MVC>Y)64W,M1@)+@ +M'DS8/7EVDU/,/=AC=I"W$S@G.),M/D9B8\ZVN,-`F-64ZZ>A11=GU.M-HEH* +M+N+I+#3G?*`\[@V3]I;1,F$-_!W^.X?_)CNX-8&:/WI19>@_(K1L7F"VW/H2 +M!G^Z7J\3^UD*CD*%2,-()C;@(UDLVKY8OM>BP\,<B1O-P1W43"/OSQR,7^.] +MQ]$YU"8TG]CM8Q/,_(G.M;L<\,"UR>O-5YI2JFW#I0$/$WMP:F3CX6KHMVR/ +M,$`#-?#`V*0PWI'Q.\?S/FZR9U/N^S*M5]H<IAF\1)<6QG:DXHI$>X2VGZ[F +M2R-KJU"0QJ'70^LH=Q>R-^#0@>#0E%=L;@;W?,Q5EI<WZ@>)\A0<;UG)?&ER +M#K9:>$9FZ%BM1]0U>&ZI=^;(@<&.7'VWYGSIV,;MTH..L-RRNNSGU26:/N?F +M`OY:`HYK"_;)2@7N)E)>$K8T9RA(-/(CW$5&M8IG*^ZM"'8S7&+20#W2N+&Q +M"?)\BEE`0G1-;!J419A.QHD"Q"YZ5$.F)AD+B29II_,3&[\"K1NAX4GD$08+ +MT-Z>(W%TYB*[+6\)=!-+(!<PP7HCN`L6GJCF[.!>[71&=<()//9&>#`<8YI9 +M@PH$9VELJ#AGJ"!N0.;R?(T1Q^&X7,GP45V/YHZP7(`*'=QI)U"O*"O(TM6S +M@)A+$>*/(DD<51Z"W>6Z(H2<MG^E)6VH7"D!!4KP9%;'%L2^`TLA8&2H#CR) +M#5[%.^YPF'1ICD#"Y2'=.AC%I6EY1_J\9&4#N:CUB#[M@)QAC$?RN?O^K0@_ +MZ]R]%?W<?979S_LZ[XC#G3`K%KD`7!57%R7#HU/KR-DXAR;WU&:<U;O69OI8 +MZ#%S;9G]`MV;G#AB`WB2")S;W4>25#BO`M`RHB6-*LYUX(4B#'&Q'#K"O8:$ +MM3,.AHC0Y8!^#!?A<.XMW"R9MM"EO:&?K<6J>8&E,,@HA%6*U?`>0",2"1\6 +MO@?,:PZJ2[S7W@GS,;BW%PLM^#Z>HPEM6.O11$&'EJ>*@(?I=O`>=1;AW]+\ +M+%3,RV0QTAVH3:'M?W_]OAF;/:*[P5B%#N93A*3L]PU,_6G'_?SH()#G/61< +MO$S)1W50JZDO=!H9_X680I^`I1^.9IP6123?0QYW;/1!K?06,O?`9^@4WF85 +MR7,#D5@%]Y=D)CVAS6'R0Y[*(A`E/94/XE-Y[V4TE7&+:$E6CJBLY+HA+T9, +M<)E`(EE&:1AEM.6.4/MY5^V#C>HN&)LP:%&J3MI/5LD^99AFDC8.WY?HK"^% +M7<VML0W$J3,H^/7LZIU,T!'Z3VC.L]-'NC#1(/2M*6?=X1P4B>0X(G<L^=.% +MC-`V58#$EYC=0%O[.0QY7Q>T""?\&:\PGH<Z5<OBJB+P./L+BOE=(>[5\<4- +MJ(7<8F?=E=)OH@-M*N)$HB*P<UNHLR`/H0>R0=3!EL@!Q=Y`Z"(\:+TA[6:] +MFU+$[W)T<H/SNM#$W!%N`>4C#&0"$AE\@%Y4C,5S[9$\&$2M,J>A.4V<K>5) +M1]ED`U)]PF@K6(Y#-V\<NHEQR(/K\(EA27EHX5:CI:?DDWE<@8UO-]'-]L@. +M+6E2D-VB-')1K\YA;GFQ>D5P\9B0R([:/S*D'1"9FNP)!SW(ET=,8>JJ@TVX +M<H6+8H=$OZXW!]9T0OL7[40%6,\2JXJ"2$2VG(QN8,ZX#)0W+P%D!_<`1.=\ +M@</Q'FLLSE(=',5X]2`T*<DMJ1&H-.C)ND4U%5/08\LY`!:[9"!]63N)CV"_ +M8W;6AAZ0DQR5KFZ@T=G\#'NV&^DO&+1M;(L()/1--&5".W2?L_<)XV3%7-C+ +M*U4SL/`HS+Z"N]4DC91=VA%B/3$M+""1_5:RT<;&=D\ZZZV8:P0==R"*HRP! +MS)>`64YQ[G?:G5=@<>!&[2/\*\2:D,AM1MN/T'C+"H3">#?`HYC28Q*=+;7# +MV(X*,#-7NAXF&N(0<T)1Z@#?6RPL<;@1&;K(G(^AJ/Y<%3`$<1Q%*".3\!Y< +M\JK3=Z[IGIK7>**AU6+^VE),*TH71-FU?.67$\>27N:,V6%\S!*",&'4:?8; +M\Y>=I!;>V(AO(,1IROUC-*0T3ZF,\SWYX98VUML<P93C?NBF0IUR+/ZNKAK$ +MX2*5,AXELL7A9"@`9`P%7R)`?))36',31LB/<%\AL$!GX;C%*:JKIS*9,KI_ +M.1L=#+C8E)?`L1`!<_S9#C#G8K`K>J)UVVM!-?=>MK4\-68P$B$NV;RXJ\OJ +M.%S6R3FT3S4570M/VZ'$6*B#@Y(LO+`B\%T<J*2=?ITMM6>X5TRQLJC$02'N +M<B&B;^,]O*,+4]IQ`6UD=\@GC8BWNXT-U(%,UYN;0@\D9U(LZE8&MN2-?#?> +M%9VNWA5IYJ[%DD3+$D\+>Y2G<8,W_BFB5P2(,.Y,9&T1BH]&!=W2P"T:&[R] +MH,\&W`D$LT7$.Z(%A%9.+%!3Z&LHGU'+POQV]^:3DN;`B&":PDL9JL(UPPTV +M(HJ'MS`(E<-"1`BU3P(IH^T/?*H`"KYO"E,7(Y]I2X\V&S6#1D@A[!@K.OB$ +M5JG80R>?,^IY.+D"#[G4$_OV.9"`XE+19TK#HK28VWN,-,!U1=PLE@9$C/5> +MWK3OQ,<Z@GL'LF7&YRLHFHIFGE#$Q+RE8R,F[RVC:*=@'S3Q,":*,UERQ#=N +M/T$[QQ9WE$D!`I3XF`O'/OI?F$O^W\4!R)C6;]*>"_N/Y+XASFRH?/N-.+9" +M:AL7A#NGXURW@"A`<<<+/,JU)5+BX]'W+6JS-M@\TS".G;*U6"`VA?[JTP%K +MD0Q?CX?$F6V.9B*`G9DU>L!<["-,DN+Y**-P+)5U:P<6RSJ0W/9BZ<0SZ<)L +MQ2D)RV-NHU8>^>;QQ%Z.`=*)^>8)4&D5TB44<1Q!JYOM,>WH_O0X'!WP]"@< +M>$3F9TL;)S4C^-RL/,,(>@E%$F#&>#Z_<V])S99NUZ'D@KC3PTN#[`1V%8'2 +MLO&.F`"&L(A^FN-IN.WF+CF"\5^@!].!P@@2W'8D&YHM(3NZ_A>'T]QWP'TQ +MW(5XM#H"BT>OS='5K?%)E)#-8#LQ72\&=^;`^+J<+PG:3@<(8+[$YR<52HXC +MX8]C212(S!5!XDB/RF(13=#CQD:<I,TG`6GS:<EL.C'_^5@5'BD9B^US98R& +MWI+FNCA#>2]/(F>[SSJZUK1Q'GW""@@7):\;>09$'5:$_J63&_9C_+!SN@A= +MR2'`;`VN,^S&1Z(3T^`T_Z%^"4;<>*%=5.'=PWP*P!PNO5!Q;9(F<BAX(%!) +MHON"XB7&=BXW29))F3T0Q\/YGH9-%C^ICVR[<VRL'J9)X6Z/HHJZ&D`'-_C@ +M!+(UZF5KO",.8=];%&\3Q#@;;\>B6Q]L>\RY"L(*3^"/T`\SEL.2S4+`?.TD +MNOL@8L.^I5:6+X=9Z#L4#(%\H(Q\@MMEZL#D!'8IUI1RYK`?<VMW"Z<7ANE! +M9T1Y4F.7-S#1;`,.;,($@XP`+^*'ZO`\@TI8K)D)=/-0%*`;^3'CU#C;W%C> +MPC.%\0C4G3S!<K@CPP;%N?;L-0+U3?"Y")#Z6^,MN[&C%'K$NPA):<>.T&<4 +M]4K7,G0Q=!M+#*"9-7'%EZ9D5HR5EE@GJ]R7\7+CFJSPZV*>(#Y<X9A323&W +M)0<)BDKR2M\_F+68PF7H\!DD$6FT#,0-$/A-9+YG=;,AHO9##M]B\T`$_XL3 +M8N3L1VT?,U92>`F=Y)'*]MC0'$X<Y,Z;/!C2*4[6L9Y+Y]/8A/`<Z'>@O2W5 +M;Z5I<`)@OH-/!2*`]C6ER@<R]IK\JK"8FNQ@Y!IP093"AB-$5!S<7FRE2Y<R +MJ;0Z?\&M1SP'+<<A6[&!<>CFC<,'D<.+E9K@6.1\<)#J[B1`8XOU-FYA:JM& +M6&D[`N\;D27`F"YI)T/SK".ZR#2,=W[150;#S_*:'=YJDX<2A,RV\<(94'F@ +M3(Q=3/;-CY&G76U."I_GD3SD)A)OBF-%/'L\E;L](&<V"J5-4JE`,(_N-UD( +MR=@BH4;E=S"R2';]!5H.I_[YV2F?*C`H.;0PWT0&(C+;*?G3@_G$,XJT"1/X +M&<\+FR^PXWX[ISAWNIS(=..)HKBR,$/(\VK&,UJ(>;&7K5O`O.C$YT4$V!-F +M.<U.UB>VJ8;JFB,^TZ[=3$`UQ=DI?=!B;L?V?F`%M!-%\5Z9-J5IK=#B\283 +MSNDX]9@\]C):J/`>R0D?QC&@""\5)I@'"Q?+5<?MY!696N-CH4X`!0.]JV</ +M$XEBS$<>/;G8T7F]='F00'XW1??F,M2]>/<J.*./)SQPBN)&(A#C4;3Q+:@' +M(?3#U//&8O!C1/F,(6;Z('DHK"^8I*8,`\W>O-H;=C2Q0H"O8A(7A^M]_U3Y +M)&@MB/T(L8C038%OY6VE,+U%DC*UF\;<=T9FKF=,,)>$3S\I!]G"MS_#0I\F +M8U8S*OLR45D%R,'J#FZAJAA"L@2U:#4.BKR]"B2'5W$^MC7UC,UWCCFWK"<K +MV,2829`:__O_X8EM<3K.N16=P"4*0OCA0J#<,###WT-K/2$-MD7`];\V#4=N +MY7*OH"@C"M)!C_[<%GKM::Z!H"CMB8.\GA#6?E0UK)92A+AFE+?/&<WFWGB[ +M*8O*5N^AJ.Q`8=2V*<PV6@>8`I[/;4KM#T8\.NX@3MC)K#PFJO(8E`N,HN5- +M6K+,N>G?`VL542^R=MF&)M2NFZB=6DYO05,<1=Y1,7-)(AT9@[-/=S>]D[O! +M[=G)QYNSP>75Z=4=_)]7-@CC),#M3Q?G_<OO^81_H!:"NA32BJ0:-W/($P5] +M9G1.=(QA]O%<#_(2#>M)*@3BO"O/#5Y%H(2*I)$I:!'V@:YQO$I%]E6>XC74 +MXQD),!7/2.X5G)4J*6T\';@Z.B`FK^RDZ[.;"ZJD?''UX^79S8Z>YA]*)C># +ME+:W'_N<L^46^0MN68B8XOV\ZFNV01RN1UJ&?ER<+Q:EJ;<935"\7H>*YZ-1 +MT?V-,DF,8;Q-WK!!MW2@2P4:TYZV>6PWR5P'+*\-T,<<;N=/Y(O-6'!TNB&' +M\89$<!F^43"'I6=!;@KCAGNHKI$4F@1N'ODML&%I$TF[Q'<695&-N7;3R6*0 +MD+Q"5CAYT2O)-X'Q=28!&WCHLQ6K&(\H\:Z93)7`LI%<.]N80@/XO<6>J)@S +M1!*$)H!V-E1GXJ`&S";$3A*7W]Q15</@)I]N0L7H03HN04<3Z$X0>[R+.V". +MY]V#XDJ$MF7NV]B@FI05CA)S??KT:;L9I>;BQZ'CF6%33,F][+C=/7,_/I)O +MD@,I^EJ.H.:!H\T\>:V=%"BT#XJY-RCE>2#/V9E\6Q*8<-')9K$?@O:OD&=T +MW[*X!BG0#A5$)WG%(:/8LF0W*A'@$O%R)8?&5(X0FS8B!RH95'(6M%%[ISW1 +MD=#$Z`32(RK8./Y0)LY?3Z29YL3E`1\9>XI\?LHI+X+(HV[4&BQV\G/VS?0V +M<6/8F)*7QY!R>F\OMIM:^BIULZ`(N8N._R4K$B5K9AC2(MA()&>>\$U%H>P\ +MLE03+48*T80O27C6V18]>-^.*20WWA#S4M^.["5=_Q0_<:ZN6I6>)+$KSG+Y +M,#9).^D("07V=CE?J`S[&+77WE>A6/W=*Y54G0,&#B0:>O6T.VS>@4VC>SAR +ML!)Y,E7@BUP9/,'1E%!WBO--W*3^8C9P<NB2\LB.#MSN1)Y(HJJEQI'.=?&> +ML_">)GNDVWZI:4]QP*ME2#EO>F_[\JKM=&JAO6-#774K+IT55Y\-K1F>^/S& +MGHRMR1::!;`,U?D\N@6-G=[HLGFBH*.&=%VH`T!<;CM1,Y5>-6JJ'>?LN\*G +MB5KP=I-O_`)E`=4RWMM'.XF9M;I0EK>0LLKR47'"%&,MW(P5I^78;0)3=XI! +M3_:$1P??!19Q@'=JGV9JB`,^(DF[?LQ'S02/@M/I7B5A%+/K-2X(Q7T!\J(B +MD0A%3<9-7-B;T4H6SOIX/&9D!]!M`G3+@*@:V06\0&/W9F@1:F2G=63WT!1* +M.$^BK]AYK46&ULTA%G0<,975FV^X2R:6(^8B<C+N2?IHA-,-\72$&/]V5,@J +M9Z^><8B@R$E`04'(0\2AF?X6NJE],JKO+6LAP_6@/Y8+%**4;Y!/W-!^!L8_ +MGI^>W7"IMQ\O+GHW_;-;X5UZD[?&$EX$$2!SF`S,RFBU2N:H1>5@U"Y=V-60 +M9I-%-KJI+H@BG["4+6,+O6TJHZ5P6AZJA,Y;X6)+ED.B^('N7@3F@R<V3;:\ +M<5Z#H`C)0Q3((X$DQ"EUCTAQ*17N0XQ-!1&`]W,A,TADF=H20KEE91RO:@@F +MGY6Y>5O=[LQ^O1:Z7-K-9-DWEN=/39?2D>EI.$''&^%V\9%^B2:.JT4W>T^_ +MR,DAMH%1*@?L]TPDE95..[(=]M5P2F[,8WJD24'.7D8)$'G_6HB]'?9X8<'7 +MYJ,V\B(#$V83:%/Z-F9)+Q,[.S1Z8M2UNX"T6!5M<P69=+2]<AQ+>"5S70V? +MXCJRS%/%97".*R1$X6D!+*$YH?\=`W@I)0TZ.92C5]0LRK8UL\`&Q83NR5:1 +MSD;.E-@&42QSDW8<R8=&OO4]T,-(6U=R4!SXI01M74D;P[3HLFZ1`$$F%!5W +M[$3[R,BJR!&C-L11&KR1=$[4<'*#>)J(35I*5$5]07R-0_4XT[ZV?PE4DHE] +MY*:8-<Z>95H>KR.Z;8;CEZ;N\L%V][MMOG,/>AHDI6N%N_H&STLM8>C/]F(7 +M_CL\R-AZ.37Q,#%EFC6,UOEN:\9+X5&<1X^OWQ@G>7F4:521@:(=-&/=SV.A +M([-]P(HF38"W"@V1J51^$R<H+MXVDP7"TV@9&.\M>RJ\:<K-XLI+7X6'2LM< +M%_7=8^#:3AO,JJ$%JQ@#OY#N[EYW%_X6X*VY';:T3"^XL^0/+9CF[B[?.2LY +MLKA)A/;666@#%Z5^NR*[`;%/H%\_P%*[`-7UDU:3.3P_QFJ"9N!]Z"TX.2A: +M:HVX;Y:N<:7?(B!.N"3QB7!$P+MF4+_$C#L61P/`,&"\F1:&+H4,*9FH\JH[ +M3UH/IG,?.T0@&1\EI3V4Q&4R#HTH89"+Z5A&C^J6B,AOSM4[$)(00T5;*ON_ +M%<\JQLD+,#>0H&HZ:"2RD0UR7$8N<ARMFH6Q([6J^A3Q]%H6+M:9NMWSUG,P +M@F;'^'#=^OAI!V_#>7P`3K%C<#:+J7)M46#!.!X1],^^E>^_[P](+-X?VY5' +M#YZ_C.+['_?V.J!^JOL?#_>-O<[!P=[AOQB/SU^5])__X?<_=O>,$:I_WW7V +M,:/WP:M7G0:\,_5WW3>O&ONOC?/^6['QUN9[W?%`D(3J'!YT7S6ZKXU;@#C_ +MJ3VADYO?10;(_Z`U]7_2GW_<JH_^%*W_@Y>'W<[!J\3Z[QX<=K_>__K?\>>; +MZ,@9J.-\AU,H;`@9A=EI=S#XG].11P?4V@T-V<#-0H$;!\2=)"VH">SO;T`+ +M7SSQ4;7MDR98W6\.6GA=*RD`(+HG(8IJXQTZEXC/[*`M2I@4QZC3EG>J!P+K +M6"4;S"($%#C=,D;X@':(\:A1E#FEQ%J0)W"70J\":<K9H%I]P_H'Y:K@[8*Y +M-T9W!U^4N(.V%*D[IG#,@R%A<[(JY(&8:WT<M4'$Z.'7J!QU\X0XWVF&9,VC +M4X3WTR9+!RN"]OR/_;L/5Q_OC-[E3\:/O9N;WN7=3SO2.TR6MXB@#\5X.N;# +ML;J,^QLZ.$JPY&5`U=WT,0"(CD5>G`&G!XJ]M_WS_MU/V.AW_;O+L]M;X]W5 +MC=$#_.O>S5W_Y.-Y[\:X_G@#MM(9-([_F//!`&?.8.P_X4GQ[XQ?0-7ZC?X& +MA0N^PH?O7.]8O*']YA<O+GK?G[T[[[V_Q5[X1:1C_/:77_[S%^.7C;]^VU3O +M#(.N8=HRYZT6_CHRCHT_TZO-WL6F85Q]OV7\;KS81H)-HS4Q6D;WWW?!:M]U +ME]"5$1D#P*:^M3"V_M:[`+07+[8,#?#WWU5EGZS@^#BJE%X74N8!;.*0$U-K +M!]Z?%RM--%2#UK\"W>^^_;W5`NI:6>*+"V_URG#@?`+."LR1_F8,IIX"T3^2 +MUYHK`@1A@(@D?ONCL;B?XC$^L"#@_8MM\;NII<Q$$'E7BH"*'I.`\"2!^&<& +M@/5HC30@\1@#Q*J.Q@!Q<GK=N_OPW>:+%[_]?/MA\,/9S6W_ZO+?VG^\V,8/ +M@]LSF)F]NZN;YJ;QIS\9HW%#W'0W"&:#T]Y=3]17OFMBDI'6W``1I4->WUR] +MOX%)D0;6H6Y/;OK7=UE`_<O;N][Y^>##60^]C0@A7V$EF@VZ5A.=*_1-L(.! +M>CM``[K9N+RZN>B=#P0J@!XUKF_.XL]7MW>Q%P+GXV42*_$&\>*OR*4"=<!S +M]"&\>7Q].#@\:)F8*+@U-OT'V^W0&9$&7@=>"7!HN[(O;ZFE.)!GG\[./MT- +M.LWX<[?9H$@$'2&1LN'%-L,F,/=Q06[$7ATT&W=GMW>U:"0)?(./G#]MT"$V +M]HV60V(WM@=,"6P&P]G$;H\V-C9R0*/K6<3U;$7`$F2V40XS*H)1._!%I?)5 +M"N@EU,`:L3[HBC[8P-0](AEJ5,F\+PDB^Y(()=6AS%\)&ND/0")8"C[2;ISV +M8>:>7%U<7%W"\PVLL(LS,79*SQB,K470C#B36(BW8J($/G,8_<!]QEOBT!JX +M"*J>X8<7VZ&W&,@OM'1V46="F%T9[TG8A7!1S'958!_]:U6!H=M*0:&KL+ZE +M<(+%M8+RTIT0DVBU*T#*,Y$Y<"`@N"6:,&@O1FID=(PH<O[DZOJG_N5[0S(W +MVNP!^)Q1*AF4HF$H[/6<?B[LUMR.S.ZW1N_D_.H$V/W%`;%7O3_,$5T\W9X? +MD/@4CX/Y`2T.`"^?1,2.@W",H1D#W,T&8N7S!!,650%TS`'=A%H)UAZVG'%E +M2$R)5Q$6M/.)_9@)'9DMYJB1YB]*H"6Z%OG.R=7EN_Y[C+8[/;L^NSP]NSSI +MGTGV$PU:D\@R\``9V\GY6>]R@($(*+KD?`K-D*+(Z6F$1PGE@^/AVM$,+-SR +M=[TXIGC9F-^+R8;G6M)JR[@A*J*T%LGPY(=X[0J7:!SE!U+.!"*U^3.NGX$Y +M_G7`%Q=^9W"OHS&T^.Z_6)]7K'<35'7<Q]X*?F_#_Z9;_W4<IX*59?5Z$2G6 +M$><&]7FBB+Y82'*;P>]_>_%"*WCW]]\W_TOIS(0%X.(%J=!4+,$.6"!)NE@R +M4VWA"=+?_];^%JC)BLJ.GIN/@'.P1R]=;PAU%M1D-V!)U;IB]S__VOY/J/\O +MOWS[^U]W?X$_?]J%GDF1%D0I\(9M%$[3!.9)U"-TV[<5M0"Z)M4S.F4DH19` +MNB'-X_(RC5BYU&X>$R-1LO'[\>:6L6NTO_UE=_=?`_P!_^T>&\'.+]OXMKG[ +MGW_;_>NW+U[L_-+9V1+$8)W]^'W3V'I[]KY_"?8G!0W\YV9[\Z]0[\U-XP_U +M[L6++K[3'C;A?R]>=.1$L"?&]K_]FRL`9:NU,6U&)N%O?/\%H-,A?$GRV)#H +MQMYQO%RJRQ^"`/`*K!?TVS;.+UM<\],45.&=I`H__VK\L46#H@^)[,BM%R_^ +M]?*X^*]@]Q=WUX!9HPU`)IX"I.*6KFP[586O&>3EP'8^69BM+SC,!+$I6@<V +M]6_\\5^!W^!GP")+3;Z<9+WTY<MCU4]$B:>2L0UV'E8;(+80#:RJU@0'D(-B +M-IN;,4-9Z(KCIEX4X4@4*$;:P]I`"ZX)2_$43(O3_DU3&;6;\;=#O'$0WP*[ +MCWV8FVXG`QY>[^<BO,Q`4$PW&TNSQS<;YW?G_;<W%.<B3>R!]@ZEE>MA$V-O +MJ>&Z[$(3J*'94B"]]<^*%\1QF$X<[?;JX\T)?$1Y%[//E,D"`K4]PE9E?QO@ +M,0LSQ*S\V3"LN,S-J3T".ED`<XROLG(+$=_+"_)'^]WV++,(_VD1>ODET.?2 +M`C!0QW2S2Y!9%_(P*9=(T5<V6E%'**82SZ)4!HNJ4%&#$*B\V92?B8XHEI17 +MH?HBSU,)%&56S9XN4RO$2+)<`I3)*AM5['[GHHKOI3V"BDY!,='G7`(B3B\? +M8#$?:]7(@7B5VQ+Z6MZ.H@+\82YU^)2-8IGC?"3RMYBAB0?VO<&D##+CXMP* +M&)04JPI<2==$D*!"#>@(E>F/!WP`H)B^/`A1"(2QIZ5]P$"E#5=@Z*BL`,I1 +MUL6`E?H'NZ9L3<7CWMBQ!?*[%CSE2:J%(7>[:R%-?2BG'D9=!*=V$<X7KQX" +M!I750A`.[UHX_J(>_')9"_SQ2T5PCJ-\5;U35>!E/?A\09L%/D1I7B#CLG!& +M9@&_S8+'!*UU$.C46BT,<0M5+1QG9M:"YYR(=3#\FH/AFP^UX,.:]!]KPA?- +M5;Y&+5NK$-_R&#)_)L:'%_AA#ID2T("LV$EV:7AI<6XU/]L^YA?*QJ0MCEQ4 +M;0.DR+#0P(HEN@Y8(K(TT#HR/3HK4B2O=:@B@9V`*Y38&FR)R&;(:AU@CL>" +MS9:0BP`'P\,#RRUD:6F4IT&%QND(A4(^!5XJX5,8Q>(]#5X+NEBPI\&+I'H* +MNE"DIZ#+Y'D*8;FL.[@%\IEA<8&)P\]5`8NE>`JZ@.NF8*O-10VA4+AF0@\P +M@W=UE#+1FD(HEI,I\(59QC(U8#RX41V:PO2J@W]^50M\ZBYKP1=)WQ1PM0F6 +M9]&PDV\@,]S&+&!]QSY;8&D0!1XD/72AU#)56_)Y39)[^9EBN@PY(U(AOTE: +M>`!%,N%V@3E?*$>DP^EN!F,O;,J/'(H@3H-34(=1,:K#\?(@TYV3#UL!(MT' +M:>"L7G`\[(8("#VM5V__<G:2"(*).5F)=)D'-1](>%$=K\`!FHO-#LKBSYJ' +ML@0P[J(L`1:.Q3*H"L5*UV()&/L6<X&D?S&[(]FOEXLL>4<V<N08S"7`;KUL +M='^8CT>NM\*O<=];"6B6\ZT""K.^"H!9"G@QFO2J%4-)-;T*5'F;XFIZ!5BA +MIA=#ZC*F!#+M-JN%P"IU+12E5M?"8M6Z'DIM#*=^(:1FU\(@5;L6AE2W:R&A +M_ZP6PG)9#QXT](KPFO)="Z/&;%0:>RUXZ46KA81NM'H(J.K7PF!'6BT4J>[7 +M0D)76BT$MA%JH?AU!P6]:;40PKHE/-9%*)RYPFM6\EWYPG+AR!^6+9:E-RP7 +MESUBQ9\CEU@5N!(Y6^+I*L$KE:%)7U=5P&(IFO9VE8!JCJS*D)HGJP:.<!_4 +MP"@6O/G.K.HH)2(WVYU5';Q$V&8[M*J#%XO97)=6=0SETZJ.4B0R4UZMRI`E +MDC7+KU4=N.+,3'JVZH&S:ZLZ3JFPRW%N58='[U9U:')O50=G_U9U>'9P58<7 +M'J[J"(4",=/'50$ZUP!)>[(`A)TXRE733,2>1:X-`LS\V&ST+@8_#)PH4/4S +M/`Q>;/_0Y+@T>DQ^!)S3LW>]C^=W>+SL[=5M_^XG'7X/$%JM`(5+&+U%7U*B +MBIADE8B?]]_>75V=8Z2=J%`3*(3F]+N3$WXG(.C<H`@2C[]JM=#-\!TEIG^Q +M?7)R?BJHG0@`>*EC)VIRJJ#4SQ9T\9_U&D]$I=_V3D\Y2#OU,<N?!)]VDX`M +MRT_/GTQ`BK+C"TO0@U508G*8)_&1U@^686PZ'4)29[WTSUW^C&PF\_N^0H^? +M%]-A#B(:":#8:3?]^!OC2Z1$#"2?>5)!B>H(5.PW[;%%IZ.T@*Z,LU09[T9Q +M[V=7>C\)4E2L%<-XL8W]*]HNJQX-21Q1U%[AJ-KJI+7/\07>;3;2!1!(XG4$ +M]\]<7ZH.N2M+;QQ.*;HH"U7Z8%>?.:WH?79WT_=$ET2$4[W,1/,'@ZZQC\'2 +M":,J@%23O>J@0\Q:71V\3IWYUC%VS['"\/.*>,,OW14Q01M>%7-51&?E(IW5 +M$>?FRJC>BIB/-6HK=!!2&"LC3>F9,U55QV(%ILX2$!AO!TM,)%L;[V1%O+^L +MB'>^(M[/*^+5F%D"([*EZV+6F!T"8UP;8U(;@TWJNEAX95AM)*<^QDJ5J\<Q +M%))7OZ1Y;8SZBWU9'V.YX@P5^:MKX]7AE@+EJ39&G3+PQN4!;[%61L+;_<*9 +MCY<8X8X]_'\U7!_34>L%-W3X/-U2_Y;`2!QRBED@;<>46CV:"PFE/DJ&`&J\ +M]D!ZO)8I05/D\6UD!M"32+:&%C1'0^!;<>H!?P;+81"*WR*"$G]J(9%9Z1J, +MS$P-,?O@0-H'$6@K@9%46/%;U,,IO/B(:I_3JI_^4>^!/`K4(9GHW#]Y>-1C +MF7C<@3&\N.Y]0!,EWF0YJ;2W"NJ?;*Y0%2I9*R]3UHJTA8N,%0F3:ZN\5'TO +ME[$BFS9!,L&(_%Y5P`SS(Q\8XTRJPM)FG'`@5D41VBV^_7D5I)294@TM9:-4 +M1%L)*V6=5$1;$2NI953%\U9!2\K8?*Q<>R0?):W.Y<,660:E6!]6PLJT"DJQ +MKE;"NEL)Z^-*6)]6PJH\ZZ3%4A<^V\(IQ;,>Z<QW3:RI/1[0E4-U\=*F02G. +MKS7A[^O"6]8"UQUN)=`%$?70,ZR=<IP:7"C7TBE%J2P;)3SU`2:'KXOHC9?S +MNK6CBSI6*>WO->'KKM2Z$P"3$2U76`O9!E\I6G61DFV"Y<,OZ*9=MW+[*1!E +M@-E+,5JT*E80CNW*LI13P]!),1?O@JB,QS=@8G1W591,,SH?/&W+%"BS&9_B +M\.>GM'M&"C;\2J6_(*"O"3`^?TV`\34!1NS[UP08]N>O"3"^)L#XF@"C%.-K +M`HS*\?M?$V"41NY_38!1`>-K`HRB2/ZO"3"^)L#XF@`C$^-K`HP<A*\),+XF +MP/B:`.-K`HP\:5DK`8:^71_]%-$?F9]BU2/'*.W!)TNC+QE&;!($_TJ)0/6% +M7)9B"'FD.NEEE0WM3H*#$E`!DOL]:UDF(,JK)`;(7-B#B66&F&F_''KD6*8_ +MH.OIJT#GN&0S(+,]JVG`/+==&I)<9QRY51F:-@NJ`N-ED16`=2]?&2S-RY'C +M!=8@?+!'5<@G47)5S,JH>?ID#H'YT@GQVB1VRHG0F*K(KO6(P0)X6";'LJR` +MF&6:Y:!A"]/:80XPL7QF3LS,:R&RK*B/N"I&Y3X7AF0%<"1>=:TKF[,:(%X\ +M(K>URG$T$5QS/%+">P7,E5&*AF0((U&X2CF4/\>>28%EJIHIJ&F64I2&RE)P +M4E!.1:AYVI.3`95AQZ2@YF9:-4X!@6S4=R>[19)2H`1\MS9%165Y$W(1L*R< +M#:T4#A('!7E,%_F40B^78RO3EDI!9MA0*9CBD>+@OVQ_BP:5N3.9^)Z[+:?! +M/8:X*:?TWWQ(9:$OW2)F-5E^*>H"M@245!N0C5K,J8JW1B,X%I>F[13K3N4" +M.=_?DP%3(IMQ3M9I;+2?!G-Z6D1960Q58#"\`10!T*WQ"DCD]*93Q`ZK;]8E +M</*VR1)@2(H<((]V@%?)5H#/=_9DPV;[;G)@BQE>$C12LH#;%&I7.F:>!Z<0 +M>A#84[?,'-#Q*K`J!B]PSV2#%LHJ'3!KTR,7LLHBBJ&@6\:<%(K7%/PPS_+, +M!1_\7!=A6*L%A/&E2)/(1)D6\=9,C!*](`>G4$O(Q"D4?"F,50;=&Q?I&RGP +MX+-_P.I:YKYF&6:)UI6/M$IIH\K3K<PJTV&GNJ2M@U-YEDU5H'P-^%(53<>P +M`Z]RWR`L<>8!WT]>`^W1\T&#K,I3`/)7S[&ML,82CG`P#+(VDE^5^48HPIZS +MBE2=!*;OUVL1P!=Z1=+@KO50NPCX_]S[7*<=7^"_25"CH*P-[ES(NFLJV\N? +M#8OZ8O5J9^V:YT$6.65TR&*;-`$IK)6:';("7PJ'57E26)E[A4YER,K2+:P* +M2!LN=7LA:U\D&[*Z]$*15;4:E6P2G,*AOW1'9EB^9E580PE<98(*,&\[/()G +M022.\>6#Z>-4I.N3+"SIH/BH%U&+0U8Q':.]G4I`TE0NJH0&7<%9HD,#]Y5[ +M^<6CJR'EA&QDPBXL?UZQYH$U*C:?=-@RW42'Y9,#U8!Q=Z*\OJ6!&7D()5[) +M&'!NC$4.?(DFG(+EMF(R_*I89:9Z'+@6;*%JFH`M]`'$8,M-^1AX;BA&#GRA +MM!&0E<SW&&RA[(A!EGBO4["E5DD:(S.PH@BAV/J+P>=$&^1`YP5M%(,/AIY7 +M9&!DXM3J)HE4039GXK$.7!6K3$=-`P_,8>`YR]`JVZ;-0!TY9E`L=/.1!K8[ +M+C;N,G`G$\><UNN,@0NVN07RP`P+=]PR,/^^](0"4FODBN,(8J`8W%-O.M58 +M$>$*M*M*3@TC.^2H`"$[Z"@'H5A53H+6:V\-IHORL"YMG'EUE*>B6-(D+)+' +M'5&-_B"`"5XT<KJ%H"FB\60NA_%SAM%//@DI'Y+Q4/H9RM@--'D$TH%2M4FL +MCIB.GJI,(RNL*I;A1/7DJVH]B5NCL1.H%7#T4YNU<;.R)U;!XUBBNFB\P;D2 +MEG;H<C7\^([C:C2"C/14U9%7K[O<\ET-FT]HUL6546!U\3@.JRZ6#.:HBQ=% +M?M7&I%.9=;'\87T4RQROA!0_@KD:A:S=WM4I<;SLZOA9ASE6HB9WI%="EL$" +M:R"OW(WQ$(/520C-8"4">O#4:@329T2?@PX[/)Z#DO*&/`>QC*0UJU)Z+D(9 +M26=6I93**[,B(3KX\AR$I!OF.6CAKNUST%DNGX5,,G=+;3*:?^@Y"*V_<)43 +MZCG(R+.XST$+PU6>A<XBF:UF14)L+SX')>G;>@Y:N$7Z''0RTAJN2,E_ILF$ +M>Z//02=\IOH\/A.=5=:^B!M?#4T=/JZ+GDB26@U)GE>NBY>1=[6>[;^*Y9TZ +M^KP&@>=0C>/GG]?!7D6_S3HOO0:-%37<U,GI=0GDI59<B90XW;H^H954Y?R3 +MV6M36DU)SC[)O3:5U=3C[)/?:U-923'./2F^-J'LM(.K4%I!FTV=.%^7P&JZ +M<-8)];5IK+>VDR?:GX5*1CKA54BMJG#FG(Q?FPQNJ:U-A$[2KTV%M[O6)L.; +M8&N3$7OD:]-915?-/,&_.I&Z_JGTJ?X89CRG_&%\;^9U/'-]DG3T*;ZWDX#+ +MS6#_*GEIV>MD8VA7+EEL.KM]&49E[V`F-K4AZ\C]>E3HG/UJ)-9`+6(1)9BK +MMUJ\T4_[KTY%SP*P!I62_;T*%(IW^LH)E.TCE5/0LPRL2R6=JG@%(I258'4B +MY7M6Y31260R>CU2I`;DRR3*KL"+A[&P(:Q)-9TEX1H)%SJB*Y#BKPII$TJ?[ +MGX-@[-#_,Q!\;DIKSPV9S6%U,E&6AS5H%'OQJA+0LT*L3BLO6\2S4'RF"97* +M+O%\I%:94B(;17W$6):*E=$+S<I2[&F185&.760,E&([:V(G+]NHAUW@`RK% +MQFP:*R.GLVRL3"J9?6-M0EI6CI5IQ;)UK$Q%'8U?F4*!'ZL4=[69J6<#60&[ +M,(BN!*\TE*P`/Y%5I#Z%6+:1%=`Q"TE]M-SL)/5)58LAS,>/93-9%7V5GB_? +MU:F`NZ+NGITMI3Z=9!:552G@6;HU<+.SKJQ#L&I\7@FMLIBX$O14]I;5Z91O +M"%6C4;R/4Y'&:@*\+#O,>A3+=G-J4=&RR:Q';PU1FLH^LQZ)E73-9+::M2FL +MP_2RL]L\`YUA7:]P+IGDE:*K$QH^2P_)[#G/1"IY&^GJE%:T/_*S\#P3K944 +MU_RL/<]`"\]S/@.91):?YZ*XHA5:DA7HF0B.UEZ.JWHM\[,+/0.MM5=AE(WH +M&>BL;+*FLQ>M3R.6U6A]<C+;T=J4M"Q(ST6+LB,]%S%_7>4@*YO2VA3]C-NV +M5Z2STFY.?E:FYZ"ELC6M34S+XK0>K:+0Y<H4GHO7%4>V5*,ALT2M1Z4H?KHJ +MA54VJY+9IM:FD,Q"M3[!YR(U7%>FA6M+1<QRM2:%M;7'<%T"B6Q9ZQ$KBEFJ +M1F%][3"6=6M%4FOYMN)9NE8E(K-WK8B_=@52V;[JTXEE`:N/'L_GM1K^J@.9 +MS":V+H5U7*Y:]K%UD*.L9&M166.SJ""+V5K$2@YJ5*+!6<_6(B&RH:U'8U7; +M*"-[VEI$.*O:JB0J']JH2FC%7??L[&QKTEG1@U&4S6U-:JNZZ-/9W]:FL9*+ +M()TM;DT:J[OVL[/+K4EG)2TOG8UN31HKZ6;I['7/0&-E+UE.MKOG(+2:US0K +M.]Z:5,H.>M0CP]GTGHG6LPQ;*OO>,]$36?G6I+:J#Z$TB]^SD)39_9Z3F,SZ +M]RPT13;`9Z$5RQ+X+!23V0/7)+K:^8:\;(-K4GH&SA,^8UW6U613V0R?@5#Q +M`:^*A%9S<>1D15R3T#,H!5$6Q6<@E,BNN"K%]4Y/E65CK$\Q.TNCHM-(("7/ +MH.5\3N.=GEV?79Z>79[TSZ(#;/K+0:?9Z%T,?AA<J\^?!]>#%]L_-/DP'3XE +M/@'\Z=F[WL?SN\$/9S=OKV[[=S]IT'L`/C&=P%)O.O#FB(MY?W:I48.G6%'X +MG/I<6!R"8(%_MD8SS]@T#"P`_VP:+_Y\K`%A';@*9J@5`=-,KP`\)C\6%@\0 +M5'KT2.5(A/[ER?G'4^KZ5K_=&%L+G#Q4PNV'L_-S/$$8>C"M_-'8]IN[PZ7M +MC'?-9>CA3<>[`IZ(PV^<,,%@;CX-+2`A7]#7^6=X`W^U)HV3JXOK_OD9%7)R +M@B5`;6[%O[%:X3O]-[3TY/KZW7GO_2W-9,!7C_Q5/8A?C?,[O;CS_MN[JZMS +M`?W#P`F;1JL5FM/O3D[XG8#0RXB_:K4PBO4[;#8T+M$$@J_5"KT)A)W9"JHL +M5#$:^9.3V+2`Q^3'PFD!$+%)";13DQ)@:*Z<G)R?RL%JG/<OOW_FKD3'#5$_ +M/\T;1M4UYZ?JD_K9\J#2LHM$564+SD\3W00OT@`E704PB<Z"4E*=!5#47;=7 +M'V].!#/3N)UC#L279OS#)/Z-6CH,QF2@:1CR%7'-^'N4\RE\?)F$33)?^:EQ +MVK^]&^@5QT9E5GZ`H**4_$8P@40K=-2\U@@TK44)K*QF)2JK?V9L&J.1Z0[\ +MI0NJ/^A6#DRZB0=-_:5A&",S@(7\`F;!Q^O3WMT9K-QW5X!Y8]@N`1B&^[OK +M_7YYU62Y<7PL7G_;-+8%O181;+7$SG[3^'?@CI]WW:7C&-U__U-'X%B!.6K, +M3;<#[)1Z&GX39\5W^&$_X\,^?GB9\>%EX_+FZMT[>.WZWF32N.A=WDJ8`3[` +MT/;N>O1J<3\5M]/CJV;CPUGO].R&P6UWY"S'UD"\:S;.[F!IP2<+%G30.!%/ +M(WZZ/;FZ1GXZ"D:@MN#*NSD[^7ASV__A;'#7NWE_1GJ`^(I='X:88,WQ_&`P +M7L[G3Z+?YU/W.\.WQM\94Q]^.?@X=);PES_]S@C"\7?<9S1ZB$Y#&WSG>@FJ +M:LHF"^*9_0[8/[>3YCD(A(NKRZ9\U";2W=DG''KZ#5K.34],G[$-E1&]?]T[ +M^;[W_JS9`KX"7=4'2@V4D#J,^,WSSK<P@$'[CDVR)W3PWVB-C<T(?O/8"&>6 +MG',3,%)C7XU6^+2PC+'QKT8+??=&J[NW9[2L1VMDC&;`2XWEOST8O_UA;!UO +M"1J&\:<_&0CI3^*DY.???S=^,P+'LA;&RQS88^,/,7=AZAM'QU`Q:MC"HWVS +M1.MX(.*O!8/IW9Q\@#ER&^NC-MHGTR^-]S_WKP=GES^@)M(:0M\P3C2?$*&% +M/F0:CJ4KUATGH7;@%2D;J-IAO[5%9TV@JS"+&*LHQ8A<J3R`)O7![T9@C8VM +MX/>__=+>_1U6E6]-[,?F[N];\&GJ0S>V/AM;N*(F'JU2^.O%BRVJ,YZL=ZO6 +MMW=R?G72.\=J_4:JV!_&[L<`F,ON:&GM+GP/#Q]KNGM2-9O;8`"X4^A,8'J& +M.7*\D>FT.NU.%Q8L]"H2?O$;_`"9[?_1R!*!`++7($C3;XC!DU)]("8_?.QT +MCV`>'@$H#I,9-'H?[ZY.KB[?/5?=Q6NBRQSJ&2GS06FB?='[_NP9*<_->TMT +M^(^H,YD/]XVWMZ<GU_TKV7N#V[N;_N5[^+C?WFM#+YH(`8-2`$!JX'0T@A]@ +M)UU<G9ZQKDVZ%+S?;WS#6A.N)*C/5;>A/4_'0WBUUP"MD\D8K;.&5$'A#9@! +MN\O`WQ42`1O\.'>`Q$_OKWMW'P8_HE``/0@M"*)X^J$'LP*'N_]^\`%>7Z/@ +M_,YH0Y6"QNGY.<X6K*'CA)[G-$YO?[KX>->G5\'3'-.;-$X_7ER_[>-<:IR= +M?+@:8`M_&?'OZ.T=_7I_<X8UITH.;7>7U]Q9X^S3&;!L!'F7#?*ND?6^T;^\ +MO>N=G^OOQ?HW6B/Y=2"EZ&_BQ1]&:VX<'APH@.N;J_<WO8L8C/IX>W+3O[[+ +M^08#?*VC2X5B$,Q`MX7Q"1JDU%+U'.?SO`6CUCIH=W%LD/?OPO.N??CZL&4N +M%H[5&IO^@^UV.KL`T^[L.N.&4)6Q<V#YRI4LI]CEQXNWM*3V]_;V8(IEP:2G +M(0#U8=2)7SLV'NW&5V#GTRQZ\1L_P%SXP\'\\R\^MCT$H#GC#+]TX>\O,-L< +MG%U4+3%/$H8GK3)BI-!:FD#G_>LKNM-@`02A9OC;I5ZZRZK374FM'*^!ZQ[E +M_C.M?5SWR/Y1&^N_.T,AQDT[:EQ\#T63)R-!02J1P8R&?-RXO-!GI#N'%V>G +M?9Q#[MP:VV$#FP'+!EYXPU]!V5DTV#6#+QI7HD2/>HR>#@^H!D)]B5T*(5\. +MWG[$)7)U<Q?[W`+9-5H&P9^GGC=UK*GO+1=!&PQ@A7?9N\BAJ.9-]"V:0A(( +M^%T^A8\WV!#U&(D=C0SPI=NSZ]Y-[^[JAEMYWKM[=W5SH3&VQDWO$D8??OFF +M"^4T;L].]2X&L0ZO[@9""#1H'B``?9PU:)T:J);ZH()D5./3Q7E7\$&=+L[O +M%BO>#7,8J`F-,$5SC(#9[5()5%\LE1&JTA\-1N%`:@+\I,00/VHL'#4M(3[@ +M4?RBMZ#_H!MQ,/;0P]6F=[0_(=%`%8GK):#7>J`2@3[Z`AZAKIL$MW33D(\` +MUX`>%VKH;\@:!ZR>_8$CT:#>@4^/KP\'AP=Q9ME%5LD0`].Q3=3+Q.-HL51( +MXI6'GS,P/UONV,/2B79#&XYV`\^/RJKA;]_S4/_]HZ$]T$=99=PFL1IC;Y2% +MM0OO=U_\EEA!0.RSK<`)\X^&U@\Z_<8,U/?"WD"`J#/H*=87]";=%?0ZT1.S +M<.XDZR4F1K+9<KX(!3K=<F*MD8Q<F6E'+!>=TIFS!MF$$+)YW_&Y0;JUE5E; +M_L00*'%2[?T,*XHM^C0RO&_,[^'G@%VR0GPT&Q[TIMY]NLK66(PGR;Y6P\]* +M!%:F(0]QAL`/`]S0H"R2R.%V'N%_C460I!+DK2[\T*#Y.LYL(\H*Q6K:C>`I +MP!%(0EGAJ!%B[*(VZQ17BV9P(\'IVHT8)VLK57YP=7T'/!J9/S3/LJ>N$2QQ +MH%LB<Y.TL0:]"Z4@]Q.2N='XIO&-\>/,#(W0XV\&C)8A9@]\A4DP("WCIG?# +MFQC1G&L[9L/U$#879#`A*.FP,1)N0^7(B5Q]B5?D1XO\/6\_]L]U7UYZMR<( +MVS,#",6>D8K^HG$'BLLM&N3]FRO0/2[ODC5+`6A5S/M&=4U_A![N.0_F4Z!U +M,+E'AEXX,Y@FO10DP,@T\#2T`;)ABRQK-*JWR&-P\N'LY'LAAS_>G`W4R+8L +MUQP"CQ/D]&>DV6"WT""RE7XD&^!'WNM3/UH4\FB'3U#INYEE8+8M`U/=&79@ +MP$2?6RXL`,-;0NV?P"Z;F$LG1$=B,+,7"]02-57(MT`D!E;0!F+]$"DLW8A& +M'!^#D^_;8&#]H->1<COAOW@&'_Y=NDMT4+1^A.4X]A[@AU!.6[#>0P]]#`&\ +M')E!V/K[$MB`<K?3^,8Z@?<U9'&T"Z$I5"^VDUI6,[Y8I`Z`=8>.PG'R[>$2 +M([P!+O*OH;'7V#BY`+7Y'&""=O@8;FQLP+MH*4XMMQW,M)=#T'BEKS7^A;PL +M]$I[ASJY_D)@\BM8YUBS#7X";B=^68_F'*17P$^QR:]Y!U/?R/^<`A`K0W^_ +MD7)J9V'1FLE$BSSHNK.2!^&,YH._1!<33%R#>F6Y@&^T2,[/>I?2+9JY)8P\ +M@-N=X!2B;U+\@HL]C^8V.U:"'2/PEO[(VC&`O[<1J)'P-L>9E.2<LXR7(@/- +M3-]%CK8=,NE0UJ'D983:-Y`K]F?,$CG+@=$ON1ME%2`S7>85(KZ7%^2/]KO9 +MS1:I,'-+H,^E!8!*9L/**.C8O`)$MQ=]U6[)*Z22R&13`DO*4TG!Y<W6+M`K +M+J]"]646HV(HOO@N<[K(K*1Y!#@_9R:JS`"7ARJ^E_9(E`8TLYCH<RX!QPQ1 +M&N8#+.9CK1HY$*]R6T)?R]M15(`_S*4.G[)1\+Z\7*34O7C%D%GY=<HQ.(-T +M!;B2KBF^^:Z0OLSF4P@D$T)5`"IM>#S-4SEHSMVT,<!*_:-G52RDEG'M7!UX +M/LE1!T,=VZB#-,V\][X0HRZ"4[L(.ME0!X%NK:B#(,\]U,'!]!EUX)?+6N"/ +M7RJ":P<=ZB!4GX#J%$0=<'D=6AT<S'M4"QZ/5=1!R+[VN@A#'BJH@X-G^^O` +M9U]T7X3AUQP,/!1?!S[K4O,B^*R;S8O@B^:J2!2<J56(;WD,6:4(GJM3P"6@ +M\G:PS-+H"K"\:LJKOC(Q.3EF'FKBWJX*8,4270<L$5DE5W85EU`FKY-7<%6$ +M*Y38Y=?)QR&K=8!VP58QN<R+M*JCB$MUJB,4"OG\"[`J8Q2+]^P+K2I#%POV +M[`NJ*D,7BO3<"Z<J(Z@3BY4Q"N1SZJ*HJH#%4CSKXJ?*L-7F8O(BIUK0?*:P +M,DJ9:,VY@*DR.)XRJ@Q,%RI5AN:3-97!^?Q,97!Q'+(R?)'TS;S8J!PXSZ(1 +MP9\RB7+,`DY?8I3$UB``E8/\S`7P]C$>T&A\8[1<K[5TQ];$=JVQ,3?]^\`( +MT1.LN;O'GA6X6R&ZO9\,SS6"I_G0<P+`EGC"5XR[AO;()#7`,.YF=H"^<=PF +MPX-Q3^S1?)H^V&X[X0N,0EWB%9*^8@[3?;&=$\[63)+KO^V=<DAY%%Y"[;TP +MW84YM0+V=/-FD(:K[><4^=3VA3LUUY.$6D8I$/K4[`E3*W25F>$L*(>BM!!E +M4.0K*ZT975A3`$4NEY+OG`:D#$B?^OEU)[VP@!1K?V4`I35*K\9TE8A)O]Q( +M$XE^<A&YG]$39?DN9H%.DX]^MIA]!%Q8'(KY<E8MD(V]1*^^T1N/22$W'7TM +M<_1JR3:/5M?D?D]6K]GNV'L`SI77J^+[;".7-^722&PO_9+8LXGV3['%*E2^ +MH7[)X&:'0@6:NQD@,DB0=YC4:WT\%R,D?TL;(H'A6M:8M_EPIY$V/(7R$S1H +M6X?N?M.V-Z#6T?O=Z"=SZ^Q/8F<&BM6:JY=%7Q/?XF7FG6/9D!MCZ<HVLV84 +M[A;1Y7*CO*]I)U\V'/[%6U%Y7S,OE!M5`Z?KWPI*CNZ(&Y75@!294J"H>OEP +MHOOU.]Z*FB/`]<O<JH#+O:P*-9&;4A5`U9Y'!5C]SK4*-=8N5ZL,34*I`K2V +M3U(.G+H7;06<R$Q?%579Y-4(9%]H5A$Y?7'9"HCDWJJ&QA>15>W6]`U1%8M) +M7P15`U%AU$4)JN.(.\$JP$>7?U4!%LZ["FLT?9]7>1?EW=M5"[/FL*3NX:K0 +M#1F&5"Z.N%BKD,''[M`JZES]MJP*<'0O5A4XLAK+X9S*<'.S&IQ7B1[>5%4! +M+'TG5<%8YEP^51U#NV4J?_2S;I,J+T+==5&AT>BG*H<J&SC]TJ=".(X!*9K, +MB1B((LC$G4U%L+';F0H!\1ZFP@KF7KE4,#")B)0"ZK%;E,H!2SB#YFVO`B7D +M>CYD]G5'!0U/WFM41#PRQ"M!9=]5E+^6"F(FBG%4M$)9K5*W#)5U3-SM7@W8 +MJ05<QB'+K@(JZ9JD/[U:0>F[?:H5H_.U8GC=75[:^LA;7A&4-J*KP\:65B4< +M=:=.'82A7:A\Y-R24Q=C6*\5\MZ;NCC3+[51A'91$X<TC5HXC_6J5L%>RKQJ +MIDX9B3ME:I04W1VS"M(JI8VJ3SII\54"CM_N4JU2\A:7.D5(Y;0R@E+R*J'P +M!2PU@&,WK51KMGZC2O62M*M3*A>C7Y%2%\DO-"G+[CRI7)JXVZ1Z47R)22UX +M>5M)G4JI6TDJ(VFWCU3#H4BDBG(L=I](Q<:+'=EJP/*&D(K@?@UYS0Z@:K!E +M)F_)11[5.C[!JJKA#(LMM>0=')5AG1JP)=9BX@:-JJ")NS*J]>%CC8&JHP?& +M[KDH&YN*1DW\ZHHRHBHZK91NC&9%4!79E(\0NV"BB'+\,H<RR/+.2EX/41VV +MDC&J;:P64<ZZVZ$2U4H^FH+;&O(G?OI6AFHE\#Y[Q<:*BQ:J42[7:C*N3J@& +MS7<DE%<Z'7E7%4,Z2BM!1V%T%1&F)09ZT8T%95.@JA,@?05!=>!B_39]J4!5 +MX`I>@NQK`JHBE$BG=.;_<L*5?`/I9/Y5"6M9^VNA<"A='8P2DS(KX7Y5<!6I +M5P^>4^B73OBL5/DUD2IH%D6I[RMBE6J[I;GLZQ2D<M:O@B1STX]JH(H4]+6* +MBZ6:KX693"E?K:8R%*(2L)8CONJ@E1D'.6G?:Y"O+%=3B=SK8(B(TXH899IV +M3A+VJN3+E/.<O.HUR"<3J)?-Q$1T4#%P?D;T_&*R,Y^/&JD8*2T70JL?3Y,= +M@:8^L7Z,L5+J4RS'F5XAHW6JY6*[O>O=]4\R\RXDJW9^FA6UJD%E9??0BL+/ +M`\H/\-U_C<;Q'.#'E-9J\3#^KU1USV]^[E]_=WG%V3=2M2H(`:3NEPD&\D9& +M!E3A^E@N"Z.J1+'I0(7P,6S_3-AYN/J&_:#31M.>"JL$WZT,3X*_TR:-I`H\ +MN2L[4=O+P'$:`_BT6FT(O%L9W!'4G1K@W1K@<[,6=0"O27V_!KBW$/T./ZNC +M=.NC[-="F9NC%M?KY\KPW1KPZ8B+"+<$-1EX(2=M1;0H^@(Z'A<\%5H?N5L9 +M68_AT!99"=;C%X1]_%+"C*(P#0!'@5JE]WG%U('>KP5]4`OZ92WHPUK0K]J/ +MBZ`8&N,^H.]P2^3GDL[F$!%S6`7,^3(K`<L.J2B;'CXFZ<*=G\]@/P"BVK:G +MF/DV;MYWVCX1R1*#56ETGX'&_C/0.'@&&B^?@<9A71J8%DM0B`U*Y8%-$NBN +M2V"_E$`J,H72I_M?BB=D*D2%!$T=+/0EZ=*I*E(R9D6C4<7ACYZ@P7#TJW`+ +MOJI2XP0F)B9:"7%L@54=6BOAHI+161ESI89V5^^C+F=O6JG"`G>=<LFKR>CU +ML.,C5`^71D@U>17<[LJXW37*[:Y0[DKS8J5UL^)<6'6IC2T'HQ=76FP1;OWZ +M\L:R`*P['-&N=.UR5VMI?+K6Q5NMAU;#PKQ?M9'X%+$]XD/RU0<#)%&9,9T, +M%NQ$JF55E&Y]E/WZ*$I)'2W>[*LB*V'KP8/2&5$942OW]>&A(E`?WUJ.?EVL +M@7_OV:_]-?"7X>3U8*T:$`5_69]"(D`0_ZN-K@+^:F#'@O+$`"H3OSX!'L$U +M"/`0UB<@706#SKXTS5;`?;4.+A_AW-L3-/(MD'(:G?5I=)ZA'IV]P1RLW8EM +MC>L00Q-=,],KH@"37`&)PPHUS'J(E%;%\K7ZUL2GP,E5D7UO=._;XZE5GT(L +MJ+0V=D;!]7$QR'+UDG&'?!UT%7TI:50E(>-JZ[=<[#;70]3#,H5@%BZGJMA\ +M2'9/>:KJX756Q.NNB+=?&\^916VK@72X"M*K^D@/=CC[%;.NUVD7AQKPWY5+ +MDUORG&<Z0JZ-VXV0:^/NU\-%5Y5?1X-&[Q=HFJ;_1*?.%')57+F+.\#K`:MY +MRC*077SGU$5GINM\P=(=X$3!2@38[4>NOKV]/>EO7(-$=WT2^^N3.*A)PO4L +M;U)[^"FI-(V`MI];K^!@\MBV'FNL2T):#FG(:U=XZ=H4(E<73^:PJ8?WT*9% +M54.)4CB5,3*"ZFMHS>MJ^XFHXA4LEF1<<GV3)4%AA5:@^[UT?RPOZ%TT6N"O +M@(U*R*K8W-A5L:6%O1:^OUR]^M)`KXD/V--P-C#Q]/NX+K(,KI8#7A5O^5AQ +MCE#</IAOCAUB3!ZR#],L+RH+;;@:VF@UM/%J:!74HJS.J(-1Q?66U05U,,;% +M&#'@P++N51;FDL$M0"P>W@+$X@$N.#(AHXDR4%.W_61"W9SU3B_.Q-4R)]Y\ +M[KD&2E3*_Q@!&Q/?<\$:'@?&-KK$=O!VJV8\J]DD<5-,K#3XNFOY&8&4\L,L +MZX-C3O2K,+(@\-X7GVRC5*QB\ONLD:YNI0A#D=U-7&LE+]L9>Z-`NW)'7#(4 +MM1]O]>&7[9'^,-,>$O=\X(?HLAMZ@KJ'%%-IA>(5MD;\!+TI$/ES\5&DY,:? +M,L=V+(UHMREK>7IV?79Y>G9YDG&=6OKFM&\$ED-WS]DCNKDQ]:K%OQ3T:)2" +MUEYEQ%U**!E:65RK1.2EP%TM8C1&.[IC35:WF1D1JFH;7=>5Z!0%DPS+U&9# +MAR:M-B-B*1@SWH_D^W2^19HPB1RT#34>6K[41OJ57B6%(G,E:BC:*W[3T-8& +M!:%&:X&X5R+/(;W+3F2HKL'2,AC&WN-?(B=AZOU@3V"D/D3G^#(^TA9LSC=6 +MP]6YABP(3HU":O?/%6#$`=\2*(PUJ0!5!<BI1,JI!A1EI2J"\BK0>LPK4.AG +M\GQ/!L3,<A9Y`\;IQ`8G`Y"K(L]0+M"'*D#G58"NJ@#=50'Z6`7H4Q4@L_CS +ML.2S?J0P%\IZI*RTQ:2F]G@PU?,J94/)\WSY(+\6?[XO^6Q9"YQ5EB^BV8IJ +MXY371BV&`@BOA(9;\IEJ&\Y,M["RKH<WDQ>3\IQQ%5)_+Z92,N6"XL]+F`C+ +MTHF@GWG,A\IE'^)[WN>%&6(VY[R:TFTGM.<DDYUF``7A6&0/S/SH4X3.?.&Y +MEAOF3#-AL6("KYQ"HIR/F9^5*M"(25I-]P&4E=6?#-Q(:&=^Q;M>4P=M9)59 +M[&==9*K7/4/32+Z/J1AYM^!J^%G?WMZ>WO5NM!,WJK[:F1O&?[%]]ND,%+>F +M0*IZ8D>V.]:,+`60QE/<#9PG+2._5S$(*A:\?YP/PR&L)3!?RLMR*M"ADQ]& +M&<S<K$#(*X5YS*Y/'NN779J+400B68@X?,)^JAR0_7*0@WR0.#/*K%'<`E!9 +MR.45SOF&*D6U1(HYW30;V9W\R!><1+]IDJI'W7"-V9C[355`?2.3T!)69O*= +M;F;2MX2=F7R78V@26-K2%+9EO*XI2Y.0G\W4C-4XU]84%8X9F[&^B:"2W(9& +M37P4!F<TD#%[,_UZI%ZG[4V&SC0X8U>FX\CDW.>1`1JO;40M(2*2[^0EX_H2 +MT.S1Z";GZ@9I?%ULQ%[3`HRGVH_>XU]1\OSX>]U037Q)6*J)K[&*I#]+^XH: +M^G,E*&F.EH!)>[0,K!*44XV84Q$JLDF+X;PJ8(]YA6:9I0F0*:]B.G25!R/D +MRU[)][<)"R\;*FGE9D/]I1)4TL[-AOJY$I19\CUE7&:#Y7:T^#XN^3XI^1XW +M.;-A(E]#+HA3]KU",3%C,@_$*Z,R+_E>-BN79=^7588M9KGD0FD&7#;`4\GW +M?'R\U6*@DDAD@2S,(`AGOK><S@9C+QQ[84Z3=$#?PI99PN2*A,D_R^8B!2]M +M=*D6Y%I=L=KGZ3^1T!6Z:%KR)C_$):Y\RK//<C^"K75RW;\JM]"00LQ$0[2J +M-IKJIGAS,O4FF@\B;T*N_."0=!F@4`3#EEH9E#AN6`95!<BI1,JI!D066SF8 +M5P'J,:=$79#"LINT,;%S-<B1/ZH(29*\&BBGEV'+JP1VX'K!TUQ4N#H\5[LZ +MO*A\=82")D32<A$=3,D5,*4P8268`)CN,LSN?PGT.0\J:?2"%7$$"_WMQ_[Y +MG=+@#;9*P!H!+GC1^_X,S:K>Q0!_,B?$"\%:YKS1:-]^?/>N_^GL]DC[:8#I +MVW8\HXW_'_[:,.>M%O2G;P6S(P,K@*Z$QL:?CQHOMB5+EJ_;MGMD&!GOS;DA +M;&6NW=*W!F-K$32!$&ZWPV^\XNW%?QR#R8YC91@C,[",K4RD+80E(,/X]L4+ +M>/=M4SX;AC6:><:603Q05,3XTY^P$S[>77&'M/#6.LN>NEO'$9XH:MRL@(=8 +M&_#1>K1#8T\C0B\ZQ^*-%9@C^CGV7(M^Z)73&'1^0;(+N:9Z'1/H5&`QC4;[ +M^N;LI'_U\58;2?GC*&O<<$R2<I:G%QK>RP"&3XS3?T2#\FT,)!H:T?87V[<? +MSL[/FT8[3BL:BSP(V:TIDFF)R1V:3<9X\6<QV#!SR#$&-OC3T&I&-7@F@EQA +MF@6-1F%''AD))4?.>'C/"8_(@?/Q-N9::N*,R*D3KMK1S!K=RY)3I(]RUV3A +M4L#J-(%F[^3\ZJ1W/K@X:"I*_Q][[]HDN7&E:7YN_HH<;EF3;%.1DD8FV8C# +MM9&*[";9)5&F)GNX[$LH,B.R*EC(0!*!8$55L__[!N[N@#MP;@#\0MN>%2L# +M?N!^_/CSOKAO[Y+T;IML'GXS':IJ_D'WGYL__*FV:N9@OW_GG89MO[\I7YKY +M].6OKA5XN*\^;_@_;I[>7Z?BX^)+D<>;[*'X9[/9QS?[Y%JGO__XYOY@;6+C +MI3'(.\U?U873]`^R</0.7CF/J[D6\\:]V^;VYIV_>W\$(M4,?_[9'S[][*\? +M7&>OW\<\/=^]O";LG7>*+W$6W_\[/GVYRWY_=>G5IDT7NC:C'ZS\_7B6>HMB +M--1UT.@<7@=2GXU[>HU5GNG\ZQ_^^D6A@N5G*3?*GPJI>O+^GZ^'%-=*_>+/ +MU]5XC7C]6^&//WEON/D5)F6)/3W>O-M^V?/=FY]^NBE;?%S=)';*?WW]ST(" +M*P%\4ORI$\&F3HLJ??)8EVG-J*KQNU637Q>_O]O(3ENENOA4H=[>-&W*WOQ7 +MW:8@Z;O%$OCG3[_XZ^8O'Q3:^^GUF.+ZKP_:_K_7[$+9[EW#=F7D6@M[\>MO +M(M>KK/Y7O=#:7^M_/WU:?`KJDWJ.KC\W>>_^\XK%OW[QETW1X(.;)A<375^B +M"\:LE#WX[W?>.1\M9:?6V#=_%JHR:W55(*BNW)9KA3U3[<!J_)HFXJ,G3^YY +MD]'?BRG7Q5[>;<O_JAPEJP;I?MJMB4%NRS16>S#28&1.BK6=WIT^^9LI]V6" +MR^5<=.WFI\X]GO:[F_=./_WGO_WG1_]Q-;8_??C3QS>GGSYJ_EG^Z_J_'YW2 +M32&-Y1<$?WI/BY!FU^&<_S98[]?>#)9[/;8G_U7\^M_UC!C^^-]-^HYID7A[ +M!JO?[4DT_*[DT?!K@*E4;D.N/>,A*\7R@VKUMUQ5;L*]'FW=_+\W]I9ZT*M# +M+)8".'S7Q+0C2S1UE\T)M.)M?$GZ^Y&.]A[S1D4OS>RF>H9QQKW4EYIFW$/U +M:>/Y=E!]:G'F^-7+>`H?-?N>]$\HSKVW^C7,L^]FB<PUW]*<>S^7XFN<,^ZE +M^<3W?'MX*+_$/5_\YG._\^VA^Y[XC/MX?-C];L;XV>V<P8N'1^8-7WWO]'#, +MT^+[K'/OR_1!TV*?@\@S[+=\C<LB(RS>L'[=[KC;9KOF$S@+C+*Y8#/S$)MO +M^2ZRFZ9`EMA1>;_S$CNKW]8_\Z[43[;/O:OZT<CZ/:?7P]PEZKVWU^JMCLOO +MM_WDTO*[KFZ+66&_Z^PV66FXY?T\R^^V^#CW"KMMOGRU_)Z+=_4MO]?S>86= +M7MXNNM/N[:`K['9I.6C?9KK\3F^+DPR[95=M^]+3-?9:WD&T^&ZKCRHMO]_F +MXW'+[[GX^O'R>ZV>IEY^O]DJB[=X_=/R>\U7&>MEE;W.KS_5!ZYF/-ZIOZ!U +M*I_XNI]Q1^7K0>8+_^,AR\_;.?=0O=1DYOC5"9=YK^*HGRB>^1R2]H'CI4\B +M*=\3G/7TCKJ?><_O]/8T\PF>X?<8Y][7=M=^(7VY72G/!"U1C^J.WVS:*5QR +MMPN<6!KL=*&S2H/]+G%*:;C3%?:YQ,FDX4[G/Y,TV.<"IY$&^USF'-)@M^U3 +M;POOMSZ;,^?>"CM0N>@%=[7$&:/!/K?SBYFRMR4U1=GM`B=.C/NLGHI>>,?+ +MG#89[':)LQ>#G19?6%UXE\6WX9?>9_60VL([K;X$O_!.7QS/*^QU_O,S@UTN +MB?KYKDO7BGP=T_Q'Z\I=A;<O[P^+W%O2O.EE1HF<?P_=68[Y=J86PFQ[^3#9 +MUL_=-&-+MINO_OCE9\^^+I\%T'_0GH.[*9Z'+YY@']NF>!CM#W_:_.OFV;/G +MGW[0C_?\BS__\P<W3[/B/KJ;]C$">'^*5RU]^FG]S,*_J.,J7L;<&[7U7NSK +MMH.;L`WM!]&Q]WQKK2Q[G)ZQZC73RK^NB7A:O-):KPW#`/3R8.U/?<_U$+F2 +M^QX6Z/U(3=S#RM2T6;]2J]K$[KI?D<TS1[>'XU_^^M4__?4/?RJ?<RL^S]C\ +M>^HA-VU;_=FCZT^[X;-'[0-LQ^:ILW?5I]@FGCJK8TX^=:;N6WGJK'[^S?K@ +MR+5'C_5S<]WC(]6#(Q^U+]AX\N2CC^KG0EZ_/"3[FZ+4KO$>?U4&TI_0*SJ@ +M_+-Y^*T<<+O+Z^ZT_QX^K=?UY.G^YKW'CT^_^/`?/OK%+SX^?OSRO?)/IY\^ +M_(>?/OSIO2K\3;W9I=VPU_^/G[R?9]OCJ3`G'Q0_/NE^;P97COO/'Q?_W^D7 +M_W[\Q<TO7M2_7&OQ_U[+[[T_?O9/7_SYYK]NRB><_^W=#]_]CYM/;MXMDG== +M+LV_?W7SWU6G_NMF]\F3)__SXR)#[Y=;[/[CYG]<-_C@^E-YP>?FW=V[O[C9 +MU>UW6NORT<?WGSSY]<TGGUPS^9L/ZKV66[7_^6Y1.T]^U3ZV7::RC7Y_C7[M +MP<V['Q5;_>87U:;_W>SBNMZ*P5R+X_U=41UEU`_4QKM?=+OZ[V$-Y&\>]T7? +MJXVZQ^JZQS:O,WS]_=UKES^LJ_[ZST_J*2_^\Z-R@W;NB[;*DT9E7/51(V7! +M-,\>UJNQ>)?,![2GZ0:/-C8QBX<9RRX8%V79\W9EWBS=)=/ZK[/=0.!)\3J) +MNG?EG%?+7'W\4D7AY+.7:/B5/1UY<.W=/GNJQ]:*Q?SRN@C_<WHMMP"H$#!8 +MV>K#:QV!VPS]LGLGQ;LW[Q=O/3#BMWB&NGR6[=TN_?7#K-<F9A(W39H6S2.$ +MO8Q/YW:LRVVGJKS^>_/`>O6'02$H$U:GJ!^W[`YTPHQ*\3=X_YJ4E`^VF9)2 +M/?$675K*%]Z,&]GR=9>5:S5MW82`N6)]8SVLS1>J;^I\VCPS^.3]PHY=A_Q[ +M8Z_*]8()6YS6G"%F>P3'C]U_&]GOE9>S*M;4]%K<S@R;?VW?D-'?1]\<MR^( +M+4WRZ/[+E[YUAKA[S]Q$A70;UM5A;ZD'A16@J8EI1[994#927^KVM/N[.M7- +MDC?W?_`KI*RJW0DO@_*55X"56[[,3EFTIG9:1`05]!:&O4R/0$M1^=;<?GY, +M'6Z31-M/.8._7&Q/U=M[>S5FWR-W=X9"FW>'O1<,K[/?XO6)Z^RY>"7C2GM> +M:\?):D-.UMOQPW:U7:<K[?FR8+;55VDOME/MY=R+[;5]W??2>VQ>(+[T?I^M +MM-\O5]KO\Y7V^]U*^UV0C(.7Q2^]YP7IU+[1?ND]WB^^Q^I>T*7W6K['?^F= +M)LOO<97D+NN8U.\A++W3A\7WN+Q9.2^_Q_-*A&\^5;'T?I=TV^WG-);>XY)C +M5#[YL=A.#1\1667?S7=)1'>N[M)X5KOLAN'4<OGW\?/;ADWZ)[GU_9IO`P'V +MI7^N>YOU!]L_"[W-FI/.PVWK]L#SV>JV6DSK&>SV$]Q/ZR]Q*[-JZ$YYEAH: +MT7"ZD!U2_3:]8-SR'66"\4[GVY-H!\L':07C5<^U"@;L?3*>&[GW0=2:!,4> +M]'57_,6Z^H<_JNM>C6^XME4T5A:^>=?V"UO*IUCGO1[4?IISF@W%9@H63*W4 +M<'#HZ`V&NYCLNYJM_K4:6U>;(J+LH\SL+Q?9R^`:S6Q[*N[A7F1'Y9M+ZB=3 +M^@5MVR=OA_6IX^*O@\M`\^_2<`5H_IT:+OXLL-,5]FFXY+/`3E?9Y_"TQ1)[ +M'5SCF7^GPP/.>?8Y<FEGGAWVS^O-QMCQZQOS#*[>Y^<K[--R76/6?7ZUPCZ_ +M7F&?WZRPSV]7V.="<&VN$RV[-]M5J5GWNK_<)>>%]_GBL-N\*)]F7W2OI@L9 +ML^[Q^T7W]FK9O>WWCX4H%X\N%C>A+[ISXS6I>?>XF+$;N18UZPX'ERSFW5M9 +M.?G+[<*[37?GAV7SFB:[-4;ZPZ)[6]8%+`N;\U6MSHNKE>T"YJP[7>J8SG8Y +M;YZ]/6[S?)\=%ZJ:\B''39(>7Q2/NR^SSU.^TY]GL>Z&>\Q:?=&PN.<Q/>Z/ +M^4(Y/;UY*+]4==UVF1T:KN+/EE++]13&OI1=F"ZOE'L=7N@H_SQZH<6P1>]J +M"_@BZU0_>E==E-==*,_BESEL_E&\6[57&[(OZK#M6/UXWCH=,#^SL=#.JT_N +MK;+OZFM\Z^U:^5#?BIW0O^&W8D=.QKME%NW!RE/1?!1PQ2Y4WPM<I0/-IP17 +MV7GU?;Y5=MV\)&R5G7??)EQG]^5G"U?9=38X/;O0?GLW$BV[9_T[B"MVP_2) +MQ)6[4[U';^5.F-Z'OUZ7FF\MKM>#YCW]:_=@W?K4W^V_<C_JM_ZOUPOUU9HK +M]F+X-4AG.E.]R]^9[K1O^7>F1\:K>2MVQZG>&*^/K=@=P[6L]7I3?F?`F=XT +M7R!PID/%QRV=Z<QY\.38>GT97AQ9HR_*]PZ<Z8TCRME^EL&9OC2?V72F0\77 +M-]WIS.-AI1/']F]U.M.=YEL4SG2H^+*G,YTQ/IBP7G<REZ!3?![4F<[D+F7F +MXE)G5E/P^M.C*^Z[_2KI*GWH/V>YW)Z;;YFNLO/!XZ`+[WK3?@%U[3ZL>)IX +MXKNI*_9IU=.T_2^MNM")]4[4#K_/NF(WE$^W.M$+^V,2:_6G_C"?([U9[[RQ +M_=.P;G1GQ3/&Y@_)NM&5%<\5FS\[ZT97UCM+;/U(K1N]L=V8OE)WUCHK._C: +MK1.]6/'$L.G[N&YTQ`&%[G]1UYVN&!^L7ZD_JY[SM'R6UXV^%%_K=:,GY4=\ +MW>A*]6U?-_I2??+7C;[47P)VHS.KG7,U?C=XY9ZL<L_3\$O#:S\Q47Z$>.7; +M-`U/72U8$:ON?/A5X]7J<;X.E$^152_6ZW>@^VGP,&'7R+!?[5?`P$U/\%F_ +M&EQN/?A:L#&&81^6WHSOK6MGW2]TE/T4]U_PUYLVV[.-<AU`W.PZ?V?*PMG> +M)9O[JZ.\/>TJ#/]JS%RNT*GC_>DW;O3(G9Z,^^XE.^),Q=1_V3X>-O?[;7[. +M'.I4\='/;+//LG3,="[=J<G'<Y?NT-0CNPOW9_JYP84[5#Y/5[T!WK5.F=XI +ML7:?\L/HR;6%^P1Y('+A+I5FY"Y)3]<?7Q_N'$I6OV>`VP#<Z.'T!?HU^OEP +M3O+#8[*O'M),;[_?WPU?D;)R'X_[2_&.TVWQ5JJI>U[7[M_XK8QK]*ZHOK'K +MZVOTJ3S'51U45R>87.Q?=0[.V?XYWC'7(%+?R^I.KXI4.>;[)^^S7:4_F[OT +M:/E&U7I=4\[5N\FQP<4$=SOH>L\<0-GME6`N>-SJT\&3]^PMVYN)^Q.6[<R+ +M\0N9"W=F_`KBLIU)W.K,\.W(*W9F]";"93OSL!V[N6;9OCQN+QOE]U\[<&J[ +M[MDI3;;9X51^5V3\"9%U^E5D;O+M=LMVK4C5RVU6G%H>O/A]M4Z=S[O]Q+VA +MRW9H].[09;OB!*^KSWI-/0JV5&<F7M^Y9#<`KVY<JCN7O'B%8W-9=OT.M4]S +MG(\.'/#?G]\ZL*:K6^S:T]";\I9X)X[VH6^#7:@[U=GZ[2%QXCJQ,U<W((\Z +M+MT5-ZZG%%;+P675O7KSZ@A?.)"G]DY&A[I2--S?Y>E53O-L6YQEW`[OL5NS +M?_#WE2[9M>EW="[9FR(QY=-OE\,IW[L@^4VW(`]QKM"EJ0<HU^B2$Z=`^CWJ +M+H]?#Z5=N"ZN=G#Z(<OU.K4Y'5X<';G53NV>.X?[5:]`CT"NT",7SF&K_1E_ +M"]PZ'7+(@FH]*QZ1W-Z[<$EDT*W;E>^QM_9J^`%W1_IUZV)UE1T;?G[>D9X- +M/Q?O2,?<N`!FZ9H+E\.,77/AA/B@8PZC/]TY</UNT*O3C]EOJML&)E[7O&H' +MW;A>;N^;P[F[<TU"';E36.W2"_4,O(-=<TTYRTZY)TUEMURYN*YV['!*75N% +M19?*DRC%.4.'SLUUO;ND67;]7^<Z]GV:'/:Y>SZ[ZUKQQ6!7^Y8Y=@*CZUE] +M*_/>@6MZO0YFF9/5=NV6"P^@#7MUW+]V-6'7_WM(?W2PQMY>_]_]R;VTC7\K +M8)T..6H5I]XRMD*7BDOPSI74^"<65NF0`\\FJAURXE;Y7H?J&P[=7'KN'C_F +MMXX=.^:N'<SFB6L=<NW,:NY8?\JW-3JZWL9?4KA"AYP[<UJ<+G5L[ERZ$:^P +M3'EV/MYM<V<.$XI71KGQ*&C9'=?2T_9G^O,6"W6K.@FZN=V>#@Y<=%)I[<"] +M6N7):S=6O*YD#N1&[Y!#=TUWKQIUJ2_-\P@.S)S2*7<>YE,[=7]J/^/BA)0H +M?9O\9M;R77K<9P]N5=5I?^?$;:-JEQRYUJ=VZ<V#<TNO>*N>,[6$^/;6*OUR +MXPT:6I\`7[]:HUMNW)0SZ%)5[D4$QSKGR-,=>I]<[)(+]Y7TNN3"0S!:EYQY +MR$3K%>"+7FMTRX43JG6'7'JP1.N2"^<MM0ZY\?:H09=<N7]QV+&)SV^MUB\G +M;GS6NC7Y6:,U.C7]R;(5>[6Y35,'[A$T=LW%!=GTS9T+'<;N57?].-8Y1^YC +M&?9IL[T]I<DYWSOR[GQ##^^2[<F)<_[VOFT.QYT3-QP;NGA_GVQ?.+D>-L=T +M<]H_;K-M[L*;B0T=_.&<UI?`7"2>$Y_?T7I4?/[22>URSQKE[F;*L7/02L>F +MOFFZ5K^FOF^Z1K^<N&NGWR,G2]Z]$Q?%*5]',U6(MH/7/)WZF&'5I2)9Q8O= +ME6QM3E>GXP!8U?O5EKXAHNS&D_<_^_:S:E=/WN_]MBEZ\>SK?_G`\-,U_&=_ +M_O2S/S_[XK/R]VN(O_YA,[[5.W_W?[*'FZ?W-[8^O/-W3][_PY\V_[IY]NSY +MIQ\\>?_Y%W_^9]/.1_KU_-,_?/II\</S+_[X+Q^\\\Y#>LJ3-\4']XY/B_F_ +MYOKW[_S=TZH?_]!ENOU;<5;I(^L/97)-ORH3,/ESDIK^#@B]N9^*7FVA[.`J +MA\8FQ=^M>RPS67U!5OWYG=WAE%M3F6]O/[Q[YYW#\2XY[_95NKHRO#WMBK\\ +M;;XR^)=T<LOB%"ULL_;[O).;5TO/UHG>TM':E)^*Q30HD_A+?)/JOCIT,\J8 +MRH;U:_VJTZG?,=L7S^/P(KS(WG(C<`,D["XD_``/6W:(X?+!1;@01E'[D_)R +M`;KQB_+?U8O(\:VK[[90EES=\H^;\^/C/B.W?\9L_R6S_7-F^^^8[0D56[?L +M;MBA1B!46]UR1VYY3VY9O1Z4VOKE/J$W3N@M69VF$:UMG-+W_$!N28?0F=[R +MS%P)S5?3J.TIU*^;OB&WI.RS^.[QICI!AF[\N#V=\I=9>G[Q<K-+\^O_\6)D +M^R+M6D<4:]]%:6QZ\?68OR3`C>]>[N]>;1ZV+PI?"&[4^$%P@^ISV^#MJ\]B +MX#:_:OOCF\WMR_L#J>'U$#;'-M0_-(!L7)]_Q;8B=+/YK@>RV:7X!@>\4?,) +M<W"#Z@O5X,V;3^>!&W1?P88W>7S8_0Z^>7:+V':_W>&VKMZU?SCF:?&]!F13 +MTZO>"2&*!^@NE(;%.;%KK1YWVVS7/*9`"-,>?*.:-F^3Q[5JOHQ!:85/K_[- +M"4+;^CPHKJ7Z#4IDR^ISM\V=B=L$(3*F`-7]ZJP0[>WEK"BU7V:%8$=(^)VH +M?"PG0O'%`UZ$YN9>5I#BE92L`.<SKWWA4FGME9MD61$8JZN]*9;5_K9P11C+ +M8`I2O&.=%Z`\3<N)4%U?8X5H;F]D!2G>!L4*4-U;Q@J1<8NB>-T/*T#.[<&% +M&P"U,NNOER.WOQK[Z__D]_!VQ=40^-8_'K+\O$4T0'NHZMN(N,TWVUW[%@%R +M2_5<'3W&FPW.4@TCX*S)H#W>EPQ"($W)L#VO.=*.#-NCO,B@.<Z(#)JC7<@@ +M0G>BC!P"8R*41UY1)V_4QZYQ!VK:X]&,(S4E#@TS^*,NM1GJL*O7D`()TH%7 +MU;1(<R5"])9(9SEHCE'/06,B5Y4(.#MG;%Y?_"/'J!^@H0=`N\%!!*23&[0O +M;@BFMRYNWF4TK^[-I+>O[J&DMT<9P$%KXNH!GS"IT7_=&QC(:A,P0?NW>S7_ +M*,6#V%:[$$"-,;Q/!->^ODQ`;%Y?->"T5B\B\.-4)^M9<7J7&%BQ3H,+6I0@ +M_#&UUR-84>K+$\08[=4*8OOZP@*Q=4L48GOET@8U0G6E@]BZN/!!;5I>!V$T +M[ET6844R7B5A1ZS1SXYC=.;LJ(;[&?&1VBLLG""M]><'84]<[["`':HY2.`$ +MTKP'*Y#AVHU@O/I\B6#$[@R*8-#!C5'\B-(!![=!\2/V[FYB!ZS.S0@&;,_6 +M",8L+R$)QCN?1</IMT$QPJEG!00#R@&B.^\@&*Z]."48L[Q6)1FO]X0!.V!] +M)4LP8GLJ0S!F>9U+,%Y]LD0P8B9<C.5%,<%XN7#_+L+Q.*QI+JBQFG?7UXAA +MJLMMQ,;MU3=B>Z[[KJ_-<5IKE^J$`IGOLF>&;$XXBP5D^=21RWQ2$7D.U7(1 +M4"H:SYM:+A%*16.Y4OL%1*F`IAOO>1$9%K)_M9$?AG?"8^I:)#^L"'39IRL& +M%RYEX@@P4N*,Q?`JIU`@WN&-\1JH5"P9A1I<(96,-GA:DA>RN7XJ%8][#&*[ +MNBH5KKS8*A6LNO8J%:V^%"L5KKXR*Q6.<]AAOF[+#D8]E6JXJLN(,*Y%O0?# +M^H'Z+PJ`MP2>F9Z(4CZ;=C4-F_OK*KL][3;'^]-OA$*5J?V5;>U"HPETR+[F +MP1'X0ZG_LGT\;.[WV[SX@`4_6O%^C6RSS[+4MCA1T4:O]J,BC5WWQP0:OZJ+ +MB51>7:V>`Q6+5KY\4RI8\;$`@6!35Y(QL4K&W"7IZ?KCZ\.=1/?Z(2=,N$#H +M<4>-WL'#.<D/C\F^NFJ=WGZ_O\N)\!\&/^XO^>;E];_VV>CY859@^PE.=-@B +MP[83,.A@I3^HA+52=M'`E?&0#SQ71+&:JD_W"H0K.B>E-:-GCO&!-G?IT?`N +M`V),Q:\*U^/`"<\0>;:0G)*\+3Z[RJ%\]:*?T5.^B#`CQ^6(*"_L1UB8*/:C +M(4241"C*@^UZ'RJ*]50P(LK#UG:>`Q&D^(BM\ONO.4<"=<A3FFRSPZD,/7H' +M)B%F\5I:^SE<1,`B4/OU17:T\[7IR.EN1"3K:6Y$#%ZEE[YJ]+(;*,K(K<G@ +M]A,WSH+B7/+BMMGFH)L1J;T(=CYRS,+]^2UGBJOSD8;7G-)#0NZXAL2I#B>J +MSZRRPW!F:NJ*`RH&\]BH@*#D9'4W!%<?1N9&*C[3*Q"C>"?N]4`OO:[9/-L6 +M3G.;<.P0]FYE<,SQ^WC!88JNE-=@+X=3OF<!H8DW=3T<&VOL\C4Z%L^P]$-U +M)PFN]H!U=D"-/'X1FQAM<SJ\.')/1ZIQ!:Q"%6[R6B$V%,NKJX'LMQ82(DE` +M6`M97"/<WK,.;P;Q;JE7*:SA])<'2P2\%<U@&?$MYTC3&/(%QQL9(S*/^RPQ +M64>!QI@LXS^(.,>B*;X.*!CN]&/VF^ITQ<C=Z_3(S+,&]J!S]/9.;+ESSXJK +ML5ZH1QJ2,<56>1E-<#6^4+X3)!/Q<$K%YK:(53JGPL5*F,XN["7-LNO_RD7\ +M/DT.^UQ0(KJ82<H_@AH$S:3,3Q>R/M^^YQS*]B)GF6Q&K_%85RV'X8[[U^)= +MO/[?0_JC9!ZKKVD*=M3^&`@ADC1SQVX1P\8JSF?(I<W^;`H^$N>BK1J)=\VB +M%ZD^FRH\H3/H<GXKI<FYF+KGB5@D,7>=2P4J[V:4GD7[38C82'+N6?TJ%S>D +MR#G/`F%Y=C[>;7.^IA1WOC$O)Y=QQ#K4!AI_X@D2KS+"PV\H(<.H=<XYUU=Z +M?68!Z*M.XH2\'I$SON[Y#9$@S:48F2Y)7"Q5HUW=E_J]19&@H\_/(&,][K,' +MH<R=]G>\T\=J+.ZQJ1KKS8/<A!9W9_+S!7RV$A^0>5>,%FSB,4AT/.:9JD&L +M:BZ*#U1*1>5>2M*#B<9BG?KIQ6)=X])B\2]%:>$FGJ9$QV.Y8>W3N<S+3UHL +MEG?5(C'O7AO$8I]5'48<>4J-%I!W=EZ+-_K,&SK:^!-OU'";VS3EG``UQA2= +MYB:HP+&/,6YU#DLJ*O<<T3#89GM[2I-SON<^!F((?9=L3[R#$GO0S>&XXYU< +M-\2^OT^V+V0GJ_AD^6E_]8/;G'7'N2'R#^>T/H`4K5S><V9:J.+)4MGE*DB\ +M?(:^23E_)>+8\[2D@&-/U*(#\DYE]4/)SH>@Z2G\NG3?"C)('ES+/$5;Q2JZ +M5SPQH?1O<[H"C%/9ZAG&B5,ZQ2?=C='N]YMD^W2?V=ZV/=&P>"ZT//_6^QI( +M\67XKMGM:7?]P]/J?]0.CFQF>G[:N+GAZ53S=M=NEI\)O4[#Y,;]E]<:-SJ= +M;T_3H?IOH3)N-+CMO-BJ5P-U7LKY[S\?/K%Y62Z_Q#88G`"%-"K>AXUM4UTL +M&E@Q4-/Z6^/%7[_C-.Y=W,,V[WUQ'MV<U3KA[3QAMM;/1>#;IYSF%W3G:\'H +M'XE"FO8_F@UI8_^N.Z+UYZS6AF^Z(UI_Q6K]-:OU-ZS6W[):HZNZ^0X]M9WI +M["^B_?Y2-B&V?G'8;5[TCWHP[?OG2A%MOR>V>T5MM]\_%NM_7UW`&G@,8)C! +MZ6%,6P(U+=^Q1S1%>X:F79FK_.66'"#=G1^HO4Z3'6_O/Q#;4<E!+:CS=0V> +M&6O0=+X<T1POI75#=+O';9[OLR,Z3^4+8<L;(?OGUB"M3_GN@/8:Q7L$'LO# +MMO2X/^;H+M=7&XL'Q;!-#2\N@#0S'3@5?R\.1$YZP_(,>M>RW`+23M\AK)GY +M+H*FZ3L?WGV8_OZ=OWOR_A_^M/G7S;-G'^SVC]<#D/TG?]O?O4QOGOR?FY]N +M3OO=S7NGG_[M/S_ZCW]X\N2G+O;?__3QZ:=__S"]_O&G]_[V\;\7<9Y]]:>_ +M?/'\LP]NGO[IZZ+YTS]]>OU_?[G^OW^\>?*DCO[AUX_IS=.[FZ?E'I[\[YN_ +M__NR\?9ALWGX\8/>AMV_KCW^?Y2^GM)S=K?_Y+TG__N]F^K5+]?__C_O%<?1 +M>9HFGQS3FW^_-JBZ^TG;[YMK+Y]=__M/7WWZ6?&/:_2BT#XH-VZC7^'Y@3J< +MKK=5UFZ_9^?M]GMFYOYV;?7__=-?_O#UYYO_^\%-D8>_^91*0_?+W";LDDRT +MFGS^];Q5F>!R^69_8B=3'9):F?HI).,9IVMV>V>:BK_>J1F_QO_BCU]_]=7S +MHAOE'Y/\NJ.G^?;%)\^>57^KM_C'YW_XIW\I-M/__?1I\23])T7_KU:O'%FQ +MT:>?_>._U/_[AV^>?[WYXL_/GG_SZ6?EW]3_[G=\\^PO?VGWI/[WM2//NA^: +MG5\G&90(K0Y0I^VZ4H'MZ&\%=V^>WM^\9TC]>S<__713%O=[3]X_97=7T?K@ +MH_?^-C9)V_R#KC#1/4>?H325MW$@3;V#LB*\)+PNV15J:0H6ZEGF(3347R.# +MAYX8&D34&&"8]'9L*P1M:D`%89Y,&F3Z(R-?U9B&3F^@0/CH6?P90C@(+52# +M[Q0'2<W!4GNUZ4JA\N_-OWO@P26K.1)#X\'<-8T#Y2:#@[YVXV[%6V)U:=7' +M:\FD)2G:`@9T:6(3RS%#OX?-,C0/3?:88H$)GV^:+#5^/;)TM\IOOY>L\VNT +MOQWN;VQ9_/@F?[D_WNB'B8-M]LEIW]NF2_I@Z_O#WYQ>'[??A[1"5IK@WLHJ +M;M!MI:/XAPLKJNP4:#$56]I64A6ESZ%RC*,0TK,`6@A--\9^'UT"=:_,]5\. +M)(32Y\V(J7([07"J=H%2,%F]9D94"1L!1+,!@`[-IFCV+U#R8?!^A8D<KI3V +M&HS*^O:/CJR;KI/0U=.V&%E%2E0#>;H<3!'(D"WH0M&Z"=EN:N&HO;8NH&[@ +M@2RC&69R;*5HVN+N6H%K#6ZU6)&E)'H<7=J&,(1I32B:M/92"T:S7"N$=Y1K +M^+8;!:[BIFRE_""R:,MXZ)4+Z;:V@%&W1G0K&;2?#IN6/%G0.955;76B!X"] +M&<2T7JWC:=8L)#\.+%U"D:TW_:`U6<BHEZNR)ZPSKLL^86VS8Z2L?>-1TMJ; +M6677WX7MA"K/N;3=JR#-65<=GO52%8T#(YT$N&J]A=E5]Z,N=OEJV#G(=HP3 +M];V1>KSBYIN_L54QS\4M\74!.MXDK`SW+WBMO:*\5C'W9KY:B\5>]7Z5C[(V +M&E7^7/YE[=5HZ^AP-99;6JJR;--;C];(/=8IN1BCG2EEP]4%ZB1LR[$5IO59 +M6V.V4?N^QF:<S?$5T^J7^VO&I&%2J\9(,S79=I[I6TT33=]^7,V<76_^JYJ3 +ME6!;J^5(?ZGK6_TW]U9KTUG<:JU;3:[7-KJ)C$U.)MDX2!YN[2F=A6X[N?ZZ +MOD^LP"8#X:U`X;F=6DVZ]CF_GK#ZAUU1=O*UJ9]@G[(=D'Y*"[H2.K$:0U1$ +MARIC="U7KQ@:JF/U=T=7=-UIPIJN6L+6=;,7*U'K',&HVD\H89UVG<=L#UNO +M[5@@:[;.3*"K=IYYAZQ"@ZKZL`Y)ZDI8B1,L;:8%PM-N6PQ3NU9,Q75M)0>K +MP&Y6SB@+^E<-NR"N7">9ZCB!!I8K)Y-[LC(:=)UJ++6$53VX4@)N`5O9MJLG +M4UD*=&W/606P%6K0:U_6*$FSB:MT@KZ0*U_FK3$$AE\']7:=!ZOB;E?2*"N: +M-Z66?_[.(.J]#1SE1G\8!'CT0L`8,MBO%?7]/,*(;\T^`0N&`9(:PB`Q'"^$ +M%?U\!@J,Q<L&Q0"#;?"3`B03(<*!"2$8S"I$#PR-,+)@:,[T&3X")5@/XF\% +MPME4O()_PJ$4F_A`IW(H7#H500A\JO8-DYPRGP31T>>!"Y=FH,2F!,#4XT8C +MILQM#(A9KHB0?)AR+UX1@N]@.(S`:$@UQV@5:9J1=:0)(.EE/,--')[&RXJ$ +MLZOX/M"$MRDV\8%<Y5"XW"J"$+A5[1LF2V4^";*DSP,7-LU`B4T)L*G'C89- +MF=L84+-<$2'Y,.5MO"($W]MP&(%1DFJ.T4K2-",K21-`TMMXAILXO(V7%8E@ +MU[2U\81;$L:&QBR$(A$%2=34T"%#8PP1,;$8FF6J!T>$23/C#Q,$K`R9"BC9 +MH*D&5S1F<#'^\"42!^-;)<)9E4R?F4D\.>Y*),[,)+2CK@1Q4)T0#ZH3T3,S +M"?U0*:$=*B7$0Z4DEC,SRQ41D@]39L8K0O#M#(<1&!E):,?!"?<X.)GAS(QG +MN(G#UWA9D0AV35L;3[@E86QHS$(H$E&01$T-'3(TQA`1$XNA6:9Z<$28-#/^ +M,$'`RI"I@)(-FFIP16,&%^,/7R)Q,+Y5(H95#]MI_W+=Q@]:%8/AT^H:A<2K +M<N]0)2IR2M(B;3+XK*D'2VU+XDTU=@)QB@S'09P%:PE+BVEOXQ4O)/P-AQ@X +M92FGFJ`M=3N&NM019)V.=_2)Q?%X6ID8EJ73QD?H`YRS<\SX<5GL>DII##-\ +M`'4LGR2=&O]\+6V@Q*8DY`R_"PK.;1RX6:J(D'R8MCH>$4+"Z-`9@1.3\:_( +M3C1C2`GDT\%!XR86?^-A1<+9=9F\)G7QX_SS1>":U(5T]OD"OZIPH5U5N$A> +MD[J0SQE?2.>,+[1SQI=(KDDM5#TX(DR9&8^8P+<R="I@9.-"NA)P85X)N,A? +MD_*(+W$X&.\J<915]VGVL,TWQ_UKTYOJU5\=)90V``*;U/8P+NE[M&J-ECN8 +MSIC332!(?U#X5C!R],8(H8:6O4!YL52%P%>VP8'XMK9)SH.YNB<XKT\@A/'] +M%AB^]]LR788OC`C65?A5::.L>5'^N\CY-C?8".UG1UFC#X&`&BT`C#6]?5J% +M0L\?3"DL.2>`8C`P0C,8*OKCA+!"SV&@J%BP4!#KW&`J_%OI)%O!7NL3N._- +M(X3W@R88X`\:,[V%3\@(UE_X5W&C[$D?\T-Z-'YNMOW)4>)T72>PIFT,XXRR +M+ZM,=/F"280AOP0H:`-!-H'!0!T7!`1=K@)%P,S%`%RO!I_@SXHE^0/RFIV@ +MM#)7$$)KFV/HK#5D>@&7EWVPVN]^14'8\<?-^?%QG]D5O]G`;8JTPZ"3I`F! +MXDFWWRGXMWE$2<`P^W0\J`,D-42A0ADO`AAM/L.&QG)E@V*`W45X1@&.H^!Q +M`*8%W:PB%$%M1-`%M;F,W_`***'[$`\K$,*F9U/^Y)D79'K&]R?/*%QZ!A:: +M9R2A&6:?CI-G5)P\H^#D&0DGS^+P)\N5#8H!=G_B&04X_H3'`9@Z/*.HPS.> +M.CP3]R=>`25T?^)A!4+8].64/_G2"S)]R?<G7U*X]"58:+XD"<TP^W2<?$G% +MR9<4G'Q)PLF7<?B3Y<H&Q0"[/_&,`AQ_PN,`3!V^I*C#ESQU^%+<GW@%E-#] +MB8<5"&'3\RE_\MP+,CWG^Y/G%"X]!PO-<Y+0#+-/Q\ES*DZ>4W#RG(23YW'X +MD^7*!L4`NS_QC`(<?\+C`$P=GE/4X3E/'9Z+^Q.O@!*Z/_&P`B%L^F[*GWSG +M!9F^X_N3[RA<^@XL--^1A&:8?3I.OJ/BY#L*3KXCX>2[./S)<F6#8H#=GWA& +M`8X_X7$`I@[?4=3A.YXZ?"?N3[P"2NC^Q,,*A+#)]`+Y]B>W:41[77S;&,6? +MT1=Z=_E"B0CS5?#:0)!-4&``OW&YRU78*)BK&(#KU>XB/%BQ'.>`7[,P5D/? +M?:UM3N"SR#O875[VH7L`ARL*PH[;W_YF?[Q+=WN[YG>;N$T292ATGG1!4%Q1 +M]STE`TH^47)@F@<Z+/2!$INBX*&-&P$1);=AHV3I(D+RP>XQ/"0$QW/P&0%3 +M#'6.$<JA-R,HB!Y`QIMXB9O0O8O'%0EAE^G5H^U/;I.*]M+1MC&*2Z,OD^SR +MA9(9YHM&M8$@FZ`@`7YW8)>KL)$P5S$`UZO=8WBP8CF>`K]F8<2&OM=1VYQ` +M:)%WA[J\[$/W`@Y7%(0=.[O6[QPGQXZC]3L<-W8`O.^0>-^):/T.O^AWN$6_ +M0R[Z7>A:/U<Q`->K7>L]6+$<K<>O61B9=S@R[ZADW@EJO9/+/G2M=[BB(.RX +MMVO]O>/DN.=H_3V.&_<`O-\C\7XOHO7W^$5_CUOT]\A%?Q^ZUL]5#,#U:M=Z +M#U8L1^OQ:Q9&YGL<F>^I9+X7U'HGEWWH6N]P14'8\2)[>WBTZWWUL]L$J8=` +M9T@5`,619I]3R*_SA\)^/^=T('0#(S1#@:$=)P(.=0[#QL,2A8)8YW:?X-%* +MY_@%^EJ'4;Z91P3INR8$VG>-93R$%\@(W5-X5'$0]KS<)R,6H_S5;>Y4`Z!# +MIVR/8DZ]QRG5J'*'$HU>NNFD:`>%;X7B1#-&!":J[(7-B-DK!+ZR[:;"F[7- +ML134U0W#>SV!"+JW+0AP;]O*N`GG&1&ZD_"DTB"L2>P6(G&<,0G'/"0XMB0` +M44B0BI"(&(8$3X($AX$$R8`D=),P5S$`UZO=&'BP8CF6`+]F88A.<'Q.J'!. +M!#V`D\L^=-UWN*)`[!B_*I%X<*XRX5Z52/!G*A/@R>:$<+*YGW,&$&BG&!/\ +M*<:$<(HQB>&JQ!*%@ECG(S[!GY7.\@ODM0ZD//X<<<(Y1YP(7Y7P`AG!>PI_ +M*@[$GK</(R]B*G]UG#OE`!C0*=KCF%/M<5(URMSA1$-/-X,4S:#PK7"<J,>( +MP429O<`9,7>%P%?VB*GP96VS+`5Q=0/Q7DT@ANY-"PK<F[9";L)U1@3O)/RH +M-!AKTK$3%<6OKI,FY9VF*-HC.9."CCW+W"$U(A4Z1=$,"M\*28@4?;!19B]T +M/LQ<(?"5/>8B/%G;/!=!6]U0MJ?88\2F!8GMJ>@Y"=<9$;Z+\*+2(*QYL%N( +M!\<9\\`Q#P\XMCP`1.$!J0@/(H;A`4^"!QP&'I`,>`C=),Q5#,#U:C<&'JQ8 +MCB7`KUD8HA]P?'Z@POE!T`,XN>Q#UWV'*PK"CMRN];GCY,@Y6I_CN)$#\)XC +M\9Z+:'V.7_0Y;M'GR$6?AZ[U<Q4#<+W:M=Z#%<O1>OR:A9$YQY$YIY(Y%]1Z +M)Y=]Z%KO<$5!V'&V:_W9<7*<.5I_QG'C#,#[&8GWLXC6G_&+_HQ;]&?DHC^' +MKO5S%0-PO=JUWH,5R]%Z_)J%D?F,(_.92N:SH-8[N>Q#UWJ'*PK$CO/4AY[: +M+1SGR)G_F:<V!HXI9_#W>;I<XH1@.`4,2IRIGUQI6^*8<29]<*7+:N#\6+)Z +M<$08,16^,8%E,9A4`,K#F?(-':T512S.XM]T\HXOP3L4/RL1PJH?]]GI^K]V +M\])LX#:GVF'0(=6$0#&JV^^4]+1Y1"G/,/MTK*@#)#5$0449+X(I;3[#!LIR +M98-B@-VN>$8!CEGA<0`F$-VL(O1!;420![6YC$_Q"BBA>Q0/*Q#"ILM;NS6Y +M_N8VCXK.TT%T;8UB4+FW*3TI<H:2$BW)=%;4@\&V01&B&AL"#D7&PJ;"C#4! +M7;UV4^'%^N58"<H*AN&[G#($N>OM"="N6\HX!F<I$+H[<+RR("QY8S<";QSG +MR!N.#7B#8\@;`/#?('G_1L0"O,&O_3>XI?\&N?+?A"[_<Q4#<+W:I=^#%<L1 +M?OR:A<'Y#8[-;ZAH?B.H^4XN^]#UWN&*@K!CY*#?]6,&UB$_\G@!<G"'/;:3 +M.=PG^'RDS<>Z_.`/]><J!N!ZM6N]!RN6H_7X-0LC,_(XC'P8)GE\[^2R#UWK +M':ZH<7:\/NZSS>,V.QGOG51^=94?Z@`H`%':`QFB[=%.>S5W0.`;TTTA06]0 +M^%9`'NAC!"%!S5ZH3%BH0N`KVV0,/%O;-'O`6]U32-<F$$3U7@L4V'MMN6[! +M$T:$ZQR\JK11UCQN3Z?\99:>7[S<[-+\^G\&,V'8R%'NF(9#@(\A#(Q!QOU; +M9<245YB:C,X(`2F6`9,;PP!C'C^$,Z8\!PJ;54L*S0Z#7?&;'B3S(LJ/"8$Q +MSCA$9RP-,7)C"<'T-R'`*%CO$TZ%@MF6[8M;+TUG64Q;><"V=D!,M#5Q\&SK +M>@!2LC:W>"D;3@N32.J@Z:WQ3%)R@(52F^T(F+1&9>%),F&3?&0)VR@)T`0A +M1-W$8Y5(;4F5(C6&H%ORF4U1.";_*_6=?)L5@[S^S]/J?PI?U/V1S:QK##RM +M#)W2:%3\KBT#9<N.-Z8HG8JH8[2HA3$-VIJ>ZLC8[Y9UJ?>K67^&L:R[OO#S +M.L.<F*JWT&('Z[>GI^0*[I-&2YF1*+TM1LG1V]:J96O6_=K*(E?YB\^ENE[N +M'G;)X;AO<-_\<^WUTG9K>KDTFQK72Q='QTL[SA&^#',Q7?QJ9T8W&"E_I6^& +M^F]'Y'OYRTR-L98;^#M7S1#\P^K9!(TN<U9JJ)M,8D/=&*<!"RX#_W5@U3G5 +MUD^VWY8WJYWV>2L(ZM]67T=:!P%+2=W>O)[TB#T2:6,?PY$Y28!UTN_@]%9C +M*Z;77].RT<;K_<J98_;L*Z*5%7?7!$A@D*O"B"4]N78V];>;!E2_!5)YUEU1 +M`:B1:W.OKL?K[[M&F<K_7GOU51V:7G/E=L:U5D?0V56-;819O<%/KXNV`_9? +M1]9!TQ]#_5?]][WJ6;,PK-!&*1RJ48@R3%6IB09UDJP4:'^?7/WMECCBSUS9 +M_A-]\;E3U\/I?'MJ#R:J?ZR]'NHN32^':D/C>FABZ,"HQS="C'X&ILN[Z\3( +MSR,%WO;)4.'U*'PO<.YD&.JU`;A3%0M!^'3-FD#0Y,I*@FZ#211TF^(XOD"A +M^\_R5>9071_G_)`T."__>^VU475H>F&4VQG711U!IT<UMA%X]`8_7=]M!^R_ +MCE1WTQ]#<5?]][VR6;,PK-`&X`[5*`3?4U5J6OAUDJSKOOU]<MFW6^+(/7-E +M^T_MQ>=.70^OLT/>7M^M_K'V>JB[-+T<J@V-ZZ&)H0.C'M\(,?H9F"[OKA,C +M/X\4>-LG0X77H_"]P+F38:C7!N!.52P$X=,U:P)!DRLK";H-)E'0;8KC^`*% +M[C_+5YG#X1UNF]>'XRY]?=+OTVS_NO9ZZ7<2>M=;VV+D[C<EJNF>P2X'D_<. +M&M(%O;]-ZRADN\G[W=1^6^][Z\;N^SJ:<2['5HM^7ZBSZP5^GRANQ=CO-512 +M/7'/H;8E\-Y#K0WE?M+5UYO_RN5L+;Q3/I]0',"<FDVZ!RW*/Y<JUVVD_""Q +M<&G/4@$ZK:_A;OM^[0Y:*FL9L!>%G.8<V>`YD5%];2*[C]G>ME9MHVF7ZW1R +MUE^TU*>/UIAYR$HL%=2_M=A7U+E6XX"JEHDQ@]6Z\3A;K<WL4NOG<G9!A6=< +MT.X53^FEFV<@VSX_;`_'YLBS_+'\PXKKW][)@8\NMS/7<-E"]]&VJ/K1BI*# +MD0,54Z8&_A?2/<AV(_Y7ZZUJ?2V#]7C)S3B#8RNC.<IT?&T8CC)%5H?IR$)- +ML/6@0M]H\GA"WWSTL-+!9>6UEKDX^>8560[QEYI:U7]R;$TV'<6LR;K-Q*IL +M(QN8U^1BBGJ#G&&6F-)-V)93RZSK]>A":P8>V$(3G<_Q5:,IF=OK!J=FN)5C +MA5J;[G&L*9O!P*8TH.K:VHLN.'USI1A&5NSM]G2X&VI=]6<7UVW=8?3*K=I! +M5F^S!QLKZ]R`>-G/(WHY=MV&;PU:ENTHII=FG9`0%^<<<SV]VH8:Z?QZ(V@E +M>L6-8[*9"@`JNTT1N.P:L?33H04;IIXZ6"PC*_XN?7PSE-?RKRZN]JJ[Z*5> +M-H.L]#J^#;=57D"T[:40O4[;+H,W!JW29@33B[1*18@K5'R2)]?74%`=7V$$ +M.46NL7$^UG,`P&.[)8*.;1N6DCJR0L-44<>*9&2%[Q\>\S>;ASS;[X="JO[H +MXFK7.H]>\FIKR,K7]V;CKY8S$(;-648OZ/YPL&U`R[LWNNE5KB4MQ*6^3%5` +M5_!0JKU:PP3A9JWB<4+KDP8`=;\!@M?]IBQM]P`%8>J^1\4U1I1+GFWO\DWQ +MU^\,KD#[V4FFZ`/`,T5K#Z)*;X]6'=!S!U,"2[[Q6!@,"]\*AH;^*`%PT!,8 +M)!P6K!'XZC8X!M_6-\4U<%?X!-Q[4PC!^Z`)!O"#QCS_X`\H`O41_A4;D#BW +M;W\][BB*#5QG3CD(%G.*"%CJ5'N%J$:90[1NZ)EG0:,9'J4=&ASU:''H*),9 +M.CJ6J1C,RA]W&]ZL?:;C(*]^N!!4$XJ4@J8140R:YF+>PQ.,A.]!/"L^()%> +M9&_'O4BQ@>L\*@?!HE$1`4NC:J\092ESB%86/?,LB#3#H[1#0Z0>+0XB93)# +M1\@R%8-9^>->Q)NUS_0BY-4/EX-J0I%RT#0BRD'37,R+>(*1\+V(9\4')=*4 +M%?&`1FPC0B`16%1(FB)G0HCPH+"#@HX8#,C\I8)8ZQ/FPX_5SK4>M/6.8#\% +M_3SR2[L.][D1@>/PI^B`!$JFSGPD'AS]).PS'PGAV"<!'\<FI./81.[,1T(\ +M9$DHARP)Y9`EB>',QS(5@UGYX^;#F[7/M!_DU0_7@H1R\)GP#CX3Z3,?GF`D +M?!_B6?%!B31E13R@$=N($$@$%A62ILB9$"(\*.R@H",&`S)_J2#6^H3Y\&.U +M<ZT';;TCV$]!/X_\TJ[#?6Y$X#C\*3HP@1ZV4W[CNH7[#"J&P630-02>0N5^ +M86)2Y)$@)UKZF0RIATAJ2.!(-6(L28J4AD^2A0H'Q8$I+^(-"=A^A,P"C#R4 +M\XH6B+H562+J]H+.Q!NJQ.!0O"M",*'2*:.2>D"GE&U34@*94K#6I"2I2>4L +M2DID24I!24HA21J#/5FB8C`K?\J:>++VV<:$N/HQBI!2!"'EZ4$J[4F\P$@, +M?L2KX@,2Z3)QC>;B_EG;"_<:S05_SO8"/?%^H9QXOXA=H[G0SK5>".=:+X1S +MK9<(KM$L4"J(M3YN/CQ9[4SK05SO</9?"*?++ZS3Y1?A:S0><"-\Q^%1T8T0 +MZ#[-'K;YYKA_;?A>AOJCB^31.H^&CMH:0AQ];S;-T'(&$@QSEM&`Z`\'VP:$ +MAM[HIKF@)2U$)"Q3%=`5/#007JUA@G5@K>)Q?NN3!H!WOP&"W/VF+*_@`0K" +M]`<>%=<(45[ND\>A&2C_ZB)!JNZBP5$V@Q"CCF]#>Y47$--[*42OZ[;+X(U! +M*[D9P?02KE(1XLH5G^3)]364:L=7&$&<D6MLG)CU'`!0V6Z)8&3;AJ6\CJS0 +M,-75L2(96>'I8WY(CYMGF_/CXSX;:FGO=Q?7?'\(Z+7?"P"AP&"?-ASW\P<" +MLS7IZ%5N&!JA&6CE#T<ZS8!^&D-DP<*E@ECK0UWW<+43M%Y@O8^C?3"3`,@; +MVB!P;VC-<@>><2-,%^%IT4T3Z/,)M_&Y^_SYG.LV/L?3YW.HA'Q.D9!ATJG4 +M^)Q&C<\)U/B<0(W/(W`;2Y4*8JU;W89/JYWN-CCK'03^SPG@_YP%_L^%W88O +MW`C:;?A6=-,$>C[A-IZ[SY_G7+?Q'$^?YU`)>4Z1D&'2J=1X3J/&<P(UGA.H +M\3P"M[%4J2#6NM5M^+3:Z6Z#L]Y!X'].`/]S%OB?"[L-7[@1M-OPK>BF"?35 +MA-OXRGW^?,5U&U_AZ?,55$*^HDC(,.E4:GQ%H\97!&I\1:#&5Q&XC:5*!;'6 +MK6[#I]5.=QN<]0X"_U<$\'_%`O]7PF[#%VX$[39\*[II`GT]X3:^=I\_7W/= +MQM=X^GP-E9"O*1(R3#J5&E_3J/$U@1I?$ZCQ=01N8ZE20:QUJ]OP:;73W09G +MO8/`_S4!_%^SP/^UL-OPA1M!NPW?BFZ:0-],N(UOW.?/-URW\0V>/M]`)>0; +MBH0,DTZEQC<T:GQ#H,8W!&I\$X';6*I4$&O=ZC9\6NUTM\%9[R#P?T,`_S<L +M\'\C[#9\X4;0;L.WHILFT+<3;N-;]_GS+==M?(NGS[=0"?F6(B'#I%.I\2V- +M&M\2J/$M@1K?1N`VEBH5Q%JWN@V?5CO=;7#6.PC\WQ+`_RT+_-\*NPU?N!&T +MV_"MZ*8)9/CF1_N+P\RA?..C;8J@S-BG&;H\8>2!]0T/;0BH!ICU#WRK?I>B +M@%?\/`4`6I=63^#ZRJ3[`.S:!&$8^%D#;6L\>@6^I>'HZ@Y:T5TMHFE"W%J5 +M^]9E/MS2E?L60X?;:7#?XL!]*Z#<M]BU?8M:V[>HM7T;M'+/4P"@=6E5;M=7 +M)EVYL6L3!-U;%'1OB="]%5-NUU9WT,KM:A$!"/';W^R/=^EN;U?P=@N7>=$- +M@TR--@2&'LI^IP#?Y1$%>D/ZR4S0ADAJB&*$.F(X*[J4ADR,10L'Q0&[8_", +M!`P'P60!3`R4>46(@M:*(`Y:>Q&GX1E5PG8BGA;A-*'VE[OD/.)3FM\=9E,[ +M!"J7F@`(*G7[G)"9-G\8D1DFG4H1=6B$9AB"*",%\Z--8\#L6*I4$&O=ZD5\ +M6NUT'\)9[R#\=S,)A[_:!H]^M;6$^_"%&T&[#M^*;II`+PZ[S8OC]L'N-[HM +M'&:0,@PJ@[H0"`JI^YT0$R6/&#DQI9_*$'V(I(88CF@C!I-$26G`)%FV<%`< +ML'H1WTA`]R-<%H#D09U7N$#HK?`2H;>7<":^425HA^)K$0((E;T]&+[`I?WJ +M,I>J[I.)5#;'T*C>WY2X5'E#"4LOU61NM$-"-T+QHADAG!55ZD*FQ.S%`5[/ +M=K?AR8IFN`SBFH:!O9X[!-3;%@2@MVU%'(7C9`C;07A29-.$^=[J%KYWF2O? +MTUW"]QB:?#\M`-_CX/^]@"OX'KONOT>M^>]1Z_W[H%W`/`4`6I=6U7=]9=+5 +M'KLV00#^'@7?[XG@_5Y,V5U;W4$KN:M%-$V(5U;E?N4R'U[1E?L5A@ZOIL'] +M"@?N5P+*_0J[ME^AUO8KU-I^%;1RSU,`H'5I56[75R9=N;%K$P3=5RCHOB)" +M]Y68<KNVNH-6;E>+"$"(_?YQ<]R_WF>;^T.R/]F%O+^AR_08#(J,DGXD#%F& +MO9C2@$&.49)@GR$R1$S#Y[1'(<:0#3AQ!LD/&3_K5QJ%-'9KXC5K&,9%E#8P +M11H6`D*@3(T)>F4*(^*!`L)7V/XIP.*=)F(R>H=$XOKUU(1WAT2"O9J:P"Z" +M)_B+X/U44WF34*Z#)NCKH`GZ.F@2_!T2\Q<'>#U;;8TO*YIN8*AK&D3[!'WQ +M.F%<O$Y$[Y!PG0Q!NPM?B@Q`F+</]I=1EC^Z3)>R\V2T%*TQ9*GV-J4'9<Y0 +M<J!GF0R$9CC8-B@<U*.#TZ!,6L@HF+<JH"O8;A&\6,,,@T!:Q3!R5Y.&`'?3 +M@,#MIJF(-W`8!6'[`@^*"T*4=.0D0O&CTSQ).:<0BM8HFJ208\0R9SCZIR*G +M#YKA8-O@0)`BCQ#*I`6-@5FK`KJ"1SR!#VN8XPDHJQB([11Y,-<TH&`[%3Q? +MX#`*`O<$[A?7-%&.5D-P=)DD1[H5.&((<IS&_1''^J.`_!^Q"_Z(6NU'U%(_ +M!BWY\Q0`:%U:9=[UE4D7>.S:!-'WB$+OD<C=HYBBN[:Z@U9Q5XL(0(CR3H+\ +MY79$PKM-7":&,A`R.+H8&(*H>YZBO))+%.Y-<T!&@SY,6DL4++11PZFA)#9D +M>"Q=/S@JV`V$=UQ@6`HV&6#ZH$XO0BCT9@3%T`.(^`\/(1.V1_&X&`'$2G?G +M!_MUB?IGESE5#X!,J*H]AD[-'J<TI\X=2F_Z^29CI!L6OA4*'^THX>BH$Q@R +M-):H$?CJMGL1;]8WPX.05S@,]\T4(E#?-2%@OFLLXC<\`$78_L*C8ILF3IKL +MILZ+*)LXS!UU(%3R*#$0]-'V/*$?:BXQ&F*<`RI">L.DM<2@1!\U&"=J8@,& +MRN+U@Z."U8OXQP6Z)^&3`207VO3"):/7#"\;O0`2/L5'R`3M6WPNQFEB_6"U +M+S^X3*<?Z&;E!PR)?IB6EA]PBO*#@!'Y`8N&'U!$^`$%@A^"-AGS%`!H75H- +MA.LKDVX7L&L3Q.,?4!C^@4C?'\0<@&NK.VAU=[6(I@F1694[<YD/&5VY,PP= +MLFEP9SAP9P+*G6'7=H9:VQEJ;6=!*_<\!0!:EU;E=GUETI4;NS9!T,U0T,V( +MT,W$E-NUU1VT<KM:1-.$L+_4TNDWRS%>6XEZ<QS@=8'(]P-*O'H2_;(VW-O9 +M<*]C"_OUD?,4`&A=6I7;]95)5V[LV@1!%_?J.^J[[N3>S.C:Z@Y:N5TMHFE" +MG`^[S7GT:]?=%@[S0AD&E1I="`0]U/U.`%[)(P;TIO13F:`/D=00PPAMQ&!6 +M*"D-F!C+%@Z*`U;'X!L)Z`Z"RP*0&*CS"A<%O15>'/3V$D[#-ZH$[41\+4(` +MH<[[XUVZ&S$JS08NTZD=!!E-300,F;J]3FE-FT.4U`PS3X:).CQ*.Q1*E-'" +M2=(F,V2,+%<QF)5OMR9>K7V&,6&M?I@B=!.*$`2U$4$/U.8BGL0CC(3M1SPL +MOFDB7=Y:7<CU)X<95'2<RIYK6P1URCU-:$>1*XQJ:+FEHJ$>!JX%!@?5J,`@ +M*!(5,`!FJP/8*K4Z!O?7*=TEX%<J",[E-,&Q7&^.!W+=4,('N+C8@]9[EXMI +MFAAV67>:%@Q11Y$"@'(DR24$';W$<2L<M\##%O-Y"@"T+JU"[OK*I,LX=FV" +MN(O#+I6Z<@KNVNH.6KU=+:(10CQN\WR?'0UW(+:_N,B'KMMH.K1-(710]F,# +M=Y<G$+@-:46O;6T(J`:@M:V.:'IM=RD*<67/6@"@=3E4;D]6)D&YB6MS'+K* +M_`"@JVV-@*[6CJ7<CJ[N,)7;\2(:(T1V..:;)#V^N+9Z:=!O_7<G6=$;`IX7 +M>@`0-?K[M&*]ES\8W&U)QU-@.#1",Q@1!B,%<*&7QB#9L&RI(-:ZP1/XM]HI +M_H"_WB<PWY])".R';3#('[;FN0>_N!&HJ_"SZ$8(=,IWAW1H,JH_NTB;NL-H +MQ%3M(&1I]F!3A3HW(#'HYQ&][+MNP[<&+?)V%--KNTY(B`MZCKF>7FU#F7=^ +MO1%$';WBQFG:3`4`HMVF"'9VC5@Z[=""#5.#'2R6T16?'1XW14[3X_Z8&\[' +M#[9PDP+]81!PT`L!(\-@OW94]_,(I+8U_82U;Q@BJ2&0",,10^#03VF8E%BA +M<%`<,)D`+TE`L@8B+)C2@,&\@N3`T`JE#(;V3$?A)55"=1]>%^$8H=X\)(?C +MJ\TUG,&D*#\Z226U\W@<*:U!)-+V9M45-6<P23%F&0^,WG"P;6"8T$<'((2: +MM"#1L$A50%>PP5[XM(8IIH*SBB<HKDT:!."]!AAV]YKRO(/[*`C4)_A37"-$ +M^7&?G0ZIX<M'S0\N<J3M-)H@34L(/;J]V$C?Y@A$^6%&T8M=[3YF>]`B5T8S +MO<#;Y(2XM.>;><A*'.JZ%VN1H.>DU3B.VFYB`)A5-T8@5FW&TFX'EW.86NUP +M\8P0X?7AN$M?&RXH-#^XR(.VTV@:-"TA-.CV8B-TFR,0H8<912]FM?N8[4&+ +M61G-]&)NDQ/B4IYOYB$K<:C-7JQ%@C:35N,X7KN)`>!5W1B!5[492YL=7,YA +M:K/#Q?/.-=O;[.[EX<?]1]U_5GUO_K&]2PJ!5K94?V%1H;=+/!F@W=?@H#3J +MRGVL>4<(\/XZ=-OR9F'W9)JU=4X:"KJ19<7;1]8L>6BZ5ESUO!)<NRC`Z[>0 +M=:]7<$_@%UC#?5I;Y\R(ZY&M1WD]TLZJ]H%08%7U7Y`#3A86A"1W+_=WKS8/ +MVQ>'.XLC4+=PGBO:<.AT4<.@**/O?U0<M+S"1<(\'71V](=*;@QG26_D"*9H +MZ0V>+$L7$YH7%@?B+S$XCD2&&0`AT><:*BC]5EAAZ;>7<2[^TB<"9^-O88)( +M]K!+#L>]S?74O[K/KV88#'+5(7#4:O<[+DQ-'A&B-$@]@R_*T$@-$5SI1HIA +M2I/&\&FR0,&@UKW-O7BW\EFNA;7V(:+0SB=8$)06:#%0V@HY%&\($H,C\:;P +M0"3*WCSFJ<V`5#^Z3Z%Z$`P$51%P!&KV.JXE=0X14M+/.@,<W;`H[1#8:$>) +MH4:=P/"1,7>E8%:ZS7)XMM99AH.QVB'4;R82#/VN`9KY75,AK^$%,F+P&5X4 +M'(0\^V.>O;%8C.HWYZE3#X&.G"H`BCC-/D=%H\X?7#/Z":>3HAL2H1F<$^T( +M$9BH4Q<\(^8M$<3:MI@*OU8WQU+0US>`[\T,0O'>;8^E>]=2QDVXSX@(G(3[ +MA08FS>8N?7RS.>7;?,Q/*%OYP1YU6$P&*:'P--+Z,2TJ:IZ1\F*<(B9G>D-G +M!4"R1\\$ED)JVN.@T4J%1N+,F+?QFC1LOR/&&J@T:76`$JE>2Y)<]6((.J0@ +MR!6+DPJB<.$D+%^*D>U/:?+C/AMU7?J6GO"P-SPN$?5P!"KV^P,0QU[>L0)I +MFS8NTX:I8`?!LFV0&33?>M,1">'6+T(RGT;=6@B$XKLV:4:!1;!?(S@A'+:F +MB>$PCJ23"Y%ZT3B[$`L;3M+3XS8[V6Y&UC;QA)S-@+C`K.,02-GV`*"@36ZQ +MTCF8$R["E.'26V.AU8T>3:LFR9%`:M&:PM-CU(#YR0^^Y>(3!*Q%[93C1$AI +M1E,?)8"DG_(51M%X)E\+%$&VJ<N-/IW_E[G(2#WG#[_B0[O8(WQ!D7-&GG0R +MGGP>/JJ+APM5$980X\['.T8(N!X6)>""0KFLPKRB,LM50-]P$X_'\:P@,>3* +M'M+=Q$F?>AMOZ%4/B8^O*A")8$T?0")5YQ>O4_V)X1.H&S*C.9Y#;08(**I3 +M'0V+EBTM`DLFC)"?-)&P0WR>(#2HF7FL#'7MJ$K419!U1_ZR*2*GY&^APDEW +MV>;Y^+U0U1:>,*X>#I=O51@"W9K]`P2MSBM6SOK3P651-U1R8RR'VI&C*52G +M-Q("+5=,:%Z,^B(?B<'W1%QF@&6FF6N<R'2M:!+3M9=T0C[2)QH'Y&-A0DCV +M8I_OMKGM3%'SJ_/\:H=!)U<3`D6M;K^CPM3F$2Y*P]33^:(.C=00SA5EI`BF +MM&D,GB9+%`QJW5O<BW\KG^-:>&L?(`K=?$(%06V!%0.UK8Q#\8<@$3@2?PH/ +M0J*';7[WTN(_JM^<9U`]!#I_J@`H^C3[')61.G]P$>DGG$Z,;DB$9G!:M"-$ +ML*).7?"<F+=$$&O;XC'\6MT<?T%?WP#$-S,(!7RW/1;O74L95^$^(R)P$^X7 +M&H0TZ6-^2(\GBX]H?G6>->TPZ*QI0J!HT^UW5"S:/,+E8IAZ.B_4H9$:PIFA +MC!1!C3:-P5-CB8)!K7N+Q_!OY7-\!F_M`R2@FT^H"*@ML#*@MI5Q'/X0)`+G +MX4_A04CTN,U?CIW+Z'YWGD7*4.@LZH*@:*3N>U1:E'S"Q<4T"72:Z$,D-H43 +M11LQ@BE*2H-GRG+E@V2"Q9_X206.1^%S`2`7ZNQ"!4-O@Y4,O;6,6_&/+Q&X +M%O\*$42JQX?=[VS.I?S-?3Y50V"0J0R`HU*]SW&IJ?*'D)E>PAD$:8=$:(8@ +M1S-"##6JU(7/BUE+!+&V;0[$J]7-<A[D]0T!?3V#8,BWVZ,!W[84<AG.,R(& +M5^%\H4%(D]U:+,3U!^<)4W2>#I=K:Q19RKV-:D*1,[@@:!FFPZ`>!K8-'`/5 +MJ!`,*!(5_/*?I1J@*]9B#'Q9LQQ+0%FU`$:7DP4%=+TQELYU,QD/X.:RCT#W +MW2PH$#GVVYU-[8N?W&='.0`&.XKV.'I4>QSG?)D[!.GU7#,0T`P'WPJ!@7IT +M&!"420L?!//5!GPUVYR`1^N9Y0:(*QH"\&KJP`AO-D=#O&DHY`N<AD(,_L#I +M`H.29;/;YMO-X9BGF_LQTZ!OYP5Q>D/CP4</AB91OR^38M++-TY9;)/%H\TP +M!<P0.`X-,H*$4F\*HN#3NF5'9-"(U?&?0EP3),LAH'KUJP(C9<.V%%T;1I%S +M46%Q+1+G%58APTEY.+VJWRARGZ4/F_M#8GM#B'U[3[AI'"J7GJ:@!(J:^P:0 +M5^-\8&5V?%*Y-+2E2"@4EHZ6C*$I:9RR2%CI8KDRF3?J$D.C'M\USLD]L/B: +MJPDGPK88-#&V19-TES'Q-!KW&=-"P)'Z,3T=+I.>M-K*(R;7PY+@<!6*2-^F +M'T#QKO-,D>S^%$EPL!LZ*P"%>6TF2*2KTQX1W98O-!)G)GV@KZ21\7P2K$') +M6E,'>#'K6M(EK(LA[>!\)U=4SLSWPL61\+3/B\]1'7?;;+=)TO35^7'2?YG: +M>,1(XY`E>&D*3*2GN8]`.37.#T5<QR=:@HRVE`F&HU#3DD$20XU3&1%/72YE +M`59.>L@0:2GC+^?F)4K"S96&%W1;'+J\VR)*N]1861R5NXUUH8!)O[_DV?;. +M]@UY;1,_*-X.B(GL)@Z>T%T/IE6_S2U2Y(=SPD2B.EQZ:R3PE-%C^=8F.0Z8 +M+5M3>'J,V4)/^<$V?0($@2I5-^4H85*;D71(#2#HS[R%42S>RML"!9,M?=P? +M)Q[S:#;Q@VOM@)A4:^+@J=;U8%K#VMPB-6PX)TP4J<.EMT:B2!D]%D5MDN,` +MT;(UA:?'F"_RE!]L7R1`$*CL=%..DAVU&4EVU`""OLA;&,7BB[PM4"39)AZE +MZ#;RB6T2#TUTD:AT@]YOKN28I&>B#T+HP^:T)\&)>%^NDO"8\+1LA5'(,NV: +MO&2+D'-BTP4G3H0;KO6&#(&:X1D#[U$5EY?RN&#QY#MN'V"^JMS0,_Y5@Y,B +M8!F-0<&Z-P@5K').5<+>C$E!K$T#-P859DU6R$"K)B(RI*U4?50B@?R8OTR2 +M\V4R5$++75T<-,EK&_-DKPTSAU<+!7/1>;=0"AI'SH?]0YJ]F71R]68>,;,9 +MF`0OZUA$6K8]`6IHDVN*@@[F20)KRO!Y$2A(Z[)!`EJ3_(A@MDJ]T:@SZ=;\ +MY8Z,4Y,A#TK4VG+`2YK2E"YH2A!I?Q8"R*+R92$4,)B,Q4WR[2>:[5Q4-_.# +MB]K`F%148^&IJ/=D6A^U7"/UT3Q/3(SUA\^+@,18+QM8C&G)CP-BZ]4;C3IC +M?LQS[K#]F"!YH'*FEP-*SOI-27+6#R+HQX(!62Q^+)@"AI/Q_/B89GEQABW? +M9YMMDHS:LN'6GE#2,$PN*H<A"<0T]0L@H89YP"KIV%1RN6=.C4@@+`6-F4+# +MT#!-D1#1K0)E<6W4^(5$-KX-G(MM8$TUU0].6LT1:`IKCB7I%&,@9C0N,H;" +MIY+X]NWA\=<(CUEM[R6+ZZ'*LK@*RJ9QTS>TE-?SP1/S_J3*TK-+D5`H'D'; +MC#$96D]9E`QUHUR9S$/X3_^I)^U!9;E'E..FFCB"W,60D.0NVGQN-&R>1NI* +MPUX(5%(7TYKM3^/7IBU-O*1U-V!97+=QV<16>HA6_VYN>`;`,,>RB-72)1>- +M!UHU>TS6=I,8)6P=JV$^'1%6-A0^2AO:.0A)5'.EQ#B"KH61T'0MX'S^-A[X +M1NIUXUD@5+*_R*[V&6%ZJ^V])'H]5%F85T'9)&_ZAC8)]7SP'$)_4F4IVZ5( +M*!2/KVW&F'"MIRQ*KKI1KDSF(:RL_]23-K&RW".J<U--'&GN8DCH<A=M/M<: +M-D\C=:IA+P0RJ9'FU%]*SV%-90A-57H)H9_5ELI15`"B0@R-V)*N7Z<\RF'L +MJ.><$S>C@J2C*K"``(OJ[P(^-%B`QNI!@UT`5#(GR+.CB;_G"9(YSHXF,F<) +M$NKIID3B=%-_4F4IFL@=S2<"1_.)T-%\$O'943?*E<D\A!WUGWK2AE26>T1% +M3@1."B6B)X62!<Z.ALW32)UIV`N!3.JW*<J<%IO[2>ERH,*(+F+R"5WU#*_T +MY5PPA5Z?3V&,-NF1B<2$:)TM+D/+R8H3H.O7*8]R&#OJ.>?$S:@@Z:@*7)41 +M2X";$"+ZVP2;T8<&"]!8/6BP"X!*YF-Z'/U*CFES+[E<#526RF5,-I7KGJ%U +MO9H+GJ[WYE,6GVUZ9"+Q\-EDBXG/:K*BA*<#=<JC',)_^LXY:?\I23JB_-9E +MQ)'?-H2$_+;!YO.?X0(T4O\9[@*@DODQ2U]DVP>$!6U:>$GG=KBR>&["L@G= +M]0\M\^V\\)1^.+VR3%53)1:,1U8E<TRXMM,7)5U=*EXV#Q%F-0PB2EM6>282 +M=;NK+8YTJU$DU%N--Y^#C8.VD;K9.!8&E>39(\;5%EM[R>]RF++D+D*RJ5WU +M"VT$RGG@F0!]*F5YVJ1&)!"/HW6FF`PMIRE*>JY=H"RN(=RIWV23=J5R;".* +M;E4_',%M(DB(;1-K/@<:)C$C=9QA%CZ5Q.<SPF!>-_:2PL4@91%\C<@F<-DK +MM'87<\"3;FT694%9IT4B#@^359:8E"PF*$I$KEJ9')(A+*7/+),VE%(T(ZIJ +M63@<4:T#2&AJ'6H^+QD>(B/UD>$5/)6\E[<(#WG=V$ON%H.4I>XU(INZ9:_0 +M2EW,`4^IM5F4!62=%HDX/$!666("LIB@*/&X:F5R2(;PD#ZS3-I#2M&,**EE +MX7`DM0X@(:EUJ/D\9'B(C-1#AE?P>/*FV<,VW_P.^H(E97//V*L.5(J]2DP& +M?;6>(31;G0NJ:AOG4PJ7O?3(1*(B4\\6&9KJ9$4&36?JE$<YD,,,@W-R+E.> +M=&CAU<J()KV]$#SQ[06;PV^&#M#H?&?H"X!*YN++]G#[66SM)97+8<HBN0C) +M)G+5+[2DE_/`4W1]*F6YV:1&)!"/FG6FF-`LIRE*8JY=H"RN(0RGWV23MIMR +M;"-J;54_'*EM(D@H;1-K/J<9)C$C=9EA%CZ9Q!G&8&:>4C@3MY>9`($SDG9G +M;.G.YK.6F1`G,RXF,PE*9K':RC4KDT,RC*7TF&7BAE*(9E15S;BBFLEI:C:W +MEPP.D;'ZR.`*GDK>VS>;NW0'>]FFWL)+`K?#E85P$Y9-XJY_:`EOYX6GX\/I +ME66HFBJQ8#R:*IEC(K6=OBBIZE+QLGF(L*-A$%':F,HSD:C876UQ9%N-(J'= +M:KSY'&L<M(W4Q<:Q,*@DO]O>(EQML;67_"Z'*4ON(B2;VE6_T$:@G`>>"="G +M4I:G36I$`O$X6F>*R=!RFJ*DY]H%RN(:PIWZ339I5RK'-J+H5O7#$=PF@H38 +M-K'F<Z!A$C-2QQEFX9-)_'A(,1:SV-Q/$I<#%09Q$9-/XJIG>!4OYX(IX_I\ +M"F.S28],)"8XZVQQR5E.5IS@7+].>93#&$[/.2=N.05)1]7>JHQ8XMN$$%'? +M)MB,OC-8@,;J/8-=`%0R[Q\>\S<(`UIM[R69ZZ'*@KD*RB9STS>TN-?SP5/W +M_J3*4K1+D5`H'D?;C#%!6D]9E!QUHUR9S$/84?^I)VU(9;E'5.2FFCB2W,60 +MT.0NVGRN-&R>1NI,PUX(5%(?3NG_^NUO?XGPITT++UG=#E>6U4U8-JV[_J&% +MOYT7GO0/IU>6K6JJQ(+Q^*IDCDG8=OJB)*Q+Q<OF(<*[AD%$:?\JST2B='>U +MQ1%O-8J$?*OQYG.R<=`V4D<;Q\*@DCQYN46XVF)K+_E=#E.6W$5(-K6K?J&- +M0#D//!.@3Z4L3YO4B`3B<;3.%).AY31%2<^U"Y3%-80[]9MLTJY4CFU$T:WJ +MAR.X300)L6UBS>=`PR1FI(XSS,*GDO@AS_:89_*K[;UD<3U461970=DT;OJ& +MEO)Z/GABWI]467IV*1(*Q2-HFS$F0^LIBY*A;I0KDWD(_^D_]:0]J"SWB'+< +M5!-'D+L8$I+<19O/C8;-TTA=:=@+@4KJ#/7BT<S7M_5E\J\>S23>UI?17O&8 +M\=_QF,WX^M%,ZN5Z&?OM>IG(Z_6R:%]!NG:!LKB&\)]^DTW:>\JQC2BW&?O5 +MC)G@NQFSV=]&&B8Q(W6:818^G<2O40[SM:\<?BWO,%]+4/@U3<!?\P7\]8P. +M\[44+U^S>?E:A)>OHW68ZQ8HBVLHA^DSV>0=IA3;R$+[FBVTKP6%]O7L#C-$ +M8D;K,$,L?"J)<]0YS-S7(_U<_AQF+G&<G]-.$>7\4T3YC.<P<ZDC\IQ]1)Z+ +M')'GT9[#7+M`65Q#.$R_R2;M,.781A3:G'TJ)Q<\E9//?@XS3&)&ZC##+'PJ +MB2\HAWGQE<,7>8=YD:#PA2;@%[Z`7V9TF!<I7E[8O+R(\/(2K<-<NT!97$,X +M3+_))NTPY=A&%-H+6V@O@D)[F=UAADG,2!UFF(5/)?';PR/"819;>\GA<IBR +M%"Y"LBE<]0LMX.4\\`1<GTI97C:I$0G$XV6=*28ORVF*DI9K%RB+:PB'Z3?9 +MI!VF'-N(0EO5#T=HFP@20MO$FL]AADG,2!UFF(4/(?$ISP['%Q9#6?_H/&6; +M0="16D=`$;3=ZZC6-CF$2^L@ZW1P*<.BM(-CJ1LE@D)-`H-'SNR5@EGI%HOE +MVUKG&"C.:@>H1#N14%%0&F`U0&DJXW7\0$8$/L6/@H.39W-ZO/Y/?C_J-=J- +M/.%0-R@NC=I(!"HIO0`H3)=CK-(89H<+&FW8G/98\*A90`.H2W@D&%JAPBAD +M&?4V_K*%[W5DZ`*6(J4`<)*D-:1)DQ9"TA/YCJIH/)/O!0LAWSD_)!8G5?[D +M/..J`="Y5K9'T:S>XZA^5;F#JU8OUW3$M,/!MX+CI!D=`B)5TH('QXRU`5_- +M%O?BTWKF.!7JB@9`OIXZ*-K;S;%`;QO*^`ZWH1"!GW"[P"!D^?&0Y>>MS2HT +MOSI/EW88=+PT(5"$Z?8[*@UM'N'J,$P]G1/JT$@-X;101HH`1IO&X(FQ1,&@ +MUKW%5/BW\CG6@K?V`?SOYA,J`6H+K`JH;66<AC\$B<!U^%-X$!*]S@ZY[:L& +MU6_.,Z@>`IT_50`4?9I]CLI(G3^XB/033B=&-R1",S@MVA$B6%&G+GA.S%LB +MB+5M\1A^K6Z.OZ"O;P#BFQF$`K[;'HOWKJ6,JW"?$1&X"?<+#4R:S>YP>K79 +MWME.9_0V\H,\RJ"8`.HBX4FD]F):3Y0<(X7%-#M,P.C#YK1'(D?+`I8]2L+C +M0-`:%48ARYB9\9@M;'LC1!>H#JD%@!(DO2%)F?00@E[(>U3%XI>\+U@D^1[3 +MT^$R[:JJS7QB7STP$?95L:CT:WH"U;XZUR3UZ\^3"+:ZX?,BD-#59H,&KSKY +M,<%KC7JC46?:<7G+'2'7)4(>G)`UY4"0LJXI0\RZ(.+^*P"0Q>7#`BA@)!E/ +M^WQSRK?'W3;;;9(T?76VO?1GHI%/S#0.6H2?ILA4FII["559XQR1-'=\MD5` +M:4N;9#P21"U9I"'5.*$QX=7MBI8@Y[3##)*=0NYS=GKBA-U<<`29MP5BB+XM +MI+B'C1C-<7G?B!<,G/SIX_ZXN=^-6N1F&T^HW@Z)B_`F$('871\`9J#-+U;[ +MAQ/#):0Z9$9S+/^4#*!QUZ8Z$K8M75H$EHR:1E]IPK>$$CP!ZU<W\SBY4MO1 +MU$F-(.G>?&93-,[+YT+%DNZ0C-Z=KVSE%>O*8<FPK@A%IEW5#[#(E7FFR9P^ +M13*<:H;."D!C59T)(JW*M$=%JZ4+C<09@*?RDS12OHK/&J1D575`$:VF)4>V +MFACR#LMO<D7FM/PN7`()C]L'H.LJM_2-A]7PQ(A8AN-0L>X/1ARKO),%LC=M +M8DQK4\$.0F9;DQDZWZKIB(UPJQ4AF4\PM^8QH01=FQ"C\")8UPA1"-O63#%L +MX\SBY`*B7GS.+J#"1I+T8?^09F^F?5Z]G4\,;88FPL\Z&)6>;5^@TMKDFR2L +M@\D2H9R2`F8($N&ZC-#XUDQ!3&Q;J>R(#)KV<AY32,C'"7$()W5M51"$3FG+ +MD#DEBKA["X1K<;FV0`H93LKM;E>8O7R?C9HU93-/**D.C(M()1:!D%I/`(JI +MYAHKF,9YXN*L-WQ>!"S,]&R@6:8F/Q*0K59O-.J,VC._N<,W9W+D`2N:5@XX +M0>LUI>E9+XBD+PL%9-%XLE`*F$+&S>UO?[,_WJ6[\<NEQ@;>L5(=K!PSE:@L +M>FJ]0RFJ.B=T;37.K!P,>VF2BD4'I)XU!BK5B8L.F4Y5+9>`0)<8"@,EG>,< +M%"2(L5945%GN!>$*="_</%XS#KQ&Z$GC6!`T<K_93-[H9]C<0V8W`Y7D=1V3 +M2>NV9TCM;^:"H_R#^93$J9(>F4@<E';98H&TF:P((>I$G?(H!W:G_G-.UIG* +MDHXDPFT9T258"<$78"787'XT9(!&Z4-#7@`T,K\]//X:[#[+C3UD<C5(21Z7 +M$9DTKGN%5/-J#CA:WIM%26"V:9&(PX%EDR46*JL)BA"3*U<FAV1@A^DWRV3= +MI1S-2,):%PY=5ML`?%%M0\WE*4-$9)1>,L2")Y&WF,=L?SI!;62[O7_T[88J +MB-\V*(_`2M]PPMW-!T.[#9,J2$TM14*A&.Q4,\;!9S=E\?'3F7)E,@]J.(.@ +MGJCM%.<>18N5:B++L1:#K<A:M)E<:/`\C=&1!K\02*1^D5T=+M2:5AO[1^AZ +MD()PKB+RR-ST"J?O]1PPQ+T_BX+@[-(B$8>!S#9+'%[6$Q0?*M>N3`[)H(;3 +M<Y:)6DU!FE&TM2D<LK!V`=BJVH6:R5L&B<@8_620!4\C+\9">DI=<0,I0%R2 +M2+,U>C[S*`1&+A<EL!BK<5RS)!GL`IM&G^DE:QFE^$723ZY\RJGGW&XQ-"9& +MZ11#*W02:1/,F<;$TZ/S1/Q,8R)P;)Z0SN<D[/,Y_5D4!&,B=!B=<`^C$XG# +MZ"36,XUK5R:'9%#3Z#G+1&VC(,TH>IIP3[PD<B=>DKG/-`:)R!C]8Y`%3R/O +MVQ1N(8MM/:1N.41)Y!8!F<2M^H04Z3+_'(W6)U"2C$U*!,)PN%AGB(7%<FHB +M9.*:)<E@%]@T^DPO6<LHQ2^2?E850Y?/ICU?/9M(<[G%T)@8I5,,K=!)I#VF +M1_`K@\IM_>-L-41!RI8!>92M^X23Y"K_#$GN3:`@$=N4"(1A$+')$(>(U=3$ +MQ\-52Y+!+JA+])I>HBY1C%\4\:PKABR>;7NV>+:19G*)P3$Q1I<87*&32/N8 +MI2^R[0/4*#:;^T?;=J""N&UB\HC;]0RGT.U<,$1Z.)^"F%33(Q.)`4LE6QQ> +MMI,5'S#=J%,>Y:"6,@#.B1I+8=)15+<K([+PJB'8VJL&F\EG!@W0&#UGT`N` +M1.;S&?=9GG9[_\C<#540S&U0'IF5ON'$O9L/AKH;)E60HEJ*A$(Q.*IFC`/2 +M;LKBXZ@SY<ID'M2.!D$]44,JSCV*(BO51)9D+09;D[5H,[G2X'D:HS,-?B&0 +M2'UY"_6EURW]8W,Q/$$F7\/Q:%SV!R?H1=X94JY-FR`CZU2P@S"X6&6&0\1B +M.N(CX4I%2.83U$-Z2RA1WRC"*(I$EC5"%L>Z-5L6ZS@S.<-@J!>C`PRFL.$D +M/>WSS7V:/6SS49NG;.8)0=6!<>&IQ"*04^L)0%757&,EU3A/7+SUAL^+@`6; +MG@TTU=3D1P*TU>J-1IU1\^8W=_BV38X\8%W3R@$G:KVF-$7K!9'T::&`+!IO +M%DH!4\BX^=W4:W+ZVWI'R'J(<I"L`K)(V?0))9QU_NGJV9]`.=)U*1$(0V=> +MFR$&^.JIB8Y]ZY8D@UU`:^<WO21-GAR_"&K95`Q5,KOV7-WL(LWC_L)C8H2. +M,+Q")Y%VFT$]XG5+_QA;#$^0K]=P/+J6_<$)<9%WA@QKTR;(P#H5["`,_E69 +MX="OF([XR+=2$9+Y!/6!WA)*U`.*,(HBBV6-D$6Q;LV6Q#K.3,XO&.K%Z/B" +M*6P226_?;([;A_''1`R;^T?4=J""4&UB\LC:]0RGONU<,"1X.)^"6%33(Q.) +M`4@E6QQ*MI,5'RC=J%,>Y:"F,0#.B=I'8=)1]+8K([+HJB'8RJL&F\E7!@W0 +M&+UFT`N`1.:[QT,*-9_EMOX1N1JB((S+@#P2UWW""7F5?X:*]R90D)1M2@3" +M,!C99(@#R&IJXF/CJB7)8!?44GI-+U$S*<8OBHK6%4.6T+8]6S_;2#.YQ^"8 +M&*-C#*[0R:3='/>O[S!6L6K@)W'KP0I#MXK*)V_3.[Q6UW/"%.S^S`I#LTN3 +M5"PF/MNL<1E:3UR<&'6E:KD$Q!C.`!@H;CV%*4C5YJ:H6`+=!1%1Z2[<C)XT +M>+S&ZE.#7Q`D<A].Z?_Z[6]_"76NS>;^,;L=J""OFY@\6G<]PVE_.Q<,Y1_. +MIR!.U?3(1&*@5,D6!Z3M9,4'43?JE$<YJ#L-@'.BSE28=!01[LJ(+,%J"+8` +MJ\%F\J-!`S1&'QKT`B"1^2'/]N#[.ZN-_6-R/4A!'E<1>31N>H53\WH.&%K> +MGT5!8'9ID8C#@&6;)0XJZPF*#Y-K5R:'9%"'Z3G+1-VE(,THPMH4#EE6NP!L +M4>U"S>0I@T1DC%XRR((GD?=Q>X$ZR&)3_YA;#E"0MT4\'FVK'N'TN<P]0YWU +MN1-$8I,.?A0&#NOL<&!83DI\(%RO%NFT@KI$CWDEZA"%B$41RZI4R%+9-&<+ +M91-H)E\8%`1C](-!%3B)K*>7\#<#E=OZ1]9JB()@+0/RR%KW"2?`5?X9"MR; +M0$$2MBD1",-@89,A#@RKJ8F/A:N6)(-=4%OH-;U$C:$8ORC*65<,63K;]FSM +M;"/-Y`Z#8V*,#C&X0B>1]GS*X3:QVM@_TM:#%`1M%9%'VJ97.%VNYX`AS/U9 +M%`1CEQ:).`PTMEGBL+&>H/C0N'9E<D@&-8V>LTS4-@K2C**G3>&0!;4+P%;4 +M+M1,WC%(1,;H'X,L>!)Y?_P=PD-6&_O'W7J0@M2M(O*HV_0*I]3U'#"4NC^+ +M@H#LTB(1AP'(-DL<0-83%!\>UZY,#LF@'M)SEHEZ2$&:422U*1RRI'8!V)+: +MA9K)0P:)R!@]9)`%3R+OB^,982+KK?TC;S-,0?#6(7GD;?N%D^MF'AAZ/9A* +M04XJJ1$)Q"!EERD.*IMIBH^4#A0HBVM02^D]V41-I2C;*"K;U@]99I4(;)U5 +M8LWD+(,E9HSN,MC")Y'X`K>7%R\)?!$VEA<V>2\$Q;XPY?HREYF\B'#QPH/B +MA4_$2YP&<KU:I-,*:AH]YI6H710B%D4O+SRQO$@IY65>?Q@4!&/TA$$5.(FL +MY4?#85PMO\WM'5?+`0I2M8C'HVK5(YSV5M]%IVNO/G>""&S2P8_"0&"='0X" +MRTF)#X#KU2*=5E`?Z#&O1'V@$+$H,EF5"EDFF^9LF6P"S>0#@X)@C#XPJ`+' +MD35]S`_I\31I`IOM/")J.S0)F#;!B"3M^@(4VS;?%*4=3I8$[=04,$-0.*=D +MA`2Y=@HBXMM:94=DT*2U\YE",J9.BD,HM>NJ`B]U:ENZSJE1I%U<*%R+RKF% +M4LACI+P_)/D^*SS>J\UC>CKT7V4X_-U9+AJ&@J?A,`B(@J9]&^70D,]I&1R; +M!#R=S$,D-IVFD7'$``H94AHL>Y8O'R03>J[);RI07)(<%T;$Q#2[4R)B;@,5 +M#W-KGOOQER\!NQM_"Q%RG+<_YMF;S5WZ^&9S^_+^8#G3U-_*6699AT4_NNN' +M0AW;#?LQ>J@_R#/\0-\^1?2C,-/060'@1V"&3"".OP9I#Y9.+A0:B3.6LTG^ +MDX9S)DF6-8"#[V$=0`^]32VQ!]ZF&#+GC\(A5\#.*KS"A9`PVV]WF]WA]&KS +M^G#<I:]M5_>&VSG/0L/0Z"P<!D/1T-2744DTY!LNBF.31:>8.07,$'"2&3." +M8)EA"H)GV?IE1V20Q8^%02&.)Y/G$$#>3%4!%3AS6ZS$F:/(N+/PN!:!2PNO +MD$'W08QZ-&^8*.#'2/0#BB!!^B1]%IE">/;0B!./?UJB8%#KWG;7DW<KGW6' +M$VOM0VX"08L#1Q+D'8T_!(G`J?A3>/`[,0$GC`P;ND\GP^"X-V+2C]6,O0'< +MFTL]?!^=,>[-D[SC*T,,[.V3C",LTT2$CRT7JH]*I-&;P_UG$O_V<%DJ@>^K +M)1YZ6QK3[JR=Z2Q2F)B+P9\%6=#0^T+-)LZTA;.D-`Z'=V<HBHSF_4_>]HO0 +MR/'IX-W9B8:5J3'N[DX<GHSI#99*:Q43FA<C=Y+[20SNW>1\9@!OY(7+C:T5 +MY69>.<?D/WT"=D7^%^8[95;.^2$Y#4;7_508'F5#Y8=UJ07LO(8JI8U]X2BM +M.T)!]];ICR5G%MF9RK`&#\HPL&TLJ+".JB$$,%%^8V&M:H"NV,)R>+QF>P9C +M]E7;I[9MLHRPMF\\RFA[,ZMG"	^^X'O"TH]:BE^'G0_8?MX=@[MU%N5_[= +MF>.3D:[;CDG*)O;:+QL;CT3&]F4\S%3R-7UP:4JN[0@!.@1DD^FC`6U$AF.` +MD13YO<Y7*0/@&NV=3_!KE=K/'<RQ3D<.Q]19FCH(T[>%'GKIK2!G`GQ<Y[XK +MNI>%-$F*\N;9]'%_W#SL']+LC4G9!]NXS8_AD(@D&02"4\70![L$#/,+E(.1 +MB2&2PSAD1G,@44P9@-)EF.JP.;-::1%88G(@WM.$[$Q$>3(E-(:9!XF.L1U* +M@(P1!%Q-$&P*W04%4:B3I"NSM[U+-O?9?G][VE7OY?G5WN2>K-NZS3W[$(GT +MLP:$4W"D3W8)M.<?*(6`"202;30E`F&`A!O+$)1T]JD)FW?.E22#72:W%AR] +MR.YM5GY-B>1(Q8#$<K0]2C1'(PFXO"B8&+H+C*+0\:0]WI]^`[*(Y8:>$;8: +MG!1<RV@,LM:]06APE7.J`/=F3`I^;1JX,:C8:[)"9EXU$9'A;J7JHQ()9/S\ +M99*<Y9.A$EH#Z^*@"6#;F*=^;9@Y/%XHF(O.UX52T'!R3GHXGS@IX]FH5(2K +M)$T=A3T9!U(D.)&A%)7G6JB*L(08]53^,8+OH7B4`$L,25J8DC*+-_(--]%X +M']\*$DZNQVW_&V=ZV.)W3ZA5#H6+K"((@5C5O@&"5.83JT?Z)'`ITPR1V!3+ +MF'K$:,24*8V$+TN4#Y()HV;&-RKPK0R'"V#=J&87)QM-&YIJ-*TE78Q/?(G& +MP?A4B`A2`>[!\NSN!;%[KACW*J!N:"'?R")_3Q7SO@'J_0*<^P1BNV=JZ=(B +ML&3<^7A*$P$'),`3N``1;P'AW_HQU[U-/K,I'I?D<:$"25?_9?MXV-SOM_DY +M&W%/AFU]X)YIB"SZ&0)B*6CLTY0$FO*/DL+1"601S9(2@3`HPIDSA".=:6IB +MX)U#)<E@E]VM!40OIGN;B5\PD316#$(L+>T)HFF)).;R`F=B'"XP\$+'D?8N +MV6^SS3[+TFS2):K;>L19;8@2E%4#$BFK]PDHR5K^*9)LGD`)(O93(A"&0L1> +MADA$U*8F(AZZ4)(,=DVZQ!#H)>,2I?F%$D^]8O#BV6]/%\]^)&F7&"H3HW*) +MH18ZDK0/N^1PG#Z/V&SG$U^;H8F0M0Y&I6K;%ZC\-ODF2>]@LD2HIZ2`&8)$ +MNRXC--(U4Q`3XU8J.R*#IIV>QQ02<GA"',()7EL5!+%3VC*$3HDB[N8"X5I< +M[BV00D:2,GOSF*?39JW:S"=*U@,30605BTK(IB=0Q:QS31+,_CR)X*P;/B\" +M"69M-F@LJY,?$\C6J#<:=:;MF;?<$3)G(N3!*5I3#@1!ZYHR]*P+(N[+`@!9 +M7)XL@`+&D?'%/M]M\^FS9\UV'I&Q'9H$&)M@1#)V?0&*9)MOBDH.)TN"9FH* +MF"$H/%,R0@):.P41\6RMLB,R:-*>^4PA&8,FQ2&4PG55@9<XM2U=X]0HTBXM +M%*Y%Y=1"*60<*1^V^=W+3?KZN)^^(T[=UB->:D.4(*8:D$A-O4]`*=7R3Y%3 +M\P1*$*^?$H$P%/+U,D2BGS8U$?'/A9)DL&O2Z85`+QG')\TOE&#J%8,7S7Y[ +MNG#V(TF[P%"9&)4K#+70*:1]W.8O@2:QW-0[RE8#E$-L&8]%V+I'*#6N<D\7 +MX][<R:&P30<_"AV$3788'*PF)3H(KEB+=%H!;:'/O)(TA5+$(BAE72I4H6R; +M<W6R#32/'PP+@A%ZP;`*G$+6_/`P?7E7V=0[KE8#E*-J&8]%U;I'*.VM<D_7 +MWM[<R2&P30<_"AV!3788"*PF)3H`KEB+=%H!?:#/O)+T@5+$(LAD72I4F6R; +M<V6R#32/#PP+@A'ZP+`*'$?6PD*6029M8+>E1U15AB>!U"X<D:AJ?X"RJ^2= +MHKJF:9-@GYX*=A`*^;3,D,"G3$=$U%NW",E\FC1^OA-*QO9),@JEB6J-X"51 +M;TU71#V.M.,+C7I1N;W0"AM'TFR_W6WNDO1T_?'UX6[ZO-^@@4=4'0Y6`JV# +MJ$3"&GH'U.'AG%#D>&1F)2!I3)-4+`HR35DCD7,X<1'AT\&JY1)PTE*&Q4`9 +M@SD?!5&J;"@JO#@;@]`UVAA.VH/&A->H_&E,"X)'[DWZN#]N[G=H#]LV])CC +MW>#GH'D;78CJ2F^);J&;,PG78*B`.:"LI5$ZI@2DU:R*P+J;Z(B1[7"U2Q$7 +M[9G#8NX\'GH^ZK(LA%*,?"NA!9.S%%K8N;UVS%B/VHO'O*!$E..0[(];P-VF +M$\W]UY`V$3/J2+,/637I>L[S-NU<"CJ<87W,B'\UO?-$%I0")=N2@M`6P\^B +MX,>ZD*4X]2@@0([/>D0P,\DES$Q7MF*61@TI;FS4X`L=+_PL&%K-_2P9/R]` +M\AW+9="'<Y(?'I/]9K?-MYNJ3$^P8PMS4]_TR)(`,24RQ^>HD*W'&,]DF3NR +M7YJJ!3%)L*=3/BI9"JS9I<N`9=)C$P"?:E^.QK!CA*!Y+'ALL!B1\9;$5II$ +M.V(/Q[0B]L"S'`?\#/U>7?V,_:@7&$%9COM+OGEY_:]]MMD_/.9O8!Y_V,PW +M/3$,7$Q)AK$Y*F+J*<;7&.:*[&G&YET,Z^;TR48DX]R833K*#9,;&\1=KV\9 +MJL*\>I!<%?3HLY,5;QU,Y4>T#>903,M@#CJ+'X\<W/'Y[\@7$%,9LNUKO-LN +M&OFL">6@9]&#(K*4&E2]I+J0<HY$/(@^V[.`NDF;9#P12-=9E$%T.:$QX]FM +MBI8@)]Y1!\'.F=RT.#UY1J`J.`$;T`02-`%-R-D]=$1HCML[1[1@".0O;FKY +M-<PI5YOZQOAZ@&)<K^)Q:-[T".,7ZMR374)_[L20VJ6#'X6,SS8[=&C6DQ(; +M*->L13JM8.[4:UX).E$Q8N%%M"D5HG1VS9F"V06:Q5<&!L'X_&)@!4X@ZVF? +M%_<VYU='F3[FA_0(\X3#9K[QUC!P,?(.8W,H;.HI1K<-<T76\+%Y%\.J.7VR +M$<FX-6:3CE[#Y,8&8=?K6X:J,.\:)%<%/>WL9,5;`5/Y$6V!.133(IB#SN*' +M(P=W?/XY\@5$588T>]CF>+^M-?-2%_2!RZJ"%INM"KV>HOV(/E<\/V*9=UEL +M#](G&Y&'[7XVF=C6)S=*:#M<WS)41?CMT+@J[;?G)"O1+O3*CV,7!J$D[,(@ +MZ'Q^.UYP1^JWXUU`1&7`&FV/E6`6:RU$?K+9$'$9\]IG0?Q*<%<*N#%;9$?* +ME<D\N`T.@'K"QE>8>S2EEI!H66U>PM4&SM,XG6O@"X%%:N![X-0&_I):\IUO +M:E094F/?<:7-B8#HS_(NMWZ:I&()8)7YXAYMXN+%J@M5RR4@UJQZSL!9[*H@ +M!3DZS7C14S^(F%+/^-:T2/`:LV\->D%0R'U^?$RS'.A;ZXV]XW4S2#E2UQ%9 +ME&Y[A5+\9@[H:C^813F`*FF1B$,'9Y<E!C2;"8H.EZM7)H=D0/_I.\LD?:<D +MS0CRVA8.55J5`%Q954+-XS'#1&2$GC+,@L>1MW"A^RQ+LTD#V6WI$7&5X4G` +MM@M')*W:'Z`T*WFGZ+)IVB18J*>"'81"02TS)`0JTQ$1_=8M0C*?)FVA[X22 +M,822C$(IHUHC>%G46],U48\C[0!#HUY4KB^TPD:2-,\.QQ?3-J_:S">"U@,3 +M@6<5BTK.IB=05:US39+4_CR)X*T;/B\""6QM-FA4JY,?$]#6J#<:=:;-F[?< +M$;)M(N3!Z5I3#@11ZYHR%*T+(N[3`@!97-XL@`*FD'%SEQY_W&<GR),QPQ;> +MT5(;KAPVU;`L@NK]0\FJ-B]TA35/KQP3^ZD2"T8G92]S#&AJTQ<=/5TK7C8/ +M@:8Q'")*6LEYF$C09[VVJ%+=C\)5[7Z\>1QH/+2-T*W&LS!P)'^='?*]Z:54 +M$S2WM?.(Z=:A2W#=%IQ(=WM?@=;!.E\4`S$]^1)4'DNA<$@*H4<R2N*T=8HC +M8K4O92[$V$G/'#)E9?SS4IQ%609[%>*-PU@LNGT8BRKMKG_F>(1/L/^\D)AN +M'/7"4UL[/W5"_I6GMN!\E:"]%-(Z7TR;,N-K3\=2*!R227&1%^A9ISA.ACM= +MYD*,Q;CQX"@K[L9GY2S51+!?X3@62\1$S/X6U)\Y'K<;CWHA494";<-]5H9Y +MC+>4$M`]B(SYF-E<2])8!,-B_(W:0#M3M5P"(DQR"`R4ML72%"3JMXAP"ROV +M(IXW?+Q&ZFO#7Q`\<D^_+'78PF-R"[TN=1A6B-R(5T\:YD7""TB_,M6<*K%@ +M$I2EO];/,'T14]:-XF7S$&UE?2?B/&96DHDL]::]+M(<14Z_YWF#:FRTC=K5 +MAKXP8"2_W>XV]SNKC:U_]H#0S4`X,*YC(,G;[GE"O9M<8J1ZD'\.YI3AT5IB +M`-:-%D6K)ID1@&F1NL%1P&K>_.,`SY;Q2`#2E79:X2*B-,$KAM)8RC?Y!)0H +MO(Y/!0@C4S$!VVO;MX?'7UM=BK:1!XS2!\7AE!8)2:M>+R942,\Q1HLLL\,! +MSV#8G/88"/6S@$*1GO`(<+12A5'(8G4^?K.%YX+DZ`(2I%X!P&5IT!`O3H,0 +M4AXI!%1%X9U"*%@4^>X>#^F4I2JW\8=ZU9`$D%<&HA&O[@-,[*K\$K2N-S$" +MA&J'S&A.X%.3`0J>JE3'PZ9%2XO`DBD3Y25-1"P4FR<8/:IG'BU';3NR&K41 +MA-V3MVR*R3EY6Z@HTKW(M_8OQ:C;^,.Y:D@"E"L#T2A7]P$F;55^"=+6FQ@! +M,K5#9C0GD*G)`(5,5:KCX=*BI45@R91K\I(F(JZ)S1.,&-4SCQ:CMAU9C-H( +MPJ[)6S;%Y)J\+50<Z=X>'B==4[&-1YPKAR1!N2(0D7)5'X#25N:7(FWZQ$B0 +MJ1DRHSF%3'4&2&0J4QT1EY8L+0)+)EV3CS21<4U<GJ#$J)IYO!@U[>ABU$20 +M=DV^LBDJU^1KH:)(EP!<4^(7YQ(IUY30*9=@I"VA2ELB[IH2'ID2(ID2!IF2 +MR%S3HJ5%8,F4:_*2)B*NB<T3C!@E1#%*V&*4S.2:O&533*[)VT)%DNYA.^V: +MKMOXQ+EB2"*4NP:B4J[L`U3:BOR2I$V;&!$RU4-F-">1J<H`C4Q%JF/BTH*E +M16#)M&ORD"9"KHG)$YP8E3-/$*.Z'4.,Z@CBKLE3-L7EFCPM5"3I4L"YIM2O +MH\-4ZEQ32C\V3#$G!%+J"8%4_%Q3RCN>2XG'<RGC>"Z-[%S3@J5%8,FT:_*0 +M)D*NB<D3G!BEQ$/XE'T(G\YTKLE3-L7EFCPM5!3I'K9W4Z:IV,0?RI4#$D!< +M$8=&N*H',%4K<TL0-7U.!)#4#)?>F@"D>O04'I5)C@=&R]44GAY3-LE#?HB8 +M)"9!,,I333E:>)IF9-UI`@C[(R]A%),W\K)`461[W%XVRN^_ODRYI&$#?YAG +M&*P`_X91:30T]0ZFA(8Y(>CBV,P*P,Z<)JE8!!`:LT;!HF'BXD&DBU7+)>"4 +MTPN,@2(N<$8*8@385%1H.38'(8NS.9RPEXP*KS%YT*@6!(K<IS399H?3)M]F +MF^U=,N5<^YO[P^S!0`5XW8])H_6P9S#M'\P%0?GM\RF`4U-Z9"(14&K(%@6D +M@\F*!Z)NU2F/<E/N-"#.B3C3F4B'$>%A&:$EV!2"+,"F8,)^-`J`QN1#HU@` +M)#(7=O;TN,U.>Z@%55KX1V=UN()X5L+R"*WU#R?SZKPPE-XXO8),[:5*+!B# +MK'KF.'!5IR\^NCI6O&P>0LUJ,$04M:RS,)&BVUIMD:6[%X6MWKUX,SG8:&@; +MHYN-9F&@2%[8XI?;;)<<CJ^F/*VVK3_LUH<HP&PM((W6O3[!Y%_//T'X+1,H +M0-!!2@3"$*C9SQ"%E_K4Q,-))TJ2P:XI_QD$O40\ISB_,'+:JQBTD`[:DR5T +M$$G850;+Q)C<8["%CB+M^;S;WZ6[R;.>[7;^\+4;F@!9VV`TJBI]@<EOEV^" +M]!HF2X!Z6@J8(0BT4S-"(5TW!?$P;K6R(S)HRNEY32$1AR?&(8S@*56!%CNM +M+5GHM"C";BX8KL7DWH(I9!0I+V^G?-IU"W_86`Q'@(G7,#0:EON'"6.15X(D +M:M,AP*IZJ.3&!#Y5(Z>0J4AO/$1:J)C0O)CR5-X10\1'L9B!D9QRKM%B4[<B +MRTS=7M@I>4>?F!R1=X6)(AG@XPQ^O4U=ZM,,]#>I8]Z>3WUYOOAG&7AO/B>^ +M^)SQWO/(/LFP7$WAZ3%EA#SDAX@58A($HSG$%]RSWV\_TW<8O(113)[(RP*% +MD6W_\)B_V;S.#KG]VIVZC0=DTX;$`9L:"$DVO0\30J;E%Z-DYHGA$*D_9$9S +M#)-Z&4!!24MU!$Q:H[0(++':))]IPC-*4CP!*9$^\W`IZK?#:U$_@I1;\IU- +M43@FWPL52+ICGKVQ^Z7R5Q_85@V#Q;0R!)9F]7ZGQ*O*(TJV>JEG\:8=&JDA +MBC'-2'%TJ=(8`U5F+QC4NK=[&\]6/M//,-8^3!KJ^42(0MN"(`=M6S''X@E! +MXG`FGA0>@D2;4YX]C-UUK6_E"Y>Z8;'IU(:B4$KI!T1XNCRC!<@P16SN:$-G +M!4!S2,T$GD==VF.ATBJ%1N+,N//QF#0"3DB(-7"!4NH`*51:2Z)@:3%$'5,` +MY(K'4050N$`27O)MGF>;^VR_OSWM[)ZKMYT/+.P/C<7"7C`L#0=]F9+$?KY1 +MHFB=+!;%#"E@AD"1;)@1',OZ4Q`#RU8N.R*#['XL``HQ/9DPAV#R-J@*A,`9 +MVA(DSA!%S)T%QK4X7%I@A0PCY?TAR??9YBX]'W.K5=,V\H"0^J`X<-0B(<G8 +MZ\6$3NHYQHBD978X`!L,F],>@ZY^%E#<TA,>`;)6JC`*6:P&S&^V\*R7'%U` +M6M4K`+A0#1KB56H00LIKA8"J*/Q5"`4+)-_YK?W%`>6//G"N'`2+;D4$+-6J +MO4XI69E#E(+I66<!IQD6I1T*,/4H<6`I$Q@#3N:M%,Q*MWL;K]8ZT\N05SM, +M"JJ)1$A`TX"`_J:IF$?Q`!EQ>!`/"@Y&GA?'<_$VRJM+V1^W#_O-_GB7[@[' +M%U;?86W@`9_L@^40RQH52;&1WDVHDWU.,(H%F%D.O$;3)!4+`[FQK*'`9Y^X +M"%#H<-5R"6CU8V$RD.?;YJ<@2&Y'B@HNP:-!\+(\&D[*&\:(URB\9HP+`D;N +MXO7IFVQ_2I,?]YG5L.I;>4#HWK`X4-9#(4G<[\>$G/?RC-%PVQ1Q>#@<.BL` +MAGR#3*!PUTM[!(1;K]!(G+':0M])PS.`DJP!*5N_#N!R-FR)U[!A#"DG%PJY +MHG!GH10NC(3IX_ZXN=\>DG-F?PA2V\@#"NJ#XB!0BX0D8*\7$QJHYQ@C@9;9 +MX0!K,&Q.>PRN^EE`T4I/>`2H6JG"*&2Q6BR_V<(S6')T`:E4KP#@(C5HB->H +M00@I;Q4"JJ+P52$4+(9\]N<;F]^]H1WS><8F"(EP@`?)VGSB-4WJ>45UB,2F +M>/;@G]]I4QH-;^8O'R03)HR07U20L#]T+B`T!/?XE=J&JARRSPWZQI>('(T_ +MA8@AU2&9.AU4;.$-J\KA\%E5A"'1JMH_2(C*O.*E2)\./FN:H9(;XWE3CYQ` +MG#*]T1!GJ6)"\V+"V_A'#`E_PV,&0EJJN<:*2].**B]->UFGXQ]](G(\_A4F +MDF3%+4S3[J?<RB>>5<,2(5H9BDJUNA]0`:OR3!*QWA2)<*D=.BL`B4]-)FB, +MJM(>$Z46+S029Z9=DZ>D$7)/`JS!B55=!P3!:ELR1*N-(>ZH/"=77`[+\\*% +MD?!Q>T$\J&C>V@,N6H;)H:,Y))*2MGY-"*9E'C#".365'-[94R,2",,_:Z90 +M'+1,4P0T=*]`65RS.KW0R,9S?G.R#22HMOJ!"ZL]`EY@[;&D'&(LQ(S"0<92 +M^#`29_OM;K/;YMM-LLU>V,_J];?S@+V#H7&8VP^&I.VP+Q,2/<@W1ISMD\6A +MH"D%S!`8\ADR@F+>8`HB8-W:94=DD-4'AD`AGO>3YA!(]H95`1<\4UN\U)FB +M2+F[T+@6A8L+K9`QI#R<7DWXM&(+;]A8#H?/Q"(,B8;5_D'"6.85+XGZ=/!9 +MU0R5W!C/IWKD!#*5Z8V&2$L5$YH7$Y[*/V)(^"@>,Q"24\TU5FR:5E29:=K+ +M.B7_Z!.1(_*O,)$DN_[_LFL1I-F;39YM?]QGIVURFK9#YF8^$<\R<!$(FF-3 +MR6CK*505+7-%DLJI>1?!H3U]LA%)X+1FDT93R^3&!%@?ZEN&JM.F,5BN"MG+ +M1<B*TWM;^1%,@#T4PQG8@XK[V)_!'9DW_GD!H96A^J+Y?98^C#_U:F_AE1H, +MABLC`_VP9`48]@]L.P;S0G,<]NF58;(I56+!:"0V9(X(X<'T145?%XN7S4.` +M20Z+B%+6>#XF(O5\6%L4*3=%X:BX*9Z\`XZ+MI&YW;@6!H+D^\O5&=_9O]NN +M;>0+K=M!L?'<1*(0N>L%1-O;'*/E?#@[;""JP^:T1V-/R0*>=&W"8T';\A5& +M(<NX+?26+0+F3X0N<"7K"@`I7FI#HEZI(42]F^>HBL>'>5ZP"/(57NPZ'<?] +MY7#*]\<)<S78VA<2#H?)!N(@)(6,AGY!Y'$X#VB=')E*-N>,J1$)A":?*5-X +M!`ZG*182.E6@+*Z-6[N`R"9@]F9B&UQ-#?6#E%5C!**^&F.).L,(B!F/>XR@ +M\'$DSO?9YD7V]O`XZ2Z[+3WBKS(\"?)VX8C45?L#%&LE[Q2A-DV;!!/U5+"# +M4%BH98;$064Z(B+@ND5(YM.D2_2=4#+N4))1*'%4:P0OC'IKNBCJ<:2=8&C4 +MB\KYA5;8>)(F8*>7^,C11-;I)5R*)GB137@BVY\V*>8E$LQ+6,Q+V,Q+HG1Z +MZQ4AF4\@I^<SH>2<GA2CT(*8L`0Q$1+$9%:G%Q+UHG-Z(14V@:1O4Z#1*S;T +MC:+EX,006D3C$+3J#49?RYR3Y56?,3'8-6G@QB"CKLX*G73E1,2&N76JCTHD +MF+7SEDF"QDZ$2GCUJXJ#*'Y-8Z;V-6%F\72!8"X^/Q=(0=/(N7DX)_GA,=EO +M'K=9/O&"GI%V'E)U,'1)Q/:#,XD[["M2F`?SQ=%I^^1+TM240N&0'-8:,LI" +M[V"*(^2PZV4NQ%BP60V1LK)6=F[.DGS!L`KI-L$4B^\:3%'G<L6Q<SQ*1QW[ +M0L(KQ6.6OLBV#R`'WFSKF1ZT0Y12@"8@@_I=GQ!6H\T_U5X,)U"*N&I*!,)0 +MR:IDB$S3=FHBX^?:)<E@%\C9^DXO.0<KR2^TP'850Q-5M3U/2-5(<[C0$)D8 +MG:L,L=#)I-V<#B^.V_R<3;SGT=K*3_:JPQ9FL!*:3V.MGW@15^>)*>?&*1?F +M:B]UH@&9K-4SR:6N.JUQTM?1PA;A*,:[!D52<3\[&TNITJ_5'<L$]"*)V(%> +MS!D=<)2DCM4I1[EP\$IP/N_V=^D.9J3;C3VC?C=(*=2W$1F$5WJ%\!+='%`M +MA&$6I4"KI44B#A6K:I;(-.TF*#*$.E"9')*!K*S_+),SKK(T0ZNM4C@TD=4" +M\+15"S6'%PT5D='YS%`+'D/>-'O8YIO?33_^KFSH#6_5P?%)JT0C45;K#4B5 +MU9SC%=DX8WP(]M+`C8&'GYX5`OC4B8@&>:M6'Y5($S[0=R9)^#])*B%D4"L. +MK`3V&E/EKQ=&UNN%A;F(O%U8!8TGYS8#.;GK9IXQLQB8%"^OL1BT+'N"T-`B +MUU0%U>9)"FOU\'D1J$BKLD$&6I'\R&"V>+W1J`-R:WYR1\ZI\<F#%K6R'&B2 +M5C?E"5H=9`Y_YCO(HO-EOA<PGHQWVUN0(2NV\XR,Y="DP%@$8Y"QZ@M"),M\ +M4U52GRPIFC4I8(:@\JS."!EHY11$QK,URH[(()`]\Y5"<@9-@D-HA:NJ@B9Q +M35N>QC51YG!I(7`M.J<60B&32%E<5]T?MP]3=]09&OA'3F6P@@#MHO)(JO8. +MI['*G##$UC2S@E#4TR05BX%)+6L<7BH3%Q\V7:I:+@&AIC$0!HK:R!DH2-%C +MM:C(PJP'82NT'FXFSQD%7F/TI5$L"`*Y'P_I9GM_2&'&M=W:-V)WPQ2#=1N2 +M0VJE7QC9[^:!K/F&J13CJ)8:D4!D@JJ9HN.SFZ;8R.E$@;*X!K.C`9!-T(@* +MLPVON$K]$.56B\#46BW6+,XS8&+&YS8#+GPBB6\/1[C!+#;VD<+E($417$3D +M$KCJ%5:[RSE@2;<^BZ*@;-(B$8>%R3I+/$J6$Q0C(M>M3`[)X);2:Y8)&THQ +MFM%4M2H<AJ@V`00TM0DUFY<,$)%Q^L@`"YY.WLUW*!=YW=Q3]A8#E6;O-:8` +M?<N>$32[F`NN:FOS*8W+.CTRD;C(K++%AF8Q69%"<_4ZY5$.Y3#]YIR\RY0C +M'5EXRS+B26\=0D9\ZV!S^LU0`1JM[PQU`3#(?`N\P5/9WE<RWTK>WJD$E2#S +M+?8VN?^_O;/O;B)']O_OW\FKZ,WF;`A+D@&&G;/AL'=8AF4Y,P,<8/:W=V'& +M.';'\<5/XW:(8>"^]JO'EM3==B15-;8D.+L3/TC54E7I4]]6MVT]'N#J?MK* +MK9T5%R&9`G/T%'CCD1ZR5#FZ!>D*9)Z;'`V<>BT(4D3N^5?D4\#-:Q4;2#7Y +MM,5[.1/@:;K*-.*%`"'UAUN.\I1T");4=++XH"9644C-1N=5\VE,X$7?B"P^ +M5(6;L&S!L<J]AL!5&KADL;H560LEH*-8#9V!;<A53`H"ZC1+*FBA%D:P*K4P +MUZYFC1NO">O6N!<$@-R##V[2E;0/E=ITJNC()D8QB,W&YB,`:#S`]=\(*CI5 +MA8N03(&9RCT&1RH-6:H\W8)T!3+/3:P&3KT6I"HB]_SK,LLF8%D6-I"JLK#6 +MJDJ-F*?I*M2(%P*`U"/;'[LQ>X3*ZA'JS]^89C%H/7+^29)*7,"E?]3.3^34 +M785F#,S7$?1G)2KA2Y6P6Y.\8!ZZ:=<(B-B"?D5FHG_I'D%^QJ1N!:E\C]K\ +MI9Z4:)NNHDU@88!(/NZZ*EO2(UR.T^FV0'%B%H?B;'Q^XH#&!4$<&.%M@;7" +M56C&$%C+/8?!6AJ^=$F[)<D+YJ&KL@V>B*TH6U0F0@HXRRUP`1=6T`JXL->R +MLHV>MBDKV^@7!H#D2\<["I;A7EM;MG%'P1+GRMK2]Q+M$N,2[;+5.PJ6>%?` +ME@A7P)9(5\"6"=]1L`7I"F2>FW8-G'HMZ%9$[OF7YB7"A=0EZH74Y6>XHR!B +MGJ:K4B->")ZD=ONQ**-'B*QNX>>B#+-06GO^](X9%U#I;_,GHVJN0C,&XBO. +MSYJ8X4N1L%N5O&`>VFO72(B(K%];8*)?Z8;_7$[-"D+Y;O\7I!*B;9J*-I&% +MX4GR:;]G+VIIXQ#IS2:)BFUJ$4IL/BI7#<!B`"K_9A1102K=@F$'A$_A)1@Y +M68!21.9F,Q-",GLY&C3+D$4H&LW\*BQ/'$!QE080ZJHTU9K6C!"1:>K*"!/> +MD[S%N_DWG=,/P]FMSGPVMI>3E7XATK@Z=50L5XQ#"5T;JVN!K\8+5.M7!A^5 +MM@TN1#8)8G#=HS`<5T.<(I>W/,V1&&LO=".D+++\;9FS?AJAEH4`N=!@"T$Y +M-%AM334GSO$T%7;B"PE2*09.7W^@N@1;'0;X7X"@[*)4A('?I\BUV,"%2"7& +M^(@NW85G#0YFZ3T$)@^2_2*$;<MA.!T=)70,?&Q#.&,3$E#E!^`/?IMFL&I[ +M:;!=?9P&?!/6PFDL$"C9/3:ARVY!\[VM+>C2-AKE(3MS*E8X6J+U[6?#?;@6 +M<?",N&>A@ILTI+<POW&HZJ&98^%J6]JY#;(")0+21IEA"E,J?*;]YC3!G;B^ +M3F\!`2I#C_[BL$M%Z`7ZR^?E9-%K0`_AM\_5Z'P41X__]#90:YB118=Q#^G' +MRJ4M,(![&#]87@8N5>1N1]9"">BFBH-G8`M*&)6"_L6[)WYT'E2VI1&D@BW- +MM:IU(\=KNIHV\@7A3NY\/%N\MQ*MO&5@I!;3PP(T-P<@LQR/0XD7?O>M[=6P +M8;%2N0)LQ)>.I6>\L2C"D1@--Y>$WGRRDI0A$PI/1&(QRKE*RASQ*X^J-ZPN +M*CMM*,28J)><"HPIL=U).EATYV[?W&7V"(RKE>EBT=4T"Z!L=7P.Q;@2%]^B +MO"J\6*RLNPK-F"\[:Y[S9F@E?(F1=/N2%\Q#*X49$Q'Q%&=;3'0NU-7<\BO8 +M=2NPPEVWUX8R38FVR2G7E!:&)\D'=K^6(-N&R.X!XJ\D2(-06KO^@'WI?U#A +M'[3QJPBZ2Q#,@*@)_"WP,C0I<G*#*0E@E[W^#)A>R)H3B5]^Y13P4_%Z?X02 +M.FCOEPUB9&*:ZC&R1/<DK?6OQ:K6(;(6]U=BE4DH;=U_8%.+`Z@\M_2KL*9K +M4`R!&`G^;4(M3"E2<N,)"N*:O88,G&S(.A*1;7XE%O1#EJ8%A#+;ZB^[QDS, +M-)5EI(GO2>)BUIT7#M?71?L062RGBLIB811*XW)LKJ5<Q@-4S&M!1:6GYB(D +M4R""*H_!&"I#EB)#MR1=@<RSUY\14`]9@R)SSZ\<E]D$*,B:#822K%EK38U& +MSM,T56GD"\&=U,-B:OGQ=-XR,#:+Z6$QF9L#T%B.QZ&@"[_[EO)JV+`8J5P! +M-N++Q=(SWD04X4B,A)M+0F\^66G(D`F%IQNQ&.5<(F6.^!5'U1M6%I6=-I1A +M3-1+3@'&E-A^)!U?C!;#3KY<Y).%M>@S.@5(5W/2F)@U+`.)6QFE8VTV8P0I +MTRNBC0G0FMLP[4&P6O4BB+!F0!-$[99F-`8YK>5H7.S$%:GMT=.KPE<2SK_8 +MUPS!ZW[-9%O:-D4T)ZF#4UPP?N1?3N=S\M=:+LOV`=*^G"HFYJ51(.'5V!R% +M1!D/B(:H!Q63NKJ+D$Q!6*MY#(39,F0)\G5;TA7(/&NA&P/U<.4M-O>\:K3* +M)O_RK-N`5V;=6ELJ-G:>)JE88U\(7J3^G^EHF"\ZIQ]NV>I3K4=XK-:GB\AJ +MS2R,UL;XW`J_'A=`Z6\,+R);*ZY",P;@J^DY"&'U\*5'V"U+7C`/;;5K-$1$ +MU:^M,-&G=!NYY5V\*U;`Y;MBKR4EFPQM4U2TR2P,",E'T\G`4=JR+L&2G$\8 +M'^3,+@K)Q0B]%`*/#5PB5&*,C]S277C6X-"5WD.@+@]BLM#=HAR&T]%1Z,;` +MQS:D+C8A`35=I!BTJ)=FL*IZ:;!=O9L&?!/6O&DL$`C9YW-'U4LZ!,MT.EE\ +MGA.K*#1GH_-2"C0F<)U@1!8?ML)-6+;@H.5>0\`L#5RRB-V*K(42T%'9AL[` +M-E0M)@4!!9LE%;1<"R-8Q5J8:U?+QHW7A#5LW`L"0NYW^;P83B=YWU'"JG[! +M4ER;.C[*E7$4HNMC]1(*6KS@>J$I^/@T-EV(;!+.9L.C"(C60IPLI[<WS9$8 +MZRB2XZ)L&Y*Y/<X"](*>A5#98-K"4@^FU795=;H<3UAQI[N0O"K%?.YR7[!H +M'5Y-D--$K`/")(S^Y;C<1(>,`T!JU$*)R%_--2B&`*Q5GH(05H8I/:IN08*" +MN&:K>X,G&ZK&166;3QDN\\>[^&H6P"57L]628HV6F"DJT6@3WY?$/;L?-2@; +M!TGA'N+/&906P03N.7XSO(H!K'3WVO@)`\,M&'9@F.S!OFE;!2A)1&XT,R$D +M<Y"4(;,,6U!BT<RSJO;\OY+=,(!14WOM_2I!K(A,5$?&E_"^Y)WDEXX[E;)' +MD`0NIXL+86D63&(U/N<27L8%5L?KX<5EJ.XJ-&,PFFJ>`R*U#%^25-VFY`7S +MT$&.QD%$;&&*ST3/BJUR"U*V=2L8M5NWUYYB38.VB:K8-!:&+\G)_\;3=_8W +MPNI=@B2YFC`NR$N[8))K(W16""HV,(G0$&-<Y!KNPK,&@Z[N/2!U51"3A.Z6 +MY3"<C@Y"-Q8^8DO=-@CI6=.U%(,4=<,,1E4W#+:G=].!;Z*:-YT%XD7V#^3_ +M9X7+CJ[6(SRJZ]-%1+IF%D9T8WQN<D&/"T`M-(87D;D55Z$9`Q#7]!P$N'KX +MTJ/MEB4OF(>V0C<:(J+*W%:8Z%/#C=SR+N$5*^`*7K'7DL)-AK8IJMMD%H8[ +MR4?G72L]2]L%QFPV-2Q.4V,`.O.Q.)1ZYF_?`F\&"XN2T@5`$[Y$%![QYB`+ +M06+LVT3:>3+(2D.&2B$\O8C!(><2R+/"K_#)OK!R)ZVTH?YBX%IRJBZ&1/8B +M9>=L.,HGW;'=)Y2,#N&14YLL(D"551A)]=&YU5@M)H!BVQ191"B:;L*R!<"D +MX34(+[7`I8?-;<I:*`%M16,D#$25D2U0T*<>ZTGE79A-(^`*;9IK27,F@=<4 +M=6D2"\*=W./%/+<3K;QE8*06T\,"-#<'(+,<CT.)%W[WK>W5L&&Q4KD";,27 +MCJ5GO+$HPI$8#3>7A-Y\LI*4(1,*3T1B,<JY2LH<\2N/JC>L+BH[;2C$F*B7 +MG`J,*;'=23KK+JWODY1M`V-I.44LEDJ#`)JJ,3F4V]+_O@6W'D`L`NHN03#C +M2T'-0]X<+$.3&`<WG9(`=EGIP-#IA:<%,?GE7#95QO@53KT_K'3JEMI0A3$R +M,3EU&&.BNY-VWK7[,5#:+C"^LJEAD94:`U"5C\6A_#)_^Y9>,UA8U),N`)KP +MI9WPB#?I6`@28]PFTLZ3059*+U0*X2D\#`XY%SR>%7[%3O:%%3III0TU%P/7 +MDE-O,22R#RDO+=7:97B<O,14:Y<P2EZZELU+2-F\;$6M7<*I=@F@VB60:I<) +MJK7/GW:>#+)4:V%2"%.MP3GD4>0N`47N$J7(7;:HUL+G6H)J+?Q$=B?EPG)O +M;1'>6>T"<V]M`3NG7;AN<BP@FQR+5O;6%O!ST`7@''0!/`==)+BWMHFT\V20 +ME5H+E4)X:@V#0\Y%;@'8DEB@;$DL6MQ;BX%KR:FU&!+9BY2=?#Q;O'?[;&]# +MM_`H6ILX(E*KMF&$K8_4K0+78@4HR*OCCHC/)O?A6@3`M<&;$-;6@IL>>+<[ +MOW&H:BM'(^0JJEAMF:P^"J">?MZ"H,D46!\T&6U)]R8-[A0U<](+R*\R."OM +MD&M!.^H:B_[^B@-':[2LHC$QC`)@-/0FK9:W*&NA!+16Q7$P$%<)XU/0JWBC +ME&WD@OU9M&X*>$U2TZ:P(#S(??K!3K*2=J%1FDX-#<W$&(3(;"PNA9WZV[N> +M&\%"HZ-P`="$-PNY1_P12$.0&O<VD':>#+(3C8%2"%$B(G#(O?ZQK/`L>Z(O +ML-H)*ZVHO@BXEIZBBR"1/4@YL%1K@_`X.<!4:P,8)0>N97,`*9N#5M3:`$ZU +M`8!J`R#5!@FJM0VDG2>#[-1:H!1"5&L(''(O<@-`D1N@%+E!BVHM`JZEI]8B +M2&0/4HXLU=HH/$Z.,-7:"$;)D6O9'$'*YJ@5M3:"4VT$H-H(2+51@FIM`VGG +MR2`[M18HA1#5&@*'W(O<"%#D1BA%;M2B6HN`:^FIM0@2V8.42TNUM@R/DTM, +MM;:$47+I6C:7D+*Y;$6M+>%46P*HM@12;9F@6MM`VGDRR$ZM!4HA1+6&P"'W +M(K<$%+DE2I%;MJC6(N!:>FHM@D3V(*6E6`N/DIA2#49(UXH)*9BMR#0XS0`P +M`[(L08GVN?/-CSIV\BQ([B"*,S!YW"L:H*"AU+,6=5G@($M/DP6>P.YDO"B< +M/P5;Z1(8+ZL3QB)GQ2Z`HK41.M36:FQ\Z^S*&&.AL<%=>-9\D5GWGC<^JT%, +M#*1;F<-P.EIIR+CXB*<MVR.D<\FNI9A?^6XP`ROE#0;;T*6IP3<Y'9O:`G$G +M^]+RF[&7X7TG[1+SF[&7L&^D7;I^1?$2\A7%RU:^&7L)_P;9)>`;9)?`;Y!= +M)OC-V)M(.T\&64G*4"F$)QXQ..1<!9>`+Q1>HGRA\++%;\:.@6O)*;L8$MF= +ME!^&,RNU1ML%QDDV-2Q*4F,`2O*Q.)1-YF_?LFD&"XMJT@5`$[Y4$Q[QIAH+ +M06),VT3:>3+(2JV%2B$\M8;!(><BQ[/"K\C)OK`B)ZVTH=9BX%IR:BV&1/8B +MI=L59:-#>.1LX6JR815&4L^K<&9,`,6VS:O(-3=AV0)@$N<2AAFX]+"Y35D+ +M):"M:(R$@:@RL@4*^M1C^*6PFA%PA6[_.G$J>$U1ER:Q(!S(/>K.!U>H5=XD +M%#:+"8%9S.WXT%>.P*9^"]\Z5^QJ3,#H4]/U[^V,MW+V[D`33DX%8)\SI]SI +ML5[I!<D/!#4')HA]@9(A=RQ)JIMG$5(&4'58H#!*1T\%FJ`.9)MUEYW%_&+2 +MZR[R_GI]9#8-A7.5"8)I9]KSH5YU1#:UKN)[YYJW*G9@A-7=`;?BC+2:=]S1 +M5@E**H#;AESTI]5Z/18%KQ#T&3JQ[,MA-54<RV*]NV=YK!M"U7&10C`=G1=I +M@KN0=5H,%\/IY`H)*%L%0]-R6G",2E->!%7CL"JQI9_=JVL]1'"^Z5,'&7"G +MFN8)#Z"5;D^&9)M(-"_.7"'>PB4-AF3#88U#'5-YX%K"])Z^U4NW@:O,PB=7 +M0BHL_,1U(*'EKEMX9["8NVVP\U;7G0W(KD8KNVOPDTK`"27P9#+!W;1-Y9L? +M==8+L*"Y@R#!T,AC7\L`&PDHFP@M[I!%`K)TM%@D">Q#1GJ?V2*_XOM#:JV# +MHV0Y33Q42I,@8JIQ.970,@[^E;0>2CSNZ:Y!,>1/0<U3`!B684J.B-N0H""N +M60J_\,F&*0-QV>914U7^^)96W0*TPNJVVE&*\1(S0149;^+;D;B8=>=%WCGM +M%L/>2F%I-`J`NN:D(*@U+#D2MC***VJRZ6.74KPB.A#@U:8-Z>^"MZH7G*AF +M.CP!E&THPWS(LE+:A<T6F)##HXM5]:HD@'W1JG5TKU4U$UC:+`94):&[8DA8 +M._+I7Q5<K!159JL`R%>9%@1\IBE'\E7'<479J_C9I>ZM"A&$5_6I@PRX$*OF +M"2=D5=R>`+$VEVA>G%DIL4(G#4QD8;+&JFI5\\"^;-5[NM>MN@TLI14+N9)0 +M6[$DKCT)UW^1AFH1"/\0OD9#F?&@GN47'FA^=2UXF%^A84[5N[,KD_P^LJZY +M-Q$2?;YD<N;%6M44(C'@:@G*#.MBX_ZE!&8OOR*#_YT9H=(G&2448F+:D<S\ +M8:K5NTW5=@$PK38U"->JQASI5A_+%:6LYF^7@K8Z6!!*-;D`:,*%6`T><>)6 +M+00)L&O3:>?)H)6:*@8*P?05-H>L2EH]*^P+6U-?]_+69`5+?<7&M21466R) +M[$/*3C[I3?O#R<!2M:GVP7%3FRH>/951$$7UL3F55RT>_F6V*:AX-#1=A&3* +MGXZ&QP"4U$*6'"NW)UV!S+-4B7%0#U,UXG//H_CJV>1;A$T;T&)L6FM'7<;/ +MTP359_P+P8[4E_/A(N_TA\7;E8)4:Q(`C?4)0?"KV7$DKC&"*ZJU[EN7`MT8 +M$PCR*M/U[^T"-G/V3BS3G9P`O#Y[3KG38Z6T"Y<?,`&'0Q"KZF2$W+X@5;JY +MUZ"*`2S]%3*,DM!2(2>H*]DZ9]WAZ&*^YCIK4]N@2*=-$0=XRJ`W^?0Q61<\ +MS?]^E:\I@#@D,UV"8,:/;8:'/"&GA28IUFT^)0'LLI!GX=,+2[#A\LNQ0NH9 +MXU,JS?Z0FFE:PE=W<3(Q,0489Z([D_:\.^^/AA.;;335-BS.JBDB4;8TZ$]9 +M;4SV)5GYW[,D-P00B8B&2Q#,>!)1]Y`O$55HTN+AQE,2P"X;E1@\O=!4(BJ_ +M7(NGEC%>Q=/H#RJ>AJ465&*43$Q-)4:9Z.ZD/2LZ-(9$:A;K?N!J39?`J%N= +M,!9Z*W8!!*Z-T*%J5V/C6[Q7QA@+H0WNPK/F"]2Z][RY6@UB8G#=RAR&T]%* +MCL;%1SQQVAXAG2MX+<7\"GF#&5@];S#8AGY-#;[):=O4%H@SV4?3Z=N+F8W< +M%2W#HKB<'A*ZA3E_8I?CL9<!TN^>U;\6-B1V:JX`&_$DI?*,+R!E.-*BX@:3 +MT)M/-H(S:$*AR4LT1KG6RC)'O$JDUAM4&34[+2C&J*B7FAJ,*K&=23K+YV.K +M6R5YP[`H*B:'A%!NS9^@<C3V]57XW+.\5B.&!#OE!J@-3]257O$EG0A$6IC; +M5/;Y$LE&V@7,)#1AAT0EU^HGD\.K^*G.H-JGS+2@Z:+!7&IZ+IJ$=B9GD?<N +MYJN_7[G>,BQRRNDA@5.8\R=G.1[[DBK][EE3:V%#8IWF"K`13]HIS_CB3H8C +M+=IM,`F]^60C[8(F%)JX0V.4:S4L<\2K'&J]0?50L]."PHN*>JFIO*@2VYVD +M[)?/K)0>;QD81\7TL"C*S0$H*L?C4&2%WWV+;#5L6,Q3K@`;\65>Z1EOYHEP +M)$:\S26A-Y^LE%[(A,)3>EB,<BZ(,D?\"J+J#2N(RDX;2B\FZB6G]&)*;'>2 +MOA_;?DQ9-@V,I'*"6"`5]@`D+4?D4&FE[WU+;2UV6.C3W`&WX@L_Y1UO^LF@ +M)`:_C>:B/ZVLA%_8O,*3?GC$<JZ19:KX%4FM.ZQ*:H;:T'^Q03`Y#1A;@CN3 +M=3%<]]-QM89A,55,#HFGW)H_3>5H["NN\+EGO:U&#`EZR@U0&Y[`*[WBBSL1 +MB+10MZGL\R62C=(+F$EH*@^)2JX%4":'5_E3G4'%3YEI0=M%@[G4-%TT">U" +MSK/A:)'/.Z=_^8;]`,A5EW!KS8-A:'VB<([6;'K1M&%D5K6V'@OWBKLFGG`< +M-KH'QY([&IN\Y0'(>K"2@>26Y2F,<E>HQ)@XAZ$8VR*=0[%M2"/7DMMHPK?P +M-AK#U9-I`#0AG9G&`O`A\X?A[):E]F1-@^,QGR`>B9D]$(7%B)QJ./>]?_VN +MQ`X/D:4[X%;\T2B]`\`B#TIR0-Q@+OK3RE)#ALPK3.V(12R/DBE2Q;=<EMVA +MI;(TU(Y.C`N"">K"N!+<@ZSRRP+MI	.C2ZJFFBX;4T"2&L-BZ74JSBX%V- +M&T*)QD7#-2B&O.FH>\H?D"I,J1%R*Q(4Q#4[T1@!V1"E(S+;W.NKEC^>)=:P +M`*RRAJU6E&3$Q$Q/54:<^!XD'A"):J<N6<O0^,NGAT9>9@Y"73$>EV+-_>Y= +MJ"MA0V-BZ0JP$6\62L_X<Y"'(S4";BP)O?EDIQ(#)A2B.D1BE'MQ%#GB61C+ +MWL"B6-II10E&1+WTE%]$B>U)4GYGY*([=M!\6I\0V:I/&96QFF$H;8TQNI9E +M/3Z@`MT8:%1R5ER&:`Y$4].#,*[JH4R1KUN8R@BLM->?$=$269.VQ$N_<FYD +M&J"P5^P@E/B*Q=94;&(L3E/M)K90/$@_FEMO@/*FH5%=3!`-Y=P>A.!R1"[J +M0/C>6Q148X>&4N4.N!5O<);>\>>E"$IJD-QD+OK3RDZ.!LTK1/&)1BSW"BI3 +MQ;-PJN[`>JD,M:(G(X-@>EHQL@3W(:N]#`R2JL@B$$Q4C[(+K+IM"4`4],'( +M!P=?FN)O4TGHS2=+X1<NH3!E'PZC/&HBK"1B5<1V%5\\U$M0[<63V%XD'7=M +ME1YI&1Y'Z?00*4K,P2C*QN-69*G?`476"!LB\X0KP$8`S..>@3"/AB,]XFTH +M";WY9*OT@B44JM)#891/060YXET016]P011V6E)ZT5`O1:4736)[D71JO:<W +M#?&,>8J[IS>%GB]/W;=3IK#ME&E+>WI3C+/;*>CL=@H^NYTFN:>WH23TYI.M +MT@N64*A*#X51/@5Q"MKZF")M?4Q;W=.+AGHI*KUH$MN#I+/Y=##OCNW$GFP< +M&DW+2:+A5%J$$%6-RJ7FEC'P+KOU***!4'<+AAUO'&I>\B=B&:#4D+CYS(20 +MS$X6!L\R1'&(2C/W2JH2Q[.8Z@:`]50WU8I6C!21Z>G&2!/>@[P7%RX_^5*V +M#HV\:IIHX"U-0LBKC<NE7*LX>-?KAE"B<=)P#8HA;U+JGO)'I0I3:J3<B@0% +M<<U.4D9`-D11B<PV]RJKY8]GF34L`.NL8:L591DQ,=-3EQ$GO@>)EQ_LM"5I +M%QI[Z=30F$N,06C+QN)2HJF_O8NS$2PT"@H7`$UXDX][Q)]Y-`2IL6X#:>?) +M(#L=&"B%$+4?`H?<RQ[+"L^")_H"2YVPTHJZBX!KZ:FX"!+9B933^;B[Z'QK +M\8E@K64XK-2GA\!*S9P?+8WQV!50W>\>);0Q;`B,J[@";,2#<Z9G?$BGAR,= +MTFTX";WY=)66"YY0*'H.E5$NI=#($>=B6.GM70XK=I"577342TGA19?8'B3M +MSNUT'FD7&D/IU-#X28Q!Z,G&XE):J;^]"ZL1+#3*"1<`37@3CGO$GV\T!*FQ +M;0-IY\D@.RT7*(40=1P"A]Q+'<L*ST(G^@++G+#2BGJ+@&OIJ;8($MF#E+W9 +M<&JGUUC+T%C)IX?&2F8.0DLQ'I<"ROWN74(K84-C7.D*L!%OSDG/^)..AR,U +MTFTL";WY9*?E`B84HIY#8I1[*10YXED,R][`<EC::479142]]!1>1(GM2=). +M/IXMWMOK/=$^1*;*J:)R51B%TK4<FVL)EO$`%>):4%'IJ+D(R12(E,IC,%[* +MD*7(S"U)5R#S[#5D!-1#UI/(W/,KP64V`0JQ9@.A'&O66E.;D?,T314:^4+P +M)?4DO^PYB%/6/$A*\XGB(IK9!!-:C,RYTO-8P`I])9ZX&"W=@V,)!E'I+2!# +M>;"2!.@6Y"F,<@YR-'3.88M13-)Y5F"11I`"7)K`J+^EL?9T:+P`352#QKL` +M?,D\[;O(3]HZ2"JS:>(BF9H$$YF/R[FDLSC`*KH92EQN2M>@&()14W@*"$T6 +MIB2)N>D$!7'-07"&339LN8G'-L]:R_,'4FJE!8Q**VVUIS3C)&:B*C/.Q/<@ +M\6!RL;#];(QH&QJ#Y131^"L,0NA;CLFE;$O_>Q?M6@#1"*FY!,&,-QV5A_S9 +M*$.3&A<WG)(`=MEIR,#IA:@?$?GE7D++C/$LH%I_8/G4++6B&B-D8GIJ,<)$ +M]R#ML)C^]2]_^=I.)LK&H9&VG"0::*5%"&G5J%SJ<AD#[\)<CR(:&'6W8-CQ +M1J/F)7\VE@%*#8V;STP(R>Q$8_`L0Y2-J#1SKZ<J<3P+JFX`6%%U4ZUHQT@1 +MF9Y^C#3A_<G;.9U.%TY"DO<(E,!BNM@0YF812"S'YU'"15R@=;P:7FR&*E>A +M&8/2M/0<&*DB?(E2=7N2%\Q#)SD:`Q'QA2DV$[TKMLPM6-E65G!JM[+7IF)- +M@;;)JM@4%@:`Y`X?8S>[A$IR[`^SFW8Q2.[S&>%*;,`2H;4/MM?=A6<-#%V$ +M3V16@I@J=+<IA^%T=!.Z4?"Q!:F+3DC_F@[\V&_=#%)5;_E3\(G!-UW-F\@" +M`9#];#C*)]WQE;^JO:)7J'17TT;'>VD:@_#:.'TDA(H36$4TA!R=QX;K4`V" +MJ:Q[$@YF%=94R;R5B8W"43>1'!%)6Y#*+;'47P]H>0>4!(8E)%5@V&Q5.2=( +MZG15=((+!U`)/I`'9X6;GA9]0JT!<LKH_!>&,>A?CM%';LCX@,5&+=#H9-9< +MAF@.3&7E03B392A3Y?&6I3("*]TT<R2T;$$OM\!+_Y)?9AJPX&MVD,J]9K%5 +ME9P0B]-5QPDM%`_2CQ?SW')SF3<-C>IB@F@HY_8@!)<C<E$'PO?>HJ`:.S24 +M*G?`K7B#L_2./R]%4%*#Y"9ST9]6=G(T:%XABD\T8KE74)DJGH53=0?62V6H +M%3T9&033TXJ1);@O63O=TV(ZNB"OSKJ+<P=56.D8)'.KD\?E;\4ZF,:UT3I7 +M\&K,8/5\90;@0K;!C=@V80"N>Q6(XVJ@DT3SUF<[%G$=E&V,S,56O6U3UU,P +MU)(1(A\:C&&(B0:S[6GG+UA/5'-_65#>E:,WZA;%T/+G"\PN8=:*<L+(-4+: +MA5<'-4)W?5+&!JA,ZC%&1K7N+CQK0#QKWH."N0QBFD#>KAR&T]%%44?"1W05 +MW0(A?0N]2C%0B=?-H!1WW6"+.CD9^*:JAY-9(%"R=X:3?CZQ_+:SQIY!4[Z< +M?CNHE^;1B*_&ZRTKRKCAJ(MZ&K3#:MV5Z$9QR*UY%@G@9;B3IO@V)ST:?ST$ +M=EP$;DMNM\=@H+90.8DA,71KF$I#M]N^(D^;\HFK];07EG<E.3L;=0>6G\0S +M>H19-^1TD:N%,`NO$N7XW,6*C`M0I-3"B\QJS55HQH!L5IZ#,EF&+TT2;U'R +M@GGHHJBC("*Z@D9GHF]A+W,+5-`U*RB%7+/7HC).@K:I*M\D%H8WR2?33I'/ +MNO/N8FKY^[\-_<)DNCEU9*X;QN%TKXS573J8\0(*B!7!1Z9RS87()H&$KGH4 +MRFDSQ&FR>JO3'(FQ+IHY.LJBZ^=6.>LK&2I9"!(.-5LH\J%FM45UG33'4U7= +M22\D[TKQV\5TD?<=OTJYN6N8U:+F`.1R4;4/KQCU$;NKEEKL@,)E=2X@H[W) +MG?A6@8!O\"Z4\;6@IPGY,'(?C\8NTCU2'J,+^,]`9%_U44]-D`!I,H>B09H, +MMZCGOT`_V>]Q_K+`H-_M/.LN[50];1A:S6"30ZL/U!JD&O#1N"@2YG-O_6%& +M#`VZT@U0&]Y`%5[QQR<+1&JHW$SV^1+)3MD&RR1$U8I")?>"R9/#LSS*SL!B +M*,VTHBTCP5QZFC"2A/8@9W'>G;O\W+/6/C2*ZE-%0ZEF%$)48VPN!5>/AW?= +M;0PJ&A4K+D(RY<U(TV/^J-1#EAHOMRA=@<RS$XV14`]10K;`/??Z:V239QFN +MV`!6XXJU5E1F`CQ-3X$FL!`\2+WH6M[02QN&1F8V.30@4VL0$O/1N-1RYG/O +M(FY&#`V.T@U0&]XX%%[QYR`+1&KXVTSV^1+)3C0&RR1$F8A")?=ZR)/#LQ#* +MSL`**,VTH@$CP5QZ.B^2A/8CI\M&XR+8,^Y%"]N,"Y2S[87GKLT"8=.F*9Z8 +M.$0Z(U[`3X@7..?#BW2W%[<E3V&4LU:)X7,.5S'BDLZKV$(W4Q:8>RF+]O<4 +M(P=HDCHSY@7@2>9BUIT7EA])TMJ'2&8Y550P"Z-0,I=C<RWN,AZ@ZEX+*BI% +M-1<AF0)Q5'D,!E(9LA0YNB7I"F2>O1R-@'K(@A29>WX5N<PF0$G6;"#49,U: +M:ZHT<IZFJ4PC7PB>I+XH7*YWB^8A4EI,%!71W":4T')DKI5>Q`)4Z*OQ1,6H +M<@^.)1!$2V_!&"J"E2)`MR%/892SEZ/!<PY9C**2SJ\"RS0"%&!E`J'^*F.M +MZ="(`9JF!HUX`7B2^=VW3OJ3-P^1RV*BJ%3F-J%4EB-SK>LB%J"Z7HTG*CZ5 +M>W`L@?!9>@N&3Q&L%.&Y#7D*HYR]_@R><\CZ$Y5T?N57IA&@_"H3".57&6M- +M?T8,T#3U9\0+P(/,2UOEN0R0Q4M4M;D$TG?I7+F7H)J];$=5+A%PN(2`<`E% +MX#)%];B9[/,EDIU*#)9)B,H0A4KNQ7`)*8-+G`*X;%/[18*Y]#1>)`GM1TZ7 +M3_JHY@$R%/V3/LHFD*9>GZ#08@&IN.U]TL=T#XXE"!HQ;E37@I4@)+<B3V&4 +MLU:)X7,.5S'BDLZKV$(_Z&":@!?>MC_I$SE`D]29,2\`#S)_&,[LE"=M&!J+ +MV>30&$RM0>C+1^-2N9G/O6NV&3$T*$HW0&UX@U!XQ1^!+!"IH6\SV>=+)#N5 +M&"R3$)4A"I7<BR%/#L\R*#L#"Z`TTXKVBP1SZ6F\2!+:CYPN>XFJ>8`,1=]+ +M5#:!-/7:H]%B`:FX[>TEFN[!L01!(\:IL!:L!"&Y%7D*HYRU2@R?<[B*$9=T +M7L46NI5BFH`7WK;W$B,':)(Z,^8%X$GFR;1#@SK/BV(XG=@+T4J_$$E=G3HJ +ML"O&H>2NC=55!%3C!5(#*X./2M\&%R*;!/&X[E$8F*LA3I'/6Y[F2(RUE\$1 +M4A99&+?,63^E4,M"@&1HL(6@'1JLMJ:B$^=XFDH[\87D4BFFLWS2&>?CZ?RJ +MC6"]93"UP)@>G/VZ.2_:F^.Q$AB&W]TE17/8X(RMN@)LQ)VC%<]XD-,(1S*D +MW'02>O/I"NT:/J$P]"DNHQQ*IYDCKL6RVMNW/%;MX"K+^*B7D$*,+[%=2$H% +M8Y$O=,78*1;3^57?VKZZ7S",73-U.&]7&_>B[[JQ6I7J-?%R+]PVP8=3=;T+ +MD4VZ$W>M1SWXNR;$R;`XG#1'8NP5VC5NRF+HVL_'60=IL"X+787">EN^LF&] +M55QU_(7C*H6^D#RYA617*:B=L^$HGW3'>2>?]*;]X62P4H,WMPZ@)JR8)J0. +M-)MTI/^J<5TA.E;$P45J7!5*"']7NP;%D`MK5WK*B;`KPI0`5;<O04%<6ZE[ +M8R,;3..VR3:K,KPJ?^R+[VH+[B5WM2TLQ9H*,9-0HJDD_LYX6BQ&[WNCO#LY +M%%$]V?GJ<#ZF\[M^-)KN[#2^.3_+CLA+1=:A_U4O:F/@[VLOK&S:.:NWIJ_Q +M#CO]8;%8,4+Q0M:;3LZ&@Z/18F<X*1;=T>APW)W</"&N(G\[/]U_\N)@YZOO +M]JX]>?K\I_L_DO1Z\?+^CS_2UT;$^,U[^\0?KW>^HD]NW=O7>O'7><`GV2Y[ +MYR;U]BY]/<O^]*>L?/,-*XM[>\PD_W/KC6A'B^9RN,B^9O98PUTRNI]^(.NE +M\XR%D:3X2[IZU#'V=UEKK=EN4[/=TOI-UO[W[&PZSX;9<"('<S?K3WG1WMW; +M&^[2IY/\;D8;E^E,9\?'O"LRE0V\8NI6HRG>E,PR*_(^-;5__/KHYJONX8=? +MKN_M'<^X%\^&[,\GTNSRG*1D-L^[_6S&+#(#VM+:VYN)4?3OB;3OW]M5N;Y+ +M\_<N[R9'TR>=R.ORZ8Q[CXWO(WW$QI9G^Y.[Q8VCZ\<W;MR=W3UGCU\?D2?% +MC5]?_7KSEU=?'_Y5#/S&S1MWE_MR<AGK7-QX?:0WN7%W[]IBWIT4]#::@[N/ +MB)G7DQM'-_;5,?>?W'W"7\YN#.CKO\M<(U/3/$&7:7;:)5.E25QW"YD3?7<W +MN\=\3]K(2#%;(GS$==30KO":&'R9<2+U.]_??WF?IAUKO-^<?\?\*"(-J9EJ +M_UUQL.;$%/U5?N[M_9<P)8+'\Y#FAIEFS5GV,>/5F7JA0YL=<"=7?%@HU_%T +M^B#'6;"A_'Z%4T3;M6NRR1FRWQ6+E#GADS;]3SL[%Q.#6SJK?GY2H16#52.1 +M3,BPP=Q[4Z/!"AC0E*RQ3^^Z8NE_Y.Y8M_`_23"P]<.77GL+[PUW[7!^KSF` +M=T46E3YG];'HG,VGXPYMH=>0VRW5D-N?H8;<MJLAM[>XAMP.L8;<-E+Y=K(U +MY#:PAMR.L(;<]JPAMQUKR&WG&G)[JVI(;>';U!"\A;>ZAMQVKR%W6JHA=SY# +M#;EC5T/N;'$-N1-B#;ECI/*=9&O('6`-N1-A#;GC64/N.-:0.\XUY,Y6U9#: +MPK>I(7@+;W4-N>-80V9O!WR#B\:7%I/R!1[Q-26%'KO2VHQ:^689.@&$1B8; +M2+ZB>AB6RW1=543JX]`JB5BE-`MFE02J`EL`UP_9"M.N"]QE":]RC,4J7N$E +MR3,Z>'T1FXESQ6H&)(I8XDWQ$5ID5J[2<@%^_)6LP(\?5ZT3TTOVBV4XZ8TN +M^OD_'][__N'S%W2UB%<ZXJ6KEDNUN>D&\2[Z:M'L7KE6JF,(>Z5P/Z]8*\UN +M6=7U:B^M6BF5K+ERJ?@F21LK1??1U>MDY_'W=%'(@9.'+Y[^_/P!O[[VX^,7 +MS^C?E_<?O>C\X_&/#^EJD7/6VFF]&[KP:DN&\-M%SN=:+?NBHIK9.)39*#PQ +M%#G)GY99R=XH\U*O_7O7[O__'\BZ^IWGW*N]O:]_(2*5K(P):46_8(8_^Z0J +M^L,GWQ,=1L9Q338YR+A2N<;&S`P=9+/Y<++(ADPO?1)Q&+\=DOB</?Z>#)7/ +M=6?1'10G&?7$S@[][TFVPM/B>M7Y$74+=]WW#Y^1P3Q\\N`Q;4#L?V7X5'J: +M2OE%MF0C.,_GQ+^SR_Z;\JQQ59S,`R8;L^)\>+8P:4U%^;6'S!/WGS]Z<;"W +M=UW&4\[M1#^'T1@O6M$5+ARWM\?&0Q;=\JX)W+V]/V:'`Z:)54V@TV>'/I`/ +M]"O8Y@O:$)4KR""^VRWS3Z):.]\"VJ]8EM5EN-/CJ?Z`Y?J#UG+]2TI?F=): +M%C_0LU@FI]SV$6\?R`?&O1+&"P\:,J%$W,XC%FP)'UYM>GW:;S&==4XOAJ,^ +M]0_=D:)D*K>GJBV%'\OW!S2CLL,A>?N1-@`2$'JDW9V=7M&;SO*3C/\]8BX1 +MT_]#=E@8K^NS?O'@Z;.'!]GA:7;XFY@N>TG-5W]*!F`8DF_SX<B[(<18ROL0 +MC#'MZ,_(>+4>F6A),U"VHX]7+AZKE2`:\7SOT8T;)>)V:?HP;[QZ_?KXE^LD +M2?_KA#\\R`JJ)?2V=T4ZR_?(6Q>G/-UE(]$F+[J]E3LF#5)SN&N"3^A)99^U +MJ/%+RDXZ&KV-MF^3_>UOU>0[-N.A;B!AU"JC1M,L(_6;Y5OVZ#G_\^*_?R+_ +MI??79+1Y-<;3BX5\.)SHSV93_9E,A?.\]_;P)=%J[%2$/:`Z\JQ+WN_?(]6` +M:#3Z9TE?80]FW:*@#XJWP]D]OH7"77^OC`$ATG(VG2\R_ERK_N4QLGVQ9TM7 +MW8*4I-YT-)T7!S:G*C2D"_+V5;`\(A%9T'?Y.009X=%QN2M%\EK?1C7;::WH +M28>1A<9I!SN>F%/GX9-_/7[^],E/#Y^\I)K_=]+Z$[/,ES5O](_O.\\?$F'\ +M\,'+`S/E,N;K-\1U<]*;/,[^G-U\<U>]S9<.,?;O?]Q__&-'.%*M(/KO^JO7 +MV>NO?F&'Y0^O\PK&XR:MLV?*_E<BWO)M_E1[GT2'B(=YWK]+3IJ*>_]^=O_% +M"VUD=[7'XGB\QV`^X3W6="B7JAD6<BI$$B#/OOWVL[J)Y7GI)OJLYH;10$R* +M'6"]&QP=N\9@Q4V*01E?BO(0]$G-)>PHIZ,+?I07/SQ^5KZKY;*DV>^D_2<Z +MJH(\+A;]3R=\A4BZE3NAQJ8["<4N.2'\C6H'/6#T_>+>+OVC-H7ODQCN-A%5 +M:UU4FI/_9!7`&@/@SN5CJ.A8K16+:6.C+#OM3B8Y7>Q[Y%@\N<C$Z5`RNF"( +M\141:+8O'4%?N:".%P^$8JN^7!A@63N:T_R\^XXD4K>@J,U["_+XFLS7\A7N +M$FKY8+<>;WT&^OCI3*_TCTCDZ5EF#DS$P,)-ZC#23<S%Q3WZ1WA(>V6-=U:- +MI4].@"?3A7!6S5<,@1<3S5O\.$V^4D*Z6YR3$;%K3/3XLBU==3.RT,N<UJ9* +MW]ME+%N=E:)-??5HIJ^)Q<WZ7)+IT,G-+R8'J]S=V+/(+HE@;>BK>9<=X4TI +M;KB977I!LI<=]MYDAZ-<O2T<H=[]^%$-0?E+6JEZ=)Y3J=#HN')!4]<9UY#W +MKCV[_^"'^X\>=O[^\Z/G#Y\]??[RH*+@I-UG1%D5N7B:+>@Y4F/?QJGS7L"9 +M"R,K4JFTQI_OBIVUXOCH^-[QX(T3YBCG=UG5;4*K>'?>$(0*^?E0!/QWF]OP +MR5?::!<25=9\K'85;ZWN6[J]UI6_LWYDC:-?X3UZJD!==$+IPJ4XD6U4"W__ +M^,5+N<58[JO*"WY7*%36O'$7M:Y272[A5\]:^MH>>?7R?CDKOF%;321MY'1E +M"?,#XM]LOWN:G>>CV:UQ=Y(-"[)T?KL8DJRABV>0DZ!W%SDYYI`6Q4&^+Z:7 +M_>VXG[\[GER,1DVG4OE\/B5^/9M>3/H9-4S[%G279-$=3H:3`>V3[8^'14&? +MR./OTX4[ZO;R<3XAJS=?+DYVL[_]Z=9=8\2'(]]!\\6V7QS_>IS)?\?[QA'$ +M%0'^CU@[&R[I6,<W,K&'71[W!CGJ>$I+#9GC/-<.FZLIW]U=8_W];-@C%M\3 +M1W3?TDY#YIY\?LA.$/>SRR$YGC@*'43%F+K2DAD98*:Y..WB9CHBYP_D7DV? +MXE6^R-;@^"UY:+Q*E@3/SV(Q9]I3GB[+,_72KZ]^.7KUZ][>Z]?7?SE^3?[] +MZ7@@=X:FLT8;VNZ+E1VY-M6"W9>$)>]TM$L:[,Z1QJL:])V&"_7D/*+X2(ZJ +MC?/XX\>[BUV%^;*-.9WCC]5S?MKMC=H"(0NU'%UY:G+]^/J!?EE-U8:R[2X? +MX%?T\,PUQZ^/C__0OTO&\%$%B!RMN''\ZM=C?@_`OMZ)EL'#BS=-&R7*0>J` +M*^X[8DU);LB<D3X4)#LJ4:;M"M1$.^O7/S;Z"L_2DVXQ_6-Y]XQ^>X0VN3=U +M.AHY?%S>ZF,*J[/AI+%==DC6(1DZW;>;Y71WY=NOOR:'7>:]K'<^GO:SBS_/ +M+Y?9[Y^RU^H,K0G2?6-#EKE,JA@R[^P/]S+-.^;@>H1J9[/G=0/:@&F8YM5+ +MK"W/K1Q7&3>+$55/\'CYJ@].-"'=Z6%F*P[2T-PXFK;YQNX*O/_#0[&13!^* +MC50N"L@*%5;O"?(H\&EOJ!=+KAR>3Z=O=[XZU"0I92J5-AWBQIQ>8^'MR?"J +MT6@*PYT[;(G60G%C,/WS7`2$?D"0C>`/=0/??/,-J8/#R=LBNVD$M/OGN47O +M2A;8=:*'9)WH55Y^/;<XYY]D'$L3W`KW`[=]^)R]9]03YM+!A^'L1/J=%(CN +MG&\KRF9JGYZ\1:_D/_K/XV?D??J'[KX=9-0"/?S?5*<CTO9H\$$6O=F4@*U: +M^?CA3TGG6T['_SLY\*U[1&FR!X>'?_V4,2--0SC]<,MB#"-7%XS$C,D@?J1N +M>/KL)1M']?`C&P\L/S@=^]__H8>C\^>/#@_S3]GR0]/LES:')PW_XS0`^=TD +M34?\C\4!B_/N7#L@?9IIA[-,,-K-+L/,X(J->\T2>7_G*W:$^6^5U[6G5Q^( +M$XHLQY/5`.2"J?/R_O-'#^D&Z0J+]_:_.]E??\0_9B^IKB9.'^2+[((HUGG! +M-"\;"J,W%<1$%A&IT\W^Q:Y=\,NC%T0?TZ_RSHB)?$(L$8P/+KKS[F21Y]1( +M=U%:F@]/+VACJNZ+?'1V*,X=B"0X?4^D\EMZWM"=3$G[.;%$1D$/?<0OK]#K +M'-SU0G\)P=BY__S!/Q__BXI&H<*N"V!<%S5B10KT>UF-,>7M1LP']%)4:8^L +M?FE0$*)N@+198V%4CFBT8@"C=0-8EMWI`JUW7J[K_!_9]V*B+[GJBEMA0:P/ +M)X>*/AF]=8$M2V&+-%5C,9<%6R6L&=6T),QEL3F\-%:/+*[FJ_PD1U,97+L; +MK]`B)_M7K2K%5[5@WF_<[W5DK:1WI9G7J,U#B8O4AN[]]=6O)_3R*+](>N.8 +MR%_N#M*6F.[G4K3L_?[R)_IU!X?'B_'LTW%W3#Q\N$?^':O/9+`#7_;Y33KE +MJ\T#XG.1;8Z.CN4*SK/#0W$%\.B(/";I0;0/'4%EJJ5@8RBBJ^_!/Q\^^*'S +MX.F3?SQ^]//SAQU=FV6"4.O:L,&NT7=KWN^_&U[9AE'CRE9R%\"RG9W1\@:Y +MJR="(E2V9L8[(@%6N9^?7E5[E0<RULU*,Z3AM=\UB]=Z?9H4)`/(.Q?C;O$V +M^_K;;^D3N7NPI])S5[N'9]W<Q$V$]\S.IL<];50<[&E%\VBS5[58E)WJK;03 +MMT_\HQ?B2RC,GG?+\YQ/*L$;6UIE3=5$M2):&6'[4I4$ZK/+@9PME0]VW5PK +M);[Z[IK<!2I%F/C"C8+=K?N>7?S7U<!)>4E0WP?2ROK=U1_L8/=(T=/$@\JN +MS\US]E^Q!\\>S]A_EXS">WNS??%@N;]3#R>]/U>>%^[SJ=2SXF!?^Y`-_\:J +MA\^?/WU^0H32>[8?.J47:+*][[++X>*<*)N,W7FE?=Z##F"U=;4QJ)T=?])N +MNZ"$]QA>KSNA%X]ZYW19#R?LBHK/(/B5%CZ4AOXT5.*^,GY]9?2&;]J+^;/1 +M\6P1`^-[::/\;)%USQ;Y7*WQD]WLKKY6C4WP\E;EV@:1OC][C>>X:)L5%S-Z +M(4*[<,3W2<SC-#I&FYC1N%S;U&D[YMHZ46N-Y)8<OOIRG?WL7G:4U>_G%YZI +M+%02P6PZ&;UG^45OO2Y5.2ORI;/XB#)Y4Z5(ZC=\5LK>5:%:&RFR++FR(-/( +M>XOI_+T(7GF,2O#6'5UO9[J3W^C4'9_0NT?(WW7G1=SLL^=/'SV__].+@]5- +MM;NG=D28]J[]_>?'/[[LR/O@KNI,1L('=)+]U'V;LY.EO6L_OOSQ\=^?WW_^ +MF-])5PXE$U>@**KYIW#477:OV=TD_)[3\M,FI\.)['PBRR;]FB+M`#NR,=VZ +M/N'[P'QEFY]7(+WXUI7Q*CE`PZOJ.S]6?%!\Q6?_UGV8:.6')QH_QBBW(8W/ +MJ.SQ(BKW!B4<'((F74C")A_2_2_E6_I,?[??7735N_09?5>!23&*OKZC'JM$ +M_>ZJP8ACUHZR8]0D0W_J0V37*TZ,6\[IC9POGS]F]VPJI*P:A_RXB\@TNF$J +M7V)6Y!L'I5Y2FX4VG<S7Z4'O'19JI0MCZB+7]@YVMW)T>OY[C[6D+]Q3;M\U +M9D78JW\1&KNN..R=R+M]U7-U)VGYFMRAYG=@L[.HSH,?']Y_(NY"9ZM$;D0U +MO"\-'+&/4VL7^#YFJPRS4G*E>;V5NHEU-IQJ7T`HQ<&<^&(\JS5;\V;EFPQM +MVC:WT+X@[FIS1N,KFUB.L=[CJG;TR^E<[/+VS:T6W;F%+=YJ]7N64]6:KFA` +MOS.0Z/Y186--;UQMHB4OVV6@.=F0LI7W=G:JE^2UE?8=USAL,[0W'8_IIN>0 +M7MQ=Y!-2J]AYB.I>4(%_0<ZGRXY$K_3S44Y&)@02V_X<=]_+FQFR8I;WAMU1 +M1K]4D/6?YTP\'>V:,S++F3&A2J7C"DM\"(#6#/E(OJ8I"/E1`5I`*J\))["K +MV_*K$#6-D1G?CRB>3::4<7HKTEOG'!V.4H%*$+*J6&Z>T\`*L)3!,K$RKW*E +M"1&-"WWU:EVUVLSUTI#[C2E<3D=JP!U]LBH\F@_H/BP5BS7D,WE3OGC>UY1T +M&0#ME6FOJS]G'RG8Z;\;GM`=,AX"]I=4E_/%F`@6^E_VNGAP0G7&V93JB[.I +MD!WLP<G.3D61*"%D?IZU?)G>)$.&W_CY<,T:'9WVQ%!.Y6@KZDCUT#/Z"DE\ +MR*>L/S,.IKM`3HR[0CTS.M1=,Z:IK7^[GO[DMO[DCNHTZY^I3N2)<0S^7#O$ +MK-`:%V;;PFA:GB75.7=2NQG)8QD:-_<<=R\6T_$WB_RHUR4'#GBQ-GC&Q%7= +M=V*Q&M]P2UQ<H9_YW'Q?`J!!&59!*I;]S@[+&YDO99[0_!!Y(?-!/RO1SU'T +MM;/JT^GTZ.J]2B$POL%%>U99ZD:S$[/73?/I;?,I625'5.ZS\R>Q@R_3NMPX +M5I,K'[*S(-+WV3^?/OEO\<E1\<DKVD.T[HX/#^?YV3POS@W;;`]`'4>60:<: +M*CZ"5Y90&4R+@EKVJ==4855]EB]CGXW-C,O$LF;P6R"R\F8,=:=+5MZ=D)57 +MSK/RHGW9?_DADQ>ZL_*ZJUH*#?7+J%9RRE?5+Z-34PFK[GB)W639L7+E@UX+ +MXG6#53=9XEA%DV5-JTM-Z=-45&C5T\N9J()ZZ:J4,>.47N]:/<5GPZQ4(;W] +MBOHJ)F34(KU;)<GTI;JZ1&G]Z?K3ZU*E1F6-J]VH^(59J<SE6;N$5BE;\GVJ +M\VO(95!<@6$=HHV0K0"UH5N9FW3:8KID-GP6=+>;9J6ZZ*0#=@5?#8Q6`KJ2 +MKT8G$[%7H]/L74'RSA^S[D'V@+F(?I"TF(YSTG^2Y^S<AIVPT#,>N8\[S`O2 +MY91TF8Y&Y!6&T?ZT=T'OY&9W?;#F_.?=Z7T?U2L[_,X-1A]R<B6TP1MV*YUV +M>>B0?G-\]N!?+^3M:6^N:GM4O)M4&J]LNW_]?_>O;D,_6&O3K#>=Y[1=[<:? +MX^O'VNZO]JIZG1#>N+>`>))>:SLF&7-,BM'%C-`E/RK.C>^CIV34OQ*?E"[U +MS)1?Q^IK]?^7/'Q5V7DHA_>+N,*GWF/7>.G=ZN+R1*TOTU1K#+`&S5:H)*OU +M)"^N;MU\,/E.<S^F,&M]Z*MKVC<?J'RKTI/=))5GN[0"'YWO\KNB_N>"M*.O +M%&QQ3,_8O4[BPVO$+KVU:3C1W^._JU$<$7-_IR?^]#HA63HLE&1-\<\.S.;3 +M=\,^N]>JZ$Z&B_=<;F33B2Z$F;05^P!T;9].W^5'#3]]0\>K+D[0NZ<6%1W? +M^,,.)-NSC_S3&=\__,?C)P_9!W&SOS7\P`4]PLY.&3R;0Y:-UQ^K8G-G1T7. +MYBBJ]?K#5*VR:.<D:N_R.?W=M")[=?OHSE]OW#[ZR^T#&LI'3W[FR;&8L@_B +MB8_+TT"_Z\Z'W=,1C_%3>B_;Y;#(:2C?%XM\3-PW)@&_1F'YXGWQKXP,FG[` +M;7'`-HI.<V*KQY!\M'/TY.G#?]./MYWL_+\O_[[\^_+OR[\O_[;KW_\!+T;@ +%:P"&$P`` +` +end diff --git a/contrib/libarchive/libarchive/test/test_write_disk_sparse.c b/contrib/libarchive/libarchive/test/test_write_disk_sparse.c index 8a34253..1566cd7 100644 --- a/contrib/libarchive/libarchive/test/test_write_disk_sparse.c +++ b/contrib/libarchive/libarchive/test/test_write_disk_sparse.c @@ -44,6 +44,8 @@ verify_write_data(struct archive *a, int sparse) buff = malloc(buff_size); assert(buff != NULL); + if (buff == NULL) + return; ae = archive_entry_new(); assert(ae != NULL); @@ -79,8 +81,11 @@ verify_write_data(struct archive *a, int sparse) assert(0 == stat(archive_entry_pathname(ae), &st)); assertEqualInt(st.st_size, 8 * buff_size); f = fopen(archive_entry_pathname(ae), "rb"); - if (!assert(f != NULL)) + assert(f != NULL); + if (f == NULL) { + free(buff); return; + } /* Check first block. */ assertEqualInt(buff_size, fread(buff, 1, buff_size, f)); @@ -136,6 +141,8 @@ verify_write_data_block(struct archive *a, int sparse) buff = malloc(buff_size); assert(buff != NULL); + if (buff == NULL) + return; ae = archive_entry_new(); assert(ae != NULL); @@ -175,8 +182,11 @@ verify_write_data_block(struct archive *a, int sparse) assert(0 == stat(archive_entry_pathname(ae), &st)); assertEqualInt(st.st_size, 8 * buff_size); f = fopen(archive_entry_pathname(ae), "rb"); - if (!assert(f != NULL)) + assert(f != NULL); + if (f == NULL) { + free(buff); return; + } /* Check 100-byte gap at beginning */ assertEqualInt(100, fread(buff, 1, 100, f)); diff --git a/contrib/libarchive/libarchive/test/test_write_filter_b64encode.c b/contrib/libarchive/libarchive/test/test_write_filter_b64encode.c new file mode 100644 index 0000000..665087b --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_write_filter_b64encode.c @@ -0,0 +1,173 @@ +/*- + * Copyright (c) 2012 Michihiro NAKAJIMA + * 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" +__FBSDID("$FreeBSD$"); + +/* + * A basic exercise of b64encode reading and writing. + */ + +DEFINE_TEST(test_write_filter_b64encode) +{ + struct archive_entry *ae; + struct archive* a; + char *buff, *data; + size_t buffsize, datasize; + char path[16]; + size_t used1, used2; + int i; + + buffsize = 2000000; + assert(NULL != (buff = (char *)malloc(buffsize))); + + datasize = 10000; + assert(NULL != (data = (char *)malloc(datasize))); + memset(data, 0, datasize); + + /* + * Write a 100 files and read them all back. + */ + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_b64encode(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_bytes_per_block(a, 10)); + assertEqualInt(ARCHIVE_FILTER_UU, archive_filter_code(a, 0)); + assertEqualString("b64encode", archive_filter_name(a, 0)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, buffsize, &used1)); + for (i = 0; i < 99; i++) { + assert((ae = archive_entry_new()) != NULL); + archive_entry_set_filetype(ae, AE_IFREG); + archive_entry_set_size(ae, datasize); + sprintf(path, "file%03d", i); + archive_entry_copy_pathname(ae, path); + assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); + assertA(datasize + == (size_t)archive_write_data(a, data, datasize)); + archive_entry_free(ae); + } + assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used1)); + for (i = 0; i < 99; i++) { + sprintf(path, "file%03d", i); + if (!assertEqualIntA(a, 0, archive_read_next_header(a, &ae))) + break; + assertEqualString(path, archive_entry_pathname(ae)); + assertEqualInt((int)datasize, archive_entry_size(ae)); + } + assertEqualInt(ARCHIVE_FILTER_UU, archive_filter_code(a, 0)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + + /* + * Repeat the cycle again, this time setting name and mode + * options. + */ + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_bytes_per_block(a, 10)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_b64encode(a)); + assertEqualIntA(a, ARCHIVE_FAILED, + archive_write_set_filter_option(a, NULL, "nonexistent-option", "0")); + assertEqualIntA(a, ARCHIVE_FAILED, + archive_write_set_filter_option(a, NULL, "compression-level", "abc")); + assertEqualIntA(a, ARCHIVE_FAILED, + archive_write_set_filter_option(a, NULL, "compression-level", "99")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "name", "test.tar")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "mode", "0640")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, buffsize, &used2)); + for (i = 0; i < 99; i++) { + sprintf(path, "file%03d", i); + assert((ae = archive_entry_new()) != NULL); + archive_entry_copy_pathname(ae, path); + archive_entry_set_size(ae, datasize); + archive_entry_set_filetype(ae, AE_IFREG); + assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); + assertA(datasize == (size_t)archive_write_data(a, data, datasize)); + archive_entry_free(ae); + } + assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used2)); + for (i = 0; i < 99; i++) { + sprintf(path, "file%03d", i); + if (!assertEqualInt(0, archive_read_next_header(a, &ae))) + break; + assertEqualString(path, archive_entry_pathname(ae)); + assertEqualInt((int)datasize, archive_entry_size(ae)); + } + assertEqualInt(ARCHIVE_FILTER_UU, archive_filter_code(a, 0)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + + /* + * Test various premature shutdown scenarios to make sure we + * don't crash or leak memory. + */ + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_b64encode(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_b64encode(a)); + assertEqualInt(ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_b64encode(a)); + assertEqualInt(ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_b64encode(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, buffsize, &used2)); + assertEqualInt(ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + /* + * Clean up. + */ + free(data); + free(buff); +} diff --git a/contrib/libarchive/libarchive/test/test_write_compress_bzip2.c b/contrib/libarchive/libarchive/test/test_write_filter_bzip2.c index 5d795b2..4f32d28 100644 --- a/contrib/libarchive/libarchive/test/test_write_compress_bzip2.c +++ b/contrib/libarchive/libarchive/test/test_write_filter_bzip2.c @@ -25,7 +25,7 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); +__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. @@ -33,7 +33,7 @@ __FBSDID("$FreeBSD$"); * TODO: Add a reference file and make sure we can decompress that. */ -DEFINE_TEST(test_write_compress_bzip2) +DEFINE_TEST(test_write_filter_bzip2) { struct archive_entry *ae; struct archive* a; @@ -41,13 +41,19 @@ DEFINE_TEST(test_write_compress_bzip2) size_t buffsize, datasize; char path[16]; size_t used1, used2; - int i, r; + int i, r, use_prog; buffsize = 2000000; assert(NULL != (buff = (char *)malloc(buffsize))); + if (buff == NULL) + return; datasize = 10000; assert(NULL != (data = (char *)malloc(datasize))); + if (data == NULL) { + free(buff); + return; + } memset(data, 0, datasize); /* @@ -55,19 +61,24 @@ DEFINE_TEST(test_write_compress_bzip2) */ assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); - r = archive_write_set_compression_bzip2(a); - if (r == ARCHIVE_FATAL) { + r = archive_write_add_filter_bzip2(a); + use_prog = (r == ARCHIVE_WARN && canBzip2()); + if (r != ARCHIVE_OK && !use_prog) { skipping("bzip2 writing not supported on this platform"); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + free(buff); + free(data); return; } + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_per_block(a, 10)); - assertEqualInt(ARCHIVE_COMPRESSION_BZIP2, archive_compression(a)); - assertEqualString("bzip2", archive_compression_name(a)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used1)); - assertEqualInt(ARCHIVE_COMPRESSION_BZIP2, archive_compression(a)); - assertEqualString("bzip2", archive_compression_name(a)); + assertEqualInt(ARCHIVE_FILTER_BZIP2, archive_filter_code(a, 0)); + assertEqualString("bzip2", archive_filter_name(a, 0)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, buffsize, &used1)); + assertEqualInt(ARCHIVE_FILTER_BZIP2, archive_filter_code(a, 0)); + assertEqualString("bzip2", archive_filter_name(a, 0)); assert((ae = archive_entry_new()) != NULL); archive_entry_set_filetype(ae, AE_IFREG); archive_entry_set_size(ae, datasize); @@ -85,7 +96,8 @@ DEFINE_TEST(test_write_compress_bzip2) assert((a = archive_read_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); - assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used1)); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_open_memory(a, buff, used1)); for (i = 0; i < 999; i++) { sprintf(path, "file%03d", i); if (!assertEqualInt(0, archive_read_next_header(a, &ae))) @@ -104,16 +116,22 @@ DEFINE_TEST(test_write_compress_bzip2) assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_per_block(a, 10)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_bzip2(a)); - assertEqualIntA(a, ARCHIVE_FAILED, - archive_write_set_filter_option(a, NULL, "nonexistent-option", "0")); - assertEqualIntA(a, ARCHIVE_FAILED, - archive_write_set_filter_option(a, NULL, "compression-level", "abc")); - assertEqualIntA(a, ARCHIVE_FAILED, - archive_write_set_filter_option(a, NULL, "compression-level", "99")); + if (use_prog) + assertEqualIntA(a, ARCHIVE_WARN, + archive_write_add_filter_bzip2(a)); + else + assertEqualIntA(a, ARCHIVE_OK, + archive_write_add_filter_bzip2(a)); + assertEqualIntA(a, ARCHIVE_FAILED, archive_write_set_filter_option(a, + NULL, "nonexistent-option", "0")); + assertEqualIntA(a, ARCHIVE_FAILED, archive_write_set_filter_option(a, + NULL, "compression-level", "abc")); + assertEqualIntA(a, ARCHIVE_FAILED, archive_write_set_filter_option(a, + NULL, "compression-level", "99")); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_filter_option(a, + NULL, "compression-level", "9")); assertEqualIntA(a, ARCHIVE_OK, - archive_write_set_filter_option(a, NULL, "compression-level", "9")); - assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2)); + archive_write_open_memory(a, buff, buffsize, &used2)); for (i = 0; i < 999; i++) { sprintf(path, "file%03d", i); assert((ae = archive_entry_new()) != NULL); @@ -121,7 +139,8 @@ DEFINE_TEST(test_write_compress_bzip2) archive_entry_set_size(ae, datasize); archive_entry_set_filetype(ae, AE_IFREG); assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); - assertA(datasize == (size_t)archive_write_data(a, data, datasize)); + assertA(datasize == (size_t)archive_write_data(a, data, + datasize)); archive_entry_free(ae); } assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); @@ -138,7 +157,8 @@ DEFINE_TEST(test_write_compress_bzip2) assert((a = archive_read_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); - assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used2)); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_open_memory(a, buff, used2)); for (i = 0; i < 999; i++) { sprintf(path, "file%03d", i); if (!assertEqualInt(0, archive_read_next_header(a, &ae))) @@ -156,10 +176,16 @@ DEFINE_TEST(test_write_compress_bzip2) assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_per_block(a, 10)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_bzip2(a)); + if (use_prog) + assertEqualIntA(a, ARCHIVE_WARN, + archive_write_add_filter_bzip2(a)); + else + assertEqualIntA(a, ARCHIVE_OK, + archive_write_add_filter_bzip2(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_filter_option(a, + NULL, "compression-level", "1")); assertEqualIntA(a, ARCHIVE_OK, - archive_write_set_filter_option(a, NULL, "compression-level", "1")); - assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2)); + archive_write_open_memory(a, buff, buffsize, &used2)); for (i = 0; i < 999; i++) { sprintf(path, "file%03d", i); assert((ae = archive_entry_new()) != NULL); @@ -183,7 +209,8 @@ DEFINE_TEST(test_write_compress_bzip2) assert((a = archive_read_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); - assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used2)); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_open_memory(a, buff, used2)); for (i = 0; i < 999; i++) { sprintf(path, "file%03d", i); if (!assertEqualInt(0, archive_read_next_header(a, &ae))) @@ -199,24 +226,45 @@ DEFINE_TEST(test_write_compress_bzip2) * don't crash or leak memory. */ assert((a = archive_write_new()) != NULL); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_bzip2(a)); + if (use_prog) + assertEqualIntA(a, ARCHIVE_WARN, + archive_write_add_filter_bzip2(a)); + else + assertEqualIntA(a, ARCHIVE_OK, + archive_write_add_filter_bzip2(a)); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); assert((a = archive_write_new()) != NULL); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_bzip2(a)); + if (use_prog) + assertEqualIntA(a, ARCHIVE_WARN, + archive_write_add_filter_bzip2(a)); + else + assertEqualIntA(a, ARCHIVE_OK, + archive_write_add_filter_bzip2(a)); assertEqualInt(ARCHIVE_OK, archive_write_close(a)); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_bzip2(a)); + if (use_prog) + assertEqualIntA(a, ARCHIVE_WARN, + archive_write_add_filter_bzip2(a)); + else + assertEqualIntA(a, ARCHIVE_OK, + archive_write_add_filter_bzip2(a)); assertEqualInt(ARCHIVE_OK, archive_write_close(a)); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_bzip2(a)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2)); + if (use_prog) + assertEqualIntA(a, ARCHIVE_WARN, + archive_write_add_filter_bzip2(a)); + else + assertEqualIntA(a, ARCHIVE_OK, + archive_write_add_filter_bzip2(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, buffsize, &used2)); assertEqualInt(ARCHIVE_OK, archive_write_close(a)); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); diff --git a/contrib/libarchive/libarchive/test/test_write_compress.c b/contrib/libarchive/libarchive/test/test_write_filter_compress.c index a510a3b..1b8910e 100644 --- a/contrib/libarchive/libarchive/test/test_write_compress.c +++ b/contrib/libarchive/libarchive/test/test_write_filter_compress.c @@ -25,7 +25,7 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); +__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. @@ -33,7 +33,7 @@ __FBSDID("$FreeBSD$"); * TODO: Add a reference file and make sure we can decompress that. */ -DEFINE_TEST(test_write_compress) +DEFINE_TEST(test_write_filter_compress) { struct archive_entry *ae; struct archive* a; @@ -54,7 +54,7 @@ DEFINE_TEST(test_write_compress) assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); assertEqualIntA(a, ARCHIVE_OK, - archive_write_set_compression_compress(a)); + archive_write_add_filter_compress(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used)); diff --git a/contrib/libarchive/libarchive/test/test_write_compress_gzip.c b/contrib/libarchive/libarchive/test/test_write_filter_gzip.c index 442ef31..7bbdb12 100644 --- a/contrib/libarchive/libarchive/test/test_write_compress_gzip.c +++ b/contrib/libarchive/libarchive/test/test_write_filter_gzip.c @@ -25,7 +25,7 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); +__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. @@ -33,7 +33,7 @@ __FBSDID("$FreeBSD$"); * TODO: Add a reference file and make sure we can decompress that. */ -DEFINE_TEST(test_write_compress_gzip) +DEFINE_TEST(test_write_filter_gzip) { struct archive_entry *ae; struct archive* a; @@ -41,13 +41,19 @@ DEFINE_TEST(test_write_compress_gzip) size_t buffsize, datasize; char path[16]; size_t used1, used2; - int i, r; + int i, r, use_prog = 0; buffsize = 2000000; assert(NULL != (buff = (char *)malloc(buffsize))); + if (buff == NULL) + return; datasize = 10000; assert(NULL != (data = (char *)malloc(datasize))); + if (data == NULL) { + free(buff); + return; + } memset(data, 0, datasize); /* @@ -55,21 +61,24 @@ DEFINE_TEST(test_write_compress_gzip) */ assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); - assertEqualIntA(a, ARCHIVE_OK, - archive_write_set_compression_compress(a)); - r = archive_write_set_compression_gzip(a); - if (r == ARCHIVE_FATAL) { - skipping("gzip writing not supported on this platform"); - assertEqualInt(ARCHIVE_OK, archive_write_free(a)); - return; + r = archive_write_add_filter_gzip(a); + if (r != ARCHIVE_OK) { + if (canGzip() && r == ARCHIVE_WARN) + use_prog = 1; + else { + skipping("gzip writing not supported on this platform"); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + free(buff); + free(data); + return; + } } assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_per_block(a, 10)); - assertEqualInt(ARCHIVE_COMPRESSION_GZIP, archive_compression(a)); - assertEqualString("gzip", archive_compression_name(a)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used1)); - assertEqualInt(ARCHIVE_COMPRESSION_GZIP, archive_compression(a)); - assertEqualString("gzip", archive_compression_name(a)); + assertEqualInt(ARCHIVE_FILTER_GZIP, archive_filter_code(a, 0)); + assertEqualString("gzip", archive_filter_name(a, 0)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, buffsize, &used1)); assert((ae = archive_entry_new()) != NULL); archive_entry_set_filetype(ae, AE_IFREG); archive_entry_set_size(ae, datasize); @@ -113,11 +122,12 @@ DEFINE_TEST(test_write_compress_gzip) assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_per_block(a, 10)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_gzip(a)); + assertEqualIntA(a, (use_prog)?ARCHIVE_WARN:ARCHIVE_OK, + archive_write_add_filter_gzip(a)); assertEqualIntA(a, ARCHIVE_FAILED, archive_write_set_options(a, "gzip:nonexistent-option=0")); assertEqualIntA(a, ARCHIVE_OK, - archive_write_set_options(a, "gzip:compression-level=0")); + archive_write_set_options(a, "gzip:compression-level=1")); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_filter_option(a, NULL, "compression-level", "9")); assertEqualIntA(a, ARCHIVE_FAILED, @@ -151,7 +161,7 @@ DEFINE_TEST(test_write_compress_gzip) assert((a = archive_read_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); r = archive_read_support_filter_gzip(a); - if (r == ARCHIVE_WARN) { + if (r != ARCHIVE_OK && !use_prog) { skipping("gzip reading not fully supported on this platform"); } else { assertEqualIntA(a, ARCHIVE_OK, @@ -177,10 +187,12 @@ DEFINE_TEST(test_write_compress_gzip) assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_per_block(a, 10)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_gzip(a)); + assertEqualIntA(a, (use_prog)?ARCHIVE_WARN:ARCHIVE_OK, + archive_write_add_filter_gzip(a)); assertEqualIntA(a, ARCHIVE_OK, - archive_write_set_filter_option(a, NULL, "compression-level", "0")); - assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2)); + archive_write_set_filter_option(a, NULL, "compression-level", "1")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, buffsize, &used2)); for (i = 0; i < 100; i++) { sprintf(path, "file%03d", i); assert((ae = archive_entry_new()) != NULL); @@ -196,8 +208,8 @@ DEFINE_TEST(test_write_compress_gzip) assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); - /* Level 0 really does result in larger data. */ - failure("Compression-level=0 wrote %d bytes; default wrote %d bytes", + /* Level 1 really does result in larger data. */ + failure("Compression-level=1 wrote %d bytes; default wrote %d bytes", (int)used2, (int)used1); assert(used2 > used1); @@ -227,23 +239,27 @@ DEFINE_TEST(test_write_compress_gzip) * don't crash or leak memory. */ assert((a = archive_write_new()) != NULL); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_gzip(a)); + assertEqualIntA(a, (use_prog)?ARCHIVE_WARN:ARCHIVE_OK, + archive_write_add_filter_gzip(a)); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); assert((a = archive_write_new()) != NULL); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_gzip(a)); + assertEqualIntA(a, (use_prog)?ARCHIVE_WARN:ARCHIVE_OK, + archive_write_add_filter_gzip(a)); assertEqualInt(ARCHIVE_OK, archive_write_close(a)); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_gzip(a)); + assertEqualIntA(a, (use_prog)?ARCHIVE_WARN:ARCHIVE_OK, + archive_write_add_filter_gzip(a)); assertEqualInt(ARCHIVE_OK, archive_write_close(a)); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_gzip(a)); + assertEqualIntA(a, (use_prog)?ARCHIVE_WARN:ARCHIVE_OK, + archive_write_add_filter_gzip(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2)); assertEqualInt(ARCHIVE_OK, archive_write_close(a)); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); diff --git a/contrib/libarchive/libarchive/test/test_write_filter_gzip_timestamp.c b/contrib/libarchive/libarchive/test/test_write_filter_gzip_timestamp.c new file mode 100644 index 0000000..23b11db --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_write_filter_gzip_timestamp.c @@ -0,0 +1,118 @@ +/*- + * Copyright (c) 2007 Tim Kientzle + * Copyright (c) 2012 Michihiro NAKAJIMA + * 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" +__FBSDID("$FreeBSD$"); + +DEFINE_TEST(test_write_filter_gzip_timestamp) +{ + struct archive_entry *ae; + struct archive* a; + char *buff, *data; + size_t buffsize, datasize; + size_t used1; + int r, use_prog = 0; + + buffsize = 10000; + assert(NULL != (buff = (char *)malloc(buffsize))); + if (buff == NULL) + return; + + datasize = 10000; + assert(NULL != (data = (char *)malloc(datasize))); + if (data == NULL) { + free(buff); + return; + } + memset(data, 0, datasize); + + /* Test1: set "gzip:timestamp" option. */ + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); + r = archive_write_add_filter_gzip(a); + if (r != ARCHIVE_OK) { + if (canGzip() && r == ARCHIVE_WARN) + use_prog = 1; + else { + skipping("gzip writing not supported on this platform"); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + free(buff); + free(data); + return; + } + } + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_options(a, "gzip:timestamp")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_bytes_per_block(a, 10)); + assertEqualInt(ARCHIVE_FILTER_GZIP, archive_filter_code(a, 0)); + assertEqualString("gzip", archive_filter_name(a, 0)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, buffsize, &used1)); + assert((ae = archive_entry_new()) != NULL); + archive_entry_set_filetype(ae, AE_IFREG); + archive_entry_set_size(ae, datasize); + archive_entry_copy_pathname(ae, "file"); + assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); + assertEqualIntA(a, datasize, archive_write_data(a, data, datasize)); + archive_entry_free(ae); + assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + failure("Timestamp should be recorded"); + assert(memcmp(buff + 4, "\x00\x00\x00\x00", 4) != 0); + + /* Test2: set "gzip:!timestamp" option. */ + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); + assertEqualIntA(a, (use_prog)?ARCHIVE_WARN:ARCHIVE_OK, + archive_write_add_filter_gzip(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_options(a, "gzip:!timestamp")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_bytes_per_block(a, 10)); + assertEqualInt(ARCHIVE_FILTER_GZIP, archive_filter_code(a, 0)); + assertEqualString("gzip", archive_filter_name(a, 0)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, buffsize, &used1)); + assert((ae = archive_entry_new()) != NULL); + archive_entry_set_filetype(ae, AE_IFREG); + archive_entry_set_size(ae, datasize); + archive_entry_copy_pathname(ae, "file"); + assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); + assertEqualIntA(a, datasize, archive_write_data(a, data, datasize)); + archive_entry_free(ae); + assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + failure("Timestamp should not be recorded"); + assertEqualMem(buff + 4, "\x00\x00\x00\x00", 4); + + /* + * Clean up. + */ + free(data); + free(buff); +} diff --git a/contrib/libarchive/libarchive/test/test_write_filter_lrzip.c b/contrib/libarchive/libarchive/test/test_write_filter_lrzip.c new file mode 100644 index 0000000..f28c835 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_write_filter_lrzip.c @@ -0,0 +1,131 @@ +/*- + * Copyright (c) 2007 Tim Kientzle + * 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" + +/* + * A basic exercise of lrzip reading and writing. + */ + +DEFINE_TEST(test_write_filter_lrzip) +{ + struct archive_entry *ae; + struct archive* a; + char *buff, *data; + size_t buffsize, datasize; + char path[16]; + size_t used1, used2; + int i; + + if (!canLrzip()) { + skipping("lrzip command-line program not found"); + return; + } + + buffsize = 2000000; + assert(NULL != (buff = (char *)malloc(buffsize))); + + datasize = 10000; + assert(NULL != (data = (char *)malloc(datasize))); + memset(data, 0, datasize); + + /* + * Write 100 files and read them all back. + */ + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_gnutar(a)); + assertEqualIntA(a, ARCHIVE_WARN, archive_write_add_filter_lrzip(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_bytes_per_block(a, 10)); + assertEqualInt(ARCHIVE_FILTER_LRZIP, archive_filter_code(a, 0)); + assertEqualString("lrzip", archive_filter_name(a, 0)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, buffsize, &used1)); + assert((ae = archive_entry_new()) != NULL); + archive_entry_set_filetype(ae, AE_IFREG); + archive_entry_set_size(ae, datasize); + for (i = 0; i < 100; i++) { + sprintf(path, "file%03d", i); + archive_entry_copy_pathname(ae, path); + assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); + assertA(datasize + == (size_t)archive_write_data(a, data, datasize)); + } + archive_entry_free(ae); + assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_WARN, archive_read_support_filter_lrzip(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_open_memory(a, buff, used1)); + for (i = 0; i < 100; i++) { + sprintf(path, "file%03d", i); + if (!assertEqualInt(ARCHIVE_OK, + archive_read_next_header(a, &ae))) + break; + assertEqualString(path, archive_entry_pathname(ae)); + assertEqualInt((int)datasize, archive_entry_size(ae)); + } + assertEqualInt(ARCHIVE_FILTER_LRZIP, archive_filter_code(a, 0)); + assertEqualString("lrzip", archive_filter_name(a, 0)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + + /* + * Test various premature shutdown scenarios to make sure we + * don't crash or leak memory. + */ + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_WARN, archive_write_add_filter_lrzip(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_WARN, archive_write_add_filter_lrzip(a)); + assertEqualInt(ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); + assertEqualIntA(a, ARCHIVE_WARN, archive_write_add_filter_lrzip(a)); + assertEqualInt(ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); + assertEqualIntA(a, ARCHIVE_WARN, archive_write_add_filter_lrzip(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, buffsize, &used2)); + assertEqualInt(ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + /* + * Clean up. + */ + free(data); + free(buff); +} diff --git a/contrib/libarchive/libarchive/test/test_write_compress_lzip.c b/contrib/libarchive/libarchive/test/test_write_filter_lzip.c index 7dd8bcf..145a308 100644 --- a/contrib/libarchive/libarchive/test/test_write_compress_lzip.c +++ b/contrib/libarchive/libarchive/test/test_write_filter_lzip.c @@ -33,7 +33,7 @@ __FBSDID("$FreeBSD$"); * */ -DEFINE_TEST(test_write_compress_lzip) +DEFINE_TEST(test_write_filter_lzip) { struct archive_entry *ae; struct archive* a; @@ -45,9 +45,15 @@ DEFINE_TEST(test_write_compress_lzip) buffsize = 2000000; assert(NULL != (buff = (char *)malloc(buffsize))); + if (buff == NULL) + return; datasize = 10000; assert(NULL != (data = (char *)malloc(datasize))); + if (data == NULL) { + free(buff); + return; + } memset(data, 0, datasize); /* @@ -55,20 +61,22 @@ DEFINE_TEST(test_write_compress_lzip) */ assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); - r = archive_write_set_compression_lzip(a); + r = archive_write_add_filter_lzip(a); if (r == ARCHIVE_FATAL) { skipping("lzip writing not supported on this platform"); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + free(buff); + free(data); return; } assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_per_block(a, 10)); - assertEqualInt(ARCHIVE_COMPRESSION_LZIP, archive_compression(a)); - assertEqualString("lzip", archive_compression_name(a)); + assertEqualInt(ARCHIVE_FILTER_LZIP, archive_filter_code(a, 0)); + assertEqualString("lzip", archive_filter_name(a, 0)); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used1)); - assertEqualInt(ARCHIVE_COMPRESSION_LZIP, archive_compression(a)); - assertEqualString("lzip", archive_compression_name(a)); + assertEqualInt(ARCHIVE_FILTER_LZIP, archive_filter_code(a, 0)); + assertEqualString("lzip", archive_filter_name(a, 0)); assert((ae = archive_entry_new()) != NULL); archive_entry_set_filetype(ae, AE_IFREG); archive_entry_set_size(ae, datasize); @@ -114,7 +122,7 @@ DEFINE_TEST(test_write_compress_lzip) assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_per_block(a, 10)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_lzip(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_lzip(a)); assertEqualIntA(a, ARCHIVE_FAILED, archive_write_set_filter_option(a, NULL, "nonexistent-option", "0")); assertEqualIntA(a, ARCHIVE_FAILED, @@ -168,7 +176,7 @@ DEFINE_TEST(test_write_compress_lzip) assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_per_block(a, 10)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_lzip(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_lzip(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_filter_option(a, NULL, "compression-level", "0")); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2)); @@ -218,23 +226,23 @@ DEFINE_TEST(test_write_compress_lzip) * don't crash or leak memory. */ assert((a = archive_write_new()) != NULL); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_lzip(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_lzip(a)); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); assert((a = archive_write_new()) != NULL); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_lzip(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_lzip(a)); assertEqualInt(ARCHIVE_OK, archive_write_close(a)); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_lzip(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_lzip(a)); assertEqualInt(ARCHIVE_OK, archive_write_close(a)); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_lzip(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_lzip(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2)); assertEqualInt(ARCHIVE_OK, archive_write_close(a)); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); diff --git a/contrib/libarchive/libarchive/test/test_write_compress_lzma.c b/contrib/libarchive/libarchive/test/test_write_filter_lzma.c index bd3c353..68e4898 100644 --- a/contrib/libarchive/libarchive/test/test_write_compress_lzma.c +++ b/contrib/libarchive/libarchive/test/test_write_filter_lzma.c @@ -25,14 +25,14 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); +__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. * */ -DEFINE_TEST(test_write_compress_lzma) +DEFINE_TEST(test_write_filter_lzma) { struct archive_entry *ae; struct archive* a; @@ -44,9 +44,15 @@ DEFINE_TEST(test_write_compress_lzma) buffsize = 2000000; assert(NULL != (buff = (char *)malloc(buffsize))); + if (buff == NULL) + return; datasize = 10000; assert(NULL != (data = (char *)malloc(datasize))); + if (data == NULL) { + free(buff); + return; + } memset(data, 0, datasize); /* @@ -54,20 +60,22 @@ DEFINE_TEST(test_write_compress_lzma) */ assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); - r = archive_write_set_compression_lzma(a); + r = archive_write_add_filter_lzma(a); if (r == ARCHIVE_FATAL) { skipping("lzma writing not supported on this platform"); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + free(buff); + free(data); return; } assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_per_block(a, 10)); - assertEqualInt(ARCHIVE_COMPRESSION_LZMA, archive_compression(a)); - assertEqualString("lzma", archive_compression_name(a)); + assertEqualInt(ARCHIVE_FILTER_LZMA, archive_filter_code(a, 0)); + assertEqualString("lzma", archive_filter_name(a, 0)); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used1)); - assertEqualInt(ARCHIVE_COMPRESSION_LZMA, archive_compression(a)); - assertEqualString("lzma", archive_compression_name(a)); + assertEqualInt(ARCHIVE_FILTER_LZMA, archive_filter_code(a, 0)); + assertEqualString("lzma", archive_filter_name(a, 0)); assert((ae = archive_entry_new()) != NULL); archive_entry_set_filetype(ae, AE_IFREG); archive_entry_set_size(ae, datasize); @@ -113,7 +121,7 @@ DEFINE_TEST(test_write_compress_lzma) assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_per_block(a, 10)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_lzma(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_lzma(a)); assertEqualIntA(a, ARCHIVE_FAILED, archive_write_set_filter_option(a, NULL, "nonexistent-option", "0")); assertEqualIntA(a, ARCHIVE_FAILED, @@ -167,7 +175,7 @@ DEFINE_TEST(test_write_compress_lzma) assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_per_block(a, 10)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_lzma(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_lzma(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_filter_option(a, NULL, "compression-level", "0")); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2)); @@ -222,23 +230,23 @@ DEFINE_TEST(test_write_compress_lzma) * don't crash or leak memory. */ assert((a = archive_write_new()) != NULL); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_lzma(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_lzma(a)); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); assert((a = archive_write_new()) != NULL); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_lzma(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_lzma(a)); assertEqualInt(ARCHIVE_OK, archive_write_close(a)); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_lzma(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_lzma(a)); assertEqualInt(ARCHIVE_OK, archive_write_close(a)); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_lzma(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_lzma(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2)); assertEqualInt(ARCHIVE_OK, archive_write_close(a)); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); diff --git a/contrib/libarchive/libarchive/test/test_write_filter_lzop.c b/contrib/libarchive/libarchive/test/test_write_filter_lzop.c new file mode 100644 index 0000000..9e840bd --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_write_filter_lzop.c @@ -0,0 +1,267 @@ +/*- + * Copyright (c) 2012 Michihiro NAKAJIMA + * 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" +__FBSDID("$FreeBSD$"); + +/* + * A basic exercise of lzop reading and writing. + */ + +DEFINE_TEST(test_write_filter_lzop) +{ + struct archive_entry *ae; + struct archive* a; + char *buff, *data; + size_t buffsize, datasize; + char path[16]; + size_t used1, used2; + int i, r, use_prog = 0; + + assert((a = archive_write_new()) != NULL); + r = archive_write_add_filter_lzop(a); + if (r != ARCHIVE_OK) { + if (canLzop() && r == ARCHIVE_WARN) + use_prog = 1; + else { + skipping("lzop writing not supported on this platform"); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + return; + } + } + + buffsize = 2000000; + assert(NULL != (buff = (char *)malloc(buffsize))); + + datasize = 10000; + assert(NULL != (data = (char *)calloc(1, datasize))); + + /* + * Write a 100 files and read them all back. + */ + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); + assertEqualIntA(a, (use_prog)?ARCHIVE_WARN:ARCHIVE_OK, + archive_write_add_filter_lzop(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_bytes_per_block(a, 1024)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_bytes_in_last_block(a, 1024)); + assertEqualInt(ARCHIVE_FILTER_LZOP, archive_filter_code(a, 0)); + assertEqualString("lzop", archive_filter_name(a, 0)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, buffsize, &used1)); + assert((ae = archive_entry_new()) != NULL); + archive_entry_set_filetype(ae, AE_IFREG); + archive_entry_set_size(ae, datasize); + for (i = 0; i < 100; i++) { + sprintf(path, "file%03d", i); + archive_entry_copy_pathname(ae, path); + assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); + assertA(datasize + == (size_t)archive_write_data(a, data, datasize)); + } + archive_entry_free(ae); + assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + r = archive_read_support_filter_lzop(a); + if (r == ARCHIVE_WARN) { + skipping("Can't verify lzop writing by reading back;" + " lzop reading not fully supported on this platform"); + } else { + assertEqualIntA(a, ARCHIVE_OK, + archive_read_open_memory(a, buff, used1)); + for (i = 0; i < 100; i++) { + sprintf(path, "file%03d", i); + if (!assertEqualInt(ARCHIVE_OK, + archive_read_next_header(a, &ae))) + break; + assertEqualString(path, archive_entry_pathname(ae)); + assertEqualInt((int)datasize, archive_entry_size(ae)); + } + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + } + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + + /* + * Repeat the cycle again, this time setting some compression + * options. + */ + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_bytes_per_block(a, 10)); + assertEqualIntA(a, (use_prog)?ARCHIVE_WARN:ARCHIVE_OK, + archive_write_add_filter_lzop(a)); + assertEqualIntA(a, ARCHIVE_FAILED, + archive_write_set_options(a, "lzop:nonexistent-option=0")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_options(a, "lzop:compression-level=1")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "compression-level", "9")); + assertEqualIntA(a, ARCHIVE_FAILED, + archive_write_set_filter_option(a, NULL, "compression-level", "abc")); + assertEqualIntA(a, ARCHIVE_FAILED, + archive_write_set_filter_option(a, NULL, "compression-level", "99")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_options(a, "lzop:compression-level=9")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, buffsize, &used2)); + for (i = 0; i < 100; i++) { + sprintf(path, "file%03d", i); + assert((ae = archive_entry_new()) != NULL); + archive_entry_copy_pathname(ae, path); + archive_entry_set_size(ae, datasize); + archive_entry_set_filetype(ae, AE_IFREG); + assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); + assertA(datasize == (size_t)archive_write_data( + a, data, datasize)); + archive_entry_free(ae); + } + assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + failure("compression-level=9 wrote %d bytes, default wrote %d bytes", + (int)used2, (int)used1); + assert(used2 < used1); + + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + r = archive_read_support_filter_lzop(a); + if (r != ARCHIVE_OK && !use_prog) { + skipping("lzop reading not fully supported on this platform"); + } else { + assertEqualIntA(a, ARCHIVE_OK, + archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_open_memory(a, buff, used2)); + for (i = 0; i < 100; i++) { + sprintf(path, "file%03d", i); + if (!assertEqualInt(ARCHIVE_OK, + archive_read_next_header(a, &ae))) + break; + assertEqualString(path, archive_entry_pathname(ae)); + assertEqualInt((int)datasize, archive_entry_size(ae)); + } + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + } + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + + /* + * Repeat again, with much lower compression. + */ + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_bytes_per_block(a, 10)); + assertEqualIntA(a, (use_prog)?ARCHIVE_WARN:ARCHIVE_OK, + archive_write_add_filter_lzop(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "compression-level", "1")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, buffsize, &used2)); + for (i = 0; i < 100; i++) { + sprintf(path, "file%03d", i); + assert((ae = archive_entry_new()) != NULL); + archive_entry_copy_pathname(ae, path); + archive_entry_set_size(ae, datasize); + archive_entry_set_filetype(ae, AE_IFREG); + assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); + failure("Writing file %s", path); + assertEqualIntA(a, datasize, + (size_t)archive_write_data(a, data, datasize)); + archive_entry_free(ae); + } + assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + +#if 0 + failure("Compression-level=1 wrote %d bytes; default wrote %d bytes", + (int)used2, (int)used1); + assert(used2 > used1); +#endif + + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + r = archive_read_support_filter_lzop(a); + if (r == ARCHIVE_WARN) { + skipping("lzop reading not fully supported on this platform"); + } else { + assertEqualIntA(a, ARCHIVE_OK, + archive_read_open_memory(a, buff, used2)); + for (i = 0; i < 100; i++) { + sprintf(path, "file%03d", i); + if (!assertEqualInt(ARCHIVE_OK, + archive_read_next_header(a, &ae))) + break; + assertEqualString(path, archive_entry_pathname(ae)); + assertEqualInt((int)datasize, archive_entry_size(ae)); + } + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + } + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + + /* + * Test various premature shutdown scenarios to make sure we + * don't crash or leak memory. + */ + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, (use_prog)?ARCHIVE_WARN:ARCHIVE_OK, + archive_write_add_filter_lzop(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, (use_prog)?ARCHIVE_WARN:ARCHIVE_OK, + archive_write_add_filter_lzop(a)); + assertEqualInt(ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); + assertEqualIntA(a, (use_prog)?ARCHIVE_WARN:ARCHIVE_OK, + archive_write_add_filter_lzop(a)); + assertEqualInt(ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); + assertEqualIntA(a, (use_prog)?ARCHIVE_WARN:ARCHIVE_OK, + archive_write_add_filter_lzop(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, buffsize, &used2)); + assertEqualInt(ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + /* + * Clean up. + */ + free(data); + free(buff); +} diff --git a/contrib/libarchive/libarchive/test/test_write_compress_program.c b/contrib/libarchive/libarchive/test/test_write_filter_program.c index 026e6c2..c156b6d 100644 --- a/contrib/libarchive/libarchive/test/test_write_compress_program.c +++ b/contrib/libarchive/libarchive/test/test_write_filter_program.c @@ -1,5 +1,6 @@ /*- * Copyright (c) 2003-2007 Tim Kientzle + * Copyright (c) 2012 Michihiro NAKAJIMA * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -23,12 +24,12 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "test.h" -__FBSDID("$FreeBSD$"); +__FBSDID("$FreeBSD: head/lib/libarchive/test/test_write_compress_program.c 201247 2009-12-30 05:59:21Z kientzle $"); char buff[1000000]; char buff2[64]; -DEFINE_TEST(test_write_compress_program) +DEFINE_TEST(test_write_filter_program) { struct archive_entry *ae; struct archive *a; @@ -46,7 +47,7 @@ DEFINE_TEST(test_write_compress_program) * yield the extra bytes when using gunzip. */ assert((a = archive_read_new()) != NULL); r = archive_read_support_filter_gzip(a); - if (r != ARCHIVE_OK && canGunzip()) + if (r != ARCHIVE_OK && canGzip()) blocksize = 1; assertEqualInt(ARCHIVE_OK, archive_read_free(a)); @@ -54,7 +55,7 @@ DEFINE_TEST(test_write_compress_program) /* Write it through an external "gzip" program. */ assert((a = archive_write_new()) != NULL); assertA(0 == archive_write_set_format_ustar(a)); - r = archive_write_set_compression_program(a, "gzip"); + r = archive_write_add_filter_program(a, "gzip -6"); if (r == ARCHIVE_FATAL) { skipping("Write compression via external " "program unsupported on this platform"); @@ -94,7 +95,7 @@ DEFINE_TEST(test_write_compress_program) /* The compression_gzip() handler will fall back to gunzip * automatically, but if we know gunzip isn't available, then * skip the rest. */ - if (r != ARCHIVE_OK && !canGunzip()) { + if (r != ARCHIVE_OK && !canGzip()) { skipping("No libz and no gunzip program, " "unable to verify gzip compression"); assertEqualInt(ARCHIVE_OK, archive_read_free(a)); diff --git a/contrib/libarchive/libarchive/test/test_write_filter_uuencode.c b/contrib/libarchive/libarchive/test/test_write_filter_uuencode.c new file mode 100644 index 0000000..57a4b49 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_write_filter_uuencode.c @@ -0,0 +1,173 @@ +/*- + * Copyright (c) 2012 Michihiro NAKAJIMA + * 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" +__FBSDID("$FreeBSD$"); + +/* + * A basic exercise of uuencode reading and writing. + */ + +DEFINE_TEST(test_write_filter_uuencode) +{ + struct archive_entry *ae; + struct archive* a; + char *buff, *data; + size_t buffsize, datasize; + char path[16]; + size_t used1, used2; + int i; + + buffsize = 2000000; + assert(NULL != (buff = (char *)malloc(buffsize))); + + datasize = 10000; + assert(NULL != (data = (char *)malloc(datasize))); + memset(data, 0, datasize); + + /* + * Write a 100 files and read them all back. + */ + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_uuencode(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_bytes_per_block(a, 10)); + assertEqualInt(ARCHIVE_FILTER_UU, archive_filter_code(a, 0)); + assertEqualString("uuencode", archive_filter_name(a, 0)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, buffsize, &used1)); + for (i = 0; i < 99; i++) { + assert((ae = archive_entry_new()) != NULL); + archive_entry_set_filetype(ae, AE_IFREG); + archive_entry_set_size(ae, datasize); + sprintf(path, "file%03d", i); + archive_entry_copy_pathname(ae, path); + assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); + assertA(datasize + == (size_t)archive_write_data(a, data, datasize)); + archive_entry_free(ae); + } + assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used1)); + for (i = 0; i < 99; i++) { + sprintf(path, "file%03d", i); + if (!assertEqualIntA(a, 0, archive_read_next_header(a, &ae))) + break; + assertEqualString(path, archive_entry_pathname(ae)); + assertEqualInt((int)datasize, archive_entry_size(ae)); + } + assertEqualInt(ARCHIVE_FILTER_UU, archive_filter_code(a, 0)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + + /* + * Repeat the cycle again, this time setting name and mode + * options. + */ + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_bytes_per_block(a, 10)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_uuencode(a)); + assertEqualIntA(a, ARCHIVE_FAILED, + archive_write_set_filter_option(a, NULL, "nonexistent-option", "0")); + assertEqualIntA(a, ARCHIVE_FAILED, + archive_write_set_filter_option(a, NULL, "compression-level", "abc")); + assertEqualIntA(a, ARCHIVE_FAILED, + archive_write_set_filter_option(a, NULL, "compression-level", "99")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "name", "test.tar")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_filter_option(a, NULL, "mode", "0640")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, buffsize, &used2)); + for (i = 0; i < 99; i++) { + sprintf(path, "file%03d", i); + assert((ae = archive_entry_new()) != NULL); + archive_entry_copy_pathname(ae, path); + archive_entry_set_size(ae, datasize); + archive_entry_set_filetype(ae, AE_IFREG); + assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); + assertA(datasize == (size_t)archive_write_data(a, data, datasize)); + archive_entry_free(ae); + } + assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used2)); + for (i = 0; i < 99; i++) { + sprintf(path, "file%03d", i); + if (!assertEqualInt(0, archive_read_next_header(a, &ae))) + break; + assertEqualString(path, archive_entry_pathname(ae)); + assertEqualInt((int)datasize, archive_entry_size(ae)); + } + assertEqualInt(ARCHIVE_FILTER_UU, archive_filter_code(a, 0)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + + /* + * Test various premature shutdown scenarios to make sure we + * don't crash or leak memory. + */ + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_uuencode(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_uuencode(a)); + assertEqualInt(ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_uuencode(a)); + assertEqualInt(ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_uuencode(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, buffsize, &used2)); + assertEqualInt(ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + /* + * Clean up. + */ + free(data); + free(buff); +} diff --git a/contrib/libarchive/libarchive/test/test_write_compress_xz.c b/contrib/libarchive/libarchive/test/test_write_filter_xz.c index b49a874..bf1265c 100644 --- a/contrib/libarchive/libarchive/test/test_write_compress_xz.c +++ b/contrib/libarchive/libarchive/test/test_write_filter_xz.c @@ -25,7 +25,7 @@ */ #include "test.h" -__FBSDID("$FreeBSD$"); +__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. @@ -33,7 +33,7 @@ __FBSDID("$FreeBSD$"); * TODO: Add a reference file and make sure we can decompress that. */ -DEFINE_TEST(test_write_compress_xz) +DEFINE_TEST(test_write_filter_xz) { struct archive_entry *ae; struct archive* a; @@ -45,9 +45,15 @@ DEFINE_TEST(test_write_compress_xz) buffsize = 2000000; assert(NULL != (buff = (char *)malloc(buffsize))); + if (buff == NULL) + return; datasize = 10000; assert(NULL != (data = (char *)malloc(datasize))); + if (data == NULL) { + free(buff); + return; + } memset(data, 0, datasize); /* @@ -55,19 +61,21 @@ DEFINE_TEST(test_write_compress_xz) */ assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); - r = archive_write_set_compression_xz(a); + r = archive_write_add_filter_xz(a); if (r == ARCHIVE_FATAL) { skipping("xz writing not supported on this platform"); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + free(buff); + free(data); return; } assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_per_block(a, 10)); - assertEqualInt(ARCHIVE_COMPRESSION_XZ, archive_compression(a)); - assertEqualString("xz", archive_compression_name(a)); + assertEqualInt(ARCHIVE_FILTER_XZ, archive_filter_code(a, 0)); + assertEqualString("xz", archive_filter_name(a, 0)); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used1)); - assertEqualInt(ARCHIVE_COMPRESSION_XZ, archive_compression(a)); - assertEqualString("xz", archive_compression_name(a)); + assertEqualInt(ARCHIVE_FILTER_XZ, archive_filter_code(a, 0)); + assertEqualString("xz", archive_filter_name(a, 0)); assert((ae = archive_entry_new()) != NULL); archive_entry_set_filetype(ae, AE_IFREG); archive_entry_set_size(ae, datasize); @@ -113,7 +121,7 @@ DEFINE_TEST(test_write_compress_xz) assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_per_block(a, 10)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_xz(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_xz(a)); assertEqualIntA(a, ARCHIVE_FAILED, archive_write_set_filter_option(a, NULL, "nonexistent-option", "0")); assertEqualIntA(a, ARCHIVE_FAILED, @@ -174,7 +182,7 @@ DEFINE_TEST(test_write_compress_xz) assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_per_block(a, 10)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_xz(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_xz(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_filter_option(a, NULL, "compression-level", "0")); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2)); @@ -228,23 +236,23 @@ DEFINE_TEST(test_write_compress_xz) * don't crash or leak memory. */ assert((a = archive_write_new()) != NULL); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_xz(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_xz(a)); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); assert((a = archive_write_new()) != NULL); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_xz(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_xz(a)); assertEqualInt(ARCHIVE_OK, archive_write_close(a)); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_xz(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_xz(a)); assertEqualInt(ARCHIVE_OK, archive_write_close(a)); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_xz(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_xz(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2)); assertEqualInt(ARCHIVE_OK, archive_write_close(a)); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); diff --git a/contrib/libarchive/libarchive/test/test_write_format_7zip.c b/contrib/libarchive/libarchive/test/test_write_format_7zip.c index b0f0a68..c8fdcd0 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_7zip.c +++ b/contrib/libarchive/libarchive/test/test_write_format_7zip.c @@ -51,7 +51,7 @@ test_basic(const char *compression_type) free(buff); return; } - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_none(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used)); @@ -308,7 +308,7 @@ test_basic(const char *compression_type) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a)); assertEqualInt(ARCHIVE_OK, archive_read_close(a)); @@ -341,7 +341,7 @@ test_basic2(const char *compression_type) free(buff); return; } - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_none(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used)); @@ -515,7 +515,7 @@ test_basic2(const char *compression_type) assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a)); assertEqualInt(ARCHIVE_OK, archive_read_close(a)); @@ -524,293 +524,47 @@ test_basic2(const char *compression_type) free(buff); } -/* - * Test writing an empty archive. - */ -static void -test_empty_archive(void) +DEFINE_TEST(test_write_format_7zip) { - struct archive *a; - size_t buffsize = 1000; - char *buff; - size_t used; - - buff = malloc(buffsize); - - /* Create a new archive in memory. */ - assert((a = archive_write_new()) != NULL); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_7zip(a)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_none(a)); - assertEqualIntA(a, ARCHIVE_OK, - archive_write_open_memory(a, buff, buffsize, &used)); - - /* Close out the archive. */ - assertEqualInt(ARCHIVE_OK, archive_write_close(a)); - assertEqualInt(ARCHIVE_OK, archive_write_free(a)); - - /* Verify the archive file size. */ - assertEqualInt(32, used); - - /* Verify the initial header. */ - assertEqualMem(buff, - "\x37\x7a\xbc\xaf\x27\x1c\x00\x03" - "\x8d\x9b\xd5\x0f\x00\x00\x00\x00" - "\x00\x00\x00\x00\x00\x00\x00\x00" - "\x00\x00\x00\x00\x00\x00\x00\x00", 32); - - free(buff); + /* Test that making a 7-Zip archive file by default compression + * in whatever compressions are supported on the running platform. */ + test_basic(NULL); + /* Test that making a 7-Zip archive file without empty files. */ + test_basic2(NULL); } -/* - * Test writing an empty file. - */ -static void -test_only_empty_file(void) +DEFINE_TEST(test_write_format_7zip_basic_bzip2) { - struct archive *a; - struct archive_entry *ae; - size_t buffsize = 1000; - char *buff; - size_t used; - - buff = malloc(buffsize); - - /* Create a new archive in memory. */ - assert((a = archive_write_new()) != NULL); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_7zip(a)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_none(a)); - assertEqualIntA(a, ARCHIVE_OK, - archive_write_open_memory(a, buff, buffsize, &used)); - - /* - * Write an empty file to it. - */ - assert((ae = archive_entry_new()) != NULL); - archive_entry_set_mtime(ae, 1, 10); - assertEqualInt(1, archive_entry_mtime(ae)); - assertEqualInt(10, archive_entry_mtime_nsec(ae)); - archive_entry_set_atime(ae, 2, 20); - assertEqualInt(2, archive_entry_atime(ae)); - assertEqualInt(20, archive_entry_atime_nsec(ae)); - archive_entry_set_ctime(ae, 0, 100); - assertEqualInt(0, archive_entry_ctime(ae)); - assertEqualInt(100, archive_entry_ctime_nsec(ae)); - archive_entry_copy_pathname(ae, "empty"); - assertEqualString("empty", archive_entry_pathname(ae)); - archive_entry_set_mode(ae, AE_IFREG | 0755); - assertEqualInt((S_IFREG | 0755), archive_entry_mode(ae)); - - assertEqualInt(ARCHIVE_OK, archive_write_header(a, ae)); - archive_entry_free(ae); - - /* Close out the archive. */ - assertEqualInt(ARCHIVE_OK, archive_write_close(a)); - assertEqualInt(ARCHIVE_OK, archive_write_free(a)); - - /* Verify the archive file size. */ - assertEqualInt(102, used); - - /* Verify the initial header. */ - assertEqualMem(buff, - "\x37\x7a\xbc\xaf\x27\x1c\x00\x03" - "\x00\x5b\x58\x25\x00\x00\x00\x00" - "\x00\x00\x00\x00\x46\x00\x00\x00" - "\x00\x00\x00\x00\x8f\xce\x1d\xf3", 32); - - /* - * Now, read the data back. - */ - /* With the test memory reader -- seeking mode. */ - assert((a = archive_read_new()) != NULL); - assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); - assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); - assertEqualIntA(a, ARCHIVE_OK, read_open_memory_seek(a, buff, used, 7)); - - /* - * Read and verify an empty file. - */ - assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); - assertEqualInt(1, archive_entry_mtime(ae)); - assertEqualInt(0, archive_entry_mtime_nsec(ae)); - assertEqualInt(2, archive_entry_atime(ae)); - assertEqualInt(0, archive_entry_atime_nsec(ae)); - assertEqualInt(0, archive_entry_ctime(ae)); - assertEqualInt(100, archive_entry_ctime_nsec(ae)); - assertEqualString("empty", archive_entry_pathname(ae)); - assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae)); - assertEqualInt(0, archive_entry_size(ae)); - - /* Verify the end of the archive. */ - assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); - - /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); - assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a)); - - assertEqualInt(ARCHIVE_OK, archive_read_close(a)); - assertEqualInt(ARCHIVE_OK, archive_read_free(a)); - - free(buff); + /* Test that making a 7-Zip archive file with bzip2 compression. */ + test_basic("bzip2"); } -static void -test_only_empty_files(void) +DEFINE_TEST(test_write_format_7zip_basic_copy) { - struct archive *a; - struct archive_entry *ae; - size_t buffsize = 1000; - char *buff; - size_t used; - - buff = malloc(buffsize); - - /* Create a new archive in memory. */ - assert((a = archive_write_new()) != NULL); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_7zip(a)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_none(a)); - assertEqualIntA(a, ARCHIVE_OK, - archive_write_open_memory(a, buff, buffsize, &used)); - - /* - * Write an empty file to it. - */ - assert((ae = archive_entry_new()) != NULL); - archive_entry_set_mtime(ae, 1, 10); - assertEqualInt(1, archive_entry_mtime(ae)); - assertEqualInt(10, archive_entry_mtime_nsec(ae)); - archive_entry_set_atime(ae, 2, 20); - assertEqualInt(2, archive_entry_atime(ae)); - assertEqualInt(20, archive_entry_atime_nsec(ae)); - archive_entry_copy_pathname(ae, "empty"); - assertEqualString("empty", archive_entry_pathname(ae)); - archive_entry_set_mode(ae, AE_IFREG | 0755); - assertEqualInt((AE_IFREG | 0755), archive_entry_mode(ae)); - - assertEqualInt(ARCHIVE_OK, archive_write_header(a, ae)); - archive_entry_free(ae); - - /* - * Write second empty file to it. - */ - assert((ae = archive_entry_new()) != NULL); - archive_entry_set_mtime(ae, 2, 10); - assertEqualInt(2, archive_entry_mtime(ae)); - assertEqualInt(10, archive_entry_mtime_nsec(ae)); - archive_entry_set_ctime(ae, 2, 10); - assertEqualInt(2, archive_entry_ctime(ae)); - assertEqualInt(10, archive_entry_ctime_nsec(ae)); - archive_entry_copy_pathname(ae, "empty2"); - assertEqualString("empty2", archive_entry_pathname(ae)); - archive_entry_set_mode(ae, AE_IFREG | 0644); - assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae)); - - assertEqualInt(ARCHIVE_OK, archive_write_header(a, ae)); - archive_entry_free(ae); - - /* - * Write third empty file to it. - */ - assert((ae = archive_entry_new()) != NULL); - archive_entry_set_mtime(ae, 3, 10); - assertEqualInt(3, archive_entry_mtime(ae)); - assertEqualInt(10, archive_entry_mtime_nsec(ae)); - archive_entry_copy_pathname(ae, "empty3"); - assertEqualString("empty3", archive_entry_pathname(ae)); - archive_entry_set_mode(ae, AE_IFREG | 0644); - assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae)); - - assertEqualInt(ARCHIVE_OK, archive_write_header(a, ae)); - archive_entry_free(ae); - - /* Close out the archive. */ - assertEqualInt(ARCHIVE_OK, archive_write_close(a)); - assertEqualInt(ARCHIVE_OK, archive_write_free(a)); - - /* Verify the initial header. */ - assertEqualMem(buff, "\x37\x7a\xbc\xaf\x27\x1c\x00\x03", 8); - - /* - * Now, read the data back. - */ - /* With the test memory reader -- seeking mode. */ - assert((a = archive_read_new()) != NULL); - assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); - assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); - assertEqualIntA(a, ARCHIVE_OK, read_open_memory_seek(a, buff, used, 7)); - - /* - * Read and verify an empty file. - */ - assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); - assertEqualInt(1, archive_entry_mtime(ae)); - assertEqualInt(0, archive_entry_mtime_nsec(ae)); - assertEqualInt(2, archive_entry_atime(ae)); - assertEqualInt(0, archive_entry_atime_nsec(ae)); - assertEqualInt(0, archive_entry_ctime(ae)); - assertEqualString("empty", archive_entry_pathname(ae)); - assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae)); - assertEqualInt(0, archive_entry_size(ae)); - - /* - * Read and verify second empty file. - */ - assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); - assertEqualInt(2, archive_entry_mtime(ae)); - assertEqualInt(0, archive_entry_mtime_nsec(ae)); - assertEqualInt(0, archive_entry_atime(ae)); - assertEqualInt(2, archive_entry_ctime(ae)); - assertEqualInt(0, archive_entry_ctime_nsec(ae)); - assertEqualString("empty2", archive_entry_pathname(ae)); - assertEqualInt(AE_IFREG | 0644, archive_entry_mode(ae)); - assertEqualInt(0, archive_entry_size(ae)); - - /* - * Read and verify third empty file. - */ - assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); - assertEqualInt(3, archive_entry_mtime(ae)); - assertEqualInt(0, archive_entry_mtime_nsec(ae)); - assertEqualInt(0, archive_entry_atime(ae)); - assertEqualInt(0, archive_entry_ctime(ae)); - assertEqualString("empty3", archive_entry_pathname(ae)); - assertEqualInt(AE_IFREG | 0644, archive_entry_mode(ae)); - assertEqualInt(0, archive_entry_size(ae)); - - /* Verify the end of the archive. */ - assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); - - /* Verify archive format. */ - assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a)); - assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a)); - - assertEqualInt(ARCHIVE_OK, archive_read_close(a)); - assertEqualInt(ARCHIVE_OK, archive_read_free(a)); - - free(buff); + /* Test that making a 7-Zip archive file without compression. */ + test_basic("copy"); } -DEFINE_TEST(test_write_format_7zip) +DEFINE_TEST(test_write_format_7zip_basic_deflate) { - /* Test that making a 7-Zip archive file by default compression - * in whatever compressions are supported on the running platform. */ - test_basic(NULL); - /* Test that making a 7-Zip archive file without compression. */ - test_basic("copy"); /* Test that making a 7-Zip archive file with deflate compression. */ test_basic("deflate"); - /* Test that making a 7-Zip archive file with bzip2 compression. */ - test_basic("bzip2"); +} + +DEFINE_TEST(test_write_format_7zip_basic_lzma1) +{ /* Test that making a 7-Zip archive file with lzma1 compression. */ test_basic("lzma1"); +} + +DEFINE_TEST(test_write_format_7zip_basic_lzma2) +{ /* Test that making a 7-Zip archive file with lzma2 compression. */ test_basic("lzma2"); +} + +DEFINE_TEST(test_write_format_7zip_basic_ppmd) +{ /* Test that making a 7-Zip archive file with PPMd compression. */ test_basic("ppmd"); - /* Test that making a 7-Zip archive file without empty files. */ - test_basic2(NULL); - /* Test that making an empty 7-Zip archive file. */ - test_empty_archive(); - /* Test that write an empty file. */ - test_only_empty_file(); - test_only_empty_files(); } diff --git a/contrib/libarchive/libarchive/test/test_write_format_7zip_empty.c b/contrib/libarchive/libarchive/test/test_write_format_7zip_empty.c new file mode 100644 index 0000000..9a503e9 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_write_format_7zip_empty.c @@ -0,0 +1,299 @@ +/*- + * Copyright (c) 2011-2012 Michihiro NAKAJIMA + * 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" +__FBSDID("$FreeBSD$"); + +/* + * Test writing an empty archive. + */ +DEFINE_TEST(test_write_format_7zip_empty_archive) +{ + struct archive *a; + size_t buffsize = 1000; + char *buff; + size_t used; + + buff = malloc(buffsize); + + /* Create a new archive in memory. */ + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_7zip(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, buffsize, &used)); + + /* Close out the archive. */ + assertEqualInt(ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + /* Verify the archive file size. */ + assertEqualInt(32, used); + + /* Verify the initial header. */ + assertEqualMem(buff, + "\x37\x7a\xbc\xaf\x27\x1c\x00\x03" + "\x8d\x9b\xd5\x0f\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00", 32); + + free(buff); +} + +/* + * Test writing an empty file. + */ +static void +test_only_empty_file(void) +{ + struct archive *a; + struct archive_entry *ae; + size_t buffsize = 1000; + char *buff; + size_t used; + + buff = malloc(buffsize); + + /* Create a new archive in memory. */ + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_7zip(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, buffsize, &used)); + + /* + * Write an empty file to it. + */ + assert((ae = archive_entry_new()) != NULL); + archive_entry_set_mtime(ae, 1, 10); + assertEqualInt(1, archive_entry_mtime(ae)); + assertEqualInt(10, archive_entry_mtime_nsec(ae)); + archive_entry_set_atime(ae, 2, 20); + assertEqualInt(2, archive_entry_atime(ae)); + assertEqualInt(20, archive_entry_atime_nsec(ae)); + archive_entry_set_ctime(ae, 0, 100); + assertEqualInt(0, archive_entry_ctime(ae)); + assertEqualInt(100, archive_entry_ctime_nsec(ae)); + archive_entry_copy_pathname(ae, "empty"); + assertEqualString("empty", archive_entry_pathname(ae)); + archive_entry_set_mode(ae, AE_IFREG | 0755); + assertEqualInt((S_IFREG | 0755), archive_entry_mode(ae)); + + assertEqualInt(ARCHIVE_OK, archive_write_header(a, ae)); + archive_entry_free(ae); + + /* Close out the archive. */ + assertEqualInt(ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + /* Verify the archive file size. */ + assertEqualInt(102, used); + + /* Verify the initial header. */ + assertEqualMem(buff, + "\x37\x7a\xbc\xaf\x27\x1c\x00\x03" + "\x00\x5b\x58\x25\x00\x00\x00\x00" + "\x00\x00\x00\x00\x46\x00\x00\x00" + "\x00\x00\x00\x00\x8f\xce\x1d\xf3", 32); + + /* + * Now, read the data back. + */ + /* With the test memory reader -- seeking mode. */ + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, read_open_memory_seek(a, buff, used, 7)); + + /* + * Read and verify an empty file. + */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualInt(1, archive_entry_mtime(ae)); + assertEqualInt(0, archive_entry_mtime_nsec(ae)); + assertEqualInt(2, archive_entry_atime(ae)); + assertEqualInt(0, archive_entry_atime_nsec(ae)); + assertEqualInt(0, archive_entry_ctime(ae)); + assertEqualInt(100, archive_entry_ctime_nsec(ae)); + assertEqualString("empty", archive_entry_pathname(ae)); + assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae)); + assertEqualInt(0, archive_entry_size(ae)); + + /* Verify the end of the archive. */ + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + + /* Verify archive format. */ + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); + assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a)); + + assertEqualInt(ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + + free(buff); +} + +static void +test_only_empty_files(void) +{ + struct archive *a; + struct archive_entry *ae; + size_t buffsize = 1000; + char *buff; + size_t used; + + buff = malloc(buffsize); + + /* Create a new archive in memory. */ + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_7zip(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, buffsize, &used)); + + /* + * Write an empty file to it. + */ + assert((ae = archive_entry_new()) != NULL); + archive_entry_set_mtime(ae, 1, 10); + assertEqualInt(1, archive_entry_mtime(ae)); + assertEqualInt(10, archive_entry_mtime_nsec(ae)); + archive_entry_set_atime(ae, 2, 20); + assertEqualInt(2, archive_entry_atime(ae)); + assertEqualInt(20, archive_entry_atime_nsec(ae)); + archive_entry_copy_pathname(ae, "empty"); + assertEqualString("empty", archive_entry_pathname(ae)); + archive_entry_set_mode(ae, AE_IFREG | 0755); + assertEqualInt((AE_IFREG | 0755), archive_entry_mode(ae)); + + assertEqualInt(ARCHIVE_OK, archive_write_header(a, ae)); + archive_entry_free(ae); + + /* + * Write second empty file to it. + */ + assert((ae = archive_entry_new()) != NULL); + archive_entry_set_mtime(ae, 2, 10); + assertEqualInt(2, archive_entry_mtime(ae)); + assertEqualInt(10, archive_entry_mtime_nsec(ae)); + archive_entry_set_ctime(ae, 2, 10); + assertEqualInt(2, archive_entry_ctime(ae)); + assertEqualInt(10, archive_entry_ctime_nsec(ae)); + archive_entry_copy_pathname(ae, "empty2"); + assertEqualString("empty2", archive_entry_pathname(ae)); + archive_entry_set_mode(ae, AE_IFREG | 0644); + assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae)); + + assertEqualInt(ARCHIVE_OK, archive_write_header(a, ae)); + archive_entry_free(ae); + + /* + * Write third empty file to it. + */ + assert((ae = archive_entry_new()) != NULL); + archive_entry_set_mtime(ae, 3, 10); + assertEqualInt(3, archive_entry_mtime(ae)); + assertEqualInt(10, archive_entry_mtime_nsec(ae)); + archive_entry_copy_pathname(ae, "empty3"); + assertEqualString("empty3", archive_entry_pathname(ae)); + archive_entry_set_mode(ae, AE_IFREG | 0644); + assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae)); + + assertEqualInt(ARCHIVE_OK, archive_write_header(a, ae)); + archive_entry_free(ae); + + /* Close out the archive. */ + assertEqualInt(ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + /* Verify the initial header. */ + assertEqualMem(buff, "\x37\x7a\xbc\xaf\x27\x1c\x00\x03", 8); + + /* + * Now, read the data back. + */ + /* With the test memory reader -- seeking mode. */ + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, read_open_memory_seek(a, buff, used, 7)); + + /* + * Read and verify an empty file. + */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualInt(1, archive_entry_mtime(ae)); + assertEqualInt(0, archive_entry_mtime_nsec(ae)); + assertEqualInt(2, archive_entry_atime(ae)); + assertEqualInt(0, archive_entry_atime_nsec(ae)); + assertEqualInt(0, archive_entry_ctime(ae)); + assertEqualString("empty", archive_entry_pathname(ae)); + assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae)); + assertEqualInt(0, archive_entry_size(ae)); + + /* + * Read and verify second empty file. + */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualInt(2, archive_entry_mtime(ae)); + assertEqualInt(0, archive_entry_mtime_nsec(ae)); + assertEqualInt(0, archive_entry_atime(ae)); + assertEqualInt(2, archive_entry_ctime(ae)); + assertEqualInt(0, archive_entry_ctime_nsec(ae)); + assertEqualString("empty2", archive_entry_pathname(ae)); + assertEqualInt(AE_IFREG | 0644, archive_entry_mode(ae)); + assertEqualInt(0, archive_entry_size(ae)); + + /* + * Read and verify third empty file. + */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualInt(3, archive_entry_mtime(ae)); + assertEqualInt(0, archive_entry_mtime_nsec(ae)); + assertEqualInt(0, archive_entry_atime(ae)); + assertEqualInt(0, archive_entry_ctime(ae)); + assertEqualString("empty3", archive_entry_pathname(ae)); + assertEqualInt(AE_IFREG | 0644, archive_entry_mode(ae)); + assertEqualInt(0, archive_entry_size(ae)); + + /* Verify the end of the archive. */ + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + + /* Verify archive format. */ + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); + assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a)); + + assertEqualInt(ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + + free(buff); +} + +DEFINE_TEST(test_write_format_7zip_empty_files) +{ + /* Test that write an empty file. */ + test_only_empty_file(); + test_only_empty_files(); +} diff --git a/contrib/libarchive/libarchive/test/test_write_format_7zip_large.c b/contrib/libarchive/libarchive/test/test_write_format_7zip_large.c new file mode 100644 index 0000000..5c49f59 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_write_format_7zip_large.c @@ -0,0 +1,174 @@ +/*- + * Copyright (c) 2012 Michihiro NAKAJIMA + * 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" +__FBSDID("$FreeBSD$"); + +#define LARGE_SIZE (16*1024*1024) +static void +test_large(const char *compression_type) +{ + struct archive_entry *ae; + struct archive *a; + size_t used; + size_t buffsize = LARGE_SIZE + 1024 * 256; + size_t datasize = LARGE_SIZE; + char *buff, *filedata, *filedata2; + unsigned i; + + assert((buff = malloc(buffsize)) != NULL); + assert((filedata = malloc(datasize)) != NULL); + assert((filedata2 = malloc(datasize)) != NULL); + + /* Create a new archive in memory. */ + assert((a = archive_write_new()) != NULL); + if (a == NULL || buff == NULL || filedata == NULL || filedata2 == NULL) { + archive_write_free(a); + free(buff); + free(filedata); + free(filedata2); + return; + } + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_7zip(a)); + if (compression_type != NULL && + ARCHIVE_OK != archive_write_set_format_option(a, "7zip", + "compression", compression_type)) { + skipping("%s writing not fully supported on this platform", + compression_type); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + free(buff); + free(filedata); + free(filedata2); + return; + } + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, buffsize, &used)); + + /* + * Write a large file to it. + */ + assert((ae = archive_entry_new()) != NULL); + archive_entry_set_mtime(ae, 1, 100); + assertEqualInt(1, archive_entry_mtime(ae)); + assertEqualInt(100, archive_entry_mtime_nsec(ae)); + archive_entry_copy_pathname(ae, "file"); + assertEqualString("file", archive_entry_pathname(ae)); + archive_entry_set_mode(ae, AE_IFREG | 0755); + assertEqualInt((AE_IFREG | 0755), archive_entry_mode(ae)); + archive_entry_set_size(ae, datasize); + + assertEqualInt(0, archive_write_header(a, ae)); + archive_entry_free(ae); + if (strcmp(compression_type, "ppmd") == 0) { + /* NOTE: PPMd cannot handle random data correctly.*/ + memset(filedata, 'a', datasize); + } else { + for (i = 0; i < datasize; i++) + filedata[i] = (char)rand(); + } + assertEqualInt(datasize, archive_write_data(a, filedata, datasize)); + + /* Close out the archive. */ + assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + /* Verify the initial header. */ + assertEqualMem(buff, "\x37\x7a\xbc\xaf\x27\x1c\x00\x03", 8); + + /* + * Now, read the data back. + */ + /* With the test memory reader -- seeking mode. */ + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, read_open_memory_seek(a, buff, used, 7)); + + /* + * Read and verify a large file. + */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualInt(1, archive_entry_mtime(ae)); + assertEqualInt(100, archive_entry_mtime_nsec(ae)); + assertEqualInt(0, archive_entry_atime(ae)); + assertEqualInt(0, archive_entry_ctime(ae)); + assertEqualString("file", archive_entry_pathname(ae)); + assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae)); + assertEqualInt(datasize, archive_entry_size(ae)); + assertEqualIntA(a, datasize, archive_read_data(a, filedata2, datasize)); + assertEqualMem(filedata, filedata2, datasize); + + /* Verify the end of the archive. */ + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + + /* Verify archive format. */ + assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0)); + assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a)); + + assertEqualInt(ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + + free(buff); + free(filedata); + free(filedata2); +} + +DEFINE_TEST(test_write_format_7zip_large_bzip2) +{ + /* Test that making a 7-Zip archive file with bzip2 compression. */ + test_large("bzip2"); +} + +DEFINE_TEST(test_write_format_7zip_large_copy) +{ + /* Test that making a 7-Zip archive file without compression. */ + test_large("copy"); +} + +DEFINE_TEST(test_write_format_7zip_large_deflate) +{ + /* Test that making a 7-Zip archive file with deflate compression. */ + test_large("deflate"); +} + +DEFINE_TEST(test_write_format_7zip_large_lzma1) +{ + /* Test that making a 7-Zip archive file with lzma1 compression. */ + test_large("lzma1"); +} + +DEFINE_TEST(test_write_format_7zip_large_lzma2) +{ + /* Test that making a 7-Zip archive file with lzma2 compression. */ + test_large("lzma2"); +} + +DEFINE_TEST(test_write_format_7zip_large_ppmd) +{ + /* Test that making a 7-Zip archive file with PPMd compression. */ + test_large("ppmd"); +} diff --git a/contrib/libarchive/libarchive/test/test_write_format_ar.c b/contrib/libarchive/libarchive/test/test_write_format_ar.c index 9602c18..8b9ea35 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_ar.c +++ b/contrib/libarchive/libarchive/test/test_write_format_ar.c @@ -98,9 +98,9 @@ DEFINE_TEST(test_write_format_ar) archive_entry_free(ae); assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); - assertEqualInt(archive_position_compressed(a), - archive_position_uncompressed(a)); - assertEqualInt(used, archive_position_uncompressed(a)); + assertEqualInt(archive_filter_bytes(a, -1), + archive_filter_bytes(a, 0)); + assertEqualInt(used, archive_filter_bytes(a, 0)); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); /* diff --git a/contrib/libarchive/libarchive/test/test_write_format_cpio.c b/contrib/libarchive/libarchive/test/test_write_format_cpio.c index bd4cd56..6f0fb8f 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_cpio.c +++ b/contrib/libarchive/libarchive/test/test_write_format_cpio.c @@ -42,7 +42,7 @@ test_format(int (*set_format)(struct archive *)) /* Create a new archive in memory. */ assert((a = archive_write_new()) != NULL); assertA(0 == (*set_format)(a)); - assertA(0 == archive_write_set_compression_none(a)); + assertA(0 == archive_write_add_filter_none(a)); assertA(0 == archive_write_open_memory(a, buff, buffsize, &used)); /* @@ -234,7 +234,7 @@ test_big_entries(int (*set_format)(struct archive *), int64_t size, int expected /* Create a new archive in memory. */ assert((a = archive_write_new()) != NULL); assertA(0 == (*set_format)(a)); - assertA(0 == archive_write_set_compression_none(a)); + assertA(0 == archive_write_add_filter_none(a)); assertA(0 == archive_write_open_memory(a, buff, buffsize, &used)); assert((ae = archive_entry_new()) != NULL); 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 ce649ed..ee17453 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_cpio_empty.c +++ b/contrib/libarchive/libarchive/test/test_write_format_cpio_empty.c @@ -53,7 +53,7 @@ DEFINE_TEST(test_write_format_cpio_empty) /* Create a new archive in memory. */ assert((a = archive_write_new()) != NULL); assertA(0 == archive_write_set_format_cpio(a)); - assertA(0 == archive_write_set_compression_none(a)); + assertA(0 == archive_write_add_filter_none(a)); /* 1-byte block size ensures we see only the required bytes. */ /* We're not testing the padding here. */ assertA(0 == archive_write_set_bytes_per_block(a, 1)); 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 9e29c6a..9651e8f 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_cpio_newc.c +++ b/contrib/libarchive/libarchive/test/test_write_format_cpio_newc.c @@ -61,7 +61,7 @@ DEFINE_TEST(test_write_format_cpio_newc) /* Create a new archive in memory. */ assert((a = archive_write_new()) != NULL); assertEqualIntA(a, 0, archive_write_set_format_cpio_newc(a)); - assertEqualIntA(a, 0, archive_write_set_compression_none(a)); + assertEqualIntA(a, 0, archive_write_add_filter_none(a)); assertEqualIntA(a, 0, archive_write_open_memory(a, buff, buffsize, &used)); /* 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 ac60f8f..7baf0e5 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_cpio_odc.c +++ b/contrib/libarchive/libarchive/test/test_write_format_cpio_odc.c @@ -55,7 +55,7 @@ DEFINE_TEST(test_write_format_cpio_odc) /* Create a new archive in memory. */ assert((a = archive_write_new()) != NULL); assertEqualIntA(a, 0, archive_write_set_format_cpio(a)); - assertEqualIntA(a, 0, archive_write_set_compression_none(a)); + assertEqualIntA(a, 0, archive_write_add_filter_none(a)); assertEqualIntA(a, 0, archive_write_open_memory(a, buff, buffsize, &used)); /* diff --git a/contrib/libarchive/libarchive/test/test_write_format_gnutar.c b/contrib/libarchive/libarchive/test/test_write_format_gnutar.c index 42063e9..67f5a10 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_gnutar.c +++ b/contrib/libarchive/libarchive/test/test_write_format_gnutar.c @@ -109,7 +109,7 @@ DEFINE_TEST(test_write_format_gnutar) /* Create a new archive in memory. */ assert((a = archive_write_new()) != NULL); assertA(0 == archive_write_set_format_gnutar(a)); - assertA(0 == archive_write_set_compression_none(a)); + assertA(0 == archive_write_add_filter_none(a)); assertA(0 == archive_write_open_memory(a, buff, buffsize, &used)); /* diff --git a/contrib/libarchive/libarchive/test/test_write_format_iso9660.c b/contrib/libarchive/libarchive/test/test_write_format_iso9660.c index dd027af..9c5a005 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_iso9660.c +++ b/contrib/libarchive/libarchive/test/test_write_format_iso9660.c @@ -50,7 +50,7 @@ DEFINE_TEST(test_write_format_iso9660) /* Create a new archive in memory. */ assert((a = archive_write_new()) != NULL); assertA(0 == archive_write_set_format_iso9660(a)); - assertA(0 == archive_write_set_compression_none(a)); + assertA(0 == archive_write_add_filter_none(a)); assertA(0 == archive_write_open_memory(a, buff, buffsize, &used)); /* diff --git a/contrib/libarchive/libarchive/test/test_write_format_iso9660_boot.c b/contrib/libarchive/libarchive/test/test_write_format_iso9660_boot.c index d3f8ab0..b1f185b 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_iso9660_boot.c +++ b/contrib/libarchive/libarchive/test/test_write_format_iso9660_boot.c @@ -104,7 +104,7 @@ _test_write_format_iso9660_boot(int write_info_tbl) /* ISO9660 format: Create a new archive in memory. */ assert((a = archive_write_new()) != NULL); assertA(0 == archive_write_set_format_iso9660(a)); - assertA(0 == archive_write_set_compression_none(a)); + assertA(0 == archive_write_add_filter_none(a)); assertA(0 == archive_write_set_option(a, NULL, "boot", "boot.img")); if (write_info_tbl) assertA(0 == archive_write_set_option(a, NULL, "boot-info-table", "1")); diff --git a/contrib/libarchive/libarchive/test/test_write_format_iso9660_empty.c b/contrib/libarchive/libarchive/test/test_write_format_iso9660_empty.c index 1c5acdb..55c6c3c 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_iso9660_empty.c +++ b/contrib/libarchive/libarchive/test/test_write_format_iso9660_empty.c @@ -58,11 +58,13 @@ DEFINE_TEST(test_write_format_iso9660_empty) buff = malloc(buffsize); assert(buff != NULL); + if (buff == NULL) + return; /* ISO9660 format: Create a new archive in memory. */ assert((a = archive_write_new()) != NULL); assertA(0 == archive_write_set_format_iso9660(a)); - assertA(0 == archive_write_set_compression_none(a)); + assertA(0 == archive_write_add_filter_none(a)); assertA(0 == archive_write_set_bytes_per_block(a, 1)); assertA(0 == archive_write_set_bytes_in_last_block(a, 1)); assertA(0 == archive_write_open_memory(a, buff, buffsize, &used)); diff --git a/contrib/libarchive/libarchive/test/test_write_format_iso9660_filename.c b/contrib/libarchive/libarchive/test/test_write_format_iso9660_filename.c index 1565af6..713883b 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_iso9660_filename.c +++ b/contrib/libarchive/libarchive/test/test_write_format_iso9660_filename.c @@ -218,7 +218,7 @@ create_iso_image(unsigned char *buff, size_t buffsize, size_t *used, /* ISO9660 format: Create a new archive in memory. */ assert((a = archive_write_new()) != NULL); assertA(0 == archive_write_set_format_iso9660(a)); - assertA(0 == archive_write_set_compression_none(a)); + assertA(0 == archive_write_add_filter_none(a)); assertA(0 == archive_write_set_option(a, NULL, "pad", NULL)); if (opt) assertA(0 == archive_write_set_options(a, opt)); @@ -312,6 +312,8 @@ DEFINE_TEST(test_write_format_iso9660_filename) buff = malloc(buffsize); assert(buff != NULL); + if (buff == NULL) + return; memset(&fns, 0, sizeof(fns)); /* @@ -321,6 +323,10 @@ DEFINE_TEST(test_write_format_iso9660_filename) fns.names = (char **)malloc(sizeof(char *) * fcnt); assert(fns.names != NULL); + if (fns.names == NULL) { + free(buff); + return; + } fns.alloc = fcnt; /* Verify rockridge filenames. */ diff --git a/contrib/libarchive/libarchive/test/test_write_format_iso9660_zisofs.c b/contrib/libarchive/libarchive/test/test_write_format_iso9660_zisofs.c index 2e3e03f..136255b 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_iso9660_zisofs.c +++ b/contrib/libarchive/libarchive/test/test_write_format_iso9660_zisofs.c @@ -106,15 +106,18 @@ test_write_format_iso9660_zisofs_1(void) memset(nullb, 0, sizeof(nullb)); buff = malloc(buffsize); assert(buff != NULL); + if (buff == NULL) + return; /* ISO9660 format: Create a new archive in memory. */ assert((a = archive_write_new()) != NULL); assertEqualIntA(a, 0, archive_write_set_format_iso9660(a)); - assertEqualIntA(a, 0, archive_write_set_compression_none(a)); + assertEqualIntA(a, 0, archive_write_add_filter_none(a)); r = archive_write_set_option(a, NULL, "zisofs", "1"); if (r == ARCHIVE_FATAL) { skipping("zisofs option not supported on this platform"); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + free(buff); return; } assertEqualIntA(a, 0, archive_write_set_option(a, NULL, "pad", NULL)); @@ -335,15 +338,18 @@ test_write_format_iso9660_zisofs_2(void) buff = malloc(buffsize); assert(buff != NULL); + if (buff == NULL) + return; /* ISO9660 format: Create a new archive in memory. */ assert((a = archive_write_new()) != NULL); assertEqualIntA(a, 0, archive_write_set_format_iso9660(a)); - assertEqualIntA(a, 0, archive_write_set_compression_none(a)); + assertEqualIntA(a, 0, archive_write_add_filter_none(a)); r = archive_write_set_option(a, NULL, "zisofs", "1"); if (r == ARCHIVE_FATAL) { skipping("zisofs option not supported on this platform"); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + free(buff); return; } assertEqualIntA(a, 0, archive_write_set_option(a, NULL, "pad", NULL)); @@ -585,15 +591,18 @@ test_write_format_iso9660_zisofs_3(void) memset(nullb, 0, sizeof(nullb)); buff = malloc(buffsize); assert(buff != NULL); + if (buff == NULL) + return; /* ISO9660 format: Create a new archive in memory. */ assert((a = archive_write_new()) != NULL); assertEqualIntA(a, 0, archive_write_set_format_iso9660(a)); - assertEqualIntA(a, 0, archive_write_set_compression_none(a)); + assertEqualIntA(a, 0, archive_write_add_filter_none(a)); r = archive_write_set_option(a, NULL, "zisofs", "1"); if (r == ARCHIVE_FATAL) { skipping("zisofs option not supported on this platform"); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + free(buff); return; } assertEqualIntA(a, 0, archive_write_set_option(a, NULL, "boot", "boot.img")); diff --git a/contrib/libarchive/libarchive/test/test_write_format_mtree.c b/contrib/libarchive/libarchive/test/test_write_format_mtree.c index 248951b..6231baa 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_mtree.c +++ b/contrib/libarchive/libarchive/test/test_write_format_mtree.c @@ -35,11 +35,11 @@ static struct { uid_t uid; gid_t gid; } entries[] = { + { "./COPYING", S_IFREG | 0644, 1231975636, 1001, 1001 }, { "./Makefile", S_IFREG | 0644, 1233041050, 1001, 1001 }, { "./NEWS", S_IFREG | 0644, 1231975636, 1001, 1001 }, { "./PROJECTS", S_IFREG | 0644, 1231975636, 1001, 1001 }, { "./README", S_IFREG | 0644, 1231975636, 1001, 1001 }, - { "./COPYING", S_IFREG | 0644, 1231975636, 1001, 1001 }, { "./subdir", S_IFDIR | 0755, 1233504586, 1001, 1001 }, { "./subdir/README", S_IFREG | 0664, 1231975636, 1002, 1001 }, { "./subdir/config", S_IFREG | 0664, 1232266273, 1003, 1003 }, 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 new file mode 100644 index 0000000..e3972f1 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_write_format_mtree_absolute_path.c @@ -0,0 +1,99 @@ +/*- + * Copyright (c) 2012 Michihiro NAKAJIMA + * 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" +__FBSDID("$FreeBSD$"); + +static char buff[4096]; + +DEFINE_TEST(test_write_format_mtree_absolute_path) +{ + struct archive_entry *ae; + struct archive* a; + size_t used; + + /* Create a mtree format archive. */ + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_mtree(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, sizeof(buff)-1, &used)); + + /* Write "." file. */ + assert((ae = archive_entry_new()) != NULL); + archive_entry_copy_pathname(ae, "."); + archive_entry_set_mode(ae, AE_IFDIR | 0755); + assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); + archive_entry_free(ae); + + /* Write "/file" file. */ + assert((ae = archive_entry_new()) != NULL); + archive_entry_copy_pathname(ae, "/file"); + archive_entry_set_size(ae, 0); + archive_entry_set_mode(ae, AE_IFREG | 0644); + assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); + archive_entry_free(ae); + + /* Write "/dir" directory. */ + assert((ae = archive_entry_new()) != NULL); + archive_entry_copy_pathname(ae, "/dir"); + archive_entry_set_mode(ae, AE_IFDIR | 0755); + assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); + archive_entry_free(ae); + + assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + /* + * Read the data and check it. + */ + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used)); + + /* Read "." file. */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + failure("The path should be just \".\""); + assertEqualString(archive_entry_pathname(ae), "."); + assertEqualInt(archive_entry_mode(ae), AE_IFDIR | 0755); + + /* Read "/file" file. */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + failure("The path should have \"./\" prefix"); + assertEqualString(archive_entry_pathname(ae), "./file"); + assertEqualInt(archive_entry_size(ae), 0); + assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644); + + /* Read "/dir" file. */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + failure("The path should have \"./\" prefix"); + assertEqualString(archive_entry_pathname(ae), "./dir"); + assertEqualInt(archive_entry_mode(ae), AE_IFDIR | 0755); + + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} + diff --git a/contrib/libarchive/libarchive/test/test_write_format_mtree_classic.c b/contrib/libarchive/libarchive/test/test_write_format_mtree_classic.c new file mode 100644 index 0000000..9a75fdd --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_write_format_mtree_classic.c @@ -0,0 +1,194 @@ +/*- + * Copyright (c) 2012 Michihiro NAKAJIMA + * 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" +__FBSDID("$FreeBSD$"); + +static char buff[4096]; +static struct { + const char *path; + mode_t mode; + int nlink; + time_t mtime; + uid_t uid; + gid_t gid; +} entries[] = { + { ".", S_IFDIR | 0755, 3, 1231975636, 1001, 1001 }, + { "./COPYING", S_IFREG | 0644, 1, 1231975636, 1001, 1001 }, + { "./Makefile", S_IFREG | 0644, 1, 1233041050, 1001, 1001 }, + { "./NEWS", S_IFREG | 0644, 1, 1231975636, 1001, 1001 }, + { "./PROJECTS", S_IFREG | 0644, 1, 1231975636, 1001, 1001 }, + { "./README", S_IFREG | 0644, 1, 1231975636, 1001, 1001 }, + { "./subdir", S_IFDIR | 0755, 3, 1233504586, 1001, 1001 }, + { "./subdir/README", S_IFREG | 0664, 1, 1231975636, 1002, 1001 }, + { "./subdir/config", S_IFREG | 0664, 1, 1232266273, 1003, 1003 }, + { "./subdir2", S_IFDIR | 0755, 3, 1233504586, 1001, 1001 }, + { "./subdir3", S_IFDIR | 0755, 3, 1233504586, 1001, 1001 }, + { "./subdir3/mtree", S_IFREG | 0664, 2, 1232266273, 1003, 1003 }, + { NULL, 0, 0, 0, 0, 0 } +}; + +static const char image [] = { +"#mtree\n" +"\n" +"# .\n" +"/set type=file uid=1001 gid=1001 mode=644\n" +". time=1231975636.0 mode=755 type=dir\n" +" COPYING time=1231975636.0 size=8\n" +" Makefile time=1233041050.0 size=8\n" +" NEWS time=1231975636.0 size=8\n" +" PROJECTS time=1231975636.0 size=8\n" +" README time=1231975636.0 size=8\n" +"\n" +"# ./subdir\n" +"/set mode=664\n" +"subdir time=1233504586.0 mode=755 type=dir\n" +" README time=1231975636.0 uid=1002 size=8\n" +" config time=1232266273.0 gid=1003 uid=1003 size=8\n" +"# ./subdir\n" +"..\n" +"\n" +"\n" +"# ./subdir2\n" +"subdir2 time=1233504586.0 mode=755 type=dir\n" +"# ./subdir2\n" +"..\n" +"\n" +"\n" +"# ./subdir3\n" +"subdir3 time=1233504586.0 mode=755 type=dir\n" +" mtree nlink=2 time=1232266273.0 gid=1003 uid=1003 size=8\n" +"# ./subdir3\n" +"..\n" +"\n" +"..\n\n" +}; + +static const char image_dironly [] = { +"#mtree\n" +"# .\n" +"/set type=dir uid=1001 gid=1001 mode=755\n" +". time=1231975636.0\n" +"# ./subdir\n" +"subdir time=1233504586.0\n" +"# ./subdir\n" +"..\n" +"# ./subdir2\n" +"subdir2 time=1233504586.0\n" +"# ./subdir2\n" +"..\n" +"# ./subdir3\n" +"subdir3 time=1233504586.0\n" +"# ./subdir3\n" +"..\n" +"..\n" +}; + +static void +test_write_format_mtree_sub(int dironly) +{ + struct archive_entry *ae; + struct archive* a; + size_t used; + int i; + + /* Create a mtree format archive. */ + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_mtree_classic(a)); + if (dironly) + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_format_option(a, NULL, "dironly", "1")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, sizeof(buff)-1, &used)); + + /* Write entries */ + for (i = 0; entries[i].path != NULL; i++) { + assert((ae = archive_entry_new()) != NULL); + archive_entry_set_nlink(ae, entries[i].nlink); + assertEqualInt(entries[i].nlink, archive_entry_nlink(ae)); + archive_entry_set_mtime(ae, entries[i].mtime, 0); + assertEqualInt(entries[i].mtime, archive_entry_mtime(ae)); + archive_entry_set_mode(ae, entries[i].mode); + assertEqualInt(entries[i].mode, archive_entry_mode(ae)); + archive_entry_set_uid(ae, entries[i].uid); + assertEqualInt(entries[i].uid, archive_entry_uid(ae)); + archive_entry_set_gid(ae, entries[i].gid); + assertEqualInt(entries[i].gid, archive_entry_gid(ae)); + archive_entry_copy_pathname(ae, entries[i].path); + if ((entries[i].mode & AE_IFMT) != S_IFDIR) + archive_entry_set_size(ae, 8); + assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); + if ((entries[i].mode & AE_IFMT) != S_IFDIR) + assertEqualIntA(a, 8, + archive_write_data(a, "Hello012", 15)); + archive_entry_free(ae); + } + assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + buff[used] = '\0'; + if (dironly) + assertEqualString(buff, image_dironly); + else + assertEqualString(buff, image); + + /* + * Read the data and check it. + */ + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used)); + + /* Read entries */ + for (i = 0; entries[i].path != NULL; i++) { + if (dironly && (entries[i].mode & AE_IFMT) != S_IFDIR) + continue; + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualInt(entries[i].mtime, archive_entry_mtime(ae)); + assertEqualInt(entries[i].mode, archive_entry_mode(ae)); + assertEqualInt(entries[i].uid, archive_entry_uid(ae)); + assertEqualInt(entries[i].gid, archive_entry_gid(ae)); + if (i > 0) + assertEqualString(entries[i].path + 2, + archive_entry_pathname(ae)); + else + assertEqualString(entries[i].path, + archive_entry_pathname(ae)); + if ((entries[i].mode & AE_IFMT) != S_IFDIR) + assertEqualInt(8, archive_entry_size(ae)); + } + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} + +DEFINE_TEST(test_write_format_mtree_classic) +{ + /* Generate classic format. */ + test_write_format_mtree_sub(0); + /* Generate classic format and Write directory only. */ + test_write_format_mtree_sub(1); +} 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 new file mode 100644 index 0000000..6d1c549 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_write_format_mtree_classic_indent.c @@ -0,0 +1,196 @@ +/*- + * Copyright (c) 2012 Michihiro NAKAJIMA + * 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" +__FBSDID("$FreeBSD$"); + +static char buff[4096]; +static struct { + const char *path; + mode_t mode; + int nlink; + time_t mtime; + uid_t uid; + gid_t gid; +} entries[] = { + { ".", S_IFDIR | 0755, 3, 1231975636, 1001, 1001 }, + { "./COPYING", S_IFREG | 0644, 1, 1231975636, 1001, 1001 }, + { "./Makefile", S_IFREG | 0644, 1, 1233041050, 1001, 1001 }, + { "./NEWS", S_IFREG | 0644, 1, 1231975636, 1001, 1001 }, + { "./PROJECTS", S_IFREG | 0644, 1, 1231975636, 1001, 1001 }, + { "./README", S_IFREG | 0644, 1, 1231975636, 1001, 1001 }, + { "./subdir", S_IFDIR | 0755, 3, 1233504586, 1001, 1001 }, + { "./subdir/README", S_IFREG | 0664, 1, 1231975636, 1002, 1001 }, + { "./subdir/config", S_IFREG | 0664, 1, 1232266273, 1003, 1003 }, + { "./subdir2", S_IFDIR | 0755, 3, 1233504586, 1001, 1001 }, + { "./subdir3", S_IFDIR | 0755, 3, 1233504586, 1001, 1001 }, + { "./subdir3/mtree", S_IFREG | 0664, 2, 1232266273, 1003, 1003 }, + { NULL, 0, 0, 0, 0, 0 } +}; + +static const char image [] = { +"#mtree\n" +"\n" +"# .\n" +"/set type=file uid=1001 gid=1001 mode=644\n" +". time=1231975636.0 mode=755 type=dir\n" +" COPYING time=1231975636.0 size=8\n" +" Makefile time=1233041050.0 size=8\n" +" NEWS time=1231975636.0 size=8\n" +" PROJECTS time=1231975636.0 size=8\n" +" README time=1231975636.0 size=8\n" +"\n" +"# ./subdir\n" +"/set mode=664\n" +" subdir time=1233504586.0 mode=755 type=dir\n" +" README time=1231975636.0 uid=1002 size=8\n" +" config time=1232266273.0 gid=1003 uid=1003 size=8\n" +" # ./subdir\n" +" ..\n" +"\n" +"\n" +"# ./subdir2\n" +" subdir2 time=1233504586.0 mode=755 type=dir\n" +" # ./subdir2\n" +" ..\n" +"\n" +"\n" +"# ./subdir3\n" +" subdir3 time=1233504586.0 mode=755 type=dir\n" +" mtree nlink=2 time=1232266273.0 gid=1003 uid=1003 size=8\n" +" # ./subdir3\n" +" ..\n" +"\n" +"..\n\n" +}; + +static const char image_dironly [] = { +"#mtree\n" +"# .\n" +"/set type=dir uid=1001 gid=1001 mode=755\n" +". time=1231975636.0\n" +"# ./subdir\n" +" subdir time=1233504586.0\n" +" # ./subdir\n" +" ..\n" +"# ./subdir2\n" +" subdir2 time=1233504586.0\n" +" # ./subdir2\n" +" ..\n" +"# ./subdir3\n" +" subdir3 time=1233504586.0\n" +" # ./subdir3\n" +" ..\n" +"..\n" +}; + +static void +test_write_format_mtree_sub(int dironly) +{ + struct archive_entry *ae; + struct archive* a; + size_t used; + int i; + + /* Create a mtree format archive. */ + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_mtree_classic(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_format_option(a, NULL, "indent", "1")); + if (dironly) + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_format_option(a, NULL, "dironly", "1")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, sizeof(buff)-1, &used)); + + /* Write entries */ + for (i = 0; entries[i].path != NULL; i++) { + assert((ae = archive_entry_new()) != NULL); + archive_entry_set_nlink(ae, entries[i].nlink); + assertEqualInt(entries[i].nlink, archive_entry_nlink(ae)); + archive_entry_set_mtime(ae, entries[i].mtime, 0); + assertEqualInt(entries[i].mtime, archive_entry_mtime(ae)); + archive_entry_set_mode(ae, entries[i].mode); + assertEqualInt(entries[i].mode, archive_entry_mode(ae)); + archive_entry_set_uid(ae, entries[i].uid); + assertEqualInt(entries[i].uid, archive_entry_uid(ae)); + archive_entry_set_gid(ae, entries[i].gid); + assertEqualInt(entries[i].gid, archive_entry_gid(ae)); + archive_entry_copy_pathname(ae, entries[i].path); + if ((entries[i].mode & AE_IFMT) != S_IFDIR) + archive_entry_set_size(ae, 8); + assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); + if ((entries[i].mode & AE_IFMT) != S_IFDIR) + assertEqualIntA(a, 8, + archive_write_data(a, "Hello012", 15)); + archive_entry_free(ae); + } + assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + buff[used] = '\0'; + if (dironly) + assertEqualString(buff, image_dironly); + else + assertEqualString(buff, image); + + /* + * Read the data and check it. + */ + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used)); + + /* Read entries */ + for (i = 0; entries[i].path != NULL; i++) { + if (dironly && (entries[i].mode & AE_IFMT) != S_IFDIR) + continue; + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualInt(entries[i].mtime, archive_entry_mtime(ae)); + assertEqualInt(entries[i].mode, archive_entry_mode(ae)); + assertEqualInt(entries[i].uid, archive_entry_uid(ae)); + assertEqualInt(entries[i].gid, archive_entry_gid(ae)); + if (i > 0) + assertEqualString(entries[i].path + 2, + archive_entry_pathname(ae)); + else + assertEqualString(entries[i].path, + archive_entry_pathname(ae)); + if ((entries[i].mode & AE_IFMT) != S_IFDIR) + assertEqualInt(8, archive_entry_size(ae)); + } + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} + +DEFINE_TEST(test_write_format_mtree_classic_indent) +{ + /* Generate classic format. */ + test_write_format_mtree_sub(0); + /* Generate classic format and Write directory only. */ + test_write_format_mtree_sub(1); +} 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 18689fe..820d86f 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_mtree_fflags.c +++ b/contrib/libarchive/libarchive/test/test_write_format_mtree_fflags.c @@ -41,6 +41,7 @@ static struct { unsigned long fflags; } entries[] = { { "./f1", UF_IMMUTABLE | UF_NODUMP }, + { "./f11", UF_IMMUTABLE | UF_NODUMP }, { "./f2", 0 }, { "./f3", UF_NODUMP }, { NULL, 0 } 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 new file mode 100644 index 0000000..faf42dd --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_write_format_mtree_no_separator.c @@ -0,0 +1,103 @@ +/*- + * Copyright (c) 2012 Michihiro NAKAJIMA + * 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" +__FBSDID("$FreeBSD$"); +#ifdef HAVE_SYS_STAT_H +#include <sys/stat.h> +#endif + +static char buff[4096]; + +DEFINE_TEST(test_write_format_mtree_no_separator) +{ + struct archive_entry *ae; + struct archive* a; + size_t used; + + /* Create a mtree format archive. */ + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_mtree(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, sizeof(buff)-1, &used)); + + /* Write "." file. */ + assert((ae = archive_entry_new()) != NULL); + archive_entry_copy_pathname(ae, "."); + archive_entry_set_mode(ae, AE_IFDIR | 0755); + assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); + archive_entry_free(ae); + + /* Write "noseparator" file. */ + assert((ae = archive_entry_new()) != NULL); + archive_entry_copy_pathname(ae, "noseparator"); + archive_entry_set_size(ae, 0); + archive_entry_set_mode(ae, AE_IFREG | 0644); + assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); + archive_entry_free(ae); + + /* Write "./withseparator" file. */ + assert((ae = archive_entry_new()) != NULL); + archive_entry_copy_pathname(ae, "./withseparator"); + archive_entry_set_size(ae, 0); + archive_entry_set_mode(ae, AE_IFREG | 0644); + assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); + archive_entry_free(ae); + + assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + /* + * Read the data and check it. + */ + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used)); + + /* Read "." file. */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + failure("The path should be just \".\""); + assertEqualString(archive_entry_pathname(ae), "."); + assertEqualInt(archive_entry_mode(ae), AE_IFDIR | 0755); + + /* Read "./noseparator" file. */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + failure("The path should have \"./\" prefix"); + assertEqualString(archive_entry_pathname(ae), "./noseparator"); + assertEqualInt(archive_entry_size(ae), 0); + assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644); + + /* Read "./withseparator" file. */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString(archive_entry_pathname(ae), "./withseparator"); + assertEqualInt(archive_entry_size(ae), 0); + assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644); + + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} + 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 new file mode 100644 index 0000000..63e927a --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_write_format_mtree_quoted_filename.c @@ -0,0 +1,86 @@ +/*- + * Copyright (c) 2012 Michihiro NAKAJIMA + * 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" +__FBSDID("$FreeBSD$"); + +static char buff[4096]; + +static const char image [] = { +"#mtree\n" +"./a\\040!$\\043&\\075_^z\\177~ mode=644 type=file\n" +}; + + +DEFINE_TEST(test_write_format_mtree_quoted_filename) +{ + struct archive_entry *ae; + struct archive* a; + size_t used; + + /* Create a mtree format archive. */ + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_mtree(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_format_option(a, NULL, "all", NULL)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_format_option(a, NULL, "type", "1")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_format_option(a, NULL, "mode", "1")); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, sizeof(buff)-1, &used)); + + /* Write entry which has #, = , \ and DEL(0177) in the filename. */ + assert((ae = archive_entry_new()) != NULL); + archive_entry_set_mode(ae, AE_IFREG | 0644); + assertEqualInt(AE_IFREG | 0644, archive_entry_mode(ae)); + archive_entry_copy_pathname(ae, "./a !$#&=_^z\177~"); + assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); + archive_entry_free(ae); + + assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + buff[used] = '\0'; + failure("#, = and \\ in the filename should be quoted"); + assertEqualString(buff, image); + + /* + * Read the data and check it. + */ + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used)); + + /* Read entry */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualInt(AE_IFREG | 0644, archive_entry_mode(ae)); + assertEqualString("./a !$#&=_^z\177~", archive_entry_pathname(ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} + diff --git a/contrib/libarchive/libarchive/test/test_write_format_pax.c b/contrib/libarchive/libarchive/test/test_write_format_pax.c index 2151718..d29e9ad 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_pax.c +++ b/contrib/libarchive/libarchive/test/test_write_format_pax.c @@ -44,7 +44,7 @@ DEFINE_TEST(test_write_format_pax) /* Create a new archive in memory. */ assert((a = archive_write_new()) != NULL); assertA(0 == archive_write_set_format_pax(a)); - assertA(0 == archive_write_set_compression_none(a)); + assertA(0 == archive_write_add_filter_none(a)); assertA(0 == archive_write_open_memory(a, buff, buffsize, &used)); /* 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 e225324..ccd971c 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_shar_empty.c +++ b/contrib/libarchive/libarchive/test/test_write_format_shar_empty.c @@ -38,7 +38,7 @@ DEFINE_TEST(test_write_format_shar_empty) /* Create a new archive in memory. */ assert((a = archive_write_new()) != NULL); assertA(0 == archive_write_set_format_shar(a)); - assertA(0 == archive_write_set_compression_none(a)); + assertA(0 == archive_write_add_filter_none(a)); /* 1-byte block size ensures we see only the required bytes. */ /* We're not testing the padding here. */ assertA(0 == archive_write_set_bytes_per_block(a, 1)); diff --git a/contrib/libarchive/libarchive/test/test_write_format_tar.c b/contrib/libarchive/libarchive/test/test_write_format_tar.c index e458617..17f69d8 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_tar.c +++ b/contrib/libarchive/libarchive/test/test_write_format_tar.c @@ -43,7 +43,7 @@ DEFINE_TEST(test_write_format_tar) assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); assertEqualIntA(a, ARCHIVE_OK, - archive_write_set_compression_none(a)); + archive_write_add_filter_none(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_per_block(a, (int)blocksize)); assertEqualIntA(a, ARCHIVE_OK, 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 43401ae..e45e382 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_tar_empty.c +++ b/contrib/libarchive/libarchive/test/test_write_format_tar_empty.c @@ -39,7 +39,7 @@ DEFINE_TEST(test_write_format_tar_empty) /* USTAR format: Create a new archive in memory. */ assert((a = archive_write_new()) != NULL); assertA(0 == archive_write_set_format_ustar(a)); - assertA(0 == archive_write_set_compression_none(a)); + assertA(0 == archive_write_add_filter_none(a)); assertA(0 == archive_write_set_bytes_per_block(a, 512)); assertA(0 == archive_write_set_bytes_in_last_block(a, 512)); assertA(0 == archive_write_open_memory(a, buff, sizeof(buff), &used)); @@ -57,7 +57,7 @@ DEFINE_TEST(test_write_format_tar_empty) /* PAX format: Create a new archive in memory. */ assert((a = archive_write_new()) != NULL); assertA(0 == archive_write_set_format_pax(a)); - assertA(0 == archive_write_set_compression_none(a)); + assertA(0 == archive_write_add_filter_none(a)); assertA(0 == archive_write_set_bytes_per_block(a, 512)); assertA(0 == archive_write_set_bytes_in_last_block(a, 512)); assertA(0 == archive_write_open_memory(a, buff, sizeof(buff), &used)); 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 0047816..c8e0f47 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_tar_sparse.c +++ b/contrib/libarchive/libarchive/test/test_write_format_tar_sparse.c @@ -49,7 +49,7 @@ test_1(void) assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_pax(a)); assertEqualIntA(a, ARCHIVE_OK, - archive_write_set_compression_none(a)); + archive_write_add_filter_none(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_per_block(a, (int)blocksize)); assertEqualIntA(a, ARCHIVE_OK, @@ -85,7 +85,7 @@ test_1(void) ws = 0x81000 - i; assertEqualInt(ws, archive_write_data(a, buff2, ws)); - i += ws; + i += (long)ws; } /* Close out the archive. */ @@ -190,7 +190,7 @@ test_2(void) assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_pax(a)); assertEqualIntA(a, ARCHIVE_OK, - archive_write_set_compression_none(a)); + archive_write_add_filter_none(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_per_block(a, (int)blocksize)); assertEqualIntA(a, ARCHIVE_OK, 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 022ef39..f62415b 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_tar_ustar.c +++ b/contrib/libarchive/libarchive/test/test_write_format_tar_ustar.c @@ -79,7 +79,7 @@ DEFINE_TEST(test_write_format_tar_ustar) assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); assertEqualIntA(a, ARCHIVE_OK, - archive_write_set_compression_none(a)); + archive_write_add_filter_none(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used)); diff --git a/contrib/libarchive/libarchive/test/test_write_format_tar_v7tar.c b/contrib/libarchive/libarchive/test/test_write_format_tar_v7tar.c new file mode 100644 index 0000000..1690995 --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_write_format_tar_v7tar.c @@ -0,0 +1,259 @@ +/*- + * Copyright (c) 2003-2007 Tim Kientzle + * Copyright (c) 2012 Michihiro NAKAJIMA + * 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" +__FBSDID("$FreeBSD$"); + +static int +is_null(const char *p, size_t l) +{ + while (l > 0) { + if (*p != '\0') + return (0); + --l; + ++p; + } + return (1); +} + +/* Verify the contents, then erase them to NUL bytes. */ +/* Tar requires all "unused" bytes be set to NUL; this allows us + * to easily verify that by invoking is_null() over the entire header + * after verifying each field. */ +#define myAssertEqualMem(a,b,s) assertEqualMem(a, b, s); memset(a, 0, s) + +/* + * Detailed verification that 'v7tar' archives are written with + * the correct format. + */ +DEFINE_TEST(test_write_format_tar_v7tar) +{ + struct archive *a; + struct archive_entry *entry; + char *buff, *e; + size_t buffsize = 100000; + size_t used; + int i; + char f99[100]; + char f100[101]; + + for (i = 0; i < 99; ++i) + f99[i] = 'a' + i % 26; + f99[99] = '\0'; + + for (i = 0; i < 100; ++i) + f100[i] = 'A' + i % 26; + f100[100] = '\0'; + + buff = malloc(buffsize); + + /* Create a new archive in memory. */ + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_format_v7tar(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_add_filter_none(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_open_memory(a, buff, buffsize, &used)); + + /* + * Add various files to it. + * TODO: Extend this to cover more filetypes. + */ + + /* "file" with 10 bytes of content */ + assert((entry = archive_entry_new()) != NULL); + archive_entry_set_mtime(entry, 1, 10); + archive_entry_set_pathname(entry, "file"); + archive_entry_set_mode(entry, S_IFREG | 0664); + archive_entry_set_size(entry, 10); + archive_entry_set_uid(entry, 80); + archive_entry_set_gid(entry, 90); + archive_entry_set_dev(entry, 12); + archive_entry_set_ino(entry, 89); + archive_entry_set_nlink(entry, 2); + assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry)); + archive_entry_free(entry); + assertEqualIntA(a, 10, archive_write_data(a, "1234567890", 10)); + + /* Hardlink to "file" with 10 bytes of content */ + assert((entry = archive_entry_new()) != NULL); + archive_entry_set_mtime(entry, 1, 10); + archive_entry_set_pathname(entry, "linkfile"); + archive_entry_set_hardlink(entry, "file"); + archive_entry_set_mode(entry, S_IFREG | 0664); + archive_entry_set_size(entry, 10); + archive_entry_set_uid(entry, 80); + archive_entry_set_gid(entry, 90); + archive_entry_set_dev(entry, 12); + archive_entry_set_ino(entry, 89); + archive_entry_set_nlink(entry, 2); + assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry)); + archive_entry_free(entry); + /* Write of data to dir should fail == zero bytes get written. */ + assertEqualIntA(a, 0, archive_write_data(a, "1234567890", 10)); + + /* "dir" */ + assert((entry = archive_entry_new()) != NULL); + archive_entry_set_mtime(entry, 2, 20); + archive_entry_set_pathname(entry, "dir"); + archive_entry_set_mode(entry, S_IFDIR | 0775); + archive_entry_set_size(entry, 10); + archive_entry_set_nlink(entry, 2); + assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry)); + archive_entry_free(entry); + /* Write of data to dir should fail == zero bytes get written. */ + assertEqualIntA(a, 0, archive_write_data(a, "1234567890", 10)); + + /* "symlink" pointing to "file" */ + assert((entry = archive_entry_new()) != NULL); + archive_entry_set_mtime(entry, 3, 30); + archive_entry_set_pathname(entry, "symlink"); + archive_entry_set_mode(entry, 0664); + archive_entry_set_filetype(entry, AE_IFLNK); + archive_entry_set_symlink(entry,"file"); + archive_entry_set_size(entry, 0); + archive_entry_set_uid(entry, 88); + archive_entry_set_gid(entry, 98); + archive_entry_set_dev(entry, 12); + archive_entry_set_ino(entry, 90); + archive_entry_set_nlink(entry, 1); + assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry)); + archive_entry_free(entry); + + /* file with 99-char filename. */ + assert((entry = archive_entry_new()) != NULL); + archive_entry_set_mtime(entry, 1, 10); + archive_entry_set_pathname(entry, f99); + archive_entry_set_mode(entry, S_IFREG | 0664); + archive_entry_set_size(entry, 0); + archive_entry_set_uid(entry, 82); + archive_entry_set_gid(entry, 93); + archive_entry_set_dev(entry, 102); + archive_entry_set_ino(entry, 7); + archive_entry_set_nlink(entry, 1); + assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry)); + archive_entry_free(entry); + + /* file with 100-char filename. */ + assert((entry = archive_entry_new()) != NULL); + archive_entry_set_mtime(entry, 1, 10); + archive_entry_set_pathname(entry, f100); + archive_entry_set_mode(entry, S_IFREG | 0664); + archive_entry_set_size(entry, 0); + archive_entry_set_uid(entry, 82); + archive_entry_set_gid(entry, 93); + archive_entry_set_dev(entry, 102); + archive_entry_set_ino(entry, 7); + archive_entry_set_nlink(entry, 1); + failure("100-char filename should be rejected"); + assertEqualIntA(a, ARCHIVE_FAILED, archive_write_header(a, entry)); + archive_entry_free(entry); + + /* Close out the archive. */ + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + /* + * Verify the archive format. + */ + e = buff; + + /* "file" */ + myAssertEqualMem(e + 0, "file", 5); /* Filename */ + myAssertEqualMem(e + 100, "000664 ", 8); /* mode */ + myAssertEqualMem(e + 108, "000120 ", 8); /* uid */ + myAssertEqualMem(e + 116, "000132 ", 8); /* gid */ + myAssertEqualMem(e + 124, "00000000012 ", 12); /* size */ + myAssertEqualMem(e + 136, "00000000001 ", 12); /* mtime */ + myAssertEqualMem(e + 148, "005335\0 ", 8); /* checksum */ + myAssertEqualMem(e + 156, "", 1); /* linkflag */ + myAssertEqualMem(e + 157, "", 1); /* linkname */ + assert(is_null(e + 0, 512)); + myAssertEqualMem(e + 512, "1234567890", 10); + assert(is_null(e + 512, 512)); + e += 1024; + + /* hardlink to "file" */ + myAssertEqualMem(e + 0, "linkfile", 9); /* Filename */ + myAssertEqualMem(e + 100, "000664 ", 8); /* mode */ + myAssertEqualMem(e + 108, "000120 ", 8); /* uid */ + myAssertEqualMem(e + 116, "000132 ", 8); /* gid */ + myAssertEqualMem(e + 124, "00000000000 ", 12); /* size */ + myAssertEqualMem(e + 136, "00000000001 ", 12); /* mtime */ + myAssertEqualMem(e + 148, "007131\0 ", 8); /* checksum */ + myAssertEqualMem(e + 156, "1", 1); /* linkflag */ + myAssertEqualMem(e + 157, "file", 5); /* linkname */ + assert(is_null(e + 0, 512)); + e += 512; + + /* "dir" */ + myAssertEqualMem(e + 0, "dir/", 4); /* Filename */ + myAssertEqualMem(e + 100, "000775 ", 8); /* mode */ + myAssertEqualMem(e + 108, "000000 ", 8); /* uid */ + myAssertEqualMem(e + 116, "000000 ", 8); /* gid */ + myAssertEqualMem(e + 124, "00000000000 ", 12); /* size */ + myAssertEqualMem(e + 136, "00000000002 ", 12); /* mtime */ + myAssertEqualMem(e + 148, "005243\0 ", 8); /* checksum */ + myAssertEqualMem(e + 156, "", 1); /* typeflag */ + myAssertEqualMem(e + 157, "", 1); /* linkname */ + assert(is_null(e + 0, 512)); + e += 512; + + /* "symlink" pointing to "file" */ + myAssertEqualMem(e + 0, "symlink", 8); /* Filename */ + myAssertEqualMem(e + 100, "000664 ", 8); /* mode */ + myAssertEqualMem(e + 108, "000130 ", 8); /* uid */ + myAssertEqualMem(e + 116, "000142 ", 8); /* gid */ + myAssertEqualMem(e + 124, "00000000000 ", 12); /* size */ + myAssertEqualMem(e + 136, "00000000003 ", 12); /* mtime */ + myAssertEqualMem(e + 148, "007027\0 ", 8); /* checksum */ + myAssertEqualMem(e + 156, "2", 1); /* linkflag */ + myAssertEqualMem(e + 157, "file", 5); /* linkname */ + assert(is_null(e + 0, 512)); + e += 512; + + /* File with 99-char filename */ + myAssertEqualMem(e + 0, f99, 100); /* Filename */ + myAssertEqualMem(e + 100, "000664 ", 8); /* mode */ + myAssertEqualMem(e + 108, "000122 ", 8); /* uid */ + myAssertEqualMem(e + 116, "000135 ", 8); /* gid */ + myAssertEqualMem(e + 124, "00000000000 ", 12); /* size */ + myAssertEqualMem(e + 136, "00000000001 ", 12); /* mtime */ + myAssertEqualMem(e + 148, "031543\0 ", 8); /* checksum */ + myAssertEqualMem(e + 156, "", 1); /* linkflag */ + myAssertEqualMem(e + 157, "", 1); /* linkname */ + assert(is_null(e + 0, 512)); + e += 512; + + /* TODO: Verify other types of entries. */ + + /* Last entry is end-of-archive marker. */ + assert(is_null(e, 1024)); + e += 1024; + + assertEqualInt((int)used, e - buff); + + free(buff); +} diff --git a/contrib/libarchive/libarchive/test/test_write_format_xar.c b/contrib/libarchive/libarchive/test/test_write_format_xar.c index 449e49d..7cfdbcf 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_xar.c +++ b/contrib/libarchive/libarchive/test/test_write_format_xar.c @@ -46,7 +46,7 @@ test_xar(const char *option) assertEqualIntA(a, ARCHIVE_OK, archive_write_free(a)); return; } - assertA(0 == archive_write_set_compression_none(a)); + assertA(0 == archive_write_add_filter_none(a)); if (option != NULL && archive_write_set_options(a, option) != ARCHIVE_OK) { skipping("option `%s` is not supported on this platform", 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 c9e6c4a..aa26d5d 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_xar_empty.c +++ b/contrib/libarchive/libarchive/test/test_write_format_xar_empty.c @@ -45,7 +45,7 @@ DEFINE_TEST(test_write_format_xar_empty) assertEqualIntA(a, ARCHIVE_OK, archive_write_free(a)); return; } - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_none(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_per_block(a, 1)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_in_last_block(a, 1)); assertEqualIntA(a, ARCHIVE_OK, diff --git a/contrib/libarchive/libarchive/test/test_write_format_zip.c b/contrib/libarchive/libarchive/test/test_write_format_zip.c index 76f88f7..90334a1 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_zip.c +++ b/contrib/libarchive/libarchive/test/test_write_format_zip.c @@ -136,7 +136,7 @@ DEFINE_TEST(test_write_format_zip) #endif assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_option(a, "zip", "compression", compression_type)); - assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_none(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used)); 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 27ebf18..4351c28 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_zip_empty.c +++ b/contrib/libarchive/libarchive/test/test_write_format_zip_empty.c @@ -40,7 +40,7 @@ DEFINE_TEST(test_write_format_zip_empty) /* Zip format: 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_compression_none(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_per_block(a, 1)); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_in_last_block(a, 1)); assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, sizeof(buff), &used)); diff --git a/contrib/libarchive/libarchive/test/test_write_format_zip_no_compression.c b/contrib/libarchive/libarchive/test/test_write_format_zip_no_compression.c index 233f4e7..379a249 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_zip_no_compression.c +++ b/contrib/libarchive/libarchive/test/test_write_format_zip_no_compression.c @@ -99,7 +99,7 @@ DEFINE_TEST(test_write_format_zip_no_compression) assert((a = archive_write_new()) != NULL); assertA(0 == archive_write_set_format_zip(a)); assertA(0 == archive_write_set_options(a, "zip:compression=store")); - assertA(0 == archive_write_set_compression_none(a)); + assertA(0 == archive_write_add_filter_none(a)); assertA(0 == archive_write_set_bytes_per_block(a, 1)); assertA(0 == archive_write_set_bytes_in_last_block(a, 1)); assertA(0 == archive_write_open_memory(a, buff, sizeof(buff), &used)); diff --git a/contrib/libarchive/libarchive/test/test_write_open_memory.c b/contrib/libarchive/libarchive/test/test_write_open_memory.c index a7f1e58..c2cf6a5 100644 --- a/contrib/libarchive/libarchive/test/test_write_open_memory.c +++ b/contrib/libarchive/libarchive/test/test_write_open_memory.c @@ -72,9 +72,9 @@ DEFINE_TEST(test_write_open_memory) archive_write_close(a)); else { assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); - assertEqualInt(used, archive_position_compressed(a)); - assertEqualInt(archive_position_compressed(a), - archive_position_uncompressed(a)); + assertEqualInt(used, archive_filter_bytes(a, -1)); + assertEqualInt(archive_filter_bytes(a, -1), + archive_filter_bytes(a, 0)); } assertEqualInt(ARCHIVE_OK, archive_write_free(a)); assertEqualInt(buff[i], 0xAE); diff --git a/contrib/libarchive/libarchive/test/test_write_zip_set_compression_store.c b/contrib/libarchive/libarchive/test/test_write_zip_set_compression_store.c new file mode 100644 index 0000000..f77eb1b --- /dev/null +++ b/contrib/libarchive/libarchive/test/test_write_zip_set_compression_store.c @@ -0,0 +1,308 @@ +/*- + * Copyright (c) 2012 Matthias Brantner + * 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" + +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 int i2(const char *p) { return ((p[0] & 0xff) | ((p[1] & 0xff) << 8)); } +static int i4(const char *p) { return (i2(p) | (i2(p + 2) << 16)); } + +DEFINE_TEST(test_write_zip_set_compression_store) +{ + /* Buffer data */ + struct archive *a; + struct archive_entry *entry; + char buff[100000]; + const char *buffend; + /* p is the pointer to walk over the central directory, + * q walks over the local headers, the data and the data descriptors. */ + const char *p, *q; + size_t used; + + /* File data */ + char file_name[] = "file"; + char file_data1[] = {'1', '2', '3', '4', '5'}; + char file_data2[] = {'6', '7', '8', '9', '0'}; + int file_perm = 00644; + short file_uid = 10; + short file_gid = 20; + + /* Folder data */ + char folder_name[] = "folder/"; + int folder_perm = 00755; + short folder_uid = 30; + short folder_gid = 40; + + /* Time data */ + time_t t = time(NULL); + struct tm *tm = localtime(&t); + + /* Misc variables */ + unsigned long crc; + + /* Create new ZIP archive in memory without padding. */ + assert((a = archive_write_new()) != NULL); + assertA(0 == archive_write_set_format_zip(a)); + assertA(0 == archive_write_add_filter_none(a)); + assertA(0 == archive_write_set_bytes_per_block(a, 1)); + assertA(0 == archive_write_set_bytes_in_last_block(a, 1)); + assertA(0 == archive_write_open_memory(a, buff, sizeof(buff), &used)); + + /* Write entries. */ + + /* Regular file */ + assert((entry = archive_entry_new()) != NULL); + archive_entry_set_pathname(entry, file_name); + archive_entry_set_mode(entry, S_IFREG | 0644); + archive_entry_set_size(entry, sizeof(file_data1) + sizeof(file_data2)); + archive_entry_set_uid(entry, file_uid); + archive_entry_set_gid(entry, file_gid); + archive_entry_set_mtime(entry, t, 0); + archive_entry_set_atime(entry, t, 0); + archive_entry_set_ctime(entry, t, 0); + archive_write_zip_set_compression_store(a); + assertEqualIntA(a, 0, archive_write_header(a, entry)); + assertEqualIntA(a, sizeof(file_data1), archive_write_data(a, file_data1, sizeof(file_data1))); + assertEqualIntA(a, sizeof(file_data2), archive_write_data(a, file_data2, sizeof(file_data2))); + archive_entry_free(entry); + archive_write_finish_entry(a); + + /* Folder */ + assert((entry = archive_entry_new()) != NULL); + archive_entry_set_pathname(entry, folder_name); + archive_entry_set_mode(entry, S_IFDIR | folder_perm); + archive_entry_set_size(entry, 0); + archive_entry_set_uid(entry, folder_uid); + archive_entry_set_gid(entry, folder_gid); + archive_entry_set_mtime(entry, t, 0); + archive_entry_set_atime(entry, t, 0); + archive_entry_set_ctime(entry, t, 0); + archive_write_zip_set_compression_store(a); + assertEqualIntA(a, 0, archive_write_header(a, entry)); + archive_entry_free(entry); + archive_write_finish_entry(a); + + /* Close the archive . */ + assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + /* Remember the end of the archive in memory. */ + buffend = buff + used; + + /* Verify "End of Central Directory" record. */ + /* Get address of end-of-central-directory 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)); + failure("CD start (%d) + CD length (%d) should == archive size - 22", + i4(p + 12), i4(p + 16)); + assertEqualInt(i4(p + 12) + i4(p + 16), used - 22); + failure("no zip comment"); + assertEqualInt(i2(p + 20), 0); + + /* Get address of first entry in central directory. */ + 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 + 20); /* Version made by */ + assertEqualInt(i2(p + 6), 20); /* Version needed to extract */ + assertEqualInt(i2(p + 8), 8); /* Flags */ + assertEqualInt(i2(p + 10), 0); /* Compression method */ + assertEqualInt(i2(p + 12), (tm->tm_hour * 2048) + (tm->tm_min * 32) + (tm->tm_sec / 2)); /* File time */ + assertEqualInt(i2(p + 14), ((tm->tm_year - 80) * 512) + ((tm->tm_mon + 1) * 32) + tm->tm_mday); /* File date */ + crc = bitcrc32(0, file_data1, sizeof(file_data1)); + crc = bitcrc32(crc, file_data2, sizeof(file_data2)); + assertEqualInt(i4(p + 16), crc); /* CRC-32 */ + 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), 13); /* 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 */ + 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 = p + 46 + strlen(file_name); + assertEqualInt(i2(p), 0x5455); /* 'UT' extension header */ + assertEqualInt(i2(p + 2), 5); /* 'UT' size */ + assertEqualInt(p[4], 7); /* 'UT' flags */ + assertEqualInt(i4(p + 5), t); /* 'UT' mtime */ + p = p + 9; + assertEqualInt(i2(p), 0x7875); /* 'ux' extension header */ + assertEqualInt(i2(p + 2), 0); /* 'ux' size */ + p = p + 4; + + /* Verify local header of file entry. */ + q = buff; + assertEqualMem(q, "PK\003\004", 4); /* Signature */ + assertEqualInt(i2(q + 4), 20); /* Version needed to extract */ + assertEqualInt(i2(q + 6), 8); /* Flags */ + 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(i2(q + 26), strlen(file_name)); /* Pathname length */ + assertEqualInt(i2(q + 28), 32); /* Extra field length */ + assertEqualMem(q + 30, file_name, strlen(file_name)); /* Pathname */ + q = q + 30 + strlen(file_name); + assertEqualInt(i2(q), 0x5455); /* 'UT' extension header */ + assertEqualInt(i2(q + 2), 13); /* 'UT' size */ + assertEqualInt(q[4], 7); /* 'UT' flags */ + assertEqualInt(i4(q + 5), t); /* 'UT' mtime */ + assertEqualInt(i4(q + 9), t); /* 'UT' atime */ + assertEqualInt(i4(q + 13), t); /* 'UT' ctime */ + q = q + 17; + assertEqualInt(i2(q), 0x7875); /* 'ux' extension header */ + assertEqualInt(i2(q + 2), 11); /* 'ux' size */ + assertEqualInt(q[4], 1); /* 'ux' version */ + assertEqualInt(q[5], 4); /* 'ux' uid size */ + assertEqualInt(i4(q + 6), file_uid); /* 'Ux' UID */ + assertEqualInt(q[10], 4); /* 'ux' gid size */ + assertEqualInt(i4(q + 11), file_gid); /* 'Ux' GID */ + q = q + 15; + + /* Verify data of file entry. */ + assertEqualMem(q, file_data1, sizeof(file_data1)); + assertEqualMem(q + sizeof(file_data1), file_data2, sizeof(file_data2)); + q = q + sizeof(file_data1) + sizeof(file_data2); + + /* Verify data descriptor of file entry. */ + assertEqualMem(q, "PK\007\010", 4); /* Signature */ + assertEqualInt(i4(q + 4), crc); /* CRC-32 */ + assertEqualInt(i4(q + 8), sizeof(file_data1) + sizeof(file_data2)); /* Compressed size */ + assertEqualInt(i4(q + 12), sizeof(file_data1) + sizeof(file_data2)); /* Uncompressed size */ + q = q + 16; + + /* Verify folder entry in central directory. */ + assertEqualMem(p, "PK\001\002", 4); /* Signature */ + assertEqualInt(i2(p + 4), 3 * 256 + 20); /* Version made by */ + assertEqualInt(i2(p + 6), 20); /* Version needed to extract */ + assertEqualInt(i2(p + 8), 8); /* Flags */ + assertEqualInt(i2(p + 10), 0); /* Compression method */ + assertEqualInt(i2(p + 12), (tm->tm_hour * 2048) + (tm->tm_min * 32) + (tm->tm_sec / 2)); /* File time */ + assertEqualInt(i2(p + 14), ((tm->tm_year - 80) * 512) + ((tm->tm_mon + 1) * 32) + tm->tm_mday); /* File date */ + crc = 0; + assertEqualInt(i4(p + 16), crc); /* CRC-32 */ + 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), 13); /* 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 */ + assertEqualInt(i4(p + 38) >> 16 & 01777, folder_perm); /* External file attrs */ + 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), 5); /* 'UT' size */ + assertEqualInt(p[4], 7); /* 'UT' flags */ + assertEqualInt(i4(p + 5), t); /* 'UT' mtime */ + p = p + 9; + assertEqualInt(i2(p), 0x7875); /* 'ux' extension header */ + assertEqualInt(i2(p + 2), 0); /* 'ux' size */ + /*p = p + 4;*/ + + /* Verify local header of folder entry. */ + assertEqualMem(q, "PK\003\004", 4); /* Signature */ + assertEqualInt(i2(q + 4), 20); /* Version needed to extract */ + assertEqualInt(i2(q + 6), 8); /* Flags */ + 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), 0); /* Compressed size */ + assertEqualInt(i4(q + 22), 0); /* Uncompressed size */ + assertEqualInt(i2(q + 26), strlen(folder_name)); /* Pathname length */ + assertEqualInt(i2(q + 28), 32); /* Extra field length */ + assertEqualMem(q + 30, folder_name, strlen(folder_name)); /* Pathname */ + q = q + 30 + strlen(folder_name); + assertEqualInt(i2(q), 0x5455); /* 'UT' extension header */ + assertEqualInt(i2(q + 2), 13); /* 'UT' size */ + assertEqualInt(q[4], 7); /* 'UT' flags */ + assertEqualInt(i4(q + 5), t); /* 'UT' mtime */ + assertEqualInt(i4(q + 9), t); /* 'UT' atime */ + assertEqualInt(i4(q + 13), t); /* 'UT' ctime */ + q = q + 17; + assertEqualInt(i2(q), 0x7875); /* 'ux' extension header */ + assertEqualInt(i2(q + 2), 11); /* 'ux' size */ + assertEqualInt(q[4], 1); /* 'ux' version */ + assertEqualInt(q[5], 4); /* 'ux' uid size */ + assertEqualInt(i4(q + 6), folder_uid); /* 'ux' UID */ + assertEqualInt(q[10], 4); /* 'ux' gid size */ + assertEqualInt(i4(q + 11), folder_gid); /* 'ux' GID */ + q = q + 15; + + /* There should not be any data in the folder entry, + * meaning next is the data descriptor header. */ + + /* Verify data descriptor of folder entry. */ + assertEqualMem(q, "PK\007\010", 4); /* Signature */ + assertEqualInt(i4(q + 4), crc); /* CRC-32 */ + assertEqualInt(i4(q + 8), 0); /* Compressed size */ + assertEqualInt(i4(q + 12), 0); /* Uncompressed size */ + /*q = q + 16;*/ +} |