From 750a5c1ae4aa54648ad0719979b8db7031080bd9 Mon Sep 17 00:00:00 2001
From: Petr Viktorin <encukou@gmail.com>
Date: Fri, 29 Apr 2011 16:50:22 +0300
Subject: [PATCH 01/16] Pokemon species split: Script for automatic changes.
 See #579

---
 scripts/pokemon_species.py | 164 +++++++++++++++++++++++++++++++++++++
 1 file changed, 164 insertions(+)
 create mode 100644 scripts/pokemon_species.py

diff --git a/scripts/pokemon_species.py b/scripts/pokemon_species.py
new file mode 100644
index 0000000..fd1ba03
--- /dev/null
+++ b/scripts/pokemon_species.py
@@ -0,0 +1,164 @@
+# Encoding: UTF-8
+"""Reorganize Pokemon, PokemonForm, etc. to Species, Pokemon, etc.
+
+This is an unmaintained one-shot script, only included in the repo for
+reference.
+
+"""
+
+import csv
+import os
+
+from pokedex import defaults
+
+number_of_species = 649
+high_id_start = 10000
+
+csv_dir = defaults.get_default_csv_dir()
+
+def to_dict(filename):
+    fullname = os.path.join(csv_dir, filename)
+    reader = csv.reader(open(fullname))
+    column_names = reader.next()
+    entries = dict()
+    for row in reader:
+        row_dict = dict(zip(column_names, row))
+        entries[row_dict.get('id', row_dict.get('pokemon_id'))] = row_dict
+    return entries, column_names
+
+pokemon, pokemon_columns = to_dict('pokemon.csv')
+forms, form_columns = to_dict('pokemon_forms.csv')
+form_groups, form_group_columns = to_dict('pokemon_form_groups.csv')
+evolution_chains, evolution_chain_columns = to_dict('evolution_chains.csv')
+
+result_columns = dict(
+    species='''id identifier generation_id evolves_from_species_id
+        evolution_chain_id color_id shape_id habitat_id
+        growth_rate_id gender_rate capture_rate base_happiness is_baby
+        hatch_counter has_gender_differences forms_switchable'''.split(),
+    pokemon='''id species_id height weight base_experience order'''.split(),
+    form='''id form_identifier pokemon_id introduced_in_version_group_id
+        is_default is_battle_only order'''.split(),
+    chain='''id baby_trigger_item_id'''.split(),
+    )
+
+def normalize_id(id):
+    id = int(id)
+    if id > number_of_species:
+        id = id - high_id_start + number_of_species
+    return id
+
+def put(dct, entry):
+    """Put entry in dct. If already there, check it's the same.
+    """
+    id = int(entry['id'])
+    if id in dct:
+        if entry == dct[id]:
+            pass
+        else:
+            print entry
+            print dct[id]
+            assert False
+    else:
+        dct[id] = entry
+
+forms_switchable = dict(
+        castform=True,
+        unown=False,
+        darmanitan=True,
+        basculin=False,
+        rotom=True,
+        shaymin=True,
+        deerling=True,
+        sawsbuck=True,
+        arceus=True,
+        pichu=False,
+        giratina=True,
+        burmy=True,
+        wormadam=False,
+        deoxys=True,
+        genesect=True,
+        meloetta=True,
+        gastrodon=False,
+        cherrim=True,
+        shellos=False,
+    )
+
+result_species = dict()
+result_pokemon = dict()
+result_forms = dict()
+result_chains = dict()
+
+for form_id, source_form in forms.items():
+    pokemon_id = source_form['unique_pokemon_id'] or source_form['form_base_pokemon_id']
+    species_id = source_form['form_base_pokemon_id']
+    source_pokemon = pokemon[pokemon_id]
+    source_evolution_chain = evolution_chains[source_pokemon['evolution_chain_id']]
+    try:
+        source_group = form_groups[species_id]
+    except KeyError:
+        source_group = dict(is_battle_only=0)
+    all_fields = dict(source_form)
+    all_fields.update(source_group)
+    all_fields.update(source_pokemon)
+    all_fields.update(source_evolution_chain)
+    del all_fields['id']
+    new_species = dict()
+    for column_name in result_columns['species']:
+        if column_name == 'id':
+            new_species[column_name] = normalize_id(species_id)
+        elif column_name == 'evolves_from_species_id':
+            new_species[column_name] = pokemon[species_id]['evolves_from_pokemon_id']
+        elif column_name == 'shape_id':
+            new_species[column_name] = all_fields['pokemon_shape_id']
+        elif column_name == 'forms_switchable':
+            if species_id in form_groups:
+                new_species[column_name] = forms_switchable[source_pokemon['identifier']]
+            else:
+                new_species[column_name] = 0
+        else:
+            new_species[column_name] = all_fields[column_name]
+    put(result_species, new_species)
+    new_pokemon = dict()
+    for column_name in result_columns['pokemon']:
+        if column_name == 'id':
+            new_pokemon[column_name] = normalize_id(pokemon_id)
+        elif column_name == 'species_id':
+            new_pokemon[column_name] = species_id
+        else:
+            new_pokemon[column_name] = all_fields[column_name]
+    put(result_pokemon, new_pokemon)
+    new_form = dict()
+    for column_name in result_columns['form']:
+        if column_name == 'id':
+            new_form[column_name] = normalize_id(form_id)
+        elif column_name == 'pokemon_id':
+            new_form[column_name] = normalize_id(pokemon_id)
+        elif column_name == 'form_identifier':
+            new_form[column_name] = source_form['identifier']
+        elif column_name == 'is_battle_only':
+            if source_form['unique_pokemon_id'] == source_form['form_base_pokemon_id']:
+                # Default form, herefore not battle-only
+                new_form[column_name] = '0'
+            else:
+                # Keep
+                new_form[column_name] = all_fields[column_name]
+        else:
+            new_form[column_name] = all_fields[column_name]
+    put(result_forms, new_form)
+    new_chain = dict(source_evolution_chain)
+    del new_chain['growth_rate_id']
+    put(result_chains, new_chain)
+
+def write_csv(dct, fieldnames, filename):
+    fullname = os.path.join(csv_dir, filename)
+    reader = csv.DictWriter(open(fullname, 'w'), fieldnames)
+    reader.writerow(dict((n,n) for n in fieldnames))
+    for id, row in sorted(dct.items()):
+        reader.writerow(row)
+
+write_csv(result_species, result_columns['species'], 'pokemon_species.csv')
+write_csv(result_pokemon, result_columns['pokemon'], 'pokemon.csv')
+write_csv(result_forms, result_columns['form'], 'pokemon_forms.csv')
+write_csv(result_chains, result_columns['chain'], 'evolution_chains.csv')
+

From 24b0862c32034bf2655454ecdbaa85d02857ef67 Mon Sep 17 00:00:00 2001
From: Petr Viktorin <encukou@gmail.com>
Date: Fri, 29 Apr 2011 22:09:36 +0300
Subject: [PATCH 02/16] Pokemon species split: Automatic data changes

---
 pokedex/data/csv/evolution_chains.csv |  659 ++++++-----
 pokedex/data/csv/pokemon.csv          | 1336 +++++++++++------------
 pokedex/data/csv/pokemon_forms.csv    | 1456 ++++++++++++-------------
 pokedex/data/csv/pokemon_species.csv  |  650 +++++++++++
 4 files changed, 2375 insertions(+), 1726 deletions(-)
 create mode 100644 pokedex/data/csv/pokemon_species.csv

diff --git a/pokedex/data/csv/evolution_chains.csv b/pokedex/data/csv/evolution_chains.csv
index 33799a4..eacdcc6 100644
--- a/pokedex/data/csv/evolution_chains.csv
+++ b/pokedex/data/csv/evolution_chains.csv
@@ -1,330 +1,329 @@
-id,growth_rate_id,baby_trigger_item_id
-1,4,
-2,4,
-3,4,
-4,2,
-5,2,
-6,4,
-7,2,
-8,2,
-9,2,
-10,2,
-11,2,
-12,4,
-13,4,
-14,3,
-15,2,
-16,3,
-17,2,
-18,4,
-19,2,
-20,2,
-21,2,
-22,2,
-23,2,
-24,2,
-25,1,
-26,4,
-27,4,
-28,4,
-29,4,
-30,1,
-31,4,
-32,2,
-33,2,
-34,2,
-35,2,
-36,2,
-37,2,
-38,2,
-39,1,
-40,4,
-41,2,
-42,2,
-43,2,
-44,2,
-45,1,
-46,2,
-47,2,
-48,2,
-49,2,
-50,1,
-51,3,296
-52,2,
-53,2,
-54,2,
-55,2,
-56,1,
-57,2,291
-58,2,
-59,2,
-60,2,
-61,2,
-62,1,
-63,1,
-64,1,
-65,1,
-66,2,
-67,2,
-68,2,
-69,2,
-70,2,
-71,1,
-72,1,293
-73,1,
-74,1,
-75,1,
-76,1,
-77,1,
-78,4,
-79,4,
-80,4,
-81,4,
-82,2,
-83,2,
-84,3,
-85,3,
-86,1,
-87,3,
-88,2,
-89,4,
-90,3,231
-91,2,292
-92,4,
-93,3,
-94,4,
-95,2,
-96,2,
-97,4,
-98,3,
-99,2,
-100,2,232
-101,2,
-102,2,
-103,2,
-104,4,
-105,3,
-106,2,
-107,4,
-108,1,
-109,4,
-110,2,
-111,2,
-112,1,
-113,3,
-114,2,
-115,3,
-116,1,294
-117,1,
-118,1,
-119,2,
-120,1,
-121,3,
-122,1,
-123,1,
-124,1,
-125,1,
-126,1,
-127,1,
-128,1,
-129,4,
-130,4,
-131,4,
-132,4,
-133,2,
-134,2,
-135,2,
-136,4,
-137,4,
-138,4,
-139,2,
-140,1,
-141,2,
-142,6,
-143,1,
-144,5,
-145,4,
-146,6,
-147,2,
-148,3,
-149,4,
-150,3,
-151,1,
-152,2,
-153,1,
-154,2,
-155,2,
-156,5,
-157,6,
-158,4,295
-159,6,
-160,1,
-161,6,
-162,2,
-163,2,
-164,3,
-165,3,
-166,4,
-167,4,
-168,5,
-169,5,
-170,6,
-171,3,
-172,3,
-173,2,
-174,6,
-175,2,
-176,5,
-177,5,
-178,5,
-179,2,
-180,4,
-181,3,
-182,3,
-183,1,
-184,3,297
-185,4,
-186,2,
-187,4,
-188,5,
-189,1,
-190,3,
-191,1,
-192,1,
-193,1,
-194,1,
-195,1,
-196,1,
-197,1,
-198,1,
-199,1,
-200,1,
-201,1,
-202,1,
-203,4,
-204,4,
-205,4,
-206,4,
-207,2,
-208,4,
-209,4,
-211,5,
-212,5,
-213,2,
-214,4,
-215,2,
-216,2,
-217,2,
-218,2,
-219,6,
-220,2,
-221,3,
-223,2,
-224,2,
-228,4,
-229,2,
-230,1,
-232,4,
-233,1,
-234,1,
-235,2,
-236,1,
-237,5,
-239,1,
-240,2,
-241,1,
-242,1,
-243,1,
-244,1,
-245,1,
-246,1,
-247,1,
-248,1,
-249,1,
-250,1,
-251,1,
-252,1,
-253,4,
-254,1,
-255,1,
-256,4,
-257,4,
-258,4,
-259,2,
-260,4,
-261,2,
-262,2,
-263,2,
-264,2,
-265,3,
-266,4,
-267,2,
-268,4,
-269,2,
-270,2,
-271,3,
-272,4,
-273,4,
-274,2,
-275,2,
-276,4,
-277,4,
-278,2,
-279,2,
-280,2,
-281,4,
-282,4,
-283,2,
-284,2,
-285,2,
-286,2,
-287,2,
-288,2,
-289,2,
-290,2,
-291,4,
-292,3,
-293,4,
-294,4,
-295,2,
-296,1,
-297,2,
-298,2,
-299,2,
-300,2,
-301,2,
-302,3,
-303,2,
-304,2,
-305,4,
-306,1,
-307,2,
-308,4,
-309,1,
-310,2,
-311,2,
-312,2,
-313,2,
-314,4,
-315,2,
-316,2,
-317,2,
-318,2,
-319,1,
-320,1,
-321,2,
-322,2,
-323,1,
-324,1,
-325,1,
-326,1,
-327,1,
-328,1,
-329,1,
-330,1,
-331,1,
-332,1,
-333,1,
-334,1,
-335,1,
-336,1,
+id,baby_trigger_item_id
+1,
+2,
+3,
+4,
+5,
+6,
+7,
+8,
+9,
+10,
+11,
+12,
+13,
+14,
+15,
+16,
+17,
+18,
+19,
+20,
+21,
+22,
+23,
+24,
+25,
+26,
+27,
+28,
+29,
+30,
+31,
+32,
+33,
+34,
+35,
+36,
+37,
+38,
+39,
+40,
+41,
+42,
+43,
+44,
+45,
+46,
+47,
+48,
+49,
+50,
+51,296
+52,
+53,
+54,
+55,
+56,
+57,291
+58,
+59,
+60,
+61,
+62,
+63,
+64,
+65,
+66,
+67,
+68,
+69,
+70,
+71,
+72,293
+73,
+74,
+75,
+76,
+77,
+78,
+79,
+80,
+81,
+82,
+83,
+84,
+85,
+86,
+87,
+88,
+89,
+90,231
+91,292
+92,
+93,
+94,
+95,
+96,
+97,
+98,
+99,
+100,232
+101,
+102,
+103,
+104,
+105,
+106,
+107,
+108,
+109,
+110,
+111,
+112,
+113,
+114,
+115,
+116,294
+117,
+118,
+119,
+120,
+121,
+122,
+123,
+124,
+125,
+126,
+127,
+128,
+129,
+130,
+131,
+132,
+133,
+134,
+135,
+136,
+137,
+138,
+139,
+140,
+141,
+142,
+143,
+144,
+145,
+146,
+147,
+148,
+149,
+150,
+151,
+152,
+153,
+154,
+155,
+156,
+157,
+158,295
+159,
+160,
+161,
+162,
+163,
+164,
+165,
+166,
+167,
+168,
+169,
+170,
+171,
+172,
+173,
+174,
+175,
+176,
+177,
+178,
+179,
+180,
+181,
+182,
+183,
+184,297
+185,
+186,
+187,
+188,
+189,
+190,
+191,
+192,
+193,
+194,
+195,
+196,
+197,
+198,
+199,
+200,
+201,
+202,
+203,
+204,
+205,
+206,
+207,
+208,
+209,
+211,
+212,
+213,
+214,
+215,
+216,
+217,
+218,
+219,
+220,
+221,
+223,
+224,
+228,
+229,
+230,
+232,
+233,
+234,
+235,
+236,
+237,
+239,
+240,
+241,
+242,
+243,
+244,
+245,
+246,
+247,
+248,
+249,
+250,
+252,
+253,
+254,
+255,
+256,
+257,
+258,
+259,
+260,
+261,
+262,
+263,
+264,
+265,
+266,
+267,
+268,
+269,
+270,
+271,
+272,
+273,
+274,
+275,
+276,
+277,
+278,
+279,
+280,
+281,
+282,
+283,
+284,
+285,
+286,
+287,
+288,
+289,
+290,
+291,
+292,
+293,
+294,
+295,
+296,
+297,
+298,
+299,
+300,
+301,
+302,
+303,
+304,
+305,
+306,
+307,
+308,
+309,
+310,
+311,
+312,
+313,
+314,
+315,
+316,
+317,
+318,
+319,
+320,
+321,
+322,
+323,
+324,
+325,
+326,
+327,
+328,
+329,
+330,
+331,
+332,
+333,
+334,
+335,
+336,
diff --git a/pokedex/data/csv/pokemon.csv b/pokedex/data/csv/pokemon.csv
index c68a6bf..18e04bf 100644
--- a/pokedex/data/csv/pokemon.csv
+++ b/pokedex/data/csv/pokemon.csv
@@ -1,668 +1,668 @@
-id,identifier,generation_id,evolution_chain_id,evolves_from_pokemon_id,height,weight,color_id,pokemon_shape_id,habitat_id,gender_rate,capture_rate,base_experience,base_happiness,is_baby,hatch_counter,has_gender_differences,order
-1,bulbasaur,1,1,,7,69,5,8,3,1,45,64,70,0,20,0,1
-2,ivysaur,1,1,1,10,130,5,8,3,1,45,141,70,0,20,0,2
-3,venusaur,1,1,2,20,1000,5,8,3,1,45,208,70,0,20,1,3
-4,charmander,1,2,,6,85,8,6,4,1,45,65,70,0,20,0,4
-5,charmeleon,1,2,4,11,190,8,6,4,1,45,142,70,0,20,0,5
-6,charizard,1,2,5,17,905,8,6,4,1,45,209,70,0,20,0,6
-7,squirtle,1,3,,5,90,2,6,9,1,45,66,70,0,20,0,7
-8,wartortle,1,3,7,10,225,2,6,9,1,45,143,70,0,20,0,8
-9,blastoise,1,3,8,16,855,2,6,9,1,45,210,70,0,20,0,9
-10,caterpie,1,4,,3,29,5,2,2,4,255,53,70,0,15,0,10
-11,metapod,1,4,10,7,99,5,2,2,4,120,72,70,0,15,0,11
-12,butterfree,1,4,11,11,320,9,13,2,4,45,160,70,0,15,1,12
-13,weedle,1,5,,3,32,3,2,2,4,255,52,70,0,15,0,13
-14,kakuna,1,5,13,6,100,10,2,2,4,120,71,70,0,15,0,14
-15,beedrill,1,5,14,10,295,10,13,2,4,45,159,70,0,15,0,15
-16,pidgey,1,6,,3,18,3,9,2,4,255,55,70,0,15,0,16
-17,pidgeotto,1,6,16,11,300,3,9,2,4,120,113,70,0,15,0,17
-18,pidgeot,1,6,17,15,395,3,9,2,4,45,172,70,0,15,0,18
-19,rattata,1,7,,3,35,7,8,3,4,255,57,70,0,15,1,19
-20,raticate,1,7,19,7,185,3,8,3,4,127,116,70,0,15,1,20
-21,spearow,1,8,,3,20,3,9,6,4,255,58,70,0,15,0,21
-22,fearow,1,8,21,12,380,3,9,6,4,90,162,70,0,15,0,22
-23,ekans,1,9,,20,69,7,2,3,4,255,62,70,0,20,0,23
-24,arbok,1,9,23,35,650,7,2,3,4,90,147,70,0,20,0,24
-25,pikachu,1,10,172,4,60,10,8,2,4,190,82,70,0,10,1,26
-26,raichu,1,10,25,8,300,10,6,2,4,75,122,70,0,10,1,27
-27,sandshrew,1,11,,6,120,10,6,6,4,255,93,70,0,20,0,28
-28,sandslash,1,11,27,10,295,10,6,6,4,90,163,70,0,20,0,29
-29,nidoran-f,1,12,,4,70,2,8,3,8,235,59,70,0,20,0,30
-30,nidorina,1,12,29,8,200,2,8,3,8,120,117,70,0,20,0,31
-31,nidoqueen,1,12,30,13,600,2,6,3,8,45,194,70,0,20,0,32
-32,nidoran-m,1,13,,5,90,7,8,3,0,235,60,70,0,20,0,33
-33,nidorino,1,13,32,9,195,7,8,3,0,120,118,70,0,20,0,34
-34,nidoking,1,13,33,14,620,7,6,3,0,45,195,70,0,20,0,35
-35,clefairy,1,14,173,6,75,6,6,4,6,150,68,140,0,10,0,37
-36,clefable,1,14,35,13,400,6,6,4,6,25,129,140,0,10,0,38
-37,vulpix,1,15,,6,99,3,8,3,6,190,63,70,0,20,0,39
-38,ninetales,1,15,37,11,199,10,8,3,6,75,178,70,0,20,0,40
-39,jigglypuff,1,16,174,5,55,6,12,3,6,170,76,70,0,10,0,42
-40,wigglytuff,1,16,39,10,120,6,12,3,6,50,109,70,0,10,0,43
-41,zubat,1,17,,8,75,7,9,1,4,255,54,70,0,15,1,44
-42,golbat,1,17,41,16,550,7,9,1,4,90,171,70,0,15,1,45
-43,oddish,1,18,,5,54,2,7,3,4,255,78,70,0,20,0,47
-44,gloom,1,18,43,8,86,2,12,3,4,120,132,70,0,20,1,48
-45,vileplume,1,18,44,12,186,8,12,3,4,45,184,70,0,20,1,49
-46,paras,1,19,,3,54,8,14,2,4,190,70,70,0,20,0,51
-47,parasect,1,19,46,10,295,8,14,2,4,75,128,70,0,20,0,52
-48,venonat,1,20,,10,300,7,12,2,4,190,75,70,0,20,0,53
-49,venomoth,1,20,48,15,125,7,13,2,4,75,138,70,0,20,0,54
-50,diglett,1,21,,2,8,3,5,1,4,255,81,70,0,20,0,55
-51,dugtrio,1,21,50,7,333,3,11,1,4,50,153,70,0,20,0,56
-52,meowth,1,22,,4,42,10,8,8,4,255,69,70,0,20,0,57
-53,persian,1,22,52,10,320,10,8,8,4,90,148,70,0,20,0,58
-54,psyduck,1,23,,8,196,10,6,9,4,190,80,70,0,20,0,59
-55,golduck,1,23,54,17,766,2,6,9,4,75,174,70,0,20,0,60
-56,mankey,1,24,,5,280,3,6,4,4,190,74,70,0,20,0,61
-57,primeape,1,24,56,10,320,3,6,4,4,75,149,70,0,20,0,62
-58,growlithe,1,25,,7,190,3,8,3,2,190,91,70,0,20,0,63
-59,arcanine,1,25,58,19,1550,3,8,3,2,75,213,70,0,20,0,64
-60,poliwag,1,26,,6,124,2,7,9,4,255,77,70,0,20,0,65
-61,poliwhirl,1,26,60,10,200,2,12,9,4,120,131,70,0,20,0,66
-62,poliwrath,1,26,61,13,540,2,12,9,4,45,185,70,0,20,0,67
-63,abra,1,27,,9,195,3,6,8,2,200,75,70,0,20,0,69
-64,kadabra,1,27,63,13,565,3,6,8,2,100,145,70,0,20,1,70
-65,alakazam,1,27,64,15,480,3,12,8,2,50,186,70,0,20,1,71
-66,machop,1,28,,8,195,4,6,4,2,180,75,70,0,20,0,72
-67,machoke,1,28,66,15,705,4,12,4,2,90,146,70,0,20,0,73
-68,machamp,1,28,67,16,1300,4,12,4,2,45,193,70,0,20,0,74
-69,bellsprout,1,29,,7,40,5,12,2,4,255,84,70,0,20,0,75
-70,weepinbell,1,29,69,10,64,5,5,2,4,120,151,70,0,20,0,76
-71,victreebel,1,29,70,17,155,5,5,2,4,45,191,70,0,20,0,77
-72,tentacool,1,30,,9,455,2,10,7,4,190,105,70,0,20,0,78
-73,tentacruel,1,30,72,16,550,2,10,7,4,60,205,70,0,20,0,79
-74,geodude,1,31,,4,200,3,4,4,4,255,73,70,0,15,0,80
-75,graveler,1,31,74,10,1050,3,12,4,4,120,134,70,0,15,0,81
-76,golem,1,31,75,14,3000,3,12,4,4,45,177,70,0,15,0,82
-77,ponyta,1,32,,10,300,10,8,3,4,190,152,70,0,20,0,83
-78,rapidash,1,32,77,17,950,10,8,3,4,60,192,70,0,20,0,84
-79,slowpoke,1,33,,12,360,6,8,9,4,190,99,70,0,20,0,85
-80,slowbro,1,33,79,16,785,6,6,9,4,75,164,70,0,20,0,86
-81,magnemite,1,34,,3,60,4,4,6,-1,190,89,70,0,20,0,88
-82,magneton,1,34,81,10,600,4,11,6,-1,60,161,70,0,20,0,89
-83,farfetchd,1,35,,8,150,3,9,3,4,45,94,70,0,20,0,91
-84,doduo,1,36,,14,392,3,7,3,4,190,96,70,0,20,1,92
-85,dodrio,1,36,84,18,852,3,7,3,4,45,158,70,0,20,1,93
-86,seel,1,37,,11,900,9,3,7,4,190,100,70,0,20,0,94
-87,dewgong,1,37,86,17,1200,9,3,7,4,75,176,70,0,20,0,95
-88,grimer,1,38,,9,300,7,4,8,4,190,90,70,0,20,0,96
-89,muk,1,38,88,12,300,7,4,8,4,75,157,70,0,20,0,97
-90,shellder,1,39,,3,40,7,1,7,4,190,97,70,0,20,0,98
-91,cloyster,1,39,90,15,1325,7,1,7,4,60,203,70,0,20,0,99
-92,gastly,1,40,,13,1,7,1,1,4,190,95,70,0,20,0,100
-93,haunter,1,40,92,16,1,7,4,1,4,90,126,70,0,20,0,101
-94,gengar,1,40,93,15,405,7,6,1,4,45,190,70,0,20,0,102
-95,onix,1,41,,88,2100,4,2,1,4,45,108,70,0,25,0,103
-96,drowzee,1,42,,10,324,10,12,3,4,190,102,70,0,20,0,105
-97,hypno,1,42,96,16,756,10,12,3,4,75,165,70,0,20,1,106
-98,krabby,1,43,,4,65,8,14,9,4,225,115,70,0,20,0,107
-99,kingler,1,43,98,13,600,8,14,9,4,60,206,70,0,20,0,108
-100,voltorb,1,44,,5,104,8,1,8,-1,190,103,70,0,20,0,109
-101,electrode,1,44,100,12,666,8,1,8,-1,60,150,70,0,20,0,110
-102,exeggcute,1,45,,4,25,6,11,2,4,90,98,70,0,20,0,111
-103,exeggutor,1,45,102,20,1200,10,7,2,4,45,212,70,0,20,0,112
-104,cubone,1,46,,4,65,3,6,4,4,190,87,70,0,20,0,113
-105,marowak,1,46,104,10,450,3,6,4,4,75,124,70,0,20,0,114
-106,hitmonlee,1,47,236,15,498,3,12,8,0,45,139,70,0,25,0,116
-107,hitmonchan,1,47,236,14,502,3,12,8,0,45,140,70,0,25,0,117
-108,lickitung,1,48,,12,655,6,6,3,4,45,127,70,0,20,0,119
-109,koffing,1,49,,6,10,7,1,8,4,190,114,70,0,20,0,121
-110,weezing,1,49,109,12,95,7,11,8,4,60,173,70,0,20,0,122
-111,rhyhorn,1,50,,10,1150,4,8,6,4,120,135,70,0,20,1,123
-112,rhydon,1,50,111,19,1200,4,6,6,4,60,204,70,0,20,1,124
-113,chansey,1,51,440,11,346,6,6,8,8,30,255,140,0,40,0,127
-114,tangela,1,52,,10,350,2,7,3,4,45,166,70,0,20,0,129
-115,kangaskhan,1,53,,22,800,3,6,3,8,45,175,70,0,20,0,131
-116,horsea,1,54,,4,80,2,5,7,4,225,83,70,0,20,0,132
-117,seadra,1,54,116,12,250,2,5,7,4,75,155,70,0,20,0,133
-118,goldeen,1,55,,6,150,8,3,9,4,225,111,70,0,20,1,135
-119,seaking,1,55,118,13,390,8,3,9,4,60,170,70,0,20,1,136
-120,staryu,1,56,,8,345,3,5,7,-1,225,106,70,0,20,0,137
-121,starmie,1,56,120,11,800,7,5,7,-1,60,207,70,0,20,0,138
-122,mr-mime,1,57,439,13,545,6,12,8,4,45,136,70,0,25,0,140
-123,scyther,1,58,,15,560,5,13,3,4,45,187,70,0,25,1,141
-124,jynx,1,59,238,14,406,8,12,8,8,45,137,70,0,25,0,144
-125,electabuzz,1,60,239,11,300,10,6,3,2,45,156,70,0,25,0,146
-126,magmar,1,61,240,13,445,8,6,4,2,45,167,70,0,25,0,149
-127,pinsir,1,62,,15,550,3,12,2,4,45,200,70,0,25,0,151
-128,tauros,1,63,,14,884,3,8,3,0,45,211,70,0,20,0,152
-129,magikarp,1,64,,9,100,8,3,9,4,255,20,70,0,5,1,153
-130,gyarados,1,64,129,65,2350,2,2,9,4,45,214,70,0,5,1,154
-131,lapras,1,65,,25,2200,2,3,7,4,45,219,70,0,40,0,155
-132,ditto,1,66,,3,40,7,1,8,-1,35,61,70,0,20,0,156
-133,eevee,1,67,,3,65,3,8,8,1,45,92,70,0,35,0,157
-134,vaporeon,1,67,133,10,290,2,8,8,1,45,196,70,0,35,0,158
-135,jolteon,1,67,133,8,245,10,8,8,1,45,197,70,0,35,0,159
-136,flareon,1,67,133,9,250,8,8,8,1,45,198,70,0,35,0,160
-137,porygon,1,68,,8,365,6,7,8,-1,45,130,70,0,20,0,165
-138,omanyte,1,69,,4,75,2,10,7,1,45,99,70,0,30,0,168
-139,omastar,1,69,138,10,350,2,10,7,1,45,199,70,0,30,0,169
-140,kabuto,1,70,,5,115,3,14,7,1,45,99,70,0,30,0,170
-141,kabutops,1,70,140,13,405,3,6,7,1,45,199,70,0,30,0,171
-142,aerodactyl,1,71,,18,590,7,9,4,1,45,202,70,0,35,0,172
-143,snorlax,1,72,446,21,4600,1,12,4,1,25,154,70,0,40,0,174
-144,articuno,1,73,,17,554,2,9,5,-1,3,215,35,0,80,0,175
-145,zapdos,1,74,,16,526,10,9,5,-1,3,216,35,0,80,0,176
-146,moltres,1,75,,20,600,10,9,5,-1,3,217,35,0,80,0,177
-147,dratini,1,76,,18,33,2,2,9,4,45,67,35,0,40,0,178
-148,dragonair,1,76,147,40,165,2,2,9,4,45,144,35,0,40,0,179
-149,dragonite,1,76,148,22,2100,3,6,9,4,45,218,35,0,40,0,180
-150,mewtwo,1,77,,20,1220,7,6,5,-1,3,220,0,0,120,0,181
-151,mew,1,78,,4,40,6,6,5,-1,45,64,100,0,120,0,182
-152,chikorita,2,79,,9,64,5,8,3,1,45,64,70,0,20,0,183
-153,bayleef,2,79,152,12,158,5,8,3,1,45,141,70,0,20,0,184
-154,meganium,2,79,153,18,1005,5,8,3,1,45,208,70,0,20,1,185
-155,cyndaquil,2,80,,5,79,10,12,3,1,45,65,70,0,20,0,186
-156,quilava,2,80,155,9,190,10,8,3,1,45,142,70,0,20,0,187
-157,typhlosion,2,80,156,17,795,10,8,3,1,45,209,70,0,20,0,188
-158,totodile,2,81,,6,95,2,6,9,1,45,66,70,0,20,0,189
-159,croconaw,2,81,158,11,250,2,6,9,1,45,143,70,0,20,0,190
-160,feraligatr,2,81,159,23,888,2,6,9,1,45,210,70,0,20,0,191
-161,sentret,2,82,,8,60,3,8,3,4,255,57,70,0,15,0,192
-162,furret,2,82,161,18,325,3,8,3,4,90,116,70,0,15,0,193
-163,hoothoot,2,83,,7,212,3,9,2,4,255,58,70,0,15,0,194
-164,noctowl,2,83,163,16,408,3,9,2,4,90,162,70,0,15,0,195
-165,ledyba,2,84,,10,108,8,9,2,4,255,54,70,0,15,1,196
-166,ledian,2,84,165,14,356,8,9,2,4,90,134,70,0,15,1,197
-167,spinarak,2,85,,5,85,5,14,2,4,255,54,70,0,15,0,198
-168,ariados,2,85,167,11,335,8,14,2,4,90,134,70,0,15,0,199
-169,crobat,2,17,42,18,750,7,13,1,4,90,204,70,0,15,0,46
-170,chinchou,2,86,,5,120,2,3,7,4,190,90,70,0,20,0,200
-171,lanturn,2,86,170,12,225,2,3,7,4,75,156,70,0,20,0,201
-172,pichu,2,10,,3,20,10,8,2,4,190,42,70,1,10,0,25
-173,cleffa,2,14,,3,30,6,6,4,6,150,37,140,1,10,0,36
-174,igglybuff,2,16,,3,10,6,12,3,6,170,39,70,1,10,0,41
-175,togepi,2,87,,3,15,9,12,2,1,190,74,70,1,10,0,202
-176,togetic,2,87,175,6,32,9,12,2,1,75,114,70,0,10,0,203
-177,natu,2,88,,2,20,5,9,2,4,190,73,70,0,20,0,205
-178,xatu,2,88,177,15,150,5,9,2,4,75,171,70,0,20,1,206
-179,mareep,2,89,,6,78,9,8,3,4,235,59,70,0,20,0,207
-180,flaaffy,2,89,179,8,133,6,6,3,4,120,117,70,0,20,0,208
-181,ampharos,2,89,180,14,615,10,6,3,4,45,194,70,0,20,0,209
-182,bellossom,2,18,44,4,58,5,12,3,4,45,184,70,0,20,0,50
-183,marill,2,90,298,4,85,2,6,9,4,190,58,70,0,10,0,211
-184,azumarill,2,90,183,8,285,2,6,9,4,75,153,70,0,10,0,212
-185,sudowoodo,2,91,438,12,380,3,12,2,4,65,135,70,0,20,1,214
-186,politoed,2,26,61,11,339,5,12,9,4,45,185,70,0,20,1,68
-187,hoppip,2,92,,4,5,6,6,3,4,255,74,70,0,20,0,215
-188,skiploom,2,92,187,6,10,5,6,3,4,120,136,70,0,20,0,216
-189,jumpluff,2,92,188,8,30,2,6,3,4,45,176,70,0,20,0,217
-190,aipom,2,93,,8,115,7,6,2,4,45,94,70,0,20,1,218
-191,sunkern,2,94,,3,18,10,1,3,4,235,52,70,0,20,0,220
-192,sunflora,2,94,191,8,85,10,12,3,4,120,146,70,0,20,0,221
-193,yanma,2,95,,12,380,8,13,2,4,75,147,70,0,20,0,222
-194,wooper,2,96,,4,85,2,7,9,4,255,52,70,0,20,1,224
-195,quagsire,2,96,194,14,750,2,6,9,4,90,137,70,0,20,1,225
-196,espeon,2,67,133,9,265,7,8,8,1,45,197,70,0,35,0,161
-197,umbreon,2,67,133,10,270,1,8,8,1,45,197,35,0,35,0,162
-198,murkrow,2,97,,5,21,1,9,2,4,30,107,35,0,20,1,226
-199,slowking,2,33,79,20,795,6,6,9,4,70,164,70,0,20,0,87
-200,misdreavus,2,98,,7,10,4,1,1,4,45,147,35,0,25,0,228
-201,unown,2,99,,5,50,1,1,5,-1,225,61,70,0,40,0,230
-202,wobbuffet,2,100,360,13,285,2,5,1,4,45,177,70,0,20,1,232
-203,girafarig,2,101,,15,415,10,8,3,4,60,149,70,0,20,1,233
-204,pineco,2,102,,6,72,4,1,2,4,190,60,70,0,20,0,234
-205,forretress,2,102,204,12,1258,7,1,2,4,75,118,70,0,20,0,235
-206,dunsparce,2,103,,15,140,10,2,1,4,190,125,70,0,20,0,236
-207,gligar,2,104,,11,648,7,9,4,4,60,108,70,0,20,1,237
-208,steelix,2,41,95,92,4000,4,2,1,4,25,196,70,0,25,1,104
-209,snubbull,2,105,,6,78,6,12,8,6,190,63,70,0,20,0,239
-210,granbull,2,105,209,14,487,7,6,8,6,75,178,70,0,20,0,240
-211,qwilfish,2,106,,5,39,4,3,7,4,45,100,70,0,20,0,241
-212,scizor,2,58,123,18,1180,8,13,3,4,25,200,70,0,25,1,142
-213,shuckle,2,107,,6,205,10,14,4,4,190,80,70,0,20,0,242
-214,heracross,2,108,,15,540,2,12,2,4,45,200,70,0,25,1,243
-215,sneasel,2,109,,9,280,1,6,2,4,60,132,35,0,20,1,244
-216,teddiursa,2,110,,6,88,3,6,4,4,120,124,70,0,20,0,246
-217,ursaring,2,110,216,18,1258,3,6,4,4,60,189,70,0,20,1,247
-218,slugma,2,111,,7,350,8,2,4,4,190,78,70,0,20,0,248
-219,magcargo,2,111,218,8,550,8,2,4,4,75,154,70,0,20,0,249
-220,swinub,2,112,,4,65,3,8,1,4,225,78,70,0,20,0,250
-221,piloswine,2,112,220,11,558,3,8,1,4,75,160,70,0,20,1,251
-222,corsola,2,113,,6,50,6,14,7,6,60,113,70,0,20,0,253
-223,remoraid,2,114,,6,120,4,3,7,4,190,78,70,0,20,0,254
-224,octillery,2,114,223,9,285,8,10,7,4,75,164,70,0,20,1,255
-225,delibird,2,115,,9,160,8,9,4,4,45,183,70,0,20,0,256
-226,mantine,2,116,458,21,2200,7,9,7,4,25,168,70,0,25,0,258
-227,skarmory,2,117,,17,505,4,9,6,4,25,168,70,0,25,0,259
-228,houndour,2,118,,6,108,1,8,6,4,120,114,35,0,20,0,260
-229,houndoom,2,118,228,14,350,1,8,6,4,45,204,35,0,20,1,261
-230,kingdra,2,54,117,18,1520,2,5,7,4,45,207,70,0,20,0,134
-231,phanpy,2,119,,5,335,2,8,6,4,120,124,70,0,20,0,262
-232,donphan,2,119,231,11,1200,4,8,6,4,60,189,70,0,20,1,263
-233,porygon2,2,68,137,6,325,8,7,8,-1,45,180,70,0,20,0,166
-234,stantler,2,120,,14,712,3,8,2,4,45,165,70,0,20,0,264
-235,smeargle,2,121,,12,580,9,6,8,4,45,106,70,0,20,0,265
-236,tyrogue,2,47,,7,210,7,12,8,0,75,91,70,1,25,0,115
-237,hitmontop,2,47,236,14,480,3,6,8,0,45,138,70,0,25,0,118
-238,smoochum,2,59,,4,60,6,12,8,8,45,87,70,1,25,0,143
-239,elekid,2,60,,6,235,10,12,3,2,45,106,70,1,25,0,145
-240,magby,2,61,,7,214,8,6,4,2,45,117,70,1,25,0,148
-241,miltank,2,122,,12,755,6,6,3,8,45,200,70,0,20,0,266
-242,blissey,2,51,113,15,468,6,12,8,8,30,255,140,0,40,0,128
-243,raikou,2,123,,19,1780,10,8,3,-1,3,216,35,0,80,0,267
-244,entei,2,124,,21,1980,3,8,3,-1,3,217,35,0,80,0,268
-245,suicune,2,125,,20,1870,2,8,3,-1,3,215,35,0,80,0,269
-246,larvitar,2,126,,6,720,5,6,4,4,45,67,35,0,40,0,270
-247,pupitar,2,126,246,12,1520,4,2,4,4,45,144,35,0,40,0,271
-248,tyranitar,2,126,247,20,2020,5,6,4,4,45,218,35,0,40,0,272
-249,lugia,2,127,,52,2160,9,9,5,-1,3,220,0,0,120,0,273
-250,ho-oh,2,128,,38,1990,8,9,5,-1,3,220,0,0,120,0,274
-251,celebi,2,129,,6,50,5,12,2,-1,45,64,100,0,120,0,275
-252,treecko,3,130,,5,50,5,6,2,1,45,65,70,0,20,0,276
-253,grovyle,3,130,252,9,216,5,6,2,1,45,141,70,0,20,0,277
-254,sceptile,3,130,253,17,522,5,6,2,1,45,208,70,0,20,0,278
-255,torchic,3,131,,4,25,8,7,3,1,45,65,70,0,20,1,279
-256,combusken,3,131,255,9,195,8,6,3,1,45,142,70,0,20,1,280
-257,blaziken,3,131,256,19,520,8,6,3,1,45,209,70,0,20,1,281
-258,mudkip,3,132,,4,76,2,8,9,1,45,65,70,0,20,0,282
-259,marshtomp,3,132,258,7,280,2,6,9,1,45,143,70,0,20,0,283
-260,swampert,3,132,259,15,819,2,6,9,1,45,210,70,0,20,0,284
-261,poochyena,3,133,,5,136,4,8,3,4,255,55,70,0,15,0,285
-262,mightyena,3,133,261,10,370,4,8,3,4,127,128,70,0,15,0,286
-263,zigzagoon,3,134,,4,175,3,8,3,4,255,60,70,0,15,0,287
-264,linoone,3,134,263,5,325,9,8,3,4,90,128,70,0,15,0,288
-265,wurmple,3,135,,3,36,8,2,2,4,255,54,70,0,15,0,289
-266,silcoon,3,135,265,6,100,9,1,2,4,120,72,70,0,15,0,290
-267,beautifly,3,135,266,10,284,10,13,2,4,45,161,70,0,15,1,291
-268,cascoon,3,135,265,7,115,7,1,2,4,120,72,70,0,15,0,292
-269,dustox,3,135,268,12,316,5,13,2,4,45,161,70,0,15,1,293
-270,lotad,3,136,,5,26,5,14,9,4,255,74,70,0,15,0,294
-271,lombre,3,136,270,12,325,5,12,9,4,120,141,70,0,15,0,295
-272,ludicolo,3,136,271,15,550,5,12,9,4,45,181,70,0,15,1,296
-273,seedot,3,137,,5,40,3,7,2,4,255,74,70,0,15,0,297
-274,nuzleaf,3,137,273,10,280,3,12,2,4,120,141,70,0,15,1,298
-275,shiftry,3,137,274,13,596,3,12,2,4,45,181,70,0,15,1,299
-276,taillow,3,138,,3,23,2,9,3,4,200,59,70,0,15,0,300
-277,swellow,3,138,276,7,198,2,9,3,4,45,162,70,0,15,0,301
-278,wingull,3,139,,6,95,9,9,7,4,190,64,70,0,20,0,302
-279,pelipper,3,139,278,12,280,10,9,7,4,45,164,70,0,20,0,303
-280,ralts,3,140,,4,66,9,12,8,4,235,70,35,0,20,0,304
-281,kirlia,3,140,280,8,202,9,12,8,4,120,140,35,0,20,0,305
-282,gardevoir,3,140,281,16,484,9,12,8,4,45,208,35,0,20,0,306
-283,surskit,3,141,,5,17,2,14,9,4,200,63,70,0,15,0,308
-284,masquerain,3,141,283,8,36,2,13,9,4,75,128,70,0,15,0,309
-285,shroomish,3,142,,4,45,3,7,2,4,255,65,70,0,15,0,310
-286,breloom,3,142,285,12,392,5,6,2,4,90,165,70,0,15,0,311
-287,slakoth,3,143,,8,240,3,8,2,4,255,83,70,0,15,0,312
-288,vigoroth,3,143,287,14,465,9,6,2,4,120,126,70,0,15,0,313
-289,slaking,3,143,288,20,1305,3,12,2,4,45,210,70,0,15,0,314
-290,nincada,3,144,,5,55,4,14,2,4,255,65,70,0,15,0,315
-291,ninjask,3,144,290,8,120,10,13,2,4,120,155,70,0,15,0,316
-292,shedinja,3,144,290,8,12,3,5,2,-1,45,95,70,0,15,0,317
-293,whismur,3,145,,6,163,6,6,1,4,190,68,70,0,20,0,318
-294,loudred,3,145,293,10,405,2,6,1,4,120,126,70,0,20,0,319
-295,exploud,3,145,294,15,840,2,6,1,4,45,184,70,0,20,0,320
-296,makuhita,3,146,,10,864,10,12,4,2,180,87,70,0,20,0,321
-297,hariyama,3,146,296,23,2538,3,12,4,2,200,184,70,0,20,0,322
-298,azurill,3,90,,2,20,2,7,9,6,150,33,70,1,10,0,210
-299,nosepass,3,147,,10,970,4,12,1,4,255,108,70,0,20,0,323
-300,skitty,3,148,,6,110,6,8,2,6,255,65,70,0,15,0,325
-301,delcatty,3,148,300,11,326,7,8,2,6,60,138,70,0,15,0,326
-302,sableye,3,149,,5,110,7,12,1,4,45,98,35,0,25,0,327
-303,mawile,3,150,,6,115,1,12,1,4,45,98,70,0,20,0,328
-304,aron,3,151,,4,600,4,8,4,4,180,96,35,0,35,0,329
-305,lairon,3,151,304,9,1200,4,8,4,4,90,152,35,0,35,0,330
-306,aggron,3,151,305,21,3600,4,6,4,4,45,205,35,0,35,0,331
-307,meditite,3,152,,6,112,2,12,4,4,180,91,70,0,20,1,332
-308,medicham,3,152,307,13,315,8,12,4,4,90,153,70,0,20,1,333
-309,electrike,3,153,,6,152,5,8,3,4,120,104,70,0,20,0,334
-310,manectric,3,153,309,15,402,10,8,3,4,45,168,70,0,20,0,335
-311,plusle,3,154,,4,42,10,6,3,4,200,120,70,0,20,0,336
-312,minun,3,155,,4,42,10,6,3,4,200,120,70,0,20,0,337
-313,volbeat,3,156,,7,177,4,6,2,0,150,146,70,0,15,0,338
-314,illumise,3,157,,6,177,7,12,2,8,150,146,70,0,15,0,339
-315,roselia,3,158,406,3,20,5,12,3,4,150,152,70,0,20,1,341
-316,gulpin,3,159,,4,103,5,4,3,4,225,75,70,0,20,1,343
-317,swalot,3,159,316,17,800,7,4,3,4,75,168,70,0,20,1,344
-318,carvanha,3,160,,8,208,8,3,7,4,225,88,35,0,20,0,345
-319,sharpedo,3,160,318,18,888,2,3,7,4,60,175,35,0,20,0,346
-320,wailmer,3,161,,20,1300,2,3,7,4,125,137,70,0,40,0,347
-321,wailord,3,161,320,145,3980,2,3,7,4,60,206,70,0,40,0,348
-322,numel,3,162,,7,240,10,8,4,4,255,88,70,0,20,1,349
-323,camerupt,3,162,322,19,2200,8,8,4,4,150,175,70,0,20,1,350
-324,torkoal,3,163,,5,804,3,8,4,4,90,161,70,0,20,0,351
-325,spoink,3,164,,7,306,1,4,4,4,255,89,70,0,20,0,352
-326,grumpig,3,164,325,9,715,7,6,4,4,60,164,70,0,20,0,353
-327,spinda,3,165,,11,50,3,6,4,4,255,85,70,0,15,0,354
-328,trapinch,3,166,,7,150,3,14,6,4,255,73,70,0,20,0,355
-329,vibrava,3,166,328,11,153,5,13,6,4,120,126,70,0,20,0,356
-330,flygon,3,166,329,20,820,5,9,6,4,45,197,70,0,20,0,357
-331,cacnea,3,167,,4,513,5,12,6,4,190,97,35,0,20,0,358
-332,cacturne,3,167,331,13,774,5,12,6,4,60,177,35,0,20,1,359
-333,swablu,3,168,,4,12,2,9,2,4,255,74,70,0,20,0,360
-334,altaria,3,168,333,11,206,2,9,2,4,45,188,70,0,20,0,361
-335,zangoose,3,169,,13,403,9,6,3,4,90,165,70,0,20,0,362
-336,seviper,3,170,,27,525,1,2,3,4,90,165,70,0,20,0,363
-337,lunatone,3,171,,10,1680,10,1,1,-1,45,150,70,0,25,0,364
-338,solrock,3,172,,12,1540,8,1,1,-1,45,150,70,0,25,0,365
-339,barboach,3,173,,4,19,4,3,9,4,190,92,70,0,20,0,366
-340,whiscash,3,173,339,9,236,2,3,9,4,75,158,70,0,20,0,367
-341,corphish,3,174,,6,115,8,14,9,4,205,111,70,0,15,0,368
-342,crawdaunt,3,174,341,11,328,8,14,9,4,155,161,70,0,15,0,369
-343,baltoy,3,175,,5,215,3,4,6,-1,255,58,70,0,20,0,370
-344,claydol,3,175,343,15,1080,1,4,6,-1,90,189,70,0,20,0,371
-345,lileep,3,176,,10,238,7,5,7,1,45,99,70,0,30,0,372
-346,cradily,3,176,345,15,604,5,5,7,1,45,199,70,0,30,0,373
-347,anorith,3,177,,7,125,4,14,9,1,45,99,70,0,30,0,374
-348,armaldo,3,177,347,15,682,4,6,9,1,45,199,70,0,30,0,375
-349,feebas,3,178,,6,74,3,3,9,4,255,61,70,0,20,0,376
-350,milotic,3,178,349,62,1620,6,2,9,4,60,213,70,0,20,1,377
-351,castform,3,179,,3,8,9,1,3,4,45,145,70,0,25,0,378
-352,kecleon,3,180,,10,220,5,6,2,4,200,132,70,0,20,0,382
-353,shuppet,3,181,,6,23,1,1,8,4,225,97,35,0,25,0,383
-354,banette,3,181,353,11,125,1,6,8,4,45,179,35,0,25,0,384
-355,duskull,3,182,,8,150,1,4,2,4,190,97,35,0,25,0,385
-356,dusclops,3,182,355,16,306,1,12,2,4,90,179,35,0,25,0,386
-357,tropius,3,183,,20,1000,5,8,2,4,200,169,70,0,25,0,388
-358,chimecho,3,184,433,6,10,2,4,3,4,45,147,70,0,25,0,390
-359,absol,3,185,,12,470,9,8,4,4,30,174,35,0,25,0,391
-360,wynaut,3,100,,6,140,2,6,1,4,125,44,70,1,20,0,231
-361,snorunt,3,186,,7,168,4,12,1,4,190,74,70,0,20,0,392
-362,glalie,3,186,361,15,2565,4,1,1,4,75,187,70,0,20,0,393
-363,spheal,3,187,,8,395,2,3,7,4,255,75,70,0,20,0,395
-364,sealeo,3,187,363,11,876,2,3,7,4,120,128,70,0,20,0,396
-365,walrein,3,187,364,14,1506,2,8,7,4,45,192,70,0,20,0,397
-366,clamperl,3,188,,4,525,2,1,7,4,255,142,70,0,20,0,398
-367,huntail,3,188,366,17,270,2,2,7,4,60,178,70,0,20,0,399
-368,gorebyss,3,188,366,18,226,6,2,7,4,60,178,70,0,20,0,400
-369,relicanth,3,189,,10,234,4,3,7,1,25,198,70,0,40,1,401
-370,luvdisc,3,190,,6,87,6,3,7,6,225,110,70,0,20,0,402
-371,bagon,3,191,,6,421,2,12,6,4,45,89,35,0,40,0,403
-372,shelgon,3,191,371,11,1105,9,8,6,4,45,144,35,0,40,0,404
-373,salamence,3,191,372,15,1026,2,8,6,4,45,218,35,0,40,0,405
-374,beldum,3,192,,6,952,2,5,6,-1,3,103,35,0,40,0,406
-375,metang,3,192,374,12,2025,2,4,6,-1,3,153,35,0,40,0,407
-376,metagross,3,192,375,16,5500,2,11,6,-1,3,210,35,0,40,0,408
-377,regirock,3,193,,17,2300,3,12,1,-1,3,217,35,0,80,0,409
-378,regice,3,194,,18,1750,2,12,1,-1,3,216,35,0,80,0,410
-379,registeel,3,195,,19,2050,4,12,1,-1,3,215,35,0,80,0,411
-380,latias,3,196,,14,400,8,9,9,8,3,211,90,0,120,0,412
-381,latios,3,197,,20,600,2,9,9,0,3,211,90,0,120,0,413
-382,kyogre,3,198,,45,3520,2,3,7,-1,5,218,0,0,120,0,414
-383,groudon,3,199,,35,9500,8,6,6,-1,5,218,0,0,120,0,415
-384,rayquaza,3,200,,70,2065,5,2,5,-1,3,220,0,0,120,0,416
-385,jirachi,3,201,,3,11,10,12,4,-1,3,215,100,0,120,0,417
-386,deoxys,3,202,,17,608,8,12,5,-1,3,215,0,0,120,0,418
-387,turtwig,4,203,,4,102,5,8,,1,45,64,70,0,20,0,422
-388,grotle,4,203,387,11,970,5,8,,1,45,141,70,0,20,0,423
-389,torterra,4,203,388,22,3100,5,8,,1,45,208,70,0,20,0,424
-390,chimchar,4,204,,5,62,3,6,,1,45,65,70,0,20,0,425
-391,monferno,4,204,390,9,220,3,6,,1,45,142,70,0,20,0,426
-392,infernape,4,204,391,12,550,3,6,,1,45,209,70,0,20,0,427
-393,piplup,4,205,,4,52,2,12,,1,45,66,70,0,20,0,428
-394,prinplup,4,205,393,8,230,2,6,,1,45,143,70,0,20,0,429
-395,empoleon,4,205,394,17,845,2,6,,1,45,210,70,0,20,0,430
-396,starly,4,206,,3,20,3,9,,4,255,56,70,0,15,1,431
-397,staravia,4,206,396,6,155,3,9,,4,120,113,70,0,15,1,432
-398,staraptor,4,206,397,12,249,3,9,,4,45,172,70,0,15,1,433
-399,bidoof,4,207,,5,200,3,8,,4,255,58,70,0,15,1,434
-400,bibarel,4,207,399,10,315,3,6,,4,127,116,70,0,15,1,435
-401,kricketot,4,208,,3,22,8,12,,4,255,54,70,0,15,1,436
-402,kricketune,4,208,401,10,255,8,13,,4,45,159,70,0,15,1,437
-403,shinx,4,209,,5,95,2,8,,4,235,60,70,0,20,1,438
-404,luxio,4,209,403,9,305,2,8,,4,120,117,100,0,20,1,439
-405,luxray,4,209,404,14,420,2,8,,4,45,194,70,0,20,1,440
-406,budew,4,158,,2,12,5,12,,4,255,68,70,1,20,0,340
-407,roserade,4,158,315,9,145,5,12,,4,75,204,70,0,20,1,342
-408,cranidos,4,211,,9,315,2,6,,1,45,99,70,0,30,0,441
-409,rampardos,4,211,408,16,1025,2,6,,1,45,199,70,0,30,0,442
-410,shieldon,4,212,,5,570,4,8,,1,45,99,70,0,30,0,443
-411,bastiodon,4,212,410,13,1495,4,8,,1,45,199,70,0,30,0,444
-412,burmy,4,213,,2,34,4,2,,4,120,61,70,0,15,0,445
-413,wormadam,4,213,412,5,65,4,2,,8,45,159,70,0,15,0,446
-414,mothim,4,213,412,9,233,10,13,,0,45,159,70,0,15,0,449
-415,combee,4,214,,3,55,10,11,,1,120,63,70,0,15,1,450
-416,vespiquen,4,214,415,12,385,10,9,,8,45,188,70,0,15,0,451
-417,pachirisu,4,215,,4,39,9,8,,4,200,120,100,0,10,1,452
-418,buizel,4,216,,7,295,3,8,,4,190,75,70,0,20,1,453
-419,floatzel,4,216,418,11,335,3,8,,4,75,178,70,0,20,1,454
-420,cherubi,4,217,,4,33,6,11,,4,190,68,70,0,20,0,455
-421,cherrim,4,217,420,5,93,6,7,,4,75,133,70,0,20,0,456
-422,shellos,4,218,,3,63,7,14,,4,190,73,70,0,20,0,457
-423,gastrodon,4,218,422,9,299,7,14,,4,75,176,70,0,20,0,458
-424,ambipom,4,93,190,12,203,7,6,,4,45,186,100,0,20,1,219
-425,drifloon,4,219,,4,12,7,4,,4,125,127,70,0,30,0,459
-426,drifblim,4,219,425,12,150,7,4,,4,60,204,70,0,30,0,460
-427,buneary,4,220,,4,55,3,6,,4,190,84,0,0,20,0,461
-428,lopunny,4,220,427,12,333,3,6,,4,60,178,140,0,20,0,462
-429,mismagius,4,98,200,9,44,7,1,,4,45,187,35,0,25,0,229
-430,honchkrow,4,97,198,9,273,1,9,,4,30,187,35,0,20,0,227
-431,glameow,4,221,,5,39,4,8,,6,190,71,70,0,20,0,463
-432,purugly,4,221,431,10,438,4,8,,6,75,183,70,0,20,0,464
-433,chingling,4,184,,2,6,10,12,,4,120,74,70,1,25,0,389
-434,stunky,4,223,,4,192,7,8,,4,225,79,70,0,20,0,465
-435,skuntank,4,223,434,10,380,7,8,,4,60,209,70,0,20,0,466
-436,bronzor,4,224,,5,605,5,1,,-1,255,72,70,0,20,0,467
-437,bronzong,4,224,436,13,1870,5,4,,-1,90,188,70,0,20,0,468
-438,bonsly,4,91,,5,150,3,7,,4,255,68,70,1,20,0,213
-439,mime-jr,4,57,,6,130,6,12,,4,145,78,70,1,25,0,139
-440,happiny,4,51,,6,244,6,12,,8,130,255,140,1,40,0,126
-441,chatot,4,228,,5,19,1,9,,4,30,107,35,0,20,0,469
-442,spiritomb,4,229,,10,1080,7,5,,4,100,168,70,0,30,0,470
-443,gible,4,230,,7,205,2,6,,4,45,67,70,0,40,1,471
-444,gabite,4,230,443,14,560,2,6,,4,45,144,70,0,40,1,472
-445,garchomp,4,230,444,19,950,2,6,,4,45,218,70,0,40,1,473
-446,munchlax,4,72,,6,1050,1,12,,1,50,94,70,1,40,0,173
-447,riolu,4,232,,7,202,2,6,,1,75,72,70,1,25,0,474
-448,lucario,4,232,447,12,540,2,6,,1,45,204,70,0,25,0,475
-449,hippopotas,4,233,,8,495,3,8,,4,140,95,70,0,30,1,476
-450,hippowdon,4,233,449,20,3000,3,8,,4,60,198,70,0,30,1,477
-451,skorupi,4,234,,8,120,7,14,,4,120,114,70,0,20,0,478
-452,drapion,4,234,451,13,615,7,14,,4,45,204,70,0,20,0,479
-453,croagunk,4,235,,7,230,2,12,,4,140,83,100,0,10,1,480
-454,toxicroak,4,235,453,13,444,2,12,,4,75,181,70,0,20,1,481
-455,carnivine,4,236,,14,270,5,10,,4,200,164,70,0,25,0,482
-456,finneon,4,237,,4,70,2,3,,4,190,90,70,0,20,1,483
-457,lumineon,4,237,456,12,240,2,3,,4,75,156,70,0,20,1,484
-458,mantyke,4,116,,10,650,2,9,,4,25,108,70,1,25,0,257
-459,snover,4,239,,10,505,9,6,,4,120,131,70,0,20,1,485
-460,abomasnow,4,239,459,22,1355,9,6,,4,60,214,70,0,20,1,486
-461,weavile,4,109,215,11,340,1,6,,4,45,199,35,0,20,1,245
-462,magnezone,4,34,82,12,1800,4,4,,-1,30,211,70,0,20,0,90
-463,lickilicky,4,48,108,17,1400,6,12,,4,30,193,70,0,20,0,120
-464,rhyperior,4,50,112,24,2828,4,6,,4,30,217,70,0,20,1,125
-465,tangrowth,4,52,114,20,1286,2,12,,4,30,211,70,0,20,1,130
-466,electivire,4,60,125,18,1386,10,6,,2,30,199,70,0,25,0,147
-467,magmortar,4,61,126,16,680,8,6,,2,30,199,70,0,25,0,150
-468,togekiss,4,87,176,15,380,9,9,,1,30,220,70,0,10,0,204
-469,yanmega,4,95,193,19,515,5,13,,4,30,198,70,0,20,0,223
-470,leafeon,4,67,133,10,255,5,8,,1,45,196,35,0,35,0,163
-471,glaceon,4,67,133,8,259,2,8,,1,45,196,35,0,35,0,164
-472,gliscor,4,104,207,20,425,7,9,,4,30,192,70,0,20,0,238
-473,mamoswine,4,112,221,25,2910,3,8,,4,50,207,70,0,20,1,252
-474,porygon-z,4,68,233,9,340,8,4,,-1,30,185,70,0,20,0,167
-475,gallade,4,140,281,16,520,9,12,,0,45,208,35,0,20,0,307
-476,probopass,4,147,299,14,3400,4,11,,4,60,198,70,0,20,0,324
-477,dusknoir,4,182,356,22,1066,1,4,,4,45,210,35,0,25,0,387
-478,froslass,4,186,361,13,266,9,4,,8,75,187,70,0,20,0,394
-479,rotom,4,240,,3,3,8,1,,-1,45,132,70,0,20,0,487
-480,uxie,4,241,,3,3,10,6,,-1,3,210,140,0,80,0,493
-481,mesprit,4,242,,3,3,6,6,,-1,3,210,140,0,80,0,494
-482,azelf,4,243,,3,3,2,6,,-1,3,210,140,0,80,0,495
-483,dialga,4,244,,54,6830,9,8,,-1,30,220,0,0,120,0,496
-484,palkia,4,245,,42,3360,7,6,,-1,30,220,0,0,120,0,497
-485,heatran,4,246,,17,4300,3,8,,4,3,215,100,0,10,0,498
-486,regigigas,4,247,,37,4200,9,12,,-1,3,220,0,0,120,0,499
-487,giratina,4,248,,45,7500,1,10,,-1,3,220,0,0,120,0,500
-488,cresselia,4,249,,15,856,10,14,,8,3,210,100,0,120,0,502
-489,phione,4,250,,4,31,2,4,,-1,30,165,70,0,40,0,503
-490,manaphy,4,250,,3,14,2,12,,-1,3,215,70,0,10,0,504
-491,darkrai,4,252,,15,505,1,12,,-1,3,210,0,0,120,0,505
-492,shaymin,4,253,,2,21,5,8,,-1,45,64,100,0,120,0,506
-493,arceus,4,254,,32,3200,4,8,,-1,3,255,0,0,120,0,508
-494,victini,5,255,,4,40,10,12,,-1,3,270,100,0,120,0,509
-495,snivy,5,256,,6,81,5,6,,1,45,28,70,0,20,0,510
-496,servine,5,256,495,8,160,5,6,,1,45,145,70,0,20,0,511
-497,serperior,5,256,496,33,630,5,2,,1,45,238,70,0,20,0,512
-498,tepig,5,257,,5,99,8,8,,1,45,28,70,0,20,0,513
-499,pignite,5,257,498,10,555,8,6,,1,45,146,70,0,20,0,514
-500,emboar,5,257,499,16,1500,8,6,,1,45,238,70,0,20,0,515
-501,oshawott,5,258,,5,59,2,6,,1,45,28,70,0,20,0,516
-502,dewott,5,258,501,8,245,2,6,,1,45,145,70,0,20,0,517
-503,samurott,5,258,502,15,946,2,8,,1,45,238,70,0,20,0,518
-504,patrat,5,259,,5,116,3,8,,4,255,51,70,0,15,0,519
-505,watchog,5,259,504,11,270,3,6,,4,255,147,70,0,20,0,520
-506,lillipup,5,260,,4,41,3,8,,4,255,55,70,0,15,0,521
-507,herdier,5,260,506,9,147,4,8,,4,120,130,70,0,15,0,522
-508,stoutland,5,260,507,12,610,4,8,,4,45,221,70,0,15,0,523
-509,purrloin,5,261,,4,101,7,8,,4,255,56,70,0,20,0,524
-510,liepard,5,261,509,11,375,7,8,,4,90,156,70,0,20,0,525
-511,pansage,5,262,,6,105,5,6,,1,190,63,70,0,20,0,526
-512,simisage,5,262,511,11,305,5,6,,1,75,174,70,0,20,0,527
-513,pansear,5,263,,6,110,8,6,,1,190,63,70,0,20,0,528
-514,simisear,5,263,513,10,280,8,6,,1,75,174,70,0,20,0,529
-515,panpour,5,264,,6,135,2,6,,1,190,63,70,0,20,0,530
-516,simipour,5,264,515,10,290,2,6,,1,75,174,70,0,20,0,531
-517,munna,5,265,,6,233,6,8,,4,190,58,70,0,10,0,532
-518,musharna,5,265,517,11,605,6,12,,4,75,170,70,0,10,0,533
-519,pidove,5,266,,3,21,4,9,,4,255,53,70,0,15,0,534
-520,tranquill,5,266,519,6,150,4,9,,4,120,125,70,0,15,0,535
-521,unfezant,5,266,520,12,290,4,9,,4,45,215,70,0,15,1,536
-522,blitzle,5,267,,8,298,1,8,,4,190,59,70,0,20,0,537
-523,zebstrika,5,267,522,16,795,1,8,,4,75,174,70,0,20,0,538
-524,roggenrola,5,268,,4,180,2,7,,4,255,56,70,0,15,0,539
-525,boldore,5,268,524,9,1020,2,10,,4,120,137,70,0,15,0,540
-526,gigalith,5,268,525,17,2600,2,10,,4,45,227,70,0,15,0,541
-527,woobat,5,269,,4,21,2,9,,4,190,63,70,0,15,0,542
-528,swoobat,5,269,527,9,105,2,9,,4,45,149,70,0,15,0,543
-529,drilbur,5,270,,3,85,4,6,,4,120,66,70,0,20,0,544
-530,excadrill,5,270,529,7,404,4,12,,4,60,178,70,0,20,0,545
-531,audino,5,271,,11,310,6,6,,4,255,390,70,0,20,0,546
-532,timburr,5,272,,6,125,4,12,,2,180,61,70,0,20,0,547
-533,gurdurr,5,272,532,12,400,4,12,,2,90,142,70,0,20,0,548
-534,conkeldurr,5,272,533,14,870,3,12,,2,45,227,70,0,20,0,549
-535,tympole,5,273,,5,45,2,3,,4,255,59,70,0,20,0,550
-536,palpitoad,5,273,535,8,170,2,6,,4,120,134,70,0,20,0,551
-537,seismitoad,5,273,536,15,620,2,12,,4,45,225,70,0,20,0,552
-538,throh,5,274,,13,555,8,12,,0,45,163,70,0,20,0,553
-539,sawk,5,275,,14,510,2,12,,0,45,163,70,0,20,0,554
-540,sewaddle,5,276,,3,25,10,14,,4,255,62,70,0,15,0,555
-541,swadloon,5,276,540,5,73,5,4,,4,120,133,70,0,15,0,556
-542,leavanny,5,276,541,12,205,10,12,,4,45,221,70,0,15,0,557
-543,venipede,5,277,,4,53,8,14,,4,255,52,70,0,15,0,558
-544,whirlipede,5,277,543,12,585,4,1,,4,120,126,70,0,15,0,559
-545,scolipede,5,277,544,25,2005,8,14,,4,45,214,70,0,20,0,560
-546,cottonee,5,278,,3,6,5,1,,4,190,56,70,0,20,0,561
-547,whimsicott,5,278,546,7,66,5,12,,4,75,168,70,0,20,0,562
-548,petilil,5,279,,5,66,5,5,,8,190,56,70,0,20,0,563
-549,lilligant,5,279,548,11,163,5,5,,8,75,168,70,0,20,0,564
-550,basculin,5,280,,10,180,5,3,,4,25,161,70,0,40,0,565
-551,sandile,5,281,,7,152,3,8,,4,180,58,70,0,20,0,567
-552,krokorok,5,281,551,10,334,3,8,,4,90,123,70,0,20,0,568
-553,krookodile,5,281,552,15,963,8,6,,4,45,229,70,0,20,0,569
-554,darumaka,5,282,,6,375,8,12,,4,120,63,70,0,20,0,570
-555,darmanitan,5,282,554,13,929,8,8,,4,60,168,70,0,20,0,571
-556,maractus,5,283,,10,280,5,5,,4,255,161,70,0,20,0,573
-557,dwebble,5,284,,3,145,8,14,,4,190,65,70,0,20,0,574
-558,crustle,5,284,557,14,2000,8,14,,4,75,166,70,0,20,0,575
-559,scraggy,5,285,,6,118,10,6,,4,180,70,35,0,15,0,576
-560,scrafty,5,285,559,11,300,8,6,,4,90,171,70,0,15,0,577
-561,sigilyph,5,286,,14,140,1,9,,4,45,172,70,0,20,0,578
-562,yamask,5,287,,5,15,1,4,,4,190,61,70,0,25,0,579
-563,cofagrigus,5,287,562,17,765,10,5,,4,90,169,70,0,25,0,580
-564,tirtouga,5,288,,7,165,2,8,,1,45,71,70,0,30,0,581
-565,carracosta,5,288,564,12,810,2,6,,1,45,173,70,0,30,0,582
-566,archen,5,289,,5,95,10,9,,1,45,71,70,0,30,0,583
-567,archeops,5,289,566,14,320,10,9,,1,45,177,70,0,30,0,584
-568,trubbish,5,290,,6,310,5,12,,4,190,66,70,0,20,0,585
-569,garbodor,5,290,568,19,1073,5,12,,4,60,166,70,0,20,0,586
-570,zorua,5,291,,7,125,4,8,,1,75,66,70,0,25,0,587
-571,zoroark,5,291,570,16,811,4,6,,1,45,179,70,0,20,0,588
-572,minccino,5,292,,4,58,4,8,,6,255,60,70,0,15,0,589
-573,cinccino,5,292,572,5,75,4,8,,6,60,165,70,0,15,0,590
-574,gothita,5,293,,4,58,7,12,,6,200,58,70,0,20,0,591
-575,gothorita,5,293,574,7,180,7,12,,6,100,137,70,0,20,0,592
-576,gothitelle,5,293,575,15,440,7,12,,6,50,221,70,0,20,0,593
-577,solosis,5,294,,3,10,5,1,,4,200,58,70,0,20,0,594
-578,duosion,5,294,577,6,80,5,1,,4,100,130,70,0,20,0,595
-579,reuniclus,5,294,578,10,201,5,4,,4,50,221,70,0,20,0,596
-580,ducklett,5,295,,5,55,2,9,,4,190,61,70,0,20,0,597
-581,swanna,5,295,580,13,242,9,9,,4,45,166,70,0,20,0,598
-582,vanillite,5,296,,4,57,9,5,,4,255,61,70,0,20,0,599
-583,vanillish,5,296,582,11,410,9,5,,4,120,138,70,0,20,0,600
-584,vanilluxe,5,296,583,13,575,9,11,,4,45,241,70,0,20,0,601
-585,deerling,5,297,,6,195,10,8,,4,190,67,70,0,20,0,602
-586,sawsbuck,5,297,585,19,925,3,8,,4,75,166,70,0,20,0,603
-587,emolga,5,298,,4,50,9,8,,4,200,150,70,0,20,0,604
-588,karrablast,5,299,,5,59,2,12,,4,200,63,70,0,15,0,605
-589,escavalier,5,299,588,10,330,4,4,,4,75,173,70,0,15,0,606
-590,foongus,5,300,,2,10,9,4,,4,190,59,70,0,20,0,607
-591,amoonguss,5,300,590,6,105,9,4,,4,75,162,70,0,20,0,608
-592,frillish,5,301,,12,330,9,10,,4,190,67,70,0,20,1,609
-593,jellicent,5,301,592,22,1350,9,10,,4,60,168,70,0,20,1,610
-594,alomomola,5,302,,12,316,6,3,,4,75,165,70,0,40,0,611
-595,joltik,5,303,,1,6,10,14,,4,190,64,70,0,20,0,612
-596,galvantula,5,303,595,8,143,10,14,,4,75,165,70,0,20,0,613
-597,ferroseed,5,304,,6,188,4,1,,4,255,61,70,0,20,0,614
-598,ferrothorn,5,304,597,10,1100,4,10,,4,90,171,70,0,20,0,615
-599,klink,5,305,,3,210,4,11,,-1,130,60,70,0,20,0,616
-600,klang,5,305,599,6,510,4,11,,-1,60,154,70,0,20,0,617
-601,klinklang,5,305,600,6,810,4,11,,-1,30,234,70,0,20,0,618
-602,tynamo,5,306,,2,3,9,3,,4,190,55,70,0,20,0,619
-603,eelektrik,5,306,602,12,220,2,3,,4,60,142,70,0,20,0,620
-604,eelektross,5,306,603,21,805,2,3,,4,30,232,70,0,20,0,621
-605,elgyem,5,307,,5,90,2,6,,4,255,67,70,0,20,0,622
-606,beheeyem,5,307,605,10,345,3,12,,4,90,170,70,0,20,0,623
-607,litwick,5,308,,3,31,9,5,,4,190,55,70,0,20,0,624
-608,lampent,5,308,607,6,130,1,4,,4,90,130,70,0,20,0,625
-609,chandelure,5,308,608,10,343,1,4,,4,45,234,70,0,20,0,626
-610,axew,5,309,,6,180,5,6,,4,75,64,35,0,40,0,627
-611,fraxure,5,309,610,10,360,5,6,,4,60,144,35,0,40,0,628
-612,haxorus,5,309,611,18,1055,10,6,,4,45,243,35,0,40,0,629
-613,cubchoo,5,310,,5,85,9,6,,4,120,61,70,0,20,0,630
-614,beartic,5,310,613,26,2600,9,8,,4,60,170,70,0,20,0,631
-615,cryogonal,5,311,,11,1480,2,1,,-1,25,170,70,0,25,0,632
-616,shelmet,5,312,,4,77,8,1,,4,200,61,70,0,15,0,633
-617,accelgor,5,312,616,8,253,8,4,,4,75,173,70,0,15,0,634
-618,stunfisk,5,313,,7,110,3,3,,4,75,165,70,0,20,0,635
-619,mienfoo,5,314,,9,200,10,6,,4,180,70,70,0,25,0,636
-620,mienshao,5,314,619,14,355,7,6,,4,45,179,70,0,25,0,637
-621,druddigon,5,315,,16,1390,8,6,,4,45,170,70,0,30,0,638
-622,golett,5,316,,10,920,5,12,,-1,190,61,70,0,25,0,639
-623,golurk,5,316,622,28,3300,5,12,,-1,90,169,70,0,25,0,640
-624,pawniard,5,317,,5,102,8,12,,4,120,68,35,0,20,0,641
-625,bisharp,5,317,624,16,700,8,12,,4,45,172,35,0,20,0,642
-626,bouffalant,5,318,,16,946,3,8,,4,45,172,70,0,20,0,643
-627,rufflet,5,319,,5,105,9,9,,0,190,70,70,0,20,0,644
-628,braviary,5,319,627,15,410,8,9,,0,60,179,70,0,20,0,645
-629,vullaby,5,320,,5,90,3,9,,8,190,74,35,0,20,0,646
-630,mandibuzz,5,320,629,12,395,3,9,,8,60,179,35,0,20,0,647
-631,heatmor,5,321,,14,580,8,6,,4,90,169,70,0,20,0,648
-632,durant,5,322,,3,330,4,14,,4,90,169,70,0,20,0,649
-633,deino,5,323,,8,173,2,8,,4,45,60,35,0,40,0,650
-634,zweilous,5,323,633,14,500,2,8,,4,45,147,35,0,40,0,651
-635,hydreigon,5,323,634,18,1600,2,6,,4,45,270,35,0,40,0,652
-636,larvesta,5,324,,11,288,9,14,,4,45,72,70,0,40,0,653
-637,volcarona,5,324,636,16,460,9,13,,4,15,248,70,0,40,0,654
-638,cobalion,5,325,,21,2500,2,8,,-1,3,261,35,0,80,0,655
-639,terrakion,5,326,,19,2600,4,8,,-1,3,261,35,0,80,0,656
-640,virizion,5,327,,20,2000,5,8,,-1,3,261,35,0,80,0,657
-641,tornadus,5,328,,15,630,5,4,,0,3,261,90,0,120,0,658
-642,thundurus,5,329,,15,610,2,4,,0,3,261,90,0,120,0,659
-643,reshiram,5,330,,32,3300,9,9,,-1,45,306,0,0,120,0,660
-644,zekrom,5,331,,29,3450,1,6,,-1,45,306,0,0,120,0,661
-645,landorus,5,332,,15,680,3,4,,0,3,270,90,0,120,0,662
-646,kyurem,5,333,,30,3250,4,6,,-1,3,297,0,0,120,0,663
-647,keldeo,5,334,,14,485,10,8,,-1,3,261,35,0,80,0,664
-648,meloetta,5,335,,6,65,9,12,,-1,3,270,100,0,120,0,665
-649,genesect,5,336,,15,825,7,12,,-1,3,270,0,0,120,0,667
-10001,deoxys,3,202,,17,608,8,12,5,-1,3,215,0,0,120,0,419
-10002,deoxys,3,202,,17,608,8,12,5,-1,3,215,0,0,120,0,420
-10003,deoxys,3,202,,17,608,8,12,5,-1,3,215,0,0,120,0,421
-10004,wormadam,4,213,,5,65,4,2,,8,45,159,70,0,15,0,447
-10005,wormadam,4,213,,5,65,4,2,,8,45,159,70,0,15,0,448
-10006,shaymin,4,253,,4,52,5,8,,-1,45,64,100,0,120,0,507
-10007,giratina,4,248,,69,6500,1,10,,-1,3,220,0,0,120,0,501
-10008,rotom,4,240,,3,3,8,1,,-1,45,132,70,0,20,0,488
-10009,rotom,4,240,,3,3,8,1,,-1,45,132,70,0,20,0,489
-10010,rotom,4,240,,3,3,8,1,,-1,45,132,70,0,20,0,490
-10011,rotom,4,240,,3,3,8,1,,-1,45,132,70,0,20,0,491
-10012,rotom,4,240,,3,3,8,1,,-1,45,132,70,0,20,0,492
-10013,castform,3,179,,3,8,9,1,3,4,45,147,70,0,25,0,379
-10014,castform,3,179,,3,8,9,1,3,4,45,147,70,0,25,0,380
-10015,castform,3,179,,3,8,9,1,3,4,45,147,70,0,25,0,381
-10016,basculin,5,280,,10,180,5,3,,4,25,161,70,0,40,0,566
-10017,darmanitan,5,282,,13,929,8,8,,4,60,189,70,0,20,0,572
-10018,meloetta,5,335,,6,65,9,12,,-1,3,270,100,0,120,0,666
+id,species_id,height,weight,base_experience,order
+1,1,7,69,64,1
+2,2,10,130,141,2
+3,3,20,1000,208,3
+4,4,6,85,65,4
+5,5,11,190,142,5
+6,6,17,905,209,6
+7,7,5,90,66,7
+8,8,10,225,143,8
+9,9,16,855,210,9
+10,10,3,29,53,10
+11,11,7,99,72,11
+12,12,11,320,160,12
+13,13,3,32,52,13
+14,14,6,100,71,14
+15,15,10,295,159,15
+16,16,3,18,55,16
+17,17,11,300,113,17
+18,18,15,395,172,18
+19,19,3,35,57,19
+20,20,7,185,116,20
+21,21,3,20,58,21
+22,22,12,380,162,22
+23,23,20,69,62,23
+24,24,35,650,147,24
+25,25,4,60,82,26
+26,26,8,300,122,27
+27,27,6,120,93,28
+28,28,10,295,163,29
+29,29,4,70,59,30
+30,30,8,200,117,31
+31,31,13,600,194,32
+32,32,5,90,60,33
+33,33,9,195,118,34
+34,34,14,620,195,35
+35,35,6,75,68,37
+36,36,13,400,129,38
+37,37,6,99,63,39
+38,38,11,199,178,40
+39,39,5,55,76,42
+40,40,10,120,109,43
+41,41,8,75,54,44
+42,42,16,550,171,45
+43,43,5,54,78,47
+44,44,8,86,132,48
+45,45,12,186,184,49
+46,46,3,54,70,51
+47,47,10,295,128,52
+48,48,10,300,75,53
+49,49,15,125,138,54
+50,50,2,8,81,55
+51,51,7,333,153,56
+52,52,4,42,69,57
+53,53,10,320,148,58
+54,54,8,196,80,59
+55,55,17,766,174,60
+56,56,5,280,74,61
+57,57,10,320,149,62
+58,58,7,190,91,63
+59,59,19,1550,213,64
+60,60,6,124,77,65
+61,61,10,200,131,66
+62,62,13,540,185,67
+63,63,9,195,75,69
+64,64,13,565,145,70
+65,65,15,480,186,71
+66,66,8,195,75,72
+67,67,15,705,146,73
+68,68,16,1300,193,74
+69,69,7,40,84,75
+70,70,10,64,151,76
+71,71,17,155,191,77
+72,72,9,455,105,78
+73,73,16,550,205,79
+74,74,4,200,73,80
+75,75,10,1050,134,81
+76,76,14,3000,177,82
+77,77,10,300,152,83
+78,78,17,950,192,84
+79,79,12,360,99,85
+80,80,16,785,164,86
+81,81,3,60,89,88
+82,82,10,600,161,89
+83,83,8,150,94,91
+84,84,14,392,96,92
+85,85,18,852,158,93
+86,86,11,900,100,94
+87,87,17,1200,176,95
+88,88,9,300,90,96
+89,89,12,300,157,97
+90,90,3,40,97,98
+91,91,15,1325,203,99
+92,92,13,1,95,100
+93,93,16,1,126,101
+94,94,15,405,190,102
+95,95,88,2100,108,103
+96,96,10,324,102,105
+97,97,16,756,165,106
+98,98,4,65,115,107
+99,99,13,600,206,108
+100,100,5,104,103,109
+101,101,12,666,150,110
+102,102,4,25,98,111
+103,103,20,1200,212,112
+104,104,4,65,87,113
+105,105,10,450,124,114
+106,106,15,498,139,116
+107,107,14,502,140,117
+108,108,12,655,127,119
+109,109,6,10,114,121
+110,110,12,95,173,122
+111,111,10,1150,135,123
+112,112,19,1200,204,124
+113,113,11,346,255,127
+114,114,10,350,166,129
+115,115,22,800,175,131
+116,116,4,80,83,132
+117,117,12,250,155,133
+118,118,6,150,111,135
+119,119,13,390,170,136
+120,120,8,345,106,137
+121,121,11,800,207,138
+122,122,13,545,136,140
+123,123,15,560,187,141
+124,124,14,406,137,144
+125,125,11,300,156,146
+126,126,13,445,167,149
+127,127,15,550,200,151
+128,128,14,884,211,152
+129,129,9,100,20,153
+130,130,65,2350,214,154
+131,131,25,2200,219,155
+132,132,3,40,61,156
+133,133,3,65,92,157
+134,134,10,290,196,158
+135,135,8,245,197,159
+136,136,9,250,198,160
+137,137,8,365,130,165
+138,138,4,75,99,168
+139,139,10,350,199,169
+140,140,5,115,99,170
+141,141,13,405,199,171
+142,142,18,590,202,172
+143,143,21,4600,154,174
+144,144,17,554,215,175
+145,145,16,526,216,176
+146,146,20,600,217,177
+147,147,18,33,67,178
+148,148,40,165,144,179
+149,149,22,2100,218,180
+150,150,20,1220,220,181
+151,151,4,40,64,182
+152,152,9,64,64,183
+153,153,12,158,141,184
+154,154,18,1005,208,185
+155,155,5,79,65,186
+156,156,9,190,142,187
+157,157,17,795,209,188
+158,158,6,95,66,189
+159,159,11,250,143,190
+160,160,23,888,210,191
+161,161,8,60,57,192
+162,162,18,325,116,193
+163,163,7,212,58,194
+164,164,16,408,162,195
+165,165,10,108,54,196
+166,166,14,356,134,197
+167,167,5,85,54,198
+168,168,11,335,134,199
+169,169,18,750,204,46
+170,170,5,120,90,200
+171,171,12,225,156,201
+172,172,3,20,42,25
+173,173,3,30,37,36
+174,174,3,10,39,41
+175,175,3,15,74,202
+176,176,6,32,114,203
+177,177,2,20,73,205
+178,178,15,150,171,206
+179,179,6,78,59,207
+180,180,8,133,117,208
+181,181,14,615,194,209
+182,182,4,58,184,50
+183,183,4,85,58,211
+184,184,8,285,153,212
+185,185,12,380,135,214
+186,186,11,339,185,68
+187,187,4,5,74,215
+188,188,6,10,136,216
+189,189,8,30,176,217
+190,190,8,115,94,218
+191,191,3,18,52,220
+192,192,8,85,146,221
+193,193,12,380,147,222
+194,194,4,85,52,224
+195,195,14,750,137,225
+196,196,9,265,197,161
+197,197,10,270,197,162
+198,198,5,21,107,226
+199,199,20,795,164,87
+200,200,7,10,147,228
+201,201,5,50,61,230
+202,202,13,285,177,232
+203,203,15,415,149,233
+204,204,6,72,60,234
+205,205,12,1258,118,235
+206,206,15,140,125,236
+207,207,11,648,108,237
+208,208,92,4000,196,104
+209,209,6,78,63,239
+210,210,14,487,178,240
+211,211,5,39,100,241
+212,212,18,1180,200,142
+213,213,6,205,80,242
+214,214,15,540,200,243
+215,215,9,280,132,244
+216,216,6,88,124,246
+217,217,18,1258,189,247
+218,218,7,350,78,248
+219,219,8,550,154,249
+220,220,4,65,78,250
+221,221,11,558,160,251
+222,222,6,50,113,253
+223,223,6,120,78,254
+224,224,9,285,164,255
+225,225,9,160,183,256
+226,226,21,2200,168,258
+227,227,17,505,168,259
+228,228,6,108,114,260
+229,229,14,350,204,261
+230,230,18,1520,207,134
+231,231,5,335,124,262
+232,232,11,1200,189,263
+233,233,6,325,180,166
+234,234,14,712,165,264
+235,235,12,580,106,265
+236,236,7,210,91,115
+237,237,14,480,138,118
+238,238,4,60,87,143
+239,239,6,235,106,145
+240,240,7,214,117,148
+241,241,12,755,200,266
+242,242,15,468,255,128
+243,243,19,1780,216,267
+244,244,21,1980,217,268
+245,245,20,1870,215,269
+246,246,6,720,67,270
+247,247,12,1520,144,271
+248,248,20,2020,218,272
+249,249,52,2160,220,273
+250,250,38,1990,220,274
+251,251,6,50,64,275
+252,252,5,50,65,276
+253,253,9,216,141,277
+254,254,17,522,208,278
+255,255,4,25,65,279
+256,256,9,195,142,280
+257,257,19,520,209,281
+258,258,4,76,65,282
+259,259,7,280,143,283
+260,260,15,819,210,284
+261,261,5,136,55,285
+262,262,10,370,128,286
+263,263,4,175,60,287
+264,264,5,325,128,288
+265,265,3,36,54,289
+266,266,6,100,72,290
+267,267,10,284,161,291
+268,268,7,115,72,292
+269,269,12,316,161,293
+270,270,5,26,74,294
+271,271,12,325,141,295
+272,272,15,550,181,296
+273,273,5,40,74,297
+274,274,10,280,141,298
+275,275,13,596,181,299
+276,276,3,23,59,300
+277,277,7,198,162,301
+278,278,6,95,64,302
+279,279,12,280,164,303
+280,280,4,66,70,304
+281,281,8,202,140,305
+282,282,16,484,208,306
+283,283,5,17,63,308
+284,284,8,36,128,309
+285,285,4,45,65,310
+286,286,12,392,165,311
+287,287,8,240,83,312
+288,288,14,465,126,313
+289,289,20,1305,210,314
+290,290,5,55,65,315
+291,291,8,120,155,316
+292,292,8,12,95,317
+293,293,6,163,68,318
+294,294,10,405,126,319
+295,295,15,840,184,320
+296,296,10,864,87,321
+297,297,23,2538,184,322
+298,298,2,20,33,210
+299,299,10,970,108,323
+300,300,6,110,65,325
+301,301,11,326,138,326
+302,302,5,110,98,327
+303,303,6,115,98,328
+304,304,4,600,96,329
+305,305,9,1200,152,330
+306,306,21,3600,205,331
+307,307,6,112,91,332
+308,308,13,315,153,333
+309,309,6,152,104,334
+310,310,15,402,168,335
+311,311,4,42,120,336
+312,312,4,42,120,337
+313,313,7,177,146,338
+314,314,6,177,146,339
+315,315,3,20,152,341
+316,316,4,103,75,343
+317,317,17,800,168,344
+318,318,8,208,88,345
+319,319,18,888,175,346
+320,320,20,1300,137,347
+321,321,145,3980,206,348
+322,322,7,240,88,349
+323,323,19,2200,175,350
+324,324,5,804,161,351
+325,325,7,306,89,352
+326,326,9,715,164,353
+327,327,11,50,85,354
+328,328,7,150,73,355
+329,329,11,153,126,356
+330,330,20,820,197,357
+331,331,4,513,97,358
+332,332,13,774,177,359
+333,333,4,12,74,360
+334,334,11,206,188,361
+335,335,13,403,165,362
+336,336,27,525,165,363
+337,337,10,1680,150,364
+338,338,12,1540,150,365
+339,339,4,19,92,366
+340,340,9,236,158,367
+341,341,6,115,111,368
+342,342,11,328,161,369
+343,343,5,215,58,370
+344,344,15,1080,189,371
+345,345,10,238,99,372
+346,346,15,604,199,373
+347,347,7,125,99,374
+348,348,15,682,199,375
+349,349,6,74,61,376
+350,350,62,1620,213,377
+351,351,3,8,145,378
+352,352,10,220,132,382
+353,353,6,23,97,383
+354,354,11,125,179,384
+355,355,8,150,97,385
+356,356,16,306,179,386
+357,357,20,1000,169,388
+358,358,6,10,147,390
+359,359,12,470,174,391
+360,360,6,140,44,231
+361,361,7,168,74,392
+362,362,15,2565,187,393
+363,363,8,395,75,395
+364,364,11,876,128,396
+365,365,14,1506,192,397
+366,366,4,525,142,398
+367,367,17,270,178,399
+368,368,18,226,178,400
+369,369,10,234,198,401
+370,370,6,87,110,402
+371,371,6,421,89,403
+372,372,11,1105,144,404
+373,373,15,1026,218,405
+374,374,6,952,103,406
+375,375,12,2025,153,407
+376,376,16,5500,210,408
+377,377,17,2300,217,409
+378,378,18,1750,216,410
+379,379,19,2050,215,411
+380,380,14,400,211,412
+381,381,20,600,211,413
+382,382,45,3520,218,414
+383,383,35,9500,218,415
+384,384,70,2065,220,416
+385,385,3,11,215,417
+386,386,17,608,215,418
+387,387,4,102,64,422
+388,388,11,970,141,423
+389,389,22,3100,208,424
+390,390,5,62,65,425
+391,391,9,220,142,426
+392,392,12,550,209,427
+393,393,4,52,66,428
+394,394,8,230,143,429
+395,395,17,845,210,430
+396,396,3,20,56,431
+397,397,6,155,113,432
+398,398,12,249,172,433
+399,399,5,200,58,434
+400,400,10,315,116,435
+401,401,3,22,54,436
+402,402,10,255,159,437
+403,403,5,95,60,438
+404,404,9,305,117,439
+405,405,14,420,194,440
+406,406,2,12,68,340
+407,407,9,145,204,342
+408,408,9,315,99,441
+409,409,16,1025,199,442
+410,410,5,570,99,443
+411,411,13,1495,199,444
+412,412,2,34,61,445
+413,413,5,65,159,446
+414,414,9,233,159,449
+415,415,3,55,63,450
+416,416,12,385,188,451
+417,417,4,39,120,452
+418,418,7,295,75,453
+419,419,11,335,178,454
+420,420,4,33,68,455
+421,421,5,93,133,456
+422,422,3,63,73,457
+423,423,9,299,176,458
+424,424,12,203,186,219
+425,425,4,12,127,459
+426,426,12,150,204,460
+427,427,4,55,84,461
+428,428,12,333,178,462
+429,429,9,44,187,229
+430,430,9,273,187,227
+431,431,5,39,71,463
+432,432,10,438,183,464
+433,433,2,6,74,389
+434,434,4,192,79,465
+435,435,10,380,209,466
+436,436,5,605,72,467
+437,437,13,1870,188,468
+438,438,5,150,68,213
+439,439,6,130,78,139
+440,440,6,244,255,126
+441,441,5,19,107,469
+442,442,10,1080,168,470
+443,443,7,205,67,471
+444,444,14,560,144,472
+445,445,19,950,218,473
+446,446,6,1050,94,173
+447,447,7,202,72,474
+448,448,12,540,204,475
+449,449,8,495,95,476
+450,450,20,3000,198,477
+451,451,8,120,114,478
+452,452,13,615,204,479
+453,453,7,230,83,480
+454,454,13,444,181,481
+455,455,14,270,164,482
+456,456,4,70,90,483
+457,457,12,240,156,484
+458,458,10,650,108,257
+459,459,10,505,131,485
+460,460,22,1355,214,486
+461,461,11,340,199,245
+462,462,12,1800,211,90
+463,463,17,1400,193,120
+464,464,24,2828,217,125
+465,465,20,1286,211,130
+466,466,18,1386,199,147
+467,467,16,680,199,150
+468,468,15,380,220,204
+469,469,19,515,198,223
+470,470,10,255,196,163
+471,471,8,259,196,164
+472,472,20,425,192,238
+473,473,25,2910,207,252
+474,474,9,340,185,167
+475,475,16,520,208,307
+476,476,14,3400,198,324
+477,477,22,1066,210,387
+478,478,13,266,187,394
+479,479,3,3,132,487
+480,480,3,3,210,493
+481,481,3,3,210,494
+482,482,3,3,210,495
+483,483,54,6830,220,496
+484,484,42,3360,220,497
+485,485,17,4300,215,498
+486,486,37,4200,220,499
+487,487,45,7500,220,500
+488,488,15,856,210,502
+489,489,4,31,165,503
+490,490,3,14,215,504
+491,491,15,505,210,505
+492,492,2,21,64,506
+493,493,32,3200,255,508
+494,494,4,40,270,509
+495,495,6,81,28,510
+496,496,8,160,145,511
+497,497,33,630,238,512
+498,498,5,99,28,513
+499,499,10,555,146,514
+500,500,16,1500,238,515
+501,501,5,59,28,516
+502,502,8,245,145,517
+503,503,15,946,238,518
+504,504,5,116,51,519
+505,505,11,270,147,520
+506,506,4,41,55,521
+507,507,9,147,130,522
+508,508,12,610,221,523
+509,509,4,101,56,524
+510,510,11,375,156,525
+511,511,6,105,63,526
+512,512,11,305,174,527
+513,513,6,110,63,528
+514,514,10,280,174,529
+515,515,6,135,63,530
+516,516,10,290,174,531
+517,517,6,233,58,532
+518,518,11,605,170,533
+519,519,3,21,53,534
+520,520,6,150,125,535
+521,521,12,290,215,536
+522,522,8,298,59,537
+523,523,16,795,174,538
+524,524,4,180,56,539
+525,525,9,1020,137,540
+526,526,17,2600,227,541
+527,527,4,21,63,542
+528,528,9,105,149,543
+529,529,3,85,66,544
+530,530,7,404,178,545
+531,531,11,310,390,546
+532,532,6,125,61,547
+533,533,12,400,142,548
+534,534,14,870,227,549
+535,535,5,45,59,550
+536,536,8,170,134,551
+537,537,15,620,225,552
+538,538,13,555,163,553
+539,539,14,510,163,554
+540,540,3,25,62,555
+541,541,5,73,133,556
+542,542,12,205,221,557
+543,543,4,53,52,558
+544,544,12,585,126,559
+545,545,25,2005,214,560
+546,546,3,6,56,561
+547,547,7,66,168,562
+548,548,5,66,56,563
+549,549,11,163,168,564
+550,550,10,180,161,565
+551,551,7,152,58,567
+552,552,10,334,123,568
+553,553,15,963,229,569
+554,554,6,375,63,570
+555,555,13,929,168,571
+556,556,10,280,161,573
+557,557,3,145,65,574
+558,558,14,2000,166,575
+559,559,6,118,70,576
+560,560,11,300,171,577
+561,561,14,140,172,578
+562,562,5,15,61,579
+563,563,17,765,169,580
+564,564,7,165,71,581
+565,565,12,810,173,582
+566,566,5,95,71,583
+567,567,14,320,177,584
+568,568,6,310,66,585
+569,569,19,1073,166,586
+570,570,7,125,66,587
+571,571,16,811,179,588
+572,572,4,58,60,589
+573,573,5,75,165,590
+574,574,4,58,58,591
+575,575,7,180,137,592
+576,576,15,440,221,593
+577,577,3,10,58,594
+578,578,6,80,130,595
+579,579,10,201,221,596
+580,580,5,55,61,597
+581,581,13,242,166,598
+582,582,4,57,61,599
+583,583,11,410,138,600
+584,584,13,575,241,601
+585,585,6,195,67,602
+586,586,19,925,166,603
+587,587,4,50,150,604
+588,588,5,59,63,605
+589,589,10,330,173,606
+590,590,2,10,59,607
+591,591,6,105,162,608
+592,592,12,330,67,609
+593,593,22,1350,168,610
+594,594,12,316,165,611
+595,595,1,6,64,612
+596,596,8,143,165,613
+597,597,6,188,61,614
+598,598,10,1100,171,615
+599,599,3,210,60,616
+600,600,6,510,154,617
+601,601,6,810,234,618
+602,602,2,3,55,619
+603,603,12,220,142,620
+604,604,21,805,232,621
+605,605,5,90,67,622
+606,606,10,345,170,623
+607,607,3,31,55,624
+608,608,6,130,130,625
+609,609,10,343,234,626
+610,610,6,180,64,627
+611,611,10,360,144,628
+612,612,18,1055,243,629
+613,613,5,85,61,630
+614,614,26,2600,170,631
+615,615,11,1480,170,632
+616,616,4,77,61,633
+617,617,8,253,173,634
+618,618,7,110,165,635
+619,619,9,200,70,636
+620,620,14,355,179,637
+621,621,16,1390,170,638
+622,622,10,920,61,639
+623,623,28,3300,169,640
+624,624,5,102,68,641
+625,625,16,700,172,642
+626,626,16,946,172,643
+627,627,5,105,70,644
+628,628,15,410,179,645
+629,629,5,90,74,646
+630,630,12,395,179,647
+631,631,14,580,169,648
+632,632,3,330,169,649
+633,633,8,173,60,650
+634,634,14,500,147,651
+635,635,18,1600,270,652
+636,636,11,288,72,653
+637,637,16,460,248,654
+638,638,21,2500,261,655
+639,639,19,2600,261,656
+640,640,20,2000,261,657
+641,641,15,630,261,658
+642,642,15,610,261,659
+643,643,32,3300,306,660
+644,644,29,3450,306,661
+645,645,15,680,270,662
+646,646,30,3250,297,663
+647,647,14,485,261,664
+648,648,6,65,270,665
+649,649,15,825,270,667
+650,386,17,608,215,419
+651,386,17,608,215,420
+652,386,17,608,215,421
+653,413,5,65,159,447
+654,413,5,65,159,448
+655,492,4,52,64,507
+656,487,69,6500,220,501
+657,479,3,3,132,488
+658,479,3,3,132,489
+659,479,3,3,132,490
+660,479,3,3,132,491
+661,479,3,3,132,492
+662,351,3,8,147,379
+663,351,3,8,147,380
+664,351,3,8,147,381
+665,550,10,180,161,566
+666,555,13,929,189,572
+667,648,6,65,270,666
diff --git a/pokedex/data/csv/pokemon_forms.csv b/pokedex/data/csv/pokemon_forms.csv
index e34db6e..d812e37 100644
--- a/pokedex/data/csv/pokemon_forms.csv
+++ b/pokedex/data/csv/pokemon_forms.csv
@@ -1,728 +1,728 @@
-id,identifier,form_base_pokemon_id,unique_pokemon_id,introduced_in_version_group_id,is_default,order
-1,,1,,1,1,1
-2,,2,,1,1,1
-3,,3,,1,1,1
-4,,4,,1,1,1
-5,,5,,1,1,1
-6,,6,,1,1,1
-7,,7,,1,1,1
-8,,8,,1,1,1
-9,,9,,1,1,1
-10,,10,,1,1,1
-11,,11,,1,1,1
-12,,12,,1,1,1
-13,,13,,1,1,1
-14,,14,,1,1,1
-15,,15,,1,1,1
-16,,16,,1,1,1
-17,,17,,1,1,1
-18,,18,,1,1,1
-19,,19,,1,1,1
-20,,20,,1,1,1
-21,,21,,1,1,1
-22,,22,,1,1,1
-23,,23,,1,1,1
-24,,24,,1,1,1
-25,,25,,1,1,1
-26,,26,,1,1,1
-27,,27,,1,1,1
-28,,28,,1,1,1
-29,,29,,1,1,1
-30,,30,,1,1,1
-31,,31,,1,1,1
-32,,32,,1,1,1
-33,,33,,1,1,1
-34,,34,,1,1,1
-35,,35,,1,1,1
-36,,36,,1,1,1
-37,,37,,1,1,1
-38,,38,,1,1,1
-39,,39,,1,1,1
-40,,40,,1,1,1
-41,,41,,1,1,1
-42,,42,,1,1,1
-43,,43,,1,1,1
-44,,44,,1,1,1
-45,,45,,1,1,1
-46,,46,,1,1,1
-47,,47,,1,1,1
-48,,48,,1,1,1
-49,,49,,1,1,1
-50,,50,,1,1,1
-51,,51,,1,1,1
-52,,52,,1,1,1
-53,,53,,1,1,1
-54,,54,,1,1,1
-55,,55,,1,1,1
-56,,56,,1,1,1
-57,,57,,1,1,1
-58,,58,,1,1,1
-59,,59,,1,1,1
-60,,60,,1,1,1
-61,,61,,1,1,1
-62,,62,,1,1,1
-63,,63,,1,1,1
-64,,64,,1,1,1
-65,,65,,1,1,1
-66,,66,,1,1,1
-67,,67,,1,1,1
-68,,68,,1,1,1
-69,,69,,1,1,1
-70,,70,,1,1,1
-71,,71,,1,1,1
-72,,72,,1,1,1
-73,,73,,1,1,1
-74,,74,,1,1,1
-75,,75,,1,1,1
-76,,76,,1,1,1
-77,,77,,1,1,1
-78,,78,,1,1,1
-79,,79,,1,1,1
-80,,80,,1,1,1
-81,,81,,1,1,1
-82,,82,,1,1,1
-83,,83,,1,1,1
-84,,84,,1,1,1
-85,,85,,1,1,1
-86,,86,,1,1,1
-87,,87,,1,1,1
-88,,88,,1,1,1
-89,,89,,1,1,1
-90,,90,,1,1,1
-91,,91,,1,1,1
-92,,92,,1,1,1
-93,,93,,1,1,1
-94,,94,,1,1,1
-95,,95,,1,1,1
-96,,96,,1,1,1
-97,,97,,1,1,1
-98,,98,,1,1,1
-99,,99,,1,1,1
-100,,100,,1,1,1
-101,,101,,1,1,1
-102,,102,,1,1,1
-103,,103,,1,1,1
-104,,104,,1,1,1
-105,,105,,1,1,1
-106,,106,,1,1,1
-107,,107,,1,1,1
-108,,108,,1,1,1
-109,,109,,1,1,1
-110,,110,,1,1,1
-111,,111,,1,1,1
-112,,112,,1,1,1
-113,,113,,1,1,1
-114,,114,,1,1,1
-115,,115,,1,1,1
-116,,116,,1,1,1
-117,,117,,1,1,1
-118,,118,,1,1,1
-119,,119,,1,1,1
-120,,120,,1,1,1
-121,,121,,1,1,1
-122,,122,,1,1,1
-123,,123,,1,1,1
-124,,124,,1,1,1
-125,,125,,1,1,1
-126,,126,,1,1,1
-127,,127,,1,1,1
-128,,128,,1,1,1
-129,,129,,1,1,1
-130,,130,,1,1,1
-131,,131,,1,1,1
-132,,132,,1,1,1
-133,,133,,1,1,1
-134,,134,,1,1,1
-135,,135,,1,1,1
-136,,136,,1,1,1
-137,,137,,1,1,1
-138,,138,,1,1,1
-139,,139,,1,1,1
-140,,140,,1,1,1
-141,,141,,1,1,1
-142,,142,,1,1,1
-143,,143,,1,1,1
-144,,144,,1,1,1
-145,,145,,1,1,1
-146,,146,,1,1,1
-147,,147,,1,1,1
-148,,148,,1,1,1
-149,,149,,1,1,1
-150,,150,,1,1,1
-151,,151,,1,1,1
-152,,152,,3,1,1
-153,,153,,3,1,1
-154,,154,,3,1,1
-155,,155,,3,1,1
-156,,156,,3,1,1
-157,,157,,3,1,1
-158,,158,,3,1,1
-159,,159,,3,1,1
-160,,160,,3,1,1
-161,,161,,3,1,1
-162,,162,,3,1,1
-163,,163,,3,1,1
-164,,164,,3,1,1
-165,,165,,3,1,1
-166,,166,,3,1,1
-167,,167,,3,1,1
-168,,168,,3,1,1
-169,,169,,3,1,1
-170,,170,,3,1,1
-171,,171,,3,1,1
-172,,172,,3,1,1
-173,,173,,3,1,1
-174,,174,,3,1,1
-175,,175,,3,1,1
-176,,176,,3,1,1
-177,,177,,3,1,1
-178,,178,,3,1,1
-179,,179,,3,1,1
-180,,180,,3,1,1
-181,,181,,3,1,1
-182,,182,,3,1,1
-183,,183,,3,1,1
-184,,184,,3,1,1
-185,,185,,3,1,1
-186,,186,,3,1,1
-187,,187,,3,1,1
-188,,188,,3,1,1
-189,,189,,3,1,1
-190,,190,,3,1,1
-191,,191,,3,1,1
-192,,192,,3,1,1
-193,,193,,3,1,1
-194,,194,,3,1,1
-195,,195,,3,1,1
-196,,196,,3,1,1
-197,,197,,3,1,1
-198,,198,,3,1,1
-199,,199,,3,1,1
-200,,200,,3,1,1
-201,a,201,,3,1,1
-202,,202,,3,1,1
-203,,203,,3,1,1
-204,,204,,3,1,1
-205,,205,,3,1,1
-206,,206,,3,1,1
-207,,207,,3,1,1
-208,,208,,3,1,1
-209,,209,,3,1,1
-210,,210,,3,1,1
-211,,211,,3,1,1
-212,,212,,3,1,1
-213,,213,,3,1,1
-214,,214,,3,1,1
-215,,215,,3,1,1
-216,,216,,3,1,1
-217,,217,,3,1,1
-218,,218,,3,1,1
-219,,219,,3,1,1
-220,,220,,3,1,1
-221,,221,,3,1,1
-222,,222,,3,1,1
-223,,223,,3,1,1
-224,,224,,3,1,1
-225,,225,,3,1,1
-226,,226,,3,1,1
-227,,227,,3,1,1
-228,,228,,3,1,1
-229,,229,,3,1,1
-230,,230,,3,1,1
-231,,231,,3,1,1
-232,,232,,3,1,1
-233,,233,,3,1,1
-234,,234,,3,1,1
-235,,235,,3,1,1
-236,,236,,3,1,1
-237,,237,,3,1,1
-238,,238,,3,1,1
-239,,239,,3,1,1
-240,,240,,3,1,1
-241,,241,,3,1,1
-242,,242,,3,1,1
-243,,243,,3,1,1
-244,,244,,3,1,1
-245,,245,,3,1,1
-246,,246,,3,1,1
-247,,247,,3,1,1
-248,,248,,3,1,1
-249,,249,,3,1,1
-250,,250,,3,1,1
-251,,251,,3,1,1
-252,,252,,5,1,1
-253,,253,,5,1,1
-254,,254,,5,1,1
-255,,255,,5,1,1
-256,,256,,5,1,1
-257,,257,,5,1,1
-258,,258,,5,1,1
-259,,259,,5,1,1
-260,,260,,5,1,1
-261,,261,,5,1,1
-262,,262,,5,1,1
-263,,263,,5,1,1
-264,,264,,5,1,1
-265,,265,,5,1,1
-266,,266,,5,1,1
-267,,267,,5,1,1
-268,,268,,5,1,1
-269,,269,,5,1,1
-270,,270,,5,1,1
-271,,271,,5,1,1
-272,,272,,5,1,1
-273,,273,,5,1,1
-274,,274,,5,1,1
-275,,275,,5,1,1
-276,,276,,5,1,1
-277,,277,,5,1,1
-278,,278,,5,1,1
-279,,279,,5,1,1
-280,,280,,5,1,1
-281,,281,,5,1,1
-282,,282,,5,1,1
-283,,283,,5,1,1
-284,,284,,5,1,1
-285,,285,,5,1,1
-286,,286,,5,1,1
-287,,287,,5,1,1
-288,,288,,5,1,1
-289,,289,,5,1,1
-290,,290,,5,1,1
-291,,291,,5,1,1
-292,,292,,5,1,1
-293,,293,,5,1,1
-294,,294,,5,1,1
-295,,295,,5,1,1
-296,,296,,5,1,1
-297,,297,,5,1,1
-298,,298,,5,1,1
-299,,299,,5,1,1
-300,,300,,5,1,1
-301,,301,,5,1,1
-302,,302,,5,1,1
-303,,303,,5,1,1
-304,,304,,5,1,1
-305,,305,,5,1,1
-306,,306,,5,1,1
-307,,307,,5,1,1
-308,,308,,5,1,1
-309,,309,,5,1,1
-310,,310,,5,1,1
-311,,311,,5,1,1
-312,,312,,5,1,1
-313,,313,,5,1,1
-314,,314,,5,1,1
-315,,315,,5,1,1
-316,,316,,5,1,1
-317,,317,,5,1,1
-318,,318,,5,1,1
-319,,319,,5,1,1
-320,,320,,5,1,1
-321,,321,,5,1,1
-322,,322,,5,1,1
-323,,323,,5,1,1
-324,,324,,5,1,1
-325,,325,,5,1,1
-326,,326,,5,1,1
-327,,327,,5,1,1
-328,,328,,5,1,1
-329,,329,,5,1,1
-330,,330,,5,1,1
-331,,331,,5,1,1
-332,,332,,5,1,1
-333,,333,,5,1,1
-334,,334,,5,1,1
-335,,335,,5,1,1
-336,,336,,5,1,1
-337,,337,,5,1,1
-338,,338,,5,1,1
-339,,339,,5,1,1
-340,,340,,5,1,1
-341,,341,,5,1,1
-342,,342,,5,1,1
-343,,343,,5,1,1
-344,,344,,5,1,1
-345,,345,,5,1,1
-346,,346,,5,1,1
-347,,347,,5,1,1
-348,,348,,5,1,1
-349,,349,,5,1,1
-350,,350,,5,1,1
-351,,351,351,5,1,1
-352,,352,,5,1,1
-353,,353,,5,1,1
-354,,354,,5,1,1
-355,,355,,5,1,1
-356,,356,,5,1,1
-357,,357,,5,1,1
-358,,358,,5,1,1
-359,,359,,5,1,1
-360,,360,,5,1,1
-361,,361,,5,1,1
-362,,362,,5,1,1
-363,,363,,5,1,1
-364,,364,,5,1,1
-365,,365,,5,1,1
-366,,366,,5,1,1
-367,,367,,5,1,1
-368,,368,,5,1,1
-369,,369,,5,1,1
-370,,370,,5,1,1
-371,,371,,5,1,1
-372,,372,,5,1,1
-373,,373,,5,1,1
-374,,374,,5,1,1
-375,,375,,5,1,1
-376,,376,,5,1,1
-377,,377,,5,1,1
-378,,378,,5,1,1
-379,,379,,5,1,1
-380,,380,,5,1,1
-381,,381,,5,1,1
-382,,382,,5,1,1
-383,,383,,5,1,1
-384,,384,,5,1,1
-385,,385,,5,1,1
-386,normal,386,386,5,1,1
-387,,387,,8,1,1
-388,,388,,8,1,1
-389,,389,,8,1,1
-390,,390,,8,1,1
-391,,391,,8,1,1
-392,,392,,8,1,1
-393,,393,,8,1,1
-394,,394,,8,1,1
-395,,395,,8,1,1
-396,,396,,8,1,1
-397,,397,,8,1,1
-398,,398,,8,1,1
-399,,399,,8,1,1
-400,,400,,8,1,1
-401,,401,,8,1,1
-402,,402,,8,1,1
-403,,403,,8,1,1
-404,,404,,8,1,1
-405,,405,,8,1,1
-406,,406,,8,1,1
-407,,407,,8,1,1
-408,,408,,8,1,1
-409,,409,,8,1,1
-410,,410,,8,1,1
-411,,411,,8,1,1
-412,plant,412,,8,1,1
-413,plant,413,413,8,1,1
-414,,414,,8,1,1
-415,,415,,8,1,1
-416,,416,,8,1,1
-417,,417,,8,1,1
-418,,418,,8,1,1
-419,,419,,8,1,1
-420,,420,,8,1,1
-421,overcast,421,,8,1,1
-422,west,422,,8,1,1
-423,west,423,,8,1,1
-424,,424,,8,1,1
-425,,425,,8,1,1
-426,,426,,8,1,1
-427,,427,,8,1,1
-428,,428,,8,1,1
-429,,429,,8,1,1
-430,,430,,8,1,1
-431,,431,,8,1,1
-432,,432,,8,1,1
-433,,433,,8,1,1
-434,,434,,8,1,1
-435,,435,,8,1,1
-436,,436,,8,1,1
-437,,437,,8,1,1
-438,,438,,8,1,1
-439,,439,,8,1,1
-440,,440,,8,1,1
-441,,441,,8,1,1
-442,,442,,8,1,1
-443,,443,,8,1,1
-444,,444,,8,1,1
-445,,445,,8,1,1
-446,,446,,8,1,1
-447,,447,,8,1,1
-448,,448,,8,1,1
-449,,449,,8,1,1
-450,,450,,8,1,1
-451,,451,,8,1,1
-452,,452,,8,1,1
-453,,453,,8,1,1
-454,,454,,8,1,1
-455,,455,,8,1,1
-456,,456,,8,1,1
-457,,457,,8,1,1
-458,,458,,8,1,1
-459,,459,,8,1,1
-460,,460,,8,1,1
-461,,461,,8,1,1
-462,,462,,8,1,1
-463,,463,,8,1,1
-464,,464,,8,1,1
-465,,465,,8,1,1
-466,,466,,8,1,1
-467,,467,,8,1,1
-468,,468,,8,1,1
-469,,469,,8,1,1
-470,,470,,8,1,1
-471,,471,,8,1,1
-472,,472,,8,1,1
-473,,473,,8,1,1
-474,,474,,8,1,1
-475,,475,,8,1,1
-476,,476,,8,1,1
-477,,477,,8,1,1
-478,,478,,8,1,1
-479,,479,479,8,1,1
-480,,480,,8,1,1
-481,,481,,8,1,1
-482,,482,,8,1,1
-483,,483,,8,1,1
-484,,484,,8,1,1
-485,,485,,8,1,1
-486,,486,,8,1,1
-487,altered,487,487,8,1,1
-488,,488,,8,1,1
-489,,489,,8,1,1
-490,,490,,8,1,1
-491,,491,,8,1,1
-492,land,492,492,8,1,1
-493,normal,493,,8,1,1
-494,,494,,11,1,1
-495,,495,,11,1,1
-496,,496,,11,1,1
-497,,497,,11,1,1
-498,,498,,11,1,1
-499,,499,,11,1,1
-500,,500,,11,1,1
-501,,501,,11,1,1
-502,,502,,11,1,1
-503,,503,,11,1,1
-504,,504,,11,1,1
-505,,505,,11,1,1
-506,,506,,11,1,1
-507,,507,,11,1,1
-508,,508,,11,1,1
-509,,509,,11,1,1
-510,,510,,11,1,1
-511,,511,,11,1,1
-512,,512,,11,1,1
-513,,513,,11,1,1
-514,,514,,11,1,1
-515,,515,,11,1,1
-516,,516,,11,1,1
-517,,517,,11,1,1
-518,,518,,11,1,1
-519,,519,,11,1,1
-520,,520,,11,1,1
-521,,521,,11,1,1
-522,,522,,11,1,1
-523,,523,,11,1,1
-524,,524,,11,1,1
-525,,525,,11,1,1
-526,,526,,11,1,1
-527,,527,,11,1,1
-528,,528,,11,1,1
-529,,529,,11,1,1
-530,,530,,11,1,1
-531,,531,,11,1,1
-532,,532,,11,1,1
-533,,533,,11,1,1
-534,,534,,11,1,1
-535,,535,,11,1,1
-536,,536,,11,1,1
-537,,537,,11,1,1
-538,,538,,11,1,1
-539,,539,,11,1,1
-540,,540,,11,1,1
-541,,541,,11,1,1
-542,,542,,11,1,1
-543,,543,,11,1,1
-544,,544,,11,1,1
-545,,545,,11,1,1
-546,,546,,11,1,1
-547,,547,,11,1,1
-548,,548,,11,1,1
-549,,549,,11,1,1
-550,red-striped,550,550,11,1,1
-551,,551,,11,1,1
-552,,552,,11,1,1
-553,,553,,11,1,1
-554,,554,,11,1,1
-555,standard,555,555,11,1,1
-556,,556,,11,1,1
-557,,557,,11,1,1
-558,,558,,11,1,1
-559,,559,,11,1,1
-560,,560,,11,1,1
-561,,561,,11,1,1
-562,,562,,11,1,1
-563,,563,,11,1,1
-564,,564,,11,1,1
-565,,565,,11,1,1
-566,,566,,11,1,1
-567,,567,,11,1,1
-568,,568,,11,1,1
-569,,569,,11,1,1
-570,,570,,11,1,1
-571,,571,,11,1,1
-572,,572,,11,1,1
-573,,573,,11,1,1
-574,,574,,11,1,1
-575,,575,,11,1,1
-576,,576,,11,1,1
-577,,577,,11,1,1
-578,,578,,11,1,1
-579,,579,,11,1,1
-580,,580,,11,1,1
-581,,581,,11,1,1
-582,,582,,11,1,1
-583,,583,,11,1,1
-584,,584,,11,1,1
-585,spring,585,,11,1,1
-586,spring,586,,11,1,1
-587,,587,,11,1,1
-588,,588,,11,1,1
-589,,589,,11,1,1
-590,,590,,11,1,1
-591,,591,,11,1,1
-592,,592,,11,1,1
-593,,593,,11,1,1
-594,,594,,11,1,1
-595,,595,,11,1,1
-596,,596,,11,1,1
-597,,597,,11,1,1
-598,,598,,11,1,1
-599,,599,,11,1,1
-600,,600,,11,1,1
-601,,601,,11,1,1
-602,,602,,11,1,1
-603,,603,,11,1,1
-604,,604,,11,1,1
-605,,605,,11,1,1
-606,,606,,11,1,1
-607,,607,,11,1,1
-608,,608,,11,1,1
-609,,609,,11,1,1
-610,,610,,11,1,1
-611,,611,,11,1,1
-612,,612,,11,1,1
-613,,613,,11,1,1
-614,,614,,11,1,1
-615,,615,,11,1,1
-616,,616,,11,1,1
-617,,617,,11,1,1
-618,,618,,11,1,1
-619,,619,,11,1,1
-620,,620,,11,1,1
-621,,621,,11,1,1
-622,,622,,11,1,1
-623,,623,,11,1,1
-624,,624,,11,1,1
-625,,625,,11,1,1
-626,,626,,11,1,1
-627,,627,,11,1,1
-628,,628,,11,1,1
-629,,629,,11,1,1
-630,,630,,11,1,1
-631,,631,,11,1,1
-632,,632,,11,1,1
-633,,633,,11,1,1
-634,,634,,11,1,1
-635,,635,,11,1,1
-636,,636,,11,1,1
-637,,637,,11,1,1
-638,,638,,11,1,1
-639,,639,,11,1,1
-640,,640,,11,1,1
-641,,641,,11,1,1
-642,,642,,11,1,1
-643,,643,,11,1,1
-644,,644,,11,1,1
-645,,645,,11,1,1
-646,,646,,11,1,1
-647,,647,,11,1,1
-648,aria,648,648,11,1,1
-649,,649,,11,1,1
-10001,b,201,,3,0,2
-10002,c,201,,3,0,3
-10003,d,201,,3,0,4
-10004,e,201,,3,0,5
-10005,f,201,,3,0,6
-10006,g,201,,3,0,7
-10007,h,201,,3,0,8
-10008,i,201,,3,0,9
-10009,j,201,,3,0,10
-10010,k,201,,3,0,11
-10011,l,201,,3,0,12
-10012,m,201,,3,0,13
-10013,n,201,,3,0,14
-10014,o,201,,3,0,15
-10015,p,201,,3,0,16
-10016,q,201,,3,0,17
-10017,r,201,,3,0,18
-10018,s,201,,3,0,19
-10019,t,201,,3,0,20
-10020,u,201,,3,0,21
-10021,v,201,,3,0,22
-10022,w,201,,3,0,23
-10023,x,201,,3,0,24
-10024,y,201,,3,0,25
-10025,z,201,,3,0,26
-10026,exclamation,201,,5,0,27
-10027,question,201,,5,0,27
-10028,sunny,351,10013,5,0,2
-10029,rainy,351,10014,5,0,3
-10030,snowy,351,10015,5,0,4
-10031,attack,386,10001,7,0,2
-10032,defense,386,10002,7,0,3
-10033,speed,386,10003,6,0,4
-10034,sandy,412,,8,0,2
-10035,trash,412,,8,0,3
-10036,sandy,413,10004,8,0,2
-10037,trash,413,10005,8,0,3
-10038,sunshine,421,,8,0,2
-10039,east,422,,8,0,2
-10040,east,423,,8,0,2
-10041,bug,493,,8,0,2
-10042,dark,493,,8,0,2
-10043,dragon,493,,8,0,2
-10044,electric,493,,8,0,2
-10045,fighting,493,,8,0,2
-10046,fire,493,,8,0,2
-10047,flying,493,,8,0,2
-10048,ghost,493,,8,0,2
-10049,grass,493,,8,0,2
-10050,ground,493,,8,0,2
-10051,ice,493,,8,0,2
-10052,poison,493,,8,0,2
-10053,psychic,493,,8,0,2
-10054,rock,493,,8,0,2
-10055,steel,493,,8,0,2
-10056,water,493,,8,0,2
-10057,unknown,493,,8,0,3
-10058,heat,479,10008,9,0,2
-10059,wash,479,10009,9,0,3
-10060,frost,479,10010,9,0,4
-10061,fan,479,10011,9,0,5
-10062,mow,479,10012,9,0,6
-10063,origin,487,10007,9,0,2
-10064,sky,492,10006,9,0,2
-10065,spiky-eared,172,,10,0,2
-10066,blue-striped,550,10016,11,0,2
-10067,zen,555,10017,11,0,2
-10068,summer,585,,11,0,2
-10069,autumn,585,,11,0,3
-10070,winter,585,,11,0,4
-10071,summer,586,,11,0,2
-10072,autumn,586,,11,0,3
-10073,winter,586,,11,0,4
-10074,pirouette,648,10018,11,0,2
-10075,douse,649,,11,0,2
-10076,shock,649,,11,0,2
-10077,burn,649,,11,0,2
-10078,chill,649,,11,0,2
+id,form_identifier,pokemon_id,introduced_in_version_group_id,is_default,is_battle_only,order
+1,,1,1,1,0,1
+2,,2,1,1,0,2
+3,,3,1,1,0,3
+4,,4,1,1,0,4
+5,,5,1,1,0,5
+6,,6,1,1,0,6
+7,,7,1,1,0,7
+8,,8,1,1,0,8
+9,,9,1,1,0,9
+10,,10,1,1,0,10
+11,,11,1,1,0,11
+12,,12,1,1,0,12
+13,,13,1,1,0,13
+14,,14,1,1,0,14
+15,,15,1,1,0,15
+16,,16,1,1,0,16
+17,,17,1,1,0,17
+18,,18,1,1,0,18
+19,,19,1,1,0,19
+20,,20,1,1,0,20
+21,,21,1,1,0,21
+22,,22,1,1,0,22
+23,,23,1,1,0,23
+24,,24,1,1,0,24
+25,,25,1,1,0,26
+26,,26,1,1,0,27
+27,,27,1,1,0,28
+28,,28,1,1,0,29
+29,,29,1,1,0,30
+30,,30,1,1,0,31
+31,,31,1,1,0,32
+32,,32,1,1,0,33
+33,,33,1,1,0,34
+34,,34,1,1,0,35
+35,,35,1,1,0,37
+36,,36,1,1,0,38
+37,,37,1,1,0,39
+38,,38,1,1,0,40
+39,,39,1,1,0,42
+40,,40,1,1,0,43
+41,,41,1,1,0,44
+42,,42,1,1,0,45
+43,,43,1,1,0,47
+44,,44,1,1,0,48
+45,,45,1,1,0,49
+46,,46,1,1,0,51
+47,,47,1,1,0,52
+48,,48,1,1,0,53
+49,,49,1,1,0,54
+50,,50,1,1,0,55
+51,,51,1,1,0,56
+52,,52,1,1,0,57
+53,,53,1,1,0,58
+54,,54,1,1,0,59
+55,,55,1,1,0,60
+56,,56,1,1,0,61
+57,,57,1,1,0,62
+58,,58,1,1,0,63
+59,,59,1,1,0,64
+60,,60,1,1,0,65
+61,,61,1,1,0,66
+62,,62,1,1,0,67
+63,,63,1,1,0,69
+64,,64,1,1,0,70
+65,,65,1,1,0,71
+66,,66,1,1,0,72
+67,,67,1,1,0,73
+68,,68,1,1,0,74
+69,,69,1,1,0,75
+70,,70,1,1,0,76
+71,,71,1,1,0,77
+72,,72,1,1,0,78
+73,,73,1,1,0,79
+74,,74,1,1,0,80
+75,,75,1,1,0,81
+76,,76,1,1,0,82
+77,,77,1,1,0,83
+78,,78,1,1,0,84
+79,,79,1,1,0,85
+80,,80,1,1,0,86
+81,,81,1,1,0,88
+82,,82,1,1,0,89
+83,,83,1,1,0,91
+84,,84,1,1,0,92
+85,,85,1,1,0,93
+86,,86,1,1,0,94
+87,,87,1,1,0,95
+88,,88,1,1,0,96
+89,,89,1,1,0,97
+90,,90,1,1,0,98
+91,,91,1,1,0,99
+92,,92,1,1,0,100
+93,,93,1,1,0,101
+94,,94,1,1,0,102
+95,,95,1,1,0,103
+96,,96,1,1,0,105
+97,,97,1,1,0,106
+98,,98,1,1,0,107
+99,,99,1,1,0,108
+100,,100,1,1,0,109
+101,,101,1,1,0,110
+102,,102,1,1,0,111
+103,,103,1,1,0,112
+104,,104,1,1,0,113
+105,,105,1,1,0,114
+106,,106,1,1,0,116
+107,,107,1,1,0,117
+108,,108,1,1,0,119
+109,,109,1,1,0,121
+110,,110,1,1,0,122
+111,,111,1,1,0,123
+112,,112,1,1,0,124
+113,,113,1,1,0,127
+114,,114,1,1,0,129
+115,,115,1,1,0,131
+116,,116,1,1,0,132
+117,,117,1,1,0,133
+118,,118,1,1,0,135
+119,,119,1,1,0,136
+120,,120,1,1,0,137
+121,,121,1,1,0,138
+122,,122,1,1,0,140
+123,,123,1,1,0,141
+124,,124,1,1,0,144
+125,,125,1,1,0,146
+126,,126,1,1,0,149
+127,,127,1,1,0,151
+128,,128,1,1,0,152
+129,,129,1,1,0,153
+130,,130,1,1,0,154
+131,,131,1,1,0,155
+132,,132,1,1,0,156
+133,,133,1,1,0,157
+134,,134,1,1,0,158
+135,,135,1,1,0,159
+136,,136,1,1,0,160
+137,,137,1,1,0,165
+138,,138,1,1,0,168
+139,,139,1,1,0,169
+140,,140,1,1,0,170
+141,,141,1,1,0,171
+142,,142,1,1,0,172
+143,,143,1,1,0,174
+144,,144,1,1,0,175
+145,,145,1,1,0,176
+146,,146,1,1,0,177
+147,,147,1,1,0,178
+148,,148,1,1,0,179
+149,,149,1,1,0,180
+150,,150,1,1,0,181
+151,,151,1,1,0,182
+152,,152,3,1,0,183
+153,,153,3,1,0,184
+154,,154,3,1,0,185
+155,,155,3,1,0,186
+156,,156,3,1,0,187
+157,,157,3,1,0,188
+158,,158,3,1,0,189
+159,,159,3,1,0,190
+160,,160,3,1,0,191
+161,,161,3,1,0,192
+162,,162,3,1,0,193
+163,,163,3,1,0,194
+164,,164,3,1,0,195
+165,,165,3,1,0,196
+166,,166,3,1,0,197
+167,,167,3,1,0,198
+168,,168,3,1,0,199
+169,,169,3,1,0,46
+170,,170,3,1,0,200
+171,,171,3,1,0,201
+172,,172,3,1,0,25
+173,,173,3,1,0,36
+174,,174,3,1,0,41
+175,,175,3,1,0,202
+176,,176,3,1,0,203
+177,,177,3,1,0,205
+178,,178,3,1,0,206
+179,,179,3,1,0,207
+180,,180,3,1,0,208
+181,,181,3,1,0,209
+182,,182,3,1,0,50
+183,,183,3,1,0,211
+184,,184,3,1,0,212
+185,,185,3,1,0,214
+186,,186,3,1,0,68
+187,,187,3,1,0,215
+188,,188,3,1,0,216
+189,,189,3,1,0,217
+190,,190,3,1,0,218
+191,,191,3,1,0,220
+192,,192,3,1,0,221
+193,,193,3,1,0,222
+194,,194,3,1,0,224
+195,,195,3,1,0,225
+196,,196,3,1,0,161
+197,,197,3,1,0,162
+198,,198,3,1,0,226
+199,,199,3,1,0,87
+200,,200,3,1,0,228
+201,a,201,3,1,0,230
+202,,202,3,1,0,232
+203,,203,3,1,0,233
+204,,204,3,1,0,234
+205,,205,3,1,0,235
+206,,206,3,1,0,236
+207,,207,3,1,0,237
+208,,208,3,1,0,104
+209,,209,3,1,0,239
+210,,210,3,1,0,240
+211,,211,3,1,0,241
+212,,212,3,1,0,142
+213,,213,3,1,0,242
+214,,214,3,1,0,243
+215,,215,3,1,0,244
+216,,216,3,1,0,246
+217,,217,3,1,0,247
+218,,218,3,1,0,248
+219,,219,3,1,0,249
+220,,220,3,1,0,250
+221,,221,3,1,0,251
+222,,222,3,1,0,253
+223,,223,3,1,0,254
+224,,224,3,1,0,255
+225,,225,3,1,0,256
+226,,226,3,1,0,258
+227,,227,3,1,0,259
+228,,228,3,1,0,260
+229,,229,3,1,0,261
+230,,230,3,1,0,134
+231,,231,3,1,0,262
+232,,232,3,1,0,263
+233,,233,3,1,0,166
+234,,234,3,1,0,264
+235,,235,3,1,0,265
+236,,236,3,1,0,115
+237,,237,3,1,0,118
+238,,238,3,1,0,143
+239,,239,3,1,0,145
+240,,240,3,1,0,148
+241,,241,3,1,0,266
+242,,242,3,1,0,128
+243,,243,3,1,0,267
+244,,244,3,1,0,268
+245,,245,3,1,0,269
+246,,246,3,1,0,270
+247,,247,3,1,0,271
+248,,248,3,1,0,272
+249,,249,3,1,0,273
+250,,250,3,1,0,274
+251,,251,3,1,0,275
+252,,252,5,1,0,276
+253,,253,5,1,0,277
+254,,254,5,1,0,278
+255,,255,5,1,0,279
+256,,256,5,1,0,280
+257,,257,5,1,0,281
+258,,258,5,1,0,282
+259,,259,5,1,0,283
+260,,260,5,1,0,284
+261,,261,5,1,0,285
+262,,262,5,1,0,286
+263,,263,5,1,0,287
+264,,264,5,1,0,288
+265,,265,5,1,0,289
+266,,266,5,1,0,290
+267,,267,5,1,0,291
+268,,268,5,1,0,292
+269,,269,5,1,0,293
+270,,270,5,1,0,294
+271,,271,5,1,0,295
+272,,272,5,1,0,296
+273,,273,5,1,0,297
+274,,274,5,1,0,298
+275,,275,5,1,0,299
+276,,276,5,1,0,300
+277,,277,5,1,0,301
+278,,278,5,1,0,302
+279,,279,5,1,0,303
+280,,280,5,1,0,304
+281,,281,5,1,0,305
+282,,282,5,1,0,306
+283,,283,5,1,0,308
+284,,284,5,1,0,309
+285,,285,5,1,0,310
+286,,286,5,1,0,311
+287,,287,5,1,0,312
+288,,288,5,1,0,313
+289,,289,5,1,0,314
+290,,290,5,1,0,315
+291,,291,5,1,0,316
+292,,292,5,1,0,317
+293,,293,5,1,0,318
+294,,294,5,1,0,319
+295,,295,5,1,0,320
+296,,296,5,1,0,321
+297,,297,5,1,0,322
+298,,298,5,1,0,210
+299,,299,5,1,0,323
+300,,300,5,1,0,325
+301,,301,5,1,0,326
+302,,302,5,1,0,327
+303,,303,5,1,0,328
+304,,304,5,1,0,329
+305,,305,5,1,0,330
+306,,306,5,1,0,331
+307,,307,5,1,0,332
+308,,308,5,1,0,333
+309,,309,5,1,0,334
+310,,310,5,1,0,335
+311,,311,5,1,0,336
+312,,312,5,1,0,337
+313,,313,5,1,0,338
+314,,314,5,1,0,339
+315,,315,5,1,0,341
+316,,316,5,1,0,343
+317,,317,5,1,0,344
+318,,318,5,1,0,345
+319,,319,5,1,0,346
+320,,320,5,1,0,347
+321,,321,5,1,0,348
+322,,322,5,1,0,349
+323,,323,5,1,0,350
+324,,324,5,1,0,351
+325,,325,5,1,0,352
+326,,326,5,1,0,353
+327,,327,5,1,0,354
+328,,328,5,1,0,355
+329,,329,5,1,0,356
+330,,330,5,1,0,357
+331,,331,5,1,0,358
+332,,332,5,1,0,359
+333,,333,5,1,0,360
+334,,334,5,1,0,361
+335,,335,5,1,0,362
+336,,336,5,1,0,363
+337,,337,5,1,0,364
+338,,338,5,1,0,365
+339,,339,5,1,0,366
+340,,340,5,1,0,367
+341,,341,5,1,0,368
+342,,342,5,1,0,369
+343,,343,5,1,0,370
+344,,344,5,1,0,371
+345,,345,5,1,0,372
+346,,346,5,1,0,373
+347,,347,5,1,0,374
+348,,348,5,1,0,375
+349,,349,5,1,0,376
+350,,350,5,1,0,377
+351,,351,5,1,0,378
+352,,352,5,1,0,382
+353,,353,5,1,0,383
+354,,354,5,1,0,384
+355,,355,5,1,0,385
+356,,356,5,1,0,386
+357,,357,5,1,0,388
+358,,358,5,1,0,390
+359,,359,5,1,0,391
+360,,360,5,1,0,231
+361,,361,5,1,0,392
+362,,362,5,1,0,393
+363,,363,5,1,0,395
+364,,364,5,1,0,396
+365,,365,5,1,0,397
+366,,366,5,1,0,398
+367,,367,5,1,0,399
+368,,368,5,1,0,400
+369,,369,5,1,0,401
+370,,370,5,1,0,402
+371,,371,5,1,0,403
+372,,372,5,1,0,404
+373,,373,5,1,0,405
+374,,374,5,1,0,406
+375,,375,5,1,0,407
+376,,376,5,1,0,408
+377,,377,5,1,0,409
+378,,378,5,1,0,410
+379,,379,5,1,0,411
+380,,380,5,1,0,412
+381,,381,5,1,0,413
+382,,382,5,1,0,414
+383,,383,5,1,0,415
+384,,384,5,1,0,416
+385,,385,5,1,0,417
+386,normal,386,5,1,0,418
+387,,387,8,1,0,422
+388,,388,8,1,0,423
+389,,389,8,1,0,424
+390,,390,8,1,0,425
+391,,391,8,1,0,426
+392,,392,8,1,0,427
+393,,393,8,1,0,428
+394,,394,8,1,0,429
+395,,395,8,1,0,430
+396,,396,8,1,0,431
+397,,397,8,1,0,432
+398,,398,8,1,0,433
+399,,399,8,1,0,434
+400,,400,8,1,0,435
+401,,401,8,1,0,436
+402,,402,8,1,0,437
+403,,403,8,1,0,438
+404,,404,8,1,0,439
+405,,405,8,1,0,440
+406,,406,8,1,0,340
+407,,407,8,1,0,342
+408,,408,8,1,0,441
+409,,409,8,1,0,442
+410,,410,8,1,0,443
+411,,411,8,1,0,444
+412,plant,412,8,1,0,445
+413,plant,413,8,1,0,446
+414,,414,8,1,0,449
+415,,415,8,1,0,450
+416,,416,8,1,0,451
+417,,417,8,1,0,452
+418,,418,8,1,0,453
+419,,419,8,1,0,454
+420,,420,8,1,0,455
+421,overcast,421,8,1,1,456
+422,west,422,8,1,0,457
+423,west,423,8,1,0,458
+424,,424,8,1,0,219
+425,,425,8,1,0,459
+426,,426,8,1,0,460
+427,,427,8,1,0,461
+428,,428,8,1,0,462
+429,,429,8,1,0,229
+430,,430,8,1,0,227
+431,,431,8,1,0,463
+432,,432,8,1,0,464
+433,,433,8,1,0,389
+434,,434,8,1,0,465
+435,,435,8,1,0,466
+436,,436,8,1,0,467
+437,,437,8,1,0,468
+438,,438,8,1,0,213
+439,,439,8,1,0,139
+440,,440,8,1,0,126
+441,,441,8,1,0,469
+442,,442,8,1,0,470
+443,,443,8,1,0,471
+444,,444,8,1,0,472
+445,,445,8,1,0,473
+446,,446,8,1,0,173
+447,,447,8,1,0,474
+448,,448,8,1,0,475
+449,,449,8,1,0,476
+450,,450,8,1,0,477
+451,,451,8,1,0,478
+452,,452,8,1,0,479
+453,,453,8,1,0,480
+454,,454,8,1,0,481
+455,,455,8,1,0,482
+456,,456,8,1,0,483
+457,,457,8,1,0,484
+458,,458,8,1,0,257
+459,,459,8,1,0,485
+460,,460,8,1,0,486
+461,,461,8,1,0,245
+462,,462,8,1,0,90
+463,,463,8,1,0,120
+464,,464,8,1,0,125
+465,,465,8,1,0,130
+466,,466,8,1,0,147
+467,,467,8,1,0,150
+468,,468,8,1,0,204
+469,,469,8,1,0,223
+470,,470,8,1,0,163
+471,,471,8,1,0,164
+472,,472,8,1,0,238
+473,,473,8,1,0,252
+474,,474,8,1,0,167
+475,,475,8,1,0,307
+476,,476,8,1,0,324
+477,,477,8,1,0,387
+478,,478,8,1,0,394
+479,,479,8,1,0,487
+480,,480,8,1,0,493
+481,,481,8,1,0,494
+482,,482,8,1,0,495
+483,,483,8,1,0,496
+484,,484,8,1,0,497
+485,,485,8,1,0,498
+486,,486,8,1,0,499
+487,altered,487,8,1,0,500
+488,,488,8,1,0,502
+489,,489,8,1,0,503
+490,,490,8,1,0,504
+491,,491,8,1,0,505
+492,land,492,8,1,0,506
+493,normal,493,8,1,0,508
+494,,494,11,1,0,509
+495,,495,11,1,0,510
+496,,496,11,1,0,511
+497,,497,11,1,0,512
+498,,498,11,1,0,513
+499,,499,11,1,0,514
+500,,500,11,1,0,515
+501,,501,11,1,0,516
+502,,502,11,1,0,517
+503,,503,11,1,0,518
+504,,504,11,1,0,519
+505,,505,11,1,0,520
+506,,506,11,1,0,521
+507,,507,11,1,0,522
+508,,508,11,1,0,523
+509,,509,11,1,0,524
+510,,510,11,1,0,525
+511,,511,11,1,0,526
+512,,512,11,1,0,527
+513,,513,11,1,0,528
+514,,514,11,1,0,529
+515,,515,11,1,0,530
+516,,516,11,1,0,531
+517,,517,11,1,0,532
+518,,518,11,1,0,533
+519,,519,11,1,0,534
+520,,520,11,1,0,535
+521,,521,11,1,0,536
+522,,522,11,1,0,537
+523,,523,11,1,0,538
+524,,524,11,1,0,539
+525,,525,11,1,0,540
+526,,526,11,1,0,541
+527,,527,11,1,0,542
+528,,528,11,1,0,543
+529,,529,11,1,0,544
+530,,530,11,1,0,545
+531,,531,11,1,0,546
+532,,532,11,1,0,547
+533,,533,11,1,0,548
+534,,534,11,1,0,549
+535,,535,11,1,0,550
+536,,536,11,1,0,551
+537,,537,11,1,0,552
+538,,538,11,1,0,553
+539,,539,11,1,0,554
+540,,540,11,1,0,555
+541,,541,11,1,0,556
+542,,542,11,1,0,557
+543,,543,11,1,0,558
+544,,544,11,1,0,559
+545,,545,11,1,0,560
+546,,546,11,1,0,561
+547,,547,11,1,0,562
+548,,548,11,1,0,563
+549,,549,11,1,0,564
+550,red-striped,550,11,1,0,565
+551,,551,11,1,0,567
+552,,552,11,1,0,568
+553,,553,11,1,0,569
+554,,554,11,1,0,570
+555,standard,555,11,1,0,571
+556,,556,11,1,0,573
+557,,557,11,1,0,574
+558,,558,11,1,0,575
+559,,559,11,1,0,576
+560,,560,11,1,0,577
+561,,561,11,1,0,578
+562,,562,11,1,0,579
+563,,563,11,1,0,580
+564,,564,11,1,0,581
+565,,565,11,1,0,582
+566,,566,11,1,0,583
+567,,567,11,1,0,584
+568,,568,11,1,0,585
+569,,569,11,1,0,586
+570,,570,11,1,0,587
+571,,571,11,1,0,588
+572,,572,11,1,0,589
+573,,573,11,1,0,590
+574,,574,11,1,0,591
+575,,575,11,1,0,592
+576,,576,11,1,0,593
+577,,577,11,1,0,594
+578,,578,11,1,0,595
+579,,579,11,1,0,596
+580,,580,11,1,0,597
+581,,581,11,1,0,598
+582,,582,11,1,0,599
+583,,583,11,1,0,600
+584,,584,11,1,0,601
+585,spring,585,11,1,0,602
+586,spring,586,11,1,0,603
+587,,587,11,1,0,604
+588,,588,11,1,0,605
+589,,589,11,1,0,606
+590,,590,11,1,0,607
+591,,591,11,1,0,608
+592,,592,11,1,0,609
+593,,593,11,1,0,610
+594,,594,11,1,0,611
+595,,595,11,1,0,612
+596,,596,11,1,0,613
+597,,597,11,1,0,614
+598,,598,11,1,0,615
+599,,599,11,1,0,616
+600,,600,11,1,0,617
+601,,601,11,1,0,618
+602,,602,11,1,0,619
+603,,603,11,1,0,620
+604,,604,11,1,0,621
+605,,605,11,1,0,622
+606,,606,11,1,0,623
+607,,607,11,1,0,624
+608,,608,11,1,0,625
+609,,609,11,1,0,626
+610,,610,11,1,0,627
+611,,611,11,1,0,628
+612,,612,11,1,0,629
+613,,613,11,1,0,630
+614,,614,11,1,0,631
+615,,615,11,1,0,632
+616,,616,11,1,0,633
+617,,617,11,1,0,634
+618,,618,11,1,0,635
+619,,619,11,1,0,636
+620,,620,11,1,0,637
+621,,621,11,1,0,638
+622,,622,11,1,0,639
+623,,623,11,1,0,640
+624,,624,11,1,0,641
+625,,625,11,1,0,642
+626,,626,11,1,0,643
+627,,627,11,1,0,644
+628,,628,11,1,0,645
+629,,629,11,1,0,646
+630,,630,11,1,0,647
+631,,631,11,1,0,648
+632,,632,11,1,0,649
+633,,633,11,1,0,650
+634,,634,11,1,0,651
+635,,635,11,1,0,652
+636,,636,11,1,0,653
+637,,637,11,1,0,654
+638,,638,11,1,0,655
+639,,639,11,1,0,656
+640,,640,11,1,0,657
+641,,641,11,1,0,658
+642,,642,11,1,0,659
+643,,643,11,1,0,660
+644,,644,11,1,0,661
+645,,645,11,1,0,662
+646,,646,11,1,0,663
+647,,647,11,1,0,664
+648,aria,648,11,1,0,665
+649,,649,11,1,0,667
+650,b,201,3,0,0,230
+651,c,201,3,0,0,230
+652,d,201,3,0,0,230
+653,e,201,3,0,0,230
+654,f,201,3,0,0,230
+655,g,201,3,0,0,230
+656,h,201,3,0,0,230
+657,i,201,3,0,0,230
+658,j,201,3,0,0,230
+659,k,201,3,0,0,230
+660,l,201,3,0,0,230
+661,m,201,3,0,0,230
+662,n,201,3,0,0,230
+663,o,201,3,0,0,230
+664,p,201,3,0,0,230
+665,q,201,3,0,0,230
+666,r,201,3,0,0,230
+667,s,201,3,0,0,230
+668,t,201,3,0,0,230
+669,u,201,3,0,0,230
+670,v,201,3,0,0,230
+671,w,201,3,0,0,230
+672,x,201,3,0,0,230
+673,y,201,3,0,0,230
+674,z,201,3,0,0,230
+675,exclamation,201,5,0,0,230
+676,question,201,5,0,0,230
+677,sunny,662,5,0,1,379
+678,rainy,663,5,0,1,380
+679,snowy,664,5,0,1,381
+680,attack,650,7,0,0,419
+681,defense,651,7,0,0,420
+682,speed,652,6,0,0,421
+683,sandy,412,8,0,0,445
+684,trash,412,8,0,0,445
+685,sandy,653,8,0,0,447
+686,trash,654,8,0,0,448
+687,sunshine,421,8,0,1,456
+688,east,422,8,0,0,457
+689,east,423,8,0,0,458
+690,bug,493,8,0,0,508
+691,dark,493,8,0,0,508
+692,dragon,493,8,0,0,508
+693,electric,493,8,0,0,508
+694,fighting,493,8,0,0,508
+695,fire,493,8,0,0,508
+696,flying,493,8,0,0,508
+697,ghost,493,8,0,0,508
+698,grass,493,8,0,0,508
+699,ground,493,8,0,0,508
+700,ice,493,8,0,0,508
+701,poison,493,8,0,0,508
+702,psychic,493,8,0,0,508
+703,rock,493,8,0,0,508
+704,steel,493,8,0,0,508
+705,water,493,8,0,0,508
+706,unknown,493,8,0,0,508
+707,heat,657,9,0,0,488
+708,wash,658,9,0,0,489
+709,frost,659,9,0,0,490
+710,fan,660,9,0,0,491
+711,mow,661,9,0,0,492
+712,origin,656,9,0,0,501
+713,sky,655,9,0,0,507
+714,spiky-eared,172,10,0,0,25
+715,blue-striped,665,11,0,0,566
+716,zen,666,11,0,0,572
+717,summer,585,11,0,0,602
+718,autumn,585,11,0,0,602
+719,winter,585,11,0,0,602
+720,summer,586,11,0,0,603
+721,autumn,586,11,0,0,603
+722,winter,586,11,0,0,603
+723,pirouette,667,11,0,0,666
+724,douse,649,11,0,0,667
+725,shock,649,11,0,0,667
+726,burn,649,11,0,0,667
+727,chill,649,11,0,0,667
diff --git a/pokedex/data/csv/pokemon_species.csv b/pokedex/data/csv/pokemon_species.csv
new file mode 100644
index 0000000..6496019
--- /dev/null
+++ b/pokedex/data/csv/pokemon_species.csv
@@ -0,0 +1,650 @@
+id,identifier,generation_id,evolves_from_species_id,evolution_chain_id,color_id,shape_id,habitat_id,growth_rate_id,gender_rate,capture_rate,base_happiness,is_baby,hatch_counter,has_gender_differences,forms_switchable
+1,bulbasaur,1,,1,5,8,3,4,1,45,70,0,20,0,0
+2,ivysaur,1,1,1,5,8,3,4,1,45,70,0,20,0,0
+3,venusaur,1,2,1,5,8,3,4,1,45,70,0,20,1,0
+4,charmander,1,,2,8,6,4,4,1,45,70,0,20,0,0
+5,charmeleon,1,4,2,8,6,4,4,1,45,70,0,20,0,0
+6,charizard,1,5,2,8,6,4,4,1,45,70,0,20,0,0
+7,squirtle,1,,3,2,6,9,4,1,45,70,0,20,0,0
+8,wartortle,1,7,3,2,6,9,4,1,45,70,0,20,0,0
+9,blastoise,1,8,3,2,6,9,4,1,45,70,0,20,0,0
+10,caterpie,1,,4,5,2,2,2,4,255,70,0,15,0,0
+11,metapod,1,10,4,5,2,2,2,4,120,70,0,15,0,0
+12,butterfree,1,11,4,9,13,2,2,4,45,70,0,15,1,0
+13,weedle,1,,5,3,2,2,2,4,255,70,0,15,0,0
+14,kakuna,1,13,5,10,2,2,2,4,120,70,0,15,0,0
+15,beedrill,1,14,5,10,13,2,2,4,45,70,0,15,0,0
+16,pidgey,1,,6,3,9,2,4,4,255,70,0,15,0,0
+17,pidgeotto,1,16,6,3,9,2,4,4,120,70,0,15,0,0
+18,pidgeot,1,17,6,3,9,2,4,4,45,70,0,15,0,0
+19,rattata,1,,7,7,8,3,2,4,255,70,0,15,1,0
+20,raticate,1,19,7,3,8,3,2,4,127,70,0,15,1,0
+21,spearow,1,,8,3,9,6,2,4,255,70,0,15,0,0
+22,fearow,1,21,8,3,9,6,2,4,90,70,0,15,0,0
+23,ekans,1,,9,7,2,3,2,4,255,70,0,20,0,0
+24,arbok,1,23,9,7,2,3,2,4,90,70,0,20,0,0
+25,pikachu,1,172,10,10,8,2,2,4,190,70,0,10,1,0
+26,raichu,1,25,10,10,6,2,2,4,75,70,0,10,1,0
+27,sandshrew,1,,11,10,6,6,2,4,255,70,0,20,0,0
+28,sandslash,1,27,11,10,6,6,2,4,90,70,0,20,0,0
+29,nidoran-f,1,,12,2,8,3,4,8,235,70,0,20,0,0
+30,nidorina,1,29,12,2,8,3,4,8,120,70,0,20,0,0
+31,nidoqueen,1,30,12,2,6,3,4,8,45,70,0,20,0,0
+32,nidoran-m,1,,13,7,8,3,4,0,235,70,0,20,0,0
+33,nidorino,1,32,13,7,8,3,4,0,120,70,0,20,0,0
+34,nidoking,1,33,13,7,6,3,4,0,45,70,0,20,0,0
+35,clefairy,1,173,14,6,6,4,3,6,150,140,0,10,0,0
+36,clefable,1,35,14,6,6,4,3,6,25,140,0,10,0,0
+37,vulpix,1,,15,3,8,3,2,6,190,70,0,20,0,0
+38,ninetales,1,37,15,10,8,3,2,6,75,70,0,20,0,0
+39,jigglypuff,1,174,16,6,12,3,3,6,170,70,0,10,0,0
+40,wigglytuff,1,39,16,6,12,3,3,6,50,70,0,10,0,0
+41,zubat,1,,17,7,9,1,2,4,255,70,0,15,1,0
+42,golbat,1,41,17,7,9,1,2,4,90,70,0,15,1,0
+43,oddish,1,,18,2,7,3,4,4,255,70,0,20,0,0
+44,gloom,1,43,18,2,12,3,4,4,120,70,0,20,1,0
+45,vileplume,1,44,18,8,12,3,4,4,45,70,0,20,1,0
+46,paras,1,,19,8,14,2,2,4,190,70,0,20,0,0
+47,parasect,1,46,19,8,14,2,2,4,75,70,0,20,0,0
+48,venonat,1,,20,7,12,2,2,4,190,70,0,20,0,0
+49,venomoth,1,48,20,7,13,2,2,4,75,70,0,20,0,0
+50,diglett,1,,21,3,5,1,2,4,255,70,0,20,0,0
+51,dugtrio,1,50,21,3,11,1,2,4,50,70,0,20,0,0
+52,meowth,1,,22,10,8,8,2,4,255,70,0,20,0,0
+53,persian,1,52,22,10,8,8,2,4,90,70,0,20,0,0
+54,psyduck,1,,23,10,6,9,2,4,190,70,0,20,0,0
+55,golduck,1,54,23,2,6,9,2,4,75,70,0,20,0,0
+56,mankey,1,,24,3,6,4,2,4,190,70,0,20,0,0
+57,primeape,1,56,24,3,6,4,2,4,75,70,0,20,0,0
+58,growlithe,1,,25,3,8,3,1,2,190,70,0,20,0,0
+59,arcanine,1,58,25,3,8,3,1,2,75,70,0,20,0,0
+60,poliwag,1,,26,2,7,9,4,4,255,70,0,20,0,0
+61,poliwhirl,1,60,26,2,12,9,4,4,120,70,0,20,0,0
+62,poliwrath,1,61,26,2,12,9,4,4,45,70,0,20,0,0
+63,abra,1,,27,3,6,8,4,2,200,70,0,20,0,0
+64,kadabra,1,63,27,3,6,8,4,2,100,70,0,20,1,0
+65,alakazam,1,64,27,3,12,8,4,2,50,70,0,20,1,0
+66,machop,1,,28,4,6,4,4,2,180,70,0,20,0,0
+67,machoke,1,66,28,4,12,4,4,2,90,70,0,20,0,0
+68,machamp,1,67,28,4,12,4,4,2,45,70,0,20,0,0
+69,bellsprout,1,,29,5,12,2,4,4,255,70,0,20,0,0
+70,weepinbell,1,69,29,5,5,2,4,4,120,70,0,20,0,0
+71,victreebel,1,70,29,5,5,2,4,4,45,70,0,20,0,0
+72,tentacool,1,,30,2,10,7,1,4,190,70,0,20,0,0
+73,tentacruel,1,72,30,2,10,7,1,4,60,70,0,20,0,0
+74,geodude,1,,31,3,4,4,4,4,255,70,0,15,0,0
+75,graveler,1,74,31,3,12,4,4,4,120,70,0,15,0,0
+76,golem,1,75,31,3,12,4,4,4,45,70,0,15,0,0
+77,ponyta,1,,32,10,8,3,2,4,190,70,0,20,0,0
+78,rapidash,1,77,32,10,8,3,2,4,60,70,0,20,0,0
+79,slowpoke,1,,33,6,8,9,2,4,190,70,0,20,0,0
+80,slowbro,1,79,33,6,6,9,2,4,75,70,0,20,0,0
+81,magnemite,1,,34,4,4,6,2,-1,190,70,0,20,0,0
+82,magneton,1,81,34,4,11,6,2,-1,60,70,0,20,0,0
+83,farfetchd,1,,35,3,9,3,2,4,45,70,0,20,0,0
+84,doduo,1,,36,3,7,3,2,4,190,70,0,20,1,0
+85,dodrio,1,84,36,3,7,3,2,4,45,70,0,20,1,0
+86,seel,1,,37,9,3,7,2,4,190,70,0,20,0,0
+87,dewgong,1,86,37,9,3,7,2,4,75,70,0,20,0,0
+88,grimer,1,,38,7,4,8,2,4,190,70,0,20,0,0
+89,muk,1,88,38,7,4,8,2,4,75,70,0,20,0,0
+90,shellder,1,,39,7,1,7,1,4,190,70,0,20,0,0
+91,cloyster,1,90,39,7,1,7,1,4,60,70,0,20,0,0
+92,gastly,1,,40,7,1,1,4,4,190,70,0,20,0,0
+93,haunter,1,92,40,7,4,1,4,4,90,70,0,20,0,0
+94,gengar,1,93,40,7,6,1,4,4,45,70,0,20,0,0
+95,onix,1,,41,4,2,1,2,4,45,70,0,25,0,0
+96,drowzee,1,,42,10,12,3,2,4,190,70,0,20,0,0
+97,hypno,1,96,42,10,12,3,2,4,75,70,0,20,1,0
+98,krabby,1,,43,8,14,9,2,4,225,70,0,20,0,0
+99,kingler,1,98,43,8,14,9,2,4,60,70,0,20,0,0
+100,voltorb,1,,44,8,1,8,2,-1,190,70,0,20,0,0
+101,electrode,1,100,44,8,1,8,2,-1,60,70,0,20,0,0
+102,exeggcute,1,,45,6,11,2,1,4,90,70,0,20,0,0
+103,exeggutor,1,102,45,10,7,2,1,4,45,70,0,20,0,0
+104,cubone,1,,46,3,6,4,2,4,190,70,0,20,0,0
+105,marowak,1,104,46,3,6,4,2,4,75,70,0,20,0,0
+106,hitmonlee,1,236,47,3,12,8,2,0,45,70,0,25,0,0
+107,hitmonchan,1,236,47,3,12,8,2,0,45,70,0,25,0,0
+108,lickitung,1,,48,6,6,3,2,4,45,70,0,20,0,0
+109,koffing,1,,49,7,1,8,2,4,190,70,0,20,0,0
+110,weezing,1,109,49,7,11,8,2,4,60,70,0,20,0,0
+111,rhyhorn,1,,50,4,8,6,1,4,120,70,0,20,1,0
+112,rhydon,1,111,50,4,6,6,1,4,60,70,0,20,1,0
+113,chansey,1,440,51,6,6,8,3,8,30,140,0,40,0,0
+114,tangela,1,,52,2,7,3,2,4,45,70,0,20,0,0
+115,kangaskhan,1,,53,3,6,3,2,8,45,70,0,20,0,0
+116,horsea,1,,54,2,5,7,2,4,225,70,0,20,0,0
+117,seadra,1,116,54,2,5,7,2,4,75,70,0,20,0,0
+118,goldeen,1,,55,8,3,9,2,4,225,70,0,20,1,0
+119,seaking,1,118,55,8,3,9,2,4,60,70,0,20,1,0
+120,staryu,1,,56,3,5,7,1,-1,225,70,0,20,0,0
+121,starmie,1,120,56,7,5,7,1,-1,60,70,0,20,0,0
+122,mr-mime,1,439,57,6,12,8,2,4,45,70,0,25,0,0
+123,scyther,1,,58,5,13,3,2,4,45,70,0,25,1,0
+124,jynx,1,238,59,8,12,8,2,8,45,70,0,25,0,0
+125,electabuzz,1,239,60,10,6,3,2,2,45,70,0,25,0,0
+126,magmar,1,240,61,8,6,4,2,2,45,70,0,25,0,0
+127,pinsir,1,,62,3,12,2,1,4,45,70,0,25,0,0
+128,tauros,1,,63,3,8,3,1,0,45,70,0,20,0,0
+129,magikarp,1,,64,8,3,9,1,4,255,70,0,5,1,0
+130,gyarados,1,129,64,2,2,9,1,4,45,70,0,5,1,0
+131,lapras,1,,65,2,3,7,1,4,45,70,0,40,0,0
+132,ditto,1,,66,7,1,8,2,-1,35,70,0,20,0,0
+133,eevee,1,,67,3,8,8,2,1,45,70,0,35,0,0
+134,vaporeon,1,133,67,2,8,8,2,1,45,70,0,35,0,0
+135,jolteon,1,133,67,10,8,8,2,1,45,70,0,35,0,0
+136,flareon,1,133,67,8,8,8,2,1,45,70,0,35,0,0
+137,porygon,1,,68,6,7,8,2,-1,45,70,0,20,0,0
+138,omanyte,1,,69,2,10,7,2,1,45,70,0,30,0,0
+139,omastar,1,138,69,2,10,7,2,1,45,70,0,30,0,0
+140,kabuto,1,,70,3,14,7,2,1,45,70,0,30,0,0
+141,kabutops,1,140,70,3,6,7,2,1,45,70,0,30,0,0
+142,aerodactyl,1,,71,7,9,4,1,1,45,70,0,35,0,0
+143,snorlax,1,446,72,1,12,4,1,1,25,70,0,40,0,0
+144,articuno,1,,73,2,9,5,1,-1,3,35,0,80,0,0
+145,zapdos,1,,74,10,9,5,1,-1,3,35,0,80,0,0
+146,moltres,1,,75,10,9,5,1,-1,3,35,0,80,0,0
+147,dratini,1,,76,2,2,9,1,4,45,35,0,40,0,0
+148,dragonair,1,147,76,2,2,9,1,4,45,35,0,40,0,0
+149,dragonite,1,148,76,3,6,9,1,4,45,35,0,40,0,0
+150,mewtwo,1,,77,7,6,5,1,-1,3,0,0,120,0,0
+151,mew,1,,78,6,6,5,4,-1,45,100,0,120,0,0
+152,chikorita,2,,79,5,8,3,4,1,45,70,0,20,0,0
+153,bayleef,2,152,79,5,8,3,4,1,45,70,0,20,0,0
+154,meganium,2,153,79,5,8,3,4,1,45,70,0,20,1,0
+155,cyndaquil,2,,80,10,12,3,4,1,45,70,0,20,0,0
+156,quilava,2,155,80,10,8,3,4,1,45,70,0,20,0,0
+157,typhlosion,2,156,80,10,8,3,4,1,45,70,0,20,0,0
+158,totodile,2,,81,2,6,9,4,1,45,70,0,20,0,0
+159,croconaw,2,158,81,2,6,9,4,1,45,70,0,20,0,0
+160,feraligatr,2,159,81,2,6,9,4,1,45,70,0,20,0,0
+161,sentret,2,,82,3,8,3,2,4,255,70,0,15,0,0
+162,furret,2,161,82,3,8,3,2,4,90,70,0,15,0,0
+163,hoothoot,2,,83,3,9,2,2,4,255,70,0,15,0,0
+164,noctowl,2,163,83,3,9,2,2,4,90,70,0,15,0,0
+165,ledyba,2,,84,8,9,2,3,4,255,70,0,15,1,0
+166,ledian,2,165,84,8,9,2,3,4,90,70,0,15,1,0
+167,spinarak,2,,85,5,14,2,3,4,255,70,0,15,0,0
+168,ariados,2,167,85,8,14,2,3,4,90,70,0,15,0,0
+169,crobat,2,42,17,7,13,1,2,4,90,70,0,15,0,0
+170,chinchou,2,,86,2,3,7,1,4,190,70,0,20,0,0
+171,lanturn,2,170,86,2,3,7,1,4,75,70,0,20,0,0
+172,pichu,2,,10,10,8,2,2,4,190,70,1,10,0,False
+173,cleffa,2,,14,6,6,4,3,6,150,140,1,10,0,0
+174,igglybuff,2,,16,6,12,3,3,6,170,70,1,10,0,0
+175,togepi,2,,87,9,12,2,3,1,190,70,1,10,0,0
+176,togetic,2,175,87,9,12,2,3,1,75,70,0,10,0,0
+177,natu,2,,88,5,9,2,2,4,190,70,0,20,0,0
+178,xatu,2,177,88,5,9,2,2,4,75,70,0,20,1,0
+179,mareep,2,,89,9,8,3,4,4,235,70,0,20,0,0
+180,flaaffy,2,179,89,6,6,3,4,4,120,70,0,20,0,0
+181,ampharos,2,180,89,10,6,3,4,4,45,70,0,20,0,0
+182,bellossom,2,44,18,5,12,3,4,4,45,70,0,20,0,0
+183,marill,2,298,90,2,6,9,3,4,190,70,0,10,0,0
+184,azumarill,2,183,90,2,6,9,3,4,75,70,0,10,0,0
+185,sudowoodo,2,438,91,3,12,2,2,4,65,70,0,20,1,0
+186,politoed,2,61,26,5,12,9,4,4,45,70,0,20,1,0
+187,hoppip,2,,92,6,6,3,4,4,255,70,0,20,0,0
+188,skiploom,2,187,92,5,6,3,4,4,120,70,0,20,0,0
+189,jumpluff,2,188,92,2,6,3,4,4,45,70,0,20,0,0
+190,aipom,2,,93,7,6,2,3,4,45,70,0,20,1,0
+191,sunkern,2,,94,10,1,3,4,4,235,70,0,20,0,0
+192,sunflora,2,191,94,10,12,3,4,4,120,70,0,20,0,0
+193,yanma,2,,95,8,13,2,2,4,75,70,0,20,0,0
+194,wooper,2,,96,2,7,9,2,4,255,70,0,20,1,0
+195,quagsire,2,194,96,2,6,9,2,4,90,70,0,20,1,0
+196,espeon,2,133,67,7,8,8,2,1,45,70,0,35,0,0
+197,umbreon,2,133,67,1,8,8,2,1,45,35,0,35,0,0
+198,murkrow,2,,97,1,9,2,4,4,30,35,0,20,1,0
+199,slowking,2,79,33,6,6,9,2,4,70,70,0,20,0,0
+200,misdreavus,2,,98,4,1,1,3,4,45,35,0,25,0,0
+201,unown,2,,99,1,1,5,2,-1,225,70,0,40,0,False
+202,wobbuffet,2,360,100,2,5,1,2,4,45,70,0,20,1,0
+203,girafarig,2,,101,10,8,3,2,4,60,70,0,20,1,0
+204,pineco,2,,102,4,1,2,2,4,190,70,0,20,0,0
+205,forretress,2,204,102,7,1,2,2,4,75,70,0,20,0,0
+206,dunsparce,2,,103,10,2,1,2,4,190,70,0,20,0,0
+207,gligar,2,,104,7,9,4,4,4,60,70,0,20,1,0
+208,steelix,2,95,41,4,2,1,2,4,25,70,0,25,1,0
+209,snubbull,2,,105,6,12,8,3,6,190,70,0,20,0,0
+210,granbull,2,209,105,7,6,8,3,6,75,70,0,20,0,0
+211,qwilfish,2,,106,4,3,7,2,4,45,70,0,20,0,0
+212,scizor,2,123,58,8,13,3,2,4,25,70,0,25,1,0
+213,shuckle,2,,107,10,14,4,4,4,190,70,0,20,0,0
+214,heracross,2,,108,2,12,2,1,4,45,70,0,25,1,0
+215,sneasel,2,,109,1,6,2,4,4,60,35,0,20,1,0
+216,teddiursa,2,,110,3,6,4,2,4,120,70,0,20,0,0
+217,ursaring,2,216,110,3,6,4,2,4,60,70,0,20,1,0
+218,slugma,2,,111,8,2,4,2,4,190,70,0,20,0,0
+219,magcargo,2,218,111,8,2,4,2,4,75,70,0,20,0,0
+220,swinub,2,,112,3,8,1,1,4,225,70,0,20,0,0
+221,piloswine,2,220,112,3,8,1,1,4,75,70,0,20,1,0
+222,corsola,2,,113,6,14,7,3,6,60,70,0,20,0,0
+223,remoraid,2,,114,4,3,7,2,4,190,70,0,20,0,0
+224,octillery,2,223,114,8,10,7,2,4,75,70,0,20,1,0
+225,delibird,2,,115,8,9,4,3,4,45,70,0,20,0,0
+226,mantine,2,458,116,7,9,7,1,4,25,70,0,25,0,0
+227,skarmory,2,,117,4,9,6,1,4,25,70,0,25,0,0
+228,houndour,2,,118,1,8,6,1,4,120,35,0,20,0,0
+229,houndoom,2,228,118,1,8,6,1,4,45,35,0,20,1,0
+230,kingdra,2,117,54,2,5,7,2,4,45,70,0,20,0,0
+231,phanpy,2,,119,2,8,6,2,4,120,70,0,20,0,0
+232,donphan,2,231,119,4,8,6,2,4,60,70,0,20,1,0
+233,porygon2,2,137,68,8,7,8,2,-1,45,70,0,20,0,0
+234,stantler,2,,120,3,8,2,1,4,45,70,0,20,0,0
+235,smeargle,2,,121,9,6,8,3,4,45,70,0,20,0,0
+236,tyrogue,2,,47,7,12,8,2,0,75,70,1,25,0,0
+237,hitmontop,2,236,47,3,6,8,2,0,45,70,0,25,0,0
+238,smoochum,2,,59,6,12,8,2,8,45,70,1,25,0,0
+239,elekid,2,,60,10,12,3,2,2,45,70,1,25,0,0
+240,magby,2,,61,8,6,4,2,2,45,70,1,25,0,0
+241,miltank,2,,122,6,6,3,1,8,45,70,0,20,0,0
+242,blissey,2,113,51,6,12,8,3,8,30,140,0,40,0,0
+243,raikou,2,,123,10,8,3,1,-1,3,35,0,80,0,0
+244,entei,2,,124,3,8,3,1,-1,3,35,0,80,0,0
+245,suicune,2,,125,2,8,3,1,-1,3,35,0,80,0,0
+246,larvitar,2,,126,5,6,4,1,4,45,35,0,40,0,0
+247,pupitar,2,246,126,4,2,4,1,4,45,35,0,40,0,0
+248,tyranitar,2,247,126,5,6,4,1,4,45,35,0,40,0,0
+249,lugia,2,,127,9,9,5,1,-1,3,0,0,120,0,0
+250,ho-oh,2,,128,8,9,5,1,-1,3,0,0,120,0,0
+251,celebi,2,,129,5,12,2,4,-1,45,100,0,120,0,0
+252,treecko,3,,130,5,6,2,4,1,45,70,0,20,0,0
+253,grovyle,3,252,130,5,6,2,4,1,45,70,0,20,0,0
+254,sceptile,3,253,130,5,6,2,4,1,45,70,0,20,0,0
+255,torchic,3,,131,8,7,3,4,1,45,70,0,20,1,0
+256,combusken,3,255,131,8,6,3,4,1,45,70,0,20,1,0
+257,blaziken,3,256,131,8,6,3,4,1,45,70,0,20,1,0
+258,mudkip,3,,132,2,8,9,4,1,45,70,0,20,0,0
+259,marshtomp,3,258,132,2,6,9,4,1,45,70,0,20,0,0
+260,swampert,3,259,132,2,6,9,4,1,45,70,0,20,0,0
+261,poochyena,3,,133,4,8,3,2,4,255,70,0,15,0,0
+262,mightyena,3,261,133,4,8,3,2,4,127,70,0,15,0,0
+263,zigzagoon,3,,134,3,8,3,2,4,255,70,0,15,0,0
+264,linoone,3,263,134,9,8,3,2,4,90,70,0,15,0,0
+265,wurmple,3,,135,8,2,2,2,4,255,70,0,15,0,0
+266,silcoon,3,265,135,9,1,2,2,4,120,70,0,15,0,0
+267,beautifly,3,266,135,10,13,2,2,4,45,70,0,15,1,0
+268,cascoon,3,265,135,7,1,2,2,4,120,70,0,15,0,0
+269,dustox,3,268,135,5,13,2,2,4,45,70,0,15,1,0
+270,lotad,3,,136,5,14,9,4,4,255,70,0,15,0,0
+271,lombre,3,270,136,5,12,9,4,4,120,70,0,15,0,0
+272,ludicolo,3,271,136,5,12,9,4,4,45,70,0,15,1,0
+273,seedot,3,,137,3,7,2,4,4,255,70,0,15,0,0
+274,nuzleaf,3,273,137,3,12,2,4,4,120,70,0,15,1,0
+275,shiftry,3,274,137,3,12,2,4,4,45,70,0,15,1,0
+276,taillow,3,,138,2,9,3,4,4,200,70,0,15,0,0
+277,swellow,3,276,138,2,9,3,4,4,45,70,0,15,0,0
+278,wingull,3,,139,9,9,7,2,4,190,70,0,20,0,0
+279,pelipper,3,278,139,10,9,7,2,4,45,70,0,20,0,0
+280,ralts,3,,140,9,12,8,1,4,235,35,0,20,0,0
+281,kirlia,3,280,140,9,12,8,1,4,120,35,0,20,0,0
+282,gardevoir,3,281,140,9,12,8,1,4,45,35,0,20,0,0
+283,surskit,3,,141,2,14,9,2,4,200,70,0,15,0,0
+284,masquerain,3,283,141,2,13,9,2,4,75,70,0,15,0,0
+285,shroomish,3,,142,3,7,2,6,4,255,70,0,15,0,0
+286,breloom,3,285,142,5,6,2,6,4,90,70,0,15,0,0
+287,slakoth,3,,143,3,8,2,1,4,255,70,0,15,0,0
+288,vigoroth,3,287,143,9,6,2,1,4,120,70,0,15,0,0
+289,slaking,3,288,143,3,12,2,1,4,45,70,0,15,0,0
+290,nincada,3,,144,4,14,2,5,4,255,70,0,15,0,0
+291,ninjask,3,290,144,10,13,2,5,4,120,70,0,15,0,0
+292,shedinja,3,290,144,3,5,2,5,-1,45,70,0,15,0,0
+293,whismur,3,,145,6,6,1,4,4,190,70,0,20,0,0
+294,loudred,3,293,145,2,6,1,4,4,120,70,0,20,0,0
+295,exploud,3,294,145,2,6,1,4,4,45,70,0,20,0,0
+296,makuhita,3,,146,10,12,4,6,2,180,70,0,20,0,0
+297,hariyama,3,296,146,3,12,4,6,2,200,70,0,20,0,0
+298,azurill,3,,90,2,7,9,3,6,150,70,1,10,0,0
+299,nosepass,3,,147,4,12,1,2,4,255,70,0,20,0,0
+300,skitty,3,,148,6,8,2,3,6,255,70,0,15,0,0
+301,delcatty,3,300,148,7,8,2,3,6,60,70,0,15,0,0
+302,sableye,3,,149,7,12,1,4,4,45,35,0,25,0,0
+303,mawile,3,,150,1,12,1,3,4,45,70,0,20,0,0
+304,aron,3,,151,4,8,4,1,4,180,35,0,35,0,0
+305,lairon,3,304,151,4,8,4,1,4,90,35,0,35,0,0
+306,aggron,3,305,151,4,6,4,1,4,45,35,0,35,0,0
+307,meditite,3,,152,2,12,4,2,4,180,70,0,20,1,0
+308,medicham,3,307,152,8,12,4,2,4,90,70,0,20,1,0
+309,electrike,3,,153,5,8,3,1,4,120,70,0,20,0,0
+310,manectric,3,309,153,10,8,3,1,4,45,70,0,20,0,0
+311,plusle,3,,154,10,6,3,2,4,200,70,0,20,0,0
+312,minun,3,,155,10,6,3,2,4,200,70,0,20,0,0
+313,volbeat,3,,156,4,6,2,5,0,150,70,0,15,0,0
+314,illumise,3,,157,7,12,2,6,8,150,70,0,15,0,0
+315,roselia,3,406,158,5,12,3,4,4,150,70,0,20,1,0
+316,gulpin,3,,159,5,4,3,6,4,225,70,0,20,1,0
+317,swalot,3,316,159,7,4,3,6,4,75,70,0,20,1,0
+318,carvanha,3,,160,8,3,7,1,4,225,35,0,20,0,0
+319,sharpedo,3,318,160,2,3,7,1,4,60,35,0,20,0,0
+320,wailmer,3,,161,2,3,7,6,4,125,70,0,40,0,0
+321,wailord,3,320,161,2,3,7,6,4,60,70,0,40,0,0
+322,numel,3,,162,10,8,4,2,4,255,70,0,20,1,0
+323,camerupt,3,322,162,8,8,4,2,4,150,70,0,20,1,0
+324,torkoal,3,,163,3,8,4,2,4,90,70,0,20,0,0
+325,spoink,3,,164,1,4,4,3,4,255,70,0,20,0,0
+326,grumpig,3,325,164,7,6,4,3,4,60,70,0,20,0,0
+327,spinda,3,,165,3,6,4,3,4,255,70,0,15,0,0
+328,trapinch,3,,166,3,14,6,4,4,255,70,0,20,0,0
+329,vibrava,3,328,166,5,13,6,4,4,120,70,0,20,0,0
+330,flygon,3,329,166,5,9,6,4,4,45,70,0,20,0,0
+331,cacnea,3,,167,5,12,6,4,4,190,35,0,20,0,0
+332,cacturne,3,331,167,5,12,6,4,4,60,35,0,20,1,0
+333,swablu,3,,168,2,9,2,5,4,255,70,0,20,0,0
+334,altaria,3,333,168,2,9,2,5,4,45,70,0,20,0,0
+335,zangoose,3,,169,9,6,3,5,4,90,70,0,20,0,0
+336,seviper,3,,170,1,2,3,6,4,90,70,0,20,0,0
+337,lunatone,3,,171,10,1,1,3,-1,45,70,0,25,0,0
+338,solrock,3,,172,8,1,1,3,-1,45,70,0,25,0,0
+339,barboach,3,,173,4,3,9,2,4,190,70,0,20,0,0
+340,whiscash,3,339,173,2,3,9,2,4,75,70,0,20,0,0
+341,corphish,3,,174,8,14,9,6,4,205,70,0,15,0,0
+342,crawdaunt,3,341,174,8,14,9,6,4,155,70,0,15,0,0
+343,baltoy,3,,175,3,4,6,2,-1,255,70,0,20,0,0
+344,claydol,3,343,175,1,4,6,2,-1,90,70,0,20,0,0
+345,lileep,3,,176,7,5,7,5,1,45,70,0,30,0,0
+346,cradily,3,345,176,5,5,7,5,1,45,70,0,30,0,0
+347,anorith,3,,177,4,14,9,5,1,45,70,0,30,0,0
+348,armaldo,3,347,177,4,6,9,5,1,45,70,0,30,0,0
+349,feebas,3,,178,3,3,9,5,4,255,70,0,20,0,0
+350,milotic,3,349,178,6,2,9,5,4,60,70,0,20,1,0
+351,castform,3,,179,9,1,3,2,4,45,70,0,25,0,True
+352,kecleon,3,,180,5,6,2,4,4,200,70,0,20,0,0
+353,shuppet,3,,181,1,1,8,3,4,225,35,0,25,0,0
+354,banette,3,353,181,1,6,8,3,4,45,35,0,25,0,0
+355,duskull,3,,182,1,4,2,3,4,190,35,0,25,0,0
+356,dusclops,3,355,182,1,12,2,3,4,90,35,0,25,0,0
+357,tropius,3,,183,5,8,2,1,4,200,70,0,25,0,0
+358,chimecho,3,433,184,2,4,3,3,4,45,70,0,25,0,0
+359,absol,3,,185,9,8,4,4,4,30,35,0,25,0,0
+360,wynaut,3,,100,2,6,1,2,4,125,70,1,20,0,0
+361,snorunt,3,,186,4,12,1,2,4,190,70,0,20,0,0
+362,glalie,3,361,186,4,1,1,2,4,75,70,0,20,0,0
+363,spheal,3,,187,2,3,7,4,4,255,70,0,20,0,0
+364,sealeo,3,363,187,2,3,7,4,4,120,70,0,20,0,0
+365,walrein,3,364,187,2,8,7,4,4,45,70,0,20,0,0
+366,clamperl,3,,188,2,1,7,5,4,255,70,0,20,0,0
+367,huntail,3,366,188,2,2,7,5,4,60,70,0,20,0,0
+368,gorebyss,3,366,188,6,2,7,5,4,60,70,0,20,0,0
+369,relicanth,3,,189,4,3,7,1,1,25,70,0,40,1,0
+370,luvdisc,3,,190,6,3,7,3,6,225,70,0,20,0,0
+371,bagon,3,,191,2,12,6,1,4,45,35,0,40,0,0
+372,shelgon,3,371,191,9,8,6,1,4,45,35,0,40,0,0
+373,salamence,3,372,191,2,8,6,1,4,45,35,0,40,0,0
+374,beldum,3,,192,2,5,6,1,-1,3,35,0,40,0,0
+375,metang,3,374,192,2,4,6,1,-1,3,35,0,40,0,0
+376,metagross,3,375,192,2,11,6,1,-1,3,35,0,40,0,0
+377,regirock,3,,193,3,12,1,1,-1,3,35,0,80,0,0
+378,regice,3,,194,2,12,1,1,-1,3,35,0,80,0,0
+379,registeel,3,,195,4,12,1,1,-1,3,35,0,80,0,0
+380,latias,3,,196,8,9,9,1,8,3,90,0,120,0,0
+381,latios,3,,197,2,9,9,1,0,3,90,0,120,0,0
+382,kyogre,3,,198,2,3,7,1,-1,5,0,0,120,0,0
+383,groudon,3,,199,8,6,6,1,-1,5,0,0,120,0,0
+384,rayquaza,3,,200,5,2,5,1,-1,3,0,0,120,0,0
+385,jirachi,3,,201,10,12,4,1,-1,3,100,0,120,0,0
+386,deoxys,3,,202,8,12,5,1,-1,3,0,0,120,0,True
+387,turtwig,4,,203,5,8,,4,1,45,70,0,20,0,0
+388,grotle,4,387,203,5,8,,4,1,45,70,0,20,0,0
+389,torterra,4,388,203,5,8,,4,1,45,70,0,20,0,0
+390,chimchar,4,,204,3,6,,4,1,45,70,0,20,0,0
+391,monferno,4,390,204,3,6,,4,1,45,70,0,20,0,0
+392,infernape,4,391,204,3,6,,4,1,45,70,0,20,0,0
+393,piplup,4,,205,2,12,,4,1,45,70,0,20,0,0
+394,prinplup,4,393,205,2,6,,4,1,45,70,0,20,0,0
+395,empoleon,4,394,205,2,6,,4,1,45,70,0,20,0,0
+396,starly,4,,206,3,9,,4,4,255,70,0,15,1,0
+397,staravia,4,396,206,3,9,,4,4,120,70,0,15,1,0
+398,staraptor,4,397,206,3,9,,4,4,45,70,0,15,1,0
+399,bidoof,4,,207,3,8,,2,4,255,70,0,15,1,0
+400,bibarel,4,399,207,3,6,,2,4,127,70,0,15,1,0
+401,kricketot,4,,208,8,12,,4,4,255,70,0,15,1,0
+402,kricketune,4,401,208,8,13,,4,4,45,70,0,15,1,0
+403,shinx,4,,209,2,8,,4,4,235,70,0,20,1,0
+404,luxio,4,403,209,2,8,,4,4,120,100,0,20,1,0
+405,luxray,4,404,209,2,8,,4,4,45,70,0,20,1,0
+406,budew,4,,158,5,12,,4,4,255,70,1,20,0,0
+407,roserade,4,315,158,5,12,,4,4,75,70,0,20,1,0
+408,cranidos,4,,211,2,6,,5,1,45,70,0,30,0,0
+409,rampardos,4,408,211,2,6,,5,1,45,70,0,30,0,0
+410,shieldon,4,,212,4,8,,5,1,45,70,0,30,0,0
+411,bastiodon,4,410,212,4,8,,5,1,45,70,0,30,0,0
+412,burmy,4,,213,4,2,,2,4,120,70,0,15,0,True
+413,wormadam,4,412,213,4,2,,2,8,45,70,0,15,0,False
+414,mothim,4,412,213,10,13,,2,0,45,70,0,15,0,0
+415,combee,4,,214,10,11,,4,1,120,70,0,15,1,0
+416,vespiquen,4,415,214,10,9,,4,8,45,70,0,15,0,0
+417,pachirisu,4,,215,9,8,,2,4,200,100,0,10,1,0
+418,buizel,4,,216,3,8,,2,4,190,70,0,20,1,0
+419,floatzel,4,418,216,3,8,,2,4,75,70,0,20,1,0
+420,cherubi,4,,217,6,11,,2,4,190,70,0,20,0,0
+421,cherrim,4,420,217,6,7,,2,4,75,70,0,20,0,True
+422,shellos,4,,218,7,14,,2,4,190,70,0,20,0,False
+423,gastrodon,4,422,218,7,14,,2,4,75,70,0,20,0,False
+424,ambipom,4,190,93,7,6,,3,4,45,100,0,20,1,0
+425,drifloon,4,,219,7,4,,6,4,125,70,0,30,0,0
+426,drifblim,4,425,219,7,4,,6,4,60,70,0,30,0,0
+427,buneary,4,,220,3,6,,2,4,190,0,0,20,0,0
+428,lopunny,4,427,220,3,6,,2,4,60,140,0,20,0,0
+429,mismagius,4,200,98,7,1,,3,4,45,35,0,25,0,0
+430,honchkrow,4,198,97,1,9,,4,4,30,35,0,20,0,0
+431,glameow,4,,221,4,8,,3,6,190,70,0,20,0,0
+432,purugly,4,431,221,4,8,,3,6,75,70,0,20,0,0
+433,chingling,4,,184,10,12,,3,4,120,70,1,25,0,0
+434,stunky,4,,223,7,8,,2,4,225,70,0,20,0,0
+435,skuntank,4,434,223,7,8,,2,4,60,70,0,20,0,0
+436,bronzor,4,,224,5,1,,2,-1,255,70,0,20,0,0
+437,bronzong,4,436,224,5,4,,2,-1,90,70,0,20,0,0
+438,bonsly,4,,91,3,7,,2,4,255,70,1,20,0,0
+439,mime-jr,4,,57,6,12,,2,4,145,70,1,25,0,0
+440,happiny,4,,51,6,12,,3,8,130,140,1,40,0,0
+441,chatot,4,,228,1,9,,4,4,30,35,0,20,0,0
+442,spiritomb,4,,229,7,5,,2,4,100,70,0,30,0,0
+443,gible,4,,230,2,6,,1,4,45,70,0,40,1,0
+444,gabite,4,443,230,2,6,,1,4,45,70,0,40,1,0
+445,garchomp,4,444,230,2,6,,1,4,45,70,0,40,1,0
+446,munchlax,4,,72,1,12,,1,1,50,70,1,40,0,0
+447,riolu,4,,232,2,6,,4,1,75,70,1,25,0,0
+448,lucario,4,447,232,2,6,,4,1,45,70,0,25,0,0
+449,hippopotas,4,,233,3,8,,1,4,140,70,0,30,1,0
+450,hippowdon,4,449,233,3,8,,1,4,60,70,0,30,1,0
+451,skorupi,4,,234,7,14,,1,4,120,70,0,20,0,0
+452,drapion,4,451,234,7,14,,1,4,45,70,0,20,0,0
+453,croagunk,4,,235,2,12,,2,4,140,100,0,10,1,0
+454,toxicroak,4,453,235,2,12,,2,4,75,70,0,20,1,0
+455,carnivine,4,,236,5,10,,1,4,200,70,0,25,0,0
+456,finneon,4,,237,2,3,,5,4,190,70,0,20,1,0
+457,lumineon,4,456,237,2,3,,5,4,75,70,0,20,1,0
+458,mantyke,4,,116,2,9,,1,4,25,70,1,25,0,0
+459,snover,4,,239,9,6,,1,4,120,70,0,20,1,0
+460,abomasnow,4,459,239,9,6,,1,4,60,70,0,20,1,0
+461,weavile,4,215,109,1,6,,4,4,45,35,0,20,1,0
+462,magnezone,4,82,34,4,4,,2,-1,30,70,0,20,0,0
+463,lickilicky,4,108,48,6,12,,2,4,30,70,0,20,0,0
+464,rhyperior,4,112,50,4,6,,1,4,30,70,0,20,1,0
+465,tangrowth,4,114,52,2,12,,2,4,30,70,0,20,1,0
+466,electivire,4,125,60,10,6,,2,2,30,70,0,25,0,0
+467,magmortar,4,126,61,8,6,,2,2,30,70,0,25,0,0
+468,togekiss,4,176,87,9,9,,3,1,30,70,0,10,0,0
+469,yanmega,4,193,95,5,13,,2,4,30,70,0,20,0,0
+470,leafeon,4,133,67,5,8,,2,1,45,35,0,35,0,0
+471,glaceon,4,133,67,2,8,,2,1,45,35,0,35,0,0
+472,gliscor,4,207,104,7,9,,4,4,30,70,0,20,0,0
+473,mamoswine,4,221,112,3,8,,1,4,50,70,0,20,1,0
+474,porygon-z,4,233,68,8,4,,2,-1,30,70,0,20,0,0
+475,gallade,4,281,140,9,12,,1,0,45,35,0,20,0,0
+476,probopass,4,299,147,4,11,,2,4,60,70,0,20,0,0
+477,dusknoir,4,356,182,1,4,,3,4,45,35,0,25,0,0
+478,froslass,4,361,186,9,4,,2,8,75,70,0,20,0,0
+479,rotom,4,,240,8,1,,2,-1,45,70,0,20,0,True
+480,uxie,4,,241,10,6,,1,-1,3,140,0,80,0,0
+481,mesprit,4,,242,6,6,,1,-1,3,140,0,80,0,0
+482,azelf,4,,243,2,6,,1,-1,3,140,0,80,0,0
+483,dialga,4,,244,9,8,,1,-1,30,0,0,120,0,0
+484,palkia,4,,245,7,6,,1,-1,30,0,0,120,0,0
+485,heatran,4,,246,3,8,,1,4,3,100,0,10,0,0
+486,regigigas,4,,247,9,12,,1,-1,3,0,0,120,0,0
+487,giratina,4,,248,1,10,,1,-1,3,0,0,120,0,True
+488,cresselia,4,,249,10,14,,1,8,3,100,0,120,0,0
+489,phione,4,,250,2,4,,1,-1,30,70,0,40,0,0
+490,manaphy,4,,250,2,12,,1,-1,3,70,0,10,0,0
+491,darkrai,4,,252,1,12,,1,-1,3,0,0,120,0,0
+492,shaymin,4,,253,5,8,,4,-1,45,100,0,120,0,True
+493,arceus,4,,254,4,8,,1,-1,3,0,0,120,0,True
+494,victini,5,,255,10,12,,1,-1,3,100,0,120,0,0
+495,snivy,5,,256,5,6,,4,1,45,70,0,20,0,0
+496,servine,5,495,256,5,6,,4,1,45,70,0,20,0,0
+497,serperior,5,496,256,5,2,,4,1,45,70,0,20,0,0
+498,tepig,5,,257,8,8,,4,1,45,70,0,20,0,0
+499,pignite,5,498,257,8,6,,4,1,45,70,0,20,0,0
+500,emboar,5,499,257,8,6,,4,1,45,70,0,20,0,0
+501,oshawott,5,,258,2,6,,4,1,45,70,0,20,0,0
+502,dewott,5,501,258,2,6,,4,1,45,70,0,20,0,0
+503,samurott,5,502,258,2,8,,4,1,45,70,0,20,0,0
+504,patrat,5,,259,3,8,,2,4,255,70,0,15,0,0
+505,watchog,5,504,259,3,6,,2,4,255,70,0,20,0,0
+506,lillipup,5,,260,3,8,,4,4,255,70,0,15,0,0
+507,herdier,5,506,260,4,8,,4,4,120,70,0,15,0,0
+508,stoutland,5,507,260,4,8,,4,4,45,70,0,15,0,0
+509,purrloin,5,,261,7,8,,2,4,255,70,0,20,0,0
+510,liepard,5,509,261,7,8,,2,4,90,70,0,20,0,0
+511,pansage,5,,262,5,6,,2,1,190,70,0,20,0,0
+512,simisage,5,511,262,5,6,,2,1,75,70,0,20,0,0
+513,pansear,5,,263,8,6,,2,1,190,70,0,20,0,0
+514,simisear,5,513,263,8,6,,2,1,75,70,0,20,0,0
+515,panpour,5,,264,2,6,,2,1,190,70,0,20,0,0
+516,simipour,5,515,264,2,6,,2,1,75,70,0,20,0,0
+517,munna,5,,265,6,8,,3,4,190,70,0,10,0,0
+518,musharna,5,517,265,6,12,,3,4,75,70,0,10,0,0
+519,pidove,5,,266,4,9,,4,4,255,70,0,15,0,0
+520,tranquill,5,519,266,4,9,,4,4,120,70,0,15,0,0
+521,unfezant,5,520,266,4,9,,4,4,45,70,0,15,1,0
+522,blitzle,5,,267,1,8,,2,4,190,70,0,20,0,0
+523,zebstrika,5,522,267,1,8,,2,4,75,70,0,20,0,0
+524,roggenrola,5,,268,2,7,,4,4,255,70,0,15,0,0
+525,boldore,5,524,268,2,10,,4,4,120,70,0,15,0,0
+526,gigalith,5,525,268,2,10,,4,4,45,70,0,15,0,0
+527,woobat,5,,269,2,9,,2,4,190,70,0,15,0,0
+528,swoobat,5,527,269,2,9,,2,4,45,70,0,15,0,0
+529,drilbur,5,,270,4,6,,2,4,120,70,0,20,0,0
+530,excadrill,5,529,270,4,12,,2,4,60,70,0,20,0,0
+531,audino,5,,271,6,6,,3,4,255,70,0,20,0,0
+532,timburr,5,,272,4,12,,4,2,180,70,0,20,0,0
+533,gurdurr,5,532,272,4,12,,4,2,90,70,0,20,0,0
+534,conkeldurr,5,533,272,3,12,,4,2,45,70,0,20,0,0
+535,tympole,5,,273,2,3,,4,4,255,70,0,20,0,0
+536,palpitoad,5,535,273,2,6,,4,4,120,70,0,20,0,0
+537,seismitoad,5,536,273,2,12,,4,4,45,70,0,20,0,0
+538,throh,5,,274,8,12,,2,0,45,70,0,20,0,0
+539,sawk,5,,275,2,12,,2,0,45,70,0,20,0,0
+540,sewaddle,5,,276,10,14,,4,4,255,70,0,15,0,0
+541,swadloon,5,540,276,5,4,,4,4,120,70,0,15,0,0
+542,leavanny,5,541,276,10,12,,4,4,45,70,0,15,0,0
+543,venipede,5,,277,8,14,,4,4,255,70,0,15,0,0
+544,whirlipede,5,543,277,4,1,,4,4,120,70,0,15,0,0
+545,scolipede,5,544,277,8,14,,4,4,45,70,0,20,0,0
+546,cottonee,5,,278,5,1,,2,4,190,70,0,20,0,0
+547,whimsicott,5,546,278,5,12,,2,4,75,70,0,20,0,0
+548,petilil,5,,279,5,5,,2,8,190,70,0,20,0,0
+549,lilligant,5,548,279,5,5,,2,8,75,70,0,20,0,0
+550,basculin,5,,280,5,3,,2,4,25,70,0,40,0,False
+551,sandile,5,,281,3,8,,4,4,180,70,0,20,0,0
+552,krokorok,5,551,281,3,8,,4,4,90,70,0,20,0,0
+553,krookodile,5,552,281,8,6,,4,4,45,70,0,20,0,0
+554,darumaka,5,,282,8,12,,4,4,120,70,0,20,0,0
+555,darmanitan,5,554,282,8,8,,4,4,60,70,0,20,0,True
+556,maractus,5,,283,5,5,,2,4,255,70,0,20,0,0
+557,dwebble,5,,284,8,14,,2,4,190,70,0,20,0,0
+558,crustle,5,557,284,8,14,,2,4,75,70,0,20,0,0
+559,scraggy,5,,285,10,6,,2,4,180,35,0,15,0,0
+560,scrafty,5,559,285,8,6,,2,4,90,70,0,15,0,0
+561,sigilyph,5,,286,1,9,,2,4,45,70,0,20,0,0
+562,yamask,5,,287,1,4,,2,4,190,70,0,25,0,0
+563,cofagrigus,5,562,287,10,5,,2,4,90,70,0,25,0,0
+564,tirtouga,5,,288,2,8,,2,1,45,70,0,30,0,0
+565,carracosta,5,564,288,2,6,,2,1,45,70,0,30,0,0
+566,archen,5,,289,10,9,,2,1,45,70,0,30,0,0
+567,archeops,5,566,289,10,9,,2,1,45,70,0,30,0,0
+568,trubbish,5,,290,5,12,,2,4,190,70,0,20,0,0
+569,garbodor,5,568,290,5,12,,2,4,60,70,0,20,0,0
+570,zorua,5,,291,4,8,,4,1,75,70,0,25,0,0
+571,zoroark,5,570,291,4,6,,4,1,45,70,0,20,0,0
+572,minccino,5,,292,4,8,,3,6,255,70,0,15,0,0
+573,cinccino,5,572,292,4,8,,3,6,60,70,0,15,0,0
+574,gothita,5,,293,7,12,,4,6,200,70,0,20,0,0
+575,gothorita,5,574,293,7,12,,4,6,100,70,0,20,0,0
+576,gothitelle,5,575,293,7,12,,4,6,50,70,0,20,0,0
+577,solosis,5,,294,5,1,,4,4,200,70,0,20,0,0
+578,duosion,5,577,294,5,1,,4,4,100,70,0,20,0,0
+579,reuniclus,5,578,294,5,4,,4,4,50,70,0,20,0,0
+580,ducklett,5,,295,2,9,,2,4,190,70,0,20,0,0
+581,swanna,5,580,295,9,9,,2,4,45,70,0,20,0,0
+582,vanillite,5,,296,9,5,,1,4,255,70,0,20,0,0
+583,vanillish,5,582,296,9,5,,1,4,120,70,0,20,0,0
+584,vanilluxe,5,583,296,9,11,,1,4,45,70,0,20,0,0
+585,deerling,5,,297,10,8,,2,4,190,70,0,20,0,True
+586,sawsbuck,5,585,297,3,8,,2,4,75,70,0,20,0,True
+587,emolga,5,,298,9,8,,2,4,200,70,0,20,0,0
+588,karrablast,5,,299,2,12,,2,4,200,70,0,15,0,0
+589,escavalier,5,588,299,4,4,,2,4,75,70,0,15,0,0
+590,foongus,5,,300,9,4,,2,4,190,70,0,20,0,0
+591,amoonguss,5,590,300,9,4,,2,4,75,70,0,20,0,0
+592,frillish,5,,301,9,10,,2,4,190,70,0,20,1,0
+593,jellicent,5,592,301,9,10,,2,4,60,70,0,20,1,0
+594,alomomola,5,,302,6,3,,3,4,75,70,0,40,0,0
+595,joltik,5,,303,10,14,,2,4,190,70,0,20,0,0
+596,galvantula,5,595,303,10,14,,2,4,75,70,0,20,0,0
+597,ferroseed,5,,304,4,1,,2,4,255,70,0,20,0,0
+598,ferrothorn,5,597,304,4,10,,2,4,90,70,0,20,0,0
+599,klink,5,,305,4,11,,4,-1,130,70,0,20,0,0
+600,klang,5,599,305,4,11,,4,-1,60,70,0,20,0,0
+601,klinklang,5,600,305,4,11,,4,-1,30,70,0,20,0,0
+602,tynamo,5,,306,9,3,,1,4,190,70,0,20,0,0
+603,eelektrik,5,602,306,2,3,,1,4,60,70,0,20,0,0
+604,eelektross,5,603,306,2,3,,1,4,30,70,0,20,0,0
+605,elgyem,5,,307,2,6,,2,4,255,70,0,20,0,0
+606,beheeyem,5,605,307,3,12,,2,4,90,70,0,20,0,0
+607,litwick,5,,308,9,5,,4,4,190,70,0,20,0,0
+608,lampent,5,607,308,1,4,,4,4,90,70,0,20,0,0
+609,chandelure,5,608,308,1,4,,4,4,45,70,0,20,0,0
+610,axew,5,,309,5,6,,1,4,75,35,0,40,0,0
+611,fraxure,5,610,309,5,6,,1,4,60,35,0,40,0,0
+612,haxorus,5,611,309,10,6,,1,4,45,35,0,40,0,0
+613,cubchoo,5,,310,9,6,,2,4,120,70,0,20,0,0
+614,beartic,5,613,310,9,8,,2,4,60,70,0,20,0,0
+615,cryogonal,5,,311,2,1,,2,-1,25,70,0,25,0,0
+616,shelmet,5,,312,8,1,,2,4,200,70,0,15,0,0
+617,accelgor,5,616,312,8,4,,2,4,75,70,0,15,0,0
+618,stunfisk,5,,313,3,3,,2,4,75,70,0,20,0,0
+619,mienfoo,5,,314,10,6,,4,4,180,70,0,25,0,0
+620,mienshao,5,619,314,7,6,,4,4,45,70,0,25,0,0
+621,druddigon,5,,315,8,6,,2,4,45,70,0,30,0,0
+622,golett,5,,316,5,12,,2,-1,190,70,0,25,0,0
+623,golurk,5,622,316,5,12,,2,-1,90,70,0,25,0,0
+624,pawniard,5,,317,8,12,,2,4,120,35,0,20,0,0
+625,bisharp,5,624,317,8,12,,2,4,45,35,0,20,0,0
+626,bouffalant,5,,318,3,8,,2,4,45,70,0,20,0,0
+627,rufflet,5,,319,9,9,,1,0,190,70,0,20,0,0
+628,braviary,5,627,319,8,9,,1,0,60,70,0,20,0,0
+629,vullaby,5,,320,3,9,,1,8,190,35,0,20,0,0
+630,mandibuzz,5,629,320,3,9,,1,8,60,35,0,20,0,0
+631,heatmor,5,,321,8,6,,2,4,90,70,0,20,0,0
+632,durant,5,,322,4,14,,2,4,90,70,0,20,0,0
+633,deino,5,,323,2,8,,1,4,45,35,0,40,0,0
+634,zweilous,5,633,323,2,8,,1,4,45,35,0,40,0,0
+635,hydreigon,5,634,323,2,6,,1,4,45,35,0,40,0,0
+636,larvesta,5,,324,9,14,,1,4,45,70,0,40,0,0
+637,volcarona,5,636,324,9,13,,1,4,15,70,0,40,0,0
+638,cobalion,5,,325,2,8,,1,-1,3,35,0,80,0,0
+639,terrakion,5,,326,4,8,,1,-1,3,35,0,80,0,0
+640,virizion,5,,327,5,8,,1,-1,3,35,0,80,0,0
+641,tornadus,5,,328,5,4,,1,0,3,90,0,120,0,0
+642,thundurus,5,,329,2,4,,1,0,3,90,0,120,0,0
+643,reshiram,5,,330,9,9,,1,-1,45,0,0,120,0,0
+644,zekrom,5,,331,1,6,,1,-1,45,0,0,120,0,0
+645,landorus,5,,332,3,4,,1,0,3,90,0,120,0,0
+646,kyurem,5,,333,4,6,,1,-1,3,0,0,120,0,0
+647,keldeo,5,,334,10,8,,1,-1,3,35,0,80,0,0
+648,meloetta,5,,335,9,12,,1,-1,3,100,0,120,0,True
+649,genesect,5,,336,7,12,,1,-1,3,0,0,120,0,True

From be3e224cad53d52d67965d34be40b2b78896a6b1 Mon Sep 17 00:00:00 2001
From: Petr Viktorin <encukou@gmail.com>
Date: Sat, 30 Apr 2011 00:37:14 +0300
Subject: [PATCH 03/16] Pokemon species split: Other data changes

---
 pokedex/data/csv/pokemon_abilities.csv        |   48 +-
 pokedex/data/csv/pokemon_dex_numbers.csv      |    2 +-
 pokedex/data/csv/pokemon_egg_groups.csv       |   23 +-
 pokedex/data/csv/pokemon_evolution.csv        |    2 +-
 pokedex/data/csv/pokemon_flavor_summaries.csv |    1 -
 pokedex/data/csv/pokemon_form_group_prose.csv |   20 -
 pokedex/data/csv/pokemon_form_names.csv       | 1456 ++---
 .../csv/pokemon_form_pokeathlon_stats.csv     |  610 +-
 pokedex/data/csv/pokemon_game_indices.csv     |   60 +-
 pokedex/data/csv/pokemon_items.csv            |   62 +-
 pokedex/data/csv/pokemon_moves.csv            | 5668 ++++++++---------
 .../csv/pokemon_species_flavor_summaries.csv  |    1 +
 ...xt.csv => pokemon_species_flavor_text.csv} |    2 +-
 ...on_names.csv => pokemon_species_names.csv} |   20 +-
 pokedex/data/csv/pokemon_species_prose.csv    |   20 +
 pokedex/data/csv/pokemon_stats.csv            |  216 +-
 pokedex/data/csv/pokemon_types.csv            |   58 +-
 pokedex/data/csv/translations/cs.csv          |  130 +-
 18 files changed, 4170 insertions(+), 4229 deletions(-)
 delete mode 100644 pokedex/data/csv/pokemon_flavor_summaries.csv
 delete mode 100644 pokedex/data/csv/pokemon_form_group_prose.csv
 create mode 100644 pokedex/data/csv/pokemon_species_flavor_summaries.csv
 rename pokedex/data/csv/{pokemon_flavor_text.csv => pokemon_species_flavor_text.csv} (99%)
 rename pokedex/data/csv/{pokemon_names.csv => pokemon_species_names.csv} (99%)
 create mode 100644 pokedex/data/csv/pokemon_species_prose.csv

diff --git a/pokedex/data/csv/pokemon_abilities.csv b/pokedex/data/csv/pokemon_abilities.csv
index 84c259e..68dff9d 100644
--- a/pokedex/data/csv/pokemon_abilities.csv
+++ b/pokedex/data/csv/pokemon_abilities.csv
@@ -1601,27 +1601,27 @@ pokemon_id,ability_id,is_dream,slot
 647,154,0,1
 648,32,0,1
 649,88,0,1
-10001,46,0,1
-10002,46,0,1
-10003,46,0,1
-10004,107,0,1
-10004,142,1,3
-10005,107,0,1
-10005,142,1,3
-10006,32,0,1
-10007,26,0,1
-10007,26,1,3
-10008,26,0,1
-10009,26,0,1
-10010,26,0,1
-10011,26,0,1
-10012,26,0,1
-10013,59,0,1
-10014,59,0,1
-10015,59,0,1
-10016,69,0,1
-10016,91,0,2
-10016,104,1,3
-10017,125,0,1
-10017,161,1,3
-10018,32,0,1
+650,46,0,1
+651,46,0,1
+652,46,0,1
+653,107,0,1
+653,142,1,3
+654,107,0,1
+654,142,1,3
+655,32,0,1
+656,26,0,1
+656,26,1,3
+657,26,0,1
+658,26,0,1
+659,26,0,1
+660,26,0,1
+661,26,0,1
+662,59,0,1
+663,59,0,1
+664,59,0,1
+665,69,0,1
+665,91,0,2
+665,104,1,3
+666,125,0,1
+666,161,1,3
+667,32,0,1
diff --git a/pokedex/data/csv/pokemon_dex_numbers.csv b/pokedex/data/csv/pokemon_dex_numbers.csv
index 78b2506..6a67d4d 100644
--- a/pokedex/data/csv/pokemon_dex_numbers.csv
+++ b/pokedex/data/csv/pokemon_dex_numbers.csv
@@ -1,4 +1,4 @@
-pokemon_id,pokedex_id,pokedex_number
+species_id,pokedex_id,pokedex_number
 1,1,1
 1,2,1
 1,3,226
diff --git a/pokedex/data/csv/pokemon_egg_groups.csv b/pokedex/data/csv/pokemon_egg_groups.csv
index 8c71ea6..6a55334 100644
--- a/pokedex/data/csv/pokemon_egg_groups.csv
+++ b/pokedex/data/csv/pokemon_egg_groups.csv
@@ -1,4 +1,4 @@
-pokemon_id,egg_group_id
+species_id,egg_group_id
 1,1
 1,7
 2,1
@@ -823,24 +823,3 @@ pokemon_id,egg_group_id
 647,15
 648,15
 649,15
-10001,15
-10002,15
-10003,15
-10004,3
-10005,3
-10006,15
-10007,15
-10008,11
-10009,11
-10010,11
-10011,11
-10012,11
-10013,6
-10013,11
-10014,6
-10014,11
-10015,6
-10015,11
-10016,12
-10017,5
-10018,15
diff --git a/pokedex/data/csv/pokemon_evolution.csv b/pokedex/data/csv/pokemon_evolution.csv
index 3983e02..c9b1b64 100644
--- a/pokedex/data/csv/pokemon_evolution.csv
+++ b/pokedex/data/csv/pokemon_evolution.csv
@@ -1,4 +1,4 @@
-id,evolved_pokemon_id,evolution_trigger_id,trigger_item_id,minimum_level,gender,location_id,held_item_id,time_of_day,known_move_id,minimum_happiness,minimum_beauty,relative_physical_stats,party_pokemon_id,trade_pokemon_id
+id,evolved_species_id,evolution_trigger_id,trigger_item_id,minimum_level,gender,location_id,held_item_id,time_of_day,known_move_id,minimum_happiness,minimum_beauty,relative_physical_stats,party_species_id,trade_species_id
 1,2,1,,16,,,,,,,,,,
 2,3,1,,32,,,,,,,,,,
 3,5,1,,16,,,,,,,,,,
diff --git a/pokedex/data/csv/pokemon_flavor_summaries.csv b/pokedex/data/csv/pokemon_flavor_summaries.csv
deleted file mode 100644
index 9385607..0000000
--- a/pokedex/data/csv/pokemon_flavor_summaries.csv
+++ /dev/null
@@ -1 +0,0 @@
-pokemon_id,local_language_id,flavor_summary
diff --git a/pokedex/data/csv/pokemon_form_group_prose.csv b/pokedex/data/csv/pokemon_form_group_prose.csv
deleted file mode 100644
index 5afc717..0000000
--- a/pokedex/data/csv/pokemon_form_group_prose.csv
+++ /dev/null
@@ -1,20 +0,0 @@
-pokemon_form_group_id,local_language_id,term,description
-172,9,,"Spiky-eared Pichu can only be received by taking the shiny Pichu from an official promotion to []{pokemon:celebi}'s shrine in []{location:ilex-forest}.  Spiky-eared Pichu is always female, cannot evolve, and cannot be taken into the Wi-Fi Club or the Union Room, but is otherwise a normal Pichu."
-201,9,,Forms only affect appearance.  A form is determined at random before a wild encounter and cannot be changed.
-351,9,Form,"Form changes along with type to match the [weather]{mechanic:weather} in battle, due to []{ability:forecast}.  Castform is always in its normal form outside of battle, regardless of weather."
-386,9,Forme,"Forms have different stats and movepools.  In Generation III, Deoxys's form depends on the game: Normal Forme in Ruby and Sapphire, Attack Forme in FireRed, Defense Forme in LeafGreen, and Speed Forme in Emerald.  In Generation IV, every form exists: form is preserved when transferring via []{location:pal-park}, and meteorites in the southeast corner of []{location:veilstone-city} or at the west end of []{location:unova-route-3} can be used to switch between forms."
-412,9,Cloak,"Forms only affect appearance, although they become permanent upon evolution.  Wild and newly-hatched Burmy are always in a Plant Cloak.  Burmy's cloak changes to match the terrain after a battle it participated in: Plant Cloak by default; Sandy Cloak in sandy or rocky areas, such as beaches, caves, and trails; and Trash Cloak in buildings."
-413,9,Cloak,"Forms have different stats and movepools.  During evolution, Burmy's current cloak becomes Wormadam's form, and can no longer be changed."
-421,9,Form,"Sunshine form is active during [strong sunlight]{mechanic:strong-sunlight}.  Otherwise, Cherrim defaults to its Overcast form."
-422,9,Sea,"Forms only affect appearance.  A form is determined before a wild encounter based on whether the battle is in western or eastern Sinnoh, or inherited from the mother when breeding, and cannot be changed."
-423,9,Sea,Forms only affect appearance.  A form is determined before a wild encounter based on whether the battle is in western or eastern Sinnoh and cannot be changed.
-479,9,Form,"Forms have different signature moves, and the appliance forms' stats are different from the normal form's.  When switching forms, the old signature move (if any) is removed and the new one must be learned, overwriting another move if need be, or the switch will be cancelled; however, it can be forgotten while in the new form.  There are appliances for switching forms in a secret room in the Team Galactic Eterna Building or the Silph Co. Office Building; the room in the Galactic Building requires a []{item:secret-key}, but the room in Silph Co. is freely accessible when walking with Rotom.  Rotom can be returned to its normal form by checking the space its appliance occupied.  It also reverts to its normal form upon entering the Wi-Fi Club or the Union Room."
-487,9,Forme,"Forms have different stats.  Giratina transforms into Origin Forme in the []{location:distortion-world} or while holding a []{item:griseous-orb}.  Otherwise, it assumes its Altered Forme.  The Griseous Orb returns to the bag upon entering the Wi-Fi Club or the Union Room."
-492,9,Forme,"Forms have different stats and movepools.  Shaymin transforms into Sky Forme with the use of a []{item:gracidea}.  It is limited to Land Forme at night, when [frozen]{mechanic:frozen}, in the storage system boxes, in the Wi-Fi Club, and in the Union Room; under these conditions, Sky Shaymin reverts to Land Forme, and the Gracidea has no effect.  The Gracidea must be used again to return to Sky Forme.  A Gracidea may be received by showing a woman in southwest []{location:floaroma-town} or the []{location:goldenrod-city} flower shop a Shaymin met in a fateful encounter."
-493,9,Type,"Form changes along with type to match a held Plate, due to []{ability:multitype}."
-550,9,Form,"Forms have one different ability and different wild held items. Blue-Striped Basculin are rarer in Black Version, and Red-Striped Basculin in White Version."
-555,9,Mode,"Forms have different stats and types.  Darmanitan changes to Zen Mode below 50% HP if it has []{ability:zen-mode} as its ability, and back to Standard Mode above 50% HP."
-585,9,Form,"Form changes to match the season.  To switch forms, Deerling must be in the party when loading the game."
-586,9,Form,"Form changes to match the season.  To switch forms, Sawsbuck must be in the party when loading the game."
-648,9,Forme,"Forms have different stats and types.  Meloetta changes form upon using []{move:relic-song} in battle, and reverts to Aria Forme outside of battle."
-649,9,Drive,Form changes to match Genesect's held Drive.  The only differences are the color of its weapon and []{move:techno-blast}'s type.
diff --git a/pokedex/data/csv/pokemon_form_names.csv b/pokedex/data/csv/pokemon_form_names.csv
index e51e486..e3d4d73 100644
--- a/pokedex/data/csv/pokemon_form_names.csv
+++ b/pokedex/data/csv/pokemon_form_names.csv
@@ -1,728 +1,728 @@
-pokemon_form_id,local_language_id,name
-1,9,
-2,9,
-3,9,
-4,9,
-5,9,
-6,9,
-7,9,
-8,9,
-9,9,
-10,9,
-11,9,
-12,9,
-13,9,
-14,9,
-15,9,
-16,9,
-17,9,
-18,9,
-19,9,
-20,9,
-21,9,
-22,9,
-23,9,
-24,9,
-25,9,
-26,9,
-27,9,
-28,9,
-29,9,
-30,9,
-31,9,
-32,9,
-33,9,
-34,9,
-35,9,
-36,9,
-37,9,
-38,9,
-39,9,
-40,9,
-41,9,
-42,9,
-43,9,
-44,9,
-45,9,
-46,9,
-47,9,
-48,9,
-49,9,
-50,9,
-51,9,
-52,9,
-53,9,
-54,9,
-55,9,
-56,9,
-57,9,
-58,9,
-59,9,
-60,9,
-61,9,
-62,9,
-63,9,
-64,9,
-65,9,
-66,9,
-67,9,
-68,9,
-69,9,
-70,9,
-71,9,
-72,9,
-73,9,
-74,9,
-75,9,
-76,9,
-77,9,
-78,9,
-79,9,
-80,9,
-81,9,
-82,9,
-83,9,
-84,9,
-85,9,
-86,9,
-87,9,
-88,9,
-89,9,
-90,9,
-91,9,
-92,9,
-93,9,
-94,9,
-95,9,
-96,9,
-97,9,
-98,9,
-99,9,
-100,9,
-101,9,
-102,9,
-103,9,
-104,9,
-105,9,
-106,9,
-107,9,
-108,9,
-109,9,
-110,9,
-111,9,
-112,9,
-113,9,
-114,9,
-115,9,
-116,9,
-117,9,
-118,9,
-119,9,
-120,9,
-121,9,
-122,9,
-123,9,
-124,9,
-125,9,
-126,9,
-127,9,
-128,9,
-129,9,
-130,9,
-131,9,
-132,9,
-133,9,
-134,9,
-135,9,
-136,9,
-137,9,
-138,9,
-139,9,
-140,9,
-141,9,
-142,9,
-143,9,
-144,9,
-145,9,
-146,9,
-147,9,
-148,9,
-149,9,
-150,9,
-151,9,
-152,9,
-153,9,
-154,9,
-155,9,
-156,9,
-157,9,
-158,9,
-159,9,
-160,9,
-161,9,
-162,9,
-163,9,
-164,9,
-165,9,
-166,9,
-167,9,
-168,9,
-169,9,
-170,9,
-171,9,
-172,9,
-173,9,
-174,9,
-175,9,
-176,9,
-177,9,
-178,9,
-179,9,
-180,9,
-181,9,
-182,9,
-183,9,
-184,9,
-185,9,
-186,9,
-187,9,
-188,9,
-189,9,
-190,9,
-191,9,
-192,9,
-193,9,
-194,9,
-195,9,
-196,9,
-197,9,
-198,9,
-199,9,
-200,9,
-201,9,A
-202,9,
-203,9,
-204,9,
-205,9,
-206,9,
-207,9,
-208,9,
-209,9,
-210,9,
-211,9,
-212,9,
-213,9,
-214,9,
-215,9,
-216,9,
-217,9,
-218,9,
-219,9,
-220,9,
-221,9,
-222,9,
-223,9,
-224,9,
-225,9,
-226,9,
-227,9,
-228,9,
-229,9,
-230,9,
-231,9,
-232,9,
-233,9,
-234,9,
-235,9,
-236,9,
-237,9,
-238,9,
-239,9,
-240,9,
-241,9,
-242,9,
-243,9,
-244,9,
-245,9,
-246,9,
-247,9,
-248,9,
-249,9,
-250,9,
-251,9,
-252,9,
-253,9,
-254,9,
-255,9,
-256,9,
-257,9,
-258,9,
-259,9,
-260,9,
-261,9,
-262,9,
-263,9,
-264,9,
-265,9,
-266,9,
-267,9,
-268,9,
-269,9,
-270,9,
-271,9,
-272,9,
-273,9,
-274,9,
-275,9,
-276,9,
-277,9,
-278,9,
-279,9,
-280,9,
-281,9,
-282,9,
-283,9,
-284,9,
-285,9,
-286,9,
-287,9,
-288,9,
-289,9,
-290,9,
-291,9,
-292,9,
-293,9,
-294,9,
-295,9,
-296,9,
-297,9,
-298,9,
-299,9,
-300,9,
-301,9,
-302,9,
-303,9,
-304,9,
-305,9,
-306,9,
-307,9,
-308,9,
-309,9,
-310,9,
-311,9,
-312,9,
-313,9,
-314,9,
-315,9,
-316,9,
-317,9,
-318,9,
-319,9,
-320,9,
-321,9,
-322,9,
-323,9,
-324,9,
-325,9,
-326,9,
-327,9,
-328,9,
-329,9,
-330,9,
-331,9,
-332,9,
-333,9,
-334,9,
-335,9,
-336,9,
-337,9,
-338,9,
-339,9,
-340,9,
-341,9,
-342,9,
-343,9,
-344,9,
-345,9,
-346,9,
-347,9,
-348,9,
-349,9,
-350,9,
-351,9,
-352,9,
-353,9,
-354,9,
-355,9,
-356,9,
-357,9,
-358,9,
-359,9,
-360,9,
-361,9,
-362,9,
-363,9,
-364,9,
-365,9,
-366,9,
-367,9,
-368,9,
-369,9,
-370,9,
-371,9,
-372,9,
-373,9,
-374,9,
-375,9,
-376,9,
-377,9,
-378,9,
-379,9,
-380,9,
-381,9,
-382,9,
-383,9,
-384,9,
-385,9,
-386,9,Normal
-387,9,
-388,9,
-389,9,
-390,9,
-391,9,
-392,9,
-393,9,
-394,9,
-395,9,
-396,9,
-397,9,
-398,9,
-399,9,
-400,9,
-401,9,
-402,9,
-403,9,
-404,9,
-405,9,
-406,9,
-407,9,
-408,9,
-409,9,
-410,9,
-411,9,
-412,9,Plant
-413,9,Plant
-414,9,
-415,9,
-416,9,
-417,9,
-418,9,
-419,9,
-420,9,
-421,9,Overcast
-422,9,West
-423,9,West
-424,9,
-425,9,
-426,9,
-427,9,
-428,9,
-429,9,
-430,9,
-431,9,
-432,9,
-433,9,
-434,9,
-435,9,
-436,9,
-437,9,
-438,9,
-439,9,
-440,9,
-441,9,
-442,9,
-443,9,
-444,9,
-445,9,
-446,9,
-447,9,
-448,9,
-449,9,
-450,9,
-451,9,
-452,9,
-453,9,
-454,9,
-455,9,
-456,9,
-457,9,
-458,9,
-459,9,
-460,9,
-461,9,
-462,9,
-463,9,
-464,9,
-465,9,
-466,9,
-467,9,
-468,9,
-469,9,
-470,9,
-471,9,
-472,9,
-473,9,
-474,9,
-475,9,
-476,9,
-477,9,
-478,9,
-479,9,
-480,9,
-481,9,
-482,9,
-483,9,
-484,9,
-485,9,
-486,9,
-487,9,Altered
-488,9,
-489,9,
-490,9,
-491,9,
-492,9,Land
-493,9,Normal
-494,9,
-495,9,
-496,9,
-497,9,
-498,9,
-499,9,
-500,9,
-501,9,
-502,9,
-503,9,
-504,9,
-505,9,
-506,9,
-507,9,
-508,9,
-509,9,
-510,9,
-511,9,
-512,9,
-513,9,
-514,9,
-515,9,
-516,9,
-517,9,
-518,9,
-519,9,
-520,9,
-521,9,
-522,9,
-523,9,
-524,9,
-525,9,
-526,9,
-527,9,
-528,9,
-529,9,
-530,9,
-531,9,
-532,9,
-533,9,
-534,9,
-535,9,
-536,9,
-537,9,
-538,9,
-539,9,
-540,9,
-541,9,
-542,9,
-543,9,
-544,9,
-545,9,
-546,9,
-547,9,
-548,9,
-549,9,
-550,9,Red-Striped
-551,9,
-552,9,
-553,9,
-554,9,
-555,9,Standard
-556,9,
-557,9,
-558,9,
-559,9,
-560,9,
-561,9,
-562,9,
-563,9,
-564,9,
-565,9,
-566,9,
-567,9,
-568,9,
-569,9,
-570,9,
-571,9,
-572,9,
-573,9,
-574,9,
-575,9,
-576,9,
-577,9,
-578,9,
-579,9,
-580,9,
-581,9,
-582,9,
-583,9,
-584,9,
-585,9,Spring
-586,9,Spring
-587,9,
-588,9,
-589,9,
-590,9,
-591,9,
-592,9,
-593,9,
-594,9,
-595,9,
-596,9,
-597,9,
-598,9,
-599,9,
-600,9,
-601,9,
-602,9,
-603,9,
-604,9,
-605,9,
-606,9,
-607,9,
-608,9,
-609,9,
-610,9,
-611,9,
-612,9,
-613,9,
-614,9,
-615,9,
-616,9,
-617,9,
-618,9,
-619,9,
-620,9,
-621,9,
-622,9,
-623,9,
-624,9,
-625,9,
-626,9,
-627,9,
-628,9,
-629,9,
-630,9,
-631,9,
-632,9,
-633,9,
-634,9,
-635,9,
-636,9,
-637,9,
-638,9,
-639,9,
-640,9,
-641,9,
-642,9,
-643,9,
-644,9,
-645,9,
-646,9,
-647,9,
-648,9,Aria
-649,9,
-10001,9,B
-10002,9,C
-10003,9,D
-10004,9,E
-10005,9,F
-10006,9,G
-10007,9,H
-10008,9,I
-10009,9,J
-10010,9,K
-10011,9,L
-10012,9,M
-10013,9,N
-10014,9,O
-10015,9,P
-10016,9,Q
-10017,9,R
-10018,9,S
-10019,9,T
-10020,9,U
-10021,9,V
-10022,9,W
-10023,9,X
-10024,9,Y
-10025,9,Z
-10026,9,!
-10027,9,?
-10028,9,Sunny
-10029,9,Rainy
-10030,9,Snowy
-10031,9,Attack
-10032,9,Defense
-10033,9,Speed
-10034,9,Sandy
-10035,9,Trash
-10036,9,Sandy
-10037,9,Trash
-10038,9,Sunshine
-10039,9,East
-10040,9,East
-10041,9,Bug
-10042,9,Dark
-10043,9,Dragon
-10044,9,Electric
-10045,9,Fighting
-10046,9,Fire
-10047,9,Flying
-10048,9,Ghost
-10049,9,Grass
-10050,9,Ground
-10051,9,Ice
-10052,9,Poison
-10053,9,Psychic
-10054,9,Rock
-10055,9,Steel
-10056,9,Water
-10057,9,???
-10058,9,Heat
-10059,9,Wash
-10060,9,Frost
-10061,9,Fan
-10062,9,Mow
-10063,9,Origin
-10064,9,Sky
-10065,9,Spiky-eared
-10066,9,Blue-Striped
-10067,9,Zen
-10068,9,Summer
-10069,9,Autumn
-10070,9,Winter
-10071,9,Summer
-10072,9,Autumn
-10073,9,Winter
-10074,9,Pirouette
-10075,9,Douse
-10076,9,Shock
-10077,9,Burn
-10078,9,Chill
+pokemon_form_id,local_language_id,form_name,pokemon_name
+1,9,,
+2,9,,
+3,9,,
+4,9,,
+5,9,,
+6,9,,
+7,9,,
+8,9,,
+9,9,,
+10,9,,
+11,9,,
+12,9,,
+13,9,,
+14,9,,
+15,9,,
+16,9,,
+17,9,,
+18,9,,
+19,9,,
+20,9,,
+21,9,,
+22,9,,
+23,9,,
+24,9,,
+25,9,,
+26,9,,
+27,9,,
+28,9,,
+29,9,,
+30,9,,
+31,9,,
+32,9,,
+33,9,,
+34,9,,
+35,9,,
+36,9,,
+37,9,,
+38,9,,
+39,9,,
+40,9,,
+41,9,,
+42,9,,
+43,9,,
+44,9,,
+45,9,,
+46,9,,
+47,9,,
+48,9,,
+49,9,,
+50,9,,
+51,9,,
+52,9,,
+53,9,,
+54,9,,
+55,9,,
+56,9,,
+57,9,,
+58,9,,
+59,9,,
+60,9,,
+61,9,,
+62,9,,
+63,9,,
+64,9,,
+65,9,,
+66,9,,
+67,9,,
+68,9,,
+69,9,,
+70,9,,
+71,9,,
+72,9,,
+73,9,,
+74,9,,
+75,9,,
+76,9,,
+77,9,,
+78,9,,
+79,9,,
+80,9,,
+81,9,,
+82,9,,
+83,9,,
+84,9,,
+85,9,,
+86,9,,
+87,9,,
+88,9,,
+89,9,,
+90,9,,
+91,9,,
+92,9,,
+93,9,,
+94,9,,
+95,9,,
+96,9,,
+97,9,,
+98,9,,
+99,9,,
+100,9,,
+101,9,,
+102,9,,
+103,9,,
+104,9,,
+105,9,,
+106,9,,
+107,9,,
+108,9,,
+109,9,,
+110,9,,
+111,9,,
+112,9,,
+113,9,,
+114,9,,
+115,9,,
+116,9,,
+117,9,,
+118,9,,
+119,9,,
+120,9,,
+121,9,,
+122,9,,
+123,9,,
+124,9,,
+125,9,,
+126,9,,
+127,9,,
+128,9,,
+129,9,,
+130,9,,
+131,9,,
+132,9,,
+133,9,,
+134,9,,
+135,9,,
+136,9,,
+137,9,,
+138,9,,
+139,9,,
+140,9,,
+141,9,,
+142,9,,
+143,9,,
+144,9,,
+145,9,,
+146,9,,
+147,9,,
+148,9,,
+149,9,,
+150,9,,
+151,9,,
+152,9,,
+153,9,,
+154,9,,
+155,9,,
+156,9,,
+157,9,,
+158,9,,
+159,9,,
+160,9,,
+161,9,,
+162,9,,
+163,9,,
+164,9,,
+165,9,,
+166,9,,
+167,9,,
+168,9,,
+169,9,,
+170,9,,
+171,9,,
+172,9,,
+173,9,,
+174,9,,
+175,9,,
+176,9,,
+177,9,,
+178,9,,
+179,9,,
+180,9,,
+181,9,,
+182,9,,
+183,9,,
+184,9,,
+185,9,,
+186,9,,
+187,9,,
+188,9,,
+189,9,,
+190,9,,
+191,9,,
+192,9,,
+193,9,,
+194,9,,
+195,9,,
+196,9,,
+197,9,,
+198,9,,
+199,9,,
+200,9,,
+201,9,Letter A,Unown A
+202,9,,
+203,9,,
+204,9,,
+205,9,,
+206,9,,
+207,9,,
+208,9,,
+209,9,,
+210,9,,
+211,9,,
+212,9,,
+213,9,,
+214,9,,
+215,9,,
+216,9,,
+217,9,,
+218,9,,
+219,9,,
+220,9,,
+221,9,,
+222,9,,
+223,9,,
+224,9,,
+225,9,,
+226,9,,
+227,9,,
+228,9,,
+229,9,,
+230,9,,
+231,9,,
+232,9,,
+233,9,,
+234,9,,
+235,9,,
+236,9,,
+237,9,,
+238,9,,
+239,9,,
+240,9,,
+241,9,,
+242,9,,
+243,9,,
+244,9,,
+245,9,,
+246,9,,
+247,9,,
+248,9,,
+249,9,,
+250,9,,
+251,9,,
+252,9,,
+253,9,,
+254,9,,
+255,9,,
+256,9,,
+257,9,,
+258,9,,
+259,9,,
+260,9,,
+261,9,,
+262,9,,
+263,9,,
+264,9,,
+265,9,,
+266,9,,
+267,9,,
+268,9,,
+269,9,,
+270,9,,
+271,9,,
+272,9,,
+273,9,,
+274,9,,
+275,9,,
+276,9,,
+277,9,,
+278,9,,
+279,9,,
+280,9,,
+281,9,,
+282,9,,
+283,9,,
+284,9,,
+285,9,,
+286,9,,
+287,9,,
+288,9,,
+289,9,,
+290,9,,
+291,9,,
+292,9,,
+293,9,,
+294,9,,
+295,9,,
+296,9,,
+297,9,,
+298,9,,
+299,9,,
+300,9,,
+301,9,,
+302,9,,
+303,9,,
+304,9,,
+305,9,,
+306,9,,
+307,9,,
+308,9,,
+309,9,,
+310,9,,
+311,9,,
+312,9,,
+313,9,,
+314,9,,
+315,9,,
+316,9,,
+317,9,,
+318,9,,
+319,9,,
+320,9,,
+321,9,,
+322,9,,
+323,9,,
+324,9,,
+325,9,,
+326,9,,
+327,9,,
+328,9,,
+329,9,,
+330,9,,
+331,9,,
+332,9,,
+333,9,,
+334,9,,
+335,9,,
+336,9,,
+337,9,,
+338,9,,
+339,9,,
+340,9,,
+341,9,,
+342,9,,
+343,9,,
+344,9,,
+345,9,,
+346,9,,
+347,9,,
+348,9,,
+349,9,,
+350,9,,
+351,9,,
+352,9,,
+353,9,,
+354,9,,
+355,9,,
+356,9,,
+357,9,,
+358,9,,
+359,9,,
+360,9,,
+361,9,,
+362,9,,
+363,9,,
+364,9,,
+365,9,,
+366,9,,
+367,9,,
+368,9,,
+369,9,,
+370,9,,
+371,9,,
+372,9,,
+373,9,,
+374,9,,
+375,9,,
+376,9,,
+377,9,,
+378,9,,
+379,9,,
+380,9,,
+381,9,,
+382,9,,
+383,9,,
+384,9,,
+385,9,,
+386,9,Normal Forme,Normal Deoxys
+387,9,,
+388,9,,
+389,9,,
+390,9,,
+391,9,,
+392,9,,
+393,9,,
+394,9,,
+395,9,,
+396,9,,
+397,9,,
+398,9,,
+399,9,,
+400,9,,
+401,9,,
+402,9,,
+403,9,,
+404,9,,
+405,9,,
+406,9,,
+407,9,,
+408,9,,
+409,9,,
+410,9,,
+411,9,,
+412,9,Plant Cloak,Plant Burmy
+413,9,Plant Cloak,Plant Wormadam
+414,9,,
+415,9,,
+416,9,,
+417,9,,
+418,9,,
+419,9,,
+420,9,,
+421,9,Overcast Form,Overcast Cherrim
+422,9,West Sea,Western Shellos
+423,9,West Sea,Western Gastrodon
+424,9,,
+425,9,,
+426,9,,
+427,9,,
+428,9,,
+429,9,,
+430,9,,
+431,9,,
+432,9,,
+433,9,,
+434,9,,
+435,9,,
+436,9,,
+437,9,,
+438,9,,
+439,9,,
+440,9,,
+441,9,,
+442,9,,
+443,9,,
+444,9,,
+445,9,,
+446,9,,
+447,9,,
+448,9,,
+449,9,,
+450,9,,
+451,9,,
+452,9,,
+453,9,,
+454,9,,
+455,9,,
+456,9,,
+457,9,,
+458,9,,
+459,9,,
+460,9,,
+461,9,,
+462,9,,
+463,9,,
+464,9,,
+465,9,,
+466,9,,
+467,9,,
+468,9,,
+469,9,,
+470,9,,
+471,9,,
+472,9,,
+473,9,,
+474,9,,
+475,9,,
+476,9,,
+477,9,,
+478,9,,
+479,9,,
+480,9,,
+481,9,,
+482,9,,
+483,9,,
+484,9,,
+485,9,,
+486,9,,
+487,9,Altered Forme,Altered Giratina
+488,9,,
+489,9,,
+490,9,,
+491,9,,
+492,9,Land Forme,Land Shaymin
+493,9,Normal Type,Normal Arceus
+494,9,,
+495,9,,
+496,9,,
+497,9,,
+498,9,,
+499,9,,
+500,9,,
+501,9,,
+502,9,,
+503,9,,
+504,9,,
+505,9,,
+506,9,,
+507,9,,
+508,9,,
+509,9,,
+510,9,,
+511,9,,
+512,9,,
+513,9,,
+514,9,,
+515,9,,
+516,9,,
+517,9,,
+518,9,,
+519,9,,
+520,9,,
+521,9,,
+522,9,,
+523,9,,
+524,9,,
+525,9,,
+526,9,,
+527,9,,
+528,9,,
+529,9,,
+530,9,,
+531,9,,
+532,9,,
+533,9,,
+534,9,,
+535,9,,
+536,9,,
+537,9,,
+538,9,,
+539,9,,
+540,9,,
+541,9,,
+542,9,,
+543,9,,
+544,9,,
+545,9,,
+546,9,,
+547,9,,
+548,9,,
+549,9,,
+550,9,Red-Striped Form,Red-Striped Basculin
+551,9,,
+552,9,,
+553,9,,
+554,9,,
+555,9,Standard Mode,Standard Darmanitan
+556,9,,
+557,9,,
+558,9,,
+559,9,,
+560,9,,
+561,9,,
+562,9,,
+563,9,,
+564,9,,
+565,9,,
+566,9,,
+567,9,,
+568,9,,
+569,9,,
+570,9,,
+571,9,,
+572,9,,
+573,9,,
+574,9,,
+575,9,,
+576,9,,
+577,9,,
+578,9,,
+579,9,,
+580,9,,
+581,9,,
+582,9,,
+583,9,,
+584,9,,
+585,9,Spring Form,Spring Deerling
+586,9,Spring Form,Spring Sawsbuck
+587,9,,
+588,9,,
+589,9,,
+590,9,,
+591,9,,
+592,9,,
+593,9,,
+594,9,,
+595,9,,
+596,9,,
+597,9,,
+598,9,,
+599,9,,
+600,9,,
+601,9,,
+602,9,,
+603,9,,
+604,9,,
+605,9,,
+606,9,,
+607,9,,
+608,9,,
+609,9,,
+610,9,,
+611,9,,
+612,9,,
+613,9,,
+614,9,,
+615,9,,
+616,9,,
+617,9,,
+618,9,,
+619,9,,
+620,9,,
+621,9,,
+622,9,,
+623,9,,
+624,9,,
+625,9,,
+626,9,,
+627,9,,
+628,9,,
+629,9,,
+630,9,,
+631,9,,
+632,9,,
+633,9,,
+634,9,,
+635,9,,
+636,9,,
+637,9,,
+638,9,,
+639,9,,
+640,9,,
+641,9,,
+642,9,,
+643,9,,
+644,9,,
+645,9,,
+646,9,,
+647,9,,
+648,9,Aria Forme,Aria Meloetta
+649,9,,
+650,9,Letter B,Unown B
+651,9,Letter C,Unown C
+652,9,Letter D,Unown D
+653,9,Letter E,Unown E
+654,9,Letter F,Unown F
+655,9,Letter G,Unown G
+656,9,Letter H,Unown H
+657,9,Letter I,Unown I
+658,9,Letter J,Unown J
+659,9,Letter K,Unown K
+660,9,Letter L,Unown L
+661,9,Letter M,Unown M
+662,9,Letter N,Unown N
+663,9,Letter O,Unown O
+664,9,Letter P,Unown P
+665,9,Letter Q,Unown Q
+666,9,Letter R,Unown R
+667,9,Letter S,Unown S
+668,9,Letter T,Unown T
+669,9,Letter U,Unown U
+670,9,Letter V,Unown V
+671,9,Letter W,Unown W
+672,9,Letter X,Unown X
+673,9,Letter Y,Unown Y
+674,9,Letter Z,Unown Z
+675,9,Exclamation Mark,Unown !
+676,9,Question Mark,Unown ?
+677,9,Sunny Form,Sunny Castform
+678,9,Rainy Form,Rainy Castform
+679,9,Snowy Form,Snowy Castform
+680,9,Attack Form,Attack Deoxys
+681,9,Defense Form,Defense Deoxys
+682,9,Speed Form,Speed Deoxys
+683,9,Sandy Cloak,Sandy Burmy
+684,9,Trash Cloak,Trash Burmy
+685,9,Sandy Cloak,Sandy Wormadam
+686,9,Trash Cloak,Trash Wormadam
+687,9,Sunshine Form,sunshine Cherrim
+688,9,East Sea,East Shellos
+689,9,East Sea,East Gastrodon
+690,9,Bug Type,Bug Arceus
+691,9,Dark Type,Dark Arceus
+692,9,Dragon Type,Dragon Arceus
+693,9,Electric Type,Electric Arceus
+694,9,Fighting Type,Fighting Arceus
+695,9,Fire Type,Fire Arceus
+696,9,Flying Type,Flying Arceus
+697,9,Ghost Type,Ghost Arceus
+698,9,Grass Type,Grass Arceus
+699,9,Ground Type,Ground Arceus
+700,9,Ice Type,Ice Arceus
+701,9,Poison Type,Poison Arceus
+702,9,Psychic Type,Psychic Arceus
+703,9,Rock Type,Rock Arceus
+704,9,Steel Type,Steel Arceus
+705,9,Water Type,Water Arceus
+706,9,??? Type,??? Arceus
+707,9,Heat Form,Heat Rotom
+708,9,Wash Form,Wash Rotom
+709,9,Frost Form,Frost Rotom
+710,9,Fan Form,Fan Rotom
+711,9,Mow Form,Mow Rotom
+712,9,Origin Forme,Origin Giratina
+713,9,Sky Forme,Sky Shaymin
+714,9,Spiky-eared Form,Spiky-eared Pichu
+715,9,Blue-Striped Form,Blue-Striped Basculin
+716,9,Zen Mode,Zen Darmanitan
+717,9,Summer Form,Summer Deerling
+718,9,Autumn Form,Autumn Deerling
+719,9,Winter Form,Winter Deerling
+720,9,Summer Form,Summer Sawsbuck
+721,9,Autumn Form,Autumn Sawsbuck
+722,9,Winter Form,Winter Sawsbuck
+723,9,Pirouette Forme,Pirouette Meloetta
+724,9,Douse Drive,Douse Genesect
+725,9,Shock Drive,Shock Genesect
+726,9,Burn Drive,Burn Genesect
+727,9,Chill Drive,Chill Genesect
diff --git a/pokedex/data/csv/pokemon_form_pokeathlon_stats.csv b/pokedex/data/csv/pokemon_form_pokeathlon_stats.csv
index 2ecdf0c..0ebb485 100644
--- a/pokedex/data/csv/pokemon_form_pokeathlon_stats.csv
+++ b/pokedex/data/csv/pokemon_form_pokeathlon_stats.csv
@@ -2464,308 +2464,308 @@ pokemon_form_id,pokeathlon_stat_id,minimum_stat,base_stat,maximum_stat
 493,3,1,4,5
 493,4,1,5,5
 493,5,2,4,5
-10001,1,1,2,4
-10001,2,1,2,3
-10001,3,1,2,4
-10001,4,1,2,4
-10001,5,2,2,5
-10002,1,1,2,4
-10002,2,1,2,3
-10002,3,1,2,4
-10002,4,1,2,4
-10002,5,2,2,5
-10003,1,1,2,4
-10003,2,1,2,3
-10003,3,1,2,4
-10003,4,1,2,4
-10003,5,2,2,5
-10004,1,1,2,4
-10004,2,1,2,3
-10004,3,1,2,4
-10004,4,1,2,4
-10004,5,2,2,5
-10005,1,1,2,4
-10005,2,1,2,3
-10005,3,1,2,4
-10005,4,1,2,4
-10005,5,2,2,5
-10006,1,1,2,4
-10006,2,1,2,3
-10006,3,1,2,4
-10006,4,1,2,4
-10006,5,2,2,5
-10007,1,1,2,4
-10007,2,1,2,3
-10007,3,1,2,4
-10007,4,1,2,4
-10007,5,2,2,5
-10008,1,1,2,4
-10008,2,1,2,3
-10008,3,1,2,4
-10008,4,1,2,4
-10008,5,2,2,5
-10009,1,1,2,4
-10009,2,1,2,3
-10009,3,1,2,4
-10009,4,1,2,4
-10009,5,2,2,5
-10010,1,1,2,4
-10010,2,1,2,3
-10010,3,1,2,4
-10010,4,1,2,4
-10010,5,2,2,5
-10011,1,1,2,4
-10011,2,1,2,3
-10011,3,1,2,4
-10011,4,1,2,4
-10011,5,2,2,5
-10012,1,1,2,4
-10012,2,1,2,3
-10012,3,1,2,4
-10012,4,1,2,4
-10012,5,2,2,5
-10013,1,1,2,4
-10013,2,1,2,3
-10013,3,1,2,4
-10013,4,1,2,4
-10013,5,2,2,5
-10014,1,1,2,4
-10014,2,1,2,3
-10014,3,1,2,4
-10014,4,1,2,4
-10014,5,2,2,5
-10015,1,1,2,4
-10015,2,1,2,3
-10015,3,1,2,4
-10015,4,1,2,4
-10015,5,2,2,5
-10016,1,1,2,4
-10016,2,1,2,3
-10016,3,1,2,4
-10016,4,1,2,4
-10016,5,2,2,5
-10017,1,1,2,4
-10017,2,1,2,3
-10017,3,1,2,4
-10017,4,1,2,4
-10017,5,2,2,5
-10018,1,1,2,4
-10018,2,1,2,3
-10018,3,1,2,4
-10018,4,1,2,4
-10018,5,2,2,5
-10019,1,1,2,4
-10019,2,1,2,3
-10019,3,1,2,4
-10019,4,1,2,4
-10019,5,2,2,5
-10020,1,1,2,4
-10020,2,1,2,3
-10020,3,1,2,4
-10020,4,1,2,4
-10020,5,2,2,5
-10021,1,1,2,4
-10021,2,1,2,3
-10021,3,1,2,4
-10021,4,1,2,4
-10021,5,2,2,5
-10022,1,1,2,4
-10022,2,1,2,3
-10022,3,1,2,4
-10022,4,1,2,4
-10022,5,2,2,5
-10023,1,1,2,4
-10023,2,1,2,3
-10023,3,1,2,4
-10023,4,1,2,4
-10023,5,2,2,5
-10024,1,1,2,4
-10024,2,1,2,3
-10024,3,1,2,4
-10024,4,1,2,4
-10024,5,2,2,5
-10025,1,1,2,4
-10025,2,1,2,3
-10025,3,1,2,4
-10025,4,1,2,4
-10025,5,2,2,5
-10026,1,1,2,4
-10026,2,1,2,3
-10026,3,1,2,5
-10026,4,1,2,4
-10026,5,2,2,5
-10027,1,1,2,4
-10027,2,1,2,3
-10027,3,1,2,5
-10027,4,1,2,4
-10027,5,2,2,5
-10031,1,2,4,5
-10031,2,4,5,5
-10031,3,1,4,5
-10031,4,1,2,3
-10031,5,2,3,4
-10032,1,1,3,3
-10032,2,1,3,4
-10032,3,2,4,5
-10032,4,4,5,5
-10032,5,2,2,3
-10033,1,4,5,5
-10033,2,1,2,3
-10033,3,2,4,5
-10033,4,1,3,4
-10033,5,2,4,4
-10034,1,1,1,4
-10034,2,1,1,4
-10034,3,1,1,4
-10034,4,1,1,5
-10034,5,2,2,3
-10035,1,1,1,4
-10035,2,1,1,5
-10035,3,1,1,3
-10035,4,1,1,5
-10035,5,2,2,3
-10036,1,1,2,3
-10036,2,3,4,5
-10036,3,1,2,2
-10036,4,1,4,5
-10036,5,2,2,3
-10037,1,1,1,3
-10037,2,1,3,5
-10037,3,1,2,3
-10037,4,5,5,5
-10037,5,2,2,2
-10039,1,1,1,3
-10039,2,1,1,4
-10039,3,1,1,3
-10039,4,1,3,5
-10039,5,2,2,2
-10040,1,1,1,2
-10040,2,3,4,5
-10040,3,1,3,3
-10040,4,4,5,5
-10040,5,2,2,2
-10041,1,5,5,5
-10041,2,1,4,5
-10041,3,1,4,5
-10041,4,1,4,5
-10041,5,2,5,5
-10042,1,1,4,5
-10042,2,5,5,5
-10042,3,1,5,5
-10042,4,1,4,5
-10042,5,2,4,5
-10043,1,1,3,5
-10043,2,1,5,5
-10043,3,1,5,5
-10043,4,1,5,5
-10043,5,2,5,5
-10044,1,5,5,5
-10044,2,1,4,5
-10044,3,1,5,5
-10044,4,1,4,5
-10044,5,2,4,5
-10045,1,1,4,5
-10045,2,1,5,5
-10045,3,5,5,5
-10045,4,1,4,5
-10045,5,2,4,5
-10046,1,1,4,5
-10046,2,5,5,5
-10046,3,1,4,5
-10046,4,1,5,5
-10046,5,2,4,5
-10047,1,1,5,5
-10047,2,1,4,5
-10047,3,1,4,5
-10047,4,1,4,5
-10047,5,5,5,5
-10048,1,1,4,5
-10048,2,1,4,5
-10048,3,1,5,5
-10048,4,1,4,5
-10048,5,5,5,5
-10049,1,1,4,5
-10049,2,1,4,5
-10049,3,1,4,5
-10049,4,5,5,5
-10049,5,2,5,5
-10050,1,1,4,5
-10050,2,1,5,5
-10050,3,1,4,5
-10050,4,5,5,5
-10050,5,2,4,5
-10051,1,5,5,5
-10051,2,1,5,5
-10051,3,1,4,5
-10051,4,1,4,5
-10051,5,2,4,5
-10052,1,1,4,5
-10052,2,1,4,5
-10052,3,5,5,5
-10052,4,1,5,5
-10052,5,2,4,5
-10053,1,1,5,5
-10053,2,1,4,5
-10053,3,5,5,5
-10053,4,1,4,5
-10053,5,2,4,5
-10054,1,1,4,5
-10054,2,5,5,5
-10054,3,1,4,5
-10054,4,1,5,5
-10054,5,2,4,5
-10055,1,1,4,5
-10055,2,1,4,5
-10055,3,1,5,5
-10055,4,5,5,5
-10055,5,2,4,5
-10056,1,1,5,5
-10056,2,1,4,5
-10056,3,5,5,5
-10056,4,1,4,5
-10056,5,2,4,5
-10057,1,1,5,5
-10057,2,1,5,5
-10057,3,1,5,5
-10057,4,1,5,5
-10057,5,2,5,5
-10058,1,2,3,4
-10058,2,2,4,4
-10058,3,1,3,4
-10058,4,1,3,4
-10058,5,2,4,4
-10059,1,1,3,3
-10059,2,1,3,3
-10059,3,1,3,4
-10059,4,1,4,4
-10059,5,2,2,4
-10060,1,1,3,4
-10060,2,1,2,3
-10060,3,3,4,5
-10060,4,1,3,3
-10060,5,3,3,4
-10061,1,3,3,5
-10061,2,1,3,5
-10061,3,1,3,3
-10061,4,1,2,3
-10061,5,4,5,5
-10062,1,1,3,3
-10062,2,1,3,3
-10062,3,3,5,5
-10062,4,3,3,4
-10062,5,2,2,4
-10063,1,1,3,5
-10063,2,1,3,5
-10063,3,1,3,5
-10063,4,1,3,5
-10063,5,2,3,5
-10064,1,3,3,5
-10064,2,1,4,4
-10064,3,1,3,4
-10064,4,1,3,3
-10064,5,3,5,5
-10065,1,3,5,5
-10065,2,1,1,1
-10065,3,1,3,5
-10065,4,1,1,3
-10065,5,2,3,4
+650,1,1,2,4
+650,2,1,2,3
+650,3,1,2,4
+650,4,1,2,4
+650,5,2,2,5
+651,1,1,2,4
+651,2,1,2,3
+651,3,1,2,4
+651,4,1,2,4
+651,5,2,2,5
+652,1,1,2,4
+652,2,1,2,3
+652,3,1,2,4
+652,4,1,2,4
+652,5,2,2,5
+653,1,1,2,4
+653,2,1,2,3
+653,3,1,2,4
+653,4,1,2,4
+653,5,2,2,5
+654,1,1,2,4
+654,2,1,2,3
+654,3,1,2,4
+654,4,1,2,4
+654,5,2,2,5
+655,1,1,2,4
+655,2,1,2,3
+655,3,1,2,4
+655,4,1,2,4
+655,5,2,2,5
+656,1,1,2,4
+656,2,1,2,3
+656,3,1,2,4
+656,4,1,2,4
+656,5,2,2,5
+657,1,1,2,4
+657,2,1,2,3
+657,3,1,2,4
+657,4,1,2,4
+657,5,2,2,5
+658,1,1,2,4
+658,2,1,2,3
+658,3,1,2,4
+658,4,1,2,4
+658,5,2,2,5
+659,1,1,2,4
+659,2,1,2,3
+659,3,1,2,4
+659,4,1,2,4
+659,5,2,2,5
+660,1,1,2,4
+660,2,1,2,3
+660,3,1,2,4
+660,4,1,2,4
+660,5,2,2,5
+661,1,1,2,4
+661,2,1,2,3
+661,3,1,2,4
+661,4,1,2,4
+661,5,2,2,5
+662,1,1,2,4
+662,2,1,2,3
+662,3,1,2,4
+662,4,1,2,4
+662,5,2,2,5
+663,1,1,2,4
+663,2,1,2,3
+663,3,1,2,4
+663,4,1,2,4
+663,5,2,2,5
+664,1,1,2,4
+664,2,1,2,3
+664,3,1,2,4
+664,4,1,2,4
+664,5,2,2,5
+665,1,1,2,4
+665,2,1,2,3
+665,3,1,2,4
+665,4,1,2,4
+665,5,2,2,5
+666,1,1,2,4
+666,2,1,2,3
+666,3,1,2,4
+666,4,1,2,4
+666,5,2,2,5
+667,1,1,2,4
+667,2,1,2,3
+667,3,1,2,4
+667,4,1,2,4
+667,5,2,2,5
+668,1,1,2,4
+668,2,1,2,3
+668,3,1,2,4
+668,4,1,2,4
+668,5,2,2,5
+669,1,1,2,4
+669,2,1,2,3
+669,3,1,2,4
+669,4,1,2,4
+669,5,2,2,5
+670,1,1,2,4
+670,2,1,2,3
+670,3,1,2,4
+670,4,1,2,4
+670,5,2,2,5
+671,1,1,2,4
+671,2,1,2,3
+671,3,1,2,4
+671,4,1,2,4
+671,5,2,2,5
+672,1,1,2,4
+672,2,1,2,3
+672,3,1,2,4
+672,4,1,2,4
+672,5,2,2,5
+673,1,1,2,4
+673,2,1,2,3
+673,3,1,2,4
+673,4,1,2,4
+673,5,2,2,5
+674,1,1,2,4
+674,2,1,2,3
+674,3,1,2,4
+674,4,1,2,4
+674,5,2,2,5
+675,1,1,2,4
+675,2,1,2,3
+675,3,1,2,5
+675,4,1,2,4
+675,5,2,2,5
+676,1,1,2,4
+676,2,1,2,3
+676,3,1,2,5
+676,4,1,2,4
+676,5,2,2,5
+680,1,2,4,5
+680,2,4,5,5
+680,3,1,4,5
+680,4,1,2,3
+680,5,2,3,4
+681,1,1,3,3
+681,2,1,3,4
+681,3,2,4,5
+681,4,4,5,5
+681,5,2,2,3
+682,1,4,5,5
+682,2,1,2,3
+682,3,2,4,5
+682,4,1,3,4
+682,5,2,4,4
+683,1,1,1,4
+683,2,1,1,4
+683,3,1,1,4
+683,4,1,1,5
+683,5,2,2,3
+684,1,1,1,4
+684,2,1,1,5
+684,3,1,1,3
+684,4,1,1,5
+684,5,2,2,3
+685,1,1,2,3
+685,2,3,4,5
+685,3,1,2,2
+685,4,1,4,5
+685,5,2,2,3
+686,1,1,1,3
+686,2,1,3,5
+686,3,1,2,3
+686,4,5,5,5
+686,5,2,2,2
+688,1,1,1,3
+688,2,1,1,4
+688,3,1,1,3
+688,4,1,3,5
+688,5,2,2,2
+689,1,1,1,2
+689,2,3,4,5
+689,3,1,3,3
+689,4,4,5,5
+689,5,2,2,2
+690,1,5,5,5
+690,2,1,4,5
+690,3,1,4,5
+690,4,1,4,5
+690,5,2,5,5
+691,1,1,4,5
+691,2,5,5,5
+691,3,1,5,5
+691,4,1,4,5
+691,5,2,4,5
+692,1,1,3,5
+692,2,1,5,5
+692,3,1,5,5
+692,4,1,5,5
+692,5,2,5,5
+693,1,5,5,5
+693,2,1,4,5
+693,3,1,5,5
+693,4,1,4,5
+693,5,2,4,5
+694,1,1,4,5
+694,2,1,5,5
+694,3,5,5,5
+694,4,1,4,5
+694,5,2,4,5
+695,1,1,4,5
+695,2,5,5,5
+695,3,1,4,5
+695,4,1,5,5
+695,5,2,4,5
+696,1,1,5,5
+696,2,1,4,5
+696,3,1,4,5
+696,4,1,4,5
+696,5,5,5,5
+697,1,1,4,5
+697,2,1,4,5
+697,3,1,5,5
+697,4,1,4,5
+697,5,5,5,5
+698,1,1,4,5
+698,2,1,4,5
+698,3,1,4,5
+698,4,5,5,5
+698,5,2,5,5
+699,1,1,4,5
+699,2,1,5,5
+699,3,1,4,5
+699,4,5,5,5
+699,5,2,4,5
+700,1,5,5,5
+700,2,1,5,5
+700,3,1,4,5
+700,4,1,4,5
+700,5,2,4,5
+701,1,1,4,5
+701,2,1,4,5
+701,3,5,5,5
+701,4,1,5,5
+701,5,2,4,5
+702,1,1,5,5
+702,2,1,4,5
+702,3,5,5,5
+702,4,1,4,5
+702,5,2,4,5
+703,1,1,4,5
+703,2,5,5,5
+703,3,1,4,5
+703,4,1,5,5
+703,5,2,4,5
+704,1,1,4,5
+704,2,1,4,5
+704,3,1,5,5
+704,4,5,5,5
+704,5,2,4,5
+705,1,1,5,5
+705,2,1,4,5
+705,3,5,5,5
+705,4,1,4,5
+705,5,2,4,5
+706,1,1,5,5
+706,2,1,5,5
+706,3,1,5,5
+706,4,1,5,5
+706,5,2,5,5
+707,1,2,3,4
+707,2,2,4,4
+707,3,1,3,4
+707,4,1,3,4
+707,5,2,4,4
+708,1,1,3,3
+708,2,1,3,3
+708,3,1,3,4
+708,4,1,4,4
+708,5,2,2,4
+709,1,1,3,4
+709,2,1,2,3
+709,3,3,4,5
+709,4,1,3,3
+709,5,3,3,4
+710,1,3,3,5
+710,2,1,3,5
+710,3,1,3,3
+710,4,1,2,3
+710,5,4,5,5
+711,1,1,3,3
+711,2,1,3,3
+711,3,3,5,5
+711,4,3,3,4
+711,5,2,2,4
+712,1,1,3,5
+712,2,1,3,5
+712,3,1,3,5
+712,4,1,3,5
+712,5,2,3,5
+713,1,3,3,5
+713,2,1,4,4
+713,3,1,3,4
+713,4,1,3,3
+713,5,3,5,5
+714,1,3,5,5
+714,2,1,1,1
+714,3,1,3,5
+714,4,1,1,3
+714,5,2,3,4
diff --git a/pokedex/data/csv/pokemon_game_indices.csv b/pokedex/data/csv/pokemon_game_indices.csv
index 3c4032a..c91a7a6 100644
--- a/pokedex/data/csv/pokemon_game_indices.csv
+++ b/pokedex/data/csv/pokemon_game_indices.csv
@@ -1929,33 +1929,33 @@ pokemon_id,generation_id,game_index
 647,5,647
 648,5,648
 649,5,649
-10001,4,496
-10001,5,650
-10002,4,497
-10002,5,651
-10003,4,498
-10003,5,652
-10004,4,499
-10004,5,653
-10005,4,500
-10005,5,654
-10006,4,502
-10006,5,655
-10007,4,501
-10007,5,656
-10008,4,503
-10008,5,657
-10009,4,504
-10009,5,658
-10010,4,505
-10010,5,659
-10011,4,506
-10011,5,660
-10012,4,507
-10012,5,661
-10013,5,662
-10014,5,663
-10015,5,664
-10016,5,665
-10017,5,666
-10018,5,667
+650,4,496
+650,5,650
+651,4,497
+651,5,651
+652,4,498
+652,5,652
+653,4,499
+653,5,653
+654,4,500
+654,5,654
+655,4,502
+655,5,655
+656,4,501
+656,5,656
+657,4,503
+657,5,657
+658,4,504
+658,5,658
+659,4,505
+659,5,659
+660,4,506
+660,5,660
+661,4,507
+661,5,661
+662,5,662
+663,5,663
+664,5,664
+665,5,665
+666,5,666
+667,5,667
diff --git a/pokedex/data/csv/pokemon_items.csv b/pokedex/data/csv/pokemon_items.csv
index 17fbec1..f1e22a9 100644
--- a/pokedex/data/csv/pokemon_items.csv
+++ b/pokedex/data/csv/pokemon_items.csv
@@ -2343,34 +2343,34 @@ pokemon_id,version_id,item_id,rarity
 637,18,199,100
 648,17,91,100
 648,18,91,100
-10004,12,199,5
-10004,13,199,5
-10004,14,199,5
-10004,15,199,5
-10004,16,199,5
-10004,17,199,5
-10004,18,199,5
-10005,12,199,5
-10005,13,199,5
-10005,14,199,5
-10005,15,199,5
-10005,16,199,5
-10005,17,199,5
-10005,18,199,5
-10006,14,134,100
-10006,15,134,100
-10006,16,134,100
-10006,17,134,100
-10006,18,134,100
-10013,17,220,100
-10013,18,220,100
-10014,17,220,100
-10014,18,220,100
-10015,17,220,100
-10015,18,220,100
-10016,17,204,5
-10016,18,204,5
-10017,17,129,50
-10017,18,129,50
-10018,17,91,100
-10018,18,91,100
+653,12,199,5
+653,13,199,5
+653,14,199,5
+653,15,199,5
+653,16,199,5
+653,17,199,5
+653,18,199,5
+654,12,199,5
+654,13,199,5
+654,14,199,5
+654,15,199,5
+654,16,199,5
+654,17,199,5
+654,18,199,5
+655,14,134,100
+655,15,134,100
+655,16,134,100
+655,17,134,100
+655,18,134,100
+662,17,220,100
+662,18,220,100
+663,17,220,100
+663,18,220,100
+664,17,220,100
+664,18,220,100
+665,17,204,5
+665,18,204,5
+666,17,129,50
+666,18,129,50
+667,17,91,100
+667,18,91,100
diff --git a/pokedex/data/csv/pokemon_moves.csv b/pokedex/data/csv/pokemon_moves.csv
index 0df8278..8d94a00 100644
--- a/pokedex/data/csv/pokemon_moves.csv
+++ b/pokedex/data/csv/pokemon_moves.csv
@@ -195672,2837 +195672,2837 @@ pokemon_id,version_group_id,move_id,pokemon_move_method_id,level,order
 649,11,496,4,0,
 649,11,522,4,0,
 649,11,546,1,1,1
-10001,7,15,4,0,
-10001,7,35,1,1,2
-10001,7,43,1,1,1
-10001,7,58,4,0,
-10001,7,63,1,50,
-10001,7,63,4,0,
-10001,7,70,4,0,
-10001,7,76,4,0,
-10001,7,85,4,0,
-10001,7,87,4,0,
-10001,7,92,4,0,
-10001,7,94,1,25,
-10001,7,94,4,0,
-10001,7,100,1,10,
-10001,7,101,1,5,
-10001,7,104,4,0,
-10001,7,113,4,0,
-10001,7,115,4,0,
-10001,7,148,4,0,
-10001,7,156,4,0,
-10001,7,182,4,0,
-10001,7,192,1,40,
-10001,7,216,4,0,
-10001,7,218,4,0,
-10001,7,219,4,0,
-10001,7,228,1,20,
-10001,7,237,4,0,
-10001,7,240,4,0,
-10001,7,241,4,0,
-10001,7,247,4,0,
-10001,7,249,4,0,
-10001,7,259,4,0,
-10001,7,263,4,0,
-10001,7,264,4,0,
-10001,7,269,1,15,
-10001,7,269,4,0,
-10001,7,276,1,30,
-10001,7,280,4,0,
-10001,7,285,4,0,
-10001,7,289,4,0,
-10001,7,290,4,0,
-10001,7,317,4,0,
-10001,7,322,1,35,
-10001,7,332,4,0,
-10001,7,347,4,0,
-10001,7,351,4,0,
-10001,7,352,4,0,
-10001,7,354,1,45,
-10001,8,15,4,0,
-10001,8,35,1,1,2
-10001,8,43,1,1,1
-10001,8,58,4,0,
-10001,8,63,1,97,
-10001,8,63,4,0,
-10001,8,70,4,0,
-10001,8,76,4,0,
-10001,8,85,4,0,
-10001,8,86,4,0,
-10001,8,87,4,0,
-10001,8,92,4,0,
-10001,8,94,1,41,
-10001,8,94,4,0,
-10001,8,100,1,17,
-10001,8,101,1,9,
-10001,8,104,4,0,
-10001,8,113,4,0,
-10001,8,115,4,0,
-10001,8,138,4,0,
-10001,8,148,4,0,
-10001,8,156,4,0,
-10001,8,157,4,0,
-10001,8,164,4,0,
-10001,8,182,4,0,
-10001,8,192,1,81,
-10001,8,203,4,0,
-10001,8,207,4,0,
-10001,8,214,4,0,
-10001,8,216,4,0,
-10001,8,218,4,0,
-10001,8,219,4,0,
-10001,8,228,1,33,
-10001,8,237,4,0,
-10001,8,240,4,0,
-10001,8,241,4,0,
-10001,8,244,4,0,
-10001,8,247,4,0,
-10001,8,249,4,0,
-10001,8,259,4,0,
-10001,8,263,4,0,
-10001,8,264,4,0,
-10001,8,269,1,25,
-10001,8,269,4,0,
-10001,8,276,1,49,
-10001,8,278,4,0,
-10001,8,280,4,0,
-10001,8,285,4,0,
-10001,8,289,4,0,
-10001,8,290,4,0,
-10001,8,317,4,0,
-10001,8,322,1,73,
-10001,8,332,4,0,
-10001,8,347,4,0,
-10001,8,351,4,0,
-10001,8,352,4,0,
-10001,8,354,1,89,
-10001,8,363,4,0,
-10001,8,374,4,0,
-10001,8,375,1,57,
-10001,8,398,4,0,
-10001,8,409,4,0,
-10001,8,411,4,0,
-10001,8,412,4,0,
-10001,8,416,4,0,
-10001,8,419,4,0,
-10001,8,428,1,65,
-10001,8,430,4,0,
-10001,8,433,4,0,
-10001,8,446,4,0,
-10001,8,447,4,0,
-10001,8,451,4,0,
-10001,9,7,3,0,
-10001,9,8,3,0,
-10001,9,9,3,0,
-10001,9,15,4,0,
-10001,9,35,1,1,2
-10001,9,43,1,1,1
-10001,9,58,4,0,
-10001,9,63,1,97,
-10001,9,63,4,0,
-10001,9,70,4,0,
-10001,9,76,4,0,
-10001,9,85,4,0,
-10001,9,86,4,0,
-10001,9,87,4,0,
-10001,9,92,4,0,
-10001,9,94,1,41,
-10001,9,94,4,0,
-10001,9,100,1,17,
-10001,9,101,1,9,
-10001,9,104,4,0,
-10001,9,113,4,0,
-10001,9,115,4,0,
-10001,9,129,3,0,
-10001,9,138,4,0,
-10001,9,148,4,0,
-10001,9,156,4,0,
-10001,9,157,4,0,
-10001,9,164,4,0,
-10001,9,173,3,0,
-10001,9,182,4,0,
-10001,9,189,3,0,
-10001,9,192,1,81,
-10001,9,196,3,0,
-10001,9,203,4,0,
-10001,9,207,4,0,
-10001,9,214,4,0,
-10001,9,216,4,0,
-10001,9,218,4,0,
-10001,9,219,4,0,
-10001,9,228,1,33,
-10001,9,237,4,0,
-10001,9,240,4,0,
-10001,9,241,4,0,
-10001,9,244,4,0,
-10001,9,247,4,0,
-10001,9,249,4,0,
-10001,9,259,4,0,
-10001,9,263,4,0,
-10001,9,264,4,0,
-10001,9,269,1,25,
-10001,9,269,4,0,
-10001,9,271,3,0,
-10001,9,276,1,49,
-10001,9,278,4,0,
-10001,9,280,4,0,
-10001,9,282,3,0,
-10001,9,285,4,0,
-10001,9,289,4,0,
-10001,9,290,4,0,
-10001,9,317,4,0,
-10001,9,322,1,73,
-10001,9,324,3,0,
-10001,9,332,4,0,
-10001,9,347,4,0,
-10001,9,351,4,0,
-10001,9,352,4,0,
-10001,9,354,1,89,
-10001,9,363,4,0,
-10001,9,374,4,0,
-10001,9,375,1,57,
-10001,9,398,4,0,
-10001,9,409,4,0,
-10001,9,411,4,0,
-10001,9,412,4,0,
-10001,9,416,4,0,
-10001,9,419,4,0,
-10001,9,428,1,65,
-10001,9,428,3,0,
-10001,9,430,4,0,
-10001,9,433,4,0,
-10001,9,446,4,0,
-10001,9,447,4,0,
-10001,9,451,4,0,
-10001,10,7,3,0,
-10001,10,8,3,0,
-10001,10,9,3,0,
-10001,10,15,4,0,
-10001,10,29,3,0,
-10001,10,35,1,1,2
-10001,10,43,1,1,1
-10001,10,58,4,0,
-10001,10,63,1,97,
-10001,10,63,4,0,
-10001,10,67,3,0,
-10001,10,70,4,0,
-10001,10,76,4,0,
-10001,10,85,4,0,
-10001,10,86,4,0,
-10001,10,87,4,0,
-10001,10,92,4,0,
-10001,10,94,1,41,
-10001,10,94,4,0,
-10001,10,100,1,17,
-10001,10,101,1,9,
-10001,10,104,4,0,
-10001,10,113,4,0,
-10001,10,115,4,0,
-10001,10,129,3,0,
-10001,10,138,4,0,
-10001,10,148,4,0,
-10001,10,156,4,0,
-10001,10,157,4,0,
-10001,10,164,4,0,
-10001,10,173,3,0,
-10001,10,182,4,0,
-10001,10,189,3,0,
-10001,10,192,1,81,
-10001,10,196,3,0,
-10001,10,203,4,0,
-10001,10,207,4,0,
-10001,10,214,4,0,
-10001,10,216,4,0,
-10001,10,218,4,0,
-10001,10,219,4,0,
-10001,10,228,1,33,
-10001,10,237,4,0,
-10001,10,240,4,0,
-10001,10,241,4,0,
-10001,10,244,4,0,
-10001,10,247,4,0,
-10001,10,249,4,0,
-10001,10,259,4,0,
-10001,10,263,4,0,
-10001,10,264,4,0,
-10001,10,269,1,25,
-10001,10,269,4,0,
-10001,10,271,3,0,
-10001,10,272,3,0,
-10001,10,276,1,49,
-10001,10,278,4,0,
-10001,10,280,4,0,
-10001,10,282,3,0,
-10001,10,285,4,0,
-10001,10,289,4,0,
-10001,10,290,4,0,
-10001,10,317,4,0,
-10001,10,322,1,73,
-10001,10,324,3,0,
-10001,10,332,4,0,
-10001,10,347,4,0,
-10001,10,351,4,0,
-10001,10,352,4,0,
-10001,10,354,1,89,
-10001,10,356,3,0,
-10001,10,363,4,0,
-10001,10,374,4,0,
-10001,10,375,1,57,
-10001,10,398,4,0,
-10001,10,409,4,0,
-10001,10,411,4,0,
-10001,10,412,4,0,
-10001,10,416,4,0,
-10001,10,419,4,0,
-10001,10,428,1,65,
-10001,10,428,3,0,
-10001,10,430,4,0,
-10001,10,433,4,0,
-10001,10,446,4,0,
-10001,10,447,4,0,
-10001,10,451,4,0,
-10001,11,15,4,0,
-10001,11,35,1,1,2
-10001,11,43,1,1,1
-10001,11,58,4,0,
-10001,11,63,1,97,
-10001,11,63,4,0,
-10001,11,70,4,0,
-10001,11,76,4,0,
-10001,11,85,4,0,
-10001,11,86,4,0,
-10001,11,87,4,0,
-10001,11,92,4,0,
-10001,11,94,1,41,
-10001,11,94,4,0,
-10001,11,100,1,17,
-10001,11,101,1,9,
-10001,11,104,4,0,
-10001,11,113,4,0,
-10001,11,115,4,0,
-10001,11,138,4,0,
-10001,11,148,4,0,
-10001,11,156,4,0,
-10001,11,157,4,0,
-10001,11,164,4,0,
-10001,11,182,4,0,
-10001,11,192,1,81,
-10001,11,207,4,0,
-10001,11,216,4,0,
-10001,11,218,4,0,
-10001,11,219,4,0,
-10001,11,228,1,33,
-10001,11,237,4,0,
-10001,11,240,4,0,
-10001,11,241,4,0,
-10001,11,244,4,0,
-10001,11,247,4,0,
-10001,11,249,4,0,
-10001,11,259,4,0,
-10001,11,263,4,0,
-10001,11,269,1,25,
-10001,11,269,4,0,
-10001,11,276,1,49,
-10001,11,280,4,0,
-10001,11,317,4,0,
-10001,11,322,1,73,
-10001,11,332,4,0,
-10001,11,347,4,0,
-10001,11,354,1,89,
-10001,11,374,4,0,
-10001,11,375,1,57,
-10001,11,398,4,0,
-10001,11,411,4,0,
-10001,11,412,4,0,
-10001,11,416,4,0,
-10001,11,428,1,65,
-10001,11,430,4,0,
-10001,11,433,4,0,
-10001,11,447,4,0,
-10001,11,451,4,0,
-10001,11,473,4,0,
-10001,11,477,4,0,
-10001,11,490,4,0,
-10001,11,496,4,0,
-10001,11,502,4,0,
-10002,7,15,4,0,
-10002,7,35,1,1,2
-10002,7,43,1,1,1
-10002,7,58,4,0,
-10002,7,63,4,0,
-10002,7,68,1,50,1
-10002,7,70,4,0,
-10002,7,76,4,0,
-10002,7,85,4,0,
-10002,7,87,4,0,
-10002,7,92,4,0,
-10002,7,94,1,25,
-10002,7,94,4,0,
-10002,7,100,1,10,
-10002,7,101,1,5,
-10002,7,104,4,0,
-10002,7,105,1,40,
-10002,7,113,4,0,
-10002,7,115,4,0,
-10002,7,133,1,35,2
-10002,7,148,4,0,
-10002,7,156,4,0,
-10002,7,182,4,0,
-10002,7,191,1,20,
-10002,7,216,4,0,
-10002,7,218,4,0,
-10002,7,219,4,0,
-10002,7,237,4,0,
-10002,7,240,4,0,
-10002,7,241,4,0,
-10002,7,243,1,50,2
-10002,7,247,4,0,
-10002,7,249,4,0,
-10002,7,259,4,0,
-10002,7,263,4,0,
-10002,7,264,4,0,
-10002,7,269,4,0,
-10002,7,280,4,0,
-10002,7,282,1,15,
-10002,7,285,4,0,
-10002,7,289,1,30,
-10002,7,289,4,0,
-10002,7,290,4,0,
-10002,7,317,4,0,
-10002,7,332,4,0,
-10002,7,334,1,35,1
-10002,7,347,4,0,
-10002,7,351,4,0,
-10002,7,352,4,0,
-10002,7,354,1,45,
-10002,8,15,4,0,
-10002,8,35,1,1,2
-10002,8,43,1,1,1
-10002,8,58,4,0,
-10002,8,63,4,0,
-10002,8,68,1,97,1
-10002,8,70,4,0,
-10002,8,76,4,0,
-10002,8,85,4,0,
-10002,8,86,4,0,
-10002,8,87,4,0,
-10002,8,92,4,0,
-10002,8,94,1,41,
-10002,8,94,4,0,
-10002,8,100,1,17,
-10002,8,101,1,9,
-10002,8,104,4,0,
-10002,8,105,1,81,
-10002,8,113,4,0,
-10002,8,115,4,0,
-10002,8,133,1,73,2
-10002,8,138,4,0,
-10002,8,148,4,0,
-10002,8,156,4,0,
-10002,8,157,4,0,
-10002,8,164,4,0,
-10002,8,182,4,0,
-10002,8,191,1,33,
-10002,8,203,4,0,
-10002,8,207,4,0,
-10002,8,214,4,0,
-10002,8,216,4,0,
-10002,8,218,4,0,
-10002,8,219,4,0,
-10002,8,237,4,0,
-10002,8,240,4,0,
-10002,8,241,4,0,
-10002,8,243,1,97,2
-10002,8,244,4,0,
-10002,8,247,4,0,
-10002,8,249,4,0,
-10002,8,259,4,0,
-10002,8,263,4,0,
-10002,8,264,4,0,
-10002,8,269,4,0,
-10002,8,278,4,0,
-10002,8,280,4,0,
-10002,8,282,1,25,
-10002,8,285,4,0,
-10002,8,289,1,49,
-10002,8,289,4,0,
-10002,8,290,4,0,
-10002,8,317,4,0,
-10002,8,332,4,0,
-10002,8,334,1,73,1
-10002,8,347,4,0,
-10002,8,351,4,0,
-10002,8,352,4,0,
-10002,8,354,1,89,
-10002,8,363,4,0,
-10002,8,374,4,0,
-10002,8,375,1,57,
-10002,8,398,4,0,
-10002,8,409,4,0,
-10002,8,411,4,0,
-10002,8,412,4,0,
-10002,8,416,4,0,
-10002,8,419,4,0,
-10002,8,428,1,65,
-10002,8,430,4,0,
-10002,8,433,4,0,
-10002,8,446,4,0,
-10002,8,447,4,0,
-10002,8,451,4,0,
-10002,9,7,3,0,
-10002,9,8,3,0,
-10002,9,9,3,0,
-10002,9,15,4,0,
-10002,9,35,1,1,2
-10002,9,43,1,1,1
-10002,9,58,4,0,
-10002,9,63,4,0,
-10002,9,68,1,97,1
-10002,9,70,4,0,
-10002,9,76,4,0,
-10002,9,85,4,0,
-10002,9,86,4,0,
-10002,9,87,4,0,
-10002,9,92,4,0,
-10002,9,94,1,41,
-10002,9,94,4,0,
-10002,9,100,1,17,
-10002,9,101,1,9,
-10002,9,104,4,0,
-10002,9,105,1,81,
-10002,9,113,4,0,
-10002,9,115,4,0,
-10002,9,129,3,0,
-10002,9,133,1,73,2
-10002,9,138,4,0,
-10002,9,148,4,0,
-10002,9,156,4,0,
-10002,9,157,4,0,
-10002,9,164,4,0,
-10002,9,173,3,0,
-10002,9,182,4,0,
-10002,9,189,3,0,
-10002,9,191,1,33,
-10002,9,196,3,0,
-10002,9,203,4,0,
-10002,9,207,4,0,
-10002,9,214,4,0,
-10002,9,216,4,0,
-10002,9,218,4,0,
-10002,9,219,4,0,
-10002,9,237,4,0,
-10002,9,240,4,0,
-10002,9,241,4,0,
-10002,9,243,1,97,2
-10002,9,244,4,0,
-10002,9,247,4,0,
-10002,9,249,4,0,
-10002,9,259,4,0,
-10002,9,263,4,0,
-10002,9,264,4,0,
-10002,9,269,4,0,
-10002,9,271,3,0,
-10002,9,278,4,0,
-10002,9,280,4,0,
-10002,9,282,1,25,
-10002,9,282,3,0,
-10002,9,285,4,0,
-10002,9,289,1,49,
-10002,9,289,4,0,
-10002,9,290,4,0,
-10002,9,317,4,0,
-10002,9,324,3,0,
-10002,9,332,4,0,
-10002,9,334,1,73,1
-10002,9,347,4,0,
-10002,9,351,4,0,
-10002,9,352,4,0,
-10002,9,354,1,89,
-10002,9,363,4,0,
-10002,9,374,4,0,
-10002,9,375,1,57,
-10002,9,398,4,0,
-10002,9,409,4,0,
-10002,9,411,4,0,
-10002,9,412,4,0,
-10002,9,416,4,0,
-10002,9,419,4,0,
-10002,9,428,1,65,
-10002,9,428,3,0,
-10002,9,430,4,0,
-10002,9,433,4,0,
-10002,9,446,4,0,
-10002,9,447,4,0,
-10002,9,451,4,0,
-10002,10,7,3,0,
-10002,10,8,3,0,
-10002,10,9,3,0,
-10002,10,15,4,0,
-10002,10,29,3,0,
-10002,10,35,1,1,2
-10002,10,43,1,1,1
-10002,10,58,4,0,
-10002,10,63,4,0,
-10002,10,67,3,0,
-10002,10,68,1,97,1
-10002,10,70,4,0,
-10002,10,76,4,0,
-10002,10,85,4,0,
-10002,10,86,4,0,
-10002,10,87,4,0,
-10002,10,92,4,0,
-10002,10,94,1,41,
-10002,10,94,4,0,
-10002,10,100,1,17,
-10002,10,101,1,9,
-10002,10,104,4,0,
-10002,10,105,1,81,
-10002,10,113,4,0,
-10002,10,115,4,0,
-10002,10,129,3,0,
-10002,10,133,1,73,2
-10002,10,138,4,0,
-10002,10,148,4,0,
-10002,10,156,4,0,
-10002,10,157,4,0,
-10002,10,164,4,0,
-10002,10,173,3,0,
-10002,10,182,4,0,
-10002,10,189,3,0,
-10002,10,191,1,33,
-10002,10,196,3,0,
-10002,10,203,4,0,
-10002,10,207,4,0,
-10002,10,214,4,0,
-10002,10,216,4,0,
-10002,10,218,4,0,
-10002,10,219,4,0,
-10002,10,237,4,0,
-10002,10,240,4,0,
-10002,10,241,4,0,
-10002,10,243,1,97,2
-10002,10,244,4,0,
-10002,10,247,4,0,
-10002,10,249,4,0,
-10002,10,259,4,0,
-10002,10,263,4,0,
-10002,10,264,4,0,
-10002,10,269,4,0,
-10002,10,271,3,0,
-10002,10,272,3,0,
-10002,10,278,4,0,
-10002,10,280,4,0,
-10002,10,282,1,25,
-10002,10,282,3,0,
-10002,10,285,4,0,
-10002,10,289,1,49,
-10002,10,289,4,0,
-10002,10,290,4,0,
-10002,10,317,4,0,
-10002,10,324,3,0,
-10002,10,332,4,0,
-10002,10,334,1,73,1
-10002,10,347,4,0,
-10002,10,351,4,0,
-10002,10,352,4,0,
-10002,10,354,1,89,
-10002,10,356,3,0,
-10002,10,363,4,0,
-10002,10,374,4,0,
-10002,10,375,1,57,
-10002,10,398,4,0,
-10002,10,409,4,0,
-10002,10,411,4,0,
-10002,10,412,4,0,
-10002,10,416,4,0,
-10002,10,419,4,0,
-10002,10,428,1,65,
-10002,10,428,3,0,
-10002,10,430,4,0,
-10002,10,433,4,0,
-10002,10,446,4,0,
-10002,10,447,4,0,
-10002,10,451,4,0,
-10002,11,15,4,0,
-10002,11,35,1,1,2
-10002,11,43,1,1,1
-10002,11,58,4,0,
-10002,11,63,4,0,
-10002,11,68,1,97,1
-10002,11,70,4,0,
-10002,11,76,4,0,
-10002,11,85,4,0,
-10002,11,86,4,0,
-10002,11,87,4,0,
-10002,11,92,4,0,
-10002,11,94,1,41,
-10002,11,94,4,0,
-10002,11,100,1,17,
-10002,11,101,1,9,
-10002,11,104,4,0,
-10002,11,105,1,81,
-10002,11,113,4,0,
-10002,11,115,4,0,
-10002,11,133,1,73,2
-10002,11,138,4,0,
-10002,11,148,4,0,
-10002,11,156,4,0,
-10002,11,157,4,0,
-10002,11,164,4,0,
-10002,11,182,4,0,
-10002,11,191,1,33,
-10002,11,207,4,0,
-10002,11,216,4,0,
-10002,11,218,4,0,
-10002,11,219,4,0,
-10002,11,237,4,0,
-10002,11,240,4,0,
-10002,11,241,4,0,
-10002,11,243,1,97,2
-10002,11,244,4,0,
-10002,11,247,4,0,
-10002,11,249,4,0,
-10002,11,259,4,0,
-10002,11,263,4,0,
-10002,11,269,4,0,
-10002,11,280,4,0,
-10002,11,282,1,25,
-10002,11,289,1,49,
-10002,11,317,4,0,
-10002,11,332,4,0,
-10002,11,334,1,73,1
-10002,11,347,4,0,
-10002,11,354,1,89,
-10002,11,374,4,0,
-10002,11,375,1,57,
-10002,11,398,4,0,
-10002,11,411,4,0,
-10002,11,412,4,0,
-10002,11,416,4,0,
-10002,11,428,1,65,
-10002,11,430,4,0,
-10002,11,433,4,0,
-10002,11,447,4,0,
-10002,11,451,4,0,
-10002,11,473,4,0,
-10002,11,477,4,0,
-10002,11,490,4,0,
-10002,11,496,4,0,
-10002,11,502,4,0,
-10003,6,15,4,0,
-10003,6,35,1,1,2
-10003,6,43,1,1,1
-10003,6,58,4,0,
-10003,6,63,4,0,
-10003,6,70,4,0,
-10003,6,76,4,0,
-10003,6,85,4,0,
-10003,6,87,4,0,
-10003,6,92,4,0,
-10003,6,94,1,25,
-10003,6,94,4,0,
-10003,6,97,1,35,
-10003,6,101,1,5,
-10003,6,104,1,10,
-10003,6,104,4,0,
-10003,6,105,1,40,
-10003,6,113,4,0,
-10003,6,115,4,0,
-10003,6,129,1,30,
-10003,6,148,4,0,
-10003,6,156,4,0,
-10003,6,182,4,0,
-10003,6,216,4,0,
-10003,6,218,4,0,
-10003,6,219,4,0,
-10003,6,228,1,20,
-10003,6,237,4,0,
-10003,6,240,4,0,
-10003,6,241,4,0,
-10003,6,245,1,50,
-10003,6,247,4,0,
-10003,6,249,4,0,
-10003,6,259,4,0,
-10003,6,263,4,0,
-10003,6,264,4,0,
-10003,6,269,4,0,
-10003,6,280,4,0,
-10003,6,282,1,15,
-10003,6,285,4,0,
-10003,6,289,4,0,
-10003,6,290,4,0,
-10003,6,317,4,0,
-10003,6,332,4,0,
-10003,6,347,4,0,
-10003,6,351,4,0,
-10003,6,352,4,0,
-10003,6,354,1,45,
-10003,8,15,4,0,
-10003,8,35,1,1,2
-10003,8,43,1,1,1
-10003,8,58,4,0,
-10003,8,63,4,0,
-10003,8,70,4,0,
-10003,8,76,4,0,
-10003,8,85,4,0,
-10003,8,86,4,0,
-10003,8,87,4,0,
-10003,8,92,4,0,
-10003,8,94,1,41,
-10003,8,94,4,0,
-10003,8,97,1,73,
-10003,8,101,1,9,
-10003,8,104,1,17,
-10003,8,104,4,0,
-10003,8,105,1,81,
-10003,8,113,4,0,
-10003,8,115,4,0,
-10003,8,129,1,49,
-10003,8,138,4,0,
-10003,8,148,4,0,
-10003,8,156,4,0,
-10003,8,157,4,0,
-10003,8,164,4,0,
-10003,8,182,4,0,
-10003,8,203,4,0,
-10003,8,207,4,0,
-10003,8,214,4,0,
-10003,8,216,4,0,
-10003,8,218,4,0,
-10003,8,219,4,0,
-10003,8,228,1,33,
-10003,8,237,4,0,
-10003,8,240,4,0,
-10003,8,241,4,0,
-10003,8,244,4,0,
-10003,8,245,1,97,
-10003,8,247,4,0,
-10003,8,249,4,0,
-10003,8,259,4,0,
-10003,8,263,4,0,
-10003,8,264,4,0,
-10003,8,269,4,0,
-10003,8,278,4,0,
-10003,8,280,4,0,
-10003,8,282,1,25,
-10003,8,285,4,0,
-10003,8,289,4,0,
-10003,8,290,4,0,
-10003,8,317,4,0,
-10003,8,332,4,0,
-10003,8,347,4,0,
-10003,8,351,4,0,
-10003,8,352,4,0,
-10003,8,354,1,89,
-10003,8,363,4,0,
-10003,8,374,4,0,
-10003,8,375,1,57,
-10003,8,398,4,0,
-10003,8,409,4,0,
-10003,8,411,4,0,
-10003,8,412,4,0,
-10003,8,416,4,0,
-10003,8,419,4,0,
-10003,8,428,1,65,
-10003,8,430,4,0,
-10003,8,433,4,0,
-10003,8,446,4,0,
-10003,8,447,4,0,
-10003,8,451,4,0,
-10003,9,7,3,0,
-10003,9,8,3,0,
-10003,9,9,3,0,
-10003,9,15,4,0,
-10003,9,35,1,1,2
-10003,9,43,1,1,1
-10003,9,58,4,0,
-10003,9,63,4,0,
-10003,9,70,4,0,
-10003,9,76,4,0,
-10003,9,85,4,0,
-10003,9,86,4,0,
-10003,9,87,4,0,
-10003,9,92,4,0,
-10003,9,94,1,41,
-10003,9,94,4,0,
-10003,9,97,1,73,
-10003,9,101,1,9,
-10003,9,104,1,17,
-10003,9,104,4,0,
-10003,9,105,1,81,
-10003,9,113,4,0,
-10003,9,115,4,0,
-10003,9,129,1,49,
-10003,9,129,3,0,
-10003,9,138,4,0,
-10003,9,148,4,0,
-10003,9,156,4,0,
-10003,9,157,4,0,
-10003,9,164,4,0,
-10003,9,173,3,0,
-10003,9,182,4,0,
-10003,9,189,3,0,
-10003,9,196,3,0,
-10003,9,203,4,0,
-10003,9,207,4,0,
-10003,9,214,4,0,
-10003,9,216,4,0,
-10003,9,218,4,0,
-10003,9,219,4,0,
-10003,9,228,1,33,
-10003,9,237,4,0,
-10003,9,240,4,0,
-10003,9,241,4,0,
-10003,9,244,4,0,
-10003,9,245,1,97,
-10003,9,247,4,0,
-10003,9,249,4,0,
-10003,9,259,4,0,
-10003,9,263,4,0,
-10003,9,264,4,0,
-10003,9,269,4,0,
-10003,9,271,3,0,
-10003,9,278,4,0,
-10003,9,280,4,0,
-10003,9,282,1,25,
-10003,9,282,3,0,
-10003,9,285,4,0,
-10003,9,289,4,0,
-10003,9,290,4,0,
-10003,9,317,4,0,
-10003,9,324,3,0,
-10003,9,332,4,0,
-10003,9,347,4,0,
-10003,9,351,4,0,
-10003,9,352,4,0,
-10003,9,354,1,89,
-10003,9,363,4,0,
-10003,9,374,4,0,
-10003,9,375,1,57,
-10003,9,398,4,0,
-10003,9,409,4,0,
-10003,9,411,4,0,
-10003,9,412,4,0,
-10003,9,416,4,0,
-10003,9,419,4,0,
-10003,9,428,1,65,
-10003,9,428,3,0,
-10003,9,430,4,0,
-10003,9,433,4,0,
-10003,9,446,4,0,
-10003,9,447,4,0,
-10003,9,451,4,0,
-10003,10,7,3,0,
-10003,10,8,3,0,
-10003,10,9,3,0,
-10003,10,15,4,0,
-10003,10,29,3,0,
-10003,10,35,1,1,2
-10003,10,43,1,1,1
-10003,10,58,4,0,
-10003,10,63,4,0,
-10003,10,67,3,0,
-10003,10,70,4,0,
-10003,10,76,4,0,
-10003,10,85,4,0,
-10003,10,86,4,0,
-10003,10,87,4,0,
-10003,10,92,4,0,
-10003,10,94,1,41,
-10003,10,94,4,0,
-10003,10,97,1,73,
-10003,10,101,1,9,
-10003,10,104,1,17,
-10003,10,104,4,0,
-10003,10,105,1,81,
-10003,10,113,4,0,
-10003,10,115,4,0,
-10003,10,129,1,49,
-10003,10,129,3,0,
-10003,10,138,4,0,
-10003,10,148,4,0,
-10003,10,156,4,0,
-10003,10,157,4,0,
-10003,10,164,4,0,
-10003,10,173,3,0,
-10003,10,182,4,0,
-10003,10,189,3,0,
-10003,10,196,3,0,
-10003,10,203,4,0,
-10003,10,207,4,0,
-10003,10,214,4,0,
-10003,10,216,4,0,
-10003,10,218,4,0,
-10003,10,219,4,0,
-10003,10,228,1,33,
-10003,10,237,4,0,
-10003,10,240,4,0,
-10003,10,241,4,0,
-10003,10,244,4,0,
-10003,10,245,1,97,
-10003,10,247,4,0,
-10003,10,249,4,0,
-10003,10,259,4,0,
-10003,10,263,4,0,
-10003,10,264,4,0,
-10003,10,269,4,0,
-10003,10,271,3,0,
-10003,10,272,3,0,
-10003,10,278,4,0,
-10003,10,280,4,0,
-10003,10,282,1,25,
-10003,10,282,3,0,
-10003,10,285,4,0,
-10003,10,289,4,0,
-10003,10,290,4,0,
-10003,10,317,4,0,
-10003,10,324,3,0,
-10003,10,332,4,0,
-10003,10,347,4,0,
-10003,10,351,4,0,
-10003,10,352,4,0,
-10003,10,354,1,89,
-10003,10,356,3,0,
-10003,10,363,4,0,
-10003,10,374,4,0,
-10003,10,375,1,57,
-10003,10,398,4,0,
-10003,10,409,4,0,
-10003,10,411,4,0,
-10003,10,412,4,0,
-10003,10,416,4,0,
-10003,10,419,4,0,
-10003,10,428,1,65,
-10003,10,428,3,0,
-10003,10,430,4,0,
-10003,10,433,4,0,
-10003,10,446,4,0,
-10003,10,447,4,0,
-10003,10,451,4,0,
-10003,11,15,4,0,
-10003,11,35,1,1,2
-10003,11,43,1,1,1
-10003,11,58,4,0,
-10003,11,63,4,0,
-10003,11,70,4,0,
-10003,11,76,4,0,
-10003,11,85,4,0,
-10003,11,86,4,0,
-10003,11,87,4,0,
-10003,11,92,4,0,
-10003,11,94,1,41,
-10003,11,94,4,0,
-10003,11,97,1,73,
-10003,11,101,1,9,
-10003,11,104,1,17,
-10003,11,104,4,0,
-10003,11,105,1,81,
-10003,11,113,4,0,
-10003,11,115,4,0,
-10003,11,129,1,49,
-10003,11,138,4,0,
-10003,11,148,4,0,
-10003,11,156,4,0,
-10003,11,157,4,0,
-10003,11,164,4,0,
-10003,11,182,4,0,
-10003,11,207,4,0,
-10003,11,216,4,0,
-10003,11,218,4,0,
-10003,11,219,4,0,
-10003,11,228,1,33,
-10003,11,237,4,0,
-10003,11,240,4,0,
-10003,11,241,4,0,
-10003,11,244,4,0,
-10003,11,245,1,97,
-10003,11,247,4,0,
-10003,11,249,4,0,
-10003,11,259,4,0,
-10003,11,263,4,0,
-10003,11,269,4,0,
-10003,11,280,4,0,
-10003,11,282,1,25,
-10003,11,317,4,0,
-10003,11,332,4,0,
-10003,11,347,4,0,
-10003,11,354,1,89,
-10003,11,374,4,0,
-10003,11,375,1,57,
-10003,11,398,4,0,
-10003,11,411,4,0,
-10003,11,412,4,0,
-10003,11,416,4,0,
-10003,11,428,1,65,
-10003,11,430,4,0,
-10003,11,433,4,0,
-10003,11,447,4,0,
-10003,11,451,4,0,
-10003,11,473,4,0,
-10003,11,477,4,0,
-10003,11,490,4,0,
-10003,11,496,4,0,
-10003,11,502,4,0,
-10004,8,33,1,1,
-10004,8,60,1,32,
-10004,8,63,4,0,
-10004,8,89,4,0,
-10004,8,90,1,47,
-10004,8,91,4,0,
-10004,8,92,4,0,
-10004,8,93,1,23,
-10004,8,94,1,44,
-10004,8,94,4,0,
-10004,8,104,4,0,
-10004,8,106,1,29,
-10004,8,138,4,0,
-10004,8,148,4,0,
-10004,8,156,4,0,
-10004,8,164,4,0,
-10004,8,168,4,0,
-10004,8,175,1,38,
-10004,8,182,1,10,
-10004,8,182,4,0,
-10004,8,201,4,0,
-10004,8,203,4,0,
-10004,8,207,4,0,
-10004,8,213,1,41,
-10004,8,213,4,0,
-10004,8,214,4,0,
-10004,8,216,4,0,
-10004,8,218,4,0,
-10004,8,219,4,0,
-10004,8,237,1,20,
-10004,8,237,4,0,
-10004,8,240,4,0,
-10004,8,241,4,0,
-10004,8,244,4,0,
-10004,8,247,4,0,
-10004,8,263,4,0,
-10004,8,285,4,0,
-10004,8,290,4,0,
-10004,8,317,4,0,
-10004,8,350,1,26,
-10004,8,363,4,0,
-10004,8,416,4,0,
-10004,8,445,1,35,
-10004,8,445,4,0,
-10004,9,33,1,1,
-10004,9,60,1,32,
-10004,9,63,4,0,
-10004,9,89,4,0,
-10004,9,90,1,47,
-10004,9,91,4,0,
-10004,9,92,4,0,
-10004,9,93,1,23,
-10004,9,94,1,44,
-10004,9,94,4,0,
-10004,9,104,4,0,
-10004,9,106,1,29,
-10004,9,138,4,0,
-10004,9,148,4,0,
-10004,9,156,4,0,
-10004,9,164,4,0,
-10004,9,168,4,0,
-10004,9,173,3,0,
-10004,9,175,1,38,
-10004,9,182,1,10,
-10004,9,182,4,0,
-10004,9,189,3,0,
-10004,9,201,4,0,
-10004,9,203,4,0,
-10004,9,205,3,0,
-10004,9,207,4,0,
-10004,9,213,1,41,
-10004,9,213,4,0,
-10004,9,214,4,0,
-10004,9,216,4,0,
-10004,9,218,4,0,
-10004,9,219,4,0,
-10004,9,237,1,20,
-10004,9,237,4,0,
-10004,9,240,4,0,
-10004,9,241,4,0,
-10004,9,244,4,0,
-10004,9,247,4,0,
-10004,9,253,3,0,
-10004,9,263,4,0,
-10004,9,283,3,0,
-10004,9,285,4,0,
-10004,9,290,4,0,
-10004,9,317,4,0,
-10004,9,324,3,0,
-10004,9,350,1,26,
-10004,9,363,4,0,
-10004,9,389,3,0,
-10004,9,414,3,0,
-10004,9,416,4,0,
-10004,9,445,1,35,
-10004,9,445,4,0,
-10004,9,450,1,15,
-10004,10,33,1,1,
-10004,10,60,1,32,
-10004,10,63,4,0,
-10004,10,81,3,0,
-10004,10,89,4,0,
-10004,10,90,1,47,
-10004,10,91,4,0,
-10004,10,92,4,0,
-10004,10,93,1,23,
-10004,10,94,1,44,
-10004,10,94,4,0,
-10004,10,104,4,0,
-10004,10,106,1,29,
-10004,10,138,4,0,
-10004,10,148,4,0,
-10004,10,156,4,0,
-10004,10,164,4,0,
-10004,10,168,4,0,
-10004,10,173,3,0,
-10004,10,175,1,38,
-10004,10,182,1,10,
-10004,10,182,4,0,
-10004,10,189,3,0,
-10004,10,201,4,0,
-10004,10,203,4,0,
-10004,10,205,3,0,
-10004,10,207,4,0,
-10004,10,213,1,41,
-10004,10,213,4,0,
-10004,10,214,4,0,
-10004,10,216,4,0,
-10004,10,218,4,0,
-10004,10,219,4,0,
-10004,10,237,1,20,
-10004,10,237,4,0,
-10004,10,240,4,0,
-10004,10,241,4,0,
-10004,10,244,4,0,
-10004,10,247,4,0,
-10004,10,253,3,0,
-10004,10,263,4,0,
-10004,10,283,3,0,
-10004,10,285,4,0,
-10004,10,290,4,0,
-10004,10,317,4,0,
-10004,10,324,3,0,
-10004,10,350,1,26,
-10004,10,363,4,0,
-10004,10,389,3,0,
-10004,10,414,3,0,
-10004,10,416,4,0,
-10004,10,445,1,35,
-10004,10,445,4,0,
-10004,10,450,1,15,
-10004,10,450,3,0,
-10004,11,33,1,1,
-10004,11,60,1,32,
-10004,11,63,4,0,
-10004,11,89,4,0,
-10004,11,90,1,47,
-10004,11,91,4,0,
-10004,11,92,4,0,
-10004,11,93,1,23,
-10004,11,94,1,44,
-10004,11,94,4,0,
-10004,11,104,4,0,
-10004,11,106,1,29,
-10004,11,138,4,0,
-10004,11,148,4,0,
-10004,11,156,4,0,
-10004,11,164,4,0,
-10004,11,168,4,0,
-10004,11,175,1,38,
-10004,11,182,1,10,
-10004,11,182,4,0,
-10004,11,201,4,0,
-10004,11,207,4,0,
-10004,11,213,1,41,
-10004,11,213,4,0,
-10004,11,216,4,0,
-10004,11,218,4,0,
-10004,11,219,4,0,
-10004,11,237,1,20,
-10004,11,237,4,0,
-10004,11,240,4,0,
-10004,11,241,4,0,
-10004,11,244,4,0,
-10004,11,247,4,0,
-10004,11,263,4,0,
-10004,11,317,4,0,
-10004,11,350,1,26,
-10004,11,416,4,0,
-10004,11,445,1,35,
-10004,11,450,1,15,
-10004,11,474,4,0,
-10004,11,496,4,0,
-10004,11,522,4,0,
-10004,11,523,4,0,
-10005,8,33,1,1,
-10005,8,60,1,32,
-10005,8,63,4,0,
-10005,8,92,4,0,
-10005,8,93,1,23,
-10005,8,94,1,44,
-10005,8,94,4,0,
-10005,8,104,4,0,
-10005,8,138,4,0,
-10005,8,148,4,0,
-10005,8,156,4,0,
-10005,8,164,4,0,
-10005,8,168,4,0,
-10005,8,175,1,38,
-10005,8,182,1,10,
-10005,8,182,4,0,
-10005,8,203,4,0,
-10005,8,207,4,0,
-10005,8,213,1,41,
-10005,8,213,4,0,
-10005,8,214,4,0,
-10005,8,216,4,0,
-10005,8,218,4,0,
-10005,8,219,4,0,
-10005,8,237,1,20,
-10005,8,237,4,0,
-10005,8,240,4,0,
-10005,8,241,4,0,
-10005,8,244,4,0,
-10005,8,247,4,0,
-10005,8,263,4,0,
-10005,8,285,4,0,
-10005,8,290,4,0,
-10005,8,319,1,29,
-10005,8,360,4,0,
-10005,8,363,4,0,
-10005,8,416,4,0,
-10005,8,429,1,26,
-10005,8,430,4,0,
-10005,8,442,1,47,
-10005,8,445,1,35,
-10005,8,445,4,0,
-10005,8,446,4,0,
-10005,9,33,1,1,
-10005,9,60,1,32,
-10005,9,63,4,0,
-10005,9,92,4,0,
-10005,9,93,1,23,
-10005,9,94,1,44,
-10005,9,94,4,0,
-10005,9,104,4,0,
-10005,9,138,4,0,
-10005,9,148,4,0,
-10005,9,156,4,0,
-10005,9,164,4,0,
-10005,9,168,4,0,
-10005,9,173,3,0,
-10005,9,175,1,38,
-10005,9,182,1,10,
-10005,9,182,4,0,
-10005,9,203,4,0,
-10005,9,207,4,0,
-10005,9,213,1,41,
-10005,9,213,4,0,
-10005,9,214,4,0,
-10005,9,216,4,0,
-10005,9,218,4,0,
-10005,9,219,4,0,
-10005,9,237,1,20,
-10005,9,237,4,0,
-10005,9,240,4,0,
-10005,9,241,4,0,
-10005,9,244,4,0,
-10005,9,247,4,0,
-10005,9,253,3,0,
-10005,9,263,4,0,
-10005,9,283,3,0,
-10005,9,285,4,0,
-10005,9,290,4,0,
-10005,9,319,1,29,
-10005,9,324,3,0,
-10005,9,334,3,0,
-10005,9,360,4,0,
-10005,9,363,4,0,
-10005,9,389,3,0,
-10005,9,393,3,0,
-10005,9,416,4,0,
-10005,9,429,1,26,
-10005,9,430,4,0,
-10005,9,441,3,0,
-10005,9,442,1,47,
-10005,9,442,3,0,
-10005,9,445,1,35,
-10005,9,445,4,0,
-10005,9,446,4,0,
-10005,9,450,1,15,
-10005,10,33,1,1,
-10005,10,60,1,32,
-10005,10,63,4,0,
-10005,10,81,3,0,
-10005,10,92,4,0,
-10005,10,93,1,23,
-10005,10,94,1,44,
-10005,10,94,4,0,
-10005,10,104,4,0,
-10005,10,138,4,0,
-10005,10,148,4,0,
-10005,10,156,4,0,
-10005,10,164,4,0,
-10005,10,168,4,0,
-10005,10,173,3,0,
-10005,10,175,1,38,
-10005,10,182,1,10,
-10005,10,182,4,0,
-10005,10,203,4,0,
-10005,10,207,4,0,
-10005,10,213,1,41,
-10005,10,213,4,0,
-10005,10,214,4,0,
-10005,10,216,4,0,
-10005,10,218,4,0,
-10005,10,219,4,0,
-10005,10,237,1,20,
-10005,10,237,4,0,
-10005,10,240,4,0,
-10005,10,241,4,0,
-10005,10,244,4,0,
-10005,10,247,4,0,
-10005,10,253,3,0,
-10005,10,263,4,0,
-10005,10,283,3,0,
-10005,10,285,4,0,
-10005,10,290,4,0,
-10005,10,319,1,29,
-10005,10,324,3,0,
-10005,10,334,3,0,
-10005,10,360,4,0,
-10005,10,363,4,0,
-10005,10,389,3,0,
-10005,10,393,3,0,
-10005,10,416,4,0,
-10005,10,429,1,26,
-10005,10,430,4,0,
-10005,10,441,3,0,
-10005,10,442,1,47,
-10005,10,442,3,0,
-10005,10,445,1,35,
-10005,10,445,4,0,
-10005,10,446,4,0,
-10005,10,450,1,15,
-10005,10,450,3,0,
-10005,11,33,1,1,
-10005,11,60,1,32,
-10005,11,63,4,0,
-10005,11,92,4,0,
-10005,11,93,1,23,
-10005,11,94,1,44,
-10005,11,94,4,0,
-10005,11,104,4,0,
-10005,11,138,4,0,
-10005,11,148,4,0,
-10005,11,156,4,0,
-10005,11,164,4,0,
-10005,11,168,4,0,
-10005,11,175,1,38,
-10005,11,182,1,10,
-10005,11,182,4,0,
-10005,11,207,4,0,
-10005,11,213,1,41,
-10005,11,213,4,0,
-10005,11,216,4,0,
-10005,11,218,4,0,
-10005,11,219,4,0,
-10005,11,237,1,20,
-10005,11,237,4,0,
-10005,11,240,4,0,
-10005,11,241,4,0,
-10005,11,244,4,0,
-10005,11,247,4,0,
-10005,11,263,4,0,
-10005,11,319,1,29,
-10005,11,360,4,0,
-10005,11,416,4,0,
-10005,11,429,1,26,
-10005,11,430,4,0,
-10005,11,442,1,47,
-10005,11,445,1,35,
-10005,11,450,1,15,
-10005,11,474,4,0,
-10005,11,496,4,0,
-10005,11,522,4,0,
-10006,9,14,4,0,
-10006,9,63,4,0,
-10006,9,73,1,19,
-10006,9,74,1,1,
-10006,9,76,4,0,
-10006,9,92,4,0,
-10006,9,94,4,0,
-10006,9,98,1,28,
-10006,9,104,4,0,
-10006,9,129,3,0,
-10006,9,148,4,0,
-10006,9,156,4,0,
-10006,9,164,4,0,
-10006,9,173,3,0,
-10006,9,182,4,0,
-10006,9,186,1,82,
-10006,9,189,3,0,
-10006,9,202,4,0,
-10006,9,203,4,0,
-10006,9,207,4,0,
-10006,9,214,4,0,
-10006,9,216,4,0,
-10006,9,218,4,0,
-10006,9,219,4,0,
-10006,9,230,1,37,
-10006,9,235,3,0,
-10006,9,237,4,0,
-10006,9,241,4,0,
-10006,9,244,4,0,
-10006,9,263,4,0,
-10006,9,290,4,0,
-10006,9,314,3,0,
-10006,9,331,4,0,
-10006,9,345,1,10,
-10006,9,363,1,46,
-10006,9,363,4,0,
-10006,9,387,3,0,
-10006,9,388,1,55,
-10006,9,402,3,0,
-10006,9,403,1,64,
-10006,9,412,1,73,
-10006,9,412,4,0,
-10006,9,416,4,0,
-10006,9,428,3,0,
-10006,9,437,1,91,
-10006,9,447,4,0,
-10006,9,465,1,100,
-10006,9,466,3,0,
-10006,10,14,4,0,
-10006,10,29,3,0,
-10006,10,63,4,0,
-10006,10,73,1,19,
-10006,10,74,1,1,
-10006,10,76,4,0,
-10006,10,92,4,0,
-10006,10,94,4,0,
-10006,10,98,1,28,
-10006,10,104,4,0,
-10006,10,129,3,0,
-10006,10,148,4,0,
-10006,10,156,4,0,
-10006,10,164,4,0,
-10006,10,173,3,0,
-10006,10,182,4,0,
-10006,10,186,1,82,
-10006,10,189,3,0,
-10006,10,202,4,0,
-10006,10,203,4,0,
-10006,10,207,4,0,
-10006,10,214,4,0,
-10006,10,216,4,0,
-10006,10,218,4,0,
-10006,10,219,4,0,
-10006,10,230,1,37,
-10006,10,235,3,0,
-10006,10,237,4,0,
-10006,10,241,4,0,
-10006,10,244,4,0,
-10006,10,263,4,0,
-10006,10,290,4,0,
-10006,10,314,3,0,
-10006,10,331,4,0,
-10006,10,345,1,10,
-10006,10,363,1,46,
-10006,10,363,4,0,
-10006,10,366,3,0,
-10006,10,387,3,0,
-10006,10,388,1,55,
-10006,10,388,3,0,
-10006,10,402,3,0,
-10006,10,403,1,64,
-10006,10,412,1,73,
-10006,10,412,4,0,
-10006,10,416,4,0,
-10006,10,428,3,0,
-10006,10,437,1,91,
-10006,10,447,4,0,
-10006,10,465,1,100,
-10006,10,466,3,0,
-10006,11,14,4,0,
-10006,11,63,4,0,
-10006,11,73,1,19,
-10006,11,74,1,1,
-10006,11,76,4,0,
-10006,11,92,4,0,
-10006,11,94,4,0,
-10006,11,98,1,28,
-10006,11,104,4,0,
-10006,11,148,4,0,
-10006,11,156,4,0,
-10006,11,164,4,0,
-10006,11,182,4,0,
-10006,11,186,1,82,
-10006,11,207,4,0,
-10006,11,216,4,0,
-10006,11,218,4,0,
-10006,11,219,4,0,
-10006,11,230,1,37,
-10006,11,237,4,0,
-10006,11,241,4,0,
-10006,11,244,4,0,
-10006,11,263,4,0,
-10006,11,345,1,10,
-10006,11,363,1,46,
-10006,11,388,1,55,
-10006,11,403,1,64,
-10006,11,412,1,73,
-10006,11,412,4,0,
-10006,11,416,4,0,
-10006,11,437,1,91,
-10006,11,447,4,0,
-10006,11,465,1,100,
-10006,11,496,4,0,
-10007,9,15,4,0,
-10007,9,19,4,0,
-10007,9,46,4,0,
-10007,9,63,4,0,
-10007,9,70,4,0,
-10007,9,85,4,0,
-10007,9,86,4,0,
-10007,9,87,4,0,
-10007,9,89,4,0,
-10007,9,92,4,0,
-10007,9,94,4,0,
-10007,9,104,4,0,
-10007,9,129,3,0,
-10007,9,138,4,0,
-10007,9,156,4,0,
-10007,9,163,1,70,
-10007,9,164,4,0,
-10007,9,173,3,0,
-10007,9,180,3,0,
-10007,9,182,4,0,
-10007,9,184,1,1,2
-10007,9,189,3,0,
-10007,9,196,3,0,
-10007,9,200,3,0,
-10007,9,203,4,0,
-10007,9,207,4,0,
-10007,9,210,3,0,
-10007,9,211,4,0,
-10007,9,214,4,0,
-10007,9,216,4,0,
-10007,9,218,4,0,
-10007,9,219,4,0,
-10007,9,225,1,1,1
-10007,9,231,4,0,
-10007,9,237,4,0,
-10007,9,239,3,0,
-10007,9,240,4,0,
-10007,9,241,4,0,
-10007,9,244,4,0,
-10007,9,246,1,20,
-10007,9,246,3,0,
-10007,9,247,4,0,
-10007,9,249,4,0,
-10007,9,261,4,0,
-10007,9,263,4,0,
-10007,9,290,4,0,
-10007,9,314,3,0,
-10007,9,318,4,0,
-10007,9,332,4,0,
-10007,9,337,1,30,
-10007,9,337,4,0,
-10007,9,347,4,0,
-10007,9,351,4,0,
-10007,9,363,4,0,
-10007,9,371,4,0,
-10007,9,377,1,50,
-10007,9,396,1,90,
-10007,9,399,4,0,
-10007,9,401,3,0,
-10007,9,406,4,0,
-10007,9,412,4,0,
-10007,9,414,1,60,
-10007,9,414,3,0,
-10007,9,416,4,0,
-10007,9,421,1,80,
-10007,9,421,4,0,
-10007,9,431,4,0,
-10007,9,432,4,0,
-10007,9,434,3,0,
-10007,9,442,3,0,
-10007,9,444,4,0,
-10007,9,451,4,0,
-10007,9,466,1,10,
-10007,9,466,3,0,
-10007,9,467,1,40,
-10007,10,15,4,0,
-10007,10,19,4,0,
-10007,10,29,3,0,
-10007,10,46,4,0,
-10007,10,63,4,0,
-10007,10,70,4,0,
-10007,10,85,4,0,
-10007,10,86,4,0,
-10007,10,87,4,0,
-10007,10,89,4,0,
-10007,10,92,4,0,
-10007,10,94,4,0,
-10007,10,104,4,0,
-10007,10,129,3,0,
-10007,10,138,4,0,
-10007,10,156,4,0,
-10007,10,163,1,15,
-10007,10,164,4,0,
-10007,10,173,3,0,
-10007,10,180,3,0,
-10007,10,182,4,0,
-10007,10,184,1,1,2
-10007,10,189,3,0,
-10007,10,194,1,24,
-10007,10,196,3,0,
-10007,10,200,3,0,
-10007,10,203,4,0,
-10007,10,207,4,0,
-10007,10,210,3,0,
-10007,10,211,4,0,
-10007,10,214,4,0,
-10007,10,216,4,0,
-10007,10,218,4,0,
-10007,10,219,4,0,
-10007,10,220,3,0,
-10007,10,225,1,1,1
-10007,10,231,4,0,
-10007,10,237,4,0,
-10007,10,239,3,0,
-10007,10,240,4,0,
-10007,10,241,4,0,
-10007,10,244,4,0,
-10007,10,246,1,10,
-10007,10,246,3,0,
-10007,10,247,4,0,
-10007,10,249,4,0,
-10007,10,261,4,0,
-10007,10,263,4,0,
-10007,10,272,3,0,
-10007,10,277,3,0,
-10007,10,290,4,0,
-10007,10,314,3,0,
-10007,10,318,4,0,
-10007,10,332,4,0,
-10007,10,337,1,28,
-10007,10,337,4,0,
-10007,10,347,4,0,
-10007,10,351,4,0,
-10007,10,356,3,0,
-10007,10,363,4,0,
-10007,10,366,3,0,
-10007,10,371,4,0,
-10007,10,396,1,37,
-10007,10,399,4,0,
-10007,10,401,3,0,
-10007,10,406,4,0,
-10007,10,412,4,0,
-10007,10,414,1,33,
-10007,10,414,3,0,
-10007,10,416,4,0,
-10007,10,421,1,42,
-10007,10,421,4,0,
-10007,10,425,1,19,
-10007,10,431,4,0,
-10007,10,434,3,0,
-10007,10,442,3,0,
-10007,10,444,4,0,
-10007,10,451,4,0,
-10007,10,466,1,6,
-10007,10,466,3,0,
-10007,10,467,1,46,
-10007,11,15,4,0,
-10007,11,19,4,0,
-10007,11,46,4,0,
-10007,11,63,4,0,
-10007,11,70,4,0,
-10007,11,85,4,0,
-10007,11,86,4,0,
-10007,11,87,4,0,
-10007,11,89,4,0,
-10007,11,92,4,0,
-10007,11,94,4,0,
-10007,11,104,4,0,
-10007,11,138,4,0,
-10007,11,156,4,0,
-10007,11,163,1,15,
-10007,11,164,4,0,
-10007,11,182,4,0,
-10007,11,184,1,1,2
-10007,11,194,1,24,
-10007,11,207,4,0,
-10007,11,216,4,0,
-10007,11,218,4,0,
-10007,11,219,4,0,
-10007,11,225,1,1,1
-10007,11,237,4,0,
-10007,11,240,4,0,
-10007,11,241,4,0,
-10007,11,244,4,0,
-10007,11,246,1,10,
-10007,11,247,4,0,
-10007,11,249,4,0,
-10007,11,261,4,0,
-10007,11,263,4,0,
-10007,11,332,4,0,
-10007,11,337,1,28,
-10007,11,337,4,0,
-10007,11,347,4,0,
-10007,11,371,4,0,
-10007,11,396,1,37,
-10007,11,412,4,0,
-10007,11,414,1,33,
-10007,11,416,4,0,
-10007,11,421,1,42,
-10007,11,421,4,0,
-10007,11,425,1,19,
-10007,11,434,3,0,
-10007,11,444,4,0,
-10007,11,451,4,0,
-10007,11,466,1,6,
-10007,11,467,1,46,
-10007,11,468,4,0,
-10007,11,477,4,0,
-10007,11,496,4,0,
-10007,11,497,4,0,
-10007,11,506,1,50,
-10007,11,523,4,0,
-10007,11,525,4,0,
-10008,9,84,1,1,4
-10008,9,85,4,0,
-10008,9,86,1,1,3
-10008,9,86,4,0,
-10008,9,87,4,0,
-10008,9,92,4,0,
-10008,9,104,1,15,
-10008,9,104,4,0,
-10008,9,109,1,1,5
-10008,9,113,4,0,
-10008,9,115,4,0,
-10008,9,129,3,0,
-10008,9,138,4,0,
-10008,9,148,4,0,
-10008,9,156,4,0,
-10008,9,164,1,36,
-10008,9,164,4,0,
-10008,9,168,4,0,
-10008,9,173,3,0,
-10008,9,180,3,0,
-10008,9,182,4,0,
-10008,9,189,3,0,
-10008,9,203,4,0,
-10008,9,207,4,0,
-10008,9,214,4,0,
-10008,9,216,4,0,
-10008,9,218,4,0,
-10008,9,237,4,0,
-10008,9,240,4,0,
-10008,9,241,4,0,
-10008,9,244,4,0,
-10008,9,247,4,0,
-10008,9,253,1,8,
-10008,9,261,4,0,
-10008,9,263,4,0,
-10008,9,268,1,43,
-10008,9,271,1,1,1
-10008,9,271,3,0,
-10008,9,289,4,0,
-10008,9,290,4,0,
-10008,9,310,1,1,2
-10008,9,315,10,0,
-10008,9,324,3,0,
-10008,9,351,1,22,
-10008,9,351,4,0,
-10008,9,363,4,0,
-10008,9,389,3,0,
-10008,9,399,4,0,
-10008,9,435,1,50,
-10008,9,451,4,0,
-10008,9,466,1,29,
-10008,9,466,3,0,
-10008,10,84,1,1,4
-10008,10,85,4,0,
-10008,10,86,1,1,3
-10008,10,86,4,0,
-10008,10,87,4,0,
-10008,10,92,4,0,
-10008,10,104,1,15,
-10008,10,104,4,0,
-10008,10,109,1,1,5
-10008,10,113,4,0,
-10008,10,115,4,0,
-10008,10,129,3,0,
-10008,10,138,4,0,
-10008,10,148,4,0,
-10008,10,156,4,0,
-10008,10,164,1,36,
-10008,10,164,4,0,
-10008,10,168,4,0,
-10008,10,173,3,0,
-10008,10,180,3,0,
-10008,10,182,4,0,
-10008,10,189,3,0,
-10008,10,203,4,0,
-10008,10,207,4,0,
-10008,10,214,4,0,
-10008,10,216,4,0,
-10008,10,218,4,0,
-10008,10,220,3,0,
-10008,10,237,4,0,
-10008,10,240,4,0,
-10008,10,241,4,0,
-10008,10,244,4,0,
-10008,10,247,4,0,
-10008,10,253,1,8,
-10008,10,261,4,0,
-10008,10,263,4,0,
-10008,10,268,1,43,
-10008,10,271,1,1,1
-10008,10,271,3,0,
-10008,10,289,4,0,
-10008,10,290,4,0,
-10008,10,310,1,1,2
-10008,10,315,10,0,
-10008,10,324,3,0,
-10008,10,351,1,22,
-10008,10,351,4,0,
-10008,10,363,4,0,
-10008,10,389,3,0,
-10008,10,399,4,0,
-10008,10,435,1,50,
-10008,10,451,4,0,
-10008,10,466,1,29,
-10008,10,466,3,0,
-10008,11,84,1,1,4
-10008,11,85,4,0,
-10008,11,86,1,1,3
-10008,11,86,4,0,
-10008,11,87,4,0,
-10008,11,92,4,0,
-10008,11,104,1,15,
-10008,11,104,4,0,
-10008,11,109,1,1,5
-10008,11,113,4,0,
-10008,11,115,4,0,
-10008,11,138,4,0,
-10008,11,148,4,0,
-10008,11,156,4,0,
-10008,11,164,1,36,
-10008,11,164,4,0,
-10008,11,168,4,0,
-10008,11,182,4,0,
-10008,11,207,4,0,
-10008,11,216,4,0,
-10008,11,218,4,0,
-10008,11,237,4,0,
-10008,11,240,4,0,
-10008,11,241,4,0,
-10008,11,244,4,0,
-10008,11,247,4,0,
-10008,11,253,1,8,
-10008,11,261,4,0,
-10008,11,263,4,0,
-10008,11,268,1,57,
-10008,11,271,1,1,1
-10008,11,310,1,1,2
-10008,11,351,1,22,
-10008,11,435,1,64,
-10008,11,451,4,0,
-10008,11,466,1,29,
-10008,11,477,4,0,
-10008,11,486,1,43,
-10008,11,496,4,0,
-10008,11,506,1,50,
-10008,11,521,4,0,
-10009,9,56,10,0,
-10009,9,84,1,1,4
-10009,9,85,4,0,
-10009,9,86,1,1,3
-10009,9,86,4,0,
-10009,9,87,4,0,
-10009,9,92,4,0,
-10009,9,104,1,15,
-10009,9,104,4,0,
-10009,9,109,1,1,5
-10009,9,113,4,0,
-10009,9,115,4,0,
-10009,9,129,3,0,
-10009,9,138,4,0,
-10009,9,148,4,0,
-10009,9,156,4,0,
-10009,9,164,1,36,
-10009,9,164,4,0,
-10009,9,168,4,0,
-10009,9,173,3,0,
-10009,9,180,3,0,
-10009,9,182,4,0,
-10009,9,189,3,0,
-10009,9,203,4,0,
-10009,9,207,4,0,
-10009,9,214,4,0,
-10009,9,216,4,0,
-10009,9,218,4,0,
-10009,9,237,4,0,
-10009,9,240,4,0,
-10009,9,241,4,0,
-10009,9,244,4,0,
-10009,9,247,4,0,
-10009,9,253,1,8,
-10009,9,261,4,0,
-10009,9,263,4,0,
-10009,9,268,1,43,
-10009,9,271,1,1,1
-10009,9,271,3,0,
-10009,9,289,4,0,
-10009,9,290,4,0,
-10009,9,310,1,1,2
-10009,9,324,3,0,
-10009,9,351,1,22,
-10009,9,351,4,0,
-10009,9,363,4,0,
-10009,9,389,3,0,
-10009,9,399,4,0,
-10009,9,435,1,50,
-10009,9,451,4,0,
-10009,9,466,1,29,
-10009,9,466,3,0,
-10009,10,56,10,0,
-10009,10,84,1,1,4
-10009,10,85,4,0,
-10009,10,86,1,1,3
-10009,10,86,4,0,
-10009,10,87,4,0,
-10009,10,92,4,0,
-10009,10,104,1,15,
-10009,10,104,4,0,
-10009,10,109,1,1,5
-10009,10,113,4,0,
-10009,10,115,4,0,
-10009,10,129,3,0,
-10009,10,138,4,0,
-10009,10,148,4,0,
-10009,10,156,4,0,
-10009,10,164,1,36,
-10009,10,164,4,0,
-10009,10,168,4,0,
-10009,10,173,3,0,
-10009,10,180,3,0,
-10009,10,182,4,0,
-10009,10,189,3,0,
-10009,10,203,4,0,
-10009,10,207,4,0,
-10009,10,214,4,0,
-10009,10,216,4,0,
-10009,10,218,4,0,
-10009,10,220,3,0,
-10009,10,237,4,0,
-10009,10,240,4,0,
-10009,10,241,4,0,
-10009,10,244,4,0,
-10009,10,247,4,0,
-10009,10,253,1,8,
-10009,10,261,4,0,
-10009,10,263,4,0,
-10009,10,268,1,43,
-10009,10,271,1,1,1
-10009,10,271,3,0,
-10009,10,289,4,0,
-10009,10,290,4,0,
-10009,10,310,1,1,2
-10009,10,324,3,0,
-10009,10,351,1,22,
-10009,10,351,4,0,
-10009,10,363,4,0,
-10009,10,389,3,0,
-10009,10,399,4,0,
-10009,10,435,1,50,
-10009,10,451,4,0,
-10009,10,466,1,29,
-10009,10,466,3,0,
-10009,11,84,1,1,4
-10009,11,85,4,0,
-10009,11,86,1,1,3
-10009,11,86,4,0,
-10009,11,87,4,0,
-10009,11,92,4,0,
-10009,11,104,1,15,
-10009,11,104,4,0,
-10009,11,109,1,1,5
-10009,11,113,4,0,
-10009,11,115,4,0,
-10009,11,138,4,0,
-10009,11,148,4,0,
-10009,11,156,4,0,
-10009,11,164,1,36,
-10009,11,164,4,0,
-10009,11,168,4,0,
-10009,11,182,4,0,
-10009,11,207,4,0,
-10009,11,216,4,0,
-10009,11,218,4,0,
-10009,11,237,4,0,
-10009,11,240,4,0,
-10009,11,241,4,0,
-10009,11,244,4,0,
-10009,11,247,4,0,
-10009,11,253,1,8,
-10009,11,261,4,0,
-10009,11,263,4,0,
-10009,11,268,1,57,
-10009,11,271,1,1,1
-10009,11,310,1,1,2
-10009,11,351,1,22,
-10009,11,435,1,64,
-10009,11,451,4,0,
-10009,11,466,1,29,
-10009,11,477,4,0,
-10009,11,486,1,43,
-10009,11,496,4,0,
-10009,11,506,1,50,
-10009,11,521,4,0,
-10010,9,59,10,0,
-10010,9,84,1,1,4
-10010,9,85,4,0,
-10010,9,86,1,1,3
-10010,9,86,4,0,
-10010,9,87,4,0,
-10010,9,92,4,0,
-10010,9,104,1,15,
-10010,9,104,4,0,
-10010,9,109,1,1,5
-10010,9,113,4,0,
-10010,9,115,4,0,
-10010,9,129,3,0,
-10010,9,138,4,0,
-10010,9,148,4,0,
-10010,9,156,4,0,
-10010,9,164,1,36,
-10010,9,164,4,0,
-10010,9,168,4,0,
-10010,9,173,3,0,
-10010,9,180,3,0,
-10010,9,182,4,0,
-10010,9,189,3,0,
-10010,9,203,4,0,
-10010,9,207,4,0,
-10010,9,214,4,0,
-10010,9,216,4,0,
-10010,9,218,4,0,
-10010,9,237,4,0,
-10010,9,240,4,0,
-10010,9,241,4,0,
-10010,9,244,4,0,
-10010,9,247,4,0,
-10010,9,253,1,8,
-10010,9,261,4,0,
-10010,9,263,4,0,
-10010,9,268,1,43,
-10010,9,271,1,1,1
-10010,9,271,3,0,
-10010,9,289,4,0,
-10010,9,290,4,0,
-10010,9,310,1,1,2
-10010,9,324,3,0,
-10010,9,351,1,22,
-10010,9,351,4,0,
-10010,9,363,4,0,
-10010,9,389,3,0,
-10010,9,399,4,0,
-10010,9,435,1,50,
-10010,9,451,4,0,
-10010,9,466,1,29,
-10010,9,466,3,0,
-10010,10,59,10,0,
-10010,10,84,1,1,4
-10010,10,85,4,0,
-10010,10,86,1,1,3
-10010,10,86,4,0,
-10010,10,87,4,0,
-10010,10,92,4,0,
-10010,10,104,1,15,
-10010,10,104,4,0,
-10010,10,109,1,1,5
-10010,10,113,4,0,
-10010,10,115,4,0,
-10010,10,129,3,0,
-10010,10,138,4,0,
-10010,10,148,4,0,
-10010,10,156,4,0,
-10010,10,164,1,36,
-10010,10,164,4,0,
-10010,10,168,4,0,
-10010,10,173,3,0,
-10010,10,180,3,0,
-10010,10,182,4,0,
-10010,10,189,3,0,
-10010,10,203,4,0,
-10010,10,207,4,0,
-10010,10,214,4,0,
-10010,10,216,4,0,
-10010,10,218,4,0,
-10010,10,220,3,0,
-10010,10,237,4,0,
-10010,10,240,4,0,
-10010,10,241,4,0,
-10010,10,244,4,0,
-10010,10,247,4,0,
-10010,10,253,1,8,
-10010,10,261,4,0,
-10010,10,263,4,0,
-10010,10,268,1,43,
-10010,10,271,1,1,1
-10010,10,271,3,0,
-10010,10,289,4,0,
-10010,10,290,4,0,
-10010,10,310,1,1,2
-10010,10,324,3,0,
-10010,10,351,1,22,
-10010,10,351,4,0,
-10010,10,363,4,0,
-10010,10,389,3,0,
-10010,10,399,4,0,
-10010,10,435,1,50,
-10010,10,451,4,0,
-10010,10,466,1,29,
-10010,10,466,3,0,
-10010,11,84,1,1,4
-10010,11,85,4,0,
-10010,11,86,1,1,3
-10010,11,86,4,0,
-10010,11,87,4,0,
-10010,11,92,4,0,
-10010,11,104,1,15,
-10010,11,104,4,0,
-10010,11,109,1,1,5
-10010,11,113,4,0,
-10010,11,115,4,0,
-10010,11,138,4,0,
-10010,11,148,4,0,
-10010,11,156,4,0,
-10010,11,164,1,36,
-10010,11,164,4,0,
-10010,11,168,4,0,
-10010,11,182,4,0,
-10010,11,207,4,0,
-10010,11,216,4,0,
-10010,11,218,4,0,
-10010,11,237,4,0,
-10010,11,240,4,0,
-10010,11,241,4,0,
-10010,11,244,4,0,
-10010,11,247,4,0,
-10010,11,253,1,8,
-10010,11,261,4,0,
-10010,11,263,4,0,
-10010,11,268,1,57,
-10010,11,271,1,1,1
-10010,11,310,1,1,2
-10010,11,351,1,22,
-10010,11,435,1,64,
-10010,11,451,4,0,
-10010,11,466,1,29,
-10010,11,477,4,0,
-10010,11,486,1,43,
-10010,11,496,4,0,
-10010,11,506,1,50,
-10010,11,521,4,0,
-10011,9,84,1,1,4
-10011,9,85,4,0,
-10011,9,86,1,1,3
-10011,9,86,4,0,
-10011,9,87,4,0,
-10011,9,92,4,0,
-10011,9,104,1,15,
-10011,9,104,4,0,
-10011,9,109,1,1,5
-10011,9,113,4,0,
-10011,9,115,4,0,
-10011,9,129,3,0,
-10011,9,138,4,0,
-10011,9,148,4,0,
-10011,9,156,4,0,
-10011,9,164,1,36,
-10011,9,164,4,0,
-10011,9,168,4,0,
-10011,9,173,3,0,
-10011,9,180,3,0,
-10011,9,182,4,0,
-10011,9,189,3,0,
-10011,9,203,4,0,
-10011,9,207,4,0,
-10011,9,214,4,0,
-10011,9,216,4,0,
-10011,9,218,4,0,
-10011,9,237,4,0,
-10011,9,240,4,0,
-10011,9,241,4,0,
-10011,9,244,4,0,
-10011,9,247,4,0,
-10011,9,253,1,8,
-10011,9,261,4,0,
-10011,9,263,4,0,
-10011,9,268,1,43,
-10011,9,271,1,1,1
-10011,9,271,3,0,
-10011,9,289,4,0,
-10011,9,290,4,0,
-10011,9,310,1,1,2
-10011,9,324,3,0,
-10011,9,351,1,22,
-10011,9,351,4,0,
-10011,9,363,4,0,
-10011,9,389,3,0,
-10011,9,399,4,0,
-10011,9,403,10,0,
-10011,9,435,1,50,
-10011,9,451,4,0,
-10011,9,466,1,29,
-10011,9,466,3,0,
-10011,10,84,1,1,4
-10011,10,85,4,0,
-10011,10,86,1,1,3
-10011,10,86,4,0,
-10011,10,87,4,0,
-10011,10,92,4,0,
-10011,10,104,1,15,
-10011,10,104,4,0,
-10011,10,109,1,1,5
-10011,10,113,4,0,
-10011,10,115,4,0,
-10011,10,129,3,0,
-10011,10,138,4,0,
-10011,10,148,4,0,
-10011,10,156,4,0,
-10011,10,164,1,36,
-10011,10,164,4,0,
-10011,10,168,4,0,
-10011,10,173,3,0,
-10011,10,180,3,0,
-10011,10,182,4,0,
-10011,10,189,3,0,
-10011,10,203,4,0,
-10011,10,207,4,0,
-10011,10,214,4,0,
-10011,10,216,4,0,
-10011,10,218,4,0,
-10011,10,220,3,0,
-10011,10,237,4,0,
-10011,10,240,4,0,
-10011,10,241,4,0,
-10011,10,244,4,0,
-10011,10,247,4,0,
-10011,10,253,1,8,
-10011,10,261,4,0,
-10011,10,263,4,0,
-10011,10,268,1,43,
-10011,10,271,1,1,1
-10011,10,271,3,0,
-10011,10,289,4,0,
-10011,10,290,4,0,
-10011,10,310,1,1,2
-10011,10,324,3,0,
-10011,10,351,1,22,
-10011,10,351,4,0,
-10011,10,363,4,0,
-10011,10,389,3,0,
-10011,10,399,4,0,
-10011,10,403,10,0,
-10011,10,435,1,50,
-10011,10,451,4,0,
-10011,10,466,1,29,
-10011,10,466,3,0,
-10011,11,84,1,1,4
-10011,11,85,4,0,
-10011,11,86,1,1,3
-10011,11,86,4,0,
-10011,11,87,4,0,
-10011,11,92,4,0,
-10011,11,104,1,15,
-10011,11,104,4,0,
-10011,11,109,1,1,5
-10011,11,113,4,0,
-10011,11,115,4,0,
-10011,11,138,4,0,
-10011,11,148,4,0,
-10011,11,156,4,0,
-10011,11,164,1,36,
-10011,11,164,4,0,
-10011,11,168,4,0,
-10011,11,182,4,0,
-10011,11,207,4,0,
-10011,11,216,4,0,
-10011,11,218,4,0,
-10011,11,237,4,0,
-10011,11,240,4,0,
-10011,11,241,4,0,
-10011,11,244,4,0,
-10011,11,247,4,0,
-10011,11,253,1,8,
-10011,11,261,4,0,
-10011,11,263,4,0,
-10011,11,268,1,57,
-10011,11,271,1,1,1
-10011,11,310,1,1,2
-10011,11,351,1,22,
-10011,11,435,1,64,
-10011,11,451,4,0,
-10011,11,466,1,29,
-10011,11,477,4,0,
-10011,11,486,1,43,
-10011,11,496,4,0,
-10011,11,506,1,50,
-10011,11,521,4,0,
-10012,9,84,1,1,4
-10012,9,85,4,0,
-10012,9,86,1,1,3
-10012,9,86,4,0,
-10012,9,87,4,0,
-10012,9,92,4,0,
-10012,9,104,1,15,
-10012,9,104,4,0,
-10012,9,109,1,1,5
-10012,9,113,4,0,
-10012,9,115,4,0,
-10012,9,129,3,0,
-10012,9,138,4,0,
-10012,9,148,4,0,
-10012,9,156,4,0,
-10012,9,164,1,36,
-10012,9,164,4,0,
-10012,9,168,4,0,
-10012,9,173,3,0,
-10012,9,180,3,0,
-10012,9,182,4,0,
-10012,9,189,3,0,
-10012,9,203,4,0,
-10012,9,207,4,0,
-10012,9,214,4,0,
-10012,9,216,4,0,
-10012,9,218,4,0,
-10012,9,237,4,0,
-10012,9,240,4,0,
-10012,9,241,4,0,
-10012,9,244,4,0,
-10012,9,247,4,0,
-10012,9,253,1,8,
-10012,9,261,4,0,
-10012,9,263,4,0,
-10012,9,268,1,43,
-10012,9,271,1,1,1
-10012,9,271,3,0,
-10012,9,289,4,0,
-10012,9,290,4,0,
-10012,9,310,1,1,2
-10012,9,324,3,0,
-10012,9,351,1,22,
-10012,9,351,4,0,
-10012,9,363,4,0,
-10012,9,389,3,0,
-10012,9,399,4,0,
-10012,9,435,1,50,
-10012,9,437,10,0,
-10012,9,451,4,0,
-10012,9,466,1,29,
-10012,9,466,3,0,
-10012,10,84,1,1,4
-10012,10,85,4,0,
-10012,10,86,1,1,3
-10012,10,86,4,0,
-10012,10,87,4,0,
-10012,10,92,4,0,
-10012,10,104,1,15,
-10012,10,104,4,0,
-10012,10,109,1,1,5
-10012,10,113,4,0,
-10012,10,115,4,0,
-10012,10,129,3,0,
-10012,10,138,4,0,
-10012,10,148,4,0,
-10012,10,156,4,0,
-10012,10,164,1,36,
-10012,10,164,4,0,
-10012,10,168,4,0,
-10012,10,173,3,0,
-10012,10,180,3,0,
-10012,10,182,4,0,
-10012,10,189,3,0,
-10012,10,203,4,0,
-10012,10,207,4,0,
-10012,10,214,4,0,
-10012,10,216,4,0,
-10012,10,218,4,0,
-10012,10,220,3,0,
-10012,10,237,4,0,
-10012,10,240,4,0,
-10012,10,241,4,0,
-10012,10,244,4,0,
-10012,10,247,4,0,
-10012,10,253,1,8,
-10012,10,261,4,0,
-10012,10,263,4,0,
-10012,10,268,1,43,
-10012,10,271,1,1,1
-10012,10,271,3,0,
-10012,10,289,4,0,
-10012,10,290,4,0,
-10012,10,310,1,1,2
-10012,10,324,3,0,
-10012,10,351,1,22,
-10012,10,351,4,0,
-10012,10,363,4,0,
-10012,10,389,3,0,
-10012,10,399,4,0,
-10012,10,435,1,50,
-10012,10,437,10,0,
-10012,10,451,4,0,
-10012,10,466,1,29,
-10012,10,466,3,0,
-10012,11,84,1,1,4
-10012,11,85,4,0,
-10012,11,86,1,1,3
-10012,11,86,4,0,
-10012,11,87,4,0,
-10012,11,92,4,0,
-10012,11,104,1,15,
-10012,11,104,4,0,
-10012,11,109,1,1,5
-10012,11,113,4,0,
-10012,11,115,4,0,
-10012,11,138,4,0,
-10012,11,148,4,0,
-10012,11,156,4,0,
-10012,11,164,1,36,
-10012,11,164,4,0,
-10012,11,168,4,0,
-10012,11,182,4,0,
-10012,11,207,4,0,
-10012,11,216,4,0,
-10012,11,218,4,0,
-10012,11,237,4,0,
-10012,11,240,4,0,
-10012,11,241,4,0,
-10012,11,244,4,0,
-10012,11,247,4,0,
-10012,11,253,1,8,
-10012,11,261,4,0,
-10012,11,263,4,0,
-10012,11,268,1,57,
-10012,11,271,1,1,1
-10012,11,310,1,1,2
-10012,11,351,1,22,
-10012,11,435,1,64,
-10012,11,451,4,0,
-10012,11,466,1,29,
-10012,11,477,4,0,
-10012,11,486,1,43,
-10012,11,496,4,0,
-10012,11,506,1,50,
-10012,11,521,4,0,
-10013,11,29,1,20,
-10013,11,33,1,1,
-10013,11,52,1,10,2
-10013,11,53,4,0,
-10013,11,55,1,10,1
-10013,11,56,1,50,1
-10013,11,58,4,0,
-10013,11,59,1,50,3
-10013,11,59,4,0,
-10013,11,76,4,0,
-10013,11,85,4,0,
-10013,11,86,4,0,
-10013,11,87,4,0,
-10013,11,92,4,0,
-10013,11,104,4,0,
-10013,11,126,1,50,2
-10013,11,126,4,0,
-10013,11,148,4,0,
-10013,11,156,4,0,
-10013,11,164,4,0,
-10013,11,168,4,0,
-10013,11,181,1,10,3
-10013,11,182,4,0,
-10013,11,201,4,0,
-10013,11,207,4,0,
-10013,11,213,4,0,
-10013,11,216,4,0,
-10013,11,218,4,0,
-10013,11,237,4,0,
-10013,11,240,1,30,1
-10013,11,240,4,0,
-10013,11,241,1,30,2
-10013,11,241,4,0,
-10013,11,244,4,0,
-10013,11,247,4,0,
-10013,11,258,1,30,3
-10013,11,258,4,0,
-10013,11,263,4,0,
-10013,11,311,1,40,
-10013,11,412,4,0,
-10013,11,496,4,0,
-10013,11,503,4,0,
-10013,11,510,4,0,
-10013,11,514,4,0,
-10013,11,526,4,0,
-10014,11,29,1,20,
-10014,11,33,1,1,
-10014,11,52,1,10,2
-10014,11,53,4,0,
-10014,11,55,1,10,1
-10014,11,56,1,50,1
-10014,11,58,4,0,
-10014,11,59,1,50,3
-10014,11,59,4,0,
-10014,11,76,4,0,
-10014,11,85,4,0,
-10014,11,86,4,0,
-10014,11,87,4,0,
-10014,11,92,4,0,
-10014,11,104,4,0,
-10014,11,126,1,50,2
-10014,11,126,4,0,
-10014,11,148,4,0,
-10014,11,156,4,0,
-10014,11,164,4,0,
-10014,11,168,4,0,
-10014,11,181,1,10,3
-10014,11,182,4,0,
-10014,11,201,4,0,
-10014,11,207,4,0,
-10014,11,213,4,0,
-10014,11,216,4,0,
-10014,11,218,4,0,
-10014,11,237,4,0,
-10014,11,240,1,30,1
-10014,11,240,4,0,
-10014,11,241,1,30,2
-10014,11,241,4,0,
-10014,11,244,4,0,
-10014,11,247,4,0,
-10014,11,258,1,30,3
-10014,11,258,4,0,
-10014,11,263,4,0,
-10014,11,311,1,40,
-10014,11,412,4,0,
-10014,11,496,4,0,
-10014,11,503,4,0,
-10014,11,510,4,0,
-10014,11,514,4,0,
-10014,11,526,4,0,
-10015,11,29,1,20,
-10015,11,33,1,1,
-10015,11,52,1,10,2
-10015,11,53,4,0,
-10015,11,55,1,10,1
-10015,11,56,1,50,1
-10015,11,58,4,0,
-10015,11,59,1,50,3
-10015,11,59,4,0,
-10015,11,76,4,0,
-10015,11,85,4,0,
-10015,11,86,4,0,
-10015,11,87,4,0,
-10015,11,92,4,0,
-10015,11,104,4,0,
-10015,11,126,1,50,2
-10015,11,126,4,0,
-10015,11,148,4,0,
-10015,11,156,4,0,
-10015,11,164,4,0,
-10015,11,168,4,0,
-10015,11,181,1,10,3
-10015,11,182,4,0,
-10015,11,201,4,0,
-10015,11,207,4,0,
-10015,11,213,4,0,
-10015,11,216,4,0,
-10015,11,218,4,0,
-10015,11,237,4,0,
-10015,11,240,1,30,1
-10015,11,240,4,0,
-10015,11,241,1,30,2
-10015,11,241,4,0,
-10015,11,244,4,0,
-10015,11,247,4,0,
-10015,11,258,1,30,3
-10015,11,258,4,0,
-10015,11,263,4,0,
-10015,11,311,1,40,
-10015,11,412,4,0,
-10015,11,496,4,0,
-10015,11,503,4,0,
-10015,11,510,4,0,
-10015,11,514,4,0,
-10015,11,526,4,0,
-10016,11,15,4,0,
-10016,11,29,1,7,
-10016,11,33,1,1,1
-10016,11,36,1,20,
-10016,11,37,1,56,
-10016,11,38,1,36,
-10016,11,44,1,10,
-10016,11,55,1,1,2
-10016,11,57,4,0,
-10016,11,58,4,0,
-10016,11,92,4,0,
-10016,11,104,4,0,
-10016,11,127,4,0,
-10016,11,156,4,0,
-10016,11,164,4,0,
-10016,11,175,1,46,
-10016,11,182,4,0,
-10016,11,184,1,41,
-10016,11,207,4,0,
-10016,11,213,4,0,
-10016,11,216,4,0,
-10016,11,218,4,0,
-10016,11,237,4,0,
-10016,11,240,4,0,
-10016,11,242,1,24,
-10016,11,253,1,4,
-10016,11,258,4,0,
-10016,11,263,4,0,
-10016,11,269,4,0,
-10016,11,291,4,0,
-10016,11,401,1,28,
-10016,11,453,1,13,
-10016,11,487,1,32,
-10016,11,496,4,0,
-10016,11,498,1,16,
-10016,11,503,4,0,
-10016,11,515,1,51,
-10017,11,7,1,22,
-10017,11,29,1,14,
-10017,11,33,1,1,1
-10017,11,37,1,27,
-10017,11,46,4,0,
-10017,11,53,4,0,
-10017,11,63,4,0,
-10017,11,70,4,0,
-10017,11,76,4,0,
-10017,11,89,4,0,
-10017,11,91,4,0,
-10017,11,92,4,0,
-10017,11,94,4,0,
-10017,11,99,1,1,4
-10017,11,99,1,9,
-10017,11,104,4,0,
-10017,11,126,4,0,
-10017,11,156,4,0,
-10017,11,157,4,0,
-10017,11,164,4,0,
-10017,11,168,4,0,
-10017,11,182,4,0,
-10017,11,187,1,30,
-10017,11,205,1,1,2
-10017,11,205,1,3,
-10017,11,207,1,17,
-10017,11,207,4,0,
-10017,11,213,4,0,
-10017,11,216,4,0,
-10017,11,218,4,0,
-10017,11,237,4,0,
-10017,11,241,4,0,
-10017,11,249,4,0,
-10017,11,259,4,0,
-10017,11,261,4,0,
-10017,11,263,1,19,
-10017,11,263,4,0,
-10017,11,269,1,39,
-10017,11,269,4,0,
-10017,11,276,1,47,
-10017,11,280,4,0,
-10017,11,315,1,54,
-10017,11,315,4,0,
-10017,11,317,4,0,
-10017,11,339,4,0,
-10017,11,359,1,35,
-10017,11,360,4,0,
-10017,11,369,4,0,
-10017,11,371,4,0,
-10017,11,374,4,0,
-10017,11,394,1,33,
-10017,11,411,4,0,
-10017,11,416,4,0,
-10017,11,424,1,11,
-10017,11,444,4,0,
-10017,11,447,4,0,
-10017,11,479,4,0,
-10017,11,488,4,0,
-10017,11,496,4,0,
-10017,11,510,1,1,3
-10017,11,510,1,6,
-10017,11,510,4,0,
-10017,11,523,4,0,
-10017,11,526,1,25,
-10017,11,526,4,0,
-10018,11,47,1,16,
-10018,11,60,1,31,
-10018,11,63,4,0,
-10018,11,70,4,0,
-10018,11,85,4,0,
-10018,11,86,4,0,
-10018,11,87,4,0,
-10018,11,92,4,0,
-10018,11,93,1,11,
-10018,11,94,1,57,
-10018,11,94,4,0,
-10018,11,98,1,6,
-10018,11,104,4,0,
-10018,11,113,4,0,
-10018,11,138,4,0,
-10018,11,148,4,0,
-10018,11,156,4,0,
-10018,11,164,4,0,
-10018,11,182,4,0,
-10018,11,195,1,85,
-10018,11,207,4,0,
-10018,11,216,4,0,
-10018,11,218,4,0,
-10018,11,219,4,0,
-10018,11,237,4,0,
-10018,11,240,4,0,
-10018,11,241,4,0,
-10018,11,244,4,0,
-10018,11,247,4,0,
-10018,11,249,4,0,
-10018,11,263,4,0,
-10018,11,272,1,71,
-10018,11,280,4,0,
-10018,11,298,1,21,
-10018,11,304,1,64,
-10018,11,347,4,0,
-10018,11,358,1,50,
-10018,11,369,1,43,
-10018,11,369,4,0,
-10018,11,370,1,78,
-10018,11,371,4,0,
-10018,11,373,4,0,
-10018,11,374,4,0,
-10018,11,411,4,0,
-10018,11,412,4,0,
-10018,11,416,4,0,
-10018,11,421,4,0,
-10018,11,433,4,0,
-10018,11,444,4,0,
-10018,11,447,4,0,
-10018,11,451,4,0,
-10018,11,468,4,0,
-10018,11,473,4,0,
-10018,11,477,4,0,
-10018,11,490,4,0,
-10018,11,496,1,1,
-10018,11,496,4,0,
-10018,11,497,1,36,
-10018,11,497,4,0,
-10018,11,512,1,26,
-10018,11,512,4,0,
-10018,11,514,4,0,
-10018,11,526,4,0,
+650,7,15,4,0,
+650,7,35,1,1,2
+650,7,43,1,1,1
+650,7,58,4,0,
+650,7,63,1,50,
+650,7,63,4,0,
+650,7,70,4,0,
+650,7,76,4,0,
+650,7,85,4,0,
+650,7,87,4,0,
+650,7,92,4,0,
+650,7,94,1,25,
+650,7,94,4,0,
+650,7,100,1,10,
+650,7,101,1,5,
+650,7,104,4,0,
+650,7,113,4,0,
+650,7,115,4,0,
+650,7,148,4,0,
+650,7,156,4,0,
+650,7,182,4,0,
+650,7,192,1,40,
+650,7,216,4,0,
+650,7,218,4,0,
+650,7,219,4,0,
+650,7,228,1,20,
+650,7,237,4,0,
+650,7,240,4,0,
+650,7,241,4,0,
+650,7,247,4,0,
+650,7,249,4,0,
+650,7,259,4,0,
+650,7,263,4,0,
+650,7,264,4,0,
+650,7,269,1,15,
+650,7,269,4,0,
+650,7,276,1,30,
+650,7,280,4,0,
+650,7,285,4,0,
+650,7,289,4,0,
+650,7,290,4,0,
+650,7,317,4,0,
+650,7,322,1,35,
+650,7,332,4,0,
+650,7,347,4,0,
+650,7,351,4,0,
+650,7,352,4,0,
+650,7,354,1,45,
+650,8,15,4,0,
+650,8,35,1,1,2
+650,8,43,1,1,1
+650,8,58,4,0,
+650,8,63,1,97,
+650,8,63,4,0,
+650,8,70,4,0,
+650,8,76,4,0,
+650,8,85,4,0,
+650,8,86,4,0,
+650,8,87,4,0,
+650,8,92,4,0,
+650,8,94,1,41,
+650,8,94,4,0,
+650,8,100,1,17,
+650,8,101,1,9,
+650,8,104,4,0,
+650,8,113,4,0,
+650,8,115,4,0,
+650,8,138,4,0,
+650,8,148,4,0,
+650,8,156,4,0,
+650,8,157,4,0,
+650,8,164,4,0,
+650,8,182,4,0,
+650,8,192,1,81,
+650,8,203,4,0,
+650,8,207,4,0,
+650,8,214,4,0,
+650,8,216,4,0,
+650,8,218,4,0,
+650,8,219,4,0,
+650,8,228,1,33,
+650,8,237,4,0,
+650,8,240,4,0,
+650,8,241,4,0,
+650,8,244,4,0,
+650,8,247,4,0,
+650,8,249,4,0,
+650,8,259,4,0,
+650,8,263,4,0,
+650,8,264,4,0,
+650,8,269,1,25,
+650,8,269,4,0,
+650,8,276,1,49,
+650,8,278,4,0,
+650,8,280,4,0,
+650,8,285,4,0,
+650,8,289,4,0,
+650,8,290,4,0,
+650,8,317,4,0,
+650,8,322,1,73,
+650,8,332,4,0,
+650,8,347,4,0,
+650,8,351,4,0,
+650,8,352,4,0,
+650,8,354,1,89,
+650,8,363,4,0,
+650,8,374,4,0,
+650,8,375,1,57,
+650,8,398,4,0,
+650,8,409,4,0,
+650,8,411,4,0,
+650,8,412,4,0,
+650,8,416,4,0,
+650,8,419,4,0,
+650,8,428,1,65,
+650,8,430,4,0,
+650,8,433,4,0,
+650,8,446,4,0,
+650,8,447,4,0,
+650,8,451,4,0,
+650,9,7,3,0,
+650,9,8,3,0,
+650,9,9,3,0,
+650,9,15,4,0,
+650,9,35,1,1,2
+650,9,43,1,1,1
+650,9,58,4,0,
+650,9,63,1,97,
+650,9,63,4,0,
+650,9,70,4,0,
+650,9,76,4,0,
+650,9,85,4,0,
+650,9,86,4,0,
+650,9,87,4,0,
+650,9,92,4,0,
+650,9,94,1,41,
+650,9,94,4,0,
+650,9,100,1,17,
+650,9,101,1,9,
+650,9,104,4,0,
+650,9,113,4,0,
+650,9,115,4,0,
+650,9,129,3,0,
+650,9,138,4,0,
+650,9,148,4,0,
+650,9,156,4,0,
+650,9,157,4,0,
+650,9,164,4,0,
+650,9,173,3,0,
+650,9,182,4,0,
+650,9,189,3,0,
+650,9,192,1,81,
+650,9,196,3,0,
+650,9,203,4,0,
+650,9,207,4,0,
+650,9,214,4,0,
+650,9,216,4,0,
+650,9,218,4,0,
+650,9,219,4,0,
+650,9,228,1,33,
+650,9,237,4,0,
+650,9,240,4,0,
+650,9,241,4,0,
+650,9,244,4,0,
+650,9,247,4,0,
+650,9,249,4,0,
+650,9,259,4,0,
+650,9,263,4,0,
+650,9,264,4,0,
+650,9,269,1,25,
+650,9,269,4,0,
+650,9,271,3,0,
+650,9,276,1,49,
+650,9,278,4,0,
+650,9,280,4,0,
+650,9,282,3,0,
+650,9,285,4,0,
+650,9,289,4,0,
+650,9,290,4,0,
+650,9,317,4,0,
+650,9,322,1,73,
+650,9,324,3,0,
+650,9,332,4,0,
+650,9,347,4,0,
+650,9,351,4,0,
+650,9,352,4,0,
+650,9,354,1,89,
+650,9,363,4,0,
+650,9,374,4,0,
+650,9,375,1,57,
+650,9,398,4,0,
+650,9,409,4,0,
+650,9,411,4,0,
+650,9,412,4,0,
+650,9,416,4,0,
+650,9,419,4,0,
+650,9,428,1,65,
+650,9,428,3,0,
+650,9,430,4,0,
+650,9,433,4,0,
+650,9,446,4,0,
+650,9,447,4,0,
+650,9,451,4,0,
+650,10,7,3,0,
+650,10,8,3,0,
+650,10,9,3,0,
+650,10,15,4,0,
+650,10,29,3,0,
+650,10,35,1,1,2
+650,10,43,1,1,1
+650,10,58,4,0,
+650,10,63,1,97,
+650,10,63,4,0,
+650,10,67,3,0,
+650,10,70,4,0,
+650,10,76,4,0,
+650,10,85,4,0,
+650,10,86,4,0,
+650,10,87,4,0,
+650,10,92,4,0,
+650,10,94,1,41,
+650,10,94,4,0,
+650,10,100,1,17,
+650,10,101,1,9,
+650,10,104,4,0,
+650,10,113,4,0,
+650,10,115,4,0,
+650,10,129,3,0,
+650,10,138,4,0,
+650,10,148,4,0,
+650,10,156,4,0,
+650,10,157,4,0,
+650,10,164,4,0,
+650,10,173,3,0,
+650,10,182,4,0,
+650,10,189,3,0,
+650,10,192,1,81,
+650,10,196,3,0,
+650,10,203,4,0,
+650,10,207,4,0,
+650,10,214,4,0,
+650,10,216,4,0,
+650,10,218,4,0,
+650,10,219,4,0,
+650,10,228,1,33,
+650,10,237,4,0,
+650,10,240,4,0,
+650,10,241,4,0,
+650,10,244,4,0,
+650,10,247,4,0,
+650,10,249,4,0,
+650,10,259,4,0,
+650,10,263,4,0,
+650,10,264,4,0,
+650,10,269,1,25,
+650,10,269,4,0,
+650,10,271,3,0,
+650,10,272,3,0,
+650,10,276,1,49,
+650,10,278,4,0,
+650,10,280,4,0,
+650,10,282,3,0,
+650,10,285,4,0,
+650,10,289,4,0,
+650,10,290,4,0,
+650,10,317,4,0,
+650,10,322,1,73,
+650,10,324,3,0,
+650,10,332,4,0,
+650,10,347,4,0,
+650,10,351,4,0,
+650,10,352,4,0,
+650,10,354,1,89,
+650,10,356,3,0,
+650,10,363,4,0,
+650,10,374,4,0,
+650,10,375,1,57,
+650,10,398,4,0,
+650,10,409,4,0,
+650,10,411,4,0,
+650,10,412,4,0,
+650,10,416,4,0,
+650,10,419,4,0,
+650,10,428,1,65,
+650,10,428,3,0,
+650,10,430,4,0,
+650,10,433,4,0,
+650,10,446,4,0,
+650,10,447,4,0,
+650,10,451,4,0,
+650,11,15,4,0,
+650,11,35,1,1,2
+650,11,43,1,1,1
+650,11,58,4,0,
+650,11,63,1,97,
+650,11,63,4,0,
+650,11,70,4,0,
+650,11,76,4,0,
+650,11,85,4,0,
+650,11,86,4,0,
+650,11,87,4,0,
+650,11,92,4,0,
+650,11,94,1,41,
+650,11,94,4,0,
+650,11,100,1,17,
+650,11,101,1,9,
+650,11,104,4,0,
+650,11,113,4,0,
+650,11,115,4,0,
+650,11,138,4,0,
+650,11,148,4,0,
+650,11,156,4,0,
+650,11,157,4,0,
+650,11,164,4,0,
+650,11,182,4,0,
+650,11,192,1,81,
+650,11,207,4,0,
+650,11,216,4,0,
+650,11,218,4,0,
+650,11,219,4,0,
+650,11,228,1,33,
+650,11,237,4,0,
+650,11,240,4,0,
+650,11,241,4,0,
+650,11,244,4,0,
+650,11,247,4,0,
+650,11,249,4,0,
+650,11,259,4,0,
+650,11,263,4,0,
+650,11,269,1,25,
+650,11,269,4,0,
+650,11,276,1,49,
+650,11,280,4,0,
+650,11,317,4,0,
+650,11,322,1,73,
+650,11,332,4,0,
+650,11,347,4,0,
+650,11,354,1,89,
+650,11,374,4,0,
+650,11,375,1,57,
+650,11,398,4,0,
+650,11,411,4,0,
+650,11,412,4,0,
+650,11,416,4,0,
+650,11,428,1,65,
+650,11,430,4,0,
+650,11,433,4,0,
+650,11,447,4,0,
+650,11,451,4,0,
+650,11,473,4,0,
+650,11,477,4,0,
+650,11,490,4,0,
+650,11,496,4,0,
+650,11,502,4,0,
+651,7,15,4,0,
+651,7,35,1,1,2
+651,7,43,1,1,1
+651,7,58,4,0,
+651,7,63,4,0,
+651,7,68,1,50,1
+651,7,70,4,0,
+651,7,76,4,0,
+651,7,85,4,0,
+651,7,87,4,0,
+651,7,92,4,0,
+651,7,94,1,25,
+651,7,94,4,0,
+651,7,100,1,10,
+651,7,101,1,5,
+651,7,104,4,0,
+651,7,105,1,40,
+651,7,113,4,0,
+651,7,115,4,0,
+651,7,133,1,35,2
+651,7,148,4,0,
+651,7,156,4,0,
+651,7,182,4,0,
+651,7,191,1,20,
+651,7,216,4,0,
+651,7,218,4,0,
+651,7,219,4,0,
+651,7,237,4,0,
+651,7,240,4,0,
+651,7,241,4,0,
+651,7,243,1,50,2
+651,7,247,4,0,
+651,7,249,4,0,
+651,7,259,4,0,
+651,7,263,4,0,
+651,7,264,4,0,
+651,7,269,4,0,
+651,7,280,4,0,
+651,7,282,1,15,
+651,7,285,4,0,
+651,7,289,1,30,
+651,7,289,4,0,
+651,7,290,4,0,
+651,7,317,4,0,
+651,7,332,4,0,
+651,7,334,1,35,1
+651,7,347,4,0,
+651,7,351,4,0,
+651,7,352,4,0,
+651,7,354,1,45,
+651,8,15,4,0,
+651,8,35,1,1,2
+651,8,43,1,1,1
+651,8,58,4,0,
+651,8,63,4,0,
+651,8,68,1,97,1
+651,8,70,4,0,
+651,8,76,4,0,
+651,8,85,4,0,
+651,8,86,4,0,
+651,8,87,4,0,
+651,8,92,4,0,
+651,8,94,1,41,
+651,8,94,4,0,
+651,8,100,1,17,
+651,8,101,1,9,
+651,8,104,4,0,
+651,8,105,1,81,
+651,8,113,4,0,
+651,8,115,4,0,
+651,8,133,1,73,2
+651,8,138,4,0,
+651,8,148,4,0,
+651,8,156,4,0,
+651,8,157,4,0,
+651,8,164,4,0,
+651,8,182,4,0,
+651,8,191,1,33,
+651,8,203,4,0,
+651,8,207,4,0,
+651,8,214,4,0,
+651,8,216,4,0,
+651,8,218,4,0,
+651,8,219,4,0,
+651,8,237,4,0,
+651,8,240,4,0,
+651,8,241,4,0,
+651,8,243,1,97,2
+651,8,244,4,0,
+651,8,247,4,0,
+651,8,249,4,0,
+651,8,259,4,0,
+651,8,263,4,0,
+651,8,264,4,0,
+651,8,269,4,0,
+651,8,278,4,0,
+651,8,280,4,0,
+651,8,282,1,25,
+651,8,285,4,0,
+651,8,289,1,49,
+651,8,289,4,0,
+651,8,290,4,0,
+651,8,317,4,0,
+651,8,332,4,0,
+651,8,334,1,73,1
+651,8,347,4,0,
+651,8,351,4,0,
+651,8,352,4,0,
+651,8,354,1,89,
+651,8,363,4,0,
+651,8,374,4,0,
+651,8,375,1,57,
+651,8,398,4,0,
+651,8,409,4,0,
+651,8,411,4,0,
+651,8,412,4,0,
+651,8,416,4,0,
+651,8,419,4,0,
+651,8,428,1,65,
+651,8,430,4,0,
+651,8,433,4,0,
+651,8,446,4,0,
+651,8,447,4,0,
+651,8,451,4,0,
+651,9,7,3,0,
+651,9,8,3,0,
+651,9,9,3,0,
+651,9,15,4,0,
+651,9,35,1,1,2
+651,9,43,1,1,1
+651,9,58,4,0,
+651,9,63,4,0,
+651,9,68,1,97,1
+651,9,70,4,0,
+651,9,76,4,0,
+651,9,85,4,0,
+651,9,86,4,0,
+651,9,87,4,0,
+651,9,92,4,0,
+651,9,94,1,41,
+651,9,94,4,0,
+651,9,100,1,17,
+651,9,101,1,9,
+651,9,104,4,0,
+651,9,105,1,81,
+651,9,113,4,0,
+651,9,115,4,0,
+651,9,129,3,0,
+651,9,133,1,73,2
+651,9,138,4,0,
+651,9,148,4,0,
+651,9,156,4,0,
+651,9,157,4,0,
+651,9,164,4,0,
+651,9,173,3,0,
+651,9,182,4,0,
+651,9,189,3,0,
+651,9,191,1,33,
+651,9,196,3,0,
+651,9,203,4,0,
+651,9,207,4,0,
+651,9,214,4,0,
+651,9,216,4,0,
+651,9,218,4,0,
+651,9,219,4,0,
+651,9,237,4,0,
+651,9,240,4,0,
+651,9,241,4,0,
+651,9,243,1,97,2
+651,9,244,4,0,
+651,9,247,4,0,
+651,9,249,4,0,
+651,9,259,4,0,
+651,9,263,4,0,
+651,9,264,4,0,
+651,9,269,4,0,
+651,9,271,3,0,
+651,9,278,4,0,
+651,9,280,4,0,
+651,9,282,1,25,
+651,9,282,3,0,
+651,9,285,4,0,
+651,9,289,1,49,
+651,9,289,4,0,
+651,9,290,4,0,
+651,9,317,4,0,
+651,9,324,3,0,
+651,9,332,4,0,
+651,9,334,1,73,1
+651,9,347,4,0,
+651,9,351,4,0,
+651,9,352,4,0,
+651,9,354,1,89,
+651,9,363,4,0,
+651,9,374,4,0,
+651,9,375,1,57,
+651,9,398,4,0,
+651,9,409,4,0,
+651,9,411,4,0,
+651,9,412,4,0,
+651,9,416,4,0,
+651,9,419,4,0,
+651,9,428,1,65,
+651,9,428,3,0,
+651,9,430,4,0,
+651,9,433,4,0,
+651,9,446,4,0,
+651,9,447,4,0,
+651,9,451,4,0,
+651,10,7,3,0,
+651,10,8,3,0,
+651,10,9,3,0,
+651,10,15,4,0,
+651,10,29,3,0,
+651,10,35,1,1,2
+651,10,43,1,1,1
+651,10,58,4,0,
+651,10,63,4,0,
+651,10,67,3,0,
+651,10,68,1,97,1
+651,10,70,4,0,
+651,10,76,4,0,
+651,10,85,4,0,
+651,10,86,4,0,
+651,10,87,4,0,
+651,10,92,4,0,
+651,10,94,1,41,
+651,10,94,4,0,
+651,10,100,1,17,
+651,10,101,1,9,
+651,10,104,4,0,
+651,10,105,1,81,
+651,10,113,4,0,
+651,10,115,4,0,
+651,10,129,3,0,
+651,10,133,1,73,2
+651,10,138,4,0,
+651,10,148,4,0,
+651,10,156,4,0,
+651,10,157,4,0,
+651,10,164,4,0,
+651,10,173,3,0,
+651,10,182,4,0,
+651,10,189,3,0,
+651,10,191,1,33,
+651,10,196,3,0,
+651,10,203,4,0,
+651,10,207,4,0,
+651,10,214,4,0,
+651,10,216,4,0,
+651,10,218,4,0,
+651,10,219,4,0,
+651,10,237,4,0,
+651,10,240,4,0,
+651,10,241,4,0,
+651,10,243,1,97,2
+651,10,244,4,0,
+651,10,247,4,0,
+651,10,249,4,0,
+651,10,259,4,0,
+651,10,263,4,0,
+651,10,264,4,0,
+651,10,269,4,0,
+651,10,271,3,0,
+651,10,272,3,0,
+651,10,278,4,0,
+651,10,280,4,0,
+651,10,282,1,25,
+651,10,282,3,0,
+651,10,285,4,0,
+651,10,289,1,49,
+651,10,289,4,0,
+651,10,290,4,0,
+651,10,317,4,0,
+651,10,324,3,0,
+651,10,332,4,0,
+651,10,334,1,73,1
+651,10,347,4,0,
+651,10,351,4,0,
+651,10,352,4,0,
+651,10,354,1,89,
+651,10,356,3,0,
+651,10,363,4,0,
+651,10,374,4,0,
+651,10,375,1,57,
+651,10,398,4,0,
+651,10,409,4,0,
+651,10,411,4,0,
+651,10,412,4,0,
+651,10,416,4,0,
+651,10,419,4,0,
+651,10,428,1,65,
+651,10,428,3,0,
+651,10,430,4,0,
+651,10,433,4,0,
+651,10,446,4,0,
+651,10,447,4,0,
+651,10,451,4,0,
+651,11,15,4,0,
+651,11,35,1,1,2
+651,11,43,1,1,1
+651,11,58,4,0,
+651,11,63,4,0,
+651,11,68,1,97,1
+651,11,70,4,0,
+651,11,76,4,0,
+651,11,85,4,0,
+651,11,86,4,0,
+651,11,87,4,0,
+651,11,92,4,0,
+651,11,94,1,41,
+651,11,94,4,0,
+651,11,100,1,17,
+651,11,101,1,9,
+651,11,104,4,0,
+651,11,105,1,81,
+651,11,113,4,0,
+651,11,115,4,0,
+651,11,133,1,73,2
+651,11,138,4,0,
+651,11,148,4,0,
+651,11,156,4,0,
+651,11,157,4,0,
+651,11,164,4,0,
+651,11,182,4,0,
+651,11,191,1,33,
+651,11,207,4,0,
+651,11,216,4,0,
+651,11,218,4,0,
+651,11,219,4,0,
+651,11,237,4,0,
+651,11,240,4,0,
+651,11,241,4,0,
+651,11,243,1,97,2
+651,11,244,4,0,
+651,11,247,4,0,
+651,11,249,4,0,
+651,11,259,4,0,
+651,11,263,4,0,
+651,11,269,4,0,
+651,11,280,4,0,
+651,11,282,1,25,
+651,11,289,1,49,
+651,11,317,4,0,
+651,11,332,4,0,
+651,11,334,1,73,1
+651,11,347,4,0,
+651,11,354,1,89,
+651,11,374,4,0,
+651,11,375,1,57,
+651,11,398,4,0,
+651,11,411,4,0,
+651,11,412,4,0,
+651,11,416,4,0,
+651,11,428,1,65,
+651,11,430,4,0,
+651,11,433,4,0,
+651,11,447,4,0,
+651,11,451,4,0,
+651,11,473,4,0,
+651,11,477,4,0,
+651,11,490,4,0,
+651,11,496,4,0,
+651,11,502,4,0,
+652,6,15,4,0,
+652,6,35,1,1,2
+652,6,43,1,1,1
+652,6,58,4,0,
+652,6,63,4,0,
+652,6,70,4,0,
+652,6,76,4,0,
+652,6,85,4,0,
+652,6,87,4,0,
+652,6,92,4,0,
+652,6,94,1,25,
+652,6,94,4,0,
+652,6,97,1,35,
+652,6,101,1,5,
+652,6,104,1,10,
+652,6,104,4,0,
+652,6,105,1,40,
+652,6,113,4,0,
+652,6,115,4,0,
+652,6,129,1,30,
+652,6,148,4,0,
+652,6,156,4,0,
+652,6,182,4,0,
+652,6,216,4,0,
+652,6,218,4,0,
+652,6,219,4,0,
+652,6,228,1,20,
+652,6,237,4,0,
+652,6,240,4,0,
+652,6,241,4,0,
+652,6,245,1,50,
+652,6,247,4,0,
+652,6,249,4,0,
+652,6,259,4,0,
+652,6,263,4,0,
+652,6,264,4,0,
+652,6,269,4,0,
+652,6,280,4,0,
+652,6,282,1,15,
+652,6,285,4,0,
+652,6,289,4,0,
+652,6,290,4,0,
+652,6,317,4,0,
+652,6,332,4,0,
+652,6,347,4,0,
+652,6,351,4,0,
+652,6,352,4,0,
+652,6,354,1,45,
+652,8,15,4,0,
+652,8,35,1,1,2
+652,8,43,1,1,1
+652,8,58,4,0,
+652,8,63,4,0,
+652,8,70,4,0,
+652,8,76,4,0,
+652,8,85,4,0,
+652,8,86,4,0,
+652,8,87,4,0,
+652,8,92,4,0,
+652,8,94,1,41,
+652,8,94,4,0,
+652,8,97,1,73,
+652,8,101,1,9,
+652,8,104,1,17,
+652,8,104,4,0,
+652,8,105,1,81,
+652,8,113,4,0,
+652,8,115,4,0,
+652,8,129,1,49,
+652,8,138,4,0,
+652,8,148,4,0,
+652,8,156,4,0,
+652,8,157,4,0,
+652,8,164,4,0,
+652,8,182,4,0,
+652,8,203,4,0,
+652,8,207,4,0,
+652,8,214,4,0,
+652,8,216,4,0,
+652,8,218,4,0,
+652,8,219,4,0,
+652,8,228,1,33,
+652,8,237,4,0,
+652,8,240,4,0,
+652,8,241,4,0,
+652,8,244,4,0,
+652,8,245,1,97,
+652,8,247,4,0,
+652,8,249,4,0,
+652,8,259,4,0,
+652,8,263,4,0,
+652,8,264,4,0,
+652,8,269,4,0,
+652,8,278,4,0,
+652,8,280,4,0,
+652,8,282,1,25,
+652,8,285,4,0,
+652,8,289,4,0,
+652,8,290,4,0,
+652,8,317,4,0,
+652,8,332,4,0,
+652,8,347,4,0,
+652,8,351,4,0,
+652,8,352,4,0,
+652,8,354,1,89,
+652,8,363,4,0,
+652,8,374,4,0,
+652,8,375,1,57,
+652,8,398,4,0,
+652,8,409,4,0,
+652,8,411,4,0,
+652,8,412,4,0,
+652,8,416,4,0,
+652,8,419,4,0,
+652,8,428,1,65,
+652,8,430,4,0,
+652,8,433,4,0,
+652,8,446,4,0,
+652,8,447,4,0,
+652,8,451,4,0,
+652,9,7,3,0,
+652,9,8,3,0,
+652,9,9,3,0,
+652,9,15,4,0,
+652,9,35,1,1,2
+652,9,43,1,1,1
+652,9,58,4,0,
+652,9,63,4,0,
+652,9,70,4,0,
+652,9,76,4,0,
+652,9,85,4,0,
+652,9,86,4,0,
+652,9,87,4,0,
+652,9,92,4,0,
+652,9,94,1,41,
+652,9,94,4,0,
+652,9,97,1,73,
+652,9,101,1,9,
+652,9,104,1,17,
+652,9,104,4,0,
+652,9,105,1,81,
+652,9,113,4,0,
+652,9,115,4,0,
+652,9,129,1,49,
+652,9,129,3,0,
+652,9,138,4,0,
+652,9,148,4,0,
+652,9,156,4,0,
+652,9,157,4,0,
+652,9,164,4,0,
+652,9,173,3,0,
+652,9,182,4,0,
+652,9,189,3,0,
+652,9,196,3,0,
+652,9,203,4,0,
+652,9,207,4,0,
+652,9,214,4,0,
+652,9,216,4,0,
+652,9,218,4,0,
+652,9,219,4,0,
+652,9,228,1,33,
+652,9,237,4,0,
+652,9,240,4,0,
+652,9,241,4,0,
+652,9,244,4,0,
+652,9,245,1,97,
+652,9,247,4,0,
+652,9,249,4,0,
+652,9,259,4,0,
+652,9,263,4,0,
+652,9,264,4,0,
+652,9,269,4,0,
+652,9,271,3,0,
+652,9,278,4,0,
+652,9,280,4,0,
+652,9,282,1,25,
+652,9,282,3,0,
+652,9,285,4,0,
+652,9,289,4,0,
+652,9,290,4,0,
+652,9,317,4,0,
+652,9,324,3,0,
+652,9,332,4,0,
+652,9,347,4,0,
+652,9,351,4,0,
+652,9,352,4,0,
+652,9,354,1,89,
+652,9,363,4,0,
+652,9,374,4,0,
+652,9,375,1,57,
+652,9,398,4,0,
+652,9,409,4,0,
+652,9,411,4,0,
+652,9,412,4,0,
+652,9,416,4,0,
+652,9,419,4,0,
+652,9,428,1,65,
+652,9,428,3,0,
+652,9,430,4,0,
+652,9,433,4,0,
+652,9,446,4,0,
+652,9,447,4,0,
+652,9,451,4,0,
+652,10,7,3,0,
+652,10,8,3,0,
+652,10,9,3,0,
+652,10,15,4,0,
+652,10,29,3,0,
+652,10,35,1,1,2
+652,10,43,1,1,1
+652,10,58,4,0,
+652,10,63,4,0,
+652,10,67,3,0,
+652,10,70,4,0,
+652,10,76,4,0,
+652,10,85,4,0,
+652,10,86,4,0,
+652,10,87,4,0,
+652,10,92,4,0,
+652,10,94,1,41,
+652,10,94,4,0,
+652,10,97,1,73,
+652,10,101,1,9,
+652,10,104,1,17,
+652,10,104,4,0,
+652,10,105,1,81,
+652,10,113,4,0,
+652,10,115,4,0,
+652,10,129,1,49,
+652,10,129,3,0,
+652,10,138,4,0,
+652,10,148,4,0,
+652,10,156,4,0,
+652,10,157,4,0,
+652,10,164,4,0,
+652,10,173,3,0,
+652,10,182,4,0,
+652,10,189,3,0,
+652,10,196,3,0,
+652,10,203,4,0,
+652,10,207,4,0,
+652,10,214,4,0,
+652,10,216,4,0,
+652,10,218,4,0,
+652,10,219,4,0,
+652,10,228,1,33,
+652,10,237,4,0,
+652,10,240,4,0,
+652,10,241,4,0,
+652,10,244,4,0,
+652,10,245,1,97,
+652,10,247,4,0,
+652,10,249,4,0,
+652,10,259,4,0,
+652,10,263,4,0,
+652,10,264,4,0,
+652,10,269,4,0,
+652,10,271,3,0,
+652,10,272,3,0,
+652,10,278,4,0,
+652,10,280,4,0,
+652,10,282,1,25,
+652,10,282,3,0,
+652,10,285,4,0,
+652,10,289,4,0,
+652,10,290,4,0,
+652,10,317,4,0,
+652,10,324,3,0,
+652,10,332,4,0,
+652,10,347,4,0,
+652,10,351,4,0,
+652,10,352,4,0,
+652,10,354,1,89,
+652,10,356,3,0,
+652,10,363,4,0,
+652,10,374,4,0,
+652,10,375,1,57,
+652,10,398,4,0,
+652,10,409,4,0,
+652,10,411,4,0,
+652,10,412,4,0,
+652,10,416,4,0,
+652,10,419,4,0,
+652,10,428,1,65,
+652,10,428,3,0,
+652,10,430,4,0,
+652,10,433,4,0,
+652,10,446,4,0,
+652,10,447,4,0,
+652,10,451,4,0,
+652,11,15,4,0,
+652,11,35,1,1,2
+652,11,43,1,1,1
+652,11,58,4,0,
+652,11,63,4,0,
+652,11,70,4,0,
+652,11,76,4,0,
+652,11,85,4,0,
+652,11,86,4,0,
+652,11,87,4,0,
+652,11,92,4,0,
+652,11,94,1,41,
+652,11,94,4,0,
+652,11,97,1,73,
+652,11,101,1,9,
+652,11,104,1,17,
+652,11,104,4,0,
+652,11,105,1,81,
+652,11,113,4,0,
+652,11,115,4,0,
+652,11,129,1,49,
+652,11,138,4,0,
+652,11,148,4,0,
+652,11,156,4,0,
+652,11,157,4,0,
+652,11,164,4,0,
+652,11,182,4,0,
+652,11,207,4,0,
+652,11,216,4,0,
+652,11,218,4,0,
+652,11,219,4,0,
+652,11,228,1,33,
+652,11,237,4,0,
+652,11,240,4,0,
+652,11,241,4,0,
+652,11,244,4,0,
+652,11,245,1,97,
+652,11,247,4,0,
+652,11,249,4,0,
+652,11,259,4,0,
+652,11,263,4,0,
+652,11,269,4,0,
+652,11,280,4,0,
+652,11,282,1,25,
+652,11,317,4,0,
+652,11,332,4,0,
+652,11,347,4,0,
+652,11,354,1,89,
+652,11,374,4,0,
+652,11,375,1,57,
+652,11,398,4,0,
+652,11,411,4,0,
+652,11,412,4,0,
+652,11,416,4,0,
+652,11,428,1,65,
+652,11,430,4,0,
+652,11,433,4,0,
+652,11,447,4,0,
+652,11,451,4,0,
+652,11,473,4,0,
+652,11,477,4,0,
+652,11,490,4,0,
+652,11,496,4,0,
+652,11,502,4,0,
+653,8,33,1,1,
+653,8,60,1,32,
+653,8,63,4,0,
+653,8,89,4,0,
+653,8,90,1,47,
+653,8,91,4,0,
+653,8,92,4,0,
+653,8,93,1,23,
+653,8,94,1,44,
+653,8,94,4,0,
+653,8,104,4,0,
+653,8,106,1,29,
+653,8,138,4,0,
+653,8,148,4,0,
+653,8,156,4,0,
+653,8,164,4,0,
+653,8,168,4,0,
+653,8,175,1,38,
+653,8,182,1,10,
+653,8,182,4,0,
+653,8,201,4,0,
+653,8,203,4,0,
+653,8,207,4,0,
+653,8,213,1,41,
+653,8,213,4,0,
+653,8,214,4,0,
+653,8,216,4,0,
+653,8,218,4,0,
+653,8,219,4,0,
+653,8,237,1,20,
+653,8,237,4,0,
+653,8,240,4,0,
+653,8,241,4,0,
+653,8,244,4,0,
+653,8,247,4,0,
+653,8,263,4,0,
+653,8,285,4,0,
+653,8,290,4,0,
+653,8,317,4,0,
+653,8,350,1,26,
+653,8,363,4,0,
+653,8,416,4,0,
+653,8,445,1,35,
+653,8,445,4,0,
+653,9,33,1,1,
+653,9,60,1,32,
+653,9,63,4,0,
+653,9,89,4,0,
+653,9,90,1,47,
+653,9,91,4,0,
+653,9,92,4,0,
+653,9,93,1,23,
+653,9,94,1,44,
+653,9,94,4,0,
+653,9,104,4,0,
+653,9,106,1,29,
+653,9,138,4,0,
+653,9,148,4,0,
+653,9,156,4,0,
+653,9,164,4,0,
+653,9,168,4,0,
+653,9,173,3,0,
+653,9,175,1,38,
+653,9,182,1,10,
+653,9,182,4,0,
+653,9,189,3,0,
+653,9,201,4,0,
+653,9,203,4,0,
+653,9,205,3,0,
+653,9,207,4,0,
+653,9,213,1,41,
+653,9,213,4,0,
+653,9,214,4,0,
+653,9,216,4,0,
+653,9,218,4,0,
+653,9,219,4,0,
+653,9,237,1,20,
+653,9,237,4,0,
+653,9,240,4,0,
+653,9,241,4,0,
+653,9,244,4,0,
+653,9,247,4,0,
+653,9,253,3,0,
+653,9,263,4,0,
+653,9,283,3,0,
+653,9,285,4,0,
+653,9,290,4,0,
+653,9,317,4,0,
+653,9,324,3,0,
+653,9,350,1,26,
+653,9,363,4,0,
+653,9,389,3,0,
+653,9,414,3,0,
+653,9,416,4,0,
+653,9,445,1,35,
+653,9,445,4,0,
+653,9,450,1,15,
+653,10,33,1,1,
+653,10,60,1,32,
+653,10,63,4,0,
+653,10,81,3,0,
+653,10,89,4,0,
+653,10,90,1,47,
+653,10,91,4,0,
+653,10,92,4,0,
+653,10,93,1,23,
+653,10,94,1,44,
+653,10,94,4,0,
+653,10,104,4,0,
+653,10,106,1,29,
+653,10,138,4,0,
+653,10,148,4,0,
+653,10,156,4,0,
+653,10,164,4,0,
+653,10,168,4,0,
+653,10,173,3,0,
+653,10,175,1,38,
+653,10,182,1,10,
+653,10,182,4,0,
+653,10,189,3,0,
+653,10,201,4,0,
+653,10,203,4,0,
+653,10,205,3,0,
+653,10,207,4,0,
+653,10,213,1,41,
+653,10,213,4,0,
+653,10,214,4,0,
+653,10,216,4,0,
+653,10,218,4,0,
+653,10,219,4,0,
+653,10,237,1,20,
+653,10,237,4,0,
+653,10,240,4,0,
+653,10,241,4,0,
+653,10,244,4,0,
+653,10,247,4,0,
+653,10,253,3,0,
+653,10,263,4,0,
+653,10,283,3,0,
+653,10,285,4,0,
+653,10,290,4,0,
+653,10,317,4,0,
+653,10,324,3,0,
+653,10,350,1,26,
+653,10,363,4,0,
+653,10,389,3,0,
+653,10,414,3,0,
+653,10,416,4,0,
+653,10,445,1,35,
+653,10,445,4,0,
+653,10,450,1,15,
+653,10,450,3,0,
+653,11,33,1,1,
+653,11,60,1,32,
+653,11,63,4,0,
+653,11,89,4,0,
+653,11,90,1,47,
+653,11,91,4,0,
+653,11,92,4,0,
+653,11,93,1,23,
+653,11,94,1,44,
+653,11,94,4,0,
+653,11,104,4,0,
+653,11,106,1,29,
+653,11,138,4,0,
+653,11,148,4,0,
+653,11,156,4,0,
+653,11,164,4,0,
+653,11,168,4,0,
+653,11,175,1,38,
+653,11,182,1,10,
+653,11,182,4,0,
+653,11,201,4,0,
+653,11,207,4,0,
+653,11,213,1,41,
+653,11,213,4,0,
+653,11,216,4,0,
+653,11,218,4,0,
+653,11,219,4,0,
+653,11,237,1,20,
+653,11,237,4,0,
+653,11,240,4,0,
+653,11,241,4,0,
+653,11,244,4,0,
+653,11,247,4,0,
+653,11,263,4,0,
+653,11,317,4,0,
+653,11,350,1,26,
+653,11,416,4,0,
+653,11,445,1,35,
+653,11,450,1,15,
+653,11,474,4,0,
+653,11,496,4,0,
+653,11,522,4,0,
+653,11,523,4,0,
+654,8,33,1,1,
+654,8,60,1,32,
+654,8,63,4,0,
+654,8,92,4,0,
+654,8,93,1,23,
+654,8,94,1,44,
+654,8,94,4,0,
+654,8,104,4,0,
+654,8,138,4,0,
+654,8,148,4,0,
+654,8,156,4,0,
+654,8,164,4,0,
+654,8,168,4,0,
+654,8,175,1,38,
+654,8,182,1,10,
+654,8,182,4,0,
+654,8,203,4,0,
+654,8,207,4,0,
+654,8,213,1,41,
+654,8,213,4,0,
+654,8,214,4,0,
+654,8,216,4,0,
+654,8,218,4,0,
+654,8,219,4,0,
+654,8,237,1,20,
+654,8,237,4,0,
+654,8,240,4,0,
+654,8,241,4,0,
+654,8,244,4,0,
+654,8,247,4,0,
+654,8,263,4,0,
+654,8,285,4,0,
+654,8,290,4,0,
+654,8,319,1,29,
+654,8,360,4,0,
+654,8,363,4,0,
+654,8,416,4,0,
+654,8,429,1,26,
+654,8,430,4,0,
+654,8,442,1,47,
+654,8,445,1,35,
+654,8,445,4,0,
+654,8,446,4,0,
+654,9,33,1,1,
+654,9,60,1,32,
+654,9,63,4,0,
+654,9,92,4,0,
+654,9,93,1,23,
+654,9,94,1,44,
+654,9,94,4,0,
+654,9,104,4,0,
+654,9,138,4,0,
+654,9,148,4,0,
+654,9,156,4,0,
+654,9,164,4,0,
+654,9,168,4,0,
+654,9,173,3,0,
+654,9,175,1,38,
+654,9,182,1,10,
+654,9,182,4,0,
+654,9,203,4,0,
+654,9,207,4,0,
+654,9,213,1,41,
+654,9,213,4,0,
+654,9,214,4,0,
+654,9,216,4,0,
+654,9,218,4,0,
+654,9,219,4,0,
+654,9,237,1,20,
+654,9,237,4,0,
+654,9,240,4,0,
+654,9,241,4,0,
+654,9,244,4,0,
+654,9,247,4,0,
+654,9,253,3,0,
+654,9,263,4,0,
+654,9,283,3,0,
+654,9,285,4,0,
+654,9,290,4,0,
+654,9,319,1,29,
+654,9,324,3,0,
+654,9,334,3,0,
+654,9,360,4,0,
+654,9,363,4,0,
+654,9,389,3,0,
+654,9,393,3,0,
+654,9,416,4,0,
+654,9,429,1,26,
+654,9,430,4,0,
+654,9,441,3,0,
+654,9,442,1,47,
+654,9,442,3,0,
+654,9,445,1,35,
+654,9,445,4,0,
+654,9,446,4,0,
+654,9,450,1,15,
+654,10,33,1,1,
+654,10,60,1,32,
+654,10,63,4,0,
+654,10,81,3,0,
+654,10,92,4,0,
+654,10,93,1,23,
+654,10,94,1,44,
+654,10,94,4,0,
+654,10,104,4,0,
+654,10,138,4,0,
+654,10,148,4,0,
+654,10,156,4,0,
+654,10,164,4,0,
+654,10,168,4,0,
+654,10,173,3,0,
+654,10,175,1,38,
+654,10,182,1,10,
+654,10,182,4,0,
+654,10,203,4,0,
+654,10,207,4,0,
+654,10,213,1,41,
+654,10,213,4,0,
+654,10,214,4,0,
+654,10,216,4,0,
+654,10,218,4,0,
+654,10,219,4,0,
+654,10,237,1,20,
+654,10,237,4,0,
+654,10,240,4,0,
+654,10,241,4,0,
+654,10,244,4,0,
+654,10,247,4,0,
+654,10,253,3,0,
+654,10,263,4,0,
+654,10,283,3,0,
+654,10,285,4,0,
+654,10,290,4,0,
+654,10,319,1,29,
+654,10,324,3,0,
+654,10,334,3,0,
+654,10,360,4,0,
+654,10,363,4,0,
+654,10,389,3,0,
+654,10,393,3,0,
+654,10,416,4,0,
+654,10,429,1,26,
+654,10,430,4,0,
+654,10,441,3,0,
+654,10,442,1,47,
+654,10,442,3,0,
+654,10,445,1,35,
+654,10,445,4,0,
+654,10,446,4,0,
+654,10,450,1,15,
+654,10,450,3,0,
+654,11,33,1,1,
+654,11,60,1,32,
+654,11,63,4,0,
+654,11,92,4,0,
+654,11,93,1,23,
+654,11,94,1,44,
+654,11,94,4,0,
+654,11,104,4,0,
+654,11,138,4,0,
+654,11,148,4,0,
+654,11,156,4,0,
+654,11,164,4,0,
+654,11,168,4,0,
+654,11,175,1,38,
+654,11,182,1,10,
+654,11,182,4,0,
+654,11,207,4,0,
+654,11,213,1,41,
+654,11,213,4,0,
+654,11,216,4,0,
+654,11,218,4,0,
+654,11,219,4,0,
+654,11,237,1,20,
+654,11,237,4,0,
+654,11,240,4,0,
+654,11,241,4,0,
+654,11,244,4,0,
+654,11,247,4,0,
+654,11,263,4,0,
+654,11,319,1,29,
+654,11,360,4,0,
+654,11,416,4,0,
+654,11,429,1,26,
+654,11,430,4,0,
+654,11,442,1,47,
+654,11,445,1,35,
+654,11,450,1,15,
+654,11,474,4,0,
+654,11,496,4,0,
+654,11,522,4,0,
+655,9,14,4,0,
+655,9,63,4,0,
+655,9,73,1,19,
+655,9,74,1,1,
+655,9,76,4,0,
+655,9,92,4,0,
+655,9,94,4,0,
+655,9,98,1,28,
+655,9,104,4,0,
+655,9,129,3,0,
+655,9,148,4,0,
+655,9,156,4,0,
+655,9,164,4,0,
+655,9,173,3,0,
+655,9,182,4,0,
+655,9,186,1,82,
+655,9,189,3,0,
+655,9,202,4,0,
+655,9,203,4,0,
+655,9,207,4,0,
+655,9,214,4,0,
+655,9,216,4,0,
+655,9,218,4,0,
+655,9,219,4,0,
+655,9,230,1,37,
+655,9,235,3,0,
+655,9,237,4,0,
+655,9,241,4,0,
+655,9,244,4,0,
+655,9,263,4,0,
+655,9,290,4,0,
+655,9,314,3,0,
+655,9,331,4,0,
+655,9,345,1,10,
+655,9,363,1,46,
+655,9,363,4,0,
+655,9,387,3,0,
+655,9,388,1,55,
+655,9,402,3,0,
+655,9,403,1,64,
+655,9,412,1,73,
+655,9,412,4,0,
+655,9,416,4,0,
+655,9,428,3,0,
+655,9,437,1,91,
+655,9,447,4,0,
+655,9,465,1,100,
+655,9,466,3,0,
+655,10,14,4,0,
+655,10,29,3,0,
+655,10,63,4,0,
+655,10,73,1,19,
+655,10,74,1,1,
+655,10,76,4,0,
+655,10,92,4,0,
+655,10,94,4,0,
+655,10,98,1,28,
+655,10,104,4,0,
+655,10,129,3,0,
+655,10,148,4,0,
+655,10,156,4,0,
+655,10,164,4,0,
+655,10,173,3,0,
+655,10,182,4,0,
+655,10,186,1,82,
+655,10,189,3,0,
+655,10,202,4,0,
+655,10,203,4,0,
+655,10,207,4,0,
+655,10,214,4,0,
+655,10,216,4,0,
+655,10,218,4,0,
+655,10,219,4,0,
+655,10,230,1,37,
+655,10,235,3,0,
+655,10,237,4,0,
+655,10,241,4,0,
+655,10,244,4,0,
+655,10,263,4,0,
+655,10,290,4,0,
+655,10,314,3,0,
+655,10,331,4,0,
+655,10,345,1,10,
+655,10,363,1,46,
+655,10,363,4,0,
+655,10,366,3,0,
+655,10,387,3,0,
+655,10,388,1,55,
+655,10,388,3,0,
+655,10,402,3,0,
+655,10,403,1,64,
+655,10,412,1,73,
+655,10,412,4,0,
+655,10,416,4,0,
+655,10,428,3,0,
+655,10,437,1,91,
+655,10,447,4,0,
+655,10,465,1,100,
+655,10,466,3,0,
+655,11,14,4,0,
+655,11,63,4,0,
+655,11,73,1,19,
+655,11,74,1,1,
+655,11,76,4,0,
+655,11,92,4,0,
+655,11,94,4,0,
+655,11,98,1,28,
+655,11,104,4,0,
+655,11,148,4,0,
+655,11,156,4,0,
+655,11,164,4,0,
+655,11,182,4,0,
+655,11,186,1,82,
+655,11,207,4,0,
+655,11,216,4,0,
+655,11,218,4,0,
+655,11,219,4,0,
+655,11,230,1,37,
+655,11,237,4,0,
+655,11,241,4,0,
+655,11,244,4,0,
+655,11,263,4,0,
+655,11,345,1,10,
+655,11,363,1,46,
+655,11,388,1,55,
+655,11,403,1,64,
+655,11,412,1,73,
+655,11,412,4,0,
+655,11,416,4,0,
+655,11,437,1,91,
+655,11,447,4,0,
+655,11,465,1,100,
+655,11,496,4,0,
+656,9,15,4,0,
+656,9,19,4,0,
+656,9,46,4,0,
+656,9,63,4,0,
+656,9,70,4,0,
+656,9,85,4,0,
+656,9,86,4,0,
+656,9,87,4,0,
+656,9,89,4,0,
+656,9,92,4,0,
+656,9,94,4,0,
+656,9,104,4,0,
+656,9,129,3,0,
+656,9,138,4,0,
+656,9,156,4,0,
+656,9,163,1,70,
+656,9,164,4,0,
+656,9,173,3,0,
+656,9,180,3,0,
+656,9,182,4,0,
+656,9,184,1,1,2
+656,9,189,3,0,
+656,9,196,3,0,
+656,9,200,3,0,
+656,9,203,4,0,
+656,9,207,4,0,
+656,9,210,3,0,
+656,9,211,4,0,
+656,9,214,4,0,
+656,9,216,4,0,
+656,9,218,4,0,
+656,9,219,4,0,
+656,9,225,1,1,1
+656,9,231,4,0,
+656,9,237,4,0,
+656,9,239,3,0,
+656,9,240,4,0,
+656,9,241,4,0,
+656,9,244,4,0,
+656,9,246,1,20,
+656,9,246,3,0,
+656,9,247,4,0,
+656,9,249,4,0,
+656,9,261,4,0,
+656,9,263,4,0,
+656,9,290,4,0,
+656,9,314,3,0,
+656,9,318,4,0,
+656,9,332,4,0,
+656,9,337,1,30,
+656,9,337,4,0,
+656,9,347,4,0,
+656,9,351,4,0,
+656,9,363,4,0,
+656,9,371,4,0,
+656,9,377,1,50,
+656,9,396,1,90,
+656,9,399,4,0,
+656,9,401,3,0,
+656,9,406,4,0,
+656,9,412,4,0,
+656,9,414,1,60,
+656,9,414,3,0,
+656,9,416,4,0,
+656,9,421,1,80,
+656,9,421,4,0,
+656,9,431,4,0,
+656,9,432,4,0,
+656,9,434,3,0,
+656,9,442,3,0,
+656,9,444,4,0,
+656,9,451,4,0,
+656,9,466,1,10,
+656,9,466,3,0,
+656,9,467,1,40,
+656,10,15,4,0,
+656,10,19,4,0,
+656,10,29,3,0,
+656,10,46,4,0,
+656,10,63,4,0,
+656,10,70,4,0,
+656,10,85,4,0,
+656,10,86,4,0,
+656,10,87,4,0,
+656,10,89,4,0,
+656,10,92,4,0,
+656,10,94,4,0,
+656,10,104,4,0,
+656,10,129,3,0,
+656,10,138,4,0,
+656,10,156,4,0,
+656,10,163,1,15,
+656,10,164,4,0,
+656,10,173,3,0,
+656,10,180,3,0,
+656,10,182,4,0,
+656,10,184,1,1,2
+656,10,189,3,0,
+656,10,194,1,24,
+656,10,196,3,0,
+656,10,200,3,0,
+656,10,203,4,0,
+656,10,207,4,0,
+656,10,210,3,0,
+656,10,211,4,0,
+656,10,214,4,0,
+656,10,216,4,0,
+656,10,218,4,0,
+656,10,219,4,0,
+656,10,220,3,0,
+656,10,225,1,1,1
+656,10,231,4,0,
+656,10,237,4,0,
+656,10,239,3,0,
+656,10,240,4,0,
+656,10,241,4,0,
+656,10,244,4,0,
+656,10,246,1,10,
+656,10,246,3,0,
+656,10,247,4,0,
+656,10,249,4,0,
+656,10,261,4,0,
+656,10,263,4,0,
+656,10,272,3,0,
+656,10,277,3,0,
+656,10,290,4,0,
+656,10,314,3,0,
+656,10,318,4,0,
+656,10,332,4,0,
+656,10,337,1,28,
+656,10,337,4,0,
+656,10,347,4,0,
+656,10,351,4,0,
+656,10,356,3,0,
+656,10,363,4,0,
+656,10,366,3,0,
+656,10,371,4,0,
+656,10,396,1,37,
+656,10,399,4,0,
+656,10,401,3,0,
+656,10,406,4,0,
+656,10,412,4,0,
+656,10,414,1,33,
+656,10,414,3,0,
+656,10,416,4,0,
+656,10,421,1,42,
+656,10,421,4,0,
+656,10,425,1,19,
+656,10,431,4,0,
+656,10,434,3,0,
+656,10,442,3,0,
+656,10,444,4,0,
+656,10,451,4,0,
+656,10,466,1,6,
+656,10,466,3,0,
+656,10,467,1,46,
+656,11,15,4,0,
+656,11,19,4,0,
+656,11,46,4,0,
+656,11,63,4,0,
+656,11,70,4,0,
+656,11,85,4,0,
+656,11,86,4,0,
+656,11,87,4,0,
+656,11,89,4,0,
+656,11,92,4,0,
+656,11,94,4,0,
+656,11,104,4,0,
+656,11,138,4,0,
+656,11,156,4,0,
+656,11,163,1,15,
+656,11,164,4,0,
+656,11,182,4,0,
+656,11,184,1,1,2
+656,11,194,1,24,
+656,11,207,4,0,
+656,11,216,4,0,
+656,11,218,4,0,
+656,11,219,4,0,
+656,11,225,1,1,1
+656,11,237,4,0,
+656,11,240,4,0,
+656,11,241,4,0,
+656,11,244,4,0,
+656,11,246,1,10,
+656,11,247,4,0,
+656,11,249,4,0,
+656,11,261,4,0,
+656,11,263,4,0,
+656,11,332,4,0,
+656,11,337,1,28,
+656,11,337,4,0,
+656,11,347,4,0,
+656,11,371,4,0,
+656,11,396,1,37,
+656,11,412,4,0,
+656,11,414,1,33,
+656,11,416,4,0,
+656,11,421,1,42,
+656,11,421,4,0,
+656,11,425,1,19,
+656,11,434,3,0,
+656,11,444,4,0,
+656,11,451,4,0,
+656,11,466,1,6,
+656,11,467,1,46,
+656,11,468,4,0,
+656,11,477,4,0,
+656,11,496,4,0,
+656,11,497,4,0,
+656,11,506,1,50,
+656,11,523,4,0,
+656,11,525,4,0,
+657,9,84,1,1,4
+657,9,85,4,0,
+657,9,86,1,1,3
+657,9,86,4,0,
+657,9,87,4,0,
+657,9,92,4,0,
+657,9,104,1,15,
+657,9,104,4,0,
+657,9,109,1,1,5
+657,9,113,4,0,
+657,9,115,4,0,
+657,9,129,3,0,
+657,9,138,4,0,
+657,9,148,4,0,
+657,9,156,4,0,
+657,9,164,1,36,
+657,9,164,4,0,
+657,9,168,4,0,
+657,9,173,3,0,
+657,9,180,3,0,
+657,9,182,4,0,
+657,9,189,3,0,
+657,9,203,4,0,
+657,9,207,4,0,
+657,9,214,4,0,
+657,9,216,4,0,
+657,9,218,4,0,
+657,9,237,4,0,
+657,9,240,4,0,
+657,9,241,4,0,
+657,9,244,4,0,
+657,9,247,4,0,
+657,9,253,1,8,
+657,9,261,4,0,
+657,9,263,4,0,
+657,9,268,1,43,
+657,9,271,1,1,1
+657,9,271,3,0,
+657,9,289,4,0,
+657,9,290,4,0,
+657,9,310,1,1,2
+657,9,315,10,0,
+657,9,324,3,0,
+657,9,351,1,22,
+657,9,351,4,0,
+657,9,363,4,0,
+657,9,389,3,0,
+657,9,399,4,0,
+657,9,435,1,50,
+657,9,451,4,0,
+657,9,466,1,29,
+657,9,466,3,0,
+657,10,84,1,1,4
+657,10,85,4,0,
+657,10,86,1,1,3
+657,10,86,4,0,
+657,10,87,4,0,
+657,10,92,4,0,
+657,10,104,1,15,
+657,10,104,4,0,
+657,10,109,1,1,5
+657,10,113,4,0,
+657,10,115,4,0,
+657,10,129,3,0,
+657,10,138,4,0,
+657,10,148,4,0,
+657,10,156,4,0,
+657,10,164,1,36,
+657,10,164,4,0,
+657,10,168,4,0,
+657,10,173,3,0,
+657,10,180,3,0,
+657,10,182,4,0,
+657,10,189,3,0,
+657,10,203,4,0,
+657,10,207,4,0,
+657,10,214,4,0,
+657,10,216,4,0,
+657,10,218,4,0,
+657,10,220,3,0,
+657,10,237,4,0,
+657,10,240,4,0,
+657,10,241,4,0,
+657,10,244,4,0,
+657,10,247,4,0,
+657,10,253,1,8,
+657,10,261,4,0,
+657,10,263,4,0,
+657,10,268,1,43,
+657,10,271,1,1,1
+657,10,271,3,0,
+657,10,289,4,0,
+657,10,290,4,0,
+657,10,310,1,1,2
+657,10,315,10,0,
+657,10,324,3,0,
+657,10,351,1,22,
+657,10,351,4,0,
+657,10,363,4,0,
+657,10,389,3,0,
+657,10,399,4,0,
+657,10,435,1,50,
+657,10,451,4,0,
+657,10,466,1,29,
+657,10,466,3,0,
+657,11,84,1,1,4
+657,11,85,4,0,
+657,11,86,1,1,3
+657,11,86,4,0,
+657,11,87,4,0,
+657,11,92,4,0,
+657,11,104,1,15,
+657,11,104,4,0,
+657,11,109,1,1,5
+657,11,113,4,0,
+657,11,115,4,0,
+657,11,138,4,0,
+657,11,148,4,0,
+657,11,156,4,0,
+657,11,164,1,36,
+657,11,164,4,0,
+657,11,168,4,0,
+657,11,182,4,0,
+657,11,207,4,0,
+657,11,216,4,0,
+657,11,218,4,0,
+657,11,237,4,0,
+657,11,240,4,0,
+657,11,241,4,0,
+657,11,244,4,0,
+657,11,247,4,0,
+657,11,253,1,8,
+657,11,261,4,0,
+657,11,263,4,0,
+657,11,268,1,57,
+657,11,271,1,1,1
+657,11,310,1,1,2
+657,11,351,1,22,
+657,11,435,1,64,
+657,11,451,4,0,
+657,11,466,1,29,
+657,11,477,4,0,
+657,11,486,1,43,
+657,11,496,4,0,
+657,11,506,1,50,
+657,11,521,4,0,
+658,9,56,10,0,
+658,9,84,1,1,4
+658,9,85,4,0,
+658,9,86,1,1,3
+658,9,86,4,0,
+658,9,87,4,0,
+658,9,92,4,0,
+658,9,104,1,15,
+658,9,104,4,0,
+658,9,109,1,1,5
+658,9,113,4,0,
+658,9,115,4,0,
+658,9,129,3,0,
+658,9,138,4,0,
+658,9,148,4,0,
+658,9,156,4,0,
+658,9,164,1,36,
+658,9,164,4,0,
+658,9,168,4,0,
+658,9,173,3,0,
+658,9,180,3,0,
+658,9,182,4,0,
+658,9,189,3,0,
+658,9,203,4,0,
+658,9,207,4,0,
+658,9,214,4,0,
+658,9,216,4,0,
+658,9,218,4,0,
+658,9,237,4,0,
+658,9,240,4,0,
+658,9,241,4,0,
+658,9,244,4,0,
+658,9,247,4,0,
+658,9,253,1,8,
+658,9,261,4,0,
+658,9,263,4,0,
+658,9,268,1,43,
+658,9,271,1,1,1
+658,9,271,3,0,
+658,9,289,4,0,
+658,9,290,4,0,
+658,9,310,1,1,2
+658,9,324,3,0,
+658,9,351,1,22,
+658,9,351,4,0,
+658,9,363,4,0,
+658,9,389,3,0,
+658,9,399,4,0,
+658,9,435,1,50,
+658,9,451,4,0,
+658,9,466,1,29,
+658,9,466,3,0,
+658,10,56,10,0,
+658,10,84,1,1,4
+658,10,85,4,0,
+658,10,86,1,1,3
+658,10,86,4,0,
+658,10,87,4,0,
+658,10,92,4,0,
+658,10,104,1,15,
+658,10,104,4,0,
+658,10,109,1,1,5
+658,10,113,4,0,
+658,10,115,4,0,
+658,10,129,3,0,
+658,10,138,4,0,
+658,10,148,4,0,
+658,10,156,4,0,
+658,10,164,1,36,
+658,10,164,4,0,
+658,10,168,4,0,
+658,10,173,3,0,
+658,10,180,3,0,
+658,10,182,4,0,
+658,10,189,3,0,
+658,10,203,4,0,
+658,10,207,4,0,
+658,10,214,4,0,
+658,10,216,4,0,
+658,10,218,4,0,
+658,10,220,3,0,
+658,10,237,4,0,
+658,10,240,4,0,
+658,10,241,4,0,
+658,10,244,4,0,
+658,10,247,4,0,
+658,10,253,1,8,
+658,10,261,4,0,
+658,10,263,4,0,
+658,10,268,1,43,
+658,10,271,1,1,1
+658,10,271,3,0,
+658,10,289,4,0,
+658,10,290,4,0,
+658,10,310,1,1,2
+658,10,324,3,0,
+658,10,351,1,22,
+658,10,351,4,0,
+658,10,363,4,0,
+658,10,389,3,0,
+658,10,399,4,0,
+658,10,435,1,50,
+658,10,451,4,0,
+658,10,466,1,29,
+658,10,466,3,0,
+658,11,84,1,1,4
+658,11,85,4,0,
+658,11,86,1,1,3
+658,11,86,4,0,
+658,11,87,4,0,
+658,11,92,4,0,
+658,11,104,1,15,
+658,11,104,4,0,
+658,11,109,1,1,5
+658,11,113,4,0,
+658,11,115,4,0,
+658,11,138,4,0,
+658,11,148,4,0,
+658,11,156,4,0,
+658,11,164,1,36,
+658,11,164,4,0,
+658,11,168,4,0,
+658,11,182,4,0,
+658,11,207,4,0,
+658,11,216,4,0,
+658,11,218,4,0,
+658,11,237,4,0,
+658,11,240,4,0,
+658,11,241,4,0,
+658,11,244,4,0,
+658,11,247,4,0,
+658,11,253,1,8,
+658,11,261,4,0,
+658,11,263,4,0,
+658,11,268,1,57,
+658,11,271,1,1,1
+658,11,310,1,1,2
+658,11,351,1,22,
+658,11,435,1,64,
+658,11,451,4,0,
+658,11,466,1,29,
+658,11,477,4,0,
+658,11,486,1,43,
+658,11,496,4,0,
+658,11,506,1,50,
+658,11,521,4,0,
+659,9,59,10,0,
+659,9,84,1,1,4
+659,9,85,4,0,
+659,9,86,1,1,3
+659,9,86,4,0,
+659,9,87,4,0,
+659,9,92,4,0,
+659,9,104,1,15,
+659,9,104,4,0,
+659,9,109,1,1,5
+659,9,113,4,0,
+659,9,115,4,0,
+659,9,129,3,0,
+659,9,138,4,0,
+659,9,148,4,0,
+659,9,156,4,0,
+659,9,164,1,36,
+659,9,164,4,0,
+659,9,168,4,0,
+659,9,173,3,0,
+659,9,180,3,0,
+659,9,182,4,0,
+659,9,189,3,0,
+659,9,203,4,0,
+659,9,207,4,0,
+659,9,214,4,0,
+659,9,216,4,0,
+659,9,218,4,0,
+659,9,237,4,0,
+659,9,240,4,0,
+659,9,241,4,0,
+659,9,244,4,0,
+659,9,247,4,0,
+659,9,253,1,8,
+659,9,261,4,0,
+659,9,263,4,0,
+659,9,268,1,43,
+659,9,271,1,1,1
+659,9,271,3,0,
+659,9,289,4,0,
+659,9,290,4,0,
+659,9,310,1,1,2
+659,9,324,3,0,
+659,9,351,1,22,
+659,9,351,4,0,
+659,9,363,4,0,
+659,9,389,3,0,
+659,9,399,4,0,
+659,9,435,1,50,
+659,9,451,4,0,
+659,9,466,1,29,
+659,9,466,3,0,
+659,10,59,10,0,
+659,10,84,1,1,4
+659,10,85,4,0,
+659,10,86,1,1,3
+659,10,86,4,0,
+659,10,87,4,0,
+659,10,92,4,0,
+659,10,104,1,15,
+659,10,104,4,0,
+659,10,109,1,1,5
+659,10,113,4,0,
+659,10,115,4,0,
+659,10,129,3,0,
+659,10,138,4,0,
+659,10,148,4,0,
+659,10,156,4,0,
+659,10,164,1,36,
+659,10,164,4,0,
+659,10,168,4,0,
+659,10,173,3,0,
+659,10,180,3,0,
+659,10,182,4,0,
+659,10,189,3,0,
+659,10,203,4,0,
+659,10,207,4,0,
+659,10,214,4,0,
+659,10,216,4,0,
+659,10,218,4,0,
+659,10,220,3,0,
+659,10,237,4,0,
+659,10,240,4,0,
+659,10,241,4,0,
+659,10,244,4,0,
+659,10,247,4,0,
+659,10,253,1,8,
+659,10,261,4,0,
+659,10,263,4,0,
+659,10,268,1,43,
+659,10,271,1,1,1
+659,10,271,3,0,
+659,10,289,4,0,
+659,10,290,4,0,
+659,10,310,1,1,2
+659,10,324,3,0,
+659,10,351,1,22,
+659,10,351,4,0,
+659,10,363,4,0,
+659,10,389,3,0,
+659,10,399,4,0,
+659,10,435,1,50,
+659,10,451,4,0,
+659,10,466,1,29,
+659,10,466,3,0,
+659,11,84,1,1,4
+659,11,85,4,0,
+659,11,86,1,1,3
+659,11,86,4,0,
+659,11,87,4,0,
+659,11,92,4,0,
+659,11,104,1,15,
+659,11,104,4,0,
+659,11,109,1,1,5
+659,11,113,4,0,
+659,11,115,4,0,
+659,11,138,4,0,
+659,11,148,4,0,
+659,11,156,4,0,
+659,11,164,1,36,
+659,11,164,4,0,
+659,11,168,4,0,
+659,11,182,4,0,
+659,11,207,4,0,
+659,11,216,4,0,
+659,11,218,4,0,
+659,11,237,4,0,
+659,11,240,4,0,
+659,11,241,4,0,
+659,11,244,4,0,
+659,11,247,4,0,
+659,11,253,1,8,
+659,11,261,4,0,
+659,11,263,4,0,
+659,11,268,1,57,
+659,11,271,1,1,1
+659,11,310,1,1,2
+659,11,351,1,22,
+659,11,435,1,64,
+659,11,451,4,0,
+659,11,466,1,29,
+659,11,477,4,0,
+659,11,486,1,43,
+659,11,496,4,0,
+659,11,506,1,50,
+659,11,521,4,0,
+660,9,84,1,1,4
+660,9,85,4,0,
+660,9,86,1,1,3
+660,9,86,4,0,
+660,9,87,4,0,
+660,9,92,4,0,
+660,9,104,1,15,
+660,9,104,4,0,
+660,9,109,1,1,5
+660,9,113,4,0,
+660,9,115,4,0,
+660,9,129,3,0,
+660,9,138,4,0,
+660,9,148,4,0,
+660,9,156,4,0,
+660,9,164,1,36,
+660,9,164,4,0,
+660,9,168,4,0,
+660,9,173,3,0,
+660,9,180,3,0,
+660,9,182,4,0,
+660,9,189,3,0,
+660,9,203,4,0,
+660,9,207,4,0,
+660,9,214,4,0,
+660,9,216,4,0,
+660,9,218,4,0,
+660,9,237,4,0,
+660,9,240,4,0,
+660,9,241,4,0,
+660,9,244,4,0,
+660,9,247,4,0,
+660,9,253,1,8,
+660,9,261,4,0,
+660,9,263,4,0,
+660,9,268,1,43,
+660,9,271,1,1,1
+660,9,271,3,0,
+660,9,289,4,0,
+660,9,290,4,0,
+660,9,310,1,1,2
+660,9,324,3,0,
+660,9,351,1,22,
+660,9,351,4,0,
+660,9,363,4,0,
+660,9,389,3,0,
+660,9,399,4,0,
+660,9,403,10,0,
+660,9,435,1,50,
+660,9,451,4,0,
+660,9,466,1,29,
+660,9,466,3,0,
+660,10,84,1,1,4
+660,10,85,4,0,
+660,10,86,1,1,3
+660,10,86,4,0,
+660,10,87,4,0,
+660,10,92,4,0,
+660,10,104,1,15,
+660,10,104,4,0,
+660,10,109,1,1,5
+660,10,113,4,0,
+660,10,115,4,0,
+660,10,129,3,0,
+660,10,138,4,0,
+660,10,148,4,0,
+660,10,156,4,0,
+660,10,164,1,36,
+660,10,164,4,0,
+660,10,168,4,0,
+660,10,173,3,0,
+660,10,180,3,0,
+660,10,182,4,0,
+660,10,189,3,0,
+660,10,203,4,0,
+660,10,207,4,0,
+660,10,214,4,0,
+660,10,216,4,0,
+660,10,218,4,0,
+660,10,220,3,0,
+660,10,237,4,0,
+660,10,240,4,0,
+660,10,241,4,0,
+660,10,244,4,0,
+660,10,247,4,0,
+660,10,253,1,8,
+660,10,261,4,0,
+660,10,263,4,0,
+660,10,268,1,43,
+660,10,271,1,1,1
+660,10,271,3,0,
+660,10,289,4,0,
+660,10,290,4,0,
+660,10,310,1,1,2
+660,10,324,3,0,
+660,10,351,1,22,
+660,10,351,4,0,
+660,10,363,4,0,
+660,10,389,3,0,
+660,10,399,4,0,
+660,10,403,10,0,
+660,10,435,1,50,
+660,10,451,4,0,
+660,10,466,1,29,
+660,10,466,3,0,
+660,11,84,1,1,4
+660,11,85,4,0,
+660,11,86,1,1,3
+660,11,86,4,0,
+660,11,87,4,0,
+660,11,92,4,0,
+660,11,104,1,15,
+660,11,104,4,0,
+660,11,109,1,1,5
+660,11,113,4,0,
+660,11,115,4,0,
+660,11,138,4,0,
+660,11,148,4,0,
+660,11,156,4,0,
+660,11,164,1,36,
+660,11,164,4,0,
+660,11,168,4,0,
+660,11,182,4,0,
+660,11,207,4,0,
+660,11,216,4,0,
+660,11,218,4,0,
+660,11,237,4,0,
+660,11,240,4,0,
+660,11,241,4,0,
+660,11,244,4,0,
+660,11,247,4,0,
+660,11,253,1,8,
+660,11,261,4,0,
+660,11,263,4,0,
+660,11,268,1,57,
+660,11,271,1,1,1
+660,11,310,1,1,2
+660,11,351,1,22,
+660,11,435,1,64,
+660,11,451,4,0,
+660,11,466,1,29,
+660,11,477,4,0,
+660,11,486,1,43,
+660,11,496,4,0,
+660,11,506,1,50,
+660,11,521,4,0,
+661,9,84,1,1,4
+661,9,85,4,0,
+661,9,86,1,1,3
+661,9,86,4,0,
+661,9,87,4,0,
+661,9,92,4,0,
+661,9,104,1,15,
+661,9,104,4,0,
+661,9,109,1,1,5
+661,9,113,4,0,
+661,9,115,4,0,
+661,9,129,3,0,
+661,9,138,4,0,
+661,9,148,4,0,
+661,9,156,4,0,
+661,9,164,1,36,
+661,9,164,4,0,
+661,9,168,4,0,
+661,9,173,3,0,
+661,9,180,3,0,
+661,9,182,4,0,
+661,9,189,3,0,
+661,9,203,4,0,
+661,9,207,4,0,
+661,9,214,4,0,
+661,9,216,4,0,
+661,9,218,4,0,
+661,9,237,4,0,
+661,9,240,4,0,
+661,9,241,4,0,
+661,9,244,4,0,
+661,9,247,4,0,
+661,9,253,1,8,
+661,9,261,4,0,
+661,9,263,4,0,
+661,9,268,1,43,
+661,9,271,1,1,1
+661,9,271,3,0,
+661,9,289,4,0,
+661,9,290,4,0,
+661,9,310,1,1,2
+661,9,324,3,0,
+661,9,351,1,22,
+661,9,351,4,0,
+661,9,363,4,0,
+661,9,389,3,0,
+661,9,399,4,0,
+661,9,435,1,50,
+661,9,437,10,0,
+661,9,451,4,0,
+661,9,466,1,29,
+661,9,466,3,0,
+661,10,84,1,1,4
+661,10,85,4,0,
+661,10,86,1,1,3
+661,10,86,4,0,
+661,10,87,4,0,
+661,10,92,4,0,
+661,10,104,1,15,
+661,10,104,4,0,
+661,10,109,1,1,5
+661,10,113,4,0,
+661,10,115,4,0,
+661,10,129,3,0,
+661,10,138,4,0,
+661,10,148,4,0,
+661,10,156,4,0,
+661,10,164,1,36,
+661,10,164,4,0,
+661,10,168,4,0,
+661,10,173,3,0,
+661,10,180,3,0,
+661,10,182,4,0,
+661,10,189,3,0,
+661,10,203,4,0,
+661,10,207,4,0,
+661,10,214,4,0,
+661,10,216,4,0,
+661,10,218,4,0,
+661,10,220,3,0,
+661,10,237,4,0,
+661,10,240,4,0,
+661,10,241,4,0,
+661,10,244,4,0,
+661,10,247,4,0,
+661,10,253,1,8,
+661,10,261,4,0,
+661,10,263,4,0,
+661,10,268,1,43,
+661,10,271,1,1,1
+661,10,271,3,0,
+661,10,289,4,0,
+661,10,290,4,0,
+661,10,310,1,1,2
+661,10,324,3,0,
+661,10,351,1,22,
+661,10,351,4,0,
+661,10,363,4,0,
+661,10,389,3,0,
+661,10,399,4,0,
+661,10,435,1,50,
+661,10,437,10,0,
+661,10,451,4,0,
+661,10,466,1,29,
+661,10,466,3,0,
+661,11,84,1,1,4
+661,11,85,4,0,
+661,11,86,1,1,3
+661,11,86,4,0,
+661,11,87,4,0,
+661,11,92,4,0,
+661,11,104,1,15,
+661,11,104,4,0,
+661,11,109,1,1,5
+661,11,113,4,0,
+661,11,115,4,0,
+661,11,138,4,0,
+661,11,148,4,0,
+661,11,156,4,0,
+661,11,164,1,36,
+661,11,164,4,0,
+661,11,168,4,0,
+661,11,182,4,0,
+661,11,207,4,0,
+661,11,216,4,0,
+661,11,218,4,0,
+661,11,237,4,0,
+661,11,240,4,0,
+661,11,241,4,0,
+661,11,244,4,0,
+661,11,247,4,0,
+661,11,253,1,8,
+661,11,261,4,0,
+661,11,263,4,0,
+661,11,268,1,57,
+661,11,271,1,1,1
+661,11,310,1,1,2
+661,11,351,1,22,
+661,11,435,1,64,
+661,11,451,4,0,
+661,11,466,1,29,
+661,11,477,4,0,
+661,11,486,1,43,
+661,11,496,4,0,
+661,11,506,1,50,
+661,11,521,4,0,
+662,11,29,1,20,
+662,11,33,1,1,
+662,11,52,1,10,2
+662,11,53,4,0,
+662,11,55,1,10,1
+662,11,56,1,50,1
+662,11,58,4,0,
+662,11,59,1,50,3
+662,11,59,4,0,
+662,11,76,4,0,
+662,11,85,4,0,
+662,11,86,4,0,
+662,11,87,4,0,
+662,11,92,4,0,
+662,11,104,4,0,
+662,11,126,1,50,2
+662,11,126,4,0,
+662,11,148,4,0,
+662,11,156,4,0,
+662,11,164,4,0,
+662,11,168,4,0,
+662,11,181,1,10,3
+662,11,182,4,0,
+662,11,201,4,0,
+662,11,207,4,0,
+662,11,213,4,0,
+662,11,216,4,0,
+662,11,218,4,0,
+662,11,237,4,0,
+662,11,240,1,30,1
+662,11,240,4,0,
+662,11,241,1,30,2
+662,11,241,4,0,
+662,11,244,4,0,
+662,11,247,4,0,
+662,11,258,1,30,3
+662,11,258,4,0,
+662,11,263,4,0,
+662,11,311,1,40,
+662,11,412,4,0,
+662,11,496,4,0,
+662,11,503,4,0,
+662,11,510,4,0,
+662,11,514,4,0,
+662,11,526,4,0,
+663,11,29,1,20,
+663,11,33,1,1,
+663,11,52,1,10,2
+663,11,53,4,0,
+663,11,55,1,10,1
+663,11,56,1,50,1
+663,11,58,4,0,
+663,11,59,1,50,3
+663,11,59,4,0,
+663,11,76,4,0,
+663,11,85,4,0,
+663,11,86,4,0,
+663,11,87,4,0,
+663,11,92,4,0,
+663,11,104,4,0,
+663,11,126,1,50,2
+663,11,126,4,0,
+663,11,148,4,0,
+663,11,156,4,0,
+663,11,164,4,0,
+663,11,168,4,0,
+663,11,181,1,10,3
+663,11,182,4,0,
+663,11,201,4,0,
+663,11,207,4,0,
+663,11,213,4,0,
+663,11,216,4,0,
+663,11,218,4,0,
+663,11,237,4,0,
+663,11,240,1,30,1
+663,11,240,4,0,
+663,11,241,1,30,2
+663,11,241,4,0,
+663,11,244,4,0,
+663,11,247,4,0,
+663,11,258,1,30,3
+663,11,258,4,0,
+663,11,263,4,0,
+663,11,311,1,40,
+663,11,412,4,0,
+663,11,496,4,0,
+663,11,503,4,0,
+663,11,510,4,0,
+663,11,514,4,0,
+663,11,526,4,0,
+664,11,29,1,20,
+664,11,33,1,1,
+664,11,52,1,10,2
+664,11,53,4,0,
+664,11,55,1,10,1
+664,11,56,1,50,1
+664,11,58,4,0,
+664,11,59,1,50,3
+664,11,59,4,0,
+664,11,76,4,0,
+664,11,85,4,0,
+664,11,86,4,0,
+664,11,87,4,0,
+664,11,92,4,0,
+664,11,104,4,0,
+664,11,126,1,50,2
+664,11,126,4,0,
+664,11,148,4,0,
+664,11,156,4,0,
+664,11,164,4,0,
+664,11,168,4,0,
+664,11,181,1,10,3
+664,11,182,4,0,
+664,11,201,4,0,
+664,11,207,4,0,
+664,11,213,4,0,
+664,11,216,4,0,
+664,11,218,4,0,
+664,11,237,4,0,
+664,11,240,1,30,1
+664,11,240,4,0,
+664,11,241,1,30,2
+664,11,241,4,0,
+664,11,244,4,0,
+664,11,247,4,0,
+664,11,258,1,30,3
+664,11,258,4,0,
+664,11,263,4,0,
+664,11,311,1,40,
+664,11,412,4,0,
+664,11,496,4,0,
+664,11,503,4,0,
+664,11,510,4,0,
+664,11,514,4,0,
+664,11,526,4,0,
+665,11,15,4,0,
+665,11,29,1,7,
+665,11,33,1,1,1
+665,11,36,1,20,
+665,11,37,1,56,
+665,11,38,1,36,
+665,11,44,1,10,
+665,11,55,1,1,2
+665,11,57,4,0,
+665,11,58,4,0,
+665,11,92,4,0,
+665,11,104,4,0,
+665,11,127,4,0,
+665,11,156,4,0,
+665,11,164,4,0,
+665,11,175,1,46,
+665,11,182,4,0,
+665,11,184,1,41,
+665,11,207,4,0,
+665,11,213,4,0,
+665,11,216,4,0,
+665,11,218,4,0,
+665,11,237,4,0,
+665,11,240,4,0,
+665,11,242,1,24,
+665,11,253,1,4,
+665,11,258,4,0,
+665,11,263,4,0,
+665,11,269,4,0,
+665,11,291,4,0,
+665,11,401,1,28,
+665,11,453,1,13,
+665,11,487,1,32,
+665,11,496,4,0,
+665,11,498,1,16,
+665,11,503,4,0,
+665,11,515,1,51,
+666,11,7,1,22,
+666,11,29,1,14,
+666,11,33,1,1,1
+666,11,37,1,27,
+666,11,46,4,0,
+666,11,53,4,0,
+666,11,63,4,0,
+666,11,70,4,0,
+666,11,76,4,0,
+666,11,89,4,0,
+666,11,91,4,0,
+666,11,92,4,0,
+666,11,94,4,0,
+666,11,99,1,1,4
+666,11,99,1,9,
+666,11,104,4,0,
+666,11,126,4,0,
+666,11,156,4,0,
+666,11,157,4,0,
+666,11,164,4,0,
+666,11,168,4,0,
+666,11,182,4,0,
+666,11,187,1,30,
+666,11,205,1,1,2
+666,11,205,1,3,
+666,11,207,1,17,
+666,11,207,4,0,
+666,11,213,4,0,
+666,11,216,4,0,
+666,11,218,4,0,
+666,11,237,4,0,
+666,11,241,4,0,
+666,11,249,4,0,
+666,11,259,4,0,
+666,11,261,4,0,
+666,11,263,1,19,
+666,11,263,4,0,
+666,11,269,1,39,
+666,11,269,4,0,
+666,11,276,1,47,
+666,11,280,4,0,
+666,11,315,1,54,
+666,11,315,4,0,
+666,11,317,4,0,
+666,11,339,4,0,
+666,11,359,1,35,
+666,11,360,4,0,
+666,11,369,4,0,
+666,11,371,4,0,
+666,11,374,4,0,
+666,11,394,1,33,
+666,11,411,4,0,
+666,11,416,4,0,
+666,11,424,1,11,
+666,11,444,4,0,
+666,11,447,4,0,
+666,11,479,4,0,
+666,11,488,4,0,
+666,11,496,4,0,
+666,11,510,1,1,3
+666,11,510,1,6,
+666,11,510,4,0,
+666,11,523,4,0,
+666,11,526,1,25,
+666,11,526,4,0,
+667,11,47,1,16,
+667,11,60,1,31,
+667,11,63,4,0,
+667,11,70,4,0,
+667,11,85,4,0,
+667,11,86,4,0,
+667,11,87,4,0,
+667,11,92,4,0,
+667,11,93,1,11,
+667,11,94,1,57,
+667,11,94,4,0,
+667,11,98,1,6,
+667,11,104,4,0,
+667,11,113,4,0,
+667,11,138,4,0,
+667,11,148,4,0,
+667,11,156,4,0,
+667,11,164,4,0,
+667,11,182,4,0,
+667,11,195,1,85,
+667,11,207,4,0,
+667,11,216,4,0,
+667,11,218,4,0,
+667,11,219,4,0,
+667,11,237,4,0,
+667,11,240,4,0,
+667,11,241,4,0,
+667,11,244,4,0,
+667,11,247,4,0,
+667,11,249,4,0,
+667,11,263,4,0,
+667,11,272,1,71,
+667,11,280,4,0,
+667,11,298,1,21,
+667,11,304,1,64,
+667,11,347,4,0,
+667,11,358,1,50,
+667,11,369,1,43,
+667,11,369,4,0,
+667,11,370,1,78,
+667,11,371,4,0,
+667,11,373,4,0,
+667,11,374,4,0,
+667,11,411,4,0,
+667,11,412,4,0,
+667,11,416,4,0,
+667,11,421,4,0,
+667,11,433,4,0,
+667,11,444,4,0,
+667,11,447,4,0,
+667,11,451,4,0,
+667,11,468,4,0,
+667,11,473,4,0,
+667,11,477,4,0,
+667,11,490,4,0,
+667,11,496,1,1,
+667,11,496,4,0,
+667,11,497,1,36,
+667,11,497,4,0,
+667,11,512,1,26,
+667,11,512,4,0,
+667,11,514,4,0,
+667,11,526,4,0,
diff --git a/pokedex/data/csv/pokemon_species_flavor_summaries.csv b/pokedex/data/csv/pokemon_species_flavor_summaries.csv
new file mode 100644
index 0000000..c501f46
--- /dev/null
+++ b/pokedex/data/csv/pokemon_species_flavor_summaries.csv
@@ -0,0 +1 @@
+pokemon_species_id,local_language_id,flavor_summary
diff --git a/pokedex/data/csv/pokemon_flavor_text.csv b/pokedex/data/csv/pokemon_species_flavor_text.csv
similarity index 99%
rename from pokedex/data/csv/pokemon_flavor_text.csv
rename to pokedex/data/csv/pokemon_species_flavor_text.csv
index aa5863f..928e428 100644
--- a/pokedex/data/csv/pokemon_flavor_text.csv
+++ b/pokedex/data/csv/pokemon_species_flavor_text.csv
@@ -1,4 +1,4 @@
-pokemon_id,version_id,language_id,flavor_text
+species_id,version_id,language_id,flavor_text
 1,1,9,"A strange seed was
 planted on its
 back at birth.The plant sprouts
diff --git a/pokedex/data/csv/pokemon_names.csv b/pokedex/data/csv/pokemon_species_names.csv
similarity index 99%
rename from pokedex/data/csv/pokemon_names.csv
rename to pokedex/data/csv/pokemon_species_names.csv
index 09db3d5..c1e3dff 100644
--- a/pokedex/data/csv/pokemon_names.csv
+++ b/pokedex/data/csv/pokemon_species_names.csv
@@ -1,4 +1,4 @@
-pokemon_id,local_language_id,name,species
+pokemon_species_id,local_language_id,name,genus
 1,1,フシギダネ,
 1,2,Fushigidane,
 1,3,이상해씨,
@@ -4081,21 +4081,3 @@ pokemon_id,local_language_id,name,species
 649,5,Genesect,
 649,6,Genesect,
 649,9,Genesect,Paleozoic
-10001,9,Deoxys,DNA
-10002,9,Deoxys,DNA
-10003,9,Deoxys,DNA
-10004,9,Wormadam,Bagworm
-10005,9,Wormadam,Bagworm
-10006,9,Shaymin,Gratitude
-10007,9,Giratina,Renegade
-10008,9,Rotom,Plasma
-10009,9,Rotom,Plasma
-10010,9,Rotom,Plasma
-10011,9,Rotom,Plasma
-10012,9,Rotom,Plasma
-10013,9,Castform,Weather
-10014,9,Castform,Weather
-10015,9,Castform,Weather
-10016,9,Basculin,Hostile
-10017,9,Darmanitan,Blazing
-10018,9,Meloetta,Melody
diff --git a/pokedex/data/csv/pokemon_species_prose.csv b/pokedex/data/csv/pokemon_species_prose.csv
new file mode 100644
index 0000000..8c242fd
--- /dev/null
+++ b/pokedex/data/csv/pokemon_species_prose.csv
@@ -0,0 +1,20 @@
+pokemon_species_id,local_language_id,form_description
+172,9,"Spiky-eared Pichu can only be received by taking the shiny Pichu from an official promotion to []{pokemon:celebi}'s shrine in []{location:ilex-forest}.  Spiky-eared Pichu is always female, cannot evolve, and cannot be taken into the Wi-Fi Club or the Union Room, but is otherwise a normal Pichu."
+201,9,Forms only affect appearance.  A form is determined at random before a wild encounter and cannot be changed.
+351,9,"Form changes along with type to match the [weather]{mechanic:weather} in battle, due to []{ability:forecast}.  Castform is always in its normal form outside of battle, regardless of weather."
+386,9,"Forms have different stats and movepools.  In Generation III, Deoxys's form depends on the game: Normal Forme in Ruby and Sapphire, Attack Forme in FireRed, Defense Forme in LeafGreen, and Speed Forme in Emerald.  In Generation IV, every form exists: form is preserved when transferring via []{location:pal-park}, and meteorites in the southeast corner of []{location:veilstone-city} or at the west end of []{location:unova-route-3} can be used to switch between forms."
+412,9,"Forms only affect appearance, although they become permanent upon evolution.  Wild and newly-hatched Burmy are always in a Plant Cloak.  Burmy's cloak changes to match the terrain after a battle it participated in: Plant Cloak by default; Sandy Cloak in sandy or rocky areas, such as beaches, caves, and trails; and Trash Cloak in buildings."
+413,9,"Forms have different stats and movepools.  During evolution, Burmy's current cloak becomes Wormadam's form, and can no longer be changed."
+421,9,"Sunshine form is active during [strong sunlight]{mechanic:strong-sunlight}.  Otherwise, Cherrim defaults to its Overcast form."
+422,9,"Forms only affect appearance.  A form is determined before a wild encounter based on whether the battle is in western or eastern Sinnoh, or inherited from the mother when breeding, and cannot be changed."
+423,9,Forms only affect appearance.  A form is determined before a wild encounter based on whether the battle is in western or eastern Sinnoh and cannot be changed.
+479,9,"Forms have different signature moves, and the appliance forms' stats are different from the normal form's.  When switching forms, the old signature move (if any) is removed and the new one must be learned, overwriting another move if need be, or the switch will be cancelled; however, it can be forgotten while in the new form.  There are appliances for switching forms in a secret room in the Team Galactic Eterna Building or the Silph Co. Office Building; the room in the Galactic Building requires a []{item:secret-key}, but the room in Silph Co. is freely accessible when walking with Rotom.  Rotom can be returned to its normal form by checking the space its appliance occupied.  It also reverts to its normal form upon entering the Wi-Fi Club or the Union Room."
+487,9,"Forms have different stats.  Giratina transforms into Origin Forme in the []{location:distortion-world} or while holding a []{item:griseous-orb}.  Otherwise, it assumes its Altered Forme.  The Griseous Orb returns to the bag upon entering the Wi-Fi Club or the Union Room."
+492,9,"Forms have different stats and movepools.  Shaymin transforms into Sky Forme with the use of a []{item:gracidea}.  It is limited to Land Forme at night, when [frozen]{mechanic:frozen}, in the storage system boxes, in the Wi-Fi Club, and in the Union Room; under these conditions, Sky Shaymin reverts to Land Forme, and the Gracidea has no effect.  The Gracidea must be used again to return to Sky Forme.  A Gracidea may be received by showing a woman in southwest []{location:floaroma-town} or the []{location:goldenrod-city} flower shop a Shaymin met in a fateful encounter."
+493,9,"Form changes along with type to match a held Plate, due to []{ability:multitype}."
+550,9,"Forms have one different ability and different wild held items. Blue-Striped Basculin are rarer in Black Version, and Red-Striped Basculin in White Version."
+555,9,"Forms have different stats and types.  Darmanitan changes to Zen Mode below 50% HP if it has []{ability:zen-mode} as its ability, and back to Standard Mode above 50% HP."
+585,9,"Form changes to match the season.  To switch forms, Deerling must be in the party when loading the game."
+586,9,"Form changes to match the season.  To switch forms, Sawsbuck must be in the party when loading the game."
+648,9,"Forms have different stats and types.  Meloetta changes form upon using []{move:relic-song} in battle, and reverts to Aria Forme outside of battle."
+649,9,Form changes to match Genesect's held Drive.  The only differences are the color of its weapon and []{move:techno-blast}'s type.
diff --git a/pokedex/data/csv/pokemon_stats.csv b/pokedex/data/csv/pokemon_stats.csv
index e11bd07..965780a 100644
--- a/pokedex/data/csv/pokemon_stats.csv
+++ b/pokedex/data/csv/pokemon_stats.csv
@@ -3893,111 +3893,111 @@ pokemon_id,stat_id,base_stat,effort
 649,4,120,1
 649,5,95,0
 649,6,99,1
-10001,1,50,0
-10001,2,180,2
-10001,3,20,0
-10001,4,180,1
-10001,5,20,0
-10001,6,150,0
-10002,1,50,0
-10002,2,70,0
-10002,3,160,2
-10002,4,70,0
-10002,5,160,1
-10002,6,90,0
-10003,1,50,0
-10003,2,95,0
-10003,3,90,0
-10003,4,95,0
-10003,5,90,0
-10003,6,180,3
-10004,1,60,0
-10004,2,79,0
-10004,3,105,2
-10004,4,59,0
-10004,5,85,0
-10004,6,36,0
-10005,1,60,0
-10005,2,69,0
-10005,3,95,1
-10005,4,69,0
-10005,5,95,1
-10005,6,36,0
-10006,1,100,0
-10006,2,103,0
-10006,3,75,0
-10006,4,120,0
-10006,5,75,0
-10006,6,127,3
-10007,1,150,3
-10007,2,120,0
-10007,3,100,0
-10007,4,120,0
-10007,5,100,0
-10007,6,90,0
-10008,1,50,0
-10008,2,65,0
-10008,3,107,0
-10008,4,105,1
-10008,5,107,0
-10008,6,86,1
-10009,1,50,0
-10009,2,65,0
-10009,3,107,0
-10009,4,105,1
-10009,5,107,0
-10009,6,86,1
-10010,1,50,0
-10010,2,65,0
-10010,3,107,0
-10010,4,105,1
-10010,5,107,0
-10010,6,86,1
-10011,1,50,0
-10011,2,65,0
-10011,3,107,0
-10011,4,105,1
-10011,5,107,0
-10011,6,86,1
-10012,1,50,0
-10012,2,65,0
-10012,3,107,0
-10012,4,105,1
-10012,5,107,0
-10012,6,86,1
-10013,1,70,1
-10013,2,70,0
-10013,3,70,0
-10013,4,70,0
-10013,5,70,0
-10013,6,70,0
-10014,1,70,1
-10014,2,70,0
-10014,3,70,0
-10014,4,70,0
-10014,5,70,0
-10014,6,70,0
-10015,1,70,1
-10015,2,70,0
-10015,3,70,0
-10015,4,70,0
-10015,5,70,0
-10015,6,70,0
-10016,1,70,0
-10016,2,92,0
-10016,3,65,0
-10016,4,80,0
-10016,5,55,0
-10016,6,98,2
-10017,1,105,0
-10017,2,30,0
-10017,3,105,0
-10017,4,140,2
-10017,5,105,0
-10017,6,55,0
-10018,1,100,0
-10018,2,128,1
-10018,3,90,1
-10018,4,77,0
-10018,5,77,0
-10018,6,128,1
+650,1,50,0
+650,2,180,2
+650,3,20,0
+650,4,180,1
+650,5,20,0
+650,6,150,0
+651,1,50,0
+651,2,70,0
+651,3,160,2
+651,4,70,0
+651,5,160,1
+651,6,90,0
+652,1,50,0
+652,2,95,0
+652,3,90,0
+652,4,95,0
+652,5,90,0
+652,6,180,3
+653,1,60,0
+653,2,79,0
+653,3,105,2
+653,4,59,0
+653,5,85,0
+653,6,36,0
+654,1,60,0
+654,2,69,0
+654,3,95,1
+654,4,69,0
+654,5,95,1
+654,6,36,0
+655,1,100,0
+655,2,103,0
+655,3,75,0
+655,4,120,0
+655,5,75,0
+655,6,127,3
+656,1,150,3
+656,2,120,0
+656,3,100,0
+656,4,120,0
+656,5,100,0
+656,6,90,0
+657,1,50,0
+657,2,65,0
+657,3,107,0
+657,4,105,1
+657,5,107,0
+657,6,86,1
+658,1,50,0
+658,2,65,0
+658,3,107,0
+658,4,105,1
+658,5,107,0
+658,6,86,1
+659,1,50,0
+659,2,65,0
+659,3,107,0
+659,4,105,1
+659,5,107,0
+659,6,86,1
+660,1,50,0
+660,2,65,0
+660,3,107,0
+660,4,105,1
+660,5,107,0
+660,6,86,1
+661,1,50,0
+661,2,65,0
+661,3,107,0
+661,4,105,1
+661,5,107,0
+661,6,86,1
+662,1,70,1
+662,2,70,0
+662,3,70,0
+662,4,70,0
+662,5,70,0
+662,6,70,0
+663,1,70,1
+663,2,70,0
+663,3,70,0
+663,4,70,0
+663,5,70,0
+663,6,70,0
+664,1,70,1
+664,2,70,0
+664,3,70,0
+664,4,70,0
+664,5,70,0
+664,6,70,0
+665,1,70,0
+665,2,92,0
+665,3,65,0
+665,4,80,0
+665,5,55,0
+665,6,98,2
+666,1,105,0
+666,2,30,0
+666,3,105,0
+666,4,140,2
+666,5,105,0
+666,6,55,0
+667,1,100,0
+667,2,128,1
+667,3,90,1
+667,4,77,0
+667,5,77,0
+667,6,128,1
diff --git a/pokedex/data/csv/pokemon_types.csv b/pokedex/data/csv/pokemon_types.csv
index b510ae4..fc294c2 100644
--- a/pokedex/data/csv/pokemon_types.csv
+++ b/pokedex/data/csv/pokemon_types.csv
@@ -943,32 +943,32 @@ pokemon_id,type_id,slot
 648,14,2
 649,7,1
 649,9,2
-10001,14,1
-10002,14,1
-10003,14,1
-10004,7,1
-10004,5,2
-10005,7,1
-10005,9,2
-10006,12,1
-10006,3,2
-10007,8,1
-10007,16,2
-10008,13,1
-10008,10,2
-10009,13,1
-10009,11,2
-10010,13,1
-10010,15,2
-10011,13,1
-10011,3,2
-10012,13,1
-10012,12,2
-10013,10,1
-10014,11,1
-10015,15,1
-10016,11,1
-10017,10,1
-10017,14,2
-10018,1,1
-10018,2,2
+650,14,1
+651,14,1
+652,14,1
+653,7,1
+653,5,2
+654,7,1
+654,9,2
+655,12,1
+655,3,2
+656,8,1
+656,16,2
+657,13,1
+657,10,2
+658,13,1
+658,11,2
+659,13,1
+659,15,2
+660,13,1
+660,3,2
+661,13,1
+661,12,2
+662,10,1
+663,11,1
+664,15,1
+665,11,1
+666,10,1
+666,14,2
+667,1,1
+667,2,2
diff --git a/pokedex/data/csv/translations/cs.csv b/pokedex/data/csv/translations/cs.csv
index 9d8cc01..9605834 100644
--- a/pokedex/data/csv/translations/cs.csv
+++ b/pokedex/data/csv/translations/cs.csv
@@ -1030,84 +1030,64 @@ Působí na protivníky."
 10,Pokedex,6,description,f3d57c4c,Platinum Sinnohský dex—rozšířená verze dexu z Diamond a Pearl
 10,Pokedex,7,description,56afcca4,HeartGold/SoulSilver Johto dex – dex z Gold/Silver/Crystal rozšířený o nové vývoje
 10,Pokedex,8,description,79a9ade7,Black/White Unovský dex
-10,Pokemon,1,flavor_summary,fe4d8c9a,"Od narození má na zádech divné semínko, které roste a vyvíjí se společně s ním. Uvnitř má zásobu živin, kterou využívají zejména malí Bulbasauři. I později ale může celé dny nejíst.
+10,PokemonSpecies,1,flavor_summary,fe4d8c9a,"Od narození má na zádech divné semínko, které roste a vyvíjí se společně s ním. Uvnitř má zásobu živin, kterou využívají zejména malí Bulbasauři. I později ale může celé dny nejíst.
 
 Bulbasauři rádi odpočívají na sluníčku. Semínko na zádech jim tak roste rychleji."
-10,Pokemon,1,species,e4b54c38,Semínkový
-10,Pokemon,2,species,e4b54c38,Semínkový
-10,Pokemon,3,species,e4b54c38,Semínkový
-10,Pokemon,4,species,473b2152,Ještěrkovitý
-10,Pokemon,5,species,c4ff3365,Plamenný
-10,Pokemon,6,species,c4ff3365,Plamenný
-10,Pokemon,7,species,a662e558,Malý želví
-10,Pokemon,8,species,71b19d1a,Želví
-10,Pokemon,9,species,4a927f13,Korýší
-10,Pokemon,10,species,1a1f628b,Červí
-10,Pokemon,11,species,011bd63a,Kuklový
-10,Pokemon,12,species,4666d1bf,Motýlí
-10,Pokemon,14,species,011bd63a,Kuklový
-10,Pokemon,35,species,e1dde8d1,diblíci
-10,Pokemon,36,species,e1dde8d1,diblíci
-10,Pokemon,66,species,55017b02,Supersilný
-10,Pokemon,67,species,55017b02,Supersilný
-10,Pokemon,68,species,55017b02,Supersilný
-10,Pokemon,88,species,63411a53,Kalový
-10,Pokemon,89,species,63411a53,Kalový
-10,Pokemon,96,species,834b9610,Hypnotický
-10,Pokemon,97,species,834b9610,Hypnotický
-10,Pokemon,111,species,11201819,Střepinový
-10,Pokemon,120,species,a62f8434,Hvězdicovitý
-10,Pokemon,121,species,abfc4744,Záhadný
-10,Pokemon,122,species,2ef3c334,Bariérový
-10,Pokemon,132,species,f543030e,Transformační
-10,Pokemon,133,species,c0fdaa30,Vývoj
-10,Pokemon,136,species,c4ff3365,Plamenný
-10,Pokemon,140,species,4a927f13,Korýší
-10,Pokemon,141,species,4a927f13,Korýší
-10,Pokemon,144,species,413df12c,Zmražení
-10,Pokemon,146,species,c4ff3365,Plamenný
-10,Pokemon,173,species,a62f8434,Hvězdicovitý
-10,Pokemon,191,species,e4b54c38,Semínkový
-10,Pokemon,197,species,2227bb25,Měsíční
-10,Pokemon,200,species,cd7e3dfb,Skřípavý
-10,Pokemon,209,species,e1dde8d1,diblíci
-10,Pokemon,210,species,e1dde8d1,diblíci
-10,Pokemon,243,species,adc59c6c,Bleskový
-10,Pokemon,261,species,21d49620,Kousavý
-10,Pokemon,262,species,21d49620,Kousavý
-10,Pokemon,265,species,1a1f628b,Červí
-10,Pokemon,266,species,011bd63a,Kuklový
-10,Pokemon,267,species,4666d1bf,Motýlí
-10,Pokemon,268,species,011bd63a,Kuklový
-10,Pokemon,277,species,211da6d8,Polykací
-10,Pokemon,307,species,d2b08c9e,Meditační
-10,Pokemon,308,species,d2b08c9e,Meditační
-10,Pokemon,323,species,36a1520c,Erupční
-10,Pokemon,325,species,8590f16f,Skákavý
-10,Pokemon,351,species,836deaf2,Počasí
-10,Pokemon,385,species,77e3dbf7,Přání
-10,Pokemon,392,species,c4ff3365,Plamenný
-10,Pokemon,403,species,6e0f7007,Jiskrový
-10,Pokemon,404,species,5cd2e029,Jiskrový
-10,Pokemon,466,species,f6d30876,Bleskový
-10,Pokemon,523,species,f6d30876,Bleskový
-10,Pokemon,613,species,eda9f31f,Studený
-10,Pokemon,614,species,93e0b150,Mrazící
-10,Pokemon,615,species,22733a94,Krystalizující
-10,Pokemon,618,species,1ebdd00d,Pasťový
-10,Pokemon,10013,species,836deaf2,Počasí
-10,Pokemon,10014,species,836deaf2,Počasí
-10,Pokemon,10015,species,836deaf2,Počasí
+10,PokemonSpecies,1,genus,e4b54c38,Semínkový
+10,PokemonSpecies,2,genus,e4b54c38,Semínkový
+10,PokemonSpecies,3,genus,e4b54c38,Semínkový
+10,PokemonSpecies,4,genus,473b2152,Ještěrkovitý
+10,PokemonSpecies,5,genus,c4ff3365,Plamenný
+10,PokemonSpecies,6,genus,c4ff3365,Plamenný
+10,PokemonSpecies,7,genus,a662e558,Malý želví
+10,PokemonSpecies,8,genus,71b19d1a,Želví
+10,PokemonSpecies,9,genus,4a927f13,Korýší
+10,PokemonSpecies,10,genus,1a1f628b,Červí
+10,PokemonSpecies,11,genus,011bd63a,Kuklový
+10,PokemonSpecies,12,genus,4666d1bf,Motýlí
+10,PokemonSpecies,14,genus,011bd63a,Kuklový
+10,PokemonSpecies,66,genus,55017b02,Supersilný
+10,PokemonSpecies,67,genus,55017b02,Supersilný
+10,PokemonSpecies,68,genus,55017b02,Supersilný
+10,PokemonSpecies,88,genus,63411a53,Kalový
+10,PokemonSpecies,89,genus,63411a53,Kalový
+10,PokemonSpecies,96,genus,834b9610,Hypnotický
+10,PokemonSpecies,97,genus,834b9610,Hypnotický
+10,PokemonSpecies,111,genus,11201819,Střepinový
+10,PokemonSpecies,120,genus,a62f8434,Hvězdicovitý
+10,PokemonSpecies,121,genus,abfc4744,Záhadný
+10,PokemonSpecies,122,genus,2ef3c334,Bariérový
+10,PokemonSpecies,132,genus,f543030e,Transformační
+10,PokemonSpecies,136,genus,c4ff3365,Plamenný
+10,PokemonSpecies,140,genus,4a927f13,Korýší
+10,PokemonSpecies,141,genus,4a927f13,Korýší
+10,PokemonSpecies,146,genus,c4ff3365,Plamenný
+10,PokemonSpecies,173,genus,a62f8434,Hvězdicovitý
+10,PokemonSpecies,191,genus,e4b54c38,Semínkový
+10,PokemonSpecies,197,genus,2227bb25,Měsíční
+10,PokemonSpecies,200,genus,cd7e3dfb,Skřípavý
+10,PokemonSpecies,243,genus,adc59c6c,Bleskový
+10,PokemonSpecies,261,genus,21d49620,Kousavý
+10,PokemonSpecies,262,genus,21d49620,Kousavý
+10,PokemonSpecies,265,genus,1a1f628b,Červí
+10,PokemonSpecies,266,genus,011bd63a,Kuklový
+10,PokemonSpecies,267,genus,4666d1bf,Motýlí
+10,PokemonSpecies,268,genus,011bd63a,Kuklový
+10,PokemonSpecies,277,genus,211da6d8,Polykací
+10,PokemonSpecies,307,genus,d2b08c9e,Meditační
+10,PokemonSpecies,308,genus,d2b08c9e,Meditační
+10,PokemonSpecies,323,genus,36a1520c,Erupční
+10,PokemonSpecies,325,genus,8590f16f,Skákavý
+10,PokemonSpecies,392,genus,c4ff3365,Plamenný
+10,PokemonSpecies,403,genus,6e0f7007,Jiskrový
+10,PokemonSpecies,404,genus,5cd2e029,Jiskrový
+10,PokemonSpecies,466,genus,f6d30876,Bleskový
+10,PokemonSpecies,523,genus,f6d30876,Bleskový
+10,PokemonSpecies,613,genus,eda9f31f,Studený
+10,PokemonSpecies,614,genus,93e0b150,Mrazící
+10,PokemonSpecies,615,genus,22733a94,Krystalizující
+10,PokemonSpecies,618,genus,1ebdd00d,Pasťový
 10,PokemonColor,4,name,25cd90d8,Šedá
-10,PokemonForm,412,name,6ac22276,rostliny
-10,PokemonForm,413,name,6ac22276,rostliny
-10,PokemonForm,10077,name,f560b23a,Popálení
-10,PokemonFormGroup,386,term,c82a81a2,Forma
-10,PokemonFormGroup,412,term,4d8cf314,Plášť
-10,PokemonFormGroup,413,term,4d8cf314,Plášť
-10,PokemonFormGroup,487,term,c82a81a2,Forma
-10,PokemonFormGroup,492,term,c82a81a2,Forma
-10,PokemonFormGroup,648,term,c82a81a2,Forma
 10,PokemonHabitat,1,name,057f6d41,jeskyně
 10,PokemonHabitat,2,name,a85d53b4,lesy
 10,PokemonHabitat,3,name,a73fc6cb,lučiny

From 280c90b96618dc62171feff2b155865f589e9666 Mon Sep 17 00:00:00 2001
From: Petr Viktorin <encukou@gmail.com>
Date: Sat, 30 Apr 2011 00:16:53 +0300
Subject: [PATCH 04/16] Pokemon species split: Schema changes

---
 pokedex/db/tables.py | 273 +++++++++++++++++++------------------------
 1 file changed, 117 insertions(+), 156 deletions(-)

diff --git a/pokedex/db/tables.py b/pokedex/db/tables.py
index 711e0b5..34953db 100644
--- a/pokedex/db/tables.py
+++ b/pokedex/db/tables.py
@@ -409,8 +409,6 @@ class EvolutionChain(TableBase):
     __tablename__ = 'evolution_chains'
     id = Column(Integer, primary_key=True, nullable=False,
         info=dict(description="A numeric ID"))
-    growth_rate_id = Column(Integer, ForeignKey('growth_rates.id'), nullable=False,
-        info=dict(description="ID of the growth rate for this family"))
     baby_trigger_item_id = Column(Integer, ForeignKey('items.id'), nullable=True,
         info=dict(description="Item that a parent must hold while breeding to produce a baby"))
 
@@ -1058,46 +1056,22 @@ create_translation_table('pokedex_prose', Pokedex, 'prose',
 )
 
 class Pokemon(TableBase):
-    u"""A species of Pokémon.  The core to this whole mess.
+    u"""A Pokémon.  The core to this whole mess.
     """
     __tablename__ = 'pokemon'
     __singlename__ = 'pokemon'
     id = Column(Integer, primary_key=True, nullable=False,
         info=dict(description=u"A numeric ID"))
-    identifier = Column(Unicode(20), nullable=False,
-        info=dict(description=u"An identifier", format='identifier'))
-    generation_id = Column(Integer, ForeignKey('generations.id'),
-        info=dict(description=u"ID of the generation this species first appeared in"))
-    evolution_chain_id = Column(Integer, ForeignKey('evolution_chains.id'),
-        info=dict(description=u"ID of the species' evolution chain (a.k.a. family)"))
-    evolves_from_pokemon_id = Column(Integer, ForeignKey('pokemon.id'), nullable=True,
-        info=dict(description=u"The Pokémon species from which this one evolves"))
+    species_id = Column(Integer, ForeignKey('pokemon_species.id'),
+        info=dict(description=u"ID of the species this Pokémon belongs to"))
     height = Column(Integer, nullable=False,
         info=dict(description=u"The height of the Pokémon, in decimeters (tenths of a meter)"))
     weight = Column(Integer, nullable=False,
         info=dict(description=u"The weight of the Pokémon, in tenths of a kilogram (decigrams)"))
-    color_id = Column(Integer, ForeignKey('pokemon_colors.id'), nullable=False,
-        info=dict(description=u"ID of this Pokémon's Pokédex color, as used for a gimmick search function in the games."))
-    pokemon_shape_id = Column(Integer, ForeignKey('pokemon_shapes.id'), nullable=False,
-        info=dict(description=u"ID of this Pokémon's body shape, as used for a gimmick search function in the games."))
-    habitat_id = Column(Integer, ForeignKey('pokemon_habitats.id'), nullable=True,
-        info=dict(description=u"ID of this Pokémon's habitat, as used for a gimmick search function in the games."))
-    gender_rate = Column(Integer, nullable=False,
-        info=dict(description=u"The chance of this Pokémon being female, in eighths; or -1 for genderless"))
-    capture_rate = Column(Integer, nullable=False,
-        info=dict(description=u"The base capture rate; up to 255"))
     base_experience = Column(Integer, nullable=False,
         info=dict(description=u"The base EXP gained when defeating this Pokémon"))  # XXX: Is this correct?
-    base_happiness = Column(Integer, nullable=False,
-        info=dict(description=u"The tameness when caught by a normal ball"))
-    is_baby = Column(Boolean, nullable=False,
-        info=dict(description=u"True iff the Pokémon is a baby, i.e. a lowest-stage Pokémon that cannot breed but whose evolved form can."))
-    hatch_counter = Column(Integer, nullable=False,
-        info=dict(description=u"Initial hatch counter: one must walk 255 × (hatch_counter + 1) steps before this Pokémon's egg hatches, unless utilizing bonuses like Flame Body's"))
-    has_gender_differences = Column(Boolean, nullable=False,
-        info=dict(description=u"Set iff the species exhibits enough sexual dimorphism to have separate sets of sprites in Gen IV and beyond."))
     order = Column(Integer, nullable=False, index=True,
-        info=dict(description=u"Order for sorting. Almost national order, except families and forms are grouped together."))
+        info=dict(description=u"Order for sorting. Almost national order, except families are grouped together."))
 
     ### Stuff to handle alternate Pokémon forms
 
@@ -1175,19 +1149,6 @@ class Pokemon(TableBase):
         else:
             return None
 
-create_translation_table('pokemon_names', Pokemon, 'names',
-    relation_lazy='joined',
-    name = Column(Unicode(20), nullable=True, index=True,
-        info=dict(description="The name", format='plaintext', official=True, ripped=True)),
-    species = Column(Unicode(16), nullable=True,
-        info=dict(description=u'The short flavor text, such as "Seed" or "Lizard"; usually affixed with the word "Pokémon"',
-        official=True, format='plaintext')),
-)
-create_translation_table('pokemon_flavor_summaries', Pokemon, 'flavor_summaries',
-    flavor_summary = Column(Unicode(512), nullable=True,
-        info=dict(description=u"Text containing facts from all flavor texts, for languages without official game translations", official=False, format='plaintext', ripped=True)),
-)
-
 class PokemonAbility(TableBase):
     u"""Maps an ability to a Pokémon that can have it
     """
@@ -1221,22 +1182,22 @@ create_translation_table('pokemon_color_names', PokemonColor, 'names',
 )
 
 class PokemonDexNumber(TableBase):
-    u"""The number of a Pokémon in a particular Pokédex (e.g. Jigglypuff is #138 in Hoenn's 'dex)
+    u"""The number of a species in a particular Pokédex (e.g. Jigglypuff is #138 in Hoenn's 'dex)
     """
     __tablename__ = 'pokemon_dex_numbers'
-    pokemon_id = Column(Integer, ForeignKey('pokemon.id'), primary_key=True, nullable=False, autoincrement=False,
-        info=dict(description=u"ID of the Pokémon"))
+    species_id = Column(Integer, ForeignKey('pokemon_species.id'), primary_key=True, nullable=False, autoincrement=False,
+        info=dict(description=u"ID of the species"))
     pokedex_id = Column(Integer, ForeignKey('pokedexes.id'), primary_key=True, nullable=False, autoincrement=False,
         info=dict(description=u"ID of the Pokédex"))
     pokedex_number = Column(Integer, nullable=False,
         info=dict(description=u"Number of the Pokémon in that the Pokédex"))
 
 class PokemonEggGroup(TableBase):
-    u"""Maps an Egg group to a Pokémon; each Pokémon belongs to one or two egg groups
+    u"""Maps an Egg group to a species; each species belongs to one or two egg groups
     """
     __tablename__ = 'pokemon_egg_groups'
-    pokemon_id = Column(Integer, ForeignKey('pokemon.id'), primary_key=True, nullable=False, autoincrement=False,
-        info=dict(description=u"ID of the Pokémon"))
+    species_id = Column(Integer, ForeignKey('pokemon_species.id'), primary_key=True, nullable=False, autoincrement=False,
+        info=dict(description=u"ID of the species"))
     egg_group_id = Column(Integer, ForeignKey('egg_groups.id'), primary_key=True, nullable=False, autoincrement=False,
         info=dict(description=u"ID of the egg group"))
 
@@ -1249,8 +1210,8 @@ class PokemonEvolution(TableBase):
     __tablename__ = 'pokemon_evolution'
     id = Column(Integer, primary_key=True, nullable=False,
         info=dict(description=u"A numeric ID"))
-    evolved_pokemon_id = Column(Integer, ForeignKey('pokemon.id'), nullable=False,
-        info=dict(description=u"The ID of the post-evolution Pokémon."))
+    evolved_species_id = Column(Integer, ForeignKey('pokemon_species.id'), nullable=False,
+        info=dict(description=u"The ID of the post-evolution species."))
     evolution_trigger_id = Column(Integer, ForeignKey('evolution_triggers.id'), nullable=False,
         info=dict(description=u"The ID of the evolution trigger."))
     trigger_item_id = Column(Integer, ForeignKey('items.id'), nullable=True,
@@ -1273,24 +1234,10 @@ class PokemonEvolution(TableBase):
         info=dict(description=u"The minimum Beauty value the Pokémon must have."))
     relative_physical_stats = Column(Integer, nullable=True,
         info=dict(description=u"The required relation between the Pokémon's Attack and Defense stats, as sgn(atk-def)."))
-    party_pokemon_id = Column(Integer, ForeignKey('pokemon.id'), nullable=True,
-        info=dict(description=u"The ID of the Pokémon that must be present in the party."))
-    trade_pokemon_id = Column(Integer, ForeignKey('pokemon.id'), nullable=True,
-        info=dict(description=u"The ID of the Pokémon for which this Pokémon must be traded."))
-
-class PokemonFlavorText(TableBase):
-    u"""In-game Pokédex descrption of a Pokémon.
-    """
-    __tablename__ = 'pokemon_flavor_text'
-    summary_column = Pokemon.flavor_summaries_table, 'flavor_summary'
-    pokemon_id = Column(Integer, ForeignKey('pokemon.id'), primary_key=True, nullable=False, autoincrement=False,
-        info=dict(description=u"ID of the Pokémon"))
-    version_id = Column(Integer, ForeignKey('versions.id'), primary_key=True, nullable=False, autoincrement=False,
-        info=dict(description=u"ID of the version that has this flavor text"))
-    language_id = Column(Integer, ForeignKey('languages.id'), primary_key=True, nullable=False,
-        info=dict(description="The language"))
-    flavor_text = Column(Unicode(255), nullable=False,
-        info=dict(description=u"The flavor text", official=True, format='gametext'))
+    party_species_id = Column(Integer, ForeignKey('pokemon_species.id'), nullable=True,
+        info=dict(description=u"The ID of the species that must be present in the party."))
+    trade_species_id = Column(Integer, ForeignKey('pokemon_species.id'), nullable=True,
+        info=dict(description=u"The ID of the species for which this one must be traded."))
 
 class PokemonForm(TableBase):
     u"""An individual form of a Pokémon.
@@ -1302,63 +1249,29 @@ class PokemonForm(TableBase):
     __singlename__ = 'pokemon_form'
     id = Column(Integer, primary_key=True, nullable=False,
         info=dict(description=u'A unique ID for this form.'))
-    identifier = Column(Unicode(16), nullable=True,
-        info=dict(description=u"An identifier", format='identifier'))
-    form_base_pokemon_id = Column(Integer, ForeignKey('pokemon.id'), nullable=False, autoincrement=False,
+    form_identifier = Column(Unicode(16), nullable=True,
+        info=dict(description=u"An identifier of the form, uniue among a species", format='identifier'))
+    pokemon_id = Column(Integer, ForeignKey('pokemon.id'), nullable=False, autoincrement=False,
         info=dict(description=u'The ID of the base Pokémon for this form.'))
-    unique_pokemon_id = Column(Integer, ForeignKey('pokemon.id'), autoincrement=False,
-        info=dict(description=u'The ID of a Pokémon that represents specifically this form, for Pokémon with functionally-different forms like Wormadam.'))
     introduced_in_version_group_id = Column(Integer, ForeignKey('version_groups.id'), autoincrement=False,
         info=dict(description=u'The ID of the version group in which this form first appeared.'))
     is_default = Column(Boolean, nullable=False,
         info=dict(description=u'Set for exactly one form used as the default for each species.'))
+    is_battle_only = Column(Boolean, nullable=False,
+        info=dict(description=u'Set iff the form can only appear in battle.'))
     order = Column(Integer, nullable=False, autoincrement=False,
         info=dict(description=u'The order in which forms should be sorted.  Multiple forms may have equal order, in which case they should fall back on sorting by name.'))
 
     @property
-    def full_name(self):
-        u"""Returns the full name of this form, e.g. "Plant Cloak"."""
-
-        if not self.name:
-            return None
-        elif self.form_group and self.form_group.term:
-            return u'%s %s' % (self.name, self.form_group.term)
-        else:
-            return self.name
-
-    @property
-    def pokemon_name(self):
-        u"""Returns the name of this Pokémon with this form, e.g. "Plant
-        Burmy".
-        """
-
-        if self.name:
-            return u'%s %s' % (self.name, self.form_base_pokemon.name)
-        else:
-            return self.form_base_pokemon.name
+    def name(self):
+        return self.pokemon_name or self.species.name
 
 create_translation_table('pokemon_form_names', PokemonForm, 'names',
     relation_lazy='joined',
-    name = Column(Unicode(16), nullable=False, index=True,
-        info=dict(description="The name", format='plaintext', official=True)),
-)
-
-class PokemonFormGroup(TableBase):
-    u"""Information about a Pokémon's forms as a group."""
-    __tablename__ = 'pokemon_form_groups'
-    __singlename__ = 'pokemon_form_group'
-    pokemon_id = Column(Integer, ForeignKey('pokemon.id'), primary_key=True, nullable=False, autoincrement=False,
-        info=dict(description=u"ID of the base form Pokémon"))
-    is_battle_only = Column(Boolean, nullable=False,
-        info=dict(description=u"Set iff the forms only change in battle"))
-# FIXME remooove
-PokemonFormGroup.id = PokemonFormGroup.pokemon_id
-
-create_translation_table('pokemon_form_group_prose', PokemonFormGroup, 'prose',
-    term = Column(Unicode(16), nullable=True,
-        info=dict(description=u"The term for this Pokémon's forms, e.g. \"Cloak\" for Burmy or \"Forme\" for Deoxys.", official=True, format='plaintext')),
-    description = Column(Unicode(1024), nullable=True,
-        info=dict(description=u"Description of how the forms work", format='markdown', string_getter=markdown.MarkdownString)),
+    form_name = Column(Unicode(32), nullable=False, index=True,
+        info=dict(description=u"The full form name, e.g. 'Sky Forme', for pokémon with different forms", format='plaintext', official=True)),
+    pokemon_name = Column(Unicode(32), nullable=False, index=True,
+        info=dict(description=u"The full pokémon name, e.g. 'Sky Shaymin', for pokémon with different forms", format='plaintext', official=True)),
 )
 
 class PokemonFormPokeathlonStat(TableBase):
@@ -1473,6 +1386,75 @@ create_translation_table('pokemon_shape_prose', PokemonShape, 'prose',
         info=dict(description=u"A splendiferous name of the body shape", format='plaintext')),
 )
 
+class PokemonSpecies(TableBase):
+    u"""A Pokémon species: group of Pokémon with the same Pokédex number
+    """
+    __tablename__ = 'pokemon_species'
+    __singlename__ = 'pokemon_species'
+    id = Column(Integer, primary_key=True, nullable=False,
+        info=dict(description=u"A numeric ID"))
+    identifier = Column(Unicode(20), nullable=False,
+        info=dict(description=u"An identifier", format='identifier'))
+    generation_id = Column(Integer, ForeignKey('generations.id'),
+        info=dict(description=u"ID of the generation this species first appeared in"))
+    evolves_from_species_id = Column(Integer, ForeignKey('pokemon_species.id'), nullable=True,
+        info=dict(description=u"The species from which this one evolves"))
+    evolution_chain_id = Column(Integer, ForeignKey('evolution_chains.id'),
+        info=dict(description=u"ID of the species' evolution chain (a.k.a. family)"))
+    color_id = Column(Integer, ForeignKey('pokemon_colors.id'), nullable=False,
+        info=dict(description=u"ID of this Pokémon's Pokédex color, as used for a gimmick search function in the games."))
+    shape_id = Column(Integer, ForeignKey('pokemon_shapes.id'), nullable=False,
+        info=dict(description=u"ID of this Pokémon's body shape, as used for a gimmick search function in the games."))
+    habitat_id = Column(Integer, ForeignKey('pokemon_habitats.id'), nullable=True,
+        info=dict(description=u"ID of this Pokémon's habitat, as used for a gimmick search function in the games."))
+    gender_rate = Column(Integer, nullable=False,
+        info=dict(description=u"The chance of this Pokémon being female, in eighths; or -1 for genderless"))
+    capture_rate = Column(Integer, nullable=False,
+        info=dict(description=u"The base capture rate; up to 255"))
+    base_happiness = Column(Integer, nullable=False,
+        info=dict(description=u"The tameness when caught by a normal ball"))
+    is_baby = Column(Boolean, nullable=False,
+        info=dict(description=u"True iff the Pokémon is a baby, i.e. a lowest-stage Pokémon that cannot breed but whose evolved form can."))
+    hatch_counter = Column(Integer, nullable=False,
+        info=dict(description=u"Initial hatch counter: one must walk 255 × (hatch_counter + 1) steps before this Pokémon's egg hatches, unless utilizing bonuses like Flame Body's"))
+    has_gender_differences = Column(Boolean, nullable=False,
+        info=dict(description=u"Set iff the species exhibits enough sexual dimorphism to have separate sets of sprites in Gen IV and beyond."))
+    growth_rate_id = Column(Integer, ForeignKey('growth_rates.id'), nullable=False,
+        info=dict(description="ID of the growth rate for this family"))
+    forms_switchable = Column(Boolean, nullable=False,
+        info=dict(description=u"True iff a particular individual of this species can switch beween its different forms."))
+
+create_translation_table('pokemon_species_names', PokemonSpecies, 'names',
+    relation_lazy='joined',
+    name = Column(Unicode(20), nullable=True, index=True,
+        info=dict(description="The name", format='plaintext', official=True, ripped=True)),
+    genus = Column(Unicode(16), nullable=True,
+        info=dict(description=u'The short flavor text, such as "Seed" or "Lizard"; usually affixed with the word "Pokémon"',
+        official=True, format='plaintext')),
+)
+create_translation_table('pokemon_species_flavor_summaries', PokemonSpecies, 'flavor_summaries',
+    flavor_summary = Column(Unicode(512), nullable=True,
+        info=dict(description=u"Text containing facts from all flavor texts, for languages without official game translations", official=False, format='plaintext', ripped=True)),
+)
+create_translation_table('pokemon_species_prose', PokemonSpecies, 'prose',
+    form_description = Column(Unicode(1024), nullable=True,
+        info=dict(description=u"Description of how the forms work", format='markdown', string_getter=markdown.MarkdownString)),
+)
+
+class PokemonSpeciesFlavorText(TableBase):
+    u"""In-game Pokédex descrption of a Pokémon.
+    """
+    __tablename__ = 'pokemon_species_flavor_text'
+    summary_column = PokemonSpecies.flavor_summaries_table, 'flavor_summary'
+    species_id = Column(Integer, ForeignKey('pokemon_species.id'), primary_key=True, nullable=False, autoincrement=False,
+        info=dict(description=u"ID of the Pokémon"))
+    version_id = Column(Integer, ForeignKey('versions.id'), primary_key=True, nullable=False, autoincrement=False,
+        info=dict(description=u"ID of the version that has this flavor text"))
+    language_id = Column(Integer, ForeignKey('languages.id'), primary_key=True, nullable=False,
+        info=dict(description="The language"))
+    flavor_text = Column(Unicode(255), nullable=False,
+        info=dict(description=u"The flavor text", official=True, format='gametext'))
+
 class PokemonStat(TableBase):
     u"""A stat value of a Pokémon
     """
@@ -1979,22 +1961,12 @@ Pokemon.egg_groups = relationship(EggGroup,
 Pokemon.evolution_chain = relationship(EvolutionChain,
     innerjoin=True,
     backref=backref('pokemon', order_by=Pokemon.order.asc()))
-Pokemon.parent_pokemon = relationship(Pokemon,
-    primaryjoin=Pokemon.evolves_from_pokemon_id==Pokemon.id,
-    remote_side=[Pokemon.id],
-    backref='child_pokemon')
-Pokemon.evolutions = relationship(PokemonEvolution,
-    primaryjoin=Pokemon.id==PokemonEvolution.evolved_pokemon_id,
-    backref=backref('evolved_pokemon', innerjoin=True, lazy='joined'))
-Pokemon.flavor_text = relationship(PokemonFlavorText,
-    order_by=PokemonFlavorText.version_id.asc(),
-    backref='pokemon')
 Pokemon.forms = relationship(PokemonForm,
-    primaryjoin=Pokemon.id==PokemonForm.form_base_pokemon_id,
-    order_by=(PokemonForm.order.asc(), PokemonForm.identifier.asc()))
+    primaryjoin=Pokemon.id==PokemonForm.pokemon_id,
+    order_by=(PokemonForm.order.asc(), PokemonForm.form_identifier.asc()))
 Pokemon.default_form = relationship(PokemonForm,
     primaryjoin=and_(
-        Pokemon.id==PokemonForm.form_base_pokemon_id,
+        Pokemon.id==PokemonForm.pokemon_id,
         PokemonForm.is_default==True),
     uselist=False)
 Pokemon.pokemon_habitat = relationship(PokemonHabitat,
@@ -2017,14 +1989,6 @@ Pokemon.types = relationship(Type,
     innerjoin=True,
     order_by=PokemonType.slot.asc(),
     backref=backref('pokemon', order_by=Pokemon.order))
-Pokemon.form = relationship(PokemonForm,
-    primaryjoin=or_(
-        PokemonForm.unique_pokemon_id==Pokemon.id,
-        and_(PokemonForm.unique_pokemon_id==None, 
-            PokemonForm.form_base_pokemon_id==Pokemon.id,
-            PokemonForm.is_default==True)
-        ),
-        uselist=False)
 
 PokemonDexNumber.pokedex = relationship(Pokedex,
     innerjoin=True, lazy='joined')
@@ -2042,27 +2006,18 @@ PokemonEvolution.location = relationship(Location,
     backref='triggered_evolutions')
 PokemonEvolution.known_move = relationship(Move,
     backref='triggered_evolutions')
-PokemonEvolution.party_pokemon = relationship(Pokemon,
-    primaryjoin=PokemonEvolution.party_pokemon_id==Pokemon.id,
+PokemonEvolution.party_species = relationship(PokemonSpecies,
+    primaryjoin=PokemonEvolution.party_species_id==PokemonSpecies.id,
     backref='triggered_evolutions')
-PokemonEvolution.trade_pokemon = relationship(Pokemon,
-    primaryjoin=PokemonEvolution.trade_pokemon_id==Pokemon.id)
+PokemonEvolution.trade_species = relationship(PokemonSpecies,
+    primaryjoin=PokemonEvolution.trade_species_id==PokemonSpecies.id)
 
-PokemonFlavorText.version = relationship(Version, innerjoin=True, lazy='joined')
-PokemonFlavorText.language = relationship(Language, innerjoin=True, lazy='joined')
+PokemonSpeciesFlavorText.version = relationship(Version, innerjoin=True, lazy='joined')
+PokemonSpeciesFlavorText.language = relationship(Language, innerjoin=True, lazy='joined')
 
-PokemonForm.form_base_pokemon = relationship(Pokemon,
-    primaryjoin=PokemonForm.form_base_pokemon_id==Pokemon.id,
-    innerjoin=True)
-PokemonForm.unique_pokemon = relationship(Pokemon,
-    primaryjoin=PokemonForm.unique_pokemon_id==Pokemon.id,
-    backref=backref('unique_form', uselist=False))
 PokemonForm.pokemon = relationship(Pokemon,
-    primaryjoin=or_(
-        PokemonForm.unique_pokemon_id==Pokemon.id,
-        and_(PokemonForm.unique_pokemon_id==None, 
-            PokemonForm.form_base_pokemon_id==Pokemon.id)
-        ), uselist=False)
+    primaryjoin=PokemonForm.pokemon_id==Pokemon.id,
+    innerjoin=True)
 PokemonForm.version_group = relationship(VersionGroup,
     innerjoin=True)
 PokemonForm.form_group = association_proxy('form_base_pokemon', 'form_group')
@@ -2070,10 +2025,6 @@ PokemonForm.pokeathlon_stats = relationship(PokemonFormPokeathlonStat,
     order_by=PokemonFormPokeathlonStat.pokeathlon_stat_id,
     backref='pokemon_form')
 
-PokemonFormGroup.pokemon = relationship(Pokemon,
-    innerjoin=True,
-    backref=backref('form_group', uselist=False))
-
 PokemonFormPokeathlonStat.pokeathlon_stat = relationship(PokeathlonStat,
     innerjoin=True, lazy='joined')
 
@@ -2104,6 +2055,16 @@ PokemonMove.method = relationship(PokemonMoveMethod,
 PokemonStat.stat = relationship(Stat,
     innerjoin=True, lazy='joined')
 
+PokemonSpecies.parent_pokemon = relationship(PokemonSpecies,
+    primaryjoin=PokemonSpecies.evolves_from_species_id==PokemonSpecies.id,
+    remote_side=[PokemonSpecies.id],
+    backref='child_species')
+PokemonSpecies.evolutions = relationship(PokemonEvolution,
+    primaryjoin=PokemonSpecies.id==PokemonEvolution.evolved_species_id,
+    backref=backref('evolved_species', innerjoin=True, lazy='joined'))
+PokemonSpecies.flavor_text = relationship(PokemonSpeciesFlavorText,
+    order_by=PokemonSpeciesFlavorText.version_id.asc(),
+    backref='pokemon')
 
 Region.generation = relationship(Generation, uselist=False)
 Region.version_group_regions = relationship(VersionGroupRegion,

From bc244aeb536df8bd41d8cad177c7893d15dd0e0c Mon Sep 17 00:00:00 2001
From: Petr Viktorin <encukou@gmail.com>
Date: Sat, 30 Apr 2011 02:12:56 +0300
Subject: [PATCH 05/16] Pokemon species split: DB metadata changes

---
 pokedex/db/tables.py | 116 +++++++++++++++++--------------------------
 1 file changed, 46 insertions(+), 70 deletions(-)

diff --git a/pokedex/db/tables.py b/pokedex/db/tables.py
index 34953db..4f35482 100644
--- a/pokedex/db/tables.py
+++ b/pokedex/db/tables.py
@@ -1073,45 +1073,13 @@ class Pokemon(TableBase):
     order = Column(Integer, nullable=False, index=True,
         info=dict(description=u"Order for sorting. Almost national order, except families are grouped together."))
 
-    ### Stuff to handle alternate Pokémon forms
-
     @property
-    def is_base_form(self):
+    def name(self):
         u"""Returns True iff the Pokémon is the base form for its species,
         e.g. Land Shaymin.
         """
 
-        return self.unique_form is None or self.unique_form.is_default
-
-    @property
-    def form_name(self):
-        u"""Returns the Pokémon's form name if it represents a particular form
-        and that form has a name, or None otherwise.
-        """
-
-        # If self.unique_form is None, the short-circuit "and" will go ahead
-        # and return that.  Otherwise, it'll return the form's name, which may
-        # also be None.
-        return self.unique_form and self.unique_form.name
-
-    @property
-    def full_name(self):
-        u"""Returns the Pokémon's name, including its form if applicable."""
-
-        if self.form_name:
-            return u'%s %s' % (self.form_name, self.name)
-        else:
-            return self.name
-
-    @property
-    def normal_form(self):
-        u"""Returns the normal form for this Pokémon; i.e., this will return
-        regular Deoxys when called on any Deoxys form.
-        """
-
-        if self.unique_form:
-            return self.unique_form.form_base_pokemon
-        return self
+        return self.default_form.pokemon_name or self.species.name
 
     ### Not forms!
 
@@ -1268,9 +1236,9 @@ class PokemonForm(TableBase):
 
 create_translation_table('pokemon_form_names', PokemonForm, 'names',
     relation_lazy='joined',
-    form_name = Column(Unicode(32), nullable=False, index=True,
+    form_name = Column(Unicode(32), nullable=True, index=True,
         info=dict(description=u"The full form name, e.g. 'Sky Forme', for pokémon with different forms", format='plaintext', official=True)),
-    pokemon_name = Column(Unicode(32), nullable=False, index=True,
+    pokemon_name = Column(Unicode(32), nullable=True, index=True,
         info=dict(description=u"The full pokémon name, e.g. 'Sky Shaymin', for pokémon with different forms", format='plaintext', official=True)),
 )
 
@@ -1700,9 +1668,6 @@ EncounterSlot.method = relationship(EncounterMethod,
 EncounterSlot.version_group = relationship(VersionGroup, innerjoin=True)
 
 
-EvolutionChain.growth_rate = relationship(GrowthRate,
-    innerjoin=True,
-    backref='evolution_chains')
 EvolutionChain.baby_trigger_item = relationship(Item,
     backref='evolution_chains')
 
@@ -1945,22 +1910,6 @@ Pokemon.dream_ability = relationship(Ability,
         order_by=Pokemon.order,
     ),
 )
-Pokemon.pokemon_color = relationship(PokemonColor,
-    innerjoin=True,
-    backref='pokemon')
-Pokemon.color = association_proxy('pokemon_color', 'name')
-Pokemon.dex_numbers = relationship(PokemonDexNumber,
-    innerjoin=True,
-    order_by=PokemonDexNumber.pokedex_id.asc(),
-    backref='pokemon')
-Pokemon.egg_groups = relationship(EggGroup,
-    secondary=PokemonEggGroup.__table__,
-    innerjoin=True,
-    order_by=PokemonEggGroup.egg_group_id.asc(),
-    backref=backref('pokemon', order_by=Pokemon.order.asc()))
-Pokemon.evolution_chain = relationship(EvolutionChain,
-    innerjoin=True,
-    backref=backref('pokemon', order_by=Pokemon.order.asc()))
 Pokemon.forms = relationship(PokemonForm,
     primaryjoin=Pokemon.id==PokemonForm.pokemon_id,
     order_by=(PokemonForm.order.asc(), PokemonForm.form_identifier.asc()))
@@ -1969,24 +1918,18 @@ Pokemon.default_form = relationship(PokemonForm,
         Pokemon.id==PokemonForm.pokemon_id,
         PokemonForm.is_default==True),
     uselist=False)
-Pokemon.pokemon_habitat = relationship(PokemonHabitat,
-    backref='pokemon')
-Pokemon.habitat = association_proxy('pokemon_habitat', 'name')
 Pokemon.items = relationship(PokemonItem,
     backref='pokemon')
-Pokemon.generation = relationship(Generation,
-    innerjoin=True,
-    backref='pokemon')
-Pokemon.shape = relationship(PokemonShape,
-    innerjoin=True,
-    backref='pokemon')
 Pokemon.stats = relationship(PokemonStat,
     innerjoin=True,
     order_by=PokemonStat.stat_id.asc(),
     backref='pokemon')
+Pokemon.species = relationship(PokemonSpecies,
+    innerjoin=True,
+    backref='pokemon')
 Pokemon.types = relationship(Type,
     secondary=PokemonType.__table__,
-    innerjoin=True,
+    innerjoin=True, lazy='joined',
     order_by=PokemonType.slot.asc(),
     backref=backref('pokemon', order_by=Pokemon.order))
 
@@ -2012,15 +1955,12 @@ PokemonEvolution.party_species = relationship(PokemonSpecies,
 PokemonEvolution.trade_species = relationship(PokemonSpecies,
     primaryjoin=PokemonEvolution.trade_species_id==PokemonSpecies.id)
 
-PokemonSpeciesFlavorText.version = relationship(Version, innerjoin=True, lazy='joined')
-PokemonSpeciesFlavorText.language = relationship(Language, innerjoin=True, lazy='joined')
-
 PokemonForm.pokemon = relationship(Pokemon,
     primaryjoin=PokemonForm.pokemon_id==Pokemon.id,
     innerjoin=True)
+PokemonForm.species = association_proxy('pokemon', 'species')
 PokemonForm.version_group = relationship(VersionGroup,
     innerjoin=True)
-PokemonForm.form_group = association_proxy('form_base_pokemon', 'form_group')
 PokemonForm.pokeathlon_stats = relationship(PokemonFormPokeathlonStat,
     order_by=PokemonFormPokeathlonStat.pokeathlon_stat_id,
     backref='pokemon_form')
@@ -2064,7 +2004,43 @@ PokemonSpecies.evolutions = relationship(PokemonEvolution,
     backref=backref('evolved_species', innerjoin=True, lazy='joined'))
 PokemonSpecies.flavor_text = relationship(PokemonSpeciesFlavorText,
     order_by=PokemonSpeciesFlavorText.version_id.asc(),
-    backref='pokemon')
+    backref='species')
+PokemonSpecies.growth_rate = relationship(GrowthRate,
+    innerjoin=True,
+    backref='evolution_chains')
+PokemonSpecies.pokemon_habitat = relationship(PokemonHabitat,
+    backref='species')
+PokemonSpecies.habitat = association_proxy('pokemon_habitat', 'name')
+PokemonSpecies.pokemon_color = relationship(PokemonColor,
+    innerjoin=True,
+    backref='species')
+PokemonSpecies.color = association_proxy('pokemon_color', 'name')
+PokemonSpecies.egg_groups = relationship(EggGroup,
+    secondary=PokemonEggGroup.__table__,
+    innerjoin=True,
+    order_by=PokemonEggGroup.egg_group_id.asc(),
+    backref=backref('species', order_by=Pokemon.order.asc()))
+PokemonSpecies.forms = relationship(PokemonForm,
+    secondary=Pokemon.__table__,
+    primaryjoin=PokemonSpecies.id==Pokemon.species_id,
+    secondaryjoin=Pokemon.id==PokemonForm.pokemon_id,
+    order_by=Pokemon.order.asc())
+PokemonSpecies.evolution_chain = relationship(EvolutionChain,
+    innerjoin=True,
+    backref=backref('species', order_by=Pokemon.order.asc()))
+PokemonSpecies.dex_numbers = relationship(PokemonDexNumber,
+    innerjoin=True,
+    order_by=PokemonDexNumber.pokedex_id.asc(),
+    backref='species')
+PokemonSpecies.generation = relationship(Generation,
+    innerjoin=True,
+    backref='species')
+PokemonSpecies.shape = relationship(PokemonShape,
+    innerjoin=True,
+    backref='species')
+
+PokemonSpeciesFlavorText.version = relationship(Version, innerjoin=True, lazy='joined')
+PokemonSpeciesFlavorText.language = relationship(Language, innerjoin=True, lazy='joined')
 
 Region.generation = relationship(Generation, uselist=False)
 Region.version_group_regions = relationship(VersionGroupRegion,

From 8309b316f2b61abd87e1f52252389076f0994e00 Mon Sep 17 00:00:00 2001
From: Petr Viktorin <encukou@gmail.com>
Date: Sat, 30 Apr 2011 19:01:43 +0300
Subject: [PATCH 06/16] Add is_default to Pokemon. Revise forms' is_default
 accordingly.

---
 pokedex/data/csv/pokemon.csv       | 1336 ++++++++++++++--------------
 pokedex/data/csv/pokemon_forms.csv |   36 +-
 pokedex/db/tables.py               |   40 +-
 3 files changed, 709 insertions(+), 703 deletions(-)

diff --git a/pokedex/data/csv/pokemon.csv b/pokedex/data/csv/pokemon.csv
index 18e04bf..cdc7517 100644
--- a/pokedex/data/csv/pokemon.csv
+++ b/pokedex/data/csv/pokemon.csv
@@ -1,668 +1,668 @@
-id,species_id,height,weight,base_experience,order
-1,1,7,69,64,1
-2,2,10,130,141,2
-3,3,20,1000,208,3
-4,4,6,85,65,4
-5,5,11,190,142,5
-6,6,17,905,209,6
-7,7,5,90,66,7
-8,8,10,225,143,8
-9,9,16,855,210,9
-10,10,3,29,53,10
-11,11,7,99,72,11
-12,12,11,320,160,12
-13,13,3,32,52,13
-14,14,6,100,71,14
-15,15,10,295,159,15
-16,16,3,18,55,16
-17,17,11,300,113,17
-18,18,15,395,172,18
-19,19,3,35,57,19
-20,20,7,185,116,20
-21,21,3,20,58,21
-22,22,12,380,162,22
-23,23,20,69,62,23
-24,24,35,650,147,24
-25,25,4,60,82,26
-26,26,8,300,122,27
-27,27,6,120,93,28
-28,28,10,295,163,29
-29,29,4,70,59,30
-30,30,8,200,117,31
-31,31,13,600,194,32
-32,32,5,90,60,33
-33,33,9,195,118,34
-34,34,14,620,195,35
-35,35,6,75,68,37
-36,36,13,400,129,38
-37,37,6,99,63,39
-38,38,11,199,178,40
-39,39,5,55,76,42
-40,40,10,120,109,43
-41,41,8,75,54,44
-42,42,16,550,171,45
-43,43,5,54,78,47
-44,44,8,86,132,48
-45,45,12,186,184,49
-46,46,3,54,70,51
-47,47,10,295,128,52
-48,48,10,300,75,53
-49,49,15,125,138,54
-50,50,2,8,81,55
-51,51,7,333,153,56
-52,52,4,42,69,57
-53,53,10,320,148,58
-54,54,8,196,80,59
-55,55,17,766,174,60
-56,56,5,280,74,61
-57,57,10,320,149,62
-58,58,7,190,91,63
-59,59,19,1550,213,64
-60,60,6,124,77,65
-61,61,10,200,131,66
-62,62,13,540,185,67
-63,63,9,195,75,69
-64,64,13,565,145,70
-65,65,15,480,186,71
-66,66,8,195,75,72
-67,67,15,705,146,73
-68,68,16,1300,193,74
-69,69,7,40,84,75
-70,70,10,64,151,76
-71,71,17,155,191,77
-72,72,9,455,105,78
-73,73,16,550,205,79
-74,74,4,200,73,80
-75,75,10,1050,134,81
-76,76,14,3000,177,82
-77,77,10,300,152,83
-78,78,17,950,192,84
-79,79,12,360,99,85
-80,80,16,785,164,86
-81,81,3,60,89,88
-82,82,10,600,161,89
-83,83,8,150,94,91
-84,84,14,392,96,92
-85,85,18,852,158,93
-86,86,11,900,100,94
-87,87,17,1200,176,95
-88,88,9,300,90,96
-89,89,12,300,157,97
-90,90,3,40,97,98
-91,91,15,1325,203,99
-92,92,13,1,95,100
-93,93,16,1,126,101
-94,94,15,405,190,102
-95,95,88,2100,108,103
-96,96,10,324,102,105
-97,97,16,756,165,106
-98,98,4,65,115,107
-99,99,13,600,206,108
-100,100,5,104,103,109
-101,101,12,666,150,110
-102,102,4,25,98,111
-103,103,20,1200,212,112
-104,104,4,65,87,113
-105,105,10,450,124,114
-106,106,15,498,139,116
-107,107,14,502,140,117
-108,108,12,655,127,119
-109,109,6,10,114,121
-110,110,12,95,173,122
-111,111,10,1150,135,123
-112,112,19,1200,204,124
-113,113,11,346,255,127
-114,114,10,350,166,129
-115,115,22,800,175,131
-116,116,4,80,83,132
-117,117,12,250,155,133
-118,118,6,150,111,135
-119,119,13,390,170,136
-120,120,8,345,106,137
-121,121,11,800,207,138
-122,122,13,545,136,140
-123,123,15,560,187,141
-124,124,14,406,137,144
-125,125,11,300,156,146
-126,126,13,445,167,149
-127,127,15,550,200,151
-128,128,14,884,211,152
-129,129,9,100,20,153
-130,130,65,2350,214,154
-131,131,25,2200,219,155
-132,132,3,40,61,156
-133,133,3,65,92,157
-134,134,10,290,196,158
-135,135,8,245,197,159
-136,136,9,250,198,160
-137,137,8,365,130,165
-138,138,4,75,99,168
-139,139,10,350,199,169
-140,140,5,115,99,170
-141,141,13,405,199,171
-142,142,18,590,202,172
-143,143,21,4600,154,174
-144,144,17,554,215,175
-145,145,16,526,216,176
-146,146,20,600,217,177
-147,147,18,33,67,178
-148,148,40,165,144,179
-149,149,22,2100,218,180
-150,150,20,1220,220,181
-151,151,4,40,64,182
-152,152,9,64,64,183
-153,153,12,158,141,184
-154,154,18,1005,208,185
-155,155,5,79,65,186
-156,156,9,190,142,187
-157,157,17,795,209,188
-158,158,6,95,66,189
-159,159,11,250,143,190
-160,160,23,888,210,191
-161,161,8,60,57,192
-162,162,18,325,116,193
-163,163,7,212,58,194
-164,164,16,408,162,195
-165,165,10,108,54,196
-166,166,14,356,134,197
-167,167,5,85,54,198
-168,168,11,335,134,199
-169,169,18,750,204,46
-170,170,5,120,90,200
-171,171,12,225,156,201
-172,172,3,20,42,25
-173,173,3,30,37,36
-174,174,3,10,39,41
-175,175,3,15,74,202
-176,176,6,32,114,203
-177,177,2,20,73,205
-178,178,15,150,171,206
-179,179,6,78,59,207
-180,180,8,133,117,208
-181,181,14,615,194,209
-182,182,4,58,184,50
-183,183,4,85,58,211
-184,184,8,285,153,212
-185,185,12,380,135,214
-186,186,11,339,185,68
-187,187,4,5,74,215
-188,188,6,10,136,216
-189,189,8,30,176,217
-190,190,8,115,94,218
-191,191,3,18,52,220
-192,192,8,85,146,221
-193,193,12,380,147,222
-194,194,4,85,52,224
-195,195,14,750,137,225
-196,196,9,265,197,161
-197,197,10,270,197,162
-198,198,5,21,107,226
-199,199,20,795,164,87
-200,200,7,10,147,228
-201,201,5,50,61,230
-202,202,13,285,177,232
-203,203,15,415,149,233
-204,204,6,72,60,234
-205,205,12,1258,118,235
-206,206,15,140,125,236
-207,207,11,648,108,237
-208,208,92,4000,196,104
-209,209,6,78,63,239
-210,210,14,487,178,240
-211,211,5,39,100,241
-212,212,18,1180,200,142
-213,213,6,205,80,242
-214,214,15,540,200,243
-215,215,9,280,132,244
-216,216,6,88,124,246
-217,217,18,1258,189,247
-218,218,7,350,78,248
-219,219,8,550,154,249
-220,220,4,65,78,250
-221,221,11,558,160,251
-222,222,6,50,113,253
-223,223,6,120,78,254
-224,224,9,285,164,255
-225,225,9,160,183,256
-226,226,21,2200,168,258
-227,227,17,505,168,259
-228,228,6,108,114,260
-229,229,14,350,204,261
-230,230,18,1520,207,134
-231,231,5,335,124,262
-232,232,11,1200,189,263
-233,233,6,325,180,166
-234,234,14,712,165,264
-235,235,12,580,106,265
-236,236,7,210,91,115
-237,237,14,480,138,118
-238,238,4,60,87,143
-239,239,6,235,106,145
-240,240,7,214,117,148
-241,241,12,755,200,266
-242,242,15,468,255,128
-243,243,19,1780,216,267
-244,244,21,1980,217,268
-245,245,20,1870,215,269
-246,246,6,720,67,270
-247,247,12,1520,144,271
-248,248,20,2020,218,272
-249,249,52,2160,220,273
-250,250,38,1990,220,274
-251,251,6,50,64,275
-252,252,5,50,65,276
-253,253,9,216,141,277
-254,254,17,522,208,278
-255,255,4,25,65,279
-256,256,9,195,142,280
-257,257,19,520,209,281
-258,258,4,76,65,282
-259,259,7,280,143,283
-260,260,15,819,210,284
-261,261,5,136,55,285
-262,262,10,370,128,286
-263,263,4,175,60,287
-264,264,5,325,128,288
-265,265,3,36,54,289
-266,266,6,100,72,290
-267,267,10,284,161,291
-268,268,7,115,72,292
-269,269,12,316,161,293
-270,270,5,26,74,294
-271,271,12,325,141,295
-272,272,15,550,181,296
-273,273,5,40,74,297
-274,274,10,280,141,298
-275,275,13,596,181,299
-276,276,3,23,59,300
-277,277,7,198,162,301
-278,278,6,95,64,302
-279,279,12,280,164,303
-280,280,4,66,70,304
-281,281,8,202,140,305
-282,282,16,484,208,306
-283,283,5,17,63,308
-284,284,8,36,128,309
-285,285,4,45,65,310
-286,286,12,392,165,311
-287,287,8,240,83,312
-288,288,14,465,126,313
-289,289,20,1305,210,314
-290,290,5,55,65,315
-291,291,8,120,155,316
-292,292,8,12,95,317
-293,293,6,163,68,318
-294,294,10,405,126,319
-295,295,15,840,184,320
-296,296,10,864,87,321
-297,297,23,2538,184,322
-298,298,2,20,33,210
-299,299,10,970,108,323
-300,300,6,110,65,325
-301,301,11,326,138,326
-302,302,5,110,98,327
-303,303,6,115,98,328
-304,304,4,600,96,329
-305,305,9,1200,152,330
-306,306,21,3600,205,331
-307,307,6,112,91,332
-308,308,13,315,153,333
-309,309,6,152,104,334
-310,310,15,402,168,335
-311,311,4,42,120,336
-312,312,4,42,120,337
-313,313,7,177,146,338
-314,314,6,177,146,339
-315,315,3,20,152,341
-316,316,4,103,75,343
-317,317,17,800,168,344
-318,318,8,208,88,345
-319,319,18,888,175,346
-320,320,20,1300,137,347
-321,321,145,3980,206,348
-322,322,7,240,88,349
-323,323,19,2200,175,350
-324,324,5,804,161,351
-325,325,7,306,89,352
-326,326,9,715,164,353
-327,327,11,50,85,354
-328,328,7,150,73,355
-329,329,11,153,126,356
-330,330,20,820,197,357
-331,331,4,513,97,358
-332,332,13,774,177,359
-333,333,4,12,74,360
-334,334,11,206,188,361
-335,335,13,403,165,362
-336,336,27,525,165,363
-337,337,10,1680,150,364
-338,338,12,1540,150,365
-339,339,4,19,92,366
-340,340,9,236,158,367
-341,341,6,115,111,368
-342,342,11,328,161,369
-343,343,5,215,58,370
-344,344,15,1080,189,371
-345,345,10,238,99,372
-346,346,15,604,199,373
-347,347,7,125,99,374
-348,348,15,682,199,375
-349,349,6,74,61,376
-350,350,62,1620,213,377
-351,351,3,8,145,378
-352,352,10,220,132,382
-353,353,6,23,97,383
-354,354,11,125,179,384
-355,355,8,150,97,385
-356,356,16,306,179,386
-357,357,20,1000,169,388
-358,358,6,10,147,390
-359,359,12,470,174,391
-360,360,6,140,44,231
-361,361,7,168,74,392
-362,362,15,2565,187,393
-363,363,8,395,75,395
-364,364,11,876,128,396
-365,365,14,1506,192,397
-366,366,4,525,142,398
-367,367,17,270,178,399
-368,368,18,226,178,400
-369,369,10,234,198,401
-370,370,6,87,110,402
-371,371,6,421,89,403
-372,372,11,1105,144,404
-373,373,15,1026,218,405
-374,374,6,952,103,406
-375,375,12,2025,153,407
-376,376,16,5500,210,408
-377,377,17,2300,217,409
-378,378,18,1750,216,410
-379,379,19,2050,215,411
-380,380,14,400,211,412
-381,381,20,600,211,413
-382,382,45,3520,218,414
-383,383,35,9500,218,415
-384,384,70,2065,220,416
-385,385,3,11,215,417
-386,386,17,608,215,418
-387,387,4,102,64,422
-388,388,11,970,141,423
-389,389,22,3100,208,424
-390,390,5,62,65,425
-391,391,9,220,142,426
-392,392,12,550,209,427
-393,393,4,52,66,428
-394,394,8,230,143,429
-395,395,17,845,210,430
-396,396,3,20,56,431
-397,397,6,155,113,432
-398,398,12,249,172,433
-399,399,5,200,58,434
-400,400,10,315,116,435
-401,401,3,22,54,436
-402,402,10,255,159,437
-403,403,5,95,60,438
-404,404,9,305,117,439
-405,405,14,420,194,440
-406,406,2,12,68,340
-407,407,9,145,204,342
-408,408,9,315,99,441
-409,409,16,1025,199,442
-410,410,5,570,99,443
-411,411,13,1495,199,444
-412,412,2,34,61,445
-413,413,5,65,159,446
-414,414,9,233,159,449
-415,415,3,55,63,450
-416,416,12,385,188,451
-417,417,4,39,120,452
-418,418,7,295,75,453
-419,419,11,335,178,454
-420,420,4,33,68,455
-421,421,5,93,133,456
-422,422,3,63,73,457
-423,423,9,299,176,458
-424,424,12,203,186,219
-425,425,4,12,127,459
-426,426,12,150,204,460
-427,427,4,55,84,461
-428,428,12,333,178,462
-429,429,9,44,187,229
-430,430,9,273,187,227
-431,431,5,39,71,463
-432,432,10,438,183,464
-433,433,2,6,74,389
-434,434,4,192,79,465
-435,435,10,380,209,466
-436,436,5,605,72,467
-437,437,13,1870,188,468
-438,438,5,150,68,213
-439,439,6,130,78,139
-440,440,6,244,255,126
-441,441,5,19,107,469
-442,442,10,1080,168,470
-443,443,7,205,67,471
-444,444,14,560,144,472
-445,445,19,950,218,473
-446,446,6,1050,94,173
-447,447,7,202,72,474
-448,448,12,540,204,475
-449,449,8,495,95,476
-450,450,20,3000,198,477
-451,451,8,120,114,478
-452,452,13,615,204,479
-453,453,7,230,83,480
-454,454,13,444,181,481
-455,455,14,270,164,482
-456,456,4,70,90,483
-457,457,12,240,156,484
-458,458,10,650,108,257
-459,459,10,505,131,485
-460,460,22,1355,214,486
-461,461,11,340,199,245
-462,462,12,1800,211,90
-463,463,17,1400,193,120
-464,464,24,2828,217,125
-465,465,20,1286,211,130
-466,466,18,1386,199,147
-467,467,16,680,199,150
-468,468,15,380,220,204
-469,469,19,515,198,223
-470,470,10,255,196,163
-471,471,8,259,196,164
-472,472,20,425,192,238
-473,473,25,2910,207,252
-474,474,9,340,185,167
-475,475,16,520,208,307
-476,476,14,3400,198,324
-477,477,22,1066,210,387
-478,478,13,266,187,394
-479,479,3,3,132,487
-480,480,3,3,210,493
-481,481,3,3,210,494
-482,482,3,3,210,495
-483,483,54,6830,220,496
-484,484,42,3360,220,497
-485,485,17,4300,215,498
-486,486,37,4200,220,499
-487,487,45,7500,220,500
-488,488,15,856,210,502
-489,489,4,31,165,503
-490,490,3,14,215,504
-491,491,15,505,210,505
-492,492,2,21,64,506
-493,493,32,3200,255,508
-494,494,4,40,270,509
-495,495,6,81,28,510
-496,496,8,160,145,511
-497,497,33,630,238,512
-498,498,5,99,28,513
-499,499,10,555,146,514
-500,500,16,1500,238,515
-501,501,5,59,28,516
-502,502,8,245,145,517
-503,503,15,946,238,518
-504,504,5,116,51,519
-505,505,11,270,147,520
-506,506,4,41,55,521
-507,507,9,147,130,522
-508,508,12,610,221,523
-509,509,4,101,56,524
-510,510,11,375,156,525
-511,511,6,105,63,526
-512,512,11,305,174,527
-513,513,6,110,63,528
-514,514,10,280,174,529
-515,515,6,135,63,530
-516,516,10,290,174,531
-517,517,6,233,58,532
-518,518,11,605,170,533
-519,519,3,21,53,534
-520,520,6,150,125,535
-521,521,12,290,215,536
-522,522,8,298,59,537
-523,523,16,795,174,538
-524,524,4,180,56,539
-525,525,9,1020,137,540
-526,526,17,2600,227,541
-527,527,4,21,63,542
-528,528,9,105,149,543
-529,529,3,85,66,544
-530,530,7,404,178,545
-531,531,11,310,390,546
-532,532,6,125,61,547
-533,533,12,400,142,548
-534,534,14,870,227,549
-535,535,5,45,59,550
-536,536,8,170,134,551
-537,537,15,620,225,552
-538,538,13,555,163,553
-539,539,14,510,163,554
-540,540,3,25,62,555
-541,541,5,73,133,556
-542,542,12,205,221,557
-543,543,4,53,52,558
-544,544,12,585,126,559
-545,545,25,2005,214,560
-546,546,3,6,56,561
-547,547,7,66,168,562
-548,548,5,66,56,563
-549,549,11,163,168,564
-550,550,10,180,161,565
-551,551,7,152,58,567
-552,552,10,334,123,568
-553,553,15,963,229,569
-554,554,6,375,63,570
-555,555,13,929,168,571
-556,556,10,280,161,573
-557,557,3,145,65,574
-558,558,14,2000,166,575
-559,559,6,118,70,576
-560,560,11,300,171,577
-561,561,14,140,172,578
-562,562,5,15,61,579
-563,563,17,765,169,580
-564,564,7,165,71,581
-565,565,12,810,173,582
-566,566,5,95,71,583
-567,567,14,320,177,584
-568,568,6,310,66,585
-569,569,19,1073,166,586
-570,570,7,125,66,587
-571,571,16,811,179,588
-572,572,4,58,60,589
-573,573,5,75,165,590
-574,574,4,58,58,591
-575,575,7,180,137,592
-576,576,15,440,221,593
-577,577,3,10,58,594
-578,578,6,80,130,595
-579,579,10,201,221,596
-580,580,5,55,61,597
-581,581,13,242,166,598
-582,582,4,57,61,599
-583,583,11,410,138,600
-584,584,13,575,241,601
-585,585,6,195,67,602
-586,586,19,925,166,603
-587,587,4,50,150,604
-588,588,5,59,63,605
-589,589,10,330,173,606
-590,590,2,10,59,607
-591,591,6,105,162,608
-592,592,12,330,67,609
-593,593,22,1350,168,610
-594,594,12,316,165,611
-595,595,1,6,64,612
-596,596,8,143,165,613
-597,597,6,188,61,614
-598,598,10,1100,171,615
-599,599,3,210,60,616
-600,600,6,510,154,617
-601,601,6,810,234,618
-602,602,2,3,55,619
-603,603,12,220,142,620
-604,604,21,805,232,621
-605,605,5,90,67,622
-606,606,10,345,170,623
-607,607,3,31,55,624
-608,608,6,130,130,625
-609,609,10,343,234,626
-610,610,6,180,64,627
-611,611,10,360,144,628
-612,612,18,1055,243,629
-613,613,5,85,61,630
-614,614,26,2600,170,631
-615,615,11,1480,170,632
-616,616,4,77,61,633
-617,617,8,253,173,634
-618,618,7,110,165,635
-619,619,9,200,70,636
-620,620,14,355,179,637
-621,621,16,1390,170,638
-622,622,10,920,61,639
-623,623,28,3300,169,640
-624,624,5,102,68,641
-625,625,16,700,172,642
-626,626,16,946,172,643
-627,627,5,105,70,644
-628,628,15,410,179,645
-629,629,5,90,74,646
-630,630,12,395,179,647
-631,631,14,580,169,648
-632,632,3,330,169,649
-633,633,8,173,60,650
-634,634,14,500,147,651
-635,635,18,1600,270,652
-636,636,11,288,72,653
-637,637,16,460,248,654
-638,638,21,2500,261,655
-639,639,19,2600,261,656
-640,640,20,2000,261,657
-641,641,15,630,261,658
-642,642,15,610,261,659
-643,643,32,3300,306,660
-644,644,29,3450,306,661
-645,645,15,680,270,662
-646,646,30,3250,297,663
-647,647,14,485,261,664
-648,648,6,65,270,665
-649,649,15,825,270,667
-650,386,17,608,215,419
-651,386,17,608,215,420
-652,386,17,608,215,421
-653,413,5,65,159,447
-654,413,5,65,159,448
-655,492,4,52,64,507
-656,487,69,6500,220,501
-657,479,3,3,132,488
-658,479,3,3,132,489
-659,479,3,3,132,490
-660,479,3,3,132,491
-661,479,3,3,132,492
-662,351,3,8,147,379
-663,351,3,8,147,380
-664,351,3,8,147,381
-665,550,10,180,161,566
-666,555,13,929,189,572
-667,648,6,65,270,666
+id,species_id,height,weight,base_experience,order,is_default
+1,1,7,69,64,1,1
+2,2,10,130,141,2,1
+3,3,20,1000,208,3,1
+4,4,6,85,65,4,1
+5,5,11,190,142,5,1
+6,6,17,905,209,6,1
+7,7,5,90,66,7,1
+8,8,10,225,143,8,1
+9,9,16,855,210,9,1
+10,10,3,29,53,10,1
+11,11,7,99,72,11,1
+12,12,11,320,160,12,1
+13,13,3,32,52,13,1
+14,14,6,100,71,14,1
+15,15,10,295,159,15,1
+16,16,3,18,55,16,1
+17,17,11,300,113,17,1
+18,18,15,395,172,18,1
+19,19,3,35,57,19,1
+20,20,7,185,116,20,1
+21,21,3,20,58,21,1
+22,22,12,380,162,22,1
+23,23,20,69,62,23,1
+24,24,35,650,147,24,1
+25,25,4,60,82,26,1
+26,26,8,300,122,27,1
+27,27,6,120,93,28,1
+28,28,10,295,163,29,1
+29,29,4,70,59,30,1
+30,30,8,200,117,31,1
+31,31,13,600,194,32,1
+32,32,5,90,60,33,1
+33,33,9,195,118,34,1
+34,34,14,620,195,35,1
+35,35,6,75,68,37,1
+36,36,13,400,129,38,1
+37,37,6,99,63,39,1
+38,38,11,199,178,40,1
+39,39,5,55,76,42,1
+40,40,10,120,109,43,1
+41,41,8,75,54,44,1
+42,42,16,550,171,45,1
+43,43,5,54,78,47,1
+44,44,8,86,132,48,1
+45,45,12,186,184,49,1
+46,46,3,54,70,51,1
+47,47,10,295,128,52,1
+48,48,10,300,75,53,1
+49,49,15,125,138,54,1
+50,50,2,8,81,55,1
+51,51,7,333,153,56,1
+52,52,4,42,69,57,1
+53,53,10,320,148,58,1
+54,54,8,196,80,59,1
+55,55,17,766,174,60,1
+56,56,5,280,74,61,1
+57,57,10,320,149,62,1
+58,58,7,190,91,63,1
+59,59,19,1550,213,64,1
+60,60,6,124,77,65,1
+61,61,10,200,131,66,1
+62,62,13,540,185,67,1
+63,63,9,195,75,69,1
+64,64,13,565,145,70,1
+65,65,15,480,186,71,1
+66,66,8,195,75,72,1
+67,67,15,705,146,73,1
+68,68,16,1300,193,74,1
+69,69,7,40,84,75,1
+70,70,10,64,151,76,1
+71,71,17,155,191,77,1
+72,72,9,455,105,78,1
+73,73,16,550,205,79,1
+74,74,4,200,73,80,1
+75,75,10,1050,134,81,1
+76,76,14,3000,177,82,1
+77,77,10,300,152,83,1
+78,78,17,950,192,84,1
+79,79,12,360,99,85,1
+80,80,16,785,164,86,1
+81,81,3,60,89,88,1
+82,82,10,600,161,89,1
+83,83,8,150,94,91,1
+84,84,14,392,96,92,1
+85,85,18,852,158,93,1
+86,86,11,900,100,94,1
+87,87,17,1200,176,95,1
+88,88,9,300,90,96,1
+89,89,12,300,157,97,1
+90,90,3,40,97,98,1
+91,91,15,1325,203,99,1
+92,92,13,1,95,100,1
+93,93,16,1,126,101,1
+94,94,15,405,190,102,1
+95,95,88,2100,108,103,1
+96,96,10,324,102,105,1
+97,97,16,756,165,106,1
+98,98,4,65,115,107,1
+99,99,13,600,206,108,1
+100,100,5,104,103,109,1
+101,101,12,666,150,110,1
+102,102,4,25,98,111,1
+103,103,20,1200,212,112,1
+104,104,4,65,87,113,1
+105,105,10,450,124,114,1
+106,106,15,498,139,116,1
+107,107,14,502,140,117,1
+108,108,12,655,127,119,1
+109,109,6,10,114,121,1
+110,110,12,95,173,122,1
+111,111,10,1150,135,123,1
+112,112,19,1200,204,124,1
+113,113,11,346,255,127,1
+114,114,10,350,166,129,1
+115,115,22,800,175,131,1
+116,116,4,80,83,132,1
+117,117,12,250,155,133,1
+118,118,6,150,111,135,1
+119,119,13,390,170,136,1
+120,120,8,345,106,137,1
+121,121,11,800,207,138,1
+122,122,13,545,136,140,1
+123,123,15,560,187,141,1
+124,124,14,406,137,144,1
+125,125,11,300,156,146,1
+126,126,13,445,167,149,1
+127,127,15,550,200,151,1
+128,128,14,884,211,152,1
+129,129,9,100,20,153,1
+130,130,65,2350,214,154,1
+131,131,25,2200,219,155,1
+132,132,3,40,61,156,1
+133,133,3,65,92,157,1
+134,134,10,290,196,158,1
+135,135,8,245,197,159,1
+136,136,9,250,198,160,1
+137,137,8,365,130,165,1
+138,138,4,75,99,168,1
+139,139,10,350,199,169,1
+140,140,5,115,99,170,1
+141,141,13,405,199,171,1
+142,142,18,590,202,172,1
+143,143,21,4600,154,174,1
+144,144,17,554,215,175,1
+145,145,16,526,216,176,1
+146,146,20,600,217,177,1
+147,147,18,33,67,178,1
+148,148,40,165,144,179,1
+149,149,22,2100,218,180,1
+150,150,20,1220,220,181,1
+151,151,4,40,64,182,1
+152,152,9,64,64,183,1
+153,153,12,158,141,184,1
+154,154,18,1005,208,185,1
+155,155,5,79,65,186,1
+156,156,9,190,142,187,1
+157,157,17,795,209,188,1
+158,158,6,95,66,189,1
+159,159,11,250,143,190,1
+160,160,23,888,210,191,1
+161,161,8,60,57,192,1
+162,162,18,325,116,193,1
+163,163,7,212,58,194,1
+164,164,16,408,162,195,1
+165,165,10,108,54,196,1
+166,166,14,356,134,197,1
+167,167,5,85,54,198,1
+168,168,11,335,134,199,1
+169,169,18,750,204,46,1
+170,170,5,120,90,200,1
+171,171,12,225,156,201,1
+172,172,3,20,42,25,1
+173,173,3,30,37,36,1
+174,174,3,10,39,41,1
+175,175,3,15,74,202,1
+176,176,6,32,114,203,1
+177,177,2,20,73,205,1
+178,178,15,150,171,206,1
+179,179,6,78,59,207,1
+180,180,8,133,117,208,1
+181,181,14,615,194,209,1
+182,182,4,58,184,50,1
+183,183,4,85,58,211,1
+184,184,8,285,153,212,1
+185,185,12,380,135,214,1
+186,186,11,339,185,68,1
+187,187,4,5,74,215,1
+188,188,6,10,136,216,1
+189,189,8,30,176,217,1
+190,190,8,115,94,218,1
+191,191,3,18,52,220,1
+192,192,8,85,146,221,1
+193,193,12,380,147,222,1
+194,194,4,85,52,224,1
+195,195,14,750,137,225,1
+196,196,9,265,197,161,1
+197,197,10,270,197,162,1
+198,198,5,21,107,226,1
+199,199,20,795,164,87,1
+200,200,7,10,147,228,1
+201,201,5,50,61,230,1
+202,202,13,285,177,232,1
+203,203,15,415,149,233,1
+204,204,6,72,60,234,1
+205,205,12,1258,118,235,1
+206,206,15,140,125,236,1
+207,207,11,648,108,237,1
+208,208,92,4000,196,104,1
+209,209,6,78,63,239,1
+210,210,14,487,178,240,1
+211,211,5,39,100,241,1
+212,212,18,1180,200,142,1
+213,213,6,205,80,242,1
+214,214,15,540,200,243,1
+215,215,9,280,132,244,1
+216,216,6,88,124,246,1
+217,217,18,1258,189,247,1
+218,218,7,350,78,248,1
+219,219,8,550,154,249,1
+220,220,4,65,78,250,1
+221,221,11,558,160,251,1
+222,222,6,50,113,253,1
+223,223,6,120,78,254,1
+224,224,9,285,164,255,1
+225,225,9,160,183,256,1
+226,226,21,2200,168,258,1
+227,227,17,505,168,259,1
+228,228,6,108,114,260,1
+229,229,14,350,204,261,1
+230,230,18,1520,207,134,1
+231,231,5,335,124,262,1
+232,232,11,1200,189,263,1
+233,233,6,325,180,166,1
+234,234,14,712,165,264,1
+235,235,12,580,106,265,1
+236,236,7,210,91,115,1
+237,237,14,480,138,118,1
+238,238,4,60,87,143,1
+239,239,6,235,106,145,1
+240,240,7,214,117,148,1
+241,241,12,755,200,266,1
+242,242,15,468,255,128,1
+243,243,19,1780,216,267,1
+244,244,21,1980,217,268,1
+245,245,20,1870,215,269,1
+246,246,6,720,67,270,1
+247,247,12,1520,144,271,1
+248,248,20,2020,218,272,1
+249,249,52,2160,220,273,1
+250,250,38,1990,220,274,1
+251,251,6,50,64,275,1
+252,252,5,50,65,276,1
+253,253,9,216,141,277,1
+254,254,17,522,208,278,1
+255,255,4,25,65,279,1
+256,256,9,195,142,280,1
+257,257,19,520,209,281,1
+258,258,4,76,65,282,1
+259,259,7,280,143,283,1
+260,260,15,819,210,284,1
+261,261,5,136,55,285,1
+262,262,10,370,128,286,1
+263,263,4,175,60,287,1
+264,264,5,325,128,288,1
+265,265,3,36,54,289,1
+266,266,6,100,72,290,1
+267,267,10,284,161,291,1
+268,268,7,115,72,292,1
+269,269,12,316,161,293,1
+270,270,5,26,74,294,1
+271,271,12,325,141,295,1
+272,272,15,550,181,296,1
+273,273,5,40,74,297,1
+274,274,10,280,141,298,1
+275,275,13,596,181,299,1
+276,276,3,23,59,300,1
+277,277,7,198,162,301,1
+278,278,6,95,64,302,1
+279,279,12,280,164,303,1
+280,280,4,66,70,304,1
+281,281,8,202,140,305,1
+282,282,16,484,208,306,1
+283,283,5,17,63,308,1
+284,284,8,36,128,309,1
+285,285,4,45,65,310,1
+286,286,12,392,165,311,1
+287,287,8,240,83,312,1
+288,288,14,465,126,313,1
+289,289,20,1305,210,314,1
+290,290,5,55,65,315,1
+291,291,8,120,155,316,1
+292,292,8,12,95,317,1
+293,293,6,163,68,318,1
+294,294,10,405,126,319,1
+295,295,15,840,184,320,1
+296,296,10,864,87,321,1
+297,297,23,2538,184,322,1
+298,298,2,20,33,210,1
+299,299,10,970,108,323,1
+300,300,6,110,65,325,1
+301,301,11,326,138,326,1
+302,302,5,110,98,327,1
+303,303,6,115,98,328,1
+304,304,4,600,96,329,1
+305,305,9,1200,152,330,1
+306,306,21,3600,205,331,1
+307,307,6,112,91,332,1
+308,308,13,315,153,333,1
+309,309,6,152,104,334,1
+310,310,15,402,168,335,1
+311,311,4,42,120,336,1
+312,312,4,42,120,337,1
+313,313,7,177,146,338,1
+314,314,6,177,146,339,1
+315,315,3,20,152,341,1
+316,316,4,103,75,343,1
+317,317,17,800,168,344,1
+318,318,8,208,88,345,1
+319,319,18,888,175,346,1
+320,320,20,1300,137,347,1
+321,321,145,3980,206,348,1
+322,322,7,240,88,349,1
+323,323,19,2200,175,350,1
+324,324,5,804,161,351,1
+325,325,7,306,89,352,1
+326,326,9,715,164,353,1
+327,327,11,50,85,354,1
+328,328,7,150,73,355,1
+329,329,11,153,126,356,1
+330,330,20,820,197,357,1
+331,331,4,513,97,358,1
+332,332,13,774,177,359,1
+333,333,4,12,74,360,1
+334,334,11,206,188,361,1
+335,335,13,403,165,362,1
+336,336,27,525,165,363,1
+337,337,10,1680,150,364,1
+338,338,12,1540,150,365,1
+339,339,4,19,92,366,1
+340,340,9,236,158,367,1
+341,341,6,115,111,368,1
+342,342,11,328,161,369,1
+343,343,5,215,58,370,1
+344,344,15,1080,189,371,1
+345,345,10,238,99,372,1
+346,346,15,604,199,373,1
+347,347,7,125,99,374,1
+348,348,15,682,199,375,1
+349,349,6,74,61,376,1
+350,350,62,1620,213,377,1
+351,351,3,8,145,378,1
+352,352,10,220,132,382,1
+353,353,6,23,97,383,1
+354,354,11,125,179,384,1
+355,355,8,150,97,385,1
+356,356,16,306,179,386,1
+357,357,20,1000,169,388,1
+358,358,6,10,147,390,1
+359,359,12,470,174,391,1
+360,360,6,140,44,231,1
+361,361,7,168,74,392,1
+362,362,15,2565,187,393,1
+363,363,8,395,75,395,1
+364,364,11,876,128,396,1
+365,365,14,1506,192,397,1
+366,366,4,525,142,398,1
+367,367,17,270,178,399,1
+368,368,18,226,178,400,1
+369,369,10,234,198,401,1
+370,370,6,87,110,402,1
+371,371,6,421,89,403,1
+372,372,11,1105,144,404,1
+373,373,15,1026,218,405,1
+374,374,6,952,103,406,1
+375,375,12,2025,153,407,1
+376,376,16,5500,210,408,1
+377,377,17,2300,217,409,1
+378,378,18,1750,216,410,1
+379,379,19,2050,215,411,1
+380,380,14,400,211,412,1
+381,381,20,600,211,413,1
+382,382,45,3520,218,414,1
+383,383,35,9500,218,415,1
+384,384,70,2065,220,416,1
+385,385,3,11,215,417,1
+386,386,17,608,215,418,1
+387,387,4,102,64,422,1
+388,388,11,970,141,423,1
+389,389,22,3100,208,424,1
+390,390,5,62,65,425,1
+391,391,9,220,142,426,1
+392,392,12,550,209,427,1
+393,393,4,52,66,428,1
+394,394,8,230,143,429,1
+395,395,17,845,210,430,1
+396,396,3,20,56,431,1
+397,397,6,155,113,432,1
+398,398,12,249,172,433,1
+399,399,5,200,58,434,1
+400,400,10,315,116,435,1
+401,401,3,22,54,436,1
+402,402,10,255,159,437,1
+403,403,5,95,60,438,1
+404,404,9,305,117,439,1
+405,405,14,420,194,440,1
+406,406,2,12,68,340,1
+407,407,9,145,204,342,1
+408,408,9,315,99,441,1
+409,409,16,1025,199,442,1
+410,410,5,570,99,443,1
+411,411,13,1495,199,444,1
+412,412,2,34,61,445,1
+413,413,5,65,159,446,1
+414,414,9,233,159,449,1
+415,415,3,55,63,450,1
+416,416,12,385,188,451,1
+417,417,4,39,120,452,1
+418,418,7,295,75,453,1
+419,419,11,335,178,454,1
+420,420,4,33,68,455,1
+421,421,5,93,133,456,1
+422,422,3,63,73,457,1
+423,423,9,299,176,458,1
+424,424,12,203,186,219,1
+425,425,4,12,127,459,1
+426,426,12,150,204,460,1
+427,427,4,55,84,461,1
+428,428,12,333,178,462,1
+429,429,9,44,187,229,1
+430,430,9,273,187,227,1
+431,431,5,39,71,463,1
+432,432,10,438,183,464,1
+433,433,2,6,74,389,1
+434,434,4,192,79,465,1
+435,435,10,380,209,466,1
+436,436,5,605,72,467,1
+437,437,13,1870,188,468,1
+438,438,5,150,68,213,1
+439,439,6,130,78,139,1
+440,440,6,244,255,126,1
+441,441,5,19,107,469,1
+442,442,10,1080,168,470,1
+443,443,7,205,67,471,1
+444,444,14,560,144,472,1
+445,445,19,950,218,473,1
+446,446,6,1050,94,173,1
+447,447,7,202,72,474,1
+448,448,12,540,204,475,1
+449,449,8,495,95,476,1
+450,450,20,3000,198,477,1
+451,451,8,120,114,478,1
+452,452,13,615,204,479,1
+453,453,7,230,83,480,1
+454,454,13,444,181,481,1
+455,455,14,270,164,482,1
+456,456,4,70,90,483,1
+457,457,12,240,156,484,1
+458,458,10,650,108,257,1
+459,459,10,505,131,485,1
+460,460,22,1355,214,486,1
+461,461,11,340,199,245,1
+462,462,12,1800,211,90,1
+463,463,17,1400,193,120,1
+464,464,24,2828,217,125,1
+465,465,20,1286,211,130,1
+466,466,18,1386,199,147,1
+467,467,16,680,199,150,1
+468,468,15,380,220,204,1
+469,469,19,515,198,223,1
+470,470,10,255,196,163,1
+471,471,8,259,196,164,1
+472,472,20,425,192,238,1
+473,473,25,2910,207,252,1
+474,474,9,340,185,167,1
+475,475,16,520,208,307,1
+476,476,14,3400,198,324,1
+477,477,22,1066,210,387,1
+478,478,13,266,187,394,1
+479,479,3,3,132,487,1
+480,480,3,3,210,493,1
+481,481,3,3,210,494,1
+482,482,3,3,210,495,1
+483,483,54,6830,220,496,1
+484,484,42,3360,220,497,1
+485,485,17,4300,215,498,1
+486,486,37,4200,220,499,1
+487,487,45,7500,220,500,1
+488,488,15,856,210,502,1
+489,489,4,31,165,503,1
+490,490,3,14,215,504,1
+491,491,15,505,210,505,1
+492,492,2,21,64,506,1
+493,493,32,3200,255,508,1
+494,494,4,40,270,509,1
+495,495,6,81,28,510,1
+496,496,8,160,145,511,1
+497,497,33,630,238,512,1
+498,498,5,99,28,513,1
+499,499,10,555,146,514,1
+500,500,16,1500,238,515,1
+501,501,5,59,28,516,1
+502,502,8,245,145,517,1
+503,503,15,946,238,518,1
+504,504,5,116,51,519,1
+505,505,11,270,147,520,1
+506,506,4,41,55,521,1
+507,507,9,147,130,522,1
+508,508,12,610,221,523,1
+509,509,4,101,56,524,1
+510,510,11,375,156,525,1
+511,511,6,105,63,526,1
+512,512,11,305,174,527,1
+513,513,6,110,63,528,1
+514,514,10,280,174,529,1
+515,515,6,135,63,530,1
+516,516,10,290,174,531,1
+517,517,6,233,58,532,1
+518,518,11,605,170,533,1
+519,519,3,21,53,534,1
+520,520,6,150,125,535,1
+521,521,12,290,215,536,1
+522,522,8,298,59,537,1
+523,523,16,795,174,538,1
+524,524,4,180,56,539,1
+525,525,9,1020,137,540,1
+526,526,17,2600,227,541,1
+527,527,4,21,63,542,1
+528,528,9,105,149,543,1
+529,529,3,85,66,544,1
+530,530,7,404,178,545,1
+531,531,11,310,390,546,1
+532,532,6,125,61,547,1
+533,533,12,400,142,548,1
+534,534,14,870,227,549,1
+535,535,5,45,59,550,1
+536,536,8,170,134,551,1
+537,537,15,620,225,552,1
+538,538,13,555,163,553,1
+539,539,14,510,163,554,1
+540,540,3,25,62,555,1
+541,541,5,73,133,556,1
+542,542,12,205,221,557,1
+543,543,4,53,52,558,1
+544,544,12,585,126,559,1
+545,545,25,2005,214,560,1
+546,546,3,6,56,561,1
+547,547,7,66,168,562,1
+548,548,5,66,56,563,1
+549,549,11,163,168,564,1
+550,550,10,180,161,565,1
+551,551,7,152,58,567,1
+552,552,10,334,123,568,1
+553,553,15,963,229,569,1
+554,554,6,375,63,570,1
+555,555,13,929,168,571,1
+556,556,10,280,161,573,1
+557,557,3,145,65,574,1
+558,558,14,2000,166,575,1
+559,559,6,118,70,576,1
+560,560,11,300,171,577,1
+561,561,14,140,172,578,1
+562,562,5,15,61,579,1
+563,563,17,765,169,580,1
+564,564,7,165,71,581,1
+565,565,12,810,173,582,1
+566,566,5,95,71,583,1
+567,567,14,320,177,584,1
+568,568,6,310,66,585,1
+569,569,19,1073,166,586,1
+570,570,7,125,66,587,1
+571,571,16,811,179,588,1
+572,572,4,58,60,589,1
+573,573,5,75,165,590,1
+574,574,4,58,58,591,1
+575,575,7,180,137,592,1
+576,576,15,440,221,593,1
+577,577,3,10,58,594,1
+578,578,6,80,130,595,1
+579,579,10,201,221,596,1
+580,580,5,55,61,597,1
+581,581,13,242,166,598,1
+582,582,4,57,61,599,1
+583,583,11,410,138,600,1
+584,584,13,575,241,601,1
+585,585,6,195,67,602,1
+586,586,19,925,166,603,1
+587,587,4,50,150,604,1
+588,588,5,59,63,605,1
+589,589,10,330,173,606,1
+590,590,2,10,59,607,1
+591,591,6,105,162,608,1
+592,592,12,330,67,609,1
+593,593,22,1350,168,610,1
+594,594,12,316,165,611,1
+595,595,1,6,64,612,1
+596,596,8,143,165,613,1
+597,597,6,188,61,614,1
+598,598,10,1100,171,615,1
+599,599,3,210,60,616,1
+600,600,6,510,154,617,1
+601,601,6,810,234,618,1
+602,602,2,3,55,619,1
+603,603,12,220,142,620,1
+604,604,21,805,232,621,1
+605,605,5,90,67,622,1
+606,606,10,345,170,623,1
+607,607,3,31,55,624,1
+608,608,6,130,130,625,1
+609,609,10,343,234,626,1
+610,610,6,180,64,627,1
+611,611,10,360,144,628,1
+612,612,18,1055,243,629,1
+613,613,5,85,61,630,1
+614,614,26,2600,170,631,1
+615,615,11,1480,170,632,1
+616,616,4,77,61,633,1
+617,617,8,253,173,634,1
+618,618,7,110,165,635,1
+619,619,9,200,70,636,1
+620,620,14,355,179,637,1
+621,621,16,1390,170,638,1
+622,622,10,920,61,639,1
+623,623,28,3300,169,640,1
+624,624,5,102,68,641,1
+625,625,16,700,172,642,1
+626,626,16,946,172,643,1
+627,627,5,105,70,644,1
+628,628,15,410,179,645,1
+629,629,5,90,74,646,1
+630,630,12,395,179,647,1
+631,631,14,580,169,648,1
+632,632,3,330,169,649,1
+633,633,8,173,60,650,1
+634,634,14,500,147,651,1
+635,635,18,1600,270,652,1
+636,636,11,288,72,653,1
+637,637,16,460,248,654,1
+638,638,21,2500,261,655,1
+639,639,19,2600,261,656,1
+640,640,20,2000,261,657,1
+641,641,15,630,261,658,1
+642,642,15,610,261,659,1
+643,643,32,3300,306,660,1
+644,644,29,3450,306,661,1
+645,645,15,680,270,662,1
+646,646,30,3250,297,663,1
+647,647,14,485,261,664,1
+648,648,6,65,270,665,1
+649,649,15,825,270,667,1
+650,386,17,608,215,419,0
+651,386,17,608,215,420,0
+652,386,17,608,215,421,0
+653,413,5,65,159,447,0
+654,413,5,65,159,448,0
+655,492,4,52,64,507,0
+656,487,69,6500,220,501,0
+657,479,3,3,132,488,0
+658,479,3,3,132,489,0
+659,479,3,3,132,490,0
+660,479,3,3,132,491,0
+661,479,3,3,132,492,0
+662,351,3,8,147,379,0
+663,351,3,8,147,380,0
+664,351,3,8,147,381,0
+665,550,10,180,161,566,0
+666,555,13,929,189,572,0
+667,648,6,65,270,666,0
diff --git a/pokedex/data/csv/pokemon_forms.csv b/pokedex/data/csv/pokemon_forms.csv
index d812e37..1e56970 100644
--- a/pokedex/data/csv/pokemon_forms.csv
+++ b/pokedex/data/csv/pokemon_forms.csv
@@ -675,16 +675,16 @@ id,form_identifier,pokemon_id,introduced_in_version_group_id,is_default,is_battl
 674,z,201,3,0,0,230
 675,exclamation,201,5,0,0,230
 676,question,201,5,0,0,230
-677,sunny,662,5,0,1,379
-678,rainy,663,5,0,1,380
-679,snowy,664,5,0,1,381
-680,attack,650,7,0,0,419
-681,defense,651,7,0,0,420
-682,speed,652,6,0,0,421
+677,sunny,662,5,1,1,379
+678,rainy,663,5,1,1,380
+679,snowy,664,5,1,1,381
+680,attack,650,7,1,0,419
+681,defense,651,7,1,0,420
+682,speed,652,6,1,0,421
 683,sandy,412,8,0,0,445
 684,trash,412,8,0,0,445
-685,sandy,653,8,0,0,447
-686,trash,654,8,0,0,448
+685,sandy,653,8,1,0,447
+686,trash,654,8,1,0,448
 687,sunshine,421,8,0,1,456
 688,east,422,8,0,0,457
 689,east,423,8,0,0,458
@@ -705,23 +705,23 @@ id,form_identifier,pokemon_id,introduced_in_version_group_id,is_default,is_battl
 704,steel,493,8,0,0,508
 705,water,493,8,0,0,508
 706,unknown,493,8,0,0,508
-707,heat,657,9,0,0,488
-708,wash,658,9,0,0,489
-709,frost,659,9,0,0,490
-710,fan,660,9,0,0,491
-711,mow,661,9,0,0,492
-712,origin,656,9,0,0,501
-713,sky,655,9,0,0,507
+707,heat,657,9,1,0,488
+708,wash,658,9,1,0,489
+709,frost,659,9,1,0,490
+710,fan,660,9,1,0,491
+711,mow,661,9,1,0,492
+712,origin,656,9,1,0,501
+713,sky,655,9,1,0,507
 714,spiky-eared,172,10,0,0,25
-715,blue-striped,665,11,0,0,566
-716,zen,666,11,0,0,572
+715,blue-striped,665,11,1,0,566
+716,zen,666,11,1,0,572
 717,summer,585,11,0,0,602
 718,autumn,585,11,0,0,602
 719,winter,585,11,0,0,602
 720,summer,586,11,0,0,603
 721,autumn,586,11,0,0,603
 722,winter,586,11,0,0,603
-723,pirouette,667,11,0,0,666
+723,pirouette,667,11,1,0,666
 724,douse,649,11,0,0,667
 725,shock,649,11,0,0,667
 726,burn,649,11,0,0,667
diff --git a/pokedex/db/tables.py b/pokedex/db/tables.py
index 4f35482..7d28164 100644
--- a/pokedex/db/tables.py
+++ b/pokedex/db/tables.py
@@ -1072,17 +1072,13 @@ class Pokemon(TableBase):
         info=dict(description=u"The base EXP gained when defeating this Pokémon"))  # XXX: Is this correct?
     order = Column(Integer, nullable=False, index=True,
         info=dict(description=u"Order for sorting. Almost national order, except families are grouped together."))
+    is_default = Column(Boolean, nullable=False, index=True,
+        info=dict(description=u'Set for exactly one pokemon used as the default for each species.'))
 
     @property
     def name(self):
-        u"""Returns True iff the Pokémon is the base form for its species,
-        e.g. Land Shaymin.
-        """
-
         return self.default_form.pokemon_name or self.species.name
 
-    ### Not forms!
-
     def stat(self, stat_name):
         u"""Returns a PokemonStat record for the given stat name (or Stat row
         object).  Uses the normal has-many machinery, so all the stats are
@@ -1218,13 +1214,13 @@ class PokemonForm(TableBase):
     id = Column(Integer, primary_key=True, nullable=False,
         info=dict(description=u'A unique ID for this form.'))
     form_identifier = Column(Unicode(16), nullable=True,
-        info=dict(description=u"An identifier of the form, uniue among a species", format='identifier'))
+        info=dict(description=u"An identifier of the form, uniue among a species. May be None for the default form of the species.", format='identifier'))
     pokemon_id = Column(Integer, ForeignKey('pokemon.id'), nullable=False, autoincrement=False,
         info=dict(description=u'The ID of the base Pokémon for this form.'))
     introduced_in_version_group_id = Column(Integer, ForeignKey('version_groups.id'), autoincrement=False,
         info=dict(description=u'The ID of the version group in which this form first appeared.'))
     is_default = Column(Boolean, nullable=False,
-        info=dict(description=u'Set for exactly one form used as the default for each species.'))
+        info=dict(description=u'Set for exactly one form used as the default for each pokemon (not necessarily species).'))
     is_battle_only = Column(Boolean, nullable=False,
         info=dict(description=u'Set iff the form can only appear in battle.'))
     order = Column(Integer, nullable=False, autoincrement=False,
@@ -1917,7 +1913,7 @@ Pokemon.default_form = relationship(PokemonForm,
     primaryjoin=and_(
         Pokemon.id==PokemonForm.pokemon_id,
         PokemonForm.is_default==True),
-    uselist=False)
+    uselist=False, lazy='joined')
 Pokemon.items = relationship(PokemonItem,
     backref='pokemon')
 Pokemon.stats = relationship(PokemonStat,
@@ -1957,7 +1953,7 @@ PokemonEvolution.trade_species = relationship(PokemonSpecies,
 
 PokemonForm.pokemon = relationship(Pokemon,
     primaryjoin=PokemonForm.pokemon_id==Pokemon.id,
-    innerjoin=True)
+    innerjoin=True, lazy='joined')
 PokemonForm.species = association_proxy('pokemon', 'species')
 PokemonForm.version_group = relationship(VersionGroup,
     innerjoin=True)
@@ -1995,7 +1991,7 @@ PokemonMove.method = relationship(PokemonMoveMethod,
 PokemonStat.stat = relationship(Stat,
     innerjoin=True, lazy='joined')
 
-PokemonSpecies.parent_pokemon = relationship(PokemonSpecies,
+PokemonSpecies.parent_species = relationship(PokemonSpecies,
     primaryjoin=PokemonSpecies.evolves_from_species_id==PokemonSpecies.id,
     remote_side=[PokemonSpecies.id],
     backref='child_species')
@@ -2008,13 +2004,11 @@ PokemonSpecies.flavor_text = relationship(PokemonSpeciesFlavorText,
 PokemonSpecies.growth_rate = relationship(GrowthRate,
     innerjoin=True,
     backref='evolution_chains')
-PokemonSpecies.pokemon_habitat = relationship(PokemonHabitat,
+PokemonSpecies.habitat = relationship(PokemonHabitat,
     backref='species')
-PokemonSpecies.habitat = association_proxy('pokemon_habitat', 'name')
-PokemonSpecies.pokemon_color = relationship(PokemonColor,
+PokemonSpecies.color = relationship(PokemonColor,
     innerjoin=True,
     backref='species')
-PokemonSpecies.color = association_proxy('pokemon_color', 'name')
 PokemonSpecies.egg_groups = relationship(EggGroup,
     secondary=PokemonEggGroup.__table__,
     innerjoin=True,
@@ -2024,10 +2018,22 @@ PokemonSpecies.forms = relationship(PokemonForm,
     secondary=Pokemon.__table__,
     primaryjoin=PokemonSpecies.id==Pokemon.species_id,
     secondaryjoin=Pokemon.id==PokemonForm.pokemon_id,
-    order_by=Pokemon.order.asc())
+    order_by=(PokemonForm.order.asc(), PokemonForm.form_identifier.asc()))
+PokemonSpecies.default_form = relationship(PokemonForm,
+    secondary=Pokemon.__table__,
+    primaryjoin=and_(PokemonSpecies.id==Pokemon.species_id,
+            Pokemon.is_default==True),
+    secondaryjoin=and_(Pokemon.id==PokemonForm.pokemon_id,
+            PokemonForm.is_default==True),
+    uselist=False)
+PokemonSpecies.default_pokemon = relationship(Pokemon,
+    primaryjoin=and_(
+        PokemonSpecies.id==Pokemon.species_id,
+        Pokemon.is_default==True),
+    uselist=False, lazy='joined')
 PokemonSpecies.evolution_chain = relationship(EvolutionChain,
     innerjoin=True,
-    backref=backref('species', order_by=Pokemon.order.asc()))
+    backref=backref('species', order_by=PokemonSpecies.id.asc()))
 PokemonSpecies.dex_numbers = relationship(PokemonDexNumber,
     innerjoin=True,
     order_by=PokemonDexNumber.pokedex_id.asc(),

From d0c01810bebd9e5b4dccb22ca8ee4795a10fecfc Mon Sep 17 00:00:00 2001
From: Petr Viktorin <encukou@gmail.com>
Date: Sat, 30 Apr 2011 02:10:57 +0300
Subject: [PATCH 07/16] Pokemon species split: Lookup & Markdown

---
 pokedex/db/markdown.py |  2 +-
 pokedex/lookup.py      | 38 +++++++++++++++++---------------------
 2 files changed, 18 insertions(+), 22 deletions(-)

diff --git a/pokedex/db/markdown.py b/pokedex/db/markdown.py
index 9653a53..328b131 100644
--- a/pokedex/db/markdown.py
+++ b/pokedex/db/markdown.py
@@ -154,7 +154,7 @@ class PokedexLinkPattern(markdown.inlinepatterns.Pattern):
                     item=tables.Item,
                     location=tables.Location,
                     move=tables.Move,
-                    pokemon=tables.Pokemon,
+                    pokemon=tables.PokemonSpecies,
                     type=tables.Type,
                 )[category]
         except KeyError:
diff --git a/pokedex/lookup.py b/pokedex/lookup.py
index 768a674..33f8b2a 100644
--- a/pokedex/lookup.py
+++ b/pokedex/lookup.py
@@ -103,7 +103,7 @@ class PokedexLookup(object):
             tables.Location,
             tables.Move,
             tables.Nature,
-            tables.Pokemon,
+            tables.PokemonSpecies,
             tables.PokemonForm,
             tables.Type,
         )
@@ -193,7 +193,7 @@ class PokedexLookup(object):
         # Index every name in all our tables of interest
         speller_entries = set()
         for cls in self.indexed_tables.values():
-            q = self.session.query(cls)
+            q = self.session.query(cls).order_by(cls.id)
 
             for row in q.yield_per(5):
                 row_key = dict(table=unicode(cls.__tablename__),
@@ -211,21 +211,17 @@ class PokedexLookup(object):
                     speller_entries.add(normalized_name)
 
 
-                # Add the basic English name to the index
-                if cls == tables.Pokemon:
-                    # Don't re-add alternate forms of the same Pokémon; they'll
-                    # be added as Pokémon forms instead
-                    if not row.is_base_form:
-                        continue
-                elif cls == tables.PokemonForm:
-                    if row.name:
-                        add(row.pokemon_name, None, u'en', u'us')
-                    continue
+                if cls == tables.PokemonForm:
+                    name_map = 'pokemon_name_map'
+                else:
+                    name_map = 'name_map'
 
-                # Some things also have other languages' names
-                # XXX other language form names..?
-                seen = set()
-                for language, name in getattr(row, 'name_map', {}).items():
+                seen = set([None])
+                for language, name in sorted(getattr(row, name_map, {}).items(),
+                        # Sort English first for now
+                        key=lambda (l, n): (l.identifier != 'en', not l.official)):
+                    if not name:
+                        continue
                     if name in seen:
                         # Don't add the name again as a different
                         # language; no point and it makes spell results
@@ -301,6 +297,11 @@ class PokedexLookup(object):
                 prefix = prefix.strip()
                 if prefix:
                     user_valid_types.append(prefix)
+                if prefix == 'pokemon':
+                    # When the user says 'pokemon', they really meant both
+                    # species & form.
+                    user_valid_types.append('pokemon_species')
+                    user_valid_types.append('pokemon_form')
 
         # Merge the valid types together.  Only types that appear in BOTH lists
         # may be used.
@@ -413,9 +414,6 @@ class PokedexLookup(object):
         This function currently ONLY does fuzzy matching if there are no exact
         matches.
 
-        Formes are not returned unless requested; "Shaymin" will return only
-        grass Shaymin.
-
         Extraneous whitespace is removed with extreme prejudice.
 
         Recognizes:
@@ -430,7 +428,6 @@ class PokedexLookup(object):
         - Language restrictions.  "@fr:charge" will only return Tackle, which
           is called "Charge" in French.  These can be combined with type
           restrictions, e.g., "@fr,move:charge".
-        - Alternate formes can be specified merely like "wash rotom".
 
         `input`
             Name of the thing to look for.
@@ -448,7 +445,6 @@ class PokedexLookup(object):
 
         name = self.normalize_name(input)
         exact = True
-        form = None
 
         # Pop off any type prefix and merge with valid_types
         name, merged_valid_types, type_term = \

From bc7e9128e8df241fffc174beda376f443b219fc3 Mon Sep 17 00:00:00 2001
From: Petr Viktorin <encukou@gmail.com>
Date: Sat, 30 Apr 2011 02:14:34 +0300
Subject: [PATCH 08/16] Pokemon species split: Tests

---
 pokedex/tests/test_lookup.py  | 32 ++++++++++++++++----------------
 pokedex/tests/test_schema.py  |  5 +++--
 pokedex/tests/test_strings.py | 12 ++++++------
 3 files changed, 25 insertions(+), 24 deletions(-)

diff --git a/pokedex/tests/test_lookup.py b/pokedex/tests/test_lookup.py
index 700610f..3da916d 100644
--- a/pokedex/tests/test_lookup.py
+++ b/pokedex/tests/test_lookup.py
@@ -14,29 +14,29 @@ def setup():
 def test_exact_lookup():
     tests = [
         # Simple lookups
-        (u'Eevee',          'pokemon',      133),
+        (u'Eevee',          'pokemon_species',133),
         (u'Scratch',        'moves',        10),
         (u'Master Ball',    'items',        1),
         (u'normal',         'types',        1),
         (u'Run Away',       'abilities',    50),
 
         # Funny characters
-        (u'Mr. Mime',       'pokemon',      122),
-        (u"Farfetch'd",     'pokemon',      83),
-        (u'Poké Ball',      'items',        4),
+        (u'Mr. Mime',       'pokemon_species', 122),
+        (u"Farfetch'd",     'pokemon_species', 83),
+        (u'Poké Ball',      'items',           4),
 
         # Forms
-        (u'Rotom',          'pokemon',      479),
-        (u'Wash Rotom',     'pokemon_forms',10059),
-        (u'East Shellos',   'pokemon_forms',10039),
+        (u'Rotom',          'pokemon_species', 479),
+        (u'Wash Rotom',     'pokemon_forms',   708),
+        (u'East Shellos',   'pokemon_forms',   688),
 
         # Other languages
-        (u'イーブイ',       'pokemon',      133),
-        (u'Iibui',          'pokemon',      133),
-        (u'Eievui',         'pokemon',      133),
-        (u'이브이',         'pokemon',      133),
-        (u'伊布',           'pokemon',      133),
-        (u'Evoli',          'pokemon',      133),
+        (u'イーブイ',       'pokemon_species', 133),
+        (u'Iibui',          'pokemon_species', 133),
+        (u'Eievui',         'pokemon_species', 133),
+        (u'이브이',         'pokemon_species', 133),
+        (u'伊布',           'pokemon_species', 133),
+        (u'Evoli',          'pokemon_species', 133),
     ]
 
     for input, table, id in tests:
@@ -63,13 +63,13 @@ def test_multi_lookup():
 
 def test_type_lookup():
     results = lookup.lookup(u'pokemon:1')
-    assert_equal(results[0].object.__tablename__, 'pokemon',
+    assert_equal(results[0].object.__tablename__, 'pokemon_species',
                                                 u'Type restriction works correctly')
     assert_equal(len(results), 1,               u'Only one id result when type is specified')
     assert_equal(results[0].object.name, u'Bulbasaur',
                                                 u'Type + id returns the right result')
 
-    results = lookup.lookup(u'1', valid_types=['pokemon'])
+    results = lookup.lookup(u'1', valid_types=['pokemon_species'])
     assert_equal(results[0].object.name, u'Bulbasaur',
                                                 u'valid_types works as well as type: prefix')
 
@@ -141,7 +141,7 @@ def test_random_lookup():
         results = lookup.lookup(u'random')
         assert_equal(len(results), 1,           u'Random returns one result')
 
-    for table_name in [u'pokemon', u'moves', u'items', u'abilities', u'types']:
+    for table_name in [u'pokemon_species', u'moves', u'items', u'abilities', u'types']:
         results = lookup.lookup(u'random', valid_types=[table_name])
         assert_equal(len(results), 1,           u'Constrained random returns one result')
         assert_equal(results[0].object.__tablename__, table_name,
diff --git a/pokedex/tests/test_schema.py b/pokedex/tests/test_schema.py
index c09564a..c73182f 100644
--- a/pokedex/tests/test_schema.py
+++ b/pokedex/tests/test_schema.py
@@ -202,5 +202,6 @@ def test_identifiers_with_names():
     """Test that named tables have identifiers
     """
     for table in sorted(tables.mapped_classes, key=lambda t: t.__name__):
-        if hasattr(table, 'name'):
-            assert hasattr(table, 'identifier'), table
+        for translation_class in table.translation_classes:
+            if hasattr(translation_class, 'name'):
+                assert hasattr(table, 'identifier'), table
diff --git a/pokedex/tests/test_strings.py b/pokedex/tests/test_strings.py
index 0b55da3..83dc94b 100644
--- a/pokedex/tests/test_strings.py
+++ b/pokedex/tests/test_strings.py
@@ -13,13 +13,13 @@ class TestStrings(object):
         self.connection.rollback()
 
     def test_filter(self):
-        q = self.connection.query(tables.Pokemon).filter(
-                tables.Pokemon.name == u"Marowak")
+        q = self.connection.query(tables.PokemonSpecies).filter(
+                tables.PokemonSpecies.name == u"Marowak")
         assert q.one().identifier == 'marowak'
 
     def test_languages(self):
-        q = self.connection.query(tables.Pokemon).filter(
-                tables.Pokemon.name == u"Mightyena")
+        q = self.connection.query(tables.PokemonSpecies).filter(
+                tables.PokemonSpecies.name == u"Mightyena")
         pkmn = q.one()
         for lang, name in (
                 ('en', u'Mightyena'),
@@ -33,8 +33,8 @@ class TestStrings(object):
 
     @raises(KeyError)
     def test_bad_lang(self):
-        q = self.connection.query(tables.Pokemon).filter(
-                tables.Pokemon.name == u"Mightyena")
+        q = self.connection.query(tables.PokemonSpecies).filter(
+                tables.PokemonSpecies.name == u"Mightyena")
         pkmn = q.one()
         pkmn.names["identifier of a language that doesn't exist"]
 

From dd0d22522874960742bf679f264eff57fd288a1d Mon Sep 17 00:00:00 2001
From: Petr Viktorin <encukou@gmail.com>
Date: Sat, 30 Apr 2011 02:42:42 +0300
Subject: [PATCH 09/16] Pokemon species split: utilities.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Remove 'simple' altogether, as pokémon are now sane by default!
---
 pokedex/db/util.py         | 54 +++++++++----------------------
 pokedex/tests/test_util.py | 45 ++++----------------------
 pokedex/util/simple.py     | 66 --------------------------------------
 3 files changed, 21 insertions(+), 144 deletions(-)
 delete mode 100644 pokedex/util/simple.py

diff --git a/pokedex/db/util.py b/pokedex/db/util.py
index f4f151a..93d9127 100644
--- a/pokedex/db/util.py
+++ b/pokedex/db/util.py
@@ -12,8 +12,7 @@ from pokedex.db import tables
 
 ### Getter
 
-def get(session, table, identifier=None, name=None, id=None,
-        form_identifier=None, form_name=None, language=None, is_pokemon=None):
+def get(session, table, identifier=None, name=None, id=None, language=None):
     """Get one object from the database.
 
     session: The session to use (from pokedex.db.connect())
@@ -22,26 +21,16 @@ def get(session, table, identifier=None, name=None, id=None,
     identifier: Identifier of the object
     name: The name of the object
     id: The ID number of the object
-    form_identifier: For pokemon, identifier of the form
-    form_name: For pokemon, name of the form
 
     language: A Language to use for name and form_name
-    is_pokemon: If true, specifies that the table should be treated as a
-        pokemon table (handling forms specially). If None and table is the
-        (unaliased) Pokemon, it is set to True. Otherwise, the pokemon forms
-        aren't handled.
 
     All conditions must match, so it's not a good idea to specify more than one
     of identifier/name/id at once.
 
     If zero or more than one objects matching the criteria are found, the
     appropriate SQLAlchemy exception is raised.
-    Exception: for pokemon, selects the form base unless form_* is given.
     """
 
-    if is_pokemon is None:
-        is_pokemon = (table is tables.Pokemon)
-
     query = session.query(table)
 
     if identifier is not None:
@@ -53,52 +42,34 @@ def get(session, table, identifier=None, name=None, id=None,
     if id is not None:
         query = query.filter_by(id=id)
 
-    if form_identifier is not None or form_name is not None:
-        if is_pokemon:
-            query = query.join(table.unique_form)
-            if form_identifier is not None:
-                query = query.filter(tables.PokemonForm.identifier ==
-                        form_identifier)
-            if form_name is not None:
-                query = filter_name(query, table, form_name, language)
-        else:
-            raise ValueError(
-                "form_identifier and form_name only make sense for pokemon")
-    elif is_pokemon:
-        query = filter_base_forms(query)
-
     return query.one()
 
 ### Helpers
 
-def filter_name(query, table, name, language):
+def filter_name(query, table, name, language, name_attribute='name'):
     """Filter a query by name, return the resulting query
 
     query: The query to filter
     table: The table of named objects
     name: The name to look for. May be a tuple of alternatives.
     language: The language for "name", or None for the session default
+    name_attribute: the attribute to use; defaults to 'name'
     """
     if language is None:
-        query = query.filter(table.name == name)
+        query = query.filter(getattr(table, name_attribute) == name)
     else:
         names_table = table.names_table
+        name_column = getattr(names_table, name_attribute)
         query = query.join(names_table)
         query = query.filter(names_table.foreign_id == table.id)
         query = query.filter(names_table.local_language_id == language.id)
         if isinstance(name, tuple):
-            query = query.filter(names_table.name in name)
+            query = query.filter(name_column in name)
         else:
-            query = query.filter(names_table.name == name)
+            query = query.filter(name_column == name)
     return query
 
-def filter_base_forms(query):
-    """Filter only base forms of pokemon, and return the resulting query
-    """
-    query = query.filter(tables.Pokemon.forms.any())
-    return query
-
-def order_by_name(query, table, language=None, *extra_languages):
+def order_by_name(query, table, language=None, *extra_languages, **kwargs):
     """Order a query by name.
 
     query: The query to order
@@ -108,12 +79,17 @@ def order_by_name(query, table, language=None, *extra_languages):
     extra_languages: Extra languages to order by, should the translations for
         `language` be incomplete (or ambiguous).
 
+    name_attribute (keyword argument): the attribute to use; defaults to 'name'
+
     Uses the identifier as a fallback ordering.
     """
+    name_attribute = kwargs.pop('name', 'name')
+    if kwargs:
+        raise ValueError('Unexpected keyword arguments: %s' % kwargs.keys())
     order_columns = []
     if language is None:
         query = query.outerjoin(table.names_local)
-        order_columns.append(func.lower(table.names_table.name))
+        order_columns.append(func.lower(getattr(table.names_table, name_attribute)))
     else:
         extra_languages = (language, ) + extra_languages
     for language in extra_languages:
@@ -121,7 +97,7 @@ def order_by_name(query, table, language=None, *extra_languages):
         query = query.outerjoin(names_table)
         query = query.filter(names_table.foreign_id == table.id)
         query = query.filter(names_table.local_language_id == language.id)
-        order_columns.append(func.lower(names_table.name))
+        order_columns.append(func.lower(getattr(names_table, name_attribute)))
     order_columns.append(table.identifier)
     query = query.order_by(coalesce(*order_columns))
     return query
diff --git a/pokedex/tests/test_util.py b/pokedex/tests/test_util.py
index a528d85..18287d4 100644
--- a/pokedex/tests/test_util.py
+++ b/pokedex/tests/test_util.py
@@ -3,7 +3,6 @@ from nose.tools import *
 import unittest
 
 from pokedex.db import connect, tables, util
-from pokedex.util import simple
 
 session = connect()
 
@@ -19,32 +18,21 @@ def test_get_english_by_identifier():
     language = util.get(session, tables.Language, 'en')
     assert language.name == 'English'
 
-def test_get_pokemon_baseform_identifier():
+def test_get_pokemon_identifier():
     for identifier in 'burmy shaymin unown cresselia'.split():
-        poke = util.get(session, tables.Pokemon, identifier=identifier)
+        poke = util.get(session, tables.PokemonSpecies, identifier=identifier)
         assert poke.identifier == identifier
-        assert poke.is_base_form
 
-def test_get_pokemon_baseform_name():
+def test_get_pokemon_name():
     for name in 'Burmy Shaymin Unown Cresselia'.split():
-        poke = util.get(session, tables.Pokemon, name=name)
+        poke = util.get(session, tables.PokemonSpecies, name=name)
         assert poke.name == name
-        assert poke.is_base_form
 
-def test_get_pokemon_baseform_name_explicit_language():
+def test_get_pokemon_name_explicit_language():
     french = util.get(session, tables.Language, 'fr')
     for name in 'Cheniti Shaymin Zarbi Cresselia'.split():
-        poke = util.get(session, tables.Pokemon, name=name, language=french)
+        poke = util.get(session, tables.PokemonSpecies, name=name, language=french)
         assert poke.name_map[french] == name, poke.name_map[french]
-        assert poke.is_base_form
-
-def test_get_pokemon_other_form_identifier():
-    for ii in 'wormadam/trash shaymin/sky shaymin/land'.split():
-        pokemon_identifier, form_identifier = ii.split('/')
-        poke = util.get(session, tables.Pokemon, identifier=pokemon_identifier, form_identifier=form_identifier)
-        assert poke.identifier == pokemon_identifier
-        if poke.form.unique_pokemon_id:
-            assert poke.form.identifier == form_identifier
 
 def test_types_french_order():
     french = util.get(session, tables.Language, 'fr')
@@ -52,24 +40,3 @@ def test_types_french_order():
     types = list(util.order_by_name(types, tables.Type, language=french))
     assert types[0].name_map[french] == 'Acier', types[0].name_map[french]
     assert types[-1].name_map[french] == 'Vol', types[-1].name_map[french]
-
-def test_simple_pokemon():
-    pokemon = simple.pokemon(session)
-    assert pokemon[0].identifier == 'bulbasaur'
-    assert pokemon[-1].identifier == 'genesect'
-
-def test_simple_types():
-    types = simple.types(session)
-    assert types[0].identifier == 'bug'
-    assert types[-1].identifier == 'water'
-
-def test_simple_moves():
-    moves = simple.moves(session)
-    assert moves[0].identifier == 'absorb'
-    assert moves[-1].identifier == 'zen-headbutt'
-
-def test_simple_items():
-    items = simple.items(session)
-    assert items[0].identifier == 'ability-urge'
-    assert items[-1].identifier == 'zoom-lens'
-
diff --git a/pokedex/util/simple.py b/pokedex/util/simple.py
deleted file mode 100644
index d801f2b..0000000
--- a/pokedex/util/simple.py
+++ /dev/null
@@ -1,66 +0,0 @@
-"""Simple lists of things for simple scripts
-
-If you want to get a pokemon list, and you don't want it to include three
-Wormadams and a whole bunch of Rotoms because of how the database is
-structured, this module is for you.
-
-The returned queries basically contain what a pokedex would show you.
-You should make no other assumptions about them.
-
-If you need to make assumptions, feel free to use these functions as examples
-of what to watch out for.
-"""
-
-from pokedex.db import tables
-from pokedex.db.util import filter_base_forms, order_by_name
-
-def pokemon(session):
-    """Get a "sane" list of pokemon
-
-    WARNING: The result of this function is not very well defined.
-    If you want something specific, build that specific query yourself.
-
-    Currently, all base forms are returned, in evolution-preserving order
-    """
-    query = session.query(tables.Pokemon)
-    query = query.order_by(tables.Pokemon.order)
-    query = filter_base_forms(query)
-    return query
-
-def moves(session):
-    """Get a "sane" list of moves
-
-    WARNING: The result of this function is not very well defined.
-    If you want something specific, build that specific query yourself.
-
-    Currently, moves from mainline games are returned, sored by name
-    """
-    query = session.query(tables.Move)
-    query = order_by_name(query, tables.Move)
-    query = query.filter(tables.Move.id < 10000)
-    return query
-
-def types(session):
-    """Get a "sane" list of types
-
-    WARNING: The result of this function is not very well defined.
-    If you want something specific, build that specific query yourself.
-
-    Currently, generation V types are returned, sored by name
-    """
-    query = session.query(tables.Type)
-    query = order_by_name(query, tables.Type)
-    query = query.filter(tables.Type.id < 10000)
-    return query
-
-def items(session):
-    """Get a "sane" list of items
-
-    WARNING: The result of this function is not very well defined.
-    If you want something specific, build that specific query yourself.
-
-    Currently, items are sored by name
-    """
-    query = session.query(tables.Item)
-    query = order_by_name(query, tables.Item)
-    return query

From 3034c04d59be85eb93beb8d81aac82195ebdbe25 Mon Sep 17 00:00:00 2001
From: Petr Viktorin <encukou@gmail.com>
Date: Sun, 1 May 2011 23:57:05 +0300
Subject: [PATCH 10/16] Allow missing Markdown translation rows (for species'
 form descriptions)

---
 pokedex/db/multilang.py | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/pokedex/db/multilang.py b/pokedex/db/multilang.py
index 54e53ac..8720dcb 100644
--- a/pokedex/db/multilang.py
+++ b/pokedex/db/multilang.py
@@ -141,6 +141,8 @@ def create_translation_table(_table_name, foreign_class, relation_name,
         if string_getter:
             def getset_factory(underlying_type, instance):
                 def getter(translations):
+                    if translations is None:
+                        return None
                     text = getattr(translations, column.name)
                     if text is None:
                         return text

From 11a65761e77c5f03f26e962153aad073e52316d7 Mon Sep 17 00:00:00 2001
From: Petr Viktorin <encukou@gmail.com>
Date: Mon, 2 May 2011 17:28:40 +0300
Subject: [PATCH 11/16] Oops, forgot to normalize the CSVs with a load/dump

---
 pokedex/data/csv/evolution_chains.csv |  658 +++++------
 pokedex/data/csv/pokemon.csv          | 1336 +++++++++++------------
 pokedex/data/csv/pokemon_forms.csv    | 1456 ++++++++++++-------------
 pokedex/data/csv/pokemon_species.csv  | 1300 +++++++++++-----------
 4 files changed, 2375 insertions(+), 2375 deletions(-)

diff --git a/pokedex/data/csv/evolution_chains.csv b/pokedex/data/csv/evolution_chains.csv
index eacdcc6..7119143 100644
--- a/pokedex/data/csv/evolution_chains.csv
+++ b/pokedex/data/csv/evolution_chains.csv
@@ -1,329 +1,329 @@
-id,baby_trigger_item_id
-1,
-2,
-3,
-4,
-5,
-6,
-7,
-8,
-9,
-10,
-11,
-12,
-13,
-14,
-15,
-16,
-17,
-18,
-19,
-20,
-21,
-22,
-23,
-24,
-25,
-26,
-27,
-28,
-29,
-30,
-31,
-32,
-33,
-34,
-35,
-36,
-37,
-38,
-39,
-40,
-41,
-42,
-43,
-44,
-45,
-46,
-47,
-48,
-49,
-50,
-51,296
-52,
-53,
-54,
-55,
-56,
-57,291
-58,
-59,
-60,
-61,
-62,
-63,
-64,
-65,
-66,
-67,
-68,
-69,
-70,
-71,
-72,293
-73,
-74,
-75,
-76,
-77,
-78,
-79,
-80,
-81,
-82,
-83,
-84,
-85,
-86,
-87,
-88,
-89,
-90,231
-91,292
-92,
-93,
-94,
-95,
-96,
-97,
-98,
-99,
-100,232
-101,
-102,
-103,
-104,
-105,
-106,
-107,
-108,
-109,
-110,
-111,
-112,
-113,
-114,
-115,
-116,294
-117,
-118,
-119,
-120,
-121,
-122,
-123,
-124,
-125,
-126,
-127,
-128,
-129,
-130,
-131,
-132,
-133,
-134,
-135,
-136,
-137,
-138,
-139,
-140,
-141,
-142,
-143,
-144,
-145,
-146,
-147,
-148,
-149,
-150,
-151,
-152,
-153,
-154,
-155,
-156,
-157,
-158,295
-159,
-160,
-161,
-162,
-163,
-164,
-165,
-166,
-167,
-168,
-169,
-170,
-171,
-172,
-173,
-174,
-175,
-176,
-177,
-178,
-179,
-180,
-181,
-182,
-183,
-184,297
-185,
-186,
-187,
-188,
-189,
-190,
-191,
-192,
-193,
-194,
-195,
-196,
-197,
-198,
-199,
-200,
-201,
-202,
-203,
-204,
-205,
-206,
-207,
-208,
-209,
-211,
-212,
-213,
-214,
-215,
-216,
-217,
-218,
-219,
-220,
-221,
-223,
-224,
-228,
-229,
-230,
-232,
-233,
-234,
-235,
-236,
-237,
-239,
-240,
-241,
-242,
-243,
-244,
-245,
-246,
-247,
-248,
-249,
-250,
-252,
-253,
-254,
-255,
-256,
-257,
-258,
-259,
-260,
-261,
-262,
-263,
-264,
-265,
-266,
-267,
-268,
-269,
-270,
-271,
-272,
-273,
-274,
-275,
-276,
-277,
-278,
-279,
-280,
-281,
-282,
-283,
-284,
-285,
-286,
-287,
-288,
-289,
-290,
-291,
-292,
-293,
-294,
-295,
-296,
-297,
-298,
-299,
-300,
-301,
-302,
-303,
-304,
-305,
-306,
-307,
-308,
-309,
-310,
-311,
-312,
-313,
-314,
-315,
-316,
-317,
-318,
-319,
-320,
-321,
-322,
-323,
-324,
-325,
-326,
-327,
-328,
-329,
-330,
-331,
-332,
-333,
-334,
-335,
-336,
+id,baby_trigger_item_id
+1,
+2,
+3,
+4,
+5,
+6,
+7,
+8,
+9,
+10,
+11,
+12,
+13,
+14,
+15,
+16,
+17,
+18,
+19,
+20,
+21,
+22,
+23,
+24,
+25,
+26,
+27,
+28,
+29,
+30,
+31,
+32,
+33,
+34,
+35,
+36,
+37,
+38,
+39,
+40,
+41,
+42,
+43,
+44,
+45,
+46,
+47,
+48,
+49,
+50,
+51,296
+52,
+53,
+54,
+55,
+56,
+57,291
+58,
+59,
+60,
+61,
+62,
+63,
+64,
+65,
+66,
+67,
+68,
+69,
+70,
+71,
+72,293
+73,
+74,
+75,
+76,
+77,
+78,
+79,
+80,
+81,
+82,
+83,
+84,
+85,
+86,
+87,
+88,
+89,
+90,231
+91,292
+92,
+93,
+94,
+95,
+96,
+97,
+98,
+99,
+100,232
+101,
+102,
+103,
+104,
+105,
+106,
+107,
+108,
+109,
+110,
+111,
+112,
+113,
+114,
+115,
+116,294
+117,
+118,
+119,
+120,
+121,
+122,
+123,
+124,
+125,
+126,
+127,
+128,
+129,
+130,
+131,
+132,
+133,
+134,
+135,
+136,
+137,
+138,
+139,
+140,
+141,
+142,
+143,
+144,
+145,
+146,
+147,
+148,
+149,
+150,
+151,
+152,
+153,
+154,
+155,
+156,
+157,
+158,295
+159,
+160,
+161,
+162,
+163,
+164,
+165,
+166,
+167,
+168,
+169,
+170,
+171,
+172,
+173,
+174,
+175,
+176,
+177,
+178,
+179,
+180,
+181,
+182,
+183,
+184,297
+185,
+186,
+187,
+188,
+189,
+190,
+191,
+192,
+193,
+194,
+195,
+196,
+197,
+198,
+199,
+200,
+201,
+202,
+203,
+204,
+205,
+206,
+207,
+208,
+209,
+211,
+212,
+213,
+214,
+215,
+216,
+217,
+218,
+219,
+220,
+221,
+223,
+224,
+228,
+229,
+230,
+232,
+233,
+234,
+235,
+236,
+237,
+239,
+240,
+241,
+242,
+243,
+244,
+245,
+246,
+247,
+248,
+249,
+250,
+252,
+253,
+254,
+255,
+256,
+257,
+258,
+259,
+260,
+261,
+262,
+263,
+264,
+265,
+266,
+267,
+268,
+269,
+270,
+271,
+272,
+273,
+274,
+275,
+276,
+277,
+278,
+279,
+280,
+281,
+282,
+283,
+284,
+285,
+286,
+287,
+288,
+289,
+290,
+291,
+292,
+293,
+294,
+295,
+296,
+297,
+298,
+299,
+300,
+301,
+302,
+303,
+304,
+305,
+306,
+307,
+308,
+309,
+310,
+311,
+312,
+313,
+314,
+315,
+316,
+317,
+318,
+319,
+320,
+321,
+322,
+323,
+324,
+325,
+326,
+327,
+328,
+329,
+330,
+331,
+332,
+333,
+334,
+335,
+336,
diff --git a/pokedex/data/csv/pokemon.csv b/pokedex/data/csv/pokemon.csv
index cdc7517..f553625 100644
--- a/pokedex/data/csv/pokemon.csv
+++ b/pokedex/data/csv/pokemon.csv
@@ -1,668 +1,668 @@
-id,species_id,height,weight,base_experience,order,is_default
-1,1,7,69,64,1,1
-2,2,10,130,141,2,1
-3,3,20,1000,208,3,1
-4,4,6,85,65,4,1
-5,5,11,190,142,5,1
-6,6,17,905,209,6,1
-7,7,5,90,66,7,1
-8,8,10,225,143,8,1
-9,9,16,855,210,9,1
-10,10,3,29,53,10,1
-11,11,7,99,72,11,1
-12,12,11,320,160,12,1
-13,13,3,32,52,13,1
-14,14,6,100,71,14,1
-15,15,10,295,159,15,1
-16,16,3,18,55,16,1
-17,17,11,300,113,17,1
-18,18,15,395,172,18,1
-19,19,3,35,57,19,1
-20,20,7,185,116,20,1
-21,21,3,20,58,21,1
-22,22,12,380,162,22,1
-23,23,20,69,62,23,1
-24,24,35,650,147,24,1
-25,25,4,60,82,26,1
-26,26,8,300,122,27,1
-27,27,6,120,93,28,1
-28,28,10,295,163,29,1
-29,29,4,70,59,30,1
-30,30,8,200,117,31,1
-31,31,13,600,194,32,1
-32,32,5,90,60,33,1
-33,33,9,195,118,34,1
-34,34,14,620,195,35,1
-35,35,6,75,68,37,1
-36,36,13,400,129,38,1
-37,37,6,99,63,39,1
-38,38,11,199,178,40,1
-39,39,5,55,76,42,1
-40,40,10,120,109,43,1
-41,41,8,75,54,44,1
-42,42,16,550,171,45,1
-43,43,5,54,78,47,1
-44,44,8,86,132,48,1
-45,45,12,186,184,49,1
-46,46,3,54,70,51,1
-47,47,10,295,128,52,1
-48,48,10,300,75,53,1
-49,49,15,125,138,54,1
-50,50,2,8,81,55,1
-51,51,7,333,153,56,1
-52,52,4,42,69,57,1
-53,53,10,320,148,58,1
-54,54,8,196,80,59,1
-55,55,17,766,174,60,1
-56,56,5,280,74,61,1
-57,57,10,320,149,62,1
-58,58,7,190,91,63,1
-59,59,19,1550,213,64,1
-60,60,6,124,77,65,1
-61,61,10,200,131,66,1
-62,62,13,540,185,67,1
-63,63,9,195,75,69,1
-64,64,13,565,145,70,1
-65,65,15,480,186,71,1
-66,66,8,195,75,72,1
-67,67,15,705,146,73,1
-68,68,16,1300,193,74,1
-69,69,7,40,84,75,1
-70,70,10,64,151,76,1
-71,71,17,155,191,77,1
-72,72,9,455,105,78,1
-73,73,16,550,205,79,1
-74,74,4,200,73,80,1
-75,75,10,1050,134,81,1
-76,76,14,3000,177,82,1
-77,77,10,300,152,83,1
-78,78,17,950,192,84,1
-79,79,12,360,99,85,1
-80,80,16,785,164,86,1
-81,81,3,60,89,88,1
-82,82,10,600,161,89,1
-83,83,8,150,94,91,1
-84,84,14,392,96,92,1
-85,85,18,852,158,93,1
-86,86,11,900,100,94,1
-87,87,17,1200,176,95,1
-88,88,9,300,90,96,1
-89,89,12,300,157,97,1
-90,90,3,40,97,98,1
-91,91,15,1325,203,99,1
-92,92,13,1,95,100,1
-93,93,16,1,126,101,1
-94,94,15,405,190,102,1
-95,95,88,2100,108,103,1
-96,96,10,324,102,105,1
-97,97,16,756,165,106,1
-98,98,4,65,115,107,1
-99,99,13,600,206,108,1
-100,100,5,104,103,109,1
-101,101,12,666,150,110,1
-102,102,4,25,98,111,1
-103,103,20,1200,212,112,1
-104,104,4,65,87,113,1
-105,105,10,450,124,114,1
-106,106,15,498,139,116,1
-107,107,14,502,140,117,1
-108,108,12,655,127,119,1
-109,109,6,10,114,121,1
-110,110,12,95,173,122,1
-111,111,10,1150,135,123,1
-112,112,19,1200,204,124,1
-113,113,11,346,255,127,1
-114,114,10,350,166,129,1
-115,115,22,800,175,131,1
-116,116,4,80,83,132,1
-117,117,12,250,155,133,1
-118,118,6,150,111,135,1
-119,119,13,390,170,136,1
-120,120,8,345,106,137,1
-121,121,11,800,207,138,1
-122,122,13,545,136,140,1
-123,123,15,560,187,141,1
-124,124,14,406,137,144,1
-125,125,11,300,156,146,1
-126,126,13,445,167,149,1
-127,127,15,550,200,151,1
-128,128,14,884,211,152,1
-129,129,9,100,20,153,1
-130,130,65,2350,214,154,1
-131,131,25,2200,219,155,1
-132,132,3,40,61,156,1
-133,133,3,65,92,157,1
-134,134,10,290,196,158,1
-135,135,8,245,197,159,1
-136,136,9,250,198,160,1
-137,137,8,365,130,165,1
-138,138,4,75,99,168,1
-139,139,10,350,199,169,1
-140,140,5,115,99,170,1
-141,141,13,405,199,171,1
-142,142,18,590,202,172,1
-143,143,21,4600,154,174,1
-144,144,17,554,215,175,1
-145,145,16,526,216,176,1
-146,146,20,600,217,177,1
-147,147,18,33,67,178,1
-148,148,40,165,144,179,1
-149,149,22,2100,218,180,1
-150,150,20,1220,220,181,1
-151,151,4,40,64,182,1
-152,152,9,64,64,183,1
-153,153,12,158,141,184,1
-154,154,18,1005,208,185,1
-155,155,5,79,65,186,1
-156,156,9,190,142,187,1
-157,157,17,795,209,188,1
-158,158,6,95,66,189,1
-159,159,11,250,143,190,1
-160,160,23,888,210,191,1
-161,161,8,60,57,192,1
-162,162,18,325,116,193,1
-163,163,7,212,58,194,1
-164,164,16,408,162,195,1
-165,165,10,108,54,196,1
-166,166,14,356,134,197,1
-167,167,5,85,54,198,1
-168,168,11,335,134,199,1
-169,169,18,750,204,46,1
-170,170,5,120,90,200,1
-171,171,12,225,156,201,1
-172,172,3,20,42,25,1
-173,173,3,30,37,36,1
-174,174,3,10,39,41,1
-175,175,3,15,74,202,1
-176,176,6,32,114,203,1
-177,177,2,20,73,205,1
-178,178,15,150,171,206,1
-179,179,6,78,59,207,1
-180,180,8,133,117,208,1
-181,181,14,615,194,209,1
-182,182,4,58,184,50,1
-183,183,4,85,58,211,1
-184,184,8,285,153,212,1
-185,185,12,380,135,214,1
-186,186,11,339,185,68,1
-187,187,4,5,74,215,1
-188,188,6,10,136,216,1
-189,189,8,30,176,217,1
-190,190,8,115,94,218,1
-191,191,3,18,52,220,1
-192,192,8,85,146,221,1
-193,193,12,380,147,222,1
-194,194,4,85,52,224,1
-195,195,14,750,137,225,1
-196,196,9,265,197,161,1
-197,197,10,270,197,162,1
-198,198,5,21,107,226,1
-199,199,20,795,164,87,1
-200,200,7,10,147,228,1
-201,201,5,50,61,230,1
-202,202,13,285,177,232,1
-203,203,15,415,149,233,1
-204,204,6,72,60,234,1
-205,205,12,1258,118,235,1
-206,206,15,140,125,236,1
-207,207,11,648,108,237,1
-208,208,92,4000,196,104,1
-209,209,6,78,63,239,1
-210,210,14,487,178,240,1
-211,211,5,39,100,241,1
-212,212,18,1180,200,142,1
-213,213,6,205,80,242,1
-214,214,15,540,200,243,1
-215,215,9,280,132,244,1
-216,216,6,88,124,246,1
-217,217,18,1258,189,247,1
-218,218,7,350,78,248,1
-219,219,8,550,154,249,1
-220,220,4,65,78,250,1
-221,221,11,558,160,251,1
-222,222,6,50,113,253,1
-223,223,6,120,78,254,1
-224,224,9,285,164,255,1
-225,225,9,160,183,256,1
-226,226,21,2200,168,258,1
-227,227,17,505,168,259,1
-228,228,6,108,114,260,1
-229,229,14,350,204,261,1
-230,230,18,1520,207,134,1
-231,231,5,335,124,262,1
-232,232,11,1200,189,263,1
-233,233,6,325,180,166,1
-234,234,14,712,165,264,1
-235,235,12,580,106,265,1
-236,236,7,210,91,115,1
-237,237,14,480,138,118,1
-238,238,4,60,87,143,1
-239,239,6,235,106,145,1
-240,240,7,214,117,148,1
-241,241,12,755,200,266,1
-242,242,15,468,255,128,1
-243,243,19,1780,216,267,1
-244,244,21,1980,217,268,1
-245,245,20,1870,215,269,1
-246,246,6,720,67,270,1
-247,247,12,1520,144,271,1
-248,248,20,2020,218,272,1
-249,249,52,2160,220,273,1
-250,250,38,1990,220,274,1
-251,251,6,50,64,275,1
-252,252,5,50,65,276,1
-253,253,9,216,141,277,1
-254,254,17,522,208,278,1
-255,255,4,25,65,279,1
-256,256,9,195,142,280,1
-257,257,19,520,209,281,1
-258,258,4,76,65,282,1
-259,259,7,280,143,283,1
-260,260,15,819,210,284,1
-261,261,5,136,55,285,1
-262,262,10,370,128,286,1
-263,263,4,175,60,287,1
-264,264,5,325,128,288,1
-265,265,3,36,54,289,1
-266,266,6,100,72,290,1
-267,267,10,284,161,291,1
-268,268,7,115,72,292,1
-269,269,12,316,161,293,1
-270,270,5,26,74,294,1
-271,271,12,325,141,295,1
-272,272,15,550,181,296,1
-273,273,5,40,74,297,1
-274,274,10,280,141,298,1
-275,275,13,596,181,299,1
-276,276,3,23,59,300,1
-277,277,7,198,162,301,1
-278,278,6,95,64,302,1
-279,279,12,280,164,303,1
-280,280,4,66,70,304,1
-281,281,8,202,140,305,1
-282,282,16,484,208,306,1
-283,283,5,17,63,308,1
-284,284,8,36,128,309,1
-285,285,4,45,65,310,1
-286,286,12,392,165,311,1
-287,287,8,240,83,312,1
-288,288,14,465,126,313,1
-289,289,20,1305,210,314,1
-290,290,5,55,65,315,1
-291,291,8,120,155,316,1
-292,292,8,12,95,317,1
-293,293,6,163,68,318,1
-294,294,10,405,126,319,1
-295,295,15,840,184,320,1
-296,296,10,864,87,321,1
-297,297,23,2538,184,322,1
-298,298,2,20,33,210,1
-299,299,10,970,108,323,1
-300,300,6,110,65,325,1
-301,301,11,326,138,326,1
-302,302,5,110,98,327,1
-303,303,6,115,98,328,1
-304,304,4,600,96,329,1
-305,305,9,1200,152,330,1
-306,306,21,3600,205,331,1
-307,307,6,112,91,332,1
-308,308,13,315,153,333,1
-309,309,6,152,104,334,1
-310,310,15,402,168,335,1
-311,311,4,42,120,336,1
-312,312,4,42,120,337,1
-313,313,7,177,146,338,1
-314,314,6,177,146,339,1
-315,315,3,20,152,341,1
-316,316,4,103,75,343,1
-317,317,17,800,168,344,1
-318,318,8,208,88,345,1
-319,319,18,888,175,346,1
-320,320,20,1300,137,347,1
-321,321,145,3980,206,348,1
-322,322,7,240,88,349,1
-323,323,19,2200,175,350,1
-324,324,5,804,161,351,1
-325,325,7,306,89,352,1
-326,326,9,715,164,353,1
-327,327,11,50,85,354,1
-328,328,7,150,73,355,1
-329,329,11,153,126,356,1
-330,330,20,820,197,357,1
-331,331,4,513,97,358,1
-332,332,13,774,177,359,1
-333,333,4,12,74,360,1
-334,334,11,206,188,361,1
-335,335,13,403,165,362,1
-336,336,27,525,165,363,1
-337,337,10,1680,150,364,1
-338,338,12,1540,150,365,1
-339,339,4,19,92,366,1
-340,340,9,236,158,367,1
-341,341,6,115,111,368,1
-342,342,11,328,161,369,1
-343,343,5,215,58,370,1
-344,344,15,1080,189,371,1
-345,345,10,238,99,372,1
-346,346,15,604,199,373,1
-347,347,7,125,99,374,1
-348,348,15,682,199,375,1
-349,349,6,74,61,376,1
-350,350,62,1620,213,377,1
-351,351,3,8,145,378,1
-352,352,10,220,132,382,1
-353,353,6,23,97,383,1
-354,354,11,125,179,384,1
-355,355,8,150,97,385,1
-356,356,16,306,179,386,1
-357,357,20,1000,169,388,1
-358,358,6,10,147,390,1
-359,359,12,470,174,391,1
-360,360,6,140,44,231,1
-361,361,7,168,74,392,1
-362,362,15,2565,187,393,1
-363,363,8,395,75,395,1
-364,364,11,876,128,396,1
-365,365,14,1506,192,397,1
-366,366,4,525,142,398,1
-367,367,17,270,178,399,1
-368,368,18,226,178,400,1
-369,369,10,234,198,401,1
-370,370,6,87,110,402,1
-371,371,6,421,89,403,1
-372,372,11,1105,144,404,1
-373,373,15,1026,218,405,1
-374,374,6,952,103,406,1
-375,375,12,2025,153,407,1
-376,376,16,5500,210,408,1
-377,377,17,2300,217,409,1
-378,378,18,1750,216,410,1
-379,379,19,2050,215,411,1
-380,380,14,400,211,412,1
-381,381,20,600,211,413,1
-382,382,45,3520,218,414,1
-383,383,35,9500,218,415,1
-384,384,70,2065,220,416,1
-385,385,3,11,215,417,1
-386,386,17,608,215,418,1
-387,387,4,102,64,422,1
-388,388,11,970,141,423,1
-389,389,22,3100,208,424,1
-390,390,5,62,65,425,1
-391,391,9,220,142,426,1
-392,392,12,550,209,427,1
-393,393,4,52,66,428,1
-394,394,8,230,143,429,1
-395,395,17,845,210,430,1
-396,396,3,20,56,431,1
-397,397,6,155,113,432,1
-398,398,12,249,172,433,1
-399,399,5,200,58,434,1
-400,400,10,315,116,435,1
-401,401,3,22,54,436,1
-402,402,10,255,159,437,1
-403,403,5,95,60,438,1
-404,404,9,305,117,439,1
-405,405,14,420,194,440,1
-406,406,2,12,68,340,1
-407,407,9,145,204,342,1
-408,408,9,315,99,441,1
-409,409,16,1025,199,442,1
-410,410,5,570,99,443,1
-411,411,13,1495,199,444,1
-412,412,2,34,61,445,1
-413,413,5,65,159,446,1
-414,414,9,233,159,449,1
-415,415,3,55,63,450,1
-416,416,12,385,188,451,1
-417,417,4,39,120,452,1
-418,418,7,295,75,453,1
-419,419,11,335,178,454,1
-420,420,4,33,68,455,1
-421,421,5,93,133,456,1
-422,422,3,63,73,457,1
-423,423,9,299,176,458,1
-424,424,12,203,186,219,1
-425,425,4,12,127,459,1
-426,426,12,150,204,460,1
-427,427,4,55,84,461,1
-428,428,12,333,178,462,1
-429,429,9,44,187,229,1
-430,430,9,273,187,227,1
-431,431,5,39,71,463,1
-432,432,10,438,183,464,1
-433,433,2,6,74,389,1
-434,434,4,192,79,465,1
-435,435,10,380,209,466,1
-436,436,5,605,72,467,1
-437,437,13,1870,188,468,1
-438,438,5,150,68,213,1
-439,439,6,130,78,139,1
-440,440,6,244,255,126,1
-441,441,5,19,107,469,1
-442,442,10,1080,168,470,1
-443,443,7,205,67,471,1
-444,444,14,560,144,472,1
-445,445,19,950,218,473,1
-446,446,6,1050,94,173,1
-447,447,7,202,72,474,1
-448,448,12,540,204,475,1
-449,449,8,495,95,476,1
-450,450,20,3000,198,477,1
-451,451,8,120,114,478,1
-452,452,13,615,204,479,1
-453,453,7,230,83,480,1
-454,454,13,444,181,481,1
-455,455,14,270,164,482,1
-456,456,4,70,90,483,1
-457,457,12,240,156,484,1
-458,458,10,650,108,257,1
-459,459,10,505,131,485,1
-460,460,22,1355,214,486,1
-461,461,11,340,199,245,1
-462,462,12,1800,211,90,1
-463,463,17,1400,193,120,1
-464,464,24,2828,217,125,1
-465,465,20,1286,211,130,1
-466,466,18,1386,199,147,1
-467,467,16,680,199,150,1
-468,468,15,380,220,204,1
-469,469,19,515,198,223,1
-470,470,10,255,196,163,1
-471,471,8,259,196,164,1
-472,472,20,425,192,238,1
-473,473,25,2910,207,252,1
-474,474,9,340,185,167,1
-475,475,16,520,208,307,1
-476,476,14,3400,198,324,1
-477,477,22,1066,210,387,1
-478,478,13,266,187,394,1
-479,479,3,3,132,487,1
-480,480,3,3,210,493,1
-481,481,3,3,210,494,1
-482,482,3,3,210,495,1
-483,483,54,6830,220,496,1
-484,484,42,3360,220,497,1
-485,485,17,4300,215,498,1
-486,486,37,4200,220,499,1
-487,487,45,7500,220,500,1
-488,488,15,856,210,502,1
-489,489,4,31,165,503,1
-490,490,3,14,215,504,1
-491,491,15,505,210,505,1
-492,492,2,21,64,506,1
-493,493,32,3200,255,508,1
-494,494,4,40,270,509,1
-495,495,6,81,28,510,1
-496,496,8,160,145,511,1
-497,497,33,630,238,512,1
-498,498,5,99,28,513,1
-499,499,10,555,146,514,1
-500,500,16,1500,238,515,1
-501,501,5,59,28,516,1
-502,502,8,245,145,517,1
-503,503,15,946,238,518,1
-504,504,5,116,51,519,1
-505,505,11,270,147,520,1
-506,506,4,41,55,521,1
-507,507,9,147,130,522,1
-508,508,12,610,221,523,1
-509,509,4,101,56,524,1
-510,510,11,375,156,525,1
-511,511,6,105,63,526,1
-512,512,11,305,174,527,1
-513,513,6,110,63,528,1
-514,514,10,280,174,529,1
-515,515,6,135,63,530,1
-516,516,10,290,174,531,1
-517,517,6,233,58,532,1
-518,518,11,605,170,533,1
-519,519,3,21,53,534,1
-520,520,6,150,125,535,1
-521,521,12,290,215,536,1
-522,522,8,298,59,537,1
-523,523,16,795,174,538,1
-524,524,4,180,56,539,1
-525,525,9,1020,137,540,1
-526,526,17,2600,227,541,1
-527,527,4,21,63,542,1
-528,528,9,105,149,543,1
-529,529,3,85,66,544,1
-530,530,7,404,178,545,1
-531,531,11,310,390,546,1
-532,532,6,125,61,547,1
-533,533,12,400,142,548,1
-534,534,14,870,227,549,1
-535,535,5,45,59,550,1
-536,536,8,170,134,551,1
-537,537,15,620,225,552,1
-538,538,13,555,163,553,1
-539,539,14,510,163,554,1
-540,540,3,25,62,555,1
-541,541,5,73,133,556,1
-542,542,12,205,221,557,1
-543,543,4,53,52,558,1
-544,544,12,585,126,559,1
-545,545,25,2005,214,560,1
-546,546,3,6,56,561,1
-547,547,7,66,168,562,1
-548,548,5,66,56,563,1
-549,549,11,163,168,564,1
-550,550,10,180,161,565,1
-551,551,7,152,58,567,1
-552,552,10,334,123,568,1
-553,553,15,963,229,569,1
-554,554,6,375,63,570,1
-555,555,13,929,168,571,1
-556,556,10,280,161,573,1
-557,557,3,145,65,574,1
-558,558,14,2000,166,575,1
-559,559,6,118,70,576,1
-560,560,11,300,171,577,1
-561,561,14,140,172,578,1
-562,562,5,15,61,579,1
-563,563,17,765,169,580,1
-564,564,7,165,71,581,1
-565,565,12,810,173,582,1
-566,566,5,95,71,583,1
-567,567,14,320,177,584,1
-568,568,6,310,66,585,1
-569,569,19,1073,166,586,1
-570,570,7,125,66,587,1
-571,571,16,811,179,588,1
-572,572,4,58,60,589,1
-573,573,5,75,165,590,1
-574,574,4,58,58,591,1
-575,575,7,180,137,592,1
-576,576,15,440,221,593,1
-577,577,3,10,58,594,1
-578,578,6,80,130,595,1
-579,579,10,201,221,596,1
-580,580,5,55,61,597,1
-581,581,13,242,166,598,1
-582,582,4,57,61,599,1
-583,583,11,410,138,600,1
-584,584,13,575,241,601,1
-585,585,6,195,67,602,1
-586,586,19,925,166,603,1
-587,587,4,50,150,604,1
-588,588,5,59,63,605,1
-589,589,10,330,173,606,1
-590,590,2,10,59,607,1
-591,591,6,105,162,608,1
-592,592,12,330,67,609,1
-593,593,22,1350,168,610,1
-594,594,12,316,165,611,1
-595,595,1,6,64,612,1
-596,596,8,143,165,613,1
-597,597,6,188,61,614,1
-598,598,10,1100,171,615,1
-599,599,3,210,60,616,1
-600,600,6,510,154,617,1
-601,601,6,810,234,618,1
-602,602,2,3,55,619,1
-603,603,12,220,142,620,1
-604,604,21,805,232,621,1
-605,605,5,90,67,622,1
-606,606,10,345,170,623,1
-607,607,3,31,55,624,1
-608,608,6,130,130,625,1
-609,609,10,343,234,626,1
-610,610,6,180,64,627,1
-611,611,10,360,144,628,1
-612,612,18,1055,243,629,1
-613,613,5,85,61,630,1
-614,614,26,2600,170,631,1
-615,615,11,1480,170,632,1
-616,616,4,77,61,633,1
-617,617,8,253,173,634,1
-618,618,7,110,165,635,1
-619,619,9,200,70,636,1
-620,620,14,355,179,637,1
-621,621,16,1390,170,638,1
-622,622,10,920,61,639,1
-623,623,28,3300,169,640,1
-624,624,5,102,68,641,1
-625,625,16,700,172,642,1
-626,626,16,946,172,643,1
-627,627,5,105,70,644,1
-628,628,15,410,179,645,1
-629,629,5,90,74,646,1
-630,630,12,395,179,647,1
-631,631,14,580,169,648,1
-632,632,3,330,169,649,1
-633,633,8,173,60,650,1
-634,634,14,500,147,651,1
-635,635,18,1600,270,652,1
-636,636,11,288,72,653,1
-637,637,16,460,248,654,1
-638,638,21,2500,261,655,1
-639,639,19,2600,261,656,1
-640,640,20,2000,261,657,1
-641,641,15,630,261,658,1
-642,642,15,610,261,659,1
-643,643,32,3300,306,660,1
-644,644,29,3450,306,661,1
-645,645,15,680,270,662,1
-646,646,30,3250,297,663,1
-647,647,14,485,261,664,1
-648,648,6,65,270,665,1
-649,649,15,825,270,667,1
-650,386,17,608,215,419,0
-651,386,17,608,215,420,0
-652,386,17,608,215,421,0
-653,413,5,65,159,447,0
-654,413,5,65,159,448,0
-655,492,4,52,64,507,0
-656,487,69,6500,220,501,0
-657,479,3,3,132,488,0
-658,479,3,3,132,489,0
-659,479,3,3,132,490,0
-660,479,3,3,132,491,0
-661,479,3,3,132,492,0
-662,351,3,8,147,379,0
-663,351,3,8,147,380,0
-664,351,3,8,147,381,0
-665,550,10,180,161,566,0
-666,555,13,929,189,572,0
-667,648,6,65,270,666,0
+id,species_id,height,weight,base_experience,order,is_default
+1,1,7,69,64,1,1
+2,2,10,130,141,2,1
+3,3,20,1000,208,3,1
+4,4,6,85,65,4,1
+5,5,11,190,142,5,1
+6,6,17,905,209,6,1
+7,7,5,90,66,7,1
+8,8,10,225,143,8,1
+9,9,16,855,210,9,1
+10,10,3,29,53,10,1
+11,11,7,99,72,11,1
+12,12,11,320,160,12,1
+13,13,3,32,52,13,1
+14,14,6,100,71,14,1
+15,15,10,295,159,15,1
+16,16,3,18,55,16,1
+17,17,11,300,113,17,1
+18,18,15,395,172,18,1
+19,19,3,35,57,19,1
+20,20,7,185,116,20,1
+21,21,3,20,58,21,1
+22,22,12,380,162,22,1
+23,23,20,69,62,23,1
+24,24,35,650,147,24,1
+25,25,4,60,82,26,1
+26,26,8,300,122,27,1
+27,27,6,120,93,28,1
+28,28,10,295,163,29,1
+29,29,4,70,59,30,1
+30,30,8,200,117,31,1
+31,31,13,600,194,32,1
+32,32,5,90,60,33,1
+33,33,9,195,118,34,1
+34,34,14,620,195,35,1
+35,35,6,75,68,37,1
+36,36,13,400,129,38,1
+37,37,6,99,63,39,1
+38,38,11,199,178,40,1
+39,39,5,55,76,42,1
+40,40,10,120,109,43,1
+41,41,8,75,54,44,1
+42,42,16,550,171,45,1
+43,43,5,54,78,47,1
+44,44,8,86,132,48,1
+45,45,12,186,184,49,1
+46,46,3,54,70,51,1
+47,47,10,295,128,52,1
+48,48,10,300,75,53,1
+49,49,15,125,138,54,1
+50,50,2,8,81,55,1
+51,51,7,333,153,56,1
+52,52,4,42,69,57,1
+53,53,10,320,148,58,1
+54,54,8,196,80,59,1
+55,55,17,766,174,60,1
+56,56,5,280,74,61,1
+57,57,10,320,149,62,1
+58,58,7,190,91,63,1
+59,59,19,1550,213,64,1
+60,60,6,124,77,65,1
+61,61,10,200,131,66,1
+62,62,13,540,185,67,1
+63,63,9,195,75,69,1
+64,64,13,565,145,70,1
+65,65,15,480,186,71,1
+66,66,8,195,75,72,1
+67,67,15,705,146,73,1
+68,68,16,1300,193,74,1
+69,69,7,40,84,75,1
+70,70,10,64,151,76,1
+71,71,17,155,191,77,1
+72,72,9,455,105,78,1
+73,73,16,550,205,79,1
+74,74,4,200,73,80,1
+75,75,10,1050,134,81,1
+76,76,14,3000,177,82,1
+77,77,10,300,152,83,1
+78,78,17,950,192,84,1
+79,79,12,360,99,85,1
+80,80,16,785,164,86,1
+81,81,3,60,89,88,1
+82,82,10,600,161,89,1
+83,83,8,150,94,91,1
+84,84,14,392,96,92,1
+85,85,18,852,158,93,1
+86,86,11,900,100,94,1
+87,87,17,1200,176,95,1
+88,88,9,300,90,96,1
+89,89,12,300,157,97,1
+90,90,3,40,97,98,1
+91,91,15,1325,203,99,1
+92,92,13,1,95,100,1
+93,93,16,1,126,101,1
+94,94,15,405,190,102,1
+95,95,88,2100,108,103,1
+96,96,10,324,102,105,1
+97,97,16,756,165,106,1
+98,98,4,65,115,107,1
+99,99,13,600,206,108,1
+100,100,5,104,103,109,1
+101,101,12,666,150,110,1
+102,102,4,25,98,111,1
+103,103,20,1200,212,112,1
+104,104,4,65,87,113,1
+105,105,10,450,124,114,1
+106,106,15,498,139,116,1
+107,107,14,502,140,117,1
+108,108,12,655,127,119,1
+109,109,6,10,114,121,1
+110,110,12,95,173,122,1
+111,111,10,1150,135,123,1
+112,112,19,1200,204,124,1
+113,113,11,346,255,127,1
+114,114,10,350,166,129,1
+115,115,22,800,175,131,1
+116,116,4,80,83,132,1
+117,117,12,250,155,133,1
+118,118,6,150,111,135,1
+119,119,13,390,170,136,1
+120,120,8,345,106,137,1
+121,121,11,800,207,138,1
+122,122,13,545,136,140,1
+123,123,15,560,187,141,1
+124,124,14,406,137,144,1
+125,125,11,300,156,146,1
+126,126,13,445,167,149,1
+127,127,15,550,200,151,1
+128,128,14,884,211,152,1
+129,129,9,100,20,153,1
+130,130,65,2350,214,154,1
+131,131,25,2200,219,155,1
+132,132,3,40,61,156,1
+133,133,3,65,92,157,1
+134,134,10,290,196,158,1
+135,135,8,245,197,159,1
+136,136,9,250,198,160,1
+137,137,8,365,130,165,1
+138,138,4,75,99,168,1
+139,139,10,350,199,169,1
+140,140,5,115,99,170,1
+141,141,13,405,199,171,1
+142,142,18,590,202,172,1
+143,143,21,4600,154,174,1
+144,144,17,554,215,175,1
+145,145,16,526,216,176,1
+146,146,20,600,217,177,1
+147,147,18,33,67,178,1
+148,148,40,165,144,179,1
+149,149,22,2100,218,180,1
+150,150,20,1220,220,181,1
+151,151,4,40,64,182,1
+152,152,9,64,64,183,1
+153,153,12,158,141,184,1
+154,154,18,1005,208,185,1
+155,155,5,79,65,186,1
+156,156,9,190,142,187,1
+157,157,17,795,209,188,1
+158,158,6,95,66,189,1
+159,159,11,250,143,190,1
+160,160,23,888,210,191,1
+161,161,8,60,57,192,1
+162,162,18,325,116,193,1
+163,163,7,212,58,194,1
+164,164,16,408,162,195,1
+165,165,10,108,54,196,1
+166,166,14,356,134,197,1
+167,167,5,85,54,198,1
+168,168,11,335,134,199,1
+169,169,18,750,204,46,1
+170,170,5,120,90,200,1
+171,171,12,225,156,201,1
+172,172,3,20,42,25,1
+173,173,3,30,37,36,1
+174,174,3,10,39,41,1
+175,175,3,15,74,202,1
+176,176,6,32,114,203,1
+177,177,2,20,73,205,1
+178,178,15,150,171,206,1
+179,179,6,78,59,207,1
+180,180,8,133,117,208,1
+181,181,14,615,194,209,1
+182,182,4,58,184,50,1
+183,183,4,85,58,211,1
+184,184,8,285,153,212,1
+185,185,12,380,135,214,1
+186,186,11,339,185,68,1
+187,187,4,5,74,215,1
+188,188,6,10,136,216,1
+189,189,8,30,176,217,1
+190,190,8,115,94,218,1
+191,191,3,18,52,220,1
+192,192,8,85,146,221,1
+193,193,12,380,147,222,1
+194,194,4,85,52,224,1
+195,195,14,750,137,225,1
+196,196,9,265,197,161,1
+197,197,10,270,197,162,1
+198,198,5,21,107,226,1
+199,199,20,795,164,87,1
+200,200,7,10,147,228,1
+201,201,5,50,61,230,1
+202,202,13,285,177,232,1
+203,203,15,415,149,233,1
+204,204,6,72,60,234,1
+205,205,12,1258,118,235,1
+206,206,15,140,125,236,1
+207,207,11,648,108,237,1
+208,208,92,4000,196,104,1
+209,209,6,78,63,239,1
+210,210,14,487,178,240,1
+211,211,5,39,100,241,1
+212,212,18,1180,200,142,1
+213,213,6,205,80,242,1
+214,214,15,540,200,243,1
+215,215,9,280,132,244,1
+216,216,6,88,124,246,1
+217,217,18,1258,189,247,1
+218,218,7,350,78,248,1
+219,219,8,550,154,249,1
+220,220,4,65,78,250,1
+221,221,11,558,160,251,1
+222,222,6,50,113,253,1
+223,223,6,120,78,254,1
+224,224,9,285,164,255,1
+225,225,9,160,183,256,1
+226,226,21,2200,168,258,1
+227,227,17,505,168,259,1
+228,228,6,108,114,260,1
+229,229,14,350,204,261,1
+230,230,18,1520,207,134,1
+231,231,5,335,124,262,1
+232,232,11,1200,189,263,1
+233,233,6,325,180,166,1
+234,234,14,712,165,264,1
+235,235,12,580,106,265,1
+236,236,7,210,91,115,1
+237,237,14,480,138,118,1
+238,238,4,60,87,143,1
+239,239,6,235,106,145,1
+240,240,7,214,117,148,1
+241,241,12,755,200,266,1
+242,242,15,468,255,128,1
+243,243,19,1780,216,267,1
+244,244,21,1980,217,268,1
+245,245,20,1870,215,269,1
+246,246,6,720,67,270,1
+247,247,12,1520,144,271,1
+248,248,20,2020,218,272,1
+249,249,52,2160,220,273,1
+250,250,38,1990,220,274,1
+251,251,6,50,64,275,1
+252,252,5,50,65,276,1
+253,253,9,216,141,277,1
+254,254,17,522,208,278,1
+255,255,4,25,65,279,1
+256,256,9,195,142,280,1
+257,257,19,520,209,281,1
+258,258,4,76,65,282,1
+259,259,7,280,143,283,1
+260,260,15,819,210,284,1
+261,261,5,136,55,285,1
+262,262,10,370,128,286,1
+263,263,4,175,60,287,1
+264,264,5,325,128,288,1
+265,265,3,36,54,289,1
+266,266,6,100,72,290,1
+267,267,10,284,161,291,1
+268,268,7,115,72,292,1
+269,269,12,316,161,293,1
+270,270,5,26,74,294,1
+271,271,12,325,141,295,1
+272,272,15,550,181,296,1
+273,273,5,40,74,297,1
+274,274,10,280,141,298,1
+275,275,13,596,181,299,1
+276,276,3,23,59,300,1
+277,277,7,198,162,301,1
+278,278,6,95,64,302,1
+279,279,12,280,164,303,1
+280,280,4,66,70,304,1
+281,281,8,202,140,305,1
+282,282,16,484,208,306,1
+283,283,5,17,63,308,1
+284,284,8,36,128,309,1
+285,285,4,45,65,310,1
+286,286,12,392,165,311,1
+287,287,8,240,83,312,1
+288,288,14,465,126,313,1
+289,289,20,1305,210,314,1
+290,290,5,55,65,315,1
+291,291,8,120,155,316,1
+292,292,8,12,95,317,1
+293,293,6,163,68,318,1
+294,294,10,405,126,319,1
+295,295,15,840,184,320,1
+296,296,10,864,87,321,1
+297,297,23,2538,184,322,1
+298,298,2,20,33,210,1
+299,299,10,970,108,323,1
+300,300,6,110,65,325,1
+301,301,11,326,138,326,1
+302,302,5,110,98,327,1
+303,303,6,115,98,328,1
+304,304,4,600,96,329,1
+305,305,9,1200,152,330,1
+306,306,21,3600,205,331,1
+307,307,6,112,91,332,1
+308,308,13,315,153,333,1
+309,309,6,152,104,334,1
+310,310,15,402,168,335,1
+311,311,4,42,120,336,1
+312,312,4,42,120,337,1
+313,313,7,177,146,338,1
+314,314,6,177,146,339,1
+315,315,3,20,152,341,1
+316,316,4,103,75,343,1
+317,317,17,800,168,344,1
+318,318,8,208,88,345,1
+319,319,18,888,175,346,1
+320,320,20,1300,137,347,1
+321,321,145,3980,206,348,1
+322,322,7,240,88,349,1
+323,323,19,2200,175,350,1
+324,324,5,804,161,351,1
+325,325,7,306,89,352,1
+326,326,9,715,164,353,1
+327,327,11,50,85,354,1
+328,328,7,150,73,355,1
+329,329,11,153,126,356,1
+330,330,20,820,197,357,1
+331,331,4,513,97,358,1
+332,332,13,774,177,359,1
+333,333,4,12,74,360,1
+334,334,11,206,188,361,1
+335,335,13,403,165,362,1
+336,336,27,525,165,363,1
+337,337,10,1680,150,364,1
+338,338,12,1540,150,365,1
+339,339,4,19,92,366,1
+340,340,9,236,158,367,1
+341,341,6,115,111,368,1
+342,342,11,328,161,369,1
+343,343,5,215,58,370,1
+344,344,15,1080,189,371,1
+345,345,10,238,99,372,1
+346,346,15,604,199,373,1
+347,347,7,125,99,374,1
+348,348,15,682,199,375,1
+349,349,6,74,61,376,1
+350,350,62,1620,213,377,1
+351,351,3,8,145,378,1
+352,352,10,220,132,382,1
+353,353,6,23,97,383,1
+354,354,11,125,179,384,1
+355,355,8,150,97,385,1
+356,356,16,306,179,386,1
+357,357,20,1000,169,388,1
+358,358,6,10,147,390,1
+359,359,12,470,174,391,1
+360,360,6,140,44,231,1
+361,361,7,168,74,392,1
+362,362,15,2565,187,393,1
+363,363,8,395,75,395,1
+364,364,11,876,128,396,1
+365,365,14,1506,192,397,1
+366,366,4,525,142,398,1
+367,367,17,270,178,399,1
+368,368,18,226,178,400,1
+369,369,10,234,198,401,1
+370,370,6,87,110,402,1
+371,371,6,421,89,403,1
+372,372,11,1105,144,404,1
+373,373,15,1026,218,405,1
+374,374,6,952,103,406,1
+375,375,12,2025,153,407,1
+376,376,16,5500,210,408,1
+377,377,17,2300,217,409,1
+378,378,18,1750,216,410,1
+379,379,19,2050,215,411,1
+380,380,14,400,211,412,1
+381,381,20,600,211,413,1
+382,382,45,3520,218,414,1
+383,383,35,9500,218,415,1
+384,384,70,2065,220,416,1
+385,385,3,11,215,417,1
+386,386,17,608,215,418,1
+387,387,4,102,64,422,1
+388,388,11,970,141,423,1
+389,389,22,3100,208,424,1
+390,390,5,62,65,425,1
+391,391,9,220,142,426,1
+392,392,12,550,209,427,1
+393,393,4,52,66,428,1
+394,394,8,230,143,429,1
+395,395,17,845,210,430,1
+396,396,3,20,56,431,1
+397,397,6,155,113,432,1
+398,398,12,249,172,433,1
+399,399,5,200,58,434,1
+400,400,10,315,116,435,1
+401,401,3,22,54,436,1
+402,402,10,255,159,437,1
+403,403,5,95,60,438,1
+404,404,9,305,117,439,1
+405,405,14,420,194,440,1
+406,406,2,12,68,340,1
+407,407,9,145,204,342,1
+408,408,9,315,99,441,1
+409,409,16,1025,199,442,1
+410,410,5,570,99,443,1
+411,411,13,1495,199,444,1
+412,412,2,34,61,445,1
+413,413,5,65,159,446,1
+414,414,9,233,159,449,1
+415,415,3,55,63,450,1
+416,416,12,385,188,451,1
+417,417,4,39,120,452,1
+418,418,7,295,75,453,1
+419,419,11,335,178,454,1
+420,420,4,33,68,455,1
+421,421,5,93,133,456,1
+422,422,3,63,73,457,1
+423,423,9,299,176,458,1
+424,424,12,203,186,219,1
+425,425,4,12,127,459,1
+426,426,12,150,204,460,1
+427,427,4,55,84,461,1
+428,428,12,333,178,462,1
+429,429,9,44,187,229,1
+430,430,9,273,187,227,1
+431,431,5,39,71,463,1
+432,432,10,438,183,464,1
+433,433,2,6,74,389,1
+434,434,4,192,79,465,1
+435,435,10,380,209,466,1
+436,436,5,605,72,467,1
+437,437,13,1870,188,468,1
+438,438,5,150,68,213,1
+439,439,6,130,78,139,1
+440,440,6,244,255,126,1
+441,441,5,19,107,469,1
+442,442,10,1080,168,470,1
+443,443,7,205,67,471,1
+444,444,14,560,144,472,1
+445,445,19,950,218,473,1
+446,446,6,1050,94,173,1
+447,447,7,202,72,474,1
+448,448,12,540,204,475,1
+449,449,8,495,95,476,1
+450,450,20,3000,198,477,1
+451,451,8,120,114,478,1
+452,452,13,615,204,479,1
+453,453,7,230,83,480,1
+454,454,13,444,181,481,1
+455,455,14,270,164,482,1
+456,456,4,70,90,483,1
+457,457,12,240,156,484,1
+458,458,10,650,108,257,1
+459,459,10,505,131,485,1
+460,460,22,1355,214,486,1
+461,461,11,340,199,245,1
+462,462,12,1800,211,90,1
+463,463,17,1400,193,120,1
+464,464,24,2828,217,125,1
+465,465,20,1286,211,130,1
+466,466,18,1386,199,147,1
+467,467,16,680,199,150,1
+468,468,15,380,220,204,1
+469,469,19,515,198,223,1
+470,470,10,255,196,163,1
+471,471,8,259,196,164,1
+472,472,20,425,192,238,1
+473,473,25,2910,207,252,1
+474,474,9,340,185,167,1
+475,475,16,520,208,307,1
+476,476,14,3400,198,324,1
+477,477,22,1066,210,387,1
+478,478,13,266,187,394,1
+479,479,3,3,132,487,1
+480,480,3,3,210,493,1
+481,481,3,3,210,494,1
+482,482,3,3,210,495,1
+483,483,54,6830,220,496,1
+484,484,42,3360,220,497,1
+485,485,17,4300,215,498,1
+486,486,37,4200,220,499,1
+487,487,45,7500,220,500,1
+488,488,15,856,210,502,1
+489,489,4,31,165,503,1
+490,490,3,14,215,504,1
+491,491,15,505,210,505,1
+492,492,2,21,64,506,1
+493,493,32,3200,255,508,1
+494,494,4,40,270,509,1
+495,495,6,81,28,510,1
+496,496,8,160,145,511,1
+497,497,33,630,238,512,1
+498,498,5,99,28,513,1
+499,499,10,555,146,514,1
+500,500,16,1500,238,515,1
+501,501,5,59,28,516,1
+502,502,8,245,145,517,1
+503,503,15,946,238,518,1
+504,504,5,116,51,519,1
+505,505,11,270,147,520,1
+506,506,4,41,55,521,1
+507,507,9,147,130,522,1
+508,508,12,610,221,523,1
+509,509,4,101,56,524,1
+510,510,11,375,156,525,1
+511,511,6,105,63,526,1
+512,512,11,305,174,527,1
+513,513,6,110,63,528,1
+514,514,10,280,174,529,1
+515,515,6,135,63,530,1
+516,516,10,290,174,531,1
+517,517,6,233,58,532,1
+518,518,11,605,170,533,1
+519,519,3,21,53,534,1
+520,520,6,150,125,535,1
+521,521,12,290,215,536,1
+522,522,8,298,59,537,1
+523,523,16,795,174,538,1
+524,524,4,180,56,539,1
+525,525,9,1020,137,540,1
+526,526,17,2600,227,541,1
+527,527,4,21,63,542,1
+528,528,9,105,149,543,1
+529,529,3,85,66,544,1
+530,530,7,404,178,545,1
+531,531,11,310,390,546,1
+532,532,6,125,61,547,1
+533,533,12,400,142,548,1
+534,534,14,870,227,549,1
+535,535,5,45,59,550,1
+536,536,8,170,134,551,1
+537,537,15,620,225,552,1
+538,538,13,555,163,553,1
+539,539,14,510,163,554,1
+540,540,3,25,62,555,1
+541,541,5,73,133,556,1
+542,542,12,205,221,557,1
+543,543,4,53,52,558,1
+544,544,12,585,126,559,1
+545,545,25,2005,214,560,1
+546,546,3,6,56,561,1
+547,547,7,66,168,562,1
+548,548,5,66,56,563,1
+549,549,11,163,168,564,1
+550,550,10,180,161,565,1
+551,551,7,152,58,567,1
+552,552,10,334,123,568,1
+553,553,15,963,229,569,1
+554,554,6,375,63,570,1
+555,555,13,929,168,571,1
+556,556,10,280,161,573,1
+557,557,3,145,65,574,1
+558,558,14,2000,166,575,1
+559,559,6,118,70,576,1
+560,560,11,300,171,577,1
+561,561,14,140,172,578,1
+562,562,5,15,61,579,1
+563,563,17,765,169,580,1
+564,564,7,165,71,581,1
+565,565,12,810,173,582,1
+566,566,5,95,71,583,1
+567,567,14,320,177,584,1
+568,568,6,310,66,585,1
+569,569,19,1073,166,586,1
+570,570,7,125,66,587,1
+571,571,16,811,179,588,1
+572,572,4,58,60,589,1
+573,573,5,75,165,590,1
+574,574,4,58,58,591,1
+575,575,7,180,137,592,1
+576,576,15,440,221,593,1
+577,577,3,10,58,594,1
+578,578,6,80,130,595,1
+579,579,10,201,221,596,1
+580,580,5,55,61,597,1
+581,581,13,242,166,598,1
+582,582,4,57,61,599,1
+583,583,11,410,138,600,1
+584,584,13,575,241,601,1
+585,585,6,195,67,602,1
+586,586,19,925,166,603,1
+587,587,4,50,150,604,1
+588,588,5,59,63,605,1
+589,589,10,330,173,606,1
+590,590,2,10,59,607,1
+591,591,6,105,162,608,1
+592,592,12,330,67,609,1
+593,593,22,1350,168,610,1
+594,594,12,316,165,611,1
+595,595,1,6,64,612,1
+596,596,8,143,165,613,1
+597,597,6,188,61,614,1
+598,598,10,1100,171,615,1
+599,599,3,210,60,616,1
+600,600,6,510,154,617,1
+601,601,6,810,234,618,1
+602,602,2,3,55,619,1
+603,603,12,220,142,620,1
+604,604,21,805,232,621,1
+605,605,5,90,67,622,1
+606,606,10,345,170,623,1
+607,607,3,31,55,624,1
+608,608,6,130,130,625,1
+609,609,10,343,234,626,1
+610,610,6,180,64,627,1
+611,611,10,360,144,628,1
+612,612,18,1055,243,629,1
+613,613,5,85,61,630,1
+614,614,26,2600,170,631,1
+615,615,11,1480,170,632,1
+616,616,4,77,61,633,1
+617,617,8,253,173,634,1
+618,618,7,110,165,635,1
+619,619,9,200,70,636,1
+620,620,14,355,179,637,1
+621,621,16,1390,170,638,1
+622,622,10,920,61,639,1
+623,623,28,3300,169,640,1
+624,624,5,102,68,641,1
+625,625,16,700,172,642,1
+626,626,16,946,172,643,1
+627,627,5,105,70,644,1
+628,628,15,410,179,645,1
+629,629,5,90,74,646,1
+630,630,12,395,179,647,1
+631,631,14,580,169,648,1
+632,632,3,330,169,649,1
+633,633,8,173,60,650,1
+634,634,14,500,147,651,1
+635,635,18,1600,270,652,1
+636,636,11,288,72,653,1
+637,637,16,460,248,654,1
+638,638,21,2500,261,655,1
+639,639,19,2600,261,656,1
+640,640,20,2000,261,657,1
+641,641,15,630,261,658,1
+642,642,15,610,261,659,1
+643,643,32,3300,306,660,1
+644,644,29,3450,306,661,1
+645,645,15,680,270,662,1
+646,646,30,3250,297,663,1
+647,647,14,485,261,664,1
+648,648,6,65,270,665,1
+649,649,15,825,270,667,1
+650,386,17,608,215,419,0
+651,386,17,608,215,420,0
+652,386,17,608,215,421,0
+653,413,5,65,159,447,0
+654,413,5,65,159,448,0
+655,492,4,52,64,507,0
+656,487,69,6500,220,501,0
+657,479,3,3,132,488,0
+658,479,3,3,132,489,0
+659,479,3,3,132,490,0
+660,479,3,3,132,491,0
+661,479,3,3,132,492,0
+662,351,3,8,147,379,0
+663,351,3,8,147,380,0
+664,351,3,8,147,381,0
+665,550,10,180,161,566,0
+666,555,13,929,189,572,0
+667,648,6,65,270,666,0
diff --git a/pokedex/data/csv/pokemon_forms.csv b/pokedex/data/csv/pokemon_forms.csv
index 1e56970..c609936 100644
--- a/pokedex/data/csv/pokemon_forms.csv
+++ b/pokedex/data/csv/pokemon_forms.csv
@@ -1,728 +1,728 @@
-id,form_identifier,pokemon_id,introduced_in_version_group_id,is_default,is_battle_only,order
-1,,1,1,1,0,1
-2,,2,1,1,0,2
-3,,3,1,1,0,3
-4,,4,1,1,0,4
-5,,5,1,1,0,5
-6,,6,1,1,0,6
-7,,7,1,1,0,7
-8,,8,1,1,0,8
-9,,9,1,1,0,9
-10,,10,1,1,0,10
-11,,11,1,1,0,11
-12,,12,1,1,0,12
-13,,13,1,1,0,13
-14,,14,1,1,0,14
-15,,15,1,1,0,15
-16,,16,1,1,0,16
-17,,17,1,1,0,17
-18,,18,1,1,0,18
-19,,19,1,1,0,19
-20,,20,1,1,0,20
-21,,21,1,1,0,21
-22,,22,1,1,0,22
-23,,23,1,1,0,23
-24,,24,1,1,0,24
-25,,25,1,1,0,26
-26,,26,1,1,0,27
-27,,27,1,1,0,28
-28,,28,1,1,0,29
-29,,29,1,1,0,30
-30,,30,1,1,0,31
-31,,31,1,1,0,32
-32,,32,1,1,0,33
-33,,33,1,1,0,34
-34,,34,1,1,0,35
-35,,35,1,1,0,37
-36,,36,1,1,0,38
-37,,37,1,1,0,39
-38,,38,1,1,0,40
-39,,39,1,1,0,42
-40,,40,1,1,0,43
-41,,41,1,1,0,44
-42,,42,1,1,0,45
-43,,43,1,1,0,47
-44,,44,1,1,0,48
-45,,45,1,1,0,49
-46,,46,1,1,0,51
-47,,47,1,1,0,52
-48,,48,1,1,0,53
-49,,49,1,1,0,54
-50,,50,1,1,0,55
-51,,51,1,1,0,56
-52,,52,1,1,0,57
-53,,53,1,1,0,58
-54,,54,1,1,0,59
-55,,55,1,1,0,60
-56,,56,1,1,0,61
-57,,57,1,1,0,62
-58,,58,1,1,0,63
-59,,59,1,1,0,64
-60,,60,1,1,0,65
-61,,61,1,1,0,66
-62,,62,1,1,0,67
-63,,63,1,1,0,69
-64,,64,1,1,0,70
-65,,65,1,1,0,71
-66,,66,1,1,0,72
-67,,67,1,1,0,73
-68,,68,1,1,0,74
-69,,69,1,1,0,75
-70,,70,1,1,0,76
-71,,71,1,1,0,77
-72,,72,1,1,0,78
-73,,73,1,1,0,79
-74,,74,1,1,0,80
-75,,75,1,1,0,81
-76,,76,1,1,0,82
-77,,77,1,1,0,83
-78,,78,1,1,0,84
-79,,79,1,1,0,85
-80,,80,1,1,0,86
-81,,81,1,1,0,88
-82,,82,1,1,0,89
-83,,83,1,1,0,91
-84,,84,1,1,0,92
-85,,85,1,1,0,93
-86,,86,1,1,0,94
-87,,87,1,1,0,95
-88,,88,1,1,0,96
-89,,89,1,1,0,97
-90,,90,1,1,0,98
-91,,91,1,1,0,99
-92,,92,1,1,0,100
-93,,93,1,1,0,101
-94,,94,1,1,0,102
-95,,95,1,1,0,103
-96,,96,1,1,0,105
-97,,97,1,1,0,106
-98,,98,1,1,0,107
-99,,99,1,1,0,108
-100,,100,1,1,0,109
-101,,101,1,1,0,110
-102,,102,1,1,0,111
-103,,103,1,1,0,112
-104,,104,1,1,0,113
-105,,105,1,1,0,114
-106,,106,1,1,0,116
-107,,107,1,1,0,117
-108,,108,1,1,0,119
-109,,109,1,1,0,121
-110,,110,1,1,0,122
-111,,111,1,1,0,123
-112,,112,1,1,0,124
-113,,113,1,1,0,127
-114,,114,1,1,0,129
-115,,115,1,1,0,131
-116,,116,1,1,0,132
-117,,117,1,1,0,133
-118,,118,1,1,0,135
-119,,119,1,1,0,136
-120,,120,1,1,0,137
-121,,121,1,1,0,138
-122,,122,1,1,0,140
-123,,123,1,1,0,141
-124,,124,1,1,0,144
-125,,125,1,1,0,146
-126,,126,1,1,0,149
-127,,127,1,1,0,151
-128,,128,1,1,0,152
-129,,129,1,1,0,153
-130,,130,1,1,0,154
-131,,131,1,1,0,155
-132,,132,1,1,0,156
-133,,133,1,1,0,157
-134,,134,1,1,0,158
-135,,135,1,1,0,159
-136,,136,1,1,0,160
-137,,137,1,1,0,165
-138,,138,1,1,0,168
-139,,139,1,1,0,169
-140,,140,1,1,0,170
-141,,141,1,1,0,171
-142,,142,1,1,0,172
-143,,143,1,1,0,174
-144,,144,1,1,0,175
-145,,145,1,1,0,176
-146,,146,1,1,0,177
-147,,147,1,1,0,178
-148,,148,1,1,0,179
-149,,149,1,1,0,180
-150,,150,1,1,0,181
-151,,151,1,1,0,182
-152,,152,3,1,0,183
-153,,153,3,1,0,184
-154,,154,3,1,0,185
-155,,155,3,1,0,186
-156,,156,3,1,0,187
-157,,157,3,1,0,188
-158,,158,3,1,0,189
-159,,159,3,1,0,190
-160,,160,3,1,0,191
-161,,161,3,1,0,192
-162,,162,3,1,0,193
-163,,163,3,1,0,194
-164,,164,3,1,0,195
-165,,165,3,1,0,196
-166,,166,3,1,0,197
-167,,167,3,1,0,198
-168,,168,3,1,0,199
-169,,169,3,1,0,46
-170,,170,3,1,0,200
-171,,171,3,1,0,201
-172,,172,3,1,0,25
-173,,173,3,1,0,36
-174,,174,3,1,0,41
-175,,175,3,1,0,202
-176,,176,3,1,0,203
-177,,177,3,1,0,205
-178,,178,3,1,0,206
-179,,179,3,1,0,207
-180,,180,3,1,0,208
-181,,181,3,1,0,209
-182,,182,3,1,0,50
-183,,183,3,1,0,211
-184,,184,3,1,0,212
-185,,185,3,1,0,214
-186,,186,3,1,0,68
-187,,187,3,1,0,215
-188,,188,3,1,0,216
-189,,189,3,1,0,217
-190,,190,3,1,0,218
-191,,191,3,1,0,220
-192,,192,3,1,0,221
-193,,193,3,1,0,222
-194,,194,3,1,0,224
-195,,195,3,1,0,225
-196,,196,3,1,0,161
-197,,197,3,1,0,162
-198,,198,3,1,0,226
-199,,199,3,1,0,87
-200,,200,3,1,0,228
-201,a,201,3,1,0,230
-202,,202,3,1,0,232
-203,,203,3,1,0,233
-204,,204,3,1,0,234
-205,,205,3,1,0,235
-206,,206,3,1,0,236
-207,,207,3,1,0,237
-208,,208,3,1,0,104
-209,,209,3,1,0,239
-210,,210,3,1,0,240
-211,,211,3,1,0,241
-212,,212,3,1,0,142
-213,,213,3,1,0,242
-214,,214,3,1,0,243
-215,,215,3,1,0,244
-216,,216,3,1,0,246
-217,,217,3,1,0,247
-218,,218,3,1,0,248
-219,,219,3,1,0,249
-220,,220,3,1,0,250
-221,,221,3,1,0,251
-222,,222,3,1,0,253
-223,,223,3,1,0,254
-224,,224,3,1,0,255
-225,,225,3,1,0,256
-226,,226,3,1,0,258
-227,,227,3,1,0,259
-228,,228,3,1,0,260
-229,,229,3,1,0,261
-230,,230,3,1,0,134
-231,,231,3,1,0,262
-232,,232,3,1,0,263
-233,,233,3,1,0,166
-234,,234,3,1,0,264
-235,,235,3,1,0,265
-236,,236,3,1,0,115
-237,,237,3,1,0,118
-238,,238,3,1,0,143
-239,,239,3,1,0,145
-240,,240,3,1,0,148
-241,,241,3,1,0,266
-242,,242,3,1,0,128
-243,,243,3,1,0,267
-244,,244,3,1,0,268
-245,,245,3,1,0,269
-246,,246,3,1,0,270
-247,,247,3,1,0,271
-248,,248,3,1,0,272
-249,,249,3,1,0,273
-250,,250,3,1,0,274
-251,,251,3,1,0,275
-252,,252,5,1,0,276
-253,,253,5,1,0,277
-254,,254,5,1,0,278
-255,,255,5,1,0,279
-256,,256,5,1,0,280
-257,,257,5,1,0,281
-258,,258,5,1,0,282
-259,,259,5,1,0,283
-260,,260,5,1,0,284
-261,,261,5,1,0,285
-262,,262,5,1,0,286
-263,,263,5,1,0,287
-264,,264,5,1,0,288
-265,,265,5,1,0,289
-266,,266,5,1,0,290
-267,,267,5,1,0,291
-268,,268,5,1,0,292
-269,,269,5,1,0,293
-270,,270,5,1,0,294
-271,,271,5,1,0,295
-272,,272,5,1,0,296
-273,,273,5,1,0,297
-274,,274,5,1,0,298
-275,,275,5,1,0,299
-276,,276,5,1,0,300
-277,,277,5,1,0,301
-278,,278,5,1,0,302
-279,,279,5,1,0,303
-280,,280,5,1,0,304
-281,,281,5,1,0,305
-282,,282,5,1,0,306
-283,,283,5,1,0,308
-284,,284,5,1,0,309
-285,,285,5,1,0,310
-286,,286,5,1,0,311
-287,,287,5,1,0,312
-288,,288,5,1,0,313
-289,,289,5,1,0,314
-290,,290,5,1,0,315
-291,,291,5,1,0,316
-292,,292,5,1,0,317
-293,,293,5,1,0,318
-294,,294,5,1,0,319
-295,,295,5,1,0,320
-296,,296,5,1,0,321
-297,,297,5,1,0,322
-298,,298,5,1,0,210
-299,,299,5,1,0,323
-300,,300,5,1,0,325
-301,,301,5,1,0,326
-302,,302,5,1,0,327
-303,,303,5,1,0,328
-304,,304,5,1,0,329
-305,,305,5,1,0,330
-306,,306,5,1,0,331
-307,,307,5,1,0,332
-308,,308,5,1,0,333
-309,,309,5,1,0,334
-310,,310,5,1,0,335
-311,,311,5,1,0,336
-312,,312,5,1,0,337
-313,,313,5,1,0,338
-314,,314,5,1,0,339
-315,,315,5,1,0,341
-316,,316,5,1,0,343
-317,,317,5,1,0,344
-318,,318,5,1,0,345
-319,,319,5,1,0,346
-320,,320,5,1,0,347
-321,,321,5,1,0,348
-322,,322,5,1,0,349
-323,,323,5,1,0,350
-324,,324,5,1,0,351
-325,,325,5,1,0,352
-326,,326,5,1,0,353
-327,,327,5,1,0,354
-328,,328,5,1,0,355
-329,,329,5,1,0,356
-330,,330,5,1,0,357
-331,,331,5,1,0,358
-332,,332,5,1,0,359
-333,,333,5,1,0,360
-334,,334,5,1,0,361
-335,,335,5,1,0,362
-336,,336,5,1,0,363
-337,,337,5,1,0,364
-338,,338,5,1,0,365
-339,,339,5,1,0,366
-340,,340,5,1,0,367
-341,,341,5,1,0,368
-342,,342,5,1,0,369
-343,,343,5,1,0,370
-344,,344,5,1,0,371
-345,,345,5,1,0,372
-346,,346,5,1,0,373
-347,,347,5,1,0,374
-348,,348,5,1,0,375
-349,,349,5,1,0,376
-350,,350,5,1,0,377
-351,,351,5,1,0,378
-352,,352,5,1,0,382
-353,,353,5,1,0,383
-354,,354,5,1,0,384
-355,,355,5,1,0,385
-356,,356,5,1,0,386
-357,,357,5,1,0,388
-358,,358,5,1,0,390
-359,,359,5,1,0,391
-360,,360,5,1,0,231
-361,,361,5,1,0,392
-362,,362,5,1,0,393
-363,,363,5,1,0,395
-364,,364,5,1,0,396
-365,,365,5,1,0,397
-366,,366,5,1,0,398
-367,,367,5,1,0,399
-368,,368,5,1,0,400
-369,,369,5,1,0,401
-370,,370,5,1,0,402
-371,,371,5,1,0,403
-372,,372,5,1,0,404
-373,,373,5,1,0,405
-374,,374,5,1,0,406
-375,,375,5,1,0,407
-376,,376,5,1,0,408
-377,,377,5,1,0,409
-378,,378,5,1,0,410
-379,,379,5,1,0,411
-380,,380,5,1,0,412
-381,,381,5,1,0,413
-382,,382,5,1,0,414
-383,,383,5,1,0,415
-384,,384,5,1,0,416
-385,,385,5,1,0,417
-386,normal,386,5,1,0,418
-387,,387,8,1,0,422
-388,,388,8,1,0,423
-389,,389,8,1,0,424
-390,,390,8,1,0,425
-391,,391,8,1,0,426
-392,,392,8,1,0,427
-393,,393,8,1,0,428
-394,,394,8,1,0,429
-395,,395,8,1,0,430
-396,,396,8,1,0,431
-397,,397,8,1,0,432
-398,,398,8,1,0,433
-399,,399,8,1,0,434
-400,,400,8,1,0,435
-401,,401,8,1,0,436
-402,,402,8,1,0,437
-403,,403,8,1,0,438
-404,,404,8,1,0,439
-405,,405,8,1,0,440
-406,,406,8,1,0,340
-407,,407,8,1,0,342
-408,,408,8,1,0,441
-409,,409,8,1,0,442
-410,,410,8,1,0,443
-411,,411,8,1,0,444
-412,plant,412,8,1,0,445
-413,plant,413,8,1,0,446
-414,,414,8,1,0,449
-415,,415,8,1,0,450
-416,,416,8,1,0,451
-417,,417,8,1,0,452
-418,,418,8,1,0,453
-419,,419,8,1,0,454
-420,,420,8,1,0,455
-421,overcast,421,8,1,1,456
-422,west,422,8,1,0,457
-423,west,423,8,1,0,458
-424,,424,8,1,0,219
-425,,425,8,1,0,459
-426,,426,8,1,0,460
-427,,427,8,1,0,461
-428,,428,8,1,0,462
-429,,429,8,1,0,229
-430,,430,8,1,0,227
-431,,431,8,1,0,463
-432,,432,8,1,0,464
-433,,433,8,1,0,389
-434,,434,8,1,0,465
-435,,435,8,1,0,466
-436,,436,8,1,0,467
-437,,437,8,1,0,468
-438,,438,8,1,0,213
-439,,439,8,1,0,139
-440,,440,8,1,0,126
-441,,441,8,1,0,469
-442,,442,8,1,0,470
-443,,443,8,1,0,471
-444,,444,8,1,0,472
-445,,445,8,1,0,473
-446,,446,8,1,0,173
-447,,447,8,1,0,474
-448,,448,8,1,0,475
-449,,449,8,1,0,476
-450,,450,8,1,0,477
-451,,451,8,1,0,478
-452,,452,8,1,0,479
-453,,453,8,1,0,480
-454,,454,8,1,0,481
-455,,455,8,1,0,482
-456,,456,8,1,0,483
-457,,457,8,1,0,484
-458,,458,8,1,0,257
-459,,459,8,1,0,485
-460,,460,8,1,0,486
-461,,461,8,1,0,245
-462,,462,8,1,0,90
-463,,463,8,1,0,120
-464,,464,8,1,0,125
-465,,465,8,1,0,130
-466,,466,8,1,0,147
-467,,467,8,1,0,150
-468,,468,8,1,0,204
-469,,469,8,1,0,223
-470,,470,8,1,0,163
-471,,471,8,1,0,164
-472,,472,8,1,0,238
-473,,473,8,1,0,252
-474,,474,8,1,0,167
-475,,475,8,1,0,307
-476,,476,8,1,0,324
-477,,477,8,1,0,387
-478,,478,8,1,0,394
-479,,479,8,1,0,487
-480,,480,8,1,0,493
-481,,481,8,1,0,494
-482,,482,8,1,0,495
-483,,483,8,1,0,496
-484,,484,8,1,0,497
-485,,485,8,1,0,498
-486,,486,8,1,0,499
-487,altered,487,8,1,0,500
-488,,488,8,1,0,502
-489,,489,8,1,0,503
-490,,490,8,1,0,504
-491,,491,8,1,0,505
-492,land,492,8,1,0,506
-493,normal,493,8,1,0,508
-494,,494,11,1,0,509
-495,,495,11,1,0,510
-496,,496,11,1,0,511
-497,,497,11,1,0,512
-498,,498,11,1,0,513
-499,,499,11,1,0,514
-500,,500,11,1,0,515
-501,,501,11,1,0,516
-502,,502,11,1,0,517
-503,,503,11,1,0,518
-504,,504,11,1,0,519
-505,,505,11,1,0,520
-506,,506,11,1,0,521
-507,,507,11,1,0,522
-508,,508,11,1,0,523
-509,,509,11,1,0,524
-510,,510,11,1,0,525
-511,,511,11,1,0,526
-512,,512,11,1,0,527
-513,,513,11,1,0,528
-514,,514,11,1,0,529
-515,,515,11,1,0,530
-516,,516,11,1,0,531
-517,,517,11,1,0,532
-518,,518,11,1,0,533
-519,,519,11,1,0,534
-520,,520,11,1,0,535
-521,,521,11,1,0,536
-522,,522,11,1,0,537
-523,,523,11,1,0,538
-524,,524,11,1,0,539
-525,,525,11,1,0,540
-526,,526,11,1,0,541
-527,,527,11,1,0,542
-528,,528,11,1,0,543
-529,,529,11,1,0,544
-530,,530,11,1,0,545
-531,,531,11,1,0,546
-532,,532,11,1,0,547
-533,,533,11,1,0,548
-534,,534,11,1,0,549
-535,,535,11,1,0,550
-536,,536,11,1,0,551
-537,,537,11,1,0,552
-538,,538,11,1,0,553
-539,,539,11,1,0,554
-540,,540,11,1,0,555
-541,,541,11,1,0,556
-542,,542,11,1,0,557
-543,,543,11,1,0,558
-544,,544,11,1,0,559
-545,,545,11,1,0,560
-546,,546,11,1,0,561
-547,,547,11,1,0,562
-548,,548,11,1,0,563
-549,,549,11,1,0,564
-550,red-striped,550,11,1,0,565
-551,,551,11,1,0,567
-552,,552,11,1,0,568
-553,,553,11,1,0,569
-554,,554,11,1,0,570
-555,standard,555,11,1,0,571
-556,,556,11,1,0,573
-557,,557,11,1,0,574
-558,,558,11,1,0,575
-559,,559,11,1,0,576
-560,,560,11,1,0,577
-561,,561,11,1,0,578
-562,,562,11,1,0,579
-563,,563,11,1,0,580
-564,,564,11,1,0,581
-565,,565,11,1,0,582
-566,,566,11,1,0,583
-567,,567,11,1,0,584
-568,,568,11,1,0,585
-569,,569,11,1,0,586
-570,,570,11,1,0,587
-571,,571,11,1,0,588
-572,,572,11,1,0,589
-573,,573,11,1,0,590
-574,,574,11,1,0,591
-575,,575,11,1,0,592
-576,,576,11,1,0,593
-577,,577,11,1,0,594
-578,,578,11,1,0,595
-579,,579,11,1,0,596
-580,,580,11,1,0,597
-581,,581,11,1,0,598
-582,,582,11,1,0,599
-583,,583,11,1,0,600
-584,,584,11,1,0,601
-585,spring,585,11,1,0,602
-586,spring,586,11,1,0,603
-587,,587,11,1,0,604
-588,,588,11,1,0,605
-589,,589,11,1,0,606
-590,,590,11,1,0,607
-591,,591,11,1,0,608
-592,,592,11,1,0,609
-593,,593,11,1,0,610
-594,,594,11,1,0,611
-595,,595,11,1,0,612
-596,,596,11,1,0,613
-597,,597,11,1,0,614
-598,,598,11,1,0,615
-599,,599,11,1,0,616
-600,,600,11,1,0,617
-601,,601,11,1,0,618
-602,,602,11,1,0,619
-603,,603,11,1,0,620
-604,,604,11,1,0,621
-605,,605,11,1,0,622
-606,,606,11,1,0,623
-607,,607,11,1,0,624
-608,,608,11,1,0,625
-609,,609,11,1,0,626
-610,,610,11,1,0,627
-611,,611,11,1,0,628
-612,,612,11,1,0,629
-613,,613,11,1,0,630
-614,,614,11,1,0,631
-615,,615,11,1,0,632
-616,,616,11,1,0,633
-617,,617,11,1,0,634
-618,,618,11,1,0,635
-619,,619,11,1,0,636
-620,,620,11,1,0,637
-621,,621,11,1,0,638
-622,,622,11,1,0,639
-623,,623,11,1,0,640
-624,,624,11,1,0,641
-625,,625,11,1,0,642
-626,,626,11,1,0,643
-627,,627,11,1,0,644
-628,,628,11,1,0,645
-629,,629,11,1,0,646
-630,,630,11,1,0,647
-631,,631,11,1,0,648
-632,,632,11,1,0,649
-633,,633,11,1,0,650
-634,,634,11,1,0,651
-635,,635,11,1,0,652
-636,,636,11,1,0,653
-637,,637,11,1,0,654
-638,,638,11,1,0,655
-639,,639,11,1,0,656
-640,,640,11,1,0,657
-641,,641,11,1,0,658
-642,,642,11,1,0,659
-643,,643,11,1,0,660
-644,,644,11,1,0,661
-645,,645,11,1,0,662
-646,,646,11,1,0,663
-647,,647,11,1,0,664
-648,aria,648,11,1,0,665
-649,,649,11,1,0,667
-650,b,201,3,0,0,230
-651,c,201,3,0,0,230
-652,d,201,3,0,0,230
-653,e,201,3,0,0,230
-654,f,201,3,0,0,230
-655,g,201,3,0,0,230
-656,h,201,3,0,0,230
-657,i,201,3,0,0,230
-658,j,201,3,0,0,230
-659,k,201,3,0,0,230
-660,l,201,3,0,0,230
-661,m,201,3,0,0,230
-662,n,201,3,0,0,230
-663,o,201,3,0,0,230
-664,p,201,3,0,0,230
-665,q,201,3,0,0,230
-666,r,201,3,0,0,230
-667,s,201,3,0,0,230
-668,t,201,3,0,0,230
-669,u,201,3,0,0,230
-670,v,201,3,0,0,230
-671,w,201,3,0,0,230
-672,x,201,3,0,0,230
-673,y,201,3,0,0,230
-674,z,201,3,0,0,230
-675,exclamation,201,5,0,0,230
-676,question,201,5,0,0,230
-677,sunny,662,5,1,1,379
-678,rainy,663,5,1,1,380
-679,snowy,664,5,1,1,381
-680,attack,650,7,1,0,419
-681,defense,651,7,1,0,420
-682,speed,652,6,1,0,421
-683,sandy,412,8,0,0,445
-684,trash,412,8,0,0,445
-685,sandy,653,8,1,0,447
-686,trash,654,8,1,0,448
-687,sunshine,421,8,0,1,456
-688,east,422,8,0,0,457
-689,east,423,8,0,0,458
-690,bug,493,8,0,0,508
-691,dark,493,8,0,0,508
-692,dragon,493,8,0,0,508
-693,electric,493,8,0,0,508
-694,fighting,493,8,0,0,508
-695,fire,493,8,0,0,508
-696,flying,493,8,0,0,508
-697,ghost,493,8,0,0,508
-698,grass,493,8,0,0,508
-699,ground,493,8,0,0,508
-700,ice,493,8,0,0,508
-701,poison,493,8,0,0,508
-702,psychic,493,8,0,0,508
-703,rock,493,8,0,0,508
-704,steel,493,8,0,0,508
-705,water,493,8,0,0,508
-706,unknown,493,8,0,0,508
-707,heat,657,9,1,0,488
-708,wash,658,9,1,0,489
-709,frost,659,9,1,0,490
-710,fan,660,9,1,0,491
-711,mow,661,9,1,0,492
-712,origin,656,9,1,0,501
-713,sky,655,9,1,0,507
-714,spiky-eared,172,10,0,0,25
-715,blue-striped,665,11,1,0,566
-716,zen,666,11,1,0,572
-717,summer,585,11,0,0,602
-718,autumn,585,11,0,0,602
-719,winter,585,11,0,0,602
-720,summer,586,11,0,0,603
-721,autumn,586,11,0,0,603
-722,winter,586,11,0,0,603
-723,pirouette,667,11,1,0,666
-724,douse,649,11,0,0,667
-725,shock,649,11,0,0,667
-726,burn,649,11,0,0,667
-727,chill,649,11,0,0,667
+id,form_identifier,pokemon_id,introduced_in_version_group_id,is_default,is_battle_only,order
+1,,1,1,1,0,1
+2,,2,1,1,0,2
+3,,3,1,1,0,3
+4,,4,1,1,0,4
+5,,5,1,1,0,5
+6,,6,1,1,0,6
+7,,7,1,1,0,7
+8,,8,1,1,0,8
+9,,9,1,1,0,9
+10,,10,1,1,0,10
+11,,11,1,1,0,11
+12,,12,1,1,0,12
+13,,13,1,1,0,13
+14,,14,1,1,0,14
+15,,15,1,1,0,15
+16,,16,1,1,0,16
+17,,17,1,1,0,17
+18,,18,1,1,0,18
+19,,19,1,1,0,19
+20,,20,1,1,0,20
+21,,21,1,1,0,21
+22,,22,1,1,0,22
+23,,23,1,1,0,23
+24,,24,1,1,0,24
+25,,25,1,1,0,26
+26,,26,1,1,0,27
+27,,27,1,1,0,28
+28,,28,1,1,0,29
+29,,29,1,1,0,30
+30,,30,1,1,0,31
+31,,31,1,1,0,32
+32,,32,1,1,0,33
+33,,33,1,1,0,34
+34,,34,1,1,0,35
+35,,35,1,1,0,37
+36,,36,1,1,0,38
+37,,37,1,1,0,39
+38,,38,1,1,0,40
+39,,39,1,1,0,42
+40,,40,1,1,0,43
+41,,41,1,1,0,44
+42,,42,1,1,0,45
+43,,43,1,1,0,47
+44,,44,1,1,0,48
+45,,45,1,1,0,49
+46,,46,1,1,0,51
+47,,47,1,1,0,52
+48,,48,1,1,0,53
+49,,49,1,1,0,54
+50,,50,1,1,0,55
+51,,51,1,1,0,56
+52,,52,1,1,0,57
+53,,53,1,1,0,58
+54,,54,1,1,0,59
+55,,55,1,1,0,60
+56,,56,1,1,0,61
+57,,57,1,1,0,62
+58,,58,1,1,0,63
+59,,59,1,1,0,64
+60,,60,1,1,0,65
+61,,61,1,1,0,66
+62,,62,1,1,0,67
+63,,63,1,1,0,69
+64,,64,1,1,0,70
+65,,65,1,1,0,71
+66,,66,1,1,0,72
+67,,67,1,1,0,73
+68,,68,1,1,0,74
+69,,69,1,1,0,75
+70,,70,1,1,0,76
+71,,71,1,1,0,77
+72,,72,1,1,0,78
+73,,73,1,1,0,79
+74,,74,1,1,0,80
+75,,75,1,1,0,81
+76,,76,1,1,0,82
+77,,77,1,1,0,83
+78,,78,1,1,0,84
+79,,79,1,1,0,85
+80,,80,1,1,0,86
+81,,81,1,1,0,88
+82,,82,1,1,0,89
+83,,83,1,1,0,91
+84,,84,1,1,0,92
+85,,85,1,1,0,93
+86,,86,1,1,0,94
+87,,87,1,1,0,95
+88,,88,1,1,0,96
+89,,89,1,1,0,97
+90,,90,1,1,0,98
+91,,91,1,1,0,99
+92,,92,1,1,0,100
+93,,93,1,1,0,101
+94,,94,1,1,0,102
+95,,95,1,1,0,103
+96,,96,1,1,0,105
+97,,97,1,1,0,106
+98,,98,1,1,0,107
+99,,99,1,1,0,108
+100,,100,1,1,0,109
+101,,101,1,1,0,110
+102,,102,1,1,0,111
+103,,103,1,1,0,112
+104,,104,1,1,0,113
+105,,105,1,1,0,114
+106,,106,1,1,0,116
+107,,107,1,1,0,117
+108,,108,1,1,0,119
+109,,109,1,1,0,121
+110,,110,1,1,0,122
+111,,111,1,1,0,123
+112,,112,1,1,0,124
+113,,113,1,1,0,127
+114,,114,1,1,0,129
+115,,115,1,1,0,131
+116,,116,1,1,0,132
+117,,117,1,1,0,133
+118,,118,1,1,0,135
+119,,119,1,1,0,136
+120,,120,1,1,0,137
+121,,121,1,1,0,138
+122,,122,1,1,0,140
+123,,123,1,1,0,141
+124,,124,1,1,0,144
+125,,125,1,1,0,146
+126,,126,1,1,0,149
+127,,127,1,1,0,151
+128,,128,1,1,0,152
+129,,129,1,1,0,153
+130,,130,1,1,0,154
+131,,131,1,1,0,155
+132,,132,1,1,0,156
+133,,133,1,1,0,157
+134,,134,1,1,0,158
+135,,135,1,1,0,159
+136,,136,1,1,0,160
+137,,137,1,1,0,165
+138,,138,1,1,0,168
+139,,139,1,1,0,169
+140,,140,1,1,0,170
+141,,141,1,1,0,171
+142,,142,1,1,0,172
+143,,143,1,1,0,174
+144,,144,1,1,0,175
+145,,145,1,1,0,176
+146,,146,1,1,0,177
+147,,147,1,1,0,178
+148,,148,1,1,0,179
+149,,149,1,1,0,180
+150,,150,1,1,0,181
+151,,151,1,1,0,182
+152,,152,3,1,0,183
+153,,153,3,1,0,184
+154,,154,3,1,0,185
+155,,155,3,1,0,186
+156,,156,3,1,0,187
+157,,157,3,1,0,188
+158,,158,3,1,0,189
+159,,159,3,1,0,190
+160,,160,3,1,0,191
+161,,161,3,1,0,192
+162,,162,3,1,0,193
+163,,163,3,1,0,194
+164,,164,3,1,0,195
+165,,165,3,1,0,196
+166,,166,3,1,0,197
+167,,167,3,1,0,198
+168,,168,3,1,0,199
+169,,169,3,1,0,46
+170,,170,3,1,0,200
+171,,171,3,1,0,201
+172,,172,3,1,0,25
+173,,173,3,1,0,36
+174,,174,3,1,0,41
+175,,175,3,1,0,202
+176,,176,3,1,0,203
+177,,177,3,1,0,205
+178,,178,3,1,0,206
+179,,179,3,1,0,207
+180,,180,3,1,0,208
+181,,181,3,1,0,209
+182,,182,3,1,0,50
+183,,183,3,1,0,211
+184,,184,3,1,0,212
+185,,185,3,1,0,214
+186,,186,3,1,0,68
+187,,187,3,1,0,215
+188,,188,3,1,0,216
+189,,189,3,1,0,217
+190,,190,3,1,0,218
+191,,191,3,1,0,220
+192,,192,3,1,0,221
+193,,193,3,1,0,222
+194,,194,3,1,0,224
+195,,195,3,1,0,225
+196,,196,3,1,0,161
+197,,197,3,1,0,162
+198,,198,3,1,0,226
+199,,199,3,1,0,87
+200,,200,3,1,0,228
+201,a,201,3,1,0,230
+202,,202,3,1,0,232
+203,,203,3,1,0,233
+204,,204,3,1,0,234
+205,,205,3,1,0,235
+206,,206,3,1,0,236
+207,,207,3,1,0,237
+208,,208,3,1,0,104
+209,,209,3,1,0,239
+210,,210,3,1,0,240
+211,,211,3,1,0,241
+212,,212,3,1,0,142
+213,,213,3,1,0,242
+214,,214,3,1,0,243
+215,,215,3,1,0,244
+216,,216,3,1,0,246
+217,,217,3,1,0,247
+218,,218,3,1,0,248
+219,,219,3,1,0,249
+220,,220,3,1,0,250
+221,,221,3,1,0,251
+222,,222,3,1,0,253
+223,,223,3,1,0,254
+224,,224,3,1,0,255
+225,,225,3,1,0,256
+226,,226,3,1,0,258
+227,,227,3,1,0,259
+228,,228,3,1,0,260
+229,,229,3,1,0,261
+230,,230,3,1,0,134
+231,,231,3,1,0,262
+232,,232,3,1,0,263
+233,,233,3,1,0,166
+234,,234,3,1,0,264
+235,,235,3,1,0,265
+236,,236,3,1,0,115
+237,,237,3,1,0,118
+238,,238,3,1,0,143
+239,,239,3,1,0,145
+240,,240,3,1,0,148
+241,,241,3,1,0,266
+242,,242,3,1,0,128
+243,,243,3,1,0,267
+244,,244,3,1,0,268
+245,,245,3,1,0,269
+246,,246,3,1,0,270
+247,,247,3,1,0,271
+248,,248,3,1,0,272
+249,,249,3,1,0,273
+250,,250,3,1,0,274
+251,,251,3,1,0,275
+252,,252,5,1,0,276
+253,,253,5,1,0,277
+254,,254,5,1,0,278
+255,,255,5,1,0,279
+256,,256,5,1,0,280
+257,,257,5,1,0,281
+258,,258,5,1,0,282
+259,,259,5,1,0,283
+260,,260,5,1,0,284
+261,,261,5,1,0,285
+262,,262,5,1,0,286
+263,,263,5,1,0,287
+264,,264,5,1,0,288
+265,,265,5,1,0,289
+266,,266,5,1,0,290
+267,,267,5,1,0,291
+268,,268,5,1,0,292
+269,,269,5,1,0,293
+270,,270,5,1,0,294
+271,,271,5,1,0,295
+272,,272,5,1,0,296
+273,,273,5,1,0,297
+274,,274,5,1,0,298
+275,,275,5,1,0,299
+276,,276,5,1,0,300
+277,,277,5,1,0,301
+278,,278,5,1,0,302
+279,,279,5,1,0,303
+280,,280,5,1,0,304
+281,,281,5,1,0,305
+282,,282,5,1,0,306
+283,,283,5,1,0,308
+284,,284,5,1,0,309
+285,,285,5,1,0,310
+286,,286,5,1,0,311
+287,,287,5,1,0,312
+288,,288,5,1,0,313
+289,,289,5,1,0,314
+290,,290,5,1,0,315
+291,,291,5,1,0,316
+292,,292,5,1,0,317
+293,,293,5,1,0,318
+294,,294,5,1,0,319
+295,,295,5,1,0,320
+296,,296,5,1,0,321
+297,,297,5,1,0,322
+298,,298,5,1,0,210
+299,,299,5,1,0,323
+300,,300,5,1,0,325
+301,,301,5,1,0,326
+302,,302,5,1,0,327
+303,,303,5,1,0,328
+304,,304,5,1,0,329
+305,,305,5,1,0,330
+306,,306,5,1,0,331
+307,,307,5,1,0,332
+308,,308,5,1,0,333
+309,,309,5,1,0,334
+310,,310,5,1,0,335
+311,,311,5,1,0,336
+312,,312,5,1,0,337
+313,,313,5,1,0,338
+314,,314,5,1,0,339
+315,,315,5,1,0,341
+316,,316,5,1,0,343
+317,,317,5,1,0,344
+318,,318,5,1,0,345
+319,,319,5,1,0,346
+320,,320,5,1,0,347
+321,,321,5,1,0,348
+322,,322,5,1,0,349
+323,,323,5,1,0,350
+324,,324,5,1,0,351
+325,,325,5,1,0,352
+326,,326,5,1,0,353
+327,,327,5,1,0,354
+328,,328,5,1,0,355
+329,,329,5,1,0,356
+330,,330,5,1,0,357
+331,,331,5,1,0,358
+332,,332,5,1,0,359
+333,,333,5,1,0,360
+334,,334,5,1,0,361
+335,,335,5,1,0,362
+336,,336,5,1,0,363
+337,,337,5,1,0,364
+338,,338,5,1,0,365
+339,,339,5,1,0,366
+340,,340,5,1,0,367
+341,,341,5,1,0,368
+342,,342,5,1,0,369
+343,,343,5,1,0,370
+344,,344,5,1,0,371
+345,,345,5,1,0,372
+346,,346,5,1,0,373
+347,,347,5,1,0,374
+348,,348,5,1,0,375
+349,,349,5,1,0,376
+350,,350,5,1,0,377
+351,,351,5,1,0,378
+352,,352,5,1,0,382
+353,,353,5,1,0,383
+354,,354,5,1,0,384
+355,,355,5,1,0,385
+356,,356,5,1,0,386
+357,,357,5,1,0,388
+358,,358,5,1,0,390
+359,,359,5,1,0,391
+360,,360,5,1,0,231
+361,,361,5,1,0,392
+362,,362,5,1,0,393
+363,,363,5,1,0,395
+364,,364,5,1,0,396
+365,,365,5,1,0,397
+366,,366,5,1,0,398
+367,,367,5,1,0,399
+368,,368,5,1,0,400
+369,,369,5,1,0,401
+370,,370,5,1,0,402
+371,,371,5,1,0,403
+372,,372,5,1,0,404
+373,,373,5,1,0,405
+374,,374,5,1,0,406
+375,,375,5,1,0,407
+376,,376,5,1,0,408
+377,,377,5,1,0,409
+378,,378,5,1,0,410
+379,,379,5,1,0,411
+380,,380,5,1,0,412
+381,,381,5,1,0,413
+382,,382,5,1,0,414
+383,,383,5,1,0,415
+384,,384,5,1,0,416
+385,,385,5,1,0,417
+386,normal,386,5,1,0,418
+387,,387,8,1,0,422
+388,,388,8,1,0,423
+389,,389,8,1,0,424
+390,,390,8,1,0,425
+391,,391,8,1,0,426
+392,,392,8,1,0,427
+393,,393,8,1,0,428
+394,,394,8,1,0,429
+395,,395,8,1,0,430
+396,,396,8,1,0,431
+397,,397,8,1,0,432
+398,,398,8,1,0,433
+399,,399,8,1,0,434
+400,,400,8,1,0,435
+401,,401,8,1,0,436
+402,,402,8,1,0,437
+403,,403,8,1,0,438
+404,,404,8,1,0,439
+405,,405,8,1,0,440
+406,,406,8,1,0,340
+407,,407,8,1,0,342
+408,,408,8,1,0,441
+409,,409,8,1,0,442
+410,,410,8,1,0,443
+411,,411,8,1,0,444
+412,plant,412,8,1,0,445
+413,plant,413,8,1,0,446
+414,,414,8,1,0,449
+415,,415,8,1,0,450
+416,,416,8,1,0,451
+417,,417,8,1,0,452
+418,,418,8,1,0,453
+419,,419,8,1,0,454
+420,,420,8,1,0,455
+421,overcast,421,8,1,1,456
+422,west,422,8,1,0,457
+423,west,423,8,1,0,458
+424,,424,8,1,0,219
+425,,425,8,1,0,459
+426,,426,8,1,0,460
+427,,427,8,1,0,461
+428,,428,8,1,0,462
+429,,429,8,1,0,229
+430,,430,8,1,0,227
+431,,431,8,1,0,463
+432,,432,8,1,0,464
+433,,433,8,1,0,389
+434,,434,8,1,0,465
+435,,435,8,1,0,466
+436,,436,8,1,0,467
+437,,437,8,1,0,468
+438,,438,8,1,0,213
+439,,439,8,1,0,139
+440,,440,8,1,0,126
+441,,441,8,1,0,469
+442,,442,8,1,0,470
+443,,443,8,1,0,471
+444,,444,8,1,0,472
+445,,445,8,1,0,473
+446,,446,8,1,0,173
+447,,447,8,1,0,474
+448,,448,8,1,0,475
+449,,449,8,1,0,476
+450,,450,8,1,0,477
+451,,451,8,1,0,478
+452,,452,8,1,0,479
+453,,453,8,1,0,480
+454,,454,8,1,0,481
+455,,455,8,1,0,482
+456,,456,8,1,0,483
+457,,457,8,1,0,484
+458,,458,8,1,0,257
+459,,459,8,1,0,485
+460,,460,8,1,0,486
+461,,461,8,1,0,245
+462,,462,8,1,0,90
+463,,463,8,1,0,120
+464,,464,8,1,0,125
+465,,465,8,1,0,130
+466,,466,8,1,0,147
+467,,467,8,1,0,150
+468,,468,8,1,0,204
+469,,469,8,1,0,223
+470,,470,8,1,0,163
+471,,471,8,1,0,164
+472,,472,8,1,0,238
+473,,473,8,1,0,252
+474,,474,8,1,0,167
+475,,475,8,1,0,307
+476,,476,8,1,0,324
+477,,477,8,1,0,387
+478,,478,8,1,0,394
+479,,479,8,1,0,487
+480,,480,8,1,0,493
+481,,481,8,1,0,494
+482,,482,8,1,0,495
+483,,483,8,1,0,496
+484,,484,8,1,0,497
+485,,485,8,1,0,498
+486,,486,8,1,0,499
+487,altered,487,8,1,0,500
+488,,488,8,1,0,502
+489,,489,8,1,0,503
+490,,490,8,1,0,504
+491,,491,8,1,0,505
+492,land,492,8,1,0,506
+493,normal,493,8,1,0,508
+494,,494,11,1,0,509
+495,,495,11,1,0,510
+496,,496,11,1,0,511
+497,,497,11,1,0,512
+498,,498,11,1,0,513
+499,,499,11,1,0,514
+500,,500,11,1,0,515
+501,,501,11,1,0,516
+502,,502,11,1,0,517
+503,,503,11,1,0,518
+504,,504,11,1,0,519
+505,,505,11,1,0,520
+506,,506,11,1,0,521
+507,,507,11,1,0,522
+508,,508,11,1,0,523
+509,,509,11,1,0,524
+510,,510,11,1,0,525
+511,,511,11,1,0,526
+512,,512,11,1,0,527
+513,,513,11,1,0,528
+514,,514,11,1,0,529
+515,,515,11,1,0,530
+516,,516,11,1,0,531
+517,,517,11,1,0,532
+518,,518,11,1,0,533
+519,,519,11,1,0,534
+520,,520,11,1,0,535
+521,,521,11,1,0,536
+522,,522,11,1,0,537
+523,,523,11,1,0,538
+524,,524,11,1,0,539
+525,,525,11,1,0,540
+526,,526,11,1,0,541
+527,,527,11,1,0,542
+528,,528,11,1,0,543
+529,,529,11,1,0,544
+530,,530,11,1,0,545
+531,,531,11,1,0,546
+532,,532,11,1,0,547
+533,,533,11,1,0,548
+534,,534,11,1,0,549
+535,,535,11,1,0,550
+536,,536,11,1,0,551
+537,,537,11,1,0,552
+538,,538,11,1,0,553
+539,,539,11,1,0,554
+540,,540,11,1,0,555
+541,,541,11,1,0,556
+542,,542,11,1,0,557
+543,,543,11,1,0,558
+544,,544,11,1,0,559
+545,,545,11,1,0,560
+546,,546,11,1,0,561
+547,,547,11,1,0,562
+548,,548,11,1,0,563
+549,,549,11,1,0,564
+550,red-striped,550,11,1,0,565
+551,,551,11,1,0,567
+552,,552,11,1,0,568
+553,,553,11,1,0,569
+554,,554,11,1,0,570
+555,standard,555,11,1,0,571
+556,,556,11,1,0,573
+557,,557,11,1,0,574
+558,,558,11,1,0,575
+559,,559,11,1,0,576
+560,,560,11,1,0,577
+561,,561,11,1,0,578
+562,,562,11,1,0,579
+563,,563,11,1,0,580
+564,,564,11,1,0,581
+565,,565,11,1,0,582
+566,,566,11,1,0,583
+567,,567,11,1,0,584
+568,,568,11,1,0,585
+569,,569,11,1,0,586
+570,,570,11,1,0,587
+571,,571,11,1,0,588
+572,,572,11,1,0,589
+573,,573,11,1,0,590
+574,,574,11,1,0,591
+575,,575,11,1,0,592
+576,,576,11,1,0,593
+577,,577,11,1,0,594
+578,,578,11,1,0,595
+579,,579,11,1,0,596
+580,,580,11,1,0,597
+581,,581,11,1,0,598
+582,,582,11,1,0,599
+583,,583,11,1,0,600
+584,,584,11,1,0,601
+585,spring,585,11,1,0,602
+586,spring,586,11,1,0,603
+587,,587,11,1,0,604
+588,,588,11,1,0,605
+589,,589,11,1,0,606
+590,,590,11,1,0,607
+591,,591,11,1,0,608
+592,,592,11,1,0,609
+593,,593,11,1,0,610
+594,,594,11,1,0,611
+595,,595,11,1,0,612
+596,,596,11,1,0,613
+597,,597,11,1,0,614
+598,,598,11,1,0,615
+599,,599,11,1,0,616
+600,,600,11,1,0,617
+601,,601,11,1,0,618
+602,,602,11,1,0,619
+603,,603,11,1,0,620
+604,,604,11,1,0,621
+605,,605,11,1,0,622
+606,,606,11,1,0,623
+607,,607,11,1,0,624
+608,,608,11,1,0,625
+609,,609,11,1,0,626
+610,,610,11,1,0,627
+611,,611,11,1,0,628
+612,,612,11,1,0,629
+613,,613,11,1,0,630
+614,,614,11,1,0,631
+615,,615,11,1,0,632
+616,,616,11,1,0,633
+617,,617,11,1,0,634
+618,,618,11,1,0,635
+619,,619,11,1,0,636
+620,,620,11,1,0,637
+621,,621,11,1,0,638
+622,,622,11,1,0,639
+623,,623,11,1,0,640
+624,,624,11,1,0,641
+625,,625,11,1,0,642
+626,,626,11,1,0,643
+627,,627,11,1,0,644
+628,,628,11,1,0,645
+629,,629,11,1,0,646
+630,,630,11,1,0,647
+631,,631,11,1,0,648
+632,,632,11,1,0,649
+633,,633,11,1,0,650
+634,,634,11,1,0,651
+635,,635,11,1,0,652
+636,,636,11,1,0,653
+637,,637,11,1,0,654
+638,,638,11,1,0,655
+639,,639,11,1,0,656
+640,,640,11,1,0,657
+641,,641,11,1,0,658
+642,,642,11,1,0,659
+643,,643,11,1,0,660
+644,,644,11,1,0,661
+645,,645,11,1,0,662
+646,,646,11,1,0,663
+647,,647,11,1,0,664
+648,aria,648,11,1,0,665
+649,,649,11,1,0,667
+650,b,201,3,0,0,230
+651,c,201,3,0,0,230
+652,d,201,3,0,0,230
+653,e,201,3,0,0,230
+654,f,201,3,0,0,230
+655,g,201,3,0,0,230
+656,h,201,3,0,0,230
+657,i,201,3,0,0,230
+658,j,201,3,0,0,230
+659,k,201,3,0,0,230
+660,l,201,3,0,0,230
+661,m,201,3,0,0,230
+662,n,201,3,0,0,230
+663,o,201,3,0,0,230
+664,p,201,3,0,0,230
+665,q,201,3,0,0,230
+666,r,201,3,0,0,230
+667,s,201,3,0,0,230
+668,t,201,3,0,0,230
+669,u,201,3,0,0,230
+670,v,201,3,0,0,230
+671,w,201,3,0,0,230
+672,x,201,3,0,0,230
+673,y,201,3,0,0,230
+674,z,201,3,0,0,230
+675,exclamation,201,5,0,0,230
+676,question,201,5,0,0,230
+677,sunny,662,5,1,1,379
+678,rainy,663,5,1,1,380
+679,snowy,664,5,1,1,381
+680,attack,650,7,1,0,419
+681,defense,651,7,1,0,420
+682,speed,652,6,1,0,421
+683,sandy,412,8,0,0,445
+684,trash,412,8,0,0,445
+685,sandy,653,8,1,0,447
+686,trash,654,8,1,0,448
+687,sunshine,421,8,0,1,456
+688,east,422,8,0,0,457
+689,east,423,8,0,0,458
+690,bug,493,8,0,0,508
+691,dark,493,8,0,0,508
+692,dragon,493,8,0,0,508
+693,electric,493,8,0,0,508
+694,fighting,493,8,0,0,508
+695,fire,493,8,0,0,508
+696,flying,493,8,0,0,508
+697,ghost,493,8,0,0,508
+698,grass,493,8,0,0,508
+699,ground,493,8,0,0,508
+700,ice,493,8,0,0,508
+701,poison,493,8,0,0,508
+702,psychic,493,8,0,0,508
+703,rock,493,8,0,0,508
+704,steel,493,8,0,0,508
+705,water,493,8,0,0,508
+706,unknown,493,8,0,0,508
+707,heat,657,9,1,0,488
+708,wash,658,9,1,0,489
+709,frost,659,9,1,0,490
+710,fan,660,9,1,0,491
+711,mow,661,9,1,0,492
+712,origin,656,9,1,0,501
+713,sky,655,9,1,0,507
+714,spiky-eared,172,10,0,0,25
+715,blue-striped,665,11,1,0,566
+716,zen,666,11,1,0,572
+717,summer,585,11,0,0,602
+718,autumn,585,11,0,0,602
+719,winter,585,11,0,0,602
+720,summer,586,11,0,0,603
+721,autumn,586,11,0,0,603
+722,winter,586,11,0,0,603
+723,pirouette,667,11,1,0,666
+724,douse,649,11,0,0,667
+725,shock,649,11,0,0,667
+726,burn,649,11,0,0,667
+727,chill,649,11,0,0,667
diff --git a/pokedex/data/csv/pokemon_species.csv b/pokedex/data/csv/pokemon_species.csv
index 6496019..7eede21 100644
--- a/pokedex/data/csv/pokemon_species.csv
+++ b/pokedex/data/csv/pokemon_species.csv
@@ -1,650 +1,650 @@
-id,identifier,generation_id,evolves_from_species_id,evolution_chain_id,color_id,shape_id,habitat_id,growth_rate_id,gender_rate,capture_rate,base_happiness,is_baby,hatch_counter,has_gender_differences,forms_switchable
-1,bulbasaur,1,,1,5,8,3,4,1,45,70,0,20,0,0
-2,ivysaur,1,1,1,5,8,3,4,1,45,70,0,20,0,0
-3,venusaur,1,2,1,5,8,3,4,1,45,70,0,20,1,0
-4,charmander,1,,2,8,6,4,4,1,45,70,0,20,0,0
-5,charmeleon,1,4,2,8,6,4,4,1,45,70,0,20,0,0
-6,charizard,1,5,2,8,6,4,4,1,45,70,0,20,0,0
-7,squirtle,1,,3,2,6,9,4,1,45,70,0,20,0,0
-8,wartortle,1,7,3,2,6,9,4,1,45,70,0,20,0,0
-9,blastoise,1,8,3,2,6,9,4,1,45,70,0,20,0,0
-10,caterpie,1,,4,5,2,2,2,4,255,70,0,15,0,0
-11,metapod,1,10,4,5,2,2,2,4,120,70,0,15,0,0
-12,butterfree,1,11,4,9,13,2,2,4,45,70,0,15,1,0
-13,weedle,1,,5,3,2,2,2,4,255,70,0,15,0,0
-14,kakuna,1,13,5,10,2,2,2,4,120,70,0,15,0,0
-15,beedrill,1,14,5,10,13,2,2,4,45,70,0,15,0,0
-16,pidgey,1,,6,3,9,2,4,4,255,70,0,15,0,0
-17,pidgeotto,1,16,6,3,9,2,4,4,120,70,0,15,0,0
-18,pidgeot,1,17,6,3,9,2,4,4,45,70,0,15,0,0
-19,rattata,1,,7,7,8,3,2,4,255,70,0,15,1,0
-20,raticate,1,19,7,3,8,3,2,4,127,70,0,15,1,0
-21,spearow,1,,8,3,9,6,2,4,255,70,0,15,0,0
-22,fearow,1,21,8,3,9,6,2,4,90,70,0,15,0,0
-23,ekans,1,,9,7,2,3,2,4,255,70,0,20,0,0
-24,arbok,1,23,9,7,2,3,2,4,90,70,0,20,0,0
-25,pikachu,1,172,10,10,8,2,2,4,190,70,0,10,1,0
-26,raichu,1,25,10,10,6,2,2,4,75,70,0,10,1,0
-27,sandshrew,1,,11,10,6,6,2,4,255,70,0,20,0,0
-28,sandslash,1,27,11,10,6,6,2,4,90,70,0,20,0,0
-29,nidoran-f,1,,12,2,8,3,4,8,235,70,0,20,0,0
-30,nidorina,1,29,12,2,8,3,4,8,120,70,0,20,0,0
-31,nidoqueen,1,30,12,2,6,3,4,8,45,70,0,20,0,0
-32,nidoran-m,1,,13,7,8,3,4,0,235,70,0,20,0,0
-33,nidorino,1,32,13,7,8,3,4,0,120,70,0,20,0,0
-34,nidoking,1,33,13,7,6,3,4,0,45,70,0,20,0,0
-35,clefairy,1,173,14,6,6,4,3,6,150,140,0,10,0,0
-36,clefable,1,35,14,6,6,4,3,6,25,140,0,10,0,0
-37,vulpix,1,,15,3,8,3,2,6,190,70,0,20,0,0
-38,ninetales,1,37,15,10,8,3,2,6,75,70,0,20,0,0
-39,jigglypuff,1,174,16,6,12,3,3,6,170,70,0,10,0,0
-40,wigglytuff,1,39,16,6,12,3,3,6,50,70,0,10,0,0
-41,zubat,1,,17,7,9,1,2,4,255,70,0,15,1,0
-42,golbat,1,41,17,7,9,1,2,4,90,70,0,15,1,0
-43,oddish,1,,18,2,7,3,4,4,255,70,0,20,0,0
-44,gloom,1,43,18,2,12,3,4,4,120,70,0,20,1,0
-45,vileplume,1,44,18,8,12,3,4,4,45,70,0,20,1,0
-46,paras,1,,19,8,14,2,2,4,190,70,0,20,0,0
-47,parasect,1,46,19,8,14,2,2,4,75,70,0,20,0,0
-48,venonat,1,,20,7,12,2,2,4,190,70,0,20,0,0
-49,venomoth,1,48,20,7,13,2,2,4,75,70,0,20,0,0
-50,diglett,1,,21,3,5,1,2,4,255,70,0,20,0,0
-51,dugtrio,1,50,21,3,11,1,2,4,50,70,0,20,0,0
-52,meowth,1,,22,10,8,8,2,4,255,70,0,20,0,0
-53,persian,1,52,22,10,8,8,2,4,90,70,0,20,0,0
-54,psyduck,1,,23,10,6,9,2,4,190,70,0,20,0,0
-55,golduck,1,54,23,2,6,9,2,4,75,70,0,20,0,0
-56,mankey,1,,24,3,6,4,2,4,190,70,0,20,0,0
-57,primeape,1,56,24,3,6,4,2,4,75,70,0,20,0,0
-58,growlithe,1,,25,3,8,3,1,2,190,70,0,20,0,0
-59,arcanine,1,58,25,3,8,3,1,2,75,70,0,20,0,0
-60,poliwag,1,,26,2,7,9,4,4,255,70,0,20,0,0
-61,poliwhirl,1,60,26,2,12,9,4,4,120,70,0,20,0,0
-62,poliwrath,1,61,26,2,12,9,4,4,45,70,0,20,0,0
-63,abra,1,,27,3,6,8,4,2,200,70,0,20,0,0
-64,kadabra,1,63,27,3,6,8,4,2,100,70,0,20,1,0
-65,alakazam,1,64,27,3,12,8,4,2,50,70,0,20,1,0
-66,machop,1,,28,4,6,4,4,2,180,70,0,20,0,0
-67,machoke,1,66,28,4,12,4,4,2,90,70,0,20,0,0
-68,machamp,1,67,28,4,12,4,4,2,45,70,0,20,0,0
-69,bellsprout,1,,29,5,12,2,4,4,255,70,0,20,0,0
-70,weepinbell,1,69,29,5,5,2,4,4,120,70,0,20,0,0
-71,victreebel,1,70,29,5,5,2,4,4,45,70,0,20,0,0
-72,tentacool,1,,30,2,10,7,1,4,190,70,0,20,0,0
-73,tentacruel,1,72,30,2,10,7,1,4,60,70,0,20,0,0
-74,geodude,1,,31,3,4,4,4,4,255,70,0,15,0,0
-75,graveler,1,74,31,3,12,4,4,4,120,70,0,15,0,0
-76,golem,1,75,31,3,12,4,4,4,45,70,0,15,0,0
-77,ponyta,1,,32,10,8,3,2,4,190,70,0,20,0,0
-78,rapidash,1,77,32,10,8,3,2,4,60,70,0,20,0,0
-79,slowpoke,1,,33,6,8,9,2,4,190,70,0,20,0,0
-80,slowbro,1,79,33,6,6,9,2,4,75,70,0,20,0,0
-81,magnemite,1,,34,4,4,6,2,-1,190,70,0,20,0,0
-82,magneton,1,81,34,4,11,6,2,-1,60,70,0,20,0,0
-83,farfetchd,1,,35,3,9,3,2,4,45,70,0,20,0,0
-84,doduo,1,,36,3,7,3,2,4,190,70,0,20,1,0
-85,dodrio,1,84,36,3,7,3,2,4,45,70,0,20,1,0
-86,seel,1,,37,9,3,7,2,4,190,70,0,20,0,0
-87,dewgong,1,86,37,9,3,7,2,4,75,70,0,20,0,0
-88,grimer,1,,38,7,4,8,2,4,190,70,0,20,0,0
-89,muk,1,88,38,7,4,8,2,4,75,70,0,20,0,0
-90,shellder,1,,39,7,1,7,1,4,190,70,0,20,0,0
-91,cloyster,1,90,39,7,1,7,1,4,60,70,0,20,0,0
-92,gastly,1,,40,7,1,1,4,4,190,70,0,20,0,0
-93,haunter,1,92,40,7,4,1,4,4,90,70,0,20,0,0
-94,gengar,1,93,40,7,6,1,4,4,45,70,0,20,0,0
-95,onix,1,,41,4,2,1,2,4,45,70,0,25,0,0
-96,drowzee,1,,42,10,12,3,2,4,190,70,0,20,0,0
-97,hypno,1,96,42,10,12,3,2,4,75,70,0,20,1,0
-98,krabby,1,,43,8,14,9,2,4,225,70,0,20,0,0
-99,kingler,1,98,43,8,14,9,2,4,60,70,0,20,0,0
-100,voltorb,1,,44,8,1,8,2,-1,190,70,0,20,0,0
-101,electrode,1,100,44,8,1,8,2,-1,60,70,0,20,0,0
-102,exeggcute,1,,45,6,11,2,1,4,90,70,0,20,0,0
-103,exeggutor,1,102,45,10,7,2,1,4,45,70,0,20,0,0
-104,cubone,1,,46,3,6,4,2,4,190,70,0,20,0,0
-105,marowak,1,104,46,3,6,4,2,4,75,70,0,20,0,0
-106,hitmonlee,1,236,47,3,12,8,2,0,45,70,0,25,0,0
-107,hitmonchan,1,236,47,3,12,8,2,0,45,70,0,25,0,0
-108,lickitung,1,,48,6,6,3,2,4,45,70,0,20,0,0
-109,koffing,1,,49,7,1,8,2,4,190,70,0,20,0,0
-110,weezing,1,109,49,7,11,8,2,4,60,70,0,20,0,0
-111,rhyhorn,1,,50,4,8,6,1,4,120,70,0,20,1,0
-112,rhydon,1,111,50,4,6,6,1,4,60,70,0,20,1,0
-113,chansey,1,440,51,6,6,8,3,8,30,140,0,40,0,0
-114,tangela,1,,52,2,7,3,2,4,45,70,0,20,0,0
-115,kangaskhan,1,,53,3,6,3,2,8,45,70,0,20,0,0
-116,horsea,1,,54,2,5,7,2,4,225,70,0,20,0,0
-117,seadra,1,116,54,2,5,7,2,4,75,70,0,20,0,0
-118,goldeen,1,,55,8,3,9,2,4,225,70,0,20,1,0
-119,seaking,1,118,55,8,3,9,2,4,60,70,0,20,1,0
-120,staryu,1,,56,3,5,7,1,-1,225,70,0,20,0,0
-121,starmie,1,120,56,7,5,7,1,-1,60,70,0,20,0,0
-122,mr-mime,1,439,57,6,12,8,2,4,45,70,0,25,0,0
-123,scyther,1,,58,5,13,3,2,4,45,70,0,25,1,0
-124,jynx,1,238,59,8,12,8,2,8,45,70,0,25,0,0
-125,electabuzz,1,239,60,10,6,3,2,2,45,70,0,25,0,0
-126,magmar,1,240,61,8,6,4,2,2,45,70,0,25,0,0
-127,pinsir,1,,62,3,12,2,1,4,45,70,0,25,0,0
-128,tauros,1,,63,3,8,3,1,0,45,70,0,20,0,0
-129,magikarp,1,,64,8,3,9,1,4,255,70,0,5,1,0
-130,gyarados,1,129,64,2,2,9,1,4,45,70,0,5,1,0
-131,lapras,1,,65,2,3,7,1,4,45,70,0,40,0,0
-132,ditto,1,,66,7,1,8,2,-1,35,70,0,20,0,0
-133,eevee,1,,67,3,8,8,2,1,45,70,0,35,0,0
-134,vaporeon,1,133,67,2,8,8,2,1,45,70,0,35,0,0
-135,jolteon,1,133,67,10,8,8,2,1,45,70,0,35,0,0
-136,flareon,1,133,67,8,8,8,2,1,45,70,0,35,0,0
-137,porygon,1,,68,6,7,8,2,-1,45,70,0,20,0,0
-138,omanyte,1,,69,2,10,7,2,1,45,70,0,30,0,0
-139,omastar,1,138,69,2,10,7,2,1,45,70,0,30,0,0
-140,kabuto,1,,70,3,14,7,2,1,45,70,0,30,0,0
-141,kabutops,1,140,70,3,6,7,2,1,45,70,0,30,0,0
-142,aerodactyl,1,,71,7,9,4,1,1,45,70,0,35,0,0
-143,snorlax,1,446,72,1,12,4,1,1,25,70,0,40,0,0
-144,articuno,1,,73,2,9,5,1,-1,3,35,0,80,0,0
-145,zapdos,1,,74,10,9,5,1,-1,3,35,0,80,0,0
-146,moltres,1,,75,10,9,5,1,-1,3,35,0,80,0,0
-147,dratini,1,,76,2,2,9,1,4,45,35,0,40,0,0
-148,dragonair,1,147,76,2,2,9,1,4,45,35,0,40,0,0
-149,dragonite,1,148,76,3,6,9,1,4,45,35,0,40,0,0
-150,mewtwo,1,,77,7,6,5,1,-1,3,0,0,120,0,0
-151,mew,1,,78,6,6,5,4,-1,45,100,0,120,0,0
-152,chikorita,2,,79,5,8,3,4,1,45,70,0,20,0,0
-153,bayleef,2,152,79,5,8,3,4,1,45,70,0,20,0,0
-154,meganium,2,153,79,5,8,3,4,1,45,70,0,20,1,0
-155,cyndaquil,2,,80,10,12,3,4,1,45,70,0,20,0,0
-156,quilava,2,155,80,10,8,3,4,1,45,70,0,20,0,0
-157,typhlosion,2,156,80,10,8,3,4,1,45,70,0,20,0,0
-158,totodile,2,,81,2,6,9,4,1,45,70,0,20,0,0
-159,croconaw,2,158,81,2,6,9,4,1,45,70,0,20,0,0
-160,feraligatr,2,159,81,2,6,9,4,1,45,70,0,20,0,0
-161,sentret,2,,82,3,8,3,2,4,255,70,0,15,0,0
-162,furret,2,161,82,3,8,3,2,4,90,70,0,15,0,0
-163,hoothoot,2,,83,3,9,2,2,4,255,70,0,15,0,0
-164,noctowl,2,163,83,3,9,2,2,4,90,70,0,15,0,0
-165,ledyba,2,,84,8,9,2,3,4,255,70,0,15,1,0
-166,ledian,2,165,84,8,9,2,3,4,90,70,0,15,1,0
-167,spinarak,2,,85,5,14,2,3,4,255,70,0,15,0,0
-168,ariados,2,167,85,8,14,2,3,4,90,70,0,15,0,0
-169,crobat,2,42,17,7,13,1,2,4,90,70,0,15,0,0
-170,chinchou,2,,86,2,3,7,1,4,190,70,0,20,0,0
-171,lanturn,2,170,86,2,3,7,1,4,75,70,0,20,0,0
-172,pichu,2,,10,10,8,2,2,4,190,70,1,10,0,False
-173,cleffa,2,,14,6,6,4,3,6,150,140,1,10,0,0
-174,igglybuff,2,,16,6,12,3,3,6,170,70,1,10,0,0
-175,togepi,2,,87,9,12,2,3,1,190,70,1,10,0,0
-176,togetic,2,175,87,9,12,2,3,1,75,70,0,10,0,0
-177,natu,2,,88,5,9,2,2,4,190,70,0,20,0,0
-178,xatu,2,177,88,5,9,2,2,4,75,70,0,20,1,0
-179,mareep,2,,89,9,8,3,4,4,235,70,0,20,0,0
-180,flaaffy,2,179,89,6,6,3,4,4,120,70,0,20,0,0
-181,ampharos,2,180,89,10,6,3,4,4,45,70,0,20,0,0
-182,bellossom,2,44,18,5,12,3,4,4,45,70,0,20,0,0
-183,marill,2,298,90,2,6,9,3,4,190,70,0,10,0,0
-184,azumarill,2,183,90,2,6,9,3,4,75,70,0,10,0,0
-185,sudowoodo,2,438,91,3,12,2,2,4,65,70,0,20,1,0
-186,politoed,2,61,26,5,12,9,4,4,45,70,0,20,1,0
-187,hoppip,2,,92,6,6,3,4,4,255,70,0,20,0,0
-188,skiploom,2,187,92,5,6,3,4,4,120,70,0,20,0,0
-189,jumpluff,2,188,92,2,6,3,4,4,45,70,0,20,0,0
-190,aipom,2,,93,7,6,2,3,4,45,70,0,20,1,0
-191,sunkern,2,,94,10,1,3,4,4,235,70,0,20,0,0
-192,sunflora,2,191,94,10,12,3,4,4,120,70,0,20,0,0
-193,yanma,2,,95,8,13,2,2,4,75,70,0,20,0,0
-194,wooper,2,,96,2,7,9,2,4,255,70,0,20,1,0
-195,quagsire,2,194,96,2,6,9,2,4,90,70,0,20,1,0
-196,espeon,2,133,67,7,8,8,2,1,45,70,0,35,0,0
-197,umbreon,2,133,67,1,8,8,2,1,45,35,0,35,0,0
-198,murkrow,2,,97,1,9,2,4,4,30,35,0,20,1,0
-199,slowking,2,79,33,6,6,9,2,4,70,70,0,20,0,0
-200,misdreavus,2,,98,4,1,1,3,4,45,35,0,25,0,0
-201,unown,2,,99,1,1,5,2,-1,225,70,0,40,0,False
-202,wobbuffet,2,360,100,2,5,1,2,4,45,70,0,20,1,0
-203,girafarig,2,,101,10,8,3,2,4,60,70,0,20,1,0
-204,pineco,2,,102,4,1,2,2,4,190,70,0,20,0,0
-205,forretress,2,204,102,7,1,2,2,4,75,70,0,20,0,0
-206,dunsparce,2,,103,10,2,1,2,4,190,70,0,20,0,0
-207,gligar,2,,104,7,9,4,4,4,60,70,0,20,1,0
-208,steelix,2,95,41,4,2,1,2,4,25,70,0,25,1,0
-209,snubbull,2,,105,6,12,8,3,6,190,70,0,20,0,0
-210,granbull,2,209,105,7,6,8,3,6,75,70,0,20,0,0
-211,qwilfish,2,,106,4,3,7,2,4,45,70,0,20,0,0
-212,scizor,2,123,58,8,13,3,2,4,25,70,0,25,1,0
-213,shuckle,2,,107,10,14,4,4,4,190,70,0,20,0,0
-214,heracross,2,,108,2,12,2,1,4,45,70,0,25,1,0
-215,sneasel,2,,109,1,6,2,4,4,60,35,0,20,1,0
-216,teddiursa,2,,110,3,6,4,2,4,120,70,0,20,0,0
-217,ursaring,2,216,110,3,6,4,2,4,60,70,0,20,1,0
-218,slugma,2,,111,8,2,4,2,4,190,70,0,20,0,0
-219,magcargo,2,218,111,8,2,4,2,4,75,70,0,20,0,0
-220,swinub,2,,112,3,8,1,1,4,225,70,0,20,0,0
-221,piloswine,2,220,112,3,8,1,1,4,75,70,0,20,1,0
-222,corsola,2,,113,6,14,7,3,6,60,70,0,20,0,0
-223,remoraid,2,,114,4,3,7,2,4,190,70,0,20,0,0
-224,octillery,2,223,114,8,10,7,2,4,75,70,0,20,1,0
-225,delibird,2,,115,8,9,4,3,4,45,70,0,20,0,0
-226,mantine,2,458,116,7,9,7,1,4,25,70,0,25,0,0
-227,skarmory,2,,117,4,9,6,1,4,25,70,0,25,0,0
-228,houndour,2,,118,1,8,6,1,4,120,35,0,20,0,0
-229,houndoom,2,228,118,1,8,6,1,4,45,35,0,20,1,0
-230,kingdra,2,117,54,2,5,7,2,4,45,70,0,20,0,0
-231,phanpy,2,,119,2,8,6,2,4,120,70,0,20,0,0
-232,donphan,2,231,119,4,8,6,2,4,60,70,0,20,1,0
-233,porygon2,2,137,68,8,7,8,2,-1,45,70,0,20,0,0
-234,stantler,2,,120,3,8,2,1,4,45,70,0,20,0,0
-235,smeargle,2,,121,9,6,8,3,4,45,70,0,20,0,0
-236,tyrogue,2,,47,7,12,8,2,0,75,70,1,25,0,0
-237,hitmontop,2,236,47,3,6,8,2,0,45,70,0,25,0,0
-238,smoochum,2,,59,6,12,8,2,8,45,70,1,25,0,0
-239,elekid,2,,60,10,12,3,2,2,45,70,1,25,0,0
-240,magby,2,,61,8,6,4,2,2,45,70,1,25,0,0
-241,miltank,2,,122,6,6,3,1,8,45,70,0,20,0,0
-242,blissey,2,113,51,6,12,8,3,8,30,140,0,40,0,0
-243,raikou,2,,123,10,8,3,1,-1,3,35,0,80,0,0
-244,entei,2,,124,3,8,3,1,-1,3,35,0,80,0,0
-245,suicune,2,,125,2,8,3,1,-1,3,35,0,80,0,0
-246,larvitar,2,,126,5,6,4,1,4,45,35,0,40,0,0
-247,pupitar,2,246,126,4,2,4,1,4,45,35,0,40,0,0
-248,tyranitar,2,247,126,5,6,4,1,4,45,35,0,40,0,0
-249,lugia,2,,127,9,9,5,1,-1,3,0,0,120,0,0
-250,ho-oh,2,,128,8,9,5,1,-1,3,0,0,120,0,0
-251,celebi,2,,129,5,12,2,4,-1,45,100,0,120,0,0
-252,treecko,3,,130,5,6,2,4,1,45,70,0,20,0,0
-253,grovyle,3,252,130,5,6,2,4,1,45,70,0,20,0,0
-254,sceptile,3,253,130,5,6,2,4,1,45,70,0,20,0,0
-255,torchic,3,,131,8,7,3,4,1,45,70,0,20,1,0
-256,combusken,3,255,131,8,6,3,4,1,45,70,0,20,1,0
-257,blaziken,3,256,131,8,6,3,4,1,45,70,0,20,1,0
-258,mudkip,3,,132,2,8,9,4,1,45,70,0,20,0,0
-259,marshtomp,3,258,132,2,6,9,4,1,45,70,0,20,0,0
-260,swampert,3,259,132,2,6,9,4,1,45,70,0,20,0,0
-261,poochyena,3,,133,4,8,3,2,4,255,70,0,15,0,0
-262,mightyena,3,261,133,4,8,3,2,4,127,70,0,15,0,0
-263,zigzagoon,3,,134,3,8,3,2,4,255,70,0,15,0,0
-264,linoone,3,263,134,9,8,3,2,4,90,70,0,15,0,0
-265,wurmple,3,,135,8,2,2,2,4,255,70,0,15,0,0
-266,silcoon,3,265,135,9,1,2,2,4,120,70,0,15,0,0
-267,beautifly,3,266,135,10,13,2,2,4,45,70,0,15,1,0
-268,cascoon,3,265,135,7,1,2,2,4,120,70,0,15,0,0
-269,dustox,3,268,135,5,13,2,2,4,45,70,0,15,1,0
-270,lotad,3,,136,5,14,9,4,4,255,70,0,15,0,0
-271,lombre,3,270,136,5,12,9,4,4,120,70,0,15,0,0
-272,ludicolo,3,271,136,5,12,9,4,4,45,70,0,15,1,0
-273,seedot,3,,137,3,7,2,4,4,255,70,0,15,0,0
-274,nuzleaf,3,273,137,3,12,2,4,4,120,70,0,15,1,0
-275,shiftry,3,274,137,3,12,2,4,4,45,70,0,15,1,0
-276,taillow,3,,138,2,9,3,4,4,200,70,0,15,0,0
-277,swellow,3,276,138,2,9,3,4,4,45,70,0,15,0,0
-278,wingull,3,,139,9,9,7,2,4,190,70,0,20,0,0
-279,pelipper,3,278,139,10,9,7,2,4,45,70,0,20,0,0
-280,ralts,3,,140,9,12,8,1,4,235,35,0,20,0,0
-281,kirlia,3,280,140,9,12,8,1,4,120,35,0,20,0,0
-282,gardevoir,3,281,140,9,12,8,1,4,45,35,0,20,0,0
-283,surskit,3,,141,2,14,9,2,4,200,70,0,15,0,0
-284,masquerain,3,283,141,2,13,9,2,4,75,70,0,15,0,0
-285,shroomish,3,,142,3,7,2,6,4,255,70,0,15,0,0
-286,breloom,3,285,142,5,6,2,6,4,90,70,0,15,0,0
-287,slakoth,3,,143,3,8,2,1,4,255,70,0,15,0,0
-288,vigoroth,3,287,143,9,6,2,1,4,120,70,0,15,0,0
-289,slaking,3,288,143,3,12,2,1,4,45,70,0,15,0,0
-290,nincada,3,,144,4,14,2,5,4,255,70,0,15,0,0
-291,ninjask,3,290,144,10,13,2,5,4,120,70,0,15,0,0
-292,shedinja,3,290,144,3,5,2,5,-1,45,70,0,15,0,0
-293,whismur,3,,145,6,6,1,4,4,190,70,0,20,0,0
-294,loudred,3,293,145,2,6,1,4,4,120,70,0,20,0,0
-295,exploud,3,294,145,2,6,1,4,4,45,70,0,20,0,0
-296,makuhita,3,,146,10,12,4,6,2,180,70,0,20,0,0
-297,hariyama,3,296,146,3,12,4,6,2,200,70,0,20,0,0
-298,azurill,3,,90,2,7,9,3,6,150,70,1,10,0,0
-299,nosepass,3,,147,4,12,1,2,4,255,70,0,20,0,0
-300,skitty,3,,148,6,8,2,3,6,255,70,0,15,0,0
-301,delcatty,3,300,148,7,8,2,3,6,60,70,0,15,0,0
-302,sableye,3,,149,7,12,1,4,4,45,35,0,25,0,0
-303,mawile,3,,150,1,12,1,3,4,45,70,0,20,0,0
-304,aron,3,,151,4,8,4,1,4,180,35,0,35,0,0
-305,lairon,3,304,151,4,8,4,1,4,90,35,0,35,0,0
-306,aggron,3,305,151,4,6,4,1,4,45,35,0,35,0,0
-307,meditite,3,,152,2,12,4,2,4,180,70,0,20,1,0
-308,medicham,3,307,152,8,12,4,2,4,90,70,0,20,1,0
-309,electrike,3,,153,5,8,3,1,4,120,70,0,20,0,0
-310,manectric,3,309,153,10,8,3,1,4,45,70,0,20,0,0
-311,plusle,3,,154,10,6,3,2,4,200,70,0,20,0,0
-312,minun,3,,155,10,6,3,2,4,200,70,0,20,0,0
-313,volbeat,3,,156,4,6,2,5,0,150,70,0,15,0,0
-314,illumise,3,,157,7,12,2,6,8,150,70,0,15,0,0
-315,roselia,3,406,158,5,12,3,4,4,150,70,0,20,1,0
-316,gulpin,3,,159,5,4,3,6,4,225,70,0,20,1,0
-317,swalot,3,316,159,7,4,3,6,4,75,70,0,20,1,0
-318,carvanha,3,,160,8,3,7,1,4,225,35,0,20,0,0
-319,sharpedo,3,318,160,2,3,7,1,4,60,35,0,20,0,0
-320,wailmer,3,,161,2,3,7,6,4,125,70,0,40,0,0
-321,wailord,3,320,161,2,3,7,6,4,60,70,0,40,0,0
-322,numel,3,,162,10,8,4,2,4,255,70,0,20,1,0
-323,camerupt,3,322,162,8,8,4,2,4,150,70,0,20,1,0
-324,torkoal,3,,163,3,8,4,2,4,90,70,0,20,0,0
-325,spoink,3,,164,1,4,4,3,4,255,70,0,20,0,0
-326,grumpig,3,325,164,7,6,4,3,4,60,70,0,20,0,0
-327,spinda,3,,165,3,6,4,3,4,255,70,0,15,0,0
-328,trapinch,3,,166,3,14,6,4,4,255,70,0,20,0,0
-329,vibrava,3,328,166,5,13,6,4,4,120,70,0,20,0,0
-330,flygon,3,329,166,5,9,6,4,4,45,70,0,20,0,0
-331,cacnea,3,,167,5,12,6,4,4,190,35,0,20,0,0
-332,cacturne,3,331,167,5,12,6,4,4,60,35,0,20,1,0
-333,swablu,3,,168,2,9,2,5,4,255,70,0,20,0,0
-334,altaria,3,333,168,2,9,2,5,4,45,70,0,20,0,0
-335,zangoose,3,,169,9,6,3,5,4,90,70,0,20,0,0
-336,seviper,3,,170,1,2,3,6,4,90,70,0,20,0,0
-337,lunatone,3,,171,10,1,1,3,-1,45,70,0,25,0,0
-338,solrock,3,,172,8,1,1,3,-1,45,70,0,25,0,0
-339,barboach,3,,173,4,3,9,2,4,190,70,0,20,0,0
-340,whiscash,3,339,173,2,3,9,2,4,75,70,0,20,0,0
-341,corphish,3,,174,8,14,9,6,4,205,70,0,15,0,0
-342,crawdaunt,3,341,174,8,14,9,6,4,155,70,0,15,0,0
-343,baltoy,3,,175,3,4,6,2,-1,255,70,0,20,0,0
-344,claydol,3,343,175,1,4,6,2,-1,90,70,0,20,0,0
-345,lileep,3,,176,7,5,7,5,1,45,70,0,30,0,0
-346,cradily,3,345,176,5,5,7,5,1,45,70,0,30,0,0
-347,anorith,3,,177,4,14,9,5,1,45,70,0,30,0,0
-348,armaldo,3,347,177,4,6,9,5,1,45,70,0,30,0,0
-349,feebas,3,,178,3,3,9,5,4,255,70,0,20,0,0
-350,milotic,3,349,178,6,2,9,5,4,60,70,0,20,1,0
-351,castform,3,,179,9,1,3,2,4,45,70,0,25,0,True
-352,kecleon,3,,180,5,6,2,4,4,200,70,0,20,0,0
-353,shuppet,3,,181,1,1,8,3,4,225,35,0,25,0,0
-354,banette,3,353,181,1,6,8,3,4,45,35,0,25,0,0
-355,duskull,3,,182,1,4,2,3,4,190,35,0,25,0,0
-356,dusclops,3,355,182,1,12,2,3,4,90,35,0,25,0,0
-357,tropius,3,,183,5,8,2,1,4,200,70,0,25,0,0
-358,chimecho,3,433,184,2,4,3,3,4,45,70,0,25,0,0
-359,absol,3,,185,9,8,4,4,4,30,35,0,25,0,0
-360,wynaut,3,,100,2,6,1,2,4,125,70,1,20,0,0
-361,snorunt,3,,186,4,12,1,2,4,190,70,0,20,0,0
-362,glalie,3,361,186,4,1,1,2,4,75,70,0,20,0,0
-363,spheal,3,,187,2,3,7,4,4,255,70,0,20,0,0
-364,sealeo,3,363,187,2,3,7,4,4,120,70,0,20,0,0
-365,walrein,3,364,187,2,8,7,4,4,45,70,0,20,0,0
-366,clamperl,3,,188,2,1,7,5,4,255,70,0,20,0,0
-367,huntail,3,366,188,2,2,7,5,4,60,70,0,20,0,0
-368,gorebyss,3,366,188,6,2,7,5,4,60,70,0,20,0,0
-369,relicanth,3,,189,4,3,7,1,1,25,70,0,40,1,0
-370,luvdisc,3,,190,6,3,7,3,6,225,70,0,20,0,0
-371,bagon,3,,191,2,12,6,1,4,45,35,0,40,0,0
-372,shelgon,3,371,191,9,8,6,1,4,45,35,0,40,0,0
-373,salamence,3,372,191,2,8,6,1,4,45,35,0,40,0,0
-374,beldum,3,,192,2,5,6,1,-1,3,35,0,40,0,0
-375,metang,3,374,192,2,4,6,1,-1,3,35,0,40,0,0
-376,metagross,3,375,192,2,11,6,1,-1,3,35,0,40,0,0
-377,regirock,3,,193,3,12,1,1,-1,3,35,0,80,0,0
-378,regice,3,,194,2,12,1,1,-1,3,35,0,80,0,0
-379,registeel,3,,195,4,12,1,1,-1,3,35,0,80,0,0
-380,latias,3,,196,8,9,9,1,8,3,90,0,120,0,0
-381,latios,3,,197,2,9,9,1,0,3,90,0,120,0,0
-382,kyogre,3,,198,2,3,7,1,-1,5,0,0,120,0,0
-383,groudon,3,,199,8,6,6,1,-1,5,0,0,120,0,0
-384,rayquaza,3,,200,5,2,5,1,-1,3,0,0,120,0,0
-385,jirachi,3,,201,10,12,4,1,-1,3,100,0,120,0,0
-386,deoxys,3,,202,8,12,5,1,-1,3,0,0,120,0,True
-387,turtwig,4,,203,5,8,,4,1,45,70,0,20,0,0
-388,grotle,4,387,203,5,8,,4,1,45,70,0,20,0,0
-389,torterra,4,388,203,5,8,,4,1,45,70,0,20,0,0
-390,chimchar,4,,204,3,6,,4,1,45,70,0,20,0,0
-391,monferno,4,390,204,3,6,,4,1,45,70,0,20,0,0
-392,infernape,4,391,204,3,6,,4,1,45,70,0,20,0,0
-393,piplup,4,,205,2,12,,4,1,45,70,0,20,0,0
-394,prinplup,4,393,205,2,6,,4,1,45,70,0,20,0,0
-395,empoleon,4,394,205,2,6,,4,1,45,70,0,20,0,0
-396,starly,4,,206,3,9,,4,4,255,70,0,15,1,0
-397,staravia,4,396,206,3,9,,4,4,120,70,0,15,1,0
-398,staraptor,4,397,206,3,9,,4,4,45,70,0,15,1,0
-399,bidoof,4,,207,3,8,,2,4,255,70,0,15,1,0
-400,bibarel,4,399,207,3,6,,2,4,127,70,0,15,1,0
-401,kricketot,4,,208,8,12,,4,4,255,70,0,15,1,0
-402,kricketune,4,401,208,8,13,,4,4,45,70,0,15,1,0
-403,shinx,4,,209,2,8,,4,4,235,70,0,20,1,0
-404,luxio,4,403,209,2,8,,4,4,120,100,0,20,1,0
-405,luxray,4,404,209,2,8,,4,4,45,70,0,20,1,0
-406,budew,4,,158,5,12,,4,4,255,70,1,20,0,0
-407,roserade,4,315,158,5,12,,4,4,75,70,0,20,1,0
-408,cranidos,4,,211,2,6,,5,1,45,70,0,30,0,0
-409,rampardos,4,408,211,2,6,,5,1,45,70,0,30,0,0
-410,shieldon,4,,212,4,8,,5,1,45,70,0,30,0,0
-411,bastiodon,4,410,212,4,8,,5,1,45,70,0,30,0,0
-412,burmy,4,,213,4,2,,2,4,120,70,0,15,0,True
-413,wormadam,4,412,213,4,2,,2,8,45,70,0,15,0,False
-414,mothim,4,412,213,10,13,,2,0,45,70,0,15,0,0
-415,combee,4,,214,10,11,,4,1,120,70,0,15,1,0
-416,vespiquen,4,415,214,10,9,,4,8,45,70,0,15,0,0
-417,pachirisu,4,,215,9,8,,2,4,200,100,0,10,1,0
-418,buizel,4,,216,3,8,,2,4,190,70,0,20,1,0
-419,floatzel,4,418,216,3,8,,2,4,75,70,0,20,1,0
-420,cherubi,4,,217,6,11,,2,4,190,70,0,20,0,0
-421,cherrim,4,420,217,6,7,,2,4,75,70,0,20,0,True
-422,shellos,4,,218,7,14,,2,4,190,70,0,20,0,False
-423,gastrodon,4,422,218,7,14,,2,4,75,70,0,20,0,False
-424,ambipom,4,190,93,7,6,,3,4,45,100,0,20,1,0
-425,drifloon,4,,219,7,4,,6,4,125,70,0,30,0,0
-426,drifblim,4,425,219,7,4,,6,4,60,70,0,30,0,0
-427,buneary,4,,220,3,6,,2,4,190,0,0,20,0,0
-428,lopunny,4,427,220,3,6,,2,4,60,140,0,20,0,0
-429,mismagius,4,200,98,7,1,,3,4,45,35,0,25,0,0
-430,honchkrow,4,198,97,1,9,,4,4,30,35,0,20,0,0
-431,glameow,4,,221,4,8,,3,6,190,70,0,20,0,0
-432,purugly,4,431,221,4,8,,3,6,75,70,0,20,0,0
-433,chingling,4,,184,10,12,,3,4,120,70,1,25,0,0
-434,stunky,4,,223,7,8,,2,4,225,70,0,20,0,0
-435,skuntank,4,434,223,7,8,,2,4,60,70,0,20,0,0
-436,bronzor,4,,224,5,1,,2,-1,255,70,0,20,0,0
-437,bronzong,4,436,224,5,4,,2,-1,90,70,0,20,0,0
-438,bonsly,4,,91,3,7,,2,4,255,70,1,20,0,0
-439,mime-jr,4,,57,6,12,,2,4,145,70,1,25,0,0
-440,happiny,4,,51,6,12,,3,8,130,140,1,40,0,0
-441,chatot,4,,228,1,9,,4,4,30,35,0,20,0,0
-442,spiritomb,4,,229,7,5,,2,4,100,70,0,30,0,0
-443,gible,4,,230,2,6,,1,4,45,70,0,40,1,0
-444,gabite,4,443,230,2,6,,1,4,45,70,0,40,1,0
-445,garchomp,4,444,230,2,6,,1,4,45,70,0,40,1,0
-446,munchlax,4,,72,1,12,,1,1,50,70,1,40,0,0
-447,riolu,4,,232,2,6,,4,1,75,70,1,25,0,0
-448,lucario,4,447,232,2,6,,4,1,45,70,0,25,0,0
-449,hippopotas,4,,233,3,8,,1,4,140,70,0,30,1,0
-450,hippowdon,4,449,233,3,8,,1,4,60,70,0,30,1,0
-451,skorupi,4,,234,7,14,,1,4,120,70,0,20,0,0
-452,drapion,4,451,234,7,14,,1,4,45,70,0,20,0,0
-453,croagunk,4,,235,2,12,,2,4,140,100,0,10,1,0
-454,toxicroak,4,453,235,2,12,,2,4,75,70,0,20,1,0
-455,carnivine,4,,236,5,10,,1,4,200,70,0,25,0,0
-456,finneon,4,,237,2,3,,5,4,190,70,0,20,1,0
-457,lumineon,4,456,237,2,3,,5,4,75,70,0,20,1,0
-458,mantyke,4,,116,2,9,,1,4,25,70,1,25,0,0
-459,snover,4,,239,9,6,,1,4,120,70,0,20,1,0
-460,abomasnow,4,459,239,9,6,,1,4,60,70,0,20,1,0
-461,weavile,4,215,109,1,6,,4,4,45,35,0,20,1,0
-462,magnezone,4,82,34,4,4,,2,-1,30,70,0,20,0,0
-463,lickilicky,4,108,48,6,12,,2,4,30,70,0,20,0,0
-464,rhyperior,4,112,50,4,6,,1,4,30,70,0,20,1,0
-465,tangrowth,4,114,52,2,12,,2,4,30,70,0,20,1,0
-466,electivire,4,125,60,10,6,,2,2,30,70,0,25,0,0
-467,magmortar,4,126,61,8,6,,2,2,30,70,0,25,0,0
-468,togekiss,4,176,87,9,9,,3,1,30,70,0,10,0,0
-469,yanmega,4,193,95,5,13,,2,4,30,70,0,20,0,0
-470,leafeon,4,133,67,5,8,,2,1,45,35,0,35,0,0
-471,glaceon,4,133,67,2,8,,2,1,45,35,0,35,0,0
-472,gliscor,4,207,104,7,9,,4,4,30,70,0,20,0,0
-473,mamoswine,4,221,112,3,8,,1,4,50,70,0,20,1,0
-474,porygon-z,4,233,68,8,4,,2,-1,30,70,0,20,0,0
-475,gallade,4,281,140,9,12,,1,0,45,35,0,20,0,0
-476,probopass,4,299,147,4,11,,2,4,60,70,0,20,0,0
-477,dusknoir,4,356,182,1,4,,3,4,45,35,0,25,0,0
-478,froslass,4,361,186,9,4,,2,8,75,70,0,20,0,0
-479,rotom,4,,240,8,1,,2,-1,45,70,0,20,0,True
-480,uxie,4,,241,10,6,,1,-1,3,140,0,80,0,0
-481,mesprit,4,,242,6,6,,1,-1,3,140,0,80,0,0
-482,azelf,4,,243,2,6,,1,-1,3,140,0,80,0,0
-483,dialga,4,,244,9,8,,1,-1,30,0,0,120,0,0
-484,palkia,4,,245,7,6,,1,-1,30,0,0,120,0,0
-485,heatran,4,,246,3,8,,1,4,3,100,0,10,0,0
-486,regigigas,4,,247,9,12,,1,-1,3,0,0,120,0,0
-487,giratina,4,,248,1,10,,1,-1,3,0,0,120,0,True
-488,cresselia,4,,249,10,14,,1,8,3,100,0,120,0,0
-489,phione,4,,250,2,4,,1,-1,30,70,0,40,0,0
-490,manaphy,4,,250,2,12,,1,-1,3,70,0,10,0,0
-491,darkrai,4,,252,1,12,,1,-1,3,0,0,120,0,0
-492,shaymin,4,,253,5,8,,4,-1,45,100,0,120,0,True
-493,arceus,4,,254,4,8,,1,-1,3,0,0,120,0,True
-494,victini,5,,255,10,12,,1,-1,3,100,0,120,0,0
-495,snivy,5,,256,5,6,,4,1,45,70,0,20,0,0
-496,servine,5,495,256,5,6,,4,1,45,70,0,20,0,0
-497,serperior,5,496,256,5,2,,4,1,45,70,0,20,0,0
-498,tepig,5,,257,8,8,,4,1,45,70,0,20,0,0
-499,pignite,5,498,257,8,6,,4,1,45,70,0,20,0,0
-500,emboar,5,499,257,8,6,,4,1,45,70,0,20,0,0
-501,oshawott,5,,258,2,6,,4,1,45,70,0,20,0,0
-502,dewott,5,501,258,2,6,,4,1,45,70,0,20,0,0
-503,samurott,5,502,258,2,8,,4,1,45,70,0,20,0,0
-504,patrat,5,,259,3,8,,2,4,255,70,0,15,0,0
-505,watchog,5,504,259,3,6,,2,4,255,70,0,20,0,0
-506,lillipup,5,,260,3,8,,4,4,255,70,0,15,0,0
-507,herdier,5,506,260,4,8,,4,4,120,70,0,15,0,0
-508,stoutland,5,507,260,4,8,,4,4,45,70,0,15,0,0
-509,purrloin,5,,261,7,8,,2,4,255,70,0,20,0,0
-510,liepard,5,509,261,7,8,,2,4,90,70,0,20,0,0
-511,pansage,5,,262,5,6,,2,1,190,70,0,20,0,0
-512,simisage,5,511,262,5,6,,2,1,75,70,0,20,0,0
-513,pansear,5,,263,8,6,,2,1,190,70,0,20,0,0
-514,simisear,5,513,263,8,6,,2,1,75,70,0,20,0,0
-515,panpour,5,,264,2,6,,2,1,190,70,0,20,0,0
-516,simipour,5,515,264,2,6,,2,1,75,70,0,20,0,0
-517,munna,5,,265,6,8,,3,4,190,70,0,10,0,0
-518,musharna,5,517,265,6,12,,3,4,75,70,0,10,0,0
-519,pidove,5,,266,4,9,,4,4,255,70,0,15,0,0
-520,tranquill,5,519,266,4,9,,4,4,120,70,0,15,0,0
-521,unfezant,5,520,266,4,9,,4,4,45,70,0,15,1,0
-522,blitzle,5,,267,1,8,,2,4,190,70,0,20,0,0
-523,zebstrika,5,522,267,1,8,,2,4,75,70,0,20,0,0
-524,roggenrola,5,,268,2,7,,4,4,255,70,0,15,0,0
-525,boldore,5,524,268,2,10,,4,4,120,70,0,15,0,0
-526,gigalith,5,525,268,2,10,,4,4,45,70,0,15,0,0
-527,woobat,5,,269,2,9,,2,4,190,70,0,15,0,0
-528,swoobat,5,527,269,2,9,,2,4,45,70,0,15,0,0
-529,drilbur,5,,270,4,6,,2,4,120,70,0,20,0,0
-530,excadrill,5,529,270,4,12,,2,4,60,70,0,20,0,0
-531,audino,5,,271,6,6,,3,4,255,70,0,20,0,0
-532,timburr,5,,272,4,12,,4,2,180,70,0,20,0,0
-533,gurdurr,5,532,272,4,12,,4,2,90,70,0,20,0,0
-534,conkeldurr,5,533,272,3,12,,4,2,45,70,0,20,0,0
-535,tympole,5,,273,2,3,,4,4,255,70,0,20,0,0
-536,palpitoad,5,535,273,2,6,,4,4,120,70,0,20,0,0
-537,seismitoad,5,536,273,2,12,,4,4,45,70,0,20,0,0
-538,throh,5,,274,8,12,,2,0,45,70,0,20,0,0
-539,sawk,5,,275,2,12,,2,0,45,70,0,20,0,0
-540,sewaddle,5,,276,10,14,,4,4,255,70,0,15,0,0
-541,swadloon,5,540,276,5,4,,4,4,120,70,0,15,0,0
-542,leavanny,5,541,276,10,12,,4,4,45,70,0,15,0,0
-543,venipede,5,,277,8,14,,4,4,255,70,0,15,0,0
-544,whirlipede,5,543,277,4,1,,4,4,120,70,0,15,0,0
-545,scolipede,5,544,277,8,14,,4,4,45,70,0,20,0,0
-546,cottonee,5,,278,5,1,,2,4,190,70,0,20,0,0
-547,whimsicott,5,546,278,5,12,,2,4,75,70,0,20,0,0
-548,petilil,5,,279,5,5,,2,8,190,70,0,20,0,0
-549,lilligant,5,548,279,5,5,,2,8,75,70,0,20,0,0
-550,basculin,5,,280,5,3,,2,4,25,70,0,40,0,False
-551,sandile,5,,281,3,8,,4,4,180,70,0,20,0,0
-552,krokorok,5,551,281,3,8,,4,4,90,70,0,20,0,0
-553,krookodile,5,552,281,8,6,,4,4,45,70,0,20,0,0
-554,darumaka,5,,282,8,12,,4,4,120,70,0,20,0,0
-555,darmanitan,5,554,282,8,8,,4,4,60,70,0,20,0,True
-556,maractus,5,,283,5,5,,2,4,255,70,0,20,0,0
-557,dwebble,5,,284,8,14,,2,4,190,70,0,20,0,0
-558,crustle,5,557,284,8,14,,2,4,75,70,0,20,0,0
-559,scraggy,5,,285,10,6,,2,4,180,35,0,15,0,0
-560,scrafty,5,559,285,8,6,,2,4,90,70,0,15,0,0
-561,sigilyph,5,,286,1,9,,2,4,45,70,0,20,0,0
-562,yamask,5,,287,1,4,,2,4,190,70,0,25,0,0
-563,cofagrigus,5,562,287,10,5,,2,4,90,70,0,25,0,0
-564,tirtouga,5,,288,2,8,,2,1,45,70,0,30,0,0
-565,carracosta,5,564,288,2,6,,2,1,45,70,0,30,0,0
-566,archen,5,,289,10,9,,2,1,45,70,0,30,0,0
-567,archeops,5,566,289,10,9,,2,1,45,70,0,30,0,0
-568,trubbish,5,,290,5,12,,2,4,190,70,0,20,0,0
-569,garbodor,5,568,290,5,12,,2,4,60,70,0,20,0,0
-570,zorua,5,,291,4,8,,4,1,75,70,0,25,0,0
-571,zoroark,5,570,291,4,6,,4,1,45,70,0,20,0,0
-572,minccino,5,,292,4,8,,3,6,255,70,0,15,0,0
-573,cinccino,5,572,292,4,8,,3,6,60,70,0,15,0,0
-574,gothita,5,,293,7,12,,4,6,200,70,0,20,0,0
-575,gothorita,5,574,293,7,12,,4,6,100,70,0,20,0,0
-576,gothitelle,5,575,293,7,12,,4,6,50,70,0,20,0,0
-577,solosis,5,,294,5,1,,4,4,200,70,0,20,0,0
-578,duosion,5,577,294,5,1,,4,4,100,70,0,20,0,0
-579,reuniclus,5,578,294,5,4,,4,4,50,70,0,20,0,0
-580,ducklett,5,,295,2,9,,2,4,190,70,0,20,0,0
-581,swanna,5,580,295,9,9,,2,4,45,70,0,20,0,0
-582,vanillite,5,,296,9,5,,1,4,255,70,0,20,0,0
-583,vanillish,5,582,296,9,5,,1,4,120,70,0,20,0,0
-584,vanilluxe,5,583,296,9,11,,1,4,45,70,0,20,0,0
-585,deerling,5,,297,10,8,,2,4,190,70,0,20,0,True
-586,sawsbuck,5,585,297,3,8,,2,4,75,70,0,20,0,True
-587,emolga,5,,298,9,8,,2,4,200,70,0,20,0,0
-588,karrablast,5,,299,2,12,,2,4,200,70,0,15,0,0
-589,escavalier,5,588,299,4,4,,2,4,75,70,0,15,0,0
-590,foongus,5,,300,9,4,,2,4,190,70,0,20,0,0
-591,amoonguss,5,590,300,9,4,,2,4,75,70,0,20,0,0
-592,frillish,5,,301,9,10,,2,4,190,70,0,20,1,0
-593,jellicent,5,592,301,9,10,,2,4,60,70,0,20,1,0
-594,alomomola,5,,302,6,3,,3,4,75,70,0,40,0,0
-595,joltik,5,,303,10,14,,2,4,190,70,0,20,0,0
-596,galvantula,5,595,303,10,14,,2,4,75,70,0,20,0,0
-597,ferroseed,5,,304,4,1,,2,4,255,70,0,20,0,0
-598,ferrothorn,5,597,304,4,10,,2,4,90,70,0,20,0,0
-599,klink,5,,305,4,11,,4,-1,130,70,0,20,0,0
-600,klang,5,599,305,4,11,,4,-1,60,70,0,20,0,0
-601,klinklang,5,600,305,4,11,,4,-1,30,70,0,20,0,0
-602,tynamo,5,,306,9,3,,1,4,190,70,0,20,0,0
-603,eelektrik,5,602,306,2,3,,1,4,60,70,0,20,0,0
-604,eelektross,5,603,306,2,3,,1,4,30,70,0,20,0,0
-605,elgyem,5,,307,2,6,,2,4,255,70,0,20,0,0
-606,beheeyem,5,605,307,3,12,,2,4,90,70,0,20,0,0
-607,litwick,5,,308,9,5,,4,4,190,70,0,20,0,0
-608,lampent,5,607,308,1,4,,4,4,90,70,0,20,0,0
-609,chandelure,5,608,308,1,4,,4,4,45,70,0,20,0,0
-610,axew,5,,309,5,6,,1,4,75,35,0,40,0,0
-611,fraxure,5,610,309,5,6,,1,4,60,35,0,40,0,0
-612,haxorus,5,611,309,10,6,,1,4,45,35,0,40,0,0
-613,cubchoo,5,,310,9,6,,2,4,120,70,0,20,0,0
-614,beartic,5,613,310,9,8,,2,4,60,70,0,20,0,0
-615,cryogonal,5,,311,2,1,,2,-1,25,70,0,25,0,0
-616,shelmet,5,,312,8,1,,2,4,200,70,0,15,0,0
-617,accelgor,5,616,312,8,4,,2,4,75,70,0,15,0,0
-618,stunfisk,5,,313,3,3,,2,4,75,70,0,20,0,0
-619,mienfoo,5,,314,10,6,,4,4,180,70,0,25,0,0
-620,mienshao,5,619,314,7,6,,4,4,45,70,0,25,0,0
-621,druddigon,5,,315,8,6,,2,4,45,70,0,30,0,0
-622,golett,5,,316,5,12,,2,-1,190,70,0,25,0,0
-623,golurk,5,622,316,5,12,,2,-1,90,70,0,25,0,0
-624,pawniard,5,,317,8,12,,2,4,120,35,0,20,0,0
-625,bisharp,5,624,317,8,12,,2,4,45,35,0,20,0,0
-626,bouffalant,5,,318,3,8,,2,4,45,70,0,20,0,0
-627,rufflet,5,,319,9,9,,1,0,190,70,0,20,0,0
-628,braviary,5,627,319,8,9,,1,0,60,70,0,20,0,0
-629,vullaby,5,,320,3,9,,1,8,190,35,0,20,0,0
-630,mandibuzz,5,629,320,3,9,,1,8,60,35,0,20,0,0
-631,heatmor,5,,321,8,6,,2,4,90,70,0,20,0,0
-632,durant,5,,322,4,14,,2,4,90,70,0,20,0,0
-633,deino,5,,323,2,8,,1,4,45,35,0,40,0,0
-634,zweilous,5,633,323,2,8,,1,4,45,35,0,40,0,0
-635,hydreigon,5,634,323,2,6,,1,4,45,35,0,40,0,0
-636,larvesta,5,,324,9,14,,1,4,45,70,0,40,0,0
-637,volcarona,5,636,324,9,13,,1,4,15,70,0,40,0,0
-638,cobalion,5,,325,2,8,,1,-1,3,35,0,80,0,0
-639,terrakion,5,,326,4,8,,1,-1,3,35,0,80,0,0
-640,virizion,5,,327,5,8,,1,-1,3,35,0,80,0,0
-641,tornadus,5,,328,5,4,,1,0,3,90,0,120,0,0
-642,thundurus,5,,329,2,4,,1,0,3,90,0,120,0,0
-643,reshiram,5,,330,9,9,,1,-1,45,0,0,120,0,0
-644,zekrom,5,,331,1,6,,1,-1,45,0,0,120,0,0
-645,landorus,5,,332,3,4,,1,0,3,90,0,120,0,0
-646,kyurem,5,,333,4,6,,1,-1,3,0,0,120,0,0
-647,keldeo,5,,334,10,8,,1,-1,3,35,0,80,0,0
-648,meloetta,5,,335,9,12,,1,-1,3,100,0,120,0,True
-649,genesect,5,,336,7,12,,1,-1,3,0,0,120,0,True
+id,identifier,generation_id,evolves_from_species_id,evolution_chain_id,color_id,shape_id,habitat_id,gender_rate,capture_rate,base_happiness,is_baby,hatch_counter,has_gender_differences,growth_rate_id,forms_switchable
+1,bulbasaur,1,,1,5,8,3,1,45,70,0,20,0,4,0
+2,ivysaur,1,1,1,5,8,3,1,45,70,0,20,0,4,0
+3,venusaur,1,2,1,5,8,3,1,45,70,0,20,1,4,0
+4,charmander,1,,2,8,6,4,1,45,70,0,20,0,4,0
+5,charmeleon,1,4,2,8,6,4,1,45,70,0,20,0,4,0
+6,charizard,1,5,2,8,6,4,1,45,70,0,20,0,4,0
+7,squirtle,1,,3,2,6,9,1,45,70,0,20,0,4,0
+8,wartortle,1,7,3,2,6,9,1,45,70,0,20,0,4,0
+9,blastoise,1,8,3,2,6,9,1,45,70,0,20,0,4,0
+10,caterpie,1,,4,5,2,2,4,255,70,0,15,0,2,0
+11,metapod,1,10,4,5,2,2,4,120,70,0,15,0,2,0
+12,butterfree,1,11,4,9,13,2,4,45,70,0,15,1,2,0
+13,weedle,1,,5,3,2,2,4,255,70,0,15,0,2,0
+14,kakuna,1,13,5,10,2,2,4,120,70,0,15,0,2,0
+15,beedrill,1,14,5,10,13,2,4,45,70,0,15,0,2,0
+16,pidgey,1,,6,3,9,2,4,255,70,0,15,0,4,0
+17,pidgeotto,1,16,6,3,9,2,4,120,70,0,15,0,4,0
+18,pidgeot,1,17,6,3,9,2,4,45,70,0,15,0,4,0
+19,rattata,1,,7,7,8,3,4,255,70,0,15,1,2,0
+20,raticate,1,19,7,3,8,3,4,127,70,0,15,1,2,0
+21,spearow,1,,8,3,9,6,4,255,70,0,15,0,2,0
+22,fearow,1,21,8,3,9,6,4,90,70,0,15,0,2,0
+23,ekans,1,,9,7,2,3,4,255,70,0,20,0,2,0
+24,arbok,1,23,9,7,2,3,4,90,70,0,20,0,2,0
+25,pikachu,1,172,10,10,8,2,4,190,70,0,10,1,2,0
+26,raichu,1,25,10,10,6,2,4,75,70,0,10,1,2,0
+27,sandshrew,1,,11,10,6,6,4,255,70,0,20,0,2,0
+28,sandslash,1,27,11,10,6,6,4,90,70,0,20,0,2,0
+29,nidoran-f,1,,12,2,8,3,8,235,70,0,20,0,4,0
+30,nidorina,1,29,12,2,8,3,8,120,70,0,20,0,4,0
+31,nidoqueen,1,30,12,2,6,3,8,45,70,0,20,0,4,0
+32,nidoran-m,1,,13,7,8,3,0,235,70,0,20,0,4,0
+33,nidorino,1,32,13,7,8,3,0,120,70,0,20,0,4,0
+34,nidoking,1,33,13,7,6,3,0,45,70,0,20,0,4,0
+35,clefairy,1,173,14,6,6,4,6,150,140,0,10,0,3,0
+36,clefable,1,35,14,6,6,4,6,25,140,0,10,0,3,0
+37,vulpix,1,,15,3,8,3,6,190,70,0,20,0,2,0
+38,ninetales,1,37,15,10,8,3,6,75,70,0,20,0,2,0
+39,jigglypuff,1,174,16,6,12,3,6,170,70,0,10,0,3,0
+40,wigglytuff,1,39,16,6,12,3,6,50,70,0,10,0,3,0
+41,zubat,1,,17,7,9,1,4,255,70,0,15,1,2,0
+42,golbat,1,41,17,7,9,1,4,90,70,0,15,1,2,0
+43,oddish,1,,18,2,7,3,4,255,70,0,20,0,4,0
+44,gloom,1,43,18,2,12,3,4,120,70,0,20,1,4,0
+45,vileplume,1,44,18,8,12,3,4,45,70,0,20,1,4,0
+46,paras,1,,19,8,14,2,4,190,70,0,20,0,2,0
+47,parasect,1,46,19,8,14,2,4,75,70,0,20,0,2,0
+48,venonat,1,,20,7,12,2,4,190,70,0,20,0,2,0
+49,venomoth,1,48,20,7,13,2,4,75,70,0,20,0,2,0
+50,diglett,1,,21,3,5,1,4,255,70,0,20,0,2,0
+51,dugtrio,1,50,21,3,11,1,4,50,70,0,20,0,2,0
+52,meowth,1,,22,10,8,8,4,255,70,0,20,0,2,0
+53,persian,1,52,22,10,8,8,4,90,70,0,20,0,2,0
+54,psyduck,1,,23,10,6,9,4,190,70,0,20,0,2,0
+55,golduck,1,54,23,2,6,9,4,75,70,0,20,0,2,0
+56,mankey,1,,24,3,6,4,4,190,70,0,20,0,2,0
+57,primeape,1,56,24,3,6,4,4,75,70,0,20,0,2,0
+58,growlithe,1,,25,3,8,3,2,190,70,0,20,0,1,0
+59,arcanine,1,58,25,3,8,3,2,75,70,0,20,0,1,0
+60,poliwag,1,,26,2,7,9,4,255,70,0,20,0,4,0
+61,poliwhirl,1,60,26,2,12,9,4,120,70,0,20,0,4,0
+62,poliwrath,1,61,26,2,12,9,4,45,70,0,20,0,4,0
+63,abra,1,,27,3,6,8,2,200,70,0,20,0,4,0
+64,kadabra,1,63,27,3,6,8,2,100,70,0,20,1,4,0
+65,alakazam,1,64,27,3,12,8,2,50,70,0,20,1,4,0
+66,machop,1,,28,4,6,4,2,180,70,0,20,0,4,0
+67,machoke,1,66,28,4,12,4,2,90,70,0,20,0,4,0
+68,machamp,1,67,28,4,12,4,2,45,70,0,20,0,4,0
+69,bellsprout,1,,29,5,12,2,4,255,70,0,20,0,4,0
+70,weepinbell,1,69,29,5,5,2,4,120,70,0,20,0,4,0
+71,victreebel,1,70,29,5,5,2,4,45,70,0,20,0,4,0
+72,tentacool,1,,30,2,10,7,4,190,70,0,20,0,1,0
+73,tentacruel,1,72,30,2,10,7,4,60,70,0,20,0,1,0
+74,geodude,1,,31,3,4,4,4,255,70,0,15,0,4,0
+75,graveler,1,74,31,3,12,4,4,120,70,0,15,0,4,0
+76,golem,1,75,31,3,12,4,4,45,70,0,15,0,4,0
+77,ponyta,1,,32,10,8,3,4,190,70,0,20,0,2,0
+78,rapidash,1,77,32,10,8,3,4,60,70,0,20,0,2,0
+79,slowpoke,1,,33,6,8,9,4,190,70,0,20,0,2,0
+80,slowbro,1,79,33,6,6,9,4,75,70,0,20,0,2,0
+81,magnemite,1,,34,4,4,6,-1,190,70,0,20,0,2,0
+82,magneton,1,81,34,4,11,6,-1,60,70,0,20,0,2,0
+83,farfetchd,1,,35,3,9,3,4,45,70,0,20,0,2,0
+84,doduo,1,,36,3,7,3,4,190,70,0,20,1,2,0
+85,dodrio,1,84,36,3,7,3,4,45,70,0,20,1,2,0
+86,seel,1,,37,9,3,7,4,190,70,0,20,0,2,0
+87,dewgong,1,86,37,9,3,7,4,75,70,0,20,0,2,0
+88,grimer,1,,38,7,4,8,4,190,70,0,20,0,2,0
+89,muk,1,88,38,7,4,8,4,75,70,0,20,0,2,0
+90,shellder,1,,39,7,1,7,4,190,70,0,20,0,1,0
+91,cloyster,1,90,39,7,1,7,4,60,70,0,20,0,1,0
+92,gastly,1,,40,7,1,1,4,190,70,0,20,0,4,0
+93,haunter,1,92,40,7,4,1,4,90,70,0,20,0,4,0
+94,gengar,1,93,40,7,6,1,4,45,70,0,20,0,4,0
+95,onix,1,,41,4,2,1,4,45,70,0,25,0,2,0
+96,drowzee,1,,42,10,12,3,4,190,70,0,20,0,2,0
+97,hypno,1,96,42,10,12,3,4,75,70,0,20,1,2,0
+98,krabby,1,,43,8,14,9,4,225,70,0,20,0,2,0
+99,kingler,1,98,43,8,14,9,4,60,70,0,20,0,2,0
+100,voltorb,1,,44,8,1,8,-1,190,70,0,20,0,2,0
+101,electrode,1,100,44,8,1,8,-1,60,70,0,20,0,2,0
+102,exeggcute,1,,45,6,11,2,4,90,70,0,20,0,1,0
+103,exeggutor,1,102,45,10,7,2,4,45,70,0,20,0,1,0
+104,cubone,1,,46,3,6,4,4,190,70,0,20,0,2,0
+105,marowak,1,104,46,3,6,4,4,75,70,0,20,0,2,0
+106,hitmonlee,1,236,47,3,12,8,0,45,70,0,25,0,2,0
+107,hitmonchan,1,236,47,3,12,8,0,45,70,0,25,0,2,0
+108,lickitung,1,,48,6,6,3,4,45,70,0,20,0,2,0
+109,koffing,1,,49,7,1,8,4,190,70,0,20,0,2,0
+110,weezing,1,109,49,7,11,8,4,60,70,0,20,0,2,0
+111,rhyhorn,1,,50,4,8,6,4,120,70,0,20,1,1,0
+112,rhydon,1,111,50,4,6,6,4,60,70,0,20,1,1,0
+113,chansey,1,440,51,6,6,8,8,30,140,0,40,0,3,0
+114,tangela,1,,52,2,7,3,4,45,70,0,20,0,2,0
+115,kangaskhan,1,,53,3,6,3,8,45,70,0,20,0,2,0
+116,horsea,1,,54,2,5,7,4,225,70,0,20,0,2,0
+117,seadra,1,116,54,2,5,7,4,75,70,0,20,0,2,0
+118,goldeen,1,,55,8,3,9,4,225,70,0,20,1,2,0
+119,seaking,1,118,55,8,3,9,4,60,70,0,20,1,2,0
+120,staryu,1,,56,3,5,7,-1,225,70,0,20,0,1,0
+121,starmie,1,120,56,7,5,7,-1,60,70,0,20,0,1,0
+122,mr-mime,1,439,57,6,12,8,4,45,70,0,25,0,2,0
+123,scyther,1,,58,5,13,3,4,45,70,0,25,1,2,0
+124,jynx,1,238,59,8,12,8,8,45,70,0,25,0,2,0
+125,electabuzz,1,239,60,10,6,3,2,45,70,0,25,0,2,0
+126,magmar,1,240,61,8,6,4,2,45,70,0,25,0,2,0
+127,pinsir,1,,62,3,12,2,4,45,70,0,25,0,1,0
+128,tauros,1,,63,3,8,3,0,45,70,0,20,0,1,0
+129,magikarp,1,,64,8,3,9,4,255,70,0,5,1,1,0
+130,gyarados,1,129,64,2,2,9,4,45,70,0,5,1,1,0
+131,lapras,1,,65,2,3,7,4,45,70,0,40,0,1,0
+132,ditto,1,,66,7,1,8,-1,35,70,0,20,0,2,0
+133,eevee,1,,67,3,8,8,1,45,70,0,35,0,2,0
+134,vaporeon,1,133,67,2,8,8,1,45,70,0,35,0,2,0
+135,jolteon,1,133,67,10,8,8,1,45,70,0,35,0,2,0
+136,flareon,1,133,67,8,8,8,1,45,70,0,35,0,2,0
+137,porygon,1,,68,6,7,8,-1,45,70,0,20,0,2,0
+138,omanyte,1,,69,2,10,7,1,45,70,0,30,0,2,0
+139,omastar,1,138,69,2,10,7,1,45,70,0,30,0,2,0
+140,kabuto,1,,70,3,14,7,1,45,70,0,30,0,2,0
+141,kabutops,1,140,70,3,6,7,1,45,70,0,30,0,2,0
+142,aerodactyl,1,,71,7,9,4,1,45,70,0,35,0,1,0
+143,snorlax,1,446,72,1,12,4,1,25,70,0,40,0,1,0
+144,articuno,1,,73,2,9,5,-1,3,35,0,80,0,1,0
+145,zapdos,1,,74,10,9,5,-1,3,35,0,80,0,1,0
+146,moltres,1,,75,10,9,5,-1,3,35,0,80,0,1,0
+147,dratini,1,,76,2,2,9,4,45,35,0,40,0,1,0
+148,dragonair,1,147,76,2,2,9,4,45,35,0,40,0,1,0
+149,dragonite,1,148,76,3,6,9,4,45,35,0,40,0,1,0
+150,mewtwo,1,,77,7,6,5,-1,3,0,0,120,0,1,0
+151,mew,1,,78,6,6,5,-1,45,100,0,120,0,4,0
+152,chikorita,2,,79,5,8,3,1,45,70,0,20,0,4,0
+153,bayleef,2,152,79,5,8,3,1,45,70,0,20,0,4,0
+154,meganium,2,153,79,5,8,3,1,45,70,0,20,1,4,0
+155,cyndaquil,2,,80,10,12,3,1,45,70,0,20,0,4,0
+156,quilava,2,155,80,10,8,3,1,45,70,0,20,0,4,0
+157,typhlosion,2,156,80,10,8,3,1,45,70,0,20,0,4,0
+158,totodile,2,,81,2,6,9,1,45,70,0,20,0,4,0
+159,croconaw,2,158,81,2,6,9,1,45,70,0,20,0,4,0
+160,feraligatr,2,159,81,2,6,9,1,45,70,0,20,0,4,0
+161,sentret,2,,82,3,8,3,4,255,70,0,15,0,2,0
+162,furret,2,161,82,3,8,3,4,90,70,0,15,0,2,0
+163,hoothoot,2,,83,3,9,2,4,255,70,0,15,0,2,0
+164,noctowl,2,163,83,3,9,2,4,90,70,0,15,0,2,0
+165,ledyba,2,,84,8,9,2,4,255,70,0,15,1,3,0
+166,ledian,2,165,84,8,9,2,4,90,70,0,15,1,3,0
+167,spinarak,2,,85,5,14,2,4,255,70,0,15,0,3,0
+168,ariados,2,167,85,8,14,2,4,90,70,0,15,0,3,0
+169,crobat,2,42,17,7,13,1,4,90,70,0,15,0,2,0
+170,chinchou,2,,86,2,3,7,4,190,70,0,20,0,1,0
+171,lanturn,2,170,86,2,3,7,4,75,70,0,20,0,1,0
+172,pichu,2,,10,10,8,2,4,190,70,1,10,0,2,0
+173,cleffa,2,,14,6,6,4,6,150,140,1,10,0,3,0
+174,igglybuff,2,,16,6,12,3,6,170,70,1,10,0,3,0
+175,togepi,2,,87,9,12,2,1,190,70,1,10,0,3,0
+176,togetic,2,175,87,9,12,2,1,75,70,0,10,0,3,0
+177,natu,2,,88,5,9,2,4,190,70,0,20,0,2,0
+178,xatu,2,177,88,5,9,2,4,75,70,0,20,1,2,0
+179,mareep,2,,89,9,8,3,4,235,70,0,20,0,4,0
+180,flaaffy,2,179,89,6,6,3,4,120,70,0,20,0,4,0
+181,ampharos,2,180,89,10,6,3,4,45,70,0,20,0,4,0
+182,bellossom,2,44,18,5,12,3,4,45,70,0,20,0,4,0
+183,marill,2,298,90,2,6,9,4,190,70,0,10,0,3,0
+184,azumarill,2,183,90,2,6,9,4,75,70,0,10,0,3,0
+185,sudowoodo,2,438,91,3,12,2,4,65,70,0,20,1,2,0
+186,politoed,2,61,26,5,12,9,4,45,70,0,20,1,4,0
+187,hoppip,2,,92,6,6,3,4,255,70,0,20,0,4,0
+188,skiploom,2,187,92,5,6,3,4,120,70,0,20,0,4,0
+189,jumpluff,2,188,92,2,6,3,4,45,70,0,20,0,4,0
+190,aipom,2,,93,7,6,2,4,45,70,0,20,1,3,0
+191,sunkern,2,,94,10,1,3,4,235,70,0,20,0,4,0
+192,sunflora,2,191,94,10,12,3,4,120,70,0,20,0,4,0
+193,yanma,2,,95,8,13,2,4,75,70,0,20,0,2,0
+194,wooper,2,,96,2,7,9,4,255,70,0,20,1,2,0
+195,quagsire,2,194,96,2,6,9,4,90,70,0,20,1,2,0
+196,espeon,2,133,67,7,8,8,1,45,70,0,35,0,2,0
+197,umbreon,2,133,67,1,8,8,1,45,35,0,35,0,2,0
+198,murkrow,2,,97,1,9,2,4,30,35,0,20,1,4,0
+199,slowking,2,79,33,6,6,9,4,70,70,0,20,0,2,0
+200,misdreavus,2,,98,4,1,1,4,45,35,0,25,0,3,0
+201,unown,2,,99,1,1,5,-1,225,70,0,40,0,2,0
+202,wobbuffet,2,360,100,2,5,1,4,45,70,0,20,1,2,0
+203,girafarig,2,,101,10,8,3,4,60,70,0,20,1,2,0
+204,pineco,2,,102,4,1,2,4,190,70,0,20,0,2,0
+205,forretress,2,204,102,7,1,2,4,75,70,0,20,0,2,0
+206,dunsparce,2,,103,10,2,1,4,190,70,0,20,0,2,0
+207,gligar,2,,104,7,9,4,4,60,70,0,20,1,4,0
+208,steelix,2,95,41,4,2,1,4,25,70,0,25,1,2,0
+209,snubbull,2,,105,6,12,8,6,190,70,0,20,0,3,0
+210,granbull,2,209,105,7,6,8,6,75,70,0,20,0,3,0
+211,qwilfish,2,,106,4,3,7,4,45,70,0,20,0,2,0
+212,scizor,2,123,58,8,13,3,4,25,70,0,25,1,2,0
+213,shuckle,2,,107,10,14,4,4,190,70,0,20,0,4,0
+214,heracross,2,,108,2,12,2,4,45,70,0,25,1,1,0
+215,sneasel,2,,109,1,6,2,4,60,35,0,20,1,4,0
+216,teddiursa,2,,110,3,6,4,4,120,70,0,20,0,2,0
+217,ursaring,2,216,110,3,6,4,4,60,70,0,20,1,2,0
+218,slugma,2,,111,8,2,4,4,190,70,0,20,0,2,0
+219,magcargo,2,218,111,8,2,4,4,75,70,0,20,0,2,0
+220,swinub,2,,112,3,8,1,4,225,70,0,20,0,1,0
+221,piloswine,2,220,112,3,8,1,4,75,70,0,20,1,1,0
+222,corsola,2,,113,6,14,7,6,60,70,0,20,0,3,0
+223,remoraid,2,,114,4,3,7,4,190,70,0,20,0,2,0
+224,octillery,2,223,114,8,10,7,4,75,70,0,20,1,2,0
+225,delibird,2,,115,8,9,4,4,45,70,0,20,0,3,0
+226,mantine,2,458,116,7,9,7,4,25,70,0,25,0,1,0
+227,skarmory,2,,117,4,9,6,4,25,70,0,25,0,1,0
+228,houndour,2,,118,1,8,6,4,120,35,0,20,0,1,0
+229,houndoom,2,228,118,1,8,6,4,45,35,0,20,1,1,0
+230,kingdra,2,117,54,2,5,7,4,45,70,0,20,0,2,0
+231,phanpy,2,,119,2,8,6,4,120,70,0,20,0,2,0
+232,donphan,2,231,119,4,8,6,4,60,70,0,20,1,2,0
+233,porygon2,2,137,68,8,7,8,-1,45,70,0,20,0,2,0
+234,stantler,2,,120,3,8,2,4,45,70,0,20,0,1,0
+235,smeargle,2,,121,9,6,8,4,45,70,0,20,0,3,0
+236,tyrogue,2,,47,7,12,8,0,75,70,1,25,0,2,0
+237,hitmontop,2,236,47,3,6,8,0,45,70,0,25,0,2,0
+238,smoochum,2,,59,6,12,8,8,45,70,1,25,0,2,0
+239,elekid,2,,60,10,12,3,2,45,70,1,25,0,2,0
+240,magby,2,,61,8,6,4,2,45,70,1,25,0,2,0
+241,miltank,2,,122,6,6,3,8,45,70,0,20,0,1,0
+242,blissey,2,113,51,6,12,8,8,30,140,0,40,0,3,0
+243,raikou,2,,123,10,8,3,-1,3,35,0,80,0,1,0
+244,entei,2,,124,3,8,3,-1,3,35,0,80,0,1,0
+245,suicune,2,,125,2,8,3,-1,3,35,0,80,0,1,0
+246,larvitar,2,,126,5,6,4,4,45,35,0,40,0,1,0
+247,pupitar,2,246,126,4,2,4,4,45,35,0,40,0,1,0
+248,tyranitar,2,247,126,5,6,4,4,45,35,0,40,0,1,0
+249,lugia,2,,127,9,9,5,-1,3,0,0,120,0,1,0
+250,ho-oh,2,,128,8,9,5,-1,3,0,0,120,0,1,0
+251,celebi,2,,129,5,12,2,-1,45,100,0,120,0,4,0
+252,treecko,3,,130,5,6,2,1,45,70,0,20,0,4,0
+253,grovyle,3,252,130,5,6,2,1,45,70,0,20,0,4,0
+254,sceptile,3,253,130,5,6,2,1,45,70,0,20,0,4,0
+255,torchic,3,,131,8,7,3,1,45,70,0,20,1,4,0
+256,combusken,3,255,131,8,6,3,1,45,70,0,20,1,4,0
+257,blaziken,3,256,131,8,6,3,1,45,70,0,20,1,4,0
+258,mudkip,3,,132,2,8,9,1,45,70,0,20,0,4,0
+259,marshtomp,3,258,132,2,6,9,1,45,70,0,20,0,4,0
+260,swampert,3,259,132,2,6,9,1,45,70,0,20,0,4,0
+261,poochyena,3,,133,4,8,3,4,255,70,0,15,0,2,0
+262,mightyena,3,261,133,4,8,3,4,127,70,0,15,0,2,0
+263,zigzagoon,3,,134,3,8,3,4,255,70,0,15,0,2,0
+264,linoone,3,263,134,9,8,3,4,90,70,0,15,0,2,0
+265,wurmple,3,,135,8,2,2,4,255,70,0,15,0,2,0
+266,silcoon,3,265,135,9,1,2,4,120,70,0,15,0,2,0
+267,beautifly,3,266,135,10,13,2,4,45,70,0,15,1,2,0
+268,cascoon,3,265,135,7,1,2,4,120,70,0,15,0,2,0
+269,dustox,3,268,135,5,13,2,4,45,70,0,15,1,2,0
+270,lotad,3,,136,5,14,9,4,255,70,0,15,0,4,0
+271,lombre,3,270,136,5,12,9,4,120,70,0,15,0,4,0
+272,ludicolo,3,271,136,5,12,9,4,45,70,0,15,1,4,0
+273,seedot,3,,137,3,7,2,4,255,70,0,15,0,4,0
+274,nuzleaf,3,273,137,3,12,2,4,120,70,0,15,1,4,0
+275,shiftry,3,274,137,3,12,2,4,45,70,0,15,1,4,0
+276,taillow,3,,138,2,9,3,4,200,70,0,15,0,4,0
+277,swellow,3,276,138,2,9,3,4,45,70,0,15,0,4,0
+278,wingull,3,,139,9,9,7,4,190,70,0,20,0,2,0
+279,pelipper,3,278,139,10,9,7,4,45,70,0,20,0,2,0
+280,ralts,3,,140,9,12,8,4,235,35,0,20,0,1,0
+281,kirlia,3,280,140,9,12,8,4,120,35,0,20,0,1,0
+282,gardevoir,3,281,140,9,12,8,4,45,35,0,20,0,1,0
+283,surskit,3,,141,2,14,9,4,200,70,0,15,0,2,0
+284,masquerain,3,283,141,2,13,9,4,75,70,0,15,0,2,0
+285,shroomish,3,,142,3,7,2,4,255,70,0,15,0,6,0
+286,breloom,3,285,142,5,6,2,4,90,70,0,15,0,6,0
+287,slakoth,3,,143,3,8,2,4,255,70,0,15,0,1,0
+288,vigoroth,3,287,143,9,6,2,4,120,70,0,15,0,1,0
+289,slaking,3,288,143,3,12,2,4,45,70,0,15,0,1,0
+290,nincada,3,,144,4,14,2,4,255,70,0,15,0,5,0
+291,ninjask,3,290,144,10,13,2,4,120,70,0,15,0,5,0
+292,shedinja,3,290,144,3,5,2,-1,45,70,0,15,0,5,0
+293,whismur,3,,145,6,6,1,4,190,70,0,20,0,4,0
+294,loudred,3,293,145,2,6,1,4,120,70,0,20,0,4,0
+295,exploud,3,294,145,2,6,1,4,45,70,0,20,0,4,0
+296,makuhita,3,,146,10,12,4,2,180,70,0,20,0,6,0
+297,hariyama,3,296,146,3,12,4,2,200,70,0,20,0,6,0
+298,azurill,3,,90,2,7,9,6,150,70,1,10,0,3,0
+299,nosepass,3,,147,4,12,1,4,255,70,0,20,0,2,0
+300,skitty,3,,148,6,8,2,6,255,70,0,15,0,3,0
+301,delcatty,3,300,148,7,8,2,6,60,70,0,15,0,3,0
+302,sableye,3,,149,7,12,1,4,45,35,0,25,0,4,0
+303,mawile,3,,150,1,12,1,4,45,70,0,20,0,3,0
+304,aron,3,,151,4,8,4,4,180,35,0,35,0,1,0
+305,lairon,3,304,151,4,8,4,4,90,35,0,35,0,1,0
+306,aggron,3,305,151,4,6,4,4,45,35,0,35,0,1,0
+307,meditite,3,,152,2,12,4,4,180,70,0,20,1,2,0
+308,medicham,3,307,152,8,12,4,4,90,70,0,20,1,2,0
+309,electrike,3,,153,5,8,3,4,120,70,0,20,0,1,0
+310,manectric,3,309,153,10,8,3,4,45,70,0,20,0,1,0
+311,plusle,3,,154,10,6,3,4,200,70,0,20,0,2,0
+312,minun,3,,155,10,6,3,4,200,70,0,20,0,2,0
+313,volbeat,3,,156,4,6,2,0,150,70,0,15,0,5,0
+314,illumise,3,,157,7,12,2,8,150,70,0,15,0,6,0
+315,roselia,3,406,158,5,12,3,4,150,70,0,20,1,4,0
+316,gulpin,3,,159,5,4,3,4,225,70,0,20,1,6,0
+317,swalot,3,316,159,7,4,3,4,75,70,0,20,1,6,0
+318,carvanha,3,,160,8,3,7,4,225,35,0,20,0,1,0
+319,sharpedo,3,318,160,2,3,7,4,60,35,0,20,0,1,0
+320,wailmer,3,,161,2,3,7,4,125,70,0,40,0,6,0
+321,wailord,3,320,161,2,3,7,4,60,70,0,40,0,6,0
+322,numel,3,,162,10,8,4,4,255,70,0,20,1,2,0
+323,camerupt,3,322,162,8,8,4,4,150,70,0,20,1,2,0
+324,torkoal,3,,163,3,8,4,4,90,70,0,20,0,2,0
+325,spoink,3,,164,1,4,4,4,255,70,0,20,0,3,0
+326,grumpig,3,325,164,7,6,4,4,60,70,0,20,0,3,0
+327,spinda,3,,165,3,6,4,4,255,70,0,15,0,3,0
+328,trapinch,3,,166,3,14,6,4,255,70,0,20,0,4,0
+329,vibrava,3,328,166,5,13,6,4,120,70,0,20,0,4,0
+330,flygon,3,329,166,5,9,6,4,45,70,0,20,0,4,0
+331,cacnea,3,,167,5,12,6,4,190,35,0,20,0,4,0
+332,cacturne,3,331,167,5,12,6,4,60,35,0,20,1,4,0
+333,swablu,3,,168,2,9,2,4,255,70,0,20,0,5,0
+334,altaria,3,333,168,2,9,2,4,45,70,0,20,0,5,0
+335,zangoose,3,,169,9,6,3,4,90,70,0,20,0,5,0
+336,seviper,3,,170,1,2,3,4,90,70,0,20,0,6,0
+337,lunatone,3,,171,10,1,1,-1,45,70,0,25,0,3,0
+338,solrock,3,,172,8,1,1,-1,45,70,0,25,0,3,0
+339,barboach,3,,173,4,3,9,4,190,70,0,20,0,2,0
+340,whiscash,3,339,173,2,3,9,4,75,70,0,20,0,2,0
+341,corphish,3,,174,8,14,9,4,205,70,0,15,0,6,0
+342,crawdaunt,3,341,174,8,14,9,4,155,70,0,15,0,6,0
+343,baltoy,3,,175,3,4,6,-1,255,70,0,20,0,2,0
+344,claydol,3,343,175,1,4,6,-1,90,70,0,20,0,2,0
+345,lileep,3,,176,7,5,7,1,45,70,0,30,0,5,0
+346,cradily,3,345,176,5,5,7,1,45,70,0,30,0,5,0
+347,anorith,3,,177,4,14,9,1,45,70,0,30,0,5,0
+348,armaldo,3,347,177,4,6,9,1,45,70,0,30,0,5,0
+349,feebas,3,,178,3,3,9,4,255,70,0,20,0,5,0
+350,milotic,3,349,178,6,2,9,4,60,70,0,20,1,5,0
+351,castform,3,,179,9,1,3,4,45,70,0,25,0,2,1
+352,kecleon,3,,180,5,6,2,4,200,70,0,20,0,4,0
+353,shuppet,3,,181,1,1,8,4,225,35,0,25,0,3,0
+354,banette,3,353,181,1,6,8,4,45,35,0,25,0,3,0
+355,duskull,3,,182,1,4,2,4,190,35,0,25,0,3,0
+356,dusclops,3,355,182,1,12,2,4,90,35,0,25,0,3,0
+357,tropius,3,,183,5,8,2,4,200,70,0,25,0,1,0
+358,chimecho,3,433,184,2,4,3,4,45,70,0,25,0,3,0
+359,absol,3,,185,9,8,4,4,30,35,0,25,0,4,0
+360,wynaut,3,,100,2,6,1,4,125,70,1,20,0,2,0
+361,snorunt,3,,186,4,12,1,4,190,70,0,20,0,2,0
+362,glalie,3,361,186,4,1,1,4,75,70,0,20,0,2,0
+363,spheal,3,,187,2,3,7,4,255,70,0,20,0,4,0
+364,sealeo,3,363,187,2,3,7,4,120,70,0,20,0,4,0
+365,walrein,3,364,187,2,8,7,4,45,70,0,20,0,4,0
+366,clamperl,3,,188,2,1,7,4,255,70,0,20,0,5,0
+367,huntail,3,366,188,2,2,7,4,60,70,0,20,0,5,0
+368,gorebyss,3,366,188,6,2,7,4,60,70,0,20,0,5,0
+369,relicanth,3,,189,4,3,7,1,25,70,0,40,1,1,0
+370,luvdisc,3,,190,6,3,7,6,225,70,0,20,0,3,0
+371,bagon,3,,191,2,12,6,4,45,35,0,40,0,1,0
+372,shelgon,3,371,191,9,8,6,4,45,35,0,40,0,1,0
+373,salamence,3,372,191,2,8,6,4,45,35,0,40,0,1,0
+374,beldum,3,,192,2,5,6,-1,3,35,0,40,0,1,0
+375,metang,3,374,192,2,4,6,-1,3,35,0,40,0,1,0
+376,metagross,3,375,192,2,11,6,-1,3,35,0,40,0,1,0
+377,regirock,3,,193,3,12,1,-1,3,35,0,80,0,1,0
+378,regice,3,,194,2,12,1,-1,3,35,0,80,0,1,0
+379,registeel,3,,195,4,12,1,-1,3,35,0,80,0,1,0
+380,latias,3,,196,8,9,9,8,3,90,0,120,0,1,0
+381,latios,3,,197,2,9,9,0,3,90,0,120,0,1,0
+382,kyogre,3,,198,2,3,7,-1,5,0,0,120,0,1,0
+383,groudon,3,,199,8,6,6,-1,5,0,0,120,0,1,0
+384,rayquaza,3,,200,5,2,5,-1,3,0,0,120,0,1,0
+385,jirachi,3,,201,10,12,4,-1,3,100,0,120,0,1,0
+386,deoxys,3,,202,8,12,5,-1,3,0,0,120,0,1,1
+387,turtwig,4,,203,5,8,,1,45,70,0,20,0,4,0
+388,grotle,4,387,203,5,8,,1,45,70,0,20,0,4,0
+389,torterra,4,388,203,5,8,,1,45,70,0,20,0,4,0
+390,chimchar,4,,204,3,6,,1,45,70,0,20,0,4,0
+391,monferno,4,390,204,3,6,,1,45,70,0,20,0,4,0
+392,infernape,4,391,204,3,6,,1,45,70,0,20,0,4,0
+393,piplup,4,,205,2,12,,1,45,70,0,20,0,4,0
+394,prinplup,4,393,205,2,6,,1,45,70,0,20,0,4,0
+395,empoleon,4,394,205,2,6,,1,45,70,0,20,0,4,0
+396,starly,4,,206,3,9,,4,255,70,0,15,1,4,0
+397,staravia,4,396,206,3,9,,4,120,70,0,15,1,4,0
+398,staraptor,4,397,206,3,9,,4,45,70,0,15,1,4,0
+399,bidoof,4,,207,3,8,,4,255,70,0,15,1,2,0
+400,bibarel,4,399,207,3,6,,4,127,70,0,15,1,2,0
+401,kricketot,4,,208,8,12,,4,255,70,0,15,1,4,0
+402,kricketune,4,401,208,8,13,,4,45,70,0,15,1,4,0
+403,shinx,4,,209,2,8,,4,235,70,0,20,1,4,0
+404,luxio,4,403,209,2,8,,4,120,100,0,20,1,4,0
+405,luxray,4,404,209,2,8,,4,45,70,0,20,1,4,0
+406,budew,4,,158,5,12,,4,255,70,1,20,0,4,0
+407,roserade,4,315,158,5,12,,4,75,70,0,20,1,4,0
+408,cranidos,4,,211,2,6,,1,45,70,0,30,0,5,0
+409,rampardos,4,408,211,2,6,,1,45,70,0,30,0,5,0
+410,shieldon,4,,212,4,8,,1,45,70,0,30,0,5,0
+411,bastiodon,4,410,212,4,8,,1,45,70,0,30,0,5,0
+412,burmy,4,,213,4,2,,4,120,70,0,15,0,2,1
+413,wormadam,4,412,213,4,2,,8,45,70,0,15,0,2,0
+414,mothim,4,412,213,10,13,,0,45,70,0,15,0,2,0
+415,combee,4,,214,10,11,,1,120,70,0,15,1,4,0
+416,vespiquen,4,415,214,10,9,,8,45,70,0,15,0,4,0
+417,pachirisu,4,,215,9,8,,4,200,100,0,10,1,2,0
+418,buizel,4,,216,3,8,,4,190,70,0,20,1,2,0
+419,floatzel,4,418,216,3,8,,4,75,70,0,20,1,2,0
+420,cherubi,4,,217,6,11,,4,190,70,0,20,0,2,0
+421,cherrim,4,420,217,6,7,,4,75,70,0,20,0,2,1
+422,shellos,4,,218,7,14,,4,190,70,0,20,0,2,0
+423,gastrodon,4,422,218,7,14,,4,75,70,0,20,0,2,0
+424,ambipom,4,190,93,7,6,,4,45,100,0,20,1,3,0
+425,drifloon,4,,219,7,4,,4,125,70,0,30,0,6,0
+426,drifblim,4,425,219,7,4,,4,60,70,0,30,0,6,0
+427,buneary,4,,220,3,6,,4,190,0,0,20,0,2,0
+428,lopunny,4,427,220,3,6,,4,60,140,0,20,0,2,0
+429,mismagius,4,200,98,7,1,,4,45,35,0,25,0,3,0
+430,honchkrow,4,198,97,1,9,,4,30,35,0,20,0,4,0
+431,glameow,4,,221,4,8,,6,190,70,0,20,0,3,0
+432,purugly,4,431,221,4,8,,6,75,70,0,20,0,3,0
+433,chingling,4,,184,10,12,,4,120,70,1,25,0,3,0
+434,stunky,4,,223,7,8,,4,225,70,0,20,0,2,0
+435,skuntank,4,434,223,7,8,,4,60,70,0,20,0,2,0
+436,bronzor,4,,224,5,1,,-1,255,70,0,20,0,2,0
+437,bronzong,4,436,224,5,4,,-1,90,70,0,20,0,2,0
+438,bonsly,4,,91,3,7,,4,255,70,1,20,0,2,0
+439,mime-jr,4,,57,6,12,,4,145,70,1,25,0,2,0
+440,happiny,4,,51,6,12,,8,130,140,1,40,0,3,0
+441,chatot,4,,228,1,9,,4,30,35,0,20,0,4,0
+442,spiritomb,4,,229,7,5,,4,100,70,0,30,0,2,0
+443,gible,4,,230,2,6,,4,45,70,0,40,1,1,0
+444,gabite,4,443,230,2,6,,4,45,70,0,40,1,1,0
+445,garchomp,4,444,230,2,6,,4,45,70,0,40,1,1,0
+446,munchlax,4,,72,1,12,,1,50,70,1,40,0,1,0
+447,riolu,4,,232,2,6,,1,75,70,1,25,0,4,0
+448,lucario,4,447,232,2,6,,1,45,70,0,25,0,4,0
+449,hippopotas,4,,233,3,8,,4,140,70,0,30,1,1,0
+450,hippowdon,4,449,233,3,8,,4,60,70,0,30,1,1,0
+451,skorupi,4,,234,7,14,,4,120,70,0,20,0,1,0
+452,drapion,4,451,234,7,14,,4,45,70,0,20,0,1,0
+453,croagunk,4,,235,2,12,,4,140,100,0,10,1,2,0
+454,toxicroak,4,453,235,2,12,,4,75,70,0,20,1,2,0
+455,carnivine,4,,236,5,10,,4,200,70,0,25,0,1,0
+456,finneon,4,,237,2,3,,4,190,70,0,20,1,5,0
+457,lumineon,4,456,237,2,3,,4,75,70,0,20,1,5,0
+458,mantyke,4,,116,2,9,,4,25,70,1,25,0,1,0
+459,snover,4,,239,9,6,,4,120,70,0,20,1,1,0
+460,abomasnow,4,459,239,9,6,,4,60,70,0,20,1,1,0
+461,weavile,4,215,109,1,6,,4,45,35,0,20,1,4,0
+462,magnezone,4,82,34,4,4,,-1,30,70,0,20,0,2,0
+463,lickilicky,4,108,48,6,12,,4,30,70,0,20,0,2,0
+464,rhyperior,4,112,50,4,6,,4,30,70,0,20,1,1,0
+465,tangrowth,4,114,52,2,12,,4,30,70,0,20,1,2,0
+466,electivire,4,125,60,10,6,,2,30,70,0,25,0,2,0
+467,magmortar,4,126,61,8,6,,2,30,70,0,25,0,2,0
+468,togekiss,4,176,87,9,9,,1,30,70,0,10,0,3,0
+469,yanmega,4,193,95,5,13,,4,30,70,0,20,0,2,0
+470,leafeon,4,133,67,5,8,,1,45,35,0,35,0,2,0
+471,glaceon,4,133,67,2,8,,1,45,35,0,35,0,2,0
+472,gliscor,4,207,104,7,9,,4,30,70,0,20,0,4,0
+473,mamoswine,4,221,112,3,8,,4,50,70,0,20,1,1,0
+474,porygon-z,4,233,68,8,4,,-1,30,70,0,20,0,2,0
+475,gallade,4,281,140,9,12,,0,45,35,0,20,0,1,0
+476,probopass,4,299,147,4,11,,4,60,70,0,20,0,2,0
+477,dusknoir,4,356,182,1,4,,4,45,35,0,25,0,3,0
+478,froslass,4,361,186,9,4,,8,75,70,0,20,0,2,0
+479,rotom,4,,240,8,1,,-1,45,70,0,20,0,2,1
+480,uxie,4,,241,10,6,,-1,3,140,0,80,0,1,0
+481,mesprit,4,,242,6,6,,-1,3,140,0,80,0,1,0
+482,azelf,4,,243,2,6,,-1,3,140,0,80,0,1,0
+483,dialga,4,,244,9,8,,-1,30,0,0,120,0,1,0
+484,palkia,4,,245,7,6,,-1,30,0,0,120,0,1,0
+485,heatran,4,,246,3,8,,4,3,100,0,10,0,1,0
+486,regigigas,4,,247,9,12,,-1,3,0,0,120,0,1,0
+487,giratina,4,,248,1,10,,-1,3,0,0,120,0,1,1
+488,cresselia,4,,249,10,14,,8,3,100,0,120,0,1,0
+489,phione,4,,250,2,4,,-1,30,70,0,40,0,1,0
+490,manaphy,4,,250,2,12,,-1,3,70,0,10,0,1,0
+491,darkrai,4,,252,1,12,,-1,3,0,0,120,0,1,0
+492,shaymin,4,,253,5,8,,-1,45,100,0,120,0,4,1
+493,arceus,4,,254,4,8,,-1,3,0,0,120,0,1,1
+494,victini,5,,255,10,12,,-1,3,100,0,120,0,1,0
+495,snivy,5,,256,5,6,,1,45,70,0,20,0,4,0
+496,servine,5,495,256,5,6,,1,45,70,0,20,0,4,0
+497,serperior,5,496,256,5,2,,1,45,70,0,20,0,4,0
+498,tepig,5,,257,8,8,,1,45,70,0,20,0,4,0
+499,pignite,5,498,257,8,6,,1,45,70,0,20,0,4,0
+500,emboar,5,499,257,8,6,,1,45,70,0,20,0,4,0
+501,oshawott,5,,258,2,6,,1,45,70,0,20,0,4,0
+502,dewott,5,501,258,2,6,,1,45,70,0,20,0,4,0
+503,samurott,5,502,258,2,8,,1,45,70,0,20,0,4,0
+504,patrat,5,,259,3,8,,4,255,70,0,15,0,2,0
+505,watchog,5,504,259,3,6,,4,255,70,0,20,0,2,0
+506,lillipup,5,,260,3,8,,4,255,70,0,15,0,4,0
+507,herdier,5,506,260,4,8,,4,120,70,0,15,0,4,0
+508,stoutland,5,507,260,4,8,,4,45,70,0,15,0,4,0
+509,purrloin,5,,261,7,8,,4,255,70,0,20,0,2,0
+510,liepard,5,509,261,7,8,,4,90,70,0,20,0,2,0
+511,pansage,5,,262,5,6,,1,190,70,0,20,0,2,0
+512,simisage,5,511,262,5,6,,1,75,70,0,20,0,2,0
+513,pansear,5,,263,8,6,,1,190,70,0,20,0,2,0
+514,simisear,5,513,263,8,6,,1,75,70,0,20,0,2,0
+515,panpour,5,,264,2,6,,1,190,70,0,20,0,2,0
+516,simipour,5,515,264,2,6,,1,75,70,0,20,0,2,0
+517,munna,5,,265,6,8,,4,190,70,0,10,0,3,0
+518,musharna,5,517,265,6,12,,4,75,70,0,10,0,3,0
+519,pidove,5,,266,4,9,,4,255,70,0,15,0,4,0
+520,tranquill,5,519,266,4,9,,4,120,70,0,15,0,4,0
+521,unfezant,5,520,266,4,9,,4,45,70,0,15,1,4,0
+522,blitzle,5,,267,1,8,,4,190,70,0,20,0,2,0
+523,zebstrika,5,522,267,1,8,,4,75,70,0,20,0,2,0
+524,roggenrola,5,,268,2,7,,4,255,70,0,15,0,4,0
+525,boldore,5,524,268,2,10,,4,120,70,0,15,0,4,0
+526,gigalith,5,525,268,2,10,,4,45,70,0,15,0,4,0
+527,woobat,5,,269,2,9,,4,190,70,0,15,0,2,0
+528,swoobat,5,527,269,2,9,,4,45,70,0,15,0,2,0
+529,drilbur,5,,270,4,6,,4,120,70,0,20,0,2,0
+530,excadrill,5,529,270,4,12,,4,60,70,0,20,0,2,0
+531,audino,5,,271,6,6,,4,255,70,0,20,0,3,0
+532,timburr,5,,272,4,12,,2,180,70,0,20,0,4,0
+533,gurdurr,5,532,272,4,12,,2,90,70,0,20,0,4,0
+534,conkeldurr,5,533,272,3,12,,2,45,70,0,20,0,4,0
+535,tympole,5,,273,2,3,,4,255,70,0,20,0,4,0
+536,palpitoad,5,535,273,2,6,,4,120,70,0,20,0,4,0
+537,seismitoad,5,536,273,2,12,,4,45,70,0,20,0,4,0
+538,throh,5,,274,8,12,,0,45,70,0,20,0,2,0
+539,sawk,5,,275,2,12,,0,45,70,0,20,0,2,0
+540,sewaddle,5,,276,10,14,,4,255,70,0,15,0,4,0
+541,swadloon,5,540,276,5,4,,4,120,70,0,15,0,4,0
+542,leavanny,5,541,276,10,12,,4,45,70,0,15,0,4,0
+543,venipede,5,,277,8,14,,4,255,70,0,15,0,4,0
+544,whirlipede,5,543,277,4,1,,4,120,70,0,15,0,4,0
+545,scolipede,5,544,277,8,14,,4,45,70,0,20,0,4,0
+546,cottonee,5,,278,5,1,,4,190,70,0,20,0,2,0
+547,whimsicott,5,546,278,5,12,,4,75,70,0,20,0,2,0
+548,petilil,5,,279,5,5,,8,190,70,0,20,0,2,0
+549,lilligant,5,548,279,5,5,,8,75,70,0,20,0,2,0
+550,basculin,5,,280,5,3,,4,25,70,0,40,0,2,0
+551,sandile,5,,281,3,8,,4,180,70,0,20,0,4,0
+552,krokorok,5,551,281,3,8,,4,90,70,0,20,0,4,0
+553,krookodile,5,552,281,8,6,,4,45,70,0,20,0,4,0
+554,darumaka,5,,282,8,12,,4,120,70,0,20,0,4,0
+555,darmanitan,5,554,282,8,8,,4,60,70,0,20,0,4,1
+556,maractus,5,,283,5,5,,4,255,70,0,20,0,2,0
+557,dwebble,5,,284,8,14,,4,190,70,0,20,0,2,0
+558,crustle,5,557,284,8,14,,4,75,70,0,20,0,2,0
+559,scraggy,5,,285,10,6,,4,180,35,0,15,0,2,0
+560,scrafty,5,559,285,8,6,,4,90,70,0,15,0,2,0
+561,sigilyph,5,,286,1,9,,4,45,70,0,20,0,2,0
+562,yamask,5,,287,1,4,,4,190,70,0,25,0,2,0
+563,cofagrigus,5,562,287,10,5,,4,90,70,0,25,0,2,0
+564,tirtouga,5,,288,2,8,,1,45,70,0,30,0,2,0
+565,carracosta,5,564,288,2,6,,1,45,70,0,30,0,2,0
+566,archen,5,,289,10,9,,1,45,70,0,30,0,2,0
+567,archeops,5,566,289,10,9,,1,45,70,0,30,0,2,0
+568,trubbish,5,,290,5,12,,4,190,70,0,20,0,2,0
+569,garbodor,5,568,290,5,12,,4,60,70,0,20,0,2,0
+570,zorua,5,,291,4,8,,1,75,70,0,25,0,4,0
+571,zoroark,5,570,291,4,6,,1,45,70,0,20,0,4,0
+572,minccino,5,,292,4,8,,6,255,70,0,15,0,3,0
+573,cinccino,5,572,292,4,8,,6,60,70,0,15,0,3,0
+574,gothita,5,,293,7,12,,6,200,70,0,20,0,4,0
+575,gothorita,5,574,293,7,12,,6,100,70,0,20,0,4,0
+576,gothitelle,5,575,293,7,12,,6,50,70,0,20,0,4,0
+577,solosis,5,,294,5,1,,4,200,70,0,20,0,4,0
+578,duosion,5,577,294,5,1,,4,100,70,0,20,0,4,0
+579,reuniclus,5,578,294,5,4,,4,50,70,0,20,0,4,0
+580,ducklett,5,,295,2,9,,4,190,70,0,20,0,2,0
+581,swanna,5,580,295,9,9,,4,45,70,0,20,0,2,0
+582,vanillite,5,,296,9,5,,4,255,70,0,20,0,1,0
+583,vanillish,5,582,296,9,5,,4,120,70,0,20,0,1,0
+584,vanilluxe,5,583,296,9,11,,4,45,70,0,20,0,1,0
+585,deerling,5,,297,10,8,,4,190,70,0,20,0,2,1
+586,sawsbuck,5,585,297,3,8,,4,75,70,0,20,0,2,1
+587,emolga,5,,298,9,8,,4,200,70,0,20,0,2,0
+588,karrablast,5,,299,2,12,,4,200,70,0,15,0,2,0
+589,escavalier,5,588,299,4,4,,4,75,70,0,15,0,2,0
+590,foongus,5,,300,9,4,,4,190,70,0,20,0,2,0
+591,amoonguss,5,590,300,9,4,,4,75,70,0,20,0,2,0
+592,frillish,5,,301,9,10,,4,190,70,0,20,1,2,0
+593,jellicent,5,592,301,9,10,,4,60,70,0,20,1,2,0
+594,alomomola,5,,302,6,3,,4,75,70,0,40,0,3,0
+595,joltik,5,,303,10,14,,4,190,70,0,20,0,2,0
+596,galvantula,5,595,303,10,14,,4,75,70,0,20,0,2,0
+597,ferroseed,5,,304,4,1,,4,255,70,0,20,0,2,0
+598,ferrothorn,5,597,304,4,10,,4,90,70,0,20,0,2,0
+599,klink,5,,305,4,11,,-1,130,70,0,20,0,4,0
+600,klang,5,599,305,4,11,,-1,60,70,0,20,0,4,0
+601,klinklang,5,600,305,4,11,,-1,30,70,0,20,0,4,0
+602,tynamo,5,,306,9,3,,4,190,70,0,20,0,1,0
+603,eelektrik,5,602,306,2,3,,4,60,70,0,20,0,1,0
+604,eelektross,5,603,306,2,3,,4,30,70,0,20,0,1,0
+605,elgyem,5,,307,2,6,,4,255,70,0,20,0,2,0
+606,beheeyem,5,605,307,3,12,,4,90,70,0,20,0,2,0
+607,litwick,5,,308,9,5,,4,190,70,0,20,0,4,0
+608,lampent,5,607,308,1,4,,4,90,70,0,20,0,4,0
+609,chandelure,5,608,308,1,4,,4,45,70,0,20,0,4,0
+610,axew,5,,309,5,6,,4,75,35,0,40,0,1,0
+611,fraxure,5,610,309,5,6,,4,60,35,0,40,0,1,0
+612,haxorus,5,611,309,10,6,,4,45,35,0,40,0,1,0
+613,cubchoo,5,,310,9,6,,4,120,70,0,20,0,2,0
+614,beartic,5,613,310,9,8,,4,60,70,0,20,0,2,0
+615,cryogonal,5,,311,2,1,,-1,25,70,0,25,0,2,0
+616,shelmet,5,,312,8,1,,4,200,70,0,15,0,2,0
+617,accelgor,5,616,312,8,4,,4,75,70,0,15,0,2,0
+618,stunfisk,5,,313,3,3,,4,75,70,0,20,0,2,0
+619,mienfoo,5,,314,10,6,,4,180,70,0,25,0,4,0
+620,mienshao,5,619,314,7,6,,4,45,70,0,25,0,4,0
+621,druddigon,5,,315,8,6,,4,45,70,0,30,0,2,0
+622,golett,5,,316,5,12,,-1,190,70,0,25,0,2,0
+623,golurk,5,622,316,5,12,,-1,90,70,0,25,0,2,0
+624,pawniard,5,,317,8,12,,4,120,35,0,20,0,2,0
+625,bisharp,5,624,317,8,12,,4,45,35,0,20,0,2,0
+626,bouffalant,5,,318,3,8,,4,45,70,0,20,0,2,0
+627,rufflet,5,,319,9,9,,0,190,70,0,20,0,1,0
+628,braviary,5,627,319,8,9,,0,60,70,0,20,0,1,0
+629,vullaby,5,,320,3,9,,8,190,35,0,20,0,1,0
+630,mandibuzz,5,629,320,3,9,,8,60,35,0,20,0,1,0
+631,heatmor,5,,321,8,6,,4,90,70,0,20,0,2,0
+632,durant,5,,322,4,14,,4,90,70,0,20,0,2,0
+633,deino,5,,323,2,8,,4,45,35,0,40,0,1,0
+634,zweilous,5,633,323,2,8,,4,45,35,0,40,0,1,0
+635,hydreigon,5,634,323,2,6,,4,45,35,0,40,0,1,0
+636,larvesta,5,,324,9,14,,4,45,70,0,40,0,1,0
+637,volcarona,5,636,324,9,13,,4,15,70,0,40,0,1,0
+638,cobalion,5,,325,2,8,,-1,3,35,0,80,0,1,0
+639,terrakion,5,,326,4,8,,-1,3,35,0,80,0,1,0
+640,virizion,5,,327,5,8,,-1,3,35,0,80,0,1,0
+641,tornadus,5,,328,5,4,,0,3,90,0,120,0,1,0
+642,thundurus,5,,329,2,4,,0,3,90,0,120,0,1,0
+643,reshiram,5,,330,9,9,,-1,45,0,0,120,0,1,0
+644,zekrom,5,,331,1,6,,-1,45,0,0,120,0,1,0
+645,landorus,5,,332,3,4,,0,3,90,0,120,0,1,0
+646,kyurem,5,,333,4,6,,-1,3,0,0,120,0,1,0
+647,keldeo,5,,334,10,8,,-1,3,35,0,80,0,1,0
+648,meloetta,5,,335,9,12,,-1,3,100,0,120,0,1,1
+649,genesect,5,,336,7,12,,-1,3,0,0,120,0,1,1

From 134f5a00ff83b179f2cf1c5529f4558c3f05d486 Mon Sep 17 00:00:00 2001
From: Petr Viktorin <encukou@gmail.com>
Date: Mon, 2 May 2011 17:53:47 +0300
Subject: [PATCH 12/16] Add Pichu's Volt Tackle and Rotom's form moves for B/W

---
 pokedex/data/csv/pokemon_moves.csv | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/pokedex/data/csv/pokemon_moves.csv b/pokedex/data/csv/pokemon_moves.csv
index 8d94a00..647272b 100644
--- a/pokedex/data/csv/pokemon_moves.csv
+++ b/pokedex/data/csv/pokemon_moves.csv
@@ -80935,6 +80935,7 @@ pokemon_id,version_group_id,move_id,pokemon_move_method_id,level,order
 172,11,268,2,0,
 172,11,273,2,0,
 172,11,321,2,0,
+172,11,344,6,0,
 172,11,374,4,0,
 172,11,381,2,0,
 172,11,417,1,18,
@@ -184220,6 +184221,7 @@ pokemon_id,version_group_id,move_id,pokemon_move_method_id,level,order
 479,10,466,1,29,
 479,10,466,3,0,
 479,11,84,1,1,4
+479,11,84,10,0,
 479,11,85,4,0,
 479,11,86,1,1,3
 479,11,86,4,0,
@@ -197613,6 +197615,7 @@ pokemon_id,version_group_id,move_id,pokemon_move_method_id,level,order
 657,11,268,1,57,
 657,11,271,1,1,1
 657,11,310,1,1,2
+657,11,315,10,0,
 657,11,351,1,22,
 657,11,435,1,64,
 657,11,451,4,0,
@@ -197727,6 +197730,7 @@ pokemon_id,version_group_id,move_id,pokemon_move_method_id,level,order
 658,10,451,4,0,
 658,10,466,1,29,
 658,10,466,3,0,
+658,11,56,10,0,
 658,11,84,1,1,4
 658,11,85,4,0,
 658,11,86,1,1,3
@@ -197873,6 +197877,7 @@ pokemon_id,version_group_id,move_id,pokemon_move_method_id,level,order
 659,10,451,4,0,
 659,10,466,1,29,
 659,10,466,3,0,
+659,11,59,10,0,
 659,11,84,1,1,4
 659,11,85,4,0,
 659,11,86,1,1,3
@@ -198052,6 +198057,7 @@ pokemon_id,version_group_id,move_id,pokemon_move_method_id,level,order
 660,11,271,1,1,1
 660,11,310,1,1,2
 660,11,351,1,22,
+660,11,403,10,0,
 660,11,435,1,64,
 660,11,451,4,0,
 660,11,466,1,29,
@@ -198199,6 +198205,7 @@ pokemon_id,version_group_id,move_id,pokemon_move_method_id,level,order
 661,11,310,1,1,2
 661,11,351,1,22,
 661,11,435,1,64,
+661,11,437,10,0,
 661,11,451,4,0,
 661,11,466,1,29,
 661,11,477,4,0,

From ab2baaa7596e720e31949493e4d477148a28e5c2 Mon Sep 17 00:00:00 2001
From: Petr Viktorin <encukou@gmail.com>
Date: Tue, 19 Apr 2011 14:44:47 +0300
Subject: [PATCH 13/16] Update media accessors wrt repo split

All accessors now take a `root` arg, the root of the media tree.
Alternatively `root` can be a custom MediaFile subclass, which should allow
neat tricks like:
- Checking some kind of manifest to prevent stat() calls
- Custom properties of the file objects (e.g. for HTML <img> tags)
- Downloading the media on demand

Tests assume media is at pokedex/data/media, skip otherwise.
---
 pokedex/tests/test_media.py | 70 ++++++++++++++++++++++------------
 pokedex/util/media.py       | 76 +++++++++++++++++++++++++------------
 2 files changed, 96 insertions(+), 50 deletions(-)

diff --git a/pokedex/tests/test_media.py b/pokedex/tests/test_media.py
index 81b5714..ddbc778 100644
--- a/pokedex/tests/test_media.py
+++ b/pokedex/tests/test_media.py
@@ -8,6 +8,7 @@ This, of course, takes a lot of time to run.
 
 import os
 import re
+from functools import wraps
 
 from nose.tools import *
 from nose.plugins.skip import SkipTest
@@ -22,47 +23,66 @@ basedir = pkg_resources.resource_filename('pokedex', 'data/media')
 
 path_re = re.compile('^[-a-z0-9./]*$')
 
+root = pkg_resources.resource_filename('pokedex', 'data/media')
+
+media_available = media.BaseMedia(root).available
+
+def if_available(func):
+    @wraps(func)
+    def if_available_wrapper(*args, **kwargs):
+        if not media_available:
+            raise SkipTest('Media not available at %s' % root)
+        else:
+            func(*args, **kwargs)
+    return if_available_wrapper
+
+@if_available
 def test_totodile():
     """Totodile's female sprite -- same as male"""
     totodile = session.query(tables.Pokemon).filter_by(identifier=u'totodile').one()
-    accessor = media.PokemonMedia(totodile)
+    accessor = media.PokemonMedia(root, totodile)
     assert accessor.sprite() == accessor.sprite(female=True)
 
+@if_available
 def test_chimecho():
     """Chimecho's Platinum female backsprite -- diffeent from male"""
     chimecho = session.query(tables.Pokemon).filter_by(identifier=u'chimecho').one()
-    accessor = media.PokemonMedia(chimecho)
+    accessor = media.PokemonMedia(root, chimecho)
     male = accessor.sprite('platinum', back=True, frame=2)
     female = accessor.sprite('platinum', back=True, female=True, frame=2)
     assert male != female
 
+@if_available
 def test_venonat():
     """Venonat's shiny Yellow sprite -- same as non-shiny"""
     venonat = session.query(tables.Pokemon).filter_by(identifier=u'venonat').one()
-    accessor = media.PokemonMedia(venonat)
+    accessor = media.PokemonMedia(root, venonat)
     assert accessor.sprite('yellow') == accessor.sprite('yellow', shiny=True)
 
+@if_available
 def test_arceus_icon():
     """Arceus fire-form icon -- same as base icon"""
     arceus = session.query(tables.Pokemon).filter_by(identifier=u'arceus').one()
-    accessor = media.PokemonMedia(arceus)
+    accessor = media.PokemonMedia(root, arceus)
     fire_arceus = [f for f in arceus.forms if f.identifier == 'fire'][0]
-    fire_accessor = media.PokemonFormMedia(fire_arceus)
+    fire_accessor = media.PokemonFormMedia(root, fire_arceus)
     assert accessor.icon() == fire_accessor.icon()
 
+@if_available
 @raises(ValueError)
 def test_strict_castform():
     """Castform rainy form overworld with strict -- unavailable"""
     castform = session.query(tables.Pokemon).filter_by(identifier=u'castform').first()
     rainy_castform = [f for f in castform.forms if f.identifier == 'rainy'][0]
-    rainy_castform = media.PokemonFormMedia(rainy_castform)
+    rainy_castform = media.PokemonFormMedia(root, rainy_castform)
     rainy_castform.overworld('up', strict=True)
 
+@if_available
 @raises(ValueError)
 def test_strict_exeggcute():
     """Exeggcutes's female backsprite, with strict -- unavailable"""
     exeggcute = session.query(tables.Pokemon).filter_by(identifier=u'exeggcute').one()
-    accessor = media.PokemonMedia(exeggcute)
+    accessor = media.PokemonMedia(root, exeggcute)
     accessor.sprite(female=True, strict=True)
 
 
@@ -73,6 +93,7 @@ def get_all_filenames():
     all_filenames = set()
 
     for dirpath, dirnames, filenames in os.walk(basedir):
+        dirnames[:] = [dirname for dirname in dirnames if dirname != '.git']
         for filename in filenames:
             path = os.path.join(dirpath, filename)
             assert path_re.match(path), path
@@ -101,6 +122,7 @@ def hit(filenames, method, *args, **kwargs):
         pass
     return True
 
+@if_available
 def check_get_everything():
     """
     For every the accessor method, loop over the Cartesian products of all
@@ -121,23 +143,23 @@ def check_get_everything():
     # Some small stuff first
 
     for damage_class in session.query(tables.MoveDamageClass).all():
-        assert hit(filenames, media.DamageClassMedia(damage_class).icon)
+        assert hit(filenames, media.DamageClassMedia(root, damage_class).icon)
 
     for habitat in session.query(tables.PokemonHabitat).all():
-        assert hit(filenames, media.HabitatMedia(habitat).icon)
+        assert hit(filenames, media.HabitatMedia(root, habitat).icon)
 
     for shape in session.query(tables.PokemonShape).all():
-        assert hit(filenames, media.ShapeMedia(shape).icon)
+        assert hit(filenames, media.ShapeMedia(root, shape).icon)
 
     for item_pocket in session.query(tables.ItemPocket).all():
-        assert hit(filenames, media.ItemPocketMedia(item_pocket).icon)
-        assert hit(filenames, media.ItemPocketMedia(item_pocket).icon, selected=True)
+        assert hit(filenames, media.ItemPocketMedia(root, item_pocket).icon)
+        assert hit(filenames, media.ItemPocketMedia(root, item_pocket).icon, selected=True)
 
     for contest_type in session.query(tables.ContestType).all():
-        assert hit(filenames, media.ContestTypeMedia(contest_type).icon)
+        assert hit(filenames, media.ContestTypeMedia(root, contest_type).icon)
 
     for elemental_type in session.query(tables.Type).all():
-        assert hit(filenames, media.TypeMedia(elemental_type).icon)
+        assert hit(filenames, media.TypeMedia(root, elemental_type).icon)
 
     # Items
     versions_for_items = [
@@ -146,7 +168,7 @@ def check_get_everything():
         ]
 
     for item in session.query(tables.Item).all():
-        accessor = media.ItemMedia(item)
+        accessor = media.ItemMedia(root, item)
         assert hit(filenames, accessor.berry_image) or not item.berry
         for rotation in (0, 90, 180, 270):
             assert hit(filenames, accessor.underground, rotation=rotation) or (
@@ -158,11 +180,11 @@ def check_get_everything():
 
     for color in 'red green blue pale prism'.split():
         for big in (True, False):
-            accessor = media.UndergroundSphereMedia(color=color, big=big)
+            accessor = media.UndergroundSphereMedia(root, color=color, big=big)
             assert hit(filenames, accessor.underground)
 
     for rock_type in 'i ii o o-big s t z'.split():
-        accessor = media.UndergroundRockMedia(rock_type)
+        accessor = media.UndergroundRockMedia(root, rock_type)
         for rotation in (0, 90, 180, 270):
             success = hit(filenames, accessor.underground, rotation=rotation)
             assert success or rotation
@@ -170,19 +192,17 @@ def check_get_everything():
     # Pokemon!
     accessors = []
 
-    accessors.append(media.UnknownPokemonMedia())
-    accessors.append(media.EggMedia())
+    accessors.append(media.UnknownPokemonMedia(root))
+    accessors.append(media.EggMedia(root))
     manaphy = session.query(tables.Pokemon).filter_by(identifier=u'manaphy').one()
-    accessors.append(media.EggMedia(manaphy))
-    accessors.append(media.SubstituteMedia())
-
-    print 'Loading pokemon'
+    accessors.append(media.EggMedia(root, manaphy))
+    accessors.append(media.SubstituteMedia(root))
 
     for form in session.query(tables.PokemonForm).filter(tables.PokemonForm.identifier != '').all():
-        accessors.append(media.PokemonFormMedia(form))
+        accessors.append(media.PokemonFormMedia(root, form))
 
     for pokemon in session.query(tables.Pokemon).all():
-        accessors.append(media.PokemonMedia(pokemon))
+        accessors.append(media.PokemonMedia(root, pokemon))
 
     for accessor in accessors:
         assert hit(filenames, accessor.footprint) or not accessor.form
diff --git a/pokedex/util/media.py b/pokedex/util/media.py
index 9faf19f..98964b3 100644
--- a/pokedex/util/media.py
+++ b/pokedex/util/media.py
@@ -1,7 +1,12 @@
 
 """Media accessors
 
-Most media accessor __init__s take an ORM object from the pokedex package.
+All media accessor __init__s take a `root` argument, which should be a path
+to the root of the media directory.
+Alternatively, `root` can be a custom MediaFile subclass.
+
+Most __init__s take an ORM object as a second argument.
+
 Their various methods take a number of arguments specifying exactly which
 file you want (such as the female sprite, backsprite, etc.).
 ValueError is raised when the specified file cannot be found.
@@ -26,22 +31,25 @@ All images are in the PNG format, except animations (GIF). All sounds are OGGs.
 """
 
 import os
-import pkg_resources
+from functools import partial
 
 class MediaFile(object):
     """Represents a file: picture, sound, etc.
 
     Attributes:
-    relative_path: Filesystem path relative to the media directory
+    path_elements: List of directory/file names that make up relative_path
+    relative_path: Filesystem path relative to the root
     path: Absolute path to the file
 
     exists: True if the file exists
 
+    media_available: false if no media is available at the given root.
+
     open(): Open the file
     """
-    def __init__(self, *path_elements):
+    def __init__(self, root, *path_elements):
         self.path_elements = path_elements
-        self._dexpath = '/'.join(('data', 'media') + path_elements)
+        self.root = root
 
     @property
     def relative_path(self):
@@ -49,7 +57,7 @@ class MediaFile(object):
 
     @property
     def path(self):
-        return pkg_resources.resource_filename('pokedex', self._dexpath)
+        return os.path.join(self.root, *self.path_elements)
 
     def open(self):
         """Open this file for reading, in the appropriate mode (i.e. binary)
@@ -58,7 +66,11 @@ class MediaFile(object):
 
     @property
     def exists(self):
-        return pkg_resources.resource_exists('pokedex', self._dexpath)
+        return os.path.exists(self.path)
+
+    @property
+    def media_available(self):
+        return os.path.isdir(self.root)
 
     def __eq__(self, other):
         return self.path == other.path
@@ -70,15 +82,25 @@ class MediaFile(object):
         return '<Pokedex file %s>' % self.relative_path
 
 class BaseMedia(object):
+    def __init__(self, root):
+        if isinstance(root, basestring):
+            self.file_class = partial(MediaFile, root)
+        else:
+            self.file_class = root
+
+    @property
+    def available(self):
+        return self.file_class().media_available
+
     def from_path_elements(self, path_elements, basename, extension,
             surely_exists=False):
         filename = basename + extension
         path_elements = [self.toplevel_dir] + path_elements + [filename]
-        mfile = MediaFile(*path_elements)
+        mfile = self.file_class(*path_elements)
         if surely_exists or mfile.exists:
             return mfile
         else:
-            raise ValueError('File %s not found' % mfile.relative_path)
+            raise ValueError('File %s not found' % mfile.path)
 
 class _BasePokemonMedia(BaseMedia):
     toplevel_dir = 'pokemon'
@@ -104,8 +126,8 @@ class _BasePokemonMedia(BaseMedia):
             'black-white': (5, set('back shiny female'.split())),
         }
 
-    def __init__(self, pokemon_id, form_postfix=None):
-        BaseMedia.__init__(self)
+    def __init__(self, root, pokemon_id, form_postfix=None):
+        BaseMedia.__init__(self, root)
         self.pokemon_id = str(pokemon_id)
         self.form_postfix = form_postfix
 
@@ -316,13 +338,13 @@ class _BasePokemonMedia(BaseMedia):
 class PokemonFormMedia(_BasePokemonMedia):
     """Media related to a Pokemon form
     """
-    def __init__(self, pokemon_form):
+    def __init__(self, root, pokemon_form):
         pokemon_id = pokemon_form.form_base_pokemon_id
         if pokemon_form.identifier:
             form_postfix = '-' + pokemon_form.identifier
         else:
             form_postfix = None
-        _BasePokemonMedia.__init__(self, pokemon_id, form_postfix)
+        _BasePokemonMedia.__init__(self, root, pokemon_id, form_postfix)
         self.form = pokemon_form
         pokemon = pokemon_form.form_base_pokemon
         self.has_gender_differences = pokemon.has_gender_differences
@@ -331,8 +353,8 @@ class PokemonFormMedia(_BasePokemonMedia):
 class PokemonMedia(_BasePokemonMedia):
     """Media related to a Pokemon
     """
-    def __init__(self, pokemon):
-        _BasePokemonMedia.__init__(self, pokemon.id)
+    def __init__(self, root, pokemon):
+        _BasePokemonMedia.__init__(self, root, pokemon.id)
         self.form = pokemon.default_form
         self.has_gender_differences = (pokemon.has_gender_differences)
         self.introduced_in = pokemon.generation_id
@@ -342,8 +364,8 @@ class UnknownPokemonMedia(_BasePokemonMedia):
 
     Note that not a lot of files are available for it.
     """
-    def __init__(self):
-        _BasePokemonMedia.__init__(self, '0')
+    def __init__(self, root):
+        _BasePokemonMedia.__init__(self, root, '0')
 
 class EggMedia(_BasePokemonMedia):
     """Media related to a pokemon egg
@@ -352,20 +374,20 @@ class EggMedia(_BasePokemonMedia):
 
     Give a Manaphy as `pokemon` to get the Manaphy egg.
     """
-    def __init__(self, pokemon=None):
+    def __init__(self, root, pokemon=None):
         if pokemon and pokemon.identifier == 'manaphy':
             postfix = '-manaphy'
         else:
             postfix = None
-        _BasePokemonMedia.__init__(self, 'egg', postfix)
+        _BasePokemonMedia.__init__(self, root, 'egg', postfix)
 
 class SubstituteMedia(_BasePokemonMedia):
     """Media related to the Substitute sprite
 
     Note that not a lot of files are available for Substitute.
     """
-    def __init__(self):
-        _BasePokemonMedia.__init__(self, 'substitute')
+    def __init__(self, root):
+        _BasePokemonMedia.__init__(self, root, 'substitute')
 
 class _BaseItemMedia(BaseMedia):
     toplevel_dir = 'items'
@@ -383,7 +405,8 @@ class _BaseItemMedia(BaseMedia):
 class ItemMedia(_BaseItemMedia):
     """Media related to an item
     """
-    def __init__(self, item):
+    def __init__(self, root, item):
+        _BaseItemMedia.__init__(self, root)
         self.item = item
         self.identifier = item.identifier
 
@@ -459,7 +482,8 @@ class UndergroundRockMedia(_BaseItemMedia):
 
     rock_type can be one of: i, ii, o, o-big, s, t, z
     """
-    def __init__(self, rock_type):
+    def __init__(self, root, rock_type):
+        _BaseItemMedia.__init__(self, root)
         self.identifier = 'rock-%s' % rock_type
 
 class UndergroundSphereMedia(_BaseItemMedia):
@@ -467,13 +491,15 @@ class UndergroundSphereMedia(_BaseItemMedia):
 
     color can be one of: red, blue, green, pale, prism
     """
-    def __init__(self, color, big=False):
+    def __init__(self, root, color, big=False):
+        _BaseItemMedia.__init__(self, root)
         self.identifier = '%s-sphere' % color
         if big:
             self.identifier += '-big'
 
 class _SimpleIconMedia(BaseMedia):
-    def __init__(self, thing):
+    def __init__(self, root, thing):
+        BaseMedia.__init__(self, root)
         self.identifier = thing.identifier
 
     def icon(self):

From c71045771792ac066a3958cba6ad0d7a9586e43a Mon Sep 17 00:00:00 2001
From: Petr Viktorin <encukou@gmail.com>
Date: Sat, 30 Apr 2011 03:21:37 +0300
Subject: [PATCH 14/16] Pokemon species split: media accessors

---
 pokedex/tests/test_media.py | 57 +++++++++++++++++-----------------
 pokedex/util/media.py       | 62 ++++++++++++++++++++-----------------
 2 files changed, 62 insertions(+), 57 deletions(-)

diff --git a/pokedex/tests/test_media.py b/pokedex/tests/test_media.py
index ddbc778..f06ddcf 100644
--- a/pokedex/tests/test_media.py
+++ b/pokedex/tests/test_media.py
@@ -39,15 +39,15 @@ def if_available(func):
 @if_available
 def test_totodile():
     """Totodile's female sprite -- same as male"""
-    totodile = session.query(tables.Pokemon).filter_by(identifier=u'totodile').one()
-    accessor = media.PokemonMedia(root, totodile)
+    totodile = session.query(tables.PokemonSpecies).filter_by(identifier=u'totodile').one()
+    accessor = media.PokemonSpeciesMedia(root, totodile)
     assert accessor.sprite() == accessor.sprite(female=True)
 
 @if_available
 def test_chimecho():
     """Chimecho's Platinum female backsprite -- diffeent from male"""
-    chimecho = session.query(tables.Pokemon).filter_by(identifier=u'chimecho').one()
-    accessor = media.PokemonMedia(root, chimecho)
+    chimecho = session.query(tables.PokemonSpecies).filter_by(identifier=u'chimecho').one()
+    accessor = media.PokemonSpeciesMedia(root, chimecho)
     male = accessor.sprite('platinum', back=True, frame=2)
     female = accessor.sprite('platinum', back=True, female=True, frame=2)
     assert male != female
@@ -55,16 +55,16 @@ def test_chimecho():
 @if_available
 def test_venonat():
     """Venonat's shiny Yellow sprite -- same as non-shiny"""
-    venonat = session.query(tables.Pokemon).filter_by(identifier=u'venonat').one()
-    accessor = media.PokemonMedia(root, venonat)
+    venonat = session.query(tables.PokemonSpecies).filter_by(identifier=u'venonat').one()
+    accessor = media.PokemonSpeciesMedia(root, venonat)
     assert accessor.sprite('yellow') == accessor.sprite('yellow', shiny=True)
 
 @if_available
 def test_arceus_icon():
     """Arceus fire-form icon -- same as base icon"""
-    arceus = session.query(tables.Pokemon).filter_by(identifier=u'arceus').one()
-    accessor = media.PokemonMedia(root, arceus)
-    fire_arceus = [f for f in arceus.forms if f.identifier == 'fire'][0]
+    arceus = session.query(tables.PokemonSpecies).filter_by(identifier=u'arceus').one()
+    accessor = media.PokemonSpeciesMedia(root, arceus)
+    fire_arceus = [f for f in arceus.forms if f.form_identifier == 'fire'][0]
     fire_accessor = media.PokemonFormMedia(root, fire_arceus)
     assert accessor.icon() == fire_accessor.icon()
 
@@ -72,8 +72,9 @@ def test_arceus_icon():
 @raises(ValueError)
 def test_strict_castform():
     """Castform rainy form overworld with strict -- unavailable"""
-    castform = session.query(tables.Pokemon).filter_by(identifier=u'castform').first()
-    rainy_castform = [f for f in castform.forms if f.identifier == 'rainy'][0]
+    castform = session.query(tables.PokemonSpecies).filter_by(identifier=u'castform').first()
+    rainy_castform = [f for f in castform.forms if f.form_identifier == 'rainy'][0]
+    print rainy_castform
     rainy_castform = media.PokemonFormMedia(root, rainy_castform)
     rainy_castform.overworld('up', strict=True)
 
@@ -81,8 +82,8 @@ def test_strict_castform():
 @raises(ValueError)
 def test_strict_exeggcute():
     """Exeggcutes's female backsprite, with strict -- unavailable"""
-    exeggcute = session.query(tables.Pokemon).filter_by(identifier=u'exeggcute').one()
-    accessor = media.PokemonMedia(root, exeggcute)
+    exeggcute = session.query(tables.PokemonSpecies).filter_by(identifier=u'exeggcute').one()
+    accessor = media.PokemonSpeciesMedia(root, exeggcute)
     accessor.sprite(female=True, strict=True)
 
 
@@ -194,26 +195,26 @@ def check_get_everything():
 
     accessors.append(media.UnknownPokemonMedia(root))
     accessors.append(media.EggMedia(root))
-    manaphy = session.query(tables.Pokemon).filter_by(identifier=u'manaphy').one()
+    manaphy = session.query(tables.PokemonSpecies).filter_by(identifier=u'manaphy').one()
     accessors.append(media.EggMedia(root, manaphy))
     accessors.append(media.SubstituteMedia(root))
 
-    for form in session.query(tables.PokemonForm).filter(tables.PokemonForm.identifier != '').all():
+    for form in session.query(tables.PokemonForm).all():
         accessors.append(media.PokemonFormMedia(root, form))
 
-    for pokemon in session.query(tables.Pokemon).all():
-        accessors.append(media.PokemonMedia(root, pokemon))
+    for pokemon in session.query(tables.PokemonSpecies).all():
+        accessors.append(media.PokemonSpeciesMedia(root, pokemon))
 
     for accessor in accessors:
-        assert hit(filenames, accessor.footprint) or not accessor.form
-        assert hit(filenames, accessor.trozei) or not accessor.form or (
-                accessor.form.pokemon.generation.id > 3)
-        assert hit(filenames, accessor.cry) or not accessor.form
-        assert hit(filenames, accessor.cropped_sprite) or not accessor.form
+        assert hit(filenames, accessor.footprint) or not accessor.is_proper
+        assert hit(filenames, accessor.trozei) or not accessor.is_proper or (
+                accessor.introduced_in > 3)
+        assert hit(filenames, accessor.cry) or not accessor.is_proper
+        assert hit(filenames, accessor.cropped_sprite) or not accessor.is_proper
         for female in (True, False):
-            assert hit(filenames, accessor.icon, female=female) or not accessor.form
+            assert hit(filenames, accessor.icon, female=female) or not accessor.is_proper
             assert hit(filenames, accessor.sugimori, female=female) or (
-                    not accessor.form or accessor.form.pokemon.id >= 647)
+                    not accessor.is_proper or int(accessor.species_id) >= 647)
             for shiny in (True, False):
                 for frame in (1, 2):
                     for direction in 'up down left right'.split():
@@ -222,8 +223,8 @@ def check_get_everything():
                                 shiny=shiny,
                                 female=female,
                                 frame=frame,
-                            ) or not accessor.form or (
-                                    accessor.form.pokemon.generation.id > 4)
+                            ) or not accessor.is_proper or (
+                                    accessor.introduced_in > 4)
                     for version in versions:
                         for animated in (True, False):
                             for back in (True, False):
@@ -243,8 +244,8 @@ def check_get_everything():
                                         shiny and not female and
                                         frame == 1):
                                         # All pokemon are in Black
-                                        assert success or not accessor.form
-                                    if (str(accessor.pokemon_id) == '1'
+                                        assert success or not accessor.is_proper
+                                    if (str(accessor.species_id) == '1'
                                         and not animated and not color and
                                         frame == 1):
                                         # Bulbasaur is in all versions
diff --git a/pokedex/util/media.py b/pokedex/util/media.py
index 98964b3..7b672b3 100644
--- a/pokedex/util/media.py
+++ b/pokedex/util/media.py
@@ -105,7 +105,8 @@ class BaseMedia(object):
 class _BasePokemonMedia(BaseMedia):
     toplevel_dir = 'pokemon'
     has_gender_differences = False
-    form = None
+    is_species = False
+    is_proper = False
     introduced_in = 0
 
     # Info about of what's inside the pokemon main sprite directories, so we
@@ -126,13 +127,13 @@ class _BasePokemonMedia(BaseMedia):
             'black-white': (5, set('back shiny female'.split())),
         }
 
-    def __init__(self, root, pokemon_id, form_postfix=None):
+    def __init__(self, root, species_id, form_postfix=None):
         BaseMedia.__init__(self, root)
-        self.pokemon_id = str(pokemon_id)
+        self.species_id = str(species_id)
         self.form_postfix = form_postfix
 
     def _get_file(self, path_elements, extension, strict, surely_exists=False):
-        basename = str(self.pokemon_id)
+        basename = str(self.species_id)
         if self.form_postfix:
             fullname = basename + self.form_postfix
             try:
@@ -195,7 +196,7 @@ class _BasePokemonMedia(BaseMedia):
                 generation, info = self._pokemon_sprite_info[version_dir]
         if generation < self.introduced_in:
             raise ValueError("Pokemon %s didn't exist in %s" % (
-                    self.pokemon_id, version_dir))
+                    self.species_id, version_dir))
         path_elements = ['main-sprites', version_dir]
         if animated:
             if 'animated' not in info:
@@ -235,7 +236,7 @@ class _BasePokemonMedia(BaseMedia):
             # Chimecho's female back frame 2 sprite has one hand in
             # a slightly different pose, in Platinum and HGSS
             # (we have duplicate sprites frame 1, for convenience)
-            if self.pokemon_id == '358' and back and version_dir in (
+            if self.species_id == '358' and back and version_dir in (
                     'platinum', 'heartgold-soulsilver'):
                 female_sprite = True
             female_sprite = female_sprite and 'female' in info
@@ -243,7 +244,7 @@ class _BasePokemonMedia(BaseMedia):
                 path_elements.append('female')
             elif strict:
                 raise ValueError(
-                    'Pokemon %s has no gender differences' % self.pokemon_id)
+                    'Pokemon %s has no gender differences' % self.species_id)
         if not frame or frame == 1:
             pass
         elif frame == 2:
@@ -255,9 +256,8 @@ class _BasePokemonMedia(BaseMedia):
             raise ValueError("Bad frame %s" % frame)
         return self._get_file(path_elements, extension, strict=strict,
                 # Avoid a stat in the common case
-                surely_exists=(self.form and version_dir == 'black-white'
-                    and not back and not female
-                    and not self.form_postfix))
+                surely_exists=(self.is_species and version_dir == 'black-white'
+                    and not back and not female))
 
     def _maybe_female(self, path_elements, female, strict):
         if female:
@@ -270,7 +270,7 @@ class _BasePokemonMedia(BaseMedia):
                         raise
             elif strict:
                 raise ValueError(
-                    'Pokemon %s has no gender differences' % self.pokemon_id)
+                    'Pokemon %s has no gender differences' % self.species_id)
         return self._get_file(path_elements, '.png', strict=strict)
 
     def icon(self, female=False, strict=False):
@@ -336,28 +336,32 @@ class _BasePokemonMedia(BaseMedia):
         return self._get_file(['cropped'], '.png', strict=strict)
 
 class PokemonFormMedia(_BasePokemonMedia):
-    """Media related to a Pokemon form
+    """Media related to a PokemonForm
     """
+    is_proper = True
+
     def __init__(self, root, pokemon_form):
-        pokemon_id = pokemon_form.form_base_pokemon_id
-        if pokemon_form.identifier:
-            form_postfix = '-' + pokemon_form.identifier
+        species_id = pokemon_form.species.id
+        if pokemon_form.form_identifier:
+            form_postfix = '-' + pokemon_form.form_identifier
         else:
             form_postfix = None
-        _BasePokemonMedia.__init__(self, root, pokemon_id, form_postfix)
+        _BasePokemonMedia.__init__(self, root, species_id, form_postfix)
         self.form = pokemon_form
-        pokemon = pokemon_form.form_base_pokemon
-        self.has_gender_differences = pokemon.has_gender_differences
-        self.introduced_in = pokemon.generation_id
+        species = pokemon_form.species
+        self.has_gender_differences = species.has_gender_differences
+        self.introduced_in = pokemon_form.version_group.generation_id
 
-class PokemonMedia(_BasePokemonMedia):
-    """Media related to a Pokemon
+class PokemonSpeciesMedia(_BasePokemonMedia):
+    """Media related to a PokemonSpecies
     """
-    def __init__(self, root, pokemon):
-        _BasePokemonMedia.__init__(self, root, pokemon.id)
-        self.form = pokemon.default_form
-        self.has_gender_differences = (pokemon.has_gender_differences)
-        self.introduced_in = pokemon.generation_id
+    is_species = True
+    is_proper = True
+
+    def __init__(self, root, species):
+        _BasePokemonMedia.__init__(self, root, species.id)
+        self.has_gender_differences = species.has_gender_differences
+        self.introduced_in = species.generation_id
 
 class UnknownPokemonMedia(_BasePokemonMedia):
     """Media related to the unknown Pokemon ("?")
@@ -372,10 +376,10 @@ class EggMedia(_BasePokemonMedia):
 
     Note that not a lot of files are available for these.
 
-    Give a Manaphy as `pokemon` to get the Manaphy egg.
+    Give a Manaphy as `species` to get the Manaphy egg.
     """
-    def __init__(self, root, pokemon=None):
-        if pokemon and pokemon.identifier == 'manaphy':
+    def __init__(self, root, species=None):
+        if species and species.identifier == 'manaphy':
             postfix = '-manaphy'
         else:
             postfix = None

From 332647c362699053d2138a18f0b30c17e52d4f79 Mon Sep 17 00:00:00 2001
From: Petr Viktorin <encukou@gmail.com>
Date: Mon, 2 May 2011 10:20:28 +0300
Subject: [PATCH 15/16] Switch to py.test  #604

---
 conftest.py                           |  21 +++
 pokedex/tests/__init__.py             |  49 +++++-
 pokedex/tests/test_database_sanity.py |  13 +-
 pokedex/tests/test_lookup.py          | 136 +++++++-------
 pokedex/tests/test_media.py           | 107 +++++-------
 pokedex/tests/test_roomaji.py         |  27 ++-
 pokedex/tests/test_schema.py          | 116 ++++++------
 pokedex/tests/test_strings.py         | 243 +++++++++++++-------------
 pokedex/tests/test_translations.py    |   2 +-
 pokedex/tests/test_util.py            |  37 ++--
 10 files changed, 392 insertions(+), 359 deletions(-)
 create mode 100644 conftest.py

diff --git a/conftest.py b/conftest.py
new file mode 100644
index 0000000..1d64705
--- /dev/null
+++ b/conftest.py
@@ -0,0 +1,21 @@
+
+# Configuration for the tests.
+# Use `py.test` to run the tests.
+
+# (This file needs to be in or above the directory where py.test is called)
+
+import pytest
+import os
+
+def pytest_addoption(parser):
+    parser.addoption("--media-root", action="store",
+        default=None,
+        help="Root for the media files (if not specified and pokedex/data/media doesn't exist, tests are skipped)")
+    parser.addoption("--all", action="store_true", default=False,
+        help="Run all tests, even those that take a lot of time")
+
+def pytest_generate_tests(metafunc):
+    for funcargs in getattr(metafunc.function, 'funcarglist', ()):
+        metafunc.addcall(funcargs=funcargs)
+    for posargs in getattr(metafunc.function, 'posarglist', ()):
+        metafunc.addcall(funcargs=dict(zip(metafunc.funcargnames, posargs)))
diff --git a/pokedex/tests/__init__.py b/pokedex/tests/__init__.py
index 8343e61..3bc8d3c 100644
--- a/pokedex/tests/__init__.py
+++ b/pokedex/tests/__init__.py
@@ -1,6 +1,45 @@
-def setup():
-    # XXX This needs to recreate the database, someday.  :(
-    pass
 
-def teardown():
-    pass
+import inspect
+from functools import wraps
+
+# test support code
+def params(funcarglist):
+    """Basic list-of-dicts test parametrization
+
+    From: http://pytest.org/funcargs.html
+
+    Example:
+    @params([dict(a=1, b=2), dict(a=3, b=4)])
+    def test_lt(a, b):
+        assert a < b
+    """
+    def decorator(function):
+        function.funcarglist = funcarglist
+        return function
+    return decorator
+
+def positional_params(*paramlist):
+    """Magic list-of-lists parametrization
+
+    Example:
+    @params([(1, 2), (3, 4)])
+    def test_lt(a, b):
+        assert a < b
+    """
+    def decorator(function):
+        function.posarglist = paramlist
+        return function
+    return decorator
+
+def single_params(*paramlist):
+    """Magic list-of-lists parametrization
+
+    Example:
+    @params('1', '2', '3', '4'])
+    def test_int(k):
+        assert int(k)
+    """
+    def decorator(function):
+        function.posarglist = [[param] for param in paramlist]
+        return function
+    return decorator
diff --git a/pokedex/tests/test_database_sanity.py b/pokedex/tests/test_database_sanity.py
index ff897a4..40c6241 100644
--- a/pokedex/tests/test_database_sanity.py
+++ b/pokedex/tests/test_database_sanity.py
@@ -1,5 +1,6 @@
-from nose.tools import *
-import unittest
+
+import pytest
+
 from sqlalchemy.orm import aliased
 from sqlalchemy.orm.exc import NoResultFound
 
@@ -21,8 +22,8 @@ def test_encounter_slots():
         .join((version_group_b, tables.Version.version_group)) \
         .filter(version_group_a.id != version_group_b.id)
 
-    assert_equal(sanity_q.count(), 0,
-        "Encounter slots all match the encounters they belong to")
+    # Encounter slots all match the encounters they belong to
+    assert sanity_q.count() == 0
 
 def test_nonzero_autoincrement_ids():
     """Check that autoincrementing ids don't contain zeroes
@@ -34,8 +35,8 @@ def test_nonzero_autoincrement_ids():
     for cls in tables.mapped_classes:
         if 'id' in cls.__table__.c:
             if cls.__table__.c.id.autoincrement:
-                @raises(NoResultFound)
                 def nonzero_id(cls):
-                    util.get(session, cls, id=0)
+                    with pytest.raises(NoResultFound):
+                        util.get(session, cls, id=0)
                 nonzero_id.description = "No zero id in %s" % cls.__name__
                 yield nonzero_id, cls
diff --git a/pokedex/tests/test_lookup.py b/pokedex/tests/test_lookup.py
index 3da916d..48b773e 100644
--- a/pokedex/tests/test_lookup.py
+++ b/pokedex/tests/test_lookup.py
@@ -1,18 +1,12 @@
-# encoding: utf8
-from nose.tools import *
-import unittest
+# Encoding: UTF-8
+
+from pokedex.tests import *
 
 from pokedex.lookup import PokedexLookup
 
-lookup = None
+lookup = PokedexLookup()
 
-def setup():
-    # Recreate data
-    global lookup
-    lookup = PokedexLookup()
-
-def test_exact_lookup():
-    tests = [
+@positional_params(
         # Simple lookups
         (u'Eevee',          'pokemon_species',133),
         (u'Scratch',        'moves',        10),
@@ -37,68 +31,61 @@ def test_exact_lookup():
         (u'이브이',         'pokemon_species', 133),
         (u'伊布',           'pokemon_species', 133),
         (u'Evoli',          'pokemon_species', 133),
-    ]
+    )
+def test_exact_lookup(input, table, id):
+    results = lookup.lookup(input)
+    assert len(results) == 1
+    assert results[0].exact == True
 
-    for input, table, id in tests:
-        results = lookup.lookup(input)
-        assert_equal(len(results), 1,           u"'%s' returns one result" % input)
-        assert_equal(results[0].exact, True,    u"'%s' match exactly" % input)
-
-        row = results[0].object
-        assert_equal(row.__tablename__, table,  u"'%s' is in the right table" % input)
-        assert_equal(row.id, id,                u"'%s' returns the right id" % input)
+    row = results[0].object
+    assert row.__tablename__ == table
+    assert row.id == id
 
 
 def test_id_lookup():
     results = lookup.lookup(u'1')
-    assert_true(len(results) >= 5,              u'At least five things have id 1')
-    assert_true(all(_.object.id == 1 for _ in results),
-                                                u'All results have id 1')
+    assert len(results) >= 5
+    assert all(result.object.id == 1 for result in results)
+
 
 def test_multi_lookup():
     results = lookup.lookup(u'Metronome')
-    assert_equal(len(results), 2,               u'Two things called "Metronome"')
-    assert_true(results[0].exact,               u'Metronome matches are exact')
+    assert len(results) == 2
+    assert results[0].exact
 
 
 def test_type_lookup():
     results = lookup.lookup(u'pokemon:1')
-    assert_equal(results[0].object.__tablename__, 'pokemon_species',
-                                                u'Type restriction works correctly')
-    assert_equal(len(results), 1,               u'Only one id result when type is specified')
-    assert_equal(results[0].object.name, u'Bulbasaur',
-                                                u'Type + id returns the right result')
+    assert results[0].object.__tablename__ == 'pokemon_species'
+    assert len(results) == 1
+    assert results[0].object.name == u'Bulbasaur'
 
     results = lookup.lookup(u'1', valid_types=['pokemon_species'])
-    assert_equal(results[0].object.name, u'Bulbasaur',
-                                                u'valid_types works as well as type: prefix')
+    assert results[0].object.name == u'Bulbasaur'
+
 
 def test_language_lookup():
     # There are two objects named "charge": the move Charge, and the move
     # Tackle, which is called "Charge" in French.
     results = lookup.lookup(u'charge')
-    assert_true(len(results) > 1,               u'There are multiple "charge"s')
+    assert len(results) > 1
 
     results = lookup.lookup(u'@fr:charge')
-    assert_equal(results[0].iso639, u'fr',      u'Language restriction works correctly')
-    assert_equal(len(results), 1,               u'Only one "charge" result when language is specified')
-    assert_equal(results[0].object.name, u'Tackle',
-                                                u'Language + vague name returns the right result')
+    assert results[0].iso639 == u'fr'
+    assert len(results) == 1
+    assert results[0].object.name == u'Tackle'
 
     results = lookup.lookup(u'charge', valid_types=['@fr'])
-    assert_equal(results[0].object.name, u'Tackle',
-                                                u'valid_types works as well as @lang: prefix')
+    assert results[0].object.name == u'Tackle'
 
     results = lookup.lookup(u'@fr,move:charge')
-    assert_equal(results[0].object.name, u'Tackle',
-                                                u'Languages and types both work together')
+    assert results[0].object.name == u'Tackle'
 
     results = lookup.lookup(u'@fr:charge', valid_types=['move'])
-    assert_equal(results[0].object.name, u'Tackle',
-                                                u'valid_types and language prefixes get along')
+    assert results[0].object.name, u'Tackle'
 
-def test_fuzzy_lookup():
-    tests = [
+
+@positional_params(
         # Regular English names
         (u'chamander',          u'Charmander'),
         (u'pokeball',           u'Poké Ball'),
@@ -110,44 +97,51 @@ def test_fuzzy_lookup():
         # Sufficiently long foreign names
         (u'カクレオ',           u'Kecleon'),
         (u'Yamikrasu',          u'Murkrow'),
-    ]
+    )
+def test_fuzzy_lookup(misspelling, name):
+    results = lookup.lookup(misspelling)
+    first_result = results[0]
+    assert first_result.object.name == name
 
-    for misspelling, name in tests:
-        results = lookup.lookup(misspelling)
-        first_result = results[0]
-        assert_equal(first_result.object.name, name,
-                                                u'Simple misspellings are corrected')
 
+def test_nidoran():
     results = lookup.lookup(u'Nidoran')
-    top_names = [_.object.name for _ in results[0:2]]
-    assert_true(u'Nidoran♂' in top_names,       u'Nidoran♂ is a top result for "Nidoran"')
-    assert_true(u'Nidoran♀' in top_names,       u'Nidoran♀ is a top result for "Nidoran"')
+    top_names = [result.object.name for result in results[0:2]]
+    assert u'Nidoran♂' in top_names
+    assert u'Nidoran♀' in top_names
 
-def test_wildcard_lookup():
-    tests = [
+
+@positional_params(
         (u'pokemon:*meleon',    u'Charmeleon'),
         (u'item:master*',       u'Master Ball'),
         (u'ee?ee',              u'Eevee'),
-    ]
+    )
+def test_wildcard_lookup(wildcard, name):
+    results = lookup.lookup(wildcard)
+    first_result = results[0]
+    assert first_result.object.name == name
 
-    for wildcard, name in tests:
-        results = lookup.lookup(wildcard)
-        first_result = results[0]
-        assert_equal(first_result.object.name, name,
-                                                u'Wildcards work correctly')
 
-def test_random_lookup():
-    for _ in xrange(5):
+def test_bare_random():
+    for i in range(5):
         results = lookup.lookup(u'random')
-        assert_equal(len(results), 1,           u'Random returns one result')
+        assert len(results) == 1
+
+
+@positional_params(
+        [u'pokemon_species'],
+        [u'moves'],
+        [u'items'],
+        [u'abilities'],
+        [u'types'],
+    )
+def test_qualified_random(table_name):
+    results = lookup.lookup(u'random', valid_types=[table_name])
+    assert len(results) == 1
+    assert results[0].object.__tablename__ == table_name
 
-    for table_name in [u'pokemon_species', u'moves', u'items', u'abilities', u'types']:
-        results = lookup.lookup(u'random', valid_types=[table_name])
-        assert_equal(len(results), 1,           u'Constrained random returns one result')
-        assert_equal(results[0].object.__tablename__, table_name,
-                                                u'Constrained random returns result from the right table')
 
 def test_crash_empty_prefix():
     """Searching for ':foo' used to crash, augh!"""
     results = lookup.lookup(u':Eevee')
-    assert_equal(results[0].object.name, u'Eevee', u'Empty prefix dun crash')
+    assert results[0].object.name == u'Eevee'
diff --git a/pokedex/tests/test_media.py b/pokedex/tests/test_media.py
index f06ddcf..375c94d 100644
--- a/pokedex/tests/test_media.py
+++ b/pokedex/tests/test_media.py
@@ -1,4 +1,3 @@
-
 """Test the media accessors.
 
 If run directly from the command line, also tests the accessors and the names
@@ -6,45 +5,33 @@ of all the media by getting just about everything in a naive brute-force way.
 This, of course, takes a lot of time to run.
 """
 
+import pytest
+
 import os
 import re
-from functools import wraps
-
-from nose.tools import *
-from nose.plugins.skip import SkipTest
-import nose
-import pkg_resources
 
 from pokedex.db import tables, connect
 from pokedex.util import media
 
+def pytest_funcarg__root(request):
+    root = request.config.option.media_root
+    if not root:
+        root = os.path.join(os.path.dirname(__file__), *'../data/media'.split('/'))
+        if not media.BaseMedia(root).available:
+            raise pytest.skip("Media unavailable")
+    return root
+
 session = connect()
-basedir = pkg_resources.resource_filename('pokedex', 'data/media')
 
 path_re = re.compile('^[-a-z0-9./]*$')
 
-root = pkg_resources.resource_filename('pokedex', 'data/media')
-
-media_available = media.BaseMedia(root).available
-
-def if_available(func):
-    @wraps(func)
-    def if_available_wrapper(*args, **kwargs):
-        if not media_available:
-            raise SkipTest('Media not available at %s' % root)
-        else:
-            func(*args, **kwargs)
-    return if_available_wrapper
-
-@if_available
-def test_totodile():
+def test_totodile(root):
     """Totodile's female sprite -- same as male"""
     totodile = session.query(tables.PokemonSpecies).filter_by(identifier=u'totodile').one()
     accessor = media.PokemonSpeciesMedia(root, totodile)
     assert accessor.sprite() == accessor.sprite(female=True)
 
-@if_available
-def test_chimecho():
+def test_chimecho(root):
     """Chimecho's Platinum female backsprite -- diffeent from male"""
     chimecho = session.query(tables.PokemonSpecies).filter_by(identifier=u'chimecho').one()
     accessor = media.PokemonSpeciesMedia(root, chimecho)
@@ -52,15 +39,13 @@ def test_chimecho():
     female = accessor.sprite('platinum', back=True, female=True, frame=2)
     assert male != female
 
-@if_available
-def test_venonat():
+def test_venonat(root):
     """Venonat's shiny Yellow sprite -- same as non-shiny"""
     venonat = session.query(tables.PokemonSpecies).filter_by(identifier=u'venonat').one()
     accessor = media.PokemonSpeciesMedia(root, venonat)
     assert accessor.sprite('yellow') == accessor.sprite('yellow', shiny=True)
 
-@if_available
-def test_arceus_icon():
+def test_arceus_icon(root):
     """Arceus fire-form icon -- same as base icon"""
     arceus = session.query(tables.PokemonSpecies).filter_by(identifier=u'arceus').one()
     accessor = media.PokemonSpeciesMedia(root, arceus)
@@ -68,32 +53,28 @@ def test_arceus_icon():
     fire_accessor = media.PokemonFormMedia(root, fire_arceus)
     assert accessor.icon() == fire_accessor.icon()
 
-@if_available
-@raises(ValueError)
-def test_strict_castform():
+def test_strict_castform(root):
     """Castform rainy form overworld with strict -- unavailable"""
-    castform = session.query(tables.PokemonSpecies).filter_by(identifier=u'castform').first()
-    rainy_castform = [f for f in castform.forms if f.form_identifier == 'rainy'][0]
-    print rainy_castform
-    rainy_castform = media.PokemonFormMedia(root, rainy_castform)
-    rainy_castform.overworld('up', strict=True)
+    with pytest.raises(ValueError):
+        castform = session.query(tables.PokemonSpecies).filter_by(identifier=u'castform').first()
+        rainy_castform = [f for f in castform.forms if f.form_identifier == 'rainy'][0]
+        print rainy_castform
+        rainy_castform = media.PokemonFormMedia(root, rainy_castform)
+        rainy_castform.overworld('up', strict=True)
 
-@if_available
-@raises(ValueError)
-def test_strict_exeggcute():
+def test_strict_exeggcute(root):
     """Exeggcutes's female backsprite, with strict -- unavailable"""
-    exeggcute = session.query(tables.PokemonSpecies).filter_by(identifier=u'exeggcute').one()
-    accessor = media.PokemonSpeciesMedia(root, exeggcute)
-    accessor.sprite(female=True, strict=True)
+    with pytest.raises(ValueError):
+        exeggcute = session.query(tables.PokemonSpecies).filter_by(identifier=u'exeggcute').one()
+        accessor = media.PokemonSpeciesMedia(root, exeggcute)
+        accessor.sprite(female=True, strict=True)
 
 
 
-def get_all_filenames():
-    print 'Reading all filenames...'
-
+def get_all_filenames(root):
     all_filenames = set()
 
-    for dirpath, dirnames, filenames in os.walk(basedir):
+    for dirpath, dirnames, filenames in os.walk(root):
         dirnames[:] = [dirname for dirname in dirnames if dirname != '.git']
         for filename in filenames:
             path = os.path.join(dirpath, filename)
@@ -123,8 +104,8 @@ def hit(filenames, method, *args, **kwargs):
         pass
     return True
 
-@if_available
-def check_get_everything():
+@pytest.mark.skipif("not config.getvalue('all')", reason='`--all` not specified')
+def test_get_everything(root, pytestconfig):
     """
     For every the accessor method, loop over the Cartesian products of all
     possible values for its arguments.
@@ -133,13 +114,14 @@ def check_get_everything():
 
     Well, there are exceptions of course.
     """
+    assert pytestconfig.getvalue('all')
 
     versions = list(session.query(tables.Version).all())
     versions.append('red-green')
 
     black = session.query(tables.Version).filter_by(identifier=u'black').one()
 
-    filenames = get_all_filenames()
+    filenames = get_all_filenames(root)
 
     # Some small stuff first
 
@@ -252,26 +234,21 @@ def check_get_everything():
                                         assert success
 
     # Remove exceptions
-    exceptions = [os.path.join(basedir, dirname) for dirname in
+    exceptions = [os.path.join(root, dirname) for dirname in
             'chrome fonts ribbons'.split()]
-    exceptions.append(os.path.join(basedir, 'items', 'hm-'))
+    exceptions.append(os.path.join(root, 'items', 'hm-'))
     exceptions = tuple(exceptions)
 
-    for filename in tuple(filenames):
+    unaccessed_filenames = set(filenames)
+    for filename in filenames:
         if filename.startswith(exceptions):
-            filenames.remove(filename)
+            unaccessed_filenames.remove(filename)
 
-    if len(filenames):
-        print
-        print '-----------------'
-        print 'Unaccessed stuff:'
-        for filename in sorted(filenames):
+    if unaccessed_filenames:
+        print 'Unaccessed files:'
+        for filename in unaccessed_filenames:
             print filename
-        print len(filenames), 'unaccessed files :('
+
+    assert unaccessed_filenames == set()
 
     return (not filenames)
-
-if __name__ == '__main__':
-    result = nose.run(defaultTest=__file__)
-    result = result and check_get_everything()
-    exit(not result)
diff --git a/pokedex/tests/test_roomaji.py b/pokedex/tests/test_roomaji.py
index dc95afb..2721938 100644
--- a/pokedex/tests/test_roomaji.py
+++ b/pokedex/tests/test_roomaji.py
@@ -1,12 +1,9 @@
 # encoding: utf8
-from nose.tools import *
-import unittest
 
 import pokedex.roomaji
+from pokedex.tests import positional_params
 
-
-def test_roomaji():
-    tests = [
+@positional_params(
         (u'ヤミカラス',         'yamikarasu'),
 
         # Elongated vowel
@@ -24,14 +21,13 @@ def test_roomaji():
         (u'ラティアス',         'ratiasu'),
         (u'ウィー',             'wii'),
         (u'セレビィ',           'sereby'),
-    ]
+    )
+def test_roomaji(kana, roomaji):
+    result = pokedex.roomaji.romanize(kana)
+    assert result == roomaji
 
-    for kana, roomaji in tests:
-        result = pokedex.roomaji.romanize(kana)
-        assert_equal(result, roomaji, u"'%s' romanizes correctly" % roomaji)
 
-def test_roomaji_cs():
-    tests = [
+@positional_params(
         (u'ヤミカラス',         u'jamikarasu'),
 
         # Elongated vowel
@@ -49,8 +45,7 @@ def test_roomaji_cs():
         (u'ラティアス',         u'ratiasu'),
         (u'ウィー',             u'wí'),
         (u'セレビィ',           u'serebí'),
-    ]
-
-    for kana, roomaji in tests:
-        result = pokedex.roomaji.romanize(kana, 'cs')
-        assert_equal(result, roomaji, u"'%s' romanizes correctly for Czech" % roomaji)
+    )
+def test_roomaji_cs(kana, roomaji):
+    result = pokedex.roomaji.romanize(kana, 'cs')
+    assert result == roomaji
diff --git a/pokedex/tests/test_schema.py b/pokedex/tests/test_schema.py
index c73182f..ce7b53a 100644
--- a/pokedex/tests/test_schema.py
+++ b/pokedex/tests/test_schema.py
@@ -1,6 +1,7 @@
 # encoding: utf8
-from nose.tools import *
-import unittest
+
+from pokedex.tests import single_params
+
 from sqlalchemy import Column, Integer, String, create_engine
 from sqlalchemy.orm import class_mapper, joinedload, sessionmaker
 from sqlalchemy.orm.session import Session
@@ -10,22 +11,23 @@ from pokedex.db import tables, markdown
 from pokedex.db.multilang import MultilangScopedSession, MultilangSession, \
     create_translation_table
 
-def test_variable_names():
+@single_params(*dir(tables))
+def test_variable_names(varname):
     """We want pokedex.db.tables to export tables using the class name"""
-    for varname in dir(tables):
-        if not varname[0].isupper():
-            continue
-        table = getattr(tables, varname)
-        try:
-            if not issubclass(table, tables.TableBase) or table is tables.TableBase:
-                continue
-        except TypeError:
-            continue
-        classname = table.__name__
-        if classname and varname[0].isupper():
-            assert varname == classname, '%s refers to %s' % (varname, classname)
-    for table in tables.mapped_classes:
-        assert getattr(tables, table.__name__) is table
+    table = getattr(tables, varname)
+    try:
+        if not issubclass(table, tables.TableBase) or table is tables.TableBase:
+            return
+    except TypeError:
+        return
+    classname = table.__name__
+    if classname and varname[0].isupper():
+        assert varname == classname, '%s refers to %s' % (varname, classname)
+
+@single_params(*tables.mapped_classes)
+def test_variable_names_2(table):
+    """We also want all of the tables exported"""
+    assert getattr(tables, table.__name__) is table
 
 def test_class_order():
     """The declarative classes should be defined in alphabetical order.
@@ -156,52 +158,52 @@ def test_i18n_table_creation():
     assert foo.name_map[lang_en] == 'different english'
     assert foo.name_map[lang_ru] == 'new russian'
 
-def test_texts():
+classes = []
+for cls in tables.mapped_classes:
+    classes.append(cls)
+    classes += cls.translation_classes
+@single_params(*classes)
+def test_texts(cls):
     """Check DB schema for integrity of text columns & translations.
 
     Mostly protects against copy/paste oversights and rebase hiccups.
     If there's a reason to relax the tests, do it
     """
-    classes = []
-    for cls in tables.mapped_classes:
-        classes.append(cls)
-        classes += cls.translation_classes
-    for cls in classes:
-        if hasattr(cls, 'local_language') or hasattr(cls, 'language'):
-            good_formats = 'markdown plaintext gametext'.split()
-            assert_text = '%s is language-specific'
+    if hasattr(cls, 'local_language') or hasattr(cls, 'language'):
+        good_formats = 'markdown plaintext gametext'.split()
+        assert_text = '%s is language-specific'
+    else:
+        good_formats = 'identifier latex'.split()
+        assert_text = '%s is not language-specific'
+    columns = sorted(cls.__table__.c, key=lambda c: c.name)
+    text_columns = []
+    for column in columns:
+        format = column.info.get('format', None)
+        if format is not None:
+            if format not in good_formats:
+                raise AssertionError(assert_text % column)
+            if (format != 'identifier') and (column.name == 'identifier'):
+                raise AssertionError('%s: identifier column name/type mismatch' % column)
+            if column.info.get('official', None) and format not in 'gametext plaintext':
+                raise AssertionError('%s: official text with bad format' % column)
+            text_columns.append(column)
         else:
-            good_formats = 'identifier latex'.split()
-            assert_text = '%s is not language-specific'
-        columns = sorted(cls.__table__.c, key=lambda c: c.name)
-        text_columns = []
-        for column in columns:
-            format = column.info.get('format', None)
-            if format is not None:
-                if format not in good_formats:
-                    raise AssertionError(assert_text % column)
-                if (format != 'identifier') and (column.name == 'identifier'):
-                    raise AssertionError('%s: identifier column name/type mismatch' % column)
-                if column.info.get('official', None) and format not in 'gametext plaintext':
-                    raise AssertionError('%s: official text with bad format' % column)
-                text_columns.append(column)
-            else:
-                if isinstance(column.type, tables.Unicode):
-                    raise AssertionError('%s: text column without format' % column)
-            if column.name == 'name' and format != 'plaintext':
-                raise AssertionError('%s: non-plaintext name' % column)
-            # No mention of English in the description
-            assert 'English' not in column.info['description'], column
-        # If there's more than one text column in a translation table,
-        # they have to be nullable, to support missing translations
-        if hasattr(cls, 'local_language') and len(text_columns) > 1:
-            for column in text_columns:
-                assert column.nullable
+            if isinstance(column.type, tables.Unicode):
+                raise AssertionError('%s: text column without format' % column)
+        if column.name == 'name' and format != 'plaintext':
+            raise AssertionError('%s: non-plaintext name' % column)
+        # No mention of English in the description
+        assert 'English' not in column.info['description'], column
+    # If there's more than one text column in a translation table,
+    # they have to be nullable, to support missing translations
+    if hasattr(cls, 'local_language') and len(text_columns) > 1:
+        for column in text_columns:
+            assert column.nullable
 
-def test_identifiers_with_names():
+@single_params(*tables.mapped_classes)
+def test_identifiers_with_names(table):
     """Test that named tables have identifiers
     """
-    for table in sorted(tables.mapped_classes, key=lambda t: t.__name__):
-        for translation_class in table.translation_classes:
-            if hasattr(translation_class, 'name'):
-                assert hasattr(table, 'identifier'), table
+    for translation_class in table.translation_classes:
+        if hasattr(translation_class, 'name'):
+            assert hasattr(table, 'identifier'), table
diff --git a/pokedex/tests/test_strings.py b/pokedex/tests/test_strings.py
index 83dc94b..09fe6f9 100644
--- a/pokedex/tests/test_strings.py
+++ b/pokedex/tests/test_strings.py
@@ -1,150 +1,147 @@
 # Encoding: UTF-8
 
-from nose.tools import *
-from sqlalchemy.orm.exc import NoResultFound
+import pytest
+
+from pokedex.tests import positional_params
 
 from pokedex.db import tables, connect, util, markdown
 
-class TestStrings(object):
-    def setup(self):
-        self.connection = connect()
+connection = connect()
 
-    def teardown(self):
-        self.connection.rollback()
+def test_filter():
+    q = connection.query(tables.PokemonSpecies).filter(
+            tables.PokemonSpecies.name == u"Marowak")
+    assert q.one().identifier == 'marowak'
 
-    def test_filter(self):
-        q = self.connection.query(tables.PokemonSpecies).filter(
-                tables.PokemonSpecies.name == u"Marowak")
-        assert q.one().identifier == 'marowak'
+def test_languages():
+    q = connection.query(tables.PokemonSpecies).filter(
+            tables.PokemonSpecies.name == u"Mightyena")
+    pkmn = q.one()
+    for lang, name in (
+            ('en', u'Mightyena'),
+            ('ja', u'グラエナ'),
+            ('roomaji', u'Guraena'),
+            ('fr', u'Grahyèna'),
+        ):
+        language = connection.query(tables.Language).filter_by(
+                identifier=lang).one()
+        assert pkmn.name_map[language] == name
 
-    def test_languages(self):
-        q = self.connection.query(tables.PokemonSpecies).filter(
-                tables.PokemonSpecies.name == u"Mightyena")
-        pkmn = q.one()
-        for lang, name in (
-                ('en', u'Mightyena'),
-                ('ja', u'グラエナ'),
-                ('roomaji', u'Guraena'),
-                ('fr', u'Grahyèna'),
-            ):
-            language = self.connection.query(tables.Language).filter_by(
-                    identifier=lang).one()
-            assert pkmn.name_map[language] == name
-
-    @raises(KeyError)
-    def test_bad_lang(self):
-        q = self.connection.query(tables.PokemonSpecies).filter(
+def test_bad_lang():
+    with pytest.raises(KeyError):
+        q = connection.query(tables.PokemonSpecies).filter(
                 tables.PokemonSpecies.name == u"Mightyena")
         pkmn = q.one()
         pkmn.names["identifier of a language that doesn't exist"]
 
-    def test_mutating(self):
-        item = self.connection.query(tables.Item).filter_by(
-                identifier=u"jade-orb").one()
-        language = self.connection.query(tables.Language).filter_by(
-                identifier=u"de").one()
-        item.name_map[language] = u"foo"
-        assert item.name_map[language] == "foo"
-        item.name_map[language] = u"xyzzy"
-        assert item.name_map[language] == "xyzzy"
+def test_mutating():
+    item = connection.query(tables.Item).filter_by(
+            identifier=u"jade-orb").one()
+    language = connection.query(tables.Language).filter_by(
+            identifier=u"de").one()
+    item.name_map[language] = u"foo"
+    assert item.name_map[language] == "foo"
+    item.name_map[language] = u"xyzzy"
+    assert item.name_map[language] == "xyzzy"
 
-    def test_mutating_default(self):
-        item = self.connection.query(tables.Item).filter_by(
-                identifier=u"jade-orb").one()
-        item.name = u"foo"
-        assert item.name == "foo"
+def test_mutating_default():
+    item = connection.query(tables.Item).filter_by(
+            identifier=u"jade-orb").one()
+    item.name = u"foo"
+    assert item.name == "foo"
 
-    def test_string_mapping(self):
-        item = self.connection.query(tables.Item).filter_by(
-                identifier=u"jade-orb").one()
-        assert len(item.name_map) == len(item.names)
-        for lang in item.names:
-            assert item.name_map[lang] == item.names[lang].name
-            assert lang in item.name_map
-        assert "language that doesn't exist" not in item.name_map
-        assert tables.Language() not in item.name_map
+def test_string_mapping():
+    item = connection.query(tables.Item).filter_by(
+            identifier=u"jade-orb").one()
+    assert len(item.name_map) == len(item.names)
+    for lang in item.names:
+        assert item.name_map[lang] == item.names[lang].name
+        assert lang in item.name_map
+    assert "language that doesn't exist" not in item.name_map
+    assert tables.Language() not in item.name_map
 
-    def test_new_language(self):
-        item = self.connection.query(tables.Item).filter_by(
-                identifier=u"jade-orb").one()
-        language = tables.Language()
-        language.id = -1
-        language.identifier = u'test'
-        language.iso639 = language.iso3166 = u'--'
-        language.official = False
-        self.connection.add(language)
-        item.name_map[language] = u"foo"
-        assert item.name_map[language] == "foo"
-        assert language in item.name_map
-        item.name_map[language] = u"xyzzy"
-        assert item.name_map[language] == "xyzzy"
+def test_new_language():
+    item = connection.query(tables.Item).filter_by(
+            identifier=u"jade-orb").one()
+    language = tables.Language()
+    language.id = -1
+    language.identifier = u'test'
+    language.iso639 = language.iso3166 = u'--'
+    language.official = False
+    connection.add(language)
+    item.name_map[language] = u"foo"
+    assert item.name_map[language] == "foo"
+    assert language in item.name_map
+    item.name_map[language] = u"xyzzy"
+    assert item.name_map[language] == "xyzzy"
 
-    def test_markdown(self):
-        move = self.connection.query(tables.Move).filter_by(
-                identifier=u"thunderbolt").one()
-        language = self.connection.query(tables.Language).filter_by(
-                identifier=u"en").one()
-        assert '10%' in move.effect.as_text()
-        assert '10%' in move.effect_map[language].as_text()
-        assert '10%' in move.effect.as_html()
-        assert '10%' in move.effect_map[language].as_html()
-        assert '10%' in unicode(move.effect)
-        assert '10%' in unicode(move.effect_map[language])
-        assert '10%' in move.effect.__html__()
-        assert '10%' in move.effect_map[language].__html__()
+def test_markdown():
+    move = connection.query(tables.Move).filter_by(
+            identifier=u"thunderbolt").one()
+    language = connection.query(tables.Language).filter_by(
+            identifier=u"en").one()
+    assert '10%' in move.effect.as_text()
+    assert '10%' in move.effect_map[language].as_text()
+    assert '10%' in move.effect.as_html()
+    assert '10%' in move.effect_map[language].as_html()
+    assert '10%' in unicode(move.effect)
+    assert '10%' in unicode(move.effect_map[language])
+    assert '10%' in move.effect.__html__()
+    assert '10%' in move.effect_map[language].__html__()
 
-    def test_markdown_string(self):
-        en = util.get(self.connection, tables.Language, 'en')
-        md = markdown.MarkdownString('[]{move:thunderbolt} [paralyzes]{mechanic:paralysis}', self.connection, en)
-        assert unicode(md) == 'Thunderbolt paralyzes'
-        assert md.as_html() == '<p><span>Thunderbolt</span> <span>paralyzes</span></p>'
-        assert md.as_html(object_url=lambda category, obj: "%s/%s" % (category, obj.identifier)) == (
-                '<p><a href="move/thunderbolt">Thunderbolt</a> <span>paralyzes</span></p>')
-        print md.as_html(identifier_url=lambda category, ident: "%s/%s" % (category, ident))
-        assert md.as_html(identifier_url=lambda category, ident: "%s/%s" % (category, ident)) == (
-                '<p><a href="move/thunderbolt">Thunderbolt</a> <a href="mechanic/paralysis">paralyzes</a></p>')
+def test_markdown_string():
+    en = util.get(connection, tables.Language, 'en')
+    md = markdown.MarkdownString('[]{move:thunderbolt} [paralyzes]{mechanic:paralysis}', connection, en)
+    assert unicode(md) == 'Thunderbolt paralyzes'
+    assert md.as_html() == '<p><span>Thunderbolt</span> <span>paralyzes</span></p>'
+    assert md.as_html(object_url=lambda category, obj: "%s/%s" % (category, obj.identifier)) == (
+            '<p><a href="move/thunderbolt">Thunderbolt</a> <span>paralyzes</span></p>')
+    print md.as_html(identifier_url=lambda category, ident: "%s/%s" % (category, ident))
+    assert md.as_html(identifier_url=lambda category, ident: "%s/%s" % (category, ident)) == (
+            '<p><a href="move/thunderbolt">Thunderbolt</a> <a href="mechanic/paralysis">paralyzes</a></p>')
 
-    def test_markdown_values(self):
-        """Check all markdown values
+def markdown_column_params():
+    """Check all markdown values
 
-        Scans the database schema for Markdown columns, runs through every value
-        in each, and ensures that it's valid Markdown.
-        """
+    Scans the database schema for Markdown columns, runs through every value
+    in each, and ensures that it's valid Markdown.
+    """
 
-        # Move effects have their own special wrappers.  Explicitly test them separately
-        yield self.check_markdown_column, tables.Move, None, 'effect'
-        yield self.check_markdown_column, tables.Move, None, 'short_effect'
+    # Move effects have their own special wrappers.  Explicitly test them separately
+    yield tables.Move, None, 'effect'
+    yield tables.Move, None, 'short_effect'
 
-        for cls in tables.mapped_classes:
-            for translation_cls in cls.translation_classes:
-                for column in translation_cls.__table__.c:
-                    if column.info.get('string_getter') == markdown.MarkdownString:
-                        yield self.check_markdown_column, cls, translation_cls, column.name
+    for cls in tables.mapped_classes:
+        for translation_cls in cls.translation_classes:
+            for column in translation_cls.__table__.c:
+                if column.info.get('string_getter') == markdown.MarkdownString:
+                    yield cls, translation_cls, column.name
 
-    def check_markdown_column(self, parent_class, translation_class, column_name):
-        """Implementation for the above"""
-        query = self.connection.query(parent_class)
-        if translation_class:
-            query = query.join(translation_class)
-        for item in query:
-            for language, markdown in getattr(item, column_name + '_map').items():
+@positional_params(*markdown_column_params())
+def test_markdown_values(parent_class, translation_class, column_name):
+    """Implementation for the above"""
+    query = connection.query(parent_class)
+    if translation_class:
+        query = query.join(translation_class)
+    for item in query:
+        for language, markdown in getattr(item, column_name + '_map').items():
 
-                if markdown is None:
-                    continue
+            if markdown is None:
+                continue
 
-                key = u"Markdown in {0} #{1}'s {2} (lang={3})".format(
-                        parent_class.__name__, item.id, column_name, language.identifier)
+            key = u"Markdown in {0} #{1}'s {2} (lang={3})".format(
+                    parent_class.__name__, item.id, column_name, language.identifier)
 
-                try:
-                    text = markdown.as_text()
-                except NoResultFound:
-                    assert False, u"{0} references something that doesn't exist:\n{1}".format(
-                            key, markdown.source_text)
-                except AttributeError:
-                    print markdown
-                    raise
+            try:
+                text = markdown.as_text()
+            except NoResultFound:
+                assert False, u"{0} references something that doesn't exist:\n{1}".format(
+                        key, markdown.source_text)
+            except AttributeError:
+                print markdown
+                raise
 
-                error_message = u"{0} leaves syntax cruft:\n{1}"
-                error_message = error_message.format(key, text)
+            error_message = u"{0} leaves syntax cruft:\n{1}"
+            error_message = error_message.format(key, text)
 
-                ok_(not any(char in text for char in '[]{}'), error_message)
+            assert not any(char in text for char in '[]{}'), error_message
diff --git a/pokedex/tests/test_translations.py b/pokedex/tests/test_translations.py
index af96331..1335573 100644
--- a/pokedex/tests/test_translations.py
+++ b/pokedex/tests/test_translations.py
@@ -2,7 +2,7 @@
 
 import csv
 
-from nose.tools import *
+import pytest
 
 from pokedex.db import translations, tables
 
diff --git a/pokedex/tests/test_util.py b/pokedex/tests/test_util.py
index 18287d4..7c6a034 100644
--- a/pokedex/tests/test_util.py
+++ b/pokedex/tests/test_util.py
@@ -1,7 +1,8 @@
-# encoding: utf8
-from nose.tools import *
-import unittest
+# Encoding: utf8
 
+import pytest
+
+from pokedex.tests import single_params
 from pokedex.db import connect, tables, util
 
 session = connect()
@@ -18,21 +19,21 @@ def test_get_english_by_identifier():
     language = util.get(session, tables.Language, 'en')
     assert language.name == 'English'
 
-def test_get_pokemon_identifier():
-    for identifier in 'burmy shaymin unown cresselia'.split():
-        poke = util.get(session, tables.PokemonSpecies, identifier=identifier)
-        assert poke.identifier == identifier
+@single_params(*'burmy shaymin unown cresselia'.split())
+def test_get_pokemon_identifier(identifier):
+    poke = util.get(session, tables.PokemonSpecies, identifier=identifier)
+    assert poke.identifier == identifier
 
-def test_get_pokemon_name():
-    for name in 'Burmy Shaymin Unown Cresselia'.split():
-        poke = util.get(session, tables.PokemonSpecies, name=name)
-        assert poke.name == name
+@single_params(*'Burmy Shaymin Unown Cresselia'.split())
+def test_get_pokemon_name(name):
+    poke = util.get(session, tables.PokemonSpecies, name=name)
+    assert poke.name == name
 
-def test_get_pokemon_name_explicit_language():
+@single_params(*'Cheniti Shaymin Zarbi Cresselia'.split())
+def test_get_pokemon_name_explicit_language(name):
     french = util.get(session, tables.Language, 'fr')
-    for name in 'Cheniti Shaymin Zarbi Cresselia'.split():
-        poke = util.get(session, tables.PokemonSpecies, name=name, language=french)
-        assert poke.name_map[french] == name, poke.name_map[french]
+    poke = util.get(session, tables.PokemonSpecies, name=name, language=french)
+    assert poke.name_map[french] == name, poke.name_map[french]
 
 def test_types_french_order():
     french = util.get(session, tables.Language, 'fr')
@@ -40,3 +41,9 @@ def test_types_french_order():
     types = list(util.order_by_name(types, tables.Type, language=french))
     assert types[0].name_map[french] == 'Acier', types[0].name_map[french]
     assert types[-1].name_map[french] == 'Vol', types[-1].name_map[french]
+
+@single_params(*range(1, 10) * 2)
+def test_get_pokemon_id(id):
+    result = util.get(session, tables.Pokemon, id=id)
+    assert result.id == id
+    assert result.__tablename__ == 'pokemon'

From dd668febe7368de91a4ef8be365b981e5cf472a8 Mon Sep 17 00:00:00 2001
From: Petr Viktorin <encukou@gmail.com>
Date: Fri, 6 May 2011 12:40:28 +0300
Subject: [PATCH 16/16] Make id lookup util.get use query.get, avoiding queries
 for dupe lookups

---
 pokedex/db/util.py | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/pokedex/db/util.py b/pokedex/db/util.py
index 93d9127..6c26d67 100644
--- a/pokedex/db/util.py
+++ b/pokedex/db/util.py
@@ -7,6 +7,7 @@ of pokemon, and filtering/ordering by name.
 from sqlalchemy.orm import aliased
 from sqlalchemy.sql.expression import func
 from sqlalchemy.sql.functions import coalesce
+from sqlalchemy.orm.exc import NoResultFound
 
 from pokedex.db import tables
 
@@ -40,7 +41,13 @@ def get(session, table, identifier=None, name=None, id=None, language=None):
         query = filter_name(query, table, name, language)
 
     if id is not None:
-        query = query.filter_by(id=id)
+        # ASSUMPTION: id is the primary key of the table.
+        result = query.get(id)
+        if result is None:
+            # Keep the API
+            raise NoResultFound
+        else:
+            return result
 
     return query.one()