mbunch_kascope пре 1 година
родитељ
комит
b598fcdc90

+ 5 - 0
Assets/CardEffect/BT10/Red/BT10_112.cs

@@ -248,6 +248,11 @@ namespace DCGO.CardEffects.BT10
 
                                         IEnumerator AfterSelectIndexCoroutine(List<int> selectedIndexes)
                                         {
+                                            Debug.Log($"Testing: {selectedIndexes.Count}");
+
+                                            foreach(int index in selectedIndexes)
+                                                Debug.Log(index);
+
                                             if (selectedIndexes.Count == 1)
                                             {
                                                 selectedEffect = candidateEffects[selectedIndexes[0]];

+ 1 - 1
Assets/CardEffect/BT15/Black/BT15_056.cs

@@ -192,7 +192,7 @@ namespace DCGO.CardEffects.BT15
 
                 string EffectDiscription()
                 {
-                    return "[All Turns][Once per turn] When this Digimon becomes suspened, suspened 1 of your opponent's Digimon or Tamers with a play cost less than or equal to this Digimon.";
+                    return "[All Turns] [Once Per Turn] When this Digimon becomes suspended, suspend 1 of your opponent's Digimon or Tamers with a play cost less than or equal to this Digimon's play cost.";
                 }
 
                 bool CanSelectPermanentCondition(Permanent permanent)

+ 1 - 1
Assets/CardEffect/BT17/Red/BT17_012.cs

@@ -17,7 +17,7 @@ namespace DCGO.CardEffects.BT17
             {
                 bool Condition()
                 {
-                    return card.Owner.HandCards.Contains(card);
+                    return true;
                 }
 
                 bool PermanentCondition(Permanent targetPermanent)

+ 3 - 2
Assets/CardEffect/BT19/Blue/BT19_027.cs

@@ -177,12 +177,13 @@ namespace DCGO.CardEffects.BT19
 
                     if(selectedPermanent != null)
                     {
+                        bool selectedHasLevel = selectedPermanent.TopCard.HasLevel;
                         int selectedLevel = selectedPermanent.TopCard.Level;
 
                         yield return ContinuousController.instance.StartCoroutine(
                             new DeckBottomBounceClass(new List<Permanent> { selectedPermanent }, hashtable).DeckBounce());
-                        UnityEngine.Debug.Log($"Selected Level: {selectedLevel}");
-                        if (selectedLevel > 0)
+
+                        if (selectedHasLevel && selectedLevel > 0)
                         {
                             if (CardEffectCommons.HasMatchConditionPermanent(permanent =>
                                     CanSelectOpponentPermanentLevelCondition(permanent, selectedLevel)))

+ 2 - 2
Assets/CardEffect/BT2/Green/BT2_046.cs

@@ -23,7 +23,7 @@ public class BT2_046 : CEntity_Effect
 
             string EffectDiscription()
             {
-                return "[Your Turn] When this Digimon deletes one of your opponent's level 6 or higher Digimon in battle�Cunsuspend this Digimon.";
+                return "[Your Turn] When this Digimon deletes one of your opponent's level 6 or higher Digimon in battle� unsuspend this Digimon.";
             }
 
             bool CanUseCondition(Hashtable hashtable)
@@ -33,7 +33,7 @@ public class BT2_046 : CEntity_Effect
                     if (CardEffectCommons.IsOwnerTurn(card))
                     {
                         bool WinnerCondition(Permanent permanent) => permanent.cardSources.Contains(card);
-                        bool LoserCondition(Permanent permanent) => CardEffectCommons.IsOpponentPermanent(permanent, card) && permanent.LevelJustBeforeRemoveField >= 6;
+                        bool LoserCondition(Permanent permanent) => CardEffectCommons.IsOpponentPermanent(permanent, card) && permanent.Level >= 6;
 
                         if (CardEffectCommons.CanTriggerWhenDeleteOpponentDigimonByBattle(
                             hashtable: hashtable,

+ 14 - 14
Assets/CardEffect/BT20/Red/BT20_014.cs

@@ -165,10 +165,7 @@ namespace DCGO.CardEffects.BT20
                     {
                         if (CardEffectCommons.HasMatchConditionOwnersPermanent(card, CanSelectPermanentToSuspend))
                         {
-                            if (CardEffectCommons.HasMatchConditionOwnersHand(card, CanSelectCardToDigivolveInto))
-                            {
-                                return true;
-                            }
+                            return true;
                         }
                     }
                     return false;
@@ -210,16 +207,19 @@ namespace DCGO.CardEffects.BT20
 
                     if (selectedPermanents.Count > 0)
                     {
-                        yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.DigivolveIntoHandOrTrashCard(
-                            targetPermanent: card.PermanentOfThisCard(),
-                            cardCondition: CanSelectCardToDigivolveInto,
-                            payCost: false,
-                            reduceCostTuple: null,
-                            fixedCostTuple: null,
-                            ignoreDigivolutionRequirementFixedCost: -1,
-                            isHand: true,
-                            activateClass: activateClass,
-                            successProcess: null));
+                        if (CardEffectCommons.HasMatchConditionOwnersHand(card, CanSelectCardToDigivolveInto))
+                        {
+                            yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.DigivolveIntoHandOrTrashCard(
+                               targetPermanent: card.PermanentOfThisCard(),
+                               cardCondition: CanSelectCardToDigivolveInto,
+                               payCost: false,
+                               reduceCostTuple: null,
+                               fixedCostTuple: null,
+                               ignoreDigivolutionRequirementFixedCost: -1,
+                               isHand: true,
+                               activateClass: activateClass,
+                               successProcess: null));
+                        }
                     }
                 }
             }

+ 1 - 0
Assets/CardEffect/BT20/Yellow/BT20_035.cs

@@ -230,6 +230,7 @@ namespace DCGO.CardEffects.BT20
 
                             if (!selectedEffect.IsDisabled)
                             {
+                                selectedEffect.SetIsDigimonEffect(true);
                                 yield return ContinuousController.instance.StartCoroutine(
                                 ((ActivateICardEffect)selectedEffect).Activate_Optional_Effect_Execute(effectHashtable));
                             }

+ 1 - 3
Assets/CardEffect/BT21/Red/BT21_083.cs

@@ -198,7 +198,7 @@ namespace DCGO.CardEffects.BT21
                             canTargetCondition_ByPreSelecetedList: null,
                             canEndSelectCondition: null,
                             maxCount: maxCount,
-                            canNoSelect: false,
+                            canNoSelect: true,
                             canEndNotMax: false,
                             selectPermanentCoroutine: SelectPermanentCoroutine,
                             afterSelectPermanentCoroutine: null,
@@ -227,8 +227,6 @@ namespace DCGO.CardEffects.BT21
                                     defenderCondition: _ => true,
                                     cardEffect: activateClass);
 
-                                selectAttackEffect.SetCanNotSelectNotAttack();
-
                                 yield return ContinuousController.instance.StartCoroutine(selectAttackEffect.Activate());
                             }
                         }

+ 23 - 8
Assets/CardEffect/BT6/Yellow/BT6_033.cs

@@ -50,17 +50,32 @@ public class BT6_033 : CEntity_Effect
                     {
                         if (card.Owner.SecurityCards.Count > 3)
                         {
-                            int count = 0;
+                            yield return GManager.instance.photonWaitController.StartWait("Pulsemon_Select_ETB");
 
-                            while (card.Owner.SecurityCards.Count > 3)
+                            List<SelectionElement<int>> selectionElements = new List<SelectionElement<int>>();
+
+                            for(int i = 1; i < card.Owner.SecurityCards.Count - 3; i++)
+                                selectionElements.Add(new SelectionElement<int>(message: $"{i}", value: i, spriteIndex: 0));
+
+                            string selectPlayerMessage = "Choose how many cards to trash?";
+                            string notSelectPlayerMessage = "The opponent is choosing how many cards to trash.";
+
+                            if (selectionElements.Count > 1)
+                                GManager.instance.userSelectionManager.SetIntSelection(selectionElements: selectionElements, selectPlayer: card.Owner, selectPlayerMessage: selectPlayerMessage, notSelectPlayerMessage: notSelectPlayerMessage);
+                            else
+                                GManager.instance.userSelectionManager.SetInt(selectionElements[0].Value);
+
+                            yield return ContinuousController.instance.StartCoroutine(GManager.instance.userSelectionManager.WaitForEndSelect());
+
+                            int count = GManager.instance.userSelectionManager.SelectedIntValue;
+
+                            for (int i = count; i > 0; i--)
                             {
                                 yield return ContinuousController.instance.StartCoroutine(new IDestroySecurity(
-                    player: card.Owner,
-                    destroySecurityCount: 1,
-                    cardEffect: activateClass,
-                    fromTop: true).DestroySecurity());
-
-                                count++;
+                                    player: card.Owner,
+                                    destroySecurityCount: 1,
+                                    cardEffect: activateClass,
+                                    fromTop: true).DestroySecurity());
                             }
 
                             if (count >= 1)

+ 20 - 37
Assets/CardEffect/EX2/Red/EX2_056.cs

@@ -74,7 +74,7 @@ namespace DCGO.CardEffects.EX2
 
                 string EffectDiscription()
                 {
-                    return "[Your Turn] When one of your Digimon would digivolve into a Digimon with [Gallantmon] or [Growlmon] in its name, that Digimon gains \"[When Digivolving] <Blitz> (This Digimon can attack when your opponent has 1 or more memory.)\" for the turn.";
+                    return "[Your Turn] When one of your Digimon would digivolve into a Digimon with [Gallantmon] or [Growlmon] in its name, that Digimon gains \"[When Digivolving] EX8-053 (This Digimon can attack when your opponent has 1 or more memory.)\" for the turn.";
                 }
 
                 bool DigivolvePermanentCondition(Permanent permanent)
@@ -154,18 +154,16 @@ namespace DCGO.CardEffects.EX2
                         {
                             foreach (Permanent permanent in card.Owner.GetBattleAreaPermanents().Filter(PermanentCondition))
                             {
-
-                                ActivateClass activateClass1 = new ActivateClass();
-                                activateClass1.SetUpICardEffect("Blitz", CanUseCondition1, permanent.TopCard);
-                                activateClass1.SetUpActivateClass(CanActivateCondition1, ActivateCoroutine1, -1, false, EffectDiscription1());
-                                activateClass1.SetEffectSourcePermanent(permanent);
-                                permanent.UntilEachTurnEndEffects.Add(GetCardEffect);
+                                AddSkillClass addSkillClass = new AddSkillClass();
+                                addSkillClass.SetUpICardEffect("Your Digimons get Blitz", CanUseCondition1, permanent.TopCard);
+                                addSkillClass.SetUpAddSkillClass(cardSourceCondition: CardSourceCondition, getEffects: GetEffects);
+                                CardEffectCommons.AddEffectToPermanent(permanent, effectDuration: EffectDuration.UntilEachTurnEnd, card: permanent.TopCard, cardEffect: addSkillClass, timing: EffectTiming.None);
 
                                 yield return ContinuousController.instance.StartCoroutine(GManager.instance.GetComponent<Effects>().CreateDebuffEffect(permanent));
 
-                                string EffectDiscription1()
+                                bool CardSourceCondition(CardSource source)
                                 {
-                                    return "[When Digivolving] <Blitz> (This Digimon can attack when your opponent has 1 or more memory.)";
+                                    return true;
                                 }
 
                                 bool CanUseCondition1(Hashtable hashtable1)
@@ -181,42 +179,27 @@ namespace DCGO.CardEffects.EX2
                                     return false;
                                 }
 
-                                bool CanActivateCondition1(Hashtable hashtable1)
+                                List<ICardEffect> GetEffects(CardSource cardSource, List<ICardEffect> cardEffects, EffectTiming _timing)
                                 {
-                                    if (CardEffectCommons.IsExistOnBattleAreaDigimon(permanent.TopCard))
+                                    if (_timing == EffectTiming.OnEnterFieldAnyone)
                                     {
-                                        if (CardEffectCommons.CanActivateBlitz(permanent.TopCard, activateClass1))
+                                        bool Condition()
                                         {
-                                            return true;
-                                        }
-                                    }
-
-                                    return false;
-                                }
+                                            if (CardSourceCondition(cardSource))
+                                            {
+                                                return true;
+                                            }
 
-                                IEnumerator ActivateCoroutine1(Hashtable _hashtable1)
-                                {
-                                    if (permanent.TopCard != null)
-                                    {
-                                        if (permanent.TopCard.Owner.GetBattleAreaDigimons().Contains(permanent))
-                                        {
-                                            yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.GainBlitz(
-                                                targetPermanent: permanent,
-                                                effectDuration: EffectDuration.UntilEachTurnEnd,
-                                                activateClass: activateClass1,
-                                                isWhenDigivolving: true));
+                                            return false;
                                         }
-                                    }
-                                }
 
-                                ICardEffect GetCardEffect(EffectTiming _timing)
-                                {
-                                    if (_timing == EffectTiming.OnEnterFieldAnyone)
-                                    {
-                                        return activateClass1;
+                                        cardEffects.Add(CardEffectFactory.BlitzSelfEffect(isInheritedEffect: false,
+                                            card: cardSource,
+                                            condition: Condition,
+                                            isWhenDigivolving: false));
                                     }
 
-                                    return null;
+                                    return cardEffects;
                                 }
                             }
                         }

+ 1 - 1
Assets/CardEffect/EX3/Black/EX3_053.cs

@@ -146,7 +146,7 @@ namespace DCGO.CardEffects.EX3
                                         {
                                             if (!permanent.IsSuspended)
                                             {
-                                                if (permanent.TopCard.Owner.GetBattleAreaPermanents().Contains(permanent))
+                                                if (permanent.TopCard.Owner.GetBattleAreaDigimons().Contains(permanent))
                                                 {
                                                     return true;
                                                 }

+ 1 - 1
Assets/CardEffect/EX3/Blue/EX3_016.cs

@@ -25,7 +25,7 @@ namespace DCGO.CardEffects.EX3
 
                 bool PermanentCondition(Permanent targetPermanent)
                 {
-                    return CardEffectCommons.IsPermanentExistsOnOpponentBattleArea(targetPermanent, card) && targetPermanent.HasNoDigivolutionCards;
+                    return CardEffectCommons.IsPermanentExistsOnOpponentBattleAreaDigimon(targetPermanent, card) && targetPermanent.HasNoDigivolutionCards;
                 }
 
                 bool CardSourceCondition(CardSource cardSource)

+ 8 - 3
Assets/CardEffect/EX8/Red/EX8_073.cs

@@ -226,6 +226,7 @@ namespace DCGO.CardEffects.EX8
 
                 bool CanUseCondition(Hashtable hashtable)
                 {
+                    UnityEngine.Debug.Log($"CAN USE: {CardEffectCommons.IsExistOnBattleAreaDigimon(card)}, {CardEffectCommons.CanTriggerWhenDigivolving(hashtable, card)}");
                     if (CardEffectCommons.IsExistOnBattleAreaDigimon(card))
                     {
                         if (CardEffectCommons.CanTriggerWhenDigivolving(hashtable, card))
@@ -239,13 +240,14 @@ namespace DCGO.CardEffects.EX8
 
                 bool CanActivateCondition(Hashtable hashtable)
                 {
+                    UnityEngine.Debug.Log($"CAN ACTIVATE: {CardEffectCommons.IsExistOnBattleAreaDigimon(card)}");
                     return CardEffectCommons.IsExistOnBattleAreaDigimon(card);
                 }
 
                 IEnumerator ActivateCoroutine(Hashtable hashtable)
                 {
                     List<Permanent> deleteTargetPermanents = new List<Permanent>();
-
+                    UnityEngine.Debug.Log($"ACTIVATE: {CardEffectCommons.HasMatchConditionPermanent(CanSelectOpponentPermanentCondition)}");
                     if (CardEffectCommons.HasMatchConditionPermanent(CanSelectOpponentPermanentCondition))
                     {
                         int maxCount = Math.Min(1, CardEffectCommons.MatchConditionPermanentCount(CanSelectOpponentPermanentCondition));
@@ -271,13 +273,14 @@ namespace DCGO.CardEffects.EX8
 
                         IEnumerator AfterSelectPermanentCoroutine(List<Permanent> permanents)
                         {
+                            UnityEngine.Debug.Log($"ACTIVATE: Select Permanents - {permanents.Count}");
                             deleteTargetPermanents = permanents.Clone();
                             yield return null;
                         }
                     }
-
+                    UnityEngine.Debug.Log($"ACTIVATE: Attempt Delete");
                     yield return ContinuousController.instance.StartCoroutine(CardEffectCommons.DeletePeremanentAndProcessAccordingToResult(targetPermanents: deleteTargetPermanents, activateClass: activateClass, successProcess: null, failureProcess: FailureProcess));
-
+                    UnityEngine.Debug.Log($"ACTIVATE: Post Delete");
                     IEnumerator FailureProcess()
                     {
                         if (card.Owner.Enemy.SecurityCards.Count >= 1)
@@ -291,6 +294,8 @@ namespace DCGO.CardEffects.EX8
 
                         yield return ContinuousController.instance.StartCoroutine(new IUnsuspendPermanents(new List<Permanent>() { card.PermanentOfThisCard() }, activateClass).Unsuspend());
                     }
+
+                    UnityEngine.Debug.Log($"ACTIVATE: Effect Done");
                 }
             }
             #endregion

+ 2 - 10
Assets/CardEffect/LM/Yellow/LM_020.cs

@@ -268,17 +268,9 @@ namespace DCGO.CardEffects.LM
                             PlayLog.OnAddLog?.Invoke(log);
                             #endregion
 
-                        bool CardCondition(CardSource cardSource)
+                            bool CardCondition(CardSource cardSource)
                             {
-                                if (cardSource.PermanentOfThisCard() == selectedPermanent)
-                                {
-                                    if (CardEffectCommons.IsExistOnBattleArea(cardSource))
-                                    {
-                                        return true;
-                                    }
-                                }
-
-                                return false;
+                                return CardEffectCommons.IsExistOnBattleArea(cardSource);
                             }
 
                             bool SkillCondition(ICardEffect cardEffect)

+ 1 - 1
Assets/Editor/AttachCardData.cs

@@ -12,7 +12,7 @@ public class AttachCardData : MonoBehaviour
     {
         List<CEntity_Base> List = GetAsset.LoadAll<CEntity_Base>("Assets/CardBaseEntity/");
 
-        List<string> UnimplementedCardSpriteNames = new List<string>() { "P-147", "EX8-053", "BT17-085_P3", "BT15-082_P2", "BT15-084_P2", "BT14-085_P2", "BT13-100_P2", "BT11-086_P2", "BT10-042_P5" };
+        List<string> UnimplementedCardSpriteNames = new List<string>() { "P-147", "BT17-085_P3", "BT15-082_P2", "BT15-084_P2", "BT14-085_P2", "BT13-100_P2", "BT11-086_P2", "BT10-042_P5" };
         /*
          BT17_085 Rika Nonaka
          BT15_082 Sora Takenouchi

+ 2 - 2
Assets/Photon/PhotonUnityNetworking/Resources/PhotonServerSettings.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:8a194ad4aedcc1c90d10912af25c086c0216d7bd54aceeee43e6e7c6f568979f
-size 2543
+oid sha256:edb10e8392b0cbc61839473eba5c2c0ea79ece97d644583be3ff60385d5bf30f
+size 2565

+ 2 - 0
Assets/Scenes/ContinuousControllerScene.unity

@@ -4365,6 +4365,7 @@ MonoBehaviour:
   - {fileID: 11400000, guid: 7f203349db65aa04693865eed34f75c2, type: 2}
   - {fileID: 11400000, guid: 1b4f2b3ac2ef5d14ab4680de31e7d1b9, type: 2}
   - {fileID: 11400000, guid: 67568485ef3651747a247cf9dae4290c, type: 2}
+  - {fileID: 11400000, guid: 745bbea56f7aff545832cf2044c89672, type: 2}
   - {fileID: 11400000, guid: 22817c00642676b419a4dc04da094c92, type: 2}
   - {fileID: 11400000, guid: 0a9d05db2059379479308e55d9fa8d98, type: 2}
   - {fileID: 11400000, guid: e60c909139d9c3c4bab3429b6d4950c5, type: 2}
@@ -10309,6 +10310,7 @@ MonoBehaviour:
   - {fileID: 11400000, guid: 7f203349db65aa04693865eed34f75c2, type: 2}
   - {fileID: 11400000, guid: 1b4f2b3ac2ef5d14ab4680de31e7d1b9, type: 2}
   - {fileID: 11400000, guid: 67568485ef3651747a247cf9dae4290c, type: 2}
+  - {fileID: 11400000, guid: 745bbea56f7aff545832cf2044c89672, type: 2}
   - {fileID: 11400000, guid: 22817c00642676b419a4dc04da094c92, type: 2}
   - {fileID: 11400000, guid: 0a9d05db2059379479308e55d9fa8d98, type: 2}
   - {fileID: 11400000, guid: e60c909139d9c3c4bab3429b6d4950c5, type: 2}

+ 1 - 0
Assets/Scripts/ICardEffect.cs

@@ -365,6 +365,7 @@ public abstract class ICardEffect
 
         #endregion
 
+        //TODO: Look into this for the on deletion General issue
         #region Determination whether the permanent is same as when triggered
 
         if (IsInheritedEffect || IsLinkedEffect)

+ 7 - 7
Assets/Scripts/Permanent.cs

@@ -1792,9 +1792,9 @@ public class Permanent
                     .Flat()
                     .Map(permanent => permanent.EffectList(EffectTiming.None))
                     .Flat()
-                    .Some(cardEffect => cardEffect is ICanNotPutFieldEffect
+                    .Some(cardEffect => cardEffect is ICanNotMoveEffect
                         && cardEffect.CanUse(null)
-                        && ((ICanNotPutFieldEffect)cardEffect).CanNotPutField(TopCard, null)))
+                        && ((ICanNotMoveEffect)cardEffect).CanNotMove(TopCard, null)))
                 {
                     return false;
                 }
@@ -1804,9 +1804,9 @@ public class Permanent
                 if (GManager.instance.turnStateMachine.gameContext.Players
                         .Map(player => player.EffectList(EffectTiming.None))
                         .Flat()
-                        .Some(cardEffect => cardEffect is ICanNotPutFieldEffect
+                        .Some(cardEffect => cardEffect is ICanNotMoveEffect
                             && cardEffect.CanUse(null)
-                            && ((ICanNotPutFieldEffect)cardEffect).CanNotPutField(TopCard, null)))
+                            && ((ICanNotMoveEffect)cardEffect).CanNotMove(TopCard, null)))
                 {
                     return false;
                 }
@@ -1816,9 +1816,9 @@ public class Permanent
                 if (this == null)
                 {
                     if (EffectList(EffectTiming.None)
-                            .Some(cardEffect => cardEffect is ICanNotPutFieldEffect
+                            .Some(cardEffect => cardEffect is ICanNotMoveEffect
                                 && cardEffect.CanUse(null)
-                                && ((ICanNotPutFieldEffect)cardEffect).CanNotPutField(TopCard, null)))
+                                && ((ICanNotMoveEffect)cardEffect).CanNotMove(TopCard, null)))
                     {
                         return false;
                     }
@@ -2147,7 +2147,7 @@ public class Permanent
             {
                 if (cardEffect is CannotBlockClass)
                 {
-                    if (cardEffect.EffectName == "Can't Block")
+                    if (cardEffect.EffectName == "Unblockable")
                     {
                         return true;
                     }

+ 12 - 0
Assets/Scripts/SelectCardEffect.cs

@@ -505,6 +505,7 @@ public class SelectCardEffect : MonoBehaviourPunCallbacks
                         _slectedInexesInList.Add(selectedIndex);
                     }
 
+                    photonView.RPC("SetTargetIndicies", RpcTarget.All, _slectedInexesInList.ToArray());
                     photonView.RPC("SetTargetCard", RpcTarget.All, targetCardIDs.ToArray());
                 }
             }
@@ -763,4 +764,15 @@ public class SelectCardEffect : MonoBehaviourPunCallbacks
 
         _endSelect = true;
     }
+
+    [PunRPC]
+    public void SetTargetIndicies(int[] CardIDs)
+    {
+        _slectedInexesInList = new List<int>();
+
+        foreach (int index in CardIDs)
+        {
+            _slectedInexesInList.Add(index);
+        }
+    }
 }

+ 1 - 1
ProjectSettings/ProjectSettings.asset

@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:2450bf9effc9c995e95f3c75b3c22bef1a4c5418d3c45ef66d08ee2ec8384562
+oid sha256:6b20831b6e59ecdb2d71679f07935e6a94f27b266575ca5a9f69df798f1e28cf
 size 20168