From d09726cf191ac81fefd5e2096c045ad056d9ff89 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Sun, 4 Jan 2026 14:51:27 +0800 Subject: [PATCH 01/18] update:depend library --- XEngine_Source/XEngine_DependLibrary | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/XEngine_Source/XEngine_DependLibrary b/XEngine_Source/XEngine_DependLibrary index 1db2b64..984e60d 160000 --- a/XEngine_Source/XEngine_DependLibrary +++ b/XEngine_Source/XEngine_DependLibrary @@ -1 +1 @@ -Subproject commit 1db2b6460dd13016df0052808bf2f8ae82ba901f +Subproject commit 984e60d9e1cb7c8736d31d0f2b798756afb9399a From ca3e016d948f1485ead726c79ea8aa939f83ab42 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Sun, 4 Jan 2026 14:51:48 +0800 Subject: [PATCH 02/18] fixed:build failure --- .../Authorize_Dialog/Dialog_Announcement.cpp | 12 ++++++------ .../Authorize_Dialog/Dialog_Banned.cpp | 16 ++++++++-------- .../Authorize_Dialog/Dialog_Config.cpp | 8 ++++---- .../Authorize_Dialog/Dialog_Modify.cpp | 8 ++++---- .../Authorize_Dialog/Dialog_Serial.cpp | 16 ++++++++-------- .../Authorize_Dialog/Dialog_Switch.cpp | 8 ++++---- .../Authorize_Dialog/Dialog_Try.cpp | 12 ++++++------ .../Authorize_Dialog/Dialog_User.cpp | 12 ++++++------ .../Authorize_HttpTask.cpp | 5 ++++- .../XEngine_AuthorizeService/Authorize_Net.cpp | 4 ++-- .../Authorize_TCPTask.cpp | 5 ++++- .../Authorize_WSTask.cpp | 5 ++++- .../XEngine_AuthorizeService.cpp | 2 +- 13 files changed, 61 insertions(+), 52 deletions(-) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Announcement.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Announcement.cpp index 6e8fc89..d516703 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Announcement.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Announcement.cpp @@ -103,7 +103,7 @@ void CDialog_Announcement::OnBnClickedButton1() XCHAR tszMsgBuffer[2048]; memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - Cryption_XCrypto_Encoder(tszCodecBuffer, &nMsgLen, (UCHAR*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Encoder((LPCXBTR)tszCodecBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -119,7 +119,7 @@ void CDialog_Announcement::OnBnClickedButton1() XCHAR tszMsgBuffer[2048]; memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - Cryption_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); @@ -191,7 +191,7 @@ void CDialog_Announcement::OnBnClickedButton2() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -207,7 +207,7 @@ void CDialog_Announcement::OnBnClickedButton2() XCHAR tszMsgBuffer[2048]; memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - Cryption_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); @@ -269,7 +269,7 @@ void CDialog_Announcement::OnBnClickedButton3() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -285,7 +285,7 @@ void CDialog_Announcement::OnBnClickedButton3() XCHAR tszMsgBuffer[2048]; memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - Cryption_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Banned.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Banned.cpp index 9c1b379..fe6a57d 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Banned.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Banned.cpp @@ -158,7 +158,7 @@ void CDialog_Banned::OnBnClickedButton2() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -174,7 +174,7 @@ void CDialog_Banned::OnBnClickedButton2() XCHAR tszMsgBuffer[2048]; memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - Cryption_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); @@ -248,7 +248,7 @@ void CDialog_Banned::OnBnClickedButton4() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -264,7 +264,7 @@ void CDialog_Banned::OnBnClickedButton4() XCHAR tszMsgBuffer[2048]; memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - Cryption_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); @@ -376,7 +376,7 @@ void CDialog_Banned::OnBnClickedButton3() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -392,7 +392,7 @@ void CDialog_Banned::OnBnClickedButton3() XCHAR tszMsgBuffer[2048]; memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - Cryption_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { Authorize_Help_LogPrint(_T("解析删除黑名单接口数据错误,无法继续")); @@ -494,7 +494,7 @@ void CDialog_Banned::OnBnClickedButton5() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -510,7 +510,7 @@ void CDialog_Banned::OnBnClickedButton5() XCHAR tszMsgBuffer[2048]; memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - Cryption_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Config.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Config.cpp index 4a86416..b5fb36e 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Config.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Config.cpp @@ -153,7 +153,7 @@ void CDialog_Config::OnBnClickedButton1() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); m_EditPassword.GetWindowText(m_StrCodecPass); - Cryption_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, W2A(m_StrCodecPass.GetBuffer())); + Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(m_StrCodecPass.GetBuffer())); if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { Authorize_Help_LogPrint(_T("登录失败,无法继续")); @@ -220,7 +220,7 @@ void CDialog_Config::OnBnClickedButton2() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); m_EditPassword.GetWindowText(m_StrCodecPass); - Cryption_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, W2A(m_StrCodecPass.GetBuffer())); + Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(m_StrCodecPass.GetBuffer())); if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { Authorize_Help_LogPrint(_T("关闭失败,无法继续")); @@ -281,7 +281,7 @@ void CDialog_Config::OnBnClickedButton5() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); m_EditPassword.GetWindowText(m_StrCodecPass); - Cryption_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, W2A(m_StrCodecPass.GetBuffer())); + Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(m_StrCodecPass.GetBuffer())); if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { Authorize_Help_LogPrint(_T("续期失败,无法继续")); @@ -353,7 +353,7 @@ void CDialog_Config::OnBnClickedButton8() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); m_EditPassword.GetWindowText(m_StrCodecPass); - Cryption_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, W2A(m_StrCodecPass.GetBuffer())); + Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(m_StrCodecPass.GetBuffer())); if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { Authorize_Help_LogPrint(_T("获取验证码失败,无法继续")); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Modify.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Modify.cpp index 092dc50..1ef426c 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Modify.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Modify.cpp @@ -111,7 +111,7 @@ BOOL CDialog_Modify::OnInitDialog() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -128,7 +128,7 @@ BOOL CDialog_Modify::OnInitDialog() XCHAR tszMsgBuffer[2048]; memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - Cryption_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { Authorize_Help_LogPrint(_T("解析客户接口数据错误,无法继续")); @@ -268,7 +268,7 @@ void CDialog_Modify::OnBnClickedButton2() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -284,7 +284,7 @@ void CDialog_Modify::OnBnClickedButton2() XCHAR tszMsgBuffer[2048]; memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - Cryption_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { Authorize_Help_LogPrint(_T("解析客户接口数据错误,无法继续")); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Serial.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Serial.cpp index 8008a9b..358cbda 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Serial.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Serial.cpp @@ -123,7 +123,7 @@ void CDialog_Serial::OnBnClickedButton1() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -139,7 +139,7 @@ void CDialog_Serial::OnBnClickedButton1() XCHAR tszMsgBuffer[2048]; memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - Cryption_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); @@ -257,7 +257,7 @@ void CDialog_Serial::OnBnClickedButton2() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -273,7 +273,7 @@ void CDialog_Serial::OnBnClickedButton2() XCHAR tszMsgBuffer[2048]; memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - Cryption_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); @@ -356,7 +356,7 @@ void CDialog_Serial::OnBnClickedButton4() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -372,7 +372,7 @@ void CDialog_Serial::OnBnClickedButton4() XCHAR tszMsgBuffer[2048]; memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - Cryption_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); @@ -512,7 +512,7 @@ void CDialog_Serial::OnBnClickedButton6() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -528,7 +528,7 @@ void CDialog_Serial::OnBnClickedButton6() XCHAR tszMsgBuffer[2048]; memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - Cryption_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { Authorize_Help_LogPrint(_T("解析序列号推送接口数据错误,无法继续")); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.cpp index 92b4234..21a5e5b 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.cpp @@ -98,7 +98,7 @@ void CDialog_Switch::OnBnClickedButton1() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -114,7 +114,7 @@ void CDialog_Switch::OnBnClickedButton1() XCHAR tszMsgBuffer[2048]; memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - Cryption_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { Authorize_Help_LogPrint(_T("解析接口数据错误,无法继续")); @@ -449,7 +449,7 @@ void CDialog_Switch::OnBnClickedButton2() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -465,7 +465,7 @@ void CDialog_Switch::OnBnClickedButton2() XCHAR tszMsgBuffer[2048]; memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - Cryption_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { Authorize_Help_LogPrint(_T("解析接口数据错误,无法继续")); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Try.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Try.cpp index d745884..0d1e9b5 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Try.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Try.cpp @@ -112,7 +112,7 @@ void CDialog_Try::OnBnClickedButton1() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -128,7 +128,7 @@ void CDialog_Try::OnBnClickedButton1() XCHAR tszMsgBuffer[2048]; memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - Cryption_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); @@ -207,7 +207,7 @@ void CDialog_Try::OnBnClickedButton2() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, W2A(tszPassBuffer)); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -224,7 +224,7 @@ void CDialog_Try::OnBnClickedButton2() XCHAR tszMsgBuffer[2048]; memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - Cryption_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { Authorize_Help_LogPrint(_T("解析客户接口数据错误,无法继续")); @@ -347,7 +347,7 @@ void CDialog_Try::OnBnClickedButton3() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -364,7 +364,7 @@ void CDialog_Try::OnBnClickedButton3() XCHAR tszMsgBuffer[2048]; memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - Cryption_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { Authorize_Help_LogPrint(_T("解析客户接口数据错误,无法继续")); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_User.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_User.cpp index 50c9c29..f486644 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_User.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_User.cpp @@ -121,7 +121,7 @@ void CDialog_User::OnBnClickedButton1() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -137,7 +137,7 @@ void CDialog_User::OnBnClickedButton1() XCHAR tszMsgBuffer[2048]; memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - Cryption_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); @@ -235,7 +235,7 @@ void CDialog_User::OnBnClickedButton2() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -252,7 +252,7 @@ void CDialog_User::OnBnClickedButton2() XCHAR tszMsgBuffer[2048]; memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - Cryption_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { Authorize_Help_LogPrint(_T("解析客户接口数据错误,无法继续")); @@ -324,7 +324,7 @@ void CDialog_User::OnBnClickedButton3() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -341,7 +341,7 @@ void CDialog_User::OnBnClickedButton3() XCHAR tszMsgBuffer[2048]; memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - Cryption_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { Authorize_Help_LogPrint(_T("解析客户接口数据错误,无法继续")); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp index d6fb0ce..4e27e9e 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp @@ -27,7 +27,10 @@ XHTHREAD XCALLBACK XEngine_AuthService_HttpThread(XPVOID lParam) if (st_AuthConfig.st_XCrypto.bEnable) { XCHAR tszDeBuffer[2048] = {}; - Cryption_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszDeBuffer, st_AuthConfig.st_XCrypto.tszCryptoKey); + if (nMsgLen > 0) + { + Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszDeBuffer, st_AuthConfig.st_XCrypto.tszCryptoKey); + } XEngine_Client_HttpTask(ppSt_ListClient[i]->tszClientAddr, tszDeBuffer, nMsgLen, &st_HTTPParament, ppszListHdr, nHdrCount); } else diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp index 163e819..9d1bd89 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp @@ -179,7 +179,7 @@ bool XEngine_SendMsg(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, else { CHttpMemory_PoolEx m_CodecMemory(XENGINE_MEMORY_SIZE_MAX); - Cryption_XCrypto_Encoder(lpszMsgBuffer, &nMsgLen, (XBYTE*)m_CodecMemory.get(), lpszPass); + Cryption_XCrypto_Encoder((LPCXBTR)lpszMsgBuffer, &nMsgLen, (XBYTE*)m_CodecMemory.get(), lpszPass); RfcComponents_WSCodec_EncodeMsg(m_CodecMemory.get(), m_HTTPMemory.get(), &nMsgLen, ENUM_XENGINE_RFCOMPONENTS_WEBSOCKET_OPCODE_TEXT); } NetCore_TCPXCore_SendEx(xhWSSocket, lpszClientAddr, m_HTTPMemory.get(), nMsgLen); @@ -205,7 +205,7 @@ bool XEngine_SendMsg(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, else { CHttpMemory_PoolEx m_CodecMemory(XENGINE_MEMORY_SIZE_MAX); - Cryption_XCrypto_Encoder(lpszMsgBuffer, &nMsgLen, (XBYTE*)m_CodecMemory.get(), lpszPass); + Cryption_XCrypto_Encoder((LPCXBTR)lpszMsgBuffer, &nMsgLen, (XBYTE*)m_CodecMemory.get(), lpszPass); HttpProtocol_Server_SendMsgEx(xhHttpPacket, m_HTTPMemory.get(), &nSDSize, &st_HDRParam, m_CodecMemory.get(), nMsgLen); } NetCore_TCPXCore_SendEx(xhHttpSocket, lpszClientAddr, m_HTTPMemory.get(), nSDSize); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp index d0329c2..aae2d68 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp @@ -30,7 +30,10 @@ XHTHREAD XCALLBACK XEngine_AuthService_TCPThread(XPVOID lParam) if (st_AuthConfig.st_XCrypto.bEnable && (ENUM_XENGINE_PROTOCOLHDR_CRYPTO_TYPE_XCRYPT == st_ProtocolHdr.wCrypto)) { XCHAR tszDeBuffer[2048] = {}; - Cryption_XCrypto_Decoder(tszMsgBuffer, &nMsgLen, tszDeBuffer, st_AuthConfig.st_XCrypto.tszCryptoKey); + if (nMsgLen > 0) + { + Cryption_XCrypto_Decoder((LPCXBTR)tszMsgBuffer, &nMsgLen, (XBYTE*)tszDeBuffer, st_AuthConfig.st_XCrypto.tszCryptoKey); + } XEngine_Client_TCPTask(ppSt_ListClient[i]->tszClientAddr, tszDeBuffer, nMsgLen, &st_ProtocolHdr, XENGINE_AUTH_APP_NETTYPE_TCP); } else diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_WSTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_WSTask.cpp index b7dfd5d..8b43998 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_WSTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_WSTask.cpp @@ -28,7 +28,10 @@ XHTHREAD XCALLBACK XEngine_AuthService_WSThread(XPVOID lParam) if (st_AuthConfig.st_XCrypto.bEnable) { XCHAR tszDeBuffer[2048] = {}; - Cryption_XCrypto_Decoder(tszMsgBuffer, &nMsgLen, tszDeBuffer, st_AuthConfig.st_XCrypto.tszCryptoKey); + if (nMsgLen > 0) + { + Cryption_XCrypto_Decoder((LPCXBTR)tszMsgBuffer, &nMsgLen, (XBYTE*)tszDeBuffer, st_AuthConfig.st_XCrypto.tszCryptoKey); + } XEngine_Client_WSTask(ppSt_ListClient[i]->tszClientAddr, tszDeBuffer, nMsgLen, enOPCode); } else diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp index c20c264..45c0a66 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp @@ -286,7 +286,7 @@ int main(int argc, char** argv) XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化WebSocket组包器失败,错误:%lX"), WSFrame_GetLastError()); goto XENGINE_EXITAPP; } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化WebSocket组包器成功,任务池个数:%d"), st_AuthConfig.st_XMax.nWSThread); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化WEBSOCKET组包器成功,任务池个数:%d"), st_AuthConfig.st_XMax.nWSThread); xhWSSocket = NetCore_TCPXCore_StartEx(st_AuthConfig.nWSPort, st_AuthConfig.st_XMax.nMaxQueue, st_AuthConfig.st_XMax.nIOThread); if (NULL == xhWSSocket) From 0de91b3e201836f483a95564f22697404bd7d4b7 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 10 Feb 2026 15:45:16 +0800 Subject: [PATCH 03/18] update:depend library --- XEngine_Source/XEngine_DependLibrary | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/XEngine_Source/XEngine_DependLibrary b/XEngine_Source/XEngine_DependLibrary index 984e60d..adf48e2 160000 --- a/XEngine_Source/XEngine_DependLibrary +++ b/XEngine_Source/XEngine_DependLibrary @@ -1 +1 @@ -Subproject commit 984e60d9e1cb7c8736d31d0f2b798756afb9399a +Subproject commit adf48e22d68f741ec52f299945f8f8f8fb3df9d2 From 08fae8daf67e2d9d4332c58c4100b76da027df5a Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Sat, 28 Feb 2026 14:46:58 +0800 Subject: [PATCH 04/18] modify:does not case-sensitive for http api name --- .../AuthorizeHTTP_GetTask.cpp | 6 ++-- .../AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp | 6 ++-- .../AuthorizeHTTP_Announcement.cpp | 6 ++-- .../AuthorizeHTTP_Banned.cpp | 8 ++--- .../AuthorizeHTTP_CDKey.cpp | 6 ++-- .../AuthorizeHTTP_Client.cpp | 10 +++--- .../AuthorizeHTTP_Post/AuthorizeHTTP_Pass.cpp | 6 ++-- .../AuthorizeHTTP_Serial.cpp | 6 ++-- .../AuthorizeHTTP_Switch.cpp | 4 +-- .../AuthorizeHTTP_Post/AuthorizeHTTP_Try.cpp | 6 ++-- .../AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp | 16 +++++----- .../Authorize_HttpTask.cpp | 32 +++++++++---------- 12 files changed, 56 insertions(+), 56 deletions(-) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_GetTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_GetTask.cpp index 663358e..f0080dd 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_GetTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_GetTask.cpp @@ -13,7 +13,7 @@ bool XEngine_AuthorizeHTTP_GetTask(LPCXSTR lpszClientAddr, XCHAR** pptszList, in memset(tszSDBuffer, '\0', sizeof(tszSDBuffer)); BaseLib_String_GetKeyValue(pptszList[0], "=", tszURLKey, tszURLValue); - if (0 == _tcsxnicmp(lpszAPITime, tszURLValue, _tcsxlen(lpszAPITime))) + if (0 == _tcsxncmp(lpszAPITime, tszURLValue, _tcsxlen(lpszAPITime))) { XCHAR tszUserToken[128]; memset(tszUserToken, '\0', sizeof(tszUserToken)); @@ -41,7 +41,7 @@ bool XEngine_AuthorizeHTTP_GetTask(LPCXSTR lpszClientAddr, XCHAR** pptszList, in XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,用户名:%s,获取时间成功,用户同时在线数:%d"), lpszClientAddr, st_UserTable.st_UserInfo.tszUserName, nListCount); } - else if (0 == _tcsxnicmp(lpszAPIDCode, tszURLValue, _tcsxlen(lpszAPIDCode))) + else if (0 == _tcsxncmp(lpszAPIDCode, tszURLValue, _tcsxlen(lpszAPIDCode))) { if (!st_FunSwitch.bSwitchDCode) { @@ -58,7 +58,7 @@ bool XEngine_AuthorizeHTTP_GetTask(LPCXSTR lpszClientAddr, XCHAR** pptszList, in XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求获得动态验证码成功,TOKEN:%lld,验证码:%d"), lpszClientAddr, xhToken, nDCode); } - else if (0 == _tcsxnicmp(lpszAPINotice, tszURLValue, _tcsxlen(lpszAPINotice))) + else if (0 == _tcsxncmp(lpszAPINotice, tszURLValue, _tcsxlen(lpszAPINotice))) { XCHAR tszUserToken[128]; memset(tszUserToken, '\0', sizeof(tszUserToken)); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp index 0ee1f68..a5fdb8e 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp @@ -15,7 +15,7 @@ bool XEngine_AuthorizeHTTP_Token(LPCXSTR lpszClientAddr, XCHAR** pptszList, int memset(tszURLValue, '\0', sizeof(tszURLValue)); BaseLib_String_GetKeyValue(pptszList[0], "=", tszURLKey, tszURLValue); - if (0 == _tcsxnicmp(lpszAPILogin, tszURLValue, _tcsxlen(lpszAPILogin))) + if (0 == _tcsxncmp(lpszAPILogin, tszURLValue, _tcsxlen(lpszAPILogin))) { //http://app.xyry.org:5302/api?function=login&user=123123aa&pass=123123&device=1 XCHAR tszUserName[128]; @@ -116,7 +116,7 @@ bool XEngine_AuthorizeHTTP_Token(LPCXSTR lpszClientAddr, XCHAR** pptszList, int XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求登录获得TOKEN:%lld 成功,用户级别:%d"), lpszClientAddr, xhToken, st_UserTable.st_UserInfo.nUserLevel); } - else if (0 == _tcsxnicmp(lpszAPIUPDate, tszURLValue, _tcsxlen(lpszAPIUPDate))) + else if (0 == _tcsxncmp(lpszAPIUPDate, tszURLValue, _tcsxlen(lpszAPIUPDate))) { //http://app.xyry.org:5302/api?function=update&token=1000112345 XCHAR tszUserToken[128]; @@ -135,7 +135,7 @@ bool XEngine_AuthorizeHTTP_Token(LPCXSTR lpszClientAddr, XCHAR** pptszList, int XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求更新TOKEN:%s 成功"), lpszClientAddr, tszUserToken); } - else if (0 == _tcsxnicmp(lpszAPIClose, tszURLValue, _tcsxlen(lpszAPIClose))) + else if (0 == _tcsxncmp(lpszAPIClose, tszURLValue, _tcsxlen(lpszAPIClose))) { //http://app.xyry.org:5302/api?function=close&token=1000112345 XCHAR tszUserToken[128]; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Announcement.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Announcement.cpp index a192494..9d017fd 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Announcement.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Announcement.cpp @@ -16,7 +16,7 @@ bool XEngine_AuthorizeHTTP_Announcement(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIN return false; } - if (0 == _tcsxnicmp(lpszAPIInsert, lpszAPIName, _tcsxlen(lpszAPIInsert))) + if (0 == _tcsxncmp(lpszAPIInsert, lpszAPIName, _tcsxlen(lpszAPIInsert))) { int nListCount = 0; AUTHREG_ANNOUNCEMENT st_Announcement; @@ -57,7 +57,7 @@ bool XEngine_AuthorizeHTTP_Announcement(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIN XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,插入公告成功,公告信息:%s"), lpszClientAddr, st_Announcement.tszContext); } - else if (0 == _tcsxnicmp(lpszAPIDelete, lpszAPIName, _tcsxlen(lpszAPIDelete))) + else if (0 == _tcsxncmp(lpszAPIDelete, lpszAPIName, _tcsxlen(lpszAPIDelete))) { AUTHREG_ANNOUNCEMENT st_Announcement; memset(&st_Announcement, '\0', sizeof(AUTHREG_ANNOUNCEMENT)); @@ -75,7 +75,7 @@ bool XEngine_AuthorizeHTTP_Announcement(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIN XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,删除公告成功.删除公告ID:%lld"), lpszClientAddr, st_Announcement.nID); } - else if (0 == _tcsxnicmp(lpszAPIList, lpszAPIName, _tcsxlen(lpszAPIList))) + else if (0 == _tcsxncmp(lpszAPIList, lpszAPIName, _tcsxlen(lpszAPIList))) { int nListCount = 0; AUTHREG_ANNOUNCEMENT** ppSt_Announcement; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Banned.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Banned.cpp index 4a743aa..4292500 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Banned.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Banned.cpp @@ -17,7 +17,7 @@ bool XEngine_AuthorizeHTTP_Banned(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L return false; } - if (0 == _tcsxnicmp(lpszAPIInsert, lpszAPIName, _tcsxlen(lpszAPIInsert))) + if (0 == _tcsxncmp(lpszAPIInsert, lpszAPIName, _tcsxlen(lpszAPIInsert))) { AUTHREG_BANNED st_Banned; memset(&st_Banned, '\0', sizeof(AUTHREG_BANNED)); @@ -35,7 +35,7 @@ bool XEngine_AuthorizeHTTP_Banned(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,插入禁用列表成功,禁用的用户:%s,禁用的IP地址:%s"), lpszClientAddr, st_Banned.tszUserName, st_Banned.tszIPAddr); } - else if (0 == _tcsxnicmp(lpszAPIDelete, lpszAPIName, _tcsxlen(lpszAPIDelete))) + else if (0 == _tcsxncmp(lpszAPIDelete, lpszAPIName, _tcsxlen(lpszAPIDelete))) { AUTHREG_BANNED st_Banned; memset(&st_Banned, '\0', sizeof(AUTHREG_BANNED)); @@ -53,7 +53,7 @@ bool XEngine_AuthorizeHTTP_Banned(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,删除禁用列表成功,删除禁用的用户:%s,删除禁用的IP地址:%s"), lpszClientAddr, st_Banned.tszUserName, st_Banned.tszIPAddr); } - else if (0 == _tcsxnicmp(lpszAPIList, lpszAPIName, _tcsxlen(lpszAPIList))) + else if (0 == _tcsxncmp(lpszAPIList, lpszAPIName, _tcsxlen(lpszAPIList))) { int nCountAddr = 0; int nCountUser = 0; @@ -78,7 +78,7 @@ bool XEngine_AuthorizeHTTP_Banned(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L BaseLib_Memory_Free((XPPPMEM)&ppSt_BannedUser, nCountUser); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,查询禁用列表成功,禁用的用户个数:%d,禁用的IP地址个数:%d"), lpszClientAddr, nCountUser, nCountAddr); } - else if (0 == _tcsxnicmp(lpszAPIModify, lpszAPIName, _tcsxlen(lpszAPIModify))) + else if (0 == _tcsxncmp(lpszAPIModify, lpszAPIName, _tcsxlen(lpszAPIModify))) { AUTHREG_BANNED st_Banned; memset(&st_Banned, '\0', sizeof(AUTHREG_BANNED)); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_CDKey.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_CDKey.cpp index c48bf28..b99e495 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_CDKey.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_CDKey.cpp @@ -15,7 +15,7 @@ bool XEngine_AuthorizeHTTP_CDKey(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LP XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,CDKey验证授权失败,功能已经被服务器关闭!"), lpszClientAddr); return false; } - if (0 == _tcsxnicmp(lpszAPICreate, lpszAPIName, _tcsxlen(lpszAPICreate))) + if (0 == _tcsxncmp(lpszAPICreate, lpszAPIName, _tcsxlen(lpszAPICreate))) { VERIFICATION_XAUTHKEY st_Authorize = {}; @@ -30,7 +30,7 @@ bool XEngine_AuthorizeHTTP_CDKey(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LP XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPoolSend.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("HTTP客户端:%s,请求创建CDKEY成功,APP名:%s,APP版本:%s"), lpszClientAddr, st_Authorize.st_AuthAppInfo.tszAppName, st_Authorize.st_AuthAppInfo.tszAppVer); } - else if (0 == _tcsxnicmp(lpszAPIAuth, lpszAPIName, _tcsxlen(lpszAPIAuth))) + else if (0 == _tcsxncmp(lpszAPIAuth, lpszAPIName, _tcsxlen(lpszAPIAuth))) { VERIFICATION_XAUTHKEY st_Authorize = {}; if (!Verification_XAuthKey_MemoryRead(&st_Authorize, lpszMsgBuffer, nMsgLen)) @@ -52,7 +52,7 @@ bool XEngine_AuthorizeHTTP_CDKey(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LP XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPoolSend.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("HTTP客户端:%s,请求授权CDKEY成功,APP名:%s,APP版本:%s,授权期限:%s"), lpszClientAddr, st_Authorize.st_AuthAppInfo.tszAppName, st_Authorize.st_AuthAppInfo.tszAppVer, st_Authorize.st_AuthRegInfo.tszLeftTime); } - else if (0 == _tcsxnicmp(lpszAPIVer, lpszAPIName, _tcsxlen(lpszAPIVer))) + else if (0 == _tcsxncmp(lpszAPIVer, lpszAPIName, _tcsxlen(lpszAPIVer))) { VERIFICATION_XAUTHKEY st_Authorize = {}; if (!Verification_XAuthKey_MemoryRead(&st_Authorize, lpszMsgBuffer, nMsgLen)) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp index 0611ec9..3a85a64 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp @@ -10,7 +10,7 @@ bool XEngine_AuthorizeHTTP_Client(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L LPCXSTR lpszAPIDelete = _X("delete"); CHttpMemory_PoolEx m_MemoryPool(XENGINE_MEMORY_SIZE_MAX); - if (0 == _tcsxnicmp(lpszAPIGet, lpszAPIName, _tcsxlen(lpszAPIGet))) + if (0 == _tcsxncmp(lpszAPIGet, lpszAPIName, _tcsxlen(lpszAPIGet))) { AUTHREG_USERTABLE st_UserTable; memset(&st_UserTable, '\0', sizeof(AUTHREG_USERTABLE)); @@ -36,7 +36,7 @@ bool XEngine_AuthorizeHTTP_Client(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求客户端:%s 信息成功"), lpszClientAddr, st_UserTable.st_UserInfo.tszUserName); } - else if (0 == _tcsxnicmp(lpszAPIList, lpszAPIName, _tcsxlen(lpszAPIList))) + else if (0 == _tcsxncmp(lpszAPIList, lpszAPIName, _tcsxlen(lpszAPIList))) { int nOnCount = 0; int nOffCount = 0; @@ -77,7 +77,7 @@ bool XEngine_AuthorizeHTTP_Client(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求客户端列表成功,在线用户:%d,离线用户:%d,显示标志:%d"), lpszClientAddr, nOnCount, nOffCount - nOnCount, bOnline); } - else if (0 == _tcsxnicmp(lpszAPIClose, lpszAPIName, _tcsxlen(lpszAPIClose))) + else if (0 == _tcsxncmp(lpszAPIClose, lpszAPIName, _tcsxlen(lpszAPIClose))) { int nListCount = 0; AUTHSESSION_NETCLIENT** ppSt_ListClient; @@ -101,7 +101,7 @@ bool XEngine_AuthorizeHTTP_Client(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求剔除用户:%s 成功,在线用户数:%d"), lpszClientAddr, st_UserInfo.tszUserName, nListCount); } - else if (0 == _tcsxnicmp(lpszAPIModify, lpszAPIName, _tcsxlen(lpszAPIModify))) + else if (0 == _tcsxncmp(lpszAPIModify, lpszAPIName, _tcsxlen(lpszAPIModify))) { AUTHREG_USERTABLE st_UserTable; memset(&st_UserTable, '\0', sizeof(AUTHREG_USERTABLE)); @@ -128,7 +128,7 @@ bool XEngine_AuthorizeHTTP_Client(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求修改用户信息:%s 成功"), lpszClientAddr, st_UserTable.st_UserInfo.tszUserName); } - else if (0 == _tcsxnicmp(lpszAPIDelete, lpszAPIName, _tcsxlen(lpszAPIDelete))) + else if (0 == _tcsxncmp(lpszAPIDelete, lpszAPIName, _tcsxlen(lpszAPIDelete))) { XENGINE_PROTOCOL_USERINFO st_UserInfo = {}; Protocol_Parse_HttpParseUser(lpszMsgBuffer, nMsgLen, &st_UserInfo); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Pass.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Pass.cpp index 69646fa..3611611 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Pass.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Pass.cpp @@ -10,7 +10,7 @@ bool XEngine_AuthorizeHTTP_Pass(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPC memset(tszSDBuffer, '\0', sizeof(tszSDBuffer)); - if (0 == _tcsxnicmp(lpszAPIName, lpszAPILogin, _tcsxlen(lpszAPIName))) + if (0 == _tcsxncmp(lpszAPIName, lpszAPILogin, _tcsxlen(lpszAPIName))) { XENGINE_PROTOCOL_USERAUTHEX st_UserAuth; AUTHREG_USERTABLE st_UserTable; @@ -46,7 +46,7 @@ bool XEngine_AuthorizeHTTP_Pass(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPC XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("PASS客户端:%s,请求登录用户:%s 成功"), lpszClientAddr, st_UserAuth.tszUserName); } - else if (0 == _tcsxnicmp(lpszAPIName, lpszAPILogout, _tcsxlen(lpszAPIName))) + else if (0 == _tcsxncmp(lpszAPIName, lpszAPILogout, _tcsxlen(lpszAPIName))) { AUTHREG_PROTOCOL_TIME st_ProtocolTime; memset(&st_ProtocolTime, '\0', sizeof(AUTHREG_PROTOCOL_TIME)); @@ -65,7 +65,7 @@ bool XEngine_AuthorizeHTTP_Pass(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPC XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("PASS客户端:%s,用户名:%s,请求离开服务成功"), lpszClientAddr, st_ProtocolTime.tszUserName); } - else if (0 == _tcsxnicmp(lpszAPIName, lpszAPITimeout, _tcsxlen(lpszAPIName))) + else if (0 == _tcsxncmp(lpszAPIName, lpszAPITimeout, _tcsxlen(lpszAPIName))) { AUTHREG_PROTOCOL_TIME st_ProtocolTime; memset(&st_ProtocolTime, '\0', sizeof(AUTHREG_PROTOCOL_TIME)); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp index 2c82136..1338005 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp @@ -8,7 +8,7 @@ bool XEngine_AuthorizeHTTP_Serial(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L LPCXSTR lpszAPIDelete = _X("delete"); CHttpMemory_PoolEx m_MemoryPool(XENGINE_MEMORY_SIZE_MAX); - if (0 == _tcsxnicmp(lpszAPIList, lpszAPIName, _tcsxlen(lpszAPIList))) + if (0 == _tcsxncmp(lpszAPIList, lpszAPIName, _tcsxlen(lpszAPIList))) { int nPosStart = 0; int nPosEnd = 0; @@ -44,7 +44,7 @@ bool XEngine_AuthorizeHTTP_Serial(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L ptszMsgBuffer = NULL; XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求序列号列表成功,个数:%d"), lpszClientAddr, nListCount); } - else if (0 == _tcsxnicmp(lpszAPIDelete, lpszAPIName, _tcsxlen(lpszAPIDelete))) + else if (0 == _tcsxncmp(lpszAPIDelete, lpszAPIName, _tcsxlen(lpszAPIDelete))) { int nListCount = 0; AUTHREG_SERIALTABLE** ppSt_SerialTable; @@ -69,7 +69,7 @@ bool XEngine_AuthorizeHTTP_Serial(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求删除序列号成功,删除个数:%d"), lpszClientAddr, nListCount); } - else if (0 == _tcsxnicmp(lpszAPIInsert, lpszAPIName, _tcsxlen(lpszAPIInsert))) + else if (0 == _tcsxncmp(lpszAPIInsert, lpszAPIName, _tcsxlen(lpszAPIInsert))) { int nListCount = 0; AUTHREG_SERIALTABLE** ppSt_SerialTable; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Switch.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Switch.cpp index 8303c7c..cd559e6 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Switch.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Switch.cpp @@ -9,13 +9,13 @@ bool XEngine_AuthorizeHTTP_Switch(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L memset(tszSDBuffer, '\0', sizeof(tszSDBuffer)); - if (0 == _tcsxnicmp(lpszAPIGet, lpszAPIName, _tcsxlen(lpszAPIGet))) + if (0 == _tcsxncmp(lpszAPIGet, lpszAPIName, _tcsxlen(lpszAPIGet))) { Protocol_Packet_HttpSwitch(tszSDBuffer, &nSDLen, &st_FunSwitch); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求获取功能开关成功,删除功能:%d,登录功能:%d,找回密码:%d,充值功能:%d,注册功能:%d,CDKey功能:%d,公告系统:%d,多端登录:%d,临时试用:%d,普通Token:%d,硬件码登录:%d,硬件码绑定:%d"), lpszClientAddr, st_FunSwitch.bSwitchDelete, st_FunSwitch.bSwitchLogin, st_FunSwitch.bSwitchPass, st_FunSwitch.bSwitchPay, st_FunSwitch.bSwitchRegister, st_FunSwitch.bSwitchCDKey, st_FunSwitch.bSwitchNotice, st_FunSwitch.bSwitchMulti, st_FunSwitch.bSwitchTry, st_FunSwitch.bSwitchTokenLogin, st_FunSwitch.bSwitchHCLogin, st_FunSwitch.bSwitchHWBind); } - else if (0 == _tcsxnicmp(lpszAPISet, lpszAPIName, _tcsxlen(lpszAPISet))) + else if (0 == _tcsxncmp(lpszAPISet, lpszAPIName, _tcsxlen(lpszAPISet))) { Protocol_Parse_HttpParseSwitch(lpszMsgBuffer, nMsgLen, &st_FunSwitch); Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Try.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Try.cpp index e8feb6c..de1d24e 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Try.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Try.cpp @@ -11,7 +11,7 @@ bool XEngine_AuthorizeHTTP_Try(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPCX memset(tszSDBuffer, '\0', sizeof(tszSDBuffer)); - if (0 == _tcsxnicmp(lpszAPIName, lpszAPIList, _tcsxlen(lpszAPIName))) + if (0 == _tcsxncmp(lpszAPIName, lpszAPIList, _tcsxlen(lpszAPIName))) { int nPosStart = 0; int nPosEnd = 0; @@ -34,7 +34,7 @@ bool XEngine_AuthorizeHTTP_Try(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPCX XEngine_Client_TaskSend(lpszClientAddr, m_HTTPMemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,临时验证获取列表成功,列表个数:%d"), lpszClientAddr, nListCount); } - else if (0 == _tcsxnicmp(lpszAPIName, lpszAPIDelete, _tcsxlen(lpszAPIName))) + else if (0 == _tcsxncmp(lpszAPIName, lpszAPIDelete, _tcsxlen(lpszAPIName))) { AUTHREG_TEMPVER st_VERTemp; memset(&st_VERTemp, '\0', sizeof(AUTHREG_TEMPVER)); @@ -52,7 +52,7 @@ bool XEngine_AuthorizeHTTP_Try(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPCX XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,序列号:%s,临时验证删除成功"), lpszClientAddr, st_VERTemp.tszVSerial); } - else if (0 == _tcsxnicmp(lpszAPIName, lpszAPIModify, _tcsxlen(lpszAPIName))) + else if (0 == _tcsxncmp(lpszAPIName, lpszAPIModify, _tcsxlen(lpszAPIName))) { AUTHREG_TEMPVER st_VERTemp; memset(&st_VERTemp, '\0', sizeof(AUTHREG_TEMPVER)); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp index eb242d3..2d14883 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp @@ -13,7 +13,7 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX memset(tszSDBuffer, '\0', sizeof(tszSDBuffer)); - if (0 == _tcsxnicmp(lpszAPIName, lpszAPIDelete, _tcsxlen(lpszAPIName))) + if (0 == _tcsxncmp(lpszAPIName, lpszAPIDelete, _tcsxlen(lpszAPIName))) { if (!st_FunSwitch.bSwitchDelete) { @@ -37,7 +37,7 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX bRet = DBModule_MySQL_UserQuery(st_UserInfo.tszUserName, &st_UserTable); } //安全验证判断 - if ((0 != _tcsxnicmp(st_UserInfo.tszEMailAddr, st_UserTable.st_UserInfo.tszEMailAddr, _tcsxlen(st_UserInfo.tszEMailAddr))) || (st_UserTable.st_UserInfo.nIDNumber != st_UserInfo.nIDNumber)) + if ((0 != _tcsxncmp(st_UserInfo.tszEMailAddr, st_UserTable.st_UserInfo.tszEMailAddr, _tcsxlen(st_UserInfo.tszEMailAddr))) || (st_UserTable.st_UserInfo.nIDNumber != st_UserInfo.nIDNumber)) { Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_NOTMATCH, "user information is incorrent"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); @@ -74,7 +74,7 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求删除用户:%s 成功,在线用户数:%d"), lpszClientAddr, st_UserInfo.tszUserName, nListCount); } - else if (0 == _tcsxnicmp(lpszAPIName, lpszAPIRegister, _tcsxlen(lpszAPIName))) + else if (0 == _tcsxncmp(lpszAPIName, lpszAPIRegister, _tcsxlen(lpszAPIName))) { //用户注册 AUTHREG_USERTABLE st_UserTable; @@ -154,7 +154,7 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,用户名:%s,注册成功"), lpszClientAddr, st_UserTable.st_UserInfo.tszUserName); } - else if (0 == _tcsxnicmp(lpszAPIName, lpszAPIPay, _tcsxlen(lpszAPIName))) + else if (0 == _tcsxncmp(lpszAPIName, lpszAPIPay, _tcsxlen(lpszAPIName))) { AUTHREG_PROTOCOL_USERPAY st_UserPay; AUTHREG_USERTABLE st_UserInfo; @@ -223,7 +223,7 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_NOTICE, _X("HTTP客户端:%s,用户名:%s,充值成功,序列号:%s"), lpszClientAddr, st_UserPay.tszUserName, st_UserPay.tszSerialNumber); } - else if (0 == _tcsxnicmp(lpszAPIName, lpszAPIPass, _tcsxlen(lpszAPIName))) + else if (0 == _tcsxncmp(lpszAPIName, lpszAPIPass, _tcsxlen(lpszAPIName))) { AUTHREG_USERTABLE st_UserTable; XENGINE_PROTOCOL_USERINFO st_UserInfo; @@ -263,7 +263,7 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX return false; } //安全验证判断 - if ((0 != _tcsxnicmp(st_UserInfo.tszEMailAddr, st_UserTable.st_UserInfo.tszEMailAddr, _tcsxlen(st_UserInfo.tszEMailAddr))) || (st_UserTable.st_UserInfo.nIDNumber != st_UserInfo.nIDNumber) || (st_UserTable.st_UserInfo.nPhoneNumber != st_UserInfo.nPhoneNumber)) + if ((0 != _tcsxncmp(st_UserInfo.tszEMailAddr, st_UserTable.st_UserInfo.tszEMailAddr, _tcsxlen(st_UserInfo.tszEMailAddr))) || (st_UserTable.st_UserInfo.nIDNumber != st_UserInfo.nIDNumber) || (st_UserTable.st_UserInfo.nPhoneNumber != st_UserInfo.nPhoneNumber)) { Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_NOTMATCH, "user information is incorrent"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); @@ -298,7 +298,7 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,用户名:%s,找回重置密码成功"), lpszClientAddr, st_UserInfo.tszUserName); } - else if (0 == _tcsxnicmp(lpszAPIName, lpszAPITime, _tcsxlen(lpszAPIName))) + else if (0 == _tcsxncmp(lpszAPIName, lpszAPITime, _tcsxlen(lpszAPIName))) { if (!st_FunSwitch.bSwitchTime) { @@ -359,7 +359,7 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,用户名:%s,获取时间成功"), lpszClientAddr, st_UserTable.st_UserInfo.tszUserName); } - else if (0 == _tcsxnicmp(lpszAPIName, lpszAPITry, _tcsxlen(lpszAPIName))) + else if (0 == _tcsxncmp(lpszAPIName, lpszAPITry, _tcsxlen(lpszAPIName))) { AUTHREG_TEMPVER st_VERTemp; memset(&st_VERTemp, '\0', sizeof(AUTHREG_TEMPVER)); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp index 4e27e9e..1da3d23 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp @@ -183,7 +183,7 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,HTTP验证类型:%d 通过"), lpszClientAddr, nVType); } - if (0 == _tcsxnicmp(lpszMethodPost, pSt_HTTPParament->tszHttpMethod, _tcsxlen(lpszMethodPost))) + if (0 == _tcsxncmp(lpszMethodPost, pSt_HTTPParament->tszHttpMethod, _tcsxlen(lpszMethodPost))) { XCHAR tszAPIType[64]; XCHAR tszAPIVer[64]; @@ -205,7 +205,7 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int memset(tszAPIName, '\0', sizeof(tszAPIName)); HttpProtocol_ServerHelp_GetUrlApi(pSt_HTTPParament->tszHttpUri, tszAPIType, tszAPIVer, tszAPIName); - if (0 != _tcsxnicmp(lpszAPIType, tszAPIType, _tcsxlen(lpszAPIType))) + if (0 != _tcsxncmp(lpszAPIType, tszAPIType, _tcsxlen(lpszAPIType))) { Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_REQUEST, "request url is incorrent"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); @@ -224,7 +224,7 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int return false; } - if (0 == _tcsxnicmp(lpszAPIVerClient, tszAPIVer, _tcsxlen(lpszAPIVerClient))) + if (0 == _tcsxncmp(lpszAPIVerClient, tszAPIVer, _tcsxlen(lpszAPIVerClient))) { //验证权限 if (0 != st_UserTable.st_UserInfo.nUserLevel) @@ -236,7 +236,7 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int } XEngine_AuthorizeHTTP_Client(lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen); } - else if (0 == _tcsxnicmp(lpszAPIVerSerial, tszAPIVer, _tcsxlen(lpszAPIVerSerial))) + else if (0 == _tcsxncmp(lpszAPIVerSerial, tszAPIVer, _tcsxlen(lpszAPIVerSerial))) { //验证权限 if (0 != st_UserTable.st_UserInfo.nUserLevel) @@ -248,7 +248,7 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int } XEngine_AuthorizeHTTP_Serial(lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen); } - else if (0 == _tcsxnicmp(lpszAPIVerSwitch, tszAPIVer, _tcsxlen(lpszAPIVerSwitch))) + else if (0 == _tcsxncmp(lpszAPIVerSwitch, tszAPIVer, _tcsxlen(lpszAPIVerSwitch))) { //验证权限 if (0 != st_UserTable.st_UserInfo.nUserLevel) @@ -260,7 +260,7 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int } XEngine_AuthorizeHTTP_Switch(lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen); } - else if (0 == _tcsxnicmp(lpszAPIVerBanned, tszAPIVer, _tcsxlen(lpszAPIVerBanned))) + else if (0 == _tcsxncmp(lpszAPIVerBanned, tszAPIVer, _tcsxlen(lpszAPIVerBanned))) { //验证权限 if (0 != st_UserTable.st_UserInfo.nUserLevel) @@ -272,7 +272,7 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int } XEngine_AuthorizeHTTP_Banned(lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen); } - else if (0 == _tcsxnicmp(lpszAPIVerNotice, tszAPIVer, _tcsxlen(lpszAPIVerNotice))) + else if (0 == _tcsxncmp(lpszAPIVerNotice, tszAPIVer, _tcsxlen(lpszAPIVerNotice))) { //验证权限 if (0 != st_UserTable.st_UserInfo.nUserLevel) @@ -284,7 +284,7 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int } XEngine_AuthorizeHTTP_Announcement(lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen); } - else if (0 == _tcsxnicmp(lpszAPIVerTry, tszAPIVer, _tcsxlen(lpszAPIVerTry))) + else if (0 == _tcsxncmp(lpszAPIVerTry, tszAPIVer, _tcsxlen(lpszAPIVerTry))) { //验证权限 if (0 != st_UserTable.st_UserInfo.nUserLevel) @@ -306,15 +306,15 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int } else { - if (0 == _tcsxnicmp(lpszAPIVerPass, tszAPIVer, _tcsxlen(lpszAPIVerPass))) + if (0 == _tcsxncmp(lpszAPIVerPass, tszAPIVer, _tcsxlen(lpszAPIVerPass))) { XEngine_AuthorizeHTTP_Pass(lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen); } - else if (0 == _tcsxnicmp(lpszAPIVerCDKey, tszAPIVer, _tcsxlen(lpszAPIVerCDKey))) + else if (0 == _tcsxncmp(lpszAPIVerCDKey, tszAPIVer, _tcsxlen(lpszAPIVerCDKey))) { XEngine_AuthorizeHTTP_CDKey(lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen); } - else if (0 == _tcsxnicmp(lpszAPIVerUser, tszAPIVer, _tcsxlen(lpszAPIVerUser))) + else if (0 == _tcsxncmp(lpszAPIVerUser, tszAPIVer, _tcsxlen(lpszAPIVerUser))) { XEngine_AuthorizeHTTP_User(xhToken, lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen); } @@ -327,7 +327,7 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int } } } - else if (0 == _tcsxnicmp(lpszMethodGet, pSt_HTTPParament->tszHttpMethod, _tcsxlen(lpszMethodGet))) + else if (0 == _tcsxncmp(lpszMethodGet, pSt_HTTPParament->tszHttpMethod, _tcsxlen(lpszMethodGet))) { int nListCount = 0; XCHAR** pptszList; @@ -339,7 +339,7 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int memset(tszUrlName, '\0', sizeof(tszUrlName)); HttpProtocol_ServerHelp_GetParament(pSt_HTTPParament->tszHttpUri, &pptszList, &nListCount, tszUrlName); - if ((nListCount < 1) || (0 != _tcsxnicmp(lpszFuncName, tszUrlName, _tcsxlen(lpszFuncName)))) + if ((nListCount < 1) || (0 != _tcsxncmp(lpszFuncName, tszUrlName, _tcsxlen(lpszFuncName)))) { Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_REQUEST, "request is failed"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); @@ -354,8 +354,8 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int memset(tszURLValue, '\0', sizeof(tszURLValue)); BaseLib_String_GetKeyValue(pptszList[0], "=", tszURLKey, tszURLValue); - if (0 == _tcsxnicmp(lpszAPIVerDCode, tszURLValue, _tcsxlen(lpszAPIVerDCode)) || 0 == _tcsxnicmp(lpszAPIVerTime, tszURLValue, _tcsxlen(lpszAPIVerTime)) || - 0 == _tcsxnicmp(lpszAPIVerNotice, tszURLValue, _tcsxlen(lpszAPIVerNotice))) + if (0 == _tcsxncmp(lpszAPIVerDCode, tszURLValue, _tcsxlen(lpszAPIVerDCode)) || 0 == _tcsxncmp(lpszAPIVerTime, tszURLValue, _tcsxlen(lpszAPIVerTime)) || + 0 == _tcsxncmp(lpszAPIVerNotice, tszURLValue, _tcsxlen(lpszAPIVerNotice))) { XEngine_AuthorizeHTTP_GetTask(lpszClientAddr, pptszList, nListCount); } @@ -365,7 +365,7 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int } BaseLib_Memory_Free((XPPPMEM)&pptszList, nListCount); } - else if (0 == _tcsxnicmp(lpszMethodOPtion, pSt_HTTPParament->tszHttpMethod, _tcsxlen(lpszMethodOPtion))) + else if (0 == _tcsxncmp(lpszMethodOPtion, pSt_HTTPParament->tszHttpMethod, _tcsxlen(lpszMethodOPtion))) { Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); From 4f085ecffde673edd9e88e680cbc84160f534260 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Sat, 28 Feb 2026 14:47:35 +0800 Subject: [PATCH 05/18] modify:start parameter does not case-sensitive --- .../Authorize_Config.cpp | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Config.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Config.cpp index 1369937..c798a21 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Config.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Config.cpp @@ -24,47 +24,47 @@ bool Authorize_Service_Parament(int argc, char** argv) for (int i = 0;i < argc;i++) { - if (0 == _tcsxicmp("-h", argv[i])) + if (0 == _tcsxcmp("-h", argv[i])) { Authorize_Service_ParamentHelp(); return false; } - else if (0 == _tcsxicmp("-d", argv[i])) + else if (0 == _tcsxcmp("-d", argv[i])) { st_AuthConfig.bDeamon = _ttxoi(argv[++i]); } - else if (0 == _tcsxicmp("-tp", argv[i])) + else if (0 == _tcsxcmp("-tp", argv[i])) { st_AuthConfig.nTCPPort = _ttxoi(argv[++i]); } - else if (0 == _tcsxicmp("-wp", argv[i])) + else if (0 == _tcsxcmp("-wp", argv[i])) { st_AuthConfig.nWSPort = _ttxoi(argv[++i]); } - else if (0 == _tcsxicmp("-hp", argv[i])) + else if (0 == _tcsxcmp("-hp", argv[i])) { st_AuthConfig.nHTTPPort = _ttxoi(argv[++i]); } - else if (0 == _tcsxicmp("-t", argv[i])) + else if (0 == _tcsxcmp("-t", argv[i])) { bIsTest = true; } - else if (0 == _tcsxicmp("-lt", argv[i])) + else if (0 == _tcsxcmp("-lt", argv[i])) { st_AuthConfig.st_XLog.nLogType = _ttxoi(argv[++i]); } - else if (0 == _tcsxicmp("-l", argv[i])) + else if (0 == _tcsxcmp("-l", argv[i])) { LPCXSTR lpszLogLevel = argv[++i]; - if (0 == _tcsxicmp("debug", lpszLogLevel)) + if (0 == _tcsxcmp("debug", lpszLogLevel)) { st_AuthConfig.st_XLog.nLogLeave = XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_DEBUG; } - else if (0 == _tcsxicmp("detail", lpszLogLevel)) + else if (0 == _tcsxcmp("detail", lpszLogLevel)) { st_AuthConfig.st_XLog.nLogLeave = XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_DETAIL; } - else if (0 == _tcsxicmp("info", lpszLogLevel)) + else if (0 == _tcsxcmp("info", lpszLogLevel)) { st_AuthConfig.st_XLog.nLogLeave = XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO; } From 8e5ba5fb1b740dbddad0dd39ae2facadb71a0dd2 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Sat, 28 Feb 2026 16:29:24 +0800 Subject: [PATCH 06/18] modify:crypt type modify xcrypt to api and improved app manamgent crypt code --- .../AuthorizeModule_Configure/Config_Define.h | 1 + .../ModuleConfigure_Json.cpp | 3 +- .../Authorize_Dialog/Dialog_Announcement.cpp | 74 ++++----------- .../Authorize_Dialog/Dialog_Banned.cpp | 84 +++++------------ .../Authorize_Dialog/Dialog_Config.cpp | 89 ++++++------------- .../Authorize_Dialog/Dialog_Modify.cpp | 42 +++------ .../Authorize_Dialog/Dialog_Serial.cpp | 84 +++++------------ .../Authorize_Dialog/Dialog_Switch.cpp | 42 +++------ .../Authorize_Dialog/Dialog_Try.cpp | 47 +++------- .../Authorize_Dialog/Dialog_User.cpp | 64 ++++--------- .../XEngine_AuthorizeService/Authorize_Hdr.h | 4 + .../Authorize_HttpTask.cpp | 12 +-- .../Authorize_Net.cpp | 4 +- .../Authorize_TCPTask.cpp | 14 +-- .../Authorize_WSTask.cpp | 12 +-- XEngine_Source/XEngine_DependLibrary | 2 +- 16 files changed, 149 insertions(+), 429 deletions(-) diff --git a/XEngine_Source/AuthorizeModule_Configure/Config_Define.h b/XEngine_Source/AuthorizeModule_Configure/Config_Define.h index 48de753..1bb507e 100644 --- a/XEngine_Source/AuthorizeModule_Configure/Config_Define.h +++ b/XEngine_Source/AuthorizeModule_Configure/Config_Define.h @@ -82,6 +82,7 @@ typedef struct struct { XCHAR tszCryptoKey[32]; //加密传输密钥 + int nCryptionType; //加密传输类型,参考:ENUM_XENGINE_CRYPTION_SYMMETRIC bool bEnable; //是否启用加密传输 }st_XCrypto; struct diff --git a/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp b/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp index 2cb54bf..03fc3b0 100644 --- a/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp +++ b/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp @@ -146,7 +146,7 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE pSt_ServerConfig->st_XLogin.st_MulitLogin.bSecond = st_JsonMulitLogin["bSecond"].asBool(); pSt_ServerConfig->st_XLogin.st_MulitLogin.bTime = st_JsonMulitLogin["bTime"].asBool(); //加密配置 - if (st_JsonRoot["XCrypto"].empty() || (2 != st_JsonRoot["XCrypto"].size())) + if (st_JsonRoot["XCrypto"].empty() || (3 != st_JsonRoot["XCrypto"].size())) { Config_IsErrorOccur = true; Config_dwErrorCode = ERROR_AUTHORIZE_MODULE_CONFIGURE_XCRYPTO; @@ -154,6 +154,7 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE } Json::Value st_JsonXCrypto = st_JsonRoot["XCrypto"]; pSt_ServerConfig->st_XCrypto.bEnable = st_JsonXCrypto["bEnable"].asBool(); + pSt_ServerConfig->st_XCrypto.nCryptionType = st_JsonXCrypto["nCryptionType"].asInt(); _tcsxcpy(pSt_ServerConfig->st_XCrypto.tszCryptoKey, st_JsonXCrypto["tszPassKey"].asCString()); //接口验证 if (st_JsonRoot["XApiVer"].empty() || (5 != st_JsonRoot["XApiVer"].size())) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Announcement.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Announcement.cpp index d516703..a5a122a 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Announcement.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Announcement.cpp @@ -95,44 +95,28 @@ void CDialog_Announcement::OnBnClickedButton1() memset(tszCodecBuffer, '\0', sizeof(tszCodecBuffer)); memset(tszPassBuffer, '\0', sizeof(tszPassBuffer)); ::GetDlgItemText(hConfigWnd, IDC_EDIT6, tszPassBuffer, sizeof(tszPassBuffer)); + ::GetDlgItemText(hConfigWnd, IDC_EDIT6, tszPassBuffer, sizeof(tszPassBuffer)); nMsgLen = Json::writeString(st_JsonBuilder, st_JsonRoot).length(); BaseLib_Charset_AnsiToUTF(Json::writeString(st_JsonBuilder, st_JsonRoot).c_str(), tszCodecBuffer, &nMsgLen); if (bCrypto) { - XCHAR tszMsgBuffer[2048]; - memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - - Cryption_XCrypto_Encoder((LPCXBTR)tszCodecBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); - APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); - } - else - { - APIClient_Http_Request(_X("POST"), tszUrlAddr, tszCodecBuffer, NULL, &ptszMsgBuffer, &nMsgLen); + Cryption_Api_CryptEncodec(NULL, (XBYTE *)tszCodecBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); } + APIClient_Http_Request(_X("POST"), tszUrlAddr, tszCodecBuffer, NULL, &ptszMsgBuffer, &nMsgLen); + JSONCPP_STRING st_JsonError; Json::CharReaderBuilder st_ReaderBuilder; st_JsonRoot.clear(); std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); if (bCrypto) { - XCHAR tszMsgBuffer[2048]; - memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - - Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); - if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); - return; - } + Cryption_Api_CryptDecodec(NULL, (XBYTE*)ptszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); } - else + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { - if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); - return; - } + Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); + return; } if (0 == st_JsonRoot["code"].asInt()) @@ -191,7 +175,7 @@ void CDialog_Announcement::OnBnClickedButton2() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_Api_CryptEncodec((LPCXBTR)st_JsonRoot.toStyledString().c_str(), (XBYTE*)tszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -204,23 +188,12 @@ void CDialog_Announcement::OnBnClickedButton2() std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); if (bCrypto) { - XCHAR tszMsgBuffer[2048]; - memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - - Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); - if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); - return; - } + Cryption_Api_CryptDecodec(NULL, (XBYTE *)ptszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); } - else + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { - if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); - return; - } + Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); + return; } if (0 == st_JsonRoot["code"].asInt()) @@ -269,7 +242,7 @@ void CDialog_Announcement::OnBnClickedButton3() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_Api_CryptEncodec((LPCXBTR)st_JsonRoot.toStyledString().c_str(), (XBYTE*)tszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -282,23 +255,12 @@ void CDialog_Announcement::OnBnClickedButton3() std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); if (bCrypto) { - XCHAR tszMsgBuffer[2048]; - memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - - Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); - if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); - return; - } + Cryption_Api_CryptDecodec(NULL, (XBYTE*)ptszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); } - else + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { - if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); - return; - } + Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); + return; } for (unsigned int i = 0; i < st_JsonRoot["Array"].size(); i++) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Banned.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Banned.cpp index fe6a57d..b676834 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Banned.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Banned.cpp @@ -158,7 +158,7 @@ void CDialog_Banned::OnBnClickedButton2() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_Api_CryptEncodec((LPCXBTR)st_JsonRoot.toStyledString().c_str(), (XBYTE*)tszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -171,23 +171,12 @@ void CDialog_Banned::OnBnClickedButton2() std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); if (bCrypto) { - XCHAR tszMsgBuffer[2048]; - memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - - Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); - if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); - return; - } + Cryption_Api_CryptDecodec(NULL, (XBYTE*)ptszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); } - else + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { - if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); - return; - } + Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); + return; } if (0 == st_JsonRoot["code"].asInt()) @@ -248,7 +237,7 @@ void CDialog_Banned::OnBnClickedButton4() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_Api_CryptEncodec((LPCXBTR)st_JsonRoot.toStyledString().c_str(), (XBYTE*)tszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -261,23 +250,12 @@ void CDialog_Banned::OnBnClickedButton4() std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); if (bCrypto) { - XCHAR tszMsgBuffer[2048]; - memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - - Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); - if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); - return; - } + Cryption_Api_CryptDecodec(NULL, (XBYTE*)ptszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); } - else + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { - if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); - return; - } + Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); + return; } for (unsigned int i = 0; i < st_JsonRoot["ArrayAddr"].size(); i++) @@ -376,7 +354,7 @@ void CDialog_Banned::OnBnClickedButton3() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_Api_CryptEncodec((LPCXBTR)st_JsonRoot.toStyledString().c_str(), (XBYTE*)tszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -389,23 +367,12 @@ void CDialog_Banned::OnBnClickedButton3() std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); if (bCrypto) { - XCHAR tszMsgBuffer[2048]; - memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - - Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); - if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析删除黑名单接口数据错误,无法继续")); - return; - } + Cryption_Api_CryptDecodec(NULL, (XBYTE*)ptszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); } - else + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { - if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析删除黑名单接口数据错误,无法继续")); - return; - } + Authorize_Help_LogPrint(_T("解析删除黑名单接口数据错误,无法继续")); + return; } if (0 == st_JsonRoot["code"].asInt()) @@ -494,7 +461,7 @@ void CDialog_Banned::OnBnClickedButton5() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_Api_CryptEncodec((LPCXBTR)st_JsonRoot.toStyledString().c_str(), (XBYTE*)tszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -507,23 +474,12 @@ void CDialog_Banned::OnBnClickedButton5() std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); if (bCrypto) { - XCHAR tszMsgBuffer[2048]; - memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - - Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); - if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); - return; - } + Cryption_Api_CryptDecodec(NULL, (XBYTE*)ptszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); } - else + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { - if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); - return; - } + Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); + return; } if (0 == st_JsonRoot["code"].asInt()) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Config.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Config.cpp index b5fb36e..32ee894 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Config.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Config.cpp @@ -84,11 +84,13 @@ BOOL CDialog_Config::OnInitDialog() m_ComboPassCodec.InsertString(3, _T("SHA256")); m_ComboPassCodec.SetCurSel(1); - m_ListEncrypto.AddString(_T("XCrypto(X加密)")); + m_ListEncrypto.InsertString(0, _T("不启用")); + m_ListEncrypto.InsertString(1, _T("AES128")); + m_ListEncrypto.InsertString(2, _T("AES256")); m_ListEncrypto.SetCurSel(0); m_ListEncrypto.EnableWindow(false); - m_EditPassword.SetWindowText(_T("123123")); + m_EditPassword.SetWindowText(_T("123123aa")); m_EditPassword.EnableWindow(false); hConfigWnd = m_hWnd; @@ -149,27 +151,16 @@ void CDialog_Config::OnBnClickedButton1() if (BST_CHECKED == m_CheckCodecEnable.GetCheck()) { CString m_StrCodecPass; - XCHAR tszMsgBuffer[2048]; - memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - m_EditPassword.GetWindowText(m_StrCodecPass); - Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(m_StrCodecPass.GetBuffer())); - if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("登录失败,无法继续")); - AuthHelp_Windows_Dithering(hMainWnd); - return; - } + Cryption_Api_CryptDecodec(NULL, (XBYTE*)ptszMsgBuffer, &nMsgLen, W2A(m_StrCodecPass.GetBuffer()), (ENUM_XENGINE_CRYPTION_SYMMETRIC)m_ListEncrypto.GetCurSel()); } - else + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { - if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("登录失败,无法继续")); - AuthHelp_Windows_Dithering(hMainWnd); - return; - } + Authorize_Help_LogPrint(_T("登录失败,无法继续")); + AuthHelp_Windows_Dithering(hMainWnd); + return; } + if (0 != st_JsonRoot["code"].asInt()) { Authorize_Help_LogPrint(_T("登录失败,无法继续")); @@ -216,25 +207,15 @@ void CDialog_Config::OnBnClickedButton2() if (BST_CHECKED == m_CheckCodecEnable.GetCheck()) { CString m_StrCodecPass; - XCHAR tszMsgBuffer[2048]; - memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - m_EditPassword.GetWindowText(m_StrCodecPass); - Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(m_StrCodecPass.GetBuffer())); - if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("关闭失败,无法继续")); - return; - } + Cryption_Api_CryptDecodec(NULL, (XBYTE*)ptszMsgBuffer, &nMsgLen, W2A(m_StrCodecPass.GetBuffer()), (ENUM_XENGINE_CRYPTION_SYMMETRIC)m_ListEncrypto.GetCurSel()); } - else + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { - if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("关闭失败,无法继续")); - return; - } + Authorize_Help_LogPrint(_T("关闭失败,无法继续")); + return; } + if (0 != st_JsonRoot["code"].asInt()) { Authorize_Help_LogPrint(_T("关闭失败,无法继续")); @@ -277,25 +258,15 @@ void CDialog_Config::OnBnClickedButton5() if (BST_CHECKED == m_CheckCodecEnable.GetCheck()) { CString m_StrCodecPass; - XCHAR tszMsgBuffer[2048]; - memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - m_EditPassword.GetWindowText(m_StrCodecPass); - Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(m_StrCodecPass.GetBuffer())); - if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("续期失败,无法继续")); - return; - } + Cryption_Api_CryptDecodec(NULL, (XBYTE*)ptszMsgBuffer, &nMsgLen, W2A(m_StrCodecPass.GetBuffer()), (ENUM_XENGINE_CRYPTION_SYMMETRIC)m_ListEncrypto.GetCurSel()); } - else + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { - if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("续期失败,无法继续")); - return; - } + Authorize_Help_LogPrint(_T("续期失败,无法继续")); + return; } + if (0 != st_JsonRoot["code"].asInt()) { Authorize_Help_LogPrint(_T("续期失败,无法继续")); @@ -349,25 +320,15 @@ void CDialog_Config::OnBnClickedButton8() if (BST_CHECKED == m_CheckCodecEnable.GetCheck()) { CString m_StrCodecPass; - XCHAR tszMsgBuffer[2048]; - memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - m_EditPassword.GetWindowText(m_StrCodecPass); - Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(m_StrCodecPass.GetBuffer())); - if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("获取验证码失败,无法继续")); - return; - } + Cryption_Api_CryptDecodec(NULL, (XBYTE*)ptszMsgBuffer, &nMsgLen, W2A(m_StrCodecPass.GetBuffer()), (ENUM_XENGINE_CRYPTION_SYMMETRIC)m_ListEncrypto.GetCurSel()); } - else + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { - if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("获取验证码失败,无法继续")); - return; - } + Authorize_Help_LogPrint(_T("获取验证码失败,无法继续")); + return; } + if (0 != st_JsonRoot["code"].asInt()) { Authorize_Help_LogPrint(_T("获取验证码失败,无法继续")); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Modify.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Modify.cpp index 1ef426c..d59ee7f 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Modify.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Modify.cpp @@ -111,7 +111,7 @@ BOOL CDialog_Modify::OnInitDialog() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_Api_CryptEncodec((LPCXBTR)st_JsonRoot.toStyledString().c_str(), (XBYTE*)tszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pConfigWnd->m_ListEncrypto.GetCurSel()); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -125,23 +125,12 @@ BOOL CDialog_Modify::OnInitDialog() std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); if (bCrypto) { - XCHAR tszMsgBuffer[2048]; - memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - - Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); - if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析客户接口数据错误,无法继续")); - return false; - } + Cryption_Api_CryptDecodec(NULL, (XBYTE*)ptszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pConfigWnd->m_ListEncrypto.GetCurSel()); } - else + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { - if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析客户接口数据错误,无法继续")); - return false; - } + Authorize_Help_LogPrint(_T("解析客户接口数据错误,无法继续")); + return false; } st_JsonObject = st_JsonRoot["st_UserTable"]; @@ -268,7 +257,7 @@ void CDialog_Modify::OnBnClickedButton2() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_Api_CryptEncodec((LPCXBTR)st_JsonRoot.toStyledString().c_str(), (XBYTE*)tszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pConfigWnd->m_ListEncrypto.GetCurSel()); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -281,23 +270,12 @@ void CDialog_Modify::OnBnClickedButton2() std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); if (bCrypto) { - XCHAR tszMsgBuffer[2048]; - memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - - Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); - if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析客户接口数据错误,无法继续")); - return; - } + Cryption_Api_CryptDecodec(NULL, (XBYTE*)ptszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pConfigWnd->m_ListEncrypto.GetCurSel()); } - else + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { - if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析客户接口数据错误,无法继续")); - return; - } + Authorize_Help_LogPrint(_T("解析客户接口数据错误,无法继续")); + return; } if (0 == st_JsonRoot["code"].asInt()) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Serial.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Serial.cpp index 358cbda..aed9d13 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Serial.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Serial.cpp @@ -123,7 +123,7 @@ void CDialog_Serial::OnBnClickedButton1() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_Api_CryptEncodec((LPCXBTR)st_JsonRoot.toStyledString().c_str(), (XBYTE*)tszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -136,23 +136,12 @@ void CDialog_Serial::OnBnClickedButton1() std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); if (bCrypto) { - XCHAR tszMsgBuffer[2048]; - memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - - Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); - if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); - return; - } + Cryption_Api_CryptDecodec(NULL, (XBYTE*)ptszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); } - else + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { - if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); - return; - } + Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); + return; } for (unsigned int i = 0; i < st_JsonRoot["Array"].size(); i++) @@ -257,7 +246,7 @@ void CDialog_Serial::OnBnClickedButton2() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_Api_CryptEncodec((LPCXBTR)st_JsonRoot.toStyledString().c_str(), (XBYTE*)tszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -270,23 +259,12 @@ void CDialog_Serial::OnBnClickedButton2() std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); if (bCrypto) { - XCHAR tszMsgBuffer[2048]; - memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - - Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); - if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); - return; - } + Cryption_Api_CryptDecodec(NULL, (XBYTE*)ptszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); } - else + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { - if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); - return; - } + Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); + return; } if (0 == st_JsonRoot["code"].asInt()) @@ -356,7 +334,7 @@ void CDialog_Serial::OnBnClickedButton4() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_Api_CryptEncodec((LPCXBTR)st_JsonRoot.toStyledString().c_str(), (XBYTE*)tszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -369,23 +347,12 @@ void CDialog_Serial::OnBnClickedButton4() std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); if (bCrypto) { - XCHAR tszMsgBuffer[2048]; - memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - - Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); - if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); - return; - } + Cryption_Api_CryptDecodec(NULL, (XBYTE*)ptszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); } - else + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { - if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); - return; - } + Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); + return; } if (0 == st_JsonRoot["code"].asInt()) @@ -512,7 +479,7 @@ void CDialog_Serial::OnBnClickedButton6() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_Api_CryptEncodec((LPCXBTR)st_JsonRoot.toStyledString().c_str(), (XBYTE*)tszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -525,23 +492,12 @@ void CDialog_Serial::OnBnClickedButton6() std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); if (bCrypto) { - XCHAR tszMsgBuffer[2048]; - memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - - Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); - if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析序列号推送接口数据错误,无法继续")); - return; - } + Cryption_Api_CryptDecodec(NULL, (XBYTE*)ptszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); } - else + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { - if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析序列号推送接口数据错误,无法继续")); - return; - } + Authorize_Help_LogPrint(_T("解析序列号推送接口数据错误,无法继续")); + return; } if (0 == st_JsonRoot["code"].asInt()) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.cpp index 21a5e5b..0620513 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.cpp @@ -98,7 +98,7 @@ void CDialog_Switch::OnBnClickedButton1() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_Api_CryptEncodec((LPCXBTR)st_JsonRoot.toStyledString().c_str(), (XBYTE*)tszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -111,23 +111,12 @@ void CDialog_Switch::OnBnClickedButton1() std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); if (bCrypto) { - XCHAR tszMsgBuffer[2048]; - memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - - Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); - if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析接口数据错误,无法继续")); - return; - } + Cryption_Api_CryptDecodec(NULL, (XBYTE*)ptszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); } - else + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { - if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析接口数据错误,无法继续")); - return; - } + Authorize_Help_LogPrint(_T("解析接口数据错误,无法继续")); + return; } if (0 == st_JsonRoot["code"].asInt()) @@ -449,7 +438,7 @@ void CDialog_Switch::OnBnClickedButton2() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_Api_CryptEncodec((LPCXBTR)st_JsonRoot.toStyledString().c_str(), (XBYTE*)tszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -462,23 +451,12 @@ void CDialog_Switch::OnBnClickedButton2() std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); if (bCrypto) { - XCHAR tszMsgBuffer[2048]; - memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - - Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); - if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析接口数据错误,无法继续")); - return; - } + Cryption_Api_CryptDecodec(NULL, (XBYTE*)ptszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); } - else + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { - if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析接口数据错误,无法继续")); - return; - } + Authorize_Help_LogPrint(_T("解析接口数据错误,无法继续")); + return; } if (0 == st_JsonRoot["code"].asInt()) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Try.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Try.cpp index 0d1e9b5..61a3928 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Try.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Try.cpp @@ -80,6 +80,7 @@ void CDialog_Try::OnBnClickedButton1() XCHAR tszUrlAddr[XPATH_MAX]; CString m_StrPosStart; CString m_StrPosEnd; + CDialog_Config* pWnd = (CDialog_Config*)CDialog_Config::FromHandle(hConfigWnd); memset(tszIPAddr, '\0', XPATH_MAX); memset(tszIPPort, '\0', XPATH_MAX); @@ -112,7 +113,7 @@ void CDialog_Try::OnBnClickedButton1() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_Api_CryptEncodec((LPCXBTR)st_JsonRoot.toStyledString().c_str(), (XBYTE*)tszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -125,23 +126,12 @@ void CDialog_Try::OnBnClickedButton1() std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); if (bCrypto) { - XCHAR tszMsgBuffer[2048]; - memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - - Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); - if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); - return; - } + Cryption_Api_CryptDecodec(NULL, (XBYTE*)ptszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); } - else + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { - if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); - return; - } + Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); + return; } for (unsigned int i = 0, j = 0; i < st_JsonRoot["Array"].size(); i++) @@ -207,7 +197,7 @@ void CDialog_Try::OnBnClickedButton2() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_Api_CryptEncodec((LPCXBTR)st_JsonRoot.toStyledString().c_str(), (XBYTE*)tszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -221,23 +211,12 @@ void CDialog_Try::OnBnClickedButton2() std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); if (bCrypto) { - XCHAR tszMsgBuffer[2048]; - memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - - Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); - if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析客户接口数据错误,无法继续")); - return; - } + Cryption_Api_CryptDecodec(NULL, (XBYTE*)ptszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); } - else + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { - if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析客户接口数据错误,无法继续")); - return; - } + Authorize_Help_LogPrint(_T("解析客户接口数据错误,无法继续")); + return; } if (0 == st_JsonRoot["code"].asInt()) @@ -347,7 +326,7 @@ void CDialog_Try::OnBnClickedButton3() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_Api_CryptEncodec((LPCXBTR)st_JsonRoot.toStyledString().c_str(), (XBYTE*)tszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -364,7 +343,7 @@ void CDialog_Try::OnBnClickedButton3() XCHAR tszMsgBuffer[2048]; memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_Api_CryptDecodec(NULL, (XBYTE*)ptszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { Authorize_Help_LogPrint(_T("解析客户接口数据错误,无法继续")); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_User.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_User.cpp index f486644..faa5e5b 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_User.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_User.cpp @@ -83,6 +83,7 @@ void CDialog_User::OnBnClickedButton1() XCHAR tszUrlAddr[XPATH_MAX]; CString m_StrPosStart; CString m_StrPosEnd; + CDialog_Config* pWnd = (CDialog_Config*)CDialog_Config::FromHandle(hConfigWnd); memset(tszIPAddr, '\0', XPATH_MAX); memset(tszIPPort, '\0', XPATH_MAX); @@ -121,7 +122,7 @@ void CDialog_User::OnBnClickedButton1() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_Api_CryptEncodec((LPCXBTR)st_JsonRoot.toStyledString().c_str(), (XBYTE*)tszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -134,23 +135,12 @@ void CDialog_User::OnBnClickedButton1() std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); if (bCrypto) { - XCHAR tszMsgBuffer[2048]; - memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - - Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); - if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); - return; - } + Cryption_Api_CryptDecodec(NULL, (XBYTE*)ptszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); } - else + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { - if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); - return; - } + Authorize_Help_LogPrint(_T("解析客户列表接口数据错误,无法继续")); + return; } for (unsigned int i = 0, j = 0; i < st_JsonRoot["Array"].size(); i++) @@ -235,7 +225,7 @@ void CDialog_User::OnBnClickedButton2() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_Api_CryptEncodec((LPCXBTR)st_JsonRoot.toStyledString().c_str(), (XBYTE*)tszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -249,23 +239,12 @@ void CDialog_User::OnBnClickedButton2() std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); if (bCrypto) { - XCHAR tszMsgBuffer[2048]; - memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - - Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); - if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析客户接口数据错误,无法继续")); - return; - } + Cryption_Api_CryptDecodec(NULL, (XBYTE*)ptszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); } - else + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { - if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析客户接口数据错误,无法继续")); - return; - } + Authorize_Help_LogPrint(_T("解析客户接口数据错误,无法继续")); + return; } if (0 == st_JsonRoot["code"].asInt()) @@ -324,7 +303,7 @@ void CDialog_User::OnBnClickedButton3() memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); nMsgLen = st_JsonRoot.toStyledString().length(); - Cryption_XCrypto_Encoder((LPCXBTR)st_JsonRoot.toStyledString().c_str(), &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); + Cryption_Api_CryptEncodec((LPCXBTR)st_JsonRoot.toStyledString().c_str(), (XBYTE*)tszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); APIClient_Http_Request(_X("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else @@ -338,23 +317,12 @@ void CDialog_User::OnBnClickedButton3() std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); if (bCrypto) { - XCHAR tszMsgBuffer[2048]; - memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); - - Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszMsgBuffer, W2A(tszPassBuffer)); - if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析客户接口数据错误,无法继续")); - return; - } + Cryption_Api_CryptDecodec(NULL, (XBYTE*)ptszMsgBuffer, &nMsgLen, W2A(tszPassBuffer), (ENUM_XENGINE_CRYPTION_SYMMETRIC)pWnd->m_ListEncrypto.GetCurSel()); } - else + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) { - if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) - { - Authorize_Help_LogPrint(_T("解析客户接口数据错误,无法继续")); - return; - } + Authorize_Help_LogPrint(_T("解析客户接口数据错误,无法继续")); + return; } if (0 == st_JsonRoot["code"].asInt()) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h index 44ced79..2a0e036 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h @@ -46,6 +46,8 @@ using namespace std; #include #include #include +#include +#include #include "../../XEngine_DependLibrary/XEngine_Module/XEngine_InfoReport/InfoReport_Define.h" #include "../../XEngine_DependLibrary/XEngine_Module/XEngine_InfoReport/InfoReport_Error.h" #include "../../XEngine_DependLibrary/XEngine_Module/XEngine_Verification/Verification_Define.h" @@ -96,6 +98,7 @@ extern XENGINE_FUNCTIONSWITCH st_FunSwitch; #include "Authorize_TCPTask.h" #include "Authorize_WSTask.h" #include "Authorize_HttpTask.h" +#include "Authorize_MQTTTask.h" #include "AuthorizeHTTP_Post/AuthorizeHTTP_User.h" #include "AuthorizeHTTP_Post/AuthorizeHTTP_Client.h" #include "AuthorizeHTTP_Post/AuthorizeHTTP_Serial.h" @@ -121,6 +124,7 @@ extern XENGINE_FUNCTIONSWITCH st_FunSwitch; #pragma comment(lib,"XEngine_HelpComponents/HelpComponents_Packets.lib") #pragma comment(lib,"XEngine_RfcComponents/RfcComponents_WSProtocol.lib") #pragma comment(lib,"XEngine_RfcComponents/RfcComponents_HttpProtocol.lib") +#pragma comment(lib,"XEngine_RfcComponents/RfcComponents_MQTTProtocol.lib") #ifdef _DEBUG #ifdef _M_X64 #pragma comment(lib,"../../x64/Debug/AuthorizeModule_Configure.lib") diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp index 1da3d23..411c9b3 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp @@ -26,17 +26,9 @@ XHTHREAD XCALLBACK XEngine_AuthService_HttpThread(XPVOID lParam) { if (st_AuthConfig.st_XCrypto.bEnable) { - XCHAR tszDeBuffer[2048] = {}; - if (nMsgLen > 0) - { - Cryption_XCrypto_Decoder((LPCXBTR)ptszMsgBuffer, &nMsgLen, (XBYTE*)tszDeBuffer, st_AuthConfig.st_XCrypto.tszCryptoKey); - } - XEngine_Client_HttpTask(ppSt_ListClient[i]->tszClientAddr, tszDeBuffer, nMsgLen, &st_HTTPParament, ppszListHdr, nHdrCount); - } - else - { - XEngine_Client_HttpTask(ppSt_ListClient[i]->tszClientAddr, ptszMsgBuffer, nMsgLen, &st_HTTPParament, ppszListHdr, nHdrCount); + Cryption_Api_CryptDecodec(NULL, (XBYTE*)ptszMsgBuffer, &nMsgLen, st_AuthConfig.st_XCrypto.tszCryptoKey, (ENUM_XENGINE_CRYPTION_SYMMETRIC)st_AuthConfig.st_XCrypto.nCryptionType); } + XEngine_Client_HttpTask(ppSt_ListClient[i]->tszClientAddr, ptszMsgBuffer, nMsgLen, &st_HTTPParament, ppszListHdr, nHdrCount); } BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMsgBuffer); BaseLib_Memory_Free((XPPPMEM)&ppszListHdr, nHdrCount); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp index 9d1bd89..d809ee0 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp @@ -179,7 +179,7 @@ bool XEngine_SendMsg(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, else { CHttpMemory_PoolEx m_CodecMemory(XENGINE_MEMORY_SIZE_MAX); - Cryption_XCrypto_Encoder((LPCXBTR)lpszMsgBuffer, &nMsgLen, (XBYTE*)m_CodecMemory.get(), lpszPass); + Cryption_Api_CryptEncodec((LPCXBTR)lpszMsgBuffer, (XBYTE*)m_CodecMemory.get(), &nMsgLen, st_AuthConfig.st_XCrypto.tszCryptoKey, (ENUM_XENGINE_CRYPTION_SYMMETRIC)st_AuthConfig.st_XCrypto.nCryptionType); RfcComponents_WSCodec_EncodeMsg(m_CodecMemory.get(), m_HTTPMemory.get(), &nMsgLen, ENUM_XENGINE_RFCOMPONENTS_WEBSOCKET_OPCODE_TEXT); } NetCore_TCPXCore_SendEx(xhWSSocket, lpszClientAddr, m_HTTPMemory.get(), nMsgLen); @@ -205,7 +205,7 @@ bool XEngine_SendMsg(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, else { CHttpMemory_PoolEx m_CodecMemory(XENGINE_MEMORY_SIZE_MAX); - Cryption_XCrypto_Encoder((LPCXBTR)lpszMsgBuffer, &nMsgLen, (XBYTE*)m_CodecMemory.get(), lpszPass); + Cryption_Api_CryptEncodec((LPCXBTR)lpszMsgBuffer, (XBYTE*)m_CodecMemory.get(), &nMsgLen, lpszPass, (ENUM_XENGINE_CRYPTION_SYMMETRIC)st_AuthConfig.st_XCrypto.nCryptionType); HttpProtocol_Server_SendMsgEx(xhHttpPacket, m_HTTPMemory.get(), &nSDSize, &st_HDRParam, m_CodecMemory.get(), nMsgLen); } NetCore_TCPXCore_SendEx(xhHttpSocket, lpszClientAddr, m_HTTPMemory.get(), nSDSize); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp index aae2d68..e5b8d27 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp @@ -27,19 +27,11 @@ XHTHREAD XCALLBACK XEngine_AuthService_TCPThread(XPVOID lParam) { continue; } - if (st_AuthConfig.st_XCrypto.bEnable && (ENUM_XENGINE_PROTOCOLHDR_CRYPTO_TYPE_XCRYPT == st_ProtocolHdr.wCrypto)) + if (st_AuthConfig.st_XCrypto.bEnable) { - XCHAR tszDeBuffer[2048] = {}; - if (nMsgLen > 0) - { - Cryption_XCrypto_Decoder((LPCXBTR)tszMsgBuffer, &nMsgLen, (XBYTE*)tszDeBuffer, st_AuthConfig.st_XCrypto.tszCryptoKey); - } - XEngine_Client_TCPTask(ppSt_ListClient[i]->tszClientAddr, tszDeBuffer, nMsgLen, &st_ProtocolHdr, XENGINE_AUTH_APP_NETTYPE_TCP); - } - else - { - XEngine_Client_TCPTask(ppSt_ListClient[i]->tszClientAddr, tszMsgBuffer, nMsgLen, &st_ProtocolHdr, XENGINE_AUTH_APP_NETTYPE_TCP); + Cryption_Api_CryptDecodec(NULL, (XBYTE*)tszMsgBuffer, &nMsgLen, st_AuthConfig.st_XCrypto.tszCryptoKey, (ENUM_XENGINE_CRYPTION_SYMMETRIC)st_AuthConfig.st_XCrypto.nCryptionType); } + XEngine_Client_TCPTask(ppSt_ListClient[i]->tszClientAddr, tszMsgBuffer, nMsgLen, &st_ProtocolHdr, XENGINE_AUTH_APP_NETTYPE_TCP); } BaseLib_Memory_Free((XPPPMEM)&ppSt_ListClient, nListCount); } diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_WSTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_WSTask.cpp index 8b43998..cd804b4 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_WSTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_WSTask.cpp @@ -27,17 +27,9 @@ XHTHREAD XCALLBACK XEngine_AuthService_WSThread(XPVOID lParam) } if (st_AuthConfig.st_XCrypto.bEnable) { - XCHAR tszDeBuffer[2048] = {}; - if (nMsgLen > 0) - { - Cryption_XCrypto_Decoder((LPCXBTR)tszMsgBuffer, &nMsgLen, (XBYTE*)tszDeBuffer, st_AuthConfig.st_XCrypto.tszCryptoKey); - } - XEngine_Client_WSTask(ppSt_ListClient[i]->tszClientAddr, tszDeBuffer, nMsgLen, enOPCode); - } - else - { - XEngine_Client_WSTask(ppSt_ListClient[i]->tszClientAddr, tszMsgBuffer, nMsgLen, enOPCode); + Cryption_Api_CryptDecodec(NULL, (XBYTE*)tszMsgBuffer, &nMsgLen, st_AuthConfig.st_XCrypto.tszCryptoKey, (ENUM_XENGINE_CRYPTION_SYMMETRIC)st_AuthConfig.st_XCrypto.nCryptionType); } + XEngine_Client_WSTask(ppSt_ListClient[i]->tszClientAddr, tszMsgBuffer, nMsgLen, enOPCode); } BaseLib_Memory_Free((XPPPMEM)&ppSt_ListClient, nListCount); } diff --git a/XEngine_Source/XEngine_DependLibrary b/XEngine_Source/XEngine_DependLibrary index adf48e2..207abe8 160000 --- a/XEngine_Source/XEngine_DependLibrary +++ b/XEngine_Source/XEngine_DependLibrary @@ -1 +1 @@ -Subproject commit adf48e22d68f741ec52f299945f8f8f8fb3df9d2 +Subproject commit 207abe8b617744e35bf1438a03536d898ddc93fd From 82f1f8970c5c4e6e620c1d0f94b103e4b2a73ee3 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Sat, 28 Feb 2026 17:15:07 +0800 Subject: [PATCH 07/18] modify:Serial number generation is only available after the server has generated it --- .../AuthorizeModule_Protocol.def | 1 + .../Protocol_Define.h | 44 ++++++++++ .../Protocol_Parse/Protocol_Parse.cpp | 88 +++++++++++++++++++ .../Protocol_Parse/Protocol_Parse.h | 1 + .../AuthorizeModule_Protocol/pch.cpp | 4 + .../Authorize_Dialog/Dialog_Config.cpp | 2 +- .../Authorize_Dialog/Dialog_Serial.cpp | 28 ++---- .../AuthorizeHTTP_Serial.cpp | 37 +++++--- 8 files changed, 170 insertions(+), 35 deletions(-) diff --git a/XEngine_Source/AuthorizeModule_Protocol/AuthorizeModule_Protocol.def b/XEngine_Source/AuthorizeModule_Protocol/AuthorizeModule_Protocol.def index cde4e4c..3cfecc6 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/AuthorizeModule_Protocol.def +++ b/XEngine_Source/AuthorizeModule_Protocol/AuthorizeModule_Protocol.def @@ -25,6 +25,7 @@ EXPORTS Protocol_Parse_HttpParseTry Protocol_Parse_HttpParseTable Protocol_Parse_HttpParseSerial + Protocol_Parse_HttpParseSerial2 Protocol_Parse_HttpParseOnline Protocol_Parse_HttpParseTime Protocol_Parse_HttpParseSwitch diff --git a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Define.h b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Define.h index 366ad8c..9120942 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Define.h +++ b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Define.h @@ -600,6 +600,50 @@ extern "C" bool Protocol_Parse_HttpParseTable(LPCXSTR lpszMsgBuffer, int nMsgLen *********************************************************************/ extern "C" bool Protocol_Parse_HttpParseSerial(LPCXSTR lpszMsgBuffer, int nMsgLen, AUTHREG_SERIALTABLE*** pppSt_SerialTable, int* pInt_ListCount); /******************************************************************** +函数名称:Protocol_Parse_HttpParseSerial +函数功能:解析HTTP序列号信息 + 参数.一:lpszMsgBuffer + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要解析的缓冲区 + 参数.二:nMsgLen + In/Out:In + 类型:整数型 + 可空:N + 意思:输入要解析的大小 + 参数.三:ptszOUTTime + In/Out:Out + 类型:字符指针 + 可空:N + 意思:输出过期时间 + 参数.四:ptszHASTime + In/Out:Out + 类型:字符指针 + 可空:N + 意思:输出拥有时间 + 参数.五:pInt_SerialCount + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出序列号个数 + 参数.六:pInt_FieldCount + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出字段个数 + 参数.七:penSerialType + In/Out:Out + 类型:枚举型指针 + 可空:N + 意思:输出生成类型 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool Protocol_Parse_HttpParseSerial2(LPCXSTR lpszMsgBuffer, int nMsgLen, XCHAR* ptszExpiredTime, XCHAR* ptszMaxTime, int* pInt_SerialCount, int* pInt_FieldCount, ENUM_VERIFICATION_MODULE_SERIAL_TYPE* penSerialType); +/******************************************************************** 函数名称:Protocol_Parse_HttpParseOnline 函数功能:解析在线列表 参数.一:lpszMsgBuffer diff --git a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.cpp b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.cpp index b61170a..8211cec 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.cpp +++ b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.cpp @@ -519,6 +519,94 @@ bool CProtocol_Parse::Protocol_Parse_HttpParseTable(LPCXSTR lpszMsgBuffer, int n } /******************************************************************** 函数名称:Protocol_Parse_HttpParseSerial +函数功能:解析HTTP序列号信息 + 参数.一:lpszMsgBuffer + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要解析的缓冲区 + 参数.二:nMsgLen + In/Out:In + 类型:整数型 + 可空:N + 意思:输入要解析的大小 + 参数.三:ptszOUTTime + In/Out:Out + 类型:字符指针 + 可空:N + 意思:输出过期时间 + 参数.四:ptszHASTime + In/Out:Out + 类型:字符指针 + 可空:N + 意思:输出拥有时间 + 参数.五:pInt_SerialCount + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出序列号个数 + 参数.六:pInt_FieldCount + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出字段个数 + 参数.七:penSerialType + In/Out:Out + 类型:枚举型指针 + 可空:N + 意思:输出生成类型 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CProtocol_Parse::Protocol_Parse_HttpParseSerial2(LPCXSTR lpszMsgBuffer, int nMsgLen, XCHAR* ptszExpiredTime, XCHAR* ptszMaxTime, int* pInt_SerialCount, int* pInt_FieldCount, ENUM_VERIFICATION_MODULE_SERIAL_TYPE* penSerialType) +{ + Protocol_IsErrorOccur = false; + + if ((NULL == lpszMsgBuffer) || (NULL == ptszMaxTime)) + { + Protocol_IsErrorOccur = true; + Protocol_dwErrorCode = ERROR_AUTHORIZE_MODULE_PROTOCOL_PARAMENT; + return false; + } + Json::Value st_JsonRoot; + JSONCPP_STRING st_JsonError; + Json::CharReaderBuilder st_ReaderBuilder; + + std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); + if (!pSt_JsonReader->parse(lpszMsgBuffer, lpszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) + { + Protocol_IsErrorOccur = true; + Protocol_dwErrorCode = ERROR_AUTHORIZE_MODULE_PROTOCOL_PARSE; + return false; + } + Json::Value st_JsonObject = st_JsonRoot["st_SerialInfo"]; + + if (!st_JsonObject["tszExpiredTime"].isNull()) + { + _tcsxcpy(ptszExpiredTime, st_JsonObject["tszExpiredTime"].asCString()); + } + if (!st_JsonObject["tszMaxTime"].isNull()) + { + _tcsxcpy(ptszMaxTime, st_JsonObject["tszMaxTime"].asCString()); + } + if (!st_JsonObject["nSerialCount"].isNull()) + { + *pInt_SerialCount = st_JsonObject["nSerialCount"].asInt(); + } + if (!st_JsonObject["nFieldCount"].isNull()) + { + *pInt_FieldCount = st_JsonObject["nFieldCount"].asInt(); + } + if (!st_JsonObject["enSerialType"].isNull()) + { + *penSerialType = (ENUM_VERIFICATION_MODULE_SERIAL_TYPE)st_JsonObject["enSerialType"].asInt(); + } + return true; +} +/******************************************************************** +函数名称:Protocol_Parse_HttpParseSerial 函数功能:解析HTTP序列号信息 参数.一:lpszMsgBuffer In/Out:In diff --git a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.h b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.h index d1d16f5..2260153 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.h +++ b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.h @@ -26,6 +26,7 @@ class CProtocol_Parse bool Protocol_Parse_HttpParseTry(LPCXSTR lpszMsgBuffer, int nMsgLen, AUTHREG_TEMPVER* pSt_NETTry); bool Protocol_Parse_HttpParseTable(LPCXSTR lpszMsgBuffer, int nMsgLen, AUTHREG_USERTABLE* pSt_UserTable); bool Protocol_Parse_HttpParseSerial(LPCXSTR lpszMsgBuffer, int nMsgLen, AUTHREG_SERIALTABLE*** pppSt_SerialTable, int* pInt_ListCount); + bool Protocol_Parse_HttpParseSerial2(LPCXSTR lpszMsgBuffer, int nMsgLen, XCHAR* ptszExpiredTime, XCHAR* ptszMaxTime, int* pInt_SerialCount, int* pInt_FieldCount, ENUM_VERIFICATION_MODULE_SERIAL_TYPE* penSerialType); bool Protocol_Parse_HttpParseOnline(LPCXSTR lpszMsgBuffer, int nMsgLen, bool* pbOnline); bool Protocol_Parse_HttpParseTime(LPCXSTR lpszMsgBuffer, int nMsgLen, AUTHREG_PROTOCOL_TIME* pSt_ProtocolTime); bool Protocol_Parse_HttpParseSwitch(LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_FUNCTIONSWITCH* pSt_FunSwitch); diff --git a/XEngine_Source/AuthorizeModule_Protocol/pch.cpp b/XEngine_Source/AuthorizeModule_Protocol/pch.cpp index 05fe44a..af329aa 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/pch.cpp +++ b/XEngine_Source/AuthorizeModule_Protocol/pch.cpp @@ -118,6 +118,10 @@ extern "C" bool Protocol_Parse_HttpParseSerial(LPCXSTR lpszMsgBuffer, int nMsgLe { return m_ProtocolParse.Protocol_Parse_HttpParseSerial(lpszMsgBuffer, nMsgLen, pppSt_SerialTable, pInt_ListCount); } +extern "C" bool Protocol_Parse_HttpParseSerial2(LPCXSTR lpszMsgBuffer, int nMsgLen, XCHAR* ptszExpiredTime, XCHAR* ptszMaxTime, int* pInt_SerialCount, int* pInt_FieldCount, ENUM_VERIFICATION_MODULE_SERIAL_TYPE* penSerialType) +{ + return m_ProtocolParse.Protocol_Parse_HttpParseSerial2(lpszMsgBuffer, nMsgLen, ptszExpiredTime, ptszMaxTime, pInt_SerialCount, pInt_FieldCount, penSerialType); +} extern "C" bool Protocol_Parse_HttpParseOnline(LPCXSTR lpszMsgBuffer, int nMsgLen, bool * pbOnline) { return m_ProtocolParse.Protocol_Parse_HttpParseOnline(lpszMsgBuffer, nMsgLen, pbOnline); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Config.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Config.cpp index 32ee894..1306f2e 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Config.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Config.cpp @@ -87,7 +87,7 @@ BOOL CDialog_Config::OnInitDialog() m_ListEncrypto.InsertString(0, _T("不启用")); m_ListEncrypto.InsertString(1, _T("AES128")); m_ListEncrypto.InsertString(2, _T("AES256")); - m_ListEncrypto.SetCurSel(0); + m_ListEncrypto.SetCurSel(1); m_ListEncrypto.EnableWindow(false); m_EditPassword.SetWindowText(_T("123123aa")); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Serial.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Serial.cpp index aed9d13..db6a832 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Serial.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Serial.cpp @@ -204,32 +204,18 @@ void CDialog_Serial::OnBnClickedButton2() AfxMessageBox(_T("必须配置卡拥有的时间和生成数量")); return; } - Json::Value st_JsonRoot; - Json::Value st_JsonArray; Json::Value st_JsonObject; - m_ComboNumber.GetLBText(m_ComboNumber.GetCurSel(), m_StrNumberCount); USES_CONVERSION; - XCHAR tszTimeStr[XPATH_MIN] = {}; - BaseLib_Time_TimeToStr(tszTimeStr); - for (int i = 0; i < _ttoi(m_StrSerialCount.GetBuffer()); i++) - { - Json::Value st_JsonObject; - XCHAR tszSerialStr[XPATH_MIN] = {}; - Verification_XAuthKey_KeySerial(tszSerialStr, _ttoi(m_StrNumberCount.GetBuffer()), 0); - - st_JsonObject["bIsUsed"] = false; - st_JsonObject["enSerialType"] = m_ComboSerialType.GetCurSel(); - st_JsonObject["tszCreateTime"] = tszTimeStr; - st_JsonObject["tszExpiredTime"] = W2A(m_StrExpiredTime.GetBuffer()); - st_JsonObject["tszMaxTime"] = W2A(m_StrHasTime.GetBuffer()); - st_JsonObject["tszSerialNumber"] = tszSerialStr; - st_JsonObject["tszUserName"] = "NOT"; - st_JsonArray.append(st_JsonObject); - } - st_JsonRoot["Array"] = st_JsonArray; + st_JsonObject["enSerialType"] = m_ComboSerialType.GetCurSel(); + st_JsonObject["tszExpiredTime"] = W2A(m_StrExpiredTime.GetBuffer()); + st_JsonObject["tszMaxTime"] = W2A(m_StrHasTime.GetBuffer()); + st_JsonObject["nSerialCount"] = _ttoi(m_StrSerialCount.GetBuffer()); + st_JsonObject["nFieldCount"] = _ttoi(m_StrNumberCount.GetBuffer()); + + st_JsonRoot["st_SerialInfo"] = st_JsonObject; st_JsonRoot["xhToken"] = _ttoll(m_StrToken.GetBuffer()); int nMsgLen = 0; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp index 1338005..308baf1 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp @@ -71,28 +71,39 @@ bool XEngine_AuthorizeHTTP_Serial(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L } else if (0 == _tcsxncmp(lpszAPIInsert, lpszAPIName, _tcsxlen(lpszAPIInsert))) { - int nListCount = 0; - AUTHREG_SERIALTABLE** ppSt_SerialTable; + int nSerialCount = 0; + int nFieldCount = 0; + ENUM_VERIFICATION_MODULE_SERIAL_TYPE enSerialType; + XCHAR tszExpiredTime[64] = {}; + XCHAR tszMaxTime[64] = {}; + XCHAR tszCreateTime[64] = {}; - Protocol_Parse_HttpParseSerial(lpszMsgBuffer, nMsgLen, &ppSt_SerialTable, &nListCount); - if (0 == st_AuthConfig.st_XSql.nDBType) + Protocol_Parse_HttpParseSerial2(lpszMsgBuffer, nMsgLen, tszExpiredTime, tszMaxTime, &nSerialCount, &nFieldCount, &enSerialType); + BaseLib_Time_TimeToStr(tszCreateTime); + + for (int i = 0; i < nSerialCount; i++) { - for (int i = 0; i < nListCount; i++) + AUTHREG_SERIALTABLE st_SerialTable = {}; + st_SerialTable.bIsUsed = false; + st_SerialTable.enSerialType = enSerialType; + _xstprintf(st_SerialTable.tszUserName, _X("NOT")); + _tcsxcpy(st_SerialTable.tszCreateTime, tszCreateTime); + _tcsxcpy(st_SerialTable.tszExpiredTime, tszExpiredTime); + _tcsxcpy(st_SerialTable.tszMaxTime, tszMaxTime); + Verification_XAuthKey_KeySerial(st_SerialTable.tszSerialNumber, nFieldCount, 0); + + if (0 == st_AuthConfig.st_XSql.nDBType) { - DBModule_SQLite_SerialInsert(ppSt_SerialTable[i]); + DBModule_SQLite_SerialInsert(&st_SerialTable); } - } - else - { - for (int i = 0; i < nListCount; i++) + else { - DBModule_SQLite_SerialInsert(ppSt_SerialTable[i]); + DBModule_SQLite_SerialInsert(&st_SerialTable); } } - BaseLib_Memory_Free((XPPPMEM)&ppSt_SerialTable, nListCount); Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen); XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求插入自定义序列号成功,个数:%d"), lpszClientAddr, nListCount); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求插入自定义序列号成功,个数:%d"), lpszClientAddr, nSerialCount); } return true; } \ No newline at end of file From 1bc1730f7d0a011672bd6c09ca05f1dbdac266fe Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Sat, 28 Feb 2026 17:20:25 +0800 Subject: [PATCH 08/18] update:configure file --- XEngine_Release/XEngine_Config/XEngine_Config.json | 1 + 1 file changed, 1 insertion(+) diff --git a/XEngine_Release/XEngine_Config/XEngine_Config.json b/XEngine_Release/XEngine_Config/XEngine_Config.json index 4e7db56..3c94bf2 100644 --- a/XEngine_Release/XEngine_Config/XEngine_Config.json +++ b/XEngine_Release/XEngine_Config/XEngine_Config.json @@ -52,6 +52,7 @@ }, "XCrypto": { "bEnable": false, + "nCryptionType": 1, "tszPassKey": "123123aa" }, "XApiVer": { From 2555b36d042c25bff0581773c54a1cab4cc9d201 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 2 Mar 2026 13:47:02 +0800 Subject: [PATCH 09/18] improved:send message process --- .../Authorize_Net.cpp | 33 +++++++------------ .../XEngine_AuthorizeService/Authorize_Net.h | 3 +- 2 files changed, 12 insertions(+), 24 deletions(-) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp index d809ee0..a7822eb 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp @@ -156,32 +156,21 @@ bool XEngine_CloseClient(LPCXSTR lpszClientAddr, int nLeaveType) } ////////////////////////////////////////////////////////////////////////// bool XEngine_Client_TaskSend(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, int nNetType) -{ - if (st_AuthConfig.st_XCrypto.bEnable) - { - XEngine_SendMsg(lpszClientAddr, lpszMsgBuffer, nMsgLen, nNetType, st_AuthConfig.st_XCrypto.tszCryptoKey); - } - else - { - XEngine_SendMsg(lpszClientAddr, lpszMsgBuffer, nMsgLen, nNetType); - } - return true; -} -bool XEngine_SendMsg(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, int nNetType, LPCXSTR lpszPass) { CHttpMemory_PoolEx m_HTTPMemory(XENGINE_MEMORY_SIZE_MAX); + if (XENGINE_AUTH_APP_NETTYPE_WS == nNetType) { - if (NULL == lpszPass) - { - RfcComponents_WSCodec_EncodeMsg(lpszMsgBuffer, m_HTTPMemory.get(), &nMsgLen, ENUM_XENGINE_RFCOMPONENTS_WEBSOCKET_OPCODE_TEXT); - } - else + if (st_AuthConfig.st_XCrypto.bEnable) { CHttpMemory_PoolEx m_CodecMemory(XENGINE_MEMORY_SIZE_MAX); Cryption_Api_CryptEncodec((LPCXBTR)lpszMsgBuffer, (XBYTE*)m_CodecMemory.get(), &nMsgLen, st_AuthConfig.st_XCrypto.tszCryptoKey, (ENUM_XENGINE_CRYPTION_SYMMETRIC)st_AuthConfig.st_XCrypto.nCryptionType); RfcComponents_WSCodec_EncodeMsg(m_CodecMemory.get(), m_HTTPMemory.get(), &nMsgLen, ENUM_XENGINE_RFCOMPONENTS_WEBSOCKET_OPCODE_TEXT); } + else + { + RfcComponents_WSCodec_EncodeMsg(lpszMsgBuffer, m_HTTPMemory.get(), &nMsgLen, ENUM_XENGINE_RFCOMPONENTS_WEBSOCKET_OPCODE_TEXT); + } NetCore_TCPXCore_SendEx(xhWSSocket, lpszClientAddr, m_HTTPMemory.get(), nMsgLen); SocketOpt_HeartBeat_ActiveAddrEx(xhWSHeart, lpszClientAddr); } @@ -198,15 +187,15 @@ bool XEngine_SendMsg(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, st_HDRParam.nHttpCode = 200; st_HDRParam.bIsClose = true; - if (NULL == lpszPass) + if (st_AuthConfig.st_XCrypto.bEnable) { - HttpProtocol_Server_SendMsgEx(xhHttpPacket, m_HTTPMemory.get(), &nSDSize, &st_HDRParam, lpszMsgBuffer, nMsgLen); + CHttpMemory_PoolEx m_CodecMemory(XENGINE_MEMORY_SIZE_MAX); + Cryption_Api_CryptEncodec((LPCXBTR)lpszMsgBuffer, (XBYTE*)m_CodecMemory.get(), &nMsgLen, st_AuthConfig.st_XCrypto.tszCryptoKey, (ENUM_XENGINE_CRYPTION_SYMMETRIC)st_AuthConfig.st_XCrypto.nCryptionType); + HttpProtocol_Server_SendMsgEx(xhHttpPacket, m_HTTPMemory.get(), &nSDSize, &st_HDRParam, m_CodecMemory.get(), nMsgLen); } else { - CHttpMemory_PoolEx m_CodecMemory(XENGINE_MEMORY_SIZE_MAX); - Cryption_Api_CryptEncodec((LPCXBTR)lpszMsgBuffer, (XBYTE*)m_CodecMemory.get(), &nMsgLen, lpszPass, (ENUM_XENGINE_CRYPTION_SYMMETRIC)st_AuthConfig.st_XCrypto.nCryptionType); - HttpProtocol_Server_SendMsgEx(xhHttpPacket, m_HTTPMemory.get(), &nSDSize, &st_HDRParam, m_CodecMemory.get(), nMsgLen); + HttpProtocol_Server_SendMsgEx(xhHttpPacket, m_HTTPMemory.get(), &nSDSize, &st_HDRParam, lpszMsgBuffer, nMsgLen); } NetCore_TCPXCore_SendEx(xhHttpSocket, lpszClientAddr, m_HTTPMemory.get(), nSDSize); SocketOpt_HeartBeat_ActiveAddrEx(xhHTTPHeart, lpszClientAddr); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.h index 3e7e53d..f736e0d 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.h @@ -16,5 +16,4 @@ void XCALLBACK XEngine_Client_HttpClose(LPCXSTR lpszClientAddr, XSOCKET hSocket, void XCALLBACK XEngine_Client_HttpHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam); bool XEngine_CloseClient(LPCXSTR lpszClientAddr, int nLeaveType = 0); -bool XEngine_Client_TaskSend(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, int nNetType); -bool XEngine_SendMsg(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, int nNetType, LPCXSTR lpszPass = NULL); \ No newline at end of file +bool XEngine_Client_TaskSend(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, int nNetType); \ No newline at end of file From 22b659e8e6ff12cbd69a4f08c333f256652b7015 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 2 Mar 2026 14:43:08 +0800 Subject: [PATCH 10/18] added:mqtt protocol support --- .../XEngine_Config/XEngine_Config.json | 6 +- .../AuthorizeModule_Configure/Config_Define.h | 2 + .../ModuleConfigure_Json.cpp | 4 +- .../Protocol_Packet/Protocol_Packet.cpp | 68 +++++++++- XEngine_Source/AuthorizeModule_Protocol/pch.h | 4 + XEngine_Source/VSCopy_Arm64.bat | 1 + XEngine_Source/VSCopy_Debug.bat | 1 + XEngine_Source/VSCopy_x64.bat | 1 + XEngine_Source/VSCopy_x86.bat | 1 + XEngine_Source/XAuth_Protocol.h | 5 + .../XEngine_AuthorizeService/Authorize_Hdr.h | 6 +- .../Authorize_MQTTTask.cpp | 120 ++++++++++++++++++ .../Authorize_MQTTTask.h | 4 + .../Authorize_Net.cpp | 35 ++++- .../XEngine_AuthorizeService/Authorize_Net.h | 4 + .../XEngine_AuthorizeService/Makefile | 6 +- .../XEngine_AuthorizeService.cpp | 48 +++++++ .../XEngine_AuthorizeService.vcxproj | 2 + .../XEngine_AuthorizeService.vcxproj.filters | 6 + 19 files changed, 311 insertions(+), 13 deletions(-) create mode 100644 XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_MQTTTask.cpp create mode 100644 XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_MQTTTask.h diff --git a/XEngine_Release/XEngine_Config/XEngine_Config.json b/XEngine_Release/XEngine_Config/XEngine_Config.json index 3c94bf2..4e15857 100644 --- a/XEngine_Release/XEngine_Config/XEngine_Config.json +++ b/XEngine_Release/XEngine_Config/XEngine_Config.json @@ -2,6 +2,7 @@ "nTCPPort": 5300, "nWSPort": 5301, "nHTTPPort": 5302, + "nMQTTPort": 5303, "bDeamon": false, "bTimeNotify": false, "XMax": { @@ -10,7 +11,8 @@ "nIOThread": 2, "nTCPThread": 2, "nWSThread": 2, - "nHTTPThread": 2 + "nHTTPThread": 2, + "nMQTTThread": 2 }, "XTime": { "nHeartCheck": 3, @@ -51,7 +53,7 @@ } }, "XCrypto": { - "bEnable": false, + "bEnable": true, "nCryptionType": 1, "tszPassKey": "123123aa" }, diff --git a/XEngine_Source/AuthorizeModule_Configure/Config_Define.h b/XEngine_Source/AuthorizeModule_Configure/Config_Define.h index 1bb507e..d1f6a2a 100644 --- a/XEngine_Source/AuthorizeModule_Configure/Config_Define.h +++ b/XEngine_Source/AuthorizeModule_Configure/Config_Define.h @@ -20,6 +20,7 @@ typedef struct int nTCPPort; //TCP端口 int nWSPort; //WEBSOCKET端口 int nHTTPPort; //HTTP管理端口 + int nMQTTPort; //MQTT端口 bool bDeamon; //守护进程,LINUX bool bTimeNotify; //超时通知设置,真为一直通知,假为通知一次关闭客户端 struct @@ -30,6 +31,7 @@ typedef struct int nTCPThread; //TCP业务线程个数 int nWSThread; //WEBSOCKET业务线程个数 int nHTTPThread; //HTTP业务线程个数 + int nMQTTThread; //MQTT业务线程个数 }st_XMax; struct { diff --git a/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp b/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp index 03fc3b0..ab9271a 100644 --- a/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp +++ b/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp @@ -75,10 +75,11 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE pSt_ServerConfig->nTCPPort = st_JsonRoot["nTCPPort"].asInt(); pSt_ServerConfig->nWSPort = st_JsonRoot["nWSPort"].asInt(); pSt_ServerConfig->nHTTPPort = st_JsonRoot["nHTTPPort"].asInt(); + pSt_ServerConfig->nMQTTPort = st_JsonRoot["nMQTTPort"].asInt(); pSt_ServerConfig->bDeamon = st_JsonRoot["bDeamon"].asBool(); pSt_ServerConfig->bTimeNotify = st_JsonRoot["bTimeNotify"].asBool(); //最大配置 - if (st_JsonRoot["XMax"].empty() || (6 != st_JsonRoot["XMax"].size())) + if (st_JsonRoot["XMax"].empty() || (7 != st_JsonRoot["XMax"].size())) { Config_IsErrorOccur = true; Config_dwErrorCode = ERROR_AUTHORIZE_MODULE_CONFIGURE_XMAX; @@ -91,6 +92,7 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE pSt_ServerConfig->st_XMax.nTCPThread = st_JsonXMax["nTCPThread"].asInt(); pSt_ServerConfig->st_XMax.nWSThread = st_JsonXMax["nWSThread"].asInt(); pSt_ServerConfig->st_XMax.nHTTPThread = st_JsonXMax["nHTTPThread"].asInt(); + pSt_ServerConfig->st_XMax.nMQTTThread = st_JsonXMax["nMQTTThread"].asInt(); //时间配置 if (st_JsonRoot["XTime"].empty() || (4 != st_JsonRoot["XTime"].size())) { diff --git a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.cpp b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.cpp index 157fc90..310dfb8 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.cpp +++ b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.cpp @@ -60,11 +60,77 @@ bool CProtocol_Packet::Protocol_Packet_HDRComm(XCHAR* ptszMsgBuffer, int* pInt_M Protocol_dwErrorCode = ERROR_AUTHORIZE_MODULE_PROTOCOL_PARAMENT; return false; } - if (0 == enDeviceType) + + if (XENGINE_AUTH_APP_NETTYPE_TCP == enDeviceType) { *pInt_MsgLen = sizeof(XENGINE_PROTOCOLHDR); memcpy(ptszMsgBuffer, pSt_ProtocolHdr, *pInt_MsgLen); } + else if (XENGINE_AUTH_APP_NETTYPE_MQTT == enDeviceType) + { + int nRVLen = 0; + XCHAR tszRVBuffer[1024] = {}; + + if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REPLOGIN == pSt_ProtocolHdr->unOperatorCode) + { + if (0 == pSt_ProtocolHdr->wReserve) + { + int nRVLen = 0; + int nListCount = 6; + XCHAR tszRVBuffer[1024]; + MQTTPROTOCOL_HDRPROPERTY** ppSt_HDRProperty; + + BaseLib_Memory_Malloc((XPPPMEM)&ppSt_HDRProperty, nListCount, sizeof(MQTTPROTOCOL_HDRPROPERTY)); + + ppSt_HDRProperty[0]->nProLen = 4; + ppSt_HDRProperty[0]->st_unValue.nValue = 1024000; + ppSt_HDRProperty[0]->byProFlag = XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_PROPERTY_PACKMAX; + + ppSt_HDRProperty[1]->nProLen = 1; + ppSt_HDRProperty[1]->st_unValue.byValue = 1; + ppSt_HDRProperty[1]->byProFlag = XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_PROPERTY_REVERAVAI; + + ppSt_HDRProperty[2]->nProLen = 1; + ppSt_HDRProperty[2]->st_unValue.byValue = 1; + ppSt_HDRProperty[2]->byProFlag = XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_PROPERTY_SHAREDSUBAVAI; + + ppSt_HDRProperty[3]->nProLen = 1; + ppSt_HDRProperty[3]->st_unValue.byValue = 1; + ppSt_HDRProperty[3]->byProFlag = XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_PROPERTY_SUBIDAVAI; + + ppSt_HDRProperty[4]->nProLen = 2; + ppSt_HDRProperty[4]->st_unValue.wValue = 65535; + ppSt_HDRProperty[4]->byProFlag = XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_PROPERTY_ALIASMAX; + + ppSt_HDRProperty[5]->nProLen = 1; + ppSt_HDRProperty[5]->st_unValue.byValue = 1; + ppSt_HDRProperty[5]->byProFlag = XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_PROPERTY_WILDCARDSUBAVAI; + + MQTTProtocol_Packet_REPConnect(tszRVBuffer, &nRVLen, 0, XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_REASON_SUCCESS, &ppSt_HDRProperty, nListCount); + MQTTProtocol_Packet_Header(ptszMsgBuffer, pInt_MsgLen, XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_TYPE_CONNACK, tszRVBuffer, nRVLen); + BaseLib_Memory_Free((XPPPMEM)&ppSt_HDRProperty, nListCount); + } + else + { + MQTTProtocol_Packet_REPConnect(tszRVBuffer, &nRVLen, 0, XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_REASON_USERPASS); + MQTTProtocol_Packet_Header(ptszMsgBuffer, pInt_MsgLen, XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_TYPE_CONNACK, tszRVBuffer, nRVLen); + } + } + else if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_EXPIRED == pSt_ProtocolHdr->unOperatorCode) + { + Json::Value st_JsonRoot; + st_JsonRoot["wHeader"] = pSt_ProtocolHdr->wHeader; + st_JsonRoot["wTail"] = pSt_ProtocolHdr->wTail; + st_JsonRoot["xhToken"] = (Json::Value::UInt64)pSt_ProtocolHdr->xhToken; + st_JsonRoot["unOperatorType"] = pSt_ProtocolHdr->unOperatorType; + st_JsonRoot["unOperatorCode"] = pSt_ProtocolHdr->unOperatorCode; + st_JsonRoot["wCrypto"] = pSt_ProtocolHdr->wCrypto; + st_JsonRoot["wReserve"] = pSt_ProtocolHdr->wReserve; + + MQTTProtocol_Packet_REQPublish(tszRVBuffer, &nRVLen, _X("authorize"), st_JsonRoot.toStyledString().c_str(), st_JsonRoot.toStyledString().length()); + MQTTProtocol_Packet_Header(ptszMsgBuffer, pInt_MsgLen, XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_TYPE_PUBLISH, tszRVBuffer, nRVLen); + } + } else { Json::Value st_JsonRoot; diff --git a/XEngine_Source/AuthorizeModule_Protocol/pch.h b/XEngine_Source/AuthorizeModule_Protocol/pch.h index ac92c00..d695634 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/pch.h +++ b/XEngine_Source/AuthorizeModule_Protocol/pch.h @@ -24,6 +24,9 @@ using namespace std; #include #include #include +#include +#include +#include #include "../XEngine_DependLibrary/XEngine_Module/XEngine_Verification/Verification_Define.h" #include "../XAuth_Protocol.h" #include "../AuthorizeModule_Configure/Config_Define.h" @@ -47,6 +50,7 @@ extern XLONG Protocol_dwErrorCode; #ifdef _MSC_BUILD #pragma comment(lib,"XEngine_BaseLib/XEngine_BaseLib") +#pragma comment(lib,"XEngine_RfcComponents/RfcComponents_MQTTProtocol.lib") #ifdef _DEBUG #ifdef _M_X64 #pragma comment(lib,"../x64/Debug/jsoncpp") diff --git a/XEngine_Source/VSCopy_Arm64.bat b/XEngine_Source/VSCopy_Arm64.bat index 9171e7e..67a63d1 100644 --- a/XEngine_Source/VSCopy_Arm64.bat +++ b/XEngine_Source/VSCopy_Arm64.bat @@ -18,6 +18,7 @@ copy /y "%XEngine_LibArm64%\XEngine_HelpComponents\HelpComponents_XLog.dll" "./" copy /y "%XEngine_LibArm64%\XEngine_RfcComponents\RfcComponents_WSProtocol.dll" "./" copy /y "%XEngine_LibArm64%\XEngine_RfcComponents\RfcComponents_HttpProtocol.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_RfcComponents\RfcComponents_MQTTProtocol.dll" "./" copy /y "%XEngine_LibArm64%\XEngine_SystemSdk\XEngine_SystemApi.dll" "./" copy /y "%XEngine_LibArm64%\XEngine_SystemSdk\XEngine_SystemConfig.dll" "./" \ No newline at end of file diff --git a/XEngine_Source/VSCopy_Debug.bat b/XEngine_Source/VSCopy_Debug.bat index b200edb..734950f 100644 --- a/XEngine_Source/VSCopy_Debug.bat +++ b/XEngine_Source/VSCopy_Debug.bat @@ -18,6 +18,7 @@ copy /y "D:\XEngine\XEngine_SourceCode\Debug\HelpComponents_XLog.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\RfcComponents_WSProtocol.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\RfcComponents_HttpProtocol.dll" "./" +copy /y "D:\XEngine\XEngine_SourceCode\Debug\RfcComponents_MQTTProtocol.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_SystemApi.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_SystemConfig.dll" "./" \ No newline at end of file diff --git a/XEngine_Source/VSCopy_x64.bat b/XEngine_Source/VSCopy_x64.bat index f7b08fb..d8ed88f 100644 --- a/XEngine_Source/VSCopy_x64.bat +++ b/XEngine_Source/VSCopy_x64.bat @@ -18,6 +18,7 @@ copy /y "%XEngine_Lib64%\XEngine_HelpComponents\HelpComponents_XLog.dll" "./" copy /y "%XEngine_Lib64%\XEngine_RfcComponents\RfcComponents_WSProtocol.dll" "./" copy /y "%XEngine_Lib64%\XEngine_RfcComponents\RfcComponents_HttpProtocol.dll" "./" +copy /y "%XEngine_Lib64%\XEngine_RfcComponents\RfcComponents_MQTTProtocol.dll" "./" copy /y "%XEngine_Lib64%\XEngine_SystemSdk\XEngine_SystemApi.dll" "./" copy /y "%XEngine_Lib64%\XEngine_SystemSdk\XEngine_SystemConfig.dll" "./" \ No newline at end of file diff --git a/XEngine_Source/VSCopy_x86.bat b/XEngine_Source/VSCopy_x86.bat index 4f31596..7066fbf 100644 --- a/XEngine_Source/VSCopy_x86.bat +++ b/XEngine_Source/VSCopy_x86.bat @@ -18,6 +18,7 @@ copy /y "%XEngine_Lib32%\XEngine_HelpComponents\HelpComponents_XLog.dll" "./" copy /y "%XEngine_Lib32%\XEngine_RfcComponents\RfcComponents_WSProtocol.dll" "./" copy /y "%XEngine_Lib32%\XEngine_RfcComponents\RfcComponents_HttpProtocol.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_RfcComponents\RfcComponents_MQTTProtocol.dll" "./" copy /y "%XEngine_Lib32%\XEngine_SystemSdk\XEngine_SystemApi.dll" "./" copy /y "%XEngine_Lib32%\XEngine_SystemSdk\XEngine_SystemConfig.dll" "./" \ No newline at end of file diff --git a/XEngine_Source/XAuth_Protocol.h b/XEngine_Source/XAuth_Protocol.h index c7ac531..22c1d4d 100644 --- a/XEngine_Source/XAuth_Protocol.h +++ b/XEngine_Source/XAuth_Protocol.h @@ -10,6 +10,11 @@ // Purpose: 验证协议头 // History: *********************************************************************/ +#define XENGINE_AUTH_APP_NETTYPE_TCP 0 +#define XENGINE_AUTH_APP_NETTYPE_WS 1 +#define XENGINE_AUTH_APP_NETTYPE_HTTP 2 +#define XENGINE_AUTH_APP_NETTYPE_MQTT 3 + #define XENGINE_AUTHREG_SERVICE_SQL_MAX_USERNAME 32 ////////////////////////////////////////////////////////////////////////// // 导出的协议定义 diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h index 2a0e036..f9259ad 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h @@ -70,6 +70,7 @@ extern XHANDLE xhLog; extern XHANDLE xhTCPSocket; extern XHANDLE xhWSSocket; extern XHANDLE xhHttpSocket; +extern XHANDLE xhMQTTSocket; extern XHANDLE xhTCPPacket; extern XHANDLE xhWSPacket; @@ -83,14 +84,11 @@ extern XHANDLE xhMemPool; extern XHANDLE xhTCPPool; extern XHANDLE xhWSPool; extern XHANDLE xhHttpPool; +extern XHANDLE xhMQTTPool; extern XENGINE_SERVICECONFIG st_AuthConfig; extern XENGINE_FUNCTIONSWITCH st_FunSwitch; -#define XENGINE_AUTH_APP_NETTYPE_TCP 0 -#define XENGINE_AUTH_APP_NETTYPE_WS 1 -#define XENGINE_AUTH_APP_NETTYPE_HTTP 2 - #include "Authorize_HttpMemory.h" #include "Authorize_Config.h" #include "Authorize_Net.h" diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_MQTTTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_MQTTTask.cpp new file mode 100644 index 0000000..377557d --- /dev/null +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_MQTTTask.cpp @@ -0,0 +1,120 @@ +#include "Authorize_Hdr.h" + +XHTHREAD XCALLBACK Authorize_MQTTTask_Thread(XPVOID lParam) +{ + int nThreadPos = *(int*)lParam; + nThreadPos++; + while (bIsRun) + { + if (!MQTTProtocol_Parse_WaitEvent(nThreadPos)) + { + continue; + } + int nListCount = 0; + XENGINE_MANAGEPOOL_TASKEVENT** ppSst_ListAddr; + + MQTTProtocol_Parse_GetPool(nThreadPos, &ppSst_ListAddr, &nListCount); + for (int i = 0; i < nListCount; i++) + { + for (int j = 0; j < ppSst_ListAddr[i]->nPktCount; j++) + { + int nMSGLen = 0; + XCHAR *ptszMSGBuffer = NULL; + MQTTPROTOCOL_FIXEDHEADER st_MQTTHdr = {}; + + if (MQTTProtocol_Parse_Recv(ppSst_ListAddr[i]->tszClientAddr, &st_MQTTHdr, &ptszMSGBuffer, &nMSGLen)) + { + if (st_AuthConfig.st_XCrypto.bEnable) + { + Cryption_Api_CryptDecodec(NULL, (XBYTE*)ptszMSGBuffer, &nMSGLen, st_AuthConfig.st_XCrypto.tszCryptoKey, (ENUM_XENGINE_CRYPTION_SYMMETRIC)st_AuthConfig.st_XCrypto.nCryptionType); + } + Authorize_MQTTTask_Handle(ppSst_ListAddr[i]->tszClientAddr, &st_MQTTHdr, ptszMSGBuffer, nMSGLen); + BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMSGBuffer); + } + } + } + BaseLib_Memory_Free((XPPPMEM)&ppSst_ListAddr, nListCount); + } + return 0; +} +void Packet_Property(MQTTPROTOCOL_HDRPROPERTY*** pppSt_HDRProperty, int nListCount) +{ + BaseLib_Memory_Malloc((XPPPMEM)pppSt_HDRProperty, nListCount, sizeof(MQTTPROTOCOL_HDRPROPERTY)); + + (*pppSt_HDRProperty)[0]->nProLen = 4; + (*pppSt_HDRProperty)[0]->st_unValue.nValue = 1024000; + (*pppSt_HDRProperty)[0]->byProFlag = XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_PROPERTY_PACKMAX; + + (*pppSt_HDRProperty)[1]->nProLen = 1; + (*pppSt_HDRProperty)[1]->st_unValue.byValue = 1; + (*pppSt_HDRProperty)[1]->byProFlag = XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_PROPERTY_REVERAVAI; + + (*pppSt_HDRProperty)[2]->nProLen = 1; + (*pppSt_HDRProperty)[2]->st_unValue.byValue = 1; + (*pppSt_HDRProperty)[2]->byProFlag = XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_PROPERTY_SHAREDSUBAVAI; + + (*pppSt_HDRProperty)[3]->nProLen = 1; + (*pppSt_HDRProperty)[3]->st_unValue.byValue = 1; + (*pppSt_HDRProperty)[3]->byProFlag = XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_PROPERTY_SUBIDAVAI; + + (*pppSt_HDRProperty)[4]->nProLen = 2; + (*pppSt_HDRProperty)[4]->st_unValue.wValue = 65535; + (*pppSt_HDRProperty)[4]->byProFlag = XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_PROPERTY_ALIASMAX; + + (*pppSt_HDRProperty)[5]->nProLen = 1; + (*pppSt_HDRProperty)[5]->st_unValue.byValue = 1; + (*pppSt_HDRProperty)[5]->byProFlag = XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_PROPERTY_WILDCARDSUBAVAI; +} +bool Authorize_MQTTTask_Handle(LPCXSTR lpszClientAddr, MQTTPROTOCOL_FIXEDHEADER* pSt_MQTTHdr, LPCXSTR lpszMSGBuffer, int nMSGLen) +{ + int nSDLen = 0; + int nRVLen = 0; + XCHAR tszSDBuffer[1024]; + XCHAR tszRVBuffer[1024]; + + memset(tszSDBuffer, '\0', sizeof(tszSDBuffer)); + memset(tszRVBuffer, '\0', sizeof(tszRVBuffer)); + //是不是连接 + if (XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_TYPE_CONNECT == pSt_MQTTHdr->byMsgType) + { + int nListCount = 0; + MQTTPROTOCOL_HDRPROPERTY** ppSt_HDRProperty; + MQTTPROTOCOL_HDRCONNNECT st_HDRConnect = {}; + MQTTPROTOCOL_USERINFO st_USerInfo = {}; + + if (!MQTTProtocol_Parse_Connect(lpszMSGBuffer, nMSGLen, &st_HDRConnect, &st_USerInfo, &ppSt_HDRProperty, &nListCount)) + { + //错误断开连接 + MQTTProtocol_Packet_DisConnect(tszRVBuffer, &nRVLen); + MQTTProtocol_Packet_Header(tszSDBuffer, &nSDLen, XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_TYPE_DISCONN, tszRVBuffer, nRVLen); + //XEngine_MQXService_Send(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_MQAPP_NETTYPE_MQTT); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("MQTT客户端:%s,请求链接失败,错误码:%lX"), lpszClientAddr, MQTTProtocol_GetLastError()); + return false; + } + BaseLib_Memory_Free((XPPPMEM)&ppSt_HDRProperty, nListCount); + + XENGINE_PROTOCOLHDR st_ProtocolHdr = {}; + XENGINE_PROTOCOL_USERAUTH st_ProtocolAuth = {}; + st_ProtocolHdr.wHeader = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_HEADER; + st_ProtocolHdr.unOperatorType = ENUM_XENGINE_COMMUNICATION_PROTOCOL_TYPE_AUTH; + st_ProtocolHdr.unOperatorCode = XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REQLOGIN; + st_ProtocolHdr.unPacketSize = sizeof(XENGINE_PROTOCOL_USERAUTH); + st_ProtocolHdr.wTail = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_TAIL; + + st_ProtocolAuth.enClientType = ENUM_PROTOCOL_FOR_SERVICE_TYPE_USER; + st_ProtocolAuth.enDeviceType = ENUM_PROTOCOL_FOR_DEVICE_TYPE_MOBILE_EMBEDDED; + _tcsxcpy(st_ProtocolAuth.tszUserName, st_USerInfo.tszClientUser); + _tcsxcpy(st_ProtocolAuth.tszUserPass, st_USerInfo.tszClientPass); + + XEngine_Client_TCPTask(lpszClientAddr, (LPCXSTR)&st_ProtocolAuth, sizeof(XENGINE_PROTOCOL_USERAUTH), &st_ProtocolHdr, XENGINE_AUTH_APP_NETTYPE_MQTT); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("MQTT客户端:%s,请求链接成功,客户端ID:%s,用户名:%s"), lpszClientAddr, st_USerInfo.tszClientID, st_USerInfo.tszClientUser); + return true; + } + else if (XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_TYPE_PINGREQ == pSt_MQTTHdr->byMsgType) + { + MQTTProtocol_Packet_Header(tszSDBuffer, &nSDLen, XENGINE_RFCCOMPONENTS_MQTT_PROTOCOL_TYPE_PINGREP); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_MQTT); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("MQTT客户端:%s,请求了心跳PING协议成功"), lpszClientAddr); + } + return true; +} \ No newline at end of file diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_MQTTTask.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_MQTTTask.h new file mode 100644 index 0000000..a325c52 --- /dev/null +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_MQTTTask.h @@ -0,0 +1,4 @@ +#pragma once + +XHTHREAD XCALLBACK Authorize_MQTTTask_Thread(XPVOID lParam); +bool Authorize_MQTTTask_Handle(LPCXSTR lpszClientAddr, MQTTPROTOCOL_FIXEDHEADER* pSt_MQTTHdr, LPCXSTR lpszMSGBuffer, int nMSGLen); \ No newline at end of file diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp index a7822eb..f7671d4 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp @@ -88,6 +88,26 @@ void XCALLBACK XEngine_Client_HttpHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, XEngine_CloseClient(lpszClientAddr, 2); } ////////////////////////////////////////////////////////////////////////// +bool XCALLBACK XEngine_Client_MQTTLogin(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) +{ + MQTTProtocol_Parse_Insert(lpszClientAddr); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("MQTT客户端:%s,链接到服务器"), lpszClientAddr); + return true; +} +void XCALLBACK XEngine_Client_MQTTRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam) +{ + if (!MQTTProtocol_Parse_Send(lpszClientAddr, lpszRecvMsg, nMsgLen)) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("MQTT客户端:%s,投递MQTT数据包到消息队列失败,错误:%lX"), lpszClientAddr, MQTTProtocol_GetLastError()); + return; + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_DEBUG, _X("MQTT客户端:%s,投递MQTT数据包到消息队列成功,%d"), lpszClientAddr, nMsgLen); +} +void XCALLBACK XEngine_Client_MQTTLeave(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) +{ + XEngine_CloseClient(lpszClientAddr, 0); +} +////////////////////////////////////////////////////////////////////////// bool XEngine_CloseClient(LPCXSTR lpszClientAddr, int nLeaveType) { xstring m_StrLeave; @@ -96,6 +116,7 @@ bool XEngine_CloseClient(LPCXSTR lpszClientAddr, int nLeaveType) NetCore_TCPXCore_CloseForClientEx(xhTCPSocket, lpszClientAddr); NetCore_TCPXCore_CloseForClientEx(xhWSSocket, lpszClientAddr); NetCore_TCPXCore_CloseForClientEx(xhHttpSocket, lpszClientAddr); + NetCore_TCPXCore_CloseForClientEx(xhMQTTSocket, lpszClientAddr); SocketOpt_HeartBeat_DeleteAddrEx(xhTCPHeart, lpszClientAddr); SocketOpt_HeartBeat_DeleteAddrEx(xhWSHeart, lpszClientAddr); @@ -114,15 +135,15 @@ bool XEngine_CloseClient(LPCXSTR lpszClientAddr, int nLeaveType) NetCore_TCPXCore_CloseForClientEx(xhTCPSocket, lpszClientAddr); NetCore_TCPXCore_CloseForClientEx(xhWSSocket, lpszClientAddr); NetCore_TCPXCore_CloseForClientEx(xhHttpSocket, lpszClientAddr); + NetCore_TCPXCore_CloseForClientEx(xhMQTTSocket, lpszClientAddr); m_StrLeave = _X("心跳断开"); } HelpComponents_Datas_DeleteEx(xhTCPPacket, lpszClientAddr); RfcComponents_WSPacket_DeleteEx(xhWSPacket, lpszClientAddr); HttpProtocol_Server_CloseClinetEx(xhHttpPacket, lpszClientAddr); - - AUTHSESSION_NETCLIENT st_NETClient; - memset(&st_NETClient, '\0', sizeof(AUTHSESSION_NETCLIENT)); + MQTTProtocol_Parse_Delete(lpszClientAddr); + AUTHSESSION_NETCLIENT st_NETClient = {}; if (Session_Authorize_GetUserForAddr(lpszClientAddr, &st_NETClient)) { AUTHREG_PROTOCOL_TIME st_AuthTime; @@ -179,6 +200,14 @@ bool XEngine_Client_TaskSend(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int NetCore_TCPXCore_SendEx(xhTCPSocket, lpszClientAddr, lpszMsgBuffer, nMsgLen); SocketOpt_HeartBeat_ActiveAddrEx(xhTCPHeart, lpszClientAddr); } + else if (XENGINE_AUTH_APP_NETTYPE_MQTT == nNetType) + { + if (!NetCore_TCPXCore_SendEx(xhMQTTSocket, lpszClientAddr, lpszMsgBuffer, nMsgLen)) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("发送数据给MQTT客户端:%s,失败,错误:%lX"), lpszClientAddr, NetCore_GetLastError()); + return false; + } + } else { int nSDSize = XENGINE_MEMORY_SIZE_MAX; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.h index f736e0d..6ebb21b 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.h @@ -15,5 +15,9 @@ void XCALLBACK XEngine_Client_HttpRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, void XCALLBACK XEngine_Client_HttpClose(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); void XCALLBACK XEngine_Client_HttpHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam); +bool XCALLBACK XEngine_Client_MQTTLogin(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); +void XCALLBACK XEngine_Client_MQTTRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam); +void XCALLBACK XEngine_Client_MQTTLeave(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); + bool XEngine_CloseClient(LPCXSTR lpszClientAddr, int nLeaveType = 0); bool XEngine_Client_TaskSend(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, int nNetType); \ No newline at end of file diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Makefile b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Makefile index e953eb1..386b47b 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Makefile +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Makefile @@ -6,10 +6,10 @@ LOADHDR = -I ./ LOADSO = -L ../../XEngine_DependLibrary/XEngine_Module/jsoncpp -L ../../XEngine_DependLibrary/XEngine_Module/XEngine_InfoReport -L ../../XEngine_DependLibrary/XEngine_Module/XEngine_Verification \ -L ../../AuthorizeModule_Session -L ../../AuthorizeModule_Database -L ../../AuthorizeModule_Protocol -L ../../AuthorizeModule_Configure -L ../../AuthorizeModule_Help -L ../../AuthorizeModule_CDKey LIB = -lXEngine_InfoReport -ljsoncpp -lXEngine_Verification \ - -lXEngine_BaseLib -lXEngine_Algorithm -lXEngine_Core -lXEngine_ManagePool -lXEngine_Cryption -lXClient_APIHelp -lNetHelp_APIAddr -lHelpComponents_Packets -lHelpComponents_DataBase -lHelpComponents_XLog -lRfcComponents_WSProtocol -lRfcComponents_HttpProtocol -lXEngine_SystemApi \ + -lXEngine_BaseLib -lXEngine_Algorithm -lXEngine_Core -lXEngine_ManagePool -lXEngine_Cryption -lXClient_APIHelp -lNetHelp_APIAddr -lHelpComponents_Packets -lHelpComponents_DataBase -lHelpComponents_XLog -lRfcComponents_WSProtocol -lRfcComponents_HttpProtocol -lRfcComponents_MQTTProtocol -lXEngine_SystemApi \ -lAuthorizeModule_Session -lAuthorizeModule_Database -lAuthorizeModule_Protocol -lAuthorizeModule_Configure -lAuthorizeModule_Help LIBEX = -OBJECTS = Authorize_Config.o Authorize_Net.o Authorize_Task.o Authorize_TCPTask.o Authorize_WSTask.o Authorize_HttpTask.o XEngine_AuthorizeService.o \ +OBJECTS = Authorize_Config.o Authorize_Net.o Authorize_Task.o Authorize_TCPTask.o Authorize_WSTask.o Authorize_HttpTask.o Authorize_MQTTTask.o XEngine_AuthorizeService.o \ AuthorizeHTTP_Client.o AuthorizeHTTP_Serial.o AuthorizeHTTP_User.o AuthorizeHTTP_Pass.o AuthorizeHTTP_Switch.o AuthorizeHTTP_Banned.o AuthorizeHTTP_CDKey.o AuthorizeHTTP_Announcement.o AuthorizeHTTP_Try.o\ AuthorizeHTTP_Token.o AuthorizeHTTP_GetTask.o @@ -66,6 +66,8 @@ Authorize_WSTask.o:./Authorize_WSTask.cpp $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./Authorize_WSTask.cpp Authorize_HttpTask.o:./Authorize_HttpTask.cpp $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./Authorize_HttpTask.cpp +Authorize_MQTTTask.o:./Authorize_MQTTTask.cpp + $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./Authorize_MQTTTask.cpp AuthorizeHTTP_Client.o:./AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp index 45c0a66..5e40fbc 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp @@ -7,6 +7,7 @@ XHANDLE xhLog = NULL; XHANDLE xhTCPSocket = NULL; XHANDLE xhWSSocket = NULL; XHANDLE xhHttpSocket = NULL; +XHANDLE xhMQTTSocket = NULL; XHANDLE xhTCPPacket = NULL; XHANDLE xhWSPacket = NULL; @@ -20,6 +21,7 @@ XHANDLE xhMemPool = NULL; XHANDLE xhTCPPool = NULL; XHANDLE xhWSPool = NULL; XHANDLE xhHttpPool = NULL; +XHANDLE xhMQTTPool = NULL; XENGINE_SERVICECONFIG st_AuthConfig; XENGINE_FUNCTIONSWITCH st_FunSwitch; @@ -34,10 +36,12 @@ void ServiceApp_Stop(int signo) HelpComponents_Datas_Destory(xhTCPPacket); RfcComponents_WSPacket_DestoryEx(xhWSPacket); HttpProtocol_Server_DestroyEx(xhHttpPacket); + MQTTProtocol_Parse_Destory(); NetCore_TCPXCore_DestroyEx(xhTCPSocket); NetCore_TCPXCore_DestroyEx(xhWSSocket); NetCore_TCPXCore_DestroyEx(xhHttpSocket); + NetCore_TCPXCore_DestroyEx(xhMQTTSocket); SocketOpt_HeartBeat_DestoryEx(xhTCPHeart); SocketOpt_HeartBeat_DestoryEx(xhWSHeart); @@ -46,6 +50,7 @@ void ServiceApp_Stop(int signo) ManagePool_Thread_NQDestroy(xhTCPPool); ManagePool_Thread_NQDestroy(xhWSPool); ManagePool_Thread_NQDestroy(xhHttpPool); + ManagePool_Thread_NQDestroy(xhMQTTPool); ManagePool_Memory_Destory(xhMemPool); HelpComponents_XLog_StrongClose(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_NOTICE); @@ -140,6 +145,8 @@ int main(int argc, char** argv) THREADPOOL_PARAMENT** ppSt_ListTCPThread; THREADPOOL_PARAMENT** ppSt_ListWSThread; THREADPOOL_PARAMENT** ppSt_ListHttpThread; + THREADPOOL_PARAMENT** ppSt_ListMQTTParam; + LPCXSTR lpszHTTPMime = _X("./XEngine_Config/HttpMime.types"); LPCXSTR lpszHTTPCode = _X("./XEngine_Config/HttpCode.types"); @@ -371,6 +378,47 @@ int main(int argc, char** argv) xhHttpPool = ManagePool_Thread_NQCreate(&ppSt_ListHttpThread, st_AuthConfig.st_XMax.nHTTPThread); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化HTTP任务线程池成功,线程个数:%d"), st_AuthConfig.st_XMax.nHTTPThread); } + //MQTT服务 + if (st_AuthConfig.nMQTTPort > 0) + { + if (!MQTTProtocol_Parse_Init(st_AuthConfig.st_XMax.nMQTTThread)) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务器中,初始化MQTT组包失败,错误:%lX"), MQTTProtocol_GetLastError()); + goto XENGINE_EXITAPP; + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化MQTT组包成功,IO线程个数:%d"), st_AuthConfig.st_XMax.nMQTTThread); + + xhMQTTSocket = NetCore_TCPXCore_StartEx(st_AuthConfig.nMQTTPort, st_AuthConfig.st_XMax.nMaxClient, st_AuthConfig.st_XMax.nMQTTThread); + if (NULL == xhMQTTSocket) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动MQTT网络服务器失败,错误:%lX"), NetCore_GetLastError()); + goto XENGINE_EXITAPP; + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,启动MQTT网络服务器成功,MQTT端口:%d,IO:%d"), st_AuthConfig.nMQTTPort, st_AuthConfig.st_XMax.nMQTTThread); + NetCore_TCPXCore_RegisterCallBackEx(xhMQTTSocket, XEngine_Client_MQTTLogin, XEngine_Client_MQTTRecv, XEngine_Client_MQTTLeave); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,注册MQTT网络事件成功")); + + BaseLib_Memory_Malloc((XPPPMEM)&ppSt_ListMQTTParam, st_AuthConfig.st_XMax.nMQTTThread, sizeof(THREADPOOL_PARAMENT)); + for (int i = 0; i < st_AuthConfig.st_XMax.nMQTTThread; i++) + { + int* pInt_Pos = new int; + + *pInt_Pos = i; + ppSt_ListMQTTParam[i]->lParam = pInt_Pos; + ppSt_ListMQTTParam[i]->fpCall_ThreadsTask = Authorize_MQTTTask_Thread; + } + xhWSPool = ManagePool_Thread_NQCreate(&ppSt_ListMQTTParam, st_AuthConfig.st_XMax.nMQTTThread); + if (NULL == xhWSPool) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动MQTT线程池服务失败,错误:%lX"), ManagePool_GetLastError()); + goto XENGINE_EXITAPP; + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,启动MQTT线程池服务成功,启动个数:%d"), st_AuthConfig.st_XMax.nMQTTThread); + } + else + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,MQTT消息服务没有被启用")); + } if (st_AuthConfig.st_XCrypto.bEnable) { diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj index 264a063..bdd8488 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj @@ -244,6 +244,7 @@ + @@ -266,6 +267,7 @@ + diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj.filters b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj.filters index 54e46c7..ff32cae 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj.filters +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj.filters @@ -81,6 +81,9 @@ 源文件\AuthorizeHTTP_Get + + 源文件 + @@ -140,5 +143,8 @@ 头文件 + + 头文件 + \ No newline at end of file From e82828815f258dccc1b5bf55126ade1682e67739 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 2 Mar 2026 15:07:38 +0800 Subject: [PATCH 11/18] fixed:build error --- XEngine_Source/AuthorizeModule_Protocol/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/XEngine_Source/AuthorizeModule_Protocol/Makefile b/XEngine_Source/AuthorizeModule_Protocol/Makefile index f06fc59..b780f8f 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Makefile +++ b/XEngine_Source/AuthorizeModule_Protocol/Makefile @@ -4,7 +4,7 @@ FILEEXT = LIBFLAG = LOADHDR = -I ./ -I ../XEngine_DependLibrary/XEngine_Module/jsoncpp LOADSO = -L ../XEngine_DependLibrary/XEngine_Module/jsoncpp -LIB = -ljsoncpp -lXEngine_BaseLib +LIB = -ljsoncpp -lXEngine_BaseLib -lRfcComponents_MQTTProtocol LIBEX = OBJECTS = Protocol_Packet.o Protocol_Parse.o pch.o From 3407d9366812d2a3cc7226f55a4a8251cf1ce715 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 2 Mar 2026 17:09:06 +0800 Subject: [PATCH 12/18] fixed:hangup when exist --- .../XEngine_AuthorizeService/XEngine_AuthorizeService.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp index 5e40fbc..c74d206 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp @@ -496,10 +496,12 @@ int main(int argc, char** argv) HelpComponents_Datas_Destory(xhTCPPacket); RfcComponents_WSPacket_DestoryEx(xhWSPacket); HttpProtocol_Server_DestroyEx(xhHttpPacket); + MQTTProtocol_Parse_Destory(); NetCore_TCPXCore_DestroyEx(xhTCPSocket); NetCore_TCPXCore_DestroyEx(xhWSSocket); NetCore_TCPXCore_DestroyEx(xhHttpSocket); + NetCore_TCPXCore_DestroyEx(xhMQTTSocket); SocketOpt_HeartBeat_DestoryEx(xhTCPHeart); SocketOpt_HeartBeat_DestoryEx(xhWSHeart); @@ -508,6 +510,7 @@ int main(int argc, char** argv) ManagePool_Thread_NQDestroy(xhTCPPool); ManagePool_Thread_NQDestroy(xhWSPool); ManagePool_Thread_NQDestroy(xhHttpPool); + ManagePool_Thread_NQDestroy(xhMQTTPool); ManagePool_Memory_Destory(xhMemPool); HelpComponents_XLog_StrongClose(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_NOTICE); From 1f64ecc3b2f6a266a0f3b8b3e0f69b866d2b8e90 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 11 Mar 2026 16:30:26 +0800 Subject: [PATCH 13/18] ci:update checkout version --- .github/workflows/Alma_build.yml | 6 +++--- .github/workflows/Centos_build.yml | 6 +++--- .github/workflows/Rocky_build.yml | 6 +++--- .github/workflows/Ubuntu_build.yml | 4 ++-- .github/workflows/codeql.yml | 4 ++-- .github/workflows/cppcheck.yml | 2 +- .github/workflows/debian_build.yml | 6 +++--- .github/workflows/fedora_build.yml | 6 +++--- .github/workflows/macbuild.yml | 4 ++-- .github/workflows/msbuild.yml | 4 ++-- .github/workflows/release.yml | 2 +- 11 files changed, 25 insertions(+), 25 deletions(-) diff --git a/.github/workflows/Alma_build.yml b/.github/workflows/Alma_build.yml index 11127b1..c33adab 100644 --- a/.github/workflows/Alma_build.yml +++ b/.github/workflows/Alma_build.yml @@ -44,16 +44,16 @@ jobs: steps: - name: Checkout main repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Checkout dependency repository (xengine) - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: libxengine/libxengine path: libxengine - name: sub module checkout (opensource) - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: libxengine/XEngine_OPenSource path: XEngine_Source/XEngine_DependLibrary diff --git a/.github/workflows/Centos_build.yml b/.github/workflows/Centos_build.yml index e3c4ddb..85ee9d3 100644 --- a/.github/workflows/Centos_build.yml +++ b/.github/workflows/Centos_build.yml @@ -48,16 +48,16 @@ jobs: steps: - name: Checkout main repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Checkout dependency repository (xengine) - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: libxengine/libxengine path: libxengine - name: sub module checkout (opensource) - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: libxengine/XEngine_OPenSource path: XEngine_Source/XEngine_DependLibrary diff --git a/.github/workflows/Rocky_build.yml b/.github/workflows/Rocky_build.yml index 90f8ae9..bb98369 100644 --- a/.github/workflows/Rocky_build.yml +++ b/.github/workflows/Rocky_build.yml @@ -44,18 +44,18 @@ jobs: steps: - name: Checkout main repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: ref: 'develop' - name: Checkout dependency repository (xengine) - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: libxengine/libxengine path: libxengine - name: sub module checkout (opensource) - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: libxengine/XEngine_OPenSource path: XEngine_Source/XEngine_DependLibrary diff --git a/.github/workflows/Ubuntu_build.yml b/.github/workflows/Ubuntu_build.yml index 736d591..fa0f9ba 100644 --- a/.github/workflows/Ubuntu_build.yml +++ b/.github/workflows/Ubuntu_build.yml @@ -24,12 +24,12 @@ jobs: steps: - name: Checkout main repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: ref: 'develop' - name: Checkout dependency repository (xengine) - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: libxengine/libxengine path: libxengine diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 75bb2a8..98e41e0 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -25,12 +25,12 @@ jobs: - language: c-cpp steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: ref: 'develop' - name: Checkout dependency repository (xengine) - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: libxengine/libxengine path: libxengine diff --git a/.github/workflows/cppcheck.yml b/.github/workflows/cppcheck.yml index 279b03f..f2312a2 100644 --- a/.github/workflows/cppcheck.yml +++ b/.github/workflows/cppcheck.yml @@ -15,7 +15,7 @@ jobs: steps: - name: Checkout main repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: ref: 'develop' diff --git a/.github/workflows/debian_build.yml b/.github/workflows/debian_build.yml index 7fc58f5..9e49a8b 100644 --- a/.github/workflows/debian_build.yml +++ b/.github/workflows/debian_build.yml @@ -36,16 +36,16 @@ jobs: steps: - name: Checkout main repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Checkout dependency repository (xengine) - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: libxengine/libxengine path: libxengine - name: sub module checkout (opensource) - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: libxengine/XEngine_OPenSource path: XEngine_Source/XEngine_DependLibrary diff --git a/.github/workflows/fedora_build.yml b/.github/workflows/fedora_build.yml index 608d9f8..046c625 100644 --- a/.github/workflows/fedora_build.yml +++ b/.github/workflows/fedora_build.yml @@ -34,16 +34,16 @@ jobs: steps: - name: Checkout main repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Checkout dependency repository (xengine) - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: libxengine/libxengine path: libxengine - name: sub module checkout (opensource) - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: libxengine/XEngine_OPenSource path: XEngine_Source/XEngine_DependLibrary diff --git a/.github/workflows/macbuild.yml b/.github/workflows/macbuild.yml index 3b5fdc9..1234ec4 100644 --- a/.github/workflows/macbuild.yml +++ b/.github/workflows/macbuild.yml @@ -20,13 +20,13 @@ jobs: steps: - name: Checkout main repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: ref: 'develop' # 检出依赖的xengine仓库到指定的xengine目录 - name: Checkout dependency repository (xengine) - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: libxengine/libxengine path: libxengine diff --git a/.github/workflows/msbuild.yml b/.github/workflows/msbuild.yml index d22204e..12ca2d8 100644 --- a/.github/workflows/msbuild.yml +++ b/.github/workflows/msbuild.yml @@ -21,13 +21,13 @@ jobs: steps: # 检出您的主仓库代码 - name: Checkout main repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: ref: 'develop' # 检出依赖的xengine仓库到指定的xengine目录 - name: Checkout dependency repository (xengine) - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: libxengine/libxengine path: libxengine diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8cac7be..379769e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,7 +12,7 @@ jobs: steps: # 检出代码并包含标签 - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 From d5d40123ef30c1a59001e4695ef64dfdca69fce6 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 11 Mar 2026 16:32:58 +0800 Subject: [PATCH 14/18] added:heart support for mqtt --- .../XEngine_Config/XEngine_Config.json | 3 ++- .../AuthorizeModule_Configure/Config_Define.h | 1 + .../ModuleConfigure_Json.cpp | 3 ++- .../XEngine_AuthorizeService/Authorize_Hdr.h | 1 + .../XEngine_AuthorizeService/Authorize_Net.cpp | 6 ++++++ .../XEngine_AuthorizeService/Authorize_Net.h | 1 + .../XEngine_AuthorizeService.cpp | 18 ++++++++++++++++++ 7 files changed, 31 insertions(+), 2 deletions(-) diff --git a/XEngine_Release/XEngine_Config/XEngine_Config.json b/XEngine_Release/XEngine_Config/XEngine_Config.json index 4e15857..955e13e 100644 --- a/XEngine_Release/XEngine_Config/XEngine_Config.json +++ b/XEngine_Release/XEngine_Config/XEngine_Config.json @@ -18,7 +18,8 @@ "nHeartCheck": 3, "nTCPTime": 5, "nWSTime": 5, - "nHTTPTime": 5 + "nHTTPTime": 5, + "nMQTTTime": 5 }, "XVerification": { "nTokenTimeout": 3600, diff --git a/XEngine_Source/AuthorizeModule_Configure/Config_Define.h b/XEngine_Source/AuthorizeModule_Configure/Config_Define.h index d1f6a2a..0801503 100644 --- a/XEngine_Source/AuthorizeModule_Configure/Config_Define.h +++ b/XEngine_Source/AuthorizeModule_Configure/Config_Define.h @@ -38,6 +38,7 @@ typedef struct int nHeartCheck; //检测次数 int nTCPTime; //TCP检测时间 int nWSTime; //WEBSOCKET检测时间 + int nMQTime; //MQTT检测时间 int nHTTPTime; //HTTP检测时间 }st_XTime; struct diff --git a/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp b/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp index ab9271a..904cea7 100644 --- a/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp +++ b/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp @@ -94,7 +94,7 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE pSt_ServerConfig->st_XMax.nHTTPThread = st_JsonXMax["nHTTPThread"].asInt(); pSt_ServerConfig->st_XMax.nMQTTThread = st_JsonXMax["nMQTTThread"].asInt(); //时间配置 - if (st_JsonRoot["XTime"].empty() || (4 != st_JsonRoot["XTime"].size())) + if (st_JsonRoot["XTime"].empty() || (5 != st_JsonRoot["XTime"].size())) { Config_IsErrorOccur = true; Config_dwErrorCode = ERROR_AUTHORIZE_MODULE_CONFIGURE_XTIME; @@ -105,6 +105,7 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE pSt_ServerConfig->st_XTime.nTCPTime = st_JsonXTime["nTCPTime"].asInt(); pSt_ServerConfig->st_XTime.nWSTime = st_JsonXTime["nWSTime"].asInt(); pSt_ServerConfig->st_XTime.nHTTPTime = st_JsonXTime["nHTTPTime"].asInt(); + pSt_ServerConfig->st_XTime.nMQTime = st_JsonXTime["nMQTTTime"].asInt(); //验证配置 if (st_JsonRoot["XVerification"].empty() || (8 != st_JsonRoot["XVerification"].size())) { diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h index f9259ad..150c60d 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h @@ -79,6 +79,7 @@ extern XHANDLE xhHttpPacket; extern XHANDLE xhTCPHeart; extern XHANDLE xhWSHeart; extern XHANDLE xhHTTPHeart; +extern XHANDLE xhMQTTHeart; extern XHANDLE xhMemPool; extern XHANDLE xhTCPPool; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp index f7671d4..e9e899a 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp @@ -101,12 +101,17 @@ void XCALLBACK XEngine_Client_MQTTRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("MQTT客户端:%s,投递MQTT数据包到消息队列失败,错误:%lX"), lpszClientAddr, MQTTProtocol_GetLastError()); return; } + SocketOpt_HeartBeat_ActiveAddrEx(xhMQTTSocket, lpszClientAddr); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_DEBUG, _X("MQTT客户端:%s,投递MQTT数据包到消息队列成功,%d"), lpszClientAddr, nMsgLen); } void XCALLBACK XEngine_Client_MQTTLeave(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) { XEngine_CloseClient(lpszClientAddr, 0); } +void XCALLBACK XEngine_Client_MQTTHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam) +{ + XEngine_CloseClient(lpszClientAddr, 2); +} ////////////////////////////////////////////////////////////////////////// bool XEngine_CloseClient(LPCXSTR lpszClientAddr, int nLeaveType) { @@ -207,6 +212,7 @@ bool XEngine_Client_TaskSend(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("发送数据给MQTT客户端:%s,失败,错误:%lX"), lpszClientAddr, NetCore_GetLastError()); return false; } + SocketOpt_HeartBeat_ActiveAddrEx(xhMQTTSocket, lpszClientAddr); } else { diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.h index 6ebb21b..f36f609 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.h @@ -18,6 +18,7 @@ void XCALLBACK XEngine_Client_HttpHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, bool XCALLBACK XEngine_Client_MQTTLogin(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); void XCALLBACK XEngine_Client_MQTTRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPCXSTR lpszRecvMsg, int nMsgLen, XPVOID lParam); void XCALLBACK XEngine_Client_MQTTLeave(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); +void XCALLBACK XEngine_Client_MQTTHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam); bool XEngine_CloseClient(LPCXSTR lpszClientAddr, int nLeaveType = 0); bool XEngine_Client_TaskSend(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, int nNetType); \ No newline at end of file diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp index c74d206..1cde9f1 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp @@ -16,6 +16,7 @@ XHANDLE xhHttpPacket = NULL; XHANDLE xhTCPHeart = NULL; XHANDLE xhWSHeart = NULL; XHANDLE xhHTTPHeart = NULL; +XHANDLE xhMQTTHeart = NULL; XHANDLE xhMemPool = NULL; XHANDLE xhTCPPool = NULL; @@ -46,6 +47,7 @@ void ServiceApp_Stop(int signo) SocketOpt_HeartBeat_DestoryEx(xhTCPHeart); SocketOpt_HeartBeat_DestoryEx(xhWSHeart); SocketOpt_HeartBeat_DestoryEx(xhHTTPHeart); + SocketOpt_HeartBeat_DestoryEx(xhMQTTHeart); ManagePool_Thread_NQDestroy(xhTCPPool); ManagePool_Thread_NQDestroy(xhWSPool); @@ -398,6 +400,21 @@ int main(int argc, char** argv) NetCore_TCPXCore_RegisterCallBackEx(xhMQTTSocket, XEngine_Client_MQTTLogin, XEngine_Client_MQTTRecv, XEngine_Client_MQTTLeave); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,注册MQTT网络事件成功")); + if (st_AuthConfig.st_XTime.nMQTime > 0) + { + xhMQTTHeart = SocketOpt_HeartBeat_InitEx(st_AuthConfig.st_XTime.nHeartCheck, st_AuthConfig.st_XTime.nMQTime, XEngine_Client_MQTTHeart); + if (NULL == xhMQTTHeart) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化MQTT心跳服务失败,错误:%lX"), NetCore_GetLastError()); + goto XENGINE_EXITAPP; + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化MQTT心跳服务成功,检测次数:%d,检测时间:%d"), st_AuthConfig.st_XTime.nHeartCheck, st_AuthConfig.st_XTime.nMQTime); + } + else + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,检测到MQTT心跳服务没有启用")); + } + BaseLib_Memory_Malloc((XPPPMEM)&ppSt_ListMQTTParam, st_AuthConfig.st_XMax.nMQTTThread, sizeof(THREADPOOL_PARAMENT)); for (int i = 0; i < st_AuthConfig.st_XMax.nMQTTThread; i++) { @@ -506,6 +523,7 @@ int main(int argc, char** argv) SocketOpt_HeartBeat_DestoryEx(xhTCPHeart); SocketOpt_HeartBeat_DestoryEx(xhWSHeart); SocketOpt_HeartBeat_DestoryEx(xhHTTPHeart); + SocketOpt_HeartBeat_DestoryEx(xhMQTTHeart); ManagePool_Thread_NQDestroy(xhTCPPool); ManagePool_Thread_NQDestroy(xhWSPool); From fc1c43746af5d5fb9e08769969a05d628fba785e Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 12 Mar 2026 11:23:18 +0800 Subject: [PATCH 15/18] ci:update version depend --- .github/workflows/Alma_build.yml | 2 +- .github/workflows/Centos_build.yml | 2 +- .github/workflows/Rocky_build.yml | 2 +- .github/workflows/Ubuntu_build.yml | 8 ++++---- .github/workflows/codeql.yml | 4 ++-- .github/workflows/cppcheck.yml | 2 +- .github/workflows/debian_build.yml | 2 +- .github/workflows/fedora_build.yml | 2 +- .github/workflows/macbuild.yml | 4 ++-- .github/workflows/msbuild.yml | 6 +++--- .github/workflows/release.yml | 16 ++++++++-------- 11 files changed, 25 insertions(+), 25 deletions(-) diff --git a/.github/workflows/Alma_build.yml b/.github/workflows/Alma_build.yml index c33adab..5b322ca 100644 --- a/.github/workflows/Alma_build.yml +++ b/.github/workflows/Alma_build.yml @@ -89,7 +89,7 @@ jobs: ./XEngine_AuthorizeService -t - name: Upload folder as artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: XEngine_AuthorizeService-AlmaLinux_${{ matrix.version }}_${{ matrix.artifact }} path: XEngine_Release/ \ No newline at end of file diff --git a/.github/workflows/Centos_build.yml b/.github/workflows/Centos_build.yml index 85ee9d3..24f0c2c 100644 --- a/.github/workflows/Centos_build.yml +++ b/.github/workflows/Centos_build.yml @@ -93,7 +93,7 @@ jobs: ./XEngine_AuthorizeService -t - name: Upload folder as artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: XEngine_AuthorizeService-CentOS_${{ matrix.version }}_${{ matrix.artifact }} path: XEngine_Release/ \ No newline at end of file diff --git a/.github/workflows/Rocky_build.yml b/.github/workflows/Rocky_build.yml index bb98369..96a5b7d 100644 --- a/.github/workflows/Rocky_build.yml +++ b/.github/workflows/Rocky_build.yml @@ -95,7 +95,7 @@ jobs: ./XEngine_AuthorizeService -t - name: Upload folder as artifact with RockyLinux - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: XEngine_AuthorizeService-RockyLinux_${{ matrix.version }}_${{ matrix.artifact }} path: XEngine_Release/ diff --git a/.github/workflows/Ubuntu_build.yml b/.github/workflows/Ubuntu_build.yml index fa0f9ba..3eea97a 100644 --- a/.github/workflows/Ubuntu_build.yml +++ b/.github/workflows/Ubuntu_build.yml @@ -102,28 +102,28 @@ jobs: - name: Upload folder as artifact with ubuntu22.04 if: matrix.os == 'ubuntu-22.04' - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: XEngine_AuthorizeService-Ubuntu_22.04_x86-64 path: XEngine_Release/ retention-days: 1 - name: Upload folder as artifact with ubuntu24.04 if: matrix.os == 'ubuntu-24.04' - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: XEngine_AuthorizeService-Ubuntu_24.04_x86-64 path: XEngine_Release/ retention-days: 1 - name: Upload folder as artifact with ubuntu24.04 arm64 if: matrix.os == 'ubuntu-24.04-arm' - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: XEngine_AuthorizeService-Ubuntu_24.04_Arm64 path: XEngine_Release/ retention-days: 1 - name: Upload folder as artifact with ubuntu22.04 arm64 if: matrix.os == 'ubuntu-22.04-arm' - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: XEngine_AuthorizeService-Ubuntu_22.04_Arm64 path: XEngine_Release/ diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 98e41e0..603dd33 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -50,7 +50,7 @@ jobs: sudo ./XEngine_LINEnv.sh -i 3 - name: Initialize CodeQL - uses: github/codeql-action/init@v3 + uses: github/codeql-action/init@v4 with: languages: ${{ matrix.language }} @@ -60,6 +60,6 @@ jobs: make - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 + uses: github/codeql-action/analyze@v4 with: category: "/language:${{ matrix.language }}" diff --git a/.github/workflows/cppcheck.yml b/.github/workflows/cppcheck.yml index f2312a2..0a6eb20 100644 --- a/.github/workflows/cppcheck.yml +++ b/.github/workflows/cppcheck.yml @@ -29,7 +29,7 @@ jobs: continue-on-error: true - name: Upload Cppcheck Results - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: cppcheck_results path: static_analysis/log.xml \ No newline at end of file diff --git a/.github/workflows/debian_build.yml b/.github/workflows/debian_build.yml index 9e49a8b..b7bd871 100644 --- a/.github/workflows/debian_build.yml +++ b/.github/workflows/debian_build.yml @@ -81,7 +81,7 @@ jobs: ./XEngine_AuthorizeService -t - name: Upload folder as artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: XEngine_AuthorizeService-Debian_${{ matrix.version }}_x86-64 path: XEngine_Release/ diff --git a/.github/workflows/fedora_build.yml b/.github/workflows/fedora_build.yml index 046c625..22966aa 100644 --- a/.github/workflows/fedora_build.yml +++ b/.github/workflows/fedora_build.yml @@ -82,7 +82,7 @@ jobs: ./XEngine_AuthorizeService -t - name: Upload folder as artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: XEngine_AuthorizeService-Fedora_${{ matrix.fedora-version }}_${{ matrix.artifact }} path: XEngine_Release/ diff --git a/.github/workflows/macbuild.yml b/.github/workflows/macbuild.yml index 1234ec4..911b941 100644 --- a/.github/workflows/macbuild.yml +++ b/.github/workflows/macbuild.yml @@ -85,14 +85,14 @@ jobs: - name: Upload folder as artifact with mac x64 if: matrix.os == 'macos-15-intel' - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: XEngine_AuthorizeService-Mac_x86-64 path: XEngine_Release/ retention-days: 1 - name: Upload folder as artifact with mac arm if: matrix.os == 'macos-15' - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: XEngine_AuthorizeService-Mac_Arm64 path: XEngine_Release/ diff --git a/.github/workflows/msbuild.yml b/.github/workflows/msbuild.yml index 12ca2d8..55ff8d2 100644 --- a/.github/workflows/msbuild.yml +++ b/.github/workflows/msbuild.yml @@ -110,21 +110,21 @@ jobs: - name: Upload folder as artifact with x86 if: matrix.configuration == 'Release' && matrix.platform == 'x86' - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: XEngine_AuthorizeService-Windows_x86-32 path: XEngine_Release/ retention-days: 1 - name: Upload folder as artifact with x64 if: matrix.configuration == 'Release' && matrix.platform == 'x64' - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: XEngine_AuthorizeService-Windows_x86-64 path: XEngine_Release/ retention-days: 1 - name: Upload folder as artifact with Arm64 if: matrix.configuration == 'Release' && matrix.platform == 'Arm64' - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: XEngine_AuthorizeService-Windows_Arm64 path: XEngine_Release/ diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 379769e..8761750 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -17,7 +17,7 @@ jobs: fetch-depth: 0 - name: Download Ubuntu build - uses: dawidd6/action-download-artifact@v6 + uses: dawidd6/action-download-artifact@v16 with: workflow: Ubuntu_build.yml workflow_conclusion: success @@ -26,7 +26,7 @@ jobs: if_no_artifact_found: fail path: ./XRelease/ - name: Download debian build - uses: dawidd6/action-download-artifact@v6 + uses: dawidd6/action-download-artifact@v16 with: workflow: debian_build.yml workflow_conclusion: success @@ -35,7 +35,7 @@ jobs: if_no_artifact_found: fail path: ./XRelease/ - name: Download fedora build - uses: dawidd6/action-download-artifact@v6 + uses: dawidd6/action-download-artifact@v16 with: workflow: fedora_build.yml workflow_conclusion: success @@ -44,7 +44,7 @@ jobs: if_no_artifact_found: fail path: ./XRelease/ - name: Download RockyLinux build - uses: dawidd6/action-download-artifact@v6 + uses: dawidd6/action-download-artifact@v16 with: workflow: Rocky_build.yml workflow_conclusion: success @@ -53,7 +53,7 @@ jobs: if_no_artifact_found: fail path: ./XRelease/ - name: Download macbuild - uses: dawidd6/action-download-artifact@v6 + uses: dawidd6/action-download-artifact@v16 with: workflow: macbuild.yml workflow_conclusion: success @@ -62,7 +62,7 @@ jobs: if_no_artifact_found: fail path: ./XRelease/ - name: Download msbuild - uses: dawidd6/action-download-artifact@v6 + uses: dawidd6/action-download-artifact@v16 with: workflow: msbuild.yml workflow_conclusion: success @@ -71,7 +71,7 @@ jobs: if_no_artifact_found: fail path: ./XRelease/ - name: Download Alma Linux - uses: dawidd6/action-download-artifact@v6 + uses: dawidd6/action-download-artifact@v16 with: workflow: Alma_build.yml workflow_conclusion: success @@ -80,7 +80,7 @@ jobs: if_no_artifact_found: fail path: ./XRelease/ - name: Download CentOS - uses: dawidd6/action-download-artifact@v6 + uses: dawidd6/action-download-artifact@v16 with: workflow: Centos_build.yml workflow_conclusion: success From 96a9dd91eb9f44ba84b44766e4d3998295de783c Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 12 Mar 2026 11:46:26 +0800 Subject: [PATCH 16/18] ci:alma build fix --- .github/workflows/Alma_build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/Alma_build.yml b/.github/workflows/Alma_build.yml index 5b322ca..942b28c 100644 --- a/.github/workflows/Alma_build.yml +++ b/.github/workflows/Alma_build.yml @@ -45,6 +45,8 @@ jobs: steps: - name: Checkout main repository code uses: actions/checkout@v6 + with: + ref: 'develop' - name: Checkout dependency repository (xengine) uses: actions/checkout@v6 From fead8c17f90e0c6baf16d38e044d1ad54a8499be Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 16 Mar 2026 14:01:35 +0800 Subject: [PATCH 17/18] update:readme and CHANGELOG --- CHANGELOG | 19 +++++++++++++++++++ README.en.md | 2 +- README.md | 2 +- .../Authorize_Net.cpp | 3 +-- 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 78a392b..b9b3678 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,22 @@ +XEngine_Authorize V3.22.0.1001 + +ci:更新库依赖环境 +增加:mqtt协议和心跳支持 +优化:发送消息处理流程 +修改:http api函数不区分大小写 +修改:启动参数不区分大小写 +修改:加密通信类型 +修改:序列号生成服务器生成了 + +ci:update version depend +added:mqtt protocol support and heart support +update:depend library +improved:send message process +modify:does not case-sensitive for http api name +modify:start parameter does not case-sensitive +modify:crypt type modify xcrypt to api and improved app manamgent crypt code +modify:Serial number generation is only available after the server has generated it +================================================================ XEngine_Authorize V3.21.0.1001 增加:http 用户可以获取用户时间信息 diff --git a/README.en.md b/README.en.md index 118ae91..2b7e94e 100644 --- a/README.en.md +++ b/README.en.md @@ -30,7 +30,7 @@ Our product is completely free and offers both free and paid technical support. Our feature list not only includes the following but also has many features in development. You can refer to this webpage to learn about the features we plan to support in the future: https://github.com/libxengine/XEngine_Authorize/issues feature list: -1. support http.websocket protocols +1. support http.websocket,MQTT protocols 2. Support Encrypto communication 3. Support User Management 4. Support Serial Management diff --git a/README.md b/README.md index e8ea9b0..3183dbc 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ c c++network Authorize service 我们的功能列表不仅包括下面的,还有很多待开发的功能正在计划中。 你可以参考这个网页了解我们未来支持的功能列表:https://github.com/libxengine/XEngine_Authorize/issues 软件特性: -1. 支持TCP,WEBSOCKET协议 +1. 支持TCP,WEBSOCKET,MQTT协议 2. 支持加密通信 3. 支持用户管理 4. 支持序列卡管理 diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp index e9e899a..204ecb9 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp @@ -217,8 +217,7 @@ bool XEngine_Client_TaskSend(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int else { int nSDSize = XENGINE_MEMORY_SIZE_MAX; - RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam; - memset(&st_HDRParam, '\0', sizeof(RFCCOMPONENTS_HTTP_HDRPARAM)); + RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam = {}; st_HDRParam.nHttpCode = 200; st_HDRParam.bIsClose = true; From 1b7673a661f6175d986199861413148301bb9d90 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 16 Mar 2026 14:14:23 +0800 Subject: [PATCH 18/18] update:document and version configure --- XEngine_Docment/Docment_en.docx | Bin 152746 -> 155896 bytes XEngine_Docment/Docment_zh.docx | Bin 158932 -> 158924 bytes .../XEngine_Config/XEngine_VersionConfig.json | 1 + 3 files changed, 1 insertion(+) diff --git a/XEngine_Docment/Docment_en.docx b/XEngine_Docment/Docment_en.docx index 5d645e97bcce8ca4147d6bd5b20ca11b6abe537c..dc9ebac0269252cdd4d63776729d91776485bd2f 100644 GIT binary patch delta 134974 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 z zOGwqrvG*$^4tV4h4R}lho>z=trX^5ZBH@ciihJeC;d!J`xESVjTu(BVmgXx+A-^%0 z-`WWaj-ie`IJkl1`ecjm$w6$f=d*w3?|@%b^oR|m|4<^8#ggLBAa&_zG_^YcpXOWz>2x-Dt}N>fvcsy%YU z|Ly)->4|&&G8jdw{G|EKU0ogin{7pZ*- z+js#kU)!F`flWsuQ*84xoLsw>c`iGp{F{SznT?HqmChhUo2ZBG`bU#y43Y2`xlH)y z{fnSc2ArMyjKPku`nQi@Z|e)z?gG>tqYU*ieCo!&{&Ug<-&I zlPtxZYx+%1lJnOeV*L#wsYwwf~JIh^TaX@Cnrv~4Dj$}SRZ1atg zdG67r@#?x(+}j(>9G%w+l8QT@jy9eS&z{t~8O&s>(;WXl|HcP?u}9`^KCS%3Ws6)o zkJ(a4Ijb*z^q+I&@LXRH35=iqg$1Qxs>{hoBpKZ3i5tTY2VMu}a(c3s^ppa(wk6ty zUoN3nQ<*aXsAQ~P4Cdidml0L!yQD%m`fzkjguJ^`8Z<<>b#fu?`2q3dC*DSo1B$bN zEwTo&!p*RA%8WTRbJ>PE-%;)Ma#$`uF6Z~7SpgUg0 zJhZo&-}9a$)FQlh<|02`Ofm;LW3SI_e_z+W z^(WU{Vr^FYh!BAc%Ai!yYLPIK^H$B&RI3vV#;ip;?j!akdUkiKBmUrWjyBW0hDrgC z;0j@y6p5H=ns$jIccz*SYy$}!@Xu_Ue7L%!IlZ_;(mt&y4@WbSb~3;+Aed}@Wnr?f zd!6&DnGyGLaPs=)|59YM2`!=A`P$SNtls}pquHV5|DP8Ftb8~q)rZ=56&vc-?GdL~ z7j`PVbMa^>#E`EeWjJ13#P>xf>3OOJTux9D4nhl)evrpL=!+mFKoC)IbYro#2T>(<`0A2r}4 z&Pw()niW}J_Yj(ma}Yzwx5D-*qqEYpdHNH$@*IWS6CtD7`p8ZC2utKy zJ5%nX(ZM$VTu6*a$aZ^8E$+7$_fw+2kdXpjep3opol%=50DgM_4k;vexA^%g;QXH_ zndca(b+(GzmC{wy)bKCh;*f@jST`7v`U;_rh``q(%lL8B_EoEiAUkzNl6)+(i^i88 z;d5dv(%fH07g#lKKI#208*Tn3Y)LjO{#8ZMa`ip_oGuS zyAD&a;Nr`BTf>rX%}s)T!A^0677C|c(5wab_oRm9E{A!FV!1+HgnV=&o8{lH_HBV# z;Zrg%X`UkUM1@C!Iwi~9w#g~)Z_=~+Uqb4-9Mlr$+1KnjJL^3a4 zjUr7Y^DB=fm@I_(WVvs_pq0WH(x*cc5%PKCSC<%5|Bak$=Dpt}`q$>7f$;N;p{b(3 zYsgrRiAKEkooG4NjOk{C%@S5`q3$?spLwlMaQ}9Mw=@(!xG}kl(Dr9T7vkbn#qFjU z@Rs33w0QO}OJ6Bic-*_90O+x$PXkzcX&{G_mWw3?I;>`39E-SEeIYCWP^!sL&c17tZ7|kIH z1a?^KU1Q(a#FOv6%jC7hnHj?YC(M)ixv;*c`7Jpt`1L8EWAQ{PJ3k++@WhE*U22(~ z8fb1sHuM~EE$sgc1n=qS1@n~q__zkG^Y)ytcP9?=Y~OpnOs|_F<+d8-GdTOgbu6=XKoAvp*P;_Vv2^~;H_2aOZ+4Y0X#D!hiHTNWSz9C{gj;}> zojBv!Yd?R)EWt!lBKQ4#ib#h~a^6dgfmdtA+V7u<6SjBm05u)khNO;}$1rB`^Mu-U z%$~nWU_oe+YJzUa{2ixc0$ujErF|?H1+8h3e+Fh1zndCY2#POHM~6VB*H4Ko@m=8dVGuxx?1p|iXW>+dOU=0 z%z-Xt%&Qp)+O%j}!zOW26Ahc3;4_KYHf+u-qvD*t1L&v3iL3_g-(7QDwl};BgemyC z)J=$=bOUp*kG`H2_h2B{g(!qXZ=v{}bJ_X5GvC7^ef>9fy8!z^8Ixb?9LaL*T7ftr z=p$3-?kEtA{Psq#Mv9)@4Q1=musps2D&#acZTR))2^SyaDuVhfx8E9k)ccCz@6C8X z5PHrKLx2QIR1cxk`jxG=!E}reMOPR@Mo8pissb-(mNAZd@l(^b-%#ra@7DD@S6${I z_wlGoTTL#!@6*upw?Lw>@KG~JYTTELLG0pmn(q}#>4MBxIUdP!{YCHEldxhmU`>cB zd?s*IlYwR7vC*}k4@hX!(oCQ1aW2jt|0-LK*Z|pG?82A6+%m3kGa2pZ(D-1i`(%s{Ob~0PQuJ-R zse;g=+O+27jaCNE5HZd)_1D+?mlPx-xvSXo#P@6Azo5~4eF|bdX&@uLgRRsS9xtQw zzujOgek{wv%=S{%Kbf^F7A(lN`aV^e(E?Q2m1(J0CbT@tk7P?V$RFk~mVTsdz~0nH z*fpeDjN79z=aEg(_HJr<1RtJW9C(-4pOsGMu%g*EXq0E4CU`O0-|64XmKC?s4~i_o zgck`VUV9N*Lg-E#>Ygc8M{qD(a&Fq}A~0(t+IMM)E7qePcwZl_MaJsn$0z*}5rN04 zMCGchvVH0RJt*f@55FGT+ge{08@!?=Lg@$Lwd0hf$1AyiL=4_+C^=(n1ieo~c%FP) zLNk*XwFGfh4K1v#ySeLu*(MnL)}AL+;G|P+mN#V za?~*|o1|qP+5KQ#XL807GJgNaW;JAL!?A$nZ%)+7ffpgpW+9XHhEn$lwJ8( z&`7A2hLo7^|QB#$N3N1U?F!#!^wH1HXE81-=rg{i+vYDKoLYQna#^YPWaX z_ba7B3NWrklciMimSXhi%b)$?i$D7Nw?F;K{Ew%YH^N-H`(8z81R%g@vOe;a+VPelk<8S}( zzkmBL|MPGD*N@-+)qi~Zw}0}*&;RasKmQ*KRHe^au#{oWR9K_Y1JUtr~TxE8C z=Q`o6Y}yc&0;18{w*N`CzO{MdwG3HGU?PLL`Bf1tOUvhD@b+(h^yOdt@D|wNlxU_@ z-~f{!cKS)Ddn%5O220j|?|;7iuRs0WKmVmsPPagk2oq8&12IdAAFn-=WyXIB9F*|_dRL7hrVv6<{^PZQA_gQN>Dv5%?JJEXdbr=vbQ4Fn(fL?KTi3CbOVEfI>xo0uQ zI)lNMY2}c=d)I8pKL%yuMxi?^#{-ZH_eYPrK25${y2X4d5hP+PdA-eK!-PN<^)*|7 zSc+&20{3&NGv?2KQ(j*%s(WoFvTHsSP4hCFq}lRMEg8(Q458xNd;J zIMGSiuuF)nDZ7JSKTPo2@Uu8hMBtufp-|fEopyW1AUN)v4s$QVoh6!b*5DcA5^VPS zL$@V)Ml&#uQygbuJ3j`*#cXYk*Sy3VQVzp4`dmT0y=*ssB7~H2Fz%^!8%EwI5tMVn z)6jV-UJ4Tlk#_Q%MuDR)uf{c-2S^j|s^nUTdq&X=umM8Xssu63ZCJYgZHw+S#Zo z0tjsbx{Y`Q!461vAon}3)5iFZ*B{0kBQY8NCozLO`KRCe-owNGnO_H4N{P+_Pob&+ z{bcmsGd>+-16ebQ)_+1Y3HNk+Wgo47on;cx^$Y0tz03^6q@*HjM#im= zqb70$o+|VdB>uFlg6 zfD;8pV0jLDT5)KZ&POvDrI|4vR%_OFT!Cpyw4%)n=6XRf}|?kK*Afr ztR9d-ki=-cAvuq9y=we@F}zlpR(|5OF>{rF#@YIEK)v!B6f{n7X#3C0SRgo&TGyP{ z5NZ!Z-bV$-(l?$~xWe=mK=vwd01|Q@ZhmWZFvHm6JV6xDz=ay2@ThFNLy3)oX!0o8 zPjm^%AV}&JT^~Dtc5-uR=a(ISR+M%UJ?S5HkKcF}B9Dh;&(p3kmV}{T%UPp}vm-Zu z{mp!o(iFsj=Ni^&=2M%~07;X%JU5v6XO8E5P)V>f)?SkdVHNCrz+#@TIBdW_{B{V1 zpc=&uCas0{31S0jqn_=}{zH{|J%KUcflrPCq2o|mr78@iDUxY(OSEzTzq$j+q0o|S zX5!x^R<}O6r*Rq!%^S4-eXzXE2|oaT0+MtiQ|hh|w5(Yr6M!n2Xp}X$r}~{c1v!H^ zTumg|a2~z&Sv`s+0#t9LV>pTBM1ZQ=K=SO`0Kv9682WwX{7Sge3bhIf9Yk9*6VaK4lhzd1#@_7RB^WDuz&E^ zZ25>F(WH{A7W^e7C9w|NueBO~z&8Ycj~vf=phA^0u3MuzqC)VOF_FPcG-ynDZiiI! znBAwERHU&|&_TL+C{>OfLSrrh4L34lXY6Ur^W%L4Iu*tmQw{2-TlyPm0wvQ;raO4~ z8z_!hLhJ3D9cnYK;BPRj?J>`WD_9g~I%e5M#;PiH-sEwr5Zp*%t?qAsPyu2E12>rq zFS;;e6e(D5XBUr2AJiTW&+#{$)USa3vXL=X2Nb7?lQTe!5jjP#xgH5z?2!N-gCt8D z>>;q2eXaX3G56zrJKEwwG0?&&MGrP%l5+*ZwYy%~Ew##c4x6~CEGr2Kbsd9jhoq7x zZf1f@cD_z0lE!JAq?=!VdVnepM<5twaY~x(kWtMog)qxfl{A?ev&bzSIzIDml$64l z^G0)gDmbN(2$kr~Pte7JbD}rXW?IoH6<7kfq2^P?)33wr6@lTZLTlZ){9QOkiIO}p^*sxraK?DLzT)31t%WGe5}E~nu1~ljjN_%2nI^W< zZk=#B+P&Nzz8L05zUoNxFfGLRGvCVPpUybce=% zZ9y>O8m*UC#|S*>d^U#O6IPyPn6GUz$0V!;XN>a>w>}gv4&K}T@S|rRsqH7v9)AOE zfAmon)9n}Edi>3Q-E9mZq}xgS;rn9y@wYzu=7-x5aYDAgnSBfUEek=4rP-{ZM>vES zxK0dLs3r*(z!i{$;ZTirEt0xCGMq&b!wJmLxuq+f< zOF`E+bgpu!l~c{Ip>|UE(lj`2aE7fa@w!9}UB}9u=F56XSefcz0rEoS9u6sk}?AO%&ySkQ;4058CNZ_9re~BH&r9hat}-^NAzf4jP{bSX3zlX11zSWy)t8tqt_j z3y*x5=4${WqpK=GH-o@#u7X~tc5_om9UIzx#-g2~m_2CB)scn~Aw2hSbKy7~@l={{- zGOCAo7Hq^Zf?i$B*MZ<==pr(XtQP{1bHLcftk8suULb+!Dqb_uKr`;;TCD@C$&i>s zip(PAvr>sjj2G+UTi1z`XPp*EIFWZ@kF!agP^25dDl6=9Fv(Jiy{djTa*v})3Pemc zVvk;bZI5FKCJa)aQ1#v1<6vU;xY+BAd1LoDuCg__TC41F-fSjSENQYSs}N*MGl~l_ zPAx!_35L@eRrpbnMEV> zcMs?RMX5xy2gOuiopNNk$Orl~V@%=6<(Sw>11w32l39^KWTV|4cyXaL)5*-L5RoNV zx+Z%o<2AXzhQqCQ{dw~dBZv^mXXECG#VCa{C$NhVW0a?y%pg|os{wF2>3o_;quFPF z&Bq6)kiKeXdmPCgoLvk@(J(jv8BUL0cSk4D@O!83v*@@#IP1)|NnZi6X?r6SHr?Z>*B_0s zS@sG*jMiD@6%P(Oz363b>2qyGiaUOP{ewR@|N1bV%2>+rH5XNCz|i#Ggi^re+`Xy% zWSa4=Orrp@bm$&tmwy>SSq4N_?jO~*4i8E(oTv=xdXGCp9n~T4EJ3Vzn(-#Pr+J;s zP_Aee2k!D+3Cu7V1%wICl5p)wD&w(IW4;yo4QJf=X-yW^`b`z(NI`__ZKdFUlfz)u z%A6bqHriNFq&PFru&A`ND;2uiPFCNSU=g_ik&W&vBC6IK*&&D^HEzG)2R? zuF~pV7wnNhwA&lygJbjNo8ROpvOrfQDoy?JRjaIH*S-9>I~a~0cYC=Fw_mm+Tv-o0 zv^(eBs0?1(lO-3}?O%+dQ#*h9p*z~>jwurz_4A>NrH(qEVBHESz2i{Xk08?6gd;Sn zvrSGh@{0w^jB*{<+rZiW&8*gAnspkvZe= zC?-M6lpz9tdys2}1ia&6&OpRmJub+xPPA%r#LkA1aW<^zMMOYF4C0NQ*zB^MriR;l zAVpJP3)mXWoDa3Me%)L!K%6$&%|0Y2U(V;YoQyK{flvT_Lm}Hs)PoodFcr(J>7B|g zo)5TG(o`i)78-bgsX>guhL6x$-XGP*cKk!=Bvz7tfxt(RehvUhI8tnV{mRRv*eS?X zVx;NG8<#kH)m+d-C=qVb#f>-@3ADGzxeU9{$J|F>VIWBiLQhxlt1(n869C*U7+8Md z#B2sLO;bsedUJU_;`eNJiXFpafal&mf0`MD#aF8H$m00DM>;QC`L#v-e!nxV?dHB? z$?PH-w?D76KrZJ99x4-?N#BBT9d+#5-=QlWo;5b2nCs;H_ zviVUg4>G`n5@;0S1~9tkL^{m~-}uxKprH`>E+iaOsQ|^2$V7yzAS%J|s`H16+XDKq zual8kD1XWggb9FUF4f%IXZqwoqu7@viOtlPj-5>BiLJ8ci=9m3;bb~`ti)qm|Cx+Udr5OqfjUQ5Q++jVpro4H&oUJ! zX_I+a6~{mEB<5=Nu$aVFQZlQc>jrpPRDEecV0QbN1eL{%jAu+%BA##CQUD0a9DSNv z=6?!d2BbBjS>_XFNGX>t26PSD=}%lA=JL`d0-n(XKt#%C6Dt{4fMwimbE`q4C6=+@ zT+wSb(Bw-AV9ZT)DK6~~CN36OmTFWOR-AoMal_V*S63sTs6?35zb-d7I=XZ)t7b_c zB%w^Wk1Mne99)ht% zK-9W_`#Zn@#mp%7z#f@rqdTe@Q0tqxTBUa@OgYTl!PRgSF)C_Vh8!zd4GS<8N7*}=A+mB!6%X3ij1l+2@&lN`lJ3~|MY>J z({^lJ2WO){HZXMBfAz}#z1w>*uE>l=CxiaQtCOe`UG%!&yU3&Nk$wD_(vdYFqTiSM zFLu>~=&Wx8L@)cD!BJ#?Ke2x~>JC3Kzy0Hf2PfTO`OZP{<=5TQ(_)fCZ+{ex`Yr_J zxMolUxr)CRw;7kef7Y>xou0mlhHkouxn+LqoaQB_lyqe6f0Yy z+&QQrP+8hw4nU<6 z-k1@L8k~^f*;|WgEVO8__+hzM_P%~*_eMXbjB$}E6gSu+ zj#9{EIixbcmQxEJbB6rQi8w52_6$>@V>w&?Ky*xi%-k~9!)3R2f|jt%^*-BE#AYdt z(JI3qE4W*TB#hFTEK-^=PLQ_VfDctmI2Ta0I>ky4Y#C`LpMPKJ(Y|gSA`)g9pD_p- z*9btD71an~jHg!*RTjICepwy_a>&v3&Y%ef%FRr^J-JE&9Ccm}%m0r>^wj7_`>pf7 z4FqvKj{6k1-bQxEPH8*r<_GfZ%1Y<`e!3J%pXOdz5V5U-&#bs^wadjXl!tME#ZB9&@Z zltip1ggzhw#gZ(=Gx-@LNiiq%DrM_7lw7~Lbgj$gl*+t?x#U^&K^056@Cg#FLCu1M zWN`+43V>=;vxUp=*Q%FD3{&Zq?_2k_V4V>Iw$GSHlz$?S39s{rI#sG)6K9m_H1mn! z*9od4^mLYrCxc{$rBknf)f(V0LdhlkUeii3N;pcr#-!H{fA48tW-|HFo=KKvDDg?> zs~>hNo;K!TfQNpGSSl4}M{d$=n1+7usXc@CB|hLF#c{e3jAKkUOZrknZb9H#LL8?A z;U@Q@Nq-ES>3?)Iuo(FDUQ;}lz$;02UGQIX0DR;?asiSx7%0op@T&_}fC{hKq;-Mn zGdmYCp^aHN>&r4Fh)gSjc?FYSCLL48Vj}gPm3a){bU~fT7`p9OTEx%i-Oe2x*F)~B z4#Ql28b=~GSA2?`b0f=vha_I+jNSNVzN8yJkAG>ZQM!?5>NALyjQhf-#*O;XS*K^# zA`<(%(Rn^N>kfxDRqfM>^uqF%v%Ke33>ZU(2@ICevFd@58$dJ3y%;3rpv$?pFX&LU za+>BM@7I=A-pp!n)z?0HY=^7f{DLLzscf@HqG8P$p%t_J7SMCd#jo;_%a3$ABr-g5 zk$>Bq%I>fjHak}as?l|Laem$(Tsys6CVN+MbNlzte}&EPv=RRPp!<1V2yH2|^M&3K z!$XKM#yn;?Snr+Mk`hVPd8`Bxg|jAe{K}-nuWO&fD}psesKM!!^K%l9 z)IaK+oqz4ZaOJyWE7x7Ih4SSU_xq6xC4an&nGfnQGp-|gEUu+*Ke+3WXw zP6!#nEafs7#I-61VKFDYu4tjJdDJ#Ez!EV{2+SMzp&*wz5d9S;y4dr z!sr(J9+V)A0wBHO<@NfjGrh4ev}K=*{neS?SYv;+{7OO8F#f8?L`1%Nv#S^Tsx!Jd zp^#r11as6B&obLDGpHQZ8GM<4`|h#h=Wz|$p?Pt)cafKMdWARZ1mu$MFMpYSkoWS} zwtDT=ATM~|d}-dRtF6t&`H@+h2j_$Sr`;p#XrFZKldX*ApLK_$hd!Dn(J^GU zEmoUT33!@N*kqweHCK|QObRBOEDXEJl`Qzpd5Vt9-kmEwk1B1l#^H~lLSZ-Adi^V$ zU_xcRGkWVSt+BFH!Slj8;eSGgwu8L-a%GU~G;r&>i8jWSMqo3X3XrL=p@0csX2)9l z4Ft;V@{v`ls2k??;05fZjtZ_T|reSf@y1wCzDc}4L8#0E-mS!em;z@d_&t+)|t;^>-o?UA?go|$=w~fjvLXD zvHki3*HWYKI*n?2=)o@-B{(t4yHB4XBd9?!*B+^XNu(~X)mFw6p ztdUDoB8-o<35N(z{eO&H3RDuKa539j1;*c$C75ZzLr3!c4iPe#5*@mk;)Nq*Iee&{F=ndj$&V}J7q+i0raJAD&%qS0mV zvdg<|_J(WrWo;DK&aC4i+=JW@&1ZAQ2+1S~H}7X>6@aeRYKusMv}|&^@}u3cjLxl? zE(H0VSGkuM>VFvNEN)O~RcX0J07`XCn@cHL7CQ7ZbhuPWlXD2XPJ(Tdd&UzFgpl#2 zGbEan1}`fnBM_52Ft+snv-f4akt5l9e}$+AFF;8hdoW~F*+DYcUAJpdm()vPFes#y zR4H$#GBvqWmFCHSabaH@7cgMJhK(^`KiTkdF^~3x|9{Q&T>lJ51j$TgikS*hkx8oD zJzdi!DMdz{IB}NmY({*#o9rBifSXn*?NQ&UCeR=ZMELbAd~tpKoE?ZF4prEq$Lc3N z3Nk1o>Tig<*L|Gj7I~5lvzgw|Y%r*4PL(^N`-^#q+G$Sb|ZK@EZ+h5-z_ zDQlOqX;R}JLxqx%kxm+wiycM1(J1TZn{v6wI3$U3D#&luIgE&+32YyVtnL$v;Dew@ z6r8L;k*-MhmM)k)q+Cmh?&n3)f0}ub1R9*xA573-(e=PcC=&+KHmztkFmmbyMk4K5 zV}7U4!9I6W1B`?))#kBn?%URCUBDL%Xi8*@m}wozF%(Yrp7YCp4IJrH2`FYf)uBI1M)lASxry|e_^Uv>N(F~ z2ivL#%>bB|v zH2@|l3cG(?b@3J^P=Z;Drrnk}v)hjA0xE!o2?qW~x$R7x)WK9Z3;`Fi^Xyp@R$*Z* zFy@`ymQz<~5ep7eza{SVe;g;b=75L+;IH4#PEiizoHGCuV2Y61gbbW=24spcNc?8u zdSdbhIRivV5+<;dmUWpk;KDp2rcn4BowlQ^iv^=R@>k#7IB9vkYh{7x+Fxz7dwR%% zTwMh2%^z)!^afc>F;3lv2<)3Li#f<=`agqfn{YhWKP;N!jVGqbf50d^cS>?(k>ZfG zUJ+-J%?fsC-hqPJ@l7vAnlSh07l&J#fD&v*ug1Gg^Y@|bSlzC9f-weKok>}9lrIkv zh{CS*Ixt}VnH4-=4eqkr2H}DMLXx)GW}?nKUkVjw>%&U+x>~0ZK^P)PK{vAxo8kG8 zM~Pm$?*QytdV`ldONQqL-!J_&m*b*RBykk)t$Uh1hLv?S+UA)W_0ERtW!5DPJj_?U zlNe_L$tQpSl1p*-v+ z*E)6H3o+)Aze8(4ekb5Y!c5!IGVV*^$!9-)WA_V*qX- zM>yeOH!HT>fg4I8BviI(+&W!dBt?kZuL=&=ComMAdef2J+gpyAnSyz4#R`ckeR#M9 z%ZasP5I%ymJXSL;e~&XPp_CnH*4R=2a)0hGplfr5he@qJT;%5PohLKcl z4n1-zd18o()L+JVV?V2UbRB9sr!l|nIQVX!O;+!Er8BiC?m_*8i zLW_;I#i8|_Db9cbiRbw<^%i`OGc{cA?zKV05g1~(DefI`r2yaxrft>@IjKPaLlQ&S zA|_qSm2%h-ja3?Yf1E*SHL3w&o2ZJ$7a4j~IoGMpRaJOh#xBHsfY_C<^`;J%R@ z2%v|*2v*0imwII0@iz6ffeA zDGt*F_%+S9tn0UKkUB{vjrOK*b9=x5uWt4LMS}7edG6Z&aC?A6v4~QCEt6DiB!5kB zwd8I?(UBv{j{tTejMgVipwzDy??{+iv9o-Dz0-^d#?mCgo+p#tqne%6U>wp|*!d5g zQZo#P$`mQKqh<_WI%P^@MIeax?;Jn;c6MCTfRqtPJ@?-FRnu%FcOp4qkzYKzOPZ$F zH~({@1)~%Y;5jL)zH&h>dWE7`Fn><=dTvfG9}XiS(ca)8H_i;8nOE+T;Ce4&f*YqfxFw|aKv32aW z!a*l5SH)2*kT-p~Qviyrd8He3!) zZl<&BYK3-{K6Fv0UGWoJSg?UDwC?3e?9IS!3_z?+I_D6s?PulFc4c?TZO6AXCAW6o zb1NpN`~3tjz>$idY?*0IRSHOqx({dYnmy+TmXyWNHz)0+pH)5F1IHL7lKMWfJq{v! zeyq20m5pW|;)j3!cYpuMg=PX1B>hdnD7OA-Jn8>9>0OtMUJR_?36p$38J1WRMEnrw z|G^`Q0m>n#^Zw7-%~$7lLtNDaK@g{rBHoO*76?)Uu|kv+ioDlJRPOdcdva<%D20$h z`EIS`eKT9^MD4}q@h%^M^gsXMZ+`ig|M{1H|6hOk!ykY7kAMI4;SY4O!#ROkruZ9U z+QKP}j>nUkJ_D-P-~{|IAcPXW70*7mJe|FlT3X8M>wGelQ<4#ukR*}6ZteTu_u|rB zU+2h?k9+rj|M`FW|MIW@=I{Q?ANO?cNP-B0-s5lW9L5hOr0(@B{_d~; z#h?H1KlUX96@O-F=)K9`zRzN$K4<4SRvb79LYOEjBj7EarlozKy%-IQ{I>&Y9JUQq zqJ-dku^D%>ZKqsU5JwoqwkyITS95Q(4>i;riBim!zY@;&B`gm7$LRE8joH2uLOfjYFzd{X6}?=7)2DYFMtvj&0QtM)B?QDv;b)oqR3w%UVF4q zpRWg#n^j_D_IvKsK%6F6;z#TqTWVyZlWa2R4Nq^b4KduZb5)q6Vfy&Dt|eogeKRgh z_Qd1g_Y5~b*4Z}FCNbsGcNdfKa2oX=HREFek%XCISdg5p?LI;)5y@mmUTsQ(QhJTm{fC5d7fb4KGw50M!<$bNsnM9G{O zL5L8-)LS7%dyMe?>z9M8!R*exuy?{mfryj|Z6|!;CIZG0Q4BxgZI*!H_xgKv0%J)E z8B|{YVrVvAM#d&3A~e_Ebc=%kZ3(k40V6YXi1nj-=f((la-RRSR%3f42?mHhVuQIP zMm(R+##e?8mHzjYxl zN0EZ5=Th+JMFP>YA|bAKeSP@(W^!{lo_uf-Q6khfTI#tU%X6Dg^Ndp90-rz?C1E1H zxlZNr6savPXTw63ri$$1Z1OylXFsXYhr!4twoFADrNDPz+hQ$0WRqtw&zJ;Ghl78i z*5_RMEd$dGQYIQab19K9O#lS+7l$ksVWa*|3qUZAK&(7BSJEt+ho)Uv6j1F_N1mrw z>x1~FH+4P-s_7t;#B-C9=Oxhm%#9%lM``N0<;U{{$p37$&(H>ug+VBp@XZgmgDlTh zn-x{BgCr_4fSdPqEFf^FGa<3*1L1$WPmB>+W&VQIB>H89`h4r7g5Q%I1oGZ`mZ_P@|aJtJX5Q-D(d$_b+ z#UhmLvJ4!BX+%9wxw6YxMv-0C0WoG0Bj57Ps+wH7I2o%5Dj}mC+~{SP;aPumLukO<#YP8~{c_c<=_|Z;ub&s^hP}K498xc9DcMLKp(iElo)01~62dPYs-yA^35I%^N zHogy{H}AeaKHwZ;>ab?6{oRDeeg*2b%6}_c3|{7B$HGt|M$AinQ?x)XpZ)H}r7Ti= z;}UY{+jd%o4xf>bK`#Eu?|yf9K3**q-oW%KBq)Zyo#6$B=cEc#5o3Ru_)hy>g@Ig3 zkBtz$RZOf6-J*`T^3z6wRg@l!{8#K->f=mknHK3-e7v^ATR*WY*&t_lD701RJ4m<- zeb)one5RxX;cgUxe;^WufzkKPiWdlb}jE(U9D*f$7hN)t(U z+|a|pj1l(1cMKC;aC*a|#=#HTb+{Ou_e=oF(Kr!{qqs{hMg)I}us>jRhiqPN#4P5q zh+yhF4Br70grrd%5`S~O+B8Adc(=i$-1?trX)Xj#9<~l z9F4~F^K6tE;TjxI#EZ8 zMQvKnXBWZ6cyiTqvhz8V(tizSeS6UWZxsw-d8q-}wn3Ajb~1kxfHii?tpWt3F<^Ts zQQR*j3Y&1NQ8=j^g9p6HcOi_#;Grr~4GY==2?57-QuZE&Y zRc|&+0t%=Y-B022-bpf@z0Zv!w^*U^8c=Bzs$V6rq(?5|3>!IGT@;$V>? zoOaUFY%r(*MwoDIYj<)x?t=;lPa#6Bj^=V3R1jl;qt+Ye+wAZPH@+BF(D1gSAjyW= zo!PAw&iazK-i36lnQa1jg0Wri4qe(doOOQ?p)jKU<_$jrXC31>4HNqR zx3k{Ad)qhNX_lk{Jm$Do4QHLflyUH=Gm)Gck!ll^G4G>09<#HK;}A)q9&xnNpR>-R zDBaM)R_ePO}6K3Ncj2=h4EtvBl8 zu&+%PEFJb@++Bm+o7;|qmxDFmwbET*NSz8HK)6UF;=7a1F5LBcnVEoTOAgrl*d02x zUfuPtl~Zkqf}xPg8_wFMx4y=@4Ibr|m`Onz(XfA|$U;}#{o%T-*gz}FwNUUb5!!I} zU%z>+Ty`9#jHS}ItFs#!=x*P^5V0ijJVD;gWwB#)Hb-{K0i$7%RNOe9M9-fqbn zu;#ErM4}V`=DVAYQ{I{i0T%3GTA=ueb&Bp_SS*dvZj(-2iiu1FpaR394Kb|kShfhh z&St@BZ~AjkR2aFG7&TqXCRTJfeJ&;8srR`g^&v)cIV+BbJpf`9htM8_>A7cz8Qyi9ZIilK|HKnQD`}6U1Me?(8_VjS_@qDqOll>|+N;#+xvr*@4?2 zrVyGQ=q?7!zSdt(mCDV;Ue5{b#!3k-hFac+(vN?%g_V@l+b_nTYA`c-SzwVgZzFJBscn*gY&gkaN2}jA$=tVU|+rA zP=MsAmVch9wv#l1cjI|*-WvtksCTB1#54~q-P62F&~W@=FgjeLNAb(YlkB5uk8?Je z&oa{}#?%5&dgnh6MlKzMC?iRnD&JVi&ggVCpU%uEzrecdfo9%$W}1H~4o$0^8~p)G ztKhn57L?P^d|%xq?$fdUYVv8IpY}1E1fR@POe3aMN^cNB2qgfk?l(IYb<59i8X@K# z1#Ul|O&il#s>pZV^%tGbhH(f(lC+bOze7@P3klrQneaAt*f&Uvi?EOhjF7*4hc;8) z-0B{Yh!khun-uLvJl21}8f5}h#C;D&alw&5q!{4I{!-m)L~S98LqPm>r@eP=4f+=- zjzR^!NwRyFI4bN~W63@_3IXOKbi#b17z&8Y`}ed^gDQ;YvnNN`>97r4jA`t7=E#-> z76X^G-M`3QAqOxFAUmS$2og6eA&xT4%#MMdp{Od-i|1 zA1w_hiy90=#(eI!H~=(&{0M|cBy@@;Bc%D#UlMS8G;wk5OldtspaV+sxl`E(6$mTd zX0wVV%jFdzuHueD4q3|mB6tl~Zh^gpnGsk|Eh4bZZu4UcZq>kf#dJ)Enx#GvCzgw;pK2O5r)p3?^6vH%(d|%}*w0l_sWmTPCW|JG&HZLIJ0IA5g>d=2`cUt_n zB-6P*xol#7{d%kkLm(}sVEN&$Hi8vVjD^4PObu4+)`S2c&i#d=b}70VHfH5gV#b|{ zHTE7Id2&3S7STkv${rChCH-Zn`QD3-=V~j!VJk>bg`sS5mV#Sn&qNYIy|;qfk=5c3 zsS^bxr*^si$nTi-qHWSx_)C9&&R^{j`X>6wxo<4F9-Pfp0wdv6!dG_*`D^d2%Bh{I zie;$8E(lYxstpT$l8t_NRlo^Oy)j4>ClQD|r-{^Ebpcd6tr#T$Vd<~EdczgJERjv( zL}tM?$2wK^>~hgRl#8ZLl%_IHfbUeCx{IDofB!?$o83l{;Q03d__Qy1`zpa?RUdd@`Kwq&PPz!GqQ{W&~qOK<|Bc^XNO z@Lh;8dvf)_Wtd7LL(d>*W58G@LgCPJAFGFfz&MRa;#AFE$G&m`c4ZR9z`n%GtDA$7 z)f2=CG{0M3#u{eseaL^VHh&#qO1pv$j2&^zW%MWv{(4nFIK+%$;`YKWQ7LbRIqhg(4EzDp#LW`jUW3j#3z6>emAH4^(1CxCp(Am*U_YYULHIDKa`F`c?AP!UA}bv;9ZA}AqEyI&7(O~D%2ZxRcP{6%#etl2G{T7)#_ zofH`jsucl35QnOp!=r0VTTTTGslW2^9o=0R$03ZpE7Jx}u#wUgPO#04YP5ZO-*ND2 z+#g)5UiWHecaeXCRdJXE2$(vxF=}1H)hnbz36LUXkE!K_^TcI=i11$H(`9EDFrYvf z`p!3b9M105-Fse5C5D+mY3!RZz9eUtQW`~xQxb{~ian42yecB!sFSF?;R=VjvzxoOFNE%H87Uk6t7XC!6CWERbTH zV$Y$WJ&?$z1NfklQ)HfUh!c+n+`gz}^AGk$B@CF7(BDAMJyEGlc<@1|$~SCSRpaCe zm=c;KZF;?55`4*Mq|&I9SKBEYMDLXW+1{nw76^CQ0FOC{DD@o{+mYMv4r~IcL=4(& zgyWV*Nw|Lk5&2SpO^iYkrEw?Q57huRO?$(Hc}^3p$2?BJrqFH^34I6tSMM%dy}Q-G zrg2XzfK3YpG}`_zfAv3C2;h+wPA>-3U^O|DedV}vSatPCiJvn^XX)K zWtt&RP0KAKP9IF<=e>*BTA!|R3D2L}PF@DR%0_>)vh}xFi5a$OI$~e;Mt#j`bN#)% zvGY^&pYeRAe>3k|_%z67=ZE?^lkxn+<@&P*279{DdprzYT-Y|ypL(O2X%&6d8);=| z-*2Bjv)!TfCnnQucwrZo_l+K9S>ODE?Kyopm@c|U+efZ^C(wV-dwBQro#j2s{{A$7 zMZbTiU((Z$v5ltBvS2jUyBU2jt*6Hm$9~;_CMv?*9CGKG>GZOCWNJPBvDdMhe-0l0 z^dC0x<_6iI4{~ac_M6kw;d2%?fQP6>eibgu|FlX7onZKXf>6Ou3}W^DOmx8_~9(-hf{J^y$J%oRkdQ zyKPfy1+T42`zd46PO=OABdU*;Xhuzc^ZKcsXksUr^vwK`K{i~qb~caz@dS{_Tbs+~ zs^7lsF3UF`3&b?Tm#SY|_zpb3WeyO4D1y{`IzR)_P~9GyG;a^hHr8}hQ)x?Aldpvp zf9LhyqAx&QJx__=G4z+H)nL_IRJu5X4trp6%vBQm#!MPq+v<*EWEUOB%!RI{>$h|n zBXKHO+G^hJ$<1_@T?PHIc9}=xnbv+2ts2h^N0*w?ffKL_g`nYX;}0&1&X$bbNu((p5dztbcT`^?eLMu&Y-^f4(6)%fGt&RtjAFgkJO5SP*F!5N<^e z1mE_80Z_0+A8eJ}z3{!{;mVj|%MT|!sp7lPmd_fLhfTaL)6Es~ zu=5}@Cob+QINqgW3%1AZiMLhA!T}z6-ah^so@zobp8(&olfGUFj_FC{vMoW`+WUYJBx@jD#y5w?&gV4-<2#E_99RuV=puI%}zVE2$Y2TR=N zj2R6W;VDa+42w$@d_0}FSkz}wL6nBEJp54SLX7*szR(zgDQ!39m9ro|VO7obRpX&; z!v5*a9a-D}@1KleIx6Gk`Yo_Yv6~|gqu7%6Zw{oDZ+9I3j)1AlJ&|5`o>-bZAMbAs zO5wevu+)D1<3fycpE%HkZO*e`HBGA@m_k8^fqmRdcpPY9HIaula|Ov^U+=klE83B3 zP$y;&jCpIOay5N^LM>f>S;I)DM1U@MzZM_4PC^RD2b2`AYtM%p^@~$Cen@`;T}2;E z={8%oP~xjG`c(*LVR~?Yi`8fD?!4G4arE!f=R$C)L2%WVRdqR4`g1Vo*IABAUbV%v z9_ur9&oie7D-0%l>>w;^fkNyi@X?bO+pMUamn)v1s+od(jf;BbP4ULsg3(_>oZzi9 z({nRjVEMuZM!!oAxDEF2LW-jxC=B<`dp(~lx_5%5w6B++!m02OY<{?#{Bw9LFFZ+A z;5RCtZEqbDeV}QXiFS)APrcxl(8f0Q>}qOhn`A989#mDv-1rot5IU#iS%Q&B7prBf z7Rh-SU3=>AB4|2f?SU5EtC0>lyrz2?S+dg#@K0Npob`yDpIi438tUVpE>hn`*Rs=J z)#!}|dXM6T5dU#sK(|@p5bZ{pIS5;pXCk(0@w0EYKU>i}>SNrtWoRmp_~A$(^!Kk% z(n+^<&+LxQ{?Sj5@S|pM)ZG_kt^9ZS5lzW_^MM|8-EI)YfD_$e6TT1LXl1>z!jzE` z5KKdFhTM~7yJXJN>0RhOC#&wNSee%0B~p+qY*r-i+7fU(&Q_)rvt9PoC_ZJB-;QCEG5bk9RPo;$n|Ae}RK znv4v9i)1U6f$5^z;rd};iOFJh1C8u3z(}LBZoQLZ!^Ssy#z==JK8{5-?pZM|cJUAq zx!I+N$dz%B#Tk9$)~GxsoB}LaJX%c{2@o7FsTnxia$%<~2d$@;R(VGX?R&RS|Fma{ z2lGOif4@>+BwY8gy&8R;y7$BfXqOJmqC?PQST2d_{Qd<>tI`^EPl}>yWVCpjyxEVZ zayjJ2y^r-1|EwFOQ&YqDJ4Ffg7EOKHpIbYNJA@?{K%QHbGGf^DmC=V!8zP*tyn}OG z4EVIfN0=;)T5T3kN-62(2 z<+AVA9l4dt4hy9#oy2c;{}nHz2uAs6LTB3*)Yvm_zP)fe@~qN0kw`qnf6F;*XEUjy z>Tc5JWmaKqaR3@lWyPjjjMO&B-?9<^`c4e?4 z#tA))=)=P*55|Xkp89Y%lvQFC8*d{Dm>BI;YCPH;RqVS)h}O`~adPtI*j5}9*46M% ztgQyUHNm%DIPD0HV&o@ZY#5>JIlEI3*k^{PPM8u=brWhjcYRq0qDv4Z*L-_6f{TK$ zbGmaSSWNp&-Zm8IGB5JK!7?3Z@n^t&Dg)WY2v0GS5*TepHehdC6ZeTG>Z+0f%0o~= zxlc2h`(@r6@J>2iJ8psa@voktprJ|d@NuV&s4Mh$45>of`^UJ_ow-HT8fo<`E0uIF z4NYu_T;BQ;bV~-{lA98W(Dr7QjJDP7ulYq$b@L<>Q`26Z&v>qaV|mV@HF>h7-!XO@Crd9uuLGl34xlRImqrc!K zQv(U_U(0YOp5J0s2BiqnkSEsKKVWfmYw&x(_V29%nz2^fNu4i|tyJnz*b>R(HLOQ2zETqmZJN7azw~bA01xwCw(k~3 z*E*B9B3yhI`bvibxe;{)S4l6{6O&B4zt^u7?6Alj)e?ZYeo+b08^h@rQsjT9{r1qd ztKZ&_@bF#r6gMjp#z=Gs#%;ZwLi>5uH%Fc#gs7;M{#m;Me>)-I)0jKW)X$?>!Tk}t_}sjHV!J^3G60S3<-^- zAZm`r=cIDWE!0R9Vb2L1ccJ&Tn}nrobO`{Ot8^lxzkglk$XrD7lBeLUU%q$CLP|2oP!uDQhuItgo$zz$+ z=O6SFnjXn)RxTRsOz!K`Cip6?_e~Rc7JeVLtMc1gX=N_qI$!Mdw1lxGqT-Y>>ob;~ z-%Q(_x?;G=S!SSU9U4b|9D?0=|L;H6{ zUlZxfRs_As5(f5-BL-I>@79xy;!OcdrS)2cYa26f!N(NdjsYT_oDd#)-O7dMi6bw! zfVax7f1l;@v8aL`v-Xz-LY3Dy1351)exq4`rrEUM?wfE9%vrR}ifQ5S`%UEXxpX~K zpWCiXI=YV45?35bMoPB;6)bE-}Ffg!Xe_z0Tw7S=NHMDa`uk8A?opJ#jh|Ii7 zl)A8`8^j(C^mrR{@#U@Q&B%-XJ*hav&THD=UmD2m^HiwG37C4?S_xV|keiQqcG#Jq zdRg~lsSkJj6p@103zY_i4)y7;15$SO96?2=PThe%BS#u(|JLoCk#A$-DQZ`D$s2U6 zC`Cl?FX~*cmm$b};XJbzy-^4tABnn`xQnjsiRE!t+)eXj*G{Glp#}e79Mra>d1pKA z3mY{>fBGDZG&SU7D*^Axg^y-`YOVr!3g#-_M7ky^oAZTF`;cbKa+*PtMX%;vL{?<^ z*Og8QwUn(XC)w*e+0*3_FMG(Lea@8~PV^c%cWE3=jhLOHp_j#Nr+C^yokO*G~gdcUse3UsMzj!zRulQljS^ zQtGC1^U`bFs5ACG^bG)V31Njv_#Y}H@r{$M@!?9rzqaWZ$5V$Wqjp}i#hMffGInh; zQG{2X?WT}#w2c~s?8_&p)0y!{N@@H!VtCfR>%yyAm>DdcyJQ^rJ9Jyh8Mxw3FYa;K*g31k6#m5jOOky6em_FYa- zTYYvJVLjzz9N){LGqc#W{RDu@0Tm-?nCL-=yQHKr<#qU`%EK=Mll@pg9R6u%)P$O6;(Q{hCM!>*XtA6KkY1|*b+u1A7_|H zr~@2@TGO$Tq$&Y@FL;EEZ`3Qbs^1n+V6|>=9y7z_d5=ArIq8VKtmNQ6p-SW3)F_zv z-m}u z13S2lweMf1Xd}Ng1kZI0W_egnaMU(btL8!`#R#EN?QOuOtx$aq$a;<;{dkf{EkIO319PMOEas9WW!?(j?HWX^m0 zh;)7-2wMPva9#e=&g`fx%?!qsCs-LS!8~L;q2vK|(D#?9;yq*^DOkc~xdl$|D&A(% z>Z8I9HKgS)>vMf8EOjsCz&v3cw|I}m-y%%R%}-)7P6>{=n*XhIduHxPY%v# z9SSeeo0rMa4IO{hN*9*qH5o1DDL`b*uV(@ol8T(x2x?{zrXqt$xV9f`77c8qI?<1j zk}?M}#5V)*J{Qh=Xt*t_%MYHQ>DI^iREFBeQGn4@r@J!_fI{c1Me z6h%5M)hH5coO3uN*?j}rDjHL4&3I;t#l%It9Mm{&sk*E%9qCf`K`FPvO83a#Q)>RZ z)Z)b|f)M+*aLlsA;Ir^@>a+-iT(QWDZVtzk(HDIw+>p#oY4K1*fp`Dd z)uur@y!*65$sLZB054&>>8)vSbh9pyRom#SdcADPs~YBlIG_F|d_G;yX^a=y4~)uW z4XXKnUP6t};IeUdF5Ztck6XdG+~pEvr8)e5*gZenPOJcI zM2|XoxYS5nwgz^Eyi>kjivPlc&E{;r zO7}9F6gqq?z0r`BeNia{HF|s+yG0#rmGV7h_G_m;g2es5@L1y%`j2aG4z7}Fnl(O zt%o1h(=wSeQS^)da_c_V%7|eSBzw4!NtR zek1t~l7VUk`Hpj5IVtaEjpK_rR;0p4R$p#I>4F5hE2z&R)XGr&^E9Y-KF(ePmuktx zB2(BmBHoeTc1Y6s8N#7y9Ebm~Og>}{{bYG30LAdiCWm+INzK>Z`T;zY4cDL0E!caQ zHFKS+Rquok6uAGgH&w=+{ z1$rkPGPXWQt)8;*#oJ$;jWxCt|55 zA?FBp65PPuTtBVNeAoDPrk&jog^q$~f$gm9{$1T9ZMfa5CjR7C=h(g|;GbQ+~G zi^ZQV2l=Oneftl|vf0OhIf`m?3PS6fn_6;Ql~by4`NNg?=Ioi6Kqf5aABofid{ZQh zZztL$K*?Uj!4(IxNot8DU5SdeP*HvgCP5vJQ)D5tR%jqC3g&cHKJ5mIB3IPSKdEo^ zFyAW*I)e(W2E>m!Xy;~FavxoBW?6eH?2tEjFlDPFtwn-ZCa-A~Nk3Pz1ZMnrAvdhE z6c_kjtEIT?BQg^%4iq9I&POLu<&Gf#f&EiZ4znD|oS93O84T44x-R;DsvDrf)`oJ< z!3*<(lmdPbz%ODXe<&}8=L#IL5<=FA+b#eN|cZbkX_q z8WGD=qAW9&&gBeW-3a!vPOrr^LQpJVc&1O5NM+Pk8R}C`?b=~L#l1O=OlTwHMQP+M zH-PSB8SP=9J!L0??@EBPW{v9$DBPcP!qpj4raXuft+n;D5S2-X+op_J(UP9f6kKrY zdAmb-LF|;+0$d2zq0#tTq}E4knj}=tlMl z71lL^>+G=N%YC^zz+nssZa?d>FEU>UC#*BV_&p~y1U%x8#N?gR*Bt6_niKxGdU1K^ zEglN7Z7C_w1wDiS$hJK%Gk1cQk@erUj*mC^F~<(y`^^c5T8U>kdf{BBm_$tIBd=N0 za-f}LqPX zpP^5`jBA z)XuDGcZ3dki8%O&mY_aq0ZPolTK}W2bWcnO0`AF{l%9FLdZK#ow+knOEfXOERJ9a} z%UeOnafQ~2`#Kx(+s+N17W*tpIS4LH>8og)F4Jwo_!JK_yy_=YOF8+hCSyW zQ{6_iP@MFXu0#s``ONKU@(F)U!w0eyB3g;8uJGI{Hh&>CrMxnTj=o%h-w#WPU5>Od z7ML*}o7$)jAYXOUhlP?yYO}<5+~NVtE(vaH)iI!v(6*`&%}6Nw>dqsVo{pAYtTeC7 zx+(NtC-tDS(Bvn2et{Lt*LK|b3@dXbJEmyU%!~0#ajPDONP0rJdlj?Ov#F)hKHcJ& zM3Jcs>$|OZHJ+AdEE=3GzgV0h~uL4!n-&-R0Km-bNPOp#1u0ib?K{X{C zABEJmasE^871u>X$g;^k8U{`)8)C-+Z^xkZD@%Qcr-Sk*ABf1GzA`4*S}-W=S_q7N zb8a)xr~-OJ&o?zRRT^&J&9*7c9RYFq&t@Wj!U(SvSeMFaCQ%zd^Y@js!8&nO;zTNo zYc~0l`VV7nRmiq^{?qNq&v=0!UIQ!bb{Q=>Bl5>n*z;bJhzfeKw%(GL&+S>bCDkr>%m?ku1?Xp^e{vOXIJ%8~JqdivdRKSp`G;(y(I(mr(H~ zF}DJH`1d8*Wt44wH6}pBIrYh7MheBJg;5ir{4|Y~3{@t*_*zSA^r>KGn?btouwO6D zTxTB=gUL`)!#VMr45F6i+j%DQyzarLeAstuH^rJ#tuJLf6&(C_@5@`Vkx;uM>8zu% z&4^l=f%qp4F2W?r^DTOe ztOO(q#SKG=tvICR4sR~=ArUW$Ul_G#))m?jTDI-!-^!uH6pqzq`vTy=5I*r#uBLA@ z*DlSj8Idsc)EL3AA-9^Yp{>`95bpq8j+RqP6g*ryhQZ~ky0%NuMhBqHj|rG4(kOel zG<$EVSlFk5n)V|r=#((ktEqgaHkuFu%RA08OU+0XGf$5Sjk3a4=Ll)4n;H>v`YC1c zFMl_q%Ibpstz5XflYvj%Lu!8Yb|_YL&EfCmLr)L6<#!uWw?|mxjL)e@NH%Z8y_J2! zCoGbBP)%6sjqVGZ3%;v!Ti5nONR80!&0k}c&trVANhNv-zDERL2mTBE(lr8Y0M>?) zY{@dq;>ZD9WIN;He^*dEmsX~r?jW!ZU8E*N(&ZEy<5!E4`Pq} z=T(0qd=bm3z+}^N6S*=UsO;WQ;ZVo1gKN!l1WL!-R+SGCTbQ}@sj0LEM|((rP&;bs zn8w$&?-qS-g1S-I6K|xFNm_F|lMc&j8`<~C5uFR)~ zEn0Ry1gE<`Oamm!C=YIDKs(GqSy@DZG>O*#*mp}RY!b2ZW~(a}c{VPbLK=mXJ(Q7u5d2UUGHYPzXtd{#g*;N!HXaIHYpB>X+hE*YYy`*oB3`?@jx1Tm8 zrlzb@CGR*#Fsn9%z(@RcTy#HOp6HKA77;Kwzqe={NdScW2!$u5A0ac>jM5*gh)IiC zJb9qW`T{!NZ43*ms1n(!2L5@avk-e7rD=rvP5G8*=dTE5+vH{G+(N>~UjHT(#qI zDx-6oqG|}6ND0xSch*y?x@xoUg8~|5kO}8_MIA52Xz(~QWzZ`~(UwAs!HQsLhBG_M z1R%t=oixT$0PP+%UBD?<##^5;h%fx9NCG%BE0@szR9vnpx%@Le)50DVw{wO}oO`4F z9DRiOjYDyD(1rVnR-s-`Wy!3uSN!fHRpl~io^Hw-u?8_9upQ-^599}?8=ukrx$C!{ zMg%~h2W)_H!AB-fLWf#!2lJ-UHB$aPiKlmHnGDUdd*^xR>wEYU{S4N%Q?)tfyMR|s zflRlxD`(L~!f$VH@lI~9rUfTZn*TcHGwQk9pUdYfm}A>}t^HlEUz>g>M>ElO%~}pc zLyn_u1G`HtBk0K;M6DBzs;w2bE-o;$Dab?r>|I`h?yygy`Bj~T=x2=EdY;c7m}6x1 z{=}~nId#cGFl5g{ATOM?KzWhq`~+BqX5GYHVs!(s)#u%-Jk&(%9)4(PuUV(o%H1u5K}brg$l=(z+SLRnJOf=Ke2`2!kH#; zvj3z+q6<$Nl}Z#%nr50so8Ra=XYjPsF-o-I;lFAP+JxXzCIQFn0a|QeOHLTtW%|Fx zvPxLLbe>djz=RoQl4gX6Q9z&NqLqOa_>K^Og zrYSln>*pA)HikpVTwlKt4~?w28kCK1S(0PPL&k%U@$Fv;v`bETecRfM14YP@X1^lP z@&7Q+x_bg0qw55EB>c+SfNqK6psPfG;h$D85TlVV_lduk`{hRSCl%<}=^izdfDwo& z{IcYL)&gE+U&f)EU+sUk3?l*0>86+`4Rnt`5KCv*Z;>JW`r|-88d3wH`titDqprL| zytb1HU{!wP!iV~ZeDbeQ3!FYkn@}X}r`lG8cN_wFd7O8F zQgJ@i5d&|`^Q%kbpR`4$*AXV%nNGTL&$vjmO!#|jNbyzXDF10L#Owz0VLl%Pe$LdQH!mV0yPZwdfOa!K3OUWx95kfuF^CEn!vC{f9|l%hF-z9`y;si z6Y!y9|Ks}}Q=m2gnZ#0#1*5)y>e!kjQ_c(!QG1j|tSUNW-G0I%N5*u+lfipA>+H`a zSVN9?As>u}<1pI9U zt%MwO($8^bi^iI*{T9-fbJjhBu%ca5B~a)x#fV^*tf^Oze;>>lvDlM^#X&k5dEXe& zy(Rp*ubpe*XBLAaqU<%`Pt8jKSUxL%+NqN?E0FT1v%1b#rpNsU<&{Y}w=;RwL-vZ(?4p&3By1q}fsp{#yBleI;yaupy+(!2N>Rr!X9K zoa`OIyxEyA38zXoqM9JD4u;au=w_N-L~8o%auODgPZNJ&c1LyaDI~Z!d577 z(64+35p+_XY<5yQJPJ>)@O`|l#~5ElG-`0|b6>o4VzjavB6iX5o9+sl6f!m2^b5EH zsj77XDaBo@`u;CGx?30tSoC5_!~=QAfOY|Y6Mj$-KG|dcZ_>j4v2xCa3fTO8hR@{$ z@ftVMnnDhOaahPQtvAx!@l6?01a>rBYg?kF+pbqa%L8D%rp3$|Z|;y5+E=U2p`mM5^sa@Qnqc3W3;Liz8ZL z>Ra)I!^D_msro>BRph>zzR_C(Cve%FPC~{+O&(M?YfQS>Ju+7xF>l>w5fgtm1Y4%n zD&tB{O^GBTrgtBnhLVajx5z$GJRj6z6KJ`pE9U*ER|r-sj3;J%Av*g-4=U*vP%v6R z*kl%cb~VXWWhh8w#}FiLQ-0)xlZfv@HOp76{$X!Sxhl0#Qa0}JptLUI0<1rYu4K56$ooG&ed61#i3GES}n4YgcM39=G^AdN$rZ zL8L*^Lt+Aa2qOq#kPr~#h!7B;As`?;9bL?rt;~(h%w1TSyzK3YQ$Y^dELfoz^moLc zA0h%lDi(!btt-~l6<#1>?P0N)N4Xli{Nq5nEAXRwMseGIU|zzW&R+QQoOG^?L|@@9 z6u&r`LM!Sx-}j}NvaIS0{HQNOdNM5!wUdtzVKYG9`LwfaGu-0b;9>UZ+us!d$^ z1Um-_$tJe1^{wIv#femu$T=ycw21xr+50-^7RYvYKlTv_dxsMycnB6Ak%v*+#Hof> z8stXcX~Z9j;+t}$ z2!P@wJnFXbjF7B|IY`~d$~bAGH;p}Ri0S$%1NK}HJxj2Aa9@VshjOcQg0%jOg`i+W ze$*PHNSwWiPPDc3TA$_Iwl&m-Ee2gVul9TJ4>F|^t}Y+5_Eb)iV$(q!2a|&j^s7G$*$O*MI3CU(`;TbAr%#2Krw)?MdH4uietzR-sfd*?u-R9qw z|AttE1FDpJt=0EFkj6V}w*^^xI%NK?KDFu7KtJ1b{qT%3f1k|_mc0jkuij6kGWW`? zXShn%Y}O+*FBUC7lpcW)>a#gYIj27R3q_gtnu+Zp1K!anCA@3YT7S1Tu{(Y4R85`; zk^rdxy!w-nY6w5EHPY1lg#r~C=!~D_QbR{!SJf1zzI-F`D|Jj$(#U@$( zS7)iLQA#PV`D3ws5Uw#+D!V>1ZQmS$Sj7KqS0v}y*#@K5x-}&6`NU% zIsc38$6O!`Ub7&vW~Ex6q+|>$J`(`u$Z`f*`cf<~ zxKz!doi7)N>c|eN|7b!i4(`|T&aA_vZ-9`2Lu)XKFeH5p3Jhxfk8IYoHeraA zyDQ*|=7+i6@g5Q#q~Q@_q>*(K50ABu;l=1HeRFWR6?wW_$x@v$(QA3}l*_sY9BUeE zmNpb`&*6`vt*Hw|J_117=H1plP92YL3-8JO6uLIKS1Gz5efBnd(Ih%Vc*ZUnest@6 zOS|TXmzx0ONATMOVp*B%+I*I!g%fJNrbCd1R9ge3EHd(NFUPbfLGaR%Rq)$)c~OSc z7*t`e80ZiQcA)P6W@ia2RTcu1^@>ccA4{wjF%KXtbfDe zu#Y{95Z7m~<7RU^QvI(VN)f6$wq6uQ1LP-NB{|$&M0U%9)k3>ml%e+tzrnzoL%(8T zfYA1nb0*yLgzu>K0}`6soBg{@ST-mNvgY zU^&@gBSU6Sv~Ko2OzE0;db2>g1iZRB9Duhe+B{8G%-A-cwiUK~8E6tMo}3TgeV$sD zpL6SZ%F-vY&tB=-!N36crtHNv`}sG83*^)07!to>v0oE>7TyIZ~0K#lV@s|F|tN;kBdwj%2r8 zDMS%?r(1vnp|NaHi$8OUo!(d4x5e5GsW@j>x!UnGz=0V{;qr&52H9-f+WImcv_f?<6$dz3MW=CevrXo46eQ#& zxq?F5j?pWjcN3d{w@FqIM_IM*minzpc`PaY-wPd_iXwB;B0+b?m(z0vOfC1mhphOg z^z=h4`hR;tgGwWMHm~C%=*hKk*#A<{os^`_xRX^q=$7=sf0IHw5f}xQFx~{$-mw^} zOn!0(1g&V>2jB69Z-M`5Y%f@^AKSkLF5sP~-yTk*1^u(7yWD5BOG9PogK6!~Nd$|f z4K#MU#N+0%>=AD~S^;s#AG%d)i#P}Vt6M;d>0LhJ|EBeSj{SdW&0_fzJi4K;@w3{yeDS1hyGt0M zQkP+hv4qNXE#c) zxqF6(#q=RrMZ^v*|F=w6I2sA6s|@b z7oUkwG<~a^IZ=R-$*;HCX2C_{e}Srd-1V4U8elHgOB(Tca=s`!46s0>It5wqOE7M` z#nzgU$&K}=ZTPwZyPb(bb2~!VQh#@TMWOmC9Ytd7kul#9SWMroO%vE3#o0gMHLFp% zd2T*UP;reNY_H%MTgowvg&#$hQkP;9ipWL74)XQ273u@RuJT+n)+eZ5*ui)>BM;ce z+|}cSW&0OJf_ML=m0e4r4=pR+J1_k(8tcy(OiW(vckAo^|3j<#|7cZH_4u`@59UZp z?v(lNQ}du4|h0X)0O4c>jBvSspmr7GgU0YGEn~e7Jid zT+H@1cq*!M$x#TrQrUaA z1l{xaNC`Y%2<@QN8U(z0Zff0V`kiy5#m)5k?$qLM1Z>^y4m7TEJ2rj$xK6aS{+4G* z6mTiF+5K{Hdyba(cwTnf#(4q0eM=Z2eSkWL6OPYa2Vaf64c~2Z3(Y5OzUOov3ZHw< zc>=wz4~G%WM~;M(4*^?GtE6|B(*V&3xc2SwA>d@{rtFY8U~R@a`Ap}7MIoZxQ-U^ay(=Ecn~%K`6~eJZRfl-?&Bzs z`!HNWz}@Lh-upRt`|6;TnUg5uo+fcx3D}5ncn27-!L^=1*V}Gq@22a^Hkx7Y8t~`u zyV}$Bb6fz_A8cQ4C|*Vp@#tXAf{o{p!pG$pj!yCC7Ue^J3Nm%B5hjys>TE z{})>K%kHwx_pPYIkNuQw-v0a>XjfB8@8Inl?iXgE=%*}Tge;OP7)H}ChCFS^XB>h3_458Y)ET8Tcx49Ywh)aF9Ujg!M8ha zkZ101LuXT@4y#j*o4ww@{MB1|{os21pB8qf);qC%-*GR%cdxs)bof)uhHL(Bx3#TG z->)w6vku>%?x*IN&(9s-ukO!1nR5dI-WPCI9(t2b$Jl{@*urAQ6N%yXLkrMLO39kQJmo_T& z;_vI_1NeB|#clQk6tsii>k{+)fjmLL>)!DLu;jiM;Q+%BL%}sisJr#u)=lvI0PuRc ze*u8=&^&veK{M~SmG4!+bMLvZ0r=Rm_vs+5DAN$QtK59QR+=#ckIV!-P1W{3w}XK9 zlf1Ws^ON_RAzadp*Y1aiNul?1wD+&}*N|77Nn{iFz*5yz6uPjSCDrp5o(wPPM$+(+ zpmz&e&^2y2=g>{9Hts8&>mAgdOD_7wt^nDTnxqMv034S&;HBijOB6pp&U?Za_q(0` z##b*q&{9qM5ac}8IlyjxH{jclB>=Z^-*<7ortMeL)x`=#B|_52)ta9g%PCqf6?OAyd;a<;Xn}{RRgs{%4jpiJYIHV z$^C|zr`N&gOE_|V*Bdvva&t^D33lT?CrS}|iiGQRwOjv3H(&ue(r-)`mScgbH>talZL^xkANB*Uq zXb$+erwaWWD4JI}af>9&rUSP>Se$X=((KL+2eum|7G+PVT06SwaB{0V?!=OxqXb`d z*it-ATN6VtUE*6EDvjH5*u3oo7yE5jRPDP;1xJ4S791XX=iPUq^4m%eT)~GD2k!d- zkM2gF=4CSS;`1(-biB!3I8UI zYl^IBCPbp|>sDC3Ti8ThM9)ly^wWDm#rp>j#a^so*le)Elv&nZb|C#6&GUapV{~{i zC0`Gxx#UI}x?Iu>6Qul0eorcDkYfcXxw~K4Xl}wz=%Or%VAy^=HC@ge7@BDUsQM&} zAl=H|L{?YX$_q_Yc6^K(x&zSH=C=P5cg7Dg*`k5r|oJuoML;K zGQ}E=zNQCOl2N%NPw74xy+$|pZGH9P)d41ryIX?9WNs;zQ8cIdPckUIX?nqz@=Xl< z8zoL&!>hbc_<6^J>YwL8xzAe^QnG%R{sly%Vlxp^pNCStQK{_1RHT6VmRprrN*gNj z1b=FB&E196Jaui+?{!t4eu?vgu4E^Z&O*S`AUZyD8Ck67uM%zaJ8;^K#MnG@b;imvsJGG=oJ)_&0;@#y~Sizt^WjNX9 zhcufTKbYO$s)Z))nZuiRQ9!ilMkxTN|2MYRZPfoj9gj^|z|mBy3h#=s@pgQeh-2>W zu!$gF@S$Ik;fgDRBmH4S*Voak9bf@<6&SfdxMm}m4ve4JN`u7|7#aJib{`)s6X6=x zM}VFH)sWr^t=%|zQNP{cWyhts$RzTyb?=eZ!H^A=DY+rU; zMNZWjRo=$L$?XdjCdeVo%yh?4PKX5;3DiF7nvo6wjVOSb0p=%)>%lt}O?S7VHFNv*e?f^34O zBD`zyAGnvjS2MOeje|4UmIF}*KlRhqsUNk?AY!gI9}a2!*d9=5S0J%$W< z45pGLWC)1M)^F((1*k8!(*2EvDrOLfY9qCUFl$8>bIz2yK+#*2o%xM@n}VF%WiiIuJQQ& z^0TbLjNDCr2{(0Q6fZ?4uI=YozjDaFhV+JJUkUCp@L+jR8fIv5HMvTqr~1h;OWo^9PC2re&VnbxBjWZFO)8i| zMLFA&iJJ5dCP4ww>CAGjAZ5dkFiSmciZiBRqo&Hi*pJx055PuN~rdDdV?@(vOYent*Kf*j%w-mUjeT{Oi zhfA$qMvD6eFZHW&DpwGJJS_8P7v+~%lGd_7^vz}ADJF&*`za=pujY+BA7J9(nzj^R za}v!?ihv<&f8oI_aU56;Y|9lXRAIWhC*|m2rzSy%^h(__MA*9D zC`R0*MGDn>jDZ#h#?5_sKx8`Zqg56PM6OiiIh@|p*I&FmT*md3l8hE`;F7ItHm>M~ zll&KWU|kDVpPfpQIu|HEV;9Cx3aJ{@H;lN9f%Y5glg<}N$ug2Bh6l92lP78a-tXF7 zu8t3mBgb$A*%&aPZImrB{Yzq8Bo?#ugvs+})+2|h8R!-Dm^=*`3?>qv&v-DH^{C

`WTljq%5Z=}`#y!9I)|6Qn*)piFD%X$q+!>kaV;ktW3~5~4YVR*og`kj=6y zb?Ja>PLf&|sXhfHtu4|3a7nfnBhA}sukFD^RsPS{KZw4D*I=Wj-s@b&kF;qBiBpD9 z2~DVau#rkJn$>yC!gATMMk3^RnzGKis@afUTFNkFMdTAD``h6xsf`Y0cWE7Z&0rG} z<^^IjwC$AInU7IAIk1V*P3sE%V%pomS~S$c`Ehkz_ntp9CH-6pLW$!&T19}&vtWnPl+I(&OMKe1x%(i~nzBs-Cz z;&g2;e!F*@nc2xF43=f zjJ4;<>QyFKM3ujopletw!Nn<+3`V=4D^{o2hUdME-UTD1o3G?K89DKN?t`3dLr*?* zR0F;RlDioI3LB|_q_%=%FLbvh;MkKkNn#(pIol6o zb18FlUr6QnXmh(@84=kSuIOk!R_-AwxYWRCB&oZMk-m#gf3G+xiYhB#T%|m6LMO)5)8*`T9J_QZY;SRG=Pn}YPEY1})aT;b^ zLONH%v>JaCXW@ht=9aCdLnndO%xP~oTR9inT0ZmwY4XH5Z`QgEeCndf-{xAw)J;qXCB<&vMpOVhSFBZd|sw4X+G9SD^-84)om*mgU|HcK?F5L-)G`+<@#y#e+uiMz5p8;0Q;BtCx$e#e?&lyk{LoRai`=qT-CZ`^P2nBFUn*wF zr;WRJhi(ep`-`)RLK^S6?&E1j&ru?HCtJqG+n; zJcfUeba*BO&vB%lVqv@8#o{?0(&g2&hV6N`)H@*4^OxpiIU~?>F0A?bW!GU%ulU`a zIX^%m*D&=4mz<{bEt&r)qAc% z?=@UpWzgjSaqrsRg5emK5XZ46A(6Xj_f3Bk8R=$l#zx5Gz7f5P)u8t8QgE#Og(PNn zz3)@`jHJL!RY*ImLeKV~LwY`RkLp@$&bjuHDn}!PoNURI^UQNFo#)OXefq)CqCR6_ z?@-9(6FWlIVMeERJ@3Y4$H6i!=h&MP5;*_USEw9y?<*Z5fPLl4vonkftVe|$YKwoy zCR`{7yP?tHJ=PVLULlh!{f0f=vLK|gju+DTtm1Gsv(+5VU7YIjX%!RV@2M^Z{+_yf(47#jk&&!j*E@yBlFQQb3N$z<>p~$Enk?2 zOk*#unVZI2_UEQamh&=GJeB*%2w9wYnASM1&Y0F0mg_0i%PdXg$#DF7x@6g>o!$+W zo$1B6aL-Mj2FJzr5klTSLJoiDTxW=f_}i3Q&uo3l*JPG9V=kPZo5>ya=}gh{o|`Eb z)_gOE#WAj#!$Wf_zow~EmD;loW65`qZ2&rt* zr>yp24vMj?6K8RU3ZhxUWS@4HbhzVSR-3t7%&hK^(-RU8yRrIpkz&edP)JCCjEm#&bD)IDNC6&&)Q24A$|Q(8U&GBb@D9`yvj0kC#5+InWev z)vJ)mm5V|WcZU#C4|Cvi=Nlx249*CwU_IZwxpvtt|5|W|il~1joy@U~72@I(uq&j< z_Zh8_6Wc~1lXLtl?kk!Yv4i*Aitca&-ilEw_J9nIp{yw9o%dYKhdZiPlJ~(oE5*WE zdCA}AoSu-(bpdNPGdLhVaVHKTjbj@thePM(bveg*=XGVr@zGUm;|#|tyGbD<;(R>n zk`Mi_g-m7}YuA6r^ITWg4$@oYF7V3L(3w}sT{+yBvuZx{ToiI~Z>`n*;TDY5v_32$ z;uLJrS2zB!3f*M(_=Oy9I$GU(j?4+Um_Z6Dht=+}aNVGg!@Z=dr$cYY)pO$<%NpiT zXSaq6TywfcXosCOLg$Ft8u8*Nn~=htMT8vA<*bnc$DV)IcDPx;&D{>35t}(TwWg1p z3tcl9?nWZy;IXWk5=Tmwj4;PXg`~s0EjO4&%lL!?+gRE0SvVmRPc~R%?S=Ya-^h94 z{Uvr^?}GKC`yx^9EN{ip26|K0q|CQHiHHTxfmtID4DG4iJ@2tbM!e1$VW`7{Z=T_K5kfLmKd({Ofd4eZNUtKEav%-Sy6NfK}EFx+L;Y{ zQ+D5thnC4Y>$w|=btp5)TKoFbj#|w65)W0mM3ysn zR>TIM`3$?=g%%itwBg#~Q3#;ku?g5Uyj%+lJ&v@Es z4_?7WI!0)1^d{pi3%idepN-uYy>^yFIdgmmxsA<5JeRYtb6pt8vdIU-bDe@VKF;;N z3ld{bHl=W3{}7vctcUl^P%wUA)3TE_#qN29RR%&L_sOz(CmwJFSpdd&cIazh^_h^I zc`twDoE>YvTtdLSrp=o{q8wZ{a>mnMo1oyRch?h)McYe0ATlm{6~i|w?W64lzDN*}k6I0kE9Y%lh9e6?9Cz2ZRT=@id&&IdglBzi zO_tBk*_u7y`(mq>4&#=#_MEUr)7F_MMpu7qU9ljCwIaO^`$}!o$i35TOLDn!4q7_g z*EHYKwTJCtpQ^qG2^pI`$jyq^=RXMN*!}c1vX2JGh3fAh{K2yZbeL^xv zJ#1h5x^+hM2(I?sVH%FZiAV>i6)VTCTS8LjQH%KUy}p0W#$>T>(20l`)a3in`$DO5V)z-Oy3Q^$Fna9V zzTFt*z`4w~WH~3|jTLMA>MHK|t{)2%wV05|6|5VHSiR|7NgYq3IoHKhX$K2&6JsdO zO=)tJ1Gl!+ACQ9lT8PgWyLDdN4(*&ashN0IUOH4Vg0mx`ig>nsBOU9JgdBhRbvoZ% zLfa_h&`;IrE!>~N`62Gj-?KX-pzQdSFRTT1!9>2%Pl6~lk0S_MsBjfR@)z&Zkm7|^ z$u49+@MMDvSM1iR*A? z)oniuGiokvhXv(2^}rb$w|jp~^D}u@u;Me>27|YQDd(5bb_#3`E*X14> zdO2c2A)^fzk~;Q!byt&lM0vYL4(Ok{;5$iBynksOdC zxl&w1&gY8s0rpFCRqKQ7R!AN!A$4craIR}M7t5%SiPa3Qig68oMoxbdo<|q56PpL5 zV@$}&|FP)hyhAX4;Og9|Vnj|I=v*_N{RJ(Kjm!d?x1PC}oZW(1U$;-DVkL}gMQ%EB zq*lGbxR`4#RP>pgJfnrNbs;$+hjl%e#8$JXeV7N4tu1k9$8`^PL=ddqL%6J0F$!Dr~21+!@I_5}I4hx>oa?{6&Jydq# zF~?Npn0b$95!@V(EB!Wk@>n71R>=#qB5r30F*YcLXcOD*)&0UM5Q(Aj==l`9 zc-wu$h?&T(<=TB&IejaBsms|MkW1bfj=){7YLD<`hZ_oEBRoRjdurG@;!2TcLiIBP-!N7?*l z(b#cUh-?XePs)EDccTwkDx0*W4^&m#hhZ} zRY+InT3wB7myILRyh95pBn-?|`+aK>Yl<{v&3J4}){K9jS+1i8=J!o47~S{c_Y1o% zc{y1FGf-LsZ;>Bp%OCoA?~8mKRvGwQJ)f)gSsq7BKv76PAu z-9&W`!+ z4z=Mz!oXOXm#cYTHT~KJFNjo^FkJtY0u_w(Vr?eoEG>xYYp z?ZODV%>W~ryD9j6$`mVzWX?@yo;a#32JY?AQpSv@l&I_(>cla$;3!o?y97NWA+chv z+K(l-9=~T=J6OL>n+{e+UfaZojGxswjQa}-4&#=7pT}U2W$rJQ7jXLaDFlM0SVwelh_6Z3d&+W?junujbkQlLIAedzMj-9Ztv%@&wMtI(W zDYjyrcd#LNT+^_NelWHXY~5EHF>;843WScREkD6o zQ3}$^!8tqd^i6PL<(Ll+E|`j1EXbLP*yBbHWm@R*2R9G7-JMh9yUK#kK4PRK_)9J~ zBh4DrZ^3Vdk6-GSE10Jh5*qpoL6eX$4jbgtx`e9`ink6|F7z~!IfO7w!3sPf-k^Ui z*+|BEav{MW;}Tal7xq0C5(8FiX^)Dm;t1kp9A;8NtcE+FiaFVZJ()usjyo{y3&^>D zZ`e10V?BjjHu)I1rb%u!+PRR#2GNrUsaftYBP2SkQw?ckgR#yaDd-rHkym6ZvQB-A zp+dzQgWL2$XfNx;qCvBzE&JARoa<67p9Bb{IX-z3WE2wC0E#+E z^Wn->>n^-SCe*k)KQfXU<|udb5Q82|XeRQR6#0L#V(m(3!%jR07TSszM%jNtk7lyI z?$O$aqwaY(l0l@njP)TxGFPL9Uc+Mc)O+k$eHQvM9bt?{a_gkpRlJ=82hFc9Q9~!V$@Ksdq`LTzAsSboVbw8x2cA)!i9MzA%}YvH!?9& zAEt@iODD{{`6VN=893K-CX0V(vBSQ0jQ7GSyJ8EG5e>%u!}Stfq^mIlkjS$i9gkkzoz?V2$Fb%*lnsjB>E=N#^^&c3Z`PJ9u9l#noETO1oeb zRF=^V)FCo*(IZcc(xMAxCwe`FOel)O28{efUwpxu1-(8;JkJ#6?mB<;refIDGo;0$ z26mx!j={_R;0WaB@$J1a$ZNtJr4WfJ?YS6o4#-3H83pdBCnOfkD#kFqK`tgbdbpuo zKByU}--LMXe;^MhS&Z+*SWLs3g(#*vF;@`dvKF=f?!)ddD-u(T6TMKm9^Rt|7Sry^ ziQki|ub8=usrw5fv{8R5@#5LZTVmXxpG4bA(uiG&{7xPF4 zBPB6Qk7BlBJ1m3O=dyus%oY+Wo+*x(+gHCJ;&;(DB4WMBL*iBZMCKi@T^o+GBR)EK z4vNS+T67sko6(}jQf5e>Ejy2XaBOAYZo-KCZCr(o9GO$Y=OIJ3yBx@fQYlZgfYk{8ssteAtWbW zpSgU&6MRClM@Af%k*2`!SzAa@;+OXtHX{2vZyfbnuJQV;l?L;wwemnaCkqp}`%N;J zU)W(&$}JVV9Vy8TFPMo;);X@<5edkASD73PmobKtY>j{HfeFdnFD==g3rgZ9JAAf6 zh@3r=s^qLS=(+CW@D@+rONWJs+A_H;6^FAU=G{?x(=PeMds31cDPkRQ^49QuEc>?i z3*#ZldmEA2?eh45K2zFdRLHoJkCFReByqHY6%c8M_c5NB{vTauk|oIv!_X^*CQ@2z zy#J9JtloeAw4XP|tISA+L;)OY$=o$nNGlhAX|=+Y_aX=B$62VZBZND?c6YSbR>zNt zaYEWaUyaq}+(Xjp`QfuOU2++HgC;4y&=YJeW!4zhvQ4~YOazWQ%vck@#@pGe2fm6Xh;7Lw23iji6c3cXMMD~BE8vh>e_K>@nug@_H#Qf%o9Zbw$ zr1lWfbt|BE#d@g;`Hppq#&w9eL@n;#E?vU+LZ7*!m)b^b68yAbA9uPlQQM4>NSo6p z##n5g()j+-ayr(12r1kl!$dbw$)?TGxDQu*McjfFTmEc zf?j`6Te~Jc^=sQej%4fAhY>>C-^W#QLZZA6kyLmVqwQKB#xZQitaG%MI}!)^30C9! z5+M?8XcM>g0e{-bg{OWAX+L(zDPpSldqlUm8t=g$gNLb#5xB-?8W$pdz{nCOr=1vc47hW-khXs? zbKXD6cRX31Qq8EUgWj`ePTR0C-*J%;?*8fN)`k7>g*5IP;nF3BUTPuUv4YQ|C?7S3 z=Ta_OWsmY{Jg1&(ZWw3sn7M);TF=p6jGwKSgzU-l{3d2QMylgO53K}xN|?nP(w%#( zd9lWooG~_o^FzFZ2N2(B*|zZB_L_fwOtKbxY&?ZlY*c&)SEqV3wq+!7CbQSx8hWw< z;chW5Wp+@Td5x~!{5|`JLY9j7HnKq>Iw)v&TC{<{H4r=CtUZ^O8K@3jBD7#kPlzwP zWxRRj=)boql8-y2EiD6o&uKhs$(t@zjIp?+>xVh$Zq0vKK1qpzJ}#HeYRG@^Wq8v; z&E%qk++AOYm=L}>5uS?OywJfq`UD4(hS+U_na>JI=z>YFoG+jF7#JtyLxvoEC_)-{)Dwx%8KZyYKBjCe-rHk3Px$olWDxMFXVF98+n%i)-o3NwZR4Ap zO=lZ-$n53A?2JGX-#>GvALnQ45m2N1s%0`ui`K#zDfTsMW}diqnamT{%M~jA3Yj&9gZMr$GqFP& zTPNF{bANO=^D7#F{tzL~(`x*_Xfr^_%juz_lri`o-#>5UkJn9F#?dBrU5pzuEqcVH z@n-7b?L=>Q|GM}a{Zb*Br$P2_whtLf4=*3`UVTfN=&KQuJM!KxQE>3o_cWrxBqB2( zytjK=vRAZwd)l&Z_)CAK7e34=?6RT_8F9}dipXKR*gDr%^sG~YyQ+(=H@vfADo@1- zl-^t91|V`%!`cd2QDaRT$V4TfOY<|l(R=Yo06?T0XHg09iCM|L=x)S}n_h0Zs5OO@ zihbF7{R($&=vq!goz-izff}RhWq-)ux_ErWTGFnw$Q{yqjaq*me70cT7)|P}+QfWI zX^+Ic1G^Z~YGYwo*gilaR_4F44`Qqx$G3je$3y5M8JEOC`;mPovduBfAx1 z3zeSeTYczp7Sb}_wB1I!$cVeG*z=6khmi*%&9UyV`&Spnv%05J&{N-C7Y0`2bzdUB zc;-}b~*wMa`oWV~UQVhs@`{?-~-|1tO zik(urq~XPCFClgDejBGIwr?{hM-NliAuZ@n>{E8)2V$il6Y6v3#WsF!ujpm#^VN>k z144XYq^qxz3n~fSSKq*l0ZAF#yx-O-T)EYE@r7NK`!;_OTwDWP+X)$0-(nS*Kibdt zeau5n(GA2%s9k)gr!}rN);ddXj+;kb|Zfo;d#NV%JGFrCw?Hr3_Wu~oR!}ArgPL+9OTDrqLFer=*=6cI%jwdv1p#i zETnNSw~m7Jz+*pbzt4ch{nsvYJ}+Na1C_H@ElJm z&^l3Tj{JViFBv80gFd@aifyz=qePcpd^Vk{g%y9-Lo6}#S_>JN0TG!V6;IYESC)*Q zTB;gzi$=}up^_Mp?}=UbMm5`*r#kA2!7qsH9}}}j%OCr9gp`c;&j`iDzceaF`OLN1 zcvkahH&PuKaqed~Oactm?ucYIn4M!Ip#h&v+WckNV>^&LgUYuTb zab|+#!jC+=5tJM|*pEG=g!u`M{kWa?^&dN4>~`_)J)b4?SB(>Q7VeN!+QP`gI3}Bf zZ(GPlzvVci4UB~f@q*cO<1ATU{+?SMW7XrlD8nV>=4^a#-|}(nW89&88`t2j+OU5| z$A}5Jm7Czdoar~eod;Gr%`dWa7`f@N#+Y6p75xV@oy0TIW_qch-*SKElq$0InQP*#i5U}=G52fc?i}fwC4Bh!Y%%bc zpRLqn*x^}-#2LQ1B9?~P&$Emu+(l%yfss4u@Oscz%_5eDH(<=`G1Sg~lYDr;X{jgH z*a#`y>oqRgjuT;KjV?sE*0tKj&Wf|Pk2^F4!X5c%bk4w9Um%qHTNOQEk5&7Vl-fS|xSTi)+&Rj=1?Q5J@qum}2H+~=s{k_xbcX%I& zUvI3En|2asng_ytb*INuv|BXY_AG zmNtDR?nW=fK8#6BkKTc}LwtYNggkNj^M^Glv*#Zbe6tt-VRw3M3wf^)FR0pP*M`H4 z=|DP0if8Y2VzgrR$lE~M+gIJ_X`FqRhyJ(OuhbsysvgCP_)8;*jsBfEqGKrkjdUJn zA4k)gS+HUgd>A%j_skn`i&u80uss`acR!=EAE(ZeLf z5Bh4R44-43sy0?OTjOi((llUy`EhWL9woAn*sSxMfyt%I> z>}xnrk~G8BIlDf#*O3~5s(RiMBf$_6OXFMS>b7V8c5mUVaUsS%rssXK%DAHMOBegh ziHp{Z>V3ZG%!W_!+AjhR4n(c3CSIvC&SJDz`eU%y)>dUfZM5XRc1 z_5F>CM5IJ-4@N4-x7SxIXF#m4m5m&Bef>+Qw}rHU9h%lRzKuC^EBx-b6W15s2>zQ> zI$Hnr-Fh+NDZ~vk$yQ3aVgAla7Hx77kvc7savVokza^^$ZD3mSSS7-m#W3vY`IPyR+%o> z9>wn9%TEk4V;L_RekEBi(7%FyJw!RytaQ>1=~@nkAis)Yl}akCo2$V8!w4d zFb5+Lo@%&G^^SRV>sb9T8+Dx>K6FIH#L$nlM5_j>_jQYNm(g|gey|6`x>51Qf744r z|G~P^F91L7Work2kC4Ia_H}7GJacc9j6NYD{xP?FCp@8u+$i(`Wb5U0#BDyKXz4EDxUo*M0|(;W~7GoB|FDF7W_T3);zB*a#}jF z8X-R-96Lf17*z~}t8aE`QG?3Jk0}_t*pGjhk&tG{4}{o7FPjig=w;hwG_HxhTa2^Dcdb4!+PABviC&LghlCb>PfJpc_Ii(fa?GJ7N|zYzb>v%N?8F&}-88nfUTkpjcj8J;Vuwmo|0X*GMyXi|vCirE#2 zJm+rbTg;ogQ0!U7ZgF*{CGMgu#Cd=Az@A%sn?G%T2cwEYY#=A!^9sRJGT-+w+fj(| z1n@w3O8s6jehuH;%B5ir(_ZxlBi^g&qQkY8pkoh)kn}JsOo(sh6l=A|Z(F+Lq8C(1 zTbPHkck+fRG(r*`8S(y8ANW1{)P&x=eLml)0e8eP_z6zQT*|oB%}>S?ibpTkuumK-OoPMjr(TfnNB+zaPu0xPoe;y;HBtE`2(43 z-~KZ2@Cl;%G_TteyZ-S#wO))??APk%yI%T-Gj8^qd7?LOzg-+Fs)XncMjP^^7O=h~ z3aS=nj+`$QuF01St_%Gx=Zk;d&txgi*V08V+xcQh3B4a7ZD73qL_Ik6>pa2WFuri~ z@4~3a`EIo1B_!z|RFp!(C4)$A6|22sgk{D&yOV0JSYauoKHTvq#SC(M3n}WF@hzko zGr$p9ZDJneNz#<4c27F>U>^QSPdW>cERKdJONeoPqAZovChm|tqHli!BT)f_$jldO zmxb8*@oB;F@oneu$20Q$qDS*cH#Y1WaZ0Ki)$S=`d{~((q_Oos5rM)i>m#|s_vw+I z`*F65b~aYp9_cKu;M4y2oZoi)eoST%k|%N`Av!>~uO)*Y*4Lkw>qIY3G^6i0m-IAU z^*^3E8jRtJMl=a^u#kVkofS`eF`t4E6T4+=85Qx^RpVGhvH8=y@+^{Lr}F&M<0)J|)#EQZxiIo$KJDp|Qt}Jo?55Ktz)-cFh}ht4 zywkfj53Wv>DD&#{BMytdr|W%Vh07UV?dX*{LpMGDo>BBYxT1d{kkOBHh9{opEu>D2 z8J*D^calCskAOauGbA#w3hNBr+gKxg#`TWuDUiv#YUpOd81k8)b&M*WnT>OGg}C!m zONAcvZJZg?qxgF~2H_$SvnBC9)yuieDOQU3B_dhp2j5)GRA<{O{?scpj<4hB1C2HM0#ly5-Oxazv2| z`fARViDe#tyAOWbcNE8(;&WwTSuebZm*5(_Sw3Ea7e#-B_|(!_oa21n@rgMy=S5By z?)di#SNTY88%OQ};aR}z`dY#K>zl%}fa{h-E`K1sZGH=B6z+C@)B6(oYJ@mfW!@|) zj@dIer(%D2>TmXsx&O`G25Om`hgJcfOvO4t@GCH}4j=f-G9! zpBL(2Av$x6tjv=cZrNpHuZb&`XgIY)?Nm3@kSR?Gu{hA z?8AsaAU`aU>u$#S(;Gc$FoLUl$vEHtx{E&H$r3;57~j4wOO9T{>)SH_9zUt0XF*8i zs^)*|w=UG^w|`|!O_?LAG*xVe4hjm-P@ zmpXca?}$G2_&uYxf$^U^njegg-C>z0unO^vy~6J3spFL3J4WV++8w7X>QBC~${1ba#$ z<5TY))v1h#S@HKAuc$umzA0fg&^=jV26xC2jmLb7dt!nLf7*;WkF&77K=l6BzUVAV4Mr*~;pOpFnh|KOXG);!p4NroaVjI6$z>Owsy9U=C_NRcSO zroiRDBI<=U2PnpKD`tay9fYr+Wb>*M2kj5m@lO%b#R5BRL<6RtTxts8TSHGRS8ah#9@@^j9QDo)RH0 z#enOUr&l_sLRM@1OG^%?10p3=;uL|jLlO2r<#? zVtm!+x6qp-b4W1&2>q6S2zHOs0*F9TeZ5+YDD! zQf5)kPl~e4N1QxG86$S$NKpVZX$E-2mOPe^kkWu@O@0ofFXcLcE zBD2nO%a8YSB|^z3lp^KkGVhJ<5Y*Q&MasYrYk60`6az~UMljy-FPFsk+|yN0`c#PL zO`c#OGdcPFlgL;qRJSX{>&9OiMn2*0{WGx?(@Sv}Hg#SWvdbnCgtT<{H0q%T z#WjV@*2!BWmY=y6hGV2SOUo7!5?^g`dE_MA0N6!w!Ek@3cggDZUU$WA38E)37gFO8b-gz)#yXWA>&H zX(sgZC2i2dtY)u*llB6sIF&6$87D?kguLq1e^fs*N7NM&k6Z^va;4dlLVBqb!4)Cb z;iBv&A-Nb;^afHpKlQCSBPUPSYUMS!BVHXN#_BNL*%o>L)76G#eCm7BVY#xfZh0q<*(Tu49J2kmvOflD{H>NV_-EP%<*_{CUHi`arBB zSI&_^M6os@OB8{2V*cxa%1?0YAs>x4W;jzr|G!#CmZn?#Gvx7NoOw{s1R>J2XnS)S z)+mada?X-KbOYvG94p9$jM{%F<{F3<^a%yhXj+YsDV@dNv+_jGT+A?Ye(LgxNRy%z zQZjmIbIIvZHjt23KRk`OjLddaNI9tVa*5hYT(_#nM*pY~pUA7S4lqW(g?KhpIl0cp zOf_usq>9970A3f>Rz%+l?jJ8?XY61fNIR(KbkXaJ@HDnlKI*CwNS%Kaa}{#yqu9HU zR~BUl2GSb(`J#2;p(?Bttpg3cY&LuvaPZm6>>02s!PE>^gRi2>=-KKMoJVSy0y{g zAjBSW%e?CM!}2XFmpa)9k<3E9kVSTIHeMhtqdv`RMYI@^;{$(rV%{mH2O^SxMEmlt zHrOU^9V}FbdGBTzo6@FE>;)B4S<~kI+NB)lK>SfIPRb`YtcVvfT1UN|&+$stL_)3% z8UM|*M%`~xzFA9$Pkl!{R0AbsTIcg4?thsdyc}7%h*-L8#h%NG;j_KGBiWJ2Xn zW#Ff!8e{4aG2LdgqD4Y$QH@P15)ZJIWItnxDc*eB%h&bDU_M2O&Q^aIy(}f#zv27Q<~8)T3MmPr z*d@A@P@iofU2l$`ZHmd`TPWLcDozC68~ad%7*-6Vh-Fu8@`nW<-@XeDm3EyZ$)avN{uUrG!*NPEo}D2X$~1 zA`*+f&SHQ13(PtyQUw{kdBvjJIRA}!FV&X_c|S5#gqUGwT=6CqitoogW{NY?F2>D@ z_ck%7r1(hA7Acqub%~Ez$X3vcQ+#E^SV56uDQuPfe2MpUOn2cG6*7Z>#aFP5lS~R^tzXRYe8is`|;ttoK$~C5+%nsr$@$l5-}gKY|1AWQp-e- zW*P3-y+g>#Wqo1!tEjG=l60+>kgaIKtdSD}Re#An{?r!LvEPHuDwOe*L@$q|h z^l^W|r{2$S#!f0H8~X;!DY;|TYl)G97%eYnl#bf0oN0;I`Yc}Jr{+vI?xYWqFD>|Jr=SPXET(0tYPe<+?x(tmzPuJ9WQx&Fi)sF5eLlL z6Vg7+jVP}Nl}BWLnJvZJjuo&%WaCi-miK?+L^9$X^<4eFTF~=TznTvE`GmMr->*NU z&TETc~zxRQsY|ITFnm^&b`D+3+pYG*icXav}LcEmPCZ zjXF*ViFv#9erkF#|AvtKrGY!K=Gq(;Sj{c-9u;B-bMtEUn($_-d9;l&mYOH`SQCG8 zsv|$BBFht_V}Ggp=#8jxaU)X|IY zH)`5iUwz01g|tdDTvBb8D{8aaWc`u%)+Pmp87eU?^h3@k#2+%DNEb8yrI!65kB>x; zg^{jmwPf_aRhv=IgNR54s$C(T@GgI;-VAF=g}5`P(93qLRR2Tf!6y)QWBV@Q&%e=M)GCee%Uu6i@G5FAs79lbsf9lXKoi-8moh1=JY)!Z(wU#%mz9e)*T46ulK0sW>4jMKcuaS0hAk4l68c z1poQ>oR|QCPc2!}e|%4Or#^oeLUe$zE~kq7XUw}5^265|rN-^Y-^l7GznwU3O zujPT>Ng=IcCYcav8T_TU7o5y3WH?s%3t9g7{oKtH3WdC{G4FjJcb^uLc;Zzc)~P}{ z5Fa!FFJjKA7@m5)gu+bdnKz6#*5|FDpS;GT7S;=I)XEIk? z`EZZs;}e-s%P|uG&q98dkqx$@)xpe>7S23mHLbLodG{6xevGII@rw$qm7WcAm|B_N zKx^5;)rg*jR(4tF?+t_%SSv^RhyUj36_NGV3P_3LQ&&A5KU;rf8X^;t0L&S^MNOnH z@gCKMn)&>M`Nuq=CLMv@E`&%MVMStVKYCdU84>D2WXc}k>a>-d&q6yDJFTWa&miwA zOVWDyY$ol_Z^6VM`IlOF#?Xeuyi(pF=B1&MXwj{iI<^TB2cQn9LRQP@*>1Ld@%iyD z74&s#w|zKkR)~LA8~IyvOV~$7$f(%=O~}?}#C7u%V?hylc~MvOB*Ir3<}fuG3hWmx zL{f$(bO^D!(R13mr-_k=)+5)QKW(OmUN#}_)P-EgY6o>=>(Y(rJ#IbvVc~uoU;40q zAqMd-zG?Myu(!RCoD6df+o+BcK82Wn=(lWR=fgL~5F3BQh;$n_ZPaE>gzGZnnwB`C zCM0+C9!Em(!>DhYy**|Q+8#KqCW%yKoT~eW3_kTMNdls+T6zm?uVoH!2DuRX62?n} z_{QwOwxiK1KEal?M5WhubIwL>+q|QCZ@VXFey~Rry)jZa6Q*sw1-35xZ}u}IKCn`w zohT^6r#^qRa7KsJN}bF)&yG?-L{2%_fuWt(4t1N=c8|df_|!L&rg7bFWC!x6h5H(9 z?-lPxUqFk{JH{K^6@z2edEFMDg&XcXT(^6^fw5{K?a_>QA+5VjhYR zu{8WW@3X^aLF#>=r?I`5kB&F`>uI5ms@#EF$jKFbX}WtFXV;3{N@|il5P=O^ zfyjT(9htWf!%lZXP9%^LQc~)?-~QTD;0`GgId~SVj5IMr-%4;Xeu7;MGi9w@OK8QS z^o6qnbu)j?>!z2}@SIw0k@Am-<${(xN(Vm73AX4jhU#7SQsXL9t1l*|F_QV#v~ciX zu7|Z~G{=8a%0mB}MRPo~@z!QB^jivPT#8P{JMC{N9 zX?oqv4=g&5p+1#0ib8QjR_1I5^ZX57Q6Yz)z;natqk;JR@i$VAcr#gKN@3?0F~01W zL1a>goK>lX&YYod{#rt>M4!Z7qo z1O^OC#`_}$7R3;#s@v{)qYtHRtq!01y+Q{vk`rc< zH5n?-Fm7A&5VL1m1d5q)ozESkq%C^J@eO!%8u_M;(L`8B*-rnLCKv%He^YcOK;#RX zjYx|bsEBx}*p*XA!@2T8Mud$Jxy8{FtZUYdW`uk#;?8_yJTD*h^N!vWG2a-GQy)g8 zg@}&P-f`LSf_l!AY$94QPhu~q8$D?opa;XHX$M+Zk*ekxf%0?<&Oj3K@t?3&(}I;o4Br$jyJkn{x140-G*hn8~wlL4u6jw=L$==`)#b2)P3G?W>8c) z)s2?iMWMO-w2Pu0jFNiP+@TL8Oyxl3>b2THKa$s(mtGkG9tZz?Vh3S&PnUxk0U`~j zywSJeJ(rF-B`zWJm$DfFG=KPvyZyz>{xA;cG369{wfN}H6$d_!ekmfNbsyI4`Yiro z?SE{l4;j7?Ne29-bC-!~*XR8bW`zmKh0okdvMzY$^x`Z=v*MHL86;uX?uV=bw# zX%j2eUDB{2zxH(;on>4b&G+_y6^a&j4_e%cTL}&Y3beRu@#4;r$W!_GCpM82O$&LKS+n+`#Tcl?#8;*?#j3jq!)q|u{1pT{dRMH z-@Z8R&B=fZ9lv5Twv=D6CSdKyZ525O;{oMyv4KWltg-q1wYuQ;4|k0!eJw(4qjlq| zE1j8mInA^;Xsde@j6s{m33nW9gmBXsFDB}X-BE%T=4$|SLuyW(r|n_l}$6W!G`WtJeG;qPmV`mwcJ zp&q*?Vl9=97agSHO?$tRbEa?pRoGAR4^p?J-GIN0GyhNeQp-Cwr4V}CINme;{db6>3DEC*B(7V*iG~Zt96bPI-eJ7jgGP(iNy4xdzO^a4>@ z+EveO6`WW1u=f~6cR4RL`E@mJCJKPFQF#}!tuMxN$el+aFJzT2K&KJ=pNn&mL{+9n zY!!=++qJ&xfQUk_Rt35Io&aIlEv7SEuW)5IN+=+-?A@EcGZQufWjgyKoWMCvTizJ% z$#3SFeuwsl5%TrDjbUs{PH>w=yN#(hRcBbeY8NejV77}n?vFSnZuzYU^nbS3y29?M zB_^_cJPWs$_Muk!p`?IDVs-ZnfmVF^&G8J<>UdASZ_S;^+l6cc+cG?`)5DieNm=6a z!{hWY(dST+8>U280z8>058!Sf`{!K*rrfRi7%ZD>a-rVR$x*tI(vR|9jTvF=)fTSD7FRQoI*Y;T(d**&YT8CKScmK?-uKWNJZsv#qnERI z{TdjHcyFs9_XT+a7@d~bDMrW8-I5+uMb}y=WY_1Rf19S#^a2}HhY^%a*pvIp861@0 z<}<<+p1Z!*x}DZeFv!pz%PckjDt4`N!1kQ|%7cfhKSv@W{e~szzWFF)vU)s>5y-Fg zkLz#QHTGQX@QMfCLS@Jy5V4=BPN;fO>kD)X5kUrgMQ2gq&K47eBN@cGz9pz0E!Ip} zTZmC`FmDj&Bi?1b*vz^vWd3Js*q@D|D9vWR{kV7P-zJtHNF_;b=`%uJPnkeVO#4CxVBLl~e#^pu(yxg!e<@ogWXSlzdfQt?85A-pl$)!KJ?1!m&bM1H z)soHUECjcsIealdg4iwY$d!bq#5!#AZML)%LouL#0;BbvH!IHC>1%rMA|OF{HdVu) zAhH|xzB+ib4A6H!|B}x`Dm26!&gJ%x^vL<bXc{7hGqm?xjd9^AB2SSX|c5DxZ*`6UAJlQtoaztIr~m z-$ql7q5z0Yu}H}f`7IJ9tXL=#s| zs~eNsY{`f2Q-X^#+?=bTCD+sGJ)_{$;$(?W0+{hqy~VSF4&-d47mQTz;=;T)9VLyA zP8qfg2a!c}I5%w>YW@U=yEcjK{lkhNp--SgsX0KouReuax#YGOh;aX3F&U=hGDy=m zLipH&K>Twn_(I|OeR~wzzf44qulnyFUO!<>3%K+wZNR}fXL;{B`T^FW1u zMusKd#p5LQCh{-DT0T$R)PAmd?JP_@u#M~pBzt4Mp zQOMlAU@DXJ>1sU`1@s*c|360RG707x)H`9j#dvPp&_Jb5o+b`No%UxRc8eS*#SQKe zWr$;tRa~9enZM~x`gW3*EhYbe?dQ4!M66$bl`UZ6-icM{Qt#sYJugNf>5jNuu8wib zVWxn3U1s$*J0gr)+wh!86}#HqEvflC(Cnb_l!p|$1%rexq(%L38!d7j;!$c`$L&q7 zfpR7jvayAUFZCIP_ev9oO+B63Kr?2dY zf3J?kr^r>CfJ;-+HCb`uBY??<7uc)%W($=nTa;nVrgq>-7K1JRV_?u{jq*B;^c5r* zHZ&cy|T}RNXY!nY#ej0@RXmRN8xhYv} z3tyIZv@WOOPb!pM8;?1F&YQ}Nbq@=Ry=1&#s8WU$e)eIFbR@sa@kkYvEov#VH$68+ zkPr4j+)ts_wa%BKoQ7Jh59!%B9N^F=S*U9i2m7P_(oNe zv-}(d|KOL3;?!$~7nXq5=Gf&|j*;95A@i&q7G(*8dJR*CZr(T|q1$c)9)fLwJ7 zE!1^8i7406uU(PFQjz($(;DThcaX4$J*@T}C27uPE4YHj5LE_G+waga9!fgK1Z-Wl z*WK>Q%tZ&iSljje1E~nc7i=22#;D2u+w!TNc2uf^uR#y(PHav}n&HS{?cG<4-X`(Y zMNPxtHFvjl$f%guqTUc21+}j-$8 zBh1IoR3PR)-zuG>Tx(MCqxyh^!hxJee{9m4l-?<2;-+p@&8QUAOX^1&dMhv0qJ16G z0WSefD9c+dh3|SC&IRmsjlXb?p=b#?Zy~ZpWRhF>b^B@`@dX($~o$hMm~#NOtjlBky9*+Cmc{TBYWOuL9&~$rMmbs z12Q9`sypq`E4%0Kr3A<>Lr!Y*);SrY5udIX(k&J4+cK&nq*4>%NSZo znn&>@Ki>EE%0GQ%OFiv3RF%nX#5WZI*_#reZ*ASk+x1xPJOptlxHGyTdMJY*b6Cr|#n_ln zxXLp5)T}hX4|%Bu!c|U}3Rz4+(Vn8L@~W!cN1UB;`Jj+V+vtc(%?n;&a{th-1JW$Yf&3v z^@ND{<~;YS$M%7WY4j&rf0W4tV_*_%7xsBLL5UKl(_XfOHLw+xrJ*D#;;9AkhB--E z2hxa!Jtb(Yo==G3mltx6_SbT&CrkdT{nR&EHFZ;}`w;^u6;hXv-N6JTcA_HIp3fFA z*+|lF>;$AyFjoWnK#{uKgm1VHPRw7yZ&4=&kh*ST+!%i;a#>RU#KA7(?OHdc?b|0p z`^713xL%Jd;1?s=4H5S{xGHM@Id<=nt=+(F?1l5krq9!n;YOMfi5K<0Cg;C+ilUeC z*+M#C>>)ZgERZzISQf|-zRNmUR&Ci8-~Z1qUBF?pW7;+n)7-f?T@!^jiJjj3N+Ga_ z)fftxgn#uhxZqXJz*IlEl2vtIa68gFm-a;pb&wM$c|`t6F%r2Ry;vZBYiRgWQZ4P%aqev zex44rRtmx>rN^XpTepzH<5Zvm3FsYd`$1IlTd@6haZoLHLzRm%J)$;(`C=i+V*X)g zwHkWx*p>;86>PH3f7!Z^2-j@NbfZbz_fG69k5P(G_^Iuteb0VSmf6CUb?=rq|Hfb> zv%wQ;@}`E@&ASl5QgA#;wb-~v4dL%eHDae34Cs_=J*1+tK7l-b_8`-`py6 zGMD9a#7_n5=Lt{a`0<{w7C|MUF7Uh;O|zn?T{;;KZ61d{7-Sz^S%i&@{`q!eSL#PG zLZ^gd!qR&w-dpnIl#RJX)k4woF zl3-9B`XB2Up5^U+#A2uq3M)63q)=~a=HNfO#k8rrW3e&}O5>yNrDIQN&97wuo^p(* zz+>GjTw=Q*29+-FGtxDSovK*Z_FDX1i4FhWwcGbO@S+4<&(dE?R z9MWVm$Yq)(^3{6TFvn2tr-(JgqQaG{=jg}JXefP%%V9fT9M18QF`eQ`MM}8)&It)? ze;fS1qeM!kcVuAsB4VAY0oGf5NNoJUkpFyC%~b|3m|AtSwH4qk<~P{Q;KNoHR68x>Rez}S0#DUqxDh}M+e$Ms&CaT%D@@njC7P?-A?QWQF=iS|MvwLT_ z_dRJ{72S4KdZmbNM@1Pxm6e)B#tNfvIh&5iSDC>U(=;H-#u(S#x#PnCO8*Iyf1NrO z*DMTNkw5Sk_%x{E52-w>W*3^SpQAOjsE@k_%YWM5zjZi7pB(O`9%T(0HQrd;^E69d zrjpe;N4JQ&fs;R-%?4Ns#)NhJN{pU)Y0JWh~10_ zva6-E!zbrw!rBb+p61{|B+j2NIfMKIRAJ=0ege=C|h;#Gce=c)7xme;XQs} z_xeFZDBpKR8k#h{ck|jJvj!&=A~GI{6@esvcx^FP@b@KOz!KPkg>^ogb0H0Sf(A;d zc5$HJ&NtLnT1N>rB+T&wLHU5$NAO^sD(wf5=ARd>?D#xecCZN_irsCDA!I&|4rrCz zx&&i^*IfQKAbUa0PMsJpF#zc+1;%-)GPFnHHR2 zg_8oRS9a<_WFQ0w@iT#&be2(O-*>4xrQm55WWX~9+y%-xXcKT?$N_XpZC(u+s45Z< zXWS~ju`a_*XVVO7i(A3^vWO)riqIbT`{{xab0VntK^T-Tv^qx{9}plEdnB<8l3d7# zW>QBdWVgu&-!hnH#5tz=B;#{LTxP|sW=*%^M^Fs=k?KS?n0zPjooLFl%tV~f@L(NL#77Sl=PW?yf5x$-{AjiJ zbL#!{^1QckA*-+^EL&HcYECVqG=5DU;v<2?3%w*K3>oC4bKTCmeom8^%c zRffm)`}Tqr7LtnDt%4LJrNYX*N?1$>9ilWImHpoOkjCuxt^w|1yC(xmJ)dt&#~`#9 z(6sY|EIJ~rSEUNb{NSeeTySTfr|3HBry(JY#*pgr7sfcRce5iGY{!K{3!Mz_lu`MD0qKr5t3sS204ldUjh{JJYfOld9jC?DR0wngjJ;mk$HmGGQf;* ztN9uUDDi#;OP>%8>e#d3Ai8W3Rx{=PUPywN0N=t3naYiTbDAmp|Ey$L9C|zao@^uL ziW%(JA7ds;sah?q39%gLp)UVH>WA3K1CkV}S8EoLl@TSBeORG&i=`V}iicQ7z*{Cc zBb-O>2}<)%HX1PrCeT2P(mtP4YK?h>uF_3c+YMBVW=^f;^`S;sR+@kc1O``#K40N6 z9cCiZB20|uFRkzJ{J3d_e^#=(*SH1cjH^J@q-aXR~RiShe^SUFgF(`cJ6{7&j zys!^#3w5V;^IDN6rx@m50z%l|w+>3zTz%m6M-__oUQqd_Syy?UXHvRtFZaD12jcv> zsPW+K$ifT|$OLQV8cpkMzGbtw>LB&Y{b@_J!3U{fx2Td&w>#w3^1eoVxs9JuOQ0Y% zs!Sj@p49C^!lr*U7~J4)^)7Z7I}og|Vu7$NAgd}irC)Tp4JtYTv@Z#E7bw-KaC)m9 zzT?L>e}%v*QDhjRD6}I(!jwyHg< z;gVuCF%ZF3mjQlYwjG-ww)o@D2ZL>Gz`%sua){N9^j2Vm<9BI**TP;j#(s`nURj(2 znq-E);;+2np*f$~gt*e^|2lVbpkJ84IW7kPS3*jLxt!QDtJ$V{fTVfKSNdE5cb~*! zN-X_tEmLZc@cL`WUbj`)T_L7j5HBrf^VkYJ?8sn3+hw0ef1r^DX-~!&dM&U0eo_3I z>vWJv&FI~);#ChNtOHJv)GcP7A60rbJXwV7xjsI1Nbm(CkW7u}<1A7zlL}i%w)i{4 zc8=5J9Z9t-iCOx?YhXCZ0>ois-58<*28OWJ-X-x4_wkYqJTX!?;ay&d6zeHP8N8MA zqncKe8T=-jZS9#VOHl@n5r~@IXA@yG8FZH&Ga{ZhOAd)UDy#MAn~r5S3#)USCSobD zY5j^UDCE=xc)pWor&W6&OS{Ft%}_MJl&VkNYlR=*(< zg%vEr>cR~ATbh{F;DbV!I3>5*C~^>L-;f7b-spMC7B zUu_M8vuYij3_Pbl#(%R^f0n*Auh z^?jlBdt1q4;Q;rIeAp+)DDm@1=RiF6VI|J?y%~}OR=Ru0&`3p}G7q%v7;MR6o|puPewZ%^*buj38zv(;uTxb0Y-fqG>eYGQCT}I2 zpR)i~SJ{(gn{Xf@sllg{mU0igAPO}kOO}f#k@U%w*IE2~3yzTbxc8Pv)P`y^(q`ZC zQkxjlxs00h!a$MK_~@S7rVE|snl4wrtAJqPt^Y8V@7rSaeh-iRmjT$!Ot17)8C2_e z0qKGygsYA!TjTos4I_JKHq)V&l|1WWuU2iti;mnysjN5-tF34gHqiBYIa>h@3>m*( zAD+%w7%66UT@;s4;-&|IN%y;{a7gi)Xn8n{#DVfmBa`2Q+11~Z@goXWalp<&ddk`l z91$%qF{+h>YzsVLAv_hWIk}5bmIF5chCqGTa*YqP>u>FG5Bn+pbF#6ak;8vay_24! z^sGFO?utObKEu1|^^cG`mZioH;8sWlh!*f49=!TF%V`iYaBuLL(cGgMIxBTh&C>gw zm~pb+qv;KpEsKWoJuUaLYPD*`4myG8vJITSflSQf!`ANNLm38 z*#5az$f=5oF#3xN5B@sk((1F3Lj^uHv%iV*tF39=t>WZ)rb`+lUTde8^^F~s#-7=B zU##=2v`}g0rzUp9u7RPczeMf9QVXcOYM?_do0g#|3uh*r(~UhKH|HdFZA?^@ud=1t zxuHt2Id6REiQTTl5mnvb4&Vy@t=0b;N>G>gv_+iV-cFtNUW^6|K zy7`J2Zq@AHLszy!>z0wzijfos9g8izPq0CvE2C&EtSu1g7}8eIP?$;T{l!oem9eQh zplEN;E&TIKSNSh9YTcs$&D1hsKhcg!=V54aCHizKH+sPUWNA>IEFDA3$2i>?S|aQ7 zQO|6SgKsPafmZ{j4r{%c4PFrfmy}q@UtovRwGUiG@-r~8SE2zSvejpg0v38KC%*}7 z(1Cq?S()58{8qhfMz?IT9m-kJn$33O-6ZzEo|zn4Oau!uTNLX<6kwCp60bw{yn-fw z-DvIvNZlpysk(Q31hql7`1P4Uz;A9=iTRJs;Tq8kQ*F*#oJZyf)laxK6w}Ow;jZZ| zCzVUSKsqAypn?DP@!=-Ck9EFQ3T8i%R|qHd>WmGH6TEBC3NQM=w0H)~HetVO3awKX zzWrjh0T=8}@w+|)oN)Oy1#FY= zCgUlFmd0xr5Bv%eh6NURW8z5y>NU8%&DUD3YFH3X(^_ie00b8Ms5CljJ5TUYskG!p zn9o3#--_!*J9WHavwf+2F(&k>F|U3{5O_DiioFJ=*dO=60^M(Rye_BSZChe7&ppd= z;19q)B+FpZ%cDpE+mDub8R7sv8G|g7snrO*M3C`=qj~?h@VrIEX1DMh!}I@i6~lk! z;W{sV+aIunaig|MpMF?V(RQ;Q+H!^$3fVQt>_?Hi*nOSlkfnIcxL3yI&EO3gEVj(z(TtTf}N&4!>CSl(uozM*D^)GUp!j2B;+CMv5mG z*9hkpUAmB0V3Yoc8qo|vZz<`OZsrikSBz85A-|JvvwpD`tOc`J0Y4! zv-#2@C{3mm{F5Ey-Sp-SPB|s*0UAgQ6)!E_8r?yB5d2&}rOaRU4z(;Nu&Et&x>O%2 z6ttuY#w(BWTIjBbCq11I>>R!~E5EF2Rf#Ggxf9F0T$a58CG1h(k7J_T<{VnB;QxJX zJ*er^uIXtFaWNM@OsmBol+n;xYNxpR9~uAQ0IQD+Ce0J2$dlI{zb5@A=QACm zm%ROl@9$tUyv+|1`D@JFEImfD$JhMxEIIT~kMj|>2*F;?i!WEy^Siajb@69hAnk6Q+dmjt@H$%1%$W z4jaRJf6k{nLr{jp&E)cDgA|JX|LhL@2U~m=<0C@`N&5Q7_A)FxYw$bC#V<81ULq8G z0wt?#20K$5rC)piLLGY$oG6t{4x=??=YUpM$2z#91?6U3KNzZ5Fc;B0;LK=xw6JNB zPa_~EK{$Lq-TMCc|GWB)M82Bfdhs$8&+ewP;QjV(e`Ur(MCwV?Cm!uppIH{QuEt)I z3cci;w16(9<*V=gKykz8@jnC%;jhNZ*$d=M>{li-;%x!=p9e*l!aK2gxbUBo8s5b1 zEB3T5VW*il(lT-x^UMe5V)H}PMnzPu*P(;He=Ao|gPR&#f)a4arEv3gY8*jWJK5uc zSJY^!nD~Tj*DM&`+N?4DPH<; z&U}X<*$?Gy&X)rCHQK&<=)@Le;`9ON%w+bd<+|Op6l+EJkldfeVa=Xv;-*=Bq*_?_ zO7{7v z2cVxWJ565P)|05MbNhjo_~EG-c4P?jAPw^$ww-g_I^Qfo3w=_=zy+k5Y9_a_H)xP* z2yX9`br7jhZAISo+V0`6Js z{*$E*>d83#`iH7U=$(O5XO3Dm&b0zg^IN)EYn0&4%USL%&L$mbMQ_zFN=+Kl`$I74 z`(AZF?&ieyN*<4pgigwaOWQ8A?4ZYUw+h`->FS)egwLMitKGoYb0;fzVwwZ9wZb0H{V>ObmlEFFY5P8=hu%TBfeJM*!o(w&DWjXULl3-u3 z+Ng4s_V71}s@JXQy_?LbS6L!%?v>cpd1r&RrOjHkV$l4}`)gZxiWf&#H?Rr;nfh9; zS`VJmlo8!rg=7a|fup_6G0(#Te{Xt(4f;3_jF?4x^y9@`yV@)chP^{sHoO?nmzJ1u zHQ6!B2szNIHj%D)k9G~iJdX(gZz_zvd@izu|H43aJxW~qrpfp$Pxv0VELTcFcSGxB zmp;FWAN@ClY+Fz2Zkoc=0SNj>`i;3Z^-aj96xLhK!ereTN5eH9FA1t%xwMT*L5un` zJ*!WjH}W@bBKlJG@*lK@V6~5hl>Vm_5!sj!j}@~PW>ek|KN~?zx>>&XlhRwC?-D+9 z+URyqWae5e z+PIi7j`7pOcA=r~xc{-vU%WwjsF!(yw~*bxH+D(oz2vMKC*b=|2VKhl3!F&cnZ#(t!#2VPox@;SG`QkA6|M1bW|38*B1iu$pu3O{zt_S z*;EZD9<|36RmVo0U-S^VOgt2A2QOc* zIkJIr8{-c2Ko3PY^ds;~c!yry!rK&|^y9FHl(maX^XO;8e2=n=00--n#s>?242NH9 zEfW{9gAOpD(o z9%g5@)EccRx&CTsbE6sWd3H_|hG+yDeq>|3nCSteCXFXS58gWK`(RMy2gcNYOR=;@FFtyKRO$rmTM3dY~$+7lofd3PQ;67b6!)j74_aRSCc zY6mdn-E_q)Q`D-HXO7bM4!DSoL`7$Z>OsZgS1}7L3w_vA*8PUwpTIDJ)9_?lc@LwL2T`XAven~-kGN99B^Efd zbG3ndiNO#!u`Nb16fE;7w4@sDqU=9m2q0eRmnhn%-h{4}qx!iBfM(+Q0F`;#yRF)} z;Y7;XMydE7J*D>}4E!im>>cRX;$~smbiMqwb~Vn}D|nE5x5@Z^4xZQD=)7F4VEaA- zopr%uA0PU=*tAkl{*%=XTKNKX^+#erz}^y00LpG<54*L&q!`6nnA;)0`1A=E_z}Va zi-kWM^F4Tbv{rKq4E#1SMSWo+o7k}VzxySk&U|H6W9QK3v7J;g1ST6l3|7HUl4X3< zn6<|C77?M%O?H|>tVO${xO>xtxO@i~8SlYKkdknrqE-6Nwc#TEbyDH~cBgQCBJ zs{BW5NBT?-C~74{)@V>4<8QR}xCt)UWZ979eWO}q9kl(%00y7x=2Xf)=j zsyk9?9kv(jHvp#?cy{68T66DIe9tENNLlhRebhEES#L|4%B;yL;>y*_s?h2%dTB22 z#Aboi3x6#jWWyNh(Ni|CctL$TGW0+G!xY-Tgf=y^PZzz)#r4dmX?Xhg+kJ#|4|8SS z3?^o$`|mRy(?hADSSfigEyqq?bN%l*o9ugS=<+n}T7Tw}wV_+5*toW_cVl$mi$fD% zjCbcZfX*gSyQa8YsUI5xo=Eb?<#r(lEsB(JMz6wjBzF6QxpJ3de4N1qt1i6>aqY2WN7EYCxZ+lo=!j0otbTa<&Z9c?GY{Flxwm8aU(T4g zC*VA@ff(l}bUHX2(Yj3^Cc{KJk#|(5H3k;_T8;8Bn$qrqjXC$=t~D3kSd~U{qIn6t zzA$&Wbymb81*Q^dE{Vb}@ep&Zhl`t8@u(w~@)520?3r5Y2qUy zLYiz4)x7d}PQ+p%-*3R~Oww<)sa6I8I7>cd|Ei2U4|!rXozHFR+@h22(jD%1TzzWU zaC&evO+EUzFULsc5b3f_XK*CG-xIm`WTGyD;3}w6Y_r9(d8^Q7iR(6oq4()`D0Nvd zrsfgU)SUGB+nxK^H@vezo9S##T$=~?TeaOu#(%=utxQ?U1X|*LxBeYsyxa>Mz(Tjm zoJl=X3VYZ?awqt;ZCdNfp^_5nJ#(@i-H>U$xo$nW;y-;wH0g`Jwpw&c+}ZGvYoN@I8z!dDT2xc9@~ECs#RzLxyGX;xi* zCDo-WQyQsM)+lFuWl=)j8N!es%xQ5S9pI|t+Np7Xwx+0wdn4)8$N#D|=Gw5ZrnfVZ z)+-vD?G@lY2{Ar`1l+wH+MAf*#XcHpCavpYMIWJTkBu{^UOL~a6uDjja>|t61Y&_M zXwK9SY7%TdTf%21YuX6{n**5FEKo9aSm?utit|U&luOhdi~^AQm!+?UaGw89{0-6`PCAs~_yfA|6W-OWGr zwemQ+m3meTcHVs7AH@+@qM&*Z<2Jzr1Bz1zu;{oDCa=GcOGkm>QBIpj?Xf=V>gHyYFUmxia4OH5ik^+LcPZP z`l>De9nC93I|0pi2w78(tuehhoC5QHeF&f8$pWKOS$%f7fLVE)2DFdxXT_Hf8hV17HeS)d&t^kvrMhWr+5>f4Z^-xjC~z*|0Xu*QnqvDl2O>FqR)eq zVG?~l*2B4yf@5u$b}axnQ6qB4-R-aA%UK$!4#p+e2S}mWW3_jOrhgvImwj?}gDL(p zO0QOp{A){pGph<;iV*l1Yy@3(QOQ1J7Ul=Pn-eCctsF`lOr2*G$3eR}g zemA)s)p_fwL?45^&2*^LyKibv4JWu5HC0U`icC-Yt_dHl#)-;R12D_e@pl8m8=3y3 zRkjo+0l`=Oh6a`mg@$b;Fu&!!?%QC;ea9ATFuOp@s++&Uh(}bnv6Ln@Lbh?sUS5h3XMyPk}1%&;b;|X zpv*h^EI%{P6>zAWook>z*dI`tRKvg}K_kxz#58{ec~vCvi{HU$Jl*%l>=Dp6?KV ziOO{k-YLtxclk*{o@9*+4OND zkfj$G+!GF2_#O`r(73r@v0N|L#fK!WIB`z+w%WDl(8SKOB4+r6!!5(KqZ%gKf)5%R9tjal`g-55 zbTxKqoH4Hkc##O39ElN54#(bz25$DkB}Lr}yfq#@^Aw9P?}=QPB;$mQx`5AvYz(>^4H|b{4V-c6jL{RS zZk#U@zY>Fwv0;3H#(3ZRraRiL)kM-9^E`&5LDJ}~8vII&p!#^A{`H8h+q1p3_Ui-B#&Xn-Y<#1 z49v&hsm13pajCl7`c0|Uf_$?9$m9^$6nyD`JpMYE!i5JJ*`0W$-iC<~a(p(9jx8=M zXd|lq=e+HWMHIG8l*t(kWEouW*SGdeyA1h>byx$AeSZ`>{e8i50jRkf-}UE*6V<*R z>+q_+dv;vxUTlrKHh&`v!F$4T0}JUCJk+mgwsrQrMgdO2hKqCjZ7{P=2A~z znvL{^0MD7O#_E$^oPDq#IOpG-iu6Mf*C4s(M&{!nf$I0I9=DZ;fr_*_DS5&NN4H^D zovr$GqLXjFlFG~*K*Y6Gl&6KpC^99~|G$ps!<0AI>I%m-mO>9#HgqHPQl0}o>sMTC z+pHqVqRx3QvV3pCL=az9fTSUvDSrbIQ-zj;*2#+-=4~E?$4kv!a4={MNO-$YsdE?9dYpwyko2d2(JRN zhdDievPmD|UVknp=wc|j%O79OsUH15H&UAwb2lM?E?MWYp<6q0AtZtDbl)(iiV(>( zkL^HsDlZuRTz?qlWj8W7t4AHB#F4z=1j5R;1M5R}6?aLMAeQOMZB@6*XgkN|ALW&NRM3q2TOoNBS zT9j}#v`ISas8Ad`zBXnq9rTONhE{?`OJHyOpQd>)yX$|32a`O+=-5MO6vm7r^Q>Q# zU!8+R(NPw0zVE*dw!WovdT%sX}|2(L8r^s?Rp?_#L^4{Ng zs}Pd{h3s)}sir>QgZ>z&WK*=xeNuR4i$3EhOJF@*of$D(Y6`lH!gQ4_LI)9Q9f)BS zcn_;!>iga9BFjTT`j$1*t#>zes^WS25#`+B*l3CfIIUd>@t*E7_2bh z*o2R^{N9$yiptrF)NL`Jy|j?SHvIw}T*I|-g|AiiDVqO4zMbXL+wG(IuhWEWFMwRrhDs~Vqp@~K=4Xt? zNF?xv?=_Zwv_&t3!Q6_6b+@6cVlC18jA0UA7_8t~PC{68#x1Kx&rwu1u_c$a~XDWx5tEh;#V#v^C) zerNI}^6Q1>;Fq(QHN_5TuY4@FuAES%k?(GYD3G)lLJbKe*6=9zL#CAJvif-i8x4_~F-4+JqYlYpm)kF`mN-Gh zdqnH0;$h-qp`j{&{n_PRzvAjEy}f3VGoT50vl}%!4}qoVb!I1XDA2imr>uE{Hp#jZ zdZCtFtA#YUzja2pd{JHW#v-=;f5>wR$y0KP=3ZM{q&}FXK)dEize>opSWQKHUK zpjb{CuPw9$^m}jRkEe264C&vbC_UsqPPop>uY3UKy^V*L4{kq<$MU!-u?`2n4`}&p ziOF;qORyh#sJx*{8~D?-kahNLQ6)ai1N{#Pv)+NGVTuLK?u#(Fdz_Vjg!jh0{0XYG zFiOat2d}EJ#e9^XOjuL3)H^S1_%?>GmMdhsw{`>!Ffnq1>TQ-YiIw*EVpHxOtNtrg z*Y|i5ujPWNB>&dKswF67!;;VZlCkWNF;8G|J%P$WX0d19h56Wy7MGM%pKv*S**cA; zjLoAC3Ss2>(O58)@Cp4-vI$B4rsT141vX<2)!h@g#r&z|()i7t3)sg?U+D;=Ybt`P zFKr0}ckm9`51Nnc_wa4uDMj3_cX5||)3uu3{K3QP&g#On-V)dnbS3WHN z=9P?9#aQxo*rLzs$eSl*+NSN-Lhg?|k^-jWSXm9~a@@oIk4%i~%i6|qeTnQoF%=7W zwbI0!KDA5}+mhYuW81jBajdDZ$P-o~gX*sQc!E_QM%87<6g_^0NJdcau@HIqH2Y#f zWpnu}oX>whwk78zoV^T0jwi}n&>ZlWJFhR6og1?v_!VxhlUUw_$ai5&dz%f6+G3bA zVb&uCL%F6`?k*3b!x(Ki#0?aPv^;8xXErg$D9_trd3(ba-{7|@NAG&%^e}d|l&liR zfJKwcqaHvZGjUGH(vHq`L?k-lLE;&IV@z? zi}`nYh?Pc&>^53jtIrx{Xe~Id zG1qA=_k^`~Ys(XQ>lPhmSRpidA%nV-qh6z^67OkGw$aK&!G?1VLSh;Lk!T6VZ`vaT zhi}>?rKo$YN2LqDPapk<=Ie?lF-L5&nHzsQ$*k)J^PTIL8O4RXw9vm6k~yy|q(5TM z)dA%GVU%MYjwha|n|HQM-Yas237LK|2Wfs&M~^E=5;ykM*cfGElw)K4@EmLe4>^9H z@yfyI-Q?a|!+-7TIiqK1pCV+|6yH_Yh;KT3#m#|2PF`4nQdpGPdy-1bgSZ`qR7-!v z`z53WNiHMVuo`Qzj}oKMXyN@~=hpH^(@{c>ag1*3w!^ZsYvW9##lRb%+YZuhMm!tw zwnmmQaR-DP*x;ilgSqHhyBECmHKz24g+j>mgmXG!~ zSCD`Gu+O2kFSq9oUA&&EA zLZWk#|ITR#r$}nQzFFS-`_cPV<*F}?&0nPpO($>)<9qq&4A+sJmyHw1eOS$ESy~j1yq_9*8;jSRqMs_qoe9_9N9B!o%;QL%@28kbd~fz3j+xU{U;8{I7pK88p5nLI(T2?`wyc z1cKEnUz}E{F_h1i_HDWA`~-)$t_XR#qtDk;vVnHHrIsDNCpki97==o5OCnB~K%`{( zUzO0Q9GzC8$^L#p+bbkCsRt95?mT%73 zgWmE}bVw54N=knZCtO;w#u?gHXv=}Xzi}-7s1QD}R%}Se? zF%!}o>Z)e?Kj!ROB;+vyYvD(;#G5lepO8^L?0#H__k%7qd zOU%C3^hrPBK^G#sjXp)Io(C}v3HhuOYpS)DJ8r=cq7Z)rGxbfMoAdrc^23}^(|zy`y<5Y}J?MEj}YjVa|u7z+U(V~wFbJ2R6m{BG~&U#{973@(s_ugU} zkiSCj{jpT_NY&%5??a{ppSs7!dAxJJOD3+cKn$6ngxrEVD5R(q1!5%8hO{sCvbE7G z&(G;&8~1-Fw(&*%5RvHh_<{VWNVosZ_W0CaDv8hFD>hm01Thcms?X(z;BEXyFxMgS z`M?Tc`{Zw7EvJ1uw!IQEB?_!vrk9Ux*8KWKFRjff-G^^FXP=k>Y;!foOmJJNEXiAF?U5)$_!7p)IckYvOImtHBtst)+i3kP*c=7zelY6io0_D=J}$-x28G zZQR}`P7k#GbFug#*6Gl;=ah{sw2L}X7f>)y@`T24e(B)NVd zi*MsuWnf0Lot>P$fb-J9XsX>DEI^3Fz&=XvZ8kBQidM&rxxse580N3r9ialANZ%Hq&EX-f`U=Bn(*DYnP4E5l3Vu@FT?ifvV z`Kq}2IS>U5jJS22eC+aexEH5eBq8yeD)`A*1M7-G7tZDMNX?%ip&!z{rHZ+l?w)W@v5*m4IuQA4!|aL>pR8eBz9nYEyKm`BlpWt~9Q@iN zvY;r5!>pq{?TT17R;0V)l85n6AH#nydNqB_=t)9k74EJT;vHj|K6WzfwCLlcfu3rl z%RZb<>R+&*;aPvl3)biQ*Ly*~sw=4PnE450Vb!XC@~<)4?TTf7Auskl5i%7?V0NVk zkq!3d1);g~Jym4nm@Sf~3@b=TxUe|0Dx~AKjc7H@JYCqMyv;UimBjIBAh>_6Q^=eDPDHm~n3m5pzzNNte=?a z!rORKZhRL`EQi3;IpIMv(i3uxhqWlqTKP^NtPg}BKe>?W8|y#)1sNkFdLi^( ztcNGX=vd>Iy{H+jb0Em$EaZPH`N!Xp)kKfjbIu)e4uM?k0udtTpT4%oR5NXn2_#>v zmk5zo!gC7(VVp$sycFn=gm~Wd{CJ;J24+q@%d0`p+ZAO^Wb^UZ-Hu)3K{?NMPKW|G zk~c4_IC^Pra`3T^?s8#q|C|sxLg;zRPc6(47=@3^@@B!jj7UxL9q@nLYEGG-y2jWy z*?O-vFSIfq>vC|mJQkHXvgZnk?SY7_QqeYg-6iA1f!EU)_8)kwK{SfUuABjksVT#r zImt)xVlq;B62N<0VEj80YG%U{;v4h+aza|;C+MF93uULz#yzLek6Tb*%Qwgev((;i z&6w|%6Wtfi|9GeuerkU&9a+_d1cg5TrbPo9BF?+$|B;9DCGL^L$FJaW6j|Q<%LB7g zLgfDAiTcbH;~x+1c8qf5ymhYn`bec>}`8fL$QWM)wo(wK+VM~Tg`h}3e>I{Wa# zF}e`>iTLHlXUu=#V`a_}`#62DT#sOJ;lFd6v;Fy!9sY7(h!20B&R3neK>VAwv4_b& zMLBGPXDkH6XPYG#%)bTlVO%f6m>YKX`0V*%RN!;w!rFiCV#NF}Br?t@2P>x!>-9o( z8&OjzlzLcIl*^erPHB4>43?cR+iV-x@Pm=7%lF5<*n#LW{y<`229c94a^yo2}c_5!oFo-M6>NzmleeuRl6iWfkP;tqmI^WM?ht=c4)21G7DjKXUFjywu(#WN z`T!!+aQ2#z9X@P-Cx^gHWP7D8Wd3ij1!LR)jbPaO(%!PgCtk=y?_Eg!@TT7TU{wv5`j zXDKc8+PVcVZ$%_}@dzS5+yvLnvQ?}t>Q=lI9}$1&zvefX5hr*#VizN3UB{3snT52$ zXUAS!=$rKtEhBeEFDWjRVnWhG#;IO%F@86>Ob_Fu@+U20p0<0r7UpG~b-yB$S}(mW ztoi9>g^Qj<_u>`w^m>uUk9Dd-Y+-k0bG(HE&%sG)VFtIK;?M_Dv4gxHPetNgINLbx(vRFW)|%(aH$&ux$Qglt zV`K(k1_lB zn-wy8;zANz#I6-0R^SPdprErebVYbN--t19%+m^~TrW0aYRvR4Po_?^P~>TbgN$G! zuFAXZ$V1M!5l=L%sUPuva7+uy8{^7DrftINK)si2FLdH`3|u$wNJrL&@#|#4v*UA8Fv>Q3SFxsk zIR6{QyhmO<=~c)}39Fxng%Z$y8``+ayPyj^F*-S{MV{X{OdcJ2IYR2g+K6GJ1dJaH zn`tA@g6#Xm^QQD$C7|^*ihO@`jGzlC46u=+}?!g(G->gjCkFyGqyNyKP-m%woH%xzKZ!&)5R*!d?+4jXRPv`shRE zPC%xVaeV#{p0|@-z94_%Lp1U99=$ZqB^{>+=G`A>e$0s+@+3B|&W%1Q5)mJZhI=Y= zw6UHOa`~QKtDR5pt!eX~-foqp@^xAbMqUnVk4iankInGW0~mvpJd`1VEBan**zxxB z_tD~-A%=nSZTiq|hS#MryfyfL4y-*>ZYhpw@N9TV)wqQ!w<0&LFdz7qh z30PbMuQf#dGouA&H1gq93o93e#Ea}V(}~N`wiMF10({2q1Y?Mtk67oFi^F%p?_$HK z?o8FEg(1@GM7vi=GqfpYnpRMfyY;qs4bm%Yc~5Ej$ZPEr#nI!RIhT&!?v%A&u?|HR zQezIhDUV^GF7ba3T%IlIJuww^@HE{X>>Zny;zhoiX+GExPrT*ERV~wYI;iKSbFX0x ze|jzlD`95Iv18BbEMAm_zgEMC#&G0f6i0|LSMrpRw$O^6azO+3&&d+Y9b+g$+QyiJ zb7@bESIydDLQOlJFBIcD)3YL|gJ=Dk0V~8RdIdu2#r}VV*@Bh_B}J34LeFTn77VL5 zXX_vAH?zrOz&wU`mptr~&}sKMnuz%L1AaH>AI1IYNv8^bt*27a+L+xN<#0v2jCJ&B zXK#@wJ36wFGkeNonP}O~z6&$4&ylRNbQ!4@tg8{?^LG$&f)##_H`Cy|$wj`%s5gfX zWaf91t?_^HYddrG^OWhpbq;f;#uHelg#1R9ULmz$HN%`e@btGihfVaEgp|iRYwmcl z7Ie;&7VGWlB~iEw%as{^&ySEFcVVT(vx$BP`kF%QV1MIW&VPfev#L$BZs%Iouv$w< zJ8W%8kz|Z<&2@FRadoz(jhPf7g{LdeT}tAcwQGMq=r2t9W*h4^rY<%|vgRHi+_jEO z^quF{2VvLJJh2SyJDkVL#jXn>mA&10hQugprnAe$dI}+};Uv*16*E}N+-eK?tLANG zqhGI;30!k3$0BS}_*p zAX?FCLYrbm?`xw|wPG&^HQ7hRTu@<3sD5P*U$){TJ zRF7ph8%9A_DU#QCMx`1L+95(}KwC^VJ9g}~T1Dpr>))0$n_&H@5SwU03aJzAcp-m{ zGlZ+Wz+Rh>ntA8EuMKMn*01mvzqDFlA5ch4nB`esm4-b~@>;WDbY<1?VPCI0W5n#` z@~NQcRj+zd!ic8!t#rOW-gwBe*Lfo_<{+dVtgjN%9>%X%Tj3%Dsz*>Z=J;24a#CFD zUK&TkSMT) zjF%h1{Jm@V$ZkB>W0Z+j^cpKQe$Mo13V1@M)q*zcnz~w8e;~xk1Q2PBE27qtNx?UG zS;^SBwOm}H&$QOA0pp45muJE+-7$XXg`Hx?%3nD~sbMy0?U6gyIS6t33`BpXr&bZs z_wb1q(y=#b?eoFBy!MkngKK?4VOD^3va!dqj>q3n|C}BdMkAKIoW^?L><`8qAs>95 z>zuri(_)<$nNwDXtZ07D%LO~Cgjm10b5hM8r}xIpY%%M4IRidNP7bsAtUG0RGqR-v z`3;^AtRduik2Kz_=N%y^UG#rr0lTBTNVK3oC!~FRseGpV@oo}uI5ls*>oEjCd=5xO z#)9pw%NQlt-t~cUbZd7w*CxA8l8?Sr_I>2~_#L)qR}r}_pw+pfPvxXN-TKgs(TFYY zhi9wo*wVn9-j3ZCddNGD4_1KRTp;vvcHC)VhETs$H~Q#X22#d46nTF|Eu$^A(~%=i zr*|i>GN609y-x%4W;>_4(3{%M?2eJ`?Ok_hi)pVj_vCMRS{EzHcD`Yt<*hT2`8ICt z_2AVpA3=_9ZKWNIQ*5iU?QnH;ffq{UZ6|lk~od=s~zq5 zUFGp(owuw5sRg|CRVN24rngM!jy34JMVl<&TDFDOhLDnR3ayv!^K|9y#1S}GWdAZy z_&v^Ahq)<7n2~aK%gndF`;bh+@98rnKG$7qihY#3pI{h=6%v1WO1+T6(|h+wg*y^u zbjHGG#~CHi=94+v8fKtmQ-z9M=dz%6yK$|DbM@o9%_3V2e{D81^fC7AwPN4Yo+Ip! zznOBtaOdU;0qZUIypp4M4y5J^`low&Sv0QblIM!imAyvU7$@KBhK@0BA*EqHYs;|e zXsHURfpxw7A47ls(Y<5Z$oL_|n0a|`C%#0vqs#rFF?O$yWv}<;U^IO1Wz3kf^+APi z$&m)cY@ZyXI50D`<;#SD-*ZMQZ10?v4rZiwI1xtPN;J%49PepH=^{j)E5EgO>*KE# zNo%Z{5KmsWq6$y12d8gHXKql)tS6#3$4dCTUE z4RidbwvbS3%J=cM7)E@g1R^t4jL;r=SFnBLnb>X$SoJETaSZav!DyIG@^b%y9;H^s**qCB zo(HV3kMwydY-b&%QeMcUc zCH$V@gBBR6_Ry{pQkh-y$O9|L1tP>2%Y)$^mi*Q}Taw>xRpzHS&Y6I|=9w`czH`$) zavx`wTKH5=Nf7itj!$~!^ET(l#Kkk0$z&h`1P5(b8NpYi9VL2%c-?cBCS!` z6F+N4?zIw!%X?tUfr1gIlC6_T|T>~gOifa9+KF&*6uX1W|G;tk#A5=PMw(X zJTiC!*2f>2z1)R$PL+L&YkgYczP2Ofv)JxEJ8g`MopT#c>^V1D#y*L2W#1!<*tvg2 z;sDR+U1=ji{9n3(T=aYGG zx8Ewv*LmKpdC^;6d0-K5)(ts6>@)gx9pX&EE8nc*UATJZgq$!poH{Uqe#46q`xmZH zCB^vL)p}m63e$0mY#;bR>=;kHu||LHUK5f6)=J6Zs~fAVuTNmbyKudd8Z+NFY7GY6 z1tEE&jK9gEA#0G38nHs(k&Y2SX)LS#r-;huW^H}>4!bW*_%A(JKkEFxPf{O?iKHEF`Wd z6w)SUx~|1)=&-I$_FyC#v zvg~jd?AgHV%PqmD0VCqgM7VCH#EZ6z5bKz|yrp|=84;ZVv{bLOLdO{7m9N>cv+l~x z8fa78s$-2F|E)DX^kr`K84!OTh!5i>q@_5qW9K$Y+)H{}F`iX+ecBUt*7;Nsu3VHi zSJ{SjWU;ht&nngt3n}~KdtT*$>iC&uIN%;BKNFKu22<|u#fY?Z6}@01_R z(q;MZD*Uw-6LXqhCz!!*@Vj!J7|pxh2!MIOyGAiSJIg0);aaaFS`L`h#DG&XhtIM#^Yr9vg#*+NX_Gha`8+7;vUs=j*Q@ofOdQ(E` z!F=O=B~Ct7uiC;2ulsz~5$?kCLI?bwx9p;?`9l1tQ+=Vxtf6!8!VDK9fG;dt7%6#S zd$|cBxAFWeS@AMz=v2L!(?W(oA;mBg`J!|qR?ffJbH!;JLRx>v`s)`*TPVd|^prHN zXo}MHjA-Lf!akoqhY?L7K5hw-X3VDW(g+2k?k~;8Y{1VMI2)koVSB7o0Z>9(=n|CJFh?}AMAgjJ%? z8LP2g`PEc-F7~T>IqW=n)#vHqTh|>gMoL~ig|o4*N?>D;&1=qagL^8W{CKUK97l|t zzUD0t{5L%%tn7KRuLI_pgtWx+pl9#1LBv|d7_lRV?_7T`Hjp1lNUK;|^tya0teq5M z4?T(3r<5cAjo%Wy!Lsldc3lX`0eL+f;i-m_Q!!yB*&9B(51%tEaHd#D3s~XhCFq9! z&l}5W1ra%+u+Ew(cjWwiGaGjSKd0ZpoY9-51e`zjW=jDxxQ;B0$GD#h8 zF)#CWm+gS>wtMLqgM53Wg_Q|!uMjZ>av^c$ZZv#_RKNWJK>Jnxsm9u6Uyxij9avaEmj*Lqu6)$-hz!I}j}4)3X)XJ!_8 zazmN#>B$M)EGg~{1=$ClOd-w#KB;Hsns~ZE7i&S^J9e@E^u1S*LCZo2aZ%=5h!xBO zI#Lhi=Y-UPm3~5G?~u+CGEyP?O~`DIqV7U=PE=3s%}fRRb}h)uiL^RG%qm%S=I&f4 zn_Pd01UBhL^YvU5dorKRXVeYhh%M4)Li`6AS>aCYaud3cy;7qB&xx1?zOzh4;He^Bs<y}BpZp}?Z!v(ct_f!7?%+DxbfY}Ntf(V zM+(O5oKK=QiiZ2(+!#r|39*I~*1We-svb{B?XsS54eH3qU?ODNWcgO**^?jaEEpA; z5rmYy$O{#6a->?EKZK$Ljud3V6(T>B|EBBcP&`CPl}U^@xObT~xO2T%?EVz8a^inA z=r;w@jTVL+FzUGzA}5p>v>a*3$t*-}BW1oFsh#{eA=NI~{z68MWWx%X%+w|1=*r=# z8a`A5cVWEpzL46;GqT|1j{H5dr$IFsLT0VhWh!Jdub~rXOkr(=kQ#9QoFn{GnSoBoZOEJF_pKuT zwK*9|rRoeJU6viL+a5I$qmg-u^&)>k$WF-m=-eT-^4U33B`hsZ%#roNan=SrZ+Z+? zKMPq6xyFUa{b1R9Zk!))AiYGhE-YMc??6d$qdo}t=Xz@@KIc|XJs`5nVoQJMUPJ!T zA9C0hyH9o^o{$%_vF-A5K<+akRl*O~`c*GSMa0=VaNV9POV&*91)Ox`NZV9T?i2Is zq^yXL+;HBm5GRPGH;D2I5@l?J>=Mam`XLo1Qq+;hSxb(jK=C&rw{=|6s3lEQoncWQ z6!7f)5cH;^*M6Z6jjGwUEKFLGOnQ0quC*#f+>$jufLh6d~Q~%n+GA3ks1H zJIbo)>~z#y?uc!Qk6N_Ua7Ks_Ibf76ccesOZ4grOBz`1E?4cD9t+juNQY^|MFK8o0 z+d3fl)_SvwUXBpkXbHuVDpp>3KV(V7kL2@Y<Zb zHwszlQGKr?&NYXKPgKISt|v~aLNw|5k|@XjLn>NNv1J=n!z85HrYw(;6*5Ht9m$z` zD@+$5X7q#OufY=cw0nO8EPhY#1)1R-X_xY5LWYzho`XI!^6&hRNwuwxl=<;D+EbQq z-D~~$*W^i1wU))+B4#t05zjC}(5hbK>|F${V zI#$jLX_9Y@$j3mxBzlg8W!3u4@IqvJ&J&SijrF#Crp1=S(r-}*lEoeBhosoDg{U{y zdsx~;J3ek#L5$Rzh(%1uia3E)h?6Fu^p~GCD3c=ORrXJ#+@H!P@yHyc8d@P{jkpkn zIOQTgr`x5Bnj?SOAASR$8^OOeTW5K2R=(6t>cv~GQM!o++d>j`e+Y(hb2{}1aZr9=q1vAn@ zQfe&4yd;X{sC>`?{>uDCe!P?MCoC%J!MvS{c zW@zj)y%mk7bqdj$qKv1IXPLSSEqQv3SX}HkPZn+1Bn#Nc1!AidGlemMOM?9Fjs-!fJa*@+K}`AtxJk z@LAGob@FB zo1Aevg^=Pw8Aei~S&TxuUXR~kwv6#nM-E!+Den(YJek>|4ogSMq6!G-Aa7U|CPely z#>JBL{7{l7dv^I$l~5a>D*2}ovzPLvY9Ky*AuWGpj0vS8X9m4PU4%9<_LR!YlkZQF z9fI*49r%j%2SOT84Hwe$q0Tx-3NkMX+39_}!7UrJJgL6&Fn^kyXAU#pl1FV&J**Jf ze3*es?F5|M*sKZi-9C7q%Q?I)BxNf}~_U#JkKJpilT`pRKsUOQ|hoq70 zU<7|Kja(O6#Iln^!f2k4#0jW1)9A*rP9be#+$D_>KIFj|9(F)P8Xc`pAqbojAs!~m(5UT~_iD|l5jW>AKI?e3S=EHw*2=BtQ627l{y0m*bwU zRgBNux;&}H5nEK#Xlch3Sv&8P4r^K&_?LPF94P@~0Yd6V4>@gVK=c>V?qQ(6o%U$# zFQmQ8#7s)sFJm8=BlWV)cf2GCpL47=%pImv8uG{psWDT3iBCB7Ks6%M$)5?iq2hm} z79q|G&3`jJSc1q7$V=@=j8qeBNxs>|tZ#A#Zk7}>)gRViq^G~2E*~L1V#kgUc?B%1 z-mRN>JuC+wdr8lc2^%;1GC9b;#wx@dTEdw@LWW!Ah^*X*JxZRtmKr5Rj=4O{N#y7* z1OH74Tq~91h!HLC99>%Cm&z}R)VF`@h-K;+l{OC%tDn91rXeG;5c!9AcCtiL#&}4U zq>7k%$VsvVednA*xtO(*TM{NQW1G7r7vo}be&R+=E2M6!-4{|S`;B^xvnwJZ3kBn1 z9%|*dOLm@XtQ^Td#x&fYeCx%WQTFOQw4U^#(oA@>tk#H{HrxKl;L4qg0lj~zT#C#- zyxV1Qhq5E}qNK=rvxAnmHla+kHgYXxV}4sms~7>yweeJ4A@WaI9@JGgW;}B}Wn$e^ zt}i@Zofg~W=d`Z-!++DuK-ude>|y*Mw;KZ5A-U_wW2VcIj=DbgQv+7qBXo=-<*`b|7?-z?pO3$JI@yTKU`7njLSh@J(eo_w zsPL_4l{~<;o-Iw@?K!mE_&xKcgju*eU*fDt_8B{vAG<%uRA`cc zBW?{Ll2XNJYrenIc|hL!w9qCwy@5sRzWWK$1>hKpbBG;e`DO^qGG!)qRDCC4h z-Jgy`WZ^S!UcQ)P@ixc&KSIhv{o`&m@~sOwEukMQVc;{; z3CUh|geSxe9_pGE(mkMu$ZQp3T>phUAtp_Wma2eS(UUM6$*6ymQ;5D3dy}M0)5L6& z$1e_Mimk{f{Wp0uf>Z>l}Zqe|19$smReGq{?9Dzo{jmooKzqft3k1V#sLo2}uL(HzBp7hioJJ zkR3!k#f@4uY7zlT+pmV2~?^?bIs2MQ2*(x|xB$J=>u=Z;HQ zT(=`_!n-Z;`dE@{s~g6M?VJ?R-?npO#W;nXmv9oIBbn`MyD}kp=WZy8t$^$8k|>dG z3k9=QLgar~=9BTMyc)T>|zCxz2n`ah}={#Ln!~;kjG4i zK(`+6oDi>#W~4@}^(Y=4#Y&43dcv8|KV+k(^#hu)FQ(Jp~MuB znMX*8kDnuJJ)mu=zwpp9At^_kWbH`f>KR$RC1ZaCP)OyP5=r>5Q3vaaq=0dXl2*ES z8;fktfqJf_8$W(c1_k&2mz+w#XoMr&fmGy{AoG}cHz2a!duK%~*wHHwPznuCqSp`+ zi;Ivf9Zd4AcpJ;db3Av5yC5^5VJ%ycN;k~8I_uZKPUzwtgeduBw?xC}WbywnE3bb} z3*~=KDJSF9FDo_5aA3sqwD>(WwTsDvL8J0p`Ij8}P&tSr?7-{<~yjh=B0EPLB(2lZU(p$5F%)5-yE=!6rofV9c@*%Is$(#`=;|4=3O-MbM6EEZCNNhfG_=C$aL{eqDx6J%e z|5m0C4Z^b{F9#dm1TeY zD(&O+uFA8pgxvI@=azf#{MN5^tT`<^W@9Pl{tvI4*REh3$%m+Ami~LU!7I8?xUB2t zv3%GECq(u!%K7U3*NKuy!kcwQ>zKzVXFK03A~z3~NIupBv)JW^Jh7{}+#Da~gC)l6 z!WxWnYe?94SnjL?E&OtQYB#@uylsEX*pw>`jMa`(e>}UxZ%8Z{Coj+IgzybsZw2GM z#rq1_s(DYY8QuCSO@Gm&6yo*Vh{TxDdlyo;CsKRB6R#X;8*gI`S;i1a%NkrBkff-= z*)sV#BQA`B3el0LTVLgRT+E5fcTe2cR%5V%apfPK5Jt9z*up45mCqC~AFO}#Ay)>! zG|FQ^%e(5v1!OC$vB!fNqsG-P?~gpNj@_R=+ht>ALQR$<=5}i;g;_$X`)0fgsYRT5 zB4pHsUYne`n2|^3hhUeFkdGX4P0KkD5V<<=bWdxJ#*#uv$yhN^J!OOz*Ke9D`t?;( zG@w0N^GSwvszQA73L}mC_-lWDxncill||07w_0ioV|LY?x(IjM8E!CsUCk#*;<@&2 z2)-pIdj~VPKB=r>G_QIcCe~z0nU;*%@>)7`i3(Ygiu^Y#7vxy0GB+llQK>*f#*bQq z{3(2cYL&giT6>;Yg;?td3+tkVIMs%!D*VnF7h54-7XPj6yQHNAL)}>YN zpg=Fw3Ft2NNz`Etr?v{IVPV9%j_$QWh77CR)ToY9=;%AvYt-sF0VL zU9$REU+j*mGbOI@suF)l6Y~po*3j7wnbY~k5m_G|Se?=(nB}P}9 zK|EP_R-JiH`X)DU~A*-#(bUi zycYOw-|V6Sk>b6`guGBH@kKlG(dAQhL@W9-LU)=@zg$ zqlK-*H^> zZLE}a+E|>~EpyAMe(+1HM~m<|G87YPvnCT|V;)dQ!->p7d^#-tnhsn;JF&TkfgW;e zUIl{B@t7`anbyO==t|SQVvD%7D^C=^)T^~H|0BdlpCR&ij*S-tuVQn&6J zgMaPBf;N9&>(?HigAwE};0+!*4(veEvbmT?#EEcGR*fAqM#G!WA;j9RCd)g~d^2mZ zuQS@CZF;jUu7T|9gmJMpM>|+;(&n;`m1J#7#-pYBN9Bfl>XSgwn`&!SoIxREXPlbn zNHf-r>s7;Sg>2r+tej36WGr2Fw}6?UwpY5y;xB(hk_XShcJd}%1KH$Uv!Kl>h7lPd zAH1!y1dCyBMRNYP*S$M?KivBRa^;Ixm3q}bWw zx*mMO=iCyRk66eDqiefWwl}WMZQkU9NdM>_Xm^ImHu+s;W8AXc6PdZZ-4_PNh@A|D zJ+OcFVt9NTpEoGuyFIsRaIK~03}b^5{_(LCd+nqCy1kunYPch^5Ac>emq@tQ@5PE* zrU!4RrPC`!RvP_U57h?tRlCR3u^X?4S#Zvf5Q!wrr1Th~VVtjfRs+ldSh9E41b3G;J3nM^6|(Vl+A zIE*xo(Du}IesFb?{)bUEdGR4*B-qvC!`EkQp$+Ld$_>D0ldr)#KRsLI&hGAWlF@(P z>DfzIadk=v6}{VDa>0q_LcFnoKOP+c4U;@WUa6QuiFcaExF9Z#lC-n-t@OHf-c0^?-kM}?*q}cjx48(N?fdD?rk-k zTr0#&^zkjU6BhctLd0kA_w=ay2X}}J+`|gv?qg%IZm{=m3!~w^ue5oO_Tz0Fi0D?} zryije%*OUnGtWSBWMi#iAD1Vel|DlcuEdpSfJj(+V-e9DjeGJ|O7> zNt~k`L?5A5X1~jTvbn)i4(-#5!tC^eHQXUUZ+k4vg~&(Ng1nn@+U&ubr0J zimhaa_w^FbjJ{L+ z@ZV&VagMZ*sy&M9wsp^7Y`uSP`L^s^?qdb3QTu)_BFsolSew_6R~_NmKJvNPUY`-T z&by!47FOW(vp#aW{dn&suEFul1FrRXWnd>~7e77h_ueQ61y9z^HDRQrUzf#1n|O;w zwwBjDNPOFOmdB?=Tr*?$K)>6^Lm+aJVJ%L7Arq+ z{Wb9w&!r$zQpX7Ga2;vnn%ZrVD4{k5isqnqgioDCp7CvuoC52%3TXvz+L3>4 zYKZuJXIz6kKj!6(yjp+3xc|tf4D=~RzB!^6ypZzHzaAwt!&==@V&FQi;l1}5PaNKH zhMwvu7A8i}hd9f_xaDy5QM?<)3Ch5lEV*LkV6=5q58L6cs?{o5b zJjfe|m)r9WG4m7|eQmRa zJwcWn|C(NQ<{ctOh%1%G$zoHuLr$}TIoEM?bE9g|IIeAi=jR+3AV5T{o}cg<>P;5da*u?EDSjZtOq%srHWie zh;Dm)>Sy-xOP{B+_}N;!$j!zZ?egA{-+M44FoRE@rc*M54putQVVMX?6H} zj!z^;$^XX?@}$b)B$v7@&>qsT7uZCwj7;l7@6ew?}K(?apq6swP{88_wkMzrxl zTET9jnNok)yw=G_b>S~fElkt~nw}BBTI!jmPxe4$*N=UWbYmfFo9UK=DhEQ^!#KrE zFD~S?p5vLAA)MLY_6L$LGB6=^V%AqqKsp%JojIq0iu^PC{8RpntQfMxnMXay^k$y9 zAak8QixKUC5ckv&*>&(f@J=}1*FJGR;rA3zBjA7Uamjhqa`P_!g355Z6Y9h+pXnIZ zJqhtL3`ACl{23YEfL_hi&)Mh^3rP#R7^hFh!-$#7br!4+lml70c4gMq4%ReI?a+%% zZ+aIAdbhK_Fwozb9!cY~;B6!r=bP3-#(ceyRYGj+#x`c#@dSLQ?HDWj zPO;#DRid+}%vl~0mUd9FVD_3W_CU=pMvIj&vk#pt{5^f-g0UwdHR5EG*;gyb#Ag>_ zKrd}N3&m=!=^;&IMzg=flXT_?d1D-Q4)K3&RO*_;a=}Q65PMkjGspC)i-??1v2S9aeq4rR_`hdr)&TgAB8Tq!NK*Q*%U7Ku7H zuA!al=m_)o__N`P?hsGJ&ukavM~k#AHnzRHwTC=wZXG)IAa^%0ZbWw7$mixhp|gKI zI4QHHl90w6T`w+GWR&x?FfhI|UHgoE@-yq&xI@G>AKTuu>cvUuHYXoJu8jpbv^l_V5^#w8Mm->6jVmpdcN1YJz|ytEm1HZI$oJ3E_ZQ4bIAZAUEYF@|PyT<(Ew7Ki zHZtE#E6>1FzgB+UN<)ZfL`9!siDIy(?9x(4>_u3vyo`DqVvY4;c5I1HJ%=FXCoV*Mfq&1f3$54^Yg_yov9^x&e5>X#4~3r8$X*^+r~P`sV2^ z#Bw@T3$H$NME}|mo{zD*d>V|H3CS00vR2<=ty*N{24El< zx)}KpQn_nsosn5xMToJo{5snjM$FbZk+pPWL#<&PX^H210n6A01H9%zCGAsq=R`3A^G9mD5PABuI%8mOzF+-=!6nK6Lscr!oYT^ zeq;qgnxSsd_8c~z#vQNAG82+qju^iunf@NGb<$d6|J)XJuUOT;(roD)7E^F@~&)S}w!k(_3UpC%5MURFY zW0w+mI-ihSFdn~4jRzyATLdsH+y_3)o6lU4g~c55_6#c4)NkiG*d65v*H>*Bw}cT4 zM;_*Be?={*x4ylf7rp3RbxyI;V%Ou!)QH?{I7M??$P0Uyw|R_z3xAKf5<8v}YhQ29 zx=$KHM3$W2kB!1pk9FcBM@qJxy!f4peFV%q@8*hNxT4}Ek?nOGJ}w%O=`!RWNXL$y z-JFBrTWH&dksuAwlJh?Kba)a$|6bJ*Tih8@bgkI3^Vcb~DNXD7s4 z$Qk+Q$=@Oi9s5gvws#X@&S>{*8KXse#Bed5xP3$~Mt=54Iwp9whldmSGiK!jaYZ41 zw)WAjvd6Q9bq;%m@UZ?`Ncz}sGi09Kv1iPzPrheu18Xq$)cu1o)jdaHZno#Ni4}NT zbR}cvVXy3wOGetni1S`%i*2H)YeQzVm+mHHMti%&06v?4E=Qh%zI_fmW^DGh82Jgd z>;Zd&`{auZd3*N_MuPX2PtNP+JPT{kw>#08<l zAjG(qZNHU&xe7#xF{|EhSHrr1<2e@O!N=WRj5(YzBF{4t(hlYUPml+PF}o98Rh?Ex zh-d+SCi=`AMk?2oIPy^I^~98TTBmq;3s@6;V$YM;E#4gPln5!@mvd517vmHsmD;iL zSBN#Nk3Xqq){s1@H=cQal9$fY9W2C?$cSt!=wBayAGdz-&1GGvSR3)18G#YaQ^JR` zh}fL|9<9#F;-9O?O0qy81uSJ}#ay)8@O#IZ6x!>%_j9;`Ar?!wW zN^t7R1$|{9CGozlxAHW*Q(s%WIwli>RbfX&B4ga;*r*F57{_+v`9DHD2#Lte4^_lY ziy}sU_?ebHFM^0(9C}Ye>cc)tF`R7J-*}qmaMA9xD~}6zqWtU4JERW_eCqoOtd4j3 zX`N57xAO3Q8$s+0pG}S(*VG^Ph_N&1j8=H^jF8G2#%G96VeasZm(s#FH+B8+Z8m$G zc%Pm*gJJE;nVuELy)$oE$c&DBSXQk&OH7=9@5U8l!g@;~wP4-tS*04E#x>i*YVNa6 zIK1Ds+)=E-I4(himCR=+ADD)S+g^O9auPc#lOB=HhIJc9F8)DYFQhHZg`R!dMh14a z4=}+MJt;PR>XTYQg}~$28C$-SOXs((Yi6^DB6E4MfBT%44*M== zMG<4`=SJ@nKqRHe{=xN93w(lG^TmAdxh?a2vvX%;9(?Y}4Qt)ceQ6_S64H3u#(6Hp zglq7s9gG%bjon!7TyG$KJhhOAOx%x8Lk4z}wZXq94IfiQNKQ78@}X&Q+p7uh zpW9$74HbK!Zuiml_)hz@iJ8^gSL2Dlx1Zc` zQrI0aPX0Y3CDy>ZL$@aC06LN|YIt=NS*7ZZof5`J@3=mL0g;z3W)ZGO!?8O`Nb6Y5 zaHqUMzJq6WO+7?<`gq$@J~Z}@-Fafg*v4HY28=j660t(%u3jTX*&KO)s2F+?d1*0pXS#4o`;?*YLY~Ov$I3jc3 z4Hdio?t50zPkg~gy3!N8-~ng)JukTS8LjAZ!>_gx?| zL&gf@7q=(|uc&iZUV~dI`fo43aL^w7=KW%%@rllHkF<`Dv3mPUP3(|AGb=~3+)t8KSNcD1I{2uKB z?l*frW1DxC5U!7Z=9vdv9qZ{}Y(q#X80&l@C5iWrE39F?@@rmGf)+`>#>PAN=^e1f z^lP#^$kAUjFK=R`4(vqJgGQ!ne9yUR-N!GT>0k}|Yr0V}N-ZRHtdM+iya#5n zpLp;@M)|sb&kDmQ=p%1rhp(^Dc_;Q)53gv~PQdEtH)O{6ZX9yOkWs!dkpSk>kBWQbeBhraV=wixyJ3OYTj}6(e(Rj?mb`&XYUF+EV;LC<>;}H_Tg8pSGgPF?f9X8nc#y>3aVT?GEkHG?NSd`RlZ%z z!CJPrhv*!C&lc6>rxu&yo9ToYQ7Q6?Hy(aJMcMFE6FZ!2 z$!|`VE$p?_Fl+Vh^ob5%2u5+<-Ju|t5n_w&jtF=|R(X4J{yVRM9MXw( z>!MkI?O+z+y%8hZkT)CaQa^29&LRlW4T$GQ2zQ7*{h&xZxQ37##=M2pfL#|tTDjz< z3F-AvM~EX9NvlPOOgZg?>c09Qdo5%~oYAXC4jD6qjt1P7FL_UQh z^-=wSkj1kHglzqv|JwGBB1BHjWJCP5HN1m=g}fT5tGNc`ET8T85RLIn`eIRvF-b}~}i?T^S1i7=2 zoh#)Vf5;_|xCU!&Py}5_&!}=;z4mOA;-Qe4CdE{RTp3GzHoI0RO7KIB-?lf_@rpM6 zR_fcWo}pairPZIRJ6o65+9B0cZw73CnBTlPvgsXIfTv>A52mN_5H6zv7#{bLfGh+MWGqqxN z*^w40>LJAHq-dUymM3+C3z-cyVZ6^OT|YQvYG)5+Pi+!>w(XMqXm|Fqug~b6 zQf;`9mjXqCYdA4xUIS64Om&@qj-<$b?~#APexmqkB}OS^wM~7YLUz5xnS>m@aQrYJtGT6Gjo*TtogxqxTsiPPr&an|v?4q|3f1&{N7F@x9_@Pf8{U60g z9VwZrGd$^>Pz_5+<^Dz?GO!dE6S6AS*;SXHD-;_P@(k;uYZTv4XhU@516Bt*k}GBV zgp|}NKPRL`tfz2IXe|Oi!L~~M&aUv526Zh7F*(JIv}))@>tI*oU6psniZvl8XHu!E zE({bYic@2W6*Uutq_C-ft4v514aRjVB@Ddl9XaTScuVs^ZWeuBC!X!->WRF2#ilyi zL?Jvs%XPj>AU)#hu`lfX7qUXZh)ndpDXRSvax3Z)3(@UNxll)1MtiNpXoY4D3(2k# zi-_nh-dUcm-&E%yq#Mrc7BZ3{;}^mTT0&-w=+#6!I^FziuN<_0%tbw|OWW^@uyQL>1sdn*Sz5wq6{6=A`lQ1UGS9Sx8<~!{kUQyaxMO#~5VPgAJ+{ z7UHEaxZh5#A7}eCJv6SHF1dn{EFs#8Xb*H{Mq~y0uc1(X7nYC|a7vaV1?MISadU;M zb7lN_$KTF9`L0e|vA^GURUcw=F_M*hJ`~!- zRJ`Gh|Juxt<_HMc73aPPxdAn=bccLC=4xsQmU?%jO(WFKU81kND90|s!SiR zs5y7Wz2o)8=#M6or%W9bLRtwJEfQiEqd3V{V{aqb<*9j9x3*1E9}rS9s`&_+iQ^$j z*F_|~K^LW#@nz)3jy67ZnMA6MaIxE3F!P`T>^+u@$PuACICUTRi!0iDy_g+KeUuM7 zDiZvEFc+Ho{qU>OaM5|(Z==;lN_Rr^7I;Nx%c%Mu;j@0r5_GKn;o5PX8^xp)3+ zH*WM3h2(|2QG_WZylK<2I!I5|XT9fz5t+2Q_%_~}YZUf-)7ohwuTSfiOdW6XXmn06 z&m><*HWq)+UZL|j-79VC(iXCHXYgmP%s;Mw=zcOhXx~oI(ZUryF(hRC>G%RMvUH_> zAUeUg)@NHmFFKvassOGGkuLg3LTW>wFWp=@+M2Eo7T+>==7{lYA$9OAqbqZe+MnzF z=1Wz3LM%_J!xz#;CGeJc!|5ga#Y&oVYq#IMi5wtKM5!(E4l9Drf(_K^isme+XwQa<*EiztIs( zq+l;(T0#F>79?=&Ntax?7^%-bQx`K2+8r6EEC|VdogmWM=JVso$Fp^xuY$)|zM;vX2z%gr)-D7h^sGIdndEax_1v?!0(4CAnWdF*sZNlnP91*3*S8ul+#A7Gr2*XLQa-EhB6*VV;y zI%imzm&tPnj(KNiAAJ9;kRMhH3n^S}l69FKwn#E=*y~$;OxWY!vqbFqHd{Ij82J$r zjWh~{j8ypsT*EHrcJo?w@%dTHr43=19WcWg#VheC&fg8b?9% zUfPNLnX9`A_vndbUyT~W|%BSiM#$S3`Xc$w?J}iyztkYS?OvuQF zTqe6>8{czh*~Pkme2#G@KcC05!E3(W8;hU0Vt@;O>1}q98RgqU##(nF$uM)5@375Y zz*Jq?fd~+qZP6<7A3F293l}p(1VI6S^IzU))Q=&`m(vB~&mX1{uMcfR# z{)D`GFv6r&^Fkd&YCTv(TeJ@|#vr}2=;Ga2(lG4#7BZt@M5d&F)3BdO$ju$&%EkNm zkpl{;4}GNKnGfT?W*>bYLh_`3T1V=}SU_=UN8}4K6PZ28B2#fbp6x{={dlk53D{-o zND7z-6jBdX+!SB9kH4l@%5PhUVSJ~QmQXQA$g<6E+x5;d+gDsU{NsCEsgaS_I4@JY zO8~1tN{uODY`u7YwG`U}&%W?Gt>(?Xh>R4G<#-BVVC}Jxx_Kwon^EQ3RS7~uZ?H7o zvluB6l5zgF5HE#fq-(8lzqJuAR>qZf3RnJ?F1Ht}T12<~@eny5b&#d&q9c7}NAwo( z_l(dYb~=?2!$WUfNUT^#Tt;oE8!p6BMW3&Xn|8w$ok=u*9j(jspb)P0wA3-PT4rap zb5~GK2jg#L?#O<;BNy3jnWrr5;c(<4J1nb&kH5B>R{$W=L%`@{Sze*f-!lWV93O9a zF=ylh4>#%I*CNt3u!c!Utu&onNUX+hVOP1)couvV6?S3ysH214dfBsZ#QBF{kAM%d z!724Zwp&GiLQV~teI)UPjecS|@*FTC<3h9zJGWdQ78Noa$%}8mD{m09q(y!_D%e+- zW9-;jCqzyXf6q=Ay>%B0yO<$#*{w-RL)FEo26ip!R*IK*@5?EWrjif~9QXeTydaY( zK3fv&ErnFBv~URq)aw*->cHN<@@@;rT)joP;w|HU4Z<6JZ_lP7Z8F6>=e3QS>%M zS@J}iC|9-N)bQ$K)43O=JEr$22EBJt7mEt ztsrNry`+j&EkbHX_ECFljg&8ijF0Yt+E*Ir_tw5c+zemWyoL=?vDpJ!H(wgyIvVF>b0$QYf8~da6+1n$;|Up+wN2`OTd`w3 zMSZd%*ncX-9-c-EF*K|#k_!+sc6$k7eKB__8mcu5DQ#hOx&<*nyz4E@wvc0pgSLad zn9M|BZ6F~vAv?5~KD=9tKB|S05fes_Ev^)>hRHmWf^ioil|3O#rLbCzC0Q|=kSoL$ zY7xmHOuXlWIICpDxC6;@PKBR;AZJ@2f6XQ5`3b5|ibO=N5ZYeLy6Z7E=#z6BP3IG` zbHl!B6LZFCHICGYH=vc67Dhd+h;H*QmHU>^53y3dcA{Lt!z)^}6G@HUk+MIYz-!F- zsrBA4Z)UE=j+F`Kx@f$jo-e_Org_i-{c96>ewgDou^F7Ca0Y>iCV;Ux)=% zl(2e@qtqtTw=wr23*R!v`An~_VC2-1j&&em^#eEih?)yAiOgj{IGwGdfrtgf|T1t$;*=}tfpxw*5Yn7!h> zT}N6WJyjtivo5I3Su3A~x$;GC(3Yp#a79;^56hqNk{>)JtBD}u6Rc4NM&{&OdlMfb zGV;jUgp`DRu5uF7WJ|tv&!GZ?I7v!u#rA5(`(VEou=>nSh>tXXWrgIx{aJQ=>=*9D z(@VnGt)1oSiipUI$Ld{L5jmdtey(f? zzXc&5d-UmEzzT4CO~ehK;LSQPi)~MQo4wAbSBLo@dp_w7Psw|wVWox7zAk7JTNtij zh{%#p&d5s*doNpm4Dp~IN{caaUem81L!YmC1rxsQ7A>%DM2pP=X0coBC7{k}i!)5D zF>5Zkfw44Kkuf}3&Am~~lKu+7c@1PNFUCV!k|9UWPDpGGpE`-nV9ZWP9%w_FtlRr| zw%s=N^0aiVW6Zmy_i-A%lgBV$-?C0UMx}(Lg*TuO9S7WhZ@KCjaPMS!FId6a@=WLB z306MX3n!!)pRBwKPWkbuzt`3v;?lMF*Gj1iV^6Kr%y)g$lU39XY-OZ_9f{4gzA;YG zTtgTm&P`0quy3l>88V-Ry2?ebv(?)w+XD;Q*Z4i&!H)gg&3=W5i1hTZ60`Ybk8va+ zjXm$COL$^`ey-WIi4mqIpZv0QX|jnJcX0$~VF@YTlEFwd%)+(yGo^^=H1H`A!AKbE zY;EL)x&*Dsb3wK%#0JLwUC^AX!dfqx^9!wymiY$kvqh}9X$kiH0EgMF%9C;Ys7j2B2rgaJ_d7!RG^S&Hj>uGsoWvLdeHLMMn)k`1yK>TN7B}|*g zXJjBE_Kv*>GA&_YU4VGmhki&~rERui%SDm#_beAmRjc5r;(L3G zZzDU@YZFPvUA3<}tAw0fCic&@Q_F{qKfl5WL}ZZo&53+em&hL%Ugb1O6T#rpi9~{dI9L zB9|1O`VJcy4-ulJ!(Da7Ww6G%UA;HHF`k#k;ahmRFi?%8y%=x`pd;z>nG>nz*hcd{ zBepx)#;)8q!dI(%9#7;VFvDh z)DV&ecI_l#`lsmiOfg%PG6b!lN< zrpHq^R$l4%r;R;?LQ27kwVr(h1MN}WSYoeqPJ3RF=koNtLq<)Qp0C_>{GK8fO7j7Q zOzk+@*S+j~cqf*d7oMzML*uH6?wv+|Shvw@4Hr*i_bdy>3$1{@iL*-&$MF$vn;wmn+42f-b=gq=8l&*`O6@~qs(AoMwuU0`@^=@jYRO;^) zp4}m&K0e#;HJ-*b#DlnV(g>vttcn?7)ry+A5pGH76^!tF>?0x3o957pj(FO@oY9Ck zvF>)nm$^g6@DAXpPM5cTAbU-FR7egVNNocvQ+-Zy#>kuyIq;0gW58&ukUa1Nk2Lee zlQq(^h^KL+6S)Fuq?aCYq>)o-c-ISQTpv7gsgw6k?m1xoM@ZRt(~dm7SqdV{0;-=K zImjtSzO`chbjZtM-%Lp9sKptc;YX$HD4D0-R__7(Fk9~Z^d{baKcn=N`7D%K`p0MF zub?+2q%5o^lHL2rO^xyzcV`_n=Eyt5>#)#{j;gJLc67+g$ru+CVg+y7QKxZF*-^I- zcSPitimYask08f&({e7n8->`w2%r!TW+9Sg6Y=+0E*(9vVWmy%3^&ZeL6zHZxfVuS zg`|kF&S5(RtPdW4CJT$Kb2MG2$T~-pSAaT{(Mnrb$1m%eGTZnjzY%rOqxlpJwEoRo zPT^XMZ*e^FhoC1hx^@V95~F7`)CmcZr9kW7XQ-$@5K<4;(+;@>549_!?>w+Kw~)F% zp8AH%_ku_t&mI{4C051>G472j{~}zBFb$WSV%B%aJ1oq9T}BVA5*=fN#x`V(nE7pw z8F2==BPC%hZHyN;a~IF3VPt#E9v`YR#tM1!`B^m|tcDn?mxgRmh#XgZf+hZjH7R4= zP*CR}L`(?n!FsXt+m`9&+2CVmc@lVncd^B{^Y#XY_|)5E$N1Y?5r*Rj)ac->0{e_f^v5j#pSJa1$JG}Y?5&4ans~-21$aka9NW@&u zcrEh$h4E%%1?zabagEIkF(qW{Q=2WJhdhJ#1E!t$L$I!T220%UNl1Cft7hooV(e*# zQ5q_4rVr1>w;*3PZ1g0AXUhG$SnE4|JRe5TXYA=B z!*^Rbkafz2Chh_|<82Qu#f;B5b~}^&FVvvVWRZJkOz)(I_qLD^1^7%pq>9eMuK^I& z?arJSBJ*%S#%cxjqYbft~IZUqLd;l?A*2k{%*m$@ z?9a{LXfNDv;_*B^UT4&=XGE4fasE5HWl(1~$NPu{%;~ZKT%Bnl@;lWL=4|=Y_MNDI zs+{wNitKi30WNwha|Kx!{G}@u&M(L!`)F)N@@AX3yrn9CrnZfdg}E#r)R@gRQbd)G zEK3|1i=N*906mtuuFNHV+wOrC9dmmG8_(PxX|omECqA4oEyOzS-hDsnSmp^j+qgQX zl)$^{$jD=ye4f?@@7~iJPxGGV#D@KUk>FZmuk4RVENhIixgiwU)pE7rWRm%)mo2GrEAcp}g4Sn8K^K8(wHkR?{N0<1UV&C6fPel zgEn4Bxp;zC_L6x1wwZa7&dTn~@Mlg4=$kDue4hBbN|(QjZ=v+u(Y~!REMph3CEMSy z6ZmAJ2~ z+eBOg%Z>BS%bJfLV8rKGGNOO@)HcJ#?2C{%G0wMaC$1)1cEZ6MLx}b@?j6%RMfS8z z)+M1uve!07f>#TvV%*XZ?tLbtY^=sxEftXgj9}kt)64R$inL0P@DgbpL#~RXB-i6@fSaVEAVi?b+JM88&^Mtr_}q9l8roZ z4f(q0GcB2kjXm(z=y@QA6;in#V~riSbNL!C@mvuhrLm=$QFI4)$kdI65lu%9MoNU# zj9G*=OWhdbTC;_V>OdiX>0zz!nmt9nf8-h+%x|ydw=?eemC{15U@eOWCz7qzWfAx@ zJFxa^tt+Pu*IJ?<39*IKAm!x5#=mDrA1#cC&rd{)v_~Asm6!W6*uQFR zpU1+V*&*^>zmKbr2|3w^cOX*2;ZrX!XEED2HCButtTRf$$j>@|Vl^16S=t@}W2)<1 zGwiLke8MN+=+^~2xNcW0nwj@)De^wJJrt~?T-T+TXkD()F63w1g(s2;sR`q~jy#M` zE_q-JYdF?Rjr&uq=Z#Nrt=}oE(bR5h9W9cqXo;vbbe=jfE~b+mxVBt~NHneW4x?>c zogG%?9z@$SDOkIIEW{F4$>~-~2N{dzN5TCb>h^#UyI(FRR z#Q002ehpj%?NzR5{e}1}0Yv?4uiSXWb;I&e&q{8?|3Mi``;>j%63UH)J)tq{#YF7e5!w z?e3!8hOwGmhAa~Pof_oN;V<PkQz~cAF|uFh#YpeCr=O8&9fp{`y!-7wr@Qpp7^_a&Kb3>F5SO$WH);Lj+fE)BTi@NeC4OdvG}vB``1KY>{;0U#a+nIv-`=AoLtVhuBX_J~+~YJ> zH|^LuJTcR?*RY5=2_fxaAG5t?;_ih)@Vy+9LzVmGqq5iv5$p-ksl$&_>`Ppc~lbaJ z%56XGDYjMerWW4Ydgj0?w-YP|)Bp;}oaGUJ(zrj;2|m}C|Bk#l+=(ZOtz*vh#Olq) z5$V=Yd3EAQJo#Bj3mEf0@zsQ?y_145!#~O8F8Bn=JFVi1%Jtxk^l=3``adU?ywKA- zNn{ysjFU!5$ZoyqeL{ck=m8E!eva2UVZ8U`nG-5lPZlS}_>K@;XvuXi=73iD6c_1# z;EEO>)rH?y#ILcw5B6SN$- zi~nin5q?IDdx4y$2f#Y87P%{pkTS5Fwr-`!y0p`E>M(+Sh725Aq*21)H5jE#OqxezT{Cidj6S=ZC5Iz_uKVF=RdGxc)9@}2`F?h$X6?mG%S=W1&5VAw!yrvhb zAB=*EsD5OIj*t37)_HajOXDY~k!z%d6xPt5Z65hRWaNxmg0p9dnA1DQ^Uk;ir}{8c zM9dbd_Kr+!$Pxf?5wpCbNJSjN{jGvtq!Q-Ffz* z7!V?!i0?-<{;+*}-FRB(dEViSkr@_d70)}VqsmQ)_gDtxdaot)&E!yj2E+4nW#T(V zoNw^<-28V&YmnuiN^YX1p1{R;%r<~#)eEs!c&Pc4Pa9-wrdbcoCD&4v(^Z4tl zfJ*agF>&_t`sgN%WCZH2GToSe`PzCC^Pr?|a@ zgL-n=0x=<6x9$^vmH6Abk2gkSSU_*;_7%CxR6b++xEuQ|JnvnI1-^fVJTUCCBcyE1 z*9-Z&vxa<4UTeQJ`OFRN5X^}SX{^Az!)-6V?XglorMV-U-|5&NaS9=o>+7$4bgt;V z@|_Q69_}pVVFdlo9VSK%g`|uu`s#=BB)996j?l*tVh1ySDUMw9KE&!mz_^Q$crX@y zmsQr2-?du7z8=^0iF|^EY^>9}OKt)7-M>4A!ngB|;*hwnceI1E3-3-?U7lO{$q?|C)xnUe$5dEIVKIU@_WKAshS>7BKp7kaN;N{nCMmp?jJc>8NZ zh1Y$v1-7Fie1=c`n{R_>;f19Q&xqJE-U~0hHt;OG7-GO|l8`)cb;NDGIX5FEV0V=l zYv$vAj@JLhnL5@y2q^_)s!zw1tCn7WDx%7`2B})a2>MH2L{IPZxi$}b ze7@vkw($u(DUTC--mh$mKT~q&b<5tC8lNrKkg?0oll%41R(VBA_;`X{AI7U*mU%(H zQAlg3Iel475#yGQa2ME@Uume{c|MB^Yx1Ah+2ZV*SFC;Ps?tPzajnbnxzLEr5Rm%| z@!sWsh{(oc4p|m4Ka4m(+3|$zNr7Z3^}v&tGtoPIJ+_1~yVt!#?FW()@ z{!hjD+mn~GF>58J?*1VnBe0I^joAir^5@O9&^LR-wV=3nW+)uncr$(3gP9UfsTU&u z2iIWc*iaGmX8njGy*YHx;I5i8M64MSQn)>FpURpHm?N^D;ujk@)Yt%6;A6 zNsVW!zf%kQ_3wBGE!@4wbkFhM@s6Q?Xb;W_4fV?Jh$*6~QiyfT{|IT18NL>JVr0Qv zW?xiVyjycZ9hZ=@umV<0-A9`sGK@2;@1ESSZ|ifnjraAH$HF(pm8C$B^1bvit>!&% zm&uMj+8_DT8K}7wZ*>^ zdp%?m%?lzoc^{5ctOFC`(h*#PxFgOLain3qO2|ozJW6v3)g|vkND}eo&&X$@GiTmD zF_Nm%kvu4ph7aTg&gV3#UK@}vxuki!$&h1`Tw-G#h=+=*@cBcw+4 z8QsqutruNq zjM$=nTtcqs6MyE(<;T_OA!5|sr9iO~cM&oy@($_KP!%R*Wvu^kMAib|kNc+-CwHVo zw&WwqF~KJoF&lN|bfjT_=W-$5{uAH!uw1EfSV-4#z+E-EUIPA7`N5ZREJBty6e48C zjC19M$b|5ln=)^FZ~N?A(r5}<89Ow&GNX=#Z(*Kfs<3K1aKO+aym@J_rn8ue5X;$w<&A9zxn{5c^@eH8`j1O zIr1d%rhPFaQf~@L>X!OYtlo=B8yhkh{QRftI!05BM&>lpu zg`k{~keaZQfROI9;Sjlcr}%C1v)BWRN&j$<##94V^g2>>%^)%=Dn6Z6`JqGP8FmA9 zq)j}HE)q=?X%v!q9+(iFU{dWlQX)k#gv>N3mL}xZN6}+{^WG4fGAR~Iut1qEAxT~a ze@2%XMVy7?!W=f1S~kTkg;>iJ#SzjiQ{Gv~Y=h#xLRM`L*Sf6sNL49hmxgy%EKjrs ze@_hoRh5p!iMBV^8V8?7nel}-QAkS|cZtz()rY1ulT(^dk<(qhw&CykjS4Z8~ZO6N!F4EZrKzUYa|#FtI^ z5+N2o*1#Kn@LKneSqegS#R+Rdjtz<{3%RjU?nB6bivy#1afowbv{i_oVnp0C!Y3Fx zVt+C7hKmEEMbVqHvV|2%jFgqPC|?G()IvsUe9z5gkMG90L#1vpj+93kTyF%@4B22@ z-lZ4c+$u8UxH_vh)N%cgOWJ)QvMp?T*X1s6CO%QIqqt9KESTYN#QWeOk}GBrgg8+{ zE4I6TZYD-f!0tB|Pe_A5b3#3&@N%T#q)H(zV(&8{x=m>wvXEUX#x}eS$EB>iBl3T6 ztXn{?}r zH0+5fWR#0uXcVQH?3W0+AINJ1$0JtRdpF6!7oF-a4sGg!q(EMs~%2 zK7c}GtnfAycdP7gr&MF1-atZRdl|`o(a^q5d4)}iH6c5q{!Pdc;lj1f$FQHOE0RMe zb)X}D-y@Rp#h9vm5}6*{qs4+zA0{C!PV@>=>9WdrN<`up)d-lE=Ar^Z$O(f~6GE<- zFYY(D@W|}+vhDCGsW}A9X9-CUxl5{lHFr`(3F$nCL&yq&^hiQ>TWCjaZr?lZp4jj*!C35g)gXNG}Pwe_B%>8191|a-e<=LSp*38@Ct=b;1==3)X=N z`MC^;G+lJKI-V85XhhnN>+2nV@gdiQoWT9xT*y{7sgfP30W){$2JcmZNVI@zpme*w z40qLC+*3)2?sLr7r{}#y@!OuqPH{z_C^>4F(i21B8~u6w8sEaJ4d;@&sP(6Z(KcK9poWMSyh3$5Fgu$$SfRxQ_X4FM7xuHN)|?Ba0O-J%kwxdS%Kmr)T_#jH>`1~o zaUm~u(z;ugU-Hm1%2iAV?WoRMXqY9bGwaKl7okhIse`1ZM5bXtgYF%a#b8WeM2NQmR5h_NQa$i1J z1d&}9@*N=+r`0%r(mHCXJ@JhbM})Zg8J}Rtqom4i*X`%d_vv^6JJgz&8XIP$vo%*9p;SXV8iw9fn52i@^0Sz8FM z+j?Rm_yoJug!zShLTh|VPPE2PaAd78s+*7g3`PkYS*WRhm(6JteWrYd7y_=_nc;)O z-lQLkD|$;~C1$=gbhh!g7Q;AFzV4pkPQ0T`wn%rzh|%MGk72(6^8n<>oprDH4xZC1 zOHP$_mY)ZU7%44cJl>0tGwR8Ov`T$sgtWpM+WdOP3ceq*`ObPHO;jaknQ>Mwmf$rZ zv^qj^#rQ#g2{BAme3sx0fu6c}wgO{Z#r+?QyA=5t4Q~t&`bWHfN({Oh@H4R{t_TrQ z8g+saGV?*-Oo(CUav?h>ZdApAIykvlWBpt4KKWRaB1Hf2 zsY`4Zs}zdoKF|Y`pBFN6Snok$c+cto%kbe_C~}|CpDRT)4Smg0R%KmUDbH1sgm^av z^vz1GHPZY>AtM#!@uki%k)ilB%7c}H#ZH;L26jAti^!{3oojOR%H!SJ+J_!iT!Slz zg=}Yk--L*su%55<9a%wC`jt0@$Os?$gEB_KsUD8hiwa|JZ5*iQh>%wgs_Dv15&K^| zQVvZp7E;_bL8QqX(48fuU~g_AJzb2hlsUM=vyj_;uOZy%-B9J4WLjvQxo-KBtbzk-)d0D=T93xOf{TK3TiPf|U(I zO5k0!hv)(S(qWILQVW?pZO{>2+_(?6?q>AF%keFW&vs;D`EEQunH$&o+*mMoC?w^N zzjLjzJ-DfH{lYIHO6&<*PHBdsz#yntu z@rk8a!B_69j~V3qRWBnFQ^Ht)BM0*`LfS$VVtGwoD6ZQZk>kC^YdDbeRiEU8YK9te zz=?}OYJ8|v5|RvWXL)A9Fv=z*vp&9t5hwZ>LiDi@#IO&Okn7d=ghY>V(TdjC#mVuh zqbo7#ZPz$Mqwb$VRyEW))aWyz>CI_>M}>%ypPFNd=t&5v52I2w%df}SQ_Z56sM@PO zu?O$Qnn%fpPD#x#@>%%RouFS|OZ>P2tKS#=dqf8(R#4R9GwT>xV#K&^WfjBdv7E+O zFz!;_!eh;9tvwlaR}tdVV(|BP-#XrJW@(`}Rc*Qm1CbpUS_&Zz=Y3f9;zG=SCRP8P zyyIIFOTpFA8R46@w&P7$5xEVgkD3-Va7Ch!nz6pI_L@6JS88uQ8winZ6Pb{Z_RzhLZd_-!MkfSJguV>)?tMzg^?WXupTW+$ZJ+^qiWpOs5epr)IBwp! zCydKexT}Vcbf|l-`B0k7cJv%qsuFU8cQi$$)Q5dA>Xm(C?sA(rAD-=h+dt|K>z!@V zbR;25R*|22+rX&1m#G``gBJtNqPJgDOpH#}6rF`%6yM*)e|}Nv?sh>yx+Is-B?Vz6 zq`SMjMx>TrkWL8+>28o-q@`O}x|dFQ_W28D=e09)@BN%}-lrH$FG;~G0!IHP+5sgh zXOm<&@!a(WWW2#on@w{Ww%QarCBSjpVbZOwLW8>c+viN>r%dPbhD4H*z$YD*>jOA0x~x}NLW;p2R3hB9$ZsK76oetx;(}r?@g5mi-}Y86gzP zs`~E}rDKtEL8%TuVMI~PQE_Y{GBZl?7N~4?k%emGO+*$gJxfV00xl9Vl zm<>b$4>9vtoCDefc_YCkpJ56RjQFXDzL!%(^MVsnQ%PsTeWKCDi;l4@q~{7x9YmoA(3Ga866TqoT)q zX8rGPJ_>0qEgjdGk91$z(Ump@_CQuD;8c7_+xwK@)rgOu?{q>)4axcy!4KYXm42F= zev5~ujSyH4;q@+c_l=c!fk!!gouGN|ZYMq9*<3a@8-gSdn+Awz6sd_burB847!?ky49JLYlig zzB3%cq0p-j_kAzFym`W_SaYsCiO4TYLk%aMU39Q!2FE^L-b$c46AKL^YffqANxiRrn$X_ z*BZf6--xKC1Eh^8LJmK?l)V<#jY?_ohsQTcv~%Jzwb8|J)jt@h{!;8{M=DPU{5?rX z75v0G^Sde%n+Y(4egPM5yTD)6bFhZ1$*7&_s0Gj25z<$*#rfV+_m6-(S^Rg0-})}$BL7vSA_C(x6|H-mD36M}2D}%!<&Bz%A>Abk zwCqAsxV->jXKsQV66HuJHdAsz`X{Zee)2!}LSaAQ3&3lOv;NDiqjSm?-?uZF>ehmx zAF(qDEUE0+iy%|CvwR4^z1yyQlp_H44zi8_X_f!l8=#mw8;HyRNW z;+!ri{T9%5%#Ei?g}3rCF!h1MUb*$kaR7zcda?SEfi)h41V(>8^~$DdJ=>_h;b zjtmUki2hK70tfyU!2xVhc1-`kk_;E{z<=JoCH}nN zYR2W^N$k6KW&>FAydqSyk=HaaU|>NM#gNv2yxKw8Qj0kurZr_>nhn@i1Rnshr{+C+ z%|?d&vG$)L*4saU@m75!n5{5h{eX z(OW2hT2uL~=I*&@1?@Wgr-{}e($qUVVD;uQ`IFid2miKcPZV~*qPSIfYvVHorBJdQ z$q9wVU)SR{m!^Z)QsFS(9FyGAu`=W)1@mR#zJQGId|)5#z}g+oGd4`|4Gl`-$X2ym z!9^IA;hxk1;S6in`(zz!;I;6fcoE_A;t@2BzJNpnJ+;|6(0|A|;ku^fAN&*OL1tCa z8cz+O;O?XF6Ej?@X1YE(#xOfdBg(1ew)nAldQF$>A9;Uw(L;}WM;&Hwem|)!cT@;> zQ|n;w`ymNCL`dd`rkOev80Q{`K?7wTZ@?m3z4n1BS6`muocu?CsVi`g?8-N0Oy(ts zdcPRm%FY$46zK0IhV72#q1mC$B8Jxn1oGN+EdjZm6$-r#6g?St#EF#kOdDtPeqV_V zij)q74J1NF{GS_I`_zUOqJm@eq~VtMpG{>9_?U4g+A5z>&tc6GSbb=)Vth>Yd`t>m ztXiiL+$38SCbS0NxF{NE!2Ud^`#iCN(BX-|M$}GxrQnBJ=1_F=`2Voqq{LiHCu$rW z-LG59-)pPAQrEz7cZ9T?aF@Vys?S|R=Mdn+O~$|taY=qriUd>2GM|E4SecK4Z->eC zV)Yxde6YQa?568=REy}qZFu%r%clkH9h;leiOsU-u_>u6fF~NxwfELD~?+s zah>3)6%F@qZ5RB-T|&vtNwj6~%Et!kS~0jgOF1yB5HGG4u+JkM-L=Oi6NQ>Y$?+0O zb*FO9*#L3lO7FRUqR^OTd5BaLP|Tv`Nn<=--Xhw$L@7@pZy@Ne=x-c-;;Igz8AQhK<@jq!eya1F&H{h9%raz?qAJKC?(z27+O+YV?dv*Yqdw zxrtvT5U;Z}OEYyNePXU5g(=aG-HWGtn9>vE66r6pR&`eFvv{E~6tU;x+5vH#$6xmW zdZgdFswc=(ur7My<#`DB9$Dqm-=8+K{3+ty=GOG2Ajz4GhL;4id`A)@LHYT`;K7yY zW4BMo#vMsl?o8B_&4GIW<|#x zEX`jk!C*vBv9mPXe?}@;V!lIB2Qfjw>2xi%syGSLM(ns2{d9Zvv26+!W7xP> zpF#DKjv^L>iR7-}Mx=G(b{g{!U%0@iIOqKs*0yPq9t_w`{Wv9s&KiwuNg*DKR}vH0 z#-xv-TE2dcbak0LUMKX987=nf>>L_z786l7m}uHvk-yM~If&`?4OvSE@oDpQ8IWv4c6RcV z!xbO%u0*=12!ju<8diNgJAu!ns~PA1jWvws@^IYyXL6dHgZahngjx?oXUxp62ol-u zaNQ5z?8$82^{LW;S}AW9jI6>I+4D2t#<+Xb9TQ@bf$eMC*98iW1575JvIs(!y_U@m zb9oaU6uN0BlnPp(W_Az{olOjUkDhPx3CZ8ZXL@zq)yOTj5X7Vn0Yk2pKXO1sut^D! zFyA+(LhsJHt4a*>8^LX+(;@L8v1sns&&`S0ZBZJGlSZ4H=hKW5Mv9WVPa{)N1%#sU z=&qBDoy~{_PL1VUu+a8sSn~I6Znq_umCEFBLBE~LG?{3{6U>9#?d0>A1ThfkISg?? zUJ!o%;|yIq3`6tBSF@^;MwhqJQGE=cKvV0LB<*T}r!iGp#~CHDy9{bnWWvBZA18H> zf!d9Ar6YxDmwtbIRZ& z93alOV*G5KwL_RaRq&_R0mOUk<}X6wetchR&gOJ4Ei7*V$C4Q)uUuLy2Q8_vWYNBx zMfnq#WU~NFTy~5jdS}kV=uJIXrfu|2?#nI?^y1@9F z(bZ$xd!9o2_NG*P-@FHrjb5MqFi~h)N|!}k2H$W2CeD+HAr2`TOPA>?Yc-R__M|#9 zxlK<(I$I4mYb%b3y|V~auXg!s*l88Vux@S5sPkx>hhSJ%}1(E}^K@}%7bK4cBXI`k`$kWdwF6G1_ zDmTvg-$MZF*%+Dudx@$5-jQi(3#c-WW&ck;P=^UyESKd_z}#^9&^&ehw$u3O@aT$I zev7Ok;oV1jmNu#gLpP|Hbki)?3nbWnWgD?JJNvTxX9~;CW1hfQBII#HgQwEO5_$ds z-Wp(?DH2nOwHLPb*6$2We}l+UcNiXB1>8OyrWwaWUEFLcnbjfqD9W#B@SKD^FLSM| z{b^RtH_>q3KAi^B>?NrS%2}1pd8QQ-NB~U7=mD&qwLN$;(&IYs=^dkPUI>+vu6jM2 zMY%!g&Ulc1ZqR($$(YP{5KGk@hko0ifX19L-ZcR?=9syoJ;Cp_2#S+qopH84hJB?Y zGE1b#cB4dOU?n4f*|$Qp})}aYDHUAyS9k_moM1l z&Ry=z9`t1XwFWL;1BE!~tm0MLbnf-G)@K`!tT4$gKbf&?r{tN){jOL_DmFm?F?s_x z-8{ydxeAG6}4Mu+gG?YJ6;68dKID;llfL#q8?-7?2>h3tt&EQPd z{J^kvjRgE_d2d9(;fot5&p-4a_9#ksOCp&1M6{f7Y|&c3{vhf*(CXdnh(>O_T|?Go zS5Y1&E?K7#))k_g;l1yrI9Vz9HZoi07Y3C6yI8U654MMVT&l+4>{7Nik!cyRmH{FcStg}-Ynm|c@))r1 zMR?=>=2rQF`&nEbHf;GVpNOZ@F2huu^tydM#SD9cktXwGY%+&lr^Z#h7-6w&PY$pn zeyzq}s7ufMMPcplU~B&?ulj&NGa6>8hJM61M!;M`4cOBe4xg+tH;%bBlYIz#YTAp# zdzu%>8KTCrU&7rZZ8@tc@wDEA^=};G$J$Bx-)jDO&yD0R_R= z8E?ZGXD40?RJS1!-m5mGP&^wm|5ua+W;~kc5}g*GO-#1K3L+V$c<*Ehi?IS+R5a@5 zuYUX-(0Y}_PwT(0Xi&x}JMzriIs3{~c3bl{Vz(v7k7RrhYjgd16?5(vw&GkWw=d+m zkj4H|b%mUpUXDJ}5k}t=+hH92PM8oAQv5EJZ`i%H-Mjp)wB%b&7dijoXlTdrb{KyW zbM6(AwjkOwzu3FghiMJhFe&ZiC@AK0-gs&@U`?A_^?Hmfw`y^q(n`&8@_oR6zHQ{b zX0J%WZR1U~Ab)WX%NL>8ohj;W@itOYezeiO5N|{_hd*eOU_8y!^l6;B_~XU1@#e?| zk#Qf_Nn!zwjDX>h!r_>w?cwEEHra<*Vt$4gb=*=6W@$G|9Pde7Tl~PCIw_G6RIbn& z(3`fRTWn}_aMWQ!cJc56gc?5D$6)?qJ!s?dZ_SUropkGeo>r^($x#c#%*?q#Ov}c= z7;GO))~uDKGhV6}^7)dqlXYJ*n>qXoImXWNfZ9H@@wei}-;y)?e^-2>Z@7>9?thGx zZx7gT2TXx2Yp8uoYgoFVp_tH)H(@Az;KqVGow#e6Q2Meiz}L7dfo*A01Prwjb=K_> z=K=AXqYI7L*1Aukp8wVM8NYGv%lbVKfQ)rL(J}V?_EcimQu-USK%}E|m|;RBc~FyN zK+`!R@-w5QuS^bk!hONr;WnK>A}lElyI0Y8cW-Ep+dzbBBk^#`$Tx}6E7ZUjNTQrk zbdpMM5DB~K3+U+7lieXIy>qiraJKC*9orqa@EOrE7!EX%Kvs=5XFw+7zy=v^;ao8mv-+ctp+TXNa7 zC|W>+2s@#RT8($qVm^TLlz)wY zV#x1yuY+2rCeMc2PoE?Gi`}yzP_C!=)zA zIVrqRO+F*(Dti$BQcvyg50YFjN@LBVGNM#Sx9muDP}l(e3GP-7|^@M6yWoSj&JKkmY=l0NW4yTak3$vF1C zX|uN-;WGz$n!#7bGcQ7og1Oocg><*Hb6q{Q8sKb$f|Rtx1?%WI=$#M9h=1qK?0+0u zQ`o3z-L*NU$FC=(?y7148&RBb*X*O2;b^q3_&okU$Th%FR$^45;;{@~f0hT_`3+G^ z{$|6`=etJvIa53Tn(GRv2JSD@b=N<_u%x8*74_FUkC$Shfzo22GT%p5Ef6IWI2?L9 zM7Z7dIsu3ozh6scf@jq%M!v}3*9cnuf%Nqd$pqBm3$e<7a=jV=?^ z+R%ON4D7CM(wg_7%QYfpz_j3-)#>rmRu!=a2g4#QnvQtNXVw?#t7NqOdSBl$oWsSY z`hqS*JOxqOI=Xm_-ZN3pJesSt8{&+*^*M!NR&a)J3kIFT8kwb*cx=suvWZr3o2$@D zcU>TWwf1G{n<>}PQHH=Bi?g%&QA`tb-KUBOklvl^3KYCAMyp{s?cTC>)nocFwvqBq zO59qClFO9iwpxU&wPMyZ0hTuzHvUX?l=^to1+7*~WXa~T|fJ)Dts zE7^?l`fHM5LZmr1JAWG}Ttx#?Wvj?@kBT1$M8bE&QA2+GZ)vZ`qMgY9Wfx4r%Fclt z!rB7KMPKPNgD@Yrs0vK=Ps#F%6(wx13sc`y8-N7e2w@H~*?$=X(>|54z{N{axXCOl zCa;OrfBzUU9HFt`&L*-_)TyC>75uS_zojc76tWAh-1o>&&-zi$7ZNLB$)-^LYRzX4d#M zHdZW+&En#T^n%v6pmlL%-KA+*SJp$~P}x*N*_&v3EQLl4_INZY&}l&G_d7`S%LF#} z$dmJ-vro@I!L$$Qqn{OsX@q`2%zcViM*NJe<%M|V_6>zejFahN6%y`eMiI}=M9w__ z!*fZEU0O<9M=H>!0aYTjWy%7Es1@JL2C!q-5Z_JXW5E*uE(<|RiyaL z8(;27f&YT%^RdF=h9ZIypS~9?=D&MT4@-sXa#-?)aoJ<%nplhB-H0sVm8qGF`if1X zndl3zyZGU0zBjn*^tB58iXCu6M!CkY<+wl+e$fsyA#c3?%4D}n2p13zXIA$tM$%+a zY?Qz*YKOpNXUVF`+QB|Q4%6TZj8#jzt3w53wQ>@-*aVzGeFo;VWZk=JM$7XI1|5W5 zwy(VxIMybmGjKR$D@E&;+5$DKv*DCeE!e(HH4bZ=!{6h1`WywleUHBd2!goDn1~iu zOP@3^-dw#WHaKlHm>3w(yH-#heh)x~%xpY$V#VjhlmP2xvI59GQACF<3`wU2!SCtOFu#L!wy zh=cloJnZ1V{HZipA= zpWqXxD zB_-?tY@&BW%`bP*B%9wk4a92ba~!2YQ1;0j;a&0Vm{f_BEW$2(j(flP4JrGkkNFs- z@@9P zrM6(ZhZDRk~kuKaI=q3JDGF29*wI#D~3Y5%g(1&=%C! zaV?H>V17=@QwqgRA3)!gr@2MtG*HnI!d5o4_T#4{$c?Jx-zzv8O#CN>Q2hhmYaDwb zF(&9k*U+6tzx6B6vp8p7{C#))KHR%lwN*<^Tb{nDz6YNeI==2*%qf; z%qeis1+HD90$-VCL9FV(*P6W&_F)U^c&avA+l`nzS~8=(3GDnP>=&`+4}|L_1B%@a za@e;3#Y?&tkVQ{IGOFfq5=o53&dp<%QO#oHfzt^cr{*s;n)fD@!A(9 zIz#uT2!fc`Ki0oHG)0&590btpe2l!lG&ozmUC`QrS*5p0uXc!I(FXpitzS>quS|1{ z@!xS4C;1o0(5kNB{7UaX10dV;!7Qk9S6n*a>!kqW$xU`vL4~FDBmR?fk^f8Y2d|~+ zCeA`{wj*>Y*#R-`LjSzc$&$EVL~y_^eabh>ZPyBDdE> zD8|B`GgY8*G_UA)3bFR~3Y?PPl~*4HGJoFx_$b5bDTJFo!$;%9{_=m5xBOzoq>qfs zbyD>m5b=Ae6tBG-a<0ht1dEX=(cC|0VhNV-)T#pBjMAWY?V?)0aU%IBnTsjxnudUlx}Z$>%!uNhEqxpfkQv zv6prt|97moK`5eXJJ94TbW$%P-A5vb5ky!=t|kz1mjcm}c~on0XptJhOHbXMvz7%j z0D}z@h|qr?HMdDHkf*u?S?y*FGV^XI`Kc*Ga33L?)W@R-SeE(yZ{(e>qix>j##XRD z3Fs}D# zTWzBtO8t0161?>^r|x8{7iJTH6iIF~PKaN$i93ge#eA&;{bw6}*YrfBnMWkBHU2mC zTkl0l)hjxcY?7e;oyhUhEW%2+Iz)--M}*b+0Q8kbwOod=B$Yd#uSUH1&(QJ>hlFi= z1Aa&4Il_Sihb=e0ZO1&|*P3-p8oCR*E^?A70geUG3FPaO&N&`M`Q5B|!Mu<|i+&pW zp>d_wmq^d06r45bw)^fy^QGL6TtO`z8fI6oL(RRsF8-$z%vLD1?aZbS&%!iAt6#%> z4*gvd+&3a48?HmsIlgeI4lRU#i|yLOuZ=lzZ}8>cHqj0zE2BOnpxsr=Fo+LE(S!cg z$l(AjxFhyBrRjdHtsP|9Co!P`m`sK|+?Cz;i;!`I(Z_&6=R31F)~C_r%rU@Szt`@i ze|)hY!j(dMfd0gm>`;-+t?%z{re7S6uXuM(D$;`zl+a(~d0yW8rL%5_vq#2wsqW_4 zWti98km@}1-yh_MvE;S;edoxnq6lJE5ksI}r|xfFevG$^tYP!&+E$iT`AeLfyAo0r zSQ>8a|3DR|b5}{tP_)GbzupWYz5`upkeVk){%h!I`>mbfN zC_=CeJm4~7%&A}oqq{-5@``-p`A_F}IAq&!IA{OsX1C(sV2j!(#&%SwS2Wihpj{bs zqDOWl{8Zc}fBuKBY7f~rCcoJ)3!w8IUU4*j&CsWT)$k=O|}zZ4^@plvv7*0Fu$ zvYl3r0R>ev!b=C9o_XsUCqxw8Z1cL>l0j44tUdRR2VNHTE%t^w+~vxEJn!(+Qt>_Y zoFmjZVEjl!Tpm00A~dMugtnlB$k*4rBP}=oB&5sT;)(wZSxhm#b5Hx>@BHnqn)RT) zi<7gC#)ca+$Cb;CP)mKYOl4|Fi*T19<)1&qwHADn;ma#7Ohxci9>0x$T%Si2aZ70* zxqt@3Mig|FeY>yhVJH+pHPIMe%!9S2=4ka^x2T(GU69+g4)Nn~gf_Hbxb|lGs6ZKm zo0Vf7UJTsY9ebK;7roKj5Oo->D;TIJ@+Cpc+ILFC*Uly83lk6zGwKcNFWH1Zqbc z1^aC3ojV-gz`Pwjb2E&AHM=^Chro<6$rJeOW+XDmp8o^c-1n7M)Y#8F$pPca;ZT!- zx_wEu+4$McM-xi`a@53-;l(Kn{emKDv0ACNE(tPJAh;g$Cb6@}_MQA9gO~^(ti%Ng zVERzVe=x9Sla0Q^h`f2l)ZpT1Pwu(sKsbQFJU|}km_gCPkFySAm7}4HRyy2_mecK^ z+)4-dWX*|D(CRtnk??-DMSV-(ePCM4VDk1ivWm!@w+6_UdCl*><3d(}{Fw2se(RKr z>vqYZY}SDiJh|UG`Qa#9*JyU=w+Badk|4z4W4cNVT~J@{t0_K>KO?CvOO%#72hv< z@8i5O4dR`%NK`qd*Xzb*9Pgn936g`LhW5=gzFHug`I0+VuLhb=Zm64ZUgt;GD8=yRmLJE`toz?91=hj^it}X6? zrX1kEgq|&E$!JqvtCkR$_rH5Zmu%Ot9phT4<^MZv&f#;As7g0_^*KczlfU=bJ&Kx( zbUb}xZHz<1-cNMMXDxVKX$s+4_|ES@Tc??gHgdh!lj~Ac?nLS$RjPI2?jORYg%j3A zIwpEclHl#t0`Fl3W)1KO-CvT6IW?_HxInC6(9|k^F()qdWkkh(*}6nEgBb*)uJfpF zQ7x}@FO8zyz+sJ2aEXZej{RRILJ^rtyS*&;CqJ6O{e@#F3|p_$wca1~R&|9+$9%S^ zQ&_(1zXin0%bGy*@aj?ex*+WJBon@#C*272tVk z-U*j1*^4!ggT;ZH2D)EqFTxbBXI)MXS6ev5{yd|0Pl7DhjDLnTVxb9k-wL``RP8dk z57}Fx)TjaKOe*2%s0~vVyd7uUg-AhR{+OEDK+@XV`z%uQmSB!X{)d?j7pH6AE}W5)A043Fy_SJChUti29`n3j4Dnm{1ug^j?f#3aTu*9J6 z41`Hd*}9UlDNMwqUdVk$wqD0=(B^GC^{l+?!H~RReAic?+zQ5IJvjE=X^QP!Hdsl%0WLD+7yG=O1{hZmHLB6e<2BU{QE4HbmOo##<-gC zh)WPXF03RTKp{Vk_`8bz{2q!{2kk5aW!Ik{!-*?aZl;mr{O>KIdp6k7`9m_|mPUT# zHS6EF%)5cx%Y1CBp8WLaa%vAPk0T9#957ed^bnLgH*$vTj&AaN09KdcnafFO0S}CF zXR0DebgeXdH3lpO8%n$Lhj8}M%5V3qR6c<1J+p493hcN{@hjlMd=wMj9!~2gha1b> z3*NE5JFwk<-R)Md7?$L?*B5YbXi@aHOHJK+gV*xqG$AW5)6eE_=VB}QeM zuqNms)oUMd7^>6X$_APY4pFq=MPYA#q2BK6GWeDUz2D+3`tOxMqA6OB61>Rnk^qR}v8+$x=aolLG8ar5znxL`FsXP6rQ-qGF+~IpYd3% z<{Hum1Tc=D9iW`shsL|vPH7p)K@GCQtV|U&fOKX6YvrrEo>o%^WVGAM@|j0F8=rN( zxgF|cxlW>L1<$IgnLj=e^*Mxg0XXa!_ZOj>IpJq=So96nou4%Nv8Lu!rRLdhJeA4I z_M{BIFuLi07AF0l@|8%be^V|HmMh=i-Q^`c?U~n++_N$F5XYR@m*%$?5`o{M*Y%_q zz|*_M_d%~-|BNB_9pEU?OP9KRP6&uJU00 z6!>=CZOCt?Kl`Zz**1#lWdOXFnLl23B1M8BcZ9RPT@z2Tn=j+#HpMvkp8o;(f=)ZK zq_@r7qIm|`J9h>ej@QaA&sKe1w@*vgc1{NCRDh9Bt3M6$o;o-igN^m2)vJ%a3JrYN z2v+I{&2N}TFT@sBL5xTf#{-00cQwRvv;02ksVFI;T{ds#4>6J`51)TADOUY=7Zuw+wHV-sw|_#1ii;9m?(18J$>ll>Rs1 zXv*DPt;Z_QCqI%uD3xMbKvzCX!#a-Tiy$Hth^fW*58GMBk8i~f_^(DJ>x52l`cS6I zule|6kOrt6knAyjS0ui#NNc`YVD|#fh{yjBA~ePX)w!bJYU zhASha^bvm5zBIm*x$NN;0oZ zthO^7!O}q9k5GPI3N25<@kc1j@1M8LMjhORa`jatB3KmkFA>R|JePAynRn&b6( z(m)N4YNTapDc=`KouP8gok zAI|f$l{wk>M?0I|hX^L`Q^+W+$v6D#m_KTd$`m>TPMG*J#P9qM8UsiJ-1P-eJxxOP zTQP|0%39bVS}b=O8~iGHkr|zSPa~Y_CcpP5EB0%C$JEHTaN?3}i=l##0T4ctg=HM- zb5hSB8HKUwz6${*OMA6uwE_`dv8Z&VQ4!j!C`ITC@6YE2bj?WpQ~r%xTlFG>BOg$A zo^>9ua6@E4GCC0T{gHL+knYSxM&Rm)a2UhHqRl#tK=9F`B{baEi+dXPvzyBEkUDyO z9ZOS5lW1Xkx|3H?HYi=#;QC~4iR9nrIseIJ zJRRUqv8sE?4=o{Qiww2@^iY%VxyeoTIM^Ct@j-3OfM0bT|Oq~bU0Ni*^Q zj{u3Ql9^=PTrZ5{9ZBhicX+t87(@BiZ|V5mL8+%QU3b%j#wK2}u!AZ^PD_IMdxCk3 zd&Y8Qc@+jp7DvTQ6AMMftF+GxR(wqWCUaiFwGM30R91cYfx=3PLjO&jQAvPwaby9j4{WaEhtBTgsrglCz+XuK3cxd%^vu2!~oyApg=ePbB}SSl8)` z4$GCivZ5l&r?$1u%zW`P1n1!B*z660woQ4mU~9rqIm>_9F#b^cShbi;Fc}ZfO*{Ex zDVLjOJ$DHKZ-;xI7|P!N>gkqPP=l@cY=>?JHv-qzUb}23o#C;ayT_J>W&!VEqa*Jv z2BLIdL3l>)4wx?KE|1m~skxJQ+EU$_TgjNmt@llD;yQx;(lGA{{d8tuWx;n>B=tDa)L@1)D&xShL3dP?&l4a%KX)7>3-{#p=%TxdOA=q|wEa=n=4C*?j~ zhe13fOhcO>Q;rW!v6a6V@zm`k4K#R66TiL*QazCzUY*Lw`Aegtf>YI<{%sH^wK62T z#$8U@e*FO+)QH=W*;>B))wRwjI~rl>rxFZ4rg6&;oUr#|sJJvDWSmessI4L$IPm|b zWIe=|m^0aBzNbhK_y*{h`BRhA=v{RVTbmt?46&}%=M?$Zm+@8Pl*8@`4GTt; zMI;xF>C6{}y=l*_c=m4!V;Z~QBiZv2!wL3U5!8^hbUp)a>>pb$+%DM(aD;|y_(9&^ zD4fU_1;f3z5rB!*Ezvg-uR2(gCSR)qBG}WfSD#$~D558~e83vBkLF8c)w>Dj zx)5F3?1{{20d*36!oV4l*s^|}$@%qZQ2y5B!MaaV!p}xQf)1KTkBY%{_YAX{`xZc3 zqr`-wuV*&r4IwT*Cb;%o#?*c#3DOy4Vj&G|{_;AG2#8B6e=o{pc2bfaUQc&DL$51K z)z*&xVKtJ@5QopXoQT%yGJlq?#pv`tepzA;3$G?V-0(o2z1E4kMjrIKDq_?G0=6I< z7U~nx)|%fHqqo#=Bm+f!vyIHH382mLp4Bn_`Okl|q#?E8H2 z6^ETv68MP3!*s{1X&*_}M@qO4IJCOXPV@2lWhJ6?e0g7^B!0V&jSvUB^60KU09u<2 zf32ci$8*%|bLPXGHC0Z)E^G< zRy-Ipk8haN!s23IRKG%Qz(OB_!Y^wD{Zh7Fzi8<~=KY@YzEBYAO2zp&Sv570nM6i|0E*)KD!?_0w zP<=s}$S+<5kh0#1hrNzS4>E6b`R;5!LM%C8Flg|{Jpgk_X!8q%i!d9$)eoF5X?eUz zFT=9b)A8g_5%Y1uPx$P&t9zm_j4y&g*_32o57UyFr%{i`)+tBWRYlXw!vJ2!?h@-LqS z(xy1+)?|3z8K@p&33ps}|JtdcF^SoPV&A~TzL-7lG+Fk2$^D;IM#`Rb zA;soo#3MZT9|kC*mu@uu=b8;0F!okS{%P!^dI*2UaJPD`OoytMk7|p4TDN|-fN>?O6EqlI8Y1Vc= zUs*dVVJJGepJk1OZ!Uj6T{(buv2XA4NxSON;>7$Lud}NBlw;k-Cl;8qf_ZU_8;NwPYy!pzcu2%G#6DQRfZXqlj;wyA^N@A3u2 z!A{KH*B|2MQa%-)%?sCWt7IM2g`;WOsHgxKRV7myJZs)}f)_xgq}355F)3ky?r*ficsy z6AXrV5nt6pS->#s>`aZ{1zmRiyEL;zIP4?*TJ^f8g}|hCeacO9evMK40qA#MuC7AA zPVg!kF!l=7b7+gb6+%6)B*dEp6370*L};|YB;(Uq7oY6y94E|3mq1346%TqXY$4B? ziu=t-TS|R!c_^7XFDuvjHfj9p5!5CzPwpOSzOODvT{u51LTB zrS!~j9MB0QtM%lhr2q2%-ZpS^^;7i%bMAX9`ut02{do`f0=t6dt4s=WA=w32Img1V zcr!&RALb|6&d}8#KH%;nInda|#NNl-?8PC?kar9^`7weMO2-gLJ8Z>WlPwyB#8$J9X}(F)IVJMfE3Yx^ zX)hM)AS0^WeXBv<<+$x*>RI%bJ2%W$X4KVFc8##S!$6*HK|LGnJBthPfvhLC1f6vn ztrq3*C1R*H8Vh4!`!AP&hVV(MHxj&_5ljbJ_HmPTToH zhC=?h@g#>65}JhJAMC(u8%Z7j?nB`DMg&;I_#A&Cxcc9*3B8PMmm?|{!`;=Z8kjxv zQ1VI|+Xy6T5Z|p^s%Z`VX9Q|7{b)8w!QrRxeF!oQN`~Xs33$8h^+}*t_TF}yA#BPT z@T%$pBb75*BFDg_xA>WSrgL#RbfjqMg9GXLZKzHBhQ8vGyGkMa@FtsP97&&Oh&5ke zp1Fg4IZiPih0a4NqQ7q0(Yf9T|HaQ#9~PEdKmSR(GsI7GWMnm^BgB;zl)fWzC{xUUri>xv z(Tk3)AvHMh@75ON3qm4r0PXU7BOh_3sbwCAMBjq_yenhCj;XITH)))Vb8bx|dE85?I2lOr>K zoSk|4ighxt``-lPTU-Ct!;x66mPLlSn%pdo6dE`UELF?62A5_L_cc3}#L&;LwmAEa z=jR3|oi&h4F+%1qWRdtS+{=F6iL5zdq+j1;nHn#9r=xw0RY^Xtna(4t5i zIJ$>n=~xcu1XWZSxZyVd|y}>GaO0l`wUBprMEDILG7h>guV96zas- zkbKB@s5b$Ti7OV2GhI$TxFi&NLwwQ zT9Ac4teIUQo|94H4SzB)tiFP-7tMT3*$QN69WX#>YrzJ@&KP__UKpX4w+R?UF04fz zD#mEHYb_W;^i5D}+z5#24yJ&luPE5uy2p=Ba|P=c!LPj=thLVy6*(n+Oy4)P4&H^Q zUeWYag0+RNv5yrCt9E~`V=`jsCpFTMZ9H}}?3ee)blsAK{YCeDev5MVhjs-8UOD+& zZ|2UeZl@-?J&D0evF}pd;u4bcGaObFoLL#xwx0o3#;@lF2JoV|)S}4YMkQNvfX8K8 z?Y;X0OxUs0j#exF9Q|~Yk?Q-8wSCvP#8vNaF4Hdv%zic7bt!F!+7i)r#p0hGhe zdj&M&DhHNl1tqLu&*VG3K?dHq!`Anmk5UyIH`Y8pb8?kk&}~iu)VSF^@W3g_t4A?> z8!5kANbCC(Q*T$P-I9I@y-;yjOk#L!7!I0qvhuwBb`UyWFuZldW$ETGk+;)J{EDVu za`6v$SgnuO%?t4qsx7}WM)htvQatoo9#WRGT5i|m<+MWQYaY%yUvW_Mg;cvUB_&1PsUO7jtw)Gsm{o(kLtWCHRw3)D#)|09?2~ZwzTju zcgoZ;#yTo**){q(HS>u@mg$2{XJgD#FJy%G9eHugi(#X%kzpU2>8>&1xFIcz=Jlb$ zC1Hy-R7i&^9=Xlv!10|Epu_1*Sd5ojtwZIn=QpV?xv}&)c`;Eh-VYkSWnE)xnP}|e zz8?!6-zPj{8n|Vr`;2ZeML<&`Fn6V-{eCDSekg(1l7{V%-4>A?oTgt=7M0`GsPJ^D zv%hu2QrqaTAdWMvo|fCn#q}Sm{^5(>KP6336NBnwI0%B~=}wEY-=_>ML-pT2dn6bKObqTzUYtLU{`g4+g7m(5QER*u zg7Tl0>LH#%Kx@sO{$UawK+r372wJ{CcOBv2fa#k21FXDiRM3bD7Dh@(4E=$Lo`Y($ zYWh4u4T7{55Ta>Fgg;o9uTIm_{pMKv5Q500*dH-bhYtLBD0VY4iUZnuw({YX=e|qP zszQq9DUt_&r!+nOFXb?a6#qYp#WVSIK<0NTu1yP~+I)>_;jwYfC*!;N*_H+T|L75x zKhOma*+`c^Fw;Aokr+h?T?FwzD*az&@UIbr0AM_SzG-ND%N&9}SR(rZfGIL-3^X+V z?ijQJ$U`Hr8mS2YT8K*k8peDh(l@V7MLUZfF<<@Kh(jR2fHZ3)IuL9J5nGV*K;XDI z*$W^p+rbJ%9tbRe)ElwDqZ9M>lth;R8BK8E%#HgZ$MC@T>vl(S@jwTV{gJzP-~=#u qgog)MAlZZb5Cpsx7VQNP^3n$w==kqeRGJ_08nktxmU1YHh5iCnQh1O6 delta 131858 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­gwdz+FpTB2s@7O1N3*Uxu` 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

JmoGd~eRN7TXAVM!wH9u~UDfANv+Q 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 diff --git a/XEngine_Docment/Docment_zh.docx b/XEngine_Docment/Docment_zh.docx index 14e88a2cfbb791c1c5d608482fb18640fcb92878..b7884fdd3b60f250cc40cd70117f9a6442faa366 100644 GIT binary patch delta 136382 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

S9js)S4gP?JBd1*SfZNF&``> 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�^&<~iN=0&@&(xpNm;dUr3Grv>b8aE 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 z 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 diff --git a/XEngine_Release/XEngine_Config/XEngine_VersionConfig.json b/XEngine_Release/XEngine_Config/XEngine_VersionConfig.json index 25dc830..cd70124 100644 --- a/XEngine_Release/XEngine_Config/XEngine_VersionConfig.json +++ b/XEngine_Release/XEngine_Config/XEngine_VersionConfig.json @@ -1,5 +1,6 @@ { "XVer":[ + "V3.22.0.1001 Build20260316", "V3.21.0.1001 Build20251223", "V3.20.0.1001 Build20251104", "V3.19.0.1001 Build20250826",