From 1979fd80424d16b2e489f9b57d01d9c7811d25a2 Mon Sep 17 00:00:00 2001 From: dartraiden Date: Mon, 2 Jan 2023 21:10:29 +0300 Subject: Update copyrights --- protocols/Dummy/src/dummy.h | 2 +- protocols/Dummy/src/dummy_options.cpp | 2 +- protocols/Dummy/src/dummy_proto.cpp | 376 +++++++++++++++++----------------- protocols/Dummy/src/dummy_proto.h | 106 +++++----- protocols/Dummy/src/main.cpp | 2 +- protocols/Dummy/src/stdafx.cxx | 36 ++-- protocols/Dummy/src/stdafx.h | 120 +++++------ protocols/Dummy/src/version.h | 2 +- 8 files changed, 323 insertions(+), 323 deletions(-) (limited to 'protocols/Dummy/src') diff --git a/protocols/Dummy/src/dummy.h b/protocols/Dummy/src/dummy.h index 14b4e4ea44..12071af068 100644 --- a/protocols/Dummy/src/dummy.h +++ b/protocols/Dummy/src/dummy.h @@ -1,5 +1,5 @@ /* -Copyright (c) 2014-17 Robert Pösel, 2017-22 Miranda NG team +Copyright (c) 2014-17 Robert Pösel, 2017-23 Miranda NG team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License diff --git a/protocols/Dummy/src/dummy_options.cpp b/protocols/Dummy/src/dummy_options.cpp index 4369bfe9df..3ceecc0225 100644 --- a/protocols/Dummy/src/dummy_options.cpp +++ b/protocols/Dummy/src/dummy_options.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2014-17 Robert Pösel, 2017-22 Miranda NG team +Copyright (c) 2014-17 Robert Pösel, 2017-23 Miranda NG team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License diff --git a/protocols/Dummy/src/dummy_proto.cpp b/protocols/Dummy/src/dummy_proto.cpp index fe075aab59..7ec308eb3e 100644 --- a/protocols/Dummy/src/dummy_proto.cpp +++ b/protocols/Dummy/src/dummy_proto.cpp @@ -1,188 +1,188 @@ -/* -Copyright (c) 2014-17 Robert Pösel, 2017-22 Miranda NG team - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation version 2 -of the License. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#include "stdafx.h" - -const ttemplate templates[DUMMY_PROTO_COUNT] = -{ - { LPGEN("Custom"), "", "" }, - { "AIM", "SN", LPGEN("Screen name") }, - { "Discord", "id", LPGEN("Discord ID") }, - { "EmLAN", "Nick", LPGEN("User name") }, - { "Facebook", "ID", LPGEN("Facebook ID") }, - { "GG", "UIN", LPGEN("Gadu-Gadu number") }, - { "ICQ", "UIN", LPGEN("User ID") }, - { "ICQCorp", "UIN", LPGEN("ICQ number") }, - { "IRC", "Nick", LPGEN("Nickname") }, - { "Jabber", "jid", LPGEN("JID") }, - { "MinecraftDynmap", "Nick", LPGEN("Visible name") }, - { "MRA", "e-mail", LPGEN("E-mail address") }, - { "MSN", "wlid", LPGEN("Live ID") }, - { "Omegle", "nick", LPGEN("Visible name") }, - { "Sametime", "stid", LPGEN("ID") }, - { "Skype (SkypeKit)", "sid", LPGEN("Skype name") }, - { "Skype (Classic)", "Username", LPGEN("Skype name") }, - { "Skype (Web)", "Username", LPGEN("Skype name") }, - { "Steam", "SteamID", LPGEN("Steam ID") }, - { "Tlen", "jid", LPGEN("Tlen login") }, - { "Tox", "ToxID", LPGEN("Tox ID") }, - { "Twitter", "Username", LPGEN("Username") }, - { "VK", "ID", LPGEN("VKontakte ID") }, - { "WhatsApp", "ID", LPGEN("WhatsApp ID") }, - { "XFire", "Username", LPGEN("Username") }, - { "Yahoo", "yahoo_id", LPGEN("ID") }, -}; - -void CDummyProto::SearchIdAckThread(void *targ) -{ - PROTOSEARCHRESULT psr = { 0 }; - psr.cbSize = sizeof(psr); - psr.flags = PSR_UNICODE; - psr.id.w = (wchar_t*)targ; - ProtoBroadcastAck(NULL, ACKTYPE_SEARCH, ACKRESULT_DATA, targ, (LPARAM)&psr); - - ProtoBroadcastAck(NULL, ACKTYPE_SEARCH, ACKRESULT_SUCCESS, targ, 0); - - mir_free(targ); -} - -static int sttCompareProtocols(const CDummyProto *p1, const CDummyProto *p2) -{ - return mir_wstrcmp(p1->m_tszUserName, p2->m_tszUserName); -} - -CDummyProto::CDummyProto(const char *szModuleName, const wchar_t *ptszUserName) : - PROTO(szModuleName, ptszUserName) -{ - CreateProtoService(PS_CREATEACCMGRUI, &CDummyProto::SvcCreateAccMgrUI); - - msgid = 0; - - int id = getTemplateId(); - ptrA setting(id > 0 ? mir_strdup(templates[id].setting) : getStringA(DUMMY_ID_SETTING)); - if (setting != NULL) { - strncpy_s(uniqueIdText, setting, _TRUNCATE); - Proto_SetUniqueId(m_szModuleName, uniqueIdText); - } - else uniqueIdText[0] = '\0'; - - uniqueIdSetting[0] = '\0'; -} - -CDummyProto::~CDummyProto() -{ -} - -////////////////////////////////////////////////////////////////////////////// - -int CDummyProto::getTemplateId() -{ - int id = this->getByte(DUMMY_ID_TEMPLATE, -1); - if (id >= 0 && id < _countof(templates)) - return id; - - CMStringA szProto(getMStringA("AM_BaseProto")); - for (auto &it : templates) - if (!stricmp(it.name, szProto)) - return int(&it - templates); - - return 0; -} - -INT_PTR CDummyProto::GetCaps(int type, MCONTACT) -{ - switch(type) { - case PFLAGNUM_1: - return PF1_IM | PF1_BASICSEARCH | PF1_ADDSEARCHRES; - - case PFLAGNUM_2: - return PF2_ONLINE | PF2_INVISIBLE | PF2_SHORTAWAY | PF2_LONGAWAY | PF2_LIGHTDND | PF2_HEAVYDND | PF2_FREECHAT; - - case PFLAGNUM_3: - return 0; - - case PFLAGNUM_4: - return PF4_AVATARS | PF4_NOAUTHDENYREASON | PF4_NOCUSTOMAUTH; - - case PFLAGNUM_5: - return PF2_ONLINE | PF2_INVISIBLE | PF2_SHORTAWAY | PF2_LONGAWAY | PF2_LIGHTDND | PF2_HEAVYDND | PF2_FREECHAT; - - case PFLAG_MAXLENOFMESSAGE: - return 0; - - case PFLAG_UNIQUEIDTEXT: - if (uniqueIdSetting[0] == '\0') { - int id = getTemplateId(); - ptrW setting(id > 0 ? mir_a2u(Translate(templates[id].text)) : getWStringA(DUMMY_ID_TEXT)); - if (setting != NULL) - wcsncpy_s(uniqueIdSetting, setting, _TRUNCATE); - } - return (INT_PTR)uniqueIdSetting; - } - return 0; -} - -////////////////////////////////////////////////////////////////////////////// - -int CDummyProto::SendMsg(MCONTACT hContact, int, const char *msg) -{ - std::string message = msg; - unsigned int id = InterlockedIncrement(&this->msgid); - - if (getByte(DUMMY_KEY_ALLOW_SENDING, 0)) - ProtoBroadcastAsync(hContact, ACKTYPE_MESSAGE, ACKRESULT_SUCCESS, (HANDLE)id); - else - ProtoBroadcastAsync(hContact, ACKTYPE_MESSAGE, ACKRESULT_FAILED, (HANDLE)id, (LPARAM)TranslateT("This Dummy account has disabled sending messages. Enable it in account options.")); - return id; -} - -int CDummyProto::SetStatus(int) -{ - return 0; -} - -HANDLE CDummyProto::SearchBasic(const wchar_t* id) -{ - if (uniqueIdSetting[0] == '\0') - return nullptr; - - wchar_t *tid = mir_wstrdup(id); - ForkThread(&CDummyProto::SearchIdAckThread, tid); - return tid; -} - -MCONTACT CDummyProto::AddToList(int flags, PROTOSEARCHRESULT* psr) -{ - if (psr->id.w == nullptr) - return NULL; - - MCONTACT hContact = db_add_contact(); - Proto_AddToContact(hContact, m_szModuleName); - - if (flags & PALF_TEMPORARY) { - Contact::Hide(hContact); - Contact::RemoveFromList(hContact); - } - else if (!Contact::OnList(hContact)) { - Contact::Hide(hContact, false); - Contact::PutOnList(hContact); - } - setWString(hContact, _T2A(uniqueIdSetting), psr->id.w); - setWString(hContact, "Nick", psr->id.w); - - return hContact; -} +/* +Copyright (c) 2014-17 Robert Pösel, 2017-23 Miranda NG team + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation version 2 +of the License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "stdafx.h" + +const ttemplate templates[DUMMY_PROTO_COUNT] = +{ + { LPGEN("Custom"), "", "" }, + { "AIM", "SN", LPGEN("Screen name") }, + { "Discord", "id", LPGEN("Discord ID") }, + { "EmLAN", "Nick", LPGEN("User name") }, + { "Facebook", "ID", LPGEN("Facebook ID") }, + { "GG", "UIN", LPGEN("Gadu-Gadu number") }, + { "ICQ", "UIN", LPGEN("User ID") }, + { "ICQCorp", "UIN", LPGEN("ICQ number") }, + { "IRC", "Nick", LPGEN("Nickname") }, + { "Jabber", "jid", LPGEN("JID") }, + { "MinecraftDynmap", "Nick", LPGEN("Visible name") }, + { "MRA", "e-mail", LPGEN("E-mail address") }, + { "MSN", "wlid", LPGEN("Live ID") }, + { "Omegle", "nick", LPGEN("Visible name") }, + { "Sametime", "stid", LPGEN("ID") }, + { "Skype (SkypeKit)", "sid", LPGEN("Skype name") }, + { "Skype (Classic)", "Username", LPGEN("Skype name") }, + { "Skype (Web)", "Username", LPGEN("Skype name") }, + { "Steam", "SteamID", LPGEN("Steam ID") }, + { "Tlen", "jid", LPGEN("Tlen login") }, + { "Tox", "ToxID", LPGEN("Tox ID") }, + { "Twitter", "Username", LPGEN("Username") }, + { "VK", "ID", LPGEN("VKontakte ID") }, + { "WhatsApp", "ID", LPGEN("WhatsApp ID") }, + { "XFire", "Username", LPGEN("Username") }, + { "Yahoo", "yahoo_id", LPGEN("ID") }, +}; + +void CDummyProto::SearchIdAckThread(void *targ) +{ + PROTOSEARCHRESULT psr = { 0 }; + psr.cbSize = sizeof(psr); + psr.flags = PSR_UNICODE; + psr.id.w = (wchar_t*)targ; + ProtoBroadcastAck(NULL, ACKTYPE_SEARCH, ACKRESULT_DATA, targ, (LPARAM)&psr); + + ProtoBroadcastAck(NULL, ACKTYPE_SEARCH, ACKRESULT_SUCCESS, targ, 0); + + mir_free(targ); +} + +static int sttCompareProtocols(const CDummyProto *p1, const CDummyProto *p2) +{ + return mir_wstrcmp(p1->m_tszUserName, p2->m_tszUserName); +} + +CDummyProto::CDummyProto(const char *szModuleName, const wchar_t *ptszUserName) : + PROTO(szModuleName, ptszUserName) +{ + CreateProtoService(PS_CREATEACCMGRUI, &CDummyProto::SvcCreateAccMgrUI); + + msgid = 0; + + int id = getTemplateId(); + ptrA setting(id > 0 ? mir_strdup(templates[id].setting) : getStringA(DUMMY_ID_SETTING)); + if (setting != NULL) { + strncpy_s(uniqueIdText, setting, _TRUNCATE); + Proto_SetUniqueId(m_szModuleName, uniqueIdText); + } + else uniqueIdText[0] = '\0'; + + uniqueIdSetting[0] = '\0'; +} + +CDummyProto::~CDummyProto() +{ +} + +////////////////////////////////////////////////////////////////////////////// + +int CDummyProto::getTemplateId() +{ + int id = this->getByte(DUMMY_ID_TEMPLATE, -1); + if (id >= 0 && id < _countof(templates)) + return id; + + CMStringA szProto(getMStringA("AM_BaseProto")); + for (auto &it : templates) + if (!stricmp(it.name, szProto)) + return int(&it - templates); + + return 0; +} + +INT_PTR CDummyProto::GetCaps(int type, MCONTACT) +{ + switch(type) { + case PFLAGNUM_1: + return PF1_IM | PF1_BASICSEARCH | PF1_ADDSEARCHRES; + + case PFLAGNUM_2: + return PF2_ONLINE | PF2_INVISIBLE | PF2_SHORTAWAY | PF2_LONGAWAY | PF2_LIGHTDND | PF2_HEAVYDND | PF2_FREECHAT; + + case PFLAGNUM_3: + return 0; + + case PFLAGNUM_4: + return PF4_AVATARS | PF4_NOAUTHDENYREASON | PF4_NOCUSTOMAUTH; + + case PFLAGNUM_5: + return PF2_ONLINE | PF2_INVISIBLE | PF2_SHORTAWAY | PF2_LONGAWAY | PF2_LIGHTDND | PF2_HEAVYDND | PF2_FREECHAT; + + case PFLAG_MAXLENOFMESSAGE: + return 0; + + case PFLAG_UNIQUEIDTEXT: + if (uniqueIdSetting[0] == '\0') { + int id = getTemplateId(); + ptrW setting(id > 0 ? mir_a2u(Translate(templates[id].text)) : getWStringA(DUMMY_ID_TEXT)); + if (setting != NULL) + wcsncpy_s(uniqueIdSetting, setting, _TRUNCATE); + } + return (INT_PTR)uniqueIdSetting; + } + return 0; +} + +////////////////////////////////////////////////////////////////////////////// + +int CDummyProto::SendMsg(MCONTACT hContact, int, const char *msg) +{ + std::string message = msg; + unsigned int id = InterlockedIncrement(&this->msgid); + + if (getByte(DUMMY_KEY_ALLOW_SENDING, 0)) + ProtoBroadcastAsync(hContact, ACKTYPE_MESSAGE, ACKRESULT_SUCCESS, (HANDLE)id); + else + ProtoBroadcastAsync(hContact, ACKTYPE_MESSAGE, ACKRESULT_FAILED, (HANDLE)id, (LPARAM)TranslateT("This Dummy account has disabled sending messages. Enable it in account options.")); + return id; +} + +int CDummyProto::SetStatus(int) +{ + return 0; +} + +HANDLE CDummyProto::SearchBasic(const wchar_t* id) +{ + if (uniqueIdSetting[0] == '\0') + return nullptr; + + wchar_t *tid = mir_wstrdup(id); + ForkThread(&CDummyProto::SearchIdAckThread, tid); + return tid; +} + +MCONTACT CDummyProto::AddToList(int flags, PROTOSEARCHRESULT* psr) +{ + if (psr->id.w == nullptr) + return NULL; + + MCONTACT hContact = db_add_contact(); + Proto_AddToContact(hContact, m_szModuleName); + + if (flags & PALF_TEMPORARY) { + Contact::Hide(hContact); + Contact::RemoveFromList(hContact); + } + else if (!Contact::OnList(hContact)) { + Contact::Hide(hContact, false); + Contact::PutOnList(hContact); + } + setWString(hContact, _T2A(uniqueIdSetting), psr->id.w); + setWString(hContact, "Nick", psr->id.w); + + return hContact; +} diff --git a/protocols/Dummy/src/dummy_proto.h b/protocols/Dummy/src/dummy_proto.h index b5a902cbc6..ffe2d4b9fc 100644 --- a/protocols/Dummy/src/dummy_proto.h +++ b/protocols/Dummy/src/dummy_proto.h @@ -1,53 +1,53 @@ -/* -Copyright (c) 2014-17 Robert Pösel, 2017-22 Miranda NG team - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation version 2 -of the License. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -struct CDummyProto; - -struct CDummyProto : public PROTO -{ - CDummyProto(const char*, const wchar_t*); - ~CDummyProto(); - - //==================================================================================== - // PROTO_INTERFACE - //==================================================================================== - - INT_PTR GetCaps(int type, MCONTACT hContact = NULL) override; - - int SendMsg(MCONTACT hContact, int flags, const char* msg) override; - - int SetStatus(int iNewStatus) override; - - HANDLE SearchBasic(const wchar_t* id) override; - - MCONTACT AddToList(int flags, PROTOSEARCHRESULT* psr) override; - - //==== Services ====================================================================== - - INT_PTR __cdecl SvcCreateAccMgrUI(WPARAM, LPARAM); - - void __cdecl SearchIdAckThread(void*); - - char uniqueIdText[100]; - wchar_t uniqueIdSetting[100]; - - int getTemplateId(); - - volatile unsigned int msgid; -}; +/* +Copyright (c) 2014-17 Robert Pösel, 2017-23 Miranda NG team + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation version 2 +of the License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +struct CDummyProto; + +struct CDummyProto : public PROTO +{ + CDummyProto(const char*, const wchar_t*); + ~CDummyProto(); + + //==================================================================================== + // PROTO_INTERFACE + //==================================================================================== + + INT_PTR GetCaps(int type, MCONTACT hContact = NULL) override; + + int SendMsg(MCONTACT hContact, int flags, const char* msg) override; + + int SetStatus(int iNewStatus) override; + + HANDLE SearchBasic(const wchar_t* id) override; + + MCONTACT AddToList(int flags, PROTOSEARCHRESULT* psr) override; + + //==== Services ====================================================================== + + INT_PTR __cdecl SvcCreateAccMgrUI(WPARAM, LPARAM); + + void __cdecl SearchIdAckThread(void*); + + char uniqueIdText[100]; + wchar_t uniqueIdSetting[100]; + + int getTemplateId(); + + volatile unsigned int msgid; +}; diff --git a/protocols/Dummy/src/main.cpp b/protocols/Dummy/src/main.cpp index acb41872b4..950b4d953c 100644 --- a/protocols/Dummy/src/main.cpp +++ b/protocols/Dummy/src/main.cpp @@ -1,5 +1,5 @@ /* -Copyright (c) 2014-17 Robert Pösel, 2017-22 Miranda NG team +Copyright (c) 2014-17 Robert Pösel, 2017-23 Miranda NG team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License diff --git a/protocols/Dummy/src/stdafx.cxx b/protocols/Dummy/src/stdafx.cxx index 4f38935a64..23ad62d26a 100644 --- a/protocols/Dummy/src/stdafx.cxx +++ b/protocols/Dummy/src/stdafx.cxx @@ -1,18 +1,18 @@ -/* -Copyright (c) 2014-17 Robert Pösel, 2017-22 Miranda NG team - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation version 2 -of the License. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#include "stdafx.h" +/* +Copyright (c) 2014-17 Robert Pösel, 2017-23 Miranda NG team + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation version 2 +of the License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#include "stdafx.h" diff --git a/protocols/Dummy/src/stdafx.h b/protocols/Dummy/src/stdafx.h index ca2b5e2f57..881c816a4f 100644 --- a/protocols/Dummy/src/stdafx.h +++ b/protocols/Dummy/src/stdafx.h @@ -1,60 +1,60 @@ -/* -Copyright (c) 2014-17 Robert Pösel, 2017-22 Miranda NG team - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation version 2 -of the License. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#include -#include -#include - -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "resource.h" -#include "dummy.h" -#include "dummy_proto.h" +/* +Copyright (c) 2014-17 Robert Pösel, 2017-23 Miranda NG team + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation version 2 +of the License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "resource.h" +#include "dummy.h" +#include "dummy_proto.h" diff --git a/protocols/Dummy/src/version.h b/protocols/Dummy/src/version.h index 83a6d2faa9..89cf1ae1c4 100644 --- a/protocols/Dummy/src/version.h +++ b/protocols/Dummy/src/version.h @@ -10,4 +10,4 @@ #define __DESCRIPTION "Dummy protocol for Miranda NG. Could be used for holding contacts and history from deprecated protocols or for creating virtual contacts." #define __AUTHOR "Robert Pösel" #define __AUTHORWEB "https://miranda-ng.org/p/Dummy" -#define __COPYRIGHT "© 2014-17 Robert Pösel, 2017-22 Miranda NG team" +#define __COPYRIGHT "© 2014-17 Robert Pösel, 2017-23 Miranda NG team" -- cgit v1.2.3