From 9c7145ef99c770374134d7cdf2b1b0b412f55959 Mon Sep 17 00:00:00 2001 From: cbb <2625274797@qq.com> Date: Thu, 1 Jan 2026 01:39:19 +0800 Subject: [PATCH] =?UTF-8?q?feat(ota):=20=E5=AE=9E=E7=8E=B0=E5=AE=89?= =?UTF-8?q?=E5=85=A8OTA=E6=9B=B4=E6=96=B0=E5=8D=8F=E8=AE=AE=E6=94=AF?= =?UTF-8?q?=E6=8C=81AES=E5=8A=A0=E5=AF=86=E5=92=8CCRC=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加AES128加密解密功能支持安全固件传输 - 实现基于随机数握手的安全会话密钥协商机制 - 集成CRC32带密钥校验确保数据完整性 - 重构OTA状态机支持握手、数据传输和验证流程 - 添加CANFD数据长度规范处理和安全跳转逻辑 - 移除调试打印语句优化性能 refactor(can): 优化CANFD发送和OTA确认处理逻辑 - 重构CANFD_AsyncSend函数支持规范数据长度 - 重命名sendACK为sendDATA_ACK并添加重载函数 - 修复数据长度处理和缓冲区填充逻辑 - 优化CAN消息发送的数据复制和验证流程 - 移除未使用的联合体类型定义 chore(project): 添加AES加密模块和系统初始化配置 - 在项目配置中添加AES128加密解密文件 - 在main.cpp中初始化CRC外设模块 - 添加安全十六进制打印调试函数 - 集成AES加密库到OTA处理流程中 - 优化系统时钟初始化配置 --- .gitignore | 82 + Robot_V2/Robot_V2.cproject.yml | 2 + Robot_V2/device/Can.cpp | 74 +- Robot_V2/device/Can.h | 19 +- Robot_V2/main.cpp | 124 +- Robot_V2/sys/OTA.cpp | 419 +++- Robot_V2/sys/OTA.h | 41 +- Robot_V2/sys/aes128.cpp | 375 ++++ Robot_V2/sys/aes128.h | 39 + Robot_V2/sys/config.h | 29 +- Robot_V2/sys/flash.cpp | 3 - Robot_V2/sys/initial.h | 3 +- .../Robot_V2.Release+GD32C103CB.cbuild.yml | 4 + out/Robot_V2/GD32C103CB/Release/Robot_V2.axf | Bin 192220 -> 211752 bytes .../GD32C103CB/Release/Robot_V2.axf.map | 305 +-- out/Robot_V2/GD32C103CB/Release/Robot_V2.hex | 1764 ++++++++++------- .../GD32C103CB/Release/compile_commands.json | 6 + tmp/.ninja_log | 45 +- tmp/1/.ninja_deps | Bin 175184 -> 254060 bytes tmp/1/.ninja_log | 103 +- tmp/1/CMakeCache.txt | 2 - .../G_/Robot_v2/BOOT/Robot_V2/main.o | Bin 10728 -> 19912 bytes .../G_/Robot_v2/BOOT/Robot_V2/device/Can.o | Bin 37836 -> 38728 bytes .../G_/Robot_v2/BOOT/Robot_V2/sys/OTA.o | Bin 23712 -> 35264 bytes .../G_/Robot_v2/BOOT/Robot_V2/sys/flash.o | Bin 31528 -> 31592 bytes tmp/1/build.ninja | 63 +- tmp/1/compile_commands.json | 6 + tmp/Robot_V2.Release+GD32C103CB/groups.cmake | 2 + 28 files changed, 2470 insertions(+), 1040 deletions(-) create mode 100644 .gitignore create mode 100644 Robot_V2/sys/aes128.cpp create mode 100644 Robot_V2/sys/aes128.h diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f298f75 --- /dev/null +++ b/.gitignore @@ -0,0 +1,82 @@ +# Prerequisites +*.d + +# Object files +*.o +*.ko +*.obj +*.elf + +# Linker output +*.ilk +*.map +*.exp + +# Precompiled Headers +*.gch +*.pch + +# Libraries +*.lib +*.a +*.la +*.lo + +# Shared objects (inc. Windows DLLs) +*.dll +*.so +*.so.* +*.dylib + +# Executables +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex + +# Debug files +*.dSYM/ +*.su +*.idb +*.pdb + +# Kernel Module Compile Results +*.mod* +*.cmd +.tmp_versions/ +modules.order +Module.symvers +Mkfile.old +dkms.conf + +# Clangd +.clangd + +# uv2csolution generated log file +uv2csolution.log + +# CMSIS Solution files and folders not to be tracked +# default directory of build artifacts +**/out +# directory containing intermediate files to be regenerated +**/tmp + +# Update config files must be merged before commit +*.update@* + +# cbuild output files +*.cbuild.yml +*.cbuild-idx.yml +*.cbuild-run.yml +*.cbuild-set.yml + +# .vscode JSON and debug adapter files generated by CMSIS Solution +.vscode/launch.json +.vscode/tasks.json +.vscode/settings.json +.cmd.jlink + +# legacy intermediate project file +*.cprj diff --git a/Robot_V2/Robot_V2.cproject.yml b/Robot_V2/Robot_V2.cproject.yml index cf2488b..1d893f6 100644 --- a/Robot_V2/Robot_V2.cproject.yml +++ b/Robot_V2/Robot_V2.cproject.yml @@ -4,6 +4,8 @@ project: files: - file: main.h - file: main.cpp + - file: sys/aes128.h + - file: sys/aes128.cpp - group: sys files: - file: sys/systick.cpp diff --git a/Robot_V2/device/Can.cpp b/Robot_V2/device/Can.cpp index 1e29934..a34feb4 100644 --- a/Robot_V2/device/Can.cpp +++ b/Robot_V2/device/Can.cpp @@ -209,15 +209,14 @@ void CAN_transmiter::communication_check() { // CAN0 接收数据标志 if (SET == can0_receive_flag) { - printf("\r\n can0 %X receive data:", receive_message.rx_efid); - for (int i = 0; i < receive_message.rx_dlen; i++) { - printf(" %02x", receive_message.rx_data[i]); - } - if (receive_message.rx_efid == CANFD_OTA_DATA_ID) { - ota.handleOTAMessage(receive_message.rx_efid, - receive_message.rx_data, - receive_message.rx_dlen); - } else if (receive_message.rx_efid == CANFD_OTA_REQ_ID) { + // printf("can0 %X receive data,length%d:", receive_message.rx_efid, + // receive_message.rx_dlen); + // for (int i = 0; i < receive_message.rx_dlen; i++) { + // printf(" 0x%02x", receive_message.rx_data[i]); + // } + // printf("\n"); + if (receive_message.rx_efid == CANFD_OTA_DATA_ID or + receive_message.rx_efid == CANFD_OTA_REQ_ID) { ota.handleOTAMessage(receive_message.rx_efid, receive_message.rx_data, receive_message.rx_dlen); @@ -228,11 +227,25 @@ void CAN_transmiter::communication_check() { } } -u8 CAN_transmiter::sendACK(u32 CANFD_OTA_ACK_ID, u32 packet_num) { - u32_union_t pack_data; - pack_data.u = packet_num; +u8 CAN_transmiter::sendDATA_ACK(u32 packet_num, u8 *data) { // 握手的时候 + memset(transmit_data, 0, sizeof(transmit_data)); + transmit_data[0] = 0xBA; + transmit_data[1] = 0xC0; + // 修复原始代码中不完整的循环 + for (int i = 2; i < 6; i++) { + transmit_data[i] = data[i-2]; + } + + return CANFD_AsyncSend(CANFD_OTA_ACK_ID, 6, transmit_data); +} + +u8 CAN_transmiter::sendDATA_ACK(u32 packet_num, + bool if_success) { // 发送数据的时候 memset(transmit_data, 0, 4); - pack_u32_to_bytes(transmit_data, 0, pack_data); + if (if_success) { + transmit_data[0] = 0x01; + transmit_data[1] = 0x00; + } return CANFD_AsyncSend(CANFD_OTA_ACK_ID, 4, transmit_data); } @@ -312,6 +325,7 @@ void DMA0_Channel5_IRQHandler(void) { * @param data CAN消息数据 */ u8 CAN_transmiter::CANFD_AsyncSend(u32 id, u8 length, u8 *data) { + u8 valid_length = length; // 检查CANFD模式是否启用 if (!(CAN_CTL(CAN0) & CAN_CTL_DFZ)) { printf("CANFD mode not enabled\r\n"); @@ -321,30 +335,48 @@ u8 CAN_transmiter::CANFD_AsyncSend(u32 id, u8 length, u8 *data) { // 检查数据指针是否有效 if (data == nullptr) { printf("Invalid data pointer\r\n"); - return 0; } // 检查数据长度是否符合CANFD规范 - if (length > 64) { - printf("CANFD data length exceeds maximum of 64 bytes\r\n"); - return 0; + if (length > 8) { + if (length > 8 and length < 13) { + valid_length = 12; + } else if (length > 12 and length < 17) { + valid_length = 16; + } else if (length > 16 and length < 21) { + valid_length = 20; + } else if (length > 20 and length < 24) { + valid_length = 24; + } else if (length > 28 and length < 33) { + valid_length = 32; + } else if (length > 32 and length < 49) { + valid_length = 48; + } else if (length > 48 and length < 65) { + valid_length = 64; + } else { + printf("CANFD data length error\r\n"); + return 0; + } } /* 配置发送消息参数 */ transmit_message.tx_ft = CAN_FT_DATA; // 数据帧 transmit_message.tx_ff = CAN_FF_EXTENDED; // 扩展帧格式 transmit_message.tx_efid = id; // 扩展帧ID - transmit_message.tx_dlen = length; // 设置数据长度 + transmit_message.tx_dlen = valid_length; // 设置数据长度 // 设置CANFD特定参数 transmit_message.fd_flag = CAN_FDF_FDFRAME; // CANFD帧格式 transmit_message.fd_brs = ENABLE; // 使能比特率切换 transmit_message.fd_esi = DISABLE; // 错误状态指示 - // 复制数据到发送缓冲区 - for (int i = 0; i < length && i < 64; i++) { - transmit_message.tx_data[i] = *(data + i); + for (int i = 0; i < valid_length; i++) { + if (i < length) { + transmit_message.tx_data[i] = *(data + i); + } else { + transmit_message.tx_data[i] = 0; + } } // 自动选择空闲mailbox发送消息 diff --git a/Robot_V2/device/Can.h b/Robot_V2/device/Can.h index 9c20dd0..05d14f8 100644 --- a/Robot_V2/device/Can.h +++ b/Robot_V2/device/Can.h @@ -9,12 +9,9 @@ extern "C" { #include "gd32c10x_can.h" #include "stdint.h" #include +#include "sys/config.h" + -// 定义一个联合体类型用于float和byte数组之间的转换 -typedef union { - u32 u; - u8 b[4]; -} u32_union_t; // 添加辅助函数用于将u16类型数据打包到u8数组中 static inline void pack_u16_to_bytes(u8 *buffer, u16 offset, u16 value) { @@ -43,15 +40,6 @@ static inline u16 unpack_bytes_to_u16(u8 *buffer, u16 offset) { return value; } -// 添加辅助函数用于从u8数组中解包float类型数据 -static inline u32_union_t unpack_bytes_to_float(u8 *buffer, u16 offset) { - u32_union_t u32_union; - u32_union.b[0] = buffer[offset]; - u32_union.b[1] = buffer[offset + 1]; - u32_union.b[2] = buffer[offset + 2]; - u32_union.b[3] = buffer[offset + 3]; - return u32_union; -} u8 can_gpio_init(void); // CAN引脚初始化 void canfd_config(void); // CANFD初始化 @@ -80,7 +68,8 @@ class CAN_transmiter { void communication_check(); // 通信检查 u8 CANFD_AsyncSend(u32 ID, u8 length, u8 *data); // CANFD异步发送(使用DMA) - u8 sendACK(u32 CANFD_OTA_ACK_ID, u32 packet_num); + u8 sendDATA_ACK(u32 packet_num, bool if_success); + u8 sendDATA_ACK(u32 packet_num, u8* data); // 恢复原函数签名 }; #ifdef __cplusplus diff --git a/Robot_V2/main.cpp b/Robot_V2/main.cpp index c69d89b..af6c605 100644 --- a/Robot_V2/main.cpp +++ b/Robot_V2/main.cpp @@ -1,16 +1,21 @@ #include "main.h" #include "Can.h" +#include "aes128.h" #include "initial.h" #include "sys/systick.h" #include + extern CAN_transmiter CAN0_transmiter; // CAN初始化 BootloaderSystem sys; extern OTAHandler ota; + void BootloaderSystem::initHardware() { - systick_config(); // 系统时钟初始化 - SystemCoreClockUpdate(); // 更新系统时钟变量 - USART0_init(); // 调试串口初始化 + systick_config(); // 系统时钟初始化 + USART0_init(); // 调试串口初始化 + + rcu_periph_clock_enable(RCU_CRC); // 使能CRC外设时钟 + crc_deinit(); // 初始化CRC模块 CAN0_transmiter.init(); } void BootloaderSystem::run() { @@ -26,8 +31,121 @@ void BootloaderSystem::run() { ota.jumpToApplication(); } } + +// 发送单个字节到串口 (用于调试) +void uart_send_byte(uint8_t data) { + // 实际的串口发送代码 + while (RESET == usart_flag_get(USART0, USART_FLAG_TBE)) + ; + usart_data_transmit(USART0, data); +} + +// 以十六进制格式打印数据 +// 安全的十六进制打印函数,不使用sprintf,不使用大缓冲区 +void safe_print_hex(const char *prefix, const uint8_t *data, size_t length) { + // 1. 先打印前缀 + const char *p = prefix; + while (*p) { + while (RESET == usart_flag_get(USART0, USART_FLAG_TBE)) + ; + usart_data_transmit(USART0, *p++); + } + + while (RESET == usart_flag_get(USART0, USART_FLAG_TBE)) + ; + usart_data_transmit(USART0, ':'); + while (RESET == usart_flag_get(USART0, USART_FLAG_TBE)) + ; + usart_data_transmit(USART0, ' '); + + // 2. 逐字节打印数据,每16字节换行 + for (size_t i = 0; i < length; i++) { + uint8_t byte = data[i]; + + // 打印高4位 + uint8_t high = (byte >> 4) & 0x0F; + char high_char = (high < 10) ? ('0' + high) : ('A' + high - 10); + while (RESET == usart_flag_get(USART0, USART_FLAG_TBE)) + ; + usart_data_transmit(USART0, high_char); + + // 打印低4位 + uint8_t low = byte & 0x0F; + char low_char = (low < 10) ? ('0' + low) : ('A' + low - 10); + while (RESET == usart_flag_get(USART0, USART_FLAG_TBE)) + ; + usart_data_transmit(USART0, low_char); + + // 打印空格 + while (RESET == usart_flag_get(USART0, USART_FLAG_TBE)) + ; + usart_data_transmit(USART0, ' '); + + // 每16字节换行 + if ((i + 1) % 16 == 0 && i < length - 1) { + // 换行 + while (RESET == usart_flag_get(USART0, USART_FLAG_TBE)) + ; + usart_data_transmit(USART0, '\r'); + while (RESET == usart_flag_get(USART0, USART_FLAG_TBE)) + ; + usart_data_transmit(USART0, '\n'); + + // 缩进(4个空格) + for (int j = 0; j < 4; j++) { + while (RESET == usart_flag_get(USART0, USART_FLAG_TBE)) + ; + usart_data_transmit(USART0, ' '); + } + } + } + + // 3. 打印换行 + while (RESET == usart_flag_get(USART0, USART_FLAG_TBE)) + ; + usart_data_transmit(USART0, '\r'); + while (RESET == usart_flag_get(USART0, USART_FLAG_TBE)) + ; + usart_data_transmit(USART0, '\n'); +} + +void test_decrypt() { + printf("AES Encryption Verification Starting...\r\n"); + + // 定义48字节测试数据 + uint8_t plaintext[48] = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, + 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, + 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F}; + + // 定义128位密钥 (16字节) + uint8_t key[16] = {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, + 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c}; + + // 创建AES上下文 + aes128_context ctx; + + // 设置密钥 + aes128_set_key(&ctx, key); + + // 打印原始数据 + safe_print_hex("Original Data", plaintext, 48); + + uint8_t ciphertext[48]; + uint8_t decrypted[48]; + + // 加密 + aes128_ecb_encrypt_48bytes(&ctx, plaintext, ciphertext); + safe_print_hex("Encrypted Data", ciphertext, 48); + + // 解密 + aes128_ecb_decrypt_48bytes(&ctx, ciphertext, decrypted); + safe_print_hex("Decrypted Data", decrypted, 48); +} int main(void) { sys.initHardware(); + // test_decrypt(); sys.run(); while (1) diff --git a/Robot_V2/sys/OTA.cpp b/Robot_V2/sys/OTA.cpp index f1989d5..8baa39b 100644 --- a/Robot_V2/sys/OTA.cpp +++ b/Robot_V2/sys/OTA.cpp @@ -1,4 +1,8 @@ #include "OTA.h" +#include "Can.h" +#include "aes128.h" +#include "config.h" +#include "gd32c10x.h" // 主头文件,包含了gd32c10x_crc.h的内容 #include "gd32c10x_fmc.h" #include "systick.h" #include @@ -12,17 +16,20 @@ OTAHandler ota; extern "C" { void canfd_rx_irq_handler(void); } -#define DEBUG_OTA 1 +static inline uint32_t extract_u32_from_4bytes(const uint8_t *array) { + return ((uint32_t)array[3] << 24) | ((uint32_t)array[2] << 16) | + ((uint32_t)array[1] << 8) | (uint32_t)array[0]; +} void OTAHandler::init() {} void OTAHandler::process() { - if (!ota_active) { + if (ota_state == OTA_STATE_IDLE) { ota_time = 0; // 重置计时器 - static u8 zero[1] = {ota_active}; + static u8 zero[1] = {0}; CAN0_transmiter.CANFD_AsyncSend(CANFD_OTA_WAIT_ID, 0, zero); -#ifdef DEBUG_OTA - printf("wait OTA%d\r\n", ota_active); +#if DEBUG_OTA + printf("OTA status:%d\r\n", ota_state); #endif delay_1ms(10); return; @@ -32,9 +39,11 @@ void OTAHandler::process() { } // 检查是否超时(例如:10秒无数据则退出OTA模式) - if (ota_time > 10000) { // 10秒超时(10000 x 1ms) + if (ota_time > OTA_TIMEOUT) { // 10秒超时(10000 x 1ms) ota_time = 0; - ota_active = false; + ota_state = OTA_STATE_IDLE; + ota_error = OTA_ERROR_TIMEOUT; + send_error_frame(OTA_ERROR_TIMEOUT); // 验证失败 } } @@ -50,39 +59,40 @@ bool OTAHandler::validateApplication() { } void OTAHandler::jumpToApplication() { - if (!validateApplication()) return; - - // 1. 关闭所有中断 - __disable_irq(); - for (int i = 0; i < 8; i++) { - NVIC->ICER[i] = 0xFFFFFFFF; - } - - // 2. 重置外设(特别是CAN,防止冲突) - can_deinit(CAN0); - - // 3. 重置系统时钟到默认状态 - rcu_system_clock_source_config(RCU_CKSYSSRC_IRC8M); - - // 4. 关闭一些关键外设时钟 - rcu_periph_clock_disable(RCU_GPIOA); - rcu_periph_clock_disable(RCU_GPIOB); - rcu_periph_clock_disable(RCU_GPIOC); - rcu_periph_clock_disable(RCU_USART0); - rcu_periph_clock_disable(RCU_CAN0); - rcu_periph_clock_disable(RCU_TIMER0); - rcu_periph_clock_disable(RCU_DMA0); - - // 5. 设置MSP并跳转 - uint32_t msp_value = *(__IO uint32_t*)APP_START_ADDR; - __set_MSP(msp_value); - - uint32_t reset_handler = *(__IO uint32_t*)(APP_START_ADDR + 4); - typedef void (*AppEntryFunc)(void); - AppEntryFunc app_entry = (AppEntryFunc)reset_handler; - - // 6. 跳转 - app_entry(); + if (!validateApplication()) + return; + + // 1. 关闭所有中断 + __disable_irq(); + for (int i = 0; i < 8; i++) { + NVIC->ICER[i] = 0xFFFFFFFF; + } + + // 2. 重置外设(特别是CAN,防止冲突) + can_deinit(CAN0); + + // 3. 重置系统时钟到默认状态 + rcu_system_clock_source_config(RCU_CKSYSSRC_IRC8M); + + // 4. 关闭一些关键外设时钟 + rcu_periph_clock_disable(RCU_GPIOA); + rcu_periph_clock_disable(RCU_GPIOB); + rcu_periph_clock_disable(RCU_GPIOC); + rcu_periph_clock_disable(RCU_USART0); + rcu_periph_clock_disable(RCU_CAN0); + rcu_periph_clock_disable(RCU_TIMER0); + rcu_periph_clock_disable(RCU_DMA0); + + // 5. 设置MSP并跳转 + uint32_t msp_value = *(__IO uint32_t *)APP_START_ADDR; + __set_MSP(msp_value); + + uint32_t reset_handler = *(__IO uint32_t *)(APP_START_ADDR + 4); + typedef void (*AppEntryFunc)(void); + AppEntryFunc app_entry = (AppEntryFunc)reset_handler; + + // 6. 跳转 + app_entry(); } void OTAHandler::eraseApplicationArea() { @@ -105,52 +115,303 @@ void OTAHandler::writeApplicationData(u32 offset, u8 *data, u32 size) { memcpy(&word, &data[i], 4); fmc_word_program(write_addr + i, word); } - fmc_lock(); } void OTAHandler::handleOTAMessage(u32 id, u8 *data, u8 len) { - if (id == CANFD_OTA_REQ_ID) { -#ifdef DEBUG_OTA - printf("req OTA\r\n"); + if (id == CANFD_OTA_DATA_ID) { + ota_time = 0; + if (len == 64 and ota_state == OTA_STATE_RECEIVING_FIRMWARE) { +#if DEBUG_OTA + printf("stage8:OTA_RECEIVING_FIRMWARE\r\n"); #endif - // OTA请求包 - u32 new_size = *(u32 *)data; - if (new_size <= APP_MAX_SIZE) { - expected_size = new_size; - received_size = 0; - // eraseApplicationArea(); - ota_active = true; - sendACK(new_size); // 确认开始 -#ifdef DEBUG_OTA - printf("start OTA%d\r\n", ota_active); -#endif - } - } else if (id == CANFD_OTA_DATA_ID && ota_active) { - // 数据包格式:[4字节包序号][实际数据] - if (len >= 4) { - u32 packet_num = *(u32 *)data; - u32 offset = packet_num * (len - 4); - - if (offset < expected_size) { - writeApplicationData(offset, &data[4], len - 4); // 写入数据 - received_size += (len - 4); - sendACK(packet_num); // 确认ACK - ota_time = 0; // 重置计时器 - - // 检查是否完成 - if (received_size >= expected_size) { - ota_active = false; - // 跳转前延时让ACK发出 - for (volatile int i = 0; i < 100000; i++) - ; - jumpToApplication(); - } + // 数据解包 + u32 receive_session_num; + u32 receive_packet_num; + u8 receive_encrypted_data[OTA_PACKET_SIZE]; + u32 receive_IFEND; + u8 receive_dataCRC32[4]; + receive_session_num = extract_u32_from_4bytes(data); + receive_packet_num = extract_u32_from_4bytes(data + 4); + for (int i = 0; i < 48; i++) { + receive_encrypted_data[i] = data[i + 8]; } + receive_IFEND = extract_u32_from_4bytes(data + 56); + for (int i = 0; i < 4; i++) { + receive_dataCRC32[i] = data[i + 60]; + } + + // 解密 + u8 decrypted_data[OTA_PACKET_SIZE]; + u8 calculated_dataCRC32[4]; + aes128_set_key(&aes_ctx, current_K_session); + aes128_ecb_decrypt_48bytes(&aes_ctx, receive_encrypted_data, + decrypted_data); + + // 计算解密后CRC数据 + calculate_crc32_with_key(current_K_session, decrypted_data, + calculated_dataCRC32); + // CRC数据匹配 + if (memcmp(receive_dataCRC32, calculated_dataCRC32, SIZE_U32) != + 0) { + ota_error = OTA_ERROR_INVALID_CRC; + send_error_frame(OTA_ERROR_INVALID_CRC); + return; + } + if (receive_IFEND == 0xFFFFFFFF) { // 接收到尾帧,发送结束信号 + u8 pack_number[4] = {0xFF, 0xFF, 0xFF, 0xFF}; + CAN0_transmiter.sendDATA_ACK(CANFD_OTA_ACK_ID, pack_number); + ota_state = OTA_STATE_FINISHED; + return; + } + // 下一个请求 + u32 request_packet = receive_packet_num + 1; + u8 pack_number[4]; + // 封包 + memcpy(&pack_number, &request_packet, 4); + CAN0_transmiter.sendDATA_ACK(CANFD_OTA_ACK_ID, pack_number); + } else if (len == 4 and ota_state == OTA_STATE_CHECKING_FIRMWARE) { +#if DEBUG_OTA + printf("stage7:OTA_STATE_CHECKING_FIRMWARE\r\n"); +#endif + // OTA请求包 + u32 new_size = *(u32 *)data; + if (new_size <= APP_MAX_SIZE) { + expected_size = new_size; + received_size = 0; + } else { + ota_error = OTA_ERROR_INVALID_SIZE; + send_error_frame(OTA_ERROR_INVALID_SIZE); + return; + } + // eraseApplicationArea(); + u8 send_data[6] = {0xBA, 0xC0, 0x00, + 0x00, 0x00, 0x00}; // 确认开始传输 + // 发送接收包0请求 + CAN0_transmiter.CANFD_AsyncSend(CANFD_OTA_ACK_ID, 6, send_data); + ota_state = OTA_STATE_RECEIVING_FIRMWARE; + } else if (len == 2 and ota_state == OTA_STATE_FINISHED) { +#if DEBUG_OTA + printf("stage8:OTA_STATE_FINISHED\r\n"); +#endif + u8 send_data[2] = {0x0A, 0xAC}; // 确认开始传输 + // 4. 验证成功 - 发送最终ACK + CAN0_transmiter.CANFD_AsyncSend(CANFD_OTA_ACK_ID, 2, send_data); + + } else { + ota_error = OTA_ERROR_INVALID_PACKET; + send_error_frame(OTA_ERROR_INVALID_PACKET); + } + } else if (id == CANFD_OTA_REQ_ID) { + ota_time = 0; +#if DEBUG_OTA + printf("stage2:OTA_STATE_WAITING_RANDOM\r\n"); +#endif + if (data[0] == 0x00 and data[1] == 0xAC and len == 2 and + ota_state == OTA_STATE_IDLE) { // 收到发起信号 + u8 send_data[2] = {0x00, 0xac}; // 确认握手开始,请求随机数 + CAN0_transmiter.CANFD_AsyncSend(CANFD_OTA_ACK_ID, 2, + send_data); // 发送握手开始信号 + ota_state = OTA_STATE_WAITING_RANDOM; + } else if (len == 16 and ota_state == OTA_STATE_WAITING_RANDOM) { +#if DEBUG_OTA + printf("stage4:OTA_STATE_WAITING_CONFIRM\r\n"); +#endif + while (len-- > 0) { + nonce_server[len] = data[len]; + } + // 1. 获取设备唯一码 + getDeviceSerialNumber(device_uid); + // 2. 初始化AES上下文(设置主密钥) + aes128_set_key(&aes_ctx, K_master); + // 3. 生成会话密钥 K_session (16字节) + u8 K_session[16]; + aes128_encrypt_block(&aes_ctx, nonce_server, + K_session); // 用主密钥加密随机数 + // 4. 用主密钥加密明文 (AES-128-ECB) + u8 encrypted_Ksession[16]; + u8 temp_block[AES_BLOCK_SIZE]; + // 加密第一个16字节块 + aes128_encrypt_block(&aes_ctx, K_session, temp_block); + memcpy(encrypted_Ksession, temp_block, 16); + + // 5. 构造握手响应包 (36字节) + u8 handshake_response[36]; + // 5.1 前12字节:设备UID + memcpy(handshake_response, device_uid, 12); + + // 5.2 接下来8字节:nonce后半部分 + memcpy(handshake_response + 12, nonce_server + 8, 8); + + // 5.3 最后16字节:加密数据的K-session + memcpy(handshake_response + 20, encrypted_Ksession, 16); + + // 6. 通过CAN发送响应 + CAN0_transmiter.CANFD_AsyncSend(CANFD_OTA_ACK_ID, 36, + handshake_response); + + // 7. 保存会话密钥供后续使用 + memcpy(current_K_session, K_session, 16); + + // 8. 更新状态机 + ota_state = OTA_STATE_WAITING_CONFIRM; + } else if (len == 16 and ota_state == OTA_STATE_WAITING_CONFIRM) { +#if DEBUG_OTA + printf("stage6:OTA_STATE_CHECKING_SESSION\r\n"); +#endif + u8 plaintext[16]; + u8 expected[16]; + // 1. 用K_session解密 + u8 encrypted_confirm[16]; + memcpy(encrypted_confirm, data, 16); + aes128_set_key(&aes_ctx, current_K_session); + aes128_decrypt_block(&aes_ctx, encrypted_confirm, plaintext); + + // 2. 计算期望值 (nonce_server XOR 0x55) + // 注意:需要保存原始的nonce_server + for (int i = 0; i < 16; i++) { + expected[i] = nonce_server[i] ^ 0x55; + } + + // 3. 验证解密结果 + if (memcmp(plaintext, expected, 16) != 0) { + // 验证失败 - 可能密钥错误或攻击 + ota_error = OTA_ERROR_INVALID_KEY; + send_error_frame(OTA_ERROR_INVALID_KEY); // 验证失败 + // reset_ota_state(); + return; + } + + u8 send_data[2] = {0xBA, 0xC0}; // 确认开始传输 + // 4. 验证成功 - 发送最终ACK + CAN0_transmiter.CANFD_AsyncSend(CANFD_OTA_ACK_ID, 2, send_data); + + // 5. 更新状态 - 进入固件接收阶段 + ota_state = OTA_STATE_CHECKING_FIRMWARE; + } else { + // 其他握手异常 + ota_error = OTA_ERROR_INVALID_HANDSHAKE; + send_error_frame(OTA_ERROR_INVALID_HANDSHAKE); + return; } } } -void OTAHandler::sendACK(u32 packet_num) { - CAN0_transmiter.sendACK(CANFD_OTA_ACK_ID, packet_num); -} \ No newline at end of file +void send_error_frame(u8 error) { + u8 error_frame[1] = {error}; + CAN0_transmiter.CANFD_AsyncSend(CANFD_OTA_ACK_ID, 1, error_frame); +} + +/** + * @brief 获取GD32设备唯一码 + * @param buffer 存储唯一码的缓冲区,至少需要12字节 + * @return void + */ +void getDeviceSerialNumber(u8 *buffer) { + uint32_t serial_msb = DEVICE_SERIAL_ADDR_MSB; + uint32_t serial_mid = DEVICE_SERIAL_ADDR_MID; + uint32_t serial_lsb = DEVICE_SERIAL_ADDR_LSB; + + // 将96位唯一ID复制到缓冲区 (以小端序存储) + for (int i = 0; i < 4; i++) { + buffer[i] = (u8)(serial_lsb >> (i * 8)); + buffer[i + 4] = (u8)(serial_mid >> (i * 8)); + buffer[i + 8] = (u8)(serial_msb >> (i * 8)); + } +} + +/** + * @brief 获取GD32设备唯一码为字符串格式 + * @param str 存储唯一码字符串的缓冲区,至少需要25字节(包含结束符) + * @return void + */ +void getDeviceSerialNumberString(char *str) { + u8 serial[12]; + getDeviceSerialNumber(serial); + + // 将字节序列转换为十六进制字符串表示 + for (int i = 0; i < 12; i++) { + sprintf(&str[i * 2], "%02X", serial[i]); + } + str[24] = '\0'; // 确保字符串结束 +} + +/** + * 带密钥的CRC32校验函数 + * + * @param key 16字节密钥 + * @param data 48字节待校验数据 + * @param output 4字节输出缓冲区,存储CRC32校验值 + * + * 特点: + * - 使用标准CRC32算法 + * - 16字节密钥用于初始化CRC32状态 + */ +void calculate_crc32_with_key(const uint8_t *key, const uint8_t *data, + u8 *output) { + // CRC32查找表(标准多项式0xEDB88320) + static const uint32_t crc_table[256] = { + 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, + 0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, + 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, 0x1DB71064, 0x6AB020F2, + 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, + 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, + 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, + 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, 0x35B5A8FA, 0x42B2986C, + 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, + 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, + 0xCFBA9599, 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, + 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190, 0x01DB7106, + 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, + 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, + 0x91646C97, 0xE6635C01, 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, + 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950, + 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, + 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, + 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, + 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, + 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, + 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, + 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, + 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, 0xE3630B12, 0x94643B84, + 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, + 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, + 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, + 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, 0xD6D6A3E8, 0xA1D1937E, + 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, + 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, + 0x316E8EEF, 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, + 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE, 0xB2BD0B28, + 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, + 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, + 0x72076785, 0x05005713, 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, + 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242, + 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, + 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, + 0x616BFFD3, 0x166CCF45, 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, + 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, + 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, + 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, + 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, + 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D}; + + // 用16字节密钥初始化CRC32状态 + uint32_t crc = 0xFFFFFFFF; + for (int i = 0; i < 16; i++) { + crc = crc_table[(crc ^ key[i]) & 0xFF] ^ (crc >> 8); + } + + // 计算48字节数据的CRC32 + for (int i = 0; i < 48; i++) { + crc = crc_table[(crc ^ data[i]) & 0xFF] ^ (crc >> 8); + } + + // 取反得到最终结果 + crc = ~crc; + + // 将CRC32结果拆分为4字节(小端格式) + output[0] = (uint8_t)(crc >> 0); + output[1] = (uint8_t)(crc >> 8); + output[2] = (uint8_t)(crc >> 16); + output[3] = (uint8_t)(crc >> 24); +} diff --git a/Robot_V2/sys/OTA.h b/Robot_V2/sys/OTA.h index fd405d7..a3e567e 100644 --- a/Robot_V2/sys/OTA.h +++ b/Robot_V2/sys/OTA.h @@ -2,27 +2,60 @@ #define __OTA_H #include "Can.h" +#include "aes128.h" #include "config.h" #include "gd32c10x.h" +#include class OTAHandler { public: - bool ota_active; - u32 ota_time; + u32 ota_stateota_time; uint32_t received_size; uint32_t expected_size; void init(); void process(); - bool isActive() const { return ota_active; } + bool isActive() const { return ota_state; } void handleOTAMessage(uint32_t id, uint8_t *data, uint8_t len); void jumpToApplication(); private: + u16 ota_time; bool validateApplication(); void eraseApplicationArea(); void writeApplicationData(uint32_t offset, uint8_t *data, uint32_t size); - void sendACK(uint32_t packet_num); + typedef enum { + OTA_STATE_IDLE = 0, + OTA_STATE_WAITING_RANDOM, // 第二阶段等待随机数 + OTA_STATE_WAITING_CONFIRM, // 等待上位机确认 + OTA_STATE_CHECKING_FIRMWARE, + OTA_STATE_RECEIVING_FIRMWARE, + OTA_STATE_FINISHED + } ota_state_t; + typedef enum { + OTA_ERROR_NONE = 0, + OTA_ERROR_TIMEOUT, + OTA_ERROR_INVALID_KEY, + OTA_ERROR_INVALID_PACKET, + OTA_ERROR_INVALID_HANDSHAKE, + OTA_ERROR_INVALID_CRC, + OTA_ERROR_INVALID_SIZE + } ota_error_t; + // 全局变量(需在安全区域存储) + uint8_t K_master[16] = {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, + 0xCD, 0xEF, 0xFE, 0xDC, 0xBA, 0x98, + 0x76, 0x54, 0x32, 0x10}; // 预置主密钥 + uint8_t device_uid[12]; // 从GD32 UID寄存器读取 + uint8_t current_K_session[16]; + uint8_t nonce_server[16]; + + aes128_context aes_ctx; // AES上下文 + ota_state_t ota_state = OTA_STATE_IDLE; + ota_error_t ota_error = OTA_ERROR_NONE; }; +void getDeviceSerialNumber(uint8_t *buffer); +void calculate_crc32_with_key(const uint8_t *key, const uint8_t *data, + u8 *output); +void send_error_frame(uint8_t error); #endif \ No newline at end of file diff --git a/Robot_V2/sys/aes128.cpp b/Robot_V2/sys/aes128.cpp new file mode 100644 index 0000000..37734e2 --- /dev/null +++ b/Robot_V2/sys/aes128.cpp @@ -0,0 +1,375 @@ +#include "aes128.h" + +// S盒 (Substitution Box) +static const u8 sbox[256] = { + 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, + 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, + 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, + 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, + 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, + 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, + 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, + 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, + 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, + 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, + 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, + 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, + 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, + 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, + 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, + 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, + 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, + 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, + 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, + 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, + 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, + 0xb0, 0x54, 0xbb, 0x16}; + +// 逆S盒 (InvSBox) +const u8 inv_sbox[256] = { + 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, + 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, + 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, + 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, + 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, + 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, + 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, + 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, + 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, + 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, + 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, + 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, + 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, + 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, + 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, + 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, + 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, + 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, + 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, + 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, + 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, + 0x55, 0x21, 0x0c, 0x7d}; + +// 轮常量 +static const u8 rcon[10] = {0x01, 0x02, 0x04, 0x08, 0x10, + 0x20, 0x40, 0x80, 0x1b, 0x36}; + +// 伽罗瓦域乘法 (xtime) - 确保正确 +static u8 xtime(u8 x) { return (x << 1) ^ (((x >> 7) & 1) * 0x1b); } + +// 关键修复:AES状态矩阵是列优先排列! +// 内存布局应该是:s00, s10, s20, s30, s01, s11, s21, s31, ... +// 而不是行优先 + +// 轮密钥加 - 无需修改 +void add_round_key(u8 *state, const u8 *round_key) { + for (u8 i = 0; i < 16; i++) { + state[i] ^= round_key[i]; + } +} + +// 字节替换 - 无需修改 +void sub_bytes(u8 *state) { + for (u8 i = 0; i < 16; i++) { + state[i] = sbox[state[i]]; + } +} + +// 行移位 - 修复为列优先排列 +void shift_rows(u8 *state) { + u8 temp; + + // AES状态矩阵(列优先): + // 列0: state[0], state[1], state[2], state[3] -> 行0,1,2,3 + // 列1: state[4], state[5], state[6], state[7] -> 行0,1,2,3 + // 列2: state[8], state[9], state[10], state[11] -> 行0,1,2,3 + // 列3: state[12], state[13], state[14], state[15] -> 行0,1,2,3 + + // 第1行(索引0,4,8,12)不移位 + // 第2行(索引1,5,9,13)左移1位 + temp = state[1]; + state[1] = state[5]; + state[5] = state[9]; + state[9] = state[13]; + state[13] = temp; + + // 第3行(索引2,6,10,14)左移2位 + temp = state[2]; + state[2] = state[10]; + state[10] = temp; + temp = state[6]; + state[6] = state[14]; + state[14] = temp; + + // 第4行(索引3,7,11,15)左移3位 + temp = state[3]; + state[3] = state[15]; + state[15] = state[11]; + state[11] = state[7]; + state[7] = temp; +} + +// 列混合 - 修复为正确的实现 +void mix_columns(u8 *state) { + u8 a[4], b[4]; + + // 处理每一列 + for (u8 col = 0; col < 4; col++) { + // 获取当前列的4个字节 + a[0] = state[col * 4 + 0]; + a[1] = state[col * 4 + 1]; + a[2] = state[col * 4 + 2]; + a[3] = state[col * 4 + 3]; + + // 计算混合后的值 + b[0] = xtime(a[0]) ^ xtime(a[1]) ^ a[1] ^ a[2] ^ a[3]; + b[1] = a[0] ^ xtime(a[1]) ^ xtime(a[2]) ^ a[2] ^ a[3]; + b[2] = a[0] ^ a[1] ^ xtime(a[2]) ^ xtime(a[3]) ^ a[3]; + b[3] = xtime(a[0]) ^ a[0] ^ a[1] ^ a[2] ^ xtime(a[3]); + + // 存回结果 + state[col * 4 + 0] = b[0]; + state[col * 4 + 1] = b[1]; + state[col * 4 + 2] = b[2]; + state[col * 4 + 3] = b[3]; + } +} + +// 伽罗瓦域乘法 (用于逆列混合) +static u8 gf_mul(u8 a, u8 b) { + u8 p = 0; + u8 high_bit; + + while (b) { + if (b & 1) { + p ^= a; + } + high_bit = a & 0x80; + a <<= 1; + if (high_bit) { + a ^= 0x1b; // x^8 + x^4 + x^3 + x + 1 + } + b >>= 1; + } + return p; +} + +// 逆字节替换 +void inv_sub_bytes(u8 *state) { + for (u8 i = 0; i < 16; i++) { + state[i] = inv_sbox[state[i]]; + } +} + +// 逆行移位 - 与shift_rows对应 +void inv_shift_rows(u8 *state) { + u8 temp; + + // 第2行右移1位 + temp = state[13]; + state[13] = state[9]; + state[9] = state[5]; + state[5] = state[1]; + state[1] = temp; + + // 第3行右移2位 + temp = state[2]; + state[2] = state[10]; + state[10] = temp; + temp = state[6]; + state[6] = state[14]; + state[14] = temp; + + // 第4行右移3位 + temp = state[7]; + state[7] = state[11]; + state[11] = state[15]; + state[15] = state[3]; + state[3] = temp; +} + +// 逆列混合 - 正确实现 +void inv_mix_columns(u8 *state) { + u8 a[4], b[4]; + + // 处理每一列 + for (u8 col = 0; col < 4; col++) { + // 获取当前列的4个字节 + a[0] = state[col * 4 + 0]; + a[1] = state[col * 4 + 1]; + a[2] = state[col * 4 + 2]; + a[3] = state[col * 4 + 3]; + + // 计算逆混合后的值 + b[0] = gf_mul(0x0e, a[0]) ^ gf_mul(0x0b, a[1]) ^ gf_mul(0x0d, a[2]) ^ + gf_mul(0x09, a[3]); + b[1] = gf_mul(0x09, a[0]) ^ gf_mul(0x0e, a[1]) ^ gf_mul(0x0b, a[2]) ^ + gf_mul(0x0d, a[3]); + b[2] = gf_mul(0x0d, a[0]) ^ gf_mul(0x09, a[1]) ^ gf_mul(0x0e, a[2]) ^ + gf_mul(0x0b, a[3]); + b[3] = gf_mul(0x0b, a[0]) ^ gf_mul(0x0d, a[1]) ^ gf_mul(0x09, a[2]) ^ + gf_mul(0x0e, a[3]); + + // 存回结果 + state[col * 4 + 0] = b[0]; + state[col * 4 + 1] = b[1]; + state[col * 4 + 2] = b[2]; + state[col * 4 + 3] = b[3]; + } +} + +// 密钥扩展 - 修复为标准实现 +static void key_expansion(aes128_context *ctx) { + u8 temp[4]; + u8 i, rcon_iter = 0; + + // 复制原始密钥到第一轮密钥 + memcpy(ctx->round_keys[0], ctx->key, 16); + + // 生成10轮密钥 + for (i = 1; i <= 10; i++) { + // 复制前一轮最后一列 + temp[0] = ctx->round_keys[i - 1][12]; + temp[1] = ctx->round_keys[i - 1][13]; + temp[2] = ctx->round_keys[i - 1][14]; + temp[3] = ctx->round_keys[i - 1][15]; + + // 字循环 (RotWord) + u8 t = temp[0]; + temp[0] = temp[1]; + temp[1] = temp[2]; + temp[2] = temp[3]; + temp[3] = t; + + // 字节替换 (SubWord) + temp[0] = sbox[temp[0]]; + temp[1] = sbox[temp[1]]; + temp[2] = sbox[temp[2]]; + temp[3] = sbox[temp[3]]; + + // 轮常量异或 + temp[0] ^= rcon[i - 1]; + + // 生成新的第一列 + ctx->round_keys[i][0] = ctx->round_keys[i - 1][0] ^ temp[0]; + ctx->round_keys[i][1] = ctx->round_keys[i - 1][1] ^ temp[1]; + ctx->round_keys[i][2] = ctx->round_keys[i - 1][2] ^ temp[2]; + ctx->round_keys[i][3] = ctx->round_keys[i - 1][3] ^ temp[3]; + + // 生成其他列 + for (u8 j = 1; j < 4; j++) { + ctx->round_keys[i][j * 4 + 0] = + ctx->round_keys[i][(j - 1) * 4 + 0] ^ + ctx->round_keys[i - 1][j * 4 + 0]; + ctx->round_keys[i][j * 4 + 1] = + ctx->round_keys[i][(j - 1) * 4 + 1] ^ + ctx->round_keys[i - 1][j * 4 + 1]; + ctx->round_keys[i][j * 4 + 2] = + ctx->round_keys[i][(j - 1) * 4 + 2] ^ + ctx->round_keys[i - 1][j * 4 + 2]; + ctx->round_keys[i][j * 4 + 3] = + ctx->round_keys[i][(j - 1) * 4 + 3] ^ + ctx->round_keys[i - 1][j * 4 + 3]; + } + } +} + +// 设置密钥 +void aes128_set_key(aes128_context *ctx, const u8 *key) { + memcpy(ctx->key, key, AES128_KEY_LEN); + key_expansion(ctx); +} + +// 加密单个块 +void aes128_encrypt_block(aes128_context *ctx, const u8 *input, + u8 *output) { + // 复制输入到状态 + memcpy(ctx->state, input, AES_BLOCK_SIZE); + + // 初始轮密钥加 + add_round_key(ctx->state, ctx->round_keys[0]); + + // 9轮标准轮 + for (u8 round = 1; round <= 9; round++) { + sub_bytes(ctx->state); + shift_rows(ctx->state); + mix_columns(ctx->state); + add_round_key(ctx->state, ctx->round_keys[round]); + } + + // 最终轮 (没有mix_columns) + sub_bytes(ctx->state); + shift_rows(ctx->state); + add_round_key(ctx->state, ctx->round_keys[10]); + + // 复制结果到输出 + memcpy(output, ctx->state, AES_BLOCK_SIZE); +} + +// ECB模式加密48字节数据 +void aes128_ecb_encrypt_48bytes(aes128_context *ctx, const u8 *input, + u8 *output) { + // 分3块加密 (48 = 16 * 3) + aes128_encrypt_block(ctx, input, output); + aes128_encrypt_block(ctx, input + 16, output + 16); + aes128_encrypt_block(ctx, input + 32, output + 32); +} + +// 解密单个块 +void aes128_decrypt_block(aes128_context *ctx, const u8 *input, + u8 *output) { + // 复制输入到状态 + memcpy(ctx->state, input, AES_BLOCK_SIZE); + + // 初始轮密钥加(使用最后一轮密钥) + add_round_key(ctx->state, ctx->round_keys[10]); + + // 9轮标准解密轮 + for (u8 round = 9; round >= 1; round--) { + inv_shift_rows(ctx->state); + inv_sub_bytes(ctx->state); + add_round_key(ctx->state, ctx->round_keys[round]); + inv_mix_columns(ctx->state); + } + + // 最终轮(没有inv_mix_columns) + inv_shift_rows(ctx->state); + inv_sub_bytes(ctx->state); + add_round_key(ctx->state, ctx->round_keys[0]); + + // 复制结果到输出 + memcpy(output, ctx->state, AES_BLOCK_SIZE); +} + +// ECB模式解密48字节数据 +void aes128_ecb_decrypt_48bytes(aes128_context *ctx, const u8 *input, + u8 *output) { + // 分3块解密 (48 = 16 * 3) + aes128_decrypt_block(ctx, input, output); + aes128_decrypt_block(ctx, input + 16, output + 16); + aes128_decrypt_block(ctx, input + 32, output + 32); +} + +// 验证函数:加密后解密,对比原始数据 +u8 aes128_verify_encryption(aes128_context *ctx, + const u8 *original_data, size_t length) { + u8 temp_ciphertext[48]; + u8 temp_plaintext[48]; + u8 result = 1; // 1表示验证成功,0表示失败 + + // 1. 加密原始数据 + aes128_ecb_encrypt_48bytes(ctx, original_data, temp_ciphertext); + + // 2. 解密密文 + aes128_ecb_decrypt_48bytes(ctx, temp_ciphertext, temp_plaintext); + + // 3. 对比原始数据和解密后的数据 + for (size_t i = 0; i < length; i++) { + if (original_data[i] != temp_plaintext[i]) { + result = 0; // 验证失败 + break; + } + } + + return result; +} \ No newline at end of file diff --git a/Robot_V2/sys/aes128.h b/Robot_V2/sys/aes128.h new file mode 100644 index 0000000..7b558d2 --- /dev/null +++ b/Robot_V2/sys/aes128.h @@ -0,0 +1,39 @@ +#ifndef __AES_H +#define __AES_H + +#include +#include + +// AES-128 密钥长度 (16 bytes) +#define AES128_KEY_LEN 16 +// AES 块大小 (16 bytes) +#define AES_BLOCK_SIZE 16 + +// AES 状态结构 +typedef struct { + u8 key[AES128_KEY_LEN]; // 128位/16字节密钥 + u8 round_keys[11][16]; // 10轮 + 初始轮密钥 + u8 state[AES_BLOCK_SIZE]; // 状态矩阵 +} aes128_context; + +// 内部函数声明(需要在头文件中声明,因为解密函数会使用) +void add_round_key(u8 *state, const u8 *round_key); +void sub_bytes(u8 *state); +void shift_rows(u8 *state); +void mix_columns(u8 *state); +void inv_sub_bytes(u8 *state); +void inv_shift_rows(u8 *state); +void inv_mix_columns(u8 *state); + +// 公共函数声明 +void aes128_set_key(aes128_context *ctx, const u8 *key); +void aes128_encrypt_block(aes128_context *ctx, const u8 *input, u8 *output); +void aes128_ecb_encrypt_48bytes(aes128_context *ctx, const u8 *input, u8 *output); +void aes128_decrypt_block(aes128_context *ctx, const u8 *input, u8 *output); +void aes128_ecb_decrypt_48bytes(aes128_context *ctx, const u8 *input, u8 *output); +u8 aes128_verify_encryption(aes128_context *ctx, const u8 *original_data, size_t length); + +// 逆S盒 (用于解密) +extern const u8 inv_sbox[256]; + +#endif /* __AES_H */ \ No newline at end of file diff --git a/Robot_V2/sys/config.h b/Robot_V2/sys/config.h index 5744b2f..25dc61e 100644 --- a/Robot_V2/sys/config.h +++ b/Robot_V2/sys/config.h @@ -2,9 +2,12 @@ #define __CONFIG_H__ #include "stdint.h" +#define EEPDEBUG 0 +#define DEBUG_OTA 0 + // Flash分区配置 constexpr u32 BOOTLOADER_SIZE = 0x4000; // 16KB -constexpr u32 APP_START_ADDR = 0x08004000; // APP起始地址 +constexpr u32 APP_START_ADDR = 0x08010000; // APP起始地址 0x08004000 constexpr u32 APP2_START_ADDR = 0x08010000; // APP2起始地址 constexpr u32 APP_MAX_SIZE = 0xC000; // 48KB constexpr u32 FMC_PAGE_SIZE = 0x400; // 1KB @@ -15,6 +18,11 @@ constexpr u32 CANFD_OTA_DATA_ID = 0x00000101; constexpr u32 CANFD_OTA_ACK_ID = 0x00000102; constexpr u32 CANFD_OTA_WAIT_ID = 0x00000103; +// 设备唯一ID寄存器地址 (GD32C10x系列) +constexpr u32 DEVICE_SERIAL_ADDR_MSB = 0x1FFFF7E8; // 最高32位 +constexpr u32 DEVICE_SERIAL_ADDR_MID = 0x1FFFF7EC; // 中间32位 +constexpr u32 DEVICE_SERIAL_ADDR_LSB = 0x1FFFF7F0; // 最低32位 + // CANFD数据段最大64字节,我们用1字节序号 + 48字节数据 + 1字节CRC校验 constexpr u32 OTA_PACKET_SIZE = 48; typedef struct { @@ -23,4 +31,23 @@ typedef struct { u32 crc32; // 简单校验 } canfd_ota_packet_t; +// 定义一个联合体类型用于float和byte数组之间的转换 +typedef union { + u32 u; + u8 b[4]; +} u32_union_t; + +// 添加辅助函数用于从u8数组中解包float类型数据 +static inline u32_union_t unpack_bytes_to_float(u8 *buffer, u16 offset) { + u32_union_t u32_union; + u32_union.b[0] = buffer[offset]; + u32_union.b[1] = buffer[offset + 1]; + u32_union.b[2] = buffer[offset + 2]; + u32_union.b[3] = buffer[offset + 3]; + return u32_union; +} +// 其他 +constexpr u32 OTA_TIMEOUT = 10000; +constexpr u8 SIZE_U32 = sizeof(uint32_t); +constexpr u8 SIZE_FLOAT = sizeof(float); #endif \ No newline at end of file diff --git a/Robot_V2/sys/flash.cpp b/Robot_V2/sys/flash.cpp index 0bee563..b4d3691 100644 --- a/Robot_V2/sys/flash.cpp +++ b/Robot_V2/sys/flash.cpp @@ -10,9 +10,6 @@ #include FlashEEPROM flashEEP = FlashEEPROM(); -constexpr u8 SIZE_U32 = sizeof(uint32_t); -constexpr u8 SIZE_FLOAT = sizeof(float); -#define EEPDEBUG 0 // FlashEEPROM类实现 FlashEEPROM::FlashEEPROM() { diff --git a/Robot_V2/sys/initial.h b/Robot_V2/sys/initial.h index 5241423..2b46ba3 100644 --- a/Robot_V2/sys/initial.h +++ b/Robot_V2/sys/initial.h @@ -14,9 +14,10 @@ int fputc(int ch, FILE *f); // 声明fputc函数以重载标准库实现 u8 USART0_init(void); u16 get_reset_cause(void); void unused_pin_init(); +void print_system_clock_info(void); #ifdef __cplusplus } #endif -#endif +#endif \ No newline at end of file diff --git a/out/Robot_V2/GD32C103CB/Release/Robot_V2.Release+GD32C103CB.cbuild.yml b/out/Robot_V2/GD32C103CB/Release/Robot_V2.Release+GD32C103CB.cbuild.yml index fa5fca6..76d6816 100644 --- a/out/Robot_V2/GD32C103CB/Release/Robot_V2.Release+GD32C103CB.cbuild.yml +++ b/out/Robot_V2/GD32C103CB/Release/Robot_V2.Release+GD32C103CB.cbuild.yml @@ -285,6 +285,10 @@ build: category: header - file: ../../../../Robot_V2/main.cpp category: sourceCpp + - file: ../../../../Robot_V2/sys/aes128.h + category: header + - file: ../../../../Robot_V2/sys/aes128.cpp + category: sourceCpp - group: sys files: - file: ../../../../Robot_V2/sys/systick.cpp diff --git a/out/Robot_V2/GD32C103CB/Release/Robot_V2.axf b/out/Robot_V2/GD32C103CB/Release/Robot_V2.axf index 1227feca59b4d4321e1ee2194e311715c5d1e6cc..c0f571c6b991d76b05b8afbc4a46901da71abc37 100644 GIT binary patch delta 93151 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 A82|tP diff --git a/out/Robot_V2/GD32C103CB/Release/Robot_V2.axf.map b/out/Robot_V2/GD32C103CB/Release/Robot_V2.axf.map index b49d0aa..99a24fc 100644 --- a/out/Robot_V2/GD32C103CB/Release/Robot_V2.axf.map +++ b/out/Robot_V2/GD32C103CB/Release/Robot_V2.axf.map @@ -4,142 +4,149 @@ Component: Arm Compiler for Embedded 6.24 Tool: armlink [5f371500] Memory Map of the image - Image Entry point : 0x00000000 + Image Entry point : 0x08000165 - Load Region LR_ROM0 (Base: 0x08000000, Size: 0x00002b20, Max: 0x00020000, ABSOLUTE) + Load Region LR_ROM0 (Base: 0x08000000, Size: 0x00004800, Max: 0x00020000, ABSOLUTE, COMPRESSED[0x00004610]) - Execution Region ER_ROM0 (Base: 0x08000000, Size: 0x00002a28, Max: 0x00020000, ABSOLUTE) + Execution Region ER_ROM0 (Base: 0x08000000, Size: 0x000045ec, Max: 0x00020000, ABSOLUTE) Base Addr Size Type Attr Idx E Section Name Object - 0x08000000 0x00000150 Data RO 844 RESET startup_gd32c10x.o - 0x08000150 0x00000000 Code RO 1017 * .ARM.Collect$$$$00000000 mc_w.l(entry.o) - 0x08000150 0x00000004 Code RO 1440 .ARM.Collect$$$$00000003 mc_w.l(entry4.o) - 0x08000154 0x00000004 Code RO 1443 .ARM.Collect$$$$00000004 mc_w.l(entry5.o) - 0x08000158 0x00000000 Code RO 1445 .ARM.Collect$$$$00000008 mc_w.l(entry7b.o) - 0x08000158 0x00000000 Code RO 1447 .ARM.Collect$$$$0000000A mc_w.l(entry8b.o) - 0x08000158 0x00000008 Code RO 1448 .ARM.Collect$$$$0000000B mc_w.l(entry9a.o) - 0x08000160 0x00000000 Code RO 1450 .ARM.Collect$$$$0000000D mc_w.l(entry10a.o) - 0x08000160 0x00000000 Code RO 1452 .ARM.Collect$$$$0000000F mc_w.l(entry11a.o) - 0x08000160 0x00000004 Code RO 1441 .ARM.Collect$$$$00002714 mc_w.l(entry4.o) - 0x08000164 0x0000002c Code RO 845 * .text startup_gd32c10x.o - 0x08000190 0x00000024 Code RO 1024 .text mc_w.l(memcpya.o) - 0x080001b4 0x00000024 Code RO 1026 .text mc_w.l(memseta.o) - 0x080001d8 0x00000062 Code RO 1466 .text mc_w.l(uldiv.o) - 0x0800023a 0x00000002 Code RO 1468 .text mc_w.l(abort.o) - 0x0800023c 0x00000030 Code RO 1795 .text mc_w.l(init.o) - 0x0800026c 0x0000001e Code RO 1797 .text mc_w.l(llshl.o) - 0x0800028a 0x00000020 Code RO 1799 .text mc_w.l(llushr.o) - 0x080002aa 0x00000002 PAD - 0x080002ac 0x000000cc Code RO 131 .text.CAN0_RX0_IRQHandler Can.o - 0x08000378 0x0000004a Code RO 133 .text.DMA0_Channel4_IRQHandler Can.o - 0x080003c2 0x00000002 PAD - 0x080003c4 0x00000026 Code RO 135 .text.DMA0_Channel5_IRQHandler Can.o - 0x080003ea 0x00000002 PAD - 0x080003ec 0x000000e0 Code RO 853 .text.SystemCoreClockUpdate system_gd32c10x.o - 0x080004cc 0x00000342 Code RO 851 .text.SystemInit system_gd32c10x.o - 0x0800080e 0x00000002 PAD - 0x08000810 0x00000012 Code RO 45 .text.USART0_init initial.o - 0x08000822 0x00000002 PAD - 0x08000824 0x00000130 Code RO 99 .text._ZN10OTAHandler16handleOTAMessageEjPhh OTA.o - 0x08000954 0x000000a8 Code RO 93 .text._ZN10OTAHandler17jumpToApplicationEv OTA.o - 0x080009fc 0x000000a0 Code RO 89 .text._ZN10OTAHandler7processEv OTA.o - 0x08000a9c 0x00000028 Code RO 874 .text._ZN10__cxxabiv121__isOurExceptionClassEPK21_Unwind_Control_Block libcppabi_wx.l(cxa_exception.cpp.o) - 0x08000ac4 0x00000060 Code RO 902 .text._ZN10__cxxabiv1L22__cxa_end_cleanup_implEv libcppabi_wx.l(cxa_exception.cpp.o) - 0x08000b24 0x00000118 Code RO 129 .text._ZN14CAN_transmiter15CANFD_AsyncSendEjhPh Can.o - 0x08000c3c 0x000000d0 Code RO 125 .text._ZN14CAN_transmiter19communication_checkEv Can.o - 0x08000d0c 0x00000038 Code RO 123 .text._ZN14CAN_transmiter4initEv Can.o - 0x08000d44 0x00000070 Code RO 127 .text._ZN14CAN_transmiter7sendACKEjj Can.o - 0x08000db4 0x00000074 Code RO 954 .text._ZSt11__terminatePFvvE libcppabi_wx.l(cxa_handlers.cpp.o) - 0x08000e28 0x00000030 Code RO 945 .text._ZSt9terminatev libcppabi_wx.l(cxa_handlers.cpp.o) - 0x08000e58 0x0000000a Code RO 931 .text.__clang_call_terminate libcppabi_wx.l(cxa_exception.cpp.o) - 0x08000e62 0x00000002 PAD - 0x08000e64 0x0000006c Code RO 879 .text.__cxa_begin_catch libcppabi_wx.l(cxa_exception.cpp.o) - 0x08000ed0 0x0000000a Code RO 1307 .text.__cxa_get_globals libcppabi_wx.l(cxa_exception_storage.cpp.o) - 0x08000eda 0x0000000a Code RO 1309 .text.__cxa_get_globals_fast libcppabi_wx.l(cxa_exception_storage.cpp.o) - 0x08000ee4 0x00000026 Code RO 185 .text.can_deinit gd32c10x_can.o - 0x08000f0a 0x00000002 PAD - 0x08000f0c 0x00000114 Code RO 191 .text.can_fd_init gd32c10x_can.o - 0x08001020 0x000000b2 Code RO 193 .text.can_filter_init gd32c10x_can.o - 0x080010d2 0x00000002 PAD - 0x080010d4 0x00000176 Code RO 189 .text.can_init gd32c10x_can.o - 0x0800124a 0x00000002 PAD - 0x0800124c 0x00000008 Code RO 235 .text.can_interrupt_enable gd32c10x_can.o - 0x08001254 0x00000016 Code RO 245 .text.can_interrupt_flag_clear gd32c10x_can.o - 0x0800126a 0x00000002 PAD - 0x0800126c 0x00000066 Code RO 243 .text.can_interrupt_flag_get gd32c10x_can.o - 0x080012d2 0x00000002 PAD - 0x080012d4 0x000001f4 Code RO 219 .text.can_message_receive gd32c10x_can.o - 0x080014c8 0x000001f0 Code RO 213 .text.can_message_transmit gd32c10x_can.o - 0x080016b8 0x00000018 Code RO 223 .text.can_receive_message_length_get gd32c10x_can.o - 0x080016d0 0x00000072 Code RO 187 .text.can_struct_para_init gd32c10x_can.o - 0x08001742 0x00000002 PAD - 0x08001744 0x000001b0 Code RO 121 .text.canfd_config Can.o - 0x080018f4 0x00000022 Code RO 27 .text.delay_1ms systick.o - 0x08001916 0x00000002 PAD - 0x08001918 0x00000018 Code RO 29 .text.delay_decrement systick.o - 0x08001930 0x00000024 Code RO 325 .text.dma_channel_disable gd32c10x_dma.o - 0x08001954 0x00000024 Code RO 323 .text.dma_channel_enable gd32c10x_dma.o - 0x08001978 0x00000074 Code RO 313 .text.dma_init gd32c10x_dma.o - 0x080019ec 0x00000022 Code RO 359 .text.dma_interrupt_enable gd32c10x_dma.o - 0x08001a0e 0x00000002 PAD - 0x08001a10 0x0000000e Code RO 357 .text.dma_interrupt_flag_clear gd32c10x_dma.o - 0x08001a1e 0x00000002 PAD - 0x08001a20 0x0000003a Code RO 355 .text.dma_interrupt_flag_get gd32c10x_dma.o - 0x08001a5a 0x00000002 PAD - 0x08001a5c 0x0000001a Code RO 311 .text.dma_struct_para_init gd32c10x_dma.o - 0x08001a76 0x00000002 PAD - 0x08001a78 0x00000012 Code RO 429 .text.fmc_lock gd32c10x_fmc.o - 0x08001a8a 0x00000002 PAD - 0x08001a8c 0x00000026 Code RO 427 .text.fmc_unlock gd32c10x_fmc.o - 0x08001ab2 0x00000002 PAD - 0x08001ab4 0x000001aa Code RO 439 .text.fmc_word_program gd32c10x_fmc.o - 0x08001c5e 0x00000002 PAD - 0x08001c60 0x0000002c Code RO 47 .text.fputc initial.o - 0x08001c8c 0x00000010 Code RO 498 .text.fwdgt_counter_reload gd32c10x_fwdgt.o - 0x08001c9c 0x00000098 Code RO 168 .text.gd_eval_com_init gd32c10x_eval.o - 0x08001d34 0x00000004 Code RO 523 .text.gpio_bit_reset gd32c10x_gpio.o - 0x08001d38 0x000002c0 Code RO 519 .text.gpio_init gd32c10x_gpio.o - 0x08001ff8 0x00000080 Code RO 537 .text.gpio_pin_remap_config gd32c10x_gpio.o - 0x08002078 0x00000032 Code RO 8 .text.main main.o - 0x080020aa 0x00000002 PAD - 0x080020ac 0x00000060 Code RO 566 .text.nvic_irq_enable gd32c10x_misc.o - 0x0800210c 0x0000001c Code RO 570 .text.nvic_vector_table_set gd32c10x_misc.o - 0x08002128 0x0000010c Code RO 716 .text.rcu_clock_freq_get gd32c10x_rcu.o - 0x08002234 0x00000020 Code RO 636 .text.rcu_periph_clock_disable gd32c10x_rcu.o - 0x08002254 0x0000001e Code RO 634 .text.rcu_periph_clock_enable gd32c10x_rcu.o - 0x08002272 0x00000002 PAD - 0x08002274 0x00000020 Code RO 644 .text.rcu_periph_reset_disable gd32c10x_rcu.o - 0x08002294 0x0000001e Code RO 642 .text.rcu_periph_reset_enable gd32c10x_rcu.o - 0x080022b2 0x00000002 PAD - 0x080022b4 0x00000014 Code RO 650 .text.rcu_system_clock_source_config gd32c10x_rcu.o - 0x080022c8 0x00000048 Code RO 23 .text.systick_config systick.o - 0x08002310 0x0000002c Code RO 934 .text.unlikely.__cxa_guard_acquire libcppabi_wx.l(cxa_guard.cpp.o) - 0x0800233c 0x00000008 Code RO 936 .text.unlikely.__cxa_guard_release libcppabi_wx.l(cxa_guard.cpp.o) - 0x08002344 0x00000006 Code RO 1292 .text.unlikely.abort_message libcppabi_wx.l(abort_message.cpp.o) - 0x0800234a 0x00000002 PAD - 0x0800234c 0x0000006a Code RO 732 .text.usart_baudrate_set gd32c10x_usart.o - 0x080023b6 0x00000002 PAD - 0x080023b8 0x00000008 Code RO 758 .text.usart_data_transmit gd32c10x_usart.o - 0x080023c0 0x0000007a Code RO 730 .text.usart_deinit gd32c10x_usart.o - 0x0800243a 0x00000002 PAD - 0x0800243c 0x0000000a Code RO 740 .text.usart_enable gd32c10x_usart.o - 0x08002446 0x00000002 PAD - 0x08002448 0x00000010 Code RO 820 .text.usart_flag_get gd32c10x_usart.o - 0x08002458 0x00000014 Code RO 746 .text.usart_receive_config gd32c10x_usart.o - 0x0800246c 0x00000014 Code RO 744 .text.usart_transmit_config gd32c10x_usart.o - 0x08002480 0x00000020 Code RO 1237 i.__0printf$8 mc_w.l(printf8.o) - 0x080024a0 0x00000410 Code RO 1244 i._printf_core mc_w.l(printf8.o) - 0x080028b0 0x00000024 Code RO 1245 i._printf_post_padding mc_w.l(printf8.o) - 0x080028d4 0x0000002e Code RO 1246 i._printf_pre_padding mc_w.l(printf8.o) - 0x08002902 0x00000002 PAD - 0x08002904 0x00000024 Code RO 1020 i.puts mc_w.l(puts.o) - 0x08002928 0x00000008 Data RO 718 .rodata.cst8 gd32c10x_rcu.o - 0x08002930 0x00000007 Data RO 247 .rodata.g_can_fdlength_table gd32c10x_can.o - 0x08002937 0x0000005c Data RO 144 .rodata.str1.1 Can.o - 0x08002993 0x00000093 Data RO 940 .rodata.str1.1 libcppabi_wx.l(cxa_guard.cpp.o) - 0x08002a26 0x00000002 PAD - 0x08002a28 0x00000000 Data RO 1883 Region$$Table anon$$obj.o + 0x08000000 0x00000150 Data RO 899 RESET startup_gd32c10x.o + 0x08000150 0x00000000 Code RO 1063 * .ARM.Collect$$$$00000000 mc_w.l(entry.o) + 0x08000150 0x00000004 Code RO 1488 .ARM.Collect$$$$00000003 mc_w.l(entry4.o) + 0x08000154 0x00000004 Code RO 1491 .ARM.Collect$$$$00000004 mc_w.l(entry5.o) + 0x08000158 0x00000000 Code RO 1493 .ARM.Collect$$$$00000008 mc_w.l(entry7b.o) + 0x08000158 0x00000000 Code RO 1495 .ARM.Collect$$$$0000000A mc_w.l(entry8b.o) + 0x08000158 0x00000008 Code RO 1496 .ARM.Collect$$$$0000000B mc_w.l(entry9a.o) + 0x08000160 0x00000000 Code RO 1498 .ARM.Collect$$$$0000000D mc_w.l(entry10a.o) + 0x08000160 0x00000000 Code RO 1500 .ARM.Collect$$$$0000000F mc_w.l(entry11a.o) + 0x08000160 0x00000004 Code RO 1489 .ARM.Collect$$$$00002714 mc_w.l(entry4.o) + 0x08000164 0x0000002c Code RO 900 * .text startup_gd32c10x.o + 0x08000190 0x00000024 Code RO 1070 .text mc_w.l(memcpya.o) + 0x080001b4 0x00000024 Code RO 1072 .text mc_w.l(memseta.o) + 0x080001d8 0x0000001a Code RO 1074 .text mc_w.l(memcmp.o) + 0x080001f2 0x00000062 Code RO 1514 .text mc_w.l(uldiv.o) + 0x08000254 0x00000002 Code RO 1516 .text mc_w.l(abort.o) + 0x08000256 0x00000002 PAD + 0x08000258 0x00000030 Code RO 1843 .text mc_w.l(init.o) + 0x08000288 0x0000001e Code RO 1845 .text mc_w.l(llshl.o) + 0x080002a6 0x00000020 Code RO 1847 .text mc_w.l(llushr.o) + 0x080002c6 0x0000003a Code RO 1938 .text mc_w.l(__dczerorl.o) + 0x08000300 0x000000cc Code RO 186 .text.CAN0_RX0_IRQHandler Can.o + 0x080003cc 0x0000004a Code RO 188 .text.DMA0_Channel4_IRQHandler Can.o + 0x08000416 0x00000002 PAD + 0x08000418 0x00000026 Code RO 190 .text.DMA0_Channel5_IRQHandler Can.o + 0x0800043e 0x00000002 PAD + 0x08000440 0x00000342 Code RO 906 .text.SystemInit system_gd32c10x.o + 0x08000782 0x00000002 PAD + 0x08000784 0x00000012 Code RO 91 .text.USART0_init initial.o + 0x08000796 0x00000002 PAD + 0x08000798 0x00000198 Code RO 36 .text._Z11mix_columnsPh aes128.o + 0x08000930 0x00000238 Code RO 44 .text._Z14aes128_set_keyP14aes128_contextPKh aes128.o + 0x08000b68 0x000008e2 Code RO 42 .text._Z15inv_mix_columnsPh aes128.o + 0x0800144a 0x00000002 PAD + 0x0800144c 0x000003c8 Code RO 50 .text._Z20aes128_decrypt_blockP14aes128_contextPKhPh aes128.o + 0x08001814 0x000003e6 Code RO 46 .text._Z20aes128_encrypt_blockP14aes128_contextPKhPh aes128.o + 0x08001bfa 0x00000002 PAD + 0x08001bfc 0x00000210 Code RO 149 .text._Z24calculate_crc32_with_keyPKhS0_Ph OTA.o + 0x08001e0c 0x0000002c Code RO 52 .text._Z26aes128_ecb_decrypt_48bytesP14aes128_contextPKhPh aes128.o + 0x08001e38 0x00000410 Code RO 147 .text._ZN10OTAHandler16handleOTAMessageEjPhh OTA.o + 0x08002248 0x00000078 Code RO 135 .text._ZN10OTAHandler7processEv OTA.o + 0x080022c0 0x00000028 Code RO 929 .text._ZN10__cxxabiv121__isOurExceptionClassEPK21_Unwind_Control_Block libcppabi_wx.l(cxa_exception.cpp.o) + 0x080022e8 0x00000060 Code RO 957 .text._ZN10__cxxabiv1L22__cxa_end_cleanup_implEv libcppabi_wx.l(cxa_exception.cpp.o) + 0x08002348 0x0000009e Code RO 180 .text._ZN14CAN_transmiter12sendDATA_ACKEjPh Can.o + 0x080023e6 0x00000002 PAD + 0x080023e8 0x00000178 Code RO 182 .text._ZN14CAN_transmiter15CANFD_AsyncSendEjhPh Can.o + 0x08002560 0x00000064 Code RO 178 .text._ZN14CAN_transmiter19communication_checkEv Can.o + 0x080025c4 0x00000038 Code RO 176 .text._ZN14CAN_transmiter4initEv Can.o + 0x080025fc 0x00000074 Code RO 1000 .text._ZSt11__terminatePFvvE libcppabi_wx.l(cxa_handlers.cpp.o) + 0x08002670 0x00000030 Code RO 991 .text._ZSt9terminatev libcppabi_wx.l(cxa_handlers.cpp.o) + 0x080026a0 0x0000000a Code RO 986 .text.__clang_call_terminate libcppabi_wx.l(cxa_exception.cpp.o) + 0x080026aa 0x00000002 PAD + 0x080026ac 0x0000006c Code RO 934 .text.__cxa_begin_catch libcppabi_wx.l(cxa_exception.cpp.o) + 0x08002718 0x0000000a Code RO 1355 .text.__cxa_get_globals libcppabi_wx.l(cxa_exception_storage.cpp.o) + 0x08002722 0x0000000a Code RO 1357 .text.__cxa_get_globals_fast libcppabi_wx.l(cxa_exception_storage.cpp.o) + 0x0800272c 0x00000026 Code RO 240 .text.can_deinit gd32c10x_can.o + 0x08002752 0x00000002 PAD + 0x08002754 0x00000114 Code RO 246 .text.can_fd_init gd32c10x_can.o + 0x08002868 0x000000b2 Code RO 248 .text.can_filter_init gd32c10x_can.o + 0x0800291a 0x00000002 PAD + 0x0800291c 0x00000176 Code RO 244 .text.can_init gd32c10x_can.o + 0x08002a92 0x00000002 PAD + 0x08002a94 0x00000008 Code RO 290 .text.can_interrupt_enable gd32c10x_can.o + 0x08002a9c 0x00000016 Code RO 300 .text.can_interrupt_flag_clear gd32c10x_can.o + 0x08002ab2 0x00000002 PAD + 0x08002ab4 0x00000066 Code RO 298 .text.can_interrupt_flag_get gd32c10x_can.o + 0x08002b1a 0x00000002 PAD + 0x08002b1c 0x000001f4 Code RO 274 .text.can_message_receive gd32c10x_can.o + 0x08002d10 0x000001f0 Code RO 268 .text.can_message_transmit gd32c10x_can.o + 0x08002f00 0x00000018 Code RO 278 .text.can_receive_message_length_get gd32c10x_can.o + 0x08002f18 0x00000072 Code RO 242 .text.can_struct_para_init gd32c10x_can.o + 0x08002f8a 0x00000002 PAD + 0x08002f8c 0x000001b0 Code RO 174 .text.canfd_config Can.o + 0x0800313c 0x00000018 Code RO 314 .text.crc_deinit gd32c10x_crc.o + 0x08003154 0x00000022 Code RO 73 .text.delay_1ms systick.o + 0x08003176 0x00000002 PAD + 0x08003178 0x00000018 Code RO 75 .text.delay_decrement systick.o + 0x08003190 0x00000024 Code RO 380 .text.dma_channel_disable gd32c10x_dma.o + 0x080031b4 0x00000024 Code RO 378 .text.dma_channel_enable gd32c10x_dma.o + 0x080031d8 0x00000074 Code RO 368 .text.dma_init gd32c10x_dma.o + 0x0800324c 0x00000022 Code RO 414 .text.dma_interrupt_enable gd32c10x_dma.o + 0x0800326e 0x00000002 PAD + 0x08003270 0x0000000e Code RO 412 .text.dma_interrupt_flag_clear gd32c10x_dma.o + 0x0800327e 0x00000002 PAD + 0x08003280 0x0000003a Code RO 410 .text.dma_interrupt_flag_get gd32c10x_dma.o + 0x080032ba 0x00000002 PAD + 0x080032bc 0x0000001a Code RO 366 .text.dma_struct_para_init gd32c10x_dma.o + 0x080032d6 0x00000002 PAD + 0x080032d8 0x0000002c Code RO 93 .text.fputc initial.o + 0x08003304 0x00000010 Code RO 553 .text.fwdgt_counter_reload gd32c10x_fwdgt.o + 0x08003314 0x00000098 Code RO 223 .text.gd_eval_com_init gd32c10x_eval.o + 0x080033ac 0x00000004 Code RO 578 .text.gpio_bit_reset gd32c10x_gpio.o + 0x080033b0 0x000002c0 Code RO 574 .text.gpio_init gd32c10x_gpio.o + 0x08003670 0x00000080 Code RO 592 .text.gpio_pin_remap_config gd32c10x_gpio.o + 0x080036f0 0x0000003a Code RO 14 .text.main main.o + 0x0800372a 0x00000002 PAD + 0x0800372c 0x00000060 Code RO 621 .text.nvic_irq_enable gd32c10x_misc.o + 0x0800378c 0x0000001c Code RO 625 .text.nvic_vector_table_set gd32c10x_misc.o + 0x080037a8 0x0000010c Code RO 771 .text.rcu_clock_freq_get gd32c10x_rcu.o + 0x080038b4 0x0000001e Code RO 689 .text.rcu_periph_clock_enable gd32c10x_rcu.o + 0x080038d2 0x00000002 PAD + 0x080038d4 0x00000020 Code RO 699 .text.rcu_periph_reset_disable gd32c10x_rcu.o + 0x080038f4 0x0000001e Code RO 697 .text.rcu_periph_reset_enable gd32c10x_rcu.o + 0x08003912 0x00000002 PAD + 0x08003914 0x00000048 Code RO 69 .text.systick_config systick.o + 0x0800395c 0x00000006 Code RO 1340 .text.unlikely.abort_message libcppabi_wx.l(abort_message.cpp.o) + 0x08003962 0x00000002 PAD + 0x08003964 0x0000006a Code RO 787 .text.usart_baudrate_set gd32c10x_usart.o + 0x080039ce 0x00000002 PAD + 0x080039d0 0x00000008 Code RO 813 .text.usart_data_transmit gd32c10x_usart.o + 0x080039d8 0x0000007a Code RO 785 .text.usart_deinit gd32c10x_usart.o + 0x08003a52 0x00000002 PAD + 0x08003a54 0x0000000a Code RO 795 .text.usart_enable gd32c10x_usart.o + 0x08003a5e 0x00000002 PAD + 0x08003a60 0x00000010 Code RO 875 .text.usart_flag_get gd32c10x_usart.o + 0x08003a70 0x00000014 Code RO 801 .text.usart_receive_config gd32c10x_usart.o + 0x08003a84 0x00000014 Code RO 799 .text.usart_transmit_config gd32c10x_usart.o + 0x08003a98 0x00000020 Code RO 1285 i.__0printf$8 mc_w.l(printf8.o) + 0x08003ab8 0x0000000e Code RO 1932 i.__scatterload_copy mc_w.l(handlers.o) + 0x08003ac6 0x00000002 Code RO 1933 i.__scatterload_null mc_w.l(handlers.o) + 0x08003ac8 0x0000000e Code RO 1934 i.__scatterload_zeroinit mc_w.l(handlers.o) + 0x08003ad6 0x00000002 PAD + 0x08003ad8 0x00000410 Code RO 1292 i._printf_core mc_w.l(printf8.o) + 0x08003ee8 0x00000024 Code RO 1293 i._printf_post_padding mc_w.l(printf8.o) + 0x08003f0c 0x0000002e Code RO 1294 i._printf_pre_padding mc_w.l(printf8.o) + 0x08003f3a 0x00000002 PAD + 0x08003f3c 0x00000024 Code RO 1066 i.puts mc_w.l(puts.o) + 0x08003f60 0x00000100 Data RO 57 .rodata._ZL4sbox aes128.o + 0x08004060 0x00000400 Data RO 158 .rodata._ZZ24calculate_crc32_with_keyPKhS0_PhE9crc_table OTA.o + 0x08004460 0x00000008 Data RO 773 .rodata.cst8 gd32c10x_rcu.o + 0x08004468 0x00000007 Data RO 302 .rodata.g_can_fdlength_table gd32c10x_can.o + 0x0800446f 0x00000100 Data RO 56 .rodata.inv_sbox aes128.o + 0x0800456f 0x0000005c Data RO 199 .rodata.str1.1 Can.o + 0x080045cb 0x00000001 PAD + 0x080045cc 0x00000020 Data RO 1931 Region$$Table anon$$obj.o Execution Region RW_NOINIT (Base: 0x20000000, Size: 0x00000000, Max: 0x00007200, ABSOLUTE, UNINIT) @@ -147,33 +154,31 @@ Memory Map of the image **** No section assigned to this execution region **** - Execution Region RW_RAM0 (Base: 0x20000000, Size: 0x00000968, Max: 0x00007200, ABSOLUTE) + Execution Region RW_RAM0 (Base: 0x20000000, Size: 0x00000a70, Max: 0x00007200, ABSOLUTE, COMPRESSED[0x00000020]) Base Addr Size Type Attr Idx E Section Name Object - 0x20000000 0x00000004 Data RW 1454 .data mc_w.l(stdout.o) - 0x20000004 0x000000e8 Data RW 139 .data.CAN0_transmiter Can.o - 0x200000ec 0x00000004 Data RW 857 .data.SystemCoreClock system_gd32c10x.o - 0x200000f0 0x00000004 Data RW 1302 .data.__cxa_terminate_handler libcppabi_wx.l(cxa_default_handlers.cpp.o) - 0x200000f4 0x00000004 PAD - 0x200000f8 0x00000004 Zero RW 105 .bss._ZGVZN10OTAHandler7processEvE4zero OTA.o - 0x200000fc 0x00000004 Zero RW 33 .bss._ZL5delay systick.o - 0x20000100 0x0000000c Zero RW 1311 .bss._ZN10__cxxabiv1L10eh_globalsE libcppabi_wx.l(cxa_exception_storage.cpp.o) - 0x2000010c 0x00000001 Zero RW 104 .bss._ZZN10OTAHandler7processEvE4zero OTA.o - 0x2000010d 0x00000003 PAD - 0x20000110 0x00000008 Zero RW 142 .bss.can_rx_buffer Can.o - 0x20000118 0x00000008 Zero RW 143 .bss.can_tx_buffer Can.o - 0x20000120 0x0000001c Zero RW 140 .bss.dma_rx_parameter Can.o - 0x2000013c 0x0000001c Zero RW 141 .bss.dma_tx_parameter Can.o - 0x20000158 0x00000010 Zero RW 103 .bss.ota OTA.o - 0x20000168 0x00000800 Zero RW 842 STACK startup_gd32c10x.o + 0x20000000 0x00000004 Data RW 1502 .data mc_w.l(stdout.o) + 0x20000004 0x000000e8 Data RW 194 .data.CAN0_transmiter Can.o + 0x200000ec 0x00000004 Data RW 912 .data.SystemCoreClock system_gd32c10x.o + 0x200000f0 0x00000004 Data RW 1350 .data.__cxa_terminate_handler libcppabi_wx.l(cxa_default_handlers.cpp.o) + 0x200000f4 0x0000011c Data RW 155 .data.ota OTA.o + 0x20000210 0x00000004 Zero RW 79 .bss._ZL5delay systick.o + 0x20000214 0x0000000c Zero RW 1359 .bss._ZN10__cxxabiv1L10eh_globalsE libcppabi_wx.l(cxa_exception_storage.cpp.o) + 0x20000220 0x00000001 Zero RW 156 .bss._ZZN10OTAHandler7processEvE4zero OTA.o + 0x20000221 0x00000007 PAD + 0x20000228 0x00000008 Zero RW 197 .bss.can_rx_buffer Can.o + 0x20000230 0x00000008 Zero RW 198 .bss.can_tx_buffer Can.o + 0x20000238 0x0000001c Zero RW 195 .bss.dma_rx_parameter Can.o + 0x20000254 0x0000001c Zero RW 196 .bss.dma_tx_parameter Can.o + 0x20000270 0x00000800 Zero RW 897 STACK startup_gd32c10x.o - Execution Region ARM_LIB_HEAP (Base: 0x20000968, Size: 0x00000c00, Max: 0x00000c00, ABSOLUTE) + Execution Region ARM_LIB_HEAP (Base: 0x20000a70, Size: 0x00000c00, Max: 0x00000c00, ABSOLUTE) Base Addr Size Type Attr Idx E Section Name Object - 0x20000968 0x00000c00 Zero RW 1 ARM_LIB_HEAP.bss anon$$obj.o + 0x20000a70 0x00000c00 Zero RW 1 ARM_LIB_HEAP.bss anon$$obj.o Execution Region ARM_LIB_STACK (Base: 0x20007e00, Size: 0x00000200, Max: 0x00000200, ABSOLUTE) diff --git a/out/Robot_V2/GD32C103CB/Release/Robot_V2.hex b/out/Robot_V2/GD32C103CB/Release/Robot_V2.hex index e30d4e0..efe3c77 100644 --- a/out/Robot_V2/GD32C103CB/Release/Robot_V2.hex +++ b/out/Robot_V2/GD32C103CB/Release/Robot_V2.hex @@ -1,14 +1,14 @@ :020000040800F2 -:1000000070090020650100086D0100086F010008FB +:10000000700A0020650100086D0100086F010008FA :10001000710100087301000875010008000000006C :100020000000000000000000000000007701000850 :1000300079010008000000007B0100087D01000834 :100040008101000881010008810100088101000888 :100050008101000881010008810100088101000878 :100060008101000881010008810100088101000868 -:10007000810100088101000881010008790300085E -:10008000C503000881010008810100088101000802 -:10009000AD0200088101000881010008810100080B +:10007000810100088101000881010008CD0300080A +:1000800019040008810100088101000881010008AD +:1000900001030008810100088101000881010008B6 :1000A0008101000881010008810100088101000828 :1000B0008101000881010008810100088101000818 :1000C0008101000881010008810100088101000808 @@ -20,673 +20,1105 @@ :1001200081010008810100088101000881010008A7 :1001300081010008000000000000000081010008AB :100140008101000881010008810100088101000887 -:10015000DFF80CD000F072F800480047412000089A +:10015000DFF80CD000F080F800480047F1360008C6 :10016000008000200748804707480047FEE7FEE779 :10017000FEE7FEE7FEE7FEE7FEE7FEE7034800478F -:10018000FEE70000CD04000851010008E118000856 +:10018000FEE7000041040008510100087931000831 :1001900040EA01039B0703D009E008C9121F08C009 :1001A000042AFAD203E011F8013B00F8013B521E89 :1001B000F9D27047D2B201E000F8012B491EFBD200 :1001C00070470022F6E710B513460A460446194662 -:1001D000FFF7F0FF204610BD2DE9F05F0546002037 -:1001E00092469B4688460646814640241BE02846A8 -:1001F00041464746224600F048F853465A46C01A40 -:10020000914110D311461846224600F02FF82D1ABE -:1002100067EB01084F4622460120002100F026F836 -:1002200017EB00094E41201EA4F10104DFDC484613 -:1002300031462A464346BDE8F09F70471CB5094841 -:100240000090094801900546009C06E0E06840F0F7 -:10025000010394E8070098471034AC42F6D3FFF747 -:100260007BFF0000F8290008182A0008202A04DB78 -:10027000203A00FA02F1002070479140C2F12003B9 -:1002800020FA03F3194390407047202A04DB203AF8 -:1002900021FA02F00021704721FA02F3D040C2F1A6 -:1002A000200291400843194670470000B0B546F25D -:1002B0000044C4F2000420464CF2810100F0BAFF71 -:1002C00040B320464CF2810100F0A8FF04F5CE3582 -:1002D0002846042101F010FB2046002101F0D0F94E -:1002E00040F22812C2F2000210612846042101F0F7 -:1002F00027FB2846042101F011FB40F20405C2F25D -:10030000000505F194022046002100F0C7FF0120FE -:1003100085F8E40020464CF2C20100F08BFF38B1B2 -:1003200020464CF2C20100F079FF0AA002F0CCFA9C -:1003300020464CF2031100F07DFF002808BFB0BD3D -:1003400020464CF2031100F069FF06A0BDE8B04062 -:1003500002F0BABA43414E204649464F30206675F6 -:100360006C6C000043414E204649464F30206F766A -:100370006572666C6F77000010B50024C4F2020449 -:1003800020460421022201F02FFB002808BF10BDE7 -:1003900020460421012201F01FFB40F20400C2F2BA -:1003A000000090F89E205AB140F21811082A28BF88 -:1003B00008229F30C2F20001BDE81040FFF7E8BEFE -:1003C00010BD000010B50024C4F20204204605212F -:1003D000022201F009FB002808BF10BD20460521BC -:1003E0000222BDE8104001F0F7BA000080B541F2EA -:1003F000040EC4F2020EDEF8001041F2002201F0F9 -:100400000C0140F2EC0CC0F27A020829C2F2000C96 -:1004100047D1DEF80030DB0304D440F60013C0F20D -:100420003D0324E0DEF82830DEF828105B0046F6B5 -:100430000043C0F2DC2358BF1346C90310D5DEF8D1 -:100440002810DEF82820C1F303110131C2F3032282 -:10045000B3FBF1F10232112A08BF142202FB01F3AF -:10046000DEF8281001F00F010131B3FBF1F3DEF8E3 -:100470000010DEF800201020C1F3834100EA526032 -:10048000084401210F2838BF0221084400FB03F271 -:100490000F28CCF8002006D103EB4300400000EB0E -:1004A0005302CCF80020DEF8000004A1C0F30310D2 -:1004B000085C22FA00F0CCF8000080BD00000000CB -:1004C00000000000010203040607080982B04EF68E -:1004D0008851CEF200010A6841F2000042F4700235 -:1004E000C4F202000A60016841F001010160016884 -:1004F000890709D4016889075CBF01685FEA8171D7 -:1005000002D401688907F2D5416801F00C0108297D -:1005100040F0C28000210191019A4F2A18D800BFF3 -:10052000019A01320192019A4F2A11D8019A01329F -:100530000192019A4F2A0BD8019A01320192019A35 -:100540004F2A05D8019A01320192019A502AE7D325 -:1005500042680092009A22F0F0020092009A42F063 -:1005600080020092009A4260019101994F2917D8A8 -:1005700001990131019101994F2911D80199013156 -:10058000019101994F290BD80199013101910199EC -:100590004F2905D801990131019101995029E7D3DB -:1005A00041680091009921F0F0010091009941F01B -:1005B000900100910099416000210191019A4F2A18 -:1005C00018D800BF019A01320192019A4F2A11D81E -:1005D000019A01320192019A4F2A0BD8019A0132F5 -:1005E0000192019A4F2A05D8019A01320192019A8B -:1005F000502AE7D342680092009A22F0F00200925B -:10060000009A42F0A0020092009A42600191019982 -:100610004F2917D801990131019101994F2911D81A -:1006200001990131019101994F290BD801990131AB -:10063000019101994F2905D8019901310191019941 -:100640005029E7D341680091009921F0F001009111 -:10065000009941F0B00100910099416000210191A1 -:1006600001994F2918D800BF0199013101910199D1 -:100670004F2911D801990131019101994F290BD8C6 -:1006800001990131019101994F2905D80199013151 -:10069000019101995029E7D3416821F0030141609C -:1006A00000210191019A12097C2A1BD8019A01327A -:1006B0000192019A12097C2A14D8019A01320192FE -:1006C000019A12097C2A0DD8019A01320192019AED -:1006D00012097C2A06D8019A01320192019AB2F5D8 -:1006E000FA6FE3D302684FF6FF73CEF6F6231A4093 -:1006F00002604FF47F0282604160C162016821F4B0 -:1007000080210160016841F4803101604FF6FC7185 -:10071000026892030BD4026892035CBF02685FEA2E -:10072000823204D419B1026804399203F0D5016809 -:10073000890300D4FEE742F20001C4F202010A6814 -:10074000032363F302020A6041684FF6FF724160BF -:100750004168CDF6C3724160416841F480614160F7 -:1007600041681140416041684FF2000241F0005180 -:1007700041F454114160C16ACBF6FE721140C1626E -:10078000C16A41F4843141F01901C162016841F04C -:10079000806101600168090109D4016809015CBF39 -:1007A00001685FEA011102D401680901F2D501680C -:1007B00041F0807101600168890109D401688901F3 -:1007C0005CBF01685FEA811102D401688901F2D53A -:1007D00041680191019921F003010191019941F0D2 -:1007E00002010191019941604168090709D44168FA -:1007F00009075CBF41685FEA017102D441680907DB -:10080000F2D54FF00060002102B001F06BBC000097 -:1008100080B543F60000C4F2010001F023FA012084 -:1008200080BD00002DE9F04782B0164640F201126B -:100830009142824621D0B1F5807F40F093804BA059 -:1008400002F042F83268B2F5E03F00F28B800020FF -:10085000CAE9020201208AF8000040F20400C2F254 -:1008600000004FF4817100F051FA9AF8001042A094 -:1008700002B0BDE8F04701F0D5BD042B72D39AF861 -:100880000000C0076ED0D6F800901F1FDAF80C00E9 -:1008900009FB07F4844265D244F20008C0F6000860 -:1008A00001F0D8F85FB1043604EB0805002400BF5E -:1008B0003159281901F0E2F80434BC42F8D301F0B0 -:1008C000BFF8DAF808004FF481713844CAF808001C -:1008D00040F20400C2F200004A4600F017FADAE9DA -:1008E000020188423ED300208AF80000019001995D -:1008F00048F2A060C0F20100814217DA019901318B -:1009000001910199814211DA019901310191019915 -:1009100081420BDA0199013101910199814205DA95 -:1009200001990131019101998142E7DBD8F800007A -:1009300047F6FF718843B0F1005F13D1D8F8040087 -:10094000A0F10060A0F58040800B06280AD872B69E -:10095000D8F8000080F30888D8F8040002B0BDE899 -:10096000F047004702B0BDE8F08700BF7265712014 -:100970004F54410D000000007374617274204F5495 -:100980004125640D0A00000010B50446007888B1C6 -:10099000012000F093FF40F20C10C2F20000016849 -:1009A00042F2117201319142016022BF00210160C7 -:1009B000217010BD40F20C10C2F200000021016055 -:1009C00040F2F800C2F200000078BFF35F8FC0076A -:1009D00015D040F2040040F21013C2F20000C2F23F -:1009E000000340F20311002200F06AF821780EA003 -:1009F00001F018FD0A20BDE8104000F05FBF40F292 -:100A0000F800C2F2000001F055FC0028E1D0207887 -:100A100040F21011C2F20001087040F2F800C2F278 -:100A2000000001F05DFCD4E777616974204F544108 -:100A300025640D0A0000000003C844F64E42C0F2CF -:100A40004302000A82EA112240EA016042F62B3199 -:100A5000C4F2437148401043B0FA80F04009704737 -:100A600010B500F019FAD0F808E0BEF1000F25D05B -:100A7000714651F828CF44F64E424B68C0F243020B -:100A800082EA13244FEA1C2242EA036242F62B3325 -:100A9000C4F243735A4022430CD1DEF82420013AB9 -:100AA000CEF8242008D1DEF8202082600020CEF885 -:100AB000200001E000228260084610BD00F098F995 -:100AC0002DE9F04146F20048C4F20008D8F8005081 -:100AD000ED0304D442F60810C0F600004CE01BB150 -:100AE000412A03D32AA047E035A045E0416040F207 -:100AF00001110425A0F84B1000210581827280F8B5 -:100B00004D1062B3042A02F0030C01D2002211E05E -:100B100002F07C05591C00228C1814F8016C87180F -:100B2000FE728E5C04323E73667895427E73A678C0 -:100B3000BE73F1D1BCF1000F11D09D5C00F10B012F -:100B4000BCF1010F8D540AD0551C13F805E0BCF11F -:100B5000020F01F805E002D002329B5C8B5405467F -:100B60004046294600F094FC032885F8500008D13F -:100B700042F62010C0F6000001F0A6FE0020BDE8FD -:100B8000F0814046012100F045FB0120BDE8F081E5 -:100B900043414E46442064617461206C656E677405 -:100BA000682065786365656473206D6178696D752B -:100BB0006D206F662036342062797465730D0000F5 -:100BC000496E76616C6964206461746120706F693C -:100BD0006E7465720D000000F0B581B0044690F8A7 -:100BE000E500012804BF002084F8E50094F8E40043 -:100BF00001283BD1D4F8981022A001F013FC94F8FE -:100C00009E0068B104F19F06002725A5F15D2846E6 -:100C100001F008FC94F89E3001379F42F6D300E0C3 -:100C20000023D4F89810B1F5807F0ED040F2011067 -:100C3000814215D140F2601004F19F02C2F200001F -:100C400040F20111FFF7EEFD0DE040F2601004F1FB -:100C50009F02C2F200004FF48071FFF7E3FD02E053 -:100C600011A001F0DFFB002084F8E40040F26010E6 -:100C7000C2F20000017811A001B0BDE8F04001F01F -:100C8000D1BB00BF0D0A2063616E30202558207251 -:100C900065636569766520646174613A00000000EF -:100CA0002025303278000000556E6B6E6F776E2015 -:100CB00043414E2049443A2025580A004F544120D0 -:100CC00072657175657374207265636569766564B4 -:100CD00025640A0010B5044600F018FD03202146E3 -:100CE00000F0DAFC04F19401042000F0D5FC40F29D -:100CF0001810C2F20000002140F22012C0E90011D9 -:100D0000C2F2000200201160516010BDB0B546F281 -:100D10000044C4F20004C0F851202268D20304D475 -:100D200042F60810C0F600001EE04FF48062A0F802 -:100D3000092004220272416040F20111D0F85120D2 -:100D4000A0F84B100021054680F84D10C0F80B208C -:100D50002046294600F09CFB032885F8500007D167 -:100D600042F62010C0F6000001F0AEFD0020B0BD3C -:100D70002046012100F04EFA0120B0BD80B5804729 -:100D800004A001F0B1FA00F051F80CA001F0ACFAA7 -:100D900000F046F87465726D696E6174655F686134 -:100DA0006E646C657220756E6578706563746564D9 -:100DB0006C792072657475726E6564007465726D0D -:100DC000696E6174655F68616E646C657220756ED2 -:100DD00065787065637465646C7920746872657792 -:100DE00020616E20657863657074696F6E00000025 -:100DF00010B500F056F808B1046834B940F2F000BC -:100E0000C2F200000068FFF7B9FF04F12800FFF705 -:100E100013FE0028F2D06069FFF7B0FF00F000F881 -:100E200080B500F003F8FFF7E3FF000070B5D0E9EC -:100E30000065044600F030F844F64E41320A42F6AE -:100E40002B33C0F2430142EA0562C4F2437381EAE4 -:100E500015215A401143A4F1280112D154F80C2C49 -:100E6000002A48BF524203680132994244F80C2CD0 -:100E70001CBF44F8103C0160416801394160606A60 -:100E800070BD0268002A02BF016004F1580070BD05 -:100E9000FFF7AEFFFFF7C4FF40F20010C2F2000000 -:100EA000704740F20010C2F20000704710B546F2E1 -:100EB0000041C4F2000140F21A44884208BF40F2E7 -:100EC0001944204601F0C2F92046BDE8104001F067 -:100ED000ADB90000002904BF00207047B0B502681A -:100EE00040F2040E22F0020202600368CFF6FF7E99 -:100EF00043F00103036073464268D20704BF4268AF -:100F00005FEAC2720AD14268D20704BF42685FEA50 -:100F1000C27203D1002B03F10403EDD14268D20762 -:100F200001D100215CE00B7C4FF0E0654C7C05EAD0 -:100F300003638D7C64F3134305F007048D8A43EA51 -:100F400004536C1E6FF39F2423444A7891F802C027 -:100F5000C362D1E90234012A43EA040323F0040303 -:100F600018BF0433BCF1010F15D1D1F804C0BCF196 -:100F7000000FD6D0DCF800209CF8055002F02002CB -:100F80001A4342F010039CF8042002F07F0265F33C -:100F90000E22826201E023F01003097823F001029F -:100FA000012908BF01320262016821F001010160DC -:100FB0004168C90713D04168C90710D04168C90703 -:100FC0000DD04268BEF1000F714618BF0121D20753 -:100FD00006D0BEF1000F0EF1040EE9D100E00121B0 -:100FE000BDE8B04008467047B0B546F20061C4F2B3 -:100FF000000144890A684FF0010C42F001020A60C6 -:10100000CB690CFA04F5AB43CB61C3896FEA050CDD -:10101000012B10D023BBCB6803EA0C03CB60B0F8E4 -:1010200006E0438843EA0E434FEAC40E01EBC404D2 -:10103000236403460DE0CB682B43CB60B0F800E09F -:10104000438843EA0E434FEAC40E01EBC404236411 -:10105000831D84881B8843EA044301EB0E04636408 -:1010600083894C68002B44EA050208BF04EA0C029D -:101070004A6002894B69002A43EA050408BF03EA73 -:101080000C044C61007C012802D1C8692843C86166 -:10109000086820F001000860B0BD000070B502686B -:1010A00040F2040C22F0020202600368CFF6FF7CDB -:1010B00043F00103036063464268D20704BF4268FD -:1010C0005FEAC2720AD14268D20704BF42685FEA8F -:1010D000C27203D1002B03F10403EDD14268D207A1 -:1010E00004BF002070BD036ADA0724D143F0010277 -:1010F00002628C780A78250491F801E045EA8415AB -:1011000041F60044CE789207C0F20F046EF31C62E1 -:1011100025402A44350545EA862646F20005C0F2F8 -:1011200070052E404D8932446E1E6FF39F26324467 -:10113000C26103621EE00A784B788E78920763F3EF -:101140001C62330443EA861341F60046CD78C0F2B0 -:101150000F0633401A442B0546F2000643EA852366 -:10116000C0F2700633404E891A44731E6FF39F23FA -:101170001A44C26102680B7922F080024E798D799F -:10118000CC79012B08BF803202600268012E22F068 -:10119000400208BF403202600268012D22F02002A6 -:1011A00008BF203202600268012C22F0100218BF32 -:1011B000103202600A7A0368012A23F0080318BF7C -:1011C00008330360497A0268012922F0040208BF4B -:1011D00004320260016821F0010101604168C90721 -:1011E00015D04168C9071CBF41685FEAC1710ED0C4 -:1011F0004268BCF1000F614618BF0121D20704D03C -:10120000BCF1000F0CF1040CE8D1084670BD0120C0 -:1012100070BD00004269114341617047C1F38412FF -:10122000090B4FF0010C0B580CFA02F21A430A504A -:101230007047000048F2CB02C0F20102914210D088 -:101240008422C0F20102914207D04CF28102914205 -:101250000BD1C26802F0030210E0026902F003023F -:101260000CE08269C2F3021208E00A0B52F800C0D7 -:10127000C1F3841301229A4002EA0C02406901F092 -:101280001F01012303FA01F10840002A18BF0122BF -:10129000002818BF0120104070470000B0B582B090 -:1012A00000EB0113D3F8B05115F004051572D3F813 -:1012B000B0C119BF4FEADC0555604FEA5C551560B7 -:1012C000D3F8B05105F002055572D3F8B4512D0A88 -:1012D00082F84B50D3F8B4C15FFA8CF5ED0982F86F -:1012E0004C50056AED0727D14FFA8CF5002D63D4D9 -:1012F000D3F8B45105F00F059572D3F8B851D572F3 -:10130000D3F8B8512D0A1573D3F8B8512D0C557375 -:10131000D3F8B8512D0E9573D3F8BC51D573D3F8CB -:10132000BC512D0A1574D3F8BC512D0C5574D3F84B -:10133000BC311B0E937489E0D3F8B45105F00F0C47 -:10134000BCF1080F06D942F6F405C0F60005654465 -:1013500015F809CC82F80AC0D3F8B451BCF10404E2 -:10136000C5F3401582F84D50D3F8B451C5F30015BC -:1013700082F84E504FF0FF3505EB9C05B5FA85F528 -:101380004FEA551518BF0124254005EB9C0C0B3284 -:101390005FEA0C65019218D01CF003021AD0D3F852 -:1013A000B851019C012A2560019D05F104050195B4 -:1013B00012D1ACF1010225E029A2044610460D46E7 -:1013C00001F082FA2946204640E0D3F8B821019B7B -:1013D0001A603BE0624615E0D3F8B851019C022A3E -:1013E0002560019D05F10405019502D1ACF10202D1 -:1013F00008E0D3F8B821019D2A60019A04320192D5 -:10140000ACF103025FFA8CF5042D1FD3D3F8B85169 -:10141000019C043A2560019D04350195D3F8B8512B -:10142000019C2560019D04350195D3F8B851019CBC -:101430002560019D04350195D3F8B851019C2560C4 -:10144000019D140605F104050195DFD11022002944 -:1014500008BF0C22815841F02001815002B0B0BD7C -:1014600043414E2046442066756E6374696F6E205A -:1014700064697361626C65642062757420464420FF -:101480006672616D652072656365697665640D00DD -:10149000F0B581B005468068400108D4A868000115 -:1014A00007D4A868C00006D4032001B0F0BD002016 -:1014B00002E0012000E0022005F5C07C03015CF899 -:1014C000032002F001024CF803200A7A1AB14C689A -:1014D00042EAC40401E00A6854054A7A91F84BE0F4 -:1014E00053F80C6022433243BEF1000F43F80C2046 -:1014F00003D02A6AD20721D1FEE705F5C274E2586B -:1015000022F0BF02E2508A7A092A24BF08228A7296 -:101510001E5932431A51D1F80B20EE18C6F8882113 -:101520000F314FF4C67409682A19D1505CF80310C2 -:1015300041F001014CF8031001B0F0BD8C7A092C88 -:1015400022462FD291F84C6091F84D7042EACE12AB -:1015500042EA461242EA0712EF18C7F884214FF018 -:10156000FF3202EB9402B2FA82F25209271F18BF2F -:1015700001273A4002EB940E0B315FEA0E620091B4 -:1015800023D01EF0030405F5C47122D0009A012C6B -:1015900012685A50009A02F1040200921BD1AEF177 -:1015A00001022CE0A4F10C02D6B2920142EA9602AA -:1015B000D2B20E2A08D242F22F26D640F60703D026 -:1015C00021A656F82220BDE7FEE700994FF4C47427 -:1015D000A9E7724613E0009A022C1268CA50009ADA -:1015E00002F10402009202D1AEF1020207E0009A79 -:1015F0001268CA50009A04320092AEF103025FFAF8 -:101600008EF7042F92D300BF009F043A3F6816065E -:10161000CF50009F07F104070097009F3F68CF500D -:10162000009F07F104070097009F3F68CF50009F7D -:1016300007F104070097009F3F68CF50009F07F114 -:1016400004070097E0D171E7090000000A000000DC -:101650000B0000000C000000090000000D0000005D -:101660000900000009000000090000000E00000051 -:101670000900000009000000090000000F00000040 -:1016800029B101291CBF00207047102100E00C2166 -:10169000405800F00300704780B579B104280FD896 -:1016A000DFE800F0032A14250F004FF08060886007 -:1016B000002048604FF40030086080BDFEE700BFA6 -:1016C000FEE708464F21FEF77CFD80BD4FF48060A9 -:1016D00088824FF4007008820120887400204FF443 -:1016E000807288700A80C1E90100C86080BD084628 -:1016F0004E21FEF766FD80BD00204FF48032087455 -:10170000CA6008604860886080BD00002DE9F04F25 -:1017100091B040F2197000F079FD40F2036000F0E2 -:1017200075FD4FF4C06000F071FD0024C4F20204A6 -:10173000A4F574452846482103224FF480734FF4E2 -:10174000807A00F0DDFA2846182103224FF4007356 -:101750004FF4007800F0D4FA4FF4EA1001214FF072 -:10176000010900F02DFC2846102103224FF40053FC -:101770004FF4005B00F0C4FA28464FF4005100F02B -:10178000BDFA4FF4A06000F041FD40F22815C2F20E -:101790000005284600F046F9A4F5CC3040F21811B7 -:1017A000A0F51270C2F2000100270826C5E9000763 -:1017B000C5E90217204604212A46AF76C5E9046B25 -:1017C000A5F818A000F0BCF840F24415C2F20005DC -:1017D000284600F027F9A4F5C03040F22011A0F50A -:1017E000D450C2F20001C5E90007C5E9021720463E -:1017F00005212A4685F81A90C5E9046BA5F818A0BA -:1018000000F09EF82046042100F088F820460521CB -:1018100000F084F8A4F5CE352846FFF747FB4FF0DB -:1018200080700F9040F20110C0F2060010904FF04F -:1018300083700E900EA92846FFF730FC08AE0220F8 -:101840003146FFF729FF40F20110ADF8200040F2C9 -:101850000440ADF81C0006A8CDE909070620ADF844 -:101860003400284631468DF8229006970B97ADF844 -:1018700030808DF83270FFF72DFB4FF48030CDE9CA -:10188000037001A8CDE901778DF81490FFF7ACFB48 -:1018900014200121002200F0F5FB28460221FFF769 -:1018A000B9FC0F200121012200F0ECFB20460421AD -:1018B000022200F07FF811B0BDE8F08F10B540F2C1 -:1018C000FC04C2F20004206004E000BF00F0C2F992 -:1018D00000F0C0F92068002808BF10BDF6E700003E -:1018E00040F2FC00C2F200000168002908BF704706 -:1018F000016801390160704740F20042C4F20202FF -:10190000904202D1052900D3FEE701EB810100EBF3 -:101910008100816821F001018160704740F200423E -:10192000C4F20202904202D1052900D3FEE701EB86 -:10193000810100EB8100816841F001018160704705 -:1019400040F20043C4F20203984202D1052900D3B9 -:10195000FEE780B5136801EB810100EB81000361B4 -:1019600091684161118AC1608168536821F47C5C8F -:10197000D168D2F814E043EA0C03194341EA0E019E -:101980008160117E8368012923F0400308BF403342 -:101990008360517E8368012923F0800308BF803370 -:1019A0008360917E8268002922F0100218BF1032F5 -:1019B000826080BD40F20043C4F20203984202D12B -:1019C000052900D3FEE701EB810100EB810081686E -:1019D00011438160704700008900436802FA01F1F9 -:1019E0001943416070470000082A19D80123934029 -:1019F00013F48A7F14D08B0001EB8101D0F800C072 -:101A000000EB8100806802FA03F31CEA030100EA9C -:101A1000020018BF0121002818BF012008407047AC -:101A2000FEE7000050B10021C0F81710C0E9001116 -:101A3000C0E90211C0E90411704700BFFEE70000D1 -:101A400042F21000C4F20200016841F0800101601E -:101A50007047000042F20400C4F20200C1680906A7 -:101A600058BF704740F22311C4F26751016048F635 -:101A7000AB11CCF6EF5101607047000080B540F229 -:101A8000000CCFF6F07C42F20C0EC4F2020E63465C -:101A9000DEF80020D2071CBFDEF800205FEAC27229 -:101AA00042D0DEF80020D2071CBFDEF800205FEA3B -:101AB000C27239D0DEF80020D2071CBFDEF8002049 -:101AC0005FEAC27230D0DEF80020D2071CBFDEF819 -:101AD00000205FEAC27227D0DEF80020D2071CBFC8 -:101AE000DEF800205FEAC2721ED0DEF80020D207C6 -:101AF0001CBFDEF800205FEAC27215D0DEF80020BD -:101B0000D2071CBFDEF800205FEAC2720CD0DEF8FC -:101B10000020D2071CBFDEF800205FEAC27203D0AB -:101B20001033B5D1052080BDDEF80020D20644BFB9 -:101B3000042080BDDEF80020520744BF022080BD93 -:101B4000DEF80020120744BF032080BDDEF8042029 -:101B500042F00102CEF804200160DEF80000C00768 -:101B60001CBFDEF800005FEAC07043D0DEF8000062 -:101B7000C0071CBFDEF800005FEAC0703AD0DEF894 -:101B80000000C0071CBFDEF800005FEAC07031D063 -:101B9000DEF80000C0071CBFDEF800005FEAC0707E -:101BA00028D0DEF80000C0071CBFDEF800005FEAA6 -:101BB000C0701FD0DEF80000C0071CBFDEF80000B8 -:101BC0005FEAC07016D0DEF80000C0071CBFDEF868 -:101BD00000005FEAC0700DD0DEF80000C0071CBF37 -:101BE000DEF800005FEAC07004D01CF1100CB4D124 -:101BF000052011E0DEF80000C0060AD4DEF800007F -:101C0000400708D4DEF800000321000701EAE07075 -:101C100002E0042000E00220DEF8041021F00101BF -:101C2000CEF8041080BD0000B0B543F600050446B0 -:101C3000C4F20105C1B2284600F090FB28460721F6 -:101C400000F0D4FB0028F9D02046B0BDFFF7E8F83B -:101C5000FFF7E6F843F20000C4F200004AF6AA21BA -:101C60000160704770B540F60005C4F201050446F6 -:101C7000A5F544400221844205F5405008BF0121EA -:101C8000261A40F2026018BF0E4600F0BFFA16A0F6 -:101C900030F8160000F0BAFA14A050F826302846A2 -:101CA0001821032200F02CF812A050F82630284604 -:101CB0000421032200F024F8204600F053FB4CF2EC -:101CC000C061C0F22D01204600F012FB2046042125 -:101CD00000F094FB2046082100F09AFB2046BDE866 -:101CE000704000F07DBB00BF0E061107000200002F -:101CF000040000000004000008000000416170477B -:101D000070B5CE0601F00F0C09D5042A05D1C26BBF -:101D10004CF0030C1A43C26301E04CEA020C00F1E0 -:101D2000100213F0010400F1140E33D113F0020479 -:101D300041D113F004044FD113F008045DD113F026 -:101D400010046BD113F020047AD113F0400440F05A -:101D5000898013F0800440F0978013F4807440F081 -:101D6000A58013F4007440F0B38013F4806440F055 -:101D7000C18013F4006440F0CF8013F4805440F02D -:101D8000DD8013F4005440F0EB8013F4804440F005 -:101D9000F88004E10568282925F00F0545EA0C05BF -:101DA00003D0482903D1164600E07646346005602A -:101DB00013F00204BDD00568482925F0F00545EA76 -:101DC0000C1503D0282903D1764600E0164634606E -:101DD000056013F00404AFD00568482925F4706548 -:101DE00045EA0C2503D0282903D1764600E01646A3 -:101DF0003460056013F00804A1D00568482925F473 -:101E0000704545EA0C3503D0282903D1764600E019 -:101E100016463460056013F0100493D00568482915 -:101E200025F4702545EA0C4503D0282903D17646D0 -:101E300000E016463460056013F020043FF485AFDF -:101E40000568482925F4700545EA0C5503D0282972 -:101E500003D1764600E016463460056013F0400476 -:101E60003FF477AF0568482925F0706545EA0C65B1 -:101E700003D0282903D1764600E016463460056079 -:101E800013F080043FF469AF0568482925F07045D8 -:101E900045EA0C7503D0282903D1764600E01646A2 -:101EA0003460056013F480743FF45BAF4568282903 -:101EB00025F00F0545EA0C0503D0482903D1164645 -:101EC00000E076463460456013F400743FF44DAF93 -:101ED0004568482925F0F00545EA0C1503D0282966 -:101EE00003D1764600E016463460456013F4806402 -:101EF0003FF43FAF4568482925F4706545EA0C2555 -:101F000003D0282903D1764600E0164634604560A8 -:101F100013F400643FF431AF4568482925F4704557 -:101F200045EA0C3503D0282903D1764600E0164651 -:101F30003460456013F480543FF423AF456848296A -:101F400025F4702545EA0C4503D0282903D17646AF -:101F500000E016463460456013F400543FF415AFBA -:101F60004568482925F4700545EA0C5503D0282911 -:101F700003D1764600E016463460456013F4804491 -:101F80000DD04568482925F0706545EA0C6503D0F9 -:101F9000282903D1764600E016463460456013F4E4 -:101FA000004308BF70BD4468482924F0704444EAE7 -:101FB0000C7502D0282901D172461360456070BDAE -:101FC000B0B540F2040CC4F2010C0CF118031A462F -:101FD000B0F1FF3FC4BF0422C4F20102146800F450 -:101FE0004012B2F5401F1FFA80FE08D1DCF8005005 -:101FF00024F0E06225F0E064CCF8004011E0C20279 -:1020000006D46FF00F0202EA50420EFA02F204E028 -:10201000C0F30342032505FA02F224EA020242F069 -:10202000E0626FF00F0404EA504400290EFA04F550 -:1020300018BF2A43B0F1FF3FC8BF63461A60B0BD66 -:1020400070B500F013F9FEF7D1F9FEF7E1FB40F2AD -:102050000404C2F200042046FEF73CFE40F2601584 -:1020600042F6FB06C2F20005C0F600062046FEF767 -:10207000B3FD2978304600F0D5F92846FEF784FCF8 -:10208000F4E700004EF60C5CCEF2000CDCF80030F9 -:1020900003F4E063A3F54073B3F5A06F01D21B0A0C -:1020A00006E040F20053C0F2FA53CCF800300223AD -:1020B00001FA03FCC3F104030F21D94011404EF291 -:1020C000001241EA0C01CEF200020901831883F8E4 -:1020D000001300F01F01012303FA01F1401142F83F -:1020E000201070474FF68072C1F6FF72114008430E -:1020F0004EF60851CEF200010860BFF34F8F7047D3 -:10210000B0B541F2040EC4F2020EDEF8001001F088 -:102110000C01082941F20021C0F27A0144D1DEF815 -:102120000020D20304D440F60011C0F23D0124E0A7 -:10213000DEF8282046F600435200DEF82820C0F2E0 -:10214000DC2358BF0B46D10310D5DEF82810DEF88B -:102150002820C1F303110131C2F30322B3FBF1F1D3 -:102160000232112A08BF142202FB01F3DEF8281004 -:1021700001F00F010131B3FBF1F1DEF80020DEF8D0 -:1021800000301024C2F3834204EA53631A4401234B -:102190000F2A38BF02231A440F2A11BF514301EB03 -:1021A0004102520002EB5101DEF8002013A3C2F3FA -:1021B00003129B5CDEF8002042F6EC0CC2F3022214 -:1021C000C0F6000C1CF80250DEF80020032812D8DC -:1021D00021FA03F3DFE800F00D0204071846B0BD52 -:1021E00023FA05F0B0BDC2F3C2201CF8000023FAA8 -:1021F00000F10846B0BD0020B0BD00BF00000000E7 -:1022000000000000010203040607080941F2000370 -:1022100000F01F018009C4F202034FF0010CC25804 -:102220000CFA01F11143C1507047000041F2000364 -:1022300000F01F018009C4F202034FF0010CC258E4 -:102240000CFA01F122EA0101C150704741F200038A -:1022500000F01F018009C4F202034FF0010CC258C4 -:102260000CFA01F11143C1507047000040F2EC003C -:10227000C2F20000006844F6D351C1F26201A0FB33 -:1022800001014FF0FF3000EB9110B0F1807F00D3DF -:10229000FEE74EF21001CEF2000148604EF62350E8 -:1022A000CEF20000F0220270002207238A600B6049 -:1022B00002707047017809B1002070474178012908 -:1022C00003D08A0705D402224270481E18BF01209D -:1022D000704780B542F66410C0F6000000F004F8C4 -:1022E000012101704170704780B5AFF3008000009C -:1022F000B0B5044644F6FF30C4F200000D468442F7 -:102300004FF0000013DD44F60041C4F200018C429E -:1023100019D045F20001C4F200018C4213D043F6FB -:102320000001C4F201018C4210D103200CE044F200 -:102330000041C4F200018C4205D044F60001C4F211 -:1023400000018C4202D10220FFF7DAFE00EB5500BB -:10235000B0FBF5F080B2A060B0BD00006FF35F216C -:102360004160704710B544F6FF31C4F20001884265 -:1023700015DD44F60041C4F2000188421ED045F24A -:102380000001C4F2000188421BD043F60001C4F2F0 -:102390000101884218BF10BD40F20E3416E044F22D -:1023A0000041C4F2000188420ED044F60001C4F29C -:1023B0000001884212D140F2124407E040F2134477 -:1023C00004E040F2144401E040F211442046FFF7DB -:1023D0003DFF2046BDE81040FFF728BF10BD0000BC -:1023E000C16841F40051C160704700008A0910586B -:1023F00001F01F01C84000F001007047C26801F001 -:10240000040122F00402C260C2681143C160704737 -:10241000C26801F0080122F00802C260C2681143DC -:10242000C16070470FB4054B10B503A9044A029868 -:1024300000F018F810BC5DF814FB0000291C00081F -:102440000000002002E008C8121F08C1002AFAD1CB -:1024500070477047002001E001C1121F002AFBD124 -:10246000704700002DE9FF4F8DB00F46054600264E -:1024700006E025280BD0DDE90F1290476D1C761C75 -:1024800028780028F5D111B03046BDE8F08F00243F -:10249000A246A1460122EC4900E0044315F8013FA1 -:1024A000203B02FA03F00842F7D128782A2810D0FE -:1024B0006FF02F022878A0F13001092914D80AEB17 -:1024C0008A0102EB410144F0020400EB010A6D1C99 -:1024D000F0E701CF5FEA000A03D544F40054CAF1E3 -:1024E000000A44F002046D1C28782E2817D115F834 -:1024F000010F44F004042A280ED06FF02F02287830 -:10250000A0F1300109290AD809EB890102EB410148 -:1025100000EB01096D1CF2E757F8049B6D1C28784D -:102520006C280FD006DC4C2817D068280DD06A28FC -:1025300014D104E0742810D07A280FD10DE044F4AF -:1025400000140AE044F4801401E044F44014697873 -:10255000814202D104F580146D1C6D1C2A786E2A0C -:102560001FD00CDC632A31D004DC002A8BD0582A1F -:1025700011D1A3E0642A68D0692A0CD165E0732ADE -:102580002ED004DC6F2A73D0702A04D19BE0752A08 -:102590006FD0782A6ED01046DDE90F129047761C76 -:1025A00050E1C4F30250022806D0032809D00428C1 -:1025B00001CF09D0066045E101CFF117C0E9006104 -:1025C00040E101CF06803DE106703BE117F8040BC6 -:1025D0008DF8000000208DF80100EB46012003E09B -:1025E00057F804BB4FF0FF3061074FF0000102D4F1 -:1025F0000DE008F10101884649450FDA8045F8DB16 -:102600001BF808100029F4D108E008F10101884600 -:102610008142FADB1BF808100029F6D1DDE90F230F -:10262000AAEB08008146214600F036F9304400EB61 -:10263000080604E0DDE90F121BF8010B9047B8F122 -:102640000108F7D221464846F7E00A21C4F30253B5 -:102650004FF0000B0891022B04D001CFC117032BC0 -:1026600009D00AE0FF1D27F00707F7E8020108E09C -:1026700032E01FE020E000B2C117042B01D140B2CC -:10268000C117031E71F1000307DA4FF0000CD0EB05 -:102690000C006CEB01012D2302E0230504D52B2354 -:1026A0008DF82430012303E0E30701D02023F7E76E -:1026B000984658E00A2110E010210EE010204FF05B -:1026C000000B08900CE010214FF0000B44F00404C4 -:1026D0004FF00809089103E008214FF0000B089122 -:1026E000C4F30253022B04D001CF0021032B06D0E8 -:1026F00006E0FF1D27F00707F7E8020103E080B2BC -:10270000042B00D1C0B24FF0000823072BD5702A4C -:1027100007D0DDF820C08CF0100C5CEA0B0C05D063 -:102720000EE040238DF82430012308E050EA010335 -:1027300006D030238DF824308DF8252002239846CA -:10274000DDF820C08CF0080C5CEA0B0C0BD150EAD1 -:10275000010301D1630706D530238DF824304FF0F3 -:102760000108A9F10109582A04D038A20B9208AA3D -:102770000A920BE03AA2F9E75B46089AFDF72CFDB6 -:102780000B9B9B5C0A9A521E0A92137050EA01023C -:10279000F2D10A98ADEB000000F1200B600702D5E2 -:1027A00024F4803401E04FF00109D94502DDA9EBA2 -:1027B0000B0000E0002000EB0B0141440890AAEB65 -:1027C000010AE00306D4DDE90F232146504600F05C -:1027D00063F806444FF0000908E009A911F8090060 -:1027E000DDE90F12904709F10109761CC145F4DBC0 -:1027F000E0030CD5DDE90F232146504600F04CF8EC -:10280000064404E0DDE90F1230209047761C089959 -:10281000481E08900029F5DC08E00A980A9900781B -:10282000491C0A91DDE90F129047761CBBF10001AB -:10283000ABF1010BF1DC21465046DDE90F2300F03E -:1028400019F806446D1C1BE60928010030313233AB -:1028500034353637383961626364656600000000DC -:1028600030313233343536373839414243444546C6 -:10287000000000002DE9F041044600251E461746E1 -:10288000880404D405E039462020B0476D1C641E3E -:10289000F9D52846BDE8F0812DE9F0410446002530 -:1028A0001E469046C80301D5302700E02027880443 -:1028B00004D505E041463846B0476D1C641EF9D585 -:1028C0002846BDE8F081000010B5044601E0FFF79E -:1028D000ABF914F8010B04490028F8D1BDE8104009 -:1028E0000A20FFF7A1B9000000000020000000004E -:1028F000010203040C1014182030404F5441204DA5 -:102900006F646525640D0A0043414E4644206D6F97 -:102910006465206E6F7420656E61626C65640D0085 -:102920004E6F20617661696C61626C65206D6169D2 -:102930006C626F7820666F722043414E464420746B -:1029400072616E736D697373696F6E2C20656E6151 -:10295000626C696E6720545820696E746572727576 -:1029600070740D005F5F6378615F67756172645FAB -:10297000616371756972652064657465637465640B -:102980002072656375727369766520696E69746912 -:10299000616C697A6174696F6E3A20646F20796F37 -:1029A00075206861766520612066756E6374696F55 -:1029B0006E2D6C6F63616C20737461746963207633 -:1029C00061726961626C652077686F736520696EFA -:1029D000697469616C697A6174696F6E206465708D -:1029E000656E6473206F6E20746861742066756E06 -:1029F0006374696F6E3F0000182A00080000002011 -:102A0000F800000044240008102B0008F800002003 -:102A100078080000542400080000000000000000B6 -:102A200000000000000000000000000000000000A6 -:102A30000000000000000000000000000000000096 -:102A40000000000000000000000000000000000086 -:102A50000000000000000000000000000000000076 -:102A60000000000000000000000000000300000063 -:102A70000000000000000000000000000000000056 -:102A80000000000000000000000000000000000046 -:102A90000000000000000000000000000000000036 -:102AA0000000000000000000000000000000000026 -:102AB0000000000000000000000000000000000016 -:102AC0000000000000000000000000000000000006 -:102AD00000000000000000000000000000000000F6 -:102AE00000000000000000000000000000000000E6 -:102AF00000000000000000000000000000000000D6 -:102B000000000000000E27073B0200080000000044 +:1001D000FFF7F0FF204610BD30B50446002003466F +:1001E00000E05B1C934203D2E05CCD5C401BF8D086 +:1001F00030BD2DE9F05F0546002092469B468846BB +:100200000646814640241BE0284641464746224692 +:1002100000F049F853465A46C01A914110D311468E +:100220001846224600F030F82D1A67EB01084F46B9 +:1002300022460120002100F027F817EB00094E416B +:10024000201EA4F10104DFDC484631462A4643461D +:10025000BDE8F09F704700001CB5094800900948B0 +:1002600001900546009C06E0E06840F0010394E838 +:10027000070098471034AC42F6D3FFF76DFF00003B +:10028000CC450008EC450008202A04DB203A00FA9F +:1002900002F1002070479140C2F1200320FA03F3DD +:1002A000194390407047202A04DB203A21FA02F0DB +:1002B0000021704721FA02F3D040C2F120029140A0 +:1002C00008431946704730B58C1810F8012B12F00E +:1002D0000F0301D110F8013B120906D110F8012BD0 +:1002E00003E010F8015B01F8015B5B1EF9D101E04E +:1002F00001F8013B521EFBD1A142E6D3002030BDE4 +:10030000B0B546F20044C4F2000420464CF281012C +:1003100002F0D0FB40B320464CF2810102F0BEFB5C +:1003200004F5CE352846042102F032FF2046002194 +:1003300002F0E6FD40F23822C2F2000210612846C7 +:10034000042102F049FF2846042102F033FF40F265 +:100350000405C2F2000505F194022046002102F0D6 +:10036000DDFB012085F8E40020464CF2C20102F0DA +:10037000A1FB38B120464CF2C20102F08FFB0AA06B +:1003800003F0DCFD20464CF2031102F093FB002841 +:1003900008BFB0BD20464CF2031102F07FFB06A05F +:1003A000BDE8B04003F0CABD43414E204649464F28 +:1003B000302066756C6C000043414E204649464F24 +:1003C00030206F766572666C6F77000010B5002480 +:1003D000C4F2020420460421022202F051FF002848 +:1003E00008BF10BD20460421012202F041FF40F267 +:1003F0000400C2F2000090F89E205AB140F2282179 +:10040000082A28BF08229F30C2F20001BDE8104030 +:10041000FFF7BEBE10BD000010B50024C4F20204F8 +:1004200020460521022202F02BFF002808BF10BD44 +:10043000204605210222BDE8104002F019BF00004D +:1004400082B04EF68851CEF200010A6841F20000F7 +:1004500042F47002C4F202000A60016841F0010136 +:1004600001600168890709D4016889075CBF0168D8 +:100470005FEA817102D401688907F2D5416801F011 +:100480000C01082940F0C28000210191019A4F2AF5 +:1004900018D800BF019A01320192019A4F2A11D84F +:1004A000019A01320192019A4F2A0BD8019A013226 +:1004B0000192019A4F2A05D8019A01320192019ABC +:1004C000502AE7D342680092009A22F0F00200928C +:1004D000009A42F080020092009A426001910199D4 +:1004E0004F2917D801990131019101994F2911D84C +:1004F00001990131019101994F290BD801990131DD +:10050000019101994F2905D8019901310191019972 +:100510005029E7D341680091009921F0F001009142 +:10052000009941F0900100910099416000210191F2 +:10053000019A4F2A18D800BF019A01320192019AFC +:100540004F2A11D8019A01320192019A4F2A0BD8F1 +:10055000019A01320192019A4F2A05D8019A01327B +:100560000192019A502AE7D342680092009A22F041 +:10057000F0020092009A42F0A0020092009A4260BB +:10058000019101994F2917D80199013101910199E0 +:100590004F2911D801990131019101994F290BD8A7 +:1005A00001990131019101994F2905D80199013132 +:1005B000019101995029E7D341680091009921F0F8 +:1005C000F0010091009941F0B00100910099416063 +:1005D0000021019101994F2918D800BF01990131DB +:1005E000019101994F2911D8019901310191019986 +:1005F0004F290BD801990131019101994F2905D853 +:1006000001990131019101995029E7D3416821F005 +:100610000301416000210191019A12097C2A1BD833 +:10062000019A01320192019A12097C2A14D8019A86 +:1006300001320192019A12097C2A0DD8019A0132E5 +:100640000192019A12097C2A06D8019A013201927C +:10065000019AB2F5FA6FE3D302684FF6FF73CEF654 +:10066000F6231A4002604FF47F0282604160C1624B +:10067000016821F480210160016841F4803101604A +:100680004FF6FC71026892030BD4026892035CBFC0 +:1006900002685FEA823204D419B102680439920315 +:1006A000F0D50168890300D4FEE742F20001C4F2EC +:1006B00002010A68032363F302020A6041684FF6ED +:1006C000FF7241604168CDF6C3724160416841F4F8 +:1006D0008061416041681140416041684FF2000211 +:1006E00041F0005141F454114160C16ACBF6FE72F1 +:1006F0001140C162C16A41F4843141F01901C16203 +:10070000016841F0806101600168090109D4016854 +:1007100009015CBF01685FEA011102D401680901A7 +:10072000F2D5016841F0807101600168890109D446 +:10073000016889015CBF01685FEA811102D4016828 +:100740008901F2D541680191019921F003010191DC +:10075000019941F002010191019941604168090745 +:1007600009D4416809075CBF41685FEA017102D49E +:1007700041680907F2D54FF00060002102B003F094 +:1007800005B8000080B543F60000C4F2010002F095 +:10079000C1FD012080BD00002DE9F04190F900E08D +:1007A00090F9013090F902104FF01B0C0CEADE14A6 +:1007B00090F9032084EA4E0481EA03060CEAD3157B +:1007C000664085EA4305564086EA050881EA0E063A +:1007D0000CEAD117564083EA0E0387EA41077540B9 +:1007E0000CEAD216594086EA42065A4061407A40E5 +:1007F00071407240C17090F90410827090F9052028 +:1008000090F906300CEAD1167D4080F8008090F90E +:10081000077086EA410883EA020445700CEAD215A3 +:1008200084EA080483EA010685EA42057C407E40AA +:10083000514084EA050E0CEAD31475400CEAD71631 +:1008400081EA0702594084EA430486EA470681EABE +:100850000801624071407240C17190F908108271C4 +:1008600090F9092090F90A300CEAD116654090F908 +:100870000B7086EA410883EA020445710CEAD2153E +:1008800084EA080483EA010685EA42057C407E404A +:10089000514080F804E084EA050E0CEAD314754058 +:1008A0000CEAD71681EA0702594084EA430486EA33 +:1008B000470681EA0801624071407240C17290F9B6 +:1008C0000C10827290F90D2090F90E300CEAD116BE +:1008D000654090F90F7086EA410883EA0204457288 +:1008E0000CEAD21584EA080485EA42057C4083EAD2 +:1008F000010680F808E084EA050E0CEAD3147E4075 +:10090000514084EA430475400CEAD71681EA070295 +:10091000594086EA4706624081EA08016540724014 +:10092000714080F80CE045738273C173BDE8F081BB +:100930002DE9F04F94B00E684A68CB688F68C360A9 +:100940008760426006600F684A688B68C968076103 +:1009500042618361C161F9B21091817C90F811A06C +:100960000A91C17C90F81B900F91D1B21391417DF7 +:1009700000901291817D0C91C17D0B91D9B21191A2 +:10098000417E0D91817E0E9174A14A1E002100BF0F +:10099000009808914718797FBD7F12F8020F43F63F +:1009A000607BC0F6000B0291FB7F09921BF80110DF +:1009B00012F8016C109A1BF80540039507905140FE +:1009C0001BF8035084EA0A0297F81CA00A987140A9 +:1009D00068401BF80A5087F82120164605920F9AA6 +:1009E000DDF84CC0CDF80490049385EA0209119A11 +:1009F000129B81EA0C040D9D87F8244084EA020BC7 +:100A000086EA0304DDF830E084EA05060E9DDDF891 +:100A10002C8087F8254080EA0E04019A87F822008E +:100A2000069087F8264084EA050089EA080487F8DA +:100A300027405440029A354687F82390CDF82890F5 +:100A400085EA0209039D10900F9687F8296087F8C0 +:100A50002A008BEA0A0680EA050A049843F66072C7 +:100A6000604087F8201087F828B087F82B4087F877 +:100A70002C6087F82D9087F82EA087F82F00054668 +:100A80000E905FFA89F0C0F600021194105C079C8A +:100A900060405FFA8AF4145D41408CEA000CE8B2D1 +:100AA000059D105C65406340069C07950D46F1B2BC +:100AB000515C44408EEA000E0A988BEA0C0B81EAE6 +:100AC00000028BEA060087F83C000F9888EA0108CC +:100AD00083EA000686EA090087F83D0010980F9225 +:100AE00080EA0E0080EA0A0187F83E101199DDF8CD +:100AF0001CA088EA01090E9987F8332081EA0901D0 +:100B000087F83F100899099A2031A029109587F895 +:100B1000305087F831A00A9487F83240CDF84CC0A5 +:100B200087F834C0129387F83530CDF830E087F875 +:100B300036E0CDF82C8087F83780CDF844B087F8C0 +:100B400038B00D9687F839600E9087F83A0087F82C +:100B50003B907FF41DAF14B0BDE8F08F0102040894 +:100B6000102040801B3600002DE9F04F8AB003466C +:100B70004FF0000A00900EE000235A40009B039FB4 +:100B800003F82A500AF1010ABAF1040F7C70B87018 +:100B9000FA7000F0578403EB8A0013F82A6090F88B +:100BA00001B090F8029090F803C0002E03903FD05F +:100BB00006F001004042012E00F00E00099039D0ED +:100BC000B007099848BF80F01C00042E099031D36B +:100BD0007007099848BF80F03800082E099029D383 +:100BE0003007099848BF80F07000102E099021D37B +:100BF000F006099A6FF01F0048BF4240202E09926C +:100C000018D3B006099A6FF0240048BF4240402E26 +:100C100009920FD370066FF05200099A48BF424004 +:100C200070B2B0F1FF3FD8BF82F04102099201E0FB +:100C300000200990BBF1000F40D00BF001004042B2 +:100C4000BBF1010F00F00B0139D05FEA8B7048BF98 +:100C500081F01601BBF1040F31D35FEA4B7048BF3E +:100C600081F02C01BBF1080F29D35FEA0B7048BF5C +:100C700081F05801BBF1100F21D35FEACB606FF018 +:100C80004F0048BF4140BBF1200F18D35FEA8B6093 +:100C900048BF81F07B01BBF1400F10D35FEA4B608E +:100CA0006FF0090048BF41404FFA8BF0B0F1FF3FB1 +:100CB0006FF00800D8BF414001E000BF0021B9F14A +:100CC000000F43D009F001004042B9F1010F00F0DC +:100CD0000D0E3DD05FEA897048BF8EF01A0EB9F153 +:100CE000040F35D35FEA497048BF8EF0340EB9F176 +:100CF000080F2DD35FEA097048BF8EF0680EB9F176 +:100D0000100F25D35FEAC9606FF02F0048BF8EEA4D +:100D1000000EB9F1200F1BD35FEA89606FF0440029 +:100D200048BF8EEA000EB9F1400F11D35FEA496067 +:100D300048BF8EF06D0E4FFA89F0B0F1FF3F6FF0B3 +:100D40002500D8BF8EEA000E02E000BF4FF0000E73 +:100D5000BCF1000F08913FD00CF001004042BCF103 +:100D6000010F00F0090138D05FEA8C7048BF41F0F4 +:100D70001201BCF1040F30D35FEA4C7048BF41F060 +:100D80002401BCF1080F28D35FEA0C7048BF81F042 +:100D90004801BCF1100F20D35FEACC606FF06F0008 +:100DA00048BF4140BCF1200F17D35FEA8C6048BFB9 +:100DB00081F03B01BCF1400F0FD35FEA4C6048BFAC +:100DC00081F076014FFA8CF0B0F1FF3F6FF0130025 +:100DD000D8BF414001E000BF00218EB306F0010002 +:100DE0004042012E00F009042BD0B00748BF44F068 +:100DF0001204042E25D3700748BF44F02404082EA3 +:100E00001FD3300748BF84F04804102E19D3F006D2 +:100E10006FF06F0048BF4440202E12D3B00648BF89 +:100E200084F03B04402E0CD3700648BF84F0760457 +:100E300070B2B0F1FF3F6FF01300D8BF444000E044 +:100E40000024BBF1000F3FD00BF001004042BBF18A +:100E5000010F00F00E0738D05FEA8B7048BF87F0B3 +:100E60001C07BBF1040F30D35FEA4B7048BF87F01B +:100E70003807BBF1080F28D35FEA0B7048BF87F033 +:100E80007007BBF1100F20D35FEACB606FF01F003B +:100E900048BF4740BBF1200F17D35FEA8B606FF06C +:100EA000240048BF4740BBF1400F0ED35FEA4B60C0 +:100EB0006FF0520048BF47404FFA8BF0B0F1FF3F50 +:100EC000D8BF87F0410700E00027B9F1000F3FD0FD +:100ED00009F001004042B9F1010F00F00B0238D0D7 +:100EE0005FEA897048BF82F01602B9F1040F30D36F +:100EF0005FEA497048BF82F02C02B9F1080F28D38D +:100F00005FEA097048BF82F05802B9F1100F20D390 +:100F10005FEAC9606FF04F0048BF4240B9F1200F4F +:100F200017D35FEA896048BF82F07B02B9F1400FB6 +:100F30000FD35FEA49606FF0090048BF42404FFAA3 +:100F400089F0B0F1FF3F6FF00800D8BF424000E0E9 +:100F50000022BCF1000F3FD00CF001004042BCF178 +:100F6000010F00F00D0538D05FEA8C7048BF85F0A6 +:100F70001A05BCF1040F30D35FEA4C7048BF85F00E +:100F80003405BCF1080F28D35FEA0C7048BF85F028 +:100F90006805BCF1100F20D35FEACC606FF02F0022 +:100FA00048BF4540BCF1200F17D35FEA8C606FF05B +:100FB000440048BF4540BCF1400F0ED35FEA4C608F +:100FC00048BF85F06D054FFA8CF0B0F1FF3F6FF030 +:100FD0002500D8BF454000E00025029296B306F0F8 +:100FE00001004042012E00F00D002CD0B20748BF96 +:100FF00080F01A00042E26D3720748BF80F0340018 +:10100000082E20D3320748BF80F06800102E1AD374 +:10101000F2066FF02F0248BF5040202E13D3B206C5 +:101020006FF0440248BF5040402E0CD3720648BFB8 +:1010300080F06D0072B2B2F1FF3F6FF02502D8BFB1 +:10104000504000E00020BBF1000F019540D00BF0B4 +:1010500001025242BBF1010F02F009083AD05FEAE7 +:101060008B7248BF48F01208BBF1040F32D35FEA1D +:101070004B7248BF48F02408BBF1080F2AD35FEA3F +:101080000B7248BF88F04808BBF1100F22D35FEA0B +:10109000CB626FF06F0248BF88EA0208BBF1200FF5 +:1010A00018D35FEA8B6248BF88F03B08BBF1400F62 +:1010B00010D35FEA4B6248BF88F076084FFA8BF294 +:1010C000B2F1FF3F6FF01302D8BF88EA020801E0D7 +:1010D0004FF00008B9F1000FCDE90474CDE9061E08 +:1010E00042D009F001025242B9F1010F02F00E0E96 +:1010F0003CD05FEA897248BF8EF01C0EB9F1040F34 +:1011000034D35FEA497248BF8EF0380EB9F1080F48 +:101110002CD35FEA097248BF8EF0700EB9F1100F40 +:1011200024D35FEAC9626FF01F0248BF8EEA020E45 +:10113000B9F1200F1AD35FEA89626FF0240248BF29 +:101140008EEA020EB9F1400F10D35FEA49626FF0E8 +:10115000520248BF8EEA020E4FFA89F2B2F1FF3F07 +:10116000D8BF8EF0410E01E04FF0000EBCF1000F31 +:1011700040D00CF001025242BCF1010F02F00B0210 +:1011800039D05FEA8C7348BF82F01602BCF1040FBD +:1011900031D35FEA4C7348BF82F02C02BCF1080FD8 +:1011A00029D35FEA0C7348BF82F05802BCF1100FDC +:1011B00021D35FEACC636FF04F0348BF5A40BCF1C4 +:1011C000200F18D35FEA8C6348BF82F07B02BCF12A +:1011D000400F10D35FEA4C636FF0090348BF5A40D9 +:1011E0004FFA8CF3B3F1FF3F6FF00803D8BF5A40BA +:1011F00001E000BF00229EB306F001035B42012E16 +:1012000003F00B032DD0B50748BF83F01603042E5F +:1012100027D3750748BF83F02C03082E21D3350749 +:1012200048BF83F05803102E1BD3F5066FF04F0410 +:1012300048BF6340202E14D3B50648BF83F07B031C +:10124000402E0ED375066FF0090448BF634075B297 +:10125000B5F1FF3F6FF00804D8BF634001E000BF65 +:101260000023BBF1000F3FD00BF001056D42BBF135 +:10127000010F05F00D0638D05FEA8B7548BF86F088 +:101280001A06BBF1040F30D35FEA4B7548BF86F0F6 +:101290003406BBF1080F28D35FEA0B7548BF86F010 +:1012A0006806BBF1100F20D35FEACB656FF02F0407 +:1012B00048BF6640BBF1200F17D35FEA8B656FF024 +:1012C000440448BF6640BBF1400F0ED35FEA4B6554 +:1012D00048BF86F06D064FFA8BF5B5F1FF3F6FF012 +:1012E0002504D8BF664000E000260146B9F1000F92 +:1012F0003ED009F001056D42B9F1010F05F0090773 +:1013000037D05FEA897548BF47F01207B9F1040F7B +:101310002FD35FEA497548BF47F02407B9F1080F9A +:1013200027D35FEA097548BF87F04807B9F1100F66 +:101330001FD35FEAC9656FF06F0448BF6740B9F11A +:10134000200F16D35FEA896548BF87F03B07B9F1E4 +:10135000400F0ED35FEA496548BF87F076074FFA22 +:1013600089F5B5F1FF3F6FF01304D8BF674000E087 +:101370000027DDE90854BCF1000F85EA0405079C4D +:1013800085EA0405069C85EA0405DDE9040484EA8F +:101390000004029884EA0004019884EA000488EAC0 +:1013A000010080EA0E0080EA020086EA030282EA77 +:1013B00007023FF4E1AB0CF001035B42BCF1010F0B +:1013C00003F00E033FF4D9AB5FEA8C7748BF83F09C +:1013D0001C03BCF1040FFFF4D0AB5FEA4C7748BFAD +:1013E00083F03803BCF1080FFFF4C7AB5FEA0C775A +:1013F00048BF83F07003BCF1100FFFF4BEAB5FEA8F +:10140000CC676FF01F0748BF7B40BCF1200FFFF493 +:10141000B4AB5FEA8C676FF0240748BF7B40BCF138 +:10142000400FFFF4AAAB5FEA4C676FF0520748BF6A +:101430007B404FFA8CF7B7F1FF3FD8BF83F04103F1 +:10144000FFF79BBB0AB0BDE8F08F00002DE9F04F1D +:101450008BB00646086801924A688B68C9683746AF +:1014600047F8C00FF96017F8101CBB607A6048405D +:1014700017F80F2C3870787817F80E3CB978504070 +:10148000787081EA030017F80D1CFA78B87082EAC8 +:10149000010017F80C1C3A79F87082EA010017F87D +:1014A0000B1C7A79387182EA010017F80A1CBA79A4 +:1014B000787182EA010017F8091CFA79B87182EA9A +:1014C000010017F8081C3A7AF87182EA010017F84F +:1014D000071C7A7A387282EA010017F8061CBA7A79 +:1014E000787282EA010017F8051CFA7AB87282EA6B +:1014F000010017F8041C3A7BF87282EA010017F821 +:10150000031C7A7B387382EA010017F8021CBA7B4D +:10151000787382EA010017F8011CFA7B44F26F48E5 +:10152000B87382EA01000024C0F600080297F8733D +:1015300096F8C03096F8CD0018F8031096F8CA2037 +:1015400086F8C01018F8000096F8C13086F8C1007F +:10155000079018F8020096F8C750089196F8C21044 +:1015600096F8C32086F8C200069018F805000A9283 +:1015700096F8C42086F8C30018F8025096F8CE20DA +:1015800086F8C45018F803A096F8C5C086F8C5A020 +:1015900018F802B096F8CB20059096F8C60086F8A9 +:1015A000C6B018F8023096F8C82086F8C73018F888 +:1015B000022096F8C97086F8C82018F80C9003939A +:1015C00086F8C99018F8013096F8CF1086F8CA301E +:1015D00018F801C096F8CC1086F8CBC018F80110A6 +:1015E000049386F8CC1018F807E0089B86F8CDE045 +:1015F00018F80000099086F8CE000A9818F8000044 +:101600000A9086F8CF00301990F8A0705F4086F8F5 +:10161000C07090F8A170079B5F4086F8C17090F889 +:10162000A270069B5F4086F8C27090F8A370059B7D +:101630005F4086F8C37090F8A470039B7D4086F8E5 +:10164000C45090F8A55085EA0A0586F8C55090F870 +:10165000A65085EA0B0586F8C65090F8A7505D4065 +:1016600086F8C75090F8A850049B6A4086F8C820B6 +:1016700090F8A92082EA090286F8C92090F8AA20E9 +:101680005A4086F8CA2090F8AB2082EA0C0286F80D +:10169000CB2090F8AC20514086F8CC1090F8AD10DB +:1016A000099A81EA0E0186F8CD1090F8AE105140EB +:1016B00086F8CE1090F8AF000A99484086F8CF001F +:1016C0000298FFF751FA103C14F190007FF430AF0C +:1016D00096F8CD0096F8CA2096F8C57018F800B0B4 +:1016E00018F8020096F8C010069018F8070018F8CD +:1016F00001C0079096F8CC0096F8CF1018F80000BB +:1017000018F80170099096F8C90096F8C61018F8F4 +:10171000000096F8C1A096F8C73096F8C44008902B +:1017200018F8010096F8C29096F8CE5096F8CBE0E3 +:1017300018F8032018F8043018F80A4096F8C8A0E2 +:101740000A9096F8C300317C18F8055018F80EE09E +:1017500018F80AA018F8099018F8008081EA0C001F +:10176000717C86F8C00081EA0B00B17C86F8C1006C +:1017700006984840F17C86F8C20081EA0200317D7B +:1017800086F8C30081EA0300717D86F8C40081EA0F +:101790000400B17D86F8C50081EA0500F17D86F878 +:1017A000C60081EA0E00317E86F8C70081EA0A0091 +:1017B000717E86F8C8000798029B4840B17E86F883 +:1017C000C90081EA0900F17E86F8CA0081EA0700B3 +:1017D000317F86F8CB000998019A4840717F86F8DE +:1017E000CC0008984840B17F86F8CD000A98484060 +:1017F000F17F86F8CE0081EA0800596886F8CF00AC +:10180000516018681060D868D060986890600BB01C +:10181000BDE8F08F2DE9F04F8DB006460868B1465F +:101820004D68D1F80880D1F80CC049F8C00F19F8FC +:10183000B01CC9F80450C9F80880C9F80CC0484069 +:1018400019F8AF7C049099F8010001927840059056 +:1018500019F8AC0C19F8AE2C99F80210684081EA1E +:101860000204039019F8AB0C99F8051019F8ADECC7 +:1018700099F80330484099F80620079019F8AA0C07 +:101880008EEA030E99F8073019F8A91C50400C9005 +:1018900083EA010019F8A72C99F809300B9083EA24 +:1018A000020099F80A2019F8A63C19F8A81C99F822 +:1018B0000B5019F8A57C0A9082EA030088EA010B14 +:1018C000099085EA070019F8A35C99F80D1019F83A +:1018D000A42C6940069199F80EA019F8A21C089052 +:1018E0008CEA020099F80F5019F8A12C8AEA010A33 +:1018F00004995540CAB20399F446C9B25FFA8BFE07 +:101900005FFA80FB0027CDF8089000BF43F66079AE +:10191000C0F6000919F80220059886F8C02019F8C9 +:10192000002019F8040019F80110039019F80C00B0 +:1019300086F8C4100497D046AA4607990C9F19F858 +:101940000E500B9C059019F8011019F8070019F8B2 +:1019500004E086F8C850089B0A9D099C19F80BB052 +:1019600019F803C0069B19F8055019F8044086F8C9 +:10197000CCB019F803B019F8088019F80A9086F865 +:10198000CE00059886F8C110039986F8C700029822 +:10199000049F86F8C55086F8C9B086F8CD2086F831 +:1019A000C24086F8CA1086F8C68086F8C39086F8CA +:1019B000CFC086F8CBE0FEF7EFFEF51995F82000D2 +:1019C00096F8C01096F8C13081EA000286F8C0206F +:1019D00095F8210096F8C210584086F8C10005908D +:1019E00095F8220096F8C33081EA000486F8C240D8 +:1019F00095F8230096F8C41083EA000C86F8C3C05B +:101A000095F8240096F8C530414086F8C41095F842 +:101A100025001037584086F8C500079095F8260035 +:101A200096F8C630902F80EA030086F8C6000C9026 +:101A300095F8270096F8C73080EA030086F8C700BB +:101A40000B9095F8280096F8C83083EA000E86F8C7 +:101A5000C8E095F8290096F8C93080EA030086F8B6 +:101A6000C9000A9095F82A0096F8CA3080EA030067 +:101A700086F8CA00099095F82B0096F8CB3080EADA +:101A8000030086F8CB00089095F82C0096F8CC302F +:101A900083EA000B86F8CCB095F82D0096F8CD308F +:101AA00080EA030086F8CD00069095F82E0096F89F +:101AB000CE3083EA000A86F8CEA095F82F0096F87B +:101AC000CF3083EA000586F8CF507FF41FAF43F68E +:101AD0006070C0F6000010F80290059A10F80180BE +:101AE000875C025D0799059210F80C20089B049210 +:101AF000425C0C99C35C415C96F8B1400C910B9927 +:101B00000B93415C069B079110F80E1010F803C070 +:101B100003910A9996F8B03010F801E0099983EA28 +:101B20000903415C10F80BB010F80AA0455D86F877 +:101B3000C030624096F8B23086F8C12096F8B320E3 +:101B4000594086F8C21082EA050196F8B42086F85A +:101B5000C31082EA080196F8B52086F8C41082EA1C +:101B60000E0196F8B62086F8C51082EA0A0196F8AA +:101B7000B720049886F8C61082EA000196F8B820CB +:101B8000039886F8C71096F8B910504086F8C80038 +:101B900081EA0C0096F8BA1086F8C9000598029BF5 +:101BA000484096F8BB1086F8CA000798019A48404A +:101BB00096F8BC1086F8CB0081EA0B0096F8BD10B1 +:101BC00086F8CC0081EA070096F8BE1086F8CD00B2 +:101BD0000C98484096F8BF1086F8CE000B98484005 +:101BE000596886F8CF00516018681060D868D060D6 +:101BF000986890600DB0BDE8F08F0000F0B50378F4 +:101C000044F2600E83F0FF03C0F6000E5EF823304E +:101C100090F801C06FF07F4463408CEA0304E4B2A3 +:101C20005EF8244090F802C084EA13238CEA03048F +:101C3000E4B25EF8244090F803C084EA13238CEAEF +:101C40000304E4B25EF824C004798CEA13235C40F8 +:101C5000E4B25EF824C044798CEA13235C40E4B219 +:101C60005EF824C084798CEA13235C40E4B25EF809 +:101C700024C0C4798CEA13235C40E4B25EF824C02B +:101C8000047A8CEA13235C40E4B25EF824C0447A00 +:101C90008CEA13235C40E4B25EF824C0847A8CEAB8 +:101CA00013235C40E4B25EF824C0C47A8CEA1323A8 +:101CB0005C40E4B25EF824C0047B8CEA13235C40F1 +:101CC000E4B25EF824C0447B8CEA13235C40E4B2A7 +:101CD0005EF824C0847B8CEA13235C40E4B25EF897 +:101CE0002440C07B84EA13235840C0B25EF8200031 +:101CF00001F1070C80EA1324002000BF0D5C0B18D3 +:101D00006540EDB25EF825505E7885EA142486EAD7 +:101D10000405EDB25EF825509E7885EA142486EA23 +:101D20000405EDB25EF82550DE7885EA142486EAD3 +:101D30000405EDB25EF825501E7985EA142486EA82 +:101D40000405EDB25EF825505E7985EA142486EA32 +:101D50000405EDB25EF825509E7985EA142486EAE2 +:101D60000405EDB25EF825500CEB000685EA14245C +:101D70001CF8005077786540EDB25EF82550B678D3 +:101D800085EA142487EA0405EDB25EF82550103088 +:101D900085EA142486EA0405EDB25EF825509E7AA1 +:101DA00085EA142486EA0405EDB25EF82550DE7A51 +:101DB00085EA142486EA0405EDB25EF825501E7B00 +:101DC00085EA142486EA0405EDB25EF825505E7BB0 +:101DD00085EA142486EA0405EDB25EF825509E7B60 +:101DE00085EA142486EA0405EDB25EF82550DB7B13 +:101DF00085EA14246340DBB25EF82330302883EA9E +:101E000014247FF47BAFE0431060F0BD70B514463E +:101E10000D460646FFF71AFB05F1100104F110020A +:101E20003046FFF713FB05F1200104F12002304694 +:101E3000BDE87040FFF70ABB2DE9F0479EB0B1F551 +:101E4000807F46D040F20117B94240F02281002144 +:101E5000022B818100F0F280042B00F0D180402B16 +:101E600040F0FD8090F81A11042940F0F88012AC7F +:101E7000D2F8048002F108010646204615463022B9 +:101E8000FEF786F9E86BD5F838A006F14A05B146A9 +:101E90002A36009028463146FEF74AFD06AF28460E +:101EA00021463A46FFF7B2FF05AA30463946FFF70A +:101EB000A5FE05980099814200F0A281052089F8CD +:101EC0001B018DF8100040F20400C2F2000004ABC8 +:101ED000DAE0002181811178002908BF022B00F08F +:101EE000C080102B40F0C68090F81A11022900F033 +:101EF000D380012940F0BE80D17B044680F8491090 +:101F0000917B074680F84810517B80F84710117B81 +:101F100080F84610D17A80F84510917A80F8441004 +:101F2000517A80F84310117A80F84210D17980F804 +:101F30004110917980F84010517980F83F10117963 +:101F400080F83E10D17880F83D10917880F83C10F0 +:101F5000517880F83B10117804F83A1F4FF2F07175 +:101F6000C1F6FF7144F81C1C4FF2EC71C1F6FF7111 +:101F700044F8181C4FF2E871C1F6FF7104F1100526 +:101F800044F8141CA4F12C012846FEF7D1FC06AE3F +:101F9000284621463246FFF73DFC6A462846314630 +:101FA000FFF738FC039A9DE80B001A9217AA0BC2A0 +:101FB00054F81C0C54F8181C12AB54F8142C07C31A +:101FC000D7F84600D7F8421012ABCDE9151040F211 +:101FD0000400C2F200004FF48171242200F004FAE0 +:101FE00006AB0FCB44F80C1C44F8100C022044F84C +:101FF000082C44F8043C84F8E0001EB0BDE8F087EB +:1020000090F81A1103292AD11168B1F5404F00F256 +:10201000CB800022C0E901214CF2BA01129140F2BA +:102020000401C2F20001139212AB044608464FF4B9 +:102030008171062200F0D8F90420C8E090F81A1146 +:1020400005290CD14AF60A40ADF8480040F20400D8 +:10205000C2F2000012AB4FF48171022217E003219B +:1020600009E05178AC297FF43CAF90F81A110029AF +:1020700000F09C80042180F81B1140F20400C2F2A1 +:10208000000012AB8DF848104FF48171012200F06E +:10209000ABF91EB0BDE8F08711685368D768926845 +:1020A00000F14A05CDE9001300F12A010646284651 +:1020B000CDE90227FEF73CFC12AC694628462246D1 +:1020C000FFF7C4F996F83A0096F83B1096F83C20D2 +:1020D00080F0550096F83D308DF8180081F05500DD +:1020E0008DF8190082F0550096F83E108DF81A0010 +:1020F00083F055008DF81B0081F0550096F83F10D5 +:102100008DF81C0081F0550096F840108DF81D00E8 +:1021100081F0550096F841108DF81E0081F05500B1 +:1021200096F842108DF81F0081F0550096F8431084 +:102130008DF8200081F055008DF8210096F84400BC +:1021400096F8451096F8462080F0550096F84730EE +:102150008DF8220081F055008DF8230082F05500A3 +:1021600096F848108DF8240083F055008DF825006E +:1021700081F0550096F849108DF8260081F0550041 +:102180008DF8270006A9204610223546FEF724F8D0 +:1021900010B3022085F81B018DF8140040F20400F2 +:1021A000C2F2000005AB6FE7062164E74FF42C4153 +:1021B000ADF8481040F20401C2F2000112AB04462F +:1021C00008464FF48171022200F00EF9012084F8D4 +:1021D0001A011EB0BDE8F0874CF2BA00ADF8140049 +:1021E00040F20400C2F2000005AB4FF481710222FC +:1021F00000F0FAF8032085F81A011EB0BDE8F08758 +:102200001AF101000ED008F10100049040F2040020 +:10221000C2F2000004AA4FF4817100F095F81EB0DC +:10222000BDE8F0874FF0FF30049040F20400C2F2A6 +:10223000000004AA4FF4817100F086F8052089F8A7 +:102240001A011EB0BDE8F087B0B582B0044690F820 +:102250001A0100B30120012500F07CFFA08942F2A1 +:102260001172013081B29142A08112D30020A0816D +:102270004FF48070A4F81A0140F20400C2F200008A +:102280000DF107034FF4817101228DF8075000F022 +:10229000ABF802B0B0BD0020A08140F2040040F2D3 +:1022A0002023C2F20000C2F2000340F20311002218 +:1022B00000F09AF80A2002B0BDE8B04000F04ABF32 +:1022C00003C844F64E42C0F24302000A82EA1122D9 +:1022D00040EA016042F62B31C4F24371484010439A +:1022E000B0FA80F04009704710B500F015FAD0F848 +:1022F00008E0BEF1000F25D0714651F828CF44F612 +:102300004E424B68C0F2430282EA13244FEA1C2279 +:1023100042EA036242F62B33C4F243735A4022432B +:102320000CD1DEF82420013ACEF8242008D1DEF8C2 +:10233000202082600020CEF8200001E00022826090 +:10234000084610BD00F094F970B5054646F2004409 +:1023500053303E211646C4F20004FDF732FF4CF222 +:10236000BA00A5F85100307885F85300717885F8E7 +:102370005410B27885F85520F37885F856302668E1 +:10238000F60304D444F26F50C0F6000021E040F29E +:102390000066CCF2BA06C5F8096004262E724FF426 +:1023A00081766E6040F20116A5F84B6000266873D6 +:1023B000A9732046294685F84D60EA732B7400F016 +:1023C000A7FC032885F8500007D144F28750C0F6D7 +:1023D000000001F0B3FD002070BD2046012100F097 +:1023E00059FB012070BD00002DE9F04146F2004884 +:1023F000C4F20008D8F80070FF0304D444F26F5010 +:10240000C0F6000083E033B1092A154622D30D2A15 +:1024100003D20C251EE04CA079E0112A01D2102530 +:1024200018E0152A01D2142514E0182A01D2182523 +:1024300010E0A2F11D07042F01D220250AE0A2F12D +:102440002107102F01D2302504E0A2F13107102F0F +:1024500069D24025416040F201110427A0F84B10D9 +:102460000021002D0781857280F84D1042D0042D87 +:1024700005F0030C22D305F07C0E002529464418F4 +:10248000954234BF5D5C0025E5724F1C974203EB1B +:10249000010634BF7578002501372573974234BF94 +:1024A000B578002501379742657307F1010534BF00 +:1024B000F67800267545A673E0D10431BCF1000F13 +:1024C00018D0914200F10B0534BF5F5C0027BCF1CE +:1024D000010F6F540ED04E1C964234BF9F5D0027F3 +:1024E000BCF1020FAF5505D00231914234BF5A5CA6 +:1024F00000226A5405464046294600F009FC03289C +:1025000085F8500008D144F28750C0F6000001F071 +:1025100015FD0020BDE8F0814046012100F0BAFA27 +:102520000120BDE8F08101A0F1E700BF43414E4624 +:10253000442064617461206C656E67746820657204 +:10254000726F720D00000000496E76616C69642044 +:102550006461746120706F696E7465720D000000B3 +:1025600010B5044690F8E500012804BF002084F867 +:10257000E50094F8E400012818BF10BDD4F89810C5 +:1025800021F00100B0F5807F0AD194F89E3040F22E +:10259000F40004F19F02C2F20000FFF74DFC02E0DC +:1025A00003A001F079FA002084F8E40010BD00BF18 +:1025B000556E6B6E6F776E2043414E2049443A2032 +:1025C00025580A0010B5044600F0E0FC032021461F +:1025D00000F0A2FC04F19401042000F09DFC40F204 +:1025E0002820C2F20000002140F23022C0E9001190 +:1025F000C2F2000200201160516010BD80B580471A +:1026000004A001F0ABF900F051F80CA001F0A6F91C +:1026100000F046F87465726D696E6174655F68619B +:102620006E646C657220756E657870656374656440 +:102630006C792072657475726E6564007465726D74 +:10264000696E6174655F68616E646C657220756E39 +:1026500065787065637465646C79207468726577F9 +:1026600020616E20657863657074696F6E0000008C +:1026700010B500F056F808B1046834B940F2F00023 +:10268000C2F200000068FFF7B9FF04F12800FFF76D +:1026900017FE0028F2D06069FFF7B0FF00F000F8E5 +:1026A00080B500F003F8FFF7E3FF000070B5D0E954 +:1026B0000065044600F030F844F64E41320A42F616 +:1026C0002B33C0F2430142EA0562C4F2437381EA4C +:1026D00015215A401143A4F1280112D154F80C2CB1 +:1026E000002A48BF524203680132994244F80C2C38 +:1026F0001CBF44F8103C0160416801394160606AC8 +:1027000070BD0268002A02BF016004F1580070BD6C +:10271000FFF7AEFFFFF7C4FF40F21420C2F2000043 +:10272000704740F21420C2F20000704710B546F224 +:102730000041C4F2000140F21A44884208BF40F24E +:102740001944204601F0D6F82046BDE8104001F0BB +:10275000C1B80000002904BF00207047B0B502686E +:1027600040F2040E22F0020202600368CFF6FF7E00 +:1027700043F00103036073464268D20704BF426816 +:102780005FEAC2720AD14268D20704BF42685FEAB8 +:10279000C27203D1002B03F10403EDD14268D207CA +:1027A00001D100215CE00B7C4FF0E0654C7C05EA38 +:1027B00003638D7C64F3134305F007048D8A43EAB9 +:1027C00004536C1E6FF39F2423444A7891F802C08F +:1027D000C362D1E90234012A43EA040323F004036B +:1027E00018BF0433BCF1010F15D1D1F804C0BCF1FE +:1027F000000FD6D0DCF800209CF8055002F0200233 +:102800001A4342F010039CF8042002F07F0265F3A3 +:102810000E22826201E023F01003097823F0010206 +:10282000012908BF01320262016821F00101016043 +:102830004168C90713D04168C90710D04168C9076A +:102840000DD04268BEF1000F714618BF0121D207BA +:1028500006D0BEF1000F0EF1040EE9D100E0012117 +:10286000BDE8B04008467047B0B546F20061C4F21A +:10287000000144890A684FF0010C42F001020A602D +:10288000CB690CFA04F5AB43CB61C3896FEA050C45 +:10289000012B10D023BBCB6803EA0C03CB60B0F84C +:1028A00006E0438843EA0E434FEAC40E01EBC4043A +:1028B000236403460DE0CB682B43CB60B0F800E007 +:1028C000438843EA0E434FEAC40E01EBC404236479 +:1028D000831D84881B8843EA044301EB0E04636470 +:1028E00083894C68002B44EA050208BF04EA0C0205 +:1028F0004A6002894B69002A43EA050408BF03EADB +:102900000C044C61007C012802D1C8692843C861CD +:10291000086820F001000860B0BD000070B50268D2 +:1029200040F2040C22F0020202600368CFF6FF7C42 +:1029300043F00103036063464268D20704BF426864 +:102940005FEAC2720AD14268D20704BF42685FEAF6 +:10295000C27203D1002B03F10403EDD14268D20708 +:1029600004BF002070BD036ADA0724D143F00102DE +:1029700002628C780A78250491F801E045EA841512 +:1029800041F60044CE789207C0F20F046EF31C6249 +:1029900025402A44350545EA862646F20005C0F260 +:1029A00070052E404D8932446E1E6FF39F263244CF +:1029B000C26103621EE00A784B788E78920763F357 +:1029C0001C62330443EA861341F60046CD78C0F218 +:1029D0000F0633401A442B0546F2000643EA8523CE +:1029E000C0F2700633404E891A44731E6FF39F2362 +:1029F0001A44C26102680B7922F080024E798D7907 +:102A0000CC79012B08BF803202600268012E22F0CF +:102A1000400208BF403202600268012D22F020020D +:102A200008BF203202600268012C22F0100218BF99 +:102A3000103202600A7A0368012A23F0080318BFE3 +:102A400008330360497A0268012922F0040208BFB2 +:102A500004320260016821F0010101604168C90788 +:102A600015D04168C9071CBF41685FEAC1710ED02B +:102A70004268BCF1000F614618BF0121D20704D0A3 +:102A8000BCF1000F0CF1040CE8D1084670BD012028 +:102A900070BD00004269114341617047C1F3841267 +:102AA000090B4FF0010C0B580CFA02F21A430A50B2 +:102AB0007047000048F2CB02C0F20102914210D0F0 +:102AC0008422C0F20102914207D04CF2810291426D +:102AD0000BD1C26802F0030210E0026902F00302A7 +:102AE0000CE08269C2F3021208E00A0B52F800C03F +:102AF000C1F3841301229A4002EA0C02406901F0FA +:102B00001F01012303FA01F10840002A18BF012226 +:102B1000002818BF0120104070470000B0B582B0F7 +:102B200000EB0113D3F8B05115F004051572D3F87A +:102B3000B0C119BF4FEADC0555604FEA5C5515601E +:102B4000D3F8B05105F002055572D3F8B4512D0AEF +:102B500082F84B50D3F8B4C15FFA8CF5ED0982F8D6 +:102B60004C50056AED0727D14FFA8CF5002D63D440 +:102B7000D3F8B45105F00F059572D3F8B851D5725A +:102B8000D3F8B8512D0A1573D3F8B8512D0C5573DD +:102B9000D3F8B8512D0E9573D3F8BC51D573D3F833 +:102BA000BC512D0A1574D3F8BC512D0C5574D3F8B3 +:102BB000BC311B0E937489E0D3F8B45105F00F0CAF +:102BC000BCF1080F06D944F26845C0F6000565441B +:102BD00015F809CC82F80AC0D3F8B451BCF104044A +:102BE000C5F3401582F84D50D3F8B451C5F3001524 +:102BF00082F84E504FF0FF3505EB9C05B5FA85F590 +:102C00004FEA551518BF0124254005EB9C0C0B32EB +:102C10005FEA0C65019218D01CF003021AD0D3F8B9 +:102C2000B851019C012A2560019D05F1040501951B +:102C300012D1ACF1010225E029A2044610460D464E +:102C400001F07CF92946204640E0D3F8B821019BE9 +:102C50001A603BE0624615E0D3F8B851019C022AA5 +:102C60002560019D05F10405019502D1ACF1020238 +:102C700008E0D3F8B821019D2A60019A043201923C +:102C8000ACF103025FFA8CF5042D1FD3D3F8B851D1 +:102C9000019C043A2560019D04350195D3F8B85193 +:102CA000019C2560019D04350195D3F8B851019C24 +:102CB0002560019D04350195D3F8B851019C25602C +:102CC000019D140605F104050195DFD110220029AC +:102CD00008BF0C22815841F02001815002B0B0BDE4 +:102CE00043414E2046442066756E6374696F6E20C2 +:102CF00064697361626C6564206275742046442067 +:102D00006672616D652072656365697665640D0044 +:102D1000F0B581B005468068400108D4A86800017C +:102D200007D4A868C00006D4032001B0F0BD00207D +:102D300002E0012000E0022005F5C07C03015CF800 +:102D4000032002F001024CF803200A7A1AB14C6801 +:102D500042EAC40401E00A6854054A7A91F84BE05B +:102D600053F80C6022433243BEF1000F43F80C20AD +:102D700003D02A6AD20721D1FEE705F5C274E258D2 +:102D800022F0BF02E2508A7A092A24BF08228A72FE +:102D90001E5932431A51D1F80B20EE18C6F888217B +:102DA0000F314FF4C67409682A19D1505CF803102A +:102DB00041F001014CF8031001B0F0BD8C7A092CF0 +:102DC00022462FD291F84C6091F84D7042EACE1213 +:102DD00042EA461242EA0712EF18C7F884214FF080 +:102DE000FF3202EB9402B2FA82F25209271F18BF97 +:102DF00001273A4002EB940E0B315FEA0E6200911C +:102E000023D01EF0030405F5C47122D0009A012CD2 +:102E100012685A50009A02F1040200921BD1AEF1DE +:102E200001022CE0A4F10C02D6B2920142EA960211 +:102E3000D2B20E2A08D242F22F26D640F60703D08D +:102E400021A656F82220BDE7FEE700994FF4C4748E +:102E5000A9E7724613E0009A022C1268CA50009A41 +:102E600002F10402009202D1AEF1020207E0009AE0 +:102E70001268CA50009A04320092AEF103025FFA5F +:102E80008EF7042F92D300BF009F043A3F681606C6 +:102E9000CF50009F07F104070097009F3F68CF5075 +:102EA000009F07F104070097009F3F68CF50009FE5 +:102EB00007F104070097009F3F68CF50009F07F17C +:102EC00004070097E0D171E7090000000A00000044 +:102ED0000B0000000C000000090000000D000000C5 +:102EE0000900000009000000090000000E000000B9 +:102EF0000900000009000000090000000F000000A8 +:102F000029B101291CBF00207047102100E00C21CD +:102F1000405800F00300704780B579B104280FD8FD +:102F2000DFE800F0032A14250F004FF0806088606E +:102F3000002048604FF40030086080BDFEE700BF0D +:102F4000FEE708464F21FDF73CF980BD4FF4806055 +:102F500088824FF4007008820120887400204FF4AA +:102F6000807288700A80C1E90100C86080BD08468F +:102F70004E21FDF726F980BD00204FF48032087401 +:102F8000CA6008604860886080BD00002DE9F04F8D +:102F900091B040F2197000F08DFC40F2036000F037 +:102FA00089FC4FF4C06000F085FC0024C4F20204E8 +:102FB000A4F574452846482103224FF480734FF44A +:102FC000807A00F0F5F92846182103224FF40073A7 +:102FD0004FF4007800F0ECF94FF4EA1001214FF0C3 +:102FE000010900F045FB2846102103224FF400534D +:102FF0004FF4005B00F0DCF928464FF4005100F07C +:10300000D5F94FF4A06000F055FC40F23825C2F22B +:103010000005284600F052F9A4F5CC3040F22821F2 +:10302000A0F51270C2F2000100270826C5E90007CA +:10303000C5E90217204604212A46AF76C5E9046B8C +:10304000A5F818A000F0C8F840F25425C2F2000517 +:10305000284600F033F9A4F5C03040F23021A0F545 +:10306000D450C2F20001C5E90007C5E902172046A5 +:1030700005212A4685F81A90C5E9046BA5F818A021 +:1030800000F0AAF82046042100F094F8204605211B +:1030900000F090F8A4F5CE352846FFF747FB4FF037 +:1030A00080700F9040F20110C0F2060010904FF0B7 +:1030B00083700E900EA92846FFF730FC08AE022060 +:1030C0003146FFF729FF40F20110ADF8200040F231 +:1030D0000440ADF81C0006A8CDE909070620ADF8AC +:1030E0003400284631468DF8229006970B97ADF8AC +:1030F00030808DF83270FFF72DFB4FF48030CDE932 +:10310000037001A8CDE901778DF81490FFF7ACFBAF +:1031100014200121002200F009FB28460221FFF7BC +:10312000B9FC0F200121012200F000FB2046042100 +:10313000022200F08BF811B0BDE8F08F43F20000DE +:10314000C4F202004FF0FF31016000214160012113 +:103150008160704710B540F21024C2F20004206074 +:1031600004E000BF00F0CEF800F0CCF820680028A2 +:1031700008BF10BDF6E7000040F21020C2F20000C8 +:103180000168002908BF7047016801390160704774 +:1031900040F20042C4F20202904202D1052900D35B +:1031A000FEE701EB810100EB8100816821F0010164 +:1031B0008160704740F20042C4F20202904202D1A4 +:1031C000052900D3FEE701EB810100EB8100816856 +:1031D00041F001018160704740F20043C4F20203F4 +:1031E000984202D1052900D3FEE780B5136801EBB0 +:1031F000810100EB8100036191684161118AC16026 +:103200008168536821F47C5CD168D2F814E043EA09 +:103210000C03194341EA0E018160117E8368012984 +:1032200023F0400308BF40338360517E8368012947 +:1032300023F0800308BF80338360917E8268002979 +:1032400022F0100218BF1032826080BD40F20043AD +:10325000C4F20203984202D1052900D3FEE701EB34 +:10326000810100EB8100816811438160704700009B +:103270008900436802FA01F1194341607047000078 +:10328000082A19D80123934013F48A7F14D08B00A5 +:1032900001EB8101D0F800C000EB8100806802FAE8 +:1032A00003F31CEA030100EA020018BF0121002811 +:1032B00018BF012008407047FEE7000050B1002110 +:1032C000C0F81710C0E90011C0E90211C0E90411EB +:1032D000704700BFFEE70000B0B543F600050446A6 +:1032E000C4F20105C1B2284600F072FB284607214E +:1032F00000F0B6FB0028F9D02046B0BDFFF7D0F9AA +:10330000FFF7CEF943F20000C4F200004AF6AA210A +:103310000160704770B540F60005C4F2010504462F +:10332000A5F544400221844205F5405008BF012123 +:10333000261A40F2026018BF0E4600F0BBFA16A033 +:1033400030F8160000F0B6FA14A050F826302846DF +:103350001821032200F02CF812A050F8263028463D +:103360000421032200F024F8204600F035FB4CF243 +:10337000C061C0F22D01204600F0F4FA204604217D +:1033800000F076FB2046082100F07CFB2046BDE8DB +:10339000704000F05FBB00BF0E0611070002000086 +:1033A00004000000000400000800000041617047B4 +:1033B00070B5CE0601F00F0C09D5042A05D1C26BF9 +:1033C0004CF0030C1A43C26301E04CEA020C00F11A +:1033D000100213F0010400F1140E33D113F00204B3 +:1033E00041D113F004044FD113F008045DD113F060 +:1033F00010046BD113F020047AD113F0400440F094 +:10340000898013F0800440F0978013F4807440F0BA +:10341000A58013F4007440F0B38013F4806440F08E +:10342000C18013F4006440F0CF8013F4805440F066 +:10343000DD8013F4005440F0EB8013F4804440F03E +:10344000F88004E10568282925F00F0545EA0C05F8 +:1034500003D0482903D1164600E076463460056063 +:1034600013F00204BDD00568482925F0F00545EAAF +:103470000C1503D0282903D1764600E016463460A7 +:10348000056013F00404AFD00568482925F4706581 +:1034900045EA0C2503D0282903D1764600E01646DC +:1034A0003460056013F00804A1D00568482925F4AC +:1034B000704545EA0C3503D0282903D1764600E053 +:1034C00016463460056013F0100493D0056848294F +:1034D00025F4702545EA0C4503D0282903D176460A +:1034E00000E016463460056013F020043FF485AF19 +:1034F0000568482925F4700545EA0C5503D02829AC +:1035000003D1764600E016463460056013F04004AF +:103510003FF477AF0568482925F0706545EA0C65EA +:1035200003D0282903D1764600E0164634600560B2 +:1035300013F080043FF469AF0568482925F0704511 +:1035400045EA0C7503D0282903D1764600E01646DB +:103550003460056013F480743FF45BAF456828293C +:1035600025F00F0545EA0C0503D0482903D116467E +:1035700000E076463460456013F400743FF44DAFCC +:103580004568482925F0F00545EA0C1503D028299F +:1035900003D1764600E016463460456013F480643B +:1035A0003FF43FAF4568482925F4706545EA0C258E +:1035B00003D0282903D1764600E0164634604560E2 +:1035C00013F400643FF431AF4568482925F4704591 +:1035D00045EA0C3503D0282903D1764600E016468B +:1035E0003460456013F480543FF423AF45684829A4 +:1035F00025F4702545EA0C4503D0282903D17646E9 +:1036000000E016463460456013F400543FF415AFF3 +:103610004568482925F4700545EA0C5503D028294A +:1036200003D1764600E016463460456013F48044CA +:103630000DD04568482925F0706545EA0C6503D032 +:10364000282903D1764600E016463460456013F41D +:10365000004308BF70BD4468482924F0704444EA20 +:103660000C7502D0282901D172461360456070BDE7 +:10367000B0B540F2040CC4F2010C0CF118031A4668 +:10368000B0F1FF3FC4BF0422C4F20102146800F489 +:103690004012B2F5401F1FFA80FE08D1DCF800503E +:1036A00024F0E06225F0E064CCF8004011E0C202B2 +:1036B00006D46FF00F0202EA50420EFA02F204E062 +:1036C000C0F30342032505FA02F224EA020242F0A3 +:1036D000E0626FF00F0404EA504400290EFA04F58A +:1036E00018BF2A43B0F1FF3FC8BF63461A60B0BDA0 +:1036F000B0B500F00FF9FDF745F840F2065000F0C4 +:10370000D9F8FFF71BFD40F20404C2F20004204682 +:10371000FEF758FF40F2F405C2F200052046FEF71E +:103720001FFF2846FEF790FDF8E700004EF60C5C00 +:10373000CEF2000CDCF8003003F4E063A3F5407334 +:10374000B3F5A06F01D21B0A06E040F20053C0F2AD +:10375000FA53CCF80030022301FA03FCC3F104034E +:103760000F21D94011404EF2001241EA0C01CEF275 +:1037700000020901831883F8001300F01F010123E0 +:1037800003FA01F1401142F8201070474FF68072A1 +:10379000C1F6FF72114008434EF60851CEF2000107 +:1037A0000860BFF34F8F7047B0B541F2040EC4F20A +:1037B000020EDEF8001001F00C01082941F2002190 +:1037C000C0F27A0144D1DEF80020D20304D440F6DE +:1037D0000011C0F23D0124E0DEF8282046F6004347 +:1037E0005200DEF82820C0F2DC2358BF0B46D1037C +:1037F00010D5DEF82810DEF82820C1F303110131BE +:10380000C2F30322B3FBF1F10232112A08BF1422E2 +:1038100002FB01F3DEF8281001F00F010131B3FBC8 +:10382000F1F1DEF80020DEF800301024C2F383420C +:1038300004EA53631A4401230F2A38BF02231A44AF +:103840000F2A11BF514301EB4102520002EB51011B +:10385000DEF8002013A3C2F303129B5CDEF8002005 +:1038600044F2604CC2F30222C0F6000C1CF8025075 +:10387000DEF80020032812D821FA03F3DFE800F075 +:103880000D0204071846B0BD23FA05F0B0BDC2F31F +:10389000C2201CF8000023FA00F10846B0BD002049 +:1038A000B0BD00BF000000000000000001020304E2 +:1038B0000607080941F2000300F01F018009C4F265 +:1038C00002034FF0010CC2580CFA01F11143C15030 +:1038D0007047000041F2000300F01F018009C4F2AC +:1038E00002034FF0010CC2580CFA01F122EA010167 +:1038F000C150704741F2000300F01F018009C4F27B +:1039000002034FF0010CC2580CFA01F11143C150EF +:103910007047000040F2EC00C2F20000006844F67C +:10392000D351C1F26201A0FB01014FF0FF3000EB67 +:103930009110B0F1807F00D3FEE74EF21001CEF27D +:10394000000148604EF62350CEF20000F0220270D3 +:10395000002207238A600B600270704780B5AFF3C6 +:1039600000800000B0B5044644F6FF30C4F2000009 +:103970000D4684424FF0000013DD44F60041C4F2CE +:1039800000018C4219D045F20001C4F200018C42C2 +:1039900013D043F60001C4F201018C4210D1032080 +:1039A0000CE044F20041C4F200018C4205D044F620 +:1039B0000001C4F200018C4202D10220FFF7F4FEA4 +:1039C00000EB5500B0FBF5F080B2A060B0BD000088 +:1039D0006FF35F214160704710B544F6FF31C4F2C8 +:1039E0000001884215DD44F60041C4F2000188421E +:1039F0001ED045F20001C4F2000188421BD043F6FC +:103A00000001C4F20101884218BF10BD40F20E341B +:103A100016E044F20041C4F2000188420ED044F6A0 +:103A20000001C4F20001884212D140F2124407E0C2 +:103A300040F2134404E040F2144401E040F2114427 +:103A40002046FFF757FF2046BDE81040FFF742BF72 +:103A500010BD0000C16841F40051C1607047000012 +:103A60008A09105801F01F01C84000F0010070479A +:103A7000C26801F0040122F00402C260C26811436E +:103A8000C1607047C26801F0080122F00802C260FC +:103A9000C2681143C16070470FB4054B10B503A94C +:103AA000044A029800F018F810BC5DF814FB0000FE +:103AB000D93200080000002002E008C8121F08C127 +:103AC000002AFAD170477047002001E001C1121F9F +:103AD000002AFBD1704700002DE9FF4F8DB00F4643 +:103AE0000546002606E025280BD0DDE90F12904799 +:103AF0006D1C761C28780028F5D111B03046BDE841 +:103B0000F08F0024A246A1460122EC4900E00443C4 +:103B100015F8013F203B02FA03F00842F7D128785C +:103B20002A2810D06FF02F022878A0F1300109293F +:103B300014D80AEB8A0102EB410144F0020400EBC5 +:103B4000010A6D1CF0E701CF5FEA000A03D544F4D7 +:103B50000054CAF1000A44F002046D1C28782E2893 +:103B600017D115F8010F44F004042A280ED06FF085 +:103B70002F022878A0F1300109290AD809EB890120 +:103B800002EB410100EB01096D1CF2E757F8049BC1 +:103B90006D1C28786C280FD006DC4C2817D06828BC +:103BA0000DD06A2814D104E0742810D07A280FD1DF +:103BB0000DE044F400140AE044F4801401E044F4FD +:103BC00040146978814202D104F580146D1C6D1C8B +:103BD0002A786E2A1FD00CDC632A31D004DC002A3C +:103BE0008BD0582A11D1A3E0642A68D0692A0CD15D +:103BF00065E0732A2ED004DC6F2A73D0702A04D1BA +:103C00009BE0752A6FD0782A6ED01046DDE90F123E +:103C10009047761C50E1C4F30250022806D00328D6 +:103C200009D0042801CF09D0066045E101CFF11782 +:103C3000C0E9006140E101CF06803DE106703BE153 +:103C400017F8040B8DF8000000208DF80100EB46FA +:103C5000012003E057F804BB4FF0FF3061074FF03D +:103C6000000102D40DE008F10101884649450FDA50 +:103C70008045F8DB1BF808100029F4D108E008F1B2 +:103C8000010188468142FADB1BF808100029F6D1B1 +:103C9000DDE90F23AAEB08008146214600F036F942 +:103CA000304400EB080604E0DDE90F121BF8010BBD +:103CB0009047B8F10108F7D221464846F7E00A21BB +:103CC000C4F302534FF0000B0891022B04D001CF34 +:103CD000C117032B09D00AE0FF1D27F00707F7E8FB +:103CE000020108E032E01FE020E000B2C117042B1F +:103CF00001D140B2C117031E71F1000307DA4FF082 +:103D0000000CD0EB0C006CEB01012D2302E023052D +:103D100004D52B238DF82430012303E0E30701D0E1 +:103D20002023F7E7984658E00A2110E010210EE022 +:103D300010204FF0000B08900CE010214FF0000B0A +:103D400044F004044FF00809089103E008214FF003 +:103D5000000B0891C4F30253022B04D001CF0021C1 +:103D6000032B06D006E0FF1D27F00707F7E8020146 +:103D700003E080B2042B00D1C0B24FF0000823074B +:103D80002BD5702A07D0DDF820C08CF0100C5CEA2F +:103D90000B0C05D00EE040238DF82430012308E001 +:103DA00050EA010306D030238DF824308DF8252009 +:103DB00002239846DDF820C08CF0080C5CEA0B0C5E +:103DC0000BD150EA010301D1630706D530238DF8EA +:103DD00024304FF00108A9F10109582A04D038A273 +:103DE0000B9208AA0A920BE03AA2F9E75B46089AFE +:103DF000FCF7FFF90B9B9B5C0A9A521E0A92137008 +:103E000050EA0102F2D10A98ADEB000000F1200B5C +:103E1000600702D524F4803401E04FF00109D94550 +:103E200002DDA9EB0B0000E0002000EB0B01414498 +:103E30000890AAEB010AE00306D4DDE90F2321462E +:103E4000504600F063F806444FF0000908E009A965 +:103E500011F80900DDE90F12904709F10109761CFC +:103E6000C145F4DBE0030CD5DDE90F2321465046C4 +:103E700000F04CF8064404E0DDE90F1230209047D2 +:103E8000761C0899481E08900029F5DC08E00A987D +:103E90000A990078491C0A91DDE90F129047761CB7 +:103EA000BBF10001ABF1010BF1DC21465046DDE92D +:103EB0000F2300F019F806446D1C1BE609280100C9 +:103EC0003031323334353637383961626364656690 +:103ED0000000000030313233343536373839414252 +:103EE00043444546000000002DE9F041044600250A +:103EF0001E461746880404D405E039462020B04702 +:103F00006D1C641EF9D52846BDE8F0812DE9F0410D +:103F1000044600251E469046C80301D5302700E020 +:103F20002027880404D505E041463846B0476D1C7B +:103F3000641EF9D52846BDE8F081000010B504469E +:103F400001E0FFF7C9F914F8010B04490028F8D182 +:103F5000BDE810400A20FFF7BFB9000000000020B4 +:103F6000637C777BF26B6FC53001672BFED7AB7636 +:103F7000CA82C97DFA5947F0ADD4A2AF9CA472C0E1 +:103F8000B7FD9326363FF7CC34A5E5F171D831154E +:103F900004C723C31896059A071280E2EB27B2756F +:103FA00009832C1A1B6E5AA0523BD6B329E32F84E7 +:103FB00053D100ED20FCB15B6ACBBE394A4C58CFDF +:103FC000D0EFAAFB434D338545F9027F503C9FA8B3 +:103FD00051A3408F929D38F5BCB6DA2110FFF3D281 +:103FE000CD0C13EC5F974417C4A77E3D645D197335 +:103FF00060814FDC222A908846EEB814DE5E0BDB2F +:10400000E0323A0A4906245CC2D3AC629195E47965 +:10401000E7C8376D8DD54EA96C56F4EA657AAE08BF +:10402000BA78252E1CA6B4C6E8DD741F4BBD8B8A5A +:10403000703EB5664803F60E613557B986C11D9EC0 +:10404000E1F8981169D98E949B1E87E9CE5528DF37 +:104050008CA1890DBFE6426841992D0FB054BB1663 +:1040600000000000963007772C610EEEBA510999D6 +:1040700019C46D078FF46A7035A563E9A395649E32 +:104080003288DB0EA4B8DC791EE9D5E088D9D29756 +:104090002B4CB609BD7CB17E072DB8E7911DBF90B2 +:1040A0006410B71DF220B06A4871B9F3DE41BE84D6 +:1040B0007DD4DA1AEBE4DD6D51B5D4F4C785D38332 +:1040C00056986C13C0A86B647AF962FDECC9658AD6 +:1040D0004F5C0114D96C0663633D0FFAF50D088D32 +:1040E000C8206E3B5E10694CE44160D5727167A2D6 +:1040F000D1E4033C47D4044BFD850DD26BB50AA532 +:10410000FAA8B5356C98B242D6C9BBDB40F9BCAC55 +:10411000E36CD832755CDF45CF0DD6DC593DD1ABB1 +:10412000AC30D9263A00DE518051D7C81661D0BFD5 +:10413000B5F4B42123C4B3569995BACF0FA5BDB831 +:104140009EB802280888055FB2D90CC624E90BB1D5 +:10415000877C6F2F114C6858AB1D61C13D2D66B631 +:104160009041DC760671DB01BC20D2982A10D5EF95 +:104170008985B1711FB5B606A5E4BF9F33D4B8E8F1 +:10418000A2C9077834F9000F8EA8099618980EE195 +:10419000BB0D6A7F2D3D6D08976C6491015C63E6F1 +:1041A000F4516B6B62616C1CD83065854E0062F215 +:1041B000ED95066C7BA5011BC1F4088257C40FF571 +:1041C000C6D9B06550E9B712EAB8BE8B7C88B9FC95 +:1041D000DF1DDD62492DDA15F37CD38C654CD4FBF1 +:1041E0005861B24DCE51B53A7400BCA3E230BBD495 +:1041F00041A5DF4AD795D83D6DC4D1A4FBF4D6D3F1 +:104200006AE96943FCD96E34468867ADD0B860DA94 +:10421000732D0444E51D03335F4C0AAAC97C0DDDF0 +:104220003C710550AA41022710100BBE86200CC914 +:1042300025B56857B3856F2009D466B99FE461CE70 +:104240000EF9DE5E98C9D9292298D0B0B4A8D7C794 +:10425000173DB359810DB42E3B5CBDB7AD6CBAC0F0 +:104260002083B8EDB6B3BF9A0CE2B6039AD2B1740C +:104270003947D5EAAF77D29D1526DB048316DC7368 +:10428000120B63E3843B64943E6A6D0DA85A6A7A0C +:104290000BCF0EE49DFF099327AE000AB19E077D68 +:1042A00044930FF0D2A3088768F2011EFEC206698C +:1042B0005D5762F7CB67658071366C19E7066B6EE8 +:1042C000761BD4FEE02BD3895A7ADA10CC4ADD670C +:1042D0006FDFB9F9F9EFBE8E43BEB717D58EB06068 +:1042E000E8A3D6D67E93D1A1C4C2D83852F2DF4F0C +:1042F000F167BBD16757BCA6DD06B53F4B36B24868 +:10430000DA2B0DD84C1B0AAFF64A0336607A04410B +:10431000C3EF60DF55DF67A8EF8E6E3179BE694667 +:104320008CB361CB1A8366BCA0D26F2536E268528B +:1043300095770CCC03470BBBB91602222F260555E7 +:10434000BE3BBAC5280BBDB2925AB42B046AB35C0B +:10435000A7FFD7C231CFD0B58B9ED92C1DAEDE5B67 +:10436000B0C2649B26F263EC9CA36A750A936D024B +:10437000A906099C3F360EEB8567077213570005A7 +:10438000824ABF95147AB8E2AE2BB17B381BB60CCB +:104390009B8ED2920DBED5E5B7EFDC7C21DFDB0B27 +:1043A000D4D2D38642E2D4F1F8B3DD686E83DA1F4B +:1043B000CD16BE815B26B9F6E177B06F7747B718A7 +:1043C000E65A0888706A0FFFCA3B06665C0B01114B +:1043D000FF9E658F69AE62F8D3FF6B6145CF6C16A7 +:1043E00078E20AA0EED20DD75483044EC2B303394B +:1043F000612667A7F71660D04D476949DB776E3EA7 +:104400004A6AD1AEDC5AD6D9660BDF40F03BD837CA +:1044100053AEBCA9C59EBBDE7FCFB247E9FFB53026 +:104420001CF2BDBD8AC2BACA3093B353A6A3B4244A +:104430000536D0BA9306D7CD2957DE54BF67D923A6 +:104440002E7A66B3B84A61C4021B685D942B6F2A4A +:1044500037BE0BB4A18E0CC31BDF055A8DEF022DA6 +:1044600000000000010203040C1014182030405218 +:10447000096AD53036A538BF40A39E81F3D7FB7CAF +:10448000E339829B2FFF87348E4344C4DEE9CB544B +:104490007B9432A6C2233DEE4C950B42FAC34E08E4 +:1044A0002EA16628D924B2765BA2496D8BD12572E4 +:1044B000F8F66486689816D4A45CCC5D65B6926CF8 +:1044C000704850FDEDB9DA5E154657A78D9D849072 +:1044D000D8AB008CBCD30AF7E45805B8B34506D076 +:1044E0002C1E8FCA3F0F02C1AFBD0301138A6B3A66 +:1044F0009111414F67DCEA97F2CFCEF0B4E67396A4 +:10450000AC7422E7AD3585E2F937E81C75DF6E47FC +:10451000F11A711D29C5896FB7620EAA18BE1BFC5E +:10452000563E4BC6D279209ADBC0FE78CD5AF41F96 +:10453000DDA8338807C731B11210592780EC5F60BE +:10454000517FA919B54A0D2DE57A9F93C99CEFA01B +:10455000E03B4DAE2AF5B0C8EBBB3C8353996117E5 +:104560002B047EBA77D626E169146355210C7D436E +:10457000414E4644206D6F6465206E6F7420656EF9 +:1045800061626C65640D004E6F20617661696C61DB +:10459000626C65206D61696C626F7820666F722055 +:1045A00043414E4644207472616E736D6973736942 +:1045B0006F6E2C20656E61626C696E6720545820A6 +:1045C000696E746572727570740D0000F0450008B4 +:1045D0000000002010020000C6020008104600087B +:1045E0001002002060080000C83A00080000000027 +:1045F0000155029903F80E2707550200080011FF24 +:104600000123456789ABCDEFFEDCBA9876543210B2 :040000050800016589 :00000001FF diff --git a/out/Robot_V2/GD32C103CB/Release/compile_commands.json b/out/Robot_V2/GD32C103CB/Release/compile_commands.json index 416fec4..c877a98 100644 --- a/out/Robot_V2/GD32C103CB/Release/compile_commands.json +++ b/out/Robot_V2/GD32C103CB/Release/compile_commands.json @@ -5,6 +5,12 @@ "file": "G:\\Robot_v2\\BOOT\\Robot_V2\\main.cpp", "output": "CMakeFiles\\Group_Source_Files.dir\\G_\\Robot_v2\\BOOT\\Robot_V2\\main.o" }, +{ + "directory": "G:/Robot_v2/BOOT/tmp/1", + "command": "c:\\Users\\cbb\\.vcpkg\\artifacts\\2139c4c6\\compilers.arm.armclang\\6.24.0\\bin\\armclang.exe --target=arm-arm-none-eabi -DGD32C10x -D_RTE_ -IG:/Robot_v2/BOOT/Robot_V2/RTE/_Release_GD32C103CB -IC:/Users/cbb/AppData/Local/arm/packs/ARM/CMSIS/4.5.0/CMSIS/Include -IC:/Users/cbb/AppData/Local/arm/packs/GigaDevice/GD32C10x_DFP/1.0.1/Device/Firmware/Peripherals/inc -IC:/Users/cbb/AppData/Local/arm/packs/GigaDevice/GD32C10x_DFP/1.0.1/Device/Include -IC:/Users/cbb/AppData/Local/arm/packs/GigaDevice/GD32C10x_DFP/1.0.1/Device/Utilities -IG:/Robot_v2/BOOT/Robot_V2 -IG:/Robot_v2/BOOT/Robot_V2/sys -IG:/Robot_v2/BOOT/Robot_V2/device -isystem C:/Users/cbb/.vcpkg/artifacts/2139c4c6/compilers.arm.armclang/6.24.0/include/libcxx -isystem C:/Users/cbb/.vcpkg/artifacts/2139c4c6/compilers.arm.armclang/6.24.0/include --target=arm-arm-none-eabi -mcpu=Cortex-M4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard --target=arm-arm-none-eabi -mcpu=Cortex-M4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard --target=arm-arm-none-eabi -c -mlittle-endian -fshort-enums -fshort-wchar -D__MICROLIB -Wno-register -gdwarf-5 -Wno-macro-redefined -Wno-pragma-pack -Wno-parentheses-equality -Wno-license-management -O2 -o CMakeFiles\\Group_Source_Files.dir\\G_\\Robot_v2\\BOOT\\Robot_V2\\sys\\aes128.o -c G:\\Robot_v2\\BOOT\\Robot_V2\\sys\\aes128.cpp", + "file": "G:\\Robot_v2\\BOOT\\Robot_V2\\sys\\aes128.cpp", + "output": "CMakeFiles\\Group_Source_Files.dir\\G_\\Robot_v2\\BOOT\\Robot_V2\\sys\\aes128.o" +}, { "directory": "G:/Robot_v2/BOOT/tmp/1", "command": "c:\\Users\\cbb\\.vcpkg\\artifacts\\2139c4c6\\compilers.arm.armclang\\6.24.0\\bin\\armclang.exe --target=arm-arm-none-eabi -DGD32C10x -D_RTE_ -IG:/Robot_v2/BOOT/Robot_V2/RTE/_Release_GD32C103CB -IC:/Users/cbb/AppData/Local/arm/packs/ARM/CMSIS/4.5.0/CMSIS/Include -IC:/Users/cbb/AppData/Local/arm/packs/GigaDevice/GD32C10x_DFP/1.0.1/Device/Firmware/Peripherals/inc -IC:/Users/cbb/AppData/Local/arm/packs/GigaDevice/GD32C10x_DFP/1.0.1/Device/Include -IC:/Users/cbb/AppData/Local/arm/packs/GigaDevice/GD32C10x_DFP/1.0.1/Device/Utilities -IG:/Robot_v2/BOOT/Robot_V2 -IG:/Robot_v2/BOOT/Robot_V2/sys -IG:/Robot_v2/BOOT/Robot_V2/device -isystem C:/Users/cbb/.vcpkg/artifacts/2139c4c6/compilers.arm.armclang/6.24.0/include/libcxx -isystem C:/Users/cbb/.vcpkg/artifacts/2139c4c6/compilers.arm.armclang/6.24.0/include --target=arm-arm-none-eabi -mcpu=Cortex-M4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard --target=arm-arm-none-eabi -mcpu=Cortex-M4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard --target=arm-arm-none-eabi -c -mlittle-endian -fshort-enums -fshort-wchar -D__MICROLIB -Wno-register -gdwarf-5 -Wno-macro-redefined -Wno-pragma-pack -Wno-parentheses-equality -Wno-license-management -O2 -o CMakeFiles\\Group_sys.dir\\G_\\Robot_v2\\BOOT\\Robot_V2\\sys\\systick.o -c G:\\Robot_v2\\BOOT\\Robot_V2\\sys\\systick.cpp", diff --git a/tmp/.ninja_log b/tmp/.ninja_log index 77ace00..320a8b3 100644 --- a/tmp/.ninja_log +++ b/tmp/.ninja_log @@ -9,20 +9,35 @@ 322 422 7883668898391400 G:/Robot_v2/BOOT/tmp/Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-patch b54a62060b325746 422 9179 7883668985966322 Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-configure 708efa7dee4d8c45 422 9179 7883668985966322 G:/Robot_v2/BOOT/tmp/Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-configure 708efa7dee4d8c45 -13 429 7883895993327684 Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-build c3a3e5728b3e60b8 +16 115 7889058218052152 Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-build c3a3e5728b3e60b8 441 553 7883669975311345 Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-executes 9db191f9941f966f -13 429 7883895993327684 G:/Robot_v2/BOOT/out/Robot_V2/GD32C103CB/Release/Robot_V2.axf c3a3e5728b3e60b8 -13 429 7883895993327684 G:/Robot_v2/BOOT/out/Robot_V2/GD32C103CB/Release/Robot_V2.hex c3a3e5728b3e60b8 -13 429 7883895993327684 G:/Robot_v2/BOOT/out/Robot_V2/GD32C103CB/Release/Robot_V2.axf.map c3a3e5728b3e60b8 -839 1004 7883896002827735 Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-done 39cd38b08f3cacb9 -731 839 7883896001185719 G:/Robot_v2/BOOT/tmp/Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-test 57275ea8426097a0 -13 429 7883895993327684 G:/Robot_v2/BOOT/tmp/Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-build c3a3e5728b3e60b8 +16 115 7889058218052152 G:/Robot_v2/BOOT/out/Robot_V2/GD32C103CB/Release/Robot_V2.axf c3a3e5728b3e60b8 +16 115 7889058218052152 G:/Robot_v2/BOOT/out/Robot_V2/GD32C103CB/Release/Robot_V2.hex c3a3e5728b3e60b8 +16 115 7889058218052152 G:/Robot_v2/BOOT/out/Robot_V2/GD32C103CB/Release/Robot_V2.axf.map c3a3e5728b3e60b8 +407 516 7889058222828813 Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-done 39cd38b08f3cacb9 +329 407 7889058221742405 G:/Robot_v2/BOOT/tmp/Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-test 57275ea8426097a0 +16 115 7889058218052152 G:/Robot_v2/BOOT/tmp/Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-build c3a3e5728b3e60b8 441 553 7883669975311345 G:/Robot_v2/BOOT/tmp/Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-executes 9db191f9941f966f -429 671 7883895997486268 Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-database 206b709820348205 -429 671 7883895997486268 G:/Robot_v2/BOOT/tmp/Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-database 206b709820348205 -671 731 7883895999907919 Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-install 66d6e5c354af78e4 -671 731 7883895999907919 G:/Robot_v2/BOOT/tmp/Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-install 66d6e5c354af78e4 -731 839 7883896001185719 Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-test 57275ea8426097a0 -839 1004 7883896002827735 CMakeFiles/Robot_V2.Release+GD32C103CB-complete 39cd38b08f3cacb9 -839 1004 7883896002827735 G:/Robot_v2/BOOT/tmp/CMakeFiles/Robot_V2.Release+GD32C103CB-complete 39cd38b08f3cacb9 -839 1004 7883896002827735 G:/Robot_v2/BOOT/tmp/Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-done 39cd38b08f3cacb9 +115 283 7889058219043466 Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-database 206b709820348205 +115 283 7889058219043466 G:/Robot_v2/BOOT/tmp/Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-database 206b709820348205 +283 329 7889058220722009 Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-install 66d6e5c354af78e4 +283 329 7889058220722009 G:/Robot_v2/BOOT/tmp/Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-install 66d6e5c354af78e4 +329 407 7889058221742405 Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-test 57275ea8426097a0 +407 516 7889058222828813 CMakeFiles/Robot_V2.Release+GD32C103CB-complete 39cd38b08f3cacb9 +407 516 7889058222828813 G:/Robot_v2/BOOT/tmp/CMakeFiles/Robot_V2.Release+GD32C103CB-complete 39cd38b08f3cacb9 +407 516 7889058222828813 G:/Robot_v2/BOOT/tmp/Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-done 39cd38b08f3cacb9 +16 471 7889059150268053 Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-build c3a3e5728b3e60b8 +16 471 7889059150268053 G:/Robot_v2/BOOT/out/Robot_V2/GD32C103CB/Release/Robot_V2.axf c3a3e5728b3e60b8 +16 471 7889059150268053 G:/Robot_v2/BOOT/out/Robot_V2/GD32C103CB/Release/Robot_V2.hex c3a3e5728b3e60b8 +16 471 7889059150268053 G:/Robot_v2/BOOT/out/Robot_V2/GD32C103CB/Release/Robot_V2.axf.map c3a3e5728b3e60b8 +16 471 7889059150268053 G:/Robot_v2/BOOT/tmp/Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-build c3a3e5728b3e60b8 +471 680 7889059154820695 Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-database 206b709820348205 +471 680 7889059154820695 G:/Robot_v2/BOOT/tmp/Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-database 206b709820348205 +680 726 7889059156906569 Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-install 66d6e5c354af78e4 +680 726 7889059156906569 G:/Robot_v2/BOOT/tmp/Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-install 66d6e5c354af78e4 +726 809 7889059157974137 Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-test 57275ea8426097a0 +726 809 7889059157974137 G:/Robot_v2/BOOT/tmp/Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-test 57275ea8426097a0 +809 935 7889059159195145 CMakeFiles/Robot_V2.Release+GD32C103CB-complete 39cd38b08f3cacb9 +809 935 7889059159195145 Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-done 39cd38b08f3cacb9 +809 935 7889059159195145 G:/Robot_v2/BOOT/tmp/CMakeFiles/Robot_V2.Release+GD32C103CB-complete 39cd38b08f3cacb9 +809 935 7889059159195145 G:/Robot_v2/BOOT/tmp/Robot_V2.Release+GD32C103CB/src/Robot_V2.Release+GD32C103CB-stamp/Robot_V2.Release+GD32C103CB-done 39cd38b08f3cacb9 diff --git a/tmp/1/.ninja_deps b/tmp/1/.ninja_deps index 634117921ecfaee156c20bea8d2aee505be8b43b..04f684e74d5dcea4691f818ad802a619dcb35c63 100644 GIT binary patch delta 11853 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 delta 13 UcmaEJfd9e`u7(!IEldGx05Ek1B>(^b diff --git a/tmp/1/.ninja_log b/tmp/1/.ninja_log index dced35a..9497338 100644 --- a/tmp/1/.ninja_log +++ b/tmp/1/.ninja_log @@ -1,45 +1,86 @@ # ninja log v6 -21 125 7883894964473103 CMakeFiles/Group_Source_Files.dir/G_/Robot_v2/BOOT/Robot_V2/main.o a1e7d66abb20e63f +12 211 7888233523208084 CMakeFiles/Group_Source_Files.dir/G_/Robot_v2/BOOT/Robot_V2/main.o a1e7d66abb20e63f 66 244 7883669850223131 CMakeFiles/GigaDevice_Device_GD32C10x_StdPeripherals_FWDGT_1_0_0.dir/G_/Robot_v2/BOOT/Robot_V2/RTE/Device/GD32C103CB/gd32c10x_fwdgt.o 77d2407664c0b50e -16 228 7883865332915349 CMakeFiles/Group_sys.dir/G_/Robot_v2/BOOT/Robot_V2/sys/initial.o 671120909b55a6ec -15 227 7883870843336311 CMakeFiles/Group_sys.dir/G_/Robot_v2/BOOT/Robot_V2/sys/systick.o 90049e3a9997d47e +23 132 7887310985859793 CMakeFiles/Group_sys.dir/G_/Robot_v2/BOOT/Robot_V2/sys/initial.o 671120909b55a6ec +16 241 7888233523249309 CMakeFiles/Group_sys.dir/G_/Robot_v2/BOOT/Robot_V2/sys/systick.o 90049e3a9997d47e +16 346 7886528851179878 CMakeFiles/Group_Source_Files.dir/G_/Robot_v2/BOOT/Robot_V2/sys/aes128.o de648e3137990e90 38 216 7883669849948685 CMakeFiles/GigaDevice_Device_EVAL_GD32C10x_1_0_0.dir/G_/Robot_v2/BOOT/Robot_V2/RTE/Device/GD32C103CB/gd32c10x_eval.o 9a409ccbbaf0b506 49 218 7883669850060822 CMakeFiles/GigaDevice_Device_GD32C10x_StdPeripherals_DBG_1_0_0.dir/G_/Robot_v2/BOOT/Robot_V2/RTE/Device/GD32C103CB/gd32c10x_dbg.o afbddcf2f39ba5cd -15 123 7883894424171514 G:/Robot_v2/BOOT/tmp/1/CMakeFiles/database cd32a3f4a99f5b2a -45 217 7883669850019389 CMakeFiles/GigaDevice_Device_GD32C10x_StdPeripherals_CRC_1_0_0.dir/G_/Robot_v2/BOOT/Robot_V2/RTE/Device/GD32C103CB/gd32c10x_crc.o 67890dbd6b26def8 +27 233 7888111179322586 CMakeFiles/GigaDevice_Device_GD32C10x_StdPeripherals_CRC_1_0_0.dir/G_/Robot_v2/BOOT/Robot_V2/RTE/Device/GD32C103CB/gd32c10x_crc.o 67890dbd6b26def8 +16 89 7889045342326772 G:/Robot_v2/BOOT/tmp/1/CMakeFiles/database cd32a3f4a99f5b2a 75 247 7883669850317172 CMakeFiles/GigaDevice_Device_GD32C10x_StdPeripherals_MISC_1_0_0.dir/G_/Robot_v2/BOOT/Robot_V2/RTE/Device/GD32C103CB/gd32c10x_misc.o 249b986db23681a2 57 233 7883669850137475 CMakeFiles/GigaDevice_Device_GD32C10x_StdPeripherals_EXTI_1_0_0.dir/G_/Robot_v2/BOOT/Robot_V2/RTE/Device/GD32C103CB/gd32c10x_exti.o dc69558be82ddab3 -25 147 7883894964521073 CMakeFiles/Group_sys.dir/G_/Robot_v2/BOOT/Robot_V2/sys/OTA.o d3ceecf5eb5da62f +11 170 7889046213230158 CMakeFiles/Group_sys.dir/G_/Robot_v2/BOOT/Robot_V2/sys/OTA.o d3ceecf5eb5da62f 84 295 7883669850409328 CMakeFiles/GigaDevice_Device_GD32C10x_StdPeripherals_RCU_1_0_0.dir/G_/Robot_v2/BOOT/Robot_V2/RTE/Device/GD32C103CB/gd32c10x_rcu.o 8a38055acf3e9414 79 254 7883669850363588 CMakeFiles/GigaDevice_Device_GD32C10x_StdPeripherals_PMU_1_0_0.dir/G_/Robot_v2/BOOT/Robot_V2/RTE/Device/GD32C103CB/gd32c10x_pmu.o 90d7d435f1eb4630 53 264 7883669850099005 CMakeFiles/GigaDevice_Device_GD32C10x_StdPeripherals_DMA_1_0_0.dir/G_/Robot_v2/BOOT/Robot_V2/RTE/Device/GD32C103CB/gd32c10x_dma.o d976b2f727d5d643 79 274 7883668987832296 CMakeFiles/GigaDevice_Device_Startup_1_0_0.dir/G_/Robot_v2/BOOT/Robot_V2/RTE/Device/GD32C103CB/startup_gd32c10x.o 7333d2a666947fb3 70 266 7883669850273764 CMakeFiles/GigaDevice_Device_GD32C10x_StdPeripherals_GPIO_1_0_0.dir/G_/Robot_v2/BOOT/Robot_V2/RTE/Device/GD32C103CB/gd32c10x_gpio.o 54f1765925ee6320 89 282 7883669850457885 CMakeFiles/GigaDevice_Device_GD32C10x_StdPeripherals_USART_1_0_0.dir/G_/Robot_v2/BOOT/Robot_V2/RTE/Device/GD32C103CB/gd32c10x_usart.o 25d66ba79c0b0dee -94 283 7883669850513392 CMakeFiles/GigaDevice_Device_Startup_1_0_0.dir/G_/Robot_v2/BOOT/Robot_V2/RTE/Device/GD32C103CB/system_gd32c10x.o 59beee78be430f18 +19 235 7887309933117156 CMakeFiles/GigaDevice_Device_Startup_1_0_0.dir/G_/Robot_v2/BOOT/Robot_V2/RTE/Device/GD32C103CB/system_gd32c10x.o 59beee78be430f18 42 319 7883669849980565 CMakeFiles/GigaDevice_Device_GD32C10x_StdPeripherals_CAN_1_0_0.dir/G_/Robot_v2/BOOT/Robot_V2/RTE/Device/GD32C103CB/gd32c10x_can.o faa264156fd20815 62 379 7883669850185622 CMakeFiles/GigaDevice_Device_GD32C10x_StdPeripherals_FMC_1_0_0.dir/G_/Robot_v2/BOOT/Robot_V2/RTE/Device/GD32C103CB/gd32c10x_fmc.o bf3ed2250296db4a -18 291 7883870843367542 CMakeFiles/Group_sys.dir/G_/Robot_v2/BOOT/Robot_V2/sys/flash.o b46fd0fc5d6515ff -29 160 7883894964555573 CMakeFiles/Group_device.dir/G_/Robot_v2/BOOT/Robot_V2/device/Can.o 45fb475e6531516a -161 315 7883894967031924 G:/Robot_v2/BOOT/out/Robot_V2/GD32C103CB/Release/Robot_V2.axf 66e252b5d299850c -161 315 7883894967031924 ac6_linker_script.sct 66e252b5d299850c -161 315 7883894967031924 G:/Robot_v2/BOOT/tmp/1/ac6_linker_script.sct 66e252b5d299850c -15 123 7883894424171514 CMakeFiles/database cd32a3f4a99f5b2a -29 138 7883894968555254 CMakeFiles/database cd32a3f4a99f5b2a -29 138 7883894968555254 G:/Robot_v2/BOOT/tmp/1/CMakeFiles/database cd32a3f4a99f5b2a -12 112 7883895484902550 CMakeFiles/Group_Source_Files.dir/G_/Robot_v2/BOOT/Robot_V2/main.o a1e7d66abb20e63f -112 270 7883895487072556 G:/Robot_v2/BOOT/out/Robot_V2/GD32C103CB/Release/Robot_V2.axf 66e252b5d299850c -112 270 7883895487072556 ac6_linker_script.sct 66e252b5d299850c -112 270 7883895487072556 G:/Robot_v2/BOOT/tmp/1/ac6_linker_script.sct 66e252b5d299850c -16 134 7883895488503087 CMakeFiles/database cd32a3f4a99f5b2a -16 134 7883895488503087 G:/Robot_v2/BOOT/tmp/1/CMakeFiles/database cd32a3f4a99f5b2a -12 114 7883895994199452 CMakeFiles/Group_Source_Files.dir/G_/Robot_v2/BOOT/Robot_V2/main.o a1e7d66abb20e63f -15 145 7883895994240849 CMakeFiles/Group_device.dir/G_/Robot_v2/BOOT/Robot_V2/device/Can.o 45fb475e6531516a -145 298 7883895996710812 G:/Robot_v2/BOOT/out/Robot_V2/GD32C103CB/Release/Robot_V2.axf 66e252b5d299850c -145 298 7883895996710812 ac6_linker_script.sct 66e252b5d299850c -145 298 7883895996710812 G:/Robot_v2/BOOT/tmp/1/ac6_linker_script.sct 66e252b5d299850c -15 124 7883895998026886 CMakeFiles/database cd32a3f4a99f5b2a -15 124 7883895998026886 G:/Robot_v2/BOOT/tmp/1/CMakeFiles/database cd32a3f4a99f5b2a -35 1000 7884702065703500 CMakeFiles/Group_Source_Files.dir/G_/Robot_v2/BOOT/Robot_V2/main.o a1e7d66abb20e63f -293 1080 7884702068279578 CMakeFiles/Group_device.dir/G_/Robot_v2/BOOT/Robot_V2/device/Can.o 45fb475e6531516a -290 1084 7884702068246137 CMakeFiles/Group_sys.dir/G_/Robot_v2/BOOT/Robot_V2/sys/OTA.o d3ceecf5eb5da62f +19 308 7888233523270727 CMakeFiles/Group_sys.dir/G_/Robot_v2/BOOT/Robot_V2/sys/flash.o b46fd0fc5d6515ff +25 274 7888233523337014 CMakeFiles/Group_device.dir/G_/Robot_v2/BOOT/Robot_V2/device/Can.o 45fb475e6531516a +170 338 7889046216052953 G:/Robot_v2/BOOT/out/Robot_V2/GD32C103CB/Release/Robot_V2.axf 623ca12fbe475071 +170 338 7889046216052953 ac6_linker_script.sct 623ca12fbe475071 +170 338 7889046216052953 G:/Robot_v2/BOOT/tmp/1/ac6_linker_script.sct 623ca12fbe475071 +16 89 7889045342326772 CMakeFiles/database cd32a3f4a99f5b2a +10 4214 7885542907856565 build.ninja d9a30fa45660d8a5 +16 90 7889046217300311 CMakeFiles/database cd32a3f4a99f5b2a +16 90 7889046217300311 G:/Robot_v2/BOOT/tmp/1/CMakeFiles/database cd32a3f4a99f5b2a +12 208 7889054158176601 CMakeFiles/Group_Source_Files.dir/G_/Robot_v2/BOOT/Robot_V2/main.o a1e7d66abb20e63f +20 268 7889054158250360 CMakeFiles/Group_device.dir/G_/Robot_v2/BOOT/Robot_V2/device/Can.o 45fb475e6531516a +17 274 7889054158223257 CMakeFiles/Group_sys.dir/G_/Robot_v2/BOOT/Robot_V2/sys/OTA.o d3ceecf5eb5da62f +5 138 7889054867059399 CMakeFiles/Group_Source_Files.dir/G_/Robot_v2/BOOT/Robot_V2/main.o a1e7d66abb20e63f +12 156 7889054867132651 CMakeFiles/Group_device.dir/G_/Robot_v2/BOOT/Robot_V2/device/Can.o 45fb475e6531516a +9 165 7889054867106034 CMakeFiles/Group_sys.dir/G_/Robot_v2/BOOT/Robot_V2/sys/OTA.o d3ceecf5eb5da62f +165 344 7889054869923167 G:/Robot_v2/BOOT/out/Robot_V2/GD32C103CB/Release/Robot_V2.axf 623ca12fbe475071 +165 344 7889054869923167 ac6_linker_script.sct 623ca12fbe475071 +165 344 7889054869923167 G:/Robot_v2/BOOT/tmp/1/ac6_linker_script.sct 623ca12fbe475071 +15 91 7889054871246783 CMakeFiles/database cd32a3f4a99f5b2a +15 91 7889054871246783 G:/Robot_v2/BOOT/tmp/1/CMakeFiles/database cd32a3f4a99f5b2a +11 133 7889055524491562 CMakeFiles/Group_Source_Files.dir/G_/Robot_v2/BOOT/Robot_V2/main.o a1e7d66abb20e63f +18 158 7889055524565196 CMakeFiles/Group_device.dir/G_/Robot_v2/BOOT/Robot_V2/device/Can.o 45fb475e6531516a +15 164 7889055524538110 CMakeFiles/Group_sys.dir/G_/Robot_v2/BOOT/Robot_V2/sys/OTA.o d3ceecf5eb5da62f +165 343 7889055527288151 G:/Robot_v2/BOOT/out/Robot_V2/GD32C103CB/Release/Robot_V2.axf 623ca12fbe475071 +165 343 7889055527288151 ac6_linker_script.sct 623ca12fbe475071 +165 343 7889055527288151 G:/Robot_v2/BOOT/tmp/1/ac6_linker_script.sct 623ca12fbe475071 +16 99 7889055528640625 CMakeFiles/database cd32a3f4a99f5b2a +16 99 7889055528640625 G:/Robot_v2/BOOT/tmp/1/CMakeFiles/database cd32a3f4a99f5b2a +12 141 7889056998090449 CMakeFiles/Group_Source_Files.dir/G_/Robot_v2/BOOT/Robot_V2/main.o a1e7d66abb20e63f +20 174 7889056998168251 CMakeFiles/Group_device.dir/G_/Robot_v2/BOOT/Robot_V2/device/Can.o 45fb475e6531516a +16 178 7889056998136051 CMakeFiles/Group_sys.dir/G_/Robot_v2/BOOT/Robot_V2/sys/OTA.o d3ceecf5eb5da62f +178 353 7889057001052221 G:/Robot_v2/BOOT/out/Robot_V2/GD32C103CB/Release/Robot_V2.axf 623ca12fbe475071 +178 353 7889057001052221 ac6_linker_script.sct 623ca12fbe475071 +178 353 7889057001052221 G:/Robot_v2/BOOT/tmp/1/ac6_linker_script.sct 623ca12fbe475071 +16 100 7889057002315539 CMakeFiles/database cd32a3f4a99f5b2a +16 100 7889057002315539 G:/Robot_v2/BOOT/tmp/1/CMakeFiles/database cd32a3f4a99f5b2a +11 164 7889057323015023 CMakeFiles/Group_sys.dir/G_/Robot_v2/BOOT/Robot_V2/sys/OTA.o d3ceecf5eb5da62f +164 337 7889057325833997 G:/Robot_v2/BOOT/out/Robot_V2/GD32C103CB/Release/Robot_V2.axf 623ca12fbe475071 +164 337 7889057325833997 ac6_linker_script.sct 623ca12fbe475071 +164 337 7889057325833997 G:/Robot_v2/BOOT/tmp/1/ac6_linker_script.sct 623ca12fbe475071 +16 92 7889057327081778 CMakeFiles/database cd32a3f4a99f5b2a +16 92 7889057327081778 G:/Robot_v2/BOOT/tmp/1/CMakeFiles/database cd32a3f4a99f5b2a +8 126 7889058182384951 CMakeFiles/Group_sys.dir/G_/Robot_v2/BOOT/Robot_V2/sys/systick.o 90049e3a9997d47e +4 136 7889058182338939 CMakeFiles/Group_Source_Files.dir/G_/Robot_v2/BOOT/Robot_V2/main.o a1e7d66abb20e63f +17 160 7889058182472191 CMakeFiles/Group_device.dir/G_/Robot_v2/BOOT/Robot_V2/device/Can.o 45fb475e6531516a +14 169 7889058182445145 CMakeFiles/Group_sys.dir/G_/Robot_v2/BOOT/Robot_V2/sys/OTA.o d3ceecf5eb5da62f +11 193 7889058182413025 CMakeFiles/Group_sys.dir/G_/Robot_v2/BOOT/Robot_V2/sys/flash.o b46fd0fc5d6515ff +193 358 7889058185467252 G:/Robot_v2/BOOT/out/Robot_V2/GD32C103CB/Release/Robot_V2.axf 623ca12fbe475071 +193 358 7889058185467252 ac6_linker_script.sct 623ca12fbe475071 +193 358 7889058185467252 G:/Robot_v2/BOOT/tmp/1/ac6_linker_script.sct 623ca12fbe475071 +15 90 7889058186662907 CMakeFiles/database cd32a3f4a99f5b2a +15 90 7889058186662907 G:/Robot_v2/BOOT/tmp/1/CMakeFiles/database cd32a3f4a99f5b2a +3 81 7889058219486129 CMakeFiles/database cd32a3f4a99f5b2a +3 81 7889058219486129 G:/Robot_v2/BOOT/tmp/1/CMakeFiles/database cd32a3f4a99f5b2a +15 133 7889059151041366 CMakeFiles/Group_sys.dir/G_/Robot_v2/BOOT/Robot_V2/sys/systick.o 90049e3a9997d47e +11 146 7889059151001237 CMakeFiles/Group_Source_Files.dir/G_/Robot_v2/BOOT/Robot_V2/main.o a1e7d66abb20e63f +23 170 7889059151128645 CMakeFiles/Group_device.dir/G_/Robot_v2/BOOT/Robot_V2/device/Can.o 45fb475e6531516a +20 175 7889059151094896 CMakeFiles/Group_sys.dir/G_/Robot_v2/BOOT/Robot_V2/sys/OTA.o d3ceecf5eb5da62f +17 200 7889059151068007 CMakeFiles/Group_sys.dir/G_/Robot_v2/BOOT/Robot_V2/sys/flash.o b46fd0fc5d6515ff +200 364 7889059154121237 G:/Robot_v2/BOOT/out/Robot_V2/GD32C103CB/Release/Robot_V2.axf 623ca12fbe475071 +200 364 7889059154121237 ac6_linker_script.sct 623ca12fbe475071 +200 364 7889059154121237 G:/Robot_v2/BOOT/tmp/1/ac6_linker_script.sct 623ca12fbe475071 +20 108 7889059155554497 CMakeFiles/database cd32a3f4a99f5b2a +20 108 7889059155554497 G:/Robot_v2/BOOT/tmp/1/CMakeFiles/database cd32a3f4a99f5b2a diff --git a/tmp/1/CMakeCache.txt b/tmp/1/CMakeCache.txt index a9be388..598b0c3 100644 --- a/tmp/1/CMakeCache.txt +++ b/tmp/1/CMakeCache.txt @@ -329,8 +329,6 @@ CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 //Platform information initialized CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_RANLIB -CMAKE_RANLIB-ADVANCED:INTERNAL=1 //noop for ranlib CMAKE_RANLIB:INTERNAL=: //ADVANCED property for variable: CMAKE_READELF diff --git a/tmp/1/CMakeFiles/Group_Source_Files.dir/G_/Robot_v2/BOOT/Robot_V2/main.o b/tmp/1/CMakeFiles/Group_Source_Files.dir/G_/Robot_v2/BOOT/Robot_V2/main.o index 4c3c08826cd5b8e8cbfbe909190dff6f6aa4e40e..49dce89323cc803b4e69e338995fd5ec24e5074b 100644 GIT binary patch literal 19912 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 diff --git a/tmp/1/CMakeFiles/Group_sys.dir/G_/Robot_v2/BOOT/Robot_V2/sys/flash.o b/tmp/1/CMakeFiles/Group_sys.dir/G_/Robot_v2/BOOT/Robot_V2/sys/flash.o index a6fa8a8ee93ec46887b39ddfdd812ca3c17d9d29..d9a2bf7d3076291ba63a8dbcfcad235ec0b75c72 100644 GIT binary patch delta 11546 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 Fe*tc8m`MNt delta 11434 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 "${SOLUTION_ROOT}/Robot_V2" + "${SOLUTION_ROOT}/Robot_V2/sys" ) target_compile_definitions(Group_Source_Files PUBLIC $