diff --git a/client/src/jsMain/kotlin/Main.kt b/client/src/jsMain/kotlin/Main.kt index 3c4048f..b42b58d 100644 --- a/client/src/jsMain/kotlin/Main.kt +++ b/client/src/jsMain/kotlin/Main.kt @@ -12,6 +12,7 @@ import web.dom.ElementId import web.dom.document import web.html.HTMLElement import kotlinx.browser.window +import Protocol.ContainerDump import Protocol.IsNodeRuntime import Protocol.SelfTest @@ -30,9 +31,14 @@ private fun RenderApp() { createRoot(container).render(App.create()) } -// 入口函数:Node 下跑协议层 M1 自检;浏览器下渲染页面并把入口挂到 window 上 +// 入口函数:Node 下跑协议层自检;浏览器下渲染页面并把入口挂到 window 上 fun main() { if (IsNodeRuntime()) { + // 比对脚本用:只把指定抓包帧解成 JSON 输出(TANKIC_CONTAINER_DUMP=1),不连服务器 + if (ContainerDump.Wanted()) { + ContainerDump.Run() + return + } SelfTest.Run() return } diff --git a/client/src/jsMain/kotlin/Protocol/Connection.kt b/client/src/jsMain/kotlin/Protocol/Connection.kt index 16ace1b..93b55bc 100644 --- a/client/src/jsMain/kotlin/Protocol/Connection.kt +++ b/client/src/jsMain/kotlin/Protocol/Connection.kt @@ -19,6 +19,16 @@ internal external class WebSocket(Url: String) { internal fun IsNodeRuntime(): Boolean = js("typeof process !== 'undefined' && !!(process.versions && process.versions.node)") as Boolean +// Node 专有的模块加载(只在 IsNodeRuntime() 为真时调用)。 +// 刻意用 module.require 而不是 require:后者会被 browser 目标的 webpack 静态解析成 +// 「Can't resolve 'fs' / 'zlib'」,导致 browser 构建直接失败(webpack 5 对表达式形式的 +// module.require 不做静态解析,browser 侧永远走不到这里)。 +internal fun NodeRequire(Name: String): dynamic = js("module.require(Name)") + +// Node Buffer → Kotlin ByteArray(Kotlin/JS 的 ByteArray 运行时就是 Int8Array) +internal fun BufferToByteArray(Buf: dynamic): ByteArray = + js("new Int8Array(Buf.buffer, Buf.byteOffset, Buf.byteLength)") as ByteArray + // Node 里主动结束进程(browser 不会走到这里) internal fun ExitProcess(Code: Int) { js("process.exit(Code)") diff --git a/client/src/jsMain/kotlin/Protocol/Container.kt b/client/src/jsMain/kotlin/Protocol/Container.kt new file mode 100644 index 0000000..491cf88 --- /dev/null +++ b/client/src/jsMain/kotlin/Protocol/Container.kt @@ -0,0 +1,187 @@ +// Container.kt —— 容器三布局 lt / pt / zt 的读(口径逐条对照 3DTank/tools/server/container.js) +// +// 布局由 **methodId** 决定(不是「哪个布局恰好吃到帧尾」—— 那在**多记录帧**上必然失败, +// 因为容器负载只占帧体的一段,后面还有别的记录): +// ModelService.LoadDependencies 3216143066888387731 → zt +// ModelService.LoadObjectsData 7640916300855664666 → pt +// ModelService.UnloadObjects 9038756763225879447 → lt +// +// 三个布局的负载形状(与 container.js 的 ReadLt/ReadPt/ReadZt 一一对应): +// lt = [varint 个数][个数 × i64 对象 id] +// pt = [i32 C][C × (i64 objId, i64 gameTypeId)][i32 D][D × lt项] +// lt项(与上面 lt 布局同名不同物)= [i64 id];id == 0 → 再读一个 i64 当值; +// 否则 id 是 modelId,就地展开该模型的字段(ModelCodec.ReadFields) +// zt = [i32 X][i32 C][C × {i64 ObjId, i32 N, N × i64 ModelId}] +// [i32 D][D × {i64 R, i16 E, i16 U, i64 S, u8 O, i8 Skip, Skip × i64}] +// 计数一律 i32(4 字节大端,不是 varint);zt 的跳过个数是 i8(1 字节,不是 varint)。 +// +// opt 字段与记录形态位共用同一条 nullmap 比特流:容器叶子里的 opt 必须按 **bit** 读, +// 且位游标跨记录顺序推进(Ctx 就是从 SpaceFrame 传下来的那条流)。拿不到位就如实报 Bad, +// 绝不退回「按字节猜标志位」—— 那会把负载整体解错位。 +// +// 任何越界 / 计数超上限 / modelId 查不到 codec 一律返回 Bad(不硬读)。 +package Protocol + +internal class ContainerResult(val Value: Any?, val Next: Int, val Bad: Boolean, val Why: String = "") + +internal object Container { + + // 计数上限(与 container.js 的 MaxCount 同口径):超出即认定布局不成立 + const val MAX_COUNT = 1 shl 20 + + val LayoutByMethod: Map = mapOf( + "3216143066888387731" to "zt", // ModelService.LoadDependencies + "7640916300855664666" to "pt", // ModelService.LoadObjectsData + "9038756763225879447" to "lt", // ModelService.UnloadObjects + ) + + fun LayoutOf(MethodId: String): String? = LayoutByMethod[MethodId] + + fun Read(Layout: String, Buf: ByteArray, Off: Int, Ctx: BitCursor?): ContainerResult = when (Layout) { + "lt" -> ReadLt(Buf, Off) + "pt" -> ReadPt(Buf, Off, Ctx) + "zt" -> ReadZt(Buf, Off) + else -> ContainerResult(null, Off, true, "未知容器布局:$Layout") + } + + // ---------------------------------------------------------------- lt + + private fun ReadLt(Buf: ByteArray, Off: Int): ContainerResult { + val N = Buf.ReadVarint(Off) + if (N.Bad) return ContainerResult(null, Off, true, "流变量计数读不动") + var At = N.Next + if (N.Value > MAX_COUNT) return ContainerResult(null, Off, true, "个数 ${N.Value} 超上限") + if (At + 8L * N.Value > Buf.size) { + return ContainerResult(null, Off, true, "个数 ${N.Value} 但只剩 ${Buf.size - At} 字节") + } + val Ids = ArrayList(N.Value) + for (I in 0 until N.Value) { + Ids.add(Buf.ReadI64(At).toString()) + At += 8 + } + return ContainerResult(linkedMapOf("Ids" to Ids), At, false) + } + + // ---------------------------------------------------------------- pt + + private fun ReadPt(Buf: ByteArray, Off: Int, Ctx: BitCursor?): ContainerResult { + if (Off + 4 > Buf.size) return ContainerResult(null, Off, true, "不足 4 字节读对象表个数") + val C = Buf.ReadI32(Off) + var At = Off + 4 + if (C < 0 || C > MAX_COUNT) return ContainerResult(null, Off, true, "对象表个数 C=$C 不合理") + if (At + 16L * C + 4 > Buf.size) return ContainerResult(null, Off, true, "对象表 C=$C 超出负载长度") + val Objects = ArrayList(C) + for (I in 0 until C) { + Objects.add( + linkedMapOf( + "ObjectId" to Buf.ReadI64(At).toString(), + "GameTypeId" to Buf.ReadI64(At + 8).toString(), + ) + ) + At += 16 + } + val D = Buf.ReadI32(At) + At += 4 + if (D < 0 || D > MAX_COUNT) return ContainerResult(null, Off, true, "ModelData 表个数 D=$D 不合理") + val Items = ArrayList(D) + for (I in 0 until D) { + if (At + 8 > Buf.size) return ContainerResult(null, At, true, "第 ${I + 1}/$D 项读 id 越界") + val R = ReadLtItem(Buf, At, Ctx) + if (R.Bad) return ContainerResult(null, At, true, "第 ${I + 1}/$D 项:${R.Why}") + Items.add(R.Value) + At = R.Next + } + return ContainerResult(linkedMapOf("Objects" to Objects, "Items" to Items), At, false) + } + + // pt 里的一项 = ModelData 的 lt codec(module_45686.js:487-494) + private fun ReadLtItem(Buf: ByteArray, At: Int, Ctx: BitCursor?): ContainerResult { + val Id = Buf.ReadI64(At).toString() + val Next = At + 8 + if (Id == "0") { + if (Next + 8 > Buf.size) return ContainerResult(null, At, true, "lt 项 id=0 但没有紧跟的 i64 值") + return ContainerResult( + linkedMapOf("Id" to Id, "Value" to Buf.ReadI64(Next).toString()), + Next + 8, false, + ) + } + val Key = ProtocolTables.CodecByModelId(Id) + ?: return ContainerResult(null, At, true, "modelId=$Id 在 codec_fields 里查不到 codec(叶子 codec 缺失)") + // 容器叶子路径:opt 按位读 + string 只认字面 UTF-8(对照 container.js 的 LeafReader 选项) + val R = ModelCodec.ReadFields(Buf, Next, Key, 1, ReadCtx(Ctx, true)) + if (R.Bad) { + return ContainerResult(null, At, true, "modelId=$Id($Key)的字段解不动:" + R.Why.ifEmpty { "未知类型/越界" }) + } + return ContainerResult(linkedMapOf("Id" to Id, "Value" to R.Value), R.Next, false) + } + + // ---------------------------------------------------------------- zt + + private fun ReadZt(Buf: ByteArray, Off: Int): ContainerResult { + if (Off + 8 > Buf.size) return ContainerResult(null, Off, true, "不足 8 字节读 X/批次个数") + val X = Buf.ReadI32(Off) + val C = Buf.ReadI32(Off + 4) + var At = Off + 8 + if (C < 0 || C > MAX_COUNT) return ContainerResult(null, Off, true, "批次个数 C=$C 不合理") + val Batches = ArrayList(C) + for (I in 0 until C) { + if (At + 12 > Buf.size) return ContainerResult(null, At, true, "第 ${I + 1}/$C 批读头部越界") + val ObjectId = Buf.ReadI64(At).toString() + val N = Buf.ReadI32(At + 8) + At += 12 + if (N < 0 || N > MAX_COUNT) return ContainerResult(null, At - 4, true, "第 ${I + 1} 批 modelId 个数 N=$N 不合理") + if (At + 8L * N > Buf.size) return ContainerResult(null, At, true, "第 ${I + 1} 批 N=$N 超出负载长度") + val ModelIds = ArrayList(N) + for (K in 0 until N) { + ModelIds.add(Buf.ReadI64(At).toString()) + At += 8 + } + Batches.add(linkedMapOf("ObjectId" to ObjectId, "ModelIds" to ModelIds)) + } + if (At + 4 > Buf.size) return ContainerResult(null, At, true, "批次之后不足 4 字节读项个数") + val D = Buf.ReadI32(At) + At += 4 + if (D < 0 || D > MAX_COUNT) return ContainerResult(null, At - 4, true, "项个数 D=$D 不合理") + val Items = ArrayList(D) + for (I in 0 until D) { + if (At + 22 > Buf.size) return ContainerResult(null, At, true, "第 ${I + 1}/$D 项越界") + val R = Buf.ReadI64(At).toString() + val E = Buf.ReadI16(At + 8) + val U = Buf.ReadI16(At + 10) + val S = Buf.ReadI64(At + 12).toString() + val O = Buf.ReadU8(At + 20) + val Skip = Buf.ReadI8(At + 21) // n2u = 1 字节(module_72834.js:272-274),不是 varint + At += 22 + if (Skip < 0 || Skip > MAX_COUNT) return ContainerResult(null, At - 1, true, "第 ${I + 1} 项跳过个数 $Skip 不合理") + if (At + 8L * Skip > Buf.size) return ContainerResult(null, At, true, "第 ${I + 1} 项跳过 $Skip 个 id 越界") + val Skipped = ArrayList(Skip) + for (K in 0 until Skip) { + Skipped.add(Buf.ReadI64(At).toString()) + At += 8 + } + Items.add(linkedMapOf("R" to R, "E" to E, "U" to U, "S" to S, "O" to O, "Skipped" to Skipped)) + } + return ContainerResult(linkedMapOf("X" to X, "Batches" to Batches, "Items" to Items), At, false) + } + + // ---------------------------------------------------------------- 摘要(自检打印用) + + @Suppress("UNCHECKED_CAST") + fun Summary(Layout: String, Value: Any?): String { + val V = Value as? Map ?: return "(空)" + return when (Layout) { + "zt" -> { + val Batches = V["Batches"] as? List ?: emptyList() + val Items = V["Items"] as? List ?: emptyList() + "X=${V["X"]} 批次数=${Batches.size} 项数=${Items.size}" + } + "pt" -> { + val Objects = V["Objects"] as? List ?: emptyList() + val Items = V["Items"] as? List ?: emptyList() + "对象数=${Objects.size} 项数=${Items.size}" + } + "lt" -> "id 数=" + ((V["Ids"] as? List)?.size ?: 0) + else -> "" + } + } +} diff --git a/client/src/jsMain/kotlin/Protocol/ContainerDump.kt b/client/src/jsMain/kotlin/Protocol/ContainerDump.kt new file mode 100644 index 0000000..15e2fa7 --- /dev/null +++ b/client/src/jsMain/kotlin/Protocol/ContainerDump.kt @@ -0,0 +1,119 @@ +// ContainerDump.kt —— 把同一批真实抓包帧用客户端解码器解出来,输出成规范的 JSON +// +// 用途:与 tools/CompareContainerDecode.mjs 的 JS 侧结果逐字段比对(验收 (a))。 +// 触发:环境变量 TANKIC_CONTAINER_DUMP=1(见 Main.kt 的分发);帧文件列表从 +// TANKIC_CONTAINER_FILES(`;` 分隔的绝对路径,顺序即输出顺序)读入。 +// +// 规范(两侧必须完全一致,否则逐字段比对没有意义): +// · 对象键按字典序排列; +// · 所有数字输出成**十进制字符串**(i8/i16/i32/i64/f32/f64 一律如此); +// f32/f64 用 JS 的 String(x)(不是 Kotlin 的 toString),避免浮点格式化差异; +// · null 与「键缺失」是两回事:只有确实取值过才写键。 +package Protocol + +internal object CanonicalJson { + + fun Text(V: Any?): String = when (V) { + null -> "null" + is Boolean -> if (V) "true" else "false" + is String -> Quote(V) + is Int -> Quote(V.toString()) + is Long -> Quote(V.toString()) + is Float -> Quote(JsNumText(V.toDouble())) + is Double -> Quote(JsNumText(V)) + is List<*> -> "[" + V.joinToString(",") { Text(it) } + "]" + is Map<*, *> -> + "{" + V.entries.sortedBy { it.key.toString() } + .joinToString(",") { Quote(it.key.toString()) + ":" + Text(it.value) } + "}" + else -> Quote(V.toString()) + } + + // JS 的 String(number):与抓包侧 String(value) 完全同形,浮点不会因语言格式化而分叉 + private fun JsNumText(V: Double): String = js("String(V)") as String + + private fun Quote(S: String): String { + val Sb = StringBuilder(S.length + 2) + Sb.append('"') + for (C in S) { + when (C) { + '\\' -> Sb.append("\\\\") + '"' -> Sb.append("\\\"") + '\n' -> Sb.append("\\n") + '\r' -> Sb.append("\\r") + '\t' -> Sb.append("\\t") + else -> if (C.code < 0x20) Sb.append("\\u").append(C.code.toString(16).padStart(4, '0')) else Sb.append(C) + } + } + Sb.append('"') + return Sb.toString() + } +} + +internal object ContainerDump { + + fun Wanted(): Boolean = Env("TANKIC_CONTAINER_DUMP") == "1" + + fun Run() { + val Files = Env("TANKIC_CONTAINER_FILES").split(";").filter { it.isNotEmpty() } + val Parts = ArrayList() + for (Path in Files) Parts.add(DumpFile(Path)) + val Out = "{\"Tool\":\"TankIcClient/ContainerDump\",\"Files\":[" + Parts.joinToString(",") + "]}" + // 用标记包住,方便比对脚本从(可能混着构建日志的)stdout 里精确取出这段 JSON + js("process.stdout.write('<<>>' + Out + '<<>>')") + } + + private fun DumpFile(Path: String): String { + val Head = "{\"Path\":" + CanonicalJson.Text(Path) + "," + var Raw: ByteArray + try { + Raw = ReadFile(Path) + } catch (E: dynamic) { + return Head + "\"Error\":" + CanonicalJson.Text(E.toString()) + ",\"Frames\":[]}" + } + val Frames = Frame.ParseFrames(Raw) + ?: return Head + "\"Error\":\"整帧流解析失败(有残余字节)\",\"Frames\":[]}" + val Parts = ArrayList() + for (F in Frames) { + val Body = try { + Frame.DecodeFrame(F) + } catch (E: ProtocolException) { + Parts.add("{\"BodyBytes\":" + F.Body.size + ",\"Records\":[],\"Bad\":true,\"Note\":" + CanonicalJson.Text(E.message ?: "") + "}") + continue + } + val Parsed = SpaceFrame.Parse(Body) + val Recs = ArrayList() + for (R in Parsed.Records) Recs.add(DumpRecord(R)) + Parts.add( + "{\"BodyBytes\":" + Body.size + ",\"Records\":[" + Recs.joinToString(",") + "]," + + "\"Bad\":" + (if (Parsed.Bad) "true" else "false") + ",\"Note\":" + CanonicalJson.Text(Parsed.Note) + "}" + ) + } + return Head + "\"Error\":null,\"Frames\":[" + Parts.joinToString(",") + "]}" + } + + private fun DumpRecord(R: SpaceRecord): String { + val Sb = StringBuilder() + Sb.append("{\"ObjectId\":").append(CanonicalJson.Text(R.ObjectId)) + Sb.append(",\"MethodId\":").append(CanonicalJson.Text(R.MethodId)) + Sb.append(",\"Kind\":").append(CanonicalJson.Text(R.Kind)) + Sb.append(",\"Layout\":").append(CanonicalJson.Text(R.Layout)) + Sb.append(",\"Bad\":").append(if (R.Bad) "true" else "false") + Sb.append(",\"Note\":").append(CanonicalJson.Text(R.Note)) + when (R.Kind) { + "container" -> Sb.append(",\"Value\":").append(CanonicalJson.Text(R.Value)) + "fields" -> { + Sb.append(",\"Fields\":{") + val Sorted = R.Fields.sortedBy { it.first } + Sb.append(Sorted.joinToString(",") { CanonicalJson.Text(it.first) + ":" + CanonicalJson.Text(it.second) }) + Sb.append("}") + } + } + Sb.append("}") + return Sb.toString() + } + + private fun Env(Name: String): String = js("process.env[Name] || ''") as String + + // 读文件(Node):Buffer → ByteArray + private fun ReadFile(Path: String): ByteArray = BufferToByteArray(NodeRequire("fs").readFileSync(Path)) +} diff --git a/client/src/jsMain/kotlin/Protocol/FieldReader.kt b/client/src/jsMain/kotlin/Protocol/FieldReader.kt index 175e4d9..4ff75fd 100644 --- a/client/src/jsMain/kotlin/Protocol/FieldReader.kt +++ b/client/src/jsMain/kotlin/Protocol/FieldReader.kt @@ -8,10 +8,10 @@ // enum = 4 字节(i32) // opt = nullmap 比特流里的 1 个 bit:1 = 空(负载里 0 字节),0 = 有值、紧跟 T // ── 注意 opt 用的是**帧级共享**的 nullmap 比特流,不是 1 字节标志;位游标必须跨记录顺序推进。 -// 模型类(codec_fields 里的嵌套 codec)M1 不支持:如实报不可解,不按字节长度硬猜。 +// 模型类 = 就地展开该模型 codec 的字段(无长度前缀、无边界标记),展开入口见 ModelCodec.kt。 package Protocol -// nullmap 比特流游标:Index 会被本模块与 SpaceFrame 顺序推进 +// nullmap 比特流游标:Index 会被本模块、SpaceFrame 与 Container 顺序推进 internal class BitCursor(val Bits: BooleanArray, var Index: Int) { // 取 1 个 bit;位用尽返回 null(如实报错,不默认按非空解) fun Take(): Boolean? { @@ -20,6 +20,12 @@ internal class BitCursor(val Bits: BooleanArray, var Index: Int) { } } +// 一次字段读的上下文: +// Bits = 帧级 nullmap 比特流游标(opt 按位读;没给就如实报不可解,绝不按字节猜) +// StringLiteralOnly = string 只认字面 UTF-8,不是合法 UTF-8 就直接报 Bad(容器叶子路径,口径同 +// container.js 的 LeafReader);false 时退回 '0x…' 十六进制转义(字段表路径) +internal class ReadCtx(val Bits: BitCursor?, val StringLiteralOnly: Boolean = false) + internal class FieldReadResult(val Value: Any?, val Next: Int, val Bad: Boolean, val Why: String = "") internal object FieldReader { @@ -29,14 +35,15 @@ internal object FieldReader { // 类型串是否以 opt< 开头(SpaceFrame 判「空值 0 字节合法」用) fun IsOpt(Type: String): Boolean = Type.startsWith("opt<") - fun ReadValue(Buf: ByteArray, Off: Int, Type: String, TypeCodec: String, Depth: Int, Ctx: BitCursor?): FieldReadResult { + fun ReadValue(Buf: ByteArray, Off: Int, Type: String, TypeCodec: String, Depth: Int, Ctx: ReadCtx?): FieldReadResult { if (Depth > MAX_DEPTH) return FieldReadResult("<深度上限>", Off, true, "嵌套超过 $MAX_DEPTH 层") if (Type.isEmpty() || Type == "?") return FieldReadResult("<未知类型>", Off, true, "字段类型缺失") val T = Type val Opt = MatchGeneric(T, "opt") if (Opt != null) { - val Cursor = Ctx ?: return FieldReadResult("<无位游标>", Off, true, "opt 字段需要 nullmap 比特流(本帧没给)") + val Cursor = Ctx?.Bits + ?: return FieldReadResult("<无位游标>", Off, true, "opt 字段需要 nullmap 比特流(本帧没给)") val Bit = Cursor.Take() ?: return FieldReadResult("", Off, true, "opt 的位超出 nullmap 位图") if (Bit) return FieldReadResult(null, Off, false) return ReadValue(Buf, Off, Opt, TypeCodec, Depth, Ctx) @@ -50,7 +57,7 @@ internal object FieldReader { if (N.Bad || N.Value > 4096) return FieldReadResult(Arr, At, true, "list 元素数 ${N.Value} 不合理") val ZeroOk = IsOpt(List) for (I in 0 until N.Value) { - val R = ReadValue(Buf, At, List, "", Depth + 1, Ctx) + val R = ReadValue(Buf, At, List, TypeCodec, Depth + 1, Ctx) Arr.add(R.Value) if (R.Bad || (R.Next <= At && !ZeroOk)) return FieldReadResult(Arr, At, true, R.Why.ifEmpty { "list 第 ${I + 1} 个元素解不动" }) At = R.Next @@ -61,8 +68,8 @@ internal object FieldReader { val Enum = MatchGeneric(T, "enum") if (Enum != null) { if (Off + 4 > Buf.size) return FieldReadResult("<越界>", Off, true, "enum 需要 4 字节") - val V = Buf.ReadI32(Off).toLong() and 0xFFFFFFFFL - return FieldReadResult("enum#$V", Off + 4, false) + // 与 lib_space_codec.js:201-203 同口径:逐字节 (V<<8)|b 得到**有符号** i32,再拼成 'enum#N' + return FieldReadResult("enum#" + Buf.ReadI32(Off), Off + 4, false) } val Map = MatchGeneric(T, "map") @@ -76,9 +83,9 @@ internal object FieldReader { val ZeroK = IsOpt(Kv[0]) val ZeroV = IsOpt(Kv[1]) for (I in 0 until N.Value) { - val Rk = ReadValue(Buf, At, Kv[0], "", Depth + 1, Ctx) + val Rk = ReadValue(Buf, At, Kv[0], TypeCodec, Depth + 1, Ctx) if (Rk.Bad || (Rk.Next <= At && !ZeroK)) return FieldReadResult(Pairs, At, true, Rk.Why.ifEmpty { "map 第 ${I + 1} 条的键解不动" }) - val Rv = ReadValue(Buf, Rk.Next, Kv[1], "", Depth + 1, Ctx) + val Rv = ReadValue(Buf, Rk.Next, Kv[1], TypeCodec, Depth + 1, Ctx) Pairs.add(listOf(Rk.Value, Rv.Value)) if (Rv.Bad || (Rv.Next <= Rk.Next && !ZeroV)) return FieldReadResult(Pairs, Rv.Next, true, Rv.Why.ifEmpty { "map 第 ${I + 1} 条的值解不动" }) At = Rv.Next @@ -120,17 +127,36 @@ internal object FieldReader { if (N.Bad) return FieldReadResult("<越界>", Off, true, "长度前缀读不动") val End = N.Next + N.Value if (End > Buf.size) return FieldReadResult("<越界>", Off, true, "长度 ${N.Value} 越界") - return if (T == "string") { - FieldReadResult(Buf.copyOfRange(N.Next, End).decodeToString(), End, false) - } else { - FieldReadResult("0x" + Buf.copyOfRange(N.Next, End).Hex(), End, false) - } + val Raw = Buf.copyOfRange(N.Next, End) + if (T != "string") return FieldReadResult("0x" + Raw.Hex(), End, false) + return ReadString(Raw, Off, End, Ctx) } } - // 模型类 / 裸类名:M1 的协议表不含 codec_fields,无法就地展开 → 如实报不可解 + // 模型类 / 裸类名:解析顺序与 lib_space_codec.js 的 ReadValue 完全一致 —— + // ① 字段自带的 TypeCodec(在导出的 codec 表里)→ 就地展开该 codec + // ② 模型真名 → codec(CodecByModelName) + // ③ 协议核心类 / 资源类直译(WireClasses → TypeAliases) + // 三条都不命中就如实报「无 codec」,不做任何长度猜测。 + val Model = ModelCodec.ResolveCodec(T, TypeCodec) + if (Model != null) return ModelCodec.ReadFields(Buf, Off, Model, Depth + 1, Ctx) + val Wire = ProtocolTables.WireAlias(T) + if (Wire != null) return ReadValue(Buf, Off, Wire, "", Depth + 1, Ctx) val Hint = if (TypeCodec.isNotEmpty()) "(TypeCodec=$TypeCodec)" else "" - return FieldReadResult("<无 codec:$T>", Off, true, "类型 $T$Hint 需要 codec_fields 定义,M1 协议表只导出字段类型、不含嵌套 codec") + return FieldReadResult("<无 codec:$T>", Off, true, "类型 $T$Hint 没有对应 codec(导出表里查不到,不猜)") + } + + // string 的解码口径(对照 lib_space_codec.js:263-278): + // 合法 UTF-8(解码再编码逐字节相同)→ 字面字符串; + // 否则 StringLiteralOnly 路径如实报 Bad(避免与本身就是 "0xff8000" 的字面量撞车), + // 字段表路径退回 '0x…' 十六进制转义。 + private fun ReadString(Raw: ByteArray, Off: Int, End: Int, Ctx: ReadCtx?): FieldReadResult { + val Str = Raw.decodeToString() + if (Str.encodeToByteArray().contentEquals(Raw)) return FieldReadResult(Str, End, false) + if (Ctx != null && Ctx.StringLiteralOnly) { + return FieldReadResult("<不是合法 UTF-8>", Off, true, "字符串值不是合法 UTF-8(本路径不做 0x 转义,避免与字面量 0x… 撞车)") + } + return FieldReadResult("0x" + Raw.Hex(), End, false) } // 取形如 `name<...>` 的内层类型串;不匹配返回 null @@ -167,6 +193,7 @@ internal object FieldReader { is Double -> if (V == V.toLong().toDouble()) V.toLong().toString() else V.toString() is Float -> V.toString() is List<*> -> "[${V.size}]" + if (V.size <= 6) " " + V.joinToString(", ") { FormatValue(it) } else "" + is Map<*, *> -> "{" + V.entries.joinToString(", ") { "${it.key}=" + FormatValue(it.value) } + "}" else -> V.toString() } } diff --git a/client/src/jsMain/kotlin/Protocol/Frame.kt b/client/src/jsMain/kotlin/Protocol/Frame.kt index 6c6f70d..dc26c05 100644 --- a/client/src/jsMain/kotlin/Protocol/Frame.kt +++ b/client/src/jsMain/kotlin/Protocol/Frame.kt @@ -62,16 +62,23 @@ internal object Frame { return Result } - // 解压帧体(对应 link.js 的 DecodeFrame)。M1 不实现 zlib 解压:遇到压缩帧直接抛错,绝不静默。 + // 解压帧体(对应 link.js 的 DecodeFrame)。 + // Node 下走 zlib.inflateSync(与 link.js 的 zlib.inflateSync 同一套算法,逐字节一致); + // browser 侧没有 zlib 绑定,遇到压缩帧如实抛错,绝不静默返回半截数据。 fun DecodeFrame(Frame: WireFrame): ByteArray { - if (Frame.Compressed) { + if (!Frame.Compressed) return Frame.Body + if (!IsNodeRuntime()) { throw ProtocolException( - "M1 未实现解压:收到 zlib 压缩帧(帧体 ${Frame.Body.size} 字节,首字节 0x" + + "browser 侧未接 zlib:收到 zlib 压缩帧(帧体 ${Frame.Body.size} 字节,首字节 0x" + (Frame.Body.firstOrNull()?.let { (it.toInt() and 0xff).toString(16).padStart(2, '0') } ?: "?") + - ")。真实服的握手后帧常是压缩的,M1 只处理明文帧。" + ")。当前只处理明文帧。" ) } - return Frame.Body + // 注意:不能把 Frame.Body 直接写进 js(...) —— Kotlin/JS 会给属性名加后缀(Body_xxx), + // 而 js() 里的代码是原样发出的 JS,必须先把值取到普通局部变量再引用。 + val Raw = Frame.Body + val Inflated = NodeRequire("zlib").inflateSync(js("Buffer.from(Raw)")) + return BufferToByteArray(Inflated) } // 保活帧 = 负载为空的帧(实测 3 字节:00 01 00) diff --git a/client/src/jsMain/kotlin/Protocol/ModelCodec.kt b/client/src/jsMain/kotlin/Protocol/ModelCodec.kt new file mode 100644 index 0000000..bcf740b --- /dev/null +++ b/client/src/jsMain/kotlin/Protocol/ModelCodec.kt @@ -0,0 +1,41 @@ +// ModelCodec.kt —— 模型 codec 的字段展开(口径逐条对照 3DTank/tools/lib_space_codec.js 的 +// ReadValue 尾部分支与 ReadFields) +// +// 什么时候会走到这里:容器 pt 的每一项(container.js 的 ReadLtItem:id 是 modelId → +// 就地展开该模型的字段),以及普通字段里类型是「模型类」的字段(字段自带 TypeCodec)。 +// +// 解析顺序(必须与 lib_space_codec.js 一致,否则同一个字节流会解出不同的边界): +// ① 字段的 TypeCodec 命中导出的 codec 表 → 用该 codec +// ② 类型名命中「模型真名 → codec」(CodecByModelName)→ 用该 codec +// ③ 命中「协议核心类 / 资源类 → 线上基础类型」直译(FieldReader 里做) +// 三条都不命中 → FieldReader 如实报「无 codec」,绝不用长度或字节数去猜。 +package Protocol + +internal object ModelCodec { + + // 命中 ①② 就返回 codec 键;都不命中返回 null(③ 与报错交给 FieldReader) + fun ResolveCodec(Type: String, TypeCodec: String): String? { + if (TypeCodec.isNotEmpty() && ProtocolTables.Codec(TypeCodec) != null) return TypeCodec + return ProtocolTables.CodecByModelName(Type) + } + + // 按 codec 键就地展开字段(无长度前缀)。字段名口径同 lib_space_codec.js:306: + // 匿名字段(表里没有名字)用 `(匿名#序)` 区分,否则同名会互相覆盖。 + // 中途解不动:返回已解出的部分 + Bad + 带字段名/类型/相对偏移的原因串(调用方据此停下并如实标注)。 + fun ReadFields(Buf: ByteArray, Off: Int, CodecKey: String, Depth: Int, Ctx: ReadCtx?): FieldReadResult { + val Fields = ProtocolTables.Codec(CodecKey) + ?: return FieldReadResult(null, Off, true, "codec 键 $CodecKey 不在导出表里(闭包裁剪掉了,不猜)") + val Obj = LinkedHashMap() + var At = Off + for (F in Fields) { + val R = FieldReader.ReadValue(Buf, At, F.Type, F.TypeCodec, Depth, Ctx) + Obj[F.Name] = R.Value + if (R.Bad) { + val Why = "字段 ${F.Name}(${F.Type})在 +${At - Off} 处解不动" + (if (R.Why.isNotEmpty()) ":${R.Why}" else "") + return FieldReadResult(Obj, At, true, Why) + } + At = R.Next + } + return FieldReadResult(Obj, At, false) + } +} diff --git a/client/src/jsMain/kotlin/Protocol/ProtocolTables.kt b/client/src/jsMain/kotlin/Protocol/ProtocolTables.kt index 10639b8..8072b3d 100644 --- a/client/src/jsMain/kotlin/Protocol/ProtocolTables.kt +++ b/client/src/jsMain/kotlin/Protocol/ProtocolTables.kt @@ -43,6 +43,9 @@ internal class DownlinkCommandSpec( internal class ProtocolSelection( val DownlinkMethodIds: Int = 0, val UplinkMethodIds: Int = 0, + val CodecCount: Int = 0, + val CodecByModelIdCount: Int = 0, + val CodecByMethodCount: Int = 0, ) @Serializable @@ -53,10 +56,25 @@ internal class ProtocolTablesData( val PrimitiveWidths: Map = emptyMap(), val VarintPrefixed: List = emptyList(), val Selection: ProtocolSelection = ProtocolSelection(), + // 模型 codec:键(module_xxx::Yy)→ 字段表。每个字段是一行 [字段名, 线类型串, TypeCodec] + val Codecs: Map>> = emptyMap(), + // pt.Items 的 modelId → codec 键(容器 ReadLtItem 的展开入口) + val CodecByModelId: Map = emptyMap(), + // methodId → codec 键(downlink_table 里没有的字段型记录靠它兜底,口径同 codec.js 的 ResolveFields) + val CodecByMethod: Map = emptyMap(), + // 模型真名 → codec 键(字段 TypeCodec 为空时的第二解析路径,口径同 lib_space_codec.js 的 ReadValue) + val CodecByModelName: Map = emptyMap(), + // 协议核心类 → 线上基础类型(codec_fields.WireClasses) + val WireClasses: Map = emptyMap(), + // 裸类名 → 线上基础类型(ResourceClasses ∪ 手写表,手写优先;口径同 container.js 的 Alias) + val TypeAliases: Map = emptyMap(), val UplinkByMethod: Map = emptyMap(), val DownlinkByMethod: Map = emptyMap(), ) +// 模型 codec 的一个字段(只保留解码必需的三个属性) +internal class CodecField(val Name: String, val Type: String, val TypeCodec: String) + internal object ProtocolTables { // 复用同一个 Json 实例(每次新建会被编译器告警,且解析多份表时浪费) @@ -67,10 +85,30 @@ internal object ProtocolTables { JsonFormat.decodeFromString(ProtocolTablesData.serializer(), ProtocolTablesJsonText) } + // codec 键 → 字段表(懒解析,避免每次 lookup 都切分 List>) + private val CodecFieldsByKey: Map> by lazy { + Data.Codecs.mapValues { (_, Rows) -> + Rows.map { Row -> CodecField(Row.getOrElse(0) { "" }, Row.getOrElse(1) { "" }, Row.getOrElse(2) { "" }) } + } + } + fun Downlink(MethodId: String): DownlinkCommandSpec? = Data.DownlinkByMethod[MethodId] fun Uplink(MethodId: String): UplinkCommandSpec? = Data.UplinkByMethod[MethodId] + // 按 codec 键取字段表;表里没有就返回 null(解到就如实报「无 codec」,不猜) + fun Codec(Key: String): List? = CodecFieldsByKey[Key] + + fun CodecByModelId(ModelId: String): String? = Data.CodecByModelId[ModelId] + + fun CodecByMethod(MethodId: String): String? = Data.CodecByMethod[MethodId] + + fun CodecByModelName(ModelName: String): String? = Data.CodecByModelName[ModelName] + + // 裸类名 → 线上基础类型:先查协议核心类(WireClasses),再查直译表(TypeAliases)。 + // 顺序与 lib_space_codec.js 的 ReadValue 一致(WireClasses 在前,TypeAlias 在后)。 + fun WireAlias(Type: String): String? = Data.WireClasses[Type] ?: Data.TypeAliases[Type] + // 帧体在 At 处的 8 字节是不是一条已知的上行 methodId(与 dispatch.js 的 IsSpaceFrame 同口径) fun IsUplinkMethod(Body: ByteArray, At: Int): Boolean { if (At + 16 > Body.size) return false diff --git a/client/src/jsMain/kotlin/Protocol/ProtocolTablesData.kt b/client/src/jsMain/kotlin/Protocol/ProtocolTablesData.kt index 9cec820..ded7d99 100644 --- a/client/src/jsMain/kotlin/Protocol/ProtocolTablesData.kt +++ b/client/src/jsMain/kotlin/Protocol/ProtocolTablesData.kt @@ -5,4 +5,4 @@ package Protocol // 协议表原始 JSON 文本(紧凑格式,仅此一处副本进入编译产物) internal const val ProtocolTablesJsonText: String = - "{\"Note\":\"客户端协议表,由 client/tools/ExportProtocolTables.mjs 从 3DTank/names/ 生成,请勿手改。UplinkByMethod 源 uplink_table.json,DownlinkByMethod 源 downlink_table.json(含 Containers 段)。只挑选 M1/M2 目标空间(names/space-init-*.json、space-session-*.json)里出现过的 methodId 与全部容器方法,不含 codec_fields/regdump 等其它表。线格式口径:bool/i8=1、i16=2、i32=4、i64=8、f32=4、f64=8(全大端);string/bytes/array = varint 长度 + 原始字节;list = varint 元素数 + 元素;map = varint 条数 + 条数 × (K,V);enum = i32(4 字节大端);opt 的「空/非空」是 nullmap 比特流里的 1 个 bit(空值负载里 0 字节),不是 1 字节标志。帧格式见 Protocol/Frame.kt 与 Protocol/Nullmap.kt(口径与 3DTank/tools/server/link.js 一致)。\",\"GeneratedAt\":\"2026-09-18T01:48:42.185Z\",\"Source\":\"3DTank/names/{uplink_table.json,downlink_table.json,space-*.json}\",\"PrimitiveWidths\":{\"i8\":1,\"i16\":2,\"i32\":4,\"i64\":8,\"f32\":4,\"f64\":8,\"bool\":1,\"enum\":4},\"VarintPrefixed\":[\"string\",\"bytes\",\"array\"],\"Selection\":{\"DownlinkMethodIds\":31,\"UplinkMethodIds\":7},\"UplinkByMethod\":{\"1079642233486876258\":{\"Name\":\"M_.fcn\",\"Module\":\"module_85196\",\"OwnerClass\":\"M_\",\"SendFn\":\"fcn\",\"Fields\":[{\"Order\":1,\"Slot\":\"ycm_1\",\"Name\":\"\",\"Type\":\"i64\",\"TypeCodec\":\"\"}]},\"1816792453857564692\":{\"Name\":\"G.q1wd\",\"Module\":\"module_29554\",\"OwnerClass\":\"G\",\"SendFn\":\"q1wd\",\"Fields\":[{\"Order\":1,\"Slot\":\"o1wd_1\",\"Name\":\"\",\"Type\":\"i32\",\"TypeCodec\":\"\"}]},\"2528403217084400809\":{\"Name\":\"ls.xbl\",\"Module\":\"module_85667\",\"OwnerClass\":\"ls\",\"SendFn\":\"xbl\",\"Fields\":[]},\"4428603232159847900\":{\"Name\":\"Qh.ycw\",\"Module\":\"module_85196\",\"OwnerClass\":\"Qh\",\"SendFn\":\"ycw\",\"Fields\":[]},\"4795202316771985007\":{\"Name\":\"M_.hcn\",\"Module\":\"module_85196\",\"OwnerClass\":\"M_\",\"SendFn\":\"hcn\",\"Fields\":[{\"Order\":1,\"Slot\":\"ccn_1\",\"Name\":\"\",\"Type\":\"i64\",\"TypeCodec\":\"\"}]},\"7806260029063678398\":{\"Name\":\"ba.lcr\",\"Module\":\"module_85196\",\"OwnerClass\":\"ba\",\"SendFn\":\"lcr\",\"Fields\":[]},\"8060894096836849355\":{\"Name\":\"ha.gcq\",\"Module\":\"module_85196\",\"OwnerClass\":\"ha\",\"SendFn\":\"gcq\",\"Fields\":[{\"Order\":1,\"Slot\":\"bcq_1\",\"Name\":\"\",\"Type\":\"i64\",\"TypeCodec\":\"\"},{\"Order\":2,\"Slot\":\"ccq_1\",\"Name\":\"\",\"Type\":\"i32\",\"TypeCodec\":\"\"},{\"Order\":3,\"Slot\":\"dcq_1\",\"Name\":\"\",\"Type\":\"i32\",\"TypeCodec\":\"\"},{\"Order\":4,\"Slot\":\"ecq_1\",\"Name\":\"\",\"Type\":\"enum\",\"TypeCodec\":\"module_85667::Ve\"}]}},\"DownlinkByMethod\":{\"237130683810296524\":{\"Name\":\"Fn\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_10283\",\"OwnerClass\":\"Fn\",\"Fields\":[{\"Order\":1,\"Slot\":\"jh4_1\",\"Name\":\"hash\",\"Type\":\"string\",\"TypeCodec\":\"\"}]},\"761463638726320835\":{\"Name\":\"ki\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_10283\",\"OwnerClass\":\"ki\",\"Fields\":[]},\"1246109053620123806\":{\"Name\":\"oi\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_25377\",\"OwnerClass\":\"oi\",\"Fields\":[{\"Order\":1,\"Slot\":\"ddn_1\",\"Name\":\"users\",\"Type\":\"list\",\"TypeCodec\":\"module_25377::Tt\"}]},\"1247179769701109529\":{\"Name\":\"ki\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_10283\",\"OwnerClass\":\"ki\",\"Fields\":[{\"Order\":1,\"Slot\":\"chc_1\",\"Name\":\"advisedUids\",\"Type\":\"list\",\"TypeCodec\":\"\"}]},\"1247179769701225356\":{\"Name\":\"ki\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_10283\",\"OwnerClass\":\"ki\",\"Fields\":[]},\"1936068342294351641\":{\"Name\":\"N_\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_85196\",\"OwnerClass\":\"N_\",\"Fields\":[]},\"2025886178375810581\":{\"Name\":\"gn\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_10283\",\"OwnerClass\":\"gn\",\"Fields\":[{\"Order\":1,\"Slot\":\"\",\"Name\":\"\",\"Type\":\"i64\",\"TypeCodec\":\"\"}]},\"2968780118652565413\":{\"Name\":\"Dm\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_47243\",\"OwnerClass\":\"Dm\",\"Fields\":[{\"Order\":1,\"Slot\":\"nft_1\",\"Name\":\"questIds\",\"Type\":\"list\",\"TypeCodec\":\"\"},{\"Order\":2,\"Slot\":\"oft_1\",\"Name\":\"questCategoriesIds\",\"Type\":\"list\",\"TypeCodec\":\"\"},{\"Order\":3,\"Slot\":\"pft_1\",\"Name\":\"completedQuestIds\",\"Type\":\"list\",\"TypeCodec\":\"\"},{\"Order\":4,\"Slot\":\"qft_1\",\"Name\":\"completedQuestCategoriesIds\",\"Type\":\"list\",\"TypeCodec\":\"\"}]},\"3182939728106937130\":{\"Name\":\"hr\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_89803\",\"OwnerClass\":\"hr\",\"Fields\":[]},\"3216143066888387731\":{\"Name\":\"ModelService.LoadDependencies\",\"Kind\":\"container\",\"Layout\":\"zt\",\"Module\":\"\",\"OwnerClass\":\"\",\"Fields\":[]},\"3692495084100053385\":{\"Name\":\"N_\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_85196\",\"OwnerClass\":\"N_\",\"Fields\":[{\"Order\":1,\"Slot\":\"ocl_1\",\"Name\":\"mountedItems\",\"Type\":\"list\",\"TypeCodec\":\"\"}]},\"3996477900528000389\":{\"Name\":\"N_\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_85196\",\"OwnerClass\":\"N_\",\"Fields\":[{\"Order\":1,\"Slot\":\"kcl_1\",\"Name\":\"itemsOnDepot\",\"Type\":\"list\",\"TypeCodec\":\"\"}]},\"4567332396287339500\":{\"Name\":\"Yn\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_25377\",\"OwnerClass\":\"Yn\",\"Fields\":[{\"Order\":1,\"Slot\":\"xdl_1\",\"Name\":\"users\",\"Type\":\"list\",\"TypeCodec\":\"module_25377::zt\"}]},\"5213829805760580947\":{\"Name\":\"N_\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_85196\",\"OwnerClass\":\"N_\",\"Fields\":[]},\"5236393599344825589\":{\"Name\":\"N_\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_85196\",\"OwnerClass\":\"N_\",\"Fields\":[{\"Order\":1,\"Slot\":\"mcl_1\",\"Name\":\"itemsOnMarket\",\"Type\":\"list\",\"TypeCodec\":\"\"}]},\"5543735653822042458\":{\"Name\":\"ni\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_25377\",\"OwnerClass\":\"ni\",\"Fields\":[{\"Order\":1,\"Slot\":\"pdm_1\",\"Name\":\"users\",\"Type\":\"list\",\"TypeCodec\":\"module_25377::St\"}]},\"5600601240138203674\":{\"Name\":\"_a\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_85196\",\"OwnerClass\":\"_a\",\"Fields\":[{\"Order\":1,\"Slot\":\"vcp_1\",\"Name\":\"item\",\"Type\":\"i64\",\"TypeCodec\":\"\"},{\"Order\":2,\"Slot\":\"\",\"Name\":\"\",\"Type\":\"i32\",\"TypeCodec\":\"\"}]},\"5732737005800306202\":{\"Name\":\"il\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_47243\",\"OwnerClass\":\"il\",\"Fields\":[{\"Order\":1,\"Slot\":\"pel_1\",\"Name\":\"announcementItems\",\"Type\":\"list\",\"TypeCodec\":\"module_47243::Vr\"}]},\"6180114602676583672\":{\"Name\":\"ki\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_10283\",\"OwnerClass\":\"ki\",\"Fields\":[]},\"6279910878005396624\":{\"Name\":\"ty\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_47243\",\"OwnerClass\":\"ty\",\"Fields\":[{\"Order\":1,\"Slot\":\"rfv_1\",\"Name\":\"statistic\",\"Type\":\"list\",\"TypeCodec\":\"module_47243::m_\"}]},\"7615142300796401818\":{\"Name\":\"ka\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_85196\",\"OwnerClass\":\"ka\",\"Fields\":[{\"Order\":1,\"Slot\":\"dcr_1\",\"Name\":\"devices\",\"Type\":\"list\",\"TypeCodec\":\"\"},{\"Order\":2,\"Slot\":\"ecr_1\",\"Name\":\"mountedDevice\",\"Type\":\"opt\",\"TypeCodec\":\"\"}]},\"7640916300855664666\":{\"Name\":\"ModelService.LoadObjectsData\",\"Kind\":\"container\",\"Layout\":\"pt\",\"Module\":\"\",\"OwnerClass\":\"\",\"Fields\":[]},\"7772769798498565531\":{\"Name\":\"Es\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_85667\",\"OwnerClass\":\"Es\",\"Fields\":[{\"Order\":1,\"Slot\":\"xbn_1\",\"Name\":\"state\",\"Type\":\"enum\",\"TypeCodec\":\"module_85667::nu\"}]},\"7795510382230390111\":{\"Name\":\"Bn\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_25377\",\"OwnerClass\":\"Bn\",\"Fields\":[{\"Order\":1,\"Slot\":\"jdl_1\",\"Name\":\"users\",\"Type\":\"list\",\"TypeCodec\":\"module_25377::\$t\"}]},\"8009147528103070285\":{\"Name\":\"kn\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_89803\",\"OwnerClass\":\"kn\",\"Fields\":[{\"Order\":1,\"Slot\":\"ahm_1\",\"Name\":\"limit\",\"Type\":\"ProBattleRewardLimitData\",\"TypeCodec\":\"module_31908::Ln\"}]},\"8179162314198150518\":{\"Name\":\"ModelService.SetModelCommandAlias\",\"Kind\":\"container\",\"Layout\":\"alias\",\"Module\":\"\",\"OwnerClass\":\"\",\"Fields\":[]},\"8615808087035604385\":{\"Name\":\"N_\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_85196\",\"OwnerClass\":\"N_\",\"Fields\":[{\"Order\":1,\"Slot\":\"ccm_1\",\"Name\":\"item\",\"Type\":\"i64\",\"TypeCodec\":\"\"},{\"Order\":2,\"Slot\":\"\",\"Name\":\"\",\"Type\":\"i32\",\"TypeCodec\":\"\"}]},\"8814983091022938481\":{\"Name\":\"Ii\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_37504\",\"OwnerClass\":\"Ii\",\"Fields\":[{\"Order\":1,\"Slot\":\"kb5_1\",\"Name\":\"userData\",\"Type\":\"list\",\"TypeCodec\":\"module_37504::St\"}]},\"8836555743203700004\":{\"Name\":\"fa\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_85196\",\"OwnerClass\":\"fa\",\"Fields\":[{\"Order\":1,\"Slot\":\"pcq_1\",\"Name\":\"properties\",\"Type\":\"list>\",\"TypeCodec\":\"module_85196::mu\"}]},\"9038756763225879447\":{\"Name\":\"ModelService.UnloadObjects\",\"Kind\":\"container\",\"Layout\":\"lt\",\"Module\":\"\",\"OwnerClass\":\"\",\"Fields\":[]},\"9114987333090113769\":{\"Name\":\"Es\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_85667\",\"OwnerClass\":\"Es\",\"Fields\":[{\"Order\":1,\"Slot\":\"abo_1\",\"Name\":\"origin\",\"Type\":\"enum\",\"TypeCodec\":\"module_85667::nu\"},{\"Order\":2,\"Slot\":\"bbo_1\",\"Name\":\"state\",\"Type\":\"enum\",\"TypeCodec\":\"module_85667::nu\"}]}}}" + "{\"Note\":\"客户端协议表,由 client/tools/ExportProtocolTables.mjs 从 3DTank/names/ 生成,请勿手改。UplinkByMethod 源 uplink_table.json,DownlinkByMethod 源 downlink_table.json(含 Containers 段)。Codecs/CodecByModelId/CodecByMethod/CodecByModelName 源 codec_fields.json,按「pt.Items 的 modelId + downlink_table 方法」取闭包裁剪(只留字段名/线类型串/TypeCodec,丢掉全部元数据)。TypeAliases = codec_fields.ResourceClasses[].Wire 与手写 RESOURCE_CLASS_WIRE 合并(手写优先),WireClasses 为 codec_fields.WireClasses。只挑选 M1/M2 目标空间(names/space-init-*.json、space-session-*.json)里出现过的 methodId 与全部容器方法。线格式口径:bool/i8=1、i16=2、i32=4、i64=8、f32=4、f64=8(全大端);string/bytes/array = varint 长度 + 原始字节;list = varint 元素数 + 元素;map = varint 条数 + 条数 × (K,V);enum = i32(4 字节大端);opt 的「空/非空」是 nullmap 比特流里的 1 个 bit(空值负载里 0 字节),不是 1 字节标志。帧格式见 Protocol/Frame.kt 与 Protocol/Nullmap.kt(口径与 3DTank/tools/server/link.js 一致)。\",\"GeneratedAt\":\"2026-09-18T01:58:44.437Z\",\"Source\":\"3DTank/names/{uplink_table.json,downlink_table.json,codec_fields.json,space-*.json}\",\"PrimitiveWidths\":{\"i8\":1,\"i16\":2,\"i32\":4,\"i64\":8,\"f32\":4,\"f64\":8,\"bool\":1,\"enum\":4},\"VarintPrefixed\":[\"string\",\"bytes\",\"array\"],\"Selection\":{\"DownlinkMethodIds\":31,\"UplinkMethodIds\":7,\"CodecCount\":559,\"CodecByModelIdCount\":356,\"CodecByMethodCount\":432},\"WireClasses\":{\"R\":\"i64\",\"xr\":\"i64\"},\"TypeAliases\":{\"B_\":\"i64\",\"Da\":\"i64\",\"Ea\":\"i64\",\"Gf\":\"i64\",\"Pc\":\"i64\",\"W_\":\"i64\",\"kv\":\"i64\",\"nh\":\"i64\",\"no\":\"i64\",\"pv\":\"i64\",\"qs\":\"i64\",\"uh\":\"i64\",\"uo\":\"i64\",\"zv\":\"i64\"},\"CodecByModelId\":{\"104562115846147942\":\"module_89803::Wt\",\"120961863156462946\":\"module_85196::Du\",\"149643551432886459\":\"module_85196::m_\",\"171896995500198357\":\"module_85183::Sm\",\"213661725715747381\":\"module_85196::gs\",\"216902005816818019\":\"module_31908::Jn\",\"258682513334072065\":\"module_25377::St\",\"260111248825415414\":\"module_85183::Mb\",\"313670832122918648\":\"module_85183::Qw\",\"433350986715773690\":\"module_88693::it\",\"462434031489766566\":\"module_47243::o_\",\"466296741210741928\":\"module_10283::rt\",\"481504601146841174\":\"module_85196::mo\",\"510571369984788727\":\"module_85183::Go\",\"513176302374590130\":\"module_10283::wt\",\"573691036321759779\":\"module_85183::wp\",\"649690707811173020\":\"module_37504::\$t\",\"658797348514407988\":\"module_85196::Fs\",\"693025797100292228\":\"module_47243::zh\",\"701801920209410257\":\"module_85196::Zo\",\"712090483864327130\":\"module_85196::wo\",\"732152133982227177\":\"module_85183::ip\",\"770654516236272028\":\"module_85183::jm\",\"787936358514072261\":\"module_31908::Ei\",\"806128205466208462\":\"module_47243::Wa\",\"821863604528384663\":\"module_88693::lt\",\"834829861153964627\":\"module_85196::q_\",\"844040023906032853\":\"module_85183::fl\",\"868364325972433765\":\"module_54199::mt\",\"871785774630866042\":\"module_37504::\$t\",\"881620222948704326\":\"module_37504::\$t\",\"887431150717814637\":\"module_85183::Hy\",\"889485403566576664\":\"module_47243::\$a\",\"891137447706578619\":\"module_54199::ft\",\"905970599512839002\":\"module_85196::q_\",\"920233600808088339\":\"module_85183::Ry\",\"965113061940997187\":\"module_47243::Oe\",\"973781565169577734\":\"module_85183::pk\",\"994751080759166914\":\"module_89803::ht\",\"1009501302658881534\":\"module_47243::Tu\",\"1036461397335537760\":\"module_47243::Jh\",\"1090112775751802907\":\"module_85183::ol\",\"1092307613749405757\":\"module_85183::Np\",\"1115275516484037832\":\"module_37504::Yt\",\"1130027771466355435\":\"module_85183::Mp\",\"1139677084511624062\":\"module_85196::Ps\",\"1164458258646872337\":\"module_85196::j_\",\"1237976996871886061\":\"module_85183::Rv\",\"1259328549938381181\":\"module_85196::wu\",\"1298753286651761171\":\"module_25377::jt\",\"1417398836682569292\":\"module_47243::Su\",\"1456475022890566348\":\"module_47243::O_\",\"1472449384337994019\":\"module_99527::N\",\"1475210252818583689\":\"module_85183::c_\",\"1500120709087433677\":\"module_85183::Wm\",\"1534251830977989099\":\"module_85196::rs\",\"1535852183188388854\":\"module_47243::pa\",\"1661364280719338177\":\"module_85183::a_\",\"1663344340563853103\":\"module_85183::yw\",\"1688856467034284073\":\"module_85183::yh\",\"1748249573394295263\":\"module_85183::Df\",\"1767155986856291742\":\"module_85183::zb\",\"1782954502314814229\":\"module_85183::Mv\",\"1838248562944554574\":\"module_85183::mb\",\"1850509145998626828\":\"module_25377::wt\",\"1851605205665890036\":\"module_47243::Mc\",\"1865478986390468300\":\"module_85196::_s\",\"1893408944113965505\":\"module_47243::Us\",\"1986821874929333245\":\"module_37504::Xt\",\"1987602940683756146\":\"module_47243::ke\",\"1997576349992148053\":\"module_85183::rk\",\"2023935033691193766\":\"module_37504::\$t\",\"2046257084008991040\":\"module_85183::ya\",\"2057320715890332864\":\"module_85183::ue\",\"2057487026153364495\":\"module_85183::op\",\"2078544146946392301\":\"module_85183::Y_\",\"2080556892932195426\":\"module_47243::Sc\",\"2085529474881905981\":\"module_31908::li\",\"2101100305743734614\":\"module_85183::cr\",\"2103303438297476110\":\"module_47243::th\",\"2104999573658810427\":\"module_85183::Wb\",\"2108103923322474513\":\"module_85667::He\",\"2114179554921095892\":\"module_85196::\$u\",\"2145315487377727727\":\"module_85183::So\",\"2150802556932617880\":\"module_85183::Qb\",\"2168011188167752629\":\"module_47243::pc\",\"2172139419072369403\":\"module_85183::ep\",\"2173939047300893281\":\"module_85183::Ha\",\"2235965200289058033\":\"module_85183::up\",\"2252704231082045810\":\"module_47243::jc\",\"2269636304551395302\":\"module_85183::so\",\"2271787261806799336\":\"module_85183::Kb\",\"2360640997000854496\":\"module_85183::qa\",\"2368553937090306741\":\"module_85183::Kl\",\"2396069765491056127\":\"module_88693::_t\",\"2433120830275396692\":\"module_85196::s_\",\"2464705242400585109\":\"module_85183::pr\",\"2472262160204144219\":\"module_31908::zi\",\"2474458842977623992\":\"module_10283::kt\",\"2494628067134376039\":\"module_85196::Ts\",\"2544465990449691855\":\"module_85183::kw\",\"2547093126916834195\":\"module_37504::Pt\",\"2560105521800470759\":\"module_85183::Lb\",\"2606798949852309286\":\"module_37504::Ht\",\"2618111250571302204\":\"module_85183::Vs\",\"2638139599268780529\":\"module_85183::Ev\",\"2648029304025111838\":\"module_85183::ls\",\"2660691061343351669\":\"module_85183::Gm\",\"2767408225195389970\":\"module_47243::R_\",\"2769268442698022653\":\"module_85196::bu\",\"2789386002514731022\":\"module_47243::Ia\",\"2803166101624878775\":\"module_85183::cd\",\"2855626038259597130\":\"module_47243::te\",\"2913056477936031270\":\"module_89803::_t\",\"2951667042968033849\":\"module_85196::ts\",\"3031864034871022835\":\"module_85183::Au\",\"3075844226211230705\":\"module_85183::cw\",\"3122964582367261689\":\"module_85196::vu\",\"3137250957878113145\":\"module_85183::ab\",\"3152693668290247629\":\"module_47243::ku\",\"3157947224668485277\":\"module_85183::O_\",\"3158124838791669092\":\"module_47243::_s\",\"3179861497615625536\":\"module_47243::Ps\",\"3248199557469599724\":\"module_85183::jb\",\"3305376498517733218\":\"module_85183::Qo\",\"3317051239895575278\":\"module_85183::db\",\"3339617300033754420\":\"module_85183::Lo\",\"3349786357139026014\":\"module_47243::Ae\",\"3364392936313775902\":\"module_85183::pu\",\"3385611214280288146\":\"module_85183::Ta\",\"3395764563215792356\":\"module_47243::Fe\",\"3413041240691998182\":\"module_37504::ot\",\"3438505192580052999\":\"module_85196::hs\",\"3503382027414679973\":\"module_47243::au\",\"3527205014716342329\":\"module_25377::Nt\",\"3535248640055401164\":\"module_85183::Sc\",\"3620520388804703780\":\"module_47243::ps\",\"3714146481313901316\":\"module_47243::F_\",\"3719295044981767592\":\"module_85183::zc\",\"3730185794267514852\":\"module_85196::gu\",\"3893855999545616334\":\"module_85196::So\",\"3907559303616283277\":\"module_85183::py\",\"3935107155251354407\":\"module_99527::N\",\"3966050316678844327\":\"module_85183::Jc\",\"3985896237583754666\":\"module_47243::sh\",\"4038465370530850950\":\"module_85196::h_\",\"4045733714401632272\":\"module_85183::Zg\",\"4065909569861626318\":\"module_10283::tt\",\"4068618447512888231\":\"module_85667::Ze\",\"4186634155763928467\":\"module_47243::Sa\",\"4206032257972775630\":\"module_85183::uq\",\"4234781414353452329\":\"module_85196::xo\",\"4245000165576407500\":\"module_85196::Ls\",\"4255726087158005051\":\"module_25377::Tt\",\"4268132139764766386\":\"module_47243::Dh\",\"4309274349580876968\":\"module_85196::bs\",\"4388979890807820236\":\"module_85183::cb\",\"4406836274649365203\":\"module_85183::My\",\"4440355418204561498\":\"module_47243::ah\",\"4444006910106229297\":\"module_85183::Pv\",\"4499337062875496540\":\"module_85183::Nd\",\"4553925959338838726\":\"module_85183::g_\",\"4658911146867546991\":\"module_85183::vk\",\"4692610703461978415\":\"module_85196::ns\",\"4693095212037357021\":\"module_85183::nh\",\"4743567393313674375\":\"module_85196::Eo\",\"4748522118519647527\":\"module_47243::Nu\",\"4778752313022424015\":\"module_85183::_c\",\"4782427880403395260\":\"module_47243::gc\",\"4806152428066355053\":\"module_88693::et\",\"4813819753066546054\":\"module_37504::\$t\",\"4817031001612283794\":\"module_85196::Xo\",\"4875657231924274329\":\"module_85183::Zc\",\"4885574251230758729\":\"module_85183::Hh\",\"4905763060352702216\":\"module_47243::rs\",\"4985274885530276227\":\"module_85183::Pa\",\"5004566952388327414\":\"module_47243::ph\",\"5055746953759097716\":\"module_85183::pb\",\"5111180848188020047\":\"module_88693::ht\",\"5123834867188931684\":\"module_85183::qu\",\"5138794050233567698\":\"module_47243::qh\",\"5156898764211343104\":\"module_47243::Wu\",\"5167916989664044333\":\"module_47243::u_\",\"5172585086901412996\":\"module_47243::H_\",\"5194655544597440038\":\"module_85183::Rp\",\"5207857306014573244\":\"module_85196::k_\",\"5215232257096838692\":\"module_85183::Mo\",\"5215458949573069793\":\"module_85183::\$c\",\"5219530271535770658\":\"module_85196::ys\",\"5242494537362061802\":\"module_85183::jr\",\"5255782026414758079\":\"module_85667::ru\",\"5256681735304582291\":\"module_47243::bc\",\"5257069799854314780\":\"module_85183::sf\",\"5297988375509642470\":\"module_37504::\$t\",\"5385894712778438726\":\"module_85183::lu\",\"5412538083071671358\":\"module_89803::Gt\",\"5457907984000701384\":\"module_10283::ft\",\"5543162332469864498\":\"module_85183::Nb\",\"5604117679922858821\":\"module_85183::ad\",\"5724298620794499870\":\"module_85196::Js\",\"5738770490413536673\":\"module_85196::Fo\",\"5745114335268581493\":\"module_85183::bl\",\"5779075235189237790\":\"module_85183::R_\",\"5780017129265868734\":\"module_47243::Ws\",\"5801057999588514016\":\"module_47243::cu\",\"5817682208733860186\":\"module_47243::ha\",\"5867914731324680416\":\"module_85183::xm\",\"5895522515282663537\":\"module_47243::io\",\"5932347630672640435\":\"module_89803::gn\",\"5952355564848177159\":\"module_85196::Fu\",\"5958419804845264849\":\"module_85183::wr\",\"5968651969329902265\":\"module_85183::s_\",\"5988756521593027564\":\"module_85196::p_\",\"6042266992054445914\":\"module_37504::Wt\",\"6048708024205731750\":\"module_37504::gt\",\"6071565290933648049\":\"module_54199::st\",\"6091707767266836975\":\"module_47243::Ha\",\"6111098822553419499\":\"module_85196::ss\",\"6117306895090150422\":\"module_85196::Lo\",\"6141842138930446750\":\"module_85183::_o\",\"6144768774251946863\":\"module_47243::Yu\",\"6165842138816273510\":\"module_88693::it\",\"6169263949965533624\":\"module_85183::Ku\",\"6192892501890483066\":\"module_47243::Hh\",\"6210079079280471693\":\"module_85183::wy\",\"6210980129845088505\":\"module_85183::vp\",\"6220257539261493170\":\"module_37504::\$t\",\"6247612331185889342\":\"module_37504::Gt\",\"6282101613166902704\":\"module_89803::gt\",\"6359692933626160397\":\"module_67222::B\",\"6384655869260380731\":\"module_85183::fd\",\"6395651505226788750\":\"module_47243::Ka\",\"6403067749608679876\":\"module_25377::ft\",\"6424605984954645392\":\"module_85183::S_\",\"6430862429652735997\":\"module_85196::As\",\"6445399806655453890\":\"module_85183::vu\",\"6455142242556985012\":\"module_85183::Dm\",\"6484910309342792771\":\"module_47243::Ta\",\"6514486185481319524\":\"module_47243::Pe\",\"6528115483341986769\":\"module_85183::vm\",\"6589716392600418185\":\"module_85196::cu\",\"6590506277285284269\":\"module_85183::ky\",\"6596471917520283782\":\"module_85183::fm\",\"6623392760536649465\":\"module_85183::ev\",\"6627517808336136295\":\"module_25377::Bt\",\"6628468327090974523\":\"module_85196::Qs\",\"6638615717159906637\":\"module_85183::Gc\",\"6641568549549264883\":\"module_85183::Sv\",\"6642061974307112160\":\"module_85183::vd\",\"6652129902375288094\":\"module_89803::kt\",\"6666386288157781248\":\"module_88693::it\",\"6668012086939621459\":\"module_85183::\$y\",\"6680653332718076818\":\"module_85196::z_\",\"6726403008449784914\":\"module_47243::qu\",\"6729312304988255776\":\"module_85183::da\",\"6744857484209767976\":\"module_47243::La\",\"6768558945605412944\":\"module_37504::\$t\",\"6791702738669939115\":\"module_10283::Z\",\"6820688895043695030\":\"module_47243::Bu\",\"6841476710481576918\":\"module_47243::mh\",\"6855550629220038001\":\"module_85183::hp\",\"6882547137659234022\":\"module_37504::bt\",\"6899642532024252493\":\"module_47243::Xh\",\"6966229709169193455\":\"module_47243::A_\",\"7019981464353739346\":\"module_25377::It\",\"7022952987062772048\":\"module_85183::cg\",\"7068168268219022867\":\"module_85183::fw\",\"7076997842038370798\":\"module_37504::nt\",\"7105110962241677955\":\"module_47243::Xo\",\"7109632754421804521\":\"module_85196::Lu\",\"7127632667958387441\":\"module_85183::Hb\",\"7163171834328288344\":\"module_85183::Vb\",\"7175193612424807833\":\"module_85667::Ye\",\"7185560430911351668\":\"module_89803::Pt\",\"7214131179703676563\":\"module_85183::Cy\",\"7235761383767133268\":\"module_85183::Kd\",\"7257138969919985658\":\"module_85183::Ly\",\"7266201540452328992\":\"module_85183::mw\",\"7267982595724632282\":\"module_85183::fr\",\"7272122855372520854\":\"module_88693::tt\",\"7286757952195114814\":\"module_88693::it\",\"7295738902766942560\":\"module_85183::ko\",\"7300500077035374704\":\"module_10283::Et\",\"7307951074626252633\":\"module_47243::Cs\",\"7336962025965257296\":\"module_85183::Ia\",\"7341286352739641155\":\"module_47243::De\",\"7391892068905080676\":\"module_85196::Vu\",\"7401419333842694749\":\"module_85183::ar\",\"7472019549033825785\":\"module_85196::ws\",\"7484749077586587376\":\"module_85183::n_\",\"7551602984488625261\":\"module_85183::Zk\",\"7563487786199453443\":\"module_85196::v_\",\"7588919819099098108\":\"module_47243::Yr\",\"7640081207058999117\":\"module_85196::Yu\",\"7692437363459179503\":\"module_85183::xv\",\"7700337090161867199\":\"module_85183::rp\",\"7762582768388221832\":\"module_85183::Pi\",\"7786222713213880898\":\"module_47243::Ka\",\"7805766859473669177\":\"module_47243::se\",\"7810820263988615290\":\"module_47243::Na\",\"7822174537018024954\":\"module_47243::wu\",\"7838366943662257567\":\"module_10283::K\",\"7860106430129114440\":\"module_47243::us\",\"7874327015886119466\":\"module_85183::ku\",\"7881181052304665842\":\"module_47243::bh\",\"7883218652624289568\":\"module_85183::Tv\",\"7894174029759745197\":\"module_85183::oc\",\"7899544742191273818\":\"module_85183::ay\",\"7912514999422640843\":\"module_85183::Hc\",\"7935550480449821024\":\"module_47243::Ya\",\"7949064601138261608\":\"module_37504::St\",\"7949842549440362353\":\"module_47243::mh\",\"7968893209278436962\":\"module_85183::tl\",\"7970528904804811572\":\"module_85183::Li\",\"8032192927455575509\":\"module_99527::D\",\"8048067679617995470\":\"module_47243::Oh\",\"8082047509383246662\":\"module_85183::pa\",\"8083057704493864984\":\"module_47243::Ju\",\"8109298281939714429\":\"module_85183::zr\",\"8115862559097350286\":\"module_37504::Q\",\"8153652471440648359\":\"module_85196::Ws\",\"8166810800706377715\":\"module_85183::E_\",\"8191021443726008799\":\"module_85183::dv\",\"8212033390179430143\":\"module_85183::Dp\",\"8237913720896985151\":\"module_85183::ge\",\"8316165996190533130\":\"module_85183::f_\",\"8345039896357067195\":\"module_85183::bw\",\"8384919755051909877\":\"module_85183::ld\",\"8458424802385151068\":\"module_47243::Ma\",\"8464700182634408374\":\"module_47243::Xe\",\"8495889215182031654\":\"module_37504::xt\",\"8517963146836182364\":\"module_85183::Uc\",\"8618289906968528240\":\"module_89803::zt\",\"8629995567796005946\":\"module_47243::Xa\",\"8659306545527654916\":\"module_85183::N_\",\"8677996546985988365\":\"module_47243::ye\",\"8738779591519195597\":\"module_85183::Hk\",\"8754295211549969729\":\"module_85183::pd\",\"8755539534673619516\":\"module_47243::ch\",\"8762499949521628954\":\"module_37504::pt\",\"8784137528831277530\":\"module_85183::Jg\",\"8853923292505519798\":\"module_47243::Ua\",\"8889030940127130747\":\"module_85183::vc\",\"8966480724474352542\":\"module_85183::Yo\",\"8980131978880882207\":\"module_85183::_e\",\"9006361281849290638\":\"module_47243::Qs\",\"9028066746998427457\":\"module_47243::Ts\",\"9094843804380507187\":\"module_85183::pf\",\"9105939015977236209\":\"module_85183::Nv\",\"9114375113924783411\":\"module_85183::qo\",\"9117714962311439886\":\"module_10283::at\",\"9121776538033375678\":\"module_85183::xa\",\"9168562037264832365\":\"module_85196::fu\",\"9169475278259220023\":\"module_85183::sa\",\"9172358609541951983\":\"module_85183::Gr\",\"9175894397021160571\":\"module_85183::Nc\"},\"CodecByMethod\":{\"24336456693619694\":\"module_47243::Ts\",\"28608551882350617\":\"module_85183::Hh\",\"42520361057728933\":\"module_85183::S_\",\"53931578606487632\":\"module_85183::Au\",\"69377216150006552\":\"module_85183::Mv\",\"89262871869978720\":\"module_85183::Gm\",\"93011926352432722\":\"module_47243::Ps\",\"107611244103209330\":\"module_47243::au\",\"109481103048880710\":\"module_85183::_e\",\"110434473993376637\":\"module_85183::cg\",\"114702575520501699\":\"module_85183::ge\",\"115270905187759765\":\"module_47243::se\",\"128646616932243632\":\"module_85183::xm\",\"176110661876294882\":\"module_47243::Ps\",\"176568685285556018\":\"module_47243::Wu\",\"208505630859996990\":\"module_85183::bw\",\"246375933974875495\":\"module_37504::Yt\",\"246376163847464422\":\"module_37504::Yt\",\"246376335615041836\":\"module_37504::Yt\",\"258885409970069058\":\"module_85183::Lo\",\"270830195361940689\":\"module_85183::qo\",\"276076212290602640\":\"module_47243::Us\",\"314983404410424222\":\"module_54199::mt\",\"376004548045092294\":\"module_85183::yw\",\"512336029863754236\":\"module_85183::Pv\",\"579242823008667022\":\"module_47243::Ps\",\"642932327836248483\":\"module_85183::R_\",\"676665252684358508\":\"module_85183::Ry\",\"682529720221233539\":\"module_85183::mb\",\"684534556503643918\":\"module_85183::lu\",\"756296912352966419\":\"module_85667::He\",\"761463638726320835\":\"module_10283::kt\",\"772901659708598032\":\"module_85183::ep\",\"773226029258926866\":\"module_85183::ar\",\"793957265923484969\":\"module_31908::Ei\",\"829688362537212989\":\"module_37504::Yt\",\"829688408607058074\":\"module_37504::Yt\",\"848734776772436751\":\"module_47243::Us\",\"849912474669372210\":\"module_89803::zt\",\"855141293721335664\":\"module_85183::zc\",\"886347819034723364\":\"module_85183::Hh\",\"901772559930405219\":\"module_85183::Y_\",\"909632825295029806\":\"module_85183::lu\",\"924318199145214645\":\"module_85183::fd\",\"954003377929350580\":\"module_85183::Rv\",\"977242693633208314\":\"module_85183::ay\",\"979917479530760492\":\"module_85183::Mv\",\"991279107648199953\":\"module_37504::\$t\",\"1027911230627575995\":\"module_85183::Mb\",\"1061006404063035827\":\"module_85183::ip\",\"1063883522906918839\":\"module_85183::ge\",\"1072380982270148831\":\"module_10283::K\",\"1137031257296827847\":\"module_37504::nt\",\"1153688745215560661\":\"module_47243::Fe\",\"1168222193764656966\":\"module_85183::ge\",\"1235088345323764142\":\"module_85183::wr\",\"1235088345323764690\":\"module_85183::wr\",\"1244736124634194290\":\"module_85183::yw\",\"1246109053620123806\":\"module_25377::Tt\",\"1247179769701109529\":\"module_10283::kt\",\"1247179769701225356\":\"module_10283::kt\",\"1263966930259359161\":\"module_85183::rp\",\"1307561284172016673\":\"module_47243::ha\",\"1338663800868114384\":\"module_88693::tt\",\"1381932048462271336\":\"module_37504::Yt\",\"1396873965565453319\":\"module_37504::Yt\",\"1397939087262834696\":\"module_85183::So\",\"1416652194602611703\":\"module_31908::zi\",\"1436394741539423374\":\"module_85183::xm\",\"1439753158253520585\":\"module_47243::Yr\",\"1461819455835620465\":\"module_37504::gt\",\"1480424224583906965\":\"module_89803::kt\",\"1480425466344702439\":\"module_89803::kt\",\"1498719636425541007\":\"module_88693::tt\",\"1518320782248281377\":\"module_85183::Dm\",\"1536180556703958719\":\"module_10283::wt\",\"1559135854675907932\":\"module_85183::py\",\"1565008115349134490\":\"module_54199::mt\",\"1590697140490653416\":\"module_88693::tt\",\"1597293699677435224\":\"module_85183::jb\",\"1613451515706630596\":\"module_85183::Kd\",\"1613454127258727634\":\"module_85183::Kd\",\"1626582508993174306\":\"module_85183::Dm\",\"1653780246012371883\":\"module_85183::op\",\"1661920281800548495\":\"module_31908::Ei\",\"1663619828320147439\":\"module_85183::fw\",\"1663635222489302521\":\"module_85183::fw\",\"1713161837666313126\":\"module_47243::Yr\",\"1725571201046733716\":\"module_85183::ab\",\"1735069073412814628\":\"module_85183::f_\",\"1789702758705308250\":\"module_85183::qo\",\"1834399130506966481\":\"module_47243::te\",\"1869048083490036553\":\"module_10283::wt\",\"1880027114297758713\":\"module_47243::u_\",\"1883432569915151620\":\"module_85183::Dp\",\"1892188241679946781\":\"module_10283::rt\",\"1909871666630534251\":\"module_88693::tt\",\"1948228610221772610\":\"module_85183::cd\",\"1965570026066462607\":\"module_89803::Wt\",\"1968684612692387446\":\"module_85183::cg\",\"1998557068281182363\":\"module_85183::vk\",\"2039557349593105768\":\"module_47243::se\",\"2047288050054426969\":\"module_85183::Au\",\"2068137729567864293\":\"module_10283::K\",\"2084673864582722213\":\"module_54199::ft\",\"2102265333102715443\":\"module_85183::ky\",\"2102592086285207698\":\"module_37504::Q\",\"2116619297575918257\":\"module_37504::ot\",\"2141301983650645649\":\"module_85183::yw\",\"2214425595364508091\":\"module_85183::ue\",\"2222252323682008158\":\"module_85183::So\",\"2240897788941501720\":\"module_37504::xt\",\"2259562525324509359\":\"module_37504::Q\",\"2289147020187889907\":\"module_85183::Hb\",\"2319469075059373819\":\"module_85183::Dp\",\"2321967673566621796\":\"module_85183::lu\",\"2351885759278528358\":\"module_10283::wt\",\"2359710046028200821\":\"module_85183::yw\",\"2361916365615485840\":\"module_85183::Au\",\"2426455325523984241\":\"module_85183::vc\",\"2454305702329641583\":\"module_89803::_t\",\"2513461960707643851\":\"module_47243::Bu\",\"2549273865595439021\":\"module_47243::rs\",\"2564327160259532396\":\"module_85183::Pv\",\"2582398071874032388\":\"module_85183::Rp\",\"2611173935532140280\":\"module_47243::Ps\",\"2612223562574608892\":\"module_88693::tt\",\"2637004439773039233\":\"module_54199::st\",\"2652688716065651424\":\"module_85667::Ye\",\"2654832856752451606\":\"module_37504::Yt\",\"2662571655067474667\":\"module_85183::kw\",\"2703371004090442945\":\"module_47243::us\",\"2730409051248405081\":\"module_85183::R_\",\"2740421537548129844\":\"module_85183::Lb\",\"2747789592087152345\":\"module_47243::Ps\",\"2763115404716449924\":\"module_85183::ay\",\"2805722386553418492\":\"module_85183::hp\",\"2840538822498053147\":\"module_85183::qo\",\"2851527043709977805\":\"module_10283::kt\",\"2891319762800526644\":\"module_85183::Ta\",\"2896391367845925315\":\"module_85183::Gr\",\"2934412551480614122\":\"module_88693::tt\",\"2940206844144431089\":\"module_89803::gn\",\"2940606982196178690\":\"module_47243::u_\",\"2940608322101861340\":\"module_47243::u_\",\"2989701651242356625\":\"module_85183::Qb\",\"3017384138137697921\":\"module_47243::Ps\",\"3051379474627827578\":\"module_47243::us\",\"3057042862073659526\":\"module_85183::ar\",\"3114108441268497516\":\"module_47243::De\",\"3119382294408125449\":\"module_10283::at\",\"3171490882125125496\":\"module_85183::ep\",\"3174409532068648254\":\"module_89803::ht\",\"3177300755041195751\":\"module_85183::Li\",\"3177300757642975034\":\"module_85183::Li\",\"3182939728106937130\":\"module_89803::gn\",\"3183698678686537900\":\"module_85183::ip\",\"3188647720349732839\":\"module_37504::xt\",\"3190244820038756769\":\"module_47243::Ps\",\"3211078424173330093\":\"module_47243::Bu\",\"3259573107349950777\":\"module_85183::Hk\",\"3264529939218152741\":\"module_85183::cg\",\"3291064285896039435\":\"module_88693::tt\",\"3309025598583214085\":\"module_85183::Cy\",\"3351342889818973539\":\"module_85183::pd\",\"3412731366525601521\":\"module_31908::li\",\"3421230400639853343\":\"module_85183::ay\",\"3422925135801547845\":\"module_89803::Wt\",\"3423457305918530189\":\"module_85183::cg\",\"3423468681468313651\":\"module_85183::cg\",\"3430453981713932879\":\"module_54199::st\",\"3482025423529525056\":\"module_85183::Hk\",\"3503849245765491449\":\"module_85183::Qb\",\"3503849245765652149\":\"module_85183::Qb\",\"3504312496907450914\":\"module_85183::cg\",\"3536472446925346048\":\"module_85183::ld\",\"3546760210246855825\":\"module_31908::zi\",\"3548591940929833025\":\"module_10283::wt\",\"3613725474268371519\":\"module_10283::K\",\"3613996349879174759\":\"module_10283::K\",\"3628916506766819105\":\"module_31908::li\",\"3649639865850681609\":\"module_47243::Ju\",\"3727141956503643256\":\"module_85183::Hh\",\"3744111642464146587\":\"module_37504::bt\",\"3748490273709739281\":\"module_89803::zt\",\"3768030223558212864\":\"module_85183::fw\",\"3817721646456198125\":\"module_10283::wt\",\"3817721646456334094\":\"module_10283::wt\",\"3893341111580011837\":\"module_85183::Au\",\"3896773663152684598\":\"module_89803::Wt\",\"3903010729664928358\":\"module_85183::rk\",\"3909719079251247927\":\"module_88693::tt\",\"3913319265649138109\":\"module_47243::Yr\",\"3926246134868871157\":\"module_10283::rt\",\"3929804726379170595\":\"module_10283::K\",\"3943583499729295778\":\"module_31908::Jn\",\"3977381235093458189\":\"module_47243::Us\",\"3982372259754314184\":\"module_47243::Us\",\"3983638632262874768\":\"module_10283::wt\",\"4003302248435715730\":\"module_85183::ge\",\"4028620761465158251\":\"module_85183::Wb\",\"4038740694554744010\":\"module_10283::rt\",\"4055708865249377998\":\"module_37504::Yt\",\"4067512365209236558\":\"module_85183::So\",\"4098651217391725572\":\"module_85183::ku\",\"4140627039406832926\":\"module_85183::S_\",\"4145605269036784193\":\"module_31908::zi\",\"4152502158136824099\":\"module_85183::qu\",\"4156122388939760755\":\"module_85183::Hy\",\"4177016877549071625\":\"module_85183::qo\",\"4202027557179282961\":\"module_54199::st\",\"4252084460860730669\":\"module_47243::bc\",\"4269970962008007272\":\"module_10283::rt\",\"4345588892358775163\":\"module_10283::kt\",\"4369879803010801180\":\"module_10283::at\",\"4436756109011327056\":\"module_89803::kt\",\"4503699991307339235\":\"module_89803::_t\",\"4538073797885146589\":\"module_85183::mw\",\"4544484075297806721\":\"module_47243::Ae\",\"4554683101226393521\":\"module_85183::ge\",\"4568097497591618556\":\"module_85183::bw\",\"4568097497591833860\":\"module_85183::bw\",\"4570603277638068285\":\"module_85183::Zc\",\"4588303336291477169\":\"module_47243::Yr\",\"4588303805980941192\":\"module_47243::Yr\",\"4649894699348452281\":\"module_89803::kt\",\"4684924965644046597\":\"module_85183::ue\",\"4724159126125187993\":\"module_85196::Js\",\"4735121264368139887\":\"module_89803::zt\",\"4768403502339907548\":\"module_85183::So\",\"4814703309695239999\":\"module_47243::Xo\",\"4817134815354588916\":\"module_85183::Dp\",\"4831333077268992386\":\"module_85183::Dm\",\"4834181928072657585\":\"module_85183::Dm\",\"4854122610453716941\":\"module_85183::ue\",\"4862541063955121514\":\"module_85183::Qb\",\"4865247277338043642\":\"module_85183::Kd\",\"4880074127246447030\":\"module_37504::Yt\",\"4893933961532699766\":\"module_47243::Yr\",\"4914158023711825639\":\"module_47243::ye\",\"4962081584098662674\":\"module_85183::Y_\",\"4979644403852413958\":\"module_10283::ft\",\"4998460206979194964\":\"module_85667::He\",\"5048564266449948919\":\"module_47243::Wu\",\"5049281367653287285\":\"module_47243::io\",\"5086044601826347260\":\"module_85183::Y_\",\"5171281261583893411\":\"module_85183::ip\",\"5182609804280043241\":\"module_47243::Yr\",\"5200451168146380991\":\"module_85183::ar\",\"5226450868398444185\":\"module_85183::pb\",\"5242977548712573154\":\"module_85183::Y_\",\"5256326385350796760\":\"module_85183::hp\",\"5299644370529364247\":\"module_47243::ps\",\"5425510324539583895\":\"module_89803::zt\",\"5434548773962141259\":\"module_85183::My\",\"5446292333752834689\":\"module_85183::lu\",\"5457625541923578989\":\"module_10283::rt\",\"5468958804872316273\":\"module_37504::Yt\",\"5469977024335963604\":\"module_10283::wt\",\"5479730614647222944\":\"module_85183::py\",\"5500506947295869799\":\"module_89803::ht\",\"5523262832935222243\":\"module_85183::ar\",\"5536786668492087416\":\"module_85183::ld\",\"5536793758712801336\":\"module_85183::ay\",\"5628691596950015452\":\"module_47243::Us\",\"5628810758806816321\":\"module_85183::lu\",\"5633963799060031149\":\"module_10283::wt\",\"5636419478064741352\":\"module_31908::li\",\"5668963828502041866\":\"module_85183::jb\",\"5685137488048743855\":\"module_85183::ge\",\"5749736363165481109\":\"module_10283::tt\",\"5780844627196819808\":\"module_31908::Ei\",\"5801225415498662771\":\"module_85183::Lo\",\"5847657988305041673\":\"module_47243::Ae\",\"5848693330284271305\":\"module_25377::wt\",\"5853300576624626088\":\"module_85183::wr\",\"5854120615662076740\":\"module_85183::Qb\",\"5871526952594472533\":\"module_31908::Ei\",\"5876619771294292986\":\"module_85183::R_\",\"5943456002943068649\":\"module_47243::Fe\",\"5943456002943184476\":\"module_47243::Fe\",\"6025940417100022717\":\"module_25377::wt\",\"6032454100111503495\":\"module_85667::He\",\"6032530545731920727\":\"module_85667::He\",\"6058982352227069766\":\"module_85183::wp\",\"6111037286496381339\":\"module_47243::Yr\",\"6124381810255991827\":\"module_85183::\$c\",\"6127259399604255678\":\"module_85183::fw\",\"6128944648146277068\":\"module_54199::ft\",\"6163835825449594578\":\"module_37504::\$t\",\"6177248960642588198\":\"module_85183::yw\",\"6180114602676583672\":\"module_10283::kt\",\"6244553590046625004\":\"module_85183::Qb\",\"6250576433087856347\":\"module_85183::Y_\",\"6252816260867053980\":\"module_47243::Ps\",\"6282822726178548587\":\"module_85183::wp\",\"6299890359477642632\":\"module_85183::vc\",\"6316372751070128914\":\"module_85183::kw\",\"6316377166391255195\":\"module_85183::kw\",\"6328279001222972452\":\"module_85183::wr\",\"6330505994629167126\":\"module_89803::Wt\",\"6356214729562880865\":\"module_31908::Ei\",\"6361743146717496013\":\"module_31908::li\",\"6374471164629053857\":\"module_85183::Kb\",\"6409604452180237449\":\"module_37504::Yt\",\"6444205301512438901\":\"module_85183::Gm\",\"6473618715354439490\":\"module_85183::So\",\"6492680006777979140\":\"module_47243::Us\",\"6614415063929831006\":\"module_85183::vk\",\"6615036895587998551\":\"module_85183::vk\",\"6635862338174306891\":\"module_89803::ht\",\"6679144926991588323\":\"module_47243::bc\",\"6682764721619581273\":\"module_85183::ue\",\"6692915066613838049\":\"module_85183::ue\",\"6743639250009365289\":\"module_31908::li\",\"6761797949292995210\":\"module_47243::ke\",\"6792909073115695089\":\"module_31908::Ei\",\"6826457443736700407\":\"module_47243::Fe\",\"6852580722697364034\":\"module_89803::_t\",\"6913197136739750316\":\"module_85183::Nv\",\"6947798386892132355\":\"module_47243::rs\",\"7008460570137472565\":\"module_85183::ku\",\"7050167951547569950\":\"module_85183::hp\",\"7051126889005555427\":\"module_47243::jc\",\"7051228255598370612\":\"module_85183::Pa\",\"7068923702545456415\":\"module_89803::zt\",\"7078025623569631495\":\"module_85183::Dm\",\"7104309205801232048\":\"module_85183::Mv\",\"7105718786066499086\":\"module_85183::Mv\",\"7115041483344798028\":\"module_47243::Xo\",\"7174636465767941533\":\"module_85183::wp\",\"7174729688535406819\":\"module_85183::Zk\",\"7181081297769655902\":\"module_37504::Yt\",\"7194412814882163035\":\"module_85183::f_\",\"7197018345543317788\":\"module_85183::jr\",\"7216898623560510530\":\"module_85183::g_\",\"7251316292223001978\":\"module_31908::li\",\"7273589105071129668\":\"module_37504::Yt\",\"7304231319779615950\":\"module_85183::Np\",\"7316727561752705683\":\"module_10283::rt\",\"7335191430366621906\":\"module_85183::wp\",\"7344882059299080259\":\"module_89803::Wt\",\"7403247229773089923\":\"module_89803::_t\",\"7420694962019911375\":\"module_88693::it\",\"7423759151545090071\":\"module_47243::rs\",\"7424805141683073573\":\"module_85183::rp\",\"7442372190489325710\":\"module_47243::Ts\",\"7469211907271740690\":\"module_47243::jc\",\"7474691314934075141\":\"module_85183::mw\",\"7500147818756926013\":\"module_85183::So\",\"7512444357462458245\":\"module_85183::Gr\",\"7539316643017832352\":\"module_85183::hp\",\"7539316643018047656\":\"module_85183::hp\",\"7540280341731314166\":\"module_85183::wp\",\"7542085633816094294\":\"module_89803::zt\",\"7546805075905111829\":\"module_10283::kt\",\"7555838499720932524\":\"module_47243::Fe\",\"7647720059052212221\":\"module_85183::pk\",\"7657330805330041244\":\"module_85183::pk\",\"7708461874480136055\":\"module_89803::_t\",\"7764478571911377711\":\"module_47243::Ps\",\"7777574822513948703\":\"module_10283::at\",\"7831128495768819137\":\"module_85183::zb\",\"7864034006236084309\":\"module_47243::Us\",\"7864195052961084235\":\"module_47243::Us\",\"7891521962260218818\":\"module_85183::Lo\",\"7910078009301382601\":\"module_85183::Wb\",\"7938704650169182732\":\"module_85183::rk\",\"7958737744601211588\":\"module_85183::Nv\",\"8000208195328620000\":\"module_31908::Jn\",\"8000208195376412452\":\"module_31908::Jn\",\"8013008932473060482\":\"module_85183::Li\",\"8018942101821409153\":\"module_85183::ko\",\"8086326449411491788\":\"module_47243::Ae\",\"8100670886177672915\":\"module_85183::Cy\",\"8163438958342957025\":\"module_10283::wt\",\"8171778085109430386\":\"module_37504::ot\",\"8188577464406062306\":\"module_10283::rt\",\"8201829668071386439\":\"module_85183::rk\",\"8254919680762272734\":\"module_85183::ip\",\"8258419313269914260\":\"module_10283::wt\",\"8274817676081330504\":\"module_85183::f_\",\"8285569264978375868\":\"module_25377::It\",\"8395271889925905765\":\"module_85183::vk\",\"8399333088188950506\":\"module_89803::_t\",\"8407581545781297405\":\"module_47243::pc\",\"8412189401960347554\":\"module_89803::kt\",\"8422914968360441294\":\"module_37504::gt\",\"8433635069541185363\":\"module_85183::Au\",\"8433635585022781939\":\"module_85183::Au\",\"8452151303656506419\":\"module_85183::\$y\",\"8468360636859619961\":\"module_47243::Us\",\"8503594461052151846\":\"module_85183::kw\",\"8524352143491228494\":\"module_85183::Au\",\"8625902891810495866\":\"module_85183::Rp\",\"8633711911613390575\":\"module_31908::zi\",\"8652232813462564395\":\"module_85183::cb\",\"8679688798445210739\":\"module_85183::fw\",\"8680614953227323122\":\"module_88693::it\",\"8708307156621030644\":\"module_31908::li\",\"8708619517129991571\":\"module_31908::li\",\"8736034487783827683\":\"module_10283::rt\",\"8745254785944463098\":\"module_85183::bw\",\"8772037395462480246\":\"module_10283::K\",\"8773959930134829056\":\"module_85183::Kd\",\"8779532205378268430\":\"module_85183::ko\",\"8813105874551881850\":\"module_85183::Np\",\"8814983091022938481\":\"module_37504::St\",\"8836555743203700004\":\"module_85196::gu\",\"8859088031384930809\":\"module_37504::Yt\",\"8872197650929809377\":\"module_85183::vc\",\"8874740556506734737\":\"module_85183::Mv\",\"8891234703158239948\":\"module_47243::Ps\",\"8895568346538829654\":\"module_47243::qu\",\"8914117039835924034\":\"module_85183::Zk\",\"8927995433991979560\":\"module_85183::Y_\",\"8930926847959017775\":\"module_89803::_t\",\"8944024474967689825\":\"module_85183::Y_\",\"8944100436752558190\":\"module_85183::Y_\",\"8964402760194876659\":\"module_85183::mw\",\"8975361725414273371\":\"module_85183::cd\",\"8981442771483046461\":\"module_85183::ge\",\"8981442771495912329\":\"module_85183::ge\",\"8981778623033134120\":\"module_85183::ue\",\"9047763868814832699\":\"module_85183::a_\",\"9099373858701175412\":\"module_88693::_t\",\"9119326381010148347\":\"module_85183::cb\",\"9132611606180179497\":\"module_85183::Go\",\"9148695708149003246\":\"module_85183::Vb\",\"9173450165804477684\":\"module_37504::Q\",\"9187558822227119790\":\"module_85183::Ly\",\"9187558822227614985\":\"module_85183::Ly\"},\"CodecByModelName\":{\"Lt\":\"module_61860::fi\"},\"Codecs\":{\"module_10283::Et\":[[\"entranceBackgrounds\",\"list\",\"\"],[\"entranceSound\",\"Ea\",\"\"],[\"garageSound\",\"Ea\",\"\"],[\"lobbySound\",\"Ea\",\"\"],[\"proBattlesLimitSound\",\"Ea\",\"\"],[\"proBattlesSound\",\"Ea\",\"\"],[\"shopSound\",\"Ea\",\"\"],[\"tankBuildSound\",\"Ea\",\"\"]],\"module_10283::K\":[[\"realNameCheckEnabled\",\"bool\",\"\"]],\"module_10283::Tt\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_10283::Z\":[[\"background\",\"Gf\",\"\"],[\"endDate\",\"opt\",\"\"],[\"startDate\",\"opt\",\"\"]],\"module_10283::at\":[[\"enabled\",\"bool\",\"\"]],\"module_10283::ft\":[[\"disableRegistrationMessage\",\"opt\",\"\"],[\"disableShopMessage\",\"opt\",\"\"],[\"homeScreenMessage\",\"opt\",\"\"]],\"module_10283::kt\":[[\"disabled\",\"bool\",\"\"],[\"enableRequiredEmail\",\"bool\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"(匿名#4)\",\"i32\",\"\"],[\"passwordNeedDigit\",\"bool\",\"\"],[\"passwordNeedLower\",\"bool\",\"\"],[\"passwordNeedUpper\",\"bool\",\"\"]],\"module_10283::nt\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_10283::ot\":[[\"clientId\",\"string\",\"\"],[\"enabled\",\"opt\",\"\"],[\"snId\",\"string\",\"\"]],\"module_10283::rt\":[[\"socialNetworkParams\",\"list\",\"module_10283::ot\"]],\"module_10283::tt\":[[\"serverHalt\",\"bool\",\"\"]],\"module_10283::wt\":[[\"forceSocialNetwork\",\"opt\",\"\"]],\"module_16100::gt\":[[\"position\",\"Vector3D\",\"module_16100::qn\"],[\"rotation\",\"Vector3D\",\"module_16100::qn\"],[\"size\",\"Vector3D\",\"module_16100::qn\"]],\"module_16100::qn\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"(匿名#3)\",\"f32\",\"\"]],\"module_25377::\$t\":[[\"online\",\"bool\",\"\"],[\"(匿名#2)\",\"i64\",\"\"]],\"module_25377::Bt\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_25377::It\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_25377::Kt\":[[\"(匿名#1)\",\"i64\",\"\"],[\"inGroup\",\"bool\",\"\"],[\"mapName\",\"opt\",\"\"],[\"mode\",\"opt>\",\"module_31908::Rn\"],[\"privateBattle\",\"bool\",\"\"],[\"proBattle\",\"bool\",\"\"],[\"range\",\"opt\",\"module_31908::Dn\"]],\"module_25377::Lt\":[[\"host\",\"string\",\"\"],[\"ports\",\"list\",\"\"],[\"wsProto\",\"string\",\"\"]],\"module_25377::Nt\":[[\"ranks\",\"list\",\"module_25377::Rt\"]],\"module_25377::Rt\":[[\"(匿名#1)\",\"i32\",\"\"],[\"name\",\"string\",\"\"]],\"module_25377::St\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"i64\",\"\"]],\"module_25377::Tt\":[[\"partnerUid\",\"opt\",\"\"],[\"uid\",\"string\",\"\"],[\"(匿名#3)\",\"i64\",\"\"]],\"module_25377::bt\":[[\"inBattle\",\"bool\",\"\"],[\"inGroup\",\"bool\",\"\"],[\"proBattle\",\"bool\",\"\"],[\"(匿名#4)\",\"i64\",\"\"]],\"module_25377::ft\":[[\"(匿名#1)\",\"i64\",\"\"]],\"module_25377::jt\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_25377::wt\":[[\"loggingEnabled\",\"bool\",\"\"]],\"module_25377::zt\":[[\"hasPremium\",\"bool\",\"\"],[\"(匿名#2)\",\"i64\",\"\"]],\"module_29554::D\":[[\"data\",\"any\",\"\"],[\"(匿名#2)\",\"i64\",\"\"]],\"module_29554::O\":[[\"(匿名#1)\",\"i32\",\"\"],[\"resources\",\"list\",\"\"]],\"module_29554::P\":[[\"modelsData\",\"list\",\"module_29554::D\"],[\"objects\",\"list\",\"\"]],\"module_31908::An\":[[\"battleMode\",\"enum\",\"module_31908::Rn\"],[\"battleModeForMatchmaking\",\"opt>\",\"module_31908::Rn\"],[\"battleOptions\",\"list>\",\"module_31908::Fn\"],[\"crossPlayMode\",\"enum\",\"module_31908::On\"],[\"formatMode\",\"opt\",\"\"],[\"limits\",\"BattleLimits\",\"module_31908::Un\"],[\"(匿名#7)\",\"i64\",\"\"],[\"maxPeopleCount\",\"i8\",\"\"],[\"name\",\"opt\",\"\"],[\"proBattle\",\"bool\",\"\"],[\"rankRange\",\"Range\",\"module_31908::Dn\"],[\"theme\",\"enum\",\"module_31908::Gn\"]],\"module_31908::Bn\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_31908::Dn\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"i32\",\"\"]],\"module_31908::Ei\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"usersInfoTeamA\",\"list\",\"module_31908::yi\"],[\"usersInfoTeamB\",\"list\",\"module_31908::yi\"]],\"module_31908::Fn\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_31908::Gn\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_31908::Hn\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_31908::Jn\":[[\"spectators\",\"list\",\"module_31908::Yn\"]],\"module_31908::Ln\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"(匿名#4)\",\"i32\",\"\"]],\"module_31908::Mn\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_31908::Nn\":[[\"reArmorEnabled\",\"bool\",\"\"]],\"module_31908::On\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_31908::Qn\":[[\"battleAction\",\"enum\",\"module_31908::Hn\"],[\"(匿名#2)\",\"f64\",\"\"],[\"(匿名#3)\",\"f64\",\"\"]],\"module_31908::Rn\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_31908::Ti\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_31908::Un\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"i32\",\"\"]],\"module_31908::Yn\":[[\"(匿名#1)\",\"i64\",\"\"],[\"inPunishersGroup\",\"bool\",\"\"],[\"inSupportGroup\",\"bool\",\"\"],[\"uid\",\"string\",\"\"]],\"module_31908::ji\":[[\"(匿名#1)\",\"i16\",\"\"],[\"(匿名#2)\",\"i16\",\"\"],[\"(匿名#3)\",\"i16\",\"\"],[\"(匿名#4)\",\"i32\",\"\"],[\"user\",\"i64\",\"\"]],\"module_31908::li\":[[\"battleName\",\"opt\",\"\"],[\"equipmentConstraintsMode\",\"opt\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"limits\",\"BattleLimits\",\"module_31908::Un\"],[\"mapName\",\"string\",\"\"],[\"matchBattle\",\"bool\",\"\"],[\"(匿名#7)\",\"i32\",\"\"],[\"modeName\",\"string\",\"\"],[\"parkourMode\",\"bool\",\"\"],[\"running\",\"bool\",\"\"],[\"spectator\",\"bool\",\"\"],[\"suspiciousByIpUserIds\",\"list\",\"\"],[\"suspiciousUserIds\",\"list\",\"\"],[\"(匿名#14)\",\"i32\",\"\"],[\"valuableRound\",\"bool\",\"\"]],\"module_31908::qi\":[[\"experiencePremiumBonusByActions\",\"list\",\"module_31908::Qn\"],[\"partnerUid\",\"opt\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"(匿名#4)\",\"i32\",\"\"],[\"(匿名#5)\",\"i32\",\"\"],[\"(匿名#6)\",\"i32\",\"\"],[\"(匿名#7)\",\"i64\",\"\"]],\"module_31908::yi\":[[\"chatModeratorLevel\",\"enum\",\"module_88693::lt\"],[\"clanTag\",\"opt\",\"\"],[\"(匿名#3)\",\"i16\",\"\"],[\"hasPremium\",\"bool\",\"\"],[\"(匿名#5)\",\"i16\",\"\"],[\"(匿名#6)\",\"i16\",\"\"],[\"partnerUid\",\"opt\",\"\"],[\"rank\",\"i8\",\"\"],[\"(匿名#9)\",\"i32\",\"\"],[\"uid\",\"string\",\"\"],[\"user\",\"i64\",\"\"]],\"module_31908::zi\":[[\"usersInfo\",\"list\",\"module_31908::yi\"]],\"module_37504::\$t\":[[\"objects\",\"opt>\",\"\"]],\"module_37504::Gt\":[[\"clanButtonVisible\",\"bool\",\"\"],[\"(匿名#2)\",\"i32\",\"\"]],\"module_37504::Ht\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"(匿名#3)\",\"i32\",\"\"]],\"module_37504::Pt\":[[\"additionalPlace\",\"opt\",\"\"],[\"changeOwner\",\"opt\",\"\"],[\"descriptionEditPrice\",\"opt\",\"\"],[\"maxPlacesInClan\",\"opt\",\"\"],[\"nameEditPrice\",\"opt\",\"\"],[\"tagEditPrice\",\"opt\",\"\"]],\"module_37504::Q\":[[\"users\",\"opt>\",\"\"]],\"module_37504::St\":[[\"(匿名#1)\",\"i64\",\"\"],[\"clanTag\",\"opt\",\"\"],[\"(匿名#3)\",\"i64\",\"\"]],\"module_37504::Ut\":[[\"blocked\",\"bool\",\"\"],[\"(匿名#2)\",\"i64\",\"\"],[\"(匿名#3)\",\"i64\",\"\"],[\"description\",\"string\",\"\"],[\"incomingRequestEnabled\",\"bool\",\"\"],[\"(匿名#6)\",\"i64\",\"\"],[\"(匿名#7)\",\"i32\",\"\"],[\"(匿名#8)\",\"i32\",\"\"],[\"name\",\"string\",\"\"],[\"tag\",\"string\",\"\"],[\"users\",\"list\",\"module_37504::rt\"]],\"module_37504::Wt\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_37504::Xt\":[[\"(匿名#1)\",\"i64\",\"\"]],\"module_37504::Yt\":[[\"hasClan\",\"bool\",\"\"],[\"loadingInServiceSpace\",\"bool\",\"\"],[\"(匿名#3)\",\"i32\",\"\"]],\"module_37504::bt\":[[\"actions\",\"list>\",\"module_37504::mt\"]],\"module_37504::gt\":[[\"users\",\"list\",\"\"]],\"module_37504::mt\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_37504::nt\":[[\"users\",\"list\",\"module_37504::ut\"]],\"module_37504::ot\":[[\"users\",\"list\",\"module_37504::ut\"]],\"module_37504::pt\":[[\"blocked\",\"bool\",\"\"],[\"(匿名#2)\",\"i64\",\"\"],[\"(匿名#3)\",\"i64\",\"\"],[\"description\",\"opt\",\"\"],[\"incomingRequestEnabled\",\"bool\",\"\"],[\"(匿名#6)\",\"i32\",\"\"],[\"(匿名#7)\",\"i32\",\"\"],[\"(匿名#8)\",\"i32\",\"\"],[\"name\",\"string\",\"\"],[\"reasonForBlocking\",\"opt\",\"\"],[\"self\",\"bool\",\"\"],[\"tag\",\"string\",\"\"],[\"(匿名#13)\",\"i64\",\"\"],[\"users\",\"list\",\"\"]],\"module_37504::rt\":[[\"permission\",\"enum\",\"module_37504::yt\"],[\"(匿名#2)\",\"i64\",\"\"]],\"module_37504::ut\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"(匿名#4)\",\"i64\",\"\"],[\"permission\",\"opt>\",\"module_37504::yt\"],[\"(匿名#6)\",\"i32\",\"\"],[\"(匿名#7)\",\"i64\",\"\"]],\"module_37504::xt\":[[\"hasClanLicense\",\"bool\",\"\"]],\"module_37504::yt\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_47243::\$a\":[[\"button\",\"opt\",\"\"],[\"buttonOver\",\"opt\",\"\"],[\"imageBlocks\",\"list\",\"module_47243::za\"],[\"(匿名#4)\",\"i32\",\"\"],[\"(匿名#5)\",\"i32\",\"\"],[\"(匿名#6)\",\"i32\",\"\"],[\"(匿名#7)\",\"i32\",\"\"],[\"textBlocks\",\"list\",\"module_47243::ma\"]],\"module_47243::\$s\":[[\"canBeDeliveredInDebt\",\"bool\",\"\"],[\"externalProductId\",\"opt\",\"\"],[\"frequency\",\"enum\",\"module_47243::zs\"],[\"(匿名#4)\",\"i64\",\"\"],[\"ignoresDeliverRequestFromClient\",\"bool\",\"\"],[\"localizedGoods\",\"list\",\"module_47243::xs\"],[\"(匿名#7)\",\"i32\",\"\"],[\"template\",\"string\",\"\"],[\"tokenName\",\"string\",\"\"]],\"module_47243::A_\":[[\"desktopBlock\",\"string\",\"\"],[\"mobileBlock\",\"string\",\"\"]],\"module_47243::Ac\":[[\"additionalPreview\",\"opt\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"name\",\"string\",\"\"],[\"preview\",\"opt\",\"\"],[\"type\",\"enum<\$x>\",\"module_47243::Rc\"]],\"module_47243::Ae\":[[\"activeContractId\",\"opt\",\"\"],[\"contracts\",\"list\",\"module_47243::Ee\"]],\"module_47243::Bh\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"text\",\"string\",\"\"],[\"(匿名#4)\",\"i32\",\"\"],[\"(匿名#5)\",\"i32\",\"\"]],\"module_47243::Bu\":[[\"appAccountToken\",\"string\",\"\"]],\"module_47243::C_\":[[\"(匿名#1)\",\"i64\",\"\"],[\"image\",\"pv\",\"\"],[\"name\",\"string\",\"\"],[\"type\",\"enum\",\"module_47243::E_\"]],\"module_47243::Cs\":[[\"receivePresentsEnabled\",\"bool\",\"\"]],\"module_47243::De\":[[\"inDebt\",\"bool\",\"\"]],\"module_47243::Dh\":[[\"category\",\"i64\",\"\"]],\"module_47243::Du\":[[\"value\",\"string\",\"\"],[\"variable\",\"string\",\"\"]],\"module_47243::E_\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_47243::Ee\":[[\"activeEndTime\",\"opt\",\"\"],[\"(匿名#2)\",\"i64\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"(匿名#4)\",\"i32\",\"\"],[\"expireActiveTimeRewards\",\"list\",\"module_47243::Ke\"],[\"expireRewardTimeRewards\",\"list\",\"module_47243::Ke\"],[\"name\",\"string\",\"\"],[\"(匿名#8)\",\"i32\",\"\"],[\"rarity\",\"enum\",\"module_85196::Gs\"],[\"rewardEndTime\",\"opt\",\"\"],[\"rewards\",\"list\",\"module_47243::Ke\"],[\"(匿名#12)\",\"i32\",\"\"],[\"startDate\",\"Pc\",\"\"]],\"module_47243::F_\":[[\"activeUntil\",\"opt\",\"\"],[\"name\",\"string\",\"\"],[\"pinned\",\"bool\",\"\"],[\"sold\",\"bool\",\"\"],[\"(匿名#5)\",\"i32\",\"\"],[\"type\",\"enum\",\"module_47243::fa\"]],\"module_47243::Fe\":[[\"imageWithEmail\",\"no\",\"\"],[\"imageWithoutEmail\",\"no\",\"\"],[\"message\",\"string\",\"\"]],\"module_47243::H_\":[[\"(匿名#1)\",\"i32\",\"\"],[\"oldPrice\",\"opt\",\"\"]],\"module_47243::Ha\":[[\"hiddenInOriginalCategory\",\"bool\",\"\"],[\"locatedInFeaturingCategory\",\"bool\",\"\"],[\"(匿名#3)\",\"i32\",\"\"]],\"module_47243::He\":[[\"goods\",\"list\",\"module_47243::Ke\"],[\"(匿名#2)\",\"i64\",\"\"]],\"module_47243::Hh\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"(匿名#4)\",\"i32\",\"\"],[\"(匿名#5)\",\"i32\",\"\"],[\"showPremiumIcon\",\"bool\",\"\"],[\"texts\",\"list\",\"module_47243::Bh\"],[\"withAdditionalItem\",\"bool\",\"\"]],\"module_47243::Ho\":[[\"action\",\"enum<\$m>\",\"module_47243::mo\"],[\"actionParams\",\"opt\",\"\"],[\"activateTime\",\"opt\",\"\"],[\"active\",\"bool\",\"\"],[\"battlePass\",\"bool\",\"\"],[\"(匿名#6)\",\"i64\",\"\"],[\"completed\",\"bool\",\"\"],[\"completedCount\",\"opt\",\"\"],[\"conditions\",\"list\",\"module_47243::_o\"],[\"depends\",\"list\",\"\"],[\"description\",\"string\",\"\"],[\"durationInMinutes\",\"opt\",\"\"],[\"eventPass\",\"bool\",\"\"],[\"extendedPeriodicalEndTime\",\"opt\",\"\"],[\"extendedPeriodicalStartTime\",\"opt\",\"\"],[\"icon\",\"opt\",\"\"],[\"(匿名#17)\",\"i64\",\"\"],[\"minRank\",\"i32\",\"\"],[\"name\",\"string\",\"\"],[\"oneTime\",\"bool\",\"\"],[\"pinned\",\"bool\",\"\"],[\"premium\",\"bool\",\"\"],[\"progress\",\"map, i32>\",\"module_47243::ao\"],[\"rewardExpireTime\",\"opt\",\"\"],[\"rewards\",\"list\",\"module_47243::Ke\"],[\"skipNewNotification\",\"bool\",\"\"],[\"(匿名#27)\",\"i32\",\"\"],[\"startTime\",\"opt\",\"\"]],\"module_47243::Ia\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_47243::Jh\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_47243::Ju\":[[\"productType\",\"opt>\",\"module_47243::Zu\"]],\"module_47243::Ka\":[[\"goods\",\"list\",\"module_47243::Ke\"]],\"module_47243::Ke\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"(匿名#3)\",\"i64\",\"\"],[\"name\",\"string\",\"\"],[\"preview\",\"opt\",\"\"]],\"module_47243::La\":[[\"emailRequired\",\"bool\",\"\"]],\"module_47243::Ma\":[[\"(匿名#1)\",\"i32\",\"\"],[\"enabled\",\"bool\",\"\"]],\"module_47243::Mc\":[[\"rewardSource\",\"enum\",\"module_47243::Pc\"],[\"rewards\",\"list\",\"module_47243::Ac\"]],\"module_47243::Na\":[[\"description\",\"opt\",\"\"],[\"image\",\"opt\",\"\"],[\"title\",\"opt\",\"\"]],\"module_47243::Nu\":[[\"customManualDescription\",\"opt\",\"\"],[\"description\",\"string\",\"\"],[\"image\",\"opt\",\"\"],[\"name\",\"string\",\"\"],[\"(匿名#5)\",\"i32\",\"\"]],\"module_47243::O_\":[[\"showAcceptRulesAlert\",\"bool\",\"\"],[\"text\",\"opt\",\"\"]],\"module_47243::Oe\":[[\"creatorTags\",\"list\",\"\"]],\"module_47243::Oh\":[[\"canBeShownWhenUserIsInDebt\",\"bool\",\"\"],[\"cardHoverBackground\",\"opt\",\"\"],[\"categoryBackground\",\"opt\",\"\"],[\"confirmPurchaseForCrystals\",\"bool\",\"\"],[\"icon\",\"opt\",\"\"],[\"(匿名#6)\",\"i32\",\"\"],[\"preview\",\"opt\",\"\"],[\"showTimerOnCard\",\"bool\",\"\"],[\"specialCategory\",\"bool\",\"\"],[\"type\",\"enum\",\"module_85667::du\"]],\"module_47243::Pc\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_47243::Pe\":[[\"creatorTag\",\"opt\",\"\"]],\"module_47243::Ps\":[[\"email\",\"opt\",\"\"],[\"emailConfirmed\",\"bool\",\"\"],[\"passwordSet\",\"bool\",\"\"]],\"module_47243::Qs\":[[\"disabledNotificationTypes\",\"list>\",\"module_85667::uu\"],[\"notificationsEnabled\",\"bool\",\"\"]],\"module_47243::R_\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_47243::Rc\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_47243::Sa\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"i32\",\"\"]],\"module_47243::Sc\":[[\"countryCode\",\"string\",\"\"],[\"countryName\",\"string\",\"\"]],\"module_47243::Su\":[[\"manualDescription\",\"string\",\"\"],[\"payModes\",\"list\",\"\"],[\"shopCategories\",\"list\",\"\"],[\"shopItems\",\"list\",\"\"]],\"module_47243::Ta\":[[\"amount\",\"string\",\"\"],[\"name\",\"string\",\"\"]],\"module_47243::Ts\":[[\"freeFirstTimeRenameAvailable\",\"bool\",\"\"],[\"(匿名#2)\",\"i32\",\"\"]],\"module_47243::Tu\":[[\"coinPaymentProviderUrl\",\"string\",\"\"],[\"enableCoinPaymentProvider\",\"bool\",\"\"]],\"module_47243::Ua\":[[\"payMode\",\"i64\",\"\"]],\"module_47243::Us\":[[\"(匿名#1)\",\"i32\",\"\"],[\"canUseGroup\",\"bool\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"(匿名#4)\",\"i32\",\"\"],[\"(匿名#5)\",\"i32\",\"\"],[\"(匿名#6)\",\"i64\",\"\"],[\"(匿名#7)\",\"i32\",\"\"],[\"(匿名#8)\",\"i32\",\"\"],[\"hasSpectatorPermissions\",\"bool\",\"\"],[\"(匿名#10)\",\"i32\",\"\"],[\"(匿名#11)\",\"i64\",\"\"],[\"partnerUid\",\"opt\",\"\"],[\"(匿名#13)\",\"i32\",\"\"],[\"rankBounds\",\"RankBounds\",\"module_88693::ct\"],[\"(匿名#15)\",\"i32\",\"\"],[\"(匿名#16)\",\"i32\",\"\"],[\"(匿名#17)\",\"i32\",\"\"],[\"(匿名#18)\",\"i32\",\"\"],[\"uid\",\"string\",\"\"],[\"userProfileUrl\",\"string\",\"\"],[\"(匿名#21)\",\"i32\",\"\"],[\"(匿名#22)\",\"i32\",\"\"]],\"module_47243::Vr\":[[\"announceDescription\",\"opt\",\"\"],[\"announceDescriptionImage\",\"opt\",\"\"],[\"announceIcon\",\"opt\",\"\"],[\"announceTitle\",\"opt\",\"\"],[\"announcementClientAction\",\"opt>\",\"module_47243::zr\"],[\"battleMode\",\"opt>\",\"module_31908::Rn\"],[\"endDate\",\"opt\",\"\"],[\"footerDescription\",\"opt\",\"\"],[\"footerIcon\",\"opt\",\"\"],[\"footerTitle\",\"opt\",\"\"],[\"(匿名#11)\",\"i64\",\"\"],[\"maxRank\",\"opt\",\"\"],[\"minRank\",\"opt\",\"\"],[\"promotion\",\"bool\",\"\"],[\"screenTemplate\",\"opt\",\"\"],[\"shopCategoryId\",\"opt\",\"\"],[\"shopItemId\",\"opt\",\"\"],[\"showTimerInFooterTitle\",\"bool\",\"\"],[\"startDate\",\"opt\",\"\"],[\"url\",\"opt\",\"\"]],\"module_47243::Wa\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_47243::Ws\":[[\"profileBlocked\",\"bool\",\"\"]],\"module_47243::Wu\":[[\"appAccountToken\",\"opt\",\"\"]],\"module_47243::Xa\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_47243::Xe\":[[\"showDroppableGoldAuthor\",\"bool\",\"\"]],\"module_47243::Xh\":[[\"brandIcon\",\"opt\",\"\"],[\"button\",\"pv\",\"\"],[\"buttonOver\",\"pv\",\"\"],[\"preview\",\"opt\",\"\"]],\"module_47243::Xo\":[[\"eventPassShopItemId\",\"opt\",\"\"],[\"notStartedQuestsId\",\"list\",\"\"],[\"questsCategoriesIds\",\"list\",\"\"],[\"questsStartTime\",\"list\",\"\"]],\"module_47243::Y_\":[[\"height\",\"opt\",\"\"],[\"horizontalAlignment\",\"enum\",\"module_47243::ia\"],[\"image\",\"pv\",\"\"],[\"(匿名#4)\",\"f32\",\"\"],[\"(匿名#5)\",\"f32\",\"\"]],\"module_47243::Ya\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_47243::Yr\":[[\"soundNotification\",\"opt\",\"\"]],\"module_47243::Ys\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_47243::Yu\":[[\"description\",\"opt\",\"\"],[\"images\",\"list\",\"\"]],\"module_47243::Zo\":[[\"conditionType\",\"enum\",\"module_47243::ao\"],[\"(匿名#2)\",\"i32\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"(匿名#4)\",\"i32\",\"\"]],\"module_47243::Zr\":[[\"availableSlot\",\"bool\",\"\"],[\"battleData\",\"BattleInfoData\",\"module_25377::Kt\"]],\"module_47243::Zu\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_47243::_o\":[[\"allContextItemsRequired\",\"bool\",\"\"],[\"battleMode\",\"opt>\",\"module_31908::Rn\"],[\"contextItemsInfo\",\"list\",\"module_47243::lo\"],[\"(匿名#4)\",\"i32\",\"\"],[\"skipForShowProgress\",\"bool\",\"\"],[\"type\",\"enum\",\"module_47243::ao\"]],\"module_47243::_s\":[[\"enabledFullPayment\",\"bool\",\"\"],[\"paymentUrl\",\"opt\",\"module_47243::fs\"]],\"module_47243::ah\":[[\"buttonKit\",\"no\",\"\"],[\"buttonKitOver\",\"no\",\"\"]],\"module_47243::ao\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_47243::au\":[[\"hasGrenades\",\"bool\",\"\"]],\"module_47243::b_\":[[\"items\",\"list\",\"module_47243::j_\"],[\"(匿名#2)\",\"i32\",\"\"]],\"module_47243::bc\":[[\"account\",\"opt\",\"\"],[\"accountLinkingEnabled\",\"bool\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"linkUrl\",\"string\",\"\"]],\"module_47243::bh\":[[\"description\",\"opt\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"name\",\"string\",\"\"]],\"module_47243::ce\":[[\"background\",\"opt\",\"\"],[\"battlePassFlavor\",\"enum\",\"module_85196::o_\"],[\"mainPrizeImage\",\"opt\",\"\"],[\"(匿名#4)\",\"i32\",\"\"],[\"(匿名#5)\",\"i32\",\"\"],[\"tiers\",\"list\",\"module_47243::ve\"],[\"(匿名#7)\",\"i64\",\"\"]],\"module_47243::ch\":[[\"(匿名#1)\",\"i32\",\"\"],[\"name\",\"string\",\"\"]],\"module_47243::cu\":[[\"resistances\",\"list>\",\"module_85667::wu\"]],\"module_47243::d_\":[[\"color\",\"string\",\"\"],[\"description\",\"string\",\"\"],[\"endDate\",\"opt\",\"\"],[\"hideIfEmpty\",\"bool\",\"\"],[\"(匿名#5)\",\"i64\",\"\"],[\"image\",\"pv\",\"\"],[\"(匿名#7)\",\"i32\",\"\"],[\"name\",\"string\",\"\"],[\"rankRange\",\"Range\",\"module_31908::Dn\"],[\"startDate\",\"opt\",\"\"],[\"type\",\"enum\",\"module_47243::y_\"]],\"module_47243::fa\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_47243::fs\":[[\"encodeParameters\",\"bool\",\"\"],[\"getRequest\",\"bool\",\"\"],[\"host\",\"string\",\"\"],[\"parameters\",\"list\",\"module_47243::Du\"]],\"module_47243::gc\":[[\"enabled\",\"bool\",\"\"]],\"module_47243::ge\":[[\"(匿名#1)\",\"i32\",\"\"],[\"hasUniqueItem\",\"bool\",\"\"],[\"name\",\"string\",\"\"],[\"preview\",\"Gf\",\"\"]],\"module_47243::go\":[[\"completed\",\"bool\",\"\"],[\"icon\",\"opt\",\"\"],[\"(匿名#3)\",\"i64\",\"\"],[\"(匿名#4)\",\"i64\",\"\"],[\"name\",\"string\",\"\"],[\"progressInfo\",\"list\",\"module_47243::Zo\"]],\"module_47243::ha\":[[\"button\",\"opt\",\"\"],[\"buttonOver\",\"opt\",\"\"],[\"imageBlocks\",\"list\",\"module_47243::Y_\"],[\"priceLabel\",\"opt\",\"module_47243::la\"],[\"priceWithDiscountLabel\",\"opt\",\"module_47243::la\"],[\"textBlocks\",\"list\",\"module_47243::na\"]],\"module_47243::hc\":[[\"currency\",\"enum\",\"module_85667::Ve\"],[\"slots\",\"list\",\"\"]],\"module_47243::ia\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_47243::ie\":[[\"battlePassFlavor\",\"enum\",\"module_85196::o_\"],[\"(匿名#2)\",\"i64\",\"\"]],\"module_47243::io\":[[\"completedAchievementIds\",\"list\",\"\"]],\"module_47243::j_\":[[\"image\",\"pv\",\"\"],[\"name\",\"string\",\"\"]],\"module_47243::jc\":[[\"activated2FA\",\"bool\",\"\"],[\"use2FA\",\"bool\",\"\"]],\"module_47243::ke\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_47243::ku\":[[\"icons\",\"list\",\"module_47243::mu\"]],\"module_47243::la\":[[\"(匿名#1)\",\"i32\",\"\"],[\"fontPercentSize\",\"opt\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"(匿名#4)\",\"f32\",\"\"]],\"module_47243::lc\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"tip\",\"string\",\"\"]],\"module_47243::lo\":[[\"available\",\"bool\",\"\"],[\"(匿名#2)\",\"i64\",\"\"],[\"name\",\"opt\",\"\"]],\"module_47243::m_\":[[\"nearEndTime\",\"opt\",\"\"],[\"(匿名#2)\",\"i64\",\"\"],[\"(匿名#3)\",\"i32\",\"\"]],\"module_47243::ma\":[[\"(匿名#1)\",\"i32\",\"\"],[\"fontPercentSize\",\"opt\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"(匿名#4)\",\"i32\",\"\"],[\"text\",\"string\",\"\"]],\"module_47243::mh\":[[\"oneTimePurchase\",\"bool\",\"\"],[\"triedToBuy\",\"bool\",\"\"]],\"module_47243::mo\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_47243::mu\":[[\"icon\",\"enum\",\"module_47243::pu\"],[\"resource\",\"pv\",\"\"]],\"module_47243::na\":[[\"(匿名#1)\",\"i32\",\"\"],[\"fontPercentSize\",\"opt\",\"\"],[\"horizontalAlignment\",\"enum\",\"module_47243::ia\"],[\"(匿名#4)\",\"f32\",\"\"],[\"(匿名#5)\",\"f32\",\"\"],[\"text\",\"string\",\"\"],[\"textUseAs\",\"opt>\",\"module_47243::ra\"],[\"upperCase\",\"bool\",\"\"]],\"module_47243::o_\":[[\"categories\",\"list\",\"module_47243::d_\"]],\"module_47243::oc\":[[\"(匿名#1)\",\"i64\",\"\"],[\"weaponsIds\",\"list\",\"\"]],\"module_47243::ou\":[[\"(匿名#1)\",\"i64\",\"\"],[\"category\",\"enum\",\"module_85667::vu\"]],\"module_47243::pa\":[[\"description\",\"string\",\"\"],[\"name\",\"string\",\"\"]],\"module_47243::pc\":[[\"missionElementKeys\",\"list>\",\"module_85667::su\"],[\"missionIds\",\"list\",\"\"],[\"unViewedElements\",\"list>\",\"module_85667::su\"]],\"module_47243::ph\":[[\"button\",\"pv\",\"\"],[\"buttonOver\",\"pv\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"lootBoxPreview\",\"pv\",\"\"],[\"(匿名#5)\",\"i32\",\"\"],[\"paintPreview\",\"opt\",\"\"]],\"module_47243::ps\":[[\"rewardItems\",\"list\",\"module_47243::\$s\"],[\"templateMap\",\"map\",\"\"]],\"module_47243::pu\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_47243::qh\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_47243::qu\":[[\"keys\",\"map, i32>\",\"module_88693::ut\"]],\"module_47243::ra\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_47243::rh\":[[\"(匿名#1)\",\"i32\",\"\"],[\"itemName\",\"string\",\"\"],[\"preview\",\"opt\",\"\"]],\"module_47243::rs\":[[\"clientId\",\"string\",\"\"],[\"components\",\"list\",\"\"],[\"jsSdkUrl\",\"string\",\"\"],[\"presentationMode\",\"string\",\"\"]],\"module_47243::se\":[[\"battlePassPackages\",\"list\",\"module_47243::ie\"],[\"challenges\",\"list\",\"module_47243::ce\"],[\"challengesVersions\",\"list\",\"\"]],\"module_47243::sh\":[[\"buttonKit\",\"pv\",\"\"],[\"buttonKitOver\",\"pv\",\"\"]],\"module_47243::tc\":[[\"description\",\"string\",\"\"],[\"(匿名#2)\",\"i64\",\"\"],[\"name\",\"string\",\"\"]],\"module_47243::te\":[[\"battlePasses\",\"list>\",\"module_85196::o_\"]],\"module_47243::th\":[[\"itemInfos\",\"list\",\"module_47243::rh\"],[\"name\",\"string\",\"\"],[\"showDetails\",\"bool\",\"\"]],\"module_47243::u_\":[[\"hideReferralCategory\",\"bool\",\"\"],[\"hideReferrerCategory\",\"bool\",\"\"],[\"hidedAnnounce\",\"opt\",\"\"],[\"promoCodeDialogBackGround\",\"opt\",\"\"],[\"promoCodeDialogImage\",\"opt\",\"\"],[\"(匿名#6)\",\"i64\",\"\"],[\"(匿名#7)\",\"i32\",\"\"],[\"(匿名#8)\",\"i64\",\"\"],[\"referrerPanelTitle\",\"string\",\"\"]],\"module_47243::uc\":[[\"(匿名#1)\",\"i64\",\"\"],[\"name\",\"string\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"(匿名#4)\",\"i32\",\"\"],[\"(匿名#5)\",\"i32\",\"\"],[\"(匿名#6)\",\"i32\",\"\"],[\"(匿名#7)\",\"i32\",\"\"],[\"specialtyImage\",\"Gf\",\"\"],[\"specialtyName\",\"string\",\"\"],[\"video\",\"opt\",\"\"]],\"module_47243::us\":[[\"appAccountToken\",\"opt\",\"\"]],\"module_47243::uu\":[[\"category\",\"enum\",\"module_85667::vu\"],[\"(匿名#2)\",\"i64\",\"\"],[\"item\",\"i64\",\"\"],[\"itemViewCategory\",\"enum\",\"module_85667::pu\"],[\"(匿名#5)\",\"i32\",\"\"],[\"mounted\",\"bool\",\"\"],[\"name\",\"string\",\"\"],[\"(匿名#8)\",\"i32\",\"\"],[\"premiumItem\",\"bool\",\"\"],[\"preview\",\"pv\",\"\"],[\"shortName\",\"string\",\"\"]],\"module_47243::ve\":[[\"battlePassItem\",\"opt\",\"module_47243::ge\"],[\"freeItem\",\"opt\",\"module_47243::ge\"],[\"(匿名#3)\",\"i32\",\"\"]],\"module_47243::wu\":[[\"rankIndexToMinGS\",\"map\",\"\"]],\"module_47243::xs\":[[\"(匿名#1)\",\"i32\",\"\"],[\"name\",\"string\",\"\"]],\"module_47243::y_\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_47243::ye\":[[\"stars\",\"map, i32>\",\"module_85196::o_\"]],\"module_47243::za\":[[\"height\",\"opt\",\"\"],[\"image\",\"pv\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"(匿名#4)\",\"i32\",\"\"]],\"module_47243::zh\":[[\"currencyId\",\"string\",\"\"],[\"currencyName\",\"string\",\"\"],[\"preview\",\"opt\",\"\"],[\"(匿名#4)\",\"f64\",\"\"],[\"(匿名#5)\",\"i32\",\"\"]],\"module_47243::zr\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_47243::zs\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_54199::\$t\":[[\"battleIdHex\",\"string\",\"\"],[\"battleMode\",\"string\",\"\"],[\"battleName\",\"string\",\"\"],[\"link\",\"opt\",\"\"]],\"module_54199::At\":[[\"addressMode\",\"enum\",\"module_54199::K\"],[\"battleLinks\",\"list\",\"module_54199::\$t\"],[\"channel\",\"opt\",\"\"],[\"(匿名#4)\",\"i64\",\"\"],[\"links\",\"opt>\",\"\"],[\"messageType\",\"enum\",\"module_54199::Rt\"],[\"sourceUser\",\"opt\",\"module_54199::Mt\"],[\"targetUser\",\"opt\",\"module_54199::Mt\"],[\"text\",\"string\",\"\"],[\"(匿名#10)\",\"i32\",\"\"]],\"module_54199::K\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_54199::Mt\":[[\"chatModeratorLevel\",\"enum\",\"module_88693::lt\"],[\"ip\",\"string\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"uid\",\"string\",\"\"],[\"(匿名#5)\",\"i64\",\"\"]],\"module_54199::Rt\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_54199::V\":[[\"name\",\"string\",\"\"],[\"sid\",\"string\",\"\"]],\"module_54199::dt\":[[\"(匿名#1)\",\"i32\",\"\"],[\"description\",\"string\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"header\",\"string\",\"\"],[\"(匿名#5)\",\"i64\",\"\"],[\"imageUrl\",\"string\",\"\"]],\"module_54199::ft\":[[\"inClan\",\"bool\",\"\"],[\"selfName\",\"string\",\"\"]],\"module_54199::ht\":[[\"tag\",\"string\",\"\"],[\"text\",\"string\",\"\"],[\"url\",\"string\",\"\"]],\"module_54199::mt\":[[\"newsItems\",\"list\",\"module_54199::dt\"]],\"module_54199::st\":[[\"admin\",\"bool\",\"\"],[\"antifloodEnabled\",\"bool\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"channels\",\"list\",\"module_54199::V\"],[\"chatEnabled\",\"bool\",\"\"],[\"chatModeratorLevel\",\"enum\",\"module_88693::lt\"],[\"hashTags\",\"list\",\"module_54199::ht\"],[\"linksWhiteList\",\"list\",\"\"],[\"(匿名#9)\",\"i32\",\"\"],[\"(匿名#10)\",\"i32\",\"\"],[\"privateMessagesEnabled\",\"bool\",\"\"],[\"selfName\",\"string\",\"\"],[\"showLinks\",\"bool\",\"\"],[\"typingSpeedAntifloodEnabled\",\"bool\",\"\"]],\"module_61860::fi\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"(匿名#3)\",\"f32\",\"\"]],\"module_67222::B\":[[\"canOpenExternalLinks\",\"bool\",\"\"],[\"failedRedirectUrl\",\"string\",\"\"],[\"hasAccountBinding\",\"bool\",\"\"],[\"hasClientPaymentAction\",\"bool\",\"\"],[\"hasOwnPaymentSystem\",\"bool\",\"\"],[\"hasSocialFunction\",\"bool\",\"\"]],\"module_85183::\$c\":[[\"clearUnViewedElements\",\"bool\",\"\"]],\"module_85183::\$e\":[[\"active\",\"bool\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"name\",\"string\",\"\"],[\"position\",\"Lt\",\"\"],[\"(匿名#5)\",\"f32\",\"\"],[\"(匿名#6)\",\"f32\",\"\"],[\"state\",\"enum\",\"module_85183::je\"],[\"tankIds\",\"list\",\"\"]],\"module_85183::\$l\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"color\",\"string\",\"\"],[\"(匿名#4)\",\"f32\",\"\"],[\"(匿名#5)\",\"f32\",\"\"],[\"(匿名#6)\",\"i32\",\"\"],[\"(匿名#7)\",\"f32\",\"\"]],\"module_85183::\$y\":[[\"activationSound\",\"Ea\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"(匿名#4)\",\"f32\",\"\"],[\"wave\",\"nh\",\"\"],[\"(匿名#6)\",\"f64\",\"\"]],\"module_85183::Aa\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"i64\",\"\"]],\"module_85183::Ab\":[[\"critical\",\"bool\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"damageIndicatorType\",\"enum\",\"module_85183::xb\"],[\"debugInfo\",\"opt\",\"\"],[\"fatal\",\"bool\",\"\"],[\"target\",\"i64\",\"\"]],\"module_85183::As\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85183::Au\":[[\"flags\",\"list\",\"module_85183::xs\"],[\"teamPoints\",\"list\",\"module_85183::Eu\"]],\"module_85183::Bo\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85183::Cl\":[[\"effects\",\"list\",\"module_85183::zl\"]],\"module_85183::Cs\":[[\"(匿名#1)\",\"i32\",\"\"],[\"falling\",\"bool\",\"\"],[\"points\",\"list\",\"module_85183::Is\"]],\"module_85183::Cy\":[[\"effectEnabled\",\"bool\",\"\"],[\"effectStartSound\",\"Ea\",\"\"],[\"ring\",\"nh\",\"\"],[\"sonarSound\",\"Ea\",\"\"]],\"module_85183::D_\":[[\"(匿名#1)\",\"i32\",\"\"],[\"position\",\"Lt\",\"\"],[\"(匿名#3)\",\"i32\",\"\"]],\"module_85183::Df\":[[\"barrelAnimatedSmokeTexture\",\"B_\",\"\"],[\"barrelFireTexture\",\"nh\",\"\"],[\"barrelFlameTexture\",\"nh\",\"\"],[\"barrelStaticSmokeTexture\",\"nh\",\"\"],[\"crumbsTexture\",\"opt\",\"\"],[\"dustTexture\",\"opt\",\"\"],[\"explosionMarkTexture\",\"nh\",\"\"],[\"(匿名#8)\",\"i16\",\"\"],[\"explosionSound\",\"Ea\",\"\"],[\"explosionTexture\",\"B_\",\"\"],[\"lightingSFXEntity\",\"LightingSFXEntity\",\"module_85183::Cl\"],[\"particleSFXEntity\",\"opt\",\"module_85183::Rl\"],[\"ricochetSound1\",\"Ea\",\"\"],[\"ricochetSound2\",\"Ea\",\"\"],[\"ricochetSound3\",\"Ea\",\"\"],[\"ricochetSound4\",\"Ea\",\"\"],[\"ricochetSound5\",\"Ea\",\"\"],[\"ricochetTexture\",\"opt\",\"\"],[\"shell\",\"Da\",\"\"],[\"shellFlightSound\",\"Ea\",\"\"],[\"shellTexture\",\"nh\",\"\"],[\"shellTracerTexture\",\"nh\",\"\"],[\"shotSound\",\"Ea\",\"\"]],\"module_85183::Dh\":[[\"name\",\"string\",\"\"],[\"(匿名#2)\",\"i32\",\"\"]],\"module_85183::Dm\":[[\"(匿名#1)\",\"f32\",\"\"],[\"charged\",\"bool\",\"\"],[\"enabled\",\"bool\",\"\"]],\"module_85183::Dp\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"(匿名#4)\",\"f32\",\"\"],[\"(匿名#5)\",\"i32\",\"\"],[\"(匿名#6)\",\"f32\",\"\"],[\"(匿名#7)\",\"f32\",\"\"]],\"module_85183::E_\":[[\"enabled\",\"bool\",\"\"]],\"module_85183::Em\":[[\"color\",\"string\",\"\"],[\"(匿名#2)\",\"f32\",\"\"]],\"module_85183::Er\":[[\"groundPosition\",\"Lt\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"upperPosition\",\"Lt\",\"\"]],\"module_85183::Eu\":[[\"flagBasePosition\",\"Lt\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"teamType\",\"enum\",\"module_31908::Bn\"]],\"module_85183::Ev\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"horizontalAssistEnabled\",\"bool\",\"\"]],\"module_85183::Fb\":[[\"resistanceInPercent\",\"i8\",\"\"],[\"resistanceProperty\",\"enum\",\"module_85196::Bs\"]],\"module_85183::Gc\":[[\"rankUpSound\",\"Ea\",\"\"]],\"module_85183::Gm\":[[\"activationSound\",\"opt\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"interruptionSound\",\"opt\",\"\"],[\"lightingSFXEntity\",\"opt\",\"module_85183::Cl\"],[\"particleEffects\",\"opt\",\"module_85183::Rl\"]],\"module_85183::Go\":[[\"sound\",\"Ea\",\"\"],[\"sprite\",\"nh\",\"\"]],\"module_85183::Gr\":[[\"(匿名#1)\",\"f32\",\"\"],[\"craterDecal\",\"opt\",\"\"],[\"currentMeteors\",\"list\",\"module_85183::Er\"],[\"(匿名#4)\",\"f32\",\"\"],[\"(匿名#5)\",\"i32\",\"\"],[\"meteorArrivingSound\",\"opt\",\"\"],[\"meteorDistantSound\",\"opt\",\"\"],[\"(匿名#8)\",\"f32\",\"\"],[\"meteorModel\",\"opt\",\"\"],[\"(匿名#10)\",\"f32\",\"\"],[\"nuclearBangFlame\",\"opt\",\"\"],[\"nuclearBangLight\",\"opt\",\"\"],[\"nuclearBangSmoke\",\"opt\",\"\"],[\"nuclearBangSound\",\"opt\",\"\"],[\"nuclearBangWave\",\"opt\",\"\"],[\"(匿名#16)\",\"f32\",\"\"],[\"(匿名#17)\",\"f32\",\"\"],[\"(匿名#18)\",\"f32\",\"\"],[\"(匿名#19)\",\"f32\",\"\"],[\"(匿名#20)\",\"f32\",\"\"],[\"tailFlame\",\"opt\",\"\"],[\"tailLight\",\"list\",\"module_85183::\$l\"],[\"tailSmoke\",\"opt\",\"\"]],\"module_85183::Ha\":[[\"daOffSound\",\"Ea\",\"\"],[\"daOnSound\",\"Ea\",\"\"],[\"ddOffSound\",\"Ea\",\"\"],[\"ddOnSound\",\"Ea\",\"\"],[\"healingSound\",\"Ea\",\"\"],[\"nitroOffSound\",\"Ea\",\"\"],[\"nitroOnSound\",\"Ea\",\"\"],[\"notReadySound\",\"Ea\",\"\"],[\"readySound\",\"Ea\",\"\"]],\"module_85183::Hb\":[[\"resistances\",\"list\",\"module_85183::Fb\"]],\"module_85183::Hc\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85183::Hh\":[[\"battleModerationMode\",\"bool\",\"\"],[\"battleUrlTemplate\",\"string\",\"\"],[\"eventOrganizerPermissions\",\"bool\",\"\"],[\"moderationMode\",\"bool\",\"\"],[\"userCarmaUrlTemplate\",\"string\",\"\"]],\"module_85183::Hk\":[[\"blueCell\",\"opt\",\"\"],[\"blueRay\",\"opt\",\"\"],[\"blueRayTip\",\"opt\",\"\"],[\"blueSimpleShield\",\"opt\",\"\"],[\"blueSphere\",\"opt\",\"\"],[\"cell\",\"opt\",\"\"],[\"coveredTanksIds\",\"list\",\"\"],[\"generatorActivationSound\",\"Ea\",\"\"],[\"generatorDeactivationSound\",\"Ea\",\"\"],[\"generatorLoopSound\",\"Ea\",\"\"],[\"generatorTeam\",\"enum\",\"module_31908::Bn\"],[\"geosphere\",\"opt\",\"\"],[\"greenCell\",\"opt\",\"\"],[\"greenRay\",\"opt\",\"\"],[\"greenRayTip\",\"opt\",\"\"],[\"greenSimpleShield\",\"opt\",\"\"],[\"greenSphere\",\"opt\",\"\"],[\"ray\",\"nh\",\"\"],[\"rayTip\",\"nh\",\"\"],[\"redCell\",\"opt\",\"\"],[\"redRay\",\"nh\",\"\"],[\"redRayTip\",\"nh\",\"\"],[\"redSimpleShield\",\"opt\",\"\"],[\"redSphere\",\"B_\",\"\"],[\"shieldOffSound\",\"Ea\",\"\"],[\"shieldOnSound\",\"Ea\",\"\"],[\"simpleShield\",\"opt\",\"\"],[\"sphere\",\"B_\",\"\"],[\"(匿名#29)\",\"f32\",\"\"]],\"module_85183::Hw\":[[\"crumbsTexture\",\"opt\",\"\"],[\"dustTexture\",\"opt\",\"\"],[\"explosionMarkTexture\",\"nh\",\"\"],[\"(匿名#4)\",\"i16\",\"\"],[\"explosionSound\",\"Ea\",\"\"],[\"explosionTexture\",\"B_\",\"\"],[\"flameTexture\",\"nh\",\"\"],[\"lightingSFXEntity\",\"LightingSFXEntity\",\"module_85183::Cl\"],[\"particleSFXEntity\",\"opt\",\"module_85183::Rl\"],[\"readySound\",\"Ea\",\"\"],[\"ricochetSound1\",\"Ea\",\"\"],[\"ricochetSound2\",\"Ea\",\"\"],[\"ricochetSound3\",\"Ea\",\"\"],[\"ricochetSound4\",\"Ea\",\"\"],[\"ricochetSound5\",\"Ea\",\"\"],[\"ricochetTexture\",\"opt\",\"\"],[\"shell\",\"Da\",\"\"],[\"shellFlightSound\",\"Ea\",\"\"],[\"shellTexture\",\"nh\",\"\"],[\"shellTracerTexture\",\"nh\",\"\"],[\"shotSound\",\"Ea\",\"\"],[\"smokeTexture\",\"B_\",\"\"],[\"streamTexture\",\"nh\",\"\"]],\"module_85183::Hy\":[[\"activateSound\",\"Ea\",\"\"],[\"negativeColorTransform\",\"opt\",\"\"],[\"positiveColorTransform\",\"opt\",\"\"],[\"sparkImage\",\"nh\",\"\"]],\"module_85183::Ia\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"i32\",\"\"]],\"module_85183::Il\":[[\"effect\",\"qs\",\"\"],[\"name\",\"string\",\"\"]],\"module_85183::Io\":[[\"position\",\"Lt\",\"\"],[\"regionType\",\"enum\",\"module_85183::Bo\"],[\"rotation\",\"Lt\",\"\"]],\"module_85183::Is\":[[\"mode\",\"enum\",\"module_85183::Rs\"],[\"position\",\"Lt\",\"\"],[\"(匿名#3)\",\"f64\",\"\"],[\"(匿名#4)\",\"f64\",\"\"],[\"(匿名#5)\",\"f64\",\"\"],[\"(匿名#6)\",\"f64\",\"\"],[\"(匿名#7)\",\"i32\",\"\"]],\"module_85183::Jc\":[[\"engineIdleSound\",\"Ea\",\"\"],[\"engineMovingSound\",\"Ea\",\"\"],[\"engineStartMovingSound\",\"Ea\",\"\"],[\"engineStartSound\",\"opt\",\"\"],[\"engineStopMovingSound\",\"opt\",\"\"]],\"module_85183::Jg\":[[\"chainStartSound\",\"Ea\",\"\"],[\"crumbsTexture\",\"opt\",\"\"],[\"dustTexture\",\"opt\",\"\"],[\"fireAcrossTexture\",\"B_\",\"\"],[\"fireAlongTexture\",\"B_\",\"\"],[\"lightingSFXEntity\",\"LightingSFXEntity\",\"module_85183::Cl\"],[\"longFailSound\",\"Ea\",\"\"],[\"particleSFXEntity\",\"opt\",\"module_85183::Rl\"],[\"ricochetSound1\",\"Ea\",\"\"],[\"ricochetSound2\",\"Ea\",\"\"],[\"ricochetSound3\",\"Ea\",\"\"],[\"ricochetSound4\",\"Ea\",\"\"],[\"ricochetSound5\",\"Ea\",\"\"],[\"ricochetTexture\",\"opt\",\"\"],[\"shellFlightSound1\",\"Ea\",\"\"],[\"shellFlightSound2\",\"Ea\",\"\"],[\"shellFlightSound3\",\"Ea\",\"\"],[\"shellFlightSound4\",\"Ea\",\"\"],[\"shellFlightSound5\",\"Ea\",\"\"],[\"shootEndSound\",\"Ea\",\"\"],[\"shootSound1\",\"Ea\",\"\"],[\"shootSound2\",\"Ea\",\"\"],[\"shootSound3\",\"Ea\",\"\"],[\"shootSound4\",\"Ea\",\"\"],[\"shootSound5\",\"Ea\",\"\"],[\"smokeTexture\",\"B_\",\"\"],[\"sparklesTexture\",\"opt\",\"\"],[\"staticHitSound1\",\"Ea\",\"\"],[\"staticHitSound2\",\"Ea\",\"\"],[\"staticHitSound3\",\"Ea\",\"\"],[\"staticHitSound4\",\"Ea\",\"\"],[\"staticHitSound5\",\"Ea\",\"\"],[\"tankHitSound1\",\"Ea\",\"\"],[\"tankHitSound2\",\"Ea\",\"\"],[\"tankHitSound3\",\"Ea\",\"\"],[\"tankHitSound4\",\"Ea\",\"\"],[\"tankHitSound5\",\"Ea\",\"\"],[\"tankSparklesTexture\",\"opt\",\"\"],[\"tracerTexture\",\"opt\",\"\"]],\"module_85183::Kb\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85183::Kd\":[[\"(匿名#1)\",\"i32\",\"\"],[\"chargingSound\",\"Ea\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"explosionTexture\",\"B_\",\"\"],[\"flameSmokeTexture\",\"nh\",\"\"],[\"flameTexture\",\"opt\",\"\"],[\"lightingSFXEntity\",\"LightingSFXEntity\",\"module_85183::Cl\"],[\"(匿名#8)\",\"f32\",\"\"],[\"(匿名#9)\",\"f32\",\"\"],[\"particleEffects\",\"opt\",\"module_85183::Rl\"],[\"preHitSound\",\"Ea\",\"\"],[\"reloadingCompleteSound\",\"Ea\",\"\"],[\"reloadingSound\",\"Ea\",\"\"],[\"(匿名#14)\",\"i32\",\"\"],[\"(匿名#15)\",\"i32\",\"\"],[\"staticHitSound\",\"Ea\",\"\"],[\"tankHitSound\",\"Ea\",\"\"]],\"module_85183::Ki\":[[\"droneId\",\"opt\",\"\"],[\"(匿名#2)\",\"i64\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"levelEnterInfoMessage\",\"opt\",\"\"],[\"levelEnterInfoMessageThreshold\",\"opt\",\"\"],[\"levelEnterMessage\",\"opt\",\"\"],[\"levelPrepareMessage\",\"opt\",\"\"],[\"(匿名#8)\",\"i64\",\"\"]],\"module_85183::Kl\":[[\"chargingPart1\",\"nh\",\"\"],[\"chargingPart2\",\"nh\",\"\"],[\"chargingPart3\",\"nh\",\"\"],[\"hitMarkTexture\",\"nh\",\"\"],[\"lightingSFXEntity\",\"LightingSFXEntity\",\"module_85183::Cl\"],[\"powTexture\",\"B_\",\"\"],[\"ringsTexture\",\"B_\",\"\"],[\"shotParticleEffect\",\"opt\",\"module_85183::Rl\"],[\"shotPreparationParticleEffect\",\"opt\",\"module_85183::Rl\"],[\"shotSound\",\"Ea\",\"\"],[\"smokeImage\",\"nh\",\"\"],[\"sphereTexture\",\"B_\",\"\"],[\"trailImage\",\"nh\",\"\"]],\"module_85183::Ku\":[[\"blueFlagAndPedestalTexture\",\"opt\",\"\"],[\"blueFlagPedestalModel\",\"opt\",\"\"],[\"bluePointBigMarker\",\"opt\",\"\"],[\"bluePointSmallMarker\",\"opt\",\"\"],[\"flagModel\",\"opt\",\"\"],[\"flagSprite\",\"opt\",\"\"],[\"greenFlagAndPedestalTexture\",\"opt\",\"\"],[\"newPedestalModel\",\"opt\",\"\"],[\"pointResources\",\"PointResources\",\"module_85183::au\"],[\"redFlagAndPedestalTexture\",\"opt\",\"\"],[\"redFlagPedestalModel\",\"opt\",\"\"],[\"redPointBigMarker\",\"opt\",\"\"],[\"redPointSmallMarker\",\"opt\",\"\"],[\"sounds\",\"AssaultSoundFX\",\"module_85183::Qu\"]],\"module_85183::Lb\":[[\"active\",\"bool\",\"\"]],\"module_85183::Li\":[[\"levels\",\"list\",\"module_85183::Ki\"],[\"newLevelEnemySound\",\"opt\",\"\"],[\"newLevelSound\",\"opt\",\"\"],[\"userProgress\",\"list\",\"module_85183::Ui\"]],\"module_85183::Lo\":[[\"regionsData\",\"list\",\"module_85183::Io\"]],\"module_85183::Ly\":[[\"stunned\",\"bool\",\"\"]],\"module_85183::Mb\":[[\"enabled\",\"bool\",\"\"]],\"module_85183::Mo\":[[\"bonusRegionResources\",\"list\",\"module_85183::Po\"],[\"bonusRegions\",\"list\",\"module_85183::Io\"]],\"module_85183::Mp\":[[\"hold\",\"bool\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"(匿名#3)\",\"i32\",\"\"]],\"module_85183::Mv\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"(匿名#4)\",\"i32\",\"\"],[\"(匿名#5)\",\"i32\",\"\"],[\"(匿名#6)\",\"f32\",\"\"],[\"(匿名#7)\",\"f32\",\"\"],[\"(匿名#8)\",\"i32\",\"\"],[\"(匿名#9)\",\"f32\",\"\"],[\"secondarySplashParams\",\"SplashCC\",\"module_85183::up\"]],\"module_85183::My\":[[\"energy\",\"nh\",\"\"],[\"hitSound\",\"Ea\",\"\"],[\"lightning\",\"nh\",\"\"],[\"(匿名#4)\",\"f32\",\"\"]],\"module_85183::N_\":[[\"(匿名#1)\",\"i32\",\"\"],[\"infinite\",\"bool\",\"\"]],\"module_85183::Nb\":[[\"(匿名#1)\",\"i64\",\"\"],[\"hullDeviceId\",\"opt\",\"\"],[\"(匿名#3)\",\"i64\",\"\"],[\"(匿名#4)\",\"i64\",\"\"],[\"weaponDeviceId\",\"opt\",\"\"],[\"(匿名#6)\",\"i64\",\"\"]],\"module_85183::Nc\":[[\"criticalDeathSound\",\"Ea\",\"\"],[\"deadColoring\",\"nh\",\"\"],[\"deathSound\",\"Ea\",\"\"],[\"lightingSFXEntity\",\"LightingSFXEntity\",\"module_85183::Cl\"],[\"(匿名#5)\",\"f32\",\"\"],[\"stunEffectTexture\",\"nh\",\"\"],[\"stunSound\",\"Ea\",\"\"],[\"ultimateHudIndicator\",\"nh\",\"\"],[\"(匿名#9)\",\"i32\",\"\"]],\"module_85183::Nd\":[[\"chargingSound\",\"Ea\",\"\"],[\"explosionSound\",\"Ea\",\"\"],[\"explosionTexture\",\"B_\",\"\"],[\"farShotSound\",\"Ea\",\"\"],[\"flameTexture\",\"nh\",\"\"],[\"flyBySound\",\"Ea\",\"\"],[\"lightingSFXEntity\",\"LightingSFXEntity\",\"module_85183::Cl\"],[\"markTexture\",\"nh\",\"\"],[\"particleEffects\",\"opt\",\"module_85183::Rl\"],[\"reloadSound\",\"Ea\",\"\"],[\"shot1Sound\",\"Ea\",\"\"],[\"shot2Sound\",\"Ea\",\"\"],[\"shot3Sound\",\"Ea\",\"\"],[\"shot4Sound\",\"Ea\",\"\"],[\"smokeTexture\",\"B_\",\"\"],[\"streamTexture\",\"nh\",\"\"],[\"trailTexture\",\"opt\",\"\"]],\"module_85183::Nm\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"battleMode\",\"enum\",\"module_31908::Rn\"],[\"blueTeam\",\"TeamLightColorParams\",\"module_85183::Em\"],[\"greenTeam\",\"TeamLightColorParams\",\"module_85183::Em\"],[\"neutralTeam\",\"TeamLightColorParams\",\"module_85183::Em\"],[\"redTeam\",\"TeamLightColorParams\",\"module_85183::Em\"]],\"module_85183::Np\":[[\"healingMode\",\"bool\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"(匿名#4)\",\"f32\",\"\"],[\"(匿名#5)\",\"f32\",\"\"]],\"module_85183::Nv\":[[\"(匿名#1)\",\"f32\",\"\"]],\"module_85183::O_\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85183::Oh\":[[\"(匿名#1)\",\"i64\",\"\"],[\"battleModeName\",\"string\",\"\"],[\"(匿名#3)\",\"i64\",\"\"],[\"creatorName\",\"opt\",\"\"],[\"(匿名#5)\",\"i32\",\"\"],[\"customBattleName\",\"opt\",\"\"],[\"mapName\",\"string\",\"\"],[\"serverName\",\"string\",\"\"],[\"(匿名#9)\",\"i32\",\"\"],[\"suspiciousBattle\",\"bool\",\"\"],[\"suspiciousByIpBattle\",\"bool\",\"\"],[\"users\",\"list\",\"module_85183::tc\"],[\"usersArchive\",\"list\",\"module_85183::zh\"]],\"module_85183::Pa\":[[\"alternativeSlotItem\",\"bool\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"(匿名#3)\",\"i32\",\"\"]],\"module_85183::Pi\":[[\"particleEffects\",\"opt\",\"module_85183::Rl\"]],\"module_85183::Po\":[[\"dropZoneResource\",\"nh\",\"\"],[\"regionType\",\"enum\",\"module_85183::Bo\"]],\"module_85183::Pv\":[[\"(匿名#1)\",\"f32\",\"\"]],\"module_85183::Qb\":[[\"(匿名#1)\",\"i16\",\"\"],[\"local\",\"bool\",\"\"],[\"logicState\",\"enum\",\"module_85183::tq\"],[\"(匿名#4)\",\"i32\",\"\"],[\"(匿名#5)\",\"i32\",\"\"],[\"tankState\",\"opt\",\"module_85183::cq\"],[\"team\",\"enum\",\"module_31908::Bn\"]],\"module_85183::Qo\":[[\"notificationMessage\",\"opt\",\"\"],[\"notificationMessageContainsUid\",\"opt\",\"\"],[\"soundNotification\",\"opt\",\"\"]],\"module_85183::Qu\":[[\"flagDropSound\",\"Ea\",\"\"],[\"flagReturnSound\",\"Ea\",\"\"],[\"flagTakeSound\",\"Ea\",\"\"],[\"winSound\",\"Ea\",\"\"]],\"module_85183::Qw\":[[\"closedSound\",\"Ea\",\"\"],[\"openedSound\",\"Ea\",\"\"],[\"primary\",\"ScorpioPrimarySfxCC\",\"module_85183::Hw\"],[\"secondary\",\"RocketLauncherSfxCC\",\"module_85183::fm\"],[\"servoSound\",\"Ea\",\"\"],[\"thirdRocketHitSound\",\"Ea\",\"\"],[\"thirdRocketShotSound\",\"Ea\",\"\"]],\"module_85183::R_\":[[\"category\",\"enum\",\"module_85183::T_\"],[\"(匿名#2)\",\"i32\",\"\"],[\"tank\",\"i64\",\"\"]],\"module_85183::Rl\":[[\"effects\",\"list\",\"module_85183::Il\"]],\"module_85183::Rp\":[[\"(匿名#1)\",\"f32\",\"\"],[\"explosionSound\",\"Ea\",\"\"],[\"flightSound\",\"Ea\",\"\"],[\"justCreated\",\"bool\",\"\"],[\"lightingSFXEntity\",\"opt\",\"module_85183::Cl\"],[\"particleEffects\",\"opt\",\"module_85183::Rl\"],[\"positions\",\"opt>\",\"\"],[\"shotSound\",\"Ea\",\"\"],[\"simplifiedExplosionTexture\",\"opt\",\"\"],[\"simplifiedProjectileResource\",\"opt\",\"\"],[\"simplifiedShockWaveTexture\",\"opt\",\"\"],[\"(匿名#12)\",\"f32\",\"\"],[\"splashParams\",\"SplashParams\",\"module_85183::sp\"],[\"(匿名#14)\",\"i32\",\"\"]],\"module_85183::Rs\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85183::Rv\":[[\"(匿名#1)\",\"i32\",\"\"],[\"buffed\",\"bool\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"(匿名#4)\",\"f32\",\"\"],[\"(匿名#5)\",\"f32\",\"\"],[\"(匿名#6)\",\"f32\",\"\"],[\"turretRotationSound\",\"Ea\",\"\"],[\"(匿名#8)\",\"f32\",\"\"]],\"module_85183::Ry\":[[\"blueTankMarker\",\"nh\",\"\"],[\"discoveredTanksIds\",\"list\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"(匿名#4)\",\"f32\",\"\"],[\"neutralTankMarker\",\"nh\",\"\"],[\"redTankMarker\",\"nh\",\"\"]],\"module_85183::S_\":[[\"effects\",\"list\",\"module_85183::x_\"]],\"module_85183::Sc\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"(匿名#4)\",\"f32\",\"\"],[\"(匿名#5)\",\"f32\",\"\"],[\"(匿名#6)\",\"f32\",\"\"],[\"(匿名#7)\",\"f32\",\"\"],[\"(匿名#8)\",\"f32\",\"\"],[\"(匿名#9)\",\"f32\",\"\"],[\"(匿名#10)\",\"f32\",\"\"]],\"module_85183::Sm\":[[\"lightModes\",\"list\",\"module_85183::Nm\"]],\"module_85183::So\":[[\"(匿名#1)\",\"f32\",\"\"],[\"bonuses\",\"list\",\"module_85183::xo\"]],\"module_85183::Sv\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"(匿名#4)\",\"f32\",\"\"],[\"(匿名#5)\",\"f32\",\"\"],[\"particle\",\"opt\",\"\"],[\"(匿名#7)\",\"f32\",\"\"]],\"module_85183::T_\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85183::Ta\":[[\"(匿名#1)\",\"i32\",\"\"],[\"hitSound1\",\"Ea\",\"\"],[\"hitSound2\",\"Ea\",\"\"],[\"hitSound3\",\"Ea\",\"\"],[\"lightning\",\"nh\",\"\"]],\"module_85183::Tv\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"]],\"module_85183::Uc\":[[\"crackTexture\",\"opt\",\"\"],[\"explosionTexture\",\"B_\",\"\"],[\"particleEffects\",\"opt\",\"module_85183::Rl\"],[\"shockWaveTexture\",\"B_\",\"\"],[\"smokeTexture\",\"B_\",\"\"]],\"module_85183::Ue\":[[\"bigLetters\",\"opt\",\"\"],[\"bigLettersTexture\",\"opt\",\"\"],[\"blueCircle\",\"opt\",\"\"],[\"blueCircleTexture\",\"opt\",\"\"],[\"blueRay\",\"opt\",\"\"],[\"blueRayTip\",\"opt\",\"\"],[\"greenCircle\",\"opt\",\"\"],[\"greenRay\",\"opt\",\"\"],[\"greenRayTip\",\"opt\",\"\"],[\"neutralCircle\",\"opt\",\"\"],[\"neutralCircleTexture\",\"opt\",\"\"],[\"pointResources\",\"PointResources\",\"module_85183::au\"],[\"redCircle\",\"opt\",\"\"],[\"redCircleTexture\",\"opt\",\"\"],[\"redRay\",\"nh\",\"\"],[\"redRayTip\",\"nh\",\"\"]],\"module_85183::Ui\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"i64\",\"\"],[\"user\",\"i64\",\"\"]],\"module_85183::Vb\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"(匿名#4)\",\"f32\",\"\"],[\"(匿名#5)\",\"f32\",\"\"],[\"(匿名#6)\",\"f32\",\"\"],[\"(匿名#7)\",\"f32\",\"\"],[\"(匿名#8)\",\"f32\",\"\"],[\"(匿名#9)\",\"f32\",\"\"],[\"(匿名#10)\",\"f32\",\"\"],[\"(匿名#11)\",\"f32\",\"\"],[\"(匿名#12)\",\"f32\",\"\"],[\"(匿名#13)\",\"f32\",\"\"]],\"module_85183::Vr\":[[\"activated\",\"bool\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"(匿名#3)\",\"i64\",\"\"],[\"position\",\"Lt\",\"\"]],\"module_85183::Vs\":[[\"(匿名#1)\",\"f32\",\"\"],[\"ballModel\",\"Da\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"ballSpawnZone\",\"nh\",\"\"],[\"bigBlueBallMarker\",\"opt\",\"\"],[\"bigGreenBallMarker\",\"opt\",\"\"],[\"bigRedBallMarker\",\"opt\",\"\"],[\"blueBallMarker\",\"opt\",\"\"],[\"blueGoalModel\",\"opt\",\"\"],[\"greenBallMarker\",\"opt\",\"\"],[\"greenGoalModel\",\"opt\",\"\"],[\"redBallMarker\",\"opt\",\"\"],[\"redGoalModel\",\"Da\",\"\"],[\"sounds\",\"RugbySoundFX\",\"module_85183::no\"]],\"module_85183::Wb\":[[\"(匿名#1)\",\"i16\",\"\"]],\"module_85183::Wm\":[[\"(匿名#1)\",\"f32\",\"\"],[\"shotSound\",\"Ea\",\"\"]],\"module_85183::Y_\":[[\"activatedGrenades\",\"list\",\"module_85183::D_\"],[\"activationTriggers\",\"list>\",\"module_85183::ha\"],[\"(匿名#3)\",\"f32\",\"\"],[\"canAimGrenade\",\"bool\",\"\"],[\"canDispel\",\"bool\",\"\"],[\"damageTriggers\",\"list>\",\"module_85183::ha\"],[\"(匿名#7)\",\"i32\",\"\"],[\"(匿名#8)\",\"f32\",\"\"],[\"(匿名#9)\",\"f32\",\"\"],[\"(匿名#10)\",\"i32\",\"\"],[\"(匿名#11)\",\"f32\",\"\"],[\"(匿名#12)\",\"i32\",\"\"],[\"(匿名#13)\",\"f32\",\"\"],[\"(匿名#14)\",\"f32\",\"\"],[\"(匿名#15)\",\"f32\",\"\"],[\"needRespawn\",\"bool\",\"\"],[\"(匿名#17)\",\"f32\",\"\"],[\"(匿名#18)\",\"i32\",\"\"],[\"(匿名#19)\",\"i32\",\"\"],[\"removeAfterActivation\",\"bool\",\"\"],[\"(匿名#21)\",\"f32\",\"\"],[\"(匿名#22)\",\"f32\",\"\"],[\"(匿名#23)\",\"f32\",\"\"],[\"(匿名#24)\",\"f32\",\"\"],[\"(匿名#25)\",\"f32\",\"\"],[\"supplyIsAvailable\",\"bool\",\"\"],[\"supplyIsUnlimited\",\"bool\",\"\"]],\"module_85183::Yo\":[[\"box\",\"Da\",\"\"],[\"dropSoundResource\",\"Ea\",\"\"],[\"pickupSoundResource\",\"Ea\",\"\"],[\"spawnSoundResource\",\"Ea\",\"\"]],\"module_85183::Zc\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85183::Zd\":[[\"orientation\",\"Lt\",\"\"],[\"position\",\"Lt\",\"\"],[\"target\",\"i64\",\"\"],[\"(匿名#4)\",\"f32\",\"\"]],\"module_85183::Zg\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"(匿名#4)\",\"f32\",\"\"],[\"(匿名#5)\",\"f32\",\"\"],[\"(匿名#6)\",\"i32\",\"\"],[\"(匿名#7)\",\"i32\",\"\"],[\"(匿名#8)\",\"i32\",\"\"],[\"(匿名#9)\",\"i32\",\"\"],[\"(匿名#10)\",\"f32\",\"\"],[\"(匿名#11)\",\"f32\",\"\"],[\"(匿名#12)\",\"i32\",\"\"]],\"module_85183::Zk\":[[\"effectEnabled\",\"bool\",\"\"],[\"effectEndSound\",\"Ea\",\"\"],[\"effectSound\",\"Ea\",\"\"],[\"effectStartSound\",\"Ea\",\"\"],[\"flame\",\"nh\",\"\"],[\"smoke\",\"nh\",\"\"]],\"module_85183::_c\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"]],\"module_85183::_e\":[[\"battleStartMessage\",\"opt\",\"\"],[\"battleStartSound\",\"opt\",\"\"]],\"module_85183::_h\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"(匿名#4)\",\"f32\",\"\"],[\"dustParticle\",\"B_\",\"\"],[\"(匿名#6)\",\"f32\",\"\"]],\"module_85183::_o\":[[\"effectDescriptions\",\"list\",\"module_85183::fo\"]],\"module_85183::a_\":[[\"explosionTexture\",\"B_\",\"\"]],\"module_85183::ab\":[[\"bombBeepSound\",\"Ea\",\"\"],[\"bombPlacedSound\",\"Ea\",\"\"],[\"countdown\",\"B_\",\"\"],[\"craterDecal\",\"nh\",\"\"],[\"farCountdown\",\"B_\",\"\"],[\"nuclearBangFlame\",\"nh\",\"\"],[\"nuclearBangLight\",\"nh\",\"\"],[\"nuclearBangSmoke\",\"nh\",\"\"],[\"nuclearBangSound\",\"Ea\",\"\"],[\"nuclearBangWave\",\"nh\",\"\"],[\"(匿名#11)\",\"i32\",\"\"]],\"module_85183::ad\":[[\"crumbsTexture\",\"nh\",\"\"],[\"dustTexture\",\"B_\",\"\"],[\"explosionMarkTexture\",\"nh\",\"\"],[\"(匿名#4)\",\"i16\",\"\"],[\"explosionSound\",\"Ea\",\"\"],[\"explosionTexture\",\"B_\",\"\"],[\"flightSound\",\"Ea\",\"\"],[\"lightingSFXEntity\",\"LightingSFXEntity\",\"module_85183::Cl\"],[\"particleEffects\",\"ParticleEffectsEntity\",\"module_85183::Rl\"],[\"reloadSound\",\"Ea\",\"\"],[\"ricochetSound1\",\"Ea\",\"\"],[\"ricochetSound2\",\"Ea\",\"\"],[\"ricochetSound3\",\"Ea\",\"\"],[\"ricochetSound4\",\"Ea\",\"\"],[\"ricochetSound5\",\"Ea\",\"\"],[\"ricochetTexture\",\"B_\",\"\"],[\"shell\",\"Da\",\"\"],[\"shellTexture\",\"nh\",\"\"],[\"shellTracerTexture\",\"nh\",\"\"],[\"shotSound1\",\"Ea\",\"\"],[\"shotSound2\",\"Ea\",\"\"],[\"shotSoundAfter1\",\"Ea\",\"\"],[\"shotSoundAfter2\",\"Ea\",\"\"],[\"shotSoundLastAfter\",\"Ea\",\"\"]],\"module_85183::ah\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"(匿名#4)\",\"f32\",\"\"],[\"(匿名#5)\",\"i32\",\"\"]],\"module_85183::ar\":[[\"active\",\"bool\",\"\"],[\"battleDebug\",\"bool\",\"\"],[\"battleOptions\",\"list>\",\"module_31908::Fn\"],[\"battlefieldSounds\",\"BattlefieldSounds\",\"module_85183::ce\"],[\"(匿名#5)\",\"f32\",\"\"],[\"customBattleName\",\"opt\",\"\"],[\"(匿名#7)\",\"i32\",\"\"],[\"formatName\",\"opt\",\"\"],[\"(匿名#9)\",\"i32\",\"\"],[\"map\",\"i64\",\"\"],[\"matchmakingMark\",\"bool\",\"\"],[\"(匿名#12)\",\"i16\",\"\"],[\"mineExplosionLighting\",\"LightingSFXEntity\",\"module_85183::Cl\"],[\"parkourMode\",\"bool\",\"\"],[\"proBattle\",\"bool\",\"\"],[\"range\",\"Range\",\"module_31908::Dn\"],[\"(匿名#17)\",\"i32\",\"\"],[\"(匿名#18)\",\"i32\",\"\"],[\"(匿名#19)\",\"f32\",\"\"],[\"showAddressLink\",\"bool\",\"\"],[\"spectator\",\"bool\",\"\"],[\"(匿名#22)\",\"i32\",\"\"]],\"module_85183::au\":[[\"bluePedestalTexture\",\"nh\",\"\"],[\"greenPedestalTexture\",\"nh\",\"\"],[\"neutralPedestalTexture\",\"nh\",\"\"],[\"pedestal\",\"Da\",\"\"],[\"ray\",\"nh\",\"\"],[\"rayTip\",\"B_\",\"\"],[\"redPedestalTexture\",\"nh\",\"\"],[\"upperDevice\",\"Da\",\"\"]],\"module_85183::ay\":[[\"damageSound\",\"Ea\",\"\"],[\"endPosition\",\"opt\",\"\"],[\"explosionSound\",\"Ea\",\"\"],[\"flightSound\",\"Ea\",\"\"],[\"healSound\",\"Ea\",\"\"],[\"(匿名#6)\",\"f32\",\"\"],[\"lightningTexture\",\"opt\",\"\"],[\"noiseTexture\",\"opt\",\"\"],[\"particleEffects\",\"opt\",\"module_85183::Rl\"],[\"position\",\"opt\",\"\"],[\"simplifiedDamageHitTexture\",\"opt\",\"\"],[\"simplifiedExplosionTexture\",\"opt\",\"\"],[\"simplifiedHealHitTexture\",\"opt\",\"\"],[\"simplifiedLightingSFXEntity\",\"opt\",\"module_85183::Cl\"],[\"simplifiedProjectileResource\",\"opt\",\"\"],[\"simplifiedShockWaveTexture\",\"opt\",\"\"],[\"(匿名#17)\",\"f32\",\"\"],[\"splashParams\",\"SplashParams\",\"module_85183::sp\"]],\"module_85183::b_\":[[\"beam\",\"nh\",\"\"],[\"star\",\"nh\",\"\"]],\"module_85183::bc\":[[\"activationText\",\"string\",\"\"],[\"body\",\"string\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"(匿名#4)\",\"i32\",\"\"],[\"(匿名#5)\",\"i32\",\"\"],[\"title\",\"string\",\"\"],[\"type\",\"enum\",\"module_85183::jc\"],[\"video\",\"opt\",\"\"]],\"module_85183::bl\":[[\"damagingBall\",\"B_\",\"\"],[\"damagingRay\",\"nh\",\"\"],[\"damagingSound\",\"Ea\",\"\"],[\"healingBall\",\"B_\",\"\"],[\"healingRay\",\"nh\",\"\"],[\"healingSound\",\"Ea\",\"\"],[\"idleSound\",\"Ea\",\"\"],[\"lightingSFXEntity\",\"LightingSFXEntity\",\"module_85183::Cl\"]],\"module_85183::bp\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85183::bw\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"(匿名#4)\",\"f32\",\"\"],[\"(匿名#5)\",\"i32\",\"\"],[\"(匿名#6)\",\"f32\",\"\"],[\"(匿名#7)\",\"f32\",\"\"],[\"(匿名#8)\",\"f32\",\"\"],[\"(匿名#9)\",\"f32\",\"\"],[\"(匿名#10)\",\"f32\",\"\"],[\"(匿名#11)\",\"i32\",\"\"],[\"(匿名#12)\",\"f32\",\"\"],[\"(匿名#13)\",\"f32\",\"\"],[\"(匿名#14)\",\"i32\",\"\"],[\"(匿名#15)\",\"i32\",\"\"],[\"(匿名#16)\",\"i32\",\"\"],[\"(匿名#17)\",\"f32\",\"\"],[\"(匿名#18)\",\"f32\",\"\"],[\"(匿名#19)\",\"f32\",\"\"],[\"(匿名#20)\",\"f32\",\"\"],[\"(匿名#21)\",\"f32\",\"\"],[\"(匿名#22)\",\"f32\",\"\"],[\"(匿名#23)\",\"f32\",\"\"],[\"(匿名#24)\",\"f32\",\"\"],[\"(匿名#25)\",\"i32\",\"\"],[\"(匿名#26)\",\"i32\",\"\"],[\"(匿名#27)\",\"f32\",\"\"],[\"(匿名#28)\",\"f32\",\"\"],[\"(匿名#29)\",\"f32\",\"\"],[\"(匿名#30)\",\"f32\",\"\"],[\"(匿名#31)\",\"i32\",\"\"],[\"(匿名#32)\",\"f32\",\"\"]],\"module_85183::c_\":[[\"allowed\",\"bool\",\"\"]],\"module_85183::cb\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"rechargeSound\",\"Ea\",\"\"]],\"module_85183::cd\":[[\"turretState\",\"TurretStateCommand\",\"module_85183::eq\"]],\"module_85183::ce\":[[\"battleFinishSound\",\"Ea\",\"\"],[\"killSound\",\"Ea\",\"\"]],\"module_85183::cg\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"(匿名#4)\",\"i32\",\"\"],[\"(匿名#5)\",\"f32\",\"\"],[\"(匿名#6)\",\"f32\",\"\"],[\"(匿名#7)\",\"i32\",\"\"],[\"(匿名#8)\",\"i32\",\"\"],[\"(匿名#9)\",\"f32\",\"\"],[\"started\",\"bool\",\"\"],[\"(匿名#11)\",\"f32\",\"\"],[\"(匿名#12)\",\"i32\",\"\"],[\"(匿名#13)\",\"f32\",\"\"]],\"module_85183::cq\":[[\"angularVelocity\",\"Lt\",\"\"],[\"linearVelocity\",\"Lt\",\"\"],[\"orientation\",\"Lt\",\"\"],[\"position\",\"Lt\",\"\"]],\"module_85183::cr\":[[\"defaultBillboardImage\",\"nh\",\"\"]],\"module_85183::cw\":[[\"antennaDownSound\",\"Ea\",\"\"],[\"antennaUpSound\",\"Ea\",\"\"],[\"electroTexture\",\"nh\",\"\"],[\"explosionElectroTexture\",\"B_\",\"\"],[\"explosionTexture\",\"B_\",\"\"],[\"fireTexture\",\"nh\",\"\"],[\"flameTexture\",\"nh\",\"\"],[\"hitMarkerTexture\",\"nh\",\"\"],[\"lightingSFXEntity\",\"LightingSFXEntity\",\"module_85183::Cl\"],[\"lightningTexture\",\"nh\",\"\"],[\"powerShotFarSound1\",\"Ea\",\"\"],[\"powerShotFarSound2\",\"Ea\",\"\"],[\"powerShotFarSound3\",\"Ea\",\"\"],[\"primaryHitSound\",\"Ea\",\"\"],[\"primaryShellFlightSound\",\"Ea\",\"\"],[\"primaryShotSound\",\"Ea\",\"\"],[\"secondaryHitSound\",\"Ea\",\"\"],[\"secondaryShotSound\",\"Ea\",\"\"],[\"shell\",\"Da\",\"\"],[\"shellTexture\",\"nh\",\"\"],[\"smokeTexture\",\"nh\",\"\"],[\"startAimingSound\",\"Ea\",\"\"],[\"targetLockSound\",\"Ea\",\"\"],[\"targetLostSound\",\"Ea\",\"\"],[\"tracerTexture\",\"nh\",\"\"],[\"trailTexture\",\"nh\",\"\"]],\"module_85183::da\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"(匿名#4)\",\"i32\",\"\"]],\"module_85183::db\":[[\"(匿名#1)\",\"i64\",\"\"],[\"(匿名#2)\",\"i64\",\"\"],[\"(匿名#3)\",\"i64\",\"\"],[\"(匿名#4)\",\"i64\",\"\"],[\"(匿名#5)\",\"i64\",\"\"],[\"(匿名#6)\",\"i64\",\"\"],[\"(匿名#7)\",\"i64\",\"\"]],\"module_85183::dh\":[[\"back\",\"nh\",\"\"],[\"bottom\",\"nh\",\"\"],[\"front\",\"nh\",\"\"],[\"left\",\"nh\",\"\"],[\"right\",\"nh\",\"\"],[\"top\",\"nh\",\"\"]],\"module_85183::dv\":[[\"barrelFireTexture\",\"nh\",\"\"],[\"barrelFlameTexture\",\"nh\",\"\"],[\"barrelSmokeTexture\",\"nh\",\"\"],[\"explosionMarkTexture\",\"nh\",\"\"],[\"(匿名#5)\",\"f32\",\"\"],[\"explosionSound\",\"Ea\",\"\"],[\"explosionTexture\",\"B_\",\"\"],[\"lightingSFXEntity\",\"LightingSFXEntity\",\"module_85183::Cl\"],[\"shell\",\"Da\",\"\"],[\"shellFlightSound\",\"Ea\",\"\"],[\"shellTexture\",\"nh\",\"\"],[\"shellTracerTexture\",\"nh\",\"\"],[\"shotSound\",\"Ea\",\"\"]],\"module_85183::ep\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"(匿名#4)\",\"i32\",\"\"],[\"(匿名#5)\",\"f32\",\"\"],[\"(匿名#6)\",\"f32\",\"\"],[\"(匿名#7)\",\"f32\",\"\"]],\"module_85183::eq\":[[\"(匿名#1)\",\"f32\",\"\"],[\"controlType\",\"enum\",\"module_85183::nq\"],[\"(匿名#3)\",\"f32\",\"\"],[\"rotationSpeedNumber\",\"i8\",\"\"]],\"module_85183::ev\":[[\"lightingSFXEntity\",\"opt\",\"module_85183::Cl\"],[\"lightning\",\"opt\",\"\"],[\"noise\",\"opt\",\"\"],[\"particleEffects\",\"opt\",\"module_85183::Rl\"],[\"simplifiedLightning\",\"opt\",\"\"],[\"teslaBallCharging\",\"Ea\",\"\"],[\"teslaChainShot1\",\"Ea\",\"\"],[\"teslaChainShot2\",\"Ea\",\"\"],[\"teslaChainShot3\",\"Ea\",\"\"],[\"teslaChainShot4\",\"Ea\",\"\"],[\"teslaIdle1\",\"Ea\",\"\"],[\"teslaIdle2\",\"Ea\",\"\"],[\"teslaIdle3\",\"Ea\",\"\"],[\"teslaIdle4\",\"Ea\",\"\"],[\"teslaSimpleShot1\",\"Ea\",\"\"],[\"teslaSimpleShot2\",\"Ea\",\"\"],[\"teslaSimpleShot3\",\"Ea\",\"\"],[\"teslaSimpleShot4\",\"Ea\",\"\"]],\"module_85183::f_\":[[\"droneReady\",\"bool\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"(匿名#3)\",\"i32\",\"\"]],\"module_85183::fd\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"(匿名#4)\",\"f32\",\"\"]],\"module_85183::fl\":[[\"buffedShardsTextureResource\",\"nh\",\"\"],[\"lightingSFXEntity\",\"LightingSFXEntity\",\"module_85183::Cl\"],[\"(匿名#3)\",\"f32\",\"\"],[\"particleTextureResource\",\"B_\",\"\"],[\"planeTextureResource\",\"B_\",\"\"],[\"shotSoundResource\",\"Ea\",\"\"]],\"module_85183::fm\":[[\"aimingCompleteSound\",\"Ea\",\"\"],[\"aimingSound\",\"Ea\",\"\"],[\"explosionMarkTexture\",\"nh\",\"\"],[\"explosionTexture\",\"B_\",\"\"],[\"leftHitSounds\",\"Ea\",\"\"],[\"leftShotSounds\",\"Ea\",\"\"],[\"lightingSFXEntity\",\"LightingSFXEntity\",\"module_85183::Cl\"],[\"particleEffects\",\"ParticleEffectsEntity\",\"module_85183::Rl\"],[\"rightHitSounds\",\"Ea\",\"\"],[\"rightShotSounds\",\"Ea\",\"\"],[\"rocketFlameTexture\",\"nh\",\"\"],[\"rocketFlightSound\",\"Ea\",\"\"],[\"rocketSmokeTexture\",\"nh\",\"\"],[\"targetLostSound\",\"Ea\",\"\"]],\"module_85183::fo\":[[\"blinkOnTimeOut\",\"bool\",\"\"],[\"(匿名#2)\",\"i64\",\"\"],[\"name\",\"string\",\"\"],[\"positive\",\"bool\",\"\"],[\"type\",\"enum\",\"module_85183::pc\"]],\"module_85183::fr\":[[\"image\",\"nh\",\"\"]],\"module_85183::fw\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"(匿名#4)\",\"i32\",\"\"],[\"(匿名#5)\",\"f32\",\"\"],[\"(匿名#6)\",\"f32\",\"\"],[\"(匿名#7)\",\"f32\",\"\"],[\"(匿名#8)\",\"f32\",\"\"],[\"(匿名#9)\",\"f32\",\"\"],[\"vampiricMode\",\"bool\",\"\"]],\"module_85183::g_\":[[\"damageModeSound\",\"opt\",\"\"],[\"effects\",\"opt\",\"module_85183::Rl\"],[\"protectionModeSound\",\"opt\",\"\"],[\"speedModeSound\",\"opt\",\"\"]],\"module_85183::gd\":[[\"control\",\"i8\",\"\"],[\"(匿名#2)\",\"f32\",\"\"]],\"module_85183::ge\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"points\",\"list\",\"module_85183::\$e\"],[\"resources\",\"DominationResources\",\"module_85183::Ue\"],[\"sounds\",\"DominationSounds\",\"module_85183::tu\"]],\"module_85183::gp\":[[\"cascade\",\"list\",\"module_85183::kp\"],[\"origin\",\"TeslaTarget\",\"module_85183::kp\"]],\"module_85183::ha\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85183::hh\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"(匿名#4)\",\"f32\",\"\"]],\"module_85183::hp\":[[\"primaryCC\",\"RailgunCC\",\"module_85183::yw\"],[\"secondaryCC\",\"RocketLauncherCC\",\"module_85183::Zg\"],[\"(匿名#3)\",\"f32\",\"\"]],\"module_85183::ip\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"(匿名#4)\",\"f32\",\"\"],[\"(匿名#5)\",\"f32\",\"\"],[\"healingMode\",\"bool\",\"\"],[\"(匿名#7)\",\"f32\",\"\"],[\"(匿名#8)\",\"f32\",\"\"],[\"(匿名#9)\",\"f32\",\"\"],[\"(匿名#10)\",\"f32\",\"\"],[\"(匿名#11)\",\"f32\",\"\"],[\"reticleImage\",\"nh\",\"\"],[\"(匿名#13)\",\"f32\",\"\"],[\"(匿名#14)\",\"f32\",\"\"],[\"(匿名#15)\",\"f32\",\"\"],[\"(匿名#16)\",\"f32\",\"\"],[\"(匿名#17)\",\"f32\",\"\"],[\"(匿名#18)\",\"f32\",\"\"],[\"(匿名#19)\",\"i32\",\"\"],[\"(匿名#20)\",\"f32\",\"\"]],\"module_85183::jb\":[[\"critMarkEnemy\",\"Ea\",\"\"],[\"critMarkPlayer\",\"Ea\",\"\"],[\"fragMarkEnemy\",\"Ea\",\"\"],[\"hitMarkEnemy\",\"Ea\",\"\"],[\"hitMarkPlayer\",\"Ea\",\"\"]],\"module_85183::jc\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85183::je\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85183::jm\":[[\"explosionMarkTextures\",\"list\",\"\"],[\"lightingSFXEntity\",\"LightingSFXEntity\",\"module_85183::Cl\"],[\"magazineReloadSound\",\"Ea\",\"\"],[\"pelletTrailTexture\",\"nh\",\"\"],[\"reloadSound\",\"Ea\",\"\"],[\"shotAcrossTexture\",\"B_\",\"\"],[\"shotAlongTexture\",\"B_\",\"\"],[\"shotSound\",\"Ea\",\"\"],[\"smokeTexture\",\"B_\",\"\"],[\"sparkleTexture\",\"nh\",\"\"]],\"module_85183::jr\":[[\"facilityObject\",\"Da\",\"\"],[\"facilityTeam\",\"enum\",\"module_31908::Bn\"],[\"facilityTexture\",\"nh\",\"\"],[\"localCenter\",\"Lt\",\"\"],[\"(匿名#5)\",\"i64\",\"\"],[\"position\",\"Lt\",\"\"],[\"rotation\",\"Lt\",\"\"],[\"useLight\",\"bool\",\"\"],[\"useShadows\",\"bool\",\"\"]],\"module_85183::ko\":[[\"blueBossHudMarker\",\"opt\",\"\"],[\"bossKilledSound\",\"Ea\",\"\"],[\"bossSpawnedSound\",\"Ea\",\"\"],[\"currentBossTeamA\",\"opt\",\"\"],[\"currentBossTeamB\",\"opt\",\"\"],[\"redBossHudMarker\",\"opt\",\"\"]],\"module_85183::kp\":[[\"(匿名#1)\",\"i64\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"position\",\"Lt\",\"\"],[\"type\",\"enum\",\"module_85183::bp\"]],\"module_85183::ks\":[[\"enemiesWinSound\",\"opt\",\"\"],[\"flagDropSound\",\"Ea\",\"\"],[\"flagDroppedByEnemiesSound\",\"opt\",\"\"],[\"flagReturnSound\",\"Ea\",\"\"],[\"flagReturnedByEnemiesSound\",\"opt\",\"\"],[\"flagTakeSound\",\"Ea\",\"\"],[\"flagTakenByEnemiesSound\",\"opt\",\"\"],[\"winSound\",\"Ea\",\"\"]],\"module_85183::ku\":[[\"bossHudMarker\",\"opt\",\"\"],[\"bossKilledSound\",\"Ea\",\"\"],[\"bossSpawnedSound\",\"Ea\",\"\"],[\"currentBoss\",\"opt\",\"\"]],\"module_85183::kw\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"(匿名#4)\",\"i32\",\"\"],[\"(匿名#5)\",\"f32\",\"\"],[\"(匿名#6)\",\"i32\",\"\"],[\"(匿名#7)\",\"f32\",\"\"],[\"(匿名#8)\",\"f32\",\"\"],[\"(匿名#9)\",\"f32\",\"\"]],\"module_85183::ky\":[[\"activationSound\",\"Ea\",\"\"],[\"beam\",\"nh\",\"\"],[\"(匿名#3)\",\"f64\",\"\"],[\"(匿名#4)\",\"f64\",\"\"],[\"star\",\"nh\",\"\"],[\"wave\",\"nh\",\"\"],[\"(匿名#7)\",\"f64\",\"\"]],\"module_85183::lb\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85183::ld\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"(匿名#4)\",\"f32\",\"\"]],\"module_85183::ls\":[[\"blueFlagAndPedestalTexture\",\"opt\",\"\"],[\"blueFlagSprite\",\"opt\",\"\"],[\"bluePedestalModel\",\"opt\",\"\"],[\"flagModel\",\"opt\",\"\"],[\"greenFlagAndPedestalTexture\",\"opt\",\"\"],[\"greenFlagSprite\",\"opt\",\"\"],[\"greenPedestalModel\",\"opt\",\"\"],[\"newPedestalModel\",\"opt\",\"\"],[\"redFlagAndPedestalTexture\",\"opt\",\"\"],[\"redFlagSprite\",\"opt\",\"\"],[\"redPedestalModel\",\"opt\",\"\"],[\"sounds\",\"CaptureTheFlagSoundFX\",\"module_85183::ks\"]],\"module_85183::lu\":[[\"commonBattleChatEnabled\",\"bool\",\"\"],[\"teamBattleChatEnabled\",\"bool\",\"\"]],\"module_85183::m_\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85183::mb\":[[\"(匿名#1)\",\"i16\",\"\"],[\"criticalHitTexture\",\"B_\",\"\"]],\"module_85183::mw\":[[\"(匿名#1)\",\"i32\",\"\"],[\"laserPointerBlueColor\",\"opt\",\"\"],[\"laserPointerGreenColor\",\"opt\",\"\"],[\"laserPointerRedColor\",\"string\",\"\"],[\"locallyVisible\",\"bool\",\"\"]],\"module_85183::n_\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"lightColor\",\"string\",\"\"]],\"module_85183::nh\":[[\"cameraPoints\",\"list\",\"module_85183::uh\"],[\"dustParams\",\"DustParams\",\"module_85183::_h\"],[\"dynamicShadowParams\",\"DynamicShadowParams\",\"module_85183::ah\"],[\"environmentSound\",\"Ea\",\"\"],[\"fogParams\",\"FogParams\",\"module_85183::hh\"],[\"(匿名#6)\",\"f32\",\"\"],[\"mapResource\",\"uo\",\"\"],[\"remaster\",\"bool\",\"\"],[\"skyBoxRevolutionAxis\",\"Lt\",\"\"],[\"(匿名#10)\",\"f32\",\"\"],[\"skyboxSides\",\"SkyboxSides\",\"module_85183::dh\"],[\"(匿名#12)\",\"f32\",\"\"],[\"(匿名#13)\",\"i32\",\"\"]],\"module_85183::nl\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"i16\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"(匿名#4)\",\"i16\",\"\"],[\"(匿名#5)\",\"f32\",\"\"],[\"(匿名#6)\",\"i16\",\"\"],[\"(匿名#7)\",\"f32\",\"\"],[\"(匿名#8)\",\"i16\",\"\"],[\"(匿名#9)\",\"f32\",\"\"]],\"module_85183::no\":[[\"ballDropNegativeSound\",\"Ea\",\"\"],[\"ballDropPositiveSound\",\"Ea\",\"\"],[\"ballFaceOffSound\",\"Ea\",\"\"],[\"ballTakeNegativeSound\",\"Ea\",\"\"],[\"ballTakePositiveSound\",\"Ea\",\"\"],[\"goalNegativeSound\",\"Ea\",\"\"],[\"goalPositiveSound\",\"Ea\",\"\"]],\"module_85183::nq\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85183::o_\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"(匿名#4)\",\"f32\",\"\"],[\"(匿名#5)\",\"f32\",\"\"],[\"(匿名#6)\",\"f32\",\"\"],[\"(匿名#7)\",\"f32\",\"\"],[\"(匿名#8)\",\"f32\",\"\"]],\"module_85183::oc\":[[\"animatedColoring\",\"opt\",\"\"],[\"coloring\",\"opt\",\"\"],[\"cordTexture\",\"nh\",\"\"],[\"droneEngineSound\",\"Ea\",\"\"],[\"droneTakeoffSound\",\"Ea\",\"\"],[\"(匿名#6)\",\"i32\",\"\"],[\"parachute\",\"list\",\"module_85196::zs\"]],\"module_85183::ol\":[[\"buffedFireSparksTexture\",\"nh\",\"\"],[\"fireTexture\",\"B_\",\"\"],[\"flameSound\",\"Ea\",\"\"],[\"lightingSFXEntity\",\"LightingSFXEntity\",\"module_85183::Cl\"],[\"muzzlePlaneTexture\",\"B_\",\"\"]],\"module_85183::op\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"(匿名#4)\",\"f32\",\"\"],[\"(匿名#5)\",\"f32\",\"\"]],\"module_85183::pa\":[[\"(匿名#1)\",\"f32\",\"\"],[\"activationSound\",\"opt\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"decalTexture\",\"opt\",\"\"],[\"lights\",\"LightingSFXEntity\",\"module_85183::Cl\"],[\"particleSFXEntity\",\"ParticleEffectsEntity\",\"module_85183::Rl\"],[\"(匿名#7)\",\"f32\",\"\"],[\"shotSound\",\"opt\",\"\"]],\"module_85183::pb\":[[\"enabled\",\"bool\",\"\"],[\"(匿名#2)\",\"i64\",\"\"],[\"local\",\"bool\",\"\"],[\"role\",\"enum\",\"module_85183::lb\"],[\"(匿名#5)\",\"i64\",\"\"]],\"module_85183::pc\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85183::pd\":[[\"control\",\"i8\",\"\"],[\"(匿名#2)\",\"f32\",\"\"]],\"module_85183::pf\":[[\"explosionSound\",\"Ea\",\"\"],[\"explosionTexture\",\"B_\",\"\"],[\"hitMarkTexture\",\"nh\",\"\"],[\"lightingSFXEntity\",\"LightingSFXEntity\",\"module_85183::Cl\"],[\"muzzleFlashTexture\",\"B_\",\"\"],[\"shotSound\",\"Ea\",\"\"],[\"targetingSound\",\"Ea\",\"\"],[\"trailTexture\",\"nh\",\"\"],[\"zoomModeSound\",\"Ea\",\"\"]],\"module_85183::pk\":[[\"superchargeEnabled\",\"bool\",\"\"]],\"module_85183::pr\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"]],\"module_85183::pu\":[[\"enabled\",\"bool\",\"\"]],\"module_85183::py\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"(匿名#4)\",\"f32\",\"\"],[\"(匿名#5)\",\"i32\",\"\"],[\"(匿名#6)\",\"f32\",\"\"],[\"(匿名#7)\",\"f32\",\"\"],[\"(匿名#8)\",\"f32\",\"\"],[\"(匿名#9)\",\"f32\",\"\"],[\"(匿名#10)\",\"f32\",\"\"],[\"(匿名#11)\",\"i32\",\"\"],[\"(匿名#12)\",\"f32\",\"\"],[\"(匿名#13)\",\"f32\",\"\"]],\"module_85183::qa\":[[\"(匿名#1)\",\"i32\",\"\"],[\"endSound\",\"Ea\",\"\"],[\"loopSound\",\"Ea\",\"\"]],\"module_85183::qo\":[[\"firstPointPosition\",\"Lt\",\"\"]],\"module_85183::qu\":[[\"items\",\"list\",\"module_85183::zu\"]],\"module_85183::rg\":[[\"direction\",\"Lt\",\"\"],[\"localHitPoint\",\"Lt\",\"\"],[\"numberHits\",\"i8\",\"\"],[\"target\",\"i64\",\"\"]],\"module_85183::rk\":[[\"active\",\"bool\",\"\"],[\"effectLoopSound\",\"Ea\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"effectSparks1Sound\",\"Ea\",\"\"],[\"effectSparks2Sound\",\"Ea\",\"\"],[\"effectSparks3Sound\",\"Ea\",\"\"],[\"effectSparks4Sound\",\"Ea\",\"\"],[\"effectStartSound\",\"Ea\",\"\"],[\"effectStopSound\",\"Ea\",\"\"],[\"heart\",\"nh\",\"\"],[\"shine\",\"nh\",\"\"],[\"sparkles\",\"nh\",\"\"]],\"module_85183::rp\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85183::s_\":[[\"frostParamsHW\",\"ColorAdjustParams\",\"module_85183::o_\"],[\"frostParamsSoft\",\"ColorAdjustParams\",\"module_85183::o_\"],[\"heatParamsHW\",\"ColorAdjustParams\",\"module_85183::o_\"],[\"heatParamsSoft\",\"ColorAdjustParams\",\"module_85183::o_\"]],\"module_85183::sa\":[[\"allyBeepSound\",\"Ea\",\"\"],[\"allyBounceSound\",\"Ea\",\"\"],[\"allyLaunchSound\",\"Ea\",\"\"],[\"(匿名#4)\",\"i32\",\"\"],[\"dispelTexture\",\"B_\",\"\"],[\"enemyBeepSound\",\"Ea\",\"\"],[\"enemyBounceSound\",\"Ea\",\"\"],[\"enemyLaunchSound\",\"Ea\",\"\"],[\"followingRotation\",\"bool\",\"\"],[\"lights\",\"LightingSFXEntity\",\"module_85183::Cl\"],[\"particleSFXEntity\",\"opt\",\"module_85183::Rl\"]],\"module_85183::sf\":[[\"bumpFlashTexture\",\"B_\",\"\"],[\"explosionSound\",\"Ea\",\"\"],[\"explosionTexture\",\"B_\",\"\"],[\"lightingSFXEntity\",\"LightingSFXEntity\",\"module_85183::Cl\"],[\"particleEffects\",\"opt\",\"module_85183::Rl\"],[\"ricochetSound\",\"Ea\",\"\"],[\"shotFlashTexture\",\"nh\",\"\"],[\"shotSound\",\"Ea\",\"\"],[\"shotTexture\",\"B_\",\"\"],[\"tailTrailTexutre\",\"nh\",\"\"]],\"module_85183::sh\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85183::so\":[[\"explosionSound\",\"Ea\",\"\"],[\"explosionTexture\",\"B_\",\"\"],[\"lightingSFXEntity\",\"LightingSFXEntity\",\"module_85183::Cl\"],[\"smokeTextureId\",\"B_\",\"\"]],\"module_85183::sp\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"(匿名#4)\",\"f32\",\"\"],[\"(匿名#5)\",\"f32\",\"\"],[\"(匿名#6)\",\"f32\",\"\"],[\"(匿名#7)\",\"f32\",\"\"]],\"module_85183::sq\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85183::tc\":[[\"collectedBonuses\",\"list\",\"module_85183::Dh\"],[\"(匿名#2)\",\"i32\",\"\"],[\"informers\",\"list\",\"\"],[\"(匿名#4)\",\"i32\",\"\"],[\"online\",\"bool\",\"\"],[\"(匿名#6)\",\"i32\",\"\"],[\"(匿名#7)\",\"i32\",\"\"],[\"suspicious\",\"bool\",\"\"],[\"suspiciousByIp\",\"bool\",\"\"],[\"uniqueMarker\",\"string\",\"\"],[\"userIP\",\"opt\",\"\"],[\"(匿名#12)\",\"i64\",\"\"],[\"userName\",\"string\",\"\"]],\"module_85183::tl\":[[\"colorTransforms\",\"list\",\"module_85183::nl\"]],\"module_85183::tq\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85183::tu\":[[\"pointActivationSound\",\"opt\",\"\"],[\"pointCaptureStartNegativeSound\",\"Ea\",\"\"],[\"pointCaptureStartPositiveSound\",\"Ea\",\"\"],[\"pointCaptureStopNegativeSound\",\"Ea\",\"\"],[\"pointCaptureStopPositiveSound\",\"Ea\",\"\"],[\"pointCapturedNegativeSound\",\"Ea\",\"\"],[\"pointCapturedPositiveSound\",\"Ea\",\"\"],[\"pointNeutralizedNegativeSound\",\"Ea\",\"\"],[\"pointNeutralizedPositiveSound\",\"Ea\",\"\"],[\"pointScoreDecreasingSound\",\"Ea\",\"\"],[\"pointScoreIncreasingSound\",\"Ea\",\"\"]],\"module_85183::ue\":[[\"activateSound\",\"Ea\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"blueMineTexture\",\"nh\",\"\"],[\"deactivateSound\",\"Ea\",\"\"],[\"enemyMineTexture\",\"nh\",\"\"],[\"explosionMarkTexture\",\"nh\",\"\"],[\"explosionSound\",\"Ea\",\"\"],[\"(匿名#8)\",\"f32\",\"\"],[\"friendlyMineTexture\",\"nh\",\"\"],[\"idleExplosionTexture\",\"B_\",\"\"],[\"(匿名#11)\",\"f32\",\"\"],[\"mainExplosionTexture\",\"B_\",\"\"],[\"(匿名#13)\",\"f32\",\"\"],[\"model3ds\",\"Da\",\"\"],[\"(匿名#15)\",\"f32\",\"\"],[\"(匿名#16)\",\"f32\",\"\"],[\"redMineTexture\",\"nh\",\"\"]],\"module_85183::uh\":[[\"eulerAngles\",\"Lt\",\"\"],[\"position\",\"Lt\",\"\"],[\"types\",\"list>\",\"module_85183::sh\"]],\"module_85183::up\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"(匿名#4)\",\"f32\",\"\"]],\"module_85183::uq\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"i32\",\"\"]],\"module_85183::vc\":[[\"effects\",\"list\",\"module_85183::wc\"]],\"module_85183::vd\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"(匿名#4)\",\"f32\",\"\"],[\"(匿名#5)\",\"f32\",\"\"],[\"(匿名#6)\",\"f32\",\"\"],[\"(匿名#7)\",\"i32\",\"\"]],\"module_85183::ve\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"killerTurretName\",\"string\",\"\"],[\"(匿名#5)\",\"f32\",\"\"],[\"(匿名#6)\",\"f32\",\"\"],[\"(匿名#7)\",\"f32\",\"\"],[\"targetHullName\",\"string\",\"\"],[\"(匿名#9)\",\"f32\",\"\"]],\"module_85183::vk\":[[\"auraLoopSound\",\"Ea\",\"\"],[\"auraOffSound\",\"Ea\",\"\"],[\"auraOnSound\",\"Ea\",\"\"],[\"blueRay\",\"nh\",\"\"],[\"blueRayTip\",\"nh\",\"\"],[\"covered\",\"list\",\"\"],[\"heart\",\"nh\",\"\"],[\"redRay\",\"nh\",\"\"],[\"redRayTip\",\"nh\",\"\"],[\"shine\",\"nh\",\"\"]],\"module_85183::vm\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"(匿名#3)\",\"i32\",\"\"]],\"module_85183::vp\":[[\"closedSound\",\"Ea\",\"\"],[\"openedSound\",\"Ea\",\"\"],[\"servoSound\",\"Ea\",\"\"]],\"module_85183::vu\":[[\"ultimateEnabled\",\"bool\",\"\"]],\"module_85183::vw\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85183::wc\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"i64\",\"\"],[\"(匿名#3)\",\"i32\",\"\"]],\"module_85183::wp\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"(匿名#4)\",\"f32\",\"\"],[\"(匿名#5)\",\"f32\",\"\"],[\"(匿名#6)\",\"f32\",\"\"],[\"(匿名#7)\",\"i32\",\"\"],[\"(匿名#8)\",\"i32\",\"\"],[\"(匿名#9)\",\"f32\",\"\"],[\"(匿名#10)\",\"i32\",\"\"],[\"(匿名#11)\",\"i32\",\"\"]],\"module_85183::wr\":[[\"shouldMoveForward\",\"bool\",\"\"]],\"module_85183::wy\":[[\"explosionSound\",\"Ea\",\"\"],[\"flightSound\",\"Ea\",\"\"],[\"model\",\"Da\",\"\"],[\"particleEffects\",\"ParticleEffectsEntity\",\"module_85183::Rl\"],[\"shellTexture\",\"nh\",\"\"]],\"module_85183::x_\":[[\"beamTextures\",\"opt\",\"module_85183::b_\"],[\"(匿名#2)\",\"i32\",\"\"],[\"lightEffect\",\"opt\",\"module_85183::Cl\"],[\"particleEffect\",\"opt\",\"\"]],\"module_85183::xa\":[[\"activationSound\",\"Ea\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"effectResource\",\"Da\",\"\"]],\"module_85183::xb\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85183::xm\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"i32\",\"\"]],\"module_85183::xo\":[[\"battleBonusObject\",\"i64\",\"\"],[\"(匿名#2)\",\"i64\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"spawnPosition\",\"Lt\",\"\"]],\"module_85183::xs\":[[\"fallingData\",\"ClientFlagFlyingData\",\"module_85183::Cs\"],[\"flagCarrierId\",\"opt\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"flagPosition\",\"opt\",\"\"],[\"state\",\"enum\",\"module_85183::As\"]],\"module_85183::xv\":[[\"explosionSound\",\"opt\",\"\"],[\"explosionTexture\",\"B_\",\"\"],[\"hitMarkTexture\",\"nh\",\"\"],[\"lightingSFXEntity\",\"LightingSFXEntity\",\"module_85183::Cl\"],[\"muzzleFlashTexture\",\"nh\",\"\"],[\"particleEffects\",\"opt\",\"module_85183::Rl\"],[\"shotSound\",\"Ea\",\"\"],[\"shotTexture\",\"B_\",\"\"]],\"module_85183::ya\":[[\"activationSound\",\"Ea\",\"\"],[\"canAttachToAlly\",\"bool\",\"\"],[\"(匿名#3)\",\"f32\",\"\"]],\"module_85183::yh\":[[\"(匿名#1)\",\"f32\",\"\"],[\"hwColorAdjust\",\"ColorAdjustParams\",\"module_85183::o_\"],[\"softColorAdjust\",\"ColorAdjustParams\",\"module_85183::o_\"]],\"module_85183::yw\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"]],\"module_85183::zb\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"(匿名#4)\",\"i32\",\"\"],[\"(匿名#5)\",\"f32\",\"\"],[\"(匿名#6)\",\"f32\",\"\"],[\"(匿名#7)\",\"f32\",\"\"],[\"(匿名#8)\",\"i32\",\"\"],[\"(匿名#9)\",\"f32\",\"\"],[\"(匿名#10)\",\"i32\",\"\"]],\"module_85183::zc\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"(匿名#4)\",\"f32\",\"\"],[\"(匿名#5)\",\"f32\",\"\"],[\"(匿名#6)\",\"f32\",\"\"],[\"(匿名#7)\",\"f32\",\"\"],[\"(匿名#8)\",\"f32\",\"\"],[\"moveCameraRelative\",\"bool\",\"\"],[\"(匿名#10)\",\"f32\",\"\"],[\"(匿名#11)\",\"f32\",\"\"],[\"(匿名#12)\",\"f32\",\"\"],[\"(匿名#13)\",\"f32\",\"\"],[\"(匿名#14)\",\"f32\",\"\"],[\"(匿名#15)\",\"f32\",\"\"],[\"(匿名#16)\",\"f32\",\"\"],[\"(匿名#17)\",\"f32\",\"\"],[\"(匿名#18)\",\"f32\",\"\"],[\"(匿名#19)\",\"f32\",\"\"]],\"module_85183::zh\":[[\"collectedBonuses\",\"list\",\"module_85183::Dh\"],[\"(匿名#2)\",\"i32\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"informers\",\"list\",\"\"],[\"(匿名#5)\",\"i32\",\"\"],[\"(匿名#6)\",\"i32\",\"\"],[\"(匿名#7)\",\"i32\",\"\"],[\"suspicious\",\"bool\",\"\"],[\"suspiciousByIp\",\"bool\",\"\"],[\"userIP\",\"opt\",\"\"],[\"(匿名#11)\",\"i64\",\"\"],[\"userName\",\"string\",\"\"]],\"module_85183::zl\":[[\"effectName\",\"string\",\"\"],[\"items\",\"list\",\"module_85183::\$l\"]],\"module_85183::zr\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85183::zu\":[[\"(匿名#1)\",\"i32\",\"\"],[\"messageToBoss\",\"opt\",\"\"],[\"messageToVictims\",\"string\",\"\"],[\"sound\",\"opt\",\"\"]],\"module_85196::\$u\":[[\"category\",\"enum\",\"module_85667::vu\"]],\"module_85196::As\":[[\"resource\",\"list\",\"module_85196::zs\"]],\"module_85196::Bs\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85196::Du\":[[\"(匿名#1)\",\"i32\",\"\"],[\"hideIfCountEqualZero\",\"bool\",\"\"]],\"module_85196::Eo\":[[\"(匿名#1)\",\"i32\",\"\"],[\"itemData\",\"UpgradeParamsData\",\"module_85196::Mo\"],[\"(匿名#3)\",\"i32\",\"\"]],\"module_85196::Eu\":[[\"category\",\"enum\",\"module_85196::Tu\"],[\"(匿名#2)\",\"i32\",\"\"],[\"garageItemCategory\",\"opt>\",\"module_85667::pu\"],[\"(匿名#4)\",\"i64\",\"\"],[\"image\",\"pv\",\"\"],[\"name\",\"string\",\"\"],[\"rewardType\",\"opt\",\"\"]],\"module_85196::Fo\":[[\"secret\",\"bool\",\"\"],[\"visible\",\"bool\",\"\"]],\"module_85196::Fs\":[[\"rarity\",\"enum\",\"module_85196::Gs\"]],\"module_85196::Fu\":[[\"image\",\"opt\",\"\"],[\"video\",\"opt\",\"\"]],\"module_85196::Gs\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85196::Ho\":[[\"(匿名#1)\",\"i32\",\"\"],[\"currency\",\"enum\",\"module_85667::Ve\"]],\"module_85196::Js\":[[\"resistances\",\"list>\",\"\"]],\"module_85196::Ko\":[[\"name\",\"string\",\"\"],[\"price\",\"AmountWithGameCurrency\",\"module_85196::Ho\"],[\"(匿名#3)\",\"i32\",\"\"]],\"module_85196::Lo\":[[\"category\",\"enum\",\"module_85667::pu\"]],\"module_85196::Ls\":[[\"properties\",\"list\",\"module_85196::Ms\"]],\"module_85196::Lu\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85196::Mo\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"(匿名#4)\",\"i32\",\"\"],[\"properties\",\"list\",\"module_85196::Ro\"],[\"(匿名#6)\",\"i32\",\"\"]],\"module_85196::Ms\":[[\"property\",\"enum<\$o>\",\"module_85667::wu\"],[\"value\",\"string\",\"\"]],\"module_85196::No\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"property\",\"enum\",\"module_85196::Bs\"]],\"module_85196::Ou\":[[\"category\",\"opt>\",\"module_85196::Tu\"],[\"(匿名#2)\",\"i32\",\"\"],[\"description\",\"opt\",\"\"],[\"name\",\"string\",\"\"],[\"preview\",\"pv\",\"\"],[\"(匿名#6)\",\"f32\",\"\"],[\"rewardType\",\"opt\",\"\"]],\"module_85196::Ps\":[[\"premiumItem\",\"bool\",\"\"]],\"module_85196::Qs\":[[\"imageBackground\",\"opt\",\"\"]],\"module_85196::Qu\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85196::Ro\":[[\"(匿名#1)\",\"i32\",\"\"],[\"properties\",\"list\",\"module_85196::No\"],[\"property\",\"enum<\$o>\",\"module_85667::wu\"],[\"visibleInInfo\",\"bool\",\"\"]],\"module_85196::So\":[[\"infinityLifetimeItem\",\"bool\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"(匿名#3)\",\"i32\",\"\"]],\"module_85196::Ss\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85196::Ts\":[[\"(匿名#1)\",\"i64\",\"\"],[\"modificationCount\",\"i8\",\"\"],[\"modificationIndex\",\"i8\",\"\"]],\"module_85196::Tu\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85196::Vs\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85196::Vu\":[[\"devicesAvailable\",\"bool\",\"\"],[\"preview\",\"opt\",\"\"],[\"sale\",\"bool\",\"\"]],\"module_85196::Ws\":[[\"properties\",\"list\",\"module_85196::Ys\"]],\"module_85196::Xo\":[[\"prices\",\"list\",\"module_85196::Ko\"],[\"(匿名#2)\",\"i32\",\"\"]],\"module_85196::Ys\":[[\"property\",\"enum\",\"module_85196::Vs\"],[\"(匿名#2)\",\"i32\",\"\"]],\"module_85196::Yu\":[[\"properties\",\"list\",\"module_85196::Zu\"]],\"module_85196::Zo\":[[\"itemsId\",\"list\",\"\"]],\"module_85196::Zu\":[[\"operation\",\"enum\",\"module_85196::Qu\"],[\"property\",\"enum\",\"module_85196::Bs\"],[\"(匿名#3)\",\"f32\",\"\"]],\"module_85196::__\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85196::_s\":[[\"(匿名#1)\",\"i32\",\"\"],[\"grouped\",\"bool\",\"\"]],\"module_85196::bs\":[[\"items\",\"list\",\"\"]],\"module_85196::bu\":[[\"buyable\",\"bool\",\"\"],[\"currencyId\",\"enum\",\"module_85667::Ve\"],[\"(匿名#3)\",\"i32\",\"\"]],\"module_85196::cu\":[[\"availableForAll\",\"bool\",\"\"]],\"module_85196::d_\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85196::e_\":[[\"banned\",\"bool\",\"\"],[\"date\",\"Pc\",\"\"],[\"(匿名#3)\",\"i64\",\"\"],[\"present\",\"i64\",\"\"],[\"presenter\",\"i64\",\"\"],[\"text\",\"string\",\"\"]],\"module_85196::es\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85196::fu\":[[\"passToShopEnabled\",\"bool\",\"\"]],\"module_85196::gs\":[[\"availableForNonPartnerUsers\",\"bool\",\"\"],[\"partnerId\",\"string\",\"\"]],\"module_85196::gu\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"(匿名#4)\",\"f32\",\"\"],[\"garageBox\",\"Da\",\"\"],[\"skyboxFrontSide\",\"nh\",\"\"]],\"module_85196::h_\":[[\"engineType\",\"enum\",\"module_85196::__\"]],\"module_85196::hs\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"preview\",\"pv\",\"\"]],\"module_85196::io\":[[\"muzzlePosition\",\"Lt\",\"\"],[\"origin\",\"Lt\",\"\"]],\"module_85196::j_\":[[\"skins\",\"list\",\"\"]],\"module_85196::js\":[[\"(匿名#1)\",\"i32\",\"\"],[\"item\",\"i64\",\"\"],[\"mount\",\"bool\",\"\"]],\"module_85196::k_\":[[\"skins\",\"list\",\"\"]],\"module_85196::m_\":[[\"weaponType\",\"enum\",\"module_85196::d_\"]],\"module_85196::mo\":[[\"detailedCollisionGeometry\",\"opt\",\"\"],[\"visualLods\",\"list\",\"\"]],\"module_85196::mu\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85196::ns\":[[\"(匿名#1)\",\"f64\",\"\"]],\"module_85196::o_\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85196::p_\":[[\"resistanceModule\",\"opt\",\"\"]],\"module_85196::q_\":[[\"item\",\"i64\",\"\"]],\"module_85196::rs\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"(匿名#4)\",\"i32\",\"\"],[\"threshold\",\"enum\",\"module_85196::es\"]],\"module_85196::s_\":[[\"presents\",\"list\",\"module_85196::e_\"]],\"module_85196::so\":[[\"halfSize\",\"Lt\",\"\"],[\"localTransform\",\"list\",\"\"],[\"tag\",\"opt\",\"\"]],\"module_85196::ss\":[[\"supplyId\",\"opt\",\"\"]],\"module_85196::ts\":[[\"(匿名#1)\",\"f32\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"(匿名#3)\",\"i32\",\"\"]],\"module_85196::v_\":[[\"description\",\"opt\",\"\"],[\"icon\",\"opt\",\"\"],[\"name\",\"string\",\"\"]],\"module_85196::vu\":[[\"(匿名#1)\",\"f32\",\"\"]],\"module_85196::wo\":[[\"bodySize\",\"Lt\",\"\"],[\"(匿名#2)\",\"f32\",\"\"],[\"mainCollisionBox\",\"CollisionBox\",\"module_85196::so\"],[\"(匿名#4)\",\"f32\",\"\"],[\"skinOffset\",\"Lt\",\"\"],[\"staticCollisionBoxes\",\"list\",\"module_85196::so\"],[\"trackAnchors\",\"list\",\"\"],[\"trailAnchors\",\"list\",\"\"],[\"turretMountPoint\",\"Lt\",\"\"],[\"ultimatePoint\",\"Lt\",\"\"]],\"module_85196::ws\":[[\"emissionColor\",\"opt\",\"module_85196::rs\"],[\"(匿名#2)\",\"i64\",\"\"],[\"(匿名#3)\",\"f32\",\"\"],[\"resource\",\"opt\",\"\"],[\"(匿名#5)\",\"f32\",\"\"],[\"skinOffset\",\"opt\",\"\"],[\"turretMountPoint\",\"opt\",\"\"]],\"module_85196::wu\":[[\"(匿名#1)\",\"i64\",\"\"]],\"module_85196::xo\":[[\"barrels\",\"list\",\"module_85196::io\"],[\"boundsMax\",\"Lt\",\"\"],[\"boundsMin\",\"Lt\",\"\"],[\"collisionBoxes\",\"list\",\"module_85196::so\"],[\"flagMountPoint\",\"Lt\",\"\"],[\"laserPoint\",\"Lt\",\"\"]],\"module_85196::ys\":[[\"kitItems\",\"list\",\"module_85196::js\"]],\"module_85196::z_\":[[\"preview\",\"opt\",\"\"]],\"module_85196::zs\":[[\"lodType\",\"enum\",\"module_85196::Ss\"],[\"(匿名#2)\",\"i64\",\"\"]],\"module_85667::He\":[[\"clientKey\",\"string\",\"\"],[\"stateWithCaptcha\",\"list>\",\"module_85667::We\"],[\"useFake\",\"bool\",\"\"]],\"module_85667::Ve\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85667::We\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85667::Ye\":[[\"serverHaltTS\",\"i64\",\"\"]],\"module_85667::Ze\":[[\"animatedColoring\",\"opt\",\"\"],[\"coloring\",\"opt\",\"\"]],\"module_85667::du\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85667::lu\":[[\"body\",\"string\",\"\"],[\"extra\",\"bool\",\"\"],[\"image\",\"opt\",\"\"],[\"title\",\"string\",\"\"],[\"video\",\"opt\",\"\"]],\"module_85667::nu\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85667::pu\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85667::ru\":[[\"browserExtensionsToDetect\",\"list\",\"\"]],\"module_85667::su\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85667::uu\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85667::vu\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_85667::wu\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_88693::_t\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"enabled\",\"bool\",\"\"],[\"helpdeskTicketsEnabled\",\"bool\",\"\"]],\"module_88693::ct\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"i32\",\"\"]],\"module_88693::et\":[[\"keyType\",\"enum\",\"module_88693::ut\"]],\"module_88693::ht\":[[\"receiveBattleInvite\",\"bool\",\"\"]],\"module_88693::it\":[[\"users\",\"list\",\"\"]],\"module_88693::lt\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_88693::tt\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"local\",\"bool\",\"\"],[\"(匿名#4)\",\"i32\",\"\"]],\"module_88693::ut\":[[\"(匿名#1)\",\"i32\",\"\"]],\"module_89803::At\":[[\"description\",\"string\",\"\"],[\"formatId\",\"string\",\"\"],[\"name\",\"string\",\"\"],[\"optionsDefaults\",\"list>\",\"module_31908::Fn\"],[\"optionsToShow\",\"list>\",\"module_31908::Fn\"]],\"module_89803::Gt\":[[\"defaultTheme\",\"enum\",\"module_31908::Gn\"],[\"enabled\",\"bool\",\"\"],[\"(匿名#3)\",\"i64\",\"\"],[\"mapName\",\"string\",\"\"],[\"matchmakingMark\",\"bool\",\"\"],[\"(匿名#6)\",\"i16\",\"\"],[\"preview\",\"pv\",\"\"],[\"rankLimit\",\"Range\",\"module_31908::Dn\"],[\"supportedModes\",\"list>\",\"module_31908::Rn\"],[\"theme\",\"enum\",\"module_31908::Gn\"]],\"module_89803::Pt\":[[\"formats\",\"list\",\"module_89803::At\"]],\"module_89803::Qt\":[[\"(匿名#1)\",\"i32\",\"\"],[\"armorName\",\"string\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"(匿名#4)\",\"i64\",\"\"],[\"leader\",\"bool\",\"\"],[\"local\",\"bool\",\"\"],[\"(匿名#7)\",\"i32\",\"\"],[\"uid\",\"string\",\"\"],[\"userIsReady\",\"bool\",\"\"],[\"(匿名#10)\",\"i32\",\"\"],[\"weaponName\",\"string\",\"\"],[\"(匿名#12)\",\"i32\",\"\"]],\"module_89803::Wt\":[[\"users\",\"list\",\"module_89803::Qt\"]],\"module_89803::_t\":[[\"(匿名#1)\",\"i32\",\"\"],[\"roundStarted\",\"bool\",\"\"],[\"suspicionLevel\",\"enum\",\"module_31908::Ti\"],[\"(匿名#4)\",\"i32\",\"\"]],\"module_89803::gn\":[[\"borderColorForEventButton\",\"opt\",\"\"],[\"disabledModes\",\"list>\",\"module_31908::Mn\"],[\"eventBigTile\",\"opt\",\"\"],[\"eventEndDate\",\"opt\",\"\"],[\"groupsInEventMode\",\"bool\",\"\"],[\"holidayDescription\",\"opt\",\"\"],[\"holidayEnabled\",\"bool\",\"\"],[\"holidayIcon\",\"opt\",\"\"],[\"holidayTitle\",\"opt\",\"\"],[\"matchmakingModeRanks\",\"list\",\"module_89803::un\"],[\"(匿名#11)\",\"i32\",\"\"],[\"(匿名#12)\",\"i32\",\"\"]],\"module_89803::gt\":[[\"creatorId\",\"i64\",\"\"],[\"map\",\"i64\",\"\"],[\"parameters\",\"BattleCreateParameters\",\"module_31908::An\"]],\"module_89803::ht\":[[\"users\",\"list\",\"module_89803::vt\"]],\"module_89803::kt\":[[\"(匿名#1)\",\"i32\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"usersTeamA\",\"list\",\"module_89803::vt\"],[\"usersTeamB\",\"list\",\"module_89803::vt\"]],\"module_89803::rn\":[[\"(匿名#1)\",\"i64\",\"\"],[\"itemCategory\",\"enum\",\"module_85667::vu\"],[\"(匿名#3)\",\"i32\",\"\"],[\"name\",\"string\",\"\"],[\"(匿名#5)\",\"i32\",\"\"]],\"module_89803::un\":[[\"matchmakingMode\",\"enum\",\"module_31908::Mn\"],[\"(匿名#2)\",\"i32\",\"\"]],\"module_89803::vt\":[[\"(匿名#1)\",\"i64\",\"\"],[\"(匿名#2)\",\"i32\",\"\"],[\"suspicious\",\"bool\",\"\"],[\"suspiciousByIp\",\"bool\",\"\"],[\"user\",\"i64\",\"\"]],\"module_89803::zt\":[[\"battleCreationDisabled\",\"bool\",\"\"],[\"battlesLimits\",\"list\",\"module_31908::Un\"],[\"defaultMaps\",\"list\",\"\"],[\"defaultRange\",\"Range\",\"module_31908::Dn\"],[\"maxRange\",\"Range\",\"module_31908::Dn\"],[\"(匿名#6)\",\"i32\",\"\"],[\"(匿名#7)\",\"i32\",\"\"]],\"module_99527::D\":[[\"isEnabled\",\"bool\",\"\"],[\"isTimeless\",\"bool\",\"\"],[\"(匿名#3)\",\"i32\",\"\"],[\"(匿名#4)\",\"i32\",\"\"]],\"module_99527::N\":[[\"description\",\"opt\",\"\"],[\"name\",\"opt\",\"\"]],\"module_99527::W\":[[\"(匿名#1)\",\"i32\",\"\"]]},\"UplinkByMethod\":{\"1079642233486876258\":{\"Name\":\"M_.fcn\",\"Module\":\"module_85196\",\"OwnerClass\":\"M_\",\"SendFn\":\"fcn\",\"Fields\":[{\"Order\":1,\"Slot\":\"ycm_1\",\"Name\":\"\",\"Type\":\"i64\",\"TypeCodec\":\"\"}]},\"1816792453857564692\":{\"Name\":\"G.q1wd\",\"Module\":\"module_29554\",\"OwnerClass\":\"G\",\"SendFn\":\"q1wd\",\"Fields\":[{\"Order\":1,\"Slot\":\"o1wd_1\",\"Name\":\"\",\"Type\":\"i32\",\"TypeCodec\":\"\"}]},\"2528403217084400809\":{\"Name\":\"ls.xbl\",\"Module\":\"module_85667\",\"OwnerClass\":\"ls\",\"SendFn\":\"xbl\",\"Fields\":[]},\"4428603232159847900\":{\"Name\":\"Qh.ycw\",\"Module\":\"module_85196\",\"OwnerClass\":\"Qh\",\"SendFn\":\"ycw\",\"Fields\":[]},\"4795202316771985007\":{\"Name\":\"M_.hcn\",\"Module\":\"module_85196\",\"OwnerClass\":\"M_\",\"SendFn\":\"hcn\",\"Fields\":[{\"Order\":1,\"Slot\":\"ccn_1\",\"Name\":\"\",\"Type\":\"i64\",\"TypeCodec\":\"\"}]},\"7806260029063678398\":{\"Name\":\"ba.lcr\",\"Module\":\"module_85196\",\"OwnerClass\":\"ba\",\"SendFn\":\"lcr\",\"Fields\":[]},\"8060894096836849355\":{\"Name\":\"ha.gcq\",\"Module\":\"module_85196\",\"OwnerClass\":\"ha\",\"SendFn\":\"gcq\",\"Fields\":[{\"Order\":1,\"Slot\":\"bcq_1\",\"Name\":\"\",\"Type\":\"i64\",\"TypeCodec\":\"\"},{\"Order\":2,\"Slot\":\"ccq_1\",\"Name\":\"\",\"Type\":\"i32\",\"TypeCodec\":\"\"},{\"Order\":3,\"Slot\":\"dcq_1\",\"Name\":\"\",\"Type\":\"i32\",\"TypeCodec\":\"\"},{\"Order\":4,\"Slot\":\"ecq_1\",\"Name\":\"\",\"Type\":\"enum\",\"TypeCodec\":\"module_85667::Ve\"}]}},\"DownlinkByMethod\":{\"237130683810296524\":{\"Name\":\"Fn\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_10283\",\"OwnerClass\":\"Fn\",\"Fields\":[{\"Order\":1,\"Slot\":\"jh4_1\",\"Name\":\"hash\",\"Type\":\"string\",\"TypeCodec\":\"\"}]},\"761463638726320835\":{\"Name\":\"ki\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_10283\",\"OwnerClass\":\"ki\",\"Fields\":[]},\"1246109053620123806\":{\"Name\":\"oi\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_25377\",\"OwnerClass\":\"oi\",\"Fields\":[{\"Order\":1,\"Slot\":\"ddn_1\",\"Name\":\"users\",\"Type\":\"list\",\"TypeCodec\":\"module_25377::Tt\"}]},\"1247179769701109529\":{\"Name\":\"ki\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_10283\",\"OwnerClass\":\"ki\",\"Fields\":[{\"Order\":1,\"Slot\":\"chc_1\",\"Name\":\"advisedUids\",\"Type\":\"list\",\"TypeCodec\":\"\"}]},\"1247179769701225356\":{\"Name\":\"ki\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_10283\",\"OwnerClass\":\"ki\",\"Fields\":[]},\"1936068342294351641\":{\"Name\":\"N_\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_85196\",\"OwnerClass\":\"N_\",\"Fields\":[]},\"2025886178375810581\":{\"Name\":\"gn\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_10283\",\"OwnerClass\":\"gn\",\"Fields\":[{\"Order\":1,\"Slot\":\"\",\"Name\":\"\",\"Type\":\"i64\",\"TypeCodec\":\"\"}]},\"2968780118652565413\":{\"Name\":\"Dm\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_47243\",\"OwnerClass\":\"Dm\",\"Fields\":[{\"Order\":1,\"Slot\":\"nft_1\",\"Name\":\"questIds\",\"Type\":\"list\",\"TypeCodec\":\"\"},{\"Order\":2,\"Slot\":\"oft_1\",\"Name\":\"questCategoriesIds\",\"Type\":\"list\",\"TypeCodec\":\"\"},{\"Order\":3,\"Slot\":\"pft_1\",\"Name\":\"completedQuestIds\",\"Type\":\"list\",\"TypeCodec\":\"\"},{\"Order\":4,\"Slot\":\"qft_1\",\"Name\":\"completedQuestCategoriesIds\",\"Type\":\"list\",\"TypeCodec\":\"\"}]},\"3182939728106937130\":{\"Name\":\"hr\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_89803\",\"OwnerClass\":\"hr\",\"Fields\":[]},\"3216143066888387731\":{\"Name\":\"ModelService.LoadDependencies\",\"Kind\":\"container\",\"Layout\":\"zt\",\"Module\":\"\",\"OwnerClass\":\"\",\"Fields\":[]},\"3692495084100053385\":{\"Name\":\"N_\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_85196\",\"OwnerClass\":\"N_\",\"Fields\":[{\"Order\":1,\"Slot\":\"ocl_1\",\"Name\":\"mountedItems\",\"Type\":\"list\",\"TypeCodec\":\"\"}]},\"3996477900528000389\":{\"Name\":\"N_\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_85196\",\"OwnerClass\":\"N_\",\"Fields\":[{\"Order\":1,\"Slot\":\"kcl_1\",\"Name\":\"itemsOnDepot\",\"Type\":\"list\",\"TypeCodec\":\"\"}]},\"4567332396287339500\":{\"Name\":\"Yn\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_25377\",\"OwnerClass\":\"Yn\",\"Fields\":[{\"Order\":1,\"Slot\":\"xdl_1\",\"Name\":\"users\",\"Type\":\"list\",\"TypeCodec\":\"module_25377::zt\"}]},\"5213829805760580947\":{\"Name\":\"N_\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_85196\",\"OwnerClass\":\"N_\",\"Fields\":[]},\"5236393599344825589\":{\"Name\":\"N_\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_85196\",\"OwnerClass\":\"N_\",\"Fields\":[{\"Order\":1,\"Slot\":\"mcl_1\",\"Name\":\"itemsOnMarket\",\"Type\":\"list\",\"TypeCodec\":\"\"}]},\"5543735653822042458\":{\"Name\":\"ni\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_25377\",\"OwnerClass\":\"ni\",\"Fields\":[{\"Order\":1,\"Slot\":\"pdm_1\",\"Name\":\"users\",\"Type\":\"list\",\"TypeCodec\":\"module_25377::St\"}]},\"5600601240138203674\":{\"Name\":\"_a\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_85196\",\"OwnerClass\":\"_a\",\"Fields\":[{\"Order\":1,\"Slot\":\"vcp_1\",\"Name\":\"item\",\"Type\":\"i64\",\"TypeCodec\":\"\"},{\"Order\":2,\"Slot\":\"\",\"Name\":\"\",\"Type\":\"i32\",\"TypeCodec\":\"\"}]},\"5732737005800306202\":{\"Name\":\"il\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_47243\",\"OwnerClass\":\"il\",\"Fields\":[{\"Order\":1,\"Slot\":\"pel_1\",\"Name\":\"announcementItems\",\"Type\":\"list\",\"TypeCodec\":\"module_47243::Vr\"}]},\"6180114602676583672\":{\"Name\":\"ki\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_10283\",\"OwnerClass\":\"ki\",\"Fields\":[]},\"6279910878005396624\":{\"Name\":\"ty\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_47243\",\"OwnerClass\":\"ty\",\"Fields\":[{\"Order\":1,\"Slot\":\"rfv_1\",\"Name\":\"statistic\",\"Type\":\"list\",\"TypeCodec\":\"module_47243::m_\"}]},\"7615142300796401818\":{\"Name\":\"ka\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_85196\",\"OwnerClass\":\"ka\",\"Fields\":[{\"Order\":1,\"Slot\":\"dcr_1\",\"Name\":\"devices\",\"Type\":\"list\",\"TypeCodec\":\"\"},{\"Order\":2,\"Slot\":\"ecr_1\",\"Name\":\"mountedDevice\",\"Type\":\"opt\",\"TypeCodec\":\"\"}]},\"7640916300855664666\":{\"Name\":\"ModelService.LoadObjectsData\",\"Kind\":\"container\",\"Layout\":\"pt\",\"Module\":\"\",\"OwnerClass\":\"\",\"Fields\":[]},\"7772769798498565531\":{\"Name\":\"Es\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_85667\",\"OwnerClass\":\"Es\",\"Fields\":[{\"Order\":1,\"Slot\":\"xbn_1\",\"Name\":\"state\",\"Type\":\"enum\",\"TypeCodec\":\"module_85667::nu\"}]},\"7795510382230390111\":{\"Name\":\"Bn\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_25377\",\"OwnerClass\":\"Bn\",\"Fields\":[{\"Order\":1,\"Slot\":\"jdl_1\",\"Name\":\"users\",\"Type\":\"list\",\"TypeCodec\":\"module_25377::\$t\"}]},\"8009147528103070285\":{\"Name\":\"kn\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_89803\",\"OwnerClass\":\"kn\",\"Fields\":[{\"Order\":1,\"Slot\":\"ahm_1\",\"Name\":\"limit\",\"Type\":\"ProBattleRewardLimitData\",\"TypeCodec\":\"module_31908::Ln\"}]},\"8179162314198150518\":{\"Name\":\"ModelService.SetModelCommandAlias\",\"Kind\":\"container\",\"Layout\":\"alias\",\"Module\":\"\",\"OwnerClass\":\"\",\"Fields\":[]},\"8615808087035604385\":{\"Name\":\"N_\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_85196\",\"OwnerClass\":\"N_\",\"Fields\":[{\"Order\":1,\"Slot\":\"ccm_1\",\"Name\":\"item\",\"Type\":\"i64\",\"TypeCodec\":\"\"},{\"Order\":2,\"Slot\":\"\",\"Name\":\"\",\"Type\":\"i32\",\"TypeCodec\":\"\"}]},\"8814983091022938481\":{\"Name\":\"Ii\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_37504\",\"OwnerClass\":\"Ii\",\"Fields\":[{\"Order\":1,\"Slot\":\"kb5_1\",\"Name\":\"userData\",\"Type\":\"list\",\"TypeCodec\":\"module_37504::St\"}]},\"8836555743203700004\":{\"Name\":\"fa\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_85196\",\"OwnerClass\":\"fa\",\"Fields\":[{\"Order\":1,\"Slot\":\"pcq_1\",\"Name\":\"properties\",\"Type\":\"list>\",\"TypeCodec\":\"module_85196::mu\"}]},\"9038756763225879447\":{\"Name\":\"ModelService.UnloadObjects\",\"Kind\":\"container\",\"Layout\":\"lt\",\"Module\":\"\",\"OwnerClass\":\"\",\"Fields\":[]},\"9114987333090113769\":{\"Name\":\"Es\",\"Kind\":\"fields\",\"Layout\":\"\",\"Module\":\"module_85667\",\"OwnerClass\":\"Es\",\"Fields\":[{\"Order\":1,\"Slot\":\"abo_1\",\"Name\":\"origin\",\"Type\":\"enum\",\"TypeCodec\":\"module_85667::nu\"},{\"Order\":2,\"Slot\":\"bbo_1\",\"Name\":\"state\",\"Type\":\"enum\",\"TypeCodec\":\"module_85667::nu\"}]}}}" diff --git a/client/src/jsMain/kotlin/Protocol/SelfTest.kt b/client/src/jsMain/kotlin/Protocol/SelfTest.kt index 97061b9..87819dc 100644 --- a/client/src/jsMain/kotlin/Protocol/SelfTest.kt +++ b/client/src/jsMain/kotlin/Protocol/SelfTest.kt @@ -1,8 +1,9 @@ -// SelfTest.kt —— M1 协议层自检(nodejs 目标下无头运行) +// SelfTest.kt —— 协议层自检(nodejs 目标下无头运行) // // 链路:连 ws://localhost:9091/ → 发 Hash Request → 收 Hash Response(解出 hash/加密标志) // → 发 Auth/EnterSpace(100045260) → 收初始化帧并逐条打印记录 // → 收到至少 1 条服务端保活 ping 后正常退出。 +// M2 起:容器记录(lt/pt/zt)能定界并解成 JSON,自检打印摘要与一个完整对象的 JSON。 package Protocol internal object SelfTest { @@ -42,10 +43,13 @@ internal object SelfTest { private var Finished = false fun Run() { - Log("=== 3DTank 客户端 M1 自检(nodejs 目标)===") + Log("=== 3DTank 客户端 M2 自检(nodejs 目标)===") Log("目标服务器 $Url 目标空间 $TargetSpaceId") val Tables = ProtocolTables.Data - Log("协议表 GeneratedAt=${Tables.GeneratedAt} 下行方法 ${Tables.Selection.DownlinkMethodIds} 条 / 上行方法 ${Tables.Selection.UplinkMethodIds} 条") + Log( + "协议表 GeneratedAt=${Tables.GeneratedAt} 下行方法 ${Tables.Selection.DownlinkMethodIds} 条 / " + + "上行方法 ${Tables.Selection.UplinkMethodIds} 条 / 模型 codec ${Tables.Selection.CodecCount} 个" + ) Log("") val C = Connection(Url) @@ -93,7 +97,8 @@ internal object SelfTest { return } val MethodIdAt8 = if (At + 16 <= Body.size) Body.ReadI64(At + 8).toString() else "" - if (ProtocolTables.Downlink(MethodIdAt8) != null) { + // 空间帧判据(口径同 M1,M2 追加 codec_fields 兜底):methodId 能在任一协议表里查到就是空间记录流 + if (ProtocolTables.Downlink(MethodIdAt8) != null || ProtocolTables.CodecByMethod(MethodIdAt8) != null) { PrintSpaceFrame(TotalBytes, Body, NmSize) return } @@ -107,20 +112,40 @@ internal object SelfTest { val R = Parsed.Records[I] val Spec = ProtocolTables.Downlink(R.MethodId) val Known = when { - Spec == null -> "未知" + Spec == null -> if (R.Kind == "fields") "(codec_fields)" else "未知" Spec.Module.isNotEmpty() -> "${Spec.Name} (${Spec.Module})" else -> Spec.Name } - val Flag = if (R.PayloadKnown) "" else "(负载边界未定:${if (R.Kind == "container") "容器" else "未知"},按剩余字节整块给出)" + val Flag = if (R.PayloadKnown) "" else "(负载边界未定:按剩余字节整块给出)" Log(" [$I] objectId=${R.ObjectId} | methodId=${R.MethodId} | $Known | 负载 ${R.Payload.size} 字节 $Flag") + if (R.Kind == "container") { + Log(" 布局 ${R.Layout} 摘要:${Container.Summary(R.Layout, R.Value)}") + Log(" 对象样例 JSON:${ContainerSample(R.Layout, R.Value)}") + } if (R.Fields.isNotEmpty()) { - for (F in R.Fields) Log(" ${F.first} = ${F.second}") + for (F in R.Fields) Log(" ${F.first} = ${FieldReader.FormatValue(F.second)}") } if (R.Note.isNotEmpty()) Log(" ⚠ ${R.Note}") } if (Parsed.Note.isNotEmpty()) Log(" ⚠ ${Parsed.Note}") } + // 至少打印一个完整对象的 JSON:pt 打印第一个对象引用与第一个模型项,zt 打印第一批,lt 打印整个负载 + private fun ContainerSample(Layout: String, Value: Any?): String { + val V = Value as? Map<*, *> ?: return "(无)" + return when (Layout) { + "pt" -> { + val Objects = V["Objects"] as? List<*> ?: emptyList() + val Items = V["Items"] as? List<*> ?: emptyList() + val Model = if (Items.size > 1) Items[1] else Items.firstOrNull() + "第一个对象=" + CanonicalJson.Text(Objects.firstOrNull()) + " 第一个模型项=" + CanonicalJson.Text(Model) + } + "zt" -> "第一批=" + CanonicalJson.Text((V["Batches"] as? List<*>)?.firstOrNull()) + "lt" -> CanonicalJson.Text(V) + else -> "(无)" + } + } + private fun PrintEntryFrame(TotalBytes: Int, Body: ByteArray, NmSize: Int) { val Cmds = Entry.DecodeServerBody(Body) Log("← s2c 帧#$FrameNo 整帧 $TotalBytes 字节 | nullmap $NmSize 字节 | 入口命令 ${Cmds.size} 条") @@ -139,8 +164,8 @@ internal object SelfTest { if (Finished || PingCount < 1) return Finished = true Log("") - Log("✓ M1 自检通过:入口层握手 → 进空间 → 收到初始化帧 → 收到 $PingCount 条服务端保活 ping") - Conn?.Close(1000, "M1 自检完成") + Log("✓ M2 自检通过:入口层握手 → 进空间 → 收到初始化帧(含容器记录)→ 收到 $PingCount 条服务端保活 ping") + Conn?.Close(1000, "M2 自检完成") SetTimeout(100) { ExitProcess(0) } } diff --git a/client/src/jsMain/kotlin/Protocol/SpaceFrame.kt b/client/src/jsMain/kotlin/Protocol/SpaceFrame.kt index 65c561c..c5f7d8b 100644 --- a/client/src/jsMain/kotlin/Protocol/SpaceFrame.kt +++ b/client/src/jsMain/kotlin/Protocol/SpaceFrame.kt @@ -3,10 +3,15 @@ // 帧体 = [nullmap][记录…] // 记录 = [objectId i64][methodId i64][负载](每条记录自带 objectId;nullmap 里一条记录 1 个形态位, // bit=0 → 长记录,bit=1 → 1 字节短命令号——短命令号 → (objectId, methodId) 的查表数据还没挖出来, -// M1 遇到短命令形态如实报不可解并停止) -// 负载长度:由该 s2c 方法的有序字段表逐字段推进得出(opt 字段消费 nullmap 的 bit)。 -// 容器型记录(ModelService 的 lt/pt/zt/alias)M1 不实现容器解码 ⇒ 负载长度无法确定, -// 按「帧体剩余全部字节」切片并如实标注;因此容器记录之后的记录不再解析。 +// 遇到短命令形态如实报不可解并停止) +// +// 负载边界的判定(M2 起容器也定界了): +// · 字段型记录:按该 s2c 方法的有序字段表逐字段推进得出(opt 字段消费 nullmap 的 bit)。 +// 字段表来源与 semantic.js 的 FieldsOf 同序:downlink_table 优先,其次 codec_fields(CodecByMethod)。 +// · 容器型记录(ModelService 的 lt/pt/zt):**由 methodId 定布局**,按布局算出 Next, +// 负载 = [Off+16, Next),解完继续解下一条记录(M1 的「剩余全部字节」切片已废弃)。 +// · 解不动(字段越界 / 无 codec / 容器读失败):按 M1 的规则停下,并如实标注哪条记录、 +// 差多少字节、为什么;剩余字节整体当作它的负载(不丢字节,也不假装解出来了)。 package Protocol internal class SpaceRecord( @@ -19,7 +24,8 @@ internal class SpaceRecord( val PayloadKnown: Boolean, // true = 负载边界是算出来的;false = 按「剩余全部字节」切片 val Bad: Boolean, val Note: String, - val Fields: List>, // 字段名 → 值文本(仅 fields 记录) + val Fields: List>, // 字段名 → 原始值(仅 fields 记录) + val Value: Any?, // 容器记录的解码值(仅 container;null = 没解出来) ) internal class SpaceFrameBody( @@ -57,7 +63,7 @@ internal object SpaceFrame { if (Bits[Index]) { Bad = true Note = "第 ${Records.size + 1} 条记录是短命令形态(nullmap 第 $Index 个 bit=1,1 字节命令号 0x" + - (Body.ReadU8(Off).toString(16).padStart(2, '0')) + "):短命令号查表数据还没挖出来,M1 判定不了" + (Body.ReadU8(Off).toString(16).padStart(2, '0')) + "):短命令号查表数据还没挖出来,判定不了" break } Index++ // 形态位 = 长记录 @@ -70,13 +76,57 @@ internal object SpaceFrame { val MethodId = Body.ReadI64(Off + 8).toString() val Spec = ProtocolTables.Downlink(MethodId) - if (Spec == null) { + // 容器型记录:布局由 methodId 决定,负载边界算得出来 → 解完继续解下一条 + if (Spec != null && Spec.Kind == "container") { + val Cursor = BitCursor(Bits, Index) + val R = Container.Read(Spec.Layout, Body, Off + 16, Cursor) + Index = Cursor.Index + if (R.Bad) { + Records.add( + SpaceRecord( + ObjectId, MethodId, Spec.Name, "container", Spec.Layout, + Body.copyOfRange(Off + 16, Body.size), false, true, + "容器布局 ${Spec.Layout} 在 +${R.Next - (Off + 16)} 处读失败:${R.Why}" + + "(记录边界无从判定,剩余 ${Body.size - (Off + 16)} 字节整体当作它的负载)", + emptyList(), null, + ) + ) + Bad = true + Note = "第 ${Records.size} 条容器记录(${Spec.Name} / 布局 ${Spec.Layout})解不动:${R.Why}" + break + } Records.add( SpaceRecord( - ObjectId, MethodId, "(未知)", "unknown", "", + ObjectId, MethodId, Spec.Name, "container", Spec.Layout, + Body.copyOfRange(Off + 16, R.Next), true, false, "", emptyList(), R.Value, + ) + ) + Off = R.Next + continue + } + + // 字段型记录:downlink_table 优先,其次 codec_fields(口径同 semantic.js 的 FieldsOf) + val Fields: List? + val Name: String + if (Spec != null) { + Fields = Spec.Fields + Name = Spec.Name + } else { + val Key = ProtocolTables.CodecByMethod(MethodId) + val CodecFields = if (Key != null) ProtocolTables.Codec(Key) else null + Name = "" + Fields = CodecFields?.mapIndexed { I, F -> ProtocolField(I + 1, "", F.Name, F.Type, F.TypeCodec) } + } + + if (Fields == null) { + // Kind 记成 fields:与 semantic.js 的 DecodeRecord(`Kind: Spec ? Spec.Kind : 'fields'`)同口径, + // 「没有字段表」这件事由 Bad + Note 表达,不另立一种 Kind + Records.add( + SpaceRecord( + ObjectId, MethodId, "(未知)", "fields", "", Body.copyOfRange(Off + 16, Body.size), false, true, - "methodId=$MethodId 不在 DownlinkByMethod(协议表只导出 M1/M2 需要的条目),负载长度无法确定", - emptyList(), + "methodId=$MethodId 既不在 DownlinkByMethod、也不在 CodecByMethod(协议表闭包裁剪),负载长度无法确定", + emptyList(), null, ) ) Bad = true @@ -84,29 +134,16 @@ internal object SpaceFrame { break } - if (Spec.Kind == "container") { - Records.add( - SpaceRecord( - ObjectId, MethodId, Spec.Name, "container", Spec.Layout, - Body.copyOfRange(Off + 16, Body.size), false, false, - "容器记录(布局 ${Spec.Layout}):M1 不做容器解码(lt/pt/zt),负载长度无法确定,按「剩余全部字节」切片", - emptyList(), - ) - ) - Note = "第 ${Records.size} 条是容器记录(${Spec.Name} / 布局 ${Spec.Layout}),M1 未实现容器解码" - break - } - - // 字段型记录:按有序字段表逐字段推进(opt 消费 nullmap 的 bit 游标) val Cursor = BitCursor(Bits, Index) + val Ctx = ReadCtx(Cursor, false) var At = Off + 16 - val Values = ArrayList>() + val Values = ArrayList>() var RecBad = false var Why = "" - for (F in Spec.Fields) { - val R = FieldReader.ReadValue(Body, At, F.Type, F.TypeCodec, 0, Cursor) - val Key = if (F.Name.isNotEmpty()) F.Name else "(匿名#${F.Order})" - Values.add(Key to FieldReader.FormatValue(R.Value)) + for (F in Fields) { + val Key = FieldKey(F) + val R = FieldReader.ReadValue(Body, At, F.Type, F.TypeCodec, 0, Ctx) + Values.add(Key to R.Value) val ZeroOk = FieldReader.IsOpt(F.Type) if (R.Bad || (R.Next <= At && !ZeroOk)) { RecBad = true @@ -120,10 +157,10 @@ internal object SpaceFrame { if (RecBad) { Records.add( SpaceRecord( - ObjectId, MethodId, Spec.Name, "fields", "", + ObjectId, MethodId, Name, "fields", "", Body.copyOfRange(Off + 16, Body.size), false, true, Why + "(记录边界无从判定,剩余字节整体当作它的负载)", - Values, + Values, null, ) ) Bad = true @@ -133,8 +170,8 @@ internal object SpaceFrame { Records.add( SpaceRecord( - ObjectId, MethodId, Spec.Name, "fields", "", - Body.copyOfRange(Off + 16, At), true, false, "", Values, + ObjectId, MethodId, Name, "fields", "", + Body.copyOfRange(Off + 16, At), true, false, "", Values, null, ) ) Off = At @@ -143,6 +180,10 @@ internal object SpaceFrame { return SpaceFrameBody(Nm, Records, Bad, Note) } + // 字段键:downlink_table 里挖不到名字的字段用 `(匿名#序)`(口径同 semantic.js 的 FieldKey) + private fun FieldKey(F: ProtocolField): String = + if (F.Name.isNotEmpty() && F.Name != "(匿名)" && F.Name != "?") F.Name else "(匿名#${F.Order})" + // 组帧:记录列表 → 帧体 → 整帧(nullmap 原样带上,长度头由 Frame.EncodeFrame 补) fun Encode(Records: List, Nullmap: ByteArray = byteArrayOf(0)): ByteArray { val W = ByteWriter() diff --git a/client/src/jsMain/resources/ProtocolTables.json b/client/src/jsMain/resources/ProtocolTables.json index 073bad1..70061cc 100644 --- a/client/src/jsMain/resources/ProtocolTables.json +++ b/client/src/jsMain/resources/ProtocolTables.json @@ -1 +1 @@ -{"Note":"客户端协议表,由 client/tools/ExportProtocolTables.mjs 从 3DTank/names/ 生成,请勿手改。UplinkByMethod 源 uplink_table.json,DownlinkByMethod 源 downlink_table.json(含 Containers 段)。只挑选 M1/M2 目标空间(names/space-init-*.json、space-session-*.json)里出现过的 methodId 与全部容器方法,不含 codec_fields/regdump 等其它表。线格式口径:bool/i8=1、i16=2、i32=4、i64=8、f32=4、f64=8(全大端);string/bytes/array = varint 长度 + 原始字节;list = varint 元素数 + 元素;map = varint 条数 + 条数 × (K,V);enum = i32(4 字节大端);opt 的「空/非空」是 nullmap 比特流里的 1 个 bit(空值负载里 0 字节),不是 1 字节标志。帧格式见 Protocol/Frame.kt 与 Protocol/Nullmap.kt(口径与 3DTank/tools/server/link.js 一致)。","GeneratedAt":"2026-09-18T01:48:42.185Z","Source":"3DTank/names/{uplink_table.json,downlink_table.json,space-*.json}","PrimitiveWidths":{"i8":1,"i16":2,"i32":4,"i64":8,"f32":4,"f64":8,"bool":1,"enum":4},"VarintPrefixed":["string","bytes","array"],"Selection":{"DownlinkMethodIds":31,"UplinkMethodIds":7},"UplinkByMethod":{"1079642233486876258":{"Name":"M_.fcn","Module":"module_85196","OwnerClass":"M_","SendFn":"fcn","Fields":[{"Order":1,"Slot":"ycm_1","Name":"","Type":"i64","TypeCodec":""}]},"1816792453857564692":{"Name":"G.q1wd","Module":"module_29554","OwnerClass":"G","SendFn":"q1wd","Fields":[{"Order":1,"Slot":"o1wd_1","Name":"","Type":"i32","TypeCodec":""}]},"2528403217084400809":{"Name":"ls.xbl","Module":"module_85667","OwnerClass":"ls","SendFn":"xbl","Fields":[]},"4428603232159847900":{"Name":"Qh.ycw","Module":"module_85196","OwnerClass":"Qh","SendFn":"ycw","Fields":[]},"4795202316771985007":{"Name":"M_.hcn","Module":"module_85196","OwnerClass":"M_","SendFn":"hcn","Fields":[{"Order":1,"Slot":"ccn_1","Name":"","Type":"i64","TypeCodec":""}]},"7806260029063678398":{"Name":"ba.lcr","Module":"module_85196","OwnerClass":"ba","SendFn":"lcr","Fields":[]},"8060894096836849355":{"Name":"ha.gcq","Module":"module_85196","OwnerClass":"ha","SendFn":"gcq","Fields":[{"Order":1,"Slot":"bcq_1","Name":"","Type":"i64","TypeCodec":""},{"Order":2,"Slot":"ccq_1","Name":"","Type":"i32","TypeCodec":""},{"Order":3,"Slot":"dcq_1","Name":"","Type":"i32","TypeCodec":""},{"Order":4,"Slot":"ecq_1","Name":"","Type":"enum","TypeCodec":"module_85667::Ve"}]}},"DownlinkByMethod":{"237130683810296524":{"Name":"Fn","Kind":"fields","Layout":"","Module":"module_10283","OwnerClass":"Fn","Fields":[{"Order":1,"Slot":"jh4_1","Name":"hash","Type":"string","TypeCodec":""}]},"761463638726320835":{"Name":"ki","Kind":"fields","Layout":"","Module":"module_10283","OwnerClass":"ki","Fields":[]},"1246109053620123806":{"Name":"oi","Kind":"fields","Layout":"","Module":"module_25377","OwnerClass":"oi","Fields":[{"Order":1,"Slot":"ddn_1","Name":"users","Type":"list","TypeCodec":"module_25377::Tt"}]},"1247179769701109529":{"Name":"ki","Kind":"fields","Layout":"","Module":"module_10283","OwnerClass":"ki","Fields":[{"Order":1,"Slot":"chc_1","Name":"advisedUids","Type":"list","TypeCodec":""}]},"1247179769701225356":{"Name":"ki","Kind":"fields","Layout":"","Module":"module_10283","OwnerClass":"ki","Fields":[]},"1936068342294351641":{"Name":"N_","Kind":"fields","Layout":"","Module":"module_85196","OwnerClass":"N_","Fields":[]},"2025886178375810581":{"Name":"gn","Kind":"fields","Layout":"","Module":"module_10283","OwnerClass":"gn","Fields":[{"Order":1,"Slot":"","Name":"","Type":"i64","TypeCodec":""}]},"2968780118652565413":{"Name":"Dm","Kind":"fields","Layout":"","Module":"module_47243","OwnerClass":"Dm","Fields":[{"Order":1,"Slot":"nft_1","Name":"questIds","Type":"list","TypeCodec":""},{"Order":2,"Slot":"oft_1","Name":"questCategoriesIds","Type":"list","TypeCodec":""},{"Order":3,"Slot":"pft_1","Name":"completedQuestIds","Type":"list","TypeCodec":""},{"Order":4,"Slot":"qft_1","Name":"completedQuestCategoriesIds","Type":"list","TypeCodec":""}]},"3182939728106937130":{"Name":"hr","Kind":"fields","Layout":"","Module":"module_89803","OwnerClass":"hr","Fields":[]},"3216143066888387731":{"Name":"ModelService.LoadDependencies","Kind":"container","Layout":"zt","Module":"","OwnerClass":"","Fields":[]},"3692495084100053385":{"Name":"N_","Kind":"fields","Layout":"","Module":"module_85196","OwnerClass":"N_","Fields":[{"Order":1,"Slot":"ocl_1","Name":"mountedItems","Type":"list","TypeCodec":""}]},"3996477900528000389":{"Name":"N_","Kind":"fields","Layout":"","Module":"module_85196","OwnerClass":"N_","Fields":[{"Order":1,"Slot":"kcl_1","Name":"itemsOnDepot","Type":"list","TypeCodec":""}]},"4567332396287339500":{"Name":"Yn","Kind":"fields","Layout":"","Module":"module_25377","OwnerClass":"Yn","Fields":[{"Order":1,"Slot":"xdl_1","Name":"users","Type":"list","TypeCodec":"module_25377::zt"}]},"5213829805760580947":{"Name":"N_","Kind":"fields","Layout":"","Module":"module_85196","OwnerClass":"N_","Fields":[]},"5236393599344825589":{"Name":"N_","Kind":"fields","Layout":"","Module":"module_85196","OwnerClass":"N_","Fields":[{"Order":1,"Slot":"mcl_1","Name":"itemsOnMarket","Type":"list","TypeCodec":""}]},"5543735653822042458":{"Name":"ni","Kind":"fields","Layout":"","Module":"module_25377","OwnerClass":"ni","Fields":[{"Order":1,"Slot":"pdm_1","Name":"users","Type":"list","TypeCodec":"module_25377::St"}]},"5600601240138203674":{"Name":"_a","Kind":"fields","Layout":"","Module":"module_85196","OwnerClass":"_a","Fields":[{"Order":1,"Slot":"vcp_1","Name":"item","Type":"i64","TypeCodec":""},{"Order":2,"Slot":"","Name":"","Type":"i32","TypeCodec":""}]},"5732737005800306202":{"Name":"il","Kind":"fields","Layout":"","Module":"module_47243","OwnerClass":"il","Fields":[{"Order":1,"Slot":"pel_1","Name":"announcementItems","Type":"list","TypeCodec":"module_47243::Vr"}]},"6180114602676583672":{"Name":"ki","Kind":"fields","Layout":"","Module":"module_10283","OwnerClass":"ki","Fields":[]},"6279910878005396624":{"Name":"ty","Kind":"fields","Layout":"","Module":"module_47243","OwnerClass":"ty","Fields":[{"Order":1,"Slot":"rfv_1","Name":"statistic","Type":"list","TypeCodec":"module_47243::m_"}]},"7615142300796401818":{"Name":"ka","Kind":"fields","Layout":"","Module":"module_85196","OwnerClass":"ka","Fields":[{"Order":1,"Slot":"dcr_1","Name":"devices","Type":"list","TypeCodec":""},{"Order":2,"Slot":"ecr_1","Name":"mountedDevice","Type":"opt","TypeCodec":""}]},"7640916300855664666":{"Name":"ModelService.LoadObjectsData","Kind":"container","Layout":"pt","Module":"","OwnerClass":"","Fields":[]},"7772769798498565531":{"Name":"Es","Kind":"fields","Layout":"","Module":"module_85667","OwnerClass":"Es","Fields":[{"Order":1,"Slot":"xbn_1","Name":"state","Type":"enum","TypeCodec":"module_85667::nu"}]},"7795510382230390111":{"Name":"Bn","Kind":"fields","Layout":"","Module":"module_25377","OwnerClass":"Bn","Fields":[{"Order":1,"Slot":"jdl_1","Name":"users","Type":"list","TypeCodec":"module_25377::$t"}]},"8009147528103070285":{"Name":"kn","Kind":"fields","Layout":"","Module":"module_89803","OwnerClass":"kn","Fields":[{"Order":1,"Slot":"ahm_1","Name":"limit","Type":"ProBattleRewardLimitData","TypeCodec":"module_31908::Ln"}]},"8179162314198150518":{"Name":"ModelService.SetModelCommandAlias","Kind":"container","Layout":"alias","Module":"","OwnerClass":"","Fields":[]},"8615808087035604385":{"Name":"N_","Kind":"fields","Layout":"","Module":"module_85196","OwnerClass":"N_","Fields":[{"Order":1,"Slot":"ccm_1","Name":"item","Type":"i64","TypeCodec":""},{"Order":2,"Slot":"","Name":"","Type":"i32","TypeCodec":""}]},"8814983091022938481":{"Name":"Ii","Kind":"fields","Layout":"","Module":"module_37504","OwnerClass":"Ii","Fields":[{"Order":1,"Slot":"kb5_1","Name":"userData","Type":"list","TypeCodec":"module_37504::St"}]},"8836555743203700004":{"Name":"fa","Kind":"fields","Layout":"","Module":"module_85196","OwnerClass":"fa","Fields":[{"Order":1,"Slot":"pcq_1","Name":"properties","Type":"list>","TypeCodec":"module_85196::mu"}]},"9038756763225879447":{"Name":"ModelService.UnloadObjects","Kind":"container","Layout":"lt","Module":"","OwnerClass":"","Fields":[]},"9114987333090113769":{"Name":"Es","Kind":"fields","Layout":"","Module":"module_85667","OwnerClass":"Es","Fields":[{"Order":1,"Slot":"abo_1","Name":"origin","Type":"enum","TypeCodec":"module_85667::nu"},{"Order":2,"Slot":"bbo_1","Name":"state","Type":"enum","TypeCodec":"module_85667::nu"}]}}} +{"Note":"客户端协议表,由 client/tools/ExportProtocolTables.mjs 从 3DTank/names/ 生成,请勿手改。UplinkByMethod 源 uplink_table.json,DownlinkByMethod 源 downlink_table.json(含 Containers 段)。Codecs/CodecByModelId/CodecByMethod/CodecByModelName 源 codec_fields.json,按「pt.Items 的 modelId + downlink_table 方法」取闭包裁剪(只留字段名/线类型串/TypeCodec,丢掉全部元数据)。TypeAliases = codec_fields.ResourceClasses[].Wire 与手写 RESOURCE_CLASS_WIRE 合并(手写优先),WireClasses 为 codec_fields.WireClasses。只挑选 M1/M2 目标空间(names/space-init-*.json、space-session-*.json)里出现过的 methodId 与全部容器方法。线格式口径:bool/i8=1、i16=2、i32=4、i64=8、f32=4、f64=8(全大端);string/bytes/array = varint 长度 + 原始字节;list = varint 元素数 + 元素;map = varint 条数 + 条数 × (K,V);enum = i32(4 字节大端);opt 的「空/非空」是 nullmap 比特流里的 1 个 bit(空值负载里 0 字节),不是 1 字节标志。帧格式见 Protocol/Frame.kt 与 Protocol/Nullmap.kt(口径与 3DTank/tools/server/link.js 一致)。","GeneratedAt":"2026-09-18T01:58:44.437Z","Source":"3DTank/names/{uplink_table.json,downlink_table.json,codec_fields.json,space-*.json}","PrimitiveWidths":{"i8":1,"i16":2,"i32":4,"i64":8,"f32":4,"f64":8,"bool":1,"enum":4},"VarintPrefixed":["string","bytes","array"],"Selection":{"DownlinkMethodIds":31,"UplinkMethodIds":7,"CodecCount":559,"CodecByModelIdCount":356,"CodecByMethodCount":432},"WireClasses":{"R":"i64","xr":"i64"},"TypeAliases":{"B_":"i64","Da":"i64","Ea":"i64","Gf":"i64","Pc":"i64","W_":"i64","kv":"i64","nh":"i64","no":"i64","pv":"i64","qs":"i64","uh":"i64","uo":"i64","zv":"i64"},"CodecByModelId":{"104562115846147942":"module_89803::Wt","120961863156462946":"module_85196::Du","149643551432886459":"module_85196::m_","171896995500198357":"module_85183::Sm","213661725715747381":"module_85196::gs","216902005816818019":"module_31908::Jn","258682513334072065":"module_25377::St","260111248825415414":"module_85183::Mb","313670832122918648":"module_85183::Qw","433350986715773690":"module_88693::it","462434031489766566":"module_47243::o_","466296741210741928":"module_10283::rt","481504601146841174":"module_85196::mo","510571369984788727":"module_85183::Go","513176302374590130":"module_10283::wt","573691036321759779":"module_85183::wp","649690707811173020":"module_37504::$t","658797348514407988":"module_85196::Fs","693025797100292228":"module_47243::zh","701801920209410257":"module_85196::Zo","712090483864327130":"module_85196::wo","732152133982227177":"module_85183::ip","770654516236272028":"module_85183::jm","787936358514072261":"module_31908::Ei","806128205466208462":"module_47243::Wa","821863604528384663":"module_88693::lt","834829861153964627":"module_85196::q_","844040023906032853":"module_85183::fl","868364325972433765":"module_54199::mt","871785774630866042":"module_37504::$t","881620222948704326":"module_37504::$t","887431150717814637":"module_85183::Hy","889485403566576664":"module_47243::$a","891137447706578619":"module_54199::ft","905970599512839002":"module_85196::q_","920233600808088339":"module_85183::Ry","965113061940997187":"module_47243::Oe","973781565169577734":"module_85183::pk","994751080759166914":"module_89803::ht","1009501302658881534":"module_47243::Tu","1036461397335537760":"module_47243::Jh","1090112775751802907":"module_85183::ol","1092307613749405757":"module_85183::Np","1115275516484037832":"module_37504::Yt","1130027771466355435":"module_85183::Mp","1139677084511624062":"module_85196::Ps","1164458258646872337":"module_85196::j_","1237976996871886061":"module_85183::Rv","1259328549938381181":"module_85196::wu","1298753286651761171":"module_25377::jt","1417398836682569292":"module_47243::Su","1456475022890566348":"module_47243::O_","1472449384337994019":"module_99527::N","1475210252818583689":"module_85183::c_","1500120709087433677":"module_85183::Wm","1534251830977989099":"module_85196::rs","1535852183188388854":"module_47243::pa","1661364280719338177":"module_85183::a_","1663344340563853103":"module_85183::yw","1688856467034284073":"module_85183::yh","1748249573394295263":"module_85183::Df","1767155986856291742":"module_85183::zb","1782954502314814229":"module_85183::Mv","1838248562944554574":"module_85183::mb","1850509145998626828":"module_25377::wt","1851605205665890036":"module_47243::Mc","1865478986390468300":"module_85196::_s","1893408944113965505":"module_47243::Us","1986821874929333245":"module_37504::Xt","1987602940683756146":"module_47243::ke","1997576349992148053":"module_85183::rk","2023935033691193766":"module_37504::$t","2046257084008991040":"module_85183::ya","2057320715890332864":"module_85183::ue","2057487026153364495":"module_85183::op","2078544146946392301":"module_85183::Y_","2080556892932195426":"module_47243::Sc","2085529474881905981":"module_31908::li","2101100305743734614":"module_85183::cr","2103303438297476110":"module_47243::th","2104999573658810427":"module_85183::Wb","2108103923322474513":"module_85667::He","2114179554921095892":"module_85196::$u","2145315487377727727":"module_85183::So","2150802556932617880":"module_85183::Qb","2168011188167752629":"module_47243::pc","2172139419072369403":"module_85183::ep","2173939047300893281":"module_85183::Ha","2235965200289058033":"module_85183::up","2252704231082045810":"module_47243::jc","2269636304551395302":"module_85183::so","2271787261806799336":"module_85183::Kb","2360640997000854496":"module_85183::qa","2368553937090306741":"module_85183::Kl","2396069765491056127":"module_88693::_t","2433120830275396692":"module_85196::s_","2464705242400585109":"module_85183::pr","2472262160204144219":"module_31908::zi","2474458842977623992":"module_10283::kt","2494628067134376039":"module_85196::Ts","2544465990449691855":"module_85183::kw","2547093126916834195":"module_37504::Pt","2560105521800470759":"module_85183::Lb","2606798949852309286":"module_37504::Ht","2618111250571302204":"module_85183::Vs","2638139599268780529":"module_85183::Ev","2648029304025111838":"module_85183::ls","2660691061343351669":"module_85183::Gm","2767408225195389970":"module_47243::R_","2769268442698022653":"module_85196::bu","2789386002514731022":"module_47243::Ia","2803166101624878775":"module_85183::cd","2855626038259597130":"module_47243::te","2913056477936031270":"module_89803::_t","2951667042968033849":"module_85196::ts","3031864034871022835":"module_85183::Au","3075844226211230705":"module_85183::cw","3122964582367261689":"module_85196::vu","3137250957878113145":"module_85183::ab","3152693668290247629":"module_47243::ku","3157947224668485277":"module_85183::O_","3158124838791669092":"module_47243::_s","3179861497615625536":"module_47243::Ps","3248199557469599724":"module_85183::jb","3305376498517733218":"module_85183::Qo","3317051239895575278":"module_85183::db","3339617300033754420":"module_85183::Lo","3349786357139026014":"module_47243::Ae","3364392936313775902":"module_85183::pu","3385611214280288146":"module_85183::Ta","3395764563215792356":"module_47243::Fe","3413041240691998182":"module_37504::ot","3438505192580052999":"module_85196::hs","3503382027414679973":"module_47243::au","3527205014716342329":"module_25377::Nt","3535248640055401164":"module_85183::Sc","3620520388804703780":"module_47243::ps","3714146481313901316":"module_47243::F_","3719295044981767592":"module_85183::zc","3730185794267514852":"module_85196::gu","3893855999545616334":"module_85196::So","3907559303616283277":"module_85183::py","3935107155251354407":"module_99527::N","3966050316678844327":"module_85183::Jc","3985896237583754666":"module_47243::sh","4038465370530850950":"module_85196::h_","4045733714401632272":"module_85183::Zg","4065909569861626318":"module_10283::tt","4068618447512888231":"module_85667::Ze","4186634155763928467":"module_47243::Sa","4206032257972775630":"module_85183::uq","4234781414353452329":"module_85196::xo","4245000165576407500":"module_85196::Ls","4255726087158005051":"module_25377::Tt","4268132139764766386":"module_47243::Dh","4309274349580876968":"module_85196::bs","4388979890807820236":"module_85183::cb","4406836274649365203":"module_85183::My","4440355418204561498":"module_47243::ah","4444006910106229297":"module_85183::Pv","4499337062875496540":"module_85183::Nd","4553925959338838726":"module_85183::g_","4658911146867546991":"module_85183::vk","4692610703461978415":"module_85196::ns","4693095212037357021":"module_85183::nh","4743567393313674375":"module_85196::Eo","4748522118519647527":"module_47243::Nu","4778752313022424015":"module_85183::_c","4782427880403395260":"module_47243::gc","4806152428066355053":"module_88693::et","4813819753066546054":"module_37504::$t","4817031001612283794":"module_85196::Xo","4875657231924274329":"module_85183::Zc","4885574251230758729":"module_85183::Hh","4905763060352702216":"module_47243::rs","4985274885530276227":"module_85183::Pa","5004566952388327414":"module_47243::ph","5055746953759097716":"module_85183::pb","5111180848188020047":"module_88693::ht","5123834867188931684":"module_85183::qu","5138794050233567698":"module_47243::qh","5156898764211343104":"module_47243::Wu","5167916989664044333":"module_47243::u_","5172585086901412996":"module_47243::H_","5194655544597440038":"module_85183::Rp","5207857306014573244":"module_85196::k_","5215232257096838692":"module_85183::Mo","5215458949573069793":"module_85183::$c","5219530271535770658":"module_85196::ys","5242494537362061802":"module_85183::jr","5255782026414758079":"module_85667::ru","5256681735304582291":"module_47243::bc","5257069799854314780":"module_85183::sf","5297988375509642470":"module_37504::$t","5385894712778438726":"module_85183::lu","5412538083071671358":"module_89803::Gt","5457907984000701384":"module_10283::ft","5543162332469864498":"module_85183::Nb","5604117679922858821":"module_85183::ad","5724298620794499870":"module_85196::Js","5738770490413536673":"module_85196::Fo","5745114335268581493":"module_85183::bl","5779075235189237790":"module_85183::R_","5780017129265868734":"module_47243::Ws","5801057999588514016":"module_47243::cu","5817682208733860186":"module_47243::ha","5867914731324680416":"module_85183::xm","5895522515282663537":"module_47243::io","5932347630672640435":"module_89803::gn","5952355564848177159":"module_85196::Fu","5958419804845264849":"module_85183::wr","5968651969329902265":"module_85183::s_","5988756521593027564":"module_85196::p_","6042266992054445914":"module_37504::Wt","6048708024205731750":"module_37504::gt","6071565290933648049":"module_54199::st","6091707767266836975":"module_47243::Ha","6111098822553419499":"module_85196::ss","6117306895090150422":"module_85196::Lo","6141842138930446750":"module_85183::_o","6144768774251946863":"module_47243::Yu","6165842138816273510":"module_88693::it","6169263949965533624":"module_85183::Ku","6192892501890483066":"module_47243::Hh","6210079079280471693":"module_85183::wy","6210980129845088505":"module_85183::vp","6220257539261493170":"module_37504::$t","6247612331185889342":"module_37504::Gt","6282101613166902704":"module_89803::gt","6359692933626160397":"module_67222::B","6384655869260380731":"module_85183::fd","6395651505226788750":"module_47243::Ka","6403067749608679876":"module_25377::ft","6424605984954645392":"module_85183::S_","6430862429652735997":"module_85196::As","6445399806655453890":"module_85183::vu","6455142242556985012":"module_85183::Dm","6484910309342792771":"module_47243::Ta","6514486185481319524":"module_47243::Pe","6528115483341986769":"module_85183::vm","6589716392600418185":"module_85196::cu","6590506277285284269":"module_85183::ky","6596471917520283782":"module_85183::fm","6623392760536649465":"module_85183::ev","6627517808336136295":"module_25377::Bt","6628468327090974523":"module_85196::Qs","6638615717159906637":"module_85183::Gc","6641568549549264883":"module_85183::Sv","6642061974307112160":"module_85183::vd","6652129902375288094":"module_89803::kt","6666386288157781248":"module_88693::it","6668012086939621459":"module_85183::$y","6680653332718076818":"module_85196::z_","6726403008449784914":"module_47243::qu","6729312304988255776":"module_85183::da","6744857484209767976":"module_47243::La","6768558945605412944":"module_37504::$t","6791702738669939115":"module_10283::Z","6820688895043695030":"module_47243::Bu","6841476710481576918":"module_47243::mh","6855550629220038001":"module_85183::hp","6882547137659234022":"module_37504::bt","6899642532024252493":"module_47243::Xh","6966229709169193455":"module_47243::A_","7019981464353739346":"module_25377::It","7022952987062772048":"module_85183::cg","7068168268219022867":"module_85183::fw","7076997842038370798":"module_37504::nt","7105110962241677955":"module_47243::Xo","7109632754421804521":"module_85196::Lu","7127632667958387441":"module_85183::Hb","7163171834328288344":"module_85183::Vb","7175193612424807833":"module_85667::Ye","7185560430911351668":"module_89803::Pt","7214131179703676563":"module_85183::Cy","7235761383767133268":"module_85183::Kd","7257138969919985658":"module_85183::Ly","7266201540452328992":"module_85183::mw","7267982595724632282":"module_85183::fr","7272122855372520854":"module_88693::tt","7286757952195114814":"module_88693::it","7295738902766942560":"module_85183::ko","7300500077035374704":"module_10283::Et","7307951074626252633":"module_47243::Cs","7336962025965257296":"module_85183::Ia","7341286352739641155":"module_47243::De","7391892068905080676":"module_85196::Vu","7401419333842694749":"module_85183::ar","7472019549033825785":"module_85196::ws","7484749077586587376":"module_85183::n_","7551602984488625261":"module_85183::Zk","7563487786199453443":"module_85196::v_","7588919819099098108":"module_47243::Yr","7640081207058999117":"module_85196::Yu","7692437363459179503":"module_85183::xv","7700337090161867199":"module_85183::rp","7762582768388221832":"module_85183::Pi","7786222713213880898":"module_47243::Ka","7805766859473669177":"module_47243::se","7810820263988615290":"module_47243::Na","7822174537018024954":"module_47243::wu","7838366943662257567":"module_10283::K","7860106430129114440":"module_47243::us","7874327015886119466":"module_85183::ku","7881181052304665842":"module_47243::bh","7883218652624289568":"module_85183::Tv","7894174029759745197":"module_85183::oc","7899544742191273818":"module_85183::ay","7912514999422640843":"module_85183::Hc","7935550480449821024":"module_47243::Ya","7949064601138261608":"module_37504::St","7949842549440362353":"module_47243::mh","7968893209278436962":"module_85183::tl","7970528904804811572":"module_85183::Li","8032192927455575509":"module_99527::D","8048067679617995470":"module_47243::Oh","8082047509383246662":"module_85183::pa","8083057704493864984":"module_47243::Ju","8109298281939714429":"module_85183::zr","8115862559097350286":"module_37504::Q","8153652471440648359":"module_85196::Ws","8166810800706377715":"module_85183::E_","8191021443726008799":"module_85183::dv","8212033390179430143":"module_85183::Dp","8237913720896985151":"module_85183::ge","8316165996190533130":"module_85183::f_","8345039896357067195":"module_85183::bw","8384919755051909877":"module_85183::ld","8458424802385151068":"module_47243::Ma","8464700182634408374":"module_47243::Xe","8495889215182031654":"module_37504::xt","8517963146836182364":"module_85183::Uc","8618289906968528240":"module_89803::zt","8629995567796005946":"module_47243::Xa","8659306545527654916":"module_85183::N_","8677996546985988365":"module_47243::ye","8738779591519195597":"module_85183::Hk","8754295211549969729":"module_85183::pd","8755539534673619516":"module_47243::ch","8762499949521628954":"module_37504::pt","8784137528831277530":"module_85183::Jg","8853923292505519798":"module_47243::Ua","8889030940127130747":"module_85183::vc","8966480724474352542":"module_85183::Yo","8980131978880882207":"module_85183::_e","9006361281849290638":"module_47243::Qs","9028066746998427457":"module_47243::Ts","9094843804380507187":"module_85183::pf","9105939015977236209":"module_85183::Nv","9114375113924783411":"module_85183::qo","9117714962311439886":"module_10283::at","9121776538033375678":"module_85183::xa","9168562037264832365":"module_85196::fu","9169475278259220023":"module_85183::sa","9172358609541951983":"module_85183::Gr","9175894397021160571":"module_85183::Nc"},"CodecByMethod":{"24336456693619694":"module_47243::Ts","28608551882350617":"module_85183::Hh","42520361057728933":"module_85183::S_","53931578606487632":"module_85183::Au","69377216150006552":"module_85183::Mv","89262871869978720":"module_85183::Gm","93011926352432722":"module_47243::Ps","107611244103209330":"module_47243::au","109481103048880710":"module_85183::_e","110434473993376637":"module_85183::cg","114702575520501699":"module_85183::ge","115270905187759765":"module_47243::se","128646616932243632":"module_85183::xm","176110661876294882":"module_47243::Ps","176568685285556018":"module_47243::Wu","208505630859996990":"module_85183::bw","246375933974875495":"module_37504::Yt","246376163847464422":"module_37504::Yt","246376335615041836":"module_37504::Yt","258885409970069058":"module_85183::Lo","270830195361940689":"module_85183::qo","276076212290602640":"module_47243::Us","314983404410424222":"module_54199::mt","376004548045092294":"module_85183::yw","512336029863754236":"module_85183::Pv","579242823008667022":"module_47243::Ps","642932327836248483":"module_85183::R_","676665252684358508":"module_85183::Ry","682529720221233539":"module_85183::mb","684534556503643918":"module_85183::lu","756296912352966419":"module_85667::He","761463638726320835":"module_10283::kt","772901659708598032":"module_85183::ep","773226029258926866":"module_85183::ar","793957265923484969":"module_31908::Ei","829688362537212989":"module_37504::Yt","829688408607058074":"module_37504::Yt","848734776772436751":"module_47243::Us","849912474669372210":"module_89803::zt","855141293721335664":"module_85183::zc","886347819034723364":"module_85183::Hh","901772559930405219":"module_85183::Y_","909632825295029806":"module_85183::lu","924318199145214645":"module_85183::fd","954003377929350580":"module_85183::Rv","977242693633208314":"module_85183::ay","979917479530760492":"module_85183::Mv","991279107648199953":"module_37504::$t","1027911230627575995":"module_85183::Mb","1061006404063035827":"module_85183::ip","1063883522906918839":"module_85183::ge","1072380982270148831":"module_10283::K","1137031257296827847":"module_37504::nt","1153688745215560661":"module_47243::Fe","1168222193764656966":"module_85183::ge","1235088345323764142":"module_85183::wr","1235088345323764690":"module_85183::wr","1244736124634194290":"module_85183::yw","1246109053620123806":"module_25377::Tt","1247179769701109529":"module_10283::kt","1247179769701225356":"module_10283::kt","1263966930259359161":"module_85183::rp","1307561284172016673":"module_47243::ha","1338663800868114384":"module_88693::tt","1381932048462271336":"module_37504::Yt","1396873965565453319":"module_37504::Yt","1397939087262834696":"module_85183::So","1416652194602611703":"module_31908::zi","1436394741539423374":"module_85183::xm","1439753158253520585":"module_47243::Yr","1461819455835620465":"module_37504::gt","1480424224583906965":"module_89803::kt","1480425466344702439":"module_89803::kt","1498719636425541007":"module_88693::tt","1518320782248281377":"module_85183::Dm","1536180556703958719":"module_10283::wt","1559135854675907932":"module_85183::py","1565008115349134490":"module_54199::mt","1590697140490653416":"module_88693::tt","1597293699677435224":"module_85183::jb","1613451515706630596":"module_85183::Kd","1613454127258727634":"module_85183::Kd","1626582508993174306":"module_85183::Dm","1653780246012371883":"module_85183::op","1661920281800548495":"module_31908::Ei","1663619828320147439":"module_85183::fw","1663635222489302521":"module_85183::fw","1713161837666313126":"module_47243::Yr","1725571201046733716":"module_85183::ab","1735069073412814628":"module_85183::f_","1789702758705308250":"module_85183::qo","1834399130506966481":"module_47243::te","1869048083490036553":"module_10283::wt","1880027114297758713":"module_47243::u_","1883432569915151620":"module_85183::Dp","1892188241679946781":"module_10283::rt","1909871666630534251":"module_88693::tt","1948228610221772610":"module_85183::cd","1965570026066462607":"module_89803::Wt","1968684612692387446":"module_85183::cg","1998557068281182363":"module_85183::vk","2039557349593105768":"module_47243::se","2047288050054426969":"module_85183::Au","2068137729567864293":"module_10283::K","2084673864582722213":"module_54199::ft","2102265333102715443":"module_85183::ky","2102592086285207698":"module_37504::Q","2116619297575918257":"module_37504::ot","2141301983650645649":"module_85183::yw","2214425595364508091":"module_85183::ue","2222252323682008158":"module_85183::So","2240897788941501720":"module_37504::xt","2259562525324509359":"module_37504::Q","2289147020187889907":"module_85183::Hb","2319469075059373819":"module_85183::Dp","2321967673566621796":"module_85183::lu","2351885759278528358":"module_10283::wt","2359710046028200821":"module_85183::yw","2361916365615485840":"module_85183::Au","2426455325523984241":"module_85183::vc","2454305702329641583":"module_89803::_t","2513461960707643851":"module_47243::Bu","2549273865595439021":"module_47243::rs","2564327160259532396":"module_85183::Pv","2582398071874032388":"module_85183::Rp","2611173935532140280":"module_47243::Ps","2612223562574608892":"module_88693::tt","2637004439773039233":"module_54199::st","2652688716065651424":"module_85667::Ye","2654832856752451606":"module_37504::Yt","2662571655067474667":"module_85183::kw","2703371004090442945":"module_47243::us","2730409051248405081":"module_85183::R_","2740421537548129844":"module_85183::Lb","2747789592087152345":"module_47243::Ps","2763115404716449924":"module_85183::ay","2805722386553418492":"module_85183::hp","2840538822498053147":"module_85183::qo","2851527043709977805":"module_10283::kt","2891319762800526644":"module_85183::Ta","2896391367845925315":"module_85183::Gr","2934412551480614122":"module_88693::tt","2940206844144431089":"module_89803::gn","2940606982196178690":"module_47243::u_","2940608322101861340":"module_47243::u_","2989701651242356625":"module_85183::Qb","3017384138137697921":"module_47243::Ps","3051379474627827578":"module_47243::us","3057042862073659526":"module_85183::ar","3114108441268497516":"module_47243::De","3119382294408125449":"module_10283::at","3171490882125125496":"module_85183::ep","3174409532068648254":"module_89803::ht","3177300755041195751":"module_85183::Li","3177300757642975034":"module_85183::Li","3182939728106937130":"module_89803::gn","3183698678686537900":"module_85183::ip","3188647720349732839":"module_37504::xt","3190244820038756769":"module_47243::Ps","3211078424173330093":"module_47243::Bu","3259573107349950777":"module_85183::Hk","3264529939218152741":"module_85183::cg","3291064285896039435":"module_88693::tt","3309025598583214085":"module_85183::Cy","3351342889818973539":"module_85183::pd","3412731366525601521":"module_31908::li","3421230400639853343":"module_85183::ay","3422925135801547845":"module_89803::Wt","3423457305918530189":"module_85183::cg","3423468681468313651":"module_85183::cg","3430453981713932879":"module_54199::st","3482025423529525056":"module_85183::Hk","3503849245765491449":"module_85183::Qb","3503849245765652149":"module_85183::Qb","3504312496907450914":"module_85183::cg","3536472446925346048":"module_85183::ld","3546760210246855825":"module_31908::zi","3548591940929833025":"module_10283::wt","3613725474268371519":"module_10283::K","3613996349879174759":"module_10283::K","3628916506766819105":"module_31908::li","3649639865850681609":"module_47243::Ju","3727141956503643256":"module_85183::Hh","3744111642464146587":"module_37504::bt","3748490273709739281":"module_89803::zt","3768030223558212864":"module_85183::fw","3817721646456198125":"module_10283::wt","3817721646456334094":"module_10283::wt","3893341111580011837":"module_85183::Au","3896773663152684598":"module_89803::Wt","3903010729664928358":"module_85183::rk","3909719079251247927":"module_88693::tt","3913319265649138109":"module_47243::Yr","3926246134868871157":"module_10283::rt","3929804726379170595":"module_10283::K","3943583499729295778":"module_31908::Jn","3977381235093458189":"module_47243::Us","3982372259754314184":"module_47243::Us","3983638632262874768":"module_10283::wt","4003302248435715730":"module_85183::ge","4028620761465158251":"module_85183::Wb","4038740694554744010":"module_10283::rt","4055708865249377998":"module_37504::Yt","4067512365209236558":"module_85183::So","4098651217391725572":"module_85183::ku","4140627039406832926":"module_85183::S_","4145605269036784193":"module_31908::zi","4152502158136824099":"module_85183::qu","4156122388939760755":"module_85183::Hy","4177016877549071625":"module_85183::qo","4202027557179282961":"module_54199::st","4252084460860730669":"module_47243::bc","4269970962008007272":"module_10283::rt","4345588892358775163":"module_10283::kt","4369879803010801180":"module_10283::at","4436756109011327056":"module_89803::kt","4503699991307339235":"module_89803::_t","4538073797885146589":"module_85183::mw","4544484075297806721":"module_47243::Ae","4554683101226393521":"module_85183::ge","4568097497591618556":"module_85183::bw","4568097497591833860":"module_85183::bw","4570603277638068285":"module_85183::Zc","4588303336291477169":"module_47243::Yr","4588303805980941192":"module_47243::Yr","4649894699348452281":"module_89803::kt","4684924965644046597":"module_85183::ue","4724159126125187993":"module_85196::Js","4735121264368139887":"module_89803::zt","4768403502339907548":"module_85183::So","4814703309695239999":"module_47243::Xo","4817134815354588916":"module_85183::Dp","4831333077268992386":"module_85183::Dm","4834181928072657585":"module_85183::Dm","4854122610453716941":"module_85183::ue","4862541063955121514":"module_85183::Qb","4865247277338043642":"module_85183::Kd","4880074127246447030":"module_37504::Yt","4893933961532699766":"module_47243::Yr","4914158023711825639":"module_47243::ye","4962081584098662674":"module_85183::Y_","4979644403852413958":"module_10283::ft","4998460206979194964":"module_85667::He","5048564266449948919":"module_47243::Wu","5049281367653287285":"module_47243::io","5086044601826347260":"module_85183::Y_","5171281261583893411":"module_85183::ip","5182609804280043241":"module_47243::Yr","5200451168146380991":"module_85183::ar","5226450868398444185":"module_85183::pb","5242977548712573154":"module_85183::Y_","5256326385350796760":"module_85183::hp","5299644370529364247":"module_47243::ps","5425510324539583895":"module_89803::zt","5434548773962141259":"module_85183::My","5446292333752834689":"module_85183::lu","5457625541923578989":"module_10283::rt","5468958804872316273":"module_37504::Yt","5469977024335963604":"module_10283::wt","5479730614647222944":"module_85183::py","5500506947295869799":"module_89803::ht","5523262832935222243":"module_85183::ar","5536786668492087416":"module_85183::ld","5536793758712801336":"module_85183::ay","5628691596950015452":"module_47243::Us","5628810758806816321":"module_85183::lu","5633963799060031149":"module_10283::wt","5636419478064741352":"module_31908::li","5668963828502041866":"module_85183::jb","5685137488048743855":"module_85183::ge","5749736363165481109":"module_10283::tt","5780844627196819808":"module_31908::Ei","5801225415498662771":"module_85183::Lo","5847657988305041673":"module_47243::Ae","5848693330284271305":"module_25377::wt","5853300576624626088":"module_85183::wr","5854120615662076740":"module_85183::Qb","5871526952594472533":"module_31908::Ei","5876619771294292986":"module_85183::R_","5943456002943068649":"module_47243::Fe","5943456002943184476":"module_47243::Fe","6025940417100022717":"module_25377::wt","6032454100111503495":"module_85667::He","6032530545731920727":"module_85667::He","6058982352227069766":"module_85183::wp","6111037286496381339":"module_47243::Yr","6124381810255991827":"module_85183::$c","6127259399604255678":"module_85183::fw","6128944648146277068":"module_54199::ft","6163835825449594578":"module_37504::$t","6177248960642588198":"module_85183::yw","6180114602676583672":"module_10283::kt","6244553590046625004":"module_85183::Qb","6250576433087856347":"module_85183::Y_","6252816260867053980":"module_47243::Ps","6282822726178548587":"module_85183::wp","6299890359477642632":"module_85183::vc","6316372751070128914":"module_85183::kw","6316377166391255195":"module_85183::kw","6328279001222972452":"module_85183::wr","6330505994629167126":"module_89803::Wt","6356214729562880865":"module_31908::Ei","6361743146717496013":"module_31908::li","6374471164629053857":"module_85183::Kb","6409604452180237449":"module_37504::Yt","6444205301512438901":"module_85183::Gm","6473618715354439490":"module_85183::So","6492680006777979140":"module_47243::Us","6614415063929831006":"module_85183::vk","6615036895587998551":"module_85183::vk","6635862338174306891":"module_89803::ht","6679144926991588323":"module_47243::bc","6682764721619581273":"module_85183::ue","6692915066613838049":"module_85183::ue","6743639250009365289":"module_31908::li","6761797949292995210":"module_47243::ke","6792909073115695089":"module_31908::Ei","6826457443736700407":"module_47243::Fe","6852580722697364034":"module_89803::_t","6913197136739750316":"module_85183::Nv","6947798386892132355":"module_47243::rs","7008460570137472565":"module_85183::ku","7050167951547569950":"module_85183::hp","7051126889005555427":"module_47243::jc","7051228255598370612":"module_85183::Pa","7068923702545456415":"module_89803::zt","7078025623569631495":"module_85183::Dm","7104309205801232048":"module_85183::Mv","7105718786066499086":"module_85183::Mv","7115041483344798028":"module_47243::Xo","7174636465767941533":"module_85183::wp","7174729688535406819":"module_85183::Zk","7181081297769655902":"module_37504::Yt","7194412814882163035":"module_85183::f_","7197018345543317788":"module_85183::jr","7216898623560510530":"module_85183::g_","7251316292223001978":"module_31908::li","7273589105071129668":"module_37504::Yt","7304231319779615950":"module_85183::Np","7316727561752705683":"module_10283::rt","7335191430366621906":"module_85183::wp","7344882059299080259":"module_89803::Wt","7403247229773089923":"module_89803::_t","7420694962019911375":"module_88693::it","7423759151545090071":"module_47243::rs","7424805141683073573":"module_85183::rp","7442372190489325710":"module_47243::Ts","7469211907271740690":"module_47243::jc","7474691314934075141":"module_85183::mw","7500147818756926013":"module_85183::So","7512444357462458245":"module_85183::Gr","7539316643017832352":"module_85183::hp","7539316643018047656":"module_85183::hp","7540280341731314166":"module_85183::wp","7542085633816094294":"module_89803::zt","7546805075905111829":"module_10283::kt","7555838499720932524":"module_47243::Fe","7647720059052212221":"module_85183::pk","7657330805330041244":"module_85183::pk","7708461874480136055":"module_89803::_t","7764478571911377711":"module_47243::Ps","7777574822513948703":"module_10283::at","7831128495768819137":"module_85183::zb","7864034006236084309":"module_47243::Us","7864195052961084235":"module_47243::Us","7891521962260218818":"module_85183::Lo","7910078009301382601":"module_85183::Wb","7938704650169182732":"module_85183::rk","7958737744601211588":"module_85183::Nv","8000208195328620000":"module_31908::Jn","8000208195376412452":"module_31908::Jn","8013008932473060482":"module_85183::Li","8018942101821409153":"module_85183::ko","8086326449411491788":"module_47243::Ae","8100670886177672915":"module_85183::Cy","8163438958342957025":"module_10283::wt","8171778085109430386":"module_37504::ot","8188577464406062306":"module_10283::rt","8201829668071386439":"module_85183::rk","8254919680762272734":"module_85183::ip","8258419313269914260":"module_10283::wt","8274817676081330504":"module_85183::f_","8285569264978375868":"module_25377::It","8395271889925905765":"module_85183::vk","8399333088188950506":"module_89803::_t","8407581545781297405":"module_47243::pc","8412189401960347554":"module_89803::kt","8422914968360441294":"module_37504::gt","8433635069541185363":"module_85183::Au","8433635585022781939":"module_85183::Au","8452151303656506419":"module_85183::$y","8468360636859619961":"module_47243::Us","8503594461052151846":"module_85183::kw","8524352143491228494":"module_85183::Au","8625902891810495866":"module_85183::Rp","8633711911613390575":"module_31908::zi","8652232813462564395":"module_85183::cb","8679688798445210739":"module_85183::fw","8680614953227323122":"module_88693::it","8708307156621030644":"module_31908::li","8708619517129991571":"module_31908::li","8736034487783827683":"module_10283::rt","8745254785944463098":"module_85183::bw","8772037395462480246":"module_10283::K","8773959930134829056":"module_85183::Kd","8779532205378268430":"module_85183::ko","8813105874551881850":"module_85183::Np","8814983091022938481":"module_37504::St","8836555743203700004":"module_85196::gu","8859088031384930809":"module_37504::Yt","8872197650929809377":"module_85183::vc","8874740556506734737":"module_85183::Mv","8891234703158239948":"module_47243::Ps","8895568346538829654":"module_47243::qu","8914117039835924034":"module_85183::Zk","8927995433991979560":"module_85183::Y_","8930926847959017775":"module_89803::_t","8944024474967689825":"module_85183::Y_","8944100436752558190":"module_85183::Y_","8964402760194876659":"module_85183::mw","8975361725414273371":"module_85183::cd","8981442771483046461":"module_85183::ge","8981442771495912329":"module_85183::ge","8981778623033134120":"module_85183::ue","9047763868814832699":"module_85183::a_","9099373858701175412":"module_88693::_t","9119326381010148347":"module_85183::cb","9132611606180179497":"module_85183::Go","9148695708149003246":"module_85183::Vb","9173450165804477684":"module_37504::Q","9187558822227119790":"module_85183::Ly","9187558822227614985":"module_85183::Ly"},"CodecByModelName":{"Lt":"module_61860::fi"},"Codecs":{"module_10283::Et":[["entranceBackgrounds","list",""],["entranceSound","Ea",""],["garageSound","Ea",""],["lobbySound","Ea",""],["proBattlesLimitSound","Ea",""],["proBattlesSound","Ea",""],["shopSound","Ea",""],["tankBuildSound","Ea",""]],"module_10283::K":[["realNameCheckEnabled","bool",""]],"module_10283::Tt":[["(匿名#1)","i32",""]],"module_10283::Z":[["background","Gf",""],["endDate","opt",""],["startDate","opt",""]],"module_10283::at":[["enabled","bool",""]],"module_10283::ft":[["disableRegistrationMessage","opt",""],["disableShopMessage","opt",""],["homeScreenMessage","opt",""]],"module_10283::kt":[["disabled","bool",""],["enableRequiredEmail","bool",""],["(匿名#3)","i32",""],["(匿名#4)","i32",""],["passwordNeedDigit","bool",""],["passwordNeedLower","bool",""],["passwordNeedUpper","bool",""]],"module_10283::nt":[["(匿名#1)","i32",""]],"module_10283::ot":[["clientId","string",""],["enabled","opt",""],["snId","string",""]],"module_10283::rt":[["socialNetworkParams","list","module_10283::ot"]],"module_10283::tt":[["serverHalt","bool",""]],"module_10283::wt":[["forceSocialNetwork","opt",""]],"module_16100::gt":[["position","Vector3D","module_16100::qn"],["rotation","Vector3D","module_16100::qn"],["size","Vector3D","module_16100::qn"]],"module_16100::qn":[["(匿名#1)","f32",""],["(匿名#2)","f32",""],["(匿名#3)","f32",""]],"module_25377::$t":[["online","bool",""],["(匿名#2)","i64",""]],"module_25377::Bt":[["(匿名#1)","i32",""]],"module_25377::It":[["(匿名#1)","i32",""]],"module_25377::Kt":[["(匿名#1)","i64",""],["inGroup","bool",""],["mapName","opt",""],["mode","opt>","module_31908::Rn"],["privateBattle","bool",""],["proBattle","bool",""],["range","opt","module_31908::Dn"]],"module_25377::Lt":[["host","string",""],["ports","list",""],["wsProto","string",""]],"module_25377::Nt":[["ranks","list","module_25377::Rt"]],"module_25377::Rt":[["(匿名#1)","i32",""],["name","string",""]],"module_25377::St":[["(匿名#1)","i32",""],["(匿名#2)","i64",""]],"module_25377::Tt":[["partnerUid","opt",""],["uid","string",""],["(匿名#3)","i64",""]],"module_25377::bt":[["inBattle","bool",""],["inGroup","bool",""],["proBattle","bool",""],["(匿名#4)","i64",""]],"module_25377::ft":[["(匿名#1)","i64",""]],"module_25377::jt":[["(匿名#1)","i32",""]],"module_25377::wt":[["loggingEnabled","bool",""]],"module_25377::zt":[["hasPremium","bool",""],["(匿名#2)","i64",""]],"module_29554::D":[["data","any",""],["(匿名#2)","i64",""]],"module_29554::O":[["(匿名#1)","i32",""],["resources","list",""]],"module_29554::P":[["modelsData","list","module_29554::D"],["objects","list",""]],"module_31908::An":[["battleMode","enum","module_31908::Rn"],["battleModeForMatchmaking","opt>","module_31908::Rn"],["battleOptions","list>","module_31908::Fn"],["crossPlayMode","enum","module_31908::On"],["formatMode","opt",""],["limits","BattleLimits","module_31908::Un"],["(匿名#7)","i64",""],["maxPeopleCount","i8",""],["name","opt",""],["proBattle","bool",""],["rankRange","Range","module_31908::Dn"],["theme","enum","module_31908::Gn"]],"module_31908::Bn":[["(匿名#1)","i32",""]],"module_31908::Dn":[["(匿名#1)","i32",""],["(匿名#2)","i32",""]],"module_31908::Ei":[["(匿名#1)","i32",""],["(匿名#2)","i32",""],["usersInfoTeamA","list","module_31908::yi"],["usersInfoTeamB","list","module_31908::yi"]],"module_31908::Fn":[["(匿名#1)","i32",""]],"module_31908::Gn":[["(匿名#1)","i32",""]],"module_31908::Hn":[["(匿名#1)","i32",""]],"module_31908::Jn":[["spectators","list","module_31908::Yn"]],"module_31908::Ln":[["(匿名#1)","i32",""],["(匿名#2)","i32",""],["(匿名#3)","i32",""],["(匿名#4)","i32",""]],"module_31908::Mn":[["(匿名#1)","i32",""]],"module_31908::Nn":[["reArmorEnabled","bool",""]],"module_31908::On":[["(匿名#1)","i32",""]],"module_31908::Qn":[["battleAction","enum","module_31908::Hn"],["(匿名#2)","f64",""],["(匿名#3)","f64",""]],"module_31908::Rn":[["(匿名#1)","i32",""]],"module_31908::Ti":[["(匿名#1)","i32",""]],"module_31908::Un":[["(匿名#1)","i32",""],["(匿名#2)","i32",""]],"module_31908::Yn":[["(匿名#1)","i64",""],["inPunishersGroup","bool",""],["inSupportGroup","bool",""],["uid","string",""]],"module_31908::ji":[["(匿名#1)","i16",""],["(匿名#2)","i16",""],["(匿名#3)","i16",""],["(匿名#4)","i32",""],["user","i64",""]],"module_31908::li":[["battleName","opt",""],["equipmentConstraintsMode","opt",""],["(匿名#3)","i32",""],["limits","BattleLimits","module_31908::Un"],["mapName","string",""],["matchBattle","bool",""],["(匿名#7)","i32",""],["modeName","string",""],["parkourMode","bool",""],["running","bool",""],["spectator","bool",""],["suspiciousByIpUserIds","list",""],["suspiciousUserIds","list",""],["(匿名#14)","i32",""],["valuableRound","bool",""]],"module_31908::qi":[["experiencePremiumBonusByActions","list","module_31908::Qn"],["partnerUid","opt",""],["(匿名#3)","i32",""],["(匿名#4)","i32",""],["(匿名#5)","i32",""],["(匿名#6)","i32",""],["(匿名#7)","i64",""]],"module_31908::yi":[["chatModeratorLevel","enum","module_88693::lt"],["clanTag","opt",""],["(匿名#3)","i16",""],["hasPremium","bool",""],["(匿名#5)","i16",""],["(匿名#6)","i16",""],["partnerUid","opt",""],["rank","i8",""],["(匿名#9)","i32",""],["uid","string",""],["user","i64",""]],"module_31908::zi":[["usersInfo","list","module_31908::yi"]],"module_37504::$t":[["objects","opt>",""]],"module_37504::Gt":[["clanButtonVisible","bool",""],["(匿名#2)","i32",""]],"module_37504::Ht":[["(匿名#1)","i32",""],["(匿名#2)","i32",""],["(匿名#3)","i32",""]],"module_37504::Pt":[["additionalPlace","opt",""],["changeOwner","opt",""],["descriptionEditPrice","opt",""],["maxPlacesInClan","opt",""],["nameEditPrice","opt",""],["tagEditPrice","opt",""]],"module_37504::Q":[["users","opt>",""]],"module_37504::St":[["(匿名#1)","i64",""],["clanTag","opt",""],["(匿名#3)","i64",""]],"module_37504::Ut":[["blocked","bool",""],["(匿名#2)","i64",""],["(匿名#3)","i64",""],["description","string",""],["incomingRequestEnabled","bool",""],["(匿名#6)","i64",""],["(匿名#7)","i32",""],["(匿名#8)","i32",""],["name","string",""],["tag","string",""],["users","list","module_37504::rt"]],"module_37504::Wt":[["(匿名#1)","i32",""]],"module_37504::Xt":[["(匿名#1)","i64",""]],"module_37504::Yt":[["hasClan","bool",""],["loadingInServiceSpace","bool",""],["(匿名#3)","i32",""]],"module_37504::bt":[["actions","list>","module_37504::mt"]],"module_37504::gt":[["users","list",""]],"module_37504::mt":[["(匿名#1)","i32",""]],"module_37504::nt":[["users","list","module_37504::ut"]],"module_37504::ot":[["users","list","module_37504::ut"]],"module_37504::pt":[["blocked","bool",""],["(匿名#2)","i64",""],["(匿名#3)","i64",""],["description","opt",""],["incomingRequestEnabled","bool",""],["(匿名#6)","i32",""],["(匿名#7)","i32",""],["(匿名#8)","i32",""],["name","string",""],["reasonForBlocking","opt",""],["self","bool",""],["tag","string",""],["(匿名#13)","i64",""],["users","list",""]],"module_37504::rt":[["permission","enum","module_37504::yt"],["(匿名#2)","i64",""]],"module_37504::ut":[["(匿名#1)","i32",""],["(匿名#2)","i32",""],["(匿名#3)","i32",""],["(匿名#4)","i64",""],["permission","opt>","module_37504::yt"],["(匿名#6)","i32",""],["(匿名#7)","i64",""]],"module_37504::xt":[["hasClanLicense","bool",""]],"module_37504::yt":[["(匿名#1)","i32",""]],"module_47243::$a":[["button","opt",""],["buttonOver","opt",""],["imageBlocks","list","module_47243::za"],["(匿名#4)","i32",""],["(匿名#5)","i32",""],["(匿名#6)","i32",""],["(匿名#7)","i32",""],["textBlocks","list","module_47243::ma"]],"module_47243::$s":[["canBeDeliveredInDebt","bool",""],["externalProductId","opt",""],["frequency","enum","module_47243::zs"],["(匿名#4)","i64",""],["ignoresDeliverRequestFromClient","bool",""],["localizedGoods","list","module_47243::xs"],["(匿名#7)","i32",""],["template","string",""],["tokenName","string",""]],"module_47243::A_":[["desktopBlock","string",""],["mobileBlock","string",""]],"module_47243::Ac":[["additionalPreview","opt",""],["(匿名#2)","i32",""],["name","string",""],["preview","opt",""],["type","enum<$x>","module_47243::Rc"]],"module_47243::Ae":[["activeContractId","opt",""],["contracts","list","module_47243::Ee"]],"module_47243::Bh":[["(匿名#1)","i32",""],["(匿名#2)","i32",""],["text","string",""],["(匿名#4)","i32",""],["(匿名#5)","i32",""]],"module_47243::Bu":[["appAccountToken","string",""]],"module_47243::C_":[["(匿名#1)","i64",""],["image","pv",""],["name","string",""],["type","enum","module_47243::E_"]],"module_47243::Cs":[["receivePresentsEnabled","bool",""]],"module_47243::De":[["inDebt","bool",""]],"module_47243::Dh":[["category","i64",""]],"module_47243::Du":[["value","string",""],["variable","string",""]],"module_47243::E_":[["(匿名#1)","i32",""]],"module_47243::Ee":[["activeEndTime","opt",""],["(匿名#2)","i64",""],["(匿名#3)","i32",""],["(匿名#4)","i32",""],["expireActiveTimeRewards","list","module_47243::Ke"],["expireRewardTimeRewards","list","module_47243::Ke"],["name","string",""],["(匿名#8)","i32",""],["rarity","enum","module_85196::Gs"],["rewardEndTime","opt",""],["rewards","list","module_47243::Ke"],["(匿名#12)","i32",""],["startDate","Pc",""]],"module_47243::F_":[["activeUntil","opt",""],["name","string",""],["pinned","bool",""],["sold","bool",""],["(匿名#5)","i32",""],["type","enum","module_47243::fa"]],"module_47243::Fe":[["imageWithEmail","no",""],["imageWithoutEmail","no",""],["message","string",""]],"module_47243::H_":[["(匿名#1)","i32",""],["oldPrice","opt",""]],"module_47243::Ha":[["hiddenInOriginalCategory","bool",""],["locatedInFeaturingCategory","bool",""],["(匿名#3)","i32",""]],"module_47243::He":[["goods","list","module_47243::Ke"],["(匿名#2)","i64",""]],"module_47243::Hh":[["(匿名#1)","i32",""],["(匿名#2)","i32",""],["(匿名#3)","i32",""],["(匿名#4)","i32",""],["(匿名#5)","i32",""],["showPremiumIcon","bool",""],["texts","list","module_47243::Bh"],["withAdditionalItem","bool",""]],"module_47243::Ho":[["action","enum<$m>","module_47243::mo"],["actionParams","opt",""],["activateTime","opt",""],["active","bool",""],["battlePass","bool",""],["(匿名#6)","i64",""],["completed","bool",""],["completedCount","opt",""],["conditions","list","module_47243::_o"],["depends","list",""],["description","string",""],["durationInMinutes","opt",""],["eventPass","bool",""],["extendedPeriodicalEndTime","opt",""],["extendedPeriodicalStartTime","opt",""],["icon","opt",""],["(匿名#17)","i64",""],["minRank","i32",""],["name","string",""],["oneTime","bool",""],["pinned","bool",""],["premium","bool",""],["progress","map, i32>","module_47243::ao"],["rewardExpireTime","opt",""],["rewards","list","module_47243::Ke"],["skipNewNotification","bool",""],["(匿名#27)","i32",""],["startTime","opt",""]],"module_47243::Ia":[["(匿名#1)","i32",""]],"module_47243::Jh":[["(匿名#1)","i32",""]],"module_47243::Ju":[["productType","opt>","module_47243::Zu"]],"module_47243::Ka":[["goods","list","module_47243::Ke"]],"module_47243::Ke":[["(匿名#1)","i32",""],["(匿名#2)","i32",""],["(匿名#3)","i64",""],["name","string",""],["preview","opt",""]],"module_47243::La":[["emailRequired","bool",""]],"module_47243::Ma":[["(匿名#1)","i32",""],["enabled","bool",""]],"module_47243::Mc":[["rewardSource","enum","module_47243::Pc"],["rewards","list","module_47243::Ac"]],"module_47243::Na":[["description","opt",""],["image","opt",""],["title","opt",""]],"module_47243::Nu":[["customManualDescription","opt",""],["description","string",""],["image","opt",""],["name","string",""],["(匿名#5)","i32",""]],"module_47243::O_":[["showAcceptRulesAlert","bool",""],["text","opt",""]],"module_47243::Oe":[["creatorTags","list",""]],"module_47243::Oh":[["canBeShownWhenUserIsInDebt","bool",""],["cardHoverBackground","opt",""],["categoryBackground","opt",""],["confirmPurchaseForCrystals","bool",""],["icon","opt",""],["(匿名#6)","i32",""],["preview","opt",""],["showTimerOnCard","bool",""],["specialCategory","bool",""],["type","enum","module_85667::du"]],"module_47243::Pc":[["(匿名#1)","i32",""]],"module_47243::Pe":[["creatorTag","opt",""]],"module_47243::Ps":[["email","opt",""],["emailConfirmed","bool",""],["passwordSet","bool",""]],"module_47243::Qs":[["disabledNotificationTypes","list>","module_85667::uu"],["notificationsEnabled","bool",""]],"module_47243::R_":[["(匿名#1)","i32",""]],"module_47243::Rc":[["(匿名#1)","i32",""]],"module_47243::Sa":[["(匿名#1)","i32",""],["(匿名#2)","i32",""]],"module_47243::Sc":[["countryCode","string",""],["countryName","string",""]],"module_47243::Su":[["manualDescription","string",""],["payModes","list",""],["shopCategories","list",""],["shopItems","list",""]],"module_47243::Ta":[["amount","string",""],["name","string",""]],"module_47243::Ts":[["freeFirstTimeRenameAvailable","bool",""],["(匿名#2)","i32",""]],"module_47243::Tu":[["coinPaymentProviderUrl","string",""],["enableCoinPaymentProvider","bool",""]],"module_47243::Ua":[["payMode","i64",""]],"module_47243::Us":[["(匿名#1)","i32",""],["canUseGroup","bool",""],["(匿名#3)","i32",""],["(匿名#4)","i32",""],["(匿名#5)","i32",""],["(匿名#6)","i64",""],["(匿名#7)","i32",""],["(匿名#8)","i32",""],["hasSpectatorPermissions","bool",""],["(匿名#10)","i32",""],["(匿名#11)","i64",""],["partnerUid","opt",""],["(匿名#13)","i32",""],["rankBounds","RankBounds","module_88693::ct"],["(匿名#15)","i32",""],["(匿名#16)","i32",""],["(匿名#17)","i32",""],["(匿名#18)","i32",""],["uid","string",""],["userProfileUrl","string",""],["(匿名#21)","i32",""],["(匿名#22)","i32",""]],"module_47243::Vr":[["announceDescription","opt",""],["announceDescriptionImage","opt",""],["announceIcon","opt",""],["announceTitle","opt",""],["announcementClientAction","opt>","module_47243::zr"],["battleMode","opt>","module_31908::Rn"],["endDate","opt",""],["footerDescription","opt",""],["footerIcon","opt",""],["footerTitle","opt",""],["(匿名#11)","i64",""],["maxRank","opt",""],["minRank","opt",""],["promotion","bool",""],["screenTemplate","opt",""],["shopCategoryId","opt",""],["shopItemId","opt",""],["showTimerInFooterTitle","bool",""],["startDate","opt",""],["url","opt",""]],"module_47243::Wa":[["(匿名#1)","i32",""]],"module_47243::Ws":[["profileBlocked","bool",""]],"module_47243::Wu":[["appAccountToken","opt",""]],"module_47243::Xa":[["(匿名#1)","i32",""]],"module_47243::Xe":[["showDroppableGoldAuthor","bool",""]],"module_47243::Xh":[["brandIcon","opt",""],["button","pv",""],["buttonOver","pv",""],["preview","opt",""]],"module_47243::Xo":[["eventPassShopItemId","opt",""],["notStartedQuestsId","list",""],["questsCategoriesIds","list",""],["questsStartTime","list",""]],"module_47243::Y_":[["height","opt",""],["horizontalAlignment","enum","module_47243::ia"],["image","pv",""],["(匿名#4)","f32",""],["(匿名#5)","f32",""]],"module_47243::Ya":[["(匿名#1)","i32",""]],"module_47243::Yr":[["soundNotification","opt",""]],"module_47243::Ys":[["(匿名#1)","i32",""]],"module_47243::Yu":[["description","opt",""],["images","list",""]],"module_47243::Zo":[["conditionType","enum","module_47243::ao"],["(匿名#2)","i32",""],["(匿名#3)","i32",""],["(匿名#4)","i32",""]],"module_47243::Zr":[["availableSlot","bool",""],["battleData","BattleInfoData","module_25377::Kt"]],"module_47243::Zu":[["(匿名#1)","i32",""]],"module_47243::_o":[["allContextItemsRequired","bool",""],["battleMode","opt>","module_31908::Rn"],["contextItemsInfo","list","module_47243::lo"],["(匿名#4)","i32",""],["skipForShowProgress","bool",""],["type","enum","module_47243::ao"]],"module_47243::_s":[["enabledFullPayment","bool",""],["paymentUrl","opt","module_47243::fs"]],"module_47243::ah":[["buttonKit","no",""],["buttonKitOver","no",""]],"module_47243::ao":[["(匿名#1)","i32",""]],"module_47243::au":[["hasGrenades","bool",""]],"module_47243::b_":[["items","list","module_47243::j_"],["(匿名#2)","i32",""]],"module_47243::bc":[["account","opt",""],["accountLinkingEnabled","bool",""],["(匿名#3)","i32",""],["linkUrl","string",""]],"module_47243::bh":[["description","opt",""],["(匿名#2)","i32",""],["name","string",""]],"module_47243::ce":[["background","opt",""],["battlePassFlavor","enum","module_85196::o_"],["mainPrizeImage","opt",""],["(匿名#4)","i32",""],["(匿名#5)","i32",""],["tiers","list","module_47243::ve"],["(匿名#7)","i64",""]],"module_47243::ch":[["(匿名#1)","i32",""],["name","string",""]],"module_47243::cu":[["resistances","list>","module_85667::wu"]],"module_47243::d_":[["color","string",""],["description","string",""],["endDate","opt",""],["hideIfEmpty","bool",""],["(匿名#5)","i64",""],["image","pv",""],["(匿名#7)","i32",""],["name","string",""],["rankRange","Range","module_31908::Dn"],["startDate","opt",""],["type","enum","module_47243::y_"]],"module_47243::fa":[["(匿名#1)","i32",""]],"module_47243::fs":[["encodeParameters","bool",""],["getRequest","bool",""],["host","string",""],["parameters","list","module_47243::Du"]],"module_47243::gc":[["enabled","bool",""]],"module_47243::ge":[["(匿名#1)","i32",""],["hasUniqueItem","bool",""],["name","string",""],["preview","Gf",""]],"module_47243::go":[["completed","bool",""],["icon","opt",""],["(匿名#3)","i64",""],["(匿名#4)","i64",""],["name","string",""],["progressInfo","list","module_47243::Zo"]],"module_47243::ha":[["button","opt",""],["buttonOver","opt",""],["imageBlocks","list","module_47243::Y_"],["priceLabel","opt","module_47243::la"],["priceWithDiscountLabel","opt","module_47243::la"],["textBlocks","list","module_47243::na"]],"module_47243::hc":[["currency","enum","module_85667::Ve"],["slots","list",""]],"module_47243::ia":[["(匿名#1)","i32",""]],"module_47243::ie":[["battlePassFlavor","enum","module_85196::o_"],["(匿名#2)","i64",""]],"module_47243::io":[["completedAchievementIds","list",""]],"module_47243::j_":[["image","pv",""],["name","string",""]],"module_47243::jc":[["activated2FA","bool",""],["use2FA","bool",""]],"module_47243::ke":[["(匿名#1)","i32",""]],"module_47243::ku":[["icons","list","module_47243::mu"]],"module_47243::la":[["(匿名#1)","i32",""],["fontPercentSize","opt",""],["(匿名#3)","f32",""],["(匿名#4)","f32",""]],"module_47243::lc":[["(匿名#1)","i32",""],["(匿名#2)","i32",""],["tip","string",""]],"module_47243::lo":[["available","bool",""],["(匿名#2)","i64",""],["name","opt",""]],"module_47243::m_":[["nearEndTime","opt",""],["(匿名#2)","i64",""],["(匿名#3)","i32",""]],"module_47243::ma":[["(匿名#1)","i32",""],["fontPercentSize","opt",""],["(匿名#3)","i32",""],["(匿名#4)","i32",""],["text","string",""]],"module_47243::mh":[["oneTimePurchase","bool",""],["triedToBuy","bool",""]],"module_47243::mo":[["(匿名#1)","i32",""]],"module_47243::mu":[["icon","enum","module_47243::pu"],["resource","pv",""]],"module_47243::na":[["(匿名#1)","i32",""],["fontPercentSize","opt",""],["horizontalAlignment","enum","module_47243::ia"],["(匿名#4)","f32",""],["(匿名#5)","f32",""],["text","string",""],["textUseAs","opt>","module_47243::ra"],["upperCase","bool",""]],"module_47243::o_":[["categories","list","module_47243::d_"]],"module_47243::oc":[["(匿名#1)","i64",""],["weaponsIds","list",""]],"module_47243::ou":[["(匿名#1)","i64",""],["category","enum","module_85667::vu"]],"module_47243::pa":[["description","string",""],["name","string",""]],"module_47243::pc":[["missionElementKeys","list>","module_85667::su"],["missionIds","list",""],["unViewedElements","list>","module_85667::su"]],"module_47243::ph":[["button","pv",""],["buttonOver","pv",""],["(匿名#3)","i32",""],["lootBoxPreview","pv",""],["(匿名#5)","i32",""],["paintPreview","opt",""]],"module_47243::ps":[["rewardItems","list","module_47243::$s"],["templateMap","map",""]],"module_47243::pu":[["(匿名#1)","i32",""]],"module_47243::qh":[["(匿名#1)","i32",""]],"module_47243::qu":[["keys","map, i32>","module_88693::ut"]],"module_47243::ra":[["(匿名#1)","i32",""]],"module_47243::rh":[["(匿名#1)","i32",""],["itemName","string",""],["preview","opt",""]],"module_47243::rs":[["clientId","string",""],["components","list",""],["jsSdkUrl","string",""],["presentationMode","string",""]],"module_47243::se":[["battlePassPackages","list","module_47243::ie"],["challenges","list","module_47243::ce"],["challengesVersions","list",""]],"module_47243::sh":[["buttonKit","pv",""],["buttonKitOver","pv",""]],"module_47243::tc":[["description","string",""],["(匿名#2)","i64",""],["name","string",""]],"module_47243::te":[["battlePasses","list>","module_85196::o_"]],"module_47243::th":[["itemInfos","list","module_47243::rh"],["name","string",""],["showDetails","bool",""]],"module_47243::u_":[["hideReferralCategory","bool",""],["hideReferrerCategory","bool",""],["hidedAnnounce","opt",""],["promoCodeDialogBackGround","opt",""],["promoCodeDialogImage","opt",""],["(匿名#6)","i64",""],["(匿名#7)","i32",""],["(匿名#8)","i64",""],["referrerPanelTitle","string",""]],"module_47243::uc":[["(匿名#1)","i64",""],["name","string",""],["(匿名#3)","i32",""],["(匿名#4)","i32",""],["(匿名#5)","i32",""],["(匿名#6)","i32",""],["(匿名#7)","i32",""],["specialtyImage","Gf",""],["specialtyName","string",""],["video","opt",""]],"module_47243::us":[["appAccountToken","opt",""]],"module_47243::uu":[["category","enum","module_85667::vu"],["(匿名#2)","i64",""],["item","i64",""],["itemViewCategory","enum","module_85667::pu"],["(匿名#5)","i32",""],["mounted","bool",""],["name","string",""],["(匿名#8)","i32",""],["premiumItem","bool",""],["preview","pv",""],["shortName","string",""]],"module_47243::ve":[["battlePassItem","opt","module_47243::ge"],["freeItem","opt","module_47243::ge"],["(匿名#3)","i32",""]],"module_47243::wu":[["rankIndexToMinGS","map",""]],"module_47243::xs":[["(匿名#1)","i32",""],["name","string",""]],"module_47243::y_":[["(匿名#1)","i32",""]],"module_47243::ye":[["stars","map, i32>","module_85196::o_"]],"module_47243::za":[["height","opt",""],["image","pv",""],["(匿名#3)","i32",""],["(匿名#4)","i32",""]],"module_47243::zh":[["currencyId","string",""],["currencyName","string",""],["preview","opt",""],["(匿名#4)","f64",""],["(匿名#5)","i32",""]],"module_47243::zr":[["(匿名#1)","i32",""]],"module_47243::zs":[["(匿名#1)","i32",""]],"module_54199::$t":[["battleIdHex","string",""],["battleMode","string",""],["battleName","string",""],["link","opt",""]],"module_54199::At":[["addressMode","enum","module_54199::K"],["battleLinks","list","module_54199::$t"],["channel","opt",""],["(匿名#4)","i64",""],["links","opt>",""],["messageType","enum","module_54199::Rt"],["sourceUser","opt","module_54199::Mt"],["targetUser","opt","module_54199::Mt"],["text","string",""],["(匿名#10)","i32",""]],"module_54199::K":[["(匿名#1)","i32",""]],"module_54199::Mt":[["chatModeratorLevel","enum","module_88693::lt"],["ip","string",""],["(匿名#3)","i32",""],["uid","string",""],["(匿名#5)","i64",""]],"module_54199::Rt":[["(匿名#1)","i32",""]],"module_54199::V":[["name","string",""],["sid","string",""]],"module_54199::dt":[["(匿名#1)","i32",""],["description","string",""],["(匿名#3)","i32",""],["header","string",""],["(匿名#5)","i64",""],["imageUrl","string",""]],"module_54199::ft":[["inClan","bool",""],["selfName","string",""]],"module_54199::ht":[["tag","string",""],["text","string",""],["url","string",""]],"module_54199::mt":[["newsItems","list","module_54199::dt"]],"module_54199::st":[["admin","bool",""],["antifloodEnabled","bool",""],["(匿名#3)","i32",""],["channels","list","module_54199::V"],["chatEnabled","bool",""],["chatModeratorLevel","enum","module_88693::lt"],["hashTags","list","module_54199::ht"],["linksWhiteList","list",""],["(匿名#9)","i32",""],["(匿名#10)","i32",""],["privateMessagesEnabled","bool",""],["selfName","string",""],["showLinks","bool",""],["typingSpeedAntifloodEnabled","bool",""]],"module_61860::fi":[["(匿名#1)","f32",""],["(匿名#2)","f32",""],["(匿名#3)","f32",""]],"module_67222::B":[["canOpenExternalLinks","bool",""],["failedRedirectUrl","string",""],["hasAccountBinding","bool",""],["hasClientPaymentAction","bool",""],["hasOwnPaymentSystem","bool",""],["hasSocialFunction","bool",""]],"module_85183::$c":[["clearUnViewedElements","bool",""]],"module_85183::$e":[["active","bool",""],["(匿名#2)","i32",""],["name","string",""],["position","Lt",""],["(匿名#5)","f32",""],["(匿名#6)","f32",""],["state","enum","module_85183::je"],["tankIds","list",""]],"module_85183::$l":[["(匿名#1)","f32",""],["(匿名#2)","f32",""],["color","string",""],["(匿名#4)","f32",""],["(匿名#5)","f32",""],["(匿名#6)","i32",""],["(匿名#7)","f32",""]],"module_85183::$y":[["activationSound","Ea",""],["(匿名#2)","f32",""],["(匿名#3)","f32",""],["(匿名#4)","f32",""],["wave","nh",""],["(匿名#6)","f64",""]],"module_85183::Aa":[["(匿名#1)","i32",""],["(匿名#2)","i64",""]],"module_85183::Ab":[["critical","bool",""],["(匿名#2)","f32",""],["damageIndicatorType","enum","module_85183::xb"],["debugInfo","opt",""],["fatal","bool",""],["target","i64",""]],"module_85183::As":[["(匿名#1)","i32",""]],"module_85183::Au":[["flags","list","module_85183::xs"],["teamPoints","list","module_85183::Eu"]],"module_85183::Bo":[["(匿名#1)","i32",""]],"module_85183::Cl":[["effects","list","module_85183::zl"]],"module_85183::Cs":[["(匿名#1)","i32",""],["falling","bool",""],["points","list","module_85183::Is"]],"module_85183::Cy":[["effectEnabled","bool",""],["effectStartSound","Ea",""],["ring","nh",""],["sonarSound","Ea",""]],"module_85183::D_":[["(匿名#1)","i32",""],["position","Lt",""],["(匿名#3)","i32",""]],"module_85183::Df":[["barrelAnimatedSmokeTexture","B_",""],["barrelFireTexture","nh",""],["barrelFlameTexture","nh",""],["barrelStaticSmokeTexture","nh",""],["crumbsTexture","opt",""],["dustTexture","opt",""],["explosionMarkTexture","nh",""],["(匿名#8)","i16",""],["explosionSound","Ea",""],["explosionTexture","B_",""],["lightingSFXEntity","LightingSFXEntity","module_85183::Cl"],["particleSFXEntity","opt","module_85183::Rl"],["ricochetSound1","Ea",""],["ricochetSound2","Ea",""],["ricochetSound3","Ea",""],["ricochetSound4","Ea",""],["ricochetSound5","Ea",""],["ricochetTexture","opt",""],["shell","Da",""],["shellFlightSound","Ea",""],["shellTexture","nh",""],["shellTracerTexture","nh",""],["shotSound","Ea",""]],"module_85183::Dh":[["name","string",""],["(匿名#2)","i32",""]],"module_85183::Dm":[["(匿名#1)","f32",""],["charged","bool",""],["enabled","bool",""]],"module_85183::Dp":[["(匿名#1)","f32",""],["(匿名#2)","i32",""],["(匿名#3)","f32",""],["(匿名#4)","f32",""],["(匿名#5)","i32",""],["(匿名#6)","f32",""],["(匿名#7)","f32",""]],"module_85183::E_":[["enabled","bool",""]],"module_85183::Em":[["color","string",""],["(匿名#2)","f32",""]],"module_85183::Er":[["groundPosition","Lt",""],["(匿名#2)","i32",""],["(匿名#3)","i32",""],["upperPosition","Lt",""]],"module_85183::Eu":[["flagBasePosition","Lt",""],["(匿名#2)","i32",""],["teamType","enum","module_31908::Bn"]],"module_85183::Ev":[["(匿名#1)","f32",""],["(匿名#2)","i32",""],["horizontalAssistEnabled","bool",""]],"module_85183::Fb":[["resistanceInPercent","i8",""],["resistanceProperty","enum","module_85196::Bs"]],"module_85183::Gc":[["rankUpSound","Ea",""]],"module_85183::Gm":[["activationSound","opt",""],["(匿名#2)","i32",""],["interruptionSound","opt",""],["lightingSFXEntity","opt","module_85183::Cl"],["particleEffects","opt","module_85183::Rl"]],"module_85183::Go":[["sound","Ea",""],["sprite","nh",""]],"module_85183::Gr":[["(匿名#1)","f32",""],["craterDecal","opt",""],["currentMeteors","list","module_85183::Er"],["(匿名#4)","f32",""],["(匿名#5)","i32",""],["meteorArrivingSound","opt",""],["meteorDistantSound","opt",""],["(匿名#8)","f32",""],["meteorModel","opt",""],["(匿名#10)","f32",""],["nuclearBangFlame","opt",""],["nuclearBangLight","opt",""],["nuclearBangSmoke","opt",""],["nuclearBangSound","opt",""],["nuclearBangWave","opt",""],["(匿名#16)","f32",""],["(匿名#17)","f32",""],["(匿名#18)","f32",""],["(匿名#19)","f32",""],["(匿名#20)","f32",""],["tailFlame","opt",""],["tailLight","list","module_85183::$l"],["tailSmoke","opt",""]],"module_85183::Ha":[["daOffSound","Ea",""],["daOnSound","Ea",""],["ddOffSound","Ea",""],["ddOnSound","Ea",""],["healingSound","Ea",""],["nitroOffSound","Ea",""],["nitroOnSound","Ea",""],["notReadySound","Ea",""],["readySound","Ea",""]],"module_85183::Hb":[["resistances","list","module_85183::Fb"]],"module_85183::Hc":[["(匿名#1)","i32",""]],"module_85183::Hh":[["battleModerationMode","bool",""],["battleUrlTemplate","string",""],["eventOrganizerPermissions","bool",""],["moderationMode","bool",""],["userCarmaUrlTemplate","string",""]],"module_85183::Hk":[["blueCell","opt",""],["blueRay","opt",""],["blueRayTip","opt",""],["blueSimpleShield","opt",""],["blueSphere","opt",""],["cell","opt",""],["coveredTanksIds","list",""],["generatorActivationSound","Ea",""],["generatorDeactivationSound","Ea",""],["generatorLoopSound","Ea",""],["generatorTeam","enum","module_31908::Bn"],["geosphere","opt",""],["greenCell","opt",""],["greenRay","opt",""],["greenRayTip","opt",""],["greenSimpleShield","opt",""],["greenSphere","opt",""],["ray","nh",""],["rayTip","nh",""],["redCell","opt",""],["redRay","nh",""],["redRayTip","nh",""],["redSimpleShield","opt",""],["redSphere","B_",""],["shieldOffSound","Ea",""],["shieldOnSound","Ea",""],["simpleShield","opt",""],["sphere","B_",""],["(匿名#29)","f32",""]],"module_85183::Hw":[["crumbsTexture","opt",""],["dustTexture","opt",""],["explosionMarkTexture","nh",""],["(匿名#4)","i16",""],["explosionSound","Ea",""],["explosionTexture","B_",""],["flameTexture","nh",""],["lightingSFXEntity","LightingSFXEntity","module_85183::Cl"],["particleSFXEntity","opt","module_85183::Rl"],["readySound","Ea",""],["ricochetSound1","Ea",""],["ricochetSound2","Ea",""],["ricochetSound3","Ea",""],["ricochetSound4","Ea",""],["ricochetSound5","Ea",""],["ricochetTexture","opt",""],["shell","Da",""],["shellFlightSound","Ea",""],["shellTexture","nh",""],["shellTracerTexture","nh",""],["shotSound","Ea",""],["smokeTexture","B_",""],["streamTexture","nh",""]],"module_85183::Hy":[["activateSound","Ea",""],["negativeColorTransform","opt",""],["positiveColorTransform","opt",""],["sparkImage","nh",""]],"module_85183::Ia":[["(匿名#1)","i32",""],["(匿名#2)","i32",""]],"module_85183::Il":[["effect","qs",""],["name","string",""]],"module_85183::Io":[["position","Lt",""],["regionType","enum","module_85183::Bo"],["rotation","Lt",""]],"module_85183::Is":[["mode","enum","module_85183::Rs"],["position","Lt",""],["(匿名#3)","f64",""],["(匿名#4)","f64",""],["(匿名#5)","f64",""],["(匿名#6)","f64",""],["(匿名#7)","i32",""]],"module_85183::Jc":[["engineIdleSound","Ea",""],["engineMovingSound","Ea",""],["engineStartMovingSound","Ea",""],["engineStartSound","opt",""],["engineStopMovingSound","opt",""]],"module_85183::Jg":[["chainStartSound","Ea",""],["crumbsTexture","opt",""],["dustTexture","opt",""],["fireAcrossTexture","B_",""],["fireAlongTexture","B_",""],["lightingSFXEntity","LightingSFXEntity","module_85183::Cl"],["longFailSound","Ea",""],["particleSFXEntity","opt","module_85183::Rl"],["ricochetSound1","Ea",""],["ricochetSound2","Ea",""],["ricochetSound3","Ea",""],["ricochetSound4","Ea",""],["ricochetSound5","Ea",""],["ricochetTexture","opt",""],["shellFlightSound1","Ea",""],["shellFlightSound2","Ea",""],["shellFlightSound3","Ea",""],["shellFlightSound4","Ea",""],["shellFlightSound5","Ea",""],["shootEndSound","Ea",""],["shootSound1","Ea",""],["shootSound2","Ea",""],["shootSound3","Ea",""],["shootSound4","Ea",""],["shootSound5","Ea",""],["smokeTexture","B_",""],["sparklesTexture","opt",""],["staticHitSound1","Ea",""],["staticHitSound2","Ea",""],["staticHitSound3","Ea",""],["staticHitSound4","Ea",""],["staticHitSound5","Ea",""],["tankHitSound1","Ea",""],["tankHitSound2","Ea",""],["tankHitSound3","Ea",""],["tankHitSound4","Ea",""],["tankHitSound5","Ea",""],["tankSparklesTexture","opt",""],["tracerTexture","opt",""]],"module_85183::Kb":[["(匿名#1)","i32",""]],"module_85183::Kd":[["(匿名#1)","i32",""],["chargingSound","Ea",""],["(匿名#3)","i32",""],["explosionTexture","B_",""],["flameSmokeTexture","nh",""],["flameTexture","opt",""],["lightingSFXEntity","LightingSFXEntity","module_85183::Cl"],["(匿名#8)","f32",""],["(匿名#9)","f32",""],["particleEffects","opt","module_85183::Rl"],["preHitSound","Ea",""],["reloadingCompleteSound","Ea",""],["reloadingSound","Ea",""],["(匿名#14)","i32",""],["(匿名#15)","i32",""],["staticHitSound","Ea",""],["tankHitSound","Ea",""]],"module_85183::Ki":[["droneId","opt",""],["(匿名#2)","i64",""],["(匿名#3)","i32",""],["levelEnterInfoMessage","opt",""],["levelEnterInfoMessageThreshold","opt",""],["levelEnterMessage","opt",""],["levelPrepareMessage","opt",""],["(匿名#8)","i64",""]],"module_85183::Kl":[["chargingPart1","nh",""],["chargingPart2","nh",""],["chargingPart3","nh",""],["hitMarkTexture","nh",""],["lightingSFXEntity","LightingSFXEntity","module_85183::Cl"],["powTexture","B_",""],["ringsTexture","B_",""],["shotParticleEffect","opt","module_85183::Rl"],["shotPreparationParticleEffect","opt","module_85183::Rl"],["shotSound","Ea",""],["smokeImage","nh",""],["sphereTexture","B_",""],["trailImage","nh",""]],"module_85183::Ku":[["blueFlagAndPedestalTexture","opt",""],["blueFlagPedestalModel","opt",""],["bluePointBigMarker","opt",""],["bluePointSmallMarker","opt",""],["flagModel","opt",""],["flagSprite","opt",""],["greenFlagAndPedestalTexture","opt",""],["newPedestalModel","opt",""],["pointResources","PointResources","module_85183::au"],["redFlagAndPedestalTexture","opt",""],["redFlagPedestalModel","opt",""],["redPointBigMarker","opt",""],["redPointSmallMarker","opt",""],["sounds","AssaultSoundFX","module_85183::Qu"]],"module_85183::Lb":[["active","bool",""]],"module_85183::Li":[["levels","list","module_85183::Ki"],["newLevelEnemySound","opt",""],["newLevelSound","opt",""],["userProgress","list","module_85183::Ui"]],"module_85183::Lo":[["regionsData","list","module_85183::Io"]],"module_85183::Ly":[["stunned","bool",""]],"module_85183::Mb":[["enabled","bool",""]],"module_85183::Mo":[["bonusRegionResources","list","module_85183::Po"],["bonusRegions","list","module_85183::Io"]],"module_85183::Mp":[["hold","bool",""],["(匿名#2)","i32",""],["(匿名#3)","i32",""]],"module_85183::Mv":[["(匿名#1)","f32",""],["(匿名#2)","f32",""],["(匿名#3)","i32",""],["(匿名#4)","i32",""],["(匿名#5)","i32",""],["(匿名#6)","f32",""],["(匿名#7)","f32",""],["(匿名#8)","i32",""],["(匿名#9)","f32",""],["secondarySplashParams","SplashCC","module_85183::up"]],"module_85183::My":[["energy","nh",""],["hitSound","Ea",""],["lightning","nh",""],["(匿名#4)","f32",""]],"module_85183::N_":[["(匿名#1)","i32",""],["infinite","bool",""]],"module_85183::Nb":[["(匿名#1)","i64",""],["hullDeviceId","opt",""],["(匿名#3)","i64",""],["(匿名#4)","i64",""],["weaponDeviceId","opt",""],["(匿名#6)","i64",""]],"module_85183::Nc":[["criticalDeathSound","Ea",""],["deadColoring","nh",""],["deathSound","Ea",""],["lightingSFXEntity","LightingSFXEntity","module_85183::Cl"],["(匿名#5)","f32",""],["stunEffectTexture","nh",""],["stunSound","Ea",""],["ultimateHudIndicator","nh",""],["(匿名#9)","i32",""]],"module_85183::Nd":[["chargingSound","Ea",""],["explosionSound","Ea",""],["explosionTexture","B_",""],["farShotSound","Ea",""],["flameTexture","nh",""],["flyBySound","Ea",""],["lightingSFXEntity","LightingSFXEntity","module_85183::Cl"],["markTexture","nh",""],["particleEffects","opt","module_85183::Rl"],["reloadSound","Ea",""],["shot1Sound","Ea",""],["shot2Sound","Ea",""],["shot3Sound","Ea",""],["shot4Sound","Ea",""],["smokeTexture","B_",""],["streamTexture","nh",""],["trailTexture","opt",""]],"module_85183::Nm":[["(匿名#1)","f32",""],["(匿名#2)","f32",""],["battleMode","enum","module_31908::Rn"],["blueTeam","TeamLightColorParams","module_85183::Em"],["greenTeam","TeamLightColorParams","module_85183::Em"],["neutralTeam","TeamLightColorParams","module_85183::Em"],["redTeam","TeamLightColorParams","module_85183::Em"]],"module_85183::Np":[["healingMode","bool",""],["(匿名#2)","f32",""],["(匿名#3)","i32",""],["(匿名#4)","f32",""],["(匿名#5)","f32",""]],"module_85183::Nv":[["(匿名#1)","f32",""]],"module_85183::O_":[["(匿名#1)","i32",""]],"module_85183::Oh":[["(匿名#1)","i64",""],["battleModeName","string",""],["(匿名#3)","i64",""],["creatorName","opt",""],["(匿名#5)","i32",""],["customBattleName","opt",""],["mapName","string",""],["serverName","string",""],["(匿名#9)","i32",""],["suspiciousBattle","bool",""],["suspiciousByIpBattle","bool",""],["users","list","module_85183::tc"],["usersArchive","list","module_85183::zh"]],"module_85183::Pa":[["alternativeSlotItem","bool",""],["(匿名#2)","i32",""],["(匿名#3)","i32",""]],"module_85183::Pi":[["particleEffects","opt","module_85183::Rl"]],"module_85183::Po":[["dropZoneResource","nh",""],["regionType","enum","module_85183::Bo"]],"module_85183::Pv":[["(匿名#1)","f32",""]],"module_85183::Qb":[["(匿名#1)","i16",""],["local","bool",""],["logicState","enum","module_85183::tq"],["(匿名#4)","i32",""],["(匿名#5)","i32",""],["tankState","opt","module_85183::cq"],["team","enum","module_31908::Bn"]],"module_85183::Qo":[["notificationMessage","opt",""],["notificationMessageContainsUid","opt",""],["soundNotification","opt",""]],"module_85183::Qu":[["flagDropSound","Ea",""],["flagReturnSound","Ea",""],["flagTakeSound","Ea",""],["winSound","Ea",""]],"module_85183::Qw":[["closedSound","Ea",""],["openedSound","Ea",""],["primary","ScorpioPrimarySfxCC","module_85183::Hw"],["secondary","RocketLauncherSfxCC","module_85183::fm"],["servoSound","Ea",""],["thirdRocketHitSound","Ea",""],["thirdRocketShotSound","Ea",""]],"module_85183::R_":[["category","enum","module_85183::T_"],["(匿名#2)","i32",""],["tank","i64",""]],"module_85183::Rl":[["effects","list","module_85183::Il"]],"module_85183::Rp":[["(匿名#1)","f32",""],["explosionSound","Ea",""],["flightSound","Ea",""],["justCreated","bool",""],["lightingSFXEntity","opt","module_85183::Cl"],["particleEffects","opt","module_85183::Rl"],["positions","opt>",""],["shotSound","Ea",""],["simplifiedExplosionTexture","opt",""],["simplifiedProjectileResource","opt",""],["simplifiedShockWaveTexture","opt",""],["(匿名#12)","f32",""],["splashParams","SplashParams","module_85183::sp"],["(匿名#14)","i32",""]],"module_85183::Rs":[["(匿名#1)","i32",""]],"module_85183::Rv":[["(匿名#1)","i32",""],["buffed","bool",""],["(匿名#3)","f32",""],["(匿名#4)","f32",""],["(匿名#5)","f32",""],["(匿名#6)","f32",""],["turretRotationSound","Ea",""],["(匿名#8)","f32",""]],"module_85183::Ry":[["blueTankMarker","nh",""],["discoveredTanksIds","list",""],["(匿名#3)","f32",""],["(匿名#4)","f32",""],["neutralTankMarker","nh",""],["redTankMarker","nh",""]],"module_85183::S_":[["effects","list","module_85183::x_"]],"module_85183::Sc":[["(匿名#1)","f32",""],["(匿名#2)","f32",""],["(匿名#3)","f32",""],["(匿名#4)","f32",""],["(匿名#5)","f32",""],["(匿名#6)","f32",""],["(匿名#7)","f32",""],["(匿名#8)","f32",""],["(匿名#9)","f32",""],["(匿名#10)","f32",""]],"module_85183::Sm":[["lightModes","list","module_85183::Nm"]],"module_85183::So":[["(匿名#1)","f32",""],["bonuses","list","module_85183::xo"]],"module_85183::Sv":[["(匿名#1)","f32",""],["(匿名#2)","f32",""],["(匿名#3)","i32",""],["(匿名#4)","f32",""],["(匿名#5)","f32",""],["particle","opt",""],["(匿名#7)","f32",""]],"module_85183::T_":[["(匿名#1)","i32",""]],"module_85183::Ta":[["(匿名#1)","i32",""],["hitSound1","Ea",""],["hitSound2","Ea",""],["hitSound3","Ea",""],["lightning","nh",""]],"module_85183::Tv":[["(匿名#1)","f32",""],["(匿名#2)","f32",""]],"module_85183::Uc":[["crackTexture","opt",""],["explosionTexture","B_",""],["particleEffects","opt","module_85183::Rl"],["shockWaveTexture","B_",""],["smokeTexture","B_",""]],"module_85183::Ue":[["bigLetters","opt",""],["bigLettersTexture","opt",""],["blueCircle","opt",""],["blueCircleTexture","opt",""],["blueRay","opt",""],["blueRayTip","opt",""],["greenCircle","opt",""],["greenRay","opt",""],["greenRayTip","opt",""],["neutralCircle","opt",""],["neutralCircleTexture","opt",""],["pointResources","PointResources","module_85183::au"],["redCircle","opt",""],["redCircleTexture","opt",""],["redRay","nh",""],["redRayTip","nh",""]],"module_85183::Ui":[["(匿名#1)","i32",""],["(匿名#2)","i64",""],["user","i64",""]],"module_85183::Vb":[["(匿名#1)","f32",""],["(匿名#2)","f32",""],["(匿名#3)","f32",""],["(匿名#4)","f32",""],["(匿名#5)","f32",""],["(匿名#6)","f32",""],["(匿名#7)","f32",""],["(匿名#8)","f32",""],["(匿名#9)","f32",""],["(匿名#10)","f32",""],["(匿名#11)","f32",""],["(匿名#12)","f32",""],["(匿名#13)","f32",""]],"module_85183::Vr":[["activated","bool",""],["(匿名#2)","i32",""],["(匿名#3)","i64",""],["position","Lt",""]],"module_85183::Vs":[["(匿名#1)","f32",""],["ballModel","Da",""],["(匿名#3)","f32",""],["ballSpawnZone","nh",""],["bigBlueBallMarker","opt",""],["bigGreenBallMarker","opt",""],["bigRedBallMarker","opt",""],["blueBallMarker","opt",""],["blueGoalModel","opt",""],["greenBallMarker","opt",""],["greenGoalModel","opt",""],["redBallMarker","opt",""],["redGoalModel","Da",""],["sounds","RugbySoundFX","module_85183::no"]],"module_85183::Wb":[["(匿名#1)","i16",""]],"module_85183::Wm":[["(匿名#1)","f32",""],["shotSound","Ea",""]],"module_85183::Y_":[["activatedGrenades","list","module_85183::D_"],["activationTriggers","list>","module_85183::ha"],["(匿名#3)","f32",""],["canAimGrenade","bool",""],["canDispel","bool",""],["damageTriggers","list>","module_85183::ha"],["(匿名#7)","i32",""],["(匿名#8)","f32",""],["(匿名#9)","f32",""],["(匿名#10)","i32",""],["(匿名#11)","f32",""],["(匿名#12)","i32",""],["(匿名#13)","f32",""],["(匿名#14)","f32",""],["(匿名#15)","f32",""],["needRespawn","bool",""],["(匿名#17)","f32",""],["(匿名#18)","i32",""],["(匿名#19)","i32",""],["removeAfterActivation","bool",""],["(匿名#21)","f32",""],["(匿名#22)","f32",""],["(匿名#23)","f32",""],["(匿名#24)","f32",""],["(匿名#25)","f32",""],["supplyIsAvailable","bool",""],["supplyIsUnlimited","bool",""]],"module_85183::Yo":[["box","Da",""],["dropSoundResource","Ea",""],["pickupSoundResource","Ea",""],["spawnSoundResource","Ea",""]],"module_85183::Zc":[["(匿名#1)","i32",""]],"module_85183::Zd":[["orientation","Lt",""],["position","Lt",""],["target","i64",""],["(匿名#4)","f32",""]],"module_85183::Zg":[["(匿名#1)","i32",""],["(匿名#2)","f32",""],["(匿名#3)","f32",""],["(匿名#4)","f32",""],["(匿名#5)","f32",""],["(匿名#6)","i32",""],["(匿名#7)","i32",""],["(匿名#8)","i32",""],["(匿名#9)","i32",""],["(匿名#10)","f32",""],["(匿名#11)","f32",""],["(匿名#12)","i32",""]],"module_85183::Zk":[["effectEnabled","bool",""],["effectEndSound","Ea",""],["effectSound","Ea",""],["effectStartSound","Ea",""],["flame","nh",""],["smoke","nh",""]],"module_85183::_c":[["(匿名#1)","f32",""],["(匿名#2)","f32",""]],"module_85183::_e":[["battleStartMessage","opt",""],["battleStartSound","opt",""]],"module_85183::_h":[["(匿名#1)","f32",""],["(匿名#2)","f32",""],["(匿名#3)","f32",""],["(匿名#4)","f32",""],["dustParticle","B_",""],["(匿名#6)","f32",""]],"module_85183::_o":[["effectDescriptions","list","module_85183::fo"]],"module_85183::a_":[["explosionTexture","B_",""]],"module_85183::ab":[["bombBeepSound","Ea",""],["bombPlacedSound","Ea",""],["countdown","B_",""],["craterDecal","nh",""],["farCountdown","B_",""],["nuclearBangFlame","nh",""],["nuclearBangLight","nh",""],["nuclearBangSmoke","nh",""],["nuclearBangSound","Ea",""],["nuclearBangWave","nh",""],["(匿名#11)","i32",""]],"module_85183::ad":[["crumbsTexture","nh",""],["dustTexture","B_",""],["explosionMarkTexture","nh",""],["(匿名#4)","i16",""],["explosionSound","Ea",""],["explosionTexture","B_",""],["flightSound","Ea",""],["lightingSFXEntity","LightingSFXEntity","module_85183::Cl"],["particleEffects","ParticleEffectsEntity","module_85183::Rl"],["reloadSound","Ea",""],["ricochetSound1","Ea",""],["ricochetSound2","Ea",""],["ricochetSound3","Ea",""],["ricochetSound4","Ea",""],["ricochetSound5","Ea",""],["ricochetTexture","B_",""],["shell","Da",""],["shellTexture","nh",""],["shellTracerTexture","nh",""],["shotSound1","Ea",""],["shotSound2","Ea",""],["shotSoundAfter1","Ea",""],["shotSoundAfter2","Ea",""],["shotSoundLastAfter","Ea",""]],"module_85183::ah":[["(匿名#1)","f32",""],["(匿名#2)","f32",""],["(匿名#3)","i32",""],["(匿名#4)","f32",""],["(匿名#5)","i32",""]],"module_85183::ar":[["active","bool",""],["battleDebug","bool",""],["battleOptions","list>","module_31908::Fn"],["battlefieldSounds","BattlefieldSounds","module_85183::ce"],["(匿名#5)","f32",""],["customBattleName","opt",""],["(匿名#7)","i32",""],["formatName","opt",""],["(匿名#9)","i32",""],["map","i64",""],["matchmakingMark","bool",""],["(匿名#12)","i16",""],["mineExplosionLighting","LightingSFXEntity","module_85183::Cl"],["parkourMode","bool",""],["proBattle","bool",""],["range","Range","module_31908::Dn"],["(匿名#17)","i32",""],["(匿名#18)","i32",""],["(匿名#19)","f32",""],["showAddressLink","bool",""],["spectator","bool",""],["(匿名#22)","i32",""]],"module_85183::au":[["bluePedestalTexture","nh",""],["greenPedestalTexture","nh",""],["neutralPedestalTexture","nh",""],["pedestal","Da",""],["ray","nh",""],["rayTip","B_",""],["redPedestalTexture","nh",""],["upperDevice","Da",""]],"module_85183::ay":[["damageSound","Ea",""],["endPosition","opt",""],["explosionSound","Ea",""],["flightSound","Ea",""],["healSound","Ea",""],["(匿名#6)","f32",""],["lightningTexture","opt",""],["noiseTexture","opt",""],["particleEffects","opt","module_85183::Rl"],["position","opt",""],["simplifiedDamageHitTexture","opt",""],["simplifiedExplosionTexture","opt",""],["simplifiedHealHitTexture","opt",""],["simplifiedLightingSFXEntity","opt","module_85183::Cl"],["simplifiedProjectileResource","opt",""],["simplifiedShockWaveTexture","opt",""],["(匿名#17)","f32",""],["splashParams","SplashParams","module_85183::sp"]],"module_85183::b_":[["beam","nh",""],["star","nh",""]],"module_85183::bc":[["activationText","string",""],["body","string",""],["(匿名#3)","i32",""],["(匿名#4)","i32",""],["(匿名#5)","i32",""],["title","string",""],["type","enum","module_85183::jc"],["video","opt",""]],"module_85183::bl":[["damagingBall","B_",""],["damagingRay","nh",""],["damagingSound","Ea",""],["healingBall","B_",""],["healingRay","nh",""],["healingSound","Ea",""],["idleSound","Ea",""],["lightingSFXEntity","LightingSFXEntity","module_85183::Cl"]],"module_85183::bp":[["(匿名#1)","i32",""]],"module_85183::bw":[["(匿名#1)","f32",""],["(匿名#2)","i32",""],["(匿名#3)","f32",""],["(匿名#4)","f32",""],["(匿名#5)","i32",""],["(匿名#6)","f32",""],["(匿名#7)","f32",""],["(匿名#8)","f32",""],["(匿名#9)","f32",""],["(匿名#10)","f32",""],["(匿名#11)","i32",""],["(匿名#12)","f32",""],["(匿名#13)","f32",""],["(匿名#14)","i32",""],["(匿名#15)","i32",""],["(匿名#16)","i32",""],["(匿名#17)","f32",""],["(匿名#18)","f32",""],["(匿名#19)","f32",""],["(匿名#20)","f32",""],["(匿名#21)","f32",""],["(匿名#22)","f32",""],["(匿名#23)","f32",""],["(匿名#24)","f32",""],["(匿名#25)","i32",""],["(匿名#26)","i32",""],["(匿名#27)","f32",""],["(匿名#28)","f32",""],["(匿名#29)","f32",""],["(匿名#30)","f32",""],["(匿名#31)","i32",""],["(匿名#32)","f32",""]],"module_85183::c_":[["allowed","bool",""]],"module_85183::cb":[["(匿名#1)","i32",""],["(匿名#2)","i32",""],["rechargeSound","Ea",""]],"module_85183::cd":[["turretState","TurretStateCommand","module_85183::eq"]],"module_85183::ce":[["battleFinishSound","Ea",""],["killSound","Ea",""]],"module_85183::cg":[["(匿名#1)","f32",""],["(匿名#2)","i32",""],["(匿名#3)","f32",""],["(匿名#4)","i32",""],["(匿名#5)","f32",""],["(匿名#6)","f32",""],["(匿名#7)","i32",""],["(匿名#8)","i32",""],["(匿名#9)","f32",""],["started","bool",""],["(匿名#11)","f32",""],["(匿名#12)","i32",""],["(匿名#13)","f32",""]],"module_85183::cq":[["angularVelocity","Lt",""],["linearVelocity","Lt",""],["orientation","Lt",""],["position","Lt",""]],"module_85183::cr":[["defaultBillboardImage","nh",""]],"module_85183::cw":[["antennaDownSound","Ea",""],["antennaUpSound","Ea",""],["electroTexture","nh",""],["explosionElectroTexture","B_",""],["explosionTexture","B_",""],["fireTexture","nh",""],["flameTexture","nh",""],["hitMarkerTexture","nh",""],["lightingSFXEntity","LightingSFXEntity","module_85183::Cl"],["lightningTexture","nh",""],["powerShotFarSound1","Ea",""],["powerShotFarSound2","Ea",""],["powerShotFarSound3","Ea",""],["primaryHitSound","Ea",""],["primaryShellFlightSound","Ea",""],["primaryShotSound","Ea",""],["secondaryHitSound","Ea",""],["secondaryShotSound","Ea",""],["shell","Da",""],["shellTexture","nh",""],["smokeTexture","nh",""],["startAimingSound","Ea",""],["targetLockSound","Ea",""],["targetLostSound","Ea",""],["tracerTexture","nh",""],["trailTexture","nh",""]],"module_85183::da":[["(匿名#1)","i32",""],["(匿名#2)","i32",""],["(匿名#3)","f32",""],["(匿名#4)","i32",""]],"module_85183::db":[["(匿名#1)","i64",""],["(匿名#2)","i64",""],["(匿名#3)","i64",""],["(匿名#4)","i64",""],["(匿名#5)","i64",""],["(匿名#6)","i64",""],["(匿名#7)","i64",""]],"module_85183::dh":[["back","nh",""],["bottom","nh",""],["front","nh",""],["left","nh",""],["right","nh",""],["top","nh",""]],"module_85183::dv":[["barrelFireTexture","nh",""],["barrelFlameTexture","nh",""],["barrelSmokeTexture","nh",""],["explosionMarkTexture","nh",""],["(匿名#5)","f32",""],["explosionSound","Ea",""],["explosionTexture","B_",""],["lightingSFXEntity","LightingSFXEntity","module_85183::Cl"],["shell","Da",""],["shellFlightSound","Ea",""],["shellTexture","nh",""],["shellTracerTexture","nh",""],["shotSound","Ea",""]],"module_85183::ep":[["(匿名#1)","f32",""],["(匿名#2)","i32",""],["(匿名#3)","f32",""],["(匿名#4)","i32",""],["(匿名#5)","f32",""],["(匿名#6)","f32",""],["(匿名#7)","f32",""]],"module_85183::eq":[["(匿名#1)","f32",""],["controlType","enum","module_85183::nq"],["(匿名#3)","f32",""],["rotationSpeedNumber","i8",""]],"module_85183::ev":[["lightingSFXEntity","opt","module_85183::Cl"],["lightning","opt",""],["noise","opt",""],["particleEffects","opt","module_85183::Rl"],["simplifiedLightning","opt",""],["teslaBallCharging","Ea",""],["teslaChainShot1","Ea",""],["teslaChainShot2","Ea",""],["teslaChainShot3","Ea",""],["teslaChainShot4","Ea",""],["teslaIdle1","Ea",""],["teslaIdle2","Ea",""],["teslaIdle3","Ea",""],["teslaIdle4","Ea",""],["teslaSimpleShot1","Ea",""],["teslaSimpleShot2","Ea",""],["teslaSimpleShot3","Ea",""],["teslaSimpleShot4","Ea",""]],"module_85183::f_":[["droneReady","bool",""],["(匿名#2)","f32",""],["(匿名#3)","i32",""]],"module_85183::fd":[["(匿名#1)","f32",""],["(匿名#2)","f32",""],["(匿名#3)","f32",""],["(匿名#4)","f32",""]],"module_85183::fl":[["buffedShardsTextureResource","nh",""],["lightingSFXEntity","LightingSFXEntity","module_85183::Cl"],["(匿名#3)","f32",""],["particleTextureResource","B_",""],["planeTextureResource","B_",""],["shotSoundResource","Ea",""]],"module_85183::fm":[["aimingCompleteSound","Ea",""],["aimingSound","Ea",""],["explosionMarkTexture","nh",""],["explosionTexture","B_",""],["leftHitSounds","Ea",""],["leftShotSounds","Ea",""],["lightingSFXEntity","LightingSFXEntity","module_85183::Cl"],["particleEffects","ParticleEffectsEntity","module_85183::Rl"],["rightHitSounds","Ea",""],["rightShotSounds","Ea",""],["rocketFlameTexture","nh",""],["rocketFlightSound","Ea",""],["rocketSmokeTexture","nh",""],["targetLostSound","Ea",""]],"module_85183::fo":[["blinkOnTimeOut","bool",""],["(匿名#2)","i64",""],["name","string",""],["positive","bool",""],["type","enum","module_85183::pc"]],"module_85183::fr":[["image","nh",""]],"module_85183::fw":[["(匿名#1)","i32",""],["(匿名#2)","f32",""],["(匿名#3)","f32",""],["(匿名#4)","i32",""],["(匿名#5)","f32",""],["(匿名#6)","f32",""],["(匿名#7)","f32",""],["(匿名#8)","f32",""],["(匿名#9)","f32",""],["vampiricMode","bool",""]],"module_85183::g_":[["damageModeSound","opt",""],["effects","opt","module_85183::Rl"],["protectionModeSound","opt",""],["speedModeSound","opt",""]],"module_85183::gd":[["control","i8",""],["(匿名#2)","f32",""]],"module_85183::ge":[["(匿名#1)","f32",""],["(匿名#2)","f32",""],["(匿名#3)","f32",""],["points","list","module_85183::$e"],["resources","DominationResources","module_85183::Ue"],["sounds","DominationSounds","module_85183::tu"]],"module_85183::gp":[["cascade","list","module_85183::kp"],["origin","TeslaTarget","module_85183::kp"]],"module_85183::ha":[["(匿名#1)","i32",""]],"module_85183::hh":[["(匿名#1)","f32",""],["(匿名#2)","i32",""],["(匿名#3)","f32",""],["(匿名#4)","f32",""]],"module_85183::hp":[["primaryCC","RailgunCC","module_85183::yw"],["secondaryCC","RocketLauncherCC","module_85183::Zg"],["(匿名#3)","f32",""]],"module_85183::ip":[["(匿名#1)","i32",""],["(匿名#2)","f32",""],["(匿名#3)","f32",""],["(匿名#4)","f32",""],["(匿名#5)","f32",""],["healingMode","bool",""],["(匿名#7)","f32",""],["(匿名#8)","f32",""],["(匿名#9)","f32",""],["(匿名#10)","f32",""],["(匿名#11)","f32",""],["reticleImage","nh",""],["(匿名#13)","f32",""],["(匿名#14)","f32",""],["(匿名#15)","f32",""],["(匿名#16)","f32",""],["(匿名#17)","f32",""],["(匿名#18)","f32",""],["(匿名#19)","i32",""],["(匿名#20)","f32",""]],"module_85183::jb":[["critMarkEnemy","Ea",""],["critMarkPlayer","Ea",""],["fragMarkEnemy","Ea",""],["hitMarkEnemy","Ea",""],["hitMarkPlayer","Ea",""]],"module_85183::jc":[["(匿名#1)","i32",""]],"module_85183::je":[["(匿名#1)","i32",""]],"module_85183::jm":[["explosionMarkTextures","list",""],["lightingSFXEntity","LightingSFXEntity","module_85183::Cl"],["magazineReloadSound","Ea",""],["pelletTrailTexture","nh",""],["reloadSound","Ea",""],["shotAcrossTexture","B_",""],["shotAlongTexture","B_",""],["shotSound","Ea",""],["smokeTexture","B_",""],["sparkleTexture","nh",""]],"module_85183::jr":[["facilityObject","Da",""],["facilityTeam","enum","module_31908::Bn"],["facilityTexture","nh",""],["localCenter","Lt",""],["(匿名#5)","i64",""],["position","Lt",""],["rotation","Lt",""],["useLight","bool",""],["useShadows","bool",""]],"module_85183::ko":[["blueBossHudMarker","opt",""],["bossKilledSound","Ea",""],["bossSpawnedSound","Ea",""],["currentBossTeamA","opt",""],["currentBossTeamB","opt",""],["redBossHudMarker","opt",""]],"module_85183::kp":[["(匿名#1)","i64",""],["(匿名#2)","i32",""],["position","Lt",""],["type","enum","module_85183::bp"]],"module_85183::ks":[["enemiesWinSound","opt",""],["flagDropSound","Ea",""],["flagDroppedByEnemiesSound","opt",""],["flagReturnSound","Ea",""],["flagReturnedByEnemiesSound","opt",""],["flagTakeSound","Ea",""],["flagTakenByEnemiesSound","opt",""],["winSound","Ea",""]],"module_85183::ku":[["bossHudMarker","opt",""],["bossKilledSound","Ea",""],["bossSpawnedSound","Ea",""],["currentBoss","opt",""]],"module_85183::kw":[["(匿名#1)","f32",""],["(匿名#2)","f32",""],["(匿名#3)","f32",""],["(匿名#4)","i32",""],["(匿名#5)","f32",""],["(匿名#6)","i32",""],["(匿名#7)","f32",""],["(匿名#8)","f32",""],["(匿名#9)","f32",""]],"module_85183::ky":[["activationSound","Ea",""],["beam","nh",""],["(匿名#3)","f64",""],["(匿名#4)","f64",""],["star","nh",""],["wave","nh",""],["(匿名#7)","f64",""]],"module_85183::lb":[["(匿名#1)","i32",""]],"module_85183::ld":[["(匿名#1)","f32",""],["(匿名#2)","i32",""],["(匿名#3)","f32",""],["(匿名#4)","f32",""]],"module_85183::ls":[["blueFlagAndPedestalTexture","opt",""],["blueFlagSprite","opt",""],["bluePedestalModel","opt",""],["flagModel","opt",""],["greenFlagAndPedestalTexture","opt",""],["greenFlagSprite","opt",""],["greenPedestalModel","opt",""],["newPedestalModel","opt",""],["redFlagAndPedestalTexture","opt",""],["redFlagSprite","opt",""],["redPedestalModel","opt",""],["sounds","CaptureTheFlagSoundFX","module_85183::ks"]],"module_85183::lu":[["commonBattleChatEnabled","bool",""],["teamBattleChatEnabled","bool",""]],"module_85183::m_":[["(匿名#1)","i32",""]],"module_85183::mb":[["(匿名#1)","i16",""],["criticalHitTexture","B_",""]],"module_85183::mw":[["(匿名#1)","i32",""],["laserPointerBlueColor","opt",""],["laserPointerGreenColor","opt",""],["laserPointerRedColor","string",""],["locallyVisible","bool",""]],"module_85183::n_":[["(匿名#1)","f32",""],["(匿名#2)","f32",""],["(匿名#3)","f32",""],["lightColor","string",""]],"module_85183::nh":[["cameraPoints","list","module_85183::uh"],["dustParams","DustParams","module_85183::_h"],["dynamicShadowParams","DynamicShadowParams","module_85183::ah"],["environmentSound","Ea",""],["fogParams","FogParams","module_85183::hh"],["(匿名#6)","f32",""],["mapResource","uo",""],["remaster","bool",""],["skyBoxRevolutionAxis","Lt",""],["(匿名#10)","f32",""],["skyboxSides","SkyboxSides","module_85183::dh"],["(匿名#12)","f32",""],["(匿名#13)","i32",""]],"module_85183::nl":[["(匿名#1)","f32",""],["(匿名#2)","i16",""],["(匿名#3)","f32",""],["(匿名#4)","i16",""],["(匿名#5)","f32",""],["(匿名#6)","i16",""],["(匿名#7)","f32",""],["(匿名#8)","i16",""],["(匿名#9)","f32",""]],"module_85183::no":[["ballDropNegativeSound","Ea",""],["ballDropPositiveSound","Ea",""],["ballFaceOffSound","Ea",""],["ballTakeNegativeSound","Ea",""],["ballTakePositiveSound","Ea",""],["goalNegativeSound","Ea",""],["goalPositiveSound","Ea",""]],"module_85183::nq":[["(匿名#1)","i32",""]],"module_85183::o_":[["(匿名#1)","f32",""],["(匿名#2)","f32",""],["(匿名#3)","f32",""],["(匿名#4)","f32",""],["(匿名#5)","f32",""],["(匿名#6)","f32",""],["(匿名#7)","f32",""],["(匿名#8)","f32",""]],"module_85183::oc":[["animatedColoring","opt",""],["coloring","opt",""],["cordTexture","nh",""],["droneEngineSound","Ea",""],["droneTakeoffSound","Ea",""],["(匿名#6)","i32",""],["parachute","list","module_85196::zs"]],"module_85183::ol":[["buffedFireSparksTexture","nh",""],["fireTexture","B_",""],["flameSound","Ea",""],["lightingSFXEntity","LightingSFXEntity","module_85183::Cl"],["muzzlePlaneTexture","B_",""]],"module_85183::op":[["(匿名#1)","i32",""],["(匿名#2)","f32",""],["(匿名#3)","f32",""],["(匿名#4)","f32",""],["(匿名#5)","f32",""]],"module_85183::pa":[["(匿名#1)","f32",""],["activationSound","opt",""],["(匿名#3)","f32",""],["decalTexture","opt",""],["lights","LightingSFXEntity","module_85183::Cl"],["particleSFXEntity","ParticleEffectsEntity","module_85183::Rl"],["(匿名#7)","f32",""],["shotSound","opt",""]],"module_85183::pb":[["enabled","bool",""],["(匿名#2)","i64",""],["local","bool",""],["role","enum","module_85183::lb"],["(匿名#5)","i64",""]],"module_85183::pc":[["(匿名#1)","i32",""]],"module_85183::pd":[["control","i8",""],["(匿名#2)","f32",""]],"module_85183::pf":[["explosionSound","Ea",""],["explosionTexture","B_",""],["hitMarkTexture","nh",""],["lightingSFXEntity","LightingSFXEntity","module_85183::Cl"],["muzzleFlashTexture","B_",""],["shotSound","Ea",""],["targetingSound","Ea",""],["trailTexture","nh",""],["zoomModeSound","Ea",""]],"module_85183::pk":[["superchargeEnabled","bool",""]],"module_85183::pr":[["(匿名#1)","f32",""],["(匿名#2)","f32",""]],"module_85183::pu":[["enabled","bool",""]],"module_85183::py":[["(匿名#1)","f32",""],["(匿名#2)","f32",""],["(匿名#3)","f32",""],["(匿名#4)","f32",""],["(匿名#5)","i32",""],["(匿名#6)","f32",""],["(匿名#7)","f32",""],["(匿名#8)","f32",""],["(匿名#9)","f32",""],["(匿名#10)","f32",""],["(匿名#11)","i32",""],["(匿名#12)","f32",""],["(匿名#13)","f32",""]],"module_85183::qa":[["(匿名#1)","i32",""],["endSound","Ea",""],["loopSound","Ea",""]],"module_85183::qo":[["firstPointPosition","Lt",""]],"module_85183::qu":[["items","list","module_85183::zu"]],"module_85183::rg":[["direction","Lt",""],["localHitPoint","Lt",""],["numberHits","i8",""],["target","i64",""]],"module_85183::rk":[["active","bool",""],["effectLoopSound","Ea",""],["(匿名#3)","f32",""],["effectSparks1Sound","Ea",""],["effectSparks2Sound","Ea",""],["effectSparks3Sound","Ea",""],["effectSparks4Sound","Ea",""],["effectStartSound","Ea",""],["effectStopSound","Ea",""],["heart","nh",""],["shine","nh",""],["sparkles","nh",""]],"module_85183::rp":[["(匿名#1)","i32",""]],"module_85183::s_":[["frostParamsHW","ColorAdjustParams","module_85183::o_"],["frostParamsSoft","ColorAdjustParams","module_85183::o_"],["heatParamsHW","ColorAdjustParams","module_85183::o_"],["heatParamsSoft","ColorAdjustParams","module_85183::o_"]],"module_85183::sa":[["allyBeepSound","Ea",""],["allyBounceSound","Ea",""],["allyLaunchSound","Ea",""],["(匿名#4)","i32",""],["dispelTexture","B_",""],["enemyBeepSound","Ea",""],["enemyBounceSound","Ea",""],["enemyLaunchSound","Ea",""],["followingRotation","bool",""],["lights","LightingSFXEntity","module_85183::Cl"],["particleSFXEntity","opt","module_85183::Rl"]],"module_85183::sf":[["bumpFlashTexture","B_",""],["explosionSound","Ea",""],["explosionTexture","B_",""],["lightingSFXEntity","LightingSFXEntity","module_85183::Cl"],["particleEffects","opt","module_85183::Rl"],["ricochetSound","Ea",""],["shotFlashTexture","nh",""],["shotSound","Ea",""],["shotTexture","B_",""],["tailTrailTexutre","nh",""]],"module_85183::sh":[["(匿名#1)","i32",""]],"module_85183::so":[["explosionSound","Ea",""],["explosionTexture","B_",""],["lightingSFXEntity","LightingSFXEntity","module_85183::Cl"],["smokeTextureId","B_",""]],"module_85183::sp":[["(匿名#1)","f32",""],["(匿名#2)","f32",""],["(匿名#3)","f32",""],["(匿名#4)","f32",""],["(匿名#5)","f32",""],["(匿名#6)","f32",""],["(匿名#7)","f32",""]],"module_85183::sq":[["(匿名#1)","i32",""]],"module_85183::tc":[["collectedBonuses","list","module_85183::Dh"],["(匿名#2)","i32",""],["informers","list",""],["(匿名#4)","i32",""],["online","bool",""],["(匿名#6)","i32",""],["(匿名#7)","i32",""],["suspicious","bool",""],["suspiciousByIp","bool",""],["uniqueMarker","string",""],["userIP","opt",""],["(匿名#12)","i64",""],["userName","string",""]],"module_85183::tl":[["colorTransforms","list","module_85183::nl"]],"module_85183::tq":[["(匿名#1)","i32",""]],"module_85183::tu":[["pointActivationSound","opt",""],["pointCaptureStartNegativeSound","Ea",""],["pointCaptureStartPositiveSound","Ea",""],["pointCaptureStopNegativeSound","Ea",""],["pointCaptureStopPositiveSound","Ea",""],["pointCapturedNegativeSound","Ea",""],["pointCapturedPositiveSound","Ea",""],["pointNeutralizedNegativeSound","Ea",""],["pointNeutralizedPositiveSound","Ea",""],["pointScoreDecreasingSound","Ea",""],["pointScoreIncreasingSound","Ea",""]],"module_85183::ue":[["activateSound","Ea",""],["(匿名#2)","i32",""],["blueMineTexture","nh",""],["deactivateSound","Ea",""],["enemyMineTexture","nh",""],["explosionMarkTexture","nh",""],["explosionSound","Ea",""],["(匿名#8)","f32",""],["friendlyMineTexture","nh",""],["idleExplosionTexture","B_",""],["(匿名#11)","f32",""],["mainExplosionTexture","B_",""],["(匿名#13)","f32",""],["model3ds","Da",""],["(匿名#15)","f32",""],["(匿名#16)","f32",""],["redMineTexture","nh",""]],"module_85183::uh":[["eulerAngles","Lt",""],["position","Lt",""],["types","list>","module_85183::sh"]],"module_85183::up":[["(匿名#1)","f32",""],["(匿名#2)","f32",""],["(匿名#3)","f32",""],["(匿名#4)","f32",""]],"module_85183::uq":[["(匿名#1)","i32",""],["(匿名#2)","i32",""]],"module_85183::vc":[["effects","list","module_85183::wc"]],"module_85183::vd":[["(匿名#1)","f32",""],["(匿名#2)","f32",""],["(匿名#3)","f32",""],["(匿名#4)","f32",""],["(匿名#5)","f32",""],["(匿名#6)","f32",""],["(匿名#7)","i32",""]],"module_85183::ve":[["(匿名#1)","f32",""],["(匿名#2)","f32",""],["(匿名#3)","f32",""],["killerTurretName","string",""],["(匿名#5)","f32",""],["(匿名#6)","f32",""],["(匿名#7)","f32",""],["targetHullName","string",""],["(匿名#9)","f32",""]],"module_85183::vk":[["auraLoopSound","Ea",""],["auraOffSound","Ea",""],["auraOnSound","Ea",""],["blueRay","nh",""],["blueRayTip","nh",""],["covered","list",""],["heart","nh",""],["redRay","nh",""],["redRayTip","nh",""],["shine","nh",""]],"module_85183::vm":[["(匿名#1)","f32",""],["(匿名#2)","f32",""],["(匿名#3)","i32",""]],"module_85183::vp":[["closedSound","Ea",""],["openedSound","Ea",""],["servoSound","Ea",""]],"module_85183::vu":[["ultimateEnabled","bool",""]],"module_85183::vw":[["(匿名#1)","i32",""]],"module_85183::wc":[["(匿名#1)","i32",""],["(匿名#2)","i64",""],["(匿名#3)","i32",""]],"module_85183::wp":[["(匿名#1)","f32",""],["(匿名#2)","f32",""],["(匿名#3)","f32",""],["(匿名#4)","f32",""],["(匿名#5)","f32",""],["(匿名#6)","f32",""],["(匿名#7)","i32",""],["(匿名#8)","i32",""],["(匿名#9)","f32",""],["(匿名#10)","i32",""],["(匿名#11)","i32",""]],"module_85183::wr":[["shouldMoveForward","bool",""]],"module_85183::wy":[["explosionSound","Ea",""],["flightSound","Ea",""],["model","Da",""],["particleEffects","ParticleEffectsEntity","module_85183::Rl"],["shellTexture","nh",""]],"module_85183::x_":[["beamTextures","opt","module_85183::b_"],["(匿名#2)","i32",""],["lightEffect","opt","module_85183::Cl"],["particleEffect","opt",""]],"module_85183::xa":[["activationSound","Ea",""],["(匿名#2)","i32",""],["(匿名#3)","f32",""],["effectResource","Da",""]],"module_85183::xb":[["(匿名#1)","i32",""]],"module_85183::xm":[["(匿名#1)","i32",""],["(匿名#2)","i32",""]],"module_85183::xo":[["battleBonusObject","i64",""],["(匿名#2)","i64",""],["(匿名#3)","i32",""],["spawnPosition","Lt",""]],"module_85183::xs":[["fallingData","ClientFlagFlyingData","module_85183::Cs"],["flagCarrierId","opt",""],["(匿名#3)","i32",""],["flagPosition","opt",""],["state","enum","module_85183::As"]],"module_85183::xv":[["explosionSound","opt",""],["explosionTexture","B_",""],["hitMarkTexture","nh",""],["lightingSFXEntity","LightingSFXEntity","module_85183::Cl"],["muzzleFlashTexture","nh",""],["particleEffects","opt","module_85183::Rl"],["shotSound","Ea",""],["shotTexture","B_",""]],"module_85183::ya":[["activationSound","Ea",""],["canAttachToAlly","bool",""],["(匿名#3)","f32",""]],"module_85183::yh":[["(匿名#1)","f32",""],["hwColorAdjust","ColorAdjustParams","module_85183::o_"],["softColorAdjust","ColorAdjustParams","module_85183::o_"]],"module_85183::yw":[["(匿名#1)","i32",""],["(匿名#2)","f32",""]],"module_85183::zb":[["(匿名#1)","i32",""],["(匿名#2)","f32",""],["(匿名#3)","i32",""],["(匿名#4)","i32",""],["(匿名#5)","f32",""],["(匿名#6)","f32",""],["(匿名#7)","f32",""],["(匿名#8)","i32",""],["(匿名#9)","f32",""],["(匿名#10)","i32",""]],"module_85183::zc":[["(匿名#1)","f32",""],["(匿名#2)","f32",""],["(匿名#3)","f32",""],["(匿名#4)","f32",""],["(匿名#5)","f32",""],["(匿名#6)","f32",""],["(匿名#7)","f32",""],["(匿名#8)","f32",""],["moveCameraRelative","bool",""],["(匿名#10)","f32",""],["(匿名#11)","f32",""],["(匿名#12)","f32",""],["(匿名#13)","f32",""],["(匿名#14)","f32",""],["(匿名#15)","f32",""],["(匿名#16)","f32",""],["(匿名#17)","f32",""],["(匿名#18)","f32",""],["(匿名#19)","f32",""]],"module_85183::zh":[["collectedBonuses","list","module_85183::Dh"],["(匿名#2)","i32",""],["(匿名#3)","i32",""],["informers","list",""],["(匿名#5)","i32",""],["(匿名#6)","i32",""],["(匿名#7)","i32",""],["suspicious","bool",""],["suspiciousByIp","bool",""],["userIP","opt",""],["(匿名#11)","i64",""],["userName","string",""]],"module_85183::zl":[["effectName","string",""],["items","list","module_85183::$l"]],"module_85183::zr":[["(匿名#1)","i32",""]],"module_85183::zu":[["(匿名#1)","i32",""],["messageToBoss","opt",""],["messageToVictims","string",""],["sound","opt",""]],"module_85196::$u":[["category","enum","module_85667::vu"]],"module_85196::As":[["resource","list","module_85196::zs"]],"module_85196::Bs":[["(匿名#1)","i32",""]],"module_85196::Du":[["(匿名#1)","i32",""],["hideIfCountEqualZero","bool",""]],"module_85196::Eo":[["(匿名#1)","i32",""],["itemData","UpgradeParamsData","module_85196::Mo"],["(匿名#3)","i32",""]],"module_85196::Eu":[["category","enum","module_85196::Tu"],["(匿名#2)","i32",""],["garageItemCategory","opt>","module_85667::pu"],["(匿名#4)","i64",""],["image","pv",""],["name","string",""],["rewardType","opt",""]],"module_85196::Fo":[["secret","bool",""],["visible","bool",""]],"module_85196::Fs":[["rarity","enum","module_85196::Gs"]],"module_85196::Fu":[["image","opt",""],["video","opt",""]],"module_85196::Gs":[["(匿名#1)","i32",""]],"module_85196::Ho":[["(匿名#1)","i32",""],["currency","enum","module_85667::Ve"]],"module_85196::Js":[["resistances","list>",""]],"module_85196::Ko":[["name","string",""],["price","AmountWithGameCurrency","module_85196::Ho"],["(匿名#3)","i32",""]],"module_85196::Lo":[["category","enum","module_85667::pu"]],"module_85196::Ls":[["properties","list","module_85196::Ms"]],"module_85196::Lu":[["(匿名#1)","i32",""]],"module_85196::Mo":[["(匿名#1)","i32",""],["(匿名#2)","i32",""],["(匿名#3)","i32",""],["(匿名#4)","i32",""],["properties","list","module_85196::Ro"],["(匿名#6)","i32",""]],"module_85196::Ms":[["property","enum<$o>","module_85667::wu"],["value","string",""]],"module_85196::No":[["(匿名#1)","f32",""],["(匿名#2)","f32",""],["property","enum","module_85196::Bs"]],"module_85196::Ou":[["category","opt>","module_85196::Tu"],["(匿名#2)","i32",""],["description","opt",""],["name","string",""],["preview","pv",""],["(匿名#6)","f32",""],["rewardType","opt",""]],"module_85196::Ps":[["premiumItem","bool",""]],"module_85196::Qs":[["imageBackground","opt",""]],"module_85196::Qu":[["(匿名#1)","i32",""]],"module_85196::Ro":[["(匿名#1)","i32",""],["properties","list","module_85196::No"],["property","enum<$o>","module_85667::wu"],["visibleInInfo","bool",""]],"module_85196::So":[["infinityLifetimeItem","bool",""],["(匿名#2)","i32",""],["(匿名#3)","i32",""]],"module_85196::Ss":[["(匿名#1)","i32",""]],"module_85196::Ts":[["(匿名#1)","i64",""],["modificationCount","i8",""],["modificationIndex","i8",""]],"module_85196::Tu":[["(匿名#1)","i32",""]],"module_85196::Vs":[["(匿名#1)","i32",""]],"module_85196::Vu":[["devicesAvailable","bool",""],["preview","opt",""],["sale","bool",""]],"module_85196::Ws":[["properties","list","module_85196::Ys"]],"module_85196::Xo":[["prices","list","module_85196::Ko"],["(匿名#2)","i32",""]],"module_85196::Ys":[["property","enum","module_85196::Vs"],["(匿名#2)","i32",""]],"module_85196::Yu":[["properties","list","module_85196::Zu"]],"module_85196::Zo":[["itemsId","list",""]],"module_85196::Zu":[["operation","enum","module_85196::Qu"],["property","enum","module_85196::Bs"],["(匿名#3)","f32",""]],"module_85196::__":[["(匿名#1)","i32",""]],"module_85196::_s":[["(匿名#1)","i32",""],["grouped","bool",""]],"module_85196::bs":[["items","list",""]],"module_85196::bu":[["buyable","bool",""],["currencyId","enum","module_85667::Ve"],["(匿名#3)","i32",""]],"module_85196::cu":[["availableForAll","bool",""]],"module_85196::d_":[["(匿名#1)","i32",""]],"module_85196::e_":[["banned","bool",""],["date","Pc",""],["(匿名#3)","i64",""],["present","i64",""],["presenter","i64",""],["text","string",""]],"module_85196::es":[["(匿名#1)","i32",""]],"module_85196::fu":[["passToShopEnabled","bool",""]],"module_85196::gs":[["availableForNonPartnerUsers","bool",""],["partnerId","string",""]],"module_85196::gu":[["(匿名#1)","f32",""],["(匿名#2)","f32",""],["(匿名#3)","f32",""],["(匿名#4)","f32",""],["garageBox","Da",""],["skyboxFrontSide","nh",""]],"module_85196::h_":[["engineType","enum","module_85196::__"]],"module_85196::hs":[["(匿名#1)","i32",""],["(匿名#2)","i32",""],["(匿名#3)","i32",""],["preview","pv",""]],"module_85196::io":[["muzzlePosition","Lt",""],["origin","Lt",""]],"module_85196::j_":[["skins","list",""]],"module_85196::js":[["(匿名#1)","i32",""],["item","i64",""],["mount","bool",""]],"module_85196::k_":[["skins","list",""]],"module_85196::m_":[["weaponType","enum","module_85196::d_"]],"module_85196::mo":[["detailedCollisionGeometry","opt",""],["visualLods","list",""]],"module_85196::mu":[["(匿名#1)","i32",""]],"module_85196::ns":[["(匿名#1)","f64",""]],"module_85196::o_":[["(匿名#1)","i32",""]],"module_85196::p_":[["resistanceModule","opt",""]],"module_85196::q_":[["item","i64",""]],"module_85196::rs":[["(匿名#1)","i32",""],["(匿名#2)","i32",""],["(匿名#3)","i32",""],["(匿名#4)","i32",""],["threshold","enum","module_85196::es"]],"module_85196::s_":[["presents","list","module_85196::e_"]],"module_85196::so":[["halfSize","Lt",""],["localTransform","list",""],["tag","opt",""]],"module_85196::ss":[["supplyId","opt",""]],"module_85196::ts":[["(匿名#1)","f32",""],["(匿名#2)","i32",""],["(匿名#3)","i32",""]],"module_85196::v_":[["description","opt",""],["icon","opt",""],["name","string",""]],"module_85196::vu":[["(匿名#1)","f32",""]],"module_85196::wo":[["bodySize","Lt",""],["(匿名#2)","f32",""],["mainCollisionBox","CollisionBox","module_85196::so"],["(匿名#4)","f32",""],["skinOffset","Lt",""],["staticCollisionBoxes","list","module_85196::so"],["trackAnchors","list",""],["trailAnchors","list",""],["turretMountPoint","Lt",""],["ultimatePoint","Lt",""]],"module_85196::ws":[["emissionColor","opt","module_85196::rs"],["(匿名#2)","i64",""],["(匿名#3)","f32",""],["resource","opt",""],["(匿名#5)","f32",""],["skinOffset","opt",""],["turretMountPoint","opt",""]],"module_85196::wu":[["(匿名#1)","i64",""]],"module_85196::xo":[["barrels","list","module_85196::io"],["boundsMax","Lt",""],["boundsMin","Lt",""],["collisionBoxes","list","module_85196::so"],["flagMountPoint","Lt",""],["laserPoint","Lt",""]],"module_85196::ys":[["kitItems","list","module_85196::js"]],"module_85196::z_":[["preview","opt",""]],"module_85196::zs":[["lodType","enum","module_85196::Ss"],["(匿名#2)","i64",""]],"module_85667::He":[["clientKey","string",""],["stateWithCaptcha","list>","module_85667::We"],["useFake","bool",""]],"module_85667::Ve":[["(匿名#1)","i32",""]],"module_85667::We":[["(匿名#1)","i32",""]],"module_85667::Ye":[["serverHaltTS","i64",""]],"module_85667::Ze":[["animatedColoring","opt",""],["coloring","opt",""]],"module_85667::du":[["(匿名#1)","i32",""]],"module_85667::lu":[["body","string",""],["extra","bool",""],["image","opt",""],["title","string",""],["video","opt",""]],"module_85667::nu":[["(匿名#1)","i32",""]],"module_85667::pu":[["(匿名#1)","i32",""]],"module_85667::ru":[["browserExtensionsToDetect","list",""]],"module_85667::su":[["(匿名#1)","i32",""]],"module_85667::uu":[["(匿名#1)","i32",""]],"module_85667::vu":[["(匿名#1)","i32",""]],"module_85667::wu":[["(匿名#1)","i32",""]],"module_88693::_t":[["(匿名#1)","i32",""],["(匿名#2)","i32",""],["enabled","bool",""],["helpdeskTicketsEnabled","bool",""]],"module_88693::ct":[["(匿名#1)","i32",""],["(匿名#2)","i32",""]],"module_88693::et":[["keyType","enum","module_88693::ut"]],"module_88693::ht":[["receiveBattleInvite","bool",""]],"module_88693::it":[["users","list",""]],"module_88693::lt":[["(匿名#1)","i32",""]],"module_88693::tt":[["(匿名#1)","i32",""],["(匿名#2)","i32",""],["local","bool",""],["(匿名#4)","i32",""]],"module_88693::ut":[["(匿名#1)","i32",""]],"module_89803::At":[["description","string",""],["formatId","string",""],["name","string",""],["optionsDefaults","list>","module_31908::Fn"],["optionsToShow","list>","module_31908::Fn"]],"module_89803::Gt":[["defaultTheme","enum","module_31908::Gn"],["enabled","bool",""],["(匿名#3)","i64",""],["mapName","string",""],["matchmakingMark","bool",""],["(匿名#6)","i16",""],["preview","pv",""],["rankLimit","Range","module_31908::Dn"],["supportedModes","list>","module_31908::Rn"],["theme","enum","module_31908::Gn"]],"module_89803::Pt":[["formats","list","module_89803::At"]],"module_89803::Qt":[["(匿名#1)","i32",""],["armorName","string",""],["(匿名#3)","i32",""],["(匿名#4)","i64",""],["leader","bool",""],["local","bool",""],["(匿名#7)","i32",""],["uid","string",""],["userIsReady","bool",""],["(匿名#10)","i32",""],["weaponName","string",""],["(匿名#12)","i32",""]],"module_89803::Wt":[["users","list","module_89803::Qt"]],"module_89803::_t":[["(匿名#1)","i32",""],["roundStarted","bool",""],["suspicionLevel","enum","module_31908::Ti"],["(匿名#4)","i32",""]],"module_89803::gn":[["borderColorForEventButton","opt",""],["disabledModes","list>","module_31908::Mn"],["eventBigTile","opt",""],["eventEndDate","opt",""],["groupsInEventMode","bool",""],["holidayDescription","opt",""],["holidayEnabled","bool",""],["holidayIcon","opt",""],["holidayTitle","opt",""],["matchmakingModeRanks","list","module_89803::un"],["(匿名#11)","i32",""],["(匿名#12)","i32",""]],"module_89803::gt":[["creatorId","i64",""],["map","i64",""],["parameters","BattleCreateParameters","module_31908::An"]],"module_89803::ht":[["users","list","module_89803::vt"]],"module_89803::kt":[["(匿名#1)","i32",""],["(匿名#2)","i32",""],["usersTeamA","list","module_89803::vt"],["usersTeamB","list","module_89803::vt"]],"module_89803::rn":[["(匿名#1)","i64",""],["itemCategory","enum","module_85667::vu"],["(匿名#3)","i32",""],["name","string",""],["(匿名#5)","i32",""]],"module_89803::un":[["matchmakingMode","enum","module_31908::Mn"],["(匿名#2)","i32",""]],"module_89803::vt":[["(匿名#1)","i64",""],["(匿名#2)","i32",""],["suspicious","bool",""],["suspiciousByIp","bool",""],["user","i64",""]],"module_89803::zt":[["battleCreationDisabled","bool",""],["battlesLimits","list","module_31908::Un"],["defaultMaps","list",""],["defaultRange","Range","module_31908::Dn"],["maxRange","Range","module_31908::Dn"],["(匿名#6)","i32",""],["(匿名#7)","i32",""]],"module_99527::D":[["isEnabled","bool",""],["isTimeless","bool",""],["(匿名#3)","i32",""],["(匿名#4)","i32",""]],"module_99527::N":[["description","opt",""],["name","opt",""]],"module_99527::W":[["(匿名#1)","i32",""]]},"UplinkByMethod":{"1079642233486876258":{"Name":"M_.fcn","Module":"module_85196","OwnerClass":"M_","SendFn":"fcn","Fields":[{"Order":1,"Slot":"ycm_1","Name":"","Type":"i64","TypeCodec":""}]},"1816792453857564692":{"Name":"G.q1wd","Module":"module_29554","OwnerClass":"G","SendFn":"q1wd","Fields":[{"Order":1,"Slot":"o1wd_1","Name":"","Type":"i32","TypeCodec":""}]},"2528403217084400809":{"Name":"ls.xbl","Module":"module_85667","OwnerClass":"ls","SendFn":"xbl","Fields":[]},"4428603232159847900":{"Name":"Qh.ycw","Module":"module_85196","OwnerClass":"Qh","SendFn":"ycw","Fields":[]},"4795202316771985007":{"Name":"M_.hcn","Module":"module_85196","OwnerClass":"M_","SendFn":"hcn","Fields":[{"Order":1,"Slot":"ccn_1","Name":"","Type":"i64","TypeCodec":""}]},"7806260029063678398":{"Name":"ba.lcr","Module":"module_85196","OwnerClass":"ba","SendFn":"lcr","Fields":[]},"8060894096836849355":{"Name":"ha.gcq","Module":"module_85196","OwnerClass":"ha","SendFn":"gcq","Fields":[{"Order":1,"Slot":"bcq_1","Name":"","Type":"i64","TypeCodec":""},{"Order":2,"Slot":"ccq_1","Name":"","Type":"i32","TypeCodec":""},{"Order":3,"Slot":"dcq_1","Name":"","Type":"i32","TypeCodec":""},{"Order":4,"Slot":"ecq_1","Name":"","Type":"enum","TypeCodec":"module_85667::Ve"}]}},"DownlinkByMethod":{"237130683810296524":{"Name":"Fn","Kind":"fields","Layout":"","Module":"module_10283","OwnerClass":"Fn","Fields":[{"Order":1,"Slot":"jh4_1","Name":"hash","Type":"string","TypeCodec":""}]},"761463638726320835":{"Name":"ki","Kind":"fields","Layout":"","Module":"module_10283","OwnerClass":"ki","Fields":[]},"1246109053620123806":{"Name":"oi","Kind":"fields","Layout":"","Module":"module_25377","OwnerClass":"oi","Fields":[{"Order":1,"Slot":"ddn_1","Name":"users","Type":"list","TypeCodec":"module_25377::Tt"}]},"1247179769701109529":{"Name":"ki","Kind":"fields","Layout":"","Module":"module_10283","OwnerClass":"ki","Fields":[{"Order":1,"Slot":"chc_1","Name":"advisedUids","Type":"list","TypeCodec":""}]},"1247179769701225356":{"Name":"ki","Kind":"fields","Layout":"","Module":"module_10283","OwnerClass":"ki","Fields":[]},"1936068342294351641":{"Name":"N_","Kind":"fields","Layout":"","Module":"module_85196","OwnerClass":"N_","Fields":[]},"2025886178375810581":{"Name":"gn","Kind":"fields","Layout":"","Module":"module_10283","OwnerClass":"gn","Fields":[{"Order":1,"Slot":"","Name":"","Type":"i64","TypeCodec":""}]},"2968780118652565413":{"Name":"Dm","Kind":"fields","Layout":"","Module":"module_47243","OwnerClass":"Dm","Fields":[{"Order":1,"Slot":"nft_1","Name":"questIds","Type":"list","TypeCodec":""},{"Order":2,"Slot":"oft_1","Name":"questCategoriesIds","Type":"list","TypeCodec":""},{"Order":3,"Slot":"pft_1","Name":"completedQuestIds","Type":"list","TypeCodec":""},{"Order":4,"Slot":"qft_1","Name":"completedQuestCategoriesIds","Type":"list","TypeCodec":""}]},"3182939728106937130":{"Name":"hr","Kind":"fields","Layout":"","Module":"module_89803","OwnerClass":"hr","Fields":[]},"3216143066888387731":{"Name":"ModelService.LoadDependencies","Kind":"container","Layout":"zt","Module":"","OwnerClass":"","Fields":[]},"3692495084100053385":{"Name":"N_","Kind":"fields","Layout":"","Module":"module_85196","OwnerClass":"N_","Fields":[{"Order":1,"Slot":"ocl_1","Name":"mountedItems","Type":"list","TypeCodec":""}]},"3996477900528000389":{"Name":"N_","Kind":"fields","Layout":"","Module":"module_85196","OwnerClass":"N_","Fields":[{"Order":1,"Slot":"kcl_1","Name":"itemsOnDepot","Type":"list","TypeCodec":""}]},"4567332396287339500":{"Name":"Yn","Kind":"fields","Layout":"","Module":"module_25377","OwnerClass":"Yn","Fields":[{"Order":1,"Slot":"xdl_1","Name":"users","Type":"list","TypeCodec":"module_25377::zt"}]},"5213829805760580947":{"Name":"N_","Kind":"fields","Layout":"","Module":"module_85196","OwnerClass":"N_","Fields":[]},"5236393599344825589":{"Name":"N_","Kind":"fields","Layout":"","Module":"module_85196","OwnerClass":"N_","Fields":[{"Order":1,"Slot":"mcl_1","Name":"itemsOnMarket","Type":"list","TypeCodec":""}]},"5543735653822042458":{"Name":"ni","Kind":"fields","Layout":"","Module":"module_25377","OwnerClass":"ni","Fields":[{"Order":1,"Slot":"pdm_1","Name":"users","Type":"list","TypeCodec":"module_25377::St"}]},"5600601240138203674":{"Name":"_a","Kind":"fields","Layout":"","Module":"module_85196","OwnerClass":"_a","Fields":[{"Order":1,"Slot":"vcp_1","Name":"item","Type":"i64","TypeCodec":""},{"Order":2,"Slot":"","Name":"","Type":"i32","TypeCodec":""}]},"5732737005800306202":{"Name":"il","Kind":"fields","Layout":"","Module":"module_47243","OwnerClass":"il","Fields":[{"Order":1,"Slot":"pel_1","Name":"announcementItems","Type":"list","TypeCodec":"module_47243::Vr"}]},"6180114602676583672":{"Name":"ki","Kind":"fields","Layout":"","Module":"module_10283","OwnerClass":"ki","Fields":[]},"6279910878005396624":{"Name":"ty","Kind":"fields","Layout":"","Module":"module_47243","OwnerClass":"ty","Fields":[{"Order":1,"Slot":"rfv_1","Name":"statistic","Type":"list","TypeCodec":"module_47243::m_"}]},"7615142300796401818":{"Name":"ka","Kind":"fields","Layout":"","Module":"module_85196","OwnerClass":"ka","Fields":[{"Order":1,"Slot":"dcr_1","Name":"devices","Type":"list","TypeCodec":""},{"Order":2,"Slot":"ecr_1","Name":"mountedDevice","Type":"opt","TypeCodec":""}]},"7640916300855664666":{"Name":"ModelService.LoadObjectsData","Kind":"container","Layout":"pt","Module":"","OwnerClass":"","Fields":[]},"7772769798498565531":{"Name":"Es","Kind":"fields","Layout":"","Module":"module_85667","OwnerClass":"Es","Fields":[{"Order":1,"Slot":"xbn_1","Name":"state","Type":"enum","TypeCodec":"module_85667::nu"}]},"7795510382230390111":{"Name":"Bn","Kind":"fields","Layout":"","Module":"module_25377","OwnerClass":"Bn","Fields":[{"Order":1,"Slot":"jdl_1","Name":"users","Type":"list","TypeCodec":"module_25377::$t"}]},"8009147528103070285":{"Name":"kn","Kind":"fields","Layout":"","Module":"module_89803","OwnerClass":"kn","Fields":[{"Order":1,"Slot":"ahm_1","Name":"limit","Type":"ProBattleRewardLimitData","TypeCodec":"module_31908::Ln"}]},"8179162314198150518":{"Name":"ModelService.SetModelCommandAlias","Kind":"container","Layout":"alias","Module":"","OwnerClass":"","Fields":[]},"8615808087035604385":{"Name":"N_","Kind":"fields","Layout":"","Module":"module_85196","OwnerClass":"N_","Fields":[{"Order":1,"Slot":"ccm_1","Name":"item","Type":"i64","TypeCodec":""},{"Order":2,"Slot":"","Name":"","Type":"i32","TypeCodec":""}]},"8814983091022938481":{"Name":"Ii","Kind":"fields","Layout":"","Module":"module_37504","OwnerClass":"Ii","Fields":[{"Order":1,"Slot":"kb5_1","Name":"userData","Type":"list","TypeCodec":"module_37504::St"}]},"8836555743203700004":{"Name":"fa","Kind":"fields","Layout":"","Module":"module_85196","OwnerClass":"fa","Fields":[{"Order":1,"Slot":"pcq_1","Name":"properties","Type":"list>","TypeCodec":"module_85196::mu"}]},"9038756763225879447":{"Name":"ModelService.UnloadObjects","Kind":"container","Layout":"lt","Module":"","OwnerClass":"","Fields":[]},"9114987333090113769":{"Name":"Es","Kind":"fields","Layout":"","Module":"module_85667","OwnerClass":"Es","Fields":[{"Order":1,"Slot":"abo_1","Name":"origin","Type":"enum","TypeCodec":"module_85667::nu"},{"Order":2,"Slot":"bbo_1","Name":"state","Type":"enum","TypeCodec":"module_85667::nu"}]}}} diff --git a/client/tools/CompareContainerDecode.mjs b/client/tools/CompareContainerDecode.mjs new file mode 100644 index 0000000..76ecd19 --- /dev/null +++ b/client/tools/CompareContainerDecode.mjs @@ -0,0 +1,280 @@ +// CompareContainerDecode.mjs —— M2 容器三布局解码的「JS ↔ Kotlin」逐字段对照(正式产物) +// +// 目的:证明客户端的 lt/pt/zt 读法与服务端权威实现(3DTank/tools/server/container.js, +// 经 semantic.js 的 DecodeFrameBody 驱动)在**真实抓包帧**上逐字段一致。 +// +// 两侧结果的产出方式: +// · JS 侧:本脚本直接 require 服务端 container.js / semantic.js,把帧解成规范 JSON(内存对象)。 +// · Kotlin 侧:先确保 Kotlin/JS 的 node 产物是最新的(gradlew compileKotlinJs + +// jsDevelopmentExecutableCompileSync),再用 TANKIC_CONTAINER_DUMP=1 运行它;Kotlin 把 +// 同批帧解码结果写成规范 JSON,并用 <<>> 标记包住(见 ContainerDump.kt)。 +// +// 比对规范(与任务要求一致): +// · 对象键排序后比较; +// · 数字一律按「原始十进制字符串」比(i8..i64/f32/f64 都是;f32/f64 两侧都用 JS 的 +// String(x),所以不会出现「Kotlin 输出 0.07 / JS 输出 0.07000000029802322」这类格式化分叉); +// · null 与「键缺失」区分开(键不存在报「<缺失>」,键存在但值为 null 报 null); +// · 只跳过两处「非线数据」:根上的 Tool,以及帧/记录两级的 Note(两侧是各自语言写的诊断文案, +// 不是线上的字节内容;记录是否失败由 Bad 字段判定)。 +// +// 用法: +// node client/tools/CompareContainerDecode.mjs # 会先构建再比对 +// node client/tools/CompareContainerDecode.mjs --no-build # 直接用现有 Kotlin 产物 +'use strict'; +import fs from 'node:fs'; +import path from 'node:path'; +import url from 'node:url'; +import { createRequire } from 'node:module'; +import { spawnSync } from 'node:child_process'; + +const Here = path.dirname(url.fileURLToPath(import.meta.url)); +const ClientDir = path.resolve(Here, '..'); +const RepoDir = path.resolve(ClientDir, '..'); +const NamesDir = path.join(RepoDir, '3DTank', 'names'); +const ServerDir = path.join(RepoDir, '3DTank', 'tools', 'server'); +const PacketsDir = path.join(RepoDir, '3DTank', 'packets', 'plain'); +const NodeBundle = path.join(ClientDir, 'build', 'js', 'packages', 'TankIcClient', 'kotlin', 'TankIcClient.js'); +const NoBuild = process.argv.includes('--no-build'); + +// 必测帧(都在 3DTank/packets/plain/ 下,**只读**) +const Corpus = [ + 'space-100045260/s2c_0000.bin', // zt,负载 1782B(精确吃满) + 'space-100045260/s2c_0001.bin', // pt,负载 448B + 'space-100073070/s2c_0002.bin', // lt,126B = nullmap(1) + 5×(16B 头 + 9B 负载) + 'space-100073070/s2c_0004.bin', // 多记录帧:1 条 pt + 28 条 fields(M1 会丢后面的记录) + 'space-920007382011/s2c_0001.bin', // pt 记录后面还有别的记录 +]; + +// ---------------------------------------------------------------- 服务端实现(只读 require) + +const require = createRequire(import.meta.url); +const Link = require(path.join(ServerDir, 'link.js')); +const { MakeContainerCodec } = require(path.join(ServerDir, 'container.js')); +const { LoadTables, MakeReader } = require(path.join(RepoDir, '3DTank', 'tools', 'lib_space_codec.js')); +const { MakeWriter } = require(path.join(ServerDir, 'codec.js')); +const Semantic = require(path.join(ServerDir, 'semantic.js')); + +const Tables = LoadTables(NamesDir); +const Container = MakeContainerCodec(Tables, MakeReader(Tables, { EnumBytes: 4 }), MakeWriter(Tables, { EnumBytes: 4 })); +const Sem = Semantic.Load(NamesDir); +// 断言 semantic 用的确实是 container.js 的这套布局表(不是另一份拷贝) +const SameLayoutTable = Sem.Container.LAYOUT_BY_METHOD === Container.LAYOUT_BY_METHOD; + +// ---------------------------------------------------------------- 规范化 + +// 与 Kotlin 侧 CanonicalJson 同口径:数字 → 十进制字符串,对象键排序,null 保留 +function Canon(V) { + if (V === undefined) return undefined; + if (V === null) return null; + if (typeof V === 'bigint') return V.toString(); + if (typeof V === 'number') return String(V); + if (typeof V === 'boolean' || typeof V === 'string') return V; + if (Array.isArray(V)) return V.map(Canon); + if (typeof V === 'object') { + const Out = {}; + for (const K of Object.keys(V).sort()) Out[K] = Canon(V[K]); + return Out; + } + return String(V); +} + +function JsRecord(R) { + const Out = { + ObjectId: R.ObjectId, + MethodId: R.MethodId, + Kind: R.Kind, + Layout: R.Layout || '', + Bad: !!R.Bad, + Note: R.Note || '', + }; + if (R.Kind === 'container') Out.Value = Canon(R.Value === undefined ? null : R.Value); + else if (R.Kind === 'fields') { + const F = {}; + for (const X of R.Fields || []) F[X.Name] = Canon(X.Value); + Out.Fields = F; + } + return Out; +} + +function JsDump(AbsPath) { + const Buf = fs.readFileSync(AbsPath); + const Frames = Link.ParseFrames(Buf); + if (!Frames) return { Path: AbsPath, Error: '整帧流解析失败(有残余字节)', Frames: [] }; + const OutFrames = []; + for (const Fr of Frames) { + let Body; + try { + Body = Link.DecodeFrame(Fr); + } catch (Err) { + OutFrames.push({ BodyBytes: Fr.Body.length, Records: [], Bad: true, Note: String(Err.message) }); + continue; + } + const D = Sem.DecodeFrameBody(Body); + OutFrames.push({ + BodyBytes: Body.length, + Records: D.Records.map(JsRecord), + Bad: !!D.Bad, + Note: D.Note || '', + }); + } + return { Path: AbsPath, Error: null, Frames: OutFrames }; +} + +// ---------------------------------------------------------------- 跑 Kotlin 侧 + +function BuildKotlin() { + if (NoBuild) return; + const Gradlew = path.join(ClientDir, process.platform === 'win32' ? 'gradlew.bat' : 'gradlew'); + const R = spawnSync(Gradlew, ['compileKotlinJs', 'jsDevelopmentExecutableCompileSync', '--console=plain', '-q'], { + cwd: ClientDir, + encoding: 'utf8', + shell: process.platform === 'win32', + }); + if (R.status !== 0) { + console.error('✗ Kotlin 构建失败:'); + console.error((R.stdout || '') + (R.stderr || '')); + process.exit(1); + } +} + +function RunKotlin(AbsFiles) { + const R = spawnSync('node', [NodeBundle], { + encoding: 'utf8', + maxBuffer: 512 * 1024 * 1024, + env: { ...process.env, TANKIC_CONTAINER_DUMP: '1', TANKIC_CONTAINER_FILES: AbsFiles.join(';') }, + }); + const Stdout = R.stdout || ''; + const Start = Stdout.indexOf('<<>>'); + const End = Stdout.indexOf('<<>>'); + if (Start < 0 || End < 0) { + console.error('✗ 没能从 Kotlin 输出里取到 JSON 标记。stdout 末尾:'); + console.error(Stdout.slice(-2000)); + console.error(R.stderr || ''); + process.exit(1); + } + return JSON.parse(Stdout.slice(Start + '<<>>'.length, End)); +} + +// ---------------------------------------------------------------- 逐字段比对 + +const SkipKeys = new Set(['Tool']); +function IsFrameNode(O) { + return !!O && typeof O === 'object' && !Array.isArray(O) && Array.isArray(O.Records) && 'BodyBytes' in O; +} +function IsRecordNode(O) { + return !!O && typeof O === 'object' && !Array.isArray(O) && 'ObjectId' in O && 'MethodId' in O; +} +function ShouldSkip(Key, Parent) { + if (SkipKeys.has(Key)) return true; + // 帧级/记录级的 Note 是各自语言写的诊断文案,不是线数据(失败与否看 Bad) + if (Key === 'Note' && (IsFrameNode(Parent) || IsRecordNode(Parent))) return true; + return false; +} + +const Stat = { Match: 0, Miss: 0 }; +const Diffs = []; + +function Describe(V) { + if (V === undefined) return '<缺失>'; + const S = JSON.stringify(V); + return S === undefined ? String(V) : S.length > 160 ? S.slice(0, 160) + '…' : S; +} + +function Diff(Js, Kt, P) { + if (Js === undefined || Kt === undefined) { + Stat.Miss++; + Diffs.push({ Path: P, Js: Describe(Js), Kotlin: Describe(Kt) }); + return; + } + if (Js === null || Kt === null || typeof Js !== 'object' || typeof Kt !== 'object') { + if (Js === Kt) Stat.Match++; + else { + Stat.Miss++; + Diffs.push({ Path: P, Js: Describe(Js), Kotlin: Describe(Kt) }); + } + return; + } + if (Array.isArray(Js) || Array.isArray(Kt)) { + if (!Array.isArray(Js) || !Array.isArray(Kt)) { + Stat.Miss++; + Diffs.push({ Path: P, Js: Describe(Js), Kotlin: Describe(Kt) }); + return; + } + if (Js.length !== Kt.length) { + Stat.Miss++; + Diffs.push({ Path: P + '(数组长度)', Js: String(Js.length), Kotlin: String(Kt.length) }); + } + for (let I = 0; I < Math.min(Js.length, Kt.length); I++) Diff(Js[I], Kt[I], P + '[' + I + ']'); + return; + } + const Keys = [...new Set([...Object.keys(Js), ...Object.keys(Kt)])].sort(); + for (const K of Keys) { + if (ShouldSkip(K, Js)) continue; + Diff(Js[K], Kt[K], P + '.' + K); + } +} + +// ---------------------------------------------------------------- 主流程 + +const AbsFiles = Corpus.map((F) => path.join(PacketsDir, F)); +for (const F of AbsFiles) { + if (!fs.existsSync(F)) { + console.error('✗ 缺少必测帧:' + F); + process.exit(1); + } +} + +console.log('M2 容器解码逐字段对照(JS = server/container.js,经 semantic.js 驱动)'); +console.log(' 布局表同一份对象:' + (SameLayoutTable ? '是' : '否 ⚠')); +console.log(' 必测帧 ' + Corpus.length + ' 个'); +BuildKotlin(); + +const JsResult = { Tool: 'TankIcClient/ContainerDump', Files: AbsFiles.map(JsDump) }; +const KtResult = RunKotlin(AbsFiles); +KtResult.Tool = KtResult.Tool || 'TankIcClient/ContainerDump'; + +// 把两侧的规范 JSON 落盘(build/ 已被 gitignore),供人工核对 +const DumpDir = path.join(ClientDir, 'build', 'CompareContainerDecode'); +fs.mkdirSync(DumpDir, { recursive: true }); +fs.writeFileSync(path.join(DumpDir, 'JsResult.json'), JSON.stringify(JsResult), 'utf8'); +fs.writeFileSync(path.join(DumpDir, 'KotlinResult.json'), JSON.stringify(KtResult), 'utf8'); +console.log(' 两侧规范 JSON 已落盘:' + DumpDir); + +const JsFiles = JsResult.Files; +const KtFiles = KtResult.Files || []; +if (JsFiles.length !== KtFiles.length) { + console.error('✗ 两侧文件数不同:JS ' + JsFiles.length + ' / Kotlin ' + KtFiles.length); + process.exit(1); +} + +console.log(''); +console.log('逐帧记录数 / Bad 记录数(JS ↔ Kotlin):'); +for (let I = 0; I < Corpus.length; I++) { + const J = JsFiles[I]; + const K = KtFiles[I]; + const Jf = (J.Frames || []).map((F) => (F.Records || []).length + ':' + (F.Records || []).filter((R) => R.Bad).length); + const Kf = (K.Frames || []).map((F) => (F.Records || []).length + ':' + (F.Records || []).filter((R) => R.Bad).length); + const Same = JSON.stringify(Jf) === JSON.stringify(Kf); + const Layers = []; + for (const F of K.Frames || []) for (const R of F.Records || []) if (R.Kind === 'container') Layers.push(R.Layout); + console.log( + ' ' + Corpus[I] + ' 帧数 ' + (J.Frames || []).length + ' 容器布局 [' + Layers.join(',') + ']' + + ' 记录:Bad JS [' + Jf.join(', ') + '] Kotlin [' + Kf.join(', ') + '] ' + (Same ? '✓' : '✗') + ); +} + +Diff(JsFiles, KtFiles, 'Files'); + +console.log(''); +console.log('比对结果:一致叶子 ' + Stat.Match + ' / 不一致 ' + Stat.Miss); +if (Stat.Miss) { + console.log('差异明细(最多 40 条):'); + for (const D of Diffs.slice(0, 40)) { + console.log(' ' + D.Path); + console.log(' JS = ' + D.Js); + console.log(' Kotlin = ' + D.Kotlin); + } + if (Diffs.length > 40) console.log(' …其余 ' + (Diffs.length - 40) + ' 条略'); +} +console.log(Stat.Miss ? '✗ 存在不一致' : '✓ 逐字段一致'); +process.exit(Stat.Miss ? 1 : 0); diff --git a/client/tools/ExportProtocolTables.mjs b/client/tools/ExportProtocolTables.mjs index 3b581a5..cc4b55c 100644 --- a/client/tools/ExportProtocolTables.mjs +++ b/client/tools/ExportProtocolTables.mjs @@ -11,12 +11,14 @@ // 数据来源(只读,绝不改动): // names/uplink_table.json 上行命令表(methodId → 命令类 / 发送方法 / 负载字段) // names/downlink_table.json 下行命令字段表 + 容器表(methodId → 有序字段 / 容器布局) +// names/codec_fields.json 模型 codec 的字段表(M2 容器解码:pt.Items 里 modelId → 字段表) // names/space-*.json M1/M2 目标空间的初始化/会话模板,用来挑选「M1/M2 真正用得上的」条目 // // 挑选口径(刻意不把 names/ 整份拷进来): // DownlinkByMethod = 全部容器方法(M1/M2 靠它识别 ModelService 容器记录) // ∪ 所有 space-*.json 模板里出现过的 Records[].MethodId // UplinkByMethod = 所有 space-*.json 模板里出现过的 After[].MethodId(会话回放的上行触发点) +// Codecs 等模型表 = 见下方「M2 容器解码所需的模型表」一节(闭包裁剪)。 // // 用法:node client/tools/ExportProtocolTables.mjs 'use strict'; @@ -111,6 +113,145 @@ for (const C of DownlinkSrc.Containers || []) { }; } +// ---------------------------------------------------------------- M2 容器解码所需的模型表 +// +// 为什么必须导出:lt/pt/zt 三个布局的负载边界由容器头部算出来,但 pt 的每一项是一段 +// 「按 modelId 就地展开的模型字段」(container.js 的 ReadLtItem → CodecByModelId)。 +// 没有模型字段表,pt 里的对象解不动,容器负载的边界也就无从确认。 +// +// 裁剪策略(三步,产物体积是硬约束): +// ① 只留解码必需的三个属性:字段名 / 线类型串 / TypeCodec。codec_fields.json 里的 +// Slots / Desc / Js / Prop / ModelKeys / MethodId / ModelClass / Module / Wire / TypeRaw +// 等元数据(占原文 92% 以上)一律不导出 —— 它们不参与任何解码路径。 +// ② 闭包裁剪:从「所有带 ModelId 的 codec」+「downlink_table 里每条命令/容器方法的 codec」 +// 出发,沿字段的 TypeCodec 与「模型真名」递归取闭包。闭包外的 codec 永不会被展开到, +// 导出后代码里也查不到(解到就如实报「无 codec」,不会伪装成解出来了)。 +// ③ CodecByModelName 只保留闭包里「字段 TypeCodec 为空、靠模型名解析」真正会用到的名字 +// (本次只有 1 个:Lt → module_61860::fi)。全量名字表要多花约 30KB,且没有任何一条 +// 解码路径会用到。 +// +// 已知残留(如实标注,不掩盖):闭包内含 2 处推不出 codec 的裸类型 —— module_29554::D.data +// (类型 `any`)与 module_29554::O.resources(`list`)。它们是 modelService 自身的 +// codec,只在「把这些 codec 当普通字段解」时才会命中;本次容器三布局与 5 个必测帧都不经过。 +const CodecSrc = ReadJson(path.join(NamesDir, 'codec_fields.json')); +const CodecAll = CodecSrc.Codecs || {}; + +// 手写优先的「资源类 → 线上 i64」直译表(口径逐条对照 container.js 的 RESOURCE_CLASS_WIRE)。 +// Pc 是实测标定(不是源码证据),但 container.js 就是这么用的,客户端必须同口径才能逐字段对上。 +const RESOURCE_CLASS_WIRE = { + Ea: 'i64', nh: 'i64', W_: 'i64', uo: 'i64', pv: 'i64', B_: 'i64', Da: 'i64', + qs: 'i64', uh: 'i64', Gf: 'i64', kv: 'i64', Pc: 'i64', +}; + +// 编码字段:只留 [Name, Type, TypeCodec]。匿名字段按 lib_space_codec.js:306 的口径命名 +// (`(匿名#序)`),否则解出来的键与上层比对时对不上。 +function CodecFields(C) { + return (C.Fields || []).map((F) => [ + F.Name && F.Name !== '(匿名)' && F.Name !== '?' ? String(F.Name) : '(匿名#' + F.Order + ')', + String(F.Type || ''), + String(F.TypeCodec || ''), + ]); +} + +// 取类型串里的「裸叶子类型名」:opt/list/enum 取 T,map 取 K 与 V(递归) +function LeafTypes(Text, Out) { + const Lt = Text.indexOf('<'); + if (Lt < 0) { + Out.push(Text); + return; + } + const Name = Text.slice(0, Lt); + const Gt = Text.lastIndexOf('>'); + const Inner = Text.slice(Lt + 1, Gt); + if (Name === 'map') { + let Depth = 0; + let Start = 0; + for (let I = 0; I < Inner.length; I++) { + const Ch = Inner[I]; + if (Ch === '<') Depth++; + else if (Ch === '>') Depth--; + else if (Ch === ',' && Depth === 0) { + LeafTypes(Inner.slice(Start, I).trim(), Out); + Start = I + 1; + } + } + LeafTypes(Inner.slice(Start).trim(), Out); + } else { + LeafTypes(Inner.trim(), Out); + } +} + +// 与 lib_space_codec.js 的 LoadTables 同口径的索引表 +const CodecKeyByModelId = {}; +const CodecKeyByMethod = {}; +const CodecKeyByModelName = {}; +for (const [Key, C] of Object.entries(CodecAll)) { + for (const M of C.MethodId || []) if (!CodecKeyByMethod[String(M)]) CodecKeyByMethod[String(M)] = Key; + const ModelIds = []; + if (C.ModelId) ModelIds.push(String(C.ModelId)); + for (const M of C.ModelIds || []) ModelIds.push(String(M)); + for (const M of ModelIds) if (!CodecKeyByModelId[M]) CodecKeyByModelId[M] = Key; + if (C.ModelName && !CodecKeyByModelName[C.ModelName]) CodecKeyByModelName[C.ModelName] = Key; +} + +// 闭包根:带 ModelId 的 codec(pt.Items 的展开入口)+ downlink_table 每条方法的 codec +const CodecRoots = new Set(Object.values(CodecKeyByModelId)); +for (const Source of [DownlinkSrc.Commands || [], DownlinkSrc.Containers || []]) { + for (const C of Source) { + const Key = CodecKeyByMethod[String(C.MethodId)]; + if (Key) CodecRoots.add(Key); + for (const F of C.Fields || []) if (F.TypeCodec && CodecAll[F.TypeCodec]) CodecRoots.add(String(F.TypeCodec)); + } +} +const CodecClosure = new Set(); +const CodecStack = [...CodecRoots]; +while (CodecStack.length) { + const Key = CodecStack.pop(); + if (CodecClosure.has(Key) || !CodecAll[Key]) continue; + CodecClosure.add(Key); + for (const F of CodecAll[Key].Fields || []) { + if (F.TypeCodec && CodecAll[F.TypeCodec]) CodecStack.push(String(F.TypeCodec)); + const Leaves = []; + LeafTypes(String(F.Type || ''), Leaves); + for (const Leaf of Leaves) if (CodecKeyByModelName[Leaf]) CodecStack.push(CodecKeyByModelName[Leaf]); + } +} + +// 闭包里「字段 TypeCodec 为空、靠模型名解析」真正会用到的名字(见裁剪策略 ③) +const NeededModelNames = {}; +for (const Key of CodecClosure) { + for (const F of CodecAll[Key].Fields || []) { + if (F.TypeCodec) continue; + const Leaves = []; + LeafTypes(String(F.Type || ''), Leaves); + for (const Leaf of Leaves) if (CodecKeyByModelName[Leaf]) NeededModelNames[Leaf] = CodecKeyByModelName[Leaf]; + } +} + +// 按 codec 键排序,保证产物顺序稳定(幂等) +const Codecs = {}; +for (const Key of Object.keys(CodecAll).filter((K) => CodecClosure.has(K)).sort()) Codecs[Key] = CodecFields(CodecAll[Key]); + +function SortKeys(Obj) { + const Out = {}; + for (const K of Object.keys(Obj).sort()) Out[K] = Obj[K]; + return Out; +} +const CodecByModelId = {}; +for (const M of Object.keys(CodecKeyByModelId).filter((M) => CodecClosure.has(CodecKeyByModelId[M])).sort((A, B) => (BigInt(A) < BigInt(B) ? -1 : BigInt(A) > BigInt(B) ? 1 : 0))) + CodecByModelId[M] = CodecKeyByModelId[M]; +const CodecByMethod = {}; +for (const M of Object.keys(CodecKeyByMethod).filter((M) => CodecClosure.has(CodecKeyByMethod[M])).sort((A, B) => (BigInt(A) < BigInt(B) ? -1 : BigInt(A) > BigInt(B) ? 1 : 0))) + CodecByMethod[M] = CodecKeyByMethod[M]; +const CodecByModelName = SortKeys(NeededModelNames); + +// 「裸类名 → 线上基础类型」直译表:ResourceClasses[].Wire 打底,手写表覆盖(手写优先, +// 与 container.js:130-132 的构造顺序完全一致) +const TypeAliases = {}; +for (const [N, R] of Object.entries(CodecSrc.ResourceClasses || {})) TypeAliases[N] = R.Wire; +for (const [N, W] of Object.entries(RESOURCE_CLASS_WIRE)) TypeAliases[N] = W; +const WireClasses = SortKeys(CodecSrc.WireClasses || {}); + // 按 methodId 数值升序重排,避免依赖 names/ 里的书写顺序 function SortByMethodId(Obj) { const Out = {}; @@ -122,17 +263,32 @@ const Tables = { Note: '客户端协议表,由 client/tools/ExportProtocolTables.mjs 从 3DTank/names/ 生成,请勿手改。' + 'UplinkByMethod 源 uplink_table.json,DownlinkByMethod 源 downlink_table.json(含 Containers 段)。' + - '只挑选 M1/M2 目标空间(names/space-init-*.json、space-session-*.json)里出现过的 methodId 与全部容器方法,' + - '不含 codec_fields/regdump 等其它表。' + + 'Codecs/CodecByModelId/CodecByMethod/CodecByModelName 源 codec_fields.json,按「pt.Items 的 modelId + ' + + 'downlink_table 方法」取闭包裁剪(只留字段名/线类型串/TypeCodec,丢掉全部元数据)。' + + 'TypeAliases = codec_fields.ResourceClasses[].Wire 与手写 RESOURCE_CLASS_WIRE 合并(手写优先),' + + 'WireClasses 为 codec_fields.WireClasses。' + + '只挑选 M1/M2 目标空间(names/space-init-*.json、space-session-*.json)里出现过的 methodId 与全部容器方法。' + '线格式口径:bool/i8=1、i16=2、i32=4、i64=8、f32=4、f64=8(全大端);string/bytes/array = varint 长度 + 原始字节;' + 'list = varint 元素数 + 元素;map = varint 条数 + 条数 × (K,V);enum = i32(4 字节大端);' + 'opt 的「空/非空」是 nullmap 比特流里的 1 个 bit(空值负载里 0 字节),不是 1 字节标志。' + '帧格式见 Protocol/Frame.kt 与 Protocol/Nullmap.kt(口径与 3DTank/tools/server/link.js 一致)。', GeneratedAt: new Date().toISOString(), - Source: '3DTank/names/{uplink_table.json,downlink_table.json,space-*.json}', + Source: '3DTank/names/{uplink_table.json,downlink_table.json,codec_fields.json,space-*.json}', PrimitiveWidths: { i8: 1, i16: 2, i32: 4, i64: 8, f32: 4, f64: 8, bool: 1, enum: 4 }, VarintPrefixed: ['string', 'bytes', 'array'], - Selection: { DownlinkMethodIds: Object.keys(DownlinkByMethod).length, UplinkMethodIds: Object.keys(UplinkByMethod).length }, + Selection: { + DownlinkMethodIds: Object.keys(DownlinkByMethod).length, + UplinkMethodIds: Object.keys(UplinkByMethod).length, + CodecCount: Object.keys(Codecs).length, + CodecByModelIdCount: Object.keys(CodecByModelId).length, + CodecByMethodCount: Object.keys(CodecByMethod).length, + }, + WireClasses, + TypeAliases: SortKeys(TypeAliases), + CodecByModelId, + CodecByMethod, + CodecByModelName, + Codecs, UplinkByMethod: SortByMethodId(UplinkByMethod), DownlinkByMethod: SortByMethodId(DownlinkByMethod), }; @@ -172,4 +328,8 @@ console.log('已生成协议表:'); console.log(' ' + OutJson + ' ' + Json.length + ' 字符'); console.log(' ' + OutKotlin + ' ' + Kotlin.length + ' 字符'); console.log(' 下行方法 ' + Tables.Selection.DownlinkMethodIds + ' 条 / 上行方法 ' + Tables.Selection.UplinkMethodIds + ' 条'); +console.log( + ' 模型 codec ' + Tables.Selection.CodecCount + ' 个(闭包,全表 ' + Object.keys(CodecAll).length + ' 个)' + + ' / modelId ' + Tables.Selection.CodecByModelIdCount + ' 个 / methodId ' + Tables.Selection.CodecByMethodCount + ' 个', +); console.log(' 目标空间模板 ' + SpaceFiles.length + ' 个:' + SpaceFiles.join(', '));