# API for accessing the core plugin of SublimePapyrus
import sublime, sublime_plugin, sys, os, json, threading, time
PYTHON_VERSION = sys.version_info
SUBLIME_VERSION = None
if PYTHON_VERSION[0] == 2:
	SUBLIME_VERSION = int(sublime.version())
	import imp
	root, module = os.path.split(os.getcwd())
	coreModule = "SublimePapyrus"
	# SublimePapyrus core module
	mainPackage = os.path.join(root, coreModule, "Plugin.py")
	imp.load_source("SublimePapyrus", mainPackage)
	del mainPackage
	import SublimePapyrus
	# Skyrim linter module
	linterPackage = os.path.join(root, module, "Linter.py")
	imp.load_source("Linter", linterPackage)
	del linterPackage
	import Linter
	# Cleaning up
	del root
	del module
	del coreModule
elif PYTHON_VERSION[0] >= 3:
	from SublimePapyrus import Plugin as SublimePapyrus
	from . import Linter

VALID_SCOPE = "source.papyrus.skyrim"

def plugin_loaded():
	global SUBLIME_VERSION
	SUBLIME_VERSION = int(sublime.version())

# Completion generation
class SublimePapyrusSkyrimGenerateCompletionsCommand(sublime_plugin.WindowCommand):
	def run(self):
		view = self.window.active_view()
		if view:
			self.paths = SublimePapyrus.GetSourcePaths(view)
			if self.paths:
				if PYTHON_VERSION[0] == 2:
					self.window.show_quick_panel(self.paths, self.on_select, 0, -1)
				elif PYTHON_VERSION[0] >= 3:
					self.window.show_quick_panel(self.paths, self.on_select, 0, -1, None)

	def on_select(self, index):
		if index >= 0:
			self.path = self.paths[index]
			thread = threading.Thread(target=self.generate_completions)
			thread.start()

	def generate_completions(self):
		outputFolder = os.path.join(sublime.packages_path(), "User")
		lex = Linter.Lexical()
		syn = Linter.Syntactic()
		sem = Linter.Semantic()
		files = [f for f in os.listdir(self.path) if ".psc" in f]
		if len(files) > 100:
			if not sublime.ok_cancel_dialog("You are about to generate static completions for %d scripts.\n\nAre you sure you want to continue?" % len(files)):
				return
		for file in files:
			path = os.path.join(self.path, file)
			scriptName = file[:-4]
			scriptContents = ""
			try:
				with open(path) as fi:
					scriptContents = fi.read()
			except UnicodeDecodeError:
				with open(path, encoding="utf8") as fi:
					scriptContents = fi.read()
			if scriptContents:
				lines = []
				tokens = []
				try:
					for token in lex.Process(scriptContents):
						if token.type == lex.NEWLINE:
							if tokens:
								lines.append(tokens)
							tokens = []
						elif token.type != lex.COMMENT_LINE and token.type != lex.COMMENT_BLOCK:
							tokens.append(token)
				except Linter.LexicalError as e:
					if PYTHON_VERSION[0] == 2:
						print("SublimePapyrus - Lexical error on line %d, column %d in '%s': %s" % (e.line, e.column, path, e.message))
					elif PYTHON_VERSION[0] >= 3:
						SublimePapyrus.ShowMessage("Error on line %d, column %d in '%s': %s" % (e.line, e.column, path, e.message))
					return
				if lines:
					statements = []
					for line in lines:
						try:
							stat = syn.Process(line)
							if stat and (stat.type == sem.STAT_FUNCTIONDEF or stat.type == sem.STAT_EVENTDEF):
								statements.append(stat)
						except Linter.SyntacticError as e:
							if PYTHON_VERSION[0] == 2:
								print("SublimePapyrus - Syntactic error on line %d in '%s': %s" % (e.line, path, e.message))
							elif PYTHON_VERSION[0] >= 3:
								SublimePapyrus.ShowMessage("Error on line %d in '%s': %s" % (e.line, path, e.message))
							return
					scriptNameLower = scriptName.lower()
					completions = [{"trigger": "%s\t%s" % (scriptNameLower, "script"), "contents": scriptName}]
					for stat in statements:
						if stat.type == sem.STAT_FUNCTIONDEF:
							temp = SublimePapyrus.MakeFunctionCompletion(stat, sem, script=scriptNameLower)
							completions.append({"trigger": temp[0], "contents": temp[1]})
						elif stat.type == sem.STAT_EVENTDEF:
							temp = SublimePapyrus.MakeEventCompletion(stat, sem, calling=False, script=scriptNameLower)
							completions.append({"trigger": temp[0], "contents": temp[1]})
					output = {
						"scope": VALID_SCOPE,
						"completions": completions
					}
					with open(os.path.join(outputFolder, "SublimePapyrus - Skyrim - %s.sublime-completions" % scriptName), "w") as fo:
						json.dump(output, fo, indent=2)
		print("SublimePapyrus - Finished generating completions for scripts in '%s'" % self.path)

linterCache = {}
completionCache = {}
cacheLock = threading.RLock()
lex = Linter.Lexical()
syn = Linter.Syntactic()
sem = Linter.Semantic()

class EventListener(sublime_plugin.EventListener):
	def __init__(self):
		super(EventListener,self).__init__()
		self.linterQueue = 0
		self.linterRunning = False
		self.linterErrors = {}
		self.completionRunning = False
		self.validScope = "source.papyrus.skyrim"
		self.completionKeywordAs = ("as\tcast", "As ",)
		self.completionKeywordAuto = ("auto\tkeyword", "Auto",)
		self.completionKeywordAutoReadOnly = ("autoreadonly\tkeyword", "AutoReadOnly",)
		self.completionKeywordConditional = ("conditional\tkeyword", "Conditional",)
		self.completionKeywordExtends = ("extends\tkeyword", "Extends ",)
		self.completionKeywordGlobal = ("global\tkeyword", "Global",)
		self.completionKeywordHidden = ("hidden\tkeyword", "Hidden",)
		self.completionKeywordNative = ("native\tkeyword", "Native",)
		self.completionKeywordParent = ("parent\tkeyword", "Parent",)
		self.completionKeywordSelf = ("self\tkeyword", "Self",)
		self.completionKeywordFalse = ("false\tkeyword", "False",)
		self.completionKeywordNone = ("none\tkeyword", "None",)
		self.completionKeywordTrue = ("true\tkeyword", "True",)
		self.scriptContents = None

	# Clear cache in order to force an update
	def on_close(self, view):
		if self.IsValidScope(view):
			bufferID = view.buffer_id()
			if bufferID:
				if self.linterErrors.get(bufferID, None):
					del self.linterErrors[bufferID]
				self.ClearLinterCache(bufferID)

	# Linter
	def on_post_save(self, view):
		if self.IsValidScope(view):
			settings = SublimePapyrus.GetSettings()
			if settings and settings.get("linter_on_save", True):
				filePath = view.file_name()
				if filePath:
					folderPath, fileName = os.path.split(filePath)
					scriptName = fileName[:fileName.rfind(".")].upper()
					if self.linterRunning:
						return
					self.ClearSemanticAnalysisCache(scriptName)
					self.ClearCompletionCache(scriptName)
					self.bufferID = view.buffer_id()
					if self.bufferID:
						self.linterQueue += 1
						lineNumber, columnNumber = view.rowcol(view.sel()[0].begin())
						lineNumber += 1
						self.Linter(view, lineNumber)

	def on_modified(self, view):
		if self.IsValidScope(view):
			settings = SublimePapyrus.GetSettings()

			global SUBLIME_VERSION
			tooltipParameters = settings.get("tooltip_function_parameters", True)
			tooltipDocstring = settings.get("tooltip_function_docstring", True)
			if SUBLIME_VERSION >= 3070 and (tooltipParameters or tooltipDocstring):
				if self.linterRunning:
					return
				elif self.completionRunning:
					return
				global cacheLock
				global lex
				global syn
				global sem
				with cacheLock:
					locations = [view.sel()[0].begin()]
					prefix = view.word(locations[0])
					line, column = view.rowcol(locations[0])
					line += 1
					lineString = view.substr(sublime.Region(view.line(locations[0]).begin(), locations[0]-len(prefix))).strip()
					bufferID = view.buffer_id()
					if bufferID:
						currentScript = self.GetScript(bufferID)
						if currentScript:
							try:
								sem.GetContext(currentScript, line)
							except Linter.FunctionDefinitionCancel as e:
								tokens = []
								try:
									for token in lex.Process(lineString):
										if token.type != lex.NEWLINE:
											tokens.append(token)
									if tokens and tokens[-1].type != lex.COMMENT_LINE:
										try:
											syn.Process(tokens)
										except Linter.ExpectedIdentifierError as f:
											if tokens[-1].type != lex.OP_DOT:
												stack = syn.stack[:]
												arguments = []
												for item in reversed(stack):
													if item.type == sem.NODE_FUNCTIONCALLARGUMENT:
														arguments.insert(0, stack.pop())
													elif item.type == sem.LEFT_PARENTHESIS:
														break
												stackLength = len(stack)
												func = None
												if stackLength >= 2 and stack[-2].type == sem.IDENTIFIER:
													name = stack[-2].value.upper()
													if stackLength >= 4 and stack[-3].type == sem.OP_DOT:
														try:
															result = sem.NodeVisitor(stack[-4])
															if result.type != sem.KW_SELF:
																try:
																	script = sem.GetCachedScript(result.type)
																	if script:
																		func = script.functions.get(name, None)
																except Linter.SemanticError as e:
																	return
															else:
																for scope in reversed(e.functions):
																	func = scope.get(name, None)
																	if func:
																		break
														except Linter.SemanticError as e:
															return
													else:
														for scope in reversed(e.functions):
															func = scope.get(name, None)
															if func:
																break
														for imp in e.imports:
															script = sem.GetCachedScript(imp)
															temp = script.functions.get(name, None)
															if temp:
																if func:
																	func = None
																else:
																	func = temp
																break
												if func:# and func.data.parameters:
													self.ShowFunctionInfo(view, tokens, func, len(arguments), tooltipParameters, tooltipDocstring)
										except Linter.SyntacticError as f:
											pass
								except Linter.LexicalError as f:
									pass
							except Linter.SemanticError as e:
								pass

			if settings and settings.get("linter_on_modified", True):
				self.QueueLinter(view)

	def ShowFunctionInfo(self, aView, aTokens, aFunction, aArgumentCount, aParameters, aDocstring):
		funcName = aFunction.data.identifier
		currentParameter = None
		if len(aTokens) > 2 and aTokens[-1].type == lex.OP_ASSIGN and aTokens[-2].type == lex.IDENTIFIER:
			currentParameter = aTokens[-2].value.upper()
		paramIndex = 0
		funcParameters = []
		if aParameters:
			for param in aFunction.data.parameters:
				paramName = param.identifier
				paramType = param.typeIdentifier
				if param.array:
					paramType = "%s[]" % paramType
				paramContent = None
				if param.expression:
					paramDefaultValue = sem.GetLiteral(param.expression, True)
					paramContent = "%s %s = %s" % (paramType, paramName, paramDefaultValue)
				else:
					paramContent = "%s %s" % (paramType, paramName)
				if currentParameter:
					if currentParameter == paramName.upper():
						paramContent = "<b>%s</b>" % paramContent
				else:
					if paramIndex == aArgumentCount:
						paramContent = "<b>%s</b>" % paramContent
					paramIndex += 1
				funcParameters.append(paramContent)

		docstring = ""
		if aDocstring:
			if aFunction.data.docstring:
				if funcParameters:
					docstring = "<br><br>%s" % "<br>".join(aFunction.data.docstring.data.value.split("\n"))
				else:
					docstring = "<br>".join(aFunction.data.docstring.data.value.split("\n"))

		settings = SublimePapyrus.GetSettings()
		backgroundColor = settings.get("tooltip_background_color", "#393939")
		bodyTextColor = settings.get("tooltip_body_text_color", "#747369")
		bodyFontSize = settings.get("tooltip_font_size", "12")
		boldTextColor = settings.get("tooltip_bold_text_color", "#ffffff")
		headingTextColor = settings.get("tooltip_heading_text_color", "#bfbfbf")
		headingFontSize = settings.get("tooltip_heading_font_size", "14")
		css = """<style>
html {
	background-color: %s;
}

body {
    font-size: %spx;
    color: %s;
}

b {
    color: %s;
}

h1 {
    color: %s;
    font-size: %spx;
}
</style>""" % (backgroundColor, bodyFontSize, bodyTextColor, boldTextColor, headingTextColor, headingFontSize)
		content = "%s<h1>%s</h1>%s%s" % (css, funcName, "<br>".join(funcParameters), docstring)
		if aView.is_popup_visible():
			aView.update_popup(content)
		else:
			aView.show_popup(content, flags=sublime.COOPERATE_WITH_AUTO_COMPLETE, max_width=int(settings.get("tooltip_max_width", 600)), max_height=int(settings.get("tooltip_max_height", 300)))

	def QueueLinter(self, view):
		if self.linterRunning: # If an instance of the linter is running, then cancel
			return
		self.linterQueue += 1 # Add to queue
		settings = SublimePapyrus.GetSettings()
		delay = 0.500
		if settings:
			delay = settings.get("linter_delay", 500)/1000.0
			if delay < 0.050:
				delay = 0.050
		self.bufferID = view.buffer_id()
		if self.bufferID:
			lineNumber, columnNumber = view.rowcol(view.sel()[0].begin())
			lineNumber += 1
			if PYTHON_VERSION[0] == 2:
				self.scriptContents = view.substr(sublime.Region(0, view.size()))			
				self.sourcePaths = SublimePapyrus.GetSourcePaths(view)
				SublimePapyrus.ClearLinterHighlights(view)
				t = threading.Timer(delay, self.Linter, kwargs={"view": None, "lineNumber": lineNumber})
				t.daemon = True
				t.start()
			elif PYTHON_VERSION[0] >= 3:
				t = threading.Timer(delay, self.Linter, kwargs={"view": view, "lineNumber": lineNumber})
				t.daemon = True
				t.start()

	def Linter(self, view, lineNumber):
		self.linterQueue -= 1 # Remove from queue
		if self.linterQueue > 0: # If there is a queue, then cancel
			return
		elif self.completionRunning: # If completions are being generated, then cancel
			return
		self.linterRunning = True # Block further attempts to run the linter until this instance has finished
		if view:
			SublimePapyrus.ClearLinterHighlights(view)
		#start = None #DEBUG
		def Exit():
			#print("Linter: Finished in %f milliseconds and releasing lock..." % ((time.time()-start)*1000.0)) #DEBUG
			self.linterRunning = False
			return False
		global cacheLock
		global lex
		global syn
		global sem
		global SUBLIME_VERSION
		with cacheLock:
			if not self.linterErrors.get(self.bufferID, None):
				self.linterErrors[self.bufferID] = {}
			#start = time.time() #DEBUG
			settings = None
			if view:
				settings = SublimePapyrus.GetSettings()
			if SUBLIME_VERSION >= 3103 and view.is_auto_complete_visible(): # If a list of completions is visible, then cancel
				return Exit()
			if view:
				SublimePapyrus.SetStatus(view, "sublimepapyrus-linter", "The linter is running...")
			#lexSynStart = time.time() #DEBUG
			scriptContents = None
			if view:
				scriptContents = view.substr(sublime.Region(0, view.size()))
			else:
				scriptContents = self.scriptContents
			if not scriptContents:
				return Exit()
			lineCount = scriptContents.count("\n") + 1
			statements = []
			lines = []
			tokens = []
			currentLine = None
			try:
				for token in lex.Process(scriptContents):
					if token.type == lex.NEWLINE:
						if tokens:
							if currentLine:
								stat = syn.Process(tokens)
								if stat:
									statements.append(stat)
							elif token.line >= lineNumber:
								currentLine = syn.Process(tokens)
								if currentLine:
									while lines:
										stat = syn.Process(lines.pop(0))
										if stat:
											statements.append(stat)
									statements.append(currentLine)
								currentLine = True
							else:
								lines.append(tokens)
							tokens = []
						else:
							if token.line >= lineNumber:
								while lines:
									stat = syn.Process(lines.pop(0))
									if stat:
										statements.append(stat)
								currentLine = True
					elif token.type != lex.COMMENT_LINE and token.type != lex.COMMENT_BLOCK:
						tokens.append(token)
			except Linter.LexicalError as e:
				if view:
					error = self.linterErrors[self.bufferID].get(e.message, None)
					if error and error.message == e.message and abs(error.line - e.line) < settings.get("linter_error_line_threshold", 2) + 1:
						SublimePapyrus.HighlightLinter(view, e.line, e.column, False)
					else:
						SublimePapyrus.HighlightLinter(view, e.line, e.column)
					self.linterErrors[self.bufferID][e.message] = e
					SublimePapyrus.SetStatus(view, "sublimepapyrus-linter", "Error on line %d, column %d: %s" % (e.line, e.column, e.message))
					if settings.get("linter_panel_error_messages", False):
						view.window().show_quick_panel([[e.message, "Line %d, column %d" % (e.line, e.column)]], None)
				return Exit()
			except Linter.SyntacticError as e:
				if view:
					error = self.linterErrors[self.bufferID].get(e.message, None)
					if error and error.message == e.message and abs(error.line - e.line) < settings.get("linter_error_line_threshold", 2) + 1:
						SublimePapyrus.HighlightLinter(view, e.line, center=False)
					else:
						SublimePapyrus.HighlightLinter(view, e.line)
					self.linterErrors[self.bufferID][e.message] = e
					SublimePapyrus.SetStatus(view, "sublimepapyrus-linter", "Error on line %d: %s" % (e.line, e.message))
					if settings.get("linter_panel_error_messages", False):
						view.window().show_quick_panel([[e.message, "Line %d" % e.line]], None)
				return Exit()
			#print("Linter: Finished lexical and syntactic in %f milliseconds..." % ((time.time()-lexSynStart)*1000.0)) #DEBUG
			#semStart = time.time() #DEBUG
			if statements:
				try:
					script = None
					if view:
						script = sem.Process(statements, SublimePapyrus.GetSourcePaths(view))
					else:
						script = sem.Process(statements, self.sourcePaths)
					if script:
						self.SetScript(self.bufferID, script)
				except Linter.SemanticError as e:
					if view:
						error = self.linterErrors[self.bufferID].get(e.message, None)
						if error and error.message == e.message and abs(error.line - e.line) < settings.get("linter_error_line_threshold", 2) + 1:
							SublimePapyrus.HighlightLinter(view, e.line, center=False)
						else:
							SublimePapyrus.HighlightLinter(view, e.line)
						self.linterErrors[self.bufferID][e.message] = e
						SublimePapyrus.SetStatus(view, "sublimepapyrus-linter", "Error on line %d: %s" % (e.line, e.message)) 
						if settings.get("linter_panel_error_messages", False):
							window = view.window()
							if window: # Has to be checked in ST2 due to only active views returning values other than None.
								window.show_quick_panel([[e.message, "Line %d" % e.line]], None)
					return Exit()
				#print("Linter: Finished semantic in %f milliseconds..." % ((time.time()-semStart)*1000.0)) #DEBUG
				if view:
					SublimePapyrus.ClearStatus(view, "sublimepapyrus-linter")
				if self.linterErrors.get(self.bufferID, None):
					del self.linterErrors[self.bufferID]
		return Exit()

	# Completions
	def on_query_completions(self, view, prefix, locations):
		if self.IsValidScope(view):
			settings = SublimePapyrus.GetSettings()
			if settings and settings.get("intelligent_code_completion", True):
				if self.completionRunning:
					return
				elif self.linterRunning:
					return
				self.completionRunning = True
				#start = time.time() #DEBUG
				completions = None
				if not view.find("scriptname", 0, sublime.IGNORECASE):
					path = view.file_name()
					if path:
						_, name = os.path.split(path)
						completions = [("scriptname\tscript header", "ScriptName %s" % name[:name.rfind(".")],)]
					else:
						completions = [("scriptname\tscript header", "ScriptName ",)]
				else:					
					completions = self.Completions(view, prefix, locations)
				if completions:
					completions = list(set(completions))
				elif completions == None:
					completions = []
				completions = (completions, sublime.INHIBIT_WORD_COMPLETIONS|sublime.INHIBIT_EXPLICIT_COMPLETIONS,)
				#print("Completions: Finished in %f milliseconds and releasing lock..." % ((time.time()-start)*1000.0)) #DEBUG
				self.completionRunning = False
				return completions

	def Completions(self, view, prefix, locations):
		SublimePapyrus.ClearLinterHighlights(view)
		completions = []
		flags = None
		global cacheLock
		global lex
		global syn
		global sem
		with cacheLock:
			bufferID = view.buffer_id()
			if not bufferID:
				return
			currentScript = self.GetScript(bufferID)
			if not currentScript:
				SublimePapyrus.ShowMessage("Run the linter once...")
				return
			line, column = view.rowcol(locations[0])
			line += 1
			lineString = view.substr(sublime.Region(view.line(locations[0]).begin(), locations[0]-len(prefix))).strip()
			settings = SublimePapyrus.GetSettings()
			settingFunctionEventParameters = settings.get("intelligent_code_completion_function_event_parameters", True)
			try:
				sem.GetContext(currentScript, line)
			except Linter.EmptyStateCancel as e:
				if not lineString:
					# Inherited functions/events
					for name, obj in e.functions[0].items():
						if obj.type == syn.STAT_FUNCTIONDEF:
							completions.append(SublimePapyrus.MakeFunctionCompletion(obj, sem, False, "parent"))
						elif obj.type == syn.STAT_EVENTDEF:
							completions.append(SublimePapyrus.MakeEventCompletion(obj, sem, False, "parent"))
					completions.append(("import\timport statement", "Import ${0:$SELECTION}",))
					completions.append(("property\tproperty def.", "${1:Type} Property ${2:PropertyName} ${3:Auto}",))
					completions.append(("endproperty\tkeyword", "EndProperty",))
					completions.append(("fullproperty\tfull property def.", "${1:Type} Property ${2:PropertyName}\n\t${1:Type} Function Get()\n\t\t${3}\n\tEndFunction\n\n\tFunction Set(${1:Type} Variable)\n\t\t${4}\n\tEndFunction\nEndProperty",))
					completions.append(("autostate\tauto state def.", "Auto State ${1:StateName}\n\t${0}\nEndState",))
					completions.append(("state\tstate def.", "State ${1:StateName}\n\t${0}\nEndState",))
					completions.append(("endstate\tkeyword", "EndState",))
					completions.append(("event\tevent def.", "Event ${1:EventName}(${2:Parameters})\n\t${0}\nEndEvent",))
					completions.append(("endevent\tkeyword", "EndEvent",))
					completions.append(("function\tfunction def.", "${1:Type} Function ${2:FunctionName}(${3:Parameters})\n\t${0}\nEndFunction",))
					completions.append(("endfunction\tkeyword", "EndFunction",))
					# Types to facilitate variable declarations
					completions.extend(self.GetTypeCompletions(view, True))
					return completions
				else:
					tokens = []
					try:
						for token in lex.Process(lineString):
							if token.type != lex.NEWLINE:
								tokens.append(token)
					except Linter.LexicalError as f:
						return
					if tokens:
						if tokens[-1].type != lex.COMMENT_LINE:
							try:
								stat = syn.Process(tokens)
								# Optional flags
								if stat.type == syn.STAT_SCRIPTHEADER:
									if not stat.data.parent:
										completions.append(self.completionKeywordExtends)
									if not lex.KW_CONDITIONAL in stat.data.flags:
										completions.append(self.completionKeywordConditional)
									if not lex.KW_HIDDEN in stat.data.flags:
										completions.append(self.completionKeywordHidden)
								elif stat.type == syn.STAT_PROPERTYDEF:
									if not lex.KW_AUTO in stat.data.flags and not syn.KW_AUTOREADONLY in stat.data.flags:
										completions.append(self.completionKeywordAuto)
									if not lex.KW_AUTOREADONLY in stat.data.flags and not syn.KW_AUTO in stat.data.flags:
										completions.append(self.completionKeywordAutoReadOnly)
									if not lex.KW_CONDITIONAL in stat.data.flags:
										completions.append(self.completionKeywordConditional)
									if not lex.KW_HIDDEN in stat.data.flags:
										completions.append(self.completionKeywordHidden)
								elif stat.type == syn.STAT_VARIABLEDEF:
									if not lex.KW_CONDITIONAL in stat.data.flags:
										completions.append(self.completionKeywordConditional)
								elif stat.type == syn.STAT_FUNCTIONDEF:
									if not lex.KW_NATIVE in stat.data.flags:
										completions.append(self.completionKeywordNative)
									if not lex.KW_GLOBAL in stat.data.flags:
										completions.append(self.completionKeywordGlobal)
								elif stat.type == syn.STAT_EVENTDEF:
									if not lex.KW_NATIVE in stat.data.flags:
										completions.append(self.completionKeywordNative)
								return completions
							except Linter.ExpectedTypeError as f:
								completions.extend(self.GetTypeCompletions(view, f.baseTypes))
								return completions
							except Linter.ExpectedKeywordError as f:
								# Mandatory property flags when initializing a property with a literal
								if syn.KW_AUTO in f.keywords:
									completions.append(("auto\tkeyword", "Auto",))
								if syn.KW_AUTOREADONLY in f.keywords:
									completions.append(("autoreadonly\tkeyword", "AutoReadOnly",))
								return completions
							except Linter.ExpectedLiteralError as f:
								# Literals when initializing a property
								if tokens[1].type == lex.KW_PROPERTY:
									if tokens[0].type == lex.IDENTIFIER:
										completions.append(self.completionKeywordNone)
									elif tokens[0].type == lex.KW_BOOL:
										completions.append(self.completionKeywordTrue)
										completions.append(self.completionKeywordFalse)
									elif tokens[0].type == lex.KW_STRING:
										completions.append(("stringliteral\tstring literal", "\"${0}\""))
									return completions
								elif tokens[1].type == lex.LEFT_BRACKET and tokens[2].type == lex.RIGHT_BRACKET and tokens[3].type == lex.KW_PROPERTY:
									completions.append(self.completionKeywordNone)
									return completions
							except Linter.SyntacticError as f:
								return
				return
			except Linter.StateCancel as e:
				# Functions/events that have not yet been defined in the state.
				if not lineString:
					# Functions/events defined in the empty state.
					for name, stat in e.functions[1].items():
						if stat.type == syn.STAT_EVENTDEF and not e.functions[2].get(name, False):
							completions.append(SublimePapyrus.MakeEventCompletion(stat, sem, False, "self"))
						elif stat.type == syn.STAT_FUNCTIONDEF and not e.functions[2].get(name, False):
							completions.append(SublimePapyrus.MakeFunctionCompletion(stat, sem, False, "self"))
					# Inherited functions/events.
					for name, stat in e.functions[0].items():
						if stat.type == syn.STAT_EVENTDEF and not e.functions[2].get(name, False) and not e.functions[1].get(name, False):
							completions.append(SublimePapyrus.MakeEventCompletion(stat, sem, False, "parent"))
						elif stat.type == syn.STAT_FUNCTIONDEF and not e.functions[2].get(name, False) and not e.functions[1].get(name, False):
							completions.append(SublimePapyrus.MakeFunctionCompletion(stat, sem, False, "parent"))
					return completions
				else:
					tokens = []
					try:
						for token in lex.Process(lineString):
							if token.type != lex.NEWLINE:
								tokens.append(token)
					except Linter.LexicalError as f:
						return
					if tokens:
						if tokens[-1].type != lex.COMMENT_LINE:
							tokenCount = len(tokens)
							# Functions without return types and events
							if tokenCount == 1:
								if tokens[0].type == lex.KW_FUNCTION:
									# Functions/events defined in the empty state.
									for name, stat in e.functions[1].items():
										if stat.type == syn.STAT_FUNCTIONDEF and not stat.data.type and not e.functions[2].get(name, False):
											completions.append(SublimePapyrus.MakeFunctionCompletion(stat, sem, False, "self", True))
									# Inherited functions/events.
									for name, stat in e.functions[0].items():
										if stat.type == syn.STAT_FUNCTIONDEF and not stat.data.type and not e.functions[2].get(name, False) and not e.functions[1].get(name, False):
											completions.append(SublimePapyrus.MakeFunctionCompletion(stat, sem, False, "parent", True))
									return completions
								elif tokens[0].type == lex.KW_EVENT:
									# Functions/events defined in the empty state.
									for name, stat in e.functions[1].items():
										if stat.type == syn.STAT_EVENTDEF and not e.functions[2].get(name, False):
											completions.append(SublimePapyrus.MakeEventCompletion(stat, sem, False, "self", True))
									# Inherited functions/events.
									for name, stat in e.functions[0].items():
										if stat.type == syn.STAT_EVENTDEF and not e.functions[2].get(name, False) and not e.functions[1].get(name, False):
											completions.append(SublimePapyrus.MakeEventCompletion(stat, sem, False, "parent", True))
									return completions
							# Functions with non-array return types
							elif tokenCount == 2 and tokens[1].type == lex.KW_FUNCTION:
								if tokens[0].type == lex.IDENTIFIER or tokens[0].type == lex.KW_BOOL or tokens[0].type == lex.KW_FLOAT or tokens[0].type == lex.KW_INT or tokens[0].type == lex.KW_STRING:
									# Functions/events defined in the empty state.
									funcType = tokens[0].value.upper()
									for name, stat in e.functions[1].items():
										if stat.type == syn.STAT_FUNCTIONDEF and not stat.data.array and stat.data.type == funcType and not e.functions[2].get(name, False):
											completions.append(SublimePapyrus.MakeFunctionCompletion(stat, sem, False, "self", True))
									# Inherited functions/events.
									for name, stat in e.functions[0].items():
										if stat.type == syn.STAT_FUNCTIONDEF and not stat.data.array and stat.data.type == funcType and not e.functions[2].get(name, False) and not e.functions[1].get(name, False):
											completions.append(SublimePapyrus.MakeFunctionCompletion(stat, sem, False, "parent", True))
									return completions 
							# Functions with array return types
							elif tokenCount == 4 and tokens[3].type == lex.KW_FUNCTION and tokens[1].type == lex.LEFT_BRACKET and tokens[2].type == lex.RIGHT_BRACKET:
								if tokens[0].type == lex.IDENTIFIER or tokens[0].type == lex.KW_BOOL or tokens[0].type == lex.KW_FLOAT or tokens[0].type == lex.KW_INT or tokens[0].type == lex.KW_STRING:
									# Functions/events defined in the empty state.
									funcType = tokens[0].value.upper()
									for name, stat in e.functions[1].items():
										if stat.type == syn.STAT_FUNCTIONDEF and stat.data.array and stat.data.type == funcType and not e.functions[2].get(name, False):
											completions.append(SublimePapyrus.MakeFunctionCompletion(stat, sem, False, "self", True))
									# Inherited functions/events.
									for name, stat in e.functions[0].items():
										if stat.type == syn.STAT_FUNCTIONDEF and stat.data.array and stat.data.type == funcType and not e.functions[2].get(name, False) and not e.functions[1].get(name, False):
											completions.append(SublimePapyrus.MakeFunctionCompletion(stat, sem, False, "parent", True))
									return completions
				return
			except Linter.FunctionDefinitionCancel as e:
				if not lineString:
					# Flow control
					completions.append(("if\tif", "If ${1:$SELECTION}\n\t${0}\nEndIf",))
					completions.append(("elseif\telse-if", "ElseIf ${1:$SELECTION}\n\t${0}",))
					completions.append(("else\telse", "Else\n\t${0}",))
					completions.append(("endif\tkeyword", "EndIf",))
					completions.append(("while\twhile-loop", "While ${1:$SELECTION}\n\t${0}\nEndWhile",))
					completions.append(("endwhile\tkeyword", "EndWhile",))
					completions.append(("for\tpseudo for-loop", "Int ${1:iCount} = 0\nWhile ${1:iCount} < ${2:maxSize}\n\t${0}\n\t${1:iCount} += 1\nEndWhile",))
					if e.signature.data.type:
						completions.append(("return\tstat.", "Return ",))
					else:
						completions.append(("return\tstat.", "Return",))
					# Special variables
					if not sem.KW_GLOBAL in e.signature.data.flags:
						completions.append(self.completionKeywordSelf)
						completions.append(self.completionKeywordParent)
					# Inherited properties
					for name, stat in e.variables[0].items():
						if stat.type == syn.STAT_PROPERTYDEF:
							completions.append(SublimePapyrus.MakePropertyCompletion(stat, "parent"))
					# Properties and variables declared in the empty state
					for name, stat in e.variables[1].items():
						if stat.type == syn.STAT_VARIABLEDEF:
							completions.append(SublimePapyrus.MakeVariableCompletion(stat))
						elif stat.type == syn.STAT_PROPERTYDEF:
							completions.append(SublimePapyrus.MakePropertyCompletion(stat, "self"))
					# Function/event parameters and variables declared in the function
					for name, stat in e.variables[2].items():
						if stat.type == syn.STAT_VARIABLEDEF:
							completions.append(SublimePapyrus.MakeVariableCompletion(stat))
						elif stat.type == syn.STAT_PARAMETER:
							completions.append(SublimePapyrus.MakeParameterCompletion(stat))
					# Variables declared in if, elseif, else, and while scopes
					if len(e.variables) > 3:
						for scope in e.variables[3:]:
							for name, stat in scope.items():
								if stat.type == syn.STAT_VARIABLEDEF:
									completions.append(SublimePapyrus.MakeVariableCompletion(stat))
					if len(e.functions) > 2:
						#Functions/events defined in the non-empty state
						for name, stat in e.functions[2].items():
							if stat.type == syn.STAT_FUNCTIONDEF:
								completions.append(SublimePapyrus.MakeFunctionCompletion(stat, sem, True, "self", parameters=settingFunctionEventParameters))
							elif stat.type == syn.STAT_EVENTDEF:
								completions.append(SublimePapyrus.MakeEventCompletion(stat, sem, True, "self", parameters=settingFunctionEventParameters))
						# Functions/events defined in the empty state
						for name, stat in e.functions[1].items():
							if stat.type == syn.STAT_FUNCTIONDEF and not e.functions[2].get(name, None):
								completions.append(SublimePapyrus.MakeFunctionCompletion(stat, sem, True, "self", parameters=settingFunctionEventParameters))
							elif stat.type == syn.STAT_EVENTDEF and not e.functions[2].get(name, None):
								completions.append(SublimePapyrus.MakeEventCompletion(stat, sem, True, "self", parameters=settingFunctionEventParameters))
						# Inherited functions/events
						for name, stat in e.functions[0].items():
							if stat.type == syn.STAT_FUNCTIONDEF and not e.functions[1].get(name, None) and not e.functions[2].get(name, None):
								completions.append(SublimePapyrus.MakeFunctionCompletion(stat, sem, True, "parent", parameters=settingFunctionEventParameters))
							elif stat.type == syn.STAT_EVENTDEF and not e.functions[1].get(name, None) and not e.functions[2].get(name, None):
								completions.append(SublimePapyrus.MakeEventCompletion(stat, sem, True, "parent", parameters=settingFunctionEventParameters))
					else:
						# Functions/events defined in the empty state
						for name, stat in e.functions[1].items():
							if stat.type == syn.STAT_FUNCTIONDEF:
								completions.append(SublimePapyrus.MakeFunctionCompletion(stat, sem, True, "self", parameters=settingFunctionEventParameters))
							elif stat.type == syn.STAT_EVENTDEF:
								completions.append(SublimePapyrus.MakeEventCompletion(stat, sem, True, "self", parameters=settingFunctionEventParameters))
						# Inherited functions/events
						for name, stat in e.functions[0].items():
							if stat.type == syn.STAT_FUNCTIONDEF and not e.functions[1].get(name, None):
								completions.append(SublimePapyrus.MakeFunctionCompletion(stat, sem, True, "parent", parameters=settingFunctionEventParameters))
							elif stat.type == syn.STAT_EVENTDEF and not e.functions[1].get(name, None):
								completions.append(SublimePapyrus.MakeEventCompletion(stat, sem, True, "parent", parameters=settingFunctionEventParameters))
					# Imported global functions
					for imp in e.imports:
						functions = self.GetFunctionCompletions(imp, True)
						if not functions:
							try:
								script = sem.GetCachedScript(imp)
								if script:
									functions = []
									impLower = imp.lower()
									for name, obj in script.functions.items():
										if lex.KW_GLOBAL in obj.data.flags:
											functions.append(SublimePapyrus.MakeFunctionCompletion(obj, sem, True, impLower, parameters=settingFunctionEventParameters))
									self.SetFunctionCompletions(imp, functions, True)
							except:
								return
						if functions:
							completions.extend(functions)
					# Types to facilitate variable declarations
					completions.extend(self.GetTypeCompletions(view, True))
					return completions
				else:
					tokens = []
					try:
						for token in lex.Process(lineString):
							if token.type != lex.NEWLINE:
								tokens.append(token)
					except Linter.LexicalError as f:
						return
					if tokens:
						if tokens[-1].type != lex.COMMENT_LINE:
							try:
								stat = syn.Process(tokens)
								if stat.type == syn.STAT_VARIABLEDEF:
									completions.append(self.completionKeywordAs)
									return completions
								elif stat.type == syn.STAT_ASSIGNMENT:
									completions.append(self.completionKeywordAs)
									return completions
								elif stat.type == syn.STAT_EXPRESSION:
									completions.append(self.completionKeywordAs)
									return completions
								elif stat.type == syn.STAT_RETURN:
									if e.signature.data.type:
										for name, obj in e.functions[0].items():
											if obj.type == syn.STAT_FUNCTIONDEF:
												completions.append(SublimePapyrus.MakeFunctionCompletion(obj, sem, True, "parent", parameters=settingFunctionEventParameters))
											elif obj.type == syn.STAT_EVENTDEF:
												completions.append(SublimePapyrus.MakeEventCompletion(obj, sem, True, "parent", parameters=settingFunctionEventParameters))
										for name, obj in e.functions[1].items():
											if obj.type == syn.STAT_FUNCTIONDEF:
												completions.append(SublimePapyrus.MakeFunctionCompletion(obj, sem, True, "self", parameters=settingFunctionEventParameters))
											elif obj.type == syn.STAT_EVENTDEF:
												completions.append(SublimePapyrus.MakeEventCompletion(obj, sem, True, "self", parameters=settingFunctionEventParameters))
										for name, obj in e.variables[0].items():
											if obj.type == syn.STAT_PROPERTYDEF:
												completions.append(SublimePapyrus.MakePropertyCompletion(obj, "parent"))
										for name, obj in e.variables[1].items():
											if obj.type == syn.STAT_PROPERTYDEF:
												completions.append(SublimePapyrus.MakePropertyCompletion(obj, "self"))
											elif obj.type == syn.STAT_VARIABLEDEF:
												completions.append(SublimePapyrus.MakeVariableCompletion(obj))
										for scope in e.variables[2:]:
											for name, obj in scope.items():
												if obj.type == syn.STAT_VARIABLEDEF:
													completions.append(SublimePapyrus.MakeVariableCompletion(obj))
												elif obj.type == syn.STAT_PARAMETER:
													completions.append(SublimePapyrus.MakeParameterCompletion(obj))
										completions.extend(self.GetTypeCompletions(view, False))
										completions.append(self.completionKeywordFalse)
										completions.append(self.completionKeywordTrue)
										completions.append(self.completionKeywordNone)
										if not sem.KW_GLOBAL in e.signature.data.flags:
											completions.append(self.completionKeywordSelf)
											completions.append(self.completionKeywordParent)

										# Imported global functions
										for imp in e.imports:
											functions = self.GetFunctionCompletions(imp, True)
											if not functions:
												try:
													script = sem.GetCachedScript(imp)
													if script:
														functions = []
														impLower = imp.lower()
														for name, obj in script.functions.items():
															if lex.KW_GLOBAL in obj.data.flags:
																functions.append(SublimePapyrus.MakeFunctionCompletion(obj, sem, True, impLower, parameters=settingFunctionEventParameters))
														self.SetFunctionCompletions(imp, functions, True)
												except:
													return
											if functions:
												completions.extend(functions)
										return completions
							except Linter.ExpectedTypeError as f:
								completions.extend(self.GetTypeCompletions(view, f.baseTypes))
								return completions
							except Linter.ExpectedIdentifierError as f:
								if tokens[-1].type == lex.OP_DOT: # Accessing properties and functions
									try:
										result = sem.NodeVisitor(syn.stack[-2])
										#print(result.type)
										#print(result.array)
										#print(result.object)
										if result.type == lex.KW_SELF:
											for name, obj in e.functions[0].items():
												if obj.type == syn.STAT_FUNCTIONDEF:
													completions.append(SublimePapyrus.MakeFunctionCompletion(obj, sem, True, "parent", parameters=settingFunctionEventParameters))
												elif obj.type == syn.STAT_EVENTDEF:
													completions.append(SublimePapyrus.MakeEventCompletion(obj, sem, True, "parent", parameters=settingFunctionEventParameters))
											for name, obj in e.functions[1].items():
												if obj.type == syn.STAT_FUNCTIONDEF:
													completions.append(SublimePapyrus.MakeFunctionCompletion(obj, sem, True, "self", parameters=settingFunctionEventParameters))
												elif obj.type == syn.STAT_EVENTDEF:
													completions.append(SublimePapyrus.MakeEventCompletion(obj, sem, True, "self", parameters=settingFunctionEventParameters))
											for name, obj in e.variables[0].items():
												if obj.type == syn.STAT_PROPERTYDEF:
													completions.append(SublimePapyrus.MakePropertyCompletion(obj, "parent"))
											for name, obj in e.variables[1].items():
												if obj.type == syn.STAT_PROPERTYDEF:
													completions.append(SublimePapyrus.MakePropertyCompletion(obj, "self"))
											return completions
										elif result.array:
											typ = result.type.capitalize()
											elementIdentifier = "akElement"
											if typ == "Bool":
												elementIdentifier = "abElement"
											elif typ == "Float":
												elementIdentifier = "afElement"
											elif typ == "Int":
												elementIdentifier = "aiElement"
											elif typ == "String":
												elementIdentifier = "asElement"
											completions.append(("find\tint func.", "Find(${1:%s %s}, ${2:Int aiStartIndex = 0})" % (typ, elementIdentifier),))
											completions.append(("rfind\tint func.", "RFind(${1:%s %s}, ${2:Int aiStartIndex = -1})" % (typ, elementIdentifier),))
											completions.append(("length\tkeyword", "Length",))
											return completions
										else:
											# None and types that do not have properties nor functions/events
											if result.type == lex.KW_NONE or result.type == lex.KW_BOOL or result.type == lex.KW_FLOAT or result.type == lex.KW_INT or result.type == lex.KW_STRING:
												return
											if not result.object: #Global <TYPE> functions
												functions = self.GetFunctionCompletions(result.type, True)
												if not functions:
													try:
														script = sem.GetCachedScript(result.type)
														if script:
															functions = []
															typeLower = result.type.lower()
															for name, obj in script.functions.items():
																if lex.KW_GLOBAL in obj.data.flags:
																	functions.append(SublimePapyrus.MakeFunctionCompletion(obj, sem, True, typeLower, parameters=settingFunctionEventParameters))
															self.SetFunctionCompletions(result.type, functions, True)
													except:
														return
												if functions:
													completions.extend(functions)
												return completions
											else: # Non-global functions, events, and properties
												functions = self.GetFunctionCompletions(result.type, False)
												if not functions:
													try:
														script = sem.GetCachedScript(result.type)
														if script:
															functions = []
															typeLower = result.type.lower()
															for name, obj in script.functions.items():
																if lex.KW_GLOBAL not in obj.data.flags:
																	functions.append(SublimePapyrus.MakeFunctionCompletion(obj, sem, True, typeLower, parameters=settingFunctionEventParameters))
															self.SetFunctionCompletions(result.type, functions, False)
													except:
														return
												if functions:
													completions.extend(functions)
												properties = self.GetPropertyCompletions(result.type)
												if not properties:
													try:
														script = sem.GetCachedScript(result.type)
														if script:
															properties = []
															typeLower = result.type.lower()
															for name, obj in script.properties.items():
																properties.append(SublimePapyrus.MakePropertyCompletion(obj, typeLower))
															self.SetPropertyCompletions(result.type, properties)
													except:
														return
												if properties:
													completions.extend(properties)
												return completions
										return
									except Linter.SemanticError as g:
										return
									return completions
								else: # Not following a dot
									for name, obj in e.functions[0].items():
										if obj.type == syn.STAT_FUNCTIONDEF:
											completions.append(SublimePapyrus.MakeFunctionCompletion(obj, sem, True, "parent", parameters=settingFunctionEventParameters))
										elif obj.type == syn.STAT_EVENTDEF:
											completions.append(SublimePapyrus.MakeEventCompletion(obj, sem, True, "parent", parameters=settingFunctionEventParameters))
									for name, obj in e.functions[1].items():
										if obj.type == syn.STAT_FUNCTIONDEF:
											completions.append(SublimePapyrus.MakeFunctionCompletion(obj, sem, True, "self", parameters=settingFunctionEventParameters))
										elif obj.type == syn.STAT_EVENTDEF:
											completions.append(SublimePapyrus.MakeEventCompletion(obj, sem, True, "self", parameters=settingFunctionEventParameters))
									for name, obj in e.variables[0].items():
										if obj.type == syn.STAT_PROPERTYDEF:
											completions.append(SublimePapyrus.MakePropertyCompletion(obj, "parent"))
									for name, obj in e.variables[1].items():
										if obj.type == syn.STAT_PROPERTYDEF:
											completions.append(SublimePapyrus.MakePropertyCompletion(obj, "self"))
										elif obj.type == syn.STAT_VARIABLEDEF:
											completions.append(SublimePapyrus.MakeVariableCompletion(obj))
									for scope in e.variables[2:]:
										for name, obj in scope.items():
											if obj.type == syn.STAT_VARIABLEDEF:
												completions.append(SublimePapyrus.MakeVariableCompletion(obj))
											elif obj.type == syn.STAT_PARAMETER:
												completions.append(SublimePapyrus.MakeParameterCompletion(obj))
									completions.extend(self.GetTypeCompletions(view, False))
									completions.append(self.completionKeywordFalse)
									completions.append(self.completionKeywordTrue)
									completions.append(self.completionKeywordNone)
									completions.append(self.completionKeywordAs)
									if not sem.KW_GLOBAL in e.signature.data.flags:
										completions.append(self.completionKeywordSelf)
										completions.append(self.completionKeywordParent)

									# Imported global functions
									for imp in e.imports:
										functions = self.GetFunctionCompletions(imp, True)
										if not functions:
											try:
												script = sem.GetCachedScript(imp)
												if script:
													functions = []
													impLower = imp.lower()
													for name, obj in script.functions.items():
														if lex.KW_GLOBAL in obj.data.flags:
															functions.append(SublimePapyrus.MakeFunctionCompletion(obj, sem, True, impLower, parameters=settingFunctionEventParameters))
													self.SetFunctionCompletions(imp, functions, True)
											except:
												return
										if functions:
											completions.extend(functions)

									# Show info about function/event parameters
									stack = syn.stack[:]
									arguments = []
									for item in reversed(stack):
										if item.type == sem.NODE_FUNCTIONCALLARGUMENT:
											arguments.insert(0, stack.pop())
										elif item.type == sem.LEFT_PARENTHESIS:
											break
									stackLength = len(stack)
									func = None
									if stackLength >= 2 and stack[-2].type == sem.IDENTIFIER:
										name = stack[-2].value.upper()
										if stackLength >= 4 and stack[-3].type == sem.OP_DOT:
											try:
												result = sem.NodeVisitor(stack[-4])
												if result.type != sem.KW_SELF:
													try:
														script = sem.GetCachedScript(result.type)
														if script:
															func = script.functions.get(name, None)
													except Linter.SemanticError as e:
														return
												else:
													for scope in reversed(e.functions):
														func = scope.get(name, None)
														if func:
															break
											except Linter.SemanticError as e:
												return
										else:
											for scope in reversed(e.functions):
												func = scope.get(name, None)
												if func:
													break
											for imp in e.imports:
												script = sem.GetCachedScript(imp)
												temp = script.functions.get(name, None)
												if temp:
													if func:
														func = None
													else:
														func = temp
													break
									if func and func.data.parameters:
										for param in func.data.parameters:
											completions.append(SublimePapyrus.MakeParameterCompletion(Linter.Statement(sem.STAT_PARAMETER, 0, param)))
										global SUBLIME_VERSION
										tooltipParameters = settings.get("tooltip_function_parameters", True)
										tooltipDocstring = settings.get("tooltip_function_docstring", True)
										if SUBLIME_VERSION >= 3070 and prefix == "" and (tooltipParameters or tooltipDocstring):
											if not view.is_popup_visible():
												self.ShowFunctionInfo(view, tokens, func, len(arguments), tooltipParameters, tooltipDocstring)

									return completions
							except Linter.SyntacticError as f:
								if syn.stack and syn.stack[-2].type == syn.LEFT_PARENTHESIS and syn.stack[-1].type != syn.RIGHT_PARENTHESIS: # Expression enclosed by parentheses
									completions.append(self.completionKeywordAs)
									return completions
								return
				return
			except Linter.PropertyDefinitionCancel as e:
				if not lineString:
					typ = None
					if e.array:
						typ = "%s[]" % e.type.capitalize()
					else:
						typ = "%s" % e.type.capitalize()
					if not "GET" in e.functions:
						completions.append(("get\t%s func." % typ, "%s Function Get()\n\t${0}\nEndFunction" % typ,))
					if not "SET" in e.functions:
						completions.append(("set\tfunc.", "Function Set(%s aParameter)\n\t${0}\nEndFunction" % typ,))
					return completions
				else:
					tokens = []
					try:
						for token in lex.Process(lineString):
							if token.type != lex.NEWLINE:
								tokens.append(token)
					except Linter.LexicalError as f:
						return
					if tokens:
						if tokens[-1].type != lex.COMMENT_LINE:
							pass
				return
			except Linter.SemanticError as e:
				return
			return

	def IsValidScope(self, view):
		if self.validScope:
			return self.validScope in view.scope_name(0)
		return False

	def ClearCompletionCache(self, script):
		global cacheLock
		with cacheLock:
			global completionCache
			if completionCache.get("properties", None):
				if completionCache["properties"].get(script, None):
					del completionCache["properties"][script]
			if completionCache.get("functions", None):
				if completionCache["functions"].get(script, None):
					del completionCache["functions"][script]

	def ClearLinterCache(self, script):
		global cacheLock
		with cacheLock:
			global linterCache
			if linterCache.get(script, None):
				del linterCache[script]

	def ClearSemanticAnalysisCache(self, script):
		global cacheLock
		global sem
		with cacheLock:
			if sem:
				if sem.cache.get(script, None):
					del sem.cache[script]
				children = []
				for name, obj in sem.cache.items():
					if script in obj.extends:
						children.append(name)
				for child in children:
					del sem.cache[child]

	def GetScript(self, bufferID):
		global cacheLock
		with cacheLock:
			global linterCache
			return linterCache.get(bufferID, None)
	
	def SetScript(self, bufferID, script):
		global cacheLock
		with cacheLock:
			global linterCache
			linterCache[bufferID] = script

	def GetFunctionCompletions(self, script, glob = False):
		global cacheLock
		with cacheLock:
			global completionCache
			functions = completionCache.get("functions", None)
			if functions:
				functions = functions.get(script, False)
				if not functions:
					return None
				if glob:
					return functions.get("global", None)
				else:
					return functions.get("nonglobal", None)
			else:
				return None

	def SetFunctionCompletions(self, script, obj, glob = False):
		global cacheLock
		with cacheLock:
			global completionCache
			functions = completionCache.get("functions", None)
			if not functions:
				completionCache["functions"] = {}
				functions = completionCache.get("functions", None)
			if not functions.get(script, False):
				functions[script] = {}
			if glob:
				functions[script]["global"] = obj
			else:
				functions[script]["nonglobal"] = obj

	def GetPropertyCompletions(self, script):
		global cacheLock
		with cacheLock:
			global completionCache
			properties = completionCache.get("properties", None)
			if properties:
				return properties.get(script, None)

	def SetPropertyCompletions(self, script, obj):
		global cacheLock
		with cacheLock:
			global completionCache
			properties = completionCache.get("properties", None)
			if not properties:
				completionCache["properties"] = {}
				properties = completionCache.get("properties", None)
			properties[script] = obj

	def GetTypeCompletions(self, view, baseTypes = True):
		global cacheLock
		with cacheLock:
			global completionCache
			scripts = completionCache.get("types", None)
			if not scripts:
				scripts = []
				paths = SublimePapyrus.GetSourcePaths(view)
				for path in paths:
					if os.path.isdir(path):
						files = [f for f in os.listdir(path) if ".psc" in f]
						for file in files:
							scripts.append(("%s\tscript" % file[:-4].lower(), "%s" % file[:-4]))
				scripts = list(set(scripts))
				self.SetTypeCompletions(scripts)
			if baseTypes:
				scripts.extend([("bool\ttype", "Bool",), ("float\ttype", "Float",), ("int\ttype", "Int",), ("string\ttype", "String",)])
			return scripts

	def SetTypeCompletions(self, obj):
		global cacheLock
		with cacheLock:
			global completionCache
			completionCache["types"] = obj

class SublimePapyrusSkyrimClearCache(sublime_plugin.WindowCommand):
	def run(self):
		global cacheLock
		global sem
		global linterCache
		global completionCache
		with cacheLock:
			linterCache = {}
			completionCache = {} 
			sem.cache = {}

class SublimePapyrusSkyrimActorValueSuggestionsCommand(SublimePapyrus.SublimePapyrusShowSuggestionsCommand):
	def get_items(self, **args):
		items = {
		"Aggression": "Aggression",
		"Alchemy": "Alchemy",
		"Alteration modifier": "AlterationMod",
		"Alteration power modifier": "AlterationPowerMod",
		"Alteration": "Alteration",
		"Armor perks": "ArmorPerks",
		"Assistance": "Assistance",
		"Attack damage multiplier": "AttackDamageMult",
		"Block": "Block",
		"Bow speed bonus": "BowSpeedBonus",
		"Brain condition": "BrainCondition",
		"Bypass vendor keyword check": "BypassVendorKeywordCheck",
		"Bypass vendor stolen check": "BypassVendorStolenCheck",
		"Carry weight": "CarryWeight",
		"Combat health regeneration multiplier modifier": "CombatHealthRegenMultMod",
		"Combat health regeneration multiplier power modifier": "CombatHealthRegenMultPowerMod",
		"Confidence": "Confidence",
		"Conjuration modifier": "ConjurationMod",
		"Conjuration power modifier": "ConjurationPowerMod",
		"Conjuration": "Conjuration",
		"Critical chance": "CritChance",
		"Damage resistance": "DamageResist",
		"Destruction modifier": "DestructionMod",
		"Destruction power modifier": "DestructionPowerMod",
		"Destruction": "Destruction",
		"Detect life range": "DetectLifeRange",
		"Disease resistance": "DiseaseResist",
		"Dragon souls": "DragonSouls",
		"Enchanting": "Enchanting",
		"Endurance condition": "EnduranceCondition",
		"Energy": "Energy",
		"Equipped item charge": "EquippedItemCharge",
		"Equipped staff charge": "EquippedStaffCharge",
		"Fame": "Fame",
		"Favor active": "FavorActive",
		"Favor points bonus": "FavorPointsBonus",
		"Favors per day timer": "FavorsPerDayTimer",
		"Favors per day": "FavorsPerDay",
		"Fire resistance": "FireResist",
		"Frost resistance": "FrostResist",
		"Heal rate": "HealRate",
		"Health": "Health",
		"Heavy armor": "HeavyArmor",
		"Ignore crippled limbs": "IgnoreCrippledLimbs",
		"Illusion modifier": "IllusionMod",
		"Illusion power modifier": "IllusionPowerMod",
		"Illusion": "Illusion",
		"Infamy": "Infamy",
		"Inventory weight": "InventoryWeight",
		"Invisibility": "Invisibility",
		"Jumping bonus": "JumpingBonus",
		"Last bribed or intimidated": "LastBribedIntimidated",
		"Last flattered": "LastFlattered",
		"Left attack condition": "LeftAttackCondition",
		"Left mobility condition": "LeftMobilityCondition",
		"Light armor": "LightArmor",
		"Lockpicking": "Lockpicking",
		"Magic resistance": "MagicResist",
		"Magicka rate": "MagickaRate",
		"Magicka": "Magicka",
		"Marksman": "Marksman",
		"Mass": "Mass",
		"Melee damage": "MeleeDamage",
		"Mood": "Mood",
		"Morality": "Morality",
		"Night eye": "NightEye",
		"One-handed": "OneHanded",
		"Paralysis": "Paralysis",
		"Perception condition": "PerceptionCondition",
		"Pickpocket": "Pickpocket",
		"Poison resistance": "PoisonResist",
		"Restoration modifier": "RestorationMod",
		"Restoration power modifier": "RestorationPowerMod",
		"Restoration": "Restoration",
		"Right attack condition": "RightAttackCondition",
		"Right mobility condition": "RightMobilityCondition",
		"Shield perks": "ShieldPerks",
		"Shock resistance": "ElectricResist",
		"Shout recovery multiplier": "ShoutRecoveryMult",
		"Smithing": "Smithing",
		"Sneak": "Sneak",
		"Speech": "Speechcraft",
		"Speed multiplier": "SpeedMult",
		"Stamina rate": "StaminaRate",
		"Stamina": "Stamina",
		"Two-handed": "TwoHanded",
		"Unarmed damage": "UnarmedDamage",
		"Variable 01": "Variable01",
		"Variable 02": "Variable02",
		"Variable 03": "Variable03",
		"Variable 04": "Variable04",
		"Variable 05": "Variable05",
		"Variable 06": "Variable06",
		"Variable 07": "Variable07",
		"Variable 08": "Variable08",
		"Variable 09": "Variable09",
		"Variable 10": "Variable10",
		"Voice points": "VoicePoints",
		"Voice rate": "VoiceRate",
		"Waiting for player": "WaitingForPlayer",
		"Ward deflection": "WardDeflection",
		"Ward power": "WardPower",
		"Water breating": "WaterBreathing",
		"Water walking": "WaterWalking",
		"Weapon speed multiplier": "WeaponSpeedMult",
		}
		return items

class SublimePapyrusSkyrimFormTypeSuggestionsCommand(SublimePapyrus.SublimePapyrusShowSuggestionsCommand):
	def get_items(self, **args):
		items = {
		"(TLOD)": 74,
		"(TOFT)": 86,
		"Acoustic Space (ASPC)": 16,
		"Action (AACT)": 6,
		"Activator (ACTI)": 24,
		"Actor (NPC_)": 43,
		"ActorValueInfo (AVIF)": 95,
		"Addon Node (ADDN)": 94,
		"AI Package (PACK)": 79,
		"Ammo (AMMO)": 42,
		"Animated Object (ANIO)": 83,
		"Apparatus (APPA)": 33,
		"Armor (ARMO)": 26,
		"Armor Addon (ARMA)": 102,
		"Arrow Projectile (PARW)": 64,
		"Art Object (ARTO)": 125,
		"Association Type (ASTP)": 123,
		"Barrier Projectile (PBAR)": 69,
		"Beam Projectile (PBEA)": 66,
		"Body Part Data (BPTD)": 93,
		"Book (BOOK)": 27,
		"Camera Path (CPTH)": 97,
		"Camera Shot (CAMS)": 96,
		"Cell (CELL)": 60,
		"Character": 62,
		"Class (CLAS)": 10,
		"Climate (CLMT)": 55,
		"Collision Layer (COLL)": 132,
		"Color Form (CLFM)": 133,
		"Combat Style (CSTY)": 80,
		"Cone/Voice Projectile (PCON)": 68,
		"Constructible Object (COBJ)": 49,
		"Container (CONT)": 28,
		"Debris (DEBR)": 88,
		"Default Object Manager (DOBJ)": 107,
		"Dialog View (DLVW)": 117,
		"Dialogue Branch (DLBR)": 115,
		"Door (DOOR)": 29,
		"Dual Cast Data (DUAL)": 129,
		"Effect Setting": 18,
		"Effect Shader (EFSH)": 85,
		"Enchantment (ENCH)": 21,
		"Encounter Zone (ECZN)": 103,
		"Equip Slot (EQUP)": 120,
		"Explosion (EXPL)": 87,
		"Eyes (EYES)": 13,
		"Faction (FACT)": 11,
		"Flame Projectile (PLFA)": 67,
		"Flora (FLOR)": 39,
		"Footstep (FSTP)": 110,
		"Footstep Set (FSTS)": 111,
		"FormID List (FLST)": 91,
		"Furniture (FURN)": 40,
		"Game Setting (GMST)": 3,
		"Global Variable (GLOB)": 9,
		"Grass (GRAS)": 37,
		"Grenade Projectile (PGRE)": 65,
		"Group (GRUP)": 2,
		"Hazard (HAZD)": 51,
		"Head Part (HDPT)": 12,
		"Idle (IDLE)": 78,
		"Idle Marker (IDLM)": 47,
		"Image Space (IMGS)": 89,
		"Image Space Modifier (IMAD)": 90,
		"Impact Data (IPCT)": 100,
		"Impact Data Set (IPDS)": 101,
		"Ingredient (INGR)": 30,
		"Key (KEYM)": 45,
		"Keyword (KYWD)": 4,
		"Land Texture (LTEX)": 20,
		"Landscape (LAND)": 72,
		"Leveled Actor (LVLN)": 44,
		"Leveled Item (LVLI)": 53,
		"Leveled Spell (LVLS)": 82,
		"Light (LIGH)": 31,
		"Lighting Template (LGTM)": 108,
		"Load Screen (LSCR)": 81,
		"Location (LCTN)": 104,
		"Location Reference Type (LCRT)": 5,
		"Main File Header (TES4)": 1,
		"Material Object (MATO)": 126,
		"Material Type (MATT)": 99,
		"Menu Icon": 8,
		"Message (MESG)": 105,
		"Miscellaneous Object (MISC)": 32,
		"Missile Projectile (PMIS)": 63,
		"Movable Static (MSTT)": 36,
		"Movement Type (MOVT)": 127,
		"Music Track (MUST)": 116,
		"Music Type (MUSC)": 109,
		"Navigation (NAVI)": 59,
		"Navigation Mesh (NAVM)": 73,
		"None": 0,
		"Note": 48,
		"Object Reference (REFR)": 61,
		"Outfit (OTFT)": 124,
		"Perk (PERK)": 92,
		"Placed Hazard (PHZD)": 70,
		"Potion (ALCH)": 46,
		"Projectile (PROJ)": 50,
		"Quest (QUST)": 77,
		"Race (RACE)": 14,
		"Ragdoll (RGDL)": 106,
		"Region (REGN)": 58,
		"Relationship (RELA)": 121,
		"Reverb Parameter (REVB)": 134,
		"Scene (SCEN)": 122,
		"Script (SCPT)": 19,
		"Scroll Item (SCRL)": 23,
		"Shader Particle Geometry Data (SPGD)": 56,
		"Shout (SHOU)": 119,
		"Skill": 17,
		"Soul Gem (SLGM)": 52,
		"Sound (SOUN)": 15,
		"Sound Category (SNCT)": 130,
		"Sound Descriptor (SNDR)": 128,
		"Sound Output (SOPM)": 131,
		"Spell (SPEL)": 22,
		"Static (STAT)": 34,
		"Static Collection": 35,
		"Story Manager Branch Node (SMBN)": 112,
		"Story Manager Event Node (SMEN)": 114,
		"Story Manager Quest Node (SMQN)": 113,
		"Talking Activator (TACT)": 25,
		"Texture Set (TXST)": 7,
		"Topic (DIAL)": 75,
		"Topic Info (INFO)": 76,
		"Tree (TREE)": 38,
		"Visual/Reference Effect (RFCT)": 57,
		"Voice Type (VTYP)": 98,
		"Water (WATR)": 84,
		"Weapon (WEAP)": 41,
		"Weather (WTHR)": 54,
		"Word of Power (WOOP)": 118,
		"Worldspace (WRLD)": 71
		}
		return items
"""
class SublimePapyrusSkyrimAnimationEventNameSuggestionsCommand(SublimePapyrus.SublimePapyrusShowSuggestionsCommand):
	# http://www.creationkit.com/Animation_Events
	def get_items(self, **args):
		items = {
		# Magic
		"BeginCastRight (magic)": "BeginCastRight",
		"BeginCastLeft (magic)": "BeginCastLeft",
		"MRh_SpellFire_Event (magic)": "MRh_SpellFire_Event",
		"MLh_SpellFire_Event (magic)": "MLh_SpellFire_Event",

		# Hand-to-hand
		"preHitFrame (hand-to-hand)": "preHitFrame",
		"weaponSwing (hand-to-hand)": "weaponSwing",
		"SoundPlay.WPNSwingUnarmed (hand-to-hand)": "SoundPlay.WPNSwingUnarmed",
		"HitFrame (hand-to-hand)": "HitFrame",
		"weaponLeftSwing (hand-to-hand)": "weaponLeftSwing",

		# Bows - Quick draw and shot
		"bowDraw (bows)": "bowDraw",
		"SoundPlay.WPNBowNockSD (bows)": "SoundPlay.WPNBowNockSD",
		"BowZoomStop (bows)": "BowZoomStop",
		"arrowAttach (bows)": "arrowAttach",
		"bowDrawStart (bows)": "bowDrawStart",
		"InitiateWinBegin (bows)": "InitiateWinBegin",
		"BowRelease (bows)": "BowRelease",
		"arrowRelease (bows)": "arrowRelease",
		"tailCombatIdle (bows)": "tailCombatIdle",
		"AttackWinStart (bows)": "AttackWinStart",
		"bowEnd (bows)": "bowEnd",
		"attackStop (bows)": "attackStop",
		"tailCombatState (bows)": "tailCombatState",
		"bowReset (bows)": "bowReset",
		"arrowDetach (bows)": "arrowDetach",
		# Bows - Full draw, held for a moment
		"initiateWinEnd (bows)": "initiateWinEnd",
		"BowDrawn (bows)": "BowDrawn",

		# Blocking
		"tailCombatIdle (blocking)": "tailCombatIdle",
		"SoundPlay.NPCHumanCombatShieldBlock (blocking)": "SoundPlay.NPCHumanCombatShieldBlock",
		"blockStartOut (blocking)": "blockStartOut",
		"SoundPlay.NPCHumanCombatShieldRelease (blocking)": "SoundPlay.NPCHumanCombatShieldRelease",
		"blockStop (blocking)": "blockStop",
		"SoundPlay.NPCHumanCombatShieldBash (blocking)": "SoundPlay.NPCHumanCombatShieldBash",
		"preHitFrame (blocking)": "preHitFrame",
		"HitFrame (blocking)": "HitFrame",
		"FootScuffRight (blocking)": "FootScuffRight",

		# Sneak non-combat
		"tailSneakIdle (sneaking, not in combat)": "tailSneakIdle",
		"tailSneakLocomotion (sneaking, not in combat)": "tailSneakLocomotion",
		"tailMTIdle (sneaking, not in combat)": "tailMTIdle",
		"tailMTLocomotion (sneaking, not in combat)": "tailMTLocomotion",

		# Sneak combat
		"tailSneakIdle (sneaking, in combat)": "tailSneakIdle",
		"tailSneakLocomotion (sneaking, in combat)": "tailSneakLocomotion",
		"tailCombatIdle (sneaking, in combat)": "tailCombatIdle",
		"tailCombatLocomotion (sneaking, in combat)": "tailCombatLocomotion",

		# Water
		"SoundPlay.FSTSwimSwim (swimming)": "SoundPlay.FSTSwimSwim",
		"MTState (swimming)": "MTState",

		# Walking, turning, and jumping
		"Left foot in motion (walking)": "FootLeft",
		"Right foot in motion (walking)": "FootRight",
		"Player begins jumping up (jumping)": "JumpUp",
		"Player begins falling down (jumping/falling)": "JumpFall",
		"Player touches the ground (jumping/falling)": "JumpDown",
		"Player turns left, slowly (turning)": "turnLeftSlow",
		"Player turns left, fast (turning)": "turnLeftFast",
		"Player turns right, slowly (turning)": "turnRightSlow",
		"Player turns right, fast (turning)": "turnRightFast",

		# Sprinting
		"StartAnimatedCameraDelta (sprinting)": "StartAnimatedCameraDelta",
		"attackStop (sprinting)": "attackStop",
		"tailSprint (sprinting)": "tailSprint",
		"FootSprintRight (sprinting)": "FootSprintRight",
		"FootSprintLeft (sprinting)": "FootSprintLeft",
		"EndAnimatedCamera (sprinting)": "EndAnimatedCamera",
		"EndAnimatedCameraDelta (sprinting)": "EndAnimatedCameraDelta",
		}
		return items

"""

class SublimePapyrusSkyrimTrackedStatNameSuggestionsCommand(SublimePapyrus.SublimePapyrusShowSuggestionsCommand):
	def get_items(self, **args):
		items = {
		"Locations Discovered": "",
		"Dungeons Cleared": "",
		"Days Passed": "",
		"Hours Slept": "",
		"Hours Waiting": "",
		"Standing Stones Found": "",
		"Gold Found": "",
		"Most Gold Carried": "",
		"Chests Looted": "",
		"Skill Increases": "",
		"Skill Books Read": "",
		"Food Eaten": "",
		"Training Sessions": "",
		"Books Read": "",
		"Horses Owned": "",
		"Houses Owned": "",
		"Stores Invested In": "",
		"Barters": "",
		"Persuasions": "",
		"Bribes": "",
		"Intimidations": "",
		"Diseases Contracted": "",
		"Days as a Vampire": "",
		"Days as a Werewolf": "",
		"Necks Bitten": "",
		"Vampirism Cures": "",
		"Werewolf Transformations": "",
		"Mauls": "",
		"Quests Completed": "",
		"Misc Objectives Completed": "",
		"Main Quests Completed": "",
		"Side Quests Completed": "",
		"The Companions Quests Completed": "",
		"College of Winterhold Quests Completed": "",
		"Thieves' Guild Quests Completed": "",
		"The Dark Brotherhood Quests Completed": "",
		"Civil War Quests Completed": "",
		"Daedric Quests Completed": "",
		"Questlines Completed": "",
		"People Killed": "",
		"Animals Killed": "",
		"Creatures Killed": "",
		"Undead Killed": "",
		"Daedra Killed": "",
		"Automatons Killed": "",
		"Favorite Weapon": "",
		"Critical Strikes": "",
		"Sneak Attacks": "",
		"Backstabs": "",
		"Weapons Disarmed": "",
		"Brawls Won": "",
		"Bunnies Slaughtered": "",
		"Spells Learned": "",
		"Favorite Spell": "",
		"Favorite School": "",
		"Dragon Souls Collected": "",
		"Words Of Power Learned": "",
		"Words Of Power Unlocked": "",
		"Shouts Learned": "",
		"Shouts Unlocked": "",
		"Shouts Mastered": "",
		"Times Shouted": "",
		"Favorite Shout": "",
		"Soul Gems Used": "",
		"Souls Trapped": "",
		"Magic Items Made": "",
		"Weapons Improved": "",
		"Weapons Made": "",
		"Armor Improved": "",
		"Armor Made": "",
		"Potions Mixed": "",
		"Potions Used": "",
		"Poisons Mixed": "",
		"Poisons Used": "",
		"Ingredients Harvested": "",
		"Ingredients Eaten": "",
		"Nirnroots Found": "",
		"Wings Plucked": "",
		"Total Lifetime Bounty": "",
		"Largest Bounty": "",
		"Locks Picked": "",
		"Pockets Picked": "",
		"Items Pickpocketed": "",
		"Times Jailed": "",
		"Days Jailed": "",
		"Fines Paid": "",
		"Jail Escapes": "",
		"Items Stolen": "",
		"Assaults": "",
		"Murders": "",
		"Horses Stolen": "",
		"Trespasses": "",
		"Eastmarch Bounty": "",
		"Falkreath Bounty": "",
		"Haafingar Bounty": "",
		"Hjaalmarch Bounty": "",
		"The Pale Bounty": "",
		"The Reach Bounty": "",
		"The Rift Bounty": "",
		"Tribal Orcs Bounty": "",
		"Whiterun Bounty": "",
		"Winterhold Bounty": ""
		}
		return items

class SublimePapyrusSkyrimBooleanAnimationVariableNameSuggestionsCommand(SublimePapyrus.SublimePapyrusShowSuggestionsCommand):
	def get_items(self, **args):
		items = {
		"bMotionDriven": "",
		"IsBeastRace": "",
		"IsSneaking": "",
		"IsBleedingOut": "",
		"IsCastingDual": "",
		"Is1HM": "",
		"IsCastingRight": "",
		"IsCastingLeft": "",
		"IsBlockHit": "",
		"IsPlayer": "",
		"IsNPC": "",
		"bIsSynced": "",
		"bVoiceReady": "",
		"bWantCastLeft": "",
		"bWantCastRight": "",
		"bWantCastVoice": "",
		"b1HM_MLh_attack": "",
		"b1HMCombat": "",
		"bAnimationDriven": "",
		"bCastReady": "",
		"bAllowRotation": "",
		"bMagicDraw": "",
		"bMLh_Ready": "",
		"bMRh_Ready": "",
		"bInMoveState": "",
		"bSprintOK": "",
		"bIdlePlaying": "",
		"bIsDialogueExpressive": "",
		"bAnimObjectLoaded": "",
		"bEquipUnequip": "",
		"bAttached": "",
		"bEquipOK": "",
		"bIsH2HSolo": "",
		"bHeadTracking": "",
		"bIsRiding": "",
		"bTalkable": "",
		"bRitualSpellActive": "",
		"bInJumpState": "",
		"bHeadTrackSpine": "",
		"bLeftHandAttack": "",
		"bIsInMT": "",
		"bHumanoidFootIKEnable": "",
		"bHumanoidFootIKDisable": "",
		"bStaggerPlayerOverride": "",
		"bNoStagger": "",
		"bIsStaffLeftCasting": "",
		"bPerkShieldCharge": "",
		"bPerkQuickShot": "",
		"IsAttacking": "",
		"Isblocking": "",
		"IsBashing": "",
		"IsStaggering": "",
		"IsRecoiling": "",
		"IsEquipping": "",
		"IsUnequipping": ""
		}
		return items

class SublimePapyrusSkyrimFloatAnimationVariableNameSuggestionsCommand(SublimePapyrus.SublimePapyrusShowSuggestionsCommand):
	def get_items(self, **args):
		items = {
		"Speed": "",
		"VelocityZ": "",
		"camerafromx": "",
		"camerafromy": "",
		"camerafromz": "",
		"FemaleOffset": "",
		"bodyMorphWeight": "",
		"IsInCastState": "",
		"IsInCastStateDamped": "",
		"blockDown": "",
		"blockLeft": "",
		"blockRight": "",
		"blockUp": "",
		"Direction": "",
		"TurnDelta": "",
		"SpeedWalk": "",
		"SpeedRun": "",
		"fSpeedMin": "",
		"fEquipWeapAdj": "",
		"fIdleTimer": "",
		"fMinSpeed": "",
		"fTwistDirection": "",
		"TurnDeltaDamped": "",
		"TurnMin": "",
		"Pitch": "",
		"PitchLook": "",
		"attackPowerStartTime": "",
		"PitchDefault": "",
		"PitchOverride": "",
		"staggerMagnitude": "",
		"recoilMagnitude": "",
		"SpeedSampled": "",
		"attackComboStartFraction": "",
		"attackIntroLength": "",
		"TimeDelta": "",
		"PitchOffset": "",
		"PitchAcc": "",
		"PitchThresh": "",
		"weapChangeStartFraction": "",
		"RotMax": "",
		"1stPRot": "",
		"1stPRotDamped": "",
		"PitchManualOverride": "",
		"SpeedAcc": ""
		}
		return items

class SublimePapyrusSkyrimIntegerAnimationVariableNameSuggestionsCommand(SublimePapyrus.SublimePapyrusShowSuggestionsCommand):
	def get_items(self, **args):
		items = {
		"iSyncIdleLocomotion": "",
		"IsAttackReady_32": "",
		"iRightHandType": "",
		"iWantBlock": "",
		"iAnnotation": "",
		"iSyncTurnState": "",
		"i1stPerson": "",
		"iLeftHandType": "",
		"iState": "",
		"iState_NPCSprinting": "",
		"iState_NPCDefault": "",
		"iState_NPCSneaking": "",
		"iState_NPCBowDrawn :Sets actor in a bow drawn state. *": "",
		"iDualMagicState": "",
		"iState_NPCBlocking": "",
		"iState_NPCBleedout": "",
		"iBlockState": "",
		"iSyncSprintState": "",
		"iIsInSneak": "",
		"iMagicEquipped": "",
		"iEquippedItemState": "",
		"iMagicState": "",
		"iIsDialogueExpressive": "",
		"iSyncIdleState": "",
		"iState_NPC1HM": "",
		"iState_NPC2HM": "",
		"iState_NPCBow": "",
		"iState_NPCMagic": "",
		"iState_NPCMagicCasting": "",
		"iState_NPCHorse": "",
		"iState_HorseSprint": "",
		"iCharacterSelector": "",
		"iCombatStance": "",
		"iSyncTurnDirection": "",
		"iRegularAttack": "",
		"iRightHandEquipped": "",
		"iLeftHandEquipped": "",
		"iIsPlayer": "",
		"iGetUpType": "",
		"iState_NPCAttacking": "",
		"iState_NPCPowerAttacking": "",
		"iState_NPCAttacking2H": "",
		"iDrunkVariable": "",
		"iState_NPCDrunk": "",
		"iTempSwitch": "",
		"iState_NPCBowDrawnQuickShot": "",
		"iState_NPCBlockingShieldCharge": ""
		}
		return items

class SublimePapyrusSkyrimFloatGameSettingNameSuggestionsCommand(SublimePapyrus.SublimePapyrusShowSuggestionsCommand):
	def get_items(self, **args):
		items = {
		"fActiveEffectConditionUpdateInterval": "",
		"fActorAlertSoundTimer": "",
		"fActorAlphaFadeSeconds": "",
		"fActorAnimZAdjust": "",
		"fActorArmorDesirabilityDamageMult": "",
		"fActorArmorDesirabilitySkillMult": "",
		"fActorDefaultTurningSpeed": "",
		"fActorLeaveWaterBreathTimer": "",
		"fActorLuckSkillMult": "",
		"fActorStrengthEncumbranceMult": "",
		"fActorSwimBreathBase": "",
		"fActorSwimBreathDamage": "",
		"fActorSwimBreathMult": "",
		"fActorTeleportFadeSeconds": "",
		"fActorWeaponDesirabilityDamageMult": "",
		"fActorWeaponDesirabilitySkillMult": "",
		"fAddictionUsageMonitorThreshold": "",
		"fAiAcquireKillBase": "",
		"fAiAcquireKillMult": "",
		"fAIAcquireObjectDistance": "",
		"fAiAcquirePickBase": "",
		"fAiAcquirePickMult": "",
		"fAiAcquireStealBase": "",
		"fAiAcquireStealMult": "",
		"fAIActivateHeight": "",
		"fAIActivateReach": "",
		"fAIActorPackTargetHeadTrackMod": "",
		"fAIAimBlockedHalfCircleRadius": "",
		"fAIAimBlockedToleranceDegrees": "",
		"fAIAwareofPlayerTimer": "",
		"fAIBestHeadTrackDistance": "",
		"fAICombatFleeScoreThreshold": "",
		"fAICombatNoAreaEffectAllyDistance": "",
		"fAICombatNoTargetLOSPriorityMult": "",
		"fAICombatSlopeDifference": "",
		"fAICombatTargetUnreachablePriorityMult": "",
		"fAICombatUnreachableTargetPriorityMult": "",
		"fAICommentTimeWindow": "",
		"fAIConversationExploreTime": "",
		"fAIDefaultSpeechMult": "",
		"fAIDialogueDistance": "",
		"fAIDistanceRadiusMinLocation": "",
		"fAIDistanceTeammateDrawWeapon": "",
		"fAIDodgeDecisionBase": "",
		"fAIDodgeFavorLeftRightMult": "",
		"fAIDodgeVerticalRangedAttackMult": "",
		"fAIDodgeWalkChance": "",
		"fAIEnergyLevelBase": "",
		"fAIEngergyLevelMult": "",
		"fAIEscortFastTravelMaxDistFromPath": "",
		"fAIEscortHysteresisWidth": "",
		"fAIEscortStartStopDelayTime": "",
		"fAIEscortWaitDistanceExterior": "",
		"fAIEscortWaitDistanceInterior": "",
		"fAIExclusiveGreetingTimer": "",
		"fAIExplosiveWeaponDamageMult": "",
		"fAIExplosiveWeaponRangeMult": "",
		"fAIExteriorSpectatorDetection": "",
		"fAIExteriorSpectatorDistance": "",
		"fAIFaceTargetAnimationAngle": "",
		"fAIFindBedChairsDistance": "",
		"fAIFleeConfBase": "",
		"fAIFleeConfMult": "",
		"fAIFleeHealthMult": "",
		"fAIFleeSuccessTimeout": "",
		"fAIForceGreetingTimer": "",
		"fAIFurnitureDestinationRadius": "",
		"fAIGreetingTimer": "",
		"fAIHeadTrackDialogueOffsetRandomValue": "",
		"fAIHeadTrackDialoguePickNewOffsetTimer": "",
		"fAIHeadTrackDialogueResetPositionTimer": "",
		"fAIHeadTrackDialogueStayInOffsetMax": "",
		"fAIHeadTrackDialogueStayInOffsetMin": "",
		"fAIHeadTrackOffsetRandomValueMax": "",
		"fAIHeadTrackOffsetRandomValueMin": "",
		"fAIHeadTrackPickNewOffsetTimer": "",
		"fAIHeadTrackResetPositionTimer": "",
		"fAIHeadTrackStayInOffsetMax": "",
		"fAIHeadTrackStayInOffsetMin": "",
		"fAIHoldDefaultHeadTrackTimer": "",
		"fAIHorseSearchDistance": "",
		"fAIIdleAnimationDistance": "",
		"fAIIdleAnimationLargeCreatureDistanceMult3.000000": "",
		"fAIIdleWaitTimeComplexScene": "",
		"fAIIdleWaitTime": "",
		"fAIInDialogueModeWithPlayerDistance": "",
		"fAIInDialogueModewithPlayerTimer": "",
		"fAIInteriorHeadTrackMult": "",
		"fAIInteriorSpectatorDetection": "",
		"fAIInteriorSpectatorDistance": "",
		"fAILockDoorsSeenRecentlySeconds": "",
		"fAIMagicSpellMult": "",
		"fAIMagicTimer": "",
		"fAIMarkerDestinationRadius": "",
		"fAIMaxAngleRangeMovingToStartSceneDialogue": "",
		"fAIMaxHeadTrackDistanceFromPC": "",
		"fAIMaxHeadTrackDistance": "",
		"fAIMaxLargeCreatureHeadTrackDistance": "",
		"fAIMaxSmileDistance": "",
		"fAIMaxWanderTime": "",
		"fAIMeleeArmorMult": "",
		"fAIMeleeHandMult": "",
		"fAIMinAngleRangeToStartSceneDialogue": "",
		"fAIMinGreetingDistance": "",
		"fAIMinLocationHeight": "",
		"fAIMoveDistanceToRecalcFollowPath": "",
		"fAIMoveDistanceToRecalcTravelPath": "",
		"fAIMoveDistanceToRecalcTravelToActor": "",
		"fAIPatrolHysteresisWidth": "",
		"fAIPatrolMinSecondsAtNormalFurniture": "",
		"fAIPowerAttackCreatureChance": "",
		"fAIPowerAttackKnockdownBonus": "",
		"fAIPowerAttackNPCChance": "",
		"fAIPowerAttackRecoilBonus": "",
		"fAIPursueDistanceLineOfSight": "",
		"fAIRandomizeInitialLocationMinRadius": "",
		"fAIRangedWeaponMult": "",
		"fAIRangMagicSpellMult": "",
		"fAIRevertToScriptTracking": "",
		"fAIShoutMinAimSeconds": "",
		"fAIShoutRetryDelaySeconds": "",
		"fAIShoutToleranceDegrees": "",
		"fAISocialchanceForConversationInterior": "",
		"fAISocialchanceForConversation": "",
		"fAISocialRadiusToTriggerConversationInterior": "",
		"fAISocialRadiusToTriggerConversation": "",
		"fAISocialTimerForConversationsMax": "",
		"fAISocialTimerForConversationsMin": "",
		"fAISocialTimerToWaitForEvent": "",
		"fAISpectatorCommentTimer": "",
		"fAISpectatorRememberThreatTimer": "",
		"fAISpectatorShutdownDistance": "",
		"fAISpectatorThreatDistExplosion": "",
		"fAISpectatorThreatDistMelee": "",
		"fAISpectatorThreatDistMine": "",
		"fAISpectatorThreatDistRanged": "",
		"fAIStayonScriptHeadtrack": "",
		"fAItalktoNPCtimer": "",
		"fAItalktosameNPCtimer": "",
		"fAITrespassWarningTimer": "",
		"fAIUpdateMovementRestrictionsDistance": "",
		"fAIUseMagicToleranceDegrees": "",
		"fAIUseWeaponAnimationTimeoutSeconds": "",
		"fAIUseWeaponDistance": "",
		"fAIUseWeaponToleranceDegrees": "",
		"fAIWaitingforScriptCallback": "",
		"fAIWalkAwayTimerForConversation": "",
		"fAIWanderDefaultMinDist": "",
		"fAlchemyGoldMult": "",
		"fAlchemyIngredientInitMult": "",
		"fAlchemySkillFactor": "",
		"fAmbushOverRideRadiusforPlayerDetection": "",
		"fArmorBaseFactor": "",
		"fArmorRatingBase": "",
		"fArmorRatingMax": "",
		"fArmorRatingPCBase": "",
		"fArmorRatingPCMax": "",
		"fArmorScalingFactor": "",
		"fArmorWeightLightMaxMod": "",
		"fArrowBounceBlockPercentage": "",
		"fArrowBounceLinearSpeed": "",
		"fArrowBounceRotateSpeed": "",
		"fArrowBowFastMult": "",
		"fArrowBowMinTime": "",
		"fArrowBowSlowMult": "",
		"fArrowFakeMass": "",
		"fArrowGravityBase": "",
		"fArrowGravityMin": "",
		"fArrowGravityMult": "",
		"fArrowMaxDistance": "",
		"fArrowMinBowVelocity": "",
		"fArrowMinDistanceForTrails": "",
		"fArrowMinPower": "",
		"fArrowMinSpeedForTrails": "",
		"fArrowMinVelocity": "",
		"fArrowOptimalDistance": "",
		"fArrowSpeedMult": "",
		"fArrowWeakGravity": "",
		"fAuroraFadeInStart": "",
		"fAuroraFadeOutStart": "",
		"fAutoAimMaxDegrees3rdPerson": "",
		"fAutoAimMaxDegreesMelee": "",
		"fAutoAimMaxDegreesVATS": "",
		"fAutoAimMaxDegrees": "",
		"fAutoAimMaxDistance": "",
		"fAutoAimScreenPercentage": "",
		"fAutomaticWeaponBurstCooldownTime": "",
		"fAutomaticWeaponBurstFireTime": "",
		"fAutoraFadeIn": "",
		"fAutoraFadeOut": "",
		"fAvoidPlayerDistance": "",
		"fBarterBuyMin": "",
		"fBarterMax": "",
		"fBarterMin": "",
		"fBarterSellMax": "",
		"fBeamWidthDefault": "",
		"fBigBumpSpeed": "",
		"fBleedoutCheck": "",
		"fBleedoutDefault": "",
		"fBleedoutMin": "",
		"fBleedoutRate": "",
		"fBleedoutRecover": "",
		"fBlinkDelayMax": "",
		"fBlinkDelayMin": "",
		"fBlinkDownTime": "",
		"fBlinkUpTime": "",
		"fBlockAmountHandToHandMult": "",
		"fBlockAmountWeaponMult": "",
		"fBlockMax": "",
		"fBlockPowerAttackMult": "",
		"fBlockScoreNoShieldMult": "",
		"fBlockSkillBase": "",
		"fBlockSkillMult": "",
		"fBlockWeaponBase": "",
		"fBlockWeaponScaling": "",
		"fBloodSplatterCountBase": "",
		"fBloodSplatterCountDamageBase": "",
		"fBloodSplatterCountDamageMult": "",
		"fBloodSplatterCountRandomMargin": "",
		"fBloodSplatterDuration": "",
		"fBloodSplatterFadeStart": "",
		"fBloodSplatterFlareMult": "",
		"fBloodSplatterFlareOffsetScale": "",
		"fBloodSplatterFlareSize": "",
		"fBloodSplatterMaxOpacity2": "",
		"fBloodSplatterMaxOpacity": "",
		"fBloodSplatterMaxSize": "",
		"fBloodSplatterMinOpacity2": "",
		"fBloodSplatterMinOpacity": "",
		"fBloodSplatterMinSize": "",
		"fBloodSplatterOpacityChance": "",
		"fBowDrawTime": "",
		"fBowHoldTimer": "",
		"fBowNPCSpreadAngle": "",
		"fBowZoomStaminaDrainMult": "",
		"fBowZoomStaminaRegenDelay": "",
		"fBribeBase": "",
		"fBribeCostCurve": "",
		"fBribeMoralityMult": "",
		"fBribeMult": "",
		"fBribeNPCLevelMult": "",
		"fBribeScale": "",
		"fBribeSpeechcraftMult": "",
		"fBumpReactionIdealMoveDist": "",
		"fBumpReactionMinMoveDist": "",
		"fBumpReactionSmallDelayTime": "",
		"fBumpReactionSmallWaitTimer": "",
		"fBuoyancyMultBody": "",
		"fBuoyancyMultExtremity": "",
		"fCameraShakeDistFadeDelta": "",
		"fCameraShakeDistFadeStart": "",
		"fCameraShakeDistMin": "",
		"fCameraShakeExplosionDistMult": "",
		"fCameraShakeFadeTime": "",
		"fCameraShakeMultMin": "",
		"fCameraShakeTime": "",
		"fChaseDetectionTimerSetting": "",
		"fCheckDeadBodyTimer": "",
		"fCheckPositionFallDistance": "",
		"fClosetoPlayerDistance": "",
		"fClothingArmorBase": "",
		"fClothingArmorScale": "",
		"fClothingBase": "",
		"fClothingClassScale": "",
		"fClothingJewelryBase": "",
		"fClothingJewelryScale": "",
		"fCombatAbsoluteMaxRangeMult": "",
		"fCombatAcquirePickupAnimationDelay": "",
		"fCombatAcquireWeaponAmmoMinimumScoreMult": "",
		"fCombatAcquireWeaponAvoidTargetRadius": "",
		"fCombatAcquireWeaponCloseDistanceMax": "",
		"fCombatAcquireWeaponCloseDistanceMin": "",
		"fCombatAcquireWeaponDisarmedAcquireTime": "",
		"fCombatAcquireWeaponDisarmedDistanceMax": "",
		"fCombatAcquireWeaponDisarmedDistanceMin": "",
		"fCombatAcquireWeaponDisarmedTime": "",
		"fCombatAcquireWeaponEnchantmentChargeMult": "",
		"fCombatAcquireWeaponFindAmmoDistance": "",
		"fCombatAcquireWeaponMeleeScoreMult": "",
		"fCombatAcquireWeaponMinimumScoreMult": "",
		"fCombatAcquireWeaponMinimumTargetDistance": "",
		"fCombatAcquireWeaponRangedDistanceMax": "",
		"fCombatAcquireWeaponRangedDistanceMin": "",
		"fCombatAcquireWeaponReachDistance": "",
		"fCombatAcquireWeaponScoreCostMult": "",
		"fCombatAcquireWeaponScoreRatioMax": "",
		"fCombatAcquireWeaponSearchFailedDelay": "",
		"fCombatAcquireWeaponSearchRadiusBuffer": "",
		"fCombatAcquireWeaponSearchSuccessDelay": "",
		"fCombatAcquireWeaponTargetDistanceCheck": "",
		"fCombatAcquireWeaponUnarmedDistanceMax": "",
		"fCombatAcquireWeaponUnarmedDistanceMin": "",
		"fCombatActiveCombatantAttackRangeDistance": "",
		"fCombatActiveCombatantLastSeenTime": "",
		"fCombatAdvanceInnerRadiusMax": "",
		"fCombatAdvanceInnerRadiusMid": "",
		"fCombatAdvanceInnerRadiusMin": "",
		"fCombatAdvanceLastDamagedThreshold": "",
		"fCombatAdvanceNormalAttackChance": "",
		"fCombatAdvanceOuterRadiusMax": "",
		"fCombatAdvanceOuterRadiusMid": "",
		"fCombatAdvanceOuterRadiusMin": "",
		"fCombatAdvancePathRetryTime": "",
		"fCombatAdvanceRadiusStaggerMult": "",
		"fCombatAimDeltaThreshold": "",
		"fCombatAimLastSeenLocationTimeLimit": "",
		"fCombatAimMeleeHighPriorityUpdateTime": "",
		"fCombatAimMeleeUpdateTime": "",
		"fCombatAimProjectileBlockedTime": "",
		"fCombatAimProjectileBlockedTime": "",
		"fCombatAimProjectileGroundMinRadius": "",
		"fCombatAimProjectileRandomOffset": "",
		"fCombatAimProjectileUpdateTime": "",
		"fCombatAimTrackTargetUpdateTime": "",
		"fCombatAngleTolerance": "",
		"fCombatAnticipatedLocationCheckDistance": "",
		"fCombatAnticipateTime": "",
		"fCombatApproachTargetSlowdownDecelerationMult": "",
		"fCombatApproachTargetSlowdownDistance": "",
		"fCombatApproachTargetSlowdownUpdateTime": "",
		"fCombatApproachTargetSlowdownVelocityAngle": "",
		"fCombatApproachTargetSprintStopMovingRange": "",
		"fCombatApproachTargetSprintStopRange": "",
		"fCombatApproachTargetUpdateTime": "",
		"fCombatAreaHoldPositionMinimumRadius": "",
		"fCombatAreaStandardAttackedRadius": "",
		"fCombatAreaStandardAttackedTime": "",
		"fCombatAreaStandardCheckViewConeDistanceMax": "",
		"fCombatAreaStandardCheckViewConeDistanceMin": "",
		"fCombatAreaStandardFlyingRadiusMult": "",
		"fCombatAreaStandardRadius": "",
		"fCombatAttackAllowedOverrunDistance": "",
		"fCombatAttackAnimationDrivenDelayTime": "",
		"fCombatAttackAnticipatedDistanceMin": "",
		"fCombatAttackChanceBlockingMultMax": "",
		"fCombatAttackChanceBlockingMultMin": "",
		"fCombatAttackChanceBlockingSwingMult": "",
		"fCombatAttackChanceLastAttackBonusTime": "",
		"fCombatAttackChanceLastAttackBonus": "",
		"fCombatAttackChanceMax": "",
		"fCombatAttackChanceMin": "",
		"fCombatAttackCheckTargetRangeDistance": "",
		"fCombatAttackMovingAttackDistance": "",
		"fCombatAttackMovingAttackReachMult": "",
		"fCombatAttackMovingStrikeAngleMult": "",
		"fCombatAttackPlayerAnticipateMult": "",
		"fCombatAttackStationaryAttackDistance": "",
		"fCombatAttackStrikeAngleMult": "",
		"fCombatAvoidThreatsChance": "",
		"fCombatBackoffChance": "",
		"fCombatBackoffMinDistanceMult": "",
		"fCombatBashChanceMax": "",
		"fCombatBashChanceMin": "",
		"fCombatBashReach": "",
		"fCombatBashTargetBlockingMult": "",
		"fCombatBetweenAdvanceTimer": "",
		"fCombatBlockAttackChanceMax": "",
		"fCombatBlockAttackChanceMin": "",
		"fCombatBlockAttackReachMult": "",
		"fCombatBlockAttackStrikeAngleMult": "",
		"fCombatBlockChanceMax": "",
		"fCombatBlockChanceMin": "",
		"fCombatBlockChanceWeaponMult": "",
		"fCombatBlockMaxTargetRetreatVelocity": "",
		"fCombatBlockStartDistanceMax": "",
		"fCombatBlockStartDistanceMin": "",
		"fCombatBlockStopDistanceMax": "",
		"fCombatBlockStopDistanceMin": "",
		"fCombatBlockTimeMax": "",
		"fCombatBlockTimeMid": "",
		"fCombatBlockTimeMin": "",
		"fCombatBoundWeaponDPSBonus": "",
		"fCombatBuffMaxTimer": "",
		"fCombatBuffStandoffTimer": "",
		"fCombatCastConcentrationOffensiveMagicCastTimeMax": "",
		"fCombatCastConcentrationOffensiveMagicCastTimeMin": "",
		"fCombatCastConcentrationOffensiveMagicChanceMax": "",
		"fCombatCastConcentrationOffensiveMagicChanceMin": "",
		"fCombatCastConcentrationOffensiveMagicWaitTimeMax": "",
		"fCombatCastConcentrationOffensiveMagicWaitTimeMin": "",
		"fCombatCastImmediateOffensiveMagicChanceMax": "",
		"fCombatCastImmediateOffensiveMagicChanceMin": "",
		"fCombatCastImmediateOffensiveMagicHoldTimeAbsoluteMin": "",
		"fCombatCastImmediateOffensiveMagicHoldTimeMax": "",
		"fCombatCastImmediateOffensiveMagicHoldTimeMinDistance": "",
		"fCombatCastImmediateOffensiveMagicHoldTimeMin": "",
		"fCombatChangeProcessFaceTargetDistance": "",
		"fCombatCircleAngleMax": "",
		"fCombatCircleAngleMin": "",
		"fCombatCircleAnglePlayerMult": "",
		"fCombatCircleChanceMax": "",
		"fCombatCircleChanceMin": "",
		"fCombatCircleDistanceMax": "",
		"fCombatCircleDistantChanceMax": "",
		"fCombatCircleDistantChanceMin": "",
		"fCombatCircleMinDistanceMult": "",
		"fCombatCircleMinDistanceRadiusMult": "",
		"fCombatCircleMinMovementDistance": "",
		"fCombatCircleViewConeAngle": "",
		"fCombatCloseRangeTrackTargetDistance": "",
		"fCombatClusterUpdateTime": "",
		"fCombatCollectAlliesTimer": "",
		"fCombatConfidenceModifierMax": "",
		"fCombatConfidenceModifierMin": "",
		"fCombatCoverAttackMaxWaitTime": "",
		"fCombatCoverAttackOffsetDistance": "",
		"fCombatCoverAttackTimeMax": "",
		"fCombatCoverAttackTimeMid": "",
		"fCombatCoverAttackTimeMin": "",
		"fCombatCoverAvoidTargetRadius": "",
		"fCombatCoverCheckCoverHeightMin": "",
		"fCombatCoverCheckCoverHeightOffset": "",
		"fCombatCoverEdgeOffsetDistance": "",
		"fCombatCoverLedgeOffsetDistance": "",
		"fCombatCoverMaxRangeMult": "",
		"fCombatCoverMidPointMaxRangeBuffer": "",
		"fCombatCoverMinimumActiveRange": "",
		"fCombatCoverMinimumRange": "",
		"fCombatCoverObstacleMovedTime": "",
		"fCombatCoverRangeMaxActiveMult": "",
		"fCombatCoverRangeMaxBufferDistance": "",
		"fCombatCoverRangeMinActiveMult": "",
		"fCombatCoverRangeMinBufferDistance": "",
		"fCombatCoverReservationWidthMult": "",
		"fCombatCoverSearchDistanceMax": "",
		"fCombatCoverSearchDistanceMin": "",
		"fCombatCoverSearchFailedDelay": "",
		"fCombatCoverSecondaryThreatLastSeenTime": "",
		"fCombatCoverSecondaryThreatMinDistance": "",
		"fCombatCoverWaitLookOffsetDistance": "",
		"fCombatCoverWaitTimeMax": "",
		"fCombatCoverWaitTimeMid": "",
		"fCombatCoverWaitTimeMin": "",
		"fCombatCurrentWeaponAbsoluteMaxRangeMult": "",
		"fCombatDamageBonusMeleeSneakingMult": "",
		"fCombatDamageBonusSneakingMult": "",
		"fCombatDamageScale": "",
		"fCombatDeadActorHitConeMult": "",
		"fCombatDetectionDialogueIdleMaxElapsedTime": "",
		"fCombatDetectionDialogueIdleMinElapsedTime": "",
		"fCombatDetectionDialogueMaxElapsedTime": "",
		"fCombatDetectionDialogueMinElapsedTime": "",
		"fCombatDetectionFleeingLostRemoveTime": "",
		"fCombatDetectionLostCheckNoticedDistance": "",
		"fCombatDetectionLostRemoveDistanceTime": "",
		"fCombatDetectionLostRemoveDistance": "",
		"fCombatDetectionLostRemoveTime": "",
		"fCombatDetectionLostTimeLimit": "",
		"fCombatDetectionLowDetectionDistance": "",
		"fCombatDetectionLowPriorityDistance": "",
		"fCombatDetectionNoticedDistanceLimit": "",
		"fCombatDetectionNoticedTimeLimit": "",
		"fCombatDetectionVeryLowPriorityDistance": "",
		"fCombatDialogueAllyKilledDistanceMult": "",
		"fCombatDialogueAllyKilledMaxElapsedTime": "",
		"fCombatDialogueAllyKilledMinElapsedTime": "",
		"fCombatDialogueAttackDistanceMult": "",
		"fCombatDialogueAttackMaxElapsedTime": "",
		"fCombatDialogueAttackMinElapsedTime": "",
		"fCombatDialogueAvoidThreatDistanceMult": "",
		"fCombatDialogueAvoidThreatMaxElapsedTime": "",
		"fCombatDialogueAvoidThreatMinElapsedTime": "",
		"fCombatDialogueBashDistanceMult": "",
		"fCombatDialogueBleedoutDistanceMult": "",
		"fCombatDialogueBleedOutMaxElapsedTime": "",
		"fCombatDialogueBleedOutMinElapsedTime": "",
		"fCombatDialogueBlockDistanceMult": "",
		"fCombatDialogueDeathDistanceMult": "",
		"fCombatDialogueFleeDistanceMult": "",
		"fCombatDialogueFleeMaxElapsedTime": "",
		"fCombatDialogueFleeMinElapsedTime": "",
		"fCombatDialogueGroupStrategyDistanceMult": "",
		"fCombatDialogueHitDistanceMult": "",
		"fCombatDialoguePowerAttackDistanceMult": "",
		"fCombatDialogueTauntDistanceMult": "",
		"fCombatDialogueTauntMaxElapsedTime": "",
		"fCombatDialogueTauntMinElapsedTime": "",
		"fCombatDisarmedFindBetterWeaponInitialTime": "",
		"fCombatDisarmedFindBetterWeaponTime": "",
		"fCombatDismemberedLimbVelocity": "",
		"fCombatDistanceMin": "",
		"fCombatDistance": "",
		"fCombatDiveBombChanceMax": "",
		"fCombatDiveBombChanceMin": "",
		"fCombatDiveBombOffsetPercent": "",
		"fCombatDiveBombSlowDownDistance": "",
		"fCombatDodgeAccelerationMult": "",
		"fCombatDodgeAcceptableThreatScoreMult": "",
		"fCombatDodgeAnticipateThreatTime": "",
		"fCombatDodgeBufferDistance": "",
		"fCombatDodgeChanceMax": "",
		"fCombatDodgeChanceMin": "",
		"fCombatDodgeDecelerationMult": "",
		"fCombatDodgeMovingReactionTime": "",
		"fCombatDodgeReactionTime": "",
		"fCombatDPSBowSpeedMult": "",
		"fCombatDPSMeleeSpeedMult": "",
		"fCombatEffectiveDistanceAnticipateTime": "",
		"fCombatEnvironmentBloodChance": "",
		"fCombatFallbackChanceMax": "",
		"fCombatFallbackChanceMin": "",
		"fCombatFallbackDistanceMax": "",
		"fCombatFallbackDistanceMin": "",
		"fCombatFallbackMaxAngle": "",
		"fCombatFallbackMinMovementDistance": "",
		"fCombatFallbackWaitTimeMax": "",
		"fCombatFallbackWaitTimeMin": "",
		"fCombatFindAllyAttackLocationAllyRadius": "",
		"fCombatFindAllyAttackLocationDistanceMax": "",
		"fCombatFindAllyAttackLocationDistanceMin": "",
		"fCombatFindAttackLocationAvoidTargetRadius": "",
		"fCombatFindAttackLocationDistance": "",
		"fCombatFindAttackLocationKeyAngle": "",
		"fCombatFindAttackLocationKeyHeight": "",
		"fCombatFindBetterWeaponTime": "",
		"fCombatFindLateralAttackLocationDistance": "",
		"fCombatFindLateralAttackLocationIntervalMax": "",
		"fCombatFindLateralAttackLocationIntervalMin": "",
		"fCombatFiringArcStationaryTurnMult": "",
		"fCombatFlankingAngleOffsetCostMult": "",
		"fCombatFlankingAngleOffsetMax": "",
		"fCombatFlankingAngleOffset": "",
		"fCombatFlankingDirectionDistanceMult": "",
		"fCombatFlankingDirectionGoalAngleOffset": "",
		"fCombatFlankingDirectionOffsetCostMult": "",
		"fCombatFlankingDirectionRotateAngleOffset": "",
		"fCombatFlankingDistanceMax": "",
		"fCombatFlankingDistanceMin": "",
		"fCombatFlankingGoalAngleFarMaxDistance": "",
		"fCombatFlankingGoalAngleFarMax": "",
		"fCombatFlankingGoalAngleFarMinDistance": "",
		"fCombatFlankingGoalAngleFarMin": "",
		"fCombatFlankingGoalAngleNear": "",
		"fCombatFlankingGoalCheckDistanceMax": "",
		"fCombatFlankingGoalCheckDistanceMin": "",
		"fCombatFlankingGoalCheckDistanceMult": "",
		"fCombatFlankingLocationGridSize": "",
		"fCombatFlankingMaxTurnAngleGoal": "",
		"fCombatFlankingMaxTurnAngle": "",
		"fCombatFlankingNearDistance": "",
		"fCombatFlankingRotateAngle": "",
		"fCombatFlankingStalkRange": "",
		"fCombatFlankingStalkTimeMax": "",
		"fCombatFlankingStalkTimeMin": "",
		"fCombatFlankingStepDistanceMax": "",
		"fCombatFlankingStepDistanceMin": "",
		"fCombatFlankingStepDistanceMult": "",
		"fCombatFleeAllyDistanceMax": "",
		"fCombatFleeAllyDistanceMin": "",
		"fCombatFleeAllyRadius": "",
		"fCombatFleeCoverMinDistance": "",
		"fCombatFleeCoverSearchRadius": "",
		"fCombatFleeDistanceExterior": "",
		"fCombatFleeDistanceInterior": "",
		"fCombatFleeDoorDistanceMax": "",
		"fCombatFleeDoorTargetCheckDistance": "",
		"fCombatFleeInitialDoorRestrictChance": "",
		"fCombatFleeLastDoorRestrictTime": "",
		"fCombatFleeTargetAvoidRadius": "",
		"fCombatFleeTargetGatherRadius": "",
		"fCombatFleeUseDoorChance": "",
		"fCombatFleeUseDoorRestrictTime": "",
		"fCombatFlightEffectiveDistance": "",
		"fCombatFlightMinimumRange": "",
		"fCombatFlyingAttackChanceMax": "",
		"fCombatFlyingAttackChanceMin": "",
		"fCombatFlyingAttackTargetDistanceThreshold": "",
		"fCombatFollowRadiusBase": "",
		"fCombatFollowRadiusMin": "",
		"fCombatFollowRadiusMult": "",
		"fCombatFollowSneakFollowRadius": "",
		"fCombatForwardAttackChance": "",
		"fCombatGiantCreatureReachMult": "",
		"fCombatGrenadeBounceTimeMax": "",
		"fCombatGrenadeBounceTimeMin": "",
		"fCombatGroundAttackChanceMax": "",
		"fCombatGroundAttackChanceMin": "",
		"fCombatGroundAttackTimeMax": "",
		"fCombatGroundAttackTimeMin": "",
		"fCombatGroupCombatStrengthUpdateTime": "",
		"fCombatGroupOffensiveMultMin": "",
		"fCombatGuardFollowBufferDistance": "",
		"fCombatGuardRadiusMin": "",
		"fCombatGuardRadiusMult": "",
		"fCombatHealthRegenRateMult": "",
		"fCombatHideCheckViewConeDistanceMax": "",
		"fCombatHideCheckViewConeDistanceMin": "",
		"fCombatHideFailedTargetDistance": "",
		"fCombatHideFailedTargetLOSDistance": "",
		"fCombatHitConeAngle": "",
		"fCombatHoverAngleLimit": "",
		"fCombatHoverAngleMax": "",
		"fCombatHoverAngleMin": "",
		"fCombatHoverChanceMax": "",
		"fCombatHoverChanceMin": "",
		"fCombatHoverTimeMax": "",
		"fCombatHoverTimeMin": "",
		"fCombatInTheWayTimer": "",
		"fCombatInventoryDesiredRangeScoreMultMax": "",
		"fCombatInventoryDesiredRangeScoreMultMid": "",
		"fCombatInventoryDesiredRangeScoreMultMin": "",
		"fCombatInventoryDualWieldScorePenalty": "",
		"fCombatInventoryEquipmentMinScoreMult": "",
		"fCombatInventoryEquippedScoreBonus": "",
		"fCombatInventoryMaxRangeEquippedBonus": "",
		"fCombatInventoryMaxRangeScoreMult": "",
		"fCombatInventoryMeleeEquipRange": "",
		"fCombatInventoryMinEquipTimeBlock": "",
		"fCombatInventoryMinEquipTimeDefault": "",
		"fCombatInventoryMinEquipTimeMagic": "",
		"fCombatInventoryMinEquipTimeShout": "",
		"fCombatInventoryMinEquipTimeStaff": "",
		"fCombatInventoryMinEquipTimeTorch": "",
		"fCombatInventoryMinEquipTimeWeapon": "",
		"fCombatInventoryMinRangeScoreMult": "",
		"fCombatInventoryMinRangeUnequippedBonus": "",
		"fCombatInventoryOptimalRangePercent": "",
		"fCombatInventoryRangedScoreMult": "",
		"fCombatInventoryResourceCurrentRequiredMult": "",
		"fCombatInventoryResourceDesiredRequiredMult": "",
		"fCombatInventoryResourceRegenTime": "",
		"fCombatInventoryShieldEquipRange": "",
		"fCombatInventoryShoutMaxRecoveryTime": "",
		"fCombatInventoryTorchEquipRange": "",
		"fCombatInventoryUpdateTimer": "",
		"fCombatIronSightsDistance": "",
		"fCombatIronSightsRangeMult": "",
		"fCombatItemBuffTimer": "",
		"fCombatItemRestoreTimer": "",
		"fCombatKillMoveDamageMult": "",
		"fCombatLandingAvoidActorRadius": "",
		"fCombatLandingSearchDistance": "",
		"fCombatLandingZoneDistance": "",
		"fCombatLineOfSightTimer": "",
		"fCombatLocationTargetRadiusMin": "",
		"fCombatLowFleeingTargetHitPercent": "",
		"fCombatLowMaxAttackDistance": "",
		"fCombatLowTargetHitPercent": "",
		"fCombatMagicArmorDistanceMax": "",
		"fCombatMagicArmorDistanceMin": "",
		"fCombatMagicArmorMinCastTime": "",
		"fCombatMagicBoundItemDistance": "",
		"fCombatMagicBuffDuration": "",
		"fCombatMagicCloakDistanceMax": "",
		"fCombatMagicCloakDistanceMin": "",
		"fCombatMagicCloakMinCastTime": "",
		"fCombatMagicConcentrationAimVariance": "",
		"fCombatMagicConcentrationFiringArcMult": "",
		"fCombatMagicConcentrationMinCastTime": "",
		"fCombatMagicConcentrationScoreDuration": "",
		"fCombatMagicDefaultLongDuration": "",
		"fCombatMagicDefaultMinCastTime": "",
		"fCombatMagicDefaultShortDuration": "",
		"fCombatMagicDisarmDistance": "",
		"fCombatMagicDisarmRestrictTime": "",
		"fCombatMagicDrinkPotionWaitTime": "",
		"fCombatMagicDualCastChance": "",
		"fCombatMagicDualCastInterruptTime": "",
		"fCombatMagicImmediateAimVariance": "",
		"fCombatMagicInvisibilityDistance": "",
		"fCombatMagicInvisibilityMinCastTime": "",
		"fCombatMagickaRegenRateMult": "",
		"fCombatMagicLightMinCastTime": "",
		"fCombatMagicOffensiveMinCastTime": "",
		"fCombatMagicParalyzeDistance": "",
		"fCombatMagicParalyzeMinCastTime": "",
		"fCombatMagicParalyzeRestrictTime": "",
		"fCombatMagicProjectileFiringArc": "",
		"fCombatMagicReanimateDistance": "",
		"fCombatMagicReanimateMinCastTime": "",
		"fCombatMagicReanimateRestrictTime": "",
		"fCombatMagicStaggerDistance": "",
		"fCombatMagicSummonMinCastTime": "",
		"fCombatMagicSummonRestrictTime": "",
		"fCombatMagicTargetEffectMinCastTime": "",
		"fCombatMagicWardAttackRangeDistance": "",
		"fCombatMagicWardAttackReachMult": "",
		"fCombatMagicWardCooldownTime": "",
		"fCombatMagicWardMagickaCastLimit": "",
		"fCombatMagicWardMagickaEquipLimit": "",
		"fCombatMagicWardMinCastTime": "",
		"fCombatMaintainOptimalDistanceMaxAngle": "",
		"fCombatMaintainRangeDistanceMin": "",
		"fCombatMaxHoldScore": "",
		"fCombatMaximumOptimalRangeMax": "",
		"fCombatMaximumOptimalRangeMid": "",
		"fCombatMaximumOptimalRangeMin": "",
		"fCombatMaximumProjectileRange": "",
		"fCombatMaximumRange": "",
		"fCombatMeleeTrackTargetDistanceMax": "",
		"fCombatMeleeTrackTargetDistanceMin": "",
		"fCombatMinEngageDistance": "",
		"fCombatMissileImpaleDepth": "",
		"fCombatMissileStickDepth": "",
		"fCombatMonitorBuffsTimer": "",
		"fCombatMoveToActorBufferDistance": "",
		"fCombatMusicGroupThreatRatioMax": "",
		"fCombatMusicGroupThreatRatioMin": "",
		"fCombatMusicGroupThreatRatioTimer": "",
		"fCombatMusicNearCombatInnerRadius": "",
		"fCombatMusicNearCombatOuterRadius": "",
		"fCombatMusicPlayerCombatStrengthCap": "",
		"fCombatMusicPlayerNearStrengthMult": "",
		"fCombatMusicPlayerTargetedThreatRatio": "",
		"fCombatMusicStopTime": "",
		"fCombatMusicUpdateTime": "",
		"fCombatOffensiveBashChanceMax": "",
		"fCombatOffensiveBashChanceMin": "",
		"fCombatOptimalRangeMaxBufferDistance": "",
		"fCombatOptimalRangeMinBufferDistance": "",
		"fCombatOrbitDistance": "",
		"fCombatOrbitTimeMax": "",
		"fCombatOrbitTimeMin": "",
		"fCombatParalyzeTacticalDuration": "",
		"fCombatPathingAccelerationMult": "",
		"fCombatPathingCurvedPathSmoothingMult": "",
		"fCombatPathingDecelerationMult": "",
		"fCombatPathingGoalRayCastPathDistance": "",
		"fCombatPathingIncompletePathMinDistance": "",
		"fCombatPathingLocationCenterOffsetMult": "",
		"fCombatPathingLookAheadDelta": "",
		"fCombatPathingNormalizedRotationSpeed": "",
		"fCombatPathingRefLocationUpdateDistance": "",
		"fCombatPathingRefLocationUpdateTimeDistanceMax": "",
		"fCombatPathingRefLocationUpdateTimeDistanceMin": "",
		"fCombatPathingRefLocationUpdateTimeMax": "",
		"fCombatPathingRefLocationUpdateTimeMin": "",
		"fCombatPathingRetryWaitTime": "",
		"fCombatPathingRotationAccelerationMult": "",
		"fCombatPathingStartRayCastPathDistance": "",
		"fCombatPathingStraightPathCheckDistance": "",
		"fCombatPathingStraightRayCastPathDistance": "",
		"fCombatPathingUpdatePathCostMult": "",
		"fCombatPerchAttackChanceMax": "",
		"fCombatPerchAttackChanceMin": "",
		"fCombatPerchAttackTimeMax": "",
		"fCombatPerchAttackTimeMin": "",
		"fCombatPerchMaxTargetAngle": "",
		"fCombatPlayerBleedoutHealthDamageMult": "",
		"fCombatPlayerLimbDamageMult": "",
		"fCombatProjectileMaxRangeMult": "",
		"fCombatProjectileMaxRangeOptimalMult": "",
		"fCombatRadiusMinMult": "",
		"fCombatRangedAimVariance": "",
		"fCombatRangedAttackChanceLastAttackBonusTime": "",
		"fCombatRangedAttackChanceLastAttackBonus": "",
		"fCombatRangedAttackChanceMax": "",
		"fCombatRangedAttackChanceMin": "",
		"fCombatRangedAttackHoldTimeAbsoluteMin": "",
		"fCombatRangedAttackHoldTimeMax": "",
		"fCombatRangedAttackHoldTimeMinDistance": "",
		"fCombatRangedAttackHoldTimeMin": "",
		"fCombatRangedAttackMaximumHoldTime": "",
		"fCombatRangedDistance": "",
		"fCombatRangedMinimumRange": "",
		"fCombatRangedProjectileFiringArc": "",
		"fCombatRangedStandoffTimer": "",
		"fCombatRelativeDamageMod": "",
		"fCombatRestoreHealthPercentMax": "",
		"fCombatRestoreHealthPercentMin": "",
		"fCombatRestoreHealthRestrictTime": "",
		"fCombatRestoreMagickaPercentMax": "",
		"fCombatRestoreMagickaPercentMin": "",
		"fCombatRestoreMagickaRestrictTime": "",
		"fCombatRestoreStopCastThreshold": "",
		"fCombatRoundAmount": "",
		"fCombatSearchAreaUpdateTime": "",
		"fCombatSearchCenterRadius": "",
		"fCombatSearchCheckDestinationDistanceMax": "",
		"fCombatSearchCheckDestinationDistanceMid": "",
		"fCombatSearchCheckDestinationDistanceMin": "",
		"fCombatSearchCheckDestinationTime": "",
		"fCombatSearchDoorDistanceLow": "",
		"fCombatSearchDoorDistance": "",
		"fCombatSearchDoorSearchRadius": "",
		"fCombatSearchExteriorRadiusMax": "",
		"fCombatSearchExteriorRadiusMin": "",
		"fCombatSearchIgnoreLocationRadius": "",
		"fCombatSearchInteriorRadiusMax": "",
		"fCombatSearchInteriorRadiusMin": "",
		"fCombatSearchInvestigateTime": "",
		"fCombatSearchLocationCheckDistance": "",
		"fCombatSearchLocationCheckTime": "",
		"fCombatSearchLocationInitialCheckTime": "",
		"fCombatSearchLocationInvestigateDistance": "",
		"fCombatSearchLocationRadius": "",
		"fCombatSearchLookTime": "",
		"fCombatSearchRadiusBufferDistance": "",
		"fCombatSearchRadiusMemberDistance": "",
		"fCombatSearchSightRadius": "",
		"fCombatSearchStartWaitTime": "",
		"fCombatSearchUpdateTime": "",
		"fCombatSearchWanderDistance": "",
		"fCombatSelectTargetSwitchUpdateTime": "",
		"fCombatSelectTargetUpdateTime": "",
		"fCombatShoutHeadTrackingAngleMovingMult": "",
		"fCombatShoutHeadTrackingAngleMult": "",
		"fCombatShoutLongRecoveryTime": "",
		"fCombatShoutMaxHeadTrackingAngle": "",
		"fCombatShoutReleaseTime": "",
		"fCombatShoutShortRecoveryTime": "",
		"fCombatSneakAttackBonusMult": "",
		"fCombatSpeakAttackChance": "",
		"fCombatSpeakHitChance": "",
		"fCombatSpeakHitThreshold": "",
		"fCombatSpeakPowerAttackChance": "",
		"fCombatSpeakTauntChance": "",
		"fCombatSpecialAttackChanceMax": "",
		"fCombatSpecialAttackChanceMin": "",
		"fCombatSplashDamageMaxSpeed": "",
		"fCombatSplashDamageMinDamage": "",
		"fCombatSplashDamageMinRadius": "",
		"fCombatStaffTimer": "",
		"fCombatStaminaRegenRateMult": "",
		"fCombatStealthPointAttackedMaxValue": "",
		"fCombatStealthPointDetectedEventMaxValue": "",
		"fCombatStealthPointDrainMult": "",
		"fCombatStealthPointMax": "",
		"fCombatStealthPointRegenAlertWaitTime": "",
		"fCombatStealthPointRegenAttackedWaitTime": "",
		"fCombatStealthPointRegenDetectedEventWaitTime": "",
		"fCombatStealthPointRegenLostWaitTime": "",
		"fCombatStealthPointRegenMin": "",
		"fCombatStealthPointRegenMult": "",
		"fCombatStepAdvanceDistance": "",
		"fCombatStrafeChanceMax": "",
		"fCombatStrafeChanceMin": "",
		"fCombatStrafeDistanceMax": "",
		"fCombatStrafeDistanceMin": "",
		"fCombatStrafeMinDistanceRadiusMult": "",
		"fCombatStrengthUpdateTime": "",
		"fCombatSurroundDistanceMax": "",
		"fCombatSurroundDistanceMin": "",
		"fCombatTargetEngagedLastSeenTime": "",
		"fCombatTargetLocationAvoidNodeRadiusOffset": "",
		"fCombatTargetLocationCurrentReservationDistanceMult": "",
		"fCombatTargetLocationMaxDistance": "",
		"fCombatTargetLocationMinDistanceMult": "",
		"fCombatTargetLocationPathingRadius": "",
		"fCombatTargetLocationRadiusSizeMult": "",
		"fCombatTargetLocationRepositionAngleMult": "",
		"fCombatTargetLocationSwimmingOffset": "",
		"fCombatTargetLocationWidthMax": "",
		"fCombatTargetLocationWidthMin": "",
		"fCombatTargetLocationWidthSizeMult": "",
		"fCombatTeammateFollowRadiusBase": "",
		"fCombatTeammateFollowRadiusMin": "",
		"fCombatTeammateFollowRadiusMult": "",
		"fCombatThreatAnticipateTime": "",
		"fCombatThreatAvoidCost": "",
		"fCombatThreatBufferRadius": "",
		"fCombatThreatCacheVelocityTime": "",
		"fCombatThreatDangerousObjectHealth": "",
		"fCombatThreatExplosiveObjectThreatTime": "",
		"fCombatThreatExtrudeTime": "",
		"fCombatThreatExtrudeVelocityThreshold": "",
		"fCombatThreatNegativeExtrudeTime": "",
		"fCombatThreatProximityExplosionAvoidTime": "",
		"fCombatThreatRatioUpdateTime": "",
		"fCombatThreatSignificantScore": "",
		"fCombatThreatTimedExplosionLength": "",
		"fCombatThreatUpdateTimeMax": "",
		"fCombatThreatUpdateTimeMin": "",
		"fCombatThreatViewCone": "",
		"fCombatUnarmedCritDamageMult": "",
		"fCombatUnreachableTargetCheckTime": "",
		"fCombatVulnerabilityMod": "",
		"fCombatYieldRetryTime": "",
		"fCombatYieldTime": "",
		"fCommentOnPlayerActionsTimer": "",
		"fCommentOnPlayerKnockingThings": "",
		"fConcussionTimer": "",
		"fConeProjectileEnvironmentDistance": "",
		"fConeProjectileEnvironmentTimer": "",
		"fConeProjectileForceBase": "",
		"fConeProjectileForceMultAngular": "",
		"fConeProjectileForceMultLinear": "",
		"fConeProjectileForceMult": "",
		"fConeProjectileWaterScaleMult": "",
		"fCoveredAdvanceMinAdvanceDistanceMax": "",
		"fCoveredAdvanceMinAdvanceDistanceMin": "",
		"fCoverEvaluationLastSeenExpireTime": "",
		"fCoverFiredProjectileExpireTime": "",
		"fCoverFiringReloadClipPercent": "",
		"fCoverWaitReloadClipPercent": "",
		"fCreatureDefaultTurningSpeed": "",
		"fCreditsScrollSpeed": "",
		"fCrimeAlarmRespMult": "",
		"fCrimeDispAttack": "",
		"fCrimeDispMurder": "",
		"fCrimeDispPersonal": "",
		"fCrimeDispPickpocket": "",
		"fCrimeDispSteal": "",
		"fCrimeDispTresspass": "",
		"fCrimeFavorMult": "",
		"fCrimeGoldSkillPenaltyMult": "",
		"fCrimeGoldSteal": "",
		"fCrimePersonalRegardMult": "",
		"fCrimeRegardMult": "",
		"fCrimeSoundBase": "",
		"fCrimeSoundMult": "",
		"fCrimeWitnessRegardMult": "",
		"fDamageArmConditionBase": "",
		"fDamageArmConditionMult": "",
		"fDamagedAVRegenDelay": "",
		"fDamagedHealthRegenDelay": "",
		"fDamagedMagickaRegenDelay": "",
		"fDamagedStaminaRegenDelay": "",
		"fDamageGunWeapCondBase": "",
		"fDamageGunWeapCondMult": "",
		"fDamageMeleeWeapCondBase": "",
		"fDamageMeleeWeapCondMult": "",
		"fDamagePCSkillMax": "",
		"fDamagePCSkillMin": "",
		"fDamageSkillMax": "",
		"fDamageSkillMin": "",
		"fDamageSneakAttackMult": "",
		"fDamageStrengthBase": "",
		"fDamageStrengthMult": "",
		"fDamageToArmorPercentage": "",
		"fDamageToWeaponEnergyMult": "",
		"fDamageToWeaponGunMult": "",
		"fDamageToWeaponLauncherMult": "",
		"fDamageToWeaponMeleeMult": "",
		"fDamageUnarmedPenalty": "",
		"fDamageWeaponMult": "",
		"fDangerousObjectExplosionDamage": "",
		"fDangerousObjectExplosionRadius": "",
		"fDangerousProjectileExplosionDamage": "",
		"fDangerousProjectileExplosionRadius": "",
		"fDaytimeColorExtension": "",
		"fDeadReactionDistance": "",
		"fDeathForceDamageMax": "",
		"fDeathForceDamageMin": "",
		"fDeathForceForceMax": "",
		"fDeathForceForceMin": "",
		"fDeathForceMassBase": "",
		"fDeathForceMassMult": "",
		"fDeathForceRangedDamageMax": "",
		"fDeathForceRangedDamageMin": "",
		"fDeathForceRangedForceMax": "",
		"fDeathForceRangedForceMin": "",
		"fDeathForceSpellImpactMult": "",
		"fDeathSoundMaxDistance": "",
		"fDebrisFadeTime": "",
		"fDecapitateBloodTime": "",
		"fDefaultAngleTolerance": "",
		"fDefaultBowSpeedBonus": "",
		"fDemandBase": "",
		"fDemandMult": "",
		"fDetectEventDistanceNPC": "",
		"fDetectEventDistancePlayer": "",
		"fDetectEventDistanceVeryLoudMult": "",
		"fDetectEventSneakDistanceVeryLoud": "",
		"fDetectionActionTimer": "",
		"fDetectionCombatNonTargetDistanceMult": "",
		"fDetectionCommentTimer": "",
		"fDetectionEventExpireTime": "",
		"fDetectionLargeActorSizeMult": "",
		"fDetectionLOSDistanceAngle": "",
		"fDetectionLOSDistanceMultExterior": "",
		"fDetectionLOSDistanceMultInterior": "",
		"fDetectionNightEyeBonus": "",
		"fDetectionSneakLightMod": "",
		"fDetectionStateExpireTime": "",
		"fDetectionUpdateTimeMaxComplex": "",
		"fDetectionUpdateTimeMax": "",
		"fDetectionUpdateTimeMinComplex": "",
		"fDetectionUpdateTimeMin": "",
		"fDetectionViewCone": "",
		"fDetectProjectileDistanceNPC": "",
		"fDetectProjectileDistancePlayer": "",
		"fDialogFocalDepthRange": "",
		"fDialogFocalDepthStrength": "",
		"fDialogSpeechDelaySeconds": "",
		"fDialogZoomInSeconds": "",
		"fDialogZoomOutSeconds": "",
		"fDifficultyDamageMultiplier": "",
		"fDifficultyDefaultValue": "",
		"fDifficultyMaxValue": "",
		"fDifficultyMinValue": "",
		"fDiffMultHPByPCE": "",
		"fDiffMultHPByPCH": "",
		"fDiffMultHPByPCL": "",
		"fDiffMultHPByPCN": "",
		"fDiffMultHPByPCVE": "",
		"fDiffMultHPByPCVH": "",
		"fDiffMultHPToPCE": "",
		"fDiffMultHPToPCH": "",
		"fDiffMultHPToPCL": "",
		"fDiffMultHPToPCN": "",
		"fDiffMultHPToPCVE": "",
		"fDiffMultHPToPCVH": "",
		"fDiffMultXPH": "",
		"fDiffMultXPVH": "",
		"fDisarmedPickupWeaponDistanceMult": "",
		"fDisenchantSkillUse": "",
		"fDistanceAutomaticallyActivateDoor": "",
		"fDistanceExteriorReactCombat": "",
		"fDistanceFadeActorAutoLoadDoor": "",
		"fDistanceInteriorReactCombat": "",
		"fDistanceProjectileExplosionDetection": "",
		"fDistancetoPlayerforConversations": "",
		"fDOFDistanceMult": "",
		"fDrinkRepeatRate": "",
		"fDyingTimer": "",
		"fEmbeddedWeaponSwitchChance": "",
		"fEmbeddedWeaponSwitchTime": "",
		"fEnchantingCostExponent": "",
		"fEnchantingSkillCostBase": "",
		"fEnchantingSkillCostMult": "",
		"fEnchantingSkillCostScale": "",
		"fEnchantingSkillFactor": "",
		"fEnchantmentEffectPointsMult": "",
		"fEnchantmentGoldMult": "",
		"fEnchantmentPointsMult": "",
		"fEnemyHealthBarTimer": "",
		"fEssentialDeathTime": "",
		"fEssentialDownCombatHealthRegenMult": "",
		"fEssentialHealthPercentReGain": "",
		"fEssentialNonCombatHealRateBonus": "",
		"fEssentialNPCMinimumHealth": "",
		"fEvaluatePackageTimer": "",
		"fEvaluateProcedureTimer": "",
		"fExplodeLimbRemovalDelayVATS": "",
		"fExplodeLimbRemovalDelay": "",
		"fExplosionForceClutterUpBias": "",
		"fExplosionForceKnockdownMinimum": "",
		"fExplosionForceMultAngular": "",
		"fExplosionForceMultLinear": "",
		"fExplosionImageSpaceSwapPower": "",
		"fExplosionKnockStateExplodeDownTime": "",
		"fExplosionLOSBufferDistance": "",
		"fExplosionLOSBuffer": "",
		"fExplosionMaxImpulse": "",
		"fExplosionSourceRefMult": "",
		"fExplosionSplashRadius": "",
		"fExplosionWaterRadiusRatio": "",
		"fExplosiveProjectileBlockedResetTime": "",
		"fExplosiveProjectileBlockedWaitTime": "",
		"fExpressionChangePerSec": "",
		"fExpressionStrengthAdd": "",
		"fEyeHeadingMaxOffsetEmotionAngry": "",
		"fEyeHeadingMaxOffsetEmotionFear": "",
		"fEyeHeadingMaxOffsetEmotionHappy": "",
		"fEyeHeadingMaxOffsetEmotionNeutral": "",
		"fEyeHeadingMaxOffsetEmotionSad": "",
		"fEyeHeadingMinOffsetEmotionAngry": "",
		"fEyeHeadingMinOffsetEmotionFear": "",
		"fEyeHeadingMinOffsetEmotionHappy": "",
		"fEyeHeadingMinOffsetEmotionNeutral": "",
		"fEyeHeadingMinOffsetEmotionSad": "",
		"fEyePitchMaxOffsetEmotionAngry": "",
		"fEyePitchMaxOffsetEmotionFear": "",
		"fEyePitchMaxOffsetEmotionHappy": "",
		"fEyePitchMaxOffsetEmotionNeutral": "",
		"fEyePitchMaxOffsetEmotionSad": "",
		"fEyePitchMinOffsetEmotionAngry": "",
		"fEyePitchMinOffsetEmotionFear": "",
		"fEyePitchMinOffsetEmotionHappy": "",
		"fEyePitchMinOffsetEmotionNeutral": "",
		"fEyePitchMinOffsetEmotionSad": "",
		"fFallLegDamageMult": "",
		"fFastTravelSpeedMult": "",
		"fFastWalkInterpolationBetweenWalkAndRun": "",
		"fFavorCostActivator": "",
		"fFavorCostAttackCrimeMult": "",
		"fFavorCostAttack": "",
		"fFavorCostLoadDoor": "",
		"fFavorCostNonLoadDoor": "",
		"fFavorCostOwnedDoorMult": "",
		"fFavorCostStealContainerCrime": "",
		"fFavorCostStealContainerMult": "",
		"fFavorCostStealObjectMult": "",
		"fFavorCostTakeObject": "",
		"fFavorCostUnlockContainer": "",
		"fFavorCostUnlockDoor": "",
		"fFavorEventStopDistance": "",
		"fFavorEventTriggerDistance": "",
		"fFavorRequestPickDistance": "",
		"fFavorRequestRadius": "",
		"fFavorRequestWaitTimer": "",
		"fFleeDistanceExterior": "",
		"fFleeDistanceInterior": "",
		"fFleeDoneDistanceExterior": "",
		"fFleeDoneDistanceInterior": "",
		"fFleeIsSafeTimer": "",
		"fFloatQuestMarkerFloatHeight": "",
		"fFloatQuestMarkerMaxDistance": "",
		"fFloatQuestMarkerMinDistance": "",
		"fFlyingActorDefaultTurningSpeed": "",
		"fFollowerSpacingAtDoors": "",
		"fFollowExtraCatchUpSpeedMult": "",
		"fFollowMatchSpeedZoneWidth": "",
		"fFollowRunMaxSpeedupMultiplier": "",
		"fFollowRunMinSlowdownMultiplier": "",
		"fFollowSlowdownZoneWidth": "",
		"fFollowSpaceBetweenFollowers": "",
		"fFollowStartSprintDistance": "",
		"fFollowStopZoneMinMult": "",
		"fFollowWalkMaxSpeedupMultiplier": "",
		"fFollowWalkMinSlowdownMultiplier": "",
		"fFollowWalkZoneMult": "",
		"fFriendHitTimer": "",
		"fFriendMinimumLastHitTime": "",
		"fFurnitureMarkerAngleTolerance": "",
		"fFurnitureScaleAnimDurationNPC": "",
		"fFurnitureScaleAnimDurationPlayer": "",
		"fGameplayImpulseMinMass": "",
		"fGameplayImpulseMultBiped": "",
		"fGameplayImpulseMultClutter": "",
		"fGameplayImpulseMultDebrisLarge": "",
		"fGameplayImpulseMultProp": "",
		"fGameplayImpulseMultTrap": "",
		"fGameplayImpulseScale": "",
		"fGameplayiSpeakingEmotionMaxDeltaChange": "",
		"fGameplayiSpeakingEmotionMinDeltaChange": "",
		"fGameplaySpeakingEmotionMaxChangeValue": "",
		"fGameplaySpeakingEmotionMinChangeValue": "",
		"fGameplayVoiceFilePadding": "",
		"fGetHitPainMult": "",
		"fGrabMaxWeightRunning": "",
		"fGrabMaxWeightWalking": "",
		"fGrenadeAgeMax": "",
		"fGrenadeFriction": "",
		"fGrenadeHighArcSpeedPercentage": "",
		"fGrenadeRestitution": "",
		"fGrenadeThrowHitFractionThreshold": "",
		"fGuardPackageAttackRadiusMult": "",
		"fGunDecalCameraDistance": "",
		"fGunParticleCameraDistance": "",
		"fGunReferenceSkill": "",
		"fGunShellCameraDistance": "",
		"fGunShellDirectionRandomize": "",
		"fGunShellEjectSpeed": "",
		"fGunShellLifetime": "",
		"fGunShellRotateRandomize": "",
		"fGunShellRotateSpeed": "",
		"fGunSpreadArmBase": "",
		"fGunSpreadArmMult": "",
		"fGunSpreadCondBase": "",
		"fGunSpreadCondMult": "",
		"fGunSpreadCrouchBase": "",
		"fGunSpreadCrouchMult": "",
		"fGunSpreadDriftBase": "",
		"fGunSpreadDriftMult": "",
		"fGunSpreadHeadBase": "",
		"fGunSpreadHeadMult": "",
		"fGunSpreadIronSightsBase": "",
		"fGunSpreadIronSightsMult": "",
		"fGunSpreadNPCArmBase": "",
		"fGunSpreadNPCArmMult": "",
		"fGunSpreadRunBase": "",
		"fGunSpreadRunMult": "",
		"fGunSpreadSkillBase": "",
		"fGunSpreadSkillMult": "",
		"fGunSpreadWalkBase": "",
		"fGunSpreadWalkMult": "",
		"fHandDamageSkillBase": "",
		"fHandDamageSkillMult": "",
		"fHandDamageStrengthBase": "",
		"fHandDamageStrengthMult": "",
		"fHandHealthMax": "",
		"fHandHealthMin": "",
		"fHandReachDefault": "",
		"fHazardDropMaxDistance": "",
		"fHazardMaxWaitTime": "",
		"fHazardSpacingMult": "",
		"fHeadingMarkerAngleTolerance": "",
		"fHeadTrackSpeedMaxAngle": "",
		"fHeadTrackSpeedMax": "",
		"fHeadTrackSpeedMinAngle": "",
		"fHeadTrackSpeedMin": "",
		"fHealthRegenDelayMax": "",
		"fHitCasterSizeLarge": "",
		"fHitCasterSizeSmall": "",
		"fHorseMountOffsetX": "",
		"fHorseMountOffsetY": "",
		"fHostileActorExteriorDistance": "",
		"fHostileActorInteriorDistance": "",
		"fHostileFlyingActorExteriorDistance": "",
		"fHUDCompassLocationMaxDist": "",
		"fIdleChatterCommentTimerMax": "",
		"fIdleChatterCommentTimer": "",
		"fIdleMarkerAngleTolerance": "",
		"fImpactShaderMaxDistance": "",
		"fImpactShaderMaxMagnitude": "",
		"fImpactShaderMinMagnitude": "",
		"fIntimidateConfidenceMultAverage": "",
		"fIntimidateConfidenceMultBrave": "",
		"fIntimidateConfidenceMultCautious": "",
		"fIntimidateConfidenceMultCowardly": "",
		"fIntimidateConfidenceMultFoolhardy": "",
		"fIntimidateSpeechcraftCurve": "",
		"fIronSightsDOFDistance": "",
		"fIronSightsDOFRange": "",
		"fIronSightsDOFStrengthCap": "",
		"fIronSightsDOFSwitchSeconds": "",
		"fIronSightsFOVTimeChange": "",
		"fIronSightsGunMotionBlur": "",
		"fIronSightsMotionBlur": "",
		"fItemPointsMult": "",
		"fItemRepairCostMult": "",
		"fJogInterpolationBetweenWalkAndRun": "",
		"fJumpDoubleMult": "",
		"fJumpFallHeightExponentNPC": "",
		"fJumpFallHeightExponent": "",
		"fJumpFallHeightMinNPC": "",
		"fJumpFallHeightMin": "",
		"fJumpFallHeightMultNPC": "",
		"fJumpFallHeightMult": "",
		"fJumpFallRiderMult": "",
		"fJumpFallSkillBase": "",
		"fJumpFallSkillMult": "",
		"fJumpFallVelocityMin": "",
		"fJumpHeightMin": "",
		"fJumpMoveBase": "",
		"fJumpMoveMult": "",
		"fJumpSwimmingMult": "",
		"fKarmaModKillingEvilActor": "",
		"fKarmaModMurderingNonEvilCreature": "",
		"fKarmaModMurderingNonEvilNPC": "",
		"fKarmaModStealing": "",
		"fKillCamBaseOdds": "",
		"fKillCamLevelBias": "",
		"fKillCamLevelFactor": "",
		"fKillCamLevelMaxBias": "",
		"fKillMoveMaxDuration": "",
		"fKillWitnessesTimerSetting": "",
		"fKnockbackAgilBase": "",
		"fKnockbackAgilMult": "",
		"fKnockbackDamageBase": "",
		"fKnockbackDamageMult": "",
		"fKnockbackForceMax": "",
		"fKnockbackTime": "",
		"fKnockdownAgilBase": "",
		"fKnockdownAgilMult": "",
		"fKnockdownBaseHealthThreshold": "",
		"fKnockdownChance": "",
		"fKnockdownCurrentHealthThreshold": "",
		"fKnockdownDamageBase": "",
		"fKnockdownDamageMult": "",
		"fLargeProjectilePickBufferSize": "",
		"fLargeProjectileSize": "",
		"fLevelUpCarryWeightMod": "",
		"fLightRecalcTimerPlayer": "",
		"fLightRecalcTimer": "",
		"fLoadingWheelScale": "",
		"fLockLevelBase": "",
		"fLockLevelMult": "",
		"fLockpickBreakAdept": "",
		"fLockpickBreakApprentice": "",
		"fLockPickBreakBase": "",
		"fLockpickBreakExpert": "",
		"fLockpickBreakMaster": "",
		"fLockPickBreakMult": "",
		"fLockpickBreakNovice": "",
		"fLockpickBreakSkillBase": "",
		"fLockpickBreakSkillMult": "",
		"fLockpickBrokenPicksMult": "",
		"fLockPickQualityBase": "",
		"fLockPickQualityMult": "",
		"fLockpickSkillPartialPickBase": "",
		"fLockpickSkillPartialPickMult": "",
		"fLockpickSkillSweetSpotBase": "",
		"fLockpickSkillSweetSpotMult": "",
		"fLockSkillBase": "",
		"fLockSkillMult": "",
		"fLockTrapGoOffBase": "",
		"fLockTrapGoOffMult": "",
		"fLookDownDisableBlinkingAmt": "",
		"fLowHealthTutorialPercentage": "",
		"fLowLevelNPCBaseHealthMult": "",
		"fLowMagickaTutorialPercentage": "",
		"fLowStaminaTutorialPercentage": "",
		"fMagicAbsorbDistanceReachMult": "",
		"fMagicAbsorbVisualTimer": "",
		"fMagicAccumulatingModifierEffectHoldDuration": "",
		"fMagicAreaBaseCostMult": "",
		"fMagicAreaScaleMax": "",
		"fMagicAreaScaleMin": "",
		"fMagicAreaScale": "",
		"fMagicBarrierDepth": "",
		"fMagicBarrierHeight": "",
		"fMagicBarrierSpacing": "",
		"fMagicBoltDuration": "",
		"fMagicBoltSegmentLength": "",
		"fMagicCasterPCSkillCostBase": "",
		"fMagicCasterPCSkillCostMult": "",
		"fMagicCasterSkillCostBase": "",
		"fMagicCasterSkillCostMult": "",
		"fMagicCEEnchantMagOffset": "",
		"fMagicChainExplosionEffectivenessDelta": "",
		"fMagicCloudAreaMin": "",
		"fMagicCloudDurationMin": "",
		"fMagicCloudFindTargetTime": "",
		"fMagicCloudLifeScale": "",
		"fMagicCloudSizeScale": "",
		"fMagicCloudSlowdownRate": "",
		"fMagicCloudSpeedBase": "",
		"fMagicCloudSpeedScale": "",
		"fMagicCostScale": "",
		"fMagicDefaultAccumulatingModifierEffectRate": "",
		"fMagicDefaultTouchDistance": "",
		"fMagicDiseaseTransferBase": "",
		"fMagicDiseaseTransferMult": "",
		"fMagicDispelMagnitudeMult": "",
		"fMagicDualCastingCostBase": "",
		"fMagicDualCastingCostMult": "",
		"fMagicDualCastingEffectivenessBase": "",
		"fMagicDualCastingEffectivenessMult": "",
		"fMagicDualCastingTimeBase": "",
		"fMagicDualCastingTimeMult": "",
		"fMagicDurMagBaseCostMult": "",
		"fMagicEnchantmentChargeBase": "",
		"fMagicEnchantmentChargeMult": "",
		"fMagicEnchantmentDrainBase": "",
		"fMagicEnchantmentDrainMult": "",
		"fMagicExplosionAgilityMult": "",
		"fMagicExplosionClutterMult": "",
		"fMagicExplosionIncorporealMult": "",
		"fMagicExplosionIncorporealTime": "",
		"fMagicExplosionPowerBase": "",
		"fMagicExplosionPowerMax": "",
		"fMagicExplosionPowerMin": "",
		"fMagicExplosionPowerMult": "",
		"fMagicGuideSpacing": "",
		"fMagickaRegenDelayMax": "",
		"fMagickaReturnBase": "",
		"fMagickaReturnMult": "",
		"fMagicLightForwardOffset": "",
		"fMagicLightHeightOffset": "",
		"fMagicLightRadiusBase": "",
		"fMagicLightSideOffset": "",
		"fMagicNightEyeAmbient": "",
		"fMagicPCSkillCostScale": "",
		"fMagicPlayerMinimumInvisibility": "",
		"fMagicPostDrawCastDelay": "",
		"fMagicProjectileMaxDistance": "",
		"fMagicRangeTargetCostMult": "",
		"fMagicResistActorSkillBase": "",
		"fMagicResistActorSkillMult": "",
		"fMagicResistTargetWillpowerBase": "",
		"fMagicResistTargetWillpowerMult": "",
		"fMagicSkillCostScale": "",
		"fMagicSummonMaxAppearTime": "",
		"fMagicTelekinesiDistanceMult": "",
		"fMagicTelekinesisBaseDistance": "",
		"fMagicTelekinesisComplexMaxForce": "",
		"fMagicTelekinesisComplexObjectDamping": "",
		"fMagicTelekinesisComplexSpringDamping": "",
		"fMagicTelekinesisComplexSpringElasticity": "",
		"fMagicTelekinesisDamageBase": "",
		"fMagicTelekinesisDamageMult": "",
		"fMagicTelekinesisDistanceMin": "",
		"fMagicTelekinesisDualCastDamageMult": "",
		"fMagicTelekinesisDualCastThrowMult": "",
		"fMagicTelekinesisLiftPowerMult": "",
		"fMagicTelekinesisMaxForce": "",
		"fMagicTelekinesisMoveAccelerate": "",
		"fMagicTelekinesisMoveBase": "",
		"fMagicTelekinesisMoveMax": "",
		"fMagicTelekinesisObjectDamping": "",
		"fMagicTelekinesisSpringDamping": "",
		"fMagicTelekinesisSpringElasticity": "",
		"fMagicTelekinesisThrowAccelerate": "",
		"fMagicTelekinesisThrowMax": "",
		"fMagicTelekinesisThrow": "",
		"fMagicTrackingLimitComplex": "",
		"fMagicTrackingLimit": "",
		"fMagicTrackingMultBall": "",
		"fMagicTrackingMultBolt": "",
		"fMagicTrackingMultFog": "",
		"fMagicUnitsPerFoot": "",
		"fMagicVACNoPartTargetedMult": "",
		"fMagicVACPartTargetedMult": "",
		"fMagicWardPowerMaxBase": "",
		"fMagicWardPowerMaxMult": "",
		"fMapMarkerMaxPercentSize": "",
		"fMapMarkerMinFadeAlpha": "",
		"fMapMarkerMinPercentSize": "",
		"fMapQuestMarkerMaxPercentSize": "",
		"fMapQuestMarkerMinFadeAlpha": "",
		"fMapQuestMarkerMinPercentSize": "",
		"fMasserAngleFadeEnd": "",
		"fMasserAngleFadeStart": "",
		"fMasserAngleShadowEarlyFade": "",
		"fMasserSpeed": "",
		"fMasserZOffset": "",
		"fMaxArmorRating": "",
		"fMaximumWind": "",
		"fMaxSandboxRescanSeconds": "",
		"fMaxSellMult": "",
		"fMeleeMovementRestrictionsUpdateTime": "",
		"fMeleeSweepViewAngleMult": "",
		"fMinBuyMult": "",
		"fMinDistanceUseHorse": "",
		"fMineAgeMax": "",
		"fMineExteriorRadiusMult": "",
		"fMinesBlinkFast": "",
		"fMinesBlinkMax": "",
		"fMinesBlinkSlow": "",
		"fMinesDelayMin": "",
		"fMinSandboxRescanSeconds": "",
		"fModelReferenceEffectMaxWaitTime": "",
		"fModifiedTargetAttackRange": "",
		"fMotionBlur": "",
		"fMountedMaxLookingDown": "",
		"fMoveCharRunBase": "",
		"fMoveCharWalkBase": "",
		"fMoveEncumEffectNoWeapon": "",
		"fMoveEncumEffect": "",
		"fMoveFlyRunMult": "",
		"fMoveFlyWalkMult": "",
		"fMovementNearTargetAvoidCost": "",
		"fMovementNearTargetAvoidRadius": "",
		"fMovementTargetAvoidCost": "",
		"fMovementTargetAvoidRadiusMult": "",
		"fMovementTargetAvoidRadius": "",
		"fMoveSprintMult": "",
		"fMoveSwimMult": "",
		"fMoveWeightMax": "",
		"fMoveWeightMin": "",
		"fNPCAttributeHealthMult": "",
		"fNPCBaseMagickaMult": "",
		"fNPCHealthLevelBonus": "",
		"fObjectHitH2HReach": "",
		"fObjectHitTwoHandReach": "",
		"fObjectHitWeaponReach": "",
		"fObjectMotionBlur": "",
		"fObjectWeightPickupDetectionMult": "",
		"fOutOfBreathStaminaRegenDelay": "",
		"fPainDelay": "",
		"fPartialPickAverage": "",
		"fPartialPickEasy": "",
		"fPartialPickHard": "",
		"fPartialPickVeryEasy": "",
		"fPartialPickVeryHard": "",
		"fPCBaseHealthMult": "",
		"fPCBaseMagickaMult": "",
		"fPCHealthLevelBonus": "",
		"fPerceptionMult": "",
		"fPerkHeavyArmorExpertSpeedMult": "",
		"fPerkHeavyArmorJourneymanDamageMult": "",
		"fPerkHeavyArmorMasterSpeedMult": "",
		"fPerkHeavyArmorNoviceDamageMult": "",
		"fPerkHeavyArmorSinkGravityMult": "",
		"fPerkLightArmorExpertSpeedMult": "",
		"fPerkLightArmorJourneymanDamageMult": "",
		"fPerkLightArmorMasterRatingMult": "",
		"fPerkLightArmorNoviceDamageMult": "",
		"fPersAdmireAggr": "",
		"fPersAdmireConf": "",
		"fPersAdmireEner": "",
		"fPersAdmireIntel": "",
		"fPersAdmirePers": "",
		"fPersAdmireResp": "",
		"fPersAdmireStre": "",
		"fPersAdmireWillp": "",
		"fPersBoastAggr": "",
		"fPersBoastConf": "",
		"fPersBoastEner": "",
		"fPersBoastIntel": "",
		"fPersBoastPers": "",
		"fPersBoastResp": "",
		"fPersBoastWillp": "",
		"fPersBullyAggr": "",
		"fPersBullyConf": "",
		"fPersBullyEner": "",
		"fPersBullyIntel": "",
		"fPersBullyPers": "",
		"fPersBullyResp": "",
		"fPersBullyStre": "",
		"fPersBullyWillp": "",
		"fPersJokeAggr": "",
		"fPersJokeConf": "",
		"fPersJokeEner": "",
		"fPersJokeIntel": "",
		"fPersJokePers": "",
		"fPersJokeResp": "",
		"fPersJokeStre": "",
		"fPersJokeWillp": "",
		"fPersuasionAccuracyMaxDisposition": "",
		"fPersuasionAccuracyMaxSelect": "",
		"fPersuasionAccuracyMinDispostion": "",
		"fPersuasionAccuracyMinSelect": "",
		"fPersuasionBaseValueMaxDisposition": "",
		"fPersuasionBaseValueMaxSelect": "",
		"fPersuasionBaseValueMinDispostion": "",
		"fPersuasionBaseValueMinSelect": "",
		"fPersuasionBaseValueShape": "",
		"fPersuasionMaxDisposition": "",
		"fPersuasionMaxInput": "",
		"fPersuasionMaxSelect": "",
		"fPersuasionMinDispostion": "",
		"fPersuasionMinInput": "",
		"fPersuasionMinPercentCircle": "",
		"fPersuasionMinSelect": "",
		"fPersuasionShape": "",
		"fPhysicsDamage1Damage": "",
		"fPhysicsDamage1Mass": "",
		"fPhysicsDamage2Damage": "",
		"fPhysicsDamage2Mass": "",
		"fPhysicsDamage3Damage": "",
		"fPhysicsDamage3Mass": "",
		"fPhysicsDamageSpeedBase": "",
		"fPhysicsDamageSpeedMin": "",
		"fPhysicsDamageSpeedMult": "",
		"fPickLevelBase": "",
		"fPickLevelMult": "",
		"fPickNumBase": "",
		"fPickNumMult": "",
		"fPickPocketActorSkillBase": "",
		"fPickPocketActorSkillMult": "",
		"fPickPocketAmountBase": "",
		"fPickPocketAmountMult": "",
		"fPickPocketDetected": "",
		"fPickPocketMaxChance": "",
		"fPickPocketMinChance": "",
		"fPickpocketSkillUsesCurve": "",
		"fPickPocketTargetSkillBase": "",
		"fPickPocketTargetSkillMult": "",
		"fPickPocketWeightBase": "",
		"fPickPocketWeightMult": "",
		"fPickSpring1": "",
		"fPickSpring2": "",
		"fPickSpring3": "",
		"fPickSpring4": "",
		"fPickSpring5": "",
		"fPickupItemDistanceFudge": "",
		"fPickUpWeaponDelay": "",
		"fPickupWeaponDistanceMinMaxDPSMult": "",
		"fPickupWeaponMeleeDistanceMax": "",
		"fPickupWeaponMeleeDistanceMin": "",
		"fPickupWeaponMeleeWeaponDPSMult": "",
		"fPickupWeaponMinDPSImprovementPercent": "",
		"fPickupWeaponRangedDistanceMax": "",
		"fPickupWeaponRangedDistanceMin": "",
		"fPickupWeaponRangedMeleeDPSRatioThreshold": "",
		"fPickupWeaponTargetUnreachableDistanceMult": "",
		"fPickupWeaponUnarmedDistanceMax": "",
		"fPickupWeaponUnarmedDistanceMin": "",
		"fPlayerDeathReloadTime": "",
		"fPlayerDetectActorValue": "",
		"fPlayerDetectionSneakBase": "",
		"fPlayerDetectionSneakMult": "",
		"fPlayerDropDistance": "",
		"fPlayerHealthHeartbeatFast": "",
		"fPlayerHealthHeartbeatSlow": "",
		"fPlayerMaxResistance": "",
		"fPlayerTargetCombatDistance": "",
		"fPlayerTeleportFadeSeconds": "",
		"fPotionGoldValueMult": "",
		"fPotionMortPestleMult": "",
		"fPotionT1AleDurMult": "",
		"fPotionT1AleMagMult": "",
		"fPotionT1CalDurMult": "",
		"fPotionT1CalMagMult": "",
		"fPotionT1MagMult": "",
		"fPotionT1RetDurMult": "",
		"fPotionT1RetMagMult": "",
		"fPotionT2AleDurMult": "",
		"fPotionT2CalDurMult": "",
		"fPotionT2RetDurMult": "",
		"fPotionT3AleMagMult": "",
		"fPotionT3CalMagMult": "",
		"fPotionT3RetMagMult": "",
		"fPowerAttackCoolDownTime": "",
		"fPowerAttackDefaultBonus": "",
		"fPowerAttackStaminaPenalty": "",
		"fPrecipWindMult": "",
		"fProjectileCollisionImpulseScale": "",
		"fProjectileDefaultTracerRange": "",
		"fProjectileDeflectionTime": "",
		"fProjectileInventoryGrenadeFreakoutTime": "",
		"fProjectileInventoryGrenadeTimer": "",
		"fProjectileKnockMinMass": "",
		"fProjectileKnockMultBiped": "",
		"fProjectileKnockMultClutter": "",
		"fProjectileKnockMultProp": "",
		"fProjectileKnockMultTrap": "",
		"fProjectileMaxDistance": "",
		"fProjectileReorientTracerMin": "",
		"fQuestCinematicCharacterFadeInDelay": "",
		"fQuestCinematicCharacterFadeIn": "",
		"fQuestCinematicCharacterFadeOut": "",
		"fQuestCinematicCharacterRemain": "",
		"fQuestCinematicObjectiveFadeInDelay": "",
		"fQuestCinematicObjectiveFadeIn": "",
		"fQuestCinematicObjectiveFadeOut": "",
		"fQuestCinematicObjectivePauseTime": "",
		"fQuestCinematicObjectiveScrollTime": "",
		"fRandomSceneAgainMaxTime": "",
		"fRandomSceneAgainMinTime": "",
		"fRechargeGoldMult": "",
		"fReEquipArmorTime": "",
		"fReflectedAbsorbChanceReduction": "",
		"fRelationshipBase": "",
		"fRelationshipMult": "",
		"fRemoteCombatMissedAttack": "",
		"fRemoveExcessComplexDeadTime": "",
		"fRemoveExcessDeadTime": "",
		"fRepairMax": "",
		"fRepairMin": "",
		"fRepairScavengeMult": "",
		"fRepairSkillBase": "",
		"fRepairSkillMax": "",
		"fReservationExpirationSeconds": "",
		"fResistArrestTimer": "",
		"fRockitDamageBonusWeightMin": "",
		"fRockitDamageBonusWeightMult": "",
		"fRoomLightingTransitionDuration": "",
		"fRumbleBlockStrength": "",
		"fRumbleBlockTime": "",
		"fRumbleHitBlockedStrength": "",
		"fRumbleHitBlockedTime": "",
		"fRumbleHitStrength": "",
		"fRumbleHitTime": "",
		"fRumblePainStrength": "",
		"fRumblePainTime": "",
		"fRumbleShakeRadiusMult": "",
		"fRumbleShakeTimeMult": "",
		"fRumbleStruckStrength": "",
		"fRumbleStruckTime": "",
		"fSandboxBreakfastMax": "",
		"fSandboxBreakfastMin": "",
		"fSandboxCylinderBottom": "",
		"fSandboxCylinderTop": "",
		"fSandBoxDelayEvalSeconds": "",
		"fSandboxDinnerMax": "",
		"fSandboxDinnerMin": "",
		"fSandboxDurationBase": "",
		"fSandboxDurationMultEatSitting": "",
		"fSandboxDurationMultEatStanding": "",
		"fSandboxDurationMultFurniture": "",
		"fSandboxDurationMultIdleMarker": "",
		"fSandboxDurationMultSitting": "",
		"fSandboxDurationMultSleeping": "",
		"fSandboxDurationMultWandering": "",
		"fSandboxDurationRangeMult": "",
		"fSandboxEnergyMultEatSitting": "",
		"fSandboxEnergyMultEatStanding": "",
		"fSandboxEnergyMultFurniture": "",
		"fSandboxEnergyMultIdleMarker": "",
		"fSandboxEnergyMultSitting": "",
		"fSandboxEnergyMultSleeping": "",
		"fSandboxEnergyMultWandering": "",
		"fSandboxEnergyMult": "",
		"fSandBoxExtraDialogueRange": "",
		"fSandBoxInterMarkerMinDist": "",
		"fSandboxLunchMax": "",
		"fSandboxLunchMin": "",
		"fSandboxMealDurationMax": "",
		"fSandboxMealDurationMin": "",
		"fSandBoxRadiusHysteresis": "",
		"fSandBoxSearchRadius": "",
		"fSandboxSleepDurationMax": "",
		"fSandboxSleepDurationMin": "",
		"fSandboxSleepStartMax": "",
		"fSandboxSleepStartMin": "",
		"fSayOncePerDayInfoTimer": "",
		"fScrollCostMult": "",
		"fSecondsBetweenWindowUpdate": "",
		"fSecundaAngleFadeEnd": "",
		"fSecundaAngleFadeStart": "",
		"fSecundaAngleShadowEarlyFade": "",
		"fSecundaSpeed": "",
		"fSecundaZOffset": "",
		"fShieldBaseFactor": "",
		"fShieldBashMax": "",
		"fShieldBashMin": "",
		"fShieldBashPCMax": "",
		"fShieldBashPCMin": "",
		"fShieldBashSkillUseBase": "",
		"fShieldBashSkillUseMult": "",
		"fShieldScalingFactor": "",
		"fShockBoltGrowWidth": "",
		"fShockBoltsLength": "",
		"fShockBoltSmallWidth": "",
		"fShockBoltsRadiusStrength": "",
		"fShockBoltsRadius": "",
		"fShockBranchBoltsRadiusStrength": "",
		"fShockBranchBoltsRadius": "",
		"fShockBranchLifetime": "",
		"fShockBranchSegmentLength": "",
		"fShockBranchSegmentVariance": "",
		"fShockCastVOffset": "",
		"fShockCoreColorB": "",
		"fShockCoreColorG": "",
		"fShockCoreColorR": "",
		"fShockGlowColorB": "",
		"fShockGlowColorG": "",
		"fShockGlowColorR": "",
		"fShockSegmentLength": "",
		"fShockSegmentVariance": "",
		"fShockSubSegmentVariance": "",
		"fShoutTime1": "",
		"fShoutTime2": "",
		"fShoutTimeout": "",
		"fSittingMaxLookingDown": "",
		"fSkillUsageLockPickAverage": "",
		"fSkillUsageLockPickBroken": "",
		"fSkillUsageLockPickEasy": "",
		"fSkillUsageLockPickHard": "",
		"fSkillUsageLockPickVeryEasy": "",
		"fSkillUsageLockPickVeryHard": "",
		"fSkillUsageRechargeMult": "",
		"fSkillUsageSneakHidden": "",
		"fSkillUsageSneakPerSecond": "",
		"fSkillUseCurve": "",
		"fSmallBumpSpeed": "",
		"fSmithingArmorMax": "",
		"fSmithingConditionFactor": "",
		"fSmithingWeaponMax": "",
		"fSneakActionMult": "",
		"fSneakAlertMod": "",
		"fSneakAmbushNonTargetMod": "",
		"fSneakAmbushTargetMod": "",
		"fSneakAttackSkillUsageMelee": "",
		"fSneakAttackSkillUsageRanged": "",
		"fSneakCombatMod": "",
		"fSneakDetectionSizeLarge": "",
		"fSneakDetectionSizeNormal": "",
		"fSneakDetectionSizeSmall": "",
		"fSneakDetectionSizeVeryLarge": "",
		"fSneakDistanceAttenuationExponent": "",
		"fSneakEquippedWeightBase": "",
		"fSneakEquippedWeightMult": "",
		"fSneakExteriorDistanceMult": "",
		"fSneakFlyingDistanceMult": "",
		"fSneakLightExteriorMult": "",
		"fSneakLightMoveMult": "",
		"fSneakLightMult": "",
		"fSneakLightRunMult": "",
		"fSneakMaxDistance": "",
		"fSneakNoticeMin": "",
		"fSneakPerceptionSkillMax": "",
		"fSneakPerceptionSkillMin": "",
		"fSneakRunningMult": "",
		"fSneakSizeBase": "",
		"fSneakSkillMult": "",
		"fSneakSleepBonus": "",
		"fSneakSleepMod": "",
		"fSneakSoundLosMult": "",
		"fSneakSoundsMult": "",
		"fSneakStealthBoyMult": "",
		"fSortActorDistanceListTimer": "",
		"fSpeechCraftBase": "",
		"fSpeechcraftFavorMax": "",
		"fSpeechcraftFavorMin": "",
		"fSpeechCraftMult": "",
		"fSpeechDelay": "",
		"fSpellCastingDetectionHitActorMod": "",
		"fSpellCastingDetectionMod": "",
		"fSpellmakingGoldMult": "",
		"fSplashScale1": "",
		"fSplashScale2": "",
		"fSplashScale3": "",
		"fSplashSoundHeavy": "",
		"fSplashSoundLight": "",
		"fSplashSoundMedium": "",
		"fSplashSoundOutMult": "",
		"fSplashSoundTimer": "",
		"fSplashSoundVelocityMult": "",
		"fSprintEncumbranceMult": "",
		"fSprintStaminaDrainMult": "",
		"fSprintStaminaWeightBase": "",
		"fSprintStaminaWeightMult": "",
		"fStagger1WeapMult": "",
		"fStagger2WeapMult": "",
		"fStaggerAttackBase": "",
		"fStaggerAttackMult": "",
		"fStaggerBlockAttackBase": "",
		"fStaggerBlockAttackMult": "",
		"fStaggerBlockAttackShieldBase": "",
		"fStaggerBlockAttackShieldMult": "",
		"fStaggerBlockBase": "",
		"fStaggerBlockingMult": "",
		"fStaggerBlockMult": "",
		"fStaggerMassBase": "",
		"fStaggerMassMult": "",
		"fStaggerMassOffsetBase": "",
		"fStaggerMassOffsetMult": "",
		"fStaggerMaxDuration": "",
		"fStaggerMin": "",
		"fStaggerPlayerMassMult": "",
		"fStaggerRecoilingMult": "",
		"fStaggerRunningMult": "",
		"fStaggerShieldMult": "",
		"fStaminaAttackWeaponBase": "",
		"fStaminaAttackWeaponMult": "",
		"fStaminaBashBase": "",
		"fStaminaBlockBase": "",
		"fStaminaBlockDmgMult": "",
		"fStaminaBlockStaggerMult": "",
		"fStaminaPowerBashBase": "",
		"fStaminaRegenDelayMax": "",
		"fStarsRotateDays": "",
		"fStarsRotateXAxis": "",
		"fStarsRotateYAxis": "",
		"fStarsRotateZAxis": "",
		"fStatsCameraFOV": "",
		"fStatsCameraNearDistance": "",
		"fStatsHealthLevelMult": "",
		"fStatsHealthStartMult": "",
		"fStatsLineScale": "",
		"fStatsRotationRampTime": "",
		"fStatsRotationSpeedMax": "",
		"fStatsSkillsLookAtX": "",
		"fStatsSkillsLookAtY": "",
		"fStatsSkillsLookAtZ": "",
		"fStatsStarCameraOffsetX": "",
		"fStatsStarCameraOffsetY": "",
		"fStatsStarCameraOffsetZ": "",
		"fStatsStarLookAtX": "",
		"fStatsStarLookAtY": "",
		"fStatsStarLookAtZ": "",
		"fStatsStarScale": "",
		"fStatsStarXIncrement": "",
		"fStatsStarYIncrement": "",
		"fStatsStarZIncrement": "",
		"fStatsStarZInitialOffset": "",
		"fSubmergedAngularDamping": "",
		"fSubmergedLinearDampingH": "",
		"fSubmergedLinearDampingV": "",
		"fSubmergedLODDistance": "",
		"fSubmergedMaxSpeed": "",
		"fSubmergedMaxWaterDistance": "",
		"fSubSegmentVariance": "",
		"fSubtitleSpeechDelay": "",
		"fSummonDistanceCheckThreshold": "",
		"fSummonedCreatureFadeOutSeconds": "",
		"fSummonedCreatureMaxFollowDist": "",
		"fSummonedCreatureMinFollowDist": "",
		"fSummonedCreatureSearchRadius": "",
		"fSunAlphaTransTime": "",
		"fSunDirXExtreme": "",
		"fSunMinimumGlareScale": "",
		"fSunReduceGlareSpeed": "",
		"fSunXExtreme": "",
		"fSunYExtreme": "",
		"fSunZExtreme": "",
		"fSweetSpotAverage": "",
		"fSweetSpotEasy": "",
		"fSweetSpotHard": "",
		"fSweetSpotVeryEasy": "",
		"fSweetSpotVeryHard": "",
		"fTakeBackTimerSetting": "",
		"fTargetMovedCoveredMoveRepathLength": "",
		"fTargetMovedRepathLengthLow": "",
		"fTargetMovedRepathLength": "",
		"fTeammateAggroOnDistancefromPlayer": "",
		"fTeleportDoorActivateDelayTimer": "",
		"fTemperingSkillUseMult": "",
		"fTimerForPlayerFurnitureEnter": "",
		"fTipImpulse": "",
		"fTorchEvaluationTimer": "",
		"fTorchLightLevelInterior": "",
		"fTorchLightLevelMorning": "",
		"fTorchLightLevelNight": "",
		"fTrackDeadZoneXY": "",
		"fTrackDeadZoneZ": "",
		"fTrackEyeXY": "",
		"fTrackEyeZ": "",
		"fTrackFudgeXY": "",
		"fTrackFudgeZ": "",
		"fTrackJustAcquiredDuration": "",
		"fTrackMaxZ": "",
		"fTrackMinZ": "",
		"fTrackSpeed": "",
		"fTrackXY": "",
		"fTrainingBaseCost": "",
		"fTrainingMultCost": "",
		"fTrapHitEventDelayMS": "",
		"fTriggerAvoidPlayerDistance": "",
		"fUnarmedCreatureDPSMult": "",
		"fUnarmedDamageMult": "",
		"fUnarmedNPCDPSMult": "",
		"fUnderwaterFullDepth": "",
		"fValueofItemForNoOwnership": "",
		"fVATSAutomaticMeleeDamageMult": "",
		"fVATSCameraMinTime": "",
		"fVATSCamTransRBDownStart": "",
		"fVATSCamTransRBRampDown": "",
		"fVATSCamTransRBRampup": "",
		"fVATSCamTransRBStart": "",
		"fVATSCamTransRBStrengthCap": "",
		"fVATSCamZoomInTime": "",
		"fVATSChanceHitMult": "",
		"fVATSCriticalChanceBonus": "",
		"fVATSDamageToWeaponMult": "",
		"fVATSDestructibleMult": "",
		"fVATSDistanceFactor": "",
		"fVATSDOFRange": "",
		"fVATSDOFStrengthCap": "",
		"fVATSDOFSwitchSeconds": "",
		"fVATSGrenadeChanceMult": "",
		"fVATSGrenadeDistAimZMult": "",
		"fVATSGrenadeRangeMin": "",
		"fVATSGrenadeRangeMult": "",
		"fVATSGrenadeSkillFactor": "",
		"fVATSGrenadeSuccessExplodeTimer": "",
		"fVATSGrenadeSuccessMaxDistance": "",
		"fVATSGrenadeTargetArea": "",
		"fVATSGrenadeTargetMelee": "",
		"fVATSH2HWarpDistanceMult": "",
		"fVATSImageSpaceTransitionTime": "",
		"fVATSLimbSelectCamPanTime": "",
		"fVATSMaxChance": "",
		"fVATSMaxEngageDistance": "",
		"fVATSMeleeArmConditionBase": "",
		"fVATSMeleeArmConditionMult": "",
		"fVATSMeleeChanceMult": "",
		"fVATSMeleeMaxDistance": "",
		"fVATSMeleeReachMult": "",
		"fVATSMeleeWarpDistanceMult": "",
		"fVATSMoveCameraLimbMult": "",
		"fVATSMoveCameraLimbPercent": "",
		"fVATSMoveCameraMaxSpeed": "",
		"fVATSMoveCameraXPercent": "",
		"fVATSMoveCameraYPercent": "",
		"fVATSParalyzePalmChance": "",
		"fVATSPlaybackDelay": "",
		"fVATSPlayerDamageMult": "",
		"fVATSPlayerMagicTimeSlowdownMult": "",
		"fVATSPlayerTimeUpdateMult": "",
		"fVATSRadialRampup": "",
		"fVATSRadialStart": "",
		"fVATSRadialStrength": "",
		"fVATSRangeSpreadMax": "",
		"fVATSRangeSpreadUncertainty": "",
		"fVATSScreenPercentFactor": "",
		"fVATSShotBurstTime": "",
		"fVatsShotgunSpreadRatio": "",
		"fVATSShotLongBurstTime": "",
		"fVATSSkillFactor": "",
		"fVATSSmartCameraCheckHeight": "",
		"fVATSSmartCameraCheckStepCount": "",
		"fVATSSmartCameraCheckStepDistance": "",
		"fVATSSpreadMult": "",
		"fVATSStealthMult": "",
		"fVATSStrangerDistance": "",
		"fVATSStrangerOdds": "",
		"fVATSTargetActorHeightPanMult": "",
		"fVATSTargetActorZMultFarDist": "",
		"fVATSTargetActorZMultFar": "",
		"fVATSTargetActorZMultNear": "",
		"fVATSTargetFOVMinDist": "",
		"fVATSTargetFOVMinFOV": "",
		"fVATSTargetFOVMultFarDist": "",
		"fVATSTargetFOVMultFar": "",
		"fVATSTargetFOVMultNear": "",
		"fVATSTargetRotateMult": "",
		"fVATSTargetScanRotateMult": "",
		"fVATSTargetSelectCamPanTime": "",
		"fVATSTargetTimeUpdateMult": "",
		"fVATSThrownWeaponRangeMult": "",
		"fVoiceRateBase": "",
		"fWardAngleForExplosions": "",
		"fWarningTimer": "",
		"fWaterKnockdownSizeLarge": "",
		"fWaterKnockdownSizeNormal": "",
		"fWaterKnockdownSizeSmall": "",
		"fWaterKnockdownSizeVeryLarge": "",
		"fWaterKnockdownVelocity": "",
		"fWeaponBashMax": "",
		"fWeaponBashMin": "",
		"fWeaponBashPCMax": "",
		"fWeaponBashPCMin": "",
		"fWeaponBashSkillUseBase": "",
		"fWeaponBashSkillUseMult": "",
		"fWeaponBlockSkillUseBase": "",
		"fWeaponBlockSkillUseMult": "",
		"fWeaponClutterKnockBipedScale": "",
		"fWeaponClutterKnockMaxWeaponMass": "",
		"fWeaponClutterKnockMinClutterMass": "",
		"fWeaponClutterKnockMult": "",
		"fWeaponConditionCriticalChanceMult": "",
		"fWeaponConditionJam1": "",
		"fWeaponConditionJam2": "",
		"fWeaponConditionJam3": "",
		"fWeaponConditionJam4": "",
		"fWeaponConditionJam5": "",
		"fWeaponConditionJam6": "",
		"fWeaponConditionJam7": "",
		"fWeaponConditionJam8": "",
		"fWeaponConditionJam9": "",
		"fWeaponConditionJam10": "",
		"fWeaponConditionRateOfFire1": "",
		"fWeaponConditionRateOfFire2": "",
		"fWeaponConditionRateOfFire3": "",
		"fWeaponConditionRateOfFire4": "",
		"fWeaponConditionRateOfFire5": "",
		"fWeaponConditionRateOfFire6": "",
		"fWeaponConditionRateOfFire7": "",
		"fWeaponConditionRateOfFire8": "",
		"fWeaponConditionRateOfFire9": "",
		"fWeaponConditionRateOfFire10": "",
		"fWeaponConditionReloadJam1": "",
		"fWeaponConditionReloadJam2": "",
		"fWeaponConditionReloadJam3": "",
		"fWeaponConditionReloadJam4": "",
		"fWeaponConditionReloadJam5": "",
		"fWeaponConditionReloadJam6": "",
		"fWeaponConditionReloadJam7": "",
		"fWeaponConditionReloadJam8": "",
		"fWeaponConditionReloadJam9": "",
		"fWeaponConditionReloadJam10": "",
		"fWeaponConditionSpread1": "",
		"fWeaponConditionSpread2": "",
		"fWeaponConditionSpread3": "",
		"fWeaponConditionSpread4": "",
		"fWeaponConditionSpread5": "",
		"fWeaponConditionSpread6": "",
		"fWeaponConditionSpread7": "",
		"fWeaponConditionSpread8": "",
		"fWeaponConditionSpread9": "",
		"fWeaponConditionSpread10": "",
		"fWeaponTwoHandedAnimationSpeedMult": "",
		"fWeatherFlashAmbient": "",
		"fWeatherFlashDirectional": "",
		"fWeatherFlashDuration": "",
		"fWeatherTransAccel": "",
		"fWeatherTransMax": "",
		"fWeatherTransMin": "",
		"fWortalchmult": "",
		"fWortcraftChanceIntDenom": "",
		"fWortcraftChanceLuckDenom": "",
		"fWortcraftStrChanceDenom": "",
		"fWortcraftStrCostDenom": "",
		"fWortFailSkillUseMagnitude": "",
		"fWortStrMult": "",
		"fXPLevelUpBase": "",
		"fXPLevelUpMult": "",
		"fXPPerSkillRank": "",
		"fZKeyComplexHelperMinDistance": "",
		"fZKeyComplexHelperScale": "",
		"fZKeyComplexHelperWeightMax": "",
		"fZKeyComplexHelperWeightMin": "",
		"fZKeyHeavyWeight": "",
		"fZKeyMaxContactDistance": "",
		"fZKeyMaxContactMassRatio": "",
		"fZKeyMaxForceScaleHigh": "",
		"fZKeyMaxForceScaleLow": "",
		"fZKeyMaxForceWeightHigh": "",
		"fZKeyMaxForceWeightLow": "",
		"fZKeyMaxForce": "",
		"fZKeyObjectDamping": "",
		"fZKeySpringDamping": "",
		"fZKeySpringElasticity": ""
		}
		return items

class SublimePapyrusSkyrimIntegerGameSettingNameSuggestionsCommand(SublimePapyrus.SublimePapyrusShowSuggestionsCommand):
	def get_items(self, **args):
		items = {
		"iActivatePickLength": "",
		"iActorKeepTurnDegree": "",
		"iActorLuckSkillBase": "",
		"iActorTorsoMaxRotation": "",
		"iAICombatMaxAllySummonCount": "",
		"iAICombatMinDetection": "",
		"iAICombatRestoreHealthPercentage": "",
		"iAICombatRestoreMagickaPercentage": "",
		"iAIFleeMaxHitCount": "",
		"iAIMaxSocialDistanceToTriggerEvent": "",
		"iAimingNumIterations": "",
		"iAINPCRacePowerChance": "",
		"iAINumberActorsComplexScene": "",
		"iAINumberDaysToStayBribed": "",
		"iAINumberDaysToStayIntimidated": "",
		"iAISocialDistanceToTriggerEvent": "",
		"iAlertAgressionMin": "",
		"iAllowAlchemyDuringCombat": "",
		"iAllowRechargeDuringCombat": "",
		"iAllowRepairDuringCombat": "",
		"iAllyHitCombatAllowed": "",
		"iAllyHitNonCombatAllowed": "",
		"iArmorBaseSkill": "",
		"iArmorDamageBootsChance": "",
		"iArmorDamageCuirassChance": "",
		"iArmorDamageGauntletsChance": "",
		"iArmorDamageGreavesChance": "",
		"iArmorDamageHelmChance": "",
		"iArmorDamageShieldChance": "",
		"iArrestOnSightNonViolent": "",
		"iArrestOnSightViolent": "",
		"iArrowInventoryChance": "",
		"iArrowMaxCount": "",
		"iAttackOnSightNonViolent": "",
		"iAttackOnSightViolent": "",
		"iAttractModeIdleTime": "",
		"iAVDAutoCalcSkillMax": "",
		"iAVDhmsLevelup": "",
		"iAVDSkillsLevelUp": "",
		"iAVDSkillStart": "",
		"iAvoidHurtingNonTargetsResponsibility": "",
		"iBallisticProjectilePathPickSegments": "",
		"iBloodSplatterMaxCount": "",
		"iBoneLODDistMult": "",
		"iClassAcrobat": "",
		"iClassAgent": "",
		"iClassArcher": "",
		"iClassAssassin": "",
		"iClassBarbarian": "",
		"iClassBard": "",
		"iClassBattlemage": "",
		"iClassCharactergenClass": "",
		"iClassCrusader": "",
		"iClassHealer": "",
		"iClassKnight": "",
		"iClassMage": "",
		"iClassMonk": "",
		"iClassNightblade": "",
		"iClassPilgrim": "",
		"iClassPriest": "",
		"iClassRogue": "",
		"iClassScout": "",
		"iClassSorcerer": "",
		"iClassSpellsword": "",
		"iClassThief": "",
		"iClassWarrior": "",
		"iClassWitchhunter": "",
		"iCombatAimMaxIterations": "",
		"iCombatCastDrainMinimumValue": "",
		"iCombatCrippledTorsoHitStaggerChance": "",
		"iCombatDismemberPartChance": "",
		"iCombatExplodePartChance": "",
		"iCombatFlankingAngleOffsetCount": "",
		"iCombatFlankingAngleOffsetGoalCount": "",
		"iCombatFlankingDirectionOffsetCount": "",
		"iCombatHighPriorityModifier": "",
		"iCombatHoverLocationCount": "",
		"iCombatSearchDoorFailureMax": "",
		"iCombatStealthPointDetectionThreshold": "",
		"iCombatStealthPointSneakDetectionThreshold": "",
		"iCombatTargetLocationCount": "",
		"iCombatTargetPlayerSoftCap": "",
		"iCombatUnloadedActorLastSeenTimeLimit6": "",
		"iCommonSoulActorLevel": "",
		"iCrimeAlarmLowRecDistance": "",
		"iCrimeAlarmRecDistance": "",
		"iCrimeCommentNumber": "",
		"iCrimeDaysInPrisonMod": "",
		"iCrimeEnemyCoolDownTimer": "",
		"iCrimeFavorBaseValue": "",
		"iCrimeGoldAttack": "",
		"iCrimeGoldEscape": "",
		"iCrimeGoldMinValue": "",
		"iCrimeGoldMurder": "",
		"iCrimeGoldPickpocket": "",
		"iCrimeGoldStealHorse": "",
		"iCrimeGoldTrespass": "",
		"iCrimeGoldWerewolf": "",
		"iCrimeMaxNumberofDaysinJail": "",
		"iCrimeRegardBaseValue": "",
		"iCrimeValueAttackValue": "",
		"iCurrentTargetBonus": "",
		"iDeathDropWeaponChance": "",
		"iDebrisMaxCount": "",
		"iDetectEventLightLevelExterior": "",
		"iDetectEventLightLevelInterior": "",
		"iDialogueDispositionFriendValue": "",
		"iDismemberBloodDecalCount": "",
		"iDispKaramMax": "",
		"iDistancetoAttackedTarget": "",
		"iFallLegDamageChance": "",
		"iFavorAllyValue": "",
		"iFavorConfidantValue": "",
		"iFavorFriendValue": "",
		"iFavorLoverValue": "",
		"iFavorPointsRestore": "",
		"iFriendHitCombatAllowed": "",
		"iFriendHitNonCombatAllowed": "",
		"iGameplayiSpeakingEmotionDeltaChange": "",
		"iGameplayiSpeakingEmotionListenValue": "",
		"iGrandSoulActorLevel": "",
		"iGreaterSoulActorLevel": "",
		"iGuardWarnings": "",
		"iHairColor00": "",
		"iHairColor01": "",
		"iHairColor02": "",
		"iHairColor03": "",
		"iHairColor04": "",
		"iHairColor05": "",
		"iHairColor06": "",
		"iHairColor07": "",
		"iHairColor08": "",
		"iHairColor09": "",
		"iHairColor10": "",
		"iHairColor11": "",
		"iHairColor12": "",
		"iHairColor13": "",
		"iHairColor14": "",
		"iHairColor15": "",
		"iHorseTurnDegreesPerSecond": "",
		"iHorseTurnDegreesRampUpPerSecond": "",
		"iInventoryAskQuantityAt": "",
		"iKarmaMax": "",
		"iKarmaMin": "",
		"iKillCamLevelOffset": "",
		"iLargeProjectilePickCount": "",
		"iLesserSoulActorLevel": "",
		"iLevelUpReminder": "",
		"iLightLevelExteriorMod": "",
		"iLightLevelInteriorMod": "",
		"iLightLevelMax": "",
		"iLowLevelNPCMaxLevel": "",
		"iMagicGuideWaypoints": "",
		"iMagicLightMaxCount": "",
		"iMapMarkerFadeStartDistance": "",
		"iMapMarkerRevealDistance": "",
		"iMapMarkerVisibleDistance": "",
		"iMasserSize": "",
		"iMaxAttachedArrows": "",
		"iMaxCharacterLevel": "",
		"iMaxPlayerRunes": "",
		"iMaxSummonedCreatures": "",
		"iMessCrippledLimbExplodeBonus": "",
		"iMessIntactLimbDismemberChance": "",
		"iMessTargetedLimbExplodeBonus": "",
		"iMessTorsoExplodeChance": "",
		"iMinClipSizeToAddReloadDelay": "",
		"iMineDisarmExperience": "",
		"iMoodFaceValue": "",
		"iNPCBasePerLevelHealthMult": "",
		"iNumberActorsAllowedToFollowPlayer": "",
		"iNumberActorsGoThroughLoadDoorInCombat": "",
		"iNumberActorsInCombatPlayer": "",
		"iNumberGuardsCrimeResponse": "",
		"iNumExplosionDecalCDPoint": "",
		"iPCStartSpellSkillLevel": "",
		"iPerkAttackDisarmChance": "",
		"iPerkBlockDisarmChance": "",
		"iPerkBlockStaggerChance": "",
		"iPerkHandToHandBlockRecoilChance": "",
		"iPerkHeavyArmorJumpSum": "",
		"iPerkHeavyArmorSinkSum": "",
		"iPerkLightArmorMasterMinSum": "",
		"iPerkMarksmanKnockdownChance": "",
		"iPerkMarksmanParalyzeChance": "",
		"iPersuasionAngleMax": "",
		"iPersuasionAngleMin": "",
		"iPersuasionBribeCrime": "",
		"iPersuasionBribeGold": "",
		"iPersuasionBribeRefuse": "",
		"iPersuasionBribeScale": "",
		"iPersuasionDemandDisposition": "",
		"iPersuasionDemandGold": "",
		"iPersuasionDemandRefuse": "",
		"iPersuasionDemandScale": "",
		"iPersuasionInner": "",
		"iPersuasionMiddle": "",
		"iPersuasionOuter": "",
		"iPersuasionPower1": "",
		"iPersuasionPower2": "",
		"iPersuasionPower3": "",
		"iPickPocketWarnings": "",
		"iPlayerCustomClass": "",
		"iPlayerHealthHeartbeatFadeMS": "",
		"iProjectileMaxRefCount": "",
		"iProjectileMineShooterCanTrigger": "",
		"iQuestReminderPipboyDisabledTime": "",
		"iRelationshipAcquaintanceValue": "",
		"iRelationshipAllyValue": "",
		"iRelationshipArchnemesisValue": "",
		"iRelationshipConfidantValue": "",
		"iRelationshipEnemyValue": "",
		"iRelationshipFoeValue": "",
		"iRelationshipFriendValue": "",
		"iRelationshipLoverValue": "",
		"iRelationshipRivalValue": "",
		"iRemoveExcessDeadComplexCount": "",
		"iRemoveExcessDeadComplexTotalActorCount": "",
		"iRemoveExcessDeadCount": "",
		"iRemoveExcessDeadTotalActorCount": "",
		"iSecondsToSleepPerUpdate": "",
		"iSecundaSize": "",
		"iShockBranchNumBolts": "",
		"iShockBranchSegmentsPerBolt": "",
		"iShockDebug": "",
		"iShockNumBolts": "",
		"iShockSegmentsPerBolt": "",
		"iShockSubSegments": "",
		"iSkillPointsTagSkillMult": "",
		"iSkillUsageSneakFullDetection": "",
		"iSkillUsageSneakMinDetection": "",
		"iSneakSkillUseDistance": "",
		"iSoundLevelLoud": "",
		"iSoundLevelNormal": "",
		"iSoundLevelSilent": "",
		"iSoundLevelVeryLoud": "",
		"iSpeechChallengeDifficultyAverage": "",
		"iSpeechChallengeDifficultyEasy": "",
		"iSpeechChallengeDifficultyHard": "",
		"iSpeechChallengeDifficultyVeryEasy": "",
		"iSpeechChallengeDifficultyVeryHard": "",
		"iStaggerAttackChance": "",
		"iStealWarnings": "",
		"iTrainingExpertCost": "",
		"iTrainingExpertSkill": "",
		"iTrainingJourneymanCost": "",
		"iTrainingJourneymanSkill": "",
		"iTrainingMasterCost": "",
		"iTrainingMasterSkill": "",
		"iTrainingNumAllowedPerLevel": "",
		"iTrespassWarnings": "",
		"iVATSCameraHitDist": "",
		"iVATSConcentratedFireBonus": "",
		"iVATSStrangerMaxHP": "",
		"iVoicePointsDefault": "",
		"iWeaponCriticalHitDropChance": "",
		"iXPBase": "",
		"iXPBumpBase": "",
		"iXPRewardDiscoverMapMarker": "",
		"iXPRewardDiscoverSecretArea": "",
		"iXPRewardHackComputer": "",
		"iXPRewardKillOpponent": "",
		"iXPRewardPickLock": ""
		}
		return items

class SublimePapyrusSkyrimStringGameSettingNameSuggestionsCommand(SublimePapyrus.SublimePapyrusShowSuggestionsCommand):
	def get_items(self, **args):
		items = {
		"sAccept": "",
		"sActionMapping": "",
		"sActivateCreatureCalmed": "",
		"sActivateNPCCalmed": "",
		"sActivate": "",
		"sActivationChoiceMessage": "",
		"sActiveEffects": "",
		"sActiveMineDescription": "",
		"sActorFade": "",
		"sAddCrimeGold": "",
		"sAddedEffects": "",
		"sAddedNote": "",
		"sAddItemtoInventory": "",
		"sAddItemtoSpellList": "",
		"sAdd": "",
		"sAlchemyMenuDescription": "",
		"sAlchemy": "",
		"sAllegiance": "",
		"sAllItems": "",
		"sAlreadyKnown": "",
		"sAlreadyPlacedMine": "",
		"sAlteration": "",
		"sAmber": "",
		"sAnimationCanNotEquipArmor": "",
		"sAnimationCanNotEquipWeapon": "",
		"sAnimationCanNotUnequip": "",
		"sApparel": "",
		"sAreaText": "",
		"sArmorEnchantments": "",
		"sArmorRating": "",
		"sArmorSmithing": "",
		"sArmor": "",
		"sAttack": "",
		"sAttributeDamaged": "",
		"sAttributeDrained": "",
		"sAttributesCount": "",
		"sAttributesTitle": "",
		"sAutoLoading": "",
		"sAutosaveAbbrev": "",
		"sAutoSaveDisabledDueToLackOfSpace": "",
		"sAutoSavingLong": "",
		"sAutoSaving": "",
		"sBack": "",
		"sBleedingOutMessage": "",
		"sBloodParticleDefault": "",
		"sBloodParticleMeleeDefault": "",
		"sBloodSplatterAlpha01OPTFilename": "",
		"sBloodSplatterColor01OPTFilename": "",
		"sBloodSplatterFlare01Filename": "",
		"sBloodTextureDefault": "",
		"sBooks": "",
		"sBountyStatString": "",
		"sBounty": "",
		"sBrightness": "",
		"sBroken": "",
		"sButtonLocked": "",
		"sButton": "",
		"sCameraPitch": "",
		"sCancel": "",
		"sCanNotEquipWornEnchantment": "",
		"sCanNotReadBook": "",
		"sCanNotTrainAnymore": "",
		"sCanNotTrainHigher": "",
		"sCantChangeResolution": "",
		"sCantEquipBrokenItem": "",
		"sCantEquipGeneric": "",
		"sCantEquipPowerArmor": "",
		"sCantHotkeyItem": "",
		"sCantQuickLoad": "",
		"sCantQuickSave": "",
		"sCantRemoveWornItem": "",
		"sCantRepairPastMax": "",
		"sCantSaveNow": "",
		"sCantUnequipGeneric": "",
		"sChangeItemSelection": "",
		"sCharGenControlsDisabled": "",
		"sChemsAddicted": "",
		"sChemsWithdrawal": "",
		"sChemsWornOff": "",
		"sChooseSoulGem": "",
		"sChoose": "",
		"sCleared": "",
		"sClearSelections": "",
		"sClose": "",
		"sCombatCannotActivate": "",
		"sConfirmAttribute": "",
		"sConfirmContinue": "",
		"sConfirmDelete": "",
		"sConfirmDisenchant": "",
		"sConfirmLoad": "",
		"sConfirmNew": "",
		"sConfirmSave": "",
		"sConfirmSpendSoul": "",
		"sConfirmWarning": "",
		"sConjuration": "",
		"sConstructibleMenuConfirm": "",
		"sConstructibleMenuDescription": "",
		"sContainerItemsTitle": "",
		"sContainerPlaceChance": "",
		"sContainerStealChance": "",
		"sContinue": "",
		"sContractedDisease": "",
		"sControllerOption": "",
		"sCorruptContentMessage": "",
		"sCraft": "",
		"sCreatedPoisonNamePrefix": "",
		"sCreatedPotionNamePrefix": "",
		"sCreated": "",
		"sCreate": "",
		"sCriticalStrike": "",
		"sCrosshair": "",
		"sCurrentLocation": "",
		"sCurrentObjective": "",
		"sCursorFilename": "",
		"sDaedric": "",
		"sDamage": "",
		"sDefaultMessage": "",
		"sDefaultPlayerName": "",
		"sDeleteSaveGame": "",
		"sDeleteSuccessful": "",
		"sDestruction": "",
		"sDeviceRemoved": "",
		"sDevice": "",
		"sDialogSubtitles": "",
		"sDifficulty": "",
		"sDisableHelp": "",
		"sDisableXBoxController": "",
		"sDiscoveredEffects": "",
		"sDiscoveredIngredientEffectEating": "",
		"sDiscoveredText": "",
		"sDisenchant": "",
		"sDismemberParticleDefault": "",
		"sDismemberRobotParticleDefault": "",
		"sDone": "",
		"sDownloadsAvailable": "",
		"sDownloadsNotAvail": "",
		"sDragonSoulAcquired": "",
		"sDragon": "",
		"sDraugr": "",
		"sDropEquippedItemWarning": "",
		"sDropQuestItemWarning": "",
		"sDungeonCleared": "",
		"sDurationText": "",
		"sDwarven": "",
		"sEbony": "",
		"sEffectAlreadyAdded": "",
		"sEffectsListDisplayHours": "",
		"sEffectsListDisplayHour": "",
		"sEffectsListDisplayMins": "",
		"sEffectsListDisplayMin": "",
		"sEffectsListDisplaySecs": "",
		"sEffectsListDisplaySec": "",
		"sEffectsVolume": "",
		"sElven": "",
		"sEmpty": "",
		"sEnableHelp": "",
		"sEnchantArmorIncompatible": "",
		"sEnchantDeconstructMenuDescription": "",
		"sEnchanting": "",
		"sEnchantInsufficientCharge": "",
		"sEnchantItem": "",
		"sEnchantmentKnown": "",
		"sEnchantmentsLearned": "",
		"sEnchantment": "",
		"sEnchantMenuDescription": "",
		"sEnchantMustChooseItems": "",
		"sEnterItemName": "",
		"sEnterName": "",
		"sEquipItemOnPlayer": "",
		"sEssentialCharacterDown": "",
		"sExitGameAffirm": "",
		"sExit": "",
		"sExpert": "",
		"sExplosionSplashParticles": "",
		"sFailedActivation": "",
		"sFailShouting": "",
		"sFailSpendSoul": "",
		"sFalmer": "",
		"sFastTravelConfirm": "",
		"sFastTravelNoTravelHealthDamage": "",
		"sFavorites": "",
		"sFileNotFound": "",
		"sFindingContentMessage": "",
		"sFirstPersonSkeleton": "",
		"sFood": "",
		"sFootstepsVolume": "",
		"sFor": "",
		"sFullHealth": "",
		"sFurnitureSleep": "",
		"sGeneralSubtitles": "",
		"sGFWLive": "",
		"sGlass": "",
		"sGold": "",
		"sGotAwayWithStealing": "",
		"sGrassFade": "",
		"sHairColor0": "",
		"sHairColor1": "",
		"sHairColor2": "",
		"sHairColor3": "",
		"sHairColor4": "",
		"sHairColor5": "",
		"sHairColor6": "",
		"sHairColor7": "",
		"sHairColor8": "",
		"sHairColor9": "",
		"sHairColor10": "",
		"sHairColor11": "",
		"sHairColor12": "",
		"sHairColor13": "",
		"sHairColor14": "",
		"sHairColor15": "",
		"sHarvest": "",
		"sHealth": "",
		"sHeavyArmorNoJump": "",
		"sHeavyArmorSink": "",
		"sHelp": "",
		"sHide_": "",
		"sHigh": "",
		"sHold": "",
		"sHUDArmorRating": "",
		"sHUDColor": "",
		"sHUDCompleted": "",
		"sHUDDamage": "",
		"sHUDFailed": "",
		"sHUDOpacity": "",
		"sHUDStarted": "",
		"sIllusion": "",
		"sImpactParticleConcreteDefault": "",
		"sImpactParticleMetalDefault": "",
		"sImpactParticleWoodDefault": "",
		"sImperial": "",
		"sImpossibleLock": "",
		"sImprovement": "",
		"sInaccessible": "",
		"sIngredientFail": "",
		"sIngredients": "",
		"sIngredient": "",
		"sInsufficientGoldToTrain": "",
		"sInvalidPickpocket": "",
		"sIron": "",
		"sItemFade": "",
		"sItemTooExpensive": "",
		"sItemTooHeavy": "",
		"sItem": "",
		"sJewelry": "",
		"sJourneyman": "",
		"sJunk": "",
		"sKeyLocked": "",
		"sKeys": "",
		"sKnownEffects": "",
		"sLackRequiredPerksToImprove": "",
		"sLackRequiredPerkToImproveMagical": "",
		"sLackRequiredSkillToImprove": "",
		"sLackRequiredToCreate": "",
		"sLackRequiredToImprove": "",
		"sLarge": "",
		"sLearningEnchantments": "",
		"sLearn": "",
		"sLeather": "",
		"sLeaveMarker": "",
		"sLevelAbbrev": "",
		"sLevelProgress": "",
		"sLevelUpAvailable": "",
		"sLightFade": "",
		"sLoadFromMainMenu": "",
		"sLoadingArea": "",
		"sLoadingContentMessage": "",
		"sLoadingLOD": "",
		"sLoading": "",
		"sLoadWhilePlaying": "",
		"sLockBroken": "",
		"sLocked": "",
		"sLockpickInsufficientPerks": "",
		"sLostController": "",
		"sLow": "",
		"sMagicEffectNotApplied": "",
		"sMagicEffectResisted": "",
		"sMagicEnhanceWeaponNoWeapon": "",
		"sMagicEnhanceWeaponWeaponEnchanted": "",
		"sMagicGuideNoMarker": "",
		"sMagicGuideNoPath": "",
		"sMagicTelekinesisNoRecast": "",
		"sMagnitudeIsLevelText": "",
		"sMagnitudeText": "",
		"sMainMenu": "",
		"sMakeDefaults": "",
		"sMapMarkerAdded": "",
		"sMasterVolume": "",
		"sMaster": "",
		"sMedium": "",
		"sMenuDisplayAutosaveName": "",
		"sMenuDisplayDayString": "",
		"sMenuDisplayLevelString": "",
		"sMenuDisplayNewSave": "",
		"sMenuDisplayNoSaves": "",
		"sMenuDisplayPlayTime": "",
		"sMenuDisplayQuicksaveName": "",
		"sMenuDisplaySave": "",
		"sMenuDisplayShortXBoxSaveMessage": "",
		"sMenuDisplayUnknownLocationString": "",
		"sMenuDisplayXBoxSaveMessage": "",
		"sMiscConstantEffect": "",
		"sMiscPlayerDeadLoadOption": "",
		"sMiscPlayerDeadMenuOption": "",
		"sMiscPlayerDeadMessage": "",
		"sMiscQuestDescription": "",
		"sMiscQuestName": "",
		"sMiscUnknownEffect": "",
		"sMisc": "",
		"sMissingImage": "",
		"sMissingName": "",
		"sMouseSensitivity": "",
		"sMoveMarkerQuestion": "",
		"sMoveMarker": "",
		"sMultipleDragonSoulCount": "",
		"sMusicVolume": "",
		"sMustRestart": "",
		"sName": "",
		"sNeutral": "",
		"sNewSave": "",
		"sNext": "",
		"sNoArrows": "",
		"sNoChargeItems_": "",
		"sNoChildUse": "",
		"sNoDeviceSelected": "",
		"sNoEatQuestItem": "",
		"sNoFastTravelAlarm": "",
		"sNoFastTravelCell": "",
		"sNoFastTravelCombat": "",
		"sNoFastTravelDefault": "",
		"sNoFastTravelHostileActorsNear": "",
		"sNoFastTravelInAir": "",
		"sNoFastTravelOverencumbered": "",
		"sNoFastTravelScriptBlock": "",
		"sNoFastTravelUndiscovered": "",
		"sNoItemsToRepair": "",
		"sNoJumpWarning": "",
		"sNoKeyDropWarning": "",
		"sNoLockPickIfCrimeAlert": "",
		"sNoMoreFollowers": "",
		"sNone": "",
		"sNoPickPocketAgain": "",
		"sNoProfileSelected": "",
		"sNoRepairHostileActorsNear": "",
		"sNoRepairInCombat": "",
		"sNoRestart": "",
		"sNormalWeaponsResisted": "",
		"sNormal": "",
		"sNoSaves": "",
		"sNoSitOnOwnedFurniture": "",
		"sNoSleepDefault": "",
		"sNoSleepHostileActorsNear": "",
		"sNoSleepInAir": "",
		"sNoSleepInCell": "",
		"sNoSleepInOwnedBed": "",
		"sNoSleepTakingHealthDamage": "",
		"sNoSleepTrespass": "",
		"sNoSleepWarnToLeave": "",
		"sNoSleepWhileAlarm": "",
		"sNoSpareParts": "",
		"sNoTalkFleeing": "",
		"sNoTalkUnConscious": "",
		"sNotAllowedToUseAutoDoorsWhileonHorse": "",
		"sNotEnoughRoomWarning": "",
		"sNotEnoughVendorGold": "",
		"sNoWaitDefault": "",
		"sNoWaitHostileActorsNear": "",
		"sNoWaitInAir": "",
		"sNoWaitInCell": "",
		"sNoWaitTakingHealthDamage": "",
		"sNoWaitTrespass": "",
		"sNoWaitWarnToLeave": "",
		"sNoWaitWhileAlarm": "",
		"sNo": "",
		"sNumberAbbrev": "",
		"sObjectFade": "",
		"sObjectInUse": "",
		"sObjectLODFade": "",
		"sOff": "",
		"sOf": "",
		"sOk": "",
		"sOldDownloadsAvailable": "",
		"sOn": "",
		"sOpenedContainer": "",
		"sOpenWithKey": "",
		"sOpen": "",
		"sOptional": "",
		"sOrcish": "",
		"sOr": "",
		"sOutOfLockpicks": "",
		"sOverEncumbered": "",
		"sOwned": "",
		"sPauseText": "",
		"sPCControlsTextNone": "",
		"sPCControlsTextPrefix": "",
		"sPCControlsTriggerPrefix": "",
		"sPCRelationshipNegativeChangeText": "",
		"sPCRelationshipPositiveChangeText": "",
		"sPickpocketFail": "",
		"sPickpocket": "",
		"sPipboyColor": "",
		"sPlaceMarkerUndiscovered": "",
		"sPlaceMarker": "",
		"sPlayerDisarmedMessage": "",
		"sPlayerLeavingBorderRegion": "",
		"sPlayerSetMarkerName": "",
		"sPlayTime": "",
		"sPleaseStandBy": "",
		"sPoisonAlreadyPoisonedMessage": "",
		"sPoisonBowConfirmMessage": "",
		"sPoisonConfirmMessage": "",
		"sPoisoned": "",
		"sPoisonNoWeaponMessage": "",
		"sPoisonUnableToPoison": "",
		"sPotionCreationFailed": "",
		"sPotions": "",
		"sPowers": "",
		"sPressControl": "",
		"sPreviousSelection": "",
		"sPrevious": "",
		"sPrisoner": "",
		"sQuantity": "",
		"sQuestAddedText": "",
		"sQuestCompletedText": "",
		"sQuestFailed": "",
		"sQuestUpdatedText": "",
		"sQuickLoading": "",
		"sQuicksaveAbbrev": "",
		"sQuickSaving": "",
		"sQuitAlchemy": "",
		"sQuitEnchanting": "",
		"sRadioSignalLost": "",
		"sRadioStationDiscovered": "",
		"sRadioVolume": "",
		"sRangeText": "",
		"sRanksText": "",
		"sRead": "",
		"sRemoteActivation": "",
		"sRemoveCrimeGold": "",
		"sRemoveItemFromInventory": "",
		"sRemoveMarker": "",
		"sRemove": "",
		"sRenameItem": "",
		"sRepairAllItems": "",
		"sRepairCost": "",
		"sRepairItem": "",
		"sRepairServicesTitle": "",
		"sRepairSkillTooLow": "",
		"sRepairSkill": "",
		"sRepair": "",
		"sRequirementsText": "",
		"sRequirements": "",
		"sResetToDefaults": "",
		"sResolution": "",
		"sResource": "",
		"sRestartBecauseContentRemoved": "",
		"sRestartSignedOut": "",
		"sRestartToUseNewContent": "",
		"sRestartToUseProfileContent": "",
		"sRestoration": "",
		"sReturn": "",
		"sRewardXPIcon": "",
		"sRewardXP": "",
		"sRide": "",
		"sRSMAge": "",
		"sRSMBody": "",
		"sRSMBrowForward": "",
		"sRSMBrowHeight": "",
		"sRSMBrowTypes": "",
		"sRSMBrowWidth": "",
		"sRSMBrow": "",
		"sRSMCheekboneHeight": "",
		"sRSMCheekboneWidth": "",
		"sRSMCheekColorLower": "",
		"sRSMCheekColor": "",
		"sRSMChinColor": "",
		"sRSMChinForward": "",
		"sRSMChinLength": "",
		"sRSMChinWidth": "",
		"sRSMComplexionColor": "",
		"sRSMComplexion": "",
		"sRSMConfirmDestruction": "",
		"sRSMConfirm": "",
		"sRSMDirtColor": "",
		"sRSMDirt": "",
		"sRSMEyeColor": "",
		"sRSMEyeDepth": "",
		"sRSMEyeHeight": "",
		"sRSMEyelinerColor": "",
		"sRSMEyeSocketLowerColor": "",
		"sRSMEyeSocketUpperColor": "",
		"sRSMEyes": "",
		"sRSMEyeTypes": "",
		"sRSMEyeWidth": "",
		"sRSMFace": "",
		"sRSMFacialHairColorPresets": "",
		"sRSMFacialHairPresets": "",
		"sRSMForeheadColor": "",
		"sRSMHairColorPresets": "",
		"sRSMHairPresets": "",
		"sRSMHair": "",
		"sRSMHeadPresets": "",
		"sRSMHead": "",
		"sRSMJawForward": "",
		"sRSMJawHeight": "",
		"sRSMJawWidth": "",
		"sRSMLaughLines": "",
		"sRSMLipColor": "",
		"sRSMMouthForward": "",
		"sRSMMouthHeight": "",
		"sRSMMouthTypes": "",
		"sRSMMouth": "",
		"sRSMNameWarning": "",
		"sRSMName": "",
		"sRSMNeckColor": "",
		"sRSMNoseColor": "",
		"sRSMNoseHeight": "",
		"sRSMNoseLength": "",
		"sRSMNoseTypes": "",
		"sRSMPaintColor": "",
		"sRSMPaint": "",
		"sRSMRace": "",
		"sRSMScars": "",
		"sRSMSex": "",
		"sRSMSkinColor": "",
		"sRSMTone": "",
		"sRSMWeight": "",
		"sRumble": "",
		"sSaveFailed": "",
		"sSaveGameContentIsMissing": "",
		"sSaveGameCorruptMenuMessage": "",
		"sSaveGameCorrupt": "",
		"sSaveGameDeviceError": "",
		"sSaveGameIsCorrupt": "",
		"sSaveGameNoLongerAvailable": "",
		"sSaveGameNoMasterFilesFound": "",
		"sSaveGameOldVersion": "",
		"sSaveGameOutOfDiskSpace": "",
		"sSaveNotAvailable": "",
		"sSaveOnRest": "",
		"sSaveOnTravel": "",
		"sSaveOnWait": "",
		"sSaveOverSaveGame": "",
		"sSaveSuccessful": "",
		"sSceneBlockingActorActivation": "",
		"sScrollEquipped": "",
		"sScrolls": "",
		"sSearch": "",
		"sSelectItemToRepair": "",
		"sSelect": "",
		"sSelfRange": "",
		"sServeSentenceQuestion": "",
		"sServeTimeQuestion": "",
		"sSexFemalePossessive": "",
		"sSexFemalePronoun": "",
		"sSexFemale": "",
		"sSexMalePossessive": "",
		"sSexMalePronoun": "",
		"sSexMale": "",
		"sShadowFade": "",
		"sShoutAdded": "",
		"sShouts": "",
		"sSingleDragonSoulCount": "",
		"sSit": "",
		"sSkillIncreasedNum": "",
		"sSkillIncreased": "",
		"sSkillsCount": "",
		"sSkillsTitle": "",
		"sSmall": "",
		"sSmithingConfirm": "",
		"sSmithingMenuDescription": "",
		"sSneakAttack": "",
		"sSneakCaution": "",
		"sSneakDanger": "",
		"sSneakDetected": "",
		"sSneakHidden": "",
		"sSortMethod": "",
		"sSoulCaptured": "",
		"sSoulGems": "",
		"sSoulGemTooSmall": "",
		"sSoulGem": "",
		"sSoulLevel": "",
		"sSpace": "",
		"sSpecularityFade": "",
		"sSpeechChallengeFailure": "",
		"sSpeechChallengeSuccess": "",
		"sSpellAdded": "",
		"sSplashParticles": "",
		"sStatsMustSelectPerk": "",
		"sStatsNextRank": "",
		"sStatsPerkConfirm": "",
		"sStealFrom": "",
		"sStealHorse": "",
		"sSteal": "",
		"sSteel": "",
		"sStormcloak": "",
		"sStudded": "",
		"sSuccessfulSneakAttackEnd": "",
		"sSuccessfulSneakAttackMain": "",
		"sTakeAll": "",
		"sTake": "",
		"sTalk": "",
		"sTargetRange": "",
		"sTeammateCantGiveOutfit": "",
		"sTeammateCantTakeOutfit": "",
		"sTeammateOverencumbered": "",
		"sTextureSize": "",
		"sStormcloak": "",
		"sTouchRange": "",
		"sTo": "",
		"sTraitsCount": "",
		"sTraitsTitle": "",
		"sTreeLODFade": "",
		"sTweenDisabledMessage": "",
		"sUnequipItemOnPlayer": "",
		"sUnlock": "",
		"sValue": "",
		"sVatsAimed": "",
		"sVatsAiming": "",
		"sVatsBodyPart": "",
		"sVATSMessageLowAP": "",
		"sVATSMessageNoAmmo": "",
		"sVATSMessageZeroChance": "",
		"sVatsSelect": "",
		"sVatsTarget": "",
		"sVDSGManual": "",
		"sVDSGPlate": "",
		"sVideoChange": "",
		"sViewDistance": "",
		"sVoiceVolume": "",
		"sWaitHere": "",
		"sWeaponBreak": "",
		"sWeaponEnchantments": "",
		"sWeaponSmithing": "",
		"sWeapons": "",
		"sWeight": "",
		"sWhite": "",
		"sWitnessKilled": "",
		"sWood": "",
		"sXSensitivity": "",
		"sYesRestart": "",
		"sYes": "",
		"sYour": "",
		"sYSensitivity": ""
		}
		return items