DDuarte
2ea31027e5
Core: Backport 6.x realm changes
...
Make acessible all the info about current realm (e.g name) anywhere, not only realm id
Reduce the number of differences between the two branches
Original changes by Shauren
Partial port of bacc90b6ba and 63def8aa32
2016-03-06 19:46:59 +00:00
Rushor
923a368ac7
Update copyright note for 2016
2016-01-01 12:02:33 +01:00
jackpoz
1ddf44caf3
Core/Quest: Fix issues reported by static analysis
2015-12-07 18:31:53 +01:00
MitchesD
3b90b0368a
Core/Misc: fix warning and misc codestyle fixes
2015-11-26 19:28:53 +01:00
Shauren
b95648ae27
Core/Threading: Significantly reduced the severity of possible data race during player login
...
* This commit changes a data race on a pointer value to data race on integers (guid)
(cherry picked from commit dbe2051056 )
2015-10-31 15:41:32 +01:00
Shauren
517a30d7c1
Core/DBLayer: Sprinkle some async magic on worldserver auth/session load process
...
(cherry picked from commit 0e49eefe85 )
2015-10-31 15:36:48 +01:00
ShinDarth
d380c12c56
Core/Battleground: implement deserters tracker feature
2015-10-28 20:39:04 +01:00
pete318
b1032ed620
Change many uint32 to ObjectGuid::LowType in line with 6.x changes.
2015-10-12 23:10:41 +02:00
pete318
cdb16c5181
Rooted vehicle movement ( #13342 for example)
...
Corrects issue where certain combinations of actions would cause vehicles (usually cannons/artillary) that should be rooted, to be fully movable
2015-10-06 22:05:11 +02:00
jackpoz
fcc6ef6b18
Core/DBLayer: Build fix in addition to 25c0303976
2015-09-27 17:19:49 +02:00
pete318
dcb7082277
Map local guids 6.x -> 3.3.35:
...
Implemented:
ca83e14f8b
ee1c1b97be
18e4ab6911
bf37446b3c
cb854a2b7b
* This adds separate (per map) guid sequences depending on object type
* Ported map object container from cmangos/mangos-wotlk@a2d396e
* Added type container visitor for TypeUnorderedMapContainer
* Implemented helper function to erase unique pairs from multimap containers
* Moved object storage of all objects except players and transports to map level
* Added containers linking database spawn id with creature/gameobject in world
* Renamed DBTableGuid to spawnId
* Added a separate spawn id sequence generator for creatures and gameobjects - this will be used in db tables
* Moved building SMSG_UPDATE_OBJECT - updatefields changes broadcast to map update
* Added new function to return but not increment guid
* Adjusted .debug loadcells to show low guid in map before/after load
* Added debug messages for creature spawn/destroy, for map guid debugging
* Store all Gameobjects and Creatures added to OutdoorPvP, so the callback script can be removed when OutdoorPvP instance is destroyed.
2015-09-22 21:33:57 +02:00
Vincent-Michael
d2d4bc2668
Core: Header cleanup in game/*/*.cpp
...
(cherry picked from commit 2e586bc520 )
Conflicts:
src/server/game/Battlegrounds/Battleground.cpp
src/server/game/Battlegrounds/BattlegroundMgr.cpp
src/server/game/Battlegrounds/Zones/BattlegroundBFG.cpp
src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp
src/server/game/Battlegrounds/Zones/BattlegroundTP.cpp
src/server/game/Chat/Chat.cpp
src/server/game/Combat/ThreatManager.cpp
src/server/game/DataStores/DB2Stores.cpp
src/server/game/DataStores/DBCStores.cpp
src/server/game/Entities/Creature/Creature.cpp
src/server/game/Entities/Creature/GossipDef.cpp
src/server/game/Entities/Object/Object.cpp
src/server/game/Entities/Object/ObjectGuid.cpp
src/server/game/Entities/Object/Updates/UpdateData.cpp
src/server/game/Entities/Pet/Pet.cpp
src/server/game/Entities/Player/Player.cpp
src/server/game/Entities/Player/Player.h
src/server/game/Globals/ObjectAccessor.cpp
src/server/game/Handlers/BankHandler.cpp
src/server/game/Handlers/CombatHandler.cpp
src/server/game/Handlers/GroupHandler.cpp
src/server/game/Handlers/GuildHandler.cpp
src/server/game/Handlers/ItemHandler.cpp
src/server/game/Handlers/MiscHandler.cpp
src/server/game/Handlers/MovementHandler.cpp
src/server/game/Handlers/PetitionsHandler.cpp
src/server/game/Handlers/QueryHandler.cpp
src/server/game/Handlers/SpellHandler.cpp
src/server/game/Handlers/TokenHandler.cpp
src/server/game/Handlers/VoiceChatHandler.cpp
src/server/game/Maps/Map.cpp
src/server/game/Movement/Spline/MoveSplineInit.cpp
src/server/game/Quests/QuestDef.cpp
src/server/game/Server/Packet.cpp
src/server/game/Server/Packets/SpellPackets.cpp
src/server/game/Server/WorldSession.cpp
src/server/game/Server/WorldSocket.cpp
src/server/game/Spells/Auras/SpellAuraEffects.cpp
src/server/game/Spells/Spell.cpp
src/server/game/Spells/SpellEffects.cpp
src/server/game/Spells/SpellScript.cpp
src/server/game/Warden/Warden.cpp
src/server/game/Warden/WardenWin.cpp
src/server/game/Weather/WeatherMgr.cpp
2015-07-25 21:53:30 +01:00
jackpoz
5bd7c295c0
Core/NetworkIO: Adjust more packet throttling values
...
Adjust more packet throttling values by increasing some limits, this might fix some random kicks.
Close #14659
2015-05-13 22:29:49 +02:00
Shauren
548aa119ac
Core/Networking: Fixed unsafe access to _worldSession member in WorldSocket
...
(cherry picked from commit bed88e0dd4 )
Core/Networking: Fixed deadlock in HandlePing if the client is about to be kicked for overspeed pings
(cherry picked from commit 3da0f7e409 )
Core/Networking: Cleanup CloseSocket calls from read failures in WorldSocket
(cherry picked from commit 18343a7309 )
Conflicts:
src/server/game/Server/WorldSocket.cpp
Ref #14474
2015-04-04 23:07:41 +01:00
leak
7010671931
Core/Misc: Remove unused headers
2015-03-30 17:16:50 +02:00
click
e040c56d45
Core/Logger: Add basic account-info to addon-scans to make them a little bit more useful (@Aokromes, you can stop asking for this now...)
2015-03-29 19:19:45 +02:00
click
132d4ede37
Core: More INFO -> DEBUG changes (WorldSession/WorldSocket)
2015-03-08 05:51:07 +01:00
Vincent-Michael
f3e86d3e68
Update copyright note for 2015
...
Happy new year
Conflicts:
src/server/bnetserver/Authentication/AuthCodes.h
src/server/bnetserver/Authentication/BattlenetPacketCrypt.cpp
src/server/bnetserver/Authentication/BattlenetPacketCrypt.h
src/server/bnetserver/Packets/AchievementPackets.h
src/server/bnetserver/Packets/AuthenticationPackets.cpp
src/server/bnetserver/Packets/AuthenticationPackets.h
src/server/bnetserver/Packets/BitStream.cpp
src/server/bnetserver/Packets/BitStream.h
src/server/bnetserver/Packets/CachePackets.cpp
src/server/bnetserver/Packets/CachePackets.h
src/server/bnetserver/Packets/ChatPackets.h
src/server/bnetserver/Packets/ConnectionPackets.cpp
src/server/bnetserver/Packets/ConnectionPackets.h
src/server/bnetserver/Packets/FriendsPackets.cpp
src/server/bnetserver/Packets/FriendsPackets.h
src/server/bnetserver/Packets/PacketManager.cpp
src/server/bnetserver/Packets/PacketManager.h
src/server/bnetserver/Packets/Packets.h
src/server/bnetserver/Packets/PacketsBase.cpp
src/server/bnetserver/Packets/PacketsBase.h
src/server/bnetserver/Packets/PresencePackets.cpp
src/server/bnetserver/Packets/PresencePackets.h
src/server/bnetserver/Packets/ProfilePackets.h
src/server/bnetserver/Packets/SupportPackets.h
src/server/bnetserver/Packets/WoWRealmPackets.cpp
src/server/bnetserver/Packets/WoWRealmPackets.h
src/server/bnetserver/Realms/RealmList.cpp
src/server/bnetserver/Realms/WorldListener.cpp
src/server/bnetserver/Realms/WorldListener.h
src/server/bnetserver/Server/ComponentManager.cpp
src/server/bnetserver/Server/ComponentManager.h
src/server/bnetserver/Server/ModuleManager.cpp
src/server/bnetserver/Server/ModuleManager.h
src/server/bnetserver/Server/Session.cpp
src/server/bnetserver/Server/Session.h
src/server/bnetserver/Server/SessionManager.cpp
src/server/bnetserver/Server/SessionManager.h
src/server/game/Accounts/BattlenetAccountMgr.cpp
src/server/game/Accounts/BattlenetAccountMgr.h
src/server/game/Battlegrounds/Zones/BattlegroundBFG.cpp
src/server/game/Battlegrounds/Zones/BattlegroundBFG.h
src/server/game/Battlegrounds/Zones/BattlegroundTP.cpp
src/server/game/Battlegrounds/Zones/BattlegroundTP.h
src/server/game/Entities/AreaTrigger/AreaTrigger.cpp
src/server/game/Entities/AreaTrigger/AreaTrigger.h
src/server/game/Entities/Item/ItemTemplate.cpp
src/server/game/Guilds/GuildFinderMgr.cpp
src/server/game/Guilds/GuildFinderMgr.h
src/server/game/Handlers/GuildFinderHandler.cpp
src/server/game/Handlers/VoidStorageHandler.cpp
src/server/game/Movement/MovementStructures.cpp
src/server/game/Movement/MovementStructures.h
src/server/game/Movement/PathGenerator.cpp
src/server/game/Server/BattlenetServerManager.cpp
src/server/game/Server/BattlenetServerManager.h
src/server/game/Server/Packet.cpp
src/server/game/Server/Packet.h
src/server/game/Server/Packets/AchievementPackets.cpp
src/server/game/Server/Packets/AchievementPackets.h
src/server/game/Server/Packets/AuctionHousePackets.cpp
src/server/game/Server/Packets/AuctionHousePackets.h
src/server/game/Server/Packets/AuthenticationPackets.cpp
src/server/game/Server/Packets/AuthenticationPackets.h
src/server/game/Server/Packets/BattlegroundPackets.cpp
src/server/game/Server/Packets/BattlegroundPackets.h
src/server/game/Server/Packets/ChannelPackets.cpp
src/server/game/Server/Packets/ChannelPackets.h
src/server/game/Server/Packets/CharacterPackets.cpp
src/server/game/Server/Packets/CharacterPackets.h
src/server/game/Server/Packets/ChatPackets.cpp
src/server/game/Server/Packets/ChatPackets.h
src/server/game/Server/Packets/ClientConfigPackets.cpp
src/server/game/Server/Packets/ClientConfigPackets.h
src/server/game/Server/Packets/CombatLogPackets.cpp
src/server/game/Server/Packets/CombatLogPackets.h
src/server/game/Server/Packets/CombatPackets.cpp
src/server/game/Server/Packets/CombatPackets.h
src/server/game/Server/Packets/EquipmentSetPackets.cpp
src/server/game/Server/Packets/EquipmentSetPackets.h
src/server/game/Server/Packets/GameObjectPackets.cpp
src/server/game/Server/Packets/GameObjectPackets.h
src/server/game/Server/Packets/GuildPackets.cpp
src/server/game/Server/Packets/GuildPackets.h
src/server/game/Server/Packets/ItemPackets.cpp
src/server/game/Server/Packets/ItemPackets.h
src/server/game/Server/Packets/LootPackets.h
src/server/game/Server/Packets/MiscPackets.cpp
src/server/game/Server/Packets/MiscPackets.h
src/server/game/Server/Packets/MovementPackets.cpp
src/server/game/Server/Packets/MovementPackets.h
src/server/game/Server/Packets/NPCPackets.cpp
src/server/game/Server/Packets/NPCPackets.h
src/server/game/Server/Packets/QueryPackets.cpp
src/server/game/Server/Packets/QueryPackets.h
src/server/game/Server/Packets/QuestPackets.cpp
src/server/game/Server/Packets/QuestPackets.h
src/server/game/Server/Packets/ReputationPackets.cpp
src/server/game/Server/Packets/ReputationPackets.h
src/server/game/Server/Packets/SpellPackets.cpp
src/server/game/Server/Packets/SpellPackets.h
src/server/game/Server/Packets/SystemPackets.cpp
src/server/game/Server/Packets/SystemPackets.h
src/server/game/Server/Packets/TalentPackets.cpp
src/server/game/Server/Packets/TalentPackets.h
src/server/game/Server/Packets/TradePackets.h
src/server/game/Server/Packets/WorldStatePackets.cpp
src/server/game/Server/Packets/WorldStatePackets.h
src/server/game/Server/WorldSocket.cpp
src/server/ipc/CMakeLists.txt
src/server/ipc/Commands.cpp
src/server/ipc/Commands.h
src/server/ipc/ZMQTask.cpp
src/server/ipc/ZMQTask.h
src/server/ipc/ZmqContext.cpp
src/server/ipc/ZmqContext.h
src/server/ipc/ZmqListener.cpp
src/server/ipc/ZmqListener.h
src/server/ipc/ZmqMux.cpp
src/server/ipc/ZmqMux.h
src/server/ipc/ZmqWorker.cpp
src/server/ipc/ZmqWorker.h
src/server/scripts/Commands/cs_battlenet_account.cpp
src/server/scripts/Commands/cs_mmaps.cpp
src/server/scripts/EasternKingdoms/BaradinHold/boss_alizabal.cpp
src/server/scripts/EasternKingdoms/BaradinHold/boss_occuthar.cpp
src/server/scripts/EasternKingdoms/BaradinHold/boss_pit_lord_argaloth.cpp
src/server/scripts/EasternKingdoms/BaradinHold/instance_baradin_hold.cpp
src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/blackrock_caverns.cpp
src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/blackrock_caverns.h
src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_ascendant_lord_obsidius.cpp
src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_beauty.cpp
src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_corla.cpp
src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_karsh_steelbender.cpp
src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_romogg_bonecrusher.cpp
src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/instance_blackrock_caverns.cpp
src/server/scripts/EasternKingdoms/Deadmines/deadmines.cpp
src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp
src/server/scripts/EasternKingdoms/ZulAman/boss_daakara.cpp
src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp
src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp
src/server/scripts/EasternKingdoms/ZulAman/boss_janalai.cpp
src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp
src/server/scripts/EasternKingdoms/ZulAman/instance_zulaman.cpp
src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp
src/server/scripts/EasternKingdoms/ZulAman/zulaman.h
src/server/scripts/EasternKingdoms/ZulGurub/boss_gahzranka.cpp
src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo_the_godbreaker.cpp
src/server/scripts/EasternKingdoms/ZulGurub/boss_kilnara.cpp
src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h
src/server/scripts/EasternKingdoms/zone_burning_steppes.cpp
src/server/scripts/EasternKingdoms/zone_ironforge.cpp
src/server/scripts/EasternKingdoms/zone_stormwind_city.cpp
src/server/scripts/EasternKingdoms/zone_tirisfal_glades.cpp
src/server/scripts/Kalimdor/Firelands/boss_alysrazor.cpp
src/server/scripts/Kalimdor/Firelands/firelands.h
src/server/scripts/Kalimdor/Firelands/instance_firelands.cpp
src/server/scripts/Kalimdor/HallsOfOrigination/boss_anraphet.cpp
src/server/scripts/Kalimdor/HallsOfOrigination/boss_earthrager_ptah.cpp
src/server/scripts/Kalimdor/HallsOfOrigination/boss_temple_guardian_anhuur.cpp
src/server/scripts/Kalimdor/HallsOfOrigination/halls_of_origination.h
src/server/scripts/Kalimdor/HallsOfOrigination/instance_halls_of_origination.cpp
src/server/scripts/Kalimdor/zone_azshara.cpp
src/server/scripts/Kalimdor/zone_darkshore.cpp
src/server/scripts/Kalimdor/zone_felwood.cpp
src/server/scripts/Kalimdor/zone_moonglade.cpp
src/server/scripts/Kalimdor/zone_orgrimmar.cpp
src/server/scripts/Kalimdor/zone_stonetalon_mountains.cpp
src/server/scripts/Maelstrom/Stonecore/boss_corborus.cpp
src/server/scripts/Maelstrom/Stonecore/boss_high_priestess_azil.cpp
src/server/scripts/Maelstrom/Stonecore/boss_ozruk.cpp
src/server/scripts/Maelstrom/Stonecore/boss_slabhide.cpp
src/server/scripts/Maelstrom/Stonecore/instance_stonecore.cpp
src/server/scripts/Maelstrom/Stonecore/stonecore.cpp
src/server/scripts/Maelstrom/Stonecore/stonecore.h
src/server/shared/Cryptography/Authentication/AuthCrypt.h
src/server/shared/Cryptography/Authentication/PacketCrypt.cpp
src/server/shared/Cryptography/Authentication/WorldPacketCrypt.cpp
src/server/shared/Cryptography/HmacHash.cpp
src/server/shared/Cryptography/SHA256.cpp
src/server/shared/Cryptography/SHA256.h
src/server/shared/Database/Implementation/HotfixDatabase.cpp
src/server/shared/Database/Implementation/HotfixDatabase.h
src/server/shared/Realm/Realm.cpp
src/server/shared/Realm/Realm.h
src/tools/connection_patcher/CMakeLists.txt
src/tools/connection_patcher/Constants/BinaryTypes.hpp
src/tools/connection_patcher/Helper.cpp
src/tools/connection_patcher/Helper.hpp
src/tools/connection_patcher/Patcher.cpp
src/tools/connection_patcher/Patcher.hpp
src/tools/connection_patcher/Patches/Common.hpp
src/tools/connection_patcher/Patches/Mac.hpp
src/tools/connection_patcher/Patches/Windows.hpp
src/tools/connection_patcher/Patterns/Common.hpp
src/tools/connection_patcher/Patterns/Mac.hpp
src/tools/connection_patcher/Patterns/Windows.hpp
src/tools/connection_patcher/Program.cpp
src/tools/map_extractor/loadlib/DBFilesClientList.h
2015-01-01 00:32:50 +01:00
jackpoz
d8c3115bbd
Core/NetworkIO: Skip AntiDoS checks for queued packets
2014-11-30 22:08:09 +01:00
joschiwald
1a075f0454
Core/Misc: fixed a scenario when character factionchange create unexpected results, also moved packet generating code into unique methods
2014-10-19 15:30:35 +02:00
joschiwald
72ed5bfc93
Core/Misc: changed trinity string id to unsigned and removed obsolete code
2014-09-18 02:36:28 +02:00
Shauren
d72c4085de
Core/Misc: Fixed build without pch
2014-09-14 17:29:13 +02:00
Shauren
a0e50ea35f
Core/Entities: Use ObjectGuid class in game project
2014-09-14 16:14:12 +02:00
Shauren
e0ce4528c5
Core/NetworkIO: Use reactor style sending on linux to reduce locking overhead
2014-09-09 19:19:25 +02:00
leak
1a27ce1267
Core/NetworkIO: Restore networking related scripting hooks
...
Closes #12607
2014-08-11 17:40:43 +02:00
jackpoz
272b9d3d16
Core/WorldSession: Fix socket not being closed on clean logout
...
Close the WorldSession socket if Player didn't even login or logged out successfully and then closed the client.
2014-08-09 19:37:57 +02:00
jackpoz
15b1d41740
Core/NetworkIO: Adjust more packet throttling values
...
Adjust more packet throttling values by increasing some limits, this might fix some random kicks.
2014-08-04 18:43:15 +02:00
Shauren
6f272ea5b7
Core/Network: Optimized packet sending by removing unneccessary memory copying
2014-07-27 17:46:46 +02:00
Shauren
c1b1ba44ba
Core/Network: Refactored socket code, moved common operations to base Socket class
2014-07-26 23:26:01 +02:00
leak
a738cd96dc
Renamed WorldTcpSession back to WorldSocket
2014-07-07 22:03:41 +02:00
Subv
32f5286d05
Fixed compile
2014-07-06 13:46:17 -05:00
Subv
80a8ed23b7
Fixed player saving
2014-07-06 13:02:46 -05:00
Subv
b5d5768d44
Fixed the crashes
2014-07-05 21:38:29 -05:00
Subv
42b2041aeb
Fixed PCH build, some leaks and tidied the code up a bit
2014-07-05 19:41:18 -05:00
leak
7befb26625
Some groundwork for replacing the ACE based WorldSocket handling
2014-07-06 01:26:29 +02:00
Subv
87b72f41ca
Fixed login and some errors
2014-07-02 21:56:40 -05:00
leak
029bad6698
Replaced all remaining ACE based Singletons
...
Replaced ACE base AutoPtr class with shared_ptr
Note: worldserver currently broken due to MapUpdater threading failure (ACE ofc, what else could it be)
2014-07-01 00:54:09 +02:00
Subv
f03d49705d
Core/Databases: Removed ACE dependencies on some of the database handling code.
2014-06-24 13:17:41 -05:00
Shauren
06962b16f1
Core/PacketIO: Fixed logic in DosProtection::EvaluateOpcode
2014-06-11 19:28:25 +02:00
Shauren
2ba05406ce
Fixed typo, spotted by @Gooyeth
2014-06-11 18:21:00 +02:00
jackpoz
d52eb14bb6
Core/NetworkIO: Adjust more packet throttling values
...
Ignore some opcodes that don't cause any trouble.
Remove old Allow/Disable Anti-DoS system since it's no longer required.
2014-06-09 21:37:44 +02:00
Vincent-Michael
1d39db16b9
Core/Misc: Kill Whitespace ...
2014-06-07 23:58:08 +02:00
jackpoz
5fee5b0125
Core/Banks: Fix some bank exploits
...
Re-implement the cheat checks removed in a12501fb5e and check if Player can interact with the Banker when handling bank-related opcodes.
2014-06-07 22:47:50 +02:00
Michael
8207aff0d6
Core/NetworkIO: Added latency info for opcodes overflow log
2014-06-06 19:41:57 +02:00
Trisjdc
d12737d9bb
Core/WorldSession: After sudden disconnects, session should persist for a minute
...
- With this change, if a player alt-f4, he'll only fade from world after a minute
2014-06-03 01:12:34 +01:00
jackpoz
65917f52ea
CoreCore/NetworkIO: Fix disconnect when canceling character creation
...
Remove the filter on CMSG_CHAR_ENUM added in 59b4c34924 since the same opcode is already throttled in the new improved system. DoS attacks using this opcode are still mitigated with same effect of before.
Fixes #10915
2014-05-29 21:11:41 +02:00
jackpoz
1b47f3270e
Core/NetworkIO: Adjust more packet throttling values
...
Adjust more packet throttling values and add Player name to log to help investigate false positives.
2014-05-29 19:43:09 +02:00
jackpoz
f312b86941
Core/NetworkIO: Adjust more packet throttling values
2014-05-27 21:19:19 +02:00
jackpoz
b5b64a2cdd
Core/NetworkIO: Adjust more packet throttling values
2014-05-26 20:13:04 +02:00
jackpoz
c06dc7d37a
Core/NetworkIO: Adjust more packet throttling values
...
Adjust some more packet throttling values.
Revert b35f831f2b since it's no longer needed.
Modify the AntiDoS log to specify in a more readable way which opcode triggered the system and how many packets have been received.
2014-05-25 20:14:59 +02:00