What is the problem with this Minecraft command block code?

/setblock ~ ~1 ~ minecraft: mob_spawner 0 replace {EntityId: Skeleton, SpawnData:{{Equipment:[{Count:1, id:267, tag:{ench:[{id:20, lvl:1}]}},{Count:1, id:313, tag:{ench:[{id:1, lvl:1}]}},{Count:1, id:316, tag:{ench:[{id:1, lvl:1}]}},{Count:1, id:315, tag:{ench:[{id:1, lvl:1}]}},{Count:1, id:314, tag:{ench:[{id:1, lvl:1}]}}], CustomName: test, CustomNameVisible:1, Attributes:[{Name: generic.maxHealth, Base:120},{Name: generic.movementSpeed, Base:0.3},{Name: generic.attackDamage, Base:10},{Name: generic.followRange, Base:20, SpawnCount:1, SpawnRange:1, RequiredPlayerRange:20, MaxNearbyEntities:1},{Name: generic.knockbackResistance, Base:0.0}], DropChances:[1.0F,0.5F,0.5F,0.5F,0.5F]}

In the command block output it said

[09:47:24] Data tag parsing failed: Unbalanced brackets: {EntityId: Skeleton, SpawnData:{{Equipment:[{Count:1, id:267, tag:{ench:[{id:20, lvl:1}]}},{Count:1, id:313, tag:{ench:[{id:1, lvl:1}]}},{Count:1, id:316, tag:{ench:[{id:1, lvl:1}]}},{Count:1, id:315, tag:{ench:[{id:1, lvl:1}]}},{Count:1, id:314, tag:{ench:[{id:1, lvl:1}]}}], CustomName: test, CustomNameVisible:1, Attributes:[{Name: generic.maxHealth, Base:120},{Name: generic.movementSpeed, Base:0.3},{Name: generic.attackDamage, Base:10},{Name: generic.followRange, Base:20, SpawnCount:1, SpawnRange:1, RequiredPlayerRange:20, MaxNearbyEntities:1},{Name: generic.knockbackResistance, Base:0.0}], DropChances:[1.0F,0.5F,0.5F,0.5F,0.5F]}

Does anyone Know how to fix it and any other possible errors in the code

They only like white codes