From 0fd98e248b3bb81a2d31ff456140ca74576ef3a4 Mon Sep 17 00:00:00 2001 From: xb <18656218039@163.com> Date: Mon, 5 Jan 2026 11:30:54 +0800 Subject: [PATCH] Auto commit from DCSP - 2026/1/5 11:30:54 --- ComHS-main.cpp | 62 +- ComHS.cpp | 1099 +++++++++-------- ComHS.h | 285 +++-- build/CMakeFiles/CMakeOutput.log | 120 +- build/CMakeFiles/ComHS.dir/ComHS-main.cpp.o | Bin 2776 -> 4408 bytes build/CMakeFiles/ComHS.dir/ComHS-main.cpp.o.d | 23 +- build/CMakeFiles/ComHS.dir/ComHS.cpp.o | Bin 163464 -> 166304 bytes build/CMakeFiles/ComHS.dir/ComHS.cpp.o.d | 10 +- build/bin/ComHS | Bin 97520 -> 98072 bytes 9 files changed, 865 insertions(+), 734 deletions(-) diff --git a/ComHS-main.cpp b/ComHS-main.cpp index 0c68c8f..b5c505c 100644 --- a/ComHS-main.cpp +++ b/ComHS-main.cpp @@ -2,41 +2,65 @@ #include #include #include +#include #include "ComHS.h" using namespace std; +/* 全局运行标志 */ +static volatile int keep_running = 1; + +/* 信号处理函数 */ +void signal_handler(int signum) +{ + keep_running = 0; + cout << "\n[INFO] Received signal " << signum << ", stopping..." << endl; +} + +/* + * 主函数 + * + * 命令行参数: + * argv[1]: 遥控串口设备路径 (默认: /dev/ttyUSB0) + * argv[2]: 遥测串口设备路径 (默认: /dev/ttyUSB1) + * argv[3]: 波特率 (默认: 115200) + */ int main(int argc, char *argv[]) { - // 默认串口配置 - const char *dev_telec = "/dev/ttyUSB0"; // 遥控串口 - const char *dev_telem = "/dev/ttyUSB1"; // 遥测串口 + const char *dev_telec = "/dev/ttyUSB0"; /* 遥控串口 */ + const char *dev_telem = "/dev/ttyUSB1"; /* 遥测串口 */ int baudrate = 115200; - - // 从命令行参数获取配置 - if (argc >= 3) - { + + /* 从命令行参数获取配置 */ + if (argc >= 3) { dev_telec = argv[1]; dev_telem = argv[2]; } - if (argc >= 4) - { + if (argc >= 4) { baudrate = atoi(argv[3]); } - - // 启动服务 + + + /* 设置信号处理 */ + signal(SIGINT, signal_handler); + signal(SIGTERM, signal_handler); + + /* 启动服务 */ start_scomm_service(dev_telec, dev_telem, baudrate); - - // 主循环 - int counter = 0; - while (1) - { + + while (keep_running) { + static int counter = 0; + if (counter++ >= 10) { + counter = 0; + } + sleep(1); } - - // 服务停止 + + cout << "[INFO] Stopping service..." << endl; stop_scomm_service(); - + + cout << "[INFO] Service stopped successfully" << endl; return 0; } \ No newline at end of file diff --git a/ComHS.cpp b/ComHS.cpp index daec3e2..d5799da 100644 --- a/ComHS.cpp +++ b/ComHS.cpp @@ -5,627 +5,702 @@ #include #include #include -#include -#include #include #include +#include +#include #include "ComHS.h" #include "SimMsg.h" using namespace std; -// 全局变量定义 -static int fd_telecontrol = -1; // 遥控串口 通信硬件服务化发送给通信机 -static int fd_telemetry = -1; // 遥测串口 通信机发送给通信硬件服务化 +/* + * 全局变量定义 + */ -S_Comm_telemetry_data_t S_TELE; // 维护遥测数据缓存,供状态查询使用 -uint8_t cmderPadding[1] = {0xA5}; // 用于填充指令 +/* 串口文件描述符 */ +static int fd_telecontrol = -1; /* 遥控串口 - 通信机发送给通信硬件服务化 */ +static int fd_telemetry = -1; /* 遥测串口 - 通信硬件服务化发送给通信机 */ + +/* 遥测数据缓存 */ +S_Comm_telemetry_data_t S_TELE; /* 维护遥测数据缓存,供状态查询使用 */ + +/* 填充指令 */ +uint8_t cmderPadding[1] = {0xA5}; + +/* 通信机开关状态 */ uint8_t S_COMM_ON_OFF = 0; -uint8_t scommHeaderErrCnt = 0; // 帧头错误 -uint8_t scommResIDErrCnt = 0; // 应答帧ID错误 -uint8_t scommCheckErrCnt = 0; // 帧校验错误 -uint8_t scommUartResetCnt = 0; // 无应答串口复位计数 -uint8_t sendCmderCnt = 0; // 向通信机发送控制指令计数 -uint8_t sendCmderSuccessCnt = 0; // 通信机控制指令执行成功应答计数 -uint8_t sendCmderErrCnt = 0; // 通信机控制指令错误应答计数 -uint8_t sendTelemCnt = 0; // 向通信机发送遥测帧计数 -uint8_t sendTelemSuccessCnt = 0; // 接收通信机遥测帧应答计数 -uint8_t sendGetSelfTelemCmderCnt = 0; // 发送查询通信机工程遥测计数 +/* 统计计数器 */ +uint8_t scommHeaderErrCnt = 0; /* 帧头错误 */ +uint8_t scommResIDErrCnt = 0; /* 应答帧ID错误 */ +uint8_t scommCheckErrCnt = 0; /* 帧校验错误 */ +uint8_t scommUartResetCnt = 0; /* 无应答串口复位计数 */ +uint8_t sendCmderCnt = 0; /* 向通信机发送控制指令计数 */ +uint8_t sendCmderSuccessCnt = 0; /* 通信机控制指令执行成功应答计数 */ +uint8_t sendCmderErrCnt = 0; /* 通信机控制指令错误应答计数 */ +uint8_t sendTelemCnt = 0; /* 向通信机发送遥测帧计数 */ +uint8_t sendTelemSuccessCnt = 0; /* 接收通信机遥测帧应答计数 */ +uint8_t sendGetSelfTelemCmderCnt = 0; /* 发送查询通信机工程遥测计数 */ -unsigned char S_Telec1_Data[512] = {0}; // 遥控 -unsigned char S_Telem_Data[512] = {0}; // 遥测 +/* 数据缓冲区 */ +unsigned char S_Telec1_Data[512] = {0}; /* 遥控数据 */ +unsigned char S_Telem_Data[512] = {0}; /* 遥测数据 */ -// ComHS相关全局变量 -SimMsg* ComHS_part = nullptr; +/* ComHS相关全局变量 */ +SimMsg *ComHS_part = nullptr; string servername = "Com_Hardware_Service"; string topic_name_cmd = "Command"; string topic_name_tlm = "Telemetry"; -const char* fastdds_dest = "Com_Service"; +const char *fastdds_dest = "Com_Service"; -// 运行控制 +/* 运行控制 */ static volatile int g_running = 1; -static pthread_t telemetry_thread, monitor_thread; -// 信号处理函数 +/* 函数前向声明 */ +static int process_received_data(uint8_t *data, uint16_t size); + +/* + * 信号处理函数 + */ static void signal_handler(int signum) { - g_running = 0; + g_running = 0; } -// ComHS日志函数 +/* + * ComHS日志函数 + */ void ComHSWriteLog(const string &msg) { - cout << msg << endl; + cout << msg << endl; } -// 初始化ComHS的fastdds +/* + * 初始化ComHS的fastdds + * + * @domainid: 域ID + * @appname: 应用程序名称 + */ void ComHS_init(uint8_t domainid, string appname) { - vector parameters; - string expression = "dest = '" + servername + "'"; - - if (nullptr == ComHS_part) - { - ComHS_part = new SimMsg(domainid, 3000, appname, ComHSWriteLog); - ComHS_part->create_pub(topic_name_cmd); - ComHS_part->create_pub(topic_name_tlm); - - ComHS_part->create_sub(topic_name_cmd, command_callback, expression, parameters); - ComHS_part->create_sub(topic_name_tlm, telemetry_callback, expression, parameters); - - } + vector parameters; + string expression = "dest = '" + servername + "'"; + + if (nullptr == ComHS_part) { + ComHS_part = new SimMsg(domainid, 3000, appname, ComHSWriteLog); + ComHS_part->create_pub(topic_name_cmd); + ComHS_part->create_pub(topic_name_tlm); + + ComHS_part->create_sub(topic_name_cmd, command_callback, + expression, parameters); + ComHS_part->create_sub(topic_name_tlm, telemetry_callback, + expression, parameters); + } } -// 通信硬件服务化遥控发布 -void ComHS_command_Pub(uint8_t* data, string dest, uint16_t len) +/* + * 通信硬件服务化遥控发布 + * + * @data: 要发布的数据 + * @dest: 目标对象 + * @len: 数据长度 + */ +void ComHS_command_Pub(uint8_t *data, string dest, uint16_t len) { - if (ComHS_part) - { - ComHS_part->publish(topic_name_cmd, "Com_Hardware_Service", dest, "command", data, len); - } + if (ComHS_part) { + ComHS_part->publish(topic_name_cmd, "Com_Hardware_Service", + dest, "command", data, len); + } } -// 通信硬件服务化遥测发布 -void ComHS_telemetry_Pub(uint8_t* data, string dest, uint16_t len) +/* + * 通信硬件服务化遥测发布 + * + * @data: 要发布的数据 + * @dest: 目标对象 + * @len: 数据长度 + */ +void ComHS_telemetry_Pub(uint8_t *data, string dest, uint16_t len) { - if (ComHS_part) - { - ComHS_part->publish(topic_name_tlm, "Com_Hardware_Service", dest, "telemetry", data, len); - } + if (ComHS_part) { + ComHS_part->publish(topic_name_tlm, "Com_Hardware_Service", + dest, "telemetry", data, len); + } } -// ComHS命令回调函数 +/* + * ComHS命令回调函数 + * + * 将接收到的遥控指令通过send_S_COMM_Cmder()函数发送给串口 + */ void command_callback(string src, string dest, string type, - string reserve1, string reserve2, - vector& data) + string reserve1, string reserve2, + vector &data) { - - if (S_COMM_ON_OFF != 1) - { - cout << "[ERROR] S_COMM is not available" << endl; - return; - } - - if (data.empty()) - { - cout << "[ERROR] No command data provided" << endl; - return; - } - - // 直接发送给通信机 - uint8_t *cmd_data = data.data(); - uint16_t cmd_len = data.size(); - - cout << "[INFO] Sending command to S_COMM: " << data.size() << " bytes" << endl; - - // 发送控制指令 - send_S_COMM_Cmder(cmd_data, cmd_len); + if (S_COMM_ON_OFF != 1) { + cerr << "S_COMM not available" << endl; + return; + } + + if (data.empty()) { + cerr << "No command data provided" << endl; + return; + } + + /* 直接发送给通信机 */ + uint8_t *cmd_data = data.data(); + uint16_t cmd_len = data.size(); + + /* 发送控制指令 */ + send_S_COMM_Cmder(cmd_data, cmd_len); } -// ComHS遥测回调函数 +/* + * ComHS遥测回调函数 + * + * 1、当接收到的为命令类型,即为取遥测指令时,触发取遥测 + * 2、当接收到的为遥测类型,即为需要下行的遥测时,将遥测下行 + */ void telemetry_callback(string src, string dest, string type, - string reserve1, string reserve2, - vector& data) + string reserve1, string reserve2, + vector &data) { - - if (S_COMM_ON_OFF != 1) - { - cout << "[ERROR] S_COMM is not available" << endl; - return; - } - - if (data.empty()) - { - cout << "[ERROR] No telemetry data provided" << endl; - return; - } - - // 解析为Multi_EPDU_packet_t结构体 - if (data.size() >= sizeof(Multi_EPDU_packet_t)) - { - Multi_EPDU_packet_t *down_pkt = (Multi_EPDU_packet_t *)data.data(); - - // 通过通信机发送下行遥测 - Send_Telemetry_From_S((uint8_t *)down_pkt, sizeof(Multi_EPDU_packet_t)); - cout << "[INFO] Downlink telemetry sent via S_COMM" << endl; - } - else - { - cout << "[ERROR] Telemetry data too small: " << data.size() - << " bytes, need at least " << sizeof(Multi_EPDU_packet_t) << " bytes" << endl; + if (S_COMM_ON_OFF != 1) { + cerr << "S_COMM not available" << endl; + return; + } + + if (data.empty()) { + cerr << "No telemetry data provided" << endl; + return; + } + + if (type == "command" ) { + if (data.size() == 1 && data[0] == 0xFF) { + Get_S_COMM_UP_CMD(); + } + } else if (type == "telemetry") { + if (data.size() >= sizeof(Multi_EPDU_packet_t)) { + Multi_EPDU_packet_t *down_pkt = (Multi_EPDU_packet_t *)data.data(); + Send_Telemetry_From_S((uint8_t *)down_pkt, sizeof(Multi_EPDU_packet_t)); + } else { + cerr << "Telemetry data too small" << endl; + } } } -// 串口初始化 +/* + * 串口初始化 + * + * @dev_telec: 遥控串口设备路径 + * @dev_telem: 遥测串口设备路径 + * @baudrate: 波特率 + * + * 返回值: 成功返回0,失败返回-1 + */ int scomm_uart_init(const char *dev_telec, const char *dev_telem, int baudrate) { - // 初始化遥控串口 - fd_telecontrol = open(dev_telec, O_RDWR | O_NOCTTY | O_NDELAY); - if (fd_telecontrol < 0) - { - perror("open telecontrol serial failed"); - return -1; - } + /* 初始化遥控串口 */ + fd_telecontrol = open(dev_telec, O_RDWR | O_NOCTTY | O_NDELAY); + if (fd_telecontrol < 0) { + perror("Open telecontrol serial failed"); + return -1; + } - // 设置为非阻塞模式 - fcntl(fd_telecontrol, F_SETFL, 0); + /* 设置为非阻塞模式 */ + fcntl(fd_telecontrol, F_SETFL, 0); - // 初始化遥测串口 - fd_telemetry = open(dev_telem, O_RDWR | O_NOCTTY | O_NDELAY); - if (fd_telemetry < 0) - { - perror("open telemetry serial failed"); - close(fd_telecontrol); - fd_telecontrol = -1; - return -1; - } + /* 初始化遥测串口 */ + fd_telemetry = open(dev_telem, O_RDWR | O_NOCTTY | O_NDELAY); + if (fd_telemetry < 0) { + perror("Open telemetry serial failed"); + close(fd_telecontrol); + fd_telecontrol = -1; + return -1; + } - // 设置为非阻塞模式 - fcntl(fd_telemetry, F_SETFL, 0); + /* 设置为非阻塞模式 */ + fcntl(fd_telemetry, F_SETFL, 0); - // 设置两个串口参数 - int fds[] = {fd_telecontrol, fd_telemetry}; - for (int i = 0; i < 2; i++) - { - struct termios tty; - if (tcgetattr(fds[i], &tty) != 0) - { - perror("tcgetattr failed"); - continue; - } + /* 设置两个串口参数 */ + int fds[] = {fd_telecontrol, fd_telemetry}; + for (int i = 0; i < 2; i++) { + struct termios tty; - // 设置波特率 - speed_t speed; - switch(baudrate) { - case 9600: speed = B9600; break; - case 19200: speed = B19200; break; - case 38400: speed = B38400; break; - case 57600: speed = B57600; break; - case 115200: speed = B115200; break; - default: speed = B115200; break; - } - - cfsetospeed(&tty, speed); - cfsetispeed(&tty, speed); + if (tcgetattr(fds[i], &tty) != 0) { + perror("tcgetattr failed"); + continue; + } - // 8N1: 8位数据位,无奇偶校验,1位停止位 - tty.c_cflag &= ~PARENB; // 无奇偶校验 - tty.c_cflag &= ~CSTOPB; // 1位停止位 - tty.c_cflag &= ~CSIZE; - tty.c_cflag |= CS8; // 8位数据位 - tty.c_cflag |= CREAD | CLOCAL; // 启用接收器,忽略调制解调器控制线 + /* 设置波特率 */ + speed_t speed; + switch (baudrate) { + case 9600: + speed = B9600; + break; + case 19200: + speed = B19200; + break; + case 38400: + speed = B38400; + break; + case 57600: + speed = B57600; + break; + case 115200: + speed = B115200; + break; + default: + speed = B115200; + break; + } - // 关闭流控 - tty.c_cflag &= ~CRTSCTS; + cfsetospeed(&tty, speed); + cfsetispeed(&tty, speed); - // 设置输入模式 - tty.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); // 非规范模式 - tty.c_iflag &= ~(IXON | IXOFF | IXANY); // 关闭软件流控 - tty.c_iflag &= ~(INLCR | ICRNL | IGNCR | IUCLC); // 关闭输入转换 + /* 8N1: 8位数据位,无奇偶校验,1位停止位 */ + tty.c_cflag &= ~PARENB; /* 无奇偶校验 */ + tty.c_cflag &= ~CSTOPB; /* 1位停止位 */ + tty.c_cflag &= ~CSIZE; + tty.c_cflag |= CS8; /* 8位数据位 */ + tty.c_cflag |= CREAD | CLOCAL; /* 启用接收器,忽略调制解调器控制线 */ - // 设置输出模式 - tty.c_oflag &= ~OPOST; // 原始输出 - tty.c_oflag &= ~ONLCR; // 不转换换行 + /* 关闭流控 */ + tty.c_cflag &= ~CRTSCTS; - // 设置超时和最小读取字符数 - tty.c_cc[VMIN] = 0; // 非阻塞 - tty.c_cc[VTIME] = 5; // 0.5秒超时 + /* 设置输入模式 */ + tty.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); /* 非规范模式 */ + tty.c_iflag &= ~(IXON | IXOFF | IXANY); /* 关闭软件流控 */ + tty.c_iflag &= ~(INLCR | ICRNL | IGNCR | IUCLC); /* 关闭输入转换 */ - if (tcsetattr(fds[i], TCSANOW, &tty) != 0) - { - perror("tcsetattr failed"); - } - - // 清空缓冲区 - tcflush(fds[i], TCIOFLUSH); - } + /* 设置输出模式 */ + tty.c_oflag &= ~OPOST; /* 原始输出 */ + tty.c_oflag &= ~ONLCR; /* 不转换换行 */ - cout << "[OK] S_COMM UART init telec=" << dev_telec - << " telem=" << dev_telem << " baud=" << baudrate << endl; - return 0; + /* 设置超时和最小读取字符数 */ + tty.c_cc[VMIN] = 0; /* 非阻塞 */ + tty.c_cc[VTIME] = 5; /* 0.5秒超时 */ + + if (tcsetattr(fds[i], TCSANOW, &tty) != 0) { + perror("tcsetattr failed"); + } + + /* 清空缓冲区 */ + tcflush(fds[i], TCIOFLUSH); + } + + cout << "S_COMM UART initialized: telec=" << dev_telec + << " telem=" << dev_telem << " baud=" << baudrate << endl; + return 0; } -// S遥测串口发送 +/* + * S遥测串口发送 + * + * 将遥测数据进行封装,然后发送到通信机串口 + * + * @cmd: 命令码 + * @len: 数据长度 + * @nums: 数据指针 + */ void S_UART_TELEMETRY_SEND(uint8_t cmd, uint16_t len, uint8_t *nums) { - uint8_t tele_check = 0; - uint16_t i; - memset(S_Telem_Data, 0, 512); + uint8_t tele_check = 0; + uint16_t i; - S_Telem_Data[0] = 0xEB; - S_Telem_Data[1] = 0x90; - S_Telem_Data[2] = cmd; - S_Telem_Data[3] = (unsigned char)len >> 8; - S_Telem_Data[4] = (unsigned char)len; + memset(S_Telem_Data, 0, 512); - for (i = 0; i < len; i++) - { - S_Telem_Data[i + 5] = *(nums + i); - } + S_Telem_Data[0] = 0xEB; + S_Telem_Data[1] = 0x90; + S_Telem_Data[2] = cmd; + S_Telem_Data[3] = (unsigned char)len >> 8; + S_Telem_Data[4] = (unsigned char)len; - for (i = 2; i < (len + 5); i++) - { - tele_check += S_Telem_Data[i]; - } + for (i = 0; i < len; i++) { + S_Telem_Data[i + 5] = *(nums + i); + } - S_Telem_Data[len + 5] = tele_check; + for (i = 2; i < (len + 5); i++) { + tele_check += S_Telem_Data[i]; + } - if (fd_telemetry >= 0) - { - int written = write(fd_telemetry, S_Telem_Data, (len + 6)); - if (written < 0) - { - perror("[ERROR] S_COMM write failed"); - } - else - { - printf("[INFO] S_COMM sent command: 0x%02X, len: %d, bytes: %d\n", cmd, len, written); - } - } + S_Telem_Data[len + 5] = tele_check; + + if (fd_telemetry >= 0) { + int written = write(fd_telemetry, S_Telem_Data, (len + 6)); + if (written < 0) { + perror("S_COMM write failed"); + } + } } -// 向S测控发送控制指令 -void send_S_COMM_Cmder(uint8_t *cmd, uint16_t len) +/* + * 超时读取 + * + * @timeout_ms: 超时时间(毫秒) + * @return: 读取到的字节数,-1表示超时或错误 + */ +int scomm_read_with_select(int timeout_ms) { - sendCmderCnt++; - - uint8_t kc = 0; - uint8_t cmd_buff[64] = {0}; - - cmd_buff[0] = 0x11; - cmd_buff[1] = 0x1A; - cmd_buff[2] = 0xC0; - cmd_buff[3] = 0x00; - - cmd_buff[4] = (uint8_t)(len + 1) >> 8; // 根据高层协议来,实际上是+2减1 - cmd_buff[5] = (uint8_t)len + 1; - - for (kc = 0; kc < len + 2; kc++) - cmd_buff[kc + 6] = cmd[kc]; - - S_UART_TELEMETRY_SEND(TELECONTROL_CMD, len + 8, cmd_buff); -} - -// 获取S测控常规遥测 -void Get_S_COMM_Telemetry_Data(void) -{ - if (S_COMM_ON_OFF == 1) - { - S_UART_TELEMETRY_SEND(CON_TELEMETRY, 1, cmderPadding); - printf("[INFO] S_COMM query telemetry sent\n"); - if (sendGetSelfTelemCmderCnt++ >= 10) - { - sendGetSelfTelemCmderCnt = 0; - printf("[WARN] S_COMM telemetry no response, reset UART\n"); - } - } -} - -// 获取上行遥控指令 -void Get_S_COMM_UP_CMD(void) -{ - if (S_COMM_ON_OFF == 1) - { - S_UART_TELEMETRY_SEND(QUERY_TELECMD, 1, cmderPadding); - printf("[INFO] S_COMM query uplink command sent\n"); - } -} - -// 通过S测控发送下行遥测 -void Send_Telemetry_From_S(uint8_t *tele, uint16_t len) -{ - sendTelemCnt++; - S_UART_TELEMETRY_SEND(SEND_TELEMETRY, len, tele); - printf("[INFO] S_COMM send telemetry from S, len: %d\n", len); -} - -// 接收数据处理函数 -int process_received_data(uint8_t *data, uint16_t size) -{ - if (size < 6) - { - printf("[ERROR] S_COMM received data too short: %d bytes\n", size); + if (fd_telecontrol < 0) { + cerr << "S_COMM telecontrol port not opened" << endl; return -1; } - - uint16_t i = 0; - uint8_t cmd = 0; - uint16_t frame_len = 0; - uint8_t checksum0 = 0, checksum1 = 0; - - memcpy(S_Telec1_Data, data, size); - - if ((S_Telec1_Data[0] == 0xEB) && (S_Telec1_Data[1] == 0x90)) - { - cmd = S_Telec1_Data[2]; - frame_len = (uint16_t)(S_Telec1_Data[3] << 8) | (S_Telec1_Data[4]); - checksum0 = S_Telec1_Data[frame_len + 5]; - - // 检查帧长度是否合理 - if (frame_len > 500) - { - printf("[ERROR] S_COMM frame length too large: %d\n", frame_len); - return -1; - } - - // 检查实际接收到的数据是否足够 - if (size < (frame_len + 6)) - { - printf("[ERROR] S_COMM incomplete frame: need %d bytes, got %d\n", - frame_len + 6, size); - return -1; - } - - // 计算校验和 - checksum1 = 0; - for (i = 2; i < (frame_len + 5); i++) - { - checksum1 += S_Telec1_Data[i]; - } - - if (checksum1 != checksum0) - { - scommCheckErrCnt++; - printf("[ERROR] S_COMM checksum error: calc=0x%02X recv=0x%02X\n", checksum1, checksum0); - return -1; - } - - // 根据命令类型处理 - switch (cmd) - { - case 0xF0: // 常规遥测数据 - printf("[INFO] S_COMM telemetry data received, frame_len=%d\n", frame_len); - if (size >= (13 + frame_len - 10)) - { - // 维护遥测数据缓存 - memcpy((uint8_t *)&S_TELE, (uint8_t *)&S_Telec1_Data[13], frame_len - 10); - if (sendGetSelfTelemCmderCnt > 0) - sendGetSelfTelemCmderCnt--; - - // 通过ComHS发布遥测数据 - if (frame_len - 10 > 0) - { - ComHS_telemetry_Pub((uint8_t *)&S_TELE, fastdds_dest, sizeof(S_Comm_telemetry_data_t)); - printf("[INFO] S_COMM telemetry published via ComHS\n"); - } - } - break; - - case 0xE1: // 遥控指令应答 - if ((S_Telec1_Data[5] == 0xAA) && (S_Telec1_Data[6] == 0x8C)) - { - sendCmderSuccessCnt++; - printf("[INFO] S_COMM command success\n"); - } - else - { - sendCmderErrCnt++; - printf("[ERROR] S_COMM command error\n"); - } - break; - - case 0xB4: // 上行遥控指令 - printf("[INFO] S_COMM uplink command received, frame_len=%d\n", frame_len); - if (size >= 9 && frame_len >= 4) - { - uint16_t total_data_len = frame_len; - - if (total_data_len > 4) - { - ComHS_command_Pub(&S_Telec1_Data[5], fastdds_dest, total_data_len); - printf("[INFO] S_COMM uplink command published, len=%d bytes\n", total_data_len); - } - else - { - printf("[INFO] No actual data in uplink command\n"); - } - } - break; - - case 0xA5: // 遥测确认 - if ((S_Telec1_Data[5] == 0xAA) && (S_Telec1_Data[6] == 0x50)) - { - sendTelemSuccessCnt = 1; - printf("[INFO] S_COMM telemetry sent successfully\n"); - } - break; - - default: - scommResIDErrCnt++; - printf("[ERROR] S_COMM unknown command ID: 0x%02X\n", cmd); - return -1; - } - - return 0; // 处理成功 - } - else - { - scommHeaderErrCnt++; - printf("[ERROR] S_COMM frame header error: 0x%02X 0x%02X\n", - S_Telec1_Data[0], S_Telec1_Data[1]); - return -1; - } -} - -// 读取通信机响应数据 -int read_scomm_response(void) -{ - if (fd_telecontrol < 0) - return -1; - + + fd_set read_fds; + struct timeval tv; uint8_t buffer[512]; int total_read = 0; - // 非阻塞读取所有可用数据 - while (g_running) - { - int bytes = read(fd_telecontrol, buffer + total_read, sizeof(buffer) - total_read); - if (bytes > 0) - { - total_read += bytes; - printf("[INFO] S_COMM received %d bytes response, total: %d\n", bytes, total_read); - } - else if (bytes < 0) - { - if (errno == EAGAIN || errno == EWOULDBLOCK) - { - // 无数据可读,退出循环 - break; - } - else - { - perror("[ERROR] S_COMM read error"); - break; - } - } - else - { - // read返回0,通常表示文件结束 - break; - } - - // 检查是否读取了足够的数据 - if (total_read >= sizeof(buffer)) - { - printf("[WARN] S_COMM buffer full\n"); - break; - } - usleep(1000); - } + // 设置超时时间 + tv.tv_sec = timeout_ms / 1000; + tv.tv_usec = (timeout_ms % 1000) * 1000; - if (total_read > 0) - { - // 处理接收到的数据 - process_received_data(buffer, total_read); + // 清空并设置文件描述符集合 + FD_ZERO(&read_fds); + FD_SET(fd_telecontrol, &read_fds); + + // 使用select等待数据到达 + int ret = select(fd_telecontrol + 1, &read_fds, NULL, NULL, &tv); + + if (ret > 0) { + // 有数据可读 + if (FD_ISSET(fd_telecontrol, &read_fds)) { + // 读取所有可用数据 + while (total_read < (int)sizeof(buffer)) { + int bytes = read(fd_telecontrol, buffer + total_read, + sizeof(buffer) - total_read); + if (bytes > 0) { + total_read += bytes; + + // 尝试处理数据 + if (process_received_data(buffer, total_read) == 0) { + return total_read; + } + } else if (bytes < 0) { + if (errno == EAGAIN || errno == EWOULDBLOCK) { + break; + } else { + perror("S_COMM read error"); + return -1; + } + } else { + break; + } + } + + return total_read; + } + } else if (ret == 0) { + return -1; // 超时 + } else { + perror("select failed"); + return -1; } return total_read; } -// 定时查询遥测数据线程 -static void *telemetry_query_thread(void *arg) +/* + * 发送指令并等待响应 + * + * @cmd: 命令码 + * @len: 数据长度 + * @nums: 数据指针 + * @timeout_ms: 等待响应超时时间 + * @return: 响应数据长度,-1表示失败 + */ +int S_UART_SEND_AND_WAIT(uint8_t cmd, uint16_t len, uint8_t *nums, int timeout_ms) { - while (g_running) - { - if (S_COMM_ON_OFF == 1) - { - // 定时查询遥测数据 - Get_S_COMM_UP_CMD(); - } - - // 每2秒查询一次 - sleep(2); + if (S_COMM_ON_OFF != 1) { + cerr << "S_COMM is not available" << endl; + return -1; } - return NULL; -} - -// 监听串口数据线程 -static void *serial_monitor_thread(void *arg) -{ - while (g_running) - { - if (S_COMM_ON_OFF == 1 && fd_telecontrol >= 0) - { - // 读取串口响应 - read_scomm_response(); - } - - // 短暂延时 - usleep(10000); // 10ms + if (fd_telemetry < 0 || fd_telecontrol < 0) { + cerr << "Serial ports not initialized" << endl; + return -1; } - return NULL; + // 1. 先清空输入缓冲区 + tcflush(fd_telecontrol, TCIFLUSH); + + // 2. 发送指令 + S_UART_TELEMETRY_SEND(cmd, len, nums); + + // 3. 等待响应 + return scomm_read_with_select(timeout_ms); } -// 启动SCOMM服务 +/* + * 向S测控发送控制指令 + * + * 将遥控指令封装,然后发送到通信机串口 + * + * @cmd: 指令数据 + * @len: 指令长度 + */ +void send_S_COMM_Cmder(uint8_t *cmd, uint16_t len) +{ + if (S_COMM_ON_OFF != 1) { + cerr << "S_COMM is not available" << endl; + return; + } + + sendCmderCnt++; + + // 构造命令数据 + uint8_t cmd_buff[64] = {0}; + uint8_t kc = 0; + + cmd_buff[0] = 0x11; + cmd_buff[1] = 0x1A; + cmd_buff[2] = 0xC0; + cmd_buff[3] = 0x00; + + cmd_buff[4] = (uint8_t)(len + 1) >> 8; + cmd_buff[5] = (uint8_t)len + 1; + + for (kc = 0; kc < len + 2; kc++) { + cmd_buff[kc + 6] = cmd[kc]; + } + + // 发送并等待响应 + int result = S_UART_SEND_AND_WAIT(TELECONTROL_CMD, len + 8, cmd_buff, 100); + + if (result > 0) { + sendCmderSuccessCnt++; + } else { + sendCmderErrCnt++; + cerr << "Command timeout (100ms)" << endl; + } +} + +/* + * 获取S测控常规遥测(同步版本,使用select超时) + * + * 向通信机串口写入常规遥测查询的指令,进行遥测的查询 + * + */ +void Get_S_COMM_Telemetry_Data(void) +{ + if (S_COMM_ON_OFF != 1) return; + + int result = S_UART_SEND_AND_WAIT(CON_TELEMETRY, 1, cmderPadding, 100); + + if (result > 0) { + sendGetSelfTelemCmderCnt = 0; + } else { + sendGetSelfTelemCmderCnt++; + if (sendGetSelfTelemCmderCnt >= 3) { + cerr << "Multiple telemetry queries failed" << endl; + } + } +} + +/* + * 获取上行遥控指令(同步版本,使用select超时) + * + * 向通信机串口写入获取上行遥控指令,进行上行遥控查询 + * + */ +void Get_S_COMM_UP_CMD(void) +{ + if (S_COMM_ON_OFF != 1) return; + + int result = S_UART_SEND_AND_WAIT(QUERY_TELECMD, 1, cmderPadding, 100); + + if (result < 0) { + cerr << "Uplink command query timeout" << endl; + } +} + +/* + * 通过S测控发送下行遥测(可选等待确认) + * + * @tele: 遥测数据 + * @len: 数据长度 + */ +void Send_Telemetry_From_S(uint8_t *tele, uint16_t len) +{ + if (S_COMM_ON_OFF != 1) return; + + sendTelemCnt++; + + S_UART_TELEMETRY_SEND(SEND_TELEMETRY, len, tele); + scomm_read_with_select(100); +} + +/* + * 接收数据处理函数 + * + * @data: 接收到的数据 + * @size: 数据大小 + * + * 返回值: 0-成功处理, -1-处理失败, -2-需要更多数据 + */ +static int process_received_data(uint8_t *data, uint16_t size) +{ + uint16_t i = 0; + uint8_t cmd = 0; + uint16_t frame_len = 0; + uint8_t checksum0 = 0, checksum1 = 0; + + if (size < 2) { + return -2; + } + + // 查找有效的帧头 + int header_pos = -1; + for (i = 0; i < size - 1; i++) { + if (data[i] == 0xEB && data[i+1] == 0x90) { + header_pos = i; + break; + } + } + + if (header_pos < 0) { + if (size > 10) { + scommHeaderErrCnt++; + cerr << "Frame header not found" << endl; + return -1; + } + return -2; + } + + if (header_pos > 0) { + memmove(S_Telec1_Data, data + header_pos, size - header_pos); + size -= header_pos; + } else { + memcpy(S_Telec1_Data, data, size); + } + + if (size < 6) { + return -2; + } + + cmd = S_Telec1_Data[2]; + frame_len = (uint16_t)(S_Telec1_Data[3] << 8) | (S_Telec1_Data[4]); + + if (size < (frame_len + 6)) { + return -2; + } + + /* 检查帧长度是否合理 */ + if (frame_len > 500) { + cerr << "Frame length too large: " << frame_len << endl; + return -1; + } + + checksum0 = S_Telec1_Data[frame_len + 5]; + + /* 计算校验和 */ + checksum1 = 0; + for (i = 2; i < (frame_len + 5); i++) { + checksum1 += S_Telec1_Data[i]; + } + + if (checksum1 != checksum0) { + scommCheckErrCnt++; + cerr << "Checksum error: calc=0x" << hex << (int)checksum1 + << " recv=0x" << hex << (int)checksum0 << endl; + return -1; + } + + /* 根据命令类型处理 */ + switch (cmd) { + case 0xF0: /* 常规遥测数据 */ + if (size >= (13 + frame_len - 10)) { + memcpy((uint8_t *)&S_TELE, (uint8_t *)&S_Telec1_Data[13], + frame_len - 10); + if (sendGetSelfTelemCmderCnt > 0) { + sendGetSelfTelemCmderCnt--; + } + + if (frame_len - 10 > 0) { + ComHS_telemetry_Pub((uint8_t *)&S_TELE, fastdds_dest, + sizeof(S_Comm_telemetry_data_t)); + } + } + break; + + case 0xE1: /* 遥控指令应答 */ + if ((S_Telec1_Data[5] == 0xAA) && (S_Telec1_Data[6] == 0x8C)) { + sendCmderSuccessCnt++; + } else { + sendCmderErrCnt++; + cerr << "Command execution failed" << endl; + } + break; + + case 0xB4: /* 上行遥控指令 */ + if (size >= 9 && frame_len >= 4) { + uint16_t total_data_len = frame_len; + + if (total_data_len > 4) { + ComHS_command_Pub(&S_Telec1_Data[5], fastdds_dest, + total_data_len); + } + } + break; + + case 0xA5: /* 遥测确认 */ + if ((S_Telec1_Data[5] == 0xAA) && (S_Telec1_Data[6] == 0x50)) { + sendTelemSuccessCnt = 1; + } + break; + + default: + scommResIDErrCnt++; + cerr << "Unknown command ID: 0x" << hex << (int)cmd << endl; + return -1; + } + + return 0; +} + +/* + * 启动SCOMM服务(同步模式,使用select超时) + * + * @dev_telec: 遥控串口设备 + * @dev_telem: 遥测串口设备 + * @baudrate: 波特率 + */ void start_scomm_service(const char *dev_telec, const char *dev_telem, int baudrate) { - // 设置信号处理 signal(SIGINT, signal_handler); signal(SIGTERM, signal_handler); - - // 初始化串口 - if (scomm_uart_init(dev_telec, dev_telem, baudrate) < 0) - { + + if (scomm_uart_init(dev_telec, dev_telem, baudrate) < 0) { S_COMM_ON_OFF = 0; - cerr << "[WARN] S_COMM UART init failed. Service will start but communication will fail." << endl; + cerr << "S_COMM UART init failed" << endl; + return; } - else - { - S_COMM_ON_OFF = 1; - } - - // 初始化ComHS通信 + + S_COMM_ON_OFF = 1; ComHS_init(0, "S_Comm_Hardware_Service"); - - // 创建线程 - if (pthread_create(&telemetry_thread, NULL, telemetry_query_thread, NULL) != 0) - { - perror("[ERROR] Failed to create telemetry query thread"); - } - - if (pthread_create(&monitor_thread, NULL, serial_monitor_thread, NULL) != 0) - { - perror("[ERROR] Failed to create serial monitor thread"); - } } -// 停止SCOMM服务 +/* + * 停止SCOMM服务 + */ void stop_scomm_service(void) { g_running = 0; - - // 等待线程结束 - if (telemetry_thread) - { - pthread_join(telemetry_thread, NULL); - } - if (monitor_thread) - { - pthread_join(monitor_thread, NULL); - } - - // 关闭串口 - if (fd_telecontrol >= 0) - { + + if (fd_telecontrol >= 0) { close(fd_telecontrol); fd_telecontrol = -1; } - if (fd_telemetry >= 0) - { + if (fd_telemetry >= 0) { close(fd_telemetry); fd_telemetry = -1; } - - // 清理ComHS资源 - if (ComHS_part) - { + + if (ComHS_part) { delete ComHS_part; ComHS_part = nullptr; } - - cout << "[INFO] S_COMM Hardware Service stopped" << endl; } \ No newline at end of file diff --git a/ComHS.h b/ComHS.h index 93741c2..0ffdf9c 100644 --- a/ComHS.h +++ b/ComHS.h @@ -7,178 +7,195 @@ using namespace std; -// 遥测cmd定义 -#define CON_TELEMETRY 0x0F //常规遥测查询 -#define TELECONTROL_CMD 0x1E //遥控指令 -#define QUERY_TELECMD 0x4B //遥控指令查询 -#define SEND_TELEMETRY 0x5A //发送遥测 +/* 遥测cmd定义 */ +#define CON_TELEMETRY 0x0F /* 常规遥测查询 */ +#define TELECONTROL_CMD 0x1E /* 遥控指令 */ +#define QUERY_TELECMD 0x4B /* 遥控指令查询 */ +#define SEND_TELEMETRY 0x5A /* 发送遥测 */ -// 星间通信机子遥测 +/* 所占bit长度定义 */ +#define EPDU_ID_VERSION_SIZE 3 /* 版本号 */ +#define EPDU_ID_TYPE_SIZE 1 /* 类型 */ +#define EPDU_ID_HEAD_SIZE 1 /* 副导头 */ +#define EPDU_APID 11 /* APID */ + +#define EPDU_CONTROL_GROUPID_SIZE 2 /* 分组标识 */ +#define EPDU_CONTROL_COUNT_SIZE 14 /* 包序列计数 */ + +#define MULTI_EPDU_LENS 244 + +/* 星间通信机子遥测 */ typedef union { - uint8_t ext[9]; //72位数据的联合体 - struct __attribute__((__packed__)) { - unsigned int temperature : 12; //温度遥测 - unsigned int temperature_calibrated : 12; //温度遥测标校 - unsigned int transmission_power : 12; //12V电源遥测 - unsigned int power_supply_5v4 : 12; //5.4V电源遥测 - unsigned int power_supply_2v5 : 12; //2.5V电源遥测 - unsigned int power_supply_1v2 : 12; //1.2V电源遥测 - }; + uint8_t ext[9]; /* 72位数据的联合体 */ + struct __attribute__((__packed__)) { + unsigned int temperature : 12; /* 温度遥测 */ + unsigned int temperature_calibrated : 12; /* 温度遥测标校 */ + unsigned int transmission_power : 12; /* 12V电源遥测 */ + unsigned int power_supply_5v4 : 12; /* 5.4V电源遥测 */ + unsigned int power_supply_2v5 : 12; /* 2.5V电源遥测 */ + unsigned int power_supply_1v2 : 12; /* 1.2V电源遥测 */ + }; } s_comm_telemetry_t; -// 星间通信机子遥测 +/* 星间通信机子遥测 */ typedef union { - uint8_t ext; - struct __attribute__((__packed__)) { - unsigned int loadNo : 2; //加载程序编号 - unsigned int loadMode : 2; //加载模式 - unsigned int AorB : 1; //AB机状态 - unsigned int FPGAFresh : 1; //FPGA刷新状态 - unsigned int zaiboSync : 1; //信息载波同步 - unsigned int weimaSync : 1; //信息伪码同步 - }; + uint8_t ext; + struct __attribute__((__packed__)) { + unsigned int loadNo : 2; /* 加载程序编号 */ + unsigned int loadMode : 2; /* 加载模式 */ + unsigned int AorB : 1; /* AB机状态 */ + unsigned int FPGAFresh : 1; /* FPGA刷新状态 */ + unsigned int zaiboSync : 1; /* 信息载波同步 */ + unsigned int weimaSync : 1; /* 信息伪码同步 */ + }; } s_comm_para0; -// 星间通信机子遥测 +/* 星间通信机子遥测 */ typedef union { - uint8_t ext; - struct __attribute__((__packed__)) { - unsigned int recDampCtrlMode : 1; //接收衰减控制模式 - unsigned int recDampCtrl : 3; //接收衰减控制字 - unsigned int trans : 1; //发射通道开关 - unsigned int transDampCtrl : 3; //发射衰减控制字 - }; + uint8_t ext; + struct __attribute__((__packed__)) { + unsigned int recDampCtrlMode : 1; /* 接收衰减控制模式 */ + unsigned int recDampCtrl : 3; /* 接收衰减控制字 */ + unsigned int trans : 1; /* 发射通道开关 */ + unsigned int transDampCtrl : 3; /* 发射衰减控制字 */ + }; } s_comm_para2; -// 星间通信机子遥测 +/* 星间通信机子遥测 */ typedef union { - uint8_t ext; - struct __attribute__((__packed__)) { - unsigned int recStatus : 1; // 接收缓存状态 - unsigned int workmode : 2; //工作模式 - unsigned int sendStatus : 1; //发射缓存状态 - unsigned int antsChoice : 1; //天线选择 - unsigned int FreqChoice : 1; //频点选择 - unsigned int telem_MM_Mode : 1; //遥测明/密状态 - unsigned int telec_MM_Mode : 1; //遥控明/密状态 - }; + uint8_t ext; + struct __attribute__((__packed__)) { + unsigned int recStatus : 1; /* 接收缓存状态 */ + unsigned int workmode : 2; /* 工作模式 */ + unsigned int sendStatus : 1; /* 发射缓存状态 */ + unsigned int antsChoice : 1; /* 天线选择 */ + unsigned int FreqChoice : 1; /* 频点选择 */ + unsigned int telem_MM_Mode : 1; /* 遥测明/密状态 */ + unsigned int telec_MM_Mode : 1; /* 遥控明/密状态 */ + }; } s_comm_para3; -// S通信机遥测结构体 -typedef struct __attribute__((packed)){ - uint8_t packet_cnt_1; // 遥测包计数 - uint8_t cmd1_success_count; //接收指令1正确计数 - uint8_t cmd1_err_type1_count; //接收指令1错误类型1计数 - uint8_t cmd2_success_count; //接收指令2正确计数 - uint8_t cmd2_err_count; //接收指令2错误计数 - uint8_t reset_count; //复位计数 - uint8_t refresh_count; //刷新状态计数 - s_comm_para0 para0; // - uint8_t para1; // - int8_t dopplerFreqInfoChannel; //信息通道多普勒频偏 - int8_t dopplerFreqMeasureChannel; //测量通道多普勒频偏 - uint8_t snrInfoChannel; //信息通道接收信噪比 - uint8_t snrMeasureChannel; //测量通道接收信噪比 - uint8_t receive_RSSI; //接收RSSI - uint8_t generalQueryCount; //常规遥测查询计数 - uint8_t forwardcmdcnt; //转发遥控指令计数 - uint8_t cmdinquiryCount; //空空接收后遥控计数 - uint8_t teletransmissionCount; //转发遥测计数 - uint8_t res0[2]; //LVDS预留参数,不使用 - s_comm_para2 para2; // - s_comm_telemetry_t s_telemetry; - uint8_t AD9364_configuration_count; //AD9364配置计数 - s_comm_para3 para3; - uint8_t res1[3]; //预留参数,CJB不使用 - uint8_t cmd1_err_type2_count; //接收指令1错误类型2计数 - uint16_t teletransmission_secretkey; //遥测当前密钥 - uint16_t telecmd_secretkey; //遥控当前密钥 +/* S通信机遥测结构体 */ +typedef struct __attribute__((packed)) { + uint8_t packet_cnt_1; /* 遥测包计数 */ + uint8_t cmd1_success_count; /* 接收指令1正确计数 */ + uint8_t cmd1_err_type1_count; /* 接收指令1错误类型1计数 */ + uint8_t cmd2_success_count; /* 接收指令2正确计数 */ + uint8_t cmd2_err_count; /* 接收指令2错误计数 */ + uint8_t reset_count; /* 复位计数 */ + uint8_t refresh_count; /* 刷新状态计数 */ + s_comm_para0 para0; + uint8_t para1; + int8_t dopplerFreqInfoChannel; /* 信息通道多普勒频偏 */ + int8_t dopplerFreqMeasureChannel; /* 测量通道多普勒频偏 */ + uint8_t snrInfoChannel; /* 信息通道接收信噪比 */ + uint8_t snrMeasureChannel; /* 测量通道接收信噪比 */ + uint8_t receive_RSSI; /* 接收RSSI */ + uint8_t generalQueryCount; /* 常规遥测查询计数 */ + uint8_t forwardcmdcnt; /* 转发遥控指令计数 */ + uint8_t cmdinquiryCount; /* 空空接收后遥控计数 */ + uint8_t teletransmissionCount; /* 转发遥测计数 */ + uint8_t res0[2]; /* LVDS预留参数,不使用 */ + s_comm_para2 para2; + s_comm_telemetry_t s_telemetry; + uint8_t AD9364_configuration_count; /* AD9364配置计数 */ + s_comm_para3 para3; + uint8_t res1[3]; /* 预留参数,CJB不使用 */ + uint8_t cmd1_err_type2_count; /* 接收指令1错误类型2计数 */ + uint16_t teletransmission_secretkey; /* 遥测当前密钥 */ + uint16_t telecmd_secretkey; /* 遥控当前密钥 */ } S_Comm_telemetry_data_t; -// 指令/注数单元格式 -typedef struct __attribute__((__packed__)){ - uint8_t cmd_type; //指令类型 - uint8_t cmd_len; //指令长度 数据内容+4 - uint8_t device; //设备号 - uint8_t REMAIN; //保留字 - uint8_t data[255]; //数据内容 最大60 +/* 指令/注数单元格式 */ +typedef struct __attribute__((__packed__)) { + uint8_t cmd_type; /* 指令类型 */ + uint8_t cmd_len; /* 指令长度 数据内容+4 */ + uint8_t device; /* 设备号 */ + uint8_t REMAIN; /* 保留字 */ + uint8_t data[255]; /* 数据内容 最大60 */ } CMD_unit; -// 遥控包 仅单指令 +/* 遥控包 仅单指令 */ typedef struct __attribute__((__packed__)) { - uint8_t serve_type; //服务类型 全为50H实时指令 - uint8_t cmd_num; //指令数 - CMD_unit cmd_unit; //指令单元 + uint8_t serve_type; /* 服务类型 全为50H实时指令 */ + uint8_t cmd_num; /* 指令数 */ + CMD_unit cmd_unit; /* 指令单元 */ } CMD_pack_t; -/*所占bit长度定义*/ -#define EPDU_ID_VERSION_SIZE 3 //版本号 -#define EPDU_ID_TYPE_SIZE 1 //类型 -#define EPDU_ID_HEAD_SIZE 1 //副导头 -#define EPDU_APID 11 //APID - -#define EPDU_CONTROL_GROUPID_SIZE 2 //分组标识 -#define EPDU_CONTROL_COUNT_SIZE 14 //包序列计数 - -#define MULTI_EPDU_LENS 244 - -/*包识别*/ -typedef union{ - uint16_t ext; //16位数据的联合体 - struct __attribute__((__packed__)) { - unsigned int version : EPDU_ID_VERSION_SIZE; //版本号 - unsigned int type : EPDU_ID_TYPE_SIZE; //类型 - unsigned int subhead : EPDU_ID_HEAD_SIZE; //副导头 - unsigned int reserve : EPDU_APID; //应用过程标识符 - }; +/* 包识别 */ +typedef union { + uint16_t ext; /* 16位数据的联合体 */ + struct __attribute__((__packed__)) { + unsigned int version : EPDU_ID_VERSION_SIZE; /* 版本号 */ + unsigned int type : EPDU_ID_TYPE_SIZE; /* 类型 */ + unsigned int subhead : EPDU_ID_HEAD_SIZE; /* 副导头 */ + unsigned int reserve : EPDU_APID; /* 应用过程标识符 */ + }; } packet_id_t; -/*包序列控制*/ -typedef union{ - uint16_t ext; // 16位数据的联合体 - struct __attribute__((__packed__)) { - unsigned int groupid : EPDU_CONTROL_GROUPID_SIZE; //分组标识 - unsigned int count : EPDU_CONTROL_COUNT_SIZE; //包序列计数 - }; +/* 包序列控制 */ +typedef union { + uint16_t ext; /* 16位数据的联合体 */ + struct __attribute__((__packed__)) { + unsigned int groupid : EPDU_CONTROL_GROUPID_SIZE; /* 分组标识 */ + unsigned int count : EPDU_CONTROL_COUNT_SIZE; /* 包序列计数 */ + }; } sequence_control_t; -/*E-PDU源包格式*/ +/* E-PDU源包格式 */ typedef struct __attribute__((__packed__)) { - packet_id_t id; //包识别 - sequence_control_t seq; //包控制序列 - uint16_t length; //包长 - uint8_t data[MULTI_EPDU_LENS]; + packet_id_t id; /* 包识别 */ + sequence_control_t seq; /* 包控制序列 */ + uint16_t length; /* 包长 */ + uint8_t data[MULTI_EPDU_LENS]; } EPDU_packet_t; typedef struct __attribute__((__packed__)) { - uint16_t epdu_len; - EPDU_packet_t epdu; + uint16_t epdu_len; + EPDU_packet_t epdu; } Multi_EPDU_packet_t; -// 声明ComHS接口函数 -void ComHSWriteLog(const string &msg); -void ComHS_init(uint8_t domainid, string appname); -void command_callback(string src, string dest, string type, - string reserve1, string reserve2, - vector& data); -void telemetry_callback(string src, string dest, string type, - string reserve1, string reserve2, - vector& data); -void ComHS_command_Pub(uint8_t* data, string dest, uint16_t len); -void ComHS_telemetry_Pub(uint8_t* data, string dest, uint16_t len); +/* + * ComHS接口函数声明 + */ -// 声明串口操作函数 +/* 日志函数 */ +void ComHSWriteLog(const string &msg); + +/* 初始化函数 */ +void ComHS_init(uint8_t domainid, string appname); + +/* 回调函数 */ +void command_callback(string src, string dest, string type, + string reserve1, string reserve2, + vector &data); + +void telemetry_callback(string src, string dest, string type, + string reserve1, string reserve2, + vector &data); + +/* 发布函数 */ +void ComHS_command_Pub(uint8_t *data, string dest, uint16_t len); +void ComHS_telemetry_Pub(uint8_t *data, string dest, uint16_t len); + +/* + * 串口操作函数声明 + */ int scomm_uart_init(const char *dev_telec, const char *dev_telem, int baudrate); void send_S_COMM_Cmder(uint8_t *cmd, uint16_t len); void Get_S_COMM_Telemetry_Data(void); void Get_S_COMM_UP_CMD(void); void Send_Telemetry_From_S(uint8_t *tele, uint16_t len); void S_UART_TELEMETRY_SEND(uint8_t cmd, uint16_t len, uint8_t *nums); -int read_scomm_response(void); -int process_received_data(uint8_t *data, uint16_t size); -// 声明运行控制函数 +/* 同步读取函数声明 */ +int scomm_read_with_select(int timeout_ms); +int S_UART_SEND_AND_WAIT(uint8_t cmd, uint16_t len, uint8_t *nums, int timeout_ms); + +/* + * 运行控制函数声明 + */ void start_scomm_service(const char *dev_telec, const char *dev_telem, int baudrate); void stop_scomm_service(void); -#endif // COMHS_H \ No newline at end of file +#endif /* COMHS_H */ \ No newline at end of file diff --git a/build/CMakeFiles/CMakeOutput.log b/build/CMakeFiles/CMakeOutput.log index 0192802..8f55926 100644 --- a/build/CMakeFiles/CMakeOutput.log +++ b/build/CMakeFiles/CMakeOutput.log @@ -28,10 +28,10 @@ The CXX compiler identification is GNU, found in "/home/xb/satellite/aircraft-1/ Detecting C compiler ABI info compiled with the following output: Change Dir: /home/xb/satellite/aircraft-1/container-2/通信硬件服务化/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_23e68/fast && /usr/bin/gmake -f CMakeFiles/cmTC_23e68.dir/build.make CMakeFiles/cmTC_23e68.dir/build +Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_3bd6a/fast && /usr/bin/gmake -f CMakeFiles/cmTC_3bd6a.dir/build.make CMakeFiles/cmTC_3bd6a.dir/build gmake[1]: Entering directory '/home/xb/satellite/aircraft-1/container-2/通信硬件服务化/build/CMakeFiles/CMakeTmp' -Building C object CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o -/usr/bin/cc -v -o CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.22/Modules/CMakeCCompilerABI.c +Building C object CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o +/usr/bin/cc -v -o CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.22/Modules/CMakeCCompilerABI.c Using built-in specs. COLLECT_GCC=/usr/bin/cc OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa @@ -41,8 +41,8 @@ Configured with: ../src/configure -v --with-pkgversion='Ubuntu 11.4.0-1ubuntu1~2 Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04.2) -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_23e68.dir/' - /usr/lib/gcc/x86_64-linux-gnu/11/cc1 -quiet -v -imultiarch x86_64-linux-gnu /usr/share/cmake-3.22/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_23e68.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccPBMoq0.s +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_3bd6a.dir/' + /usr/lib/gcc/x86_64-linux-gnu/11/cc1 -quiet -v -imultiarch x86_64-linux-gnu /usr/share/cmake-3.22/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_3bd6a.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cc5a7OUX.s GNU C17 (Ubuntu 11.4.0-1ubuntu1~22.04.2) version 11.4.0 (x86_64-linux-gnu) compiled by GNU C version 11.4.0, GMP version 6.2.1, MPFR version 4.1.0, MPC version 1.2.1, isl version isl-0.24-GMP @@ -62,15 +62,15 @@ GNU C17 (Ubuntu 11.4.0-1ubuntu1~22.04.2) version 11.4.0 (x86_64-linux-gnu) GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 4011c2103cba78949d7e02d0f0047a3d -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_23e68.dir/' - as -v --64 -o CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o /tmp/ccPBMoq0.s +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_3bd6a.dir/' + as -v --64 -o CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o /tmp/cc5a7OUX.s GNU assembler version 2.38 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.38 COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../:/lib/:/usr/lib/ -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.' -Linking C executable cmTC_23e68 -/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_23e68.dir/link.txt --verbose=1 -/usr/bin/cc -v CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o -o cmTC_23e68 +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.' +Linking C executable cmTC_3bd6a +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_3bd6a.dir/link.txt --verbose=1 +/usr/bin/cc -v CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o -o cmTC_3bd6a Using built-in specs. COLLECT_GCC=/usr/bin/cc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper @@ -83,9 +83,9 @@ Supported LTO compression algorithms: zlib zstd gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04.2) COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../:/lib/:/usr/lib/ -COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_23e68' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_23e68.' - /usr/lib/gcc/x86_64-linux-gnu/11/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper -plugin-opt=-fresolution=/tmp/cczVHtZR.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_23e68 /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/11 -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/11/../../.. CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o -COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_23e68' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_23e68.' +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_3bd6a' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_3bd6a.' + /usr/lib/gcc/x86_64-linux-gnu/11/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper -plugin-opt=-fresolution=/tmp/ccBnXEwu.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_3bd6a /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/11 -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/11/../../.. CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_3bd6a' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_3bd6a.' gmake[1]: Leaving directory '/home/xb/satellite/aircraft-1/container-2/通信硬件服务化/build/CMakeFiles/CMakeTmp' @@ -109,10 +109,10 @@ Parsed C implicit link information from above output: link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] ignore line: [Change Dir: /home/xb/satellite/aircraft-1/container-2/通信硬件服务化/build/CMakeFiles/CMakeTmp] ignore line: [] - ignore line: [Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_23e68/fast && /usr/bin/gmake -f CMakeFiles/cmTC_23e68.dir/build.make CMakeFiles/cmTC_23e68.dir/build] + ignore line: [Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_3bd6a/fast && /usr/bin/gmake -f CMakeFiles/cmTC_3bd6a.dir/build.make CMakeFiles/cmTC_3bd6a.dir/build] ignore line: [gmake[1]: Entering directory '/home/xb/satellite/aircraft-1/container-2/通信硬件服务化/build/CMakeFiles/CMakeTmp'] - ignore line: [Building C object CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o] - ignore line: [/usr/bin/cc -v -o CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.22/Modules/CMakeCCompilerABI.c] + ignore line: [Building C object CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o] + ignore line: [/usr/bin/cc -v -o CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.22/Modules/CMakeCCompilerABI.c] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/cc] ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa] @@ -122,8 +122,8 @@ Parsed C implicit link information from above output: ignore line: [Thread model: posix] ignore line: [Supported LTO compression algorithms: zlib zstd] ignore line: [gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04.2) ] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_23e68.dir/'] - ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/11/cc1 -quiet -v -imultiarch x86_64-linux-gnu /usr/share/cmake-3.22/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_23e68.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccPBMoq0.s] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_3bd6a.dir/'] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/11/cc1 -quiet -v -imultiarch x86_64-linux-gnu /usr/share/cmake-3.22/Modules/CMakeCCompilerABI.c -quiet -dumpdir CMakeFiles/cmTC_3bd6a.dir/ -dumpbase CMakeCCompilerABI.c.c -dumpbase-ext .c -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cc5a7OUX.s] ignore line: [GNU C17 (Ubuntu 11.4.0-1ubuntu1~22.04.2) version 11.4.0 (x86_64-linux-gnu)] ignore line: [ compiled by GNU C version 11.4.0 GMP version 6.2.1 MPFR version 4.1.0 MPC version 1.2.1 isl version isl-0.24-GMP] ignore line: [] @@ -143,15 +143,15 @@ Parsed C implicit link information from above output: ignore line: [] ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] ignore line: [Compiler executable checksum: 4011c2103cba78949d7e02d0f0047a3d] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_23e68.dir/'] - ignore line: [ as -v --64 -o CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o /tmp/ccPBMoq0.s] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_3bd6a.dir/'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o /tmp/cc5a7OUX.s] ignore line: [GNU assembler version 2.38 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.38] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.'] - ignore line: [Linking C executable cmTC_23e68] - ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_23e68.dir/link.txt --verbose=1] - ignore line: [/usr/bin/cc -v CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o -o cmTC_23e68 ] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.'] + ignore line: [Linking C executable cmTC_3bd6a] + ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_3bd6a.dir/link.txt --verbose=1] + ignore line: [/usr/bin/cc -v CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o -o cmTC_3bd6a ] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/cc] ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper] @@ -164,13 +164,13 @@ Parsed C implicit link information from above output: ignore line: [gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04.2) ] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_23e68' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_23e68.'] - link line: [ /usr/lib/gcc/x86_64-linux-gnu/11/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper -plugin-opt=-fresolution=/tmp/cczVHtZR.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_23e68 /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/11 -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/11/../../.. CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_3bd6a' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_3bd6a.'] + link line: [ /usr/lib/gcc/x86_64-linux-gnu/11/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper -plugin-opt=-fresolution=/tmp/ccBnXEwu.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_3bd6a /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/11 -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/11/../../.. CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o] arg [/usr/lib/gcc/x86_64-linux-gnu/11/collect2] ==> ignore arg [-plugin] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so] ==> ignore arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper] ==> ignore - arg [-plugin-opt=-fresolution=/tmp/cczVHtZR.res] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccBnXEwu.res] ==> ignore arg [-plugin-opt=-pass-through=-lgcc] ==> ignore arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore arg [-plugin-opt=-pass-through=-lc] ==> ignore @@ -188,7 +188,7 @@ Parsed C implicit link information from above output: arg [-znow] ==> ignore arg [-zrelro] ==> ignore arg [-o] ==> ignore - arg [cmTC_23e68] ==> ignore + arg [cmTC_3bd6a] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o] arg [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o] arg [/usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o] @@ -200,7 +200,7 @@ Parsed C implicit link information from above output: arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] arg [-L/usr/lib/gcc/x86_64-linux-gnu/11/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/11/../../..] - arg [CMakeFiles/cmTC_23e68.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [CMakeFiles/cmTC_3bd6a.dir/CMakeCCompilerABI.c.o] ==> ignore arg [-lgcc] ==> lib [gcc] arg [--push-state] ==> ignore arg [--as-needed] ==> ignore @@ -234,10 +234,10 @@ Parsed C implicit link information from above output: Detecting CXX compiler ABI info compiled with the following output: Change Dir: /home/xb/satellite/aircraft-1/container-2/通信硬件服务化/build/CMakeFiles/CMakeTmp -Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_2433b/fast && /usr/bin/gmake -f CMakeFiles/cmTC_2433b.dir/build.make CMakeFiles/cmTC_2433b.dir/build +Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_16078/fast && /usr/bin/gmake -f CMakeFiles/cmTC_16078.dir/build.make CMakeFiles/cmTC_16078.dir/build gmake[1]: Entering directory '/home/xb/satellite/aircraft-1/container-2/通信硬件服务化/build/CMakeFiles/CMakeTmp' -Building CXX object CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o -/usr/bin/c++ -v -o CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp +Building CXX object CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o +/usr/bin/c++ -v -o CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp Using built-in specs. COLLECT_GCC=/usr/bin/c++ OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa @@ -247,8 +247,8 @@ Configured with: ../src/configure -v --with-pkgversion='Ubuntu 11.4.0-1ubuntu1~2 Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04.2) -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_2433b.dir/' - /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_2433b.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccK3394e.s +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_16078.dir/' + /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_16078.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccK0Mlj8.s GNU C++17 (Ubuntu 11.4.0-1ubuntu1~22.04.2) version 11.4.0 (x86_64-linux-gnu) compiled by GNU C version 11.4.0, GMP version 6.2.1, MPFR version 4.1.0, MPC version 1.2.1, isl version isl-0.24-GMP @@ -272,15 +272,15 @@ GNU C++17 (Ubuntu 11.4.0-1ubuntu1~22.04.2) version 11.4.0 (x86_64-linux-gnu) GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 6c87588fc345655b93b8c25f48f88886 -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_2433b.dir/' - as -v --64 -o CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccK3394e.s +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_16078.dir/' + as -v --64 -o CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccK0Mlj8.s GNU assembler version 2.38 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.38 COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../:/lib/:/usr/lib/ -COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.' -Linking CXX executable cmTC_2433b -/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_2433b.dir/link.txt --verbose=1 -/usr/bin/c++ -v CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_2433b +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.' +Linking CXX executable cmTC_16078 +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_16078.dir/link.txt --verbose=1 +/usr/bin/c++ -v CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_16078 Using built-in specs. COLLECT_GCC=/usr/bin/c++ COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper @@ -293,9 +293,9 @@ Supported LTO compression algorithms: zlib zstd gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04.2) COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../:/lib/:/usr/lib/ -COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_2433b' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_2433b.' - /usr/lib/gcc/x86_64-linux-gnu/11/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper -plugin-opt=-fresolution=/tmp/cc28PR3K.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_2433b /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/11 -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/11/../../.. CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o -COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_2433b' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_2433b.' +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_16078' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_16078.' + /usr/lib/gcc/x86_64-linux-gnu/11/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper -plugin-opt=-fresolution=/tmp/ccQLGb2c.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_16078 /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/11 -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/11/../../.. CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_16078' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_16078.' gmake[1]: Leaving directory '/home/xb/satellite/aircraft-1/container-2/通信硬件服务化/build/CMakeFiles/CMakeTmp' @@ -325,10 +325,10 @@ Parsed CXX implicit link information from above output: link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] ignore line: [Change Dir: /home/xb/satellite/aircraft-1/container-2/通信硬件服务化/build/CMakeFiles/CMakeTmp] ignore line: [] - ignore line: [Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_2433b/fast && /usr/bin/gmake -f CMakeFiles/cmTC_2433b.dir/build.make CMakeFiles/cmTC_2433b.dir/build] + ignore line: [Run Build Command(s):/usr/bin/gmake -f Makefile cmTC_16078/fast && /usr/bin/gmake -f CMakeFiles/cmTC_16078.dir/build.make CMakeFiles/cmTC_16078.dir/build] ignore line: [gmake[1]: Entering directory '/home/xb/satellite/aircraft-1/container-2/通信硬件服务化/build/CMakeFiles/CMakeTmp'] - ignore line: [Building CXX object CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o] - ignore line: [/usr/bin/c++ -v -o CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp] + ignore line: [Building CXX object CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [/usr/bin/c++ -v -o CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o -c /usr/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/c++] ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa] @@ -338,8 +338,8 @@ Parsed CXX implicit link information from above output: ignore line: [Thread model: posix] ignore line: [Supported LTO compression algorithms: zlib zstd] ignore line: [gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04.2) ] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_2433b.dir/'] - ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_2433b.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccK3394e.s] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_16078.dir/'] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/11/cc1plus -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE /usr/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp -quiet -dumpdir CMakeFiles/cmTC_16078.dir/ -dumpbase CMakeCXXCompilerABI.cpp.cpp -dumpbase-ext .cpp -mtune=generic -march=x86-64 -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccK0Mlj8.s] ignore line: [GNU C++17 (Ubuntu 11.4.0-1ubuntu1~22.04.2) version 11.4.0 (x86_64-linux-gnu)] ignore line: [ compiled by GNU C version 11.4.0 GMP version 6.2.1 MPFR version 4.1.0 MPC version 1.2.1 isl version isl-0.24-GMP] ignore line: [] @@ -363,15 +363,15 @@ Parsed CXX implicit link information from above output: ignore line: [] ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] ignore line: [Compiler executable checksum: 6c87588fc345655b93b8c25f48f88886] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_2433b.dir/'] - ignore line: [ as -v --64 -o CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccK3394e.s] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_16078.dir/'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o /tmp/ccK0Mlj8.s] ignore line: [GNU assembler version 2.38 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.38] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.'] - ignore line: [Linking CXX executable cmTC_2433b] - ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_2433b.dir/link.txt --verbose=1] - ignore line: [/usr/bin/c++ -v CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_2433b ] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o' '-c' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.'] + ignore line: [Linking CXX executable cmTC_16078] + ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_16078.dir/link.txt --verbose=1] + ignore line: [/usr/bin/c++ -v CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o -o cmTC_16078 ] ignore line: [Using built-in specs.] ignore line: [COLLECT_GCC=/usr/bin/c++] ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper] @@ -384,13 +384,13 @@ Parsed CXX implicit link information from above output: ignore line: [gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04.2) ] ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/] ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/11/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/11/../../../:/lib/:/usr/lib/] - ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_2433b' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_2433b.'] - link line: [ /usr/lib/gcc/x86_64-linux-gnu/11/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper -plugin-opt=-fresolution=/tmp/cc28PR3K.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_2433b /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/11 -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/11/../../.. CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_16078' '-shared-libgcc' '-mtune=generic' '-march=x86-64' '-dumpdir' 'cmTC_16078.'] + link line: [ /usr/lib/gcc/x86_64-linux-gnu/11/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper -plugin-opt=-fresolution=/tmp/ccQLGb2c.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_16078 /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/11 -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/11/../../.. CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crtn.o] arg [/usr/lib/gcc/x86_64-linux-gnu/11/collect2] ==> ignore arg [-plugin] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so] ==> ignore arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper] ==> ignore - arg [-plugin-opt=-fresolution=/tmp/cc28PR3K.res] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccQLGb2c.res] ==> ignore arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore arg [-plugin-opt=-pass-through=-lgcc] ==> ignore arg [-plugin-opt=-pass-through=-lc] ==> ignore @@ -408,7 +408,7 @@ Parsed CXX implicit link information from above output: arg [-znow] ==> ignore arg [-zrelro] ==> ignore arg [-o] ==> ignore - arg [cmTC_2433b] ==> ignore + arg [cmTC_16078] ==> ignore arg [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/Scrt1.o] arg [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/11/../../../x86_64-linux-gnu/crti.o] arg [/usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o] ==> obj [/usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o] @@ -420,7 +420,7 @@ Parsed CXX implicit link information from above output: arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] arg [-L/usr/lib/gcc/x86_64-linux-gnu/11/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/11/../../..] - arg [CMakeFiles/cmTC_2433b.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [CMakeFiles/cmTC_16078.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore arg [-lstdc++] ==> lib [stdc++] arg [-lm] ==> lib [m] arg [-lgcc_s] ==> lib [gcc_s] diff --git a/build/CMakeFiles/ComHS.dir/ComHS-main.cpp.o b/build/CMakeFiles/ComHS.dir/ComHS-main.cpp.o index ee0ae3dffcb3f2f2c3d194d34928a6bae81a62e2..4d5b27542ebbdb81964e613a8d113fb03f944503 100644 GIT binary patch literal 4408 zcmbVOTWl0n7(Uw~H-T1EL@{QKhM>}6r&cX!pirkwbtz4k`cTEgbUL&XwmX}d*-FvY zOTlE*pd^OKi~6b$CYty_Vj>MF#1|z#cu9ER#Y?m%5FTu>r2gN`IlHIBZZ!VMnREW{ zeE;SAXXc!F)yQ@=q*6>uifw0AO`?pouda?eqG1PXW=-r`(|y;Oq%7h)5bi(mHZkJ4r+|}~cqQa~|X&+ayK4wzBif%Qd1CW3A;*Lb+a_qJOQv)x!T1xjZt+LW6&C-YAwc5 z!<2#}56C0bQi>mmZ;SA1T+|$rr3Sv#W&a}K4K(waa1hmuu(t%h65lgPR4eM=qqdg# zQldQ~7e76o>tb@N@2R~T{ z|F{nR6>w2wO0Oc{)#3kM2WOq$sF`aSwcLVc7mJJ!CE}XDo6bw!2=yX>m?lHx;x~HwfoLfhS5-i}Z9%vJYF_3Z28WdF(dv#^4pg zS5G%mBsd2lz;OoO5co!bB*5{DGB5DxQXn1Y!WsqNPGbmgT;q~&0wj_C*TpK!i9YFP zK;REkkDR3+N8ztk@HYf5{XZ!5;|W|B`nRG-T-+_v|4#ykpH&L}i@?FhKZoT1Dexr! zdL4c1T)H|1NSOaYNx_-zDC!;MjM$e>e{z$Vc7x zVa30??*)M;_iJ3?tNS&n;Oi-d%;%WE5f}N$yBX&vB$>~_|Bm^K&$O!K{1iDq%u zbIbRwai-y%a|%Q*c%h@wPhATgfc7Dw4;M;W(f5ju9}+h*c1HL?-x`&lxXAGTb!jp~ z?Up9YJB0p#T0FwU_Egx|BkV~>1&IeI=${huq4;IOw*gxLGrY?XoSVR_e^x;0e?r8C zZ&i}|W}1Z0r2UAnm+_>Jq&?0##7``fN&BPHQ1nTEI0x`OCF5VI6JOfPek<7`rw(eW zwBt}Ek#$1-ut(BP;?EF<{4>;4nG^9f6{In^5ZU8ik>hAWJT@j5B=98HCVUySWc@Y? z`?Ro=oy=eAFVg@%llG>tKP8ExPuh@$4 z^ddsS11UWggyP9tbE_BiB#5Wjn|j%zl^%L1sOWpU6CC=7d2i1IOY)K7pv0I0`7Zj(jSv z+F_g$A0vjkMWI;}H>`-sSU;k9cxzmN6C(s?Mh1$ZC08&Wbi%5?3-cWu#E&qOl0jk{ znA?yy<=+4on=sna%^&-5*N=M?lW(vlMbrI1fABru{P>F^Y=_6;EIbjtyIfgg%Mb5W zAY!Iq(j4lTEKL>irSepHA0yj4(*I6aQI?$!JaK)%t^!w>NDft zv19kax`r+WsO}`hZ4RHDoH%KLws=mga+tyNLUoF##5UIBxoBNATZg2~Mos!#QP*HW hW;-v_jZv?ahh9+>Udj=uN|T%LS!QF?YR41*$Qp diff --git a/build/CMakeFiles/ComHS.dir/ComHS-main.cpp.o.d b/build/CMakeFiles/ComHS.dir/ComHS-main.cpp.o.d index 3450c46..9b7abee 100644 --- a/build/CMakeFiles/ComHS.dir/ComHS-main.cpp.o.d +++ b/build/CMakeFiles/ComHS.dir/ComHS-main.cpp.o.d @@ -150,7 +150,28 @@ CMakeFiles/ComHS.dir/ComHS-main.cpp.o: \ /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ /usr/include/x86_64-linux-gnu/bits/getopt_core.h \ /usr/include/x86_64-linux-gnu/bits/unistd_ext.h \ - /usr/include/linux/close_range.h \ + /usr/include/linux/close_range.h /usr/include/signal.h \ + /usr/include/x86_64-linux-gnu/bits/signum-generic.h \ + /usr/include/x86_64-linux-gnu/bits/signum-arch.h \ + /usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-arch.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-consts.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-consts-arch.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h \ + /usr/include/x86_64-linux-gnu/bits/sigevent-consts.h \ + /usr/include/x86_64-linux-gnu/bits/sigaction.h \ + /usr/include/x86_64-linux-gnu/bits/sigcontext.h \ + /usr/include/x86_64-linux-gnu/bits/types/stack_t.h \ + /usr/include/x86_64-linux-gnu/sys/ucontext.h \ + /usr/include/x86_64-linux-gnu/bits/sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/sigstksz.h \ + /usr/include/x86_64-linux-gnu/bits/ss_flags.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/sigthread.h \ + /usr/include/x86_64-linux-gnu/bits/signal_ext.h \ /home/xb/satellite/aircraft-1/container-2/通信硬件服务化/ComHS.h \ /usr/include/c++/11/vector /usr/include/c++/11/bits/stl_uninitialized.h \ /usr/include/c++/11/bits/stl_vector.h \ diff --git a/build/CMakeFiles/ComHS.dir/ComHS.cpp.o b/build/CMakeFiles/ComHS.dir/ComHS.cpp.o index 3e36fa98e25abea829d5f1c6f73eaacb64686d65..07692eacbd28ab0d6cefee76dad90ad00312d52a 100644 GIT binary patch literal 166304 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 sn#`g^CPN9b3Jv!ICnJi+Hjcan|i<~#YJ?6QI z!kZ!dA;o`0;Vl&23gK-O|1pHOQ~W0s{x^kpPQ}_ggPg49T2!BoSry+cX;!7ZWmg3Jr z_&*e1M&TfZ%PCwz;foNir1(n^uA=yA2-i^jWe8uP_^S}UM)BW3_*;s<4&hpgzX9Rz zDE@m0-=z2-AbgABZ$r3_;(vtjPZWO#!gneDX9(Y;`1=&Dr|>Tnen8=e5Pn4Qzf$-y zgr87+1BDwQ{2RqLLAaUXe~0iN6#o>$EfoI@!hcfya|*Xo_%8^*p!k;%Zlm~D6n;(N zHxO>8__q-Lo8mhlM5l%S4Rm4*b18H{IE3O(2=}7+PzduVzBh!!D83Jb`%-*A2=}LW zK7_+5egK3AQv4tY52pAb6dnrUVH6)h;o%S-LGdFg90}o36h9imQ51JkcnpN2DSj-3 z$5H%v2v4B+i4cyV_(>3+Oz~47982+2DI5pkX%sJj&`t3|2#Y9QOkoLxr4%oNa6H8) zKsb@&r$ac2;%7kkJ&K=6;baQSA)G?-3J5DH?tySB#iv2&rFa#EXHhsELLbGeA*`Wz zErfLxKO4e&iu)mKpm-yM=TQ7y3TIGw9)#yp`~nIugzzGYUkqV@;xj1>LO6@!O%OIy zJVap>IB$N?{nnODKLRg>4YFQ@n%12!x#!zl_2tgk2PmQ8)*}x$y7v{G-2a^!EML z+q-#q-<8|F15RuR-o904Y&AAlKvwj7wgcSvwz@YdEU^C&N&A+!Pi9*!*de&+#nEN}38ui1<;^g-rd8#{LFxPHOD@VD99Kjio^fP4Eq>)eCh zfd#_>Rf2d2Jdb$?q<91Sp+Mfg-&%X3Gz+N9x$kdxH$_Dl0D7|dUA2@HVV{##K1 zV7|!PXDaO*2rc5}@s#$*mMsRelMP?Ye_F_1-M7Kl_m}6E>;qbXHQ%S?qlBC&xhh{2 zL^aZHC6i)SL85rZiu3rc`EC_<9avBx%xh}x9k^8*5yfRFm?nvM3p$0}bbs*<{93RT zHPHw;1zlC&7W5Nk7YQb{3D;9esF~~kQSk?)i<*uQ@7?{Lb}{~c zdHY_J-XQI;5qogNtNK>HfUc;_>g)S()6gUtq;pedoE{{h*|^*W$ElS`FYBB%;AKJM zp-N))#|X&PB+aH7yPBb;b)1d40Kflau|FAq@O{ zp2#jbtG=}@eG9h#JHEf#0R5HKwOqScbS>1p7mVU%58Ntl2RzWhCF#bFj;9s31D?f+ zw3YeK+>cT~3p*-4kGLK1%umc?_I3+qiY%;=FBlomMBEN6n2cyLIb9+_Z~eah1;SDT zS3>CnqL6`GC65InNAKo5??Ct9Iq+xkIpq!2eaowG6tKF6-jy!UNYI)tC8e-#<3%N1 zO#hp&>NdeLU`C5cyrH2stfW!Q6dV5#*8sR++`WX3#DU`}L}g@9S4r~5SF0sF%ecT! z3r@q;@mj9G$lLGPVD>pNr)&xXp)Jr3_Ot@1br=u#v;x_z{{P+z{4l%r!i*QjjqbJH zzQ#4)zUo0=pJ$1$ullk4r^TFdQckRZ&8XEpocg7NIq^nZ_(Kzfxt1ikc5vtNFVynG zta$_H*V5FS54bq{Val3%Pp>EpgXNu50>)L(BQhg28!*o7zZET>|6dj*V}^97mGi z7MbzF5ct!#+F}B%7o}xwwHV1-GNcwE*Pd9IEOAzv5-GFiK^1vqwP!I%Wo%pop40DH z?7h9ea>0Y%fktR_Z&4wz61){1;9yP3jkrN@&6Nv{6*)#MM3JjSJ-o=5MvJM8LCT{zw0Yj;Pw)c4{T_&X1Cdpp)y68%DrcM(UjX@`&c)0@*)dsg%Bd*$Ms{2N=u6ju0KlAQ!_cyLhBJEhvS5M;0hvGy?lQH_*?{ho!4 zD4|mm&g<=O+y>L4gT+<^O^d944F&>N-&eStZCu~?%Jq$#p_|>X%JY@+oB{d?gP0{t z!>kg@ZIZ#F{HHyeuNO%EGoB6kPY*8NmS^3|Sj%b;>~?NC75dn(LI3sMoV6GoILn#; z^l)#}a+;7|e{de~__}v62W0pfqb;X?77CKQHXeNr?q?j(?frV(b-=~*C|LJZ$pq?a5PP4#Rm+YB5k&Dg z4M%^IOaBCaGbb0_=bDCF@d9*B#xm?Z1Pe1kIvizz(ytfmvq^i)A?{G=f-tY8<|fG( zS(AOMurVeP6$af{(!yA7+=0YhK~ZyC^{N63Y{jMpx}UFjA(qx5a3(PW_&zB3-p4%x zR^2VVSKjBGa~yEGFF7YUbVOiuf_4ET)hh53h%Lp~v+(a3sBq|J`#ldP_CLxVoAMWY z>VTO7P4pJ!FIaEgUhi2#3FtEG^ZHg;w|m20foCZQx0ITes1R(6*L$9Ax#r5HTXT9) z_NA$0e-g_Ant?hesySiB70@%l;PFi3QgFV$6|mE3)~Gf7O1_MF*e5(E`h=%F&rI|@8yim=ne7f7|5$sahKh-P5+^#4 zq?GL}j#<1k8+)NJl4H_C-KVMO!tUdgbgIX*s#@r=5syC7(clq~y$P`e<>g=J03uY~ zk$>Gbv_6;|eD?)_UKrBTlmE;`FT^R3(i(k#%G?xC&lhloP z7Tqsyy|;_GjrXJ#>K^v?wg8#hWUK(Y*77R{cirwtZqXEIviAbGHt-mTiD8P-YR8M)TBsu`3Ie-TS;y z`Klvi>G{vB^$sjR?bxhanjzi1Pz-*Xj!=%7(=E5umVxP$2+;kuaI?6XrR1R6{G^=j zd{s$viP!KGlk)nF#tX;HRva^7)wj5>@lIa#xK%yieCb1|KNyQm;Q)J_Fmqzj-*~6D zzk0D89L>YF)6#gR)8g{ zbO)&*wYYTYrUxA+W0cKWTc;&pC5-jb+2ewDVuz@6r?^8XFOysia_Kz-Cc*mV(U`s~ z-|g#$Low@67(BQ4%6D_}7t9!iOY?QuQ{^w14mVoWn74ctDD_lsC-*GS`%PjwOg{%* zk0I8odIAzBO@Iz2X@bUpR$`*5K8tMwj^aP}KAb=$x+x`RGG~5aHJnOm*ds^e3J_IHxyrbM>kUa)rL-d|u7v@=f&a%fKdkm7W)ZODDd*;`B=GXBZ<(?Io z)=};;$R2~N+Oq zR6a4@V~su5z_SPIKy^<`*<%fG2zGM5$2a~n)_{jS65k4oJDrE4LwNcWkI6SoU%z9= zMK2mSDZ}f2zz|P$VLgiX)$#rDzV0nh-WKZ#RD6CEQFyGBF~O5};Ed0u2>y7FuN&mS zKX_o?aKXRH@NYi+GYK#e{~;k;^I!}F|!dK;~X)xXe!%KCfl|TFE=SEJhV~BIFp?P}`+h_Oz zu44)&m)D(L@1Gf*g~cNo{5ul@kSl*Ogv}U-fASh?%!dg6v%Ok^U9slou5q2M^SZ)K z!L~qiFcuuw8tIA|$&@Ab1HeCck{}2FlYxjiDl7f|vwcQIq&?s#wii^@Os&1h zRUc{!g?mEHuCDOxj$oV180+e4?T*F59kX4{kvSdX#*H(YLtQb~8Lkrzc;u=n(%v5I zXcnxz!D#cGU^Ha%jD^}l?V(t7o)GZ@PknuD{Y5T+prW?A+7<3{bwpyWU{5gIhKd?0 zy(Z!!t}ZmF3ry1!ZVqAfNIp_hf2gAwrBbx92yve1GF-Ff#X`cEkc06x1xm)5EKmtr zwuL(`by>t+p^liVCmf^#lpLf_gVItmjYT4^uJ&MCn<>XwS4Rje8jQKxLf|qk${*pErfw{+Z*Yad zjbw3W7*aO~X9c^P&oC`SH8Up~j)fFsupil5R-3Q|*?gj_VD9k+g)_#2VjUA*$2X6a zhR5hIE#GC`q3Ar#rqU1>oLgRBW6Ek-y(8j^hPpZ<9bKWZ7z@Q*s7O-2-JPP!lrNx= z8XZ8*toW8_q}}B=1;@Th`3YGes#=0@LQ$)&k!TEclUiaPytI5R(O`QB4Kh2{>cVVo z!RYLeG)Xf0a0f`;*%m^RW7dh%TU04yU9+K;2z$o2pQhGO)1_VA?XFNX8i`JHK?l@y zhO7^;R#Okf^?I=EEA&!Yj+KQ6K<+cJFw`rq-mQF{-Lu-lU9I5J*d!_&?QxC z>27P2y<37Gba!0Z0bPmNKUGz#=0c96Sw;FyYbe+pimE!L>Xd=$Z*lda3}m_`Yc#P) zEC}6D66c9RF|rUNzWL4SZfSw?Q7_@F=m&A_)9OoPKQ+!pBZzBGxDEQSSTGuM&FYQ` zy}LVLT#SVy9WoJfj5DBp!JrXH7%h}Nri%U#nvSap#Dr#HnVve4RutcCcM0^=kJ7;D zib-;?kj#>9z6EZQA{;kd0UWLz4WXH18G4Ux`plM$L53w3mb zXNB9sv3W*I7)DAX2)R3&#YooP9TQ;(43wfLM-u=^dv{kX(A@zQ3}%8svm?@h!#Z^O z;md(;RyY=z6@hdZVOxUTZ7~%FpqNk;81w|&K%&k_R~R`OQ>$vqeMWg*ou{UgaAq-P(g)mm0wi81#ip7(mnw4KNxq zz)e6KAb~#K=n6qCcfdp^7>x$!8STMNqpqql0Fym`mA}DLQ{f3rYpkj?>R>FWs;H_f zuW1N0oLA>DD*XYN8~UqiYmCBi1vn!SGm{22Jc~uN`XH2;PK%E;$%k8Ce$h&%?>A|4 zZy;s}z0n18bokcO_gixxOxkziqa95T}B$PB6<-D~i6x z4e);cdMS0|7H^+mf$w8@`|9!tUJvo%oFCc4yIM@K1=Z@wc{qbkPK6x@QmvYtmxjU% zd=xdram6BXLVN_qIe%s^kOVIwN$+6Zvna}QI6sVg{+rtn9~~b7b&lTw09|FBi}=8d z;Tw>dU}8QaufE5G)B`idq@|dghN5?HMqH`AgROD*&g(%0g)EAH<{Ly8uRox=&*5Uq zR!dH)6Pdn1-1@rVr9;oQ{>H831j#%v4J|TYuW68Z^PisVxZbk^t&8t}LU4VZL*6y+ z5KasDNp&rD%OA@hGQT^Ry;o$z_iFY=5Y=QDd559T=E%QM#II5+HNe468YeJ|tTTtuGB zbuJugd?@1o%yr&3)VRxm_)`w&zW{eQ-yCZEV2E?+P~*=-5dVCLb5)*kkJEX7p0Ud5 z9LO_%xHs$qKw;y0obal{Jvq*MoyJ=^&K*OroWBh*?#gw(IK+4+*ZJ@eV_UBCM?;Jc zo!RC%Y08Jtx!&h=e!RD_%;|h%Z{uUOVo9WwKK z@RiXVXRpKfV~+D5xyB>8-68=K5B7izEzaNP7*FLmKg%&T=NxOM4L{HMc8>A$oYVf5 zV{9QjZ=$o@I3M>rcHD7zPJX3xPR`9a!|up2ewhOx_C$CA<9*iT=HBHn{_c=E=1p-{ z89^EUB)8&O*eSU;&$+~H{5#M2mfQH_-p;LVUv&fgXqFYW8x zTxcxb&v`?U@y&kD2aAli_IIu-G9J%&epF;E9Pa$DV&jwH&c(&XiUXW46dON1(D`n$ zvF$+T*Tu%~4|3jKV*Ki0=hG!d-yzO7ON@^WasIQ!Sazs$QK|9YhdF;$YW(Xk=WC_L z+7Zsbl^PEp?!3Otxb6t&&&!Oz9N}D9W-L9@`9YcS(YgL~PoC^tH_5p16z3O{jE$!_Z#l#G^H}E-XBbOPb*??b_|Z7$Kh7}zG0wU0d&bMB zIUo9-abJOR&G(EQ1pf{rG8!6z zl8j$=Jwv}7Yps{(SkDQcPQby5ztSTafJbRB58#m1F3edX|gYjdH|;&t~{Iugb7Z@2``N*Pkc7 z*}Ht3)2u*Qf9#8(Sglrxs`7C9Mpv6oAcFGKCcJl)M710y3>Y z;Gg6a0LqLz2>^Rxiw0Z5K0eO6af*#?m#L~$>ywR%r9dU{`M>fEc_y$;&3;wi!{^P4 zCsrfPp=GhsP2ug-N&H^}vaq_>$MH)1kO^3J1GA>`mBce2r~z%*k`{+? zKsM|?T&!9Bh&iyan$mp{@?twTmF4wH`4dJ#>^GPoG-Q2O1Ei1}JDo95nNTa;V9myL zXfm)Y)SM}}Ff_szwCQNoKMOpef0hl^D);~P*c)GSV(pGSNj24=+0P~GFGL+n{o_Ul zRl{r*t@;woLj4J!$3TuaAJcoc-Yd5lvBQK@iH;7$v%288vg7(Pxw2w)r~6^=mD>#X z2pMy`WZpg8>}f?0t7=^DRvB|^I{;k^KP06(PVo^sa3{sY93U3Ockpq}+1L1Pzvo@p z0vg)8Ehl!wrt!j46%X}^=;516<8V(Ei4Ep>9zk5W%cl@m_R%@j~O>Wu5YK z%g<5MH7}I31{&ZXj{2~7^cZ~G@j>{u<6>|Bm2%?*XF~WXGo@}He3ndnGf0}Ss&6&i zKBkhZ-~$(IESFO=V6KR9P6p+X`Qd$kzpuag_UgWEzP`_VeShQgv)+}%7kLLl>%>f| z{NnO}%GgWWqGh!AlC$aBeX6C zZ0QmT#f@WVIUKvCL+J*Br1(}a!ZgXw^m3MV%4b-a%z7zPlQhEKZH`zJ{#<=|@3!2S z7yew`X?2?+(9CKoR<~IlhbMNMr$RcjG4}hw#+)N;+K=a#-!O`AaQ{~-?En3a*KGeu z{pJ51kAPMq+L_guOwFLJZ#o=2%4~zGEqZ%B+gu{ybkCOVKQD^wB~(knxx1Jx9U>@U zGnsp;Gs)MA#)B;DpodutBk&r?1f!#8!=^G=t^i8Iir%l7vz9ojUe5*>taRWrPMFnf zAJ-0cKLLC$2V^u}%^Yy(L@Si8k`~t={qb#Qt`;DRZVXNz*Nu$h=cl_0E!aP9yna3tM2A z@b*1F9?tdPmtn;3i1gh$M%)d!An^4q7$JfI@pBIS9?(Sm-~eBoijA5Dl836~5nlRX z0&*p>D;EC)98hHgxG!h=0c63#Ebl{t#qk6vR6N1_cmgTB@?YSP@XHJRaleg$oFk`(J_whg83skF=5oRCR?^&yAO{^_0f*$IKiy^Z$B(th6W81drQRwL)?$Bxg`CkwE$N)3cEv!!rJt z)iZXvdebT@Cc4Hn&g$-nb-Uc|amC{bPIY&STlZCk@C;A!xWbbt0c<=3{^1iMaE5A3 zt7*h%)&~*8r)=;#SO!MU<@H9++~GM#?mILOKW{%0aQuhYq4>wM|M2T_EB4!~8VKMP z(Wu@PVI9zt=n3i*Soli(U^bWi| zQpxXvo8u6H3l6e{9n3PituoZ%^GQgkWSD8CyXbJbfTz#4(kD~;0X*GnrO%{vl)>cB z%AZf^C-C%(to(~9eKb!$&q^Om!+$-cpTYCTWPTT7;-PoLSjy8qy^h>pS!EnYG}{*aY^AElqm^XJwG0vBNWQu=8SN8dK>++y+A zKr~}`dcaE0qXsdGr=Me`k4cm6O_Sc5CjI&}=?_x6c)(QID7Q%nI1*%DL+Ph;`J+;P z)VYAt9|8l#*~mBGSU9BD>9}=>ARY^}7ZUAW5XRA-wb0Q!#L<#7&gB@$k-U+9;ZD%I zfIcRe8V3GGs99IwbB^OAQ>3|_X!>-T?@Jogc`4Dw`s~g$>5C}+SS(1{<9v(%W0Y>!SFELUyLP^X(v#T&Z8aPo zF~X}3|EThFrwIXE0L`WRUWmup>S`$?mU}1BjMD8{MQv?AX;Un3K9y(JH!i01Wc`v0 z^5;?d*$|JDCsz(aSifV527jA3jt2egSWA|D^MDvG{BZ_L_bEa#lyxkn!_U*O^Z_&7 zmnOZ9(p%&5%T5^iFQoKjw#W2GDBW&8@*1Vv`QBzqKZch-L)IJe-xpuNgUc@eSW36^ zJs+i?h)k64Tx{`gqjWp{7N#g4>v1c|AA-1EkGbbs<-AFJ?0kG{8aWQ8mnKTM9&Hx? zVoFculW4~VN-yO3!&d$nrHdCZm7S(q>92dunv?ZKYxgcKyrC*Iqlz!MxUS`QSmuT!{yq(hRWW=8a#w(eOV*p=A z=_`;($xwZhlgsXSc{ zm0~PzrF6SGyFN|+2PwUj^KZB8xrWlu=jpj;3j&mH1Et%w{XBT^5wB$S#Qb9@-Ogvd zly2wqt(0!JR=S?jr=bw64saO9@*kvhoa375Y<|0j((U|Z1EnYPS>&I$KQgvotBpyK z?t*+?N`DBMF!^)uwCbphXzX-cNa=PuK0@iqbVQ$jjndQkJnFlRXp^l?U64LPRJ38F z(q|IUB$EfrxRBD5t-Ub)3Q8}7xM{NvX)o;WKO!0Nd?TU1f5@`yO5$VZyB|?{GF?#) z_$e=O+39gyn)FIapM+dk-J>eVznRkQ^l?y@X-BpWeuUEP`ry|n9d$DEvvv4pN#o`(ODH2l}4;lGX2#T!$~ zXKSrCH9~aM^7{s+Epw$Y(HF*3x?rR7)7}-@e=+gD3!EX&mN@5LG)ffY0=oIc=WvLd z<_x4In0%_?e! zCqOL67?7KkA}*7#??65(zY5PH9Gb4U6pl9z<3|$I{yL0XG(_Gyj9YE++Y)eG)1y41 zZXvG1s|cs5y4qedent2&2=P+#z7KKaL(>zJ57Ib{A7hYkIgFnqVEcmNXt(7gh~ht) zaCnJGTndj7{*s12NI3jfMI8ORgukrexc7$gQx|H=e+uDhf0?ow(+L;t4oXmXJK@;2 z@KX4Vgu4W4;ZG8NoQD67aO}_UQhc@&K32jeegNzpq5K6Jej4G$8eT*Acn!ad@JSl} zW5OqE_zQ$rYWT;5do_H2Pz2@lX?Q8&bsBy#;SCyo9pN)H{1=2@sNugOe5QtfOL((} zkAb};l(SXC&nCQ0!+Qwt)bP6rk7@X;gwNIR&k4Um!w-kO7?fwehEFE^S`BX{{CW+) zk?@5Y{uJShH2hD5-=g7;p;DgPHT)#P@6_;G!WV1!Ji_nOaCik#==-3Cze4z9gy&I+ zfy4N3c4tK$hB#BP0E#&bC1re)!}w`DVA9`ZgWqj~|11IDBIF-1)(??MNh(%+vzFYyO#@L$;A4=3OeD)$!fN4!W}V=>{kYxtXl->Knwut$UP zFV^rg30HfWK#|A_F%H2f$Sps?JhH2hq`muUFSgfG?b_Xr=<@Kazy zfc({-wUWPs@HHC!vi7 zk{{y^;}HxJE{B-C#KZV=!C3Ba;xn9*Hw%1`v4rkn*cI1kAjmNur91h(GrYN2;ERlp zC`Hl#i0Gkth)acQ2!|jJ|3cschKuBZY8BUsu%T6I1Dmm*2cWF32I4%4^!(S$RriSA~5lBB@!%GNX ztl?3@2Q~bD!q;o~JA{jm0x~=Af0!)S1^qW(F7ekerV>6`!@p1XOb!19;qx{84}>q) z@Z1ry+(8W=NBDXTzkqP@K|?0z4+wX`_<)y7{56cH2%oIs>j|H!;rqaXS=e90O9@}B z;j;)I)bN`KU$5cM6D~f+$mHBaxC_P~yjUDV+zyr1yN8vYF7Gd27p!sl!FK_g|ki#7aA!Ur`x zEbv7J{#-C#6c|4u{3s27f$*a>{3F8g%$4&Qb`fgpbki%LqS7!|x#cWDQ?M_$eCxcf#>Uy}8{E zfqg5K=Tr?plkjmGehJ~HY52{A7ijo1gyWesFZVBmi)TY1fs&2=T~eMRjea8G#Tp(Y zyhOwM2rt#}rwA|8@OKCwui?fqQl3eKtMR>*@W~o}3E`E5t9j1dgyWCX!YMG86MiuPxl$}+E8#OWJ_W~0dBn3RO#aIV?<9Jd z4w;w3c-)Mu$b*6&=G)Xi&~RwHPq+c|XuMqFuVIWj4$Fo4o`weqpRD0OA$+EWza#KR z4H#y`rOG|>c;x@6S)Rf#AbgBQe;45e8vc&J7a3oY9VjsNIYHWOn}(lG_*WX%{NoG8ovR>RLE{NEbhML2wfOJz17}yoO&& z_z4<*FX1O@_&UPJX!x*GB>$5%d_3VNYj~J&+$Y9M+4)z5kJa!kgrBP6$Bvcdj?-{I z;iqYMFX06m{siG}4PQ@qp@tuLsw}ri!##u-6HbBAO?at>-$VF#jn6W|CusPe2%o6o zUkLnBW4tt{q5KnX9p-AB5-D&P&&309cg#4{YoUoNzbzqL-K%gK;rmh!g*OTu)<^rv z1SQXM;Il-LRO$_?X>UQHOjP-2y1)Fg7M& z2sn&QHu&Fd@K0^<&us9|ZSbu&_`huMFKzIzZ1Asb@NaDJZ*A}$Hh7L2CgRc^My?Gm zo>Y#b#T$p=w4onrgYRvF?_-1SXM>9;&6CJ;fDQdYHuxbn_@Oqq+6{~^+F=}SLw}?V zu2$(fAGI3SahDArwd&UC)#_Tu)hb%Y)oNMC)v8#>)#_Kr)hbuV)hbuV)oND9)v8s; z)#_Bo)#_Bo)hblSC)n8YbQ}B(8~jWge6kH*Zi83Y;2s-%nhjoMgP&!CPq)FVZSYzf z{A?TCZ-Y15;OE-lYSpdR<9Rmp7ueuxm9Fzqt8^WoX~QRIgE!gWAsf8K25(KkU#I!l zYp~CR7d{V#*ABuj`JTLoZB=m{avBDE$s6|fG=UFgh>QjWu4a)|@+|@%W&spiEAV|1 z@Pov{UCm;xWWT^^5^KT6LV@qk5E=cG!1ELEqumG%Pr#=O{D1_!N8oUnqg_7}I2=l7 z*J^>op@DXNC2-i(*RBf-5m37xR^sCVSG8f`I|L4!&DvF6gaA#pS=uuKr^;sd8v=(- z9qk%bjKFakY8aOZ95zw3>rH{fCWm$%T!H{>LTFc5;IMeru0esr;!?YcN)Zs18J7|j zxcC!?!}oyUniz-S&Aw&$_jLRdcf|xgDGtM%R|QUuf~Dq*gcZr*>gAwpC<61n)IV7_5&MywZQK( z>6JXj8OT2opCItNO?tQ$*AHy)KM4G1CjC;19S#MJHWKlR1b(kcuj=Inz?0SQ%{KHe z2>gDNkLp=A3j7x)4#SYR4n7m*Nu)nh;18Jes;9U_;18SlxfHv@hJKa6A2I30Fa&p- zZSVspqdbqB^kXPiX@mC&{0WnO6vh51@YfUY!^@F>BK;Kte=33g4S`$x49X70u<Mrf z4gL6Ol3w*R_?|vqR{%bm?aQh2(pLrk2T25fr&H{3Z*sl-Hu%kek7oOLw-KKWHuV3n z!KYOvFZV})k7oOp>U{pMfTMjb+D8_sR?fb&kp7P(g<&XpmI0ouerrJS(QLmI#1q$@ zfFu8#XiDEl4(;?M=d+&;KGFt16>#K_&o$$P-%7yiavS;|*x+ky@X;{UOQ!E>fMdDm z=E?F@xmN)`n(eQ)%4FkCfxk$1@E#+@mI!>gi62X`KLDPr-1h;;a@WwrP3>fDBmBP( zmJHN5cu0+;AF;p0#WxxtS^#)5{v|f}BpZB+4eqtU>uvChZSYHM@R$vL1>k6(*)-8p zEA9Wbp$?Izr&?l?M0vp_IgO^dc`;C<4E~R#Qjt%`qHu!8CyodO|e3ay`c7$)Vp})fh ze+cl=?EHwDf$^2V2PJd(tMH5KkbZ@UgBis&*9QNgz~49N)%t6hz+W9g=>n5(|pHB(=?e3|BZ>CLa~|WAfL}nT$Q_6;Gdg#A;t2bV;pU4HSv6k1qA*t z6NlxnxLy)?qMeVJk-Xi_0(>+(M^pO#%!dAb8~mvAlJmdF2EW?||G)-6_Wb1hX9AvV z9`cO9zcTHk+Qozmkp62ESAO+#fq!G-svZk2MEY+{dg%Thx6ap2Bl@GlNPmo3uJY%%1b(cEA5HYmOJLv3Xftsa;gx`oHjX!OMZZ|!*7@2) zL|=L-(p%?iO8(CTZk?kk|1WJrdh6Ux$^ScnTjy)a|DSG0Im4zrO3nj1kdJllrsV7s zxLQ5X_ZmRf(<4Z4ox3S{E(d%#>B55>1if`0cLpVH7I>nc`#X`pbxv1C^iK*r(VtJc z4C$@&yCp=wPT-0Dd|DLgPdDwL{Qnk#C;Ho`0=Lfllzn_%$j3VGQ+BvV;MRGc!iUF@ zzT7N#63Mwh;1wpW%0%Y z(SX-dfm`Q&N}i^DewPjYE5Jt^7bMv8s4Eb+&J9&NeO}K{sF*MoJd8m3~};R zj=yF@|B(&;nGHVTzmk_b(FSh<{21f193{&+6nS3YF%zGt2rBR=>c=&8b{c{6{V|_= zLT5PC6q*z63I&=X9r9WsoqcDD!1T7q4%=H{;AXsol# z=N{h_I0t?*96mPO9B7ok7N3%S0;3PrNtW>$#$y4cVw!v@N+Y-17JQdaD{-$WSGiFOv zB0gztn>=3pEPZpR*_NUxIOkH^#Nye}P^WEbNhoFVgm(D7`fyvgBZZ34L^7Z%3}D-t z*AZzC2it7LaTm1*V@<89&84M-U!4!kilpaS_w6BBMfQ1)DC7 zhFa`BfeM`!1;Vscoxy0RBP|v3N})ipRA5%HISnC+77cdHPQi|-x;j%9T4ELo-AE{C z-;23RsTLyboo%7H;aG}_RYk`v+rb#!9EyR*!ayGI2f`ga!M1QSeCHp!*FaeIeddU( z4T!}hP0Eb}^$m6Yx?nUGZVGq8AW$wxdKmS}W3gy>R(C8Un~xo@!h)v2wC-?o9aMgJ zZt?+KD;`ID546qLJi8HJ%Yb9DnZaLISyvwlHix3ZKWydF^PC$E$I|5~=H+-Q>*~5^ zWtlA#3H8$a*_8&_GAXT;>84eBYD2;V!Zg0LhA-R`!ZEHZjcf3nQp5~%7MDT?pj=Y= zbQ_cwXoo++*`dH3QI~;`aH6!{o`zXeI8%nqintjYp#StmBA0e|2BM+MxgJxY@3&n3@I68BEbY0-Z}%by2CKv=?HXo&w_b=Fb4fbSD-7@)E!lo zlv+Y^ELZn!OEx^A3tGIYAkSW4M4WLZ>{ zqE-7v1*Wb!p1)qSAggU>kiP_m4YOD2>I7GcLYESp1(xFGBWq=1_MKvwK{G8ZZbny* z_JpE=o^UkQ9c;^_WhKj&f%t_J+9R;whS?hy8Ey)RUaz|=lOo;Fm~jYBKKRD3whPU* zaDA=6FyQyppW~?y)YaBE#8-EGuA&09g66rVHCDk;?3r3MBURqQB9*tHqAt?{txTdo zSQ0jXn2q&SsY-H}0&&3KSO=sPzA8_Rrjs_Sz-b5$gbm^LP*q0@?sv%9pWT!K?W{7K zABw^QQ+!uL=MICPBCe8?GaGsz^36a9pBr2p=~9&Kb3?n7yu^GkzR37WEi8ZmH8?li z-rZg;$5p>tyPFo!a+I1ms=!*XFs%#07D>H1Z??nSd8ZjOR*<+L!gDS)U;?WoPVDZwQV>^YT8sco#O3^dmGs;a9RJeBcwN+2(& zsIBog1RClaJ!vT2l5%Rf&!3L8th}bCwxPVCspxS&=p19MDNumHVpB&qUlJ zmUl{3LqPg@+9J6*Rd<~>6IW7Y0!Q)GXJ8>W&wNg~uQ7u<=T%Wx>#q_mC!Lh;3Gq%W z{4#YTE-a4EV);4xr-a7*OXU#pr&el9^1`n)o~RPbyZD+yEF~wBBE`~ zgqSfdvfG7LLU6`ui5cV4;+>EeO1l0bkvHuq)uxU zWp3yT%l#QvxTmJEIt{6k8M;fDXHHK;T}B46`q?xYN+|;<*;vugSf9@Sl$MP(FxI5u zt(*!(_j}U0iD_-m*^Qo>icIAwudgpZFO3`pq+@k?T{=q7^gwl0O;vTdFAb#|C@X5K z>wKVCYSJ>GoKo8WFFYijk5e;&iVMJKnueDfRLQI>Mt)P$b|>S3DueEq$kH`lB1_k5 zCqSW@boz=eU9pNTUAe+|ne{?wW_ovrY_U z%%J~5=gOe#63&`Yw*@^#Amc6zx*$|1lkN)j$)Kk~n`hKX2}@?wK?zHy@0+0e4W#Xs z3Ja?})l*>GK+MFd%Vz|9o|mA*d-6d z%*AcO`m>D0tAf=-4a}C)PI||q4m6-;q>EeR@c2B{ux;Xpj zOtJ@jVpWp5yLOw@{!FMR;4b)188vR11!@H3DugOOwQxmznN?fS;DO<{A|nR!iIhUv z@u`AGZh{?6A#bpw8FoFBKKWugf|bpW2Mv&|rW@TTc{a6`QUnj#_=-wkLp9hQg2S%> zJb=>~ipJ&z;BQyBD~5~$vtjEnUfm4xv*Q`uQc01&a6*#uVQUrkRq^4P6gi8^lH`P= z1vnapWB80XaNWg|NP*7QdGLGau$S8$j0FR&k*-)O3DV{7hTYm!`NuO2l9dk?(gfRE zsaW7~0##qALu`<1JH_#tO_x#4w6vj0jbZ^mOuN#}yEwhCynb4`2~(NL-(8wf0dW~J zD50Sh!ZNl0Q(4|n9;o-!)qDKFUu5C% zU|%e=e1*kUz6^7ez^RA73idRis0_0dmp3-lR)anj0bkWQ9$yvgiTVSn)G4hluW1A= zrkoe3E3b!)Rdwa4T4uQmtlV-hI_+CA~0ILr@|xlkOK`>)u2>)bzPtmLf9+E z&CJ?**d$I>YH>|x@xDUaEh1l0?bNC9*;LmjriJd} zuFKk5;OPzMk~?62fuwK}+0q<{h1x>+>|`|3Ca^-nU@Y86x7Xc!3#3$5%hv&8{HFsbViscx8H!8v0fo|{N4 zh6ic!akp?2JpCq4Bg2=ACr|>w9-eQLPqf1nGf)tQqNe$3r$E;gfX71uFe3^yz+wlA zsDWoqivv@;JDTv}l>j_i9I7nwVByx_W7=B`8tyXv`S4gpHaS{blNVA{P#@}wbVr*) zK6sis7HY15$_T>aR#Awwgl9ux?d|Q!^9lirit9t|kr+IhB%aytO7=`&8i|YCet0Bb z9@A!%zp(h6Ak-T?&fyDn%#O8I!em=$)0I%L@=76kp&ONj`TbPknP6zKUMVcHbdW~q zj*6;I;1*w1MJ3vkZWbHs@y0Yf+=cA%#ZTQi%?bKkCpZaslSuJ7Ps*&)XuA>_S8?$#t0sdr7-7~4KJ{! z`G38oYAYDJ73|GQ(t9XNqg`PiOQT)E4P>jI?k@|VKkrhfi1$0w1i`F)gBy3(H4V#> z+&8lIw2G3ddjI%9kH=HnK<4CZcZbV~BFkBk*1KJ9=rG`oFW9gQ;DgloHds~N^wvbb zl@3t2>m2|Xw}WeyO3qoojYMSs1y|Z6q#j6SFCJ_^Zi)@fz-AFFPRs56B6(n-HiD1e?U3qL{-@_s8rLp?lV+zJ)OL ztvq)eyv#8U-s+q?SL_r=VA2k6YXo`he>pIZ_v#BBNg7cU!FJVthAlx@_4jeRPSk;gMPnZTW-+wujogLildE?Fu`7$(5!6 zzT`@+54>HhUOS5g{hm}yE>2ppQvzhlwG7@lg(I+#U5_GrH6}5Lk&3rkB&IfjqDrGu z;!?7ZmXe8w)KbvI9PaBsnx++Y2{%(VzR1dU?Pht_F5#9`wrpJ9+;D(M(me;$rd;mbQWEOa)DG|Q)&-lJ zaWfeoJE^V?z!UGVb!~JtMcUiF@5!f4rr(YOQ(Hepm${ElI&n5s>C?@j2 zHf9AD5_jY87E|OnOtF9r4Y;AL62*;{VOl8W54E*OI>jBflyT?W9l*^_P)4N68}aEC z@nRc{dTw}K5#K7qUH2&^Vh;|{;#i~;W}Aoxz$`W?v9@-VLSIo4JKey*A1iK(bjwe+ zv~^WMyVVvCaHth?7s<`O2&^7L!S<>qI9CHt!1V-f*F@U7Jl0k@)B-$J8jvqn$P&Of zZOOI>lktX}1;Cw_>&UupYP~<=58$@DyGYnXyie?l%+9Wv37J4w+da!98k1CIfmB8M zi*aYJ!3~Q_l(j(CAD%L_X44deoSjJx2O}5kt=cmc;tE0PaM=!vYO%ca$G$7OT3{qt zf^hc5+gi5L?2&eM9~lM~(4v@DxV)E1RU@{7;IiKxzfT4$X;iAzA8xPinvK(@SQZ+3 z{IPi9!2I&ikQl@3c+iI6YYXu5bBY?Ymt0zY7mZzDQ?ZTUF2#NmPr%?Ir#Ad5M^?H+ z15p1b4ii#vZk?>kNVEMds+I3W>UM{dysYdVU$IcF{QpF4;p78I$^v-$fm=<=4XmBd zth6Ui)R5fcW9BL9Zml@nUV`S)*fA#zJ_6$;>~a|5AQisW)zo@vpas4u0u}5olbxRO zCioOaT~?i+Sm=pv&YDtY(PzLA1ukABx(#xKGV#@cuGZ|FKvg@KL)O3WYV3|xl}wNp zuqx)e*#NfUR9mMbo{~^|Cw%rr?1UvG7UKhoGA%J@aTmU-D>LHAiXEQ2tP6%`IN27n zC^6}&Yenl9ij5UHAHg&Hz|?4@J>Zv#?h-N43UtG)Nt~mDq5TDcumLBp9R{4f!WV^% zmZpwao6*!3=?WRKrrGe_8TdGi(bNKytVma9DAX+DVHuA#0WK(FO)YKRU3kt7G6Wjo zks)#HUhQdsXFT8mvC7t1U8^Bp#y2|Q_%YUkq$M!DQfi1vln@$cRXs*$cdSe3%4pzO zlZxs}G)AGD9;k$`2{eV^D<$w80Axc=Vbh_h6CYo2Przps0#fT}sH+n`SrLNF0Z=5PmDqJprCF0OQCU^m@Lsl6;~8sBroP9E?u+_(DLA4VZm=7tHM9 zbAuj4b_slE4~W!YMXraFw?F`<#UNi-q$Rt>Z5=!;C1+nCTYID@R8^l%N9BQ6pJVRQ zC_GZo69T)!Gko~iFuYspDHf0Z;!FZn04i-?m@QNF6q-IHdNwFtEuYQpj79Mr6x5*E zLLza=tkCRmhinII!$0XUL$Z@9F%^*~Rf)`tpfynwGaGI;22^8)wIsC8O1}GHJZ|_y zgA6ouT1QJlY8d4LmG}@$WL{NWR&v8Y*8|3fsWPa5b9t&|bARJIOK+J(^^92wN<%5Q zo04ngO=!qxmOrAEk zSf%WWvtg?jv&{0HyGC~rj)Nh3Tp$FsTM`h<+FjbQu~xRTb8>eP4m;-K3<-m9lHRb% z(`47NxoHZqvr@?21i37Lmc6stjbzKGp2bN}xEv z$e=b+#{v3Rst3d0>bizY6%j?_*= zvaO{GbauYUm65Y&B?&wzrT$MQiETreV%HF|l0q2+hO=Z+q-Z1+JKadK5>VL)jFn8l zWDN){v{MZzE5TA*t`0j9+s0LkTU;5XXY5Uif{b?LUV9_a`xD{5TBT4u8#5M4LdB|nshaIl*E~1fg_WOdsY~TBSJ)NmtMwvIW0Q5F*?1PbQ3S7sn+sjsv$hty z*_v5&fATT+U2FpI0OM!9#08;%C|cNA5>80s)bjWD?8x}m^7iW)-zb&^6`I|C4m5VKm%-B zA|6kDLjaG+8ot9~S1-AOJER%C z2w9AW0Ca+k&y~o%YPAS04AALpAlN;($~UXP1Iu^$*@A3OY+)AyPJYa#y}7>m?uQX3 zD?09h;d6H^m2fZCoCu0N@pNX-%1y2FGrp7&^E&k?Lm^BClB{M#HNkc)rHQ?P-M++u z-*TyVCvZvKG9Y0uS93i{C#&6mZB|Grf&k7!=;0b4G@Uf*}Ks>GrFJ{0`_7V~e!Gpk&Idq55Z&PYq-}qf-7b!Zxoj*~{c3kFL z88!oQx>3=7P|Q{+wH)Q65L!Ab-$*m&rKkmSTQB3;QC0$`>E`2WC~5zmeGTmnfmQAC zzGPRdAgqqJy>7Z#2mJ^8UAASwOWhTEi3jW93nl^c)e(4Z6@Eon^gr-bxaL4G8V$}1 z;75w&XJ$}&tn)Y;{CttvM?R+pH_YMn)!?jfj~jl37=Eu@?5zi^O=n=x;Lo;2rQN=2 zfJc$C@~rfnQRpnY71TNVXQX5wFg_gV5+CX-u7XFkZF|IWe) zTq9*5@Go-=WBU$y9Y^>O2)8l3nBiYB{CkWK@}EWgs~A1!Q%Cs85Prk>T)^nJGdxH* zvUR{elnbxxWRM{Ljf5lJzZsuf3D?VA%;(~!?|A1+wfV#@U4u`?-?Ji?*|MY%H;e9!+E*?B3zeW zI2!1LIMOKj_dx(ItY2R45e(<$p1^Qk?x}=h!0k4b(dR*2m3tw>dAYL*$6#+pA7%8z z7(SnH47fe}89nF!D8o^ACC>{C=X$-uaI6bO{}#hJ{a+crFT@r7X2LPx_HkmT02kVy z+viAzbNNpo9Qo|W_`4ZBx6hf3p4a=T?Su`uiBp?eiqV zIsFQTbNatCoYU_mIx1<;{h57^W;k!ZCo`P$nPP*VZ-aN+;5RUw+vhfh^KyU1aIWtv zhI9IN7|!{B!f;N%gW;V2VNUcyX*W)P8pApLM26=xJD_YHrwFeF#Hh4XBZjD3sG@4Wzh(5? zpa0Bo&gWAbK3_9>&gX!=ExU0(#}bZup*(kC1g>$6p7WW;aNds2VL0c1sm5Qm-yTNK z`CrTE`FMR3qvz$WWjJrYA2OW#!#{2CoMBRLY^U5$hBKV=8EJ!`!f?)~jNzQmREBf< zdWLiQAj3KR6%6O}x7gs1Fr4%GABJ;2Yi;li4Cj2dGMw|-cc0{T9>H)#o{fa-@@!@FTps7XP#9e3|09?@hcNtbhPwz?a&9F# zPi8omvyk!Oa+Wik^Y<|v*J8>(=P>?gpTlS#9AxyIe=Fg-9l97jx5EO4AIZvnhHzAq z`_Br7bN_jb;oJ^yGX7l7cL>+z{Fu>mIlp8$_n+MTKtQ-qPL$_3vd_K@=kgp(IMzFt z=SaeJc}`&TT%Iz9^LngfIQOd%!$&eZw-K)7_mTWP4CnG+#rSaf7Z9$?zlhOu`G3Or zqus8ca_?n0FZW@_hnM>t!?_(^VmSBb*BO5-_iifpPmG@P|AgV3&u1DR)h@O(dd|nO zKNJR+ZlC=LM}OeJFPh$MHF#5l-dilx*UwV+VAhJD?@p*&c z+#fz59PP>HIe%yPN37f(j1T9(*TJ$}4kFAHi&UD!#`wl77~u-^7@^?=y^M> zw85)w@Mgw8Zoi1pf5GIriqZ4^qMI2#m;Wb>{!r$h_cNUDGd#|4zR$3P@yB|(knB9j z=y|(-jnSi>;eTNfjczwX|O-$cSHuygoj`Ccu>YZ?`FD}nsBd`?N-ZwM;`8N2W z3`hPyC;mqhuJbR@=vNZ`8H}FyCsBs;dY{Mm@Ood!=y|>0$>_PA?_=}_uzG)t;k@3L zGMv}@%ZxwTVLR#d7Nh5Sy|2+1V<G0Qm_M9ogBLR#SuZ61<%~bK!$pk#W5&P525)CL+ChyAb2MD_=e-O^ zQI?WCiwH-3xjfG@oY(tr8P4ndj|}JgiklhE`Q#h{1;T~paz6Vqobx$=;e6h8I^kHq zeEm4z2ET#vDPVs79HU3mY$f}wX7t=XpD^6b_yKP)QGjq5Vr3pBXlI2g8qI^xr2OATj?} z{Y)>zvEG}h-~oo0GCsF5{(Sv=C*k_K^#MlD*R78-{%B7n&r(Lu$B|bVJ<9nM$@vze z=i|sH4Bx@}tIrwE+xrfN^Y(tkQBW9MXg92bD`?+sG~tMqG5ZuUdX)1ul5--X=k2JG z(Ic;GiT_26p7U>K^vHiZ@$Y8zoc|3B=lb5waIWt|4CnpZGKTYZw~lbM5BfjqfY*l% z=XU$l2H(#3Phj?R94+}N`z!n8+u$P!$1*ve(TtwA)3G*q5#z)6_a6R!6U%NafIAM!@U*ZWd(tl@;??NX-KVT}HHh9ARlk%#!4LO9BU&&Vk|7cu_J z7+$IId7k+A82xjspSeh*UqHc#N;mY4$BmPI)(4VN$uO<4^Z0Jwd=-(vz3LE-bjeZ@` zpKC+kq|v`i^q1Pu&(Y}D6aCdT^!*zBM@0W48~VF7`VBvG1Q>vbK&xn8$0{;1c*q}N>x$8wjFUO#7ixL!{%oa^;0Q;G zZwS}*`UB(7_4*6Lxn7?#{-{?I>Gc)EvD|k_ubkuH1}?<7Ui&ee>vb^Uxj@hLI-23g zOYt8=xUN?L;YiE%n#6Ff*I9&Pxu{o|^lD%@^4d;%UC8)wy;>R0^@=b)T(5ZyAHw+e z60YmjPdL(Yy?)GauGjs9E4|uDuSXeou9-oc~#b>w48Q{#>t%8P4@; zWBgI{+eoh-hGV%)Nw2FIAFkI84Ci{?%=mDGem(hwJrMhI73(Gd^6eFBs1G8z(|xaOryG5stK6uY(!R^%_mM^27T{ zudxhAUfYLaX@*hE_;9@@Go0%+jq%}noy~C0{{q5wy_y(*u2+QNT(2t`|DhoFuSl;S zFdWMrN&DD0F+N2dc9A2ea>(!_s%@j z3eMRWAFkKXlVm#5a=rE^9Q}>!HG<)s|7gN>y-sHQxn89V=XzB#{;1cddrSFh7>?yG zCB4pJe7Ih-7|!(yGd^6eE{1ddR}!x4wSe*Gdfm)$uGig+KkD_by`^5iU^tfhF6s3+ z$eQ&{MQk#>$RTo=Xz~sIM?fI#vk?i_uf*kA;=gm)n9EVz4j#> zW#M{_U^v%n6ywA7I*H-POYtuv90R_;aXR5h%k`SZaIRM);c8qSG7K`p6<|2>8cF)j zW_-9_T@2@XUC#J$y{=_A=YJ#N7;wFABV5<(9)@$h9wS`ol|Kx%GK}XKj=Uz3UMmT&h`43 z@!@)HVL0diHQ~Bmxnn^HxR93XwLinTULy%t?dw$1>jZ`)ucf5dIL3$THId<5uX4tR z>ouL>oPQ(Xx?UGC{#>sx!?|8_7=Ns<64L7$hGV(!l3sm`57+BfhW~%feG7P0<+XOa zRjep@ha=UfsE8Po5FiL@z>E-xBqRuE(a9v4kYJJ-CzBAA3M#f#QSn-9QBkQPqC!h4 zRjSl0D&AUK(P9s6t;K3vZ0*tWOFjQud#`WioiA%Mdk^9K|9+I2d1t-rU2A>Uy=O8T z^I8UeFt3LINB?UCxAWQn{xPrT0mr<43H~{+b0n{AfV1u{$?F5~gL&-)9P|1d{9s=D zoIy_MNUe|J|6sxGyp9l@W5K+R2ORS{1N?Jd=I_!+0nWb6d~z=M!Mr8|j(OF9AIxhO z;OM_ea67Md@Q-<20XXKh82ocyRnlI!0?xW)1-~2oU|tUaj(I%>elV|}0*?NFA-J8_ z%itgL`ZeH~*B`+@=QT~@|103EJ4^6?fgj9kp8_(XgKaUdK7w<9!@Ld$9Q_Xx+|Fw- z_{Y2o0mr<~0soxW#S;HSz*%>`;ML#<^O^-X=G6dxFt0Yi(f?e*?YtI%f6VI!z%j4y zgMZG;{EowefV1v0$?H+@gL(ZFaLnsz@Pm161|0qWQgA!3_rO2q^&#Mx*Jt3L^JGwB5#jA34f1CDtO6x{BICjpNB&k)?sYXtbmyv6~Jc~yab&MPMIUj#Vo zZWBBLelV{#z%j2R_`&wN3UKtlSa3V9rQjd)S_U}gwF>-mUUMb>b%3+(F2Of~AIxhr z;F#AN;0N=17jX3dN5Sp9J_i4o*XMv^UI!FX&~%u6)VC!5et@&?po1N=yki7s4D&h( zaLj8c_`$qN07w7l2yW+fKKRGHY5>Q)>cBs@*CNSl4&baiR`N=KAI$42z%j4uzz^ni zGvMg|`-0nf-4FgTug3t#yq*I8oY&2g*9(BN?kvgcHSmLZy$d+zwH^FmUVi}`{eLF7 zo!2h#k9qYeqTuLYADGwCf}4JLr{t9nICJJpUPHhS=2ZeX<~0WVU|u1>(SMcTc3v~U zKjzf{IOcUZ_~-VzSMs_NaMoQWd0h*BFt3{d$Gq+YKbY5Yz|sFI!R@?$1pYCvrvb;j zwt#=mYlY4%Rypn)pUe|zsZm+eH*Al>4 zcbDXKJNUu8mIID?Jq&&@ueE@q|EC1E^Lh^aV_t6nj(NQg{y8tRU-~oPtUIVL{X@s! z!4Ky3CE%FXzQbLfy^rb(IQl%`m%$I_^((;9|NDa5dHo6eV_yGd z`Pn9Meg*cwf$tT6eFP;#2Ww&-1_*A}yAP!fCj!o#UE+Tz_`y1i1RU#dHu%9hOaL7H zPZiv*!$sg9>ktJT^XdTq+`eB*Uf%+obq5_n|Il$A_`$qx0UYzX3;bYS4*-t-R|{_E zwGRAaUYh{Nyj}u_`X~6oy#5V1`af_aSFh*3tDoR( zi+LRjIOcVl;HDoQBm0oyfU~bzlGhmUgLzE=9P^q2elV|@fTRC${vF9XA1v_fxnN{9s-W0FHS*0)8;B9|Mm5e=fM4*9+hu^Lh(#%&>fQ@D{@w9fz|npq;AsB_;AsCI z;AsC>z|sB-z|sETQn%f?z0m$>z|sCRz|p=0aI~KQINH|$j`mT&(LN41+FuJe+TR2? z+TRa2+OGy2?VkZ0?Oy>L?cWC+?RNl<_Fn>y_Fo&FZWpv42sqjg1|0220gm?L0Z01_ z0Z02fz|p<~aJ0V)aJ0V#aI{|rINCn}INCo6INHAkINEOo9PK{_9PR%LaI`<@taQ7e z{gHs9{i%SXeKFu@9|9chs{u#*2Eft29dNY28gR5<0yx^=2RPcV0vzps4mjFx1|02w z3pm<;2sqmRH{fW$|Cn^Up#3p`qy341qx}fL(Y_3Dw66sm?Jor!?Jox$?dJoI_BR8L z_ICr0_KyLM_8S04`&R)+``-YL_8$R`_MZWc_6Lqlw+q@I4mjGM3^>{s0*?0Q0gm=l z07v@>;Ar0pINC1&9PO_M9PRG`9PL*Ej`mLhj`lACj`r^Yj`kk_j`p7ej`sVWoo*Mj zKMHWP&j%dshXaoG=KzlOQvpZ&S%9N`3~;o+0&ujy5pcA>3vjf56mYa(4>;Pt3^>}q z4LI8W8E~}!2jFObz&Yu5LHquIqy0&MqkRG3Xg>~cw66pl?dt%?-^m%^hUr}2_z_(9 zI1%tC0hiMb$Nm|>2ZH@C0GB^caqRgXZRYn(WSZ&WXCnAP`%3^v-8q1x{Q|(z{${|R zgLv)(`~|?*0{#-tH_^@V9*6*e>`xBtyW@8{kJ^=l37^{A-f{^0np^ z{-NOg<&j)Cf0z2Dyf(T9znY)Wk?;KL{=OvpUnaPT$JqZ=aQPTBrMp#d*(Rs(F>+pS zbou;+ZB0Kx{I?$Xdmi{teBhE+DxUEY54P{Qgqe8cYbH*=9S8XN;)vtN@g*OR^st}g zVUPKigMYb<h_G~nL^{4K!w-jt@_n)!+I#dtmidu*@$p}p|?`TYP#`;!32_B|E+Ujp&S*MFS$ z8VmS1u)h>=xjf_8pAC2w*w+Cb20Q}z<$%`%K3{Nx@)`iY0q{n^{lwD*_88A>z%ia? zz%iZ{z%iaVfMcC`t~KqBah3r-1?q4a;PrrGJK}uX3idefp*_YE1AFun2i(h#SqHh_ zUJmxS&q)AY4e{f6|0dwrZ*kp8f*-GVFn+Yhc?Ro%{k#+W<2=>{IQqW=aQV3or~l6f zd=TV?{T%bU3hZ$owE*y8;AbJ=*nh4D9Q|JdxLHpL%DWbDtmh)YFZ9rj1AZOYW4<_! zFrIINJ=XI(fa5&V2KZFaMZC@fk9pu%dEhq!z8G{@0nVSvnDL8wdDZ!Pu*W*z065ke zb+OJ%z#jX_jeui6K^*(%O<<4s%^vu-Jn$<4$8m)F0rY>1hy87UpAL1t18~e2#}VfH zV_M@(yU68FXFNUuIF9S@fq$IG?gAWjy~gAB!5+us-GHMm#_5HRhdN-tst}x9XN+Im z|KRv-0Y5lzT;YK)0sIFL|J{Hu103sv<9$!sR|3A+g_d%REZ!8CVPud;l z6Kr>!Pq5u_KEZZJ9NYbVh!flW0l<%g{=nz5X55_u_=A8C1$+hIINpB<_*r0&{zHI2 z1opTtJPbJ2VI|;rzV-;<{Z;zQXZ^^9+tJ zoR@I@T@CTzI`tUfsQb7Fj`2hwFYM=dUX1HFo=@R=jrGLyh=;&G+HU|H?Oy^M?cW6) z?RNl<_WuSP?fX(&@WK0Av_AoGw7(GWeW9L>9(ddXpYMS$_Q2P8;Cu~`4~`$>;cIt% z*!VjhIN$R{v;Q05*w6VpB*q^1+t@#!fcjwnTmv}v&$S*n=7sCUkH8+s(T@SgafJ8@ zZum}paD18lGuI9G73YEde&Bxw;M_)Lo~#EP>xOaS_|1qD{P@}D;C=)BWBq%}e?H{3 z4(ed`EnK&s06qom*8_ej;0FLMuyc9qr-b(xppQIqx7$FtIZXdy{AYlh_Zj!{^CZ}# zpQivvKhF}b#q(T1`{zCE8J=^FQFI@j`1v0>^5v0j50K~lP$thA|C&7KhdO!A_(AfV z9~R1U#^oz?4ze8ZL*+R?ybAbwh-W+C{p2}6d<3|u8AIl}7V91*HvBMHd@_DC;N^gq z18(M9wl{kQetQwvn{zS7R{%bN0Xd!re4+vA@dLn3-{!aXXF)pn!CZ6T*FylWWI&FI zfSa+vZ#4s6WsK=@G2qpJuLRueh4}5wfSYq+#@_-w&VU@B0RB4z(qrHK+!y@zKLH;G z_-BAu0{$<+TLB*+HRQLK06q}#)qqQAj<+oq-YOcOSop(&{|oSZ@IQbjBs$nP|36g* z%?W_By}6D&5pcGjArsG3z}fyjdXJB8z}fzigB>_^pGKp5b6*$VWZ4gpLAKq(XCLO; zn?Y{;Y(Ct@^Cb_1zjK6(msxoEkuF|m;nxVh(8Avp{JVg2zHdo5=J)T7?y>*jzF~fs z-QWw3b#e21;RgSO;C*D0GWa2~aX1Wc*8NI!3jt@&%d*g!-;-v{TmxrH66^<)A9LIe z_{o5;1N;=g-v<0tz&`_g2;fH^=qhnMrvYy6W5)PUz|RJI&i5F3ZzkZUgM9>Wwm(+h zTLkzpuwMcA8Gt_zcmd$A0nYx1%X>QjKNIXf1)S|i$$R}}+;F~yU|$G$5#ZH;7Xuy# z+{D5aUJ7^#*slS61mJH1J`(VqfScIae}7plIsQ_xF9duv;MIVi1$Z3rF@P@xd@SH= z06!b>p8?Kwo-FTe1^gVa{{rxH0Uz*n&d!|+%K$G0d>r620Ur-|H{j<1eiz{7fNuai z1o&3K&jG)>fL8)O74TNTYXDyYcrDhQ&e>>nq0FMDa5%4(R&46DH_+r2lfUg9+1Mtm&Cjs99cqia}WdFtS zcL8qhN6$Fd$M`A)`?+9W4R|-;alq#Rz7+5)0AB<6m4LqqxVff8q2=ua{99n(U-pk2 z|5bnw1f27_R^A&6_yVw>1^7b1@jmb7J60UeGO)h}>^A~#G}(R|;ETY17vR?cK1lYz zoY%Jj9}D<*0G|aobG97Es(E=)z_|`L3uh7FY@a$$FX))pmWI#qD$3s=HFJ8e6NoYQuR2iI{7dqLSs5+GJ5tLvth% zP9`EP$&QMK(8$(k`|M{<;Cn`c0)rr+T9S1C&QFwYgFP=Z8L%|jm8tPj+VAaX;Xv?6YnVD ze~Ly`Ct}H1L#%arG||CY$@3f`t`|EG#A|NGG8C1xceX_nEe+w;mNqU}TWEM&q#G;I z)BEtknrKI?Gtm&OWKy*8yjXiO($XGH(37T?*%Vz{TU%PDrw1pm;UzWEwpcP+8Ec3n zV~LJ&t*!iw5*(LICR*w{lhF=ei4HHSjkY(A?`&$K`sD1TxMX@H(ZUT@>GYU#>Kjge z5`^AVqqwOW8{L*FF5*f=+mq+Fv?ikoYPNVZk(^gNJROu%O2BsSOb;TYm?_s6@1jIzyB@vLCUL6E3VMH#uno*rN|;@EjqYQdpAarvmQJt=Z!q zSsT5)Guqw|ozmG>AEmjA`bCRfC7NxD!_%V;G*XeycXv@yQ8CRvG=^!? zXlb8a(a>`itc}oA7z)ut?TBzFly=q97H@T@t&B4Ds+!WxYm+0poLu%O4b^dJlT67K z=Xcdi&ZSDBkXjLRoQqqkeCofNbOD;FQJSf3P&CzvqzBnOGS#QJrNiM!V`GBWuUJz~ z)eKcn3)j?+q$O1bSZ%VTE!GvSsL3VEP!+L?MkZ)#?}~)(m%YXRV!TyW4KKhCPOVPq`8G(b+BSJ`9J`8q>op9epmf zGQ&~rZYG~SaZH7(nOr-HcS|_q_Uh=)oJ+K(iR9KT)vBb`c*B*GWACchCgZK%v!{1M zObbsd3{NYfiM4t%4RIOhMtil}J`?GV?j=<8*ap#75iV$$347;^=UAc6+C@AePXS$eT%X7CJEE<$ z@Pug>-4Kh<Yd4VOo0dlH*hQJrHC3UyK8N6|_Zsi4soO4kH>NKUS0Pn24BaNJ_Sm0p#L zUWnV(qbu@EZI(Ss>wmkMdbej#$7`eE#T$!^lJ-)2WnZ{+X&tjTXsdl~vbZ=L?rd*q zZ%MX9T4|fo=u9GETHvw`%$#CLZH=hkb6}%rg`o+EU(r)ubHcR~!nNnSgM!u{tJ1{D zMK|Ow;-(|^Za*AlPGb1X!V+$hRC@t)wB-_@uJ$&-W9tn$~zR0r-5(xu4M1a7ZsAebg58A`V`IhFm=Py@C9y< z3-dKD=W14}d+;)ny_@DTGtpv_`cFHB_Uyvrci)9`iY3dYb~oMoygljOImMc#Zd%vp zlI7a2}Wxb+niSj`StxhyXB#p#Vbsk`CL z80plxda;`q6~c~`FYU^%)a>YcKObsQZDW#s7m(`(D_#lQ-t4tYqmqtlp-u zFo2}#f(ik=&23-?U)Gsa9(S&zhC(B{BCVa#P;JOWUR66WTpq8gt*{mzmQ+5>r}dKF z;7=S#p(z#$)l3W99|n3cbFYGjjF0Vb&fRNwTlMq&?K7OVNS(p(g>~h$GM5#X=Y8{^ zwqMT}#p;H$w@2~b$Rd{!o?aWxb=uvWFO--ukbU&#l;7@m-jjH5jsNlW03LO{JJ2VX zB&%vCIRkyN-+@lUHK(*q&!jG@bxwW8@G+G4MlicQod|gjbF<=4h9zG)S5QAVDB+2~ zzLHP5(N$@=mLHCEc2`u^7l!D>j4p!h!S#JQ)ud~g+DTh#qrAtT_c@>Bq%PF;xJZ{Q zrlnBXf;#!pd?@cZXG42^Upm^^FY`d->%IKwUhS<2(<+!b3*e>a-q@XHY#ys=Y}l2` zxE{qbxclw7J-PHqdm?9bmhMV@EaO`ZllNdjcD~%e=fEl7sn6^7V7Ifoy%w!w9(yh7 zMD9hsFrW4H!ghwOHih2s|lV}@d^%KW5+bW;)Hl*jp)5(0r#?K|B zy?2)2%$hPWWnRamV)#8f*iC=m8#BF+v5=E2tl-*e=Zuqb&vCLhBzLppDGxM;_Cj## zrlsYz$%5sV|%QBJKdg}VnE3LOTVwY2MZSLrmQy~5(1pOII z*nAZ^V^x3|vNy!i%R*cAdWW!7YyNxr}24RPHkAi-;;FzQ#PD544gmU zVu{+lCc)o&R`SVl#y*lZRk@Ms)v#j%Vo=74QnI}N1GdO=) zQBXdEzN*z!Kwlm1?hexzSvq3v^u@m9yl_`xUO_{wt&RSeE3bgQ6csI)Fy+ECI+Brw z%j7kE*|>oIUeEapFL54i4mTwtZBhCgz(lMw?);VHp8xZ4XJ#)gnDX-|sYfsVM1{}4%jK6}EqwX2ct@XqpWH8hmZJaT0Q^RUzb*j3Rf+%l0Q_!+ ze?tKNA|?JM0r*Q4KHvYsZ~bpq_%{aNFH`t81>mnx`207-e&b)Q@RtVQuM0?^O7&2jK4#KF(in1>o;bwtUFX5;*hEodNhq z3Lo{q7l1!V_}G8$3cxqNg@pX?2jG_|`gaH5mnr-o1mK(Be8Kpa1>l?C%fR~c@7wwv z|8){S^7;M@e);A%L6AQ%0N?!f2J-I-kiYqj3#{LO0Q%;)9*|!afX{O!AIKjcfX{7h z^Y0Ci|4M~_UjRO@^|t=<0Q^k~|Na2{EeijE0Q{{ApMQAIZ~y&3;qMcGzf<8q7$E*# z3V%faejkd}Zogv!#DAp1pAmqcFMJ%o=LX;pQTY73$bQ?eP~rbDK>bP;et7_Wo-6G7 z^L?fK#$T!EPYS@Frs(tisQl{JDf$xw@S7F=hXT}}@2O(fkMCdQH~xhR|AGMgB?`YP z0H5#eV8{P(fc*Kl>-oU(!*jad{P{PXZT=$x`23s7eBk=Ueaf%?CWXH$fc_RGe(sZg z_1{+bd_NDr{B6R={ObeocPRXZ0Q}Dseq#WBp8O6i_8-0vmEZjPD15%}hF^Yv;bZ-H zPVmbgr11IvSAO|J6#kq5{1S!F_s8<9U#9R|1Mn*qek=fgroxX0;5RD#M+1!CxWecA zbNQ{`eBopNT^&Gwk)qG{-SVryRMCGdfc{;IKHta7ul@=}|M39&=J%{|{9P45e}fV~ zuc?0He_n~7?{DCjZ+>?hY z!sq*q`PKhK;Xe?7|AoTm`;__B-(T)~fcf(|p>3^38oVFn+$@m0y0V z5z-yD1!8qTTA0P^^Sd;qvJ<^ud1>DSX!Q%`fBuu}+QeK}ol zjp^THx%oQVPX1I|JPaT2p~dgBEgt96 z3yr^C^yTNyQxuy&MfjF{-kZWNlKWy92X;O9e&Cw^KGiNmevaMHd&EDT-r<^-Spn?W z=tgSViQDfMva{Ro8p1UFe9@PmnI|jvuw?R95UlZweez%O;Fk;E>b`ll{-1@vul2?? z!spuH;Z`M$3?M*@|J%YpEp6&Nvt;s)AhK5fJpQr{9aw+97pPtTY7hN2qF?BEN&jQ( zf7gS*UHJBQ%iO5a{`i^>V_&lz|3moM>d&7uYW%{ft_IH!cvv!dqY2RX(}jN`lIgk4 z=W99|zgzg(;^#F%yV;22mh_C4vivCXF z^Z37C(Z9??e@%@`%+~*#JoNLQ=BzUN|AX|}&i_FV{r5zFu;V5DkKO+Fdgzxb`ae|k z-}TV{O7u@pOFPeO{kJ{zs}=o+75#qHcv|}pt#yS9vgm)E_*(lnEBcQp`eh#aGezIr z*VTk!=ReMr{C5=lklk- zGmag?FUvsF{nxAKS9s!{?F&>TKf-~<`Rbp-#pm$8$tU#jbAPN z;|)A^wb8DO|sPM0R%k4|?dwed^!qp}$zs=kIjd`uoxS2etf{`qcl* zLw~uVzh2Rw<)OdEr~VA$YxUot=x=b>| zUS#4N_Un_0@8oX`#y+8|DEW|HrUAb*ni&V zp+8a4e@W4Q)kDAFB3E)^O4)s4=l`OIez)iwKG*+cMSt)?djIPZ{o~zcOhsYqA5VO( z{Wpm|pWpDo`mfR>h3g!q{jc`Wzw=_(F5CWVzK4GQXI)`z|JTT+t^aoq{bxl#+xqzz z5B)OHH+gdYZz%d_(fvI+QhWaSgXqg?fLjdu*RKBv;%oJvspS8bqJOuC{&2o9K}V5W zM)w8%YrV|7!$W_u=$r3hbN;^~zFq&%JoFo9xssDp%I*_e|L-39JD+ncvH$;C(ZAqe zz5Z)N|4vKauKz^hYxOUE-ql|!e9r$JMgIv8{qrwziP`j5dFXFe^xswV&!7vu9I4&^ zwuyeT8%FA1JO3fX*YcnFf}4MxFggF<(sR50r+es^U+NO=`PcO-PU&H)hyDi9$MOHZ zqW=RA{o6(V=(Lpc%+CLH5B@6QXIuZr(DhBN{u_mVLKgjn9{k^V=-cuC(}TZL`1bz6 zuK(YNueJXUsXxwte^lyUb*P^IabY*{Q?um1+JhewezyMeF!8nc^Imi_#s2f568|av z^!V=-eY^eb`rqxrUn%@(mi+G^z7~I>#9t?T9)BMx@&Av9{-Hvw6ux<|Y(_Waj! zn4bUkI#>006sPBQ{*A=f^6&GK8!764N_<=Y2@n0eh$~#2MgJSr!CA>(KZ=D<-6P|$ z<6q#xA20mT8SI|&wB7T3ZKHuIBfn|N9y{o3qM=`A3=Pr{?(Fyp{Vox^CdmE>;Hy_{(ki?aePMf zZmbBs;-SA#^e2ij>;Idc+xk|9=$y-+SmkFZ$Wq z|2i_@nC$WQp767^|G;B({wKoE*8WElU(3I2vs)=_|NRKE>;H;}{s|3k;hvTHnFqW6 zFL>z3MSqhJx&04N^gC&SWS@5Z{wVs{+CNTwE&sxo-AJ+h4^;F|8>s8oH@bnJEAg8L z*Q_7DSf8jI#Q;DzDzt1afq?ms{MSs1A{wcEY8!7cO5Br)Y^0?MR zKVS5*{SQ<0ha9WtKTGs4w)AZMlZdb7U#;ZNpOxF=|8@`k^`d`57X70J>G8iK{A}}A zf8uNLH!JZUt;E09L%(m68+f+;&k^6y<3CpT#a8|lLdJ0@@wNCDD)A3g;=kHMe~ReS z_9El3+yBoV{D|-;WU$>_5&DBi{C7$GxPA{(;=koMy?!f2|4bC4=XU*;5MQg`cG1W2 zbDW}o%<;PZJEEU${k_41|B>*=XNmvY#Mk2Q|EilQ*6#!*{;GUE{$aCSVJc6?VYmOJ zd|iL0=;Qo%lA`}z;&Y_-`a8*|{vr?kxT1fuqQBEazghHGQEYf{tayB!ujjv5^jC^8 zuYad1`nQ~*=YM#!OUyQYmJnZS|3diz18o1(6#W?|>iQRnezx&bLwrrYTl8`KoUZ8q zw}<{>(a$!1Do)blzgzgvVq?*B3L)btC%zW{N{N4ySabUoDDjsL*7aw#xWsJZXE^aS z{pQ!)NOAlWD*8`(=wBiF+4}E#5B-IrzY_8U{ZVNt=b0V<$;8+6XNo?y-zY`@4iEiD zMSp{(Z|A?%Lq9J1JB82vceJ8kb*i3!<7F<<-apy-Pa?jSf885yq?rF0MgJKO{kug! z+xU6XL%&j1afqJ(2GO_subWl6QLggfzv7esxd(rn@W-a5oM*QFKZvi@f2rh; z{ePU2|J>8`{0Fq^?QiQRh_C5yQuNPL^bZ-T>t7)Hw7tnVZ2dmO*YtNP?H^L~pYYIc z75!}eZpznCTK)4S z|1#n8{4-g}|3eS`we9};-|s#2>wf7*iv9lrMgK0kz`>UG{_{i8&({BLBfggZQqjlu zuTu1<7wGy2#N7O|=}#rTroU3rpQ`9T;-NoS^y%%4gKLGy3J?8Fihix4e-v#n*{5Cq z8qq%&#pt=M-=Fwe{#%vyzfjS?$3y>C(I0H-Tf-smDC%HZ{Og5Jmv=J`n}3@J|5f2% zp26;!|4qc#^6&F2w^H50=ka%ulK-b3`eWlRG28reS&^Rq6yZR5An75w=4CFDDl7T zp?|1!ylnM*!$W__+ayK@)~`X)pIV~lKTPxuU%Ek$&p)5>;Fk-((Gca)9)C{~U#nl4 z#9t>o9zRV={HM?cnKQNLua%;2j~`qAVd2~B>?Yyoi@tg2W1h(41H{+jUoP?E_-Rq% z??)GyIez>5^V>y#hNYKpy`C$4JO0vyYiQfs@h6C{#lJ&|zg3CF=o?f91qzrV$|xAgO^*YA78KcK@k%ohJv zkNE49_!CO}LrV4jQzrUnS@GKOcM$(jvf0nFTPS?H-sZJ=Y$v``e~Z6V;y3dLkKaxu z{zVeM-TsTS=o`5OM&BCPD;52@ivAkWFEkG2ajEEg?Z3#CbNo#B@-p@CwD41aJTW|j zzfAlC>4g=3-X`Ja8$)?CbvN+uMc?Lc7yj}ijHUZ%^S2RSYrjoWzoq?L9=G3orGA`` zt<8*u-*I`}R$7Xnc-O+q)R1T-Qf3(<3`%kf1~27>Ldpp#>}n?~ zDl1P}S(%w>qM2i9NoHkbMP)UHb;ztkW$}KWwVu6a&tk@Ne*NC}pZ9Zi$+On?dDeG5 z>si;mXV@%prd}Kw5h2X0jkr)yuI4<2B(vhc+<;B87$!Q4WO0^oh_=v2;h$-z%L9>6 z;xc8l%8E9SR4$GZA!H8)3sai4lcaLtu7sXSV@eUL@>I^Cq=SCoa>$>S{Qf$XH>JIt ztgnXcHF@K?3OA*_9L46qCZ#{{RcZHkfC|p!-<*N!`xjR@Ub39FH#*=)c zf5SMQx=c_s!jyWs*<4PSvN0&()7gL(`U5;`Tm;dyN zWy8r_U$}ngWA+0}8YgrO$j_TOBxyi?PXGM8!m|1O=MNjwe@Ie%X;J(@sVBc2_(#Pq znUo>WEp>!(7)4~c%A0(o>&AMrZ<*$uvU2;~<1hU2u`S918`?1zSl^Q16%c^ICqVdB3a zjQts5`thYO_UppnKZF@Sv50@De*Yv4&s$;e`Y`RP3}e41j6d7M*x!jbgc>IaVeH$4 z;lC-&c)KFZc$gH1-w1=B8)ke?2@{{Y!i=BoVf^eDrd@Z0@n?RRc3m7Mp6`Y6=eIES zUxe{zY8alA!o=r?F#h)oGyc=V*q{UILr#e(>)A6CQN)T zf_*R4py^D(ugFZ9GBGp9UE-dVSL$(>OqnG=l zHljBh(Q}e!Xl4qDEc&V1JnH-P$%bea6aMF;V`z3!L2*`z+nF{Yn<|lG2JWMaF+8WGd-5@o!VN8i zD{+t-g+&O0JF6gNO6HV=OeX?1c|!PcmYzgCJS9=ZGAAD$E$c4IFLmZwUYKJlonVi2 zCdplxlOM_-XLwhJP&>l=61H(eOWdXIlDTfD^6h^-?-0bx&`?x9<%&s(33AqE&CHvd zI1p)bGG%%e6uUF?3UiC(H2n)5m^f&b+mo4kD!)c<@O49O}kMsTfR@K>6P zA%tNwh~qshuc$N=gTtMaQkdrn>ddr@C#M&sXUZo3byrbWsPHBZ&&(_?$}7au8ysB> zR;-<#*(F8u;8%`{8KxnJpKBzurm&^{)>=TX+0Vw+*!h$NyDsTPyMdF*-cP*8D`Q7>`J?)YmHl!sKhCn>wAOsx;aAr}X=4~Aa? zrBnp2UmP*?(gMre#O1GW9ua5GuACHud_hwDmZ_))ElCj^JS;y zAr&Q7;wN1Zh|y@)QGP-5eQ>nBSk2h=GT%-G|x zdIpMHJnPzJ!^c}Fo{8G<(`@(w8-AV*Z?NH)*l@oMA8Ny!Z1@Np-fY9i*zg378@20f z8*bjGV)Dpmxu(jzZzkMnf{;ybs|>|}xXi2BhN~5ZHSZ`%_PB+&u4o&MM>p0LYs0B- z^NO?KSZJ)vVZ+U_Ldrfiyn|&eM1l?PXv2ru@J=>7*@k05vo4nnKgmLcNVDNFHhiiL zH^&;OXV~yAHv8E&ysHf_w&8!X;qz@cJ@+@SavN@b^h3I3HvDAM7_!EOpJKyT+VD6V zUTecowc%@Q_~|x$oeeiXYa{hW8&1z~&8yCa^G9t`wabP(Ok>D;8-A7zKVZXq+3*G% z-rI)zZTLAhyvc^2Yr~suIBy9`%kz=Oe_xw@v<*MshR53Q3v76t4X0;(=H;;A{Y?iQ$h7Ymf#WsAH z4WDnrhuiRS8$Qy8FSFsJYC8;7!j6akS-}S0Q403bLO~nxlum zXlZGwk$Kv9jvjv3%F~8(^zb$-PaDnA!_QlJ+F*_ze#FYt#&Y!V3M)?=%F)9&S$UeQ zM-N|bMMf_R@xd_FH+{DA0Z@Pa6cMvcZ3t+;m8XpW?YHu@0igX>o)&(z z-^$a1kM>)6TIkV!D^CX;wBO3pf{*rFd0Obvek)H4Jlb#N=>T^0aDi}J zQ@rv)7CxAL@bqy1K%7HqWN%F{xP_FH*cpwWISKS1VxJZ`q17G(6lm8XRm?YHu@ z0Hgg@o)%v8zm=y27wxz5w9umcR-P7EwBO3pK@i}JuxP)T$87!nX_~F$ zg`BU*|E%Z#5v>1S%YUuqKh^T@Yx%de{2N++i~mVZ#o-=pQLwS1+PU!>*Bw0wb+*i-syNh?HpQ7(m-wcudh`%%vn}1n!SYycd`!=! znDp4Nt4CiC#8quvM`C!hr#rUtZ=O_JdHa@zn4aZi_c}}1kCFC+N08|Ir_0;q+V;am zu5Hb2ToF56@BZoO27>pQAiAX?SFR&wdD`#GM-P4qlw}uWxGF~93`^nie(mYxsv5lk z8UKRcTUz`%*gSU{onaR-9c8Whsr=!2P*NfT<#70j^)5Q@GZqsOaa9||vxsshQV#-j zd3}BZYq86_y~=qUu=hiM2G%;{VKJR;0X7g=)xC=>^8ppRkhZWlU$@nj;9Ydk78M{i}?x&@I(z z5#H_}BT>=ZKIY-NrFEVTK4T~HbZw>6mVYS%Qe{kfLWs(`n0sJSwgdId&ou*=0}avc zAqT3u|M56wWlYXTNq?mS`D!EAvQJ|BRm%SDfcPD(KD2~);-ZI4EctqLAn-(>< zv|vCC1Z7VeR;c(c>Wpe*wIrgBYAY2xF}P+(%;%4ViLG~DBM#NNyAZGGR=3IFQG`Nt z)dX-FIxg=biej@GE``i|@^7-$?PONAIw`oWF&Sf~q`Pi9;s>J_gCtC^C~%RWd9v;5mK2(w$&5KW?4W< zk8)&51m-%#3PBi04CuSc>o8DURrinsFsb2QS`Vw#YIhCS*Iv3HTS8o^)dlOe)?y&| z*Akoe^_UIP_laJAs`rac8#|&^m?xk6|M->EXMBKpXx4u(P6etWpZ~LekuPVwY^tlf zAEBfgD2YT(%~e!4Q%q&n=YK+#TM{U@KTz&hQU=OhYAaW$%3UJM-6P{#U6~MQ+jla; z_oyIJ&9cR76d_{K{b;o1-t8&Wj>=*gx9&-S`WHy^mn5z1i42sKb}3lvRAVxvQ>rlf zA@u96^YDNS0)o$-FZxaXFc&$S30Dk`w+Q%NuC?Q zlUh|NBUQZ!wO7kZs_#)8ssugos4lC!0zYc67&B#}cUubW0&>aRM9dXC940%u=;fob zGRc7K8kIF&9WGtvw)p(FNiEt9%f-slj7*HQL>QsURw^^l$7FlZ8&J8FswaoyBd89) zA2b1EvtfBAEbYV2^sudlo37rjqBet>KmRePxbpd}V9@GTnx9wzr1MW`HfAg0ZLPRj zvoV{~fo#;!FG63{xT>6fYt8W({t>eE?k3EG|J5w`@-Yl*+bq~e`M@mrN{+XCq*rPd ze4GgbH4Cm#gVAi(%gR<})hu{6V0%84A!b2^Dr1`kD+6VIp*Dt^1zVcrNHhEELPZih z3q}Tbo|UmOXF(dZP;DY*;Q3$8g7w54JPV%xr}WJnV~?t=>FOZqsx=FiO061E^OdDJ z3))LdryNMrmC6kC53)UK7K~LYbJ)BGRhU^22g^{iKxnw>>M|8Ia~6E`Lr`($^NwK9 zngyxKL+O02W@EOZkF6C8H5;=zQDmcLK_2?5)htMot=DD&4!p@Y@cMBB)8O)EVEdR@ zpXzn)O7%{xi`iftSS7@$2v2_;wuelop+I*~H$FfqpZ|3ttm=O3ert@JMH93L)31*7 z?s+g(|+RxXysHyLMnx8lAve*EkRMRmM3~*tw?4aLB}3pR*QTiNiJMttw}&Yh~5=$~CU)3>=+5KqZf& zM!vVkBN4=uJ$VXbho_>`3n4t05`x5%bV}R{WB@0Yj6tIO93UMD znLvrg{yyhw`Us-29}@K0L*v;<(6fTZ(~yY3#|@2Lkcgy2G$(4RGFH=hTy^Uk-_bJ# z8?c_5?A%y>=ufY6BN7!2Tg}8?PV7ohiO%J?sZz;v5Y8nsxw)d@kk`4n%DJxm&{tmP zIwa1y=r}#&KyrOW18CRF#P3M#bo#_j=T0LiigIEgjw9fS8OIpJ@v^H_kIp2Q&9J|Q z-lLu!4dV)DZA8VQ+K8CjbN|FhsWuX12^!b8-=oU@g0l4Z2Ln`|+CKCjVx-#W#nyNr zwAV7jL0&#L+G3ft37D->V3l*ZGHO07XU&^;Q)P12`~tV+3~*ItG~=++O+FyNVWk?T z_UUxQ;r*3vGBX;yZ!OC>f;G^;)A=igB-*D|ifSX}e$|MZP-iBkc zAIsXZZqeZQt)eahKKw?>+>uUy$(vL>QZ)7?#I+I&-K#K;*$@>goWBMa@K>ir5i)%H zqJ5D5iaLV|biPd%$oLgC;5p%4vap>tGq5oDDqY~j5EE6E#121QdHdd*I5XC@?K{V|-`Z|#?&;m;t?#=FP4rgIfJqob z@3w8f_U!vs-dp}Q_yWN$@Akayl#<0}6Ep70Nq8%#Lij3E@ssLp?BS}CP}MyIxqMOe z1XoCdh>9%)#?1Ys%2;wIJ^#B1Gsd-jTXS2C$ZR|_yZa4dtunHpt!TJNJ|**RbG`Si z3->MUx08+6v>8nd^CR$tg4)3jrFiRKp$g^Vh{@pp+c)Tx$~0J1Y@web=Jrll)T)d> zR|GkLmRYrb1r=(44R(TR|ArnOpH(kU**^n2{2YE%$ymEq$}#WiyWPy=POORiiP%2@X6(m-!F~?B z1wDwxg$W+F2-cwJ`u-I1jYjn@ z869lw=pu~jF*T%+>rf%0rJR{xWn2XubFV{{F+rvl5X+Mm%gxO47CZsV?{`=%eJqxN zRYnZTnoIRon8v(35so>JW2I}7v$rQbu67>5JWj{@Z+l*g(`Ydr9=uIx%-!1A0c}gc zI7HiM7ymWgY}*mp7@t2$dF2jxbthUYA1a~f-)NZEMJzKqAmQ>k*I`_d+{m(y zEDx}3U`fwYuroc4f9tyJbUuIDPUj1CJDo4m`g%7i;3d|%p7YC`FOhZQxiK3up2q6B zl2%tFt1oS zCr=w{*Pz;ZTeYo`-uwJbXevhbS%KOng{lo>v{{bPW2kpMJVm_;NIs9GY}pzl(09jZ zb4Q2aoG1K!n_F78QV;s4<5_D^3(_(0r-F2iBwcME_;~(?4R!;Kx%ISDW4!KkzJz}- zirk7tt0U%h*oY%d%i&Rm5I*N-T2_>O<0x$68!+P5$Pp(-HI~s9y}^ayWkYMq+7pU{ zS>tJxfcuzx8z_nLt1G^X7+$~drHVzH#eyrS!VYttXy`V?OEz>P1+LooSDHDru9cy~ z^ZYMlBtOKB3JTD0+4#N3PFjKgYe@p5XO&%Y6F!B;A* z4t%E&P}TjwZC3LQ3@z3C6<{MvKK^vCLdfX6B$o=K_pO8E>V_gtmJ`Sv;L zHj0Y#Mb(fC5l!laYU65VfYqB8ctN13$13`gD%ysus=Dv@S}}-#iHborj%BE1{pcpR z>lr0Q%pGljj{brgu=Gp(RLMKO$4)x>af#9?W%PQP?1$vxefUA4tWJxBK##>#pGV9T zU4I8ULXqb~WiL_N8@TQBKgG7R!Ds^oHhfw=nxU!iWBL3i5*R)kJH*^_5bU@idVzYl zt?bawmr!G>GhP5($4~YaQZtd=)CYd45HH|rYH-L`mOlR*2W484T?Mkki^=y5#+|So z^;DSy$z_yWUe+B+HeGD_%?kZ8#y)?-XENkj%Sa&?^xNUx z;nPr_rbKkiEge;IW1E;;=o0{n6o&mKXg5X0-10qz_T}lD%vQ(BF6?|c@ddZ~7ODxY z_I|9IyjzZRpZ`9b1k5Jy`y|lhT=D}Gjhg&0Y)3s6Q+cz>uAppM*}R>`^+-iD7Q!S8 zDcSz1NT8|0YU&@dZ9cyfU8uVE$+J}$Ffg0QD>;1Et1-BQqF&WK?N%!wi(n$hU}LA6 z#;6*s!|Di7l|j#p`8KSeG1vMiM?K7Hi?-OF2&zG`LRNQx#>X$HNGtN*$03Sb8z}NR ziufO*7*$Pg4s2(%8O)~50FO{=y&0>t-2lNDB4-+ZAK+6NWTO{jF^H-EO<+|StMGk* zTD3mP4`QyuBdTrwo*3{$cN!E%3hZkWRPgY*x{Q&}e?)rJ{ft|zkX?#UAI6XqJB^(v zhWh~LR%-K6IixeT%KonITqUVwRkNjrBDZrZ$_f7mG=1cp@%dl0$6Q{womd)^UvX8Qw~AfNn$PA%)ZJDOE-RQt&?#Wqigp$h6?9 zGNxGuY0BUWIN~!dVgpx|T0iiG)_(X5Y(GuH%1`j^7<^1Q3k|kDvm8MU^cl}l$Z+9F ztlqzU@SPEF89o>dd@%qUJ-!AK5mPy}Cp`!{KsR|Yl@pLbFZro1cwD18`;n!TrKN4J zRM1x-rc2D{?+g=pOC}$Hz~mV&JM1jnt6|CuQ*kdVdXfUGrlnZIingS{W@Ra6v*LS) z^y+HPu9w;F*~rSd^h$S>!FOtYay^auQ`zb`*pU62v;XMDcL~5gW$Y`$d{~!&z0KHO z!nP}H3uCWJ44%QxY~GWytim2-ySt=cPbL=fL}#@fiT3Y*B-KQVY-D^)QV&DbY|c@);4 zF&|<3M6!$@V=n>&{b`)N0`!|`D!+z*OQ7h&iu*B})SM8wponHgIVsE%Iv8OYM4BdV$;H&Y^8Vc1zb!rPXW;^j zUMeReGJi}O(Oh33F`xe|o4MOclWk9nx|*rqx4H3=v^Az#)Uz$>Gnsm)&AdYpwa;mK zJ(;O*u-PtF)GbR)ulrlnuS?A5pJOwB&PtQl*IU%5Fm+E$@AIFns8?ImN99p~0y3Ma zV{PVBtTa*gu&5960bU#();`c ziu#AeWL4bsE;qAmiYXuZRUO}P1JkFnE`3yGsRR(@AF@ys6Ul7WWHM( zQ8zxq)G0ReYAa2)^DOF@nEH?R0xgVC)HhqyH5T>7O#Oq+d|(juc^35zO#P_M_6ccg zoM%yISk#RRRY2~tnSW@d$?N@N&466Q)R$O#pMQd)-Xm$q{4|TYhN*|y%okc|vMsl$ zqnP^0zCb{lq^)tiMg6%v)lsYmGxeu7^Rt4e<1OkpWhtM3h0XRJMSZeGz1pJw_(m0w zn{DPhtu%T4)fh7%w=?w+OOMZY6!oi;hRpLU>LpBlp3QuYl_uN!Eb4To{^Z?2Kt7kY z#te%(-lFc!)O&2^u|d=qThwt(U2d~os;CW%`X`(lX?d?Q-n>BtZc?PnQyeH3z_<4oB1>=O}1++>PMOSt@=Pf-jTM(Wft`!i~4U& z{i@Bp#Yz)(xL2H+_}yRJ;}-QurvA!ieqIpu ztE0_;+`-iM*=!$B)IBWf>n!Sqxhf#bZ038cGzhY7EEmHxRXET4*N|V=x7WHFHeSxL-`3ETKb&`h67hBXGrtV=gpJAoR_Ed{{ zHdEK{4g_Ssv^6p;>TwqJsZ71iW^M#gzcJDbNPng-v)L|C)W3Pih&+k5sBv2(Pfxiv z^QWvd*_K$;M{iQLr&)S@KT}aZY*D{0jc9qon|&m8N1OR&R+^~Ku&7^V>aA}D0`j`F zHO5=icUsiZOuf!#e#}Y}^;;vTa=MpU$kaKO-shjKs1KKt5t(0UQ9mOwpFhK9e!rC_ z+cJxK3{$ta^myK(sBgEZdsx(ynfkXk1C6}UDoWI6S=4Qr`dORp3)0pYWKn-nt{Pco z{HsL8`eB>-S5}&+-yLoSWVbAZ4?8Wr&wr(&J|Jnx{0WPC6;qG5nJ=@_WV^_su3_rt zU4a%Jm$t?ti+YYlJ%*_d+syk1QJ-&7XE61HHrq!ObuWuL!J_`=dKHk{ZRY!|Gw`nhfaI~)iI(2y zAFQZ1NE$L9Z&BaC)V*xxxmKENt1Rkxrv6}OARr%0TjOery1hl+lc{|+^NvB(LoDi_ z7ONKCXtQ0SsD(xSjx?ff+)<>=^KItqtTcK33#m*iu!R$L+0wfm#FiY zx{J*`!%CBFjYYkPso!`b5Rf;et#PSEJ=OC1B&ObAGyly>6ZJ@odMs04XX$^!QyOMg4}PA@fp;+RN05HuEwoO}33mW0@`o3wu(k}K)b88))~+~)mnRAK)bxPwtYZb*jn2N zM>!g4t+j6lv;$jfp9^Tawbrf(Xn(=tt<8nffc8LZZAL)5skL@!K)b57_SArOack}G zaFp9SqqX+afOc$a?bd*{cWdn<0d3pX+KPbIzok_)+yU)dt+kf~v};>y`v$bPx7KzH zXp38GzlWn7jmfRGdjr~}*4pO-+LK#r?+R#}H@9kUSwQ=7YweW*?dI0n;Q{SKt+l5I zwB@a}f51_0@66WP&jZ@=t+m?%+H+fL9}8%sTWc!=+V5U%6^&T|?Vi@!lz{fx*4hgK z+M3qd&H-&nYwbVbC`V%owD>ke&~FAh@QGdUr}K!d`O1I^4fa;nLJh%}4I>E;R2Q~De)s|o)Zq7)9m201P`s*=z z{c+EkM3YJx^;(Q(`Bet>rL8e7_1YImWk-@XZOEHQ_9hAvhVq?c^3@^~`yaja^s5-h zmdTfR;H%9@q7wS{bw<;&vM?M#mTHx|TWS|c56OUF^#&To%)pbiX) z=vT;C$?@RT!JJMM(oLQ0t!%p? zxRrKGD-;7zBE+~eXEWxq8U%1>pfU}N8*S#>ZE;AKoot(59Nw4>$!(T7W$ftN<_P$* zv^FF#R9obrMJhScGLc^mh7GME%0>?7R$fs1DQJgO(3;Wpohbh&^7g*wwF2wmbJ|k_Y*Wl6lskfI z9)II<)l2fX)9$Vd>JIrz8GRj~C{~%1J=*21clF&B%7*7yh#49#hE+U}1Y4)nf%pEtUT59@*r6z4rS0}^jq++r~UAPeK*4>56y*{U5$nX_;wkg`5w~w zQOB)UX<>FNli2Rb_KNO`Lh(%a;Y%@!}jHlvAA2f6qmfJdeW9bzrQySB14@4hOyB#unN2{#WSvPRN$rp4*2}JRGqq& ztw88ZE!7C^?10t{tv~sBESwcP`tTb-!p`GK(giiAXCi%~x#u~NzA8-(ysBt5n(-1a z!|FiQf2#8?wAJ`a@NAvIQImtS!!MQ&%Ao| zx6ocq0JGhz%VkY!c~KFOh;rjb<%a21JPlYnjRkp?fN>i1HD2{g?guE|ACed9O>Z)P zqsn7t#C}mtXCK);^mp*kW6gnYpBw&V&jhWqbm}u(E?4#@{7z5MX5^q19X1X2xuSfb z;n2W!oyW7z{_9;mP!}Tax3w!!Uz4pCK6`42@(cTfn)qHit_DU^>oRJ`u#Z)grIkkp z<3$AB9$_xuYL}#S#pVcaL;pSii>Omkojm}juQda30>5cd>SG2Olk5P643S08O2;Ql zVs*#FP#K`cGXoPG{p0g@_!kWdl)@a5_0mKR)EjO;4ceRMszxAg!J}sK(?O#q99OHo zSx&eRdwpamzCh2(yBAt%CUOtTb?`S#=HM0u?dY-aJ!p3^d)Rg#VXieaEO@=KpL0+m zXpHG2s$x--@SGwCm0Sqno?4tsL^d-r%|Uq;NajYCZQRjVpla|fAi(|B@K#zFKgc?1_^-#!P`M!6jX?>`iW z|7+1XhDvNpz?dt?TwxyPT=r7|?w;4-RW)nys+w9?)uLE`B25b!vRVq+c)8u-7jETm z2;!ar`4q1Y*>$8oM`rOkjoRx^mRUNw)seQH%+i@{7iFKMnBWy(>8Vu{S5EXcr+R-( z^?t|ax7|{?Beup>?LHt+T4SyqlNlH$|5@*xf?FE&&MyvTsT8KZc@8dkntE)Ve8ft z&`v*Y(%RR>a83+hYuQccwg0S+A1RDjK3(d8nYDYFH)FJ!;VrfehC2JfE_mms5g%&j zvlfhsBMJ81VyCkOzjaHyM$m+M1a1WHyY_`nU)apmOm3HQLY}6A8i*77Wnhx5lH$O!=|;=s zR9Q?uR(D^7$CR{ePBihQmhUp8@6n?WOw9h!OMsqasUt6Fh2RM(WMvmmvpdaKMJamjhV&>Tv|#g+k~g zr@wJ1ZfAh{{0FJ#z^P@kTvz0L{*W|mb*J*r@4%f9Uc*8~<@^`{9Iu^z0lfakk?P>= z^RImvtx|Wis7)GH|B7cD`ya9Hp8Xq<=2LY6CFSwN-d=}{A+=ZDA7f_I+U})WKeNqC zQBTMyada1dYacx!`lMAa=}R8g0iRzkd4ZjGx189%miJn(x3QMb(n&8FuG#^S>aC2EqB@qqDkoYZU!Q8f zIh7A`Diw#%@0EseE`H4_;*@Qkz^s>Lm;OkdOb_bncpO|_OZ2ib3hiXepq331lmR(K z28otIIUB?%1LZv4k7F9x-y_@ju&gD4NsctJ8|odhYDD_Trg~8wUesNSQC;q;erX2T zs~62q^nM}V28(WHguHoil{Aoc$gY-I^{&X3Dvf5~`&258HsiTC(ikZAheB63PBCvW z`K`9Fn<~p#ug*+S6lgTwho;h!I#H!1^*NMQH>T%5gz05Gi2O}EsIPF;o`3OvPd9V7AHIDLLx~(-XkJ ztUFg`<$3oWKJNxr3!cY#$pW5Xt2NXci>BHi{|9UWi?Vr_LX~4l!x~Ai_(yoY#e+)u zSa>?%&$c?~l=b)*a-U1}{*dbZ)*pukH=aTLNOs=O2)iE^sb1;*{nR%VJL32;u64-# zw<}HqRUcS!B-!dOsiXPqa3(4VoE-u&&=!(nlnF$*_1dSebfN0)XRr5(hX1JEX1J%- zONR}*+5`fRA?dKzO0~W>Q^V;~AlGnb6JB|V*S*j?#pur(cusSf9PLOu*YLmjcMN#X z{jfGq{V2T}d97}144}qnbV&5;=*s_I|Bb+ZBk}R7qKOw!5@6w=6#&zplv_wtHL=G4dyVP#$MvK@U9Wn=TIgOUA!){G-<* zNdr>SKQhE+!ePtlMz%7zQI#}!T!X)8E%4X86?J>a4*1s*|LE%^bjjTfKhBn|6e1}p zelY&dc|!c)-1wxy@q>{V7@w3&VAAmTq@4JqMB!OI`LguP@hR!!F1x}x`Krux=VVAh zV0uQHb8_am)D-8WDdHf$+@_jCtr6nKqd$p=$Tm?%+ji0IJ9Lcg;y5cIc}&{nlhbEp z%_IXd!@r9l;8IL7WDceAPhIUqITG|Q>_va zIW7i%L8)K1FB)d}WgocUF$WT~bn1B1*~HWAd;*uT%>vI*D3LbV_COlX{7I%i+l@ za2J(%9DNcK5(-NDiiu_Up1k6Gw=L|~mx0J#YF3v~oS#=X$LcTAE--1t#U)tMoJ)^cS)&-CPraVAk}?z3xJy7VH!B|= z6&ICacoh|ji&G|zNfl$#(wvjVj~Scl6caP1NIA2pC|~3idJ>0ZdPJF-fE+ZC0hs_W zB#8l;$ex{5B8sv-ZV#0n#wwEYq)ProE;qj@3*Hr#(NxVZDxAg1QcnqXEisQJWT!O6Q2ILd^3l={=0fvOQ%bZc$c9t$_(96^1efP+_)PWR;X;Ef57+#Ud?b zd?r@u^px}|&Pn5(nU`dwj2CH`Xer}T(#A}hk~!t7G^ZG!o{2?0J>{}VVqkoNIZlMN zD#+P|zfXSg+)3%4p_!T4^XDffCJvmLg;h6Gd7P4+?nz9fre=Cdvfxijwlh5oKb+3= zq)hAo$?2XUb1~nFN>XM+JsWB!hXDWN34f&q=J;5OO8tamY6zd*A@`8{{a+8F*XE zHIU087eYP+xe9U}oY02Q4kVA;&_Fhs=e{fxHuPDP$ewYREXeCTa(y3(^l+3>l5M*Fg4xTnFib ztcRQp*#x-^GUfpEh|^h+F38IuXG6|}Tn2dyrcLi!>5d<6cJgqRQ62eJ+_ z6|&*umX`UDojyUlA^SmYgj@u95c1iB=og$we}n7|S@S9V)gK|w{S57byd82WImX<@1=R)Eo`@#j;8*&=tc*tdtIgrmmE`=0$)Uq0~E94Hy`H)8-cR+UP z0zN!r=?8f!J#T`%4l*Bd736ZrwUBEezk%EX8H?vQM2jpDHWXMX$8IT(x%OQ6|)5!tk5cfhlAlE}CL+*o| z0lCnRxIw-Sxf=2))x( z2O*>IVaRdFUXVRb!FmEY3i4veYanliTnPCxl5r_Hy zPxLor8e|S+5#&sCO@*vivoW<(23s0{9|c z5B@C!UQ6ZqqPmvj->;}IpD^c1vA0By>)bXn8y+cN))IUh<~QBfnEEysMUVlN--CYz zSm&>RwDge^t@1|zKL$O*5zwbewJcA6?_lrlmKJn#K(C5RJ-xK}4d^k91Nut?G z2>qFMeMUf^5B-J{@Gpmc?Fsa2p??&5Ous<=DFOaH(BBPxqFp~bpg#ir<0sJ5bA9qJ z*Iqtyx+I|Z_JjU7^!@C5)jcvksnAF73GZJ%^uM8eIRA+@;)b+TITG7F@b~~s6LUN| zprf(32jwq>jM@tpa}1OP+DLyftS^&VB; z0jwVSDbR1W>zx&CBA*S^aSS#`U=uDz-J*o}1$v6N<-^s1@=4JD2K@zg{mg)V3iNI9 zxkbEP?+)la(07CWO1nOCk~DAtqj8uDJ^EinHDcK@^LFzRiu+ zy1f+o#do!|T!wlB`it8T0hM13{WJGsP6U-7Y?a>u{qFl(T0X(J36$R#X_h|({Vn*A z=zXXyedHd?zbKq@M?QdkH;DfMi@!JYTXD|6GpM}RDnB0jM4bN%gY;^^%l1RR1o|mK z`U$dpZ(zsKhc80k8Gc69<8W#ACFX6L7Q?dZjWMzEF}43iy|3AgP#x$1-+t7$aW&4Z z_WEcIxJ^>Ym^Q=a^S8pU#c|kk--SNh93BS!iONrfejm!8ZTDeXp#J&Le{cf+mCzr8 zzK^}UZGLZr{s{D`c75bHSpmiT0Q7NKr_+M;mq@(>STSPlg5HI6)T6i&Fk`+%`AGHN z4V!$}^u)M`y4hxv!gH*%iaFKi!o3Q;zbxFEI2-zW=tHeX4wM(@57J+bWK_JZu1K}{ z&^V!Sct30s$)A&KHZ)Go4*0Skbv=r;Zvyd}?TQ?0#pW3F??8WVkiOc|cfALzrKBlbgo z8uVw`{hJ!7{}}W=PEfuZ?$=L(KHS((f}YBsXXn2*z&{20v!M^yJ`eO$!qiXw+zI`2 zG4yVvqej5kj3LcoTO2n-wG?*Y=DY%?1`t5cfCf?EJ_NZ!OdE1J1k!zJN4(N}-w(q+q_BR&W%2L=|WamShsY%r5 z3D7?VeSf^d>Zr#(1*K6EQbDU=r6JRkN7U&_|`yw zDf9#EdfT~o9rRa0A8x$VLq7rfP-B+b*93hb^x^JNV{zQe52JUWd;;{>LI0H9KU$Yo z1^Q?TY?@#bu8kh(Pr-A=aBaLB`g5TV)kYfg>!FW>{@;yxYHtH0KRnTvQI_gRs@=P0w z>r;Wa(sR7;U>9!e((^rm=dGdIN`BCDzdunvTs!D_VABco^qlZZ=tqIe?jtpY`04o} z@rUz|o-6(h{)O95mP6n51pcpuJ{Ee2K>haTA5cVw(Nmo1x#}_aM}Md)s$*1uL)`~8 z(Fuy$(G8P#FP=w-Yey3FhoBGFjw#T8bppKy`Y)l6x3|M~e|$IeP0)v1gV#eJi|5|d zCaWK8_vibe?*@H$yFOKoBbqqw2Oii>f^E2%CqthM zeYm+k1Nzy}hZ~dS(C40jzZUwbC*ZGxzWfCI4banHwFq~gP0y0&LZ4%gRip|gjRktf zyb1bH?Wg!}gyPVBEiDgWFhtQGG&5s~x!b0urwlsr%m&Z2mqR~$q^jvJj`F{}tBhZw z#a!d%wqi|$@maK}k1+gg#XlpAy=}$Qk%VlDG?up$U&-{*NMm(7@lYGW*S9f#2HwWN zE#R$D#^!e7(pp9&4nCES3H?a@;HJaOjCPHYSQcqm2&|#YgRpV~JvY2jk9x;*O5S zx`E=mj>bC!#T%WBBLhWkXXCa(;`h$RnnB`&lZ>5%#Pc!6p+RDKtZ{Ra_%_z4O%mI? z7_TLX2fG>vlSFe@>Dord6v;MT)frGxP63p{A^?G2vOdf z-Ut0jZ^J)AY&gfbWu#bfuCaQgIC8GBeWdW6XEclykM=SC94Y?jW2_n_4)irPjS?@O zZyXpUZok0zWt2F4fpPa}@o7Kfh0$VTf1`f1xGUcHVYK)m-dKL2cyoa9)P-Vog0bsD z(UM?%bD?-Q@kJa>|9ky60{@M`e87eSSq3?a6dCcTf_KTIJQmdWOZ%>>nOg$;+%yo^2T;!NtUZw-tyZzPyULA{+zd zg`HepIDW{hjvHp;^X0>&fZr}AW;d+%%JVE3%=Z1>qS}Xkkc(qff@nvO-UpBQY^PDL$cpVwub)E*^+)JSN2t?8^$p5c((a zN8!sXx|Zf&1T^&7BwY^q6VDSML)p{(jKpsT)SbtMEF6qCY4{+<&HaGQMG6uT_{6Mu zpF+&`XGr`MVXk+k{X!(DUUR=O@nzEfWNZC2@h6c8<^Kk0-&I7{C`+^6cO~9Kcrk1`A665ARX|DTM0zZ+THDUZr{!kH{{%0W( zA-akcn*ChH@6_-L#_wj_^#3WwS27;S{(sE)-!;4=45;2!8qY9^_Yh;)Pm_nft3v%g zPQz;%cWU^4#xK$EXpC3lNzw3O67MQ%HGi&Te6@zpV|BgZ1e|y_Yxro!>oojo#&>A=4UF&7@CO;+qv7-lI;yu`!|`ZB;`=qcEB1M^ zKcL|w7(b}tGZ}Bt@Y@(aq~R|x?$_}589$=oe=^>r;eBz?AwQ34IK4-X@MaBP#Q1Ry zf0S{tLJfR`MP9oZkJ9jeF&?eqJ#p}%dOK;jlkr#$&u6@whTqM2oQ7{=yoZK2Fz(Rs zwm3bJKfN`40ONf$JcIFm8h#_=2^x+EV3I#c!|NFzrr~%JC+(9NM^;{R4ySoNgXi@c z#_4l@!lMr;z&uw!z<4*t&HmcMc$|jQFP0Hc4-HRZ+@axf81Jp&k22mz!#`rYpN7Zc zpiT8AXm|?aNg7_k_%IFM!uTi+?|^_1f3k*O$@q8;|2yL@4gZw!R1H59H!j4Vrs0{4 zPtowl8K0`*jf`KT;REqm4e`&=@CA(LX!st+XKQ#*d=5uE`5KGM3| znXlnvVimqn!{;+zuHnxyzEs2M>vzOo!#J|?it9pnSK;D$VeXrgBpxT4-%@twe7TM7 zJ(~SiwimmD?T;}Yt>L}8Dt~I(9}EL|r8B-x!^;`3({TDuJGHBxansKOj33bO{w!@J_Xoa&vS z;TJPruHg$AuhsBZ7_ZatpBZn^@P4PLdc`Nf{%0}n(C~*CPuB2v8K0ry?czB88a{&Y zS`9B@yiUWPWV}Jc-)CGL4E8_bR8_A-!{ZrG*6?YJ&(QE&886rH7a6bB@CL@~G`!Pk z%AW=eAIiA+G}!-{j5{>^cE*!6{8h$hX!v2q%QgIz)0IE98t!DgPQyKnH)!~yjEm2L z{ePEnhlc;bc(R7~>7o3Yq2X6BUasM{GG43UFEd`J;a@S{py9D+sCvcc!Tw*wxI@F| zFrKX8_ei{}Sj+1bZqwwomGNgZ{5!^<)$rIe$)B#`ISn7e_&N=r!T9qUehcF-X!tXX zzo_B+8DFpAzcc=lhM(P2`ME*ECoul9hLA4_{AD@P|>!t8r8s3lbJ&c?C`%K2`HT+)2_cI`p4PU{yU&FUDeuVJ|_UC)Xe_-77)6rY;H)%ZAFn&zKA7otIsffEU|9**Mzy4eS z=J~4QImD0i2ICI4pTKynhF39Or{Qlf-k{;_&L#dh5v!dWFJU}R!*6BWq2X^a-bcgR zou}e+E4SB-=TOF%Y4|M0y&Arf@!K@~O~$JUE_I$@dq?~596ye{4>UD8IR_Aqt91< zuF>qzV|*>+rk__azD~2hjq&F-d^_VWX!tS4U)1pPE>Qlg*YK+te@VmdV|;^#?`8aD z4Ug)l_%~|!5XN88@EpcBY4|;izpCLMGrn2Fd-PZJZqe||7=KN}moUCn!=GckPQyQA ze4B=M!k6V}-P^9=7c&03hF{P44#v%K_z2@WHT)gMcWFG0jK8VjZ3ifS-qP@15|0xJ zyVbxn$LBaUFLKC zxCtsx-&3P&J=>d~gX35(FWhd1e9r%t^rxHfyvT+&5$bb+1JeF9>+@LC{0E7jD)i4I z{{@^r&Dp%tv{bS~0)FQj?d?^h@|X_t8qD~Gm7Hh1j`1l43cxZhuQrMJZYihjqNl`T z#n)K>=#sx%4A~nv)%!8?jFws1Wx`JU#}1jtN087>|cz&_MdAf*yF)lc6X1(PI6#0{?*}o6mtc$CZ zB6_H@-&GpS?_%8JRrn=b$Pe7Ciy4t^2?-~X_7x-CNMa=J^#4=G1 zaB5d6&o46$zcZdxq6}SZpMrrJ%Fis|#IuUqYtG*tjQbhCoOwi zo-flFzX7=E14B~0%l7*G8Ybt3-BP751>ObcpkE!zdjtJ@^>mBj$3yx31vSH0Vh8f@B)_4{3Bsce%`iJ0azB~Rm=F~a+N<*39&Z}|CeF# z4D>7U@8^!iaaUe9Gyd#NDsTGiV?2)SH?w`maf;`U#R@R}d<3{zmQAHt9|nIb4Bo)} zO&kZ4bJBQKZ`6FnZsHq&n`wK!KDNJs*XLfWZ0A%wW4M0@GF}8c6i*%7AL4~PjqMLI z?pve)b06$;vEpyfI9DUyW&GxwmA%=IDOiw0)q4$a>aRaJ{=K>0TY=O3UAs>K5scr@ z_WiVV<~ZZSxPOtA*UMO7X&kQS`GVz0Ui6F0G`~ax11zFals|26P(V+{#{+k8+Ah+8 zhiX?Y^X$D&S)a^>3K_q>Tmerp9(AdzS6{dDfm0lkdHspyK-|psllWX0&pgin59QBm zY`>vQ8Q#nG-6w>$cLAqo_4A$=c&L4R3vk*uhwWAb z4(5rQsCbIY6=04Z5Ad_lGV}YPSF-(HwqM9`FmW*{bi3k!lb`y&S-|*bOBJyh!`FdR z{GZmw;eNJ1xj@-p$o|A$rueVpI3ry0x|Z=zdECY`{xook!+efIEaOI+;^}*%0Ir*QAZ{&V4=TR082Gm}CU)ad_F`mEYGk=@Os=W;#D8Rw^slbWnOP&{Id~RXf zd=IA?hg#sK4O2+5f$cYY6>9cxmvrXW_LnrqALV*YKksII4#&q_f6khsc=be^(vaG|}@K2}uV97>mbR|;ff7@m<=D}VHJ`$LQ` z*Wz%5@%=m=5@anx^t?vJ=NTPc!~*g#tD*KJ8k?v!B=P0gRUeH#r%S;#szT=Qf3!HoY?y zkN&)37USc2JeKt!Z?@%m;AWbsrFe_^ z>poCuG%Md{o;!Kond{r6?9e<9gu%Z9PJTu*&nV{4%u)Cp?yoe)-viz?vQw+W*GFu> zf!D)awvTj&_GdD1syB76GQ5}V-(XxH|NmlKe{R+b6@`kM2RQLh)7JA9VeFp*PUi~o zp>o8*{_J3$>v)`_nesYkmg3j<*^7XO@@EBbx_|FcugaU_`Pj@N#eEzjLGl)dKKQ4 z?W3@75x@StC6V!!%%95kmoYw-;~B&F6ToSl)Up5gkVanXfzx;}fA5do5`a%?2kDP zJ79bekN%vT;zGDS@19~@zfb&uaebUeW4;lOe*TOHZu-nkm0}CtXTp;si!PAH$EGG z>7c|tD-VAz0dL+f$jrvy6mXZqGN&kWR({b;`lBd#+kR|vm*F&6!^mm@d=?V zGVuo)@-pS056E=mZ++k|G|(TR$jm7#C|H0Zwp=Ft1&kn5{80#3djEo~yu$eG;$o3G zE!~rvIJ`Iyf23z#Ua311f0IM~;R2-^mYJDXL?prrySue^HxqfGAk;*jl-_(^5nE5)1LCyb~vk&180Ol>J#(<&~SkR zmytLzfanXCK}d6Ki3=C5s4fhBqWS)}gkOYX%c#t5tFpq&|G(vb|NFQ1zxQ^_C0&ES zUcD+)K~`;yTOH6fd{Z_U?i#=a2xDF~zxsh+hrnZvEzgFDDpHCKa zvkk7UN$4V`NCqgA(cHORt`?ZjvCT0`i;*{;syUYmhl^5h9ZY(81m|XiyIj4=RIi%= zcOtqmS_)AS#heD@9(9$Pw!}?i@pV=OAl-B{Tkcl7c#btB=z8PcFn&=~e5vKD)dmHp zle#DYw+S3*sM3}z%)fO)uWPcjs~Il%VXNgl0k*_1ZbE@6lgyBC-t9VpPfY>kZpWh} zFj?v4X#9HPUd7W-R(iPsU@Fua*Lp2ep{T5c4wOX)E=Q9TK-sj-XnCDboP^r06DzIw zl|qcTqj)K1ROKje)8j2JeM;>wl)O(n7zqMu^O*mi|+p3|*pn`E4_UXRu6^>&vz(XzBKT$_`x zHlSsxt*Z4cH0a4hfdSzYUr?ikt0hUtZBtl7#}rM>h*_>e04SCeJUvHkY=Qqq*Dm8X z+-=AZ2NR`odrDy&&P*8#E9qn$Kz_DXtJgc&=XApu1hi;bB0Oc;<4g*ovqE^~ZjjWb zM>WEwL-{FSTNr0C@GUAgLnB%SSe)Pz>TVgBm!d3g4+g6Y4ysv%LLI%GEq05x(5sH} z-F*s#FseR=EpDUjxd@T;eY-gh&j23ii<%q+gAG;$HA4L{h^ftX$Z)(ddo=z zt<^i7?w~%v<)ZAuddcjxR-9-ER`1RzgKp1mq}F2U&9YwLa#Y7YwOjV!jt%7Z$fnm; z*7~%+bT%E&(D399wdqJj4XI;6q%_lUObw^oqrpP#G;OF%eW=<)unxEl_s9#m;*P9+x3?HDob-q8t$n*V1mz6tJKM<#C0l?-bsZ7MzQ)CC}il!&+4tAl};CZ zD0*GT<})X)mBvYsi8)^;PhztiMA`FY3Z4l9= zoq#%) z(5i3&ok|r&ZpgyAlX1YU&aj;Vs@e>32|M#51-d2)vX`?d2vv!IP7WJ`VLy%kR4<1e z=$e$W6;q+ivHGWeRLj_OV^>r9oO3tZjGfb{$vCN1D${ z$QXcZblbfaI+hGt1LSFU@FWFlaKWHWQ_3>Xm29FIjKEG)#mO7s!%ZZmw3K5w(WNMj^#{x1{`Ve(8C^cZTQem7U&a- zg5Qa#rtW5;8%%g1a`2NISJK_AZew6U{WdZcATm-+M0{-I{EU`k_X*FsiH_a*jIc*@ zXrTdUogJ}JG@1&flqQpHt5iWi6{$*;289HiwY$NR3I5+wW)uoy*9aX3yPE-DTb`ki zN&>!l5>Y=wtB9*oa!mqesTP5Wr3EYvV;MeE33}goCK6juZ?{;fK=Rkf8?otX>m{`y z4S$CKaT5Nq)`O_}F(6}vw~~sWs+lSXAY`b)ETM*8t8P;yM3}Bw>WMw$X8 zQcDOULmeeUj7_(5-g*g{-sxD7RZVVI!x9cl_`tL`szL?E#Yh9dW=+L^n)N}Q^{rmt za!@`GZW4b|!ebGMfsjGSBz!HuF_1^eyp{e{aWp{|nffM_GdP}XT1J{KCS*$ti*JW7r+ub;4v{fn&`gH_QK?>ID zHV_xfhG&-dco{J&J!(5*ny4xxO1VB9bld1pgSG5uR?9|A)L}{8skZB#A$oE8lJ)9+ zAlkh;buAlqagQxx(b@3K+9_hS%sM;6DiwGO-hVpf&9VT*P-Vp^Ita~Rc66V2K*}d} zFNqXp$$HUf4IT768$!7RqV=tY#bd~9V7Jk!db`J(c-kF4Q@VWwiIZwA7g31Q9rhbm z&JxUujg^c#+<&Ie(WFXEQ;b%2`15{u*vnqNaba0K*1{Sedjbyb_FpD8r^vyf$TC5f zotK@)lYY0;9XhNxJZ;&|6V~oF!$B`Ck#uOoEF^ydKBC0Qn~LgRvyxe zc;5XsDlZScx#7K`nj40NYS`oRmVMfI@q(3($_3ge5U4|O04I!TG%(7rrO!AQAnBd^ z24-nr7XYqi*Sif*>_H8v4&)fIOYEyyGPGQ=kC|~)qN?_L0Su51I|Sh1GD^Io z-2-+n7fBtjdgF3JIRCa-k_2R;{Z2-Q6Zqw5`ZOU zueR)L;awpZuyr^);OnX^6wQ>(g-Y|Z)v`)8K^)`_Q<^{0MVFZFlyFQR{e2-s$f~M7 zePZNk3yqxmhiRY&bc(J`VH<+%2%tXUyi85b0FVz?>5)ppUu1il8i}OPX#GWB7G#=!jX?J%;z?wMt4zVL$ezuLe(uy`#OcQ+r6(zT1N!D=_H6)+5iKELP2 z`}0c9H(}{vFZ4FZtz;~4Bf;5?DI(oi64x2EbF^355OC=m?I!m)bjB_%-8cI#I>1^Nh;qE;E!#~w01ie3j zRfPFQ>O?hQ9L;-$Z4)@^gNm;xPd5{@6 z;^GC709ZPEW7a}s_ojgO!)CSd8_DfFnEG>sS1@NH<1J7#MhPktzRU``(H$+2^orSJ zIW?9Pz;ViC`(wgcRs_utSK>t|$<%f_QZR|;qwb3AXQpy&6WoZh?ncDaSgM4!>eVCm zXZk*oalFGJ5i^gU0D+JjIr_Ff86z1e&m`Y>6m+JTNDYKU6qlZ$K4jcEbIuqAVqjQ? zMzrIs=38r~)1BCne=A{S04qq{_lU_Q3ij7P3U`!8wI9vA5&R{w{q}Gb+lfi57@9U4!CMkyg?2q-7e=$iJ-Zr z!`zPS6ymIRh-|6w0|Ik?$X6b9@-TL8kD|SB;K`)n(d3|82NSGGHo!4!i=P< zPXo;Z)CFc<6GcVcFp5z&xsbdfgdd)#F-#eXsNWQ}q>+cP)%q@GyD%NWDG%m1-YI60 zgJms0R2f4wJ)RLArbO@K!x=EFOWc%sPJ7Z@tLr396|4HNXo8u-Ste)fN4l`rNGK8Z zAC_LAMCa}@#0iM9^wf+@j}PbT4Pxp^Q>KwPW$u&JB3yl?>B~5DDXgL5M7KUmMh@1U zFw4Vq1#jv;cV5CZOuLVjkQ>Vqi%O1X;&=#c5n{6$-7@miFtpd+G-PHXuKmFAKlnRB z6Us0qEjVamj_TK4%7-vhw3VX?cQG}c`+mz}f;mDlTNCkH6-|i^+74)$F_(OT^{W0w z2=x>-l9$bds$j1M&cii3gUYGlupZ5c_ zhR`al;!}_)B(31%&;(2K%X4+rw}r_9fmD$m>l8ANGLec2dPQoN{WT}2Qli?Q7|DXmqbZ%|8!60f>yQV13moO(I2KCv5!oy_G!G2N zBjzAXxcaKFbSdgU^bMGsx>x-^6Yhdymfjcmc_^ghef6 zKY}0*7P4r34l~iE%Jw9(VkaCH`qlqhzXUOZLb^J0NlS9r!Sl%53J!fzEqOxfUZl@EY*qfO*l_F2F zJErxWvQf3ztKNbyVWn9(#Y79`1?Nw}u~fY8&@U3pGBxC`1`cedwVCO3&;K;vg!Q?CV0{`gEz7_d1KmVL=J`w9#T}~&=eD?EVL*ue*1FPt#E2894uOqr*$j7 zGS3&Tuv?C+$hf#(m5x1QYV|Jys!Hc?0e}YbaRWOIM0zxr4PRoEOC=IPBE<|Z$tQ&mEd@o{? zgfMB6pt;5~_+gbq0xMsy$t&yfgVM;b$O!lEloyqRQ z?mYIhuok_Gm}OgKQbW?*l{&b@V}UaXu;(cl$06N?eqo;pR!GEMH67`0;^b1E{ZHpa z<3PzfSIJ{!carI_{_~2nZsee2_8qMK@Ldyz!hWFj$C?pi&FjcB|h zGs1X!IL`=QdmGv>h)IG;DrR_woxFM4oMtnnr!<5mMxItsPl;mas^gVmv_~%PM#b7i zxEH8;;73qwZ&y%wioym#7=|=l+)Kl+{K96CpdO>0jnVrWaU{=5-XZqYj!eD{Rs3xC zU|$i-qfFJ_S>IVXERZNH24oCM1!)&ATT?SRgS8FmqL!VVC}&Mwt*cE!RSeQkb=7N?Y-r6giumk>B&_NuJhT;nLiJ;FH@ ztMtd%Jhcw0LmDLGn9iFJTU;J6NWhK3uSiwI5}Y=;OM*Mzr~{6VSdr5+O^}V#yNFo8 z&#>%AsYcKr++GXp@xoGIKdxrZ#{NP+t!R+8z^K9cV?&$(#1HRiTLT=~g7co5Q?EyM zx4szkJ~>he*%yI5*fHj;5!|kE7|E38#eOH0PHW>nTruuu;fNDjw>J0|E|7=k&*hxG zSjON(xGyXB3ih5K{N>2Fq?BATASLs_Pgsc=y~Hs3!TQ-gu*{Px^HO&^$7QP_BOpqR zP{^AV^-#kqS4^FF0v{4xAu2^clxDM}u6#Pe}!d_rLm)Q~iN)M}+ve&Ki=?n=uSRtlK< zy4fCMxf4i@(ITKCbfNkD2#2a1;qvH%lp`^m;jTuc#O0LpJh@jLNW#~C56FmNT#n^7A37M!*K#Gk85kY7N3mz@#a=|P zF*TbV=scSp{Ql4`r9Xhm)8C6{q?v_%ezPd;Ub1#^pn8)%uiFDMdqsv0#k8ozKv1A? zw7p$;qf0!!jd)JgJASIqx^RSBjol;MqJD&P^Y}4r+E;YR;^f2GM1F;If)DAYdk#Jw zZKs8!$?XzVh^My^zsU2I10NWE!##T=LXhv)bFXm3*PM><_UL+rkMssN?-h=)j)9MK zH5#B-JR|SOoyyDZrxTQ>KB1cNn7MDqE>3SnA92tXFBKQYWABkDL%pYRs2M1dH+i&} zp)OH6jv^==(V{WVr7OJm>o-xtkKymfWl7)oK)g}UZ_4l0gJAX7xA5Vo@u%>QCBAwV zbzr>zTIh2XpLP7H#8=PX4#EFK=(8Qd{}YL?o{vKCVf^R#{YPJXu~O~-p2Szr#}fai z0-D&rUB8}jTo{uEFdMG^g{2qSL@!v^&_57}+ zUmX5Fgz!K9T>+_{y|Ka+PgSq__FwQuum3;)Sp1@%Kd%7gGfcmKmH2A>3m;2B`TV{b zF!}W(`Baa8#~Z3&;s4Vo;urNS%kfw6;rjn0g#Yd@1*Cc^K34dl<`n)bg#Y&M1*Cd@ z5Tbv${{IE|FW^ssef9%^|JnD&Q}Ma@wC7*djt|iJuWR`4B>p>zui)bFzYct&pQ`_J ziT}C8|E@xm&v1F)1TxJXh5yOF3BXVOQ9K{ZfuZ?NFNLr8=PX)xML|pClSbI-zi?aS= z=zE3#Vd#76E4}n*sEhpf>8Jcr_?Q$NUcZIEUz2U6&x$WdysNg;_v-cekHovbApxzu YRK4n}U&5Ox{J+`>$deF4=wspk0k*e1TL1t6 literal 97520 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