From acc393551bb16afb55b03b5388079ba2e6dc93f5 Mon Sep 17 00:00:00 2001 From: jake Date: Wed, 15 Nov 2023 02:33:37 +0000 Subject: [PATCH] !265 sync from upstream * sync from upstream --- ...ked-and-readonly-path-in-host-config.patch | 36 + ...ck-symbols-and-compile-code-in-cmake.patch | 37 - ...79-sanbox-del-containers-in-metadata.patch | 27 + 0002-remove-unnecessary-strerror.patch | 97 -- ...dd-function-to-transfer-of-ownership.patch | 112 ++ 0003-improve-code-of-function-in-log.patch | 82 -- ...3-network-support-version-opt-result.patch | 31 + 0004-support-visibility-of-compiler.patch | 338 ----- ...r-process-state-and-add-needed-util-.patch | 218 +++ 0005-refactor-util-buffer-and-add-ut.patch | 1098 -------------- 0006-264-Support-both-C-11-and-C-17.patch | 34 - 0006-add-unit-test-for-util-function.patch | 109 ++ 0007-262-Fix-empty-pointer-and-overflow.patch | 1283 ----------------- ...-to-avoid-invoke-lxc-binary-directly.patch | 30 - lcr.spec | 24 +- v2.1.2.tar.gz | Bin 139900 -> 0 bytes v2.1.3.tar.gz | Bin 0 -> 151867 bytes 17 files changed, 547 insertions(+), 3009 deletions(-) create mode 100644 0001-280-Add-masked-and-readonly-path-in-host-config.patch delete mode 100644 0001-support-check-symbols-and-compile-code-in-cmake.patch create mode 100644 0002-279-sanbox-del-containers-in-metadata.patch delete mode 100644 0002-remove-unnecessary-strerror.patch create mode 100644 0003-add-function-to-transfer-of-ownership.patch delete mode 100644 0003-improve-code-of-function-in-log.patch create mode 100644 0004-283-network-support-version-opt-result.patch delete mode 100644 0004-support-visibility-of-compiler.patch create mode 100644 0005-add-attach-fd-for-process-state-and-add-needed-util-.patch delete mode 100644 0005-refactor-util-buffer-and-add-ut.patch delete mode 100644 0006-264-Support-both-C-11-and-C-17.patch create mode 100644 0006-add-unit-test-for-util-function.patch delete mode 100644 0007-262-Fix-empty-pointer-and-overflow.patch delete mode 100644 0008-266-set-env-to-avoid-invoke-lxc-binary-directly.patch delete mode 100644 v2.1.2.tar.gz create mode 100644 v2.1.3.tar.gz diff --git a/0001-280-Add-masked-and-readonly-path-in-host-config.patch b/0001-280-Add-masked-and-readonly-path-in-host-config.patch new file mode 100644 index 0000000..b93994d --- /dev/null +++ b/0001-280-Add-masked-and-readonly-path-in-host-config.patch @@ -0,0 +1,36 @@ +From dcdc428e0e48333405966e6c1188e77f8d2f550b Mon Sep 17 00:00:00 2001 +From: jake +Date: Wed, 8 Nov 2023 01:09:36 +0000 +Subject: [PATCH 1/6] !280 Add masked and readonly path in host config * Add + masked and readonly path in host config + +--- + src/json/schema/host-config.json | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/src/json/schema/host-config.json b/src/json/schema/host-config.json +index 302a537..30f1bdc 100644 +--- a/src/json/schema/host-config.json ++++ b/src/json/schema/host-config.json +@@ -293,6 +293,18 @@ + }, + "CgroupParent": { + "type": "string" ++ }, ++ "MaskedPaths": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } ++ }, ++ "ReadonlyPaths": { ++ "type": "array", ++ "items": { ++ "type": "string" ++ } + } + } + } +-- +2.33.0 + diff --git a/0001-support-check-symbols-and-compile-code-in-cmake.patch b/0001-support-check-symbols-and-compile-code-in-cmake.patch deleted file mode 100644 index 877a45c..0000000 --- a/0001-support-check-symbols-and-compile-code-in-cmake.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 6646d4020ba6e1ea2bf4a129cd7188368e18d3bc Mon Sep 17 00:00:00 2001 -From: haozi007 -Date: Sat, 26 Aug 2023 10:54:02 +0800 -Subject: [PATCH 1/8] support check symbols and compile code in cmake - -Signed-off-by: haozi007 ---- - cmake/checker.cmake | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git a/cmake/checker.cmake b/cmake/checker.cmake -index 13c1cdb..27a83d1 100644 ---- a/cmake/checker.cmake -+++ b/cmake/checker.cmake -@@ -20,6 +20,9 @@ - # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - # - -+include(CheckFunctionExists) -+include(CheckCSourceCompiles) -+ - # check depends library and headers - find_package(PkgConfig REQUIRED) - -@@ -91,3 +94,9 @@ if (ENABLE_GCOV) - _CHECK(CMD_GENHTML "CMD_GENHTML-NOTFOUND" "genhtml") - endif() - -+check_function_exists(strerror_r HAVE_STRERROR_R) -+ -+check_c_source_compiles( -+ "#define _GNU_SOURCE\n#include \nint main() { char err_str[128]; char *ptr = strerror_r(-2, err_str, 128); return ptr != (void *)0L; }" -+ STRERROR_R_CHAR_P -+) --- -2.34.1 - diff --git a/0002-279-sanbox-del-containers-in-metadata.patch b/0002-279-sanbox-del-containers-in-metadata.patch new file mode 100644 index 0000000..da31f45 --- /dev/null +++ b/0002-279-sanbox-del-containers-in-metadata.patch @@ -0,0 +1,27 @@ +From 0372a70a82a39b69e07b0953a9e7f1d25aa84ad0 Mon Sep 17 00:00:00 2001 +From: liuxu +Date: Wed, 8 Nov 2023 01:10:05 +0000 +Subject: [PATCH 2/6] !279 sanbox:del containers in metadata * sanbox:del + containers in metadata + +--- + src/json/schema/sandbox/metadata.json | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/src/json/schema/sandbox/metadata.json b/src/json/schema/sandbox/metadata.json +index 56cc9e0..b3b6886 100644 +--- a/src/json/schema/sandbox/metadata.json ++++ b/src/json/schema/sandbox/metadata.json +@@ -34,9 +34,6 @@ + "networkReady": { + "type": "boolean" + }, +- "containers": { +- "type": "ArrayOfStrings" +- }, + "sandboxConfigJson": { + "type": "string" + } +-- +2.33.0 + diff --git a/0002-remove-unnecessary-strerror.patch b/0002-remove-unnecessary-strerror.patch deleted file mode 100644 index 77b7e88..0000000 --- a/0002-remove-unnecessary-strerror.patch +++ /dev/null @@ -1,97 +0,0 @@ -From 24579633671fca855dd1c66a4d7614ccf2e7e388 Mon Sep 17 00:00:00 2001 -From: haozi007 -Date: Tue, 5 Sep 2023 19:35:37 +0800 -Subject: [PATCH 2/8] remove unnecessary strerror - -Signed-off-by: haozi007 ---- - src/runtime/lcrcontainer_execute.c | 3 +-- - src/runtime/lcrcontainer_extend.c | 16 ++++++++-------- - 2 files changed, 9 insertions(+), 10 deletions(-) - -diff --git a/src/runtime/lcrcontainer_execute.c b/src/runtime/lcrcontainer_execute.c -index 864c097..f2bb944 100644 ---- a/src/runtime/lcrcontainer_execute.c -+++ b/src/runtime/lcrcontainer_execute.c -@@ -71,8 +71,7 @@ - do \ - { \ - SYSERROR("Error updating cgroup %s to %s", (item), (value)); \ -- lcr_set_error_message(LCR_ERR_RUNTIME, "Error updating cgroup %s to %s: %s", (item), (value), \ -- strerror(errno)); \ -+ lcr_set_error_message(LCR_ERR_RUNTIME, "Error updating cgroup %s to %s.", (item), (value)); \ - } while (0) - - static inline void add_array_elem(char **array, size_t total, size_t *pos, const char *elem) -diff --git a/src/runtime/lcrcontainer_extend.c b/src/runtime/lcrcontainer_extend.c -index 2f3ae9f..8b5a85c 100644 ---- a/src/runtime/lcrcontainer_extend.c -+++ b/src/runtime/lcrcontainer_extend.c -@@ -153,7 +153,7 @@ static int make_annotations(oci_runtime_spec *container, const struct lxc_contai - goto out; - } - if (lcr_util_ensure_path(&realpath, anno->values[fpos])) { -- ERROR("Invalid log path: %s, error: %s.", anno->values[fpos], strerror(errno)); -+ SYSERROR("Invalid log path: %s.", anno->values[fpos]); - goto out; - } - ret = 0; -@@ -378,7 +378,7 @@ static int lcr_spec_write_seccomp_line(FILE *fp, const char *seccomp) - - line[nret] = '\n'; - if (fwrite(line, 1, len ,fp) != len) { -- ERROR("Write file failed: %s", strerror(errno)); -+ SYSERROR("Write file failed"); - goto cleanup; - } - -@@ -743,8 +743,8 @@ static FILE *lcr_open_config_file(const char *bundle) - - fd = lcr_util_open(real_config, O_CREAT | O_TRUNC | O_CLOEXEC | O_WRONLY, CONFIG_FILE_MODE); - if (fd == -1) { -- ERROR("Create file %s failed, %s", real_config, strerror(errno)); -- lcr_set_error_message(LCR_ERR_RUNTIME, "Create file %s failed, %s", real_config, strerror(errno)); -+ SYSERROR("Create file %s failed", real_config); -+ lcr_set_error_message(LCR_ERR_RUNTIME, "Create file %s failed", real_config); - goto out; - } - -@@ -856,7 +856,7 @@ static int lcr_spec_write_config(FILE *fp, const struct lcr_list *lcr_conf) - line_encode[len] = '\n'; - - if (fwrite(line_encode, 1, len + 1, fp) != len + 1) { -- ERROR("Write file failed: %s", strerror(errno)); -+ SYSERROR("Write file failed"); - goto cleanup; - } - -@@ -908,7 +908,7 @@ char *lcr_get_bundle(const char *lcrpath, const char *name) - ERROR("Bundle %s does not exist", bundle); - break; - default: -- ERROR("Access %s failed: %s\n", bundle, strerror(errno)); -+ SYSERROR("Access %s failed", bundle); - } - goto cleanup; - } -@@ -995,7 +995,7 @@ static int lcr_write_file(const char *path, const char *data, size_t len) - } - - if (write(fd, data, len) == -1) { -- ERROR("write data to %s failed: %s", real_path, strerror(errno)); -+ SYSERROR("write data to %s failed", real_path); - goto out_free; - } - -@@ -1023,7 +1023,7 @@ static bool lcr_write_ocihooks(const char *path, const oci_runtime_spec_hooks *h - } - - if (lcr_write_file(path, json_hooks, strlen(json_hooks)) == -1) { -- ERROR("write json hooks failed: %s", strerror(errno)); -+ SYSERROR("write json hooks failed"); - goto out_free; - } - --- -2.34.1 - diff --git a/0003-add-function-to-transfer-of-ownership.patch b/0003-add-function-to-transfer-of-ownership.patch new file mode 100644 index 0000000..64ca6f2 --- /dev/null +++ b/0003-add-function-to-transfer-of-ownership.patch @@ -0,0 +1,112 @@ +From fd369e066c94ba19e4233dc36030441754220553 Mon Sep 17 00:00:00 2001 +From: haozi007 +Date: Wed, 8 Nov 2023 10:32:43 +0800 +Subject: [PATCH 3/6] add function to transfer of ownership + +Signed-off-by: haozi007 +--- + src/auto_cleanup.h | 18 ++++++++++++++++++ + tests/auto_cleanup_ut.cpp | 30 +++++++++++++++++++++++++++++- + 2 files changed, 47 insertions(+), 1 deletion(-) + +diff --git a/src/auto_cleanup.h b/src/auto_cleanup.h +index 2fa9f41..6d04372 100644 +--- a/src/auto_cleanup.h ++++ b/src/auto_cleanup.h +@@ -24,6 +24,10 @@ + #ifndef __ISULA_AUTO_CLEANUP_H + #define __ISULA_AUTO_CLEANUP_H + ++#ifndef _GNU_SOURCE ++#define _GNU_SOURCE 1 ++#endif ++ + #include + #include + #include +@@ -36,6 +40,20 @@ + extern "C" { + #endif + ++#define isula_transfer_fd(fd) \ ++ ({ \ ++ int __tmp_fd = (fd); \ ++ (fd) = -EBADF; \ ++ __tmp_fd; \ ++ }) ++ ++#define isula_transfer_ptr(ptr) \ ++ ({ \ ++ __typeof__(ptr) __tmp_ptr = (ptr); \ ++ (ptr) = NULL; \ ++ __tmp_ptr; \ ++ }) ++ + #define auto_cleanup_tag(name) __attribute__((__cleanup__(name##_cb))) + + // define all used auto tags +diff --git a/tests/auto_cleanup_ut.cpp b/tests/auto_cleanup_ut.cpp +index b167bcb..2600d56 100644 +--- a/tests/auto_cleanup_ut.cpp ++++ b/tests/auto_cleanup_ut.cpp +@@ -122,6 +122,17 @@ size_t do_auto_free() + #endif + } + ++int *do_auto_free_and_transfer() ++{ ++ __isula_auto_free int *test = nullptr; ++ ++ // use 1024 * 1024 to ensure memory allo from mmap ++ test = static_cast(malloc(sizeof(int))); ++ *test = 8; ++ ++ return isula_transfer_ptr(test); ++} ++ + TEST(autocleanup_testcase, test__isula_auto_free) + { + #if defined(__GLIBC__) && ((__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 33)) +@@ -145,6 +156,10 @@ TEST(autocleanup_testcase, test__isula_auto_free) + ASSERT_NE(used, after.hblks); + ASSERT_NE(used, before.hblks); + ASSERT_EQ(before.hblks, after.hblks); ++ ++ __isula_auto_free int *transfer_ptr = do_auto_free_and_transfer(); ++ ASSERT_NE(nullptr, transfer_ptr); ++ ASSERT_EQ(8, *transfer_ptr); + } + + int do_auto_file() +@@ -198,14 +213,27 @@ int do_auto_close() + return fd; + } + ++int do_auto_close_and_transfer() ++{ ++ __isula_auto_close int fd = -1; ++ ++ fd = open("/proc/self/cmdline", 0444); ++ ++ return isula_transfer_fd(fd); ++} ++ + TEST(autocleanup_testcase, test__isula_auto_close) + { + int openfd, ret; + size_t i; + struct stat sbuf = { 0 }; ++ __isula_auto_close int transfer_fd = -1; + +- openfd = do_auto_close(); ++ transfer_fd = do_auto_close_and_transfer(); ++ ret = fstat(transfer_fd, &sbuf); ++ ASSERT_EQ(0, ret); + ++ openfd = do_auto_close(); + ret = fstat(openfd, &sbuf); + ASSERT_NE(0, ret); + ASSERT_EQ(EBADF, errno); +-- +2.33.0 + diff --git a/0003-improve-code-of-function-in-log.patch b/0003-improve-code-of-function-in-log.patch deleted file mode 100644 index 66f5496..0000000 --- a/0003-improve-code-of-function-in-log.patch +++ /dev/null @@ -1,82 +0,0 @@ -From 19810333a97614619a1e2c945c253c964ef02d3b Mon Sep 17 00:00:00 2001 -From: haozi007 -Date: Wed, 6 Sep 2023 14:22:21 +0800 -Subject: [PATCH 3/8] improve code of function in log - -Signed-off-by: haozi007 ---- - src/runtime/lcrcontainer_execute.c | 4 ++-- - src/third_party/log.c | 6 +++--- - src/third_party/log.h | 4 ++-- - 3 files changed, 7 insertions(+), 7 deletions(-) - -diff --git a/src/runtime/lcrcontainer_execute.c b/src/runtime/lcrcontainer_execute.c -index f2bb944..e91ff27 100644 ---- a/src/runtime/lcrcontainer_execute.c -+++ b/src/runtime/lcrcontainer_execute.c -@@ -883,7 +883,7 @@ static void execute_lxc_attach(const char *name, const char *path, const struct - - execvp("lxc-attach", params); - -- COMMAND_ERROR("Failed to exec lxc-attach: %s", strerror(errno)); -+ CMD_SYSERROR("Failed to exec lxc-attach"); - free(params); - exit(EXIT_FAILURE); - } -@@ -1027,6 +1027,6 @@ void execute_lxc_start(const char *name, const char *path, const struct lcr_star - - execvp("lxc-start", params); - -- COMMAND_ERROR("Failed to exec lxc-start: %s.", strerror(errno)); -+ CMD_SYSERROR("Failed to exec lxc-start."); - exit(EXIT_FAILURE); - } -diff --git a/src/third_party/log.c b/src/third_party/log.c -index 5ba638b..5097eb8 100644 ---- a/src/third_party/log.c -+++ b/src/third_party/log.c -@@ -309,18 +309,18 @@ static int open_fifo(const char *fifo_path) - - nret = mknod(fifo_path, S_IFIFO | S_IRUSR | S_IWUSR, (dev_t)0); - if (nret && errno != EEXIST) { -- COMMAND_ERROR("Mknod failed: %s", strerror(errno)); -+ CMD_SYSERROR("Mknod failed"); - return nret; - } - - fifo_fd = lcr_util_open(fifo_path, O_RDWR | O_NONBLOCK, 0); - if (fifo_fd == -1) { -- COMMAND_ERROR("Open fifo %s failed: %s", fifo_path, strerror(errno)); -+ CMD_SYSERROR("Open fifo %s failed", fifo_path); - return -1; - } - - if (fcntl(fifo_fd, F_SETPIPE_SZ, LOG_FIFO_SIZE) == -1) { -- COMMAND_ERROR("Set fifo buffer size failed: %s", strerror(errno)); -+ CMD_SYSERROR("Set fifo buffer size failed"); - close(fifo_fd); - return -1; - } -diff --git a/src/third_party/log.h b/src/third_party/log.h -index 3462b17..d0e5fa8 100644 ---- a/src/third_party/log.h -+++ b/src/third_party/log.h -@@ -417,13 +417,13 @@ lxc_log_priority_define(&g_lxc_log_category_lxc, FATAL); - #define CMD_SYSERROR(format, ...) \ - do { \ - lxc_log_strerror_r; \ -- fprintf(stderr, "%s - " format, ptr, ##__VA_ARGS__); \ -+ fprintf(stderr, "%s - " format "\n", ptr, ##__VA_ARGS__); \ - } while (0) - - #define CMD_SYSINFO(format, ...) \ - do { \ - lxc_log_strerror_r; \ -- printf("%s - " format, ptr, ##__VA_ARGS__); \ -+ printf("%s - " format "\n", ptr, ##__VA_ARGS__); \ - } while (0) - - #define COMMAND_ERROR(fmt, args...) \ --- -2.34.1 - diff --git a/0004-283-network-support-version-opt-result.patch b/0004-283-network-support-version-opt-result.patch new file mode 100644 index 0000000..e0dd5da --- /dev/null +++ b/0004-283-network-support-version-opt-result.patch @@ -0,0 +1,31 @@ +From 73ed2ec4771fd79912f1683ce094fc6d1becbf58 Mon Sep 17 00:00:00 2001 +From: liuxu +Date: Fri, 10 Nov 2023 09:20:41 +0000 +Subject: [PATCH 4/6] !283 network:support version opt result * network:support + version opt result + +--- + src/json/schema/cni/{version.json => version_info.json} | 3 +++ + 1 file changed, 3 insertions(+) + rename src/json/schema/cni/{version.json => version_info.json} (72%) + +diff --git a/src/json/schema/cni/version.json b/src/json/schema/cni/version_info.json +similarity index 72% +rename from src/json/schema/cni/version.json +rename to src/json/schema/cni/version_info.json +index 3831508..9f93d33 100644 +--- a/src/json/schema/cni/version.json ++++ b/src/json/schema/cni/version_info.json +@@ -4,6 +4,9 @@ + "properties": { + "cniVersion": { + "type": "string" ++ }, ++ "supportedVersions": { ++ "$ref": "array_of_strings.json" + } + }, + "required": [ +-- +2.33.0 + diff --git a/0004-support-visibility-of-compiler.patch b/0004-support-visibility-of-compiler.patch deleted file mode 100644 index b1af4ee..0000000 --- a/0004-support-visibility-of-compiler.patch +++ /dev/null @@ -1,338 +0,0 @@ -From ed36936f30525704f71e3b7444c1d25ffe50ab2f Mon Sep 17 00:00:00 2001 -From: haozi007 -Date: Tue, 12 Sep 2023 10:27:05 +0800 -Subject: [PATCH 4/8] support visibility of compiler - -use visibility for liblcr - -Signed-off-by: haozi007 ---- - CMakeLists.txt | 4 +-- - src/CMakeLists.txt | 1 + - src/runtime/lcrcontainer.h | 68 ++++++++++++++++++++------------------ - src/utils/utils_compile.h | 50 ++++++++++++++++++++++++++++ - 4 files changed, 88 insertions(+), 35 deletions(-) - create mode 100644 src/utils/utils_compile.h - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index a51ac7d..e00dc96 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -117,8 +117,8 @@ install(FILES ${CMAKE_BINARY_DIR}/conf/lcr.pc - DESTINATION ${LIB_INSTALL_DIR_DEFAULT}/pkgconfig PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ GROUP_WRITE WORLD_READ WORLD_EXECUTE) - install(FILES ${CMAKE_BINARY_DIR}/conf/libisula.pc - DESTINATION ${LIB_INSTALL_DIR_DEFAULT}/pkgconfig PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ GROUP_WRITE WORLD_READ WORLD_EXECUTE) --install(FILES src/runtime/lcrcontainer.h -- DESTINATION include/lcr) -+install(FILES src/runtime/lcrcontainer.h DESTINATION include/lcr) -+install(FILES src/utils/utils_compile.h DESTINATION include/lcr) - - install(FILES src/third_party/log.h DESTINATION include/isula_libutils) - install(FILES src/third_party/go_crc64.h DESTINATION include/isula_libutils) -diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt -index 2bf468f..c423dd7 100644 ---- a/src/CMakeLists.txt -+++ b/src/CMakeLists.txt -@@ -124,6 +124,7 @@ target_include_directories(liblcr - # set liblcr compile flags - set_target_properties(liblcr PROPERTIES PREFIX "") - target_link_libraries(liblcr ${check_libs} isula_libutils) -+target_compile_options(liblcr PRIVATE -fvisibility=hidden) - - if (CMAKE_TOOLCHAIN_FILE) - target_link_directories(liblcr PUBLIC ${CMAKE_LIBRARY_PATH}) -diff --git a/src/runtime/lcrcontainer.h b/src/runtime/lcrcontainer.h -index edfc869..6add8c4 100644 ---- a/src/runtime/lcrcontainer.h -+++ b/src/runtime/lcrcontainer.h -@@ -32,13 +32,15 @@ - #include - #include - -+#include "utils_compile.h" -+ - #ifdef __cplusplus - extern "C" { - #endif - - /* define console log config */ - --struct lcr_console_config { -+__EXPORT__ struct lcr_console_config { - char *log_path; - unsigned int log_rotate; - char *log_file_size; -@@ -47,7 +49,7 @@ struct lcr_console_config { - /* - * Store lcr container info - */ --struct lcr_container_info { -+__EXPORT__ struct lcr_container_info { - /* Name of container. */ - char *name; - /* State of container. */ -@@ -62,7 +64,7 @@ struct lcr_container_info { - bool running; - }; - --struct blkio_stats { -+__EXPORT__ struct blkio_stats { - uint64_t read; - uint64_t write; - uint64_t total; -@@ -71,7 +73,7 @@ struct blkio_stats { - /* - * Store lcr container state - */ --struct lcr_container_state { -+__EXPORT__ struct lcr_container_state { - /* Name of container */ - char *name; - /* State of container */ -@@ -108,14 +110,14 @@ typedef enum { - lcr_msg_exit_code, - } lcr_msg_type_t; - --struct lcr_msg { -+__EXPORT__ struct lcr_msg { - lcr_msg_type_t type; - char name[NAME_MAX + 1]; - int value; - int pid; - }; - --struct lcr_cgroup_resources { -+__EXPORT__ struct lcr_cgroup_resources { - uint64_t blkio_weight; - uint64_t cpu_shares; - uint64_t cpu_period; -@@ -134,23 +136,23 @@ struct lcr_cgroup_resources { - * Get one container info for a given lcrpath. - * return struct of container info, or NULL on error. - */ --struct lcr_container_info *lcr_container_info_get(const char *name, const char *lcrpath); -+__EXPORT__ struct lcr_container_info *lcr_container_info_get(const char *name, const char *lcrpath); - - /* - * Free lcr_container_info returned lcr_container_info_get - */ --void lcr_container_info_free(struct lcr_container_info *info); -+__EXPORT__ void lcr_container_info_free(struct lcr_container_info *info); - - /* - * Get a complete list of all containers for a given lcrpath. - * return Number of containers, or -1 on error. - */ --int lcr_list_all_containers(const char *lcrpath, struct lcr_container_info **info_arr); -+__EXPORT__ int lcr_list_all_containers(const char *lcrpath, struct lcr_container_info **info_arr); - - /* - * Free lcr_container_info array returned by lcr_list_{active,all}_containers - */ --void lcr_containers_info_free(struct lcr_container_info **info_arr, size_t size); -+__EXPORT__ void lcr_containers_info_free(struct lcr_container_info **info_arr, size_t size); - - /* - * Create a container -@@ -158,7 +160,7 @@ void lcr_containers_info_free(struct lcr_container_info **info_arr, size_t size) - * param lcrpath : container path - * param oci_json_data : json string of oci config data - */ --bool lcr_create_from_ocidata(const char *name, const char *lcrpath, const void *oci_json_data); -+__EXPORT__ bool lcr_create_from_ocidata(const char *name, const char *lcrpath, const void *oci_json_data); - - /* - * Create a container -@@ -166,7 +168,7 @@ bool lcr_create_from_ocidata(const char *name, const char *lcrpath, const void * - * param lcrpath : container path - * param oci_config : pointer of struct oci config - */ --bool lcr_create(const char *name, const char *lcrpath, void *oci_config); -+__EXPORT__ bool lcr_create(const char *name, const char *lcrpath, void *oci_config); - - /* - * Start a container -@@ -188,7 +190,7 @@ bool lcr_create(const char *name, const char *lcrpath, void *oci_config); - * gid : user in which group - * additional_gids : Add additional groups to join - */ --struct lcr_start_request { -+__EXPORT__ struct lcr_start_request { - const char *name; - const char *lcrpath; - -@@ -204,7 +206,7 @@ struct lcr_start_request { - const char *exit_fifo; - bool image_type_oci; - }; --bool lcr_start(const struct lcr_start_request *request); -+__EXPORT__ bool lcr_start(const struct lcr_start_request *request); - - /* - * Stop a container -@@ -212,7 +214,7 @@ bool lcr_start(const struct lcr_start_request *request); - * param lcrpath : container path, set to NULL if you want use default lcrpath. - * param signal : signal to send to the container. - */ --bool lcr_kill(const char *name, const char *lcrpath, uint32_t signal); -+__EXPORT__ bool lcr_kill(const char *name, const char *lcrpath, uint32_t signal); - - /* - * Delete a container -@@ -220,9 +222,9 @@ bool lcr_kill(const char *name, const char *lcrpath, uint32_t signal); - * param lcrpath : container path, set to NULL if you want use default lcrpath. - * param force : force to delete container - */ --bool lcr_delete(const char *name, const char *lcrpath); -+__EXPORT__ bool lcr_delete(const char *name, const char *lcrpath); - --bool lcr_clean(const char *name, const char *lcrpath, const char *logpath, const char *loglevel, pid_t pid); -+__EXPORT__ bool lcr_clean(const char *name, const char *lcrpath, const char *logpath, const char *loglevel, pid_t pid); - - /* - * Get state of the container -@@ -230,26 +232,26 @@ bool lcr_clean(const char *name, const char *lcrpath, const char *logpath, const - * param lcrpath : container path, set to NULL if you want use default lcrpath. - * param lcs : returned contaiener state - */ --bool lcr_state(const char *name, const char *lcrpath, struct lcr_container_state *lcs); -+__EXPORT__ bool lcr_state(const char *name, const char *lcrpath, struct lcr_container_state *lcs); - - /* - * Pause a container - * param name : container name, required. - * param lcrpath : container path, set to NULL if you want use default lcrpath. - */ --bool lcr_pause(const char *name, const char *lcrpath); -+__EXPORT__ bool lcr_pause(const char *name, const char *lcrpath); - - /* - * Resume a container - * param name : container name, required. - * param lcrpath : container path, set to NULL if you want use default lcrpath. - */ --bool lcr_resume(const char *name, const char *lcrpath); -+__EXPORT__ bool lcr_resume(const char *name, const char *lcrpath); - - /* - * Free lcr_container_state returned by lcr_state - */ --void lcr_container_state_free(struct lcr_container_state *lcs); -+__EXPORT__ void lcr_container_state_free(struct lcr_container_state *lcs); - - /* - * console function -@@ -259,7 +261,7 @@ void lcr_container_state_free(struct lcr_container_state *lcs); - * param out_fifo : fifo names of output FIFO - * Returns false if the console FIFOs add failed, true if success - */ --bool lcr_console(const char *name, const char *lcrpath, const char *in_fifo, const char *out_fifo, -+__EXPORT__ bool lcr_console(const char *name, const char *lcrpath, const char *in_fifo, const char *out_fifo, - const char *err_fifo); - - /* -@@ -268,14 +270,14 @@ bool lcr_console(const char *name, const char *lcrpath, const char *in_fifo, con - * param lcrpath : container path, set to NULL if you want use default lcrpath. - * param config : use to store container console configs, cannot be NULL - */ --bool lcr_get_console_config(const char *name, const char *lcrpath, struct lcr_console_config *config); -+__EXPORT__ bool lcr_get_console_config(const char *name, const char *lcrpath, struct lcr_console_config *config); - --void lcr_free_console_config(struct lcr_console_config *config); -+__EXPORT__ void lcr_free_console_config(struct lcr_console_config *config); - --int lcr_log_init(const char *name, const char *file, const char *priority, -+__EXPORT__ int lcr_log_init(const char *name, const char *file, const char *priority, - const char *prefix, int quiet, const char *lcrpath); - --struct lcr_exec_request { -+__EXPORT__ struct lcr_exec_request { - const char *name; - const char *lcrpath; - -@@ -303,18 +305,18 @@ struct lcr_exec_request { - /* - * Execute process inside a container - */ --bool lcr_exec(const struct lcr_exec_request *request, int *exit_code); -+__EXPORT__ bool lcr_exec(const struct lcr_exec_request *request, int *exit_code); - --bool lcr_update(const char *name, const char *lcrpath, const struct lcr_cgroup_resources *cr); -+__EXPORT__ bool lcr_update(const char *name, const char *lcrpath, const struct lcr_cgroup_resources *cr); - --const char *lcr_get_errmsg(); -+__EXPORT__ const char *lcr_get_errmsg(); - --void lcr_free_errmsg(); -+__EXPORT__ void lcr_free_errmsg(); - --bool lcr_get_container_pids(const char *name, const char *lcrpath, pid_t **pids, size_t *pids_len); -+__EXPORT__ bool lcr_get_container_pids(const char *name, const char *lcrpath, pid_t **pids, size_t *pids_len); - --bool lcr_resize(const char *name, const char *lcrpath, unsigned int height, unsigned int width); --bool lcr_exec_resize(const char *name, const char *lcrpath, const char *suffix, unsigned int height, -+__EXPORT__ bool lcr_resize(const char *name, const char *lcrpath, unsigned int height, unsigned int width); -+__EXPORT__ bool lcr_exec_resize(const char *name, const char *lcrpath, const char *suffix, unsigned int height, - unsigned int width); - #ifdef __cplusplus - } -diff --git a/src/utils/utils_compile.h b/src/utils/utils_compile.h -new file mode 100644 -index 0000000..3bdb24e ---- /dev/null -+++ b/src/utils/utils_compile.h -@@ -0,0 +1,50 @@ -+/****************************************************************************** -+ * isula: compile utils -+ * -+ * Copyright (c) Huawei Technologies Co., Ltd. 2023. All rights reserved. -+ * -+ * Authors: -+ * Haozi007 -+ * -+ * This library is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2.1 of the License, or (at your option) any later version. -+ * -+ * This library is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with this library; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -+ ********************************************************************************/ -+#ifndef _ISULA_UTILS_UTILS_COMPILE_H -+#define _ISULA_UTILS_UTILS_COMPILE_H -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+#if defined(__GNUC__) && (__GNUC__ >= 4) -+#ifndef __HIDDEN__ -+#define __HIDDEN__ __attribute__((visibility("hidden"))) -+#endif -+ -+#ifndef __EXPORT__ -+#define __EXPORT__ __attribute__((visibility("default"))) -+#endif -+ -+#else -+#define __HIDDEN__ -+#ifndef __EXPORT__ -+#endif -+ -+#endif -+ -+#ifdef __cplusplus -+} -+#endif -+ -+#endif /* _ISULA_UTILS_UTILS_COMPILE_H */ -\ No newline at end of file --- -2.34.1 - diff --git a/0005-add-attach-fd-for-process-state-and-add-needed-util-.patch b/0005-add-attach-fd-for-process-state-and-add-needed-util-.patch new file mode 100644 index 0000000..35daa82 --- /dev/null +++ b/0005-add-attach-fd-for-process-state-and-add-needed-util-.patch @@ -0,0 +1,218 @@ +From d8a706eb0e0ba937d8b99dadbbad2771469eef97 Mon Sep 17 00:00:00 2001 +From: zhongtao +Date: Wed, 8 Nov 2023 15:40:01 +0800 +Subject: [PATCH 5/6] add attach fd for process state and add needed util + function + +Signed-off-by: zhongtao +--- + .../schema/shim/client/process-state.json | 3 ++ + src/utils/utils.c | 48 +++++++++++++++++++ + src/utils/utils.h | 2 + + src/utils/utils_file.c | 41 ++++++++++++++++ + src/utils/utils_file.h | 4 ++ + src/utils/utils_string.c | 17 +++++++ + src/utils/utils_string.h | 2 + + 7 files changed, 117 insertions(+) + +diff --git a/src/json/schema/shim/client/process-state.json b/src/json/schema/shim/client/process-state.json +index f07d14f..2383b43 100644 +--- a/src/json/schema/shim/client/process-state.json ++++ b/src/json/schema/shim/client/process-state.json +@@ -151,6 +151,9 @@ + "exit_fifo": { + "type": "string" + }, ++ "attach_socket": { ++ "type": "string" ++ }, + "control_fifo": { + "type": "string" + }, +diff --git a/src/utils/utils.c b/src/utils/utils.c +index cd0934f..fabdf71 100644 +--- a/src/utils/utils.c ++++ b/src/utils/utils.c +@@ -25,6 +25,9 @@ + #include + #include + #include ++#include ++ ++#include "log.h" + + int isula_wait_pid_ret_status(pid_t pid) + { +@@ -81,4 +84,49 @@ void isula_usleep_nointerupt(unsigned long usec) + ret = nanosleep(&request, &remain); + request = remain; + } while (ret == -1 && errno == EINTR); ++} ++ ++/* ++ * do not support greedy matching, like: '(:?xx)' ++ * return value: ++ * -1 failed ++ * 0 match ++ * 1 no match ++ */ ++int isula_reg_match(const char *patten, const char *str) ++{ ++#define EVENT_ARGS_MAX 255 ++ int nret = 0; ++ char buffer[EVENT_ARGS_MAX] = { 0 }; ++ regex_t reg; ++ ++ if (patten == NULL || str == NULL) { ++ ERROR("invalid NULL param"); ++ return -1; ++ } ++ ++ nret = regcomp(®, patten, REG_EXTENDED | REG_NOSUB); ++ if (nret != 0) { ++ regerror(nret, ®, buffer, EVENT_ARGS_MAX); ++ ERROR("regcomp %s failed: %s", patten, buffer); ++ return -1; ++ } ++ ++ nret = regexec(®, str, 0, NULL, 0); ++ if (nret == 0) { ++ nret = 0; ++ goto free_out; ++ } else if (nret == REG_NOMATCH) { ++ nret = 1; ++ goto free_out; ++ } else { ++ nret = -1; ++ ERROR("reg match failed"); ++ goto free_out; ++ } ++ ++free_out: ++ regfree(®); ++ ++ return nret; + } +\ No newline at end of file +diff --git a/src/utils/utils.h b/src/utils/utils.h +index dabaee2..b4ab9d0 100644 +--- a/src/utils/utils.h ++++ b/src/utils/utils.h +@@ -46,6 +46,8 @@ int isula_wait_pid(pid_t pid); + + void isula_usleep_nointerupt(unsigned long usec); + ++int isula_reg_match(const char *patten, const char *str); ++ + #ifdef __cplusplus + } + #endif +diff --git a/src/utils/utils_file.c b/src/utils/utils_file.c +index fb55cf8..067715c 100644 +--- a/src/utils/utils_file.c ++++ b/src/utils/utils_file.c +@@ -656,4 +656,45 @@ int isula_path_remove(const char *path) + errno = saved_errno; + } + return -1; ++} ++ ++int isula_set_non_block(const int fd) ++{ ++ int flag = -1; ++ int ret = -1; ++ ++ if (fd < 0) { ++ ERROR("Invalid fd: %d.", fd); ++ return -1; ++ } ++ ++ flag = fcntl(fd, F_GETFL, 0); ++ if (flag < 0) { ++ SYSERROR("Failed to get flags for fd: %d", fd); ++ return -1; ++ } ++ ++ ret = fcntl(fd, F_SETFL, flag | O_NONBLOCK); ++ if (ret != 0) { ++ SYSERROR("Failed to set flags for fd: %d", fd); ++ return -1; ++ } ++ ++ return 0; ++} ++ ++int isula_validate_absolute_path(const char *path) ++{ ++#define PATTEN_STR "^(/[^/ ]*)+/?$" ++ int nret = 0; ++ ++ if (path == NULL) { ++ return -1; ++ } ++ ++ if (isula_reg_match(PATTEN_STR, path) != 0) { ++ nret = -1; ++ } ++ ++ return nret; + } +\ No newline at end of file +diff --git a/src/utils/utils_file.h b/src/utils/utils_file.h +index 83d0a5d..23c4700 100644 +--- a/src/utils/utils_file.h ++++ b/src/utils/utils_file.h +@@ -67,6 +67,10 @@ int isula_file_atomic_write(const char *filepath, const char *content); + + int isula_close_inherited_fds(bool closeall, int fd_to_ignore); + ++int isula_set_non_block(const int fd); ++ ++int isula_validate_absolute_path(const char *path); ++ + #ifdef __cplusplus + } + #endif +diff --git a/src/utils/utils_string.c b/src/utils/utils_string.c +index 7b0cbef..863bebe 100644 +--- a/src/utils/utils_string.c ++++ b/src/utils/utils_string.c +@@ -375,4 +375,21 @@ isula_string_array *isula_string_array_new(size_t req_init_cap) + ptr->append_arr = isula_string_array_append_array; + + return ptr; ++} ++ ++bool isula_has_prefix(const char *str, const char *prefix) ++{ ++ if (str == NULL || prefix == NULL) { ++ return false; ++ } ++ ++ if (strlen(str) < strlen(prefix)) { ++ return false; ++ } ++ ++ if (strncmp(str, prefix, strlen(prefix)) != 0) { ++ return false; ++ } ++ ++ return true; + } +\ No newline at end of file +diff --git a/src/utils/utils_string.h b/src/utils/utils_string.h +index f403fd9..5a25531 100644 +--- a/src/utils/utils_string.h ++++ b/src/utils/utils_string.h +@@ -102,6 +102,8 @@ void isula_string_array_free(isula_string_array *ptr); + + isula_string_array *isula_string_split_to_multi(const char *src_str, char delim); + ++bool isula_has_prefix(const char *str, const char *prefix); ++ + #ifdef __cplusplus + } + #endif +-- +2.33.0 + diff --git a/0005-refactor-util-buffer-and-add-ut.patch b/0005-refactor-util-buffer-and-add-ut.patch deleted file mode 100644 index 5cb7b55..0000000 --- a/0005-refactor-util-buffer-and-add-ut.patch +++ /dev/null @@ -1,1098 +0,0 @@ -From 9eff61689ae66c2531750d1bf1c8e551f6b576a9 Mon Sep 17 00:00:00 2001 -From: haozi007 -Date: Wed, 13 Sep 2023 11:05:19 +0800 -Subject: [PATCH 5/8] refactor util buffer and add ut - -Signed-off-by: haozi007 ---- - CMakeLists.txt | 3 +- - src/CMakeLists.txt | 25 ++- - src/buffer.h | 39 ----- - src/constants.h | 8 + - src/runtime/conf.c | 32 ++-- - src/runtime/conf.h | 8 + - src/runtime/lcr_list.h | 7 + - src/{buffer.c => utils/utils_buffer.c} | 189 ++++++++++++---------- - src/utils/utils_buffer.h | 93 +++++++++++ - tests/CMakeLists.txt | 35 +++- - tests/auto_cleanup_ut.cpp | 19 +++ - tests/utils_buffer_ut.cpp | 213 +++++++++++++++++++++++++ - 12 files changed, 516 insertions(+), 155 deletions(-) - delete mode 100644 src/buffer.h - rename src/{buffer.c => utils/utils_buffer.c} (60%) - create mode 100644 src/utils/utils_buffer.h - create mode 100644 tests/utils_buffer_ut.cpp - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index e00dc96..2bbb829 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -128,7 +128,8 @@ install(FILES src/json/parse_common.h DESTINATION include/isula_libutils) - install(DIRECTORY ${CMAKE_BINARY_DIR}/json/ DESTINATION include/isula_libutils - FILES_MATCHING PATTERN "*.h") - install(FILES src/auto_cleanup.h DESTINATION include/isula_libutils) --# donot export utils now -+# export utils here -+install(FILES src/utils/utils_buffer.h DESTINATION include/isula_libutils) - - # uninstall - if(NOT TARGET uninstall) -diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt -index c423dd7..cb076e8 100644 ---- a/src/CMakeLists.txt -+++ b/src/CMakeLists.txt -@@ -92,16 +92,29 @@ target_include_directories(isula_libutils - - target_link_libraries(isula_libutils ${check_isula_utils_libs}) - --add_library(isula_libutils_s -+add_library(isulad_shim_libutils - STATIC -- ${isula_libutils_srcs} -+ ${topsrcs} -+ ${THIRD_PARTY_SRCS} -+ ${commonjsonsrcs} -+ ${topjsonsrcs} -+ ${UTILS_SRCS} -+ ${CMAKE_BINARY_DIR}/json/logger_json_file.c -+ ${CMAKE_BINARY_DIR}/json/shim_client_process_state.c -+ ${CMAKE_BINARY_DIR}/json/shim_client_runtime_stats.c -+ ${CMAKE_BINARY_DIR}/json/shim_client_cgroup_resources.c -+ ${CMAKE_BINARY_DIR}/json/json_common.c -+ ${CMAKE_BINARY_DIR}/json/defs.c -+ ${CMAKE_BINARY_DIR}/json/oci_runtime_config_linux.c -+ ${CMAKE_BINARY_DIR}/json/oci_runtime_pspec.c -+ ${CMAKE_BINARY_DIR}/json/oci_runtime_spec.c -+ ${CMAKE_BINARY_DIR}/json/oci_runtime_state.c - ) - --target_include_directories(isula_libutils_s -+target_include_directories(isulad_shim_libutils - PUBLIC ${isula_libutils_incs} - ) --target_link_libraries(isula_libutils_s ${check_isula_utils_libs}) --set_target_properties(isula_libutils_s PROPERTIES OUTPUT_NAME isula_libutils) -+target_link_libraries(isulad_shim_libutils ${LIBYAJL_LIBRARY}) - - if (ENABLE_LIBLCR) - # set liblcr library -@@ -149,5 +162,5 @@ endif() - - install(TARGETS isula_libutils - LIBRARY DESTINATION ${LIB_INSTALL_DIR_DEFAULT} PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) --install(TARGETS isula_libutils_s -+install(TARGETS isulad_shim_libutils - ARCHIVE DESTINATION ${LIB_INSTALL_DIR_DEFAULT} PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) -diff --git a/src/buffer.h b/src/buffer.h -deleted file mode 100644 -index b7777ab..0000000 ---- a/src/buffer.h -+++ /dev/null -@@ -1,39 +0,0 @@ --/****************************************************************************** -- * lcr: utils library for iSula -- * -- * Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved. -- * -- * Authors: -- * Haozi007 -- * -- * This library is free software; you can redistribute it and/or -- * modify it under the terms of the GNU Lesser General Public -- * License as published by the Free Software Foundation; either -- * version 2.1 of the License, or (at your option) any later version. -- * -- * This library is distributed in the hope that it will be useful, -- * but WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- * Lesser General Public License for more details. -- * -- * You should have received a copy of the GNU Lesser General Public -- * License along with this library; if not, write to the Free Software -- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -- ********************************************************************************/ -- --#ifndef _ISULA_UTILS_BUFFER_H --#define _ISULA_UTILS_BUFFER_H -- --#include -- --typedef struct Buffer { -- char *contents; -- size_t bytes_used; -- size_t total_size; --} Buffer; -- --Buffer *buffer_alloc(size_t initial_size); --void buffer_free(Buffer *buf); --int buffer_nappendf(Buffer *buf, size_t length, const char *format, ...); --char *buffer_to_s(const Buffer *buf); --#endif -diff --git a/src/constants.h b/src/constants.h -index 85a3196..b62026d 100644 ---- a/src/constants.h -+++ b/src/constants.h -@@ -24,6 +24,10 @@ - #ifndef _ISULA_UTILS_CONSTANTS_H - #define _ISULA_UTILS_CONSTANTS_H - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ - /* mode of file and directory */ - - #define DEFAULT_SECURE_FILE_MODE 0640 -@@ -53,4 +57,8 @@ - /* buffer constants defined here */ - #define ISULA_PAGE_BUFSIZE 4096 - -+#ifdef __cplusplus -+} -+#endif -+ - #endif -diff --git a/src/runtime/conf.c b/src/runtime/conf.c -index 4554599..d505507 100644 ---- a/src/runtime/conf.c -+++ b/src/runtime/conf.c -@@ -36,7 +36,7 @@ - #include "utils.h" - #include "log.h" - --#include "buffer.h" -+#include "utils_buffer.h" - #include "lcr_list.h" - #include "constants.h" - -@@ -2665,7 +2665,7 @@ static bool is_action_allow(const char *value) - - #define DEFAULT_ACTION_OFFSET 12 - /* seccomp append head info */ --static int seccomp_append_head_info(const char *action, Buffer *buffer) -+static int seccomp_append_head_info(const char *action, isula_buffer *buffer) - { - int ret = 0; - char *default_action = NULL; -@@ -2681,9 +2681,9 @@ static int seccomp_append_head_info(const char *action, Buffer *buffer) - } - - if (is_action_allow(default_action)) { -- ret = buffer_nappendf(buffer, strlen(default_action) + DEFAULT_ACTION_OFFSET, "blacklist %s\n", default_action); -+ ret = buffer->nappend(buffer, strlen(default_action) + DEFAULT_ACTION_OFFSET, "blacklist %s\n", default_action); - } else { -- ret = buffer_nappendf(buffer, strlen(default_action) + DEFAULT_ACTION_OFFSET, "whitelist %s\n", default_action); -+ ret = buffer->nappend(buffer, strlen(default_action) + DEFAULT_ACTION_OFFSET, "whitelist %s\n", default_action); - } - if (ret != 0) { - ERROR("Failed to append seccomp config head info\n"); -@@ -2773,7 +2773,7 @@ static char *seccomp_trans_arch(const char *arch) - } - - /* seccomp append arch */ --static int seccomp_append_arch(char *arch, Buffer *buffer) -+static int seccomp_append_arch(char *arch, isula_buffer *buffer) - { - int ret = 0; - char *trans_arch = NULL; -@@ -2788,7 +2788,7 @@ static int seccomp_append_arch(char *arch, Buffer *buffer) - return -1; - } - -- if (buffer_nappendf(buffer, strlen(trans_arch) + 2, "%s\n", trans_arch)) { -+ if (buffer->nappend(buffer, strlen(trans_arch) + 2, "%s\n", trans_arch)) { - ERROR("Failed to append seccomp config head info\n"); - ret = -1; - } -@@ -2798,7 +2798,7 @@ static int seccomp_append_arch(char *arch, Buffer *buffer) - } - - /* seccomp append rule */ --static int seccomp_append_rule(const defs_syscall *syscall, size_t i, Buffer *buffer, char *action) -+static int seccomp_append_rule(const defs_syscall *syscall, size_t i, isula_buffer *buffer, char *action) - { - int ret = 0; - size_t j = 0; -@@ -2808,7 +2808,7 @@ static int seccomp_append_rule(const defs_syscall *syscall, size_t i, Buffer *bu - ret = -1; - goto out; - } -- if (buffer_nappendf(buffer, strlen(syscall->names[i]) + strlen(action) + 2, "%s %s", syscall->names[i], action)) { -+ if (buffer->nappend(buffer, strlen(syscall->names[i]) + strlen(action) + 2, "%s %s", syscall->names[i], action)) { - ERROR("Failed to append syscall name and action\n"); - ret = -1; - goto out; -@@ -2820,7 +2820,7 @@ static int seccomp_append_rule(const defs_syscall *syscall, size_t i, Buffer *bu - ret = -1; - goto out; - } -- if (buffer_nappendf(buffer, 20 * 3 + strlen(syscall->args[j]->op), " [%u,%llu,%s,%llu]", -+ if (buffer->nappend(buffer, 20 * 3 + strlen(syscall->args[j]->op), " [%u,%llu,%s,%llu]", - syscall->args[j]->index, syscall->args[j]->value, syscall->args[j]->op, - syscall->args[j]->value_two)) { - ERROR("Failed to append syscall rules\n"); -@@ -2829,7 +2829,7 @@ static int seccomp_append_rule(const defs_syscall *syscall, size_t i, Buffer *bu - } - } - -- if (buffer_nappendf(buffer, 2, "\n")) { -+ if (buffer->append(buffer, "\n")) { - ERROR("Failed to append newline\n"); - ret = -1; - goto out; -@@ -2839,7 +2839,7 @@ out: - } - - /* seccomp append rules */ --static int seccomp_append_rules(const defs_syscall *syscall, Buffer *buffer) -+static int seccomp_append_rules(const defs_syscall *syscall, isula_buffer *buffer) - { - int ret = 0; - size_t i = 0; -@@ -2905,7 +2905,7 @@ out_free: - return NULL; - } - --static int append_seccomp_with_archs(const oci_runtime_config_linux_seccomp *seccomp, Buffer *buffer) -+static int append_seccomp_with_archs(const oci_runtime_config_linux_seccomp *seccomp, isula_buffer *buffer) - { - int ret = 0; - size_t i = 0; -@@ -2963,14 +2963,14 @@ static int trans_oci_seccomp(const oci_runtime_config_linux_seccomp *seccomp, ch - size_t j = 0; - size_t init_size = 4 * SIZE_KB; - -- Buffer *buffer = buffer_alloc(init_size); -+ isula_buffer *buffer = isula_buffer_alloc(init_size); - if (buffer == NULL) { - ERROR("Failed to malloc output_buffer\n"); - return -1; - } - - /* config version */ -- if (buffer_nappendf(buffer, 3, "2\n")) { -+ if (buffer->append(buffer, "2\n")) { - ERROR("Failed to append seccomp config version\n"); - ret = -1; - goto out_free; -@@ -2997,14 +2997,14 @@ static int trans_oci_seccomp(const oci_runtime_config_linux_seccomp *seccomp, ch - } - } - } -- *seccomp_conf = buffer_to_s(buffer); -+ *seccomp_conf = buffer->to_str(buffer); - if (*seccomp_conf == NULL) { - ret = -1; - goto out_free; - } - - out_free: -- buffer_free(buffer); -+ isula_buffer_free(buffer); - return ret; - } - -diff --git a/src/runtime/conf.h b/src/runtime/conf.h -index 6dfef79..38c1a3e 100644 ---- a/src/runtime/conf.h -+++ b/src/runtime/conf.h -@@ -26,6 +26,10 @@ - - #include "oci_runtime_spec.h" - -+#ifdef __cplusplus -+extern "C" { -+#endif -+ - #define INVALID_INT 0 - - /* -@@ -118,4 +122,8 @@ struct lcr_list *get_needed_lxc_conf(); - - bool is_system_container(const oci_runtime_spec *container); - -+#ifdef __cplusplus -+} -+#endif -+ - #endif /*__LCR_CONF_H*/ -diff --git a/src/runtime/lcr_list.h b/src/runtime/lcr_list.h -index bdf1f1b..86a13e0 100644 ---- a/src/runtime/lcr_list.h -+++ b/src/runtime/lcr_list.h -@@ -24,6 +24,9 @@ - #ifndef __LCR_LIST_H - #define __LCR_LIST_H - -+#ifdef __cplusplus -+extern "C" { -+#endif - - struct lcr_list { - void *elem; -@@ -144,4 +147,8 @@ static inline size_t lcr_list_len(struct lcr_list *list) - return i; - } - -+#ifdef __cplusplus -+} -+#endif -+ - #endif -diff --git a/src/buffer.c b/src/utils/utils_buffer.c -similarity index 60% -rename from src/buffer.c -rename to src/utils/utils_buffer.c -index ca103ff..da34991 100644 ---- a/src/buffer.c -+++ b/src/utils/utils_buffer.c -@@ -20,68 +20,28 @@ - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - ********************************************************************************/ -- - #define _GNU_SOURCE - --#include --#include -+#include "utils_buffer.h" - --#include "buffer.h" -+#include "utils_memory.h" - #include "log.h" --#include "utils.h" - #include "auto_cleanup.h" - --/* buffer allocate */ --Buffer *buffer_alloc(size_t initial_size) --{ -- Buffer *buf = NULL; -- char *tmp = NULL; -- -- if (initial_size == 0) { -- return NULL; -- } -- -- buf = lcr_util_common_calloc_s(sizeof(Buffer)); -- if (buf == NULL) { -- return NULL; -- } -- -- tmp = calloc(1, initial_size); -- if (tmp == NULL) { -- free(buf); -- return NULL; -- } -- -- buf->contents = tmp; -- buf->bytes_used = 0; -- buf->total_size = initial_size; -- -- return buf; --} -- --/* buffer strlen */ --static size_t buffer_strlen(const Buffer *buf) --{ -- return buf == NULL ? 0 : buf->bytes_used; --} -- --/* buffer free */ --void buffer_free(Buffer *buf) -+void isula_buffer_clear(isula_buffer *buf) - { - if (buf == NULL) { - return; - } -- free(buf->contents); -- buf->contents = NULL; -- free(buf); -+ (void)memset(buf->contents, 0, buf->total_size); -+ buf->bytes_used = 0; - } - --/* buffer has space */ --static bool buffer_has_space(const Buffer *buf, size_t desired_length) -+static bool buffer_has_space(const isula_buffer *buf, size_t desired_length) - { -- size_t bytes_remaining = 0; -+ size_t bytes_remaining; - -- if (buf == NULL) { -+ if (buf->total_size < buf->bytes_used) { - return false; - } - bytes_remaining = buf->total_size - buf->bytes_used; -@@ -89,36 +49,27 @@ static bool buffer_has_space(const Buffer *buf, size_t desired_length) - return desired_length <= bytes_remaining; - } - --/* buffer grow */ --static int buffer_grow(Buffer *buf, size_t minimum_size) -+static int buffer_grow(isula_buffer *buf, size_t minimum_size) - { -- size_t factor = 0; -- size_t new_size = 0; -+ size_t factor, new_size; - char *tmp = NULL; - -- if (buf == NULL) { -- return -1; -- } -- - factor = buf->total_size; - if (factor < minimum_size) { - factor = minimum_size; - } - -- if (factor > SIZE_MAX / 2) { -+ if (factor == 0) { -+ ERROR("Invalid grow size"); - return -1; - } - -- new_size = factor * 2; -- if (new_size == 0) { -- return -1; -- } -- -- tmp = lcr_util_common_calloc_s(new_size); -+ tmp = lcr_util_smart_calloc_s(factor, 2); - if (tmp == NULL) { - ERROR("Out of memory"); - return -1; - } -+ new_size = factor * 2; - - (void)memcpy(tmp, buf->contents, buf->total_size); - -@@ -129,14 +80,9 @@ static int buffer_grow(Buffer *buf, size_t minimum_size) - return 0; - } - --/* buffer cat */ --static void buffer_cat(Buffer *buf, const char *append, size_t length) -+static void buffer_cat(isula_buffer *buf, const char *append, size_t length) - { -- size_t i = 0; -- -- if (buf == NULL) { -- return; -- } -+ size_t i; - - for (i = 0; i < length; i++) { - if (append[i] == '\0') { -@@ -150,13 +96,12 @@ static void buffer_cat(Buffer *buf, const char *append, size_t length) - *(buf->contents + buf->bytes_used) = '\0'; - } - --/* buffer append */ --static int buffer_append(Buffer *buf, const char *append, size_t length) -+static int buffer_append(isula_buffer *buf, const char *append, size_t length) - { - size_t desired_length = 0; - -- if (buf == NULL) { -- return -1; -+ if (append == NULL) { -+ return 0; - } - - desired_length = length + 1; -@@ -171,62 +116,132 @@ static int buffer_append(Buffer *buf, const char *append, size_t length) - return 0; - } - --/* buffer nappendf */ --int buffer_nappendf(Buffer *buf, size_t length, const char *format, ...) -+int isula_buffer_nappend(isula_buffer *buf, size_t length, const char *format, ...) - { - int status = 0; -- size_t printf_length = 0; -+ size_t printf_length; - __isula_auto_free char *tmp = NULL; - va_list argp; - - if (buf == NULL) { -+ DEBUG("Empty buffer."); - return -1; - } - -- if (length > SIZE_MAX / sizeof(char) - 1) { -+ if (format == NULL || length == 0) { -+ return 0; -+ } -+ -+ if (length > SIZE_MAX - 1) { -+ ERROR("Too large append string"); - return -1; - } - printf_length = length + 1; -- tmp = calloc(1, printf_length * sizeof(char)); -+ tmp = lcr_util_smart_calloc_s(sizeof(char), printf_length); - if (tmp == NULL) { -+ ERROR("Out of memory"); - return -1; - } - - va_start(argp, format); -- status = vsnprintf(tmp, length, format, argp); -+ status = vsnprintf(tmp, printf_length, format, argp); - va_end(argp); - if (status < 0) { -+ SYSERROR("Sprintf error"); - return -1; - } - -- status = buffer_append(buf, tmp, length); -- if (status != 0) { -+ return buffer_append(buf, tmp, length); -+} -+ -+int isula_buffer_append(isula_buffer *buf, const char *str) -+{ -+ if (buf == NULL) { -+ DEBUG("Empty buffer."); - return -1; - } - -- return 0; -+ if (str == NULL || strlen(str) == 0) { -+ return 0; -+ } -+ -+ return buffer_append(buf, str, strlen(str)); - } - --/* buffer to string */ --char *buffer_to_s(const Buffer *buf) -+char *isula_buffer_to_str(const isula_buffer *buf) - { - size_t len; - char *result = NULL; - - if (buf == NULL) { -+ DEBUG("Empty argument."); - return NULL; - } - -- len = buffer_strlen(buf); -+ len = buf->bytes_used; - if (len == SIZE_MAX) { -+ ERROR("Too large buffer data"); - return NULL; - } - -- result = calloc(1, len + 1); -+ result = lcr_util_smart_calloc_s(1, len + 1); - if (result == NULL) { -+ ERROR("Out of memory"); - return NULL; - } - (void)strncpy(result, buf->contents, len); - - return result; - } -+ -+size_t isula_buffer_strlen(const isula_buffer *buf) -+{ -+ return buf == NULL ? 0 : buf->bytes_used; -+} -+ -+isula_buffer *isula_buffer_alloc(size_t initial_size) -+{ -+ isula_buffer *buf = NULL; -+ char *tmp = NULL; -+ -+ if (initial_size == 0) { -+ return NULL; -+ } -+ -+ buf = lcr_util_common_calloc_s(sizeof(isula_buffer)); -+ if (buf == NULL) { -+ ERROR("Out of memory"); -+ return NULL; -+ } -+ -+ tmp = lcr_util_smart_calloc_s(1, initial_size); -+ if (tmp == NULL) { -+ ERROR("Out of memory"); -+ free(buf); -+ return NULL; -+ } -+ -+ buf->contents = tmp; -+ buf->bytes_used = 0; -+ buf->total_size = initial_size; -+ -+ buf->clear = isula_buffer_clear; -+ buf->nappend = isula_buffer_nappend; -+ buf->append = isula_buffer_append; -+ buf->to_str = isula_buffer_to_str; -+ buf->length = isula_buffer_strlen; -+ -+ return buf; -+} -+ -+void isula_buffer_free(isula_buffer *buf) -+{ -+ if (buf == NULL) { -+ return; -+ } -+ free(buf->contents); -+ buf->contents = NULL; -+ buf->bytes_used = 0; -+ buf->total_size = 0; -+ free(buf); -+} -\ No newline at end of file -diff --git a/src/utils/utils_buffer.h b/src/utils/utils_buffer.h -new file mode 100644 -index 0000000..22c975c ---- /dev/null -+++ b/src/utils/utils_buffer.h -@@ -0,0 +1,93 @@ -+/****************************************************************************** -+ * lcr: utils library for iSula -+ * -+ * Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved. -+ * -+ * Authors: -+ * Haozi007 -+ * -+ * This library is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2.1 of the License, or (at your option) any later version. -+ * -+ * This library is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with this library; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -+ ********************************************************************************/ -+ -+#ifndef _ISULA_UTILS_BUFFER_H -+#define _ISULA_UTILS_BUFFER_H -+ -+#include -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+struct __isula_buffer; -+ -+/* -+ * clear used data in buffer, and reset used_size to 0 -+ */ -+typedef void (*clear_op)(struct __isula_buffer *buf); -+ -+/* -+* append string which length is length into buffer; -+* length should >= strlen(formatted string), else will truncate format string; -+* success, return 0; -+* fail, return -1; -+*/ -+typedef int (*nappend_op)(struct __isula_buffer *buf, size_t length, const char *format, ...); -+ -+/* -+* append string into buffer; -+* success, return 0; -+* fail, return -1; -+*/ -+typedef int (*append_op)(struct __isula_buffer *buf, const char *str); -+ -+/* -+* transform buffer to string, and return to caller -+*/ -+typedef char *(*to_str_op)(const struct __isula_buffer *buf); -+ -+/* -+* get length of data in buffer -+*/ -+typedef size_t (*length_op)(const struct __isula_buffer *buf); -+ -+struct __isula_buffer { -+ char *contents; -+ size_t bytes_used; -+ size_t total_size; -+ clear_op clear; -+ nappend_op nappend; -+ append_op append; -+ to_str_op to_str; -+ length_op length; -+}; -+typedef struct __isula_buffer isula_buffer; -+ -+/* -+* create isula buffer with initial size memory -+* if initial_size == 0, will return NULL; -+* if success, return a isula_buffer struct; -+*/ -+isula_buffer *isula_buffer_alloc(size_t initial_size); -+ -+/* -+* free isula_buffer struct and memory in it -+*/ -+void isula_buffer_free(isula_buffer *buf); -+ -+#ifdef __cplusplus -+} -+#endif -+ -+#endif -\ No newline at end of file -diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt -index 4c66a98..ff0ca47 100644 ---- a/tests/CMakeLists.txt -+++ b/tests/CMakeLists.txt -@@ -26,29 +26,52 @@ find_package(GTest REQUIRED) - configure_file("data/ocihook.json" ${CMAKE_BINARY_DIR}/tests/ocihook.json COPYONLY) - configure_file("data/process.json" ${CMAKE_BINARY_DIR}/tests/process.json COPYONLY) - -+file(GLOB_RECURSE test_util_srcs -+ "${CMAKE_SOURCE_DIR}/src/third_party/*.c" -+ "${CMAKE_SOURCE_DIR}/src/third_party/**/*.c" -+ "${CMAKE_SOURCE_DIR}/src/json/*.c" -+ "${CMAKE_SOURCE_DIR}/src/json/**/*.c" -+ "${CMAKE_SOURCE_DIR}/src/utils/*.c" -+ "${CMAKE_SOURCE_DIR}/src/utils/**/*.c" -+ "${CMAKE_BINARY_DIR}/json/*.c" -+) -+ -+add_library(test_libisula_utils SHARED ${test_util_srcs}) -+target_include_directories(test_libisula_utils -+ PUBLIC ${CMAKE_SOURCE_DIR}/src -+ PUBLIC ${CMAKE_SOURCE_DIR}/src/utils -+ PUBLIC ${CMAKE_SOURCE_DIR}/src/third_party -+ PUBLIC ${CMAKE_SOURCE_DIR}/src/third_party/libocispec -+ PUBLIC ${CMAKE_SOURCE_DIR}/src/json -+ PUBLIC ${CMAKE_SOURCE_DIR}/src/json/schema/src -+ PUBLIC ${CMAKE_BINARY_DIR}/json -+ PUBLIC ${CMAKE_BINARY_DIR}/conf -+ ) -+target_link_libraries(test_libisula_utils ${LIBYAJL_LIBRARY}) -+ - macro(_DEFINE_NEW_TEST) - add_executable(${ARGV0} -- ${TESTS_UTILS_SRCS} - main.cpp - ${ARGV0}.cpp - ) - - target_link_libraries(${ARGV0} -- isula_libutils -+ test_libisula_utils - ${GTEST_LIBRARY} -- ${LIBYAJL_LIBRARY} - pthread - ) - - target_include_directories(${ARGV0} PUBLIC - ${GTEST_INCLUDE_DIR} -- PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} - PUBLIC ${CMAKE_SOURCE_DIR}/src -+ PUBLIC ${CMAKE_SOURCE_DIR}/src/utils - PUBLIC ${CMAKE_SOURCE_DIR}/src/third_party -+ PUBLIC ${CMAKE_SOURCE_DIR}/src/third_party/libocispec - PUBLIC ${CMAKE_SOURCE_DIR}/src/json - PUBLIC ${CMAKE_SOURCE_DIR}/src/json/schema/src - PUBLIC ${CMAKE_BINARY_DIR}/json - PUBLIC ${CMAKE_BINARY_DIR}/conf -+ PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} - ) - - add_test( -@@ -72,7 +95,7 @@ _DEFINE_NEW_TEST(libocispec_ut libocispec_testcase) - _DEFINE_NEW_TEST(defs_process_ut defs_process_testcase) - _DEFINE_NEW_TEST(go_crc64_ut go_crc64_testcase) - _DEFINE_NEW_TEST(auto_cleanup_ut autocleanup_testcase) -- -+_DEFINE_NEW_TEST(utils_buffer_ut isula_buffer_testcase) - - # mock test for run lcov to generate html - add_executable(mock_ut main.cpp) -@@ -84,7 +107,7 @@ target_link_libraries(mock_ut - ${GTEST_LIBRARY} - pthread - ) --add_dependencies(mock_ut log_ut libocispec_ut defs_process_ut go_crc64_ut) -+add_dependencies(mock_ut log_ut libocispec_ut defs_process_ut go_crc64_ut auto_cleanup_ut utils_buffer_ut) - - IF(ENABLE_GCOV) - add_custom_target(coverage -diff --git a/tests/auto_cleanup_ut.cpp b/tests/auto_cleanup_ut.cpp -index 1eff4b2..b167bcb 100644 ---- a/tests/auto_cleanup_ut.cpp -+++ b/tests/auto_cleanup_ut.cpp -@@ -105,16 +105,34 @@ TEST(autocleanup_testcase, test__isula_auto_prw_unlock) - size_t do_auto_free() - { - __isula_auto_free void *test = nullptr; -+#if defined(__GLIBC__) && ((__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 33)) -+ struct mallinfo2 info = { 0 }; -+ -+ // use 1024 * 1024 to ensure memory allo from mmap -+ test = malloc(1024 * 1024); -+ info = mallinfo2(); -+ return info.hblks; -+#else - struct mallinfo info = { 0 }; - - // use 1024 * 1024 to ensure memory allo from mmap - test = malloc(1024 * 1024); - info = mallinfo(); - return info.hblks; -+#endif - } - - TEST(autocleanup_testcase, test__isula_auto_free) - { -+#if defined(__GLIBC__) && ((__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 33)) -+ struct mallinfo2 before; -+ struct mallinfo2 after; -+ size_t used; -+ -+ before = mallinfo2(); -+ used = do_auto_free(); -+ after = mallinfo2(); -+#else - struct mallinfo before; - struct mallinfo after; - size_t used; -@@ -122,6 +140,7 @@ TEST(autocleanup_testcase, test__isula_auto_free) - before = mallinfo(); - used = do_auto_free(); - after = mallinfo(); -+#endif - ASSERT_EQ(0, after.hblks); - ASSERT_NE(used, after.hblks); - ASSERT_NE(used, before.hblks); -diff --git a/tests/utils_buffer_ut.cpp b/tests/utils_buffer_ut.cpp -new file mode 100644 -index 0000000..3cc95a6 ---- /dev/null -+++ b/tests/utils_buffer_ut.cpp -@@ -0,0 +1,213 @@ -+/****************************************************************************** -+ * iSula-libutils: ut for utils_buffer.c -+ * -+ * Copyright (c) Huawei Technologies Co., Ltd. 2023. All rights reserved. -+ * -+ * Authors: -+ * Haozi007 -+ * -+ * This library is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2.1 of the License, or (at your option) any later version. -+ * -+ * This library is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with this library; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -+ ********************************************************************************/ -+ -+#include -+ -+#include -+#include -+ -+#include "utils_buffer.h" -+ -+TEST(isula_buffer_testcase, test__isula_buffer_alloc) -+{ -+ isula_buffer *ib = nullptr; -+ -+ ib = isula_buffer_alloc(0); -+ ASSERT_EQ(ib, nullptr); -+ -+ ib = isula_buffer_alloc(SIZE_MAX); -+ ASSERT_EQ(ib, nullptr); -+ -+ ib = isula_buffer_alloc(1); -+ ASSERT_NE(ib, nullptr); -+ ASSERT_NE(ib->contents, nullptr); -+ ASSERT_EQ(ib->bytes_used, 0); -+ ASSERT_EQ(ib->total_size, 1); -+ -+ isula_buffer_free(ib); -+ ib = nullptr; -+ -+ // check nullptr input, donot coredump -+ isula_buffer_free(ib); -+} -+ -+TEST(isula_buffer_testcase, test__isula_buffer_nappend) -+{ -+ isula_buffer *ib = nullptr; -+ int ret; -+ const size_t initSize = 8; -+ -+ ib = isula_buffer_alloc(initSize); -+ ASSERT_NE(ib, nullptr); -+ ASSERT_NE(ib->contents, nullptr); -+ ASSERT_EQ(ib->bytes_used, 0); -+ ASSERT_EQ(ib->total_size, initSize); -+ -+ ret = ib->nappend(nullptr, 1, "hello"); -+ ASSERT_NE(ret, 0); -+ ret = ib->nappend(ib, SIZE_MAX, "hello"); -+ ASSERT_NE(ret, 0); -+ ret = ib->nappend(ib, 0, "hello"); -+ ASSERT_EQ(ret, 0); -+ ASSERT_EQ(ib->bytes_used, 0); -+ ret = ib->nappend(ib, 1, nullptr); -+ ASSERT_EQ(ret, 0); -+ ASSERT_EQ(ib->bytes_used, 0); -+ ret = ib->nappend(ib, 6, "hello"); -+ ASSERT_EQ(ret, 0); -+ ASSERT_EQ(ib->bytes_used, 5); -+ ASSERT_EQ(ib->total_size, initSize); -+ ASSERT_STREQ(ib->contents, "hello"); -+ ret = ib->nappend(ib, 7, " world"); -+ ASSERT_EQ(ret, 0); -+ ASSERT_EQ(ib->bytes_used, 11); -+ ASSERT_EQ(ib->total_size, initSize * 2); -+ ASSERT_STREQ(ib->contents, "hello world"); -+ -+ ib->clear(ib); -+ ASSERT_EQ(ib->bytes_used, 0); -+ -+ ret = ib->nappend(ib, 10, "hello %s", "world"); -+ ASSERT_EQ(ret, 0); -+ ASSERT_EQ(ib->bytes_used, 10); -+ ASSERT_EQ(ib->total_size, initSize * 2); -+ ASSERT_STREQ(ib->contents, "hello worl"); -+ -+ isula_buffer_free(ib); -+ ib = nullptr; -+} -+ -+ -+TEST(isula_buffer_testcase, test__isula_buffer_append) -+{ -+ isula_buffer *ib = nullptr; -+ int ret; -+ const size_t initSize = 8; -+ -+ ib = isula_buffer_alloc(initSize); -+ ASSERT_NE(ib, nullptr); -+ ASSERT_NE(ib->contents, nullptr); -+ ASSERT_EQ(ib->bytes_used, 0); -+ ASSERT_EQ(ib->total_size, initSize); -+ -+ ret = ib->append(nullptr, "hello"); -+ ASSERT_NE(ret, 0); -+ ret = ib->append(ib, nullptr); -+ ASSERT_EQ(ret, 0); -+ ret = ib->append(ib, ""); -+ ASSERT_EQ(ret, 0); -+ ASSERT_EQ(ib->bytes_used, 0); -+ ret = ib->append(ib, "hello"); -+ ASSERT_EQ(ret, 0); -+ ASSERT_EQ(ib->bytes_used, 5); -+ ASSERT_EQ(ib->total_size, initSize); -+ ASSERT_STREQ(ib->contents, "hello"); -+ ret = ib->append(ib, " world"); -+ ASSERT_EQ(ret, 0); -+ ASSERT_EQ(ib->bytes_used, 11); -+ ASSERT_EQ(ib->total_size, initSize * 2); -+ ASSERT_STREQ(ib->contents, "hello world"); -+ -+ isula_buffer_free(ib); -+ ib = nullptr; -+} -+ -+TEST(isula_buffer_testcase, test__isula_buffer_to_str) -+{ -+ isula_buffer *ib = nullptr; -+ int ret; -+ const size_t initSize = 8; -+ char *tmpStr = nullptr; -+ -+ ib = isula_buffer_alloc(initSize); -+ ASSERT_NE(ib, nullptr); -+ ASSERT_NE(ib->contents, nullptr); -+ ASSERT_EQ(ib->bytes_used, 0); -+ ASSERT_EQ(ib->total_size, initSize); -+ -+ tmpStr = ib->to_str(nullptr); -+ ASSERT_EQ(tmpStr, nullptr); -+ tmpStr = ib->to_str(ib); -+ ASSERT_NE(tmpStr, nullptr); -+ ASSERT_STREQ(tmpStr, ""); -+ free(tmpStr); -+ -+ ret = ib->nappend(ib, 5, "hello"); -+ ASSERT_EQ(ret, 0); -+ ASSERT_EQ(ib->bytes_used, 5); -+ ASSERT_EQ(ib->total_size, initSize); -+ ASSERT_STREQ(ib->contents, "hello"); -+ tmpStr = ib->to_str(ib); -+ ASSERT_NE(tmpStr, nullptr); -+ ASSERT_STREQ(tmpStr, "hello"); -+ free(tmpStr); -+ -+ ret = ib->nappend(ib, 6, " world"); -+ ASSERT_EQ(ret, 0); -+ ASSERT_EQ(ib->bytes_used, 11); -+ ASSERT_EQ(ib->total_size, initSize * 2); -+ ASSERT_STREQ(ib->contents, "hello world"); -+ tmpStr = ib->to_str(ib); -+ ASSERT_NE(tmpStr, nullptr); -+ ASSERT_STREQ(tmpStr, "hello world"); -+ free(tmpStr); -+ -+ isula_buffer_free(ib); -+ ib = nullptr; -+} -+ -+TEST(isula_buffer_testcase, test__isula_buffer_clear) -+{ -+ isula_buffer *ib = nullptr; -+ int ret; -+ const size_t initSize = 8; -+ char *tmpStr = nullptr; -+ -+ ib = isula_buffer_alloc(initSize); -+ ASSERT_NE(ib, nullptr); -+ ASSERT_NE(ib->contents, nullptr); -+ ASSERT_EQ(ib->bytes_used, 0); -+ ASSERT_EQ(ib->total_size, initSize); -+ -+ ret = ib->nappend(ib, 5, "hello"); -+ ASSERT_EQ(ret, 0); -+ ASSERT_EQ(ib->bytes_used, 5); -+ ASSERT_EQ(ib->length(ib), 5); -+ ASSERT_EQ(ib->total_size, initSize); -+ ASSERT_STREQ(ib->contents, "hello"); -+ tmpStr = ib->to_str(ib); -+ ASSERT_NE(tmpStr, nullptr); -+ ASSERT_STREQ(tmpStr, "hello"); -+ free(tmpStr); -+ ib->clear(ib); -+ ASSERT_NE(ib, nullptr); -+ ASSERT_NE(ib->contents, nullptr); -+ ASSERT_EQ(ib->length(ib), 0); -+ ASSERT_EQ(ib->total_size, initSize); -+ -+ ib->clear(nullptr); -+ ASSERT_EQ(ib->length(nullptr), 0); -+ -+ isula_buffer_free(ib); -+ ib = nullptr; -+} -\ No newline at end of file --- -2.34.1 - diff --git a/0006-264-Support-both-C-11-and-C-17.patch b/0006-264-Support-both-C-11-and-C-17.patch deleted file mode 100644 index b616693..0000000 --- a/0006-264-Support-both-C-11-and-C-17.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 2d3f4ef95a3c4d4e87ce71c5ced43f3d8e81cc9e Mon Sep 17 00:00:00 2001 -From: haozi007 -Date: Thu, 14 Sep 2023 09:00:05 +0000 -Subject: [PATCH 6/8] !264 Support both C++11 and C++17 * Support both C++11 - and C++17 - ---- - cmake/set_build_flags.cmake | 9 ++++++++- - 1 file changed, 8 insertions(+), 1 deletion(-) - -diff --git a/cmake/set_build_flags.cmake b/cmake/set_build_flags.cmake -index 3b6842a..7d4c9fc 100644 ---- a/cmake/set_build_flags.cmake -+++ b/cmake/set_build_flags.cmake -@@ -24,8 +24,15 @@ - set(CMAKE_C_FLAGS "-fPIC -fstack-protector-all -D_FORTIFY_SOURCE=2 -O2 -Wall -fPIE") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__FILENAME__='\"$(subst ${CMAKE_SOURCE_DIR}/,,$(abspath $<))\"'") - -+include(CheckCXXCompilerFlag) -+CHECK_CXX_COMPILER_FLAG("-std=c++17" COMPILER_SUPPORTS_CXX17) - if (ENABLE_UT) -- set(CMAKE_CXX_FLAGS "-fPIC -std=c++11 -fstack-protector-all -D_FORTIFY_SOURCE=2 -O2 -Wall") -+ set(CMAKE_CXX_VERSION "-std=c++11") -+ if (COMPILER_SUPPORTS_CXX17) -+ message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has C++17 support.") -+ set(CMAKE_CXX_VERSION "-std=c++17") -+ endif() -+ set(CMAKE_CXX_FLAGS "-fPIC ${CMAKE_CXX_VERSION} -fstack-protector-all -D_FORTIFY_SOURCE=2 -O2 -Wall") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__FILENAME__='\"$(subst ${CMAKE_SOURCE_DIR}/,,$(abspath $<))\"'") - endif() - set(CMAKE_SHARED_LINKER_FLAGS "-Wl,-E -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack -Wtrampolines -shared -pthread") --- -2.34.1 - diff --git a/0006-add-unit-test-for-util-function.patch b/0006-add-unit-test-for-util-function.patch new file mode 100644 index 0000000..e17024c --- /dev/null +++ b/0006-add-unit-test-for-util-function.patch @@ -0,0 +1,109 @@ +From e072071325b04d362b1eee69aed5c75199799fa5 Mon Sep 17 00:00:00 2001 +From: zhongtao +Date: Mon, 13 Nov 2023 15:20:05 +0800 +Subject: [PATCH 6/6] add unit test for util function + +Signed-off-by: zhongtao +--- + tests/utils_file_ut.cpp | 30 ++++++++++++++++++++++++++++++ + tests/utils_string_ut.cpp | 21 +++++++++++++++++++++ + tests/utils_utils_ut.cpp | 13 +++++++++++++ + 3 files changed, 64 insertions(+) + +diff --git a/tests/utils_file_ut.cpp b/tests/utils_file_ut.cpp +index d9bd252..7e98bd8 100644 +--- a/tests/utils_file_ut.cpp ++++ b/tests/utils_file_ut.cpp +@@ -210,4 +210,34 @@ TEST(utils_file_testcase, test_isula_read_write_nointr) + ASSERT_EQ(nread, 5); + + isula_path_remove(test_file.c_str()); ++} ++ ++TEST(utils_file_testcase, test_isula_set_non_block) ++{ ++ ASSERT_EQ(isula_set_non_block(-1), -1); ++ ++ int pipefd[2]; ++ ASSERT_EQ(0, pipe(pipefd)); ++ ASSERT_EQ(0, isula_set_non_block(pipefd[0])); ++ int flag = fcntl(pipefd[0], F_GETFL, 0); ++ ASSERT_NE(-1, flag); ++ EXPECT_TRUE(flag & O_NONBLOCK); ++ close(pipefd[0]); ++ close(pipefd[1]); ++ ++ int pipefd2[2]; ++ ASSERT_EQ(0, pipe(pipefd2)); ++ close(pipefd2[1]); ++ ASSERT_EQ(-1, isula_set_non_block(pipefd2[1])); ++ close(pipefd2[0]); ++} ++ ++TEST(utils_file_testcase, test_util_validate_absolute_path) ++{ ++ ASSERT_EQ(isula_validate_absolute_path("/etc/isulad"), 0); ++ ASSERT_EQ(isula_validate_absolute_path("/isulad/"), 0); ++ ++ ASSERT_EQ(isula_validate_absolute_path(nullptr), -1); ++ ASSERT_EQ(isula_validate_absolute_path("./isulad"), -1); ++ ASSERT_EQ(isula_validate_absolute_path("isulad"), -1); + } +\ No newline at end of file +diff --git a/tests/utils_string_ut.cpp b/tests/utils_string_ut.cpp +index 5b93723..20fd619 100644 +--- a/tests/utils_string_ut.cpp ++++ b/tests/utils_string_ut.cpp +@@ -286,4 +286,25 @@ TEST(utils_string_testcase, test_isula_string_split_to_multi) + ASSERT_STREQ(ret->items[2], "c"); + ASSERT_STREQ(ret->items[3], "d"); + isula_string_array_free(ret); ++} ++ ++TEST(utils_string_testcase, test_isula_has_prefix) ++{ ++ const char* prefix = "prefix"; ++ EXPECT_FALSE(isula_has_prefix(NULL, prefix)); ++ ++ const char* str = "string"; ++ EXPECT_FALSE(isula_has_prefix(str, NULL)); ++ ++ const char* str2 = "short"; ++ const char* prefix2 = "longer"; ++ EXPECT_FALSE(isula_has_prefix(str2, prefix2)); ++ ++ const char* str3 = "string"; ++ const char* prefix3 = "prefix"; ++ EXPECT_FALSE(isula_has_prefix(str3, prefix3)); ++ ++ const char* str4 = "prefix_string"; ++ const char* prefix4 = "prefix"; ++ EXPECT_TRUE(isula_has_prefix(str4, prefix4)); + } +\ No newline at end of file +diff --git a/tests/utils_utils_ut.cpp b/tests/utils_utils_ut.cpp +index 843bcf4..7085f23 100644 +--- a/tests/utils_utils_ut.cpp ++++ b/tests/utils_utils_ut.cpp +@@ -47,4 +47,17 @@ TEST(utils_utils_testcase, test_isula_usleep_nointerupt) + elapsed_time = std::chrono::duration_cast(end_time - start_time); + ASSERT_GT(elapsed_time.count(), 800); + ASSERT_LT(elapsed_time.count(), 1200); ++} ++ ++TEST(utils_utils_testcase, test_isula_reg_match) ++{ ++ const char *pattern = "^[a-f0-9]{64}$"; ++ const char *valid = "c8da28a6cea7443b648ec70a1c947b6cb920ee0ef3c4a691d4252ff6e1888036"; ++ const char *invalid = "g8da28a6cea7443b648ec70a1c947b6cb920ee0ef3c4a691d4252ff6e1888036"; ++ ++ ASSERT_EQ(isula_reg_match(pattern, valid), 0); ++ ASSERT_EQ(isula_reg_match(pattern, invalid), 1); ++ ++ ASSERT_EQ(isula_reg_match(pattern, nullptr), -1); ++ ASSERT_EQ(isula_reg_match(nullptr, pattern), -1); + } +\ No newline at end of file +-- +2.33.0 + diff --git a/0007-262-Fix-empty-pointer-and-overflow.patch b/0007-262-Fix-empty-pointer-and-overflow.patch deleted file mode 100644 index 04d758a..0000000 --- a/0007-262-Fix-empty-pointer-and-overflow.patch +++ /dev/null @@ -1,1283 +0,0 @@ -From ff5ccbd62e0e01a4e246b5b3c7b62a9703091bd6 Mon Sep 17 00:00:00 2001 -From: jake -Date: Fri, 15 Sep 2023 01:50:29 +0000 -Subject: [PATCH 7/8] !262 Fix empty pointer and overflow * Fix empty pointer - and overflow - ---- - src/runtime/conf.c | 63 +++++++++-- - src/runtime/lcrcontainer.c | 135 ++--------------------- - src/runtime/lcrcontainer.h | 40 ------- - src/runtime/lcrcontainer_execute.c | 30 ++++++ - src/runtime/lcrcontainer_extend.c | 144 ++++--------------------- - src/runtime/lcrcontainer_extend.h | 11 -- - src/third_party/go_crc64.c | 6 +- - src/third_party/libocispec/common_c.py | 116 +++++++++++++------- - src/third_party/libocispec/common_h.py | 4 +- - src/third_party/libocispec/sources.py | 51 +++++---- - src/utils/utils_buffer.c | 4 + - src/utils/utils_cgroup.c | 5 + - tests/fuzz/log_fuzz.cc | 2 +- - 13 files changed, 238 insertions(+), 373 deletions(-) - -diff --git a/src/runtime/conf.c b/src/runtime/conf.c -index d505507..7739de6 100644 ---- a/src/runtime/conf.c -+++ b/src/runtime/conf.c -@@ -642,6 +642,10 @@ static int trans_oci_process_prlimit(const defs_process *proc, struct lcr_list * - - for (i = 0; i < proc->rlimits_len; i++) { - defs_process_rlimits_element *lr = proc->rlimits[i]; -+ if (lr == NULL) { -+ continue; -+ } -+ - char buf_key[30] = { 0 }; - char buf_value[60] = { 0 }; - size_t j; -@@ -754,6 +758,10 @@ struct lcr_list *trans_oci_process(const defs_process *proc) - { - struct lcr_list *conf = NULL; - -+ if (proc == NULL) { -+ return NULL; -+ } -+ - conf = lcr_util_common_calloc_s(sizeof(struct lcr_list)); - if (conf == NULL) { - return NULL; -@@ -1097,7 +1105,8 @@ bool is_system_container(const oci_runtime_spec *container) - { - size_t i = 0; - for (i = 0; container->annotations != NULL && i < container->annotations->len; i++) { -- if (strcmp(container->annotations->keys[i], "system.container") == 0) { -+ if (container->annotations->keys[i] != NULL && -+ strcmp(container->annotations->keys[i], "system.container") == 0) { - return true; - } - } -@@ -1108,7 +1117,8 @@ static bool is_external_rootfs(const oci_runtime_spec *container) - { - size_t i = 0; - for (i = 0; container->annotations != NULL && i < container->annotations->len; i++) { -- if (strcmp(container->annotations->keys[i], "external.rootfs") == 0) { -+ if (container->annotations->keys[i] != NULL && -+ strcmp(container->annotations->keys[i], "external.rootfs") == 0) { - return true; - } - } -@@ -1170,8 +1180,14 @@ struct lcr_list *trans_oci_mounts(const oci_runtime_spec *c) - struct lcr_list *node = NULL; - defs_mount *tmp = NULL; - size_t i; -- bool system_container = is_system_container(c); -- bool external_rootfs = is_external_rootfs(c); -+ bool system_container = false; -+ bool external_rootfs = false; -+ -+ if (c == NULL) { -+ return NULL; -+ } -+ system_container = is_system_container(c); -+ external_rootfs = is_external_rootfs(c); - - conf = lcr_util_common_calloc_s(sizeof(*conf)); - if (conf == NULL) { -@@ -1181,7 +1197,7 @@ struct lcr_list *trans_oci_mounts(const oci_runtime_spec *c) - - for (i = 0; i < c->mounts_len; i++) { - tmp = c->mounts[i]; -- if (tmp->type == NULL) { -+ if (tmp == NULL || tmp->type == NULL) { - goto out_free; - } - -@@ -1210,6 +1226,10 @@ static int trans_one_oci_id_mapping(struct lcr_list *conf, const char *typ, cons - char buf_value[DEFAULT_BUF_LEN] = { 0 }; - char subid[ID_MAP_LEN] = { 0 }; - -+ if (id == NULL) { -+ return -1; -+ } -+ - nret = snprintf(buf_value, sizeof(buf_value), "%s %u %u %u", typ, id->container_id, id->host_id, id->size); - if (nret < 0 || (size_t)nret >= sizeof(buf_value)) { - return -1; -@@ -1573,6 +1593,10 @@ static int trans_resources_devices_v1(const defs_resources *res, struct lcr_list - - for (i = 0; i < res->devices_len; i++) { - defs_device_cgroup *lrd = res->devices[i]; -+ if (lrd == NULL) { -+ continue; -+ } -+ - if (trans_resources_devices_ret(lrd, buf_value, sizeof(buf_value)) < 0) { - goto out; - } -@@ -2009,6 +2033,10 @@ static int trans_resources_devices_v2(const defs_resources *res, struct lcr_list - - for (i = 0; i < res->devices_len; i++) { - defs_device_cgroup *lrd = res->devices[i]; -+ if (lrd == NULL) { -+ continue; -+ } -+ - if (trans_resources_devices_ret(lrd, buf_value, sizeof(buf_value)) < 0) { - goto out; - } -@@ -2491,7 +2519,7 @@ static struct lcr_list *trans_oci_namespaces(const oci_runtime_config_linux *l) - char *ns_name = NULL; - ns = l->namespaces[i]; - -- if (ns->type == NULL || ns->path == NULL) { -+ if (ns == NULL || ns->type == NULL || ns->path == NULL) { - continue; - } - -@@ -2808,6 +2836,12 @@ static int seccomp_append_rule(const defs_syscall *syscall, size_t i, isula_buff - ret = -1; - goto out; - } -+ -+ if (strlen(syscall->names[i]) > SIZE_MAX - strlen(action) - 2) { -+ ERROR("Out of range"); -+ ret = -1; -+ goto out; -+ } - if (buffer->nappend(buffer, strlen(syscall->names[i]) + strlen(action) + 2, "%s %s", syscall->names[i], action)) { - ERROR("Failed to append syscall name and action\n"); - ret = -1; -@@ -2820,6 +2854,15 @@ static int seccomp_append_rule(const defs_syscall *syscall, size_t i, isula_buff - ret = -1; - goto out; - } -+ -+ /* Appending content is syscall->args[j]->op plus -+ * three unsigned numbers(which length is no more than 20 * 3) -+ */ -+ if (strlen(syscall->args[j]->op) > SIZE_MAX - 20 * 3) { -+ ERROR("Out of range"); -+ ret = -1; -+ goto out; -+ } - if (buffer->nappend(buffer, 20 * 3 + strlen(syscall->args[j]->op), " [%u,%llu,%s,%llu]", - syscall->args[j]->index, syscall->args[j]->value, syscall->args[j]->op, - syscall->args[j]->value_two)) { -@@ -3033,6 +3076,10 @@ struct lcr_list *trans_oci_linux(const oci_runtime_config_linux *l, char **secco - int ret = 0; - struct lcr_list *tmp = NULL; - -+ if (l == NULL) { -+ return NULL; -+ } -+ - struct lcr_list *conf = lcr_util_common_calloc_s(sizeof(*conf)); - if (conf == NULL) { - return NULL; -@@ -3115,6 +3162,10 @@ struct lcr_list *trans_annotations(const json_map_string_string *anno) - size_t len; - int ret = 0; - -+ if (anno == NULL) { -+ return NULL; -+ } -+ - struct lcr_list *conf = lcr_util_common_calloc_s(sizeof(*conf)); - if (conf == NULL) { - return NULL; -diff --git a/src/runtime/lcrcontainer.c b/src/runtime/lcrcontainer.c -index ae5fe5b..4270902 100644 ---- a/src/runtime/lcrcontainer.c -+++ b/src/runtime/lcrcontainer.c -@@ -43,52 +43,6 @@ - #include "utils.h" - #include "oci_runtime_spec.h" - --/* -- * Free lcr_container_info array returned by lcr_list_{active,all}_containers -- */ --void lcr_containers_info_free(struct lcr_container_info **info_arr, size_t size) --{ -- size_t i = 0; -- struct lcr_container_info *in = NULL; -- -- if (info_arr == NULL) { -- return; -- } -- if (size == 0) { -- return; -- } -- for (i = 0, in = *info_arr; i < size; i++, in++) { -- free(in->interface); -- free(in->ipv4); -- free(in->ipv6); -- free(in->name); -- free(in->state); -- } -- free(*info_arr); -- *info_arr = NULL; --} -- --/* -- * Free lcr_container_info returned lcr_container_info_get -- */ --void lcr_container_info_free(struct lcr_container_info *info) --{ -- if (info == NULL) { -- return; -- } -- free(info->interface); -- info->interface = NULL; -- free(info->ipv4); -- info->ipv4 = NULL; -- free(info->ipv6); -- info->ipv6 = NULL; -- free(info->name); -- info->name = NULL; -- free(info->state); -- info->state = NULL; -- free(info); --} -- - static inline bool is_container_exists(struct lxc_container *c) - { - return c->is_defined(c); -@@ -99,85 +53,6 @@ static inline bool is_container_can_control(struct lxc_container *c) - return c->may_control(c); - } - --/* -- * Get one container info for a given name and lcrpath. -- * return struct of container info, or NULL on error. -- */ --struct lcr_container_info *lcr_container_info_get(const char *name, const char *lcrpath) --{ -- int nret = -1; -- struct lcr_container_info *info = NULL; -- const char *st = NULL; -- bool run_flag = false; -- -- struct lxc_container *c = lxc_container_without_config_new(name, lcrpath); -- if (c == NULL) { -- return NULL; -- } -- -- if (!is_container_exists(c)) { -- goto put_and_finish; -- } -- -- st = c->state(c); -- if (st == NULL) { -- st = "UNKNOWN"; -- } -- run_flag = (strcmp(st, "STOPPED") != 0); -- -- /* Now it makes sense to allocate memory */ -- info = lcr_util_common_calloc_s(sizeof(*info)); -- if (info == NULL) { -- nret = -1; -- goto put_and_finish; -- } -- info->init = -1; -- info->running = run_flag; -- info->name = lcr_util_strdup_s(name); -- info->state = lcr_util_strdup_s(st); -- if (run_flag) { -- info->init = c->init_pid(c); -- } -- -- nret = 0; --put_and_finish: -- lxc_container_put(c); -- if (nret != 0) { -- lcr_container_info_free(info); -- info = NULL; -- } -- return info; --} -- --/* -- * Get a complete list of all containers for a given lcrpath. -- * return Number of containers, or -1 on error. -- **/ --int lcr_list_all_containers(const char *lcrpath, struct lcr_container_info **info_arr) --{ -- char **container = NULL; -- int n = 0; -- int nret = -1; -- size_t info_size = 0; -- const char *path = lcrpath ? lcrpath : LCRPATH; -- -- clear_error_message(&g_lcr_error); -- n = list_all_containers(path, &container, NULL); -- if (n == -1) { -- n = 0; -- } -- -- nret = lcr_containers_info_get(path, info_arr, &info_size, container, n); -- if (info_arr == NULL && nret == 0) { -- return -1; -- } else if (info_arr == NULL || nret == -1) { -- lcr_containers_info_free(info_arr, info_size); -- return -1; -- } -- -- return (int)info_size; --} -- - static int create_partial(const struct lxc_container *c) - { - int fd = 0; -@@ -275,6 +150,16 @@ bool lcr_create(const char *name, const char *lcrpath, void *oci_config) - const char *tmp_path = lcrpath ? lcrpath : LCRPATH; - oci_runtime_spec *oci_spec = (oci_runtime_spec *)oci_config; - -+ if (name == NULL) { -+ ERROR("Missing container name"); -+ return false; -+ } -+ -+ if (oci_spec == NULL) { -+ ERROR("Empty oci config"); -+ return false; -+ } -+ - clear_error_message(&g_lcr_error); - isula_libutils_set_log_prefix(name); - -diff --git a/src/runtime/lcrcontainer.h b/src/runtime/lcrcontainer.h -index 6add8c4..d4cef39 100644 ---- a/src/runtime/lcrcontainer.h -+++ b/src/runtime/lcrcontainer.h -@@ -46,24 +46,6 @@ __EXPORT__ struct lcr_console_config { - char *log_file_size; - }; - --/* --* Store lcr container info --*/ --__EXPORT__ struct lcr_container_info { -- /* Name of container. */ -- char *name; -- /* State of container. */ -- char *state; -- /* Interface of container. */ -- char *interface; -- char *ipv4; -- char *ipv6; -- pid_t init; -- double ram; -- double swap; -- bool running; --}; -- - __EXPORT__ struct blkio_stats { - uint64_t read; - uint64_t write; -@@ -132,28 +114,6 @@ __EXPORT__ struct lcr_cgroup_resources { - int64_t cpurt_runtime; - }; - --/* --* Get one container info for a given lcrpath. --* return struct of container info, or NULL on error. --*/ --__EXPORT__ struct lcr_container_info *lcr_container_info_get(const char *name, const char *lcrpath); -- --/* --* Free lcr_container_info returned lcr_container_info_get --*/ --__EXPORT__ void lcr_container_info_free(struct lcr_container_info *info); -- --/* --* Get a complete list of all containers for a given lcrpath. --* return Number of containers, or -1 on error. --*/ --__EXPORT__ int lcr_list_all_containers(const char *lcrpath, struct lcr_container_info **info_arr); -- --/* --* Free lcr_container_info array returned by lcr_list_{active,all}_containers --*/ --__EXPORT__ void lcr_containers_info_free(struct lcr_container_info **info_arr, size_t size); -- - /* - * Create a container - * param name : container name -diff --git a/src/runtime/lcrcontainer_execute.c b/src/runtime/lcrcontainer_execute.c -index e91ff27..61bcd84 100644 ---- a/src/runtime/lcrcontainer_execute.c -+++ b/src/runtime/lcrcontainer_execute.c -@@ -736,6 +736,11 @@ bool do_update(struct lxc_container *c, const char *name, const char *lcrpath, s - { - bool bret = false; - -+ if (c == NULL) { -+ ERROR("Invalid arg c"); -+ return bret; -+ } -+ - // If container is not running, update config file is enough, - // resources will be updated when the container is started again. - // If container is running (including paused), we need to update configs -@@ -760,6 +765,16 @@ void do_lcr_state(struct lxc_container *c, struct lcr_container_state *lcs) - { - struct lxc_container_metrics lxc_metrics = { 0 }; - -+ if (c == NULL) { -+ ERROR("Invalid argument c"); -+ return; -+ } -+ -+ if (lcs == NULL) { -+ ERROR("Invalid argument lcs"); -+ return; -+ } -+ - clear_error_message(&g_lcr_error); - (void)memset(lcs, 0x00, sizeof(struct lcr_container_state)); - -@@ -915,6 +930,16 @@ bool do_attach(const char *name, const char *path, const struct lcr_exec_request - int pipefd[2] = {-1, -1}; - int status = 0; - -+ if (request == NULL) { -+ ERROR("Invalid request"); -+ return false; -+ } -+ -+ if (exit_code == NULL) { -+ ERROR("Invalid exit code"); -+ return false; -+ } -+ - if (pipe(pipefd) != 0) { - ERROR("Failed to create pipe\n"); - return false; -@@ -978,6 +1003,11 @@ void execute_lxc_start(const char *name, const char *path, const struct lcr_star - size_t i = 0; - int nret = 0; - -+ if (request == NULL) { -+ COMMAND_ERROR("Invalid request"); -+ exit(EXIT_FAILURE); -+ } -+ - if (lcr_util_check_inherited(true, -1) != 0) { - COMMAND_ERROR("Close inherited fds failed"); - } -diff --git a/src/runtime/lcrcontainer_extend.c b/src/runtime/lcrcontainer_extend.c -index 8b5a85c..d6b44d1 100644 ---- a/src/runtime/lcrcontainer_extend.c -+++ b/src/runtime/lcrcontainer_extend.c -@@ -425,74 +425,6 @@ cleanup: - return NULL; - } - --static struct lcr_container_info *info_new(struct lcr_container_info **info, size_t *size) --{ -- struct lcr_container_info *m = NULL; -- struct lcr_container_info *n = NULL; -- size_t length = 0; -- int nret = 0; -- -- if (*size > SIZE_MAX / sizeof(struct lcr_container_info) - 1) { -- return NULL; -- } -- -- length = (*size + 1) * sizeof(struct lcr_container_info); -- -- nret = lcr_mem_realloc((void **)&n, length, (void *)(*info), (*size) * sizeof(struct lcr_container_info)); -- if (nret < 0) { -- return NULL; -- } -- -- *info = n; -- m = *info + *size; -- (*size)++; -- -- // *INDENT-OFF* -- *m = (struct lcr_container_info) { -- .name = NULL, .state = NULL, .interface = NULL, .ipv4 = NULL, .ipv6 = NULL, .ram = 0.0, .swap = 0.0, .init = -1 -- }; -- // *INDENT-ON* -- return m; --} -- --static void free_arr(char **array, size_t size) --{ -- size_t i; -- for (i = 0; i < size; i++) { -- free(array[i]); -- array[i] = NULL; -- } -- free(array); --} -- --/* -- * Get a complete list of active containers for a given lcrpath. -- * return Number of containers, or -1 on error. -- **/ --int lcr_list_active_containers(const char *lcrpath, struct lcr_container_info **info_arr) --{ -- char **c = NULL; -- int n = 0; -- int nret = -1; -- size_t info_size = 0; -- const char *path = lcrpath ? lcrpath : LCRPATH; -- -- n = list_active_containers(path, &c, NULL); -- if (n == -1) { -- n = 0; -- } -- -- nret = lcr_containers_info_get(path, info_arr, &info_size, c, n); -- if ((info_arr == NULL) && nret == 0) { -- return -1; -- } else if ((info_arr == NULL) || nret == -1) { -- lcr_containers_info_free(info_arr, info_size); -- return -1; -- } -- -- return (int)info_size; --} -- - bool lcr_delete_with_force(const char *name, const char *lcrpath, bool force) - { - struct lxc_container *c = NULL; -@@ -563,61 +495,6 @@ void lcr_free_config(struct lcr_list *lcr_conf) - } - } - --int lcr_containers_info_get(const char *lcrpath, struct lcr_container_info **info, size_t *size, char **containers, -- int num) --{ -- struct lcr_container_info *in = NULL; -- struct lxc_container *c = NULL; -- int i; -- int nret = -1; -- -- if ((lcrpath == NULL) || num == 0) { -- goto err_out; -- } -- -- for (i = 0; i < num; i++) { -- const char *st = NULL; -- const char *name = containers[i]; -- bool run_flag = true; -- if (name == NULL) { -- continue; -- } -- -- c = lxc_container_without_config_new(name, lcrpath); -- if (c == NULL) { -- continue; -- } -- -- if (!c->is_defined(c)) { -- goto put_container; -- } -- -- st = c->state(c); -- if (st == NULL) { -- st = "UNKNOWN"; -- } -- run_flag = (strcmp(st, "STOPPED") != 0); -- -- /* Now it makes sense to allocate memory */ -- in = info_new(info, size); -- if (in == NULL) { -- goto put_container; -- } -- in->running = run_flag; -- in->name = lcr_util_strdup_s(name); -- in->state = lcr_util_strdup_s(st); -- if (run_flag) { -- in->init = c->init_pid(c); -- } --put_container: -- lxc_container_put(c); -- } -- nret = 0; --err_out: -- free_arr(containers, (size_t)num); -- return nret; --} -- - /* - * Transform container JSON into oci_runtime_spec struct - */ -@@ -627,6 +504,11 @@ bool container_parse(const char *oci_filename, const char *oci_json_data, oci_ru - parser_error err = NULL; - bool ret = true; - -+ if (container == NULL) { -+ ERROR("Invalid container arg"); -+ return false; -+ } -+ - if (oci_json_data == NULL) { - *container = oci_runtime_spec_parse_file(oci_filename, &ctx, &err); - } else { -@@ -683,6 +565,11 @@ struct lcr_list *lcr_oci2lcr(const struct lxc_container *c, oci_runtime_spec *co - { - struct lcr_list *lcr_conf = NULL; - -+ if (container == NULL) { -+ ERROR("Invalid arguments"); -+ return NULL; -+ } -+ - lcr_conf = lcr_util_common_calloc_s(sizeof(*lcr_conf)); - if (lcr_conf == NULL) { - goto out_free; -@@ -776,6 +663,10 @@ static char *escape_string_encode(const char *src) - return NULL; - } - -+ if (len > (SIZE_MAX - 1) / 2) { -+ return NULL; -+ } -+ - dst = lcr_util_common_calloc_s(2 * len + 1); - if (dst == NULL) { - ERROR("Out of memory"); -@@ -874,7 +765,7 @@ cleanup: - return ret; - } - --char *lcr_get_bundle(const char *lcrpath, const char *name) -+static char *lcr_get_bundle(const char *lcrpath, const char *name) - { - size_t len = 0; - int nret = 0; -@@ -932,6 +823,11 @@ bool lcr_save_spec(const char *name, const char *lcrpath, const struct lcr_list - return bret; - } - -+ if (lcr_conf == NULL) { -+ ERROR("Empty lcr conf"); -+ return bret; -+ } -+ - bundle = lcr_get_bundle(path, name); - if (bundle == NULL) { - goto out_free; -diff --git a/src/runtime/lcrcontainer_extend.h b/src/runtime/lcrcontainer_extend.h -index 981a2bb..f524a4a 100644 ---- a/src/runtime/lcrcontainer_extend.h -+++ b/src/runtime/lcrcontainer_extend.h -@@ -44,12 +44,6 @@ struct lcr_list; - } \ - } while (0); - --/* -- * Get a complete list of active containers for a given lcrpath. -- * return Number of containers, or -1 on error. -- */ --int lcr_list_active_containers(const char *lcrpath, struct lcr_container_info **info_arr); -- - /* - * Delete a container - * param name : container name, required. -@@ -82,11 +76,6 @@ struct lcr_list *lcr_oci2lcr(const struct lxc_container *c, oci_runtime_spec *co - */ - bool lcr_save_spec(const char *name, const char *lcrpath, const struct lcr_list *lcr_conf, const char *seccomp_conf); - --int lcr_containers_info_get(const char *lcrpath, struct lcr_container_info **info, size_t *size, char **containers, -- int num); -- --char *lcr_get_bundle(const char *lcrpath, const char *name); -- - bool translate_spec(const struct lxc_container *c, oci_runtime_spec *container); - - #ifdef __cplusplus -diff --git a/src/third_party/go_crc64.c b/src/third_party/go_crc64.c -index a08e07c..d680815 100644 ---- a/src/third_party/go_crc64.c -+++ b/src/third_party/go_crc64.c -@@ -32,10 +32,9 @@ isula_crc_table_t g_iso_crc_table; - static void make_table(isula_crc_table_t *tab, uint64_t poly) - { - uint64_t i, j; -- uint64_t t; - - for (i = 0; i < CRC_COL_LEN; i++) { -- t = i; -+ uint64_t t = i; - for (j = 0; j < CRC_ROW_LEN; j++) { - if ((t & 1) == 1) { - t = (t >> 1) ^ poly; -@@ -50,10 +49,9 @@ static void make_table(isula_crc_table_t *tab, uint64_t poly) - static void make_crc_table(isula_crc_table_t *tab) - { - uint64_t i, j; -- uint64_t crc; - - for (i = 0; i < CRC_COL_LEN; i++) { -- crc = tab->table[0][i]; -+ uint64_t crc = tab->table[0][i]; - for (j = 1; j < CRC_ROW_LEN; j++) { - crc = tab->table[0][(crc&0xff)] ^ (crc >> 8); - tab->table[j][i] = crc; -diff --git a/src/third_party/libocispec/common_c.py b/src/third_party/libocispec/common_c.py -index 8c4f92f..5d6ed70 100644 ---- a/src/third_party/libocispec/common_c.py -+++ b/src/third_party/libocispec/common_c.py -@@ -54,6 +54,14 @@ def generate_json_common_c(out): - - # define MAX_NUM_STR_LEN 21 - -+#if __WORDSIZE == 64 -+// current max user memory for 64-machine is 2^47 B -+#define MAX_MEMORY_SIZE ((size_t)1 << 47) -+#else -+// current max user memory for 32-machine is 2^31 B -+#define MAX_MEMORY_SIZE ((size_t)1 << 31) -+#endif -+ - static yajl_gen_status gen_yajl_val (yajl_val obj, yajl_gen g, parser_error *err); - - static yajl_gen_status gen_yajl_val_obj (yajl_val obj, yajl_gen g, parser_error *err) -@@ -227,15 +235,24 @@ safe_strdup(const char *src) - return dst; - } - --void * --safe_malloc(size_t size) --{ -+void *smart_calloc(size_t count, size_t extra, size_t unit_size) { - void *ret = NULL; -- if (size == 0) -- abort(); -- ret = calloc(1, size); -- if (ret == NULL) -- abort(); -+ if (unit_size == 0) { -+ return NULL; -+ } -+ -+ if (extra > MAX_MEMORY_SIZE || count > MAX_MEMORY_SIZE - extra) { -+ return NULL; -+ } -+ -+ if (count + extra == 0 || count + extra > (MAX_MEMORY_SIZE / unit_size)) { -+ return NULL; -+ } -+ -+ ret = calloc(count + extra, unit_size); -+ if (ret == NULL) { -+ return NULL; -+ } - return ret; - } - -@@ -572,18 +589,18 @@ make_json_map_int_int (yajl_val src, const struct parser_context *ctx, - return NULL; - - len = YAJL_GET_OBJECT_NO_CHECK (src)->len; -- ret = calloc (1, sizeof (*ret)); -+ ret = smart_calloc (1, 0, sizeof (*ret)); - if (ret == NULL) - return NULL; - - ret->len = 0; -- ret->keys = calloc (len + 1, sizeof (int)); -+ ret->keys = smart_calloc (len, 1, sizeof (int)); - if (ret->keys == NULL) - { - return NULL; - } - -- ret->values = calloc (len + 1, sizeof (int)); -+ ret->values = smart_calloc (len, 1, sizeof (int)); - if (ret->values == NULL) - { - return NULL; -@@ -653,10 +670,10 @@ append_json_map_int_int (json_map_int_int * map, int key, int val) - return -1; - - len = map->len + 1; -- keys = calloc (1, len * sizeof (int)); -+ keys = smart_calloc (len, 0, sizeof (int)); - if (keys == NULL) - return -1; -- vals = calloc (1, len * sizeof (int)); -+ vals = smart_calloc (len, 0, sizeof (int)); - if (vals == NULL) - { - return -1; -@@ -760,16 +777,16 @@ make_json_map_int_bool (yajl_val src, const struct parser_context *ctx, - return NULL; - - len = YAJL_GET_OBJECT_NO_CHECK (src)->len; -- ret = calloc (1, sizeof (*ret)); -+ ret = smart_calloc (1, 0, sizeof (*ret)); - if (ret == NULL) - return NULL; - ret->len = 0; -- ret->keys = calloc (len + 1, sizeof (int)); -+ ret->keys = smart_calloc (len, 1, sizeof (int)); - if (ret->keys == NULL) - { - return NULL; - } -- ret->values = calloc (len + 1, sizeof (bool)); -+ ret->values = smart_calloc (len, 1, sizeof (bool)); - if (ret->values == NULL) - { - return NULL; -@@ -832,10 +849,10 @@ append_json_map_int_bool (json_map_int_bool * map, int key, bool val) - return -1; - - len = map->len + 1; -- keys = calloc (len, sizeof (int)); -+ keys = smart_calloc (len, 0, sizeof (int)); - if (keys == NULL) - return -1; -- vals = calloc (len, sizeof (bool)); -+ vals = smart_calloc (len, 0, sizeof (bool)); - if (vals == NULL) - { - return -1; -@@ -945,18 +962,18 @@ make_json_map_int_string (yajl_val src, const struct parser_context *ctx, - - len = YAJL_GET_OBJECT_NO_CHECK (src)->len; - -- ret = calloc (1, sizeof (*ret)); -+ ret = smart_calloc (1, 0, sizeof (*ret)); - if (ret == NULL) - return NULL; - - ret->len = 0; -- ret->keys = calloc (len + 1, sizeof (int)); -+ ret->keys = smart_calloc (len, 1, sizeof (int)); - if (ret->keys == NULL) - { - return NULL; - } - -- ret->values = calloc (len + 1, sizeof (char *)); -+ ret->values = smart_calloc (len, 1, sizeof (char *)); - if (ret->values == NULL) - { - return NULL; -@@ -1111,20 +1128,20 @@ make_json_map_string_int (yajl_val src, const struct parser_context *ctx, - return NULL; - - len = YAJL_GET_OBJECT_NO_CHECK (src)->len; -- ret = calloc (1, sizeof (*ret)); -+ ret = smart_calloc (1, 0, sizeof (*ret)); - if (ret == NULL) - { - *(err) = strdup ("error allocating memory"); - return NULL; - } - ret->len = 0; -- ret->keys = calloc (len + 1, sizeof (char *)); -+ ret->keys = smart_calloc (len, 1, sizeof (char *)); - if (ret->keys == NULL) - { - *(err) = strdup ("error allocating memory"); - return NULL; - } -- ret->values = calloc (len + 1, sizeof (int)); -+ ret->values = smart_calloc (len, 1, sizeof (int)); - if (ret->values == NULL) - { - *(err) = strdup ("error allocating memory"); -@@ -1271,10 +1288,24 @@ make_json_map_string_int64 (yajl_val src, const struct parser_context *ctx, pars - { - size_t i; - size_t len = YAJL_GET_OBJECT (src)->len; -- ret = safe_malloc (sizeof(*ret)); -+ char **keys = NULL; -+ int64_t *vals = NULL; -+ ret = smart_calloc (1, 0, sizeof(*ret)); -+ if (ret == NULL) { -+ return NULL; -+ } -+ keys = smart_calloc (len, 1, sizeof (char *)); -+ if (keys == NULL) { -+ return NULL; -+ } -+ vals = smart_calloc (len, 1, sizeof (int64_t)); -+ if (vals == NULL) { -+ free(keys); -+ return NULL; -+ } - ret->len = len; -- ret->keys = safe_malloc ((len + 1) * sizeof (char *)); -- ret->values = safe_malloc ((len + 1) * sizeof (int64_t)); -+ ret->keys = keys; -+ ret->values = vals; - for (i = 0; i < len; i++) - { - const char *srckey = YAJL_GET_OBJECT (src)->keys[i]; -@@ -1320,8 +1351,15 @@ append_json_map_string_int64 (json_map_string_int64 *map, const char *key, int64 - return -1; - - len = map->len + 1; -- keys = safe_malloc (len * sizeof(char *)); -- vals = safe_malloc (len * sizeof(int64_t)); -+ keys = smart_calloc (len, 0, sizeof(char *)); -+ if (keys == NULL) { -+ return -1; -+ } -+ vals = smart_calloc (len, 0, sizeof(int64_t)); -+ if (vals == NULL) { -+ free(keys); -+ return -1; -+ } - - if (map->len) - { -@@ -1411,17 +1449,17 @@ make_json_map_string_bool (yajl_val src, const struct parser_context *ctx, - if (src == NULL || YAJL_GET_OBJECT (src) == NULL) - return NULL; - -- ret = calloc (1, sizeof (*ret)); -+ ret = smart_calloc (1, 0, sizeof (*ret)); - if (ret == NULL) - return NULL; - ret->len = 0; -- ret->keys = calloc (len + 1, sizeof (char *)); -+ ret->keys = smart_calloc (len, 1, sizeof (char *)); - if (ret->keys == NULL) - { - return NULL; - } - -- ret->values = calloc (len + 1, sizeof (bool)); -+ ret->values = smart_calloc (len, 1, sizeof (bool)); - if (ret->values == NULL) - { - return NULL; -@@ -1478,10 +1516,10 @@ append_json_map_string_bool (json_map_string_bool * map, const char *key, - return -1; - - len = map->len + 1; -- keys = calloc (len, sizeof (char *)); -+ keys = smart_calloc (len, 0, sizeof (char *)); - if (keys == NULL) - return -1; -- vals = calloc (len, sizeof (bool)); -+ vals = smart_calloc (len, 0, sizeof (bool)); - if (vals == NULL) - { - return -1; -@@ -1599,14 +1637,14 @@ make_json_map_string_string (yajl_val src, const struct parser_context *ctx, - - ret->len = 0; - -- ret->keys = calloc (len + 1, sizeof (char *)); -+ ret->keys = smart_calloc (len, 1, sizeof (char *)); - if (ret->keys == NULL) - { - *(err) = strdup ("error allocating memory"); - return NULL; - } - -- ret->values = calloc (len + 1, sizeof (char *)); -+ ret->values = smart_calloc (len, 1, sizeof (char *)); - if (ret->values == NULL) - { - *(err) = strdup ("error allocating memory"); -@@ -1731,12 +1769,12 @@ dup_json_map_string_string(const json_map_string_string *src, json_map_string_st - goto out; - } - -- dest->keys = safe_malloc(src->len * sizeof(char *)); -+ dest->keys = smart_calloc(src->len, 0, sizeof(char *)); - if (dest->keys == NULL) { - ret = -1; - goto out; - } -- dest->values = safe_malloc(src->len * sizeof(char *)); -+ dest->values = smart_calloc(src->len, 0, sizeof(char *)); - if (dest->values == NULL) { - free(dest->keys); - dest->keys = NULL; -@@ -1800,7 +1838,7 @@ json_marshal_string (const char *str, size_t length, - return json_buf; - } - -- json_buf = calloc (1, gen_len + 1); -+ json_buf = smart_calloc (gen_len, 1, 1); - if (json_buf == NULL) - { - *err = strdup ("error allocating memory"); -diff --git a/src/third_party/libocispec/common_h.py b/src/third_party/libocispec/common_h.py -index cefe117..af31013 100644 ---- a/src/third_party/libocispec/common_h.py -+++ b/src/third_party/libocispec/common_h.py -@@ -110,6 +110,8 @@ static inline void ptr_free_function(void *p) { - return stat; \\ - } - -+#define JSON_MAX_SIZE (10LL * 1024LL * 1024LL) -+ - typedef char *parser_error; - - struct parser_context -@@ -130,7 +132,7 @@ yajl_val get_val (yajl_val tree, const char *name, yajl_type type); - - char *safe_strdup(const char *src); - --void *safe_malloc(size_t size); -+void *smart_calloc(size_t count, size_t extra, size_t unit_size); - - int common_safe_double (const char *numstr, double *converted); - -diff --git a/src/third_party/libocispec/sources.py b/src/third_party/libocispec/sources.py -index a85d030..c69cb74 100644 ---- a/src/third_party/libocispec/sources.py -+++ b/src/third_party/libocispec/sources.py -@@ -63,10 +63,10 @@ def parse_map_string_obj(obj, c_file, prefix, obj_typename): - c_file.write(' const char **keys = YAJL_GET_OBJECT_NO_CHECK (tree)->keys;\n') - c_file.write(' yajl_val *values = YAJL_GET_OBJECT_NO_CHECK (tree)->values;\n') - c_file.write(' ret->len = len;\n') -- c_file.write(' ret->keys = calloc (len + 1, sizeof (*ret->keys));\n') -+ c_file.write(' ret->keys = smart_calloc (len, 1, sizeof (*ret->keys));\n') - c_file.write(' if (ret->keys == NULL)\n') - c_file.write(' return NULL;\n') -- c_file.write(' ret->%s = calloc (len + 1, sizeof (*ret->%s));\n' % \ -+ c_file.write(' ret->%s = smart_calloc (len, 1, sizeof (*ret->%s));\n' % \ - (child.fixname, child.fixname)) - c_file.write(' if (ret->%s == NULL)\n' % child.fixname) - c_file.write(' {\n') -@@ -109,14 +109,14 @@ def parse_obj_type_array(obj, c_file, prefix, obj_typename): - c_file.write(' size_t len = YAJL_GET_ARRAY_NO_CHECK (tmp)->len;\n') - c_file.write(' yajl_val *values = YAJL_GET_ARRAY_NO_CHECK (tmp)->values;\n') - c_file.write(' ret->%s_len = len;\n' % (obj.fixname)) -- c_file.write(' ret->%s = calloc (len + 1, sizeof (*ret->%s));\n' % \ -+ c_file.write(' ret->%s = smart_calloc (len, 1, sizeof (*ret->%s));\n' % \ - (obj.fixname, obj.fixname)) - c_file.write(' if (ret->%s == NULL)\n' % obj.fixname) - c_file.write(' {\n') - c_file.write(' return NULL;\n') - c_file.write(' }\n') - if obj.doublearray: -- c_file.write(' ret->%s_item_lens = calloc ( len + 1, sizeof (size_t));\n' -+ c_file.write(' ret->%s_item_lens = smart_calloc ( len, 1, sizeof (size_t));\n' - % (obj.fixname)) - c_file.write(' if (ret->%s_item_lens == NULL)\n' % (obj.fixname)) - c_file.write(' return NULL;\n') -@@ -125,7 +125,7 @@ def parse_obj_type_array(obj, c_file, prefix, obj_typename): - c_file.write(' yajl_val val = values[i];\n') - if obj.doublearray: - c_file.write(' size_t j;\n') -- c_file.write(' ret->%s[i] = calloc ( YAJL_GET_ARRAY_NO_CHECK(val)->len + 1, sizeof (**ret->%s));\n' -+ c_file.write(' ret->%s[i] = smart_calloc ( YAJL_GET_ARRAY_NO_CHECK(val)->len, 1, sizeof (**ret->%s));\n' - % (obj.fixname, obj.fixname)) - c_file.write(' if (ret->%s[i] == NULL)\n' % obj.fixname) - c_file.write(' return NULL;\n') -@@ -158,7 +158,7 @@ def parse_obj_type_array(obj, c_file, prefix, obj_typename): - c_file.write(' {\n') - if obj.doublearray: - c_file.write(' yajl_val *items = YAJL_GET_ARRAY_NO_CHECK(tmp)->values;\n') -- c_file.write(' ret->%s = calloc ( YAJL_GET_ARRAY_NO_CHECK(tmp)->len + 1, sizeof (*ret->%s));\n' -+ c_file.write(' ret->%s = smart_calloc ( YAJL_GET_ARRAY_NO_CHECK(tmp)->len, 1, sizeof (*ret->%s));\n' - % (obj.fixname, obj.fixname)) - c_file.write(' if (ret->%s[i] == NULL)\n' % obj.fixname) - c_file.write(' return NULL;\n') -@@ -194,14 +194,14 @@ def parse_obj_type_array(obj, c_file, prefix, obj_typename): - c_file.write(' size_t len = YAJL_GET_ARRAY_NO_CHECK (tmp)->len;\n') - c_file.write(' yajl_val *values = YAJL_GET_ARRAY_NO_CHECK (tmp)->values;\n') - c_file.write(' ret->%s_len = len;\n' % (obj.fixname)) -- c_file.write(' ret->%s = calloc (len + 1, sizeof (*ret->%s));\n' \ -+ c_file.write(' ret->%s = smart_calloc (len, 1, sizeof (*ret->%s));\n' \ - % (obj.fixname, obj.fixname)) - c_file.write(' if (ret->%s == NULL)\n' % obj.fixname) - c_file.write(' {\n') - c_file.write(' return NULL;\n') - c_file.write(' }\n') - if obj.doublearray: -- c_file.write(' ret->%s_item_lens = calloc ( len + 1, sizeof (size_t));\n' -+ c_file.write(' ret->%s_item_lens = smart_calloc ( len, 1, sizeof (size_t));\n' - % (obj.fixname)) - c_file.write(' if (ret->%s_item_lens == NULL)\n' % (obj.fixname)) - c_file.write(' return NULL;\n') -@@ -209,7 +209,7 @@ def parse_obj_type_array(obj, c_file, prefix, obj_typename): - c_file.write(' {\n') - if obj.doublearray: - c_file.write(' yajl_val *items = YAJL_GET_ARRAY_NO_CHECK(values[i])->values;\n') -- c_file.write(' ret->%s[i] = calloc ( YAJL_GET_ARRAY_NO_CHECK(values[i])->len + 1, sizeof (**ret->%s));\n' -+ c_file.write(' ret->%s[i] = smart_calloc ( YAJL_GET_ARRAY_NO_CHECK(values[i])->len, 1, sizeof (**ret->%s));\n' - % (obj.fixname, obj.fixname)) - c_file.write(' if (ret->%s[i] == NULL)\n' % obj.fixname) - c_file.write(' return NULL;\n') -@@ -344,19 +344,19 @@ def parse_obj_arr_obj(obj, c_file, prefix, obj_typename): - - if (ctx->options & OPT_PARSE_FULLKEY) - { -- resi = calloc (1, sizeof(*tree)); -+ resi = smart_calloc (1, 0, sizeof(*tree)); - if (resi == NULL) - { - return NULL; - } - resi->type = yajl_t_object; -- resi->u.object.keys = calloc (cnt, sizeof (const char *)); -+ resi->u.object.keys = smart_calloc (cnt, 0, sizeof (const char *)); - if (resi->u.object.keys == NULL) - { - yajl_tree_free (resi); - return NULL; - } -- resi->u.object.values = calloc (cnt, sizeof (yajl_val)); -+ resi->u.object.values = smart_calloc (cnt, 0, sizeof (yajl_val)); - if (resi->u.object.values == NULL) - { - yajl_tree_free (resi); -@@ -416,7 +416,7 @@ def parse_json_to_c(obj, c_file, prefix): - c_file.write(" (void) ctx; /* Silence compiler warning. */\n") - c_file.write(" if (tree == NULL)\n") - c_file.write(" return NULL;\n") -- c_file.write(" ret = calloc (1, sizeof (*ret));\n") -+ c_file.write(" ret = smart_calloc (1, 0, sizeof (*ret));\n") - c_file.write(" if (ret == NULL)\n") - c_file.write(" return NULL;\n") - if obj.typ == 'mapStringObject': -@@ -832,7 +832,7 @@ def read_val_generator(c_file, level, src, dest, typ, keyname, obj_typename): - c_file.write('%syajl_val val = %s;\n' % (' ' * (level), src)) - c_file.write('%sif (val != NULL)\n' % (' ' * (level))) - c_file.write('%s {\n' % (' ' * (level))) -- c_file.write('%s%s = calloc (1, sizeof (%s));\n' % -+ c_file.write('%s%s = smart_calloc (1, 0, sizeof (%s));\n' % - (' ' * (level + 1), dest, helpers.get_map_c_types(num_type))) - c_file.write('%sif (%s == NULL)\n' % (' ' * (level + 1), dest)) - c_file.write('%s return NULL;\n' % (' ' * (level + 1))) -@@ -867,7 +867,7 @@ def read_val_generator(c_file, level, src, dest, typ, keyname, obj_typename): - c_file.write('%syajl_val val = %s;\n' % (' ' * (level), src)) - c_file.write('%sif (val != NULL)\n' % (' ' * (level))) - c_file.write('%s {\n' % (' ' * (level))) -- c_file.write('%s%s = calloc (1, sizeof (bool));\n' % (' ' * (level + 1), dest)) -+ c_file.write('%s%s = smart_calloc (1, 0, sizeof (bool));\n' % (' ' * (level + 1), dest)) - c_file.write('%sif (%s == NULL)\n' % (' ' * (level + 1), dest)) - c_file.write('%s return NULL;\n' % (' ' * (level + 1))) - c_file.write('%s*(%s) = YAJL_IS_TRUE(val);\n' % (' ' * (level + 1), dest)) -@@ -878,7 +878,7 @@ def read_val_generator(c_file, level, src, dest, typ, keyname, obj_typename): - % (' ' * (level + 1), keyname)) - c_file.write('%sif (val != NULL)\n' % (' ' * (level + 1))) - c_file.write('%s {\n' % (' ' * (level + 1))) -- c_file.write('%s%s = calloc (1, sizeof (bool));\n' % (' ' * (level + 2), dest)) -+ c_file.write('%s%s = smart_calloc (1, 0, sizeof (bool));\n' % (' ' * (level + 2), dest)) - c_file.write('%sif (%s == NULL)\n' % (' ' * (level + 2), dest)) - c_file.write('%s return NULL;\n' % (' ' * (level + 2))) - c_file.write('%s*(%s) = YAJL_IS_TRUE(val);\n' % (' ' * (level + 2), dest)) -@@ -1163,17 +1163,17 @@ define_cleaner_function (%s *, free_%s)\n - alen = YAJL_GET_ARRAY_NO_CHECK (tree)->len; - if (alen == 0) - return NULL; -- ptr = calloc (1, sizeof (%s)); -+ ptr = smart_calloc (1, 0, sizeof (%s)); - if (ptr == NULL) - return NULL; -- ptr->items = calloc (alen + 1, sizeof(*ptr->items)); -+ ptr->items = smart_calloc (alen, 1, sizeof(*ptr->items)); - if (ptr->items == NULL) - return NULL; - ptr->len = alen; - """ % (typename, typename, typename, typename, typename, typename, typename)) - - if obj.doublearray: -- c_file.write(' ptr->subitem_lens = calloc ( alen + 1, sizeof (size_t));\n') -+ c_file.write(' ptr->subitem_lens = smart_calloc ( alen, 1, sizeof (size_t));\n') - c_file.write(' if (ptr->subitem_lens == NULL)\n') - c_file.write(' return NULL;') - -@@ -1191,7 +1191,7 @@ define_cleaner_function (%s *, free_%s)\n - - if obj.doublearray: - c_file.write(' size_t j;\n') -- c_file.write(' ptr->items[i] = calloc ( YAJL_GET_ARRAY_NO_CHECK(work)->len + 1, sizeof (**ptr->items));\n') -+ c_file.write(' ptr->items[i] = smart_calloc ( YAJL_GET_ARRAY_NO_CHECK(work)->len, 1, sizeof (**ptr->items));\n') - c_file.write(' if (ptr->items[i] == NULL)\n') - c_file.write(' return NULL;\n') - c_file.write(' yajl_val *tmps = YAJL_GET_ARRAY_NO_CHECK(work)->values;\n') -@@ -1220,7 +1220,7 @@ define_cleaner_function (%s *, free_%s)\n - c_file.write(' break;\n') - else: - if obj.doublearray: -- c_file.write(' ptr->items[i] = calloc ( YAJL_GET_ARRAY_NO_CHECK(work)->len + 1, sizeof (**ptr->items));\n') -+ c_file.write(' ptr->items[i] = smart_calloc ( YAJL_GET_ARRAY_NO_CHECK(work)->len, 1, sizeof (**ptr->items));\n') - c_file.write(' if (ptr->items[i] == NULL)\n') - c_file.write(' return NULL;\n') - c_file.write(' size_t j;\n') -@@ -1537,6 +1537,13 @@ define_cleaner_function (yajl_val, yajl_tree_free) - return NULL; - - *err = NULL; -+ if (strlen(jsondata) >= JSON_MAX_SIZE) { -+ if (asprintf(err, "cannot parse the data with length exceeding %%llu", JSON_MAX_SIZE) < 0) { -+ *err = safe_strdup("error allocating memory"); -+ } -+ return NULL; -+ } -+ - if (ctx == NULL) - ctx = (const struct parser_context *)(&tmp_ctx); - -@@ -1601,7 +1608,7 @@ char * - return json_buf; - } - -- json_buf = calloc (1, gen_len + 1); -+ json_buf = smart_calloc (gen_len, 1, 1); - if (json_buf == NULL) - { - *err = strdup ("Cannot allocate memory"); -diff --git a/src/utils/utils_buffer.c b/src/utils/utils_buffer.c -index da34991..05253ad 100644 ---- a/src/utils/utils_buffer.c -+++ b/src/utils/utils_buffer.c -@@ -104,6 +104,10 @@ static int buffer_append(isula_buffer *buf, const char *append, size_t length) - return 0; - } - -+ if (length == SIZE_MAX) { -+ return -1; -+ } -+ - desired_length = length + 1; - if (!buffer_has_space(buf, desired_length)) { - if (buffer_grow(buf, desired_length) != 0) { -diff --git a/src/utils/utils_cgroup.c b/src/utils/utils_cgroup.c -index e4dde72..bd3bc42 100644 ---- a/src/utils/utils_cgroup.c -+++ b/src/utils/utils_cgroup.c -@@ -29,6 +29,11 @@ - /* swap in oci is memoy+swap, so here we need to get real swap */ - int lcr_util_get_real_swap(int64_t memory, int64_t memory_swap, int64_t *swap) - { -+ if (swap == NULL) { -+ ERROR("empty swap pointer"); -+ return -1; -+ } -+ - if (memory == -1 && memory_swap == 0) { - *swap = -1; // -1 is max - return 0; -diff --git a/tests/fuzz/log_fuzz.cc b/tests/fuzz/log_fuzz.cc -index a8f80d4..4128ff6 100644 ---- a/tests/fuzz/log_fuzz.cc -+++ b/tests/fuzz/log_fuzz.cc -@@ -40,7 +40,6 @@ extern "C" void testLog(struct isula_libutils_log_config *conf) - - extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) - { -- const char *default_name = "iSula"; - struct isula_libutils_log_config tconf = {0}; - std::string testData(reinterpret_cast(data), size); - std::vector ret_vec; -@@ -67,6 +66,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) - tconf.driver = ret_vec[4].c_str(); - } - } else { -+ const char *default_name = "iSula"; - isula_libutils_default_log_config(default_name, &tconf); - } - --- -2.34.1 - diff --git a/0008-266-set-env-to-avoid-invoke-lxc-binary-directly.patch b/0008-266-set-env-to-avoid-invoke-lxc-binary-directly.patch deleted file mode 100644 index d7e998f..0000000 --- a/0008-266-set-env-to-avoid-invoke-lxc-binary-directly.patch +++ /dev/null @@ -1,30 +0,0 @@ -From ac0e25d39dc0eaaf492ea626e1c1bbf3b5f2999f Mon Sep 17 00:00:00 2001 -From: jake -Date: Mon, 18 Sep 2023 11:08:22 +0000 -Subject: [PATCH 8/8] !266 set env to avoid invoke lxc binary directly * set - env to avoid invoke lxc binary directly - ---- - src/runtime/lcrcontainer.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/src/runtime/lcrcontainer.c b/src/runtime/lcrcontainer.c -index 4270902..ad6dc66 100644 ---- a/src/runtime/lcrcontainer.c -+++ b/src/runtime/lcrcontainer.c -@@ -289,6 +289,12 @@ bool lcr_start(const struct lcr_start_request *request) - close(pipefd[0]); - dup2(pipefd[1], 2); - -+ // should set LXC_MEMFD_REXEC=1 before lxc_start -+ // to improve the security of launching containers -+ if (setenv("LXC_MEMFD_REXEC", "1", true) != 0) { -+ exit(1); -+ } -+ - execute_lxc_start(request->name, path, request); - } - --- -2.34.1 - diff --git a/lcr.spec b/lcr.spec index b9eb326..6975d24 100644 --- a/lcr.spec +++ b/lcr.spec @@ -1,5 +1,5 @@ -%global _version 2.1.2 -%global _release 3 +%global _version 2.1.3 +%global _release 1 %global _inner_name isula_libutils %global enable_lxc 0 @@ -13,14 +13,12 @@ Group: Applications/System License: LGPLv2.1+ BuildRoot: %{_tmppath}/lcr-%{version} -Patch0001: 0001-support-check-symbols-and-compile-code-in-cmake.patch -Patch0002: 0002-remove-unnecessary-strerror.patch -Patch0003: 0003-improve-code-of-function-in-log.patch -Patch0004: 0004-support-visibility-of-compiler.patch -Patch0005: 0005-refactor-util-buffer-and-add-ut.patch -Patch0006: 0006-264-Support-both-C-11-and-C-17.patch -Patch0007: 0007-262-Fix-empty-pointer-and-overflow.patch -Patch0008: 0008-266-set-env-to-avoid-invoke-lxc-binary-directly.patch +Patch0001: 0001-280-Add-masked-and-readonly-path-in-host-config.patch +Patch0002: 0002-279-sanbox-del-containers-in-metadata.patch +Patch0003: 0003-add-function-to-transfer-of-ownership.patch +Patch0004: 0004-283-network-support-version-opt-result.patch +Patch0005: 0005-add-attach-fd-for-process-state-and-add-needed-util-.patch +Patch0006: 0006-add-unit-test-for-util-function.patch %define lxcver_lower 4.0.3-2022102400 %define lxcver_upper 5.0.3 @@ -130,6 +128,12 @@ rm -rf %{buildroot} %{_includedir}/lcr/utils_compile.h %changelog +* Tue Nov 14 2023 jikai - 2.1.3-1 +- Type:enhancement +- CVE:NA +- SUG:NA +- DESC:sync from upstream + * Tue Sep 19 2023 jikai - 2.1.2-3 - Type:bugfix - CVE:NA diff --git a/v2.1.2.tar.gz b/v2.1.2.tar.gz deleted file mode 100644 index 5a644720f941dec3449fd31b5522d3022bb625d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 139900 zcmV(|K+(S+iwFP!000001MFM-bK5wQo?nMm{vUA8RE@nW%CTcRndGuJiY(izk!7DG z=TTc*DvE?8#uUNf!?N}^_qX5I4e+5y98V^hy}J!-CYC^;(dg&b02DcQ!%3h64>FwC^7t9UOc&`3k(OJz0`EF{X@_ zO7H9UsrRdk`#pzO^iId8?v#2N2 zFE+;~^nZAKuonN14)+hf#s5FxdGv34BR||5Imy&|^kp8a z&RqIpAl+%G0yXhvQm=_l>ea=;)vZUu7Jfeq98UzkE5k&3 zA`4NZigYT)1zv>Ws^1YXVD9@)Wx_>UmPqvQ6OpKKI(K3z9M@H`=Z6!KDjuB5c$Nq! z^ickU9)OPu6QRcU5S}>;p+>3Whr+?2XhGepU4@fA=ic;8(=>X%w`bU{yDD*mx{4=t zH{9bv7<0hA2j}g+=wF@=-ZXkGfzMaH%h&Cb)`__6ibhv#H~MJZ7OxupcE2Xxv7ZnJZJ((ay# zS0K{89EeW)qCLQDgG+qv+U@RX53gGnt?r;EE?T|jIi_j6YIoX$cOWND+XHcmzYTHK z=ndM<>rO+@adq9hy6m^K#QIXM$x@6}EM~x$!jq6=kkqxQoXEtD{fKn%Jc`vV;D<0_ zNVrq!-az3rG|I?Gagj?jzP13ydX*JZA&5_YdrY$6w6C zEwV)07u(4rqv%*hs;(j#$}EsEX`0_8`Ku{AfE%dHgE7qZims0)+hR|q?%pDs)v0Sz z_xNp#2~mq>dEr=Ok%#37d!fJjAp#fVVJ}3q!1BW-KpTWfj>%>3g|Chg*id~ zI!&XTejK^{j~xZs1T5+=hFYvrHOj{2P&bQfh!K_!kak&zvZd zv1ubQ+mRC|MGJ-{5)MC$DpNU8^=;sX*g#0RWLsiS1lVo`gm{8M-nNW0=15wso&N5ZkxLzGXps zPYSKhWTHY5`r&)WvRqI6w`IjMVaG7~JJ(_k0);tq8$*kfY*Q=AsRXJrM@5K*0 zA#B&(U450WVI%90%(_hen)~ULouOQlS&8m&uTD#S>dqCFn$at&d5|pH-Tt7_=?sx5 zPTOy_vR33#eC?mNFNUuVUS6J_K3qtjkOuO6I?jSsC7TufK0SYAZH+E1rhU;kYYjW? zSB+ld9WQC)I*Z1$-c^%ZK5OZv=`L|j{vzzxo5uW+_^*opFR-4D4>zu-clTo5-}v0W z|Fge;_~hvt{y#W;{0;yA0na0{%;!P_0pz~ei5CpE*bOa!c~L>~?nWe!9u+YE_+wxm zq%=@V2qvE!tS0_F@G}6ngQq`hj6@OdFWh@T5I*M#AIC93We(|Ih=oD>vGicHu|LWH zkKjoF^?M4)5Kt2sXF*M6(V%g^0s3d%YtfMjI231yu(1<}t84_!j=>#`+=Y_>ccLws z0`iR(Jnobj>F2e@sRDV2(CZ5!5!fWneJkSxEds8U&t@pr1f;v;q{M$L6vN(KFuf1~ z@LimbtZx)Sxl#nmkjYMw9q<7JvCz2>(T^lmKnSfhj=O15GfV|hOI0!4eB|OKJ z{8<$EAdFSTPMA`G0|Kih0Juj9(52#HwG1dq08!w7h?s=ANyvqWHkxT$qLWTq5$Fp6_!g?PCgw46ZC)BKX%|#V{i1vdU6}gOJ~}z! z4N#=$r|1q6r~Vk^PXndmns}v>l)7Iugh2JN|JdGt@_1i}>wW`k(`jos^Fx1@&4yIb z_%LFz^SagRw~@sT>d$s9q?Gs4h10=7cP&dBO3`H-xQkpjH~8N`-($c|r`a186gcYR4S=aX-YKWxWLi#uy1-azIfw4DG6UgR$Mc3BuwSSv z>YZ(SBJ9gevlKW(Y|GFY1+du^6P%u+iyyi{=E)tF)1DrX)cM=mTd+CglsX&-&ZN={ zY$C-MNZ_R1BNkZ-%gw`+)@kFqGY~)g*UFm@U^__U&Zh=$!=S25e5A`(gZkOt^j?EL zVoz3h5v-fI5R>J3rDV*+R|2F#Aboux_6pdm6?iW>kE&S(^)K5{5F(3vj6 z!PH5nxueWgd_x-`F#XV-TJlc12qQy6E^wb6EU|fcanb0WaDf9#x~LN8t;PvnzParE z((azox?9b`W$zutrLk7?y4P!U2gCm5b+6fCxuHMe&DHf__`1<+lcL30doZL4@aMeI zKQDX0ih#)ny#~Sy=)XB{4_f`JMzdw@Qmv3U6A3f2MZPBAdoH#y`3gbk%38HP`veBh zV1GMjb{QCc*t>O5B>AH~SUNPgfxzY20|=+)^D&rf6oi|=%E-1fof`w^- zoW*iDM(wy`eZPH=@b`4@`n2wc+m)`b+TBL)UD>7Rw{89ADX`jlh7WmlevM44nG)C&lnDqif|HxG(s_M{Ag7utz%j<`uaMY=^yRb- zbLKz=N6brv=H+W00ntXgYKGhEcIRX`cz4yR1j`dTOf&J4p4`ZhnY*+xr#no@SAk$; zo&=HADFnc|0W0QH+S%cJmr_SMw=4J-v}qKl36KV%k-48#-qAMZh-z2Ibu)~XhLb$5 z(B}&zca%swu=K%oUu?H@fG%jz)(W(krv*KTg>?x*QE}BAUS172%Ru~jqi*^j>@k84 znSt%ZZi278Lsd|>$2U?&HgI|ByY@H>UA;SN+Win|SC;J?r+@qQ^BE{2`I2rc%5L-< z-FpS)B!HzGh172ic4)X^rBCctz7uO0izx7S`4W~4^qf?hY}hn0S$P#ITOlgi}4xs7frV}SNEr`D!<--YNxpUFFK$7D;Jj@egw*iHV zTPK*r=vvy{hQ6hOZ99z}SK96rASIUJ%LOVX+YY32V{_(z38WqrUPuNsBzuHg@06hG z!6A+J;g(=RzD-5{lhG6W;FcYVWPS08@NIp6(&`WJj@@YuBjq6I!(MbV(NSJpwR#ur zexKKW`KHS_rg36EzUd*si?iP4^_6bcA9XWO1}u}C^~cuRR`Yt$+I=w3Wjgp@$v863 zUYv!gKa(V1%u6Rq0DseEc8zuJY4E>J19eOcV}*H_7iK2UwKkAocfAVmLb_6p8Bkw^3RLy;Z|w>JOk- zWPD}}SYpsTr-ToHIcW8es{RBlwuyZwOQ9M>j4+EH$oV7TDU`NC-Vqcq`#YhU8?>XR zunbrkGWiOpD(+ecLvzG z8S3iUFm>Vy!fv^avUVvZ)8CO$uht5cPcl%3&wuvz+*f}p`@d$lFI`>iiG$Nl^N$A`xU$7}olFqm)q|9`+E)*jwaMP1YCiL(}P4{C#} z>sK%eVGLu-S|7yE>vGS#CQjuj&S=+q|EHgR+OjZc`9=_$(TiSwbUR&dw_@b)*>A=0 z7D}cCoviwah-8d%iMGg6rT3Ak;;$SapzjE?&*-Hu6Ab75Gu}1UyUCt%Gy1_qjrZ2w zsS|RoPFquyVp9UzYA(Gxt@^LLgOC4c3vTSk32m(*lhXx~{EQ$!A27SvSDiZYACXCj zML;Ry!qFs>%q1kG;-&p>b3m}XuU;z;A!=eucMm{@hUCp*HXC6=^8UZEhVFT;V(H9K zn&^H5+I7^kBxd^_3oCD1@m_x7PeLu{lnzQAy3Rvq9$OY2qm}* zjI)d++!Q3>nUKU}Q7{?uVHuSyz6;PBV|J3~hD}w8p5|F-9D-5wm3JzN3ukf)t%=5$(C3Om|=C!$JCPj?h3Qi(RQV4OPsC zsKC=(7KJb~68;0_SH@B&G0jn3V;yCTy>0D^5&8r16v zD9GsO#YSt6ax3d8I5rnZi2{iP5>O*PN9C=r{EW9;P7PC*%$W-XJRiQ#wyf2ugfpg7 zdMu3h-Pt1wvPB;lI_=fc4lufrOJFe#v=)3OQ#I!)jPdD<3Cs)FxC!-JKR5F{e928d zpylC+bgt|qm64c1xypMkcJ_BkHEw~tI7bvhBQ|#qxQiMi;2B@2CbId|cc*LyiPnUi zIKh_1Fe+gbVQ^HfYIOPvMsBJV$*jAwbU?r2nC#CSesX_CI3WNhXagiRk&{e8YP?lm zR~VZF!%-)n5Ml?8V$Y~*h-{wO^Yyh3O2GsX>AaWa5;=*^C$&}kH|H^=B4UKBzc3$; z<^~4pT;~HEA~hJywPbC@+bv7y-8xRv|e6v6=C_8S8Zf zwE_ag%FA5ci@hZ`n^T%4Sk$U;BIU(Iiq=bL3w00)eM+~cb9SwutNQdq^7C3y|7B*26`Wb!NwqbNc-OXPVKeBquv%|Y1B%fc@u1rSv5qcS`km+dfz}*XA!m~hbIs~rZ^4w(DZATngm>y9mq649y z6`&v((6NE>Rh`nUj8-lPG!wEd;fLPNqxF(OmH@9tM#X18#VsU?**TC}L&rG=sc!jCIAPhu5RTHy=60@F*xuNhsTp-bi95t3oWJOJ)#Bg!bPE`dc-MLu&e9SIWj zBxh({%5iRBpf*)W5!`fNbP82yFQJes4s;4rE)qxEm7*@NQT|uEK4}7JG!Fq z%I>sc82-rD;4`-&L}s3Yq9-UY`ZQLpd(+G+zJWX;=h(k>*vif5B8rqjZBUWy$FwNY z+zX7X5-K03g~U_{R(w-9Kxclu%=?%|(El!7kBWUKhoP`>!@_cnvt_L?kWb6Ey8`E~ zq(tg1_*hQt9NkwE228}&xT9hs)NNaHu>G-OVkBKh7czi<3RXe=*?LU=$pg@jNr}Lb z)Hj;$>iQ~mx`7>uSC>l+EH2s+3M&qSNzTboe@>RHg>}E5{ zCa4ECVN@_06XVK7;YOIbrVTZ}n&60>l!5hRoG#FgV``5%v5`{h0-_G|nmKzc$BRXo zY<&vckT1&&>afR-OTZpXdQR-s8Ib^p`0`f&a;&zlgEIb`{hhoZty(M4hBo#w|4s>U zkcv}X(sEKHk_7@2Y>^Cm9Yp*0YDC*Sv^+RwM)0HHqN=5~&L&i)n~<)t5NeAw;JRZ% zQW((&0o+dq$7NWQm$gt^Zln|qSYj0`x_1l1=oZ`<2L?9~+%h!G7+zG0^#Xu}#p1TC zLdN?18#ac*MDlf5vq=U0Mp8wAEQtnG{ECtC7K~1oT&})ibL&jyiLhDho{LKHP)!4<98iPZ=ppeEVs4xI`mT{QH+B|c%YGPBcMyV zlj*0`K^DNl%|x~`e{5Nduzt(~T#fvJO%LO$wHXIO?MiuK)b5jz$(HF+-)7cQo0^Tu zJb3CFpJW27q~2f@qKdQ7faRPrr%=pPpzzi0(B+C@N;*MUC`zT3-)=HqKpg_2l~Tm) zeC1f*HHl4;2g63L=of|oL*SI~oUsp@K1VVx??lZd!G$ero09bMR+BO4ZDz<3x(BZ` zON@8tU33`d{hApEd_MgDANJn0IgaEy5Y^Z12>yp$%uEa*bvOC}GysmM7!YWZtpNeJ z0n7|-DS8Us)r}ffSGDQ^5HrCD`6>CXEP1_N@2=LdYx`dBDt7IWKHRk>jb#0pOL9h^ z{1@(dWM*YmcjG};QIbuBGz6+DPo6w^^5l8t$&j}`+V)WgRf?0Tf}ns`xt?Txf-JgG zI#&C&IWfip)2b3szdGB)do^$WVY_?(Kwx}zYj1bE!o607xGA)t}=ZDY!M8!O8mTCf8XeXiL zYvNk{Bu_uFd)Y7$=yfrjpw373fP@otYMo0jzTAe)RQu`k15#VPcttL<3m^6ifUyu6 zgI`#J`Dk0DjL`#HzA~)~bKFC*0Ot0Bk^+=s%xpHcEgEqjnAq+sB~#NZ$(NHx_`r%R zB%D1VO*Ql>l;8_u9`Drl(5fY8vZ4RtgviCBB;k$HB2%4A8?;Vnq2l66^+_Er(FOx- zE;!GaWT>%}7v$<*D6@CA%pTW-1yE0&#Rs^$Zj=}i6g|hdFlSDc5)`y2Pp?~yAEYSC zM>kTk4Xr`%+*HU340VBuyW%d_I=iVPB{>W&bguBnl1J4hY=VYa@dGu14r~b$1s#II z@#1ut!b{Jqb~FyyM~;{P#erZ0RO>yWBs05fd7~J#Cm_Y*J&+}!8KM)btYIJyDCA`} z$v~eCAq7Id_w)h~3noSj)g_+Tg@eSeydZ69q5%^)ViAsxbvCufW@|4yN0bey3p%?Vvc5*nF!aN?GXIl?fKG>j%EL?9g=s5i6L)QP5c`rDDUo!}u9hMb z`P0eIl5!IyBIhmkP?4$^MBHlWn?Sdl<7&O7D7RZ2(Fo4wgU&TGA@D@a@+2KQ$ZaRATl;Kwg*lOYMwON21d9EX*>Z{+>b+-5dm2r_>%xx9-hdvZb$<1 z%u0M=3=~0mY$4xXkALI4zasW<2X`<$)Yw9Vl}QD?Y=C9R5SqXl&b*E+Gd(=MH1D*c(Lu=Qweg{+YfWQLiC zT$5Fxu^232SPj_R>SH+aTb|ul%I3Cbg#;lOQL>GS$I!tSvkgPR92@V{e~8;qgrA(JB9N9C`ThVaZ-5A} zheJ$>1%wUrw=Chv^np_{OVR@%iy8Mk8l==w4Z0XqDW^~b?!izFoA}aajvfhIk|Av; z=yaobr0tgw!Prb3Pj9opKizzRMF-^4j8O|QuL1-a=Bc}WY--ixB zftE{5_oenjb_c^K(RWcH^@rjZ*^O7WPso%Gz8u6@iiI$041_%Cs+?io`BdwQW+0Q{ znA1qXQc8_}&6Y4NbamFoa&M||-$nE1NGA-Fgkd0E(y-;^&7vRcy@xUffQB~a2sy!* zn^#(HAy@N?r|355m`F_cfQBe(CD$%S7O4$ucGDgLCAWD4!qD}x@&yAp%ArC%FUZUs zejK7Xh>{9>2+8+_!Dx`Dr*(1MnSD4s~Pzl&t<^(mUP~Fk2@o zE+G3NQ}+g*BM#Urr&2;pBWM=Q&G;6X(d@@KRlGP$HKBobFl55oK^cT0CLfJPNG%0f z*}F6rik!~?Wu$aygF+eF7br(d__rlaeK#Jx`D|UH9op<0JBnBZ^&^y=_IwoHe zRvkkhnxSH#%;hluxg3`QuaGlR@v2KgY_r&8t;9Q5p%a<=>Z!yxNlM8BduaU7_|%6O zj~H++q%mzuDmX!46CSvyknu~X@h9Pxsh#r6x-Q!Du$#-U78@XBf2G}H5;eI=$!^Ug zS!ozKp{!DpY!xb%gji5Xd3NLuY$=RQ`<}Qq6RF@`DPsk!Tx@`6Wq~EMV-9GSj>n_c zz?!zQavDqIYv(L8l~b9xJ<0OAQJQZig`!RfH3S(;vuvfl%%!2+N-e&$SD^0)oMA|r zBV!C?dU#ma8n9N8I1OY%*Nu|e?k@In&qL9tV2BiRd??Eb92K<09Wlw9Mju+r4uXZ5 z-4aaVDc;8HAGDpxXr-ig#TppvqpTkzBZVCQa$)LbsFR&qF6lfe2)yo7&OxP9k+wn5 z;Md3rhmQ2?7#bdJd|55UB(f~2BLjD)k!E=5#uJ+Y0|rhCO4?yzl1I{TwJJ8#oUdac zo}bAeF6)h^ z!wqG3dszT zl+d2RIGF{S_Ny}U!H5zcu{^?qK4P?ulam^_YRD(%Matyls1Mm~ zLgml0(s^D;5D@Pe!W25wpWQ7ABR-Ho(Q!IH!qz$_fLLdV)Ma+qJ1HCpN zS0@^0W7t;$H1jBW2$LW8qnMJo&T)CM=U5&^k{*q4OwkpqANZm1fa`UD%+^7|MKm$+ zAsHlO=wQ;0?Tw<7C2f1AeEN(s0CAX|W6umcWGyD1Hr9ny%AL6wS?HjW*iKkD9jQY- z#o#iE_GDJ4mZF@g%YFisKpFj@rQ&0Ik*vm2&QAOVlA^2}%Tqhf+*NRaN45prunGHt zJ#XCF=Ya0nS%WEK^pyz=eM4(UAB zo^?JDM+pyl_qndnmbrhJC#`lLlLB)jaCur~l$6q%ogy{+=}&y8KjrsMri2qCGifQA zXejG=q+C&YqJPF`viNWT>i6VY7y&g{-627(YX?oc?9F(GKHQOYcr(G0*iXtYEeDZs zz9ZwFxP3>-`5u$r%5Oxdr}m$;Z^b+|B0Y4o!#R8`L?H#sB4%ZeSehJtP6!Izc{mlP zGEG+*>gM501+*0T^&rMRTkz?GE{iQ#K3mCruPl8^rIHLiXB2!eL1Q%VK@i&%wTX<= zPi7osQyBuuoLpiJaMO!Sf~m14Iq1qYtz!>#*5wR6FKX5`9x^#(u3f<}X4?}>6v&&F ziYcv%r3-_}F6#0OGE9v*5fcn#N>?F=kJ~&-$PKK`>FBwv5 zUqcb^;n}{BO+3`EjyeBP9dY9Q$ndpGbdn57JqDv=wJlPJ?ub%4!`NXGq|@rf*v5f4 z;W(8yo&=i9 zP%g{RK%g={WhB8+*kuMsQeRiALgd4UQrfycmZexd2^}Hxz;9}6ou50Yb7Y)h5@jQ% zkVz;+4B~gPG-Yz(6gVeTVKJEqQz7{ikz+|OIm5jc8G^}@hCF^}hCt^DF-yCj$$&3o zp)E(A$&pJI56<%$C0m@^7HXcD?W_(dlI_ld7e^y)3>CsPPvaPIsg_k%iUy}F$rvlx z(U|V5SC%Ii5#K!_!*^O)G!3Loq;+P@L5jFbJsk*UuD6483oi6>@X)dp(4?8=_t5Cu zOIXr@Wtu5i$QLS?#O$iPp{@2E)sG(}?kqYarvT7`A`%j8%XAk~!k3p?8-^z)okKR$ zBu-NN%q^dC`Y>iqXO|<6(dvY6JaoXY@x&R6YbA7$~_7QcFb;Fq|H*YM#t8N9Bdhb zVnDmVqLkf$_(MDJY*$)wsD&(PyDO8O1fPM@I%$k7lzqhy6ikCg07+qH7xQ(294 zb7iD*_U#FJ+O<4!!j$ig3quUR^i#>zq)!>g1Eu=Tu652@vLmEPayE=W%Mhj_?TwO^ zl1$mLYoC>Y0!Mo=yHQ31$hU{P-m%Y=Pcq^Y17su(RBx8!C=&velvztW*zBCtdkH5Q z=t0q${OK@OqOzlFta5x_;S4}@*I;g+YaR`e_!0A{(5Ccw8Qmf6<~Wn4%%xBfj39I8A4;}0kv2)>gh@?Qd5SsGxr@_|_kpie@iYHYbzG<7yIOsU zPBPWXNy@U>LW>Xhddo%&j3N*mf{#?;;Urs2$?%Ha(u z$xo}I%7N!Z+35Vt%rh$5L3*!Ledu5lCXzdH3F!rjtI{Boxe;g*%kiuyD~CB2gJ7(y zgEmhAFJ@WN&~b?6R6y5Ga~aEZl=XlvX6w7>3F9bYr_DT!+u*T{F|QIp$ZUViBtN25p15 zRHlI@=7Xwn;^-U++yE4EwC5-_lmvxBffJulNYU|XGVL5ZS16};gQr&I$7sC(f@Z2T7Ll_ zf;(}Jok)9bbu|x}YBN2gbg~tCR2U~ZRcm_fGs)YFGE;Q^HnGHx30Qb&(#c9njDaOn zakB{o11w}DLo%vD(shn%G0u7b>18LgO^xgjT>zzCs|q?wLuMSOL|+u#y=>g9V#;z4 znH441LP$P(qXI$1c?9~HHooFIGTGV~#@bGXYa&TucJe_)diR+@#i~e&HD}C~9I!+~ z97J?jDy4AlB3Z1$mC8rb*#P2p>gto)?%d5+BBc5ovyWe#6N3;W7@G2r@+D$yQ$tN(_QLwWz$_$LA6+I$Z~->tk&CbQ#L` zC8Y!_RZ;n1QkPAd(uw@&yw)+Ts*hSE71~lJ+Wf{zr5vS#n!1-d@x}3M)Bwk^3(MH% zLjatu4tvi?W_Bl{JV_j)c#kG2$iav;1EZac+)Pa+DYS}D=PXQ%(!jH)cAcRv?SUGj z+*PRh3PrrQ07T%QTW)mD=XQ;yKYf;zBqV1m;bOrZPMw~R`7Anifs)(Pe?=z&g$iLP zJW3W$6gQJ)?T{$|FGXWg|Fuip+!S>&e;-%qFu)y7=iAX-UoZmBgPRf4H zTJzX}g5@eaUZ*xE($f4=I*D0D%{aHuLh#sf6IpMY@Xcy_l#V7-P|eShOxKw$C})P4 zX}VxQCzac%Qj=#SH^LOfa!04XSPZD4NpELhSb{bl^<+;!B}S@hUotC_T}}>NeZ){m zAK_2mN_VdgK8H9$14nhjgST8hL^cW}Oj455wIR&OmPWQpXobeO5Ky?t(m$M^m6T*a z1)@&|zSNjo5(=yN@E2zMDPRR>&;jj9pCvOghLMtDNJgL)(@1gX+^ z8eN59BA+Chd?H()uvM~A?v*T`DNrZ#YSW9zWLe7BLu9cdSJk3AlZgt)Knwd+)~YzR zr?)cRdBbQ*Zp&S;QB@(W>>0mhDmF8HwkJwwOm!dME&=SftI zT1v+*OK(GmnL0a-(vn;c>0@p)^nQxf4p0m9$fk4pF!3WB{cDpG$}mWc(l}!ZyPga^ zv4qxxDPy*l^xBwhQx#qLP$3^tp?F zFOxFt(8sgcOad-9Fa!qkm>3+2Q#WdEO%Vq7mm8BtmrPpOP@wW)&}Iv^9M6ueYlsXGN( znV82NQ{y)dvT)`xhOX3>kS0fxI{|V|*$3(qK6G?-JR~!(RF$r&(shl+LK^?nxkQR` zC54fUdM|vOBDJKmYPdHe zFP0Uh=$>iiXx*oQJKZ+krzN)T;WZRx{I1)^FLw8CloU9s zHex_1<9+q`cl-Ur_U<9y+;WKb*x!C2Huv`dI$b-rv-uuY+IWAfy?-d)yVu?odkFu% z&H>(iw22Kmy8`cU!J9Y`AeJ=gcJAIg6!-Raw%c8*d$PROy-}i;eBEXHK3pX|PFucuOpvgO(-R-hycL-AZ{rxVMUfC8fw$6RPxeYHnyIVU)+f-EL zHh{qUId(cQHu&stkEjC*GJmY#BRbGS_NGoO!!qxx&KsrVu1+E&Kmn?EI|uIw7=$D) z-VCK60fhm`{mtDink~Y^m`)tBc(8YbQ4$#Y&UT70NUXNlZr^Ed9d_P@Nro?>pM#_O z0EMZ3a7a|z*%7<#ExcC?njN&e?{>C`7Txy#W~VEt=1doFW9jVeDv{Kx;v@p|wckZv zINHUEHUclUf-%kD2!yhE7uXI-3Qd8{Bm=zHf&THD)GQa2sSUhHnBW2M)1J7$`G9NP z!0a-kK*zcoPMSS{unC`T-rhq(+{V|07@z`FxlzKY+TO%Fst*iqpw4B9p0YUDZ*O(* z7kCd$2y?z8kVUulU`hSf5zZ#w>BUgQCQK`WK$hgG6SyFe>vk2hK<{#qCeyl@^ghjs zVrTDw*lv6Ca8nS@@bB$5e0`(TZSMlnXmM?BZ5?&-A{Y1sn*crsN3irdyF4|>3ADC5 z-EFX)c}mYC?UCxF zQa;ZZPcF(jEKZc!KG>eK)rAUE*Doif^`(E3>v^LO3hfY9)oH8AIBKTK_Moq}%m>Uo zi>t<#=LWMbsdl)OlpWTG=TtvsEd6E4cy^-b>9cI9!p>aq5jBU<8lpXi`i5>kR$t?l zB4q1P8l?=)Q|dBB4WOM-3zxLWQ~O*7)WJGYnLOz-7X*udn71N>s;QD}nN=)TY;;0)u1?*W&zz1~&eiVQD$8+c}7pZ`K|29(>K;0%uLsR8`~6Wqa)miHn^ zFPbM#c)y^$P_F!r+-T#m>A?4Zd|a@6LUrjKt`1=kjPmBOz&^2@4HN92!>5btXsWJD zAkDI|9W3GWa?m(L)6r#Tyhqjh>C_A6-6uYxr1;N*&L>VKA*u{g6ruNIy;2Kf^%EBs zHJ>BKMko|ij>QB2+#j4{o+6VNMc47U?u&0CNN^w-XH%Y+N^wx@=7T$dfBYsayCf$B zkvx-Cm>+unak!+@5225*A{wF#bj3PWfU-q5bTeLG<~%$+4g+j=cn$*2_r6jVb=c7Z z$HhyHYP8+(n=)RW6FRDB#=B16W_P0%y{T_gV2Y4`;@{qQiPz2<_kZE#mG|2f+pCTT zx%P4K{a>|uW2G^5|66ml_Uitxm+hzA1Y;+?2|fyQQ~Zu|5WCjk>x(B*Gzo7mFONW$+f`6)mtmvy?AWz~ zW&UQVdabWHv-E=j*7Ei~;G$7@=1Zq@Cv|d=tkqKKwbzugzop_YcB%9p?m%aFLgmbM zu`D$y^EyJKPt?iFh%g;eom;{@Bk~bZ>}ALv;#AXWiLsT+EW58c!xN7%$Qe52YPVrk zYw46^Wyy_~Lj#oi%0BPtW~o#WibiK=XH^DS^@Gv!!0#`gL}PdPbfsFaEz8?lm$|n} z7@fOz72gv*cn^jbr4rCcB=y|QT(zCM`#UI>zEu5}e+B2S^k+)`=PmrdaJl@iw^p|~mm>}Ih|KZ<%{)2CR_Oriu z`bYl-o-k(1Cr~mrwJKuWx!=FJ{LW=cY{_g*I`cMDs=^y>!v%mT=5bU$R`rXfd z`ab|O_~hB|{ea2#^e=w^|9$e~fA{3)fAZPSKY8}Y|Mc|RKl=QK|Kqby|LDo5|L(I- z|Ky*4_I>PP<=@}I80&j0r3=eqy7 zxw_hTb^r5A_?epj{)tVdF8!5HAD8U^t;WjK{m-rX+AI6-W&F_of0ItZg(>FYXv_D8&PWHfmr5n7w6oaTy4T)%XQ>23S$zHD&FEDde0}Id=>>%)A(c|L5G$OM67X*LWcnrTvM=&-D?P!s@Xm@+v_QBE4p{OsF z@L2u7IzW;s4rYR6QyEn|qzz z!vjEBLsc!H!Q)xa5z@iqr4kc<|(Z=}Nv zMB$$)BxRG?Na{3|^xrAui0akQHzus~8qdh&90Z2flr&}*S=_q6-P?Zv@?}@O*S#9A z7Lwo1-ee0LzcKCS)`#xgd4I6^)g5Ev@!PN5YAo;qzzl`tvmSMG8RI7q=JC2DLyENs zzB%a#W*Ps}LxC{OS!RROtYsmkr){dAg&7Y`l4kLk#aq-~F#}P17P49PGF#0-)MPO8 zL59PyOJ*@s0301IQ7~-g%-=n19~_E>5#}*0@OR04(90B+=(}b5FHD8byGRC^YLX0d z3K9+yo63Ps_p~te$Q-Q1z{FV11GiHYqYvjJnwpDL%ehGExk&w)nF+>^r(!|Kpl^FH?(^S{`&4T(ZMG5#^&F~b!9c<>#0=T0A z?qmSE7XiH6-o1Bte+Sb>(M2?kr+mL){E@KRa;5_a(|}me>OfNS z_J8A*|No`@Xw~TTk8k_#;4bJ4-s1|Y?FW=!f^k`yx_)erz}~@kuYbG+rhgoC!MKmm zv?%d6ruY&I@D7~|B&;Nm1+jPM&Qey=8Rp8~t`ye>UJ556+H@By0h~fX%ZfBAY*mN_ zzQ&dCK^39JRv9g_Na;wgtp%R&fRlj^ljMMxtucJ4gr z9qb)-x7xQFqOu47e~;cm%Qi^-89-rIFdsZdNWD9q9oVt%w|l)?Z+>mz^+mkrBNFOU z?f~tb$IIpN>xxzA%)T4R{u+1s@I=qbPE^2*P~O9 z@)@7nhLb)I?rnD4U>9|E(O0BK_nup>v<3b1Q8}>Pz*m2G{#o)XR(zvj!=nhSristR z&?~a)X=Q>HF0Dao2HWqq^X_iq*rE~)&OK}F^cUt?pjTod$#yV}ctW9K1$}@&MCU?< zO2mQga@~2mI>>|e;anmq$k{j0fh*18lx~KaQw7kVk8YAPJB!+^78O+pmxK%gu9!cw zdztRzq8={($vP75A06ymWBy=~V2fVwIaZf$m_h(uvD=*kVy5@n-R@rZI_yM_+G}%+ zYNZhQRV!D&0Y6#&zZZM5L@;aqRmXebJ}%M!o6UNCO8;-X%Kv^TKd?NmgnF>(`xjH!(K`$xU+eRnN_lVwHv?pwf}rnD7L{>+RilKi+O19HQ3FtsWD70RPTG z@8H3GRQ8~wS>NF?a7FvMfcQoR9oUc|B1Mj^z5Dk!cemeO5Sv}n#oJh{6tBkn+DwpN zTUd|~U>)us9roVc?DDDqVBCX6C|`ElhezFAc)4>#Zvs0ywOsjV>62cb}QwYTof=Z$0M%wJ$-l55#@qJS3#(o5%uS)HWL=we4uXMfV z{4w=E$}p;)P7GTETl{FA=iiLW$R;^Wn{%U1lpDvW~g9(_XSdju=e@qJ8f*<0i zpo_3_m|4nSTWUi?E~i{TYn0VPv|r{ zJgJq{qcdj^VMjH3@L0CT+k?!8u`_@_S9Plq{oPEpv4Roe^*idD1>LOj zDEU2fZF`dZxyma2*CjC9J2heLZyw&ewH$}Rvg`LPcR2*uH;upbpUDgQh5v;ABpuz` zJ2=Gf#jUlW)gRi;X1&=TB(JgH)U8KI)igr=GaT{4vYMa1HL;H6jUgtcTbuj6t$Ta# z?Is}c(e~z6Zx3{UZfColeskxbec0K~JcIV_Zu;5%cXszOpY65}d)>|V(hmXL-7GwK zb~NMJ9r$;^2>?H(79%iw?T-~a~P-P=1%KYypQvy*X*>|t@ZcAB;U z)q^$3s2C3!{Ct8uywIg$X}#S&j6Z3>$kbMVQ&X=sR*a|U*^*D?!^h=Ifp6^}&4N4| z@W#f52Avv?HJMn!*bnwO*n;o}J{|)D5iqo3H&Q$l+O*_%tYh1q{;DEhCyO7YX0q}z ztVS$(YQZvqt%jQ~Tk$Yl9(&Ppv({g??3y)PTi>wjePHypMr(C_rM0oqulMcdY8_s# z*tONx`ub{ZqqWj#Hkzx){o`T3)o<0Uq~jAmjIfprb~m+b7RFc@IGH^yGzK;nq9tDs z;fb;<;Rr?g^iwYHHT_)X;}|Rg4?RCb!BjS%pr0ZA1m&*$`|GB_nv16r)G0Kh@njgz z!ZY*YiimQxX$wn%n2*PR?X9)d)oUZXJc+_-q~S&Cd4hHJ&GXaOJ|j<(*G~;(5{)0x zU_e)CO^vYDYShe!u$|nx=9t6t8RLbAvnMI@;sv?Mco6v4Mtd2SXMYs<@nm`c+2_d! zvTtS%0kA1Q&w#GYZR2mmc5F}MpM9R-pMCQ(7qlJqmjfFVqEk}Er_lxlVK58ntY}S& z@hqESuy3tyw2tdd>$qiE$F)||UR_%ouCK1thU;sq8!Jt_wzkr*t+#4T+g`Va$E%Gw z2+f|=6ngkzLUoDl>r+7s@?Q%QOk?vh#y>-D{Hg|jnMlfMua^<##(>4+B#kx_BU47hl9Rt)mEDImE*PJp>0{i^?Gf^t~ZZ2`Wx#t zd(g7_D+?Of*V8JhR_R!^)HDOJdmr>xypwS@*^phqgh0i&)-Xt=S%Y5Ij5i@0pUnm| zNFyQD-_dpYtY5d!`piC2>LQmX>_Y41)al#l8UNUv4hw64!Rw*rhIVSA_>N%Yr{HXy zQ2lZFVgPJFlfOWTsV-k=1t84_bkQslApO+w=;`XO4=T-HA5=DeeNb8dRiLsu6P4Pp z4=VLMP?=tem(5UZCNho2)%ZniJ$maJI3XT3+1tDSj^n!IE=%FGFt*2jaBj#MlDcCD z_odZl3k3T{-IS!9+@p5wSzm-_)@05rt~QmChWzkwYd$VM+W(dRiA6_iv}!Pj%6#ZLHN- zVPCqG!&Bhy&H-0Pa1Fi5&0NUvz*YW&qJqvE#h?c_74iA&f0aUlNUa7$g?(&JSFpq3J|diE8JHGm^3bP zvYbeYgcB>R$j|Wgle>CqcbM^^5};T3G=}}*3ZKCabd}GXN&hOJNta-X*2>Po^6hSS zkc10Rv^2M@{)v46{~zP7y|B}~S-UlapW0jXTg~BcAvIm$dDxF!695pT>P${o;6J^g zADnS`WFe8+^hMtf>}u$btw&&|kprT!+RA{o>FW8k4Msta&A#$l9Bkd+?`>`!Vz%Ax zUeW~yMjbrf6bG4&N;c_k-Rr%--s-hhOwAzmZqAElLwgt!rwC91bj}O5f3dC+f z@&`KhbDyaGiGSu50u&@j-e6Ia?Ew>@v?~gBCJdP)aL@Ambf!ms;KTfJh7AjLmi)m^ z&U=^&(4*U-a|e$%lI0C_5a&K+05bRG0Wh0+!?Y*9>-LDMxzCjeyIv4*P}+(D-1FVs zr7;7aoLNrpOw6E*gkz;1;o-NS;k zZiZU~6}+I@GU|#L_zEovcD_91rQ>R>_-Ivb;fo9Y9Gj64DS~J z^(=Q?1fb$Queq-Y1vh_Q0Lb>pDS{9PHh(<_0msGQ8yAFcG2|_Zx*YN>3~(VhI}u$y zoj>4-Z3n4*?;JrF!xocKkh?{XV2eSvAh0R}Cx6fZT?t+UU^^^^AsBEW%ML&nBZ?Vt zF*tKRTK<50fqxu_Q4cM;BJhr}Vom{o!$M{-1naXP!HJ;#{L>b23c2oT&w~FJ06r>& z(zx~c!+}+Vv@2$H7qzqtvGg73WyR|MXI9idDXIg!SD;APxySAl@L*gJVf8=50ObIaBXb7% z&~bC;V7HKXhg(p*!!1hSyN;K;j~ij;?-)Z()6Rdwii$|Mg+cDQZfM*2&su?ziDD2g zD%{}~5$zXHU12=7a@W5QX8r__H_PM>_Zz4*gS;(5+yZd6tqK6_Px4n804#bT2C_tZ zQQ$*6{}T`ZJNAlD`Np6;6tG6ZQ319qKrO%m1gJs(v;e4K0c=o2YQPvctB9R~!4@Ia zW3K?7E$l#rXP?R3mfQ^r03FiBnt4MmLi{4k{An<;;{3Jfi8Cn#X6||eCd=mzvk;&` z0UN>u!yx&aW&}3(9bv*Dy#ml>5zxvVE?qZM0KNn_cly#*gayE~P6`5CggU3-<}YUp zSred%7Xot_sJ{lEC_^^Ls575JA4TqS#kh>==>7W2PtAS6fz{-8U)X;k>&#^bQ za!==<)r*t+BGA3iFR`0{5-;}<1T++^F%+Cyxr==6BrKX;3vxGW;03a4Sojp5J9hrZ z+Ev-7+`$&%TMF%Q0lol$T7YvHp!x-nbxd1c5s>rWqY){2dGkxd=;*;1&Zm z%3n3HqhS%L`U-CTsZs>FfK*-uw-Ahrp>R?3E#}ZvSlpqhu&6^*VKFD0!s1T#gm~Vh z7?guz&OnAm9Ty6VJ1!I!bzCSc?zj+vE(+zsFfQbPQ&{W)r?8N7NMT`zg~DPF3lVr{ zfQL?k0*ao7g`DgO3p&|TR8nhrGS1&=4M2;q!A{15B2X>DuseyPK>_Co(EII1VPxf> zPy?Vn%gw)dor0Uc9afZ28l`0cEJ09<2(>WeiIso6C7ifUKY!D_fLx_wvgnH`?Nd}` zpYVKKM9^P?EnvL}z_^gbds;;8)6;P=b_VABvjV0_uGB0Iz5? z$+fVIDaXqXQ*{;OLl@LquYcY{Z&a9l$!0|=#+7nFyuAkZZWq>H}0?0t4{zac-9z#ck}ZoR#AfAgJoud{n_2tv2F z-)-ONy#IE|b&dy4Fz4+uye;9~HdM&RzTm@CD=0Z$-;Dsrm3Cp5xG4ZSaAaxQ z4*P*K!My>WjZUHpUj%IrMBn!!%kk_$1bj6+HVUlZy!0+;Pt@Y=ovm)~-FEk&v$y+p z>8QJ-0q;1+;Z0H5nLjvDaq+{gp=*us)6Qjx|EeeRIes$hKb+Y8-21p>{jaSwYg6mL z-fX;D|1aU^jgjjgTdwGx@`@3}3nl$HuwB~t^2Wz{2=X)g8?h7EARGE)>!B@1{XYJ`(*M$z#K?)VAGweEGagk2 z_Nnb=Uwi~agS^-?uz*Y?n9?H4rd8-U$06 z#tnQ|5W7-?UDdZ3!pC@RxKR5i{6dX(94~%UdT0lp?N&>r!xJYI(Bh#rvc*J_kUn&c zC6a8Ik?*@9^(D7VctWoMkrHy{F|0{rhYg{RHxztkK)np_#TLMy-i^!R!%$Md^+#e0 zaOT}vuSA z3J<5qIRNevmLWiZ7C?-^o|N98O0=TV7Zp!rWyBlDxTZ@~F;7$`g8%Ffl+8}boP7Q{msLBw+_2UZFs)ZxvjO3?N0X=NGev< z9*b&qx%37C?r|@$1U=Z|T(=aAMI{&l3FrmxXO9zPG?M1)<&P7<<>c4p$-@!QZ0L;e zVWQZPl*C7PRXP0mxFow4m9eO`R#rrHISl&CdeIBxC)Kafm;U%-VAeHYSu;T4c%%h% zIUGHH*g;Uyx_f(vSt8M&N(-66X4Pftbs6Q)@)s{7c^caCyxGhZm=#BUuMg77 zizn9vnQl6-gXqKw2EB&;m$Rf}skAQ3*Z5r}u3qM1^cHV^!- zA4UR&?s5nsbJ-oRRFQ9DZ}vMjgK<{t4!!0aum2DDK0Kd|*#RV@)(_jk-9CKg4bJ%lz+Z?d=oNC#rpa{1s6V zsQ9-k^-@I~!u;NhC!@duW4j_c+c$SN;opO!yZp;``(W#)kRJ$T(12b;AWE|9&3Gj0 zt*dnn-_+LYt!izfv9?mLf=+Ms2Mya^8z^*a?*#8C7~5VnAEhv!O#A@UufP$^DR$_5 zWGjrm3NzhUzcMjaD}-08v0kmWR+{y7#Ot`#tgWmM8rQF5*j3kJYbl<7*pVSN&k5ux=pMwc2{ES*^prjT&OT zzS3&+8ynWOu_jl$Qs6?w@ea^-a}tR93gB2@1Etgv?^#I7le6kc?3}^x8DiD|E##|? z=R^)zwy@_2sX_iGx^kZD$MpY5Ih(r^_)`DxN;B*KS#31yulzqR;pf-d|4Zz6MGtVw z)YOLDWsYF(;YzOHjIZloh*#KH|5Ef}>1jL6vyY3{e{-$A)|y`bt>&xs{}O&+Q*Ksj z>lM&H9>q3n+@nXa+61L97|pnf__vMKrr3n7cWgZpsJ*a{#I~?#7_UCmCk5=p&Le@D zh+_v=sQSVQ!`Mz>H3(J+3-;K5Bv>;Q_w4|^S236zsD0R=9n+^+bx?c=n)b46P?5^8 z23IGo04*cI)sclXkO<3(JgOO-(W@_BJ^jD_ zibRKS#_XGmJ^Sgu|M`bTOvCZB>wi&*7jgONqn13icGqT3)>GWMwh*NR} zq1>Ouf^Iz21DVMj0F#*GQ7pN485&loVbU-28tB{NiWQTvF8jO+w2WT$u%8eK(MgF5c)tb@xhrj*}+xP@ot}k$eq)5oxA=Bsr<;X z{PTEuY=w~>BwaIWO5Zb$j+#jKlm4!`PT$e2^k{t|75u&c%-y21izf7&E zaRPUh;Nk&4nq5BzQ|H8nbv3s7fjT{EwVkZ7n;fW)px~6GAbtCq6QkHY`LO zxRUP%bHFzFYtAD4JLb^N_iNJL48O$GP93HmiF;v0E$)uc$FBNxe2V8;T%#oB&i+u+>ZGJ0L&e7!_VoyF=Mn_-A)Devek-S^A(geNiV#5 z4HIY%@cFBeU=8e37GgJL!c|4AtxBOO`L!$>Yk(sN5Idk@EPiRJ3}$O23+kG7^$nJMuvC#q6fJ}QyS_i+O;+u$GbswKFO&oI zbrhRvK(LFE5~ZYku0IzkFoxbII{u@%zaV4&Av$h ztPyr7%&cQqiF-iRwa#I>zj)Ex1PDt+ZbF(bIhrYu9JN*e%0;geFmf&igUZMmz+`i5 z5=n$U!Q?xpC~uvB4DW*DICN1w8Q;}e&$B7Ou87LoMmPZ>qBn~AMoVylGX;d9$FW6< zniBGuJHUcI4mfI!5-VxGt`!(B#;CB|B<0?KiOR{ht3qjpH_XLyNN$+fzFZ zkhP)(Sbd$jj|am-Mnmgc!rp1JMZ-xP5fzp!3`L_p?f} z`Bcr4)YV)}TsRHoGuf#LJKZZfy3c%nsz>=e=}nnaffM#mTPr|kS)TLBFaG-3@BUEr z1R9lxyX1$??2gLMG0?g)A);aI3MwNz#8I+vL$Ov>-4DU~iL60@PVpBcFYBpX2R)@O zvgu8a!}wSmkeaFuT46HeWuPBO{hmw*)jij>0Ha-p z`{C4|IiTwok7ad32|}4TBy>(= zQeT@^HfxfYl7JioQq;tQBd2oPa;=d{=Nf}D0>(lV0e<>hleloTu6C?wUH4EMNoS;#%4}8o1pJ^2Pevr&n zA~{ibWj|J5af+PQWAt;*IrV`1K_P|#Vrr&=&J-PB7dHo|-95S=(+4IsB=a4f0!ji4 z+8sgDjs2VRuIK@zLu&9hNI%O1W!^F-SE~1FHYPAkmD(G`F#idIJ5XrasoNlJa+fU&p^bbSCiUIaM+0mTP1}8wMRP$016BqlU;H1 zbzEM1$iQRgBmTpsbXBlw^dA{UtJ(ssI%wsG~%Z8cFh zJrvAzVh+VNaYfFZt+eDsRbV$@E+8kPIJ3b>B>qI#B5iJ!@=MA-e57t7FuMjr(q zy&&aR)&b#SpQOW`OK$Wceqt1;YMCdt+@pwA~>tV12ZM%z+bU47AC)$0loc z$lb8U0xzu49Y16b;xOqA54M^FIwTVJ;xTLi_hQ&-gBKlnUF`89vboQ0dvp7Ko4V8L z<%jXWiB7_Ayl7ud@#GhuJp1#XI1}bM8rhRi|Mr*P{JmfP;h#MF%WppWiywXV$KQVT zmwyL(HVBPp-}^H#Wb)>$nix1C8Q)-H^&Z;xguRUDl;%iC-rUt7?m7mW5L2?T@Qu;S zT+2u)$Jghr^|=X2`HIKpn$#)KU>L;S!1AJGe3oaq=b;nk+-FN1d5-k^v7(&X1#<1I zu`agLeg}$qfU?>TL0SYbQrdv^N`cm6zjlR*yy71hVR=Om3FVrClD}CwWW`2%V2<6( z8B(u@^4opO0q|pI8bSRg>9@xHVqt1f*v>@+3n65WkfTX^T?}5BV#y@0T`4IoXFhJU z^o~l7O!nrWN+I`C+;?=BpmN#gy?U*&lIhlUkWh_Aqdpkar#eo(O}b{yO2+Ou;tBn7 zAQaWafDUeu^GfZ6u#6u9;d6KAz<@Az4?2hIq7F-{UdlUl9^0;iNp&wia4_>^z#HRM z>`Ln@<>Kj|eMfAA6&|~hI?N@W{{4S?_R0S#XcpK9Nmt$)b^`0Vmy!9oM!%YIV~Rwr znb%Poasn!GDKbGR!?aRCZ642b6oG!Dp=?jb1C`hrfMN2{N6MvrsapJ8UDl;q*r$jI z86LLm@e*ok1Z@Pyo&01nufJC#&UdPNexwqv?!g-FO zRxRr&T4}AVO?isy@ZIyfioQzvYT7Nt$<1YvY#~A^loXSUow6|X>ay5z#2t!V9@3^> z7N#_kzN6Ykr7`6@!o+WBc3-X?$uBR|Y3fy>&TVntAD>b=e6ZiXwM{gL@iZwO_k07PmtZL%b>KvZ% z14?XlElS-Zj<|wP{5jZRW6f|vgFF(^crpyrS+xbMvyD~d6lX>ZBYz_Jo(=3{1j}3;*w~>TkwE{VoamB(c--bInWxY3B6p9&4JtAa-rJpXkMj?{&^Tyq}q#vnI2OxSJjg zVfonAr-s(*V90ttO6)M*fqpz2Zv7ItHJP}Q2Abs4i#Z2o)@m06Zfywoi=o0Vjz0-G z7jpLaTN`u0&11~9DZZ?2O!4K)mHbT!H)=MK%vf8mpt3s6j7>evwdqsjvj@1w1AG8` z(detcl}YVtwa8ZEpfDv-px1)ah-X5R`QpDl_hdwC1y{*G|LprxR2@5`$^b1}wLKAV z$`ofQ&3(`8OlEF>HL(k`o#FaF#atg7m6|w6anVeeGHp*&JaZ(a)s%KRnXr5)sDENF zvxPvvUqqhfrQ~UFR9L4zag5l90a&E_I@)VAyN6lpHPc01bhwK#0dU3>mkJW}xGxzw z23?HX&F*K``la@&o7L4>xjQp~t!8s2dGTmSEq!Dm24&pxtkE2-RIxFRy3GV z-#=B>*GxFsGXWWdn#tiq)ZAu*$Y%a$K-AT#LRwLP3#tlzSjV&FN1N&HDLw*Kt1aVrsQ-Yay$b1riu|sv&aMA~zh~+{G#jn@7gh_wCiC;Jy#7OG{&c|m|DOftpqs8V^bs@TNs3tNO3IK)8oph}=NrS{b7U`YP==R{g`U%2KE3Wx431&mP|(=m;C_R%Zz?_ z6ng`#d3%Dv^tuGo){VK0WpvN$xJj!=TfH2TA2S|TRdCbGuEdvDjR=n3aytj9BC^mN=i1#+T-Ob&@2XB$D4^N7K z?#htR)WHPvGd#TDMR>#k0NihPx9&lU&D))w&fx>Z{!Zs`w|#IR?(B8Nrr6)?9(J~l zb~d|W|ERmachIg1abVku#7N9pMAjrmb{qQv))kH{^ajz;L770+HU?vnDl-Rm-v*U% zAS_T(Cg<0hLlO*tO(ANHI(o;NwYm^T2b(aqQfNnuq}XERM9w;S{bM}d z_Wo9{v%9r(wB5$CzI@-!lKDN>Elz(A|8zII5A?TqW@WM4zQ6Y_z&P69>1=Htwhu(o z-O|OMU=OJ-*;7XXB7^RO&9Cmv!gqGtH0snggZss(XFy%!a~^dGrgB6a0#jY>(*cX> ziBy%51?j{KmcAx4nDVJJ>twZt-xbA}j#DRvV*u>eBUE z(qNWw7+7cp54))Jhd!S6rYBow!DtKg^lNt7Z&9N|CKNpF$(%!8Lt_j5duS$2UZssDir|&M8bwwH^l;Qs{HP; zToGxnbq`-jmR29iKM(J9y4yXJj1PJT-K_)l+$4#5h9|CkPYv>M0xFC8SL0bpR_)9*qDVF(xR_s$RAQ1FUT73!f*3$SOah40U< zenQM9w`)jEM4ghj$4#du5}8yurC=2Un&Lx2LY!AS^>QdcQ}!qD%+HirsXNA|U30mI zmUDxyF>al0-aeD&*|`lw!(~$_;}8_Xu@b`B`RUmKl3UP%fh41|t4sT2@AyEtPmUUi zB!ngI{`qn?^?(Jd<{N!Q<`}~D{OaWL@c4jGE+tx$r#!K;bOnm;sfe_I@)Nujgo=lZ zB|~U1M9mH{YGJNWhTd=I3hlb@k9%pn~0WC?^C zdE%kjO=wu2dWC}`lB!}@@{nanQ{9t!O*u#G!FwiGUmwV^$ z4lXY&W=hiW0cX>fh}bR;kdDtD+L9gqf@@%1qOOwUVz;v~ZS^D#cBW zN|69dm5S(lfmV?em`<;V08F7+M5U+FETZx=P%Wzap{#NdftXUeh#*X_UW6_!sb3`R zpIXDn4(1dpM(~+ETOFe{TdH1JSw~`&*Z096hfRFs*?U))r}qBQ!QKg4%-%12PtC+M zuTgQjJNPk*d#HETZeH`xynuf+@zHeb@z1EkO8%i6hQ3f11Y18As(6Uj!82n7kD)cB zG2QWS62bokFbfTRYjJi< z-tJy6FCz(QeLb9 z_?@O0+>FtbLa#K1@O!yf_D)l7JhG`jQgzw%y{>$CUjQJ@02^-bztlxM4ZAVE3*dGR z(~oG3mhi)saf}*DBG!`!XtoWlSJn!Bzp{*Syu|NeONifo_sTlCIyzcrBHaUU{BoJ( zg}CY}B(gC96ktP%su(92kl+0=)IZKDg$Ht#p&L&^KdBCX+~2@NSnA_iP_bn|b;J7M z2MbdSKsh)(xjbjVplOQgz`ZgV$FM4q%M~pPUqe8(z)}$#v zl1;)jpbAjIW$VW}+LTRbXcU5FWo?3A{T|yS^uUhLiee+A&~uF1%Y|$Ndw_I_rlJxv zZzuksz%p!K=Cwa1O6UX5cd#9^gA8q48LJ2blhHC?lz>D93W!A@YZeC*s-YSZw5$>f z#Uk-JTN&`@W6ST;CSm_a{9v!mHU@Zs{Ri6m$??B;c6XZnUk&Mt*#GHFN}By&v;S-M ze|7Eu5;+|82R$)b$lt-iZ1M+myG0)^(iP@rk$Hxr&9V>3r7-RhubEs#JF1m5Y6FS3 z?pg@VpU9&X^2)}qmcVy~4X3y`&Z7-K6ET6wZxK;}tpD8`2R)5P)ID&+2P16-WE*2vvz7zRX@+Lp&oJ?{ZQ9FfZ^$Alh>ra5Z9Id4P z*q+Y%aQUUOU$c&928YA(2CXB}7+fl6orC=dQ+&~T8^4!(rbs-M}MiI6?c)Fml<3%fQ5Wu_})VJA^!{){n15kV5wi!r-3i8Q7cAj)6Bz zs@@nOIHSpk;}i51bqt?QYWmoB?~_TrQOG~?du+AM(OFud&`pd!faLg*N1LVU1O%Ib ztAqjb+PXOWp9A}N?^kQx>J;P0w46d%u{s%Y*=seQ6rhp*(sIcJS}`X(I6pr>q&R}|BL$DXKYz}a1fT?w58g)r{g?mU_zRl> zcMRH;-)7@PYk;)E_ptR`T56tK-ZH`>twUb0*vx4CAsGq*15m(K7zB_KOVO~p+=$GeKJENrUr1b)0Ei4V+)l^^RI#X%OZB$)DJl}u?2GwCe~GoM6! zlDiKB!;DDsSjq7TV19^*3%HiGwzkG<`e3Xlk+cF3R~p<{!CP6QFE0#`?+$DbAbe9e z7*`!-C_wAyxHy$9q2gt2~B{exMlMSprA>| zz)dn4;R=7rijHvfVM!;&rBxl(Bk&ZG5ys-N^>g!1YW?r5EPqHUu>a}oY;`34@9xHK zqyMcTHTvI1|J&$)8~txVV(ov3eGj>l^V8Maw+H8}`H%9g()wostZ@J$jT}$Km_HbS zC0V06QJd8aF^^f@$Y%-+t?I@K;g|VZzLzuGOuRG_HK$l3&{k{`al2FtpCmW->m=5`d^TA>;L{KT!=ZjywHgNYzEM4;K0P-(-#}5 z`aLVXuWhl1%=B)JeQ~gVb$)>F+S$jaZw{=DovjURwl|082m6<&=fBasyW33O^V8GI zw-@&D$)%K!gNZPHd-yIN7R{qW>*V0_m(%l~(W@&|8<%S<%LTWL?4wf-%oYmu&j z6Z3FY!Mj{kFAt8-@^id7_~}Yt0ePzgz#K~?VgogDMg#>RE76E1V91;}+j|EAQy>`m z0l5C$S*S?*#d8ccb0Ne|4le$bb06<3-|?pWXm%u6;FP zUnBN?d17CI)OT_C?qu(%SollxnP0r36{C`u=X+;q1@yPIt;%_LddX%)Kdl{AzJp^f zANpzSs`CAGb;0ICKh^mzE`NS|#DOGFthTcH{i8Q*Ui8yyE8$+9zhg6^pH^p6mGRg8 zvnw_y{I)t<%B*iM{)fwoep?-7cmCsY@96xP%}kzH9c8o5&QIU6nc=t9Q8w(C!;}5@ zY+n4p>iktbs{Ei@oxdroKRr6)sz<*ySr1R%@-WeFP1d8+3vOWHx3#Hk)Y&iRT>ZbC zTbmooVLiFJIN+uLd17t0m9y(NZWf}SnvCa{$A>3vHZOT%Z7OF1db#(jkbCb}YiCQk z{Yc68c<(IndSJ~X{V&$%{xKKWITeyhQ5)Z1owck*^mozv+#-(-PcG3T^f!C--&cq5 z3_h5AM@NwF=qP)%_tQD#gAe>rQQ_OO1C#^(%}V`DApOjNx;S|E5A+Z|vWI7fxHNn) zl_K(lO3?>?C{%cPfM3H$R_5yByp0~h2luc;9(J;a`|pq5poj30HYvYL(Gmci03S?q zE>EGO;Ujx^d2tC3;e&a2d3XX3(T8D$mzSqkxWwrd0|u=a@DP14Lw1UX_LM;kEd=Nh z`kOsMJRdzme|2L>I6ZC-d|^6^^cC%@KPUr-K0SYzJpxXRp23G<3xQ!n3G|VHA&eP4 zCSRCYf|xMO67-Qh#M~A=#h-GuLWPH?xStr9r+ALS2TLh$aX$2sJp^uv9>NDx{Fiem z{mZ$oO9?lGp2A<4iSru_2Kt*l!W<4g#Gk@rupUWXJ#Vw^6e>(|chcM)8PsO_a#Mb} zmA>3k4x^^R?X=jo409)axg)>aO<(Sosqn99vA@bN|CYY|o1!N-vaZ}vRH>=3&5S@> z0X6ILwxZA5S*N!*g-Uf5W<$~5Qb5eQyv_GHTKZPg(tE$Iw#AW@D1&;xRDjvkRkppefu~0ECITxd5fv@1j0Nnh^BFSpZ|+lI3g7t01= zONN1w~4Lwm7*P#wK7vD{eu1vdkdT;d`O@V zE9w7#tFzf@{QuXGRO3JEAOJ=7f7_i+$^X~x?pCA!ts#9+&gEAV4|q)|fF=|`6AGZ_ zPynOe*g+-64`>wpP2xa*{DAl|ew;XtWxezQuVy^SuV*3T))N=wYvTt3i8%k|K&c%6 zl5C_1nhRs}k1ZlP^j=;NeWxp3>%*OyfcR3+fPxcbh{+CKv&Lc2MR1n(PmhoHPQYC< z?T*jrYuX8)t<_c3uvKy+kp2jfG_@L{AHbVm{ppXap^zO__lm33;&NcI3||wp|FL&| z2p*on9S(j>J^rGf#6NG+(6@VNb8X{7)*}8OEkhX@pS+LF(n}@P`j4d4C>fVoxPmD< z|LyEb_W!#Z+l~Ey9cd2dzh_PeEEt#ocQI7ikzEGB9@s!k;2g&+!UBYSyqLI% zNozv0;o<;R=j7f2wlagb#|sN23-KQV*8LN|3q88@;QT(c@4!bM{sx_iP5+k{*hSD< zVSj>-@F})dy78x0@(>9Q;4uLU8h_9W!>ps5 zB>^id!PkOkvcnn#=z7xspzMi{$>muUR`FQhtZ0P5SCHo!$EN0hK|B z3g|4;TU=ZVlfAbM%!ASbPdMW^G$03Vc$CR>0g=$QvR>rosNuRm=Wzt`Em(LWk%;sI zbgbHm8uW$qijp;yBJKoO=O(C=o&dSdX}Q6^R&bv{<6$qf^uquX0_R*sAjfWF%G_lnNboK*vaE%ju}{{I)SaT%ZI%)z&UqH~m%g0jY+1>Zblmu1 zOEP|-k3Xh9mll*2fBl|0>PdzAzZqNrDLDVz?CdD?e>+Y5?>bVW|7-MrjsCCE|5Z{| z-ut5Ey&0YN$_vg+4}V$kU?NBAuvXO1XC;+YlGLVvtvwOo&Wt(jJAbIAK1fU7@eF)4Mb6CCS>)66lm=5f4xER+q4ndqqMwsZnT9i|wr4qr&SayOrF;hS zHJ>O>&s^qs@;3;OB!R>$cJ}6<_-Q8Yqn-WX7T|!qLNgx!;7^I#T#xH13yhmC{73)RZ(#=)Bj9&2v~If*KUjV|3LrK zZuCDjq(=YK=zkjhPow`aPptk2-1_Vto`8@4)6<{vF`t#_f#i4SrBdYsGH9u@zAs3j zlXvv?h3xX0gSoFbspLOGFXXE2{O^BmbauCQW&5w)%|`yKAvN+}BmXt>UnBpSr*-BW zj$0|X6FPcix6li^w-6=L?V?;`Q0m6X5BQv*u6VG~^u$t)B%UQ2W)VsX0TtpDvz+w8 zYHjh`^%drn!SlyxP9`9+uL{&Q$RvdmN)#$ut?h!w8?^SA%*Y{~wgc2R+5{jVW4>wmNUH|u}1{+lPx z-kVs1fbXW$6VAw6c)?nBbIU1_8VpUmr;{ZbJ%%Ew)_>w9Yj$oxv5{{%|DW4iyN&

zOed)Gkv$;h1f5#v(u*&} zka^T%`uvF0RxjR>3+%!Nc>yrWkumx5BCJQpB4vyo(Ds#SeR#$p6lE~C%Zdw7iaC?n z*tTfKeIR1Huar!Uvm{?q8sP&gvJi3hgf!LAr%-|~h^3k0XZ$oR)J2w?_0z+M(;;yL6wa#uTPDu_!3!N+6 zSkkBx!X{`~6+ci5=zvI&L(m~8oG&hi$-MNsYDeRMedIV2z&IdmfNH%*m}FviEpHTq z_5`R{xCguhG(&V^RWuA712TD;STWFNgGhmp?>)T%MA;lsxwgm)TRu$u%4KOw6Al=` z5wmb~th1>-HjgH-OH{hm(i4W6kpJusLDXzfJNQg@Hg!cRn&D35S1NJ?z+;r?c;Hqt z5Ks`@IHbk4!qD$Kj8;mf1yvE5vr5iqKcf7Ax}e$xA?s`83`0MREAxM83g~ngs65P+ zU6{6VHc)D_gV>kENQuOAq*@A180KAz2iMhk9ZIm5D$$Ois`EPP zS1BDy3w!eexvq_xt{`%SkaK1puZ4y$+oWeJOa*n2fymg{*d91BsCm+48yMjx#PI}F zaX$`S9tiOIz@G$2^6*5Sbwm`9XI73EW}Y-NlGdDyQt50+aTU9RYDA z`;xztRuS<8*1HV#fD}pA#jIW^osfb|)&zJ4ljhMt6O?)WFX8-hb@b9uG>t0Y#xkxXfmGoaV|>7|%Lednjkv0L=7Y$7d*! z!+)q6jcuFKCFDftoQl%uZz_cqlnG=`+D>4Rg2p&-58E9|pFu`h(E4s~F$qVpFNn+) ziUw(z$hTpMXng=p$XFzaG7$3q5eHOpN?Nyp0ZSP^RHcO}RkqSY>CYSrTaTtFWbI6s zJhE^w5(3jG%69gK1+2d!G0Z&Voa_QUioqg=)qu>cK87RDm1Nh*P~>E&WLm|OiVMOa zr4D;Rg-?z-j3<1CxOYw-u4z3o;g%8#B2bQ`Vv0R0BnZKXl5JExh7LZN-!K%+vGGp* z2PlRjY;vB8Kw4tt`va`J0xZBD4l%JA25gwW6$wYC51f)&lAZur%qa6{l2S)C@M2)4 zk{TjV4~BBs#FsvE^hn^A3`v}z(~Z`V#4im5V>59;;hDf5la+(I4G`flcJ*2=q`Vx) zGLi5zoINN(Xd{0sru+uqhYmo2mRn5srQ{*IgJG8FyQq@-Lvf6(;FaGeXi5iP4r46E zLnCSqggoi2oMGPi)Ynx_KqkR4rICWAlp6h-En(W|>a3OJ-c;efi`LJPP8dcB!$7>G zVavsvg+JDNk7N!2O>N8(a)K{~SDJ4jRr8Lg=r-t>h)ifeQu zbxWp7;TJuFGqnp1DMI0HE6j9``CgneL?5K&j`odexLA*YH;O`}bOt!#g<4}pdUXsH zTCrRLBE7pxBxddWBp&XoxCXfs+3_UJENRNa?sV;)^p>8Yqc?2`&yRM!F#mm(t%N&GOZr!;OzRnUUH;+IGm=pw1tF zc7!?9kpWP$`+KB!yeVL{PE=e#_C==d4LnC4uvbo{gqTLqES#J1Ei$9ok8!GKah7UA z6W_*=32O%xV1}4{G#Vkc6l7)Z(p)HVJ_D4I(xD9sWoTcZ94+GCmN@m@cr3%=z#4oC zN}!j;oFwbt3B&0H%6c-!C%p)4LShY%+46chQ3Qdzkuc^hmzMKp#Akl4B-x<0HJH+n zNycNAhnFg@p|DT!5l+j(*oYRcmW$5Ft1I;wUyyEKGDeL?7fxVSO6!f1Ihk}n=;$CF z$Ft9pk}9lMXb4(@U7=(0HDT2`^r0Cl2J&1E^PkIkDe!7=Mk-!yQHU*Oo2-?1=PGm} zb6-7`_$E;)X}$O&bYnnYBnR1zXV#pT(NJFq1)Htl<&+DxQ^rBcQU zXkBc8XL*4ov||o%myXAy*1(#!vT~Y>1^MCWWFw18NE~mS)*X zeVI!`xs{rIX|F)v4>-e+GDpT3$n@~AxHVv{B5@kXgsvMUCGIZva?cy0Pr(q$=J?=} z6*wwri4rl%n?@g6$_|2!nH32p@)T`j_7B?5WVBM!yCMyY^-lhjy3BIhBVj@|VRFZ)^(?~PCbmNIlfdOMo z3QF2xVWLOkaHS?T(v+`bA)cSfATeA5n&oMw2ot-pu9T6b%$h(}M)oi$!lfqYyzzkc zh8Z*<2UMuS9kU~0%IA(1qR2T2(wNd-9ApT-E6;uCZJc$zr{$8&K8kdj%MkhwwR`h2 z(WBHAIvE65z8Yy=p#nkI60|-yM}yXUZhM; zj{1--mf9Z}PD#y#Q@ZshPN@7@RyxlM5d!QTLzqHm`m?)5jff8{3`vAt1rvZ!s(luw_B3_u(v=h!m?4_S+emyLBH zm2zipMrJywBz6)KPDkocPcf*BqCJ`2skta;>aw2zIZ#GFXsh_xUL>pWRI&?y0jH=a z$MTfKnY#-v@W{4-8a6;4*z@MCeGcfJoi&*XMqe4h(5JLNIjkg!o$HjK>nJNjn7$=J zwn2nR&e^voX6l7jI;8Vhd)E0t93?zx>2qDCEpz`cPg+SI69aQNaAjI$l$g?*okBJH z=}&y8KjrsMmV^@{GifQAXejG=q+C&YqJPF`viNWT>i6VY7y&j|-62M;Ye!AH?9F(G zKHQOYcr(J1*iXtYEhmvsz9ZwFD88fQe2gMT81+*0U^(4kVTkz?GE{iQ#K3mCjuPl8^rIG|a zXBK=gL62zQ10%L6Y7-f!pUgPOhB5?_HMztZ;7>0y38vQA7aT#)ML@Widnq=hr0~Jd#^Z3wnsLv;z z*h!q7d~mwhpbTF*UNWVWTtgP`;n}{BO+3`EdYu2LjySPAGJNfFI7x=2o`cb`5{nd~ zJEoM*Fm@OP>9l$=ws9g(I8Nn_Cjnh!(3I|@;UpiTK=&ly#$!>m`sk;MVdBo%R#7dJ z>FMKKE)o$22Vq;Hn^o&4$d_ekAW#{fGLm2@>@tHRsjsY6A@X5FDQ#UJ%TlDCgpQDS z;5Q{&=jTr992sYrMA?WaWD*J?gXo3M5a>K6W@+~`8SoV>wC2b&IdaS5!FfKTWQ%j#Ld_Gioz)>lvfY{S;%uaip+dOk zX&fUi)wU{1(cqLN8Dj-I8q%P> z!G&H9o>~?I8a1>09(wrpB9?Suo@O!@@`cJRF}o^rXe+s+`tgIrokfS_6ad;#ghGOC zneIYL`0`SF!|=qUbI4|z#7T;uDe@_&4`bGJb~)l0txovHLkA2SPnLKDN zEls--NFh*X7qnJeVXtL^3O3zL0ZHc^kk1+;B;l`I37D83jJY;|@!bNZkZ{hRlu>}N z9=mlBH;c(09a|rAuw@L20ZD-c$-80T5A49RU1`Ok7P6@Au1q?+K;F)hK7$Y7qak`m z$qJJmDcP5{YvsnLvKr~nm66KXwgu1|Yg?Ft^V&kA}$c5%H+dru29j z-68JgIFqK#rBES`v(=3=$kP^*jt=?#jz(m<0b z2sDc2eAbek!xW1_FxJ&Uo2P&mlPqcIIK@gTplhe8jQKk9dKfNd>$~R(;V5LM%{+|T z;IWM{e3w*Y*5~Fg9m|yG$FROneMeF+DT-L>ajXxj;)>&8PFvR9km1eMG3yDWx1G#3HL^o=0hC6)Cg>;) znQ@#FeNk}tvU#(LDa$=%c9h%;A^GTy3Iq}75$I#u_=@YuWNTv>dpnt~IYz)e1H5xTAk)-O3>1vc-&{yYqf#@RfVLTX-=EvtZjC>z1 z#->k~A%9;~O0ZHDl@BI$*{I2#$dAr@9n-4%s6|qtEoGw3|2V0Xqf}5+ z_fjXmIG&9f;5c?+8{2#cfV0&>_Kaj^cf!h(#373JXp{mUj94=;zLSxgsih=^R?+F4 zjcHLDc=pt;Gt{L$P-B!*g{rSm#ET0+1pc|@M(2EP*Vy{gXGw`ea<&p~7L;)6^n}c3 z(Xk8U+@Ag`IteIL2vgx%GIOH1nJjCEL;>ScI41R9yTnbQs4sKyafc2AlyExVj@J5u z8E_uljF`TW^ygr?X1r_9V+RVBtMGWA+MGyB>r3e*W)(H#+&(kGp5-RI-ZtTz)%GYI zO{Sol&5}&lnO{)O3=z|G!GP^lZlg*~o{`)LOB73qPJb~QP*aoM&cLt)Z9MA9o_07p^!epP2Ws+uMR$kI74HM>VyZ2Ts}lL3M5QYlGC*z%*B>Qwn}J) zk8vX)bCIQgI6o^X$$$z(pA3NeL=t>7owOTtE!`;59U-vKnGwl;biFDpH6Q{?DKpQI z8ukMPpJkXFHmMw-!yav>4o?^bam<8knZ&G4w7)6sfOw+M_0S>QrGfA9D#&Vtu$Z$Rt_H*TcbLN3N7{E%AWCCqGB`CXWK&KL%+%Rwd_)hlL;6=wF+h zP=-Njmc|)Vka{xo#2i{rrh?g8(raUWo2ux_hYIj>Lq2R-g4mb^lyi9tKSjb_>=LykSErVdP4#mvnU9M3^&fMCZDG-za2id=aiL6fG=-OW@*r6(y z0cFSRp5xL8f=WW+g?+@+<&8Ahhb~aY>E=M0GWJYbdJ9oeB#tShM#k`}kbN{vKTmdQ6t<*6GN%az15WdEPyVq7mm8BtmrPpOP@x2c00 zIv^9M6ueYlsXHZEnV3f%Q}Z_tvT)`xhOU%INTVakod7;u(=4;@{79Fmw@HKl8+ zbX{Y!kj6iCE|H>KNns?T-U}b6NNwq?8t%;qIZ+kX)TNCqN>t%ax-DMY>Qb%L@*)wh zCM&$;ZqFH)M8dY3bqDAfmq);z7qZ~cv4Bt~aB<~W%u@pk%u&_;U_Zhx7$l=XzvIZK z0LqYeWN@0Q=YyGgv8*UX_lzq~1G~WEY$+<~Bt_SruiXL|ZRL7qlv*O?jsAx383Xfo zP7RUdXLnEEFDj{Jr6z87HaCtBJL2eGN9=6hKG-;TUu++$`XXE6&Orz7Qxlu_@T!Ii zwmaxxi`~5&B?XSEjTjK1*&hAfdGDyRd&D>Q9326;+wY5w{e6H=*ADJ%yo;4K-rMZ# zABlJGb#}!b!hd)B5bwU)zz?=}1>WIn^%ENODEefQpxxVN{n)j6QLCrf(=H%jy+ zUw7I$6#EBz?`&_Sr&ZoKgn^g!g{yk>Fujdkz{%U&yIU2}*(OMx_x2C4^vafixozKv zF?ZnQ_U`7+@fH_m>V=Z+9T|Mg3OH-d>jt+kiDrD%dpJ5s`W-GxvQ1X z2v7j)2iu2l3z&pNF5V2LAOVH}$o-AoO?*kOZ`r#2_X=g|5b~f=|HTdkXbMVggCgI|sv%j%@AgJcd0p6yw zy|=4aQoDwW2*lTU2WjDW7c1Hbyx0upG=m}#%EnzFJ47jb3S=e;;N5NLAFs*HQbC2j zffor8ybtuWC+=^&&$Vt~b(v70V_gj=O&);QgibeZ?;#>?<7*li3+%V+1$oo;5`r_toe>W65ZT`E%m#{xSDvU8$%Hru&f9INs^aN;D$u1 z+f~E@y~|CSEbBtj`!p$voxMXMyRD6*4MAgue{Xl7^^MX&XBUu0n`>ip^Y{QSJAo$n z35@6P7`EQ_E-wvI0`2YXgDt(e5ZQojl#!)j>wg-K+6+U3*SzI-?GB=oYNwvepr0lRhJg54pVCgSQ#))4JE)Hn3!W7Qh36d_xW(kNwUo>G@7Y5?CEwQxy`JhjhdKpm_TmC2JXb3w2O zhfTU;ObEOx*b@bU`psZz0v~tE%hgy7gVAojmi! z?<$q-+3$X52+x20`#f}9^9Fbs(S5E<;2Fkq-vcjkd%dgR6&jxRHu%iKKKq663@Eod z;Tas=Qv><~Cb)woE$>B;UNldfu)LtWP_F!r)M(?e>A?2@eO$17LUrjKt`1=!jPmBO zz&??j4GZj_L(>IyG*#CnkY?G~4i<5FIcOZB>FBaE-lOXMbm|53?h_wTQv9c^^NCYQ zh$@2=S?E1kuhha={ltY$&F6^mBV-CH$Krke+#j4{o+6_dSy%5|_r*66Bx4{RXH%Y+ zN^wy8=9_l{zxNt!yCf$B2YDu|FhB78Ubv{!5225*;V{Gj;1%mw!H_Mwp`FL|70$!M z<1j#WN9VxceDA9j(Ey1aI4)jlR3~x6Zz_0sPUxtj8SglKo8668^qRg+fiXh-*MzhtNy8mst)p~jV*9-W0MF0hqO5cS4esf_5 z_tBY6yJ=J1Oe+rfGS)@jvYR{Gx~Q56C)OEPibKbNtQx29v<)d=Cm6_UboMs4RSK#) zkRl^JIuid)*q-jg{x>B&h^rC%p+i3UgC@-8qb1Yw*FsNfb@O zn@dY0;N^A=RNEyGl%5^CcCf^47HijP&6%a&9AGVP@0(mS3eSA$bnc{14x+VID!uZG zQua4h{KYPn-bD#?h9^|cY!}N?lQOR(H2OrHyo?CbA=SAh%rhb%5yf7H>>*BlS}XBr zr83LzYtHb*BMfqdPPy7`SkqcMC0SWg@N#H?a$ni!9o;OIszTxD?Ch+@AZvawS{nHM zrITpvE}gb&jrx+jZFh-#tA^1zUYrW=2_Gzj;YFzgI1))ccQaRQ=kERvvZXg_FOV1h zTl|^g|9Lb2FI~?68|{@W|6g8RslVj^FW`sxKdK|2|MJscf9D6E{rrDC`Q&F${_~GM z|J9#={@ z6S({5KmNzhfAsCoe(_gN{^UQy^Cv(1rzb!7@#9bb{`0^4e;C}8U;M|X|NHl^!>k|w z@>c*GI=;?Fzy9_QKmXNt5*GjYPyP@Gh!}YM(|>&O$qyg@>`!54PrmcZr~mOM02?s} zJnhL3{^0RXzyJCF`?sHc?-P9V^t=Dz@u&ar^xK~T(w_dq-+lh8??3&kpTKwA;`49+ zG0c(MJo%UJKK|LCKmDU0JpSp=Gi{#!;Ljib%YS+Lz3)8v@h_k&A=&z`fB%0z`IrCu z$)Ei3)4%yCAndch`Tfs+{@-C_(B$bK{D{%^&<#i zY=BWDlZiQGZ4YV$YJ;zyy$QeGv;2=7;0xj_t`nbFeslG$69SEb`K#3Wxjez}{jvL|%JGdJj5y*J8Mse!0n4Ds1vmO?V6AAr7r;)$23r-auAS3QK6pcjblA3;Pd7 zo4z-6Mmiu4P^e1JLU;3CXY+07awrzQ{PD)Y-FNDb#NiRP+t?9he$;qWUM&5)F?w$S zTGolymKTPizPf%vtWX(Rt1Nj z(txV)oX&gzD441=r9Kyb!Qht=iQy{+dG>FiyAp>VU#8hMqPT)m3KZY>~B)r z_coL4fHJiF>aAtyM4~M^S>QHZ4u5yLTiXW$S}no;h(8N%1>qw zQm442|4t2#uwDy&W5G(V@QO^%f!TP=630v;3!C@1y8G_~Z`xJwb+5*&a`L;`oBX0| z>YwFsW0aaQm;ko&&*2j_|m)GSdzP&d+(UYHugNe z5~IFELE(aOIIt03!u&sW9bIs-o`tfE=u2ngFWCO`jdW_Gf29!U_-b-qba|_ z(FV~46{vf-cYLtf`G)t3Dk1R|R202Y?c}T9@Ei{lw;gX`QG870O$7AWg$7@5G}k_O zlOMf4i2`v;Bm-KgHY=)OML^5NH$e%D;=mKw^mlHF1w4H$USF*5yeS@)`AE4Qe;4yP zyZfcZm+qb~@XwU}&jv~O0`33$>dNwz{oj1)|9>GrTD|%5$G3fVa2Mph_o#}h_aWt% zU|d$FuJ`N_*gN>{%O7uo=^qCNVBAM&9+bF^$@)bZ-l21W7`+5i7JGN@EM}#IVRG#4 zN^xh5ON~j04&B8{0H=na`D}V9Y#E3$U*k&SK{d4>BqQ2goHiw94aph|x<>i3h3Z!7 zlUogLhKgVsR^#$1@tEdM>Ke<0>60!_XXEZ+iQEVGH{R}aH@oyil&i!2 z?M+b~0)y&5sLEsIeo)1fqv}={kbks&=Y6U9-)f5L9{lfJdJA86faA{q3R1y*@CYGw z?`-dY#Jb<p5F2DkceywO-K3;pWwcz++Jc8DJ|Ru^Yk z`Nq5e=sTT*L%el50oRZc8$X>3SJ}%-wBl*7W5Cc6*SDhaYaEz^e?&+BH*wfhsMrsp zS~-Dt+2B@XTP544ze%mXIRXjn(X$Xm`GTIzK5`@rHN&LOLof+DV2W?=zAcFW=lQN% zsdfbY^HC+R-N09Wc>Y=PD;CP5X~Uxk4E2f6HRP+ZSZsBIg+Z-Bitsz{b@J|R;@F}Z z49-1k?DWg?oE}%&dvdqJGUCCGsulDB{t*2tRjRB9ba~x%yE@3j&e2>XDahG3(19yG zF)5W670xOQgBsl=KYn&-v%aXR`oYAT5pdP~ncd5D9~bp-@lV!wb^rKq=Njt=n*_h; zcAsH)=?_x_Kri&x_8}3|yW~l^4mpwM=GqjazET7EP3xpDe_q^A*8c0po-7f~mS4^B zp1Y4r?7!vZMq|qUYrf3?e<43F?Z21y-%I=NMdyDENzQlP+de!3q5Kxh)aJiyfl z$JasD{ul=#|9MrB?rBflfB7=jKe6U3RPl z6P{rCa%cCQkGDF9M`(WVSC0rkF#hes?&16QQEP>cX0^jI01EeW0r8C-Iw&a3JB1Fg z1@CX{ZoO3&8wX@mbg)=0UXA#TnIOMWE=vfo5BHCcy6 z<<2p^3GC?9a^*{9(-Q3f3iW%Kk#<+tl_5HlQ1-bp6W_Q=1HKTMrjbfnJ9(ityS8^| z@n^J8Y8_F$l4y>8m~nx5kDV;K2?Sle@E89yeZ0!TD?}U2K|-lz&;h=uRrGGGe5+ppo_;3sR=x?g8m6Uw8n#W3)S66{4JjyOg@ztKe+G&@2{0#W5rzG zwGW+-Y~2(dpHMXdcv7#ZM`z9;!j9_n;F0_uZ;vuRjGY1exuU-s(cjCdZ>(U10e>ORnFy+@%m;-!%T# ze!G{|skbUQ+ARw-|RGUS4Uy%a&bVX|JuV)Ysds=5lj+rPuEb`|W`(_+f;#gs{7*ZBrg& zVd!M_G}9Q^ScsT>Jv2__T?s`f)Tf_va_;nVnU7_V2t4%s5E)a&e1d+4^b_Q}^6w8! zhBbGbiczPA8I32yaMn08FRnOHt~PFADH!wd7)E<*b!Fw+174a$;q;*4Me2Dn>g=0m z$FF@xo+PiIn#d#?KcvZkuF{^GVZGg~n-4*p+`8tR!}A&Qg@>~jDf8kvsmXW{_}3ox z5^T@@DDdOS^aQfclNn^+%$x#@rt&Nkx;C|qzZKiDJw5*H^JM(lH!pHS+fjchut6a@ zB~^TS*q|T`W(_*aT9aZ-OC}raTPy4BUSrwnwJobxZ!g;`tEnm%+LEpCOt>s3m zx7r)pmNi^!)LV9Axwqb5U#r`Lw$*QyHLwrTDymlLShdtR1Gak~^j5r+b2i$LT)~7u z#kbxxP^C$OUe=8_Ase5|P52-^2&w*#uG44Zx_vfg_K92>dzBof!{^AT} z{fje{wco^0R%Q;R{>2$eBafj>Z^g@2s6KNr&F0nUMTs6Qx&}^&hmH33?!WE0F1gE6 zV=9mBu^*fpe1^F0*g?6pvfKv7zTPl7DJS($lr)U+nfAe_A%%gxo*##H;0cw|qkk-d}kPGv|E+elAq zxq1I~n*3B3&HDOkV+G{Wr4*h5cXtlB27+s9AvcRarM8luao@GVP|DQS8mJ}angOe*MR;VfSng_n(>(Y{~^vyp0G0`CNj zBG*2!t-(2j-rw(TY#w2@-R@q}1qMbPJf{^089^mKIoQ0{eQ&MZZMRI#AoXs}i{+;FFeFY9 zzyj!;7l?l)z4$)&w79mWr?auMv-j@hdTttOs|c`Rm^)P03dX+`Kr=3;d|(2v$Qfkc znvCq+X$qi*1wcI+I6?kE$A0b$)j#piyh4Bi2gw^OYO-A*0_1i@!Onysa|G^Lo}bS2 z$Pav&|Cm8wfn>=a?Bu+QsQ_KN9XxmNcq3ijKnHQ|O9miw-yQ&SId7Qu#CP2;VKw)) zGGR9g0uD-BQGmO?n>#mV;FB}U$(@K9bg_^NK?zh?wb%p^r!i66@r>SXR{v` zKn?)2o6gY43G$FN_59H=v<9b6Xt#4WEi~Y65wKlM_{^U#4=udBb9mkzTls78!$MT! zVIjIPLoI;Z3Q@X;1!>(3w+JkF`AcU4TEJcdDzL(Hub(?$us9xCQI!9VaGkIy$Y9Lm z4%9Dz)$qaDVvrCPwQgZlz*a+`1?&n0TNvPB?l!&zTf}&aU=2|adxgk%1-Jl2#F725 z0HDs;ES35=OEy?nDNF1jkg%| z7KL37c@_q^kTE+ET|J&Z;E8PqseJDoK^H?7lTnbnMUP;M8EipdRR&J}paZ%Rz6ii} zSPVfh;6kJI0DR1pp2US-}vj&w>~yg7))I zTfimc0-ttFhx@3VQBf9~2P7C!qNg z!}x)he`WvyEnuuggjNY??oyJVTKVe=y{)I5}M}WK{CwI8tLZun_Z4vAifU|8? z0APQTzsdk$(F-w}AKn)8Z zgCbG`#z0v`ND2m91Xqu}0%*3d0~MZqCUaYIHz)vfNEfT-4Y>&Ri!k%Y!NiL5*PkXJJpF7M#fCdE!gb9X0@;A*0Z0-_a!Xdo^hRZCVojY8*Zl-|o65QPJOLr<3 z0Mj}t2yhYVoPwJ_pDkohfF@oD%wdp!@&m#hgIZSz+#KmpvF=UoA(;Z5j)7f7 zNS>hR3zfV{)s(651Ta{V)8=np0K2Y0{E;3 zKCuETcX_FycU7KacWmXJ&OfUcC-+UDd!b)qH~%DF?jZh*W(AH~&;Af?PlO8+QTQ$9&{SC5p{cN_ zLsMZfC!50JPW6O%-lUiz2gRI$42wE06c%?}C@ku@P*~h?Ap%|0kP91eAqSkoVh=cl zg`7hQ3p*?n7JFETz&isxbP^O$^fWBwWKUSo$)2K;TEmlZ{!VKET7(UDG9DB$)FKSK zlQ*Mfs$WTNXeP1ht4z3qzh*`NvzriR<+9 zH_Z#kRVpTnzL?TJMOF3*&&Nds{Uz7})~tYRLxfpi$zB9s070CGg@ljJL)XvUpA^}- zV>KETagwiy;@IRYDCqnP!yeeKT@dWTPVOk^1yv+h;KKsJy1xWN~Q zncSIORLEX0sQg@U)#u{Es<6aGq?p7-XO-y?4yi2pFO}U8clSSmoVjc=|QTlf_&(LTI==CyXcJyvoG1KNX58PZ)SeP8E6B$ z7mtir;d!_;bb|4j1!JJ6AILFd;K=vf^EsooLO(Y0jpWl_Jk{@T>WLG4Yie-k)8jo4 zgKt%%z!{C~Kn|^h2!2%h(#xNJOFwQusGc@!joR`O{92pzYmS$9A9xXVyWRQ{Ux{7M z{###ZtbD1_T4~l->&q+66?oogHSvAk1DW*`<5>{s5*gA(?Jj$to!oE9&m^#i&cj=8 zZQkE_yVKp?Jv;)Y+uc9t+}VEbt&;2X22L>N?Gn5#;oUY=$j82*;i(mr9Ix-jgNs_p z7NycINQs*QpaVsgw(PJUI1`i&_-u3%Rrw-ldm#G07g>&H2O{9B+3};m3eHRKfc8XR zytT7=(0!+KaJap<`&Q}rU`GSqaeCoRQQet8IZ<`7;pWh_M%Z-wvVs4m7xNi@GW$QA z*!|r5xMcsYwwCKt`@hj_zuf;X;OEtm>-Q{IbWeH52%?3OejM1YZH2aICXXBsc3c-# zIpKt{Yk{)VizCMk)y}0K+&Ov|3i0a4s)t9V1BNLd%N`!_=1e|5^y8q<(2z)*wR#O! zsy6zlbQq7vu*vb&4srtK2Vzrmg9GLUrMs9s$uKu2=xDK!jf6{w=V4@zfdlkykH@id zcYg=B!5gL9vEvR7V6kuF;G*$l0y^3w+#J~C*X#PBd$xc*3N!kAe)>wU=&96P*>U^B!HTN9V(k+>z2O$qx`^O6)j$nhdFB9@KB-xh9hvvVHO@Pk#h*tBP@e~04@L-fjud`N|k6uwJ)lk$nuC+d$^}dR54Ff zCxZX%59BYeGSjGTZFO!R-@UcB3%_=DH*W8Ay2nTSC+i!BZ*T8+5B4{X?%g^%IPSpn zo$cFN3)$K}xCNYwRkcT=R$D5)ih#S^3v59TM4aoEg0ZLuLqGw&Kza5k8H^sJ`FiQ& z1aKw!b!qZo1UMTyBYc=BcEly|5nfdee?BV7u0?e$>g`rb)Rw}azoa+4Fn&_~8hz=; z7X!1d0n3^J3g;s&pv&Rt`O7b+;qlnyKEPIbbJR|z;bu^nXBkDxANl2H9@97o!3Eh;sk^4#0sMGCE&i-?1R3z3g{6GCFr+X*My&Z zb|vbbCdASZcueXOQH{owPUO;qttUV*G{C_a89UVHPkSzoFzuKfYA z@R=V0d&ec3$#qG1;D7xv63BFyLSUIo?tr<9d=q=K-;pYU0&a*|(F@fI0_FcyK_N;I z_j>6fo+SZE;dlYKOSsd;3k~}Pg=PN)bJBpSO0SFiAdwI4iD<5hX1&=EXYq$9X1~J! zuGHT;A$_9O_s3rqRe_3syV@vK#SyIU&3G~jEHJjKVtec6?gspOczl&?|xqXs&?)gLr%dv&0OV|yofN5RZ3F!IWZ$&PTQy(br(5n`>7_#!8jO)o!lU8tv9{V-3gEYcJPZYlG&s#$^o# zXs0ZJ&9bEI7C;wKDvXg-E)#9_WgKK(V8OW#p5zu}wM4cx7GLS9U*E#lHomU;!AOm| ziKDL9*Xql)2K?Ks@51GwFo1ftP`F*a5~DRsoV7NYXx ztacJRXYhLlnROTz($%)-L=ITCAajJ&Ab%TOInVTC`hO&!&D{xnssFdNob~^#H1XdY z$1wNj-?;zh3+?|Ua=fAkIAv;TL+&z1F!yjJS8&GH^}mQ$*x3J)^i}!!4 z(OhXx@Bh}z{r@68J%Lx4LP=Y$~iE zu+FJ<7zLoo>2@n^8mluVM_mlo)g-*}_Zpr-iS zDge6ZbpmD?sD5bmBfuOXs22~1vQMUyq-k9%^ruef5P_cye<-k05D-N|V=L>hj_8a< z0tAx;+5k1!K>(fHw*$4nsA=0^3DO5xVN;w~{zp!|zPf~4sYLL=OcRuQa#N;qR0Uv> zO*po$1{Kk2F1OIVZ3ncd3vVn|L}PiaE$D0oJp!9feNXOQlxKbbf=u;U5g&q0TLI}9 zKa4A|_Z-&`P93LIB3@BntAedEn^!cGnJ*I+kFAFSEgkl!+7=cVWJ!$!my3*9%VP(n zxoY8rVQeR`ngq*W0!ZSs@z-Sh;S84K2UTe}Yj6!(Q1qe*uB0xcGlltuJk}kY(W}?5 z(KzXXx275~W(SQe2`c?if6{7+Cx7=}pZsrsL)%tu{~-44C;#D>k3aptBwGLy8zV_h zwMqc3Gqxm!8tfCO+3_S>P*{BZ8jX`K*2LGF4A3BzQ9xsipFfv$Di%CqgCnB{zNSJeMjJ2 zW_J(Y$nJe_6j}ZfeN7)Ha90Ft2Jj`_TnYjhb^`3HvDFX!Ie=F(Y%w#b(nY*s1^(JBTOV9{fKb`e(s7zBR{ERw|cdy|tnFD@S=)2nhMRkrY2r7Q~=$4 z*LK|6S@02P1Twv@wur1bOrX)e zq^A|>ccpMMh53Qmj)3OREDFxsUKj_qq>K<*9N6w+;0v(Vg#|+bfhxb9J%CG?Xrpx{ zRc9PW_QN?nv@YpkIq5-x9@{t}Cmbh?bq?_5i-FhI;FUK3trF1^+Wi=7g^4pOpdkM1 z>TUK-0$`O!hs=yDDrWaERM$Eui}QlF2@vLp{0V8k6qKT*lL$v=XM<0z!Ewh>N%iD*I5SZ@nH3_-~w z(Bs%5MNKhzH0zkr#{p-!Aje8RU(*VV7h?vA6p~Ul;Gu@3?TWU!ZYE!W6|c;A=|VHU zU|9gbzzmE~7<9iC`;o<(t2Y5lI~pdf8%gAa1gd91YBD4cCkz1<5tt^`P7r4&wx=Wx zptY(QSYwT;igytuUGL5_{RYGId<{+(?{8D0R3W zP7|C1x^eMbR@N0Glzvn}1rEGXND2Wn(bMK^;L3Y+4TTeJ;6lro$J8k?Kzj!;d=ysI{+Wn(w z5h#Oo8YBkvboenU4&)e~HN*joVBn)8I{TIjqbS0t4y8I^jI8fDBwCT%fNlk|u(Lqs zk(HEtnzS;rK*%I+J=0CB`otzHnD?V&4yvwMsZAGOui7 z)r!+;wH~9NbAGx9)DH?VOc2w!jp0n;0i?J&IqmMz{g^&5sUex~@Wfyegw*Z`jsrmd z=DI6<0O}AM+y?Pyd7#W&#^Or#UaiIirU@%SZF|1&vJv7%23(dhC~C95eWX!>0$j}R zJLt!mMTbTR0hicl1}rYUo0KrYX(udfg%k?Z9@*0klgGq(_Kx%3LjoQ#WFOZ(MQ2Y&x!fgnjk)d@hIt23~?0F z43M3TEdM07fZ0E9Z>)`nwmZZPtdD__IdI~P0XI4KxXjueQa9|ezzeH%9~jw#I8A!P zldUCz4mpT>@fbwFy%;2I@Vql`h&|p!HurhZ+1R?@q3*PL`C&Y8qLc7j&)e6sc>JqR zp8n;}oC(t$&Ft}~fB)-m|G}^S_|KmH^|zn?)lWYA)9*h0>wf?}8<@t^AN&OvGI>*0 zT@0L%jBhZpx({r7!d^ynN^>M6Z|Z6ib@jj|#N!(ndNg{OYZ)o!`1-W9HaB@OU-r1X zDs>7p7zVL7u)HXlpXFKZdFX^W_t_T5o+JH!tSG0XK(3uN*Th!Z??5pRP*(dPaEkzD zN&;B#6!?1V*RQaUSN!9mQC<;5g1Kcu2Sr#pWW`2%V0!N51gZB!<*mNu0Qj*pJwW{? z>9@}PVi9{#*v>@+8zE$mkfTw1-4Q%D#*#%|y;1^e&UD;tYl%vZO!nrWN+IPb${pP$ zs9g4Ww^47lGTpikBC6SJHU@*nRL7~eN!P4d$=Dr7JSn9BBORzF26V`aoL5Q`!Zv;Y zh|k@f0~5m7J?I>+i#jZ+dMWSJd2G85Cg48*#KFvy0dI_3u`BIBDHl)v;(KBXtnk>4 z)WJ{jhq>vUzkm|2D-YJ2yalkpb40Xb7uHon?Y0kN z6@-Eb3Oq-FxzQA>$-mn*&gDDx-58~g6^vp$xGSYCGq^$*Smxq@V26H?u7C>=Cnc@8 z2ufaS$}9^mCzPl-g>;rMxq+1C2|AJ6W!QJVo!7}a8Uk-Z*{-v8Sg6wylk=S$Wrva@ zm94IGq86>G(L3rIq>L9a`&FIAWDyh_ zG`m6U+ESkA&57@I&OW@KnVz#Mvx>NzE=^&n=ju~Ks|_$@Js&xCnC?J7o(;Eg3Ea9& zTuB2>^6AB#12e1jivhRS1^mTO;TOlBgq#aGd;ab9IpF3I=IRt(*4L-#vUMeYQ$mfJ zOe8VZ*Q%(jP7|X(_u5{at~fD!f~!2i_dynozV^GB)UI}$Y&8xFQxXMwEjW#MCN!BZ z{(EyzMzmYFOaAp2Ka{Mh=ZvZYv}~1llBZxXtChGk_dT;SnYsP7#4gNshWq~%bA4=7 zYT_V8MKfW_v^|aS%#oD#vb595gylm){S$kMEd=`gBJ?a@ik>D%g>~u^$B2EHfJM5m zqrFD6dziIfGhH;qHg_>50M2;gQt^^5_a!68po{T$v-_E~f9ZSG&C1HG+?|=gRUFwmz~DgEDS;)@aVCRSKt3)x?)_OHfQqaq_X4A?ZiAm3_M0eoK>!?0XnGiSwx`l z+p{G{YxQDa2^Av1nGmw%mw~X7K!9Nl0tfxqe2#D?xQn+%tCjeZU~c`{XX9EIlX5Fb zLx!Wou`{nnT=kmA@$=+h{bWq-f5DnA=6UL%!f;RDNrJjQTHF+OLp4sL1!~%G~--_;Xn&Q4E2YrDKgtegNOgEPZ$sdjqU_eS!h=U`!?v{&9ErSnSv#j8NRQJ+KR0 zu^;z9zQV_{I6R)soZz$Y1T3l^pNhPL138of5qI#i9tr@zDQpMx&Ea#SoWAN!LaYeD z?t&HJ_yg%UTZBQM3$)q-^<`})3X+-XLf|K0(ZDYN5GH!&0P1^`n>>u&3P6Ci;@$0| zdwa)6Vq^Dx@$Sa|&)&bcw{0Vf*pZa!u*|sN} zFF&+I*{mf}OHy{cJ$dgx3;>e2k|0IVPC`71C6T~jaGAkiFqkp<%hrYDDA)FGg;LEM}rl&Nz2ue1-E7pPEM^hbbA>N=K zx*dVlK#Z~@5O2I80{>`~2kcY>zY-dxS=S zOO;`qCoh*Pi5s&F%>d^qaDgQ;X~52Rg`I++%g8?k;^Ym21UOh&XM+unrQikXZi6&fIIQh z;XoPy3MM}NE_4uvaQ<%hZ2vU{uNYOK9_okyd#hUb_Vn^+#B6fAhSWq%bir zf(!ayiaXJ2!z7u0EK_a*dgU?&O6O-rBb&@x`cO?x6Dr9e5&@(_7(sX;v2clVB(R+E z8(4Q$OoqN9j0J%`yF9))INB%koN{WCr#y#d`xM4@CeB>I?i0Kf+!^;U%X^{09Ba%O zP{wsaI)qGr$c!C;Cx&X+*D`dWO>02pJpm163fMY5J2~A)8xbS{5)aJQ;-YRQ&>~60 zFl!XtL!?D13O2QH$f`T|2NE}})nVoX^rstdFmQc3fk?3LRB9foP!r~RQ<2V`)4-X+@)Xlf7{=?M6>Gc z*~#T8c|pD=FMd5agOE7zf_$YfmNgjC@!3UN_=A7!KQ@l(EEJJdNJCGwTea)b6Y1iz z`aePc%f}X~Nyk_a|6yxO*8gvJJFWlsCer%zTGN8{JYS(~;VdOp${QM$G69w@C(10pPI3c`*_D%c+dk&EAHiotCsO)2zB zQwYD8i)HUL#2unj;3o5n@sCKOHzOyjJ0F?cM z4%{o#NertJxiGV0;j1O67Fa4`gI1wA1C2sLFWV;kb09WpP_jw522=qm zxNQB{M4Pe+4UIyutgKD&YdBz=gdW%tT2X9-6nc(Pd%2K}-~f;=(Nt8T_IBbA3M|9+ zWnTMJqJ%!+{6X6>JIK(+=MxoSU@}_fixQBiKmoA`WXz zd~ErB)+Frz`T^{B{Wz*^^Y)rfdB8TpqpVtc;K!Ujc5Xf%$?KSx8N)Z0uk)PwZCm6S**PxP(JD8Kb!0wY7qkq z?7#6lLH^r8C0hBffiwsC536ZjB%U_t30bT5Z^gb=?EC!0z5=Q5{NU~J?qRX;m*z89 zywi$N$&0hy)3gHm+uBm)JUF>vGoqi?wkqHL5tk4Bw02bae!e_s^P!*WeCHRxygB4R zk|$PIS^eJOYc?`kkAF z=%*&**~QVpahJ_Yo>&{onSfsI{wCz!{mt6mluo}W`5x__CKfE#Jkme0>h;gLz|N_V zREpa8?(%fST10;rtxqfD(ZTTrdW8OFkN)TK0G`1Ilke~l@*N&#k9L1PgM9FTA1W$* zbGnampubtEUkIdMI8f*NZ~uWF!bkS-^Z=KJ52jK?o=_?Jzz>BAFZS_k_{hp!o}YEm zL-^nx_Q=Ct_Hggr;cN5|KGG)TcPUx|pcCMOY0kw7bToWq4=>Iy;30f44=)am;UW4k ztnlLEvWJ-4qNn&%u2!h< z-~{&*1M>vWQTSjf^3o~(khrvL9vqzZ2 zp@;ZWcx?S(b(2>=blG+a6(+fRY3`m3Y9oEQA-~*AUv4UgQB&boT5L;(xt+e;mS66q zFL%mR__ws!-(;A7Phb9B(UYC5D?5rRH5GQ55$GzQW?kM@^m#Yy^zMdGsjk9oD7u>p zh*_6+`94QW-)dTV_qWxqIFfROq{v2AWJ3Y5m%Z*OUU#$CUBe1HS&@zm@$c!|zsoQG zmcIO((HP=FJ87XE8RB;Oa$A16mA>3EoTa!}HVB(C%&fZ=y`6P-uS|u^AP6v%7dqx# zl>V8Vx0`4%t@Y}x|U$+yGg7g30 zR&PVH|K8c@wEEu$(zoPXel@wv(7FO?U4gW&KpJ)hG9Ey5T5IxvM#0}84m2hYh#%v} z$wff+!Y1%)#*@T)<`!~2aWSwqc_5I;Jx~sm>JBK$Mv9=hFhT#=BI3Q?z>C$3V9%YntR{j;-^Gy5OAX9sZE7tA4(Yp7s8h<=j$mPte3?4r%J zjSE?e_=B_zWn}JHJ~m4)l~n6LTsKd~WvxGZ9YyEAz0Do@{CBIp|J6jA!};&269Nkc zCO~-+V(P%y|NH#pm>7O|BntGYzcH1-J_KdhaBc3&} zrh%wGs7#R^2(!8e2s4Po7Y)Xz0)PVJQYPu{Zl? zHZ~Q5wPay|WFdEg+|V9Q{XTTx(u4EI$i9OM5%?SQ9KL0>yuhw_)^qk3$X9Ti#fhCI zY#ariazpDmER^tYh1j%Nh&-nK*uuF(aKI9~A7krzKmNFqJS4#@o@1$k+(xi%_VUt_ zfR&ZtYr!*%Tx1}(6EF@4(A9MKUfB~LNIo@I@pxh*#1OiG7MhOQaDT5)nFXeXp^3r#-nadnl+Lc*Xh9KHz+<7QcQ#|v&_EhP6hF(>WV1|ce-v%Eki9@oNTqm3PuQCi>$XA*}7p(jzE}=aI_psfY7msd&z4OUKgcTl&ql?nwjWThoM>2Nl$=W=d|1a z*l%#3K;vQKv-I6HCWK|S3V|s9n-;L3fHg#dsXJgPl6FSY*HVq?xzs42A;bHyB9}VpAWhfL<;iQR1KC4(^-KOTh9wI^XCwG=~_rna)KS zPXWh$Og|XKI7M?H;aSwX$uxdtfuv>A1H_zq-*QzU1Of}T1g3Q|B-O`^da1jT($Wv8 z=BzKWtc9JiN7fI@`CSFy&%=q_p+#l-lZPdGIet0Gxnd6t1Cw z(7{mr+&(=!*+b){@DHWRqgDZ$-4~fbg;%@*!>Nj1aHq+fUY}PoJS930&9^K_0i{pb9nzg2r za;8g)Ps-=fAv$h>kE_Tzx;l$|qMlM;YTJSH&^NSx>{#|wvMbZ@B-Q>b2hmz~YFWx> zEno5}9#C^2$K->cCky&WQ;~xepQJd>gpuR?C){n_S z;LN9hCrB(uvaQS?wL>zulfR_07yQU$+m6(JgEQ;EPty{LQ^QtQRG7^4KeHVI7M=ff zyW;)7UZ>k_?f;udt^TLg|Frs_R{vw3Sp5&U_1QgukY(>qPJY41d`XxS#XB5XPoeU` zQAEp}^?gQ~oV=sA&t#L=9?X5gNhSXgdPzbP&t6A?{MXyrQr!RC-f88(22v~kwenvp z|F!a;d0J=A;kcE8JE2SNYYu|`EfOapw-14|L8luhKj3qUy5a$1Yh$TK63-F^vj`=H zfC_PXSx$OkmA3fp`g7)l!Sg3*P9`9+uL{&Q$R>cKDH_>dmxYSRa;UrphoD3$;S5aQ&aZ{daFu_Wy*||6aTPH;~%( zzg_>^^}k*J%@b$uP0T>Rchku+XXGusU@g13<&;Pbh9=&#$r7y|Ly=VLKk<@PpBqqY z;JQflr#QUoQMH4iP1f3Ka$phtcelm( z@4enur#=5`BGn@QWwb9)zCu)MN&HEr0{Xvl{K369h;MAykHd#*+rT3F-|WitztL^! zzlrqc!n11R|4iQfJrg&7&z_;>{yKD{=*)>-`Y0>t`SJGVB6@_jd|B3?r(qNq<#mmr zx<)`3o_(c!seu0b4*EW@J%1QfR{<5!e{Z|n73sgbv9;OKe*>uz{m-rE518FRuG$9- z7ab4n5e~`}8G6^IxxL}BGj>gL`)+(6gtujiAiA-g@S5HKq`RNBHSApt)6%!=nJ=tp z9c_lrF|cz5NF6wY9j=PqLeV0y!#bjSb`|FAer<*wTXHQZ?cK?l<6pZKt5oMy=4BC_ z*deZz!z;UB#$%X@G^!3&$vb?%4t!oZKq#39zx#Hzr*lK*AWky*zkrT590ld41PBKav-wqgd5I^2Y8@ z!%#6ZoRQ~5uCiy8+vq2uxGq@#AxaOirkddds7U_b*cR=7d)?knd;hD6G;jI89}Hv> zeToF{jb0|BkE3fTPePeV9%`_Wmu~@QMO6B)sTaB+KD&vKcR&lsv@VJfIW(VD+Y)?U zGNXS{_AggQq5iKU`TyJK^ji9FBF&rrZ-OX3Mbk&6dt*g_blY!|8C4Sp{a{qcQlR#O z(*l{{tL6?x^v`XrE7nm=|C^Hh-`Q#P|4pQM(|>Q1RVb*=BP|VAC z?ZocA^UzX%UNWVB8>=wpbN<)clJx(*cK_c@YUunw*E%Ryk=q(}&NUU#KX<@TwT=S% z?{03&{-1U>wp;pdAk}97#~pxZk3Z0y5)LQyXDIZo22}cf60Eg4C~GrP2D+Et9`3}BR^FjE*v%qFRPzysgcNjefl~K zQVsY&9Iwxl|L<&cB>V5qPOshnHIbU<|ExNgqh%edVGp={-VUQgNt&lZ$*a&CTvsgX zMQ@p1sIvG~5J1>gP5H@@6aA}V;Ty*bC!T+l9Kk6d6xHsG>t3#v;~>G-EjOwKA`GT+ z&Qe>O0KgdCfJx9gu2(QQ;czv>UNo1P6ZR%>3}JEb3dJFuyM#!D^D}CrqP!e7CSnSt z0tpGj6m(LLi^o1^LH7t)Txwv~SQOH#{?=G-qN@{}Z1#xDM6v{Mlc zlfQWN%-oZq{>L79QCw9CRCxZsE!qEcceY#oe-r5m+5e@wom?|uFLJI%?%s{tzm+nl z%8b-d2pg`-hJ=X(1$Jj z(lc+V~HRq$cRUkdl+Fc`mi1efCxGF)yFyE(k`Uy#=C9 zru07{m+a@_|7m+$w*TC0?|(Fs8b1HOo8|C7U4(M=NP1NgzD05xU@)4)m%#wM#Z*I2 zcS5Ewyug6q*_MP6eliCZR+9d0@W5Y|2NcWy68&%B_cgawnZA1ZpR@m`N#V+Fa8H9= z{K)J)O6qc0OASVmqY@SnzF(E7U`YR24_2t7Q2y`8`~RJ-_Wnl`Y2NfdP`F)_7{Gl6 zsU84-Rg^lPR6zftp-81V3h2Mv*^=*nZgpD!&rPH!bpDfy_f^kp6q>4Ry(d*nW`oV{ zf(6jkr4yAssett+l+vP;3gwGQ{_Rrvso9L)(Cuqdh<;_Mfd409!e+VtVQ~Lf(*Jh0 zdu{x`CeqX3|E(9F$4YthpSWb1H3|&SL)r8H&8_zQzlmft{!Sb_{hL)FPq%^@SP}o< z?#lk3Hd_5(BWeErAL%5ry<(3oWS-ekJWw3}OU7MUZX`ID$?k?>adtHl(y64naz!>( zrBA>UO*#6HCV?N7)&myHf0F)h1AIcX^gsVJclwu4_C@cnh%yQsz_#1Zxg{g|Cu#%8 zHxK_$JKG&O{tNou(tiVK=JWr78}&nPLSuU_(g5xxRI}xcoom;MAfmS853Et(3@kF4 ztn-Q6_l91dL4}x8D!O6I8*_8`a#q$HB3Ce~Oj}1lh=Ih?WeMn3G!)2mUZ9miFnDiq$l( zOW_TF!N-fzWI26{=8Qk^gor201EU!n>&j8|J%J*|Ig6vZgE=hNxc$ct{y-4LAE zRO|4IxT?#{lZorkGElheiJymfei!?9`jRTwT{-%~TnR(%Z)a~Ti*F5951P^asP9Y^ zdoQ#8n_+3kMbGdYu2A|P!Du?3(MeGrS^OG=wa{9Zo+_gLLucqGUQD^$0+V6bTP|p(h;98?dGFz~GKZu>o-2o3mNBF0vns>jjZ4R}X9ndH!2ES+^+Ro~OL zK^ke0mToEO4nab?8Wk{&4Bb`B{Osj?w(JCUJd7)?F!1%(?E`G#%<%6D5rOxZNW0WeUzGzJi`1S3^>z>;G-?ONeMhH6-66?BAr$iMJzD^1(Zkl;;g! z$sEQB`nHeb{DLMyijSN@?Lx_b@AtJ`+t9chErIz@!rd0;wFmKL~hSajsGQg{-v9G z5U{-hxRY{Vz$OMXg$0v(2YTXpho+LirF65A*FBpEuo?#j9(4iGWD&g^Aew;@W>^#H zki`;XW|7ao4DJ>%dIvvv{h~OhnzM_8uI2GQ zjsHcs=1$5BpuH1XA8Fy9{MrNtQ-y3Z`tR@^gZFXU4hhs=6U&98_5ZNkz#TO1^nKy6 zF8tUUE}5h-{z>#88|xs&=`t%G=_k*5W!MV0)P0U8@vn^*{Z{sfu@7lImgw0h3_PqH z?hrAOK2(H6NV}UvuFI2_HdEhEioD-e7|Ye)f;uAlZz$)p*+xqBZjD2L`rBQw!`A*gwwRs9xrts zVRSXTOgea`6bor}{{ls{zUSY4m`YFBeIZxC3d&suJ1l}@C$s;{@`VGyAZyYQbCdgR zn)O9?1-N*CSWuVqzdHEJwrRi#)v1RJMe<%WL@grVoJDke6&$~Met%O^;ilt_k6sA#}i0MZfb)OcrZ zN$9yys#M;c#tUM6@slh*rI_~0jcy3?9 zP1t%v5KURO&rJMbIfR~zsS0h=bj{;8`z6YjHUje89*bA8=CC3M?$6r-HX?C`@Osmw z5QN#JJ80ts#kJRr=*zod`zrJf;+6H8^bNdL``RXqZg+Xj@xYygP!(FtARk`!L8h4{ zy@6mCLUvvBejAS&ZMW1!*`Vmx55sbnW%bLf@CGX9VMp4TD!+$`&p2_gCeAW{e9Za$ zlGBT-=Wz$4$=)O0234VOkn(agNDU>i-z(zUNcD4C>^rX!s^GkF=y95zm!?xxyaUU? zoF&xX($%f1YkXBts9-EkQw|~iW|ZQAZ>(yjh?d2_T!r$eTCijspr=yJ%Ak_$J-8$3 zb$>V*o9>ah+QZ6OsT%ym?sY%)>9T`~YEfR<<=s_UKljcR*V23|$#9zTpT0UJjv6U0 zi;$;uB-=mA^)=s6Z8kAvSjLXH;Jcq^$Z&{rfKBhh*|)cDH*Y;uz+wI3*$7$`tN@Zk z^z&J-%}6gUa%RUMdq_9lBhY5|Rx34!n+Gf%9{u;pitQ+Cdt}1}rW3%^&_M746*qp} z&@dysMrKy=du{4k(u+%uw#g9vELz&w z^A4CTesG7nMz}L=4NEL9_m6S+3!#5Wc2hc0^Yg!LIKuP{LY&e*ddh35@4BiM>>^*; zxn7rYlUE;Z{g?N)H#S5omEC%U`I|pXsKWeUTcFP8O1y3~oya(+K@K)|b7O$c2P(2&% z0+nIGf$m@jieG1-#sg7{dkcJ!F|(f8!SF+u_s^1bQSx2E7=DtgfnSO0aZk((oN?-f zaSdF7S&qBG%l5Wg$3xGNlwhU8)7{+2N8sZspwxU1O%J>`ZUJ`_V5J-ntfdZvKifSA zKw&iK8*Y3MHS*vn0A@m7`COs^$}@mhVDrCF28~nSxwN?>AiM34Aw+sqwZhO?cen?# zwQo9t3Ki~Ppe>OSEWOoz)C_U38@cJ`U3(&rE+U!&nD1fpl0omv9L-Y-;r8Kpg$^snjplau@g&Y91SxyS(Edv}Lf$0Cc4{WgXzzC?( zm~;m!nz);SL712D&Hq(J4lku@VK0W0CUA&Z#swqPju9)r>{s6-d+qQ^H_#EOX+{~{e8X2;%054524YYC|sn~11Ekzb52AS+{PMy(*hzcS@0 ztJqMIn_&G4C~N_%mRA5*JTwn$e(9E$FS#Svx_(VAf<7m^bD5X!%R|L>=&y3014oT# ze^-D*fd^%20v;ER!blI>Lp)k~-QOzr^z_o*o`ougX*U}wHhmf-_*0xMQyvQHoeUW3 zzPkq@%@emio&qM%oF1eb{DpAj3jJrkMqI6askn3NSpIartvXhI*EXEBM4WpfK2ftC zigyiXFVZohZc>Fv$a-AmLh;;njh_Yb&>Zs z09y+Y8;ULg=Jls=cI61j(H}tT8E}9mnTf==fWy8ljomJKAWV@aeKi2QK$kXBqSp{` zGWrOtJ&8hd%shYu@rO}UZ+z0#1$Vwz5y#!O~} z2vpihfgI&RpPJyVTN4{Yw~oUvP>OmWq>>dFd<9rmAxOedJvacmz+yW+|Kexvsbxxf z;7ff+DNklaOTY#z(Zl_I#qWnnAA=7$14{4!0y77we!TD-(w+6lHuOx8?#!bJm-2XU z`!&Iy#Y*ahHvt888N?4cQiSUIi6Xc!Y)6nv#497C_rnYl!0j!-k_$Mv>b*jRhK>W! z{%fPplj`m=W3Z?(lQe+-0<73yK{LV}e@N|S{{L=8kT*(*i~8^{fNShG3K3nu1?c8{ zPr8doOLM->0s3zs`+HNM8ya9h)K*((qS*o=UwRq|*1_L}9wOK-3>7+Odt!uxq7l$C zgg@WJ-Zr9AO5K63JUR6NwiH0{-!m|!_+Ji6rU#kk@(oZDiceC$^9#LuSWqQ;$;|{C zDa8Quo3;ng|GIGjpf4@PdR~x^j6ZADy%V(`D+FfrYKt-Q!m_hjSit=rIgs{sVM#!* zaltUI%lUCp=HT3bskE881sCm{k>-}4#zFyRc=vmX88{QaboeH?R_tv`rPeY&G3F!Z~6Ko50 zb|2{9i@CkOqYF3A)TKKxqH>?w=9c~JaP3DO^qCv)1#y%(eC`9O@PN3M{oG@^5!K63oZH7=)*Qxw61S`Rjy2Q^8~$D(F|4NLKIz~-g9gPss@acTSK z!6=&M8vw`q<^1QDX(Iw7i^v>=F6rtgI<%5y-d-*#BZD*3y%#GA$}``+htB+E567Ei zcw^KrE${Y*LGx-(drGRvk^%UX4pH|mm781J1F2KeFZJu|D*rIx8{38Dib*=N?fe?A zHT7bRxfBTkG2J_&C|^aCHZ%sr4%PvAnziUOzm1m^w7K zurMjTePkJE<_?lmBTowY35Hc1^Kk~ z{Ika7rP6!bP&v$9n3=!A+)rzN#rXp<#Vaea{TbQ9=mrw^{i;R*A{F`7IuDz4S#C#sxk#Da$#YtkJdH&19vYxn@y?kv`iX5r^~7OVz@ziB+f3{~+Z4q1h*fo_6NSVLeba|7)Tc zH}Iqo2eG;^CNxVBvcvRLrfMbfC6cSX@SQB{WU4OAsk5Wo=`n{aDnD(=E*j!kn*ZV_ zwXXPFO~O4+8o@$4>zLpFo}(OVG{021q+nyn)>a={GZqnR80RMGupw&NqtM*r&2^WX zIe*0MzhpCZ{^;FRK)Lqqh;yj{!)+>Q>!a6H>V}8_fr~5aJJtrLa6gd012?zEwjRCv z)oeJI>T2(a{e_&qy<2I%;GGCro44>U^?Xex?#dhc_E|DNLDZToZ1r`^Y4b&%&3H!hL@|U(``}c zpco^zE#S9#?N6CpW>FCAwucr#0DeR1eBNcVevQbx0tdCuPc71F&l+yD;CBM{2oknj zHfEX)t~SGZ)4Dg&67sf4;vm$1ll!0>(_qB;wnwb|s=rMJzv}j1#m~!P3CB42_$gk= zHn7+fFc4fF^NB4{+;ie=C^m?1@CMa2NCQayf2?Lxe;O@no2cH!XZx0=l-VZ~o6Rob zCc(zehrk5;IPujlt=|#tPdsYbD|zSBK=+-)wfy|J_k9`4sBeuAQz2PwDdI=9z81%u z=>2G9r?wbqJNQ`D?C&IerpH$!AZ`fAnv?2{r zHmn=CY3hC)(e(VbvN|{OvjOOx*n5kyG(8`xnx3+XRVzu24r4euSQ+e;B!alB(ayd^ z{$1$N&0|G$xyNcBdfzTC3J6}?@b*p!KbI|x_Bs-_Cd;z|=9&Qnog&?7x6Wt=e%Jy` z`EE^+u1A*zh8G+9k^-zXf>!dQwMP~GW|UY01rz>0Rg|=sn+Zf$ygTS@O{JKhN$RZP zS;^An7Vm0&LaSx6I3EvV`6*Y3phusBNqCLoGP5O}XuXW}6g1u(E`^vlA#`Y*_u*5E z9MrY0QvC0FCV0E>H)C%}Ee4#%z9^-u7gO@R5A-Aqh&$FNxE5$^8oRHfZ0%ce!twTS z6qGXib#Q8hM-%jV5c0aEXrw7$*u$?bg(x{)=s_055U$MU76>ZN2<#1rZ%wtS#`XXv!WGxRH5K6Y^8^fx z`hj`6@7CYiV%?`fs~~i@w7b6&3({v7_S&!2>0>@P^XtqA>o2Pa2>QK)e(ci%fwDTs za~o_4#KBJE-CJT(3hV2q_-WG(Ug!O2c$?8#YnDB+!hru$UQ1=^v9k2!-}%SZ`M?@1 z^A87xWm#84(Yt~rg3Uzc-05^LT|8+$(o^ICeaAX{KR-&a+W0%{=~~9OCUjB}Ua+@h z2yYjek7&3|Iu@VH6kij33X58Te|z|f?Y_e$Ra`~O6(U4>=a(#(=7O0Xe!wzyNLyiAAE3&=x#(a-k1)#LrMrZnFL zMZ_iYw$d~fH)HCS2|n28{3~MmwNr@WWm4SMlX;iiN?lx9GAQ!H%FO%k#K*S$vt>48 z&DENl{X0URCL%g(=H03rdm_Z14ve?_s^jcMdfn$q1tNr&(l4zrB7_$jYeKX33GK+u z*gn^>hE=tN7&mJ4ir5c(N(Svl3gF%m1En2Hbp{PrQm_xLm&rYyDC`(2W-IEPHM-HT z7}pe%45*D`Yk7zQZpXL#ZOgJ68n3~p2VRc zs}+3inu;PUfva8l1!>CG>5w`#jI23Q8>>0D zMLI^eX*vaGL^!lQqRx9n#K#D8t88Vh;?R1s=}+8*?4NIIx#l~#@6JJeUohQ7kbFWPlbxN zj#t;v;9@Mjzf;YN->k2Da$`7px zJ=t55YUolPQwo#9x0Ma$h>6)>W&G+ZnR|(+b3T%he$-#Nf`->rm*nDalY9@z1~_=8 z43Gna4|4lw$bsee49+~|+}dbURJ`wuP38$X-bDcSCM zo_U--y%+J2j*n%57UNQtci%?wgI#=u@L5sCw}?6GBUR3i;W)O*SE7UpSS!&J4xw1b zMl*Q5=r3!B$c&&t{yc|mM)kSAkYQ`)2RyAB^2?lCv=}aUJ_VSZ0)A|>z%Y4mGH%Y<|LX%a$?Z#SU(8$%*vT1Otlk)0Wb@|y&kUFGXN$vuN^L(Hd&@fF%I z%^|wP${57m2x7|_nr&FGY=r_1Zu^nfS}QEU=s$4_T&bOom%EXi@4|u*y8fQomMNR< zOJpo4!SQmf9TrWMgb}sl+lD^RRODoReVM#l%jR3Y+|`ePvI&>Twyk_Ji*3ey>c*ckRYMX>iedRce-hoS(pJBv#p8~Q zz{Z}w=Ik>upLlqNq)Jt7`k$epgZ%)40JrPW(OI@F%OscB%0nKxd*aLQjZ5BECKlQ< zxFEz^UDgMc$zWYOwhtm8c`HwMNpVbV<>2=qAi!{OZo8|L zG@$g>+1|Q%cJ9j4_dj zrEV)^`z$w%Jn4D9Rgbi~und!HLx*c>oAO-eN7hN!KM`s?YXLd%Rd*!3f1%n{a=i718jdt#0G zIPJf+wKaj4)Wag0G5EiV{_z2Su8Mvywlaw6KjfkHH58l#gGp$b9-!8!3{4Wr5`Kiv zKTIP|jp?^^XhS7l5~Sqc7Ulj%7iigcFdS;sXGHsd`Ky$#Mxp=vK}pDb3Jl84B~7h3 zOy`(5r2koksYoKxfulF1T zv)En^N;Ha&&(t}Fai>}%ZaG@srfz>jX0=}TSIVW27Cumy2e47hHKOmF#!3Nui$dyZ zU~@|oDhI_gm}w=!xY8@MB^D0`2)aVSIs(ClxpdU*yfY!&$zr?NmGDk+43Zh@!T38{ z%er;l3j^oHbj2wm#hd4x(bXLL;p&l5+d~yzTz;{Sw;0Com9gGjVR5r})~RPy)cuVG z672nOzXgaxNqEmr@Hx?`abjv&MG;4ZaoNnOp~w8IYy`7)1<4lFyzrp znTXJH!_v86kK7i;a*Tqs#E~6SC%T&W6%54AjZ^VSU z9Azqj>SO%PILfddY{Q;%Cr(T&e*|+v^yE(`dxJ6~#zNM++9VY;1ZKL%WcDIwRxDGq z2&#GJ&pyK4&cqEbh5Ov4U?B$oL*F$s)zWnMSRI-RE>KidX^xnMBR46o#V5J_LD^QIc-;ueYHCwSozLM$V+=75Xz|%vg@qQw}NW zRX|WHF}FRicmY+}Y7rAop7uR|RwlxXJ{EKLA{>csPE9rOL7)Q2!&~WpI$kP#I^KdV zykw2_1EDkEm!o%zo1MqtsMn?p)!Gy(fmOK;KLA;QO5@8*X?$4qw@ ztFX4=(~*`~v2ihxjUv z&(Na?StMoJ46t(3NqJgbL7L|X#F`4nLp*d}ucYSGN{Mws0zC#l+5ds+d$F zVt_&?(NJ2}AqhLdyh%@U)v)a3g2TC=bKn+_7f!zI_RYM?HKJlIC&J95)XBdB15f48 zq`+sm>xM!K5o$s#5vprxOpCpXdk!(yAzTd|HFIjjlKr8hy^a^tu-^N^(*xP?799!- z>yu$77eL@e>ZocBxq*`)n0jDO+R(@yRnUY&@<%LP2TOgNst)rXQ};RN35!r1!0oMYQ%?|CMP9U+m)@evZ3i=YB1zS+6c%73<-1%k)s>l0 z0tnKgY2p(UU#Fel-ZCZlwOXgywDkA0y2@%tSfA#)W$pT|v-IS`G&h;^3UzqnwJ%QRo0OaCQ z*a$dKe2DHo!VJ=2$IHkC86ZsZNSbALrXG^Ff{+?&b( zv+%#5-&RCrF(5PB?gXM#+djJmSW!({1B1T|5@>Si2ieAMkkM%P#mNS|IO#o`L_bD0 zYZE!1?i-?PtS&s}&!xj=3(O-=C7Fk~kRc_?qWk~0a}~~Z)muMCi2r!IwEO|~gLeZn z!XzeQP3?SRQf5xYEeuA4N-WZf3sJ>n%x^CZ^zhxzB;h=*MGFL8)S6n@&bA$KNm~+Q zs`Yq#4?WZz0tM-*9z-d7%no9#qD#wjc6th5Mt?lzUfWqB%nFJj@$;y2r&(K-XQ8A} zxa#*jdq?DpyZPhjEG_KS@6*T^5PnVQx0BVE_QZK&6U=sF*Nx$SAVo{0bnSN}HPGq_ zQ7QWK4or~j{1;e-17_8~0u7CeR`;UlMSVBqE!4d3S~sx~5qVT#B_(Kg*|zB=S8C4p zUUYgSg<4M~S2z*OAmkIe#CYdR80^Qd0Z0|AA?4}5=Bj*GM;+I zm7nE^}a&X8|0&hXpyP4tnHt$LTz zqz|{vZ)KPzsORGwWJi9#N2+S{9!UuK;GHeTr!JJuV>-eEmLrZoLtaWKFBUXK8TTN; z`nT;h5Km%89tc_8nq+*L(N0Z=a-H|@Er#0cUZw8Vdo@b%e)sJiPZbl4rE5^Aq(t&{j++N`ARonkMgi&C&t-npqJ-G5AccT9a(zF374Kx2f zFi=tjY_HhfgA|Go9{?wuab%e$?ex?nneykl_TxxJ+LP`CH02h^r@d~6dmgBZfr7gp zB0U$8?YSOgAs?lYB4LW8)Pw3z@W=TJxI7I4XTd&yA&Lvm#RHrQ+hhT}Aa?`J z5)&mu5sIH>pynwuBkUqJ!!SLhXa%>#IS zmFXL>IeaRv}K$G zN*@H8^Zd_pvA+0XMep*Gn+wjhhVG-L|6Zm6(0!>c1DFgyhO%bC_I;idS_15qx`6fd z75imqZ;|=#YEZkmJ53(@eM$I-*3ZLabA=+8c}i;D@yUpUQ~#Jdt0a75-n(H0&GgML zMq~*tJHG`Wc-yF|8h@L{f4m0YpHHa3C}Pl+-x$Bhnac+U24Avcy z&tM$WUAHDGnV~;zaF!oUWWy6oxxsONhD|X)%S#&XN9=oF=aKk$PUt8c-UYHu_e&hj z0=C_>UVAdk5C$iY@#H zC;S|)&~~fZTkTfLU!Z+?bIs}s#1nrFcKG22;&r<;m?nk?>+$}H!IAy{EkAmvNG45Sotk)86L)yxb zI*6z0*0MT$c{}kF>&bhX7B3UzDL7}ne-qDXLi;sokshZZDSc-}0Z%^c6U486rXey( zQ5}SP+NoC9H5%68r(_`GnnEe1ss*$Xx;`c0o-l0cq4&?vJ3WE^*$cFTs60B9Dm9fV zj&33!)naOT{t-PPc&5PbJ`Mbcrn8(tqIN($X}=`B_0Y6vuC-v3!0ex zyfUmVabxeouaEnUNAMH$#ZgV!fk$p;8q=spq}UNGZ32o8EzLL#E208VKS*im0=&9l z2WqR(C(u%0hS5%GMh|G9BGaeHYyvG;Mr<#=EP|H75iJrV_{e_g`dZ+fx-P_X@~$OT zB~imqQxAbpDvju=1LlVK7;IG*wP--#OR@bdp8JwRdA*U7nqy5}Gp|uz7c%G%D1lE) z0KN|=ARa*+XcJl&tVCV@6XI~d26G-F78Cbv15I7|qJT5OE3K-+i%Y<#Vl)kMWC^}#%bi{Kn5H0N>MG%gbG<*HevRlzn&&q_~VkGLTiSI@0n|2nfl@i z!3v$euPeS~X^_&w*^Vo~?$af3@#hhgDbp|ns;vjBA+2z)!Flspvu`1;c^LjRh<1i) zto-Q&1qg0ifo8^6U}MD+4Dcpo+yD|w59yl#mWeS5OML)2-XUw#CmON+8Mh&?)h^S> zq%SYA`h0FW*@NhwuwV~Ck_51WhebP-R*fe%1o9g$ezJeS3l#W}{re87KY#g=#>{Lg za5_l~`C|zc(!f1o=@OOMr$Z%rxn<1vzYE5r1X(a<@z{dAsc3{B7Hrkv%JG2OW7ryH zh}siq&Hf4my`)3HlV|cbEUA|XW_yH2l6sl>VUY*KS=-d=rS>-ha{+Jx^*HF2uCGCz zOJre?S+0zjzd;(&yGm5!$4WQ2#3?+V-n`D~X)PE^&&}4UE~VsxJbm4qD8a*1_feHK|G+CDIMyOi2+({f^inU?ZhF!>S2jO}=TMV}6NK(SmuGbD=HB|}!~PBcmr>JywegB%T&xI(tS8vSPg z6OI65@*%{MQ5B1nMqrec=#g3}Z?ziG6G}CmXkgo^jd3wf3WnbH%kF&8ABg)s(!Ll+ z^Xx7GA-OP!9QnASh3O>jbGRVkF=d$n8kPDY#zm=7+$J!58x%mYIwNi5awVgbJMlGR znv19!kOYFXO@ykQG5;t-v{s&HMsac}k)EGP{XydsSi$B1%uiYpPqqBO=8Zx5qY=U5W#-_xuWDCB6Ko5ttJ zE+cHEIH$JdUD47BFxX5LJWshv-Jln&LF|$n6Y;kD2M^qC>z=hT&E*cyx<4umo6s}w zK7N*kLO3yh0Z`$x)qiGTXfa&_=#RRCkNic~UO>lC58WWwd*4TR&GSd%0gDy1Pct&A z;%v|Jvt?z8B7ge&ape!sKz~s4dycRH6BB6x;LOgh`3AbPV)KDYr<=ccVOhZy1~Phw z{dCkXxfG+rD4+EFp_CpKWO?Y}f2=lf3CI`2t`f5#Qo)I=y`ifIifnIGXRkd1n^R3x z5D%z(8M=8&Kp=r8`e!P!DG2VjL|N_XH~9A`t?S!?bIGU>n^R}9w#b!_rOphNb{YXF zc9`4{Vcp&nn{Qrki znfA&G&d`6olH9JNfvRi&LgzpERL1XP)&$13vJyv}^7Xo03k4L_MondVant{TYm8{C zw(o2-$D=(K7&i!U_E6!k=k$=(Eexn34NUWo-eq>-3dqkXHPe=VH+r94iCrcPtpRHA zNn2@Rl9*{ne(}OoK3cQ5fNi+4E0Q}=0@oL1tmMCs)c1LQ2&YX;S*>?j**DCJDk=NG zPo3xk18>2&^Amou$r|e=@r215rGSNPgkOG45KM)Ix|~glHS1a*k(%=_D{N}L8G4#- zB9CjW@B%Dmr3o7v+y@dCiFcMo8xXv+H+Jn0qD%-g9>$VuHuH73j1$UH_8^2H(`4;z z%Bb+Gp+|8~xg(Ro(Z4>GS~=YU*G&JIU|?|E+>i(8NN$TXqU~biJp?3mD&d;RMdXb= zetVxC+Nv{Vsm*MiXfC^MNj7hpezHx}>?cc@NT`&>O9L2@Y}%hey}nQtjZFtp98>#VGT7c_Z{~)YMl0rH zh{b^p7r#=P?wJz*ohY=R+;r4D5(QL7foUidqf&jHfJkIx6#$k+ z5qqYufJ+2WUq@LBkYrZBZA)edf)iy;O$JpzAqllYtK9Ekp8m^ie~2LTk!@)<|L=Px z0%XeJEv2kfLi6_8wpZR6z|EcJWqZqhAIh8(>jKnPgNhhkyE^V$V6>lf9TctQ@k2QQ z_aE_}H1*3^h-SLE(9F&lQhzTyAIQ!Ulvcm;1#gEcb8Vu0+ zgCc4(@HFEvx8IBv5lSq?07o#`KIaHv0*m6H{#PPFYuoLb`Pj^{8BpO70KID&Z`&6K z-hZ)~&d22MCKgnYQf}n7fKxkn-PdVE)!rvu@_5cAl^<^&Jl>uEwN0eT(IM)P<3{DGIa}u<}REL^K`SL&^ZoYb#?VwtTNFs1qu^Q zmI^G#ilDmxM5t zk6if!wSeu{%|*aX6WG)NzlNQk@oqy7+82Ro!`I#Z-0Wm~hu8Twou+P~#`}dbB+K@n z+Ap;PS0L>MEzu&Sl-zFrtFqqXBcOpulPphhk#<5Z9<3j!zSIX?1P{1-NU&F4GM zNS7M*k~_(Tg?k%n$kj94P>5Pz7DPT;7o-w~k>?mi~<9^q%Y*0 zuW_bA>2{PfL!h!PEHTDkW%M$#_x?REa-UFSUTApN;HML;;b67Y4gyfW%3jY>^DEty zx?V*#NZY1TT$br^SI(#rpUJQ0^?7kP8)F5Sc8tfnqDuF0ZfiNk06Sm9xkLCAL~}yx zA9n^R_7uLuEA>2^3k%s6?V7&CV@1%zOpsU( za4Ktm&)LFnS%J1F)2M604M)u}+aqWHkd5md)0f!_>zQ4hHo~#6o?qnUW*@;YL3Ed5 zte4>6va*9sR4qGL`HjpJzO~J*M(VXY{uWEVauXb+{u?+edjRQWRzqrknYICf18O}2 z^qHNA9zRVllh=IX_*43oV963w0F=wTDA8NUp$pkP{boQ z8>e*Xe;AXadIc1GjQs+jyq1r^qTT}}3DC7uy8HswPt)fB?Cf{3rSHDc?G{=FB#a#u zAb<0p)*zq>`TPxmFxm~X_I@~^ME*_&xfG5G-QzY%PO5SGYl&R@>+GO_0G%(v^5pJq zA~ujai{u&)0X5Ly0QMf0_rQ!KM?LT*@$TkHM1p2WKevUMv}`4rp~y@+1n$~7{A1^> z5K@uIUUx5a+ToqCa&eGkL+?cs0}69UtMMLR6wYkvJ>cMrXc4`2fsb$lBgGWihpqk0`Uo08Jn z1zMN40BfpQbWSpD@ui*QcVTh;-xMdb$`k%L#HW8oFIF?$w}UJ$kVkE}1qQ~CYR7y; z{_;9?Hf>GTQ}8E8tZJRTN4?KC`iw2Ak`)!5F{!}74fzO<#xrrk);12}_l3e?S&}K7{n2{ZMNvFV1kZZp zP2}NrwWschuk4?~vW-#q*Sax+PG|(&_A-f)QbKg+GUO!VMm9>r;{}&bVWt*mlYV@P z<39b%iK1#>NYxzM^fi$z2@#1eEyD%6NnMpZy71pMe(Fj|cksCv=y||IDrEPeyl=GTlms<+ zRU=#dS#4YI?YAqSzjM{`bx)MWuRR#cCf~ z_?JPXl^^o*n|n6fxuZ7%xY52uwrn+F0n&0djVt7>T4+%%$^YnJe7+$B6@_I_?K&)T zlHS;hqod!J5Yer45SwcOl{Tt0{k0pl441-^f?| zD3PR*6Ll}Qikm}045r0wZwgQDp7ZL-9jj2uxnq!=Tzyge38CltdgFtfZ0H#vkDrHd z1{@AG*#fPNi)+x*ZQ)E*+g~>w<(McPp#!~)HY0qFlj0#Jj$6*O&e^v%Lq71Z#g{ja zc-u@&LkA&!Zwz6N4%yzqh!h!b5~r+d${_En-egz`Keb-TlkLahDYUMxT7TOF8 z>MEPD8PydeoS9D;Di9MB?QasOzcp;hqB2sBA=2wNpSjb|Nzr`XRm+Hou(3X?R{vJ= zPgIwhX%G^uUIcYR#a}^%0yo{~?f`W~NSMw{i*M}F*8ZSp4%#pCWQc&K{s@a=}Y8S0UQT3!0@0A!oTZ{vQ>s*Ep4_eZ1;K*c@C zrO@Di0tVn#%5-P+3NbPSc$@#D10?^G)iYlS=RwCc37qr)-icvDUC%d0yv=RZU}@YF z###XFAg2!@IK}f!Dfzg&2u2xdxFPxXy#3(*pOI(n9ymJ`F*_zVYO=HjwpZ<;_NKd} zWnelyN@QI<1d_P|G(U=F%3izxZZ5gTFGyP z=Px)(onbn$)RG7e?0dMjbFI^YT1E-VeW`?bvIwW>P{E?ObZtDq2+8B^pPCNDNb?~` zod(*Rll`|nG^ObSnU{R|chH@pc2G?Eg1Kpfd4JeH!Rzl&HZ}yTto&zn;);_WBJV^0 ze*o%06~9IEi~rf#*p|-!x*P5OzmWu7RJ<7sBaK~&SaD!Q&Yf%F8G!vjjsheH%ohIB zG>9jzlwtJjg;2A2e7hLJLb43Bi-4R==syXVY>&K3G2jd6f1|r8`G4I2pRg_c&p)Z? z|8>y6b;B&?IShLRQt}^p(Jd3U=qk1c-I8nG7r3HT;Qzgv`G2pw)AIkvO6L5(_f@I@h$C86 zZh8Jgfz%$K={E3Yt{Ua7yV-uv%|J&Ya&;K4Psn-7s7;h`F^%+>hFc@0{A{4-( zTo8KyCZS#;H@u@u@!SOiJPVDtdwp;{Z@dnCkS-Sf(d5gx1K)+X9Nk zI|n?EmxCkA@o7iJPIS9F7=%ew7vmoG-S|kf;4~?89G!{*d`ybn2jT6R>kJ;$C55Oq zS<$}wqCr|v9r!vapNt!cxAfnUa1^RWJhe1^Y?>~U4EX;{v0oq+$^Sd@{r_&a)&Dh; z8n*vFRYk>6iP#)9qda>gUdL`lpTU=t!7Ro1KYBBk)?5KHYI{*xS$Sv9iSp?G#v9iV z{h?a?hs|DV|J_6?8vp*tbNzU>X;5YVx6^6&e@!IA@$X-U!4&)cBLTrni30`e|HkIF z?Ek0R-D%hV1`=KW?S3#G6Oa6h@r@S_tcerG57xk)xc=aUg*GAmWNjC;g=A`2V!-*5 zg2B}&=-(ck=oh(a!HMr(@A_ue0Kwwg&M&j_FLv$jPo{OZDY|iV_JuXHNp*eN4ZT2? z+vZo{zotR#%vfKE>X2wTf-Ux$cE3O8icjn4;1czsNtrW$3av~P5XX9}RTGE?goJ9~ z&6ot()o5wtjlH?C2Sq2M_=FqYIkC=`dp@<^x}oom9+BxzeQ)Twik+rW z&FLkw^RM74v7!7&V>z!@(go$qf8DLEZTbG!W~V*>Z6eJs|Iw*o;i+MHpn1=g0M+3* z`}bVrO(#s0vL6ZrN1Rh4^pcU(X&crtu$2ltL#<90L_w4>7`f+4GoOkGvoHm`D_?s; zZ*Pd$tl;hU-aw3ZU+Ugd23)&5%-$92TKsVZwJ&(2Q|8$qQo~%@W3q|4pCOj9*s6PN zFylPqMc2Qp4F!Nzg~<0&IVEzj8;(8Skwu=W7^VOBMj4gO;+5%@Vz(t(VTW^rFahs(vLLIZTi>|Jy zd68NB00GH(pthE!&^2wUW4qgTCJw$pqoSj#*pEDa`f;5DT`Or{1*kq~a^2l7Bfg&2 zRWJy;o3;d?hgK_895fR2C>{5QIU(`96DDDJ?CtwaiA-7njajy_otzEhdTYbcG*FMUS)q0 zVx{}+m=TN;Xc|n)Iuo7+hxLw1V^Zv%I9C^w!O-xKC>Uy)(2WxgWR~$kC7c+zNXF1| znbmB)w~i}NHwA;ANznmG=RX;Mj4V zPle**Q9SVE!$30tUNjv!gY$d{d2LSt1k)T_N+SqvSi%;bTYg-)X#1w}_)&ZOUFEsM ztUl~jQl5Gq`@yMq7sO{lpzO(@cr+1N_irbGrx2ITIs#RFnHN$cSA>GnZ!4D`1=rGb z0%OEc;UnjxTIMya9RVnHU;C+^9UGqi(n*ice@nXpF0lXG+Srur|2Dw>w>|%zf13UL zmrf0Q{#()b4{jIgDXE$+a+0gqE)>d5>PYkTr(u|91C4*~-)W1*S++{#phoNgA1)t5A7Z_jJ&UgIIB_*${rYIrML5p%0CfVfy|HBoQ+t z((H{-!F&_VIpbG#3g&EcL+Adnha6M2?fDKq0kM^mu(ojH6CjMtn)Nu?O|FN|bo6Kw z)Cj||^T(qiId4X;+b%!RJ=ar8dHcUO2+`8;Nd8|odhPwc29m+}qn%CoFvt7<-A+%6 z|K06wxAxynq=xVRD~}^sotf?qywaM>>_8Niv{gda%*xuUhuAey)s|BfG6g5j!zgfa zJSOC|dlE#R^5T!SyW8dR>q`dw-y5U9^W^_q8?yh$Zl~4%Hj#ie%-wY(XD^-WAW?E- ztIPci^L0|kvu6@3M~^ZF{*1|xfO+;z;f2@~%ds<=xPw*3b8#IgB!2cxvAFWCS0Vpu zy*-hFg=I@vzDq>lJIIzb2{IYw>afohz0oHQf|TNhvio3VEt6kb#g)E)KDRi72K*mS z^Lg_Boo-j*|Eu-?*hFer{?Bv&RV2hK%q@y}hRMauiK9HdGeS(kw9AwZrhYt9Tag-B zBPp1kdEsC@0soI^B^!9d;i}Gsd`Vc9cRMp9fdN#mK50VkmMPCoo96=vcNFK;pKFkF zue0vYDL(6-&4B;oNxF&+g{rLr1^mCWxgqiY-bT08|1^<46aL?aIao9hxUMG@qHuQS z^&hNy(c(Cs%%b~&R3!iRc6P+|zq7H^YuEn;3zmWbnIxa6!HJ=rtJT9dt;;J{|%%+ z7oJsP|IcLZ|4d~5&sygE)KgjdCoy5mF@Pfa-<0@&Z)0btwf|}&&6ob4Es}{NYi%>N zuAtX_mLBSpqIjx-b{8=d^dBpN`+W&sA{HiD+%OzR*SX5#mOK523H{H$0W6~bo_zk> z-Pmg5|1^=B*#B9J$H87O5w6v0j2hZKU8AX({wLwocW2rFRFMBSJKa|Q(?n|J|F1ih zrvC~XfFkNq5R)b#Q)rC_y0|# zdDDM-Z?`4ICz;CAe|Z6*kp8#i^?#%F|JO*GH~qKk_0vwp^v|eaE7nm+|FZp8x7TUq z|0Yr+_8)`LyE8Yh7F>O(^R`;TdQuMk-@8|xy<9>K2-gIFqpiN6M-%^u&v&=L;fKld;=2=TXEyR|5!5>(-YgzhZC4v7_ zXWlg!{V@snVM+VH&7I9oYya0k(v1J!k#p-FdQlv$#UFFqZIBAq{~j89$^YY4r(OS> zNZ(rC`E=yGu+T)X5?B8HVBkgz-!6P>!LfY^v9ztF{<8IM>fF1Yb>a4J{9qJZqeTtn zSX;3U-09(tliPb!X+XrbR##sa|de})b2FC3Bu?F`uffZ{_P>2VEs7qrZ-N| z+xh?9V9;y*VEhW_zPRxsYvf&pPWWJmit0eaA;t3_Ms|uBH%s zKDHcxupWe{{5TkR!v}aY^^s&?#W$`6QI#Vr7~&sqk1wr5@K_OAZ(ZLFoso4qy&8Fa zRQS;AyME+aPGn8sS#;wLtg8oH?hPPvP7$%*Kon933}jwfu7}=3-Ds}^UL-6;R!MCX z;))f7){+wg{-H%IYnBnx57x***d-;`lwFXubYOWt277~K3-kp6L=C<7P}g6%)--a5 z)6oiofbv?u9$dUTxxBD;kAJs*-90F(LZ!QSQJ?wNIZd3JhozQ1N! z=dPP{F?6P?lhZC9B9P+%_2j^f9d8torvHwHH$n)G2G)&p=b~ZmyJ!nJupBfuCl95@ za1{90xV@-I)}b#gZ)o{JykddZ4TNtXk1m3ejqi$e;P=r~-|C`Fj(=Ij3k#7OFP&W;UmP6m+vjI{=UB@6%b#LSB7LEO#31)hPWSNx0l>j=3P6j57SLle zxi)E&X8rF6{&1~dQysbMe-EwrJ<tG5 z?;%S`v7)09D+sVuut47nBnwhtHrWCJm_fKerDu{ZQ283f3w1w~6)+Hp86^w^VRjJ% zy0oN>LE1mFl)(<>3}OZXQ?s05)l1dSpRX@`>-qiBbl_qK6vMTf#f9wAkI_T44)MR% zZeFoZ;{oah@fm1>q=JtA1mz@UKz*XtaE^xyLQS{u0rAy!_d|Ja}!N?q0mJ7T4XlzaCAmrruzY%koyra?NHz zZ;y6Q?Zf?JtJ~?Mk6-V<*}Xixuz$XMgWqkScNy5zT_i#t?Y=$Ov(GQiti|`=E+fR& zpA%`=!Xbbx9Ip})A&@iaTkEcCp{WTo50Sfvd$|FQpe~hG7xgM#8?$zg=3U0EcMtFg^dvDK9 zE>G=$?4O+`KZLHLj! zw7&ZeBlqejKu7M+j!}Oi8NiDAAn7@SKa?Gba@aVBjdGOiL8

&z+ncfx6>t-`;)w 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 literal 0 HcmV?d00001

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%0A;p~9g>9V%2Abvo-?Dl*6&F$G2==aVT8 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 diff --git a/v2.1.3.tar.gz b/v2.1.3.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..0d6428e6aabcc2602d7ca9680d193f3416d1f51c GIT binary patch literal 151867 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