From 751d464ea3ed8ac00a3481714b0b264f2818bc4a Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=A9mie=20Galarneau?= Date: Fri, 22 Mar 2024 14:32:56 -0400 Subject: [PATCH 01/16] Clean-up: tests: utils: const_cast MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit clang-tidy warns that const_cast should not be used because of the cppcoreguidelines-pro-type-const-cast rule. In this case, const_cast is not strictly necessary and can be replaced by a static_cast to silence the warning. Signed-off-by: Jérémie Galarneau Change-Id: Iee089716e991c52686a0fdee5a7ac2aae0a30b46 --- tests/utils/bt2_plugins/utils.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/utils/bt2_plugins/utils.hpp b/tests/utils/bt2_plugins/utils.hpp index fcf76371c..1d306fd1b 100644 --- a/tests/utils/bt2_plugins/utils.hpp +++ b/tests/utils/bt2_plugins/utils.hpp @@ -17,7 +17,7 @@ namespace bt2 { namespace internal { static inline void bt_value_put_ref(bt_value *value) { - bt_value_put_ref(const_cast(value)); + bt_value_put_ref(static_cast(value)); } } /* namespace internal */ -- 2.34.1 From c1d4a65abf4f5ba09ac769e22f8dd17fea673d76 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=A9mie=20Galarneau?= Date: Fri, 22 Mar 2024 15:27:08 -0400 Subject: [PATCH 02/16] CodingStyle.md: remove redundant virtual specifier MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The coding style mentions that override and virtual should not be used together (as virtual would be redundant). However, one of the examples commits that cardinal sin. Mea culpa. Signed-off-by: Jérémie Galarneau Change-Id: I77dccde4dcf55591ac890bfa90aaeb1042e80d84 --- CodingStyle.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CodingStyle.md b/CodingStyle.md index ea9e9d2cb..0aac92471 100644 --- a/CodingStyle.md +++ b/CodingStyle.md @@ -179,7 +179,7 @@ class thing_doer : public lttng::sessiond::doer { public: explicit thing_doer(const std::string& name); - virtual void do() override final; + void do() override final; const std::string& name() const; private: -- 2.34.1 From 13d03b1e7e910dc0197275764efb6caeed6642aa Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=A9mie=20Galarneau?= Date: Fri, 22 Mar 2024 15:33:57 -0400 Subject: [PATCH 03/16] Clean-up: clang-tidy: missing headers prevent analysis MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit clang-tidy complains that some headers omit the inclusion of their dependencies, which prevents the analysis from completing. Signed-off-by: Jérémie Galarneau Change-Id: Ic6d51e82c5f5536c0d421c38a97afddbe64a16ef --- include/lttng/channel-internal.hpp | 1 + include/lttng/ref-internal.hpp | 10 +++++++--- src/bin/lttng-sessiond/agent.hpp | 1 + src/common/snapshot.hpp | 1 + 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/include/lttng/channel-internal.hpp b/include/lttng/channel-internal.hpp index ec17e8a19..bcf3225ed 100644 --- a/include/lttng/channel-internal.hpp +++ b/include/lttng/channel-internal.hpp @@ -8,6 +8,7 @@ #ifndef LTTNG_CHANNEL_INTERNAL_H #define LTTNG_CHANNEL_INTERNAL_H +#include #include struct lttng_channel_extended { diff --git a/include/lttng/ref-internal.hpp b/include/lttng/ref-internal.hpp index 13c1a69ee..8416d6bcf 100644 --- a/include/lttng/ref-internal.hpp +++ b/include/lttng/ref-internal.hpp @@ -1,6 +1,3 @@ -#ifndef LTTNG_REF_INTERNAL_H -#define LTTNG_REF_INTERNAL_H - /* * LTTng - Non thread-safe reference counting * @@ -10,6 +7,13 @@ * */ +#ifndef LTTNG_REF_INTERNAL_H +#define LTTNG_REF_INTERNAL_H + +#include + +#include + using lttng_release_func = void (*)(void *); struct lttng_ref { diff --git a/src/bin/lttng-sessiond/agent.hpp b/src/bin/lttng-sessiond/agent.hpp index 258517b5d..f9d3cb656 100644 --- a/src/bin/lttng-sessiond/agent.hpp +++ b/src/bin/lttng-sessiond/agent.hpp @@ -14,6 +14,7 @@ #include #include +#include /* Agent protocol version that is verified during the agent registration. */ #define AGENT_MAJOR_VERSION 2 diff --git a/src/common/snapshot.hpp b/src/common/snapshot.hpp index 3018fb813..1465fbd4d 100644 --- a/src/common/snapshot.hpp +++ b/src/common/snapshot.hpp @@ -8,6 +8,7 @@ #ifndef COMMON_SNAPSHOT_H #define COMMON_SNAPSHOT_H +#include #include #include -- 2.34.1 From 77c8b540e0389c630764b6298ec71f81ed03c72d Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=A9mie=20Galarneau?= Date: Fri, 22 Mar 2024 15:35:29 -0400 Subject: [PATCH 04/16] Clean-up: lttng: utils: missing special member functions MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit clang-tidy warns: warning: class 'session_list' defines a move constructor but does not define a destructor, a copy constructor, a copy assignment operator or a move assignment operator [cppcoreguidelines-special-member-functions] This warning related to the "Rule of Five": If a class requires a custom destructor, copy constructor, or copy assignment operator due to manual resource management, it likely needs to explicitly define all five (including move constructor and move assignment operator) to correctly manage the resources across all types of object copying and moving scenarios. This rule helps prevent resource leaks, double frees, and other common issues related to resource management. Signed-off-by: Jérémie Galarneau Change-Id: I970cd1ab905eb877241f7e559b47349b9371f261 --- src/bin/lttng/utils.hpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/bin/lttng/utils.hpp b/src/bin/lttng/utils.hpp index dc9c23e29..7f398397a 100644 --- a/src/bin/lttng/utils.hpp +++ b/src/bin/lttng/utils.hpp @@ -67,6 +67,11 @@ public: { } + session_storage(session_storage&) = delete; + session_storage& operator=(const session_storage& other) = delete; + session_storage& operator=(session_storage&& other) = delete; + ~session_storage() = default; + lttng_session_uptr _array = nullptr; std::size_t _count = 0; }; @@ -128,6 +133,11 @@ public: { } + session_list(session_list&) = delete; + session_list& operator=(const session_list& other) = delete; + session_list& operator=(session_list&& other) = delete; + ~session_list() = default; + void resize(std::size_t new_size) noexcept { _container._count = new_size; -- 2.34.1 From c91ccadee5bfbc94a95540e17c879ce976caf6a2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=A9mie=20Galarneau?= Date: Tue, 26 Mar 2024 16:33:35 -0400 Subject: [PATCH 05/16] scope-exit: Clarify scope_exit noexcept requirement MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérémie Galarneau Change-Id: Iec34c435327e63e046319fa12f78a74ec50f4163 --- src/common/scope-exit.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/common/scope-exit.hpp b/src/common/scope-exit.hpp index 20d9b892d..3f8c90f80 100644 --- a/src/common/scope-exit.hpp +++ b/src/common/scope-exit.hpp @@ -33,7 +33,8 @@ class scope_exit { public: /* * Since ScopeExitInvocableType will be invoked in the destructor, it - * must be `noexcept` lest we anger the undefined behaviour gods. + * must be `noexcept` lest we anger the undefined behaviour gods by throwing + * an exception while an exception is active. */ static_assert(details::is_invocation_noexcept::value, "scope_exit requires a noexcept invocable type"); -- 2.34.1 From fbd566c25787aa7134e84efcfb7d3569f27d3350 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=A9mie=20Galarneau?= Date: Tue, 7 Mar 2023 14:38:32 -0500 Subject: [PATCH 06/16] Fix: consumerd: type confusion in lttng_consumer_send_error MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit lttng_consumer_send_error sends an lttcomm_return_code to the session daemon. However, the size of lttcomm_sessiond_command was used. This was probably missed since the function accepts an integer instead of a proper enum type. The size accepted by the function is changed to use lttcomm_return_code and the size of a fixed-size type is used to send the error code to the session daemon. Signed-off-by: Jérémie Galarneau Change-Id: I318e6a8d145373779d11557a70e43abca9783e5c --- src/bin/lttng-sessiond/manage-consumer.cpp | 20 +++++++++++++++----- src/common/consumer/consumer.cpp | 11 +++++++++-- src/common/consumer/consumer.hpp | 3 ++- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/bin/lttng-sessiond/manage-consumer.cpp b/src/bin/lttng-sessiond/manage-consumer.cpp index b7eb10800..27a368e7f 100644 --- a/src/bin/lttng-sessiond/manage-consumer.cpp +++ b/src/bin/lttng-sessiond/manage-consumer.cpp @@ -164,8 +164,13 @@ static void *thread_consumer_management(void *data) DBG2("Receiving code from consumer err_sock"); - /* Getting status code from kconsumerd */ - ret = lttcomm_recv_unix_sock(sock, &code, sizeof(enum lttcomm_return_code)); + /* Getting status code from consumerd */ + { + std::int32_t comm_code = 0; + + ret = lttcomm_recv_unix_sock(sock, &comm_code, sizeof(comm_code)); + code = static_cast(comm_code); + } if (ret <= 0) { mark_thread_intialization_as_failed(notifiers); goto error; @@ -304,9 +309,14 @@ static void *thread_consumer_management(void *data) goto error; } health_code_update(); - /* Wait for any kconsumerd error */ - ret = lttcomm_recv_unix_sock( - sock, &code, sizeof(enum lttcomm_return_code)); + /* Wait for any consumerd error */ + { + std::int32_t comm_code = 0; + + ret = lttcomm_recv_unix_sock( + sock, &comm_code, sizeof(comm_code)); + code = static_cast(comm_code); + } if (ret <= 0) { ERR("consumer closed the command socket"); goto error; diff --git a/src/common/consumer/consumer.cpp b/src/common/consumer/consumer.cpp index 7e7e7d384..ed844f8df 100644 --- a/src/common/consumer/consumer.cpp +++ b/src/common/consumer/consumer.cpp @@ -45,6 +45,7 @@ #include #include #include +#include #include lttng_consumer_global_data the_consumer_data; @@ -1255,11 +1256,17 @@ void lttng_consumer_set_command_sock_path(struct lttng_consumer_local_data *ctx, * Send return code to the session daemon. * If the socket is not defined, we return 0, it is not a fatal error */ -int lttng_consumer_send_error(struct lttng_consumer_local_data *ctx, int cmd) +int lttng_consumer_send_error(struct lttng_consumer_local_data *ctx, + enum lttcomm_return_code error_code) { if (ctx->consumer_error_socket > 0) { + const std::int32_t comm_code = std::int32_t(error_code); + + static_assert( + sizeof(comm_code) >= sizeof(std::underlying_type), + "Fixed-size communication type too small to accomodate lttcomm_return_code"); return lttcomm_send_unix_sock( - ctx->consumer_error_socket, &cmd, sizeof(enum lttcomm_sessiond_command)); + ctx->consumer_error_socket, &comm_code, sizeof(comm_code)); } return 0; diff --git a/src/common/consumer/consumer.hpp b/src/common/consumer/consumer.hpp index c62e01453..310969172 100644 --- a/src/common/consumer/consumer.hpp +++ b/src/common/consumer/consumer.hpp @@ -921,7 +921,8 @@ void lttng_consumer_set_command_sock_path(struct lttng_consumer_local_data *ctx, * Returns the return code of sendmsg : the number of bytes transmitted or -1 * on error. */ -int lttng_consumer_send_error(struct lttng_consumer_local_data *ctx, int cmd); +int lttng_consumer_send_error(struct lttng_consumer_local_data *ctx, + enum lttcomm_return_code error_code); /* * Called from signal handler to ensure a clean exit. -- 2.34.1 From 9fed015cbc40e9323cca8f22702eb17ba1d9c2f2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=A9mie=20Galarneau?= Date: Wed, 15 Mar 2023 16:42:27 -0400 Subject: [PATCH 07/16] Fix: consumerd: wrong timer mentioned in error logging MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit As its name indicates, consumer_timer_monitor_stop() stops the _monitor_ timer; not the live timer. This is most likely a copy-paste error. The error logging is fixed to mention the appropriate timer. Change-Id: I418580d8928752a0702d522e3ca74fe54cbe6f8f Signed-off-by: Jérémie Galarneau --- src/common/consumer/consumer-timer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/consumer/consumer-timer.cpp b/src/common/consumer/consumer-timer.cpp index 8c9371bae..2ae7f0f73 100644 --- a/src/common/consumer/consumer-timer.cpp +++ b/src/common/consumer/consumer-timer.cpp @@ -530,7 +530,7 @@ int consumer_timer_monitor_stop(struct lttng_consumer_channel *channel) ret = consumer_channel_timer_stop(&channel->monitor_timer, LTTNG_CONSUMER_SIG_MONITOR); if (ret == -1) { - ERR("Failed to stop live timer"); + ERR("Failed to stop monitor timer"); goto end; } -- 2.34.1 From 78f5b22de60c114c5c83410015a08bdd212edc0b Mon Sep 17 00:00:00 2001 From: Xiangyu Chen Date: Mon, 25 Mar 2024 18:20:14 +0800 Subject: [PATCH 08/16] Fix: rotation-destroy-flush: fix session daemon abort if no kernel module present MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Testing rotation-destroy-flush when no lttng kernel modules present, it would be failed with error message: Error: Unable to load required module lttng-ring-buffer-client-discard not ok 1 - Start session daemon Failed test 'Start session daemon' not ok 2 - Create session rotation_destroy_flush in -o /tmp/tmp.test_rot ... ... This because test script that sets the LTTNG_ABORT_ON_ERROR environment variable. It's this environment variable that causes the sessiond to handle the kernel module loading failure as an abort rather than a warning. Using "check_skip_kernel_test" to detect whether the kernel module fails to load is expected or not. If the failure is expected, the script won't set that environment variable any more. Fixes: 3a174400 ("tests:add check_skip_kernel_test to check root user and lttng kernel modules") Change-Id: I371e9ba717613e2940186f710cf3cccd35baed6c Signed-off-by: Xiangyu Chen Signed-off-by: Jérémie Galarneau --- .../ust/rotation-destroy-flush/test_rotation_destroy_flush | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/regression/ust/rotation-destroy-flush/test_rotation_destroy_flush b/tests/regression/ust/rotation-destroy-flush/test_rotation_destroy_flush index 669bcbc43..64161768f 100755 --- a/tests/regression/ust/rotation-destroy-flush/test_rotation_destroy_flush +++ b/tests/regression/ust/rotation-destroy-flush/test_rotation_destroy_flush @@ -23,11 +23,11 @@ SIZE_LIMIT=$PAGE_SIZE NR_ITER=10 NUM_TESTS=$((15*$NR_ITER)) -# Ensure the daemons invoke abort on error. -export LTTNG_ABORT_ON_ERROR=1 - source $TESTDIR/utils/utils.sh +# Ensure the daemons invoke abort on error. +check_skip_kernel_test || export LTTNG_ABORT_ON_ERROR=1 + # MUST set TESTDIR before calling those functions function run_app() { -- 2.34.1 From 048f01efd5931e364cc777d47c284c3f7d7d6ed6 Mon Sep 17 00:00:00 2001 From: Philippe Proulx Date: Mon, 14 Jun 2021 21:41:43 -0400 Subject: [PATCH 09/16] docs: Partially document the liblttng-ctl C API MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This patch: 1. Performs the required changes to make the build system able to build an HTML API documentation using Doxygen. The way it's done is a replica of what does the Babeltrace 2 project, which you may be familiar with. `doc/api` is for all API documentation projects while `doc/api/liblttng-ctl` is the specific liblttng-ctl API documentation project. To build and view the HTML API documentation: a) Configure the project with the `--enable-api-doc` option. b) Build and install the project. c) Open `$prefix/share/doc/lttng-tools/api/liblttng-ctl/html/index.html`, where `$prefix` is the installation prefix (for example, `/usr/local`). 2. Fully documents some modules while not documenting others at all. Because some liblttng-ctl headers contain functions/types which conceptually belong to more than one module (unlike in Babeltrace 2), I decided to put all the Doxygen group (module) definitions and any "extra" module documentation in `dox/groups.dox`. The latter is a huge file of which most of the contents was copied from the LTTng-tools manual pages (and from the online LTTng Documentation) and adapted to the C API context. Images are direct copies from the LTTng Documentation. The complete module tree and its state, as of this patch, is as follows, where ✅ means it's fully documented and ❌ means it's not documented at all: ✅ Home page ✅ General API (error codes, session daemon connection, common definitions) Includes parts of `lttng.h`, `lttng-error.h`, and `constant.h`. ✅ Recording session API Includes parts of `lttng.h`, `channel.h`, `handle.h`, `domain.h`, and `session.h`. ✅ Recording session descriptor API Includes all `session-descriptor.h`. ✅ Recording session destruction handle API Includes all `destruction-handle.h`. ✅ Domain and channel API Includes parts of `channel.h`, `domain.h`, and `event.h`. ✅ Recording event rule API Includes parts of `event.h`. ❌ Process attribute inclusion set API Would include parts of `tracker.h`. ✅ Recording session clearing API Includes all `clear.h` and `clear-handle.h`. ❌ Recording session snapshot API Would include all `snapshot.h`. ❌ Recording session rotation API Would include all `rotation.h` and `location.h`. ❌ Recording session saving and loading API Would include all `save.h` and `load.h`. ✅ Instrumentation point listing API Includes parts of `event.h`. ❌ Trigger API Would include all `trigger/trigger.h`. ❌ Trigger condition API Would include all `condition/buffer-usage.h`, `condition/condition.h`, `condition/evaluation.h`, `condition/session-consumed-size.h`, and `condition/session-rotation.h`. ❌ "Event rule matches" trigger condition API Would include all `condition/event-rule-matches.h`. ❌ Event rule API Would include all headers in `event-rule` as well as all `kernel-probe.h` and `userspace-probe.h`. ❌ Log level rule API Would include all `log-level-rule.h`. ❌ Event expression API Would include all `event-expr.h`. ❌ Event field value API Would include all `event-field-value.h`. ❌ Trigger action API Would include all `action/action.h`, `action/firing-policy.h`, `action/list.h`, `action/path.h`, `action/rate-policy.h`, `action/rotate-session.h`, `action/snapshot-session.h`, `action/start-session.h`, and `action/stop-session.h`. ❌ Notify trigger action API Would include all `action/notify.h`, `notification/channel.h`, and `notification/notification.h`, as well as parts of `endpoint.h`. ❌ Error query API Would include all `error-query.h`. I'm voluntarily not documenting the health API (`health.h`), as I believe it's not super important for most users. We could document it on demand. In `groups.dox`, the groups of the undocumented modules are already defined, so that the complete tree above is visible in the rendered "API reference" section. The undocumented modules simply show the text "To be done". Because there are references to undocumented modules in `groups.dox` and in the documented headers, this means that the links at least resolve. Note that there are non-comment changes in `include/lttng`: I needed to name some anonymous, nested types so that I could reference their members, as you can only link to the member of a named type with Doxygen. For example, the type of the `u` union member of `struct lttng_event_context` is now `union lttng_event_context_u`; then you can reference its `probe` member as such: `lttng_event_context::lttng_event_context_u::probe` (_not_ `lttng_event_context::u::probe`). Signed-off-by: Philippe Proulx Signed-off-by: Jérémie Galarneau Change-Id: I2783419159f4892a992fe5bc760b6e2cd6d13a60 --- configure.ac | 32 + doc/Makefile.am | 4 + doc/api/.gitignore | 3 + doc/api/Makefile.am | 4 + doc/api/README.adoc | 390 +++ doc/api/liblttng-ctl/Doxyfile.in | 218 ++ doc/api/liblttng-ctl/DoxygenLayout.xml | 46 + doc/api/liblttng-ctl/Makefile.am | 19 + doc/api/liblttng-ctl/dox/groups.dox | 2353 +++++++++++++++++ doc/api/liblttng-ctl/images/concepts.png | Bin 0 -> 115653 bytes doc/api/liblttng-ctl/images/event-rule.png | Bin 0 -> 50016 bytes doc/api/liblttng-ctl/images/live.png | Bin 0 -> 11161 bytes doc/api/liblttng-ctl/images/many-sessions.png | Bin 0 -> 13410 bytes .../images/per-process-buffering-root.png | Bin 0 -> 126620 bytes .../images/per-process-buffering.png | Bin 0 -> 80120 bytes .../images/per-user-buffering-root.png | Bin 0 -> 89001 bytes .../images/per-user-buffering.png | Bin 0 -> 51561 bytes doc/api/liblttng-ctl/images/plumbing.png | Bin 0 -> 72584 bytes doc/api/liblttng-ctl/images/rotation.png | Bin 0 -> 53056 bytes doc/api/liblttng-ctl/images/snapshot.png | Bin 0 -> 44051 bytes doc/api/liblttng-ctl/style.css | 109 + include/lttng/channel.h | 653 ++++- include/lttng/clear-handle.h | 163 +- include/lttng/clear.h | 139 +- include/lttng/constant.h | 13 + include/lttng/destruction-handle.h | 305 ++- include/lttng/domain.h | 126 +- include/lttng/event.h | 2307 ++++++++++++++-- include/lttng/handle.h | 94 +- include/lttng/lttng-error.h | 850 ++++-- include/lttng/lttng.h | 390 ++- include/lttng/session-descriptor.h | 714 ++++- include/lttng/session.h | 572 +++- m4/ax_prog_doxygen.m4 | 586 ++++ 34 files changed, 9118 insertions(+), 972 deletions(-) create mode 100644 doc/api/.gitignore create mode 100644 doc/api/Makefile.am create mode 100644 doc/api/README.adoc create mode 100644 doc/api/liblttng-ctl/Doxyfile.in create mode 100644 doc/api/liblttng-ctl/DoxygenLayout.xml create mode 100644 doc/api/liblttng-ctl/Makefile.am create mode 100644 doc/api/liblttng-ctl/dox/groups.dox create mode 100644 doc/api/liblttng-ctl/images/concepts.png create mode 100644 doc/api/liblttng-ctl/images/event-rule.png create mode 100644 doc/api/liblttng-ctl/images/live.png create mode 100644 doc/api/liblttng-ctl/images/many-sessions.png create mode 100644 doc/api/liblttng-ctl/images/per-process-buffering-root.png create mode 100644 doc/api/liblttng-ctl/images/per-process-buffering.png create mode 100644 doc/api/liblttng-ctl/images/per-user-buffering-root.png create mode 100644 doc/api/liblttng-ctl/images/per-user-buffering.png create mode 100644 doc/api/liblttng-ctl/images/plumbing.png create mode 100644 doc/api/liblttng-ctl/images/rotation.png create mode 100644 doc/api/liblttng-ctl/images/snapshot.png create mode 100644 doc/api/liblttng-ctl/style.css create mode 100644 m4/ax_prog_doxygen.m4 diff --git a/configure.ac b/configure.ac index b479c7350..0a4d726d7 100644 --- a/configure.ac +++ b/configure.ac @@ -157,6 +157,7 @@ AS_IF([test "x$enable_Werror" = "xyes"], [ AC_PROG_GREP AC_PROG_MAKE_SET AC_PROG_SED +AC_PROG_MKDIR_P AC_PATH_PROG([report_fold], [fold]) LT_INIT @@ -755,6 +756,31 @@ if test "x$test_java_agent_jul" = "xyes" || test "x$test_java_agent_log4j" = "xy fi fi +# API documentation using Doxygen +AC_ARG_ENABLE([api-doc], [ + AS_HELP_STRING([--enable-api-doc], [build HTML API documentation]) +], [api_doc=$enableval], [api_doc=no]) + +AS_IF([test "x$api_doc" = xyes], [ + DX_DOXYGEN_FEATURE(ON) + DX_DOT_FEATURE(OFF) + DX_HTML_FEATURE(ON) + DX_CHM_FEATURE(OFF) + DX_CHI_FEATURE(OFF) + DX_MAN_FEATURE(OFF) + DX_RTF_FEATURE(OFF) + DX_XML_FEATURE(OFF) + DX_PDF_FEATURE(OFF) + DX_PS_FEATURE(OFF) + DX_INIT_DOXYGEN(["LTTng control library"], [$(builddir)/Doxyfile], [output]) + + AS_IF([test -z "$DX_DOXYGEN"], [ + AC_MSG_ERROR([You need Doxygen to build the liblttng-ctl API documentation]) + ]) +]) + +AM_CONDITIONAL([API_DOC], [test "x$api_doc" = xyes]) + # enable building man pages (user's intention) AC_ARG_ENABLE( man-pages, @@ -1203,6 +1229,9 @@ AC_SUBST(lttnglibexecdir) AC_CONFIG_FILES([ Makefile doc/Makefile + doc/api/Makefile + doc/api/liblttng-ctl/Doxyfile + doc/api/liblttng-ctl/Makefile doc/examples/Makefile doc/examples/rotation/Makefile doc/examples/trigger-condition-event-matches/Makefile @@ -1465,6 +1494,9 @@ m4_popdef([build_man_pages_msg]) test "x$embedded_help" = xyes && value=1 || value=0 PPRINT_PROP_BOOL([Embed --help messages], $value, $PPRINT_COLOR_SUBTITLE) +test "x$api_doc" = xyes && value=1 || value=0 +PPRINT_PROP_BOOL([liblttng-ctl HTML API documentation], $value, $PPRINT_COLOR_SUBTITLE) + PPRINT_SET_INDENT(1) report_bindir="`eval eval echo $bindir`" diff --git a/doc/Makefile.am b/doc/Makefile.am index 121db3b89..61d9be6be 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -15,3 +15,7 @@ EXTRA_DIST = quickstart.txt streaming-howto.txt python-howto.txt \ dist_doc_DATA = quickstart.txt streaming-howto.txt python-howto.txt \ snapshot-howto.txt live-reading-howto.txt \ live-reading-protocol.txt valgrind-howto.txt + +if API_DOC +SUBDIRS += api +endif diff --git a/doc/api/.gitignore b/doc/api/.gitignore new file mode 100644 index 000000000..fa4a4101a --- /dev/null +++ b/doc/api/.gitignore @@ -0,0 +1,3 @@ +output/ +Doxyfile +README.html diff --git a/doc/api/Makefile.am b/doc/api/Makefile.am new file mode 100644 index 000000000..b5e85ac44 --- /dev/null +++ b/doc/api/Makefile.am @@ -0,0 +1,4 @@ +# SPDX-License-Identifier: GPL-2.0-only + +SUBDIRS = liblttng-ctl +EXTRA_DIST = README.adoc diff --git a/doc/api/README.adoc b/doc/api/README.adoc new file mode 100644 index 000000000..d62782b14 --- /dev/null +++ b/doc/api/README.adoc @@ -0,0 +1,390 @@ +// Render with Asciidoctor + += LTTng-tools C API documentation guidelines +Philippe Proulx +25 August 2021 +:toc: left + +This document explains how to write documentation for the LTTng-tools +C{nbsp}API. + +== General rules + +* Use four spaces to indent Doxygen text and two spaces to indent HTML. + +* Try to stay behind the 72^th^ column mark when possible. + +* Use https://en.wikipedia.org/wiki/Non-breaking_space[`+ +`] + wherever needed. + +* Refer to a function with the `func()` form and to an + enumerator/structure/variable or type with the `#name` syntax. ++ +You don't need any `struct`/`enum` prefix with Doxygen. + +* When you refer to any keyword or definition, use the `+\c+` command if + it's a single word, otherwise surround the words with `` and + ``: ++ +-- +---- +@returns + Event rule on success, or \c NULL on error. +---- +-- + +* Use the `$$\$$__command__` style in text (paragraphs, list items, + definition terms, and the rest) and the `@__command__` style for + other locations (for example, `@brief`, `@param`, `@sa`, `@file`). + +* Use a `@code{.unparsed}` block for a plain text block (shell input, + for example): ++ +---- +@code{.unparsed} +$ lttng enable-event --all --kernel --syscall +@endcode +---- + +* In the text, use custom aliases when applicable. ++ +See `Doxyfile.in` for the list of available aliases. + +== Function documentation + +Full example: + +---- +/*! +@brief + Does something (third person singular, simple present) with some + parameter \lt_p{param} unless some other parameter + \lt_p{other_param} has some value. + +Full documentation goes here and adds any relevant information that's +not in the brief description. + +@code +/* If needed, put any C code in a code block. */ +@endcode + +Crucifix scenester vegan organic neutra palo santo glossier occupy +truffaut. Meh fixie taiyaki single-origin coffee wayfarers. Thundercats +farm-to-table shoreditch vinyl. + +@remarks + This is where you would put some remarks. Occupy flexitarian neutra, + edison bulb bespoke sriracha post-ironic. Mlkshk plaid pop-up + polaroid chillwave, ennui neutra. + +See this image: + +@image html mein-illustration.png "Caption goes here." + +@note + @parblock + This is a multiparagraph note. + + Tote bag sartorial distillery, try-hard succulents wayfarers DIY + YOLO four loko jianbing farm-to-table unicorn vice. + + Mumblecore semiotics raw denim palo santo chartreuse helvetica + shabby chic, distillery pabst poke swag copper mug blue bottle. + @endpar + +@attention + Use an attention command if this message is really important. + +@attention + @parblock + An attention block with more than one paragraph: + + @code + some_code(23) + @endcode + + Elit dolore pariatur ex anim officia cupidatat adipisicing mollit + incididunt irure anim nostrud. + @endparblock + +@param[in] param + Description of this parameter. +@param[in] other_param + @parblock + Description of this other parameter. Nulla consequat tempus libero, + sed finibus velit. + + Offal actually vinyl taiyaki kickstarter etsy. + @endparblock +@param[out] out_param + On success, \lt_p{*out_param} contains to something + useful. + +@retval #LTTNG_SOME_STATUS_OK + Success. +@retval #LTTNG_SOME_STATUS_MEMORY_ERROR + Out of memory. +@retval #LTTNG_SOME_STATUS_ERROR + @parblock + Longer description for this specific status. + + Organic locavore sartorial 3 wolf moon brooklyn, VHS pug distillery + schlitz tofu banjo chambray you probably haven't heard of them hot + chicken copper mug. + + Neutra kale chips kombucha, salvia green juice live-edge swag + biodiesel scenester austin yuccie dreamcatcher cronut small batch. + @endparblock + +@lt_pre_not_null{param} +@lt_pre_not_null{other_param} +@pre + \lt_p{param} is like this or like that. + +@post + \lt_p{other_param} is still in some state, and woke jean waistcoat. + +@sa lttng_some_other_function() -- + Does something else with some parameter. +@sa lttng_another_function() -- + Cardigan celiac palo santo, tacos chicharrones pitchfork chambray + photo booth subway tile 90's street. +*/ +---- + +Parts: + +. **Opening Doxygen comment**. ++ +Use `+/*!+`. + +. **Brief description**. ++ +Use third person singular in the simple present tense: you're +documenting what the function does. Assume that the sentence implicitly +starts with "`This function`". ++ +Try to mention, briefly, all the parameters (with `\lt_p`) and what the +function returns. ++ +End the sentence with a period. + +. **Detailed description**. ++ +Write complete sentences. ++ +Refer to parameters (with `\lt_p`) as much as possible. ++ +In general, keep paragraphs short: often, a single sentence is enough. ++ +Refer to the documented function with "`this function`". ++ +Write notes (`@note` command), remarks (`@remark` command), or +attentions (`@attention` command) when needed. Most notes and remarks, +however, can be simple paragraphs. Use `@parblock` end `@endparblock` to +have more than one note/remark/warning paragraph. + +. **Parameter descriptions** (if any). ++ +Use the `@param[in]`, `@param[out]`, and `@param[in,out]` commands +depending on the parameter direction. ++ +Document parameters in the declaration order. ++ +Refer to other parameters (with `\lt_p`) when useful for the reader. ++ +End each description with a period. ++ +Use `@parblock` end `@endparblock` to have more than one paragraph for a +given parameter description. ++ +Make sure there's no blank line, except within a `@parblock` block, +within the parameter description block so that Doxygen puts all the +descriptions in the same section. For example, _don't_ write this: ++ +---- +@param[in] hexagon + Ugh literally +1 aesthetic, fashion axe try-hard mixtape pork belly + four loko. + +@param[in] selfies + Brooklyn ethical migas, viral edison bulb meggings butcher + flexitarian letterpress humblebrag kombucha pour-over etsy sriracha + blog. +---- + +. **Return value** (if any). ++ +If the function returns a status code:: + Use the `@retval` command multiple times to document each relevant + status: ++ +---- +@retval #LTTNG_SOME_STATUS_OK + Success. +@retval #LTTNG_SOME_STATUS_SOME_ERROR + Some error. +---- ++ +End each description with a period. ++ +Use `@parblock` and `@endparblock` to have more than one paragraph for a +given return value description. ++ +Make sure there's no blank line, except within a `@parblock` block, +within the return value description block so that Doxygen puts all the +descriptions in the same section. For example, _don't_ write this: ++ +---- +@retval #LTTNG_SOME_STATUS_OK + Success. + +@retval #LTTNG_SOME_STATUS_SOME_ERROR + Some error. +---- + +If the function returns a simple value:: + Use the `@returns` command to document it. ++ +Refer to parameters (with `\lt_p`) when useful for the reader. ++ +End the description with a period. + +. **Preconditions** (if any). ++ +List all the function's preconditions with the `@pre` command or any +alias which starts with `@lt_pre` (see `Doxyfile.in`). ++ +Use the simple present tense. ++ +Do not write the word "`must`" as a precondition is already a +requirement. ++ +End the description with a period. ++ +Make sure there's no blank line within the precondition description +block so that Doxygen puts all the descriptions in the same section. For +example, _don't_ write this: ++ +---- +@lt_pre_not_null{param} + +@pre + \lt_p{param} is like this or like that. +---- + +. **Postconditions** (if any). ++ +List all the function's _relevant_ postconditions with the `@post` +command or any alias which starts with `@lt_post` (see `Doxyfile.in`). ++ +Anything that the body of the function documentation describes and which +forms the nature of the function doesn't need to be written as an +explicit postcondition. For example, if a function adds some +object{nbsp}A to some object{nbsp}B, don't write the postcondition +"`B{nbsp}contains{nbsp}A`". ++ +Use the simple present tense. ++ +End the description with a period. ++ +Make sure there's no blank line within the postcondition description +block so that Doxygen puts all the descriptions in the same section. For +example, _don't_ write this: ++ +---- +@post + The returned pointer is blue. + +@post + \lt_p{other_param} is still in some state, and woke jean waistcoat. +---- + +. **Items to see also** (if any). ++ +Use the `@sa` command, multiple times if needed, to refer to related +functions or types. ++ +This is a way for you to inform the reader about other existing, related +items. Keep in mind that the reader doesn't always know where to look +for things. ++ +In the brief description of the referred item, _don't_ mention its +parameters, if any. ++ +End each brief description with a period. ++ +Make sure there's no blank line within the item description block so +that Doxygen puts all the descriptions in the same section. For example, +_don't_ write this: ++ +---- +@sa lttng_some_other_function() -- + Does something else with a parameter. + +@sa lttng_another_function() -- + Cardigan celiac palo santo, tacos chicharrones pitchfork chambray + photo booth subway tile 90's street. +---- + + +== Writing style + +The ultimate goal of the LTTng-tools C{nbsp}API documentation is to make +the layman write code using this API as fast and correct as possible +without having to ask for help. For this purpose, the documentation must +be as clear as possible, just like the function and type names try to +be. + +Don't hesitate to repeat technical terms, even in the same sentence, if +needed. For example, if you document an "`event rule`", then always use +the term "`event rule`" in the documentation, not "`event`", nor +"`rule`", since they are ambiguous. + +You can use light emphasis to show the importance of a part of the text +with the `\em` command (one word) or by surrounding the text to +emphasize with `` and ``. Likewise, you can use strong emphasis +when needed with the `\b` command (one word) or with `` and +``. In general, prefer light emphasis to strong emphasis, and +use it economically. + +Links to other parts of the documentation are very important. Consider +that the reader never knows that other functions exist other than the +one she's reading. Use as many internal links as possible. Use the +following forms of links: + +`__func__()`:: + Automatic link to the function or macro named `__func__`. + +`#__name__`:: + Automatic link to the type or enumerator named `__name__`. + +`\ref __ref__`:: + Link to `__ref__` (page name, group name, function or macro name, + type name, variable name, etc.) using its default text. + +`\ref __ref__ "__some text__"`:: + Link to `__ref__` (page name, group name, function or macro name, + type name, variable name, etc.) using the text `__some text__`. + +See Doxygen's "`http://www.doxygen.nl/manual/autolink.html[Automatic +link generation]`" page for other ways to create automatic links. + +Follow, as much as possible, the +https://docs.microsoft.com/en-ca/style-guide/welcome/[Microsoft Style +Guide] when you document the API. This includes: + +* Use an active voice. +* Use a gender-neutral language. +* Use the present tense (you almost never need the future tense). +* Address your reader directly (use "`you`"). +* Use contractions ("`it's`", "`you're`", "`don't`", and the rest). +* Avoid anthropomorphism. +* Ensure parallelism in lists, procedures, and sentences. +* Terminate list items with a period, except when the list only contains + very short items. +* Do not use Latin abbreviations. +* Use "`and`" or "`or`" instead of a slash. +* Avoid using negatives. +* Avoid using "`should`": most of the time, you mean "`must`", and + that's very clear for the reader. diff --git a/doc/api/liblttng-ctl/Doxyfile.in b/doc/api/liblttng-ctl/Doxyfile.in new file mode 100644 index 000000000..4e78ae79f --- /dev/null +++ b/doc/api/liblttng-ctl/Doxyfile.in @@ -0,0 +1,218 @@ +DOXYFILE_ENCODING = UTF-8 +PROJECT_NAME = "LTTng control library C API" +PROJECT_NUMBER = @PACKAGE_VERSION@ +CREATE_SUBDIRS = NO +ALLOW_UNICODE_NAMES = NO +OUTPUT_LANGUAGE = English +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = YES +STRIP_FROM_PATH = "@top_srcdir@/include" +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +QT_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = YES +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 4 +ALIASES = + +# Aliases: general +ALIASES += lt_version="@PACKAGE_VERSION@" +ALIASES += lt_version_maj_min="@MAJOR_VERSION@.@MINOR_VERSION@" +ALIASES += lt_api="LTTng control library C API" +ALIASES += lt_p{1}="\1" +ALIASES += lt_var{1}="\1" +ALIASES += lt_dt_opt="Optional:" +ALIASES += lt_man_nl{2}="\1(\2)" +ALIASES += lt_man{2}="\lt_man_nl{\1,\2}" +ALIASES += lt_man_gen{2}="\lt_man_nl{\1,\2}" +ALIASES += lt_voidp="void *" + +# Aliases: preconditions +ALIASES += lt_pre_not_null{1}="@pre \lt_p{\1} is \em not \c NULL." +ALIASES += lt_pre_valid_c_str{1}="@pre \lt_p{\1} is a valid (null-terminated) C string." +ALIASES += lt_pre_sess_exists{1}="@pre \lt_p{\1} names an accessible \ref api_session \"recording session\" within the \ref api-gen-sessiond-conn \"connected session daemon\"." +ALIASES += lt_pre_sess_never_active{1}="@pre \lt_p{\1} names a \ref api_session \"recording session\" which never became \link lttng_session::enabled active\endlink (started) since its creation." +ALIASES += lt_pre_sess_active{1}="@pre \lt_p{\1} names an \link lttng_session::enabled active\endlink (started) \ref api_session \"recording session\"." +ALIASES += lt_pre_sess_inactive{1}="@pre \lt_p{\1} names an \link lttng_session::enabled inactive\endlink (stopped) \ref api_session \"recording session\"." +ALIASES += lt_pre_sess_name_not_auto{1}="@pre \lt_p{\1} is not \c auto." +ALIASES += lt_pre_conn="@pre liblttng-ctl can \ref api-gen-sessiond-conn \"connect to a session daemon\"." +ALIASES += lt_pre_has_type{2}="@pre \lt_p{\1} has the type #\2." + +# Aliases: default values +ALIASES += lt_def_net_ctrl_port="@DEFAULT_NETWORK_CONTROL_PORT@" +ALIASES += lt_def_net_data_port="@DEFAULT_NETWORK_DATA_PORT@" +ALIASES += lt_def_net_ctrl_url="net://127.0.0.1:@DEFAULT_NETWORK_CONTROL_PORT@" +ALIASES += lt_def_net_data_url="net://127.0.0.1:@DEFAULT_NETWORK_DATA_PORT@" +ALIASES += lt_def_net_url="net://127.0.0.1:@DEFAULT_NETWORK_CONTROL_PORT@:@DEFAULT_NETWORK_DATA_PORT@" + +# Aliases: object names +ALIASES += lt_obj_session="\ref api_session \"recording session\"" +ALIASES += lt_obj_c_session="\ref api_session \"Recording session\"" +ALIASES += lt_obj_session_descr="\ref api_session_descr \"recording session descriptor\"" +ALIASES += lt_obj_c_session_descr="\ref api_session_descr \"Recording session descriptor\"" +ALIASES += lt_obj_domain="\ref api-channel-domain \"tracing domain\"" +ALIASES += lt_obj_domains="\ref api-channel-domain \"tracing domains\"" +ALIASES += lt_obj_c_domain="\ref api-channel-domain \"Tracing domain\"" +ALIASES += lt_obj_channel="\ref api-channel-channel \"channel\"" +ALIASES += lt_obj_channels="\ref api-channel-channel \"channels\"" +ALIASES += lt_obj_c_channel="\ref api-channel-channel \"Channel\"" +ALIASES += lt_obj_rer="\ref api_rer \"recording event rule\"" +ALIASES += lt_obj_rers="\ref api_rer \"recording event rules\"" +ALIASES += lt_obj_c_rer="\ref api_rer \"Recording event rule\"" +ALIASES += lt_obj_trigger="\ref api_trigger \"trigger\"" +ALIASES += lt_obj_triggers="\ref api_trigger \"triggers\"" +ALIASES += lt_obj_c_trigger="\ref api_trigger \"Trigger\"" + + +OPTIMIZE_OUTPUT_FOR_C = YES +MARKDOWN_SUPPORT = NO +TOC_INCLUDE_HEADINGS = 0 +AUTOLINK_SUPPORT = YES +SUBGROUPING = YES +INLINE_GROUPED_CLASSES = NO +INLINE_SIMPLE_STRUCTS = NO +TYPEDEF_HIDES_STRUCT = NO +LOOKUP_CACHE_SIZE = 0 + +EXTRACT_ALL = NO +EXTRACT_PRIVATE = NO +EXTRACT_PACKAGE = NO +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +EXTRACT_ANON_NSPACES = NO +HIDE_UNDOC_MEMBERS = YES +HIDE_UNDOC_CLASSES = YES +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = YES +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = NO +HIDE_SCOPE_NAMES = NO +HIDE_COMPOUND_REFERENCE = NO +SHOW_INCLUDE_FILES = NO +SHOW_GROUPED_MEMB_INC = NO +FORCE_LOCAL_INCLUDES = NO +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = YES +SORT_MEMBERS_CTORS_1ST = NO +SORT_GROUP_NAMES = NO +SORT_BY_SCOPE_NAME = NO +STRICT_PROTO_MATCHING = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST = YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 0 +SHOW_USED_FILES = NO +SHOW_FILES = NO +SHOW_NAMESPACES = NO +FILE_VERSION_FILTER = +LAYOUT_FILE = "@srcdir@/DoxygenLayout.xml" +CITE_BIB_FILES = + +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = YES +WARN_AS_ERROR = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = + +INPUT = "@srcdir@/dox/groups.dox" \ + "@top_srcdir@/include/lttng/constant.h" \ + "@top_srcdir@/include/lttng/handle.h" \ + "@top_srcdir@/include/lttng/lttng.h" \ + "@top_srcdir@/include/lttng/lttng-error.h" \ + "@top_srcdir@/include/lttng/clear.h" \ + "@top_srcdir@/include/lttng/clear-handle.h" \ + "@top_srcdir@/include/lttng/session.h" \ + "@top_srcdir@/include/lttng/session-descriptor.h" \ + "@top_srcdir@/include/lttng/destruction-handle.h" \ + "@top_srcdir@/include/lttng/domain.h" \ + "@top_srcdir@/include/lttng/channel.h" \ + "@top_srcdir@/include/lttng/event.h" +INPUT_ENCODING = UTF-8 +FILE_PATTERNS = *.h *.dox +RECURSIVE = NO +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXCLUDE_SYMBOLS = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = "@srcdir@/images" +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +FILTER_SOURCE_PATTERNS = +USE_MDFILE_AS_MAINPAGE = + +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = NO +REFERENCES_RELATION = NO +REFERENCES_LINK_SOURCE = NO +SOURCE_TOOLTIPS = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES + +ALPHABETICAL_INDEX = YES +IGNORE_PREFIX = + +OUTPUT_DIRECTORY = @builddir@/output + +GENERATE_HTML = YES +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_EXTRA_STYLESHEET = @srcdir@/style.css +HTML_EXTRA_FILES = +HTML_COLORSTYLE_HUE = 220 +HTML_COLORSTYLE_SAT = 100 +HTML_COLORSTYLE_GAMMA = 120 +HTML_TIMESTAMP = NO +HTML_DYNAMIC_SECTIONS = NO +HTML_DYNAMIC_MENUS = NO +HTML_INDEX_NUM_ENTRIES = 100 + +GENERATE_DOCSET = NO +GENERATE_HTMLHELP = NO +GENERATE_CHI = NO +GENERATE_QHP = NO +GENERATE_ECLIPSEHELP = NO + +DISABLE_INDEX = NO +GENERATE_TREEVIEW = YES +ENUM_VALUES_PER_LINE = 4 +TREEVIEW_WIDTH = 300 +EXT_LINKS_IN_WINDOW = NO +FORMULA_FONTSIZE = 10 +FORMULA_TRANSPARENT = YES +USE_MATHJAX = NO +MATHJAX_FORMAT = HTML-CSS +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest +MATHJAX_EXTENSIONS = +MATHJAX_CODEFILE = +SEARCHENGINE = YES +SERVER_BASED_SEARCH = NO +EXTERNAL_SEARCH = NO +SEARCHENGINE_URL = +SEARCHDATA_FILE = searchdata.xml +EXTERNAL_SEARCH_ID = +EXTRA_SEARCH_MAPPINGS = + +GENERATE_LATEX = NO +GENERATE_RTF = NO +GENERATE_MAN = NO +GENERATE_XML = NO +GENERATE_PERLMOD = NO diff --git a/doc/api/liblttng-ctl/DoxygenLayout.xml b/doc/api/liblttng-ctl/DoxygenLayout.xml new file mode 100644 index 000000000..6f37926d7 --- /dev/null +++ b/doc/api/liblttng-ctl/DoxygenLayout.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/api/liblttng-ctl/Makefile.am b/doc/api/liblttng-ctl/Makefile.am new file mode 100644 index 000000000..4450a45d3 --- /dev/null +++ b/doc/api/liblttng-ctl/Makefile.am @@ -0,0 +1,19 @@ +# SPDX-License-Identifier: GPL-2.0-only + +API_DOC_INSTALL_DIR = "$(DESTDIR)$(docdir)/api/liblttng-ctl" + +all-local: doxygen-doc + +install-data-local: doxygen-doc + $(mkdir_p) "$(API_DOC_INSTALL_DIR)" + cp -rv output/html "$(API_DOC_INSTALL_DIR)" + +@DX_RULES@ + +MOSTLYCLEANFILES = $(DX_CLEANFILES) +EXTRA_DIST = \ + Doxyfile.in \ + DoxygenLayout.xml \ + style.css \ + dox \ + images diff --git a/doc/api/liblttng-ctl/dox/groups.dox b/doc/api/liblttng-ctl/dox/groups.dox new file mode 100644 index 000000000..f10de45dd --- /dev/null +++ b/doc/api/liblttng-ctl/dox/groups.dox @@ -0,0 +1,2353 @@ +/*! +@mainpage Bonjour! + +Welcome to the \lt_api (liblttng-ctl) documentation! + +The +Linux Trace Toolkit: next generation +is an open-source software package used for correlated tracing of the +Linux kernel, user applications, and user libraries. + +liblttng-ctl, which is part of the LTTng-tools project, makes it +possible to control LTTng tracing, but +also to +\ref api_trigger "receive notifications when specific events occur". + +

Plumbing

+ +The following diagram shows the components of LTTng: + +@image html plumbing.png "Components of LTTng." + +As you can see, liblttng-ctl is a bridge between a user application +and a session daemon (see \lt_man{lttng-sessiond,8} and +\ref api-gen-sessiond-conn "Session daemon connection"). + +The \lt_man{lttng,1} command-line tool which ships with LTTng-tools, for +example, uses liblttng-ctl to perform its commands. + +See the +Components of LTTng +section of the LTTng Documentation to learn more. + +

Contents

+ +This API documentation has three main modules: + +- The \ref api_session makes it possible to create, manipulate + (\ref api_session_snapshot "take a snapshot", + \ref api_session_rotation "rotate", + \ref api_session_clear "clear", and the rest), and destroy + recording sessions. + + A recording session is a per-Unix user dialogue for everything related + to event recording. + + A recording session owns \lt_obj_channels which + own \lt_obj_rers. Those objects constitute + the main configuration of a recording session. + +- The \ref api_inst_pt makes it possible to get details about the + available LTTng tracepoints, Java/Python loggers, and Linux kernel + system calls without needing any \lt_obj_session. + +- The \ref api_trigger makes it possible to create and register + triggers. + + A trigger associates a condition to one or more actions: when the + condition of a trigger is satisfied, LTTng attempts to execute its + actions. + + This API is fully decoupled from the \ref api_session. + + Amongst the interesting available trigger conditions and actions + are the + \link #LTTNG_CONDITION_TYPE_EVENT_RULE_MATCHES event rule matches\endlink + condition and the + \link #LTTNG_ACTION_TYPE_NOTIFY notify\endlink + action. With those, your application can receive an asynchronous + message (a notification) when a specified event rule matches + an LTTng event. + +The three modules above often refer to the \ref api_gen which offers +common enumerations, macros, and functions. + +See API reference for the complete table +of contents. + +

Build with liblttng-ctl

+ +To build an application with liblttng-ctl: + +
+
Header file +
+ Include %lttng/lttng.h: + + @code + #include + @endcode + + With + pkg-config, + get the required C flags with: + + @code{.unparsed} + $ pkg-config --cflags lttng-ctl + @endcode + +
Linking +
+ Link your application with liblttng-ctl: + + @code{.unparsed} + $ cc my-app.o ... -llttng-ctl + @endcode + + With pkg-config, get the required linker options with: + + @code{.unparsed} + $ pkg-config --libs lttng-ctl + @endcode +
+ +@defgroup api_gen General API + +The general \lt_api offers: + +- \ref lttng_error_code "Error code enumerators" and lttng_strerror(). + +- \ref api-gen-sessiond-conn "Session daemon connection" functions: + + - lttng_session_daemon_alive() + - lttng_set_tracing_group() + +

\anchor api-gen-sessiond-conn Session daemon connection

+ +Many functions of the \lt_api require a connection to a listening LTTng +session daemon (see \lt_man{lttng-sessiond,8}) to control LTTng tracing. + +liblttng-ctl connects to a session daemon through a Unix domain socket +when you call some of its public functions, \em not when it loads. + +Each Unix user may have its own independent running session daemon. +However, liblttng-ctl must connect to the session daemon of the +\c root user (the root session daemon) to control Linux kernel tracing. + +How liblttng-ctl chooses which session daemon to connect to is as +follows, considering \lt_var{U} is the Unix user of the process running +liblttng-ctl: + +
+
\lt_var{U} is \c root +
Connect to the root session daemon. + +
\lt_var{U} is not \c root +
+
+
If \lt_var{U} is part of the current liblttng-ctl Unix tracing group +
+ Try to connect to the root session daemon. + + If the root session daemon isn't running, connect to the + session daemon of \lt_var{U}. + +
If \lt_var{U} is not part of the tracing group +
+ Connect to the session daemon of \lt_var{U}. +
+
+ +The Unix tracing group of the root session daemon is one of: + +
+
+ With the \--group=GROUP option of the root + session daemon +
+ Exactly GROUP. + + In that case, you must call lttng_set_tracing_group(), passing + exactly GROUP, \em before you call a + liblttng-ctl function which needs to connect to a session daemon. + +
+ Without the \--group option of the root + session daemon +
+ Exactly \c tracing (also the default Unix tracing group of + liblttng-ctl, therefore you don't need to call + lttng_set_tracing_group()). +
+ +Check that your application can successfully connect to a session daemon +with lttng_session_daemon_alive(). + +LTTng-instrumented user applications automatically register to both the +root and user session daemons. This makes it possible for both session +daemons to list the available instrumented applications and their +\ref api_inst_pt "instrumentation points". + +@defgroup api_session Recording session API + +A recording session is a stateful dialogue +between an application and a session daemon for everything related to +event recording. + +Everything that you do when you control LTTng tracers to record events +happens within a recording session. In particular, a recording session: + +- Has its own name, unique for a given session daemon. + +- Has its own set of trace files, if any. + +- Has its own state of + \link lttng_session::enabled activity\endlink (started or stopped). + + An active recording session is an implicit + \lt_obj_rer condition. + +- Has its own \ref api-session-modes "mode" + (local, network streaming, snapshot, or live). + +- Has its own \lt_obj_channels to which are attached + their own recording event rules. + +- Has its own \ref api_pais "process attribute inclusion sets". + +Those attributes and objects are completely isolated between different +recording sessions. + +A recording session is like an +ATM +session: the operations you do on the +banking system through the ATM don't alter the data of other users of +the same system. In the case of the ATM, a session lasts as long as your +bank card is inside. In the case of LTTng, a recording session lasts +from a call to lttng_create_session_ext() to the completion of its +destruction operation (which you can initiate with +lttng_destroy_session_ext()). + +A recording session belongs to a session daemon (see +\lt_man{lttng-sessiond,8} and +\ref api-gen-sessiond-conn "Session daemon connection"). For a given +session daemon, each Unix user has its own, private recording sessions. +Note, however, that the \c root Unix user may operate on or destroy +another user's recording session. + +@image html many-sessions.png "Each Unix user has its own, private recording sessions." + +@sa The RECORDING SESSION section of \lt_man{lttng-concepts,7}. + +

Operations

+ +The recording session operations are: + + + + + + + + + + + + + + + + +
Operation + Means +
Creation + + -# Create a \lt_obj_session_descr + with one of the dedicated creation functions depending on the + \ref api-session-modes "recording session mode". + + -# Call lttng_create_session_ext(), passing the recording session + descriptor of step 1. + + -# When you're done with the recording session descriptor, destroy + it with lttng_session_descriptor_destroy(). + + @sa \lt_man{lttng-create,1} +
Destruction + + -# Call lttng_destroy_session_ext(), passing the name of the + recording session to destroy. + + This function initiates a destruction operation, returning + immediately. + + This function can set a pointer to a + \ref api_session_destr_handle "destruction handle" + (#lttng_destruction_handle) so that you can wait for the + completion of the operation. Without such a handle, you can't + know when the destruction operation completes and whether or + not it does successfully. + + -# If you have a destruction handle from + step 1: + + -# Call lttng_destruction_handle_wait_for_completion() to wait + for the completion of the destruction operation. + + -# Call lttng_destruction_handle_get_result() to get whether or + not the destruction operation successfully completed. + + You can also call + lttng_destruction_handle_get_rotation_state() and + lttng_destruction_handle_get_archive_location() at this + point. + + -# Destroy the destruction handle with + lttng_destruction_handle_destroy(). + + @sa \lt_man{lttng-destroy,1} +
Basic property access + + See: + + - The members of #lttng_session + - lttng_session_descriptor_get_session_name() + - lttng_session_get_creation_time() + - lttng_set_session_shm_path() + - lttng_data_pending() +
\lt_obj_c_domain access + + -# Call lttng_list_domains(), passing the name of the recording + session of which to get the tracing domains. + + This function sets a pointer to an array of + \link #lttng_domain tracing domain summaries\endlink + and returns the number of entries. + + -# Access the properties of each tracing domain summary through + structure members. + + -# When you're done with the array of tracing domain summaries, + free it with free(). +
\lt_obj_c_channel access + + -# Create a \link #lttng_handle recording session handle\endlink + with lttng_create_handle() to specify the name of the + recording session and the summary of the + \lt_obj_domain of the channels to access. + + -# Call lttng_list_channels(), passing the recording session + handle of step 1. + + This function sets a pointer to an array of + \link #lttng_channel channel summaries\endlink + and returns the number of entries. + + -# Destroy the recording session handle of step 1 with + lttng_destroy_handle(). + + -# Access the \ref api-channel-channel-props "properties" of each + channel summary through structure members or using dedicated + getters. + + -# When you're done with the array of channel summaries, + free it with free(). +
Activity control + + See: + + - lttng_start_tracing() + - lttng_stop_tracing() + - lttng_stop_tracing_no_wait() + + The #LTTNG_ACTION_TYPE_START_SESSION and + #LTTNG_ACTION_TYPE_STOP_SESSION trigger actions can also + activate and deactivate a recording session. +
Listing + + -# Call lttng_list_sessions(). + + This function sets a pointer to an array of + \link #lttng_session recording session summaries\endlink + and returns the number of entries. + + -# Access the properties of each recording session summary through + structure members or using dedicated getters. + + -# When you're done with the array of recording session summaries, + free it with free(). + + @sa \lt_man{lttng-list,1} +
Process attribute inclusion set access + See \ref api_pais +
Clearing + See \ref api_session_clear +
Snapshot recording + + See \ref api_session_snapshot + + The #LTTNG_ACTION_TYPE_SNAPSHOT_SESSION trigger action can also + take a recording session snapshot. +
Rotation + + See \ref api_session_rotation + + The #LTTNG_ACTION_TYPE_ROTATE_SESSION trigger action can also + rotate a recording session. +
Saving and loading + See \ref api_session_save_load +
Trace data regeneration + + See: + + - lttng_regenerate_metadata() + - lttng_regenerate_statedump() + + @sa \lt_man{lttng-regenerate,1} +
+ +

\anchor api-session-modes Recording session modes

+ +LTTng offers four recording session modes: + + + + + + + +
Mode + Description + Descriptor creation function(s) +
\anchor api-session-local-mode Local + + Write the trace data to the local file system, or do not write any + trace data. + + - lttng_session_descriptor_create() + - lttng_session_descriptor_local_create() +
\anchor api-session-net-mode Network streaming + + Send the trace data over the network to a listening relay daemon + (see \lt_man{lttng-relayd,8}). + lttng_session_descriptor_network_create() +
\anchor api-session-snapshot-mode Snapshot + + Only write the trace data to the local file system or send it to a + listening relay daemon when LTTng + takes a \ref api_session_snapshot "snapshot". + + LTTng takes a snapshot of such a recording session when: + + - You call lttng_snapshot_record(). + + - LTTng executes an #LTTNG_ACTION_TYPE_SNAPSHOT_SESSION trigger + action. + + LTTng forces the + \ref api-channel-er-loss-mode "event record loss mode" of all + the channels of such a recording session to be + \"\ref api-channel-overwrite-mode "overwrite"\". + + - lttng_session_descriptor_snapshot_create() + - lttng_session_descriptor_snapshot_local_create() + - lttng_session_descriptor_snapshot_network_create() +
\anchor api-session-live-mode Live + + Send the trace data over the network to a listening relay daemon + for live reading. + + An LTTng live reader (for example, + Babeltrace 2) can + connect to the same relay daemon to receive trace data while the + recording session is active. + + lttng_session_descriptor_live_network_create() +
+ +@sa The Recording session modes section of +\lt_man{lttng-concepts,7}. + +

\anchor api-session-url Output URL format

+ +Some functions of the \lt_api require an output +URL. + +An output URL is a C string which specifies where to send trace +data and, when LTTng connects to a relay daemon (see +\lt_man{lttng-relayd,8}), control commands. + +There are three available output URL formats: + + + + + + +
Type + Description + Format +
\anchor api-session-local-url Local + + Send trace data to the local file system, without connecting to a + relay daemon. + + Accepted by: + + - lttng_create_session() (deprecated) + - lttng_create_session_snapshot() (deprecated) + - lttng_snapshot_output_set_local_path() + - lttng_save_session_attr_set_output_url() + - lttng_load_session_attr_set_input_url() + - lttng_load_session_attr_set_override_url() + + file://TRACEDIR + +
+
TRACEDIR +
+ Absolute path to the directory containing the trace data on + the local file system. +
+
\anchor api-session-one-port-url Remote: single port + + Send trace data and/or control commands to a specific relay daemon + with a specific TCP port. + + Accepted by: + + - lttng_session_descriptor_network_create() + - lttng_session_descriptor_snapshot_network_create() + - lttng_session_descriptor_live_network_create() + - lttng_snapshot_output_set_network_urls() + - lttng_snapshot_output_set_ctrl_url() + - lttng_snapshot_output_set_data_url() + - lttng_load_session_attr_set_override_ctrl_url() + - lttng_load_session_attr_set_override_data_url() + + PROTO://HOST[:PORT][/TRACEDIR] + +
+
PROTO +
+ Network protocol, amongst: + +
+
\c net +
+ TCP over IPv4. + +
\c net6 +
+ TCP over IPv6. + +
\c tcp +
+ Same as net. + +
\c tcp6 +
+ Same as net6. +
+ +
HOST +
+ Hostname or IP address. + + An IPv6 address must be enclosed in square brackets ([ + and ]); see + RFC 2732. + +
PORT +
+ TCP port. + + If it's missing, the default control and data ports are + respectively \lt_def_net_ctrl_port and + \lt_def_net_data_port. + +
TRACEDIR +
+ Path of the directory containing the trace data on the remote + file system. + + This path is relative to the base output directory of the + LTTng relay daemon (see the Output directory + section of \lt_man{lttng-relayd,8}). +
+
\anchor api-session-two-port-url Remote: control and data ports + + Send trace data and control commands to a specific relay daemon + with specific TCP ports. + + This form is usually a shorthand for two + \ref api-session-one-port-url "single-port output URLs" with + specified ports. + + Accepted by: + + - lttng_create_session_snapshot() (deprecated) + - lttng_create_session_live() (deprecated) + - lttng_session_descriptor_network_create() + - lttng_session_descriptor_snapshot_network_create() + - lttng_session_descriptor_live_network_create() + - lttng_snapshot_output_set_network_url() + - lttng_snapshot_output_set_network_urls() + - lttng_snapshot_output_set_ctrl_url() + - lttng_load_session_attr_set_override_url() + - lttng_load_session_attr_set_override_ctrl_url() + + PROTO://HOST:CTRLPORT:DATAPORT[/TRACEDIR] + +
+
PROTO +
+ Network protocol, amongst: + +
+
\c net +
+ TCP over IPv4. + +
\c net6 +
+ TCP over IPv6. + +
\c tcp +
+ Same as net. + +
\c tcp6 +
+ Same as net6. +
+ +
HOST +
+ Hostname or IP address. + + An IPv6 address must be enclosed in square brackets ([ + and ]); see + RFC 2732. + +
CTRLPORT +
+ Control TCP port. + +
DATAPORT +
+ Trace data TCP port. + +
TRACEDIR +
+ Path of the directory containing the trace data on the remote + file system. + + This path is relative to the base output directory of the + LTTng relay daemon (see the \--output option of + \lt_man{lttng-relayd,8}). +
+
+ +@defgroup api_session_descr Recording session descriptor API +@ingroup api_session + +A recording session descriptor describes the +properties of a \lt_obj_session to be (not created +yet). + +To create a recording session from a recording session descriptor: + +-# Create a recording session descriptor + with one of the dedicated creation functions, depending on the + \ref api-session-modes "recording session mode": + +
+
\ref api-session-local-mode "Local mode" +
+ One of: + + - lttng_session_descriptor_create() + - lttng_session_descriptor_local_create() + +
\ref api-session-net-mode "Network streaming mode" +
+ lttng_session_descriptor_network_create() + +
\ref api-session-snapshot-mode "Snapshot mode" +
+ One of: + + - lttng_session_descriptor_snapshot_create() + - lttng_session_descriptor_snapshot_local_create() + - lttng_session_descriptor_snapshot_network_create() + +
\ref api-session-live-mode "Live mode" +
+ lttng_session_descriptor_live_network_create() +
+ +-# Call lttng_create_session_ext(), passing the recording session + descriptor of step 1. + + After a successful call to this function, you can call + lttng_session_descriptor_get_session_name() to get the name of the + created recording session (set when creating the descriptor or + automatically generated). + +-# When you're done with the recording session descriptor, destroy + it with lttng_session_descriptor_destroy(). + +@defgroup api_session_destr_handle Recording session destruction handle API +@ingroup api_session + +A recording session destruction handle +represents a \lt_obj_session destruction operation. + +The main purposes of a recording session destruction handle is to: + +- Wait for the completion of the recording session + destruction operation with + lttng_destruction_handle_wait_for_completion() and get whether or not + it was successful with lttng_destruction_handle_get_result(). + +- Get the state of any + \ref api_session_rotation "recording session rotation" + which the recording session destruction operation caused + with lttng_destruction_handle_get_rotation_state(), and the location + of its trace chunk archive with + lttng_destruction_handle_get_archive_location(). + +To destroy a recording session: + +-# Call lttng_destroy_session_ext(), passing the name of the recording + session to destroy. + + This function initiates a destruction operation, returning + immediately. + + This function can set a pointer to a + \link #lttng_destruction_handle destruction handle\endlink so that + you can wait for the completion of the operation. Without such a + handle, you can't know when the destruction operation completes and + whether or not it does successfully. + +-# Call lttng_destruction_handle_wait_for_completion() to wait + for the completion of the destruction operation. + +-# Call lttng_destruction_handle_get_result() to get whether or + not the destruction operation successfully completed. + +-# If LTTng performed at least one + \ref api_session_rotation "rotation" of the destroyed recording + session, call lttng_destruction_handle_get_rotation_state() + to know whether or not the last rotation was successful and + lttng_destruction_handle_get_archive_location() to get the location + of its trace chunk archive. + +-# Destroy the destruction handle with + lttng_destruction_handle_destroy(). + +@defgroup api_channel Domain and channel API +@ingroup api_session + +

\anchor api-channel-domain Tracing domain

+ +A tracing domain identifies a type of LTTng +tracer. + +A tracing domain has its own properties and features. + +There are currently five available tracing domains: + + + + + + + + +
Domain name + Type enumerator +
Linux kernel + #LTTNG_DOMAIN_KERNEL +
User space + #LTTNG_DOMAIN_UST +
java.util.logging (JUL) + #LTTNG_DOMAIN_JUL +
Apache log4j + #LTTNG_DOMAIN_LOG4J +
Python logging + #LTTNG_DOMAIN_PYTHON +
+ +A \lt_obj_channel is always part of a tracing domain. + +Many liblttng-ctl functions require a tracing domain type (sometimes +within a +\link #lttng_handle recording session handle\endlink) +to target specific tracers or to avoid ambiguity. For example, because +the Linux kernel and user space tracing domains support named +tracepoints as \ref api_inst_pt "instrumentation points", you need to +specify a tracing domain when you create a +\lt_obj_rer with lttng_enable_event_with_exclusions() because both +tracing domains could have LTTng tracepoints sharing the same name. + +@sa The TRACING DOMAIN section of \lt_man{lttng-concepts,7}. + +

\anchor api-channel-channel Channel

+ +A channel is an object which is responsible +for a set of ring buffers. + +Each ring buffer is divided into multiple sub-buffers. When a +\lt_obj_rer matches an event, LTTng can record it to one or more +sub-buffers of one or more channels. + +A channel is always associated to a \lt_obj_domain. +The \link #LTTNG_DOMAIN_JUL java.util.logging\endlink, +\link #LTTNG_DOMAIN_LOG4J Apache log4j\endlink, and +\link #LTTNG_DOMAIN_PYTHON Python\endlink tracing +domains each have a default channel which you can't configure. + +Note that the some functions, like lttng_enable_event_with_exclusions(), +can automatically create a default channel with sane defaults when no +channel exists for the provided \lt_obj_domain. + +A channel owns \lt_obj_rers. + +@image html concepts.png "A recording session contains channels that are members of tracing domains and contain recording event rules." + +You can't destroy a channel. + +

Operations

+ +The channel operations are: + + + + + + + + + + +
Operation + Means +
Creation + + -# Call lttng_channel_create() with a \lt_obj_domain summary to + create an initial channel summary. + + This function calls lttng_channel_set_default_attr() to set + the properties of the created channel summary to default values + depending on the tracing domain summary. + + -# Set the properties of the channel summary of step 1 + through direct members or with dedicated setters. + + See the property table below. + + -# Create a \link #lttng_handle recording session handle\endlink + structure to specify the name of the recording session and the + tracing domain of the channel to create. + + -# Call lttng_enable_channel() with the recording session handle + of step 3 and the channel summary of step 1 + o create the channel. + + -# Destroy the recording session handle with + lttng_destroy_handle() and the channel summary with + lttng_channel_destroy(). + + @sa \lt_man{lttng-enable-channel,1} +
Basic property access + + See the \ref api-channel-channel-props "property table" below. +
\lt_obj_c_rer access + + -# Create a \link #lttng_handle recording session handle\endlink + with lttng_create_handle() to specify the name of the + recording session and the summary of the + \lt_obj_domain of the channel of which to get the recording + event rule descriptors. + + -# Call lttng_list_events(), passing the recording session + handle of step 1 and a channel name. + + This function sets a pointer to an array of + \link #lttng_event recording event rule descriptors\endlink + and returns the number of entries. + + -# Destroy the recording session handle of step 1 with + lttng_destroy_handle(). + + -# Access the properties of each + recording event rule descriptor through structure members or + using dedicated getters. + + -# When you're done with the array of recording event rule + descriptors, free it with free(). +
Event record context field adding + + -# Initialize a #lttng_event_context structure, setting + its properties to describe the context field to be added. + + -# Create a \link #lttng_handle recording session handle\endlink + structure to specify the name of the recording session and the + tracing domain of the channel to create. + + -# Call lttng_add_context() with the recording session handle + of step 2 and the context field descriptor of step 1, + optionally passing the name of the channel to target. + + -# Destroy the recording session handle with + lttng_destroy_handle(). + + @sa \lt_man{lttng-add-context,1} +
Enabling + + Use lttng_enable_channel(). + + @sa \lt_man{lttng-enable-channel,1} +
Disabling + + Use lttng_disable_channel(). + + @sa \lt_man{lttng-disable-channel,1} +
Statistics + + See: + + - lttng_channel_get_discarded_event_count() + - lttng_channel_get_lost_packet_count() +
+ +

\anchor api-channel-channel-props Properties

+ +The properties of a channel are: + + + + + + + + + + + + + + + +
Property name + Description + Access +
Buffering scheme + + See \ref api-channel-buf-scheme "Buffering scheme". + + The lttng_domain::buf_type member for the containing tracing + domain. + + All the channels of a given tracing domain share the same + buffering scheme. +
Event record loss mode + + See \ref api-channel-er-loss-mode "Event record loss mode". + + The lttng_channel_attr::overwrite member. +
Sub-buffer size + + See \ref api-channel-sub-buf-size-count "Sub-buffer size and count". + + The lttng_channel_attr::subbuf_size member. +
Sub-buffer count + + See \ref api-channel-sub-buf-size-count "Sub-buffer size and count". + + The lttng_channel_attr::num_subbuf member. +
Maximum trace file size + + See \ref api-channel-max-trace-file-size-count "Maximum trace file size and count". + + The lttng_channel_attr::tracefile_size member. +
Maximum trace file count + + See \ref api-channel-max-trace-file-size-count "Maximum trace file size and count". + + The lttng_channel_attr::tracefile_count member. +
Read timer period + + See \ref api-channel-read-timer "Read timer". + + The lttng_channel_attr::read_timer_interval member. +
Switch timer period + + See \ref api-channel-switch-timer "Switch timer". + + The lttng_channel_attr::switch_timer_interval member. +
Live timer period + + See \ref api-channel-live-timer "Live timer". + + The \lt_p{live_timer_period} parameter of + lttng_session_descriptor_live_network_create() when you create + the descriptor of a \ref api-session-live-mode "live" recording + session to contain the channel. +
Monitor timer period + + See \ref api-channel-monitor-timer "Monitor timer". + + - lttng_channel_get_monitor_timer_interval() + - lttng_channel_set_monitor_timer_interval() +
Output type (Linux kernel channel) + + Whether to use mmap() or splice(). + + The lttng_channel_attr::output member. +
\anchor api-channel-blocking-timeout Blocking timeout (user space channel) + + How long to block (if ever) at the instrumentation point site when + a sub-buffer is not available for applications executed with the + \c LTTNG_UST_ALLOW_BLOCKING environment variable set. + + - lttng_channel_get_blocking_timeout() + - lttng_channel_set_blocking_timeout() +
+ +All the properties above are immutable once a channel exists. + +@sa The CHANNEL AND RING BUFFER section of +\lt_man{lttng-concepts,7}. + +

\anchor api-channel-buf-scheme Buffering scheme

+ +A channel has at least one ring buffer per CPU. LTTng always records an +event to the ring buffer dedicated to the CPU which emits it. + +The buffering scheme of a +\link #LTTNG_DOMAIN_UST user space\endlink +channel determines what has its own set of per-CPU +ring buffers, considering \lt_var{U} is the Unix user of the process +running liblttng-ctl: + +
+
+ \anchor api-channel-per-user-buf + \link #LTTNG_BUFFER_PER_UID Per-user buffering\endlink +
+ Allocate one set of ring buffers (one per CPU) shared by all the + instrumented processes of: + +
+
If \lt_var{U} is root +
+ Each Unix user. + + @image html per-user-buffering-root.png + +
Otherwise +
+ \lt_var{U} + + @image html per-user-buffering.png +
+ +
+ \anchor api-channel-per-proc-buf + \link #LTTNG_BUFFER_PER_PID Per-process buffering\endlink +
+ Allocate one set of ring buffers (one per CPU) for each + instrumented process of: + +
+
If \lt_var{U} is root +
+ All Unix users. + + @image html per-process-buffering-root.png + +
Otherwise +
+ \lt_var{U} + + @image html per-process-buffering.png +
+
+ +The per-process buffering scheme tends to consume more memory than the +per-user option because systems generally have more instrumented +processes than Unix users running instrumented processes. However, the +per-process buffering scheme ensures that one process having a high +event throughput won't fill all the shared sub-buffers of the same Unix +user, only its own. + +The buffering scheme of a Linux kernel (#LTTNG_DOMAIN_KERNEL) channel is +always to allocate a single set of ring buffers for the whole system +(#LTTNG_BUFFER_GLOBAL). This scheme is similar to the +\ref api-channel-per-user-buf "per-user" one, but with a single, global +user "running" the kernel. + +To set the buffering scheme of a channel when you create it: + +- Set the lttng_domain::buf_type member of the structure which you pass + within the #lttng_handle structure to lttng_enable_channel(). + + Note that, for a given \lt_obj_session, \em all + the channels of a given \lt_obj_domain must share the same buffering + scheme. + +@sa The Buffering scheme section of \lt_man{lttng-concepts,7}. + +

\anchor api-channel-er-loss-mode Event record loss mode

+ +When LTTng emits an event, LTTng can record it to a specific, available +sub-buffer within the ring buffers of specific channels. When there's no +space left in a sub-buffer, the tracer marks it as consumable and +another, available sub-buffer starts receiving the following event +records. An LTTng consumer daemon eventually consumes the marked +sub-buffer, which returns to the available state. + +In an ideal world, sub-buffers are consumed faster than they are filled. +In the real world, however, all sub-buffers can be full at some point, +leaving no space to record the following events. + +By default, LTTng-modules and LTTng-UST are non-blocking +tracers: when there's no available sub-buffer to record an event, it's +acceptable to lose event records when the alternative would be to cause +substantial delays in the execution of the instrumented application. +LTTng privileges performance over integrity; it aims at perturbing the +instrumented application as little as possible in order to make the +detection of subtle race conditions and rare interrupt cascades +possible. + +Since LTTng 2.10, the LTTng user space tracer, LTTng-UST, supports +a blocking mode: see lttng_channel_get_blocking_timeout() and +lttng_channel_set_blocking_timeout(). + +When it comes to losing event records because there's no available +sub-buffer, or because the blocking timeout of the channel is reached, +the event record loss mode of the channel +determines what to do. The available event record loss modes are: + +
+
\anchor api-channel-discard-mode Discard mode +
+ Drop the newest event records until a sub-buffer becomes available. + + This is the only available mode when you specify a blocking timeout + with lttng_channel_set_blocking_timeout(). + + With this mode, LTTng increments a count of discarded event records + when it discards an event record and saves this count to the trace. + A trace reader can use the saved discarded event record count of the + trace to decide whether or not to perform some analysis even if + trace data is known to be missing. + + Get the number of discarded event records of a channel with + lttng_channel_get_discarded_event_count(). + +
\anchor api-channel-overwrite-mode Overwrite mode +
+ Clear the sub-buffer containing the oldest event records and start + writing the newest event records there. + + This mode is sometimes called flight recorder mode because + it's similar to a + flight recorder: + always keep a fixed amount of the latest data. It's also + similar to the roll mode of an oscilloscope. + + Since LTTng 2.8, with this mode, LTTng writes to a given + sub-buffer its sequence number within its data stream. With a + \ref api-session-local-mode "local", + \ref api-session-net-mode "network streaming", or + \ref api-session-live-mode "live" recording session, a trace + reader can use such sequence numbers to report discarded packets. A + trace reader can use the saved discarded sub-buffer (packet) count + of the trace to decide whether or not to perform some analysis even + if trace data is known to be missing. + + Get the number of discarded packets (sub-buffers) of a channel with + lttng_channel_get_lost_packet_count(). + + With this mode, LTTng doesn't write to the trace the exact number of + lost event records in the lost sub-buffers. +
+ +Which mechanism you should choose depends on your context: prioritize +the newest or the oldest event records in the ring buffer? + +Beware that, in overwrite mode, the tracer abandons a whole +sub-buffer as soon as a there's no space left for a new event +record, whereas in discard mode, the tracer only discards the event +record that doesn't fit. + +To set the event record loss mode of a channel when you create it: + +- Set the lttng_channel_attr::overwrite member of the lttng_channel::attr + member of the structure you pass to lttng_enable_channel(). + +There are a few ways to decrease your probability of losing event +records. The +\ref api-channel-sub-buf-size-count "Sub-buffer size and count" section +shows how to fine-tune the sub-buffer size and count of a channel to +virtually stop losing event records, though at the cost of greater +memory usage. + +@sa The Event record loss mode section of +\lt_man{lttng-concepts,7}. + +

\anchor api-channel-sub-buf-size-count Sub-buffer size and count

+ +A channel has one or more ring buffer for each CPU of the target system. + +See \ref api-channel-buf-scheme "Buffering scheme" to learn how many +ring buffers of a given channel are dedicated to each CPU depending on +its buffering scheme. + +To set the size of each sub-buffer the ring buffers of a channel have +when you create it: + +- Set the lttng_channel_attr::subbuf_size member of the + lttng_channel::attr member of the structure you pass to + lttng_enable_channel(). + +To set the number of sub-buffers each ring buffer of a channel has +when you create it: + +- Set the lttng_channel_attr::num_subbuf member of the + lttng_channel::attr member of the structure you pass to + lttng_enable_channel(). + +Note that LTTng switching the current sub-buffer of a ring buffer +(marking a full one as consumable and switching to an available one for +LTTng to record the next events) introduces noticeable CPU overhead. +Knowing this, the following list presents a few practical situations +along with how to configure the sub-buffer size and count for them: + +
+
High event throughput +
+ In general, prefer large sub-buffers to lower the risk of losing + event records. + + Having larger sub-buffers also ensures a lower sub-buffer + \ref api-channel-switch-timer "switching frequency". + + The sub-buffer count is only meaningful if you create the channel in + \ref api-channel-overwrite-mode "overwrite mode": in this case, if + LTTng overwrites a sub-buffer, then the other sub-buffers are left + unaltered. + +
Low event throughput +
+ In general, prefer smaller sub-buffers since the risk of losing + event records is low. + + Because LTTng emits events less frequently, the sub-buffer switching + frequency should remain low and therefore the overhead of the tracer + shouldn't be a problem. + +
Low memory system +
+ If your target system has a low memory limit, prefer fewer first, + then smaller sub-buffers. + + Even if the system is limited in memory, you want to keep the + sub-buffers as large as possible to avoid a high sub-buffer + switching frequency. +
+ +Note that LTTng uses CTF as its +trace format, which means event record data is very compact. For +example, the average LTTng kernel event record weights about +32 bytes. Therefore, a sub-buffer size of 1 MiB is considered +large. + +The previous scenarios highlight the major trade-off between a few large +sub-buffers and more, smaller sub-buffers: sub-buffer switching +frequency vs. how many event records are lost in +\ref api-channel-overwrite-mode "overwrite mode". +Assuming a constant event throughput and using the overwrite mode, the +two following configurations have the same ring buffer total size: + +
+
Two sub-buffers of 4 MiB each +
+ Expect a very low sub-buffer switching frequency, but if LTTng ever + needs to overwrite a sub-buffer, half of the event records so far + (4 MiB) are definitely lost. + +
Eight sub-buffers of 1 MiB each +
+ Expect four times the tracer overhead of the configuration above, + but if LTTng needs to overwrite a sub-buffer, only the eighth of + event records so far (1 MiB) are definitely lost. +
+ +In \ref api-channel-discard-mode "discard mode", the sub-buffer count +parameter is pointless: use two sub-buffers and set their size according +to your requirements. + +@sa The Sub-buffer size and count section of +\lt_man{lttng-concepts,7}. + +

\anchor api-channel-max-trace-file-size-count Maximum trace file size and count

+ +By default, trace files can grow as large as needed. + +To set the maximum size of each trace file that LTTng writes from the +ring buffers of a channel when you create it: + +- Set the lttng_channel_attr::tracefile_size member of the + lttng_channel::attr member of the structure you pass to + lttng_enable_channel(). + +When the size of a trace file reaches the fixed maximum size of the +channel, LTTng creates another file to contain the next event records. +LTTng appends a file count to each trace file name in this case. + +If you set the trace file size attribute when you create a channel, the +maximum number of trace files that LTTng creates is unlimited +by default. + +To limit the size of each trace file that LTTng writes from the +ring buffers of a channel when you create it: + +- Set the lttng_channel_attr::tracefile_count member of the + lttng_channel::attr member of the structure you pass to + lttng_enable_channel(). + +When the number of trace files reaches the fixed maximum count of the +channel, LTTng overwrites the oldest trace file. This mechanism is +called trace file rotation. + +@attention + @parblock + Even if you don't limit the trace file count, always assume that + LTTng manages all the trace files of the recording session. + + In other words, there's no safe way to know if LTTng still holds a + given trace file open with the trace file rotation feature. + + The only way to obtain an unmanaged, self-contained LTTng trace + before you \link lttng_destroy_session_ext() destroy the + recording session\endlink is with the + \ref api_session_rotation "recording session rotation" feature, + which is available since LTTng 2.11. + @endparblock + +@sa The Maximum trace file size and count section of +\lt_man{lttng-concepts,7}. + +

\anchor api-channel-timers Timers

+ +Each channel can have up to four optional +timers: + +
+
\anchor api-channel-switch-timer Switch timer +
+ When this timer expires, a sub-buffer switch happens: for each ring + buffer of the channel, LTTng marks the current sub-buffer as + consumable and switches to an available one to record the next + events. + + A switch timer is useful to ensure that LTTng consumes and commits + trace data to trace files or to a distant relay daemon + (see \lt_man{lttng-relayd,8}) periodically in case of a low event + throughput. + + Such a timer is also convenient when you use + \ref api-channel-sub-buf-size-count "large sub-buffers" + to cope with a sporadic high event throughput, even if the + throughput is otherwise low. + + To set the period of the switch timer of a channel when you create + it: + + - Set the lttng_channel_attr::switch_timer_interval member of the + lttng_channel::attr member of the structure you pass to + lttng_enable_channel(). + + A channel only has a switch timer when its + recording session is \em not in + \ref api-session-live-mode "live mode". lttng_enable_channel() + ignores the lttng_channel_attr::switch_timer_interval member with a + live recording session. For a live recording session, the + \ref api-channel-live-timer "live timer" plays the role of the + switch timer. + +
\anchor api-channel-live-timer Live timer +
+ Like the \ref api-channel-switch-timer "switch timer", but for a + channel which belongs to a + \ref api-session-live-mode "live" recording session. + + If this timer expires but there's no sub-buffer to consume, LTTng + sends a message with a timestamp to the connected relay daemon (see + \lt_man{lttng-relayd,8}) so that its live readers can progress. + + To set the period of the live timer of a channel when you create + its recording session: + + - Set the \lt_p{live_timer_period} parameter when you call + lttng_session_descriptor_live_network_create() to create a + live recording session descriptor to pass to + lttng_create_session_ext(). + + @note + All the channels of a live recording session share the same + live timer period. + +
\anchor api-channel-read-timer Read timer +
+ When this timer expires, LTTng checks for full, consumable + sub-buffers. + + By default, the LTTng tracers use an asynchronous message mechanism + to signal a full sub-buffer so that a consumer daemon can consume + it. + + When such messages must be avoided, for example in real-time + applications, use this timer instead. + + To set the period of the read timer of a channel when you create + it: + + - Set the lttng_channel_attr::read_timer_interval member of the + lttng_channel::attr member of the structure you pass to + lttng_enable_channel(). + +
\anchor api-channel-monitor-timer Monitor timer +
+ When this timer expires, the consumer daemon samples some channel + statistics to evaluate the following trigger conditions: + + -# The consumed buffer size of a given recording session becomes + greater than some value. + + -# The buffer usage of a given channel becomes greater than some + value. + + -# The buffer usage of a given channel becomes less than some value. + + If you disable the monitor timer of a channel \lt_var{C}: + + - The consumed buffer size value of the recording session + of \lt_var{C} could be wrong for trigger condition + type 1: the consumed buffer size of \lt_var{C} won't be + part of the grand total. + + - The buffer usage trigger conditions (types 2 and 3) + for \lt_var{C} will never be satisfied. + + See \ref api_trigger to learn more about triggers. + + To set the period of the monitor timer of a channel when you create + it: + + - Call lttng_channel_set_monitor_timer_interval() with the + #lttng_channel structure you pass to lttng_enable_channel(). +
+ +@sa The Timers section of \lt_man{lttng-concepts,7}. + +@defgroup api_rer Recording event rule API +@ingroup api_channel + +

Concepts

+ +An instrumentation point is a point, within a piece of +software, which, when executed, creates an LTTng event. +See \ref api_inst_pt to learn how to list the available instrumentation +points. + +An event rule is a set of \ref api-rer-conds "conditions" to +match a set of events. + +A recording event rule is a specific type of +event rule of which the action is to serialize and write the matched +event as an event record to a sub-buffer of its attached +\lt_obj_channel. + +An event record has a \ref api-rer-er-name "name" and fields. + +When LTTng creates an event \lt_var{E}, a recording event +rule \lt_var{ER} is said to match \lt_var{E} +when \lt_var{E} satisfies \em all the conditions +of \lt_var{ER}. This concept is similar to a regular expression +which matches a set of strings. + +When a recording event rule matches an event, LTTng \em emits the event, +therefore attempting to record it. + +@attention + @parblock + The event creation and emission processes are \em documentation + concepts to help understand the journey from an instrumentation + point to an event record. + + The actual creation of an event can be costly because LTTng needs to + evaluate the arguments of the instrumentation point. + + In practice, LTTng implements various optimizations for the + \link #LTTNG_DOMAIN_KERNEL Linux kernel\endlink and + \link #LTTNG_DOMAIN_UST user space\endlink \lt_obj_domains + to avoid actually creating an event when the tracer knows, thanks to + properties which are independent from the event payload and current + \link #lttng_event_context_type context\endlink, that it would never + emit such an event. Those properties are: + + - The \ref api-rer-conds-inst-pt-type "instrumentation point type". + + - The \ref api-rer-conds-event-name "instrumentation point name" (or + event name). + + - The \ref api-rer-conds-ll "instrumentation point log level". + + - The \link lttng_event::enabled status\endlink (enabled or + disabled) of the rule itself. + + - The \link lttng_channel::enabled status\endlink (enabled or + disabled) of the \lt_obj_channel containing the rule. + + - The \link lttng_session::enabled activity\endlink (started or + stopped) of the \lt_obj_session containing the rule. + + - Whether or not the process for which LTTng would create the event + is \ref api_pais "allowed to record events". + + In other words: if, for a given instrumentation point \lt_var{IP}, + the LTTng tracer knows that it would never emit an event, + executing \lt_var{IP} represents a simple boolean variable check + and, for a \link #LTTNG_DOMAIN_KERNEL Linux kernel\endlink + \lt_obj_rer, a few current process attribute checks. + @endparblock + +You always attach a recording event rule to a +\lt_obj_channel, which belongs to +a \lt_obj_session, when you +\link lttng_enable_event_with_exclusions() create it\endlink. +A channel owns recording event rules. + +When multiple matching recording event rules are attached to the same +channel, LTTng attempts to serialize and record the matched event +once. + +@image html event-rule.png "Logical path from an instrumentation point to an event record." + +As of LTTng-tools \lt_version_maj_min, you cannot remove a +recording event rule: it exists as long as its \lt_obj_session exists. + +

Operations

+ +The recording event rule operations are: + + + + + + + +
Operation + Means +
Creation + + -# Call lttng_event_create() to create an initial + \link #lttng_event recording event rule descriptor\endlink. + + -# Set the properties of the recording event rule descriptor of + step 1 through direct members or with dedicated setters. + + See the property table below. + + -# Create a \link #lttng_handle recording session handle\endlink + structure to specify the name of the recording session and the + tracing domain of the recording event rule to create. + + -# Call lttng_enable_event_with_exclusions() with the recording + session handle of step 3, the recording event rule + descriptor of step 1, the name of a + \lt_obj_channel to which to attach the + created recording event rule, and, depending on the selected + function, other properties to create the rule. + + -# Destroy the recording session handle with + lttng_destroy_handle() and the recording event rule descriptor + with lttng_event_destroy(). + + @sa \lt_man{lttng-enable-event,1} +
Property access + + See: + + - The members of #lttng_event + - lttng_event_get_userspace_probe_location() + - lttng_event_set_userspace_probe_location() + - lttng_event_get_filter_expression() + - lttng_event_get_exclusion_name_count() + - lttng_event_get_exclusion_name() + + @sa \ref api-rer-conds "Recording event rule conditions". +
Enabling + + With an #lttng_event instance which comes from + lttng_list_events(), use lttng_enable_event(). + + Otherwise, use lttng_enable_event_with_exclusions(). + + @sa \lt_man{lttng-enable-event,1} +
Disabling + + Use lttng_disable_event() or lttng_disable_event_ext(). + + @sa \lt_man{lttng-disable-event,1} +
+ +

\anchor api-rer-conds Recording event rule conditions

+ +For LTTng to emit and record an event \lt_var{E}, \lt_var{E} +must satisfy \em all the conditions of a recording event +rule \lt_var{ER}, that is: + +
+
Explicit conditions +
+ You set the following conditions when you + \link lttng_enable_event_with_exclusions() create\endlink + \lt_var{ER} from some + \link #lttng_event recording event rule descriptor\endlink + \c event_rule (#lttng_event). + + + + + + + +
Name + Description +
+ \anchor api-rer-conds-inst-pt-type + \ref api-rer-conds-inst-pt-type "Instrumentation point type" + + \lt_var{E} satisfies the instrumentation point type condition + of \lt_var{ER} if the instrumentation point from which LTTng + creates \lt_var{E} is, depending on the + \lt_obj_domain which contains \lt_var{ER}: + +
+
#LTTNG_DOMAIN_KERNEL +
+ Depending on + \link lttng_event::type event_rule.type\endlink: + +
+
#LTTNG_EVENT_TRACEPOINT +
+ An LTTng kernel tracepoint, that is, a statically + defined point in the source code of the kernel image + or of a kernel module with LTTng kernel tracer macros. + + @sa lttng_list_tracepoints() + +
#LTTNG_EVENT_SYSCALL +
+ The entry and exit of a Linux kernel system call. + + @sa lttng_list_syscalls() + +
#LTTNG_EVENT_PROBE +
+ A Linux + kprobe, + that is, a single probe dynamically placed in the + compiled kernel code. + + \link lttng_event::lttng_event_attr_u::probe + event_rule.attr.probe\endlink + indicates the kprobe location, + while \link lttng_event::name + event_rule.name\endlink + is the name of the created kprobe instrumentation + point (future event name). + + The payload of a Linux kprobe event is empty. + +
#LTTNG_EVENT_FUNCTION +
+ A Linux + kretprobe, + that is, two probes dynamically placed at the entry + and exit of a function in the compiled kernel code. + + \link lttng_event::lttng_event_attr_u::probe + event_rule.attr.probe\endlink + indicates the kretprobe location, + while \link lttng_event::name + event_rule.name\endlink + is the name of the created kretprobe instrumentation + point (future event name). + + The payload of a Linux kretprobe event is empty. + +
#LTTNG_EVENT_USERSPACE_PROBE +
+ A Linux + uprobe, + that is, a single probe dynamically placed at the + entry of a compiled user space application/library + function through the kernel. + + Set and get the location of the uprobe with + lttng_event_set_userspace_probe_location() and + lttng_event_get_userspace_probe_location(). + + \link lttng_event::name event_rule.name\endlink + is the name of the created uprobe instrumentation + point (future event name). + + The payload of a Linux uprobe event is empty. +
+ +
#LTTNG_DOMAIN_UST +
+ An LTTng user space tracepoint, that is, a statically + defined point in the source code of a C/C++ + application/library with LTTng user space tracer macros. + + \link lttng_event::type event_rule.type\endlink + must be #LTTNG_EVENT_TRACEPOINT. + + @sa lttng_list_tracepoints() + +
#LTTNG_DOMAIN_JUL +
#LTTNG_DOMAIN_LOG4J +
#LTTNG_DOMAIN_PYTHON +
+ A Java/Python logging statement. + + \link lttng_event::type event_rule.type\endlink + must be #LTTNG_EVENT_TRACEPOINT. + + @sa lttng_list_tracepoints() +
+
+ \anchor api-rer-conds-event-name + \ref api-rer-conds-event-name "Event name" + + An event \lt_var{E} satisfies the event name condition + of \lt_var{ER} if the two following statements are + \b true: + + - \link lttng_event::name event_rule.name\endlink + matches, depending on + \link lttng_event::type event_rule.type\endlink + (see \ref api-rer-conds-inst-pt-type "Instrumentation point type" + above): + +
+
#LTTNG_EVENT_TRACEPOINT +
+ The full name of the LTTng tracepoint or Java/Python + logger from which LTTng creates \lt_var{E}. + + Note that the full name of a + \link #LTTNG_DOMAIN_UST user space\endlink tracepoint is + PROVIDER:NAME, where + PROVIDER is the tracepoint + provider name and NAME is the + tracepoint name. + +
#LTTNG_EVENT_SYSCALL +
+ The name of the system call, without any + sys_ prefix, from which LTTng + creates \lt_var{E}. +
+ + @sa \ref api-rer-er-name "Event record name". + + - If the \lt_obj_domain + containing \lt_var{ER} is #LTTNG_DOMAIN_UST: + none of the event name exclusion patterns of + \c event_rule matches the full name of the user + space tracepoint from which LTTng creates \lt_var{E}. + + Set the event name exclusion patterns of + \c event_rule when you call + lttng_enable_event_with_exclusions(). + + Get the event name exclusion patterns of + a recording event rule descriptor with + lttng_event_get_exclusion_name_count() and + lttng_event_get_exclusion_name(). + + This condition is only meaningful when + \link lttng_event::type event_rule.type\endlink + is #LTTNG_EVENT_TRACEPOINT or + #LTTNG_EVENT_SYSCALL: it's always satisfied for the other + \ref api-rer-conds-inst-pt-type "instrumentation point types". + + In all cases, + \link lttng_event::name event_rule.name\endlink + and the event name exclusion patterns of + \c event_rule are globbing patterns: the + * character means "match anything". To match a + literal * character, use \\*. +
+ \anchor api-rer-conds-ll + \ref api-rer-conds-ll "Instrumentation point log level" + + An event \lt_var{E} satisfies the instrumentation point + log level condition of \lt_var{ER} if, depending on + \link lttng_event::loglevel_type event_rule.loglevel_type\endlink, + the log level of the LTTng user space tracepoint or + logging statement from which LTTng creates \lt_var{E} + is: + +
+
#LTTNG_EVENT_LOGLEVEL_ALL +
+ Anything (the condition is always satisfied). + +
#LTTNG_EVENT_LOGLEVEL_RANGE +
+ At least as severe as + \link lttng_event::loglevel event_rule.loglevel\endlink. + +
#LTTNG_EVENT_LOGLEVEL_SINGLE +
+ Exactly + \link lttng_event::loglevel event_rule.loglevel\endlink. +
+ + This condition is only meaningful when the \lt_obj_domain + containing \lt_var{ER} is \em not #LTTNG_DOMAIN_KERNEL: + it's always satisfied for #LTTNG_DOMAIN_KERNEL. +
+ \anchor api-rer-conds-filter + \ref api-rer-conds-filter "Event payload and context filter" + + An event \lt_var{E} satisfies the event payload and + context filter condition of \lt_var{ER} if + \c event_rule has no filter expression or if its filter + expression \lt_var{EXPR} evaluates to \b true + when LTTng creates \lt_var{E}. + + This condition is only meaningful when: + + - The \lt_obj_domain containing \lt_var{ER} is + #LTTNG_DOMAIN_KERNEL or #LTTNG_DOMAIN_UST: it's always + satisfied for the other tracing domains. + + - \link lttng_event::type event_rule.type\endlink + is #LTTNG_EVENT_TRACEPOINT or #LTTNG_EVENT_SYSCALL: + it's always satisfied for the other + \ref api-rer-conds-inst-pt-type "instrumentation point types". + + Set the event payload and context filter expression of + \c event_rule when you call + lttng_enable_event_with_exclusions(). + + Get the event payload and context filter expression of + a recording event rule descriptor with + lttng_event_get_filter_expression(). + + \lt_var{EXPR} can contain references to the payload fields + of \lt_var{E} and to the current + \link #lttng_event_context_type context\endlink fields. + + The expected syntax of \lt_var{EXPR} is similar to the syntax + of a C language conditional expression (an expression + which an \c if statement can evaluate), but there are a few + differences: + + - A NAME expression identifies an event + payload field named NAME (a + C identifier). + + Use the C language dot and square bracket notations to + access nested structure and array/sequence fields. You can + only use a constant, positive integer number within square + brackets. If the index is out of bounds, \lt_var{EXPR} is + \b false. + + The value of an enumeration field is an integer. + + When a field expression doesn't exist, \lt_var{EXPR} is + \b false. + + Examples: my_field, target_cpu, + seq[7], msg.user[1].data[2][17]. + + - A $ctx.TYPE expression identifies the + statically-known context field having the type + TYPE (a C identifier). + + When a field expression doesn't exist, \lt_var{EXPR} is \b + false. + + Examples: $ctx.prio, + $ctx.preemptible, + $ctx.perf:cpu:stalled-cycles-frontend. + + - A $app.PROVIDER:TYPE + expression identifies the application-specific context field + having the type TYPE (a + C identifier) from the provider + PROVIDER (a C identifier). + + When a field expression doesn't exist, \lt_var{EXPR} is \b + false. + + Example: $app.server:cur_user. + + - Compare strings, either string fields or string literals + (double-quoted), with the == and + != operators. + + When comparing to a string literal, the * + character means "match anything". To match a literal + * character, use \\*. + + Examples: my_field == "user34", + my_field == my_other_field, + my_field == "192.168.*". + + - The + precedence table + of the operators which are supported in + \lt_var{EXPR} is as follows. In this table, the highest + precedence is 1: + + + + + + + + + + + + + + + + + + + + +
Precedence + Operator + Description + Associativity +
1 + - + Unary minus + Right-to-left +
1 + + + Unary plus + Right-to-left +
1 + ! + Logical NOT + Right-to-left +
1 + ~ + Bitwise NOT + Right-to-left +
2 + << + Bitwise left shift + Left-to-right +
2 + >> + Bitwise right shift + Left-to-right +
3 + & + Bitwise AND + Left-to-right +
4 + ^ + Bitwise XOR + Left-to-right +
5 + | + Bitwise OR + Left-to-right +
6 + < + Less than + Left-to-right +
6 + <= + Less than or equal to + Left-to-right +
6 + > + Greater than + Left-to-right +
6 + >= + Greater than or equal to + Left-to-right +
7 + == + Equal to + Left-to-right +
7 + != + Not equal to + Left-to-right +
8 + && + Logical AND + Left-to-right +
9 + || + Logical OR + Left-to-right +
+ + Parentheses are supported to bypass the default order. + + @attention + Unlike the C language, the bitwise AND and OR + operators (& and |) in + \lt_var{EXPR} take precedence over relational + operators (<<, <=, + >, >=, ==, + and !=). This means the expression + 2 & 2 == 2 + is \b true while the equivalent C expression + is \b false. + + The arithmetic operators are :not: supported. + + LTTng first casts all integer constants and fields to signed + 64-bit integers. The representation of negative integers is + two's complement. This means that, for example, the signed + 8-bit integer field 0xff (-1) becomes 0xffffffffffffffff + (still -1) once casted. + + Before a bitwise operator is applied, LTTng casts all its + operands to unsigned 64-bit integers, and then casts the + result back to a signed 64-bit integer. For the bitwise NOT + operator, it's the equivalent of this C expression: + + @code + (int64_t) ~((uint64_t) val) + @endcode + + For the binary bitwise operators, it's the equivalent of those + C expressions: + + @code + (int64_t) ((uint64_t) lhs >> (uint64_t) rhs) + (int64_t) ((uint64_t) lhs << (uint64_t) rhs) + (int64_t) ((uint64_t) lhs & (uint64_t) rhs) + (int64_t) ((uint64_t) lhs ^ (uint64_t) rhs) + (int64_t) ((uint64_t) lhs | (uint64_t) rhs) + @endcode + + If the right-hand side of a bitwise shift operator + (<< and >>) is not in + the [0, 63] range, then \lt_var{EXPR} is \b false. + + @note + See the \ref api_pais to allow or disallow processes to + record LTTng events based on their attributes + instead of using equivalent statically-known context + fields in \lt_var{EXPR} like $ctx.pid. + The former method is much more efficient. + + \lt_var{EXPR} examples: + + @code{.unparsed} + msg_id == 23 && size >= 2048 + @endcode + + @code{.unparsed} + $ctx.procname == "lttng*" && (!flag || poel < 34) + @endcode + + @code{.unparsed} + $app.my_provider:my_context == 17.34e9 || some_enum >= 14 + @endcode + + @code{.unparsed} + $ctx.cpu_id == 2 && filename != "*.log" + @endcode + + @code{.unparsed} + eax_reg & 0xff7 == 0x240 && x[4] >> 12 <= 0x1234 + @endcode +
+ +
Implicit conditions +
+ - \lt_var{ER} itself is \link lttng_event::enabled enabled\endlink. + + A recording event rule is enabled on + \link lttng_enable_event_with_exclusions() creation\endlink. + + @sa lttng_enable_event() -- + Creates or enables a recording event rule. + @sa lttng_disable_event_ext() -- + Disables a recording event rule. + + - The \lt_obj_channel which contains \lt_var{ER} is + \link lttng_channel::enabled enabled\endlink. + + A channel is enabled on + \link lttng_enable_channel() creation\endlink. + + @sa lttng_enable_channel() -- + Creates or enables a channel. + @sa lttng_disable_channel() -- + Disables a channel. + + - The \lt_obj_session which contains \lt_var{ER} is + \link lttng_session::enabled active\endlink (started). + + A recording session is inactive (stopped) on + \link lttng_create_session_ext() creation\endlink. + + @sa lttng_start_tracing() -- + Starts a recording session. + @sa lttng_stop_tracing() -- + Stops a recording session. + + - The process for which LTTng creates \lt_var{E} is + \ref api_pais "allowed to record events". + + All processes are allowed to record events on recording session + \link lttng_create_session_ext() creation\endlink. +
+ +

\anchor api-rer-er-name Event record name

+ +When LTTng records an event \lt_var{E}, the resulting event record +has a name which depends on the +\ref api-rer-conds-inst-pt-type "instrumentation point type condition" +of the recording event rule \lt_var{ER} which matched \lt_var{E} +as well as on the \lt_obj_domain which contains \lt_var{ER}: + + + + + + + + + + +
Tracing domain + Instrumentation point type + Event record name +
#LTTNG_DOMAIN_KERNEL or #LTTNG_DOMAIN_UST + #LTTNG_EVENT_TRACEPOINT + + Full name of the tracepoint from which LTTng creates \lt_var{E}. + + Note that the full name of a + \link #LTTNG_DOMAIN_UST user space\endlink tracepoint is + PROVIDER:NAME, where + PROVIDER is the tracepoint provider name and + NAME is the tracepoint name. +
#LTTNG_DOMAIN_JUL + #LTTNG_EVENT_TRACEPOINT + + lttng_jul:event + + Such an event record has a string field logger_name + which contains the name of the java.util.logging + logger from which LTTng creates \lt_var{E}. +
#LTTNG_DOMAIN_LOG4J + #LTTNG_EVENT_TRACEPOINT + + lttng_log4j:event + + Such an event record has a string field logger_name + which contains the name of the Apache log4j logger from which + LTTng creates \lt_var{E}. +
#LTTNG_DOMAIN_PYTHON + #LTTNG_EVENT_TRACEPOINT + + lttng_python:event + + Such an event record has a string field logger_name + which contains the name of the Python logger from which LTTng + creates \lt_var{E}. +
#LTTNG_DOMAIN_KERNEL + #LTTNG_EVENT_SYSCALL + + Location: + +
+
Entry +
+ syscall_entry_NAME, where + NAME is the name of the system call from + which LTTng creates \lt_var{E}, without any + sys_ prefix. + +
Exit +
+ syscall_exit_NAME, where + NAME is the name of the system call from + which LTTng creates \lt_var{E}, without any + sys_ prefix. +
+
#LTTNG_DOMAIN_KERNEL + #LTTNG_EVENT_PROBE or #LTTNG_EVENT_USERSPACE_PROBE + + The lttng_event::name member of the + descriptor you used to create \lt_var{ER} with + lttng_enable_event_with_exclusions(). +
#LTTNG_DOMAIN_KERNEL + #LTTNG_EVENT_FUNCTION + + Location: + +
+
Entry +
NAME_entry + +
Exit +
NAME_exit +
+ + where NAME is the lttng_event::name member + of the descriptor you used to create + \lt_var{ER} with lttng_enable_event_with_exclusions(). +
+ +@defgroup api_pais Process attribute inclusion set API +@ingroup api_session + +To be done. + +@defgroup api_session_clear Recording session clearing API +@ingroup api_session + +This API makes it possible to clear a \lt_obj_session, that is, to +delete the contents of its tracing buffers and/or of all its +\ref api-session-local-mode "local" and +\ref api-session-net-mode "streamed" trace data. + +To clear a recording session: + +-# Call lttng_clear_session(), passing the name of the recording session + to clear. + + This function initiates a clearing operation, returning immediately. + + This function can set a pointer to a + \link #lttng_clear_handle clearing handle\endlink + so that you can wait for the completion of the + operation. Without such a handle, you can't know when the clearing + operation completes and whether or not it does successfully. + +-# If you have a clearing handle from step 1: + + -# Call lttng_clear_handle_wait_for_completion() to wait for the + completion of the clearing operation. + + -# Call lttng_clear_handle_get_result() to get whether or not the + clearing operation successfully completed. + + -# Destroy the clearing handle with lttng_clear_handle_destroy(). + +@sa \lt_man{lttng-clear,1} + +@defgroup api_session_snapshot Recording session snapshot API +@ingroup api_session + +To be done. + +@defgroup api_session_rotation Recording session rotation API +@ingroup api_session + +To be done. + +@defgroup api_session_save_load Recording session saving and loading API +@ingroup api_session + +To be done. + +@defgroup api_inst_pt Instrumentation point listing API + +The lttng_list_tracepoints() and lttng_list_syscalls() functions set a +pointer to an array of +\ref api-rer-inst-pt-descr "instrumentation point descriptors". + +With those two functions, you can get details about the available +LTTng tracepoints, Java/Python loggers, and Linux kernel system calls, +as long as you can +\ref api-gen-sessiond-conn "connect to a session daemon". +You can then use the discovered information to create corresponding +\lt_obj_rers so that you can record the events +which LTTng creates from instrumentation points. + +See \ref api_rer to learn more about instrumentation points, events, +event records, and recording event rules. + +@defgroup api_trigger Trigger API + +To be done. + +@defgroup api_trigger_cond Trigger condition API +@ingroup api_trigger + +To be done. + +@defgroup api_trigger_cond_er_matches "Event rule matches" trigger condition API +@ingroup api_trigger_cond + +To be done. + +@defgroup api_er Event rule API +@ingroup api_trigger_cond_er_matches + +To be done. + +@defgroup api_ll_rule Log level rule API +@ingroup api_er + +To be done. + +@defgroup api_ev_expr Event expression API +@ingroup api_trigger_cond_er_matches + +To be done. + +@defgroup api_ev_field_val Event field value API +@ingroup api_trigger_cond_er_matches + +To be done. + +@defgroup api_trigger_action Trigger action API +@ingroup api_trigger + +To be done. + +@defgroup api_notif Notification API +@ingroup api_trigger_action + +To be done. + +@defgroup api_error Error query API + +To be done. +*/ diff --git a/doc/api/liblttng-ctl/images/concepts.png b/doc/api/liblttng-ctl/images/concepts.png new file mode 100644 index 0000000000000000000000000000000000000000..b0977bec946a8ea826daabc791291c924f63f4ec GIT binary patch literal 115653 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

>9nlGOLXoz+#K$_ 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

#7 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 YHC}9*r#kqm`3C%x6qgmN5YhMlUz;f-RsaA1 literal 0 HcmV?d00001 diff --git a/doc/api/liblttng-ctl/images/live.png b/doc/api/liblttng-ctl/images/live.png new file mode 100644 index 0000000000000000000000000000000000000000..1ab2420a6465a895a35fe94494b69e7d8c87b494 GIT binary patch literal 11161 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 H5#;{?9tnOg literal 0 HcmV?d00001 diff --git a/doc/api/liblttng-ctl/images/many-sessions.png b/doc/api/liblttng-ctl/images/many-sessions.png new file mode 100644 index 0000000000000000000000000000000000000000..447248a326f5cd1668dd81216edc27a60b8da744 GIT binary patch literal 13410 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 literal 0 HcmV?d00001 diff --git a/doc/api/liblttng-ctl/images/per-process-buffering-root.png b/doc/api/liblttng-ctl/images/per-process-buffering-root.png new file mode 100644 index 0000000000000000000000000000000000000000..c028cc7f7713c3a962bf7cccd477b099a635f258 GIT binary patch literal 126620 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®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 literal 0 HcmV?d00001 diff --git a/doc/api/liblttng-ctl/images/per-process-buffering.png b/doc/api/liblttng-ctl/images/per-process-buffering.png new file mode 100644 index 0000000000000000000000000000000000000000..a2c98501fe228b504f79e2af8037a63974b44aae GIT binary patch literal 80120 zcmbq)bx>T(y4> zDQ1Ry&*|>d{q@&<&VkT)- zG!wJyIgjH-*2e_1X#w6sDLB?n5B13 ztwkdIpS}7FU3q0f__I>z`+A7UXb8|Z`3tJ7`XazTu%mwbiU6Ku!2a!r0Tl?mssBU` z2MxS2hEPRE0N#v1S5ja{!H_6f>v*$jW27#B0sfLGov9TrJR*us*clp^TU+MUlnE^^ zs8CPVj7U?`P*xH=Ut_0PUaa<9y9n&AXI#O6TI^LV!k@qmDwO-wpqL~!dXoq~C=OJp zv6ISo{~DQzF9-5V-B26$GvneuD#Gf)ea4zE$}oGq9tQFw?Avm|$3=Ey z`0$AbCaOAG+D#^)K45I&vC{`re;?J>%yqm<3Q2M>?0i>6>+Rv})sca!TIojoB7t(<^bh&y(Px@stXlSNsxIlZWHd+N^#ou?64b$Y%#)_axk_q8m2hBw>+RCY_#~c z{n%&9X)II{(k4Z;Rtb_<2`(i}Nmh0{eX+8T2v#i91)Xb0PrCKtCSPgW#!6gEu}}Mn zyHJ)y=u`;J7vfklFh_WD8v3!YT>3t3_W|M_AZ^CAVI;ijv}u3$GEP>WkheQ;5oj&` zLRXCEI{9!}7x?{V-0ns2aY*New#uUI_bG@0Sa{QwT*V{`bO%c>I`rK7&g>+W?Nghw ziW*Ubxp13S;S-4>sG@^K;WJ}VO2?}ajfQH+6j@Th zXZMU1W9IkTh*(6soxrlr7x>RTPC0b=QWKQJRHF45RasLJltOKH*W4cw;NI^)Tu_;dIzgJS>ujE`UF~Q7d-*I= zih03r<)vlYRy!=n7;V!5^TExl{m5JhV$(BXXZubmOn{hI(0utl>A`kztu=KXfmQ$2 zz_`3?o7b1v(fsq@;r1*?O68(;JfuJp*~S)OldcOI_Ar^Bw*T{o9-5Y87X~eNo_DnyZDhd{2GMze%+BFkREIEIL>58k<&b)$vPbgn;V-`1#z@% z(CG5-y~s@^qpM0~Cf15hl!cGGV^P*)hfHF%HTGz@z8UW0cvjMSLgvPd&6xFzaZpm z^5UB5^OS>;Nm3yhMqmFC_jt6<7^fpeEl1DTT>3xbXjgBoJS<1tRA9S^Ry03jHH_s| zmEc&C4m%@d9rSz$ z7FgJk{!6f6F^{!1Y(Fdo`ZcNVG9DK3@1n2fLcNiOHb#&VhUX>9Da(#+;0k=`*VS*- zzl$DvGa{IW;4-JU^=l%;MYyu|o+^GRsz|09KPgitv-d8N zPb#cX<1rHtLC(jqoIzl1_H8?@s2YaqTcUEIos{oaoZyPZJSsx86H>ifcuO&zlV(RQ zKQZgSHOC#)Nr4#4%+PpV|FD6Fsux1?r;#XfhlQ1hq3j{!;`gF@ zoXG_J4*?ktuS*4d(b6Fd!HxcMDe!;6yh%h?T^l@zAb=%<5@Ux4EPr+Nxz)*(?&_SY zvt#*bnGlpipl!xJ#6(+$ylPLUb~#^i0M)0;B;j*5)ds+UI;HaT--zt?KB~iH;vhis z8LnUc!jg7laU=QUH)pP|1D@%*T1`pQtfByB&V+2V;ZnODm)YGk*EO<|(ja!DLqWh` z*VRdJ3ZIZz(j|$*dhKDTo9n0{4NRZWKHbI0s{+wUKESdJrsX$r*1&F|NPQ2F+N zqXPF_9GyTyeEY1%6(qEoCaJRO>VzgZVpZ<=>&i1%QM(!p8dLs89<;q&J)CAqY-ae_ zbk;BkxDh&>h9L7VfoX{^GbyfL#}Do6wD}KqlT?JsyL{Lx3v1Km4<+8KVL*maFeyf_ zjk5!+XUD_hKciv7zC%X|Zhf}*+~h#}@)`PTkJ%7I>?KkTj~j$de0-m!41PI)ej!;X z*y?&~Fb~a6a)SF?O}eQD{ZR(L_TcEUV7l;;DUUZ4lYp?>LUC|uF-~#7b{U%AZ}qci^u4VM=Yg$_re_%*am@|ik z_rJFXPfB)8llM)NzZ2$|mNL5jWBKrADbG)JgKa_qYd zU8*Tcv%QA3<;-~-@$iV2%xe8h4Bou`ItorZsf8Y4(~>_pN0!Sa>#w!p=7YB zD}=Yxf-o@`VEl#>mr02X9ht|8;BblZO-NA%8sL#YG|%8gqtfnd!6&CSu;*@~YTttT zb(A%YtOb(?o^H0H0XhHxDnK=fl4rVs9AfgkebrgK&m0P#HxK9SMW?m}VD(JQpC4?k zpO()vrC7AMSY%u%fwXd#TvvjoAWZWre_|O96HJt;@BPplz7#r*CMgo}Ga9gZRcB}n zK4e6WAkmL#1ex`ZSxSoLMu=#2bs7b!AQ;XLt@G8Mxe?`#Jbzz6A#Ixnu`+M7w!79` zOqTG&&&YvOz2BHvRFpfRyDw;3yv5ji%UxkNaigrlXGQsY&^|f4eW>yT3$iiIpIaFW zFE6%g7cunEBfg^7(|)|&YH#8`K($@zr7&1j{Q&$x?$t@kt5~f4J0sI#hypywVf#(# zAO0;_>ywI_`e`9ZW2#x%lS^wFcDvo@o)6HVplr-J>i~%V;OjKjJLohg?P{KAoh2;= zS1}(C=h#Bf(#V?HHW6xC`aLfe$3+yiUgi%Hi;=Y*>0A{8X}&HDl}Z`=Z18u2@0yAR znsbzHk;tlD2d2rItGJRAX-H9~*HMx2H42Gr`VBQYQDOv!m1aQe6z>7LtPGk7+aQlhd!JRvET;uxAvfyqYjkTUju}NpK4OdCIrGwJ) znbM@=^?HnwGg_i^+lpdPQFSZRq&o4nrGYD)Re}C^E8uy--G`arQnAl_@6eReS^i%&QQKgl4u2>#$>^Z+SR|T>LKc+VynB;FKA{Lx?08E+q4NXmthxaB6US2|gZzU3q`fMZLoD$zNnEKJg=s z^z>=f?rqxy&*MgVbA<~=Pk*mAOH9jo_RAL`zf(?o6Lwd~=lRb0j8!o!+C4-h7 z56?Fd@E&)9iAG`wW*sqhsSz~vhwZrB=#G8c4~O6VC9bWH3%PC4C@Iu_9dT)@kS+d? zuW1DtCfaW43%{X*<2>(AanhL$bV+RZbR<~aQfHi>UXw>Wr(ZRd5iy{G6(s7U6~s8Y z>Hsl{$%&B!pKzH$cGSaYlf&dyQ}kI_uYQtz|E&Y|5zNjvkB zb26ODpyoG#|6C6in;nog1BOs&P}!u_IgMZa+03?VzvNPIWREm|p&O~7ia{$?RbINh zs6;{;7jNXq!Ky8TucG3d)OyKcHyl1B`en$=N9u>Vhn8ok{7QO?g7C4!x7|YY!oh=f zkKY4);?z^VY(;sMf~xY^7CVOLTvNCa%337X7g$W=Vn4s;$;>ypFeoS#7?ag8Wuupt zQ;v_vI6c_g*|Em>#JU_GXz^snN~$QUs-!cGTPJqD_U8t@w4ko8a!Vh!S6QE3#cA|a zFOlvsDru;UTGa=xn|p{@oIUk_x1Z&d(>tFX5jRE=nOn$@O2ks3|LX_t^^s zx(p3@swn%X|JJbwN=?OO`YX@R5p&Be%2&d|%3*4frptqgW&5aVF~fi0FQoMuKIt5V zD`Dti>~8b@msTW|MU~Uc$y*sGLg=B;&tyLn389`SD58{A)Up{SMRX!@G2)#LEPrTu ziUF6C`1ME}NoD4Qs3*gz=)4ph6>~fs?#Yv#ZoVp6t|ErmSPa0S8u4Tfl-ZLpRoC0T z%B0GxDCDFl6xx|~; z#-VGU;xg0oQg!1`PEQlz242@R4nFRBy5Mw!$nc5*;*CA__85W!^phq#u)f>AEpArt zi_9*nz1(hb9dULpr^xxJ_gn2sbuMwaZMmZ(><8C17NeknY<4Qc1}AO3WMnf)u9y8Y zNr(5k4IIF4)LS5kOXvycyGl=;2YLq+O-ru;b}ppq!Xw&y3r0|IJIOxW9M-Ym`Dbn? zI%ow`!~+X?qK6;|18SaGUEx_&O)vWDc91LF8+P+Ysd5p(RcrC5dIpRq;QfJHAb>U; z_5|3k8wzZoH5P~X?;`><30`eJ&_F{FW&5AB)c!NT;|oP9mcVAz@wV0OR#hN1V&Idj zV){I`YYE4Lgi6ekkx1_?7B~IsMD$W?J4323bBJnri0Zw&97l_foGnVD!~*2Khrx4j zHx9-)EOg)}8d0mLE9T^Cgi4B3pTFByLDX=8y~u9#3@SuY9&Lb_&rsRiK$8#E{FquQ z=zlEkf2Z$;onb$!@5dEQ_gE?j>;gT!cO?Gq#&v0tRowXT=88U=7D4Zj<|v$#97&JI z&M-!K0^adO(;UA zH-AXSN<#ZJGax|qgJ{A27!l#_^9~g?6}4or!TaJrC5*#|N!5bnB@Mp`nr}oL!Q^ds z&aKo6$4FG?v6K8EZ!IlX!aZqC8=d%bDkx>8lpaTShzQBXdVP!Fe5O-{EC`=06WSX= zrSf~FkAaP*t}Kq-WC}9BanQXeyv_nWf~o%}9jzvyf`t81@>22MDOJps(E!Aq#i~5& z)vJ)LXlW^xr?f-xk2^%CUzpq46H#7tDJ8bKMkf>UDkX<_hpiqQ;=2Oq*&Go%ie>rb zh8LDl(8NJomw=d|4+JDZG*vR;Xhr1v!l8qdl+-erT$nTwh*CkCGIA3ZmOlcvp*CTZ z6jdGUTUuP30+a+;b@{QPkgx9uk&696Dj2NWIN*Su>TM!i9-7H)P864Sj=jLwz^8$~ zsh|G!b>n!+M1C-PJlIV3viGHGRHlxQ#~IWq?Mt`%&^=y1Y2_n9&Nx-;!KJsj4UJVd zKTa2X0{4%V{#Irs@5|luks;@sc6jo1?yH*3HBF5Q6IA&p-}R#b6?8kV zHcZlQcxS=2_hYst#>Klk*gOUAq;=ERhl4o_w!}{r4|F>@{2>)4QG^|xvon=Oobpul^YO6Gkkjge9=4i4RR zCVYH&v+h{>w@N~}%JZ+@W8>vh*{$FffG}LnXJ*^zch1pUwg`wnR{+t1W3qiY1(m+^UGy%cFtKQH_et0v=$c2!2KDv77&AGM*Fc&j&Vnf;~z+40K3XoH~08> zqV5K9yl#i%DT)l;!vEWPI4!HNVqiMUhAP`xsHjjffPUFN!ZURudCbbtfw6wuOgS&F zP}=;s(9HKXHr*u&!gjgc?o@wJVDbir%aG?LY*m#>g~nxf3+3jY?q|;3sf($p!oQ%y z1ck>ab$x3?g9X$VqxWig>9BrgnH^AZ5X2Q6@y>L#RNMzVJOo98xu=bz1|3>)-t6W4 z(W}4XLxb|Vq{uW-a&gHHuvF=LhcO;A*uR9s1g-tCWgd_`>zxTNjk>VNDxJfN)91)^ zllx?}hq=nV7S^EwV1hBz=t>`Qp~>?f31QXr)#I5k?zUCI+}2P;5M%QHFnJ^$$ zXO&WcSjbdLAPkNiT#|6s!%7KjTcq+E!zTgeLvNSsrKrxEGo8=CE*4TdDA7>I=mMcn*`$phjA4pNZT8qw}VLL6SOG{5nM zBK*0s!s_vEEup0*7!`Eag!nHEUY+x=l*|zf0sub+0+-ME>>ww`_xFzT)6qc6)>xoB z?xRAip2Pjf;_bj!?BC`95G=-x7M|sFLXhC~wO4bdZVhqKy+VY8%dG;qz)$$0_${*e zBkMoVF_eg&>`#C^*;vIKIODg~bJ71{%mlj%kYrI0OSVcS%k6758(sOSYKI%APZpq6 zE8>c0O$Ds?kzS>rbj@2iAf6us$bSLA-a9>BDTO2+h_bo8^oeRKlHlxk29WWA6vf~Ftw(tHJLvkI3lN&Yfe%EgqhjNtA922JTiR-xYRHZ*HH?}s*SZCOL8qu zW`06L8;fI}@u31l2t8O`K;*H@VVT>xdN&2z7&zPyB+YDvrCWZH#^d17_^!9+9u+98 zI)oWQy-W}JFa^LHiXh$jy>L3Ehnj_@-~nuP~j7ch#3RN(|E)8pr&O!3~I2TZ_=+`V$9MsXhNbnnIlzV^}wxM z7*o|g0nj>O1znkLVp^9u%<a+{~z7`FaCJReUqA!Ux3f*xSEc)wr6(%8R)))Eg?#!Ng@{a{Ne=AUW80cpU)-Y zx#Fr!#c32&lz-C)^fyRXS2ZiBsHq(*Sj{6Ma7kW_aDW~o*pazdCb2)4%KYps&N2x4 zMl`>qLQhdKvwvcatb&5#?M58RlZpYNFm1kATy+T8DDV7@je~=SmtjY}_H0Deu8}~H)1y4kf1L%GtdfjyI|qcl!C{r`&S5hIFMb+v9YI>G~T$@+roraS{X4e=fW^=c9&bo ziFVUwIah8x8d=oexVTtZn=&Vxo9oiH4^lD`9JhuECngSsjNohSHnf9gl1|tQ4H*KV zfSvpOBz@pHot~%4v&f$jT#oNveF+1M1v;U{ZbwHJl9FSJz4X%3PPhJqz9S}e?MR*O zB#a<~`kIS|*gV6->9BuX9DzTB%_b^5+TOt~^Y2BE@$Y&-(Dd@-^mN=Wp+*K4oGgRm zCUyIhY1A06h6@V|UbQ<^5fNo&BoWS z*y`Hao%*x+dcIF&{QSN*$+X$Jx~#0MJ@41!@kQfsaM$#@tpX+U52x$!oUcB+BVDl_ z#LMz(&5X0NFrfUSQ2UUQP&2wn6(yaf_bkNuw>KoO2Oa4jQStHD`?Olff}ed}ze`9w zO+4M`_a%*|0A_^&#iGILp{;-m)!p8*&{}7CZ+aCJ6{#pG-K?{3qNDFdRxT|)Z3W^l zHM60bg))11xZh!Zk-R@TUuRuZ2@-j%Ccyj`M*Y(A`ne$?&>(Wi7$YMT!IWxUdwUlN z38}ZEgPhzvp38Mtv#A_M2fM}=*H)jKkm_nW!NUQlde|@#*Oi$PRei zn6kQhdO72UD7pn7KG&N@c^!OmdUiD-At5O#sZKCsrl*7tpY7ePFl0c_wR-pQx6cNbT2fNu zgTJ9bPG`p|44*)a`m@AeLIaW0w-3loWL!fw&p(#t{$!@^Ufy0mQ*X`nLhxIA`&Iyp z7TWJWi%Pmt?;g3CSO$~V-7lBJp`fbDW;^wVdfE0Xr@O10N$@`4f%P*jr)lGnANOOp;6 zP_}$%&PF=l3}t(m_|0r$VqzBo!T+9HR!ye>MgkE?Hl8eVb#s%&0}Hx6-=Bm5NjctV zV^VW4*xem3GS)G|%ArEgX(L+%hL$8JW2Q-C!a!cd5XwC~q%esm{&n*8ZK*Q?_1oAk zes~k}otD^`#xoDQGYMfw%lf)tt#5{O!8Xy~uN79S)ZA0G^eV||b=`Uvp~!PRCnd)(07 z!;OH~A(259+@cJEw2zmU=U_4o{$r_1hdk*kGx|ST7=j~*G@ZJF-M0pTyo2=EP*{nu z--RM*4|@f`0TAtgF>rBlVe%$!o#f$zpo4RW^H&YiWP?)4bZZT+7wSkcP?4AtMSTcRD<{Fd2+V|DwIpUzQ^k`RVXz_Yj{Azr z$}n-IWo0NZkhM|RnX-|XbXzx1fEBj3#!TwM+7fnmNrPe=8sNpz^U#2CheU^9@^IeY zfiV8Kj~`6l-zPIM@$6oipP2y*?KJ15QExn)PVj|;41nF~0vWgW_}bfF{Ur%inp0Hb zlL-Fhz}C?MHDGFbtBol|T3W}rTQb#-wYNT*Vf*ggP+56;Mz&53K7ci45Q6%T1TYv` zTRA?BEmow^r!@R#FuuxR?Z_p{apNv5F8A2TY(pb|{`Kdjrsp*PIsJY~>+bH3;o*D^ zinLg<>}G$Wskv!%Y9gK8j4lriaF1LKJpjU!B%#Q$Y2d$nK?o8G^I%{un9g8U%MlIa zAKX+*J7%BEo(%bE?w)2j?r3_XunMMaXP2B9Uzc7h;}ozc0#KT3D}IagA0CMNB5^=-aUdxqPCx5o85KmBlTCx7 z7(d4`=$gKem+A}u35)L6pKc(2h1y!+Ox0n!e3wTgRJJF~?n#reSi(a8H5Q?nkpsXX z49-~zPcTU2}kvvM4}8s65I88B7!s3?n*L+Q$G_NL~Yh(Uc_l2tBl z_%>SBfcrWRUN42l9Q_(B(IIqJxVlV$sZq*QomG1D`i=j@fFd!H%+Rz?GGwTsr@w&# zxYP(Xk1IfWmO3X$qWCo}mPKlljo)+OPBA9_nw2Mv@ z5gMQrH7u-9oKN9(P#PAbQ1NMHqfwLzwActjBqUc%{9$40$LvBpK^oer8mT!caj19> zT0%MrfA=kzR&N$@T4CJ(^z9A@Q-&w)nGA)5U^+dcPiv^MHJ2}#ZC>einNF5iZGhg5 z)zpd(8d8e}VR2IOtFsHz(&u$}^~#{(@t``NMG>j~NkL(PBXNWzbZk{og%gF;Y~9k- za^lO0GgORVq!i~HH61A-<(-)si|&&0muG0nb^r1ht|cPN;o_qHl}86ZD}0BilUy3z zHsjf^xJqb#=?d=z)&nOk9^L!yPpMYQS(g{~hEEqEJGy?sfO}FjE;zs`bU6j2(%YiZ zhCF35_zH65n1JfF>elCGv2W>XP;6P}BKV#wh2)rz5%1fO$2Z0X2ttu{j#{%;r(mr? z*{%n6YVP^bjrW^rz65O3JOA83*BoDxHZn~G*;z@S#+o^8L3$yA;Xl!EQZZj#vybIm z?~Zwqek{OWisG^w11{Vt2w3kC?_m7;rjv(fpH_Xvm-bV@quJP+5EU-s>7L5sOHOuT%we9RgSbukJRw-fZ*yDmwWENHVxH614JB z1mCH~L2v_1yY>^C{>u(V#6z^Yyom{-D-^K08U_CV3!uyOQH3KF2S-Cg^b3rn=7*(Z zyO4gvT3=_9@KBHhYqFUq#a*uTI939a(gQM6GkizKN3GRcrY8G^sNM;Yoi0f$#cjgx z#l{DPUWYt9xHxp%2~nMH{jv@qU&ie3 zyu17PP4yt05Q<=gL&W=7#er<`N?(Z3U%=ZybV$(>qn5bDHi5^r*X&y~KloMF@IH+Nu3;z}ujJ5)3-<|W?G zR0GkG9nma)%|Sz-TI-kb5m@J-;&%$6D`ep5AbC=L>|Mw|DE^)Ei1*b}-DZ{5 zC{DKmGXA^rqThJB9jKmqvrKGzc(+91K!xmM^4>uqZZNND^YOTIUS-vR5JGkEe{vx4 zd9Xt6vYYV4SlKsU-iTTvXp_@T+!NPc;+8|nE)cb z{F~JYwOi~~6bDu5>J3uWUANs69%RhyQ!ZUjeEd3FoPO;6(w&^7pjE1;(hO`JNbk}X zZg-T~9w7H@>RsN4Yb{^o@a}gw6eOo5DX;ni$R!rCQThulbS&bU-RBNXFidS4md|ry z)jg`~0lh3p=rd3d)}pvPUxMux*5xshQ!_I&C+H0A!$aZY=l`OY`(OkIiMYE%&{|t5 zwFl>+h?KqHAq|n>Y%3K5PJs|FB%)=}xb-tPq2yc1-Z2*nXfp%p+#CKQ%T@ghq^Qq~v#IT9f`{6F-_FnxhG)~nGW3d#U7goKvfh$&b}edHVr zg$#{^g^rGnN@Ge1DM<~_1Q{9_`(1iM>#rZ=2W__MI*Pn->*c;5Oz-pd#`q7m^``jzh4@C;FV3> zMuj5vGdI)+(+aZ6SbL)>8Hkn4V$-vFAc_b@PSSy#os0{4%HZKamFUWe!XstoPARYcA(^@{PeSd?Dtb2zVNSdkti+DJoZQt^k!UClPv zlwU^q>%ie-?#Y{P7yso_)nzCOVl-kg+x>oZ_Qwi8hP61_M=24vj+~BT@qrswh_i@R zS*=non_?E1Aagw7S5PZi_J*8&T}J+N43@0p>gtBa2U^){twK$gLZ`=6FVbd}al`Pl zwC>ZDZqN*%B2myUq1P6_Dj-wEovGeiUd!xX7`#l=JiS6Mxqn~i1s z4yZmK@4-Fq`IeS3IX#^p7o_otlnA!`AuW0uqKcv`SxCMw7J~~%bO=^qRfiODT;Tpn zo)2}Kir_V^^t#j-Pe@@KlL+m6W=oatEQ)DII9L#L4##+>Lvr=k$F{DD;}eqO6Jz)w zQ{$1N8SWON{H5ts>-_buP8q{b0f&g;)w-7*j#%fM?lf1bekYY=iW=__E2V0GC`?$R zr)9M%^=0q8 zANBA28Jc)33GRzVjP7~!IPC3*as6<&aZD~hK9nMRGE;WGom}q{%l(<_>5s9vSWxvt z*jh5wZ!sC zYcJJn)h5y@5g%qOG80F1=h2zRcn<-)d!p%h5gX9f<~7uop4Dab@vdyK>|~?VsYgef zFt98P1=P-*uyqQyQ3^4E)kVTVOrkNt{PQG2Z^_jrtsatOUIvHC@dKbID4OzYV|__C zccnMSX>MKKC>+JP^Yz4(1g$O`olSDuPXS1mh{*C^ru>2KcoJgSZhoCongsCNklmOGs7!NsC*^llU!NVRKrt^2Tf6bW@Kry46cXor!u|cNhQZ;MLxRj;`>t(@Uk zVq`;`B!i@1pbKBXw3DA!MtM!bB}e!eGQ8LRGeaERR-$O5&q9(spu8?9pDMl$0rE#<+9heOANTeR}Xj&Ckhj$h& ziLbwOTFv%x-{Cg_S7me5(wDy+yfr7F?@pd2@6xj+A%C!Esnj2)xD^?vahhB&bTMeH z34dFV5;2X~_&H}>FR8UmX8!udse z&_>M_;qbx1N=tb` zU^*Fyg7EreH1G!~>b9yXavPmcuy5) zFncFvXE?UA?{P2C5M3gT>25vCJ!y}fm;l)ywIcldioT7Z@@|oZ`C>D9OaS%A!iixb zLDp3cgc#e|`*p$Q)Zr`+Ox{?%qN9~(Sx`P@vQf^(~Pv%K?xsuNYPMzn>Z5 z5IgJ;S54ABZzw;G*!DEJxO|zrK>*4OG_@aYeTJeXq~Y1Ws@XG(()bM&LChzFW=g3s z1c%3mw_Pe{dwyW52D62WT7`zj(1478&lXz<`3*6#B23{mZ%7?NS_oflb+J zG%-i0O}Du|od)*M^M7fF25}?3o;T>X3D*yQU;gQHBVy^Lt-x17k%QqywzU;{A!+jM z-yx2Wus?;5lu9p}zBq(<8Hw@R4VCmILDIR0Gd!jfJ(w6%dp7{P7$}hlM|?M52_<{Is7wKd3Glob!6$Xl%5X+gZZI8u63jC7I zOwlaW@6%eTlEUkRPe9Ef^xemhMZ$l<73u0?t%Wvo7-2FcOnS&Ij-tG!fPgrtn2HuN z=GyzYq$JBoL9~1!Z<=CU9M@ldlN*8H<;_(I&r{<}Xp#M1>7X$h8|9hdiw?Vt%F@)NOBnEk0c}eGA$+kE(Y5>ji~9|wZ?w7% zKi0%x@>a*-%3h6ux^+TcK0Axez)LUEZ^y`p^A3@|P4On!F7;Mb*;I4caJ%lJ;_OaI z`?RF>(YvWj74BzjbV`DhR%C6Aw*h=S;o9nL6A?KdTXTN-nENw$S!!>e$?9nbY#j{9 zw&;kOf}2-dDHEepRo(@4yZ|U}t}}37R=(rov9fe_D!_motzOFOnE;O){so2}P*^xZ zM;9wzY@|=bM*+*@D%iL*kyy6{Z3mE z^lB>WY_d|M1hlH0Y4O928Pt65cCQFGw3=Msh)q4X(xmx3^$DdHr1qW_fno%K3#c?n zp%e)-bQ6;kfrD;oTro)zINCJ4`qB6B(bR~S?=;3H(u|oE4Grt?x@*hmcpv8{p^h@;4D`q3d#RFXu^a+D zE(R&R#Oe64yP{t&9tO}^5wBmFl@j=-P|@(M1zND5rwitEy0#%|>MAOL5Sk6(9&o9> zZ0pKQRu+>Q8bzLcxtTMe9v^38KDH`JPCYayQEI>S4@6uaBzZrlWjN;hfcD}=1`0SA z>kJCu%#B?->`5@6O9)^hc*}g*1Tt z6S?#9Dh3M&QrGsd;VdWJUWS38d1da}svgTW-aO$6%1ucMiHXh&ES7L&Skpv7>E&az zG@fp~2}G>CI@9ILK37}c6^pTPGKyXAcu%;kNT(9k;-N*8Oh_fLKH;$@c19@(z(&G0 zd>gaG1;XRBtK{{fz!e|~WbtX-Z5fJwv+}xNaGR;R%+(U>c>-ta zB18aYHI|d5l$)9RZaiLARaakkc1CkmSBIOfDRkio)@VNTHQU^2Tf|4|br2n>In{5A zB=SbC$U^Cf)d)H&kqVgRnU$3(`b`qKCQ~QNL|~#pyzKZgr{Na4MTnw%iPyMp*1`eo z{S>ep;ssz<2aJG=UjZjuBP1~ffYHr$#)scpLEd1_&$ zjLZOJNukg1%a9~C&_Dg%;E=g-H@xV}Q?0pQT1G)pTzb3s38?P!({A??v6)IqSh|vm zr7~qC6cjv&^ps+S6y;;#e5NSg{xVB;4qFr3g5C_9o7=gtn}C7V$(wqHm8Tk1=MO17 znWIn-qT3X^>aHqs`slJE+VQXnNLL9bW+!z#urToIQK#UB!>E+ zwLiMbl$wl#GfKi3hnES*?jCR?qEW41k!RL4A|fJ0%Pau*!k082WbSP#9gF|@Be%S| zx~fTqSbpTdN~-EPCD&S=zom+Z9w{=c&`_AAImQxXg{i^@ugTr0ycey>EnDn}i9^-3 zBpS}=K!-`&oP=2C>Q3d~X z-I`#n4{GOuUqCC>opQyQc2wlgEAFQXU2L8Hl&NEn!I9thXlSS;g@)}G+pHA`Ctd^^ z{)r0exkU8z7$o^cO-+tL##fdrgGHxvi&jhGWWFKA+5XBaGkFY>?>9=rTTWT%T`pu* zZ1LstA}MlnrQ~HK#$mUJ1!(1i>pU+_yF_nr*1 zd7_-z^o63(I})mMiZF#c88NQq%jU74vWb+Vnb*%*!~v z#~t3k8`rshY`D)pbD4M_gukD%UH2D%DHBK0)m%SIOsF>G6N6DZj{FVJwPAm{BZ*j} zKxB`d=knoyI920~&|R@5MJ4C|skS^rgW=i@N5pBzWuG*q-&+KY9m9yvuvB?#GD zVKli?O*%8FdK1!3jTz|+x;svt1{IPmjU5qDb)*#1c*Yi`p&}H>&Bb7N#Si{a)|?$A z;d&GdSXfw}Rqa6)uB+ATC!v~wiK3tzn{l~EWi+;WLhhflzW~H+qr=N(Z`gA%0Rh78$+4`JipnuRxwF7lV0d=-J{!v815T5*3#KiCW zoRgc7v-Iknza;ABP2j{$a1{9Qq#mTasEo*Tr!= zmxYPjVs#=U1ari%iB&evZvb^wP@VUC_-dW017FWvgi8E~>20{OK0$s}do%XUTL>s$ z{^lu#zm7wgV5gKu$7`7u{WYtB?T_2IEGj$Au^zLr94$wq7#UAVSvo$XY8eC8JW&rX33d3l$NjW=k5wN8J)bcBHnLo_by(qt1YG>_HyCl#*SvpN~!zBhf1nSGE8R3 zYUQnUWG&x;v-Ni}_#Ns6RygegN%3s|(OMv8YNgZcWAvh%%kvP7%SoVdB1k&B%anOQ zb(cBD_susbHg?q5Um#bi!1}SL=ChF#IKcjHp_ZrG!|0x&;}XjIQs!kWj^P$N^Ce|X zJk2`fi4J#u!TDH0^{lPs<`pEwsjRM%(0Y7d7q6fooANo)S-WDXvs?5r(qeGsJ095-o&~zy-b~A+*G4ydiw32AEmmP#zxkzK zIJAJtAQAaboAaIG=QU3`ci(obv`P*)hX7ZD-dmA^28fYSOzz2@aqRTOC9f$oS>}$e zhOU@`LWNmogOp_nDE|J@-c|+@4Jx;pzp8bd&P_j)qpGbLvR}9&^E2~{I(a+(7fs(7 zo!9q-o5r?nqp_1Fjcwbuoit8k+qN3pHXGY)tb2a{d+%E3+lw``XZABQ&&=MZU21lH ze&78=#RcA3Gg+x`#vtun<>21~%;>i`<#AqAMM9O;QTucJ(qb2r49i}tbIHduoaQN{ ziPkoRprc1bpb4d!kD#&cFm z*jW-?eTk1lb5z>jugQJo2g=)W>^0zg`2uV7G~$q$OYkfq(g*w2D`1-b*TrSTvF84d zzBt3w0orS_-PYS>KE{^onI!~B&w8Zn)0Dc|38}t0c}Hd+lP#4kD;!fO&tNAn0cr7` z<5UcI`YJf-isGPL=AoJLqB;pRG4`AFX;JkYsq$*nKbbT!>-+g%_rg57`nQr4Uy7b+ z%=qYC%&+9b;$=HnNl^(p(ad3?aUy(Q}#9`-iPO!1@*X|{E zB7Rn(kJ&q~dCRZeUdkK$QVxV2{;Cb%VyQ7nC3y1@2da}!FFAS5ZhD~SdHSs;o1KJ; zHH#g%W@1lU8>(9wLNu(Tpa7pB{*pcan5j{T`d|)`vizyWo55e6)(M$rR7RWskb%^n zQrGk$|2r9Ked0vX2lzEaU6RFHF%u${shGuk!NaHKdOABB@j4 zSJKs^J>Y}`589#oMvP7Aau4(AJTiUa_cgpRMxf_`o|`Kl9V;CjyRgie^rH3%gb{uR z-crOY-QcVu@`IibJ*#W7jJCtXgP<*R2$F+qL9gqU6>C^0FBfJ6$cPqDwq#Wu?B(03 z-P``zcEp(S&g9xX&@RQzT&LYT&oxsD``V4gzhekf45Xwi-qxie_GC;qt8bUC((bw6 zW?o^ncRPa^mX^dWa){Xv#$5~rDJv>la%%JMNB%YH9RJ=cu zw)N~E!#?K@<8acR*IjYAD0W8DZa_{(r7OcH-BEh`8;nyohMBe`R@P z`a$n-+RltkA59^z7@onSD2}{m`SJCZL~mIOx+B|yPaP^Z&SKGS-y?c3zI%Sim5=(D zB#`l8>O=fYL_pMv8a`WuS>LDin7ZWeDIh*@6y4mq6%eiVJZ^=`g*;YqLuXK4Llhe- zDz+-Kew?#I{G-SO%OQ1katz(!Qt?OWU$52KnXG@`f$E7qzQ%qi~PZf zxt<{7u!Gbo`XalXE-odG4E(aA7!d)=A!r7T4#Vw`zqy}oN~vZJkF(z_`_g)DebaJlYb)WpQR}X|n)&_sG$;YT za~Z(+LnL1&3~gJtQt;b?*PmSD5BpD`bNs`}_X!PW`E>%za|lWoud_4*2d7^uQvW_h zu&O>@qnSplQ{F9%u%Ih7c5zM#g7A6-t4UP+-;zq(Z{|!^<9{E{Bd?Z=mxH*g@}^PQ zM_b$_LDMmVv;r;7wHSYa0f2gvmX;}hyx&TR3kebi<;1VQzb@0L(K`IM98A9d#syiW zE-$3G)vw>o&xI={*^`15eSqx;isZep zC$%x3AuKg?8P0E(&4(Lm$`mi6#;%NnT?-1^1Iz!IBJPvYIe($H>5Qq9okO_B4*bLIxp=PTG4}&X7%G&8o zI4EIo&3<|&I~I~zaAmITtjJ$kmZQp4mdUZXHmoH0??RAGH7F&C{diGnUSNiPK(&AFooo3kAHCVZhJ}e(= z?CFtF#fkTdHNI$e$!d62Um0e5rTW!=cn_mkPvcxFG<}7+t{DXMy0(bFN?!f?)k4V| zS+JcRuk{FH!fw<*$5c5?v(jH#B6q(Gx8a7VOAnJS_p}ikD=Q0F7KWKLNRowSz7M}K zqY-BF;>4d~}%HXmWM97RIv-KCtX2#(px*4iIqPiSY1Y6CI7 z2bd@L_txm!z+z=!Q21)8qO!vtFMQCLW{q_^4{xw9VLo$RK+sANPG^?X`wf))Kugvj@suL^{@zr+MUv zb{wjYw4KKOXTwREr-QXH(>Be0%o@Kj_H0u1frlt`&yWw@Z6Oj4&yWY*XaaowLvy5? z+(7?K&A(5#1r2PB%EuzQyvMw2IjbG?|2zwYrLMoT*&Z`sR~E|h`@dMp3jJC5H?&td zI(T?63$N_VKUW#$%3!Nh>J=I{65Z{PrLElcQ7$G1ZO1=#wYD|Zd(Bx>W@XW(@b-Ks zh5!PLa^N&OocmX2kEo=kE~}{lh1akE0MzraNbMB24-7y#oEDKd)Y7c3wxIFnvhX5! zq+yc<70?|8ED1u5pPoO70i9s|1SWAt?{`z(d|2`z##F*JDp zxzhGCa+ymUp%@C8cA5Cn?oN3wQ#AFied{A90L20KY?m(h2*ehw6j*@Oxs z^ehVUn86|u!Cm_xjp+`2t*$UY#PT+~=iJJpW8&sCW zPwID@mFdAfoAnP0KXXD>>R>Df!~BZDmPW`}$;xd2LGU~(x*n)LbpLTW(o!Lavp2jR zX5Dim$aw60z;Ca&+w!E+K_f_d;=59v4ePhRdbJNzlCu-2x-vYcw5qLqRz zIvR?awjru+ZmydhS9zjSm4a9y>FxHyAzoH&LOuEpMFA{HgC<%r}Cu(xHx9-<$GZ{YLf;w>s{Rd}}wZx89nK zzub@2`Wi3-QPl3|*G?)7rcwM{% z7iZERnXO+18>V0U6^0Qp@);{Zsr`2?@f5K{MOvDQQ-!(<4x&I_gHBUNwd9+l`Im*45DJ-P z<%xjDWf!9!o%*QM%Fy-;LbJ#NmNMVH;M)xeA8yDNEnjX^7{jO^^sjr9GzIJoMiYd# z$GnQd5FtEZWSV|JTPbFUvFsy`w+dYp;4cTEYN@R-t{`EwKPrX7dQP1#H zP}Ew;kDKVhN}JED9_x4c9gTdp@XW@uXiyX=mf@7?57EGxi+mH8k4a#s$|}hry(sn_ z5!iZQ*~5ZtC4CoSCyW0lSp)6w@yluO+rApbFKHBSgOByJpldt*CPya%d8%SmtE&c8 zteT-;HMF=|MeC}I4@s;|Dl|R%E3ZGh`E9zL*tBsh=Kd;o*=3KkyAsmo%e@~W1Ai}p z{*!<`1}YCTimWp-1)PR z7KS#-FU0BJ9WZeF@yPV{r}NXCKvh17%-Bx%^)i)75H=EDMy6a(QZzOX_fYc~MjE_g zOm00P6*gJv^aQ<(*9B2j@o!?syE9NF>7LGCJ?4{r_w3TGkb?yY?KO}^qR;nnJVFm1VcM+D z)tM$kml8F0xAhrNtg)wW-DWv0x52~~0ogrwE-@!qQ@^iUw zQ>muCtvF6u#InGub15}sq!*6*_-fM?0T$0Nd;|J6t!EKizB9)| zR9BfNL1!_f!mPVD!ASRZICq$P#W822>;p0=&&91BXL&Lgv*43ARg_94*%uEz**d%f zAKCi$Oog2tzr%BBV_8q12lYE@{*Kv^03ZNuuS7*sp)kVGbIAI?k*6RdOvz`TosFgC ze)@4wdXy-Rk6Zo+v((QIcT4{vRoq{J1G{}VD-Zd6Vc9H&ns2+!A+cScKaWRjL6p%<^lF2|k#>S&Gylly zj2mK!&(2)Px?AzdOG2$>;d+J)p$r=I^b$;Ir%TQCS&w?NknL zNAU(r%KN2~$H{9dv9&zpZrBDG>R}v=y@_uIj&*u)wq+=8c5^jpeF8Bf5sb$EOC{jN`A+8Gq7n%?9^YUOAu0u3#V_aS{)v9{m2!> zF%NiJ4KCP$oLR^|E5C}3f@OCUF4p}_9@(|oxQ|SZ))l8?JzOuo7WDkO{Cd-?O#ZwZ z+fS7zRQDCRq^5o?RRwXM-7;IRG>{cYna-(1^ig`)xe7UdN?4FO4sENDDM80~Z9M02 zT__u-<(Q6Z4X&e*^!Y}OfoI&I(QhF4T}}Kg`L{QO>r%~?9vTn3&>l9b>=W!{kL&Gh zDHi>&)Wh`WbYpmdXy=Rb!}w?lYy6e64!km-ND#A7OzB%~752Ux$Y<&e103Tl5@xcF z6FIvS6ih7k_(BizGhv8n$JHjs8roWzY#Tr`ZsFv^L-5IHl|wZc{r00MPCc3S=LxuL zzmhHZbY7>uAAq%FD?#K$PNZ-ig64zwnEh$87O(p@2M@ek5~F^CX8$0i6puV70^MG| zo$y`jr1drOM5&xw){8pk%z0T1!Rk*R_6tWaylDvM ziTX`l_}!9(5K{oSpA2VO$5)|>6uxJca9@pqX&7hcqs}m|m#DIkpI?x(u`2Bc%R{&x zn+-{H1e%o`Jl)q-^USATvYjdB?He=*hLuw=XgP^0Q3U#ZujlDghNZ@eV0r3iIVK#c=su56l_e$MoZ@u$Oxj<>rTJ2DzxwhD^R-o#2R4_* zRVPa#k06cFs?;5xUlDjqMN-QW*CGRnHIpbvhBNOr-M<)VX`LEc;BTC7p4?rUTt(T4 zg6(XeDz=Z+RaMv)F*p}n?ppyXCh`TZz^-MW+`r?o#OJ*lO5J?~okw_NEY6n2rx1N719n8snDT7tjiMu5@Po9rohm*10RyHy zS@0txhP`jLYVw8)e!$G2%;UN$xS7+6>F3KtiysvdE98ZTK?d^^O2 z&yoLqravR5Zx{Ze>x=09Bx;zG7p3c$w2_ zS45;g7GI^1ZvkXw_q6S-7_5Q)m(5fiL3^JISz8*})hXQfA-kBmnga>)alL3X{5XpW zb?<+0w2KE0|GIwF`rfQahO^_qSg0DHk0vrF_fad1B0}U|3Y*@V63D@5<2)K!Gq7wzNr1avRV( zc)%75)5!0bWr7`-=*`SfDpPrI7+S=`!mAu7;P0fOF1#590JKqBHPvhj8okT8Clu*! ziM5OpNmKYAXyI?7m4F*E^ZmdPbx|S4(!%QM5YO{@`<-4m^_t~Tbnf*3vL32&RQ3WH z^kf;78*D#gl3x@_WC(ZE)W)F_%umsJRXLKy2YxJRvlLiBe4H~2+AuNXNk)n6{P2L+kbrj zy%_A=6U?Mr_;w(=nFT=ecHh(#71srT%-{*9MXsu%4?%9}2}U-p%!}>uOu)sR3#kgo z;J$CEzOwA>O64v*7U*5js@l)bi-JASX?QR~vrJ!~f~0FMR=na}&=fl^Mk^1HT3pT7<|s`pybc-dk9{saT!x)qC`; zX*b*fOpl&4?YVVrEo50r@SVM4W}&%Mg)@SUq(bq0kODiz*nvK@k}B{lzYyBC-1kfU z$6|`D-+w>*t8(-5oB@@hm;G4j*vmV2B=Mq}ffY9-pkTlAaCdGCr$hsFxSdbS0|CyJ zu!+P9>vFrHyJ@VqqSc!>%ta{>RLi7m1P$yuEhrD9)}%*px~l*_w-#b!1Wpx&K32Mm z0U}!0h*nFCRnGVRPL?{Txz1B2=A(3KkjxOFQM9$XHX+X6#u?3wa~k%Siv{^t!{UlC zyU<*r!UF6Etm}1u`9;&>FMmOvX8u~j5HGultK&Zxn6AzOTaDb8ceM-T>f?ifHD3H3 z9vb~?80X{*%tzDg#96|{TU|bKi&Jx}rgoxWn(BSx-s-U&m~h}oQSIExAulda;;P1Q zxLx%%nD|BA1;5R#!=7nA5|x=0hVq&spqy(?q{}Qr2tz=JZ=${R=6JZ%Wd8Y;hNC;< z6UHubHX^yi1hL4j-CyngmlW*tXY#+l7o$3QOHaf%-i|6qYqaeGh3dBdonP<9=y<k9!woCe-i1EKMs@zFC7)2Kc zz7_(xdP1w}xr5iWH(c$bTKDDEe*46>)>e{O-I*2nGg{|%+r_&j5m3alU!!J=A(fmO zyzQf+eB$m**5X(XDfw`ic+|V)0ga_kCBAP-a{R8#Iaxo~Me`KWZCBkk1|>(qIrmJpcbJKrC0tm>83=YooS=Nkeuc-O_xd zm8EElvqKIV*Fs2xt7EBBIc)lGE6e7~sUBkcy{4fdnZ_DxUEgXPU1wuMt;)K$@~6$b z>r*Pi!*tU3Fw|D;MeA-{;p^zP%;6MwdF$6MHmp0W5yqc-)k$UoMt@lc&D}GG_h7H>k6kA}RS}akC9As1Lp8=|+%Le`I6vRV5|_PlUNIMA?qq(RaZWe3F3fQWqR~`f zg?qp1+zc~sB~gCMFvC7f2Lp->wqCC7^=kQOBO8N&)yFE30$fh7bZIXy-eQXk!z7$B z4?RPb!n_k4Ueu$t<cVBnMo*EBm=3Dq~dG@dMTzb?hZ->NttoLQ8enm|$jMo1726 zPku*!9Q#4cLNxRw92gkm1F62~mq|q+@T2tyIO{IDO8xUjAw3bHY8Y$$^PW5udU+Go zRYsrR3FYb`lx~TQhs_l)OM0?D?*D7JFi!@$27SXrjE6O5Fo@A05y_EK2zih=J#PkM zoE4f!+_R*fWB{(D8Q*2jzmv}@c>f@^BW=otSwUeKszNcx(q{BVL96VCHCzlFrn+CL zDm1F+l)-;gegHAnHGrmAH?KvtR!#A(u~1Hn z8i8ojs_jmqy;`r&hhT6dAR zB@RV1F4@fJ=pa_<{>voBP^o&yh=}nr{d)$r!tH2a@}!dr5oYJvxPpLKfk8Nfd?{s- z4Bs>nOQ}%vTl1@Gnsdf%_vF*PtYa~Z_R6rnXxNExHsp9 zr#Bsiw{P}1pglZq4}}M(QJ4`z=HU)wrQ5asu0>a8O*5wJ7@ArJj_kq{gAumiS^w_K zG)RW@y}i6SY|LMnte&#n!0#MjmsXai1LT?K1?0gQ#nN11%n8L6B}G?1N?t)%X=+$S zbo*n+STiFk;_da8mVuDcxz+6bl)uSTDbT>PE`4TInI`)bm6$k9#nZa#9r|+mv3UfG zQ1SX8(L`1Jb3JIaHp-H2k!wtT#9MqF`6E|3d#N zF%naei#6&KHHN7$N(^-cmKg@@FB7>{4vu`j>$_wOL_$-lgQL-5boy>0I5tvT- zBAWm&NwIz=)4j_$5{^cQP`I6z2Rz8&n^S%+RQz;;WSmB8K3%_qr2it2l+EPIVH+Ck|3-fHS$Wt zGr`2vF->R}TDU-xGuYX&7HhX5!{Dh==kW$hYkQG?OyN`(0H<#G`!4Uslpy?rRjF)F zDP1|kk2S_NKYtlR^GG}+PA{e4fI z)6<@NPmDRV&NBQLkwv7bf@~y@3xnqralTlL2({cRd*EjOR=w-r{?%1xd=l}Ls?Yl7 zu(h%>$3b|j7-FPa;IYOjmpn$(joLJ7sTINhIWsxV%l?vw3jvXVc%=t{BTq;r2oDSG z@qy(3;{qRLvuh(i<4|JW$z*IpF9vOx6|?8IcrsR6$#B8Ik7P|3l-PkxLH;_DPxyRXP^JwEgI-~Z!Eg2(~iMy#^6 zBqLt-{u|AT9NmPk?S21+BFbp{>tr@<2?kt9kFxKK=oZo=BOak6%v16i47sBD%iaws z(a`kcrP9ByR73CmN?nZr&5@k{J0P0Me_KxC@Jf{v1LD{|yL(INug^~Phq1PxqB+

slFbF+h?nHZNSA(|@VcsWBR^)r0M3IS2RujSEn($9 zxdH;;Gi$s4c>ew4NJtw~w>i8jN3n?7kC{bMuccQtSEcfZ{eF8iTy1?kG??3&ked_5 zwc45ncn~a5btw?nok4VXJ5v4S@<0FQ>L>mbPv(y|6QB;Uxq5}rDE~Lf0VLzKpc8U) zyidf#-frWyCsTc2UQe^x9Bg0+aZU}6Sml!&GK)aTI^{5(da(|~)d|o@pxb%apDl~T zvGx=y8kQ?1$IRpxD>-R~1?amY(}omtFtKmj?({!i*WHmu281anL4T|uVu4imhs7c8 zKEHf8Qe*@wBp`$MK?`N15alora(ypOL_m1?Hfdv5Q(j?ZV-wtLpi2NQBrccjVEUaH z+9_|1i`524ZMk9?QH&6mQrTapwMkutej@%+(gE^0+ff>3Y&E`T2{7nPXrAksbtr6c zCUYg4K&-x|o|>8(B%XnmhE(yLl9rU7DfhRi=I@0(YpWo~S|CHCI{W9#!+&}aNiJJD zM1n)WijAy06cAO~J&cWoJHb&##M>ETxR@v}gNhRA~PTL_ge^cyImP{cZ~}hu2PbdN=i$URaHh!SSpI!stcZ!4Uf}uc#xYxW`^PHfBx06yEl>~NZQJz zRJF7;RUEt)!b1mjUS=1(g901jy$(e-5_iWPu46u3p^41W%$$DbdHe;L!k zqm@2ei@vjd^=iL~KMPQ8bf%}|Oz+?8`fjAy=$ALs-G)MfjcB+|MphNr*JPC{PpMBu zZJpNVZVn_pNYaR@u>OpC+tWVl7OUo;G}4^T#B1^MeRO$`n8-xx4B&bsrtL8_DSMy9 zkb(lh@Z;IrTD_JqpJ!}ryd8&V#?HRQ-Ss9GW)64i7~`yvQN`BqaAvFpKq4(n9!^H1 z-#LuCDl^|I%lQyA0C4crnLTp^wTZH90>4>haMukE*h7Tn)z@`nb?OA3xgaE zCVsRI+cg?-sMiJ;3OQ{Pq}q=3cljz#wkD{ClPx4VOV)NJrBlB@qwcJfgFa@rPw zqiGr9nYo1O-~41T4O;9=3LW%^Nq232&G9KU(^`K!lI!66WC^dS6#LuRKh87lR^6;{ zi1_f(#IQN4TpyMY!B`ewWmhsG!NY3olf^Js>5j`XOglxCZhI)eI3 znwn3Ct>J#JYr0zEM+>Ld(%k7R-s6M)_Q$0u7ja0VubbIy>>LsS9l59E4tHiqu^KlA zbT;`h+Y8UL>c>Iwb)&30Y&7%ssbpTsM@B@GipRP0C8O0jYy0n0qawsA@I2Zx7Wtuj zeGe)q;x~QyKYv~jkuy*nc6@!V%y047&3JM8%m0RfoHN0;$-)+b6BZ?%t6pRi$h|&3 zLu_AXc~PF$l^fP0r2MQSm{|G{Tjw_>BWqtcsoAw@SH`)eS+mr17Jly?+4y&{#Jlnq z0!54)g9{l^a+}=#s>RBqX8d2lb#rQ}%B&gEW zfSsl&ca*TeMQNK5uEb!cxeH_~YQX*9#b3PLu5paMh_}Cv1EG! z*ur1DdgaSezEAU9-*t1NI;(3)XZ{dLk;B0x0JR|t}KFYZ$ z7`*kQ>Y;`U%GLBGgKqJ`OYwB2h{fqCp?zXe1O>;`K2Ti8K&Up!-V6euyLG8=7YYTz zr1{4t`~&R${=D`)GjqACVN5L3)ewG161)Xu=IFKLAWU<2%lRn5=oUHNM&h;?yoT8J z{PcV*)r^D2>bWaR;qUBS`}%8!R|~POy57)5hjNJK%i+*rXk1^czCROsc>l5Z;>x15 zXu@pTt=7>9pZI^ZSFPtQDcO6N zrveZuF#`} zW?B=~(zFeZ4ZLp_+>KTkY|F|pZan5Da(^}v5S&zCMG``v#yVG>C(YZId-dc1mC%Lc zX@=^+s)s!O*Ie(Q#ZXOiIKLN&JZY7`v9>JUxt3VPnMDP8YXJFe2v9iSMT*+ZlSS*( zU(Rq|*vs!t1UHINSMy0u=`~oy+o_i=2!0G+s8gXOrCYt^Jn)MlYtVq2NbN7-p^vg6 zl-~jFJ&E^(yuECqwngL3IT9Q5`B426N|67txGR&a^ZVa^r~BLgT=Bo$di2MEPs`-A zq;oKfUnI-D#j;v^W4qq_WlQ^T=#n=l@#6^sUqqeFamDjRn5ry-gQU7>^l*Hjxw+24 z`(3Bf1N$ovhfSh;AD%Z0G;QWP@G3+)piIn?n{L2ppZ_>AF*P+aW!Pvn5k@1h^Dx%- zbpB~(DDYf%B?%w*AgMm3-+Q@-m`Pv_NGgz;>hL+dSs4K!gTX|;zi+#bGk(GD!GH9o z5Fn*l>FS&>eGWrA%?v}duU&i$B>=%ii;Km7_bGYs=mv%ueGCW7|H5cBnu1hX#)V;J zTj@O%$uxI$_rOcVu`AZ7lqJ+o{^t-`=|t@AH8C)-xg%dMEBassK}}+2Cn$iP0B$rs zUBM2L8VoLTaSVk^Q6hI;W;dX*0^@sCoysjtlzcK1CXK7+F(07tcltd~p3(y+Rx0OM zK)i(qB|RpAW~p0pmRHnQG6umpksE&6uQ#p{utVFF{6?BGqmJ8`{6GvH*~j0E+7Mi4 znirjFZ|N3q<;^exLax92l|$f!2^}Iriq5&rImDioS%=dD91F;X8B$tFQtD#1|GMh?NH@1%+Fq+< zt0VrVMh3@I#8yE|MlmgcD^4!C@Z{2#oD6gKCWfX4 zqU)sZQ>i5IJre2Z&W^GAr;lrZre~?aambV-7vI%vw|fyPO=%(B?!`moyp%JYbhKG% zY>tGa%+(R12bEfq8X^BXMs6j=%<1!g@TVNWHS+Ej-xU?zT?1bkLz6n@O5SC_!KuEu z96Wf|kRb=Yh4Q(EL9x?2uQwAd|YPkH4aPBB3kfQP+jMGAJ={Eb1qmuBaHuZ#20s!VyEv~wN164fc7=| zXus2melAZ(8`~l~kT&KDdd3K|NBwOVE7Y|7rsH9@bi^)5_3_wp-2)E`mmpOPI6ZMp zDHH$}cj#bA;n9=H9xyTCpsw1la_XJ$x1F;qu1bc$Hv?d6FplU?Gnn z5O*?eNX|LA{&XF(l_;iwZx?kJ4JXMg*B>M&CNDufL<=UqTNt*k#!Haz{7WX2RCa&0 zx->kJn8#LI=K3A6Jg?e#C-;qIPq`+i-Q(uoy{E(B0zk5D9+#WHa3cYD^^h)*wiA`S z0RxT_c61d%zQ`kS)VIwK8J_z+~rRWhkWdfFa7)vCWG5i@wYuZlNaHo#I zU+Xn(#RZ>Hx$sByJHN@By2(gP0!*d?+YA4+;@(a{ZW%g?{K3IN@G74KTH_GiAXL34 zOJ3XeiZt0e$%P-zqmZya($OSUWsQpdbJ?X~8&Mymy@n3@N%jf7a%FY>>%H@sRX&{6 zHs0k1O)dY?rk;Y1>f+?!!eWVg0JL~UeZMP6z1(!W2hsr50*>DJ^q9Zn*dNZ83**Ke z&lzx>W5wv80+{c`=zk=!V_qGfjOw-cyTW{oC#0mtOy&=2xk0KfPv{Z(_~3^GOxrGJ zwz0mw($r*C8H%Js2tPy|IJESaTVf!XO`+Tc3kdv#g_wcl;T6w3SJ&ryYj1XU7D5nt zkcsjD>l8$+xjZ>Mm|vO}f@SBuN>V!le^X6Tqs;26S&yJX){xao`D8mex)bqXSa*NV zdjJ;cn{(2n-0k#_<0fs-@DF1l@m3vgyi5s75)OG(7b?h;Qha7R0HKoTq!S+_s3B7T zYHA0ZezHs!ls?#ZJRCG_PB>YuZ+V^f0^cq6hJR)XogQMD8kA(u;FpZ;G2DnWN(2zr z04j@j6e?F@q2rCm5ps}v!wESVR47h|QvCnQ2^bZ86NbnCPRH%_r#h2+ghoPcVvp5* zfa&LgvA)&Y{9q8kF38%9QU()-tYZIkn;VGau8fIbXBM&{EUK@cTb{$L_e@Z@CL&3`%6A`aLodAcMYidWuNUlf}~r+^wh){XXsb*UnGfmHOt@6g1+*FjI~)hJ)`p zRnV}u;{pyd_hrgoCojqo0iSF7acYCMa2c5q!iHz1O^3B+a4`ZN6JZ$kfRQlAHl^(JWZ2N5_KADeyA4 z`H4!to{N*++M@YBzC8rj=(hB=u+N86a2gCClv;e7I1fE>bHz_@=43&i}Jix4K^*V78PdlbY$*P6clx-U3ugzWJq~!W^ zI+lf+`?bwnrjH*h%oRSnJXQWgKt(cfU7=-*re08>wv4UH*`7>sS%%eAZIGMW%kk^U z?EdtZN3lJsc*Pb8{Hj6wGw7aNQ~&SHVJNffZ-sYqMov`#F#0MD^AbLVCJolprn;d> zXW}{zv2?C7Et25`frcYu{Ei)*aTKc$jAAX(PoZwo0_eIrwQIZCm~AF)Z*92Umg4d6 zMxBV@gD$Nq={VKZ*;9@&hV~Gpo!IE*sFe%~k#muqV}*_Mm~9_uvQTS%zd8uw689SQ z`1nVow)i-0H+WR~eZEk#**pspy#a1BGrZ7*a3DHs#to|i&qY@co!K&_#Ixy3}IW`$DR4|Yo zFVT;#wiphJ%l$x6&EE%kzwvt~s1>P!$W#TxUf@PpNc`0Cs0&PvuEo3d65Sbi$%qu? zBogeBz;EIN2jOn$dd(SOj0jEA!#vRu2x)}k*7i7C-AR1VDnr}3QUz#o0*GvyswmcXhr zJyFFvJ?jvDj|8F{5YCp=RDOLByOV$09TRIT{&g~nJ@{<|=|6D!b?o{Rv#9_RCE8Gc zFd7sYy2ykDu^wl5d|igk@ME#A4o?GdnJvx@xpOA(Ofl$$ZS(n8gWa>JYw6BnG_^9d z3Rn+!Z6&F+LhYHeZrx%?O1B^8Rs0`^XHb1gbQ2BU-PMx z0^eDiPWBuxFQEFR0(i>L?e-)*MU-{Zx%oP6z=i8YsFw@D>eVh!f{R0yb&luWKdO%6 zWF?%6gP735(Gv#35Ph3`-3tqje(&T~3@<5M-5&^kW1>N;ifC7e?o2_1F+URU!*z!p zD_D|dQ6|FYcJKi5qd>)ci1fDfa-`0WoQeYfFF7sCE#=RVEJWRx-y{EJsZGBw&w_OF z3fyj4h=6Nuc8yD13yiU}eW?AM7Pw$yFQn zNcGV1mBgvS(KC2l6GCWDsJqruCe+|por0h_Ca`x=IQrmGb!${yB-<;w5PV*GxAyu; zWqP`VDisW$Lm09NOx(H9Eb^A{owINhs6HI=isqe;6omWA6>J#r#?Lwjd{Ml`5N2a& zHj^uuAklE7ZTnS(Z%u>L49%kp6xUYZoMI${9agrB%9fw2Q8oXN4ObWBPxr6m(=1N< zzAs)UsaSpr_dq$xh$yBeN;IN^a$H&04!5J14Hr^6!aX6r3jYLBdl#`!Nm zjr^GVnH<^5Rj}&PX`g{JRne{{jX{h-Sktr@nUM#PAI^^kr&C*3{?dCUiww?`1RD{i2PGFXw`Pt3sAa@-%l*^hpMi2 za9{B}vncRQUrjStx+K>vVp-@hC6SQ0_xfE8$@FoZbMts`ak9A+b09T%SpG2fjkI~(2@}^qN$Qd^dE(C(X1~c4q~rE2dB~Tbaqm|W zyx;Qko7=`(7kB;V-huFrdGJy;%aD|wKUBC!ir4;#pEuoY$CqE!Y&r@}4iF(f%WB^p zVT@uK+f6&^9wdoUJ`!eC>6ONRL38AK+V?d6%S`ocL1R9cpFX>*$v}h=5929kDrY|X zRR9|F!{!Bdk1=i?&OSi@=f+{UW2Kc<9PNSDdBD`{e`|otC9DXMEhOmmTnQ(bvlRbQ z|EJ(}kaI*|x9bgH)XywRu>Rxf;&$43NW4?~IV9s!Q?OhQzUy4b$jDUCYVmhA)j}tZ zwf1r&QpDaBtjLba_)y=mIQ7+Gfvn7t+3h^I1@bAj1j8DLD4N!(n+F9aJdQH5lYe7n zAA)`|kA0BN#vD(EO;$C?67C!OYh8KK6*@U|eqxiEtlI2n3~n?7G8doIrs+wh^9=kF zHIr3kIKhH-1#3eMQsXTWJt1Bi+&w#1T6mLRmFS}m1(313g zIn@JgMN^62FAnlr(}`E`E}?lOBh_SmeVZg?g*IjCxIuZcc*lN^Pjub)K~%Qf9pCw} z;JpFD>rB|+|12<`D=mPtvFXnxn9Io{4?l;5|7XP#jgQpA|5 zO>BZarlSzZ-b^hc+z>o$<9o&5BrPcb_6T5p<1mSn8FwdwF?5@SgG+xQ0_5!QYsref zZ{p^_WYQL-aL5j3*&@&ejHMg@Fdhiw8J6*R5A9M$1|PcAfD2O0u*N;7v-;77{!QN* z1U%!mt@EvAzF~ogW08GWzcb$F-fpqr#XwUAID!G_3hxOT)DQ-SgSTKaT&~#J54tC> zD`rDDIGloeah&AHV0qbX8=n0tPKthPeqfi;b7QH#IR0mAn4su`>nEx9hWcg?B-)-# z#mT&$xO|T=1xGQJ3kH~AP0NSAOJRExEU#57SdJW-p+>&JUm3^v5N=iRo>Ppy`yDke zYq*u+l*m<>K$MU5WRi%LL>G%BC%GvKHOjiKk+gQcYeG&AUC`0ac#iFnS}ZF530_(p z>K0Ya@=>sy*&Fzh@<1xgvowyW))9Mhci1?GN1kxr`XbHh?JmzUOL2gJE?k`4n6yzH z$1GRLNJyhck^aF|)cpgP5pU0P>CF*b!iQM4&>?|_$Kr)wKA5fs9n2B>V;5^>ZAmvd zDs(X?c#3tssx(;$8subZc?M;FX{bhLKqf?kbv05*Z&)67226z{HHkmgHaP#tzG#mA zH0-0|AkPFgBqoXX!I=rUa9`g+n|65(vTF-Q8g?-|n9C4!?N!-I?jB?y0WsK^5rEMMra0XVq#Y`@5QwaGjkd zvbV;z9yvz8!MSch4*`In@<-1{g!jVIL`6|mYm~0gZ0fA={TVb`ujAY+r1-xPw3g#o zAUm7rTF^YZmSd}#Pdc{(tiFVESs))T5U>HMz+_3@1I0X_m!UU+OpMU@JB{4?dU@xu z!@O?Pw0wxLJpX0olS_E3L)vj{54Xzv!xsb-DdQ;{xsc}b$k})A#La1P4qjF407!@M~r-W;9c#A)zXVb9rV5p;^SNB z5>N&Kux$g;VS1(D6ZInwW*(K7tksWg=S%MZ3mEY7F3T6<4)|#)#DTNzO~>|v`htf( zzSp@Uhi&(2&XO!I=%?zn-u2O;h8pqozQ=C>M-{~+_gt*v%r^uPbH8-^8#V$qSqd`~ zw{!itKLU~Fsl5R|HU3H~BQS8{wP!yHqul<$H@LZOBDdijufi!) zswuiJZdq7_6Gj=>cinwK`m#&V=q~WBmF{^~$Wy@StFP|ie2)_HGMAOB4i8ZcSkwEnsy8p;sGm%a z`ye2o7p_m3r5(Qkb20m@ubZn!5JWq)jyMS;ZTS~%a^vr}R*R9ax`6ln&4UYT9^8>L zt(T()W>IW};uuLtAZBwl{vFZ<9#@o3{ZDi|wjks0_yRFGm*_ttX`u88__U>T*@_pm z@tX#(A3rDI-6_Di*OOKk;~{BiAag_(;jau?3fZ#-`OqNq8PE_@iH~H2f*nJ6&b*th zuUKd`{i{7@z3n5%IJUnhkCVb_^8cN{?IwaPF6gUQ;+6&W-2`4o?d{^MXqH?ZTWzMg zj(mgESgJ&S&Nh)LUw^IsID=c!0M`9Z3y&3<1K}rgvoib83eHOC7PbZ_C&sLL_=xz4 zz#<6y-WC2+E?Huvk#h7D;pJKe`eArAoE!&bz}xyk!G8C#p}jZPXSGtxL@@%m6t4Cx z#l3Ssows=>{s|QcRW(P~;RN$Tet>a3yb-+4q*`v$dtSM9>`srv zF-u!q+TiW#>25fnY+#7ZSST+C9Tfm#4IlZ9I*k-pdR``Z6Su3v=r(&oyywsAmrG`!^JUARoJ9R1%#G{+#}TY8vy|i zxgPW7cv3zTmSZ0yX$XgrFjbdN(byaPvukQ;K^3DTg$^h&SI19A!xDbd^8cQGl?)gI zVxk70jJfM=e?#k=o>F49vFK$Vo$6RSVX~o{ha@m^Fv-ILPF145#EpvCY-xac06q?V z?fH`hLBA47Zw5KC^uPG^79ttI6|;ZiS^etIUUc+5Wk(DkZ&^_I`AOh)oT_;KrdB7! z$`*e`;cyrV{s9l$5bdj8D>nM4?T2-T#RZ##kJckl%V}(9et$9qbju$0a+-=|=Pdjb z`|MeGKzn?I)c~B6;+|rP2vCytS|5V`VY5S97#C z^sIDQ#!UZ0%;-Xw5(fNn`SVCd?0CS_v8RQExLOSMqH`awdWnKjm9*}bP zgeZZ9l*O+d?rZ**lg)9L;J0O+#auhW7R))|uoDQaDPz*;eaFZZEnk>L$a_DhlxO4( z0WbhR3o3hCkVP?nH>We=@d6=SEv5a&`@ef&kffrUvdJH~Jon)A(bFdT@ z#3u#ab&#F4OVebfD|Bpa_c&pr=;_I>2^lF>7^a%t=jMcOI)PFo6Jv;by)!8dNI;ib zU7@m4_bXO6)*xXIFUT`0`jh`=;9A1-gL>ofZV>UpDF5$}vgt`M{EW*DyYrvOAIKi( zpp>F)C0ECYfQXCq3%D^2Ko4FmA!~l=b64x*Bq!=qUZX{%mvWIe)rIfksB15AQew&n z*#Mk~x;W-DXXZD^|C^Axs@W+HUgtR%paZkV_DD*)VQ6t1Q0jObBBm9Nizqi?XIpX6 z-9#nS_AX&!;4e{IRk!ln^l!VJzE{Oki#exj<)`U@Yv&6j1J-aCrVM2Risc1ZmA*;EK=D4WxyhTV=|@7BkEX&TC$w=*E!^`?{n!3 zL|?KTA1_ts=*G=85aHU7hp}`Ht9nM7O7gel0O|MjUQGF;x?AS--s^|qX}PYO@D1Q?S6QfDpc>>?gC;ScQ$|!kbrWB^2A`@%wt3+Q4&@k}^M? z#v1(YAI`IoXewG-QmW2_o3CQ7NQ^3};gq+f0>njkjV&7(cPUJui#RJ*G?-DS-8y%F zLS1;^SiO5{J+BKh_Tx9o&oLqdak(JPge_{-`1mYuSwnzC=oYC*i_1j0I3t;+u4?wB4~ z7DgAsWE$I2A#=K-VMVj__Fx^ck;=NJu_VMe^tq#>yd_+Oi_MGKs7`90E`9z5dg%#z zNj_LfH2;pJ{GpF1(Y?f(+aBn*1oPsySp_=Zn;V>S0Vk-oR)HVOJyDM#sjJEIT37jv zk$X+%p2@ed%>19XTgZN(5- zVwt!)z8+8AUukte2EErTYeSA+9})fLmpg86LXA1cO7fZeBf2tp!iA;-67eRxZKBa(qGI7 z2{iB8oRfA+Y6e)ji_+^CflhUa*wQZ)y^Am|p?`qsp^bS?y9na1(1`DegtCdJB^xqGI4(A#oU9#sj$88BWH9DE-B@a#{ zy`dV%AML??U%G8MRIL0w4}CMDrw7UDRBs;QTjckeJqx#VXKai+ z^|u3RF+lRt+tKCnhQBgw#kk;9R(gMhk2z^z?+Wz>q*41W_YDZeca9LexzpSH7c^$s z;@KFL)HjaL3Qw+l16yt$+W1f!43me?mmkBb^g2K+&Cq}yxh&jdnsguK`~$auz<}nS zR}nqHz#)CO5f+D$&t$d#861ZQZ<7_@kcb6y7H+d~Jt)qs*O#H;mrf`etr@MaXo4B# zKdx=PE92H51H{)E9EHQu{F$14IONBw5U94jS@3lWw0o3(exhLmO^}R$6Ahf^AEfh* z1k(SodeGP~d&UGPVd1Km8gzLwZ)8Ww&9u5e8l@kD872C*L;*zSA_b{*D_5o`Q%xC; z`10q%MhQDmc8H)${o)l}#L*m`9d9XawKx6Ka2hwH<4QdbxLf@bqfHAAGeytoF>yHD z@iH=x2U3d2NT?iNo?F>2U}+3QYKQmaIm%^nsFBs?jQ1mSr3N0g6SB z{{ZUa@-Zw<8oC7(4_=bAnz;&VYaaKT%9bzkoC3CcI56HME-}V^sOGy`!lORyXR*RLN+4P z0&wL5QBu+xC^V)uO)ADTrn>eWlsIKyI=bv?!48M;R24_?=S2MG=WL1J__pMBxpx_w zNY)F&;N+RWo4XV6#I;zeXex^%5~> zd9>GMQtnN5WLImPpVTo^COb_dMK31J%NSrf4ryDr<@|54_~R~y+g?@Qzf+=8Z%hGC z42F&;sQZX8w*^>sC5s)PzFfs1PP0DV+tFEHmly)~yY`@ZtAx4OH0i9%%G>(_9QDUz z$b&{u^Pb?%DFr+yk=n5tJmc-uK%FZb@5l3bmqDoQ6g)gY;R-Mwh`|g7O@hpzDvtBU zuC=U|krTl4LgL|xmnf(an?~Xbunquu<~a#Kz>BbZQ$_cl?zy%;x1$qYjvs3`}Tw{!%VFzG&^jM_(@E{qi z9aj2IChNG@-!>O=vx|#Ny19JLPt%;eRFGnS_2d4WWNFMZ4yF$>tl(RHmka)^Nzah@ zznb*6rgU5ViYnoT4tpXb=R?IvPSJy_LR<8gjJA(v&4ys*FV!3i8;0IJ}-{ z#%sNHsk}pd26FP!^nQCK;=qXu&c0qOoPSPrZ5*A*Ou2hb2&_-Vty?bGxamj3n!>fe zRh<-+G|**Ya!uY>N#k_WeGGVN|hi47? z<#7a0#ADZ%_rLFW_&T$r7l|3uCuxfvyk+`|-Z`3m=6+&IF5r(j=iDW;r?ao`I16Y zNn1<(g`TVcK;i*1C-v}D|Dw-GBZ7sRp3qS#8Kcq&FOiCZ6eY$oBR{0=dTWe-sDFX29& zyUJjiGpb}NnuB= zI^E%x-JLSkqsWvw`Ve&@B_7k)8=@}t(Z(F9d)XY0T$7!MuGzKV&%Y087~CaTdRr0S z0VO51y>+meHE|!S()AA(PkWf(Ul44bG2xNVe5kix5#O+;@qktg!nm~S`(NZ4jAU5n zUIx?Q1R_zo7?~bBI^yjufvR$PS9%$-40^|*tFll}t;c3qZ3`ZkyQ|_TmRAv<7~Pg` z9H7a-&#)jJ&+54Q+t<~JMia8k-8K?6$v?1e-I{~#XwYo{W_ytWsn*D(`%>)lMWRLtIr;5=x+-0BTUV2D#aR$jk&tD z$h)X^5(ZFmj7c@HtBNq}=)^G~6$hwBL8)a8jp?6Iia06nC#SrmE}-Z0Ea^f%@;<)s z^DTFhWg&}jw}MZWKB;43BDxJB-kk~5hKHYQqaq+^gMmLXa*o7pM1WDz0I3BM81MBj zam?t>Ke}mAt(#-?azQRBL~c7N0ZZL2JFpO7>T+aUnVB12OXaeR3kgqWDx5%I44iQU z3iEry2JtLh#ATa`LweS`)>v7{&oLl`qcxaE<@_!uYu~E4>R@BwYUnCGuW3e>{y$3RCNl#?U$DAaU1i%N3<9D_NVbs` zq#uhm)*&}I?ywL9qMbv#dNWS_O5Jc@y7t|boZyyIOLlJ-nyev*Dh7yT(&{P`+O6;5lFmna&duu1?iUB;tIvcLg$JGw&V6$*{zIXR6FsF zo6aKYrvMBJM+3Z}DCjdoPaP=;xl9V>D(W|NkYbZ^*fAx!1SN9GWpaMy0CTW!2csQJwRF!}E#!jICKV94(I}cy! zU>qCSblO=FL$kv@j_sNfmEugz!1<3Wm=Vt*wo!UhMHHkl~bVHbBKq&RuL>x{wN*- z5vWKfZrxa#XaG~Eo*^ot%@pC}54g@b76WdqsjjMayK=p|d=LQ`WcEm_O z=%0VG@XI90Wva@1bmk$2|C)?sXc+UGeB2fl6mt~9Bf&jQ_;lgVl{7c$FbDC_phtNm zOtoRhfyUSU>o!r4)U<)8e+K|J8%VX;m__BteQHzrPDjUp$16wEjG5ds_#RD1ByFf8 zbvukw{lKfWnC!I*9nbn`A-@}Msz?9 z_P=*Mza>)g8y_6>7h%>1Bs~Cy9j)KtIThr0$x%cw$v9wb0u>6$xY7OWwEXkrpjM(z zE8=lo74ZJW;eF1|ZnucAJOS4PODW%dtM0yu0SX+D>{lg)pWdi&!39&uzN<uXQZwVIS>9ITnO0SV3`~(xy1(Gx82+< z%Y7q-$wuIi}we;=UKOfaeY*fk|1gxBBLvkP|dZw>Do=D4CIul_A^WW0jTjEL}Ht^#d*v2 zRRSb-`#h^XxLm6DxxVS=;*)w~!1W(ock&7dIML<8-qEPpd*2^G3o1y<8Fcx*{a-VK zh5{K}-f2xmo4(A<=Yr;fj6c?&ORFU*tudpT=)I=LSPG^tk5TKY$EmC)YtU~6*ANhR z1w_U`;xlL7wBLDp=!};Z$!AO`#0&=J|R=^b$F>4h|TO-J4w*yNLORg$J2;`fN z?#4m1u#nu!2FgE`g|(;zKU#~Hhtmq3n*GV)exzs7bf$OT(#&RbEF?ji>>!7CQ>jP| z=Xc2ViGZ3u0;!u81tco;o()>nN?fG))QD0a!Mv-GNoA$s;4WH%1FgR_MoQFlPNx9W zeZ4k#U*64tOj0rjZV zljnsPgC`_YqXv$@P}CyZ^(@57b9y*xn$4>R7TIpJXR$JT|V!949mcWi8r;UR{fbw@ST$Z$vfMU1GKay1LZ%y6n$5jZn5TH!~ zh57Rn;W^aIW5`3h8E>A%MLP_N%`|Pf?F4m? z+^TAOp`;(2`!1o4a}aeXLqBlN*~Ctq?Mo@T!fpBliPq9o4WD9+QSOQhZXvm4Ec15Y z-_9_bwmu~JmRc*95tON&OTcEY@wRaWlaUoxaK4y169wrcki3XZp}|28eFdD|KWxVg z_bkku)Fjo4Gyi%PALDoBR1XZp$g4&hWt>r-$W&mVmnPva zyM9v@y=I+3OVl(U#4Nj55}a@{#8*RfuKT=v%Sr|jb!zi)sczqXN-^_;V`Is&b}vSf zJV`B^mELy?YNmokc`(A|sZwtjw2&x!|4PvP>v4=ZVh{G z@FSkY=+qGliirV^vR)$6J(5M{Lz29xqP0=bS36o{B9S9=cCRplgh#eIJJ%+^4*tI< zp~BmwI0waftfN2+Ve3Mpa|Z;$-50N30gr)zBP~NTD4&)#5DA6lRX(PSCDHTDec-Uf zAF0G@o@R~`WSE%HwaRjCm7`6n0A580+NsHfb64IH!Du*WM-g5@k@hq2lD~6zG%C_&wF%x%W0AX1CDFCcfLimWk z_{_;MzJgBG!8iIx3gcc&h42;Tui=9oX~{|>2rHHq0#aUO*Z0Kl@{RrWFuGBT5yAfq zfs=Jf{Nkq5x#yzeuU$MwP5b`eX8ppq=;iKV`7D|s55l-64hc2=?P`~qeHw=0B;Ra) zi_onPxiTT_m3)#ee!o^L*9PEfRZ|u&x2;lqTI%8bBC1ejN`;Oc$9+)cX$ZX+l1=;9 zIit9K6TT@KAX(ekR9E}#kpbsg8R7<))@BtB_u19CtsHLi#aE4lY+U@WY?o{|c<@H~ z0%5j%vY@l;p(c7MW382RP}AC75YY;s<|WC%x-aZM@2FYz&LFZ%ysHt-;q()VD37)} zNOo?!MHUYk%a--v+ZrKE@Vuv@=$SrE*iWnSsflhIbDOy0+hYr1(;lT~q&O4SlyYy1 z=JHJ`?THcV)a%ekwmQv4k%T=A;vz9RTAJVDwgE{0#4pbUJ$2aQb(NL*{w9$;>UxS6 zB*jzywS1Ac)X?DI#GU0L-uvJsOI#dVPCAS^D&hOgI~RH;&BlMnlB>0?CN`j8FNfX^ zbh=2S{I>i%xv?P*N?oP~!BN9O%Wy_2U`-{pvIs?ne&-6$$Fw|cId`Rb* zh24vrR-UpGH%kq`z)es%lJF|Sa&N9guk6yOG$~M}{aY|kpZc|-l<~5Dfu2 zU`+3)dQOZYtfj(H z-X7#9_XxGMUjUYQ6Qxmwy`9~?0Mpl@2ul^M;}sD*1ugmu)c%PpRd22q@0)aIKT7?K z&L*FEHXxf#LCcGY%?J)=LjkOCNGVKpvq&p7)*7B&mAh$IQ#Ufjf<(Pn-2U5=Sgi=y z>b3Kp5t9-S+8e6lI_7ieR5NE9Fjsz+6BfoL`J5PS{Ov3#xZ4xdAa99A^ZZk} zR@7dvQh_J;fEV7#3RKRT`xd> zVPK>P7OAyza&d5^a4VPdaQs9q2~e&gF=)w=YbHMCHna3{vX2If9x!1oU9ma2HBBq! z`;kjH@OAD%3Sz+!H@Hj~MT`^x?y=~-$Oj5_3i#8Nfty$|47eyPrpelt7S0m$p-HXo z7WpZ9%-MKgvzZA{BH7?$VHt-v6=-FKpk0-|ny;Hj29ClvlrVEh8^7djY|a^?wnRN> zP!&UJDm~+ScpxJqD=LfD(V6@QF~4=xh=_6_JwhTb|NRjD);ZU6jsc&+M#liYx77#E%8zdt*n+AtxU085S?CL;lC0hqKSo8@~G-h^O?UUA*f)p{4+%lu5 z-{37$!e~I!2#{`z(7&MQLIrmZ2eTtOj%;uSxj^lKDZLvSTP>~FvI7VCThtaAc@mU? z-bwdMAs(nH*PCXCCgWH(-h`ONf07w+g5`Z|f0JA<^#`010@2PfKGBiw+oxT^{LS4Q zifXrW+|KphRcHuYC@tM#2=~G-L+&nRjLN+u;YbrwcFn8UOlGKu2R9VA6%)q&Jnor5 zyy|a;-Qen>-%V`Lpa<$0L@@gO5Qa-9C^d#2h%7n^Y@80bFF0h!!1(gt?|d8Vk*mK; zlPZ;|4R={K#J6Z(J}3E0pR^mY`0wIX-BqF>X#~x$)H{~=u?Z0Ne1h*V=y#tvcsYe) zy>SO9Li`Fdn_t6%U|>B2cBjx*;cmpF{Bd90EbkmE#+vbd?omDxJBki|!^&v*ut- zM;=I!0XTtWDBrHK95FDtIMAKor#VwLEHx=9z#V|a0ddsRNS4hqFIiuif2CRep7_0Z z_x7;TYAY=x1rjis`(`bz%xYp%XB5r*|2}1qi12z-FB2CRm?Th`#*>$eI|7uPt71fa z6x}>yAfANT@Go;1Zst*_tAKT)*l1%oz&&)$8_`6JD(Q?V=MjG&G6Db&C!Bx)yMW4Fw7e z$ISC^?-w5=LP3gjA^8caM5)x&31=u#5)>R7sf!BBrg7XDC9dVh>Q7zX5Kkb8iIE8# zDw<2SFkVyxT^-0Rv^OOsh41wdH3ppdQPI%2Mzy1(qm+yk3<8n~Tc*EYr^ivEPj$5` z>1+2oN^3Ls4gJ_SEe4$DIX;*YH3y#E5!z$7WIUmHgO+SMgMwTqliRzh`GjNuvhR_yCoH+%U>(my)F;-^{L}~M7*9X zH~v%*!t3j|fAal??QHq{j(3B(u{1Q;kl)=%D9EZAuz-8BH(cm2F9vt61YdU1E5xps z0)(LBuYuc0^8?-^S7r}44{z_{2$7JGQd8wTvau>`gCayf3h)d78h9a}1lHkP4 zsrFFZH+2Ym%jb7Z5kK;BzH-q#+@Z%5KQi8(k1I$~oi;>g$>RHPs@>ymXCW~hej?P| z(1450-&(LadY8@Ze!l)jLVvQoCo4xav$TZU`qZ8oiJ{<%;8l9jyy5>u$#~bQ#$?%` zCG_z+v;OunfC~2dYG-T9eqs6kKF++->cDKtVlm}?+ymWO?9lgu63XmI@e!ELU^i)L*3)a)%bSI2Hv$3zGIBEDd1)Bfni_0D zp;1F7OGXVS9Iym>rZ3NqZ{gZY$Rsd2oo1}jL)SM~R{J*}t2brsCFVQ(fA$b0*z<{n zz9=xI1G|zc{nNIUsHNiac#ww2a1k`=+<>J3R_r=&_vPs^kQqI=z;30@0~1~DobP?K zEdN_ zxzA{enjhkI5!i`33n=J>O@IXzfWP|ss@Sg~5u-r~D*;F{p2irmV9*gy3L_&gA4>A= z-y^IMGv8Y#i#fKX<>l7ukZga%!&=)$ZkMMtyD@+es?>@>T^r+j(y*{E_ov1UTCCHo z2TTThKIZ}u!n74_19F>|%Uzbt?P@;GZHY)*qJzCJ_xvRK!)skA5H+4Y<_7P{vDt!A z+4pb|!jO=PMxh5V0m=Z9T;%l_vEe-2m!1#^c_X;XpFO!;bVR3@D&&!+k5A=)iRR%Q zyZP)nR18XoB2mkY_7R;Uhae z59dBcs7k83J6lMaY!+;pS=jDj@lrbp8}Dub1MM%`+uSUe#$qj&ocYGlq38d+JNmCt1tvJHMhle7 z2@kK6NbE$B5tw5x`}J-BpbGFfqtFd1LoWTBCX644c`l*?IOB(B9OnV<53F~FR-O|ilQ5OZucfsJjK5O>yoeO?_VV&C@A{ko4kjTYRs@Y7lsqTC=Znjx_!>EurIrY zi0Ahm8JhpSCkS_oW?PRA{=k*P&Dy3Zg)tt2Zh%x?3 zt$Tbc1e$Y8w?C}ZYp|1t-(j^|`-Xvu#&i3R*bY184aD9uJ&B5)$YFc^wQKQqvWbST~ERH70T2eg(P1mHnZT(a+F09wZd zEF`3V%xWcl1@MB&DG3Qc2m!fcBfc}b<(=L&I;ogt4g^pFiG(A4vN-5XB_08ar&XfjXEe*eaaN6+LR zCss74^CJw4B)SAbUaQdC>rC(4%c_-qKMXkAOR%V@VwxUW`R=;LFW~gVry_UFkq2cY z3Lf7_?Eda}bzO2Aj%>!3$^YlB= zai71`WN?R%*?cDWn)Gh9sFEoc_H)am$dn^GY4h*jl4z`uDa)zckDi|xSU4CQUdL*W z4LoP5R&@f!%B6BZ35i8WNQk=H!W15HuNoO>myLT2?iW5%)}z;@rv8CVnUcv&Zbj3- zx;^fUiBb%-OztHrJv~Rjkl|c^%;N$hX>gb#a{S(3P!JIz#i)z^*Ajq7Fxq4z2!hHJ zCyp{8zT&xln4T$9Sl+q<;w_MEo5=Y)?@s)9+%M0+Hzd((4NxP8+&u*zy<2+GQx1lz zdwK}p{wXzU5q-qY|K2A@Z;`OR(V{& zyYbh6A46i4HDNy+w(m(>agtj+dVML3M^?gpS+Czffd(&8Q69cGZtKau3|QF-8D^f= z6l3Efe^SgI9D~!eB-{38HQ~DAKF{dIpn03!!e_gl0%fST$rs3O|Hh*Xpqv{7uKuHP zYU8!m>!|-FWWVrSNDGFFJUx}=E4u}oz?9Fy@9mM6sUS4srHk=Dgew7u2^d9jTUNXx zjjQ!Bvv#nkhh|Wl>2_d`6)G+22b03dTnH}!rwTJie%@e6nE*3RFgo4i&1U>p7fF@7 zynJV5ShefI*4ZWhnU@O&DWEZ^3C8C!K@O@R*))JzX|oxP_0-^=suLJ6w0!h%tZ3Tp z46TyV^JfusH^uD(7$g%kNf@|qu5HYGT`zr+2J3PW>Yn)LQHB{Dy#A|kG%pyY9_^2O zq6fgcWWos&ic08m6m_=);q#uk5eOEI`k=Lv34Fs448TVfi0}A-HbGC2#s{0Y@|pHf zy#9Mm+UZ`_t>j{TrtC}6(%PauN7o0(UP(fo)v=@IGS{gcern z_LFkZ;V3G|V5pa{GBK$A{W>^Dz8XH(!f{Y2G%qWyo81x^Kr3_=Z8|nR9+t=w?L#IL9K8?kp>tC*Lfme z<|Aj?CVsC>PRF6I(vU2$L!}wE_|NcLrRN{q^VvFTFnce) zY4C<2l0}m^D$vj<58V0-M931M`f6t0^J7%|60V_rb2}Md-jRIjM$FNzS4+*t+04aL z84D7sqFXEiiF2ux1|t7sp}j%b%aTa5N<$aCub6fIcH-4e<0rPw<}h71@o;L_T18VJ z)CC0vx6o<8ya}q+!uq$FblkLzkdhtEpduk73qPVLmL>LPMjX-fgql$sH@@i8-|SWT z)~YQ{sqg%QhwSF!B(!|8sHPV!C`Y43QH>D|ttSXBC~U1qrz~k5@(lkYi#^yklvU8- z+i|R%48aNsX&zY5!S3=?_bI`(Ip*ZcekE6f6<(J!{aaThI%4P?PeV5`VLkH~4UL*g z|Elg1tGK~r`WM|?7|O9SW=#1Id5>Px2XO`N}=umy&AIfqOgk$g5&h@Rf zU45<&o&h7}ph#i$q0|dVZh2iLv{g=F43;j3f|^kmsk7Dvh>mCdXsQ1g1v`-~m5ouZ zGBmx=QHVzLfMeV#K86_j&hpE^t`o0B-YN{|WrHde(*$Af167llTQ>D<3t}R>p>~e3 zrt$p--c5g)m%3vMjXxadv!_(|{&2 zINGmzSSPa4o?h)UYlmK%+WC~a8}T2_3fJZ28|E{fc$ze0?H>{2wN3@@rICL{$YPmP zTQIo1#FKo*Y9y5O@q8963!@qT*wN|c@rhufp|(|m`JOuzLLsP?e`t2+5VrkuUKQL} zdA-AXar$}O|2z0Y0@{6gCUpei%pht&(gnsJmO^^dQa< zBYg2*1sv$8nN-a??0=ylC03pE8a6hDzxeIO}6Kbw1yF6mG6Aqg=v?lKm8x zh!4mS)6)!QN8%MOpzS8-;=Z6@oZc`NXjgpH*vSN1?A~N_Xig2?Fw#?T;cNx+wI86B}rdsLWXd)gT_vSg=*2R z;Q7>#=-?U@2zg>gh%%o@)X}_W9E1nE2)rdP?%Mhc%t-}>9SQM~IKp&2vW=&9)Wt58 znfz@T@~(fsXST^mVCd*8`drEm&qGZ$KJs7*zYGLSsQtPn0#U$Fa$fuz9zMK&C%;P< zs)SUb-uHHGvtXG_6hoilB>b*Yu2f1p3u4r1gJGy?>;ezVir~f5s(ks(0QB>nJ-D zmh4-58g%9aTA`9CED?-T;pK_B0XuNTKWGFvZlf7>S6A1JA7FL8>p|YBgrZ#G3YHHA z3iN2Zlv6WC#z%Ctpi#ifJmnvdUGI=xLrG|OX}O;)WQ2#$B1S(7k?~^}TXZ=TFnWzM zY3_28&|}L;Zzg>uV1i4B@5U&WiA8YXb3Yd!7LL;>qgLX|g?8LLPK^Ytn7n%&#ia$% zjSou-`W>pxR?tEqWRmbCn~%Nq?TNqyXNA^OOK6W2 zv?`y7IkP{0B{kw=4701~dn-<&Rl@+=Khu6hA63yPK5b(U#x>@xlAG0`2x*zSBsr|sWf+-kpgDqzhgGPSVez-#UDZ-J#pkd+=53w>uJ`0}~VP^u`_o2*t- z0!tb&!W6%x>Kt8;87M&VUYdrL1MA`!)xQ3}7Qp{nYWa`t`eUK}PS_j(RTyAYdqD)@ zEm~N}HmI9Uk+FYkzU@e6$K%i6Ue(P`P`_p`b!VDJqEMVhya%_T*|r?4px6BVPIVcy zP?Yfdh1<^Lukq#PBc#Bv-tDVR%D&`u*==B0+!{Z za$?M8h&pMNIK4BlWCG=R9Ji{ba4SH(XL+xf++?gCctJKwecWCaGeLpRX_ zZ2wT4M63V)K14v8GobX>KWK~Eob26R-Z2jtPi_3YwQgvi?XX1E>tvK(o*2ucMNLVz zm?-%DbcI4Z!_bF%Hs`616-=zZZ6n%2YsyiOvWx0Ii9e%KXvRdmtFM=fFSqY zfUlmG_iD%f)N(x#`tWtQ*=wHUPQ*3cq#T|7#uG>1r^j=rFR%zPS+Zn)0eSu+1Sha?JH-9>ugf_3QP znvnW7XDLEFo@aO1}&BjA?Sc=0WAD?yi+bujzn zq{yxm;<4RD$Y9%@O#As~g9RKYyA1)P=QMvBNzGo%HjB{q3ZcH!hR@n|-T1HUB>^E1 zUlzjmGLl5$;-8Tyw{lH>US43)TAW@--1tipX80^1Ef{f@3xla>S9Z}u{IKwzlCtwc z&1kT<`6dVb9+gI2FNVX0dEp$-C_zxF%OQdp5skc8CW>+^`b&oYL=bC&t5(TRVv0Ew z4id++5Dn>lxYDBb`I!1~iE@*YaD^C$Re-~t&1AdZSO-s>!9#%=Y5US!i#PH|uDAIQ zVqHt#G+fh@cWg(>kOBqpg?3}NoiHmXV={0ak}@&&MmI`$Cl=4;LS~KtD{RWy@~YZ{ ze*~6L0-*m?l$j|fBpxyQb8DM@s+B(Z2F0i{wxn;3mp`b!5V0y}2ccFv06XJ01c+rsSY_aV zd;M;+11{b*n9|Fr4D@esIU;0+zH`WAqXkg%L*O#45|YuTBuU01Hk{ix04?@+U5sMU z_DyES|87xpGc{#k3Z1{AdI^EMfdzMQ#g$ogUx`D8T3Jcn(39%@ujGQI`U7J6$yT__}~Pn_Y_Pyn-kgc>pibcxAyq= z@xk5!w~)c>Fr1*F@5gloEj_ojKnXH`BWkfeS=NspPA@l1>zmws2)ZXF-Q(l>p@>LD zT%*G0z&yiBex*Vv37X1q59{r@H^b_wfP^!-l3~SYMIN`)^;jTp(4XS+>Qkq{v8%!N z*hwOx43z^-h}ko^de!5^%i_WobzTQgar9q$8rO-} z5_gBfJCUU3!+rsGZzCWl97<9a-vZThNN1SbZ7Y9f@jis-{ zlArea6Is)q_~|XxEkF3xJyS=avH!mJQAV@yevcUXJeg5clbp((?Na0p^sNsAxE?GB zgU)`ma(gxB6?#c|hni`ro6tWBYnRjlk%sDrvQDaBN5=UoBMtay?)Ier1*lr~Xt)BuxEM^nm1E+iZZk#WX950b@V1>;+ z>OTCA?^AzCR%yuH{&1VO2i>o>WRiv*!Kl{fcROii=hak1%)XN7s7HzGc7#!{T=7BY zUR5s#vS^|Vi++uqW~7*PJAP&51(&l&s^H8R+X-I^KGH=(kK;hm$I`@>oG)z`P>o$~ zE}hU((V^pr1h8mmdPwsjZ4#xZdERSAkjUENUyshtQH4yQOrl%)I$Yle(^uM7l)o6P zyvko(9MnF>XX1UFTS9PeoNegKDU3nt3S2G6;l@xxec!0o<}G32PuA6jlQUqQG>+|w z#-E2#AF#Aur7r%a91;09Q8c{w!|9*^CX`17`9I&_EgAryn(9fqwds&01pm*W_GSM7 z_GUv&j(|r_s#xi=)71UWRPoTKixtE4$^qz;9iur#wRxQ5Gq_*su^wP(qer1y!>3)V zO#NQl-V^Ye>3*?(yLW+*-2md0aR6d!!+k3RKhoX$s4`f*;V&Od@(qGh0(}oQ{BV=t zXHHn~)O%1Z`Y^=CBoCyV0q~OYjd|EKc!gp$+xm)eZU=%^sI9(TZzrpRMZ&1Z@Bc&7 zR|eJ9G~MFv?oM!b4;~=6Lx2Fm3GVJL!QI{6-QC^Y-5tLD+`4bo`FZv^wP$*|d%9Pz zb)X#5cbwOz2Zwpua;%8Lc$ZP&?rgd7y2y`Icf_mu5j+sKlukI3E8Gr- zD2882tZHsz_}2{3MA84Id`!)c(5)dHMbS_c$3I?XmcJ$1?-WmDiniPmT(Q7*bUWfu z5yMi~(IBCPhvCr5#O$hL40pmk78$p5%a*{f@z|{TL(HrQnJJl%i-fxP%tc+DUx7-< zW}C6_NPi8Q{9opEyp=&XFU(#^SW%v;xidq0zlTG;ng;xR79h zHdl|14CB^G9HS~V;T4Z?AkrGYA`LGtQ|LM(Y#Cvq)clPc@j@_nPy$M%wAN&;uBC~b zsIY`)AI};ZCr`4=%zJ#9Gz*4lZWBm5I!Qe?RmW;ARBI6|MuEp^Z0RW8B0>vCY*@S# zE;nEKG+O=#MW-J6PU&pG&*aj1E{tf<5Z`YD&u=3$YW^+@_N=il)V=&HkhOcA+TXBn zXxdFT8)H*0|6hn!$)5ttlS-AuMBbRR6nU*1(p?ZJ-hyLSj!C| z`R#MHKb#}FjukU=WdhP%Mpv4~lsPqvAlQ+`_gusaPQm#ad*ZkY%!Wu51K5TuT1FsP zhF;PCc^uJ$eiT((^rxPGXtjvx>(C(x4Q#3+L&}bv)PsYioxd}1$oX~rndWq%dAE{8 z{9!vEc!{hoVzBT6ar(oH_D5ICSNH?pmS!tprLfT6aWJhFBE}@eCPV`yQ5)7Es!GLw zEIx*4+MLH$M$E(<>W%j;)%I5RY5!q%S#S#Yn8&3jUjrDr03%O&jahu=Mkm9gu9vHa z_1ajsFyw#W3Jq_E=wzOMYyU9{&W~H z>KQDarZ0O0f%(vMT(?OgesBw1z&%&2yUq4-xq{B54vonNkO+B<%&Plgp{2GP*umF$ zC^TGY%vzcfk#Aq*Y<a% zI0iuk*ZLaIjpD=JI8os2yArQ(AS(nppnUi#rgqAJmg4c)O`PeQ!|3oO^!2u5QMUO& z8hOrpAqV!0XG@6PVRzhB_QBCP4jpg#e9h$ZGP=0hieohI_1U}BAXi{PIY_n}#j$@r zFPVN9XyQqXOhH~&xwjxY${u%(t*0n0jX}bdUDxnHfTBCmXtzE{Al8uwnQPad-G@xN z&ALCG-@w5wqzD>2h!nMJsV1kT$MZ2T8l;bLM;_#~MuH^bskFnV6nDCRWM*pP!8rDP z`-(x4Gkzy^BM0{F)AJ2Vhnl-)@B;Ii)Gc6Y;yyEQ_R8{mAS((05iYHM4i4(fcUx}c|8pBqG2muJ5^4fr@ZU|pVw<)lN zXL5Az*A4XHo8yJE-QA#U*Dxyhif0HGnptR%Upt$8tbF;9SWMV#u9B{EGuW&r8SjKK-(&0rzl$l z7qTzVZ!CFIGoWXuQ>RIVG~p%{&noMstvuW3JbU8_^!ap(Sg;y!5Nqn=bad1J%4EpN z6OrH{Bo8mZDpHBW#uhHw2S>uS=eqDMp5rMT+0r{mHhh)e&&QQ*5wk`S-$`5(p7OY^ z-3f*4eUH28qAv4fP(xi?ySEr7<$4{l1fk#L`S=Z)_e!@#sj&;Ivms(33Byc8A z4rM;}?(Yt7ihpS7=9eGPe5g?3M~^Oz*2sshc8G4rM-q+khvwYU)AeYi8QG2$hx`gg zhLksAGCbMXSl2s_!MBJKh;TnhUd#o;ucXPZXqxA9IjJ;$1E94ojeAcbChq`hxB295 zwj_sk3Qj4Dsu4C4wv8Sg5M`88301OVBA96=jC1Q^>Kmu0?+8MWn4=*$WEdoLH(*Vf z4X0&U6kxgsagx=+66y;(OKKf-7AJrjgJ8CMq@Uj`q2|Hjh~=~RepjB^>)O2<*Km{x zdphmz-D<@Nceub@dwt?Jyjys-3;`8RVT>AFRl`y$etLN%rzXz(!_-muRkp%RaEH7j7@>lZj&a0OBlZo2nrOls zup0<~rYY0E-0p1aj+sQl!V;yVjnJ2I<*m9zA)7=qwFeb*+KYBLTMujBU<&^&{1O+foeSyrAfx%`d0O!*_-XS@*KXvH4q=^s&Jl zy8B;C+3=7;b@cUb=4Tkv{`um^2M2*TUU0PWwkLH8ZY~~7vKHjzOzvmecd?ThadiWMY^rbIx&$b*tFF--lM zw;iz35sM17EVKasV%L%`_ANR~klg%T4CthOk!Z(ZnEe7wSV5t6*2?H*jA1R9a3fV1 zN-8eDwdTf5oFL|Bf-Wt0>Qeu^Ucn|$WLeT}c7g-HP8 zmSio5%`E2-wd3q3GF`4%yW3F}e;y+>*tV+}rZm9}6BDjR20bqk=)u^yX$iyzm zPGfw`8s8H3g@&Wj%5>;kVg|@!M)b1YvEOl1yzGIEXoz4X?7%|!Z+KE*`gB(VpXb*g z8hzgxP6nhvYCP#b=lSufS<^YAwOE(cJ$z0s|P1THZ+#Arz-ot1C zcdxIHrc1`Z(}A-dj}$K?=ykpdTK>5boP%0=B;2&|Gbd>ZI+_m)@=a6ko?JYn9H^Dx zSeynFwQ%9+k!orR-NR#0Dbd{tv+^(0{^g2Joo(f*BP6lInVnuN%Dch+r!wXo9JR5G zL~nnw+h_ZCz1nT|AX{&BXRZAIhJ~2c2czTk!7io^w!O4yfjcS>_NupjE54bI&umPXRBN_CW(nYoP^#IQxqyz|&SQ#77+_>H+Wf?44edqWtaFz;$$ zie{s;DwVF-RX{|r7#J$c4K9=-HH=?*MfrCWR0A2RL*vyYlU<<1s^aVd0Wsy|XrJxs zlkQ3(D$yU0iE+O2Xm;OE!&*W?_ke{J-jOzK_K^CvNfjdSI{Di?p6Y~V;pd>mm>RFr z2IEJ^)qQ4`9(`nN(#ndM7-NzVrA|axT4eHVZmt7~%*ML;I$z!6V&HNY?pdjVbmcx4 zro9R>zNN)MH+WILMv8p)Y6qTGRp^^^89L3Hdoy&sg20i7;Y?{fg^jf@0R|tPjFE-F zZFj}RU&GP6T2ToPfhu0#x6TyDHJu7Q zDSf@fl7qaPP34ZkvV?&cB-kh4xsJ@d9-Q9GosJV;1{^ zERa@FV6c(iFV8O(b=1NJc0>#ZuQr>thL6xk_UrS@$cJP#T3z`dgquEjVxOmMtMj~% z|B2%_zQ4Q#e^)G`)baegGFoiLroW&w^(}T7GtjlHbM<3P(qa@IzFLC-DjbldDYBFM zdJ@r^Ri($GN*dc1D@q#y-9cS3YwB4%l!)qx8w(`2Nw}rlO)PF+0qP6V)Z1@?0Z5@4 z_Y?w<=MSUnkV}&pm6g<2Za)oz;ZWhWaqi~5nXFeIio%<=088i%n#6~FL9XLSDpf4@ z|AC}^8^Rz}VM$}{wOTceZ&G3z%(&F}tI{(SA5*wHfM+FO#&QTMCVrGtW-Jr^7B*^9 zR-gf-mLP(!RZb;!6HM}z3I18WO{-YVw&B~4RgA2C3e3`e2>XacUKY(9_WH(#6YmSv zCJQ}c+WG8h=p1&HM2tYm=-GG_A|6by%MEUKOQ|7yC4aR@{ZOAI&kyP8YsC%C5d?i^ z4r%Z*r0_o90?}QeA%PP?An<Pl11ES^QY6agfeoyCe?bJ9VrW?G|m8x-_>#Tz-zXowveP6vF$IyIF zWR+lzny6BLa(tLDuIuKk{HLnZ_8%vRnbv>2A2t7C92@)jgn$6KCmJ;50O46Ag0hc| zhR05Sy4o@)0-6=`^u6v71@2jc-fF)Y7TBf(yOo4KcXsu(FXlBSh{~&P7}rb$JSZH0 zziIR!fY=piSFqQrNtn=DR&7<5p*JqVX}fORD^{KFlEB*6=J5R{=f421sDVmkX6UtA z+yls^RPw1o%kubqRHeBMm@MxY^72!?X-%!+#wS9t+%~F*2ldM~MGC6gIg747ysi|O zC=ATrQO^n%js~?Npl;`7Gs_f~!Sz|n#R}l^TLH7%ggEJGuIgmlE3wohQ!La58b(s6 z24oO!Ge_%kj6fc#qN}-g`Z#MA@5agOq+i2bJ-@BeYyG;nYm5+@(Ld}C(oWxPj0u#i z8BWZVbtWF{i_&#UQlabfMG+$ixN^9u=nmd#a(sl$7S{n&NB`pa z0jj8$fS`hIvT~jQdddd}6vnTU#}$*_v>T0ro|c#I!pTwGRq;_^I{>;YY?hxJKTq|W zyTcI{x5i)t9q=37jv^@aPG?A2*QjvL{G=V9 zVry%d@0uD4cPj*bEbd%7kucP7SFNt-k*eP&^DCycu8pG!)Wc}EhHpFAImLuP6^jJ~ z{ggwyu4h8<;5cyGZML1Fc8uf&6%X97QOOu&R7RHuZz}E0IP}5sl15h-dvK6M5CzsW zf>gxUrQ)s0>U^`=?KGWBL^6`8Imzv75%G(3>R2-S2hm1bo^4Y%vHYug7uDv+O>d;C-bEv2jPIPmu}1TSmo3t->2Kz%KbiFmu`G&Bpd}FI2!dA> zCkk83>zniNR!`--(gDA&jpn*J>WKJop0{NUI+tkqPGH5|d}h%f_+5h_z3340dVZ4I z_HfRvL-~ja(jqG247Ph1DxLCohtk9!kPpzxoHP9%x4`pbghb&~Tjt%8GW#ML64jmu z0`!&K4)F<#xH5@LhUY0R8sZOaTXui@Z!#+VN=ZvX&L>jXv=#LlPwwat!aX^p1~ost z7p(SXDJnWvcm92`{>f2oQ?;GRs|>EfumfN~c!Mul0cSrP4a`Lx1E(q*sZQwr^;I4< zX`cQex+9_GIjWBSnE_B{xjsY*6g7M9v-vAf%li)We^D{l*xT>Jq1jX|p%#dOb9+5EUPo zm>l~#CD$hKin)w)uzSJv@i2fLMezJIef4{1R_0gx2Vj&o6O&PxsxCk23HWUJaL+ql z=a_sU=>by|6~HgA0eS0Mt~TvUTpw>EfyxVy;E8C5#$BrP5hC1pJ&?_zDnhslRkB< z|LH7cm>o1yUS`#+JyKumyboKf31O$nsW&av?-x5RgVot0Az%?165>}W1}y~A?a7bF zjGweGulrpQ?UoAgv+lzRzd`-6zn9}xGs5Dt*v-d31Gk*3!N@@a+mC!15dT8O(^A?H zm@m+_LZ!QFLP7o22K%Dui`UnLrKHVPyT;TJjoVF$=5@r-bjP>Cj<|3YvREmKxuo)5 z16xV2S1S+KnxAAbQUmsC*4$mzO=(F?)f_8mKTN#eHaABg=~)SM+yOlGK=pEHH;DvA zjPUoRy$HVV@*o_C$A_TrFUZzZ?yr!(9e2dWM@;FUg3*!Qt5NkinICgS8RCw>hW()X zzQTf-PE@e4vg}LgdjQ(N->aPvj&;I-DhEKjx^-9i$rUDdU?501_~P%k~HFEMFj0j zi+5lLwF?^XNK(ki$iBS{O>T#rzm8UoUf!tw75%H@9kLnF#EK4Uhoj1or!Gdu)R!M{ z8YV(kT2Z?BTp0!S1`_jQlPqyoL?MUQ6*Um7pF#8CqO~A(e&BN0`yT_KTf3-@v!#Jh zNK8rct1S;3$z%_G-VDj^=2820bC7Nb>Eg|)td0)z`BY#1^e{qqIOcy?047F)=a1f) z|EjgwIpjXRXQMTuC11KuPdB)%{1W{~w=J?SnopsBZrfYV05gA=#lMlFafOBD~La)-z~8ZvI!P-Vf6<1S_|^8EU}$ z`^5EnWiV1fvf(dVZu5$G(0%L4+R9w|1%+jCuq&-wL%z5QW}+W8ps}izs;S128j5*J z*WsHW5L&*E}|mu}=%wFZ&c!;p1DzvuSJGzq@^_ex;i3!nr}(9R0bVj#Ve(3s#A(3F+-R zKOMNGLyK@{2MTJaRf`r9a6LVJdw!qu<=XMp8T8HUf(GlC`ZIu!1nOkbc=^#vRa03U z09aFW;0bv#$p`5UKe*CT9bUDf040CaT}kwAj&S&DoA9?$Bn>U~d1b;}Hz0XNvd4+? zU)!?Y1+Yx^g(aGN)|OwH4wnvqx9vV>;rv`EKFPpT^XQfIJCITT@&Ia1Kugf#97cl4 zD0=bXG=&c~$p_j92t(jlhi@VzG5mX>u-U6V^{zqRg?qFXxyH&;_kULMcPXZ><^I;@ z`?X!Kw>>ZVbOtndeo(F9Ftq`*|B+8dpJ!Fx4W4aV!^>W7@(`EkDOyC5u$mbB!K4a* zHl*2uSIG_9yCynbn5vLWQvuNZ>Oy2GCsZ|0JnN~6{1vDE@WhZ114Ba_z$yd0)%m5P zeX-~LvXy&j9$*UM7;qG+KEKeB>dIU5vlA5uD@)?T90Mv_ra$&hK5ytY=ZdlVG4_1S zR9VWW6k|>hkgvZ14{bOngTW?M8y?%|_MMr7aZ;qeUgqKi~FyaA-;~J1~V5 zK0jQfas+g+HKEi;<7rYBdhZrQs4Li3CxD=B9?po8JZzvlAx^J z!_6)cvz&h+yt?j=l2srIIS#jEaFETOhgXMCNR~~`PNCYh(nX|aOVMhEww!T??K|j# zN_ko+brImDif-F2V0}LF1$=pG0M9&KE@wiq?11m~FpCTw+vEm$nepU14F!9V(tEy~ zLzPJ;l=f}ypw0(Kxb-FCLYmRMOCde#X>s$KUFmPYT`f!4u2bQezV7cya14Q z(BfpKzu=0!oqyyTYTGRiJ#HsFzGhy>!H_mV6Bm;M%GCEvj=h2bgyhUFWt!lsN~$f} z_p6);5#Vul6Ti$QU6tY_De7#wN#Y<5%Fv%!*DtU|Q4`uPQG@#h!lVfam>57g4~&~m`-Mz6J>q^n zStB*o%gr9q(eG|Rk3_8bZ^AgkO<2b!BpyqE&p|)V=Evl>i9^p>s3c1 zc7=NSl?G0O5sNxAQ)fK>gU2iTi%4~SboOoJ%jQ;o|w;!rFS!tiIwugcj=gR)&CHXVJ=V6byMJutP2(% z`gP}ndophUlK49F6!7En`eW+B3~FV|rHdXFrF|n(E&Mr_%Mo0ye0J*hFa@MugAw1o zztVk8iUeQucE3hn`_2o zod)4_sc-QBWA~Ep^!}N=vZ+PRfC$ICfn7tVvNBuIFxum@w!epYUDfuh9i<)M6A_%==TvNMB)xbfHsP*?YT)FbW2ndAta1 zi|b1};$~x#3^Inko^D1Z0x(v7O8(pk*FK51>f6Y#O2mE4?`KU__>Im>>Xurno~bb4 zIkIlKJ_Ep-COUYp;nxy~H3)hgZOP8)CRXJp%*Lj0RFfcJ7Pe+%)TzHbFoa=a766@z zh+bG)#xiBZaW3$=ylQCS-wy(P=}UsQyvq9R4vx8812-5ku|Tl)KO&HlkvG@(_xBHV z&URQfY0`K00|vILu9~}{qJb%9j8^Pn@b3s+NiH#Bg+IL`;!3`VchT2^?FO`vYl$LH!9?NK=3dPY=d z`{g=p4Np}(Go_lHs4|FfQDbc178l@6v>7J+$o;-Spd3Le9Ba_A8M#-~M=q5v7AG3( z<8Q7KZ0+pGm-4(^eR)vH_#M7`JZ(>%ha1pQj)2{rO*`J)kCZ>R;GS3y=yUd88| zB+6;EHd=sR6S?Z<+}72xR_WB#vO8Z-dvTp3!i7>Zz4Ug3Qwiu?pDhh3KR7LY4?GWS?-kg;ChWQqZ2#H5&aNmp?r)!oVjc1XZ`ehkP zVZx;Mm7@sU=R6_}g3YR%`gJ_l3#}~b8fwHR^q8=K#_jBG?s#ujih>6Dod#lrJ6!$CwuU+x1ooGO8(o>x)63bl=AdP3hpaT8jusOU1)ByPy>$$)hNezuC^Nl$V)QsKf@|Nlc^)fcc-0f`VX5 zhbJjfBf8Xf#8C-woBy1j#|2odV+@;Oojl(+`|jr}zh0mq$Rc&{Udt87FA0(19~X5- zT68g-I?Qx6>k^bo+Gx3pkkeL`9iDlHg9HfYP`y8ik68sT!V5k1^x&8T(n@i>-&Qi2} z)3E2=quN(qA<)~gc1&+y9QoT<=Sbi}=nbBK*hoVxPcy1WEj_OuJW`B_1mkN$qsXg#`YW$eEbF2K6vEW-)5S!T)f$ z_dv(A=;{64k!jREW_TY6USvU$(SrZ=7rnV%pv5{^@5W#5I=ae0Q{A=u@b#)%M1p0t z^|`6=WzL;3ll1wxgWffdcWsKM@6mRaa0@(|m%=wRpdFL*>|j&{`txM#_?ok{7ZR)J zy`XIyGd1~FQ`W7#^8R_3hR9dfM`l(ZkH4S?!8e>wa3No6MOew&=b&L^q;<`bQQSuQSJwSNivF5d|`D3(1Jt&74=1foD_rfAkT zmT9f20(F5Uh)H0`D^TFNB6@X=BidcHEwxJNF2gd%tS4DrQy8d*fBxddPT8J^ab{UwcL@gEQ7_TDxj%GV{8vpn(o z{Y+tCRhOVwY*gnZ9%CZaWyMdd;{D&*6*>ToTvc}0f4P`@o7jTda^)rGa(Rc&Or_HN zQamwV%%l~{0Fy2eA7jApzfnz%#b)vTmGL@h7vw$KDQ^nfIHROiPL&iEv@2RAR@e=t zY`DD$mG?uTM7wILCM;h^sG~Ngn(u~Gvvd~CHTH?eC*&3+#R@@&V*l%9vAHT}A2g_5 zk?}!52S^$hY}VGeNA+h2=E>*H%XnOIykdqC?9+N4Fe>~+EDz-EkK!9GSzl1obN?F$ z2H+me27(uOp5)R$j}|Z1%G9cy?46fdy8&of2jvm5R3=m#K6#2wD;O@<221=^>Xx2I1R($zSlODaI*xhkb}_EEK-muM7n=-*xoQZvrtje z$#^i^BCsa7QEw3~$Mo^i2mSrTz5Dx{B9Xmhdc{ZA<0M3R3Ejt6l7Mdjg(WO3DMW9l zbuM)_87*0EL*?HMEsG4NUx!;}MRSXdi&k8nm!Wy)oZT8ie1-H88m9z)KDkzir9 z)qX60$+v$Rq~epyp!wMgMn}tYAMJ0xA?|x!t!yq?fG*Gr{s|2%Aj~Do?h5Je9V|Sp z!awI!fc531v_Iw&hex7veco)#yuW>_N9>HnP&~awhMXT}Eg)=2@5u%0*pK!`!@faMHWb`u=O*=K_~Nxbs6Qm%Ue6 z+zgh)ywp@wMb)nR?kr_hxF0tz6Tz<_;kN0Vo*uIk7P|_TEA!?SRyLo=+!NY|l zXg|Cd;+Rh(!YKO-j5fiR2A(X()xNk0Oo$;!psSD0j^}Q1p^wu?B|KDx(38E*irnn1f;qPv(z!pJob>he z*);X?@fA-&bHDkkiO&eMZ}Xtxz_+V*`-w9+a!5~nzFuhdYc~X%OVS)W>3rt^cVaE7 zsi}RizZu_8X=g4XfP}J;L|SgnoXd=-`5TMPn}+Hnn9d~3t`1sPU(niE*BZ63L1%Mg zv(z&Oh}aZBl@s#Z4lD&hi6KI!oM^6$ELF~wM0tUJeu9F=d0;Je0Iw)kBF2@AH6Wm# z?E1Es#6_>yMQOQUuiA3*ba}|bnu!*nR95U1ZyqD-F^ne0@;hqhbk~cc4%IH%FlmFn z_~+54IiVMUi6Gd~Edc{3eL*-+`Vq8`f|NI^Bz4^P%P%)n-4sn<18f<=QV~ol*`X`u&W3E*rO31AGy{w9i(aTeo z*Y(7M(e>$0hBa|4OyFO{2F^!}tm}c*Wmq9s6+SqSY?&}_E@_A-4e}4D={(mE68Kx* zp<>8=ln9zabylrztg)f^YNtQtgszLw6729O9O~1eibJ1H*9~3X`TiZ>;y}6KelJp= zbt;cDT@aiAY(co8pb#??*D{tKdl^YFEcr7xp~gK5>P@B&A`cE+ARyCRK6xMxVK&W0 zg-_g{&&OuFmcHX0iZ=hF3pmL-d5S#TbyHjc4jut+)p>%0%;9)HG6*wWHUq;Agx{{y zz<62GDxSHSRi;)LHNUG*o@vtj-H7LgfUa*RsiOW=tsF#O9=M~2v41h3Ai2Ty8eC0{ z%AFM0DA>tKgy2X26!piUJw|B$TdLM~29RxUEbK2=$;qN_y3W(fgvTeFmh#E7B=10> z=z+4`1TyhcG*8=jE#rwmbQA3~Em(;5qAut4Lx|FF^4tW$ST{kQmnAx-kvwK)IYv1I z7zgLp5Z^f%1O-#|eMeIYkTsSHvKC=yE79h!?+!-nOlQvA*`}1l#n}Wi;gkN`nJ{MK- zn%Rvwi7i|{FU(X-Mb*l!=R!qTPw&tAYPISVsT}K*7~=I?xV26NeG4Bu^^7kyrGE+;`#6d37qj)YSnImO(WCy55a3rpRA}4EwN`2T6^bjR6vY?oe(5Ue?O) zG8f=0&Fw{W>vc2}jHUW&qiL|Ne(PtN8Ztk-dr_Vlv*Kb&(ZW7@!43p+fc^7P*grgq zaTkzDG&Z#Gd*{AR#$5ltx#r_tU+qzUx;`>+a{ZJA@9MWT^-Ee__Ncn$>*Kb+M}9L_ zFaIA^vnx-6seHt*ijCnyJQD(FDZ)XeHEC`o{j2I`ca>QoPIf3~dfrc)S`v6xa8aj0 zrF7e<>-ms%ar0LSf!G-uN6AZy&v=K|{aw`??WYe+zwF0XKnpiU@3{T=K|7fzr38C& zLc0^{rc;Qy`|9hm&zS%hp(=Yie~xN`C9%%EY&Had|3rN`%DWrpsn9M!OU{H87l!R- zeLkcBfd|HK((_|#Bwv1s77vy3^on6(GT+?=(|A+x=|RYhNRZZ$TTtdWJg=Hh;}Hqt z+0nuf9zs|Jd+0AqTG9Xm02D<;Las4d^!Qq_4OIz~$eC51dfF7u_5T=xMwX&f!oVB2*sXNYUG(WY%$+U{i@oh4 zeuELD;Xe!#$=gPfe4O~%j@emRN+dW*m%C9B$#7C~0+8PC+QgskKCfs81017z?bGXE z4C?w)-GBM6r44lqEtD<(9_$_S8bKDgrnp|mj9n(u@J?7NPAe}6b|+-DTmMiPu=dq+ zMsT`wLLT-zPZhXys&}Z1ubf|r_%5soxvOJ2Q4xB`X$Oy+=0iblc2~eEuUFOoSC;$jN*Pk~ z^xMvS+InG8TXC6y&fBh%I8?_5PcPoMF^}TU{Q9 zln*{yi236v$RYp`*p132Nf-FW$Yk9|0iNT}#{2aEq3q~OAjZkn#kW|R>r-qx?OX#5 zfsH&G#cRY$S}sCG{wDDrgzGoRj}KFOc(KUK>Fnat^?SgpKRc)$V4e*0HGr`hIgkC8w7t6{LAh2PmnN0>Nk6*2w)Nhd*4x~= zp48TK(qkpj29qH}7Xa`07sbj=B24snH6)03 z3t?@!4lb-9<>Wg_ARgu={oGr`$}YId-yb*ODDY0an@HOMepx=;YC1@bjZk3p8^c7p znw|7J%Aa5-W{%9y3gH8-x8Cu!hNsbH%SXU3$m>v-U<{>A?UAM)r>2C@in3FmHlYvw zflplQ@+nS<>nh2toXio1g$tyem`rc-nE3U6AP3uF6Mq<7N3uncsn9;K#7uW^hYN(l zu(5*I*0PtKIUi=Av3^-rCC2PyH{^L)@Hj6{fAyisGOT ziJR){WSrcJMPVrfHX0@PE;e&Hl^LBtYWHW?$3?o&WeQ_hNn*!#joD90sJm&i{i>Yc z6t{$GjzM%;7*lc#SR*F|^Jj;! z7;y;{EPp;-DXOHCbi2UM#&$DB?)!d`fs6HH_c<|NhwE| z$7{3K)XZ(@{!!eGSh$!)uyB@$vit}W>4>s~2;=7i|KP*WX8NrwPAg1q)9fH+6`LjZ zTucp>iTU$RrITj*G@YrUC4IvUo!x{LU`BBaO`ngg2Y=7^6a1|-{W0P9*n=9n?hYkE zY1287spvITe9q?EkF0F`U_3hTntf6|*S&$~nl(7!O_ce)Il%!G_hoW4v6#D8&e3*E zx@}QK@qAav+Gk5ougBrZo4|e~^~b1m8)x@bQ@3`*`~nJ19d59ua_&7GVwfLQ-_q53 zMXi0d4EtwVZMSyLv}yhpzx#1u9{VE4ZuzxzpiV~g(J64K=9K56JKWg~Tvc|Xk0_N+ zTK}f;gLf!=i52{6g_A$zV>!-I+yRc=)s?IJ%j$Aeq7&`L%*q@GA4A{jWGfH{0wqRr zOFP`>C)PUJi+?7vt)uxjCl-M?>uvi8P0;=i3oxJ)#%HXRrqwiHnfQgn%>?7b)XYVm z@FSX-2TDC=xUO#9!Xw|xBOl4@BRjBtI}pyBj~Mv4*yQ-As;oSblr@#QhB)U{Vcq&G zY!)u61|0fXiLTH>Q(M;EG8N~EG}F65LI~gTxIT-cdz%VEXr|)f;p3&^h~OyaN$B2n z50f}oH`X9O5fV>_&nR%N!XLe*Ohb#gw^k7B-P66@U}abg_jknur5y+ z5b|XC{eujwaJy8S4ZITc81nXV@q|>Sjp?^^k<#U}eo2kkV){D!y6Dl=Y~bJ`^mst* z2Xz>oY(n;Y+TkNUU*A4FhbZ{A zNNrr-@$~gatouq+ErBT#AM&~H8x{g`lY5{M&k4`o-kxC3=jR=`Y@}@JDPGzsUStH~ z#}Q-{0%Fo3Hue!FPYd^j*PZ;Vu#~2kqM{XPrq3E69J2L3B#-`p*&rbyQK@?g{9ncd zAvhUJiZpB}g1_Eg#kGvu7|~CNj`rJJJ3w@=JTkBf(W?9CM$t4Le8TtgwB7dT@S%-! zM0LC3ddhl@nFZ8VLx)K4vhC}YcT(E9Pw&Z`F86{i9?tz)qjZZnmRf;lJf_W{sv@4PBFrl53F^L=ui#yaypW&|&)1_?~i{JU; z+!Q#RT&(rI$=uu;tu3e?y`k`GJdB$sXiby)y7d)RO@W>$i2&IO=iqTA>dbJz=@WIA z=IV+;HxcqT90@e4Uo+Gu>GFS)a{^IUyXQw%#-bjB!(l_UjG4b_CrUU!d3a5E4ZO%J zWAM_uQFgV#hm)7PyIz$Gy=%o#!>bQ!C+B6u!i1C4M|n?19rE*&WVg8e)WsNoUM?nO zzr-wDS6mdpLmfD(X4WVN-w6C|C{tZS$-_O{0e;v@9acx@`yB@tk8F9_%4@G`STA>T zH-b&Mwf->i8-Y|yHCdU=_?KusyuV-8NBgm5fs?n1)z-~=V+)zC$#Bz9U)-bpZmRd| z#d(qMXdE>M@*8zXW3&`+Mko>|eZr>vN0%$Aq_QR02v_{`Gaczw9(BwNOJIYpDYY%aAoK@oz3fM-D{C1GtphfzfX+&g>aMw#FK-ex2|j%mNXJ2!&s|VzAqx zB-Z(IX>l zNnDV>zHlSrVoG8H_@+tqY8C~0uZZ+V*8?;54UDfWFZaz)D!fuyK|sEH1)>_oK?3)7 zr3l%G&>**yL@Y@#-Qla!kH7>y)_z)=H#c&Yebp=mjk%$+!(Z3Mx+lqMcSbZg5xzB` zvYcWPoNm}g>x|_RA6gMEn%4=6cU~WPQ4g5AZM~tRAwY*#mD4+!v zWPK^cIkaD>nd>?J-HhpaX%9))OwqxCFoEiMfixA+9;Z2_?OIS(66}_{C<8u&T)#A} z_UgvJIFr>W*KLtS7buXXg4!kIIxq(5TD8HG1{-dSF~BboDPIjO*IfcyFqd(02hmr!VLzYaI3tp`2w@`mZeCG-`^UOXz5MsgiTXBZN4tCMk4g4UqtepWlXl@a}L zD{U?FD;K!;NbH4^g=s?e8lg-y_9G;WsYkvkg8Rh5~$8hEI;GO)2<#gGIp{VtWT z_iMLjUT#%A93RRAsE-NsNO8ULJjY+2Ac=3uF{sL7JliQofBNT#6~eVw+@aofunQ%= zvCM}waC)IYe6(>yQmRGCR2=~>;zCoxw<-%=)1%(SN|Rbe&N-61|1DS%>U5>+9E~xP-S2H=n%w z-Ev{{9jYhakJ>nn?3M>Yf&g#pv#ah>inHq8zTC$ak1%1-jo@?n4g+wvY{$E#L9Tis-e2Ej>9fG^N z`w$$0y99R$?(R--cPBUmw;;jYC1`MW-N*Oa-Lq%UnSW-Oq2KG*b*t)D-R=d_dUL6- zti!y^Nlz(@2>5u;*5y{g1~>ON-x%sj%<6k}5;5>%SS1_h5sfi+jE#3zbr*jl-w{@K z>(Xwib5YolhA`Hn%nx5uZi^}$7uJc|QHLE|&_E)sOG@1BwL+lY3WwO-)>bBl# zv%{@k2PdaIWnzO>9s3Zd_{C~JOoi^K0c*SMg@ro&RZmY(Xb!#s&M8TP1tSx~CHlkH z`YrCaw7Hp2xAn#xkjzmG4q<9QuGqc(Mz~EB7atCLJZepFKJQY;8;gt?+7OkRn%Z8P zN_pmJvvA7q`f~q!XLnYQ0oW_v773+Id&RS;pIjA3GS1MTv+WzW63Y{_6u_1 zG~72ZysCPh$jfjzt#`vlp=Hr^>8$U*P z!nct4l%@BTgHpG7Vti^TM#TPa6R;WS&?$XK!s7ItLSsXWW-SXDo6O}#5schFI1z9 zPL|6~RtUM>6utN5)ncKA-^&w|i|+_~*iL-I%08xhsBYI~5%6afMTteCC5i{GxGmv6 zuX%cN=-<@yx#A2F>8He48M~GewVO>zy!5sm0i!JSR*$82k6|vZ%?{slGfz17QVtuB zU@pFIiqPT8pj?SVL;%_JFf5MSL1SJ0eiyRWF%fXXNU{mBLS63*sjB7%qa@2{rAL&t z*(Of)#6*%)BxSGX^j-En!c5UOnz)C(47So8%Bm{bO+2Juf*{cV1GttJz1!y!Zrm98 zyU0FPg&+15gBY`m^c~2D>1!?>oSt`g;;8+?0$bNEWGgkBtCjhjVx=&zVoH)|lOyLb`qNO}s3$Q2amN&`9^|@(al`!FfN8rCcldBQ;b5f&tn`jHLqa|h_A%+)XT@-#q*!bMs0X-b4;y4y`9g}%cI@UyVLcH z@Ebw9?de!9woVAqyM@dbO!52gBayQR5U;QIzz%W+-<2;Y71ug-$0nE$yG9AHdB2s7 zmetjC;Eyxd^16|>R3)`JQRs>c#@wuBBkC04}&PZejB1XN1=7p8N>CZ zJle|ml}A5(f8jQ8JZ0Z+W;SPwpzg*xsl1?>n#lZ)=OtSx-Un^eemZN?wNls(*90uh zJlCcqk%8IgnZ3Og!?CDbl&yt-x9c+OuQ2`Fk9CU`K#M#3eW zBKN!2{S1&tkLW z&ilVOej7NMwRAjtr4(kawA+R%V5T--nn}{}^7r0lX5rs2AOFGLo#t*_WRo51HRnak z?G-Gv+XRr56+NTuc+J#pg?8a<{S;t0n##Y;_%1{FGgsP-(*;aPQOplCPG&fVz=9Ai z2{S+*B#6FjAugc+6u0%Suck#H(34o7ur|3@9^_G>&{$29Sn;Ppc<#yO+vm%nFc|Dw zYrI^nOrPj;*b&tV||7ZLr&Ohenz44~{Vkr%IZ+H2JbWF)s)Ak~S-%k4s-1 zaJj_?aZ?5}!g*WJ@usK;r!#{Ai^18|88|wiv8hQEb#9IU;mz;CA(4Gu0edyb?D#~i zu@rST#uC@O*u&7EUF5KA*Vm2LEnb|1y7L!3p-Zo-%Dn-JjIadfg20hqsu|Af#h#mT zIR`nT53#cYw){sfe6IU)ZIfFeatg7T(Ns{n3f3bt@$ies7Ia0N3_Ap`po zF;p}%ClA!soK>2s?PQ`5tSTxR8XByQjzU92KXIvJ;+vWn&AH^X5CsJ`^tm>oWUMZDO>7OMHOEGh!Jb%3k@>Uu>flp_M-6abW0YTs#w&)UzWE zy+GvGO&!J-40j9u)a)kGyO13H>2ZWbuJcWyP8~H{M>Pqd>z=OHA05)g`t2#n*^H?0 zdL6i|I_l-lY>EeU%C1i4deQ^k-SXrs+ly83o~*lAvEiH?R3Q?3&E|AWE;~}5XKtxL zz2s!NP(#JHqvP8q*YCQ3GG1n@^;o3&d%ASWv5Nr&122tc+@kynV^-@qU6bOd=NDVSd z8(tKPm(rYRS5Kba?{=@410LFLjY@qYk@v=7^I)TMRQQ2~_22!?aMP&jXLTfzq@1XF ziodZrk1}<^i;KkASg{sm{Lw-$7yViSf+E7wLb;XBdQl70$uhxfq~_*W4ahc^D$1d| zl;+4cQEzV>Ug7wr^=xcikCT2jWv-6=i>xne@^YnwKbJNl2yyZFNbsfF)q9Q!F0M=e z@KKTnadrq(#FT!^TB|nEBNP_azB+e{iHVltfZsMe`gQdx;bq;f*X~wn3F)*yMC{k) z(EDeUa%&!m0v}K5-C2qw(kq_3CN9^Rc4(<5ev2*>8(r$bcAIP9zHMinR#TFl-I#Bj z>F_)9{4$zs+Db4uYVkk78L&mx!*>P|OSmwMGe!D+%RU$I1NGC2527Y-%&g4>lc&>S zshhY&JoNGS_nsd``-!15OX*4#tRGg_k;eeyL6d8_G)9v1! z;saQ_6opI6WePJ}D2`_+I`L`3ppg=@jizRjKJbXhkgq{UvK5b=9gFv;UdoWT`63U? zLy~7|8r6O-D!VIq)oK#PW8@2izipyr73iOz9$Y>Jiv2;@mDMo4XKSp^)kA$*8SnS~ zLsnB&L=fIz1{pr%rvy|HFLu2pjaTyp?TLlIpN!i+^W(36VB0|){z$<<2yh8!4+Xx{$K!opVeS8R5h&&J@KgriAQLp-0=G+dfF8e3u974`+tFaO3|(`M%QZLF*4c>#BFITS`MhopY) zIUys?n*GUDT|eJfLd(=;o(KWQ9cDSiD0+-&jA-rhj8(x=mzBTeTA?KkQa)NT6k1o2 z9yk>n84-V*g$}G>Ke#MX%*@ubn$+Z?KXo%g0`eL=q=}LD&WgBbmE@#iwuABJ%6>YB~bTJP^Hq)He>) z_#S+{bTL7%E{_?W|9%RoZH_qT6Kx0$>B^jis5zY4TI;0FAOu6DF|m z42*(s6Xl8Vs>m5HB9-@BZ)`XD-Yqg9$rxYwyFxKf*DPteUZ({d?q+nw5fvvSylr<}Y`jX!ZVof-P=9 zTY{_aM4?McBz?rU(7_@&YjKaxj?zKhwp;@s4NxPlxSOfz=4xpgJohw`8A=ZVE@ufn z_xrKFcs9c~MnX;zH1}4kmx{cVtBg_wG;pPG{Fr<#C9xcm+wFNBjTyiy|0dqQ`MB@F z$bXs3q3cls<11jxZFP9_<|M+*7jeH!HF&{+sn9*I5uL)lPK$Bu)*Zo#D7u&{o2di9 zo&kIBP==`^q42G-sd#=`HtCv@er9>vk)Pe^F@?uAERB+%e@ut%{HE0=nN;L&`QIK? zzG>{uulh0W_rzcYsL2_ipaMHx8OGs}f3>{Axje9n!+wt~idxkSAn|o@Lg+jMitXO! zl)Hm8T+V-OiO$P})@aQ}Xa!%cr+jcZaE=s9O?ULr?)-3_?^>?<3r&~Cp4qTT`Yj5yVl`0 z)+HR@met;LZgR-?$mnv7cB3Y(6F!V)Fn#MKJdUd#NN;u+7>`D*APU7)^~LqHno`4H z3m#Z0Lqf97&Qe_kOi%QK7{X)P9-phR>cG)rWr-LqPy3p~9w98Q%(sA#{#cp{*lqr( z?*mh6`?g;IY{~E5`mfj=!2<$4eQq=vX`^6@MqLNCfYf<^sl2|O(mRJisyM9Wx$X3$ zjD}jx0S17Qv#6JCgMoirjD|)c6Mq}e(LNkns7RxkJ6~x@O23jZIbrG-9;Of#gvEOy zeA_e}(0Q3PsN)uGO+i6*&IojAJY!$#1?_drR*b$L_RYo&M)+msf(f`<@jnPq;xB7= za*y$yrSy-zo%p|Xh`~XJq3Kb;&YF9nJec^m8#ygS=$3wp21k#(ZAYH;It0aL=CRo$ zQnF#Ep#7Tp+aY8ktShMS9ZRr}WN&I==8PCMZy!`FSK?I*1F@nA_Z~iVHKP8=ub}4Z z)O2daMg6Sov|T=8Z$gf8z0Sk17thFYvOlqv|BW+2fRCT=C<8yJa9$qT8gkO(Erc@8 zPI^Y^k6&e1h(xwEk5@IT^uqo3Ci_ZzB@Z(anba{5W;7-E{YE#+EZ#)*xa}DF{=h8G z1(fbu3DDeFajphzrr_D1(a_@ey4%hSAr4urd>A8J{=YA`dKOq|5d#%?S9G)tS^iXJ zpQU{(;=}T1rvBmQc}QkTr2PPL;=oZx5}FPnJ#-x#V8Y zlP^_f&#w+_i=sNWb0STA{-iSPmrHIG!hH3&HaWGW7kKn0R0W2B!2;$Y_;9!i6zP}l zH+q2vE`c2PzzQpCiU_&2ha+|OUPp&tHkgYL#sL<^-~hlhDsV@MmzF=!r>bbHe{oT| z&tCkjs-bO5B>TBq5$%jb@=lFndzC;{fcmQS6;ZmciLW!4N>&|zYFc%Y@n6ollrI*Pwy1%1FvNbo|`(ltSu{T$2y zIrI6I+MpjH7U(Zab}?^I9>P+pLLkJw8RVLe3vgFi zj%2PE6eau0x-CG0>+t=%7^X0woZmyMO8zrhD&}0kArNot#=@>VVFdS&xS=oIiN8HQ z47|X3tWlyopQ8r%r$FPsQ=k8?Q?UTZPl7Wwl>MRuyf490Iuvf z9NLJP*=2L-Y(qbB*4e0ig0Kyxuv7!gd_g68GmMSxw&};7>&>0>!QLJDWWSkPtCx_H zs=OL-?A7$E2z)frK+ZsNM26%`|C&Do%~pT1jfq#^LpvIW|x5d3=mm=n{IH zNE`OQsQ?*qPBX*&CS$;kqFErqm5l|Mx(vHMRJuQ@mGD}b|0uwz!Ozh`Xh3Ntzzq2ZxkAU66%9?tH!3|)#)_+ui)effp z&Blo9TxEd^N&&}U+{eljObOqdsvuaPH{qo-Wf=?%S4bKpstOtQH{JD9U{;o;j{fS; zUwCirlU<22#R?ORwPg-uA#=K$NvS#G-<-N%R!g<b;2>xQwLffy;kbPB{zld(AKodO&2aaAgIkV)&v04P`3-` z|Ni%@wUdsdF+sf|yHk%gbI*w}N2OmF3@`=-626%2NK}XK?s-F7Uf3q0z8M@m?|?iI()FAc8ZlG1yY$Fd$k%* zwGEvFuWlZhU?&;8e3QxlpfHrE?2hpj`*kcK&j;Z8hmhW1$zHQx3;4XpO9&7kE|A0AOrgXg4kEVq1!&G!W{?w%pZq z7g1oC>1_os#W+2FR6khRVD5@DIVC62f*3x-I*Sc0ZaRhhIR*N&(Cz#m04jKI=cPXd z=4>|M{k%oKN_MH2O~bQ1jC@a{l>42)0Rwo`M&tmK^~FM?)mB3Ibbu~Dt8vO_~coS4YdgYHhQaksB>l7~AJw4a1%M_8D@GO4)Dav_Qlx zaty>;VhLpp;u2Q8xXi@%ki&V+zu=V$^|UMSW2mUGzX-9m8;I+rI=h2RKeI@3d&)}k z0|5@bkw#Nf+7v6 zI4QC2LjO}|?Ovt{p(v*w{M3}<`~AWEo0>*m_VkWHSE2dG2$28!rVC85#)DO_gpO zaIUismZ%@$8ju9Fd$Rr1>#W$<1r8X6B4pZGJPyYnS8-<7Aj7OY&s*zonH)Hd_)&1- z5E+qfdDLVbo-x#Mu`Nr8{ZC&34+y$VDAy@49IZZknHJ2Pdre$RVnQl8DPr0HTd)`m zOUW{~>wLew3E^%zl|=RcLL`8?>S(_|O_J5%wP6C{o<^rpV6rxNJwJtrVVUezru(PE zeB?5H%w%a=N~D;d=CkZ3a~3nK@S9$%&A8pLH)(xs-J&y)0r`ttO`D*_AB@zjKBzCj zCZ^`(k;KLk4Qrj&8jhX;BPO@_MP#K#h2=iy8+%sBe;91>!Vq)X%HYDqRISjFA}eT^ z!bmJ;Cm4q?6uqz3aVXd>fu8dOah_$cHD8-3j`Vi$<*!{)rS@J?jAMn%pC;<<1Jr?ei`(HCCI)OfKI(Dk>fW zUZR<4nLA4o2A`j=n78+cqDCVf9W~>>p5w|ncM2#`joA_EA3k{D8T17Uwwt@VazSCO zWr$iJDfD!jxMNE5@r8d~0?+fkiks@%CWwmt!JrUQWC5R#EL8Gf=J7Ek~MKJdr^TJ`jM|X97#k~s3iaAvA)Z5M>3E>VgXFo%iZ(&@OO#r?H$3jHD%u?d4iS- zfEf7WzB_(=?;hAY+@!enn)eBnlN$7`7W*PE#d|BoNSB!xJ7tOa{f;)vN&l^eqy3Yk z0FvR&Rv59>&M$vn`Kw3W;!%S}1rMykc>dj!Dx-`5#8>^Nui4Mq=|?=I~wwk9hFMUs_n!WB&IT7dTbScx|Mv`7j8M&K)jEqp7=vAR*+B` zb>^g5<=-O$+B3!u4wHq2vDa<2v-|c;7}*R$Uae zhZTvHLip3`n5h}-kN$lVeOcx|U8@^Q>aH!n`KP!IMdOVcei(SqE=^H9Lk)unbO;2% zL{YUBw0It)`5m}u2JO34Ih-ETZ*29tdmnf$!`EXQl9hz2DSLT00J9I$x@XXr!6KMsivj-&bL}qVCpLGain#0>;*j$68bJ$R`@Ma ztguVK%lkH^Np{=#ub)FQiXT!9Ujr__@@0*z%p8o$Chk=llBr|0vv z3EeK;b?4)L2Cs<#aPa%ck@}iVRyH=O>EUoHMM<*H9hoWF9*?2qaBdfWt?E}!@atV> zcwJiEj2#oO&7Le`mGMO2|5sCFccM#_DyE7Xg#iBc_e>i1Ky$B~9rUpQz+ zQTRQ3EKi~;`#Y*&g!@IyIa3>N`-#u13#b@g1|FfNM0W=c3Xxdj{PFDvqRQ~jUGgTa zO@$@Jf5bODqDQ1?-{;43``Lo+)V8oEGP+!dk4k$v&~Mz)YTIqp?C~k^uG8)7c$W7k z=|}vT|Jvi&A+la;t190aiI>$?=$Ee9FU_h0*2DDdX zqAQf?E^rA|u#a-G`YUV_!`;2T`?A+yx9)77-BuEO`UJcIGQgtKbEs`M_h*kR7quUf zzR(8nilnsfzEzh3^H_hP7IF~8idll|_(x?lzx}(Ys5}xrTiAd$VCasB|INz?rC`e> zz+Rag1BSih8bV3tAep8OHV8!J)5GO1>%}VFPynP3Z-{_l2LmEmfm_g|AK1#tcq{jpY;dO5&{QJs2_)EeZylC~DTV(#}UkhRwu0 zO#a#6>9jqH*w5SjUu?Dvx%Nts*2?!QIjZ>q$IB-y{6-AiNe>|&f|qK9@{_pbn)B6C z_R@|-RcHRn5%OWL#MR+aDAZz64$2Yssmc_s9irWK4k4Jc43ZsBTMt|Q8R4~;60T_; zX#jZ5h&cvdLb}h!WG7zkFKdianAU4OGAgU7BBUrf-ATJU>N#z+e)$!(UG%eqyN>8| z7j--?a<|y6H1cS-^J=wgb~ttKHoM*cWdfBSlGx#5Y;F>OMvNR5*>OqtK@v#vM(P+$ zBJRL|a1{relA-t)j~TT&W@?I^_nSxYqoTay^;2i&;r(<<8c?|4`O^tK3lqbtxYSVB zRrK^SV8DL9=HW8=8MfjmI-Y&^pHnOJ01}|8O5IqgzI;nT7nzfrswyK$RepR8l;>|j zrKMnsa=N~6G!BdH@;f2tY`9tZU^U|Mo>>lrqO&&H72Y0pnv#+p<|{c5=pT7q4z=b5 zdJPRt%I?~zq}Ieci3AU!X_wEt-n+WvCV^O$!@VUCX=Z6mu2S(*%D=3<07*&B6if6v zXpgp;%m}9&$PwnEGz`4%C&QchAb_FH!*vOW+H6F%zHI#=e$RA&yxJ}+3m-1CL~)1$ z&D`iixw@(1|Npea zW+~08i>~U6b!}eIb~(;O!hMxc;mQ$qAjX)uKa*o#*3WPA1Ph>_u}tGkbnQA~=4Da6 z6}CM&9{%vowdTGu7r%U}T^Na67+*VI$r6^P1H^hT0CtPyQ^B+aFcj;-0ycI%i>vY< zmZ*Mv^V^Jc{2w%+3fO+~CE3-&i&^Y>hnketl>v`5P@ILiY%_Ic;dH%TmcIU`_xtNl zoC2U9$%N5kTj*jy=xJ%KUZr#B@Kl0Ga5)>rUj*JZ>0zN_`nhY8=j{QVZ!O?#3kYH?X{|^7I zIa-B>8kupNDP>{=s3c=-qG6RZ!QSan!xx|mZmUqDEwD+fe&&T02zeb}bloG{dAra9 zdN(kw06@A6mWTI2*MRk`kps#h#)dDOOa#%Mz#n>a`})wMsQ)tMbdhxL14Rm8fUI@B zwHE!|N8t%({?Xm!R)LG83kS1yv$gCK+kzPA4v zU__);(~Le30*bE>>8my{=1po=QZ$e{Y>BwLL!7y9N1O{kwvo^izc~)9r~z^M1R?*t z>iyq~2xdbp8R0%_`kJg(nq;Z|g1)^=Iy1DG@W8NXuU5f^2abyHFQ8;IoV|^)?b}=C zD1*SD`a77 z^+Trk=`WxWR2!{&+!{R(+#jts%zirBHJK^3#)=6?zqyR6M*s{6piY2nI`OPGZ2&j6 z4G?6DC`xxZNH~HtKPRk?EUd6kjj~VClQX{R`<6dNbvx2x1(NV|a#c2wGYgu#5=oE) z#RlybpIQH}&M(8PpmBygG^LyXePP{aINw)5-8R3M{6AVn)2ZFpeT6PBx(q6P+emUk^FC2^;FE9oX6_+_}JA zMDS{%o$$-ZS3*dYxO4Pmy!@5kSY{dbC6Y(R>B7L^2`ub z+f)IsQ=(x&66BL*nP zwJQl;CX##ofi$-4r!O>ypFe;BEaSr#`f>66h3UWyk=cLLusmErazt0RVm(NK`?rqD zb@c&2gFgsv9mn-0KoJWpEh;ZY30d>m(trmr<^9WMM@p?F|1D>xBY))iw`8p#6a!jZ#Zm`)ovgA2*aga8v5jgF0NZ06buA0gOR1CWhHK6)I{ zwhY^Jk8+$*zOaz|uQ3!@jv&w4&vv(KIR?aO^)ElrV9oZyXJKtkO$-B%j?OIX>_C}? zF)>uP+^_&HLIIxY_Z+SyM`ls>M=XYkx$r536Q7u!;4@(m2`V`2~Y=VG5TK`e`zJ1f^-3GFtESN zd37BIW2tn~A2JNgy_Qu`ZeZ$r5F@{wQwWLp;sW#gV{fMWY>%obFb)Cifw;7;<2_Yz zW`@Cv*WW7}yJNx*QTIZ2PYNe7}D=D+7_*2m=yuDJ%f} z{C}S*G(zEPd3J1gy8P(9^BpC39iB2-9vDKySux)yAw3HySu~R`EK2M@2|SAUfrpo z8hYr{`)pZzoz-VT739R>ps}GrAP}6SgoqLd^l1$EVT1exoS`yNk_HY?b`lznAP@}l zzaOxfHJ?`yh!7+xBKX}c{dDcCy0Y2^=(0}+GN4-guO}oVF(h%=wpgiZflY zrj~cxN>gLwd}E_UL!D^6sFAPh>*?<8|ZrQ_g$d8Wjy+*_X1yx{3&0UG6e|hnh!zBrGc2gkTJ(RMl>? zCc!5Uy%%n9A{M^htlH0hK3|a_Fj*EN(IIoPx_DYW$66keZ1)@kXLARq%{9Tj_|UCL z0u)%A;E70)B_C`f-d{wRj4KWxDUzCeEpKn`qdN@FXvyOu5w{%!f!oN@VGw;!SCiDZ z(s;W)BH~kfoGl9e-f3#f@7dV!=PsFLG}hGE!n_)o!-;-7&hO}k0o)EGe5`H*MoJj4 zL%nIKPY@Bd*)Vj$mlvB6;jX!=ax4ujgeUV8-{9)oz~Kv0UASan)OhMgmxuR%>!MuA zAqugoM6lf#hJ_DjaKqJ!LPE99YS4V>H3*I+&ewI&!hJc0`qH)^Do5XN#k~+}SP(9h6Y^-K8 zFSp&^y@u4l2_L9-X30C5hIXVDB{r|(B#T<1wlvhj*}60s6aRXps7@R7+ilbC5%C&3 zFCDtTh0;M$LlLdTmrHhRV0N@yJu7;YTFUa0e3_+!-#22xhXEPLO1rbpsQJ~_(V1o4 zs!Syast0H|oFig%6r-K+hz@h*Um{}lDVo@n>z%q)jWc*&n?5y|9AWeGvpp-+-YS=p z)a2COYG}47&cX$@7%lAAX;~?ns0|JV3V*A^O_iupAhHR73V`_f{!~U;NgQ>KaT@7M zb2XEsn{v8s9)V%+(8BNQj_M1aafs63K-@B4c=wfh%%bD%6r(&fGAjp32#YHH*UI}~ z*SoE6XLYNRF8|iHxwn(6wya9t%p~J0IIpW{vu*a+%UBa}K%r=0fXpRdD|aMM`nEZc zMB%FPcW_Qb4}|C_dgV(6>buEW*zIpmLf7Sd9)`gZqy@9}Cg0#-QZ{960#}9;YO76p zOai9M19P@wz&OaRq!wayt{?ck>fOJ%lLIMFvoP6Pz`edApM~E`7ANoLI5!&l(j+#e ziy!GK%`4mv-)Uf^%h9r$KjxZL8LF^KL1eAdWFKlEW|#EE;Y)jnwe{}VMaWACrRaC5 z#njQMLO0)`c~*SxiYbCgs+I@=#qH2 z+$Rz`pZLJ&Qc7^Ir<`$;()nXI_jmldIHBxQq>4zGQ4q(($BhlB1c6{lLm0X@r!Ok& z_7b4%h!~yaqQi^so=Bh`7nODQCJjzkos<;T9`6reba*PPPi1MwEbK$mVtQNf=_G0nM|XFX708)j zk_chz&BaerP^4{tUA^TP*bK{7$8Z|SJP6#YwnnfPz>wX4p{%M%i-5@-pCk4bUK{ub z)vv{rlCN*xBD|7PHLwc$nL|f6V`m>C4}sCj2Q~?~quH+2i;k6w4@M6c09#yLV7OQ_ zbF$VGa8wdz^zffIwT`ora&%KG8}>)3A!wGS)?U5@LXe9i^g1XtfQhVn9PTdBw%Os~ zMJiPjG+|`*;YAGwl-))%LsO6(wKR#pg|vg0^4DprT^svp^0g;QODuLB139GBTgeT! zPd9NeF7nBDV=w|>>FKhh?=Bq;v~U8&AudNhm$1VOPC<6#gbf6!lNxK`sKgIzUr5*5XC904sn zG_P%EG^}*It&7@#@#^M48~}e@`S!abFQ#=5>$PwL#v1dtpUb6UUi9nlURxNJF2;rE zNJ>jHtVrqF=Oy4*@wm5v0|uLy+lS}P7B(4y4N&js5oyQaeH%c?(8Ft<^NJT2IzpyC zUwi`^#B0oFA5r-XaZ!6TtkO>m`q=~!n7GYSUVsNHf){<7Y-RP6Uk{KMx8*WW`WxAn z-|uS5Z);Oa2QB~bsVV%xA5_ACFEntGeWvkTdiZHUf2M&|7f&5_0UdCK%hxW{>~Sp ztvnw>5N?l@=|)CF(*b+X#C^_4NK$u&^e#j0eX&2Qabz4&{_V~Lj3Q~Qk*)XJxrvn_ zu0+8)Z80#cj>ZvJy{>JOx{OzY%hVIe1I*f+Rvvo=zaRgO>0W%9#-n_eV&yKH7$n)i z*ep>Ezr`!kA4e9{?0I(2Orz-c0h@{t$gG|Yv(;q?1N{4fgm$ZF_gCIY_7%gx`Vv zQ4a-6wwHUPJKGNu92Q=i4{r_6)yXwoU4|j$wl+5tJ+7O<4%m#tn}s1o=KWv? zhZf)lhD9U3qfr+vUE-onkJCj26P!Xl4IIg%(v%BvOUjsSOnnCcGXJX{F)_X&x`!Gi=6_>*x zKDA;FGiF|@tZ~Sd<&Y^fYB&p(<8Hw)PLI68QpN`x`JeGIy*>7!+gw0ma4=oMIpxgO z+j&D|(ez`~6_(lqJs4mqx`U{Bg=V`$)Un$u)U5!_>Jgm5oQ`cL(d4n<#z3LH6^EvznjG? zitzlk512xW#Q^(C7RD-&QX;zhQ=6w^z(D9KtYB@NBCn=MRYNs=#dX2ADIJ$Lpv@z> zCPJ+fC-ftY&Gt9Xwf-ss!HBOc2$uLC#&@3~0U!yySGxFu5PL~*05ngL;fj-t(&V%s zk4K8#PXyB0)rL#-9#+MIZ>Ru6gJqk7$9+oHhgSnXPTKxwykk+a_R@&(`(KJ;8`2Zl zOJ&+fp0KttH(2&mpm3MDQe%wWr)=6@u3}hc@_`;cDY4b;rWpl*%dA}qkD#9m3vouu-?=PiV=;O?n&oQ;hK00ixzSC)qd*HH;0mMJyw&A)qt2ZrI1~u$ z5;f9|S54T=jy%qR?`LAzAupo6^1My@UO zTWtw1Vy%qpW`rY3hzTd3gcpNkRf4t^T5z#j*#Ha!$|n)^(#{xs>6g5uE06tgTt$^w zMY;rhLo~au72n%J(T!SpM&OVchx^~?y&8j&u&Ppk&1TU6pxE5op6@44=WN%291dmi zFh~*W#cDeEs<1j9)kM-(U9Ar5aFFiBxAbjC7Z|OxBCLi`ReApLCP`dpb;+>kX$R8k zl*Lz$uM5a>0GZm~PJtfS-+))yXXSYo_Va?)hKZq>eRI#glR8YZ?H2-!Wn8fAZr}+r zYF!EDRmi~S%4MQom|o;}tQ}blXe|{=u!6(Oas*P30HZ(e*#S6FSE8%U?(MT}zS^Kk z`Fbos#}$IXAbuKneumb~OSBF>Xgjxl@!nZzA&6UR^B5)li$gPsv+-)Z zt>;A!LDB-Sc5uIdCegu7fhxrrhG8`sg>;xOS0uVtdYx9ezD+$(2n5zIRlK5^@e-tD z!qD1>v7+y4-0SKeYu6eu!uBiZOYU{G<%#7r1Q|y?tbJ#wRuSFTY(J?M>;`S@DXZJH+tg4C0q)v@HuboaZ00t{G@< zREgZ1{S*+c{iCvwBvh^H?=@Wgna=@NeUQ55hD0}Pg>oIjY8q=)sLT8ghs=J*amUo6 zkRHJK+THEP^)C$tvj2XUiB#@3P6nDEfHc~CNntN^n~aHzxyk@{@O~&01-fUA1H%K9 z-O}Z9V|hJtO>&4P=byj7=ZRxJPMK0}Gt%U?sc?5$$=3E56Fr-(24AOv^&Jjw$JViR zaGJzrA06E(B<(HlUTVT1MQ~)V-=pmEZQUGQnuegfSVEa>ol-HLO?BXY`Zn&*@ zm9WWkq8r&5MfVp3s6r{(;TsqigeX`BHg;es?0VPO_wePxDKttB2KHufqtD}~832<2 z*SK~8&~AIv0SGlZRL=K@=)`CgrXJ6uR7e_6WoQU}rKzoDFt(K+fbn2F~L7KA@VJ>jb{rd zrR%d2|J;I(aT#^mUTj;O?Yc{4`c8#)Fgg-{?Z5_Eiu*yGsEK}x&AkgZZlWX}U+%BWaNj2C)1G7_ z5b9&A)wuvu=XrkE>lS3UDvFD1Z75WwQtT#v-?3h5BnLiVl@GCn6ABSqgihhWU6fB> z_HF3MQ-1%wKC>WIUs_^`nRdJbADhw?K8*7dadfJ5Gx58*nYpGq){gbfdE$P4Qe$Ji zxmoe7vvcw@7soWuvnMS@R#i!koZ&RAtU61o$&@xBH~p3-ae*>5-6qCfJWdMMrm&+! zOVU&!?ux7Em8Z%C%KqB70gQ-Ll2}c(gF~qG)mZA+z#l8A(TiY2bL)TH9{^D3;clBV zh$PG8PWP+wlUZ6eC%5&5BtrKCo{K3~Pq=D$ioUXHS3 z8`##Ap+4tew-QL6(_E6%((Gqz)Jv+VsndSy-y1~b6Z3gKLX>mw8KO0h!VLjuOJZ@J zYOC&PzkL4?8+RO@(o9$&aDtdXU0b4dVPreioCdg-bD?((he_ z@bjfAY399>S<3he{rJgG+&}jd54v^hetSdbg3YsC3+R#Ekb#xro69{U1NY;d^&_!g zryvcK8?A1R6(l_fl-!W^9wOOj$0)D?2#--@MuoiElz=qrgVId`=r8y%w;h1?>A&&$ zQsRFSC;?mlS94(KCmSkyyMF^~9s~J-LB!R9WlPcMX|GHZDlKnCwedAMH~Qq}85Nc=>|h5(Pb9zRA# zTM|`GAaf|-=ou`zX{45C%@El%HMH)BA{PG4=i~ztF9Hxfg@Wv>cgUPJ^A^aQrSKx6 z0P3*jkt=h-owuDyZ3NttBHLjr3&aBxREO&^?bWj-wtbHG?$8NYWEe|FdSCW{>GZ%^ zJL4ce>BWU5E>6CR7D*=ief4WAny_Z`5e=Eb$`b~03&gk#)#%LFvuzu_0gTTPSS873 zBWwevxy>KV%!_xo&c6m=V&F5X*cc|2KPC#bF=0~sy4<5cW*4E9%c{S;ou zQ<#Fz87YBKEu5fDEFkiJ$0~_8c(~S=HimLT82e}xWUG=P@|hftrzQM`k$618h_yy( z|Ge%pcT2Wre3OYM4k;v7Gz%M{-i5#Vcqh&u0fXT4)? z$qqfvEnJG*$DMQUOsrIZf|-zlkQY;i90}wS^13!I>6RfDcI_coJ$2`1_{HK9S1r4D zjWv)Fjgt#m?M>!Jn|2NeWg8k|L4u4$JM?0D&UW=rKORh5umaOM{|3pc$m?C4MEMXy zV(D7r#b)vFb!5U#>H1i%jRMKyhT^5FOx#=Q<`3Q$wc{*@*HL}38?{S>jgxBk@?CrU zE~3jy0J7uexM(*cg45HzPtDfzsSSva)zgNpk@P}*2!odR{WE*lU{cH~u0Mbec(=Eo z1@21SSO>|)+?o>hUT0!Q(Iv-59@p$mD+&I3uZ|79DU3I|hm+VZWo4*VpAGT1d#yfX zyj}rk^$={zDYuaW#zzL=iN0$prDUY=`#zP!>2=5!%|hRVAqjPP`w|lIxdYP&V$pma zHxEg~>&?rA(dAXwlwa(%Mp5R=+idSL=cN7BPX8rzh067cT+gekGK`+XaX0q$`;-6a z_-m3Hy?U(!oe(7})f?c_3O7SOAqfQ?@gNLo)yXw)hq|aN3ZY>j!4}1u-8k4-Ly&|9 z(rcR*yZj#%fGF?Y@p#@6!_z00r*kvexlOx$07K8sUOdQVD zwFLrKMx)W*DizWXBV59+-f#WG-CG>urjgn+>_(BWxO`;9R)EcLa2lV9xN9$1gv>4) z`{3Y+xiZkX_{^k4{@VFY>2)rJ_rW;a^tH(=%VB{o`vEu;xWmR4VY}z;pacLUD2R5I z2}i`nz(3u)*x$P_G3#ey zW3;e9)cf7ZMMey(#;}QwRcoD_8{)~mcV3UtYo8#dQ!zaq9f;V9opyM%7slR0BTc4+ zJ36j~dbD>Dgt289lYodOs;%wrmlW&Fyenv5T%*54t7U50KDk54ZPz~lV9r@MqEuT# zsIq4MH!dzGV4>m(6qk3MbKmK}tP|!n9F$O^3k|c87h#Kk4w2_OCp)p`W4xZ z3%U@cUA?V|$9W-r;}&)}y1BF{5{6p6j3?3Sn!K(zP;A%tN#kC)4Rec7M^34)&#uAt zAV1U3K*ymDYJ=Ylg3?xkh`jI1fCZd2tDEdM3*!)OXRkg^b#r~EP@YJ?A3uA<0@#ad zA(O_MxtdT@LPR$g{NlMSGJuX1fOx*j;P`IzYN{w0T9CjA@3G30VNYD?CIERwV~Hqa zR>~4VYM4usE!lyC++6zJ7q)L#Plbd@z_st2 zBs5W{au})}buSg=;6)Wz(UxfaAA}o+H&dYk6h`lya8JHpePMI48W6oMjXziQi@y5l zI_qFhNy2~Dj(lBjFL}x}j%2H(*eec+_t(dt(1^THtQkv!YEA%B#nH1-sWlT0E*Hp6 z&vzr-lo@q;56?H6W^ZxbF61N;6Cx+C>CQO*bMB`dp!Z$eby_XGaoRlhyzyKH1AqX& zA`f)J%~S+K6cVqaL#O4H6TKc*0;BWR7rTBI){rY-4x^rL^b|X;AI&F@39!fzAOU%K z(D(A%-@!ZJwSVt#oyiRSlk1YMK8~EQ>0Wp{wCk8}t~f$WYMe$&IaRy_1*!?)S%4nReQgTJDt*@KvM?N<&MIk=FY<+TD!zjbcIDCFxt~z#l5^f{sKwVB|z_x5z0KYohLyyqhguF&9SVmp0>mKZOLTC z=XJ-zYCArp+LhlOji_J$kn&vbs$O{L>(&CgJpCedC*jlJ834>@n`U`MRceaFRZZPr zSsCUYE?s)kBnm#m|CXr3kpE|2(JT;Ppi!*q=M+^PY@KaynvoE27!Ic*BQ+Y$;{xuc z@6-!!bH~Q6#RULtpeHRlCaf-v1ipoK$)ql?FwWkOYz3BJIM%xHIm1}@-R5!J{$pZE zaTb6(JK4dutoDESHKgP=C9OIUGo?L~VKBmWbL*gT$_4{+v-tNw-0sdV77gh`S?Xys z3M#&#d-KI?qDiGab&Z1k!}4Olc7uTMYrhh@|NGrpEsfO620+1^_x(Oskb++OUhm(2 z_O=_SAr$qtZvzdQM+_AN%47#h?-JpcxH^X5{QE%0*Y# z=fSF`!Sy8+XBB3DSTM<&FT=W_e~||#hP}Kcy|Wgw3CCLbJG3S%p9H0b?3W`#ouKM4 zM#G6Fw!qaosA*^06Xy>J&QqXjUKG8;v})U267xk{7!-sL@oQ`U_=kCqoTTi+%pbp0 z*vtG)9PrH8W>u3xwxG*TemSywS;m%@6evPJz%ntt%)6B>keaxcdvW-{FrUjStOg>G zoBwP|0{kmeNlhFBAm5uCem(k5PEOqw5c1Iff2#wa=K-((+B@)nd8aN2{Ib2ctSr3E ziHe_oDs}>&oo;+>cIU0Z5=m&odYuPk`nWViAWe#_f=5He$jHoG7dGYkaGA{E&Qz4W z8GO;@XlI9;+^+9vIwb^&$M2k4`x(T52;6V8L^F#3o9$nGh8=_AbST!%x89~ zXwhl->21F&AbJgf9x;H(_zAk~PUqzB<`;yce{6gu*koorLPx=iK(w&2&}=n}`A(g} zO>gnu8|W68e0a!gIypBFjS0IJ&1k5r*Fa6q)tZ}YFxl?j^?Iu;DLGO)U-nB_==k{9 z=jo{E2?jkeF%g%~Y532dt2+9we$Pkim;1lc7<;l%Yi+VpG9r*MIiSj5NO02^R+fGP*PKSI9t?9N=zJfw6?gPz%FvtF+qsFc&67P09f$AZ{mR?d58U&! zoxMHp<8gCGN5_Ea^9|Q|c9wqK)?xj_^@-8ft(S|);DG$~R_EjKqxhAQMz+Q;>Ah_l zDawU%aPUy>zGurP?8t+WP#r!bKX%x0yuII;n3<7;!1BblezCK$IfR9es0JY{`ZnJs zRq)^=d_3)`>7Damnvz9{BZ?>)7}!Y+2OgRMLCqggj(m0goOIQptK^WCzP-(^>%I3_ zGMn!2FKu6=s;YWjP0m@O?=1K_Zz&}%4r%>(5yUrha(tXfr!l^BrJbIBjDyYQQ-?(K zSr7vB3w|&b#4rrZ_I`OOH(%u4=wm05!1Z*M(|w!NpU}>@`~8&1R|&FeyH>>z_QW( zCP0Wt$ZUIeB!2bw^fE1CqnU#S0!RZD;YoWbmaClgP5_NkSwf*{7rHn#8 zJpl2T`z>m%&7Ef*NdL$zt`6@Nc=wA*LvgCFUqP@e#eE?C%cJA_nSok4bpl+}-&$Z! z&dx_pTtbJJIl_SZntQ?7dEGqRxA1YKF}@8FeaiEc4NyP|7A~5-8l^>tq0nvd!b<9S zK{!3Qa(hJN_xi}F$;p|4`m3%nq1S8&n7f5CND=^)1~k#`_HI8FU1VsaZlje3P_Ad( z=Hl>pu|v>;J%A^ixH1Ss=Cqm$MMV^tNH?~Cy!TVgyM*`DWPfkdtGRh4)=w>BTs+Ul(#n#a3JN!gLZf3o)O&g$9F1alj*#DJ6F1?8?$}i?e*b7`qcsfVBLg{54RjH zul=EhL#2;i+672RPeSJAP@LSN8QCuP;~G1Ifm@yF02rePnT^hsL_|b1(--Nnw=;zg zr1Cl@wiSu{*!(Mv;btN`BM{yG0loIHL5*D=6n+pk0Q&4iRlk1y+5!H7cFF3sXqyKs zj$Hm~`^G*Hx+oh&QR%g(;t;r~R)NhR2??v&~Jp?H6 zO4Ju@vane~OQ^3}xSURq4`>-Y_A>&LU*I7`SNFo%`tA}UU;l9_D$m>xn1`>?z_tj` zrnz=VJQM z>ONa@KIql4hyO=5H9!Z^esyAiUi1F@&;Q#Jb>vI=-Z9B4Ix50c>@-p0(B_gBjdHi^ z!5}fsWfoy(7~aN)l7x!TUn~5?mcmTR&IMoEb6*z<#eT>-Yn92U>jfj`TACwSU$gn} z>hSXN7FP0w8=D(%ox-Pl(wF$h*)EKb?ExL_4y^#qn5>Yz&Qt+M3m>InQ_aCUGbywIud-_t+m7EK7Q} zux4UnN%izHTY^d1a>K)O?^e>M@;ngD7}d|7jXwt|+Yop(?s_tZHW zZbSx*fdTOB6uqvT$B*lV(OP6ziUUI5u0^#@D{I5qp{3`R*0>LGNHo=WvQ^osRwq6Z zw&kAL6=p98*(Av&vut39&@ZoTHKy)lqO{(sn-U+J;>M%%3%ZQTubP5Vx-L@J5#uzz zD{Y?cL9#zmYp8JG>WNaQKoH0xn49kXW0F&yE+sXcY^0Qj5#n#PG}N{W(ZnWh=8 z+3;A$oO;V^P@ri>=?d1l8t!l?FkG`r>LAJ_@MD1pZ2sf5^af!3SC3$d-e>txDEkvx zA0h{dgb^)r=_gOW1n3XxZVDrMqY?lQ8pZI?x|J{Hr^Hvh{D~fqmm!wp^^R6kLPbVp zdFeyA)p(9q!7t5by>YvNcQ6;#QVdup)`r`(u$-zwOK->bwK!p42kQaH<@t}Z)&Ds= zrruH9LCFT<%V%1TUVs$%NUnZU^+3fK#MB`Dz{2UH8OFnFu+q;Y4>l?sowXs?<2cec zd=ZIy%oo{i-_F9S2sPv?s-26t%Cb_fV?SvBuC92m=B0hR5RpfGpaFN2cPe}rBv6>^ zY8%1tn@YGF=YWlgEk>uyXz?5lKr|*H;t#(Ae;MM==b^^R#s!3R&y88jzsl)K?piTQ zQqpQL?}W$YQ>03}Ywz<;pS1hZE36}RJDq+EA^7YRH3!KRo=O@ASrlF>zxO8TLc<^w z(fZP=oM{)#V{>Dx9}kKYkxC~@IWj9ms+M=4S_Zd~@H6!;o(*jgH zR=iafABpxr+GLoO3p#_&4km}jm$lozD-4`6x1Wmi$}WYUfc!83`&iD|Na4D@=z4iC zVGcyBovT-+j)G%>4V4?o+0PojEpJSNxm(XE_JPB9T&%khZ`d}|aoGW}-uMAH}~Rtm=yq+Tc{A0_~4{ob`m79kWc-T2W7FgQK0H=WTi5G72S!hBq~oBS<8X>!!E=o*6ScLS+RE!&G*)TN*_as| zYO9@^8W6DP2voLYVTLW*Bpa#JEi}iJjhZH<-U;iTMo-mz_?_REe*FgEliHu~*s_#r z1n_tRotq+kwmQ-ke?dONdvbQXl6#Z6!6WKu;h}>u3b1iUhM2G8>1N2+%L*<#@ z<9j^a6W90cC)heEU~WVKlOKR##(_m2{cV-8uHtLjiBpIL`B^g%$S-6N2}7p zCw)JFU_xjvw~%OBSX8w?FOx*2rDfE)Zgk#PRx;Ald4zpJP8w}bzlAx7TpOLz;C%bi zSkkV?i$}#CVOZIC&ny2aP$T8yts2iCmO)*g779}V=#Uh9`(tBC{0>I?w=ItR@2_zsd1Jp_ z`P>ti5GsP6Iv%$cogBxi5Y7j@DLPR1`}@5Pe?ImBtyc!qgNg!P!DTiHNY)gQbR^dw zGXYRh>1#~v+y@;G8?)21QEoSVrtVS20E>!eU*wK}UA|q+O0pr_l7r}b~KGED7^bVC}il&tm_$AtZbJ3W7o{?>_!*A|hDrF(aJlQJ9cB`e7aOS%K3BT8%42DR@%|p` z@$>=H*h&o5_?S?NG}q`pKCM`AsojNy9j1v^|IbX{ZuL}RWup3#B7!N7H2BWy*Z~#y;Q%m8VxFCaM1+ku zhrM=swaJz19IwiXEy0}s7zXerFs0bU;-3l|!rz|n9`Ne0_t|OPPX9580_4~7jcKay z+F&1?#zqS35pJUkqkt*>pM30nZ04lt6%$t%NiCkQ4zk2#y>mX8L?hC#wJsmamiY?;Ps=a~)3w;eA`i>L zIwj}ocbf2g4EtU#9`J5bS>ntMp2dH^VkwGuJVd_5iGQ(la=vnyp_0aD0P@rGZH6T4 z&iC!flt$dNDf->JAaS07-?Yom+gE&t-`N8vaO>dM#$12ArG$s^S1eGsrB{k$UA$iK z54W%Pmn|)p-x=~~K=N=v_e2CHC5vWzpWfn)domZgxK3_us(l;tA zgVNAGnIXi#C8jR8G2LAOOwqjQneP_3E_b_)YN*La*-MQNYGvZ@VKT{!{Ci_TYkqVs zF$nzYKclFbY!QH<=hX?t6;m;CF8MCgj>h^3&Kh&Qd`XvY{fU^G_Yzj+5)zpj3B0RZ zBslU8a0j0vc2(o=6qR{NnN?yFC1wl1eEtH2%5{70=!fCp!%+B~=N`N9{!;#lK?!L* zqctrrGXHIxWt4jH;;aUfQFE4Jo2p~^*ykJ3IPu3ba2!==cy^(a^p4zk79W66Qpvo_<3L9zE?z4S(hNEJ@kut* zx{)V_nQeNdM$msc)pLe=H^#zZ1SZz>&`;#JxHYk;BGLzvRJz#-S0jT3oomD-GKvoh z?Kl3d;|aJAwQ1^)BLt_1;z{Mq2ppW)l-Mq%qg=TIni_F}$;eBX7_B;!>qIaTOyV&2>bS-x8rM|= zeIsE&fb*wObb#)JFbH(*pzr_H)Oz@nYIk>StW)?dz;|LeDY$b@?b&)uAz>J6Z2#ye zttMT+i=b%QQPh!_9VWg64>vC}pMYN9Fv`;rq?mZSsj9jF`5FAFJc{!*plq*vH|n~P80bGHl6C6cMOIua%%Z@z?_}TglH5NmHFOl^G%)o^ zEvaj7$ceri8og#p-$XDg?ozschGS=;qe`o$lqj$nCpx=O|x*9P)E)>LZj3lajZ zWTt;~MT_x*j(b$VxKa(LbXvQzFp0AF3mJLM)E)>H9uSpFT{|RhJuNDlOYkmQ8Y&v1 zR4=LVr@H^f$MOgOqm|+u+xxy}dorUO79WWm(ixWEjPcJN%?t+Rq*9R`TS%y>CB?4h zNzRd4S{tX{sSr&2UfMr3eB%CgfZ>$1wUxnT!3C`L`%okpoSax%qcTU5-ZM3|H0GJj zpQndWK_4Q(M(*#nBWB^@uE$MeDpM}()yzl7o*%}>#vZijWbS?p6Mt(P*}Tf_)-d{< z6N=Ou>-38f6X54%s7khPR(bH3t@NUkEJqr1NfB_R9mi53h*svt)7VDSt{Xi}Ez?R< zsRO3B5pU8`;8xD(I`<8?_4_cfQ#^11ZZ>W3DU${etL7;;rPGWvt|^A4Y9y9_DX?!!`VnIm<|K zzR8D}GA%qO$cW7?j^dU;^E?%B7JYi@IxhmgF<=Mq+D!FunFyM>@nS<=Zsmp5g%ov) zGed--W}P}*vCgNg`FJv3E-vodiE=N>Bk)1Lk!Q1ypK__0GE=p(T3OR3QuT1h4RGgp z8^{`(aXc+1>IRCMG6|*_yiBy zgwk2cu{~U8mT%6UQU(;@sra&QoKvWhIy&CZ#eWKeIu`Td)ozr-!zo9KJMtWtdV@RL z^UAfO)Bn7PU}Itl%!OzgTkD8;n#ww^koX4;3Hvm}Z`xv$X+*Xw6Ld1>>k_9^>kbP^dx-SJ1IMdpu*SEC>u zB?F;u30ZE>U|o6(Ied%;glXY?i5cDQIMfAXPH2RQV(xZG#vhy8qklxilPZrcvV$>3 zNoR6nksHIm3Q>~ZxQ~CY3dju_$@BNrn%Qx&ePh_Y7{grhjI5q3$F5!a6pS=KVO@Ja zITS_Yb!XnXd>!n-`^~w?vyXQ?d3nG5MKH505I%0Er{?G3rv0_m`1sx3E$VFB^0I=Z zd{G?#R2G!G;`?!J+Ls6*JXQB>8u$kGWNa>{>K(yrR7}dhM1_U>CjHM2O8tLM_!#a9 zn*=nl<~~1{VNB|D*ui&oXiL%;x%WKJulQ%#w4pzK4t(r2dW?=Vd>2#u!COQxMV zpZ|L=0CNf#wyZ3%_nR*M?8TfElk`BaBTnywEk8>t^2EB{w*~s7F#w{=396bow>?b zr2}ANbXZDh;&56>Sy> z78>Z=7m(swnJd-kvhFxNsL~yhl@Nx!uv~4+X-0Rl74xh!g|)wfLbsGX*3gMi&5J&+ zShRc`Ep_`yd^#s&G?cFL^g1t{pqpc5GH>N{U|Q~gA@sQmtMKBii`Qn>N6OH2`5LCo zrHoQI4&<*)92(kElQ51uWYrcY=xG?)>f9=s?j!)E{u!1RSC`VLG`p}aJ(WuI*(x~T zwens{Q}UNs!}mA2I3;%YZ?C_8@!I-&F;eL7eDE?bL8_w4G~%T6p%D>q zv$jcm<QRxB$n$SZ7- zU3V~g66*cMipr6k-AK^j>JqBOZIAh9eTmBaq*a;3+RWPbI?h`g@Ok<9PqY+~(T-Tm zt&(Zx(0GNx`fH0$@(8hYDqP)R-<|p+e@#UK@jr`(a|!6Mqqk;JStUdE%xs$P+wVzw zyfvEF;W)9U8_4CO2U8D+CE{9)rc zj>G?j_fKGHVxvl4=7K#Qd0AAJ8+n|KMK2(pIOWSQJ~^Qp!hp-(VVr8v{~wyZF+8$p z>AGXv$;8e?6WcZ?wr$(CZQC{{wlUGfw!gmj{cbgJEwSfRnDJ^81PPwzVin(nWD6Uj$n|xk7wle!0oTm4LA21rJZ0#dV! zEA^CA7;vX5Q25^uw!@({Q9%jMGPeRP-b(-W?~@{W8z6kcC$w<+~ksVTjo4j|$xQsBL$!`aj zl;<9Gg@k|-9Z^dLFf)l-`cwxP9Ni>SU~1k~HltGaAr`lJ`&f1>{;aV!v71h6fsScv zl8JQYZTMFYkp$j;_unv$9Irun$=5xL7jO*TzMqy=cz-uZ>`vkHD9wH^kI@*7d49cE z!IQtjAlKwLXbcWpQrEVrpP07uEH#$&G!;tz{?soCDNJk@=}cwwT{Y)0`t9MRD{Lme z7z#v*A*C*!2E7RdDF3N*ITJBGI@^~Td$xu}Z8By4+cM8BYRA)-{>3 zoxUSBLq_Ap{D_tAo%yVIn-nFL3y&VIVXmM8iyep=8++U6`ka0)bsa;TJG*RSyq$B} ztjFLBY0+VQ{0`@a@GxEJ=@V$_V}3-p3~s#RA}JE;S~630ocXk<7*}L&_p7QdDG5|7 zu{B?kzLvHLO=wUw_0$+&+kuh??$AcUntYHh8>9C<`SJU+fa*1~t_Y5E;0X2;0iq@& z&^0%sG$pIm+pwv)S_aN(Qa4U!(FCzahF4~Ig4MN_fZeD_^zpG>9&)M|0uluXdB$co zL3x%2cLlGb*xf2pj#i@ z=Bmssdz2Y`)O#Q*YMTWVM&RPIWu2wQ`-M(NkUKC;i0=vCz_$G|JiSG%%sTQzlotmr z;vb!@mf0waU>(gJ)U>qHic6X_)_zNOe;>FJ-=}5Gc@h@<{mc3xCw4moYZN@U#VJVW zT*6PY2mc^Qhuac zfOb2F`T^oU0ECnR?LlVF0UsfVRihJr29r_{l|8hWwtUnUtM63NWit1&a&&UsZfpFG zASMRa;VUy>>{SkRQ6)2>c5=;@wwLZ7Cdxk`q&HZIHoAf=AC;T5mMHn)&$`v&lL0 z*`OW!o4Im*Gt&dUX_n{JcyNjpHQc+X*no>&Kx z+H3Q`@?|+}(*oWZ_(4&sG;T=OcUvzb_h$di7<=Ca{Gw;zz+L?_VSrzn)wZ3}&2m`- zf|rNRNYgzwGZ3%I_HDoOB(4RP&x_);olC({NqZ`iCfoGss*+f+R-WuUkOR0c5U##Y(ElSzQhbP0LBuMzT>-J7q1;(S2R%J{u#e zUGYaCb*fTF6B)T5ceUB>X<^{nDledKBrJT<0M=6j-7f$XpN?a!{5f{VwkcZmQyUtY z{T`j}_1)LmrW1$iB+KKZO$w)mBUB(wzLdd$Hpb_BYpz+m6z^)dT9LYC!H6rWZ6=~T zecP8@Oo!hdr9ZkQ%3h(pgIVA-*WP_sHYj}q;w976$hhsw&wn)E=;FauHoz47`aL7Z z_m9i5P}-3ZQ0+hbtCH%_Wd67kSW<6>%!ZXJv4wlo6 zbF+8wJ47q4WO`(T(Ejt<%r$}=g^V_8CYYL*=5e8Y!ZbarzP0R-wCmkd?78|+)^@w) zYBrZT?pG35{M$%6{6ylr&}e7eO>38{`EiqoTpW7eGnSdtq=u0fAwoeN{p`{!-YR^w z3<2j~LkUxfM24SJ&p%KEG*JFa4hggqLJC3m2^Ho6S%N3q zD=0*Yhn{!UDvCB%cCwGxpC&MaEm+*Pt5Ta?rkjmyv#u(O0v4bZ?UxR_o773+Mt+;t zR_4w6ch1>NiI}DBfhDCa>^3R}q8ef_V{T_floAS(rR5@tPr=!vbPnAA)Fp{IUf6Vzqyc8w;Nl_qe`KW@v}C+hKBWT2H zZ>@nZ+g6#uYPOb=;9C_7SmB@8(X&B_*~z{~ou}SwQ48k^an+o0&9tqNC@rhCt2^aW zcIzn3d}>`Bv*GQz6pJpsD8iaerzQtRzy{8kF-JU(7$!;aw1862-Ow_G6 zB6K9rPh5I=No*?pxo$eS@Z2npVE0~YE8^SinkT=oeFcgSZu4C!Z70fE1RUb0t6^Lw z*7Rbzq>S#wcS(10n&F1@;vugQ>Y_}vn9*1$0y2b($Y~F)wANb4WzY94qp^-#Dhd6h z)IT>zN7w7E4rW5PocC$BK1ZtSmx0K@E!*Eg+9btH+JE5H)OQV_OEtbkG-~KrN==Lu zQ%lem?jD)L2ypfoAPNnL{6E$RE8jkv11!~ziVggKR*7Z!b(p_BK>x7q*L5tpRC2hc zJ86<2wMbzpg_@Gdz};Aw)AfEuP1%!rykV-qg3WONN&2{20F-~Er;z0Y&AE1+OceA` z7wl=J)?UoJT%~v`RnnI)ZMD}-NDoh^N9N&&Nh6Gn7AUS&TY0$X;9JDm;0PhrrzlXU z;0oJxUHr}It-^1#4MBv(^JV*Ua2ev81V&8*Fh{ObM{N@Fz+Y9x`pL>Zu^b}P?8oKsiwu1|LUTpkukhq7aC%ltHo`OohB`T-JozDf zO`VY6PYr1{cjhT`f!pP%M9!a>=BU@Ho&*;%P*#8i9z4DYK`3K19!Drl$~rC~6y%=} zVuUpf^}g$qtQ>5prd(sJ(5xGDiY}VK-E+Q2ad9vw4t$!t9)8m~! zC#!Ye4xaElqP3cdt3W%wmjhL_c(KD_Bsr(fS z_~&%X3nKL8A?f)|4Q&-ps}%vM(8fTXek zG2CR}5OUJXnI9e;nF032{~Xie;$}6y z=j(K#vbE3(j2N5dGapN*onx=*ySl6(1uAmmja0lo{#x{Md?~7TCA4t2m-qFt%vWTA zQl1~lL-6T@YkEi-1icoIDT{_vzy zcW_SHI{mo93AW1FDAkL4HDD=Uu#Z)D6qN$?gmh+7xPoAw6rmi*x7JI+6`b(-Ia9dX zcUnmu^oS2j9jEO2rm!+|3EpwBd!EPQA-G~CH9f0@o1*Q*{@}6u+T;$)YH?~L3~vQA zB6Ja?s`(GAi9}Tvwbh^Ez9B9m0`+JTqjbSt;|AyJ>H@bna@kEc&qY{Uyyklex+u*z zkhj~Eq&qlx0!XI`t||6*k*tFNM@9-?oU{o|K_qWGx`6RN_9zh3xAYAuLy?7@i2^; zOZxjbo_RW{MwT~0L(S>c{&In`8?VroFOfIiJ^&BUVKotw96!HS0@s+4EYEpf5bBC z65&FEN+hyZB$JvwQk#J~bAJd9E@DA@ay@^zzkXg?rG-{2v40`*9^KBYA?#&&7VGdY ze*zw958Ss;0QZbv+|!hUcxsM4s8tuWQx#L62UtuQBBe_3V#y*@`3u_F00D}mi9;r& zPHE^xE04S8<`)pUVgZL<9i-aly^|N?!3zPI;6E}57@S}L{pZ`E>8-0NtexQPYPygG z^X<)!IF?8#N8JqPsMeLyZ(onb>c*M*U`Mz}MhiJ+lH*90L0Ca@vL(=6QFj(!w~@5? zfl#{ha^z%w!tc9KN>gihLop+t=N7A$OY)8ojj#sn=%}u$fpDb>V{BT2C^0Km%U%Tm z(!{{@oqI#H(veZYBTihFl(uEH{s)Yiy+1D*f7(4(Rm^1A4?><0`h#_8dL25Njd#%G zky=N;SwleEn3&a2!i#I!Fx#q{8o`~x1`lqTna2uDX+c53fxaK`*+qt3uhOhfg$28r z_;&Iy5N!A3c(J-|N4v9mRF_dTE;lx@gD-U9E!yI*%_xW)S^SFj$CX)z@qG z_3!66a%obvS%qngD)3xmJDyC1xm>ee!r}!hDGqkim)Q`dm=JM9_a;|27_ZKO><6eg zT_h)$EGBB)tsv;Ohx}?Kti04~W}ug{)0X#u0r;c3#4eOa56jJveO)Tu#*nT$E~-`I zk=(xO{iZUtcc(}s`Z193U%zgzHaDfaP*#7eXEYk>m%d^|F*3GPyMnY9f8M!L_3*+$ z^Y7Jz50Y2BVlUa=w)u}b3oYq7Gb_*Ctg>(SyYcnB3!6pd4V4frJ8umC^{rii7Ik|8D@jJ3m4$a7A%~zIC9P26_IBcr!X6ceWz8=;6BL~ky zRBW5BTr0o5Dbed1ot$D(IpVQQ`dJ3LaEc|d*W6>>bX@8nw?u=9Xw7^GF#`r~zT@=&-Einr_bSSzK%{s$?Q zsisBm#K3XdfgHUFzr0h{3@IcJ^q_)Go=w5_w_b(F_P%!*hU~Q<57mB%Qo#acEcnNX1_IFMKq%%ue7M_r+skq-&_DXQ zY159H6$~qz^StBn$=vZmK|TQyw2^!ExOjk~TdUKT-1nh1o#h;@4B$Q7L#5&I5j;yw zDQlFL4ZwCFNXh_rQ--1#;GHpYjBB23MioAE&TYd!+sea(`lko>E0tZw%~W8IksI;q zr>*Uj`@RKUB^H`|`JfY}@5jq-y(xIG16YFr5j^A1aK{w7iVMXpH<|$`3ezvxP`CaH zG$@+NjXWP$keor}=U#9ds%ptw#uIhOBF$<{E$z|f3{c_)Elj9@LC|Bg)m%2O2Q%c= zK!*4V`B4A=6jEzjZzQxUa4x`+b znbzV)<=E8<_;e;BrSRumiG8Sr*0F!O=OAAo6V-Rv4{r7 zS<|mO!5QJ;&dG*4ew*rA+v?ih1g~EteDmy7!~7($Gy$RhjP&s4*x9wmlL7SP*!7fp*B{u(%@bJYppagPqZI9H=H&scGkSI{Z^E zP}%-tgF4+fGoG?=&hyZ1C(vKpWN7YY7x24YmC8)>y_hIjb6LC(`SKJ~{~qq1%#M?r zGD!^4)NDNrXm!KkEJfC>83oDkFCYArdD6(*VO8}nl{rU>P6pSrKPFm!Dx;QdO~<|| zKtn)@7Z&q%aUC!MIy_+lb6sjk>?@*S42V<$D{% ztM7$|egZ5p+ODz^{OQO5`A_w8{m3GD;^e;Ieofd7(jvyOib+a%^h!I((&a#%jLvh z+~If2k5^IKjYws3xL625KNXH$0&7dZGf%6QaN5PZr3Z49*GrNHyD2EaN5~;H*J|nd zxf9-k08sk?;4^5sEVrGV55s1->5s3`4W-m9D94b5AXd}dxn@33Nj~U?v?dqTOHAYB z_7VXdozC7-b|A?ZmSwPvR31OIkFT1n#=&&=x0j2aNVuAJwV$@OfWJI+GPE&cB1}_K zK$n$0YgI{ONkeZHDH*M!wlka)fo{Q*-;>$EcbQBbG z(9sUk&q8#oF0HH*B7$i++t22B(^c5rBDv94Pz;I{bhLwn1{G8q|~R|B~L1S<3)Ie0x3O81)4|FI+|;Hq4mhG zyB{`&x@j`BD;7)MU%Z09j8QXWO5@8}c!ol7e*Egij7m88D|G33iNh1{@&KhLsHa6^ z>(d6@1Q1t^Eov?qO1NA|PWfD@*KKlOhIdb^`IIX>Xo7MT_}hXd_S9=$Q42;5*lx<) zuG}b8%UPB%^Q<;Vtx20{pY;eESIXadf1@b%%;mk=!3O*o(P-mGgHgfq0=n zT}nOafxm?rS@VD<*lVpHjB?#oVL7!zUSf(xXf>7ufpY3KF$ zmx|kpMJs7(rZ$cXI#L}Q(51fy&-;H8T;89K~Ns*=lA z7U$*g7Sk_Lr+qR&E@qEl2MRO`gv_#mk;TF$y$|Z^cbqr+83bq`f@C&dRm^hZcaz&8 z3CQ8;`r=L~DWawu7KlN$;GF@HdLquixS8~9YeZfqmfzJH!kWWo(E_%kR)0^*7%4V* zwlei@?UCXYT*|0@b#a?mG21Q<^<~1)c?~JiT1Gm~{crwtkB>A$pjq+s^o)Q8NR@0n zt-O!(5JhAC2bTY-CaMer7W(UFV3Gj+1h`_7Nx@|+!YGw=BrQX=D~26c5-@S(s~HPA z(Y9vbAOoQ)Scey{vtC`ZSU>=7c3CQ^T#A*;Jz!yn03Rol&G*xEl;A!z`CkRWP$9*> zJ!Fi*l8hx?0s{6wT)Xcsnl|}8&?S!|{sK742}7IP#A%wVCCv+~DiBxxscUmKUawuv z*8W&O{`<^{Jv>8SKO>q);%Pcaq+<1yb}5OT@Us2bx;SV9 zR4ETwksbki0Tr4QC8h~?dT{VfreAK7m2ghaA7<~ZZLMR)W&(7CwmRZQjJh9&NY&Rj z%__+scdub2djiIpWo>S6f#gmrwmiQgS^HCe%{VBu1v z#r-)3-JlJH!>D^M-(b>Uie;A9?)-tAHU!dCz=%zV&(j5*`+V(jXGl_`ks{#laXmej z)jYP;`P}03Dam=S!AY@%*05UV&8wW?ske zlw|SX=AQb8OFULKIFO03nVr2#g+_di(V9d>dZb3L?}Lobg)2S%?mUMK*2Nni+L|O; zWzOy0QdhxvX}Wvzy>ABx8Hd?bs$cvYz`O+x9wvY!0GblH#3PLD_CsYTznz&H9;*tE z+?;lWp9XQo8!1pXx9oXaWr7Za8~_lZkO9d;C()AUlPxx zTV>(>vVUfI6}`Dgc#i~kao>o5{!~9dp~5cbmWIeW?QRByA)%hX<18*hlQcWeA+o`s z2R>}pic(}=U-twT;~e^E1w#8}R~#8|K412enQwQS2UP}ZB0%`t{wLRg`I_mX-6lNa z*Y%~{$L3iTw-9~SVyV9j+^4scS(Y2bf-!D?xAU)MZhlaD zo#A@z-kuug-&byZ5ZhlR)^_(Y4Q73yBPv&^9L`9M5RpYU%LC-qESkABvkW5ch|Z1O zKRg9AQgpR@rS4J%yWpT_RbjQF!fM`B!a3?sANV7L1OkoEFu9((GqJ&+!l$kQvxG_ppy>T|_-YhJtZKAswTWwG*^gya5I?ym5Q90C z%kPT)CSb-$;Pd6eh;S6wRX`#v&CcU-`a-CUczhDKo5=#7B6W0nc{!`kva)2)nXQ#3 zH#FvKEZ{dAo?gf&N^x>c-FTVP>X4$q8E3PYVGjlwtjc^1G<%mLH{c?@AeRoKYuC@+ zM+N|rn5XO4w0r6c6cED^Lbz^u(;qya&K~PYpGGN!9$nokF{F41{DAAGk9ZN-SG%xl zcq%HIw@5eNn6xdD>36y{fOuITg3RKuEOPb^UQD@_+Pu`%MWX&KtFkaY9^0_zs zJ=yMM(l!pMe5C?*(U(#&ck8W(*9=>}uTplQlrvihw37YYfjJ zpY^1E`|FFa_#ue_UK9p84#cZ(=~Sk&_akgExIO2O7A22&&D{F9wAZ!JvfW)659{Hw zQZ0O!w-55V%N;0ck`cAKhh|pc%efVp2ty6b@D)3b06u?tlC{OL+kvMlg%BMju7Ol? z8$7Nf1-y0ZkAoCKoak)mu#UCbpNGo7W1yaf|1paecKw9` zZ~p>XdxOJ?I;w$NnrKvU-Lr31+i@Pi=W~G>YDYBJ{WB$t(^HGN^E#6}ODcu|qd9hl+!;<6 zCXA=u}l9#+rq>e!NN zyV%=PU8v-%GEJFE3C5IX*A*7!v@*b+BwM|!{N`coPZKSb-zY30BOzb}MaMOIT2Lhb z8Nlt}AfjC${Yx;rNZs_W;6a}xCO=#x6(R4g@<%AFFepJ=p(cr zqxy`^maIe5pAE-)LGpz|s4_zuTewv%A*0RKv=faFWIDaR|At6N1MvlVTF=8mCRaI@ z@-#O#7wz9mmlrOP-I+M4xMr69<^W;)_msqa(p*6XjY=w5|8l<%+So9E@^EoE4W-7v z9HvGlIzjo`R#(74BO*pddp^9bKKnh<8y_ff5_WitIG3UbG$Os=W@Nh!pRS0UN>^y8!eiF z#VBz*)xwRQ#y!?*uW!Te|9?DH2HJrye1xWA0k5Zhs&o=vNA6iIxw@&{BOu_eK7P}*bwB;5=LE}c{bhZWCn~k)_$x++DG+9CgM6OqP?mf( zgoplOoVVP#v2*|YC39l#h1%KfC-*rp?Z^b>k{K>GOF#a5wreBnd%L5$E7Zp5;$`!k z|JparuJQMv7=B@ocu_2)VJJ+Tl^(tuEwFX0L=og#{{{;)*nFwaww94E@F$$6`An&BBvKO z0k<;!OmIl$i8Im!0>nTYdq0m6bkJu{0CyDmXd_G?+6@6*YmY4T?EoZTWo{vc&~+S{ zD>vF9lr;!3m!~B+*45Ltm0i5FA=7a3OQltcxM|{B_BNQNl;#ogFf8aMEhO3ju>k3N z_6LXo8HY0;Jop&#AGD?KN-hlW=8`t7Y;+3h_(0aS7DtFPYqk@RH`h#dkmDsXM`*B6 zYPQD?^Hp+~S_B~s9%d-eK|OF5SPY4QQpPYz3m{$T_+xxAiNzTHOkV*TNiXs!EI|Q@ zcP_NzFAXzgQc7n*p(v5iiTh$!yh?>14H9iY&s-Fb6KXoMO)3L~YiLgb&7&2)i;!E3 zMJN^kFkc&Nt~RLWU5J8=jBFhOW`XT&w_B0%Gb9^PkwJ|-O^eP8GGNq@+8HurPsruI z8CN<`-)S)YZ>gAKUSRkm8Wra=>qpz`k5r}OK!>+gQ2w<6hl7+P+JKdKff3Fn9bzIP zA{p!-KQ%F=$vi^EJVV7YHH&+A|KS6Rg!L|x$fKa3GbeHEtyKz-IWvdvzXXia?&I1b zKmaf9wfrIaBm73%YdMRm^om{j*}55*2OMr8{{H@q3HB$zP)afG^AB1an;Wzu)HQ`! zt=iR0LA+5BbcJw_%5{5BC>9Y|m|VNPCGN`p)?z;KyhPETQOA-_i5Wt2*mX{As z*q4UrA@Wc{*uddVR4$hK^h(==&=k(ZLveJr2cJqI7^emY0e%cX0-stL7JX3qL1oj%hK;>oHGkR zW&mcw#=6Ce{cD?i!vwiLZk3wp``?`C?o!<#-;YK0PZhd=tFxdfK#UNnIo3cY5itBX zI0~U)i$rqopM>f&S6?UQmpsl)bANoK2OL_9^thk&>$BuWUlG{_INc*QH}CvwixWnA zgl9TKAj~uGxHU_ivZoLnOyCIgR9vgz*@nVoekU8si*`bFi7?PXM*ix=h8N@1o3X=Z z2}c6i^KGa#(C3mz-bSN3QCdR@4ub@hJCajYTF+ZQ3x!}(@tfd3@56zvQ2PF}-m1() z4i*!*1SgoKP(|?lkmCdUDPO~sG+R+Gd@m7vNoBCc&;5h4o|L2Jd zln*r}qiTwg#|05chat=u)mO2JcB86oIl*E!TFAy7mf!$@-bz%s2mR9}S?2CTAIF#l z#mHJ>A`V=s0?-UJ@GQn~!cg5<>sT28BX-P=eiKtf4l1J^ILvwVf<^_zV!z_W)OBF@ z4_D5_M^J!&(BlHlk-(|S4Mq);hp4asHhK`quWRD9P(h$d1034~bZ#HxSey-;jy2lK zrSMz(7`i!BAN1|>^$W2?cj=bZ?}4fykxG|EhA;~0JP>HE{`y|X2w(;x=izp?sMP3ewg{F>@lkQG3-hj{E~#Bu2&q(0E#R?1AYE8%m#BW9xV{! z5AVNT;%`PbT6daKf}^qn^k$sqYpcrKqZM!KH$o@QOIEWs)DwscB9u|tZG0A1?aH~z zf&W|j-6jG5tyTgG{}*4(9WCyHn}w4iLOJ=@4Ui`*LQ zrk+n4b9gjtYnnOCy~2196$|crzv3pvsuW*cFRlO`ip$Y4+*bbGKCAP~$<~PbT}kqG zCeLj&RD?GDbKLzD2Z>MlE4|+STR|d$#;Tg%t>-3+H!u2HhPPNqRVAhO{&bTDBmFl$ zjW=r4_Qyah(rS%**HHw}YXGTyeIC~64{knL{12O|EpOhKU3@j)*DhaI)aoQKryB2m zGlhzkoQ{88&Zfsh&d);yPDVF{h7g~2{7$?QK-^SLKwYdg6=fW)SfirL@O-l_+%wqw z>U3P|aq(;Iwtz|@yRVcB3?N|jynB|6&4v4T#=~Ev{YS)Lcc*z7SoD&Y%HsF>gM6^| zBSYKuZg8H$ReGa&X;rOHutX6k+kuol`n685xaw--MB%|}yb1k`1grqdX?Hc=ALpFH zP`m0T+At{-(dgq?7}3&0FagLy#bXa-c$b9mxqU=Rlx%eRfXANVZS}&#U#5jaornAD zQ;sSRmD@omvs$Zz(oON%`Hju?9SD=2SBU6@>*ZNY&-5KQbzzRDSIS4XXB7%l75rvV zEOt~;iKiI`wx&pCWpuLR%<6<8UmA3*RELy_!as@k8!JnSibR~x7_~UHKmWV;!L!s- z^FmKhZyOLSm;$^ds%p-d#N9{%3P^MxNNIp6(>k&F(Al+X4SZ;J7@SUZ87++ewK?3q zt*{dn91>y&_*H}37CQ3x$A?%aN(xx35Q%@l3=tQ zy2{?6bS^=r=9&XpQ7bKuImN}Gul}QZgzC^1 zX~MQyukW0Rec&Nh;IHqyY1@M$31`)>tB$gYodzh=e=y$8F0XDs&Rk+HFNQogyL@*# z4EH9=!#UQlTgNDvP4*l2p_{RVqk)@2FN7Xp-vYscR%f7g|2NR)d)VGQ z;rXpdfE;aw&HRMNuCF;LcZ2gadXa1{-hj?a3f-pq^Sn?TLy?VEOad!*?C76a(4&y~jdIOX3t z@a+3j1}NLV#(ebWG;8H5LC2H|ZZaeR~)bZs9 zgBDFm0xp6Tkjy`=)el|&3h9Aq+47abVL$;`0>CfqKVUs)@ob5GeeC?8d~-05eTtNT zlB(*e{#MmqKN|G|8Kb;2sj5TQwCY;5ig`Sc)c~`++FdKB0xSn+>!35aiwE%$V$6MW-ub{&EDuhtx71 zqX3ww1Y#ck*|{6p^8$O{Wo8~51Fy@>+UF6J43-UD9Dl2=s~F_POZdr(#+Q(YC-L+j zRg-wN3TYKFastutM_FI9#TB6H^IeWWLRvzj)%-CX)+8x|N!&t3Xm`}1l)_&@aW82` z7l_Qic!AVAeOllBEuI4Df81dXwmd>nkGSYCr*LVA&#{PsZ}M<>ZYiR-GStm{Q*BdH zXRi0IPQ}872N>c0YMW7?{EF%qTGY0s)~%P^gKU)3>%Qp8wo2Y_v+0ETJ`x3%)}=@t4p-*#R1S{%n2Y9&>{0cHsXKH0`duGGS+0IzxWu+{a zV5Eyw1OV9#v)XK@dV1@iGUe3N^OFOssF;|yb0%n^PA2YMOlQP%LK-N}rLCmmc0NK4 zo7Cv?=Cx+T>pwsGay2AO2;RLNiB*Jy0Qh5VtP1_f=Vn%cd=*^(mbp~jIFC!x(*!zw z75$rMGr7CB_PCmlclC?(HT%*j;(X}%u0QQlOTj2-5o2t}+Q3a1F5nN)SErCJxIAA8 zA(IC9D99JVkDX*s1yN<@XYswC_Y#PKfbf?pl1UcKV3bb75%C+m9Oh<^T3Pmz5PO4}j?_^+D2OSVjp>MDNI4?!&6<7>+`BOqi> zd}YXbJ1lp~$-M^@@lPJIxh|QsHMxF2wX`AK2gUJu3KT5d#HIVm_Lt6QYga9i|FaZt zt8D^;7)~>5zdMT>&BxELZ8oflP-a%NzNL?I@BNM2%!&vy^q|qT=gVuS1yd*}NZ?f_ zll!(C=O(y=4Gn!T*uKvAmV^2dUsKp8xYD=v2JojfqG^xDPz!iY&ETtN%W75ZbdSVn z(w04VsGIxXYOSoupDbe^~n(>K~oh%!=9MgW%hUdOPBspOaa{i64Wx_{mJbPoDFEarP zzJ!Y5EN|wOC@_*xpHC};I+_$sVUQEV8?NhI?V&RMy~F)rl@`BA_v8GXraQ%tg2C(Z zY&kYtyg@$FYljS zc?~%VY}vqE&lDN!-Dpt804pA(|BIP*AehT>{~6PDvQsrqSQ7%6?o3|u%Sz|=8V@k3 z>w$xNG1}rn7XMNYF59Vvkg;M87Kk=^=u4exynejuE|{zc`weF^F3yYSkM?E zhKZ&_7KBw3FVc&5T}^GmBxIsF20P2uz84t46BtZnBg1O5j!Vph!fvP%M>zA8+Dj?Y<~4NS+ajb!qilot=eTT%DcW0{V=L=GRuhXvWBR__p}tBc52V zL$BNVcS)0*keZJe7T_GHK7iulN1Eo&O}_cF3P1)6JgYLR!l-mf|* zR`&Yl4ySZ(>~8Af;NaZ9Y;nb$$_jSz?{d{Vez(muW6#Pf;2XDO#{G!l@XIMu!-M9@_Mx5jA()_HR`vl@D zKBz1Axsu?_C*Q7Bl~t|o^szn1rH+mYYKT|?b_@VU{-r>5mZBiYUhZ4-uiLSygXC8W z&TWJOTOi9vA)8IkA0_m6f*VXTt{dxwcpO4$|mnuF6iLR#hStC_fJgSj589+=~75HN8myfQI%% znoE~Ou?VaUENjL8%4j1xT#i=q-I3AAx}CHcA>T0fSD)W@ef*{pdp~oQ z#)8Z@zTCfY25b2rfN?wIRZ*$X0lxBZ#6`dDKuyE|r1=nMv`zoFTdK%CBu_2^; zvb30C5TV7xr97SH+xjTcEeI*gkE)cgbp)M`)O0jY2@e{;Fx-hJ9ViVv9Eai&bmN*q zQOC>ovD5GSM)vp9o+5)zYYuf(0$!%2=0@fvzcQK<6=RggAUbB&;}LL2oOWNzfc>ZA zvspe|WgP#1v#b9R?dsam>Wn{W!h@zjlH2e5Aw;p{1^Wx)y!TnGx5U5j38`pWZYZVY zqaJG9CGOoHVctvVYiu5WPqkalb5tW3IsF^Mq^rBmvYKB|B+f`{Kz5~>Q|9*$&BNdI zySg0meqB~G5U;McyWT0pW9QZ0{wJ3OC;y}{w%V;r9=OG@QtW=C1yR~q>oyT(m#lk@ z@kE!!<|H`5vPeBvCJ%XIH<>zC_%v ztgF4O0)*k$@H-}e2=&H;sM!#q+o?mGqH0*uUqG7|KENnEJkr^)}$Y>sowEJ?>Hq`ffSv6>VEnQcO-CEQT$mk~A zM*sGql86`u=FIEQ1RlYXz_WsuewubZ|74#n2p5Q#B0O!ImEp99hQ@f~dwq#z1*qiMsCW@c24@)+37R#?CgO zS>X6kIT?z~aKa&z`u$|E#wZNrh3L_>Gx^=F>Z!SbUJ%$HSQR$lZsDIFpM=Ab!1w>7 z=^KM9;eWPk+qP}H-P*Qo+jh5Zx3;(4+O}=mHs5pq-+5-voKL5npORcjt|YrBoIkAG z3~vtukPPTMfqbk`FErRHj-YGVC$;0wB2NRJL3yq=N|m=^z$L0r&gq1b022 zT#qx)?b@BsTmd_{g%n~UxEPo9{gQ&jH112LtDbgNyz<2-E*5g>dZJ(FA`SJfT0>!_ z83c?u1P({FkWG-@I^1mTkI_`?ft2*&4p!wkc`T~%87h#lblUS85L%6rt>?Rjw6zlT z0u#4)Wv=RI z@vt`4MWWEQ+>L_s4Nsl`*xUgD1Chh3L zq8~!^^&Yv zqwNanpVt9IBZ=$1%}mxZ`8==ZJ3CP*b{LSakUZUnqx2#{!uFJ}7I2wm75(60MeIW# z@}Hn!IVh@r00xGC!2HSfv(~r%2%2m;8;!!~GhfSY5g^U2=ExdAhKr3^Yc?`62-hX3tfS|0 z`050pqaaa`52Ow=d7nbZAmwMSin z&K~uvQ^^MuI(SddIOpk6flQ@D{#a1%`|@7Q0MgqK zUX*x6*b`1ld1UKjapTQQb_&hmEN<~E5z`HvpB@)^)9!Lp9|UvX#gRJaQjJ~m=e(Z=w8>i^n({K$zB&EXESNL}_fv!$Mx6M^A;vHr`riY7x|U{qRi+S;c__c9v9F!PgGZq zB<=Fef2Q-yCET;SCCcqa4Tkt>|7pk{5bmaKyZO9$uwb;hFumaocz#>DfRbOv|G+Gk z?eP3Cw-Y^@9X|ieY8${|>RxN2r6VHqJ3sy6kq}W8(^a-v=!QKJ@P8-#-K7UTL6?g~ zFxIK>S#-EQn^?t>Nu6al@V^!NzFf52P9dWv(2e@uWoj5s0pgOq?eGJml9;2_VxmNR zx{<|XEOW%y87mW4r+d}9UsRW)dh!H<;^a!lGrDlREI`Hj8ITE)9T8FrELZ>^*~bsE zqxxU&@gYuR6w^&=pj?Q6EObn(zB1P+5U48W^0cHv1p5xTAZPl*fL_}u%h9A}o$Z`8 zDGYd68ri{dra>R<6|7l9ZgPgIvX@U}%!X;HZKT|P_iskhJ3>g~X8t5t%8Tj_0SJ`T z*$>RV|J_eFC`P#h+iXQY74Z~GvG%Ra=!J5NT%SsPD!F537PSqM8B78gVa{4?He3p< zEN#-@#TZ5nh=ZJ1k?qqW=TS0e<;TN@6Ckq?Mk@)i)Ls3qTBa+lokjW@Bq0d6=pS=P|CQ zxx`)Bl&t!V0f5Drabiun1dZiY#j<$^uEf>IRnH&HhNlBMd^`ShE|H|dIap#qDa-m8x&G6D>%zR}Jh^;jLL2X(ub%R|xf4$%kNdu`>QnzUYz zH?lG66Nq<0HVS`Rc_j(6uaL}WYF=x_bWk=Hixe(tozqxiGR_|xNS8B*6IX!_UtGXO zhB#v^N>+LKdmG0V9vlucgQY7Mhtkm{QpCy88gOD{GVz$tdXHf19s(irDwy|yE&h8| z=olSu(!%n6Qy}sREoWR&mYHiHz^WFKoQdE%d^Uuy9d0XaXf&x zD_yAV7sB??RafE-oS2mIJ>}4mKLZ~9F#CWX-N{9{Ga}Z5j*gYBq7A}}7|Q^eCo5ia5Ha*kD- z4qIFQOvK7w$~P)2Cs{Cw934g}PuQ$ThvhnaKB=ZcQAVUSfIN(R(Ln|U#Zg?Aj*7yv zc+k;UP3NynSN%q?A`eiqKtP_YKFU%lh0!dtLSHWUm=E8Qr~ENVUgmIFW=Wu?uZ zj?2jM3Y;O+8Oa_8 z<4}^l)WXjn{~rU4tf8~L&&~iu6q#VA?*FQ_GK!Y1!*4ZCug~ut-B|t9Ea3&!WZWCf z6t!y*(;LC7p*ou ztYk3m$(9~+GDOYbj-tlJ%@L?gGok;r>|e#*t83&KnW(T-Sj4BNi&IYLO&6ckt5ywHe}Lc6;ppg}}N-jS3A82Y(%# zdzBdTG>#Zh3;*_wye-Bo!4h4(TO?HZTO}Oo9JiR}6KM|`2nY*qd8Qti6l{;=qd2go9Xy%g@OPM;f*t%U&L#=6QJHeopN3zPcMsZFHU;x8YlI0;4T>Y1)L@@9{r+4V`%knB6mYHR`#U4 zyp{_^f)10ZIuURjk|pVhOye!vhSR8F?&QretZLS!5D^pQNVwoCMEJ^17+iGVK6%Xm zsKWo_a-abcjZ|O};30FKEbSFyzBUgCY}~fK^w_E_sUj2t&EB(%fO4A)7$+x|iZlRM ziDuaj;515?9(za+kKTdACnql?rJP;EL0m#f>L8Xiu8r&D%R8*TzUHG#t=e^Nl<3u& ze+c&?mkx$PFhT0^_6VjPNx-U4umg|zgW;T(_t~`LHV|E-T&U)IN6hUp@!)YKoPT4Q zfjb(Vs97?*Je4eDptWy`NR-- z6fRqi;T#DDOE{)-0L-Br?oqMvhe@@qh{l_hL;UdLbdEICpZo2f>* zuYNxQIE|)>A|>j6{I2oSXm%P{)pA7%*gJxHs$!en$&hq7UdAUoGIbKXy?KQA zaqm6UlK_?&PFQKe(8>iIfRieg)%@1XV_=rDpk$9di0)zIrO9e|z?5;#0Qi?r8VXFI z!X`tQGxiyOw~H?5l=T8brTb@$3;lqBENv|gn6cmxa=MM2_kwu6b}&lpWJ}u?1lI5F zW_AQk{1g0@fX1WF2@gU=<}NN&aoG8J+?5=%B1iTgHo|75OOwid$U1X*2r}R{at@LA zkJ-mSS>_UuN%N?y1O;6-x2ViY5dOjP0eVzs*6%k8lbE#n+WUW5aU#C_N}zv+&LG9C zSf}ZDy8;w3wkVfh+U&hF-BvMjFctBMDu0f+1|uO60nR2+KmJw!eUpt4T$;Uo#6htpOu)#Tp+9c#k~H$3T|j_(pkDI17~z29h6_4y-g#`iJ>|MSF}kZY z7%oy9?3?$jUIWDlZ>SV>wAcYQR`g&`9(4>S;*upiR+lO!Gq{5a`*Bz_;w7)k6#*#l zru!#e*n;Uac9EJo2GdMlr$Lc;u5t6svTKcEPtx1EjlW5^osi#KAFI%UD3)4M000O^ zw!)O$J5nj#ziA@s_Q8;q|H~w4UG(SWorD1M82G;(IRU1?9Pa4D&C>rgzY`#i*y~v& zH{-bSDONdgfn4$dB@8`y57ixaD2@#pJ@6+Wm%3FcyIm+efdo1$X;j(^cYJu_Ay^OY z&Q{p$>-trcX5w6yija1CgNvLtsMn}StD^json;_Fnw?_}#_0OpeLZ2O!b$d~a3^{& zNAs_exaVlRWyRrBX<5lGWF-}Vct*qO1z*Sk21)B^$U?u(mG5RtV`r`1Uq-~055Ou( zz~}Kj{2fZWK+WFgq%WhN*>xHR_e1Ru1Qf|5_NymFHM@3&s%aTQRHzOZ;0*$}i;&CY zjsZn8Q=A^4UTme5b&gsn71W|Ga4 zh~ASM#L5?OyJ#w?D zcKkbvuH-3uR8npw8v$?OH!(7jIHECta7Fu$_6`Uf|LEOJI8C&!5k}SV1U_%|_tp}? z=i=qB*w{R-YZoEAVnRW?*4q5VNsqF$w)h1eEDeNjmibK#2U}`qe{ps9(o{(9>GSI3 zU2XcC4VmCrO-WGTEqjX!QE>uoweX}16k7aU95arc4m#F+F5)%OfQdBJf?mhfRY z<3Fh}96S3r<`bGYpn$UR7e(>q_S+TA4><%yxKoVqj!Yhl=~!!9+{Ji)_f2ZXVWT=l z@CmqmnDB)yI&tV#Hj4F@>VMlI*CG^&do4)F7+cFrl&J{qZLIwK$|TA6-feZHCa|^X z8;fJP7`Tu?LVyZ#jUF4yP|S7COeUSm-w%WR0G`OJT_{-S3Y#WlCIs_+X0R%J(KJ%# zdC&F2WCd;#6kM=;jmeg6$D^ND zLvRfJQz))vmauR9vc)$A=)3b)&A5VJ?v8NO zRo$$l90WLoH)89uehpGO^z*Qv%tne|@$=z4f{Yj8ek@U!(~cE%CS_BN1jy0_yOd!* zdY#_SQ4%e^2=T;29x$lE1G3yCoGLrkv#R&5dIXkvP;}*Lo8^^{54ZK+po)h>NX#rn z8Pr|VL|4hIpxD9==5^!TOD7j8B4$rR5bjzUs^S?-zA26brlrFoR9Uxx(;%nuRkkz1 z4;j9Fx<5Ocfw{TfSKm;ysks570vh$?Ia+t{0ILZu^dpba&pkRk)a>4aLS&CGGy<@W zJiZDX&VRQnIwg}zDbOv4zG_u4Tm}AreogV`LKE*~0t$ZYR=w_ce(=p{8~J%D0yR+U zw7fS}aho8Qh@4keW2KJLaB@S6N6rRndFvZ-W20j`Cuo(DV8ezM{^sA4v|3d_-xbP^U(gBb?#~Cbxq&%6LL#cNR$do|I1oTU34i7N zK0-)4_5W^3=Z_uMZ?Ko>q|rex#FfYV@&+!}6lw<-Gm|k9yUiaOANc%o*tW%s$yAnB z)$e2Ib1+}jvslqDProy5K}hu)VLHGNhs!D0>$9-F48>tbWI)TNB-rS@YkS(zUy~*Y z6i|?m|J2v@rZu}))g19*I*n7&7{b7(OLdoVuuv=e8`Ypw&kGo*RAh<8PJdd8Fefq7 zE`3xEU_cOFxqTn;Yf?rOM>wed`4!LZCYi+(n8dT6%US+Ai8)cRQYi<-m35^;Wq%R{ zi6`qC`a$RPSG)-d@eoKXJ5q&r7P+E-Oyq8cPRTD(zI{vvc`61gZoj+N`mib^$dS+n z?y~tpV`fjo+Cx;Mo*&YDkeY?eLtxCd`eAP%tjfP0x~BKnJNA+#G%(tgT?=a7i*)%$Hsb0izx_!w#dO9{4Jq`t4a`LX;4$6Y}eZYqtX!RVXg&7vA zz;ilNKTs}7qo?4urOcl%pP5XOw!S>Z8UgSEXvoXk8{7X4ZVL75v70YKig2;wzrun;EPq=#k1WHuCwFA7ZEM;Ej zm5=%Ml8{vlGybh|cxW@#FFu7CFx#`{YG5RZo>GKKWy@*#U96q8hN!4reuzQYm@Dt# zDuF!I09Mj&WR{IcK(yz0oiw8##JUHKm+XIB(ucNMl zFPGJfBV(Y{X|>?GEdZTHEIJz%yb0Wm6cet2-F)>(7Jh7^R)wU$@cDW@UE_C+Y9BS_ zfC#D8;6C2%5?xKWohu&W-QZK} zuVm~Mm)K zA2)IXR=?)NtE1ALI+e1em|Ywx@&Drj+-Ww}&3O&cSpt4qhwSh3KyX*)v5uHOB|$o1 zGN;X7&HddjY{A8Ql+NCA1-afn+|bz0{)Y4U+&jVmSklE#uNN5W@T?U6p+H=rr%hAg z?;C9f#pAT?bj%eO)e}~o-rU-g`tG$wwaqn?-qXM?+IGSvHHzg5xH?r7YIrxhtC8y| z153Z)?>Fq&Vnc4WY(e~s8}YjG=y<;B`~v`c0Ip4->8LHH{D3x8J~ z#`4O&oz|>w27BU6p%iLB=j@|!5Q=qFz6%Gh*9HM163@f8MOr;7I2P=d`%Gx)sIsnA zy{(mxcOn0sazLJ(BK+g zC72U`#)mXsEaJ3r=9ul~<1MTu_5IZ^1shw+8!cBX1jR#t-BrICcokP_IkannmZBh4I zKULP)=&r{?R#the^$#Bd9*08>hRE;nbEZab)STc{s>gouxH@EzT4E?3r(ZvPJvzy? zeI^X%dth<4P{B*X{bTg$_F5Vuc*hCUm_qn^lqg{We39#PtT4Fj*l$VM%H|TdvH=f( z)_qmbJTzaAMIk3+RFDYB2ckpu)big9o*p#e6Tx2{-pSfF%1dhM!itEw{|Y4rFV}mj zVgh+rT^o6hFKQJCr3C8y%>vrcRjt+LGY6pyjPflYr~BH08dzZv&IFylq_HACB;}A; z-N&CcR;Kf&u0%{_GthK(N%%bXU;Mk=zMLL41WQK>rE(-t6xZ+3zPp{KQjh1YFr*|1 zPBK|6<2EfFW)xqtAa5*7)^R@?g3BNw;vW8eWa1>H=b@{yt6A4Th#3x2lApR>MagfW zVVm;wu?Nnn&grI7I^XDnF@T7yz(v|FWh+zQ?dLMS87e%y$-Whi#a=N+fyFsa^)$py~oMi^^PE4-+*23oUk4p^q>8V!g>lGfgGJ8eFBsjVL~tBQIUv|fmGH} zzFw*XSbtw}OH7mUFUpd;{*ZFW=9YQtTZx7(sIs19z_%TG^zP`wEm3Q~y?Vj7ypAi! zM%-+LqM}vJK{4Rxf?W%BFI($1Q)C{M}0Kmj-SE@wxn&Mmci}+UJrn_Mxe|S2!NR%3~M>p(0#uOWU;#om8gIDT5`rr zzphks)wL+CQsaAE1U1(Hv%+qD#}` z)2_Hq*K(7IQ<-ic;oIf+ruGT1vwS17I%8b_eEkj{F`(C;Yt4FFFw37q3}sDa=er67 z7D~WOWQ!HX_saDBj_{yhN%lz#cfH?>uDr8p4ILP`Bdr~nJ9}=HOmY)bTn*wW80HHK zCM-Z8Z*#)jOHp;~Ih=<&k{5(e%NA|?ApH#K^QUH?4CtG{66Y7Q6&UZ^pWNByQX^L= z{nc{dwAj^u@^5B!ZNG{l%tjWeK)|GkaO-6jg#vp2>HJ(`yeblvKm6|XKbqj0IoqBl zsVI;)-{rJ^Me!S1L{y-o`6GpMCRLc2{TheURKQ;!N;y{r;AZI3tw^owZ>oSCg$CmU zi8u#^su|vbVS)Lpo%s6{O}W|iOg(=q)GsGYyBZx6@n;r)cYgBJoAyO-w0XR$eWJ&t)#`Ks`{%=4EuS?D zJq6}<92OQ}6vp2cVHh~1*gHPqS>YBU`(vfs50?AxWa<@CE$@1Sh2NQ4FDt1kL724e? zqI#_BTLah_kdPjE@S#Kw2+3l@qOub98H}0IROnW!?`aTi-AY!9XF8rNnr}fv* z2&qh;%<=Y`s#Hs3;1TyEyl;wg`Qc)d<@v->0rvG|RI5)f01K>N;a8mBf0;&n0$1k#s4-iYf+-(B@3t*)j zS-UJ9QC+%4q#XHR=3f?gu+>o)@%e_@1{O@N+e}IYLP2GbhH0tZn4e1UB(bO*+C0bH zGZL!uvao?iA=N+7qd_Z1>TX&2PiphPaZ;N-RzR0A}& zAiR&0seDpe1r~P=enD;onuOJ5r?1qe_mzf{2`#>3L`3stGtQfiY z(8l{WU;mwTJscw@73JR%VMQP8Gp9XQL%+GxDWcAU5dJH-m^J%Q%2fG6_9ja?dS!lB z0sf1Nm4P;b*Ao-IdfL>8YYxEGN%481D0DNAyJ>|^EHx~rhPM!8Ko}80_2A3;pQNm*jaO<+BFlKXcub4(z`jiTykvwZm0g^+A(Yt7{+AT>**i`jz2)uT}U ztoSN&a4cCdz&R%N1qYr=}2?YA0ZF>U~_W@f0Z$$~~F8B{wE<6acneb*w zh0N8^Rq7*fuy=f~CvhnLW6@r;KK#_F+HMq2fPU+9vE_3_&m>Y!Gf9Glc1!w;WDq>? zkodi+IBuUq4XEC)ntU$Ky82SzsN5=yjM{4Mauww&o6@$0(>PU6t;V&iPhgZw0qJ>R zgQ(Ey3$>vTVPLP|5RhT-9}t)Cml9b@P*4d8zy(aVo+EbyH4TeUnyO+#9gwEul6#fh zxfb>`toM7r$2?Yy1F!ZjF#7@)hJ47_%mCnN%0S9RNZoj zpVC-nV>-{Y&=dkyE+!$B(OhZFm+&m&SH5_=5+YE+5;Nge+j~v9z`PST(i(g0aSJaj z{WApGyV%LG6d4rv|5++W9 zm|+FD?}HcGj^`T~Sg7+eM1H)+JhzfS4IT#1Ra#gBP&0-LxhDJv(7mj2L5EbFr=J`? z4mzSn%!C@J1&puTjlZv=R)G6mtqxu9H`$2EjK?~{?0w=&_4Rq_BMkBNE$T1yd31`C zgV*wK*rc9Bc)s6iz6VdM!qwC__7p<1)@g!2<{^}5WjhRN2vCts0eA7%Ju{k0!gMG6 zWd8DoE~hDF#kCD@GtI^VJPl0evcVXLX$VTA4JwZq9AtP}7U z1BvlBx=L@!-rxSE?Ndcob~tJ#0|#`i_*V)c^>{*xUd8*nH@$&Pl0@v?3C*p>0$waX$3x(DLOjx8ocrU$u#qSg6&}t} z=s4z?5E_(1<%HU4gWI7k0odKHDJG8iS#)h73QfhK2#oyo!DNL7j030XIJ`1p(oamS zY$C_0vU0r#;d_usvEvsAmw>R|Ck$rl@dM4oMCCZT^%0c(Y}rhYX&d~2^YUH6QYb?9 zSI1JH(OW;k4<0D&=Xh9E0B`fo%!pfmu_0knK?bu zSd4g{bhqFAepE81JjA;*mwwP@uMwh;Cq2y+=JL{U`XTM2G_Bp703)RDi1-yoQmp|4 zvT9e?9)A{l!tm6R-}2xY^oX+FR=IE=fv&Y;#ixH9J08qJfCbD6*pzp!+kvl(sCxrL z7!H?%7dP)*y^+E6B5JnkkDh;Es}`)#I#f^PzP!7-@;G$PUqG`Pn>w^={W&SC0I*Q~ z-P`Aco=N@J*ro8$#<2o_g;w(cAk*V2vYPGCk-`lWOG1NoD+8)ZQ!C@YT35TD6($Bf z-}?j4?;~;VdDne+B&rglv?mx$=Dqq!kjRJB=CU_~I=Tk;vqG+L+t6_?&iw^*T&~@c z8j4kuHnZ9!Qo!AwE?jyWhp(KOs-fB^9zR9PyT zmV`-?S;}3@(Ur^5o#WQyqz^png1h`E#Tr|>j2Cn$qO zqC1k~)t6W7v|HYcUS6*qNiXih9v3-qaJ;T)SEe-c(5yMVo7;AyUBU@U|B6J1-*@MHSn zOzC@ZR}Yq-?MO9QnSVkIwXX3QV`dtVO}!siF|VtcelVOtHJAF#qoUxh{N?(lMVu|*LT8nb=(DOO7JqA##TsZo$F5et11ImKCjS#J@tY&qL3VO~dEUVeFLYO&90 zV}75-_og`hE+~)bOx%du3VNN20QmTc=@0r`9N$hO%NXPnM2j)B>_XZOvnZ>^U2-m+9vB z=?57{-~H3W>d=Y9Dd=exYyU@=(uwk)qouF*)KNTySI(NFP73k?Km4LM42-?QFLlb4 z<&{47`hgMq_qO(Um>>)I&lh~^S&JNX!aCW?Vcq7WPr}xYQUSG%O88;1De}(?5q0tX zCz**8x+|0O@%y)`{e+tjV~hJ{56l`EJ%d`b^C=!ei&bIwYPN!dQE$8CuNhTYmShaI zfL|3IVeShGk`!wvviy5ePcugzqzBSgzo#btfRseJoh&T{G%#GqkZ#{9tOQe#=lhbO-V0ENhzJ=Gtdq(x@*CK;rC6S1XcDWbp zb9zuTNd(SlA2mN=I;4r_AN!$6$N@=KOh&%rTr}6)c}PF?)~>?^>5Ie>dk!V>QD*gX z-daUtV%1f_5sri_8VN2F*qI?nzRa*Ru0gNk&_>8QW;@~BwYCnmQ*N~@GT=&aWv3M0 zHI2rGLF1~v#iON~ydwE%v3eoPzb5rGa-^ZH*d;^|v~p=P z``1ACHOt@Tpk$>I+p29~d{m(kFftNrhAdTCa#ai|l$CJ08&8wKyxk@ZM$3&Zz&y^L zT+*Hj2S2gh7{4R%UJ@3J;kd@d_rbz{>I0k5js@H?tl-_EqZ7Gz1_%V{^eH&^302R* z9+-_$6Oy>C8IDz!!mr({Mx_DzT*>;Xb?$eS4E^BV(NCGyA<+fGv!Htv+i0zL7QT1i z-t>_|C@JGI>fro4BdqLn8LB)WY1gGAXWTZ}z!Rh-oT7f6!@Ckv-4 zj9vIUD9d2uKVMgJoyLgicW^GCj6`VhQ4FhYQ@)+2{nVXnP0HN*>lK0~VnvF0QJ~&> z?L8wAwFe+SCo|0_@ZlZdhfy>5biOzBo^35BwY(=22bi8+EV0N^eU($EEMBWu?cilF zg6mFEf3*As$F#QRZQuML$I#B&T?FKT@vC(D*+JLOEkY)HUjp6)6N}%j;BVHt)|LiO ztzgS$1XGjn1IoK1OyK2qb&Z*!H zuHJhvR0(2IaDAyI$tuE4Nj^`QaM*9HxKMZSba;^P@wnQ!`<^BMH?kzVB@IPI@VXbP zLmW*Fy@d)TZ%R3ajY*&3)hhaCD06F@^!k?6TFH7$$xJ?2m7O6CAe^EtUu$(rW6gZl z9z6aWw(XKq7*ghsqDT5CX-{`+#M>2(Z9q}1cR1#P{*G56F%2J?7)JgkNB_G~aa6e~ z0USD;6?#I!qg6_QvUjU^{=xaX)7eN<$kIUMrNi8GkPBk!>$R=urYpd7fwqBvwNZ`u zV*F3cp*J_W47_pZ{;X%$T4{c^uvOC_ji}g0WoiqX!U!Y3?R%}+63D)GB`IlHHQD#R z7EDyV)mECnb>RF{CX7b}YRjQ_+mgDvKV)Xxiv>)W_zC$A>T%!qc;bVo9fG5xy!9@T zLm;Ez9}Pq?Xb=%hJ~5;GNO98Pv9p5AeW(zSBIFR~M*F0BSTwolmBOrB`PczIJL3{9 z8)q#7yDilEgiz;!ox4Xt=kwlWJLujvrf~Lx0|sczk(57z#HR{4!)ABoceNUg@b(%QMpmsk7 zlrElTs1ouS+(QUUA|1Pl7UOY-dTfPLH;#nWA#PWn*Ll==dv!Kr*CYpH^5goSuMZ5R zv<;X`jC53kjw7I$gknZStB{MKt8c)41J%!A>T0~FVr0HOu2v$RwvvZvXgD?Zo_*(_ zUM0U+izM8g(8>^WI3sa-Mmc9ir^sg=B4f>98nmR`+)^N&xHz&zX#TC6Yqj(mGAS9E zPvXmSRfTsPLKZaoX=bfT#vwxvI zsLj#CJzNeSq0J=byTrGzjhW)311STtF}5Ns&gK1mpQpj#?8`O7XyD*6BUxt1lwq`a zE94-5ymje<>5QkX4GNN(7F35lkdJJ=e$lX}m|>P3kXTnodwzc;f-%LuIx@3bSj+xE zpA|baeLE7`8&HgZ)tt<@HQMfYwS05(?cTqu&ge(%yBawi-~XL_KAl-FYwgtQ{5##} z{iXw!LY9PE8LSjWOQyjrnIMPSf)gcP-jd2nm4iyn89(O3QjX)6(hSp4bF;t%l2Rc% ze1yO8Tzuv5M-T3$Ko2>JQYQlbj@C=H^r`>R^a5iFRzv>$9u+Bx zqmYONgs)5vAMw}MsJ{G|LDtRGH+YXDZ*Gh@c#oL=0w?-o2oGb?wF*H*haWZxkP>yO zs;Y{1M_$@=1A^f_d##p|74&?cxZ0KFr!v?cgaBb>VRFH-rYcs7|FV<2mH!IP;uRW;i)Vbw{c45Dw>H%C5G? zpsCxW-_@a+IlVA zNb}gknGxW?1c`O-#ExB{`iMG*fggpstG({3L#|3gY2u+)~qHYP;Itg^l1F^ms1>!IQpE;Y zTllW^^P&8Jk5;8ggc<|G+|w}wg_;jdk{(7h@Bm8w8x=cE$Js9B&UJuw&m z-e-lPy(blC=f4W#+EaUZ4nbz_7!i`!kJeesVk6?*d?%@qJ2OD0A?I(qzUsyznKcII zcu7!hcVEyzp4PpHV3^BuaBglzc0CFgMtw9R8t0M}xpz_DL=M0AU~9%dmG+;#FB+EI z#o~96QS~DYwUiWeHPti?*h&}Jhe$DFPIPe>dc3|VICoadSkKCwpF(mGtMxo==82Ky z3ecm%U#EzYsv?rENDDLkS2J)BG232Cj-dr|D{2G8Q136BGc{?e>hO%yA`kB1mCj+xBr4R0(y1a}LX#0$toSi~?X0>L(~m?wyS=^n7$6)a zvcP{92l_lLBi0yNwYI@9MS3I)w}D^qDr)U4QN~qaa{6Y;yohLnq=}Rx(Ew&l#2w)l z*0&xb#(sW*btyeR^xWskYwR|Jmp9nVBXKTqgu6nYG*yPRex8PAqNu;f`FmXgV>nZ(d@caO_vv0k=w4OpnF1;IWI z7gPxPu@T3gsZv0Btlv;RD?;`vZ1R{PEh7*_5i#pc+LUo9foLJhBt$YPLdaZsb<8Ib zoDmxhIn0%5?Hh0+@JUS+yFm{6YBiydB|4A8=&LyyyHoCsG9k?@whpW*Z-ZInG}a{% z38*?W%3Z9~LeLzE{c>72{i4XUMuw1aHES>=#|Od@0McgHy}*x{1#OCk~a^cZ_8}XS!_;p z2r&ydV4mn$+K>9&ehU49&DlpC&XW5NCq4n&8*8JuDIuE_lsJ80*qGl~f+60g0S>|K z5>QZ?{nKVKdD?g;B;gM<<7i38WnWpIJc^QkXuXb11|l{*nw=8iVn$!PHmA4d-a#8G zz-#B$&SQ6?)r{l3b_oSV%3k3t%K zqF8a#TJDUTq*u<1k>#g>1Z=L?6c~w4%H{3kEut0oBY`#3lJ>KKuW*2kE03~$hBg%$ zB`TG5A_u%!Az^=3Mgsz~j+JPs&qomk|1zqJ#-j27$q|Eo|8`cpf%X-<=DN~02o9fC zm#tg~FC!N0cE>~@xNr$Lp;HP+hOzSBL}{=Gvg+=`O{&RfXUbm+h*XO-l%W5|1!zQF z*z&Ww%>Mq38Q3ZbVNlJhN&H1uX0^ezuDQ}J?vvf-$aA--q~wSHd2uGo+YYF>xDn_| z@<;E~5PM;)!Q&f6Z`1NHb~pWk-k{C~O?q-oOiJ6$Pgd1Y#r9-Wl+ zh$>MpWmXaY+6C+cs!gcZ^L2{3fv`m3AY(k;UR{$O4;bYNoA~8IU`A=01L~(Sn(Xtj zj8PRR7CDz$w=yO$Yi&Q+J8+Sg)z(^q#C@7+CQ|?TZ%+!lZbE@3ub9`R;tWV7zQ>51 z&7f}bXL~zLO7bPvF&h1JYPsxe0!jQ$O&h>RtqfzIQ!+`T*Yv+SPJJy7&0HXyJCdPE z_iud&5$Xw?ODuXOzobkYMf^x@IgM=vx_9tOa{XuCBji^o-!LA-wosO?M_~JJqL>J3 z{l2gCejFx8o)ZZTa9*hzzrUWY9fsrZE~Gu)zE5tbO`RFf^>y;wQOfMF^1RqIl*&eB zTX~JHEGunhqVZNw?vptTMliS9Vav{=2Jj1LJdAi6`vaV8xUV_?dX|@%Y-mS@?MP*u%UrHyf~` z18maWb^{tiU#e%as`Bvlo!+1m1sOg z55T^Wr_2Vf%?ofdbN6>QK!ea7$O_GDH8)-F;~nQYYRY5nKMs5URc|ZKkJceOzQfsT zJR{lVKW6?FnBViD3W?JM-+zsVY@mpZ@i^M%360)=4AP6`)0VX zgQ=`eueVkU5la}bo$5(KTuZcJK1J$Td9S*p?KYyD#jv}g&Tng`-=_x^4Dty=FB3fx z!_|E?^u33*kqm7Jw>ufO@PT-Bq@ke+A$c_48Qg(C5-1aY4ELja=E~z3q}2xx<$to& zGKNN@NtY@EkR*WP_80JCLUKHGjT@elfdPZPRtbZX4?Ys7H?Ac;wHM+$lI)PDyQ-eo z&ivS(-b*e&ZI%4C01_1BdJ0md%5TM~TZaLseL#f*m~46>66da<?TdgGPan3s>=--Y$Y6FL|VLF#H-z$L7c zPeLPg{6CCk{9FgtMb~BwFJMqZ>U zL+W@jo`F2z73!;*X^uL|_znjId?N(sgZ`u|stg2tB)9wsc)(~1%-7E&d>V+1#PGE+ z)zX8Iws-&2SIq<27J#eJg*gPD%H%M5^lTF6XW%g(NPFVRL5LUte+NfH+nE^eUOEH+ z%n||ma6Whkb#>CFVwr$&) z*w(~OCf3BZZR_s$Tlc&7?>T$z-CcO9y1JfjHZ!f=^1|lta_U%15ql+CzFXk$V1}bx zrueC2#cd%T1n?kCx*6{@0?SfLn)O(foE~iShiZv4b@Yi1PQSwh2`A^Wwnoz)`z?%W zr4Xskxu}tK+I$b%}P~h-vlq=LVQAVrG7BZic$r^9bKUEOvBgXM;%AV4Xtn z#*Suj9Tiq96KTJALptF>3dVK=x6{raz{tMy9R5q#dL(>?Rr7Mf3=EHnTO}R1B+}^9 zC5DENgwM>(@^5M?{5BXFUBzZl>F%>(m8G|NyO~9_Fn`@gc+J%*zUG?|Fzwku%z+T> zOCBER$@uqW+(^?qr9Uh(qU1qn#@1`^7BvmVLZd7?8 z(dE0r`ba$>IjwBh!NemvD>L~x8ENjD!{#O6n9!cco|_kSYuA6e6D6sNboVyVYhnSm z3iafw1szE?8W)JXa)ft9P`Iuc^8j8xQJh0>29KYpdoOQZ*?f+e68Qwm4ot7`y}Vwv zV7Nqf4BrhFc9I_26E*+nkhT2E@4~9lL%98BofzK4bJ4j1Z{zx}$N7RZpo?7YdSk>1 zd#()U)uV#nG10Xvg7eKcY5C6t8$J^BI{{JG$0**F-D>k*HUHKnH0Lv~M@!#xi@x9V z7G++0bLQZET_kK*k{4blNE^97YdQ5d8QCVuFvI+W?GWYSI{fQ_*p~?Z)o!1+UT)lA z(Ejp)Md4dCEbTWk3`9@AFL~0XpS#e6^PQ4Z&`Cc6`r{Y#GWx$KbP&Y%IX|VdlEnrO zw1`ws{X7z@hwtioXR|a>6pC+I0*7Yx*!`o{2lx&xPR1pHqO#ywE0kYqPvn`nRA!24fOfI~miZ=6(6Q9cLve@v(W#xC*H zSn|Bwh9!d&Afc5$H$6!3aFBKuQ_jiY&eRtT!nN$UF(&V~g>Ui`Sxro)>&BU^1edmc z?pyYkb?FXCyqDL*`d^hl%elIJYiqrHZl6aFQVyh3#th~eBegRfcmDkRUdTIlIH?7r z2kj78&|g?%q7%j%V^t|099Lz9EK>b%&Jmray=$pwVQY*tK^(T3$NetBAQS}?aD<&HV*FQ%zlO&>`qkmGMJZM|3*~qM76IdX4Y<9K4X|pnWYS&FV7Q>qko`W8-LKOv zzTglmFQ1OHSIY0W$l$zGb*?S=*-6{W$aHhBR4xD3KlVVJ9dXcNp+*?~l6y=a@$VvkgFO9qDOq_SDYf1gkkxW`zx18u{lql8d|#Pc zhvNqe%_CQ?&nj*!%&C=1js7-#m9}pMd&S<70($a>id9Es`pWz1;&B;s zxkXy{*MS#QO#QDjr0oZDOIvAa?)-(5!^z+9=&WTK3CWHkg$s4*RhhT~!%KEQ_m5+} z&>|r4^#x;Vx8|i-dlQus3i}chXG!gvzYQ;a<1*>BD#1gGCHe4nbDqb}WJL@c2oPQQ zw)twjInhR(p1pU5MZiA95qW&G_ivSlOG}cNPyUnt$*EFd&9hf)75)~TwPd=Pzig5jPoIuZfXW*YD2(@Dl>b#}NJOAYgj9qC0qbs2YoA0!vacYJ>uia3uUd^DDz%50Dn<&BT zv5&LJGNPi3)HI{%(z*GG!}>>>ALh=QS-`$c;9SAIPDNAO<8)SkBLT}Mh4nd&wbuA> zqd_z1A2_f-Xka!{BT8v~l#jV-JTHUaiqw}cEtcvmxj-q7CtDka%K6RgUpBto*nL)G z@kv3xK8b_5P=SG&E&g;iPVi8EF?$28;09f%&JEjNieq&9A+pr)naV3@J|4rFeZoh3 z9Q5ABsP(EGLTde9Myd|8M(q3!VmR==Pp0={QK*@j`Xu+L8`<+H-@1`!J_Q}KbK~Ca z;=y&EK}bkaR^yV?+Ohqwj?#JTFyF#35`QJTU2(5zUniCUBBbY|jjHx`Mj6FS^M|fhEeI3fgr1^UCd-u;6 zZ$z6`ImeNxuv`w6rBeDq66hE{WNHXhX7uk z_n*t}hYsD6JooUd-w>~jttTqV26Lxw2qDulYTL-T9;dc|QqnwtS6K47(+@}OGaK!! z-$(=YNAK~maQH3eMYB?1HXv^jiSJRNlY_(yNsv8pT&D^Q1#%C&ZoE~Mo7M&4-(;Oz zKF^`CjQK3Bs?;?Yc7{6;PmJVlA|h?}G?PSrC&<_;3jI<#>_j1>K{F#?w>e~AT1S~* zM{$q4jnpF){-t?jgJi>oiwMVlY=;R%9OGk{YprTk+6DVI`fB;Y*HV38wCIb zG4tErL|zveK(^6+7`vLpQt`GKNS-2;OWuq`%)?n7JM%!CST7=|t-^(+w_$B2+zjbmYBje__FGulQyibA+X^qiIRGd4*Cd$KK~;e4DS~@<`)f3LL)4Wmu$3M$eir*qtZV< zEo1To`t9^{sxzf(S+c^c(;yHax^Q+sCAect*{cO6^-uEg#4Vd~LYV&L$5IT+;!w0x zly|EZrdZy|qoWt0qjWL>hkeB|o0B)-!Y>V&)7jC`GM1N@H*0>&S2X9zCgfUg`PvVu zII&LJ=7r)9998DdPe`up3!Vv2pib$Zy{pm7lB%iCCgd()LVkq^-3})aGM?`CWaD(V z>XsZR=CIrt^>q?QxR91uje93RW0Ar-WruZXebE!RBQtTQn|S z?-(Ldq^N4HilK!tIruSv@+9UlH5AoW;(&|-^nZedw(8-4XXFi zu<0(dnT;ALg7fd+2sQVfs3_{x&qzP6ujUg2{sOmS!|-8;V)Yx)N`fhKEc7gf9|#V{6~TL6dm=F`5lqU%46vOkZU0A5?k$tKH4TwAHO2 z=2A&z%xOR+0c;JGvUZxl=7T5YFy;2H65IP=p2Rlu3WpUk6ry|8R7!>Fg3rb2M zVIK0JlHha*(VOq+ob>*W&XK&f1wIRnkH;H`_M~6k{hbF0`87Dy=d4uBEtx5v^;1n8 z?(`;?Q?P~VV$5NEZLzaP6jvI1lTVemezv%E$^&j3h=F;xl^E5tl<^w*YMXgzPC(5V zf#vt8WlH4I3G;s+1!3lw<(S-%GO~WzuV@=&yLTGpstS!OkUK0&2V3~ZBtSY!RmgJvBR`);wcG+%2)H-d0AVoBcs9ck>8F4% zt9X=V%wIhOP(av+sZ&|9B)|s^ZqBhSupt?mKQ>I(=eBwCR7|o;Plj0Sks&@fhi_^- zB>8Ll5Sc8>BARMcqE!Upbe|6pqUIG)Q zC6Bqo97Kf>8~{nU_B!jH!n#VLVED|t1bM*3mZZ+R8?M&FA=i)y?j|8q#rBmj^zW3{ zk5~v>6wo7!ZVc{nhTBEVScl-e`tMZsG`{-CTL|^!E$`L> z+ZV_ja;M|3HWEJh_-B@20mFZPsIu<0ipv+Q6*%w41&V6j=abki-RL&(PS*!G|6(6f z`LHfu^-zS$AclsH&xcGv6%-P-afQLjAww9Ba&37;Gk+naq@IWlA{GSlRR6532>ya) z9OxRXmqnN&2)XM;<|n*jWQ8?~b*Y}Vrr}cF(GsDIGskL0qJrkbk#ik1f*EO~60s9P zhZ4C`;>4q9(&EG<<4czzO}u!M+ttl#Fm&6GO`$5q^5Fr>ho5|UP6S!hP)P?|2YVAZ1_O$AqD`q zkf#lavA~_ONiEz0(7RrqUb?TxI~#ZZql(eo=r*@eHA}pGSd7J5oCE>IoDOas%^0br za5X++A1(pxy)pd?8$XmaYwWs2X=C&oZQqJSL0YhqjuZ~GEv;zeud8C%~8_ZN>~9Q+j|dzqu&@7lF>YE#~`lr9vp+) zjAv+xZa7E>8N`|4)$^kzal+BB^40g&GJM}*>6$a3bA3a4xryC1=D$({F zy{)lBTf< z@U~Fa1=v&YiT_96e=@Z%2)zv9apG24LOuYU0x68T8KlBOjH^`@7W2Z5K?qy9Rt=Ad zuUYDniqW8OUBO1@3}!oM*#yccUb1w3J0NVb8DPBEwHeSYZPWtlV4?XA<}`Sh$7h(w zaKgw;?pz&7gex@!$5~_eN_}m+ul=E+yW(70>~g}lWQreke~7`z+=(&6D{ELiSshfw z;YeUA>`Zf~gY9MkdMz1P3M#jFzHr?3A|QOcHgrQWHdd|SoAxa`iqd4wHUIBu+Q2hx zk^QdN3fqZF{&&uHkZ)-;RMebQKT+A3Z@Y{4PjxvUgi!*<{vVsRE*Bv54yxSaGcscf zQDg-8fOS4N&VhUMxsr8uV161M(4a%W(nGtRV7`Y5`pCYiaTm+B!C|13RaKCo-~P+F ztj@kn+M@u-!T^Qv=jx(TJ~EeeU3FSkjy!wOdR|pzWz!4h1uPITp?GvKckV1U@ut-& zRL3{w{!I_N^YNFSH{n?OVXZ$-wBNZ@geJX{tb1YRODwNa(m09or0D6;vzsHZGxEc&^UTjHJlnhaW1T`jh=cA%2SfdB55=iX zh~pOmKfl7xN$Bt%!QJ@2Gu-37+tX8DiFt`VmC2q>D1yelQT}`1`V?BErY}hm``NedAi_J&jY*cM&>hO zq}HZ(vmGF42!Gf+-sC6ftc}k%M#jA|*xlGpU5U;ckiPZ$=UfE$; zJ#|L~5o=(II#O?0qe@{UH?7q}e{#s;zt8s(1Ef3wz?dzclvjMaAZb>sU9J0DEQeTD6)RfsuO$M(r%mW3Zrh(z&}EX@wd$8I zPSHYE&8A7(Po6)jAb}KOKCD&b^No<>ED04(>zWR`$Vn0r#raYWRRPoc<( z0$63cKGSbR-%3Fg+;dSwawzRV7m;`%d6|{#-@7mkumXrBm&>HOC^QMqcIATv*?JJV zQCqt|^hB`%APfrnf4inPw&25vUq3fYC_}h9RG52J?*WjJ#H1DBv~a6+hC(K?e|j7< z4T7pUq{fhp;aNs9oX5o|cnoul!YJb1R+OJ)S1v1=%SS2|RA|ydU-THh(o-J!(W3eN z@6FM+_W2?^!yRRxGDxiB^6|(Gs@+#e@j_)Y|F`K(aV1$?(5-pHEs1X9nSECeP+`R} z#7I#RJ%OP23zEkNdsM@m?|MJ!H6(8X0+6}YhjBU1 z*#IBF`E~r|q1N=yzs#eoYqtKWJXbsVGeX4g!Pcq};j@{n4IM_gt4V9*;U-!TI;+;%?C7ObogCHAuI9VT8E8N1dLoewnwRo!eR< zjStZjXv0};pCefAr%Mj32(V>4If6FwIC5%LK8~yx>}0?+{*;!fVyB56rw_iquw5ni zlK;m=+887iuqI%@1mM6%Dyc}TAY}k@ilT|75hx#I$gT!x=y!IvHBG93fRVc(L-cGf zWh~o5AWJIgnjzei&QZx3@Btk`$6`}dy(00JH_2}c7q>K8*BbZ5Yo7L%dIVP6?h)L2 z{~mPI-nku|v7I1VfS~7l@^kvxX}4>bpOdb!TOsKh37@gPG|Q?@NUERr9~Im+ZdEp0 zV6wMdu5Q6%^GT>w!UcCPU}{sj5E8&$$yqv;oSOTPbwbOsSeg8(Jb|ICwne&W4sO+7^7m^-$& zeqXFa1eRU|16=K!oVa13`1m}kc<7jeuvZYM+9M326VWR5JtUz?0v5cS<6wc-iZBpHoG`! z7C*pCT{yhkNU9m(ple*|mcdk*q0|rZ--3t}3*!A~30o%b{86WGCGANosR1bs*$MNl zz_(jirjW`V3@bM6x_7HajfjbQmYJ+);|UZ!B`*O{E#P8jwQ?7q_?>8;4!>6W9!R}llc`jm8==!Kp zv5*rSlUc5G!7zAisA1q@&>;+XS0>IGX8#HH%~2ju-O=EU^C^XK^%I5QGTlE@w=SH{ zl`Jc>(d23?ZU&{d4nC!zM-3t83m-${BH)QKoFy2qH0k29k4@v^8zCqQfJH$^9&!*+ zu|>i32Ts!HCd@3Nt$QQukrnV`Jr9NZCh~C~J4v{9PSpDXCak#TO#$QqE4I#tWaq9P zA9#omJIBecHuqe@{~1D1w8RJU*_-oWtyap|a*pOw85^JKC_7A7A&bPk#tL0^LV0nf z{2q;v=+VHK1$wC}<`xxohnDSP2K}Dq0DpR)t-uZ;8>Sfb(t4MsCvUB>oa|9OhLNz- zmj!%0@99Y>0mf@@Kfw9VOXKFL`k3l6)U@dePH`54Dj;g+uPsp87M(+s;X_kN$^9yM za2|+*8w4VLb(u-=5jCpHq>jFk_AZq(1zxu*xVDHMcbk%_bQi@7W!t@Pky##=b+sW2 zz7WE9hy>nl+c%=2E%0o8C{Q;j4b;)%`S~*-<>bR8IR4@7kPj}&zwuTxzL}K1t_*2! z6a2=jd9fn0?(V2YV%@LFT&c@=>9ce{NOV6-vrMpe5^A?5J@p?$a6>Thb11)QAqTM% zITY$E=M7kqHWQ|sHi^cUrZf9ICS_he7_De88Jz9X4q$`dVP+-d_}&d67E5FByIP;G zx8ayHmnj$dIc%8({s)GQ;&I9T#u zrgO*{zDgA1jHd+){j5EDLO?ArC{c=JYVF}LAfqQUA*cJ|!v|QrHyi7V+Qq8YW9%bV(9^`F9$0pa`jr|AYE31Y^j2o<2_SpklHMz1HT) zNqIbVxt%z_W~Njw)@UE??mBW%P;jvYPai=$a&Zj21s4;hsm@GC-Z}!C!_GqbAh&^& zrnQ<~P-@s=NN^$j?3L=-++M)WGjIf&%G91%9Ko8~$~`bg!HXAI-wHfl+nxRpv8T%g zPPSgxD7&6|oTzJ%Zz>p=v|^kTA&|5-ecMc2d){P6_Hy3~`AKxx}p<0yWp_k12&abzK0_W3WjIT@BF)}`Y8-T2%Id%DDM zzW*LRxC{RFWM*vIn`0;VRlU|6ftMBg?(w|h$FHtAy47>Fv@SZi~RAiYa<=NSjXaTI}F z1l-=wrwf(4B||3DbbgO*M~hWDw7C{j)oDB z?D}XlyQ8F^AAY@??a|i0Kfc-34Os2b8qjkgzyqSq=5di;pErM@nJOs)W?3g*7)m_S z@Q-DZm6{qiX4Ueg{edx1j&7Xya(HmT=3=!eZW3!w!XLWmd+DOID#(uz-la*aRtZMj zZfy(rDF?M-sRK=kjYO96_}k?eY&blcjP8sqVx z$(TOs=;%nhb3fqQJm+>Al1sNgz5nls1|pgHV`q{4>$j_~j;Azzmf5+Uja%{a3eG7b z(n!Rzi}IK)Mkj`&8%#zW;}_>`t7pffGsG5gL|7baZsYMPo-sCa9Bq)Pj(-X%%rFE_YYamOvurA);{Eu1(5u040+?9B6FnEwrM z`o1Vf!s(zvPXNRKwH{#X10J+J9!zZh7E3@-3Jc|?^LgoYrA063_@qU&fGF$CG(kI!&(Fbt@V3)E6;Gt3dCVfC$}l#b@p6x zm+Ng!R!jW>Pi@@Sg@Ak5m#in38_@dseZ}$`ws!rWU+fAw!27jv;V+H@>aklR}2jZTEzXhH#+qdOC*;8_S!q?w)cb?eBN< zZ9{`T!=~z@KXl%B#k#wNZ|;0>JwNA0hS=y(2Z1M6Zyn~(n%wL#W5h;CeS3LvYk%L) z4?>2xc(J&;Ng8c5otQsymKu&-@qSJ!<*L42f3oPQR_JU!qq*WC8i9ujL#ZdX-jrzk z?6P|SiYgLQJC9n(fPRp=d>fv1BBacW?6L0zGTDz}utoKVmm&WGM{pm5s*>u-(m{){ zAaJ7{b^|Aaho#l4FI#5COfJNj?;){Kny zae%|vH9}X_YoPavScE{LZ~6F2})!Lg6BO0d-IW%Wb{^aP<-9)ndY``u0BZ@LIv*F|d);@lc&qd^1<1OgS`d=Q+t zSK|^+s>B;(u~7L^w5UNfrPSUl5X{5o3^-CU3H+BkCZO9KDlW0WC|?nV4%$eHm9vZ= zu?TQ(pmQm#-w{GoM8lgw*3HdeZ5zq~oEslm?7ySs+;mjbzlMR*YrK$%Kk{QdzZfV^ zBx$6Vwsuof(`r{3L0omUO>Xn_uL~7kYn#eN%@)#vT_H%wND&;*L_7HZur?f!Ns9h=^1=z1urR z!CWri=s_bf32~H&zw!SRkIyq2ZdoSn(`CO`3C`i)*7sVle7*R@(b!kp^@{!WuTrEl5jaOal)R#yvde)>P@Y@b}OeR+Gmo@eZOxeXfC zr-dEqhaqiDPWy~46^3$2?0xVg=Ua7h&6xig+Pke}?D4#-=A^BlVb_L*05d%6Y3~1u zjZr1?>uGz@C-Q5(d65fOsqok-PJ_F>d&@OkNi5D(L_*Z}e!#%Tfgi5w=WBEz+x50A z`A(iUV;&)T+ZRRz$gInnW4Ekt<+ZljuKVE-7=R_8R7@=sU{dX!C6BvEa*{Amaj=;< z*vZGN;yK7h-SE7+D*vkN>(y8`MVV{j= zAzLb3u zWEEgIY#aSHp4OQ#*KBzZ8vcsxMuQ5sQ)@NELeI_pCNed;H*5$E>BizQ zSfQGUn1`k3ISO<;bk|H}%Rb)S={FlwS7mIM&BM@ObdLej_;?*>yv7j``SHuhsOj;$ zfsfPfJq}k0);d^j#g_+L8Zm0b+tY{3{fJ>zP|%RRsFnH0m08}S#po#Tb4s>LEF*HS zrf5RXC^pHV46PHMHvAg963MSW7zH8ejQkz^Sl#CLwU3GUkIxzpt}nb=u~|^;gx%$ix`L{9KnT+P7VSTDsIEfbgGg8{74V;pAn91< z@sK^?>lc?6eI5?5FjP~_*?55Y9;>*3LKQScui6)CCOLs2AwERhu?0pI58d?R+GM|c zR_#b<(5f?%+!=b`MZ3yR8=4@7CBWiA{JDY%G!2;rn}KE0ucA{$az)N*H751|Z3qP? zRM=iY*BiZN6seZB&-M=`^dwoly={oBkOm95UP#ji^gj+J}kcT75hAMgt76l^anqmQR(TItfigwl;yy zUedj!^GC1}$+!`XyLlBI2DiLmb^jR<%CRD~IRgcFuH8R=HL_&?^!4agG7UwB;d@2F zsStX9jlW}?LFqp_$<^kJKGZ`;)vvbA>Z@G%tPn)Blhiytz3LVpFk7UnL-RVy}LOEO6*iFku0y6{d&UaFE=KMek76R)24oV6x ze#iU1@E7xun$kKsrZ1o=q{I>X_Z%q=*+{T9s!{jPMsAj`4K~r9de~e-Pg4nw(P_l1 ziflEE>*qdGd+o|qGdoFeIB+Hs5K?f{aX!X3+EhRGdbt$FeP-}-dQz<5L1U;a*JS%m z_{Q5VV)t#8+~2NeBLqE?M74^Hb-K5$q}!1^XFR}*3TH_>3;6>2L1fW^Qh~}7fHsm9FP(n27~9dyo6hPVXdJp${&t~GM<9LPg?S~(;LH! zVNq&rMa}$dg0mFfIC5tU{z1P+dSNJynIaM*k-q>91RECZrVEj&{S~GLqHDEn8wzlL>{w>l{69*ismmasSLPy5bY&%oAqcoU6I% zNJZ@-^mNY8IofVHwDhb_WH(25&P)=RNNt=L3PaiqqrW6S#Qv3dX7N?Q@z-J-p-JK^LAo?|#KC;E1)^fOOT9=6?{Uyyu^K9PPGJWlCy z?mU1TfgGuBF-&-~rq~!N31R%XDL#Dpa-AM*7ijN=v&p`(l#VO2yT>(O|9}Obz|3O; z0U3d^Y5P8k2wcQTdv1G)EI+X&YMZZ>a?Hc*2kk&vYUL(;l|ch35jgZqSwFpbx3LYm z?~_ASaX2;oqG)Xxz1NfKB%_?;vAKz^t`C%n%)gWppnsYRXJ4qg~OFX2o*;|5^3Jx=o1JZqA`ydG9>1lmCTUk@sMw*{Ox2Kuw-WR_ zr&W@*jQ*-ekRr6xT1?~@zZ_Nk{JcxOSJtfzd~t(-I!gvRK1OCDvukKl<


_dhWQ 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

_LMq8`xIRBc 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 literal 0 HcmV?d00001 diff --git a/doc/api/liblttng-ctl/images/plumbing.png b/doc/api/liblttng-ctl/images/plumbing.png new file mode 100644 index 0000000000000000000000000000000000000000..00797e5743aeb4b11ba315951770e70d19a84f89 GIT binary patch literal 72584 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 z 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

D?WOjWl0#HYtjW}R4Qv(NIXM0hs9DB;;( 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 z

C<$9-%}ruoc<*i>s9OHOUon|fExd>tr>pJ2m0uPOV^G40%y5t53snApbK$b>0f z#kx|T9{$;{Hcua755ESObBHq&^sUd7tLn0$6v%Z@__s$#qfjb{CCYA+PT>sJz$#r2 zzD?8y(k+R!&>^*l;e9c$r9evE8}op!IS$E5$DJt#){~GQ$nS3bKzh9n?)%oWj`XmO zbc-MqCW;{FcnbCDSR}NXAoVul**N*3hfEdOFBdMI*m--ar>k_fJ%Qkidi+9W9uZuO5W=?HbRIqz zdp~&$*OVd&!yLs=7K2nhb}q~MaPcuB%fxKPjs;=5g=p+qx6HGSdE$;NTvw4UwU8Iv z-mmY8BnfUhdF-t7ID$=x>#x;_Vkl8^NDUih%nc<|w=EKcf0?eaYi{6S#XalqzOcT?)4986w z-8o(6o#QhyRt95;0jMVGd)@=zbvwYexra1~AK~q-a}3g=&6peXI@F7Rojy7``t7HQ zZhR5XtNpIWv99wT6TnKcIBBM#BaA(6S3^fJj+?oIWWjleL%VXqHJ`Ray)fIU{mx`= zgFYTh=Z(_B2@_(H5fJO#mrA>}hOlYlym8vP<##x`-$SxdTIqi9SjZ&CtXK8sz7}|3) zv99T7kAm*B@Yem&(?@c}0maq%U-rc8o6O%mpU`Zm#;if}%Nu7<+U;yTc}efX2j=-- z)(tY6OYx~zCKeUVZj&?foqiVVF7rul^C=5HUgM+Uce`ILKQKqhqG)SdcQH3rHy*bw z*jU-bB=>wTd8XI)*Z;UrSGzP$XSsA#fheP+<}ykzQt*pA#+ z<0QX6GV(c~xAz7!i0Eg?4*_E4v1~6NG#>4F?I7YgpT3HnD#CY6f=9&#qG~$ArfMH$ zLE?l6rS8Z1`se7W+tI5@1V(3ax8`>scTUHl$_s(iT9H@~f5V?P;qo2a<;o2)%P89$ zmevJsm@}+2*Q}EkKJSFlne{1S`M(u`f!h<6l-^8>>l2)O-Q1s_w?!0_F@s<|V5OzA z)+9MB&G_94KP;L>;WoyN--;aOV7>-$YhrhLczBrI_c(bNw7WYl)mmu&QTw2)3nV*m z>9G|^F0*pKxVe#6{n&CYDk^ewb-m~@2fsI~V%@O3zP|qWJFvyU3*Kd%KEZ+DH}rq5 z{B<~J6blIpPh0SO`VO3HS2PYt-S}Z>@EBnUleF_NI9-N9(@#cDp0=QJIyg9}Hw2gI zB|Z{ZJNCwiNJ)h~waWWI1Xpa`YfiaMc~WYs+x6kQ4je!#gBy#xk@GRu+}Brx91qVX zdXD_EqPW=7-X356^z`)hGEr3oe2J)>oScYIK*NVxfHtq1jsHxT-h4a~Y3LK^;REOR z{r$b|N~6iYxj8KsH_&j7CQ`x65^zB}K}AK)0zFM&%s4tYK)k5k8#9ez_3okDl%W|I z8VU;zrjSbJGFkLH>-Z<(3zF|qA$SLTqIY>JJi%;nJt2~N>P2RQ z5O8qcLhrm;w#hx8v*WfboAS}77ZiMO>v|w9c!j{!2ESHe(zQKMuQ4HIq+WO$|aqT1I9@n+o5D+7q09J~_#<>2&PsxKpKLVje4 z9F5^REmOYpk>b#-Rg39YumG;zMrYR7ueDaQg$J&vO7-M{+#Nzj{)jN&U928WC@^g{ zKlZZXMnDkWpw1&^&RBARG+bkBeTgq}>PRFy{wNWD1t1Lrhb4CH4++WT7@*dfJ$iuf zB9^bdhyPB3d$TOCh`}+p8L3vi{R0l`ya`Fcl)yW$l}1~CZl*Zra`fw|w&v!|a2Gc> z)!<7A)_Xuuh#PL*s9-NGE}naTE&m&Qre+3mh}mVId`vM2zpFvB)*w<~8@Q`u@MqK` zas^YDz#HvC<|ZKYN1YFdNvL4@LAa_jYZ?QS7rR&6~F29icX$hXipf6U%y z!*snoodGZxB=HZCI^d0YH~DGuDTYH11aHVv$A_14ZmC43_x?ojrGSXSVw^+X!*u61 zFQy>XL1dX>XN#28tbR8--xr3S$T;Ve3vV|p8OxN++-^lw4u?-xfsuVIHUx?K_xc*w zHXTY-H1ib5Z+N)493Hymh&<^7ItAjglfnp%f)hU}J>H)zR=y z!2+8>6wanjoF_j>Tc$1OgE|gcD28T_!LsTPMHP=0PYE3_>yRH`mW}xtmLuZpZX#Ax4I3?0NO<&Gfra{kd1j+V zYj_hC>?u1>58Ce@q`Nw*x@>Y~mqP2{;Nb8!Se_oba>|5En>ljWfQls9Ru#V)24nL= zN(@gzx+oz3gYH*&WBbJ@^U-|8&Y1rI5&7+fdYTB+n>Wu_v#P4uLWqBA`^H{ldd*G` z0V2Nz$o3wj>W9Rf$NsUgD0Jl4sSh!odU|@5!fNvJBfvnG!e%rf4hJOAF{0n@P?m~{ zQ;m8>;o;%nR6aaBY<2O29sCY=8CX;QY;GEl9yxISc>i`ERe1KFg0eE$V+)n?<#)DZ zm_r>v7o`TxWI&PL-rk-CQosDXX-ua)qFnw3l~)WKX3lHOOzEAG5&G&Z-&?*{2~+2r zQ#W)m(+_y2l^$vC61|=B!vq(t2Pn`?hTZU2!?OXvVS+D zZ~??_s>L~D#c&#dO>arX#nFLw67I~Qr7Q3Ynq&o>ojv`~kG2c=jx!PyCH-cuFaf>i zzrvi=9tgG?rRm-5k)%Jixx9jwk#gsAJw1>~{aD`lOJrgz!ND*zPz_hEoWsbbffc!* zK7TGxYOfY^GRE?lot>?ruI6!= zY$WgU{oAjUkvz%2Auz9_r_5j%hwPvrOX;W)Jj{4w8guDH*IM4VVSd`IIW5f;5MO?ccvcK7;)5+(Xb*NI+;T zEGVEv_rYMGqYL$qRrWsyDoJf^t;)Xh#jgA@F)8WE@v#yK8v}!wZ@#9ANIJ0E9DKX7 zZ=P-r0qc{0^i?ELrdo^)HC;W8SW{C|P^srzF%5y=a~aau&n)o@Jw{u)itv{jaK{-* zNi-r+E%I#vB%LD(F4;Fv zP_jgEADEAXfe|U7uz8(G@*nW{wXFaDFZ|yTB^R}SB)f@>xOsW;ad7zf`Q?l1d4s?= z!f7o@QoG_3ItJMfATj5U=rIeW?}#ZdyaVmJZf{~Hr%b!j^R#7euto$-2I(uf1?I%G zivFxN*K9#IG-d$HhJ8g(udA6>l`>0zG`s*}bpAmzHVwJL`qRpqCh=%k?mzVOm+Crj zOvBh!_U6Y-ZIuh4H&waqy%u~PaHLP3oyZbI6p($nELJE0hty<`<{)D9gr=NZ;_Lu6 z*Q@>M$H2#gO|dHVzDiu{TAv435ycn{!MDs#3lj#%oNvA9%N!Dd-2B%%-R_^1)u8!! zoVp&O*gE~sB>jG%IY4JQbE?8R)b(J=LfFxfLQeTP6LXV%^4?Q<+xC)((s@QswGe;~ z+viqWT2KJ1NKQ_Ec+;|%lFt%|Lm_QpqFbU!)|;x$ z_6{1=WJFkzpEXK*MQouUO|aoWN0+fT*FhqHJ>M7~XKq7&0oNILjmnRoGy0uAXfbfiz~!>?*&SEw_$`rEaT5ai>;0 zsYJfDd&nIbjexAx0S;tD>juLV+SRzpJpxKwY32vP5{?-(V>6+Be>z2v^IR#j1UNi@ z(yL}(Vis!fa=KOeT- z2E4YB!MPMnM1rPn%c&>|c`2STKa`#Or4IO(_pKRdIE+Yg3|`uikGgy=n~cc`Wqm06 z$R++#D6RUHt=vXm-Nrjy<@;@Ks=df8yLK41*CSYw<}Vp<-R=$bhzroo;7y~O)R$g; z2;Y$VCUw%^}tpHMa*h>P3wGIXLbT!*xn=B|?osdNPDk zGgu2p>Y65q0b%}}Uf=967|S6cHc*WtKQWI!SdsL@WMLNVX*b#?8jA*Obv{xqg`>Qg zO;=PAHQW4yNyQk-Kjmc?G38Axv^j=APBe=1;F%GT*v9&?XbsmFyC(lJF;P73cp?>9 zf@29-HQ{_SqjCat)Ar89lcYt-y`Ab2(oGV5 z>Fz1>yGWN6_uzQGOR+>$SH~$khxcgcmBbfe-O%dMUX(@ooJou^nAr_=-<5nyx8wIT!$k@C z+$@=Ed2w_d?a%0Z8BfU;D=J-Z;6Gat;)_N?h=g&({}5^$mhqVj`r2Ks0IX5lvZ-*i zV)B{LmK0eKI0WLpkNxKHL=vJfh+UY~;X=jeYv`PB-y)Vj75zMO?F+Au3pt#&S5QvO z7Lxn^HqkgHFW+s&*m2zL%MoE#aYo!FF@EWOjzX1cuI`}<+PzY=K*gRjk^J?(M8S4H zx00X2ldSNbBGdHVz^SEHvP$7l|3hBW*Y)~(wN+?1VYF^+KIwv^flv7bQ?nD4!d5ir z5ji9Kom5=nwnJ}1O^})g`J{>oo^lqJc>$7z*yaf+`=5z!G;L8V#gXd26L_ zNfBnSOvPBPdwi$D-P49C>|;vuhS*Vk+6Amd)~({LoLky?_6*O&K0>BcNWZ1C)czWs zd7yD488Qj^XhO)I(7sXg(|?pTT1mP`pdsb=4ECHK5*4*`h9O=RzzKews~|hX#51ce zpd_ViO^$3NCd~+e4pcUN(~wGLKT1MK#YTu@K;9Q>CeMH1yxiinx5ti2qc?S;ylYVXBY>Jp6Xn>6c1w1 z$0+@bNg~HK@-Q&!Ft{`^%8H~qAo-f}JG!H7o?GXYk5lvyf9q7TCg2{^!F*zb< zdVX}WM1ZZensfCFeww2E%;{+UCM0=^OG~N0f5am-)P@hK$0TfoiBEZMDJd|TDs4aV z`P9hoUx-StI5Af<aQ%~NBcLp-E>GoI?j>*O8lYxER56Y65z?_Eb`W8lXx3pM^ymL6a8O^ z_&uvwIyI%N(r3O_%yixK#i+wVUL2|VEPZ=x!Q{&KkjHOMyw%(dI>V$Ur=oen+TH(t zm>TA(ZtnVeCR(2C{Q?b7!z_qAq?{?lMPzWSqI!;Hq_X?T4rN20G4m%^{#9pNjdk)l z3j~|~$H4X(<=w&rzp#R<5tlCPqD7UA`=LEwZt8X?-zFrH56$kK;P;$N>ZsuZCL~_P_gG-;cTZk6HtA!z(hYHY)yOauT$SinX zpzXL{*3yzr20g?6p%1_LCrfFxVRzPl%cptj?e8D|x0nij^;rMk>S`XLf5&?WC{fC+ ztgIa!9o`Iud1q!;B^o9A`uewON|OKCCj38WYR;~${R}hxHU_L;D=Qgsef4eE7nB5S zp#FO6p^Kpc?d*Tc2S&|({JM3e$0G9DRGm+Y+Gz(r{zqQ+cGHCw$!fR_5947uV zZ;r#8z78C!UPp^j3z%4}9wlaHiyZs>dtAwWo%Kcc(azR(t;_GFZc@bS{>q9Z7|bl= z_LUSu>#bG{6W0=(6XoS?%C8TeuQBx;&?!%dqMuLShq4h7x!}--f`&ruf1L~0w%whZ zX~WMc?H>d}*CNBi)tHj|YK-);>R1N*$1QIU-WKuNF5{4qsf_zPR5bmvzCNGs`V^;8 z5FHT#IUBG!->6N~`+SqyxO1M8l$7fNaOOHV~+{&*3-`&($KiZA|844*(){rloyMddI2PR!LN1(&`KqDTriA3#|_hpBd z!E;d=S|?z^ZNmru2+WeJMnUSs9KOEGKSmZU9=r z@*6cJH5EM%s=G2Tj~WBT)yxMc0Acuatu1vK7AX&rk5YR=nsCE85`XL(C-|1%7lM`NH+lt zxbm{3(gF@e6C_yLj&vBC>iCRAMIJ{DPY;iX?XO?I#y5k!$gAjQ5kbrArB68l`Cw3R zAUZ;4gdABqsLJlOe8?7sK#kA45mOQJpQ8C8Qxe`sCp-y9l^X19fUpDcC#-7i2dm|samab41AAhs?A!>Fr6vJCbz&FA=s28J4oVaCdYt599o3EgS1)1uXMg2@U`|T>DUar(e!s~F5#Lyzk;p0I#YTbfyVsP+5fr0lNhbOd3xT!eIq{$4Jv8<;s&eW7{Y5$#(C!>b< zP1V}gN_w_hB5ru<4MvWuc$NvCmpW<*#cB;0^>_YFbyAF0`cmE@zQ^a>z?u8D92?33 zm@*KpsWANlHGAJC_u`MkzUi@P#f6{?J|FnBD)tl=P++l$^3*~oep$sU{r9A>kAqtLTmY)k1?%223J#z;aU zk#GpH5PrSXaHiY5{V$ILIeqAB;E|GJ^|q#ggM&qy)MBGU?#vT(-I(@;Q20?j$NauD zX}6Cm!Hytw{ywKsxEMDXL2SoRLK)*GV!2wz<6hZd5*6uKH9r@g=;By4X8;#DFpniI zWKspTN5s1ArQ5e-pA~`??c2G>#>=LUPOc?lGFss!q6}yt_b0$)gJ*DGcPY2SeN`JQ zR#U0)%fV)4MYp%^I=&|j3kb2$x_Jl?2*g#1Z7Mn?Q;2xOXwe9qfyWGbL;~T_(KP-) zI6=d9F@cN{>S%@m$yHq3+$f(KGg&H1tzRzmpToGD29nUBAJxWk>E0t0b0GeHKDK5) z0`-gf;XlZ54n?y~3QahNFo{f!Pl*VypERq8AT};1h1oLg)N7vOD-r%2mTGBgQcocQ zeL!LITfMe}bi~eX+J?Q#pikY5tW&W1GUgk0tgW)ZYpA1P`3b&*YtpKhi`1^w%POyD zkaQR&8Agh@@lV)!Em0}{eYCAu1cMw~yGR!73l0l(oS0#Aw?F>8#YNN>WH(;B^pE`R zBf#j7WYAHwqjB~gtJz5VR-T)zEHC#vwKoH?J(o2ymjGci>I-8j#PbiARfX-l9*wTZk= z>YY1X@hcSG^X_*lq>loO1}ZiE+$D7F)(TW}F1zqh2EtIvmY^eSW{;V$&mXSVMI5f& zA=CaWzuPdsTzDg{(|5}j^G9cW2<`7ZB_W?Fwv>!(nwxbtaV=-P7W{t@np##Mz{>fU zL&_$FpNbaWAJ2;xY{N5(gQ) z*Kr!%rfw0Nh@FT?xLu=Q4qmOHI>=nf~4&(6T=G8mz#I$53H58B!R!@tVj zE1IFP&zwm$)kjv|-}Ik!r|%mgHer(9fbe8#DUoQe-rE)X4pzCR`=csNMlf=*J*jk9 z(jh<0YB6f?v%Ipn-_w!Nfqd@OG&zP+!@yU*vIQ6pq?n6#K!G@mF+d+uAI2qhdEeq6 zXj{=*r41GS%(ybl>*f$Ahq~TM3&PlMbUQP={c4Oy8PN-i13O4}pve~??aWx64_POZ zj-b6g2Mc*%LbTLRh~Ut5J^#V~EH}@lM_EV47s)$dc{gorS2n~dn#k^QF~Jl~COtbd zGn#3nU4^rCy9z%pBUIpz_jcJ!zz4fG?C_6ITj+ie6An3P6fV$zw=lb&L^pW62cT0q zicOpo`G23CiB1a{iOY9uQ803I<3@-PkjO_C%viFPL$ocz^2ea1Nt1oPxV|1hVv)0* z>1Hbj0Clf=fwDhcB*u5>fuJIXna5%{tgU3lw?}Kz@w!R04Q9=Vj90t1xdvdG;szp< z=Oux#XG0N@q0Ea}jY$UruQ2!Y=9uXu7{GYTwzs1|VkGIR6uDJdy3c}Adh zyR)-%jSzz3@V?5R?a%(cC63|nIY_Rg3H+Kcs$)JhOQ zt;fC1Yg*{m4za`H{HC4xoR4CR_w%0|TFE+&1=l;MpMT{pGZCMuFok|uauq|+&Lo*} z1>{TciW2JPwhYB<3d~Y>=qT}zG{Kr%r2<)L2A*-ah8B5OiW>SbIyvCa$2_+?h>h@Y zgm1%vTY^5Yn<>f3F3!&9-_zzqO@V;x|*n{Nx%RP6dCi&wc$22r92TXGl z4j&z|>AIn&$gs@pmH&c$$2Fd%U1<6wK_~WmzL>OjP03r*=^&1^myiYd%mUo-MFpV& z4Jn$TB+MUOqEnv&%sHoE;*7aG5~!ekdc#CM$mbw%3Y~1x1r=FRtI2H{dk_kgQn1;f zyh2bs=^}Wj4H6MRxi~5|@nL zi}TFw*kA;3R8{(N(dXM8|KnDdqv0mfe@ONK{(d$CUQhxp@Ug(S?hw-OXcRFfPJdm~ zKk|%JHOTv*jiO@Sodctv8`Ie&bNM4;%Obelpv|@8azZfpeYisYl2?euZhn=+;Lwob z8N7zNj~Z_WsXEtBVk?5X5am@?HD>Er!p`||?4#%mxGbGLV4d+!D*TGaq9Zo`YCiWz zz5sq48EI(~esBas6}yM z$vDNyB1(Cb*z6%#0TLt_NWGEUS4=XeEpt$75NaeWySuwn7`!x88O7`|-WYHP(>e8~ zT9t%oY+wTH7-u3F!3t)j_UQAq7{5u;(E3~caaNhc)wpI*8yH=Fj*j+LXjN!eeP}ub z_I<8NIl5P$#P?sNn*Xn^^Nfb;4cmQ?MD*m3s6hzPC0dl|gy>yDw5ZX08zmxojT)VZ zZuG%m)QH|0z4tDo%^;j7?|atyc6_p|y~fO*{j~f3UDp+PIG2jQQ2Eh^dwp})68Ns~ z?nW@zJ4|QNG&IV|$pNcbFR-ow{2AkG_R_ZyMomrapr@^^H^na?aO&nM3h_ESW6PLF zJWz`{xy**@B_=J}9$A+cyEDZhbe%y|I~5-S#|jsHg;tjIq=a$|v=$e$)@z>*p1GmhIlFV@Y8IZ@|MXT}EO8|W zs9rjmj{fArM6V`8ARXuD?L7Q zb3<-WEDZGY4GrM~^Uidd*HRCokQ*CDP+L3v3yr^wmIbkqh@Gq1M(>qYrRmkh@)%^q z7h6n9O?8d5bmwL$A>17#^|m>Hhu-X!urO5)*%4zu$Mfg7*M3`>oI0hhK9>~XVDwdd+c7}^* zM-htsy4X#w3(CI^%hgV>vmu>{8IqNPSBY|ZS19JlGyMyYc;8u19u9`W-`&!R$`7sn zh-;^p)LWu)EVJr-Xlwq{BnE|}D|Rjd`zHknG51R6_al>PPxn9JG1~9+KZpk8 zB5KCFAqB!~gj>T|RePWOc5rV9{4(sylryPxe)-}iMfXh#3zg`Ze)HTovVZcVh0iL& znCSTI&!4AgAYoWx2bSA+7=XHA!@h6n2Pm_#OknUj7Ms0EIsP5;(b%m8qy;Gq2H zBqQf6A4?Z(VJH0v9q7a)#jIfkuz|#26<}8W&u|dM^k_1~g7TM-o10s%Y7fp0;}c<5 z7njPI)i~8@=Je@%>6MHyyv-ZTaKJeVCB5Lpul{n~8yL|#Uu<9Uy~$r|>=2iEVm z%DYs)?m`FKglC6Agvj^hO3zu6)f*)`;T(@kD;npGIx_@U$R z@Q0Hcl>PyQ@si_{mk&;lK(iX)5<^3awVz1u@G~xg^c{}e~FG9^fLY=BPW+c0Yf1)fMCT;W;le@$BN zi*Tv~dw%e0-cmG$d10fpBGpOLZUcRt(psKO<_K!${*X;uGW6Q+VS5LXih*=6^~>sAt#pR2^sZv3caR`|9-U#o zl%+py8ZAWPluBRdS6-{X*qu^}CMo6(F{LUQmK@JQ9Cr|$rtwy5j7UCBr3ot=eI^d9 z{UlWziAI_wCLaE2Q`e^9WKmYKkND)nn*O~-b01iA{yNSS`C@w?B?zm1Q+_$BKvza2 z17;`FbYu!#BwIYa(Q@+pF$J{0*{!NHe9O-Y^Df4e(!!7t;cr}5zm{~Jv4P* z(9~WIez4@g_tx5$zy?6$mH*1MaNI=_`HdyZk<8sDA5Zb`M(~OXk{2KwBG%~<7;^3& z9;&^3`1W7*9(VwH_oHD$^!g>0Dihn;mns64KBoUh#|xj3H_F?b_6nqi;abpGvzxNt zyT6nAE?9L8O2$&~JtXQ;+FRb|&%2#mOfS7~cf;NA8I~=X?D}Y5`D})arY0uJN`}YA79I*yY6Ak%jXKjY1@s1e z9N(yC8_MF16sHiYj*y;XSN=5i;?o9G3#*6n^HrGJhZpRU^|;huU#LqJ-QW0GJoPh+ zXI3e@GiQ|euA9rbsg@-fAF7kSyQRtF;72EG<~7}$b6|^oyevg$Bj`Zgm1~*$ekN@< z?di9ARjqk-!_jw!hwH1G`MRQ|iN6$upda($d5Fe>O9zCf*RZ~8lClWMC|!yPTSYnztHJpjjLnTtIems=N%0@^?-z@ z0fF=&K5T!)ebY|Y{*6daEk*Csz;S9tI76o%iLw-lpV@Sgz_^w4i>jQ!>RvnE{E|0Z z->tO@Zhl}0mwKTfJ~m2;%9SxWmA5W8x3T$Jw?MJ@1MFk)PKDfOW7DTk(IgTtPmWSJ zc&j(X$wjR>vAtWaZf`lZHlxEZ1aFXyN(L0(>AZDV<%d?nu!dsJ0GG)){Z~BvcW*}< z`)77MPk5T-p#o8IXwHbU2mU=4u|+T)tDCi^y;pPw4JIX7`s3dIrqq{$$b6@1Q&m+qX(erAPB&QoZS(7;QbJ&H^jJn7HPLAC?75SEn3zh-u6FU(1H@+Fq`8j;Y}dv-}>rl zx3L}Px_0TLpOT3X?$8pSP+Hf47f(TB>AR57NQ3+lU0vU^b_U_j?EM<|9=Lzz@Eh>@ z)H}NVEkOxQU=zZ&Zdm8myPZrt7TBsQc5(kKU`w1l-8fES;#F)U%JC9D&3)?38{9mq zloIQ+*Jj+*0tvcoJ=CxTK{$gaMgpM2miExWQA(=C@t6TCv}50un|-4wL9fpk-DCa3E`lP*gOu=$$KrIyfSS2#5p>k{E$g zoM<{X?o!V^DAz^n5_iQMbMT6|i}54wa{E&2-834JB|B)OzL2pvYLAR^6ltTm2SECx zXS(hxXN1OZEGU>$q-CTBG44t*{e#^@kFB(MgQt8QUmW#x(#9H}TlV{nugo#pTNl9% zwpKS6Kg2U7bdO5>Ec?Pl0$yiAM@B|QO)q7j|5xS#SM=nDsihm_tyGPro_UWP-G?o- zo;CY@dqX|XSa8K`-64$*SNl^_O9w-Rwz4LS%Qsxe*}hBAFl!}1Ig9gvi*-_Hy>iI! zUHsdbz|GsDrtAu1C3k!Iwa@eg>5oL}%Xf!zpaf}8Uuo?|_ic^{`>%~P4uzy;AqxU| zS^r8?12y;czdKd7TN^!8%`~ule(42CYyEg@KBlK-)Xi^D}eZ|BOEOvhn3^T4c*Y&NQi-x|p(ArWyi^7`|X{*;WZMR|rT*ek6JF<27N?78n#d@ENygxI?+9Fj(%5T8YcMrFS7VPPRYm^BEB)lyXT5g8`3~&RA~e~PJm+XOPEHqThN(T= zJwYTiAK9oiSDoN8D5BWs!p zI8i!vt;4woFI7oeI@kV2o*I&1i^wcgfUnbyspc}2XXTx!Xo^9&soO*ro zFZa0Y4|oz5sOL5oYfx^da6^65n+S0F26*ZqjaQC=yqcO8q)Ff7Sw`PmLpKBN%7>3i z%HUdp+)$2+VtjRCA>@ym`a*bdI?ji*tiP|MR5w;Xg3| z=f~8_3Rr%0{rG-{E!?tv`fNU<+v>8%yg^56Z|z9Jde6?@-kgzy_&izdtLRd*^WZ$R zzn4g>*Bi!cep7Y$j$)wT3c7$X*qL~HQ zP*GxPd7%IOX0e){o*r^?pPuU-!`}IMH*F%zK*Od4$GVGZjq-g@iga?dhRqL6c6CS# z<3XbXDn@xL!vQH_|C8Q-zzd%oU1Ch1sAoS|C!lq?4Gq5t&*1Uj=(cy+C5E0tfBuqS z?fHc)){Y4hYE|>$7eJ;Yk*DXnr|=Y9&BDso?5mzpT}2hZ%}c}ij9h+ zTEF9`6W99Ub%$Gx>*n2sJy^V_zaL`1&f!>5NmRfCiu3Qv?DI4pz8?81OtmH}`#V~b^^PQpM%&|iubL-qBwAN|9fd@EFt4^? zC`TI708fMv$I<5GY2>H8vBrsn!V*PCn)p{ujkUEq-*`H+i@A;Z+LKFu+OGvX$|Xp zOaD+`gYOQWdYrK?--dU}s_%cX-Af-f zY$)H}^Kf>iH`*(=w6ypD=U?*wt+o3?p5t#tqR0H+4a0M;vvVSbhTJ?@Ga|RF=B2}d z{&;_U0A{+YE0_l#DD7O@C{U<#c5XHsJLrWrhIp*IsuJaNdajAlLt2-AP;zvzgH>t^ ziHfFcP6C(N4w@+*qn6imqbu;99&eTb6Q@ErCSc3xwml+=<*})DR@P#0a2L4_bS0M^ zlOc$FeDWnxgFrifX(~hf!cb4%%&{VA2ikwd{fcR?TCZYZeDMS)>Gx8gM~$8?Ob`is z^~$3zNpSM9?GeAAfR3*2s#T-sQI=+LZCzc~$75(k1rH}@S$TOKn3CPx5`{n0`=fJP zTU)QOBmnsY#0Oi$^c|i#yu7@s8A5>^%nS?+0s?0|0T_Z^QXn#nAmX=62_K|_qxqy0 zjBJtRs&6sZLkql)Tf#w>b@duUCq9gAe*X5h8=k4~ty_Qpkn}?RgN^kPZMG|{sgV&$ zEmv4=otxmRDIg+5PI?Oq%V7qT!wfAP?Z@!ON5@Z62Fi|)kH4w$*SJhJ^0X+Vie7R1 z&Pnk#HBG<1h?=@2KZIkTDK6zX?k#)^>bM3Fy-x6%f4EP2QtyiG>zpL+P7A+8*zz0I`1Q5a?Ah-jG^cYN=1a`j~+Z{~>``CA{ zn(nU!$a~r<>1nyzo2kfQ5G@Yqj@jhd_lJj%x6cgT54yReZSB!KY#EW=RP5aY36iwb zg6z=9Xv348UM+k>uc<`C&&x@XhJTFbCZNTK6WUWYB^)*!Vz#dT# zc2-sZd?+g@w281r;g4Ke(<@ZADso=j46BQ0 zJbVt_p5}QhN7Te3Yn0T~P5Sa>-gM*iG)%q~J?nOZkG~e+)zcZ*6@v(t(B+}^P!WMZ zN;qeeViYewgem4T-l+B_;Fr@kE>3Vztcw9t7zKp~fAJV`-hsT~9|Rx`J|-WaH>|?y z-?6{T2-@A-Y136~k8cZI`12e{0T;Q^VgD6#vOh_urKJTO1$F+YHj0A25tcp{fndg- z_sPf%#b==@zDDoHZD5J={J7+w>*+{I`QE5+juLByw(e!?8@~%sxfzUnIhnb+sqws` z);&9`EFs|Jqq5G_02??bGrXO}br*lVm`Sm8j|9ua|G zGHseED>#o6r;s5>SJs(Ap(>{N(}D`WpeX;{Qzoz*V7TEyLrO0rFiJf3)@UcY9*(mB z39u4e0Ug`10(|{5e$wlV=l;TO77Zl+h9v+d8xqNo=Qz}s)H_^D+tE#5PwJ$?8 zJUsju{kibx&z~UFCUq=wsmcu3*XVR3P!PK`cbTmdWm|!G<3!s-Eu79^*Q|OdVjBEq zzf#h}L^ke`x%{Xm54i&m7FkkYYt$1gKh8k+Ph|I+au}+4#=eCq{*Yspo~HrJu&}h) z-&2w~auvNkHFvjk$FZ*3)p({Q!^jAI{x|F7PzVT$Q{uStziqd-*Q%e<_k^!p@z^?G zH!$$za~jkQ%*>?HJ^#`SB8hRotX%*1r7(no5b!&5HC7}K-*8v@-f$VzspDoJ%MWdG zkUVStgs;^mG!Q>7@@$mb$?#$iH1Jun)FIZ$R4XYT-1opTX7CDBy-5fN zF-H42y#UPz4x*zzf=W`=^6(}?9U4KqhkFdgixK=TKSt!d0!`3$>#=!0K>$7cIP7V| zei<$YObJJ7$=dHF-)_!TPJ-D@$G^QjO3A3k68d*#eDm7FeBDe9_<*vXY4Uwo{&Cc8 zuApw^IJ~r{bW_R*v1}_V6#PX~=Kz9HLhP9Db`tys{TF=JjHD!iw@*x0lE3JFe9iez z`On?XwhmBz{zMUhLwS#uRxQG$jpY*ce~Fr}78YM<@E67_mvQ5%d_!hG+Uo14Wvedp zI6N)tlys*Fc|MfI(;qg%26`H1Mn*ShdlX4^o&PKIRLYfk8}}DSdkx zXZ~M5e_3>UTb~;7`I;>B9&F`%|1kwd!<0JjF)*Hg68)RDN7}`Ox8$yQ`WC|p4UooY zcz4>X4}O1%Bc9e#U7xe+<1KS5Nh`_$u?_OH3ht|YWfpWlBXD0=>(WgC4dJ8jMsIXJ@Pq0H>@Frz9pWgXEmUtUudZvd<@I9LN&xg{YT) z{`?t8sDPI&hnrg49iE@V*%I`A0rQsD6IduFwH${-k+uoz+V+l))v9i~InXabnyO6S zMZb2FmSQN5jwYg1i4lw<#joPIr25(esOA5{dpNHGIICYoLFB^%P`)!D7CnbB+FjHv#xXg zeGKt=>|LbCKG$^scJ{=HtH6OuT1-KFosR)c`e$J*tajJ#BKL-U$EB9&B{7h!r|Se8 z9>ZhEdgYjwORTF%f%2K~5bDBe=*m|C`ZN&jUKt{1fp0-V5O_0gsqV9eq5{grs(baZrJ8xkEG z+no&nfSw$$7iQ}~T1?hx`Y-T1{QHSiE~M%J5JW#Om{wO;W#1PU7xPyz*=b7g8>Z@( z$}w_=y~baNq%%83@&X~kW7}&TBO~IHu|(oK+|~*^p#RjC-Nu19xQ`z+YQn9uBN_H{ zl=>ZZ&e#;G$wR8ohCY9kf8td4oC7Ci4!0Uvb~i_5ArX-dUIbE#+X)yT90&<8b^%=w z#m4%&@7bAN8h*6&#pWcy({In~TLCW=a|3*v0~*YG<3aPZB&TvY`(`QNhvDhXSAJ@u z*C}=9b@@ukjJIUAPuxHh^yfPm%vX(VBa%EgeJd)mDWZ-2D%sPcY* z`G_Hl#$FDH;%==hs?0+KttfT)MH)?$R~*FSrU4Z#YUG-vM{-Fl@7>)y_}^DU<9+P zYi(~)UG03#Px5oMy>{c2NHMMF(QCOMr%DcJJSP-r z$Hi-1FG7yk+`d^ba^B+yt~vytoIke7G^vjLm^rafp{8P1nw_c5n5R_W(8ntP;oMii`dHS` z)MRE%J;{NP5Bd6ac_?B)`!3S+U{(&x`rm;oteHgUbI9RS&16m^Mrnw;ynN_1yZBqD z+m8>3*;qNfdPF6biYG*ppR(p(2tJHEbi%{KGvV;d>RwthUXBk*`4)$jPIwfiP}uE; zo;=>mIgxE00{v*I;cd`b69tG9)4eR78)ZN`s41&q)K4cGk^mbYJRGTYU0Tt~cp=-^ z+qodKYpd=>mU35jIevX}GbA)L68b{(gLae~C06irh39^?`rW*4F8Q89JKqvj4b2sA zN79kd;Q&6kbpOxX$h@7$I~iy=S)uRs!5AZA9!6#MC*AooQB76|9=HVqECqt%=EsGvkAf3Y9?Q^ z7|l?LHU~4~02k code.lt-param { + color: white; +} + +.contents dl.attention { + background-color: #fbdfda; + padding-top: 1em; + padding-bottom: 1em; +} + +.contents table.doxtable th { + background-color: #5173b3; +} + +.contents table.doxtable td { + vertical-align: top; +} + +.contents p.intertd { + font-weight: normal; +} + +.contents td > code:not(.lt-param), +.contents p > code:not(.lt-param), +.contents dt > code:not(.lt-param), +.contents dd > code:not(.lt-param), +.contents li > code:not(.lt-param) { + background-color: rgba(0, 0, 0, .05); + padding-left: .2em; + padding-right: .2em; + border-radius: .25em; + border: .1em solid rgba(0, 0, 0, .1) +} + +.contents .lt-var { + font-style: italic; + font-family: serif; + font-size: 1.1em; +} diff --git a/include/lttng/channel.h b/include/lttng/channel.h index 3d175b8a4..a6a6f04fc 100644 --- a/include/lttng/channel.h +++ b/include/lttng/channel.h @@ -24,18 +24,139 @@ extern "C" { * The structures should be initialized to zero before use. */ #define LTTNG_CHANNEL_ATTR_PADDING1 LTTNG_SYMBOL_NAME_LEN + 12 + +/*! +@brief + Attributes of a \link #lttng_channel channel summary\endlink. + +@ingroup api_channel + +The lttng_channel::attr member is an instance of such a structure. + +lttng_channel_set_default_attr() sets the members of such a structure +to their default values given a specific \lt_obj_domain summary. + +\anchor api-channel-valid-attr-struct A \em valid #lttng_channel_attr +structure satisfies the following constraints: + + + + + + +
Member + Constraints +
lttng_channel_attr::overwrite + 0, 1, or -1 +
lttng_channel_attr::subbuf_size + + - Greater than 0 + - Power of two +
lttng_channel_attr::num_subbuf + + - Greater than 0 + - Power of two +
+*/ struct lttng_channel_attr { + /*! + @brief + \ref api-channel-er-loss-mode "Event record loss mode". + + One of: + +

+
0 +
+ The \ref api-channel-er-loss-mode "event record loss mode" + of the channel is + \ref api-channel-discard-mode "discard". + +
1 +
+ The event record loss mode of the channel is + \ref api-channel-overwrite-mode "overwrite". + +
-1 +
+ The event record loss mode of the channel is the default + value of its \lt_obj_session: + +
+
\ref api-session-snapshot-mode "Snapshot mode" +
Overwrite mode + +
Other modes +
Discard mode +
+
+ */ int overwrite; /* -1: session default, 1: overwrite, 0: discard */ + + /*! + @brief + \ref api-channel-sub-buf-size-count "Sub-buffer size" + (bytes). + */ uint64_t subbuf_size; /* bytes, power of 2 */ + + /*! + @brief + \ref api-channel-sub-buf-size-count "Sub-buffer count". + */ uint64_t num_subbuf; /* power of 2 */ + + /*! + @brief + \ref api-channel-switch-timer "Switch timer period" (µs), + if applicable. + + Only available if the \lt_obj_session which + owns this channel is \em not in + \ref api-session-live-mode "live mode". + */ unsigned int switch_timer_interval; /* usec */ + + /// \ref api-channel-read-timer "Read timer period" (µs). unsigned int read_timer_interval; /* usec */ + + /// Output type (Linux kernel channel). enum lttng_event_output output; /* splice, mmap */ + /* LTTng 2.1 padding limit */ + + /*! + @brief + \ref api-channel-max-trace-file-size-count "Maximum trace file size" + (bytes), or 0 for unlimited. + */ uint64_t tracefile_size; /* bytes */ + + /*! + @brief + \ref api-channel-max-trace-file-size-count "Maximum trace file count", + or 0 for unlimited. + */ uint64_t tracefile_count; /* number of tracefiles */ + /* LTTng 2.3 padding limit */ + + /*! + @brief + \ref api-channel-live-timer "Live timer period" (µs), if + applicable. + + You may \em not set this member: use the + \lt_p{live_timer_period} parameter of + lttng_session_descriptor_live_network_create() when you create + the descriptor of a \ref api-session-live-mode "live" recording + session to contain the channel to create. + + Only available if the \lt_obj_session which + owns this channel is in \ref api-session-live-mode "live mode". + */ unsigned int live_timer_interval; /* usec */ + /* LTTng 2.7 padding limit */ uint32_t align_to_64; union { @@ -52,88 +173,508 @@ struct lttng_channel_attr { * The structures should be initialized to zero before use. */ #define LTTNG_CHANNEL_PADDING1 16 + +/*! +@brief + \lt_obj_c_channel summary. + +@ingroup api_channel + +The purpose of such a structure is to provide information about a +channel itself, but not about its \lt_obj_rers +(use lttng_list_events() for this). + +lttng_list_channels() sets a pointer to an array of all the +channel summaries of a given \lt_obj_session and \lt_obj_domain. + +Most properties are part of the lttng_channel::attr member, but the +following ones have their own dedicated accessors: + +
+
\ref api-channel-monitor-timer "Monitor timer" period +
+ - lttng_channel_get_monitor_timer_interval() + - lttng_channel_set_monitor_timer_interval() + +
\ref api-channel-blocking-timeout "Blocking timeout" +
+ - lttng_channel_get_blocking_timeout() + - lttng_channel_set_blocking_timeout() +
+ +Create a channel summary with lttng_channel_create(). + +Destroy a channel summary with lttng_channel_destroy(). +*/ struct lttng_channel { + /// Name. char name[LTTNG_SYMBOL_NAME_LEN]; + + /*! + @brief + 1 if this \lt_obj_channel is enabled, or 0 otherwise. + + @sa lttng_enable_channel() -- + Creates or enables a channel. + @sa lttng_disable_channel() -- + Disables a channel. + */ uint32_t enabled; + + /// Other properties. struct lttng_channel_attr attr; char padding[LTTNG_CHANNEL_PADDING1]; }; -/* - */ +/*! +@brief + Creates and returns a \lt_obj_channel summary, + setting the members of its lttng_channel::attr member to default + values according to the \lt_obj_domain summary \lt_p{domain}. + +@ingroup api_channel + +This function internally calls + +@code +lttng_channel_set_default_attr(domain, &channel->attr); +@endcode + +where \c channel is the returned channel summary. + +After you create a channel summary with this function, you can modify +its \ref api-channel-channel-props "properties" and call +lttng_enable_channel() to create and enable a channel. + +@param[in] domain + Tracing domain summary to consider to set the members of the + lttng_channel::attr member of the returned structure to default + values. + +@returns + @parblock + New channel summary. + + Destroy the returned channel summary with lttng_channel_destroy(). + @endparblock + +@lt_pre_not_null{domain} + +@sa lttng_channel_destroy() -- + Destroys a channel summary. +*/ LTTNG_EXPORT extern struct lttng_channel *lttng_channel_create(struct lttng_domain *domain); -/* - */ +/*! +@brief + Destroys the \lt_obj_channel summary \lt_p{channel}. + +@ingroup api_channel + +@note + This function doesn't destroy the \lt_obj_channel + which \lt_p{channel} summarizes: the only way to destroy a channel + is to \link lttng_destroy_session_ext() destroy its recording + session\endlink. + +@param[in] channel + @parblock + Channel summary to destroy. + + May be \c NULL. + @endparblock +*/ LTTNG_EXPORT extern void lttng_channel_destroy(struct lttng_channel *channel); -/* - * List the channel(s) of a session. - * - * The handle CAN NOT be NULL. - * - * Return the size (number of entries) of the "lttng_channel" array. Caller - * must free channels. On error, a negative LTTng error code is returned. - */ +/*! +@brief + Sets \lt_p{*channels} to the summaries of the + \lt_obj_channels of the recording session handle \lt_p{handle}. + +@ingroup api_session + +@param[in] handle + Recording session handle which contains the name of the recording + session and the summary of the \lt_obj_domain which own the channels + of which to get the summaries. +@param[out] channels + @parblock + On success, this function sets \lt_p{*channels} to + the summaries of the channels. + + Free \lt_p{*channels} with free(). + @endparblock + +@returns + The number of items in \lt_p{*channels} on success, or a \em + negative #lttng_error_code enumerator otherwise. + +@lt_pre_conn +@lt_pre_not_null{handle} +@lt_pre_valid_c_str{handle->session_name} +@lt_pre_sess_exists{handle->session_name} +@pre + \lt_p{handle->domain} is valid as per the documentation of + #lttng_domain. +@lt_pre_not_null{channels} +*/ LTTNG_EXPORT extern int lttng_list_channels(struct lttng_handle *handle, struct lttng_channel **channels); -/* - * Create or enable a channel. - * - * The chan and handle params can not be NULL. - * - * Return 0 on success else a negative LTTng error code. - */ +/*! +@brief + Creates or enables a \lt_obj_channel summarized by \lt_p{channel} + within the recording session handle \lt_p{handle}. + +@ingroup api_channel + +This function, depending on \lt_p{channel->name}: + +
+
+ \lt_p{channel->name} names an existing + channel within the \lt_obj_session and + \lt_obj_domain of \lt_p{handle} +
+ Enables the existing channel. + + In this case, this function only uses \lt_p{channel->name}, ignoring + all the other properties of \lt_p{channel}. + +
Otherwise +
+ Creates and enables a new channel, considering all the properties of + \lt_p{channel}. +
+ +@param[in] handle + Recording session handle which contains the name of the + recording session and the summary of the \lt_obj_domain which own + the channel to create or enable. +@param[in] channel + Summary of the channel to create or enable. + +@returns + 0 on success, or a \em negative #lttng_error_code enumerator + otherwise. + +@lt_pre_conn +@lt_pre_not_null{handle} +@lt_pre_valid_c_str{handle->session_name} +@lt_pre_sess_exists{handle->session_name} +@pre + \lt_p{handle->domain} is valid as per the documentation of + #lttng_domain. +@lt_pre_not_null{channel} +@pre + If this function must create a new channel, then + \lt_p{channel->attr} is \ref api-channel-valid-attr-struct "valid". +@pre + If this function must create a new channel, then + \lt_p{handle->session_name} names a + \lt_obj_session which never became + \link lttng_session::enabled active\endlink (started) since its + creation. +@pre + If this function must create a new channel, then + all the existing channels of \lt_p{handle} have the same + \ref api-channel-buf-scheme "buffering scheme". + +@sa lttng_disable_channel() -- + Disables a channel. +*/ LTTNG_EXPORT extern int lttng_enable_channel(struct lttng_handle *handle, - struct lttng_channel *chan); + struct lttng_channel *channel); -/* - * Disable channel. - * - * Name and handle CAN NOT be NULL. - * - * Return 0 on success else a negative LTTng error code. - */ -LTTNG_EXPORT extern int lttng_disable_channel(struct lttng_handle *handle, const char *name); +/*! +@brief + Disables the \lt_obj_channel named \lt_p{channel_name} within the + recording session handle \lt_p{handle}. -/* - * Set the default channel attributes for a specific domain and an allocated - * lttng_channel_attr pointer. - * - * If one or both arguments are NULL, nothing happens. - */ +@ingroup api_channel + +@param[in] handle + Recording session handle which contains the name of the + recording session and the summary of the \lt_obj_domain which own + the channel to disable. +@param[in] channel_name + Name of the channel to disable within \lt_p{handle}. + +@returns + 0 on success, or a \em negative #lttng_error_code enumerator + otherwise. + +@lt_pre_conn +@lt_pre_not_null{handle} +@lt_pre_valid_c_str{handle->session_name} +@lt_pre_sess_exists{handle->session_name} +@pre + \lt_p{handle->domain} is valid as per the documentation of + #lttng_domain. +@lt_pre_not_null{channel_name} +@pre + \lt_p{channel_name} names an existing channel within the recording + session and tracing domain of \lt_p{handle}. + +@sa lttng_enable_channel() -- + Creates or enables a channel. +*/ +LTTNG_EXPORT extern int lttng_disable_channel(struct lttng_handle *handle, + const char *channel_name); + +/*! +@brief + Sets the members of \lt_p{attr} to their default values considering + the \lt_obj_domain summary \lt_p{domain}. + +@ingroup api_channel + +Use this function on an lttng_channel::attr member. + +@param[in] domain + Tracing domain summary to consider to set the members of \lt_p{attr} + to their default values. +@param[in] attr + Structure of which to set the members to their default values. + +@lt_pre_not_null{domain} +@lt_pre_not_null{attr} +*/ LTTNG_EXPORT extern void lttng_channel_set_default_attr(struct lttng_domain *domain, struct lttng_channel_attr *attr); -/* - * Get the discarded event count of a specific LTTng channel. - * - * Returns 0 on success, or a negative LTTng error code on error. - */ -LTTNG_EXPORT extern int lttng_channel_get_discarded_event_count(struct lttng_channel *chan, - uint64_t *discarded_events); +/*! +@brief + Sets \lt_p{*count} to the number of discarded event + records of the \lt_obj_channel summarized by \lt_p{channel}. -/* - * Get the lost packet count of a specific LTTng channel. - * - * Returns 0 on success, or a negative LTTng error code on error. - */ -LTTNG_EXPORT extern int lttng_channel_get_lost_packet_count(struct lttng_channel *chan, - uint64_t *lost_packets); +@ingroup api_channel + +In \ref api-channel-discard-mode "discard mode", LTTng discards an event +record when there's no sub-buffer left to write it. + +lttng_list_channels() sets a pointer to an array of all the +channel summaries of a given \lt_obj_session and \lt_obj_domain. + +@param[in] channel + Summary of the channel of which to get the number of discarded + event records. +@param[out] count + On success, this function sets \lt_p{*count} to + the number of discarded event records of the channel summarized + by \lt_p{channel}. + +@returns + 0 on success, or a \em negative #lttng_error_code enumerator + otherwise. + +@lt_pre_not_null{channel} +@pre + You obtained \lt_p{channel} with lttng_list_channels(). +@pre + The lttng_channel_attr::overwrite member of \lt_p{channel->attr} + is 0. +@lt_pre_not_null{count} + +@sa lttng_channel_get_lost_packet_count() -- + Returns the number of discarded packets (sub-buffers) of a channel. +*/ +LTTNG_EXPORT extern int lttng_channel_get_discarded_event_count(struct lttng_channel *channel, + uint64_t *count); + +/*! +@brief + Sets \lt_p{*count} to the number of discarded packets (sub-buffers) + of the \lt_obj_channel summarized by \lt_p{channel}. + +@ingroup api_channel + +In \ref api-channel-overwrite-mode "overwrite mode", LTTng discards a +whole sub-buffer when there's no sub-buffer left to record an event. + +lttng_list_channels() sets a pointer to an array of all the +channel summaries of a given \lt_obj_session and \lt_obj_domain. + +@param[in] channel + Summary of the channel of which to get the number of discarded + packets. +@param[out] count + On success, this function sets \lt_p{*count} to + the number of discarded packets of the channel summarized + by \lt_p{channel}. + +@returns + 0 on success, or a \em negative #lttng_error_code enumerator + otherwise. + +@lt_pre_not_null{channel} +@pre + You obtained \lt_p{channel} with lttng_list_channels(). +@pre + The lttng_channel_attr::overwrite member of \lt_p{channel->attr} + is 1. +@lt_pre_not_null{count} + +@sa lttng_channel_get_discarded_event_count() -- + Returns the number of discarded event records of a channel. +*/ +LTTNG_EXPORT extern int lttng_channel_get_lost_packet_count(struct lttng_channel *channel, + uint64_t *count); + +/*! +@brief + Sets \lt_p{period} to the + \ref api-channel-monitor-timer "monitor timer" period (µs) + property of the \lt_obj_channel summary \lt_p{channel}. + +@ingroup api_channel + +@param[in] channel + Summary of the channel of which to get the monitor timer period. +@param[out] period + On success, this function sets \lt_p{*period} to + the monitor timer period (µs) property of \lt_p{channel}. + +@returns + 0 on success, or a \em negative #lttng_error_code enumerator + otherwise. + +@lt_pre_not_null{channel} +@lt_pre_not_null{period} + +@sa lttng_channel_set_monitor_timer_interval() -- + Sets the monitor timer period property of a channel summary. +*/ +LTTNG_EXPORT extern int lttng_channel_get_monitor_timer_interval(struct lttng_channel *channel, + uint64_t *period); + +/*! +@brief + Sets the \ref api-channel-monitor-timer "monitor timer" period + property of the channel summary \lt_p{channel} to + \lt_p{period} Âµs. + +@ingroup api_channel + +@param[in] channel + Channel summary of which to set the monitor timer period + to \lt_p{period} Âµs. +@param[in] period + Monitor timer period property to set. + +@returns + 0 on success, or a \em negative #lttng_error_code enumerator + otherwise. + +@lt_pre_not_null{channel} +@pre + \lt_p{period} â‰¥ 1 + +@sa lttng_channel_get_monitor_timer_interval() -- + Returns the monitor timer period property of a channel summary. +*/ +LTTNG_EXPORT extern int lttng_channel_set_monitor_timer_interval(struct lttng_channel *channel, + uint64_t period); + +/*! +@brief + Sets \lt_p{timeout} to the + \ref api-channel-blocking-timeout "blocking timeout" + property of the \lt_obj_channel summary \lt_p{channel}. + +@ingroup api_channel + +This property only applies to \link #LTTNG_DOMAIN_UST user space\endlink +channels. + +@param[in] channel + Summary of the channel of which to get the blocking timeout. +@param[out] timeout + @parblock + On success, this function sets \lt_p{*timeout} to + one of: + +
+
-1 +
+ The blocking timeout of \lt_p{channel} is infinite. + +
0 +
+ Blocking is disabled for \lt_p{channel}. + +
Otherwise +
+ The blocking timeout of \lt_p{channel} is + \lt_p{*timeout} Âµs. +
+ @endparblock + +@returns + 0 on success, or a \em negative #lttng_error_code enumerator + otherwise. + +@lt_pre_not_null{channel} +@pre + The \lt_obj_domain type of \lt_p{channel} is #LTTNG_DOMAIN_UST. +@lt_pre_not_null{timeout} + +@sa lttng_channel_set_blocking_timeout() -- + Sets the blocking timeout property of a channel summary. +*/ +LTTNG_EXPORT extern int lttng_channel_get_blocking_timeout(struct lttng_channel *channel, + int64_t *timeout); + +/*! +@brief + Sets the \ref api-channel-blocking-timeout "blocking timeout" + property of the channel summary \lt_p{channel} to + \lt_p{timeout}. + +@ingroup api_channel + +This property only applies to \link #LTTNG_DOMAIN_UST user space\endlink +channels. + +@param[in] channel + Channel summary of which to set the blocking timeout + to \lt_p{timeout}. +@param[in] timeout + @parblock + One of: + +
+
-1 +
+ The blocking timeout of \lt_p{channel} is infinite. + +
0 +
+ Blocking is disabled for \lt_p{channel}. -LTTNG_EXPORT extern int lttng_channel_get_monitor_timer_interval(struct lttng_channel *chan, - uint64_t *monitor_timer_interval); +
Otherwise +
+ The blocking timeout of \lt_p{channel} is + \lt_p{timeout} Âµs. +
+ @endparblock -LTTNG_EXPORT extern int lttng_channel_set_monitor_timer_interval(struct lttng_channel *chan, - uint64_t monitor_timer_interval); +@returns + 0 on success, or a \em negative #lttng_error_code enumerator + otherwise. -LTTNG_EXPORT extern int lttng_channel_get_blocking_timeout(struct lttng_channel *chan, - int64_t *blocking_timeout); +@lt_pre_not_null{channel} +@pre + The \lt_obj_domain type of \lt_p{channel} is #LTTNG_DOMAIN_UST. +@pre + \lt_p{timeout} â‰¥ -1 -LTTNG_EXPORT extern int lttng_channel_set_blocking_timeout(struct lttng_channel *chan, - int64_t blocking_timeout); +@sa lttng_channel_get_blocking_timeout() -- + Returns the blocking timeout property of a channel summary. +*/ +LTTNG_EXPORT extern int lttng_channel_set_blocking_timeout(struct lttng_channel *channel, + int64_t timeout); #ifdef __cplusplus } diff --git a/include/lttng/clear-handle.h b/include/lttng/clear-handle.h index 4fc5695ed..9a8048456 100644 --- a/include/lttng/clear-handle.h +++ b/include/lttng/clear-handle.h @@ -16,64 +16,143 @@ extern "C" { #endif -/* - * Handle used to represent a specific instance of session clear - * operation. - */ +/*! +@addtogroup api_session_clear +@{ +*/ + +/*! +@struct lttng_clear_handle + +@brief + \lt_obj_c_session clearing handle (opaque type). +*/ struct lttng_clear_handle; -/* - * Negative values indicate errors. Values >= 0 indicate success. - */ +/*! +@brief + Return type of \lt_obj_session clearing handle functions. + +Error status enumerators have a negative value. +*/ enum lttng_clear_handle_status { - LTTNG_CLEAR_HANDLE_STATUS_ERROR = -2, - LTTNG_CLEAR_HANDLE_STATUS_INVALID = -1, + /// Success. LTTNG_CLEAR_HANDLE_STATUS_OK = 0, + + /// Recording session clearing operation completed. LTTNG_CLEAR_HANDLE_STATUS_COMPLETED = 1, + + /// Timeout reached. LTTNG_CLEAR_HANDLE_STATUS_TIMEOUT = 2, + + /// Unsatisfied precondition. + LTTNG_CLEAR_HANDLE_STATUS_INVALID = -1, + + /// Other error. + LTTNG_CLEAR_HANDLE_STATUS_ERROR = -2, }; -/* - * Destroy an lttng_clear_handle. - * The handle should be discarded after this call. - */ +/*! +@brief + Destroys the \lt_obj_session clearing handle \lt_p{handle}. + +@param[in] handle + @parblock + Recording session clearing handle to destroy. + + May be \c NULL. + @endparblock +*/ LTTNG_EXPORT extern void lttng_clear_handle_destroy(struct lttng_clear_handle *handle); -/* - * Wait for a session clear operation to complete. - * - * A negative timeout_ms value can be used to wait indefinitely. - * - * Returns LTTNG_CLEAR_HANDLE_STATUS_COMPLETED if the session clear - * operation was completed. LTTNG_CLEAR_HANDLE_STATUS_TIMEOUT is returned - * to indicate that the wait timed out. - * On error, one of the negative lttng_clear_handle_status is returned. - * - * Note: This function returning a success status does not mean that - * the clear operation itself succeeded; it indicates that the _wait_ - * operation completed successfully. - */ +/*! +@brief + Waits for the \lt_obj_session clearing operation identified by + \lt_p{handle} to complete. + +If this function returns #LTTNG_CLEAR_HANDLE_STATUS_COMPLETED, then the +recording session clearing operation identified by \lt_p{handle} +completed. This doesn't mean, however, that the clearing operation +itself succeeded; use lttng_clear_handle_get_result() to know this. + +@param[in] handle + Recording session clearing handle which identifies the clearing + operation of which to wait for completion. +@param[in] timeout_ms + Maximum time (milliseconds) to wait for the completion of the + recording session clearing operation identified by \lt_p{handle} + before returning #LTTNG_CLEAR_HANDLE_STATUS_TIMEOUT, or + -1 to wait indefinitely. + +@retval #LTTNG_CLEAR_HANDLE_STATUS_COMPLETED + The recording session clearing operation identified by \lt_p{handle} + completed (with or without success). +@retval #LTTNG_CLEAR_HANDLE_STATUS_INVALID + Unsatisfied precondition. +@retval #LTTNG_CLEAR_HANDLE_STATUS_TIMEOUT + The function waited for the completion of the recording session + clearing operation for more than \lt_p{timeout_ms} ms. +@retval #LTTNG_CLEAR_HANDLE_STATUS_ERROR + Other error. + +@lt_pre_not_null{handle} + +@sa lttng_clear_handle_get_result() -- + Returns whether or not a recording session clearing operation + succeeded. +*/ LTTNG_EXPORT extern enum lttng_clear_handle_status lttng_clear_handle_wait_for_completion(struct lttng_clear_handle *handle, int timeout_ms); -/* - * Get the result of a session clear operation. - * - * This function must be used on a clear handle which was successfully waited - * on. - * - * Returns LTTNG_CLEAR_HANDLE_STATUS_OK if the result of the session - * clear operation could be obtained. Check the value of 'result' to - * determine if the session clear operation completed successfully or not. - * - * On error, one of the negative lttng_clear_handle_status is returned. - * Returns LTTNG_CLEAR_HANDLE_STATUS_INVALID if the clear operation - * was not waited-on using the handle or if the arguments of the function are - * invalid (e.g. NULL). - */ +/*! +@brief + Sets \lt_p{*result} to the result of the \lt_obj_session clearing + operation identified by \lt_p{handle}. + +You must successfully wait for the completion of the recording session +clearing operation identified by \lt_p{handle} with +lttng_clear_handle_wait_for_completion() before you call this function. + +On success, \lt_p{*result} is #LTTNG_OK if the clearing operation was +successful. + +@param[in] handle + Handle of the recording session clearing operation of which to get + the result. +@param[out] result + @parblock + On success, this function sets \lt_p{*result} to + the result of the recording session clearing operation identified by + \lt_p{handle}. + + \lt_p{*result} is #LTTNG_OK if the clearing operation was + successful. + @endparblock + +@retval #LTTNG_CLEAR_HANDLE_STATUS_OK + Success: \lt_p{*result} is the result of the recording session + clearing operation identified by \lt_p{handle}. +@retval #LTTNG_CLEAR_HANDLE_STATUS_INVALID + Unsatisfied precondition. +@retval #LTTNG_CLEAR_HANDLE_STATUS_ERROR + Other error. + +@lt_pre_not_null{handle} +@pre + You successfully waited for the completion of the recording session + clearing operation identified by \lt_p{handle} with + lttng_clear_handle_wait_for_completion(). +@lt_pre_not_null{result} + +@sa lttng_clear_handle_wait_for_completion() -- + Waits for a recording session clearing operation to complete. +*/ LTTNG_EXPORT extern enum lttng_clear_handle_status lttng_clear_handle_get_result(const struct lttng_clear_handle *handle, enum lttng_error_code *result); + +/// @} + #ifdef __cplusplus } #endif diff --git a/include/lttng/clear.h b/include/lttng/clear.h index 8961e166f..34d8e4981 100644 --- a/include/lttng/clear.h +++ b/include/lttng/clear.h @@ -16,47 +16,112 @@ extern "C" { #endif +/*! +@addtogroup api_session_clear +@{ +*/ + struct lttng_clear_handle; -/* - * Clear a tracing session. - * - * Clear the data buffers and trace data. - * - * For sessions saving trace data to disk and streaming over the network to a - * relay daemon, the buffers content and existing stream files are cleared when - * the clear command is issued. - * - * For snapshot sessions (flight recorder), only the buffer content is cleared. - * Prior snapshots are individually recorded to disk, and are therefore - * untouched by this "clear" command. - * - * For live sessions streaming over network to a relay daemon, the buffers - * will be cleared and the files on the relay daemon side will be cleared as - * well. However, any active live trace viewer currently reading an existing - * trace packet will be able to proceed to read that packet entirely before - * skipping over cleared stream data. - * - * The clear command guarantees that no trace data produced before this function - * is called will be present in the resulting trace. - * - * Trace data produced between the moment this function is called and when it - * returns might be present in the resulting trace. - * - * Provides an lttng_clear_handle which can be used to wait for the completion - * of the session's clear. - * - * Return LTTNG_OK on success else a negative LTTng error code. The returned - * handle is owned by the caller and must be free'd using - * lttng_clear_handle_destroy(). - * - * Important error codes: - * LTTNG_ERR_CLEAR_RELAY_DISALLOWED - * LTTNG_ERR_CLEAR_NOT_AVAILABLE_RELAY - * LTTNG_ERR_CLEAR_FAIL_CONSUMER - */ +/*! +@brief + Initiates a clearing operation of the \lt_obj_session + named \lt_p{session_name}. + +Depending on the mode of the recording session \lt_var{RS} +named \lt_p{session_name}, the clearing operation attempts to: + +
+
\ref api-session-local-mode "Local" +
\ref api-session-net-mode "Network streaming" +
+ Delete the contents of the recording buffers of \lt_var{RS}. + + Delete the local/remote data stream files of \lt_var{RS}. + +
\ref api-session-snapshot-mode "Snapshot" +
+ Delete the contents of the recording buffers of \lt_var{RS}. + + LTTng doesn't touch prior snapshots of \lt_var{RS}. + +
\ref api-session-live-mode "Live" +
+ Delete the contents of the recording buffers of \lt_var{RS}. + + Delete the remote data stream files of \lt_var{RS}. + + Any active live reader currently reading a data stream packet + may continue to read said packet completely. +
+ +The clearing operation which this function initiates, if successful, +guarantees that any trace data which LTTng produced \em before you call +this function won't be part of any trace, except: + +- Preexisting recording session + \ref api_session_snapshot "snapshots". +- Preexisting + \ref api_session_rotation "trace chunk archives". + +It's possible that trace data which LTTng produces while you're calling +this function makes it to a trace. + +Use \lt_p{*handle} to wait for the completion of the recording session +clearing operation. + +@param[in] session_name + Name of the recording session to clear. +@param[out] handle + @parblock + On success, this function sets \lt_p{*handle} to + a handle which identifies this recording session clearing operation. + + May be \c NULL. + + Wait for the completion of this clearing operation with + lttng_clear_handle_wait_for_completion(). + + Destroy \lt_p{*handle} with lttng_clear_handle_destroy(). + @endparblock + +@returns + @parblock + #LTTNG_OK on success, or a \em negative enumerator otherwise. + + Notable return values: + + + + + +
-#LTTNG_ERR_CLEAR_RELAY_DISALLOWED + + The relay daemon doesn't allow recording session clearing + operations. +
-#LTTNG_ERR_CLEAR_NOT_AVAILABLE_RELAY + + The relay daemon doesn't support the recording session + clearing operation. +
-#LTTNG_ERR_CLEAR_FAIL_CONSUMER + + A consumer daemon failed to clear the recording session named + \lt_p{session_name}. +
+ @endparblock + +@lt_pre_conn +@lt_pre_not_null{session_name} +@lt_pre_sess_exists{session_name} +@pre + No clearing operation is in progress for the recording session named + \lt_p{session_name}. +*/ LTTNG_EXPORT extern enum lttng_error_code lttng_clear_session(const char *session_name, struct lttng_clear_handle **handle); + +/// @} + #ifdef __cplusplus } #endif diff --git a/include/lttng/constant.h b/include/lttng/constant.h index 2cbb46095..f20e96458 100644 --- a/include/lttng/constant.h +++ b/include/lttng/constant.h @@ -33,6 +33,13 @@ /* * Event symbol length. Copied from LTTng kernel ABI. */ + +/*! +@brief + Maximum symbol length. + +@ingroup api_gen +*/ #define LTTNG_SYMBOL_NAME_LEN 256 /* @@ -42,6 +49,12 @@ #define LTTNG_MAX_PID INT32_MAX #define LTTNG_MAX_PID_STR "2147483647" +/*! +@brief + Maximum name length. + +@ingroup api_gen +*/ #define LTTNG_NAME_MAX 255 /* diff --git a/include/lttng/destruction-handle.h b/include/lttng/destruction-handle.h index d14bc16a8..108ba4aa6 100644 --- a/include/lttng/destruction-handle.h +++ b/include/lttng/destruction-handle.h @@ -16,123 +16,246 @@ extern "C" { #endif -/* - * Handle used to represent a specific instance of session destruction - * operation. - * - * See lttng_destroy_session_ext() in lttng/session.h. - */ +/*! +@addtogroup api_session_destr_handle +@{ +*/ + +/*! +@struct lttng_destruction_handle + +@brief + Recording session destruction handle (opaque type). +*/ struct lttng_destruction_handle; -/* - * Negative values indicate errors. Values >= 0 indicate success. - */ +/*! +@brief + Return type of recording session destruction handle fuctions. + +Error status enumerators have a negative value. +*/ enum lttng_destruction_handle_status { - /* Generic error. */ - LTTNG_DESTRUCTION_HANDLE_STATUS_ERROR = -2, - /* Invalid parameters provided */ - LTTNG_DESTRUCTION_HANDLE_STATUS_INVALID = -1, - /* Success. */ + /// Success. LTTNG_DESTRUCTION_HANDLE_STATUS_OK = 0, - /* Destruction operation completed successfully. */ + + /// Recording session destruction operation completed. LTTNG_DESTRUCTION_HANDLE_STATUS_COMPLETED = 1, - /* Operation timed out. */ + + /// Timeout reached. LTTNG_DESTRUCTION_HANDLE_STATUS_TIMEOUT = 2, + + /// Unsatisfied precondition. + LTTNG_DESTRUCTION_HANDLE_STATUS_INVALID = -1, + + /// Other error. + LTTNG_DESTRUCTION_HANDLE_STATUS_ERROR = -2, }; -/* - * Destroy an lttng_destruction_session handle. - * The handle should be discarded after this call. - */ +/*! +@brief + Destroys the recording session destruction handle \lt_p{handle}. + +@param[in] handle + @parblock + Recording session destruction handle to destroy. + + May be \c NULL. + @endparblock +*/ LTTNG_EXPORT extern void lttng_destruction_handle_destroy(struct lttng_destruction_handle *handle); -/* - * Wait for the destruction of a session to complete. - * - * A negative timeout_ms value can be used to wait indefinitely. - * - * Returns LTTNG_DESTRUCTION_HANDLE_STATUS_COMPLETED if the session destruction - * operation was completed. LTTNG_DESTRUCTION_HANDLE_STATUS_TIMEOUT is returned - * to indicate that the wait timed out. - * On error, one of the negative lttng_destruction_handle_status is returned. - * - * Note: This function returning a success status does not mean that - * the destruction operation itself succeeded; it indicates that the _wait_ - * operation completed successfully. - */ +/*! +@brief + Waits for the recording session destruction operation identified by + \lt_p{handle} to complete. + +If this function returns #LTTNG_DESTRUCTION_HANDLE_STATUS_COMPLETED, +then the recording session destruction operation identified by +\lt_p{handle} completed. This doesn't mean, however, that the +destruction operation itself succeeded; use +lttng_destruction_handle_get_result() to know this. + +@param[in] handle + Recording session destruction handle which identifies the + destruction operation of which to wait for completion. +@param[in] timeout_ms + Maximum time (milliseconds) to wait for the completion of the + recording session destruction operation identified by \lt_p{handle} + before returning #LTTNG_DESTRUCTION_HANDLE_STATUS_TIMEOUT, or + -1 to wait indefinitely. + +@retval #LTTNG_DESTRUCTION_HANDLE_STATUS_COMPLETED + The recording session destruction operation identified by + \lt_p{handle} completed (with or without success). +@retval #LTTNG_DESTRUCTION_HANDLE_STATUS_INVALID + Unsatisfied precondition. +@retval #LTTNG_DESTRUCTION_HANDLE_STATUS_TIMEOUT + The function waited for the completion of the recording session + destruction operation for more than \lt_p{timeout_ms} ms. +@retval #LTTNG_DESTRUCTION_HANDLE_STATUS_ERROR + Other error. + +@lt_pre_not_null{handle} + +@sa lttng_destruction_handle_get_result() -- + Returns whether or not a recording session destruction operation + succeeded. +*/ LTTNG_EXPORT extern enum lttng_destruction_handle_status lttng_destruction_handle_wait_for_completion(struct lttng_destruction_handle *handle, int timeout_ms); -/* - * Get the result of a session destruction operation. - * - * This function must be used on a session destruction handle which was - * successfully waited on. - * - * Returns LTTNG_DESTRUCTION_HANDLE_STATUS_OK if the result of the session - * destruction operation could be obtained. Check the value of 'result' to - * determine if the destruction of the session completed successfully or not. - * - * On error, one of the negative lttng_destruction_handle_status is returned. - * Returns LTTNG_DESTRUCTION_HANDLE_STATUS_INVALID if the session destruction - * was not waited-on using the handle or if the arguments of the function are - * invalid (e.g. NULL). - */ +/*! +@brief + Sets \lt_p{*result} to the result of the recording session + destruction operation identified by \lt_p{handle}. + +You must successfully wait for the completion of the recording session +destruction operation identified by \lt_p{handle} with +lttng_destruction_handle_wait_for_completion() before you call this function. + +On success, \lt_p{*result} is #LTTNG_OK if the destruction operation was +successful. + +@param[in] handle + Handle of the recording session destruction operation of which to + get the result. +@param[out] result + @parblock + On success, this function sets \lt_p{*result} to + the result of the recording session destruction operation identified + by \lt_p{handle}. + + \lt_p{*result} is #LTTNG_OK if the destruction operation was + successful. + @endparblock + +@retval #LTTNG_DESTRUCTION_HANDLE_STATUS_OK + Success: \lt_p{*result} is the result of the recording session + destruction operation identified by \lt_p{handle}. +@retval #LTTNG_DESTRUCTION_HANDLE_STATUS_INVALID + Unsatisfied precondition. +@retval #LTTNG_DESTRUCTION_HANDLE_STATUS_ERROR + Other error. + +@lt_pre_not_null{handle} +@pre + You successfully waited for the completion of the recording session + destruction operation identified by \lt_p{handle} with + lttng_destruction_handle_wait_for_completion(). +@lt_pre_not_null{result} + +@sa lttng_destruction_handle_wait_for_completion() -- + Waits for a recording session destruction operation to complete. +*/ LTTNG_EXPORT extern enum lttng_destruction_handle_status lttng_destruction_handle_get_result(const struct lttng_destruction_handle *handle, enum lttng_error_code *result); -/* - * Get the status of the session rotation performed as part of the session's - * destruction. - * - * A session will perform a final rotation if it was ever rotated over its - * lifetime. If this happens, this function returns the state of the rotation - * that was performed. - * - * This function must be used on a session destruction handle which was - * successfully waited on. - * - * Returns LTTNG_DESTRUCTION_HANDLE_STATUS_OK if the state of the session - * rotation could be obtained. Check the value of 'rotation_state' to - * determine if the rotation of the session completed successfully or not. - * - * On error, one of the negative lttng_destruction_handle_status is returned. - * Returns LTTNG_DESTRUCTION_HANDLE_STATUS_INVALID if the session destruction - * was not waited-on using the handle or if the arguments of the function are - * invalid (e.g. NULL). - * - * Note that if no rotation was performed, rotation_state will be set to - * LTTNG_ROTATION_STATE_NO_ROTATION. - */ +/*! +@brief + Sets \lt_p{*rotation_state} to the state of a final + \ref api_session_rotation "rotation" operation which the + destruction of the recording session identified by \lt_p{handle} + caused. + +You must successfully wait for the completion of the recording session +destruction operation identified by \lt_p{handle} with +lttng_destruction_handle_wait_for_completion() before you call this +function. + +This function is only useful if LTTng performed at least one recording +session rotation during the lifetime of the destroyed recording session. + +@param[in] handle + Handle of the destruction operation of the recording session of + which to get the state of the final rotation operation. +@param[out] rotation_state + @parblock + On success, this function sets + \lt_p{*rotation_state} to the state of the final rotation operation + which the recording session destruction operation identified by + \lt_p{handle} caused. + + \lt_p{*rotation_state} is #LTTNG_ROTATION_STATE_NO_ROTATION if LTTng + didn't perform any final recording session rotation. + @endparblock + +@retval #LTTNG_DESTRUCTION_HANDLE_STATUS_OK + Success: \lt_p{*rotation_state} is the state of the final rotation + of the destroyed recording session. +@retval #LTTNG_DESTRUCTION_HANDLE_STATUS_INVALID + Unsatisfied precondition. +@retval #LTTNG_DESTRUCTION_HANDLE_STATUS_ERROR + Other error. + +@lt_pre_not_null{handle} +@pre + You successfully waited for the completion of the recording session + destruction operation identified by \lt_p{handle} with + lttng_destruction_handle_wait_for_completion(). +@lt_pre_not_null{rotation_state} + +@sa lttng_destruction_handle_get_archive_location() -- + Get the location of the trace chunk archive which a recording + session destruction operation created. +*/ LTTNG_EXPORT extern enum lttng_destruction_handle_status lttng_destruction_handle_get_rotation_state(const struct lttng_destruction_handle *handle, enum lttng_rotation_state *rotation_state); -/* - * Get the location of the archive resulting from the rotation performed during - * the session's destruction. - * - * This function must be used on a session destruction handle which was - * successfully waited on and a session rotation must have been be completed - * successfully in order for this call to succeed. - * - * The location returned remains owned by the session destruction handle. - * - * Returns LTTNG_DESTRUCTION_HANDLE_STATUS_OK if the location of the archive - * resulting from the session rotation could be obtained. - * - * On error, one of the negative lttng_destruction_handle_status is returned. - * Returns LTTNG_DESTRUCTION_HANDLE_STATUS_INVALID if the session destruction - * was not waited-on using the handle, if no session rotation occurred as part - * of the session's destruction, or if the arguments of the function are - * invalid (e.g. NULL). - */ +/*! +@brief + Sets \lt_p{*location} to the location of the final + \ref api_session_rotation "trace chunk archive" which + the destruction of the recording session identified by \lt_p{handle} + created. + +You must make sure that the destruction of the recording session caused +a final, successful rotation with +lttng_destruction_handle_get_rotation_state(). + +This function is only useful if LTTng performed at least one recording +session rotation during the lifetime of the destroyed recording session. + +@param[in] handle + Handle of the destruction operation of the recording session of + which to get the location of the final trace chunk archive. +@param[out] location + @parblock + On success, this function sets + \lt_p{*location} to the location of the final trace chunk archive + which the recording session destruction operation identified by + \lt_p{handle} created. + + \lt_p{*location} is owned by \lt_p{handle}. + @endparblock + +@retval #LTTNG_DESTRUCTION_HANDLE_STATUS_OK + Success: \lt_p{*location} is the location of the final trace + chunk archive of the destroyed recording session. +@retval #LTTNG_DESTRUCTION_HANDLE_STATUS_INVALID + Unsatisfied precondition. +@retval #LTTNG_DESTRUCTION_HANDLE_STATUS_ERROR + Other error. + +@lt_pre_not_null{handle} +@pre + lttng_destruction_handle_get_rotation_state() set the + #LTTNG_ROTATION_STATE_COMPLETED state for \lt_p{handle}. +@lt_pre_not_null{location} + +@sa lttng_destruction_handle_get_rotation_state() -- + Get the state of the final rotation operation which a recording + session destruction operation caused. +*/ LTTNG_EXPORT extern enum lttng_destruction_handle_status lttng_destruction_handle_get_archive_location(const struct lttng_destruction_handle *handle, const struct lttng_trace_archive_location **location); +/// @} + #ifdef __cplusplus } #endif diff --git a/include/lttng/domain.h b/include/lttng/domain.h index 90c949721..26e9da932 100644 --- a/include/lttng/domain.h +++ b/include/lttng/domain.h @@ -12,26 +12,53 @@ extern "C" { #endif +/*! +@addtogroup api_channel +@{ +*/ + #include #include -/* - * Domain types: the different possible tracers. - */ +/*! +@brief + Tracing domain type (tracer type). +*/ enum lttng_domain_type { - LTTNG_DOMAIN_NONE = 0, /* No associated domain. */ - LTTNG_DOMAIN_KERNEL = 1, /* Linux Kernel tracer. */ - LTTNG_DOMAIN_UST = 2, /* Global Userspace tracer. */ - LTTNG_DOMAIN_JUL = 3, /* Java Util Logging. */ - LTTNG_DOMAIN_LOG4J = 4, /* Java Log4j Framework. */ - LTTNG_DOMAIN_PYTHON = 5, /* Python logging Framework. */ + /// None. + LTTNG_DOMAIN_NONE = 0, + + /// Linux kernel. + LTTNG_DOMAIN_KERNEL = 1, + + /// User space. + LTTNG_DOMAIN_UST = 2, + + /// java.util.logging (JUL). + LTTNG_DOMAIN_JUL = 3, + + /// Apache log4j. + LTTNG_DOMAIN_LOG4J = 4, + + /// Python logging. + LTTNG_DOMAIN_PYTHON = 5, }; -/* Buffer type for a specific domain. */ +/*! +@brief + Buffering scheme of a channel. + +See \ref api-channel-buf-scheme "Buffering scheme" to learn more. +*/ enum lttng_buffer_type { - LTTNG_BUFFER_PER_PID, /* Only supported by UST being the default. */ - LTTNG_BUFFER_PER_UID, /* Only supported by UST. */ - LTTNG_BUFFER_GLOBAL, /* Only supported by the Kernel. */ + /// Per-process buffering. + LTTNG_BUFFER_PER_PID, + + /// Per-user buffering. + LTTNG_BUFFER_PER_UID, + + /// Global (Linux kernel) buffering. + LTTNG_BUFFER_GLOBAL, }; /* @@ -39,9 +66,44 @@ enum lttng_buffer_type { */ #define LTTNG_DOMAIN_PADDING1 12 #define LTTNG_DOMAIN_PADDING2 LTTNG_SYMBOL_NAME_LEN + 32 + +/*! +@brief + Tracing domain summary. + +Such a structure is involved: + +- As a member of a \link #lttng_handle recording session handle\endlink. + + Some functions which require both a \lt_obj_session + and a tracing domain accept an #lttng_handle structure. + +- When you list the tracing domains of a recording session with + lttng_list_domains(). + +- When you create a \link #lttng_channel channel summary + structure\endlink with lttng_channel_create(). + +You must initialize such a structure to zeros before setting its +members and using it, for example: + +@code +struct lttng_domain domain; + +memset(&domain, 0, sizeof(domain)); +@endcode +*/ struct lttng_domain { + /// Tracing domain type. enum lttng_domain_type type; + + /*! + @brief + Buffering scheme of all the channels associated to this tracing + domain. + */ enum lttng_buffer_type buf_type; + char padding[LTTNG_DOMAIN_PADDING1]; union { @@ -51,14 +113,36 @@ struct lttng_domain { } attr; }; -/* - * List the registered domain(s) of a session. - * - * Session name CAN NOT be NULL. - * - * Return the size (number of entries) of the "lttng_domain" array. Caller - * must free domains. On error, a negative LTTng error code is returned. - */ +/// @} + +/*! +@brief + Sets \lt_p{*domains} to the summaries of the tracing domains which + contain at least one channel within the recording session + named \lt_p{session_name}. + +@ingroup api_session + +@param[in] session_name + Name of the recording session for which to get the tracing domain + summaries. +@param[out] domains + @parblock + On success, this function sets \lt_p{*domains} to + the summaries of the tracing domains. + + Free \lt_p{*domains} with free(). + @endparblock + +@returns + The number of items in \lt_p{*domains} on success, or a \em negative + #lttng_error_code enumerator otherwise. + +@lt_pre_conn +@lt_pre_not_null{session_name} +@lt_pre_sess_exists{session_name} +@lt_pre_not_null{domains} +*/ LTTNG_EXPORT extern int lttng_list_domains(const char *session_name, struct lttng_domain **domains); #ifdef __cplusplus diff --git a/include/lttng/event.h b/include/lttng/event.h index 202fd8992..e4ee28988 100644 --- a/include/lttng/event.h +++ b/include/lttng/event.h @@ -9,216 +9,1129 @@ #ifndef LTTNG_EVENT_H #define LTTNG_EVENT_H +#ifdef __cplusplus +extern "C" { +#endif + #include #include #include -#ifdef __cplusplus -extern "C" { -#endif +/*! +@brief + \ref api-rer-conds-inst-pt-type "Instrumentation type condition" + of a recording event -/* - * Instrumentation type of tracing event. - */ +@ingroup api_rer +*/ enum lttng_event_type { + /// Match LTTng kernel tracepoint and Linux system call events. LTTNG_EVENT_ALL = -1, + + /// Match LTTng tracepoint or Java/Python logging events. LTTNG_EVENT_TRACEPOINT = 0, + + /*! + Match Linux +
kprobe + events. + */ LTTNG_EVENT_PROBE = 1, + + /*! + Match Linux + kretprobe + events. + */ LTTNG_EVENT_FUNCTION = 2, + + /// @cond UNUSED LTTNG_EVENT_FUNCTION_ENTRY = 3, LTTNG_EVENT_NOOP = 4, + /// @endcond + + /// Match Linux system call events. LTTNG_EVENT_SYSCALL = 5, + + /*! + Match Linux + uprobe + events. + */ LTTNG_EVENT_USERSPACE_PROBE = 6, }; -/* - * Loglevel information. - */ +/*! +@brief + Operand of the + \ref api-rer-conds-ll "instrumentation point log level condition" + of a recording event rule. + +@ingroup api_rer + +In the enumerator descriptions below, consider that \lt_var{LL} is the +log level value of the condition, that is, the value of the +lttng_event::loglevel member when the lttng_event::loglevel_type member +is the described enumerator. + +Depending on the \lt_obj_domain of the recording event rule, \lt_var{LL} +is one of the enumerators of #lttng_loglevel, #lttng_loglevel_jul, +#lttng_loglevel_log4j, or #lttng_loglevel_python. +*/ enum lttng_loglevel_type { + /// Match events regardless of their log level. LTTNG_EVENT_LOGLEVEL_ALL = 0, + + /*! + Match events with a log level that's at least as severe as + \lt_var{LL}. + */ LTTNG_EVENT_LOGLEVEL_RANGE = 1, + + /// Match events with a log level that's exacty \lt_var{LL}. LTTNG_EVENT_LOGLEVEL_SINGLE = 2, }; -/* - * Available loglevels. - */ +/*! +@brief + Value of the + \ref api-rer-conds-ll "instrumentation point log level condition"= + of an LTTng + \link #LTTNG_DOMAIN_UST user space\endlink tracepoint + recording event rule. + +@ingroup api_rer + +@sa #lttng_loglevel_type -- + Operand of the log level condition of a recording event rule. +*/ enum lttng_loglevel { + /// System is unusable. LTTNG_LOGLEVEL_EMERG = 0, + + /// Action must be taken immediately. LTTNG_LOGLEVEL_ALERT = 1, + + /// Critical conditions. LTTNG_LOGLEVEL_CRIT = 2, + + /// Error conditions. LTTNG_LOGLEVEL_ERR = 3, + + /// Warning conditions. LTTNG_LOGLEVEL_WARNING = 4, + + /// Normal, but significant, condition. LTTNG_LOGLEVEL_NOTICE = 5, + + /// Informational message. LTTNG_LOGLEVEL_INFO = 6, + + /// Debug information with system-level scope (set of programs). LTTNG_LOGLEVEL_DEBUG_SYSTEM = 7, + + /// Debug information with program-level scope (set of processes). LTTNG_LOGLEVEL_DEBUG_PROGRAM = 8, + + /// Debug information with process-level scope (set of modules). LTTNG_LOGLEVEL_DEBUG_PROCESS = 9, + + /*! + Debug information with module (executable/library) scope + (set of units). + */ LTTNG_LOGLEVEL_DEBUG_MODULE = 10, + + /// Debug information with compilation unit scope (set of functions). LTTNG_LOGLEVEL_DEBUG_UNIT = 11, + + /// Debug information with function-level scope. LTTNG_LOGLEVEL_DEBUG_FUNCTION = 12, + + /// Debug information with line-level scope. LTTNG_LOGLEVEL_DEBUG_LINE = 13, + + /// Debug-level message. LTTNG_LOGLEVEL_DEBUG = 14, }; -/* - * Available loglevels for the JUL domain. Those are an exact map from the - * class java.util.logging.Level. - */ +/*! +@brief + Value of the + \ref api-rer-conds-ll "instrumentation point log level condition" + of a + \link #LTTNG_DOMAIN_JUL java.util.logging\endlink + recording event rule. + +@ingroup api_rer + +@sa #lttng_loglevel_type -- + Operand of the log level condition of a recording event rule. +*/ enum lttng_loglevel_jul { + /// Logging turned off. LTTNG_LOGLEVEL_JUL_OFF = INT32_MAX, + + /// Serious failure. LTTNG_LOGLEVEL_JUL_SEVERE = 1000, + + /// Potential problem. LTTNG_LOGLEVEL_JUL_WARNING = 900, + + /// Informational messages. LTTNG_LOGLEVEL_JUL_INFO = 800, + + /// Static configuration messages. LTTNG_LOGLEVEL_JUL_CONFIG = 700, + + /// Tracing information. LTTNG_LOGLEVEL_JUL_FINE = 500, + + /// Fairly detailed tracing message. LTTNG_LOGLEVEL_JUL_FINER = 400, + + /// Highly detailed tracing message. LTTNG_LOGLEVEL_JUL_FINEST = 300, + + /// All messages. LTTNG_LOGLEVEL_JUL_ALL = INT32_MIN, }; -/* - * Available loglevels for the LOG4j domain. Those are an exact map from the - * class org.apache.log4j.Level. - */ +/*! +@brief + Value of the + \ref api-rer-conds-ll "instrumentation point log level condition" + of an + \link #LTTNG_DOMAIN_LOG4J Apache log4j\endlink + recording event rule. + +@ingroup api_rer + +@sa #lttng_loglevel_type -- + Operand of the log level condition of a recording event rule. +*/ enum lttng_loglevel_log4j { + /// Logging turned off. LTTNG_LOGLEVEL_LOG4J_OFF = INT32_MAX, + + /*! + Very severe error events that will presumably lead the + application to abort. + */ LTTNG_LOGLEVEL_LOG4J_FATAL = 50000, + + /*! + Error events that might still allow the application to continue + running. + */ LTTNG_LOGLEVEL_LOG4J_ERROR = 40000, + + /// Potentially harmful situations. LTTNG_LOGLEVEL_LOG4J_WARN = 30000, + + /*! + Informational messages that highlight the progress of the + application at coarse-grained level. + */ LTTNG_LOGLEVEL_LOG4J_INFO = 20000, + + /*! + Fine-grained informational events that are most useful to debug + an application. + */ LTTNG_LOGLEVEL_LOG4J_DEBUG = 10000, + + /*! + Finer-grained informational events than the + #LTTNG_LOGLEVEL_LOG4J_DEBUG level. + */ LTTNG_LOGLEVEL_LOG4J_TRACE = 5000, + + /// All levels, including custom levels. LTTNG_LOGLEVEL_LOG4J_ALL = INT32_MIN, }; -/* - * Available loglevels for the Python domain. Those are an exact map from the - * Level class. - */ +/*! +@brief + Value of the + \ref api-rer-conds-ll "instrumentation point log level condition" + of a + \link #LTTNG_DOMAIN_PYTHON Python\endlink + recording event rule. + +@ingroup api_rer + +@sa #lttng_loglevel_type -- + Operand of the log level condition of a recording event rule. +*/ enum lttng_loglevel_python { + /// Critical. LTTNG_LOGLEVEL_PYTHON_CRITICAL = 50, + + /// Error. LTTNG_LOGLEVEL_PYTHON_ERROR = 40, + + /// Warning. LTTNG_LOGLEVEL_PYTHON_WARNING = 30, + + /// Information. LTTNG_LOGLEVEL_PYTHON_INFO = 20, + + /// Debugging. LTTNG_LOGLEVEL_PYTHON_DEBUG = 10, + + /// Logging turned off. LTTNG_LOGLEVEL_PYTHON_NOTSET = 0, }; -/* - * LTTng consumer mode - */ +/*! +@brief + Channel output type. + +@ingroup api_channel +*/ enum lttng_event_output { + /// Use the \lt_man_gen{splice,2} system call. LTTNG_EVENT_SPLICE = 0, + + /// Use the \lt_man_gen{mmap,2} system call. LTTNG_EVENT_MMAP = 1, }; -/* Event context possible type */ +/*! +@brief + Context field type. + +@ingroup api_channel + +The following table indicates, for each enumerator, its description, for +which \lt_obj_domain it's available, and the +data type and the name of the resulting context field in traces. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Enumerator + Description + Tracing domain + Field type + Field name +
#LTTNG_EVENT_CONTEXT_PID + Process ID + #LTTNG_DOMAIN_KERNEL + Integer + pid +
#LTTNG_EVENT_CONTEXT_PROCNAME + Process name + #LTTNG_DOMAIN_KERNEL and #LTTNG_DOMAIN_UST + String + procname +
#LTTNG_EVENT_CONTEXT_PRIO + Process priority + #LTTNG_DOMAIN_KERNEL + Integer + prio +
#LTTNG_EVENT_CONTEXT_NICE + Nice value of the process + #LTTNG_DOMAIN_KERNEL + Integer + nice +
#LTTNG_EVENT_CONTEXT_VPID + Virtual process ID + #LTTNG_DOMAIN_KERNEL and #LTTNG_DOMAIN_UST + Integer + vpid +
#LTTNG_EVENT_CONTEXT_TID + Thread ID + #LTTNG_DOMAIN_KERNEL + Integer + tid +
#LTTNG_EVENT_CONTEXT_VTID + Virtual thread ID + #LTTNG_DOMAIN_KERNEL + Integer + vtid +
#LTTNG_EVENT_CONTEXT_PPID + ID of the parent process + #LTTNG_DOMAIN_KERNEL + Integer + ppid +
#LTTNG_EVENT_CONTEXT_VPPID + Virtual ID of the parent process + #LTTNG_DOMAIN_KERNEL + Integer + vppid +
#LTTNG_EVENT_CONTEXT_PTHREAD_ID + POSIX thread ID + #LTTNG_DOMAIN_KERNEL + Integer + pthread_id +
#LTTNG_EVENT_CONTEXT_HOSTNAME + Hostname + #LTTNG_DOMAIN_KERNEL + String + hostname +
#LTTNG_EVENT_CONTEXT_IP + Instruction pointer + #LTTNG_DOMAIN_UST + Integer + ip +
#LTTNG_EVENT_CONTEXT_PERF_CPU_COUNTER + + Per-CPU perf counter. + + If the lttng_event_context::ctx member of an #lttng_event_context + structure is #LTTNG_EVENT_CONTEXT_PERF_CPU_COUNTER, then the + lttng_event_context::lttng_event_context_u::perf_counter member + of lttng_event_context::u selects a specific per-CPU perf counter. + #LTTNG_DOMAIN_KERNEL + Integer + Depends on the selected perf counter +
#LTTNG_EVENT_CONTEXT_PERF_THREAD_COUNTER + + Per-thread perf counter. + + If the lttng_event_context::ctx member of an #lttng_event_context + structure is #LTTNG_EVENT_CONTEXT_PERF_THREAD_COUNTER, then the + lttng_event_context::lttng_event_context_u::perf_counter member + of lttng_event_context::u selects a specific per-thread + perf counter. + #LTTNG_DOMAIN_UST + Integer + Depends on the selected perf counter +
#LTTNG_EVENT_CONTEXT_APP_CONTEXT + + Application-specific context. + + If the lttng_event_context::ctx member of an #lttng_event_context + structure is #LTTNG_EVENT_CONTEXT_APP_CONTEXT, then the + lttng_event_context::lttng_event_context_u::app_ctx member of + of lttng_event_context::u selects + a specific application-specific context. + #LTTNG_DOMAIN_JUL or #LTTNG_DOMAIN_LOG4J + Integer or string + Depends on the selected application-specific context +
#LTTNG_EVENT_CONTEXT_INTERRUPTIBLE + Whether or not the process is interruptible + #LTTNG_DOMAIN_KERNEL + Integer (0 or 1) + interruptible +
#LTTNG_EVENT_CONTEXT_PREEMPTIBLE + Whether or not the process is preemptible + #LTTNG_DOMAIN_KERNEL + Integer (0 or 1) + preemptible +
#LTTNG_EVENT_CONTEXT_NEED_RESCHEDULE + Whether or not the process needs a reschedule + #LTTNG_DOMAIN_KERNEL + Integer (0 or 1) + need_reschedule +
#LTTNG_EVENT_CONTEXT_MIGRATABLE + Whether or not the process is migratable + #LTTNG_DOMAIN_KERNEL + Integer (0 or 1) + migratable +
#LTTNG_EVENT_CONTEXT_CALLSTACK_KERNEL + Linux kernel call stack + #LTTNG_DOMAIN_KERNEL + Dynamic-length array of integers (instruction pointers) + callstack_kernel +
#LTTNG_EVENT_CONTEXT_CALLSTACK_USER + + User space call stack. + + Only supported on IA-32 and x86-64 architectures. + #LTTNG_DOMAIN_KERNEL + Dynamic-length array of integers (instruction pointers) + callstack_user +
#LTTNG_EVENT_CONTEXT_CGROUP_NS + + Control group root directory namespace ID. + + @sa \lt_man_gen{cgroup_namespaces,7} + #LTTNG_DOMAIN_KERNEL and #LTTNG_DOMAIN_UST + Integer + cgroup_ns +
#LTTNG_EVENT_CONTEXT_IPC_NS + + System V IPC and POSIX message queue namespace ID. + + @sa \lt_man_gen{ipc_namespaces,7} + #LTTNG_DOMAIN_KERNEL and #LTTNG_DOMAIN_UST + Integer + ipc_ns +
#LTTNG_EVENT_CONTEXT_MNT_NS + + Mount point namespace ID. + + @sa \lt_man_gen{mount_namespaces,7} + #LTTNG_DOMAIN_KERNEL and #LTTNG_DOMAIN_UST + Integer + mnt_ns +
#LTTNG_EVENT_CONTEXT_NET_NS + + Networking namespace ID. + + @sa \lt_man_gen{network_namespaces,7} + #LTTNG_DOMAIN_KERNEL and #LTTNG_DOMAIN_UST + Integer + net_ns +
#LTTNG_EVENT_CONTEXT_PID_NS + + Process ID namespace ID. + + @sa \lt_man_gen{pid_namespaces,7} + #LTTNG_DOMAIN_KERNEL and #LTTNG_DOMAIN_UST + Integer + pid_ns +
#LTTNG_EVENT_CONTEXT_USER_NS + + User and group ID namespace ID. + + @sa \lt_man_gen{user_namespaces,7} + #LTTNG_DOMAIN_KERNEL and #LTTNG_DOMAIN_UST + Integer + user_ns +
#LTTNG_EVENT_CONTEXT_UTS_NS + + Hostname and NIS domain name namespace ID. + + @sa \lt_man_gen{uts_namespaces,7} + #LTTNG_DOMAIN_KERNEL and #LTTNG_DOMAIN_UST + Integer + uts_ns +
#LTTNG_EVENT_CONTEXT_TIME_NS + + Boot and monotonic clock namespace ID. + + @sa \lt_man_gen{time_namespaces,7} + #LTTNG_DOMAIN_KERNEL and #LTTNG_DOMAIN_UST + Integer + time_ns +
#LTTNG_EVENT_CONTEXT_UID + User ID + #LTTNG_DOMAIN_KERNEL + Integer + uid +
#LTTNG_EVENT_CONTEXT_EUID + Effective user ID + #LTTNG_DOMAIN_KERNEL + Integer + euid +
#LTTNG_EVENT_CONTEXT_SUID + Set owner user ID + #LTTNG_DOMAIN_KERNEL + Integer + suid +
#LTTNG_EVENT_CONTEXT_GID + Group ID + #LTTNG_DOMAIN_KERNEL + Integer + gid +
#LTTNG_EVENT_CONTEXT_EGID + Effective group ID + #LTTNG_DOMAIN_KERNEL + Integer + egid +
#LTTNG_EVENT_CONTEXT_SGID + Set owner group ID + #LTTNG_DOMAIN_KERNEL + Integer + sgid +
#LTTNG_EVENT_CONTEXT_VUID + Virtual user ID + #LTTNG_DOMAIN_KERNEL and #LTTNG_DOMAIN_UST + Integer + vuid +
#LTTNG_EVENT_CONTEXT_VEUID + Virtual effective user ID + #LTTNG_DOMAIN_KERNEL and #LTTNG_DOMAIN_UST + Integer + veuid +
#LTTNG_EVENT_CONTEXT_VSUID + Virtual set owner user ID + #LTTNG_DOMAIN_KERNEL and #LTTNG_DOMAIN_UST + Integer + vsuid +
#LTTNG_EVENT_CONTEXT_VGID + Virtual group ID + #LTTNG_DOMAIN_KERNEL and #LTTNG_DOMAIN_UST + Integer + vgid +
#LTTNG_EVENT_CONTEXT_VEGID + Virtual effective group ID + #LTTNG_DOMAIN_KERNEL and #LTTNG_DOMAIN_UST + Integer + vegid +
#LTTNG_EVENT_CONTEXT_VSGID + Virtual set owner group ID + #LTTNG_DOMAIN_KERNEL and #LTTNG_DOMAIN_UST + Integer + vsgid +
+ +@ingroup api_channel +*/ enum lttng_event_context_type { + /// Process ID. LTTNG_EVENT_CONTEXT_PID = 0, + + /// @cond BACKWARD_COMPAT_EVENT_CTX_TYPES LTTNG_EVENT_CONTEXT_PERF_COUNTER = 1, /* Backward compat. */ + /// @endcond + + /// Process name. LTTNG_EVENT_CONTEXT_PROCNAME = 2, + + /// Process priority. LTTNG_EVENT_CONTEXT_PRIO = 3, + + /// Nice value of the process. LTTNG_EVENT_CONTEXT_NICE = 4, + + /// Virtual process ID. LTTNG_EVENT_CONTEXT_VPID = 5, + + /// Thread ID. LTTNG_EVENT_CONTEXT_TID = 6, + + /// Virtual thread ID. LTTNG_EVENT_CONTEXT_VTID = 7, + + /// ID of the parent process. LTTNG_EVENT_CONTEXT_PPID = 8, + + /// Virtual ID of the parent process. LTTNG_EVENT_CONTEXT_VPPID = 9, + + /// POSIX thread ID. LTTNG_EVENT_CONTEXT_PTHREAD_ID = 10, + + /// Hostname. LTTNG_EVENT_CONTEXT_HOSTNAME = 11, + + /// Instruction pointer. LTTNG_EVENT_CONTEXT_IP = 12, + + /// Per-CPU perf counter. LTTNG_EVENT_CONTEXT_PERF_CPU_COUNTER = 13, + + /// Per-thread perf counter. LTTNG_EVENT_CONTEXT_PERF_THREAD_COUNTER = 14, + + /// Application-specific context. LTTNG_EVENT_CONTEXT_APP_CONTEXT = 15, + + /// Whether or not the process is interruptible. LTTNG_EVENT_CONTEXT_INTERRUPTIBLE = 16, + + /// Whether or not the process is preemptible. LTTNG_EVENT_CONTEXT_PREEMPTIBLE = 17, + + /// Whether or not the process needs a reschedule. LTTNG_EVENT_CONTEXT_NEED_RESCHEDULE = 18, + + /// Whether or not the process is migratable. LTTNG_EVENT_CONTEXT_MIGRATABLE = 19, + + /// Linux kernel call stack. LTTNG_EVENT_CONTEXT_CALLSTACK_KERNEL = 20, - LTTNG_EVENT_CONTEXT_CALLSTACK_USER = 21, /* Supported on x86_32 and x86_64 only. */ + + /// User space call stack. + LTTNG_EVENT_CONTEXT_CALLSTACK_USER = 21, + + /// Control group root directory namespace ID. LTTNG_EVENT_CONTEXT_CGROUP_NS = 22, + + /// System V IPC and POSIX message queue namespace ID. LTTNG_EVENT_CONTEXT_IPC_NS = 23, + + /// Mount point namespace ID. LTTNG_EVENT_CONTEXT_MNT_NS = 24, + + /// Networking namespace ID. LTTNG_EVENT_CONTEXT_NET_NS = 25, + + /// Process ID namespace ID. LTTNG_EVENT_CONTEXT_PID_NS = 26, + + /// User and group ID namespace ID. LTTNG_EVENT_CONTEXT_USER_NS = 27, + + /// Hostname and NIS domain name namespace ID. LTTNG_EVENT_CONTEXT_UTS_NS = 28, + + /// User ID namespace ID. LTTNG_EVENT_CONTEXT_UID = 29, + + /// Effective user ID namespace ID. LTTNG_EVENT_CONTEXT_EUID = 30, + + /// Set owner user ID namespace ID. LTTNG_EVENT_CONTEXT_SUID = 31, + + /// Group ID namespace ID. LTTNG_EVENT_CONTEXT_GID = 32, + + /// Effective group ID namespace ID. LTTNG_EVENT_CONTEXT_EGID = 33, + + /// Set owner group ID namespace ID. LTTNG_EVENT_CONTEXT_SGID = 34, + + /// Virtual user ID namespace ID. LTTNG_EVENT_CONTEXT_VUID = 35, + + /// Virtual effective user ID namespace ID. LTTNG_EVENT_CONTEXT_VEUID = 36, + + /// Virtual set owner user ID namespace ID. LTTNG_EVENT_CONTEXT_VSUID = 37, + + /// Virtual group ID namespace ID. LTTNG_EVENT_CONTEXT_VGID = 38, + + /// Virtual effective group ID namespace ID. LTTNG_EVENT_CONTEXT_VEGID = 39, + + /// Virtual set owner group ID namespace ID. LTTNG_EVENT_CONTEXT_VSGID = 40, + + /// Boot and monotonic clock namespace ID. LTTNG_EVENT_CONTEXT_TIME_NS = 41, }; +/*! +@brief + LTTng tracepoint field data type + (type of the lttng_event_field::type member). + +@ingroup api_inst_pt +*/ enum lttng_event_field_type { + /// Other/unknown. LTTNG_EVENT_FIELD_OTHER = 0, + + /// Integer. LTTNG_EVENT_FIELD_INTEGER = 1, + + /// Enumeration. LTTNG_EVENT_FIELD_ENUM = 2, + + /// Floating point number. LTTNG_EVENT_FIELD_FLOAT = 3, + + /// String. LTTNG_EVENT_FIELD_STRING = 4, }; +/*! +@brief + \ref api-rer-inst-pt-descr "Instrumentation point descriptor" + flag (type of the lttng_event::flags member). + +@ingroup api_inst_pt +*/ enum lttng_event_flag { + /*! + @brief + 32-bit Linux system call. + + Only valid when the lttng_event::type member is + #LTTNG_EVENT_SYSCALL. + */ LTTNG_EVENT_FLAG_SYSCALL_32 = (1U << 0), + + /*! + @brief + 64-bit Linux system call. + + Only valid when the lttng_event::type member is + #LTTNG_EVENT_SYSCALL. + */ LTTNG_EVENT_FLAG_SYSCALL_64 = (1U << 1), }; -/* - * Perf counter attributes - * - * The structures should be initialized to zero before use. - */ #define LTTNG_PERF_EVENT_PADDING1 16 + +/*! +@brief + perf counter context field descriptor. + +@ingroup api_channel + +If the lttng_event_context::ctx member of an #lttng_event_context +structure is #LTTNG_EVENT_CONTEXT_PERF_CPU_COUNTER or +#LTTNG_EVENT_CONTEXT_PERF_THREAD_COUNTER, then the +lttng_event_context::lttng_event_context_u::perf_counter member +of lttng_event_context::u selects a specific perf counter. + +You must initialize such a structure to zeros before setting its members +and using it, for example: + +@code +struct lttng_event_perf_counter_ctx perf_counter_ctx; + +memset(&perf_counter_ctx, 0, sizeof(perf_counter_ctx)); +@endcode +*/ struct lttng_event_perf_counter_ctx { + /*! + @brief + perf counter type ID. + + One of: + + + + + + + +
Type + ID +
Hardware counter + 0 +
Software counter + 1 +
Hardware cache counter + 3 +
Performance Monitoring Unit (PMU) counter + 4 +
+ */ uint32_t type; + + /*! + @brief + perf counter configuration. + + Depending on the lttng_event_perf_counter_ctx::type member: + +
+
0 (hardware counter) +
+ One of: + + + + + + + + + + + + +
Counter + ID +
CPU cycles + 0 +
Instructions + 1 +
Cache references + 2 +
Cache misses + 3 +
Branch instructions + 4 +
Branch misses + 5 +
Bus cycles + 6 +
Stalled cycles (front end) + 7 +
Stalled cycles (back end) + 8 +
+ +
1 (software counter) +
+ One of: + + + + + + + + + + + + +
Counter + ID +
CPU clock + 0 +
Task clock + 1 +
Page faults + 2 +
Context switches + 3 +
CPU migrations + 4 +
Minor page faults + 5 +
Major page faults + 6 +
Alignment faults + 7 +
Emulation faults + 8 +
+ +
3 (hardware cache counter) +
+ The result of a bitwise OR operation between a cache ID, + an operation ID, and a result ID, as follows: + + + + + + + + +
Cache ID + Description +
0 + Data L1 +
1 + Instructions L1 +
2 + LL +
3 + Data TLB
4 + Instruction TLB +
5 + Branch prediction unit (BPU) +
+ + + + + + +
Operator ID + Description +
0 + Read +
0x100 + Write +
0x200 + Prefetch +
+ + + + + +
Result ID + Description +
0 + Access +
0x10000 + Miss +
+ +
4 (PMU counter) +
+ PMU counter raw ID. + + @sa \lt_man_gen{perf-record,1} +
+ */ uint64_t config; + + /// Context field name. char name[LTTNG_SYMBOL_NAME_LEN]; char padding[LTTNG_PERF_EVENT_PADDING1]; }; -/* - * Event/channel context - * - * The structures should be initialized to zero before use. - */ #define LTTNG_EVENT_CONTEXT_PADDING1 16 #define LTTNG_EVENT_CONTEXT_PADDING2 LTTNG_SYMBOL_NAME_LEN + 32 + +/*! +@brief + Context field descriptor. + +@ingroup api_channel + +Such a structure describes a context field to be recorded within all the +\ref api_rer "event records" of a given \lt_obj_channel (see +lttng_add_context()). + +You must initialize such a structure to zeros before setting its members +and using it, for example: + +@code +struct lttng_event_context ctx; + +memset(&ctx, 0, sizeof(ctx)); +@endcode +*/ struct lttng_event_context { + /*! + @brief + Context field type. + + Some types have a \lt_obj_domain + constraint. + + If this member has the value + #LTTNG_EVENT_CONTEXT_PERF_CPU_COUNTER or + #LTTNG_EVENT_CONTEXT_PERF_THREAD_COUNTER, then you must also set + the lttng_event_context::lttng_event_context_u::perf_counter + member of lttng_event_context::u. + + If this member has the value #LTTNG_EVENT_CONTEXT_APP_CONTEXT, + then you must also set the + lttng_event_context::lttng_event_context_u::app_ctx member + of lttng_event_context::u. + */ enum lttng_event_context_type ctx; + char padding[LTTNG_EVENT_CONTEXT_PADDING1]; - union { + /*! + @brief + perf counter or application-specific context field + descriptor. + + @ingroup api_channel + */ + union lttng_event_context_u { + /*! + @brief + perf counter context field descriptor. + + Only used when the lttng_event_context::ctx member + is #LTTNG_EVENT_CONTEXT_PERF_CPU_COUNTER or + #LTTNG_EVENT_CONTEXT_PERF_THREAD_COUNTER. + */ struct lttng_event_perf_counter_ctx perf_counter; + struct { + /// Provider name. char *provider_name; + + /// Field type. char *ctx_name; - } app_ctx; + } + + /*! + @brief + Application-specific context field descriptor. + + Only used when the lttng_event_context::ctx member + is #LTTNG_EVENT_CONTEXT_APP_CONTEXT. + */ + app_ctx; + char padding[LTTNG_EVENT_CONTEXT_PADDING2]; - } u; + } + + /// perf counter or application-specific context field descriptor. + u; }; -/* - * Event probe. - * - * Either addr is used or symbol_name and offset. - * - * The structures should be initialized to zero before use. - */ #define LTTNG_EVENT_PROBE_PADDING1 16 + +/*! +@brief + Legacy Linux kprobe/kretprobe location. + +@ingroup api_rer + +Such a structure indicates the location of a Linux kprobe/kretprobe for +a \lt_obj_rer having such an instrumentation point type. + +You must initialize such a structure to zeros before setting its members +and using it, for example: + +@code +struct lttng_event_probe_attr loc; + +memset(&loc, 0, sizeof(loc)); +@endcode + +Set either lttng_event_probe_attr::addr or +lttng_event_probe_attr::symbol_name and lttng_event_probe_attr::offset. + +@sa \ref api-rer-conds-inst-pt-type "Instrumentation point type condition". +*/ struct lttng_event_probe_attr { + /*! + @brief + kprobe/kretprobe address. + + If this member is not 0, then + lttng_event_probe_attr::symbol_name must be an empty string. + */ uint64_t addr; + /*! + @brief + kprobe/kretprobe address offset from the symbol named + lttng_event_probe_attr::symbol_name. + */ uint64_t offset; + + /*! + @brief + kprobe/kretprobe symbol name. + + The actual kprobe/kretprobe address is the address of the named + symbol plus the value of lttng_event_probe_attr::offset. + + If this member is not an empty string, then + lttng_event_probe_attr::addr must be 0. + */ char symbol_name[LTTNG_SYMBOL_NAME_LEN]; char padding[LTTNG_EVENT_PROBE_PADDING1]; @@ -243,36 +1156,200 @@ struct lttng_event_function_attr { */ #define LTTNG_EVENT_PADDING1 12 #define LTTNG_EVENT_PADDING2 LTTNG_SYMBOL_NAME_LEN + 32 + +/*! +@brief + \lt_obj_c_rer descriptor. + +@ingroup api_rer + +Such a structure describes a recording event rule. More specifically, +it describes the \ref api-rer-conds "conditions" of a recording +event rule. + +lttng_list_events() sets a pointer to an array of all the recording +event rule descriptors of a given \lt_obj_channel. + +@note + \anchor api-rer-inst-pt-descr lttng_list_tracepoints() + and lttng_list_syscalls() also set + a pointer to an array of instances of this structure. In this + context, the #lttng_event structure is named + \"instrumentation point descriptor\". + +lttng_enable_event(), lttng_enable_event_with_filter(), and +lttng_enable_event_with_exclusions() expect such a structure to create +or enable a recording event rule. + +Most properties are members of the structure itself, but the +following ones have their own dedicated accessors: + +
+
+ Linux uprobe location (when the lttng_event::type member is + #LTTNG_EVENT_USERSPACE_PROBE) +
+ - lttng_event_get_userspace_probe_location() + - lttng_event_set_userspace_probe_location() + +
\ref api-rer-conds-event-name "Event name" exclusion patterns +
+ lttng_event_get_exclusion_name() + +
\ref api-rer-conds-filter "Event payload and context filter" expression +
+ lttng_event_get_filter_expression() +
+ +Create an empty recording event rule descriptor with +lttng_event_create(). + +\anchor api-rer-valid-event-struct A \em valid #lttng_event structure +satisfies the following constraints: + +- If the lttng_event::type member is #LTTNG_EVENT_PROBE or + #LTTNG_EVENT_FUNCTION, then the lttng_event::lttng_event_attr_u::probe + member of lttng_event::attr is valid according to the + documentation of #lttng_event_probe_attr. + +- If the lttng_event::type member is #LTTNG_EVENT_USERSPACE_PROBE, then + the recording event rule descriptor has a Linux uprobe location + (you called lttng_event_set_userspace_probe_location() on it to + set it). + +Destroy a recording event rule descriptor with lttng_event_destroy(). +*/ struct lttng_event { /* Offset 0 */ + /// \ref api-rer-conds-inst-pt-type "Instrumentation point type condition". enum lttng_event_type type; /* Offset 4 */ + /*! + @brief \ref api-rer-conds-event-name "Event name" pattern + condition. + + If empty, lttng_enable_event(), + lttng_enable_event_with_filter(), and + lttng_enable_event_with_exclusions() use * (match + events with any name). + + If the lttng_event::type member is #LTTNG_EVENT_PROBE, + #LTTNG_EVENT_FUNCTION, or #LTTNG_EVENT_USERSPACE_PROBE, then + this member is actually the name of the created Linux + kprobe/kretprobe/uprobe instrumentation point (future event + name). + + If this structure is an + \ref api-rer-inst-pt-descr "instrumentation point descriptor", + then this member is the name of the LTTng tracepoint, Linux + system call, or Java/Python logger. + */ char name[LTTNG_SYMBOL_NAME_LEN]; /* Offset 260 */ + /*! + @brief + Operand of the + \ref api-rer-conds-ll "instrumentation point log level condition". + */ enum lttng_loglevel_type loglevel_type; /* Offset 264 */ + /*! + @brief Value of the + \ref api-rer-conds-ll "instrumentation point log level condition". + + This member must be one of the enumerators of + #lttng_loglevel, #lttng_loglevel_jul, #lttng_loglevel_log4j, or + #lttng_loglevel_python, depending on the + \lt_obj_domain when you call lttng_enable_event(), + lttng_enable_event_with_filter(), or + lttng_enable_event_with_exclusions(). + + If this structure is an + \ref api-rer-inst-pt-descr "instrumentation point descriptor", + then this member is the log level of the LTTng tracepoint or + Java/Python logger. + */ int loglevel; /* Offset 268 */ + /*! + @brief + 1 if this recording event rule is enabled, or 0 otherwise. + + This is a read-only member. + + @sa lttng_enable_event() -- + Creates or enables a recording event rule. + @sa lttng_disable_event_ext() -- + Disables a recording event rule. + */ int32_t enabled; /* Does not apply: -1 */ /* Offset 272 */ + /*! + @brief + ID of the process which offers the instrumentation point + described by this structure. + + This is a read-only member. + + This member is \em not part of a recording event rule. + */ pid_t pid; /* Offset 276 */ - unsigned char filter; /* filter enabled ? */ + /*! + @brief + 1 if the recording event rule described by this has an + \ref api-rer-conds-filter "event payload and context filter" + expression, or 0 otherwise. + + This is a read-only member: use the \lt_p{filter_expr} parameter + of lttng_enable_event_with_filter() or + lttng_enable_event_with_exclusions() when you create a + recording event rule to set an event payload and context + filter expression. + + If this member is 1, then get the actual filter expression + string with lttng_event_get_filter_expression(). + */ + unsigned char filter; /* Offset 277 */ - unsigned char exclusion; /* exclusions added ? */ + /*! + @brief + 1 if the recording event rule described by this has + \ref api-rer-conds-event-name "event name" exclusion + patterns (part of the event name condition), or 0 otherwise. + + This is a read-only member: use the + \lt_p{event_name_exclusion_count} and + \lt_p{event_name_exclusions} parameters of + lttng_enable_event_with_exclusions() when you create a recording + event rule to set event name exclusion patterns. + + If this member is 1, then get the actual event name exclusion + patterns with lttng_event_get_exclusion_name_count() and + lttng_event_get_exclusion_name(). + */ + unsigned char exclusion; /* Offset 278 */ char padding2[2]; /* Offset 280 */ - /* Event flag, from 2.6 and above. */ + /*! + @brief + \ref api-rer-inst-pt-descr "Instrumentation point descriptor" + flags (bitwise OR). + + This is a read-only member. + + This member is \em not part of a recording event rule. + */ enum lttng_event_flag flags; /* Offset 284 */ @@ -285,249 +1362,989 @@ struct lttng_event { } extended; /* Offset 296 */ - /* Per event type configuration */ - union { + /*! + @brief + Linux kprobe/kretprobe recording event rule configuration. + + @ingroup api_rer + */ + union lttng_event_attr_u { + /*! + @brief + Linux kprobe/kretprobe location. + + Only valid when the lttng_event::type member is + #LTTNG_EVENT_PROBE or #LTTNG_EVENT_FUNCTION. + */ struct lttng_event_probe_attr probe; + struct lttng_event_function_attr ftrace; char padding[LTTNG_EVENT_PADDING2]; - } attr; + } + + /*! + @brief + Linux kprobe/kretprobe recording event rule configuration. + + Only valid when the lttng_event::type member is + #LTTNG_EVENT_PROBE or #LTTNG_EVENT_FUNCTION. + */ + attr; }; #define LTTNG_EVENT_FIELD_PADDING LTTNG_SYMBOL_NAME_LEN + 32 + +/*! +@brief + LTTng tracepoint field description. + +@ingroup api_inst_pt + +lttng_list_tracepoint_fields() sets a pointer to an array of all the +tracepoint field descriptions of a given \lt_obj_domain. +*/ struct lttng_event_field { + /// Field name. char field_name[LTTNG_SYMBOL_NAME_LEN]; + + /// Field data type. enum lttng_event_field_type type; + char padding[LTTNG_EVENT_FIELD_PADDING]; + + /*! + @brief + \ref api-rer-inst-pt-descr "Descriptor" of the tracepoint + which contains this field. + */ struct lttng_event event; + + /*! + @brief + 0 if LTTng writes this field to an event record, or 1 + otherwise. + */ int nowrite; }; -/* - * List the event(s) of a session channel. - * - * Both handle and channel_name CAN NOT be NULL. - * - * Return the size (number of entries) of the "lttng_event" array. Caller must - * free events. On error a negative LTTng error code is returned. - */ +/*! +@brief + Sets \lt_p{*event_rules} to the descriptors of the + \lt_obj_rers of the \lt_obj_channel named \lt_p{channel_name} + within the recording session handle \lt_p{handle}. + +@ingroup api_channel + +@param[in] handle + Recording session handle which contains the name of the + recording session and the summary + of the \lt_obj_domain which own the channel (named + \lt_p{channel_name}) of which to get the recording event rule + descriptors. +@param[in] channel_name + Name of the channel, within \lt_p{handle}, of which to get all the + recording event rule descriptors. +@param[out] event_rules + @parblock + On success, this function sets \lt_p{*event_rules} + to the recording event rule descriptors. + + Free \lt_p{*event_rules} with free(). + @endparblock + +@returns + The number of items in \lt_p{*event_rules} on success, or a + \em negative #lttng_error_code enumerator otherwise. + +@lt_pre_conn +@lt_pre_not_null{handle} +@lt_pre_valid_c_str{handle->session_name} +@lt_pre_sess_exists{handle->session_name} +@pre + \lt_p{handle->domain} is valid as per the documentation of + #lttng_domain. +@lt_pre_not_null{channel_name} +@pre + \lt_p{channel_name} names an existing channel within the recording + session and tracing domain of \lt_p{handle}. +@lt_pre_not_null{event_rules} +*/ LTTNG_EXPORT extern int lttng_list_events(struct lttng_handle *handle, const char *channel_name, - struct lttng_event **events); + struct lttng_event **event_rules); -/* - * Create an lttng_event. - * - * This creation function, introduced in LTTng 2.11, works around - * the fact that the layout of the 'lttng_event' is publicly exposed. - * - * It allocates a larger object which exposes the same public fields - * as a 'struct lttng_event', but also allows the use of the following extended - * attribute setters: - * - lttng_event_set_userspace_probe_location(); - * - * Events created through this function must be destroyed using - * lttng_event_destroy(). - * - * Returns a zeroed lttng_event on success, NULL on error. - */ +/*! +@brief + Creates and returns an empty recording event rule descriptor. + +@ingroup api_rer + +After you create a recording event rule descriptor with this function, +you can modify its properties and call +lttng_enable_event_with_exclusions() to create and enable a recording +event rule. + +@returns + @parblock + New recording event rule descriptor. + + Destroy the returned recording event rule descriptor with + lttng_event_destroy(). + @endparblock + +@sa lttng_event_destroy() -- + Destroys a recording event rule descriptor. +*/ LTTNG_EXPORT extern struct lttng_event *lttng_event_create(void); -/* - * Destroy an lttng_event. - * - * This destruction function, introduced in LTTng 2.11, should only - * be used with events created by lttng_event_create(). - */ -LTTNG_EXPORT extern void lttng_event_destroy(struct lttng_event *event); +/*! +@brief + Destroys the recording event rule descriptor \lt_p{event_rule}. -/* - * Get the filter expression of a specific LTTng event. - * - * If the call is successful, then the filter expression's address is put - * in *filter_expression. If the event has no filter expression, - * *filter_expression is set to NULL. The caller does NOT own - * *filter_expression. - * - * Returns 0 on success, or a negative LTTng error code on error. - */ -LTTNG_EXPORT extern int lttng_event_get_filter_expression(struct lttng_event *event, - const char **filter_string); +@ingroup api_rer -/* - * Get the number of exclusion names of a specific LTTng event. - * - * Returns the number of exclusion names on success, or a negative - * LTTng error code on error. - */ -LTTNG_EXPORT extern int lttng_event_get_exclusion_name_count(struct lttng_event *event); +@note + This function doesn't destroy the recording event rule + which \lt_p{event_rule} describes: you can't destroy a + recording event rule. -/* - * Get an LTTng event's exclusion name at a given index. - * - * If the call is successful, then the exclusion name string's address - * is put in *exclusion_name. The caller does NOT own *exclusion_name. - * - * Returns 0 on success, or a negative LTTng error code on error. - */ -LTTNG_EXPORT extern int lttng_event_get_exclusion_name(struct lttng_event *event, +@param[in] event_rule + @parblock + Recording event rule descriptor to destroy. + + May be \c NULL. + @endparblock + +@pre + If not \c NULL, \lt_p{event_rule} was created with + lttng_event_create(). + +@sa lttng_event_create() -- + Creates an empty recording event rule descriptor. +*/ +LTTNG_EXPORT extern void lttng_event_destroy(struct lttng_event *event_rule); + +/*! +@brief + Sets \lt_p{*filter_expr} to the + \ref api-rer-conds-filter "event payload and context filter" + expression of the recording event rule described by + \lt_p{event_rule}. + +@ingroup api_rer + +@param[in] event_rule + Descriptor of the recording event rule of which to get the event + payload and context filter expression. +@param[out] filter_expr + @parblock + On success, this function sets \lt_p{*filter_expr} + to: + +
+
+ If \lt_p{event_rule} has an event payload and context filter + expression +
+ The event payload and context filter + expression of \lt_p{event_rule}. + + \lt_p{*filter_expr} remains valid as long as \lt_p{event_rule} + exists and you don't modify it. + +
Otherwise +
\c NULL +
+ @endparblock + +@returns + 0 on success, or a \em negative #lttng_error_code enumerator + otherwise. + +@lt_pre_not_null{event_rule} +@lt_pre_not_null{filter_expr} + +@sa lttng_event::filter -- + Indicates whether or not a recording event rule has an event payload + and context filter. +*/ +LTTNG_EXPORT extern int lttng_event_get_filter_expression(struct lttng_event *event_rule, + const char **filter_expr); + +/*! +@brief + Returns the number of \ref api-rer-conds-event-name "event name" + exclusion patterns of the recording + event rule described by \lt_p{event_rule}. + +@ingroup api_rer + +@param[in] event_rule + Descriptor of the recording event rule of which to get the number + of event name exclusion patterns. + +@returns + Number of event name exclusion patterns of \lt_p{event_rule}, or a + \em negative #lttng_error_code enumerator otherwise. + +@lt_pre_not_null{event_rule} + +@sa lttng_event_get_exclusion_name() -- + Returns an event name exclusion pattern by index of a recording + event rule. +@sa lttng_event::exclusion -- + Indicates whether or not a recording event rule has event name + exclusion patterns. +*/ +LTTNG_EXPORT extern int lttng_event_get_exclusion_name_count(struct lttng_event *event_rule); + +/*! +@brief + Sets \lt_p{*event_name_exclusion} to the + \ref api-rer-conds-event-name "event name" exclusion + pattern at index \lt_p{index} of the recording event rule described + by \lt_p{event_rule}. + +@ingroup api_rer + +@param[in] event_rule + Descriptor of the recording event rule of which to get the event + name exclusion pattern at index \lt_p{index}. +@param[in] index + Index of the event name exclusion pattern to get from + \lt_p{event_rule}. +@param[out] event_name_exclusion + @parblock + On success, this function sets + \lt_p{*event_name_exclusion} to the event name exclusion pattern at + index \lt_p{index} of + \lt_p{event_rule}. + + \lt_p{*event_name_exclusion} remains valis as long as + \lt_p{event_rule} exists and you don't modify it. + @endparblock + +@returns + 0 on success, or a \em negative #lttng_error_code enumerator + otherwise. + +@lt_pre_not_null{event_rule} +@pre + \lt_p{index} is less than the number of event name exclusion + patterns (as returned by lttng_event_get_exclusion_name_count()) + of \lt_p{event_rule}. +@lt_pre_not_null{event_name_exclusion} + +@sa lttng_event_get_exclusion_name_count() -- + Returns the number of event name exclusion patterns of a recording + event rule. +*/ +LTTNG_EXPORT extern int lttng_event_get_exclusion_name(struct lttng_event *event_rule, size_t index, - const char **exclusion_name); + const char **event_name_exclusion); -/* - * Get the userspace probe location of a specific LTTng event. - * If the call is successful, then a pointer to the probe location is returned. - * If the event has no probe location a NULL pointer is returned. The caller - * does not own the returned probe location. - */ +/*! +@brief + Returns the Linux uprobe location of the recording event rule + described by \lt_p{event_rule}. + +@ingroup api_rer + +@param[in] event_rule + Descriptor of the recording event rule of which to get the + Linux uprobe location. + +@returns + @parblock + Linux uprobe location of the recording event rule described by + \lt_p{event_rule}, or \c NULL if none. + + The returned location remains valid as long as \lt_p{event_rule} + exists and you don't modify it. + @endparblock + +@lt_pre_not_null{event_rule} +@pre + \lt_p{event_rule->type} (see lttng_event::type) is + #LTTNG_EVENT_USERSPACE_PROBE. + +@sa lttng_event_set_userspace_probe_location() -- + Sets the Linux uprobe location of a recording event rule. +@sa \ref api-rer-conds-inst-pt-type "Instrumentation point type condition". +*/ LTTNG_EXPORT extern const struct lttng_userspace_probe_location * -lttng_event_get_userspace_probe_location(const struct lttng_event *event); +lttng_event_get_userspace_probe_location(const struct lttng_event *event_rule); -/* - * Set an LTTng event's userspace probe location. - * - * If the call is successful, then the probe location is set to the event. The - * ownership of the probe_location is given to the event. - * - * Note that the event must have been created using 'lttng_event_create()' in - * order for this call to succeed. - * - * Returns 0 on success, or a negative LTTng error code on error. - */ +/*! +@brief + Sets the Linux uprobe location of the recording event rule described + by \lt_p{event_rule} to \lt_p{location}. + +@ingroup api_rer + +@param[in] event_rule + Descriptor of the recording event rule of which to set the + Linux uprobe location to \lt_p{location}. +@param[in] location + New Linux uprobe location of \lt_p{event_rule}. + +@returns + 0 on success, or a \em negative #lttng_error_code enumerator + otherwise. + +@lt_pre_not_null{event_rule} +@pre + \lt_p{event_rule} was created with lttng_event_create(). +@pre + \lt_p{event_rule->type} (see lttng_event::type) is + #LTTNG_EVENT_USERSPACE_PROBE. +@lt_pre_not_null{location} + +@post + On success, \lt_p{*location} is invalid + (its ownership is transfered to \lt_p{event_rule}). + +@sa lttng_event_get_userspace_probe_location() -- + Returns the Linux uprobe location of a recording event rule. +@sa \ref api-rer-conds-inst-pt-type "Instrumentation point type condition". +*/ LTTNG_EXPORT extern int -lttng_event_set_userspace_probe_location(struct lttng_event *event, - struct lttng_userspace_probe_location *probe_location); +lttng_event_set_userspace_probe_location(struct lttng_event *event_rule, + struct lttng_userspace_probe_location *location); -/* - * List the available tracepoints of a specific lttng domain. - * - * The handle CAN NOT be NULL. - * - * Return the size (number of entries) of the "lttng_event" array. Caller must - * free events. On error a negative LTTng error code is returned. - */ +/*! +@brief + Sets \lt_p{*descrs} to the + \ref api-rer-inst-pt-descr "descriptors" of the + available LTTng tracepoints or Java/Python loggers for the + \lt_obj_domain of \lt_p{handle}. + +@ingroup api_inst_pt + +@param[in] handle + @parblock + Recording session handle which contains the summary of the + \lt_obj_domain which offers the LTTng tracepoints or Java/Python + loggers of which to get the descriptors. + + This function ignores \lt_p{handle->session_name}. + @endparblock +@param[out] descrs + @parblock + On success, this function sets \lt_p{*descrs} + to the descriptors of the available tracepoints or Java/Python + loggers of \lt_p{handle}. + + Free \lt_p{*descrs} with free(). + @endparblock + +@returns + The number of items in \lt_p{*descrs} on success, or a \em + negative #lttng_error_code enumerator otherwise. + +@lt_pre_conn +@lt_pre_not_null{handle} +@pre + \lt_p{handle->domain} is valid as per the documentation of + #lttng_domain. +@lt_pre_not_null{descrs} + +@sa lttng_list_tracepoint_fields() -- + Returns all the field descriptions of all the available LTTng + tracepoints. +@sa lttng_list_syscalls() -- + Returns the descriptors of all the available Linux system calls. +*/ LTTNG_EXPORT extern int lttng_list_tracepoints(struct lttng_handle *handle, - struct lttng_event **events); + struct lttng_event **descrs); -/* - * List the available tracepoints fields of a specific lttng domain. - * - * The handle CAN NOT be NULL. - * - * Return the size (number of entries) of the "lttng_event_field" array. - * Caller must free fields. On error a negative LTTng error code is - * returned. - */ +/*! +@brief + Sets \lt_p{*fields} to the field descriptions of all the available + LTTng tracepoints for the \lt_obj_domain of \lt_p{handle}. + +@ingroup api_inst_pt + +@param[in] handle + @parblock + Recording session handle which contains the summary of the + \lt_obj_domain which offers the LTTng tracepoints of which to get + the field descriptions. + + This function ignores \lt_p{handle->session_name}. + @endparblock +@param[out] fields + @parblock + On success, this function sets \lt_p{*fields} + to the descriptions of the available LTTng tracepoint fields of + \lt_p{handle}. + + Each #lttng_event_field instance in \lt_p{*fields} contains a + pointer to the \ref api-rer-inst-pt-descr "descriptor" of + a tracepoint which contains the described field + (lttng_event_field::event member). + + Free \lt_p{*fields} with free(). + @endparblock + +@returns + The number of items in \lt_p{*fields} on success, or a \em + negative #lttng_error_code enumerator otherwise. + +@lt_pre_conn +@lt_pre_not_null{handle} +@pre + \lt_p{handle->domain} is valid as per the documentation of + #lttng_domain. +@lt_pre_not_null{fields} + +@sa lttng_list_tracepoints() -- + Returns the descriptors of all the available LTTng tracepoints + or Java/Python loggers. +@sa lttng_list_syscalls() -- + Returns the descriptors of all the available Linux system calls. +*/ LTTNG_EXPORT extern int lttng_list_tracepoint_fields(struct lttng_handle *handle, struct lttng_event_field **fields); -/* - * List the available kernel syscall. - * - * Return the size (number of entries) of the allocated "lttng_event" array. - * All events in will be of type syscall. Caller must free events. On error a - * negative LTTng error code is returned. - */ -LTTNG_EXPORT extern int lttng_list_syscalls(struct lttng_event **events); +/*! +@brief + Sets \lt_p{*descrs} to the + \ref api-rer-inst-pt-descr "descriptors" of the + available Linux system calls for the + #LTTNG_DOMAIN_KERNEL tracing domain. -/* - * Add context to event(s) for a specific channel (or for all). - * - * If the channel_name is NULL and they are no channel for the domain, the - * default channel is created (channel0). The context is then added on ALL - * channels since no name was specified. - * - * The event_name is ignored since adding a context to an event is not possible - * for now. - * - * Return 0 on success else a negative LTTng error code. - */ +@ingroup api_inst_pt + +@param[out] descrs + @parblock + On success, this function sets \lt_p{*descrs} + to the available system calls. + + The #lttng_event instances of \lt_p{*descrs} have an + lttng_event::flags member which indicates whether the described + system call is 32-bit, 64-bit, or both. + + Free \lt_p{*descrs} with free(). + @endparblock + +@returns + The number of items in \lt_p{*descrs} on success, or a \em + negative #lttng_error_code enumerator otherwise. + +@lt_pre_conn +@lt_pre_not_null{descrs} + +@sa lttng_list_tracepoint_fields() -- + Returns all the field descriptions of all the available LTTng + tracepoints. +@sa lttng_list_syscalls() -- + Returns the descriptors of all the available Linux system calls. +*/ +LTTNG_EXPORT extern int lttng_list_syscalls(struct lttng_event **descrs); + +/*! +@brief + Makes the future \ref api_rer "event records" of the + \lt_obj_channel named \lt_p{channel_name} (or of a default channel + or all the channels if \c NULL) within the + \lt_obj_session and \lt_obj_domain of \lt_p{handle} + have a context field described by \lt_p{context_field_descriptor}. + +@ingroup api_channel + +Context values (for example, the ID of the current process, the +instruction pointer, or the hostname) are always available during +tracing. This function makes LTTng record a specific context value as a +field for each future event record of the selected channel(s). + +@param[in] handle + Recording session handle which contains the name of the recording + session and the summary of the \lt_obj_domain which own the + channel(s) to select. +@param[in] context_field_descriptor + Descriptor of the context field to add to each event record of + the selected channel(s). +@param[in] event_name + Unused: must be \c NULL. +@param[in] channel_name + @parblock + Name of the channel to select. + + If \c NULL, then: + +
+
+ If the recording session and tracing domain of + \lt_p{handle} have no channels +
+ LTTng creates a new, default channel named \c channel0 within + \lt_p{handle} which becomes the selected channel. + +
Otherwise +
+ LTTng selects all the channels of \lt_p{handle}. +
+ @endparblock + +@returns + 0 on success, or a \em negative #lttng_error_code enumerator + otherwise. + +@lt_pre_conn +@lt_pre_not_null{handle} +@lt_pre_valid_c_str{handle->session_name} +@lt_pre_sess_exists{handle->session_name} +@lt_pre_sess_never_active{handle->session_name} +@pre + \lt_p{handle->domain} is valid (you passed a + \lt_obj_domain summary to + lttng_create_handle() when you created \lt_p{handle}). +@pre + \lt_p{context_field_descriptor} is valid according to the + documentation of #lttng_event_context. +@pre + \lt_p{event_name} is \c NULL. +@pre + If not \c NULL, \lt_p{channel_name} names an + existing channel within the recording session and tracing domain of + \lt_p{handle}. +*/ LTTNG_EXPORT extern int lttng_add_context(struct lttng_handle *handle, - struct lttng_event_context *ctx, + struct lttng_event_context *context_field_descriptor, const char *event_name, const char *channel_name); -/* - * Create or enable an event (or events) for a channel. - * - * If the event you are trying to enable does not exist, it will be created, - * else it is enabled. If channel_name is NULL, the default channel is used - * (channel0). - * - * The handle and ev params can not be NULL. - * - * Return 0 on success else a negative LTTng error code. - */ -LTTNG_EXPORT extern int -lttng_enable_event(struct lttng_handle *handle, struct lttng_event *ev, const char *channel_name); +/*! +@brief + Alias of lttng_enable_event_with_exclusions() which passes the + \ref api-rer-conds-filter "event payload and context filter" + expression of \lt_p{event_rule} + as the \lt_p{filter_expr} parameter and the + \ref api-rer-conds-event-name "event name" exclusion patterns + of \lt_p{event_rule} as the + \lt_p{event_name_exclusion_count} and + \lt_p{event_name_exclusions} parameters. -/* - * Create or enable an event with a specific filter. - * - * If the event you are trying to enable does not exist, it will be created, - * else it is enabled. - * If ev is NULL, all events are enabled with that filter. - * If channel_name is NULL, the default channel is used (channel0) and created - * if not found. - * If filter_expression is NULL, an event without associated filter is - * created. - * - * Return 0 on success else a negative LTTng error code. - */ +@ingroup api_rer + +This function is equivalent to: + +@code +int ret; +int i; +char **event_name_exclusions = NULL; +const char *filter_expr = NULL; +const int event_name_exclusion_count = lttng_event_get_exclusion_name_count(event_rule); + +assert(event_name_exclusion_count >= 0); + +if (event_name_exclusion_count > 0) { + event_name_exclusions = calloc(event_name_exclusion_count, + sizeof(*event_name_exclusions)); + assert(event_name_exclusions); + + for (i = 0; i < event_name_exclusion_count; i++) { + const char *event_name_exclusion; + + ret = lttng_event_get_exclusion_name(event_rule, (size_t) i, + &event_name_exclusion); + assert(ret == 0); + event_name_exclusions[i] = (char *) event_name_exclusion; + } +} + +ret = lttng_event_get_filter_expression(event_rule, &filter_expr); +assert(ret == 0); +ret = lttng_enable_event_with_exclusions(handle, event_rule, channel_name, + filter_expr, + event_name_exclusion_count, + event_name_exclusions); +free(event_name_exclusions); +return ret; +@endcode +*/ +LTTNG_EXPORT extern int lttng_enable_event(struct lttng_handle *handle, + struct lttng_event *event_rule, + const char *channel_name); + +/*! +@brief + Alias of lttng_enable_event_with_exclusions() which passes the + the \ref api-rer-conds-event-name "event name" exclusion patterns + of \lt_p{event_rule} as the + \lt_p{event_name_exclusion_count} and + \lt_p{event_name_exclusions} parameters. + +@ingroup api_rer + +This function is equivalent to: + +@code +int ret; +int i; +char **event_name_exclusions = NULL; +const char *filter_expr = NULL; +const int event_name_exclusion_count = lttng_event_get_exclusion_name_count(event_rule); + +assert(event_name_exclusion_count >= 0); + +if (event_name_exclusion_count > 0) { + event_name_exclusions = calloc(event_name_exclusion_count, + sizeof(*event_name_exclusions)); + assert(event_name_exclusions); + + for (i = 0; i < event_name_exclusion_count; i++) { + const char *event_name_exclusion; + + ret = lttng_event_get_exclusion_name(event_rule, (size_t) i, + &event_name_exclusion); + assert(ret == 0); + event_name_exclusions[i] = (char *) event_name_exclusion; + } +} + +ret = lttng_enable_event_with_exclusions(handle, event_rule, channel_name, + filter_expr, + event_name_exclusion_count, + event_name_exclusions); +free(event_name_exclusions); +return ret; +@endcode +*/ LTTNG_EXPORT extern int lttng_enable_event_with_filter(struct lttng_handle *handle, - struct lttng_event *event, + struct lttng_event *event_rule, const char *channel_name, - const char *filter_expression); + const char *filter_expr); -/* - * Create or enable an event with a filter and/or exclusions. - * - * If the event you are trying to enable does not exist, it will be created, - * else it is enabled. - * If ev is NULL, all events are enabled with the filter and exclusion options. - * If channel_name is NULL, the default channel is used (channel0) and created - * if not found. - * If filter_expression is NULL, an event without associated filter is - * created. - * If exclusion count is zero, the event will be created without exclusions. - * - * Return 0 on success else a negative LTTng error code. - */ +/*! +@brief + Creates or enables a recording event rule + described by \lt_p{event_rule}, having the + \ref api-rer-conds-filter "event payload and context filter" + expression \lt_p{filter_expr} and the + \ref api-rer-conds-event-name "event name" exclusion patterns + \lt_p{event_name_exclusions}, within + the \lt_obj_channel named \lt_p{channel_name} + (or within a default channel if \c NULL) within the recording + session handle \lt_p{handle}. + +@ingroup api_rer + +This function, depending on the +\ref api-rer-conds-inst-pt-type "instrumentation point type", +\ref api-rer-conds-event-name "event name", +and \ref api-rer-conds-ll "log level" conditions of \lt_p{event_rule}, +as well as on \lt_p{filter_expr} and \lt_p{event_name_exclusions}: + +
+
+ The conditions and parameters describe an existing recording event + rule within the selected channel +
+ Enables the existing recording event rule. + +
Otherwise +
+ Creates and enables a new recording event rule within the + selected channel. +
+ +If \lt_p{event_rule->type} is #LTTNG_EVENT_ALL and +\lt_p{handle->domain.type} is #LTTNG_DOMAIN_KERNEL, then this +function actually creates or enables two recording event rules: one with +the #LTTNG_EVENT_TRACEPOINT type, and one with the #LTTNG_EVENT_SYSCALL +type. + +@param[in] handle + Recording session handle which contains the name of the recording + session and the summary of the \lt_obj_domain which own the selected + channel. +@param[in] event_rule + @parblock + Descriptor of the recording event rule to create or enable. + + This function: + + - Ignores any event payload and context filter + expression within \lt_p{event_rule}: it always uses + \lt_p{filter_expr}. + + - Ignores any event name exclusion patterns within + \lt_p{event_rule}: it always uses \lt_p{event_name_exclusions}. + @endparblock +@param[in] channel_name + @parblock + Name of the channel, within \lt_p{handle}, to select (that is, + containing the recording event rule to create or enable). + + If \c NULL, then this function uses \c channel0. If no channel named + \c channel0 within \lt_p{handle} exists, then LTTng creates a new, + default channel named as such and selects it before it creates the + recording event rule described by \lt_p{event_rule}. + @endparblock +@param[in] filter_expr + @parblock + Event payload and context filter expression of the recording + event rule to create or enable. + + If \c NULL, the created or enabled recording event + rule has no event payload and context filter expression. + + This parameter, even when \c NULL, overrides any existing + event payload and context filter expression within + \lt_p{event_rule}. + @endparblock +@param[in] event_name_exclusion_count + Number of items in \lt_p{event_name_exclusions}. +@param[in] event_name_exclusions + @parblock + Event name exclusion patterns of the recording event rule to create + or enable. + + This function copies the strings of this array. + + \lt_p{event_name_exclusion_count} indicates the size of this + array, which may be \c NULL if \lt_p{event_name_exclusion_count} + is 0. + + This parameter, even when \c NULL or empty, overrides any existing + event name exclusion patterns within \lt_p{event_rule}. + @endparblock + +@returns + 0 on success, or a \em negative #lttng_error_code enumerator + otherwise. + +@lt_pre_conn +@lt_pre_not_null{handle} +@lt_pre_valid_c_str{handle->session_name} +@lt_pre_sess_exists{handle->session_name} +@pre + \lt_p{handle->domain} is valid as per the documentation of + #lttng_domain. +@lt_pre_not_null{event_rule} +@pre + \lt_p{event_rule} is \ref api-rer-valid-event-struct "valid". +@pre + If \lt_p{handle->domain.type} is \em not + #LTTNG_DOMAIN_KERNEL, then \lt_p{event_rule->type} is + #LTTNG_EVENT_TRACEPOINT. +@pre + If \lt_p{handle->domain.type} is \em not + #LTTNG_DOMAIN_UST, then \lt_p{event_name_exclusion_count} + is 0. +@pre + If this function must enable an existing recording event + rule, then the recording event rule to enable is disabled. +@pre + If not \c NULL, \lt_p{channel_name} names an + existing channel within the recording session and tracing domain of + \lt_p{handle}. +@pre + If \lt_p{channel_name} is \c NULL, then + \lt_p{handle} contains either no channels or a default channel named + \c channel0. +@pre + If not \c NULL, \lt_p{filter_expr} is a valid + event payload and context filter expression. +@pre + \lt_p{event_name_exclusion_count} â‰¥ 0. + +@sa lttng_enable_event() -- + Alias which calls this function with the event payload and context + filter expression and event name exclusion patterns of the + recording event rule descriptor. +@sa lttng_enable_event_with_filter() -- + Alias which calls this function with the event name exclusion + patterns of the recording event rule descriptor. +@sa lttng_disable_event_ext() -- + Disables a recording event rule. +*/ LTTNG_EXPORT extern int lttng_enable_event_with_exclusions(struct lttng_handle *handle, - struct lttng_event *event, + struct lttng_event *event_rule, const char *channel_name, - const char *filter_expression, - int exclusion_count, - char **exclusion_names); + const char *filter_expr, + int event_name_exclusion_count, + char **event_name_exclusions); -/* - * Disable event(s) of a channel and domain. - * - * If name is NULL, all events are disabled. - * If channel_name is NULL, the default channel is used (channel0). - * - * Return 0 on success else a negative LTTng error code. - */ +/*! +@brief + Alias of lttng_disable_event_ext() which creates a temporary + recording event rule descriptor, settings its + lttng_event::name member to \lt_p{event_name} if not \c NULL and + its lttng_event::type member to #LTTNG_EVENT_ALL. + +@ingroup api_rer + +This function is equivalent to: + +@code +struct lttng_event event_rule = { 0 }; + +event_rule.type = LTTNG_EVENT_ALL; + +if (event_name) { + strcpy(event_rule.name, event_name); +} + +event_rule.loglevel = -1; +return lttng_disable_event_ext(handle, &event_rule, channel_name, NULL); +@endcode +*/ LTTNG_EXPORT extern int -lttng_disable_event(struct lttng_handle *handle, const char *name, const char *channel_name); +lttng_disable_event(struct lttng_handle *handle, const char *event_name, const char *channel_name); -/* - * Disable event(s) of a channel and domain. - * - * Takes a struct lttng_event as parameter. - * If channel_name is NULL, the default channel is used (channel0). - * - * Currently, @filter_expression must be NULL. (disabling specific - * filter expressions not implemented) - * Currently, only LTTNG_EVENT_ALL and LTTNG_EVENT_SYSCALL event types - * are implemented for field @ev. - * - * Return 0 on success else a negative LTTng error code. - */ +/*! +@brief + Disables recording event rules by + \ref api-rer-conds-inst-pt-type "instrumentation point type" and + \ref api-rer-conds-event-name "event name" condition within the + \lt_obj_channel named \lt_p{channel_name} + (or within a default channel if \c NULL) within the recording + session handle \lt_p{handle}. + +@ingroup api_rer + +Depending on \lt_p{event_rule->name}, this function: + +
+
Not empty +
+ Depending on \lt_p{event_rule->type}: + +
+
#LTTNG_EVENT_ALL +
+ Disables \em all the recording event rules of which the event + name pattern is exactly \lt_p{event_rule->name} within the + selected channel. + +
Otherwise +
+ Disables all the recording event rules of which the + instrumentation point type is + \lt_p{event_rule->type} and the event + name pattern is exactly \lt_p{event_rule->name} within the + selected channel. + + Only supported when \lt_p{handle->domain.type} is + #LTTNG_DOMAIN_KERNEL. +
+ +
Empty +
+ Depending on \lt_p{event_rule->type}: + +
+
#LTTNG_EVENT_ALL +
+ Disables \em all the recording event rules within the selected + channel. + +
Otherwise +
+ Disables all the recording event rules of which the + instrumentation point type is + \lt_p{event_rule->type} within the + selected channel. + + Only supported when \lt_p{handle->domain.type} is + #LTTNG_DOMAIN_KERNEL. +
+
+ +This function ignores all the other \ref api-rer-conds "condition" +properties of \lt_p{event_rule}. + +To use this function, create a temporary, zeroed +\link #lttng_event recording event rule descriptor\endlink, +setting only: + +- Optional, and only if \lt_p{handle->domain.type} + is #LTTNG_DOMAIN_KERNEL: its lttng_event::type member. + +- Optional: its lttng_event::name member + +- Its lttng_event::loglevel member to -1. + +For example: + +@code +struct lttng_event event_rule = { 0 }; + +event_rule.type = LTTNG_EVENT_SYSCALL; +strcpy(event_rule.name, "open*"); +event_rule.loglevel = -1; +@endcode + +@param[in] handle + Recording session handle which contains the name of the recording + session and the summary of the \lt_obj_domain which own the selected + channel. +@param[in] event_rule + @parblock + Recording event rule descriptor which contains the + instrumentation point type and event name conditions to consider + to disable recording event rules within the selected channel. + @endparblock +@param[in] channel_name + @parblock + Name of the channel, within \lt_p{handle}, to select (that is, + containing the recording event rules to disable). + + If \c NULL, then this function uses \c channel0. + @endparblock +@param[in] filter_expr + Unused: must be \c NULL. + +@returns + 0 on success, or a \em negative #lttng_error_code enumerator + otherwise. + +@lt_pre_conn +@lt_pre_not_null{handle} +@lt_pre_valid_c_str{handle->session_name} +@lt_pre_sess_exists{handle->session_name} +@pre + \lt_p{handle->domain} is valid as per the documentation of + #lttng_domain. +@lt_pre_not_null{event_rule} +@pre + If \lt_p{handle->domain.type} is \em not + #LTTNG_DOMAIN_KERNEL, then \lt_p{event_rule->type} + is #LTTNG_EVENT_ALL. +@pre + If not #LTTNG_EVENT_ALL, then + \lt_p{event_rule->type} is the instrumentation point type of at + least one Linux kernel recording event rule within the selected + channel. +@pre + If not empty, then \lt_p{event_rule->name} is the + exact event name pattern of at least one recording event rule within + the selected channel. +@pre + The recording event rules to disable are enabled. +@pre + If not \c NULL, then \lt_p{channel_name} names an + existing channel within the recording session and tracing domain of + \lt_p{handle}. +@pre + If \lt_p{channel_name} is \c NULL, then the + channel named \c channel0 exists within the recording session and + tracing domain of \lt_p{handle}. + +@sa lttng_disable_event() -- + Alias which calls this function with \lt_p{event_rule->type} + set to #LTTNG_EVENT_ALL. +@sa lttng_enable_event_with_exclusions() -- + Creates or enables a recording event rule. +*/ LTTNG_EXPORT extern int lttng_disable_event_ext(struct lttng_handle *handle, - struct lttng_event *ev, + struct lttng_event *event_rule, const char *channel_name, - const char *filter_expression); + const char *filter_expr); #ifdef __cplusplus } diff --git a/include/lttng/handle.h b/include/lttng/handle.h index 14a0e5407..08f9eaad9 100644 --- a/include/lttng/handle.h +++ b/include/lttng/handle.h @@ -15,42 +15,100 @@ extern "C" { #endif +/*! +@addtogroup api_session +@{ +*/ + /* * Handle used as a context for commands. * * The structures should be initialized to zero before use. */ #define LTTNG_HANDLE_PADDING1 16 + +/*! +@brief + Recording session handle. + +Such a structure is a pair of a \ref api_session "recording session" +name and a \ref api-channel-domain "tracing domain" summary. + +Some functions which accept a recording session handle parameter ignore +the recording session name or the tracing domain summary. + +Create a recording session handle with lttng_create_handle(). + +Destroy a recording session handle with lttng_destroy_handle(). +*/ struct lttng_handle { + /// \ref api_session "Recording session" name. char session_name[LTTNG_NAME_MAX]; + + /// \ref api-channel-domain "Tracing domain" summary. struct lttng_domain domain; char padding[LTTNG_HANDLE_PADDING1]; }; -/* - * Create an handle used as a context for every request made to the library. - * - * This handle contains the session name and domain on which the command will - * be executed. A domain is basically a tracer like the kernel or user space. - * - * A NULL domain indicates that the handle is not bound to a specific domain. - * This is mostly used for actions that apply on a session and not on a domain - * (e.g lttng_set_consumer_url). - * - * Return a newly allocated handle that should be freed using - * lttng_destroy_handle. On error, NULL is returned. - */ +/*! +@brief + Creates and returns a recording session handle from the + \ref api_session "recording session" name + \lt_p{session_name} and the optional + \ref api-channel-domain "tracing domain" summary \lt_p{domain}. + +@param[in] session_name + @parblock + Recording session name part of the recording session handle to + create. + + May be \c NULL. + @endparblock +@param[in] domain + @parblock + Tracing domain summary part of the recording session handle to + create. + + May be \c NULL. + @endparblock + +@returns + @parblock + New recording session handle. + + Destroy the returned handle with lttng_destroy_handle(). + @endparblock + +@sa lttng_destroy_handle() -- + Destroys a recording session handle. +*/ LTTNG_EXPORT extern struct lttng_handle *lttng_create_handle(const char *session_name, struct lttng_domain *domain); -/* - * Destroy an handle that has been previously created with lttng_create_handle. - * - * It free the given pointer making it unusable. - */ +/*! +@brief + Destroys the recording session handle \lt_p{handle}. + +@note + @parblock + This function doesn't destroy the recording session named + \lt_p{handle->session_name}, but only the handle itself. + + Use lttng_destroy_session_ext() to destroy a recording session. + @endparblock + +@param[in] handle + @parblock + Recording session handle to destroy. + + May be \c NULL. + @endparblock +*/ LTTNG_EXPORT extern void lttng_destroy_handle(struct lttng_handle *handle); +/// @} + #ifdef __cplusplus } #endif diff --git a/include/lttng/lttng-error.h b/include/lttng/lttng-error.h index df23a67bb..fa05af777 100644 --- a/include/lttng/lttng-error.h +++ b/include/lttng/lttng-error.h @@ -15,213 +15,717 @@ #ifndef LTTNG_ERROR_H #define LTTNG_ERROR_H -#include - #ifdef __cplusplus extern "C" { #endif +#include + +/*! +@addtogroup api_gen +@{ +*/ + +/*! +@brief + General error codes. + +Many functions, most of them dating from older liblttng-ctl versions, +return this type (or an \c int value which is equal to the negation of +one of those enumerators). + +Not all error codes are relevant to a given function: this API +documentation makes an effort to document the most relevant status codes +for each function. This is not always possible, however, as LTTng is +made of multiple interacting components (tracers, consumer daemons, +session daemons, and the rest); those error codes can move from one to +another and the possible error codes of a given liblttng-ctl function +can change from version to version. + +@sa lttng_strerror() -- + Returns a human-readable message for a general error code, positive + or negative. +*/ enum lttng_error_code { - LTTNG_OK = 10, /* Ok */ - LTTNG_ERR_UNK = 11, /* Unknown Error */ - LTTNG_ERR_UND = 12, /* Undefined command */ - LTTNG_ERR_SESSION_STARTED = 13, /* Session is running */ - LTTNG_ERR_UNKNOWN_DOMAIN = 14, /* Tracing domain not known */ - LTTNG_ERR_NOT_SUPPORTED = 15, /* Operation not supported */ - LTTNG_ERR_NO_SESSION = 16, /* No session found */ - LTTNG_ERR_CREATE_DIR_FAIL = 17, /* Create directory fail */ - LTTNG_ERR_SESSION_FAIL = 18, /* Create session fail */ - LTTNG_ERR_NO_SESSIOND = 19, /* No session daemon available */ - LTTNG_ERR_SET_URL = 20, /* Error setting URL */ - LTTNG_ERR_URL_EXIST = 21, /* URL already exists. */ - LTTNG_ERR_BUFFER_NOT_SUPPORTED = 22, /* Buffer type not supported. */ - LTTNG_ERR_SESS_NOT_FOUND = 23, /* Session by name not found */ - LTTNG_ERR_BUFFER_TYPE_MISMATCH = 24, /* Buffer type mismatched. */ - LTTNG_ERR_FATAL = 25, /* Fatal error */ - LTTNG_ERR_NOMEM = 26, /* Not enough memory. */ + /* Internal codes */ + /// @cond INTERNAL_ERR_CODES LTTNG_ERR_SELECT_SESS = 27, /* Must select a session */ - LTTNG_ERR_EXIST_SESS = 28, /* Session name already exist */ - LTTNG_ERR_NO_EVENT = 29, /* No event found */ - LTTNG_ERR_CONNECT_FAIL = 30, /* Unable to connect to unix socket */ - LTTNG_ERR_SNAPSHOT_OUTPUT_EXIST = 31, /* Snapshot output already exists */ - LTTNG_ERR_EPERM = 32, /* Permission denied */ - LTTNG_ERR_KERN_NA = 33, /* Kernel tracer unavailable */ - LTTNG_ERR_KERN_VERSION = 34, /* Kernel tracer not compatible */ - LTTNG_ERR_KERN_EVENT_EXIST = 35, /* Kernel event already exists */ - LTTNG_ERR_KERN_SESS_FAIL = 36, /* Kernel create session failed */ - LTTNG_ERR_KERN_CHAN_EXIST = 37, /* Kernel channel already exists */ - LTTNG_ERR_KERN_CHAN_FAIL = 38, /* Kernel create channel failed */ - LTTNG_ERR_KERN_CHAN_NOT_FOUND = 39, /* Kernel channel not found */ - LTTNG_ERR_KERN_CHAN_DISABLE_FAIL = 40, /* Kernel disable channel failed */ - LTTNG_ERR_KERN_CHAN_ENABLE_FAIL = 41, /* Kernel enable channel failed */ - LTTNG_ERR_KERN_CONTEXT_FAIL = 42, /* Kernel add context failed */ - LTTNG_ERR_KERN_ENABLE_FAIL = 43, /* Kernel enable event failed */ - LTTNG_ERR_KERN_DISABLE_FAIL = 44, /* Kernel disable event failed */ - LTTNG_ERR_KERN_META_FAIL = 45, /* Kernel open metadata failed */ - LTTNG_ERR_KERN_START_FAIL = 46, /* Kernel start trace failed */ - LTTNG_ERR_KERN_STOP_FAIL = 47, /* Kernel stop trace failed */ - LTTNG_ERR_KERN_CONSUMER_FAIL = 48, /* Kernel consumer start failed */ - LTTNG_ERR_KERN_STREAM_FAIL = 49, /* Kernel create stream failed */ - LTTNG_ERR_START_SESSION_ONCE = 50, /* Session needs to be started once. */ - LTTNG_ERR_SNAPSHOT_FAIL = 51, /* Snapshot record failed. */ LTTNG_ERR_NO_STREAM = 52, /* Index without stream on relay. */ - LTTNG_ERR_KERN_LIST_FAIL = 53, /* Kernel listing events failed */ LTTNG_ERR_UST_CALIBRATE_FAIL = 54, /* UST calibration failed */ - LTTNG_ERR_UST_EVENT_ENABLED = 55, /* UST event already enabled. */ - LTTNG_ERR_UST_SESS_FAIL = 56, /* UST create session failed */ - LTTNG_ERR_UST_CHAN_EXIST = 57, /* UST channel already exist */ - LTTNG_ERR_UST_CHAN_FAIL = 58, /* UST create channel failed */ - LTTNG_ERR_UST_CHAN_NOT_FOUND = 59, /* UST channel not found */ - LTTNG_ERR_UST_CHAN_DISABLE_FAIL = 60, /* UST disable channel failed */ LTTNG_ERR_UST_CHAN_ENABLE_FAIL = 61, /* UST enable channel failed */ LTTNG_ERR_CHAN_EXIST = 62, /* Channel already exists. */ - LTTNG_ERR_UST_ENABLE_FAIL = 63, /* UST enable event failed */ - LTTNG_ERR_UST_DISABLE_FAIL = 64, /* UST disable event failed */ LTTNG_ERR_UST_META_FAIL = 65, /* UST open metadata failed */ - LTTNG_ERR_UST_START_FAIL = 66, /* UST start trace failed */ - LTTNG_ERR_UST_STOP_FAIL = 67, /* UST stop trace failed */ - LTTNG_ERR_UST_CONSUMER64_FAIL = 68, /* 64-bit UST consumer start failed */ - LTTNG_ERR_UST_CONSUMER32_FAIL = 69, /* 32-bit UST consumer start failed */ LTTNG_ERR_UST_STREAM_FAIL = 70, /* UST create stream failed */ LTTNG_ERR_SNAPSHOT_NODATA = 71, /* No data in snapshot. */ - LTTNG_ERR_NO_CHANNEL = 72, /* No channel found in the session. */ - LTTNG_ERR_SESSION_INVALID_CHAR = 73, /* Invalid characters found in session name. */ - LTTNG_ERR_UST_LIST_FAIL = 74, /* UST listing events failed */ - LTTNG_ERR_UST_EVENT_EXIST = 75, /* UST event exist */ - LTTNG_ERR_UST_EVENT_NOT_FOUND = 76, /* UST event not found */ - LTTNG_ERR_UST_CONTEXT_EXIST = 77, /* UST context exist */ - LTTNG_ERR_UST_CONTEXT_INVAL = 78, /* UST context invalid */ - LTTNG_ERR_NEED_ROOT_SESSIOND = 79, /* root sessiond is needed */ - LTTNG_ERR_TRACE_ALREADY_STARTED = 80, /* Tracing already started */ - LTTNG_ERR_TRACE_ALREADY_STOPPED = 81, /* Tracing already stopped */ - LTTNG_ERR_KERN_EVENT_ENOSYS = 82, /* Kernel event type not supported */ - LTTNG_ERR_NEED_CHANNEL_NAME = 83, /* Non-default channel exists within session: channel name - needs to be specified with '-c name' */ - LTTNG_ERR_NO_UST = 84, /* LTTng-UST tracer is not supported. Please rebuild lttng-tools with - lttng-ust support enabled. */ - LTTNG_ERR_SAVE_FILE_EXIST = 85, /* Session file already exists. */ - LTTNG_ERR_SAVE_IO_FAIL = 86, /* IO error while writing session configuration */ - LTTNG_ERR_LOAD_INVALID_CONFIG = 87, /* Invalid session configuration */ - LTTNG_ERR_LOAD_IO_FAIL = 88, /* IO error while reading a session configuration */ - LTTNG_ERR_LOAD_SESSION_NOENT = 89, /* Session file not found */ - LTTNG_ERR_MAX_SIZE_INVALID = 90, /* Snapshot max size is invalid. */ LTTNG_ERR_MI_OUTPUT_TYPE = 91, /* Invalid MI output format */ LTTNG_ERR_MI_IO_FAIL = 92, /* IO error while writing machine interface output */ LTTNG_ERR_MI_NOT_IMPLEMENTED = 93, /* Mi feature not implemented */ - /* 94 */ - /* 95 */ - /* 96 */ - LTTNG_ERR_INVALID = 97, /* Invalid parameter */ - LTTNG_ERR_NO_USTCONSUMERD = 98, /* No UST consumer detected */ - LTTNG_ERR_NO_KERNCONSUMERD = 99, /* No Kernel consumer detected */ LTTNG_ERR_EVENT_EXIST_LOGLEVEL = 100, /* Event enabled with different loglevel */ - LTTNG_ERR_URL_DATA_MISS = 101, /* Missing network data URL */ - LTTNG_ERR_URL_CTRL_MISS = 102, /* Missing network control URL */ - LTTNG_ERR_ENABLE_CONSUMER_FAIL = 103, /* Enabling consumer failed */ - LTTNG_ERR_RELAYD_CONNECT_FAIL = 104, /* lttng-relayd create session failed */ - LTTNG_ERR_RELAYD_VERSION_FAIL = 105, /* lttng-relayd not compatible */ - LTTNG_ERR_FILTER_INVAL = 106, /* Invalid filter bytecode */ - LTTNG_ERR_FILTER_NOMEM = 107, /* Lack of memory for filter bytecode */ LTTNG_ERR_FILTER_EXIST = 108, /* Filter already exist */ - LTTNG_ERR_NO_CONSUMER = 109, /* No consumer exist for the session */ - LTTNG_ERR_EXCLUSION_INVAL = 110, /* Invalid event exclusion data */ - LTTNG_ERR_EXCLUSION_NOMEM = 111, /* Lack of memory while processing event exclusions */ - LTTNG_ERR_INVALID_EVENT_NAME = 112, /* Invalid event name */ - LTTNG_ERR_INVALID_CHANNEL_NAME = 113, /* Invalid channel name */ - LTTNG_ERR_PROCESS_ATTR_EXISTS = 114, /* Process attribute is already tracked */ - LTTNG_ERR_PROCESS_ATTR_MISSING = 115, /* Process attribute was not tracked */ - LTTNG_ERR_INVALID_CHANNEL_DOMAIN = 116, /* Invalid channel domain */ - LTTNG_ERR_OVERFLOW = 117, /* Overflow occurred. */ - LTTNG_ERR_SESSION_NOT_STARTED = 118, /* Session not started */ - LTTNG_ERR_LIVE_SESSION = 119, /* Live session unsupported */ - LTTNG_ERR_PER_PID_SESSION = 120, /* Per-PID sessions unsupported */ - LTTNG_ERR_KERN_CONTEXT_UNAVAILABLE = 121, /* Context unavailable on this kernel */ - LTTNG_ERR_REGEN_STATEDUMP_FAIL = 122, /* Failed to regenerate the state dump */ - LTTNG_ERR_REGEN_STATEDUMP_NOMEM = 123, /* Failed to regenerate the state dump, not enough - memory */ - LTTNG_ERR_NOT_SNAPSHOT_SESSION = 124, /* Session is not in snapshot mode. */ - LTTNG_ERR_INVALID_TRIGGER = 125, /* Invalid trigger provided. */ - LTTNG_ERR_TRIGGER_EXISTS = 126, /* Trigger already registered. */ - LTTNG_ERR_TRIGGER_NOT_FOUND = 127, /* Trigger not found. */ LTTNG_ERR_COMMAND_CANCELLED = 128, /* Command cancelled. */ - LTTNG_ERR_ROTATION_PENDING = 129, /* Rotation already pending for this session. */ - LTTNG_ERR_ROTATION_NOT_AVAILABLE = 130, /* Rotate feature not available for this type of - session (e.g: live) */ - LTTNG_ERR_ROTATION_SCHEDULE_SET = 131, /* Schedule type already set for this session. */ - LTTNG_ERR_ROTATION_SCHEDULE_NOT_SET = 132, /* No schedule of this type set for this session. - */ - LTTNG_ERR_ROTATION_MULTIPLE_AFTER_STOP = 133, /* Already rotated once after a stop. */ - LTTNG_ERR_ROTATION_WRONG_VERSION = 134, /* Session rotation not supported by this kernel - tracer version */ - LTTNG_ERR_NO_SESSION_OUTPUT = 135, /* Session has no output configured. */ - LTTNG_ERR_ROTATION_NOT_AVAILABLE_RELAY = 136, /* Rotate feature not available on the relay. - */ - LTTNG_ERR_AGENT_TRACING_DISABLED = 137, /* Agent tracing disabled. */ - LTTNG_ERR_PROBE_LOCATION_INVAL = 138, /* Invalid userspace probe location. */ - LTTNG_ERR_ELF_PARSING = 139, /* ELF parsing error. */ - LTTNG_ERR_SDT_PROBE_SEMAPHORE = 140, /* SDT probe guarded by a semaphore. */ - LTTNG_ERR_ROTATION_FAIL_CONSUMER = 141, /* Rotation failure on consumer */ LTTNG_ERR_ROTATE_RENAME_FAIL_CONSUMER = 142, /* Rotation rename failure on consumer */ LTTNG_ERR_ROTATION_PENDING_LOCAL_FAIL_CONSUMER = 143, /* Rotation pending check (local) failure on consumer */ LTTNG_ERR_ROTATION_PENDING_RELAY_FAIL_CONSUMER = 144, /* Rotation pending check (relay) failure on consumer */ LTTNG_ERR_MKDIR_FAIL_CONSUMER = 145, /* mkdir failure on consumer */ - LTTNG_ERR_CHAN_NOT_FOUND = 146, /* Channel not found */ - LTTNG_ERR_SNAPSHOT_UNSUPPORTED = 147, /* Session configuration does not allow the use of - snapshots */ - LTTNG_ERR_SESSION_NOT_EXIST = 148, /* The session does not exist on the session daemon */ - LTTNG_ERR_CREATE_TRACE_CHUNK_FAIL_CONSUMER = 149, /* trace chunk creation failure on - consumer */ - LTTNG_ERR_CLOSE_TRACE_CHUNK_FAIL_CONSUMER = 150, /* trace chunk close failure on consumer */ LTTNG_ERR_TRACE_CHUNK_EXISTS_FAIL_CONSUMER = 151, /* failed to query consumer for trace chunk existence */ - LTTNG_ERR_INVALID_PROTOCOL = 152, /* a protocol error occurred */ - LTTNG_ERR_FILE_CREATION_ERROR = 153, /* failed to create a file */ - LTTNG_ERR_TIMER_STOP_ERROR = 154, /* failed to stop timer. */ - LTTNG_ERR_ROTATION_NOT_AVAILABLE_KERNEL = 155, /* Rotation feature not supported by the - kernel tracer. */ - LTTNG_ERR_CLEAR_RELAY_DISALLOWED = 156, /* LTTng-relayd peer does not allow lttng clear - command. */ - LTTNG_ERR_CLEAR_NOT_AVAILABLE_RELAY = 157, /* Clearing a session is not supported by the - relay daemon. */ - LTTNG_ERR_CLEAR_FAIL_CONSUMER = 158, /* Clear failure on consumer */ - LTTNG_ERR_ROTATION_AFTER_STOP_CLEAR = 159, /* Session was already cleared since it became - inactive. */ - LTTNG_ERR_USER_NOT_FOUND = 160, /* User not found. */ - LTTNG_ERR_GROUP_NOT_FOUND = 161, /* Group not found. */ - LTTNG_ERR_UNSUPPORTED_DOMAIN = 162, /* Unsupported domain used. */ - LTTNG_ERR_PROCESS_ATTR_TRACKER_INVALID_TRACKING_POLICY = 163, /* Operation does not apply to - the process attribute - tracker's tracking policy - */ - LTTNG_ERR_EVENT_NOTIFIER_GROUP_NOTIFICATION_FD = 164, /* Error initializing event notifier - group notification file descriptor - */ - LTTNG_ERR_INVALID_CAPTURE_EXPRESSION = 165, /* Invalid capture expression. */ - LTTNG_ERR_EVENT_NOTIFIER_REGISTRATION = 166, /* Error registering event notifier to the - tracer. */ - LTTNG_ERR_EVENT_NOTIFIER_ERROR_ACCOUNTING = 167, /* Error initializing event notifier error - accounting. */ - LTTNG_ERR_EVENT_NOTIFIER_ERROR_ACCOUNTING_FULL = 168, /* Error event notifier error - accounting full. */ - LTTNG_ERR_INVALID_ERROR_QUERY_TARGET = 169, /* Invalid error query target. */ - LTTNG_ERR_BUFFER_FLUSH_FAILED = 170, /* Buffer flush failed */ + /// @endcond + + /// Success. + LTTNG_OK = 10, + + /// Unknown error. + LTTNG_ERR_UNK = 11, + + /// Undefined command. + LTTNG_ERR_UND = 12, + + /*! + \lt_obj_c_session already + \link lttng_session::enabled started\endlink (active). + */ + LTTNG_ERR_SESSION_STARTED = 13, + + /// Unknown \lt_obj_domain. + LTTNG_ERR_UNKNOWN_DOMAIN = 14, + + /// Unsupported operation. + LTTNG_ERR_NOT_SUPPORTED = 15, + + /// No \lt_obj_session found. + LTTNG_ERR_NO_SESSION = 16, + + /// Failed to create a directory. + LTTNG_ERR_CREATE_DIR_FAIL = 17, + + /// Failed to create a \lt_obj_session. + LTTNG_ERR_SESSION_FAIL = 18, + + /*! + No available + \ref api-gen-sessiond-conn "session daemon to connect to". + */ + LTTNG_ERR_NO_SESSIOND = 19, + + /// Failed to set an URL. + LTTNG_ERR_SET_URL = 20, + + /// URL already exists. + LTTNG_ERR_URL_EXIST = 21, + + /// Unsupported \ref api-channel-buf-scheme "buffering scheme". + LTTNG_ERR_BUFFER_NOT_SUPPORTED = 22, + + /// Nonexistent \lt_obj_session name. + LTTNG_ERR_SESS_NOT_FOUND = 23, + + /*! + A \lt_obj_channel within the given \lt_obj_domain already exists + and is configured with another + \ref api-channel-buf-scheme "buffering scheme". + */ + LTTNG_ERR_BUFFER_TYPE_MISMATCH = 24, + + /// Fatal error. + LTTNG_ERR_FATAL = 25, + + /// Failed to allocate memory. + LTTNG_ERR_NOMEM = 26, + + /// \lt_obj_c_session name already exists. + LTTNG_ERR_EXIST_SESS = 28, + + /// \lt_obj_c_rer not found. + LTTNG_ERR_NO_EVENT = 29, + + /// Failed to connect to Unix socket. + LTTNG_ERR_CONNECT_FAIL = 30, + + /// \ref api_session_snapshot "Snapshot" output already exists. + LTTNG_ERR_SNAPSHOT_OUTPUT_EXIST = 31, + + /// Permission denied. + LTTNG_ERR_EPERM = 32, + + /// Linux kernel tracer isn't available. + LTTNG_ERR_KERN_NA = 33, + + /// Incompatible Linux kernel tracer. + LTTNG_ERR_KERN_VERSION = 34, + + /// Linux kernel \lt_obj_rer already exists. + LTTNG_ERR_KERN_EVENT_EXIST = 35, + + /// Linux kernel tracer: failed to create a \lt_obj_session. + LTTNG_ERR_KERN_SESS_FAIL = 36, + + /// Linux kernel \lt_obj_channel already exists. + LTTNG_ERR_KERN_CHAN_EXIST = 37, + + /// Failed to create a Linux kernel \lt_obj_channel. + LTTNG_ERR_KERN_CHAN_FAIL = 38, + + /// Linux kernel \lt_obj_channel not found. + LTTNG_ERR_KERN_CHAN_NOT_FOUND = 39, + + /// Failed to disable a Linux kernel \lt_obj_channel. + LTTNG_ERR_KERN_CHAN_DISABLE_FAIL = 40, + + /// Failed to create/enable a Linux kernel \lt_obj_channel. + LTTNG_ERR_KERN_CHAN_ENABLE_FAIL = 41, + + /*! + Failed to add a context field to be recorded to the event + records of a Linux kernel \lt_obj_channel. + */ + LTTNG_ERR_KERN_CONTEXT_FAIL = 42, + + /// Failed to create/enable a Linux kernel \lt_obj_rer. + LTTNG_ERR_KERN_ENABLE_FAIL = 43, + + /// Failed to disable a Linux kernel \lt_obj_rer. + LTTNG_ERR_KERN_DISABLE_FAIL = 44, + + /// Failed to open a Linux kernel trace metadata stream. + LTTNG_ERR_KERN_META_FAIL = 45, + + /*! + Linux kernel tracer: failed to + \link lttng_start_tracing() start tracing\endlink. + */ + LTTNG_ERR_KERN_START_FAIL = 46, + + /*! + Linux kernel tracer: failed to + \link lttng_stop_tracing stop tracing\endlink. + */ + LTTNG_ERR_KERN_STOP_FAIL = 47, + + /// Failed to start a Linux kernel consumer daemon. + LTTNG_ERR_KERN_CONSUMER_FAIL = 48, + + /// Failed to create a Linux kernel trace data stream. + LTTNG_ERR_KERN_STREAM_FAIL = 49, + + /*! + The \lt_obj_session never became + \link lttng_session::enabled active\endlink. + */ + LTTNG_ERR_START_SESSION_ONCE = 50, + + /*! + Failed to take a recording session + \ref api_session_snapshot "snapshot". + */ + LTTNG_ERR_SNAPSHOT_FAIL = 51, + + /// Failed to list Linux kernel \lt_obj_rers. + LTTNG_ERR_KERN_LIST_FAIL = 53, + + /// User space \lt_obj_rer already enabled. + LTTNG_ERR_UST_EVENT_ENABLED = 55, + + /*! + User space tracer: failed to + \link lttng_create_session_ext() create\endlink a + \lt_obj_session. + */ + LTTNG_ERR_UST_SESS_FAIL = 56, + + /// User space \lt_obj_channel already exists. + LTTNG_ERR_UST_CHAN_EXIST = 57, + + /*! + Failed to + \link lttng_enable_channel() create\endlink a user space + \lt_obj_channel. + */ + LTTNG_ERR_UST_CHAN_FAIL = 58, + + /// User space \lt_obj_channel not found. + LTTNG_ERR_UST_CHAN_NOT_FOUND = 59, + + /*! + Failed to \link lttng_disable_channel() disable\endlink + a user space \lt_obj_channel. + */ + LTTNG_ERR_UST_CHAN_DISABLE_FAIL = 60, + + /// Failed to create/enable a user space \lt_obj_rer. + LTTNG_ERR_UST_ENABLE_FAIL = 63, + + /// Failed to disable a user space \lt_obj_rer. + LTTNG_ERR_UST_DISABLE_FAIL = 64, + + /*! + User space tracer: failed to + \link lttng_start_tracing() start tracing\endlink. + */ + LTTNG_ERR_UST_START_FAIL = 66, + + /*! + User space tracer: failed to + \link lttng_stop_tracing() stop tracing\endlink. + */ + LTTNG_ERR_UST_STOP_FAIL = 67, + + /// Failed to start a 64-bit user space consumer daemon. + LTTNG_ERR_UST_CONSUMER64_FAIL = 68, + + /// Failed to start a 32-bit user space consumer daemon. + LTTNG_ERR_UST_CONSUMER32_FAIL = 69, + + /// \lt_obj_c_session has no \lt_obj_channels. + LTTNG_ERR_NO_CHANNEL = 72, + + /// \lt_obj_c_session name contains an invalid character. + LTTNG_ERR_SESSION_INVALID_CHAR = 73, + + /// Failed to list user space \lt_obj_rers. + LTTNG_ERR_UST_LIST_FAIL = 74, + + /// User space \lt_obj_rer already exists. + LTTNG_ERR_UST_EVENT_EXIST = 75, + + /// User space \lt_obj_rer not found. + LTTNG_ERR_UST_EVENT_NOT_FOUND = 76, + + /*! + \link lttng_add_context() Context field\endlink to be recorded + to the event records of a user space + \lt_obj_channel already exists. + */ + LTTNG_ERR_UST_CONTEXT_EXIST = 77, + + /*! + Invalid/unknown + \link #lttng_event_context_type context field type\endlink. + */ + LTTNG_ERR_UST_CONTEXT_INVAL = 78, + + /*! + A root session daemon is required, but isn't available. + + See \ref api-gen-sessiond-conn "Session daemon connection". + */ + LTTNG_ERR_NEED_ROOT_SESSIOND = 79, + + /*! + \lt_obj_c_session is already + \link lttng_session::enabled active\endlink (started). + */ + LTTNG_ERR_TRACE_ALREADY_STARTED = 80, + + /*! + \lt_obj_c_session is already + \link lttng_session::enabled inactive\endlink (stopped). + */ + LTTNG_ERR_TRACE_ALREADY_STOPPED = 81, + + /// Linux kernel instrumentation point type not supported. + LTTNG_ERR_KERN_EVENT_ENOSYS = 82, + + /*! + A \lt_obj_channel name is required because + a non-default channel exists within the selected + \lt_obj_session and \lt_obj_domain. + */ + LTTNG_ERR_NEED_CHANNEL_NAME = 83, + + /*! + \lt_obj_c_channel name is required because a + non-default channel exists within the \lt_obj_session. + */ + LTTNG_ERR_NO_UST = 84, + + /*! + \ref api_session_save_load "Recording session configuration file" + already exists. + */ + LTTNG_ERR_SAVE_FILE_EXIST = 85, + + /*! + I/O error while writing a + \ref api_session_save_load "recording session configuration file". + */ + LTTNG_ERR_SAVE_IO_FAIL = 86, + + /*! + Invalid + \ref api_session_save_load "recording session configuration file". + */ + LTTNG_ERR_LOAD_INVALID_CONFIG = 87, + + /*! + I/O error while reading a + \ref api_session_save_load "recording session configuration file". + */ + LTTNG_ERR_LOAD_IO_FAIL = 88, + + /*! + \ref api_session_save_load "Recording session configuration file" + not found. + */ + LTTNG_ERR_LOAD_SESSION_NOENT = 89, + + /*! + Maximum total size of all the + \ref api_session_snapshot "snapshot" trace files is invalid. + */ + LTTNG_ERR_MAX_SIZE_INVALID = 90, + + /* 94 */ + /* 95 */ + /* 96 */ + + /// Invalid parameter (unsatisfied precondition). + LTTNG_ERR_INVALID = 97, + + /// No user space consumer daemon available. + LTTNG_ERR_NO_USTCONSUMERD = 98, + + /// No Linux kernel consumer daemon available. + LTTNG_ERR_NO_KERNCONSUMERD = 99, + + /// Missing network data \ref api-session-url "URL". + LTTNG_ERR_URL_DATA_MISS = 101, + + /// Missing network control \ref api-session-url "URL". + LTTNG_ERR_URL_CTRL_MISS = 102, + + /// Failed to communicate with a consumer daemon. + LTTNG_ERR_ENABLE_CONSUMER_FAIL = 103, + + /*! + Failed to connect to or communicate with a relay daemon + (see \lt_man{lttng-relayd,8}). + */ + LTTNG_ERR_RELAYD_CONNECT_FAIL = 104, + + /// Incompatible relay daemon (see \lt_man{lttng-relayd,8}) version. + LTTNG_ERR_RELAYD_VERSION_FAIL = 105, + + /*! + Invalid \link lttng_enable_event_with_filter() context and event + payload filter expression\endlink. + */ + LTTNG_ERR_FILTER_INVAL = 106, + + /*! + Failed to allocate memory for a context and event payload filter + object. + */ + LTTNG_ERR_FILTER_NOMEM = 107, + + /// No available consumer daemon. + LTTNG_ERR_NO_CONSUMER = 109, + + /*! + Invalid event name + \link lttng_enable_event_with_exclusions() exclusion\endlink + data. + */ + LTTNG_ERR_EXCLUSION_INVAL = 110, + + /// Failed to allocate memory for an event name exclusion object. + LTTNG_ERR_EXCLUSION_NOMEM = 111, + + /// Invalid event name condition part of a \lt_obj_rer. + LTTNG_ERR_INVALID_EVENT_NAME = 112, + + /// Invalid \lt_obj_channel name. + LTTNG_ERR_INVALID_CHANNEL_NAME = 113, + + /*! + Process attribute is already part of an + \ref api_pais "inclusion set". + */ + LTTNG_ERR_PROCESS_ATTR_EXISTS = 114, + + /*! + Process attribute isn't part of an + \ref api_pais "inclusion set". + */ + LTTNG_ERR_PROCESS_ATTR_MISSING = 115, + + /// Invalid \lt_obj_domain for \lt_obj_channel. + LTTNG_ERR_INVALID_CHANNEL_DOMAIN = 116, + + /// Overflow. + LTTNG_ERR_OVERFLOW = 117, + + /*! + \lt_obj_c_session isn't + \link lttng_session::enabled active\endlink (started). + */ + LTTNG_ERR_SESSION_NOT_STARTED = 118, + + /*! + Unsupported LTTng \ref api-session-live-mode "live" recording + session mode. + */ + LTTNG_ERR_LIVE_SESSION = 119, + + /*! + Unsupported + \ref api-channel-per-proc-buf "per-process buffering scheme". + */ + LTTNG_ERR_PER_PID_SESSION = 120, + + /*! + \link #lttng_event_context_type Context field type\endlink + isn't available on the current Linux kernel. + */ + LTTNG_ERR_KERN_CONTEXT_UNAVAILABLE = 121, + + /*! + Failed to \link lttng_regenerate_statedump() regenerate the + LTTng state dump event records\endlink. + */ + LTTNG_ERR_REGEN_STATEDUMP_FAIL = 122, + + /*! + Failed to allocate memory to \link lttng_regenerate_statedump() + regenerate the LTTng state dump event records\endlink. + */ + LTTNG_ERR_REGEN_STATEDUMP_NOMEM = 123, + + /*! + \lt_obj_c_session isn't in + \ref api-session-snapshot-mode "snapshot mode". + */ + LTTNG_ERR_NOT_SNAPSHOT_SESSION = 124, + + /// Invalid \lt_obj_trigger. + LTTNG_ERR_INVALID_TRIGGER = 125, + + /// \lt_obj_c_trigger already exists (registered). + LTTNG_ERR_TRIGGER_EXISTS = 126, + + /// \lt_obj_c_trigger not found. + LTTNG_ERR_TRIGGER_NOT_FOUND = 127, + + /*! + \ref api_session_rotation "Recording session rotation" operation + already in progress. + */ + LTTNG_ERR_ROTATION_PENDING = 129, + + /*! + \ref api_session_rotation "Recording session rotation" feature + isn't available for the \ref api-session-modes "mode" of the + given recording session. + */ + LTTNG_ERR_ROTATION_NOT_AVAILABLE = 130, + + /*! + \ref api_session_rotation "Recording session rotation" schedule + already set. + */ + LTTNG_ERR_ROTATION_SCHEDULE_SET = 131, + + /*! + \ref api_session_rotation "Recording session rotation" schedule + isn't set. + */ + LTTNG_ERR_ROTATION_SCHEDULE_NOT_SET = 132, + + /*! + LTTng already + \ref api_session_rotation "archived the current trace chunk" of + the recording session since it became + \link lttng_session::enabled inactive\endlink (stopped). + */ + LTTNG_ERR_ROTATION_MULTIPLE_AFTER_STOP = 133, + + /*! + Linux kernel tracer: unavailable + \ref api_session_rotation "recording session rotation" feature. + */ + LTTNG_ERR_ROTATION_WRONG_VERSION = 134, + + /// \lt_obj_c_session has no configured output. + LTTNG_ERR_NO_SESSION_OUTPUT = 135, + + /*! + Relay daemon: unavailable + \ref api_session_rotation "recording session rotation" feature. + */ + LTTNG_ERR_ROTATION_NOT_AVAILABLE_RELAY = 136, + + /// Unavailable logging instrumentation point feature. + LTTNG_ERR_AGENT_TRACING_DISABLED = 137, + + /// Invalid user space probe location. + LTTNG_ERR_PROBE_LOCATION_INVAL = 138, + + /// Failed to parse ELF file. + LTTNG_ERR_ELF_PARSING = 139, + + /*! + SystemTap User-level Statically Defined Tracing (USDT) probe + guarded by a semaphore. + */ + LTTNG_ERR_SDT_PROBE_SEMAPHORE = 140, + + /*! + Consumer daemon failed to perform a + \ref api_session_rotation "recording session rotation" + operation. + */ + LTTNG_ERR_ROTATION_FAIL_CONSUMER = 141, + + /// \lt_obj_c_channel not found. + LTTNG_ERR_CHAN_NOT_FOUND = 146, + + /*! + Cannot take a + \ref api_session_snapshot "snapshot" with the current + recording session configuration. + */ + LTTNG_ERR_SNAPSHOT_UNSUPPORTED = 147, + + /// Nonexistent \lt_obj_session. + LTTNG_ERR_SESSION_NOT_EXIST = 148, + + /*! + Consumer daemon failed to create a + \ref api_session_rotation "trace chunk archive". + */ + LTTNG_ERR_CREATE_TRACE_CHUNK_FAIL_CONSUMER = 149, + + /*! + Consumer daemon failed to close a + \ref api_session_rotation "trace chunk archive". + */ + LTTNG_ERR_CLOSE_TRACE_CHUNK_FAIL_CONSUMER = 150, + + /// Invalid protocol. + LTTNG_ERR_INVALID_PROTOCOL = 152, + + /// Failed to create a file. + LTTNG_ERR_FILE_CREATION_ERROR = 153, + + /// Failed to stop a timer. + LTTNG_ERR_TIMER_STOP_ERROR = 154, + + /*! + Linux kernel tracer: + \ref api_session_rotation "recording session rotation" feature + isn't available. + */ + LTTNG_ERR_ROTATION_NOT_AVAILABLE_KERNEL = 155, + + /*! + The relay daemon (see \lt_man{lttng-relayd,8}) doesn't allow + \ref api_session_clear "recording session clearing" operations. + */ + LTTNG_ERR_CLEAR_RELAY_DISALLOWED = 156, + + /*! + The relay daemon (see \lt_man{lttng-relayd,8}) doesn't support + the + \ref api_session_clear "recording session clearing" operation. + */ + LTTNG_ERR_CLEAR_NOT_AVAILABLE_RELAY = 157, + + /*! + Consumer daemon failed to + \ref api_session_clear "clear the recording session". + */ + LTTNG_ERR_CLEAR_FAIL_CONSUMER = 158, + + /*! + LTTng already + \ref api_session_clear "cleared the recording session" since it + became \link lttng_session::enabled inactive\endlink (stopped). + */ + LTTNG_ERR_ROTATION_AFTER_STOP_CLEAR = 159, + + /* Unix user not found. */ + LTTNG_ERR_USER_NOT_FOUND = 160, + + /* Unix group not found. */ + LTTNG_ERR_GROUP_NOT_FOUND = 161, + + /* Unsupported \lt_obj_domain. */ + LTTNG_ERR_UNSUPPORTED_DOMAIN = 162, + + /*! + Invalid operation considering the policy of the + \ref api_pais "process attribute inclusion set". + */ + LTTNG_ERR_PROCESS_ATTR_TRACKER_INVALID_TRACKING_POLICY = 163, + + /*! + Failed to initialize the file descriptor of the event notifier + group notification. + */ + LTTNG_ERR_EVENT_NOTIFIER_GROUP_NOTIFICATION_FD = 164, + + /// Invalid event field capture expression. + LTTNG_ERR_INVALID_CAPTURE_EXPRESSION = 165, + + /// Failed to register the event notifier to the tracer. + LTTNG_ERR_EVENT_NOTIFIER_REGISTRATION = 166, + + /// Failed to initialize the event notifier error accounting. + LTTNG_ERR_EVENT_NOTIFIER_ERROR_ACCOUNTING = 167, + + /// Event notifier error accouting is full. + LTTNG_ERR_EVENT_NOTIFIER_ERROR_ACCOUNTING_FULL = 168, + + /// Invalid error query target. + LTTNG_ERR_INVALID_ERROR_QUERY_TARGET = 169, + + /// Failed to flush a buffer. + LTTNG_ERR_BUFFER_FLUSH_FAILED = 170, /* MUST be last element of the manually-assigned section of the enum */ + /// @cond INTERNAL_ERR_CODES LTTNG_ERR_NR, + /// @endcond /* Backward-compatibility assignments */ - LTTNG_ERR_PID_TRACKED = LTTNG_ERR_PROCESS_ATTR_EXISTS, /* Backward compat alias */ - LTTNG_ERR_PID_NOT_TRACKED = LTTNG_ERR_PROCESS_ATTR_MISSING, /* Backward compat alias */ + /*! + Process attribute is already part of an + \ref api_pais "inclusion set". + + @deprecated + Use #LTTNG_ERR_PROCESS_ATTR_EXISTS. + */ + LTTNG_ERR_PID_TRACKED = LTTNG_ERR_PROCESS_ATTR_EXISTS, + + /*! + Process attribute isn't part of an + \ref api_pais "inclusion set". + + @deprecated + Use #LTTNG_ERR_PROCESS_ATTR_MISSING. + */ + LTTNG_ERR_PID_NOT_TRACKED = LTTNG_ERR_PROCESS_ATTR_MISSING, }; -/* - * Return a human-readable error message for a LTTng error code. - * - * Parameter MUST be a negative value or else you'll get a generic message. - */ -LTTNG_EXPORT extern const char *lttng_strerror(int code); +/*! +@brief + Returns a human-readable message for the general error code + \lt_p{error_code}. + +@param[in] error_code + Error code (one of the #lttng_error_code enumerators), positive or + negative, for which to get a corresponding human-readable message. + +@returns + Human-readable message which corresponds to \lt_p{error_code}. + +@pre + \lt_p{error_code} is a valid #lttng_error_code enumerator. +*/ +LTTNG_EXPORT extern const char *lttng_strerror(int error_code); + +/// @} #ifdef __cplusplus } diff --git a/include/lttng/lttng.h b/include/lttng/lttng.h index 4dc24a522..6ae331bda 100644 --- a/include/lttng/lttng.h +++ b/include/lttng/lttng.h @@ -12,6 +12,8 @@ #ifndef LTTNG_H #define LTTNG_H +#include + /* Error codes that can be returned by API calls */ #include @@ -59,7 +61,6 @@ #include #include #include -#include #include #include #include @@ -91,20 +92,64 @@ struct lttng_calibrate { char padding[LTTNG_CALIBRATE_PADDING1]; }; -/* - * Check if a session daemon is alive. - * - * Return 1 if alive or 0 if not. On error, returns a negative negative LTTng - * error code. - */ +/*! +@brief + Returns whether or not liblttng-ctl is able to connect to a + listening session daemon. + +@ingroup api_gen + +How this function tries to +\ref api-gen-sessiond-conn "connect to a session daemon" depends on the +current Unix tracing group (initially \c tracing) of the library. Set +the tracing group with lttng_set_tracing_group(). + +@returns + @parblock + One of: + +
+
1
+
+ liblttng-ctl is able to connect to a session daemon. + +
0 +
+ liblttng-ctl isn't able to connect to a session daemon. + +
Negative value +
+ Error: a negative #lttng_error_code enumerator. +
+ @endparblock + +@sa lttng_set_tracing_group() -- + Sets the current Unix tracing group of liblttng-ctl. +*/ LTTNG_EXPORT extern int lttng_session_daemon_alive(void); -/* - * Set the tracing group for the *current* flow of execution. - * - * On success, returns 0 else a negative LTTng error code. - */ -LTTNG_EXPORT extern int lttng_set_tracing_group(const char *name); +/*! +@brief + Sets the current Unix tracing group of liblttng-ctl to \lt_p{group}. + +@ingroup api_gen + +How the liblttng-ctl functions +\ref api-gen-sessiond-conn "connect to a session daemon" depends on +the current Unix tracing group (initially \c tracing) of the library. + +@param[in] group + New Unix tracing group of liblttng-ctl. + +@returns + 0 on success, or a \em negative #lttng_error_code enumerator + otherwise. + +@lt_pre_not_null{group} +@pre + \lt_p{group} names an existing Unix group. +*/ +LTTNG_EXPORT extern int lttng_set_tracing_group(const char *group); /* * This call registers an "outside consumer" for a session and an lttng domain. @@ -119,31 +164,124 @@ LTTNG_EXPORT extern int lttng_set_tracing_group(const char *name); LTTNG_EXPORT extern int lttng_register_consumer(struct lttng_handle *handle, const char *socket_path); -/* - * Start tracing for *all* domain(s) in the session. - * - * Return 0 on success else a negative LTTng error code. - */ +/*! +@brief + Makes the recording session named \lt_p{session_name} active, + starting all the tracers for its + \ref api-channel-channel "channels". + +@ingroup api_session + +@note + An #LTTNG_ACTION_TYPE_START_SESSION trigger action can also activate + (start) a recording session. + +@param[in] session_name + Name of the recording session to activate/start. + +@returns + 0 on success, or a \em negative #lttng_error_code enumerator + otherwise. + +@lt_pre_conn +@lt_pre_not_null{session_name} +@lt_pre_sess_exists{session_name} +@lt_pre_sess_inactive{session_name} + +@sa lttng_stop_tracing() -- + Stops a recording session. +@sa \lt_man{lttng-start,1} +*/ LTTNG_EXPORT extern int lttng_start_tracing(const char *session_name); -/* - * Stop tracing for *all* domain(s) in the session. - * - * This call will wait for data availability for each domain of the session so - * this can take an abritrary amount of time. However, when returning you have - * the guarantee that the data is ready to be read and analyze. Use the - * _no_wait call below to avoid this behavior. - * - * The session_name can't be NULL. - * - * Return 0 on success else a negative LTTng error code. - */ +/*! +@brief + Makes the recording session named \lt_p{session_name} inactive, + stopping all the tracers for its + \ref api-channel-channel "channels", blocking until the operation + completes. + +@ingroup api_session + +This function blocks until the trace data of the +recording session named \lt_p{session_name} is valid. Use +lttng_stop_tracing_no_wait() to avoid a blocking call. + +If LTTng \ref api_session_rotation "archived the current trace chunk" +of the recording session named \lt_p{session_name} at least +once during its lifetime, then this function renames the current trace +chunk subdirectory. Although it's safe to +read the content of this renamed subdirectory while the recording +session remains inactive, it's \em not a trace chunk archive: you need to +\link lttng_destroy_session_ext() destroy\endlink the recording session +or a rotation needs to occur to archive it. + +@note + An #LTTNG_ACTION_TYPE_STOP_SESSION trigger action can also + deactivate (stop) a recording session. + +@param[in] session_name + Name of the recording session to deactivate/stop. + +@returns + 0 on success, or a \em negative #lttng_error_code enumerator + otherwise. + +@lt_pre_conn +@lt_pre_not_null{session_name} +@lt_pre_sess_exists{session_name} +@lt_pre_sess_active{session_name} + +@sa lttng_stop_tracing_no_wait() -- + Deactivates a recording session without waiting for the operation + to complete. +@sa lttng_start_tracing() -- + Starts a recording session. +@sa \lt_man{lttng-stop,1} +*/ LTTNG_EXPORT extern int lttng_stop_tracing(const char *session_name); -/* - * Behave exactly like lttng_stop_tracing but does not wait for data - * availability. - */ +/*! +@brief + Makes the recording session named \lt_p{session_name} inactive, + stopping all the tracers for its + \ref api-channel-channel "channels" without waiting for the + operation to complete. + +@ingroup api_session + +Unlike lttng_stop_tracing(), this function does \em not block until +the operation is complete: it returns immediately. This +means the traces(s) of the recording session might not be valid when +this function returns, and there's no way to know when it/they become +valid. + +@note + An #LTTNG_ACTION_TYPE_STOP_SESSION trigger action can also + deactivate (stop) a recording session. + +@param[in] session_name + Name of the recording session to deactivate/stop. + +@returns + 0 on success, or a \em negative #lttng_error_code enumerator + otherwise. + +@lt_pre_conn +@lt_pre_not_null{session_name} +@lt_pre_sess_exists{session_name} +@lt_pre_sess_active{session_name} +@pre + No deactivation operation is in progress for the recording session + named \lt_p{session_name}. + +@sa lttng_stop_tracing() -- + Deactivates a recording session, blocking until the operation + completes. +@sa lttng_start_tracing() -- + Starts a recording session. +@sa \lt_man{lttng-stop,1} +*/ LTTNG_EXPORT extern int lttng_stop_tracing_no_wait(const char *session_name); /* @@ -183,16 +321,54 @@ LTTNG_EXPORT extern int lttng_calibrate(struct lttng_handle *handle, LTTNG_EXPORT extern int lttng_set_consumer_url(struct lttng_handle *handle, const char *control_url, const char *data_url); -/* - * For a given session name, this call checks if the data is ready to be read - * or is still being extracted by the consumer(s) (pending) hence not ready to - * be used by any readers. - * - * Return 0 if there is _no_ data pending in the buffers thus having a - * guarantee that the data can be read safely. Else, return 1 if there is still - * traced data is pending. On error, a negative value is returned and readable - * by lttng_strerror(). - */ +/*! +@brief + Returns whether or not you may read the traces of the recording + session named \lt_p{session_name}. + +@ingroup api_session + +It's not safe to read the traces of a recording session while +LTTng is still consuming data from the tracers for its +\ref api-channel-channel "channels". + +This function makes it possible to know when LTTng is done consuming +trace data from tracers for the channels of the recording session +named \lt_p{session_name}. + +@param[in] session_name + Name of the recording session of which get whether or not + you may read its traces. + +@returns + @parblock + One of: + +
+
0 +
+ You may read the traces of the recording session named + \lt_p{session_name}. + + This remains true as long as the recording session remains + \link lttng_session::enabled inactive\endlink (stopped). + +
1
+
+ You may \em not read the traces of the recording session named + \lt_p{session_name}. + +
Negative value +
+ Error: a negative #lttng_error_code enumerator. +
+ @endparblock + +@lt_pre_conn +@lt_pre_not_null{session_name} +@lt_pre_sess_exists{session_name} +@lt_pre_sess_inactive{session_name} +*/ LTTNG_EXPORT extern int lttng_data_pending(const char *session_name); /* @@ -203,27 +379,119 @@ LTTNG_EXPORT extern int lttng_data_pending(const char *session_name); LTTNG_EXPORT extern enum lttng_error_code lttng_get_kernel_tracer_status(enum lttng_kernel_tracer_status *status); -/* - * Deprecated, replaced by lttng_regenerate_metadata. - */ -LTTNG_DEPRECATED("Use lttng_regenerate_metadata") +/*! +@brief + Regenerates the metadata streams of the recording session named + \lt_p{session_name}. + +@ingroup api_session + +@deprecated + Use lttng_regenerate_metadata(). + +@param[in] session_name + Name of the recording session of which to regenerate the metadata + streams. + +@returns + 0 on success, or a \em negative #lttng_error_code enumerator + otherwise. + +@lt_pre_conn +@lt_pre_not_null{session_name} +@lt_pre_sess_exists{session_name} +*/ +/// @cond DEPRECATED +LTTNG_DEPRECATED() +/// @endcond LTTNG_EXPORT extern int lttng_metadata_regenerate(const char *session_name); -/* - * Trigger the regeneration of the metadata for a session. - * The new metadata overwrite the previous one locally or remotely (through - * the lttng-relayd). Only kernel, per-uid and non-live sessions are supported. - * Return 0 on success, a negative LTTng error code on error. - */ +/*! +@brief + Regenerates the metadata streams of the recording session named + \lt_p{session_name}. + +@ingroup api_session + +Use this function to resample the offset between the monotonic clock and +the wall time of the system, and then regenerate (overwrite) all the +metadata stream files (local or remote) of the recording session +named \lt_p{session_name}. + +More specifically, you may want to resample the wall time following a +major NTP +correction. As such, LTTng can trace a system booting with an incorrect +wall time before its wall time is NTP-corrected. Regenerating the +metadata of a recording session ensures that trace readers +can accurately determine the event record timestamps relative to the +Unix epoch. + +Note that if you plan to \ref api_session_rotation "rotate" the +recording session named \lt_p{session_name}, this function only +regenerates the metadata stream files of the \em current and \em next +trace chunks. + +See the preconditions of this function which show important limitations. + +@param[in] session_name + Name of the recording session of which to regenerate the metadata + streams. + +@returns + 0 on success, or a \em negative #lttng_error_code enumerator + otherwise. + +@lt_pre_conn +@lt_pre_not_null{session_name} +@lt_pre_sess_exists{session_name} +@pre + The recording session named \lt_p{session_name} was \em not created + in \ref api-session-live-mode "live mode". +@pre + All the \ref api-channel-channel "channels" of the recording session + named \lt_p{session_name} use a + \ref api-channel-per-user-buf "per-user buffering scheme". + +@sa lttng_regenerate_statedump() -- + Regenerates the state dump event records of a recording session. +@sa \lt_man{lttng-regenerate,1} +*/ LTTNG_EXPORT extern int lttng_regenerate_metadata(const char *session_name); -/* - * Trigger the regeneration of the statedump for a session. The new statedump - * information is appended to the currently active trace, the session needs to - * be active. - * - * Return 0 on success, a negative LTTng error code on error. - */ +/*! +@brief + Regenerates the state dump event records of the recording session + named \lt_p{session_name}. + +@ingroup api_session + +Use this function to collect up-to-date state dump information and +append corresponding event records to the +\ref api-channel-channel "sub-buffers" of the recording session named +\lt_p{session_name}. + +This is particularly useful if you created the recording session in +\ref api-session-snapshot-mode "snapshot mode" +or if LTTng \ref api_session_rotation "rotates" trace files for one of +its \ref api-channel-channel "channels": in both cases, the state dump +information may be lost. + +@param[in] session_name + Name of the recording session of which to regenerate the + state dump event records. + +@returns + 0 on success, or a \em negative #lttng_error_code enumerator + otherwise. + +@lt_pre_conn +@lt_pre_not_null{session_name} +@lt_pre_sess_exists{session_name} + +@sa lttng_regenerate_metadata() -- + Regenerates the metadata streams of a recording session. +@sa \lt_man{lttng-regenerate,1} +*/ LTTNG_EXPORT extern int lttng_regenerate_statedump(const char *session_name); #ifdef __cplusplus diff --git a/include/lttng/session-descriptor.h b/include/lttng/session-descriptor.h index a67a4bf1c..f4151b3a8 100644 --- a/include/lttng/session-descriptor.h +++ b/include/lttng/session-descriptor.h @@ -8,12 +8,23 @@ #ifndef LTTNG_SESSION_DESCRIPTOR_H #define LTTNG_SESSION_DESCRIPTOR_H -#include - #ifdef __cplusplus extern "C" { #endif +#include + +/*! +@addtogroup api_session_descr +@{ +*/ + +/*! +@struct lttng_session_descriptor + +@brief + Recording session descriptor (opaque type). +*/ struct lttng_session_descriptor; /* @@ -90,90 +101,468 @@ struct lttng_session_descriptor; * default data port, and the 'control_url' host will be used. */ +/*! +@brief + Return type of recording session descriptor fuctions. + +Error status enumerators have a negative value. +*/ enum lttng_session_descriptor_status { - /* Invalid session descriptor parameter. */ - LTTNG_SESSION_DESCRIPTOR_STATUS_INVALID = -1, + /// Success. LTTNG_SESSION_DESCRIPTOR_STATUS_OK = 0, - /* Session descriptor parameter is unset. */ + + /// Unsatisfied precondition. + LTTNG_SESSION_DESCRIPTOR_STATUS_INVALID = -1, + + /// Recording session descriptor property is not set. LTTNG_SESSION_DESCRIPTOR_STATUS_UNSET = 1, }; -/* - * Create a session descriptor in no-output mode. - * - * The 'name' parameter can be left NULL to auto-generate a session name. - * - * Returns an lttng_session_descriptor instance on success, NULL on error. - */ +/*! +@brief + Creates a recording session descriptor to create a no-output, + \ref api-session-local-mode "local" recording session + named \lt_p{session_name}. + +LTTng won't write any trace data for a recording session created from +the returned descriptor. + +@param[in] session_name + @parblock + Recording session name. + + If \c NULL, LTTng automatically generates a recording session name + when you call lttng_create_session_ext(). + + Call lttng_session_descriptor_get_session_name() with the returned + recording session descriptor after successfully calling + lttng_create_session_ext() to get the generated name. + @endparblock + +@returns + @parblock + Recording session descriptor on success, or \c NULL on error. + + Destroy the returned descriptor with + lttng_session_descriptor_destroy(). + @endparblock + +@sa lttng_session_descriptor_local_create() -- + Creates a recording session descriptor to create a + \ref api-session-local-mode "local" recording session with an + output. + +@lt_pre_sess_name_not_auto{session_name} +*/ LTTNG_EXPORT extern struct lttng_session_descriptor * -lttng_session_descriptor_create(const char *name); +lttng_session_descriptor_create(const char *session_name); -/* - * Create a session descriptor with a local output destination. - * - * The 'name' parameter can be left NULL to auto-generate a session name. - * - * The 'path' must either be an absolute path or it can be left NULL to - * use the default local output destination. - * - * Returns an lttng_session_descriptor instance on success, NULL on error. - */ +/*! +@brief + Creates a recording session descriptor to create a + \ref api-session-local-mode "local" recording session + named \lt_p{session_name}. + +@param[in] session_name + @parblock + Recording session name. + + If \c NULL, LTTng automatically generates a recording session name + when you call lttng_create_session_ext(). + + Call lttng_session_descriptor_get_session_name() with the returned + recording session descriptor after successfully calling + lttng_create_session_ext() to get the generated name. + @endparblock +@param[in] trace_dir + @parblock + Absolute path of the directory containing the traces of the + recording session you create from the returned descriptor. + + If \c NULL, the output directory is, after calling + lttng_create_session_ext(), + $LTTNG_HOME/lttng-traces/NAME-TS, + with: + +
+
$LTTNG_HOME +
+ The value of the \c LTTNG_HOME environment variable, or + of the \c HOME environment variable if \c LTTNG_HOME isn't + set. + +
NAME +
+ Recording session name (\lt_p{session_name} if not \c NULL, or + an automatically generated name otherwise). + +
TS +
+ \link lttng_session_get_creation_time() Timestamp of the + creation\endlink of the recording session using the + YYYYmmdd-HHMMSS form. +
+ @endparblock + +@returns + @parblock + Recording session descriptor on success, or \c NULL on error. + + Destroy the returned descriptor with + lttng_session_descriptor_destroy(). + @endparblock + +@lt_pre_sess_name_not_auto{session_name} +@pre + If not \c NULL, \lt_p{trace_dir} is a valid path. + +@sa lttng_session_descriptor_create() -- + Creates a recording session descriptor to create a + \ref api-session-local-mode "local" recording session without an + output. +*/ LTTNG_EXPORT extern struct lttng_session_descriptor * -lttng_session_descriptor_local_create(const char *name, const char *path); +lttng_session_descriptor_local_create(const char *session_name, const char *trace_dir); -/* - * Create a session descriptor with a remote output destination. - * - * The 'name' parameter can be left NULL to auto-generate a session name. - * - * The 'control_url' and 'data_url' must conform to the URL format - * described above or can be left NULL to use the default network output. - * - * Returns an lttng_session_descriptor instance on success, NULL on error. - */ +/*! +@brief + Creates a recording session descriptor to create a + \ref api-session-net-mode "network streaming" recording session + named \lt_p{session_name}. + +The valid combinations of \lt_p{control_url} and \lt_p{data_url} are: + + + + + + + +
\lt_p{control_url} + \lt_p{data_url} + Behaviour +
\c NULL + \c NULL + + Use \lt_def_net_ctrl_url as \lt_p{control_url}. + + Use \lt_def_net_data_url as \lt_p{data_url}. +
\ref api-session-one-port-url "Single-port output URL" + \c NULL + + Use the protocol, host, and trace directory (if any) of + \lt_p{control_url} and the port \lt_def_net_data_port + as \lt_p{data_url}. +
Single-port output URL + + Single-port output URL with the exact same protocol, host, + and trace directory (if any) as \lt_p{control_url}. + + Use the specified output URLs. +
\ref api-session-two-port-url "Two-port output URL" + \c NULL + + Use the protocol, host, data port, and trace directory (if any) + of \lt_p{control_url} as \lt_p{data_url}. +
+ +@param[in] session_name + @parblock + Recording session name. + + If \c NULL, LTTng automatically generates a recording session name + when you call lttng_create_session_ext(). + + Call lttng_session_descriptor_get_session_name() with the returned + recording session descriptor after successfully calling + lttng_create_session_ext() to get the generated name. + @endparblock +@param[in] control_url + @parblock + One of: + +
+
\ref api-session-one-port-url "Single-port output URL" +
+ Indicates where (to which relay daemon; see + \lt_man{lttng-relayd,8}) to send the control data. + +
\ref api-session-two-port-url "Two-port output URL" +
+ Indicates where to send the control \em and trace data. +
+ + If \c NULL, this function uses \lt_def_net_url. + @endparblock +@param[in] data_url + @parblock + \ref api-session-one-port-url "Single-port output URL" which + indicates where to send the trace data. + + May be NULL: see the table above for the default value + depending on \lt_p{control_url}. + @endparblock + +@returns + @parblock + Recording session descriptor on success, or \c NULL on error. + + Destroy the returned descriptor with + lttng_session_descriptor_destroy(). + @endparblock + +@lt_pre_sess_name_not_auto{session_name} +@pre + \lt_p{control_url} and \lt_p{data_url} satisfy one of the valid + combinations shown in the table above. +*/ LTTNG_EXPORT extern struct lttng_session_descriptor *lttng_session_descriptor_network_create( - const char *name, const char *control_url, const char *data_url); + const char *session_name, const char *control_url, const char *data_url); -/* - * Create a snapshot session descriptor without a default output. - * - * The 'name' parameter can be left NULL to auto-generate a session name. - * - * Returns an lttng_session_descriptor instance on success, NULL on error. - */ +/*! +@brief + Creates a recording session descriptor to create a + \ref api-session-snapshot-mode "snapshot" recording session + named \lt_p{session_name} without an initial output. + +A recording session which lttng_create_session_ext() creates from the +returned descriptor has no initial snapshot output: you need to either +add one with lttng_snapshot_add_output() or provide one when you take a +snapshot with lttng_snapshot_record(). + +@param[in] session_name + @parblock + Recording session name. + + If \c NULL, LTTng automatically generates a recording session name + when you call lttng_create_session_ext(). + + Call lttng_session_descriptor_get_session_name() with the returned + recording session descriptor after successfully calling + lttng_create_session_ext() to get the generated name. + @endparblock + +@returns + @parblock + Recording session descriptor on success, or \c NULL on error. + + Destroy the returned descriptor with + lttng_session_descriptor_destroy(). + @endparblock + +@lt_pre_sess_name_not_auto{session_name} + +@sa lttng_session_descriptor_snapshot_local_create() -- + Creates a recording session descriptor to create a + \ref api-session-snapshot-mode "snapshot" recording session + with an initial local output. +@sa lttng_session_descriptor_snapshot_network_create() -- + Creates a recording session descriptor to create a + \ref api-session-snapshot-mode "snapshot" recording session + with an initial remote output. +*/ LTTNG_EXPORT extern struct lttng_session_descriptor * -lttng_session_descriptor_snapshot_create(const char *name); +lttng_session_descriptor_snapshot_create(const char *session_name); -/* - * Create a snapshot session descriptor with a local output destination. - * - * The 'name' parameter can be left NULL to auto-generate a session name. - * - * The 'path' must either be an absolute path or it can be left NULL to - * use the default local output destination as the default snapshot output. - * - * Returns an lttng_session_descriptor instance on success, NULL on error. - */ +/*! +@brief + Creates a recording session descriptor to create a + \ref api-session-snapshot-mode "snapshot" recording session + named \lt_p{session_name} and having an initial local output. + +Using the returned descriptor when you call lttng_create_session_ext() +to create a snapshot recording session is similar to using a descriptor +which lttng_session_descriptor_snapshot_create() returns and calling +lttng_snapshot_add_output() after creating the recording session. + +The name of this initial snapshot output is snapshot-0. + +@param[in] session_name + @parblock + Recording session name. + + If \c NULL, LTTng automatically generates a recording session name + when you call lttng_create_session_ext(). + + Call lttng_session_descriptor_get_session_name() with the returned + recording session descriptor after successfully calling + lttng_create_session_ext() to get the generated name. + @endparblock +@param[in] trace_dir + @parblock + Absolute path of an initial snapshot output. + + If \c NULL, the snapshot output directory is, after calling + lttng_create_session_ext(), + $LTTNG_HOME/lttng-traces/NAME-TS, + with: + +
+
$LTTNG_HOME +
+ The value of the \c LTTNG_HOME environment variable, or + of the \c HOME environment variable if \c LTTNG_HOME isn't + set. + +
NAME +
+ Recording session name (\lt_p{session_name} if not \c NULL, or + an automatically generated name otherwise). + +
TS +
+ \link lttng_session_get_creation_time() Timestamp of the + creation\endlink of the recording session using the + YYYYmmdd-HHMMSS form. +
+ @endparblock + +@returns + @parblock + Recording session descriptor on success, or \c NULL on error. + + Destroy the returned descriptor with + lttng_session_descriptor_destroy(). + @endparblock + +@lt_pre_sess_name_not_auto{session_name} +@pre + If not \c NULL, \lt_p{trace_dir} is a valid path. + +@sa lttng_session_descriptor_snapshot_create() -- + Creates a recording session descriptor to create a + \ref api-session-snapshot-mode "snapshot" recording session + without an initial output. +@sa lttng_session_descriptor_snapshot_network_create() -- + Creates a recording session descriptor to create a + \ref api-session-snapshot-mode "snapshot" recording session + with an initial remote output. +*/ LTTNG_EXPORT extern struct lttng_session_descriptor * -lttng_session_descriptor_snapshot_local_create(const char *name, const char *path); +lttng_session_descriptor_snapshot_local_create(const char *session_name, const char *trace_dir); -/* - * Create a snapshot session descriptor with a remote output destination. - * - * The 'name' parameter can be left NULL to auto-generate a session name. - * - * The 'control_url' and 'data_url' must conform to the URL format - * described above or can be left NULL to use the default network output as - * the default snapshot output. - * - * Returns an lttng_session_descriptor instance on success, NULL on error. - */ +/*! +@brief + Creates a recording session descriptor to create a + \ref api-session-snapshot-mode "snapshot" recording session + named \lt_p{session_name} and having an initial remote output. + +Using the returned descriptor when you call lttng_create_session_ext() +to create a snapshot recording session is similar to using a descriptor +which lttng_session_descriptor_snapshot_create() returns and calling +lttng_snapshot_add_output() after creating the recording session. + +The name of this initial snapshot output is snapshot-0. + +The valid combinations of \lt_p{control_url} and \lt_p{data_url} are: + + + + + + + +
\lt_p{control_url} + \lt_p{data_url} + Behaviour +
\c NULL + \c NULL + + Use \lt_def_net_ctrl_url as \lt_p{control_url}. + + Use \lt_def_net_data_url as \lt_p{data_url}. +
\ref api-session-one-port-url "Single-port output URL" + \c NULL + + Use the protocol, host, and trace directory (if any) of + \lt_p{control_url} and the port \lt_def_net_data_port + as \lt_p{data_url}. +
Single-port output URL + + Single-port output URL with the exact same protocol, host, + and trace directory (if any) as \lt_p{control_url}. + + Use the specified output URLs. +
\ref api-session-two-port-url "Two-port output URL" + \c NULL + + Use the protocol, host, data port, and trace directory (if any) + of \lt_p{control_url} as \lt_p{data_url}. +
+ +@param[in] session_name + @parblock + Recording session name. + + If \c NULL, LTTng automatically generates a recording session name + when you call lttng_create_session_ext(). + + Call lttng_session_descriptor_get_session_name() with the returned + recording session descriptor after successfully calling + lttng_create_session_ext() to get the generated name. + @endparblock +@param[in] control_url + @parblock + Control data URL of an initial snapshot output. + + One of: + +
+
\ref api-session-one-port-url "Single-port output URL" +
+ Indicates where (to which relay daemon; see + \lt_man{lttng-relayd,8}) to send the control data. + +
\ref api-session-two-port-url "Two-port output URL" +
+ Indicates where to send the control \em and trace data. +
+ + If \c NULL, this function uses \lt_def_net_url. + @endparblock +@param[in] data_url + @parblock + Trace data URL of an initial snapshot output. + + \ref api-session-one-port-url "Single-port output URL" which + indicates where to send the trace data. + + May be NULL: see the table above for the default value + depending on \lt_p{control_url}. + @endparblock + +@returns + @parblock + Recording session descriptor on success, or \c NULL on error. + + Destroy the returned descriptor with + lttng_session_descriptor_destroy(). + @endparblock + +@lt_pre_sess_name_not_auto{session_name} +@pre + \lt_p{control_url} and \lt_p{data_url} satisfy one of the valid + combinations shown in the table above. + +@sa lttng_session_descriptor_snapshot_create() -- + Creates a recording session descriptor to create a + \ref api-session-snapshot-mode "snapshot" recording session + without an initial output. +@sa lttng_session_descriptor_snapshot_local_create() -- + Creates a recording session descriptor to create a + \ref api-session-snapshot-mode "snapshot" recording session + with an initial local output. +*/ LTTNG_EXPORT extern struct lttng_session_descriptor * -lttng_session_descriptor_snapshot_network_create(const char *name, +lttng_session_descriptor_snapshot_network_create(const char *session_name, const char *control_url, const char *data_url); /* + * NOTE: Not documented with Doxygen as what lttng_create_session_ext() + * creates from such a descriptor is useless (a live recording session + * without any output). Original documentation follows. + * * Create a live session descriptor without an output. * * The 'name' parameter can be left NULL to auto-generate a session name. @@ -189,27 +578,109 @@ lttng_session_descriptor_snapshot_network_create(const char *name, LTTNG_EXPORT extern struct lttng_session_descriptor * lttng_session_descriptor_live_create(const char *name, unsigned long long live_timer_interval_us); -/* - * Create a live session descriptor with a remote output destination. - * - * The 'name' parameter can be left NULL to auto-generate a session name. - * - * The 'control_url' and 'data_url' must conform to the URL format - * described above or can be left NULL to use the default network output. - * - * The 'live_timer_interval_us' parameter is the live timer's period, specified - * in microseconds. - * - * This parameter can't be 0. There is no default value defined for a live - * timer's period. - * - * Returns an lttng_session_descriptor instance on success, NULL on error. - */ +/*! +@brief + Creates a recording session descriptor to create a + \ref api-session-live-mode "live" recording session + named \lt_p{session_name}. + +The valid combinations of \lt_p{control_url} and \lt_p{data_url} are: + + + + + + + +
\lt_p{control_url} + \lt_p{data_url} + Behaviour +
\c NULL + \c NULL + + Use \lt_def_net_ctrl_url as \lt_p{control_url}. + + Use \lt_def_net_data_url as \lt_p{data_url}. +
\ref api-session-one-port-url "Single-port output URL" + \c NULL + + Use the protocol, host, and trace directory (if any) of + \lt_p{control_url} and the port \lt_def_net_data_port + as \lt_p{data_url}. +
Single-port output URL + + Single-port output URL with the exact same protocol, host, + and trace directory (if any) as \lt_p{control_url}. + + Use the specified output URLs. +
\ref api-session-two-port-url "Two-port output URL" + \c NULL + + Use the protocol, host, data port, and trace directory (if any) + of \lt_p{control_url} as \lt_p{data_url}. +
+ +@param[in] session_name + @parblock + Recording session name. + + If \c NULL, LTTng automatically generates a recording session name + when you call lttng_create_session_ext(). + + Call lttng_session_descriptor_get_session_name() with the returned + recording session descriptor after successfully calling + lttng_create_session_ext() to get the generated name. + @endparblock +@param[in] control_url + @parblock + One of: + +
+
\ref api-session-one-port-url "Single-port output URL" +
+ Indicates where (to which relay daemon; see + \lt_man{lttng-relayd,8}) to send the control data. + +
\ref api-session-two-port-url "Two-port output URL" +
+ Indicates where to send the control \em and trace data. +
+ + If \c NULL, this function uses \lt_def_net_url. + @endparblock +@param[in] data_url + @parblock + \ref api-session-one-port-url "Single-port output URL" which + indicates where to send the trace data. + + May be NULL: see the table above for the default value + depending on \lt_p{control_url}. + @endparblock +@param[in] live_timer_period + Period (µs) of the \ref api-channel-live-timer "live timers" of all + the channels of a recording session which lttng_create_session_ext() + creates from the returned descriptor. + +@returns + @parblock + Recording session descriptor on success, or \c NULL on error. + + Destroy the returned descriptor with + lttng_session_descriptor_destroy(). + @endparblock + +@lt_pre_sess_name_not_auto{session_name} +@pre + \lt_p{control_url} and \lt_p{data_url} satisfy one of the valid + combinations shown in the table above. +@pre + \lt_p{live_timer_period} â‰¥ 1 +*/ LTTNG_EXPORT extern struct lttng_session_descriptor * -lttng_session_descriptor_live_network_create(const char *name, +lttng_session_descriptor_live_network_create(const char *session_name, const char *control_url, const char *data_url, - unsigned long long live_timer_interval_us); + unsigned long long live_timer_period); /* * Get a session descriptor's session name. @@ -226,18 +697,75 @@ lttng_session_descriptor_live_network_create(const char *name, * NULL, and LTTNG_SESSION_DESCRIPTOR_STATUS_UNSET if the descriptor's * name parameter is unset. */ + +/*! +@brief + Sets \lt_p{*session_name} to the name of the recording session + which lttng_create_session_ext() created from the recording + session descriptor \lt_p{session_descriptor}. + +Call this function after successfully calling lttng_create_session_ext() +when \lt_p{session_descriptor} wasn't created with a specific recording +session name to get the automatically generated name of the created +recording session. + +@param[in] session_descriptor + Recording session descriptor from which lttng_create_session_ext() + previously created the recording session of which to get the name. +@param[out] session_name + @parblock + On success, this function sets \lt_p{*session_name} + to the name of the recording session which + lttng_create_session_ext() previously created from + \lt_p{session_descriptor}. + + \lt_p{session_descriptor} owns \lt_p{*session_name}. + + \lt_p{*session_name} remains valid until the next recording + session descriptor function call with \lt_p{session_descriptor}. + @endparblock + +@retval #LTTNG_SESSION_DESCRIPTOR_STATUS_OK + Success. +@retval #LTTNG_SESSION_DESCRIPTOR_STATUS_INVALID + Unsatisfied precondition. +@retval #LTTNG_SESSION_DESCRIPTOR_STATUS_UNSET + The name property of \lt_p{session_descriptor} is not set. + +@lt_pre_not_null{session_descriptor} +@pre + You successfully called lttng_create_session_ext() with + \lt_p{session_descriptor}. +@lt_pre_not_null{session_name} +*/ LTTNG_EXPORT extern enum lttng_session_descriptor_status -lttng_session_descriptor_get_session_name(const struct lttng_session_descriptor *descriptor, - const char **name); +lttng_session_descriptor_get_session_name(const struct lttng_session_descriptor *session_descriptor, + const char **session_name); -/* - * Destroy a local lttng_session object. - * - * This does not destroy the session on the session daemon; it releases - * the resources allocated by the descriptor object. - */ +/*! +@brief + Destroys the recording session descriptor \lt_p{session_descriptor}. + +@note + @parblock + This function doesn't destroy the recording session which + lttng_create_session_ext() created from \lt_p{session_descriptor}, + but only the descriptor itself. + + Use lttng_destroy_session_ext() to destroy a recording session. + @endparblock + +@param[in] session_descriptor + @parblock + Recording session descriptor to destroy. + + May be \c NULL. + @endparblock +*/ LTTNG_EXPORT extern void -lttng_session_descriptor_destroy(struct lttng_session_descriptor *descriptor); +lttng_session_descriptor_destroy(struct lttng_session_descriptor *session_descriptor); + +/// @} #ifdef __cplusplus } diff --git a/include/lttng/session.h b/include/lttng/session.h index 9be506fc1..a6735edad 100644 --- a/include/lttng/session.h +++ b/include/lttng/session.h @@ -13,36 +13,79 @@ extern "C" { #endif -#include #include +/*! +@addtogroup api_session +@{ +*/ + +#include + struct lttng_handle; struct lttng_session_descriptor; struct lttng_destruction_handle; -/* - * Basic session information. - * - * The "enabled" field is only used when listing the sessions which indicate if - * it's started or not. - * - * The structures should be initialized to zero before use. - */ #define LTTNG_SESSION_PADDING1 8 + +/*! +@brief + Recording session summary. + +The purpose of such a structure is to provide information about a +\lt_obj_session itself, but not about its \lt_obj_domains +and \lt_obj_channels (use lttng_list_domains() and lttng_list_channels() +for this). + +lttng_list_sessions() sets a pointer to an array of all the available +recording session summaries. +*/ struct lttng_session { + /// Name. char name[LTTNG_NAME_MAX]; - /* - * Human-readable representation of the trace's destination. - * In the case of a local tracing session, a path is provided: - * /path/to/the/output - * - * In the case of a remote (network) tracing session, the string has - * the following format: - * net://hostname/path:ctrl_port [data: data_port] - */ + + /*! + @brief + Human-readable representation of the output (local + or remote). + */ char path[PATH_MAX]; + + /*! + @brief + 1 if this recording session is active (started), or 0 + otherwise. + + @sa lttng_start_tracing() -- + Starts a recording session. + @sa lttng_stop_tracing() -- + Stops a recording session. + */ uint32_t enabled; /* enabled/started: 1, disabled/stopped: 0 */ + + /*! + @brief + 1 if this recording session was created in + \ref api-session-snapshot-mode "snapshot mode", + or 0 otherwise. + + @note + If this member is 1, then the + lttng_session::live_timer_interval member is 0. + */ uint32_t snapshot_mode; + + /*! + @brief + Period (µs) of the \ref api-channel-live-timer "live timers" + of the channels of this recording session, or 0 if this + recording session wasn't created in + \ref api-session-live-mode "live mode". + + @note + If this member is \em not 0, then the + lttng_session::snapshot_mode member is 0. + */ unsigned int live_timer_interval; /* usec */ /* @@ -73,138 +116,397 @@ struct lttng_session { } extended; }; -/* - * Create a session on the session daemon from a session descriptor. - * - * See the session descriptor API description in session-descriptor.h - * - * Note that unspecified session descriptor parameters, such as a session's - * name, are updated in the session descriptor if the creation of the session - * succeeds. This allows users to query the session's auto-generated name - * after its creation. Note that other attributes can be queried using the - * session listing API. - * - * Returns LTTNG_OK on success. See lttng-error.h for the meaning of the other - * return codes. - */ +/*! +@brief + Creates a recording session from the recording session descriptor + \lt_p{session_descriptor}. + +See \ref api_session_descr to learn how to create a recording session +descriptor. + +On success, if the name property of \lt_p{session_descriptor} isn't set, +this function sets it to the automatically generated name of the +recording session. Get the recording session name with +lttng_session_descriptor_get_session_name(). + +@param[in] session_descriptor + Descriptor from which to create a recording session. + +@returns + #LTTNG_OK on success, or a \em negative enumerator otherwise. + +@lt_pre_conn +@lt_pre_not_null{session_descriptor} +@pre + If the name property of \lt_p{session_descriptor} is set, then no + available recording session has this name. + +@sa \ref api_session_descr. +@sa \lt_man{lttng-create,1} +*/ LTTNG_EXPORT extern enum lttng_error_code lttng_create_session_ext(struct lttng_session_descriptor *session_descriptor); -/* - * Create a tracing session using a name and an optional URL. - * - * If _url_ is NULL, no consumer is created for the session. The name can't be - * NULL here. - * - * Return 0 on success else a negative LTTng error code. - */ -LTTNG_EXPORT extern int lttng_create_session(const char *name, const char *url); +/*! +@brief + Creates a recording session named \lt_p{session_name} in + \ref api-session-local-mode "local" + or \ref api-session-net-mode "network streaming" mode, optionally + setting its output URL to \lt_p{output_url}. -/* - * Create a tracing session that will exclusively be used for snapshot meaning - * the session will be in no output mode and every channel enabled for that - * session will be set in overwrite mode and in mmap output since splice is not - * supported. - * - * Name can't be NULL. If an url is given, it will be used to create a default - * snapshot output using it as a destination. If NULL, no output will be - * defined and an add-output call will be needed. - * - * Return 0 on success else a negative LTTng error code. - */ -LTTNG_EXPORT extern int lttng_create_session_snapshot(const char *name, const char *snapshot_url); +@deprecated + Use lttng_create_session_ext() with a dedicated + local or network streaming + \ref api_session_descr "recording session descriptor". -/* - * Create a session exclusively used for live reading. - * - * In this mode, the switch-timer parameter is forced for each UST channel, a - * live-switch-timer is enabled for kernel channels, manually setting - * switch-timer is forbidden. Synchronization beacons are sent to the relayd, - * indexes are sent and metadata is checked for each packet. - * - * Name can't be NULL. If no URL is given, the default is to send the data to - * net://127.0.0.1. The timer_interval is in usec. - * - * Return 0 on success else a negative LTTng error code. - */ -LTTNG_EXPORT extern int -lttng_create_session_live(const char *name, const char *url, unsigned int timer_interval); +@param[in] session_name + Name of the new recording session. +@param[in] output_url + @parblock + \ref api-session-url "Output URL" of the recording session to + create. -/* - * Destroy a tracing session. - * - * The session will not be usable, tracing will be stopped thus buffers will be - * flushed. - * - * This call will wait for data availability for each domain of the session, - * which can take an arbitrary amount of time. However, when returning the - * tracing data is guaranteed to be ready to be read and analyzed. - * - * lttng_destroy_session_no_wait() may be used if such a guarantee is not - * needed. - * - * The name can't be NULL here. - * - * Return 0 on success else a negative LTTng error code. - */ -LTTNG_EXPORT extern int lttng_destroy_session(const char *name); + If it's a \ref api-session-one-port-url "single-port output URL", + then the trace data port is \lt_def_net_data_port. -/* - * Destroy a tracing session. - * - * Performs the same function as lttng_destroy_session(), but provides - * an lttng_destruction_handle which can be used to wait for the completion - * of the session's destruction. The lttng_destroy_handle can also be used - * obtain the status and archive location of any implicit session - * rotation that may have occurred during the session's destruction. - * - * Returns LTTNG_OK on success. The returned handle is owned by the caller - * and must be free'd using lttng_destruction_handle_destroy(). - */ + If \c NULL, LTTng doesn't write any trace data for this recording + session. + @endparblock + +@returns + 0 on success, or a \em negative #lttng_error_code enumerator + otherwise. + +@lt_pre_conn +@lt_pre_not_null{session_name} +@lt_pre_sess_name_not_auto{session_name} +@pre + No available recording session is named \lt_p{session_name}. +@pre + If not \c NULL, \lt_p{output_url} is a valid + \ref api-session-url "output URL". + +@sa lttng_create_session_snapshot() -- + Creates a recording session in snapshot mode. +@sa lttng_create_session_live() -- + Creates a recording session in live mode. +@sa \lt_man{lttng-create,1} +*/ +LTTNG_EXPORT extern int lttng_create_session(const char *session_name, const char *output_url); + +/*! +@brief + Creates a recording session named \lt_p{session_name} in + \ref api-session-snapshot-mode "snapshot" mode, optionally setting + the URL of its initial snapshot output to \lt_p{output_url}. + +@deprecated + Use lttng_create_session_ext() with a dedicated snapshot + \ref api_session_descr "recording session descriptor". + +@param[in] session_name + Name of the new recording session. +@param[in] output_url + @parblock + \ref api-session-url "URL" of an initial snapshot output + which LTTng adds to this recording session. + + If it's a \ref api-session-one-port-url "single-port output URL", + then the trace data port is \lt_def_net_data_port. + + This initial snapshot output is named snapshot-0. + + If \c NULL, then the created recording session has no initial + snapshot output: you need to either add one with + lttng_snapshot_add_output() or provide one when you take a snapshot + with lttng_snapshot_record(). + @endparblock + +@returns + 0 on success, or a \em negative #lttng_error_code enumerator + otherwise. + +@lt_pre_conn +@lt_pre_not_null{session_name} +@lt_pre_sess_name_not_auto{session_name} +@pre + No available recording session is named \lt_p{session_name}. +@pre + If not \c NULL, \lt_p{output_url} is a valid + \ref api-session-url "output URL". + +@sa lttng_create_session() -- + Creates a recording session in local or network streaming mode. +@sa lttng_create_session_live() -- + Creates a recording session in live mode. +@sa \lt_man{lttng-create,1} +*/ +LTTNG_EXPORT extern int lttng_create_session_snapshot(const char *session_name, + const char *output_url); + +/*! +@brief + Creates a recording session named \lt_p{session_name} in + \ref api-session-live-mode "live" mode, optionally setting its + URL to \lt_p{output_url}. + +@deprecated + Use lttng_create_session_ext() with a dedicated live + \ref api_session_descr "recording session descriptor". + +@param[in] session_name + Name of the new recording session. +@param[in] output_url + @parblock + \ref api-session-url "Output URL" of the recording session to + create: \ref api-session-one-port-url "single-port" or + \ref api-session-two-port-url "two-port". + + If it's a \ref api-session-one-port-url "single-port output URL", + then the trace data port is \lt_def_net_data_port. + + If \c NULL, this function uses \lt_def_net_url. + @endparblock +@param[in] live_timer_period + Period (µs) of the \ref api-channel-live-timer "live timers" of all + the channels of the created recording session. + +@returns + 0 on success, or a \em negative #lttng_error_code enumerator + otherwise. + +@lt_pre_conn +@lt_pre_not_null{session_name} +@lt_pre_sess_name_not_auto{session_name} +@pre + No available recording session is named \lt_p{session_name}. +@pre + If not \c NULL, \lt_p{output_url} is a valid + \ref api-session-one-port-url "single-port output URL" or + \ref api-session-two-port-url "two-port output URL". +@pre + \lt_p{live_timer_period} â‰¥ 1 + +@sa lttng_create_session() -- + Creates a recording session in local or network streaming mode. +@sa lttng_create_session_snapshot() -- + Creates a recording session in snapshot mode. +@sa \lt_man{lttng-create,1} +*/ +LTTNG_EXPORT extern int lttng_create_session_live(const char *session_name, + const char *output_url, + unsigned int live_timer_period); + +/*! +@brief + Destroys the recording session named \lt_p{session_name}, blocking + until the operation completes. + +@deprecated + Use lttng_destroy_session_ext(). + +"Destroying" a recording session means freeing the resources which the +LTTng daemons and tracers acquired for it, also making sure to flush all +the recorded trace data to either the local file system or the connected +LTTng relay daemon (see \lt_man{lttng-relayd,8}), depending on the +\ref api-session-modes "recording session mode". + +This function stops any recording activity within the recording session +named \lt_p{session_name}. + +This function implicitly calls lttng_stop_tracing(), blocking until the +trace data of the recording session becomes valid. Use +lttng_destroy_session_no_wait() to avoid a blocking call. + +@param[in] session_name + Name of the recording session to destroy. + +@returns + 0 on success, or a \em negative #lttng_error_code enumerator + otherwise. + +@lt_pre_conn +@lt_pre_not_null{session_name} +@lt_pre_sess_exists{session_name} + +@sa lttng_destroy_session_no_wait() -- + Initiates the destruction operation of a recording session, + returning immediately. +@sa \lt_man{lttng-destroy,1} +*/ +LTTNG_EXPORT extern int lttng_destroy_session(const char *session_name); + +/*! +@brief + Initiates the destruction operation of the recording session named + \lt_p{session_name}. + +@deprecated + Use lttng_destroy_session_ext(). + +"Destroying" a recording session means freeing the resources which the +LTTng daemons and tracers acquired for it, also making sure to flush all +the recorded trace data to either the local file system or the connected +LTTng relay daemon (see \lt_man{lttng-relayd,8}), depending on the +\ref api-session-modes "recording session mode". + +Unlike lttng_destroy_session(), this function does \em not block until +the destruction operation is complete: it returns immediately. This +means the trace(s) of the recording session might not be valid when +this function returns, and there's no way to know when it/they become +valid. + +@param[in] session_name + Name of the recording session to destroy. + +@returns + 0 on success, or a \em negative #lttng_error_code enumerator + otherwise. + +@lt_pre_conn +@lt_pre_not_null{session_name} +@lt_pre_sess_exists{session_name} +@pre + No destruction operation is in progress for the recording session + named \lt_p{session_name}. + +@sa lttng_destroy_session() -- + Destroys a recording session, blocking until the operation + completes. +@sa \lt_man{lttng-destroy,1} +*/ +LTTNG_EXPORT extern int lttng_destroy_session_no_wait(const char *session_name); + +/*! +@brief + Initiates a destruction operation of the recording session + named \lt_p{session_name}. + +"Destroying" a recording session means freeing the resources which the +LTTng daemons and tracers acquired for it, also making sure to flush all +the recorded trace data to either the local file system or the connected +LTTng relay daemon (see \lt_man{lttng-relayd,8}), depending on the +\ref api-session-modes "recording session mode". + +This function doesn't block until the destruction operation completes: +it only initiates the operation. +Use \lt_p{*handle} to wait for the operation to complete. + +@param[in] session_name + Name of the recording session to destroy. +@param[out] handle + @parblock + On success, this function sets \lt_p{*handle} to + a handle which identifies this recording session destruction + operation. + + May be \c NULL. + + Wait for the completion of this destruction operation with + lttng_destruction_handle_wait_for_completion(). + + Destroy \lt_p{*handle} with lttng_destruction_handle_destroy(). + @endparblock + +@returns + #LTTNG_OK on success, or a \em negative enumerator otherwise. + +@lt_pre_conn +@lt_pre_not_null{session_name} +@lt_pre_sess_exists{session_name} +@pre + No destruction operation is in progress for the recording session + named \lt_p{session_name}. + +@sa \lt_man{lttng-destroy,1} +*/ LTTNG_EXPORT extern enum lttng_error_code lttng_destroy_session_ext(const char *session_name, struct lttng_destruction_handle **handle); -/* - * Behaves exactly like lttng_destroy_session but does not wait for data - * availability. - */ -LTTNG_EXPORT extern int lttng_destroy_session_no_wait(const char *name); +/*! +@brief + Sets \lt_p{*sessions} to the summaries of all the available + recording sessions. -/* - * List all the tracing sessions. - * - * Return the number of entries of the "lttng_session" array. The caller - * must free the returned sessions array directly using free(). - * - * On error, a negative LTTng error code is returned. - */ +@param[out] sessions + @parblock + On success, this function sets \lt_p{*sessions} to + the summaries of the available recording sessions. + + Free \lt_p{*sessions} with free(). + @endparblock + +@returns + The number of items in \lt_p{*sessions} on success, or a \em + negative #lttng_error_code enumerator otherwise. + +@lt_pre_conn +@lt_pre_not_null{sessions} + +@sa \lt_man{lttng-list,1} +*/ LTTNG_EXPORT extern int lttng_list_sessions(struct lttng_session **sessions); -/* - * Get the creation time of an lttng_session object on the session daemon. - * - * This function must only be used with lttng_session objects returned - * by lttng_list_sessions() or lttng_session_create(). - * - * The creation time returned is a UNIX timestamp; the number of seconds since - * Epoch (1970-01-01 00:00:00 +0000 (UTC)). - * - * Returns LTTNG_OK on success. See lttng-error.h for the meaning of the other - * return codes. - */ +/*! +@brief + Sets \lt_p{*creation_timestamp} to the timestamp of the creation of + the recording session summarized by \lt_p{session}. + +@param[in] session + Summary of the recording session of which to get the creation + timestamp, as obtained with lttng_list_sessions(). +@param[out] creation_timestamp + On success, this function sets + \lt_p{*creation_timestamp} to the Unix timestamp of the creation of + \lt_p{session}. + +@returns + #LTTNG_OK on success, or a \em negative enumerator otherwise. + +@lt_pre_conn +@lt_pre_not_null{session} +@pre + The recording session summarized by \lt_p{session} is accessible + within the connected session daemon. +@lt_pre_not_null{creation_timestamp} +*/ LTTNG_EXPORT extern enum lttng_error_code -lttng_session_get_creation_time(const struct lttng_session *session, uint64_t *creation_time); +lttng_session_get_creation_time(const struct lttng_session *session, uint64_t *creation_timestamp); -/* - * Set the shared memory path for a session. - * - * Sets the (optional) file system path where shared memory buffers will - * be created for the session. This is useful for buffer extraction on - * crash, when used with filesystems like pramfs. - * - * Return 0 on success else a negative LTTng error code. - */ -LTTNG_EXPORT extern int lttng_set_session_shm_path(const char *session_name, const char *shm_path); +/*! +@brief + Sets the path of the directory containing the shared memory files + holding the channel ring buffers of the recording session named + \lt_p{session_name} on the local file sytem to \lt_p{shm_dir}. + +Specifying a location on an +NVRAM +file system makes it possible to recover the latest recorded trace data +when the system reboots after a crash with the \lt_man{lttng-crash,1} +utility. + +@param[in] session_name + Name of the recording session of which to set the shared memory + file directory path. +@param[in] shm_dir + Path of the directory containing the shared memory files of the + recording session named \lt_p{session_name}. + +@returns + 0 on success, or a \em negative #lttng_error_code enumerator + otherwise. + +@lt_pre_conn +@lt_pre_not_null{session_name} +@lt_pre_sess_exists{session_name} +@lt_pre_sess_never_active{session_name} +@lt_pre_not_null{shm_dir} +@pre + \lt_p{shm_dir} is a writable directory. +*/ +LTTNG_EXPORT extern int lttng_set_session_shm_path(const char *session_name, const char *shm_dir); + +/// @} #ifdef __cplusplus } diff --git a/m4/ax_prog_doxygen.m4 b/m4/ax_prog_doxygen.m4 new file mode 100644 index 000000000..ed1dc83b4 --- /dev/null +++ b/m4/ax_prog_doxygen.m4 @@ -0,0 +1,586 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_prog_doxygen.html +# =========================================================================== +# +# SYNOPSIS +# +# DX_INIT_DOXYGEN(PROJECT-NAME, [DOXYFILE-PATH], [OUTPUT-DIR], ...) +# DX_DOXYGEN_FEATURE(ON|OFF) +# DX_DOT_FEATURE(ON|OFF) +# DX_HTML_FEATURE(ON|OFF) +# DX_CHM_FEATURE(ON|OFF) +# DX_CHI_FEATURE(ON|OFF) +# DX_MAN_FEATURE(ON|OFF) +# DX_RTF_FEATURE(ON|OFF) +# DX_XML_FEATURE(ON|OFF) +# DX_PDF_FEATURE(ON|OFF) +# DX_PS_FEATURE(ON|OFF) +# +# DESCRIPTION +# +# The DX_*_FEATURE macros control the default setting for the given +# Doxygen feature. Supported features are 'DOXYGEN' itself, 'DOT' for +# generating graphics, 'HTML' for plain HTML, 'CHM' for compressed HTML +# help (for MS users), 'CHI' for generating a separate .chi file by the +# .chm file, and 'MAN', 'RTF', 'XML', 'PDF' and 'PS' for the appropriate +# output formats. The environment variable DOXYGEN_PAPER_SIZE may be +# specified to override the default 'a4wide' paper size. +# +# By default, HTML, PDF and PS documentation is generated as this seems to +# be the most popular and portable combination. MAN pages created by +# Doxygen are usually problematic, though by picking an appropriate subset +# and doing some massaging they might be better than nothing. CHM and RTF +# are specific for MS (note that you can't generate both HTML and CHM at +# the same time). The XML is rather useless unless you apply specialized +# post-processing to it. +# +# The macros mainly control the default state of the feature. The use can +# override the default by specifying --enable or --disable. The macros +# ensure that contradictory flags are not given (e.g., +# --enable-doxygen-html and --enable-doxygen-chm, +# --enable-doxygen-anything with --disable-doxygen, etc.) Finally, each +# feature will be automatically disabled (with a warning) if the required +# programs are missing. +# +# Once all the feature defaults have been specified, call DX_INIT_DOXYGEN +# with the following parameters: a one-word name for the project for use +# as a filename base etc., an optional configuration file name (the +# default is '$(srcdir)/Doxyfile', the same as Doxygen's default), and an +# optional output directory name (the default is 'doxygen-doc'). To run +# doxygen multiple times for different configuration files and output +# directories provide more parameters: the second, forth, sixth, etc +# parameter are configuration file names and the third, fifth, seventh, +# etc parameter are output directories. No checking is done to catch +# duplicates. +# +# Automake Support +# +# The DX_RULES substitution can be used to add all needed rules to the +# Makefile. Note that this is a substitution without being a variable: +# only the @DX_RULES@ syntax will work. +# +# The provided targets are: +# +# doxygen-doc: Generate all doxygen documentation. +# +# doxygen-run: Run doxygen, which will generate some of the +# documentation (HTML, CHM, CHI, MAN, RTF, XML) +# but will not do the post processing required +# for the rest of it (PS, PDF). +# +# doxygen-ps: Generate doxygen PostScript documentation. +# +# doxygen-pdf: Generate doxygen PDF documentation. +# +# Note that by default these are not integrated into the automake targets. +# If doxygen is used to generate man pages, you can achieve this +# integration by setting man3_MANS to the list of man pages generated and +# then adding the dependency: +# +# $(man3_MANS): doxygen-doc +# +# This will cause make to run doxygen and generate all the documentation. +# +# The following variable is intended for use in Makefile.am: +# +# DX_CLEANFILES = everything to clean. +# +# Then add this variable to MOSTLYCLEANFILES. +# +# LICENSE +# +# Copyright (c) 2009 Oren Ben-Kiki +# Copyright (c) 2015 Olaf Mandel +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 24 + +## ----------## +## Defaults. ## +## ----------## + +DX_ENV="" +AC_DEFUN([DX_FEATURE_doc], ON) +AC_DEFUN([DX_FEATURE_dot], OFF) +AC_DEFUN([DX_FEATURE_man], OFF) +AC_DEFUN([DX_FEATURE_html], ON) +AC_DEFUN([DX_FEATURE_chm], OFF) +AC_DEFUN([DX_FEATURE_chi], OFF) +AC_DEFUN([DX_FEATURE_rtf], OFF) +AC_DEFUN([DX_FEATURE_xml], OFF) +AC_DEFUN([DX_FEATURE_pdf], ON) +AC_DEFUN([DX_FEATURE_ps], ON) + +## --------------- ## +## Private macros. ## +## --------------- ## + +# DX_ENV_APPEND(VARIABLE, VALUE) +# ------------------------------ +# Append VARIABLE="VALUE" to DX_ENV for invoking doxygen and add it +# as a substitution (but not a Makefile variable). The substitution +# is skipped if the variable name is VERSION. +AC_DEFUN([DX_ENV_APPEND], +[AC_SUBST([DX_ENV], ["$DX_ENV $1='$2'"])dnl +m4_if([$1], [VERSION], [], [AC_SUBST([$1], [$2])dnl +AM_SUBST_NOTMAKE([$1])])dnl +]) + +# DX_DIRNAME_EXPR +# --------------- +# Expand into a shell expression prints the directory part of a path. +AC_DEFUN([DX_DIRNAME_EXPR], + [[expr ".$1" : '\(\.\)[^/]*$' \| "x$1" : 'x\(.*\)/[^/]*$']]) + +# DX_IF_FEATURE(FEATURE, IF-ON, IF-OFF) +# ------------------------------------- +# Expands according to the M4 (static) status of the feature. +AC_DEFUN([DX_IF_FEATURE], [ifelse(DX_FEATURE_$1, ON, [$2], [$3])]) + +# DX_REQUIRE_PROG(VARIABLE, PROGRAM) +# ---------------------------------- +# Require the specified program to be found for the DX_CURRENT_FEATURE to work. +AC_DEFUN([DX_REQUIRE_PROG], [ +AC_PATH_TOOL([$1], [$2]) +if test "$DX_FLAG_[]DX_CURRENT_FEATURE$$1" = 1; then + AC_MSG_WARN([$2 not found - will not DX_CURRENT_DESCRIPTION]) + AC_SUBST(DX_FLAG_[]DX_CURRENT_FEATURE, 0) +fi +]) + +# DX_TEST_FEATURE(FEATURE) +# ------------------------ +# Expand to a shell expression testing whether the feature is active. +AC_DEFUN([DX_TEST_FEATURE], [test "$DX_FLAG_$1" = 1]) + +# DX_CHECK_DEPEND(REQUIRED_FEATURE, REQUIRED_STATE) +# ------------------------------------------------- +# Verify that a required features has the right state before trying to turn on +# the DX_CURRENT_FEATURE. +AC_DEFUN([DX_CHECK_DEPEND], [ +test "$DX_FLAG_$1" = "$2" \ +|| AC_MSG_ERROR([doxygen-DX_CURRENT_FEATURE ifelse([$2], 1, + requires, contradicts) doxygen-$1]) +]) + +# DX_CLEAR_DEPEND(FEATURE, REQUIRED_FEATURE, REQUIRED_STATE) +# ---------------------------------------------------------- +# Turn off the DX_CURRENT_FEATURE if the required feature is off. +AC_DEFUN([DX_CLEAR_DEPEND], [ +test "$DX_FLAG_$1" = "$2" || AC_SUBST(DX_FLAG_[]DX_CURRENT_FEATURE, 0) +]) + +# DX_FEATURE_ARG(FEATURE, DESCRIPTION, +# CHECK_DEPEND, CLEAR_DEPEND, +# REQUIRE, DO-IF-ON, DO-IF-OFF) +# -------------------------------------------- +# Parse the command-line option controlling a feature. CHECK_DEPEND is called +# if the user explicitly turns the feature on (and invokes DX_CHECK_DEPEND), +# otherwise CLEAR_DEPEND is called to turn off the default state if a required +# feature is disabled (using DX_CLEAR_DEPEND). REQUIRE performs additional +# requirement tests (DX_REQUIRE_PROG). Finally, an automake flag is set and +# DO-IF-ON or DO-IF-OFF are called according to the final state of the feature. +AC_DEFUN([DX_ARG_ABLE], [ + AC_DEFUN([DX_CURRENT_FEATURE], [$1]) + AC_DEFUN([DX_CURRENT_DESCRIPTION], [$2]) + AC_ARG_ENABLE(doxygen-$1, + [AS_HELP_STRING(DX_IF_FEATURE([$1], [--disable-doxygen-$1], + [--enable-doxygen-$1]), + DX_IF_FEATURE([$1], [don't $2], [$2]))], + [ +case "$enableval" in +#( +y|Y|yes|Yes|YES) + AC_SUBST([DX_FLAG_$1], 1) + $3 +;; #( +n|N|no|No|NO) + AC_SUBST([DX_FLAG_$1], 0) +;; #( +*) + AC_MSG_ERROR([invalid value '$enableval' given to doxygen-$1]) +;; +esac +], [ +AC_SUBST([DX_FLAG_$1], [DX_IF_FEATURE([$1], 1, 0)]) +$4 +]) +if DX_TEST_FEATURE([$1]); then + $5 + : +fi +if DX_TEST_FEATURE([$1]); then + $6 + : +else + $7 + : +fi +]) + +## -------------- ## +## Public macros. ## +## -------------- ## + +# DX_XXX_FEATURE(DEFAULT_STATE) +# ----------------------------- +AC_DEFUN([DX_DOXYGEN_FEATURE], [AC_DEFUN([DX_FEATURE_doc], [$1])]) +AC_DEFUN([DX_DOT_FEATURE], [AC_DEFUN([DX_FEATURE_dot], [$1])]) +AC_DEFUN([DX_MAN_FEATURE], [AC_DEFUN([DX_FEATURE_man], [$1])]) +AC_DEFUN([DX_HTML_FEATURE], [AC_DEFUN([DX_FEATURE_html], [$1])]) +AC_DEFUN([DX_CHM_FEATURE], [AC_DEFUN([DX_FEATURE_chm], [$1])]) +AC_DEFUN([DX_CHI_FEATURE], [AC_DEFUN([DX_FEATURE_chi], [$1])]) +AC_DEFUN([DX_RTF_FEATURE], [AC_DEFUN([DX_FEATURE_rtf], [$1])]) +AC_DEFUN([DX_XML_FEATURE], [AC_DEFUN([DX_FEATURE_xml], [$1])]) +AC_DEFUN([DX_XML_FEATURE], [AC_DEFUN([DX_FEATURE_xml], [$1])]) +AC_DEFUN([DX_PDF_FEATURE], [AC_DEFUN([DX_FEATURE_pdf], [$1])]) +AC_DEFUN([DX_PS_FEATURE], [AC_DEFUN([DX_FEATURE_ps], [$1])]) + +# DX_INIT_DOXYGEN(PROJECT, [CONFIG-FILE], [OUTPUT-DOC-DIR], ...) +# -------------------------------------------------------------- +# PROJECT also serves as the base name for the documentation files. +# The default CONFIG-FILE is "$(srcdir)/Doxyfile" and OUTPUT-DOC-DIR is +# "doxygen-doc". +# More arguments are interpreted as interleaved CONFIG-FILE and +# OUTPUT-DOC-DIR values. +AC_DEFUN([DX_INIT_DOXYGEN], [ + +# Files: +AC_SUBST([DX_PROJECT], [$1]) +AC_SUBST([DX_CONFIG], ['ifelse([$2], [], [$(srcdir)/Doxyfile], [$2])']) +AC_SUBST([DX_DOCDIR], ['ifelse([$3], [], [doxygen-doc], [$3])']) +m4_if(m4_eval(3 < m4_count($@)), 1, [m4_for([DX_i], 4, m4_count($@), 2, + [AC_SUBST([DX_CONFIG]m4_eval(DX_i[/2]), + 'm4_default_nblank_quoted(m4_argn(DX_i, $@), + [$(srcdir)/Doxyfile])')])])dnl +m4_if(m4_eval(3 < m4_count($@)), 1, [m4_for([DX_i], 5, m4_count($@,), 2, + [AC_SUBST([DX_DOCDIR]m4_eval([(]DX_i[-1)/2]), + 'm4_default_nblank_quoted(m4_argn(DX_i, $@), + [doxygen-doc])')])])dnl +m4_define([DX_loop], m4_dquote(m4_if(m4_eval(3 < m4_count($@)), 1, + [m4_for([DX_i], 4, m4_count($@), 2, [, m4_eval(DX_i[/2])])], + [])))dnl + +# Environment variables used inside doxygen.cfg: +DX_ENV_APPEND(SRCDIR, $srcdir) +DX_ENV_APPEND(PROJECT, $DX_PROJECT) +DX_ENV_APPEND(VERSION, $PACKAGE_VERSION) + +# Doxygen itself: +DX_ARG_ABLE(doc, [generate any doxygen documentation], + [], + [], + [DX_REQUIRE_PROG([DX_DOXYGEN], doxygen) + DX_REQUIRE_PROG([DX_PERL], perl)], + [DX_ENV_APPEND(PERL_PATH, $DX_PERL)]) + +# Dot for graphics: +DX_ARG_ABLE(dot, [generate graphics for doxygen documentation], + [DX_CHECK_DEPEND(doc, 1)], + [DX_CLEAR_DEPEND(doc, 1)], + [DX_REQUIRE_PROG([DX_DOT], dot)], + [DX_ENV_APPEND(HAVE_DOT, YES) + DX_ENV_APPEND(DOT_PATH, [`DX_DIRNAME_EXPR($DX_DOT)`])], + [DX_ENV_APPEND(HAVE_DOT, NO)]) + +# Man pages generation: +DX_ARG_ABLE(man, [generate doxygen manual pages], + [DX_CHECK_DEPEND(doc, 1)], + [DX_CLEAR_DEPEND(doc, 1)], + [], + [DX_ENV_APPEND(GENERATE_MAN, YES)], + [DX_ENV_APPEND(GENERATE_MAN, NO)]) + +# RTF file generation: +DX_ARG_ABLE(rtf, [generate doxygen RTF documentation], + [DX_CHECK_DEPEND(doc, 1)], + [DX_CLEAR_DEPEND(doc, 1)], + [], + [DX_ENV_APPEND(GENERATE_RTF, YES)], + [DX_ENV_APPEND(GENERATE_RTF, NO)]) + +# XML file generation: +DX_ARG_ABLE(xml, [generate doxygen XML documentation], + [DX_CHECK_DEPEND(doc, 1)], + [DX_CLEAR_DEPEND(doc, 1)], + [], + [DX_ENV_APPEND(GENERATE_XML, YES)], + [DX_ENV_APPEND(GENERATE_XML, NO)]) + +# (Compressed) HTML help generation: +DX_ARG_ABLE(chm, [generate doxygen compressed HTML help documentation], + [DX_CHECK_DEPEND(doc, 1)], + [DX_CLEAR_DEPEND(doc, 1)], + [DX_REQUIRE_PROG([DX_HHC], hhc)], + [DX_ENV_APPEND(HHC_PATH, $DX_HHC) + DX_ENV_APPEND(GENERATE_HTML, YES) + DX_ENV_APPEND(GENERATE_HTMLHELP, YES)], + [DX_ENV_APPEND(GENERATE_HTMLHELP, NO)]) + +# Separate CHI file generation. +DX_ARG_ABLE(chi, [generate doxygen separate compressed HTML help index file], + [DX_CHECK_DEPEND(chm, 1)], + [DX_CLEAR_DEPEND(chm, 1)], + [], + [DX_ENV_APPEND(GENERATE_CHI, YES)], + [DX_ENV_APPEND(GENERATE_CHI, NO)]) + +# Plain HTML pages generation: +DX_ARG_ABLE(html, [generate doxygen plain HTML documentation], + [DX_CHECK_DEPEND(doc, 1) DX_CHECK_DEPEND(chm, 0)], + [DX_CLEAR_DEPEND(doc, 1) DX_CLEAR_DEPEND(chm, 0)], + [], + [DX_ENV_APPEND(GENERATE_HTML, YES)], + [DX_TEST_FEATURE(chm) || DX_ENV_APPEND(GENERATE_HTML, NO)]) + +# PostScript file generation: +DX_ARG_ABLE(ps, [generate doxygen PostScript documentation], + [DX_CHECK_DEPEND(doc, 1)], + [DX_CLEAR_DEPEND(doc, 1)], + [DX_REQUIRE_PROG([DX_LATEX], latex) + DX_REQUIRE_PROG([DX_MAKEINDEX], makeindex) + DX_REQUIRE_PROG([DX_DVIPS], dvips) + DX_REQUIRE_PROG([DX_EGREP], egrep)]) + +# PDF file generation: +DX_ARG_ABLE(pdf, [generate doxygen PDF documentation], + [DX_CHECK_DEPEND(doc, 1)], + [DX_CLEAR_DEPEND(doc, 1)], + [DX_REQUIRE_PROG([DX_PDFLATEX], pdflatex) + DX_REQUIRE_PROG([DX_MAKEINDEX], makeindex) + DX_REQUIRE_PROG([DX_EGREP], egrep)]) + +# LaTeX generation for PS and/or PDF: +if DX_TEST_FEATURE(ps) || DX_TEST_FEATURE(pdf); then + DX_ENV_APPEND(GENERATE_LATEX, YES) +else + DX_ENV_APPEND(GENERATE_LATEX, NO) +fi + +# Paper size for PS and/or PDF: +AC_ARG_VAR(DOXYGEN_PAPER_SIZE, + [a4wide (default), a4, letter, legal or executive]) +case "$DOXYGEN_PAPER_SIZE" in +#( +"") + AC_SUBST(DOXYGEN_PAPER_SIZE, "") +;; #( +a4wide|a4|letter|legal|executive) + DX_ENV_APPEND(PAPER_SIZE, $DOXYGEN_PAPER_SIZE) +;; #( +*) + AC_MSG_ERROR([unknown DOXYGEN_PAPER_SIZE='$DOXYGEN_PAPER_SIZE']) +;; +esac + +# Rules: +AS_IF([[test $DX_FLAG_html -eq 1]], +[[DX_SNIPPET_html="## ------------------------------- ## +## Rules specific for HTML output. ## +## ------------------------------- ## + +DX_CLEAN_HTML = \$(DX_DOCDIR)/html]dnl +m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\ + \$(DX_DOCDIR]DX_i[)/html]])[ + +"]], +[[DX_SNIPPET_html=""]]) +AS_IF([[test $DX_FLAG_chi -eq 1]], +[[DX_SNIPPET_chi=" +DX_CLEAN_CHI = \$(DX_DOCDIR)/\$(PACKAGE).chi]dnl +m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\ + \$(DX_DOCDIR]DX_i[)/\$(PACKAGE).chi]])["]], +[[DX_SNIPPET_chi=""]]) +AS_IF([[test $DX_FLAG_chm -eq 1]], +[[DX_SNIPPET_chm="## ------------------------------ ## +## Rules specific for CHM output. ## +## ------------------------------ ## + +DX_CLEAN_CHM = \$(DX_DOCDIR)/chm]dnl +m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\ + \$(DX_DOCDIR]DX_i[)/chm]])[\ +${DX_SNIPPET_chi} + +"]], +[[DX_SNIPPET_chm=""]]) +AS_IF([[test $DX_FLAG_man -eq 1]], +[[DX_SNIPPET_man="## ------------------------------ ## +## Rules specific for MAN output. ## +## ------------------------------ ## + +DX_CLEAN_MAN = \$(DX_DOCDIR)/man]dnl +m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\ + \$(DX_DOCDIR]DX_i[)/man]])[ + +"]], +[[DX_SNIPPET_man=""]]) +AS_IF([[test $DX_FLAG_rtf -eq 1]], +[[DX_SNIPPET_rtf="## ------------------------------ ## +## Rules specific for RTF output. ## +## ------------------------------ ## + +DX_CLEAN_RTF = \$(DX_DOCDIR)/rtf]dnl +m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\ + \$(DX_DOCDIR]DX_i[)/rtf]])[ + +"]], +[[DX_SNIPPET_rtf=""]]) +AS_IF([[test $DX_FLAG_xml -eq 1]], +[[DX_SNIPPET_xml="## ------------------------------ ## +## Rules specific for XML output. ## +## ------------------------------ ## + +DX_CLEAN_XML = \$(DX_DOCDIR)/xml]dnl +m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\ + \$(DX_DOCDIR]DX_i[)/xml]])[ + +"]], +[[DX_SNIPPET_xml=""]]) +AS_IF([[test $DX_FLAG_ps -eq 1]], +[[DX_SNIPPET_ps="## ----------------------------- ## +## Rules specific for PS output. ## +## ----------------------------- ## + +DX_CLEAN_PS = \$(DX_DOCDIR)/\$(PACKAGE).ps]dnl +m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\ + \$(DX_DOCDIR]DX_i[)/\$(PACKAGE).ps]])[ + +DX_PS_GOAL = doxygen-ps + +doxygen-ps: \$(DX_CLEAN_PS) + +]m4_foreach([DX_i], [DX_loop], +[[\$(DX_DOCDIR]DX_i[)/\$(PACKAGE).ps: \$(DX_DOCDIR]DX_i[)/\$(PACKAGE).tag + \$(DX_V_LATEX)cd \$(DX_DOCDIR]DX_i[)/latex; \\ + rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \\ + \$(DX_LATEX) refman.tex; \\ + \$(DX_MAKEINDEX) refman.idx; \\ + \$(DX_LATEX) refman.tex; \\ + countdown=5; \\ + while \$(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \\ + refman.log > /dev/null 2>&1 \\ + && test \$\$countdown -gt 0; do \\ + \$(DX_LATEX) refman.tex; \\ + countdown=\`expr \$\$countdown - 1\`; \\ + done; \\ + \$(DX_DVIPS) -o ../\$(PACKAGE).ps refman.dvi + +]])["]], +[[DX_SNIPPET_ps=""]]) +AS_IF([[test $DX_FLAG_pdf -eq 1]], +[[DX_SNIPPET_pdf="## ------------------------------ ## +## Rules specific for PDF output. ## +## ------------------------------ ## + +DX_CLEAN_PDF = \$(DX_DOCDIR)/\$(PACKAGE).pdf]dnl +m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\ + \$(DX_DOCDIR]DX_i[)/\$(PACKAGE).pdf]])[ + +DX_PDF_GOAL = doxygen-pdf + +doxygen-pdf: \$(DX_CLEAN_PDF) + +]m4_foreach([DX_i], [DX_loop], +[[\$(DX_DOCDIR]DX_i[)/\$(PACKAGE).pdf: \$(DX_DOCDIR]DX_i[)/\$(PACKAGE).tag + \$(DX_V_LATEX)cd \$(DX_DOCDIR]DX_i[)/latex; \\ + rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \\ + \$(DX_PDFLATEX) refman.tex; \\ + \$(DX_MAKEINDEX) refman.idx; \\ + \$(DX_PDFLATEX) refman.tex; \\ + countdown=5; \\ + while \$(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \\ + refman.log > /dev/null 2>&1 \\ + && test \$\$countdown -gt 0; do \\ + \$(DX_PDFLATEX) refman.tex; \\ + countdown=\`expr \$\$countdown - 1\`; \\ + done; \\ + mv refman.pdf ../\$(PACKAGE).pdf + +]])["]], +[[DX_SNIPPET_pdf=""]]) +AS_IF([[test $DX_FLAG_ps -eq 1 -o $DX_FLAG_pdf -eq 1]], +[[DX_SNIPPET_latex="## ------------------------------------------------- ## +## Rules specific for LaTeX (shared for PS and PDF). ## +## ------------------------------------------------- ## + +DX_V_LATEX = \$(_DX_v_LATEX_\$(V)) +_DX_v_LATEX_ = \$(_DX_v_LATEX_\$(AM_DEFAULT_VERBOSITY)) +_DX_v_LATEX_0 = @echo \" LATEX \" \$][@; + +DX_CLEAN_LATEX = \$(DX_DOCDIR)/latex]dnl +m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\ + \$(DX_DOCDIR]DX_i[)/latex]])[ + +"]], +[[DX_SNIPPET_latex=""]]) + +AS_IF([[test $DX_FLAG_doc -eq 1]], +[[DX_SNIPPET_doc="## --------------------------------- ## +## Format-independent Doxygen rules. ## +## --------------------------------- ## + +${DX_SNIPPET_html}\ +${DX_SNIPPET_chm}\ +${DX_SNIPPET_man}\ +${DX_SNIPPET_rtf}\ +${DX_SNIPPET_xml}\ +${DX_SNIPPET_ps}\ +${DX_SNIPPET_pdf}\ +${DX_SNIPPET_latex}\ +DX_V_DXGEN = \$(_DX_v_DXGEN_\$(V)) +_DX_v_DXGEN_ = \$(_DX_v_DXGEN_\$(AM_DEFAULT_VERBOSITY)) +_DX_v_DXGEN_0 = @echo \" DXGEN \" \$<; + +.PHONY: doxygen-run doxygen-doc \$(DX_PS_GOAL) \$(DX_PDF_GOAL) + +.INTERMEDIATE: doxygen-run \$(DX_PS_GOAL) \$(DX_PDF_GOAL) + +doxygen-run:]m4_foreach([DX_i], [DX_loop], + [[ \$(DX_DOCDIR]DX_i[)/\$(PACKAGE).tag]])[ + +doxygen-doc: doxygen-run \$(DX_PS_GOAL) \$(DX_PDF_GOAL) + +]m4_foreach([DX_i], [DX_loop], +[[\$(DX_DOCDIR]DX_i[)/\$(PACKAGE).tag: \$(DX_CONFIG]DX_i[) \$(pkginclude_HEADERS) + \$(A""M_V_at)rm -rf \$(DX_DOCDIR]DX_i[) + \$(DX_V_DXGEN)\$(DX_ENV) DOCDIR=\$(DX_DOCDIR]DX_i[) \$(DX_DOXYGEN) \$(DX_CONFIG]DX_i[) + \$(A""M_V_at)echo Timestamp >\$][@ + +]])dnl +[DX_CLEANFILES = \\] +m4_foreach([DX_i], [DX_loop], +[[ \$(DX_DOCDIR]DX_i[)/doxygen_sqlite3.db \\ + \$(DX_DOCDIR]DX_i[)/\$(PACKAGE).tag \\ +]])dnl +[ -r \\ + \$(DX_CLEAN_HTML) \\ + \$(DX_CLEAN_CHM) \\ + \$(DX_CLEAN_CHI) \\ + \$(DX_CLEAN_MAN) \\ + \$(DX_CLEAN_RTF) \\ + \$(DX_CLEAN_XML) \\ + \$(DX_CLEAN_PS) \\ + \$(DX_CLEAN_PDF) \\ + \$(DX_CLEAN_LATEX)"]], +[[DX_SNIPPET_doc=""]]) +AC_SUBST([DX_RULES], +["${DX_SNIPPET_doc}"])dnl +AM_SUBST_NOTMAKE([DX_RULES]) + +#For debugging: +#echo DX_FLAG_doc=$DX_FLAG_doc +#echo DX_FLAG_dot=$DX_FLAG_dot +#echo DX_FLAG_man=$DX_FLAG_man +#echo DX_FLAG_html=$DX_FLAG_html +#echo DX_FLAG_chm=$DX_FLAG_chm +#echo DX_FLAG_chi=$DX_FLAG_chi +#echo DX_FLAG_rtf=$DX_FLAG_rtf +#echo DX_FLAG_xml=$DX_FLAG_xml +#echo DX_FLAG_pdf=$DX_FLAG_pdf +#echo DX_FLAG_ps=$DX_FLAG_ps +#echo DX_ENV=$DX_ENV +]) -- 2.34.1 From bc13dc0f9eaa7742a589ce6d8faece4990f77f75 Mon Sep 17 00:00:00 2001 From: Kienan Stewart Date: Thu, 14 Mar 2024 11:33:47 -0400 Subject: [PATCH 10/16] docs: Add supported versions and fix-backport policy MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Change-Id: Idb22c6487e2397b807c5d1b78acbc2adb03be363 Signed-off-by: Kienan Stewart Signed-off-by: Jérémie Galarneau --- README.adoc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/README.adoc b/README.adoc index 6ec60856a..676467aa4 100644 --- a/README.adoc +++ b/README.adoc @@ -221,6 +221,21 @@ As there's no official {lib} Python bindings yet, see link:doc/python-howto.txt[`doc/python-howto.txt`] to understand how to use them. +== Supported versions + +The LTTng project supports the last two released stable versions +(e.g. stable-2.13 and stable-2.12). + +Fixes are backported from the master branch to the last stable version unless +those fixes would break the ABI or API. Those fixes may be backported to the +second-last stable version, depending on complexity and ABI/API compatibility. + +Security fixes are backported from the master branch to both of the last stable +version and the second-last stable version. + +New features are integrated into the master branch and not backported to the +last stable branch. + == Community Mailing list:: -- 2.34.1 From e793ddc8acc7f978bde7a991644cc6749ac1bcc9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=A9mie=20Galarneau?= Date: Thu, 21 Mar 2024 16:55:08 -0400 Subject: [PATCH 11/16] Fix: consumerd: leak of tracing buffers on relayd connectivity issue MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Observed issue ============== A leak of the tracing buffers can be noticed when the relay daemon is terminated following the creation of a live session, but prior to the initiation of any applications. The issue can be reproduced with the following steps: # Create a live session $ lttng create --live # Kill the relay daemon before the allocation of the buffers $ killall lttng-relayd $ lttng enable-event --userspace --all $ lttng start # Launch an instrumented application $ ./my_app # Destroy all sessions $ lttng destroy --all # List the open file descriptors of the lttng-consumerd process # and notice how the tracing buffer are still visible. $ ls -lah /proc/$pid_of_lttng_consumerd/fd [...] lrwx------ 1 root root 64 Mar 19 19:50 987 -> '/dev/shm/shm-ust-consumer-358446 (deleted)' lrwx------ 1 root root 64 Mar 19 19:50 988 -> '/dev/shm/shm-ust-consumer-358446 (deleted)' lrwx------ 1 root root 64 Mar 19 19:50 989 -> '/dev/shm/shm-ust-consumer-358446 (deleted)' [...] Cause ===== The consumer daemon allocates recording channels and their tracing buffers in a two-step process. First, the session daemon emits an `ASK_CHANNEL_CREATION` command, which results in the allocation of the internal consumer channel structures and of the actual tracing buffers. The channel's unique key is returned to the session daemon. After this command, the channel temporarily holds a list of streams which are waiting to be sent to the session and relay daemons as a result of the `GET_CHANNEL` command. At this moment, the channel's reference count is one over the number of streams as they all hold a back-reference to their parent channel and there is a global reference held by the session daemon. The session daemon uses the key it received to emit the `GET_CHANNEL` command. When executing this command, the consumer daemon attempts to send the streams to the relay daemon. On failure to do so, the session daemon is informed of the connection error. The consumer daemon then omits a step of the command: the streams are never handed-off from the channel's internal list to the consumption/monitoring thread. This hand-off is what is internally referred-to as making the streams "globally visible". The session daemon, upon receiving the failure error code of the GET_CHANNEL command, tears down its internal ust_app channel structures. As part of that process, it emits the `DESTROY_CHANNEL` command to reclaim the channel on the consumer daemon's end. This command is deferred to the channel poll thread as the `CHANNEL_DEL` internal command. As part of this internal command, the channel poll thread cleans the channel's stream list to clean-up any streams that are not "globally visible": all of them, in our case. Then, the session daemon's global reference is released which should normally result in the reclamation of the channel itself. While reproducing the problem, we noted that channel wasn't reclaimed and that its reference count matched the number of CPUs on the system at the time the `CHANNEL_DEL` command completed. This hinted at the streams holding a reference to the channel even after the completion of the reclamation command. Looking at clean_channel_stream_list(), which cleans up the channel's temporary stream list, we note that the streams' monitor property is overridden to `false` just before the call to consumer_stream_destroy(). This is strange and a comment (added as part of 212d67a2 in 2014) hints at a locking problem that was being worked-around. In all likelihood, this no longer applies as the locking strategies used have evolved quite a bit since then. Still, setting the monitor property to `false` is problematic as, in that mode (say, channels that are used to record a snapshot), streams do not hold a reference to their parent channel. This causes the clean-up code to forego the clean-up of the channel, resulting in its leak. Since the channel ultimately owns the 'stream_fds' which represent the shared memory files, those files (and associated memory) are also leaked (they are closed during the execution of lttng_ustconsumer_del_channel()). Solution ======== We simply remove the stream monitor mode override to leave it in its appropriate state. The clean-up then proceeds normally, ensuring the tracing buffers are properly reclaimed. Known drawbacks =============== None. Fixes #1411 Signed-off-by: Jérémie Galarneau Change-Id: I4a2fb8cddd2f9da9a2c9df19ba36229627ad2569 --- src/common/consumer/consumer.cpp | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/common/consumer/consumer.cpp b/src/common/consumer/consumer.cpp index ed844f8df..1da243601 100644 --- a/src/common/consumer/consumer.cpp +++ b/src/common/consumer/consumer.cpp @@ -178,13 +178,6 @@ static void clean_channel_stream_list(struct lttng_consumer_channel *channel) /* Delete streams that might have been left in the stream list. */ cds_list_for_each_entry_safe (stream, stmp, &channel->streams.head, send_node) { - /* - * Once a stream is added to this list, the buffers were created so we - * have a guarantee that this call will succeed. Setting the monitor - * mode to 0 so we don't lock nor try to delete the stream from the - * global hash table. - */ - stream->monitor = 0; consumer_stream_destroy(stream, nullptr); } } -- 2.34.1 From 9a28bc04902b4a98d4f6ed613b27607c10ee5a3b Mon Sep 17 00:00:00 2001 From: Kienan Stewart Date: Wed, 20 Mar 2024 16:02:53 -0400 Subject: [PATCH 12/16] Tests: Add test to check shared-memory FD leaks after relayd dies MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Refs: https://bugs.lttng.org/issues/1411 Change-Id: I9804011320c28a9867af1fdc6a8d82ad0671fe3d Signed-off-by: Kienan Stewart Signed-off-by: Jérémie Galarneau --- tests/regression/Makefile.am | 1 + tests/regression/tools/live/Makefile.am | 2 +- .../tools/live/test_per_application_leaks.py | 155 ++++++++++++++++++ tests/utils/lttngtest/environment.py | 25 ++- 4 files changed, 169 insertions(+), 14 deletions(-) create mode 100755 tests/regression/tools/live/test_per_application_leaks.py diff --git a/tests/regression/Makefile.am b/tests/regression/Makefile.am index ca3fb2d52..da5cb1b57 100644 --- a/tests/regression/Makefile.am +++ b/tests/regression/Makefile.am @@ -16,6 +16,7 @@ TESTS = tools/base-path/test_ust \ tools/health/test_thread_ok \ tools/live/test_kernel \ tools/live/test_lttng_kernel \ + tools/live/test_per_application_leaks.py \ tools/live/test_ust \ tools/live/test_ust_tracefile_count \ tools/live/test_lttng_ust \ diff --git a/tests/regression/tools/live/Makefile.am b/tests/regression/tools/live/Makefile.am index 494b982df..3ad9b7ba3 100644 --- a/tests/regression/tools/live/Makefile.am +++ b/tests/regression/tools/live/Makefile.am @@ -6,7 +6,7 @@ LIBTAP=$(top_builddir)/tests/utils/tap/libtap.la LIBLTTNG_SESSIOND_COMMON=$(top_builddir)/src/bin/lttng-sessiond/liblttng-sessiond-common.la noinst_PROGRAMS = live_test -EXTRA_DIST = test_kernel test_lttng_kernel +EXTRA_DIST = test_kernel test_lttng_kernel test_per_application_leaks.py if HAVE_LIBLTTNG_UST_CTL EXTRA_DIST += test_ust test_ust_tracefile_count test_lttng_ust diff --git a/tests/regression/tools/live/test_per_application_leaks.py b/tests/regression/tools/live/test_per_application_leaks.py new file mode 100755 index 000000000..1d12049ed --- /dev/null +++ b/tests/regression/tools/live/test_per_application_leaks.py @@ -0,0 +1,155 @@ +#!/usr/bin/env python3 +# +# SPDX-FileCyoprightText: Kienan Stewart +# SPDX-License-Identifier: GPL-2.0-only + +""" +Test that the consumerd doesn't leak file descriptor allocations in /dev/shm +when the relayd exits before instrumented applications start. + +@see https://bugs.lttng.org/issues/1411 +""" + +import os +import pathlib +import subprocess +import sys + +test_utils_import_path = pathlib.Path(__file__).absolute().parents[3] / "utils" +sys.path.append(str(test_utils_import_path)) + +import lttngtest + + +def get_consumerd_pid(tap, parent, match_string): + pid = 0 + try: + process = subprocess.Popen( + ["pgrep", "-P", str(parent), "-f", match_string], + stdout=subprocess.PIPE, + ) + process.wait() + output = str(process.stdout.read(), encoding="UTF-8").splitlines() + if len(output) != 1: + raise Exception( + "Unexpected number of output lines (got {}): {}".format( + len(output), output + ) + ) + pid = int(output[0]) + except Exception as e: + tap.diagnostic( + "Failed to find child process of '{}' matching '{}': '{}'".format( + parent, match_string, str(e) + ) + ) + return pid + + +def count_process_dev_shm_fds(pid): + count = 0 + if pid == 0: + return count + dir = os.path.join("/proc", str(pid), "fd") + for root, dirs, files in os.walk(dir): + for f in files: + filename = pathlib.Path(os.path.join(root, f)) + try: + if filename.is_symlink() and str(filename.resolve()).startswith( + "/dev/shm/shm-ust-consumer" + ): + count += 1 + except FileNotFoundError: + # As we're walking /proc/XX/fd/, fds may be added or removed + continue + return count + + +def count_dev_shm_fds(tap, test_env): + consumer32_pid = get_consumerd_pid(tap, test_env._sessiond.pid, "ustconsumerd32") + fds_consumerd32 = count_process_dev_shm_fds(consumer32_pid) + consumer64_pid = get_consumerd_pid(tap, test_env._sessiond.pid, "ustconsumerd64") + fds_consumerd64 = count_process_dev_shm_fds(consumer64_pid) + return (fds_consumerd32, fds_consumerd64) + + +def test_fd_leak(tap, test_env, buffer_sharing_policy, kill_relayd=True): + tap.diagnostic( + "test_fd_leak with buffer sharing policy {}, kill relayd: {}".format( + buffer_sharing_policy, kill_relayd + ) + ) + client = lttngtest.LTTngClient(test_env, log=tap.diagnostic) + output = lttngtest.NetworkSessionOutputLocation( + "net://localhost:{}:{}/".format( + test_env.lttng_relayd_control_port, test_env.lttng_relayd_data_port + ) + ) + + session = client.create_session(output=output, live=True) + channel = session.add_channel( + lttngtest.lttngctl.TracingDomain.User, + buffer_sharing_policy=buffer_sharing_policy, + ) + channel.add_recording_rule(lttngtest.lttngctl.UserTracepointEventRule()) + session.start() + + count_post_start = count_dev_shm_fds(tap, test_env) + + # Kill the relayd + if kill_relayd: + test_env._terminate_relayd() + + test_env.launch_wait_trace_test_application(10) + count_post_app1 = count_dev_shm_fds(tap, test_env) + + test_env.launch_wait_trace_test_application(10) + count_post_app2 = count_dev_shm_fds(tap, test_env) + + test_env.launch_wait_trace_test_application(10) + count_post_app3 = count_dev_shm_fds(tap, test_env) + + session.stop() + session.destroy() + + count_post_destroy = count_dev_shm_fds(tap, test_env) + + tap.diagnostic( + "FD counts post-start: {}, post-destroy: {}".format( + count_post_start, count_post_destroy + ) + ) + tap.test( + count_post_start == count_post_destroy, + "Count of consumerd FDs in /dev/shm are equal after session start then after destroy", + ) + + tap.diagnostic( + "FD counts post-app-1: {}, post-app-2: {}, post-app-3: {}".format( + count_post_app1, count_post_app2, count_post_app3 + ) + ) + if buffer_sharing_policy == lttngtest.lttngctl.BufferSharingPolicy.PerUID: + tap.test( + (count_post_app1 == count_post_app2) + and (count_post_app2 == count_post_app3), + "Count of consumerd FDs in /dev/shm doesn't leak over several application invocations", + ) + else: + tap.skip( + "Count of consumerds FDs in /dev/shm doesn't leak over several application invocations - no mechanism is available to guarantee buffer reclamation within a given time frame" + ) + + +tap = lttngtest.TapGenerator(8) +for kill_relayd in [True, False]: + for buffer_sharing_policy in [ + lttngtest.lttngctl.BufferSharingPolicy.PerUID, + lttngtest.lttngctl.BufferSharingPolicy.PerPID, + ]: + with lttngtest.test_environment( + log=tap.diagnostic, with_relayd=True, with_sessiond=True + ) as test_env: + test_fd_leak(tap, test_env, buffer_sharing_policy, kill_relayd) + +sys.exit(0 if tap.is_successful else 1) diff --git a/tests/utils/lttngtest/environment.py b/tests/utils/lttngtest/environment.py index 74dcfb8d2..73d18874b 100644 --- a/tests/utils/lttngtest/environment.py +++ b/tests/utils/lttngtest/environment.py @@ -618,14 +618,20 @@ class _Environment(logger._Logger): Launch an application that will trace from within constructors. """ return _TraceTestApplication( - self._project_root - / "tests" - / "utils" - / "testapp" - / subpath, + self._project_root / "tests" / "utils" / "testapp" / subpath, self, ) + def _terminate_relayd(self): + if self._relayd and self._relayd.poll() is None: + self._relayd.terminate() + self._relayd.wait() + if self._relayd_output_consumer: + self._relayd_output_consumer.join() + self._relayd_output_consumer = None + self._log("Relayd killed") + self._relayd = None + # Clean-up managed processes def _cleanup(self): # type: () -> None @@ -646,14 +652,7 @@ class _Environment(logger._Logger): self._log("Session daemon killed") self._sessiond = None - if self._relayd and self._relayd.poll() is None: - self._relayd.terminate() - self._relayd.wait() - if self._relayd_output_consumer: - self._relayd_output_consumer.join() - self._relayd_output_consumer = None - self._log("Relayd killed") - self._relayd = None + self._terminate_relayd() self._lttng_home = None -- 2.34.1 From a881d7c95fa9f6d47dbc89e9ddffbc2e950c05cb Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=A9mie=20Galarneau?= Date: Wed, 24 Apr 2024 15:34:46 -0400 Subject: [PATCH 13/16] vscode: Add configurations to run the executables under the debugger MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Add tasks.json and launch.json which allow VSCode users to build the project and run the various binaries (lttng, lttng-relayd, lttng-sessiond) under the integrated debugger. For the moment, the configuration assumes the user wants to build "in-tree" and has setup the tree to build the project (running ./bootstrap and ./configure). The build job attempts to build a compile database if 'bear' is available on the system. To debug the LTTng client, make sure to edit the matching configuration in .vscode/launch.json to provide your desired arguments (for the moment, 'help' is passed by default). Signed-off-by: Jérémie Galarneau Change-Id: Iee6d6e012bef82f5d3df4296925a3669ad7027d6 --- .gitignore | 1 - .vscode/build.sh | 33 +++++++++++++++ .vscode/launch.json | 76 ++++++++++++++++++++++++++++++++++ .vscode/libtool_gdb_wrapper.sh | 9 ++++ .vscode/tasks.json | 21 ++++++++++ 5 files changed, 139 insertions(+), 1 deletion(-) create mode 100755 .vscode/build.sh create mode 100644 .vscode/launch.json create mode 100755 .vscode/libtool_gdb_wrapper.sh create mode 100644 .vscode/tasks.json diff --git a/.gitignore b/.gitignore index 4c5a4e5e9..b0884eb16 100644 --- a/.gitignore +++ b/.gitignore @@ -47,7 +47,6 @@ TAGS /.clangd/ compile_commands.json *_flymake* -/.vscode/* # m4 macros not automatically generated /m4/libtool.m4 diff --git a/.vscode/build.sh b/.vscode/build.sh new file mode 100755 index 000000000..9a4e3625a --- /dev/null +++ b/.vscode/build.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash +# Copyright (C) 2024 Jérémie Galarneau +# +# SPDX-License-Identifier: LGPL-2.1-only +# + +source_dir="$1" + +# Run make quietly to check if a Makefile exists +make_output=$(make -C "$source_dir" -q 2>&1) +make_exit_status=$? + +# Check the return status of make -q +if [ $make_exit_status -eq 2 ]; then + # It seems the Makefiles don't exist. Most likely the user forgot to + # setup their tree. + echo "$make_output" + echo -e "\033[33mMake couldn't find a Makefile: did you run ./bootstrap and ./configure ?\033[0m" + exit 1 +fi + +# Check if compile_commands.json does not exist in the source directory and if bear is installed +if [ ! -f "$source_dir/compile_commands.json" ] && which bear >/dev/null 2>&1; then + # Bear is installed and compile_commands.json is not present + # Perform a make clean since compile_commands.json is missing and bear is installed + make -C "$source_dir" clean + + # Prefix bear to the make command + command_prefix="bear -- " +fi + +# Run make with or without bear prefix, depending on the condition above +eval "${command_prefix}"make -C "$source_dir" -j "$(nproc)" diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 000000000..4541842e1 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,76 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Debug LTTng Client", + "type": "cppdbg", + "request": "launch", + "program": "${workspaceFolder}/src/bin/lttng/.libs/lttng", + // Replace with your args + "args": [ + "help" + ], + "stopAtEntry": false, + "cwd": "${workspaceFolder}", + "environment": [], + "externalConsole": false, + "MIMode": "gdb", + "miDebuggerPath": "${workspaceFolder}/.vscode/libtool_gdb_wrapper.sh", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ], + "preLaunchTask": "Build LTTng-tools" + }, + { + "name": "Debug LTTng Session Daemon", + "type": "cppdbg", + "request": "launch", + "program": "${workspaceFolder}/src/bin/lttng-sessiond/.libs/lttng-sessiond", + "args": [], + "stopAtEntry": false, + "cwd": "${workspaceFolder}", + // The session daemon fails to launch if it can't find the session schema description + "environment": [ + { + "name": "LTTNG_SESSION_CONFIG_XSD_PATH", + "value": "${workspaceFolder}/src/common/" + } + ], + "externalConsole": false, + "MIMode": "gdb", + "miDebuggerPath": "${workspaceFolder}/.vscode/libtool_gdb_wrapper.sh", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ], + "preLaunchTask": "Build LTTng-tools" + }, + { + "name": "Debug LTTng Relay Daemon", + "type": "cppdbg", + "request": "launch", + "program": "${workspaceFolder}/src/bin/lttng-relayd/lttng-relayd", + "args": [], + "cwd": "${workspaceFolder}", + "environment": [], + "externalConsole": false, + "MIMode": "gdb", + "miDebuggerPath": "${workspaceFolder}/.vscode/libtool_gdb_wrapper.sh", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ], + "preLaunchTask": "Build LTTng-tools" + }, + ] +} \ No newline at end of file diff --git a/.vscode/libtool_gdb_wrapper.sh b/.vscode/libtool_gdb_wrapper.sh new file mode 100755 index 000000000..0f60c832d --- /dev/null +++ b/.vscode/libtool_gdb_wrapper.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env sh +# Copyright (C) 2024 Jérémie Galarneau +# +# SPDX-License-Identifier: LGPL-2.1-only +# +# Wrapper script to setup the environment before invoking gdb +# on the in-tree binaries (under `.libs`) + +libtool --mode=execute gdb "$@" diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 000000000..9f28bc573 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,21 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "type": "shell", + "label": "Build LTTng-tools", + // Assumes you ran ./bootstrap and ./configure with your preferred options + "command": "${workspaceFolder}/.vscode/build.sh ${workspaceFolder}", + "options": { + "cwd": "${workspaceFolder}" + }, + "problemMatcher": [ + "$gcc" + ], + "group": { + "kind": "build", + "isDefault": true + } + } + ] +} \ No newline at end of file -- 2.34.1 From 8ab63dfb6a51460c9744828f7248d0fdca602ad3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=A9mie=20Galarneau?= Date: Tue, 23 Apr 2024 15:13:16 -0400 Subject: [PATCH 14/16] Fix: syscall event rule: emission sites not compared in is_equal MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The emission sites are not compared when comparing two kernel-syscall event rules. This prevents users from subscribing to notifications of triggers that use event-rule-matches syscall conditions which differ only by their emission site (entry, exit, entry+exit). Signed-off-by: Jérémie Galarneau Change-Id: Id15eb682cd40f4966ca10911314ae7e8839712da --- src/common/event-rule/kernel-syscall.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/common/event-rule/kernel-syscall.cpp b/src/common/event-rule/kernel-syscall.cpp index 23a432aac..933c3543f 100644 --- a/src/common/event-rule/kernel-syscall.cpp +++ b/src/common/event-rule/kernel-syscall.cpp @@ -133,6 +133,10 @@ static bool lttng_event_rule_kernel_syscall_is_equal(const struct lttng_event_ru goto end; } + if (a->emission_site != b->emission_site) { + goto end; + } + is_equal = true; end: return is_equal; -- 2.34.1 From b9984811575702dea69108d180f5e90098709d13 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=A9mie=20Galarneau?= Date: Tue, 30 Apr 2024 15:35:32 -0400 Subject: [PATCH 15/16] Clean-up: consumer.hpp: coding style indentation fix MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Caught this that slipped by when running ./format-cpp Signed-off-by: Jérémie Galarneau Change-Id: Ie16dc145d0776acba2ddcee31f2180b840112921 --- src/common/consumer/consumer.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/consumer/consumer.hpp b/src/common/consumer/consumer.hpp index 310969172..851b3e2b8 100644 --- a/src/common/consumer/consumer.hpp +++ b/src/common/consumer/consumer.hpp @@ -922,7 +922,7 @@ void lttng_consumer_set_command_sock_path(struct lttng_consumer_local_data *ctx, * on error. */ int lttng_consumer_send_error(struct lttng_consumer_local_data *ctx, - enum lttcomm_return_code error_code); + enum lttcomm_return_code error_code); /* * Called from signal handler to ensure a clean exit. -- 2.34.1 From 6dee08cf205eb0c5f9edc37eeb5d10ad61abd0e1 Mon Sep 17 00:00:00 2001 From: Michael Jeanson Date: Tue, 30 Apr 2024 15:17:52 -0400 Subject: [PATCH 16/16] fix: relayd: unaligned access in trace_chunk_registry_ht_key_hash MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit In 328c2fe7297c941aa9cbcfa4ce944fca1bd7300f, the type of 'lttng_uuid' was changed from a C array of 16 'uint8_t' to a C++ std::array of the same type and length. In 'trace_chunk_registry_ht_key_hash()' we access these 16 bytes as 2 'uint64_t', to do so we used to cast the array to '(uint64_t *)' and then access index 0 and 1. When it was converted to C++, an error was introduced where instead we reinterpret_cast to 'const uint64_t *' the index 0 and 1 of the array which results in a 'uint64_t' pointer to the first and second bytes of the array. These values overlap but since they are used as keys for an hash table it still works. However, on platforms that don't allow unaligned access, the second pointer being only offset by one byte results in a 'Bus error'. Reintroduce the old behavior by applying the index 0 and 1 to the pointer resulting from the reinterpret_cast. Change-Id: I2bc287edbe6864a2a870f9de1f3b4dd8f8a90ace Signed-off-by: Michael Jeanson Signed-off-by: Jérémie Galarneau --- src/bin/lttng-relayd/sessiond-trace-chunks.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bin/lttng-relayd/sessiond-trace-chunks.cpp b/src/bin/lttng-relayd/sessiond-trace-chunks.cpp index 9d793c9bc..2326878fb 100644 --- a/src/bin/lttng-relayd/sessiond-trace-chunks.cpp +++ b/src/bin/lttng-relayd/sessiond-trace-chunks.cpp @@ -78,8 +78,8 @@ struct trace_chunk_registry_ht_element { static unsigned long trace_chunk_registry_ht_key_hash(const struct trace_chunk_registry_ht_key *key) { - const uint64_t uuid_h1 = *reinterpret_cast(&key->sessiond_uuid[0]); - const uint64_t uuid_h2 = *reinterpret_cast(&key->sessiond_uuid[1]); + const uint64_t uuid_h1 = reinterpret_cast(key->sessiond_uuid.data())[0]; + const uint64_t uuid_h2 = reinterpret_cast(key->sessiond_uuid.data())[1]; return hash_key_u64(&uuid_h1, lttng_ht_seed) ^ hash_key_u64(&uuid_h2, lttng_ht_seed); } -- 2.34.1