From 41c20a498d9cee7388b26fbd7a797681c9f0bc24 Mon Sep 17 00:00:00 2001 From: m0_75251201 Date: Wed, 16 Jul 2025 15:57:13 +0800 Subject: [PATCH] =?UTF-8?q?(client)=20fix:=E4=BF=AE=E5=A4=8D=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E9=93=BE=E6=8E=A5=E4=B8=8D=E6=AD=A3=E7=A1=AE=E8=B5=8B?= =?UTF-8?q?=E5=80=BC=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Client/Assets/Scripts/Data/Define.cs | 19 ++---- Client/Assets/Scripts/Data/DefinePack.cs | 8 ++- Client/Assets/Scripts/Data/MapDefine.cs | 10 ++- Client/Assets/Scripts/Entity/Monster.cs | 6 +- .../Assets/Scripts/Managers/DefineManager.cs | 61 +++++++++--------- Client/Assets/Scripts/Map/DoubleMap.cs | 29 +++++---- Client/Data/Core/Define/Map/Map.xml | 13 ++++ Client/Data/Core/Define/Player/CatGirl.xml | 2 +- .../Character/CatGirl/body/east.png | Bin .../Character/CatGirl/body/north.png | Bin .../Character/CatGirl/body/south.png | Bin .../Character/CatGirl/clothing/east.png | Bin .../Character/CatGirl/clothing/north.png | Bin .../Character/CatGirl/clothing/south.png | Bin .../CatGirl/hair/KiiroHair5_east.png | Bin .../CatGirl/hair/KiiroHair5_north.png | Bin .../CatGirl/hair/KiiroHair5_south.png | Bin .../hairBackground/KiiroHairBG5_east.png | Bin .../hairBackground/KiiroHairBG5_north.png | Bin .../hairBackground/KiiroHairBG5_south.png | Bin .../CatGirl/head/KiiroHeadH1_north.png | Bin .../CatGirl/head/KiiroHeadH1_south.png | Bin .../CatGirl/head/KiiroHeadH1_west.png | Bin .../CatGirl/leftEar/LeftEar_north.png | Bin .../CatGirl/leftEar/LeftEar_south.png | Bin .../CatGirl/leftEar/LeftEar_west.png | Bin .../CatGirl/rightEar/RightEar_east.png | Bin .../CatGirl/rightEar/RightEar_north.png | Bin .../CatGirl/rightEar/RightEar_south.png | Bin .../Core/Resources/Map/GrassDirtDirtWater.png | Bin 0 -> 656 bytes .../Resources/Map/GrassDirtWaterWater.png | Bin 0 -> 680 bytes .../Resources/Map/GrassGrassDirtWater.png | Bin 0 -> 876 bytes Client/Data/Core/Resources/Map/GrassSoild.png | Bin 0 -> 1001 bytes Client/Data/Core/Resources/Map/GrassWater.png | Bin 0 -> 1037 bytes Client/Data/Core/Resources/Map/SoildWater.png | Bin 0 -> 915 bytes 35 files changed, 85 insertions(+), 63 deletions(-) rename Client/Data/Core/{Resource => Resources}/Character/CatGirl/body/east.png (100%) rename Client/Data/Core/{Resource => Resources}/Character/CatGirl/body/north.png (100%) rename Client/Data/Core/{Resource => Resources}/Character/CatGirl/body/south.png (100%) rename Client/Data/Core/{Resource => Resources}/Character/CatGirl/clothing/east.png (100%) rename Client/Data/Core/{Resource => Resources}/Character/CatGirl/clothing/north.png (100%) rename Client/Data/Core/{Resource => Resources}/Character/CatGirl/clothing/south.png (100%) rename Client/Data/Core/{Resource => Resources}/Character/CatGirl/hair/KiiroHair5_east.png (100%) rename Client/Data/Core/{Resource => Resources}/Character/CatGirl/hair/KiiroHair5_north.png (100%) rename Client/Data/Core/{Resource => Resources}/Character/CatGirl/hair/KiiroHair5_south.png (100%) rename Client/Data/Core/{Resource => Resources}/Character/CatGirl/hairBackground/KiiroHairBG5_east.png (100%) rename Client/Data/Core/{Resource => Resources}/Character/CatGirl/hairBackground/KiiroHairBG5_north.png (100%) rename Client/Data/Core/{Resource => Resources}/Character/CatGirl/hairBackground/KiiroHairBG5_south.png (100%) rename Client/Data/Core/{Resource => Resources}/Character/CatGirl/head/KiiroHeadH1_north.png (100%) rename Client/Data/Core/{Resource => Resources}/Character/CatGirl/head/KiiroHeadH1_south.png (100%) rename Client/Data/Core/{Resource => Resources}/Character/CatGirl/head/KiiroHeadH1_west.png (100%) rename Client/Data/Core/{Resource => Resources}/Character/CatGirl/leftEar/LeftEar_north.png (100%) rename Client/Data/Core/{Resource => Resources}/Character/CatGirl/leftEar/LeftEar_south.png (100%) rename Client/Data/Core/{Resource => Resources}/Character/CatGirl/leftEar/LeftEar_west.png (100%) rename Client/Data/Core/{Resource => Resources}/Character/CatGirl/rightEar/RightEar_east.png (100%) rename Client/Data/Core/{Resource => Resources}/Character/CatGirl/rightEar/RightEar_north.png (100%) rename Client/Data/Core/{Resource => Resources}/Character/CatGirl/rightEar/RightEar_south.png (100%) create mode 100644 Client/Data/Core/Resources/Map/GrassDirtDirtWater.png create mode 100644 Client/Data/Core/Resources/Map/GrassDirtWaterWater.png create mode 100644 Client/Data/Core/Resources/Map/GrassGrassDirtWater.png create mode 100644 Client/Data/Core/Resources/Map/GrassSoild.png create mode 100644 Client/Data/Core/Resources/Map/GrassWater.png create mode 100644 Client/Data/Core/Resources/Map/SoildWater.png diff --git a/Client/Assets/Scripts/Data/Define.cs b/Client/Assets/Scripts/Data/Define.cs index db15281..11940b5 100644 --- a/Client/Assets/Scripts/Data/Define.cs +++ b/Client/Assets/Scripts/Data/Define.cs @@ -8,13 +8,15 @@ using System.Xml.Linq; namespace Data { - public abstract class Define + public class Define { public string defName; public string description; public string label; public string packID; + public bool isReferene=false; + /// /// 初始化方法,根据传入的 XML 元素 () 进行处理。 /// @@ -112,18 +114,5 @@ namespace Data return string.Join(Environment.NewLine, text.Split('\n').Select(line => prefix + line)); } } - - public class DefineReference : Define - { - public Define def; - public string className; - public string fieldName; - - public DefineReference(string className, string defName, string fieldName) - { - this.defName = defName; - this.className = className; - this.fieldName = fieldName; - } - } + } \ No newline at end of file diff --git a/Client/Assets/Scripts/Data/DefinePack.cs b/Client/Assets/Scripts/Data/DefinePack.cs index b729adf..0e8e11e 100644 --- a/Client/Assets/Scripts/Data/DefinePack.cs +++ b/Client/Assets/Scripts/Data/DefinePack.cs @@ -262,8 +262,12 @@ namespace Data } else { - value = new DefineReference(field.FieldType.Name, element.Value, field.Name); - + var reference = (Define)Activator.CreateInstance(field.FieldType); + reference.isReferene = true; + reference.description=field.FieldType.Name; + reference.label = field.Name; + reference.defName = element.Value; + value = reference; } } else diff --git a/Client/Assets/Scripts/Data/MapDefine.cs b/Client/Assets/Scripts/Data/MapDefine.cs index 2cedc51..b49f370 100644 --- a/Client/Assets/Scripts/Data/MapDefine.cs +++ b/Client/Assets/Scripts/Data/MapDefine.cs @@ -8,7 +8,7 @@ namespace Data { public class TileDef : Define { - public string texturePath = ""; + public ImageDef texture; public string name = ""; public override bool Init(XElement xmlDef) @@ -45,6 +45,12 @@ namespace Data return true; } } - + + public class ImageDef : Define + { + public string path; + public int wCount; + public int hCount; + } } \ No newline at end of file diff --git a/Client/Assets/Scripts/Entity/Monster.cs b/Client/Assets/Scripts/Entity/Monster.cs index 33af0b8..59be189 100644 --- a/Client/Assets/Scripts/Entity/Monster.cs +++ b/Client/Assets/Scripts/Entity/Monster.cs @@ -2,7 +2,11 @@ namespace Entity { public class Monster { - + public Protocol.MonsterPack ToPack() + { + var pack= new Protocol.MonsterPack(); + return pack; + } } public class MonsterAttributes diff --git a/Client/Assets/Scripts/Managers/DefineManager.cs b/Client/Assets/Scripts/Managers/DefineManager.cs index 7af89ce..a9f3bce 100644 --- a/Client/Assets/Scripts/Managers/DefineManager.cs +++ b/Client/Assets/Scripts/Managers/DefineManager.cs @@ -1,6 +1,8 @@ using System; using System.Collections.Generic; using System.IO; +using System.Linq; +using System.Reflection; using Data; using UnityEngine; using Utils; @@ -30,52 +32,53 @@ namespace Managers var pack = new DefinePack(); if (pack.LoadPack(folder)) packs.Add(pack.packID, pack); } - List> defineRefs = new(); + + Dictionary fieldCache = new(); + //不优化到循环里面是因为要先建立索引再链接 + List> defineCache = new(); + foreach (var pack in packs) { foreach (var define in pack.Value.defines) { - var typeName=define.Key; - var defList=define.Value; + var typeName = define.Key; + var defList = define.Value; + if (!defines.ContainsKey(typeName)) defines[typeName] = new Dictionary(); + foreach (var def in defList) { defines[typeName][def.defName] = def; - if (def is DefineReference reference) + + // 如果字段信息已经缓存,则直接使用缓存 + if (!fieldCache.TryGetValue(def.GetType(), out var defineFields)) { - defineRefs.Add(new(def,reference)); + // 获取所有字段类型为 Define 或其派生类型的字段 + defineFields = def.GetType() + .GetFields(BindingFlags.Public | BindingFlags.Instance) + .Where(field => typeof(Define).IsAssignableFrom(field.FieldType)) + .ToArray(); + // 缓存字段信息 + fieldCache[def.GetType()] = defineFields; + } + + foreach (var defineField in defineFields) + { + var defRef=(Define)defineField.GetValue(def); + if (defRef==null || !defRef.isReferene) + continue; + defineCache.Add(new(def, defineField, defRef)); } } } } - foreach (var defineRef in defineRefs) + foreach (var defRef in defineCache) { - var define = defineRef.Item1; - var reference = defineRef.Item2; - var referenceDef=FindDefine(reference.className,define.defName); - - var property = define.GetType().GetProperty(reference.fieldName); - if (property != null && property.CanWrite) - { - property.SetValue(define, referenceDef); - } - else - { - // 如果是字段而不是属性 - var field = define.GetType().GetField(reference.fieldName); - if (field != null) - { - field.SetValue(define, referenceDef); - } - else - { - // 处理找不到成员的情况 - Debug.LogError($"Could not find field or property '{reference.fieldName}' in type {define.GetType().Name}"); - } - } + defRef.Item2.SetValue(defRef.Item1, FindDefine(defRef.Item3.description, defRef.Item3.defName)); } + } /// /// 查找指定定义类型的定义名对应的 Define 对象。 diff --git a/Client/Assets/Scripts/Map/DoubleMap.cs b/Client/Assets/Scripts/Map/DoubleMap.cs index 2d88a58..4816ef1 100644 --- a/Client/Assets/Scripts/Map/DoubleMap.cs +++ b/Client/Assets/Scripts/Map/DoubleMap.cs @@ -7,26 +7,29 @@ namespace Map { public class DoubleMap : MonoBehaviour { - public Tilemap dataLevel; + public List> mapData = new(); + // public Tilemap dataLevel; public Tilemap textureLevel; public Dictionary tileDict = new(); void Start() { - tileDict = Configs.ConfigProcessor.LoadResources("TileMap"); - var tile= tileDict.Values; - for (int i = 0; i < 100; i++) - { - for (int j = 0; j < 100; j++) - { - textureLevel.SetTile(new(i,j),tile.First()); - } - } + TileManager.Instance.Init(); } - } - public class TileMappingTable:Utils.Singleton - { + public void UpdateTexture() + { + + } } + + public class TileManager:Utils.Singleton + { + Dictionary tileDict = new(); + public void Init() + { + + } + } } diff --git a/Client/Data/Core/Define/Map/Map.xml b/Client/Data/Core/Define/Map/Map.xml index 2c9384d..b73c6fd 100644 --- a/Client/Data/Core/Define/Map/Map.xml +++ b/Client/Data/Core/Define/Map/Map.xml @@ -1,5 +1,18 @@ + + GrassDirtTexture + Map\GrassSoild.png + 4 + 4 + + + + GrassDirtTiles + GrassDirtTexture + GrassDirt + + GrassDirtTable diff --git a/Client/Data/Core/Define/Player/CatGirl.xml b/Client/Data/Core/Define/Player/CatGirl.xml index 5516c08..41b6a56 100644 --- a/Client/Data/Core/Define/Player/CatGirl.xml +++ b/Client/Data/Core/Define/Player/CatGirl.xml @@ -3,7 +3,7 @@ CatGirl 100 - 1.2 + 2 diff --git a/Client/Data/Core/Resource/Character/CatGirl/body/east.png b/Client/Data/Core/Resources/Character/CatGirl/body/east.png similarity index 100% rename from Client/Data/Core/Resource/Character/CatGirl/body/east.png rename to Client/Data/Core/Resources/Character/CatGirl/body/east.png diff --git a/Client/Data/Core/Resource/Character/CatGirl/body/north.png b/Client/Data/Core/Resources/Character/CatGirl/body/north.png similarity index 100% rename from Client/Data/Core/Resource/Character/CatGirl/body/north.png rename to Client/Data/Core/Resources/Character/CatGirl/body/north.png diff --git a/Client/Data/Core/Resource/Character/CatGirl/body/south.png b/Client/Data/Core/Resources/Character/CatGirl/body/south.png similarity index 100% rename from Client/Data/Core/Resource/Character/CatGirl/body/south.png rename to Client/Data/Core/Resources/Character/CatGirl/body/south.png diff --git a/Client/Data/Core/Resource/Character/CatGirl/clothing/east.png b/Client/Data/Core/Resources/Character/CatGirl/clothing/east.png similarity index 100% rename from Client/Data/Core/Resource/Character/CatGirl/clothing/east.png rename to Client/Data/Core/Resources/Character/CatGirl/clothing/east.png diff --git a/Client/Data/Core/Resource/Character/CatGirl/clothing/north.png b/Client/Data/Core/Resources/Character/CatGirl/clothing/north.png similarity index 100% rename from Client/Data/Core/Resource/Character/CatGirl/clothing/north.png rename to Client/Data/Core/Resources/Character/CatGirl/clothing/north.png diff --git a/Client/Data/Core/Resource/Character/CatGirl/clothing/south.png b/Client/Data/Core/Resources/Character/CatGirl/clothing/south.png similarity index 100% rename from Client/Data/Core/Resource/Character/CatGirl/clothing/south.png rename to Client/Data/Core/Resources/Character/CatGirl/clothing/south.png diff --git a/Client/Data/Core/Resource/Character/CatGirl/hair/KiiroHair5_east.png b/Client/Data/Core/Resources/Character/CatGirl/hair/KiiroHair5_east.png similarity index 100% rename from Client/Data/Core/Resource/Character/CatGirl/hair/KiiroHair5_east.png rename to Client/Data/Core/Resources/Character/CatGirl/hair/KiiroHair5_east.png diff --git a/Client/Data/Core/Resource/Character/CatGirl/hair/KiiroHair5_north.png b/Client/Data/Core/Resources/Character/CatGirl/hair/KiiroHair5_north.png similarity index 100% rename from Client/Data/Core/Resource/Character/CatGirl/hair/KiiroHair5_north.png rename to Client/Data/Core/Resources/Character/CatGirl/hair/KiiroHair5_north.png diff --git a/Client/Data/Core/Resource/Character/CatGirl/hair/KiiroHair5_south.png b/Client/Data/Core/Resources/Character/CatGirl/hair/KiiroHair5_south.png similarity index 100% rename from Client/Data/Core/Resource/Character/CatGirl/hair/KiiroHair5_south.png rename to Client/Data/Core/Resources/Character/CatGirl/hair/KiiroHair5_south.png diff --git a/Client/Data/Core/Resource/Character/CatGirl/hairBackground/KiiroHairBG5_east.png b/Client/Data/Core/Resources/Character/CatGirl/hairBackground/KiiroHairBG5_east.png similarity index 100% rename from Client/Data/Core/Resource/Character/CatGirl/hairBackground/KiiroHairBG5_east.png rename to Client/Data/Core/Resources/Character/CatGirl/hairBackground/KiiroHairBG5_east.png diff --git a/Client/Data/Core/Resource/Character/CatGirl/hairBackground/KiiroHairBG5_north.png b/Client/Data/Core/Resources/Character/CatGirl/hairBackground/KiiroHairBG5_north.png similarity index 100% rename from Client/Data/Core/Resource/Character/CatGirl/hairBackground/KiiroHairBG5_north.png rename to Client/Data/Core/Resources/Character/CatGirl/hairBackground/KiiroHairBG5_north.png diff --git a/Client/Data/Core/Resource/Character/CatGirl/hairBackground/KiiroHairBG5_south.png b/Client/Data/Core/Resources/Character/CatGirl/hairBackground/KiiroHairBG5_south.png similarity index 100% rename from Client/Data/Core/Resource/Character/CatGirl/hairBackground/KiiroHairBG5_south.png rename to Client/Data/Core/Resources/Character/CatGirl/hairBackground/KiiroHairBG5_south.png diff --git a/Client/Data/Core/Resource/Character/CatGirl/head/KiiroHeadH1_north.png b/Client/Data/Core/Resources/Character/CatGirl/head/KiiroHeadH1_north.png similarity index 100% rename from Client/Data/Core/Resource/Character/CatGirl/head/KiiroHeadH1_north.png rename to Client/Data/Core/Resources/Character/CatGirl/head/KiiroHeadH1_north.png diff --git a/Client/Data/Core/Resource/Character/CatGirl/head/KiiroHeadH1_south.png b/Client/Data/Core/Resources/Character/CatGirl/head/KiiroHeadH1_south.png similarity index 100% rename from Client/Data/Core/Resource/Character/CatGirl/head/KiiroHeadH1_south.png rename to Client/Data/Core/Resources/Character/CatGirl/head/KiiroHeadH1_south.png diff --git a/Client/Data/Core/Resource/Character/CatGirl/head/KiiroHeadH1_west.png b/Client/Data/Core/Resources/Character/CatGirl/head/KiiroHeadH1_west.png similarity index 100% rename from Client/Data/Core/Resource/Character/CatGirl/head/KiiroHeadH1_west.png rename to Client/Data/Core/Resources/Character/CatGirl/head/KiiroHeadH1_west.png diff --git a/Client/Data/Core/Resource/Character/CatGirl/leftEar/LeftEar_north.png b/Client/Data/Core/Resources/Character/CatGirl/leftEar/LeftEar_north.png similarity index 100% rename from Client/Data/Core/Resource/Character/CatGirl/leftEar/LeftEar_north.png rename to Client/Data/Core/Resources/Character/CatGirl/leftEar/LeftEar_north.png diff --git a/Client/Data/Core/Resource/Character/CatGirl/leftEar/LeftEar_south.png b/Client/Data/Core/Resources/Character/CatGirl/leftEar/LeftEar_south.png similarity index 100% rename from Client/Data/Core/Resource/Character/CatGirl/leftEar/LeftEar_south.png rename to Client/Data/Core/Resources/Character/CatGirl/leftEar/LeftEar_south.png diff --git a/Client/Data/Core/Resource/Character/CatGirl/leftEar/LeftEar_west.png b/Client/Data/Core/Resources/Character/CatGirl/leftEar/LeftEar_west.png similarity index 100% rename from Client/Data/Core/Resource/Character/CatGirl/leftEar/LeftEar_west.png rename to Client/Data/Core/Resources/Character/CatGirl/leftEar/LeftEar_west.png diff --git a/Client/Data/Core/Resource/Character/CatGirl/rightEar/RightEar_east.png b/Client/Data/Core/Resources/Character/CatGirl/rightEar/RightEar_east.png similarity index 100% rename from Client/Data/Core/Resource/Character/CatGirl/rightEar/RightEar_east.png rename to Client/Data/Core/Resources/Character/CatGirl/rightEar/RightEar_east.png diff --git a/Client/Data/Core/Resource/Character/CatGirl/rightEar/RightEar_north.png b/Client/Data/Core/Resources/Character/CatGirl/rightEar/RightEar_north.png similarity index 100% rename from Client/Data/Core/Resource/Character/CatGirl/rightEar/RightEar_north.png rename to Client/Data/Core/Resources/Character/CatGirl/rightEar/RightEar_north.png diff --git a/Client/Data/Core/Resource/Character/CatGirl/rightEar/RightEar_south.png b/Client/Data/Core/Resources/Character/CatGirl/rightEar/RightEar_south.png similarity index 100% rename from Client/Data/Core/Resource/Character/CatGirl/rightEar/RightEar_south.png rename to Client/Data/Core/Resources/Character/CatGirl/rightEar/RightEar_south.png diff --git a/Client/Data/Core/Resources/Map/GrassDirtDirtWater.png b/Client/Data/Core/Resources/Map/GrassDirtDirtWater.png new file mode 100644 index 0000000000000000000000000000000000000000..836210218720db66cf4308987b2493dccfb5358e GIT binary patch literal 656 zcmV;B0&o3^P)Px%N=ZaPRCt{2o3B>GFcikWaw;}~>Ju=*Ia5Opfkz;C77U_#f;ZqnCh!O*LG7H0 zy}=BK%?-0ay55^)O_#JuezHxP`+dvuKiOOWbQg9 z@n^5|ea!&*SLmw=RNPeUBMks(6Z(cuJOE^m<#)vZxh3wi37q)1kDp4qS~n;sFm1KF zj7mJfj032IeTUPO<^sM0@J(*}fpW3Tj-Sn@<9)eU{*5xJG;N_8$(mqo0EaN)T;Fet zvl!3^;R3P^a6Kh;0jH^E05=foE3yX4go**7i5I9$$i?a_0IcTDVsegbg8b8_aR9Z* zV6zO>Whkv=4Y1ve=pvjZ_Ad~U2`VkhHXsBObQ+>>1d{>21Mp2Uz;^(?Ne1{1z&FVN z-vRhWX+Q{*BAo`-fDptBR9Z*_LJ}|FH02?R<)E}i-w5XN3C>U#MFD=7xKaZ`+Zq?7 z^8p9a`2d3G8^P!eu-+ZE-JkbO^fe$EKs`+70}g~R8q}Q+NJnL(KP(;lad~ze5WPx%Vo5|nRCt{2o2^mzhyV`BB#BJ-{5Gt$;S>fKUUMMCyS1x}+8ZZd*z|NA7p@+IQ|0IK`>2^j&nBaVbrLJEW^AzK=QjR4%K zt`WJ$myjKDV70tBJBR?Bgs=jy?>|w(uP=|2`;;8Z_3@3TW}_o&fazqMl(l_wjc#Hr zZYs|H1ybkkZAP-iCPLZ@Xk!lG9{5SHWMXR?r>pydNeSH|KwANA%mLa8XhS+6XBOC2 zIGaX&G?s(1b?|?I>iOmFU^VD(KDh5`SLOoTYLMDhA|t?Wn6oLNMU3$P!e1cwM5awh zwum_ZckD{|1N_%D^dbkJ1kC~33TR^v&{jYjbAYx2+L!~h70^a>0A3W~BdWH8bq$>= zvkqwDh+7NE7SaLSa=1(QI&)57>jV6Oy0jPq;P(W42A>2+)X8aI_X#Om$q4Av(YPbI zK42)A1GE*;#vH&s@RLSYr@{bMBP3!D&{ja3=o+CeBiTY$isl-xT`Ehl+3v_>D6R%` zE5=JLqjP1~sunL%E??qQxrA)#MTj>>{DERmjGNj`sv|!Xh2mGB?v literal 0 HcmV?d00001 diff --git a/Client/Data/Core/Resources/Map/GrassGrassDirtWater.png b/Client/Data/Core/Resources/Map/GrassGrassDirtWater.png new file mode 100644 index 0000000000000000000000000000000000000000..b12f6be44d39207212b8b1c942d4934f4998e38c GIT binary patch literal 876 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 literal 0 HcmV?d00001