local ElvUI_EltreumUI, E, L, V, P, G = unpack(select(2, ...))
local sort = sort
local pairs = pairs
local tinsert = table.insert
local tconcat = table.concat
local ReloadUI = ReloadUI

-- Author list
local AUTHORS = {
	'|cff82B4ffEltreum|r',
}

-- Credits and Thank yous list
local THANKYOU = {
	'|cff0070DEAzilroka|r',
	'|cffC41F3BKringel|r',
	'|cffF58CBARepooc|r',
	'Blazeflack',
	'Botanica',
	'|T134297:15:15:0:0:64:64:5:59:5:59|t |cffff7d0aMerathilis|r',
	'|cff9482c9Darth Predator|r',
	'Caedis',
	'Elv',
	E:TextGradient('Simpy but his name might be shorter sometimes even though he fixes a lot of things', 1,.42,.78, 1,.56,.68, .66,.99,.98, .77,.52,1, 1,.48,.81, .98,.95,.68),
	'Tukui Community',
	'Shrom',
	'Pat',
	'|cff00c0faBenik|r',
	'|T136012:15:15:0:0:64:64:5:59:5:59|t |cff006fdcRubgrsch|r |T656558:15:15:0:0:64:64:5:59:5:59|t',
	'|TInterface/AddOns/ElvUI/Media/ChatLogos/FoxWarlock:15:15:0:0:64:64:5:59:5:59|t |cffff2020NihilisticPandemonium|r',
	'|TInterface/AddOns/ElvUI/Media/ChatLogos/Clover:15:15:0:0:64:64:5:59:5:59|t |cffFF7D0ALuckyone|r  -- Especially for allowing the usage of his installer/plugin as a base',
	'AcidWeb |TInterface/AddOns/ElvUI/Media/ChatLogos/Gem:15:15:-1:2:64:64:6:60:8:60|t',
	'Icons8 (www.icons8.com) for some of the icons. List in license.txt'
}

-- SortList
local function SortList(a, b)
	return E:StripString(a) < E:StripString(b)
end

sort(AUTHORS, SortList)
sort(THANKYOU, SortList)

-- Author table
for _, name in pairs(AUTHORS) do
	tinsert(ElvUI_EltreumUI.CreditsList, name)
end
local AUTHORS_STRING = tconcat(AUTHORS, '|n')

-- Thank you table
for _, name in pairs(THANKYOU) do
	tinsert(ElvUI_EltreumUI.CreditsList, name)
end
local THANKYOU_STRING = tconcat(THANKYOU, '|n')

-- EltreumUI ingame options
function ElvUI_EltreumUI:Configtable()
	-- Add EltreumUI version on top of the ElvUI config
	E.Options.name = E.Options.name .. " + " .. ElvUI_EltreumUI.Name .. format(" |cffffffff%s|r", ElvUI_EltreumUI.Version)
	E.Options.args.ElvUI_EltreumUI = {
		order = 6,
		type = 'group',
		name = ElvUI_EltreumUI.Name,
		args = {
			logo = {
				type = 'description',
				name = "",
				order = 6,
				image = function() return 'Interface\\AddOns\\ElvUI_EltreumUI\\Media\\Textures\\logohq', 512, 128 end,
			},
			installer = {
				order = 7,
				type = 'group',
				name = 'Installer',
				icon = 'Interface\\AddOns\\ElvUI_EltreumUI\\Media\\Icons\\install',
				args = {
					install = {
						order = 1,
						type = 'group',
						inline = true,
						name = 'Reinstall the plugin to reset settings',
						args = {
							generalVars = {
								order = 1,
								type = 'execute',
								name = 'Install',
								func = function() E:GetModule('PluginInstaller'):Queue(ElvUI_EltreumUI.InstallerData); E:ToggleOptionsUI(); end,
							},
						},
					},
				},
			},
			aurafilters = {
				type = 'group',
				name = 'Aura Filters',
				icon = 'Interface\\AddOns\\ElvUI_EltreumUI\\Media\\Icons\\aurafilter',
				order = 85,
				args = {
					header1 = {
						order = 1,
						type = 'header',
						name = 'Aura Filters',
					},
					listofauras = {
						order = 19,
						type = 'input',
						width = 'full',
						name = 'Import aura filters by copying the code below and going into Profiles > Import Profile.',
						get = function() return ' ' end,
					},
				},
			},
			profiles = {
				type = 'group',
				name = 'Addon Profiles',
				icon = 'Interface\\AddOns\\ElvUI_EltreumUI\\Media\\Icons\\addon',
				order = 85,
				args = {
					plugins = {
						order = 1,
						type = 'group',
						inline = true,
						name = 'ElvUI Plugins',
						args = {
							addonskins = {
								order = 1,
								type = 'execute',
								name = '|cff16C3F2AddOn|r|cFFFFFFFFSkins|r',
								desc = 'Reset to Eltreum UI defaults.',
								func = function() ElvUI_EltreumUI:AddonSetupAS(); ReloadUI(); end,
								confirm = true,
							},
							projectazilroka = {
								order = 2,
								type = 'execute',
								name = '|cFF16C3F2Project|r|cFFFFFFFFAzilroka|r',
								desc = 'Reset to Eltreum UI defaults.',
								func = function() ElvUI_EltreumUI:AddonSetupPA(); ReloadUI(); end,
								confirm = true,
							},
						},
					},
					bossmods = {
						order = 2,
						type = 'group',
						inline = true,
						name = 'BossMods Profiles',
						args = {
							bigwigs = {
								order = 1,
								type = 'execute',
								name = 'BigWigs',
								desc = 'Reset to Eltreum UI defaults.',
								func = function() ElvUI_EltreumUI:AddonSetupBW(); ReloadUI(); end,
								confirm = true,
							},
							dbm = {
								order = 2,
								type = 'execute',
								name = 'DBM',
								desc = 'Reset to Eltreum UI defaults.',
								func = function() ElvUI_EltreumUI:AddonSetupDBM(); ReloadUI(); end,
								confirm = true,
							},
						},
					},
					addons = {
						order = 4,
						type = 'group',
						inline = true,
						name = 'Addon Profiles',
						args = {
							dynamiccam = {
								order = 1,
								type = 'execute',
								name = 'Dynamic Cam',
								desc = 'Reset to Eltreum UI defaults.',
								func = function() ElvUI_EltreumUI:AddonSetupDynamicCam(); ReloadUI(); end,
								confirm = true,
							},
							immersion = {
								order = 2,
								type = 'execute',
								name = 'Immersion',
								desc = 'Reset to Eltreum UI defaults.',
								func = function() ElvUI_EltreumUI:AddonSetupImmersion(); ReloadUI(); end,
								confirm = true,
							},
							gladiusex = {
								order = 3,
								type = 'execute',
								name = 'Gladius Ex',
								desc = 'Reset to Eltreum UI defaults.',
								func = function() ElvUI_EltreumUI:AddonSetupGladiusEx(); ReloadUI(); end,
								confirm = true,
							},
							exorsus = {
								order = 4,
								type = 'execute',
								name = 'Exorsus Raid Tools',
								desc = 'Reset to Eltreum UI defaults.',
								func = function() ElvUI_EltreumUI:AddonSetupExRT(); ReloadUI(); end,
								confirm = true,
							},
							nameplatesct = {
								order = 5,
								type = 'execute',
								name = 'Nameplate Scrolling Combat Text',
								desc = 'Reset to Eltreum UI defaults.',
								func = function() ElvUI_EltreumUI:AddonSetupNameplateSCT(); ReloadUI(); end,
								confirm = true,
							},
							fct = {
								order = 6,
								type = 'execute',
								name = 'Floating Combat Text',
								desc = 'Reset to Eltreum UI defaults.',
								func = function() ElvUI_EltreumUI:AddonSetupFCT(); ReloadUI(); end,
								confirm = true,
							},
							details = {
								order = 7,
								type = 'execute',
								name = 'Details',
								desc = 'Reset to Eltreum UI defaults.',
								func = function() ElvUI_EltreumUI:AddonSetupDT(); ReloadUI(); end,
								confirm = true,
							},
						},
					},
				},
			},
			actionbars = {
				type = 'group',
				name = 'Custom Glow',
				icon = 'Interface\\AddOns\\ElvUI_EltreumUI\\Media\\Icons\\customglow',
				order = 85,
				args = {
					glow = {
						type = 'group',
						name = 'Replace Blizzards Default Glow with a Custom class colored Glow',
						guiInline = true,
						order = 10,
						args = {
							enable = {
							type = 'toggle',
							name = 'Enable',
							order = 1,
							get = function() return E.private.ElvUI_EltreumUI.glow.enable end,
							set = function(_, value) E.private.ElvUI_EltreumUI.glow.enable = value; E:StaticPopup_Show('PRIVATE_RL') end,
							},
							addagaphere = {
							order = 2,
							type = "description",
							name = "",
							},
							addanothergapforfun = {
							order = 2,
							type = "description",
							name = "",
							},
							procselection = {
							order = 2,
							type = 'group',
							name = 'Select a Type',
								args = {
									yetanothergap = {
									order = 2,
									type = "description",
									name = "",
									},
									autocast = {
										type = 'toggle',
										name = 'Autocast',
										order = 10,
										desc = 'Adds an autocast style glow using class color',
										disabled = function() return not E.private.ElvUI_EltreumUI.glow.enable or E.private.ElvUI_EltreumUI.glow.pixel or E.private.ElvUI_EltreumUI.glow.blizzard end,
										get = function(info) return E.private.ElvUI_EltreumUI.glow.autocast end,
										set = function(info, value) E.private.ElvUI_EltreumUI.glow.autocast = value; E:StaticPopup_Show('PRIVATE_RL') end,
									},
									pixel = {
										type = 'toggle',
										name = 'Pixel',
										order = 12,
										desc = 'Adds a pixel style glow using class color',
										disabled = function() return not E.private.ElvUI_EltreumUI.glow.enable or E.private.ElvUI_EltreumUI.glow.autocast or E.private.ElvUI_EltreumUI.glow.blizzard end,
										get = function(info) return E.private.ElvUI_EltreumUI.glow.pixel end,
										set = function(info, value) E.private.ElvUI_EltreumUI.glow.pixel = value; E:StaticPopup_Show('PRIVATE_RL') end,
									},
									blizzard = {
										type = 'toggle',
										name = 'Blizzard',
										order = 11,
										desc = 'Adds a Blizzard style glow using class color',
										disabled = function() return not E.private.ElvUI_EltreumUI.glow.enable or E.private.ElvUI_EltreumUI.glow.autocast or E.private.ElvUI_EltreumUI.glow.pixel end,
										get = function(info) return E.private.ElvUI_EltreumUI.glow.blizzard end,
										set = function(info, value) E.private.ElvUI_EltreumUI.glow.blizzard = value; E:StaticPopup_Show('PRIVATE_RL') end,
									},
								},
							},
						},
					},
				},
			},
			cvars = {
				order = 85,
				type = 'group',
				name = 'CVars',
				icon = 'Interface\\AddOns\\ElvUI_EltreumUI\\Media\\Icons\\cvar',
				args = {
					setup = {
						order = 1,
						type = 'group',
						inline = true,
						name = 'Setup CVars',
						args = {
							generalVars = {
								order = 1,
								type = 'execute',
								name = 'General CVars',
								func = function() ElvUI_EltreumUI:SetupCVars(); end,
								confirm = true,
							},
						},
					},
					generalDesc = {
						order = 2,
						type = 'group',
						inline = true,
						name = 'It will set these CVars:',
						args = {
							cvars = {
								order = 1,
								type = 'description',
								fontSize = 'medium',
								name = '- autoLootDefault true\n- autoQuestWatch 1\n- cameraDistanceMaxZoomFactor 2.6\n- nameplateLargerScale 1.2\n- nameplateMaxDistance 60\n- nameplateMinAlpha 1\n- nameplateMinScale 1\n- nameplateMotion 1\n- nameplateOccludedAlphaMult 0\n- nameplateOverlapH 0.8\n- nameplateOverlapV 1.1\n- nameplateSelectedScale 1\n- nameplateSelfAlpha 1\n- nameplateShowFriendlyMinions 0\n- removeChatDelay 1\n- UnitNameEnemyGuardianName 0\n- UnitNameEnemyMinionName 0\n- UnitNameEnemyPetName 0\n- UnitNameEnemyPlayerName 1\n- UnitNameEnemyTotem 1',
							},
						},
					},
				},
			},
			partyraidsettings = {
				type = 'group',
				name = 'Party/Raid',
				icon = 'Interface\\AddOns\\ElvUI_EltreumUI\\Media\\Icons\\party',
				order = 85,
				args = {
					partyraiddeath = {
						type = 'group',
						name = 'Play a sound when someone dies in Party or Raid',
						guiInline = true,
						order = 10,
						args = {
							enable = {
							type = 'toggle',
							name = 'Enable',
							order = 1,
							get = function() return E.private.ElvUI_EltreumUI.partyraiddeath.enable end,
							set = function(_, value) E.private.ElvUI_EltreumUI.partyraiddeath.enable = value end,
							},
							addagaphere = {
							order = 2,
							type = "description",
							name = "",
							},
							addanothergapforfun = {
							order = 2,
							type = "description",
							name = "",
							},
							soundselection = {
							order = 2,
							type = 'group',
							name = 'Select a Sound',
								args = {
									yetanothergap = {
									order = 2,
									type = "description",
									name = "",
									},
									bruh = {
										type = 'toggle',
										name = 'Bruh',
										order = 5,
										disabled = function() return not E.private.ElvUI_EltreumUI.partyraiddeath.enable or E.private.ElvUI_EltreumUI.partyraiddeath.robloxoof or E.private.ElvUI_EltreumUI.partyraiddeath.shame or E.private.ElvUI_EltreumUI.partyraiddeath.wow or E.private.ElvUI_EltreumUI.partyraiddeath.mario end,
										get = function(info) return E.private.ElvUI_EltreumUI.partyraiddeath.bruh end,
										set = function(info, value) E.private.ElvUI_EltreumUI.partyraiddeath.bruh = value; PlaySoundFile("Interface\\AddOns\\ElvUI_EltreumUI\\Media\\sound\\bruh.mp3", "Dialog") end,
									},
									robloxoof = {
										type = 'toggle',
										name = 'Oof',
										order = 6,
										disabled = function() return not E.private.ElvUI_EltreumUI.partyraiddeath.enable or E.private.ElvUI_EltreumUI.partyraiddeath.bruh or E.private.ElvUI_EltreumUI.partyraiddeath.shame or E.private.ElvUI_EltreumUI.partyraiddeath.wow or E.private.ElvUI_EltreumUI.partyraiddeath.mario end,
										get = function(info) return E.private.ElvUI_EltreumUI.partyraiddeath.robloxoof end,
										set = function(info, value) E.private.ElvUI_EltreumUI.partyraiddeath.robloxoof = value; PlaySoundFile("Interface\\AddOns\\ElvUI_EltreumUI\\Media\\sound\\oof.mp3", "Dialog") end,
									},
									yetanothergap2 = {
									order = 8,
									type = "description",
									name = "",
									},
									shame = {
										type = 'toggle',
										name = 'Shame',
										order = 13,
										disabled = function() return not E.private.ElvUI_EltreumUI.partyraiddeath.enable or E.private.ElvUI_EltreumUI.partyraiddeath.bruh or E.private.ElvUI_EltreumUI.partyraiddeath.robloxoof or E.private.ElvUI_EltreumUI.partyraiddeath.wow or E.private.ElvUI_EltreumUI.partyraiddeath.mario end,
										get = function(info) return E.private.ElvUI_EltreumUI.partyraiddeath.shame end,
										set = function(info, value) E.private.ElvUI_EltreumUI.partyraiddeath.shame = value; PlaySoundFile("Interface\\AddOns\\ElvUI_EltreumUI\\Media\\sound\\shame.mp3", "Dialog") end,
									},
									wowsound = {
										type = 'toggle',
										name = 'Wow',
										order = 14,
										disabled = function() return not E.private.ElvUI_EltreumUI.partyraiddeath.enable or E.private.ElvUI_EltreumUI.partyraiddeath.bruh or E.private.ElvUI_EltreumUI.partyraiddeath.robloxoof or E.private.ElvUI_EltreumUI.partyraiddeath.shame or E.private.ElvUI_EltreumUI.partyraiddeath.mario end,
										get = function(info) return E.private.ElvUI_EltreumUI.partyraiddeath.wow end,
										set = function(info, value) E.private.ElvUI_EltreumUI.partyraiddeath.wow = value; PlaySoundFile("Interface\\AddOns\\ElvUI_EltreumUI\\Media\\sound\\wow.mp3", "Dialog") end,
									},
									yetanothergap3 = {
									order = 15,
									type = "description",
									name = "",
									},
									mariosound = {
										type = 'toggle',
										name = 'Mario',
										order = 14,
										disabled = function() return not E.private.ElvUI_EltreumUI.partyraiddeath.enable or E.private.ElvUI_EltreumUI.partyraiddeath.bruh or E.private.ElvUI_EltreumUI.partyraiddeath.robloxoof or E.private.ElvUI_EltreumUI.partyraiddeath.shame or E.private.ElvUI_EltreumUI.partyraiddeath.wow end,
										get = function(info) return E.private.ElvUI_EltreumUI.partyraiddeath.mario end,
										set = function(info, value) E.private.ElvUI_EltreumUI.partyraiddeath.mario = value; PlaySoundFile("Interface\\AddOns\\ElvUI_EltreumUI\\Media\\sound\\mariodeath.mp3", "Dialog") end,
									},

								},
							},
						},
					},
				},
			},
			quests = {
				type = 'group',
				name = 'Quests',
				icon = 'Interface\\AddOns\\ElvUI_EltreumUI\\Media\\Icons\\quest',
				order = 85,
				args = {
					questsettings = {
						order = 1,
						type = 'group',
						inline = true,
						name = 'Collapse Quests during Encounters/Boss Fights',
						get = function(info) return E.private.ElvUI_EltreumUI.questsettings[info[#info]] end,
						set = function(info, value) E.private.ElvUI_EltreumUI.questsettings[info[#info]] = value end,
						args = {
							enable = {
								order = 5,
								type = 'toggle',
								name = 'Enable',
								desc = 'Add an ETA to waypoints',
							},
						},
					},
				},
			},
			maps = {
				type = 'group',
				name = 'Maps',
				icon = 'Interface\\AddOns\\ElvUI_EltreumUI\\Media\\Icons\\map',
				order = 85,
				args = {
					waypointetasetting = {
						order = 1,
						type = 'group',
						inline = true,
						name = 'Add a time to arrive below the waypoint',
						get = function(info) return E.private.ElvUI_EltreumUI.waypointetasetting[info[#info]] end,
						set = function(info, value) E.private.ElvUI_EltreumUI.waypointetasetting[info[#info]] = value; E:StaticPopup_Show('PRIVATE_RL') end,
						args = {
							explainer = {
								order = 1,
								type = "description",
								name = 'The time will be calculated based on player speed and distance',
							},
							explainer2 = {
								order = 2,
								type = "description",
								name = 'If the player is not moving then *** will show up since time cannot be calculated',
							},
							explainer3 = {
								order = 3,
								type = "description",
								name = 'If you move away from the waypoint the time will just increase',
							},
							explainer4 = {
								order = 4,
								type = "description",
								name = '',
							},

							enable = {
								order = 5,
								type = 'toggle',
								name = 'Enable',
								desc = 'Add an ETA to waypoints',
							},
						},
					},
				},
			},
			media = {
				type = 'group',
				name = 'Media',
				icon = 'Interface\\AddOns\\ElvUI_EltreumUI\\Media\\Icons\\media',
				order = 85,
				args = {
					defaults = {
						order = 1,
						type = 'group',
						inline = true,
						name = 'Reset Fonts, Textures & Skins',
						args = {
							private = {
								order = 1,
								type = 'execute',
								name = 'Reset Media',
								desc = 'Reset Fonts, Textures, Skins to Eltreum UI defaults.',
								func = function() ElvUI_EltreumUI:SetupPrivate(); E:StaggeredUpdateAll(nil, true) end,
								confirm = true,
							},
							addagaphereforfonts = {
							order = 2,
							type = "description",
							name = "",
							},
							kimberley = {
								order = 3,
								type = 'execute',
								name = 'Set Kimberley as Font',
								desc = 'This will set all ElvUI fonts as Kimberley',
								func = function() ElvUI_EltreumUI:SetupFontsKimberley(); E:StaggeredUpdateAll(nil, true) end,
								confirm = true,
							},
							exo2 = {
								order = 3,
								type = 'execute',
								name = 'Set Exo2 as Font',
								desc = 'This will set all ElvUI fonts as Exo2',
								func = function() ElvUI_EltreumUI:SetupFontsExo2(); E:StaggeredUpdateAll(nil, true) end,
								confirm = true,
							},
							gotham = {
								order = 3,
								type = 'execute',
								name = 'Set Gotham as Font',
								desc = 'This will set all ElvUI fonts as Gotham',
								func = function() ElvUI_EltreumUI:SetupFontsGotham(); E:StaggeredUpdateAll(nil, true) end,
								confirm = true,
							},
							roboto = {
								order = 3,
								type = 'execute',
								name = 'Set Roboto as Font',
								desc = 'This will set all ElvUI fonts as Roboto',
								func = function() ElvUI_EltreumUI:SetupFontsRoboto(); E:StaggeredUpdateAll(nil, true) end,
								confirm = true,
							},
						},
					},
				},
			},
			nameplates = {
				type = 'group',
				name = 'Nameplate',
				icon = 'Interface\\AddOns\\ElvUI_EltreumUI\\Media\\Icons\\nameplate',
				order = 85,
				args = {
					nameplateOptions = {
						order = 1,
						type = 'group',
						inline = true,
						name = 'Class Colored Nameplate Options',
						get = function(info) return E.private.ElvUI_EltreumUI.nameplateOptions[info[#info]] end,
						set = function(info, value) E.private.ElvUI_EltreumUI.nameplateOptions[info[#info]] = value; E:StaticPopup_Show('PRIVATE_RL') end,
						args = {
							classhover = {
								order = 1,
								type = 'toggle',
								name = 'Hover',
								desc = 'Change the color of the hover to be class colored',
								get = function(info) return E.private.ElvUI_EltreumUI.nameplateOptions.ClassColorGlow end,
								set = function(info, value) E.private.ElvUI_EltreumUI.nameplateOptions.ClassColorGlow = value; E:StaticPopup_Show('PRIVATE_RL') end,
							},
							classborder = {
								order = 2,
								type = 'toggle',
								name = 'Border',
								desc = 'Change the color of the border glow to be class bordered in nameplates',
								get = function(info) return E.private.ElvUI_EltreumUI.nameplateOptions.ClassBorderNameplate end,
								set = function(info, value) E.private.ElvUI_EltreumUI.nameplateOptions.ClassBorderNameplate = value; E:StaticPopup_Show('PRIVATE_RL') end,
							},
							classtexture = {
								order = 2,
								type = 'toggle',
								name = 'Target Texture',
								desc = 'Change the texture of the nameplate to be a class gradient',
								get = function(info) return E.private.ElvUI_EltreumUI.nameplateOptions.nameplatetexture end,
								set = function(info, value) E.private.ElvUI_EltreumUI.nameplateOptions.nameplatetexture = value; E:StaticPopup_Show('PRIVATE_RL') end,
							},
						},
					},
					addsomegap = {
							order = 2,
							type = "description",
							name = "",
					},
					friendlynameplate = {
						order = 2,
						type = 'group',
						inline = true,
						name = 'Show Friendly Nameplates Outside Instances, hide inside instances',
						args = {
							desc = {
								order = 1,
								type = 'toggle',
								name = 'Enable',
								desc = 'Toogle On and Off',
								get = function() return E.private.ElvUI_EltreumUI.friendlynameplatetoggle.enable end,
								set = function(_, value) E.private.ElvUI_EltreumUI.friendlynameplatetoggle.enable = value end,
							},
						}
					},
					verywidenameplate = {
						order = 99,
						type = 'group',
						inline = true,
						name = 'Wide nameplate debuffs and buffs',
						args = {
							desc = {
								order = 1,
								type = 'toggle',
								name = 'Enable',
								desc = 'Toogle On and Off',
								get = function() return E.private.ElvUI_EltreumUI.widenameplate.enable end,
								set = function(_, value) E.private.ElvUI_EltreumUI.widenameplate.enable = value; E:StaticPopup_Show('PRIVATE_RL') end,
							},
						}
					},
				},
			},
			stealth = {
				type = 'group',
				name = 'Stealth Vignette',
				icon = 'Interface\\AddOns\\ElvUI_EltreumUI\\Media\\Icons\\stealth',
				order = 85,
				args = {
					stealthOptions = {
						order = 1,
						type = 'group',
						inline = true,
						name = 'Toggle a Stealth Effect',
						get = function(info) return E.private.ElvUI_EltreumUI.stealthOptions[info[#info]] end,
						set = function(info, value) E.private.ElvUI_EltreumUI.stealthOptions[info[#info]] = value; E:StaticPopup_Show('PRIVATE_RL') end,
						args = {
							stealthoptions = {
								order = 1,
								type = 'toggle',
								name = 'Enable',
								desc = 'Add a vignette while in stealth',
								get = function(info) return E.private.ElvUI_EltreumUI.stealthOptions.stealtheffect end,
								set = function(info, value) E.private.ElvUI_EltreumUI.stealthOptions.stealtheffect = value; E:StaticPopup_Show('PRIVATE_RL') end,
							},
						},
					},
				},
			},
			afk = {
				type = 'group',
				name = 'AFK',
				icon = 'Interface\\AddOns\\ElvUI_EltreumUI\\Media\\Icons\\afk',
				order = 85,
				args = {
					afkmusic = {
						order = 1,
						type = 'group',
						inline = true,
						name = 'Play music while you are AFK',
						args = {
							enable = {
							type = 'toggle',
							name = 'Enable',
							order = 1,
							get = function() return E.private.ElvUI_EltreumUI.afkmusic.enable end,
							set = function(_, value) E.private.ElvUI_EltreumUI.afkmusic.enable = value end,
							},
							addagaphere = {
							order = 2,
							type = "description",
							name = "",
							},
							addanothergapforfun = {
							order = 2,
							type = "description",
							name = "",
							},
							afksoundtype = {
							order = 2,
							type = 'group',
							name = 'Select a type of music',
								args = {
									yetanothergap = {
									order = 2,
									type = "description",
									name = "",
									},
									racial = {
										type = 'toggle',
										name = 'Racial Music',
										order = 5,
										disabled = function() return not E.private.ElvUI_EltreumUI.afkmusic.enable or E.private.ElvUI_EltreumUI.afkmusic.playerclass end,
										get = function(info) return E.private.ElvUI_EltreumUI.afkmusic.racial end,
										set = function(info, value) E.private.ElvUI_EltreumUI.afkmusic.racial = value end,
									},
									playerclass = {
										type = 'toggle',
										name = 'Class Music',
										order = 5,
										disabled = function() return not E.private.ElvUI_EltreumUI.afkmusic.enable or E.private.ElvUI_EltreumUI.afkmusic.racial end,
										get = function(info) return E.private.ElvUI_EltreumUI.afkmusic.playerclass end,
										set = function(info, value) E.private.ElvUI_EltreumUI.afkmusic.playerclass = value end,
									},
								}
							}
						}
					},
				},
			},
			weakauras = {
				type = 'group',
				icon = 'Interface\\AddOns\\ElvUI_EltreumUI\\Media\\Icons\\weakauras',
				name = 'WeakAuras',
				order = 95,
				args = {
					header1 = {
						order = 1,
						type = 'header',
						name = 'WeakAuras',
					},
					explainer7 = {
						order = 2,
						type = "description",
						name = 'My WeakAuras are available here, but are not focused on one class. Consider them more like upcoming features.',
					},
					addaspacehere = {
						order = 3,
						type = "description",
						name = '',
					},
					wago = {
						order = 4,
						type = 'input',
						width = 'normal',
						name = 'All weakauras',
						get = function() return 'wago.io/p/Eltreum' end,
					},
					addsomegap = {
							order = 5,
							type = "description",
							name = "",
					},
					nameplatepowerbar = {
						order = 6,
						type = 'input',
						width = 'full',
						name = 'Nameplate Power Bar',
						get = function() return 'https://wago.io/MHkYMit7S' end,
					},
					addsomegap2 = {
							order = 7,
							type = "description",
							name = "",
					},
					bossnameplate = {
						order = 8,
						type = 'input',
						width = 'full',
						name = 'Boss nameplate at base',
						get = function() return 'https://wago.io/M7yrCgMnE' end,
					},
					addsomegap3 = {
							order = 9,
							type = "description",
							name = "",
					},
					executenameplate = {
						order = 10,
						type = 'input',
						width = 'full',
						name = 'Executes next to nameplates',
						get = function() return 'https://wago.io/afJKwFwAX' end,
					},
				},
			},
			discord = {
				type = 'group',
				name = 'Discord',
				icon = 'Interface\\AddOns\\ElvUI_EltreumUI\\Media\\Icons\\discord',
				order = 96,
				args = {
					logodiscord = {
						type = 'description',
						name = "",
						order = 1,
						image = function() return 'Interface\\AddOns\\ElvUI_EltreumUI\\Media\\Textures\\disc', 256, 128 end,
					},
					explainer8 = {
						order = 2,
						type = "description",
						name = 'Join the Discord if you have any questions or issues',
					},
					addaspacehere4 = {
						order = 3,
						type = "description",
						name = '',
					},
					discordinvitelink = {
						order = 19,
						type = 'input',
						width = 'full',
						name = '',
						get = function() return 'https://discord.gg/cXfA56gmYW' end,
					},
				},
			},
			credits = {
				type = 'group',
				name = 'Credits',
				icon = 'Interface\\AddOns\\ElvUI_EltreumUI\\Media\\Icons\\credits',
				order = 97,
				args = {
					author = {
						order = 1,
						type = 'group',
						inline = true,
						name = 'Author',
						args = {
							desc = {
								order = 1,
								type = 'description',
								fontSize = 'medium',
								name = AUTHORS_STRING,
							},
						},
					},
					thankyou = {
						order = 2,
						type = 'group',
						inline = true,
						name = 'Credits and Thank yous',
						args = {
							desc = {
								order = 1,
								type = 'description',
								fontSize = 'medium',
								name = THANKYOU_STRING,
							},
						},
					},
				},
			},
			support = {
				type = 'group',
				name = 'Support',
				icon = 'Interface\\AddOns\\ElvUI_EltreumUI\\Media\\Icons\\support',
				order = 98,
				args = {
					changelog = {
						order = 1,
						type = 'input',
						width = 'full',
						name = 'New commits, basically a preview of fixes or upcoming features',
						get = function() return 'https://git.tukui.org/eltreum/eltruism/-/commits/master' end,
					},
					issues = {
						order = 2,
						type = 'input',
						width = 'full',
						name = 'Report issues and problems here:',
						get = function() return 'https://git.tukui.org/eltreum/eltruism/-/issues' end,
					},
					tukui = {
						order = 3,
						type = 'input',
						width = 'full',
						name = 'Addon on tukui:',
						get = function() return 'https://www.tukui.org/addons.php?id=209' end,
					},
					curse = {
						order = 4,
						type = 'input',
						width = 'full',
						name = 'Addon on curse:',
						get = function() return 'https://www.curseforge.com/wow/addons/elvui-eltruism' end,
					},
				},
			},
		},
	}

	for _, func in pairs(ElvUI_EltreumUI.Config) do
		func()
	end
end
