- Auto-sync with upstream branch release/2.25/master
Upstream commit: edcf13e25c1559558a6f12ff5a71d4136a39235e - PTHREAD_STACK_MIN is too small on x86-64 (#1527887) - CVE-2018-1000001: Make getcwd fail if it cannot obtain an absolute path (#1533837) - CVE-2017-16997: Check for empty tokens before dynamic string token expansion in the dynamic linker (#1526866) - CVE-2017-15804: glob: Fix overflow in GLOB_TILDE unescaping (swbz#22332) - CVE-2017-15670: glob: Fix one-byte overflow (#1504807) - CVE-2017-15671: glob: Fix memory leak (#1504807) - nss_files: Avoid large buffers with many host addresses (swbz#22078) - nss_files: Use struct scratch_buffer for gethostbyname (swbz#18023) - posix: Fix improper assert in Linux posix_spawn (BZ#22273) - Don't use IFUNC resolver for longjmp or system in libpthread (swbz#21041) - x86-64: Use fxsave/xsave/xsavec in _dl_runtime_resolve (swbz#21265)
This commit is contained in:
parent
bdd2e8da08
commit
ab210104fb
File diff suppressed because it is too large
Load Diff
@ -1,37 +0,0 @@
|
||||
Add the check_mul_overflow_size_t function from this upstream commit:
|
||||
|
||||
commit 2e0bbbfbf95fc9e22692e93658a6fbdd2d4554da
|
||||
Author: Dennis Wölfing <denniswoelfing@gmx.de>
|
||||
Date: Tue May 30 18:26:19 2017 -0300
|
||||
|
||||
Add reallocarray function
|
||||
|
||||
diff --git a/malloc/malloc-internal.h b/malloc/malloc-internal.h
|
||||
index de6103d7e1e06799..dbd801a58eeceabf 100644
|
||||
--- a/malloc/malloc-internal.h
|
||||
+++ b/malloc/malloc-internal.h
|
||||
@@ -81,5 +81,24 @@ void __malloc_fork_unlock_parent (void) internal_function attribute_hidden;
|
||||
/* Called in the child process after a fork. */
|
||||
void __malloc_fork_unlock_child (void) internal_function attribute_hidden;
|
||||
|
||||
+/* Set *RESULT to LEFT * RIGHT. Return true if the multiplication
|
||||
+ overflowed. */
|
||||
+static inline bool
|
||||
+check_mul_overflow_size_t (size_t left, size_t right, size_t *result)
|
||||
+{
|
||||
+#if __GNUC__ >= 5
|
||||
+ return __builtin_mul_overflow (left, right, result);
|
||||
+#else
|
||||
+ /* size_t is unsigned so the behavior on overflow is defined. */
|
||||
+ *result = left * right;
|
||||
+ size_t half_size_t = ((size_t) 1) << (8 * sizeof (size_t) / 2);
|
||||
+ if (__glibc_unlikely ((left | right) >= half_size_t))
|
||||
+ {
|
||||
+ if (__glibc_unlikely (right != 0 && *result / right != left))
|
||||
+ return true;
|
||||
+ }
|
||||
+ return false;
|
||||
+#endif
|
||||
+}
|
||||
|
||||
#endif /* _MALLOC_INTERNAL_H */
|
File diff suppressed because it is too large
Load Diff
@ -1,119 +0,0 @@
|
||||
commit f8bf87face3304f216bcd838081fa33bb4976ac6
|
||||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Tue Jun 13 17:03:56 2017 +0200
|
||||
|
||||
dynarray: Implement begin/end functions in the spirit of C++
|
||||
|
||||
diff --git a/malloc/dynarray-skeleton.c b/malloc/dynarray-skeleton.c
|
||||
index 7a10e083f477dd7a..7ec58788087e80d3 100644
|
||||
--- a/malloc/dynarray-skeleton.c
|
||||
+++ b/malloc/dynarray-skeleton.c
|
||||
@@ -65,6 +65,8 @@
|
||||
bool DYNARRAY_PREFIX##has_failed (const struct DYNARRAY_STRUCT *);
|
||||
void DYNARRAY_PREFIX##mark_failed (struct DYNARRAY_STRUCT *);
|
||||
size_t DYNARRAY_PREFIX##size (const struct DYNARRAY_STRUCT *);
|
||||
+ DYNARRAY_ELEMENT *DYNARRAY_PREFIX##begin (const struct DYNARRAY_STRUCT *);
|
||||
+ DYNARRAY_ELEMENT *DYNARRAY_PREFIX##end (const struct DYNARRAY_STRUCT *);
|
||||
DYNARRAY_ELEMENT *DYNARRAY_PREFIX##at (struct DYNARRAY_STRUCT *, size_t);
|
||||
void DYNARRAY_PREFIX##add (struct DYNARRAY_STRUCT *, DYNARRAY_ELEMENT);
|
||||
DYNARRAY_ELEMENT *DYNARRAY_PREFIX##emplace (struct DYNARRAY_STRUCT *);
|
||||
@@ -248,6 +250,26 @@ DYNARRAY_NAME (at) (struct DYNARRAY_STRUCT *list, size_t index)
|
||||
return list->dynarray_header.array + index;
|
||||
}
|
||||
|
||||
+/* Return a pointer to the first array element, if any. For a
|
||||
+ zero-length array, the pointer can be NULL even though the dynamic
|
||||
+ array has not entered the failure state. */
|
||||
+__attribute__ ((nonnull (1)))
|
||||
+static inline DYNARRAY_ELEMENT *
|
||||
+DYNARRAY_NAME (begin) (struct DYNARRAY_STRUCT *list)
|
||||
+{
|
||||
+ return list->dynarray_header.array;
|
||||
+}
|
||||
+
|
||||
+/* Return a pointer one element past the last array element. For a
|
||||
+ zero-length array, the pointer can be NULL even though the dynamic
|
||||
+ array has not entered the failure state. */
|
||||
+__attribute__ ((nonnull (1)))
|
||||
+static inline DYNARRAY_ELEMENT *
|
||||
+DYNARRAY_NAME (end) (struct DYNARRAY_STRUCT *list)
|
||||
+{
|
||||
+ return list->dynarray_header.array + list->dynarray_header.used;
|
||||
+}
|
||||
+
|
||||
/* Internal function. Slow path for the add function below. */
|
||||
static void
|
||||
DYNARRAY_NAME (add__) (struct DYNARRAY_STRUCT *list, DYNARRAY_ELEMENT item)
|
||||
diff --git a/malloc/tst-dynarray-shared.h b/malloc/tst-dynarray-shared.h
|
||||
index faba66f580733a2d..1de9c04be88843d0 100644
|
||||
--- a/malloc/tst-dynarray-shared.h
|
||||
+++ b/malloc/tst-dynarray-shared.h
|
||||
@@ -73,5 +73,8 @@ struct str_array
|
||||
TEST_VERIFY_EXIT (dynarray_##type##_emplace (dyn) == NULL); \
|
||||
dynarray_##type##_free (dyn); \
|
||||
CHECK_INIT_STATE (type, (dyn)); \
|
||||
+ /* These functions should not assert. */ \
|
||||
+ dynarray_##type##_begin (dyn); \
|
||||
+ dynarray_##type##_end (dyn); \
|
||||
(void) 0; \
|
||||
})
|
||||
diff --git a/malloc/tst-dynarray.c b/malloc/tst-dynarray.c
|
||||
index 7aee85aa39ff2e0b..2206d75e318aaa3f 100644
|
||||
--- a/malloc/tst-dynarray.c
|
||||
+++ b/malloc/tst-dynarray.c
|
||||
@@ -111,6 +111,13 @@ test_int (void)
|
||||
}
|
||||
TEST_VERIFY_EXIT (dynarray_int_size (&dyn) == count);
|
||||
TEST_VERIFY_EXIT (count <= dyn.dynarray_header.allocated);
|
||||
+ if (count > 0)
|
||||
+ {
|
||||
+ TEST_VERIFY (dynarray_int_begin (&dyn)
|
||||
+ == dynarray_int_at (&dyn, 0));
|
||||
+ TEST_VERIFY (dynarray_int_end (&dyn)
|
||||
+ == dynarray_int_at (&dyn, count - 1) + 1);
|
||||
+ }
|
||||
unsigned final_count;
|
||||
bool heap_array = dyn.dynarray_header.array != dyn.scratch;
|
||||
if (do_remove_last)
|
||||
@@ -123,6 +130,13 @@ test_int (void)
|
||||
}
|
||||
else
|
||||
final_count = count;
|
||||
+ if (final_count > 0)
|
||||
+ {
|
||||
+ TEST_VERIFY (dynarray_int_begin (&dyn)
|
||||
+ == dynarray_int_at (&dyn, 0));
|
||||
+ TEST_VERIFY (dynarray_int_end (&dyn)
|
||||
+ == dynarray_int_at (&dyn, final_count - 1) + 1);
|
||||
+ }
|
||||
if (do_clear)
|
||||
{
|
||||
dynarray_int_clear (&dyn);
|
||||
@@ -225,6 +239,13 @@ test_str (void)
|
||||
}
|
||||
TEST_VERIFY_EXIT (dynarray_str_size (&dyn) == count);
|
||||
TEST_VERIFY_EXIT (count <= dyn.dynarray_header.allocated);
|
||||
+ if (count > 0)
|
||||
+ {
|
||||
+ TEST_VERIFY (dynarray_str_begin (&dyn)
|
||||
+ == dynarray_str_at (&dyn, 0));
|
||||
+ TEST_VERIFY (dynarray_str_end (&dyn)
|
||||
+ == dynarray_str_at (&dyn, count - 1) + 1);
|
||||
+ }
|
||||
unsigned final_count;
|
||||
bool heap_array = dyn.dynarray_header.array != dyn.scratch;
|
||||
if (do_remove_last)
|
||||
@@ -237,6 +258,13 @@ test_str (void)
|
||||
}
|
||||
else
|
||||
final_count = count;
|
||||
+ if (final_count > 0)
|
||||
+ {
|
||||
+ TEST_VERIFY (dynarray_str_begin (&dyn)
|
||||
+ == dynarray_str_at (&dyn, 0));
|
||||
+ TEST_VERIFY (dynarray_str_end (&dyn)
|
||||
+ == dynarray_str_at (&dyn, final_count - 1) + 1);
|
||||
+ }
|
||||
if (do_clear)
|
||||
{
|
||||
dynarray_str_clear (&dyn);
|
@ -1,114 +0,0 @@
|
||||
commit 5898f4548efdcd7c0fd437a74eeb80facc51a117
|
||||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Wed Aug 30 20:10:56 2017 +0200
|
||||
|
||||
dynarray: Set errno on overflow-induced allocation failure
|
||||
|
||||
This allows the caller to return directly on such an error, with an
|
||||
appropriate errno value.
|
||||
|
||||
diff --git a/malloc/dynarray_emplace_enlarge.c b/malloc/dynarray_emplace_enlarge.c
|
||||
index dfc70017cec23800..0fb032765cc99952 100644
|
||||
--- a/malloc/dynarray_emplace_enlarge.c
|
||||
+++ b/malloc/dynarray_emplace_enlarge.c
|
||||
@@ -17,6 +17,7 @@
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <dynarray.h>
|
||||
+#include <errno.h>
|
||||
#include <malloc-internal.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
@@ -43,8 +44,11 @@ __libc_dynarray_emplace_enlarge (struct dynarray_header *list,
|
||||
{
|
||||
new_allocated = list->allocated + list->allocated / 2 + 1;
|
||||
if (new_allocated <= list->allocated)
|
||||
- /* Overflow. */
|
||||
- return false;
|
||||
+ {
|
||||
+ /* Overflow. */
|
||||
+ __set_errno (ENOMEM);
|
||||
+ return false;
|
||||
+ }
|
||||
}
|
||||
|
||||
size_t new_size;
|
||||
diff --git a/malloc/dynarray_resize.c b/malloc/dynarray_resize.c
|
||||
index e6dc9fbc68587de4..63c981bf61f67145 100644
|
||||
--- a/malloc/dynarray_resize.c
|
||||
+++ b/malloc/dynarray_resize.c
|
||||
@@ -17,6 +17,7 @@
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#include <dynarray.h>
|
||||
+#include <errno.h>
|
||||
#include <malloc-internal.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
@@ -38,7 +39,11 @@ __libc_dynarray_resize (struct dynarray_header *list, size_t size,
|
||||
|
||||
size_t new_size_bytes;
|
||||
if (check_mul_overflow_size_t (size, element_size, &new_size_bytes))
|
||||
- return false;
|
||||
+ {
|
||||
+ /* Overflow. */
|
||||
+ __set_errno (ENOMEM);
|
||||
+ return false;
|
||||
+ }
|
||||
void *new_array;
|
||||
if (list->array == scratch)
|
||||
{
|
||||
diff --git a/malloc/tst-dynarray.c b/malloc/tst-dynarray.c
|
||||
index 2206d75e318aaa3f..d11f7bb8a343a16a 100644
|
||||
--- a/malloc/tst-dynarray.c
|
||||
+++ b/malloc/tst-dynarray.c
|
||||
@@ -18,6 +18,9 @@
|
||||
|
||||
#include "tst-dynarray-shared.h"
|
||||
|
||||
+#include <errno.h>
|
||||
+#include <stdint.h>
|
||||
+
|
||||
#define DYNARRAY_STRUCT dynarray_long
|
||||
#define DYNARRAY_ELEMENT long
|
||||
#define DYNARRAY_PREFIX dynarray_long_
|
||||
@@ -463,6 +466,31 @@ test_long_init (void)
|
||||
}
|
||||
}
|
||||
|
||||
+/* Test overflow in resize. */
|
||||
+static void
|
||||
+test_long_overflow (void)
|
||||
+{
|
||||
+ {
|
||||
+ struct dynarray_long dyn;
|
||||
+ dynarray_long_init (&dyn);
|
||||
+ errno = EINVAL;
|
||||
+ TEST_VERIFY (!dynarray_long_resize
|
||||
+ (&dyn, (SIZE_MAX / sizeof (long)) + 1));
|
||||
+ TEST_VERIFY (errno == ENOMEM);
|
||||
+ TEST_VERIFY (dynarray_long_has_failed (&dyn));
|
||||
+ }
|
||||
+
|
||||
+ {
|
||||
+ struct dynarray_long_noscratch dyn;
|
||||
+ dynarray_long_noscratch_init (&dyn);
|
||||
+ errno = EINVAL;
|
||||
+ TEST_VERIFY (!dynarray_long_noscratch_resize
|
||||
+ (&dyn, (SIZE_MAX / sizeof (long)) + 1));
|
||||
+ TEST_VERIFY (errno == ENOMEM);
|
||||
+ TEST_VERIFY (dynarray_long_noscratch_has_failed (&dyn));
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
/* Test NUL-terminated string construction with the add function and
|
||||
the simple finalize function. */
|
||||
static void
|
||||
@@ -538,6 +566,7 @@ do_test (void)
|
||||
test_int ();
|
||||
test_str ();
|
||||
test_long_init ();
|
||||
+ test_long_overflow ();
|
||||
test_zstr ();
|
||||
return 0;
|
||||
}
|
@ -1,22 +0,0 @@
|
||||
commit ab5ac271e6210fa0af11cf3ca525ce573bc47c48
|
||||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Wed Sep 6 11:25:14 2017 +0200
|
||||
|
||||
__libc_dynarray_emplace_enlarge: Add missing else
|
||||
|
||||
Before, arrays of small elements received a starting allocation size of
|
||||
8, not 16.
|
||||
|
||||
diff --git a/malloc/dynarray_emplace_enlarge.c b/malloc/dynarray_emplace_enlarge.c
|
||||
index 0fb032765cc99952..a15245f4cb3d4288 100644
|
||||
--- a/malloc/dynarray_emplace_enlarge.c
|
||||
+++ b/malloc/dynarray_emplace_enlarge.c
|
||||
@@ -33,7 +33,7 @@ __libc_dynarray_emplace_enlarge (struct dynarray_header *list,
|
||||
size. */
|
||||
if (element_size < 4)
|
||||
new_allocated = 16;
|
||||
- if (element_size < 8)
|
||||
+ else if (element_size < 8)
|
||||
new_allocated = 8;
|
||||
else
|
||||
new_allocated = 4;
|
@ -1,17 +0,0 @@
|
||||
Add <libc-pointer-arith.h> to simplify backports.
|
||||
|
||||
Introduced upstream as part of this commit:
|
||||
|
||||
commit 9090848d0607e93fb08a1d68d9f263846ee33f02
|
||||
Author: Zack Weinberg <zackw@panix.com>
|
||||
Date: Sun Feb 26 20:17:52 2017 -0500
|
||||
|
||||
Narrowing the visibility of libc-internal.h even further.
|
||||
|
||||
diff --git a/include/libc-pointer-arith.h b/include/libc-pointer-arith.h
|
||||
new file mode 100644
|
||||
index 0000000000000000..5876a41e8e5fcc15
|
||||
--- /dev/null
|
||||
+++ b/include/libc-pointer-arith.h
|
||||
@@ -0,0 +1 @@
|
||||
+#include <libc-internal.h>
|
271
glibc-rh1315108-glob.patch
Normal file
271
glibc-rh1315108-glob.patch
Normal file
@ -0,0 +1,271 @@
|
||||
commit 5a79f97554af6f2eb0a654f844b3d1f56937064d
|
||||
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
|
||||
Date: Mon Sep 4 17:00:03 2017 -0300
|
||||
|
||||
posix: Fix getpwnam_r usage (BZ #1062)
|
||||
|
||||
This patch fixes longstanding misuse of errno after getpwnam_r,
|
||||
which returns an error number rather than setting errno. This is
|
||||
sync with gnulib commit 5db9301.
|
||||
|
||||
Checked on x86_64-linux-gnu and on a build using build-many-glibcs.py
|
||||
for all major architectures.
|
||||
|
||||
[BZ #1062]
|
||||
* posix/glob.c (glob): Port recent patches to platforms
|
||||
lacking getpwnam_r.
|
||||
(glob): Fix longstanding misuse of errno after getpwnam_r, which
|
||||
returns an error number rather than setting errno.
|
||||
|
||||
diff --git a/posix/glob.c b/posix/glob.c
|
||||
index c761c0861ddb49ea..70434745f57f8ff5 100644
|
||||
--- a/posix/glob.c
|
||||
+++ b/posix/glob.c
|
||||
@@ -15,10 +15,6 @@
|
||||
License along with the GNU C Library; if not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
-#ifndef _LIBC
|
||||
-# include <config.h>
|
||||
-#endif
|
||||
-
|
||||
#include <glob.h>
|
||||
|
||||
#include <errno.h>
|
||||
@@ -39,10 +35,6 @@
|
||||
#endif
|
||||
|
||||
#include <errno.h>
|
||||
-#ifndef __set_errno
|
||||
-# define __set_errno(val) errno = (val)
|
||||
-#endif
|
||||
-
|
||||
#include <dirent.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
@@ -78,12 +70,8 @@
|
||||
|
||||
#include <flexmember.h>
|
||||
#include <glob_internal.h>
|
||||
+#include <scratch_buffer.h>
|
||||
|
||||
-#ifdef _SC_GETPW_R_SIZE_MAX
|
||||
-# define GETPW_R_SIZE_MAX() sysconf (_SC_GETPW_R_SIZE_MAX)
|
||||
-#else
|
||||
-# define GETPW_R_SIZE_MAX() (-1)
|
||||
-#endif
|
||||
#ifdef _SC_LOGIN_NAME_MAX
|
||||
# define GET_LOGIN_NAME_MAX() sysconf (_SC_LOGIN_NAME_MAX)
|
||||
#else
|
||||
@@ -651,97 +639,36 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
|
||||
if (success)
|
||||
{
|
||||
struct passwd *p;
|
||||
- char *malloc_pwtmpbuf = NULL;
|
||||
- char *pwtmpbuf;
|
||||
+ struct scratch_buffer pwtmpbuf;
|
||||
+ scratch_buffer_init (&pwtmpbuf);
|
||||
# if defined HAVE_GETPWNAM_R || defined _LIBC
|
||||
- long int pwbuflenmax = GETPW_R_SIZE_MAX ();
|
||||
- size_t pwbuflen = pwbuflenmax;
|
||||
struct passwd pwbuf;
|
||||
- int save = errno;
|
||||
|
||||
-# ifndef _LIBC
|
||||
- if (! (0 < pwbuflenmax && pwbuflenmax <= SIZE_MAX))
|
||||
- /* 'sysconf' does not support _SC_GETPW_R_SIZE_MAX.
|
||||
- Try a moderate value. */
|
||||
- pwbuflen = 1024;
|
||||
-# endif
|
||||
- if (glob_use_alloca (alloca_used, pwbuflen))
|
||||
- pwtmpbuf = alloca_account (pwbuflen, alloca_used);
|
||||
- else
|
||||
+ while (getpwnam_r (name, &pwbuf,
|
||||
+ pwtmpbuf.data, pwtmpbuf.length, &p)
|
||||
+ == ERANGE)
|
||||
{
|
||||
- pwtmpbuf = malloc (pwbuflen);
|
||||
- if (pwtmpbuf == NULL)
|
||||
+ if (!scratch_buffer_grow (&pwtmpbuf))
|
||||
{
|
||||
- if (__glibc_unlikely (malloc_name))
|
||||
- free (name);
|
||||
retval = GLOB_NOSPACE;
|
||||
goto out;
|
||||
}
|
||||
- malloc_pwtmpbuf = pwtmpbuf;
|
||||
- }
|
||||
-
|
||||
- while (getpwnam_r (name, &pwbuf, pwtmpbuf, pwbuflen, &p)
|
||||
- != 0)
|
||||
- {
|
||||
- size_t newlen;
|
||||
- bool v;
|
||||
- if (errno != ERANGE)
|
||||
- {
|
||||
- p = NULL;
|
||||
- break;
|
||||
- }
|
||||
- v = size_add_wrapv (pwbuflen, pwbuflen, &newlen);
|
||||
- if (!v && malloc_pwtmpbuf == NULL
|
||||
- && glob_use_alloca (alloca_used, newlen))
|
||||
- pwtmpbuf = extend_alloca_account (pwtmpbuf, pwbuflen,
|
||||
- newlen, alloca_used);
|
||||
- else
|
||||
- {
|
||||
- char *newp = (v ? NULL
|
||||
- : realloc (malloc_pwtmpbuf, newlen));
|
||||
- if (newp == NULL)
|
||||
- {
|
||||
- free (malloc_pwtmpbuf);
|
||||
- if (__glibc_unlikely (malloc_name))
|
||||
- free (name);
|
||||
- retval = GLOB_NOSPACE;
|
||||
- goto out;
|
||||
- }
|
||||
- malloc_pwtmpbuf = pwtmpbuf = newp;
|
||||
- }
|
||||
- pwbuflen = newlen;
|
||||
- __set_errno (save);
|
||||
}
|
||||
# else
|
||||
p = getpwnam (name);
|
||||
# endif
|
||||
- if (__glibc_unlikely (malloc_name))
|
||||
- free (name);
|
||||
if (p != NULL)
|
||||
{
|
||||
- if (malloc_pwtmpbuf == NULL)
|
||||
- home_dir = p->pw_dir;
|
||||
- else
|
||||
+ home_dir = strdup (p->pw_dir);
|
||||
+ malloc_home_dir = 1;
|
||||
+ if (home_dir == NULL)
|
||||
{
|
||||
- size_t home_dir_len = strlen (p->pw_dir) + 1;
|
||||
- if (glob_use_alloca (alloca_used, home_dir_len))
|
||||
- home_dir = alloca_account (home_dir_len,
|
||||
- alloca_used);
|
||||
- else
|
||||
- {
|
||||
- home_dir = malloc (home_dir_len);
|
||||
- if (home_dir == NULL)
|
||||
- {
|
||||
- free (pwtmpbuf);
|
||||
- retval = GLOB_NOSPACE;
|
||||
- goto out;
|
||||
- }
|
||||
- malloc_home_dir = 1;
|
||||
- }
|
||||
- memcpy (home_dir, p->pw_dir, home_dir_len);
|
||||
+ scratch_buffer_free (&pwtmpbuf);
|
||||
+ retval = GLOB_NOSPACE;
|
||||
+ goto out;
|
||||
}
|
||||
}
|
||||
- free (malloc_pwtmpbuf);
|
||||
+ scratch_buffer_free (&pwtmpbuf);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -878,61 +805,21 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
|
||||
/* Look up specific user's home directory. */
|
||||
{
|
||||
struct passwd *p;
|
||||
- char *malloc_pwtmpbuf = NULL;
|
||||
+ struct scratch_buffer pwtmpbuf;
|
||||
+ scratch_buffer_init (&pwtmpbuf);
|
||||
+
|
||||
# if defined HAVE_GETPWNAM_R || defined _LIBC
|
||||
- long int buflenmax = GETPW_R_SIZE_MAX ();
|
||||
- size_t buflen = buflenmax;
|
||||
- char *pwtmpbuf;
|
||||
struct passwd pwbuf;
|
||||
- int save = errno;
|
||||
-
|
||||
-# ifndef _LIBC
|
||||
- if (! (0 <= buflenmax && buflenmax <= SIZE_MAX))
|
||||
- /* Perhaps 'sysconf' does not support _SC_GETPW_R_SIZE_MAX. Try a
|
||||
- moderate value. */
|
||||
- buflen = 1024;
|
||||
-# endif
|
||||
- if (glob_use_alloca (alloca_used, buflen))
|
||||
- pwtmpbuf = alloca_account (buflen, alloca_used);
|
||||
- else
|
||||
+
|
||||
+ while (getpwnam_r (user_name, &pwbuf,
|
||||
+ pwtmpbuf.data, pwtmpbuf.length, &p)
|
||||
+ == ERANGE)
|
||||
{
|
||||
- pwtmpbuf = malloc (buflen);
|
||||
- if (pwtmpbuf == NULL)
|
||||
+ if (!scratch_buffer_grow (&pwtmpbuf))
|
||||
{
|
||||
- nomem_getpw:
|
||||
- if (__glibc_unlikely (malloc_user_name))
|
||||
- free (user_name);
|
||||
retval = GLOB_NOSPACE;
|
||||
goto out;
|
||||
}
|
||||
- malloc_pwtmpbuf = pwtmpbuf;
|
||||
- }
|
||||
-
|
||||
- while (getpwnam_r (user_name, &pwbuf, pwtmpbuf, buflen, &p) != 0)
|
||||
- {
|
||||
- size_t newlen;
|
||||
- bool v;
|
||||
- if (errno != ERANGE)
|
||||
- {
|
||||
- p = NULL;
|
||||
- break;
|
||||
- }
|
||||
- v = size_add_wrapv (buflen, buflen, &newlen);
|
||||
- if (!v && malloc_pwtmpbuf == NULL
|
||||
- && glob_use_alloca (alloca_used, newlen))
|
||||
- pwtmpbuf = extend_alloca_account (pwtmpbuf, buflen,
|
||||
- newlen, alloca_used);
|
||||
- else
|
||||
- {
|
||||
- char *newp = v ? NULL : realloc (malloc_pwtmpbuf, newlen);
|
||||
- if (newp == NULL)
|
||||
- {
|
||||
- free (malloc_pwtmpbuf);
|
||||
- goto nomem_getpw;
|
||||
- }
|
||||
- malloc_pwtmpbuf = pwtmpbuf = newp;
|
||||
- }
|
||||
- __set_errno (save);
|
||||
}
|
||||
# else
|
||||
p = getpwnam (user_name);
|
||||
@@ -959,7 +846,7 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
|
||||
dirname = malloc (home_len + rest_len + 1);
|
||||
if (dirname == NULL)
|
||||
{
|
||||
- free (malloc_pwtmpbuf);
|
||||
+ scratch_buffer_free (&pwtmpbuf);
|
||||
retval = GLOB_NOSPACE;
|
||||
goto out;
|
||||
}
|
||||
@@ -970,13 +857,9 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
|
||||
|
||||
dirlen = home_len + rest_len;
|
||||
dirname_modified = 1;
|
||||
-
|
||||
- free (malloc_pwtmpbuf);
|
||||
}
|
||||
else
|
||||
{
|
||||
- free (malloc_pwtmpbuf);
|
||||
-
|
||||
if (flags & GLOB_TILDE_CHECK)
|
||||
{
|
||||
/* We have to regard it as an error if we cannot find the
|
||||
@@ -985,6 +868,7 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
+ scratch_buffer_free (&pwtmpbuf);
|
||||
}
|
||||
#endif /* !WINDOWS32 */
|
||||
}
|
@ -156,16 +156,6 @@ Date: Sun Mar 1 19:48:31 2015 +0100
|
||||
* posix/wordexp.c (parse_tilde): Use struct scratch_buffer
|
||||
instead of extend_alloca.
|
||||
|
||||
commit 7b4c16db30304b83a5d1e913d1a8f7e90a8c398c
|
||||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Sun Mar 1 19:49:50 2015 +0100
|
||||
|
||||
glob: Rewrite to use struct scratch_buffer instead of extend_alloca
|
||||
|
||||
[BZ #18023]
|
||||
* posix/glob.c (glob): Use struct scratch_buffer instead of
|
||||
extend_alloca.
|
||||
|
||||
commit 683543bbb3e2c1b17554c4096d00c2980f39a802
|
||||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Sun Mar 1 23:22:45 2015 +0100
|
||||
@ -249,8 +239,9 @@ Date: Sun Mar 1 23:22:45 2015 +0100
|
||||
[BZ #18023]
|
||||
* include/alloca.h (stackinfo_alloca_round, extend_alloca,
|
||||
extend_alloca_account): Remove.
|
||||
Index: b/elf/dl-deps.c
|
||||
===================================================================
|
||||
|
||||
diff --git a/elf/dl-deps.c b/elf/dl-deps.c
|
||||
index 1b8bac65932a7713..bc59f0ff7b4d7c61 100644
|
||||
--- a/elf/dl-deps.c
|
||||
+++ b/elf/dl-deps.c
|
||||
@@ -27,6 +27,7 @@
|
||||
@ -261,7 +252,7 @@ Index: b/elf/dl-deps.c
|
||||
|
||||
#include <dl-dst.h>
|
||||
|
||||
@@ -184,9 +185,8 @@ _dl_map_object_deps (struct link_map *ma
|
||||
@@ -184,9 +185,8 @@ _dl_map_object_deps (struct link_map *map,
|
||||
/* Pointer to last unique object. */
|
||||
tail = &known[nlist - 1];
|
||||
|
||||
@ -273,7 +264,7 @@ Index: b/elf/dl-deps.c
|
||||
|
||||
/* Process each element of the search list, loading each of its
|
||||
auxiliary objects and immediate dependencies. Auxiliary objects
|
||||
@@ -217,13 +217,12 @@ _dl_map_object_deps (struct link_map *ma
|
||||
@@ -217,13 +217,12 @@ _dl_map_object_deps (struct link_map *map,
|
||||
if (l->l_searchlist.r_list == NULL && l->l_initfini == NULL
|
||||
&& l != map && l->l_ldnum > 0)
|
||||
{
|
||||
@ -293,7 +284,7 @@ Index: b/elf/dl-deps.c
|
||||
}
|
||||
|
||||
if (l->l_info[DT_NEEDED] || l->l_info[AUXTAG] || l->l_info[FILTERTAG])
|
||||
@@ -463,8 +462,11 @@ _dl_map_object_deps (struct link_map *ma
|
||||
@@ -463,8 +462,11 @@ _dl_map_object_deps (struct link_map *map,
|
||||
struct link_map **l_initfini = (struct link_map **)
|
||||
malloc ((2 * nneeded + 1) * sizeof needed[0]);
|
||||
if (l_initfini == NULL)
|
||||
@ -307,7 +298,7 @@ Index: b/elf/dl-deps.c
|
||||
l_initfini[0] = l;
|
||||
memcpy (&l_initfini[1], needed, nneeded * sizeof needed[0]);
|
||||
memcpy (&l_initfini[nneeded + 1], l_initfini,
|
||||
@@ -482,6 +484,8 @@ _dl_map_object_deps (struct link_map *ma
|
||||
@@ -482,6 +484,8 @@ _dl_map_object_deps (struct link_map *map,
|
||||
}
|
||||
|
||||
out:
|
||||
@ -316,8 +307,8 @@ Index: b/elf/dl-deps.c
|
||||
if (errno == 0 && errno_saved != 0)
|
||||
__set_errno (errno_saved);
|
||||
|
||||
Index: b/include/alloca.h
|
||||
===================================================================
|
||||
diff --git a/include/alloca.h b/include/alloca.h
|
||||
index fd90664f0a17cd6d..c0b83954436ed4c1 100644
|
||||
--- a/include/alloca.h
|
||||
+++ b/include/alloca.h
|
||||
@@ -23,57 +23,17 @@ libc_hidden_proto (__libc_alloca_cutoff)
|
||||
@ -378,11 +369,11 @@ Index: b/include/alloca.h
|
||||
#endif
|
||||
|
||||
# endif /* !_ISOMAC */
|
||||
Index: b/nis/nss_compat/compat-initgroups.c
|
||||
===================================================================
|
||||
diff --git a/nis/nss_compat/compat-initgroups.c b/nis/nss_compat/compat-initgroups.c
|
||||
index 1b37e0c295f481df..cc3db7889ba289db 100644
|
||||
--- a/nis/nss_compat/compat-initgroups.c
|
||||
+++ b/nis/nss_compat/compat-initgroups.c
|
||||
@@ -310,7 +310,6 @@ getgrent_next_nss (ent_t *ent, char *buf
|
||||
@@ -310,7 +310,6 @@ getgrent_next_nss (ent_t *ent, char *buffer, size_t buflen, const char *user,
|
||||
overwrite the pointer with one to a bigger buffer. */
|
||||
char *tmpbuf = buffer;
|
||||
size_t tmplen = buflen;
|
||||
@ -390,7 +381,7 @@ Index: b/nis/nss_compat/compat-initgroups.c
|
||||
|
||||
for (int i = 0; i < mystart; i++)
|
||||
{
|
||||
@@ -319,29 +318,26 @@ getgrent_next_nss (ent_t *ent, char *buf
|
||||
@@ -319,29 +318,26 @@ getgrent_next_nss (ent_t *ent, char *buffer, size_t buflen, const char *user,
|
||||
== NSS_STATUS_TRYAGAIN
|
||||
&& *errnop == ERANGE)
|
||||
{
|
||||
@ -440,7 +431,7 @@ Index: b/nis/nss_compat/compat-initgroups.c
|
||||
}
|
||||
|
||||
if (__builtin_expect (status != NSS_STATUS_NOTFOUND, 1))
|
||||
@@ -369,7 +365,7 @@ getgrent_next_nss (ent_t *ent, char *buf
|
||||
@@ -369,7 +365,7 @@ getgrent_next_nss (ent_t *ent, char *buffer, size_t buflen, const char *user,
|
||||
status = NSS_STATUS_NOTFOUND;
|
||||
|
||||
done:
|
||||
@ -449,8 +440,8 @@ Index: b/nis/nss_compat/compat-initgroups.c
|
||||
free (tmpbuf);
|
||||
}
|
||||
|
||||
Index: b/nis/nss_nis/nis-initgroups.c
|
||||
===================================================================
|
||||
diff --git a/nis/nss_nis/nis-initgroups.c b/nis/nss_nis/nis-initgroups.c
|
||||
index 3784c101f7ee31aa..c872b32e15f55e3d 100644
|
||||
--- a/nis/nss_nis/nis-initgroups.c
|
||||
+++ b/nis/nss_nis/nis-initgroups.c
|
||||
@@ -16,7 +16,6 @@
|
||||
@ -469,7 +460,7 @@ Index: b/nis/nss_nis/nis-initgroups.c
|
||||
|
||||
#include "nss-nis.h"
|
||||
#include <libnsl.h>
|
||||
@@ -120,27 +120,30 @@ internal_getgrent_r (struct group *grp,
|
||||
@@ -120,27 +120,30 @@ internal_getgrent_r (struct group *grp, char *buffer, size_t buflen,
|
||||
static int
|
||||
get_uid (const char *user, uid_t *uidp)
|
||||
{
|
||||
@ -504,7 +495,7 @@ Index: b/nis/nss_nis/nis-initgroups.c
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -254,8 +257,6 @@ _nss_nis_initgroups_dyn (const char *use
|
||||
@@ -254,8 +257,6 @@ _nss_nis_initgroups_dyn (const char *user, gid_t group, long int *start,
|
||||
}
|
||||
|
||||
struct group grpbuf, *g;
|
||||
@ -513,7 +504,7 @@ Index: b/nis/nss_nis/nis-initgroups.c
|
||||
enum nss_status status;
|
||||
intern_t intern = { NULL, NULL, 0 };
|
||||
gid_t *groups = *groupsp;
|
||||
@@ -264,15 +265,21 @@ _nss_nis_initgroups_dyn (const char *use
|
||||
@@ -264,15 +265,21 @@ _nss_nis_initgroups_dyn (const char *user, gid_t group, long int *start,
|
||||
if (status != NSS_STATUS_SUCCESS)
|
||||
return status;
|
||||
|
||||
@ -546,8 +537,8 @@ Index: b/nis/nss_nis/nis-initgroups.c
|
||||
|
||||
return status;
|
||||
}
|
||||
Index: b/nscd/aicache.c
|
||||
===================================================================
|
||||
diff --git a/nscd/aicache.c b/nscd/aicache.c
|
||||
index 7bf4131979451040..ea29b1c3d99bb530 100644
|
||||
--- a/nscd/aicache.c
|
||||
+++ b/nscd/aicache.c
|
||||
@@ -27,6 +27,7 @@
|
||||
@ -558,7 +549,7 @@ Index: b/nscd/aicache.c
|
||||
|
||||
#include "dbg_log.h"
|
||||
#include "nscd.h"
|
||||
@@ -113,10 +114,13 @@ addhstaiX (struct database_dyn *db, int
|
||||
@@ -113,10 +114,13 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
|
||||
int old_res_options = _res.options;
|
||||
_res.options &= ~DEPRECATED_RES_USE_INET6;
|
||||
|
||||
@ -576,7 +567,7 @@ Index: b/nscd/aicache.c
|
||||
int32_t ttl = INT32_MAX;
|
||||
ssize_t total = 0;
|
||||
char *key_copy = NULL;
|
||||
@@ -129,6 +133,7 @@ addhstaiX (struct database_dyn *db, int
|
||||
@@ -129,6 +133,7 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
|
||||
int status[2] = { NSS_STATUS_UNAVAIL, NSS_STATUS_UNAVAIL };
|
||||
int naddrs = 0;
|
||||
size_t addrslen = 0;
|
||||
@ -584,7 +575,7 @@ Index: b/nscd/aicache.c
|
||||
char *canon = NULL;
|
||||
size_t canonlen;
|
||||
|
||||
@@ -143,12 +148,17 @@ addhstaiX (struct database_dyn *db, int
|
||||
@@ -143,12 +148,17 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
|
||||
at = &atmem;
|
||||
rc6 = 0;
|
||||
herrno = 0;
|
||||
@ -604,7 +595,7 @@ Index: b/nscd/aicache.c
|
||||
}
|
||||
|
||||
if (rc6 != 0 && herrno == NETDB_INTERNAL)
|
||||
@@ -226,41 +236,38 @@ addhstaiX (struct database_dyn *db, int
|
||||
@@ -226,41 +236,38 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
|
||||
while (1)
|
||||
{
|
||||
rc6 = 0;
|
||||
@ -662,7 +653,7 @@ Index: b/nscd/aicache.c
|
||||
}
|
||||
|
||||
if (rc4 != 0 && herrno == NETDB_INTERNAL)
|
||||
@@ -286,13 +293,11 @@ addhstaiX (struct database_dyn *db, int
|
||||
@@ -286,13 +293,11 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
|
||||
cfct = __nss_lookup_function (nip, "getcanonname_r");
|
||||
if (cfct != NULL)
|
||||
{
|
||||
@ -678,7 +669,7 @@ Index: b/nscd/aicache.c
|
||||
== NSS_STATUS_SUCCESS)
|
||||
canon = s;
|
||||
else
|
||||
@@ -321,18 +326,20 @@ addhstaiX (struct database_dyn *db, int
|
||||
@@ -321,18 +326,20 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
|
||||
addrfamily = AF_INET6;
|
||||
}
|
||||
|
||||
@ -715,11 +706,11 @@ Index: b/nscd/aicache.c
|
||||
return timeout;
|
||||
}
|
||||
|
||||
Index: b/nscd/connections.c
|
||||
===================================================================
|
||||
diff --git a/nscd/connections.c b/nscd/connections.c
|
||||
index 26d2c0091b8f320d..9615c159285f0044 100644
|
||||
--- a/nscd/connections.c
|
||||
+++ b/nscd/connections.c
|
||||
@@ -1353,64 +1353,83 @@ request from '%s' [%ld] not handled due
|
||||
@@ -1353,64 +1353,83 @@ request from '%s' [%ld] not handled due to missing permission"),
|
||||
}
|
||||
}
|
||||
|
||||
@ -739,20 +730,19 @@ Index: b/nscd/connections.c
|
||||
- size_t readlen = 0;
|
||||
int fd = open ("/proc/self/cmdline", O_RDONLY);
|
||||
- if (fd == -1)
|
||||
- {
|
||||
- dbg_log (_("\
|
||||
-cannot open /proc/self/cmdline: %s; disabling paranoia mode"),
|
||||
- strerror (errno));
|
||||
-
|
||||
- paranoia = 0;
|
||||
- return;
|
||||
+ if (fd < 0)
|
||||
+ return NULL;
|
||||
+ size_t current = 0;
|
||||
+ size_t limit = 1024;
|
||||
+ char *buffer = malloc (limit);
|
||||
+ if (buffer == NULL)
|
||||
+ {
|
||||
{
|
||||
- dbg_log (_("\
|
||||
-cannot open /proc/self/cmdline: %s; disabling paranoia mode"),
|
||||
- strerror (errno));
|
||||
-
|
||||
- paranoia = 0;
|
||||
- return;
|
||||
+ close (fd);
|
||||
+ errno = ENOMEM;
|
||||
+ return NULL;
|
||||
@ -842,7 +832,7 @@ Index: b/nscd/connections.c
|
||||
{
|
||||
argv[argc++] = cp;
|
||||
cp = (char *) rawmemchr (cp, '\0') + 1;
|
||||
@@ -1427,6 +1446,7 @@ cannot change to old UID: %s; disabling
|
||||
@@ -1427,6 +1446,7 @@ cannot change to old UID: %s; disabling paranoia mode"),
|
||||
strerror (errno));
|
||||
|
||||
paranoia = 0;
|
||||
@ -850,7 +840,7 @@ Index: b/nscd/connections.c
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1438,6 +1458,7 @@ cannot change to old GID: %s; disabling
|
||||
@@ -1438,6 +1458,7 @@ cannot change to old GID: %s; disabling paranoia mode"),
|
||||
|
||||
ignore_value (setuid (server_uid));
|
||||
paranoia = 0;
|
||||
@ -858,7 +848,7 @@ Index: b/nscd/connections.c
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -1455,6 +1476,7 @@ cannot change to old working directory:
|
||||
@@ -1455,6 +1476,7 @@ cannot change to old working directory: %s; disabling paranoia mode"),
|
||||
ignore_value (setgid (server_gid));
|
||||
}
|
||||
paranoia = 0;
|
||||
@ -866,7 +856,7 @@ Index: b/nscd/connections.c
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1503,6 +1525,7 @@ cannot change to old working directory:
|
||||
@@ -1503,6 +1525,7 @@ cannot change to old working directory: %s; disabling paranoia mode"),
|
||||
dbg_log (_("cannot change current working directory to \"/\": %s"),
|
||||
strerror (errno));
|
||||
paranoia = 0;
|
||||
@ -874,8 +864,8 @@ Index: b/nscd/connections.c
|
||||
|
||||
/* Reenable the databases. */
|
||||
time_t now = time (NULL);
|
||||
Index: b/nscd/grpcache.c
|
||||
===================================================================
|
||||
diff --git a/nscd/grpcache.c b/nscd/grpcache.c
|
||||
index d2ad53509db97bdf..a71036512048dd81 100644
|
||||
--- a/nscd/grpcache.c
|
||||
+++ b/nscd/grpcache.c
|
||||
@@ -16,7 +16,6 @@
|
||||
@ -894,7 +884,7 @@ Index: b/nscd/grpcache.c
|
||||
|
||||
#include "nscd.h"
|
||||
#include "dbg_log.h"
|
||||
@@ -448,12 +448,12 @@ addgrbyX (struct database_dyn *db, int f
|
||||
@@ -448,12 +448,12 @@ addgrbyX (struct database_dyn *db, int fd, request_header *req,
|
||||
look again in the table whether the dataset is now available. We
|
||||
simply insert it. It does not matter if it is in there twice. The
|
||||
pruning function only will look at the timestamp. */
|
||||
@ -910,7 +900,7 @@ Index: b/nscd/grpcache.c
|
||||
|
||||
if (__glibc_unlikely (debug_level > 0))
|
||||
{
|
||||
@@ -463,43 +463,24 @@ addgrbyX (struct database_dyn *db, int f
|
||||
@@ -463,43 +463,24 @@ addgrbyX (struct database_dyn *db, int fd, request_header *req,
|
||||
dbg_log (_("Reloading \"%s\" in group cache!"), keystr);
|
||||
}
|
||||
|
||||
@ -969,8 +959,8 @@ Index: b/nscd/grpcache.c
|
||||
return timeout;
|
||||
}
|
||||
|
||||
Index: b/nscd/hstcache.c
|
||||
===================================================================
|
||||
diff --git a/nscd/hstcache.c b/nscd/hstcache.c
|
||||
index 9f6ce979ac333265..d0af99893dd17b9f 100644
|
||||
--- a/nscd/hstcache.c
|
||||
+++ b/nscd/hstcache.c
|
||||
@@ -34,6 +34,7 @@
|
||||
@ -981,7 +971,7 @@ Index: b/nscd/hstcache.c
|
||||
|
||||
#include "nscd.h"
|
||||
#include "dbg_log.h"
|
||||
@@ -463,11 +464,8 @@ addhstbyX (struct database_dyn *db, int
|
||||
@@ -463,11 +464,8 @@ addhstbyX (struct database_dyn *db, int fd, request_header *req,
|
||||
look again in the table whether the dataset is now available. We
|
||||
simply insert it. It does not matter if it is in there twice. The
|
||||
pruning function only will look at the timestamp. */
|
||||
@ -993,7 +983,7 @@ Index: b/nscd/hstcache.c
|
||||
int errval = 0;
|
||||
int32_t ttl = INT32_MAX;
|
||||
|
||||
@@ -487,46 +485,30 @@ addhstbyX (struct database_dyn *db, int
|
||||
@@ -487,46 +485,30 @@ addhstbyX (struct database_dyn *db, int fd, request_header *req,
|
||||
dbg_log (_("Reloading \"%s\" in hosts cache!"), (char *) str);
|
||||
}
|
||||
|
||||
@ -1059,8 +1049,8 @@ Index: b/nscd/hstcache.c
|
||||
return timeout;
|
||||
}
|
||||
|
||||
Index: b/nscd/pwdcache.c
|
||||
===================================================================
|
||||
diff --git a/nscd/pwdcache.c b/nscd/pwdcache.c
|
||||
index 721f4c617b0bb74a..9349b54df4241ad5 100644
|
||||
--- a/nscd/pwdcache.c
|
||||
+++ b/nscd/pwdcache.c
|
||||
@@ -16,7 +16,6 @@
|
||||
@ -1079,7 +1069,7 @@ Index: b/nscd/pwdcache.c
|
||||
|
||||
#include "nscd.h"
|
||||
#include "dbg_log.h"
|
||||
@@ -426,12 +426,11 @@ addpwbyX (struct database_dyn *db, int f
|
||||
@@ -426,12 +426,11 @@ addpwbyX (struct database_dyn *db, int fd, request_header *req,
|
||||
look again in the table whether the dataset is now available. We
|
||||
simply insert it. It does not matter if it is in there twice. The
|
||||
pruning function only will look at the timestamp. */
|
||||
@ -1094,7 +1084,7 @@ Index: b/nscd/pwdcache.c
|
||||
|
||||
if (__glibc_unlikely (debug_level > 0))
|
||||
{
|
||||
@@ -441,45 +440,26 @@ addpwbyX (struct database_dyn *db, int f
|
||||
@@ -441,45 +440,26 @@ addpwbyX (struct database_dyn *db, int fd, request_header *req,
|
||||
dbg_log (_("Reloading \"%s\" in password cache!"), keystr);
|
||||
}
|
||||
|
||||
@ -1155,8 +1145,8 @@ Index: b/nscd/pwdcache.c
|
||||
return timeout;
|
||||
}
|
||||
|
||||
Index: b/nscd/servicescache.c
|
||||
===================================================================
|
||||
diff --git a/nscd/servicescache.c b/nscd/servicescache.c
|
||||
index 131ba6ddcc1a5f7a..549e9a446816d760 100644
|
||||
--- a/nscd/servicescache.c
|
||||
+++ b/nscd/servicescache.c
|
||||
@@ -16,7 +16,6 @@
|
||||
@ -1175,7 +1165,7 @@ Index: b/nscd/servicescache.c
|
||||
|
||||
#include "nscd.h"
|
||||
#include "dbg_log.h"
|
||||
@@ -374,12 +374,11 @@ addservbyX (struct database_dyn *db, int
|
||||
@@ -374,12 +374,11 @@ addservbyX (struct database_dyn *db, int fd, request_header *req,
|
||||
look again in the table whether the dataset is now available. We
|
||||
simply insert it. It does not matter if it is in there twice. The
|
||||
pruning function only will look at the timestamp. */
|
||||
@ -1190,7 +1180,7 @@ Index: b/nscd/servicescache.c
|
||||
|
||||
if (__glibc_unlikely (debug_level > 0))
|
||||
{
|
||||
@@ -389,43 +388,24 @@ addservbyX (struct database_dyn *db, int
|
||||
@@ -389,43 +388,24 @@ addservbyX (struct database_dyn *db, int fd, request_header *req,
|
||||
dbg_log (_("Reloading \"%s\" in services cache!"), key);
|
||||
}
|
||||
|
||||
@ -1249,8 +1239,8 @@ Index: b/nscd/servicescache.c
|
||||
return timeout;
|
||||
}
|
||||
|
||||
Index: b/nss/getent.c
|
||||
===================================================================
|
||||
diff --git a/nss/getent.c b/nss/getent.c
|
||||
index 8f8c3fe80a2cfea6..5654c5f67c4f118c 100644
|
||||
--- a/nss/getent.c
|
||||
+++ b/nss/getent.c
|
||||
@@ -39,6 +39,7 @@
|
||||
@ -1303,7 +1293,7 @@ Index: b/nss/getent.c
|
||||
printf ("%-21s", key[i]);
|
||||
for (int j = 0; j < n; ++j)
|
||||
if (grps[j] != -1)
|
||||
@@ -508,6 +513,8 @@ initgroups_keys (int number, char *key[]
|
||||
@@ -508,6 +513,8 @@ initgroups_keys (int number, char *key[])
|
||||
putchar_unlocked ('\n');
|
||||
}
|
||||
|
||||
@ -1312,111 +1302,8 @@ Index: b/nss/getent.c
|
||||
return 0;
|
||||
}
|
||||
|
||||
Index: b/nss/nss_files/files-hosts.c
|
||||
===================================================================
|
||||
--- a/nss/nss_files/files-hosts.c
|
||||
+++ b/nss/nss_files/files-hosts.c
|
||||
@@ -22,7 +22,7 @@
|
||||
#include <arpa/nameser.h>
|
||||
#include <netdb.h>
|
||||
#include <resolv/resolv-internal.h>
|
||||
-
|
||||
+#include <scratch_buffer.h>
|
||||
|
||||
/* Get implementation for some internal functions. */
|
||||
#include "../resolv/mapv4v6addr.h"
|
||||
@@ -145,15 +145,12 @@ _nss_files_gethostbyname3_r (const char
|
||||
&& _res_hconf.flags & HCONF_FLAG_MULTI)
|
||||
{
|
||||
/* We have to get all host entries from the file. */
|
||||
- size_t tmp_buflen = MIN (buflen, 4096);
|
||||
- char tmp_buffer_stack[tmp_buflen]
|
||||
- __attribute__ ((__aligned__ (__alignof__ (struct hostent_data))));
|
||||
- char *tmp_buffer = tmp_buffer_stack;
|
||||
struct hostent tmp_result_buf;
|
||||
int naddrs = 1;
|
||||
int naliases = 0;
|
||||
char *bufferend;
|
||||
- bool tmp_buffer_malloced = false;
|
||||
+ struct scratch_buffer tmpbuf;
|
||||
+ scratch_buffer_init (&tmpbuf);
|
||||
|
||||
while (result->h_aliases[naliases] != NULL)
|
||||
++naliases;
|
||||
@@ -161,9 +158,9 @@ _nss_files_gethostbyname3_r (const char
|
||||
bufferend = (char *) &result->h_aliases[naliases + 1];
|
||||
|
||||
again:
|
||||
- while ((status = internal_getent (stream, &tmp_result_buf, tmp_buffer,
|
||||
- tmp_buflen, errnop, herrnop, af,
|
||||
- flags))
|
||||
+ while ((status = internal_getent (stream, &tmp_result_buf,
|
||||
+ tmpbuf.data, tmpbuf.length,
|
||||
+ errnop, herrnop, af, flags))
|
||||
== NSS_STATUS_SUCCESS)
|
||||
{
|
||||
int matches = 1;
|
||||
@@ -287,54 +284,13 @@ _nss_files_gethostbyname3_r (const char
|
||||
}
|
||||
}
|
||||
|
||||
- if (status == NSS_STATUS_TRYAGAIN)
|
||||
- {
|
||||
- size_t newsize = 2 * tmp_buflen;
|
||||
- if (tmp_buffer_malloced)
|
||||
- {
|
||||
- char *newp = realloc (tmp_buffer, newsize);
|
||||
- if (newp != NULL)
|
||||
- {
|
||||
- assert ((((uintptr_t) newp)
|
||||
- & (__alignof__ (struct hostent_data) - 1))
|
||||
- == 0);
|
||||
- tmp_buffer = newp;
|
||||
- tmp_buflen = newsize;
|
||||
- goto again;
|
||||
- }
|
||||
- }
|
||||
- else if (!__libc_use_alloca (buflen + newsize))
|
||||
- {
|
||||
- tmp_buffer = malloc (newsize);
|
||||
- if (tmp_buffer != NULL)
|
||||
- {
|
||||
- assert ((((uintptr_t) tmp_buffer)
|
||||
- & (__alignof__ (struct hostent_data) - 1))
|
||||
- == 0);
|
||||
- tmp_buffer_malloced = true;
|
||||
- tmp_buflen = newsize;
|
||||
- goto again;
|
||||
- }
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- tmp_buffer
|
||||
- = extend_alloca (tmp_buffer, tmp_buflen,
|
||||
- newsize
|
||||
- + __alignof__ (struct hostent_data));
|
||||
- tmp_buffer = (char *) (((uintptr_t) tmp_buffer
|
||||
- + __alignof__ (struct hostent_data)
|
||||
- - 1)
|
||||
- & ~(__alignof__ (struct hostent_data)
|
||||
- - 1));
|
||||
- goto again;
|
||||
- }
|
||||
- }
|
||||
+ if (status == NSS_STATUS_TRYAGAIN
|
||||
+ && scratch_buffer_grow (&tmpbuf))
|
||||
+ goto again;
|
||||
else
|
||||
status = NSS_STATUS_SUCCESS;
|
||||
out:
|
||||
- if (tmp_buffer_malloced)
|
||||
- free (tmp_buffer);
|
||||
+ scratch_buffer_free (&tmpbuf);
|
||||
}
|
||||
|
||||
internal_endent (&stream);
|
||||
Index: b/nss/nss_files/files-initgroups.c
|
||||
===================================================================
|
||||
diff --git a/nss/nss_files/files-initgroups.c b/nss/nss_files/files-initgroups.c
|
||||
index 27cd8ece40434f5c..8a88f1b62357d3bd 100644
|
||||
--- a/nss/nss_files/files-initgroups.c
|
||||
+++ b/nss/nss_files/files-initgroups.c
|
||||
@@ -16,7 +16,6 @@
|
||||
@ -1435,7 +1322,7 @@ Index: b/nss/nss_files/files-initgroups.c
|
||||
|
||||
enum nss_status
|
||||
_nss_files_initgroups_dyn (const char *user, gid_t group, long int *start,
|
||||
@@ -46,9 +46,8 @@ _nss_files_initgroups_dyn (const char *u
|
||||
@@ -46,9 +46,8 @@ _nss_files_initgroups_dyn (const char *user, gid_t group, long int *start,
|
||||
enum nss_status status = NSS_STATUS_SUCCESS;
|
||||
bool any = false;
|
||||
|
||||
@ -1447,7 +1334,7 @@ Index: b/nss/nss_files/files-initgroups.c
|
||||
|
||||
gid_t *groups = *groupsp;
|
||||
|
||||
@@ -67,26 +66,16 @@ _nss_files_initgroups_dyn (const char *u
|
||||
@@ -67,26 +66,16 @@ _nss_files_initgroups_dyn (const char *user, gid_t group, long int *start,
|
||||
}
|
||||
|
||||
struct group grp;
|
||||
@ -1480,7 +1367,7 @@ Index: b/nss/nss_files/files-initgroups.c
|
||||
/* Reread current line, the parser has clobbered it. */
|
||||
fsetpos (stream, &pos);
|
||||
continue;
|
||||
@@ -132,8 +121,7 @@ _nss_files_initgroups_dyn (const char *u
|
||||
@@ -132,8 +121,7 @@ _nss_files_initgroups_dyn (const char *user, gid_t group, long int *start,
|
||||
|
||||
out:
|
||||
/* Free memory. */
|
||||
@ -1490,241 +1377,8 @@ Index: b/nss/nss_files/files-initgroups.c
|
||||
free (line);
|
||||
|
||||
fclose (stream);
|
||||
Index: b/posix/glob.c
|
||||
===================================================================
|
||||
--- a/posix/glob.c
|
||||
+++ b/posix/glob.c
|
||||
@@ -27,6 +27,7 @@
|
||||
#include <stdbool.h>
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
+#include <scratch_buffer.h>
|
||||
|
||||
/* Outcomment the following line for production quality code. */
|
||||
/* #define NDEBUG 1 */
|
||||
@@ -293,7 +294,7 @@ glob (const char *pattern, int flags, in
|
||||
glob_t dirs;
|
||||
int retval = 0;
|
||||
#ifdef _LIBC
|
||||
- size_t alloca_used = 0;
|
||||
+ size_t alloca_used = sizeof (struct scratch_buffer);
|
||||
#endif
|
||||
|
||||
if (pattern == NULL || pglob == NULL || (flags & ~__GLOB_FLAGS) != 0)
|
||||
@@ -637,33 +638,13 @@ glob (const char *pattern, int flags, in
|
||||
{
|
||||
struct passwd *p;
|
||||
# if defined HAVE_GETPWNAM_R || defined _LIBC
|
||||
- long int pwbuflen = GETPW_R_SIZE_MAX ();
|
||||
- char *pwtmpbuf;
|
||||
struct passwd pwbuf;
|
||||
- int malloc_pwtmpbuf = 0;
|
||||
int save = errno;
|
||||
+ struct scratch_buffer pwtmpbuf;
|
||||
+ scratch_buffer_init (&pwtmpbuf);
|
||||
|
||||
-# ifndef _LIBC
|
||||
- if (pwbuflen == -1)
|
||||
- /* `sysconf' does not support _SC_GETPW_R_SIZE_MAX.
|
||||
- Try a moderate value. */
|
||||
- pwbuflen = 1024;
|
||||
-# endif
|
||||
- if (__libc_use_alloca (alloca_used + pwbuflen))
|
||||
- pwtmpbuf = alloca_account (pwbuflen, alloca_used);
|
||||
- else
|
||||
- {
|
||||
- pwtmpbuf = malloc (pwbuflen);
|
||||
- if (pwtmpbuf == NULL)
|
||||
- {
|
||||
- retval = GLOB_NOSPACE;
|
||||
- goto out;
|
||||
- }
|
||||
- malloc_pwtmpbuf = 1;
|
||||
- }
|
||||
-
|
||||
- while (getpwnam_r (name, &pwbuf, pwtmpbuf, pwbuflen, &p)
|
||||
- != 0)
|
||||
+ while (getpwnam_r (name, &pwbuf,
|
||||
+ pwtmpbuf.data, pwtmpbuf.length, &p) != 0)
|
||||
{
|
||||
if (errno != ERANGE)
|
||||
{
|
||||
@@ -671,67 +652,37 @@ glob (const char *pattern, int flags, in
|
||||
break;
|
||||
}
|
||||
|
||||
- if (!malloc_pwtmpbuf
|
||||
- && __libc_use_alloca (alloca_used
|
||||
- + 2 * pwbuflen))
|
||||
- pwtmpbuf = extend_alloca_account (pwtmpbuf, pwbuflen,
|
||||
- 2 * pwbuflen,
|
||||
- alloca_used);
|
||||
- else
|
||||
+ if (!scratch_buffer_grow (&pwtmpbuf))
|
||||
{
|
||||
- char *newp = realloc (malloc_pwtmpbuf
|
||||
- ? pwtmpbuf : NULL,
|
||||
- 2 * pwbuflen);
|
||||
- if (newp == NULL)
|
||||
- {
|
||||
- if (__glibc_unlikely (malloc_pwtmpbuf))
|
||||
- free (pwtmpbuf);
|
||||
- retval = GLOB_NOSPACE;
|
||||
- goto out;
|
||||
- }
|
||||
- pwtmpbuf = newp;
|
||||
- pwbuflen = 2 * pwbuflen;
|
||||
- malloc_pwtmpbuf = 1;
|
||||
+ retval = GLOB_NOSPACE;
|
||||
+ goto out;
|
||||
}
|
||||
__set_errno (save);
|
||||
}
|
||||
# else
|
||||
- p = getpwnam (name);
|
||||
+ p = getpwnam (namebuf.data);
|
||||
# endif
|
||||
if (p != NULL)
|
||||
{
|
||||
- if (!malloc_pwtmpbuf)
|
||||
- home_dir = p->pw_dir;
|
||||
- else
|
||||
+ home_dir = strdup (p->pw_dir);
|
||||
+ malloc_home_dir = 1;
|
||||
+ if (home_dir == NULL)
|
||||
{
|
||||
- size_t home_dir_len = strlen (p->pw_dir) + 1;
|
||||
- if (__libc_use_alloca (alloca_used + home_dir_len))
|
||||
- home_dir = alloca_account (home_dir_len,
|
||||
- alloca_used);
|
||||
- else
|
||||
- {
|
||||
- home_dir = malloc (home_dir_len);
|
||||
- if (home_dir == NULL)
|
||||
- {
|
||||
- free (pwtmpbuf);
|
||||
- retval = GLOB_NOSPACE;
|
||||
- goto out;
|
||||
- }
|
||||
- malloc_home_dir = 1;
|
||||
- }
|
||||
- memcpy (home_dir, p->pw_dir, home_dir_len);
|
||||
-
|
||||
- free (pwtmpbuf);
|
||||
+ scratch_buffer_free (&pwtmpbuf);
|
||||
+ retval = GLOB_NOSPACE;
|
||||
+ goto out;
|
||||
}
|
||||
}
|
||||
+ scratch_buffer_free (&pwtmpbuf);
|
||||
}
|
||||
}
|
||||
if (home_dir == NULL || home_dir[0] == '\0')
|
||||
{
|
||||
+ if (malloc_home_dir)
|
||||
+ free (home_dir);
|
||||
+ malloc_home_dir = 0;
|
||||
if (flags & GLOB_TILDE_CHECK)
|
||||
{
|
||||
- if (__glibc_unlikely (malloc_home_dir))
|
||||
- free (home_dir);
|
||||
retval = GLOB_NOMATCH;
|
||||
goto out;
|
||||
}
|
||||
@@ -852,57 +803,24 @@ glob (const char *pattern, int flags, in
|
||||
{
|
||||
struct passwd *p;
|
||||
# if defined HAVE_GETPWNAM_R || defined _LIBC
|
||||
- long int buflen = GETPW_R_SIZE_MAX ();
|
||||
- char *pwtmpbuf;
|
||||
- int malloc_pwtmpbuf = 0;
|
||||
struct passwd pwbuf;
|
||||
int save = errno;
|
||||
+ struct scratch_buffer pwtmpbuf;
|
||||
+ scratch_buffer_init (&pwtmpbuf);
|
||||
|
||||
-# ifndef _LIBC
|
||||
- if (buflen == -1)
|
||||
- /* `sysconf' does not support _SC_GETPW_R_SIZE_MAX. Try a
|
||||
- moderate value. */
|
||||
- buflen = 1024;
|
||||
-# endif
|
||||
- if (__libc_use_alloca (alloca_used + buflen))
|
||||
- pwtmpbuf = alloca_account (buflen, alloca_used);
|
||||
- else
|
||||
- {
|
||||
- pwtmpbuf = malloc (buflen);
|
||||
- if (pwtmpbuf == NULL)
|
||||
- {
|
||||
- nomem_getpw:
|
||||
- if (__glibc_unlikely (malloc_user_name))
|
||||
- free (user_name);
|
||||
- retval = GLOB_NOSPACE;
|
||||
- goto out;
|
||||
- }
|
||||
- malloc_pwtmpbuf = 1;
|
||||
- }
|
||||
-
|
||||
- while (getpwnam_r (user_name, &pwbuf, pwtmpbuf, buflen, &p) != 0)
|
||||
+ while (getpwnam_r (user_name, &pwbuf,
|
||||
+ pwtmpbuf.data, pwtmpbuf.length, &p) != 0)
|
||||
{
|
||||
if (errno != ERANGE)
|
||||
{
|
||||
p = NULL;
|
||||
break;
|
||||
}
|
||||
- if (!malloc_pwtmpbuf
|
||||
- && __libc_use_alloca (alloca_used + 2 * buflen))
|
||||
- pwtmpbuf = extend_alloca_account (pwtmpbuf, buflen,
|
||||
- 2 * buflen, alloca_used);
|
||||
- else
|
||||
+
|
||||
+ if (!scratch_buffer_grow (&pwtmpbuf))
|
||||
{
|
||||
- char *newp = realloc (malloc_pwtmpbuf ? pwtmpbuf : NULL,
|
||||
- 2 * buflen);
|
||||
- if (newp == NULL)
|
||||
- {
|
||||
- if (__glibc_unlikely (malloc_pwtmpbuf))
|
||||
- free (pwtmpbuf);
|
||||
- goto nomem_getpw;
|
||||
- }
|
||||
- pwtmpbuf = newp;
|
||||
- malloc_pwtmpbuf = 1;
|
||||
+ retval = GLOB_NOSPACE;
|
||||
+ goto out;
|
||||
}
|
||||
__set_errno (save);
|
||||
}
|
||||
@@ -931,8 +849,7 @@ glob (const char *pattern, int flags, in
|
||||
dirname = malloc (home_len + rest_len + 1);
|
||||
if (dirname == NULL)
|
||||
{
|
||||
- if (__glibc_unlikely (malloc_pwtmpbuf))
|
||||
- free (pwtmpbuf);
|
||||
+ scratch_buffer_free (&pwtmpbuf);
|
||||
retval = GLOB_NOSPACE;
|
||||
goto out;
|
||||
}
|
||||
@@ -944,13 +861,11 @@ glob (const char *pattern, int flags, in
|
||||
dirlen = home_len + rest_len;
|
||||
dirname_modified = 1;
|
||||
|
||||
- if (__glibc_unlikely (malloc_pwtmpbuf))
|
||||
- free (pwtmpbuf);
|
||||
+ scratch_buffer_free (&pwtmpbuf);
|
||||
}
|
||||
else
|
||||
{
|
||||
- if (__glibc_unlikely (malloc_pwtmpbuf))
|
||||
- free (pwtmpbuf);
|
||||
+ scratch_buffer_free (&pwtmpbuf);
|
||||
|
||||
if (flags & GLOB_TILDE_CHECK)
|
||||
/* We have to regard it as an error if we cannot find the
|
||||
Index: b/posix/wordexp.c
|
||||
===================================================================
|
||||
diff --git a/posix/wordexp.c b/posix/wordexp.c
|
||||
index ba3f3ed4b66a6507..c4a6a209f416a9fb 100644
|
||||
--- a/posix/wordexp.c
|
||||
+++ b/posix/wordexp.c
|
||||
@@ -17,7 +17,6 @@
|
||||
@ -1743,7 +1397,7 @@ Index: b/posix/wordexp.c
|
||||
|
||||
#include <libc-lock.h>
|
||||
#include <_itoa.h>
|
||||
@@ -308,12 +308,7 @@ parse_tilde (char **word, size_t *word_l
|
||||
@@ -308,12 +308,7 @@ parse_tilde (char **word, size_t *word_length, size_t *max_length,
|
||||
if (i == 1 + *offset)
|
||||
{
|
||||
/* Tilde appears on its own */
|
||||
@ -1756,7 +1410,7 @@ Index: b/posix/wordexp.c
|
||||
|
||||
/* POSIX.2 says ~ expands to $HOME and if HOME is unset the
|
||||
results are unspecified. We do a lookup on the uid if
|
||||
@@ -328,25 +323,38 @@ parse_tilde (char **word, size_t *word_l
|
||||
@@ -328,25 +323,38 @@ parse_tilde (char **word, size_t *word_length, size_t *max_length,
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1802,7 +1456,7 @@ Index: b/posix/wordexp.c
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -354,13 +362,15 @@ parse_tilde (char **word, size_t *word_l
|
||||
@@ -354,13 +362,15 @@ parse_tilde (char **word, size_t *word_length, size_t *max_length,
|
||||
/* Look up user name in database to get home directory */
|
||||
char *user = strndupa (&words[1 + *offset], i - (1 + *offset));
|
||||
struct passwd pwd, *tpwd;
|
||||
@ -1822,7 +1476,7 @@ Index: b/posix/wordexp.c
|
||||
|
||||
if (result == 0 && tpwd != NULL && pwd.pw_dir)
|
||||
*word = w_addstr (*word, word_length, max_length, pwd.pw_dir);
|
||||
@@ -372,6 +382,8 @@ parse_tilde (char **word, size_t *word_l
|
||||
@@ -372,6 +382,8 @@ parse_tilde (char **word, size_t *word_length, size_t *max_length,
|
||||
*word = w_addstr (*word, word_length, max_length, user);
|
||||
}
|
||||
|
||||
@ -1831,8 +1485,8 @@ Index: b/posix/wordexp.c
|
||||
*offset = i - 1;
|
||||
}
|
||||
return *word ? 0 : WRDE_NOSPACE;
|
||||
Index: b/sysdeps/unix/sysv/linux/gethostid.c
|
||||
===================================================================
|
||||
diff --git a/sysdeps/unix/sysv/linux/gethostid.c b/sysdeps/unix/sysv/linux/gethostid.c
|
||||
index cc108aa2d64b616a..3529cf6fe509cfd1 100644
|
||||
--- a/sysdeps/unix/sysv/linux/gethostid.c
|
||||
+++ b/sysdeps/unix/sysv/linux/gethostid.c
|
||||
@@ -63,13 +63,12 @@ sethostid (long int id)
|
||||
@ -1885,8 +1539,8 @@ Index: b/sysdeps/unix/sysv/linux/gethostid.c
|
||||
/* For the return value to be not exactly the IP address we do some
|
||||
bit fiddling. */
|
||||
return (int32_t) (in.s_addr << 16 | in.s_addr >> 16);
|
||||
Index: b/sysdeps/unix/sysv/linux/getlogin_r.c
|
||||
===================================================================
|
||||
diff --git a/sysdeps/unix/sysv/linux/getlogin_r.c b/sysdeps/unix/sysv/linux/getlogin_r.c
|
||||
index 05ac36b49186b29e..37a9255e03657728 100644
|
||||
--- a/sysdeps/unix/sysv/linux/getlogin_r.c
|
||||
+++ b/sysdeps/unix/sysv/linux/getlogin_r.c
|
||||
@@ -18,6 +18,7 @@
|
||||
@ -1897,7 +1551,7 @@ Index: b/sysdeps/unix/sysv/linux/getlogin_r.c
|
||||
|
||||
#define STATIC static
|
||||
static int getlogin_r_fd0 (char *name, size_t namesize);
|
||||
@@ -54,28 +55,19 @@ __getlogin_r_loginuid (char *name, size_
|
||||
@@ -54,28 +55,19 @@ __getlogin_r_loginuid (char *name, size_t namesize)
|
||||
endp == uidbuf || *endp != '\0'))
|
||||
return -1;
|
||||
|
||||
@ -1933,7 +1587,7 @@ Index: b/sysdeps/unix/sysv/linux/getlogin_r.c
|
||||
}
|
||||
|
||||
if (res != 0 || tpwd == NULL)
|
||||
@@ -95,9 +87,7 @@ __getlogin_r_loginuid (char *name, size_
|
||||
@@ -95,9 +87,7 @@ __getlogin_r_loginuid (char *name, size_t namesize)
|
||||
memcpy (name, pwd.pw_name, needed);
|
||||
|
||||
out:
|
||||
|
@ -1,141 +0,0 @@
|
||||
commit 8ec69bb7ecf3ca5edde5b7d9d7d5d3a5f8b6c405
|
||||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Thu May 11 11:32:16 2017 +0200
|
||||
|
||||
support_format_addrinfo: Fix flags and canonname formatting
|
||||
|
||||
The address family splitting via format_ai_family made unpredictable
|
||||
the place where the canonname field was printed. This commit adjusts
|
||||
the implementation so that the ai_flags is checked for consistency
|
||||
across the list, and ai_canonname must only be present on the first
|
||||
list element.
|
||||
|
||||
Tests for AI_CANONNAME are added to resolv/tst-resolv-basic.
|
||||
|
||||
diff --git a/resolv/tst-resolv-basic.c b/resolv/tst-resolv-basic.c
|
||||
index f2b1fc7490430bce..92f912beed35744f 100644
|
||||
--- a/resolv/tst-resolv-basic.c
|
||||
+++ b/resolv/tst-resolv-basic.c
|
||||
@@ -182,12 +182,12 @@ check_h (const char *name, int family, const char *expected)
|
||||
}
|
||||
|
||||
static void
|
||||
-check_ai (const char *name, const char *service,
|
||||
- int family, const char *expected)
|
||||
+check_ai_hints (const char *name, const char *service,
|
||||
+ struct addrinfo hints, const char *expected)
|
||||
{
|
||||
- struct addrinfo hints = {.ai_family = family};
|
||||
struct addrinfo *ai;
|
||||
- char *query = xasprintf ("%s:%s [%d]", name, service, family);
|
||||
+ char *query = xasprintf ("%s:%s [%d]/0x%x", name, service,
|
||||
+ hints.ai_family, hints.ai_flags);
|
||||
int ret = getaddrinfo (name, service, &hints, &ai);
|
||||
check_addrinfo (query, ai, ret, expected);
|
||||
if (ret == 0)
|
||||
@@ -195,6 +195,15 @@ check_ai (const char *name, const char *service,
|
||||
free (query);
|
||||
}
|
||||
|
||||
+static void
|
||||
+check_ai (const char *name, const char *service,
|
||||
+ int family, const char *expected)
|
||||
+{
|
||||
+ return check_ai_hints (name, service,
|
||||
+ (struct addrinfo) { .ai_family = family, },
|
||||
+ expected);
|
||||
+}
|
||||
+
|
||||
static int
|
||||
do_test (void)
|
||||
{
|
||||
@@ -229,6 +238,17 @@ do_test (void)
|
||||
"address: STREAM/TCP 2001:db8::1 80\n"
|
||||
"address: DGRAM/UDP 2001:db8::1 80\n"
|
||||
"address: RAW/IP 2001:db8::1 80\n");
|
||||
+ check_ai_hints ("www.example", "80",
|
||||
+ (struct addrinfo) { .ai_family = AF_UNSPEC,
|
||||
+ .ai_flags = AI_CANONNAME, },
|
||||
+ "flags: AI_CANONNAME\n"
|
||||
+ "canonname: www.example\n"
|
||||
+ "address: STREAM/TCP 192.0.2.17 80\n"
|
||||
+ "address: DGRAM/UDP 192.0.2.17 80\n"
|
||||
+ "address: RAW/IP 192.0.2.17 80\n"
|
||||
+ "address: STREAM/TCP 2001:db8::1 80\n"
|
||||
+ "address: DGRAM/UDP 2001:db8::1 80\n"
|
||||
+ "address: RAW/IP 2001:db8::1 80\n");
|
||||
check_ai ("alias.example", "80", AF_UNSPEC,
|
||||
"address: STREAM/TCP 192.0.2.18 80\n"
|
||||
"address: DGRAM/UDP 192.0.2.18 80\n"
|
||||
@@ -236,6 +256,17 @@ do_test (void)
|
||||
"address: STREAM/TCP 2001:db8::2 80\n"
|
||||
"address: DGRAM/UDP 2001:db8::2 80\n"
|
||||
"address: RAW/IP 2001:db8::2 80\n");
|
||||
+ check_ai_hints ("alias.example", "80",
|
||||
+ (struct addrinfo) { .ai_family = AF_UNSPEC,
|
||||
+ .ai_flags = AI_CANONNAME, },
|
||||
+ "flags: AI_CANONNAME\n"
|
||||
+ "canonname: www.example\n"
|
||||
+ "address: STREAM/TCP 192.0.2.18 80\n"
|
||||
+ "address: DGRAM/UDP 192.0.2.18 80\n"
|
||||
+ "address: RAW/IP 192.0.2.18 80\n"
|
||||
+ "address: STREAM/TCP 2001:db8::2 80\n"
|
||||
+ "address: DGRAM/UDP 2001:db8::2 80\n"
|
||||
+ "address: RAW/IP 2001:db8::2 80\n");
|
||||
check_ai (LONG_NAME, "80", AF_UNSPEC,
|
||||
"address: STREAM/TCP 192.0.2.20 80\n"
|
||||
"address: DGRAM/UDP 192.0.2.20 80\n"
|
||||
@@ -247,10 +278,26 @@ do_test (void)
|
||||
"address: STREAM/TCP 192.0.2.17 80\n"
|
||||
"address: DGRAM/UDP 192.0.2.17 80\n"
|
||||
"address: RAW/IP 192.0.2.17 80\n");
|
||||
+ check_ai_hints ("www.example", "80",
|
||||
+ (struct addrinfo) { .ai_family = AF_INET,
|
||||
+ .ai_flags = AI_CANONNAME, },
|
||||
+ "flags: AI_CANONNAME\n"
|
||||
+ "canonname: www.example\n"
|
||||
+ "address: STREAM/TCP 192.0.2.17 80\n"
|
||||
+ "address: DGRAM/UDP 192.0.2.17 80\n"
|
||||
+ "address: RAW/IP 192.0.2.17 80\n");
|
||||
check_ai ("alias.example", "80", AF_INET,
|
||||
"address: STREAM/TCP 192.0.2.18 80\n"
|
||||
"address: DGRAM/UDP 192.0.2.18 80\n"
|
||||
"address: RAW/IP 192.0.2.18 80\n");
|
||||
+ check_ai_hints ("alias.example", "80",
|
||||
+ (struct addrinfo) { .ai_family = AF_INET,
|
||||
+ .ai_flags = AI_CANONNAME, },
|
||||
+ "flags: AI_CANONNAME\n"
|
||||
+ "canonname: www.example\n"
|
||||
+ "address: STREAM/TCP 192.0.2.18 80\n"
|
||||
+ "address: DGRAM/UDP 192.0.2.18 80\n"
|
||||
+ "address: RAW/IP 192.0.2.18 80\n");
|
||||
check_ai (LONG_NAME, "80", AF_INET,
|
||||
"address: STREAM/TCP 192.0.2.20 80\n"
|
||||
"address: DGRAM/UDP 192.0.2.20 80\n"
|
||||
@@ -259,10 +306,26 @@ do_test (void)
|
||||
"address: STREAM/TCP 2001:db8::1 80\n"
|
||||
"address: DGRAM/UDP 2001:db8::1 80\n"
|
||||
"address: RAW/IP 2001:db8::1 80\n");
|
||||
+ check_ai_hints ("www.example", "80",
|
||||
+ (struct addrinfo) { .ai_family = AF_INET6,
|
||||
+ .ai_flags = AI_CANONNAME, },
|
||||
+ "flags: AI_CANONNAME\n"
|
||||
+ "canonname: www.example\n"
|
||||
+ "address: STREAM/TCP 2001:db8::1 80\n"
|
||||
+ "address: DGRAM/UDP 2001:db8::1 80\n"
|
||||
+ "address: RAW/IP 2001:db8::1 80\n");
|
||||
check_ai ("alias.example", "80", AF_INET6,
|
||||
"address: STREAM/TCP 2001:db8::2 80\n"
|
||||
"address: DGRAM/UDP 2001:db8::2 80\n"
|
||||
"address: RAW/IP 2001:db8::2 80\n");
|
||||
+ check_ai_hints ("alias.example", "80",
|
||||
+ (struct addrinfo) { .ai_family = AF_INET6,
|
||||
+ .ai_flags = AI_CANONNAME, },
|
||||
+ "flags: AI_CANONNAME\n"
|
||||
+ "canonname: www.example\n"
|
||||
+ "address: STREAM/TCP 2001:db8::2 80\n"
|
||||
+ "address: DGRAM/UDP 2001:db8::2 80\n"
|
||||
+ "address: RAW/IP 2001:db8::2 80\n");
|
||||
check_ai (LONG_NAME, "80", AF_INET6,
|
||||
"address: STREAM/TCP 2001:db8::4 80\n"
|
||||
"address: DGRAM/UDP 2001:db8::4 80\n"
|
@ -1,36 +0,0 @@
|
||||
commit 8f46c6052408a23a77ecf46aa378120c1a4afe37
|
||||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Fri Sep 1 08:57:28 2017 +0200
|
||||
|
||||
getaddrinfo: Properly set errno for NSS function lookup failure
|
||||
|
||||
(cherry picked from commit ad816a5e00ce891a2cea8187638fa0e00f83aaf6)
|
||||
|
||||
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
|
||||
index 076e1fa62bd88548..eaf8bafcf4ede5fe 100644
|
||||
--- a/sysdeps/posix/getaddrinfo.c
|
||||
+++ b/sysdeps/posix/getaddrinfo.c
|
||||
@@ -923,13 +923,17 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
}
|
||||
else
|
||||
{
|
||||
+ /* Could not locate any of the lookup functions.
|
||||
+ The NSS lookup code does not consistently set
|
||||
+ errno, so we need to supply our own error
|
||||
+ code here. The root cause could either be a
|
||||
+ resource allocation failure, or a missing
|
||||
+ service function in the DSO (so it should not
|
||||
+ be listed in /etc/nsswitch.conf). Assume the
|
||||
+ former, and return EBUSY. */
|
||||
status = NSS_STATUS_UNAVAIL;
|
||||
- /* Could not load any of the lookup functions. Indicate
|
||||
- an internal error if the failure was due to a system
|
||||
- error other than the file not being found. We use the
|
||||
- errno from the last failed callback. */
|
||||
- if (errno != 0 && errno != ENOENT)
|
||||
- __set_h_errno (NETDB_INTERNAL);
|
||||
+ __set_h_errno (NETDB_INTERNAL);
|
||||
+ __set_errno (EBUSY);
|
||||
}
|
||||
}
|
||||
|
@ -1,99 +0,0 @@
|
||||
commit bdd8422cfb1fe04cb20617495156fb232b00d23c
|
||||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Fri Sep 1 08:56:46 2017 +0200
|
||||
|
||||
getaddrinfo: Use &errno has the errno pointer
|
||||
|
||||
Similar code in nss/getXXbyYY_r.c is already using &errno as the
|
||||
argument.
|
||||
|
||||
(cherry picked from commit 924b121c5978689001ae28cf1c8497371dad4f71)
|
||||
|
||||
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
|
||||
index 09f85fc472f9e177..1a16820b7e598dbc 100644
|
||||
--- a/sysdeps/posix/getaddrinfo.c
|
||||
+++ b/sysdeps/posix/getaddrinfo.c
|
||||
@@ -247,11 +247,10 @@ convert_hostent_to_gaih_addrtuple (const struct addrinfo *req,
|
||||
char *localcanon = NULL; \
|
||||
no_data = 0; \
|
||||
while (1) { \
|
||||
- rc = 0; \
|
||||
status = DL_CALL_FCT (fct, (name, _family, &th, \
|
||||
tmpbuf->data, tmpbuf->length, \
|
||||
- &rc, &herrno, NULL, &localcanon)); \
|
||||
- if (rc != ERANGE || herrno != NETDB_INTERNAL) \
|
||||
+ &errno, &herrno, NULL, &localcanon)); \
|
||||
+ if (errno != ERANGE || herrno != NETDB_INTERNAL) \
|
||||
break; \
|
||||
if (!scratch_buffer_grow (tmpbuf)) \
|
||||
{ \
|
||||
@@ -261,11 +260,11 @@ convert_hostent_to_gaih_addrtuple (const struct addrinfo *req,
|
||||
goto free_and_return; \
|
||||
} \
|
||||
} \
|
||||
- if (status == NSS_STATUS_SUCCESS && rc == 0) \
|
||||
+ if (status == NSS_STATUS_SUCCESS && errno == 0) \
|
||||
h = &th; \
|
||||
else \
|
||||
h = NULL; \
|
||||
- if (rc != 0) \
|
||||
+ if (errno != 0) \
|
||||
{ \
|
||||
if (herrno == NETDB_INTERNAL) \
|
||||
{ \
|
||||
@@ -335,9 +334,8 @@ getcanonname (service_user *nip, struct gaih_addrtuple *at, const char *name)
|
||||
{
|
||||
char buf[256];
|
||||
int herrno;
|
||||
- int rc;
|
||||
if (DL_CALL_FCT (cfct, (at->name ?: name, buf, sizeof (buf),
|
||||
- &s, &rc, &herrno)) != NSS_STATUS_SUCCESS)
|
||||
+ &s, &errno, &herrno)) != NSS_STATUS_SUCCESS)
|
||||
/* If the canonical name cannot be determined, use the passed
|
||||
string. */
|
||||
s = (char *) name;
|
||||
@@ -353,7 +351,6 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
const struct gaih_typeproto *tp = gaih_inet_typeproto;
|
||||
struct gaih_servtuple *st = (struct gaih_servtuple *) &nullserv;
|
||||
struct gaih_addrtuple *at = NULL;
|
||||
- int rc;
|
||||
bool got_ipv6 = false;
|
||||
const char *canon = NULL;
|
||||
const char *orig_name = name;
|
||||
@@ -395,7 +392,8 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
st = (struct gaih_servtuple *)
|
||||
alloca_account (sizeof (struct gaih_servtuple), alloca_used);
|
||||
|
||||
- if ((rc = gaih_inet_serv (service->name, tp, req, st, tmpbuf)))
|
||||
+ int rc = gaih_inet_serv (service->name, tp, req, st, tmpbuf);
|
||||
+ if (__glibc_unlikely (rc != 0))
|
||||
return rc;
|
||||
}
|
||||
else
|
||||
@@ -495,7 +493,7 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
idn_flags |= IDNA_USE_STD3_ASCII_RULES;
|
||||
|
||||
char *p = NULL;
|
||||
- rc = __idna_to_ascii_lz (name, &p, idn_flags);
|
||||
+ int rc = __idna_to_ascii_lz (name, &p, idn_flags);
|
||||
if (rc != IDNA_SUCCESS)
|
||||
{
|
||||
/* No need to jump to free_and_return here. */
|
||||
@@ -793,15 +791,14 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
|
||||
while (1)
|
||||
{
|
||||
- rc = 0;
|
||||
status = DL_CALL_FCT (fct4, (name, pat,
|
||||
tmpbuf->data, tmpbuf->length,
|
||||
- &rc, &herrno,
|
||||
+ &errno, &herrno,
|
||||
NULL));
|
||||
if (status == NSS_STATUS_SUCCESS)
|
||||
break;
|
||||
if (status != NSS_STATUS_TRYAGAIN
|
||||
- || rc != ERANGE || herrno != NETDB_INTERNAL)
|
||||
+ || errno != ERANGE || herrno != NETDB_INTERNAL)
|
||||
{
|
||||
if (herrno == TRY_AGAIN)
|
||||
no_data = EAI_AGAIN;
|
@ -1,29 +0,0 @@
|
||||
commit 4fdd75e4463801b9d8f329769df1a26145560656
|
||||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Tue Aug 8 18:48:05 2017 +0200
|
||||
|
||||
getaddrinfo: Remove unreachable return statement from gaih_inet
|
||||
|
||||
(cherry picked from commit 0df595b23a829c9169ec418a19eef9006b4ae801)
|
||||
|
||||
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
|
||||
index 699411cc92fc210c..09f85fc472f9e177 100644
|
||||
--- a/sysdeps/posix/getaddrinfo.c
|
||||
+++ b/sysdeps/posix/getaddrinfo.c
|
||||
@@ -420,13 +420,9 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
alloca_account (sizeof (struct gaih_servtuple),
|
||||
alloca_used);
|
||||
|
||||
- if ((rc = gaih_inet_serv (service->name,
|
||||
- tp, req, newp, tmpbuf)))
|
||||
- {
|
||||
- if (rc)
|
||||
- continue;
|
||||
- return rc;
|
||||
- }
|
||||
+ if (gaih_inet_serv (service->name,
|
||||
+ tp, req, newp, tmpbuf) != 0)
|
||||
+ continue;
|
||||
|
||||
*pst = newp;
|
||||
pst = &(newp->next);
|
@ -1,330 +0,0 @@
|
||||
commit a71a3374cd8cf53776c33994f69ec184c26f2129
|
||||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Mon Sep 4 11:27:24 2017 +0200
|
||||
|
||||
getaddrinfo: Fix error handling in gethosts [BZ #21915] [BZ #21922]
|
||||
|
||||
The old code uses errno as the primary indicator for success or
|
||||
failure. This is wrong because errno is only set for specific
|
||||
combinations of the status return value and the h_errno variable.
|
||||
|
||||
(cherry picked from commit f4a6be2582b8dfe8adfa68da3dd8decf566b3983)
|
||||
|
||||
diff --git a/nss/Makefile b/nss/Makefile
|
||||
index f0a6e4877fac6bf7..a6e994aa9f6df0bc 100644
|
||||
--- a/nss/Makefile
|
||||
+++ b/nss/Makefile
|
||||
@@ -54,6 +54,11 @@ tests = test-netdb tst-nss-test1 test-digits-dots \
|
||||
$(tests-static)
|
||||
xtests = bug-erange
|
||||
|
||||
+# Tests which need libdl
|
||||
+ifeq (yes,$(build-shared))
|
||||
+tests += tst-nss-files-hosts-erange
|
||||
+endif
|
||||
+
|
||||
# If we have a thread library then we can test cancellation against
|
||||
# some routines like getpwuid_r.
|
||||
ifeq (yes,$(have-thread-library))
|
||||
@@ -139,3 +144,5 @@ $(objpfx)tst-nss-test1.out: $(objpfx)/libnss_test1.so$(libnss_test1.so-version)
|
||||
ifeq (yes,$(have-thread-library))
|
||||
$(objpfx)tst-cancel-getpwuid_r: $(shared-thread-library)
|
||||
endif
|
||||
+
|
||||
+$(objpfx)tst-nss-files-hosts-erange: $(libdl)
|
||||
diff --git a/nss/tst-nss-files-hosts-erange.c b/nss/tst-nss-files-hosts-erange.c
|
||||
new file mode 100644
|
||||
index 0000000000000000..beb7aa9fa0b5926f
|
||||
--- /dev/null
|
||||
+++ b/nss/tst-nss-files-hosts-erange.c
|
||||
@@ -0,0 +1,109 @@
|
||||
+/* Parse /etc/hosts in multi mode with a trailing long line (bug 21915).
|
||||
+ Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
+ This file is part of the GNU C Library.
|
||||
+
|
||||
+ The GNU C Library is free software; you can redistribute it and/or
|
||||
+ modify it under the terms of the GNU Lesser General Public
|
||||
+ License as published by the Free Software Foundation; either
|
||||
+ version 2.1 of the License, or (at your option) any later version.
|
||||
+
|
||||
+ The GNU C Library is distributed in the hope that it will be useful,
|
||||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ Lesser General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU Lesser General Public
|
||||
+ License along with the GNU C Library; if not, see
|
||||
+ <http://www.gnu.org/licenses/>. */
|
||||
+
|
||||
+
|
||||
+#include <dlfcn.h>
|
||||
+#include <errno.h>
|
||||
+#include <gnu/lib-names.h>
|
||||
+#include <netdb.h>
|
||||
+#include <nss.h>
|
||||
+#include <support/check.h>
|
||||
+#include <support/check_nss.h>
|
||||
+#include <support/namespace.h>
|
||||
+#include <support/test-driver.h>
|
||||
+#include <support/xunistd.h>
|
||||
+
|
||||
+struct support_chroot *chroot_env;
|
||||
+
|
||||
+#define X10 "XXXXXXXXXX"
|
||||
+#define X100 X10 X10 X10 X10 X10 X10 X10 X10 X10 X10
|
||||
+#define X1000 X100 X100 X100 X100 X100 X100 X100 X100 X100 X100
|
||||
+
|
||||
+static void
|
||||
+prepare (int argc, char **argv)
|
||||
+{
|
||||
+ chroot_env = support_chroot_create
|
||||
+ ((struct support_chroot_configuration)
|
||||
+ {
|
||||
+ .resolv_conf = "",
|
||||
+ .hosts =
|
||||
+ "127.0.0.1 localhost localhost.localdomain\n"
|
||||
+ "::1 localhost localhost.localdomain\n"
|
||||
+ "192.0.2.1 example.com\n"
|
||||
+ "#" X1000 X100 "\n",
|
||||
+ .host_conf = "multi on\n",
|
||||
+ });
|
||||
+}
|
||||
+
|
||||
+static int
|
||||
+do_test (void)
|
||||
+{
|
||||
+ support_become_root ();
|
||||
+ if (!support_can_chroot ())
|
||||
+ return EXIT_UNSUPPORTED;
|
||||
+
|
||||
+ __nss_configure_lookup ("hosts", "files");
|
||||
+ if (dlopen (LIBNSS_FILES_SO, RTLD_LAZY) == NULL)
|
||||
+ FAIL_EXIT1 ("could not load " LIBNSS_DNS_SO ": %s", dlerror ());
|
||||
+
|
||||
+ xchroot (chroot_env->path_chroot);
|
||||
+
|
||||
+ errno = ERANGE;
|
||||
+ h_errno = NETDB_INTERNAL;
|
||||
+ check_hostent ("gethostbyname example.com",
|
||||
+ gethostbyname ("example.com"),
|
||||
+ "name: example.com\n"
|
||||
+ "address: 192.0.2.1\n");
|
||||
+ errno = ERANGE;
|
||||
+ h_errno = NETDB_INTERNAL;
|
||||
+ check_hostent ("gethostbyname2 AF_INET example.com",
|
||||
+ gethostbyname2 ("example.com", AF_INET),
|
||||
+ "name: example.com\n"
|
||||
+ "address: 192.0.2.1\n");
|
||||
+ {
|
||||
+ struct addrinfo hints =
|
||||
+ {
|
||||
+ .ai_family = AF_UNSPEC,
|
||||
+ .ai_socktype = SOCK_STREAM,
|
||||
+ .ai_protocol = IPPROTO_TCP,
|
||||
+ };
|
||||
+ errno = ERANGE;
|
||||
+ h_errno = NETDB_INTERNAL;
|
||||
+ struct addrinfo *ai;
|
||||
+ int ret = getaddrinfo ("example.com", "80", &hints, &ai);
|
||||
+ check_addrinfo ("example.com AF_UNSPEC", ai, ret,
|
||||
+ "address: STREAM/TCP 192.0.2.1 80\n");
|
||||
+ if (ret == 0)
|
||||
+ freeaddrinfo (ai);
|
||||
+
|
||||
+ hints.ai_family = AF_INET;
|
||||
+ errno = ERANGE;
|
||||
+ h_errno = NETDB_INTERNAL;
|
||||
+ ret = getaddrinfo ("example.com", "80", &hints, &ai);
|
||||
+ check_addrinfo ("example.com AF_INET", ai, ret,
|
||||
+ "address: STREAM/TCP 192.0.2.1 80\n");
|
||||
+ if (ret == 0)
|
||||
+ freeaddrinfo (ai);
|
||||
+ }
|
||||
+
|
||||
+ support_chroot_free (chroot_env);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+#define PREPARE prepare
|
||||
+#include <support/test-driver.c>
|
||||
diff --git a/resolv/tst-resolv-basic.c b/resolv/tst-resolv-basic.c
|
||||
index 64eedbbd81d58d95..66a0e8a1659219b4 100644
|
||||
--- a/resolv/tst-resolv-basic.c
|
||||
+++ b/resolv/tst-resolv-basic.c
|
||||
@@ -50,7 +50,7 @@ response (const struct resolv_response_context *ctx,
|
||||
qname_compare = qname + 2;
|
||||
else
|
||||
qname_compare = qname;
|
||||
- enum {www, alias, nxdomain, long_name} requested_qname;
|
||||
+ enum {www, alias, nxdomain, long_name, nodata} requested_qname;
|
||||
if (strcmp (qname_compare, "www.example") == 0)
|
||||
requested_qname = www;
|
||||
else if (strcmp (qname_compare, "alias.example") == 0)
|
||||
@@ -59,6 +59,8 @@ response (const struct resolv_response_context *ctx,
|
||||
requested_qname = nxdomain;
|
||||
else if (strcmp (qname_compare, LONG_NAME) == 0)
|
||||
requested_qname = long_name;
|
||||
+ else if (strcmp (qname_compare, "nodata.example") == 0)
|
||||
+ requested_qname = nodata;
|
||||
else
|
||||
{
|
||||
support_record_failure ();
|
||||
@@ -87,6 +89,8 @@ response (const struct resolv_response_context *ctx,
|
||||
resolv_response_close_record (b);
|
||||
resolv_response_open_record (b, "www.example", qclass, qtype, 0);
|
||||
break;
|
||||
+ case nodata:
|
||||
+ return;
|
||||
case nxdomain:
|
||||
FAIL_EXIT1 ("unreachable");
|
||||
}
|
||||
@@ -267,6 +271,55 @@ test_bug_21295 (void)
|
||||
}
|
||||
}
|
||||
|
||||
+/* Run tests which do not expect any data. */
|
||||
+static void
|
||||
+test_nodata_nxdomain (void)
|
||||
+{
|
||||
+ /* Iterate through different address families. */
|
||||
+ int families[] = { AF_UNSPEC, AF_INET, AF_INET6, -1 };
|
||||
+ for (int i = 0; families[i] >= 0; ++i)
|
||||
+ /* If do_tcp, prepend "t." to the name to trigger TCP
|
||||
+ fallback. */
|
||||
+ for (int do_tcp = 0; do_tcp < 2; ++do_tcp)
|
||||
+ /* If do_nxdomain, trigger an NXDOMAIN error (DNS failure),
|
||||
+ otherwise use a NODATA response (empty but successful
|
||||
+ answer). */
|
||||
+ for (int do_nxdomain = 0; do_nxdomain < 2; ++do_nxdomain)
|
||||
+ {
|
||||
+ int family = families[i];
|
||||
+ char *name = xasprintf ("%s%s.example",
|
||||
+ do_tcp ? "t." : "",
|
||||
+ do_nxdomain ? "nxdomain" : "nodata");
|
||||
+
|
||||
+ if (family != AF_UNSPEC)
|
||||
+ {
|
||||
+ if (do_nxdomain)
|
||||
+ check_h (name, family, "error: HOST_NOT_FOUND\n");
|
||||
+ else
|
||||
+ check_h (name, family, "error: NO_ADDRESS\n");
|
||||
+ }
|
||||
+
|
||||
+ const char *expected;
|
||||
+ if (do_nxdomain)
|
||||
+ expected = "error: Name or service not known\n";
|
||||
+ else
|
||||
+ expected = "error: No address associated with hostname\n";
|
||||
+
|
||||
+ check_ai (name, "80", family, expected);
|
||||
+
|
||||
+ struct addrinfo hints =
|
||||
+ {
|
||||
+ .ai_family = family,
|
||||
+ .ai_flags = AI_V4MAPPED | AI_ALL,
|
||||
+ };
|
||||
+ check_ai_hints (name, "80", hints, expected);
|
||||
+ hints.ai_flags |= AI_CANONNAME;
|
||||
+ check_ai_hints (name, "80", hints, expected);
|
||||
+
|
||||
+ free (name);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
static int
|
||||
do_test (void)
|
||||
{
|
||||
@@ -439,29 +492,8 @@ do_test (void)
|
||||
"address: DGRAM/UDP 2001:db8::4 80\n"
|
||||
"address: RAW/IP 2001:db8::4 80\n");
|
||||
|
||||
- check_h ("nxdomain.example", AF_INET,
|
||||
- "error: HOST_NOT_FOUND\n");
|
||||
- check_h ("nxdomain.example", AF_INET6,
|
||||
- "error: HOST_NOT_FOUND\n");
|
||||
- check_ai ("nxdomain.example", "80", AF_UNSPEC,
|
||||
- "error: Name or service not known\n");
|
||||
- check_ai ("nxdomain.example", "80", AF_INET,
|
||||
- "error: Name or service not known\n");
|
||||
- check_ai ("nxdomain.example", "80", AF_INET6,
|
||||
- "error: Name or service not known\n");
|
||||
-
|
||||
- check_h ("t.nxdomain.example", AF_INET,
|
||||
- "error: HOST_NOT_FOUND\n");
|
||||
- check_h ("t.nxdomain.example", AF_INET6,
|
||||
- "error: HOST_NOT_FOUND\n");
|
||||
- check_ai ("t.nxdomain.example", "80", AF_UNSPEC,
|
||||
- "error: Name or service not known\n");
|
||||
- check_ai ("t.nxdomain.example", "80", AF_INET,
|
||||
- "error: Name or service not known\n");
|
||||
- check_ai ("t.nxdomain.example", "80", AF_INET6,
|
||||
- "error: Name or service not known\n");
|
||||
-
|
||||
test_bug_21295 ();
|
||||
+ test_nodata_nxdomain ();
|
||||
|
||||
resolv_test_end (aux);
|
||||
|
||||
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
|
||||
index 0cf87c224dff5c66..2c4b6d6793a4c3a9 100644
|
||||
--- a/sysdeps/posix/getaddrinfo.c
|
||||
+++ b/sysdeps/posix/getaddrinfo.c
|
||||
@@ -242,28 +242,26 @@ convert_hostent_to_gaih_addrtuple (const struct addrinfo *req,
|
||||
#define gethosts(_family, _type) \
|
||||
{ \
|
||||
struct hostent th; \
|
||||
- struct hostent *h; \
|
||||
char *localcanon = NULL; \
|
||||
no_data = 0; \
|
||||
- while (1) { \
|
||||
- status = DL_CALL_FCT (fct, (name, _family, &th, \
|
||||
- tmpbuf->data, tmpbuf->length, \
|
||||
- &errno, &h_errno, NULL, &localcanon)); \
|
||||
- if (errno != ERANGE || h_errno != NETDB_INTERNAL) \
|
||||
- break; \
|
||||
- if (!scratch_buffer_grow (tmpbuf)) \
|
||||
- { \
|
||||
- __resolv_context_enable_inet6 (res_ctx, res_enable_inet6); \
|
||||
- __resolv_context_put (res_ctx); \
|
||||
- result = -EAI_MEMORY; \
|
||||
- goto free_and_return; \
|
||||
- } \
|
||||
- } \
|
||||
- if (status == NSS_STATUS_SUCCESS && errno == 0) \
|
||||
- h = &th; \
|
||||
- else \
|
||||
- h = NULL; \
|
||||
- if (errno != 0) \
|
||||
+ while (1) \
|
||||
+ { \
|
||||
+ status = DL_CALL_FCT (fct, (name, _family, &th, \
|
||||
+ tmpbuf->data, tmpbuf->length, \
|
||||
+ &errno, &h_errno, NULL, &localcanon)); \
|
||||
+ if (status != NSS_STATUS_TRYAGAIN || h_errno != NETDB_INTERNAL \
|
||||
+ || errno != ERANGE) \
|
||||
+ break; \
|
||||
+ if (!scratch_buffer_grow (tmpbuf)) \
|
||||
+ { \
|
||||
+ __resolv_context_enable_inet6 (res_ctx, res_enable_inet6); \
|
||||
+ __resolv_context_put (res_ctx); \
|
||||
+ result = -EAI_MEMORY; \
|
||||
+ goto free_and_return; \
|
||||
+ } \
|
||||
+ } \
|
||||
+ if (status == NSS_STATUS_NOTFOUND \
|
||||
+ || status == NSS_STATUS_TRYAGAIN || status == NSS_STATUS_UNAVAIL) \
|
||||
{ \
|
||||
if (h_errno == NETDB_INTERNAL) \
|
||||
{ \
|
||||
@@ -277,9 +275,9 @@ convert_hostent_to_gaih_addrtuple (const struct addrinfo *req,
|
||||
else \
|
||||
no_data = h_errno == NO_DATA; \
|
||||
} \
|
||||
- else if (h != NULL) \
|
||||
+ else if (status == NSS_STATUS_SUCCESS) \
|
||||
{ \
|
||||
- if (!convert_hostent_to_gaih_addrtuple (req, _family,h, &addrmem)) \
|
||||
+ if (!convert_hostent_to_gaih_addrtuple (req, _family, &th, &addrmem)) \
|
||||
{ \
|
||||
__resolv_context_enable_inet6 (res_ctx, res_enable_inet6); \
|
||||
__resolv_context_put (res_ctx); \
|
@ -1,21 +0,0 @@
|
||||
commit dc258ce62ae0bbb456c6a855dbb6b384ecf7e988
|
||||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Thu Aug 3 13:59:17 2017 +0200
|
||||
|
||||
getaddrinfo: Release resolver context on error in gethosts [BZ #21885]
|
||||
|
||||
(cherry picked from commit 964263bb8d650f1681665c55704fb01a8e725621)
|
||||
|
||||
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
|
||||
index efa7118498990073..699411cc92fc210c 100644
|
||||
--- a/sysdeps/posix/getaddrinfo.c
|
||||
+++ b/sysdeps/posix/getaddrinfo.c
|
||||
@@ -255,6 +255,8 @@ convert_hostent_to_gaih_addrtuple (const struct addrinfo *req,
|
||||
break; \
|
||||
if (!scratch_buffer_grow (tmpbuf)) \
|
||||
{ \
|
||||
+ __resolv_context_enable_inet6 (res_ctx, res_enable_inet6); \
|
||||
+ __resolv_context_put (res_ctx); \
|
||||
result = -EAI_MEMORY; \
|
||||
goto free_and_return; \
|
||||
} \
|
@ -1,27 +0,0 @@
|
||||
commit 7ab87bccb657b02cac5a3360b11c67aff901de2e
|
||||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Fri Sep 1 08:57:52 2017 +0200
|
||||
|
||||
getaddrinfo: In gaih_inet, use h_errno for certain status values only
|
||||
|
||||
h_errno is not set for NSS_STATUS_SUCCESS, so its value might not be
|
||||
accurate at this point.
|
||||
|
||||
(cherry picked from commit a2881ef01450295782b065f2f850f340d5c12c14)
|
||||
|
||||
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
|
||||
index eaf8bafcf4ede5fe..9d9e7e2bf2a78cbb 100644
|
||||
--- a/sysdeps/posix/getaddrinfo.c
|
||||
+++ b/sysdeps/posix/getaddrinfo.c
|
||||
@@ -949,7 +949,10 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
__resolv_context_enable_inet6 (res_ctx, res_enable_inet6);
|
||||
__resolv_context_put (res_ctx);
|
||||
|
||||
- if (h_errno == NETDB_INTERNAL)
|
||||
+ /* If we have a failure which sets errno, report it using
|
||||
+ EAI_SYSTEM. */
|
||||
+ if ((status == NSS_STATUS_TRYAGAIN || status == NSS_STATUS_UNAVAIL)
|
||||
+ && h_errno == NETDB_INTERNAL)
|
||||
{
|
||||
result = -EAI_SYSTEM;
|
||||
goto free_and_return;
|
@ -1,151 +0,0 @@
|
||||
commit 701f7873da013fb19d9120317322cd78333e63c2
|
||||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Fri Sep 1 08:57:07 2017 +0200
|
||||
|
||||
getaddrinfo: Use &h_errno has the h_errno pointer
|
||||
|
||||
This simplifies the code because it is not necessary to propagate the
|
||||
temporary h_errno value to the thread-local variable. It also increases
|
||||
compatibility with NSS modules which update only one of the two places.
|
||||
|
||||
(cherry picked from commit 53250a21b81474ef4e78090a4a9a63d8471e1091)
|
||||
|
||||
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
|
||||
index 1a16820b7e598dbc..076e1fa62bd88548 100644
|
||||
--- a/sysdeps/posix/getaddrinfo.c
|
||||
+++ b/sysdeps/posix/getaddrinfo.c
|
||||
@@ -241,7 +241,6 @@ convert_hostent_to_gaih_addrtuple (const struct addrinfo *req,
|
||||
|
||||
#define gethosts(_family, _type) \
|
||||
{ \
|
||||
- int herrno; \
|
||||
struct hostent th; \
|
||||
struct hostent *h; \
|
||||
char *localcanon = NULL; \
|
||||
@@ -249,8 +248,8 @@ convert_hostent_to_gaih_addrtuple (const struct addrinfo *req,
|
||||
while (1) { \
|
||||
status = DL_CALL_FCT (fct, (name, _family, &th, \
|
||||
tmpbuf->data, tmpbuf->length, \
|
||||
- &errno, &herrno, NULL, &localcanon)); \
|
||||
- if (errno != ERANGE || herrno != NETDB_INTERNAL) \
|
||||
+ &errno, &h_errno, NULL, &localcanon)); \
|
||||
+ if (errno != ERANGE || h_errno != NETDB_INTERNAL) \
|
||||
break; \
|
||||
if (!scratch_buffer_grow (tmpbuf)) \
|
||||
{ \
|
||||
@@ -266,18 +265,17 @@ convert_hostent_to_gaih_addrtuple (const struct addrinfo *req,
|
||||
h = NULL; \
|
||||
if (errno != 0) \
|
||||
{ \
|
||||
- if (herrno == NETDB_INTERNAL) \
|
||||
+ if (h_errno == NETDB_INTERNAL) \
|
||||
{ \
|
||||
- __set_h_errno (herrno); \
|
||||
__resolv_context_enable_inet6 (res_ctx, res_enable_inet6); \
|
||||
__resolv_context_put (res_ctx); \
|
||||
result = -EAI_SYSTEM; \
|
||||
goto free_and_return; \
|
||||
} \
|
||||
- if (herrno == TRY_AGAIN) \
|
||||
+ if (h_errno == TRY_AGAIN) \
|
||||
no_data = EAI_AGAIN; \
|
||||
else \
|
||||
- no_data = herrno == NO_DATA; \
|
||||
+ no_data = h_errno == NO_DATA; \
|
||||
} \
|
||||
else if (h != NULL) \
|
||||
{ \
|
||||
@@ -333,9 +331,8 @@ getcanonname (service_user *nip, struct gaih_addrtuple *at, const char *name)
|
||||
if (cfct != NULL)
|
||||
{
|
||||
char buf[256];
|
||||
- int herrno;
|
||||
if (DL_CALL_FCT (cfct, (at->name ?: name, buf, sizeof (buf),
|
||||
- &s, &errno, &herrno)) != NSS_STATUS_SUCCESS)
|
||||
+ &s, &errno, &h_errno)) != NSS_STATUS_SUCCESS)
|
||||
/* If the canonical name cannot be determined, use the passed
|
||||
string. */
|
||||
s = (char *) name;
|
||||
@@ -594,14 +591,13 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
int rc;
|
||||
struct hostent th;
|
||||
struct hostent *h;
|
||||
- int herrno;
|
||||
|
||||
while (1)
|
||||
{
|
||||
rc = __gethostbyname2_r (name, AF_INET, &th,
|
||||
tmpbuf->data, tmpbuf->length,
|
||||
- &h, &herrno);
|
||||
- if (rc != ERANGE || herrno != NETDB_INTERNAL)
|
||||
+ &h, &h_errno);
|
||||
+ if (rc != ERANGE || h_errno != NETDB_INTERNAL)
|
||||
break;
|
||||
if (!scratch_buffer_grow (tmpbuf))
|
||||
{
|
||||
@@ -626,12 +622,9 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
}
|
||||
else
|
||||
{
|
||||
- if (herrno == NETDB_INTERNAL)
|
||||
- {
|
||||
- __set_h_errno (herrno);
|
||||
- result = -EAI_SYSTEM;
|
||||
- }
|
||||
- else if (herrno == TRY_AGAIN)
|
||||
+ if (h_errno == NETDB_INTERNAL)
|
||||
+ result = -EAI_SYSTEM;
|
||||
+ else if (h_errno == TRY_AGAIN)
|
||||
result = -EAI_AGAIN;
|
||||
else
|
||||
/* We made requests but they turned out no data.
|
||||
@@ -654,8 +647,7 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
{
|
||||
/* Try to use nscd. */
|
||||
struct nscd_ai_result *air = NULL;
|
||||
- int herrno;
|
||||
- int err = __nscd_getai (name, &air, &herrno);
|
||||
+ int err = __nscd_getai (name, &air, &h_errno);
|
||||
if (air != NULL)
|
||||
{
|
||||
/* Transform into gaih_addrtuple list. */
|
||||
@@ -746,9 +738,9 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
goto free_and_return;
|
||||
else if (__nss_not_use_nscd_hosts == 0)
|
||||
{
|
||||
- if (herrno == NETDB_INTERNAL && errno == ENOMEM)
|
||||
+ if (h_errno == NETDB_INTERNAL && errno == ENOMEM)
|
||||
result = -EAI_MEMORY;
|
||||
- else if (herrno == TRY_AGAIN)
|
||||
+ else if (h_errno == TRY_AGAIN)
|
||||
result = -EAI_AGAIN;
|
||||
else
|
||||
result = -EAI_SYSTEM;
|
||||
@@ -787,23 +779,21 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
|
||||
if (fct4 != NULL)
|
||||
{
|
||||
- int herrno;
|
||||
-
|
||||
while (1)
|
||||
{
|
||||
status = DL_CALL_FCT (fct4, (name, pat,
|
||||
tmpbuf->data, tmpbuf->length,
|
||||
- &errno, &herrno,
|
||||
+ &errno, &h_errno,
|
||||
NULL));
|
||||
if (status == NSS_STATUS_SUCCESS)
|
||||
break;
|
||||
if (status != NSS_STATUS_TRYAGAIN
|
||||
- || errno != ERANGE || herrno != NETDB_INTERNAL)
|
||||
+ || errno != ERANGE || h_errno != NETDB_INTERNAL)
|
||||
{
|
||||
- if (herrno == TRY_AGAIN)
|
||||
+ if (h_errno == TRY_AGAIN)
|
||||
no_data = EAI_AGAIN;
|
||||
else
|
||||
- no_data = herrno == NO_DATA;
|
||||
+ no_data = h_errno == NO_DATA;
|
||||
break;
|
||||
}
|
||||
|
@ -1,62 +0,0 @@
|
||||
commit 76b8266f990a2912f42d1b7050840e8c7f14f2c2
|
||||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Wed Jun 21 13:35:37 2017 +0200
|
||||
|
||||
getaddrinfo: Avoid stack copy of IPv6 address
|
||||
|
||||
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
|
||||
index b3d0a5ca74d926bb..4ec17961adb194ff 100644
|
||||
--- a/sysdeps/posix/getaddrinfo.c
|
||||
+++ b/sysdeps/posix/getaddrinfo.c
|
||||
@@ -539,46 +539,11 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
{
|
||||
char *scope_delim = strchr (name, SCOPE_DELIMITER);
|
||||
int e;
|
||||
-
|
||||
- {
|
||||
- bool malloc_namebuf = false;
|
||||
- char *namebuf = (char *) name;
|
||||
-
|
||||
- if (__glibc_unlikely (scope_delim != NULL))
|
||||
- {
|
||||
- if (malloc_name)
|
||||
- *scope_delim = '\0';
|
||||
- else
|
||||
- {
|
||||
- if (__libc_use_alloca (alloca_used
|
||||
- + scope_delim - name + 1))
|
||||
- {
|
||||
- namebuf = alloca_account (scope_delim - name + 1,
|
||||
- alloca_used);
|
||||
- *((char *) __mempcpy (namebuf, name,
|
||||
- scope_delim - name)) = '\0';
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- namebuf = strndup (name, scope_delim - name);
|
||||
- if (namebuf == NULL)
|
||||
- {
|
||||
- assert (!malloc_name);
|
||||
- return -EAI_MEMORY;
|
||||
- }
|
||||
- malloc_namebuf = true;
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- e = inet_pton (AF_INET6, namebuf, at->addr);
|
||||
-
|
||||
- if (malloc_namebuf)
|
||||
- free (namebuf);
|
||||
- else if (scope_delim != NULL && malloc_name)
|
||||
- /* Undo what we did above. */
|
||||
- *scope_delim = SCOPE_DELIMITER;
|
||||
- }
|
||||
+ if (scope_delim == NULL)
|
||||
+ e = inet_pton (AF_INET6, name, at->addr);
|
||||
+ else
|
||||
+ e = __inet_pton_length (AF_INET6, name, scope_delim - name,
|
||||
+ at->addr);
|
||||
if (e > 0)
|
||||
{
|
||||
if (req->ai_family == AF_UNSPEC || req->ai_family == AF_INET6)
|
@ -1,85 +0,0 @@
|
||||
commit 46ce8881ade788db56079622f47f648d4aaa003b
|
||||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Thu May 11 10:01:49 2017 +0200
|
||||
|
||||
getaddrinfo: Unconditionally use malloc for address list
|
||||
|
||||
getaddrinfo has to call malloc eventually anyway, so the complexity
|
||||
of avoiding malloc calls is not worth potential savings.
|
||||
|
||||
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
|
||||
index 1ea2b2218d263b28..987a1c1e17f2d5b1 100644
|
||||
--- a/sysdeps/posix/getaddrinfo.c
|
||||
+++ b/sysdeps/posix/getaddrinfo.c
|
||||
@@ -278,9 +278,6 @@ convert_hostent_to_gaih_addrtuple (const struct addrinfo *req,
|
||||
} \
|
||||
else if (h != NULL) \
|
||||
{ \
|
||||
- /* Make sure that addrmem can be freed. */ \
|
||||
- if (!malloc_addrmem) \
|
||||
- addrmem = NULL; \
|
||||
if (!convert_hostent_to_gaih_addrtuple (req, _family,h, &addrmem)) \
|
||||
{ \
|
||||
_res.options |= old_res_options & DEPRECATED_RES_USE_INET6; \
|
||||
@@ -288,8 +285,6 @@ convert_hostent_to_gaih_addrtuple (const struct addrinfo *req,
|
||||
goto free_and_return; \
|
||||
} \
|
||||
*pat = addrmem; \
|
||||
- /* The conversion uses malloc unconditionally. */ \
|
||||
- malloc_addrmem = true; \
|
||||
\
|
||||
if (localcanon != NULL && canon == NULL) \
|
||||
canon = strdupa (localcanon); \
|
||||
@@ -447,7 +442,6 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
}
|
||||
|
||||
bool malloc_name = false;
|
||||
- bool malloc_addrmem = false;
|
||||
struct gaih_addrtuple *addrmem = NULL;
|
||||
bool malloc_canonbuf = false;
|
||||
char *canonbuf = NULL;
|
||||
@@ -633,8 +627,6 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
goto free_and_return;
|
||||
}
|
||||
*pat = addrmem;
|
||||
- /* The conversion uses malloc unconditionally. */
|
||||
- malloc_addrmem = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -675,21 +667,11 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
bool added_canon = (req->ai_flags & AI_CANONNAME) == 0;
|
||||
char *addrs = air->addrs;
|
||||
|
||||
- if (__libc_use_alloca (alloca_used
|
||||
- + air->naddrs * sizeof (struct gaih_addrtuple)))
|
||||
- addrmem = alloca_account (air->naddrs
|
||||
- * sizeof (struct gaih_addrtuple),
|
||||
- alloca_used);
|
||||
- else
|
||||
+ addrmem = calloc (air->naddrs, sizeof (*addrmem));
|
||||
+ if (addrmem == NULL)
|
||||
{
|
||||
- addrmem = malloc (air->naddrs
|
||||
- * sizeof (struct gaih_addrtuple));
|
||||
- if (addrmem == NULL)
|
||||
- {
|
||||
- result = -EAI_MEMORY;
|
||||
- goto free_and_return;
|
||||
- }
|
||||
- malloc_addrmem = true;
|
||||
+ result = -EAI_MEMORY;
|
||||
+ goto free_and_return;
|
||||
}
|
||||
|
||||
struct gaih_addrtuple *addrfree = addrmem;
|
||||
@@ -1232,8 +1214,7 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
free_and_return:
|
||||
if (malloc_name)
|
||||
free ((char *) name);
|
||||
- if (malloc_addrmem)
|
||||
- free (addrmem);
|
||||
+ free (addrmem);
|
||||
if (malloc_canonbuf)
|
||||
free (canonbuf);
|
||||
|
@ -1,39 +0,0 @@
|
||||
commit 6257fcfd58479f6b7ae0fdde045b9ff144d543da
|
||||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Fri Jun 2 16:35:13 2017 +0200
|
||||
|
||||
getaddrinfo: Fix localplt failure involving strdup
|
||||
|
||||
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
|
||||
index daa742c260e667a7..0e92221853dd73b1 100644
|
||||
--- a/sysdeps/posix/getaddrinfo.c
|
||||
+++ b/sysdeps/posix/getaddrinfo.c
|
||||
@@ -286,9 +286,16 @@ convert_hostent_to_gaih_addrtuple (const struct addrinfo *req,
|
||||
} \
|
||||
*pat = addrmem; \
|
||||
\
|
||||
- if (localcanon != NULL && canon == NULL) \
|
||||
- canon = strdupa (localcanon); \
|
||||
- \
|
||||
+ if (localcanon != NULL && canon == NULL) \
|
||||
+ { \
|
||||
+ canonbuf = __strdup (localcanon); \
|
||||
+ if (canonbuf == NULL) \
|
||||
+ { \
|
||||
+ result = -EAI_SYSTEM; \
|
||||
+ goto free_and_return; \
|
||||
+ } \
|
||||
+ canon = canonbuf; \
|
||||
+ } \
|
||||
if (_family == AF_INET6 && *pat != NULL) \
|
||||
got_ipv6 = true; \
|
||||
} \
|
||||
@@ -330,7 +337,7 @@ getcanonname (service_user *nip, struct gaih_addrtuple *at, const char *name)
|
||||
string. */
|
||||
s = (char *) name;
|
||||
}
|
||||
- return strdup (name);
|
||||
+ return __strdup (name);
|
||||
}
|
||||
|
||||
static int
|
@ -1,19 +0,0 @@
|
||||
commit 363911ce1313a246b7d33f0983a09e7ab2525b3a
|
||||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Sat Jun 3 08:37:13 2017 +0200
|
||||
|
||||
getaddrinfo: Eliminate another strdup call
|
||||
|
||||
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
|
||||
index 0e92221853dd73b1..317413c9ef1559e6 100644
|
||||
--- a/sysdeps/posix/getaddrinfo.c
|
||||
+++ b/sysdeps/posix/getaddrinfo.c
|
||||
@@ -732,7 +732,7 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
(*pat)->name = NULL;
|
||||
else if (canonbuf == NULL)
|
||||
{
|
||||
- canonbuf = strdup (air->canon);
|
||||
+ canonbuf = __strdup (air->canon);
|
||||
if (canonbuf == NULL)
|
||||
{
|
||||
result = -EAI_MEMORY;
|
@ -1,170 +0,0 @@
|
||||
commit 673cb072a4710bd4bf6029a062d2867cca929c43
|
||||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Fri Jun 2 14:54:56 2017 +0200
|
||||
|
||||
getaddrinfo: Always allocate canonical name on the heap
|
||||
|
||||
A further simplification could eliminate the canon variable in
|
||||
gaih_inet and replace it with canonbuf. However, canonbuf is
|
||||
used as a flag in the nscd code, which makes this somewhat
|
||||
non-straightforward.
|
||||
|
||||
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
|
||||
index 987a1c1e17f2d5b1..daa742c260e667a7 100644
|
||||
--- a/sysdeps/posix/getaddrinfo.c
|
||||
+++ b/sysdeps/posix/getaddrinfo.c
|
||||
@@ -308,6 +308,30 @@ typedef enum nss_status (*nss_getcanonname_r)
|
||||
int *errnop, int *h_errnop);
|
||||
extern service_user *__nss_hosts_database attribute_hidden;
|
||||
|
||||
+/* This function is called if a canonical name is requested, but if
|
||||
+ the service function did not provide it. It tries to obtain the
|
||||
+ name using getcanonname_r from the same service NIP. If the name
|
||||
+ cannot be canonicalized, return a copy of NAME. Return NULL on
|
||||
+ memory allocation failure. The returned string is allocated on the
|
||||
+ heap; the caller has to free it. */
|
||||
+static char *
|
||||
+getcanonname (service_user *nip, struct gaih_addrtuple *at, const char *name)
|
||||
+{
|
||||
+ nss_getcanonname_r cfct = __nss_lookup_function (nip, "getcanonname_r");
|
||||
+ char *s = (char *) name;
|
||||
+ if (cfct != NULL)
|
||||
+ {
|
||||
+ char buf[256];
|
||||
+ int herrno;
|
||||
+ int rc;
|
||||
+ if (DL_CALL_FCT (cfct, (at->name ?: name, buf, sizeof (buf),
|
||||
+ &s, &rc, &herrno)) != NSS_STATUS_SUCCESS)
|
||||
+ /* If the canonical name cannot be determined, use the passed
|
||||
+ string. */
|
||||
+ s = (char *) name;
|
||||
+ }
|
||||
+ return strdup (name);
|
||||
+}
|
||||
|
||||
static int
|
||||
gaih_inet (const char *name, const struct gaih_service *service,
|
||||
@@ -443,7 +467,6 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
|
||||
bool malloc_name = false;
|
||||
struct gaih_addrtuple *addrmem = NULL;
|
||||
- bool malloc_canonbuf = false;
|
||||
char *canonbuf = NULL;
|
||||
int result = 0;
|
||||
|
||||
@@ -702,22 +725,13 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
(*pat)->name = NULL;
|
||||
else if (canonbuf == NULL)
|
||||
{
|
||||
- size_t canonlen = strlen (air->canon) + 1;
|
||||
- if ((req->ai_flags & AI_CANONIDN) != 0
|
||||
- && __libc_use_alloca (alloca_used + canonlen))
|
||||
- canonbuf = alloca_account (canonlen, alloca_used);
|
||||
- else
|
||||
+ canonbuf = strdup (air->canon);
|
||||
+ if (canonbuf == NULL)
|
||||
{
|
||||
- canonbuf = malloc (canonlen);
|
||||
- if (canonbuf == NULL)
|
||||
- {
|
||||
- result = -EAI_MEMORY;
|
||||
- goto free_and_return;
|
||||
- }
|
||||
- malloc_canonbuf = true;
|
||||
+ result = -EAI_MEMORY;
|
||||
+ goto free_and_return;
|
||||
}
|
||||
- canon = (*pat)->name = memcpy (canonbuf, air->canon,
|
||||
- canonlen);
|
||||
+ canon = (*pat)->name = canonbuf;
|
||||
}
|
||||
|
||||
if (air->family[i] == AF_INET
|
||||
@@ -924,55 +938,16 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
if ((req->ai_flags & AI_CANONNAME) != 0
|
||||
&& canon == NULL)
|
||||
{
|
||||
- /* If we need the canonical name, get it
|
||||
- from the same service as the result. */
|
||||
- nss_getcanonname_r cfct;
|
||||
- int herrno;
|
||||
-
|
||||
- cfct = __nss_lookup_function (nip,
|
||||
- "getcanonname_r");
|
||||
- if (cfct != NULL)
|
||||
+ canonbuf = getcanonname (nip, at, name);
|
||||
+ if (canonbuf == NULL)
|
||||
{
|
||||
- const size_t max_fqdn_len = 256;
|
||||
- if ((req->ai_flags & AI_CANONIDN) != 0
|
||||
- && __libc_use_alloca (alloca_used
|
||||
- + max_fqdn_len))
|
||||
- canonbuf = alloca_account (max_fqdn_len,
|
||||
- alloca_used);
|
||||
- else
|
||||
- {
|
||||
- canonbuf = malloc (max_fqdn_len);
|
||||
- if (canonbuf == NULL)
|
||||
- {
|
||||
- _res.options
|
||||
- |= old_res_options
|
||||
- & DEPRECATED_RES_USE_INET6;
|
||||
- result = -EAI_MEMORY;
|
||||
- goto free_and_return;
|
||||
- }
|
||||
- malloc_canonbuf = true;
|
||||
- }
|
||||
- char *s;
|
||||
-
|
||||
- if (DL_CALL_FCT (cfct, (at->name ?: name,
|
||||
- canonbuf,
|
||||
- max_fqdn_len,
|
||||
- &s, &rc, &herrno))
|
||||
- == NSS_STATUS_SUCCESS)
|
||||
- canon = s;
|
||||
- else
|
||||
- {
|
||||
- /* If the canonical name cannot be
|
||||
- determined, use the passed in
|
||||
- string. */
|
||||
- if (malloc_canonbuf)
|
||||
- {
|
||||
- free (canonbuf);
|
||||
- malloc_canonbuf = false;
|
||||
- }
|
||||
- canon = name;
|
||||
- }
|
||||
+ _res.options
|
||||
+ |= old_res_options
|
||||
+ & DEPRECATED_RES_USE_INET6;
|
||||
+ result = -EAI_MEMORY;
|
||||
+ goto free_and_return;
|
||||
}
|
||||
+ canon = canonbuf;
|
||||
}
|
||||
status = NSS_STATUS_SUCCESS;
|
||||
}
|
||||
@@ -1118,9 +1093,10 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
#ifdef HAVE_LIBIDN
|
||||
make_copy:
|
||||
#endif
|
||||
- if (malloc_canonbuf)
|
||||
- /* We already allocated the string using malloc. */
|
||||
- malloc_canonbuf = false;
|
||||
+ if (canonbuf != NULL)
|
||||
+ /* We already allocated the string using malloc, but
|
||||
+ the buffer is now owned by canon. */
|
||||
+ canonbuf = NULL;
|
||||
else
|
||||
{
|
||||
canon = strdup (canon);
|
||||
@@ -1215,8 +1191,7 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
if (malloc_name)
|
||||
free ((char *) name);
|
||||
free (addrmem);
|
||||
- if (malloc_canonbuf)
|
||||
- free (canonbuf);
|
||||
+ free (canonbuf);
|
||||
|
||||
return result;
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
commit 5cf88a83f27b0cd2d5a83511930e40d716c939eb
|
||||
Author: Dmitry Bilunov <kmeaw@kmeaw.com>
|
||||
Date: Sat Jun 24 16:49:34 2017 +0200
|
||||
|
||||
getaddrinfo: Merge IPv6 addresses and IPv4 addresses [BZ #21295]
|
||||
|
||||
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
|
||||
index 4ec17961adb194ff..91e0a76c5cfa027f 100644
|
||||
--- a/sysdeps/posix/getaddrinfo.c
|
||||
+++ b/sysdeps/posix/getaddrinfo.c
|
||||
@@ -190,16 +190,16 @@ gaih_inet_serv (const char *servicename, const struct gaih_typeproto *tp,
|
||||
|
||||
/* Convert struct hostent to a list of struct gaih_addrtuple objects.
|
||||
h_name is not copied, and the struct hostent object must not be
|
||||
- deallocated prematurely. *RESULT must be NULL or a pointer to an
|
||||
- object allocated using malloc, which is freed. */
|
||||
+ deallocated prematurely. *RESULT must be NULL or a pointer to a
|
||||
+ linked-list. The new addresses are appended at the end. */
|
||||
static bool
|
||||
convert_hostent_to_gaih_addrtuple (const struct addrinfo *req,
|
||||
int family,
|
||||
struct hostent *h,
|
||||
struct gaih_addrtuple **result)
|
||||
{
|
||||
- free (*result);
|
||||
- *result = NULL;
|
||||
+ while (*result)
|
||||
+ result = &(*result)->next;
|
||||
|
||||
/* Count the number of addresses in h->h_addr_list. */
|
||||
size_t count = 0;
|
@ -1,27 +0,0 @@
|
||||
commit 7966331555df43bb7e2a55ce5a17a330e57f487f
|
||||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Mon Sep 4 11:25:34 2017 +0200
|
||||
|
||||
getaddrinfo: Return EAI_NODATA if gethostbyname2_r reports NO_DATA [BZ #21922]
|
||||
|
||||
(cherry picked from commit 5f8340f583fe3d4f5734bd2371c5a45ecff2db0d)
|
||||
|
||||
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
|
||||
index 9d9e7e2bf2a78cbb..0cf87c224dff5c66 100644
|
||||
--- a/sysdeps/posix/getaddrinfo.c
|
||||
+++ b/sysdeps/posix/getaddrinfo.c
|
||||
@@ -619,6 +619,14 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
}
|
||||
*pat = addrmem;
|
||||
}
|
||||
+ else
|
||||
+ {
|
||||
+ if (h_errno == NO_DATA)
|
||||
+ result = -EAI_NODATA;
|
||||
+ else
|
||||
+ result = -EAI_NONAME;
|
||||
+ goto free_and_return;
|
||||
+ }
|
||||
}
|
||||
else
|
||||
{
|
@ -5,12 +5,12 @@ Date: Sat Jun 24 16:51:31 2017 +0200
|
||||
resolv/tst-resolv-basic: Add test cases for bug 21295
|
||||
|
||||
diff --git a/resolv/tst-resolv-basic.c b/resolv/tst-resolv-basic.c
|
||||
index 92f912beed35744f..3dfa1657f50ab588 100644
|
||||
index 66a0e8a1659219b4..95aea1bcfb266017 100644
|
||||
--- a/resolv/tst-resolv-basic.c
|
||||
+++ b/resolv/tst-resolv-basic.c
|
||||
@@ -398,6 +398,22 @@ do_test (void)
|
||||
check_ai ("t.nxdomain.example", "80", AF_INET6,
|
||||
"error: Name or service not known\n");
|
||||
@@ -495,6 +495,22 @@ do_test (void)
|
||||
test_bug_21295 ();
|
||||
test_nodata_nxdomain ();
|
||||
|
||||
+ /* Test for bug 21295. */
|
||||
+ check_ai_hints ("www.example", "80",
|
||||
|
@ -1,354 +0,0 @@
|
||||
commit d53b8652880ba42913f66e7eee0567ce4cfe7791
|
||||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Thu May 11 14:48:51 2017 +0200
|
||||
|
||||
inet_pton: Reformat in GNU style
|
||||
|
||||
Generated machine code is identical on x86-64.
|
||||
|
||||
diff --git a/resolv/inet_pton.c b/resolv/inet_pton.c
|
||||
index c0a7d54c303af82b..68f0fa54020e9351 100644
|
||||
--- a/resolv/inet_pton.c
|
||||
+++ b/resolv/inet_pton.c
|
||||
@@ -25,188 +25,192 @@
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
|
||||
-/*
|
||||
- * WARNING: Don't even consider trying to compile this on a system where
|
||||
- * sizeof(int) < 4. sizeof(int) > 4 is fine; all the world's not a VAX.
|
||||
- */
|
||||
-
|
||||
-static int inet_pton4 (const char *src, u_char *dst) internal_function;
|
||||
-static int inet_pton6 (const char *src, u_char *dst) internal_function;
|
||||
+static int inet_pton4 (const char *src, unsigned char *dst);
|
||||
+static int inet_pton6 (const char *src, unsigned char *dst);
|
||||
|
||||
-/* int
|
||||
- * inet_pton(af, src, dst)
|
||||
- * convert from presentation format (which usually means ASCII printable)
|
||||
- * to network format (which is usually some kind of binary format).
|
||||
+/* Convert from presentation format (which usually means ASCII printable)
|
||||
+ * to network format (which is usually some kind of binary format).
|
||||
+ *
|
||||
* return:
|
||||
- * 1 if the address was valid for the specified address family
|
||||
- * 0 if the address wasn't valid (`dst' is untouched in this case)
|
||||
- * -1 if some other error occurred (`dst' is untouched in this case, too)
|
||||
+ * 1 if the address was valid for the specified address family
|
||||
+ * 0 if the address wasn't valid (`dst' is untouched in this case)
|
||||
+ * -1 if some other error occurred (`dst' is untouched in this case, too)
|
||||
* author:
|
||||
- * Paul Vixie, 1996.
|
||||
+ * Paul Vixie, 1996.
|
||||
*/
|
||||
int
|
||||
__inet_pton (int af, const char *src, void *dst)
|
||||
{
|
||||
- switch (af) {
|
||||
- case AF_INET:
|
||||
- return (inet_pton4(src, dst));
|
||||
- case AF_INET6:
|
||||
- return (inet_pton6(src, dst));
|
||||
- default:
|
||||
- __set_errno (EAFNOSUPPORT);
|
||||
- return (-1);
|
||||
- }
|
||||
- /* NOTREACHED */
|
||||
+ switch (af)
|
||||
+ {
|
||||
+ case AF_INET:
|
||||
+ return inet_pton4 (src, dst);
|
||||
+ case AF_INET6:
|
||||
+ return inet_pton6 (src, dst);
|
||||
+ default:
|
||||
+ __set_errno (EAFNOSUPPORT);
|
||||
+ return -1;
|
||||
+ }
|
||||
}
|
||||
libc_hidden_def (__inet_pton)
|
||||
weak_alias (__inet_pton, inet_pton)
|
||||
libc_hidden_weak (inet_pton)
|
||||
|
||||
-/* int
|
||||
- * inet_pton4(src, dst)
|
||||
- * like inet_aton() but without all the hexadecimal, octal (with the
|
||||
- * exception of 0) and shorthand.
|
||||
+/* Like inet_atonbut without all the hexadecimal, octal and shorthand.
|
||||
+ *
|
||||
* return:
|
||||
- * 1 if `src' is a valid dotted quad, else 0.
|
||||
+ * 1 if `src' is a valid dotted quad, else 0.
|
||||
* notice:
|
||||
- * does not touch `dst' unless it's returning 1.
|
||||
+ * does not touch `dst' unless it's returning 1.
|
||||
* author:
|
||||
- * Paul Vixie, 1996.
|
||||
+ * Paul Vixie, 1996.
|
||||
*/
|
||||
static int
|
||||
-internal_function
|
||||
-inet_pton4 (const char *src, u_char *dst)
|
||||
+inet_pton4 (const char *src, unsigned char *dst)
|
||||
{
|
||||
- int saw_digit, octets, ch;
|
||||
- u_char tmp[NS_INADDRSZ], *tp;
|
||||
-
|
||||
- saw_digit = 0;
|
||||
- octets = 0;
|
||||
- *(tp = tmp) = 0;
|
||||
- while ((ch = *src++) != '\0') {
|
||||
+ int saw_digit, octets, ch;
|
||||
+ unsigned char tmp[NS_INADDRSZ], *tp;
|
||||
|
||||
- if (ch >= '0' && ch <= '9') {
|
||||
- u_int new = *tp * 10 + (ch - '0');
|
||||
+ saw_digit = 0;
|
||||
+ octets = 0;
|
||||
+ *(tp = tmp) = 0;
|
||||
+ while ((ch = *src++) != '\0')
|
||||
+ {
|
||||
+ if (ch >= '0' && ch <= '9')
|
||||
+ {
|
||||
+ unsigned int new = *tp * 10 + (ch - '0');
|
||||
|
||||
- if (saw_digit && *tp == 0)
|
||||
- return (0);
|
||||
- if (new > 255)
|
||||
- return (0);
|
||||
- *tp = new;
|
||||
- if (! saw_digit) {
|
||||
- if (++octets > 4)
|
||||
- return (0);
|
||||
- saw_digit = 1;
|
||||
- }
|
||||
- } else if (ch == '.' && saw_digit) {
|
||||
- if (octets == 4)
|
||||
- return (0);
|
||||
- *++tp = 0;
|
||||
- saw_digit = 0;
|
||||
- } else
|
||||
- return (0);
|
||||
- }
|
||||
- if (octets < 4)
|
||||
- return (0);
|
||||
- memcpy(dst, tmp, NS_INADDRSZ);
|
||||
- return (1);
|
||||
+ if (saw_digit && *tp == 0)
|
||||
+ return 0;
|
||||
+ if (new > 255)
|
||||
+ return 0;
|
||||
+ *tp = new;
|
||||
+ if (! saw_digit)
|
||||
+ {
|
||||
+ if (++octets > 4)
|
||||
+ return 0;
|
||||
+ saw_digit = 1;
|
||||
+ }
|
||||
+ }
|
||||
+ else if (ch == '.' && saw_digit)
|
||||
+ {
|
||||
+ if (octets == 4)
|
||||
+ return 0;
|
||||
+ *++tp = 0;
|
||||
+ saw_digit = 0;
|
||||
+ }
|
||||
+ else
|
||||
+ return 0;
|
||||
+ }
|
||||
+ if (octets < 4)
|
||||
+ return 0;
|
||||
+ memcpy (dst, tmp, NS_INADDRSZ);
|
||||
+ return 1;
|
||||
}
|
||||
|
||||
-/* int
|
||||
- * inet_pton6(src, dst)
|
||||
- * convert presentation level address to network order binary form.
|
||||
+/* Cconvert presentation level address to network order binary form.
|
||||
+ *
|
||||
* return:
|
||||
- * 1 if `src' is a valid [RFC1884 2.2] address, else 0.
|
||||
+ * 1 if `src' is a valid [RFC1884 2.2] address, else 0.
|
||||
* notice:
|
||||
- * (1) does not touch `dst' unless it's returning 1.
|
||||
- * (2) :: in a full address is silently ignored.
|
||||
+ * (1) does not touch `dst' unless it's returning 1.
|
||||
+ * (2) :: in a full address is silently ignored.
|
||||
* credit:
|
||||
- * inspired by Mark Andrews.
|
||||
+ * inspired by Mark Andrews.
|
||||
* author:
|
||||
- * Paul Vixie, 1996.
|
||||
+ * Paul Vixie, 1996.
|
||||
*/
|
||||
static int
|
||||
-internal_function
|
||||
-inet_pton6 (const char *src, u_char *dst)
|
||||
+inet_pton6 (const char *src, unsigned char *dst)
|
||||
{
|
||||
- static const char xdigits[] = "0123456789abcdef";
|
||||
- u_char tmp[NS_IN6ADDRSZ], *tp, *endp, *colonp;
|
||||
- const char *curtok;
|
||||
- int ch, saw_xdigit;
|
||||
- u_int val;
|
||||
+ static const char xdigits[] = "0123456789abcdef";
|
||||
+ unsigned char tmp[NS_IN6ADDRSZ], *tp, *endp, *colonp;
|
||||
+ const char *curtok;
|
||||
+ int ch, saw_xdigit;
|
||||
+ unsigned int val;
|
||||
|
||||
- tp = memset(tmp, '\0', NS_IN6ADDRSZ);
|
||||
- endp = tp + NS_IN6ADDRSZ;
|
||||
- colonp = NULL;
|
||||
- /* Leading :: requires some special handling. */
|
||||
- if (*src == ':')
|
||||
- if (*++src != ':')
|
||||
- return (0);
|
||||
- curtok = src;
|
||||
- saw_xdigit = 0;
|
||||
- val = 0;
|
||||
- while ((ch = tolower (*src++)) != '\0') {
|
||||
- const char *pch;
|
||||
+ tp = memset (tmp, '\0', NS_IN6ADDRSZ);
|
||||
+ endp = tp + NS_IN6ADDRSZ;
|
||||
+ colonp = NULL;
|
||||
+ /* Leading :: requires some special handling. */
|
||||
+ if (*src == ':')
|
||||
+ if (*++src != ':')
|
||||
+ return 0;
|
||||
+ curtok = src;
|
||||
+ saw_xdigit = 0;
|
||||
+ val = 0;
|
||||
+ while ((ch = tolower (*src++)) != '\0')
|
||||
+ {
|
||||
+ const char *pch;
|
||||
|
||||
- pch = strchr(xdigits, ch);
|
||||
- if (pch != NULL) {
|
||||
- val <<= 4;
|
||||
- val |= (pch - xdigits);
|
||||
- if (val > 0xffff)
|
||||
- return (0);
|
||||
- saw_xdigit = 1;
|
||||
- continue;
|
||||
- }
|
||||
- if (ch == ':') {
|
||||
- curtok = src;
|
||||
- if (!saw_xdigit) {
|
||||
- if (colonp)
|
||||
- return (0);
|
||||
- colonp = tp;
|
||||
- continue;
|
||||
- } else if (*src == '\0') {
|
||||
- return (0);
|
||||
- }
|
||||
- if (tp + NS_INT16SZ > endp)
|
||||
- return (0);
|
||||
- *tp++ = (u_char) (val >> 8) & 0xff;
|
||||
- *tp++ = (u_char) val & 0xff;
|
||||
- saw_xdigit = 0;
|
||||
- val = 0;
|
||||
- continue;
|
||||
- }
|
||||
- if (ch == '.' && ((tp + NS_INADDRSZ) <= endp) &&
|
||||
- inet_pton4(curtok, tp) > 0) {
|
||||
- tp += NS_INADDRSZ;
|
||||
- saw_xdigit = 0;
|
||||
- break; /* '\0' was seen by inet_pton4(). */
|
||||
- }
|
||||
- return (0);
|
||||
+ pch = strchr (xdigits, ch);
|
||||
+ if (pch != NULL)
|
||||
+ {
|
||||
+ val <<= 4;
|
||||
+ val |= (pch - xdigits);
|
||||
+ if (val > 0xffff)
|
||||
+ return 0;
|
||||
+ saw_xdigit = 1;
|
||||
+ continue;
|
||||
+ }
|
||||
+ if (ch == ':')
|
||||
+ {
|
||||
+ curtok = src;
|
||||
+ if (!saw_xdigit)
|
||||
+ {
|
||||
+ if (colonp)
|
||||
+ return 0;
|
||||
+ colonp = tp;
|
||||
+ continue;
|
||||
+ }
|
||||
+ else if (*src == '\0')
|
||||
+ {
|
||||
+ return 0;
|
||||
+ }
|
||||
+ if (tp + NS_INT16SZ > endp)
|
||||
+ return 0;
|
||||
+ *tp++ = (unsigned char) (val >> 8) & 0xff;
|
||||
+ *tp++ = (unsigned char) val & 0xff;
|
||||
+ saw_xdigit = 0;
|
||||
+ val = 0;
|
||||
+ continue;
|
||||
}
|
||||
- if (saw_xdigit) {
|
||||
- if (tp + NS_INT16SZ > endp)
|
||||
- return (0);
|
||||
- *tp++ = (u_char) (val >> 8) & 0xff;
|
||||
- *tp++ = (u_char) val & 0xff;
|
||||
+ if (ch == '.' && ((tp + NS_INADDRSZ) <= endp) &&
|
||||
+ inet_pton4 (curtok, tp) > 0)
|
||||
+ {
|
||||
+ tp += NS_INADDRSZ;
|
||||
+ saw_xdigit = 0;
|
||||
+ break; /* '\0' was seen by inet_pton4. */
|
||||
}
|
||||
- if (colonp != NULL) {
|
||||
- /*
|
||||
- * Since some memmove()'s erroneously fail to handle
|
||||
- * overlapping regions, we'll do the shift by hand.
|
||||
- */
|
||||
- const int n = tp - colonp;
|
||||
- int i;
|
||||
+ return 0;
|
||||
+ }
|
||||
+ if (saw_xdigit)
|
||||
+ {
|
||||
+ if (tp + NS_INT16SZ > endp)
|
||||
+ return 0;
|
||||
+ *tp++ = (unsigned char) (val >> 8) & 0xff;
|
||||
+ *tp++ = (unsigned char) val & 0xff;
|
||||
+ }
|
||||
+ if (colonp != NULL)
|
||||
+ {
|
||||
+ /*
|
||||
+ * Since some memmove's erroneously fail to handle
|
||||
+ * overlapping regions, we'll do the shift by hand.
|
||||
+ */
|
||||
+ const int n = tp - colonp;
|
||||
+ int i;
|
||||
|
||||
- if (tp == endp)
|
||||
- return (0);
|
||||
- for (i = 1; i <= n; i++) {
|
||||
- endp[- i] = colonp[n - i];
|
||||
- colonp[n - i] = 0;
|
||||
- }
|
||||
- tp = endp;
|
||||
+ if (tp == endp)
|
||||
+ return 0;
|
||||
+ for (i = 1; i <= n; i++)
|
||||
+ {
|
||||
+ endp[- i] = colonp[n - i];
|
||||
+ colonp[n - i] = 0;
|
||||
}
|
||||
- if (tp != endp)
|
||||
- return (0);
|
||||
- memcpy(dst, tmp, NS_IN6ADDRSZ);
|
||||
- return (1);
|
||||
+ tp = endp;
|
||||
+ }
|
||||
+ if (tp != endp)
|
||||
+ return 0;
|
||||
+ memcpy (dst, tmp, NS_IN6ADDRSZ);
|
||||
+ return 1;
|
||||
}
|
@ -5,10 +5,10 @@ Date: Wed Jun 21 13:09:08 2017 +0200
|
||||
__inet_pton_length: Implement new internal helper function
|
||||
|
||||
diff --git a/resolv/Makefile b/resolv/Makefile
|
||||
index f9d8bceb9b4bc8b0..88766729087d54cf 100644
|
||||
index 3854ff4ad4156c15..692b2322cf7a3cab 100644
|
||||
--- a/resolv/Makefile
|
||||
+++ b/resolv/Makefile
|
||||
@@ -64,6 +64,9 @@ tests += \
|
||||
@@ -65,6 +65,9 @@ tests += \
|
||||
|
||||
endif
|
||||
|
||||
@ -18,838 +18,3 @@ index f9d8bceb9b4bc8b0..88766729087d54cf 100644
|
||||
# This test sends millions of packets and is rather slow.
|
||||
xtests += tst-resolv-qtypes
|
||||
endif
|
||||
diff --git a/resolv/Versions b/resolv/Versions
|
||||
index e561bce1a47ca3da..f528ed51e898a61d 100644
|
||||
--- a/resolv/Versions
|
||||
+++ b/resolv/Versions
|
||||
@@ -27,6 +27,7 @@ libc {
|
||||
__h_errno; __resp;
|
||||
|
||||
__res_maybe_init; __res_iclose;
|
||||
+ __inet_pton_length;
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/resolv/inet_pton.c b/resolv/inet_pton.c
|
||||
index 68f0fa54020e9351..b95da47c17ef8afc 100644
|
||||
--- a/resolv/inet_pton.c
|
||||
+++ b/resolv/inet_pton.c
|
||||
@@ -1,3 +1,20 @@
|
||||
+/* Copyright (C) 1996-2017 Free Software Foundation, Inc.
|
||||
+ This file is part of the GNU C Library.
|
||||
+
|
||||
+ The GNU C Library is free software; you can redistribute it and/or
|
||||
+ modify it under the terms of the GNU Lesser General Public
|
||||
+ License as published by the Free Software Foundation; either
|
||||
+ version 2.1 of the License, or (at your option) any later version.
|
||||
+
|
||||
+ The GNU C Library is distributed in the hope that it will be useful,
|
||||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ Lesser General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU Lesser General Public
|
||||
+ License along with the GNU C Library; if not, see
|
||||
+ <http://www.gnu.org/licenses/>. */
|
||||
+
|
||||
/*
|
||||
* Copyright (c) 1996,1999 by Internet Software Consortium.
|
||||
*
|
||||
@@ -15,58 +32,53 @@
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
-#include <sys/param.h>
|
||||
-#include <sys/types.h>
|
||||
-#include <sys/socket.h>
|
||||
-#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <arpa/nameser.h>
|
||||
#include <ctype.h>
|
||||
-#include <string.h>
|
||||
#include <errno.h>
|
||||
+#include <netinet/in.h>
|
||||
+#include <resolv/resolv-internal.h>
|
||||
+#include <string.h>
|
||||
+#include <sys/socket.h>
|
||||
+#include <sys/types.h>
|
||||
|
||||
-static int inet_pton4 (const char *src, unsigned char *dst);
|
||||
-static int inet_pton6 (const char *src, unsigned char *dst);
|
||||
+static int inet_pton4 (const char *src, const char *src_end, u_char *dst);
|
||||
+static int inet_pton6 (const char *src, const char *src_end, u_char *dst);
|
||||
|
||||
-/* Convert from presentation format (which usually means ASCII printable)
|
||||
- * to network format (which is usually some kind of binary format).
|
||||
- *
|
||||
- * return:
|
||||
- * 1 if the address was valid for the specified address family
|
||||
- * 0 if the address wasn't valid (`dst' is untouched in this case)
|
||||
- * -1 if some other error occurred (`dst' is untouched in this case, too)
|
||||
- * author:
|
||||
- * Paul Vixie, 1996.
|
||||
- */
|
||||
int
|
||||
-__inet_pton (int af, const char *src, void *dst)
|
||||
+__inet_pton_length (int af, const char *src, size_t srclen, void *dst)
|
||||
{
|
||||
switch (af)
|
||||
{
|
||||
case AF_INET:
|
||||
- return inet_pton4 (src, dst);
|
||||
+ return inet_pton4 (src, src + srclen, dst);
|
||||
case AF_INET6:
|
||||
- return inet_pton6 (src, dst);
|
||||
+ return inet_pton6 (src, src + srclen, dst);
|
||||
default:
|
||||
__set_errno (EAFNOSUPPORT);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
+libc_hidden_def (__inet_pton_length)
|
||||
+
|
||||
+/* Like __inet_pton_length, but use strlen (SRC) as the length of
|
||||
+ SRC. */
|
||||
+int
|
||||
+__inet_pton (int af, const char *src, void *dst)
|
||||
+{
|
||||
+ return __inet_pton_length (af, src, strlen (src), dst);
|
||||
+}
|
||||
libc_hidden_def (__inet_pton)
|
||||
weak_alias (__inet_pton, inet_pton)
|
||||
libc_hidden_weak (inet_pton)
|
||||
|
||||
-/* Like inet_atonbut without all the hexadecimal, octal and shorthand.
|
||||
- *
|
||||
- * return:
|
||||
- * 1 if `src' is a valid dotted quad, else 0.
|
||||
- * notice:
|
||||
- * does not touch `dst' unless it's returning 1.
|
||||
- * author:
|
||||
- * Paul Vixie, 1996.
|
||||
- */
|
||||
+/* Like inet_aton but without all the hexadecimal, octal and shorthand
|
||||
+ (and trailing garbage is not ignored). Return 1 if SRC is a valid
|
||||
+ dotted quad, else 0. This function does not touch DST unless it's
|
||||
+ returning 1.
|
||||
+ Author: Paul Vixie, 1996. */
|
||||
static int
|
||||
-inet_pton4 (const char *src, unsigned char *dst)
|
||||
+inet_pton4 (const char *src, const char *end, unsigned char *dst)
|
||||
{
|
||||
int saw_digit, octets, ch;
|
||||
unsigned char tmp[NS_INADDRSZ], *tp;
|
||||
@@ -74,8 +86,9 @@ inet_pton4 (const char *src, unsigned char *dst)
|
||||
saw_digit = 0;
|
||||
octets = 0;
|
||||
*(tp = tmp) = 0;
|
||||
- while ((ch = *src++) != '\0')
|
||||
+ while (src < end)
|
||||
{
|
||||
+ ch = *src++;
|
||||
if (ch >= '0' && ch <= '9')
|
||||
{
|
||||
unsigned int new = *tp * 10 + (ch - '0');
|
||||
@@ -108,22 +121,27 @@ inet_pton4 (const char *src, unsigned char *dst)
|
||||
return 1;
|
||||
}
|
||||
|
||||
-/* Cconvert presentation level address to network order binary form.
|
||||
- *
|
||||
- * return:
|
||||
- * 1 if `src' is a valid [RFC1884 2.2] address, else 0.
|
||||
- * notice:
|
||||
- * (1) does not touch `dst' unless it's returning 1.
|
||||
- * (2) :: in a full address is silently ignored.
|
||||
- * credit:
|
||||
- * inspired by Mark Andrews.
|
||||
- * author:
|
||||
- * Paul Vixie, 1996.
|
||||
- */
|
||||
+/* Return the value of CH as a hexademical digit, or -1 if it is a
|
||||
+ different type of character. */
|
||||
+static int
|
||||
+hex_digit_value (char ch)
|
||||
+{
|
||||
+ if ('0' <= ch && ch <= '9')
|
||||
+ return ch - '0';
|
||||
+ if ('a' <= ch && ch <= 'f')
|
||||
+ return ch - 'a' + 10;
|
||||
+ if ('A' <= ch && ch <= 'F')
|
||||
+ return ch - 'A' + 10;
|
||||
+ return -1;
|
||||
+}
|
||||
+
|
||||
+/* Convert presentation-level IPv6 address to network order binary
|
||||
+ form. Return 1 if SRC is a valid [RFC1884 2.2] address, else 0.
|
||||
+ This function does not touch DST unless it's returning 1.
|
||||
+ Author: Paul Vixie, 1996. Inspired by Mark Andrews. */
|
||||
static int
|
||||
-inet_pton6 (const char *src, unsigned char *dst)
|
||||
+inet_pton6 (const char *src, const char *src_endp, unsigned char *dst)
|
||||
{
|
||||
- static const char xdigits[] = "0123456789abcdef";
|
||||
unsigned char tmp[NS_IN6ADDRSZ], *tp, *endp, *colonp;
|
||||
const char *curtok;
|
||||
int ch, saw_xdigit;
|
||||
@@ -132,22 +150,28 @@ inet_pton6 (const char *src, unsigned char *dst)
|
||||
tp = memset (tmp, '\0', NS_IN6ADDRSZ);
|
||||
endp = tp + NS_IN6ADDRSZ;
|
||||
colonp = NULL;
|
||||
+
|
||||
/* Leading :: requires some special handling. */
|
||||
+ if (src == src_endp)
|
||||
+ return 0;
|
||||
if (*src == ':')
|
||||
- if (*++src != ':')
|
||||
- return 0;
|
||||
+ {
|
||||
+ ++src;
|
||||
+ if (src == src_endp || *src != ':')
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
curtok = src;
|
||||
saw_xdigit = 0;
|
||||
val = 0;
|
||||
- while ((ch = tolower (*src++)) != '\0')
|
||||
+ while (src < src_endp)
|
||||
{
|
||||
- const char *pch;
|
||||
-
|
||||
- pch = strchr (xdigits, ch);
|
||||
- if (pch != NULL)
|
||||
+ ch = *src++;
|
||||
+ int digit = hex_digit_value (ch);
|
||||
+ if (digit >= 0)
|
||||
{
|
||||
val <<= 4;
|
||||
- val |= (pch - xdigits);
|
||||
+ val |= digit;
|
||||
if (val > 0xffff)
|
||||
return 0;
|
||||
saw_xdigit = 1;
|
||||
@@ -163,10 +187,8 @@ inet_pton6 (const char *src, unsigned char *dst)
|
||||
colonp = tp;
|
||||
continue;
|
||||
}
|
||||
- else if (*src == '\0')
|
||||
- {
|
||||
- return 0;
|
||||
- }
|
||||
+ else if (src == src_endp)
|
||||
+ return 0;
|
||||
if (tp + NS_INT16SZ > endp)
|
||||
return 0;
|
||||
*tp++ = (unsigned char) (val >> 8) & 0xff;
|
||||
@@ -175,8 +197,8 @@ inet_pton6 (const char *src, unsigned char *dst)
|
||||
val = 0;
|
||||
continue;
|
||||
}
|
||||
- if (ch == '.' && ((tp + NS_INADDRSZ) <= endp) &&
|
||||
- inet_pton4 (curtok, tp) > 0)
|
||||
+ if (ch == '.' && ((tp + NS_INADDRSZ) <= endp)
|
||||
+ && inet_pton4 (curtok, src_endp, tp) > 0)
|
||||
{
|
||||
tp += NS_INADDRSZ;
|
||||
saw_xdigit = 0;
|
||||
@@ -193,20 +215,13 @@ inet_pton6 (const char *src, unsigned char *dst)
|
||||
}
|
||||
if (colonp != NULL)
|
||||
{
|
||||
- /*
|
||||
- * Since some memmove's erroneously fail to handle
|
||||
- * overlapping regions, we'll do the shift by hand.
|
||||
- */
|
||||
- const int n = tp - colonp;
|
||||
- int i;
|
||||
-
|
||||
+ /* Replace :: with zeros. */
|
||||
if (tp == endp)
|
||||
- return 0;
|
||||
- for (i = 1; i <= n; i++)
|
||||
- {
|
||||
- endp[- i] = colonp[n - i];
|
||||
- colonp[n - i] = 0;
|
||||
- }
|
||||
+ /* :: would expand to a zero-width field. */
|
||||
+ return 0;
|
||||
+ size_t n = tp - colonp;
|
||||
+ memmove (endp - n, colonp, n);
|
||||
+ memset (colonp, 0, endp - n - colonp);
|
||||
tp = endp;
|
||||
}
|
||||
if (tp != endp)
|
||||
diff --git a/resolv/resolv-internal.h b/resolv/resolv-internal.h
|
||||
index 0d69ce10d33afcc5..9afaa07d8b03d31f 100644
|
||||
--- a/resolv/resolv-internal.h
|
||||
+++ b/resolv/resolv-internal.h
|
||||
@@ -56,4 +56,13 @@ enum
|
||||
int __res_nopt (res_state, int n0, unsigned char *buf, int buflen,
|
||||
int anslen) attribute_hidden;
|
||||
|
||||
+/* Convert from presentation format (which usually means ASCII
|
||||
+ printable) to network format (which is usually some kind of binary
|
||||
+ format). The input is in the range [SRC, SRC + SRCLEN). The
|
||||
+ output is written to DST (which has to be 4 or 16 bytes long,
|
||||
+ depending on AF). Return 0 for invalid input, 1 for success, -1
|
||||
+ for an invalid address family. */
|
||||
+int __inet_pton_length (int af, const char *src, size_t srclen, void *);
|
||||
+libc_hidden_proto (__inet_pton_length)
|
||||
+
|
||||
#endif /* _RESOLV_INTERNAL_H */
|
||||
diff --git a/resolv/tst-inet_pton.c b/resolv/tst-inet_pton.c
|
||||
new file mode 100644
|
||||
index 0000000000000000..7fffb24cdf9eb1f4
|
||||
--- /dev/null
|
||||
+++ b/resolv/tst-inet_pton.c
|
||||
@@ -0,0 +1,549 @@
|
||||
+/* Test inet_pton functions.
|
||||
+ Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
+ This file is part of the GNU C Library.
|
||||
+
|
||||
+ The GNU C Library is free software; you can redistribute it and/or
|
||||
+ modify it under the terms of the GNU Lesser General Public
|
||||
+ License as published by the Free Software Foundation; either
|
||||
+ version 2.1 of the License, or (at your option) any later version.
|
||||
+
|
||||
+ The GNU C Library is distributed in the hope that it will be useful,
|
||||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ Lesser General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU Lesser General Public
|
||||
+ License along with the GNU C Library; if not, see
|
||||
+ <http://www.gnu.org/licenses/>. */
|
||||
+
|
||||
+#include <arpa/inet.h>
|
||||
+#include <resolv/resolv-internal.h>
|
||||
+#include <stdbool.h>
|
||||
+#include <stdio.h>
|
||||
+#include <string.h>
|
||||
+#include <support/check.h>
|
||||
+#include <support/xunistd.h>
|
||||
+#include <sys/mman.h>
|
||||
+#include <sys/param.h>
|
||||
+#include <unistd.h>
|
||||
+
|
||||
+/* Memory region created by next_to_fault_allocate. */
|
||||
+struct next_to_fault
|
||||
+{
|
||||
+ /* The user data. */
|
||||
+ char *buffer;
|
||||
+ size_t length;
|
||||
+
|
||||
+ /* The entire allocated region. */
|
||||
+ void *region_start;
|
||||
+ size_t region_size;
|
||||
+};
|
||||
+
|
||||
+/* Allocate a buffer of SIZE bytes just before a page which is mapped
|
||||
+ with PROT_NONE (so that overrunning the buffer will cause a
|
||||
+ fault). */
|
||||
+static struct next_to_fault
|
||||
+next_to_fault_allocate (size_t size)
|
||||
+{
|
||||
+ long page_size = sysconf (_SC_PAGE_SIZE);
|
||||
+ TEST_VERIFY_EXIT (page_size > 0);
|
||||
+ struct next_to_fault result;
|
||||
+ result.region_size = roundup (size, page_size) + page_size;
|
||||
+ TEST_VERIFY_EXIT (size + page_size > size);
|
||||
+ TEST_VERIFY_EXIT (result.region_size > size);
|
||||
+ result.region_start
|
||||
+ = xmmap (NULL, result.region_size, PROT_READ | PROT_WRITE,
|
||||
+ MAP_PRIVATE | MAP_ANONYMOUS, -1);
|
||||
+ /* Unmap the page after the allocation. */
|
||||
+ xmprotect (result.region_start + (result.region_size - page_size),
|
||||
+ page_size, PROT_NONE);
|
||||
+ /* Align the allocation within the region so that it ends just
|
||||
+ before the PROT_NONE page. */
|
||||
+ result.buffer = result.region_start + result.region_size - page_size - size;
|
||||
+ result.length = size;
|
||||
+ return result;
|
||||
+}
|
||||
+
|
||||
+/* Deallocate the memory region allocated by
|
||||
+ next_to_fault_allocate. */
|
||||
+static void
|
||||
+next_to_fault_free (struct next_to_fault *ntf)
|
||||
+{
|
||||
+ xmunmap (ntf->region_start, ntf->region_size);
|
||||
+ *ntf = (struct next_to_fault) { NULL, };
|
||||
+}
|
||||
+
|
||||
+struct test_case
|
||||
+{
|
||||
+ /* The input data. */
|
||||
+ const char *input;
|
||||
+
|
||||
+ /* True if AF_INET parses successfully. */
|
||||
+ bool ipv4_ok;
|
||||
+
|
||||
+ /* True if AF_INET6 parses successfully. */
|
||||
+ bool ipv6_ok;
|
||||
+
|
||||
+ /* Expected result for AF_INET. */
|
||||
+ unsigned char ipv4_expected[4];
|
||||
+
|
||||
+ /* Expected result for AF_INET6. */
|
||||
+ unsigned char ipv6_expected[16];
|
||||
+};
|
||||
+
|
||||
+static void
|
||||
+check_result (const char *what, const struct test_case *t, int family,
|
||||
+ void *result_buffer, int inet_ret)
|
||||
+{
|
||||
+ TEST_VERIFY_EXIT (inet_ret >= -1);
|
||||
+ TEST_VERIFY_EXIT (inet_ret <= 1);
|
||||
+
|
||||
+ int ok;
|
||||
+ const unsigned char *expected;
|
||||
+ size_t result_size;
|
||||
+ switch (family)
|
||||
+ {
|
||||
+ case AF_INET:
|
||||
+ ok = t->ipv4_ok;
|
||||
+ expected = t->ipv4_expected;
|
||||
+ result_size = 4;
|
||||
+ break;
|
||||
+ case AF_INET6:
|
||||
+ ok = t->ipv6_ok;
|
||||
+ expected = t->ipv6_expected;
|
||||
+ result_size = 16;
|
||||
+ break;
|
||||
+ default:
|
||||
+ FAIL_EXIT1 ("invalid address family %d", family);
|
||||
+ }
|
||||
+
|
||||
+ if (inet_ret != ok)
|
||||
+ {
|
||||
+ support_record_failure ();
|
||||
+ printf ("error: %s return value mismatch for [[%s]], family %d\n"
|
||||
+ " expected: %d\n"
|
||||
+ " actual: %d\n",
|
||||
+ what, t->input, family, ok, inet_ret);
|
||||
+ return;
|
||||
+ }
|
||||
+ if (memcmp (result_buffer, expected, result_size) != 0)
|
||||
+ {
|
||||
+ support_record_failure ();
|
||||
+ printf ("error: %s result mismatch for [[%s]], family %d\n",
|
||||
+ what, t->input, family);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+run_one_test (const struct test_case *t)
|
||||
+{
|
||||
+ size_t test_len = strlen (t->input);
|
||||
+
|
||||
+ struct next_to_fault ntf_out4 = next_to_fault_allocate (4);
|
||||
+ struct next_to_fault ntf_out6 = next_to_fault_allocate (16);
|
||||
+
|
||||
+ /* inet_pton requires NUL termination. */
|
||||
+ {
|
||||
+ struct next_to_fault ntf_in = next_to_fault_allocate (test_len + 1);
|
||||
+ memcpy (ntf_in.buffer, t->input, test_len + 1);
|
||||
+ memset (ntf_out4.buffer, 0, 4);
|
||||
+ check_result ("inet_pton", t, AF_INET, ntf_out4.buffer,
|
||||
+ inet_pton (AF_INET, ntf_in.buffer, ntf_out4.buffer));
|
||||
+ memset (ntf_out6.buffer, 0, 16);
|
||||
+ check_result ("inet_pton", t, AF_INET6, ntf_out6.buffer,
|
||||
+ inet_pton (AF_INET6, ntf_in.buffer, ntf_out6.buffer));
|
||||
+ next_to_fault_free (&ntf_in);
|
||||
+ }
|
||||
+
|
||||
+ /* __inet_pton_length does not require NUL termination. */
|
||||
+ {
|
||||
+ struct next_to_fault ntf_in = next_to_fault_allocate (test_len);
|
||||
+ memcpy (ntf_in.buffer, t->input, test_len);
|
||||
+ memset (ntf_out4.buffer, 0, 4);
|
||||
+ check_result ("__inet_pton_length", t, AF_INET, ntf_out4.buffer,
|
||||
+ __inet_pton_length (AF_INET, ntf_in.buffer, ntf_in.length,
|
||||
+ ntf_out4.buffer));
|
||||
+ memset (ntf_out6.buffer, 0, 16);
|
||||
+ check_result ("__inet_pton_length", t, AF_INET6, ntf_out6.buffer,
|
||||
+ __inet_pton_length (AF_INET6, ntf_in.buffer, ntf_in.length,
|
||||
+ ntf_out6.buffer));
|
||||
+ next_to_fault_free (&ntf_in);
|
||||
+ }
|
||||
+
|
||||
+ next_to_fault_free (&ntf_out4);
|
||||
+ next_to_fault_free (&ntf_out6);
|
||||
+}
|
||||
+
|
||||
+/* The test cases were manually crafted and the set enhanced with
|
||||
+ American Fuzzy Lop. */
|
||||
+const struct test_case test_cases[] =
|
||||
+ {
|
||||
+ {.input = ".:", },
|
||||
+ {.input = "0.0.0.0",
|
||||
+ .ipv4_ok = true,
|
||||
+ .ipv4_expected = {0, 0, 0, 0},
|
||||
+ },
|
||||
+ {.input = "0.:", },
|
||||
+ {.input = "00", },
|
||||
+ {.input = "0000000", },
|
||||
+ {.input = "00000000000000000", },
|
||||
+ {.input = "092.", },
|
||||
+ {.input = "10.0.301.2", },
|
||||
+ {.input = "127.0.0.1",
|
||||
+ .ipv4_ok = true,
|
||||
+ .ipv4_expected = {127, 0, 0, 1},
|
||||
+ },
|
||||
+ {.input = "19..", },
|
||||
+ {.input = "192.0.2.-1", },
|
||||
+ {.input = "192.0.2.01", },
|
||||
+ {.input = "192.0.2.1.", },
|
||||
+ {.input = "192.0.2.1192.", },
|
||||
+ {.input = "192.0.2.192.\377..", },
|
||||
+ {.input = "192.0.2.256", },
|
||||
+ {.input = "192.0.2.27",
|
||||
+ .ipv4_ok = true,
|
||||
+ .ipv4_expected = {192, 0, 2, 27},
|
||||
+ },
|
||||
+ {.input = "192.0.201.", },
|
||||
+ {.input = "192.0.261.", },
|
||||
+ {.input = "192.0.2\256", },
|
||||
+ {.input = "192.0.\262.", },
|
||||
+ {.input = "192.062.", },
|
||||
+ {.input = "192.092.\256", },
|
||||
+ {.input = "192.0\2562.", },
|
||||
+ {.input = "192.192.0.2661\031", },
|
||||
+ {.input = "192.192.00n2.1.", },
|
||||
+ {.input = "192.192.2.190.", },
|
||||
+ {.input = "192.255.255.2555", },
|
||||
+ {.input = "192.92.219\023.", },
|
||||
+ {.input = "192.\260.2.", },
|
||||
+ {.input = "1:1::1:1",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x0, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x1
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "2", },
|
||||
+ {.input = "2.", },
|
||||
+ {.input = "2001:db8:00001::f",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x20, 0x1, 0xd, 0xb8, 0x0, 0x1, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "2001:db8:10000::f", },
|
||||
+ {.input = "2001:db8:1234:5678:abcd:ef01:2345:67",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x20, 0x1, 0xd, 0xb8, 0x12, 0x34, 0x56, 0x78,
|
||||
+ 0xab, 0xcd, 0xef, 0x1, 0x23, 0x45, 0x0, 0x67
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "2001:db8:1234:5678:abcd:ef01:2345:6789:1", },
|
||||
+ {.input = "2001:db8:1234:5678:abcd:ef01:2345::6789", },
|
||||
+ {.input = "2001:db8::0",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "2001:db8::00",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "2001:db8::1",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "2001:db8::10",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "2001:db8::19",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "2001:db8::1::\012", },
|
||||
+ {.input = "2001:db8::1::2\012", },
|
||||
+ {.input = "2001:db8::2",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "2001:db8::3",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "2001:db8::4",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "2001:db8::5",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "2001:db8::6",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "2001:db8::7",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "2001:db8::8",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "2001:db8::9",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "2001:db8::A",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "2001:db8::B",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "2001:db8::C",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "2001:db8::D",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "2001:db8::E",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "2001:db8::F",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "2001:db8::a",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "2001:db8::b",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "2001:db8::c",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "2001:db8::d",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "2001:db8::e",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "2001:db8::f",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "2001:db8::ff",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x20, 0x1, 0xd, 0xb8, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "2001:db8::ffff:2\012", },
|
||||
+ {.input = "22", },
|
||||
+ {.input = "2222@", },
|
||||
+ {.input = "255.255.255.255",
|
||||
+ .ipv4_ok = true,
|
||||
+ .ipv4_expected = {255, 255, 255, 255},
|
||||
+ },
|
||||
+ {.input = "255.255.255.255\001", },
|
||||
+ {.input = "255.255.255.25555", },
|
||||
+ {.input = "2:", },
|
||||
+ {.input = "2:a:8:EEEE::EEEE:F:EEE8:EEEE\034*:", },
|
||||
+ {.input = "2:ff:1:1:7:ff:1:1:7.", },
|
||||
+ {.input = "2f:0000000000000000000000000000000000000000000000000000000000"
|
||||
+ "0000000000000000000000000000000000000000000000000000000000000000000000"
|
||||
+ "0G01",
|
||||
+ },
|
||||
+ {.input = "429495", },
|
||||
+ {.input = "5::5::", },
|
||||
+ {.input = "6.6.", },
|
||||
+ {.input = "992.", },
|
||||
+ {.input = "::",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "::00001",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "::1",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "::10000", },
|
||||
+ {.input = "::1:1",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x1
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "::ff:1:1:7.0.0.1",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff,
|
||||
+ 0x0, 0x1, 0x0, 0x1, 0x7, 0x0, 0x0, 0x1
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "::ff:1:1:7:ff:1:1:7.", },
|
||||
+ {.input = "::ff:1:1:7ff:1:8:7.0.0.1", },
|
||||
+ {.input = "::ff:1:1:7ff:1:8f:1:1:71", },
|
||||
+ {.input = "::ffff:02fff:127.0.S1", },
|
||||
+ {.input = "::ffff:127.0.0.1",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x1
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "::ffff:1:7.0.0.1",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0xff, 0xff, 0x0, 0x1, 0x7, 0x0, 0x0, 0x1
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = ":\272", },
|
||||
+ {.input = "A:f:ff:1:1:D:ff:1:1::7.", },
|
||||
+ {.input = "AAAAA.", },
|
||||
+ {.input = "D:::", },
|
||||
+ {.input = "DF8F", },
|
||||
+ {.input = "F::",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x0, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "F:A:8:EEEE:8:EEEE\034*:", },
|
||||
+ {.input = "F:a:8:EEEE:8:EEEE\034*:", },
|
||||
+ {.input = "F:ff:100:7ff:1:8:7.0.10.1",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0x0, 0xf, 0x0, 0xff, 0x1, 0x0, 0x7, 0xff,
|
||||
+ 0x0, 0x1, 0x0, 0x8, 0x7, 0x0, 0xa, 0x1
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "d92.", },
|
||||
+ {.input = "ff:00000000000000000000000000000000000000000000000000000000000"
|
||||
+ "00000000000000000000000000000000000000000000000000000000000000000001",
|
||||
+ },
|
||||
+ {.input = "fff2:2::ff2:2:f7",
|
||||
+ .ipv6_ok = true,
|
||||
+ .ipv6_expected = {
|
||||
+ 0xff, 0xf2, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0,
|
||||
+ 0x0, 0x0, 0xf, 0xf2, 0x0, 0x2, 0x0, 0xf7
|
||||
+ },
|
||||
+ },
|
||||
+ {.input = "ffff:ff:ff:fff:ff:ff:ff:", },
|
||||
+ {.input = "\272:", },
|
||||
+ {NULL}
|
||||
+ };
|
||||
+
|
||||
+static int
|
||||
+do_test (void)
|
||||
+{
|
||||
+ for (size_t i = 0; test_cases[i].input != NULL; ++i)
|
||||
+ run_one_test (test_cases + i);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+#include <support/test-driver.c>
|
||||
|
@ -1,891 +0,0 @@
|
||||
commit 07d6f1a3ca990e0e4f93b010605d4d87a3abdf24
|
||||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Tue Apr 4 14:09:56 2017 +0200
|
||||
|
||||
resolv: Add test coverage for ns_name_unpack, ns_name_ntop
|
||||
|
||||
diff --git a/resolv/Makefile b/resolv/Makefile
|
||||
index 01086d569f58170a..8441f9d30d83a209 100644
|
||||
--- a/resolv/Makefile
|
||||
+++ b/resolv/Makefile
|
||||
@@ -43,6 +43,7 @@ routines += gai_sigqueue
|
||||
tests += \
|
||||
tst-bug18665 \
|
||||
tst-bug18665-tcp \
|
||||
+ tst-ns_name \
|
||||
tst-res_hconf_reorder \
|
||||
tst-res_use_inet6 \
|
||||
tst-resolv-basic \
|
||||
@@ -130,5 +131,9 @@ $(objpfx)tst-resolv-network: $(objpfx)libresolv.so $(shared-thread-library)
|
||||
$(objpfx)tst-resolv-qtypes: $(objpfx)libresolv.so $(shared-thread-library)
|
||||
$(objpfx)tst-resolv-search: $(objpfx)libresolv.so $(shared-thread-library)
|
||||
|
||||
+$(objpfx)tst-ns_name: $(objpfx)libresolv.so
|
||||
+$(objpfx)tst-ns_name.out: tst-ns_name.data
|
||||
+
|
||||
+
|
||||
# This test case uses the deprecated RES_USE_INET6 resolver option.
|
||||
CFLAGS-tst-res_use_inet6.c += -Wno-error
|
||||
diff --git a/resolv/tst-ns_name.c b/resolv/tst-ns_name.c
|
||||
new file mode 100644
|
||||
index 0000000000000000..66d9a6666b2ebde2
|
||||
--- /dev/null
|
||||
+++ b/resolv/tst-ns_name.c
|
||||
@@ -0,0 +1,303 @@
|
||||
+/* Test ns_name-related functions.
|
||||
+ Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
+ This file is part of the GNU C Library.
|
||||
+
|
||||
+ The GNU C Library is free software; you can redistribute it and/or
|
||||
+ modify it under the terms of the GNU Lesser General Public
|
||||
+ License as published by the Free Software Foundation; either
|
||||
+ version 2.1 of the License, or (at your option) any later version.
|
||||
+
|
||||
+ The GNU C Library is distributed in the hope that it will be useful,
|
||||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ Lesser General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU Lesser General Public
|
||||
+ License along with the GNU C Library; if not, see
|
||||
+ <http://www.gnu.org/licenses/>. */
|
||||
+
|
||||
+/* This test program processes the tst-ns_name.data file. */
|
||||
+
|
||||
+#include <ctype.h>
|
||||
+#include <resolv.h>
|
||||
+#include <stdbool.h>
|
||||
+#include <stdio.h>
|
||||
+#include <stdlib.h>
|
||||
+#include <string.h>
|
||||
+#include <support/check.h>
|
||||
+#include <support/support.h>
|
||||
+#include <support/xstdio.h>
|
||||
+
|
||||
+/* A byte buffer and its length. */
|
||||
+struct buffer
|
||||
+{
|
||||
+ unsigned char *data;
|
||||
+ size_t length;
|
||||
+};
|
||||
+
|
||||
+/* Convert a base64-encoded string to its binary representation. */
|
||||
+static bool
|
||||
+base64_to_buffer (const char *base64, struct buffer *result)
|
||||
+{
|
||||
+ /* "-" denotes an empty input. */
|
||||
+ if (strcmp (base64, "-") == 0)
|
||||
+ {
|
||||
+ result->data = xmalloc (1);
|
||||
+ result->length = 0;
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ size_t size = strlen (base64);
|
||||
+ unsigned char *data = xmalloc (size);
|
||||
+ int ret = b64_pton (base64, data, size);
|
||||
+ if (ret < 0 || ret > size)
|
||||
+ return false;
|
||||
+ result->data = xrealloc (data, ret);
|
||||
+ result->length = ret;
|
||||
+ return true;
|
||||
+}
|
||||
+
|
||||
+/* A test case for ns_name_unpack and ns_name_ntop. */
|
||||
+struct test_case
|
||||
+{
|
||||
+ char *path;
|
||||
+ size_t lineno;
|
||||
+ struct buffer input;
|
||||
+ size_t input_offset;
|
||||
+ int unpack_result;
|
||||
+ struct buffer unpack_output;
|
||||
+ int ntop_result;
|
||||
+ char *ntop_text;
|
||||
+};
|
||||
+
|
||||
+/* Deallocate the buffers associated with the test case. */
|
||||
+static void
|
||||
+free_test_case (struct test_case *t)
|
||||
+{
|
||||
+ free (t->path);
|
||||
+ free (t->input.data);
|
||||
+ free (t->unpack_output.data);
|
||||
+ free (t->ntop_text);
|
||||
+}
|
||||
+
|
||||
+/* Extract the test case information from a test file line. */
|
||||
+static bool
|
||||
+parse_test_case (const char *path, size_t lineno, const char *line,
|
||||
+ struct test_case *result)
|
||||
+{
|
||||
+ memset (result, 0, sizeof (*result));
|
||||
+ result->path = xstrdup (path);
|
||||
+ result->lineno = lineno;
|
||||
+ result->ntop_result = -1;
|
||||
+ char *input = NULL;
|
||||
+ char *unpack_output = NULL;
|
||||
+ int ret = sscanf (line, "%ms %zu %d %ms %d %ms",
|
||||
+ &input, &result->input_offset,
|
||||
+ &result->unpack_result, &unpack_output,
|
||||
+ &result->ntop_result, &result->ntop_text);
|
||||
+ if (ret < 3)
|
||||
+ {
|
||||
+ printf ("%s:%zu: error: missing input fields\n", path, lineno);
|
||||
+ free (input);
|
||||
+ return false;
|
||||
+ }
|
||||
+ if (!base64_to_buffer (input, &result->input))
|
||||
+ {
|
||||
+ printf ("%s:%zu: error: malformed base64 input data\n", path, lineno);
|
||||
+ free (input);
|
||||
+ free (unpack_output);
|
||||
+ free (result->ntop_text);
|
||||
+ return false;
|
||||
+ }
|
||||
+ free (input);
|
||||
+
|
||||
+ if (unpack_output == NULL)
|
||||
+ result->unpack_output = (struct buffer) { NULL, 0 };
|
||||
+ else if (!base64_to_buffer (unpack_output, &result->unpack_output))
|
||||
+ {
|
||||
+ printf ("%s:%zu: error: malformed base64 unpack data\n", path, lineno);
|
||||
+ free (result->input.data);
|
||||
+ free (unpack_output);
|
||||
+ free (result->ntop_text);
|
||||
+ return false;
|
||||
+ }
|
||||
+ free (unpack_output);
|
||||
+
|
||||
+ /* At this point, all allocated buffers have been transferred to
|
||||
+ *result. */
|
||||
+
|
||||
+ if (result->input_offset > result->input.length)
|
||||
+ {
|
||||
+ printf ("%s:%zu: error: input offset %zu exceeds buffer size %zu\n",
|
||||
+ path, lineno, result->input_offset, result->input.length);
|
||||
+ free_test_case (result);
|
||||
+ return false;
|
||||
+ }
|
||||
+ if (result->unpack_result < -1)
|
||||
+ {
|
||||
+ printf ("%s:%zu: error: invalid unpack result %d\n",
|
||||
+ path, lineno, result->unpack_result);
|
||||
+ free_test_case (result);
|
||||
+ return false;
|
||||
+ }
|
||||
+ if (result->ntop_result < -1)
|
||||
+ {
|
||||
+ printf ("%s:%zu: error: invalid ntop result %d\n",
|
||||
+ path, lineno, result->ntop_result);
|
||||
+ free_test_case (result);
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ bool fields_consistent;
|
||||
+ switch (ret)
|
||||
+ {
|
||||
+ case 3:
|
||||
+ fields_consistent = result->unpack_result == -1;
|
||||
+ break;
|
||||
+ case 5:
|
||||
+ fields_consistent = result->unpack_result != -1
|
||||
+ && result->ntop_result == -1;
|
||||
+ break;
|
||||
+ case 6:
|
||||
+ fields_consistent = result->unpack_result != -1
|
||||
+ && result->ntop_result != -1;
|
||||
+ break;
|
||||
+ default:
|
||||
+ fields_consistent = false;
|
||||
+ }
|
||||
+ if (!fields_consistent)
|
||||
+ {
|
||||
+ printf ("%s:%zu: error: wrong number of fields: %d\n",
|
||||
+ path, lineno, ret);
|
||||
+ free_test_case (result);
|
||||
+ return false;
|
||||
+ }
|
||||
+ return true;
|
||||
+}
|
||||
+
|
||||
+/* Format the buffer as a hexadecimal string and write it to standard
|
||||
+ output. */
|
||||
+static void
|
||||
+print_hex (const char *label, struct buffer buffer)
|
||||
+{
|
||||
+ printf (" %s ", label);
|
||||
+ unsigned char *p = buffer.data;
|
||||
+ unsigned char *end = p + buffer.length;
|
||||
+ while (p < end)
|
||||
+ {
|
||||
+ printf ("%02X", *p & 0xFF);
|
||||
+ ++p;
|
||||
+ }
|
||||
+ putchar ('\n');
|
||||
+}
|
||||
+
|
||||
+/* Run the test case specified in *T. */
|
||||
+static void
|
||||
+run_test_case (struct test_case *t)
|
||||
+{
|
||||
+ unsigned char *unpacked = xmalloc (NS_MAXCDNAME);
|
||||
+ int consumed = ns_name_unpack
|
||||
+ (t->input.data, t->input.data + t->input.length,
|
||||
+ t->input.data + t->input_offset,
|
||||
+ unpacked, NS_MAXCDNAME);
|
||||
+ if (consumed != t->unpack_result)
|
||||
+ {
|
||||
+ support_record_failure ();
|
||||
+ printf ("%s:%zu: error: wrong result from ns_name_unpack\n"
|
||||
+ " expected: %d\n"
|
||||
+ " actual: %d\n",
|
||||
+ t->path, t->lineno, t->unpack_result, consumed);
|
||||
+ return;
|
||||
+ }
|
||||
+ if (consumed != -1)
|
||||
+ {
|
||||
+ if (memcmp (unpacked, t->unpack_output.data, consumed) != 0)
|
||||
+ {
|
||||
+ support_record_failure ();
|
||||
+ printf ("%s:%zu: error: wrong data from ns_name_unpack\n",
|
||||
+ t->path, t->lineno);
|
||||
+ print_hex ("expected:", t->unpack_output);
|
||||
+ print_hex ("actual: ", (struct buffer) { unpacked, consumed });
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ char *text = xmalloc (NS_MAXDNAME);
|
||||
+ int ret = ns_name_ntop (unpacked, text, NS_MAXDNAME);
|
||||
+ if (ret != t->ntop_result)
|
||||
+ {
|
||||
+ support_record_failure ();
|
||||
+ printf ("%s:%zu: error: wrong result from ns_name_top\n"
|
||||
+ " expected: %d\n"
|
||||
+ " actual: %d\n",
|
||||
+ t->path, t->lineno, t->ntop_result, ret);
|
||||
+ return;
|
||||
+ }
|
||||
+ if (ret != -1)
|
||||
+ {
|
||||
+ if (strcmp (text, t->ntop_text) != 0)
|
||||
+ {
|
||||
+ support_record_failure ();
|
||||
+ printf ("%s:%zu: error: wrong data from ns_name_ntop\n",
|
||||
+ t->path, t->lineno);
|
||||
+ printf (" expected: \"%s\"\n", t->ntop_text);
|
||||
+ printf (" actual: \"%s\"\n", text);
|
||||
+ return;
|
||||
+ }
|
||||
+ }
|
||||
+ free (text);
|
||||
+ }
|
||||
+ free (unpacked);
|
||||
+}
|
||||
+
|
||||
+/* Open the file at PATH, parse the test cases contained in it, and
|
||||
+ run them. */
|
||||
+static void
|
||||
+run_test_file (const char *path)
|
||||
+{
|
||||
+ FILE *fp = xfopen (path, "re");
|
||||
+ char *line = NULL;
|
||||
+ size_t line_allocated = 0;
|
||||
+ size_t lineno = 0;
|
||||
+
|
||||
+ while (true)
|
||||
+ {
|
||||
+ ssize_t ret = getline (&line, &line_allocated, fp);
|
||||
+ if (ret < 0)
|
||||
+ {
|
||||
+ if (ferror (fp))
|
||||
+ {
|
||||
+ printf ("%s: error reading file: %m\n", path);
|
||||
+ exit (1);
|
||||
+ }
|
||||
+ TEST_VERIFY (feof (fp));
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ ++lineno;
|
||||
+ char *p = line;
|
||||
+ while (isspace (*p))
|
||||
+ ++p;
|
||||
+ if (*p == '\0' || *p == '#')
|
||||
+ continue;
|
||||
+
|
||||
+ struct test_case test_case;
|
||||
+ if (!parse_test_case (path, lineno, line, &test_case))
|
||||
+ {
|
||||
+ support_record_failure ();
|
||||
+ continue;
|
||||
+ }
|
||||
+ run_test_case (&test_case);
|
||||
+ free_test_case (&test_case);
|
||||
+ }
|
||||
+ free (line);
|
||||
+ xfclose (fp);
|
||||
+}
|
||||
+
|
||||
+static int
|
||||
+do_test (void)
|
||||
+{
|
||||
+ run_test_file ("tst-ns_name.data");
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+#include <support/test-driver.c>
|
||||
diff --git a/resolv/tst-ns_name.data b/resolv/tst-ns_name.data
|
||||
new file mode 100644
|
||||
index 0000000000000000..0ff0dc3de7a722ae
|
||||
--- /dev/null
|
||||
+++ b/resolv/tst-ns_name.data
|
||||
@@ -0,0 +1,548 @@
|
||||
+# Test input for ns_name_unpack and ns_name_ntop.
|
||||
+# Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
+# This file is part of the GNU C Library.
|
||||
+#
|
||||
+# The GNU C Library is free software; you can redistribute it and/or
|
||||
+# modify it under the terms of the GNU Lesser General Public
|
||||
+# License as published by the Free Software Foundation; either
|
||||
+# version 2.1 of the License, or (at your option) any later version.
|
||||
+#
|
||||
+# The GNU C Library is distributed in the hope that it will be useful,
|
||||
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+# Lesser General Public License for more details.
|
||||
+#
|
||||
+# You should have received a copy of the GNU Lesser General Public
|
||||
+# License along with the GNU C Library; if not, see
|
||||
+# <http://www.gnu.org/licenses/>.
|
||||
+
|
||||
+# This file contains test input and expected output for the
|
||||
+# ns_name_unpack and ns_name_ntop functions. Empty lines and comments
|
||||
+# (lines starting with #) are ignored. Test data lines have the
|
||||
+# following format:
|
||||
+#
|
||||
+# INPUT INPUT-OFFSET UNPACK-RESULT UNPACK-OUTPUT NTOP-RESULT NTOP-OUTPUT
|
||||
+#
|
||||
+# INPUT, UNPACK-OUTPUT are base64-encoded binary blobs. INPUT-OFFSET,
|
||||
+# UNPACK-RESULT, NTOP-RESULT are signed integers. NTOP-OUTPUT is an
|
||||
+# ASCII string (without spaces). If UNPACK-RESULT or NTOP-RESULT are
|
||||
+# -1, the fields after that are missing (-1 is an error code, so the
|
||||
+# output buffer is undefined).
|
||||
+
|
||||
+# First some manually-crafted test cases.
|
||||
+
|
||||
+# bytes-1
|
||||
+AQABAQECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBEwEUARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAS0BLgEvATABMQEyATMBNAE1ATYBNwE4ATkBOgE7ATwBPQE+AT8BQAFBAUIBQwFEAUUBRgFHAUgBSQFKAUsBTAFNAU4BTwFQAVEBUgFTAVQBVQFWAVcBWAFZAVoBWwFcAV0BXgFfAWABYQFiAWMBZAFlAWYBZwFoAWkBagFrAWwBbQFuAW8BcAFxAXIBcwF0AXUBdgF3AXgBeQF6AXsBfAF9AX4BfwGAAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3AHdAd4B3wHgAeEB4gHjAeQB5QHmAecB6AHpAeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB+gH7AfwB/QH+Af8A 0 -1
|
||||
+# bytes-1a
|
||||
+AQABAQECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBEwEUARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAS0BLgEvATABMQEyATMBNAE1ATYBNwE4ATkBOgE7ATwBPQE+AT8A 0 129 AQABAQECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBEwEUARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAS0BLgEvATABMQEyATMBNAE1ATYBNwE4ATkBOgE7ATwBPQE+AT8A 233 \000.\001.\002.\003.\004.\005.\006.\007.\008.\009.\010.\011.\012.\013.\014.\015.\016.\017.\018.\019.\020.\021.\022.\023.\024.\025.\026.\027.\028.\029.\030.\031.\032.!.\".#.\$.%.&.'.\(.\).*.+.,.-.\../.0.1.2.3.4.5.6.7.8.9.:.\;.<.=.>.?
|
||||
+# bytes-1b
|
||||
+AUABQQFCAUMBRAFFAUYBRwFIAUkBSgFLAUwBTQFOAU8BUAFRAVIBUwFUAVUBVgFXAVgBWQFaAVsBXAFdAV4BXwFgAWEBYgFjAWQBZQFmAWcBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdAF1AXYBdwF4AXkBegF7AXwBfQF+AX8A 0 129 AUABQQFCAUMBRAFFAUYBRwFIAUkBSgFLAUwBTQFOAU8BUAFRAVIBUwFUAVUBVgFXAVgBWQFaAVsBXAFdAV4BXwFgAWEBYgFjAWQBZQFmAWcBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdAF1AXYBdwF4AXkBegF7AXwBfQF+AX8A 133 \@.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.[.\\.].^._.`.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.{.|.}.~.\127
|
||||
+# bytes-1c
|
||||
+AYABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8A 0 129 AYABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8A 320 \128.\129.\130.\131.\132.\133.\134.\135.\136.\137.\138.\139.\140.\141.\142.\143.\144.\145.\146.\147.\148.\149.\150.\151.\152.\153.\154.\155.\156.\157.\158.\159.\160.\161.\162.\163.\164.\165.\166.\167.\168.\169.\170.\171.\172.\173.\174.\175.\176.\177.\178.\179.\180.\181.\182.\183.\184.\185.\186.\187.\188.\189.\190.\191
|
||||
+# bytes-1d
|
||||
+AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3AHdAd4B3wHgAeEB4gHjAeQB5QHmAecB6AHpAeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB+gH7AfwB/QH+Af8A 0 129 AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3AHdAd4B3wHgAeEB4gHjAeQB5QHmAecB6AHpAeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB+gH7AfwB/QH+Af8A 320 \192.\193.\194.\195.\196.\197.\198.\199.\200.\201.\202.\203.\204.\205.\206.\207.\208.\209.\210.\211.\212.\213.\214.\215.\216.\217.\218.\219.\220.\221.\222.\223.\224.\225.\226.\227.\228.\229.\230.\231.\232.\233.\234.\235.\236.\237.\238.\239.\240.\241.\242.\243.\244.\245.\246.\247.\248.\249.\250.\251.\252.\253.\254.\255
|
||||
+# bytes-4
|
||||
+BAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8EQEFCQwRERUZHBEhJSksETE1OTwRQUVJTBFRVVlcEWFlaWwRcXV5fBGBhYmMEZGVmZwRoaWprBGxtbm8EcHFycwR0dXZ3BHh5ensEfH1+fwSAgYKDBISFhocEiImKiwSMjY6PBJCRkpMElJWWlwSYmZqbBJydnp8EoKGiowSkpaanBKipqqsErK2urwSwsbKzBLS1trcEuLm6uwS8vb6/BMDBwsMExMXGxwTIycrLBMzNzs8E0NHS0wTU1dbXBNjZ2tsE3N3e3wTg4eLjBOTl5ucE6Onq6wTs7e7vBPDx8vME9PX29wT4+fr7BPz9/v8A 0 -1
|
||||
+# bytes-4a
|
||||
+BAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 0 81 BAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 185 \000\001\002\003.\004\005\006\007.\008\009\010\011.\012\013\014\015.\016\017\018\019.\020\021\022\023.\024\025\026\027.\028\029\030\031.\032!\"#.\$%&'.\(\)*+.,-\./.0123.4567.89:\;.<=>?
|
||||
+# bytes-4b
|
||||
+BEBBQkMEREVGRwRISUpLBExNTk8EUFFSUwRUVVZXBFhZWlsEXF1eXwRgYWJjBGRlZmcEaGlqawRsbW5vBHBxcnMEdHV2dwR4eXp7BHx9fn8A 0 81 BEBBQkMEREVGRwRISUpLBExNTk8EUFFSUwRUVVZXBFhZWlsEXF1eXwRgYWJjBGRlZmcEaGlqawRsbW5vBHBxcnMEdHV2dwR4eXp7BHx9fn8A 85 \@ABC.DEFG.HIJK.LMNO.PQRS.TUVW.XYZ[.\\]^_.`abc.defg.hijk.lmno.pqrs.tuvw.xyz{.|}~\127
|
||||
+# bytes-4c
|
||||
+BICBgoMEhIWGhwSIiYqLBIyNjo8EkJGSkwSUlZaXBJiZmpsEnJ2enwSgoaKjBKSlpqcEqKmqqwSsra6vBLCxsrMEtLW2twS4ubq7BLy9vr8A 0 81 BICBgoMEhIWGhwSIiYqLBIyNjo8EkJGSkwSUlZaXBJiZmpsEnJ2enwSgoaKjBKSlpqcEqKmqqwSsra6vBLCxsrMEtLW2twS4ubq7BLy9vr8A 272 \128\129\130\131.\132\133\134\135.\136\137\138\139.\140\141\142\143.\144\145\146\147.\148\149\150\151.\152\153\154\155.\156\157\158\159.\160\161\162\163.\164\165\166\167.\168\169\170\171.\172\173\174\175.\176\177\178\179.\180\181\182\183.\184\185\186\187.\188\189\190\191
|
||||
+# bytes-4d
|
||||
+BMDBwsMExMXGxwTIycrLBMzNzs8E0NHS0wTU1dbXBNjZ2tsE3N3e3wTg4eLjBOTl5ucE6Onq6wTs7e7vBPDx8vME9PX29wT4+fr7BPz9/v8A 0 81 BMDBwsMExMXGxwTIycrLBMzNzs8E0NHS0wTU1dbXBNjZ2tsE3N3e3wTg4eLjBOTl5ucE6Onq6wTs7e7vBPDx8vME9PX29wT4+fr7BPz9/v8A 272 \192\193\194\195.\196\197\198\199.\200\201\202\203.\204\205\206\207.\208\209\210\211.\212\213\214\215.\216\217\218\219.\220\221\222\223.\224\225\226\227.\228\229\230\231.\232\233\234\235.\236\237\238\239.\240\241\242\243.\244\245\246\247.\248\249\250\251.\252\253\254\255
|
||||
+# bytes-63
|
||||
+PwABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj8/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH0/fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8P72+v8DBwsPExcbHyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3+Pn6+wT8/f7/AA== 0 -1
|
||||
+# bytes-63a
|
||||
+PwABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9PgE/AA== 0 67 PwABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9PgE/AA== 171 \000\001\002\003\004\005\006\007\008\009\010\011\012\013\014\015\016\017\018\019\020\021\022\023\024\025\026\027\028\029\030\031\032!\"#\$%&'\(\)*+,-\./0123456789:\;<=>.?
|
||||
+# bytes-63b
|
||||
+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fgF/AA== 0 67 P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fgF/AA== 71 \@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~.\127
|
||||
+# bytes-63c
|
||||
+P4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vgG/AA== 0 67 P4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vgG/AA== 258 \128\129\130\131\132\133\134\135\136\137\138\139\140\141\142\143\144\145\146\147\148\149\150\151\152\153\154\155\156\157\158\159\160\161\162\163\164\165\166\167\168\169\170\171\172\173\174\175\176\177\178\179\180\181\182\183\184\185\186\187\188\189\190.\191
|
||||
+# bytes-63d
|
||||
+P8DBwsPExcbHyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3+Pn6+/z9/gH/AA== 0 67 P8DBwsPExcbHyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3+Pn6+/z9/gH/AA== 258 \192\193\194\195\196\197\198\199\200\201\202\203\204\205\206\207\208\209\210\211\212\213\214\215\216\217\218\219\220\221\222\223\224\225\226\227\228\229\230\231\232\233\234\235\236\237\238\239\240\241\242\243\244\245\246\247\248\249\250\251\252\253\254.\255
|
||||
+# compression-loop
|
||||
+wAA= 0 -1
|
||||
+# compression-loop-2
|
||||
+wALAAA== 0 -1
|
||||
+# empty
|
||||
+- 0 -1
|
||||
+# root
|
||||
+AA== 0 1 AA== 2 .
|
||||
+# truncated-compression
|
||||
+wA== 0 -1
|
||||
+# www
|
||||
+A3d3dwA= 0 5 A3d3dwA= 4 www
|
||||
+# www-truncated
|
||||
+A3d3dw== 0 -1
|
||||
+# www-truncated-2
|
||||
+A3d3 0 -1
|
||||
+# www.example.com
|
||||
+5jrGq8kVxMt3ZS3RA3d3dwdleGFtcGxlA2NvbQA= 12 17 A3d3dwdleGFtcGxlA2NvbQA= 16 www.example.com
|
||||
+# www.example.com-answer
|
||||
+5jrGq8kVxMt3ZS3RA3d3dwdleGFtcGxlA2NvbQAAAQABwAw= 33 2 A3d3dwdleGFtcGxlA2NvbQA= 16 www.example.com
|
||||
+# www.example.com-answer-truncated
|
||||
+5jrGq8kVxMt3ZS3RA3d3dwdleGFtcGxlA2NvbQAAAQABwA== 33 -1
|
||||
+# www.example.com-truncated
|
||||
+5jrGq8kVxMt3ZS3RA3d3dwdleGFtcGw= 12 -1
|
||||
+# www1.example.com-answer
|
||||
+5jrGq8kVxMt3ZS3RA3d3dwdleGFtcGxlA2NvbQAAAQABBHd3dzHAEA== 33 7 BHd3dzEHZXhhbXBsZQNjb20A 17 www1.example.com
|
||||
+
|
||||
+# Then test cases derived from the above by American Fuzzy Lop (AFL).
|
||||
+BAABAgMEBAUGBwQICQoLAAwN 0 16 BAABAgMEBAUGBwQICQoLAA== 51 \000\001\002\003.\004\005\006\007.\008\009\010\011
|
||||
+PwABAgMEBQYHCAmztLUAABYXGBmInAoLDA0ODyQRNDU2NwE5Ojs8PT4/PwkKCwwNDg8kSwoLDA0ODyQpKSkpKSkpPT4/VTAxMjM0NDY3AYeLjCspCSkpKSkpKSkpKSkpZCcoKSorLC0uPD0+Pz9AQUJDREVGLzAxMjM0NDY3AYoEAKytrq8= 0 -1
|
||||
+BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2Ngk2NjY2NIBYNgAQATY2NjY0/zY2NjYAAADeAzY2NjY2NjY2NjY2NjYAAAABABtn6gABbEtLS0tpS0sBNr52dnZ2H0YUADY2NgAANjYkNjY0/382NjY2NjYVNjZPNjY2NjYkNjb//4AAdnZ2dnZ2dv8LAED/NjY2NjQ2ADwBAAEAgAAAATY2ClA2NtDO0NDQ0NDQ0DPQ0OLQ0NAAAAD7EBQUNjYAAdDQkAAAFBQUFDY2gAEAAAFYKzY2NjY2dnZ2dnZ2QEBAAAAAAQAb 0 255 BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2Ngk2NjY2NIBYNgAQATY2NjY0/zY2NjYAAADeAzY2NjY2NjY2NjY2NjYAAAABABtn6gABbEtLS0tpS0sBNr52dnZ2H0YUADY2NgAANjYkNjY0/382NjY2NjYVNjZPNjY2NjYkNjb//4AAdnZ2dnZ2dv8LAED/NjY2NjQ2ADwBAAEAgAAAATY2ClA2NtDO0NDQ0NDQ0DPQ0OLQ0NAAAAD7EBQUNjYAAdDQkAAAFBQUFDY2gAEAAAFYKzY2NjY2dnZ2dnZ2QEBAAAAA 618 \232\000\000\192.666\194\194\194\194\194\194\194\194\194\194\159\194\194\194\194\194\19466\$\0216466666.6\000\000\000\001\000\027g\0216\000\00466666\00966664\128X6\000\016\00166664\2556666\000\000\000\222\0036666666666.66\000\000\000\001\000\027g\234\000\001lKKKKiKK\0016\190vvvv\031F\020\000666\000\00066\$664\255\127666666\02166O.6666\$66\255\255\128\000vvvvvvv\255\011\000\@\255666646\000<\001\000\001\000\128\000\000\00166\010P66\208\206\208\208\208\208\208\208\208.\208\208\226\208\208\208\000\000\000\251\016\020\02066\000\001\208\208\144\000\000\020\020\020\02066\128\001\000\000\001X+66666vvvvvv\@\@\@\000\000
|
||||
+BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2Ngk2NjY2NIBYNgAQATY2NjY0/zY2NjYAAADeAzY2NjY2NjY2NjY2NjYAAAABABtn6gABbEtLS0tpS0sBNr52dnZ2H0YUADY2NgAANjYkNjY0/382NjY2NjYVNjZPNjY2NjYkNjb//4AAdnZ2dnZ2dv8LAED/NjY2NjQ2AA8BAAEAgAAAATY2ClA2NtDO0NDQ0NDQ0DPQ0OLQ0NAAAAD7EBQUNjYAAdDQkAAAFBQUFDY2gAEAAAFYKzY2NjY2dnZ2dnZ2QEBAAAAAAQAb 0 255 BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2Ngk2NjY2NIBYNgAQATY2NjY0/zY2NjYAAADeAzY2NjY2NjY2NjY2NjYAAAABABtn6gABbEtLS0tpS0sBNr52dnZ2H0YUADY2NgAANjYkNjY0/382NjY2NjYVNjZPNjY2NjYkNjb//4AAdnZ2dnZ2dv8LAED/NjY2NjQ2AA8BAAEAgAAAATY2ClA2NtDO0NDQ0NDQ0DPQ0OLQ0NAAAAD7EBQUNjYAAdDQkAAAFBQUFDY2gAEAAAFYKzY2NjY2dnZ2dnZ2QEBAAAAA 621 \232\000\000\192.666\194\194\194\194\194\194\194\194\194\194\159\194\194\194\194\194\19466\$\0216466666.6\000\000\000\001\000\027g\0216\000\00466666\00966664\128X6\000\016\00166664\2556666\000\000\000\222\0036666666666.66\000\000\000\001\000\027g\234\000\001lKKKKiKK\0016\190vvvv\031F\020\000666\000\00066\$664\255\127666666\02166O.6666\$66\255\255\128\000vvvvvvv\255\011\000\@\255666646\000\015\001\000\001\000\128\000\000\00166\010P66\208\206\208\208\208\208\208\208\208.\208\208\226\208\208\208\000\000\000\251\016\020\02066\000\001\208\208\144\000\000\020\020\020\02066\128\001\000\000\001X+66666vvvvvv\@\@\@\000\000
|
||||
+BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2Ngk2NjY2NIBYNgAQATY2NjY0/zY2NjYAAADeAzY2NjY2NjY2NjbJNjYAAAABABtn6gABbEtLS0tpS0sBNr52dnZ2H0YUADY2NgAANjYkNjY0/382NjY2NjYVNjZPNjY2NjYkNjb//4AAdnZ2dnZ2dv8LAED/NjY2NjQ2AAABAAEAgAAAATY2ClA2NtDO0NDQ0NDQ0DPQ0OLQ0NAAAAD7EBQUNjYAAdDQkAAAFBQUFDY2gAEAAAFYKzY2NjY2dnZ2dnZ2QEBAAAAAAQAb 0 -1
|
||||
+BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2Ngk2NjY2NIBYNgAQATY2NjY0/zY2NjYAAADeAzY2NjY2NjY2NjY2NskAAAABABtn6gABbEtLS0tpS0sBNr52dnZ2H0YUADY2NgAANjYkNjY0/382NjY2NjYVNjZPNjY2NjYkNjb//4AAdnZ2dnZ2dv8LAED/NjY2NjQ2AAABAAEAgAAAATY2ClA2NtDO0NDQ0NDQ0DPQ0OLQ0NAAAAD7EBQUNjYAAdDQkAAAFBQUFDY2gAEAAAFYKzY2NjY2dnZ2dnZ2QEBAAAAAAQAb 0 255 BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2Ngk2NjY2NIBYNgAQATY2NjY0/zY2NjYAAADeAzY2NjY2NjY2NjY2NskAAAABABtn6gABbEtLS0tpS0sBNr52dnZ2H0YUADY2NgAANjYkNjY0/382NjY2NjYVNjZPNjY2NjYkNjb//4AAdnZ2dnZ2dv8LAED/NjY2NjQ2AAABAAEAgAAAATY2ClA2NtDO0NDQ0NDQ0DPQ0OLQ0NAAAAD7EBQUNjYAAdDQkAAAFBQUFDY2gAEAAAFYKzY2NjY2dnZ2dnZ2QEBAAAAA 624 \232\000\000\192.666\194\194\194\194\194\194\194\194\194\194\159\194\194\194\194\194\19466\$\0216466666.6\000\000\000\001\000\027g\0216\000\00466666\00966664\128X6\000\016\00166664\2556666\000\000\000\222\0036666666666.6\201\000\000\000\001\000\027g\234\000\001lKKKKiKK\0016\190vvvv\031F\020\000666\000\00066\$664\255\127666666\02166O.6666\$66\255\255\128\000vvvvvvv\255\011\000\@\255666646\000\000\001\000\001\000\128\000\000\00166\010P66\208\206\208\208\208\208\208\208\208.\208\208\226\208\208\208\000\000\000\251\016\020\02066\000\001\208\208\144\000\000\020\020\020\02066\128\001\000\000\001X+66666vvvvvv\@\@\@\000\000
|
||||
+BAABAgMEBAUGBwQICQoLBBINDg8QAAAAEwQUFRYXBBgZGhsEHB0eNjY2AAA2NjY2Njw2ATYYNkUAAAIQ//9/TExMTExMTExMTExMTExMTExMTExMTENMTBMTExNqEykTlhMTEyYLAAEUFAAABjY2NjYAAAE2NhwAAAABAAABBDb/fwAAAzY2NgX//wU2NgD7SDYkNjk5OTk5OTk5OTk5OTk5OTk5OTk5PTY0pDY2NjY2NiQAAAE2Nn82cXZ2dnZ2dnZ20Coq0DPQ0P/QM9DQ//9//9AAAAHSu9DRkNAABgAA/xQUAAAGfzYkNjY0Nks2AAQeVTb/AAABNn////8= 0 -1
|
||||
+BAABAgMEBAUGBwQICQoLBBINDg8EAAAQAAQUFRYXBBgZGhsEHB0eNjY2AAA2NjY2Njw2ATYYNkUAAAIQ//9/TExMTExMTExMTExMTExMTExMTExMTENMTBMTExNqEykTlhMTEyYLAAEUFAAABjY2NjYAAAE2NhwAAAABAAABBDb/fwAAAzY2NgX//wU2NgD7SDYkNjk5OTk5OTk5OTk5OTk5OTk5OTk5PTY0pDY2NjY2NiQAAAE2Nn82cXZ2dnZ2dnZ20Coq0DPQ0P/QM9DQ//9//9AAAAHSu9DRkNAABgAA/xQUAAAGfzYkNjY0Nks2AAQeVTb/AAABNn////8= 0 -1
|
||||
+AgIhIiMEJCUkAScBKAEpASoBKwEsAS0BLgExATgBOQE6IDsBASoBKwEsAS0BLgE3ATgBOQE6IDsBPAE9AT4BPw0BDgEPARABEQESARMBFAEBDgEPARABEQESARMBFCEhISEhISEhISEhISEhIX4hISEhISEhISEhARcFGAEZARoBGwEcAR0BASYBJwEoASkBKjwBPQE+AT8NAQ4BDwEQAREBEgETARQBFwUYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBAAACQCsBLAEtAS4BJwEoAUgBKgErASwBLQEuATsBPAE9AT4BPwA= 0 242 AgIhIiMEJCUkAScBKAEpASoBKwEsAS0BLgExATgBOQE6IDsBASoBKwEsAS0BLgE3ATgBOQE6IDsBPAE9AT4BPw0BDgEPARABEQESARMBFAEBDgEPARABEQESARMBFCEhISEhISEhISEhISEhIX4hISEhISEhISEhARcFGAEZARoBGwEcAR0BASYBJwEoASkBKjwBPQE+AT8NAQ4BDwEQAREBEgETARQBFwUYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBAAACQCsBLAEtAS4BJwEoAUgBKgErASwBLQEuATsBPAE9AT4BPwA= 607 \002!.#\004\$%\$\001'\001\(\001\)\001*\001+\001,\001-\001\.\0011\0018\0019\001:\032\;\001\001*.+.,.-.\..7.8.9.:.\;\001<\001=\001>\001?\013\001\014\001\015\001\016\001\017\001\018\001\019\001\020\001\001\014\001\015\001\016\001.\001\018\001\019\001\020!!!!!!!!!!!.!!!~!!!!!!!!!!\001\023\005\024\001\025\001\026\001\027\001\028\001\029\001\001&\001'.\(.\).*.\001=\001>\001?\013\001\014\001\015\001\016\001\017\001\018\001\019\001\020\001\023\005\024\001\025\001\026\001\027\001\028\001\029\001\030\001\031\001\032\001!\001\"\001#\001\$\001%\001&\001'\001\(\001\000\000.\@+.,.-.\..'.\(.H.*.+.,.-.\..\;.<.=.>.?
|
||||
+wMAAAcDAwMDAQAA2NgAAGsAfNjY8NjYkFTY0NjYyNjY2NjYAEDY2S0tLS0sBFr4fRhQ2NjY2AAA2Nlg2djw2NjY2NgAAAQABNjY2PDY2JBU2BLM2ojY2iTY2Bf//BUU2OTY+NiU9PT0BNjY2AAAAAUYUwB82Nn7s7OzsEBQUDDY2NgAAATY2NjZYNjYyNk02NlEAEQEANjYABf//BUU2OTY2NiU9PT09NgAAAfI//3Y2AAABNjY0NgAAAYA2PRAA+/v7+/v7+/v///8= 16 -1
|
||||
+AwAAJ8AAISEhISEhISEhISEhISEhfiEhISEhISEhISG7u5CjAA== 0 -1
|
||||
+AhIAAlBINQAAATU1FTo/SEhIAwMDAwMFRTY5NgA2JT09PQEfNjY8NjYkFTY0NjYyNjY2NjYADDY2QksAAAEBFr4fRhQ2NjY2AAA2Nlg2djw2NjY2NgD//gABNjY2PDY2JBUAfg== 68 -1
|
||||
+AQQBAQECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBEwEUARUBFgEXARgBGQEaARsBHAFdAR4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4ASEhISEhISEhISEhISEhIX4hISEhISEhISEhuQG6AbsBvAG9Ab4BvwHAAdwBwgHDAcQBxQHGAQ0BDgEPARABEQESARMBFAEVARYBFwEYARkBGiEhuQG6AbsBvAG9Ab4BvwHAAdwBwgHDAcQBxQHGAQ3xDQEPARABEQESARMBFAEVARYBFwEYARkBGgEbARwBXQEeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBuAEhISEBqgGrAawBrQGuAa8BsAGxASEhISEhISEhISEhISEhISEhISEhIX4hISEhISEhISEhEhISEhISEhISAAABEhISEhISEhICAgICAgICAgICAgICIssBzAHNAc4BzwHQAdEB0gHTAdQB1QHWASPHAcgByf9/AAABzAHNAc4BzwHQAdEB0gHTg9QB1QHWARISEhISEhISEhISEhISEhIREhISEhISEhISEgAAAH8SAAABEhISEhISEhICAgICAgICAgICAgICIssBzAHNAc4BzwHQAdEB0gHTAdQB1QHWASMELyTrJwQIKSsrACw= 0 -1
|
||||
+AQA= 0 -1
|
||||
+AQABAQECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBEwEUARUBFgEXARgBGQEaARsBHAEdAR4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0V3gHfAeAB4QHiAc8B0AHRAdIB0wHUAdUB1gHjAeQB5QHmAecB6AHpAeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB+gH7AfwB/QD+ 0 -1
|
||||
+AQABAQECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBEwEUARUBFgEXARgBGQEaARsBHAEdAR4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9Af4B/wA= 0 -1
|
||||
+BOgDAwgINjY2NjY2NjY2NjY2NjY2NjY2NgAAASY2NjY2NjZAAAAANjY2NjY2NgAAAAE2NjY2NjY2NjY2Ng82NjY2NjY2NjYhNis2RhQ2Nv9///82NjY2NjY2NjY2Nlc2QDY2NjYAAAE2NiM2NjY2NoE2NjY2Np5CPAAhNhM2NjY2NjY2Np42PAAYNhM2NjY2NjY2NgA2NjY2NjY2NjY2NvA2tzY2NjY2NjY2NjY2NjY2NjY2NjY2Njk2NjYxNjY2NjY2Nv9/NjY2NhY2NjY2NgAAATY2NjY2NjaeNjwAGDY2NjY2NjY2FDYAgAAANgAAATY2NjY2NjY2NjYBNgAAATY2 0 255 BOgDAwgINjY2NjY2NjY2NjY2NjY2NjY2NgAAASY2NjY2NjZAAAAANjY2NjY2NgAAAAE2NjY2NjY2NjY2Ng82NjY2NjY2NjYhNis2RhQ2Nv9///82NjY2NjY2NjY2Nlc2QDY2NjYAAAE2NiM2NjY2NoE2NjY2Np5CPAAhNhM2NjY2NjY2Np42PAAYNhM2NjY2NjY2NgA2NjY2NjY2NjY2NvA2tzY2NjY2NjY2NjY2NjY2NjY2NjY2Njk2NjYxNjY2NjY2Nv9/NjY2NhY2NjY2NgAAATY2NjY2NjaeNjwAGDY2NjY2NjY2FDYAgAAANgAAATY2NjY2NjY2NjYBNgAA 412 \232\003\003\008.66666666.6666666666\000\000\001&666666\@\000\000\0006666666\000\000\000\00166666666666\0156666666.6!6+6F\02066\255\127\255\25566666666666W6\@6666\000\000\00166#66666\12966666\158B<\000!6.66666666\1586<\000\0246\0196666.666\00066666666666\2406\183666666666666666666666966616666666\255\1276.66\02266666\000\000\0016666666\1586<\000\02466666666\0206\000\128\000\0006\000\000\0016666666666\0016\000
|
||||
+AhIAAlBIAABISEhIUz4AAAE1FTU1LTU1LTW2NTU1NQAAATU1FTo/SEhISEhISEhISEhISEhISEhISEhISAABAABISCZIUw== 68 -1
|
||||
+AQABAQECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBEwEUARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAS0BLgE3ATgBOQE6ATsBPAE9AT4BPwA= 0 113 AQABAQECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBEwEUARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAS0BLgE3ATgBOQE6ATsBPAE9AT4BPwA= 217 \000.\001.\002.\003.\004.\005.\006.\007.\008.\009.\010.\011.\012.\013.\014.\015.\016.\017.\018.\019.\020.\021.\022.\023.\024.\025.\026.\027.\028.\029.\030.\031.\032.!.\".#.\$.%.&.'.\(.\).*.+.,.-.\..7.8.9.:.\;.<.=.>.?
|
||||
+BOgAAAEDAwgINjY2NgAAAMAfNoAANjYkFTY2NhU2AAQ2NjY2NjY2NjY2NDZYBAX//wU2NjY0NgAAAQAAAYA2NhY2Njbn0NDQ0NDQ0NA2NjY2NjY2NjY2NgAAAAEENjY2NjY2NjY2NjY2NgAAAAEAG0tsS0tLS0tLSwE2vh9GFDY2NjYAADY2JDY2NDY2NjY2NjY2NjY2NjY2NjY2JDY2f3Z2dnZ2dnZ2dnZ2dnZ2dkE2ATYeBAX//wU2NjY0NgAACQAAAYA2NhY2NjbQ0NDQ0NDQ0NAz0NDQ0NDQ0NDQ0NCQ0AAUFAAAARQUNjY2NjY2Nlg2NjY2TSE2UQARAQAAATY2 0 255 BOgAAAEDAwgINjY2NgAAAMAfNoAANjYkFTY2NhU2AAQ2NjY2NjY2NjY2NDZYBAX//wU2NjY0NgAAAQAAAYA2NhY2Njbn0NDQ0NDQ0NA2NjY2NjY2NjY2NgAAAAEENjY2NjY2NjY2NjY2NgAAAAEAG0tsS0tLS0tLSwE2vh9GFDY2NjYAADY2JDY2NDY2NjY2NjY2NjY2NjY2NjY2JDY2f3Z2dnZ2dnZ2dnZ2dnZ2dkE2ATYeBAX//wU2NjY0NgAACQAAAYA2NhY2NjbQ0NDQ0NDQ0NAz0NDQ0NDQ0NDQ0NCQ0AAUFAAAARQUNjY2NjY2Nlg2NjY2TSE2UQARAQAA 572 \232\000\000\001.\003\008\008.666\000\000\000\192\0316\128\00066\$\021666\0216\000\004666666666646X\004\005\255\255\00566646\000\000\001\000\000\001\12866.666\231\208\208\208\208\208\208\208\2086666666666.\000\000\000\001\0046666666666666\000\000\000\001\000\027KlKKKKKKK\0016\190\031F\0206666\000\00066\$664666.6666666666666\$66\127vvvvvvvvvvvvvvvA6\0016\030\004\005\255\255\00566646\000\000\009\000\000\001\128.6\022666\208\208\208\208\208\208\208\208\2083\208\208\208\208\208\208\208\208\208\208\208\144\208\000\020\020\000\000\001\020\0206666666X6666M!6Q\000\017.\000
|
||||
+AQABAwEJAQoYARkBGmwbARwHGgEeAc0BAAAB0AAAA+gB0w== 0 -1
|
||||
+AUABQwFEAUUBRgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXwFgAWEBYgFjAWQBZQFmAWcBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdAF1AXYBdwF4AXkBegF7AXwBfQF+AX8A 0 105 AUABQwFEAUUBRgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXwFgAWEBYgFjAWQBZQFmAWcBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdAF1AXYBdwF4AXkBegF7AXwBfQF+AX8A 109 \@.C.D.E.F.O.P.Q.R.S.T.U.V.W.X.Y.Z.[.\\._.`.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.{.|.}.~.\127
|
||||
+BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2Ngk2NjY2NIBYNgAQATY2NjY0/zY2NjYAAADeAzY2NjY2NjY2NjY2NjYAAAABABtn6gABbEtLS0tpS0sBNr52dnZ2H0YUADY2NgAANjYkNjY0/382NjY2NjYVNjZPNjY2NjYkNjb//4AAdnZ2dnZ2dv8LAED/NjY2NjQ2AAABAAEAgAAAATY2ClA2NtDO0NDQ0NDQ0DPQ0OLQ0NAAAAD7EBQUNjYAAdDQkAAAFBQUFDY2gAEAfzZYKzY2NjY2dnZ2dnZ2dnb/CwAAAQAb 0 255 BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2Ngk2NjY2NIBYNgAQATY2NjY0/zY2NjYAAADeAzY2NjY2NjY2NjY2NjYAAAABABtn6gABbEtLS0tpS0sBNr52dnZ2H0YUADY2NgAANjYkNjY0/382NjY2NjYVNjZPNjY2NjYkNjb//4AAdnZ2dnZ2dv8LAED/NjY2NjQ2AAABAAEAgAAAATY2ClA2NtDO0NDQ0NDQ0DPQ0OLQ0NAAAAD7EBQUNjYAAdDQkAAAFBQUFDY2gAEAfzZYKzY2NjY2dnZ2dnZ2dnb/CwAA 618 \232\000\000\192.666\194\194\194\194\194\194\194\194\194\194\159\194\194\194\194\194\19466\$\0216466666.6\000\000\000\001\000\027g\0216\000\00466666\00966664\128X6\000\016\00166664\2556666\000\000\000\222\0036666666666.66\000\000\000\001\000\027g\234\000\001lKKKKiKK\0016\190vvvv\031F\020\000666\000\00066\$664\255\127666666\02166O.6666\$66\255\255\128\000vvvvvvv\255\011\000\@\255666646\000\000\001\000\001\000\128\000\000\00166\010P66\208\206\208\208\208\208\208\208\208.\208\208\226\208\208\208\000\000\000\251\016\020\02066\000\001\208\208\144\000\000\020\020\020\02066\128\001\000\1276X+66666vvvvvvvv\255\011\000
|
||||
+AYABnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+ 0 -1
|
||||
+BOgAAAEDAwgINjY2NgAAAMAfNjZkAAAAAAEAFPY2HjY2NDYMAAEABAEAAAE2NgAAATb7IPvz+/sAAAFCRDYkDzI0NjY2NjY2NjYAEDY2Nlg2NjY2NjY2NgAAAQABNjY2RTY2FTYABDk2NgAAATY2NjY2Nhw0NlgAIDY2/zY+NjY2NjYAADYAAPs2DAEAAAH0wB82NjY2 0 146 BOgAAAEDAwgINjY2NgAAAMAfNjZkAAAAAAEAFPY2HjY2NDYMAAEABAEAAAE2NgAAATb7IPvz+/sAAAFCRDYkDzI0NjY2NjY2NjYAEDY2Nlg2NjY2NjY2NgAAAQABNjY2RTY2FTYABDk2NgAAATY2NjY2Nhw0NlgAIDY2/zY+NjY2NjYAADYAAPs2DAEAAAH0NjY0NgwAAQAEAQAAATY2AAABNvsg+/P7+wAAAUJENiQPMjQ2NjY2NjY2NgAQNjY2WDY2NjY2NjY2AAABAAE2NjZFNjYVNgAEOTY2AAABNjY2NjY2HDQ2WAAgNjb/Nj42NjY2NgAANgAA+zYMAQAA 607 \232\000\000\001.\003\008\008.666\000\000\000\192\03166d\000\000\000\000\001\000\020\2466\0306646\012\000\001\000\004\001\000\000\00166\000\000\0016\251\032\251\243\251\251\000\000\001BD6\$\015.466666666\000\016666X66666666\000\000\001\000\001666E66\0216\000\004966\000\000\001666666.46X\000\03266\2556>66666\000\0006\000\000\2516\012\001\000\000\001\244.646\012\000\001\000\004\001\000\000\00166\000\000\0016\251\032\251\243\251\251\000\000\001BD6\$\0152466666666\000\016666X666666.6\000\000\001\000\001666E66\0216\000\004966\000\000\001666666\02846X\000\03266\2556>66666\000\0006\000\000\2516\012\001\000
|
||||
+AcAB3wHgAeEB4gHjAeQB5QHmAecB6AHpAeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB+gH7AfwB/QH+ 0 -1
|
||||
+BOgAAAENAwgINjY2NgAAAMAfNjY2NjY2NgAQNjY2WDY2NjY2NjY2APP2FgE2NjZFNjYVNgAENjY2NjY2NjY2NjQ2WDY2NjY2NiUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlNjY2NjY2NjYAAAABBB82NgAAATY2NiQVNjQ2NjY2NjY2NjY2NjY2NgAAAAEENgAAATY2NjY2NgAAATY2NjY2NjY2AAAAAQQ2NjY2NjY2NjY2NjY2AAAAAQAbS2xLS0tLS0tLATa+HQABNjY2AFA2NiQgNjQ2NjY2NlE2NjY2NjY2NjY2Nho2Nn92dnZ2dpZ2dnZ2dkE2AQAAAQAAARY2 0 255 BOgAAAENAwgINjY2NgAAAMAfNjY2NjY2NgAQNjY2WDY2NjY2NjY2APP2FgE2NjZFNjYVNgAENjY2NjY2NjY2NjQ2WDY2NjY2NiUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlNjY2NjY2NjYAAAABBB82NgAAATY2NiQVNjQ2NjY2NjY2NjY2NjY2NgAAAAEENgAAATY2NjY2NgAAATY2NjY2NjY2AAAAAQQ2NjY2NjY2NjY2NjY2AAAAAQAbS2xLS0tLS0tLATa+HQABNjY2AFA2NiQgNjQ2NjY2NlE2NjY2NjY2NjY2Nho2Nn92dnZ2dpZ2dnZ2dkE2AQAAAQAA 460 \232\000\000\001.\003\008\0086666\000\000\000\192\0316.66666\000\016666X66666666\000\243\246\022\001666E66\0216\000\004666666666646X666666%.%%%%%%%%%%%%%%%%%%%%%%%%66666666\000\000\000\001\004.66\000\000\001666\$\0216466666666666666\000\000\000\001\004.\000\000\001666666\000\000\00166666666\000\000\000\001\0046666666666666\000\000\000\001\000\027KlKKKKKKK\001.\190\029\000\001666\000P66\$\0326466666Q66666666666\02666\127vvvvv\150vvvvvA6\001\000\000\001\000
|
||||
+BAABAgMEERITBBQVFhceHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8EQEFCQwRERUZHBEhJSksETE1OTwRQUVJTBFRVVlcEWFlaWwRcXV5fBGBhYmMEZGVmZwRoaWprBGxtbm8EcHFycwR0dXZ3BHh5ensEfH1+fwSAgYKDBISFhocEiImKiwSMjY6PBJCRkpMElJWWlwSYmZqbBJydnp8EoKGiowQ= 0 -1
|
||||
+BOgAAAEDAwgIFjY2NgAAAMAfNjY2NjYkFTY0NjY2NjY2NjYAEDY2Nlg2NjY2NjY2NgAAAQABNjY2RTY2FTYABDY2NjY2NjY2NjY0Nlg2NjY2NjY2NgAAATY2NgAAAADAHzY2NjY2JAkJCf9/CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkVNjQ2NjY2NjY2NjY2NjY2NgAAAAEENjY2NjY2NjY2NjY2NgAAAAEAG0tsS0tLS0tLSwE2vh9GFDY2NjYAADY2JDY2NDY2NjY2NjY2NjY2NjY2NiQ2Nn92dnZ2dnZ2dnZ2dnZ2dnZBNgE2HgQAQP82NjY2NDYAAAEAAAGA 0 255 BOgAAAEDAwgIFjY2NgAAAMAfNjY2NjYkFTY0NjY2NjY2NjYAEDY2Nlg2NjY2NjY2NgAAAQABNjY2RTY2FTYABDY2NjY2NjY2NjY0Nlg2NjY2NjY2NgAAATY2NgAAAADAHzY2NjY2JAkJCf9/CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkVNjQ2NjY2NjY2NjY2NjY2NgAAAAEENjY2NjY2NjY2NjY2NgAAAAEAG0tsS0tLS0tLSwE2vh9GFDY2NjYAADY2JDY2NDY2NjY2NjY2NjY2NjY2NiQ2Nn92dnZ2dnZ2dnZ2dnZ2dnZBNgE2HgQAQP82NjY2NDYAAAEA 526 \232\000\000\001.\003\008\008.666\000\000\000\192\03166666\$\0216466666.66\000\016666X66666666\000\000\001\000\001666E66\0216\000\004666666666646X66666666\000\000.6.6\000\000\000\000\192\03166666\$\009\009\009\255\127\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\009\021646666666.666666\000\000\000\001\0046666666666666\000\000\000\001\000\027KlKKKKKKK\0016\190\031F\0206666\000\00066\$.64666666666666666\$66\127vvvvvvvvvvvvvvvA6\0016\030\004\000\@\255666646\000\000\001
|
||||
+AQABBwEIAQkBCgELAQwBZAEOAegB6QHqAesB7AHtAe4B7wHwAfEB8gHzAfQB9QH2AfcB+AH5AfoB+wH8Af0B/gH/AA== 0 67 AQABBwEIAQkBCgELAQwBZAEOAegB6QHqAesB7AHtAe4B7wHwAfEB8gHzAfQB9QH2AfcB+AH5AfoB+wH8Af0B/gH/AA== 162 \000.\007.\008.\009.\010.\011.\012.d.\014.\232.\233.\234.\235.\236.\237.\238.\239.\240.\241.\242.\243.\244.\245.\246.\247.\248.\249.\250.\251.\252.\253.\254.\255
|
||||
+AQAB3wHgAeEB4gHjAeQB5QHmAecB6AHpAeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB+gH7AfwB/QFAAP8A 0 67 AQAB3wHgAeEB4gHjAeQB5QHmAecB6AHpAeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB+gH7AfwB/QFAAA== 163 \000.\223.\224.\225.\226.\227.\228.\229.\230.\231.\232.\233.\234.\235.\236.\237.\238.\239.\240.\241.\242.\243.\244.\245.\246.\247.\248.\249.\250.\251.\252.\253.\@
|
||||
+AgAAAgBAAhAiAhBAAhAiAhAiBgQICf9/BAwNEg8EEAgSEwQBFRYXBBg6GhsECx0eHw01KSIZBCQkAAD/AEACECICEEACECICECIGBBAiAhBAAhAiAhAfBCApIiMEBCQAAAIAQAIQAAIQQAIQIgIQIgYECAICAgICECICEEACECICECIGBAgJ/38EDA0SDwQQCBITBAEVFhcEGAEVFhcEGDoaGwQLHR4fDTUpIhkEJDoaGwQUIx4fJjUpIhkEJCQAAAIAQAIQIgIQQAIQIgIQIgIQQAIQIgIQHwQgKSIjBCQkAAACAEACECICEEACECICECIGBAgCQAICAv4CAjsA 0 255 AgAAAgBAAhAiAhBAAhAiAhAiBgQICf9/BAwNEg8EEAgSEwQBFRYXBBg6GhsECx0eHw01KSIZBCQkAAD/AEACECICEEACECICECIGBBAiAhBAAhAiAhAfBCApIiMEBCQAAAIAQAIQAAIQQAIQIgIQIgYECAICAgICECICEEACECICECIGBAgJ/38EDA0SDwQQCBITBAEVFhcEGAEVFhcEGDoaGwQLHR4fDTUpIhkEJDoaGwQUIx4fJjUpIhkEJCQAAAIAQAIQIgIQQAIQIgIQIgIQQAIQIgIQHwQgKSIjBCQkAAACAEACECICEEACECICECIGBAgCQAICAv4CAjsA 781 \000\000.\000\@.\016\".\016\@.\016\".\016\".\004\008\009\255\127\004.\013\018\015\004\016\008\018\019\004\001\021\022.\004\024:\026\027\004\011\029\030\031\0135\)\"\025\004\$\$\000\000\255\000\@.\016\".\016\@.\016\".\016\".\004\016\"\002\016\@.\016\".\016\031.\032\)\"#.\004\$\000\000.\000\@.\016\000.\016\@.\016\".\016\".\004\008\002\002\002\002.\016\".\016\@.\016\".\016\".\004\008\009\255\127\004.\013\018\015\004\016\008\018\019\004\001\021\022.\004\024\001\021\022\023\004\024:\026\027\004\011\029\030\031\0135\)\"\025\004\$.\026\027\004\020#\030\031&5\)\"\025\004\$\$\000\000\002\000\@\002\016\"\002\016\@\002\016\"\002\016\"\002\016\@\002\016\"\002\016\031\004\032\)\"#\004\$\$\000\000\002\000\@\002\016\"\002.\@\002\016\"\002\016\"\006\004\008\002\@\002\002\002\254.\002\;
|
||||
+YcAAAcDAwA3AAQAQFBQMNjY2AAABNjY2Hlg2NjY2PzY2UQARAQA2NktLS0sBFrsfRhQ2NjY2AAA2Nlg2djw2NjY2NgAAAQABNjY2PAFLATa+H0YUwB82Nn7s7OwAAAEB7OHsFAD/ADY0NjYyNjY2NjY9PT0BNjY2AAAAAQA2NDY2MjInNhgYGBgYGBgYGBgYGBgYGBgYGBgYGBg2NgAQNjYAEDY2AAABQAAAAQAAAUsBNr4fRgEAHzY2fuzs7AAAAQHs4ewUNrY2NgAdNjQ2NjZBNj42NjY2NjY2TtDQ0JDQABQUFBS2NjU2Njo2WDY2NjYAAAHQ0DPQ0NDQ0NDQ0ND///8BABAUFAw2NjYAAAE2Ng== 16 255 NjYAAAE2NjYeWDY2NjY/NjZRABEBADY2S0tLSwEWux9GFDY2NjYAADY2WDZ2PDY2NjY2AAABAAE2NjY8AUsBNr4fRhTAHzY2fuzs7AAAAQHs4ewUAP8ANjQ2NjI2NjY2Nj09PQE2NjYAAAABADY0NjYyMic2GBgYGBgYGBgYGBgYGBgYGBgYGBgYGDY2ABA2NgAQNjYAAAFAAAABAAABSwE2vh9GAQAfNjZ+7OzsAAABAezh7BQ2tjY2AB02NDY2NkE2PjY2NjY2NjZO0NDQkNAAFBQUFLY2NTY2OjZYNjY2NgAAAdDQM9DQ0NDQ0NDQ0P///wEAEBQUDDY2NgAA 660 6\000\000\001666\030X6666?66Q\000\017\001\00066KKKK\001\022\187\031F\0206666\000\00066X6v<66666\000\000\001\000.6.6<\001K\0016\190\031F\020\192\03166~\236\236\236\000\000\001\001\236\225\236\020\000\255\0006466266666===\001666\000\000\000\001\000646.22'6\024\024\024\024\024\024\024\024\024\024\024\024\024\024\024\024\024\024\024\024\024\02466\000\01666\000\01666\000\000\001\@\000\000\001\000\000\001K\0016\190\031F\001\000.66~\236\236\236\000\000\001\001\236\225\236\0206\18266\000\02964666A6>666.666N\208\208\208\144\208\000\020\020\020\020\1826566:6X6666\000\000\001\208\2083\208\208\208\208\208\208\208\208\208\255\255\255\001\000\016\020\020\012666\000
|
||||
+PwABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj8/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH0/fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8P70= 0 -1
|
||||
+AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIPAgKAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISJBISAEASEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhICAgICAgICAgICAgICIiMELyTrJwQIKSorACw= 2 239 AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDwICgAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEiQSEgBAEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISAgICAgICAgICAgICAiIjBC8k6ycECCkqKwA= 786 \002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002\128\002\002\002\002\002\002\002\002\002\002\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018.\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\$\018.\000\@\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018.\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018.\018\018\018\018\018\018\018\018\018\018\018\018\018\018\018\002\002\002.\002\002.\002\002.\002\002.\"#./\$\235'.\008\)*+
|
||||
+PwABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9PgE/ 0 -1
|
||||
+AQAh5ifGs8kVxMsAAAHRAAABdwdle2FtcGxlA2NvbQAAGgABBHd3dzHAEA== 0 -1
|
||||
+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fgF/ 0 -1
|
||||
+wMAAAcDgwMDANjY2NgAAGsAfNjY8NjYkFTY0NjYyNjY2NjYAEDY2S0s2Nlg2djw2NjY2NgAAAQABNjY2PDY2JBU2BLM2ojY2NjY2Bf//BUU2OTY+NiU9PT0BHzY2PDY2JBU2NDY2MjY2NjY2AAw2NktLAAABARa+H0YUNjY2NgAANjZYNnY8NjY2NjYAAP4AATY2Njw2NiQVNgSzNqI2NjY2NgX//wVFNjk2PjYlPT09ATY2NgAAAAEANjQ2NjI2NjY2NgAQNjZLS0tAAAABSwE2vh9GFMAfNi5+7Ozs7AAAAezs7BQ2NjY2AAAAAAE2NjQ2NjZBNj42NjY2NjY2TtDQ0JDQABQUFBQ2NjU2NkM2WDY2NjZNNjZRABEBAA== 16 2 NjY2NgAQNjZLSzY2WDZ2PDY2NjY2AAABAAE2NjY8NjYkFTYEszaiNjY2NjYF//8FRTY5Nj42JT09PQEfNjY8NjYkFTY0NjYyNjY2NjYADDY2S0sAAAEBFr4fRhQ2NjY2AAA2Nlg2djw2NjY2NgAA/gABNjY2PDY2JBU2BLM2ojY2NjY2Bf//BUU2OTY+NiU9PT0BNjY2AAAAAQA2NDY2MjY2NjY2ABA2NktLS0AAAAFLATa+H0YUwB82Ln7s7OzsAAAB7OzsFDY2NjYAAAAAATY2NDY2NkE2PjY2NjY2NjZO0NDQkNAAFBQUFDY2NTY2QzZYNjY2Nk02NlEAEQEA 523 666\000\01666KK66X6v<66666\000\000\001\000\001666<66\$\0216\004\1796\16266666\005\255\255\005E696>6%.==\001\03166<66\$\0216466266666\000\01266KK\000\000\001\001\022\190\031F\0206666\000\00066X6v<66666\000\000\254\000\001666.66\$\0216\004\1796\16266666\005\255\255\005E696>6%===\001666\000\000\000\001\0006466266666\000\01666KKK\@\000\000\001K\001.\190\031F\020\192\0316\.~\236\236\236\236\000\000\001\236\236\236\0206666\000\000\000\000\001664666A6>6666666N\208\208\208\144\208\000\020\020.\02066566C6X6666M66Q\000\017\001
|
||||
+P4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vgG/ 0 -1
|
||||
+P8DBwsPExcbHyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3+Pn6+/z9/gH/ 0 -1
|
||||
+A3c= 0 -1
|
||||
+5jrGq8kVxMt3ZS3RA3d3dwdl 12 -1
|
||||
+BAALBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9 64 -1
|
||||
+BAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0rBCwtLi8EMDEyMwQ0NTY3BDg5OjsEPD0= 32 -1
|
||||
+BAAEBQYHBAgJCgsEDA0ODwQQFBUWFysELC0uLwQwMTIzBDQ1NjcEODk6OwQ8PQ== 16 -1
|
||||
+BAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 8 73 BgcECAkKCwQMDQ4PBBAREhMEFBUWFwQYGRobBBwdHh8EICEiIwQkJSYnBCgpKisELC0uLwQwMTIzBDQ1NjcEODk6OwQ8PT4/AA== 159 \007\004\008\009\010\011.\012\013\014\015.\016\017\018\019.\020\021\022\023.\024\025\026\027.\028\029\030\031.\032!\"#.\$%&'.\(\)*+.,-\./.0123.4567.89:\;.<=>?
|
||||
+hAA= 0 -1
|
||||
+JAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2Nw== 0 -1
|
||||
+FAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCsELC0uLwQwMTIzBDQ1NjcEODk6OwQ8PQ== 0 -1
|
||||
+DAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 0 81 DAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 224 \000\001\002\003\004\004\005\006\007\004\008\009.\011\004\012\013\014\015\004\016\017\018.\004\020\021\022\023\004\024\025\026\027\004\028\029\030\031\004\032!\".\004\$%&'\004\(\)*+\004,-\./\0040123\0044567\00489:\;\004<=>?
|
||||
+BgABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 0 81 BgABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 221 \000\001\002\003\004\004.\006\007\004\008\009.\011\004\012\013\014\015\004\016\017\018.\004\020\021\022\023\004\024\025\026\027\004\028\029\030\031\004\032!\".\004\$%&'\004\(\)*+\004,-\./\0040123\0044567\00489:\;\004<=>?
|
||||
+BQABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 0 81 BQABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 188 \000\001\002\003\004.\005\006\007\004.\009\010\011\004\012\013\014\015.\016\017\018\019.\020\021\022\023.\024\025\026\027.\028\029\030\031.\032!\"#.\$%&'.\(\)*+.,-\./.0123.4567.89:\;.<=>?
|
||||
+BEABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 0 81 BEABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 183 \@\001\002\003.\004\005\006\007.\008\009\010\011.\012\013\014\015.\016\017\018\019.\020\021\022\023.\024\025\026\027.\028\029\030\031.\032!\"#.\$%&'.\(\)*+.,-\./.0123.4567.89:\;.<=>?
|
||||
+BABBAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 0 81 BABBAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 182 \000A\002\003.\004\005\006\007.\008\009\010\011.\012\013\014\015.\016\017\018\019.\020\021\022\023.\024\025\026\027.\028\029\030\031.\032!\"#.\$%&'.\(\)*+.,-\./.0123.4567.89:\;.<=>?
|
||||
+BAAhAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 0 81 BAAhAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 182 \000!\002\003.\004\005\006\007.\008\009\010\011.\012\013\014\015.\016\017\018\019.\020\021\022\023.\024\025\026\027.\028\029\030\031.\032!\"#.\$%&'.\(\)*+.,-\./.0123.4567.89:\;.<=>?
|
||||
+BAABIgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 0 81 BAABIgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 183 \000\001\"\003.\004\005\006\007.\008\009\010\011.\012\013\014\015.\016\017\018\019.\020\021\022\023.\024\025\026\027.\028\029\030\031.\032!\"#.\$%&'.\(\)*+.,-\./.0123.4567.89:\;.<=>?
|
||||
+BAABAgMUBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXGwQcHR4fBCAhIiMEJCUmJwQoKSo= 0 -1
|
||||
+BAABAgMMBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 0 81 BAABAgMMBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 209 \000\001\002\003.\004\005\006\007\004\008\009\010\011\004\012\013.\015\004\016\017\018\019\004\020\021\022\023\004\024\025.\027\004\028\029\030\031\004\032!\"#\004\$%&'\004\(\)*+\004,-\./.0123.4567.89:\;.<=>?
|
||||
+BAABAgMA 0 6 BAABAgMA 17 \000\001\002\003
|
||||
+BAABAgMEAAgJCg== 0 -1
|
||||
+BAABAgMEBAUGBwYICQoLBAwNDg8EEAQYGRobBBwdHh8EICEiIwQrBCwtLi8EMDEyMwQ0NTY3BDg5OjsEPD0+PwA= 0 -1
|
||||
+BAABAgMEBAUGBwQIKQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 0 81 BAABAgMEBAUGBwQIKQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 183 \000\001\002\003.\004\005\006\007.\008\)\010\011.\012\013\014\015.\016\017\018\019.\020\021\022\023.\024\025\026\027.\028\029\030\031.\032!\"#.\$%&'.\(\)*+.,-\./.0123.4567.89:\;.<=>?
|
||||
+BAABAgMEBAUGBwQICQoLFAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 0 81 BAABAgMEBAUGBwQICQoLFAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 209 \000\001\002\003.\004\005\006\007.\008\009\010\011.\012\013\014\015\004\016\017\018\019\004\020\021\022\023\004\024\025\026\027\004.\029\030\031\004\032!\"#\004\$%&'\004\(\)*+\004,-\./\0040123.4567.89:\;.<=>?
|
||||
+BAABAgMEBAUGBwQICQoLBAwNDg8AEA== 0 21 BAABAgMEBAUGBwQICQoLBAwNDg8A 68 \000\001\002\003.\004\005\006\007.\008\009\010\011.\012\013\014\015
|
||||
+BAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBRgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 0 81 BAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBRgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 200 \000\001\002\003.\004\005\006\007.\008\009\010\011.\012\013\014\015.\016\017\018\019.\020\021\022\023.\024\025\026\027\004.\029\030\031\004\032!\"#\004\$%&'\004\(\)*+\004,-\./\0040123.4567.89:\;.<=>?
|
||||
+BAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGjsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 0 81 BAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGjsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 183 \000\001\002\003.\004\005\006\007.\008\009\010\011.\012\013\014\015.\016\017\018\019.\020\021\022\023.\024\025\026\;.\028\029\030\031.\032!\"#.\$%&'.\(\)*+.,-\./.0123.4567.89:\;.<=>?
|
||||
+BAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgIaIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 0 81 BAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgIaIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 187 \000\001\002\003.\004\005\006\007.\008\009\010\011.\012\013\014\015.\016\017\018\019.\020\021\022\023.\024\025\026\027.\028\029\030\031.\032!\162#.\$%&'.\(\)*+.,-\./.0123.4567.89:\;.<=>?
|
||||
+BAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjJA== 0 -1
|
||||
+BAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjAA== 0 46 BAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjAA== 145 \000\001\002\003.\004\005\006\007.\008\009\010\011.\012\013\014\015.\016\017\018\019.\020\021\022\023.\024\025\026\027.\028\029\030\031.\032!\"#
|
||||
+BAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgJCUmJw== 0 -1
|
||||
+BAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwAsLQ== 0 56 BAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwA= 158 \000\001\002\003.\004\005\006\007.\008\009\010\011.\012\013\014\015.\016\017\018\019.\020\021\022\023.\024\025\026\027.\028\029\030\031.\032!\"#.\$%&'.\(\)*+
|
||||
+BAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBA== 0 -1
|
||||
+BAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vADA= 0 61 BAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vAA== 164 \000\001\002\003.\004\005\006\007.\008\009\010\011.\012\013\014\015.\016\017\018\019.\020\021\022\023.\024\025\026\027.\028\029\030\031.\032!\"#.\$%&'.\(\)*+.,-\./
|
||||
+BAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMA 0 66 BAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMA 169 \000\001\002\003.\004\005\006\007.\008\009\010\011.\012\013\014\015.\016\017\018\019.\020\021\022\023.\024\025\026\027.\028\029\030\031.\032!\"#.\$%&'.\(\)*+.,-\./.0123
|
||||
+BAABAgMEBAUGBwQICQoLBAwNDg8EEAQYGRobBBwdHh8EICEiIwQkJSYnBCgpKisELC0uLwQwMTIzBDQ1NjcEODk6OwY8PQ== 0 -1
|
||||
+BAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8B 0 -1
|
||||
+BAAEBQYHBAgJCgsEDA0ODwQQERITBBQVFhcEGBkaGwQcHR4fBCAhIiMEJCUmJwQoKSorBCwtLi8EMDEyMwQ0NTY3BDg5OjsEPD0+PwA= 6 71 BAgJCgsEDA0ODwQQERITBBQVFhcEGBkaGwQcHR4fBCAhIiMEJCUmJwQoKSorBCwtLi8EMDEyMwQ0NTY3BDg5OjsEPD0+PwA= 151 \008\009\010\011.\012\013\014\015.\016\017\018\019.\020\021\022\023.\024\025\026\027.\028\029\030\031.\032!\"#.\$%&'.\(\)*+.,-\./.0123.4567.89:\;.<=>?
|
||||
+BAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 3 78 AgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 176 \003\004.\005\006\007\004.\009\010\011\004\012\013\014\015.\016\017\018\019.\020\021\022\023.\024\025\026\027.\028\029\030\031.\032!\"#.\$%&'.\(\)*+.,-\./.0123.4567.89:\;.<=>?
|
||||
+NAABAgMEBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9 0 -1
|
||||
+HAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9 0 -1
|
||||
+CAABAgMEBAUGBwQICQoLBAwNDg8EEAQYGRobBBwdHh8EICEiIwQrBCwtLi8EMDEyMwQ0NTY3BDg5OjsEPD0+PwA= 0 -1
|
||||
+AgABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 0 81 AgABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 185 \000\001.\003\004.\005\006\007\004.\009\010\011\004\012\013\014\015.\016\017\018\019.\020\021\022\023.\024\025\026\027.\028\029\030\031.\032!\"#.\$%&'.\(\)*+.,-\./.0123.4567.89:\;.<=>?
|
||||
+BAABAgM0ERITBBQVFhcEGBkaGwQcHR4fBCAhIiMEJCUmJwQoKSorBCwtLi8EMDEyMwQ0NTY3BDg5OjsEPD0= 0 -1
|
||||
+AQABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 0 81 AQABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 182 \000.\002.\004\004\005.\007\004\008\009\010\011.\012\013\014\015.\016\017\018\019.\020\021\022\023.\024\025\026\027.\028\029\030\031.\032!\"#.\$%&'.\(\)*+.,-\./.0123.4567.89:\;.<=>?
|
||||
+BAABAgMmBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 0 81 BAABAgMmBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 227 \000\001\002\003.\004\005\006\007\004\008\009\010\011\004\012\013\014\015\004\016\017\018\019\004\020\021\022\023\004\024\025\026\027\004\028\029\030\031\004\032!\".\004\$%&'\004\(\)*+\004,-\./\0040123\0044567\00489:\;\004<=>?
|
||||
+BAQYGRobBBwdHh8EICEiIwQkJSYnBCgpKisELC0uHB0eHwQgISIjBCQlJicEKCkqKwQsLS45BDAxBCAhIiMEJAAB 0 -1
|
||||
+BAABAgMEDA0ODwQQERITBBQVFhcEGBkaGwQcLx4fBCAhIiMEJCUmJwQoKyorBA== 0 -1
|
||||
+BAABAiAEBAUGBwQICQoLBAxkAA8EEBEeHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDxvPj8A 0 66 BAABAiAEBAUGBwQICQoLBAxkAA8EEBEeHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDxvPj8A 131 \000\001\002\032.\004\005\006\007.\008\009\010\011.\012d\000\015.\016\017\030\031.\032!\"#.\$%&'.\(\)*+.,-\./.0123.4567.89:\;.<o>?
|
||||
+BAAkdXV1dR0pELsELC0uPBgZGhsEHgkJ2gEBAmQEBAeAABogBCkJCdonBBQVPUAEGBkaGwQpGgAEKAkJ2gQWJRfaGxITBAEVFgBAGCQwGwT5HClHuwQsLS48GBkaGwQpCQnKARKKBJ2dnZ2dnZ2dnRgsLUAEGCwtLgA= 2 -1
|
||||
+BAABAgMEBEAADQ4PBBAREhMEFBUWFwQYGRobBAQgISIjBA8lJicczx4fBCAhIiMEJCUmLwQwMS8EMDEyMww0NTQ3BDg5GwQmJ/UnNjcEODkyMww0NzY3BDg5GwQmJ/UnNjcEODk6OwQ6OwQ8PT4/AA== 0 112 BAABAgMEBEAADQ4PBBAREhMEFBUWFwQYGRobBAQgISIjBA8lJicczx4fBCAhIiMEJCUmLwQwMS8EMDEyMww0NTQ3BDg5GwQmJ/UnNjcEODkyMww0NzY3BDg5GwQmJ/UnNjcEODk6OwQ6OwQ8PT4/AA== 261 \000\001\002\003.\004\@\000\013.\015\004\016\017\018\019\004\020\021\022\023\004\024\025.\027\004\004\032!\"#\004\015%&'\028\207\030\031\004\032!\"#\004\$%&/.01/\004.123\0124547\00489\027\004&'\245'67\0048923\0124767\00489\027\004&'\245'67\00489:\;\004:\;.<=>?
|
||||
+BAABAgMEBAUiIwQkJSYnBCgpKisELC0uLwQwMTIzBDQ1NjcEOAYHBAgJCoAEDA0ODwQQERITBBQFFhcEGBkaGwQcHR4fBKAhIiMEJCUmJwQoKSorBCwtLi8EMDEyMwQ0NTY3BDg5OjsEPD0+PwA= 0 110 BAABAgMEBAUiIwQkJSYnBCgpKisELC0uLwQwMTIzBDQ1NjcEOAYHBAgJCoAEDA0ODwQQERITBBQFFhcEGBkaGwQcHR4fBKAhIiMEJCUmJwQoKSorBCwtLi8EMDEyMwQ0NTY3BDg5OjsEPD0+PwA= 222 \000\001\002\003.\004\005\"#.\$%&'.\(\)*+.,-\./.0123.4567.8\006\007\004.\009\010\128\004\012\013\014\015.\016\017\018\019.\020\005\022\023.\024\025\026\027.\028\029\030\031.\160!\"#.\$%&'.\(\)*+.,-\./.0123.4567.89:\;.<=>?
|
||||
+BCorBCwtLjL79Pv7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+3sEPD0VFhcEGBka0yYMHR4mBCAhIiO0ELS0trTFtLS0tLS09rS0tCsELC0uLQAEAAB/AAA= 4 82 LC0uMvv0+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7ewQ8PRUWFwQYGRrTJgwdHiYEICEiI7QQtLS2tMW0tLS0tLT2tLS0KwQsLS4tAAQAAH8AAA== 270 -\.2\251\244\251\251\251\251\251\251\251\251\251\251\251\251\251\251\251\251\251\251\251\251\251\251\251\251{\004<=\021\022\023\004\024\025\026\211&\012\029.&\004\032!\"#\180\016\180\180\182\180\197\180\180\180\180\180\180\246\180\180\180+\004,-\.-\000.\000\000\127\000
|
||||
+BAABAh0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dAwQEBQYHBAgJCgsEDP0NDwQQERITBBQVFhcEGBkaGwQcHR4fBCAhIiMEJCUmJwQoKTY3BDg4OjsEPD0+PwA= 0 98 BAABAh0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dAwQEBQYHBAgJCgsEDP0NDwQQERITBBQVFhcEGBkaGwQcHR4fBCAhIiMEJCUmJwQoKTY3BDg4OjsEPD0+PwA= 321 \000\001\002\029.\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029.\003\004\004\005\006\007\004\008\009\010\011\004\012\253\013\015\004\016\017\018\019\004\020\021\022\023\004\024\025.\027\004\028\029\030\031\004\032!\"#\004\$%&'\004\(\)67\00488:\;.<=>?
|
||||
+BAABAgMEBAUGBwQAAAEABAwNDhQEEBESEwQUNBYXBAcH5wYHogcHBw0HBwcHBwcAEAcHBwcigDUzNjcEODk6OwQ8UT4/AA== 0 70 BAABAgMEBAUGBwQAAAEABAwNDhQEEBESEwQUNBYXBAcH5wYHogcHBw0HBwcHBwcAEAcHBwcigDUzNjcEODk6OwQ8UT4/AA== 200 \000\001\002\003.\004\005\006\007.\000\000\001\000.\012\013\014\020.\016\017\018\019.\0204\022\023.\007\007\231\006.\162\007\007\007\013\007\007.\007\007\007\000\016\007\007.\007\"\1285367.89:\;.<Q>?
|
||||
+DQ4EAAHlDQQEBQYBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBAgJAA4PAwAAGRobBCchHB0eHwQgISIjBCQlJiciIwQkJSYnBCj+3vH+/u7+/v7+BCQlJichIiME/h7//t7+3/7+/v7+/v7+/v7+BAg/AA== 0 118 DQ4EAAHlDQQEBQYBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBAgJAA4PAwAAGRobBCchHB0eHwQgISIjBCQlJiciIwQkJSYnBCj+3vH+/u7+/v7+BCQlJichIiME/h7//t7+3/7+/v7+/v7+/v7+BAg/AA== 354 \014\004\000\001\229\013\004\004\005\006\001\001\001.\001.\001.\001.\001.\001.\001.\001.\001.\001.\001.\001.\001.\004.\009\000\014\015\003\000\000\025.\027\004'!\028\029\030\031\004\032!\"#\004\$%&'\"#\004\$%&'\004.\254\222\241\254\254\238\254\254\254\254\004\$%&'!\"#\004\254\030\255\254\222\254\223\254\254\254\254\254\254\254\254\254\254\254\004\008?
|
||||
+BAAIAgMEBwQsLS4vBC0xCAkKCwQMDQ4PfxA3BDgEAAgCAwQHBDwtLjIzBDQ1NggJCgsEDA0OD38QNwQ/OTotLkYELTEyNggJCgsEDA0OD38QNwQ4BAAIAgMEBwQsLS4vBC0xMjMENDU2CAkKCwQ5OjsEPEg+Pw== 0 -1
|
||||
+BAABAgMEBAUGBwLrCQoFBgcD6wkKCwQMDQ7//xAREhMEFBUWFwQYGRob 0 -1
|
||||
+BAAP/wAXBBgZGhsEHB0eHwQOIZgAIvQJ//8WGRcXFxcXFxcXFxwlF/oXICEiEAxAABcXFxcXFxcXFxcX/xcXFxccJQxAABcXFxcXFxcX 0 -1
|
||||
+DAAB/AMEBAUGBwQICQoLAwxADg8EEBESEwQkJSYnBCgpKisELC1ADg8EBgcECAxADg8TBBQiIwQkJSY5OjsEPD0+ 0 -1
|
||||
+BH8PEhMEIn4EABD/BCEiIwQkJSYADg8EBEwSEwQiIwQADf8EAXUjBA0ABCIjBAAQ/wQhIiNVDQ4PBgQPEhMEFCMk+gAA+i4AAAADQAAAAC4uLi4uLi5PLi4uLi4uLi4jAAACAAAO 0 101 BH8PEhMEIn4EABD/BCEiIwQkJSYADg8EBEwSEwQiIwQADf8EAXUjBA0ABCIjBAAQ/wQhIiNVDQ4PBgQPEhMEFCMk+gAA+i4AAAADQAAAAC4uLi4uLi5PLi4uLi4uLi4jAAACAAA= 289 \127\015\018\019.\"~\004\000.\255\004!\"#\004\$%&\000\014\015\004\004L\018.\004\"#\004\000\013\255\004\001u#\004\013\000\004\"#\004\000.\255\004!\"#U\013\014\015\006\004\015\018\019\004\020.\$\250\000\000\250\.\000\000\000\003\@\000\000\000\.\.\.\.\.\.\.O\.\.\.\.\.\.\.\.#\000\000\002\000
|
||||
+BAAYGRoCAgICAgICAgICAgIC 0 -1
|
||||
+BBwBAhwBBQYAABAACgsEDA0OFwMUBAUGAAAQAAoLBAwNDicEKD8qKwQsMjMENA== 0 -1
|
||||
+BAABAvsEBDQmNjcEAEA6O6GhoZ2hoaGhoakhoaGhoaEEPD0FHQcECAkKCwB/DQ4uBBAREhMEFBUWFwQYGAACAAAdHh8EICljAAAAADEySwQ0NTY3BABAOjsEPD1APwQ8PT4= 0 -1
|
||||
+BP9/AgMEBAUGBwQICQoLBAwNDg8EEBESEwQEGRobBBwdHh8EICEkJSYnMzMzMzMzMzMzMzMzMysELC0uLwQwMTIzBDQ1NjcEODktOwQ8PT4/AA== 0 -1
|
||||
+DQ4PBAgICgtADA0ODwQICQoLAAD//w8EBF4GBwwABF4GBwwNBg8EBBMEBv8ICQoDQAQTBgcEDwQICdsLQAwzBDRONjcEOA== 12 -1
|
||||
+BAABAgMEBDAxMjMENCwtLi8EBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgAAIAAHF2hHyEiIwQkJTEnBCgpKisELC0uLwQwMTIzBDQsLS4vBDAxMjMENDU2NwQ4OTpkNjcEODk6OwQ8PQ== 0 -1
|
||||
+A+cBAgMEBCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQcECAkKISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OVc7BDw9PgA= 0 -1
|
||||
+BAABAhERAwQEBQYHBCEJCAghCQgICAgJCAgI7REICAAICAgICAiICAgICAgICAgICAgICAoLBAwNDg8EBhESEx0UFRYXfyX/JwQoKSorBCwtLi8EMDEyMwQ0NTw9Pg== 0 -1
|
||||
+BAABAgMEBQUG5gMI5ycLBAwNDg8EyxG6EykRHQEBAQEBAQEBAQEBAQEBAQEBAQEBAQF/auUs 0 -1
|
||||
+CgsjFSQlJicEKCkqKwQsNDQAEDcUFRYX/wAAABsEHB0bBBwdHh8EICEiIxUkAAAbFhcEMTIzBDQAEBsEHB0eHwQgMwQ0NQ== 0 -1
|
||||
+BAABAgMEBAUGBwQI7AoLBAwNDicEEBESEwQUFRYXBAYZGhsEHB0eIgQgISIjAj4/AA== 0 49 BAABAgMEBAUGBwQI7AoLBAwNDicEEBESEwQUFRYXBAYZGhsEHB0eIgQgISIjAj4/AA== 143 \000\001\002\003.\004\005\006\007.\008\236\010\011.\012\013\014'.\016\017\018\019.\020\021\022\023.\006\025\026\027.\028\029\030\".\032!\"#.>?
|
||||
+BBABAgMsLS4A/zA0MvoAAPo2NwQ4PD03PwAEJwQoKR0eHwQg//8aGwABHR4fBCA2IiMEJCUmJwQoKQACEu4rLS4vBDCysn8ENDU2NwQ4ORUWFwQgISIjBCSyBDQ1NjcEODkVFhcGGBkaGwQwMDAwMCoqKioqKioqKiogKioqKioqKioqKioqKioqJSYnBCgpHR4fBCD///+APT5BAA== 0 -1
|
||||
+BBABggMEBAUG6wQICQoLBAxuBBQtLiBQMwQzNTY5BDgeOTsEUFEENDUpNwQ4ADkEMDFQKhcELC0uIAQwMVAzBAQzNTY0NQ== 0 -1
|
||||
+GQABAgMEBAUGBAIWCwQL8Q8EChESEwYUFRYXpQIDBAQFBgQIFgsEC/EPBAoREhMGFBYXpRgZGhvuHB0dHh7iPQ0ODwQQERITBhQV+gAAdHB0dOICBBwdQIAAKwQsLS6jvzA= 0 -1
|
||||
+BAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEDh0eHwQgISIjBAICAgICAgICAgICAgICAgICAgICAgICAjsEPD0= 0 -1
|
||||
+BAABAgMEBAX0BgQICf9/BAwNEg8EEBESEwQUFRYXBBgZGhsEFB0eHwQgKSIjBCQk6ycECCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 0 81 BAABAgMEBAX0BgQICf9/BAwNEg8EEBESEwQUFRYXBBgZGhsEFB0eHwQgKSIjBCQk6ycECCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 192 \000\001\002\003.\004\005\244\006.\008\009\255\127.\012\013\018\015.\016\017\018\019.\020\021\022\023.\024\025\026\027.\020\029\030\031.\032\)\"#.\$\$\235'.\008\)*+.,-\./.0123.4567.89:\;.<=>?
|
||||
+BAABAGQEBAUGBwQICQouLwQwMTIzBDQAgAAASzk6OwQ8PT4EGBkaGwQcHR4fBCAhIyMKJCUmJwQoKSo4BCYtLi8EMDEyMuI0NTYEJi0uLwQwMTIzBDQAAAABAAA6OwQ8PT4/BDcEODk6Oys8PT4/BA== 0 -1
|
||||
+BAABAgMEBAUGBwQICQoLBAwNDg8EEBESKQQUFRYXBBgZGigEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 0 81 BAABAgMEBAUGBwQICQoLBAwNDg8EEBESKQQUFRYXBBgZGigEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 181 \000\001\002\003.\004\005\006\007.\008\009\010\011.\012\013\014\015.\016\017\018\).\020\021\022\023.\024\025\026\(.\028\029\030\031.\032!\"#.\$%&'.\(\)*+.,-\./.0123.4567.89:\;.<=>?
|
||||
+BAABAgICAgICAgICLhwEMDEyMwICAgICAgQUFRYXAgICAgICAgICAgICAgICAgICAgICAgICAgICAi4cBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 0 81 BAABAgICAgICAgICLhwEMDEyMwICAgICAgQUFRYXAgICAgICAgICAgICAgICAgICAgICAgICAgICAi4cBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 191 \000\001\002\002.\002\002.\002\002.\.\028.0123.\002\002.\002\002.\020\021\022\023.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\.\028.0123.4567.89:\;.<=>?
|
||||
+BAABAgMEBAUGBwQICQoLBAwNDgICAgICAicEKCkqKwQsLS4vBDACAgICAgICAgICAicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 0 81 BAABAgMEBAUGBwQICQoLBAwNDgICAgICAicEKCkqKwQsLS4vBDACAgICAgICAgICAicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 168 \000\001\002\003.\004\005\006\007.\008\009\010\011.\012\013\014\002.\002\002.\002'.\(\)*+.,-\./.0\002\002\002.\002\002.\002\002.\002'.\(\)*+.,-\./.0123.4567.89:\;.<=>?
|
||||
+BAAYDQ4PBBAREhMBjAMEBAUGDQ4PBBAREhMEFBUWEwQUFRYXBBgZGhsEkx0eHxobBJMdDB8EICEiIwQ2NDUEkx0eDg8EEBESEwQEGBkaGwSTHQ== 0 -1
|
||||
+ZAENAWQBDQAA/w== 1 7 AQ0BZAENAA== 12 \013.d.\013
|
||||
+BAQIIwoLDwQQEeQcPx4fBCAhIiMEJCUmJx8FIAQoKSorBCwhLi8EMB0yD6cQEcscPx4fBCA+IiMEJCUmJx8EFd4oKSorFCcEGSkqKwQsLTcEODk6OwQ8BwQYBxobBBwdHg/HEBES 3 -1
|
||||
+wAADJRoVHignKiuALC1AAAAABCBNLn////97fwAcPj+A 0 -1
|
||||
+BAARAgMEBAUGBwQICQrvAwgJCsAEDBcEGAQMDQ4PBBAdHh8EICEiIwQkJSYnBCgpKisELC0uLwQwMQAAEQIDBAQFBgcECAkK7wP/BDQ1NjcEODk6OwQ8PT4/ 0 -1
|
||||
+BAABAgMEBAAGBwQICQoLBAwNDg8EEBESKAQUFRYXBBgZGhsEHB0eHwQgISIrBCwtLi8EMDEyMwQ0NTY3BDg5OjsEPD0+PwQ4OTo7BDw9AEAA 0 81 BAABAgMEBAAGBwQICQoLBAwNDg8EEBESKAQUFRYXBBgZGhsEHB0eHwQgISIrBCwtLi8EMDEyMwQ0NTY3BDg5OjsEPD0+PwQ4OTo7BDw9AEAA 185 \000\001\002\003.\004\000\006\007.\008\009\010\011.\012\013\014\015.\016\017\018\(.\020\021\022\023.\024\025\026\027.\028\029\030\031.\032!\"+.,-\./.0123.4567.89:\;.<=>?.89:\;.<=\000\@
|
||||
+BAABAgMEBAUGBwQICQoPDwQQFBUWFwQYGRobAQEBAQEBAQEBBBwdHh8EICEiIwQkJSYnBCgpKisELC0uL////38zBDQ1NjcEPBA+P0A= 0 -1
|
||||
+BA8EAgAsAID/////MjMEMjU2NwMEFgUEBf//9BEAHALNBAb/f0AA6iAEICEiIwQkJSYn+vr6+vr6BPYGACQICQoQAiADvQABEgMEBAUEBQYHBEAA6iAEICEiIwQkJSYn+vr6+vr6+vr6+vr0BBIdLC0u9gQwMSgMBwRkAAAgBEQAIAQgISI= 0 -1
|
||||
+BAABAgMEBAUGBwQICQoLBBobBBwdHh8EICEiIwQkJSYnBCgpKisELDEyMwQ0NTY3BAACOjsEPHI+OwQ8PT4/AA== 0 64 BAABAgMEBAUGBwQICQoLBBobBBwdHh8EICEiIwQkJSYnBCgpKisELDEyMwQ0NTY3BAACOjsEPHI+OwQ8PT4/AA== 147 \000\001\002\003.\004\005\006\007.\008\009\010\011.\026\027\004\028.\030\031\004\032!\"#\004\$%&'\004\(\)*+\004,123\0044567\004\000.:\;.<r>\;.<=>?
|
||||
+wAABAgMEERITBBQVFhcEGBkaGwQcHR4fBCAhIiMEJCUmJ/snKSorBCwtLi8EMDEyMwQ0NTY3BDg5OjsEPD0+PwA= 0 -1
|
||||
+BB4fBAQcKSkpKSkpKSkpKSkpKSkpKRMpKSkpBCAhDyMEJCUmJwQ= 0 -1
|
||||
+AgAAAhAiAhAiFvQAzwACECICECIW9ADpFvQW9ADpA/QAzw== 0 33 AgAAAhAiAhAiFvQAzwACECICECIW9ADpFvQW9ADpA/QA 108 \000\000.\016\".\016\".\244\000\207\000\002\016\"\002\016\"\022\244\000\233\022\244\022\244\000\233\003\244
|
||||
+BAABFwMEBAUWFwQYGRobBBwdHh8EICEiIwQkJSYnBCgpKisELDsuLwQgISIjBCQlJicEKCkqKwQsOy4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 0 81 BAABFwMEBAUWFwQYGRobBBwdHh8EICEiIwQkJSYnBCgpKisELDsuLwQgISIjBCQlJicEKCkqKwQsOy4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 147 \000\001\023\003.\004\005\022\023.\024\025\026\027.\028\029\030\031.\032!\"#.\$%&'.\(\)*+.,\;\./.\032!\"#.\$%&'.\(\)*+.,\;\./.0123.4567.89:\;.<=>?
|
||||
+BAABAQEBAQEBAQEBAQoL9gwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJieuDCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 0 81 BAABAQEBAQEBAQEBAQoL9gwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJieuDCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 214 \000\001\001\001.\001.\001.\001.\001.\011\246\012\013\014\015\004\016\017\018.\004\020\021\022\023\004\024\025\026\027\004\028\029\030\031\004\032!\".\004\$%&'\174\012\)*+\004,-\./\0040123\0044567\00489:\;\004<=>?
|
||||
+BBgZKhsEHIAAHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMgICAgICAgIC 0 -1
|
||||
+PwABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj8/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH0/fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8P70= 64 -1
|
||||
+PwABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj8/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH0Afg== 0 129 PwABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj8/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH0A 235 \000\001\002\003\004\005\006\007\008\009\010\011\012\013\014\015\016\017\018\019\020\021\022\023\024\025\026\027\028\029\030\031\032!\"#\$%&'\(\)*+,-\./0123456789:\;<=>.?\@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}
|
||||
+PwAhIiMFJSZZKAPoKzQtLi0wMTIzSTU2Nzg5OjsSPT4/PwECy8vLy+fnntTn5wQBBgcILy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL38jBSUmWSgD6Cs0LS4tMDEyMzRGR0hJSktMTYODgwUGBwgJCgsMDQ4PEBETFEAADw== 0 -1
|
||||
+wACQkAQAJiYmJiYmJiYmJiYi 0 -1
|
||||
+AgBAAhAiAhAiFvQAzwACECICECIW9ADpFvQW9ADpA/QAzw== 0 33 AgBAAhAiAhAiFvQAzwACECICECIW9ADpFvQW9ADpA/QA 106 \000\@.\016\".\016\".\244\000\207\000\002\016\"\002\016\"\022\244\000\233\022\244\022\244\000\233\003\244
|
||||
+AgAAAgEiAhAiFusCzwACECICZCIW9A/pFvQW9ADpAwACASICECIW6wLPAAIQDQJkIhb0D+kW9Bb0AOkDJQA= 0 62 AgAAAgEiAhAiFusCzwACECICZCIW9A/pFvQW9ADpAwACASICECIW6wLPAAIQDQJkIhb0D+kW9Bb0AOkDJQA= 200 \000\000.\001\".\016\".\235\002\207\000\002\016\"\002d\"\022\244\015\233\022\244\022\244\000\233\003\000.\001\".\016\".\235\002\207\000\002\016\013\002d\"\022\244\015\233\022\244\022\244\000\233\003%
|
||||
+AgABAQEBAQEBAQIBAQEBAQEBAQEBAQ== 0 -1
|
||||
+AgACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgL0 0 -1
|
||||
+AgAAAhAiAQEBCQEBAQACENQBAQEBAQEBAQEBAWQBAAEBAgEBAQEBKSkp 0 -1
|
||||
+AgABAQEBAQEBAQEBAQECAQACAAACECIBAQEBAQEBAQEBAQEBAQE= 0 -1
|
||||
+AgAAAhAiAgAAAhAiAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIBVwEBAQEBAQEBAQECAVcBAQEBAQEBAQEBAQECAVcBAQEBAQEBFAE= 0 -1
|
||||
+BEBBQkMEREVGRwRISUpLBExNTk8EUFFSUwRUVVZXBFhZWlsEXF1eXwTgYWJjBGRlZmcEaGlqawRsbW5vBHBxcnMEdHV2dwR4eXp7BHx9fn8A 0 81 BEBBQkMEREVGRwRISUpLBExNTk8EUFFSUwRUVVZXBFhZWlsEXF1eXwTgYWJjBGRlZmcEaGlqawRsbW5vBHBxcnMEdHV2dwR4eXp7BHx9fn8A 88 \@ABC.DEFG.HIJK.LMNO.PQRS.TUVW.XYZ[.\\]^_.\224abc.defg.hijk.lmno.pqrs.tuvw.xyz{.|}~\127
|
||||
+BEBBQkMEREVGRwRISUpLBExNTk8EUFFSUwRUVVZXBFhZWlsEXF1eXwRgYWJjBGRlZmcEaGlqawBsbQ== 0 56 BEBBQkMEREVGRwRISUpLBExNTk8EUFFSUwRUVVZXBFhZWlsEXF1eXwRgYWJjBGRlZmcEaGlqawA= 57 \@ABC.DEFG.HIJK.LMNO.PQRS.TUVW.XYZ[.\\]^_.`abc.defg.hijk
|
||||
+BEBBQkMEREVGRwRISUpLBExNTk8EUFFSUwRUVVZXBFhZWlsEXF1eXwRgYWJjBGRlZmcEaGlqawRsbW5vBHBxcnMEdHV2dwR4eXp7BHx9fj8A 0 81 BEBBQkMEREVGRwRISUpLBExNTk8EUFFSUwRUVVZXBFhZWlsEXF1eXwRgYWJjBGRlZmcEaGlqawRsbW5vBHBxcnMEdHV2dwR4eXp7BHx9fj8A 82 \@ABC.DEFG.HIJK.LMNO.PQRS.TUVW.XYZ[.\\]^_.`abc.defg.hijk.lmno.pqrs.tuvw.xyz{.|}~?
|
||||
+PwABAgMEBQYHCAmztLUAABYXGBmInAoLDA0ODyQRNDU2NwE5Ojs8PT4/PwkKCwwNDg8kSwoLDA0ODyQpKSkpKSkpPT4/VTAxMjM0NDY3AYeLjKqObB0eHyB9KSkpKSkpKWQnKCkqKykJKSkpKSkpKSkpKSlkJygpKissLS48PT4/P0BBQkNERUYvMDEyMzQ0NjcBigQArK2urw== 0 -1
|
||||
+PwABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEiIyTsJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj8/QEFCQ0RFRkdISUpLTE1OT1BRUlNLVVZXWFlaW1xdXl9gYWJjZGVmZ2hpMDAwMDEwMDAwMDAwME0wMDAwMDAwMDAwMDAwMDAwMGprbG1ub3BxcnN0dXZ3eHl6ewh9P35/gIGCg4SFhoeIiYo7PD0+Pz9AQUJLTE1OT1BRUouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqMgpaanqKmqq6ytrq+wsbKztLW2t7i5uru8P70= 0 -1
|
||||
+KCgoKCgoKDkQgAQwQDJDxsbGyP9EKsbG1sbGxsbGxsbGyP8qxkAqKioqKioqKMbGzcbG1v8qKsbG1sbGxsbGxsbGyP8qKkAqKioqKioqQSoqACgTExMTExMTExMTExMTExMTExMTExMTExMTExMTKioMKioqKir/ACroAyoq 0 -1
|
||||
+BAwDAwMDA+gCAwMDAwMDAwMDAwP6A+gCAwMDAwMDAwMDAwP6AAA= 0 38 BAwDAwMDA+gCAwMDAwMDAwMDAwP6A+gCAwMDAwMDAwMDAwP6AAA= 121 \012\003\003\003.\003\232\002.\003\003\003.\003\003\003.\003\003\250.\232\002\003.\003\003\003.\003\003\003.\003\250\000
|
||||
+BAABAh0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dAwQEBQYHBAgJCgsEDP0NDwQQERITBBQVFhcEGBkaGwQcHR4fBCAhIiMEJCUmJwQoKTY3BDg4OjsEPD0+P8A= 0 -1
|
||||
+//8FDgMEBwQsLS4nBC0AEwIQAAcAAH/fMjMENDU2CAkKTy4gAB8ANgQsLS4vBAcAAH/fMjMENDU2CCAAHwA2BCwtLi8eBC4gAB8ANgQsIAAfAC4vBH8QHgQ/OTpPLiCVlZWVlZWVlZWVlZWVlZWVlZWV 5 -1
|
||||
+FgAAEAAnBCgpKisELC0uEdkuEQYDBCEJCAghCQgICBgJCAgIAwIICAAICAgIAAkICCEJCAgIGAgICO0RCAgACAYIFAgICIYICAgICO0RCAgACAYIFAgPBAYREhMdag== 0 -1
|
||||
+BA8ICAgEBAUG6wQICQoLBAxuJSY2BBAAAAAEFC0uIFAzBDM1NjkEOB45OwRQUgQ0NSk3BDgAOQQ1NjkEOB45OwRQUQQ0NSk3BDA0UCoX 0 -1
|
||||
+PwABFwMEenp6enp6enp6enp6enp6enp6enp6enp6enp6enp6IyQlJicoKSorLC0uLzAxMjM0ACAzODk6Ozw4Pj8/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaAVxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH0Afg== 0 129 PwABFwMEenp6enp6enp6enp6enp6enp6enp6enp6enp6enp6IyQlJicoKSorLC0uLzAxMjM0ACAzODk6Ozw4Pj8/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaAVxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH0A 159 \000\001\023\003\004zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz#\$%&'\(\)*+,-\./01234\000\032389:\;<8>.?\@ABCDEFGHIJKLMNOPQRSTUVWXYZ\001\\]^_`abcdefghijklmnopqrstuvwxyz{|}
|
||||
+PwDuAQMEBQYHCAl8fHx8fHx8fHx8fHx8fHx8fHx8fHx8ICEiIyQlJjU2Nzg5Ojs8ICEiIyQlJjU2Nzg5Ojs8PT4/P0BBQkNEVHx8fHx8fHx8fHx8fHx8fHx8fHx8fCAhVVZXWFlaW1xdXl9gABBjZGVwcXJzdHV2QAAAAHt8fQB+ 0 128 PwDuAQMEBQYHCAl8fHx8fHx8fHx8fHx8fHx8fHx8fHx8ICEiIyQlJjU2Nzg5Ojs8ICEiIyQlJjU2Nzg5Ojs8PT4/P0BBQkNEVHx8fHx8fHx8fHx8fHx8fHx8fHx8fCAhVVZXWFlaW1xdXl9gABBjZGVwcXJzdHV2QAAAAHt8fQA= 190 \000\238\001\003\004\005\006\007\008\009||||||||||||||||||||||\032!\"#\$%&56789:\;<\032!\"#\$%&56789:\;<=.??\@ABCDT|||||||||||||||||||||\032!UVWXYZ[\\]^_`\000\016cdepqrstuv\@\000\000\000{|}
|
||||
+wACQmAQA 0 -1
|
||||
+ARABIQEiAYABJAElASYBJwEoASkBKgEaARsBHAEdAR4BHwEgASEBIgGAASQBJQEmAScBKAEpASsBLAEtAS4BNwE4 0 -1
|
||||
+AQABAwEEAQUBBgEnASgBKQEqASkBKgErASwBLQEuATcBOAE5AToBOwE8AT0BKwEsAS0BLgE3ATgBOQE6ATsBPAE9 0 -1
|
||||
+A98BAgMEBCkpKCkpKSkpKSkpKSkpBikmKSkrKSkpICkpKSkpKQEnBCgpKSkpKSkpKSkGKSYpJDMENA== 0 -1
|
||||
+A2QBAgMEBCkpKSkpKSkpKSkpKSkpKQQEKSkpKSkpKSkpKSkpKSkpKSkMKSkpKSkpKSkpKSkpKSkpKCkHBAgJCiFAKSkpKSkpKSkpKSkpKQcEKSkpKSkpKSkpKTcEODlXOwQ= 0 -1
|
||||
+BBABAgMsLS4A/yoqMgUAAH82NwQ1NjcEODwVFhcGGBkaG/0vEQYYIgQoKQACEu4rLS4vBDCysioqKiAqKio2MC4wKioqKioEIEciIwQkCCYnKQoCEu4rLS4vBDCysgRFKQACEu4rAwAAfyoqICoCEu4rLS4BADCysioqKiAqKioqJSoqKioqKioqEiolJicEPCk= 0 -1
|
||||
+AUABRQFGAU8BUAFRAVIBUwFUAVUBVgFXAVgBWQFaAVsBXAFfAWABYQFiAWMBZAFlAWYBZwFoAWkBagFrAWwBbQFuAW8BcAFxAXIBcwF0AXUBdgF3AXgBeQF6AXsBfAF9AX4BfwA= 64 37 AW4BbwFwAXEBcgFzAXQBdQF2AXcBeAF5AXoBewF8AX0BfgF/AA== 39 n.o.p.q.r.s.t.u.v.w.x.y.z.{.|.}.~.\127
|
||||
+BAAEBQYHBAgJCgsEDA0ODwQQERITBBQVFhcEGBkaGwQcHSEiIwQkJSYnBCgpKisELC0uLwQwMTIzBDQ1NjcEODk6OwQ8PT4/BEBBQkMEREVGRwRISUpLBExNTk8EUFFSUwRUVVZXBFhZWlsEXF1eXwRgYWJjBGRlZmcEaGlqawRsbW5vBHBxcnMEdHV2dwR4eXp7BHx9fn8EgIGCgwSEhYaHBIiJiosEjI2OjwSQkZKTBJSVlpcEmJmamwScnZ6fBKChoqMEpKWmpwSoqao= 32 -1
|
||||
+BAAEBQYHBAgJCgsEDA0kJSYnBCgpKisELC0uLwQwMTIzBDQ1NjcEODk6OwQ8PT4/BEBBQkMEREVGRwRISUpLBExNTk8EUFFSUwRUVVZXBFhZWlsEXF1eXwRgYWJjBGRlZmcEaGlqawRsbW5vBHBxcnMEdHV2dwR4eXp7BHx9fn8EgIGCgwSEhYaHBIiJiosEjI2OjwSQkZKTBJSVlpcEmJmamwScnZ6fBKChoqMEpKWmpwSoqao= 8 -1
|
||||
+BAABAgMEBAUGBwQICQocHR4fBCAhIiMEJCUsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8EQEFCQwRERUZHBEhJSksETE1OTwRQUVJTBFRVVlcEWFlaWwRcXV5fBGBhYmMEZGVmZwRoaWprBGxtHh8EICEiIwQkJSYnBCgpKisELC0uLwSAgYKDBISFhocEiImKiwSMjY6PBJCRkpMElJWWlwSYmZqbBJydnp8EoKGiowSkpaanBKipqqsErK2urwSwsbI= 0 -1
|
||||
+BAAEBQYHBAgJCgsEDA0kJSYnBCgpKisELC0uLwQwMTIzBDQ1NjcEgAA6OwQ8PT4/BEBBQkMEREVGRwRISUpLBExNTk8EUFFSUwRUVVZXBFhZWlsEXF1eXwRgNTY3BDg5OjsEPD0+PwRAQUJDBERFRkcEdHV2dwR4eXp7BHx9fn8EgIGCgwSEhYaHBIiJiosEjI2OjwSQkZKTBJSVlpcEmJmamwScnZ6fBKChoqMEpKWmpwSoqao= 8 -1
|
||||
+BAAEBQYHBAgJCgsEDA0kJSYnBCgpKisELC0uLwQwMTIzBDQ1NjcEODk6OwQ8PT5fBGBhYGMEZGVmZwRoaWprBGxtbm8EcHFycwR0dVZXBFhZWlsEXF1eXwRgYWJjBGRlZmcEaGlqawRsbW5vBHBxcnMEdHV2dwR4eXp7BHx9fn8EgIGCgwSEhYaHBIiJiosEjJGOjwSQkZKTBJSVlpcEmJmamwScnZ6fBKChoqMEpKWmpwSoqao= 8 -1
|
||||
+BOgCAwMD+gPoAgMDAwMDAwMDAwMD+gAMAwMDAwPoF+gCAwMDAwMDA+ICAwP6AAADAwMDAwMDAwMDA/oD6AIDAwMDAwMDAw== 0 -1
|
||||
+BOj6A+gCAwMDAwMDAwMDAwP6AAwDAwMDA+gX6AIDAwMDAwMD4gIDA/oAAAMDAwMDAwMDAwMD+gToAgMDA/oD6AIDAwMDAwMDAwMDA/oADAMDAwMD6BfoAgMDAwMDAwPiAgMD+gAAAwMDAwMDAwMDAwP6A+gCAwMDAwMDAwMSAwP6A+gCAwM= 0 -1
|
||||
+BOj6A+gCAwMDAwAMAwMDAwPoF+gCAwMDAwMDA+LwAwP6AAADAQMDA/oD6AIDAwPoF+gCAwMDAwMDA+LwAwMDAwMD+gMDAwMDAwMDAwMD+gAMAwMDAwPoF+gCAwMDAwMDA+LwAwP6AAADAwMDAwMDAwMDA/oD6AIDAwMDAwMDAwMDAw== 0 -1
|
||||
+BOgDAwgICAgICAgICAgICAgICAgICAgBCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICHQICAgICAEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIdAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI 0 -1
|
||||
+BOgCFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFQMDAwMDAwMJ+gPoAgPwAgM= 0 -1
|
||||
+GxsbGxsAGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsVGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbAxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGyYbGxsbGxsbGxsbGxsbGxsbGxsb 27 -1
|
||||
+BOgCAwMD+gPoAgMDAwMADAMDAwMD6BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAE6AQDAwP6A+gC 0 -1
|
||||
+BOgCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC 0 -1
|
||||
+BOgDAwgIDAgICAjvCAgICAgIAgjCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCAMLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwuXCwsLCwsLCwsLCwsLCwsLCwsLCwsK6wsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCssLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCqMLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwggICAEICAgIf3QICAgICAEICAfwCAgICAgIB+8IEwgIgAgICB8ICAgICBgICAgICAgSCAgICAgICAgICAgICAgfJoAICAgICAgICACAAAAF/+kFCH8ICAgICAgICAgICHQICAgICJwIwqrCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwtLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCpcLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsIICAgBCAgICH90CAgICAgBCAgH8AgICAgICAfvCAgICIAICAgfCAgICAgYCAgICAgIEggICAgICAgICAgICAgH8AgICAgIAQgIB/AICAgICAgICAgICAjwCAgIHwgICAgIGAgICAgICBIICAgICAgICCAACAgICAgICAgICAjeCAgICAgICAgICAgICAgFHyYICAgICAgICAgAgAAABf/pCFpaWlpaWlp6WlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWggICAgBCAgH8AgICAgICAgICAgICPAICAgfCAgICAgYCAgICAgIEggICAgICAgICAgICAgICAgICAgICN4ICAgICAgICAgICAgICAUfJggICAgICAgICACAAAAF/+kIWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpahoaGhoaGhoaGkIaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGf4aGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaTlpaWlpaWlpaWlpaWlpaWlpaWlpaWggICAEICAfwCAgI///CwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwgAACAgH8AgICP//AAAICAgI+QcICAgICAUICAgICAgICAgICAgICAgICAgICAgICAgICAgI//8AAAgICAgICAgICAgIBQgICAgICAgICAgICAkICAgICAgICAgICAgIDA== 0 -1
|
||||
+BOgDAwgIFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcCFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXAAADFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFwgI 0 -1
|
||||
+BOg6OjoIOjo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Mzo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo= 0 -1
|
||||
+BOgDAwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAgQEBAQEBA== 0 -1
|
||||
+BOgDAwgINjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjaeNjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2Np42NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY= 0 -1
|
||||
+AQABAQECAQcBCAEJAQoBCwEMAQECAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARkBGgEbARwBHQEeAR8BIAEjASQBJQEmAScBKAEpASoBKwEsAS0BLgE3ATgBOQE6ATsBPAE9AT4BPw0BDgEPARABEQESARMBFAEXBRgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAS0BLgE3ATgBOQE6ATsBPAE9AT4BPwA= 0 185 AQABAQECAQcBCAEJAQoBCwEMAQECAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARkBGgEbARwBHQEeAR8BIAEjASQBJQEmAScBKAEpASoBKwEsAS0BLgE3ATgBOQE6ATsBPAE9AT4BPw0BDgEPARABEQESARMBFAEXBRgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAS0BLgE3ATgBOQE6ATsBPAE9AT4BPwA= 387 \000.\001.\002.\007.\008.\009.\010.\011.\012.\001.\001\011.\012.\013.\014.\015.\016.\017.\018.\019.\020.\021.\022.\025.\026.\027.\028.\029.\030.\031.\032.#.\$.%.&.'.\(.\).*.+.,.-.\..7.8.9.:.\;.<.=.>.?.\001\014\001\015\001\016\001\017\001\018\001\019\001.\001\023\005\024\001\025\001\026\001\027\001\028\001\029\001\030\001\031\001\032.!.\".#.\$.%.&.'.\(.\).*.+.,.-.\..7.8.9.:.\;.<.=.>.?
|
||||
+AQABAQECAQMBBAEFAQYBJwEoASkBKgEpASoBAQIBOQE6ATsBKwEsAS0BLgE3ATgBOQE6ATsBLQEuATcBOAE5AToBOwE8AQ== 0 -1
|
||||
+BAABAgMEAAAEAAQICQoLBAwNDg8EEBESEwQcHR4fBCAhIiMEJCUmJwQoKSorBCwtLi8EMDEyMwQ0NTY3BDg5OjsEPD0+PwRAQUJDBERFMEcESElLSwRMTU5PBFBRUlMEVFVWVwRYWVpbBFxdXl8EODk6GwQ8PT4/BEBBQkMEREUwRwRISUtLBExNTk8EUFFSUwRUVVZXBFhZWlsEXF1eXwRgYWJjBGRlZmcEaGlqawRsbR4fBCAhIiMEJCUmJwQoKSorBCwtLi8EgIGCgwSEhYaHBIiJiosEjI2OjwSQkZKTBJSVlpcEmJmamwScnaGiAAA= 0 241 BAABAgMEAAAEAAQICQoLBAwNDg8EEBESEwQcHR4fBCAhIiMEJCUmJwQoKSorBCwtLi8EMDEyMwQ0NTY3BDg5OjsEPD0+PwRAQUJDBERFMEcESElLSwRMTU5PBFBRUlMEVFVWVwRYWVpbBFxdXl8EODk6GwQ8PT4/BEBBQkMEREUwRwRISUtLBExNTk8EUFFSUwRUVVZXBFhZWlsEXF1eXwRgYWJjBGRlZmcEaGlqawRsbR4fBCAhIiMEJCUmJwQoKSorBCwtLi8EgIGCgwSEhYaHBIiJiosEjI2OjwSQkZKTBJSVlpcEmJmamwScnaGiAA== 438 \000\001\002\003.\000\000\004\000.\008\009\010\011.\012\013\014\015.\016\017\018\019.\028\029\030\031.\032!\"#.\$%&'.\(\)*+.,-\./.0123.4567.89:\;.<=>?.\@ABC.DE0G.HIKK.LMNO.PQRS.TUVW.XYZ[.\\]^_.89:\027.<=>?.\@ABC.DE0G.HIKK.LMNO.PQRS.TUVW.XYZ[.\\]^_.`abc.defg.hijk.lm\030\031.\032!\"#.\$%&'.\(\)*+.,-\./.\128\129\130\131.\132\133\134\135.\136\137\138\139.\140\141\142\143.\144\145\146\147.\148\149\150\151.\152\153\154\155.\156\157\161\162
|
||||
+BAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQcHR4fBCAhIiMEJCUmJwQoKSorBCwtLi8EMDEyMwQ0NTY3BDg5OjsEPD0+PwRAQUJDBERFRkcESElKSwRMTU5PBFBRUlMEVFVWVwRYWVpbBFxdXl8EYGFiYwRkZWZnBGhpamsEbG0eHwQgISIjBCQlJicEKCkqKwQsLS4vBICBgoME+oWGhwSIOwQ8PQ== 0 -1
|
||||
+BAABAgMEBAgJCgsEDA0gISIjMDEyMwQ0NTY3BDg5OjsEPD0iIwQkJSYnBD8pKisELC0uLwQwMTIzBDQ1NjcEODk6OwQ8PT4/BEBFRkcESElKSwRMTUNPBFBRUlsEVFVWVwRYWVpbBFxNXl8EYGFiYwRkZWZnBGhpamsEbG0eHwQgISIjBCQlJicEKCkqKwQsLScvBICBgoME+oWGhwSIiYqLBDQ1NjcEODk9Pj8E 0 -1
|
||||
+BAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQcHR4fBCAhIiMEJCUmBwQoKSorBCwtLi8EMDEyMwQ0NTY3BDg5OjsEPD0+PwRAQUJDBERFRkcESElKSwRMTU5PBFBRUlMEVFVWVwRYWVpbBCgpKisELC0uLwQwMTIzBDQ1NjcEODk6OwQ8PT4/BEBBQkMEREVGRwRISUpLBExNTk8EUFFSUwRUOwQ8PQ== 0 -1
|
||||
+AgAAAhBiAgAAAhAiAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQIBVwEBAQEBAQEBAQECAVcBAQEBAQEBAQEBAQECAVcBAQEBAQEBFAE= 0 -1
|
||||
+AykpKSkpKSkpKQQEKSkpKSkpKSkpKSkpKSkpDCkMKSkuKSkpKSkpKSkpKSkpKCkG9QgJCiFAKSkpKSn/KSkpKSkAAAEpKQcEKSkpKSkpKSkpKSkpKSkpKQwpKSkpKSkpKSkpKTsEQAApKSkpKCkG9QgJCiFAKSkpKSn/KSkpKSkpKQcEKSkpKSkyKSkpKbckODlXOwRAAD4pBwQgHCkpKSkA 0 162 AykpKSkpKSkpKQQEKSkpKSkpKSkpKSkpKSkpDCkMKSkuKSkpKSkpKSkpKSkpKCkG9QgJCiFAKSkpKSn/KSkpKSkAAAEpKQcEKSkpKSkpKSkpKSkpKSkpKQwpKSkpKSkpKSkpKTsEQAApKSkpKCkG9QgJCiFAKSkpKSn/KSkpKSkpKQcEKSkpKSkyKSkpKbckODlXOwRAAD4pBwQgHCkpKSkA 365 \)\)\).\)\)\)\)\)\004\004\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\012\)\012\)\)\.\)\)\)\)\)\)\)\)\)\)\)\)\(.\006\245\008\009\010!\@\)\)\)\)\)\255\)\)\)\)\)\000\000\001\)\)\007\004\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\).\)\)\)\)\)\)\)\)\)\)\)\;.\@\000\)\).\)\(\)\006\245\008\009\010!\@\)\)\)\)\)\255\)\)\)\)\)\)\)\007\004\)\)\)\)\)2\)\)\)\)\183\$89W\;.\@\000>\).\004\032\028\)\)\)\)
|
||||
+AgAAAhBiAQEBAQIQYgIiAQEBAQEBAQEBAQEBAQECAVcBAQEBAQEBAQEBAgFXAQEBAQEBAQEBAQEBAgFXAUEBAQEBAQECAVcBAQE= 0 -1
|
||||
+AgBAAhAiAhBAAhAiAhATBAEVFhcEGBkaGwQUHR4fBCApIiMEJCTrJwQIKSorBAgJ/38EDA0SDwQQERITBBQVFhcEGBkaGwQUHR4fBCAp 0 -1
|
||||
+AgAAAhBiAgAAAhAiAQEBAgFXAhBiAgAAAhABAQEBAQIBVwEBAQEBAQIQYgIAAAIQIgEBAQEBAQIBVwEBAgFXAQEBAQIBVwFBAQEBAQEBAgFXAQ== 0 -1
|
||||
+AgBAAhAiAhBAAhAiAhAMDRIPBBAIEhMEARUWFwQYGRobBBQdHh8EICkiIwQkJAAAAgBAAhAiAhBAAhAiAhAiBgQICf9/BAwNEg8EEAgSEwQBFRYXBBgZGhsEFB0eHwQgKSIjBCQk6ycECCkAAAE= 0 108 AgBAAhAiAhBAAhAiAhAMDRIPBBAIEhMEARUWFwQYGRobBBQdHh8EICkiIwQkJAAAAgBAAhAiAhBAAhAiAhAiBgQICf9/BAwNEg8EEAgSEwQBFRYXBBgZGhsEFB0eHwQgKSIjBCQk6ycECCkA 344 \000\@.\016\".\016\@.\016\".\016\012.\018\015\004\016\008\018\019\004\001\021\022\023\004.\025\026\027\004\020\029\030\031\004\032\)\"#\004\$\$\000\000\002\000\@\002\016\".\016\@.\016\".\016\".\004\008\009\255\127\004.\013\018\015\004\016\008\018\019\004\001\021\022.\004\024\025\026\027\004\020\029\030\031\004\032\)\"#\004\$\$\235'\004\008\)
|
||||
+AgAfBCApJOsnBAgpKisELC0uLwQwQAIQIgIQQAIQIgIQIgYECAAAAQn/fwQMDRIPBBAIEhMEARUWFwQYGRobBBQdHh8EICkiIwQkJOsnBAgpKisELC0xMjMENDU2IgYECAn/fwQMDRIPBBAREhMEFBEWFwQYGRobBBQdHh8EICkiIwQvJOsnBAgpKisELC0uLwQwMTIzBDRCNjcEODk6OwQ8 0 -1
|
||||
+AgBAAhAiAhBAAhAiAhAiAhAiBgQICR0eHwQgKSIjBCQkAAACAEACECICEEACECICECIGBAgJ/38EDA0SDwQQCBITBAEVFhcEGBksLS6KBDAxMjMENDU2IgYECAn/fwQMDRIPBBAREhMEFBUQAAQYGRobBBQdHh8EICkiIwQkJOsnBAgpKisELC0uLwQwMTIzBDRCNjcEOHk6OwQ86ycECCkAAAEsLS4vBDAGBAgJ/38EDBAREhMEFBUQ 0 -1
|
||||
+AgBAAhAiAhBAAhAiAhAiBgQICf9/BAwNEg8EEAgSEwQBFRYXBBgZGhsEFB0eHwQgKSIjBCQkAAACAEACECICEEACECICECIGBAgJ/38EAhAiAhBAAhAiAhAiBgQICf9/BAwNEg8EEAgSEwQBFRYXBBgZGhsEFB0eHwQgKSIjBCQkAAACAEACECICEEACECICECIGBAgJ/38EDA0SDwQQCBITBAEVFhcEGBkagAQUHR4fBCApIiMEJCTrJwQIKQAAAQw= 0 191 AgBAAhAiAhBAAhAiAhAiBgQICf9/BAwNEg8EEAgSEwQBFRYXBBgZGhsEFB0eHwQgKSIjBCQkAAACAEACECICEEACECICECIGBAgJ/38EAhAiAhBAAhAiAhAiBgQICf9/BAwNEg8EEAgSEwQBFRYXBBgZGhsEFB0eHwQgKSIjBCQkAAACAEACECICEEACECICECIGBAgJ/38EDA0SDwQQCBITBAEVFhcEGBkagAQUHR4fBCApIiMEJCTrJwQIKQA= 603 \000\@.\016\".\016\@.\016\".\016\".\004\008\009\255\127\004.\013\018\015\004\016\008\018\019\004\001\021\022.\004\024\025\026\027\004\020\029\030\031\004\032\)\"#\004\$\$\000\000\002\000\@.\016\".\016\@.\016\".\016\".\004\008\009\255\127\004.\016\".\016\@.\016\".\016\".\004\008\009\255\127\004.\013\018\015\004\016\008\018\019\004\001\021\022.\004\024\025\026\027\004\020\029\030\031\004\032\)\"#\004\$\$\000\000\002\000\@.\016\".\016\@.\016\".\016\".\004\008\009\255\127\004.\013\018\015\004\016\008\018\019\004\001\021\022.\004\024\025\026\128\004\020\029\030\031\004\032\)\"#\004\$\$\235'\004\008\)
|
||||
+AgAAAgBAAhAiAhBAAhAdHh8NNSkiGQQkJAAA/wBAAhAiAhBAAhAiAhAiBgQQIgIQQAIQIgIQHwQgKSIjBAQkAAACAEACEAACEEACECICBBAIEhMEARUWFwQYOhobBBQdHh8mNSkiGQQkJAAAAgBAAhAiAhBAAhAiAhAiAhBAAhAiAhAfBCApIiMEJCQAAAIAQAIQIgIQQAIQIgIQIgYECAJAAgIC/gICOwA= 0 -1
|
||||
+BAABAwMEAwjnJwsEDA0OHwTpASMBAQEBAQEBAADm 0 29 BAABAwMEAwjnJwsEDA0OHwTpASMBAQEBAQEBAAA= 88 \000\001\003\003.\003\008\231'.\004\012\013\014\031\004\233\001#\001\001.\001.\001.\000
|
||||
+BAAAAQABAgMEBQAAAQU= 0 12 BAAAAQABAgMEBQAA 35 \000\000\001\000.\002.\004\005\000
|
||||
+AQAcqAT1BQbmAwgAAAEEDA0ODwQAABHm/LkzKREyAQDo+w== 0 32 AQAcqAT1BQbmAwgAAAEEDA0ODwQAABHm/LkzKREyAQA= 110 \000.\168\004\245\005\006\230\003\008\000\000\001\004\012\013\014\015\004\000\000\017\230\252\1853\)\0172\001
|
||||
+AgICAgICAgICAgICAgIAAAF/ 0 16 AgICAgICAgICAgICAgIAAA== 45 \002\002.\002\002.\002\002.\002\002.\002\000
|
||||
+BBwcHAwcHBwcHBwc9KgMAQEBQBwcHBwcAcsRfX19fX76EwAAARw= 0 35 BBwcHAwcHBwcHBwc9KgMAQEBQBwcHBwcAcsRfX19fX76EwA= 113 \028\028\028\012.\028\028\028\028\028\028\244\168\012\001\001\001\@\028\028\028\028\028\001\203\017}}}}~\250\019
|
||||
+BEAfPj4+HFBRUlMEVAAAASYmJiYmJiYmJiYmrSYVJiZnBGhpP2sAAABhYmMfZGUmJhgmJiYmJjImJiYmJiYmJiYmJiYmJiYmJiatJhUmJiZmZwRoaT9rACYmJiYmJq0mJiYmJmZnBGhpQAAAAQA= 0 108 BEAfPj4+HFBRUlMEVAAAASYmJiYmJiYmJiYmrSYVJiZnBGhpP2sAAABhYmMfZGUmJhgmJiYmJjImJiYmJiYmJiYmJiYmJiYmJiatJhUmJiZmZwRoaT9rACYmJiYmJq0mJiYmJmZnBGhpQAAA 172 \@\031>>.\028PQRS\004T\000\000\001&&&&&&&&&&&\173&\021&&g\004hi?k\000\000\000abc\031de&&\024&&&&&2&&&&&&&&&&&&.&&&&&\173&\021&&&fg\004hi?k\000&&&&&&\173&&&&&fg\004hi\@\000
|
||||
+BOgD6wcINjY2NjY2MzY2NjY2NgD2ABA2UDY2NjY2NjY2NjY2NjY2JDY2NjYAAP//AAA2AAABNgAQNlg2NjaHNjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjYAgAAAKDY2zjY2Np42NjY2Njb/////6DY2QzY2NjYgAQA2 0 125 BOgD6wcINjY2NjY2MzY2NjY2NgD2ABA2UDY2NjY2NjY2NjY2NjY2JDY2NjYAAP//AAA2AAABNgAQNlg2NjaHNjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjYAgAAAKDY2zjY2Np42NjY2Njb/////6DY2QzY2NjYgAQA= 225 \232\003\235\007.66666636.6666\000\246\000\0166P66666666666666\$6666\000\000\255\255\000\0006\000\000\0016\000\0166X666\135666666.6666666666666666666666\000\128\000\000\(66\206666\158666666\255\255\255\255\23266C6666\032\001
|
||||
+BCYmJiYmNjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2EhISEhISEhISEhISEhISEhISEhISEhISEhI2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2Nhw2njY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2HTY2NjZINjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjaeNjY2NjY2NjY2NjY2NjY2NjY2NjY2NiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmNjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2Ng== 0 -1
|
||||
+BOgAAAEDAwgINjY2NgAAAMAfNjY2NjYkFTY0NjY2NjY2NjYAEDY2Nlg2NjY2NjY2NgAAAQABNjY2RTY2FTYABDY2NjY2NjY2NjY0Nlg2NjY2NjY2NgAAATY2NgAAAADAHzY2NjY2JBU2NDY2NjY2NjY2NjY2NjY2AAAAAQQ2NjY2NjY2NjY2NjY2AAAAAQAbS2xLS0tLS0tLATa+H0YUNjY2NgAANjYkNjY0NjY2NjY2NjY2NjY2NjY2NjYkNjZ/dnZ2dnZ2dnZ2dnZ2dnZ2QTYBNh4EAED/NjY2NjQ2AAABAAABgDY2FjY2NtDQ0NDQ0NDQ0DPQ0NDQ0NDQ0NDQ0JDQABQUFBQ2NjY2NjY2WDY2NjZNNjZRABEBAAABNiU9PT09NgBAAAGANj0QAPv7+/v7+/v7+/sg+/v7+0JEAAABNjYyNjY= 0 -1
|
||||
+BOgDAwgINjZWNhU2NgE2NjY2NjY2NjY2NjY2UjY2AzY2NjY2NjY2NjYlNkk2NjY2NjY2NjY2NiIiIiIiIkAiNugDNjY2NjY2NjY2NjZDNjY2NpiYmDY2NjYiICIiIiIiIiIiIiIiIiJJNjY2NjY2NjY2NjYiIiIiIiJAIjboAzYiIiIiIiIiIiIiIiI2NjY2NjY2NjZkNjY2NjY2NjZNNgAAATY2NjYCAAQANjY2NgAQAIAAADY= 0 180 BOgDAwgINjZWNhU2NgE2NjY2NjY2NjY2NjY2UjY2AzY2NjY2NjY2NjYlNkk2NjY2NjY2NjY2NiIiIiIiIkAiNugDNjY2NjY2NjY2NjZDNjY2NpiYmDY2NjYiICIiIiIiIiIiIiIiIiJJNjY2NjY2NjY2NjYiIiIiIiJAIjboAzYiIiIiIiIiIiIiIiI2NjY2NjY2NjZkNjY2NjY2NjZNNgAAATY2NjYCAAQANjY2NgAQAIAA 299 \232\003\003\008.66V6\02166\001.666666666666R66\0036666666666%6I66666666666\"\"\"\"\"\"\@\"6\232\003666.6666666C6666\152\152\1526666\"\032\"\"\"\"\"\"\"\"\"\"\"\"\"I66666666666\"\"\"\"\"\"\@\".\232\0036\"\"\"\"\"\"\"\"\"\"\"\"666666666d66666666M6\000\000\0016666\002\000\004\0006666\000\016\000\128
|
||||
+BOgAATY2NjY2fwA2NjY2NjY2NjY2NjY2NjY2NjY2Njb/ADY2NjY2NjY2NjY5NjY2AAAAgFQ2NjY2NjY2NjY2UzY2NjY2tzY2NjY2NjY2NjY2NjY2NjY2NjY2NgAAATY2O0o2NjY2NjY2NjY2NjY2NjYAEDY2OTY2NgAAAIBUNjY2NjY2NjY2NjY2NjY2/zY2NlU2NjY2NjY2NjY2NjY2Nis2NgABAACA/zY2NjY2NjY2NjY2Np42NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2IjY2NjY2IDY2NjY2NjY2NjY2NjY2NjY2IjY2NjY2IDY2NjY2NjY2NjY2IzY2NjY2NjY2NjY2NjZINjY2NjYTDAwMDAwMDAwMDAYMDAwMDAwMDAwMDAwMDDY2NjY2JTY2NjY2NjY2NjY2Np42NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY= 0 -1
|
||||
+BOgAAAABAAgINjY2NgAAAMAQNjY2NjYAEDY2Nlg2NjY2NjY2NgAAAQABNjY2RTY2FTY2NjY2NjQ2WDY2NjY2NjY2AAABNjY2AAD/8cAfNjY2NjYkFTYUNjY2NjY2NjY2NgAAAAEENjY2NjY2NjY2NjY2NgAAAAEAG0tsS0tLS0tLSwE2vh9GFAAAATYAADY2JDY2NDY2NjY2NjY2NnZ2dnZ2QTYBNh4EAED/NjY2NjQ2AAABAAABgDY2FjY2NtDQ0NDQ0NDQ0DPQ0NDQ0NDQ0EDQ0JDQABQUFBQ2NjY2NjY2WDY2NjZNNjZRABEBAAABNjY2RTY5NjY2JT09PT02ADY0NgAAAYA2PRAA+/v7+/v7+w== 0 -1
|
||||
+BOgDCAg2NjY2AAAAwB82NjY2NiQVNjQ2NjY2NjY2NgAQNgAAATY2NjY2NjY2AAABAAE2NjZFNjYVNgAENjY2NjY2JzY2NjQ2WDY2NjY2NjY2AAABNjY2AAAAAMAfNjY2NjYkFTY0NjY2NjY2NjY2NjY2NjYAAAABBDY2NjY2NjY2NjY2NjYAAAABABtLbEtLS0tLS0sBAAABRhQ2gDY2AAA2NiQ2NjQ2NjY2NjY2NjY2NjY2NjY2NiQ2Nn92dnZ2dnZ2dnZ2dnZ2dnZBNgE2HgQAQP82NjY2NDYAAAEAAAGANhkWNjY20NDQ0NDQ0NDQM9DQ0NDQ0NDQ0NDQkNAAFBQUFDY2NjY2NjZYNjY2Nk02NlEAEQEAAAEjNjZFNjk2NjYlPT09VDYAQP82NjY2NDYAAAGANj0QAPv7+/v7+/v7+/sg+/v7+0JEAAABNgsLCwsLCwsLCwsLCwsLCws= 0 -1
|
||||
+wMAAAcDAwMDANjY2NgAAGsAfNjY8NjYkFTY0NjYyNjY2NjYAEDY2S0tLS0sBFr4fRhQ2NjY2AAA2Nlg2djw2NjY2NgAAAQABNjY2PDY2JBU2BLM2ojY2NjY2Bf//BUU2OTY+NiU9PT0BNjY2AAAAAQA2NDY2MjY2NjY2ABA2NktLS0AAAAFLATa+H0YUwB82Nn7s7OzsEBQUDDY2NgAAATY2NjZYNjY2Nk02NlEAEQEANjYABf//BUU2OTY2NiU9PT09NgAAAfI//3Y2AAABNjY0NgAAAYA2PRAA+/v7+/v7+/v///8= 16 -1
|
||||
+BOgAAGQB4ggISTY2NgAEQMAAAAAAATY2NjY6JDY2NgAQNjZKWDYgNjY2AAA2NjY2Njw2ATYYNkUAAAIQ//9/TExMTExMTExMTExMTExMTExMTExMTENMTBMTExMTEykTExMTEyYLAAEUFAAABjY2NjYAAAE2NhwAAAABAAABBDY2NtAAAzY2NgX//wU2NgD7SDYkNjk5OTk5OTk5OTk5OTk5OTk5OTk5PTY0NjY2NjY2NiQAAAE2Nn82cXZ2dnZ2dnZ20Coq0DPQ0P/QM9DQ//9//9AAAAHSu9DRkNAABgAA/xQUAAAGfzYkNjY0Nks2AAQeVTb/Nn////82TENMTBMTExMTEykTExMTEyYTACATNjYmfwLuAaMYAAABgDY2SlggIDY2NiQAAAE2Nn82cXZ2dnZ2dnZ20Co2Pk4ABQABADcyNjY= 0 -1
|
||||
+BOgAAGQB4ggISTY2NgBEQMAAAADOzs7Ozs6wzs7O//9/TExMTExMTExMTExMTExMTExMTExMTENMTBMTEwAAARMTEy0T1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NQcExMTJgsAARQeAAAGNzY2WAAAATY2HAAAAAEAAAEENhY20AADNjY2Bf//BTY2APtIACQ2OTk5OTk5OTk5OTk5OTk5OTk5OTk9NjQ2NjY2NjY2GwAAATY2fzZxdnZ2dnZ2dnbQKirQM9DQ/9Az0ND//3//0AAA5tK70NGQ0AAGAAD/FBQAEAB/NiQ2NjQ2SzY0NjY2NjY2NiRVNv82f+4BoxgAAAGANjZKVSAgNjY2JAAAATY1fzZxdnZ2dnZ2dnbQKjY+TeYFACEANzI2OTk9NjQ2NjY2NjY2GwAAATY2fzZxdnZ2dnZ2dnY= 0 -1
|
||||
+AgACAgICAgACAgICAgLXAgICAgICAuEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAAL0 0 52 AgACAgICAgACAgICAgLXAgICAgICAuEBAgICAgICAgICAgICAgICAgICAgICAgICAgICAA== 153 \000\002.\002\002.\000\002.\002\002.\002\215.\002\002.\002\002.\225\001.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002
|
||||
+AgwAAhAiAgAAAhAiAQECAVcBAQEBAQEBAQEBAgFXAQEBAQEBAQEBAQEBAgFXAQEBAQA= 0 50 AgwAAhAiAgAAAhAiAQECAVcBAQEBAQEBAQEBAgFXAQEBAQEBAQEBAQEBAgFXAQEBAQA= 120 \012\000.\016\".\000\000.\016\".\001.\001W.\001.\001.\001.\001.\001.\001W.\001.\001.\001.\001.\001.\001.\001W.\001.\001
|
||||
+AgAAAhAiAgAAAhAiAQECAVcBAQEBAQEBAQEBAgFXAQEBAQEBARQBAQEBAQIBAQEBAQEBAQIBSgEBAQEBAQEBAQEBAQEBAgFXAVcBAQEBAQEBAQEBAQEAAAEC 0 87 AgAAAhAiAgAAAhAiAQECAVcBAQEBAQEBAQEBAgFXAQEBAQEBARQBAQEBAQIBAQEBAQEBAQIBSgEBAQEBAQEBAQEBAQEBAgFXAVcBAQEBAQEBAQEBAQEA 208 \000\000.\016\".\000\000.\016\".\001.\001W.\001.\001.\001.\001.\001.\001W.\001.\001.\001.\020.\001.\001.\002.\001.\001.\001.\001.\001J.\001.\001.\001.\001.\001.\001.\001.\001W.W.\001.\001.\001.\001.\001.\001
|
||||
+BAAEBQYHBAgJCg4PBBAREhMEFBUWFwQYGRobBBwdHh8EICEiIwQkJSYnBCgpKisELC0uLwQwMTIzBDQ1NjcEODk6OwQ8PT4/GEBBQkMEREVGRwRISUpLBExNTk8EUFFSUwRUVVZXBFhZWlsEXF1eXwRgYWJjBGRlZmcEaGlqawRsbW5vBHBxcnMEdHV2dwR4eXp7BHx9fn8EgIGCgwSEhYaHBIiJiosEjI2OjwSQkZKTBJSVlpcEmJmamwScnZ6fBKChoi0EpKWmpwSoqaqrBKytrq8EsLGyswS0tba3BLi5ursEvL3BwgAA 8 225 CQoODwQQERITBBQVFhcEGBkaGwQcHR4fBCAhIiMEJCUmJwQoKSorBCwtLi8EMDEyMwQ0NTY3BDg5OjsEPD0+PxhAQUJDBERFRkcESElKSwRMTU5PBFBRUlMEVFVWVwRYWVpbBFxdXl8EYGFiYwRkZWZnBGhpamsEbG1ubwRwcXJzBHR1dncEeHl6ewR8fX5/BICBgoMEhIWGhwSIiYqLBIyNjo8EkJGSkwSUlZaXBJiZmpsEnJ2enwSgoaItBKSlpqcEqKmqqwSsra6vBLCxsrMEtLW2twS4ubq7BLy9wcIA 520 \010\014\015\004\016\017\018\019\004.\021\022\023\004\024\025\026\027\004\028\029\030\031\004\032!\"#\004\$.&'\004\(\)*+\004,-\./\0040123\0044567\00489:\;\004<=>?\024\@ABC.DEFG.HIJK.LMNO.PQRS.TUVW.XYZ[.\\]^_.`abc.defg.hijk.lmno.pqrs.tuvw.xyz{.|}~\127.\128\129\130\131.\132\133\134\135.\136\137\138\139.\140\141\142\143.\144\145\146\147.\148\149\150\151.\152\153\154\155.\156\157\158\159.\160\161\162-.\164\165\166\167.\168\169\170\171.\172\173\174\175.\176\177\178\179.\180\181\182\183.\184\185\186\187.\188\189\193\194
|
||||
+AgAAAhBiAgAAAhAiAQECEGICAQIBVwEBAhBiAgAAAhAiAVcBAgFXAQECAVcBAQEBAgFXAAAB 0 52 AgAAAhBiAgAAAhAiAQECEGICAQIBVwEBAhBiAgAAAhAiAVcBAgFXAQECAVcBAQEBAgFXAA== 116 \000\000.\016b.\000\000.\016\".\001.\016b.\001\002.W.\001.\016b.\000\000.\016\".W.\002.W.\001.\001W.\001.\001.\001W
|
||||
+AgAfBCApIiMEJAgpKisELC0uLwQwQAIQIgIQQAIQIgIQIgYECAAAAQn/fwQMDRIPBBAIEhMEiRUWFwQYGRobBBQdHh8EICkiIwQkJOsnBAgpKisELC0uLwQwMTIzBDQ1NiIGBAgJ/38EDA0SDwQQERITBBQRFhcEGBkaGwQUHR4fBCApIiMELyTrJwQIKSorACw= 0 145 AgAfBCApIiMEJAgpKisELC0uLwQwQAIQIgIQQAIQIgIQIgYECAAAAQn/fwQMDRIPBBAIEhMEiRUWFwQYGRobBBQdHh8EICkiIwQkJOsnBAgpKisELC0uLwQwMTIzBDQ1NiIGBAgJ/38EDA0SDwQQERITBBQRFhcEGBkaGwQUHR4fBCApIiMELyTrJwQIKSorAA== 432 \000\031.\032\)\"#.\$\008\)*.\004,-\./\0040\@\002\016\"\002\016\@\002\016\"\002\016\"\006\004\008\000\000\001\009\255\127\004\012\013\018\015\004\016\008\018\019\004\137\021\022.\004\024\025\026\027\004\020\029\030\031\004\032\)\"#\004\$\$\235'\004\008\).+\004,-\./\0040123\004456\"\006\004\008\009\255\127\004\012\013\018\015\004\016\017\018\019\004\020\017\022\023\004\024\025\026\027.\020\029\030\031.\032\)\"#./\$\235'.\008\)*+
|
||||
+AgAAAgBAAhAiAhBAAhAiAhAiBgQICf9/BAwNEg8EEAgSEwQBFRYXBBg6GhsECx0eHw01KSIZBCQkAAD/AEACECICEEACECICECIGBBAiAhBAAhAiAhAfBCApIiMEBCQAAAIAQAIQAAIQQAIQIgIQIgIQIgYECAn/fwQMDRIPBBAIEhMEARUWFwQYFB0eHyY1KSIZBCQkAAACDkACECICEEACECICECICEEACECICEB8EICkiIwQkJAAAAgBAAhAiAhBAAhAiAhAAAA== 0 202 AgAAAgBAAhAiAhBAAhAiAhAiBgQICf9/BAwNEg8EEAgSEwQBFRYXBBg6GhsECx0eHw01KSIZBCQkAAD/AEACECICEEACECICECIGBBAiAhBAAhAiAhAfBCApIiMEBCQAAAIAQAIQAAIQQAIQIgIQIgIQIgYECAn/fwQMDRIPBBAIEhMEARUWFwQYFB0eHyY1KSIZBCQkAAACDkACECICEEACECICECICEEACECICEB8EICkiIwQkJAAAAgBAAhAiAhBAAhAiAhAAAA== 593 \000\000.\000\@.\016\".\016\@.\016\".\016\".\004\008\009\255\127\004.\013\018\015\004\016\008\018\019\004\001\021\022.\004\024:\026\027\004\011\029\030\031\0135\)\"\025\004\$\$\000\000\255\000\@.\016\".\016\@.\016\".\016\".\004\016\"\002\016\@.\016\".\016\031.\032\)\"#.\004\$\000\000.\000\@.\016\000.\016\@.\016\".\016\".\016\".\004\008\009\255\127\004.\013\018\015\004\016\008\018\019\004\001\021\022.\004\024\020\029\030\031&5\)\"\025\004\$\$\000\000\002\014\@\002\016\"\002.\@\002\016\"\002\016\"\002\016\@\002\016\"\002\016\031.\032\)\"#.\$\$\000\000.\000\@.\016\".\016\@.\016\".\016\000
|
||||
+AgAAAgBAAhAiAhBAAhAiAhAiBgQICf9/BAwNEg8EEAgSEwQBFRYXBBg6GhsEC4AAAAA1KSIZBCQkAAD/AEACECICEEACECICECIGBBAiAhBAAhAiAhAfBCApIiMEBCQAAAIAQAIQAAIQQAIQIgIQIgYECAICAgICECICEEACECICECIGBAgJ/38EDA0SDwQQCBITBAEVFhcEGDoaGwQUHR4fJjUpIhkEJCQAAAIAQAIQIgIQQAIQIgIQIgIQQAIQIgIQHwQgKSIjBCQkAAACAEACECICEEACECICECIGBAgCQAICAv4CADsA 0 232 AgAAAgBAAhAiAhBAAhAiAhAiBgQICf9/BAwNEg8EEAgSEwQBFRYXBBg6GhsEC4AAAAA1KSIZBCQkAAD/AEACECICEEACECICECIGBBAiAhBAAhAiAhAfBCApIiMEBCQAAAIAQAIQAAIQQAIQIgIQIgYECAICAgICECICEEACECICECIGBAgJ/38EDA0SDwQQCBITBAEVFhcEGDoaGwQUHR4fJjUpIhkEJCQAAAIAQAIQIgIQQAIQIgIQIgIQQAIQIgIQHwQgKSIjBCQkAAACAEACECICEEACECICECIGBAgCQAICAv4CAA== 664 \000\000.\000\@.\016\".\016\@.\016\".\016\".\004\008\009\255\127\004.\013\018\015\004\016\008\018\019\004\001\021\022.\004\024:\026\027\004\011\128\000\000\0005\)\"\025\004\$\$\000\000\255\000\@.\016\".\016\@.\016\".\016\".\004\016\"\002\016\@.\016\".\016\031.\032\)\"#.\004\$\000\000.\000\@.\016\000.\016\@.\016\".\016\".\004\008\002\002\002\002.\016\".\016\@.\016\".\016\".\004\008\009\255\127\004.\013\018\015\004\016\008\018\019\004\001\021\022.\004\024:\026\027\004\020\029\030\031&5\)\"\025\004\$\$\000\000\002\000\@.\016\".\016\@.\016\".\016\".\016\@.\016\".\016\031.\032\)\"#.\$\$\000\000.\000\@.\016\".\016\@.\016\".\016\".\004\008\002\@\002\002.\254\002
|
||||
+AgAAAhBiAgAAAhAiAQECAVcBAQIBVwIQYgIAAAIQYgIAAAIQIgEBAgFXAQECAVcCEGICAAACEAECAAACEGICAAACECIBAQIBVwEBAgFXAhBiAgAAAhBiAgAAAhAiAQECAVcBAQIBVwIQYgIAAAIQAQIBVwAAAQ== 0 116 AgAAAhBiAgAAAhAiAQECAVcBAQIBVwIQYgIAAAIQYgIAAAIQIgEBAgFXAQECAVcCEGICAAACEAECAAACEGICAAACECIBAQIBVwEBAgFXAhBiAgAAAhBiAgAAAhAiAQECAVcBAQIBVwIQYgIAAAIQAQIBVwA= 278 \000\000.\016b.\000\000.\016\".\001.\001W.\001.\001W.\016b.\000\000.\016b.\000\000.\016\".\001.\001W.\001.\001W.\016b.\000\000.\016\001.\000\000.\016b.\000\000.\016\".\001.\001W.\001.\001W.\016b.\000\000.\016b.\000\000.\016\".\001.\001W.\001.\001W.\016b.\000\000.\016\001.\001W
|
||||
+AQAfBCApIiMEJCTrJ3//BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBf//KwQsLS4vBAAAAQAAAQ== 0 177 AQAfBCApIiMEJCTrJ3//BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBf//KwQsLS4vBAAAAQAA 598 \000.\004\032\)\"#\004\$\$\235'\127\255\005\005\005\005\005\005\005\005\005\005\005\005\005\005\005\005\005\005\005.\005\005\005\005\005.\005\005\005\005\005.\005\005\005\005\005.\005\005\005\005\005.\005\005\005\005\005.\005\005\005\005\005.\005\005\005\005\005.\005\005\005\005\005.\005\005\005\005\005.\005\005\005\005\005.\005\005\005\005\005.\005\005\005\005\005.\005\005\005\005\005.\005\005\005\005\005.\005\005\005\005\005.\005\005\005\005\005.\005\005\005\005\005.\005\005\005\005\005.\005\005\005\005\005.\005\005\005\005\005.\005\005\005\005\005.\005\005\255\255+.,-\./.\000\000\001\000
|
||||
+AgAABgYGBgYcBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBAYGBgYGBgYGBgYGBgQGBgYGBgYGBgYGBgYGBgYGBkAGBgYQBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGZAYGBgYGBgYGsgYGBgYGBgYGBgYGBgYFBgYGBgYGBgYGBgYGGgYGBgYGBgYGBgYGBhMGBgYGBgAgBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgboIR4fBCApIiMELyTrJwQIKSorACw= 0 241 AgAABgYGBgYcBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBAYGBgYGBgYGBgYGBgQGBgYGBgYGBgYGBgYGBgYGBkAGBgYQBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGZAYGBgYGBgYGsgYGBgYGBgYGBgYGBgYFBgYGBgYGBgYGBgYGGgYGBgYGBgYGBgYGBhMGBgYGBgAgBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgboIR4fBCApIiMELyTrJwQIKSorAA== 821 \000\000.\006\006\006\006\028\006.\006\006\006\006\006\006.\006\006\006\006\006\006.\006\006\006\006\006\006.\006\006\006\006\006\006.\004\006\006\006\006\006.\006\006\006\006\006\006.\006\006\006\006.\006\006\006\006\006\006.\006\006\006\006\006\@.\006\006\016\006\006\006.\006\006\006\006\006\006.\006\006\006\006\006\006.\006\006\006\006\006\006.\006\006\006\006\006\006.\006\006\006\006\006\006.\006\006\006\006\006\006.\006\006d\006\006\006.\006\006\006\006\178\006.\006\006\006\006\006\006.\006\006\006\006\005\006.\006\006\006\006\006\006.\006\006\006\026\006\006.\006\006\006\006\006\006.\006\006\019\006\006\006.\006\000\032\006\006\006.\006\006\006\006\006\006.\006\006\006\006\006\006.\006\006\006\006\006\006.\006\006\006\006\006\006.\006\006\006\006\006\006.\006\006\232!\030\031.\032\)\"#./\$\235'.\008\)*+
|
||||
+AgAfBCApIiMEJCTrJwQIKSqrBCwtLi8EMEECAB8EBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcGBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcOBwcHBwczMzMaOzMzMzMzMzMzMzMzMwcHBwcHBwcHBwcHBwcHBwcHBw4HBwcHBwcHIQcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHFwcHBwcHBwcHBwcHBwIQIgcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcXBwcHBwcHBwcHBwcHAhAiAhAiBi4vAAABBDAx+X8EDA0SDxAiAhAiBi4vBDAxKjMENDU2IgYECAn5fwQMDRIPBCozBAcHBwcHBwcHBwcHBwcHBwcQERITBBQREkAAARYXMzMzMzMzMzMRMzMzMzMzM/9/EwQUERYXBBgkGhsEFB0CECIGBAgJ+X8EDCcSDwQQERITBEAAFhbogAAAGwQUHQAQMwQ0MX/+//8ICQcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHDgcHBwcHBwchBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcXBwcHBwcHBwcHBwcHBwcHfwAEJDQdAhAiAhBAAhAiAhAiEkAAARYXBBgZGhsEFB0gHwAzMzM= 0 -1
|
||||
+AgQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAQQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBOUDBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBATlAwQEBAQEBAQEBAQEBAQAAA== 0 165 AgQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAQQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBOUDBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBATlAwQEBAQEBAQEBAQEBAQA 554 \004\004.\004\004\004\004.\004\004\004\004.\004\004\004\004.\004\004\004\004.\004\004\004\004.\004\004\004\004.\004\004\004\004.\004\004\004\004.\004\004\000\000.\004.\004\004\004\004.\004\004\004\004.\004\004\004\004.\004\004\004\004.\004\004\004\004.\004\004\004\004.\004\004\004\004.\004\004\004\004.\004\004\004\004.\004\229\003\004.\004\004\004\004.\004\004\004\004.\004\004\004\004.\004\004\004\004.\004\004\004\004.\004\004\004\004.\004\004\004\004.\004\004\004\004.\004\004\004\004.\004\004\004\229.\004\004\004.\004\004\004\004.\004\004\004\004
|
||||
+AgICAgICAgICAgICAgICAg8CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiMELyTrJwQIKSorACw= 2 119 AgICAgICAgICAgICAgIPAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIjBC8k6ycECCkqKwA= 337 \002\002.\002\002.\002\002.\002\002.\002\015.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\"#./\$\235'.\008\)*+
|
||||
+BAABAgMEAAAEAAQICQoLBAwNDg8EEBESEwQcHR4fBCAhIiMEJCUmJwQoKSorBCwtLi8EMDEyMwQ0NTY3BDg5OjsEPD0+PwRAQUJDBERFMEcESElLSwRMTU5PBFBRUlMEVFVWVwRYWVpbBFxdXl8EODk6GwQ8PT4/BEBBQkMEREV/RwRISUtLBExNTk8EUFFSUwRUVVZXBFhZWlsEXF1eXwRgYWJjBGRlZmcEaGlqawRsbR42BCAhIiMEJCUmJwQoKSorBCwtLi8EgIGCgwSEhYaHBIiJiosEjI2OjwSQkZKTBJSVlpcEmJmamwScnZ6fBKChogAA 0 246 BAABAgMEAAAEAAQICQoLBAwNDg8EEBESEwQcHR4fBCAhIiMEJCUmJwQoKSorBCwtLi8EMDEyMwQ0NTY3BDg5OjsEPD0+PwRAQUJDBERFMEcESElLSwRMTU5PBFBRUlMEVFVWVwRYWVpbBFxdXl8EODk6GwQ8PT4/BEBBQkMEREV/RwRISUtLBExNTk8EUFFSUwRUVVZXBFhZWlsEXF1eXwRgYWJjBGRlZmcEaGlqawRsbR42BCAhIiMEJCUmJwQoKSorBCwtLi8EgIGCgwSEhYaHBIiJiosEjI2OjwSQkZKTBJSVlpcEmJmamwScnZ6fBKChogAA 455 \000\001\002\003.\000\000\004\000.\008\009\010\011.\012\013\014\015.\016\017\018\019.\028\029\030\031.\032!\"#.\$%&'.\(\)*+.,-\./.0123.4567.89:\;.<=>?.\@ABC.DE0G.HIKK.LMNO.PQRS.TUVW.XYZ[.\\]^_.89:\027.<=>?.\@ABC.DE\127G.HIKK.LMNO.PQRS.TUVW.XYZ[.\\]^_.`abc.defg.hijk.lm\0306.\032!\"#.\$%&'.\(\)*+.,-\./.\128\129\130\131.\132\133\134\135.\136\137\138\139.\140\141\142\143.\144\145\146\147.\148\149\150\151.\152\153\154\155.\156\157\158\159.\160\161\162\000
|
||||
+BAABAgMEAAAEAAQICQoLBAwNDg8EEBESEwQcHR4fBCAhIiMEJCUmJwQoKSorBCwtLi8EMDEyMwQ0NTY3BDg5OjsEPD0+PwRAQUJDBERFMEcESElLSwRMTU5PBFBRUlMEVFVWVwRYWVpbBFxdXl8EODk6GwQ8PT4/BEBBQkMEREUwRwRISUtLBExNTk8EUFFSUwRUVVZXBEJZWlsEXF1eXwRgNTY3BDg5OjsEPD0+PwRAQUJDBERFMEcESElLSwRMTU5PBFBRUlMEVFVWVwRYWVpbBFxdXl8EODk6GwQ8PT4/BJSVlpcEmJmamwScnaGiAAA= 0 241 BAABAgMEAAAEAAQICQoLBAwNDg8EEBESEwQcHR4fBCAhIiMEJCUmJwQoKSorBCwtLi8EMDEyMwQ0NTY3BDg5OjsEPD0+PwRAQUJDBERFMEcESElLSwRMTU5PBFBRUlMEVFVWVwRYWVpbBFxdXl8EODk6GwQ8PT4/BEBBQkMEREUwRwRISUtLBExNTk8EUFFSUwRUVVZXBEJZWlsEXF1eXwRgNTY3BDg5OjsEPD0+PwRAQUJDBERFMEcESElLSwRMTU5PBFBRUlMEVFVWVwRYWVpbBFxdXl8EODk6GwQ8PT4/BJSVlpcEmJmamwScnaGiAA== 370 \000\001\002\003.\000\000\004\000.\008\009\010\011.\012\013\014\015.\016\017\018\019.\028\029\030\031.\032!\"#.\$%&'.\(\)*+.,-\./.0123.4567.89:\;.<=>?.\@ABC.DE0G.HIKK.LMNO.PQRS.TUVW.XYZ[.\\]^_.89:\027.<=>?.\@ABC.DE0G.HIKK.LMNO.PQRS.TUVW.BYZ[.\\]^_.`567.89:\;.<=>?.\@ABC.DE0G.HIKK.LMNO.PQRS.TUVW.XYZ[.\\]^_.89:\027.<=>?.\148\149\150\151.\152\153\154\155.\156\157\161\162
|
||||
+EMDAwMDANjYAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAA= 0 146 EMDAwMDANjYAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAA= 475 \192\192\192\192\19266\000\003\003\003\003\003\003\003\003.\003\003\003.\003\003\003.\003\003\003.\003\003\003.\003\003\003.\003\003\003.\003\003\003.\003\003\003.\003\003\003.\003\003\003.\003\003\003.\003\003\003.\003\003\003.\003\003\003.\003\003\003.\003\003\003.\003\003\003.\003\003\003.\003\003\003.\003\003\003.\003\003\003.\003\003\003.\003\003\003.\003\003\003.\003\003\003.\003\003\003.\003\003\003.\003\003\003.\003\003\003.\003\003\003.\003\003\003.\003\003\000
|
||||
+AgAAAgBAAhAiAhBAAhAiAhAiBgQICf9/BAwNEg8EEAgSEwQBFQACAEACECICEEACECICECICEEACEBYXBBg6GhsEC4AAAAA1KSIZBCQkAAD/AEACECICEEACECICECIGBBAiAhBAAhAiAhAfBCApIiMEBCQAAAIAQAIQAAIQQAIQIgIQIgYECAICAgICECICEEACECICECIGBAgJ/38EDA0SDwQQCBITBAEVFhcEGDoaGwQUHR4fJjUpIhkEJCQWAAIAQAIQIgIQQAIQIgIQIgIQQAIQIgIQHwQgKSIjBCQkAAACAEACECICEEACECICECIGBAgCQAICAv4CADs= 0 253 AgAAAgBAAhAiAhBAAhAiAhAiBgQICf9/BAwNEg8EEAgSEwQBFQACAEACECICEEACECICECICEEACEBYXBBg6GhsEC4AAAAA1KSIZBCQkAAD/AEACECICEEACECICECIGBBAiAhBAAhAiAhAfBCApIiMEBCQAAAIAQAIQAAIQQAIQIgIQIgYECAICAgICECICEEACECICECIGBAgJ/38EDA0SDwQQCBITBAEVFhcEGDoaGwQUHR4fJjUpIhkEJCQWAAIAQAIQIgIQQAIQIgIQIgIQQAIQIgIQHwQgKSIjBCQkAAACAEACECICEEACECICECIGBAgCQAICAv4CAA== 715 \000\000.\000\@.\016\".\016\@.\016\".\016\".\004\008\009\255\127\004.\013\018\015\004\016\008\018\019\004\001\021\000.\000\@.\016\".\016\@.\016\".\016\".\016\@.\016\022.\004\024:\026\027\004\011\128\000\000\0005\)\"\025\004\$\$\000\000\255\000\@.\016\".\016\@.\016\".\016\".\004\016\"\002\016\@.\016\".\016\031.\032\)\"#.\004\$\000\000.\000\@.\016\000.\016\@.\016\".\016\".\004\008\002\002\002\002.\016\".\016\@.\016\".\016\".\004\008\009\255\127\004.\013\018\015\004\016\008\018\019\004\001\021\022.\004\024:\026\027\004\020\029\030\031&5\)\"\025\004\$\$\022\000\002\000\@.\016\".\016\@.\016\".\016\".\016\@.\016\".\016\031.\032\)\"#.\$\$\000\000.\000\@.\016\".\016\@.\016\".\016\".\004\008\002\@\002\002.\254\002
|
||||
+AgAfBCApIiMEJCTrJwQIKSqrBCwtLi8EMEECAB8EBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwYHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBw4HBwcHBzMzMxo7MzMzMzMzMzMzMzMzBwcHBwcHBwcHBwcHBwcHBwcHDgcHBwcHBwchBwcHBwcHBwcHBwcF//8FBwcHBwcHBwcHBwcHBwcHBwcXBwcHBwcHBwcHBwcHAhAiBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBxcHBwcHBwMHBwcHBwcCECICECIGLi8AAAEEMDH5fwQMDRIPECICECIGLi8EMDEqMwQ0NTYiBgQICfl/BAwNEg8EKjMEBwcHBwcHB8XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxQcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBgcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHDgcHBwcHMzMzGjszMzMzMzMzMzMzMzMHBwcHBwcHBwcHBwcHBwcHBwcOBwcHBwcHByEHBwcHBwcHBwcHBwX//wUHBwcHBwcHBwcHBwcHBwcHBxcHBwcHBwcHBwcHBwcCECIHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHFwcHBwcHAwcHBwcHBwIQIgIQIgYuLwAAAQQwMfl/BAwNEg8QIgIQIgYuLwQwMSozBDQ1NiIGBAgJ+X8EDA0SDwQqMwQHBwcHBwcHxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFBwcHBwcHBwcHEBESEwQUERJAAAEWFzMzMzMzMzMzETMzMzMzMzP/fxMEFBEWFwQYJBobBBQdAhAiBgQICfl/BAwnEg8EEBESEwRAABYW6IAAABsEFB0AEDMENDF//v//CAkHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBw4HBwcHBwcHIQcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHFwcHBwcHBwcHBwfFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcUHBwcH 0 -1
|
||||
+BB8BAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pl8EYGFgYwRkZWZnBGhpamsEbG1ubwRwcXJzBHR1VlcEWFlaWwRcXV5fBGBhYmMEZGVmZwRoaWprBGxtbm8EcHFycwR0dXZ3BHh5ensEfH1+fwSAgYKDBISFhocAAAGK 8 163 BgcECAkKCwQMDQ4PBBAREhMEFBUWFwQYGRobBBwdHh8EICEiIwQkJSYnBCgpKisELC0uLwQwMTIzBDQ1NjcEODk6OwQ8PT5fBGBhYGMEZGVmZwRoaWprBGxtbm8EcHFycwR0dVZXBFhZWlsEXF1eXwRgYWJjBGRlZmcEaGlqawRsbW5vBHBxcnMEdHV2dwR4eXp7BHx9fn8EgIGCgwSEhYaHAA== 277 \007\004\008\009\010\011.\012\013\014\015.\016\017\018\019.\020\021\022\023.\024\025\026\027.\028\029\030\031.\032!\"#.\$%&'.\(\)*+.,-\./.0123.4567.89:\;.<=>_.`a`c.defg.hijk.lmno.pqrs.tuVW.XYZ[.\\]^_.`abc.defg.hijk.lmno.pqrs.tuvw.xyz{.|}~\127.\128\129\130\131.\132\133\134\135
|
||||
+AhI1AAABNTUVOj9ISEhISEhISEhISEhISAMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDCAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzYAPRAA+/v7+/v7+wMDAwMDAwMDAwMDAwAAAQMDAwMDAwMDAwMDAwADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMOAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzYAAAGA 68 -1
|
||||
+AhIAAlBINQAAATU1FTo/SEhISEhIAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMFRTY5Nj42JT09PQEfNjY8NjYkFTY0NjYyNjY2NjYADDY2S0sAAAEBFr4fRhQ2NjY2AAA2Nlg2djw2NjY2NgAA/gABNjY2PDY2JBU2BLM2ojY2NjY2Bf//BUU2OTY+NiU9PT0BNjY2AAAAAQA2NDY2Mh02NjY2ABA2NktLS0AAAAFLATa+H0YUwB82Ln7s7OzsAAAB7OzsFDY2NjYAAAAAATY2NDY2NkE2PjY2NjY2NjZO0NDQkNAAFBQUFDY2NTY2QzZYNjY2Nk02NlEAEQEANjY07Ozs7AAA 68 -1
|
||||
+BCAhIiMEJCUmJwQoKSorBCwtLi8EMDEFGAEfASABIQEiASMBJAEnASgBKQEqASsBLAEtAS4BNwE4ATkBOiA7ATwBPQE+AT8NAQ4BDwEQAREBEgETARQBFwUYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAEtAS4BJwEoAUgBKgErASwBLQEuATsBPAE9AT4BPwA= 0 161 BCAhIiMEJCUmJwQoKSorBCwtLi8EMDEFGAEfASABIQEiASMBJAEnASgBKQEqASsBLAEtAS4BNwE4ATkBOiA7ATwBPQE+AT8NAQ4BDwEQAREBEgETARQBFwUYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAEtAS4BJwEoAUgBKgErASwBLQEuATsBPAE9AT4BPwA= 293 \032!\"#.\$%&'.\(\)*+.,-\./.01\005\024.\031.\032.!.\".#.\$.'.\(.\).*.+.,.-.\..7.8.9.:.\;\001<\001=\001>\001?\013\001\014\001\015\001\016\001\017\001\018\001\019\001\020\001\023\005\024\001\025\001\026.\027.\028.\029.\030.\031.\032.!.\".#.\$.%.&.'.\(.\).*.+.,.-.\..'.\(.H.*.+.,.-.\..\;.<.=.>.?
|
||||
+AX8CAAAA 0 6 AX8CAAAA 14 \127.\000\000
|
||||
+AgIAAAEC 0 4 AgIAAA== 9 \002\000
|
||||
+AQAAZA== 0 3 AQAA 5 \000
|
||||
+AQWhQEBAQAAAAQ== 1 7 BaFAQEBAAA== 13 \161\@\@\@\@
|
||||
+JB4kJDUkJCQkJCQkJCQCNCQC/yQkJCQkJAAAASQkJAAkHgcAgAA= 0 38 JB4kJDUkJCQkJCQkJCQCNCQC/yQkJCQkJAAAASQkJAAkHgcAgAA= 95 \030\$\$5\$\$\$\$\$\$\$\$\$\0024\$\002\255\$\$\$\$\$\$\000\000\001\$\$\$\000\$\030\007\000\128
|
||||
+AQABAwEiAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwESARMBFAEVARYBFwEYARkBGgEbARwBHRABEQESARMBFAEVARYBFwEYARkBGgEbARwBHQEeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3AHdAd4B3wHgAeEB4gHjAeQB5QHmAecB6AHpAeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB+gH7AfwB/QH+Af8A 0 -1
|
||||
+AQABAQECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBEwEUARUBFgEXARgBGQEaARsBHAEdAR4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0V3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9AP4= 0 253 AQABAQECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBEwEUARUBFgEXARgBGQEaARsBHAEdAR4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0V3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9AA== 660 \000.\001.\002.\003.\004.\005.\006.\007.\008.\009.\010.\011.\012.\013.\014.\015.\016.\017.\018.\019.\020.\021.\022.\023.\024.\025.\026.\027.\028.\029.\030.\159.\160.\161.\162.\163.\164.\165.\166.\167.\168.\169.\170.\171.\172.\173.\174.\175.\176.\177.\178.\179.\180.\181.\182.\183.\184.\185.\186.\187.\188.\189.\190.\191.\192.\193.\194.\195.\196.\197.\198.\199.\200.\201.\202.\203.\204.\205.\206.\207.\208.\209.\210.\211.\212.\213.\214.\215.\216.\217.\218.\219.\220.\221.\222\001\223\001\224\001\225\001\226\001\227\001\228\001\229\001\230\001\231\001\232.\233.\234.\235.\236.\237.\238.\239.\240.\241.\242.\243.\244.\245.\246.\247.\248.\249.\250.\251.\252.\253
|
||||
+AQABAQECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBEwEUARUBFgEXARgBGQEaARsBHAEdAR4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHUAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9AQEA/wA= 0 255 AQABAQECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBEwEUARUBFgEXARgBGQEaARsBHAEdAR4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHUAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9AQEA 635 \000.\001.\002.\003.\004.\005.\006.\007.\008.\009.\010.\011.\012.\013.\014.\015.\016.\017.\018.\019.\020.\021.\022.\023.\024.\025.\026.\027.\028.\029.\030.\159.\160.\161.\162.\163.\164.\165.\166.\167.\168.\169.\170.\171.\172.\173.\174.\175.\176.\177.\178.\179.\180.\181.\182.\183.\184.\185.\186.\187.\188.\189.\190.\191.\192.\193.\194.\195.\196.\197.\198.\199.\200.\201.\202.\203.\204.\205.\206.\207.\208.\209.\210.\211.\212.\213.\214.\215.\216.\217.\218.\219.\212.\221.\222.\223.\224.\225.\226.\227.\228.\229.\230.\231.\232.\233.\234.\235.\236.\237.\238.\239.\240.\241.\242.\243.\244.\245.\246.\247.\248.\249.\250.\251.\252.\253.\001
|
||||
+AgAADABAAhAiAhBAAhAiAhAiBgQICf9/BAwNEg8EEAgSEwQBFRYXBBg6GhsmCx0eHw01KSIZBCQkAAD/AEACEBgCEEACECICECIGBBAiAhBAAgIQIgYECAICAgICECICEEACECICECIGBAgJIgICAhAiAhBAAhAiAhAiBgQICf9/BAwNIA8EEAgSEwQBFRYXBBgBFRYXBBg6GhsECx0eEA01KSIZBCQ6NSkiGQQkJAAAAgBAAhAiAhBAAhAiAhAiAhBAAhAiAhAfBCApIiMEJCQOAAIAQAIQIgIQQAIQIgIQIgYECAJAAgIC/gICOwA= 0 239 AgAADABAAhAiAhBAAhAiAhAiBgQICf9/BAwNEg8EEAgSEwQBFRYXBBg6GhsmCx0eHw01KSIZBCQkAAD/AEACEBgCEEACECICECIGBBAiAhBAAgIQIgYECAICAgICECICEEACECICECIGBAgJIgICAhAiAhBAAhAiAhAiBgQICf9/BAwNIA8EEAgSEwQBFRYXBBgBFRYXBBg6GhsECx0eEA01KSIZBCQ6NSkiGQQkJAAAAgBAAhAiAhBAAhAiAhAiAhBAAhAiAhAfBCApIiMEJCQOAAIAQAIQIgIQQAIQIgIQIgYECAJAAgIC/gICOwA= 793 \000\000.\000\@\002\016\"\002\016\@\002\016\"\002.\"\006\004\008\009\255\127\004\012\013\018\015\004\016\008\018.\004\001\021\022\023\004\024:\026\027&\011\029\030\031\0135\)\".\004\$\$\000\000\255\000\@\002\016\024\002\016\@\002\016\"\002\016\"\006\004\016\"\002.\@\002\002\016\"\006\004\008\002\002\002\002\002\016\"\002.\@\002\016\"\002\016\"\006\004\008\009\"\002\002\002\016.\002\016\@\002\016\"\002\016\"\006\004\008\009\255\127\004\012\013\032\015\004\016\008\018\019\004\001\021\022\023\004\024\001\021.\023\004\024:\026\027\004\011\029\030\016\0135\)\"\025\004\$:5\)\".\004\$\$\000\000\002\000\@\002\016\"\002\016\@\002\016\"\002\016\"\002\016\@\002\016.\002\016\031\004\032\)\"#\004\$\$\014\000\002\000\@\002\016\"\002\016\@\002\016\"\002\016\"\006\004\008\002\@\002.\002\254.\002\;
|
||||
+BOgDAwgINjY2NjY2NjY2PAA3NhM2NjY2NjY2Nkk2NjY2NjZAAAAANjk2NjY2NgAAAAFANjY2NjY2NjY2Ng82NjY8ADc2EzY2NjY2NjY2ADY2NjY2NjY2NjY28Da3NjY2NjbwNrc2NjY2NjY8ADc2EzY2NjY2NjY2NjY2NvA2tzY2NjYaAAE2NiM2NjY2NoE2NjY2NqVCPAAhNhM2NjY2NjY2Np42O/oYNhM2MjY2NjY2NgA2NjYAAAHwNrc2NjY2NjY2NjY2NjY2NjY2NjY2NjY5NjY2MTY2NjY2Njb/fzY2AAE2NjZ/PjZUnjY8ABg2NjY2Nj5SNhQ+AICAADYAAAE2 0 255 BOgDAwgINjY2NjY2NjY2PAA3NhM2NjY2NjY2Nkk2NjY2NjZAAAAANjk2NjY2NgAAAAFANjY2NjY2NjY2Ng82NjY8ADc2EzY2NjY2NjY2ADY2NjY2NjY2NjY28Da3NjY2NjbwNrc2NjY2NjY8ADc2EzY2NjY2NjY2NjY2NvA2tzY2NjYaAAE2NiM2NjY2NoE2NjY2NqVCPAAhNhM2NjY2NjY2Np42O/oYNhM2MjY2NjY2NgA2NjYAAAHwNrc2NjY2NjY2NjY2NjY2NjY2NjY2NjY5NjY2MTY2NjY2Njb/fzY2AAE2NjZ/PjZUnjY8ABg2NjY2Nj5SNhQ+AICAADYA 419 \232\003\003\008.66666666.<\00076\01966666666I666666\@\000\000\0006966666\000\000\000\001\@6666666666\015666<\00076.66666666\0006666666666.\2406\18366666\2406\183666666<\00076\019666666666666\2406\1836666\026\000\00166#66666\1296.666\165B<\000!6\01966666666\1586\;\250\0246\01962666666\000666\000\000\001\2406\18366666666666.666666666966616666666\255\12766\000\001666\127>6T\1586<\000\02466666>R6\020>\000\128\128\0006
|
||||
+BOgDAwgINjY2NjY2NjY2NjYAAH//NgAAf/8XAjZ/UV5eIAAXFxcXFxcXFxcXFwI2fzZeAAABXiAAATYAAEVkNgAANjY2NjY2NgABQDY2NjYyNjYjQzb/fxN1Njb8NjaeQjwAIVkTNjY2Nfs2NjaeNFnkGDITNjY2Njb/HDf/fzY2NgAAAf///382VzY2NgA2NjY2NjY2NjY2NjY2AAAANjb/////NgAAAFw2f////zY2NjE2NjY2//82/382NjYAAAH///9/ZAABNjY2NjY2Np5eXl4RATYAAEVkNgAANjY2NjY2NgABQDY2NgABNg== 0 236 BOgDAwgINjY2NjY2NjY2NjYAAH//NgAAf/8XAjZ/UV5eIAAXFxcXFxcXFxcXFwI2fzZeAAABXiAAATYAAEVkNgAANjY2NjY2NgABQDY2NjYyNjYjQzb/fxN1Njb8NjaeQjwAIVkTNjY2Nfs2NjaeNFnkGDITNjY2Njb/HDf/fzY2NgAAAf///382VzY2NgA2NjY2NjY2NjY2NjY2AAAANjb/////NgAAAFw2f////zY2NjE2NjY2//82/382NjYAAAH///9/ZAABNjY2NjY2Np5eXl4RATYAAEVkNgAANjY2NjY2NgABQDY2NgA= 544 \232\003\003\008.66666666.66\000\000\127\2556\000\000\127\255\023\0026\127Q^^\032\000\023\023\023\023\023\023\023\023\023\023\023\0026\1276^\000\000\001^\032\000\0016\000\000Ed6\000\000666.666\000\001\@6666266#C6\255\127\019u66\25266\158B<\000!Y\0196665\251666\1584Y\228\0242\01966666\255\028.\255\127666\000\000\001\255\255\255\1276W666\0006666666666666\000\000\00066\255\255\255\2556\000\000\000\\6\127\255\255\25566616.66\255\2556\255\127666\000\000\001\255\255\255\127d\000\0016666666\158^^^\017\0016\000\000Ed6\000\0006666666\000\001\@666
|
||||
+AykpKSkpKSkpKQQEKSkpKSkpKSkpKSkpKSkpDAAAASkMKSkuKSkpKSkpKSkpKSkpKCkG9QgJfyFAKSkpKSn/KSkpKSkAAAEpKQcEKSkpKSkpKSkpKSkpKSkpKQwpKSkpKSkpKSkpKSkpKQwpDCkpLikpKSkpKSkpKSkpKSkpKSkpKTsEQAIpKSkpKCkG9QgJCiFAKSkpKSn/KSkpKUUpKQcEKSkpKSkyKSkpKbckODlXOwRAAD4pBwQgKSkpKQAAEAA= 0 191 AykpKSkpKSkpKQQEKSkpKSkpKSkpKSkpKSkpDAAAASkMKSkuKSkpKSkpKSkpKSkpKCkG9QgJfyFAKSkpKSn/KSkpKSkAAAEpKQcEKSkpKSkpKSkpKSkpKSkpKQwpKSkpKSkpKSkpKSkpKQwpDCkpLikpKSkpKSkpKSkpKSkpKSkpKTsEQAIpKSkpKCkG9QgJCiFAKSkpKSn/KSkpKUUpKQcEKSkpKSkyKSkpKbckODlXOwRAAD4pBwQgKSkpKQA= 441 \)\)\).\)\)\)\)\)\004\004\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\012\000\000\001\)\012\)\)\.\)\)\)\)\)\)\)\)\)\).\)\(\)\006\245\008\009\127!\@\)\)\)\)\)\255\)\)\)\)\)\000\000\001\)\)\007\004\)\)\)\)\)\)\)\)\)\)\)\)\).\)\)\012\)\)\)\)\)\)\)\)\)\)\)\)\)\)\012\)\012\)\)\.\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\).\004\@\002\)\)\)\)\(\)\006\245\008\009\010!\@\)\)\)\)\)\255\)\)\)\)E\)\)\007\004\)\)\)\)\)2\)\)\)\)\183\$89W\;\004\@\000>\)\007\004\032\)\)\)\)
|
||||
+BAABFwMBBRYXBBgZGhsEHB0eAAAAACIjBCQlJicEKCkqKwQsOy4vBCAhIiMEJCUmJwQoKSorBCw7Li8EBAQFFhcEGBkaGwQcHR4AAAAAIiMEJCUmJwQoKSorBCw7Li8EICEiIwQkJSYnBCgpKisELDsuLwQwMTIzBDQ1NjcEODk6OwQ8PT5BAA== 0 136 BAABFwMBBRYXBBgZGhsEHB0eAAAAACIjBCQlJicEKCkqKwQsOy4vBCAhIiMEJCUmJwQoKSorBCw7Li8EBAQFFhcEGBkaGwQcHR4AAAAAIiMEJCUmJwQoKSorBCw7Li8EICEiIwQkJSYnBCgpKisELDsuLwQwMTIzBDQ1NjcEODk6OwQ8PT5BAA== 309 \000\001\023\003.\005.\023\004\024\025\026\027\004\028\029\030\000\000\000\000\"#\004\$%&'\004.\)*+\004,\;\./\004\032!\"#\004\$%&'\004\(\)*+\004,\;\./\004\004\004\005\022\023\004\024\025\026\027\004.\029\030\000\000\000\000\"#\004\$%&'\004\(\)*+\004,\;\./\004\032!\"#.\$%&'.\(\)*+.,\;\./.0123.4567.89:\;.<=>A
|
||||
+PwDuAQMEBQYHCAl8fHx8fHx8fHx8fHx8fHx8fHx8fHx8ICEiIyQlJjU2Nzg5Ojs8ICEiIyQlJjU2Nzg5Ojs8PT4/P0BBQkNEVHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8ICEiIyQlJjU2Nzg5Ojs8ICEiIyQlJjU2Nzg5Ojs8PT4/P0BBQkNEVCEiIyQlJjU2Nzg5Ojs8ICEiIyQlJiAhVVZXWFlaW1xdXl9gABBjZGVwcXJzdHV2QAAAfA== 0 188 PwDuAQMEBQYHCAl8fHx8fHx8fHx8fHx8fHx8fHx8fHx8ICEiIyQlJjU2Nzg5Ojs8ICEiIyQlJjU2Nzg5Ojs8PT4/P0BBQkNEVHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8ICEiIyQlJjU2Nzg5Ojs8ICEiIyQlJjU2Nzg5Ojs8PT4/P0BBQkNEVCEiIyQlJjU2Nzg5Ojs8ICEiIyQlJiAhVVZXWFlaW1xdXl9gABBjZGVwcXJzdHV2QAA= 261 \000\238\001\003\004\005\006\007\008\009||||||||||||||||||||||\032!\"#\$%&56789:\;<\032!\"#\$%&56789:\;<=.??\@ABCDT||||||||||||||||||||||||||\032!\"#\$%&56789:\;<\032!\"#\$%&56789:.<=>??\@ABCDT!\"#\$%&56789:\;<\032!\"#\$%&\032!UVWXYZ[\\]^_`\000\016cdepqrstuv\@
|
||||
+PwDuKSkpKSkpKSkpRikpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpIikpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKRYpKSlyc3R1dkAAAAB7 0 149 PwDuKSkpKSkpKSkpRikpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpIikpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKRYpKSlyc3R1dkAAAAA= 297 \000\238\)\)\)\)\)\)\)\)\)F\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\".\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\).\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\022\)\)\)rstuv\@\000\000
|
||||
+PwDuHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHQAAAR0dHR0dHR0dHR0dHR0+HR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHQAAAR0dHR0dHR0dHR0dHR0+HR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0UHR0dHR0dHR0dHR0BAwAAAQT9BQcICXx8fHx8fHx8AAABAHx8fHx8IAB8 0 245 PwDuHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHQAAAR0dHR0dHR0dHR0dHR0+HR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHQAAAR0dHR0dHR0dHR0dHR0+HR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0UHR0dHR0dHR0dHR0BAwAAAQT9BQcICXx8fHx8fHx8AAABAHx8fHx8IAA= 910 \000\238\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\000\000\001\029\029\029\029\029\029\029\029\029\029\029\029\029>\029\029\029\029\029\029\029\029\029\029.\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029.\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\000\000\001\029\029\029.\029\029\029\029\029\029\029\029\029>\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029.\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029.\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\020\029\029\029\029\029\029\029\029\029\029.\001\003\000\000\001\004\253\005\007\008\009||||||||\000\000\001\000|||||\032
|
||||
+AQAAAAEgAAAA8Q8iAhAiAAABDkQICf9/BAAAAAEQCGNjL39jY2NjeHhvY2NjRwEVFjcEGDpaFwQLgAD//3//IgIAAAEQABCAAP//f/8iAhAAEBCb9BYfBENBh6AA+vr6FNkEAAQIZP8zAA== 100 6 BAhk/zMA 11 \008d\2553
|
||||
+AgAAAgAAAAEiAg== 0 7 AgAAAgAAAA== 18 \000\000.\000\000
|
||||
+AgAAAgBAAhAiAhBAAhAiAhAiBgQIDf9/BAwNEg8EEAgSEwQBFRYXBBg6GhsEC4AAAAA1KSIZBCQkAAD/AEACECICEEACECICECIGBBAiAhBAAhAiAhAfBCApECICECIGBAgJ/38EDA0SDwQQCBITBAEVFhcEGDoaIiMEBCQAAAIAQAIQAAIfQAIQIgIQIgYECAIChgICECICEEACECICECIGBAgJ/38EDA0SDwQQCBITBAEVFhcEGDoaGwQUHR4fJjUpIhkEJCQQIgIQIgIQQAIQIgIQHwQgKSIjBCQkAAACAEAIECIiAEACECICECIGBAgCQAICAv4CAA== 0 250 AgAAAgBAAhAiAhBAAhAiAhAiBgQIDf9/BAwNEg8EEAgSEwQBFRYXBBg6GhsEC4AAAAA1KSIZBCQkAAD/AEACECICEEACECICECIGBBAiAhBAAhAiAhAfBCApECICECIGBAgJ/38EDA0SDwQQCBITBAEVFhcEGDoaIiMEBCQAAAIAQAIQAAIfQAIQIgIQIgYECAIChgICECICEEACECICECIGBAgJ/38EDA0SDwQQCBITBAEVFhcEGDoaGwQUHR4fJjUpIhkEJCQQIgIQIgIQQAIQIgIQHwQgKSIjBCQkAAACAEAIECIiAEACECICECIGBAgCQAICAv4CAA== 754 \000\000.\000\@.\016\".\016\@.\016\".\016\".\004\008\013\255\127\004.\013\018\015\004\016\008\018\019\004\001\021\022.\004\024:\026\027\004\011\128\000\000\0005\)\"\025\004\$\$\000\000\255\000\@.\016\".\016\@.\016\".\016\".\004\016\"\002\016\@.\016\".\016\031.\032\)\016\".\016\".\004\008\009\255\127\004.\013\018\015\004\016\008\018\019\004\001\021\022.\004\024:\026\"#\004\004\$\000\000\002\000\@\002\016\000\002\031\@\002\016\".\016\".\004\008\002\002\134\002.\016\".\016\@.\016\".\016\".\004\008\009\255\127\004.\013\018\015\004\016\008\018\019\004\001\021\022.\004\024:\026\027\004\020\029\030\031&5\)\"\025\004\$\$\016\"\002\016\".\016\@.\016\".\016\031.\032\)\"#.\$\$\000\000.\000\@.\016\"\"\000\@\002\016\".\016\".\004\008\002\@\002\002.\254\002
|
||||
+AQABAwEiAQcBCAEJAQoBCwEMAQ0BDgEPARIBEwEUARUBFgEXARgBGQEaARsBHAEdEAERARIBEwEUARUBFgEXAX0BGQEaARsBHAEdAR4BnwGgAaEBAAA= 0 86 AQABAwEiAQcBCAEJAQoBCwEMAQ0BDgEPARIBEwEUARUBFgEXARgBGQEaARsBHAEdEAERARIBEwEUARUBFgEXAX0BGQEaARsBHAEdAR4BnwGgAaEBAAA= 230 \000.\003.\".\007.\008.\009.\010.\011.\012.\013.\014.\015.\018.\019.\020.\021.\022.\023.\024.\025.\026.\027.\028.\029.\001\017\001\018\001\019\001\020\001\021\001\022\001\023\001}.\025.\026.\027.\028.\029.\030.\159.\160.\161.\000
|
||||
+BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2Ngk2NjY2NIBYNgAQATY2NjY0/zY2NjYAAADeAzY2NjY2NjY2NjY2NjYAAAABABtn6gABbEtLS0tpS0sNNr52dnZ2H0YUADY2NgAANjYkNjY0/382NjY2NjYVNjZPNjY2NjYkNjb//4AAdnZ2dnZ2dv8LAED/NjY2NjQ2AAABAAEAgAAAARU2ClA2NtDO09DQ0NDQ0DPQ0OLQ0NAAAAD7EBQUNjYAAdDQkAAAFBQUFDY2gAEAfzZYKzY2NjY2dgAA//92dnb/CwAAAQAb 0 255 BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2Ngk2NjY2NIBYNgAQATY2NjY0/zY2NjYAAADeAzY2NjY2NjY2NjY2NjYAAAABABtn6gABbEtLS0tpS0sNNr52dnZ2H0YUADY2NgAANjYkNjY0/382NjY2NjYVNjZPNjY2NjYkNjb//4AAdnZ2dnZ2dv8LAED/NjY2NjQ2AAABAAEAgAAAARU2ClA2NtDO09DQ0NDQ0DPQ0OLQ0NAAAAD7EBQUNjYAAdDQkAAAFBQUFDY2gAEAfzZYKzY2NjY2dgAA//92dnb/CwAA 633 \232\000\000\192.666\194\194\194\194\194\194\194\194\194\194\159\194\194\194\194\194\19466\$\0216466666.6\000\000\000\001\000\027g\0216\000\00466666\00966664\128X6\000\016\00166664\2556666\000\000\000\222\0036666666666.66\000\000\000\001\000\027g\234\000\001lKKKKiKK\0136\190vvvv\031F\020\000666\000\00066\$664\255\127666666\02166O.6666\$66\255\255\128\000vvvvvvv\255\011\000\@\255666646\000\000\001\000\001\000\128\000\000\001\0216\010P66\208\206\211\208\208\208\208\208\208.\208\208\226\208\208\208\000\000\000\251\016\020\02066\000\001\208\208\144\000\000\020\020\020\02066\128\001\000\1276X+66666v\000\000\255\255vvv\255\011\000
|
||||
+BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2Ngk2NjY2NIBYNgAQATY2NjY0/zY2NjYAAADeAzY2NjY2NjY2NjY2NjYAAAABABtn6gABbEtLS0tpS0sBNr52dnZ2H0YUADY2NgAANjYkNjY0/382NjY2NjYVNjZPNjY2NjYkNjb//4AAdnZ2dnZ2dv8LAED/NjY2NjQ2AAABAAEAgAAAATY2ClA2NtDO0NDQ0NDQ0DPQ0OLQ0NAAAAD7EBQsNjYAAdDQkAAAFBQUFDY2gH82WCs2NjY2NnZ2dnZ2dnZ2/wsAAAEAGw== 0 255 BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2Ngk2NjY2NIBYNgAQATY2NjY0/zY2NjYAAADeAzY2NjY2NjY2NjY2NjYAAAABABtn6gABbEtLS0tpS0sBNr52dnZ2H0YUADY2NgAANjYkNjY0/382NjY2NjYVNjZPNjY2NjYkNjb//4AAdnZ2dnZ2dv8LAED/NjY2NjQ2AAABAAEAgAAAATY2ClA2NtDO0NDQ0NDQ0DPQ0OLQ0NAAAAD7EBQsNjYAAdDQkAAAFBQUFDY2gH82WCs2NjY2NnZ2dnZ2dnZ2/wsAAAEA 615 \232\000\000\192.666\194\194\194\194\194\194\194\194\194\194\159\194\194\194\194\194\19466\$\0216466666.6\000\000\000\001\000\027g\0216\000\00466666\00966664\128X6\000\016\00166664\2556666\000\000\000\222\0036666666666.66\000\000\000\001\000\027g\234\000\001lKKKKiKK\0016\190vvvv\031F\020\000666\000\00066\$664\255\127666666\02166O.6666\$66\255\255\128\000vvvvvvv\255\011\000\@\255666646\000\000\001\000\001\000\128\000\000\00166\010P66\208\206\208\208\208\208\208\208\208.\208\208\226\208\208\208\000\000\000\251\016\020,66\000\001\208\208\144\000\000\020\020\020\02066\128\1276X+66666vvvvvvvv\255\011\000\000\001
|
||||
+BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2Ngk2NjY2NIBYNgAQATY2NjY0/zY2NjYAAADeAzY2NjY2NjY2NjY2NjYAAAABABtn6gABbEtLS0tpS0sBNr52dnZ2H0YUADY2NgAANjYkNjY0/382NjY2NjYVNjZPNjY2NjYkNjb//4AAdnZ2dnZ2dv8LAED/NjY2NjQ2AAABAAEAgAAAATY2ClA2NtDO0NDQ0NDQ0DPQ0OLQ0NAAAAD7EBQUNjYAAdDQkAAAFBQUFDY2gAEAAAFYKzY2NjY2dnZ2dnZ2QAAAAAAAAQAb 0 255 BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2Ngk2NjY2NIBYNgAQATY2NjY0/zY2NjYAAADeAzY2NjY2NjY2NjY2NjYAAAABABtn6gABbEtLS0tpS0sBNr52dnZ2H0YUADY2NgAANjYkNjY0/382NjY2NjYVNjZPNjY2NjYkNjb//4AAdnZ2dnZ2dv8LAED/NjY2NjQ2AAABAAEAgAAAATY2ClA2NtDO0NDQ0NDQ0DPQ0OLQ0NAAAAD7EBQUNjYAAdDQkAAAFBQUFDY2gAEAAAFYKzY2NjY2dnZ2dnZ2QAAAAAAA 625 \232\000\000\192.666\194\194\194\194\194\194\194\194\194\194\159\194\194\194\194\194\19466\$\0216466666.6\000\000\000\001\000\027g\0216\000\00466666\00966664\128X6\000\016\00166664\2556666\000\000\000\222\0036666666666.66\000\000\000\001\000\027g\234\000\001lKKKKiKK\0016\190vvvv\031F\020\000666\000\00066\$664\255\127666666\02166O.6666\$66\255\255\128\000vvvvvvv\255\011\000\@\255666646\000\000\001\000\001\000\128\000\000\00166\010P66\208\206\208\208\208\208\208\208\208.\208\208\226\208\208\208\000\000\000\251\016\020\02066\000\001\208\208\144\000\000\020\020\020\02066\128\001\000\000\001X+66666vvvvvv\@\000\000\000\000
|
||||
+BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2Ngk2NjY2NIBYNgAQATY2NjY0/zY2NjYAAADeAzY2NjY2NjY2NjY2NjYAAAABABtn6gABbEtLS0tpS0sBNr52dnZ2H0YUADY2NgAANjYkNjY0/382NjY2NjYVNjZPNjY2NjYkNjb//4AAdnZ2dnZ2dv8LAED/NjY2NjQ2AAABAAEAgAAAATY2ClA2NtDO0NDQ0NDQ0DPQ0OLQ0NAAAAD7EBQUNjYAAdDQkAAAFBQUFDY2gAEAAAFYKzY2NjY2dnZ2dnZ2QEAAAAAAAQAb 0 255 BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2Ngk2NjY2NIBYNgAQATY2NjY0/zY2NjYAAADeAzY2NjY2NjY2NjY2NjYAAAABABtn6gABbEtLS0tpS0sBNr52dnZ2H0YUADY2NgAANjYkNjY0/382NjY2NjYVNjZPNjY2NjYkNjb//4AAdnZ2dnZ2dv8LAED/NjY2NjQ2AAABAAEAgAAAATY2ClA2NtDO0NDQ0NDQ0DPQ0OLQ0NAAAAD7EBQUNjYAAdDQkAAAFBQUFDY2gAEAAAFYKzY2NjY2dnZ2dnZ2QEAAAAAA 623 \232\000\000\192.666\194\194\194\194\194\194\194\194\194\194\159\194\194\194\194\194\19466\$\0216466666.6\000\000\000\001\000\027g\0216\000\00466666\00966664\128X6\000\016\00166664\2556666\000\000\000\222\0036666666666.66\000\000\000\001\000\027g\234\000\001lKKKKiKK\0016\190vvvv\031F\020\000666\000\00066\$664\255\127666666\02166O.6666\$66\255\255\128\000vvvvvvv\255\011\000\@\255666646\000\000\001\000\001\000\128\000\000\00166\010P66\208\206\208\208\208\208\208\208\208.\208\208\226\208\208\208\000\000\000\251\016\020\02066\000\001\208\208\144\000\000\020\020\020\02066\128\001\000\000\001X+66666vvvvvv\@\@\000\000\000
|
||||
+BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2Ngk2NjY2NIBYNgAQATY2NjY0/zY2NjYAAADeAzY2NjY2NjY2NjY2NjYAAAABABtn6gABbEtLS0tpS0sBNr52dnZ2H0YUADY2NgAANjYkNjY0/382NjY2NjYVNjZPNjY2NjYkNjb//4AAdnZ2dnZ2dv8LAED/NjY2NjQ2AAABAAEAgAAAATY2ClA2NtDO0NDQ0NDQ0DPQ0OLQ0NAAAAD7EBQUNjYAAdDQkAAAFBQUFDY2gAEAAAFYKzY2NjY2dnZ2dnZ2QEBAAAAAAQAb 0 255 BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2Ngk2NjY2NIBYNgAQATY2NjY0/zY2NjYAAADeAzY2NjY2NjY2NjY2NjYAAAABABtn6gABbEtLS0tpS0sBNr52dnZ2H0YUADY2NgAANjYkNjY0/382NjY2NjYVNjZPNjY2NjYkNjb//4AAdnZ2dnZ2dv8LAED/NjY2NjQ2AAABAAEAgAAAATY2ClA2NtDO0NDQ0NDQ0DPQ0OLQ0NAAAAD7EBQUNjYAAdDQkAAAFBQUFDY2gAEAAAFYKzY2NjY2dnZ2dnZ2QEBAAAAA 621 \232\000\000\192.666\194\194\194\194\194\194\194\194\194\194\159\194\194\194\194\194\19466\$\0216466666.6\000\000\000\001\000\027g\0216\000\00466666\00966664\128X6\000\016\00166664\2556666\000\000\000\222\0036666666666.66\000\000\000\001\000\027g\234\000\001lKKKKiKK\0016\190vvvv\031F\020\000666\000\00066\$664\255\127666666\02166O.6666\$66\255\255\128\000vvvvvvv\255\011\000\@\255666646\000\000\001\000\001\000\128\000\000\00166\010P66\208\206\208\208\208\208\208\208\208.\208\208\226\208\208\208\000\000\000\251\016\020\02066\000\001\208\208\144\000\000\020\020\020\02066\128\001\000\000\001X+66666vvvvvv\@\@\@\000\000
|
||||
+BAABAgMEBAUGBwQICQoLBBINDg8EEBESEwQUFRYXBBgZGhsEHB0eNjY2AAA2NjY2Njw2ATYYNkUAAAIQ//9/TExMTExMTExMTExMTExMTExMTExMTENMTBMTExNqEykTlhMTEyYLAAEUFAAABjY2NjYAAAE2NhwAAAABAAABBDb/fwAAAzY2NgX//wU2NgD7SDYkNjk5OTk5OTk5OTk5OTk5OTk5OTk5PTY0pDY2NjY2NiQAAAE2Nn82cXZ2dnZ2dnZ20Coq0DPQ0P/QM9DQ//9//9AAAAHSu9DRkNAABgAA/xQUAAAGfzYkNjY0Nks2AAQeVTb/AAABNn////8= 0 -1
|
||||
+BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2Ngk2NjY2NIBYNgAQATY2NjY0/zY2NjYAAADeAzY2NjY2NjY2NjY2NjYAAAABABtn6gABbEtLS0tpS0sBNr52dnZ2H0YUADY2NgAANjYkNjY0/382NjY2NjYVNjZPNjY2NjYkNjb//4AAdnZ2dnZ2dv8LAED/NjY2NjQ2AAABAAEAgAAAATY2ClA2NtDO0NDQ0NDQ0DPQ0OLQ0NAAAAD7EBQUNjYAAdDQkAAAFBQUFDY2gAEAAAFYKzY2NjY2dnZ2dnZ2QEBAQAAAAQAb 0 255 BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2Ngk2NjY2NIBYNgAQATY2NjY0/zY2NjYAAADeAzY2NjY2NjY2NjY2NjYAAAABABtn6gABbEtLS0tpS0sBNr52dnZ2H0YUADY2NgAANjYkNjY0/382NjY2NjYVNjZPNjY2NjYkNjb//4AAdnZ2dnZ2dv8LAED/NjY2NjQ2AAABAAEAgAAAATY2ClA2NtDO0NDQ0NDQ0DPQ0OLQ0NAAAAD7EBQUNjYAAdDQkAAAFBQUFDY2gAEAAAFYKzY2NjY2dnZ2dnZ2QEBAQAAA 619 \232\000\000\192.666\194\194\194\194\194\194\194\194\194\194\159\194\194\194\194\194\19466\$\0216466666.6\000\000\000\001\000\027g\0216\000\00466666\00966664\128X6\000\016\00166664\2556666\000\000\000\222\0036666666666.66\000\000\000\001\000\027g\234\000\001lKKKKiKK\0016\190vvvv\031F\020\000666\000\00066\$664\255\127666666\02166O.6666\$66\255\255\128\000vvvvvvv\255\011\000\@\255666646\000\000\001\000\001\000\128\000\000\00166\010P66\208\206\208\208\208\208\208\208\208.\208\208\226\208\208\208\000\000\000\251\016\020\02066\000\001\208\208\144\000\000\020\020\020\02066\128\001\000\000\001X+66666vvvvvv\@\@\@\@\000
|
||||
+ISEhISEhISEhISEhISEhISEhISEAA+gAISEhISEhISEhISEhISEhGiEhISEhISEhISEhQyEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISF+ISEhISEhISEhISEhIYAhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhQyEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISF+ISEhISEhISEhIRAhISEhISEhISEhISEhISEhISEhISEhISEhIYAhISEhISEpcnN0dXZAAA== 33 205 ISEhISEhGiEhISEhISEhISEhQyEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISF+ISEhISEhISEhISEhIYAhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhQyEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISF+ISEhISEhISEhIRAhISEhISEhISEhISEhISEhISEhISEhISEhIYAhISEhISEpcnN0dXZAAA== 218 !!!!!\026!!!!!!!!!!!C!!!!!!!!!!!!!!!.!!!!!!!!!!!!!!!!!!!!!~!!!!!!!!!!!.!\128!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.!!!!!!!!!!!C!!!!!!!!!!!!!!!!!!!!!.!!!!!!!!!!!!!!!~!!!!!!!!!!\016!!!!!!.!!!!!!!!!!!!!!!!!!!\128!!!!!!\)rstuv\@
|
||||
+AQABAQEAAAEBBBswGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbBhsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsVGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGyobGxsbGxsbGxsbGxsbGxsbGxsbzs7Ozs7Ozs7Ozs4bGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsmGxsbGhsbGxsbNRsbGxsbGxsbGw== 0 7 AQABAQEAAA== 15 \000.\001.\000
|
||||
+AQABAQECAQMbGwAAARsbGxsbGzobGyAbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbG2kbGxsbFRsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGwMbGxsbGxsbGxsbGxsbGxsbGxsbGxsiGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxvfGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsmGxsbGxsbGxsbGxsbGxsbGxsbGw== 0 -1
|
||||
+AQABAQECAQMBBAEFAQYBB+sIAQkBCgELxwwBDQEOAQEXJwEoAT42JT09PTYfNjY8NjYkFTY0NjYyAAABNjY2NjYADDY2S0sAAAEBFr4fRhQ2NjY2AAA2Nlg2iTw2HDY2NgAA/gABRDY2TjY2JBA2BLM2ojY2NjY2Bf8AG0Q2OTZNNiU9PT0BNlM2AAAAAQA2NDY2MjY2NjYyJjY2NjYAEDY2S0tLQAAAAUsBNr4fRhTDHzbAQDYufuzs7OwAAAHs7OwUNjY2NgAAAH//NjY0NjY2QTYAAAE+NjY2NjY2Nk7W0NCQ0AAUFBQUGjY1UzZDNlh/NjY2TTY2UQARAQA= 0 -1
|
||||
+AQABAQECAQMBBAEFAAABBwEIAQkBCgELAQwBDQEOAQ8BECABIQEiASMBJAElASYBJwEoAAw2NktLAAABARa+/kYkFTY0NjYyNjY2NjYADDY2S0sAAAEBFr7+RhQ2NjY2AAA2Nlg0djw2NjY2NgAA/t4BNjY2PDY2MxU2AbM2ojY2NjY2Bf82NjYAEDY2S0tLQAAAAUt//74fRhTANjQ2NiQ2NjY2NgAQNjZLAAABfvPs7OwAAAHs7OwUNjY2NgAAAAABNjY0NjY2QTY+NjY2NjY2Nk7Q1NCQ0AAUFBQUNjY1NjZDNlg2NjY2TTY2UQARAQA= 0 13 AQABAQECAQMBBAEFAA== 30 \000.\001.\002.\003.\004.\005
|
||||
+AQABAQECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8CAgICAgICAoAAAgICAAABAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC 0 42 AQABAQECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8CAgICAgICAoAA 107 \000.\001.\002.\003.\004.\005.\006.\007.\008.\009.\010.\011.\012.\013.\014.\015.\002\002.\002\002.\002\128
|
||||
+BOgAAAEDAwgINjY2NgAAAMAfNoAANjYkFTY2NhU2AAQ2NjY2NjY2NjY2NDZYBAX//wU2NjY0NgAANjYWNjY259DQ0NDQ0NDQNjY2ABtLbEtLS0tLS0sBNr4fRhQ2NjY2AAA2NiQ2NjQ2NjY2NjY2NjY2NjY2NjY2NiQ2Nn92dnZ2dnZ2doF2dnZ2dnZBNgE2HgQF//8FNjY2NDYAAAkAAAGANjYWNjY20NDQ0NDQ0NDQf9DQ0NDQ0NDQ0NDQkNAAFBQAAAEUFDY2NjY2NjZYNjY2Nk0hNlEAEQEAAAE2Ng== 0 -1
|
||||
+BOgAAAEDAwgINjY2AAABNgAAAMAAAADAHzaAADY2JBU2NjYVNgAENjw2NjY2NjY2BAX//+fQ0NDQ0NDQ0DY4NjY2NjY2NjY2AAAAAQQ2NjY2NjY2NjY2NjY2AAAAAQAbS2xLS0tLS0tLATa+H0YUNjY2NgAANjYgNjY0NjY2NjY2NjY0NjY2NjY2NvoAAPp/dnZ2dnZ2dnZ2dnZ2dnaAQTYBNh4EBf//BTY20NDQ0NDQ0NB2dnZ2dnZ2dnZ2QTYB0NDQ0DPQ0NDQ0ND///+A0JDQABQUAAAaNk0hNlEAEQEAAAE2Ng== 0 -1
|
||||
+BOgAAAEDAwgINjY2NeYAAMAfNoAANjYkFTY2NhU2AAQ2NjY2NjY2NjY2NDZYBAH//wU2NjY0NgAAAQDoAYA2NhY2Njbn0NDQ0DY2NjY2Fk//AAAAAAABABtLbEtLS0tLSwAAAQQ2NjQ2NjY2Nic2NjY2NjY2NgABAAA2Nn92dnZ2dnZ2dnZ2dnZ2dnZBNgE2HgQF//8FNjY2NDYAADY2NjY2Fk//AAAAAAABABtLbEtLS0sJAAABgDY2FjY2NtDQ0NDQ0NDQ0DPQw9DQ0NDQ0NDQ0JDQABQUAAABFBQ2NjY2NjY2aTY2NjZNITZAABEBAAABNjY= 0 88 BOgAAAEDAwgINjY2NeYAAMAfNoAANjYkFTY2NhU2AAQ2NjY2NjY2NjY2NDZYBAH//wU2NjY0NgAAAQDoAYA2NhY2Njbn0NDQ0DY2NjY2Fk//AAAAAAABAA== 217 \232\000\000\001.\003\008\008.665\230\000\000\192\0316\128\00066\$\021666\0216\000\004666666666646X\004\001\255\255\00566646\000\000\001\000\232\001\12866.666\231\208\208\208\20866666\022O\255\000\000\000\000\000\001
|
||||
+BOgAAAEDAwgINjY2AAABAMAfNoAANjYkFTY2NhU2AAQ2NjY2NjY2NjY2NDZYBAX//wU2NjY0NgAAAQAAAYA2NhY2Njbn0NDQ0NDQ0NA2NjY2NjY2NjY2NgAAAAEENjY2NjY2NjY2NjY2NgAAAAEAG0tsS0tLS0tLSwE2vh9GFDY2NjY2AAAAAQQ2NjY2NjY2NjY2NjY2NjY2NjY2JDY2f3Z2dnZ2dnZ2dnZ2dnZ2dkE2ATYeBAX//wU2NjY0NgAACQAAAYA2NhY2NjbQ0NDQ0NDQ0NAz0NDQ0NDQ0NDQ0NCQ0AAUFAAAARQUNjY2NjY2Nlg2NjY2TSE2UQARAQAAATY2 0 255 BOgAAAEDAwgINjY2AAABAMAfNoAANjYkFTY2NhU2AAQ2NjY2NjY2NjY2NDZYBAX//wU2NjY0NgAAAQAAAYA2NhY2Njbn0NDQ0NDQ0NA2NjY2NjY2NjY2NgAAAAEENjY2NjY2NjY2NjY2NgAAAAEAG0tsS0tLS0tLSwE2vh9GFDY2NjY2AAAAAQQ2NjY2NjY2NjY2NjY2NjY2NjY2JDY2f3Z2dnZ2dnZ2dnZ2dnZ2dkE2ATYeBAX//wU2NjY0NgAACQAAAYA2NhY2NjbQ0NDQ0NDQ0NAz0NDQ0NDQ0NDQ0NCQ0AAUFAAAARQUNjY2NjY2Nlg2NjY2TSE2UQARAQAA 583 \232\000\000\001.\003\008\008.66\000\000\001\000\192\0316\128\00066\$\021666\0216\000\004666666666646X\004\005\255\255\00566646\000\000\001\000\000\001\12866.666\231\208\208\208\208\208\208\208\2086666666666.\000\000\000\001\0046666666666666\000\000\000\001\000\027KlKKKKKKK\0016\190\031F\02066666\000\000\000\001\00466666.6666666666666\$66\127vvvvvvvvvvvvvvvA6\0016\030\004\005\255\255\00566646\000\000\009\000\000\001\128.6\022666\208\208\208\208\208\208\208\208\2083\208\208\208\208\208\208\208\208\208\208\208\144\208\000\020\020\000\000\001\020\0206666666X6666M!6Q\000\017.\000
|
||||
+BOgAAGQAAAA2AAAAwB82gAA2NoAANjYkFTY2NhU2IAQ2NjY2NjY2NjY2NDYAAAFYBAX//wA2NjY0Nu//NTY2AAAAAQQ2NjY2////fzY0NiMAG0tsS2RLS0tLSwEAAAE2vh9GFDY2NjYAAAE2dnZ2dnZ2dnZ2dgAAAUE+ATYeBAX//wU2NjY0NgAACQAAaWlpaWlpaWlpaWnzaWlpaWn/f2lpaWlpaWlYNjY2Nk0hHVEAEQEAAAE2Ng== 0 6 BOgAAGQA 14 \232\000\000d
|
||||
+BOgAAAEDAwgINjY2NgAAAMAfNoAANjYkFTY2NhU2AAQ2NjY2NjY2NjY2PSIjBCQlJicEPykqFQQsLS4uBDAxMjMENDU2NwQ4OTo7BDw9Pj8EQEVGRwRISUpLBExNQ08EUFFSWwRUVVZXBFhZWlsEXE1eXwRgYWJjBGRlZmcEaGlqawRsbR4fBCAhIiMEJCUmJwQoKSorBCwtJy8EgIGCgwT6hYaHBIiJiosENDU2NwQ4OTo7BDw9Pj8EQEFCQwRERUZHBEhJSksETE1OTwQ= 0 -1
|
||||
+AAABBOgAAEFAA+gYAAA2TgD/8sAQAAAAATAkAAABAAE2AwAAdj52ATT/YTk5GVQ5Ad42QCL7/zA= 0 1 AA== 2 .
|
||||
+wMAAAcDgwMDANjY2NgAAGsAfNjY8NjYkFTo0NjYyNjY2NjYAEDY2S0s2Nlg2djw2NjY2NgAAAQABNjY2PDY2JBU2BLM2ojY2NiU9PT0BHzY2FDY2NjYAADY2WDZ2PDY2NjY2AAD+AAE2NjY8NjYkFTYEszaiNjY2NjYF//8FRTY5Nj42JT09PQEAAAABADY0NjYyNjY2NjYAEDY2S0tLQABAAUsBNr4fRhQ2////fyQVNgTAHzYufuwp7OwAAAHs7OwUNjY2NgAAAAAAAAE0NjYAAAE+NjY2NjY2Nk7Q0NCQ0AsUFBQUNjY1NjZDNlg2NjY2TTY2UQD//wVFNjk2PjYlPT09AR82NhQ2NjY2AAA2Nlg2djw2NjY2NgAA/gABNjY2PDY2JBU2BLM2ojY2NjY2Bf//BUU2OTY+NjY2Bf//BUU2OTY+NiU9PT0BAAAAAQA2gAAAADY2NjY2ABA2NktLS0AAAAFLATa+H0YUNv///38kFTYEwB82Ln7s7OzsAAAB7OzsFDY2NhEBAA== 16 2 NjY2NgAQNjZLSzY2WDZ2PDY2NjY2AAABAAE2NjY8NjYkFTYEszaiNjY2JT09PQEfNjYUNjY2NgA= 98 666\000\01666KK66X6v<66666\000\000\001\000\001666<66\$\0216\004\1796\162666%===\001\03166\0206666
|
||||
+wMgAAcDgwMDANjY2NgAAGsAfNmY8NjY2QzZYNjY2NjY2NjYAAAE2S0s2NgFK4za+H0YUwB82Ln7s7OzsAAAB7BDsFDY2NjYAAAAAAf//NDZKNjZBNj42NjY2gDY2TtDQQTY+NjY2NjY2Nk7Q4tCQ0AAUFP////81NjZDNlg2Nhc2TTY2UQARAQA= 39 -1
|
||||
+wMAAAcDgwMDANjY2NgAAGsAfNjY8NjYkFTY0NjYyNjY2NjYAEDY2S0s2OFg2djw2NjY2NgAAAQABNjY2PDY2QDY1NjZDNgAAAVhAADY2TTY2UQARAQA= 16 -1
|
||||
+wMAAAcDgwMDANjY2NgAAGsAfNjY8NjY2cjY2NjY2ABA2NktLS0AAAAFLATYAAAEUwB82Ln7s7OzsAAAB7OzsFDY2NjYAAAAAATY2NDY2NkE2PjY2NjY2NjZOHzY2PDY2JBU2NDY2MjY2NjY2AAw2NktLAAABARa+H0YUNjY2NgAANjZYNnY8NjY2NjYAAP4AATY2Njw2NiQVNgSzNjY2cjY2NjY2ABA2NktLS0AAAAFLATYAAAEUwB82Ln7s7OzsAAAB7OzsFDY2NjYAAAAAATY2NDY2NkE2PjY2NjY2NjZO0NDQkNAAFBQUFDY2NTY2QzZYNjY2Nk02NlEAEQEA 16 -1
|
||||
+wKoAAcDgwMDANjY2NgAAGsAfNjY8NjYkFTY0NjYyNjY2NjYAEDY2S0s2Nlg2djw2NjY2NkAAAQABNjY2PAAAARU2BLM2ojY2NjY2Bf//BUU2OTY+NiU9PT0BHzY2PDY2JBU2AAABMjY2NjY2AAw2NktLAAABARa+AAABNjY2NgAANjZYNnY8NjY2NjYAAP4AATY2Njw2NiQVJgSzNqI2NjY2NgX//wVFNjk2PjYlPT09ATY2NgAAAAEANjQ2NjI2NjY2NgAQNjZLgABAAAABSwE2vh9GFMAfNi5+7Ozs7AAAAezs7BQ2NjY2AAAAAAE2NjQ2NjZBNj42NjY2NjY2TtDQ0JDQABQUFBQ2NjU2NkM2WDY2NjZNQDZRABEBAA== 16 2 NjY2NgAQNjZLSzY2WDZ2PDY2NjY2QAABAAE2NjY8AAABFTYEszaiNjY2NjYF//8FRTY5Nj42JT09PQEfNjY8NjYkFTYAAAEyNjY2NjYADDY2S0sAAAEBFr4AAAE2NjY2AAA2Nlg2djw2NjY2NgAA/gABNjY2PDY2JBUmBLM2ojY2NjY2Bf//BUU2OTY+NiU9PT0BNjY2AAAAAQA2NDY2MjY2NjY2ABA2NkuAAEAAAAFLATa+H0YUwB82Ln7s7OzsAAAB7OzsFDY2NjYAAAAAATY2NDY2NkE2PjY2NjY2NjZO0NDQkNAAFBQUFDY2NTY2QzZYNjY2Nk1ANlEAEQEA 548 666\000\01666KK66X6v<66666\@\000\001\000\001666<\000\000\001\0216\004\1796\16266666\005\255\255\005E696>6%.==\001\03166<66\$\0216\000\000\001266666\000\01266KK\000\000\001\001\022\190\000\000\0016666\000\00066X6v<66666\000\000\254\000\001666.66\$\021&\004\1796\16266666\005\255\255\005E696>6%===\001666\000\000\000\001\0006466266666\000\01666K\128\000\@\000\000\001K\001.\190\031F\020\192\0316\.~\236\236\236\236\000\000\001\236\236\236\0206666\000\000\000\000\001664666A6>6666666N\208\208\208\144\208\000\020\020.\02066566C6X6666M\@6Q\000\017\001
|
||||
+P8DBwsPExcbHyMnKy8zNzs/Q0dLT1NXe3+AbGxsbGxsbGxsbGxsbGxsbGxsbGyMbGxsbGxsbGxsbGxsbGxsbGxsbGxsbFRsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGwMbGxsbGxsbGxsbGxsbGxvW19jZ2tvc3d7f4BsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsVGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbAxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGyYbGxsbGxsbGxsbGxsbGxsbGxsb 0 -1
|
||||
+wMAAAcDAf////zY2NgAAGsAfNjY8NjYkFTY0NjYyNjY2NjZLS0tLSwEWAZ8BoAGhAaIBowGkAaUBpgGxAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3AHdFd4B3wHgAeEB4gHjAeQB5QHmAecB6AHpAeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB+gH7AfwB/QD+ 16 2 NjY2NktLS0tLARYBnwGgAaEBogGjAaQBpQGmAbEBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0V3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9AA== 588 666KKKKK\001\022\001\159\001\160\001\161\001\162\001\163\001\164\001\165\001\166\001\177\001\168\001\169\001\170\001\171\001\172\001\173\001\174\001\175\001\176\001\177\001\178\001\179\001\180.\181.\182.\183.\184.\185.\186.\187.\188.\189.\190.\191.\192.\193.\194.\195.\196.\197.\198.\199.\200.\201.\202.\203.\204.\205.\206.\207.\208.\209.\210.\211.\212.\213.\214.\215.\216.\217.\218.\219.\220.\221.\222\001\223\001\224\001\225\001\226\001\227\001\228\001\229\001\230\001\231\001\232.\233.\234.\235.\236.\237.\238.\239.\240.\241.\242.\243.\244.\245.\246.\247.\248.\249.\250.\251.\252.\253
|
||||
+BA8EAgAsAID/////MjMEMjU2NwMEFgUEBf//9BEAHP/NBAb/f0AA6iAEICEiIwQkJTon+vr6+vr6BPYGACQICQoQAgAAAQABEgMEBAUEBQYHBEAA6iDkHyEiIwQkJSYn+vr6+vr6+vr6+vr0BBIdLC0u9gQwMSgMBwRkAAAgBEQAIAQgISI= 0 -1
|
||||
+BGQEAgAsAP//8/QQHALNBAb/9P+AFgAEBf//9AAQHALNBAb/9POAIAAiI/r6BgX2BgAkAAABCGQKEAIgBDYl+vr6fwAAAAAEIAAiI/r6BgX2BgAkAAABCGQKEAIgBDYlJif5+/rZ+voE9gYAJAhkChACIAO9AAESGQQEBQQFAwb/fwB/AAAELS72p6enp6enp6enp6enp6cgBJKSkqlxkiAhIg== 0 -1
|
||||
+BA8EAgAsAID/////LzMEMjU2NwMEFgUEBf//9BEAHALNBAb/f0AA6iAEICEiIwQkJSYn+vr6+gYHBEAA6iAEICEiIwQkJSYn+vr6+vr6+vr6fwABAAAdLC0u9gQwMSgMBwRkAAAgBBwAIAQgISI= 0 -1
|
||||
+BA8EAgAsAID/////MjMEMjU2NwMEJAUAAAH/9BD+HALNBAb/f0AA6iAEICEiIwQkJSYn+voX+vr6BPYGIwQkJSYnABDa+vr6+vr6AAAAgBIdLC0u9gQwMSgMBwRkAAAgBEQAIAQgISI= 0 99 BA8EAgAsAID/////MjMEMjU2NwMEJAUAAAH/9BD+HALNBAb/f0AA6iAEICEiIwQkJSYn+voX+vr6BPYGIwQkJSYnABDa+vr6+vr6AAAAgBIdLC0u9gQwMSgMBwRkAAAgBEQA 306 \015\004\002\000.\000\128\255\255\255\25523\0042567\003\004\$\005\000\000\001\255\244\016\254\028\002\205\004\006\255\127\@\000\234\032\004\032!\"#\004\$%&.\250\250\023\250\250\250\004\246\006#\004\$%&'\000\016\218\250\250\250\250\250\250\000\000\000\128\018\029,-\.\246\00401\(\012.\004d\000\000\032\004D
|
||||
+73//AO4D9YDuBPOA/0QgIAogChk= 8 -1
|
||||
+BA8EAgAsAARAAOogBAIhIiMEJCUmJ/r6+vr6+vr68QT2AQAAAQkKEAIgA70AARIDBAQFBOjMBwRAAOogBAIhIiMEJCUmJ/r6+gAAAfr6+vr6+vr69AT5HSw9LvYEMC8AAAAAAQAAIAZEACAEICEi 0 -1
|
||||
+BAABAgMEBAUGBwQICQocHR4fBCAhIiMEJCUsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8EQEFCQwRERUZHBEhJSksETE1OTwRQUVJTBFRVVlcEWFlaMgRcXV5fBGBhYmMEZGVmZwRoaWprBGxtHh8EICEiIwQkJSYnBCgpKgAAAS0uLwSAgYKDBISFhocEiImKiwSMi46PBJCRkpMElJWWlwSYmZqbBJydnp8EoKGiggSkpaanBKipqqsErK2urwSwsbI= 0 126 BAABAgMEBAUGBwQICQocHR4fBCAhIiMEJCUsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8EQEFCQwRERUZHBEhJSksETE1OTwRQUVJTBFRVVlcEWFlaMgRcXV5fBGBhYmMEZGVmZwRoaWprBGxtHh8EICEiIwQkJSYnBCgpKgAA 207 \000\001\002\003.\004\005\006\007.\008\009\010\028.\030\031\004\032!\"#\004\$%,-\./\0040123\0044567\00489:\;.<=>?.\@ABC.DEFG.HIJK.LMNO.PQRS.TUVW.XYZ2.\\]^_.`abc.defg.hijk.lm\030\031.\032!\"#.\$%&'.\(\)*\000
|
||||
+BAABAgL8BAUGBwQICQoAAAEfBCAhIjMEJCUsLS4vBDAxMjMENDU2NwQ4OTo7BDw9BFRVVmYEWFlaWwRcAAACBGBhYmMMZGVmZwRoAAABaWprBGxtHh8EICEiIwQkJSYnBCgpKisELC0uLwSYs5qbBISdhocEiImKiwSMjY6PBJCRkpMElJWWlwSYs5qbBJydnp8EoKGiowSkpab//6jLqqsErK2urwSwsbI= 0 -1
|
||||
+Ig== 0 -1
|
||||
+AAABAAAEBAUGBwQICQocHR4fBCAhIiMEJCUsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8EQEFCQwRERUZHBEhJSksETE1OTwRQUVJTBFRVVlcEWFlaWwRcXV5fBGBhYmMEZGVmZwRoaWprBGxtHh8EICEiIwQkJSYnBCgpKisELC0uLwSAgYKDBISFhocEiImBiwSMjY6PBJCRkpMElJWWlwSYmZqbBKOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8WL0= 0 1 AA== 2 .
|
||||
+BAAcAgMEBAUGBwQICQocHR4fBCAhIiMEJDAxMjMENDU2NwQ4OTo7BDw9Pj8A 0 -1
|
||||
+ACA= 2 -1
|
||||
+BOgCFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFQUVFRUVFRUVFRUVFRUVFRUVFRQVFRUVFRUVFQAAARUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRU5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5FRUVFRUVFRUVFRU3FRUDAwMDAwMDAAABCfoD6AID8AID 0 -1
|
||||
+BOgCFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFfQVFRUVFRQV+RUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRU2FRUVFRUVBQUFBQUFBRUVFS0VFX//FRUVFRUVFRUVFQX//wUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRX6FBUVFRUVFRUVFRUAAAEVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFREVFRUVBQUVFRUVFRUVFRUVFRUVFRUVFRUVFfoUFRUVFRUVFRUVFQAAARUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVERUVFRUFBQUFBQUFBQUFBQUFBQUFBQUFBQQsLS4vBAAAAQAAAQ== 0 -1
|
||||
+BOgCFRUVFRUVFRUVFQAAAS8AAAEEMDH5fwQMDRIPECICECIGLi8EMDEqMwQ0NTYiBgQICfl+/AwNEg8EKjMEBwcHBwcHB8XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFhcXFxcXFxcXFxcXFxcXFxcXFxcXFxQAAAAHFyMXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFwMXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxQcHBwcHBykHBwcHBwcHBwcHBwcHBwcIBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBgcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHDgcHBwcHMzMzGjszMzMzMzMzMzMzMzMHBwcHBwcHBwcHBwcHBxYHBwcOBwcHBwcHByEHBwcHBwcHBwcHBwX//wUHBwcHBwcHBwcHBwcHBwcHBxcHBwcHBwcHBwcHBwcCECIHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHFwcHBwcHAwcHBwcHBwIQIgIQIgYuLwAAAQQwMfl/BAwNEg8QIgIQIgYuLwQwMQMzBDQ1NiIGBAgJ+X8EDA0SDwQqMwQHBwcHBwcHxcXlxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcU3CCkqqwQsLS4vBDBBAgAAAQAfBAcHBwcHBwcHB+wGBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBweHBwcHBwcHBwcHBwcHBwcHBwcHcnJycnJycnJycnJycnJycnJycnJycldycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycgcHBwczMzMaOzMzMzMzMzMzMzMzMwcHBwcHBxYHBwcHBwcHBwcHBw4HBwcHBwcHIQcHBwcHBwcHBwcHBf//BQcHBwcHBwcHBwcHBwcHBwcHFwcHBwcHAAAAZAcHBwIQIgcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcXBwcHBwcDBwcHBwcHAhAiAhAiBi4vAAABBDAx+X8EDA0SDxAiAhAiBi4vBDAxKjMENDU2IgYECAn5fvwMDRIPBCozBAcHBwcHBwfFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcUAAAABxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFBwcHBwcHKQcHBwcHBwcHBwcHBwcHBwgHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcGBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcOBwcHBwczMzMaOzMzMzMzMzMzMzMzMwcHBwcHBwcHBwcHBwcHFgcHBw4HBwcHBwcHIQcHBwcHBwcHBwcHBf//BQcHBwcHBwcHBwcBBwcHIgcHFwcHBwcHBwcHBwcHBwIQIgcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHDQcXBwcHBwcDBwcHBwcHAhAiAhAiBi4vAAABBDAx+X8EDA0SDxAiAhAiBi4vBDAxAzMENDU2IgYECAn5fwQMDRIPBCozBAcHBwcHBwfFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxebFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXF//9//8XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcUHBwcHBwcHBwcHB3JycnJycnJychYXMzMzMzMzMzMRMzMzMzMzM/9/EwQUERYXBBgkGhsEFB0CECIGBAgJ+X8EDCcSDwQQERITBEAAFhbogAAAGwQUHQAaMwQ0MX/+//8ICQcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHDgcHBwcHBwchBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBygHBwcHIAAHBwcHBwcHBwcHBwcXBwcHBwcHBwcHB8XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcW3xcXFxcXFxcXFxcXFxcXFxcXFxcXFxQcHBwc= 0 -1
|
||||
+BBwcHAwcHBwcHBw+9KgLAQEBQBwcHBwcwsI2Nv////82NjY2NjY2AAAAAQAjZyw2AAQ2NjY2Ngk2NjY2NIBYNgAQAcw2NjY0/zZLaUtLATa+dnZ2dh9GNjY2NjY2NjYAAAABABtn6gABbEsxS0tpS0sBNr52dnZ2H0Y1ADY2NgAANjYkNjY0LRAAATY2NjYZNjZPNjY2RzYkNk/pEIAAdnZ2dnZ2dv8LAED/NjY2NgAAAQABAAABAAEAgAAAATY2CjYJNjY2NjSAWDYAEAHMNjY2NP82S2lLSwE2vnZ2dnYfRjY2NjY2NjY2AAAAAQAbZ+oAAWxLMUtLaUtLATa+dnZ2dh9GNQA2NjYAADY2JDY2NC0QAAE2NjY2GTY2TzY2Nkc2JDZP6RCAAHZ2dnZ2dnY2AAHQ0JAABf//BRQ/NoABAAABWCs2NjY2//92VHaRdkBAQAAAAAAAAQAjZyw2AAQ2NjY2Ngk2NjYyNIAAAQAb 0 -1
|
||||
+AgAAAgBAAhAiAhBAAhAiAhAiBgQICf9/BAwNEg8EEAgSEwQBFRYXBBg6GhsECx0eHw01KSIZBCQkAAD/AEACECICEEACECICECIGBBAiAhBAAhAiAhAfAhBAAgQgKRcjBAQkAAACAEACEAACEEACECICECICECIGBAgJ/38EDA0SDwQQCBITBAEVFhcEGBQdHh8mNSkiGQQkJAAAAg5AAhAiAhBAAhAiAhAiAhBAAhAiAhAfBCApIiMEJCQAAAIAQAIQIgIQQAIQIgIQAAA= 0 206 AgAAAgBAAhAiAhBAAhAiAhAiBgQICf9/BAwNEg8EEAgSEwQBFRYXBBg6GhsECx0eHw01KSIZBCQkAAD/AEACECICEEACECICECIGBBAiAhBAAhAiAhAfAhBAAgQgKRcjBAQkAAACAEACEAACEEACECICECICECIGBAgJ/38EDA0SDwQQCBITBAEVFhcEGBQdHh8mNSkiGQQkJAAAAg5AAhAiAhBAAhAiAhAiAhBAAhAiAhAfBCApIiMEJCQAAAIAQAIQIgIQQAIQIgIQAAA= 626 \000\000.\000\@.\016\".\016\@.\016\".\016\".\004\008\009\255\127\004.\013\018\015\004\016\008\018\019\004\001\021\022.\004\024:\026\027\004\011\029\030\031\0135\)\"\025\004\$\$\000\000\255\000\@.\016\".\016\@.\016\".\016\".\004\016\"\002\016\@.\016\".\016\031.\016\@.\004\032.\023#\004\004\$\000\000\002\000\@\002\016\000\002\016\@\002\016\"\002\016\"\002\016\"\006\004\008\009\255\127\004\012\013\018\015\004\016\008\018\019.\001\021\022\023.\024\020\029\030.&5\)\"\025\004\$\$\000\000\002\014\@\002\016\"\002\016\@\002\016\"\002\016\"\002\016\@\002\016\".\016\031.\032\)\"#.\$\$\000\000.\000\@.\016\".\016\@.\016\".\016\000
|
||||
+AgAAAuZAAhAiAhBAAhAiAhAiBgQICf9/BAwNAAABEg8EEAgSEwQBFRYXBBg6GhsECx0eHw01KSIZBAAABQAAAEACECQB8kACECIC8iEGBBAiAhBAAhAiAhAff////yMEByQAAAIAAAABQO0PAAIQQAIQDwIQImAQIh4ECAn/AR8mNSkiGQQkJAAAgiJAZBAiAhAAAAEigBACEAIQIgAAAgBAAhAAAA== 0 64 AgAAAuZAAhAiAhBAAhAiAhAiBgQICf9/BAwNAAABEg8EEAgSEwQBFRYXBBg6GhsECx0eHw01KSIZBAAABQAAAA== 202 \000\000.\230\@.\016\".\016\@.\016\".\016\".\004\008\009\255\127\004.\013\000\000\001\018\015\004\016\008\018\019\004.\021.\023\004\024:\026\027\004\011\029\030\031\0135\)\"\025\004\000\000\005\000\000
|
||||
+BICBgoMEhIWGhwSIiYqLBIyNjo8EkJGSkwSUBJiZmpsEnJ2enwSgoaKjBKSlpqcEqKmqq1RVVldYWZWWlwSYmZqbBJydnp8EoKGiowSkpaanBKipqqtUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH0Afg== 0 -1
|
||||
+EgEABIAQABABAIOKAAAB6mtsAaurqwHqa2xtbauri6ChoqMAAAABPVxNP0ABAAEsBf//BQABT20AHgFo6OpzbG2rq6uJb3BxZBZ+ 0 -1
|
||||
+AQAAAIMFhIWGhweaiYqLBIyNjo7ykKcAgP//hpaDBISFhocEATY2NjY0hiABADY2NiMAgAAAAAABNjY2NjY2NjZ+AAAAAAAhHxtn6gABbEt2AAAAQBgzNjYAADY2JDY2NP9/ATY2NjY2FTYVTzYAQDY2JACAAAyAGQB2dnZ0dn//Yv8AAAE2NjY0Nt3d3d3d3d0AAAHd3cfd3d3d3d3diosEpI0AIAEAAQB4AAABNjYK3d3d3d3d3d3d3d3d3f3H3cft3d3d3d3diisEpI2PBJCnAID//4aWgwSEhYaHBIiOjwAAAbMgABYWFhYWFgAAARY2fXZ2dgAAAQAb 0 3 AQAA 5 \000
|
||||
+BICBgoMEhIWGhwSHiYqLBIyNjo8EkJGSkwQAAAGXBJiZmpsEnJ02AAAAAAsBZxU2AAQ2GjYAAQltbW1tbW1tbW1tbW1tbTY2NjY0gFg2ABABNjY2l5sEnJ02AAAAAAABZxU2AAQ2GjY2NgSYmZqbBJydNgAAAAAAAWcVNgA2NP82NjY2AAAA3gM/NjY2NjY2NjY2NjY2AAAAAQAbZ+oACmxLS0tLaUtLATa+dnaSdh9GFAA2AAABNjT/fzY2NjY2NhVDNk82ABAAACQ2Nv//gAB2dmX///9//wsAAAEiQP82NjYAAAFnFTY0NgHQ0NAz0NDi0NC9EAAA+y0UFAB2AAHQ0JAAABQUZAAAAIABAAABWCs2NjY2NnZ2dnZ2dkABAAAAAAEAGw== 0 41 BICBgoMEhIWGhwSHiYqLBIyNjo8EkJGSkwQAAAGXBJiZmpsEnJ02AAA= 133 \128\129\130\131.\132\133\134\135.\135\137\138\139.\140\141\142\143.\144\145\146\147.\000\000\001\151.\152\153\154\155.\156\1576\000
|
||||
+BICBgoMEhIWGhwSIiYqLBIyNjo8EkJGSkwSUlZaXBJiZmpsEnJ02AAAAAQAbZxU2AAQ2NjY2Ngk2NjY2NIBYNgAQATY2NjY0/zY2NjYAAADe/3//NjY2NjY2NjYVNjY2NjYAAAABABtqampqbEtLS0tpS0sBNr52dnZ2H0YUADY2NgAANjYkNjY0/382NjY2BAAVNjZPNjY2NjYkNjb//4AAdnZ2dnZ2dv8LAED/LDY2NjQ2AAABAAEAgAAAATY2ClA2NtDO0NDQ0NDQ0DPQ0OLQ0NAAAAD7EBQUNjYAAdDQkAAAFBQUFDY3gAEAAAFYKzY2NjY2dnZ2dnZ2QAAAAAAAAQAb 237 1 AA== 2 .
|
||||
+BGQDAwgINjZWNhU2NgE2NjY2NjY2NjYlNkk2NjY2NjY2NjY2NiIiIiIiLyIiIi8EMBQyMwQ0NTY3BDg5LTsEPD0+PwA= 0 -1
|
||||
+AAEAAQ== 0 1 AA== 2 .
|
||||
+BOgDAwgINjZWNhU2NgE2NjY2NjY2NjY2NjY2UjY2AzY2NjY2NjY2NjYlNkk2NjY2NjY2NjY2NiIiIjYAAEVkNgAANjY2NjY2NgABQDY2NjYyNjYjQzb/fxN1Njb8NjaeQjwAIVkTNjY2Nfs2NjaeNFnkGDITNjY2NjbvHDf/fzY2NgAAAf///382VzY2NgA2NjY2NjY2NjY2NjY2BQAANjb/////NgAAAFw2f////zY2NjE2NjY2//82/382NjYAAAH///9/ZAABNjY2NjY2Np5eXl4RATYAAEVkNgAANjY2NjY2NgABQDY2NgABNg== 0 236 BOgDAwgINjZWNhU2NgE2NjY2NjY2NjY2NjY2UjY2AzY2NjY2NjY2NjYlNkk2NjY2NjY2NjY2NiIiIjYAAEVkNgAANjY2NjY2NgABQDY2NjYyNjYjQzb/fxN1Njb8NjaeQjwAIVkTNjY2Nfs2NjaeNFnkGDITNjY2NjbvHDf/fzY2NgAAAf///382VzY2NgA2NjY2NjY2NjY2NjY2BQAANjb/////NgAAAFw2f////zY2NjE2NjY2//82/382NjYAAAH///9/ZAABNjY2NjY2Np5eXl4RATYAAEVkNgAANjY2NjY2NgABQDY2NgA= 460 \232\003\003\008.66V6\02166\001.666666666666R66\0036666666666%6I66666666666\"\"\"6\000\000Ed6\000\000666.666\000\001\@6666266#C6\255\127\019u66\25266\158B<\000!Y\0196665\251666\1584Y\228\0242\01966666\239\028.\255\127666\000\000\001\255\255\255\1276W666\0006666666666666\005\000\00066\255\255\255\2556\000\000\000\\6\127\255\255\25566616.66\255\2556\255\127666\000\000\001\255\255\255\127d\000\0016666666\158^^^\017\0016\000\000Ed6\000\0006666666\000\001\@666
|
||||
+ATY= 0 -1
|
||||
+BOgDAwgINjZWAAABNgE2NjY2NjY2NjY2NjY2UjY2AzY2NjY2NjY2NjYlNkk2NjY2Ni02PTY2NiIiIjYAAEVkNgAANjY2NjY2NgABQDY2NjYyNjYjQzb/fxN1Njb8NjaeQgAAATwAIVkTNjY2Nfs2NjaeNFnkGDITNjY2Izb/HDf/f1Q2NgAAAQAAF4AA/382VzY2NgA2NjY2NjY2NjY2NjY2AAAANmT/////FgAAAQAANjb/////NgAAAFw2f////zY2NjE2NjY2//82//9/ZAABNjY2NjY2Np5eXl4RATYAADY2NjY2NjY2NlI2NgM2NjY2NjY2NjY2JTZJNjY2NjYAAAE2NjYiIiI2AABFZDYAADY2NjY2NjYAAUA2NjY2MjY2I0M2/38TdTY2/DY2nkIAAAE8ACFZEzY2NjX7NjY2njRZ5BgyEzY2NjY2/xw3/382NjYAAAEAAAGAAP9/Nlc2NjYANjY2NjY2NjY2NjY2NgAAADY2/////wAAAAEAADY2/////zYAAABcNn////82NjYxNjY2NjY2NgABQDY2NgABNg== 0 -1
|
||||
+BAFXAAIEAg== 2 -1
|
||||
+BOgDAwgINjZWNhU2NgE2NjY2NjY2NjY2NjY2UjY2EzY2NjY2NjY2NjYlNkk2NjY2NjY2NjY2NiIiIiIiIkAiNugDNjY2NjY2NjY2NjZDNjY2NpiYmDY2NjYiICIiIiIiIiIiIiIiIiJJNjY2NjY2NjY2NjYiIiIiIiJAIjboAzYiIiIiIiIiIiIiIiI2NjY2JzY2NjZkZAAANjY2NjY2NjY2NjYiIiIiIiJAIjboAzYiIiIiIiIiIiIiIgA2NjY2TV8EYGFiYwRkZWZnBGhpamsEbG0eNgQgISIjBCQlJicEKCkqKwQsLS4vBICBgoMEhIWGhwSIiYqLBIyNjo8EkJGSkwSUlZaXBJiZmpsEnJ2enwSgoaIAAA== 0 -1
|
||||
+7I2NjY2NjY2NjY2NjQACjY2NjY2NjY2NjY2NjY2NjY2NAAKNjY2NjY2NjY6NjY2NjY2NjY2Nm42NjY2NjY2NjY2NjWyNjY2NjY2kjY2NjY2NjY2NjTY2NjY2PQAAATY2RDY2U1I2NgAAAQM2NjY2Nvc2dnbQKjYQTfgFACEANzI2OekAABA2NjY2EABxGwAAATY2AAABAHZ2dnZ29g== 0 -1
|
||||
+BOgAATY2NjY2fwDiNjY2NjY2NjY2NgAAATY2NjY2NjYmNjb/ADY2NjY2AwAAAQT9BQcICXx8fHx8fHx8AAABAHx8fHx8IAB8 0 61 BOgAATY2NjY2fwDiNjY2NjY2NjY2NgAAATY2NjY2NjYmNjb/ADY2NjY2AwAAAQT9BQcICXx8fHx8fHx8AA== 123 \232\000\0016.666\127\000\2266666666666\000\000\0016666666&66\255\00066666\003\000\000\001\004\253\005\007\008\009||||||||
|
||||
+wMAAAcDAwMDANjY2NgAAGsAfNjY8NjYkFTY0NjYyNjY2NjYAEDY2S0tLS0sBFr4fRhQ2NjY2AAA2Nlg2djw2NjY2NgAAAQABNjY2PDY2JBU2BLM2ojY2NjY2Bf//BUU2OTY+NiU9PT0BNgAQwMAAAcDAwMDANjY2NgAAGsAfNjY8NjYkFTY0NjYyNjY2NjYAEDY2S0tLS0sBFr4fRhQ2NjY2AAA2Nlg2djw2NjY2NgAAAQABPjY2PDY2JBU2BLM2ojY2NjY2Bf//BUU2OTY+NiU9PT0BNjY2AAAAAQA2NDY2MjY2NjY2ABA2NktLS0AAAAFLATa+H0YUwB82Nn7s7OzsEBQUDDY2NgAAATY2NjZYNjY2Nk02NlEAEQEANjYABf//BUU2OTY2NiU9PT09NgAAAV8//3Y2AAABNjY0NgAAAYA2PRAANjYAAAABADY0NjYyNjY2NjYAEDY2S0tLQAAAAUsBNr4fRhTAHzY2fuzs7OwQFBQMNjY2AAABNjY2Nlg2NjY2TTY2UQARAQA2NgAF//8FRTY5NjY2JT09PT02AAABXz//djYAAAE2NjQ2AAABgDY9EAD7+/v76fv7+////w== 16 -1
|
||||
+wMAAAcDAwMDANjY2NgAAGsAfNjY8NjYkFTY0NjYyNjY2NjYAEDY2S0tLS0sBFr4fRhQ2NjY2AAA2Nlg2djw2NjY2NgAAAQABNjY2PDY2JBU2BLM2ojY2NjY2Bf//BUX/gDY+NiU9PT0BNjY2AAAAAQA2NDY2MjY2NjY2ABA2NktLS0AAAAFLATa+H0YUwB82Nn7s7OzsEBQUDDY2NgAAATY2NjZYNjYkNk02f/8AEQEANjYABf//BUU2OTY2NiU9PT09NgAAAfI//3Y2AAgBNjY0NgAAAYA2PRAA+/v7+/v7+/v///8= 16 -1
|
||||
+BAABAgMEBAUGBwQICQoLBBINDg8EEBESEwQUFRYXBBgZGhsEHB0eNjY2AAA2NjY2Njw2ATYYNkUAAAIQ//9/TExMTExMTExMTExMTExMTExMTExMTENMTBMTExNqEykTlhMTEyYLAAEUFAAABjY2NjYAAAE2NhwAAAABAAABBDb/fwAAAzYAAQX//wU2NgD7SDYkNjk5OTk5OTk5OTk5OTk5OTk5OTk5PTY0pjY2NjY2NiQAAAE2Nn82cXZ2dnZ2dnZ20Coq0DPQ0P/QM9DQ//9//9AAAAHSu9DRkNAABgAA/xQUAAAGfzYkNjY0Nks2AAQeVTb/AAABNn////8= 0 -1
|
||||
+xcXFxcXFxcXFxcXFxcXFxcXFxcXFxRDAwExMaExMTExMHzY7TTY2JBU2NDY2MjY2NjY2AxA2NktLS0tLwDY2NjYAABrAHzY2MzYQAN4HBzc2ATY2AxA2NktLS0tLwDY2NjYAABrAHzY2NjY2NjYWvh8AAAFGFDA2NjYAADY2WDZ2PDY2NjY2ADY2NjY2NjYAAAE2NjY2NgMQNjZLS0tLS8A2NjY2AAAawB82NjY2NgCAAAA2NjYuLi4uLi4uLi4hLi4uLi4uLi4uLi4uLi4uNjY2NjY2NjY2ozY2NjZENiU2njY2NjY2NjY2NjY2NjY2FzY2NgAA 197 48 Li4uLi4uLi4uLjY2NjY2NjY2NqM2NjY2RDYlNp42NjY2NjY2NjY2NjY2Nhc2NjYA 65 \.\.\.\.\.\.\.\.\.666666666\1636666D6%6\15866666666666666\023666
|
||||
+ASY= 0 -1
|
||||
+AAEAIA== 0 1 AA== 2 .
|
||||
+BBABggMEBAAABBABggMEBAUG6wQICQoLBAxuBBQtLiBQMwQzNVEENDUpNwQ4ADkEMDFQKhcELC0uIAQwMVAzBAQzNTY0NQ== 0 -1
|
||||
+AAAAGxsfGxv51ED/ACBk/vYbGxsbGxsbWRsbBQAbGxwbEAAAAAEb/QEAgACYAAEbGxsbGxtAG9EbJhsbAAAAGwMbJhsbAAAABwAg0rBpaWlpaWlpaWlpaWJpaWlpaQAAAAAAAQAAHSmJGw== 27 -1
|
||||
+AACrq6r/7Q== 0 1 AA== 2 .
|
||||
+BAABAgLgAeEBgADjAeQB6QHqAesB8wH0AfUB9gH3AfgB+QH6AfsB/AEaAv4= 0 -1
|
||||
+/38AAAEAAAHj/CGaygAEAAA= 0 -1
|
||||
+BAABAgICAgICAgICLhwEMDEzAiMEABD/BCEiI1UNDg8GBA81/QQUIyT6AAD6LgAAAANAAAAALi4uLi4uLk8uLi4uLi4uLiMAAAIAAA4= 0 -1
|
||||
+BAABAgICAgICAgICLhwEMDEyMwICAgICAgQUFRYXAgICAgICAnWAAAAABCIjBACQ/wQhIiNVDQ4PBgQPCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoSEwQUIyT6AAD6LgAAAANAAAAALi4uLi48Lk8uLi4uLi4uLiMAAAIAAA4= 0 40 BAABAgICAgICAgICLhwEMDEyMwICAgICAgQUFRYXAgICAgICAnWAAA== 106 \000\001\002\002.\002\002.\002\002.\.\028.0123.\002\002.\002\002.\020\021\022\023.\002\002.\002\002.u\128
|
||||
+BAABAgICAgICAgICLhwEMDEyMwIGBgYGBgYkBgICAgICBBQVFhcCAgICAgICdSMEDQAEIgAAARD/BCEiI1UNDg8GBA8SEwQDIyT6AAD6LgAAAANAAAAALi4uLi4uLk8uLi4uLi4uLiMAAAIAAA4= 0 77 BAABAgICAgICAgICLhwEMDEyMwIGBgYGBgYkBgICAgICBBQVFhcCAgICAgICdSMEDQAEIgAAARD/BCEiI1UNDg8GBA8SEwQDIyT6AAA= 228 \000\001\002\002.\002\002.\002\002.\.\028.0123.\006\006.\006\006\006\$\006\002.\002\002.\004\020.\022\023\002\002\002\002\002\002\002u#\004\013\000\004\"\000\000\001\016\255.!\"#U.\014\015\006\004\015\018\019\004\003#\$\250\000
|
||||
+d3gXBf//BUcQp0CAAAABfx4= 2 -1
|
||||
+ZAABAgICAgICZS3RA3d3dwdleGFtcIhlA2NvbQAAAQABwAw= 0 -1
|
||||
+Af8= 0 -1
|
||||
+BAABAgICAgICAgICLhwEMDEyMwICAgICAgICAgICAgICAgICAgICAgICAgICLhwEMDEyMwQ0NXYBdwF4AXkBegF7AXwBfQF+ATZuAW8BcAFxAXIBcwF0AXUBdgF3Af8BeQF6AXsBfAF9AX4BfwA= 0 110 BAABAgICAgICAgICLhwEMDEyMwICAgICAgICAgICAgICAgICAgICAgICAgICLhwEMDEyMwQ0NXYBdwF4AXkBegF7AXwBfQF+ATZuAW8BcAFxAXIBcwF0AXUBdgF3Af8BeQF6AXsBfAF9AX4BfwA= 228 \000\001\002\002.\002\002.\002\002.\.\028.0123.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\002.\002\..\0040123\00445v\001w\001x\001y\001z\001{\001|\001}\001~\0016n.o.p.q.r.s.t.u.v.w.\255.y.z.{.|.}.~.\127
|
||||
+BAABAAABAwgINjY2NgAAAMAfNjZkAAAAAAEAFPY2HjY2NPoAAPoABAEAAAE2NgAAATb7IPvz+/sAAAFCAAABRDYkDzI0NjY2NjY2NjYAAAABNlg2Nv9/NjY2NgAAAQA2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2/zY+NjY2NjYAADYA/wA2DAEAAQH0wB82NjY2 0 -1
|
||||
+ABAAFwMfExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4BPw== 0 1 AA== 2 .
|
||||
+hBABAgMAAAERCf//hBABAgMsARAAAAFkCQsADwAQANRMAACEMAECAwAAAAABHQEBKUIK 0 -1
|
||||
+AAFAAGQpCgo= 0 1 AA== 2 .
|
||||
+BBABAAABf/8BCQEBAQACENQBAQEBAQEBAQEBAWQBAAEBAgEBAQEBKSkp 0 -1
|
||||
+BBABAgMsLUcBCQEBAQACENQBAQEBAQEBAQEBAWQBAAEBAgEkAQEBKSkp 0 -1
|
||||
+BBABAgMsLS4A/zA0MvoAAPo2NwQ4PD03PwAEJwRZWVlZWVlZWVlZGwABHR4fBCA2IiMEJCUmJwQoKQACEu4rLS4v9y+ysn8ENDU2NwQ4ORUWFwQgISIjBCSyBDQ1Nh0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHQAAAR0dHR0dHR0dHR0dHR0+HR0dHR0dHR0dDx0dHR0dHR0dHR0dHR0FHR0dHR0dHR0dHR0dHR0dFR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0UHR0dHR0dHR0dHQAAAR0BAwAAAQT9BQcICXy0BDB8fHx8AAABAHx8fHx8IAB8 0 222 BBABAgMsLS4A/zA0MvoAAPo2NwQ4PD03PwAEJwRZWVlZWVlZWVlZGwABHR4fBCA2IiMEJCUmJwQoKQACEu4rLS4v9y+ysn8ENDU2NwQ4ORUWFwQgISIjBCSyBDQ1Nh0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHQAAAR0dHR0dHR0dHR0dHR0+HR0dHR0dHR0dDx0dHR0dHR0dHR0dHR0FHR0dHR0dHR0dHR0dHR0dFR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0UHR0dHR0dHR0dHQAAAR0BAwAA 709 \016\001\002\003.-\.\000\255042\250\000\000\25067\0048<=7?\000\004'\004YYYYYYYYYY\027\000\001\029\030\031\004\0326\"#.\$%&'.\(\)\000\002.\238+-\./\247/\178\178\127\0044567\00489.\022\023\004\032!\"#\004\$\178\004456\029\029\029\029\029\029\029.\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\000\000\001\029\029\029\029\029\029\029\029\029\029.\029\029>\029\029\029\029\029\029\029\029\029\015\029\029\029\029\029\029\029\029\029\029\029\029\029\005\029\029.\029\029\029\029\029\029\029\029\029\029\029\029\021\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029\029.\029\029\029\029\029\029\029\029\029\029\029\020\029\029\029\029\029\029\029\029\029\029\000\000\001\029\001\003\000
|
||||
+4BABAgMsLTw9Nz8ABCcWFwQYGRobBBwdHh8EICEiIwA= 0 -1
|
||||
+BAABAgMEBAUGBwQICQoLBAwNDgICAgICAicEKCkqqwQsLS4vBDACAi0uLwQwAgICAgICEAICAgICBCgpKisELC0uLwQwMTIzBDQ1NjcEODk6OwQ8PT4/AA== 0 -1
|
||||
+BAABAgMEBAUGBwQICQoLBAwNDgICAgICAicEKCkqKwQsLS4vBDACAgICAgICAgABADY2JzY2NjQ2WDY2NoAAAAA2AAABNjY2AAAAAMAfNjY2NjYkFTY0NjY2NjY2NjY2NjY2NjYAAAABBDY2NjY2NjY2NjY2NjYAAAABABtLbEtLS0tLS0sBAAABRhQ2gDY2NjY2NjY2NjY2NjY2NjY2NiQ2Nn92dnZ2dnZ2dnZ2dnZ2AXZBNgE2HgQAQP82NjY2NDYAAAEAAAGANhkWNjY20NDQ0NDQ0NDQM9DQ0NDQ0NDQ0NDQkNAAFBQUFDY2NjY2NjZYNjY2Nk02NlEAEQEAAAEjNjZFNjk2NjYlPT09VDYAQP82NjY2NDYAAAGANj0QAPsAAAH7AAAAZPv7+/sg+/v7+0JEAAABNgsLCwsLCwsLCwsLCwsLCwuYCwsLCwsLCwsLCws= 0 -1
|
||||
+AQLAAA== 0 -1
|
||||
+BAABAgMEBAUGBwQEDA2ADwQQBBgZGhsEHB0hIiMEJCUmJwQoKSorBCwtLi8EMDEyMwQ0NTY3BDg5OjsEPD0+PwRAQUJDBERFRkcESElKSwRMTU5PBFBRUlMEVFVWVwRYWVpbBFxdXl8EYGFiYwRkZWZnBGhpamsEbG1ubwRwcXJzBHR1dncEeHl6ewR8fX5/BICBgoMEhIWGhwSIiYqLBIyNjo8EkJGSkwSUlZaXBJiZmpsEnJ2enwSgoaKjBKSlpqcAAAGqqwSsra6vBLCxsrME 0 195 BAABAgMEBAUGBwQEDA2ADwQQBBgZGhsEHB0hIiMEJCUmJwQoKSorBCwtLi8EMDEyMwQ0NTY3BDg5OjsEPD0+PwRAQUJDBERFRkcESElKSwRMTU5PBFBRUlMEVFVWVwRYWVpbBFxdXl8EYGFiYwRkZWZnBGhpamsEbG1ubwRwcXJzBHR1dncEeHl6ewR8fX5/BICBgoMEhIWGhwSIiYqLBIyNjo8EkJGSkwSUlZaXBJiZmpsEnJ2enwSgoaKjBKSlpqcA 415 \000\001\002\003.\004\005\006\007.\004\012\013\128.\004\016\004\024\025\026\027\004\028\029!\"#\004\$.&'\004\(\)*+\004,-\./\0040123\0044567\00489:\;\004<=>?\004\@ABC.DEFG.HIJK.LMNO.PQRS.TUVW.XYZ[.\\]^_.`abc.defg.hijk.lmno.pqrs.tuvw.xyz{.|}~\127.\128\129\130\131.\132\133\134\135.\136\137\138\139.\140\141\142\143.\144\145\146\147.\148\149\150\151.\152\153\154\155.\156\157\158\159.\160\161\162\163.\164\165\166\167
|
||||
+GxsAAAEbGxsbGxsbGxsbAxsbGxsbGxsbGxsYIBsbGxsbGxs2GxsbGxsbGxsbCxsbGxsbGxsbGxsbFRsbGxsbGxubGxs3GxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsUGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGx8DGxsbGxsbAAEbGxsbGxsAAAHqGxsa+gAbGxsbGxsbGxsXGxsbGxsbG4AbGxsbGxsbGxsbGxsbGxsbGxsbGxv7GxsbGxsbGxsbGxsbGxsbGxsbGxs0G/waGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbJh8bGxsEGxsbGxsbGzEbGxsbAPoAAPo= 155 -1
|
||||
+BBgfKgAA 0 6 BBgfKgAA 14 \024\031*\000
|
||||
+wMAAAAABAcDAwMDANjY2NgAAGsAfNjY8NjYkFTY0NjYyNjY2MzYAEDY2S0tLABBQNktLS0tLATY2/+I2Nlg2djw2NjYAAAE2KQAAAf+ANjY2PDY2MRU2BLMF9AAB//8FRTYAEDY2S0tLQAAAAUsQNr4fRhTAHzY2fuwAAAHsrOwQAAABJBQMNjYAABAANjY2LVg2NjY2NiQVNjQ2NjI2NkMzNgAQNjZLS0s2JUU2HzM2ABA2NktLS0tLARu+H0YUNgABgDY9ARa+H0YUNjYQAPv7+/v7+/v7//8b 16 1 AA== 2 .
|
||||
+wMAAAcDAwMDANjY2NgAAGsAfNjY8NjYkFTY0NjYyNjY2NjYAEDY2S0tLS0sBFr4fRhQ2NjY2AAA2Nlg2djw2NjY2NgAAAQABNjY2PDY2JBU2BLM2ojY2NjY2Bf//BUU2OTY+NiU9PT0BNjY2AAAAAQA2NDY2MjY2NjY2ABA2NktLS0AAAAFLATa+H0YUwB82Nn7s7OzsEBQUDDY2NgAAATY2NjZYNjY2Nk02NlEAEQEANjYABf//BUU2OTY2NiU9PT09NgAAAfJAFXaANj0QAPv7+/v7+/v7//// 16 -1
|
||||
+wMAAAcDAwMDANjY2NgAAGtgfNjY8NjYkFTY0NgAAAGQ2NjYAEDY2S0tLS0sBFr4fADaiNjY2NjYF//8FRTY5Nj42JT09PQE2NjYAAAABADY0NncyNjY2NjYAEDY2S0tLQAAAAUsBNr4fRhTAHzY2QOzs7OwQFBQMNjYQAAABNjY2Nlg2NjY2TTY2UQARAQA2NgAF//8FRTY5NjYqJT09PT02AAAB8j//djYAAAE2NjQ2AAABgDY9EAD7+/v7+/v7+////w== 16 -1
|
||||
+wMAAAcDAwMA2JBU2NDY2MjY2NjY2ABA2NjY2NjYAADY2WDZ2PDY2NjZLS0tLSwEWvh9GFDZFNjYAADY2WDZ2PDY2NjY2AAABAAE2NjY8NjYkFTYEszaiNjY9NjYF//8FRTY5Nj42JT09PQE2NjYAAAABADY0NjYyNjY2NjYAECc2S0tLQAAAAUsBNr4fRhTAHzY2fuzs7OwQFDY2Nlg2JDY2TTY2UQARAQA2NgAF//8FRTY5NjY2JT09PT02AAAB8j//djYAAAE2NjQ2AAABgDY9EAAAAAH7+/v7+/v7+////w== 16 -1
|
||||
+wMAAAcDAwMDANjY2NgAAGsAfNjY8NjYkFTY0NjYyNjY2NjYAEDY2S0tLS0sBFr4fRhQ2NjY2AAA2Nlg2djw2NjY2NgAAAQABNjY2PDY2JBU2BLM2ogAENgAQAAD/BWM2OTY+NCU9PT0BNjY2AAAAAQA2NDY2MjY2NjY2ABA2NktLS0AAAAFLATa+H0YQwB82Nn7s7OzsEBQUDDY2NgAAATY2NjZYNjY2Nk02NlEAEQEANjb4Bf//BUU2OTY2NiVEPT09NgAAAfI//3Y2AAABNjY0NgAAAYA2PRAA+/v7+/oAAPr///8= 16 2 NjY2NgAQNjZLS0tLSwEWvh9GFDY2NjYAADY2WDZ2PDY2NjY2AAABAAE2NjY8NjYkFTYEszaiAAQ2ABAAAA== 127 666\000\01666KKKKK\001\022\190\031F\0206666\000\00066X6v<66666\000\000\001\000\001666<66\$\0216\004\1796\162\000.6\000\016\000
|
||||
+wMDzAMDAwMDANjY2NgAAGsAfNjY8NjYkFTY0NjYyNjY2NjYAEDY2S0tLS0sBFr4fRhQ2NjY2AAA2Nlg2djw2NjY2NgAAAQABNjY2PDY2JBU2BLM2ojY2NjY2Bf//BUU2OTY+NiU9PT0BNjY2AAAAAQA2NDY2MjY2NjY2ABA2NktLS0AAAAFLATa+H0YUwB82Nn7s7Ow9PT09NgAAAewQFBQMNjY2AAABNjY2Nlg2NjY2TTY2UQARAQA2NgAF//8FRTY5NjY2JT09PT02AAAB8j//djYAAAE2GjQ2AAABgDY9EAD7+/v7+/v7+/9k/w== 16 -1
|
||||
+wMAAAcDAwMDANjY2NgA2S0tLS0sBFr4fRhQ2NjY2AAA2Nlg2djw2NjY2BLM2ojY2Bf//BUU4OTY+NiU9PT0BNjY2AAAAAQAuNDY2YjY2NjY2ABA2NktLS0AAAAFLATa+H0YUwB82Nn7s7OzsEBQUDDY2NgAAATQ2NjZYNjY2Nk02NlEAEQEANugDBf//BUU2OTY2NiU9PT09NgAAAfI//3ZCAAABNjY0NjY2NgAAAYA2PRAA+/v7+/v7+/v/ABA= 16 -1
|
||||
+wMAAAcDAwMDANjYEHB0eHwQgISIjBCQlJicAKCkqKwQsLS4vBAkJCQkJCQkJCQkJAAABCQkJCQkJCQkJCQkJCTAxMjP+MzU2NwQ4OTo7BDw9 16 11 BCAhIiMEJCUmJwA= 15 \032!\"#.\$%&'
|
||||
+AX8= 0 -1
|
||||
+AQ== 1 -1
|
||||
+wMAAAcDAwMDANjY2NgAbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbwxsbGxsbGxsbGxsbGxsbGxsCGxsbGxsbGxsbGxsbGxsbGxsVGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxkbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbAxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGyYbEBsbGxsbGxsbGxsbGxsbGxsb 16 -1
|
||||
+wMAAAQAAAcYEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYX6hcZGhsEHB0eBwcHBwcHBwcHB/cHBwcHBwcHBwcfBCAhIvIAASMEJCUmEAQoKSorBCwtLi8AMA== 16 53 CgsEDA0ODwQQERITBBQVFhfqFxkaGwQcHR4HBwcHBwcHBwcH9wcHBwcHBwcHBx8EICEi8gA= 188 \011\004\012\013\014\015\004\016\017\018.\004\020\021\022\023\234\023\025\026\027\004\028\029\030\007\007\007\007\007.\007\007\007\007\247\007\007.\007\007\007\007\007\007\031.\032!\"\242
|
||||
+AgAfBCApIiMEJCTrJwQIKSqrBCwtLi8EMEECAB8EBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwYHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBw4HBwcHBzMzMxo7MzMzMzMzMzMzMzMzBwcHBwcHBwcHBwcHBwcHBwcHDgcHBwcHBwchBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcXBwcHBwcHBwcHBwcHAhAiBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBxcHBwcHBwcHBwcHBwcCECICECIGLi8AAAEEMDH5fwQMDRIPECICECIGLi8EMDEqMwQ0NTYiBgQICfl/BAwNEg8EKjMEBwcHBwcHBwcHBwcHBwcHBxAREhMEFBESQAABFhczMzMzMzMzMxEzMzMzMzMz/38TBBQRFhcEGCQaGwQUHQIQIgYECAn5fwQMJxIPBBAREhMEQAAWFuiAAAAbBBQdABAzBDQxf/7//wgJBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcOBwcHBwcHByEHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBxcHBwcHBwcHBwcHBwcHBwd/AAQkNB0CECICEEACECICECISQAABFhcEGBkaGwQUHSAfADMzMw== 0 -1
|
||||
+AAEAEP8AAQD3 0 1 AA== 2 .
|
||||
+AegDCAg2HzY2AAAAwB82NjY2NiQVNjQ2NjY2NjY2NgAQNgAAATY2NjY2NjY2AAABAAE2NjZFNjYVNgAENjY2NjY2JzY2NjQ2WDY2NjY2NjY2AAABNjY2AAAAAMAfNjbj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+M2NjYkFTY0NjY2NjY2NjY2NjY2NjYAAAABBDY2NjY2NjY2NjY2NjYAAAABABtLbEtLS0tLS0sBAAABRhQ2gDY2AAA2NiQ2NjQ2NjY2NjY2NjY2NjY2NjY2NiQ2Nn92dnZ2dnZ2dnZ2dnZ2dnZBNgE2HgQAQP82NjY2NDYAAAEAAAGANhkWNjY20NDQ0NDQ0NDQM9DQ0NDQ0NDQ0NDQkNAAFBQUFDY2NjY2NjZYNjY2Nk02NlEAEQEAAAEjNjZFNjk2NjYlPT09VDYAQP82NjY2NDYAAAGANj0QAPv7+/v7+/v7+/sg+/v7+0JEAAABNgsLCwsLCwsLCwsLCwsLCws= 0 -1
|
||||
+Bf//BcDAwMDANjY2NgAAVwECAVcBAQIBVwEBAQECAVcAAA== 16 17 AQIBVwEBAgFXAQEBAQIBVwA= 34 \002.W.\001.\001W.\001.\001.\001W
|
||||
+BAABAgMEBAUGBwSICQoLBAwA//wNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIj538lRicEKCkqKwQsLS4vBDAxMjMENDU2PgQ4OTo7BDwQPj8A 0 -1
|
||||
+BAABAgMEBAUSEwQUFRYXBBgZGhsEHB0eOQQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw8Pj8A 0 66 BAABAgMEBAUSEwQUFRYXBBgZGhsEHB0eOQQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw8Pj8A 131 \000\001\002\003.\004\005\018\019.\020\021\022\023.\024\025\026\027.\028\029\0309.\032!\"#.\$%&'.\(\)*+.,-\./.0123.4567.89:\;.<<>?
|
||||
+NwAAAAABAQQdIh8EICEiI/8QJSYnBCgpA+j4LBvrGx0eHwQgISKGBKQlJicEKP8qKwAAG4aGhgAQhoaGhoaGhoaGIh8EIICGhoY4PT5SAA== 0 -1
|
||||
+AAABAgMEBAXrBgQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8A 0 1 AA== 2 .
|
||||
+AAEBAgMEBAUGBwQICQoLBAwNBgQICf9/BAwNEg8EEAgSEwQBFRYXBBg6GhsECx0eHw01KSIZBCQkAAD/AEACECICEEAgKSIjBAQkAAACAEACAhAiAhAfBCApIiMEBCQAAAIAQAIQAAIQQAIQIgIQIgIQIgYECAn/fwQMDRIPBBAIEhMEARUWFwQYOhobBBQdHh8mNSkiGQQkJAAAAg5AAhAiAhBAAhAiAhAiAhBAAhAiAhAfBCApIiMEJCQAAAIAQAIQIgIQQAIQIgIQAAA= 0 1 AA== 2 .
|
||||
+BAABAAABBAUGDQYECAn/fwAAARIPEBAJCgsEfwAAABMEByAACQoLBGQNEgkQEAgSEwQBFRYXBBg6Gv9/Hx0eHw01KSIZBCQkAAD/AEACECICEEACECLzDyIGBBAiAhBAAhAiAhAfBCApIiMEBCQAAAIAQAJkAAIQQAL+AgAQywIQIgYECAn/fyQkAAAAAAECDkACQCIAAAECEEACJiIBBCQkAAACAEACECJTENQCECICEAAA 0 -1
|
||||
+5f8AAgAAAAEEBAX/ZAAICQoL5AwNBgQIgAAAAA38DgQQCBIZBCQcAAAAAUACEP9kAAgJECLtECL/D///AhBAAhAiAhAtBCApIiPpEgAAAAABAAIAQAAAAQJkAAIQCAAAEAAFACkJ/wL/fxcKGOoAAToa/wIcJ/R6enp6enp6enp6enp6enp6enp6enp6AAECA+gAAIACECICEAAA 0 -1
|
||||
+A9YBAgMmAAABBwQIGQoACwQMCxQMDQ4AAAAA 0 -1
|
||||
+lJWWogwA6P8A 0 -1
|
||||
+wMAAAQBkn8CiNjY2NgAAGsAfNjY8yQAhEAACCSICAgIQIgIQQAA= 16 2 AhAiAhBAAA== 14 \016\".\016\@
|
||||
+3g== 0 -1
|
||||
+AQ== 0 -1
|
||||
+AgAAAhBiAgAAAhAiAQECAVcBAQIBVwIQYgIAAAIQAQIBVwEBAhBiAgAAAhAiAVcBAgFXAQECAVcBAQEBAgFXAAAB 0 64 AgAAAhBiAgAAAhAiAQECAVcBAQIBVwIQYgIAAAIQAQIBVwEBAhBiAgAAAhAiAVcBAgFXAQECAVcBAQEBAgFXAA== 146 \000\000.\016b.\000\000.\016\".\001.\001W.\001.\001W.\016b.\000\000.\016\001.\001W.\001.\016b.\000\000.\016\".W.\002.W.\001.\001W.\001.\001.\001W
|
||||
+AQABAwEJAQoYARkBGmwbARwHGgEeAc0BAAAB0AAAA+gB01NTAZ8= 0 -1
|
||||
+wMAAAcD/AMAbAgICAgICAgIAAgICAgABAAA= 16 7 AgACAgICAA== 18 \000\002.\002\002
|
||||
+BOgAAAEDAwgINjY2NgAAAMAfNjZkAAAAAAEAFPY2HjY2NDYMAAEABAEAAAE2NgAAATb7IAAAAfsAAAFCRDYkDzI0NjY2NjY2NjYAEDY2Nlg2NjY2NjY2NgAAAQABNjY2RTY2FTYABDk2NgAAATY2NjY2Nhw0NlgAIDY2/zY+NjY2NjYAADYAAPs2DAEAAAH0ATY2Njw2NiQVNgSzNqI2NjY2NgX//wVFNjk2PjYlPT09ATY2NgAAAAEANjQ2NjI2NjY2NgAQNjZLS0tAAAABSwE2vh9GFMAfNi5+7Ozs7AAAAezs7BQ2NjY2AAAAAAE2NjQ2GTZBNj42LTY2NjY2TtDQ0ID///8UFBQ2NjU2NkM2WDY2NjZNNjZRABEBAA== 0 -1
|
||||
+BDY2KwAAAMAfNjZkAAAAAAAAFHY2HjY2NDYMAAEABAEAAAE2NgAAATb7IPvz+/sAAUsBNr4fRhTAHzYufuzs7OwAAAHs7OwUNgABQkQ2JA8yNDY2NjY2NjY2ABA2Nj1YNjY2NjY2NjYAAAEAATY2NkU2EzY2HDQ2WAAgNjb/Nj42NjY2NgAANgAA+zYMAQAA8PMBNjY2PDY2JBU2BLM2ojY2NjY2Bf//BUU2OTY+NiU9PT0BNjY2AOj/AAAyNDY2MjY2NjY2ABA2NktLS0AAAAFLATa+H0YUwB82Ln7s7OzsAAAB7OzsFDY2NjYAAAAg+/P7+wAAAUJENiQPMjQ2NjY2SDY2AAE2NjQ2NjZRQzZYNjY2Nk02NlEAEQEA 0 6 BDY2KwAA 8 66+\000
|
||||
+BOgANvsE+/vZ+wAAAX////8AMjQ2DjY2NjY2NgAAAID//wEAWCD7T1ZYEzY2NjY2NjYAAAEAATY2NkU2NhU21dXn1dXVINXV1dXV1dXV1dXV1RDV1dXL1dXV1dUABDk2NgAAAv///4c2PjY2NlY2AAAfRhTAHwAAA+g2PDY2fuzs7OwVAAAAADY2UQAR9gA= 0 11 BOgANvsE+/vZ+wA= 31 \232\0006\251.\251\251\217\251
|
||||
+BOgAAAEDAwgINjYxNgD/5MApIPvz+wAAAQFCRDYkHjY2NDYMAAE2NjY2NjYAEDY2Nlj7IPvz+/sAAAFCRDYkDzI0NjY2NjY2NjYAEDY2Nlg2EzY2NjY2NgAcAQABNjY2RTY2FTYABDk2NgAAATY2NjY2Nhw0NlgAIDY2/zY+NjY2NugDADYAAPs2DAEAAAH0ATY2NjwpNiQVNgSzG6I2NjY2NgX//wVFNjk2PjYlPT09ATY2NgAAAAEANjQ2NjI2NjYfNjZkAAAAAAEAFPY2HjY2NDYMAAEABAEAAAE2NgAAAezs7BQ2NjY2AAAAAAE2NjY2QzZYNjY2Nk02NlEAEQEA 0 202 BOgAAAEDAwgINjYxNgD/5MApIPvz+wAAAQFCRDYkHjY2NDYMAAE2NjY2NjYAEDY2Nlj7IPvz+/sAAAFCRDYkDzI0NjY2NjY2NjYAEDY2Nlg2EzY2NjY2NgAcAQABNjY2RTY2FTYABDk2NgAAATY2NjY2Nhw0NlgAIDY2/zY+NjY2NugDADYAAPs2DAEAAAH0ATY2NjwpNiQVNgSzG6I2NjY2NgX//wVFNjk2PjYlPT09ATY2NgAAAAEANjQ2NjI2NjYfNjZkAAAAAA== 455 \232\000\000\001.\003\008\008.616\000\255\228\192\)\032\251\243\251\000\000\001\001BD6\$\0306646\012\000\001666666\000\016666X\251\032\251\243\251\251\000\000\001BD6\$\015.466666666\000\016666X6\019666666\000\028\001\000\001666E66\0216\000\004966\000\000\001666666.46X\000\03266\2556>6666\232\003\0006\000\000\2516\012\001\000\000\001\244.6.6<\)6\$\0216\004\179\027\16266666\005\255\255\005E696>6%===\001666\000\000\000\001\00064662666\03166d\000\000\000
|
||||
+BOgAAAEDAwgINjY2NgAAAMAfNjZkAAAAAAE2vh9GFMAfNi5+7AAAAezs7AAAAezs7BQ2NgEAFAEAJA8yNDY2NjY2NjY2ABA2NjZYNvQBNjY2PDY2JBU2BLM2ojY2NgAAATY2Bf//BUU2OTY+NiU9PT0BNjY2AAAAAQA2NDY2MjY2NjY2ABA2NktLS0AAAAFLATa+H0YUwB82Ln7s7OzsAAAB7OzsFDY2NjYAAAAAATY2NDY2NkE2PjY2NjY2NjZO0DZRABEBAA== 0 120 BOgAAAEDAwgINjY2NgAAAMAfNjZkAAAAAAE2vh9GFMAfNi5+7AAAAezs7AAAAezs7BQ2NgEAFAEAJA8yNDY2NjY2NjY2ABA2NjZYNvQBNjY2PDY2JBU2BLM2ojY2NgAAATY2Bf//BUU2OTY+NiU9PT0BNjY2AAAA 302 \232\000\000\001.\003\008\008.666\000\000\000\192\03166d\000\000\000\000\0016\190\031F\020\192\0316\.~\236\000\000\001\236\236\236\000\000\001\236\236\236\02066\001\000\020\001\000\$\01524666.6666\000\016666X6\244\001666<66\$\0216\004\1796\162666\000\000\00166\005\255\255\005E696>6%===\001666\000\000
|
||||
+BOgAAAEDAwgINjY2NgAAAAEfNjZkAAAAAAEAFPY2HjY2NDYMAAEABAEAAAE2NgAAATb7IPvz+/t/AAFCRDYkDzI0NjY2NjY2NjYAEFY2Nlg2NjY2NjY2NgAAAQABWTY2RQAAATYABDk2NgAAATY2NjY2Nhw0NlgAIDY2/zY+NjY2NjYAADYAAPs2DAEAAAH0ATYVNjw2NiQVNgSzNqI2NjY2NgX//wVFNjk2PktLQAAAAUsBNr4fRhTAHzYufuzs7OwAAAHs7OwUNjY2NgAAAAABNjY0NjY2QTY+NjY2NjY2Nk7Q0NCQ0AAUFBQUNjY1NjZDNlg2NjY2TSE2UQARAQA= 0 -1
|
||||
+BOgAAAEDAwgINjY2NgAAAMAfNjZkAAAAAAABAAEAFPY2HjY2NDYMAAEABAEAAPM2NgAAIzb7IPvz+/sAAAFCRDYkDzI0NjY2NjY2NjYAEDY2Nlg2NjY2NjY2NgAAAQABNjY2RTa1FTYABDk2NgAAATY2NjY2Nhw0JlgAIDY2/zY+NjY2NjYAADYAAPs2DAEAAAH0ATY2Njw2NiQVNgSzNqI2NjY2NgX//wVFNjk2PjYlPT09ATY2NgAAAAEANjQ2NjI2NjY2NgAQNjZLS0tAAAABSwE2vh9GFMAeNi5+7Ozs7AAAgADs7BQ2NjY2AAAAAAE2NjQ2NjZBNj42NjY2NjY2TtDQ0JDQABQUFBQ2NjU2NkM2WDY2NjZNNDZRABEBAA== 0 -1
|
||||
+BOgAAAEDAwgINjY2NgAA6R8fNjZkAAAAAAEAFPY2HjY2NDYMAAEABAEAAAE2NgAAATb7IPvz+wEBAAFCRDYkDzI0NjY2NjYAATYAEDY2Nlg2NjY2NjY2NgAAAQABNjY2RTYyFTYABDk2NgAAATY2NjY2Nhw0NlgAIDY2/w0NDQ0NDQ0NDQ0NNj42NgAAAQAANgAA+zYMAQAAAfQBNjY2PDY2JBU2BLM2ogX//wVFNjk2MjYlPT09ATY2MgAAAAEANjQ2NjI2NjY2NgAQNjZLS0tAAN8AAAEASwE2vh9GFMAfNi5+7Ozs7AAAAezs7BQ2NjY2AAAAAAE2NjQ2NjJBNj42NjY2NjY2TtDQ0JDQABQUFBTOUTU2NkM2WDY2NjZNNjZRABEBAA== 0 -1
|
||||
+AgAAAgBAAhAiAhBAAhAiAhAiBgQICf9/BAwNEg8EEAjyEgQBFRYXBBg6GhsECx0eHw01KSIZBCQkAAD/AEACECICEEACFyICECIGBBAiAhBAAoAiAhAfBCApIiMEBCQAAAIAQAIQAAIQQAIQIgIQIgYECAICAgICECICEEACECICECIGBAgJ/38EDA0SDwQQCBITBAEVFhcEGAEVFhcEGDoaGwQL/x4fDTUpIhljJDoaGwQUIx4fJjUpIhkEJCQAAAIAQAIQIgIQQAIQIvIQIgIQQAIQIgAQHwQgKSIjBCQkAAACAEACECICEEACECICECIGBAgAAAECAv4CAjsA 0 255 AgAAAgBAAhAiAhBAAhAiAhAiBgQICf9/BAwNEg8EEAjyEgQBFRYXBBg6GhsECx0eHw01KSIZBCQkAAD/AEACECICEEACFyICECIGBBAiAhBAAoAiAhAfBCApIiMEBCQAAAIAQAIQAAIQQAIQIgIQIgYECAICAgICECICEEACECICECIGBAgJ/38EDA0SDwQQCBITBAEVFhcEGAEVFhcEGDoaGwQL/x4fDTUpIhljJDoaGwQUIx4fJjUpIhkEJCQAAAIAQAIQIgIQQAIQIvIQIgIQQAIQIgAQHwQgKSIjBCQkAAACAEACECICEEACECICECIGBAgAAAECAv4CAjsA 780 \000\000.\000\@.\016\".\016\@.\016\".\016\".\004\008\009\255\127\004.\013\018\015\004\016\008\242\018\004\001\021\022.\004\024:\026\027\004\011\029\030\031\0135\)\"\025\004\$\$\000\000\255\000\@.\016\".\016\@.\023\".\016\".\004\016\"\002\016\@.\128\".\016\031.\032\)\"#.\004\$\000\000.\000\@.\016\000.\016\@.\016\".\016\".\004\008\002\002\002\002.\016\".\016\@.\016\".\016\".\004\008\009\255\127\004.\013\018\015\004\016\008\018\019\004\001\021\022.\004\024\001\021\022\023\004\024:\026\027\004\011\255\030\031\0135\)\"\025c\$.\026\027\004\020#\030\031&5\)\"\025\004\$\$\000\000\002\000\@\002\016\"\002\016\@\002\016\"\242\016\"\002\016\@\002\016\"\000\016\031\004\032\)\"#\004\$\$\000\000\002\000\@\002\016\"\002.\@\002\016\"\002\016\"\006\004\008\000\000\001\002\002\254.\002\;
|
||||
+AgAAAgBAAhAiAhBAAhAiAhAiBgQICf9/GgwNEg8EEAgSEwQBFRYXBBg6GhsECx0eHw01KSIZBCQkAAD/AEACECICEEACECICECIGBBAiAhBAAhAiAhAfBCApIiMEBCQAAAIAQAIQAAIQQAIQIgIQIgYECAICAgICECICEEACECICECIGBAgJ/38EDA0SDwQQCBITBAEVFhcEGAEVFhcEGDoaGwQLHR4fDTUpIhkEJDoaGwQUIx4fJjUpIhkEJCQAAAIAQAIQIgIQQAIQIgIQIgIQJQIQIgIQHwQgKSIjBCQkAAACAEACECICEEACECICECIGBAgCQAICAv4CAjsA 0 255 AgAAAgBAAhAiAhBAAhAiAhAiBgQICf9/GgwNEg8EEAgSEwQBFRYXBBg6GhsECx0eHw01KSIZBCQkAAD/AEACECICEEACECICECIGBBAiAhBAAhAiAhAfBCApIiMEBCQAAAIAQAIQAAIQQAIQIgIQIgYECAICAgICECICEEACECICECIGBAgJ/38EDA0SDwQQCBITBAEVFhcEGAEVFhcEGDoaGwQLHR4fDTUpIhkEJDoaGwQUIx4fJjUpIhkEJCQAAAIAQAIQIgIQQAIQIgIQIgIQJQIQIgIQHwQgKSIjBCQkAAACAEACECICEEACECICECIGBAgCQAICAv4CAjsA 780 \000\000.\000\@.\016\".\016\@.\016\".\016\".\004\008\009\255\127\026.\013\018\015\004\016\008\018\019\004\001\021\022.\004\024:\026\027\004\011\029\030\031\0135\)\"\025\004\$\$\000\000\255\000\@.\016\".\016\@.\016\".\016\".\004\016\"\002\016\@.\016\".\016\031.\032\)\"#.\004\$\000\000.\000\@.\016\000.\016\@.\016\".\016\".\004\008\002\002\002\002.\016\".\016\@.\016\".\016\".\004\008\009\255\127\004.\013\018\015\004\016\008\018\019\004\001\021\022.\004\024\001\021\022\023\004\024:\026\027\004\011\029\030\031\0135\)\"\025\004\$.\026\027\004\020#\030\031&5\)\"\025\004\$\$\000\000\002\000\@\002\016\"\002\016\@\002\016\"\002\016\"\002\016%\002\016\"\002\016\031\004\032\)\"#\004\$\$\000\000\002\000\@\002\016\"\002.\@\002\016\"\002\016\"\006\004\008\002\@\002\002\002\254.\002\;
|
||||
+AgAAAgBAAhAiAhBAAhAiAhAiBgQICf9/BAwNEg8EEAgSEwQBFRYXBBg6GhsECx0eHw3oAwAABCQkAAD/AEACECICEEACECICECIGBBAiAkACEAACEEACECICECIGBAgCAgICAhAiAiY1KSIZBCQkBgQICf9/BAwNEg8EEAgSEwQBFRYXBBgBFRYXBBg6GhsECx0eHw01KSIZBCQ6GhsEFCMAAAEMHyY1KSIZBCQkGwACAEACECHtEEACECICECICEEACECICEB8EIBwiIwQkJAAAAgBAAhAiAhBAAhAiAhAiBgQIAkACAgL+AgI7AA== 0 -1
|
||||
+DGQAAADKBhgi////fxA33d3d3QECAA0B+/HWEAA43iABAQyAEM/V3d3d8d3d3d3d3d3/AN3d3d3dyADGA+gAIvgP8gbz9A3z9PX2ECIB7SIB7AX43d3d3egD/wDd3d3d3cjd3d3/AAD19hAiAefTAARFAPgB6UD7BCUB/AUjIf8= 16 -1
|
||||
+rgGvAbABsQGyAbMBtAG1AbYBtwEBtgG3AbgBuboBuQG6AbsBvAG9Ab4= 0 -1
|
||||
+6AU2 3 -1
|
||||
+BAABAgMEBAUGBwQICQoLBAwNDg8EEBESEwQUFRYXBBgZGhsEHB0eHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxAwMDAwMDAwMDAwMDAwMCAwMDAwMDAwMDAwMDCAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzYAPRAA+/v7+/v7+wMDAwMDAwMDAwMDAwAAAQMDAwMDAwMDAwMDAwADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAQMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMOAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzYAAAGA 3 -1
|
||||
+IBJDAQAQAAAAOj9IWUhISGVIAwMA//8AACBIAwMAAAHsSDD//wAAAwMDAwMAf9z//wAAAQMDAQMDAwMLAwMDAAEDAwMDAwQDAAA= 68 5 AwMEAwA= 13 \003\004\003
|
||||
+BOiACwBA/78AABA2NjYyZxVHAOY1NDYfNkg2NP82NgABNjY2NGcVRwDmNTQYHzY2NjT/NjY2NgAA/wADNjY2H8LCwkYUAFA2NgAAgH0AAAfzATY+BFCCwkYUADYAAAGANjYkNv9//wB/NjY2NjYUAAABNjZPNjYYPgQ5NjbQztDQ0NDQ0Mcz0NDi0NDQAAAA+xAN+TY2BwEBAIkAABQUFBQ2NoAHAH8A6AE2WCs2NjYZNnZ2knZ2dnZ2gAsAAAEAGw== 0 -1
|
||||
+BOgA8r8fNFI2wsK+wsLCBABSUBYAAQAAFBuQAAAA7DUmNgAEAAA2EAABAAAUG5AAAAA2AAAA3gAAgOXQ0NDQM9DQAAABAAAAAeZ/NjY2NjZ2dn92dgE2dn92dgE2Jgr//QFQNsLCwsLCwh80f////8JQNsLCwsLCwh80Nk3CwsLCwsLCwsLCADY2+gAA+nZ2AAABSwE0vjYAAACA5dDQ0NAy/+EB0NAAAAEAAAAB5n82NjY2NjZ2f3Z2ATZ2CgAQAAE2NgDo/4Dl0NDQ0DPQ0AAAAQAAAABAztDQ0M12dv/2AAC5ubm5ubm5ubm5ubm5ubkBAUZUADY2ADI2JDY2NJAAAQAA 0 38 BOgA8r8fNFI2wsK+wsLCBABSUBYAAQAAFBuQAAAA7DUmNgAEAAA= 118 \232\000\242\191.4R6\194\194\190\194\194\194\004\000RP\022\000\001\000\000\020\027\144\000\000\000\2365&6\000\004\000
|
||||
+BOgAAMAfNjY2wsJCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2Ngk2NjY2NIBYNgAQATY2NjY0/zY2NjYAAADe4TU2NjY2NjY2NjY2NjYAAAABABtn6gABbEsAAAFLS0tpS0sBNr52dnZ2H0YUADY2NgAANjYkNjY0/382NjY2NjYVNjZPNjY2NjYkNjb//4AAdnZ2dnZ2dv8LAED/NjY2NjQ2AAABAAEAgAAAATY2ClA2NtDO0NDQAAUAADPQ0OLQ0NAAAAD7EBQUNjYAAdDQkAAAFBQUFDY2gAEAfzZYKzY2NjY2AHZ2dnZ2dnb/CwAAAQAb 0 93 BOgAAMAfNjY2wsJCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2Ngk2NjY2NIBYNgAQATY2NjY0/zY2NjYAAADe4TU2NjY2NjY2NjY2NjYAAAABABtn6gABbEsA 216 \232\000\000\192.666\194\194B\194\194\194\194\194\194\194\159\194\194\194\194\194\19466\$\0216466666.66\00966664\128X6\000\016\00166664\2556666\000\000\000\222\2255666666666666\000\000\000\001\000\027g\234\000\001lK
|
||||
+BOgAAMAfNjY2wvoAAPrCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2Ngk2NjY2NIBYNgAQATY2NjY0NjY2AAAA3gM2NjY2NjY2NjY2NjY2AAAAAQAbZ+oAAWxLS0tLaUtLATa+dnZ2dh9GFAA2NjYAADY2JDY2NP9/NjY2NjY2FTY2TzY2NjY2JDY2//+AAHZ2dnZ2dnb/CwBA/zY2NjY2NgA0NgAAAQABAIAAAAE2NgpQNjbQztDQ0NDQ0NAz0NDi0NDQAABA+xAUFDY2AAHQ0JAAABQUFBQ2NoABAH82WCs2NjY2NnZ2dnZ2dnZ2/wsAAAEAGw== 0 -1
|
||||
+Z+oAASAAS0tLaUtLATa+AAAE6AAAwB82NjbCwsLCwsLCwsLCn8LCwsLCwjY2JBU2NDY2NjY2NjYAAAABABtnFTYABDY2NjY2CTY2NjY0gFg2ABABNl82NjT/NjY2NgABAN4DNjY2NjY2NjY2Njb6AAD6AP8AG2fqAAEgAEtLS2lLSwE2vnZ2dnYfRhQANjY2ACA2NiQ2NjT/fzY2NjY2NhU2Nk82NjY2NiQ2Nv//gAB2dnZ2dnb//3//QP+Dg4ODgzY2NjY0NgAAAQABAIAAAAE2NgpQNjYAAAHQNP9/NjY2NjY2FdA2WCs2NjY2NnZ2dnZ2anZ2/wsAAAEAGw== 27 -1
|
||||
+BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2Ngn/fzY2NIBYNgAQATY2NjY0/zY2NjYAAADeAzY2NjY2NjY2NlI2NjYAAAABABtn6gABbEtLS0tpS0sBNr52dnZ2H0YUADY2NgAANjYkNjY0/382NjY2NjYVNjZPNjY2NjYkNjb//4AAdnZ2dnZ2dv8LAED/NjY2NjQ2AAABAAEAgAAAATY2ClA2NtDO0NDQ0NDQ0DPQ0OLQ0NAAAAD7EBQUNjYAAdDQkAAAFBQUFDY2gAEAfzZYKzY2NjY2dnZ2dnZ2dnb/CwAAAQAb 0 255 BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2Ngn/fzY2NIBYNgAQATY2NjY0/zY2NjYAAADeAzY2NjY2NjY2NlI2NjYAAAABABtn6gABbEtLS0tpS0sBNr52dnZ2H0YUADY2NgAANjYkNjY0/382NjY2NjYVNjZPNjY2NjYkNjb//4AAdnZ2dnZ2dv8LAED/NjY2NjQ2AAABAAEAgAAAATY2ClA2NtDO0NDQ0NDQ0DPQ0OLQ0NAAAAD7EBQUNjYAAdDQkAAAFBQUFDY2gAEAfzZYKzY2NjY2dnZ2dnZ2dnb/CwAA 624 \232\000\000\192.666\194\194\194\194\194\194\194\194\194\194\159\194\194\194\194\194\19466\$\0216466666.6\000\000\000\001\000\027g\0216\000\00466666\009\255\127664\128X6\000\016\00166664\2556666\000\000\000\222\003666666666R.66\000\000\000\001\000\027g\234\000\001lKKKKiKK\0016\190vvvv\031F\020\000666\000\00066\$664\255\127666666\02166O.6666\$66\255\255\128\000vvvvvvv\255\011\000\@\255666646\000\000\001\000\001\000\128\000\000\00166\010P66\208\206\208\208\208\208\208\208\208.\208\208\226\208\208\208\000\000\000\251\016\020\02066\000\001\208\208\144\000\000\020\020\020\02066\128\001\000\1276X+66666vvvvvvvv\255\011\000
|
||||
+BOgAAMBgYGBgYGBgYGBgYGBgYGBgYJ/Cs8LCwsLqNh0VNiE2NkI2NkM2AAAAEOkaZxU2AAQ2NlY2Ngk2lpaWlpaWlpaWlpaWlpaWHTY2IIBYNvQAAQAtATYiNn8AAAA2Nh02NjSAWDgALQE2NjZ/AOQANjY1///13gM2NjYFAGQAAwAAATY2NjZnFTYABDY2VjY2ZAD/f+//f4w2NjY2//82NjZQACAAHBwYHBwcHBwcHBwcAQB//xwcHBwcARAbZ+rwAWxLS3Z2djY2NP8QNjY2NjY2FTY2T3Z2dv8LAEAeNhQgf////xtn6vABbEtLdnZ2NjY0/xA2AdDQkAAAARTSFEAAAAABABs= 0 -1
|
||||
+AAAAAQH/Hwb/AB7pAAAAAAAAAABAHyUlJSVWVlZfAP9/ADR3NjYjFBg2VTY29xQYNlU2NvdWVlZWVlYAAAFWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVl8A/wAAEiKA//8C////AATnVwAAxxUAAAAB//++hhAEiDsEOD0= 9 1 AA== 2 .
|
||||
+ATYkNjb/NiQgAF9fgF9XX184X71fX19fAF9fKysrfwBfAAABAHtfAwAAXwADAwMAAgMD/zYkIABfX19fAAABX19fOV+9X182NjYAAAEVaQAABgQ8PQ== 0 44 ATYkNjb/NiQgAF9fgF9XX184X71fX19fAF9fKysrfwBfAAABAHtfAwAAXwA= 86 6.66\2556\$\032\000__\128_W__8_\189____\000__+++\127\000_\000\000\001\000{_.\000\000_
|
||||
+AOgAAMAfNjY2wsLCwsLCwuTiwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZwAAARU2AAQ2NjYAAAE2Ngk2NjY2NIBYNgAQAT02NjY0/zY2NjYAAADeAzY2NjY2NjY2NjYTNjbCwsLk4sKfwsLZwsLCNjYkFTY0NjY2NjY2NgAAABcAGwAAAQE2AAABNv+AhocEiDsEPD0= 0 1 AA== 2 .
|
||||
+8A== 1 -1
|
||||
+BCorBCwtLjL79Pv7/BX7+/v7+/v7+/v7+/v7+/v7+wcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcBBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwYHBwcHBwcHBwcHB9EHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBw4HBwcHBzMzMxo7MzMzMzMzMzMzMzMzBwcHBwcHBwcHBwcHBwcHBwcHDgcHBwcHBwchBwcHBwcHBwcHBwcF//8FBwcHBwcHBwcHBwcHBwcHBwcXBwcHBwcHBwcHBwcHAhAiBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHAAEEMDH5fwQMDRIAECICECIGLi8EMDEqMwQ0NTYiBgQICfl/BAwNEgB/KjMEBwcHBwcHB8XFxcXFxcXFx8XFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFAAABxcXFxcXFxcXFxcXFxcXFxQAAAcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFvcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxQcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwMHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBgcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHDgcHKgcHMzMzGjszMzMzMzMzMzMzMzMHBwcHBwcHBwcHBwcHBwcHAAABBwcOBwcHBwcHxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcUHBwcHBwcHBwcHBwcCECIHBwcHBwcHBwcHBwcHBwcHBwcHBwcHAAABBwcHFwcHBwcHAwcHBwcHBwIQIgIQIgYuLwAAAQQwMfl/BAwNEg8QIgIQIgYuLwQwMSozBDQ1NiIGBAgJ+X8EDA0SDwQqMwQHBwcHBwcHxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFscXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxbfFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxeHFxcXFxcXFxcXFxcXFxcXFxcXFxcXNxcXFxcXFxcXFxcXFxcXFxcXFxcXF28XFxcXFxcXFxcXFxcXFxcXVxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxQHFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxdTFxcXFxQcHBwcHBwcHBxAREhMEFBESQAABFjEzMzMzMzMzMxEzMzMzMzMz/38TBBQRFhcEGCQaGwQUHQIQIgYECAn5fwQMJxIPBBAREhMEQAAWFuiAAAAbBBQdABAzBDQxf/7//wgJBwcHBwcHBwcHBwcHBwcGBwcHBwcHBwcHBwcHBwcOB08HBwcHByEHBwcHBwcHBwcHBwcHBwcHBwcHCQcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBxcHBwcHBwcHBwcHxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxfv7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7xcXFxcXFAMXFxcXFxcXFxQAAAcXFxcXFxcXFxcXFxcUHBwcH 15 -1
|
||||
+AAABASIAwA4= 0 1 AA== 2 .
|
||||
+BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2NjY2NjY0Ejc2NjYAAADeAzYAAAE2NjY2NjY2NjbeAzYAAAE2NjY2NiQ2NjT/fzY2NjY2NhU2Nk82NjY2NiQ2Nv//gAB2dnZ2dnZ2/wsAQP82NjY2NDYAAAEAAQCAAAABNjYLUDY20M7Q0NDQ0NDQM9DQ4tDQ/38AAAABFBQ2NgAB0NCQAAAUFBQUNjaAAQB/NlgrNjY2NjZ2dnZ2dnZ2dv8LAAABABs= 0 148 BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2NjY2NjY0Ejc2NjYAAADeAzYAAAE2NjY2NjY2NjbeAzYAAAE2NjY2NiQ2NjT/fzY2NjY2NhU2Nk82NjY2NiQ2Nv//gAB2dnZ2dnZ2/wsAQP82NjY2NDYAAAEAAQCAAA== 340 \232\000\000\192.666\194\194\194\194\194\194\194\194\194\194\159\194\194\194\194\194\19466\$\0216466666.6\000\000\000\001\000\027g\0216\000\0046666666664\0187666\000\000\000\222\0036\000\000\001666666666\222\0036\000\000\001666.6\$664\255\127666666\02166O66666\$66\255\255\128\000vvvvvvv\255\011\000\@\255666646\000\000\001\000\001\000\128
|
||||
+BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2Ngk2NjY2NIBYNgAQATYmNjY0/zY2NjYAAADeCDY2NjY2NjY2NjY2NjYAAAABABtn6gABbEtLS0tpS0sBNr52dnZ2H0YUADY2NgAANjYkNjY0/382NjY2NjYVNjZPNjY2NjYkNjb//4AAdnZ2dnZ2dv8LAED/NjY2NjQ2AAABAAEAgAAAATY2ClA2NtDO0NDQ0NDQ0DPQ0OLQ0NAAAAD7EBQUNjYAAdDQkAAAFBQUFDY2gAEAfzZYKzY2NjY2dnZ2dnZ2dnb/CwAAAQAb 0 255 BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2Ngk2NjY2NIBYNgAQATYmNjY0/zY2NjYAAADeCDY2NjY2NjY2NjY2NjYAAAABABtn6gABbEtLS0tpS0sBNr52dnZ2H0YUADY2NgAANjYkNjY0/382NjY2NjYVNjZPNjY2NjYkNjb//4AAdnZ2dnZ2dv8LAED/NjY2NjQ2AAABAAEAgAAAATY2ClA2NtDO0NDQ0NDQ0DPQ0OLQ0NAAAAD7EBQUNjYAAdDQkAAAFBQUFDY2gAEAfzZYKzY2NjY2dnZ2dnZ2dnb/CwAA 618 \232\000\000\192.666\194\194\194\194\194\194\194\194\194\194\159\194\194\194\194\194\19466\$\0216466666.6\000\000\000\001\000\027g\0216\000\00466666\00966664\128X6\000\016\0016&664\2556666\000\000\000\222\0086666666666.66\000\000\000\001\000\027g\234\000\001lKKKKiKK\0016\190vvvv\031F\020\000666\000\00066\$664\255\127666666\02166O.6666\$66\255\255\128\000vvvvvvv\255\011\000\@\255666646\000\000\001\000\001\000\128\000\000\00166\010P66\208\206\208\208\208\208\208\208\208.\208\208\226\208\208\208\000\000\000\251\016\020\02066\000\001\208\208\144\000\000\020\020\020\02066\128\001\000\1276X+66666vvvvvvvv\255\011\000
|
||||
+NjYAAAF2ZAAAFwtAAAABgn//AAABA0SAgAABCALLFTZXLNDGAAAU/wABAAIAAAAAgAAAAQkiHBU2V0XQ0JAAABQD6DZPrQAAAQCAAAAAAAEBAAIcFTZXRdDQkAAAFKP/AAAAo5Ojo6O+o56jo6Ojo6Ojo6Ojo6Ojo6MAAAGjdtB/AAAUAAAnNjVA3gABNv8AAzb/AAABdnZ2dnb/CwD8AQAb 54 -1
|
||||
+ARERERERES42wsLCwuKfwsLCwsLCNjYkFTYiNjY2NjZ2Ngk2NjY2NIBYNg4QATYF//8F/zYXNjYAAACAAzY2VjY2SjY2NjY2ADYAAAABABsAECcAARw2NjYnpxknJycAAABAAOUBHDY2NgAAAQAAEjY0/382NjZNFzYVNhZPNgABAACA//////8F/zYXNjYRAPLeAzY2NjY2NjY2JCw2//+AAHYAABABNgX//wX/Nhc2NhEA8t4DNjY2NjY2djPQ0OLQ0NAAAAD7EBQUHTblgNDQkAAQKBQUGw== 0 -1
|
||||
+BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2Ngk2NjY2NIBYNgAqATY2NjY0/zY2NjYAAADeAzZPNjY2NjY2NjY2NjYAAAABABtn6gABbEtLS0tpS0sBNr52dnZ2H0YUADY2NgAANjYkNjY0/382NjY2NjYVNjZPNjY2NjYkNjb//4AAdnZ2dnZ2dv8LAED/NjY2NjQ2AAABAAEAgAAAATY2ClA2NtDO0NDQ0NDQ0DPQ0OLQ0NAAAAD7EBQUNjYAAdDQkAAAFBQUFDY2gAEAfzZYKzY2NjY2dnZ2dnZ2dnb/CwAAAQAb 0 255 BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2Ngk2NjY2NIBYNgAqATY2NjY0/zY2NjYAAADeAzZPNjY2NjY2NjY2NjYAAAABABtn6gABbEtLS0tpS0sBNr52dnZ2H0YUADY2NgAANjYkNjY0/382NjY2NjYVNjZPNjY2NjYkNjb//4AAdnZ2dnZ2dv8LAED/NjY2NjQ2AAABAAEAgAAAATY2ClA2NtDO0NDQ0NDQ0DPQ0OLQ0NAAAAD7EBQUNjYAAdDQkAAAFBQUFDY2gAEAfzZYKzY2NjY2dnZ2dnZ2dnb/CwAA 615 \232\000\000\192.666\194\194\194\194\194\194\194\194\194\194\159\194\194\194\194\194\19466\$\0216466666.6\000\000\000\001\000\027g\0216\000\00466666\00966664\128X6\000*\00166664\2556666\000\000\000\222\0036O66666666.66\000\000\000\001\000\027g\234\000\001lKKKKiKK\0016\190vvvv\031F\020\000666\000\00066\$664\255\127666666\02166O.6666\$66\255\255\128\000vvvvvvv\255\011\000\@\255666646\000\000\001\000\001\000\128\000\000\00166\010P66\208\206\208\208\208\208\208\208\208.\208\208\226\208\208\208\000\000\000\251\016\020\02066\000\001\208\208\144\000\000\020\020\020\02066\128\001\000\1276X+66666vvvvvvvv\255\011\000
|
||||
+BOhtAG0AAAA= 0 6 BOhtAG0A 11 \232m\000m
|
||||
+MzY238LYnwCAf8LCbzY2th82bzY2thU2NDYANiQlJicEKAAAAAHpARA2NwQ4OAE7BD49Pj8A 4 -1
|
||||
+BOgAAMAfNjY2wsJAwsLCwsLCwp/CNjY2NjYAAIABABtnFTYABDY2NjY2CTY2NjY0gGA2ABABNjY2NmcxNgAENjYjNjYnBCgpNjcEODg6OwQ8PT4/AA== 0 -1
|
||||
+BOgAEACf1MLCwsLCNgABABtnFTYABjY2NjY2CTY2NjY0gFhZADg4OTsEPD0+PwA= 0 -1
|
||||
+ZAGU0g== 0 -1
|
||||
+AAEp 1 -1
|
||||
+//9/A4o= 5 -1
|
||||
+//8FDgMEBwQsLS4nBC0AEwIQAAcAAH/fMjMEAAABCAkKTy4gAB8ANgQsLS4vBAcAAH/fMjMENDU2CCAAHwA2BCwtLi8eBC4gAB8ANgQsIAAfAC4vBH8QHgQ/OTpPLiCVlZWVlZWVlZWVlZWVBwcHBwcHBwcHBwYHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBw4HBwcHBzMzMxo7MzMzMzMzMzMzMzMzBwcHBwcHBwcHBwcHBxgHBwcHDgcHBwcHBwchBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcXBwcHBwcHBwcHBwcHAhAiBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBxcHBwcHBw0HBwcHBwcCECICECIGLi8AAAEEMDH5fwQMDRIPECICECIGLi8EMDEqMwQ0NTYiBgQICfl/BAz/EQ8EKjMEBwcHBwcHBwcHBwcHBwcHBxAREhMEFBESQAABFhczMzMzMzMzMxEzMzMzMzMz/38TBBQRFhcEGCQaGwQUHQIQIgYECAn5fwQMJxIPBBAREhMEQAAWFuiAAAAbBBQdABAzBDQxf/7/FAgJBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcOBzMzMwcHBwcHBwcHBwcHBwcHBwcHBw4HBwcHBwcHIQcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHFwcHBwcHBwcHBwcHBwIQIgcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcXBwcHBwcNBwcHBwcHAhAiAhAiBi4vAAABBDAx+X8EDA0SDxAiAhAiBi4vBDAxKjMENDU2IgYECAn5hgQMDRIPBCozBAcHBwcHBwcHBwcHBwcHBwcQERITBBQREkAAARYXMzMzMzMzMzMRMzMzMzMzM/9/EwQUERYXBBgkGhsEFB0CECIGBAgJ+X8EDCcSBwcHBwcHBwcHBwcHBwcHBwcHBwcXBwcHBwcHBwcHBwcHBwcHfwAEJDQdAhAiAhBAAhAiAhAiEkAAARYXBBgZGhsEFB0gHwAzMzM= 5 -1
|
||||
+BA8ICAgEBAUG6wQICQoLBAxuJSY2BBAAAAAEFC0uIFAzBDM1NjkEOB45OwQAAAE0NSk3BDgAOQQrNjkEOH////9QUQQ0KQIQIgYEECICEEACAhAiBgQIAgICAgIQIgIQQAIQIgIQIgYECAkiAgICkCICEEACECICECIGBAgJ/37hDA0gDwQQDRITBAEVFhcEGAEVFhcEGDoaGwQLHR4Q8TQpIhkEJDo1KSIZBCQkAAACAEAQQAIQIgIEECICEEACAhAiBgQIAgICAgIQIgIQQAIQIgIQIgYECAkiAgICECICBBAiAhBAAgIQIgYECAICAgICECICEEACECICECIGBAgJIgICApAiAhBAAhAiAhAiBgQICf9+4QwNIA8EEA0SEwQBFRYXBBgBFRYXBBg6GhsECx0eApAiAhBAAhAiAhAiBgQICf9+4QwNIA8EEA0SEwQBFRYXBBgBFRYXBBg6GhsECx0d/PEkJAAAAgBAEEACECICECIGBAgCHQICAv4QIgYECAJAAgIC/gICOwIQIgIQQAIQIgIQIgIQQAIQIgIQBAQgKSIjBCQkDgACAEACECICEEACECICEAAAASIGBAgCQAICAv4CAjsA 0 -1
|
||||
+BAABAgMEERITBBQVFhceHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8EQEFCQwRERUZHBEhJSksETE1OTwRQUVJTBFRVVlcEWFlaWwRcXV5fBGBhYmMEZGVmZwRoaWprBGxtbm8EcHFycwR0dXZ3BHh5ensEfH1+fwSAgYKDBISFhocEiImKiwSMjY6PBJCRkpMElJWWlwSYmZqbBJydnp8EoKGiowSkpaanBKipqqsErK2urwSwsbKzBA== 0 -1
|
||||
+BAABAgMEBAUGBwQAAAEABAwNDhQEEBESEwQUNBYXBAcH5wYHogcHByoHBwcHBwcHDQcHBwcHBwAQBwcHByKANTM2NwQ4OTo7BDxRPj8A 0 78 BAABAgMEBAUGBwQAAAEABAwNDhQEEBESEwQUNBYXBAcH5wYHogcHByoHBwcHBwcHDQcHBwcHBwAQBwcHByKANTM2NwQ4OTo7BDxRPj8A 226 \000\001\002\003.\004\005\006\007.\000\000\001\000.\012\013\014\020.\016\017\018\019.\0204\022\023.\007\007\231\006.\162\007\007\007*\007\007.\007\007\007\007\013\007\007.\007\007\007\000\016\007\007.\007\"\1285367.89:\;.<Q>?
|
||||
+BAAJCgsEGA0ODwQQERIEBAUGDQ4PBBAREhMEFBUWEwQUFRYXBBgZGhsEkx0eHxobBJMdDB8EICEiIwQ2NDUEkx0eDg8EEBESEwQEGBkaGwSTHQ== 0 -1
|
||||
+BAAEBQYHBAgJCgsEDA0kJSYnBCgpKisELC0uLwQwMTIzBDQ1NjcEgAA6OwQ8PT4/BEBBQkMEREVGRwRISUpLBExNTk8EUFFSUwRUVVZXBFhZWlsEXF1eXwRgNTY3BDg5OjsEPD0+PwRAQUJDBERFRkcEdHV2dwR4eXp7BHx9fn8EgIGCgwSEhYaHBIiJiosEjI2OjwSQkZKTBJSVlpcEmJmamwScnZ6fBKChoqMEpKWmpwSoqaqrBKytrq8EsLGyswQ= 8 -1
|
||||
+BAAEBQYHBAgJCgsEDA0ODwQQBBgZGhsEHB0hIiMEJCUmJwQoKSorBCwtLi8EMDEyMwQ0NTY3BDg5OjsEPD0+XwRgYWBjBGRlZmcEaGlqawRsbW5vBHBxcnMEdHVWVwRYWVpbBFxdXl8EYGFiYwRkZWZnBGhpamsEbG1ubwRwcXJzBHR1dncEeHl6ewR8fX5/BICBgoMEhIWGhwSIiYqLBIyRjo8EkJGSkwSUlZaXBJiZmpsEnJ2enwSgoaKjBKSlpqcEqKmqqwSsra6vBLCxsrME 8 -1
|
||||
+AgAAAgBAAhAiAhBAAhAiAhAiBgQICf9/BAwNEg8EEAgSEwQBFRYXBBg6GhsECx0eHw01KSIZBCQkAAD/AEACECICEEACECICECIGBBAiAhBAAhAiAhAfBCApIiMEBCQAAAIAQAIQAAIQQAIQIgIQIgIQIgYECAn/fwQMDRIPBBAIEhMEARUWFwQYOhobBCY1KSIZBCQkAAACDkACECICEEACECICECICEEACECICEB8EICkiIwQkJAAAAgBAAhAiAhBAAhAiAhAAAA== 0 202 AgAAAgBAAhAiAhBAAhAiAhAiBgQICf9/BAwNEg8EEAgSEwQBFRYXBBg6GhsECx0eHw01KSIZBCQkAAD/AEACECICEEACECICECIGBBAiAhBAAhAiAhAfBCApIiMEBCQAAAIAQAIQAAIQQAIQIgIQIgIQIgYECAn/fwQMDRIPBBAIEhMEARUWFwQYOhobBCY1KSIZBCQkAAACDkACECICEEACECICECICEEACECICEB8EICkiIwQkJAAAAgBAAhAiAhBAAhAiAhAAAA== 590 \000\000.\000\@.\016\".\016\@.\016\".\016\".\004\008\009\255\127\004.\013\018\015\004\016\008\018\019\004\001\021\022.\004\024:\026\027\004\011\029\030\031\0135\)\"\025\004\$\$\000\000\255\000\@.\016\".\016\@.\016\".\016\".\004\016\"\002\016\@.\016\".\016\031.\032\)\"#.\004\$\000\000.\000\@.\016\000.\016\@.\016\".\016\".\016\".\004\008\009\255\127\004.\013\018\015\004\016\008\018\019\004\001\021\022.\004\024:\026\027\004&5\)\"\025\004\$\$\000\000\002\014\@\002\016\"\002.\@\002\016\"\002\016\"\002\016\@\002\016\"\002\016\031.\032\)\"#.\$\$\000\000.\000\@.\016\".\016\@.\016\".\016\000
|
||||
+5h3eAgMEBAUGByQrCS0QAADy/38AzSoAAAFkLi8BLC0uL4AAAAEwMf///4ABQH8AQAAAAQAAY2QAZS8BLC1AZQAAAWVmZwQAAAFwZQBleARkZWZn6AP0//xwAAABYGRlAAAA5RAQAAABAQAAAAHw7uzs/+x/AEBlAPABgoMWEAD//w== 8 8 BgckKwktEAA= 17 \007\$+\009-\016
|
||||
+BB8BAAAAAAEEBCEGBwAAAQQICQQhBgQICQoT2xMVAAABFhAoKRsuLwQwE9sTFQAAARYXBBgZMCsCAwQhPw== 8 6 BAQhBgcA 14 \004!\006\007
|
||||
+BB8BAgMEBAUGCwQMDQ4PBAgIAQgICAgICAgICAcECAkKCwQMDQ4PBAgIAQgICAgICAgICAgICAgJCAgICAgICAgICAgICAgICAh0B/AICAgBCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj/fwAACAgAAAAACHQAAAH/AAgICAg= 8 122 BgsEDA0ODwQICAEICAgICAgICAgHBAgJCgsEDA0ODwQICAEICAgICAgICAgICAgICQgICAgICAgICAgICAgICAgIdAfwCAgIAQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI/38AAAgIAAAAAAh0AAAB/wA= 427 \011\004\012\013\014\015.\008\008\001\008.\008\008\008\008\008\008\008\007.\008\009\010\011.\012\013\014\015.\008\008\001\008.\008\008\008\008\008\008\008\008.\008\008\009\008\008\008\008\008.\008\008\008\008\008\008\008\008.\008\008t\007\240\008\008\008.\008.\008\008\008\008\008\008\008\008.\008\008\008\008\008\008\008\008.\008\008\008\008\008\008\008\008.\008\008\008\255\127\000\000\008.\000\000\000\000\008t\000\000.\255
|
||||
+AgAAAgBAAhAiAhBAAhAiAhAiBgQIDf9/BAwNEg8EEAgSEwQBFRYXBBg6GhsEC4AAAAA1KSIZBCQkAAD/AEACECICEEACECICECIGBBAiAhBAAhAiAhAfBCApECICECIGBAgJ/38EDA0SDwQQCBITBAEVFhcEGDoaIiMEBCQAAAIAQAIQAAIfQAIQIgIQIgYECAIChgICECICEEACECICECIGBAgJ/38EDA0SDwQQCBITBAEVFhcEGDoaGwQUHR4fJjUpIhkEJCQQIgIQIgIQQAIQIgIQHwQgKSIjBCQkAAACAEAIECIiAEACECICECIGBAgCQAICAv4CADsA 0 250 AgAAAgBAAhAiAhBAAhAiAhAiBgQIDf9/BAwNEg8EEAgSEwQBFRYXBBg6GhsEC4AAAAA1KSIZBCQkAAD/AEACECICEEACECICECIGBBAiAhBAAhAiAhAfBCApECICECIGBAgJ/38EDA0SDwQQCBITBAEVFhcEGDoaIiMEBCQAAAIAQAIQAAIfQAIQIgIQIgYECAIChgICECICEEACECICECIGBAgJ/38EDA0SDwQQCBITBAEVFhcEGDoaGwQUHR4fJjUpIhkEJCQQIgIQIgIQQAIQIgIQHwQgKSIjBCQkAAACAEAIECIiAEACECICECIGBAgCQAICAv4CAA== 754 \000\000.\000\@.\016\".\016\@.\016\".\016\".\004\008\013\255\127\004.\013\018\015\004\016\008\018\019\004\001\021\022.\004\024:\026\027\004\011\128\000\000\0005\)\"\025\004\$\$\000\000\255\000\@.\016\".\016\@.\016\".\016\".\004\016\"\002\016\@.\016\".\016\031.\032\)\016\".\016\".\004\008\009\255\127\004.\013\018\015\004\016\008\018\019\004\001\021\022.\004\024:\026\"#\004\004\$\000\000\002\000\@\002\016\000\002\031\@\002\016\".\016\".\004\008\002\002\134\002.\016\".\016\@.\016\".\016\".\004\008\009\255\127\004.\013\018\015\004\016\008\018\019\004\001\021\022.\004\024:\026\027\004\020\029\030\031&5\)\"\025\004\$\$\016\"\002\016\".\016\@.\016\".\016\031.\032\)\"#.\$\$\000\000.\000\@.\016\"\"\000\@\002\016\".\016\".\004\008\002\@\002\002.\254\002
|
||||
+ISEhISEhISEhISEhISEhISEhISEAA+gAISEhISEhISEhISEhISEhGiEhISEhISEhISEhQyEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISF+ISEhISEhISEhISEhIYAhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhQyEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISF+ISEhISEhISEhIRAhISEhISEhISEhISEhISEhISEhISEhISEhIYAhISEhISEpcnN0dXZAAAAAew== 33 205 ISEhISEhGiEhISEhISEhISEhQyEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISF+ISEhISEhISEhISEhIYAhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhQyEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISF+ISEhISEhISEhIRAhISEhISEhISEhISEhISEhISEhISEhISEhIYAhISEhISEpcnN0dXZAAA== 218 !!!!!\026!!!!!!!!!!!C!!!!!!!!!!!!!!!.!!!!!!!!!!!!!!!!!!!!!~!!!!!!!!!!!.!\128!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.!!!!!!!!!!!C!!!!!!!!!!!!!!!!!!!!!.!!!!!!!!!!!!!!!~!!!!!!!!!!\016!!!!!!.!!!!!!!!!!!!!!!!!!!\128!!!!!!\)rstuv\@
|
||||
+AUABQwFEAUUBRgFPAVABUQFSAVMBVAFVAVYBVwFYAVkPWgFbAVwBXwFgAWEBYgFjAWQBZQFmAWcBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdAF1AXYBdwF4AXkBegF7AXwBfQF+NjY2NjYAAAABBB82NgAAATY2NiQVNjQ2NjY2NjY2NjY2NjY2NgAAAAEENgAAATY2NjY2NgAAATY2NjY2NjY2AAAAAQQ2NjY2NjY2NjY2NjY2AAAANjY2NjY2NjYAAAABBDY2NjY2NjY2NjY2NiQgNjQ2NjY2NlE2NjY2NjY2NjY2Nho2Nn92dnZ2dpZ2dnb//0E2AQAAAQAAARY2 0 -1
|
||||
+BwEBQwBkAQABRgFPAVABUQFSAesBVAFVAVYBbAFYAVkBWgFbF1wBAAABXwFgAVQBYgFrAWQBZQFmAWcBaAFpAWoBawdsAV0BbfxvAVs2NgBQNjYkZDY0NiQAZjZRNjY2Nv9aAVsBWwFfAQBQtDY2NjY2/1o2ZjZRNrdENjYAAAQ2NjY2MP9aAAEENgAAATY22jY2PwAABDY2AAAAAQQ2Gf4BNkc2Nr5LS0tLAAABSwE2vh0AATY2NuxQNjYkZDY0JCQ2ZjZRNks2AAABNmRaAVsbXAFfAWAAYQFiAWP/////AAABAWYBNgEAAAEAAAEWNg== 0 -1
|
||||
+AUABQvZEAUUBRgFPAVABUQFSAVMBVAFVAVYBVwFLS0tLS0tLATa+HQDxNRc2AFgBWWH/AXMXdAF1AZEBdwF4AXkBegF7AXwBZwFo7GkBagFrAWwAAAFuAW8BcAF/AXIBcwEAAAH1kAF3AXgBeQF6AXsBfAAAAQF9AX42NjY2AAABAAEEHzY2AAABNjY2JBVdXV1dXV1dXV02NDY2NjY2NjY2NjY2NjY2AAAAAAABAQQ2AAABNjY2NjY2AAABAAABNjY2NjY2NjYAAAABGjY2NjY2NjY2NjY2NjYAAAEPHh4eHh4eHh4eHh4eHh4A5B4eAAAAAQAbS2xLS0tLS0tLATa+HQDxNRc2AFA2NiQsNjQ2GzY2NlE2NjY2NjY2NjY2Af/pAAABFjY= 0 -1
|
||||
+AAAAAQIAAAGgACABgAGDDKABJQ== 0 1 AA== 2 .
|
||||
+AgAAAgBAAhAiAhBAAhAiAhAiBgQICf9/BAwNEg8EEAgSEwQBFRYXBBg6GhsECx0eHw01KSIZBCQkAAD/AEACECICEEACECICECIGBBAiAhBAAhAiAhAfBCApIiMEBCQAAAIAQAIQAAIQQAIQIgIQIgIQIgYECAn/fwQMDRIPBBAIEhMEARUWFwQYOhobBBQdHh8mNSkiGQQkJAAAAg5AAhAiAhBAAhAiAhAiAhBAAhAiAhAfBCApIiMEJCQAAAIAQAIQIgIQQAIQIgIQAAA= 0 206 AgAAAgBAAhAiAhBAAhAiAhAiBgQICf9/BAwNEg8EEAgSEwQBFRYXBBg6GhsECx0eHw01KSIZBCQkAAD/AEACECICEEACECICECIGBBAiAhBAAhAiAhAfBCApIiMEBCQAAAIAQAIQAAIQQAIQIgIQIgIQIgYECAn/fwQMDRIPBBAIEhMEARUWFwQYOhobBBQdHh8mNSkiGQQkJAAAAg5AAhAiAhBAAhAiAhAiAhBAAhAiAhAfBCApIiMEJCQAAAIAQAIQIgIQQAIQIgIQAAA= 588 \000\000.\000\@.\016\".\016\@.\016\".\016\".\004\008\009\255\127\004.\013\018\015\004\016\008\018\019\004\001\021\022.\004\024:\026\027\004\011\029\030\031\0135\)\"\025\004\$\$\000\000\255\000\@.\016\".\016\@.\016\".\016\".\004\016\"\002\016\@.\016\".\016\031.\032\)\"#.\004\$\000\000.\000\@.\016\000.\016\@.\016\".\016\".\016\".\004\008\009\255\127\004.\013\018\015\004\016\008\018\019\004\001\021\022.\004\024:\026\027\004\020\029\030\031&5\)\"\025\004\$\$\000\000\002\014\@.\016\".\016\@.\016\".\016\".\016\@.\016\".\016\031.\032\)\"#.\$\$\000\000.\000\@.\016\".\016\@.\016\".\016\000
|
||||
+AgAABgYGBgYcBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgQGBgYGBgYGBgYGBgYEBgYGBgYGBgYGBgYGBAYGBgYGBgYGBgYGBgYGBgYGQAYG/xAGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgZkBgYGBgYGBgayBgYGBgYGBgYGBgYGBgUGBgYGBgYGBgYGBgYaBgYGBgYGBgYGBgYGEwYGBgYGACAGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBughHh8EICkiIwQvJOsnBAgpKisALA== 0 255 AgAABgYGBgYcBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgQGBgYGBgYGBgYGBgYEBgYGBgYGBgYGBgYGBAYGBgYGBgYGBgYGBgYGBgYGQAYG/xAGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgZkBgYGBgYGBgayBgYGBgYGBgYGBgYGBgUGBgYGBgYGBgYGBgYaBgYGBgYGBgYGBgYGEwYGBgYGACAGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBughHh8EICkiIwQvJOsnBAgpKisA 871 \000\000.\006\006\006\006\028\006.\006\006\006\006\006\006.\006\006\006\006\006\006.\006\006\006\006\006\006.\006\006\006\006\006\006.\006\004\006\006\006\006.\006\006\006\006\006\006.\004\006\006\006\006\006.\006\006\006\006\006\006.\006\006\006\006.\006\006\006\006\006\006.\006\006\006\006\006\@.\006\255\016\006\006\006.\006\006\006\006\006\006.\006\006\006\006\006\006.\006\006\006\006\006\006.\006\006\006\006\006\006.\006\006\006\006\006\006.\006\006\006\006\006\006.\006\006d\006\006\006.\006\006\006\006\178\006.\006\006\006\006\006\006.\006\006\006\006\005\006.\006\006\006\006\006\006.\006\006\006\026\006\006.\006\006\006\006\006\006.\006\006\019\006\006\006.\006\000\032\006\006\006.\006\006\006\006\006\006.\006\006\006\006\006\006.\006\006\006\006\006\006.\006\006\006\006\006\006.\006\006\006\006\006\006.\006\006\232!\030\031.\032\)\"#./\$\235'.\008\)*+
|
||||
+BAABAgMEERITBBQVFtckHwQgISMjBCQlJicEKCkqKwQsLS4vBIAAMjMENDU2NwQ4/4A7BDw9Pj8EQEFCJwRERUZHBEhJSksETE1OTwRQUVJTBFRVVlcEWFlaWwRcXV5fBDcEMzk6OwQ6WgQ8PT4/AA== 0 -1
|
||||
+BAAB7gMEERITBBQVFhceHwQgIQgjBCQlJgQUFRYXBBgZGhsPHB0eHwQgIQAAAQ== 0 -1
|
||||
+AABAAP//ERPyvwJEGB4bBBETNgQUFRPyvwJEGB4fGwQdEzYEKBUWFx4eHwQvHxgekwABDBsAASIjXl5eXl5eXl5eXl5eXl5eXiQ= 0 1 AA== 2 .
|
||||
+LS4vBDAxMjMENDUAAAE2NwAEAAECAwTyERMEFBUWFx4fBCAhMiMEJCUmJwQoKSorBCwtLi8EMDEyMwQ0NQAAATY3BDg5OjsEPD0+PwRAQUJDBDlFRkcESEn//4AATU5PBFBRUlAEVFVWVwRYWVpbBFxdXl8EYGFiYwRkRmZnamsEbG1ubwRwcXJzBHR1dndpeHl6ewR8fX5/BICBgoMEhIWGEBAQEBAQEBAQEP///38QEBAQEBAQEBCA/xAQEBAQEBAQEBAQEAAAARAQEBAQAAToBAMDgAAAAfoD6AI= 44 -1
|
||||
+BAABAgMEERITBBQVFhceHwQgISIjBCQlJicEKCkqKwQsLS4vBDAxMjMENDU2NwQ4OTo7BDw9Pj8EQEFCQwRERUZHBEhJSksETE1OTwRQUVJTBFRVVlcEWFlaWwRcXWRfBGBhYmMEZGVmZwRoaWprfwSAgYKDBISFhhAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAE6AQDAwP6A+gC 0 -1
|
||||
+FA== 0 -1
|
||||
+AQABAwEiAQcBCAEJAQoBCwEMAZ/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQATZxU2AAQ2Ni42Ngk2NjY2NIBYNgAQATY2NhM0/yI2NjYAAADeAzY2NjY2AAAAAQAbZ+oAAYNLS0tLaUtLATa+kHZ2dh9GFAA2NjYAADYDNjY2NjY2NjY2NjY2NgAAAAEAG2fqAAFsS0tLS2lLSwE2vnZ2dnYfRhQANjY2AAA2NiQ2NjT/fzbsNjY2NhU2NgAAATY2NiQ2Nv//gAB2dnZ2dnZ2/wsANiQ2NjT/fzbCwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2AAAAAQAbZxU2AAQ2NjY2Ngk2NjY2NIBYNgAQATY2NhM0/zY2NjYAAADeAzY2NjYwNjY2NjY2NjYAAAABABtnNjY2Ngk2NjY2NIBYNgAQATZANhM0/zY2NjYAAADeAzY2Njb/NjY2NjYAAAE2NjYAAAABABtn6gABbEtLS0tpS0sBNr6QdnZ2H0YUADY2NgAANgM2NoD///82NjY2NjY2AAAAAQAbZ+oAAWxLS0tLaUtLATkAAAG+dnZ2dh9GFAA2NjYAADY2JDY2NP9/NjY2NjY2FTY2AAABNjY2JDY2//+AAHZ2dnZ2dnb/NjY2AAQ2AAAAAQAbZxU2AAQAAAE2NjY2Ngk2NjY2NIBYNgAQATY2NhM0/zY2NjYAAADeAzY2NjYwNjY2NjY2NjYAAAABABtnNjYhNjYVNjZPNjY2NjYkNjb/34AAbXZ2dnZ2dv8L0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0bnR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0QJA6DY2NjY0NgAAAQABAIAAAAE2NgpQNjbQsSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQEAGw== 0 -1
|
||||
+BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2Ngk2NjY2NIBYNgAQATY2NjY0/zY2NjYAAADeAzY2NjY2NjY2NjY2NjYAAAABABtn6gABbEtLS0tpS0sNNr52dnZ2H0YUADY2NgAANjYkNjY0/382NjY2NjYVNjZPNjY2NjYkNjb//4AAdnZ2dnZ2dv8LAED/NjY2NjQ2AAABAAEAgAAAARU2ClA2NtDO09DQ0NDQ0DPQ0OLQ0AAgAAD7EBQUNjYAAdDQkAAAFBQUFMLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NgAAAQAb 0 255 BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2Ngk2NjY2NIBYNgAQATY2NjY0/zY2NjYAAADeAzY2NjY2NjY2NjY2NjYAAAABABtn6gABbEtLS0tpS0sNNr52dnZ2H0YUADY2NgAANjYkNjY0/382NjY2NjYVNjZPNjY2NjYkNjb//4AAdnZ2dnZ2dv8LAED/NjY2NjQ2AAABAAEAgAAAARU2ClA2NtDO09DQ0NDQ0DPQ0OLQ0AAgAAD7EBQUNjYAAdDQkAAAFBQUFMLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NgAA 655 \232\000\000\192.666\194\194\194\194\194\194\194\194\194\194\159\194\194\194\194\194\19466\$\0216466666.6\000\000\000\001\000\027g\0216\000\00466666\00966664\128X6\000\016\00166664\2556666\000\000\000\222\0036666666666.66\000\000\000\001\000\027g\234\000\001lKKKKiKK\0136\190vvvv\031F\020\000666\000\00066\$664\255\127666666\02166O.6666\$66\255\255\128\000vvvvvvv\255\011\000\@\255666646\000\000\001\000\001\000\128\000\000\001\0216\010P66\208\206\211\208\208\208\208\208\208.\208\208\226\208\208\000\032\000\000\251\016\020\02066\000\001\208\208\144\000\000\020\020\020\020\194\194\194\194\194\194\194\194\194\159\194\194\194\194\194\19466\$\0216466\000
|
||||
+BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AMXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxfr6+vr6xcUAAAEAG2cVNgAENjY2NjYJNjY2NjSAWDYAEAE2NjY2NP82NjY2AAAA3gM2Nrw2NjY2NjY2NjY2AAD8AAAbZ+oAAWxLS0tLaUtLDTa+dnZ2dh9GFAA2NjYAADY2JFE2NP9/NjY2NjY2FTY2TzY2NjY2JDY2//+AAHZ2dnZ2dnb/CwBA/zY2NjY0NgAAAQABAIAAAAEVNgpQNjbQztPQ3NDQ0NAz0NDi0NDQAAAA+xAUFDYAAAPo0JAAABQUFBQ2Ns0BAH82WCs2NjY2NnYAAP//dnZ2/wsAAAEAGw== 0 -1
|
||||
+BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2Ngk2NjYdAR4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugHWEbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHUAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9AQEA/wA= 0 255 BOgAAMAfNjY2wsLCwsLCwsLCwp/CwsLCwsI2NiQVNjQ2NjY2NjY2AAAAAQAbZxU2AAQ2NjY2Ngk2NjYdAR4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugHWEbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHUAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9AQEA 717 \232\000\000\192.666\194\194\194\194\194\194\194\194\194\194\159\194\194\194\194\194\19466\$\0216466666.6\000\000\000\001\000\027g\0216\000\00466666\009666\029\001\030\001\159\001\160\001\161\001\162\001\163\001\164\001\165\001\166\001\167\001\168\001\169\001\170\001\171\001\172\001\173.\174.\175.\176.\177.\178.\179.\180.\181.\182.\183.\184.\185.\186.\214.\188\001\189\001\190\001\191\001\192\001\193\001\194\001\195\001\196.\197.\198.\199.\200.\201.\202.\203.\204.\205.\206.\207.\208.\209.\210.\211.\212.\213.\214.\215.\216.\217.\218.\219.\212.\221.\222.\223.\224.\225.\226.\227.\228.\229.\230.\231.\232.\233.\234.\235.\236.\237.\238.\239.\240.\241.\242.\243.\244.\245.\246.\247.\248.\249.\250.\251.\252.\253.\001
|
||||
+BOgAAMAfNjY2wsLCwsLCwsLCwp8EMDEFGAEfASABIQEiASMBJAEnASgBKQEqASsBLAEtAS4BNwE4ATkBOiA7ATwBPQE+AT8NAQ4A/gEQAREAAH//ARQBFwUYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASvALMLCwsLCwsLCwp8EMDEFGAEfASABIQEiASMBJAEnASgBKQEqASsBLAEtAS4BNwE4ATkBOiA7ATwBPQE+AT8NAQ4A/gEQAREAAH//ARQBFwUYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASvALAEtAS4BJwEoAUgBKgErASwBLQEuATsBLQEuAScBKAFIASoBKwEsAS0BLgE7ATwBPQE+AT8A 0 -1
|
||||
+BAABAgMEAAABBwQICQoLBBINDg8EEBESEwQUFRYXBBgZGhsEHB0eNjY2AAA2NjY2Njw2ATYYNkUAAAIQ//9/TExMTExMTExMTExMTExMTExMTExMTENMbxMTExNqEykTlhMTEyYLAAEUFAAABjY2NjYAUwE2NhwAAAABAAABBDb/fwAAAzY2NgX//wU2NgD7SDYkNjk5OTk5OTk5OTk5OTk5OTk5OTk5PTY0pDY2NjY2NiQAAAE2Nn82cXZ2dnZ2dnZ20Coq0DPQ0P/gM9DQ//9//9AAAAHSu9DRkNAABgAA/xQUAAAGfzYkNjY0Nks2AAQeVTb/AAABNn////8= 0 -1
|
||||
+BAABAgMEBAgJCgsEDA0ODwQQERITBAQ0NTY3BDg5OjsEPD0iIwQkJSYnBD8pKisELC0uLwQwMTIzBDQ1NjcEODk6OwQ8PT4/BEBFRkcESElKSwRMTUNPBFBRUlsEVFVWVwRYWVpbBFxNXl8EYGFiYwRkZWZnBGhpamsEbG0eHwQgISIjBCQlJicEKCkqKwQsLScvBICBgoME+oWGhwSIiYqLBDQ1NjcEODk9Pj8EQEFCQw== 0 -1
|
||||
+AgAAAhBiAgAAAhAiAQEBAgFXAhBiAgAAAhABAgFXAQECEGICAAACECIBVwEBAgFXAQEBAQIBVwAAAQ== 0 56 AgAAAhBiAgAAAhAiAQEBAgFXAhBiAgAAAhABAgFXAQECEGICAAACECIBVwEBAgFXAQEBAQIBVwA= 129 \000\000.\016b.\000\000.\016\".\001.\002.W.\016b.\000\000.\016\001.\001W.\001.\016b.\000\000.\016\".W.\001.\001W.\001.\001.\001W
|
||||
+wMAAAcDAwMDANgMDAwMDAwMDA/oAAA== 16 5 AwMD+gA= 13 \003\003\250
|
@ -1,386 +0,0 @@
|
||||
commit c803cb9b24c6cea15698768e4301e963b98e742c
|
||||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Thu Apr 13 11:56:28 2017 +0200
|
||||
|
||||
resolv: Support an exactly sized buffer in ns_name_pack [BZ #21359]
|
||||
|
||||
This bug did not affect name resolution because those functions
|
||||
indirectly call ns_name_pack with a buffer which is always larger
|
||||
than the generated query packet, even in the case of the
|
||||
longest-possible domain name.
|
||||
|
||||
diff --git a/resolv/Makefile b/resolv/Makefile
|
||||
index db287947a4f7e9a6..d41fd4603d7b7d77 100644
|
||||
--- a/resolv/Makefile
|
||||
+++ b/resolv/Makefile
|
||||
@@ -44,6 +44,7 @@ tests += \
|
||||
tst-bug18665 \
|
||||
tst-bug18665-tcp \
|
||||
tst-ns_name \
|
||||
+ tst-ns_name_compress \
|
||||
tst-res_hconf_reorder \
|
||||
tst-res_use_inet6 \
|
||||
tst-resolv-basic \
|
||||
@@ -142,6 +143,7 @@ $(objpfx)tst-resolv-canonname: \
|
||||
|
||||
$(objpfx)tst-ns_name: $(objpfx)libresolv.so
|
||||
$(objpfx)tst-ns_name.out: tst-ns_name.data
|
||||
+$(objpfx)tst-ns_name_compress: $(objpfx)libresolv.so
|
||||
|
||||
|
||||
# This test case uses the deprecated RES_USE_INET6 resolver option.
|
||||
diff --git a/resolv/ns_name.c b/resolv/ns_name.c
|
||||
index 0d76fe53a6f2245f..08a75e2fe0b4edd6 100644
|
||||
--- a/resolv/ns_name.c
|
||||
+++ b/resolv/ns_name.c
|
||||
@@ -475,7 +475,7 @@ ns_name_pack(const u_char *src, u_char *dst, int dstsiz,
|
||||
goto cleanup;
|
||||
}
|
||||
n = labellen(srcp);
|
||||
- if (dstp + 1 + n >= eob) {
|
||||
+ if (n + 1 > eob - dstp) {
|
||||
goto cleanup;
|
||||
}
|
||||
memcpy(dstp, srcp, n + 1);
|
||||
diff --git a/resolv/tst-ns_name.c b/resolv/tst-ns_name.c
|
||||
index 66d9a6666b2ebde2..65eea4c827780826 100644
|
||||
--- a/resolv/tst-ns_name.c
|
||||
+++ b/resolv/tst-ns_name.c
|
||||
@@ -195,6 +195,7 @@ print_hex (const char *label, struct buffer buffer)
|
||||
static void
|
||||
run_test_case (struct test_case *t)
|
||||
{
|
||||
+ /* Test ns_name_unpack. */
|
||||
unsigned char *unpacked = xmalloc (NS_MAXCDNAME);
|
||||
int consumed = ns_name_unpack
|
||||
(t->input.data, t->input.data + t->input.length,
|
||||
@@ -211,16 +212,19 @@ run_test_case (struct test_case *t)
|
||||
}
|
||||
if (consumed != -1)
|
||||
{
|
||||
- if (memcmp (unpacked, t->unpack_output.data, consumed) != 0)
|
||||
+ if (memcmp (unpacked, t->unpack_output.data,
|
||||
+ t->unpack_output.length) != 0)
|
||||
{
|
||||
support_record_failure ();
|
||||
printf ("%s:%zu: error: wrong data from ns_name_unpack\n",
|
||||
t->path, t->lineno);
|
||||
print_hex ("expected:", t->unpack_output);
|
||||
- print_hex ("actual: ", (struct buffer) { unpacked, consumed });
|
||||
+ print_hex ("actual: ",
|
||||
+ (struct buffer) { unpacked, t->unpack_output.length });
|
||||
return;
|
||||
}
|
||||
|
||||
+ /* Test ns_name_ntop. */
|
||||
char *text = xmalloc (NS_MAXDNAME);
|
||||
int ret = ns_name_ntop (unpacked, text, NS_MAXDNAME);
|
||||
if (ret != t->ntop_result)
|
||||
@@ -243,6 +247,137 @@ run_test_case (struct test_case *t)
|
||||
printf (" actual: \"%s\"\n", text);
|
||||
return;
|
||||
}
|
||||
+
|
||||
+ /* Test ns_name_pton. Unpacking does not check the
|
||||
+ NS_MAXCDNAME limit, but packing does, so we need to
|
||||
+ adjust the expected result. */
|
||||
+ int expected;
|
||||
+ if (t->unpack_output.length > NS_MAXCDNAME)
|
||||
+ expected = -1;
|
||||
+ else if (strcmp (text, ".") == 0)
|
||||
+ /* The root domain is fully qualified. */
|
||||
+ expected = 1;
|
||||
+ else
|
||||
+ /* The domain name is never fully qualified. */
|
||||
+ expected = 0;
|
||||
+ unsigned char *repacked = xmalloc (NS_MAXCDNAME);
|
||||
+ ret = ns_name_pton (text, repacked, NS_MAXCDNAME);
|
||||
+ if (ret != expected)
|
||||
+ {
|
||||
+ support_record_failure ();
|
||||
+ printf ("%s:%zu: error: wrong result from ns_name_pton\n"
|
||||
+ " expected: %d\n"
|
||||
+ " actual: %d\n",
|
||||
+ t->path, t->lineno, expected, ret);
|
||||
+ return;
|
||||
+ }
|
||||
+ if (ret >= 0
|
||||
+ && memcmp (repacked, unpacked, t->unpack_output.length) != 0)
|
||||
+ {
|
||||
+ support_record_failure ();
|
||||
+ printf ("%s:%zu: error: wrong data from ns_name_pton\n",
|
||||
+ t->path, t->lineno);
|
||||
+ print_hex ("expected:", t->unpack_output);
|
||||
+ print_hex ("actual: ",
|
||||
+ (struct buffer) { repacked, t->unpack_output.length });
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ /* Test ns_name_compress, no compression case. */
|
||||
+ if (t->unpack_output.length > NS_MAXCDNAME)
|
||||
+ expected = -1;
|
||||
+ else
|
||||
+ expected = t->unpack_output.length;
|
||||
+ memset (repacked, '$', NS_MAXCDNAME);
|
||||
+ {
|
||||
+ enum { ptr_count = 5 };
|
||||
+ const unsigned char *dnptrs[ptr_count] = { repacked, };
|
||||
+ ret = ns_name_compress (text, repacked, NS_MAXCDNAME,
|
||||
+ dnptrs, dnptrs + ptr_count);
|
||||
+ if (ret != expected)
|
||||
+ {
|
||||
+ support_record_failure ();
|
||||
+ printf ("%s:%zu: error: wrong result from ns_name_compress\n"
|
||||
+ " expected: %d\n"
|
||||
+ " actual: %d\n",
|
||||
+ t->path, t->lineno, expected, ret);
|
||||
+ return;
|
||||
+ }
|
||||
+ if (ret < 0)
|
||||
+ {
|
||||
+ TEST_VERIFY (dnptrs[0] == repacked);
|
||||
+ TEST_VERIFY (dnptrs[1] == NULL);
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ if (memcmp (repacked, unpacked, t->unpack_output.length) != 0)
|
||||
+ {
|
||||
+ support_record_failure ();
|
||||
+ printf ("%s:%zu: error: wrong data from ns_name_compress\n",
|
||||
+ t->path, t->lineno);
|
||||
+ print_hex ("expected:", t->unpack_output);
|
||||
+ print_hex ("actual: ", (struct buffer) { repacked, ret });
|
||||
+ return;
|
||||
+ }
|
||||
+ TEST_VERIFY (dnptrs[0] == repacked);
|
||||
+ if (unpacked[0] == '\0')
|
||||
+ /* The root domain is not a compression target. */
|
||||
+ TEST_VERIFY (dnptrs[1] == NULL);
|
||||
+ else
|
||||
+ {
|
||||
+ TEST_VERIFY (dnptrs[1] == repacked);
|
||||
+ TEST_VERIFY (dnptrs[2] == NULL);
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /* Test ns_name_compress, full compression case. Skip this
|
||||
+ test for invalid names and the root domain. */
|
||||
+ if (expected >= 0 && unpacked[0] != '\0')
|
||||
+ {
|
||||
+ /* The destination buffer needs additional room for the
|
||||
+ offset, the initial name, and the compression
|
||||
+ reference. */
|
||||
+ enum { name_offset = 259 };
|
||||
+ size_t target_offset = name_offset + t->unpack_output.length;
|
||||
+ size_t repacked_size = target_offset + 2;
|
||||
+ repacked = xrealloc (repacked, repacked_size);
|
||||
+ memset (repacked, '@', repacked_size);
|
||||
+ memcpy (repacked + name_offset,
|
||||
+ t->unpack_output.data, t->unpack_output.length);
|
||||
+ enum { ptr_count = 5 };
|
||||
+ const unsigned char *dnptrs[ptr_count]
|
||||
+ = { repacked, repacked + name_offset, };
|
||||
+ ret = ns_name_compress
|
||||
+ (text, repacked + target_offset, NS_MAXCDNAME,
|
||||
+ dnptrs, dnptrs + ptr_count);
|
||||
+ if (ret != 2)
|
||||
+ {
|
||||
+ support_record_failure ();
|
||||
+ printf ("%s:%zu: error: wrong result from ns_name_compress"
|
||||
+ " (2)\n"
|
||||
+ " expected: 2\n"
|
||||
+ " actual: %d\n",
|
||||
+ t->path, t->lineno, ret);
|
||||
+ return;
|
||||
+ }
|
||||
+ if (memcmp (repacked + target_offset, "\xc1\x03", 2) != 0)
|
||||
+ {
|
||||
+ support_record_failure ();
|
||||
+ printf ("%s:%zu: error: wrong data from ns_name_compress"
|
||||
+ " (2)\n"
|
||||
+ " expected: C103\n",
|
||||
+ t->path, t->lineno);
|
||||
+ print_hex ("actual: ",
|
||||
+ (struct buffer) { repacked + target_offset, ret });
|
||||
+ return;
|
||||
+ }
|
||||
+ TEST_VERIFY (dnptrs[0] == repacked);
|
||||
+ TEST_VERIFY (dnptrs[1] == repacked + name_offset);
|
||||
+ TEST_VERIFY (dnptrs[2] == NULL);
|
||||
+ }
|
||||
+
|
||||
+ free (repacked);
|
||||
}
|
||||
free (text);
|
||||
}
|
||||
diff --git a/resolv/tst-ns_name_compress.c b/resolv/tst-ns_name_compress.c
|
||||
new file mode 100644
|
||||
index 0000000000000000..300ba0bf8f0b3ad1
|
||||
--- /dev/null
|
||||
+++ b/resolv/tst-ns_name_compress.c
|
||||
@@ -0,0 +1,75 @@
|
||||
+/* Test ns_name_compress corner cases.
|
||||
+ Copyright (C) 2017 Free Software Foundation, Inc.
|
||||
+ This file is part of the GNU C Library.
|
||||
+
|
||||
+ The GNU C Library is free software; you can redistribute it and/or
|
||||
+ modify it under the terms of the GNU Lesser General Public
|
||||
+ License as published by the Free Software Foundation; either
|
||||
+ version 2.1 of the License, or (at your option) any later version.
|
||||
+
|
||||
+ The GNU C Library is distributed in the hope that it will be useful,
|
||||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ Lesser General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU Lesser General Public
|
||||
+ License along with the GNU C Library; if not, see
|
||||
+ <http://www.gnu.org/licenses/>. */
|
||||
+
|
||||
+#include <resolv.h>
|
||||
+#include <stdlib.h>
|
||||
+#include <support/check.h>
|
||||
+#include <support/support.h>
|
||||
+
|
||||
+/* Check that we can process names which fit into the destination
|
||||
+ buffer exactly. See bug 21359. */
|
||||
+static void
|
||||
+test_exact_fit (const char *name, size_t length)
|
||||
+{
|
||||
+ unsigned char *buf = xmalloc (length + 1);
|
||||
+ memset (buf, '$', length + 1);
|
||||
+ enum { ptr_count = 5 };
|
||||
+ const unsigned char *dnptrs[ptr_count] = { buf, };
|
||||
+ int ret = ns_name_compress (name, buf, length,
|
||||
+ dnptrs, dnptrs + ptr_count);
|
||||
+ if (ret < 0)
|
||||
+ {
|
||||
+ support_record_failure ();
|
||||
+ printf ("error: ns_name_compress for %s/%zu failed\n", name, length);
|
||||
+ return;
|
||||
+ }
|
||||
+ if ((size_t) ret != length)
|
||||
+ {
|
||||
+ support_record_failure ();
|
||||
+ printf ("error: ns_name_compress for %s/%zu result mismatch: %d\n",
|
||||
+ name, length, ret);
|
||||
+ }
|
||||
+ if (buf[length] != '$')
|
||||
+ {
|
||||
+ support_record_failure ();
|
||||
+ printf ("error: ns_name_compress for %s/%zu padding write\n",
|
||||
+ name, length);
|
||||
+ }
|
||||
+ free (buf);
|
||||
+}
|
||||
+
|
||||
+static int
|
||||
+do_test (void)
|
||||
+{
|
||||
+ test_exact_fit ("abc", 5);
|
||||
+ test_exact_fit ("abc.", 5);
|
||||
+ {
|
||||
+ char long_name[]
|
||||
+ = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa."
|
||||
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa."
|
||||
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa."
|
||||
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.";
|
||||
+ TEST_VERIFY (strlen (long_name) == NS_MAXCDNAME - 1);
|
||||
+ test_exact_fit (long_name, NS_MAXCDNAME);
|
||||
+ long_name[sizeof (long_name) - 1] = '\0';
|
||||
+ test_exact_fit (long_name, NS_MAXCDNAME);
|
||||
+ }
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+#include <support/test-driver.c>
|
||||
diff --git a/resolv/tst-resolv-basic.c b/resolv/tst-resolv-basic.c
|
||||
index 94b1631121de01f3..f2b1fc7490430bce 100644
|
||||
--- a/resolv/tst-resolv-basic.c
|
||||
+++ b/resolv/tst-resolv-basic.c
|
||||
@@ -25,6 +25,12 @@
|
||||
#include <support/resolv_test.h>
|
||||
#include <support/support.h>
|
||||
|
||||
+#define LONG_NAME \
|
||||
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaax." \
|
||||
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaay." \
|
||||
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz." \
|
||||
+ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaat"
|
||||
+
|
||||
static void
|
||||
response (const struct resolv_response_context *ctx,
|
||||
struct resolv_response_builder *b,
|
||||
@@ -43,13 +49,15 @@ response (const struct resolv_response_context *ctx,
|
||||
qname_compare = qname + 2;
|
||||
else
|
||||
qname_compare = qname;
|
||||
- enum {www, alias, nxdomain} requested_qname;
|
||||
+ enum {www, alias, nxdomain, long_name} requested_qname;
|
||||
if (strcmp (qname_compare, "www.example") == 0)
|
||||
requested_qname = www;
|
||||
else if (strcmp (qname_compare, "alias.example") == 0)
|
||||
requested_qname = alias;
|
||||
else if (strcmp (qname_compare, "nxdomain.example") == 0)
|
||||
requested_qname = nxdomain;
|
||||
+ else if (strcmp (qname_compare, LONG_NAME) == 0)
|
||||
+ requested_qname = long_name;
|
||||
else
|
||||
{
|
||||
support_record_failure ();
|
||||
@@ -69,6 +77,7 @@ response (const struct resolv_response_context *ctx,
|
||||
switch (requested_qname)
|
||||
{
|
||||
case www:
|
||||
+ case long_name:
|
||||
resolv_response_open_record (b, qname, qclass, qtype, 0);
|
||||
break;
|
||||
case alias:
|
||||
@@ -209,6 +218,10 @@ do_test (void)
|
||||
"name: www.example\n"
|
||||
"alias: alias.example\n"
|
||||
"address: 2001:db8::2\n");
|
||||
+ check_h (LONG_NAME, AF_INET,
|
||||
+ "name: " LONG_NAME "\n"
|
||||
+ "address: 192.0.2.20\n");
|
||||
+
|
||||
check_ai ("www.example", "80", AF_UNSPEC,
|
||||
"address: STREAM/TCP 192.0.2.17 80\n"
|
||||
"address: DGRAM/UDP 192.0.2.17 80\n"
|
||||
@@ -223,6 +236,13 @@ do_test (void)
|
||||
"address: STREAM/TCP 2001:db8::2 80\n"
|
||||
"address: DGRAM/UDP 2001:db8::2 80\n"
|
||||
"address: RAW/IP 2001:db8::2 80\n");
|
||||
+ check_ai (LONG_NAME, "80", AF_UNSPEC,
|
||||
+ "address: STREAM/TCP 192.0.2.20 80\n"
|
||||
+ "address: DGRAM/UDP 192.0.2.20 80\n"
|
||||
+ "address: RAW/IP 192.0.2.20 80\n"
|
||||
+ "address: STREAM/TCP 2001:db8::4 80\n"
|
||||
+ "address: DGRAM/UDP 2001:db8::4 80\n"
|
||||
+ "address: RAW/IP 2001:db8::4 80\n");
|
||||
check_ai ("www.example", "80", AF_INET,
|
||||
"address: STREAM/TCP 192.0.2.17 80\n"
|
||||
"address: DGRAM/UDP 192.0.2.17 80\n"
|
||||
@@ -231,6 +251,10 @@ do_test (void)
|
||||
"address: STREAM/TCP 192.0.2.18 80\n"
|
||||
"address: DGRAM/UDP 192.0.2.18 80\n"
|
||||
"address: RAW/IP 192.0.2.18 80\n");
|
||||
+ check_ai (LONG_NAME, "80", AF_INET,
|
||||
+ "address: STREAM/TCP 192.0.2.20 80\n"
|
||||
+ "address: DGRAM/UDP 192.0.2.20 80\n"
|
||||
+ "address: RAW/IP 192.0.2.20 80\n");
|
||||
check_ai ("www.example", "80", AF_INET6,
|
||||
"address: STREAM/TCP 2001:db8::1 80\n"
|
||||
"address: DGRAM/UDP 2001:db8::1 80\n"
|
||||
@@ -239,6 +263,10 @@ do_test (void)
|
||||
"address: STREAM/TCP 2001:db8::2 80\n"
|
||||
"address: DGRAM/UDP 2001:db8::2 80\n"
|
||||
"address: RAW/IP 2001:db8::2 80\n");
|
||||
+ check_ai (LONG_NAME, "80", AF_INET6,
|
||||
+ "address: STREAM/TCP 2001:db8::4 80\n"
|
||||
+ "address: DGRAM/UDP 2001:db8::4 80\n"
|
||||
+ "address: RAW/IP 2001:db8::4 80\n");
|
||||
|
||||
check_h ("t.www.example", AF_INET,
|
||||
"name: t.www.example\n"
|
@ -5,89 +5,12 @@ Date: Thu Jul 6 14:03:39 2017 +0200
|
||||
resolv: Deal with non-deterministic address order in tst-resolv-basic
|
||||
|
||||
diff --git a/resolv/tst-resolv-basic.c b/resolv/tst-resolv-basic.c
|
||||
index 3dfa1657f50ab588..64eedbbd81d58d95 100644
|
||||
index 95aea1bcfb266017..66a0e8a1659219b4 100644
|
||||
--- a/resolv/tst-resolv-basic.c
|
||||
+++ b/resolv/tst-resolv-basic.c
|
||||
@@ -22,6 +22,7 @@
|
||||
#include <string.h>
|
||||
#include <support/check.h>
|
||||
#include <support/check_nss.h>
|
||||
+#include <support/format_nss.h>
|
||||
#include <support/resolv_test.h>
|
||||
#include <support/support.h>
|
||||
|
||||
@@ -204,6 +205,68 @@ check_ai (const char *name, const char *service,
|
||||
expected);
|
||||
}
|
||||
|
||||
+/* Test for bug 21295: getaddrinfo used to discard address information
|
||||
+ instead of merging it. */
|
||||
+static void
|
||||
+test_bug_21295 (void)
|
||||
+{
|
||||
+ /* The address order is unpredictable. There are two factors which
|
||||
+ contribute to that: The stub resolver does not perform proper
|
||||
+ response matching for A/AAAA queries (an A response could be
|
||||
+ associated with an AAAA query and vice versa), and without
|
||||
+ namespaces, system configuration could affect address
|
||||
+ ordering. */
|
||||
+ for (int do_tcp = 0; do_tcp < 2; ++do_tcp)
|
||||
+ {
|
||||
+ const struct addrinfo hints =
|
||||
+ {
|
||||
+ .ai_family = AF_INET6,
|
||||
+ .ai_socktype = SOCK_STREAM,
|
||||
+ .ai_flags = AI_V4MAPPED | AI_ALL,
|
||||
+ };
|
||||
+ const char *qname;
|
||||
+ if (do_tcp)
|
||||
+ qname = "t.www.example";
|
||||
+ else
|
||||
+ qname = "www.example";
|
||||
+ struct addrinfo *ai = NULL;
|
||||
+ int ret = getaddrinfo (qname, "80", &hints, &ai);
|
||||
+ TEST_VERIFY_EXIT (ret == 0);
|
||||
+
|
||||
+ const char *expected_a;
|
||||
+ const char *expected_b;
|
||||
+ if (do_tcp)
|
||||
+ {
|
||||
+ expected_a = "flags: AI_V4MAPPED AI_ALL\n"
|
||||
+ "address: STREAM/TCP 2001:db8::3 80\n"
|
||||
+ "address: STREAM/TCP ::ffff:192.0.2.19 80\n";
|
||||
+ expected_b = "flags: AI_V4MAPPED AI_ALL\n"
|
||||
+ "address: STREAM/TCP ::ffff:192.0.2.19 80\n"
|
||||
+ "address: STREAM/TCP 2001:db8::3 80\n";
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ expected_a = "flags: AI_V4MAPPED AI_ALL\n"
|
||||
+ "address: STREAM/TCP 2001:db8::1 80\n"
|
||||
+ "address: STREAM/TCP ::ffff:192.0.2.17 80\n";
|
||||
+ expected_b = "flags: AI_V4MAPPED AI_ALL\n"
|
||||
+ "address: STREAM/TCP ::ffff:192.0.2.17 80\n"
|
||||
+ "address: STREAM/TCP 2001:db8::1 80\n";
|
||||
+ }
|
||||
+
|
||||
+ char *actual = support_format_addrinfo (ai, ret);
|
||||
+ if (!(strcmp (actual, expected_a) == 0
|
||||
+ || strcmp (actual, expected_b) == 0))
|
||||
+ {
|
||||
+ support_record_failure ();
|
||||
+ printf ("error: %s: unexpected response (TCP: %d):\n%s\n",
|
||||
+ __func__, do_tcp, actual);
|
||||
+ }
|
||||
+ free (actual);
|
||||
+ freeaddrinfo (ai);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
static int
|
||||
do_test (void)
|
||||
{
|
||||
@@ -398,21 +461,7 @@ do_test (void)
|
||||
check_ai ("t.nxdomain.example", "80", AF_INET6,
|
||||
"error: Name or service not known\n");
|
||||
@@ -495,22 +495,6 @@ do_test (void)
|
||||
test_bug_21295 ();
|
||||
test_nodata_nxdomain ();
|
||||
|
||||
- /* Test for bug 21295. */
|
||||
- check_ai_hints ("www.example", "80",
|
||||
@ -104,7 +27,7 @@ index 3dfa1657f50ab588..64eedbbd81d58d95 100644
|
||||
- "flags: AI_V4MAPPED AI_ALL\n"
|
||||
- "address: STREAM/TCP 2001:db8::3 80\n"
|
||||
- "address: STREAM/TCP ::ffff:192.0.2.19 80\n");
|
||||
+ test_bug_21295 ();
|
||||
|
||||
-
|
||||
resolv_test_end (aux);
|
||||
|
||||
return 0;
|
||||
|
@ -3,14 +3,14 @@ Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Fri Jun 30 21:10:23 2017 +0200
|
||||
|
||||
resolv: Introduce struct resolv_context [BZ #21668]
|
||||
|
||||
|
||||
struct resolv_context objects provide a temporary resolver context
|
||||
which does not change during a name lookup operation. Only when the
|
||||
outmost context is created, the stub resolver configuration is
|
||||
verified to be current (at present, only against previous res_init
|
||||
calls). Subsequent attempts to obtain the context will reuse the
|
||||
result of the initial verification operation.
|
||||
|
||||
|
||||
struct resolv_context can also be extended in the future to store
|
||||
data which needs to be deallocated during thread cancellation.
|
||||
|
||||
@ -419,7 +419,7 @@ index f3e756b68448f6ea..bd3fbcb08250c61c 100644
|
||||
struct hostent *resbuf, char **buffer,
|
||||
size_t *buffer_size, size_t buflen,
|
||||
diff --git a/resolv/Makefile b/resolv/Makefile
|
||||
index 79843d0d7ca92ffd..7f5e07d618297f60 100644
|
||||
index aafb1c5efab6d685..499f7692f1534aae 100644
|
||||
--- a/resolv/Makefile
|
||||
+++ b/resolv/Makefile
|
||||
@@ -28,7 +28,8 @@ headers := resolv.h \
|
||||
@ -2216,7 +2216,7 @@ index 0000000000000000..27c8d56b36104521
|
||||
+
|
||||
+#endif /* _RESOLV_CONTEXT_H */
|
||||
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
|
||||
index 4fb1eaef79bc66a3..efa7118498990073 100644
|
||||
index 284311011c84b971..b837939b9a02a1be 100644
|
||||
--- a/sysdeps/posix/getaddrinfo.c
|
||||
+++ b/sysdeps/posix/getaddrinfo.c
|
||||
@@ -60,6 +60,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
@ -2228,19 +2228,19 @@ index 4fb1eaef79bc66a3..efa7118498990073 100644
|
||||
#include <stdbool.h>
|
||||
#include <stdio.h>
|
||||
#include <stdio_ext.h>
|
||||
@@ -266,7 +268,8 @@ convert_hostent_to_gaih_addrtuple (const struct addrinfo *req,
|
||||
if (herrno == NETDB_INTERNAL) \
|
||||
@@ -252,7 +254,8 @@ convert_hostent_to_gaih_addrtuple (const struct addrinfo *req,
|
||||
break; \
|
||||
if (!scratch_buffer_grow (tmpbuf)) \
|
||||
{ \
|
||||
__set_h_errno (herrno); \
|
||||
- _res.options |= old_res_options & DEPRECATED_RES_USE_INET6; \
|
||||
+ __resolv_context_enable_inet6 (res_ctx, res_enable_inet6); \
|
||||
+ __resolv_context_put (res_ctx); \
|
||||
result = -EAI_SYSTEM; \
|
||||
+ __resolv_context_put (res_ctx); \
|
||||
result = -EAI_MEMORY; \
|
||||
goto free_and_return; \
|
||||
} \
|
||||
@@ -279,7 +282,8 @@ convert_hostent_to_gaih_addrtuple (const struct addrinfo *req,
|
||||
@@ -262,7 +265,8 @@ convert_hostent_to_gaih_addrtuple (const struct addrinfo *req,
|
||||
{ \
|
||||
if (!convert_hostent_to_gaih_addrtuple (req, _family,h, &addrmem)) \
|
||||
if (h_errno == NETDB_INTERNAL) \
|
||||
{ \
|
||||
- _res.options |= old_res_options & DEPRECATED_RES_USE_INET6; \
|
||||
+ __resolv_context_enable_inet6 (res_ctx, res_enable_inet6); \
|
||||
@ -2248,7 +2248,17 @@ index 4fb1eaef79bc66a3..efa7118498990073 100644
|
||||
result = -EAI_SYSTEM; \
|
||||
goto free_and_return; \
|
||||
} \
|
||||
@@ -582,7 +586,8 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
@@ -275,7 +279,8 @@ convert_hostent_to_gaih_addrtuple (const struct addrinfo *req,
|
||||
{ \
|
||||
if (!convert_hostent_to_gaih_addrtuple (req, _family, &th, &addrmem)) \
|
||||
{ \
|
||||
- _res.options |= old_res_options & DEPRECATED_RES_USE_INET6; \
|
||||
+ __resolv_context_enable_inet6 (res_ctx, res_enable_inet6); \
|
||||
+ __resolv_context_put (res_ctx); \
|
||||
result = -EAI_SYSTEM; \
|
||||
goto free_and_return; \
|
||||
} \
|
||||
@@ -572,7 +577,8 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
enum nss_status inet6_status = NSS_STATUS_UNAVAIL;
|
||||
enum nss_status status = NSS_STATUS_UNAVAIL;
|
||||
int no_more;
|
||||
@ -2258,7 +2268,7 @@ index 4fb1eaef79bc66a3..efa7118498990073 100644
|
||||
|
||||
/* If we do not have to look for IPv6 addresses or the canonical
|
||||
name, use the simple, old functions, which do not support
|
||||
@@ -765,16 +770,14 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
@@ -758,16 +764,14 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
no_more = 0;
|
||||
nip = __nss_hosts_database;
|
||||
|
||||
@ -2281,7 +2291,7 @@ index 4fb1eaef79bc66a3..efa7118498990073 100644
|
||||
|
||||
while (!no_more)
|
||||
{
|
||||
@@ -811,8 +814,9 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
@@ -801,8 +805,9 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
|
||||
if (!scratch_buffer_grow (tmpbuf))
|
||||
{
|
||||
@ -2293,7 +2303,7 @@ index 4fb1eaef79bc66a3..efa7118498990073 100644
|
||||
result = -EAI_MEMORY;
|
||||
goto free_and_return;
|
||||
}
|
||||
@@ -911,9 +915,9 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
@@ -901,9 +906,9 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
canonbuf = getcanonname (nip, at, name);
|
||||
if (canonbuf == NULL)
|
||||
{
|
||||
@ -2306,7 +2316,7 @@ index 4fb1eaef79bc66a3..efa7118498990073 100644
|
||||
result = -EAI_MEMORY;
|
||||
goto free_and_return;
|
||||
}
|
||||
@@ -953,7 +957,8 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
@@ -947,7 +952,8 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
nip = nip->next;
|
||||
}
|
||||
|
||||
@ -2314,5 +2324,5 @@ index 4fb1eaef79bc66a3..efa7118498990073 100644
|
||||
+ __resolv_context_enable_inet6 (res_ctx, res_enable_inet6);
|
||||
+ __resolv_context_put (res_ctx);
|
||||
|
||||
if (h_errno == NETDB_INTERNAL)
|
||||
{
|
||||
/* If we have a failure which sets errno, report it using
|
||||
EAI_SYSTEM. */
|
||||
|
73
glibc.spec
73
glibc.spec
@ -1,6 +1,6 @@
|
||||
%define glibcsrcdir glibc-2.25-57-g595f287ae0
|
||||
%define glibcsrcdir glibc-2.25-123-gedcf13e25c
|
||||
%define glibcversion 2.25
|
||||
%define glibcrelease 12%{?dist}
|
||||
%define glibcrelease 13%{?dist}
|
||||
# Pre-release tarballs are pulled in from git using a command that is
|
||||
# effectively:
|
||||
#
|
||||
@ -280,6 +280,7 @@ Patch2036: glibc-gcc-PR69537.patch
|
||||
|
||||
# extend_alloca removal, BZ 18023
|
||||
Patch2037: glibc-rh1315108.patch
|
||||
Patch2038: glibc-rh1315108-glob.patch
|
||||
|
||||
# Upstream BZ 20313
|
||||
Patch2110: glibc-rh1351108-update-to-unicode-9.0.0.patch
|
||||
@ -292,33 +293,18 @@ Patch62: glibc-nss_compat.patch
|
||||
Patch63: glibc-rh1416405.patch
|
||||
Patch64: glibc-bits-types-res_state.patch
|
||||
Patch69: glibc-libc_diag.patch
|
||||
Patch70: glibc-libc-pointer-arith.patch
|
||||
Patch71: glibc-dynarray-1.patch
|
||||
Patch72: glibc-dynarray-2.patch
|
||||
Patch73: glibc-dynarray-3.patch
|
||||
Patch74: glibc-dynarray-4.patch
|
||||
Patch75: glibc-dynarray-5.patch
|
||||
Patch76: glibc-alloc_buffer-1.patch
|
||||
Patch77: glibc-alloc_buffer-2.patch
|
||||
Patch78: glibc-rh168253-ns_name-tests.patch
|
||||
Patch79: glibc-rh168253-network-dn_expand-cleanup.patch
|
||||
Patch80: glibc-rh168253-nss_dns-declaration-cleanup.patch
|
||||
Patch81: glibc-rh168253-tst-resolv-canonname.patch
|
||||
Patch82: glibc-rh168253-remove-iquery.patch
|
||||
Patch83: glibc-rh168253-resolv-h-definitions-cleanup.patch
|
||||
Patch84: glibc-rh168253-ns_name_pack-buffer-size.patch
|
||||
Patch85: glibc-rh168253-remove-ends-fallback.patch
|
||||
Patch86: glibc-rh168253-sock_cloexec.patch
|
||||
Patch87: glibc-rh168253-builtin_expect.patch
|
||||
Patch88: glibc-rh168253-builtin_expect-fixup.patch
|
||||
Patch89: glibc-rh168253-res_dflretry.patch
|
||||
Patch90: glibc-rh168253-getaddrinfo-malloc-address-list.patch
|
||||
Patch91: glibc-rh168253-ai_canonname-tests.patch
|
||||
Patch92: glibc-rh168253-inet_pton-gnu-style.patch
|
||||
Patch93: glibc-rh168253-getaddrinfo-malloc-canonname.patch
|
||||
Patch94: glibc-rh168253-res_init-tests.patch
|
||||
Patch95: glibc-rh168253-getaddrinfo-malloc-canonname-strdup-1.patch
|
||||
Patch96: glibc-rh168253-getaddrinfo-malloc-canonname-strdup-2.patch
|
||||
Patch97: glibc-rh168253-getaddrinfo-malloc-canonname-strdup-3.patch
|
||||
Patch98: glibc-rh168253-res_vinit-hidden.patch
|
||||
Patch99: glibc-rh168253-res_randomid-reorg.patch
|
||||
@ -330,12 +316,10 @@ Patch104: glibc-rh168253-res_vinit-check-allocations.patch
|
||||
Patch105: glibc-rh168253-res_vinit_1-getline.patch
|
||||
Patch106: glibc-rh168253-tst-inet6_scopeid_pton-getaddrinfo.patch
|
||||
Patch107: glibc-rh168253-inet_pton_length.patch
|
||||
Patch108: glibc-rh168253-getaddrinfo-inet_pton_length.patch
|
||||
Patch109: glibc-rh168253-inet6_scopeid_pton-node-local.patch
|
||||
Patch110: glibc-rh168253-__res_initstamp-cleanup.patch
|
||||
Patch111: glibc-rh168253-res_libc-gnu-style.patch
|
||||
Patch112: glibc-rh168253-inet_pton-leading-zeros.patch
|
||||
Patch113: glibc-rh168253-getaddrinfo-merge-ipv6-ipv4-addresses.patch
|
||||
Patch114: glibc-rh168253-getaddrinfo-tests-bug21295.patch
|
||||
Patch115: glibc-rh168253-_-res_vinit-_res_hconf_init.patch
|
||||
Patch116: glibc-rh168253-resolv-tests-timeout.patch
|
||||
@ -365,14 +349,6 @@ Patch139: glibc-rh168253-resolv_conf-_res-matching.patch
|
||||
Patch140: glibc-rh168253-support_chroot.patch
|
||||
Patch141: glibc-rh168253-resolv-tests-no-patching.patch
|
||||
Patch142: glibc-rh168253-resolv-tests-nondeterministic.patch
|
||||
Patch143: glibc-rh168253-getaddrinfo-gethosts-res-ctx-release.patch
|
||||
Patch144: glibc-rh168253-getaddrinfo-gaih_inet-unreachable-return.patch
|
||||
Patch145: glibc-rh168253-getaddrinfo-errno.patch
|
||||
Patch146: glibc-rh168253-getaddrinfo-h_errno.patch
|
||||
Patch147: glibc-rh168253-getaddrinfo-errno-nss-failure.patch
|
||||
Patch148: glibc-rh168253-getaddrinfo-h_errno-no-success.patch
|
||||
Patch149: glibc-rh168253-getaddrinfo-no_data.patch
|
||||
Patch150: glibc-rh168253-getaddrinfo-gethosts-error-handling.patch
|
||||
Patch151: glibc-rh168253-tst-res_use_inet6-mapping.patch
|
||||
Patch152: glibc-rh168253-nss_dns-dead-code.patch
|
||||
Patch153: glibc-rh168253-resolv-oom-memory-leak.patch
|
||||
@ -969,6 +945,7 @@ microbenchmark tests on the system.
|
||||
%patch0060 -p1
|
||||
%patch2036 -p1
|
||||
%patch2037 -p1
|
||||
%patch2038 -p1
|
||||
%patch2110 -p1
|
||||
%patch2112 -p1
|
||||
%patch61 -p1
|
||||
@ -976,33 +953,18 @@ microbenchmark tests on the system.
|
||||
%patch63 -p1
|
||||
%patch64 -p1
|
||||
%patch69 -p1
|
||||
%patch70 -p1
|
||||
%patch71 -p1
|
||||
%patch72 -p1
|
||||
%patch73 -p1
|
||||
%patch74 -p1
|
||||
%patch75 -p1
|
||||
%patch76 -p1
|
||||
%patch77 -p1
|
||||
%patch78 -p1
|
||||
%patch79 -p1
|
||||
%patch80 -p1
|
||||
%patch81 -p1
|
||||
%patch82 -p1
|
||||
%patch83 -p1
|
||||
%patch84 -p1
|
||||
%patch85 -p1
|
||||
%patch86 -p1
|
||||
%patch87 -p1
|
||||
%patch88 -p1
|
||||
%patch89 -p1
|
||||
%patch90 -p1
|
||||
%patch91 -p1
|
||||
%patch92 -p1
|
||||
%patch93 -p1
|
||||
%patch94 -p1
|
||||
%patch95 -p1
|
||||
%patch96 -p1
|
||||
%patch97 -p1
|
||||
%patch98 -p1
|
||||
%patch99 -p1
|
||||
@ -1014,12 +976,10 @@ microbenchmark tests on the system.
|
||||
%patch105 -p1
|
||||
%patch106 -p1
|
||||
%patch107 -p1
|
||||
%patch108 -p1
|
||||
%patch109 -p1
|
||||
%patch110 -p1
|
||||
%patch111 -p1
|
||||
%patch112 -p1
|
||||
%patch113 -p1
|
||||
%patch114 -p1
|
||||
%patch115 -p1
|
||||
%patch116 -p1
|
||||
@ -1049,14 +1009,6 @@ microbenchmark tests on the system.
|
||||
%patch140 -p1
|
||||
%patch141 -p1
|
||||
%patch142 -p1
|
||||
%patch143 -p1
|
||||
%patch144 -p1
|
||||
%patch145 -p1
|
||||
%patch146 -p1
|
||||
%patch147 -p1
|
||||
%patch148 -p1
|
||||
%patch149 -p1
|
||||
%patch150 -p1
|
||||
%patch151 -p1
|
||||
%patch152 -p1
|
||||
%patch153 -p1
|
||||
@ -2463,6 +2415,23 @@ rm -f *.filelist*
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Wed Jan 17 2018 Florian Weimer <fweimer@redhat.com> - 2.25-13
|
||||
- PTHREAD_STACK_MIN is too small on x86-64 (#1527887)
|
||||
- CVE-2018-1000001: Make getcwd fail if it cannot obtain an absolute path
|
||||
(#1533837)
|
||||
- CVE-2017-16997: Check for empty tokens before dynamic string token
|
||||
expansion in the dynamic linker (#1526866)
|
||||
- CVE-2017-15804: glob: Fix overflow in GLOB_TILDE unescaping (swbz#22332)
|
||||
- CVE-2017-15670: glob: Fix one-byte overflow (#1504807)
|
||||
- CVE-2017-15671: glob: Fix memory leak (#1504807)
|
||||
- Auto-sync with upstream branch release/2.25/master,
|
||||
commit edcf13e25c1559558a6f12ff5a71d4136a39235e:
|
||||
- nss_files: Avoid large buffers with many host addresses (swbz#22078)
|
||||
- nss_files: Use struct scratch_buffer for gethostbyname (swbz#18023)
|
||||
- posix: Fix improper assert in Linux posix_spawn (BZ#22273)
|
||||
- Don't use IFUNC resolver for longjmp or system in libpthread (swbz#21041)
|
||||
- x86-64: Use fxsave/xsave/xsavec in _dl_runtime_resolve (swbz#21265)
|
||||
|
||||
* Wed Oct 11 2017 Florian Weimer <fweimer@redhat.com> - 2.25-12
|
||||
- Support an arbitrary number of search domains (#168253)
|
||||
- Detect and apply /etc/resolv.conf changes in libresolv (#1374239)
|
||||
|
2
sources
2
sources
@ -1 +1 @@
|
||||
SHA512 (glibc-2.25-57-g595f287ae0.tar.gz) = f295af48509b10c76f962e708248492728615fab57c60ae1a6fc404b0f1127be676d9b067d7f825cb1fcbea348a627b97046551dfd4faa12e57ff8c07c082a73
|
||||
SHA512 (glibc-2.25-123-gedcf13e25c.tar.gz) = b9eb5ae4c2f1f26d5bc9a21e2f59e700cf5a3fe01501e19c5da762e92e493fd0da9476536b4e0724cb0751cb0cb6884d91a26c4a6a2c32a4d1154f5a30f4dbea
|
||||
|
Loading…
Reference in New Issue
Block a user