Unlocking Achievements via CvAchievementUnlocker.cpp

Genghis.Khan

Person
Joined
Jun 9, 2012
Messages
934
Location
Somewhere
CvAchievementUnlocker.cpp in CvGameCoreDLL_Expansion.dll
Line 95
Code:
[COLOR="SeaGreen"]//Yep[/COLOR]
gDLL->UnlockAchievement(ACHIEVEMENT_SPECIAL_CONQUEST_WORLD)

I have no Experience in C++ or any other Programming Language other than Lua, XML, SQL or Visual Basic. Anyway, I assume, also based on the context, and the displayed conditions in Lines 67-93, this line is the one who executes the Action and Unlocks the Achievement.
Spoiler :
Code:
void CvAchievementUnlocker::AlexanderConquest(PlayerTypes ePlayer)
{
	//Test For Alexander Conquest
	CvGame& kGame = GC.getGame();
	if (ePlayer == kGame.getActivePlayer())
	{
		CvString szLeaderName = (CvString)GET_PLAYER(ePlayer).getLeaderTypeKey();
		if(szLeaderName == "LEADER_ALEXANDER")
		{
			if(kGame.getGameTurnYear() <= 350)
			{
				for(int iPlayerLoop = 0; iPlayerLoop < MAX_PLAYERS; iPlayerLoop++)
				{
					CvPlayer* pPlayer = &GET_PLAYER((PlayerTypes) iPlayerLoop);

					//All known players must be dead and killed by us
					if(GET_TEAM(pPlayer->getTeam()).isHasMet(GET_PLAYER(kGame.getActivePlayer()).getTeam()))
					{
						if(!pPlayer->isBarbarian() && !pPlayer->isMinorCiv())
						{
							if(pPlayer->isAlive() && pPlayer->GetID() != GET_PLAYER(kGame.getActivePlayer()).GetID())
							{
								return;	// Nope.
							}
						}
					}
				}
Considering all the stated above, would the General Code to Unlock an Achievement be the following code:

Code:
[COLOR="SeaGreen"]//Unlock Achievement Template[/COLOR]
gDLL->UnlockAchievement(ACHIEVEMENT_ID)

If this Code Actually Works I Have the Following Questions:

Would I need a new .cpp file or I could just add lines in this file or any Random One?

Where can I see the Achievement IDs listed. Is there any reference or file that has the List?


Sorry for bothering :blush:
 
Disclaimer: I am Aware that this Tutorial can be Used to Cheat and in an Morally and Ethicly Repreensible Manner Unlock Achievement Without Fulfying the Prerequesites to Deserve the Reward for The Completation of the referred Conditions. Anyway, I Consider that, if this Tutorial can help People to Unlock Bugged Achievement, and as there is no Real Demage in Unlocking Achievemnts Without Fullfying it's Requirements, this Tutorial should be made public. I do not Consider Myself Responsible for Any Other Use of this Tutorial to Unlock Achievements which are not Bugged, or to Any Demage Caused by the Incorrect Use of this Tutorial.

NOTE: Steps 1-11 are part of the How to Compile the DLL Tutorial

1. Download and Run vcsetup.exe [The Second File] from Microsoft's Website

Skip the following step if you have already installed Sid Meier's Civilization V SDK

2. Start Steam and Select Library -> View -> Tools.
Find "Sid Meier's Civilization V SDK", right-click it, and Select Install Game.

3.Copy "C:\Program Files (x86)\Steam\SteamApps\common\sid meier's civilization v sdk\CvGameCoreSource" to "C:\Users\{Username}\My Documents\Visual Studio 2008\Projects\CvGameCoreSource"

4.Open "CvGameCoreSource\CvGameCoreDLL \CvGameCoreDLL.rc" in notepad.
On line 10, replace "afxres.h" with "windows.h".


5. Open "CvGameCoreSource\CvGameCoreDLL_Expansion \CvGameCoreDLL.rc" in notepad.
On line 10, replace "afxres.h" with "windows.h".

6. Open "CvGameCoreSource\CvGameCoreDLL_Expansion \CvGameCoreDLL_Expansion1.vcproj" in notepad. You need to add 2 lines.
On line 24 find:
Code:
CharacterSet="2"

... and replace it with this:
Code:
CharacterSet="2"
WholeProgramOptimization="1"

On line 84 find:
Code:
DelayLoadDLLs=""

... and replace it with this:
Code:
ModuleDefinitionFile="$(ProjectDir)CvGameCoreDLL.def"
DelayLoadDLLs=""

7. Open "CvGameCoreSource\CvGameCoreDLL_Expansion \CvGameCoreDLL_Expansion1.vcxproj" in notepad. You need to add 2 lines.

On line 17 find:
Code:
<CharacterSet>MultiByte</CharacterSet>

... and replace it with this:
Code:
<CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>

On line 68 find:
Code:
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>

... and replace it with this
Code:
<ModuleDefinitionFile>$(ProjectDir)CvGameCoreDLL.def</ModuleDefinitionFile>
<DelayLoadDLLs>%(DelayLoadDLLs)</DelayLoadDLLs>

8. Start Visual C++ 2008 Express Edition.
File -> Open -> Project/Solution.
Open CvGameCoreSource\CvGameCoreDLL.vs2008.sln


9. Right-click CvGameCoreDLL and select Properties -> Configuration Properties -> Linker.
Change the Output File to "$(OutDir)\CvGameCoreDLLFinal Release.dll".


10. Right-click CvGameCoreDLL_Expansion1 and select Properties -> Configuration Properties -> Linker.
Change the Output File to "$(OutDir)\CvGameCore_Expansion1.dll".


11. Save all.

12. Open "CvAchievementUnlocker.cpp" using Visual C++ 2008 Express Edition

13. On line 30 add the following code:
Code:
[COLOR="SeaGreen"]// Unlock Bugged Achievement Connoisseur[/COLOR]
gDLL->UnlockAchievement(ACHIEVEMENT_CONNOISSEUR)
[COLOR="SeaGreen"]//End Unlock Bugged Achievement and Thank Genghis.Khan in the end if it works.[/COLOR]

14. Build CvGameCoreDLL_Expansion.dll

15. Copy your CvGameCoreDLL_Expansion.dll (default C:\Program Files (x86)\Steam\SteamApps\common\Sid Meier's Civilization V\assets\DLC\DLC_Expansion1\CvGameCoreDLL_Expansion.dll) to your Desktop

16. Copy the Compiled DLL file C:\Users\A{Username}\Documents\Visual Studio 2008\Projects\{Project}\Debug to CvGameCoreDLL_Expansion.dll's default location

17. Play the Game. The Achievement will be Unlocked

18. Quit the Game. Delete the built file from CvGameCoreDLL_Expansion.dll's default location and copy CvGameCoreDLL_Expansion.dll to it's location.

List of Achievements in CvEnums.h
Code:
ACHIEVEMENT_WIN_WASHINGTON,
	ACHIEVEMENT_WIN_ELIZABETH,
	ACHIEVEMENT_WIN_NAPOLEON,
	ACHIEVEMENT_WIN_BISMARCK,
	ACHIEVEMENT_WIN_CATHERINE,
	ACHIEVEMENT_WIN_CAESAR,
	ACHIEVEMENT_WIN_ALEXANDER,
	ACHIEVEMENT_WIN_RAMESSES,
	ACHIEVEMENT_WIN_ASKIA,
	ACHIEVEMENT_WIN_HARUN,
	ACHIEVEMENT_WIN_DARIUS,
	ACHIEVEMENT_WIN_GANDHI,
	ACHIEVEMENT_WIN_RAMKHAMHAENG,
	ACHIEVEMENT_WIN_WU,
	ACHIEVEMENT_WIN_ODA,
	ACHIEVEMENT_WIN_HIAWATHA,
	ACHIEVEMENT_WIN_MONTEZUMA,
	ACHIEVEMENT_WIN_SULEIMAN,
	ACHIEVEMENT_WIN_ALLBASELEADERS,

	ACHIEVEMENT_DIFLEVEL_SETTLER,
	ACHIEVEMENT_DIFLEVEL_CHIEFTAIN,
	ACHIEVEMENT_DIFLEVEL_WARLORD,
	ACHIEVEMENT_DIFLEVEL_PRINCE,
	ACHIEVEMENT_DIFLEVEL_KING,
	ACHIEVEMENT_DIFLEVEL_EMPEROR,
	ACHIEVEMENT_DIFLEVEL_IMMORTAL,
	ACHIEVEMENT_DIFLEVEL_DEITY,

	ACHIEVEMENT_MAPSIZE_DUEL,
	ACHIEVEMENT_MAPSIZE_TINY,
	ACHIEVEMENT_MAPSIZE_SMALL,
	ACHIEVEMENT_MAPSIZE_STANDARD,
	ACHIEVEMENT_MAPSIZE_LARGE,
	ACHIEVEMENT_MAPSIZE_HUGE,

	ACHIEVEMENT_MAPTYPE_CONTINENTS,
	ACHIEVEMENT_MAPTYPE_PANGAEA,
	ACHIEVEMENT_MAPTYPE_ARCHIPELAGO,
	ACHIEVEMENT_MAPTYPE_EARTH,

	ACHIEVEMENT_MAPS_ALL,

	ACHIEVEMENT_WIN_MULTIPLAYER,
	ACHIEVEMENT_HUNDRED_WAR,
	ACHIEVEMENT_CATFIGHT,
	ACHIEVEMENT_MANIFEST_DESTINY,
	ACHIEVEMENT_CITYSTATE_ALLY,
	ACHIEVEMENT_CITYSTATE_ANNEX,
	ACHIEVEMENT_BUILD_WONDER,
	ACHIEVEMENT_UNIT_UPGRADE,
	ACHIEVEMENT_UNIT_PROMOTE,
	ACHIEVEMENT_DESTROY_CIV,
	ACHIEVEMENT_SECOND_CITY,
	ACHIEVEMENT_ANCIENT_RUIN,
	ACHIEVEMENT_UNIT_20BATTLES,
	ACHIEVEMENT_ALL_TECHS,
	ACHIEVEMENT_ALL_WONDERS,
	ACHIEVEMENT_ALL_SOCIAL_POLICIES,
	ACHIEVEMENT_ALL_UNITS,
	ACHIEVEMENT_GOLDEN_AGE,
	ACHIEVEMENT_CITY_100CULTURE,
	ACHIEVEMENT_CITY_100SCIENCE,
	ACHIEVEMENT_CITY_100GOLD,
	ACHIEVEMENT_PURCHASE_1000TILES,
	ACHIEVEMENT_ONEHITKILL,
	ACHIEVEMENT_ALL_WAR,
	ACHIEVEMENT_UNIT_EMBARK,
	ACHIEVEMENT_100CAMPS,
	ACHIEVEMENT_PEACEFULPLAY,
	ACHIEVEMENT_SUCK_AT_WONDERS,
	ACHIEVEMENT_ONECITY,
	ACHIEVEMENT_VICTORY_SPACE,
	ACHIEVEMENT_VICTORY_CULTURE,
	ACHIEVEMENT_VICTORY_DIPLO,
	ACHIEVEMENT_VICTORY_DOMINATION,
	ACHIEVEMENT_VICTORY_ALL,
	ACHIEVEMENT_DROP_NUKE,
	ACHIEVEMENT_LOSE_MULTIPLAYER,
	ACHIEVEMENT_SIX_DEGREES,
	ACHIEVEMENT_EXPERIMENTER,
	ACHIEVEMENT_EXPANSIONIST,
	ACHIEVEMENT_CONNOISSEUR,
	ACHIEVEMENT_POLICY_LIBERTY,
	ACHIEVEMENT_POLICY_PIETY,
	ACHIEVEMENT_POLICY_AUTOCRACY,
	ACHIEVEMENT_POLICY_ORDER,
	ACHIEVEMENT_POLICY_TRADITION,
	ACHIEVEMENT_POLICY_HONOR,
	ACHIEVEMENT_POLICY_PATRONAGE,
	ACHIEVEMENT_POLICY_COMMERCE,
	ACHIEVEMENT_POLICY_RATIONALISM,
	ACHIEVEMENT_POLICY_FREEDOM,
	ACHIEVEMENT_ALL_NATURALWONDER,
	ACHIEVEMENT_DEFPACT,
	ACHIEVEMENT_RESEARCHPACT,
	ACHIEVEMENT_1000ROADS,
	ACHIEVEMENT_1000MINES,
	ACHIEVEMENT_100RESOURCES,
	ACHIEVEMENT_1000TILES,
	ACHIEVEMENT_ROUND_WORLD,
	ACHIEVEMENT_1000FOREST,
	ACHIEVEMENT_1000TEMPLES,

	ACHIEVEMENT_SPECIAL_B17,
	ACHIEVEMENT_SPECIAL_TRADER,
	ACHIEVEMENT_SPECIAL_GARDENS,
	ACHIEVEMENT_SPECIAL_SPHINX,
	ACHIEVEMENT_SPECIAL_MUSKETEERS,
	ACHIEVEMENT_SPECIAL_LONGHOUSE,
	ACHIEVEMENT_SPECIAL_BOLLYWOOD,
	ACHIEVEMENT_SPECIAL_KAMIKAZE,
	ACHIEVEMENT_SPECIAL_ARCHAEMENNID,
	ACHIEVEMENT_SPECIAL_ROMANROADS,
	ACHIEVEMENT_SPECIAL_ELEPHANTBATTLE,
	ACHIEVEMENT_SPECIAL_SUNTZU,
	ACHIEVEMENT_SPECIAL_BARBARIANWARLORD,
	ACHIEVEMENT_SPECIAL_BARBARYPIRATE,
	ACHIEVEMENT_SPECIAL_TOMBRAIDER,
	ACHIEVEMENT_SPECIAL_WARCANOE,
	ACHIEVEMENT_SPECIAL_PONY,
	ACHIEVEMENT_SPECIAL_ARMADA,
	ACHIEVEMENT_SPECIAL_CONQUEST_WORLD,

	ACHIEVEMENT_CIVILOPEDIA,
	ACHIEVEMENT_REALLY_SUCK,
	ACHIEVEMENT_PSG,

	//DLC_DELUXE
	ACHIEVEMENT_WIN_NEBUCHADNEZZAR,
	
	//DLC_01
	ACHIEVEMENT_WIN_GENGHIS,
	ACHIEVEMENT_WIN_SCENARIO_01_PRINCE_OR_BELOW,
	ACHIEVEMENT_WIN_SCENARIO_01_KING,
	ACHIEVEMENT_WIN_SCENARIO_01_EMPEROR,
	ACHIEVEMENT_WIN_SCENARIO_01_IMMORTAL,
	ACHIEVEMENT_WIN_SCENARIO_01_DEITY,
	ACHIEVEMENT_LOSE_SCENARIO_01,

	//DLC_02
	ACHIEVEMENT_WIN_ISABELLA,
	ACHIEVEMENT_WIN_PACHACUTI,
	ACHIEVEMENT_SCENARIO_02_WIN_SPAIN,
	ACHIEVEMENT_SCENARIO_02_WIN_FRANCE,
	ACHIEVEMENT_SCENARIO_02_WIN_ENGLAND,
	ACHIEVEMENT_SCENARIO_02_WIN_INCA,
	ACHIEVEMENT_SCENARIO_02_WIN_AZTECS,
	ACHIEVEMENT_SCENARIO_02_WIN_IROQUOIS,
	ACHIEVEMENT_SCENARIO_02_ROUTE_TO_ORIENT,
	ACHIEVEMENT_SCENARIO_02_DISCOVER_FOUNTAIN,
	ACHIEVEMENT_SCENARIO_02_DISCOVER_EL_DORADO,
	ACHIEVEMENT_SCENARIO_02_RETURN_TREASURE,
	
	//DLC_03
	ACHIEVEMENT_WIN_KAMEHAMEHA,
	ACHIEVEMENT_SCENARIO_03_WIN_HIVA,
	ACHIEVEMENT_SCENARIO_03_WIN_TAHITI,
	ACHIEVEMENT_SCENARIO_03_WIN_SAMOA,
	ACHIEVEMENT_SCENARIO_03_WIN_TONGA,
	ACHIEVEMENT_SCENARIO_03_FIND_HAWAII,
	ACHIEVEMENT_SCENARIO_03_FIND_EASTER_ISLAND,
	ACHIEVEMENT_SCENARIO_03_FIND_CAPTAIN_COOK,
	ACHIEVEMENT_SCENARIO_03_FIND_AUSTRALIA,
	ACHIEVEMENT_SCENARIO_03_FIND_NEW_ZEALAND,

	//DLC_04
	ACHIEVEMENT_WIN_BLUETOOTH,
	ACHIEVEMENT_SCENARIO_04_BIATHLON,
	ACHIEVEMENT_SCENARIO_04_PILLAGE,
	ACHIEVEMENT_SCENARIO_04_NORMANDY,
	ACHIEVEMENT_SCENARIO_04_WIN_DENMARK,
	ACHIEVEMENT_SCENARIO_04_WIN_NORWAY,
	ACHIEVEMENT_SCENARIO_04_WIN_ENGLAND,
	ACHIEVEMENT_SCENARIO_04_BUILD_MOTTE,
	ACHIEVEMENT_SCENARIO_04_WIN_EMPEROR,
	ACHIEVEMENT_SCENARIO_04_WIN_IMMORTAL,
	ACHIEVEMENT_SCENARIO_04_WIN_DEITY,

	//DLC_05
	ACHIEVEMENT_WIN_SEJONG,
	ACHIEVEMENT_SPECIAL_IRONCLAD_TURTLE,
	ACHIEVEMENT_SPECIAL_HWATCH_OUT,
	ACHIEVEMENT_SCENARIO_05_WIN_JAPAN,
	ACHIEVEMENT_SCENARIO_05_WIN_KOREA,
	ACHIEVEMENT_SCENARIO_05_WIN_CHINA,
	ACHIEVEMENT_SCENARIO_05_WIN_MANCHU,
	ACHIEVEMENT_SCENARIO_05_LOSE_KOREA,
	ACHIEVEMENT_SCENARIO_05_WIN_EMPEROR,
	ACHIEVEMENT_SCENARIO_05_WIN_IMMORTAL,
	ACHIEVEMENT_SCENARIO_05_WIN_DEITY,
	ACHIEVEMENT_SCENARIO_05_WIN_100TURNS,
	ACHIEVEMENT_SCENARIO_05_QING_TAKES_MING,

	//DLC_06
	ACHIEVEMENT_SPECIAL_ROME_GETS_ZEUS,
	ACHIEVEMENT_SPECIAL_ZEUS_AND_ARTEMIS,
	ACHIEVEMENT_SPECIAL_HALICARNASSUS_GOLD,
	ACHIEVEMENT_SPECIAL_ANCIENT_WONDERS,
	ACHIEVEMENT_SCENARIO_06_WIN_HITTITES,
	ACHIEVEMENT_SCENARIO_06_WIN_GREECE,
	ACHIEVEMENT_SCENARIO_06_WIN_SUMER,
	ACHIEVEMENT_SCENARIO_06_WIN_EGYPT,
	ACHIEVEMENT_SCENARIO_06_WIN_PERSIA,
	ACHIEVEMENT_SCENARIO_06_WIN_PRINCE,
	ACHIEVEMENT_SCENARIO_06_WIN_KING,
	ACHIEVEMENT_SCENARIO_06_WIN_EMPEROR,
	ACHIEVEMENT_SCENARIO_06_WIN_IMMORTAL,
	ACHIEVEMENT_SCENARIO_06_WIN_DEITY,
	ACHIEVEMENT_SCENARIO_06_WONDER_CITY,
	ACHIEVEMENT_SCENARIO_06_WONDER_CONQUEST,
	ACHIEVEMENT_SCENARIO_06_ORACLE_CONSULT,

	//Expansion 1
	ACHIEVEMENT_XP1_01,
	ACHIEVEMENT_XP1_02,
	ACHIEVEMENT_XP1_03,
	ACHIEVEMENT_XP1_04,
	ACHIEVEMENT_XP1_05,
	ACHIEVEMENT_XP1_06,
	ACHIEVEMENT_XP1_07,
	ACHIEVEMENT_XP1_08,
	ACHIEVEMENT_XP1_09,
	ACHIEVEMENT_XP1_10,
	ACHIEVEMENT_XP1_11,
	ACHIEVEMENT_XP1_12,
	ACHIEVEMENT_XP1_13,
	ACHIEVEMENT_XP1_14,
	ACHIEVEMENT_XP1_15,
	ACHIEVEMENT_XP1_16,
	ACHIEVEMENT_XP1_17,
	ACHIEVEMENT_XP1_18,
	ACHIEVEMENT_XP1_19,
	ACHIEVEMENT_XP1_20,
	ACHIEVEMENT_XP1_21,
	ACHIEVEMENT_XP1_22,
	ACHIEVEMENT_XP1_23,
	ACHIEVEMENT_XP1_24,
	ACHIEVEMENT_XP1_25,
	ACHIEVEMENT_XP1_26,
	ACHIEVEMENT_XP1_27,
	ACHIEVEMENT_XP1_28,
	ACHIEVEMENT_XP1_29,
	ACHIEVEMENT_XP1_30,
	ACHIEVEMENT_XP1_31,
	ACHIEVEMENT_XP1_32,
	ACHIEVEMENT_XP1_33,
	ACHIEVEMENT_XP1_34,
	ACHIEVEMENT_XP1_35,
	ACHIEVEMENT_XP1_36,
	ACHIEVEMENT_XP1_37,
	ACHIEVEMENT_XP1_38,
	ACHIEVEMENT_XP1_39,
	ACHIEVEMENT_XP1_40,
	ACHIEVEMENT_XP1_41,
	ACHIEVEMENT_XP1_42,
	ACHIEVEMENT_XP1_43,
	ACHIEVEMENT_XP1_44,
	ACHIEVEMENT_XP1_45,
	ACHIEVEMENT_XP1_46,
	ACHIEVEMENT_XP1_47,
	ACHIEVEMENT_XP1_48,
	ACHIEVEMENT_XP1_49,
	ACHIEVEMENT_XP1_50,
	ACHIEVEMENT_XP1_51,
	ACHIEVEMENT_XP1_52,

	NUM_ACHIEVEMENTS
};
 
@Genghis.Khan I am having trouble with your instructions . I must be missing something rather simple.

First let me explain what I am trying to do and why.

For some reason the Autocracy achievement won't unlock, I'm not a big fan of the policy itself so I figured I must have just never gotten it fully unlocked, but the other day I decided to eliminate it by starting a new duel game just to unlock it to get it out of the way. I played through and the achievement would still not unlock, so now I just want to get it out of the way.

Here are my questions:

Step 12: Am I opening the Projects\CvGameCoreSource\CvGameCoreDLL\CvAchievementUnlocker.cpp file or
Projects\CvGameCoreSource\CvGameCoreDLL_Expansion\CvAchievementUnlocker.cpp?

judging by your reference to line 30 I believe it is the vanilla version,

I've tried both anyways, in different locations, both before and after the following
Code:
bool CvAchievementUnlocker::Check_PSG()
Neither would build until a ' ; ' following the code below
Code:
 gDLL->UnlockAchievement(ACHIEVEMENT_AUTOCRACY)
I got this error when building
Code:
1>.\CvAchievementUnlocker.cpp(31) : error C2143: syntax error : missing ';' before '.'
1>.\CvAchievementUnlocker.cpp(31) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>.\CvAchievementUnlocker.cpp(31) : error C2371: 'gGlobals' : redefinition; different basic types
1>        c:\users\ron\documents\visual studio 2008\projects\cvgamecoresource\cvgamecoredll_expansion\CvGlobals.h(8719) : see declaration of 'gGlobals'
1>.\CvAchievementUnlocker.cpp(37) : error C2143: syntax error : missing ';' before '{'
1>.\CvAchievementUnlocker.cpp(37) : error C2447: '{' : missing function header (old-style formal list?)

Steps 14,15,16 when you say "CvGameCoreDLL_Expansion.dll" do you mean "CvGameCoreDLL_Expansion1.dll"?

Just to be sure the new files are actually working, I tried renaming it and launching the game, it failed to launch, but launches fine with the new dll or the old dll. I tried to disable G&K inside the game so I could use the vanilla dll file, still no luck.

any idea what I am doing wrong, misunderstanding?

Edit: I was able to unlock the achievement by moving the code to the following section and ending my first turn, I don't understand what I was doing wrong though, is it because the system was expecting me to set a value instead of launching the gdll?

Code:
void CvAchievementUnlocker::EndTurn()
{
	//Reset the per turn counters.
	gDLL->UnlockAchievement(ACHIEVEMENT_POLICY_AUTOCRACY);
	ms_iNumImprovementsPillagedPerTurn = 0;
 
Back
Top Bottom