local f0_local0 = module
local f0_local1, f0_local2 = ...
f0_local0( f0_local1, package.seeall )
CoD.PrintModuleLoad( _NAME )
function UsingSvSPlayercards( f1_arg0 )
	assert( f1_arg0 ~= nil )
	local f1_local0 = SvS.IsSvS()
	if f1_local0 then
		if SvS.GetCurrentSquadModeInfo() ~= SvS.SquadModes.SquadVsSquad or f1_arg0 == Lobby.MemberListStates.Prelobby then
			f1_local0 = false
		else
			f1_local0 = true
		end
	end
	return f1_local0
end

function HideEmptyLobbySlots( f2_arg0 )
	local f2_local0 = UsingSvSPlayercards( f2_arg0 )
	if not f2_local0 then
		f2_local0 = SvS.IsSvS()
		if f2_local0 then
			f2_local0 = SvS.GetCurrentSquadModeInfo() == SvS.SquadModes.SquadAssault
		end
	end
	return f2_local0
end

function HandleRefocusMemberList( f3_arg0, f3_arg1 )
	f3_arg0:clearSavedState()
	local f3_local0 = f3_arg0:getFirstChild()
	while f3_local0 ~= nil do
		local f3_local1 = f3_local0.properties
		if f3_local1 and f3_local1.isActiveMemberSlot then
			if f3_arg1.inFocus then
				f3_local0:processEvent( {
					name = "gain_focus"
				} )
				break
			end
			LUI.savedMenuStates[f3_arg0.id] = {}
			LUI.savedMenuStates[f3_arg0.id][1] = {
				id = f3_local0.id,
				data = f3_local0.saveData
			}
		end
		f3_local0 = f3_local0:getNextSibling()
	end
end

function HandleLobbyMemberRestoreFocus( f4_arg0, f4_arg1 )
	local f4_local0 = f4_arg0.properties
	if f4_arg0.id == f4_arg1.id then
		if f4_local0.isActiveMemberSlot then
			f4_arg0:processEvent( {
				name = "gain_focus"
			} )
		else
			local f4_local1 = f4_arg0:getParent()
			f4_local1:processEvent( {
				name = "refocus_member_list",
				inFocus = true
			} )
		end
		return true
	else
		return false
	end
end

function LobbyMemberGetLocalPlayerTeam( f5_arg0 )
	local f5_local0 = Engine.GetFirstActiveController()
	if Lobby.GetLocalPlayerTeam then
		return Lobby.GetLocalPlayerTeam( f5_arg0, f5_local0 )
	else
		return Teams.allies
	end
end

function LobbyMemberGetSlot( f6_arg0, f6_arg1 )
	if f6_arg0 == Lobby.MemberListStates.Teams then
		local f6_local0 = Teams.allies
		local f6_local1 = Teams.axis
		local f6_local2 = LobbyMemberGetLocalPlayerTeam( f6_arg0 )
		if f6_local2 == Teams.axis or f6_local2 == Teams.allies then
			f6_local0 = f6_local2
			f6_local1 = otherTeamLookup[f6_local2]
		end
		local f6_local3 = Lobby.GetMemberCount( f6_arg0, f6_local0 )
		local f6_local4 = Lobby.GetMemberCount( f6_arg0, f6_local1 )
		local f6_local5 = Lobby.GetMemberCount( f6_arg0, Teams.spectator )
		if f6_arg1 - 1 < f6_local3 then
			return f6_arg1 - 1
		elseif f6_arg1 - 1 < f6_local3 + f6_local4 then
			return f6_arg1 - f6_local3 - 1
		elseif f6_arg1 - 1 < f6_local3 + f6_local4 + f6_local5 then
			return f6_arg1 - f6_local3 - f6_local4 - 1
		else
			return f6_arg1 - f6_local3 - f6_local4 - f6_local5 - 1
		end
	else
		return f6_arg1 - 1
	end
end

function LobbyMemberGetTeam( f7_arg0, f7_arg1 )
	if f7_arg0 == Lobby.MemberListStates.Teams then
		local f7_local0 = Teams.allies
		local f7_local1 = Teams.axis
		local f7_local2 = LobbyMemberGetLocalPlayerTeam( f7_arg0 )
		if f7_local2 == Teams.axis or f7_local2 == Teams.allies then
			f7_local0 = f7_local2
			f7_local1 = otherTeamLookup[f7_local2]
		end
		local f7_local3 = Lobby.GetMemberCount( f7_arg0, f7_local0 )
		local f7_local4 = Lobby.GetMemberCount( f7_arg0, f7_local1 )
		local f7_local5 = Lobby.GetMemberCount( f7_arg0, Teams.spectator )
		if f7_arg1 - 1 < f7_local3 then
			return f7_local0
		elseif f7_arg1 - 1 < f7_local3 + f7_local4 then
			return f7_local1
		elseif f7_arg1 - 1 < f7_local3 + f7_local4 + f7_local5 then
			return Teams.spectator
		else
			return Teams.free
		end
	else
		return Teams.free
	end
end

function HandleLobbyMemberButtonRefresh( f8_arg0, f8_arg1 )
	local f8_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f8_arg0 )
	f8_arg0.properties.memberListState = LobbyMemberListGetState( f8_arg0.properties.memberListState )
	f8_arg0.properties.memberSlot = LobbyMemberGetSlot( f8_arg0.properties.memberListState, f8_arg0.properties.memberIndex )
	f8_arg0.properties.team = LobbyMemberGetTeam( f8_arg0.properties.memberListState, f8_arg0.properties.memberIndex )
	f8_arg0.properties.isActiveMemberSlot = Lobby.IsActiveMemberSlot( f8_arg0.properties.memberIndex - 1 )
	if not f8_local0.selectedMemberUniqueId and f8_arg0.properties.memberIndex == 0 then
		f8_local0.selectedMemberUniqueId = GetLobbyMemberUniqueId( f8_arg0.properties.memberListState, f8_arg0.properties.memberSlot, f8_arg0.properties.team )
	end
	if SvS.IsSvS() and SvS.GetCurrentSquadModeInfo() == SvS.SquadModes.SquadAssault then
		f8_arg0:dispatchEventToParent( {
			name = "update_squad_member",
			playerElement = f8_arg0,
			team = f8_arg0.properties.team,
			memberSlot = f8_arg0.properties.memberSlot,
			memberListState = f8_arg0.properties.memberListState
		} )
	end
	local f8_local1 = f8_arg0.properties.isActiveMemberSlot
	f8_arg0:processEvent( {
		name = "lobby_member_update_ss_prompt",
		memberListState = f8_arg0.properties.memberListState,
		immediate = true,
		isActiveMemberSlot = f8_local1
	} )
	if f8_local1 then
		f8_arg0:processEvent( {
			name = "lobby_member_update_content",
			memberListState = f8_arg0.properties.memberListState,
			memberSlot = f8_arg0.properties.memberSlot,
			team = f8_arg0.properties.team,
			immediate = true
		} )
		f8_arg0:processEvent( {
			name = "lobby_member_update_bg",
			memberListState = f8_arg0.properties.memberListState,
			team = f8_arg0.properties.team,
			isActiveMemberSlot = f8_local1,
			dispatchChildren = true,
			immediate = true
		} )
	end
end

function LobbyMemberIsSplitscreenPrompt( f9_arg0, f9_arg1 )
	if UsingSvSPlayercards( f9_arg0 ) then
		return false
	elseif f9_arg0 == Lobby.MemberListStates.Prelobby and Lobby.IsPrivatePartyHost() then
		local f9_local0 = Lobby.GetNonPlayingLocalClientCount()
		local f9_local1 = Lobby.GetMemberCount( f9_arg0 )
		if f9_local1 > 0 and f9_local1 < f9_arg1 and f9_arg1 <= f9_local1 + f9_local0 then
			return true
		end
	end
	return false
end

function HandleLobbyMemberButtonIsActive( f10_arg0, f10_arg1 )
	local f10_local0 = f10_arg0.properties
	if not (not f10_local0.isActiveMemberSlot and ((f10_local0.memberListState == Lobby.MemberListStates.Prelobby) or not Lobby.IsSearching() or f10_local0.memberIndex > Lobby.GetMemberCount( f10_local0.memberListState, Teams.free ) or HideEmptyLobbySlots( f10_local0.memberListState ))) or LobbyMemberIsSplitscreenPrompt( f10_local0.memberListState, f10_local0.memberIndex ) then
		f10_arg0:animateToState( "default", 0 )
	else
		f10_arg0:animateToState( "hidden", 0 )
	end
	if f10_local0.isActiveMemberSlot then
		f10_arg0:makeFocusable()
		if not f10_local0.wasActiveMemberSlot and not f10_local0.isLocalMember then
			f10_arg0:dispatchEventToRoot( {
				name = "update_double_xp_icon"
			} )
			Engine.PlaySound( CoD.SFX.MPLobbyPlayerJoin )
		end
		f10_local0.wasActiveMemberSlot = true
	else
		if f10_local0.isFocused then
			f10_arg0:processEvent( {
				name = "lose_focus"
			} )
			local f10_local1 = f10_arg0:getParent()
			f10_local1:processEvent( {
				name = "refocus_member_list",
				inFocus = true
			} )
		else
			local f10_local1 = f10_arg0:getParent()
			if LUI.savedMenuStates[f10_local1.id] ~= nil then
				for f10_local5, f10_local6 in ipairs( LUI.savedMenuStates[f10_local1.id] ) do
					if f10_local6.id == f10_arg0.id then
						f10_local1:processEvent( {
							name = "refocus_member_list",
							inFocus = false
						} )
						break
					end
				end
			end
		end
		if f10_local0.wasActiveMemberSlot then
			f10_arg0:dispatchEventToRoot( {
				name = "update_double_xp_icon"
			} )
			Engine.PlaySound( CoD.SFX.MPLobbyPlayerExit )
			f10_local0.wasActiveMemberSlot = false
		end
		f10_arg0:makeNotFocusable()
	end
	f10_arg0:dispatchEventToParent( {
		name = "update_navigation"
	} )
end

function LobbyMemberButtonShouldBeDisabled( f11_arg0, f11_arg1, f11_arg2 )
	local f11_local0 = LobbyMemberIsSplitscreenPrompt( f11_arg0, f11_arg1 )
	local f11_local1 = Lobby.IsSearching()
	local f11_local2 = f11_arg0 == Lobby.MemberListStates.Prelobby
	if HideEmptyLobbySlots( f11_arg0 ) then
		return not f11_arg2
	elseif not (f11_arg2 and (f11_local2 or not f11_local1 or f11_arg2)) or f11_local0 then
		return true
	else
		return false
	end
end

function HandleLobbyMemberButtonIsDisabled( f12_arg0, f12_arg1 )
	local f12_local0 = f12_arg0.properties
	local f12_local1 = LobbyMemberButtonShouldBeDisabled( f12_local0.memberListState, f12_local0.memberIndex, f12_local0.isActiveMemberSlot )
	if not f12_arg0.disabled and f12_local1 then
		f12_arg0:processEvent( {
			name = "disable",
			immediate = true
		} )
	elseif f12_arg0.disabled and not f12_local1 then
		f12_arg0:processEvent( {
			name = "enable",
			immediate = true
		} )
	end
end

function HandleLobbyMemberButtonAction( f13_arg0, f13_arg1 )
	local f13_local0 = {
		memberListState = f13_arg0.properties.memberListState,
		memberSlot = f13_arg0.properties.memberSlot,
		team = f13_arg0.properties.team
	}
	if f13_arg0.properties.isPublicLobby then
		f13_local0.isPublicLobby = true
	end
	if f13_arg0.properties.isPrivateLobby then
		f13_local0.isPrivateLobby = true
	end
	LUI.FlowManager.RequestPopupMenu( f13_arg0, "player_popup_party", true, f13_arg1.controller, false, f13_local0 )
end

function HandleLobbyMemberButtonOver( f14_arg0, f14_arg1 )
	local f14_local0 = LUI.FlowManager.GetMenuScopedDataFromElement( f14_arg0 )
	local f14_local1 = f14_arg0.properties
	local f14_local2 = LobbyMemberIsBot( f14_local1.memberListState, f14_local1.memberSlot, f14_local1.team )
	if not Engine.IsConsoleGame() then
		f14_arg0:dispatchEventToRoot( {
			name = "lobby_slide_enable",
			dispatchChildren = true
		} )
	end
	f14_local0.selectedMemberUniqueId = GetLobbyMemberUniqueId( f14_local1.memberListState, f14_local1.memberSlot, f14_local1.team )
	f14_arg0:dispatchEventToRoot( {
		name = "lobby_detail_update",
		memberListState = f14_local1.memberListState,
		memberSlot = f14_local1.memberSlot,
		team = f14_local1.team,
		isBot = f14_local2,
		memberIndex = f14_local1.memberIndex,
		dispatchChildren = true,
		controller = f14_arg1.controller,
		immediate = true
	} )
end

function HandleLobbyMemberUpdateSplitscreenPrompt( f15_arg0, f15_arg1 )
	local f15_local0 = f15_arg0.properties
	if LobbyMemberIsSplitscreenPrompt( f15_arg1.memberListState or f15_local0.memberListState, f15_local0.memberIndex ) then
		f15_arg0:animateToState( "default", 0 )
		f15_arg0:setText( Lobby.GetNonPlayingLocalClientText( f15_local0.memberIndex - 1 ) )
	else
		f15_arg0:animateToState( "hidden", 0 )
	end
end

function HandleLobbyMemberUpdateHostIconProperties( f16_arg0, f16_arg1 )
	f16_arg0.properties.memberListState = f16_arg1.memberListState
	f16_arg0.properties.memberSlot = f16_arg1.memberSlot
	f16_arg0.properties.team = f16_arg1.team
end

function HandleLobbyMemberShowHostIcon( f17_arg0, f17_arg1 )
	local f17_local0 = f17_arg0.properties
	if Lobby.ShowMemberPrivatePartyHostIcon( f17_local0.memberListState, f17_local0.memberSlot, f17_local0.team ) then
		f17_arg0:animateToState( "shown", 0 )
	else
		f17_arg0:animateToState( "default", 0 )
	end
end

function HandleLobbyMemberUpdateEliteIcon( f18_arg0, f18_arg1 )
	local f18_local0 = f18_arg0.properties
	if ShouldShowEliteIcon( f18_local0.memberListState, f18_local0.memberSlot, f18_local0.team ) then
		f18_arg0:animateToState( "visible", 0 )
	else
		f18_arg0:animateToState( "default", 0 )
	end
end

function HandleLobbyMemberUpdateEliteIconProperties( f19_arg0, f19_arg1 )
	f19_arg0.properties.memberListState = f19_arg1.memberListState
	f19_arg0.properties.memberSlot = f19_arg1.memberSlot
	f19_arg0.properties.team = f19_arg1.team
end

function HandleLobbyMemberUpdateRankVisibility( f20_arg0, f20_arg1 )
	local f20_local0 = f20_arg0.properties
	local f20_local1 = Lobby.ShowMemberInfo( f20_local0.memberListState, f20_local0.memberSlot, f20_local0.team )
	if f20_local1 then
		f20_local1 = not LobbyMemberIsBot( f20_local0.memberListState, f20_local0.memberSlot, f20_local0.team )
	end
	if not f20_local1 then
		f20_arg0:animateToState( "hidden", 0 )
	elseif f20_local0.isFocused then
		f20_arg0:animateToState( "highlighted", 0 )
	else
		f20_arg0:animateToState( "default", 0 )
	end
end

function HandleLobbyMemberUpdateRank( f21_arg0, f21_arg1 )
	local f21_local0 = f21_arg0.properties
	local f21_local1 = nil
	if Engine.IsAliensMode() then
		f21_arg0:setText( Rank.GetRankDisplay( Lobby.GetMemberAlienRank( f21_local0.memberListState, f21_local0.memberSlot, f21_local0.team ), CoD.PlayMode.Aliens ) )
	else
		f21_arg0:setText( Rank.GetRankDisplay( Lobby.GetMemberRank( f21_local0.memberListState, f21_local0.memberSlot, f21_local0.team ) ) )
	end
end

function HandleLobbyMemberUpdateRankProperties( f22_arg0, f22_arg1 )
	f22_arg0.properties.memberListState = f22_arg1.memberListState
	f22_arg0.properties.memberSlot = f22_arg1.memberSlot
	f22_arg0.properties.team = f22_arg1.team
end

f0_local0 = function ( f23_arg0, f23_arg1, f23_arg2 )
	return Lobby.ShowMemberInfo( f23_arg0, f23_arg1, f23_arg2 ) and not LobbyMemberIsBot( f23_arg0, f23_arg1, f23_arg2 )
end

function HandleLobbyMemberUpdateRankIcon( f24_arg0, f24_arg1 )
	local f24_local0 = f24_arg0.properties
	local f24_local1, f24_local2 = nil
	if Engine.IsAliensMode() then
		f24_local2 = Lobby.GetMemberAlienRank( f24_local0.memberListState, f24_local0.memberSlot, f24_local0.team )
		f24_local1 = Lobby.GetMemberAlienPrestigeLevel( f24_local0.memberListState, f24_local0.memberSlot, f24_local0.team )
	else
		f24_local2 = Lobby.GetMemberRank( f24_local0.memberListState, f24_local0.memberSlot, f24_local0.team )
		f24_local1 = Lobby.GetMemberPrestigeLevel( f24_local0.memberListState, f24_local0.memberSlot, f24_local0.team )
	end
	f24_arg0:setImage( RegisterMaterial( Rank.GetRankIcon( f24_local2, f24_local1, Engine.GetCurrentCoDPlayMode() ) ) )
	if f0_local0( f24_local0.memberListState, f24_local0.memberSlot, f24_local0.team ) then
		f24_arg0:animateToState( "default", 0 )
	else
		f24_arg0:animateToState( "hidden", 0 )
	end
end

function HandleLobbyMemberUpdateRankIconProperties( f25_arg0, f25_arg1 )
	f25_arg0.properties.memberListState = f25_arg1.memberListState
	f25_arg0.properties.memberSlot = f25_arg1.memberSlot
	f25_arg0.properties.team = f25_arg1.team
end

function HandleLobbyMemberUpdateBotDifficultyIcon( f26_arg0, f26_arg1 )
	local f26_local0 = f26_arg0.properties
	local f26_local1 = Lobby.GetMemberBotDifficulty( f26_local0.memberListState, f26_local0.memberSlot, f26_local0.team )
	if LobbyMemberIsBot( f26_local0.memberListState, f26_local0.memberSlot, f26_local0.team ) then
		f26_arg0:animateToState( "default", 0 )
	else
		f26_arg0:animateToState( "hidden", 0 )
	end
end

function HandleLobbyMemberUpdateBotDifficultyIconProperties( f27_arg0, f27_arg1 )
	f27_arg0.properties.memberListState = f27_arg1.memberListState
	f27_arg0.properties.memberSlot = f27_arg1.memberSlot
	f27_arg0.properties.team = f27_arg1.team
end

function HandleLobbyMemberUpdateClantag( f28_arg0, f28_arg1 )
	local f28_local0 = f28_arg0.properties
	if LobbyMemberIsBot( f28_local0.memberListState, f28_local0.memberSlot, f28_local0.team ) then
		f28_arg0:setText( "BOT" )
		if f28_local0.isFocused then
			f28_arg0:animateToState( "highlighted", 0 )
		else
			f28_arg0:animateToState( "default", 0 )
		end
	elseif Lobby.HasMemberClanTag( f28_local0.memberListState, f28_local0.memberSlot, f28_local0.team ) then
		f28_arg0:setText( Lobby.GetMemberClanTag( f28_local0.memberListState, f28_local0.memberSlot, f28_local0.team ) )
		if f28_local0.isFocused then
			f28_arg0:animateToState( "highlighted", 0 )
		else
			f28_arg0:animateToState( "default", 0 )
		end
	else
		f28_arg0:animateToState( "hidden", 0 )
	end
end

function HandleLobbyMemberUpdateClantagProperties( f29_arg0, f29_arg1 )
	f29_arg0.properties.memberListState = f29_arg1.memberListState
	f29_arg0.properties.memberSlot = f29_arg1.memberSlot
	f29_arg0.properties.team = f29_arg1.team
end

function GetReadyUpIndicatorStateString( f30_arg0, f30_arg1, f30_arg2 )
	local f30_local0 = "hidden"
	if Lobby.UsingReadyUpFeature() and not LobbyMemberIsBot( f30_arg0, f30_arg1, f30_arg2 ) then
		if (Lobby.GetMemberReadyUpFlag( f30_arg0, f30_arg1, f30_arg2 ) or false) == true then
			f30_local0 = "ready"
		else
			f30_local0 = "notready"
		end
	end
	return f30_local0
end

function HandleLobbyMemberUpdateReadyUpFlag( f31_arg0, f31_arg1 )
	local f31_local0 = f31_arg0.properties
	f31_arg0:animateToState( GetReadyUpIndicatorStateString( f31_local0.memberListState, f31_local0.memberSlot, f31_local0.team ), 0 )
end

function HandleLobbyMemberUpdateReadyUpFlagProperties( f32_arg0, f32_arg1 )
	f32_arg0.properties.memberListState = f32_arg1.memberListState
	f32_arg0.properties.memberSlot = f32_arg1.memberSlot
	f32_arg0.properties.team = f32_arg1.team
end

function HandleLobbyMemberUpdateGamertag( f33_arg0, f33_arg1 )
	local f33_local0 = f33_arg0.properties
	f33_arg0:setText( Lobby.GetMemberName( f33_local0.memberListState, f33_local0.memberSlot, f33_local0.team ) )
end

function HandleLobbyMemberUpdateGamertagColor( f34_arg0, f34_arg1 )
	local f34_local0 = f34_arg0.properties
	if f34_local0.isFocused then
		f34_arg0:animateToState( "highlighted", 0 )
	elseif LobbyMemberIsBot( f34_local0.memberListState, f34_local0.memberSlot, f34_local0.team ) then
		f34_arg0:animateToState( "default", 0 )
	else
		local f34_local1 = Lobby.IsMemberALocalPlayer( f34_local0.memberListState, f34_local0.memberSlot, f34_local0.team )
		local f34_local2 = Lobby.IsMemberInPrivateParty( f34_local0.memberListState, f34_local0.memberSlot, f34_local0.team )
		if f34_local1 then
			f34_arg0:animateToState( "local", 0 )
		elseif f34_local2 then
			f34_arg0:animateToState( "party", 0 )
		else
			f34_arg0:animateToState( "default", 0 )
		end
	end
end

f0_local1 = function ( f35_arg0, f35_arg1, f35_arg2 )
	local f35_local0
	if f35_arg0 ~= Lobby.MemberListStates.Prelobby then
		f35_local0 = Lobby.ShowMemberInfo( f35_arg0, f35_arg1, f35_arg2 )
	else
		f35_local0 = false
	end
	return f35_local0
end

function HandleLobbyMemberUpdateScoreVisibility( f36_arg0, f36_arg1 )
	local f36_local0 = f36_arg0.properties
	if not f0_local1( f36_local0.memberListState, f36_local0.memberSlot, f36_local0.team ) or Engine.IsAliensMode() then
		f36_arg0:animateToState( "hidden", 0 )
	elseif f36_local0.isFocused then
		f36_arg0:animateToState( "highlighted", 0 )
	else
		f36_arg0:animateToState( "default", 0 )
	end
end

function HandleLobbyMemberUpdateScore( f37_arg0, f37_arg1 )
	local f37_local0 = f37_arg0.properties
	f37_arg0:setText( Lobby.GetMemberStat( f37_local0.memberListState, f37_local0.memberSlot, f37_local0.team, Lobby.MemberStatTypes.Score ) or "" )
end

function HandleLobbyMemberUpdateScoreProperties( f38_arg0, f38_arg1 )
	f38_arg0.properties.memberListState = f38_arg1.memberListState
	f38_arg0.properties.memberSlot = f38_arg1.memberSlot
	f38_arg0.properties.team = f38_arg1.team
end

function HandleLobbyMemberUpdateSetFocused( f39_arg0, f39_arg1 )
	f39_arg0.properties.isFocused = true
end

function HandleLobbyMemberUpdateSetNotFocused( f40_arg0, f40_arg1 )
	f40_arg0.properties.isFocused = false
end

function HandleLobbyMemberUpdateGamertagProperties( f41_arg0, f41_arg1 )
	f41_arg0.properties.memberListState = f41_arg1.memberListState
	f41_arg0.properties.memberSlot = f41_arg1.memberSlot
	f41_arg0.properties.team = f41_arg1.team
end

function buildMemberButtonRank( f42_arg0, f42_arg1, f42_arg2, f42_arg3 )
	local self = LUI.UIText.new()
	self.id = "member_button_rank_text_id"
	self.properties = {
		memberListState = f42_arg0,
		memberSlot = f42_arg1,
		team = f42_arg2
	}
	self:registerAnimationState( "default", {
		topAnchor = false,
		bottomAnchor = false,
		leftAnchor = true,
		rightAnchor = false,
		top = -1 * CoD.TextSettings.SmallFont.Height * 0.5,
		bottom = CoD.TextSettings.SmallFont.Height * 0.5,
		left = 0,
		right = 32,
		font = CoD.TextSettings.SmallFont.Font,
		alignment = LUI.Alignment.Center,
		red = 1,
		green = 1,
		blue = 1,
		alpha = 1
	} )
	self:registerAnimationState( "hidden", {
		alpha = 0
	} )
	self:registerAnimationState( "highlighted", {
		red = 0,
		green = 0,
		blue = 0,
		alpha = 1
	} )
	self:animateToState( "default" )
	if not f0_local0( f42_arg0, f42_arg1, f42_arg2 ) then
		self:animateToState( "hidden", 0 )
	end
	self:setText( f42_arg3 )
	self:registerEventHandler( "button_over", MBh.DoMultiple( {
		HandleLobbyMemberUpdateSetFocused,
		HandleLobbyMemberUpdateRankVisibility
	} ) )
	self:registerEventHandler( "button_up", MBh.DoMultiple( {
		HandleLobbyMemberUpdateSetNotFocused,
		HandleLobbyMemberUpdateRankVisibility
	} ) )
	self:registerEventHandler( "lobby_member_update_content", MBh.DoMultiple( {
		HandleLobbyMemberUpdateRankProperties,
		HandleLobbyMemberUpdateRank,
		HandleLobbyMemberUpdateRankVisibility
	} ) )
	return self
end

function buildMemberButtonRankIcon( f43_arg0, f43_arg1, f43_arg2, f43_arg3 )
	local self = LUI.UIImage.new()
	self.id = "member_button_rank_icon_id"
	self.properties = {
		memberListState = f43_arg0,
		memberSlot = f43_arg1,
		team = f43_arg2
	}
	self:registerAnimationState( "default", {
		topAnchor = true,
		bottomAnchor = true,
		leftAnchor = true,
		rightAnchor = false,
		top = 0,
		bottom = 0,
		left = 32,
		right = 58,
		red = 1,
		green = 1,
		blue = 1,
		alpha = 1
	} )
	self:registerAnimationState( "hidden", {
		alpha = 0
	} )
	self:animateToState( "default" )
	self:setImage( f43_arg3 )
	local f43_local1 = Lobby.ShowMemberInfo( f43_arg0, f43_arg1, f43_arg2 )
	if f43_local1 then
		f43_local1 = not LobbyMemberIsBot( f43_arg0, f43_arg1, f43_arg2 )
	end
	if not f43_local1 then
		self:animateToState( "hidden", 0 )
	end
	self:registerEventHandler( "lobby_member_update_content", MBh.DoMultiple( {
		HandleLobbyMemberUpdateRankIconProperties,
		HandleLobbyMemberUpdateRankIcon
	} ) )
	return self
end

function buildMemberButtonBotDifficultyIcon( f44_arg0, f44_arg1, f44_arg2, f44_arg3 )
	local self = LUI.UIImage.new()
	self.id = "member_button_bot_difficulty_icon_id"
	self.properties = {
		memberListState = f44_arg0,
		memberSlot = f44_arg1,
		team = f44_arg2
	}
	self:registerAnimationState( "default", {
		topAnchor = true,
		bottomAnchor = true,
		leftAnchor = true,
		rightAnchor = false,
		top = 5,
		bottom = -5,
		left = 0,
		right = 48,
		red = 1,
		green = 1,
		blue = 1,
		alpha = 1
	} )
	self:registerAnimationState( "hidden", {
		alpha = 0
	} )
	self:animateToState( "default" )
	self:setImage( f44_arg3 )
	if not LobbyMemberIsBot( f44_arg0, f44_arg1, f44_arg2 ) then
		self:animateToState( "hidden", 0 )
	end
	self:registerEventHandler( "lobby_member_update_content", MBh.DoMultiple( {
		HandleLobbyMemberUpdateBotDifficultyIconProperties,
		HandleLobbyMemberUpdateBotDifficultyIcon
	} ) )
	return self
end

function buildMemberButtonRankElement( f45_arg0, f45_arg1, f45_arg2, f45_arg3, f45_arg4, f45_arg5, f45_arg6 )
	local self = LUI.UIElement.new()
	self.id = "member_button_rank_element_id"
	self:registerAnimationState( "default", {
		topAnchor = true,
		bottomAnchor = true,
		leftAnchor = true,
		rightAnchor = false,
		top = 0,
		bottom = 0,
		left = 0,
		right = 48,
		alpha = 1
	} )
	self:registerAnimationState( "hidden", {
		alpha = 0
	} )
	self:animateToState( "default" )
	if f45_arg6 and not Engine.IsAliensMode() then
		self:animateToState( "hidden" )
	end
	self:addElement( buildMemberButtonRank( f45_arg0, f45_arg1, f45_arg2, f45_arg3 ) )
	self:addElement( buildMemberButtonRankIcon( f45_arg0, f45_arg1, f45_arg2, f45_arg4 ) )
	self:addElement( buildMemberButtonBotDifficultyIcon( f45_arg0, f45_arg1, f45_arg2, f45_arg5 ) )
	return self
end

function buildMemberButtonClantag( f46_arg0, f46_arg1, f46_arg2, f46_arg3, f46_arg4 )
	local self = LUI.UIText.new()
	self.id = "member_button_clantag_id"
	self.properties = {
		memberListState = f46_arg0,
		memberSlot = f46_arg1,
		team = f46_arg2
	}
	self:registerAnimationState( "default", {
		topAnchor = false,
		bottomAnchor = false,
		leftAnchor = true,
		rightAnchor = false,
		top = -1 * CoD.TextSettings.SmallFont.Height * 0.5,
		bottom = CoD.TextSettings.SmallFont.Height * 0.5,
		left = 60,
		right = 135,
		red = 0.5,
		green = 0.5,
		blue = 0.5,
		alpha = 1,
		font = CoD.TextSettings.SmallFont.Font,
		alignment = LUI.Alignment.Center
	} )
	self:registerAnimationState( "hidden", {
		alpha = 0
	} )
	self:registerAnimationState( "highlighted", {
		red = 0,
		green = 0,
		blue = 0,
		alpha = 1
	} )
	self:animateToState( "default", 0 )
	local f46_local1 = LobbyMemberIsBot( f46_arg0, f46_arg1, f46_arg2 )
	if not (Lobby.ShowMemberInfo( f46_arg0, f46_arg1, f46_arg2 ) or f46_local1) or not f46_arg3 then
		self:animateToState( "hidden", 0 )
	end
	if f46_local1 then
		self:setText( "BOT" )
	else
		self:setText( f46_arg4 )
	end
	self:registerEventHandler( "button_over", MBh.DoMultiple( {
		HandleLobbyMemberUpdateSetFocused,
		HandleLobbyMemberUpdateClantag
	} ) )
	self:registerEventHandler( "button_up", MBh.DoMultiple( {
		HandleLobbyMemberUpdateSetNotFocused,
		HandleLobbyMemberUpdateClantag
	} ) )
	self:registerEventHandler( "lobby_member_update_content", MBh.DoMultiple( {
		HandleLobbyMemberUpdateClantagProperties,
		HandleLobbyMemberUpdateClantag
	} ) )
	return self
end

function buildMemberButtonReadyUpIndicator( f47_arg0, f47_arg1, f47_arg2, f47_arg3 )
	local f47_local0 = -75
	local f47_local1 = 6
	local f47_local2 = 16
	local f47_local3 = 16
	local self = LUI.UIElement.new()
	self:registerAnimationState( "default", {
		topAnchor = true,
		bottomAnchor = false,
		leftAnchor = true,
		rightAnchor = false,
		top = f47_local1,
		bottom = f47_local1 + f47_local3,
		left = f47_local0,
		right = f47_local0 + f47_local2
	} )
	self:animateToState( "default", 0 )
	local f47_local5 = GetReadyUpIndicatorStateString( f47_arg0, f47_arg1, f47_arg2 )
	local f47_local6 = LUI.UIImage.new()
	f47_local6.id = "member_button_readyupindicatorframe_id"
	f47_local6.properties = {
		memberListState = f47_arg0,
		memberSlot = f47_arg1,
		team = f47_arg2
	}
	f47_local6:registerAnimationState( "ready", {
		topAnchor = true,
		bottomAnchor = true,
		leftAnchor = true,
		rightAnchor = true,
		top = 0,
		bottom = 0,
		left = 0,
		right = 0,
		red = 0.5,
		green = 0.5,
		blue = 0.5,
		alpha = 1,
		alignment = LUI.Alignment.Center,
		material = RegisterMaterial( "box_empty" )
	} )
	f47_local6:registerAnimationState( "notready", {
		topAnchor = true,
		bottomAnchor = true,
		leftAnchor = true,
		rightAnchor = true,
		top = 0,
		bottom = 0,
		left = 0,
		right = 0,
		red = 0.5,
		green = 0.5,
		blue = 0.5,
		alpha = 1,
		alignment = LUI.Alignment.Center,
		material = RegisterMaterial( "box_empty" )
	} )
	f47_local6:registerAnimationState( "hidden", {
		alpha = 0
	} )
	f47_local6:animateToState( f47_local5, 0 )
	f47_local6:registerEventHandler( "lobby_member_update_content", MBh.DoMultiple( {
		HandleLobbyMemberUpdateReadyUpFlagProperties,
		HandleLobbyMemberUpdateReadyUpFlag
	} ) )
	self:addElement( f47_local6 )
	local f47_local7 = LUI.UIImage.new()
	f47_local7.id = "member_button_readyupindicatorcenter_id"
	f47_local7.properties = {
		memberListState = f47_arg0,
		memberSlot = f47_arg1,
		team = f47_arg2
	}
	f47_local7:registerAnimationState( "ready", {
		topAnchor = true,
		bottomAnchor = true,
		leftAnchor = true,
		rightAnchor = true,
		top = 4,
		bottom = -4,
		left = 4,
		right = -4,
		red = 1,
		green = 0.24,
		blue = 0.04,
		alpha = 0.85,
		alignment = LUI.Alignment.Center,
		material = RegisterMaterial( "white" )
	} )
	f47_local7:registerAnimationState( "notready", {
		topAnchor = true,
		bottomAnchor = true,
		leftAnchor = true,
		rightAnchor = true,
		top = 4,
		bottom = -4,
		left = 4,
		right = -4,
		red = 0.5,
		green = 0.5,
		blue = 0.5,
		alpha = 0,
		alignment = LUI.Alignment.Center
	} )
	f47_local7:registerAnimationState( "hidden", {
		alpha = 0
	} )
	f47_local7:animateToState( f47_local5, 0 )
	f47_local7:registerEventHandler( "lobby_member_update_content", MBh.DoMultiple( {
		HandleLobbyMemberUpdateReadyUpFlagProperties,
		HandleLobbyMemberUpdateReadyUpFlag
	} ) )
	self:addElement( f47_local7 )
	return self
end

function buildMemberButtonGamertag( f48_arg0, f48_arg1, f48_arg2, f48_arg3 )
	local self = LUI.UIText.new()
	self.id = "member_button_gamertag_id"
	self.properties = {
		memberListState = f48_arg0,
		memberSlot = f48_arg1,
		team = f48_arg2,
		isFocused = false
	}
	self:registerAnimationState( "default", {
		topAnchor = false,
		bottomAnchor = false,
		leftAnchor = true,
		rightAnchor = false,
		top = -1 * CoD.TextSettings.SmallFont.Height * 0.5,
		bottom = CoD.TextSettings.SmallFont.Height * 0.5,
		left = 145,
		right = 445,
		font = CoD.TextSettings.SmallFont.Font,
		red = 1,
		green = 1,
		blue = 1
	} )
	self:registerAnimationState( "local", {
		red = Engine.IsAliensMode() and Colors.alien_frontend_hilite.r or Colors.frontend_hilite.r,
		green = Engine.IsAliensMode() and Colors.alien_frontend_hilite.g or Colors.frontend_hilite.g,
		blue = Engine.IsAliensMode() and Colors.alien_frontend_hilite.b or Colors.frontend_hilite.b
	} )
	self:registerAnimationState( "party", {
		red = Lobby.Swatch.party_member.r,
		green = Lobby.Swatch.party_member.g,
		blue = Lobby.Swatch.party_member.b
	} )
	self:registerAnimationState( "highlighted", {
		red = 0,
		green = 0,
		blue = 0
	} )
	self:animateToState( "default", 0 )
	if not LobbyMemberIsBot( f48_arg0, f48_arg1, f48_arg2 ) then
		local f48_local1 = Lobby.IsMemberALocalPlayer( f48_arg0, f48_arg1, f48_arg2 )
		local f48_local2 = Lobby.IsMemberInPrivateParty( f48_arg0, f48_arg1, f48_arg2 )
		if f48_local1 then
			self:animateToState( "local", 0 )
		elseif f48_local2 then
			self:animateToState( "party", 0 )
		end
	end
	self:setText( f48_arg3 )
	self:registerEventHandler( "lobby_member_update_content", MBh.DoMultiple( {
		HandleLobbyMemberUpdateGamertagProperties,
		HandleLobbyMemberUpdateGamertag,
		HandleLobbyMemberUpdateGamertagColor
	} ) )
	self:registerEventHandler( "button_over", MBh.DoMultiple( {
		HandleLobbyMemberUpdateSetFocused,
		HandleLobbyMemberUpdateGamertagColor
	} ) )
	self:registerEventHandler( "button_up", MBh.DoMultiple( {
		HandleLobbyMemberUpdateSetNotFocused,
		HandleLobbyMemberUpdateGamertagColor
	} ) )
	return self
end

function buildMemberButtonScore( f49_arg0, f49_arg1, f49_arg2, f49_arg3 )
	local self = LUI.UIText.new()
	self.id = "member_button_score_id"
	self.properties = {
		memberListState = f49_arg0,
		memberSlot = f49_arg1,
		team = f49_arg2
	}
	self:registerAnimationState( "default", {
		topAnchor = false,
		bottomAnchor = false,
		leftAnchor = true,
		rightAnchor = false,
		top = -1 * CoD.TextSettings.SmallFont.Height * 0.5,
		bottom = CoD.TextSettings.SmallFont.Height * 0.5,
		left = 460,
		right = 540,
		font = CoD.TextSettings.SmallFont.Font,
		alignment = LUI.Alignment.Right,
		red = 1,
		green = 1,
		blue = 1,
		alpha = 1
	} )
	self:registerAnimationState( "hidden", {
		alpha = 0
	} )
	self:registerAnimationState( "highlighted", {
		red = 0,
		green = 0,
		blue = 0,
		alpha = 1
	} )
	self:animateToState( "default" )
	if not f0_local1( f49_arg0, f49_arg1, f49_arg2 ) then
		self:animateToState( "hidden" )
	end
	self:setText( f49_arg3 )
	self:registerEventHandler( "button_over", MBh.DoMultiple( {
		HandleLobbyMemberUpdateSetFocused,
		HandleLobbyMemberUpdateScoreVisibility
	} ) )
	self:registerEventHandler( "button_up", MBh.DoMultiple( {
		HandleLobbyMemberUpdateSetNotFocused,
		HandleLobbyMemberUpdateScoreVisibility
	} ) )
	self:registerEventHandler( "lobby_member_update_content", MBh.DoMultiple( {
		HandleLobbyMemberUpdateScoreProperties,
		HandleLobbyMemberUpdateScore,
		HandleLobbyMemberUpdateScoreVisibility
	} ) )
	return self
end

function buildMemberButtonContent( f50_arg0, f50_arg1, f50_arg2, f50_arg3, f50_arg4, f50_arg5, f50_arg6, f50_arg7, f50_arg8, f50_arg9, f50_arg10, f50_arg11 )
	local self = LUI.UIElement.new()
	self.id = "member_button_content_id"
	self:registerAnimationState( "default", {
		topAnchor = true,
		bottomAnchor = true,
		leftAnchor = true,
		rightAnchor = true,
		top = 0,
		bottom = 0,
		left = 0,
		right = 0,
		alpha = 1,
		spacing = 3
	} )
	self:registerAnimationState( "glow", {
		alpha = 0.65
	} )
	self:registerAnimationState( "disabled", {
		alpha = 0
	} )
	self:animateToState( "default" )
	self:registerEventHandler( "button_disable", MBh.AnimateToState( "disabled", 0 ) )
	self:registerEventHandler( "button_up", MBh.AnimateToState( "default", 0 ) )
	self:registerEventHandler( "button_over", MBh.AnimateToState( "default", 0 ) )
	self:addElement( buildMemberButtonRankElement( f50_arg0, f50_arg1, f50_arg2, f50_arg3, f50_arg4, f50_arg5, f50_arg11 ) )
	if Engine.IsAliensMode() then
		self:addElement( buildMemberButtonReadyUpIndicator( f50_arg0, f50_arg1, f50_arg2, f50_arg10 ) )
	end
	self:addElement( buildMemberButtonClantag( f50_arg0, f50_arg1, f50_arg2, f50_arg6, f50_arg7 ) )
	self:addElement( buildMemberButtonGamertag( f50_arg0, f50_arg1, f50_arg2, f50_arg8 ) )
	self:addElement( buildMemberButtonScore( f50_arg0, f50_arg1, f50_arg2, f50_arg9 ) )
	return self
end

function buildMemberButtonTeamBorder( f51_arg0, f51_arg1, f51_arg2, f51_arg3, f51_arg4 )
	local self = LUI.UIImage.new()
	self.properties = {
		memberListState = f51_arg0,
		team = f51_arg2,
		isActiveMemberSlot = f51_arg3
	}
	self:registerAnimationState( "default", {
		topAnchor = true,
		bottomAnchor = true,
		leftAnchor = true,
		rightAnchor = true,
		top = 0,
		bottom = 0,
		left = 0,
		right = 0,
		material = RegisterMaterial( f51_arg4 ),
		red = 1,
		green = 1,
		blue = 1,
		alpha = 0
	} )
	self:registerAnimationState( "team_friendly", {
		red = Lobby.Swatch.allies.r,
		green = Lobby.Swatch.allies.g,
		blue = Lobby.Swatch.allies.b,
		alpha = 1
	} )
	self:registerAnimationState( "team_enemy", {
		red = Lobby.Swatch.axis.r,
		green = Lobby.Swatch.axis.g,
		blue = Lobby.Swatch.axis.b,
		alpha = 1
	} )
	self:animateToState( "default", 0 )
	local f51_local1 = LobbyMemberGetLocalPlayerTeam( f51_arg0 )
	if f51_arg0 == Lobby.MemberListStates.Teams and f51_arg2 == otherTeamLookup[f51_local1] then
		self:animateToState( "team_enemy", 0 )
	elseif f51_arg0 == Lobby.MemberListStates.Teams and f51_arg2 == f51_local1 then
		self:animateToState( "team_friendly", 0 )
	end
	self:registerEventHandler( "button_disable", MBh.AnimateToState( "default", 0 ) )
	self:registerEventHandler( "button_up", HandleLobbyMemberSetBackgroundBorder )
	self:registerEventHandler( "lobby_member_update_bg", MBh.DoMultiple( {
		HandleLobbyMemberUpdateBackgroundProperties,
		HandleLobbyMemberSetBackgroundBorder
	} ) )
	return self
end

function buildMemberButtonHilite( f52_arg0 )
	local self = LUI.UIImage.new()
	self:registerAnimationState( "default", {
		topAnchor = true,
		bottomAnchor = true,
		leftAnchor = true,
		rightAnchor = true,
		top = 0,
		bottom = 0,
		left = 0,
		right = 0,
		material = RegisterMaterial( f52_arg0 ),
		red = 1,
		green = 1,
		blue = 1,
		alpha = 1
	} )
	self:registerAnimationState( "fade", {
		alpha = 0.7
	} )
	self:animateToState( "default", 0 )
	local f52_local1 = MBh.AnimateLoop( {
		{
			"fade",
			1200,
			true,
			true
		},
		{
			"default",
			1200,
			true,
			true
		}
	} )
	f52_local1( self )
	return self
end

f0_local2 = function ( f53_arg0, f53_arg1 )
	local f53_local0 = f53_arg0:getChildById( f53_arg1 )
	if f53_local0 then
		f53_local0:close()
	end
end

local f0_local3 = function ( f54_arg0, f54_arg1, f54_arg2, f54_arg3 )
	if f54_arg0:getChildById( f54_arg2 ) then
		return 
	end
	local f54_local0 = f54_arg0:getChildById( f54_arg1 )
	local f54_local1 = buildMemberButtonHilite( f54_arg3 )
	f54_local1.id = f54_arg2
	if f54_local0 then
		LUI.UIElement.addElementAfter( f54_local1, f54_local0 )
	else
		f54_arg0:addElement( f54_local1 )
	end
end

function HandleLobbyMemberMidButtonUp( f55_arg0, f55_arg1 )
	f0_local2( f55_arg0, "member_button_mid_bg_hilite_id" )
end

function HandleLobbyMemberMidButtonOver( f56_arg0, f56_arg1 )
	f0_local3( f56_arg0, "member_button_mid_bg_id", "member_button_mid_bg_hilite_id", Engine.IsAliensMode() and "box_alien_lobby_name_mid_f" or "box_lobby_name_f_mid" )
end

function HandleLobbyMemberLeftButtonUp( f57_arg0, f57_arg1 )
	f0_local2( f57_arg0, "member_button_lt_bg_hilite_id" )
end

function HandleLobbyMemberLeftButtonOver( f58_arg0, f58_arg1 )
	f0_local3( f58_arg0, "member_button_lt_bg_id", "member_button_lt_bg_hilite_id", Engine.IsAliensMode() and "box_alien_lobby_name_lt_f" or "box_lobby_name_f_lt" )
end

function HandleLobbyMemberRightButtonUp( f59_arg0, f59_arg1 )
	f0_local2( f59_arg0, "member_button_rt_bg_hilite_id" )
end

function HandleLobbyMemberRightButtonOver( f60_arg0, f60_arg1 )
	f0_local3( f60_arg0, "member_button_rt_bg_id", "member_button_rt_bg_hilite_id", Engine.IsAliensMode() and "box_alien_lobby_name_rt_f" or "box_lobby_name_f_rt" )
end

function HandleLobbyMemberSetBackground( f61_arg0, f61_arg1 )
	if f61_arg0.properties.isActiveMemberSlot then
		f61_arg0:animateToState( "default", 0 )
	else
		f61_arg0:animateToState( "disabled", 0 )
	end
end

function HandleLobbyMemberSetBackgroundBorder( f62_arg0, f62_arg1 )
	local f62_local0 = f62_arg0.properties
	local f62_local1 = LobbyMemberGetLocalPlayerTeam( f62_local0.memberListState )
	if f62_local0.memberListState == Lobby.MemberListStates.Teams and f62_local0.team == otherTeamLookup[f62_local1] then
		f62_arg0:animateToState( "team_enemy", 0 )
	elseif f62_local0.memberListState == Lobby.MemberListStates.Teams and f62_local0.team == f62_local1 then
		f62_arg0:animateToState( "team_friendly", 0 )
	else
		f62_arg0:animateToState( "default", 0 )
	end
end

function HandleLobbyMemberUpdateBackgroundProperties( f63_arg0, f63_arg1 )
	f63_arg0.properties.memberListState = f63_arg1.memberListState
	f63_arg0.properties.team = f63_arg1.team
	f63_arg0.properties.isActiveMemberSlot = f63_arg1.isActiveMemberSlot
end

function HandleUpdatePerkIcon( f64_arg0, f64_arg1, f64_arg2, f64_arg3 )
	local f64_local0 = LUI.mp_menus.Aliens
	local f64_local1 = Lobby.GetMemberPerk( f64_arg1.memberSlot, f64_arg2 )
	if f64_local1 then
		local f64_local2 = f64_local0.GetFieldForPerk( f64_local1, f64_local0.AlienPerks.Cols.Icon )
		if f64_local2 and f64_local2 ~= "" then
			f64_arg0:setImage( RegisterMaterial( f64_local2 ) )
			if f64_arg3 and Engine.InLobby() and LUI.mp_menus.Aliens.IsChaosEnabled() then
				f64_arg0:animateToState( "collapsed" )
			else
				f64_arg0:animateToState( "visible" )
			end
		else
			f64_arg0:animateToState( "default" )
		end
	else
		f64_arg0:animateToState( "default" )
	end
end

function HandleUpdateAbilityIcon( f65_arg0, f65_arg1, f65_arg2, f65_arg3 )
	local f65_local0 = LUI.mp_menus.Aliens
	local f65_local1 = Lobby.GetMemberAbility( f65_arg1.memberSlot, f65_arg2 )
	local f65_local2 = LUI.mp_menus.Aliens.IsChaosEnabled()
	if f65_local1 then
		local f65_local3 = f65_local0.GetFieldForAbility( f65_local1, f65_local0.AlienAbilities.Cols.Icon )
		if f65_local3 and f65_local3 ~= "" then
			if f65_local2 and f65_local3 == "alien_icon_nerf_9" and f65_arg2 == f65_local0.AlienAbilities.Left then
				f65_local3 = "alien_icon_manned_turret"
			elseif f65_local2 and f65_local3 == "alien_icon_nerf_9" and f65_arg2 == f65_local0.AlienAbilities.Right then
				f65_local3 = "alien_icon_ims"
			end
			f65_arg0:setImage( RegisterMaterial( f65_local3 ) )
			if f65_arg3 and Engine.InLobby() and LUI.mp_menus.Aliens.IsChaosEnabled() then
				f65_arg0:animateToState( "collapsed" )
			else
				f65_arg0:animateToState( "visible" )
			end
		else
			f65_arg0:animateToState( "default" )
		end
	else
		f65_arg0:animateToState( "default" )
	end
end

function HandleLobbyMemberUpdateSplitscreenPromptAliens( f66_arg0, f66_arg1 )
	local f66_local0 = f66_arg0.properties
	if LobbyMemberIsSplitscreenPrompt( f66_arg1.memberListState or f66_local0.memberListState, f66_local0.memberIndex ) or f66_arg1.isActiveMemberSlot == false then
		f66_arg0:animateToState( "default", 0 )
	else
		f66_arg0:animateToState( "visible", 0 )
	end
end

function DispatchSvSPlayercardUpdate( f67_arg0, f67_arg1 )
	if not UsingSvSPlayercards( f67_arg0.properties.memberListState ) then
		return 
	end
	local f67_local0 = f67_arg0:getParent()
	if f67_local0 then
		f67_local0:processEvent( {
			name = "update_svs_playercards",
			controller = f67_arg1.controller
		} )
	end
end

function UpdateSvSPlayercard( f68_arg0, f68_arg1 )
	if f68_arg0.properties.memberElement.properties.isActiveMemberSlot then
		f68_arg0:animateToState( "active", 0 )
		local f68_local0 = f68_arg0.properties.memberElement
		local f68_local1 = f68_local0.properties.memberListState
		local f68_local2 = f68_local0.properties.memberSlot
		local f68_local3 = f68_local0.properties.team
		local f68_local4 = Lobby.GetMemberName( f68_local1, f68_local2, f68_local3 ) or ""
		local f68_local5 = Lobby.GetMemberRank( f68_local1, f68_local2, f68_local3 ) or 0
		local f68_local6 = Lobby.GetMemberPrestigeLevel( f68_local1, f68_local2, f68_local3 ) or 0
		local f68_local7 = Lobby.GetMemberPatch( f68_local1, f68_local2, f68_local3 ) or 0
		local f68_local8 = Lobby.GetMemberPatchbacking( f68_local1, f68_local2, f68_local3 ) or 0
		f68_arg0:dispatchEventToChildren( {
			name = "update_playercard",
			gamertag = f68_local4,
			rank = f68_local5,
			prestige = f68_local6,
			patchEmblem = f68_local7,
			background = Lobby.GetMemberBackground( f68_local1, f68_local2, f68_local3 ) or 0,
			clantag = Lobby.GetMemberClanTag( f68_local1, f68_local2, f68_local3 ) or ""
		} )
	else
		f68_arg0:animateToState( "default", 0 )
	end
end

function SqauadVsSquadElementChildFeeder( f69_arg0 )
	local f69_local0 = f69_arg0.memberElement
	local f69_local1 = f69_local0.properties.memberListState
	local f69_local2 = f69_local0.properties.memberSlot
	local f69_local3 = f69_local0.properties.team
	local f69_local4 = {
		[#f69_local4 + 1] = {
			type = "UIImage",
			id = "svs_member_list_bg_id",
			states = {
				default = CoD.ColorizeState( Colors.black, {
					material = RegisterMaterial( "white" ),
					leftAnchor = true,
					rightAnchor = true,
					topAnchor = true,
					bottomAnchor = false,
					left = -28,
					right = 23,
					top = 0,
					bottom = 170,
					alpha = 0.2
				} )
			}
		},
		[#f69_local4 + 1] = {
			type = "UIElement",
			id = "svs_memberlist_playercard_container_id",
			states = {
				default = {
					topAnchor = true,
					bottomAnchor = false,
					leftAnchor = true,
					rightAnchor = false,
					top = 0,
					bottm = 0,
					left = 25,
					right = 0
				}
			},
			children = {
				{
					type = "playercard",
					id = "svs_member_list_playercard_id",
					states = {
						default = {
							topAnchor = true,
							bottomAnchor = false,
							leftAnchor = true,
							rightAnchor = false,
							top = 25,
							left = 25,
							height = 90,
							width = 100
						}
					},
					properties = {
						gamertag = Lobby.GetMemberName( f69_local1, f69_local2, f69_local3 ) or "",
						rank = Lobby.GetMemberRank( f69_local1, f69_local2, f69_local3 ) or 0,
						prestige = Lobby.GetMemberPrestigeLevel( f69_local1, f69_local2, f69_local3 ) or 0,
						patchEmblem = Lobby.GetMemberPatch( f69_local1, f69_local2, f69_local3 ) or 0,
						patchbacking = Lobby.GetMemberPatchbacking( f69_local1, f69_local2, f69_local3 ) or 0,
						background = Lobby.GetMemberBackground( f69_local1, f69_local2, f69_local3 ) or 0,
						clantag = Lobby.GetMemberClanTag( f69_local1, f69_local2, f69_local3 ) or ""
					}
				}
			}
		}
	}
	return f69_local4
end

function BuildSquadVsSquadListElement( f70_arg0, f70_arg1, f70_arg2 )
	return {
		type = "UIElement",
		id = "svs_member_list_element_id" .. f70_arg1,
		focusable = false,
		states = {
			default = {
				leftAnchor = true,
				rightAnchor = true,
				topAnchor = true,
				bottomAnchor = false,
				left = 0,
				right = -10,
				top = 0,
				bottom = 115,
				alpha = 0
			},
			active = {
				alpha = 1
			}
		},
		properties = {
			memberElement = f70_arg0
		},
		handlers = {
			menu_create = UpdateSvSPlayercard,
			update_svs_playercards = UpdateSvSPlayercard
		},
		childrenFeeder = SqauadVsSquadElementChildFeeder
	}
end

function MemberListFeeder( f71_arg0 )
	local f71_local0 = {}
	assert( f71_arg0.memberListState, "Member list needs initial state" )
	local f71_local1 = f71_arg0.isPublicLobby
	local f71_local2 = f71_arg0.isPrivateLobby
	local f71_local3 = LobbyMemberListGetState( f71_arg0.memberListState )
	local f71_local4 = Engine.IsAliensMode() and 4 or Lobby.MaxMemberListSlots
	for f71_local5 = 1, f71_local4, 1 do
		local f71_local8 = LobbyMemberGetSlot( f71_local3, f71_local5 )
		local f71_local9 = LobbyMemberGetTeam( f71_local3, f71_local5 )
		local f71_local10
		if not f71_arg0.delayMemberList or f71_local5 <= 1 then
			f71_local10 = Lobby.IsActiveMemberSlot( f71_local5 - 1 )
			if not f71_local10 then
			
			else
				local f71_local11 = f71_local10
				local f71_local12 = Engine.IsAliensMode()
				if f71_local12 then
					f71_local12 = f71_local11 and Lobby.GetMemberReadyUpFlag( f71_local3, f71_local8, f71_local9 )
				end
				local f71_local13
				if f71_local10 then
					f71_local13 = Lobby.GetMemberName( f71_local3, f71_local8, f71_local9 )
					if not f71_local13 then
					
					else
						local f71_local14
						if f71_local10 then
							f71_local14 = Lobby.GetMemberStat( f71_local3, f71_local8, f71_local9, Lobby.MemberStatTypes.Score )
							if not f71_local14 then
							
							else
								local f71_local15 = nil
								if Engine.IsAliensMode() then
									if f71_local10 then
										local f71_local16 = Lobby.GetMemberAlienRank( f71_local3, f71_local8, f71_local9 )
									end
									f71_local15 = f71_local16 or 0
								else
									if f71_local10 then
										local f71_local17 = Lobby.GetMemberRank( f71_local3, f71_local8, f71_local9 )
									end
									f71_local15 = f71_local17 or 0
								end
								local f71_local18
								if f71_local10 then
									f71_local18 = Rank.GetRankDisplay( f71_local15, Engine.GetCurrentCoDPlayMode() )
									if not f71_local18 then
									
									else
										local f71_local19 = nil
										if Engine.IsAliensMode() then
											if f71_local10 then
												local f71_local20 = Lobby.GetMemberAlienPrestigeLevel( f71_local3, f71_local8, f71_local9 )
											end
											f71_local19 = f71_local20 or 0
										else
											if f71_local10 then
												local f71_local21 = Lobby.GetMemberPrestigeLevel( f71_local3, f71_local8, f71_local9 )
											end
											f71_local19 = f71_local21 or 0
										end
										local f71_local22
										if f71_local10 then
											f71_local22 = Rank.GetRankIcon( f71_local15, f71_local19, Engine.GetCurrentCoDPlayMode() )
											if not f71_local22 then
											
											else
												if not f71_local10 or not Lobby.GetMemberBotDifficulty( f71_local3, f71_local8, f71_local9 ) then
													local f71_local23 = 1
												end
												local f71_local24 = "white"
												local f71_local25 = false
												local f71_local26 = ""
												if f71_local10 and Lobby.HasMemberClanTag( f71_local3, f71_local8, f71_local9 ) then
													f71_local26 = Lobby.GetMemberClanTag( f71_local3, f71_local8, f71_local9 )
													f71_local25 = true
												end
												local f71_local27 = LobbyMemberIsSplitscreenPrompt( f71_local3, f71_local5 )
												local f71_local28
												if f71_local10 then
													f71_local28 = Lobby.IsMemberALocalPlayer( f71_local3, f71_local8, f71_local9 )
													if not f71_local28 then
													
													else
														local f71_local29 = {
															type = "member_button",
															properties = {
																isPublicLobby = f71_local1,
																isPrivateLobby = f71_local2,
																memberListState = f71_local3,
																memberIndex = f71_local5,
																memberSlot = f71_local8,
																team = f71_local9,
																isActiveMemberSlot = f71_local10,
																memberRank = f71_local18,
																memberRankIcon = RegisterMaterial( f71_local22 ),
																memberBotDifficultyIcon = RegisterMaterial( f71_local24 ),
																memberReadyUpFlag = f71_local12,
																gamerTag = f71_local13,
																score = f71_local14,
																hasClanTag = f71_local25,
																clanTag = f71_local26,
																isSplitscreenPrompt = f71_local27,
																isLocalMember = f71_local28
															}
														}
														if LobbyMemberButtonShouldBeDisabled( f71_local3, f71_local5, f71_local10 ) then
															f71_local29.disabled = true
														end
														if not f71_local10 or f71_local27 then
															f71_local29.focusable = false
														end
														if UsingSvSPlayercards( f71_local3 ) and f71_local5 <= 2 then
															f71_local0[#f71_local0 + 1] = BuildSquadVsSquadListElement( f71_local29, f71_local5, f71_local10 )
														end
														f71_local29.id = "member_" .. f71_local5
														f71_local0[#f71_local0 + 1] = f71_local29
													end
												end
												f71_local28 = false
											end
										end
										f71_local22 = "white"
									end
								end
								f71_local18 = ""
							end
						end
						f71_local14 = ""
					end
				end
				f71_local13 = ""
			end
		end
		f71_local10 = false
	end
	f71_local0[#f71_local0 + 1] = {
		type = "UITimer",
		id = "member_list_tmr",
		properties = {
			event = {
				name = "member_list_refresh",
				dispatchChildren = true
			},
			interval = Lobby.MemberListRefreshTime,
			disposable = false,
			broadcastToRoot = true
		}
	}
	return f71_local0
end

function GetSquadBackgroundSize( f72_arg0 )
	local f72_local0 = Lobby.MemberListSquadMemberHeight
	local f72_local1 = GetMemberListSpacing()
	local f72_local2 = 110
	local f72_local3 = SvS.MaxSquadSize * (f72_local0 + f72_local1)
	if f72_arg0 == Lobby.Teams.Axis then
		f72_local3 = f72_local3 + f72_local2 + f72_local1 * 2
	end
	return f72_local3
end

function UpdateLocalSquadHeader( f73_arg0, f73_arg1, f73_arg2, f73_arg3 )
	local f73_local0 = f73_arg2:getParent() == f73_arg0
	if f73_arg1 and not f73_local0 then
		LUI.UIElement.addElementBefore( f73_arg2, f73_arg3 )
	elseif not f73_arg1 and f73_local0 then
		f73_arg0:removeElement( f73_arg2 )
	end
end

function UpdateSquadHeaders( f74_arg0, f74_arg1 )
	f74_arg0.properties.memberListState = LobbyMemberListGetState( f74_arg0.properties.memberListState )
	if not f74_arg0.properties.localSquadHeader then
		return 
	end
	local f74_local0 = f74_arg0.properties.firstLocalSquadMember
	if f74_local0 then
		UpdateLocalSquadHeader( f74_arg0, true, f74_arg0.properties.localSquadHeader, f74_local0 )
	else
		UpdateLocalSquadHeader( f74_arg0, false, f74_arg0.properties.localSquadHeader )
	end
	local f74_local1 = f74_arg0.properties.firstOpposingSquadMember
	if f74_local1 and (f74_local1.properties.team ~= Lobby.Teams.Axis or not f74_local1.properties.isActiveMemberSlot) then
		f74_local1 = nil
		f74_arg0.properties.firstOpposingSquadMember = nil
	end
	if f74_arg0.properties and f74_arg0.properties.opposingSquadHeaderElements then
		if f74_local1 then
			for f74_local5, f74_local6 in ipairs( f74_arg0.properties.opposingSquadHeaderElements ) do
				UpdateLocalSquadHeader( f74_arg0, true, f74_local6, f74_local1 )
			end
		else
			for f74_local5, f74_local6 in ipairs( f74_arg0.properties.opposingSquadHeaderElements ) do
				UpdateLocalSquadHeader( f74_arg0, false, f74_local6 )
			end
		end
	end
end

function BuildSquadHeader( f75_arg0 )
	local self = LUI.UIElement.new( {
		leftAnchor = true,
		rightAnchor = true,
		topAnchor = true,
		bottomAnchor = false,
		left = -26,
		right = 10,
		top = 0,
		height = GenericTitleBarDims.TitleBarHeight + 3,
		alpha = 1
	} )
	local f75_local1 = LUI.MenuGenerics.generic_menu_titlebar( nil, {
		font = CoD.TextSettings.ExtraBigFont,
		title_bar_text = f75_arg0.text or "",
		title_bar_alignment = LUI.Alignment.Center,
		fill_alpha = 0.6
	} )
	f75_local1:registerEventHandler( "set_squad_header_text", function ( element, event )
		element:dispatchEventToChildren( {
			name = "update_title",
			title_text = Engine.Localize( "@LUA_MENU_SQUAD_LABEL", event.text )
		} )
	end )
	self:addElement( f75_local1 )
	local f75_local2 = LUI.MenuGenerics.generic_menu_background_withfade( {}, {
		top_offset = 0,
		shadow_alpha = 0,
		fill_alpha = 0.6
	} )
	local f75_local3 = f75_local2
	local f75_local4 = f75_local2.registerAnimationState
	local f75_local5 = "default"
	local f75_local6 = {
		topAnchor = true,
		bottomAnchor = false,
		leftAnchor = true,
		rightAnchor = true,
		top = GenericTitleBarDims.TitleBarHeight,
		left = 0,
		right = 0
	}
	local f75_local7 = GetSquadBackgroundSize
	local f75_local8 = f75_arg0.team
	if not f75_local8 then
		f75_local8 = Lobby.Teams.Free
	end
	f75_local6.height = f75_local7( f75_local8 )
	f75_local4( f75_local3, f75_local5, f75_local6 )
	f75_local2:animateToState( "default" )
	self:addElement( f75_local2 )
	return self
end

function BuildOpposingSquadHeaderElements()
	local f77_local0 = {
		[#f77_local0 + 1] = LUI.UIElement.new( {
			leftAnchor = true,
			rightAnchor = true,
			topAnchor = true,
			bottomAnchor = false,
			left = -55,
			right = 40,
			top = 0,
			bottom = 10,
			alpha = 0
		} ),
		[#f77_local0 + 1] = BuildSquadHeader( {
			text = "",
			team = Lobby.Teams.Axis
		} ),
		[#f77_local0 + 1] = LUI.UIElement.new( {
			leftAnchor = true,
			rightAnchor = true,
			topAnchor = true,
			bottomAnchor = false,
			left = 0,
			right = 0,
			top = 0,
			bottom = 5,
			alpha = 0
		} )
	}
	local self = LUI.UIElement.new( {
		topAnchor = true,
		bottomAnchor = false,
		leftAnchor = true,
		rightAnchor = false,
		top = 0,
		left = 45,
		height = 103,
		width = 512
	} )
	f77_local0[#f77_local0 + 1] = self
	self:addElement( LUI.Playercard.new( nil, {
		gamertag = "",
		clantag = "",
		rank = 0,
		prestige = 0,
		background = "0",
		patchEmblem = "0",
		patchShape = "0",
		patchScale = -0.15
	}, 0 ) )
	return f77_local0
end

function SetupSquadHeaders( f78_arg0, f78_arg1 )
	f78_arg0.properties.localSquadHeader = BuildSquadHeader( {
		team = Lobby.Teams.Allies
	} )
	f78_arg0.properties.opposingSquadHeaderElements = BuildOpposingSquadHeaderElements()
end

function UpdateSquadMember( f79_arg0, f79_arg1 )
	if f79_arg0.properties.memberListState ~= Lobby.MemberListStates.Teams and f79_arg0.properties.memberListState ~= Lobby.MemberListStates.Lobby then
		return 
	elseif f79_arg1.team == Lobby.Teams.Axis then
		if not f79_arg0.properties.firstOpposingSquadMember then
			local f79_local0 = Squad.GetEnemySquadName()
			local f79_local1 = Lobby.GetMemberName( f79_arg1.memberListState, f79_arg1.memberSlot, f79_arg1.team ) or ""
			local f79_local2 = Lobby.GetMemberRank( f79_arg1.memberListState, f79_arg1.memberSlot, f79_arg1.team ) or 0
			local f79_local3 = Lobby.GetMemberPrestigeLevel( f79_arg1.memberListState, f79_arg1.memberSlot, f79_arg1.team ) or 0
			local f79_local4 = Lobby.GetMemberPatch( f79_arg1.memberListState, f79_arg1.memberSlot, f79_arg1.team ) or 0
			local f79_local5 = Lobby.GetMemberPatchbacking( f79_arg1.memberListState, f79_arg1.memberSlot, f79_arg1.team ) or 0
			local f79_local6 = Lobby.GetMemberBackground( f79_arg1.memberListState, f79_arg1.memberSlot, f79_arg1.team ) or 0
			local f79_local7 = Lobby.GetMemberClanTag( f79_arg1.memberListState, f79_arg1.memberSlot, f79_arg1.team ) or ""
			if f79_arg0.properties and f79_arg0.properties.opposingSquadHeaderElements then
				for f79_local11, f79_local12 in ipairs( f79_arg0.properties.opposingSquadHeaderElements ) do
					f79_local12:processEvent( {
						name = "set_squad_header_text",
						text = Engine.MarkLocalized( f79_local0 )
					} )
					f79_local12:processEvent( {
						name = "update_playercard",
						gamertag = f79_local1,
						rank = f79_local2,
						prestige = f79_local3,
						patchEmblem = f79_local4,
						background = f79_local6,
						clantag = f79_local7
					} )
				end
			end
			f79_arg0.properties.firstOpposingSquadMember = f79_arg1.playerElement
		end
	else
		if not f79_arg0.properties.firstLocalSquadMember then
			local f79_local0 = Engine.GetFirstActiveController()
			f79_arg0.properties.firstLocalSquadMember = f79_arg1.playerElement
		end
		if f79_arg0.properties.localSquadHeader then
			f79_arg0.properties.localSquadHeader:processEvent( {
				name = "set_squad_header_text",
				text = Engine.MarkLocalized( Squad.GetHostSquadName() )
			} )
		end
	end
end

function member_list()
	return {
		type = "UIVerticalList",
		id = "member_list",
		focusable = true,
		states = {
			default = {
				alignment = LUI.Alignment.Top,
				leftAnchor = true,
				rightAnchor = false,
				topAnchor = true,
				bottomAnchor = false,
				left = 640,
				right = 1190,
				top = GenericMenuDims.menu_top + 26,
				bottom = GenericMenuDims.menu_bottom,
				spacing = Engine.IsAliensMode() and 6 or 2
			}
		},
		properties = {
			memberListState = MBh.Property( "memberListState" )
		},
		handlers = {
			update_squad_member = UpdateSquadMember,
			menu_create = SetupSquadHeaders,
			member_list_refresh = UpdateSquadHeaders,
			refocus_member_list = HandleRefocusMemberList,
			menu_close = function ( f81_arg0, f81_arg1 )
				f81_arg0.properties.firstLocalSquadMember = nil
				f81_arg0.properties.firstOpposingSquadMember = nil
			end
			
		},
		childrenFeeder = MemberListFeeder
	}
end

if Engine.IsConsoleGame() then
	function GetTalkIconState( f82_arg0, f82_arg1, f82_arg2 )
		if Lobby.IsMemberMuted( f82_arg0, f82_arg1, f82_arg2 ) then
			return "muted"
		elseif not Lobby.IsMemberHeadsetConnected( f82_arg0, f82_arg1, f82_arg2 ) then
			return "disabled"
		elseif Lobby.IsMemberTalking( f82_arg0, f82_arg1, f82_arg2 ) then
			return "talking"
		else
			return "quiet"
		end
	end
	
else
	function GetTalkIconState( f83_arg0, f83_arg1, f83_arg2 )
		if Lobby.IsMemberMuted( f83_arg0, f83_arg1, f83_arg2 ) then
			return "muted"
		elseif Lobby.IsMemberTalking( f83_arg0, f83_arg1, f83_arg2 ) then
			return "talking"
		else
			return "disabled"
		end
	end
	
end
function HandleTalkIconUpdate( f84_arg0, f84_arg1 )
	f84_arg0:animateToState( GetTalkIconState( f84_arg1.memberListState, f84_arg1.memberSlot, f84_arg1.team ), 0 )
end

function member_button( f85_arg0, f85_arg1, f85_arg2 )
	local f85_local0 = LUI.mp_menus.Aliens
	local f85_local1 = Lobby.MemberListMemberHeight
	if SvS.IsSvS() then
		f85_local1 = Lobby.MemberListSquadMemberHeight
	end
	local f85_local2 = 0.5
	local f85_local3 = Engine.IsAliensMode()
	local f85_local4 = f85_arg1.isPublicLobby or false
	local f85_local5 = f85_arg1.isPrivateLobby or false
	local f85_local6 = f85_arg1.isActiveMemberSlot or false
	local f85_local7 = f85_arg1.memberReadyUpFlag or false
	local f85_local8 = f85_arg1.gamerTag or ""
	local f85_local9 = f85_arg1.score or ""
	local f85_local10 = f85_arg1.clanTag or ""
	local f85_local11 = f85_arg1.hasClanTag or false
	local f85_local12 = f85_arg1.memberRank or ""
	local f85_local13 = f85_arg1.memberRankIcon
	if not f85_local13 then
		f85_local13 = RegisterMaterial( "white" )
	end
	local f85_local14 = f85_arg1.memberBotDifficultyIcon
	if not f85_local14 then
		f85_local14 = RegisterMaterial( "white" )
	end
	local f85_local15 = f85_arg1.memberListState
	if not f85_local15 then
		f85_local15 = Lobby.MemberListStates.None
	end
	local f85_local16 = f85_arg1.memberIndex or 1
	local f85_local17 = f85_arg1.memberSlot or 0
	local f85_local18 = f85_arg1.team
	if not f85_local18 then
		f85_local18 = Teams.free
	end
	local f85_local19 = f85_arg1.isSplitscreenPrompt or false
	local f85_local20 = f85_arg1.isLocalMember or false
	local self = LUI.UIButton.new()
	self.id = "member_button_id"
	self.properties = {
		isActiveMemberSlot = f85_local6,
		memberIndex = f85_local16,
		team = f85_local18,
		isPublicLobby = f85_local4,
		isPrivateLobby = f85_local5,
		isSplitscreenPrompt = f85_local19,
		memberListState = f85_local15
	}
	self:registerAnimationState( "default", {
		leftAnchor = true,
		rightAnchor = true,
		topAnchor = true,
		bottomAnchor = false,
		left = -55,
		right = 0,
		top = 0,
		bottom = f85_local1,
		alpha = 1
	} )
	self:registerAnimationState( "hidden", {
		alpha = 0
	} )
	if not (not f85_local6 and ((f85_local15 == Lobby.MemberListStates.Prelobby) or not Lobby.IsSearching() or f85_local16 > Lobby.GetMemberCount( f85_local15, Teams.free ) or HideEmptyLobbySlots( f85_local15 ))) or f85_local19 then
		self:animateToState( "default", 0 )
	else
		self:animateToState( "hidden", 0 )
	end
	self:registerEventHandler( "menu_create", MBh.DoMultiple( {
		HandleLobbyMemberButtonIsActive,
		HandleLobbyMemberButtonIsDisabled
	} ) )
	self:registerEventHandler( "member_list_refresh", MBh.DoMultiple( {
		HandleLobbyMemberButtonRefresh,
		HandleLobbyMemberButtonIsActive,
		HandleLobbyMemberButtonIsDisabled,
		DispatchSvSPlayercardUpdate
	} ) )
	self:registerEventHandler( "popup_inactive", function ( menu, controller )
		local self = LUI.UITimer.new( 70, {
			name = "member_list_refresh"
		}, nil, true, menu, false )
		self.id = "member_button_popup_restore_timer_id"
		menu:addElement( self )
		LUI.UIButton.popupInactive( menu, controller )
	end )
	self:registerEventHandler( "button_action", HandleLobbyMemberButtonAction )
	self:registerEventHandler( "button_over", MBh.DoMultiple( {
		HandleLobbyMemberUpdateSetFocused,
		HandleLobbyMemberButtonOver
	} ) )
	self:registerEventHandler( "button_up", HandleLobbyMemberUpdateSetNotFocused )
	self:registerEventHandler( "restore_focus", HandleLobbyMemberRestoreFocus )
	local f85_local22 = LUI.UITimer.new( 250, {
		name = "member_list_refresh"
	}, nil, true, memberButtonSplitscreenPrompt, false )
	f85_local22.id = "member_button_initial_timer_id"
	self:addElement( f85_local22 )
	local f85_local23 = LUI.UIText.new()
	f85_local23.id = "member_button_ss_prompt_id"
	f85_local23.properties = {
		memberListState = f85_local15,
		memberIndex = f85_local16
	}
	f85_local23:registerAnimationState( "default", {
		topAnchor = false,
		bottomAnchor = false,
		leftAnchor = true,
		rightAnchor = false,
		top = -1 * CoD.TextSettings.SmallFont.Height * 0.5,
		bottom = CoD.TextSettings.SmallFont.Height * 0.5,
		left = 74,
		right = 625,
		font = CoD.TextSettings.SmallFont.Font,
		alignment = LUI.Alignment.Left,
		alpha = 1
	} )
	f85_local23:registerAnimationState( "hidden", {
		alpha = 0
	} )
	f85_local23:animateToState( "default", 0 )
	if not f85_local19 then
		f85_local23:animateToState( "hidden", 0 )
	else
		f85_local23:setText( Lobby.GetNonPlayingLocalClientText( f85_local16 - 1 ) )
	end
	f85_local23:registerEventHandler( "lobby_member_update_ss_prompt", HandleLobbyMemberUpdateSplitscreenPrompt )
	self:addElement( f85_local23 )
	local f85_local24 = LUI.UIHorizontalList.new()
	f85_local24.id = "member_button_list_id"
	f85_local24:registerAnimationState( "default", {
		topAnchor = true,
		bottomAnchor = false,
		leftAnchor = true,
		rightAnchor = false,
		top = 0,
		bottom = f85_local1,
		left = 0,
		right = 611,
		alpha = 1
	} )
	f85_local24:animateToState( "default", 0 )
	local f85_local25 = LUI.UIImage.new()
	f85_local25.id = "member_button_talk_icon_id"
	f85_local25:registerAnimationState( "default", {
		topAnchor = true,
		bottomAnchor = false,
		leftAnchor = true,
		rightAnchor = false,
		top = 0,
		bottom = 33,
		left = 0,
		right = 33,
		material = RegisterMaterial( "icon_online_chat_quiet" ),
		alpha = 0
	} )
	f85_local25:registerAnimationState( "disabled", {
		alpha = 0
	} )
	f85_local25:registerAnimationState( "talking", {
		alpha = 1,
		material = RegisterMaterial( "icon_online_chat" )
	} )
	f85_local25:registerAnimationState( "muted", {
		alpha = 1,
		material = RegisterMaterial( "icon_online_chat_mute" )
	} )
	f85_local25:registerAnimationState( "quiet", {
		alpha = 1,
		material = RegisterMaterial( "icon_online_chat_quiet" )
	} )
	f85_local25:animateToState( "default", 0 )
	f85_local25:animateToState( GetTalkIconState( f85_local15, f85_local17, f85_local18 ), 0 )
	f85_local25:registerEventHandler( "lobby_member_update_content", HandleTalkIconUpdate )
	f85_local25:registerEventHandler( "button_disable", MBh.AnimateToState( "disabled", 0 ) )
	f85_local24:addElement( f85_local25 )
	local f85_local26 = LUI.UIElement.new()
	f85_local26.id = "member_button_lt_id"
	f85_local26:registerAnimationState( "default", {
		topAnchor = true,
		bottomAnchor = true,
		leftAnchor = true,
		rightAnchor = false,
		top = 0,
		bottom = 0,
		left = 0,
		right = 26
	} )
	f85_local26:animateToState( "default", 0 )
	f85_local26:registerEventHandler( "button_up", HandleLobbyMemberLeftButtonUp )
	f85_local26:registerEventHandler( "button_over", HandleLobbyMemberLeftButtonOver )
	local f85_local27 = LUI.UIImage.new()
	f85_local27.id = "member_button_lt_bg_id"
	f85_local27.properties = {
		memberListState = f85_local15,
		team = f85_local18,
		isActiveMemberSlot = f85_local6
	}
	f85_local27:registerAnimationState( "default", {
		topAnchor = true,
		bottomAnchor = true,
		leftAnchor = true,
		rightAnchor = true,
		top = 0,
		bottom = 0,
		left = 0,
		right = 0,
		material = RegisterMaterial( "box_lobby_name_lt" ),
		red = 1,
		green = 1,
		blue = 1,
		alpha = f85_local2
	} )
	f85_local27:registerAnimationState( "disabled", {
		alpha = 0.25
	} )
	f85_local27:animateToState( "default", 0 )
	f85_local27:registerEventHandler( "button_disable", MBh.AnimateToState( "disabled", 0 ) )
	f85_local27:registerEventHandler( "button_up", HandleLobbyMemberSetBackground )
	f85_local27:registerEventHandler( "lobby_member_update_bg", MBh.DoMultiple( {
		HandleLobbyMemberUpdateBackgroundProperties,
		HandleLobbyMemberSetBackground
	} ) )
	local f85_local28 = buildMemberButtonTeamBorder( f85_local15, f85_local17, f85_local18, f85_local6, "box_lobby_name_match_lt" )
	f85_local28.id = "member_button_lt_bg_border_id"
	local f85_local29 = LUI.UIImage.new()
	f85_local29.id = "member_button_party_host_id"
	f85_local29.properties = {
		memberListState = f85_local15,
		memberSlot = f85_local17,
		team = f85_local18
	}
	f85_local29:registerAnimationState( "default", {
		topAnchor = false,
		bottomAnchor = true,
		leftAnchor = true,
		rightAnchor = false,
		top = -16,
		bottom = 0,
		left = 0,
		right = 16,
		material = RegisterMaterial( "icon_party_leader" ),
		red = 1,
		green = 1,
		blue = 1,
		alpha = 0
	} )
	f85_local29:registerAnimationState( "shown", {
		alpha = 1
	} )
	f85_local29:animateToState( "default", 0 )
	if Lobby.ShowMemberPrivatePartyHostIcon( f85_local15, f85_local17, f85_local18 ) then
		f85_local29:animateToState( "shown", 0 )
	end
	f85_local29:registerEventHandler( "lobby_member_update_content", MBh.DoMultiple( {
		HandleLobbyMemberUpdateHostIconProperties,
		HandleLobbyMemberShowHostIcon
	} ) )
	f85_local29:registerEventHandler( "button_disable", MBh.AnimateToState( "default", 0 ) )
	local f85_local30 = LUI.UIImage.new()
	f85_local30.id = "member_button_elite_icon_id"
	f85_local30.properties = {
		memberListState = f85_local15,
		memberSlot = f85_local17,
		team = f85_local18
	}
	f85_local30:registerAnimationState( "default", {
		topAnchor = true,
		bottomAnchor = false,
		leftAnchor = true,
		rightAnchor = false,
		top = 2,
		bottom = 14,
		left = 3,
		right = 29,
		material = RegisterMaterial( "widg_arrow_dn" ),
		red = 0.33,
		green = 0.71,
		blue = 0.23,
		alpha = 0
	} )
	f85_local30:registerAnimationState( "visible", {
		alpha = 1
	} )
	f85_local30:animateToState( "default", 0 )
	if ShouldShowEliteIcon( f85_local15, f85_local17, f85_local18 ) then
		f85_local30:animateToState( "visible", 0 )
	end
	f85_local30:registerEventHandler( "lobby_member_update_content", MBh.DoMultiple( {
		HandleLobbyMemberUpdateEliteIconProperties,
		HandleLobbyMemberUpdateEliteIcon
	} ) )
	f85_local30:registerEventHandler( "button_disable", MBh.AnimateToState( "default", 0 ) )
	f85_local26:addElement( f85_local27 )
	f85_local26:addElement( f85_local28 )
	f85_local26:addElement( f85_local29 )
	f85_local26:addElement( f85_local30 )
	f85_local24:addElement( f85_local26 )
	local f85_local31 = LUI.UIElement.new()
	f85_local31.id = "member_button_mid_id"
	f85_local31:registerAnimationState( "default", {
		topAnchor = true,
		bottomAnchor = true,
		leftAnchor = true,
		rightAnchor = false,
		top = 0,
		bottom = 0,
		left = 0,
		right = 544
	} )
	f85_local31:animateToState( "default" )
	f85_local31:registerEventHandler( "button_up", HandleLobbyMemberMidButtonUp )
	f85_local31:registerEventHandler( "button_over", HandleLobbyMemberMidButtonOver )
	local f85_local32 = LUI.UIImage.new()
	f85_local32.id = "member_button_mid_bg_id"
	f85_local32.properties = {
		memberListState = f85_local15,
		team = f85_local18,
		isActiveMemberSlot = f85_local6
	}
	f85_local32:registerAnimationState( "default", {
		topAnchor = true,
		bottomAnchor = true,
		leftAnchor = true,
		rightAnchor = true,
		top = 0,
		bottom = 0,
		left = 0,
		right = 0,
		material = RegisterMaterial( "box_lobby_name_mid" ),
		red = 1,
		green = 1,
		blue = 1,
		alpha = f85_local2
	} )
	f85_local32:registerAnimationState( "disabled", {
		alpha = 0.25
	} )
	f85_local32:animateToState( "default", 0 )
	f85_local32:registerEventHandler( "button_disable", MBh.AnimateToState( "disabled", 0 ) )
	f85_local32:registerEventHandler( "button_up", HandleLobbyMemberSetBackground )
	f85_local32:registerEventHandler( "lobby_member_update_bg", MBh.DoMultiple( {
		HandleLobbyMemberUpdateBackgroundProperties,
		HandleLobbyMemberSetBackground
	} ) )
	local f85_local33 = buildMemberButtonTeamBorder( f85_local15, f85_local17, f85_local18, f85_local6, "box_lobby_name_match_mid" )
	f85_local33.id = "member_button_mid_bg_border_id"
	f85_local31:addElement( f85_local32 )
	f85_local31:addElement( f85_local33 )
	f85_local31:addElement( buildMemberButtonContent( f85_local15, f85_local17, f85_local18, f85_local12, f85_local13, f85_local14, f85_local11, f85_local10, f85_local8, f85_local9, f85_local7, f85_local5 ) )
	f85_local24:addElement( f85_local31 )
	local f85_local34 = LUI.UIElement.new()
	f85_local34.id = "member_button_rt_id"
	f85_local34:registerAnimationState( "default", {
		topAnchor = true,
		bottomAnchor = true,
		leftAnchor = true,
		rightAnchor = false,
		top = 0,
		bottom = 0,
		left = 0,
		right = 8
	} )
	f85_local34:animateToState( "default", 0 )
	f85_local34:registerEventHandler( "button_up", HandleLobbyMemberRightButtonUp )
	f85_local34:registerEventHandler( "button_over", HandleLobbyMemberRightButtonOver )
	local f85_local35 = LUI.UIImage.new()
	f85_local35.id = "member_button_rt_bg_id"
	f85_local35.properties = {
		memberListState = f85_local15,
		team = f85_local18,
		isActiveMemberSlot = f85_local6
	}
	f85_local35:registerAnimationState( "default", {
		topAnchor = true,
		bottomAnchor = true,
		leftAnchor = true,
		rightAnchor = true,
		top = 0,
		bottom = 0,
		left = 0,
		right = 0,
		material = RegisterMaterial( "box_lobby_name_rt" ),
		red = 1,
		green = 1,
		blue = 1,
		alpha = f85_local2
	} )
	f85_local35:registerAnimationState( "disabled", {
		alpha = 0.25
	} )
	f85_local35:animateToState( "default", 0 )
	f85_local35:registerEventHandler( "button_disable", MBh.AnimateToState( "disabled", 0 ) )
	f85_local35:registerEventHandler( "button_up", HandleLobbyMemberSetBackground )
	f85_local35:registerEventHandler( "lobby_member_update_bg", MBh.DoMultiple( {
		HandleLobbyMemberUpdateBackgroundProperties,
		HandleLobbyMemberSetBackground
	} ) )
	local f85_local36 = buildMemberButtonTeamBorder( f85_local15, f85_local17, f85_local18, f85_local6, "box_lobby_name_match_rt" )
	f85_local36.id = "member_button_rt_bg_border_id"
	f85_local34:addElement( f85_local35 )
	f85_local34:addElement( f85_local36 )
	f85_local24:addElement( f85_local34 )
	if Engine.IsAliensMode() then
		local f85_local37 = LUI.UIImage.new()
		f85_local37.id = "member_button_alien_splat_id"
		f85_local37:registerAnimationState( "default", {
			material = RegisterMaterial( "box_alien_lobby_name_overlay" ),
			topAnchor = true,
			bottomAnchor = true,
			leftAnchor = true,
			rightAnchor = true,
			top = -20,
			bottom = 20,
			left = 40,
			right = 24,
			alpha = 0
		} )
		f85_local37:animateToState( "default" )
		f85_local37:registerAnimationState( "glow", {
			alpha = 1
		} )
		f85_local37:registerEventHandler( "button_up", MBh.AnimateToState( "default" ) )
		f85_local37:registerEventHandler( "button_disable", MBh.AnimateToState( "default" ) )
		f85_local37:registerEventHandler( "button_over_disable", MBh.AnimateToState( "default" ) )
		f85_local37:registerEventHandler( "button_over", MBh.AnimateLoop( {
			{
				"glow",
				1200
			},
			{
				"default",
				1200
			}
		} ) )
		self:addElement( f85_local37 )
	end
	self:addElement( f85_local24 )
	if f85_local5 then
		local f85_local37 = LUI.UIImage.new()
		f85_local37.id = "MLGTag"
		f85_local37:registerAnimationState( "default", {
			material = RegisterMaterial( "icon_mlg_cam" ),
			alignment = LUI.Alignment.Left,
			topAnchor = true,
			bottomAnchor = false,
			leftAnchor = true,
			rightAnchor = false,
			left = 80,
			top = 6,
			width = 32,
			height = 16,
			alpha = 0
		} )
		f85_local37:animateToState( "default" )
		f85_local37:registerAnimationState( "visible", {
			alpha = 1
		} )
		f85_local37:registerAnimationState( "dark", {
			red = 0,
			green = 0,
			blue = 0
		} )
		f85_local37:registerAnimationState( "light", {
			red = 1,
			green = 1,
			blue = 1
		} )
		f85_local37:registerEventHandler( "button_over", MBh.AnimateToState( "dark" ) )
		f85_local37:registerEventHandler( "button_up", MBh.AnimateToState( "light" ) )
		f85_local37:registerEventHandler( "lobby_member_update_content", function ( element, event )
			if Lobby.IsMemberMLGSpectator( f85_local17, Lobby.IsMemberALocalPlayer( event.memberListState, event.memberSlot, event.team ) and Lobby.GetMemberControllerIndex( event.memberListState, event.memberSlot, event.team ) or Engine.GetFirstActiveController() ) then
				element:animateToState( "visible" )
			else
				element:animateToState( "default" )
			end
		end )
		self:addElement( f85_local37 )
	end
	if f85_local3 and not f85_local19 then
		local f85_local37 = 32
		local f85_local38 = LUI.UIImage.new()
		f85_local38.id = "debugelem"
		f85_local38.properties = {
			memberListState = f85_local15,
			memberIndex = f85_local16
		}
		f85_local38:registerAnimationState( "default", {
			material = RegisterMaterial( "box_white_gradient_fade_rt" ),
			leftAnchor = true,
			rightAnchor = true,
			topAnchor = true,
			bottomAnchor = false,
			left = 0,
			right = 4,
			top = f85_local1 + 1,
			bottom = f85_local1 + f85_local0.AliensMemberListSpacing + 1,
			red = 1,
			green = 1,
			blue = 1,
			alpha = 0
		} )
		f85_local38:registerAnimationState( "visible", {
			alpha = 0.1
		} )
		f85_local38:registerEventHandler( "lobby_member_update_ss_prompt", HandleLobbyMemberUpdateSplitscreenPromptAliens )
		f85_local38:animateToState( "default" )
		self:addElement( f85_local38 )
		local f85_local39 = LUI.UIHorizontalList.new()
		f85_local39.id = "loadout_list_id"
		f85_local39.properties = {
			memberListState = f85_local15,
			memberIndex = f85_local16
		}
		f85_local39:registerAnimationState( "default", {
			alignment = LUI.Alignment.Right,
			leftAnchor = true,
			rightAnchor = true,
			topAnchor = true,
			bottomAnchor = false,
			left = 0,
			right = 0,
			top = f85_local1 + 1,
			bottom = f85_local1 + f85_local0.AliensMemberListSpacing + 1,
			spacing = 10,
			alpha = 0
		} )
		f85_local39:registerAnimationState( "visible", {
			alpha = 1
		} )
		f85_local39:registerEventHandler( "lobby_member_update_ss_prompt", HandleLobbyMemberUpdateSplitscreenPromptAliens )
		f85_local39:animateToState( "default" )
		self:addElement( f85_local39 )
		local f85_local40 = {
			material = RegisterMaterial( "white" ),
			leftAnchor = false,
			rightAnchor = true,
			topAnchor = true,
			bottomAnchor = true,
			left = -f85_local37,
			right = 0,
			top = 0,
			bottom = 0,
			red = 1,
			green = 1,
			blue = 1,
			alpha = 0
		}
		local f85_local41 = {
			leftAnchor = false,
			rightAnchor = true,
			topAnchor = true,
			bottomAnchor = true,
			left = 0,
			right = 0,
			top = 0,
			bottom = 0
		}
		local f85_local42 = {
			leftAnchor = false,
			rightAnchor = true,
			topAnchor = true,
			bottomAnchor = true,
			left = -f85_local37,
			right = 0,
			top = 0,
			bottom = 0,
			alpha = 1
		}
		local f85_local43 = LUI.UIImage.new()
		f85_local43.id = "perk0_icon"
		f85_local43:registerAnimationState( "default", f85_local40 )
		f85_local43:registerAnimationState( "collapsed", f85_local41 )
		f85_local43:registerAnimationState( "visible", f85_local42 )
		f85_local43:registerEventHandler( "lobby_member_update_content", function ( element, event )
			HandleUpdatePerkIcon( element, event, 0, true )
		end )
		f85_local43:animateToState( "default" )
		local f85_local44 = LUI.UIImage.new()
		f85_local44.id = "perk1_icon"
		f85_local44:registerAnimationState( "default", f85_local40 )
		f85_local44:registerAnimationState( "collapsed", f85_local41 )
		f85_local44:registerAnimationState( "visible", f85_local42 )
		f85_local44:registerEventHandler( "lobby_member_update_content", function ( element, event )
			HandleUpdatePerkIcon( element, event, 1, true )
		end )
		f85_local44:animateToState( "default" )
		local f85_local45 = LUI.UIImage.new()
		f85_local45.id = "munitions_elem"
		f85_local45:registerAnimationState( "default", f85_local40 )
		f85_local45:registerAnimationState( "collapsed", f85_local41 )
		f85_local45:registerAnimationState( "visible", f85_local42 )
		f85_local45:registerEventHandler( "lobby_member_update_content", function ( element, event )
			HandleUpdateAbilityIcon( element, event, f85_local0.AlienAbilities.Up, true )
		end )
		f85_local45:animateToState( "default" )
		local f85_local46 = LUI.UIImage.new()
		f85_local46.id = "support_elem"
		f85_local46:registerAnimationState( "default", f85_local40 )
		f85_local46:registerAnimationState( "collapsed", f85_local41 )
		f85_local46:registerAnimationState( "visible", f85_local42 )
		f85_local46:registerEventHandler( "lobby_member_update_content", function ( element, event )
			HandleUpdateAbilityIcon( element, event, f85_local0.AlienAbilities.Down, true )
		end )
		f85_local46:animateToState( "default" )
		local f85_local47 = LUI.UIImage.new()
		f85_local47.id = "offense_elem"
		f85_local47:registerAnimationState( "default", f85_local40 )
		f85_local47:registerAnimationState( "collapsed", f85_local41 )
		f85_local47:registerAnimationState( "visible", f85_local42 )
		f85_local47:registerEventHandler( "lobby_member_update_content", function ( element, event )
			HandleUpdateAbilityIcon( element, event, f85_local0.AlienAbilities.Right, false )
		end )
		f85_local47:animateToState( "default" )
		local f85_local48 = LUI.UIImage.new()
		f85_local48.id = "defense_elem"
		f85_local48:registerAnimationState( "default", f85_local40 )
		f85_local48:registerAnimationState( "collapsed", f85_local41 )
		f85_local48:registerAnimationState( "visible", f85_local42 )
		f85_local48:registerEventHandler( "lobby_member_update_content", function ( element, event )
			HandleUpdateAbilityIcon( element, event, f85_local0.AlienAbilities.Left, false )
		end )
		f85_local48:animateToState( "default" )
		f85_local39:addElement( f85_local48 )
		f85_local39:addElement( f85_local47 )
		f85_local39:addElement( f85_local46 )
		f85_local39:addElement( f85_local45 )
		f85_local39:addElement( f85_local44 )
		f85_local39:addElement( f85_local43 )
	end
	return self
end

LUI.MenuBuilder.registerDef( "member_list", member_list )
LUI.MenuBuilder.registerType( "member_button", member_button )
LockTable( _M )