3Gto4G/gba2nds.py
Kurt e70c17847a Met Level Fix
Used to transfer 0 for eggs. Fixed so that it now sets the current level
as level transferred.
2014-01-22 20:48:06 -08:00

2568 lines
61 KiB
Python

import namegen
import stats
from array import array
from datetime import date
def makends(gba):
# Deconstructing GBA .3gpkm file
pid = gba[0:4]
otid = gba[4:8]
nickname = convertname(gba[8:18])
nickname = extendname(nickname, False)
lang = gba[18]
otname = convertname(gba[20:27])
species = ord(gba[32]) + (ord(gba[33]) << 8)
species = pokemonindex.get(species)
gend = genderbyte(species, pid)
forme = form(species, gend, pid)
nicknamed = namegen.namegen(nickname) != stats.species.get(species).upper()
ability = abilities.get(species)
species = chr(species & 0xff) + chr((species >> 8) & 0xff)
item = gba[34:36]
exp = gba[36:40]
ppup = ord(gba[40])
ppupa = chr((ppup >> 0) & 3)
ppupb = chr((ppup >> 2) & 3)
ppupc = chr((ppup >> 4) & 3)
ppupd = chr((ppup >> 6) & 3)
happy = gba[41]
atk1 = gba[44:46]
atk2 = gba[46:48]
atk3 = gba[48:50]
atk4 = gba[50:52]
pp1 = chr((movepp.get(ord(gba[44]) + (ord(gba[45]) << 8))))
pp2 = chr((movepp.get(ord(gba[46]) + (ord(gba[47]) << 8))))
pp3 = chr((movepp.get(ord(gba[48]) + (ord(gba[49]) << 8))))
pp4 = chr((movepp.get(ord(gba[50]) + (ord(gba[51]) << 8))))
hpev = gba[56]
atkev = gba[57]
defev = gba[58]
speev = gba[59]
spaev = gba[60]
spdev = gba[61]
pkrs = gba[68]
lvmet = level(gba)
fmlot = ord(gba[71]) & 0x80
origin = ord(gba[0x46]) + (ord(gba[0x47]) << 8)
origin = chr((origin >> 7) & 0xF)
ball = chr((ord(gba[0x47]) >> 3) & 0xF)
ivs = gba[72:76]
rib1 = gba[76]
rib2 = gba[77]
rib3 = gba[78]
rib4 = chr(ord(gba[79]) & 0x7F) # Remove FE flag because it's not a ribbon.
ribbons = rib1 + rib2 + rib3 + rib4
fateful = ord(gba[0x4F])>>7
# Generating NDS .pkm file
pkm = species + item + otid + exp + happy
pkm += ability[ord(pid[0]) % 2]
pkm += '\x00' # Markings
pkm += lang + hpev + atkev + defev + speev + spaev + spdev
pkm += '\x00' * 10 # Contest values, Sinnoh ribbons
pkm += atk1 + atk2 + atk3 + atk4 + pp1 + pp2 + pp3 + pp4 # Fuck Current PP4
pkm += ppupa + ppupb + ppupc + ppupd
pkm += ivbytes(ivs, nicknamed)
pkm += ribbons # Hoenn ribbons
pkm += chr(forme ^ fateful)
pkm += '\x00' * 5 + '\x37\x00' # Shiny leaves, padding, egg from, met at
pkm += nickname
pkm += '\x00' + origin #Padding, hometown
pkm += '\x00' * 8 # Sinnoh Ribbons, Padding
pkm += extendname(otname, True, pkm[0x40:0x50])
pkm += '\x00' * 3 # Date egg received
pkm += datemet()
pkm += '\x00' * 2 # Egg location
pkm += '\x37\x00' # Location met (Pal Park)
pkm += pkrs
pkm += ball # Poke ball
pkm += chr(lvmet | fmlot)
pkm += '\x00' # Encounter type
pkm += '\x00' # Poke ball
pkm += '\x00' # Padding
chksm = getsum(pkm)
pkm = pid + '\x00\x00' + chksm + pkm
return pkm
def convertname(n):
bytes = array('B')
bytes.fromstring(n)
converted = ''
for val in bytes:
if val == 0xff:
break
c = name.get(val)
if c:
c = [k for k, v in namegen.namelist.iteritems() if v == c][0]
converted += chr(c) + '\x01'
converted += '\xff\xff'
return converted
def extendname(n, ot, trash='\x00\x00\x00\x00\x18\x20\x0d\x02\x42\x00\x00\x00\x00\x00\x00\x00\x48\xa1\x0c\x02\xe0\xff'):
if ot:
if len(n) < 16:
n += trash[len(n):]
else:
if len(n) < 22:
n += trash[len(n):]
return n
def ivbytes(ivs, name):
mod = ord(ivs[3])
if name:
mod = mod | 0x80
return ivs[0:3] + chr(mod)
def genderbyte(species, pid):
gid = ord(pid[0])
genratio = gender.get(species)
if genratio == 'Genderless': return 4
elif genratio == '0 %': return 2
elif genratio == '12.5 %':
if gid < 223: return 2
else: return 0
elif genratio == '25 %':
if gid < 191: return 2
else: return 0
elif genratio == '50 %':
if gid < 127: return 2
else: return 0
elif genratio == '75 %':
if gid < 63: return 2
else: return 0
elif genratio == '87.5 %':
if gid < 31: return 2
else: return 0
elif genratio == '100 %': return 0
def form(id, gend, pid):
if id == 201:
letter1 = ord(pid[3]) & 3
letter2 = ord(pid[2]) & 3
letter3 = ord(pid[1]) & 3
letter4 = ord(pid[0]) & 3
letter = (letter1 << 6) + (letter2 << 4) + (letter3 << 2) + letter4
return (unown.get(letter % 28) << 3) | gend
elif id == 386:
return (0x18 << 3) | gend
else:
return gend
def datemet():
val = date.today()
return chr(val.year - 2000) + chr(val.month) + chr(val.day)
def getsum(pkm):
ar = array('H')
ar.fromstring(pkm)
sum = 0
for val in ar:
sum += val
return chr(sum & 0xff) + chr((sum >> 8) & 0xff)
def level(gba):
exp = ord(gba[36]) + (ord(gba[37]) << 8) + (ord(gba[38]) << 16)
id = ord(gba[32]) + (ord(gba[33]) << 8)
exptype = pokestats.get(id)[0]
for i in xrange(100):
xpneeded = lvlexp.get(i + 1)[exptype]
if xpneeded > exp:
return i
return 100
pokestats = {
1: (3, 45, 49, 49, 65, 65, 45),
2: (3, 60, 62, 63, 80, 80, 60),
3: (3, 80, 82, 83, 100, 100, 80),
4: (3, 39, 52, 43, 60, 50, 65),
5: (3, 58, 64, 58, 80, 65, 80),
6: (3, 78, 84, 78, 109, 85, 100),
7: (3, 44, 48, 65, 50, 64, 43),
8: (3, 59, 63, 80, 65, 80, 58),
9: (3, 79, 83, 100, 85, 105, 78),
10: (2, 45, 30, 35, 20, 20, 45),
11: (2, 50, 20, 55, 25, 25, 30),
12: (2, 60, 45, 50, 80, 80, 70),
13: (2, 40, 35, 30, 20, 20, 50),
14: (2, 45, 25, 50, 25, 25, 35),
15: (2, 65, 80, 40, 45, 80, 75),
16: (3, 40, 45, 40, 35, 35, 56),
17: (3, 63, 60, 55, 50, 50, 71),
18: (3, 83, 80, 75, 70, 70, 91),
19: (2, 30, 56, 35, 25, 35, 72),
20: (2, 55, 81, 60, 50, 70, 97),
21: (2, 40, 60, 30, 31, 31, 70),
22: (2, 65, 90, 65, 61, 61, 100),
23: (2, 35, 60, 44, 40, 54, 55),
24: (2, 60, 85, 69, 65, 79, 80),
25: (2, 35, 55, 30, 50, 40, 90),
26: (2, 60, 90, 55, 90, 80, 100),
27: (2, 50, 75, 85, 20, 30, 40),
28: (2, 75, 100, 110, 45, 55, 65),
29: (3, 55, 47, 52, 40, 40, 41),
30: (3, 70, 62, 67, 55, 55, 56),
31: (3, 90, 82, 87, 75, 85, 76),
32: (3, 46, 57, 40, 40, 40, 50),
33: (3, 61, 72, 57, 55, 55, 65),
34: (3, 81, 92, 77, 85, 75, 85),
35: (1, 70, 45, 48, 60, 65, 35),
36: (1, 95, 70, 73, 85, 90, 60),
37: (2, 38, 41, 40, 50, 65, 65),
38: (2, 73, 76, 75, 81, 100, 100),
39: (1, 115, 45, 20, 45, 25, 20),
40: (1, 140, 70, 45, 75, 50, 45),
41: (2, 40, 45, 35, 30, 40, 55),
42: (2, 75, 80, 70, 65, 75, 90),
43: (3, 45, 50, 55, 75, 65, 30),
44: (3, 60, 65, 70, 85, 75, 40),
45: (3, 75, 80, 85, 100, 90, 50),
46: (2, 35, 70, 55, 45, 55, 25),
47: (2, 60, 95, 80, 60, 80, 30),
48: (2, 60, 55, 50, 40, 55, 45),
49: (2, 70, 65, 60, 90, 75, 90),
50: (2, 10, 55, 25, 35, 45, 95),
51: (2, 35, 80, 50, 50, 70, 120),
52: (2, 40, 45, 35, 40, 40, 90),
53: (2, 65, 70, 60, 65, 65, 115),
54: (2, 50, 52, 48, 65, 50, 55),
55: (2, 80, 82, 78, 95, 80, 85),
56: (2, 40, 80, 35, 35, 45, 70),
57: (2, 65, 105, 60, 60, 70, 95),
58: (4, 55, 70, 45, 70, 50, 60),
59: (4, 90, 110, 80, 100, 80, 95),
60: (3, 40, 50, 40, 40, 40, 90),
61: (3, 65, 65, 65, 50, 50, 90),
62: (3, 90, 85, 95, 70, 90, 70),
63: (3, 25, 20, 15, 105, 55, 90),
64: (3, 40, 35, 30, 120, 70, 105),
65: (3, 55, 50, 45, 135, 85, 120),
66: (3, 70, 80, 50, 35, 35, 35),
67: (3, 80, 100, 70, 50, 60, 45),
68: (3, 90, 130, 80, 65, 85, 55),
69: (3, 50, 75, 35, 70, 30, 40),
70: (3, 65, 90, 50, 85, 45, 55),
71: (3, 80, 105, 65, 100, 60, 70),
72: (4, 40, 40, 35, 50, 100, 70),
73: (4, 80, 70, 65, 80, 120, 100),
74: (3, 40, 80, 100, 30, 30, 20),
75: (3, 55, 95, 115, 45, 45, 35),
76: (3, 80, 110, 130, 55, 65, 45),
77: (2, 50, 85, 55, 65, 65, 90),
78: (2, 65, 100, 70, 80, 80, 105),
79: (2, 90, 65, 65, 40, 40, 15),
80: (2, 95, 75, 110, 100, 80, 30),
81: (2, 25, 35, 70, 95, 55, 45),
82: (2, 50, 60, 95, 120, 70, 70),
83: (2, 52, 65, 55, 58, 62, 60),
84: (2, 35, 85, 45, 35, 35, 75),
85: (2, 60, 110, 70, 60, 60, 100),
86: (2, 65, 45, 55, 45, 70, 45),
87: (2, 90, 70, 80, 70, 95, 70),
88: (2, 80, 80, 50, 40, 50, 25),
89: (2, 105, 105, 75, 65, 100, 50),
90: (4, 30, 65, 100, 45, 25, 40),
91: (4, 50, 95, 180, 85, 45, 70),
92: (3, 30, 35, 30, 100, 35, 80),
93: (3, 45, 50, 45, 115, 55, 95),
94: (3, 60, 65, 60, 130, 75, 110),
95: (2, 35, 45, 160, 30, 45, 70),
96: (2, 60, 48, 45, 43, 90, 42),
97: (2, 85, 73, 70, 73, 115, 67),
98: (2, 30, 105, 90, 25, 25, 50),
99: (2, 55, 130, 115, 50, 50, 75),
100: (2, 40, 30, 50, 55, 55, 100),
101: (2, 60, 50, 70, 80, 80, 140),
102: (4, 60, 40, 80, 60, 45, 40),
103: (4, 95, 95, 85, 125, 65, 55),
104: (2, 50, 50, 95, 40, 50, 35),
105: (2, 60, 80, 110, 50, 80, 45),
106: (2, 50, 120, 53, 35, 110, 87),
107: (2, 50, 105, 79, 35, 110, 76),
108: (2, 90, 55, 75, 60, 75, 30),
109: (2, 40, 65, 95, 60, 45, 35),
110: (2, 65, 90, 120, 85, 70, 60),
111: (4, 80, 85, 95, 30, 30, 25),
112: (4, 105, 130, 120, 45, 45, 40),
113: (1, 250, 5, 5, 35, 105, 50),
114: (2, 65, 55, 115, 100, 40, 60),
115: (2, 105, 95, 80, 40, 80, 90),
116: (2, 30, 40, 70, 70, 25, 60),
117: (2, 55, 65, 95, 95, 45, 85),
118: (2, 45, 67, 60, 35, 50, 63),
119: (2, 80, 92, 65, 65, 80, 68),
120: (4, 30, 45, 55, 70, 55, 85),
121: (4, 60, 75, 85, 100, 85, 115),
122: (2, 40, 45, 65, 100, 120, 90),
123: (2, 70, 110, 80, 55, 80, 105),
124: (2, 65, 50, 35, 115, 95, 95),
125: (2, 65, 83, 57, 95, 85, 105),
126: (2, 65, 95, 57, 100, 85, 93),
127: (4, 65, 125, 100, 55, 70, 85),
128: (4, 75, 100, 95, 40, 70, 110),
129: (4, 20, 10, 55, 15, 20, 80),
130: (4, 95, 125, 79, 60, 100, 81),
131: (4, 130, 85, 80, 85, 95, 60),
132: (2, 48, 48, 48, 48, 48, 48),
133: (2, 55, 55, 50, 45, 65, 55),
134: (2, 130, 65, 60, 110, 95, 65),
135: (2, 65, 65, 60, 110, 95, 130),
136: (2, 65, 130, 60, 95, 110, 65),
137: (2, 65, 60, 70, 85, 75, 40),
138: (2, 35, 40, 100, 90, 55, 35),
139: (2, 70, 60, 125, 115, 70, 55),
140: (2, 30, 80, 90, 55, 45, 55),
141: (2, 60, 115, 105, 65, 70, 80),
142: (4, 80, 105, 65, 60, 75, 130),
143: (4, 160, 110, 65, 65, 110, 30),
144: (4, 90, 85, 100, 95, 125, 85),
145: (4, 90, 90, 85, 125, 90, 100),
146: (4, 90, 100, 90, 125, 85, 90),
147: (4, 41, 64, 45, 50, 50, 50),
148: (4, 61, 84, 65, 70, 70, 70),
149: (4, 91, 134, 95, 100, 100, 80),
150: (4, 106, 110, 90, 154, 90, 130),
151: (3, 100, 100, 100, 100, 100, 100),
152: (3, 45, 49, 65, 49, 65, 45),
153: (3, 60, 62, 80, 63, 80, 60),
154: (3, 80, 82, 100, 83, 100, 80),
155: (3, 39, 52, 43, 60, 50, 65),
156: (3, 58, 64, 58, 80, 65, 80),
157: (3, 78, 84, 78, 109, 85, 100),
158: (3, 50, 65, 64, 44, 48, 43),
159: (3, 65, 80, 80, 59, 63, 58),
160: (3, 85, 105, 100, 79, 83, 78),
161: (2, 35, 46, 34, 35, 45, 20),
162: (2, 85, 76, 64, 45, 55, 90),
163: (2, 60, 30, 30, 36, 56, 50),
164: (2, 100, 50, 50, 76, 96, 70),
165: (1, 40, 20, 30, 40, 80, 55),
166: (1, 55, 35, 50, 55, 110, 85),
167: (1, 40, 60, 40, 40, 40, 30),
168: (1, 70, 90, 70, 60, 60, 40),
169: (2, 85, 90, 80, 70, 80, 130),
170: (4, 75, 38, 38, 56, 56, 67),
171: (4, 125, 58, 58, 76, 76, 67),
172: (2, 20, 40, 15, 35, 35, 60),
173: (1, 50, 25, 28, 45, 55, 15),
174: (1, 90, 30, 15, 40, 20, 15),
175: (1, 35, 20, 65, 40, 65, 20),
176: (1, 55, 40, 85, 80, 105, 40),
177: (2, 40, 50, 45, 70, 45, 70),
178: (2, 65, 75, 70, 95, 70, 95),
179: (3, 55, 40, 40, 65, 45, 35),
180: (3, 70, 55, 55, 80, 60, 45),
181: (3, 90, 75, 75, 115, 90, 55),
182: (3, 75, 80, 85, 90, 100, 50),
183: (1, 70, 20, 50, 20, 50, 40),
184: (1, 100, 50, 80, 50, 80, 50),
185: (2, 70, 100, 115, 30, 65, 30),
186: (3, 90, 75, 75, 90, 100, 70),
187: (3, 35, 35, 40, 35, 55, 50),
188: (3, 55, 45, 50, 45, 65, 80),
189: (3, 75, 55, 70, 55, 85, 110),
190: (1, 55, 70, 55, 40, 55, 85),
191: (3, 30, 30, 30, 30, 30, 30),
192: (3, 75, 75, 55, 105, 85, 30),
193: (2, 65, 65, 45, 75, 45, 95),
194: (2, 55, 45, 45, 25, 25, 15),
195: (2, 95, 85, 85, 65, 65, 35),
196: (2, 65, 65, 60, 130, 95, 110),
197: (2, 95, 65, 110, 60, 130, 65),
198: (3, 60, 85, 42, 85, 42, 91),
199: (2, 95, 75, 80, 100, 110, 30),
200: (1, 60, 60, 60, 85, 85, 85),
201: (2, 48, 72, 48, 72, 48, 48),
202: (2, 190, 33, 58, 33, 58, 33),
203: (2, 70, 80, 65, 90, 65, 85),
204: (2, 50, 65, 90, 35, 35, 15),
205: (2, 75, 90, 140, 60, 60, 40),
206: (2, 100, 70, 70, 65, 65, 45),
207: (3, 65, 75, 105, 35, 65, 85),
208: (2, 75, 85, 200, 55, 65, 30),
209: (1, 60, 80, 50, 40, 40, 30),
210: (1, 90, 120, 75, 60, 60, 45),
211: (2, 65, 95, 75, 55, 55, 85),
212: (2, 70, 130, 100, 55, 80, 65),
213: (3, 20, 10, 230, 10, 230, 5),
214: (4, 80, 125, 75, 40, 95, 85),
215: (3, 55, 95, 55, 35, 75, 115),
216: (2, 60, 80, 50, 50, 50, 40),
217: (2, 90, 130, 75, 75, 75, 55),
218: (2, 40, 40, 40, 70, 40, 20),
219: (2, 50, 50, 120, 80, 80, 30),
220: (4, 50, 50, 40, 30, 30, 50),
221: (4, 100, 100, 80, 60, 60, 50),
222: (1, 55, 55, 85, 65, 85, 35),
223: (2, 35, 65, 35, 65, 35, 65),
224: (2, 75, 105, 75, 105, 75, 45),
225: (1, 45, 55, 45, 65, 45, 75),
226: (4, 65, 40, 70, 80, 140, 70),
227: (4, 65, 80, 140, 40, 70, 70),
228: (4, 45, 60, 30, 80, 50, 65),
229: (4, 75, 90, 50, 110, 80, 95),
230: (2, 75, 95, 95, 95, 95, 85),
231: (2, 90, 60, 60, 40, 40, 40),
232: (2, 90, 120, 120, 60, 60, 50),
233: (2, 85, 80, 90, 105, 95, 60),
234: (4, 73, 95, 62, 85, 65, 85),
235: (1, 55, 20, 35, 20, 45, 75),
236: (2, 35, 35, 35, 35, 35, 35),
237: (2, 50, 95, 95, 35, 110, 70),
238: (2, 45, 30, 15, 85, 65, 65),
239: (2, 45, 63, 37, 65, 55, 95),
240: (2, 45, 75, 37, 70, 55, 83),
241: (4, 95, 80, 105, 40, 70, 100),
242: (1, 255, 10, 10, 75, 135, 55),
243: (4, 90, 85, 75, 115, 100, 115),
244: (4, 115, 115, 85, 90, 75, 100),
245: (4, 100, 75, 115, 90, 115, 85),
246: (4, 50, 64, 50, 45, 50, 41),
247: (4, 70, 84, 70, 65, 70, 51),
248: (4, 100, 134, 110, 95, 100, 61),
249: (4, 106, 90, 130, 90, 154, 110),
250: (4, 106, 130, 90, 110, 154, 90),
251: (3, 100, 100, 100, 100, 100, 100),
252: (3, 40, 45, 35, 65, 55, 70),
253: (3, 50, 65, 45, 85, 65, 95),
254: (3, 70, 85, 65, 105, 85, 120),
255: (3, 45, 60, 40, 70, 50, 45),
256: (3, 60, 85, 60, 85, 60, 55),
257: (3, 80, 120, 70, 110, 70, 80),
258: (3, 50, 70, 50, 50, 50, 40),
259: (3, 70, 85, 70, 60, 70, 50),
260: (3, 100, 110, 90, 85, 90, 60),
261: (2, 35, 55, 35, 30, 30, 35),
262: (2, 70, 90, 70, 60, 60, 70),
263: (2, 38, 30, 41, 30, 41, 60),
264: (2, 78, 70, 61, 50, 61, 100),
265: (2, 45, 45, 35, 20, 30, 20),
266: (2, 50, 35, 55, 25, 25, 15),
267: (2, 60, 70, 50, 90, 50, 65),
268: (2, 50, 35, 55, 25, 25, 15),
269: (2, 60, 50, 70, 50, 90, 65),
270: (3, 40, 30, 30, 40, 50, 30),
271: (3, 60, 50, 50, 60, 70, 50),
272: (3, 80, 70, 70, 90, 100, 70),
273: (3, 40, 40, 50, 30, 30, 30),
274: (3, 70, 70, 40, 60, 40, 60),
275: (3, 90, 100, 60, 90, 60, 80),
276: (3, 40, 55, 30, 30, 30, 85),
277: (3, 60, 85, 60, 50, 50, 125),
278: (2, 40, 30, 30, 55, 30, 85),
279: (2, 60, 50, 100, 85, 70, 65),
280: (4, 28, 25, 25, 45, 35, 40),
281: (4, 38, 35, 35, 65, 55, 50),
282: (4, 68, 65, 65, 125, 115, 80),
283: (2, 40, 30, 32, 50, 52, 65),
284: (2, 70, 60, 62, 80, 82, 60),
285: (5, 60, 40, 60, 40, 60, 35),
286: (5, 60, 130, 80, 60, 60, 70),
287: (4, 60, 60, 60, 35, 35, 30),
288: (4, 80, 80, 80, 55, 55, 90),
289: (4, 150, 160, 100, 95, 65, 100),
290: (0, 31, 45, 90, 30, 30, 40),
291: (0, 61, 90, 45, 50, 50, 160),
292: (0, 1, 90, 45, 30, 30, 40),
293: (3, 64, 51, 23, 51, 23, 28),
294: (3, 84, 71, 43, 71, 43, 48),
295: (3, 104, 91, 63, 91, 63, 68),
296: (5, 72, 60, 30, 20, 30, 25),
297: (5, 144, 120, 60, 40, 60, 50),
298: (1, 50, 20, 40, 20, 40, 20),
299: (2, 30, 45, 135, 45, 90, 30),
300: (1, 50, 45, 45, 35, 35, 50),
301: (1, 70, 65, 65, 55, 55, 70),
302: (3, 50, 75, 75, 65, 65, 50),
303: (1, 50, 85, 85, 55, 55, 50),
304: (4, 50, 70, 100, 40, 40, 30),
305: (4, 60, 90, 140, 50, 50, 40),
306: (4, 70, 110, 180, 60, 60, 50),
307: (2, 30, 40, 55, 40, 55, 60),
308: (2, 60, 60, 75, 60, 75, 80),
309: (4, 40, 45, 40, 65, 40, 65),
310: (4, 70, 75, 60, 105, 60, 105),
311: (2, 60, 50, 40, 85, 75, 95),
312: (2, 60, 40, 50, 75, 85, 95),
313: (0, 65, 73, 55, 47, 75, 85),
314: (5, 65, 47, 55, 73, 75, 85),
315: (3, 50, 60, 45, 100, 80, 65),
316: (5, 70, 43, 53, 43, 53, 40),
317: (5, 100, 73, 83, 73, 83, 55),
318: (4, 45, 90, 20, 65, 20, 65),
319: (4, 70, 120, 40, 95, 40, 95),
320: (5, 130, 70, 35, 70, 35, 60),
321: (5, 170, 90, 45, 90, 45, 60),
322: (2, 60, 60, 40, 65, 45, 35),
323: (2, 70, 100, 70, 105, 75, 40),
324: (2, 70, 85, 140, 85, 70, 20),
325: (1, 60, 25, 35, 70, 80, 60),
326: (1, 80, 45, 65, 90, 110, 80),
327: (1, 60, 60, 60, 60, 60, 60),
328: (3, 45, 100, 45, 45, 45, 10),
329: (3, 50, 70, 50, 50, 50, 70),
330: (3, 80, 100, 80, 80, 80, 100),
331: (3, 50, 85, 40, 85, 40, 35),
332: (3, 70, 115, 60, 115, 60, 55),
333: (0, 45, 40, 60, 40, 75, 50),
334: (0, 75, 70, 90, 70, 105, 80),
335: (0, 73, 115, 60, 60, 60, 90),
336: (5, 73, 100, 60, 100, 60, 65),
337: (1, 70, 55, 65, 95, 85, 70),
338: (1, 70, 95, 85, 55, 65, 70),
339: (2, 50, 48, 43, 46, 41, 60),
340: (2, 110, 78, 73, 76, 71, 60),
341: (5, 43, 80, 65, 50, 35, 35),
342: (5, 63, 120, 85, 90, 55, 55),
343: (2, 40, 40, 55, 40, 70, 55),
344: (2, 60, 70, 105, 70, 120, 75),
345: (0, 66, 41, 77, 61, 87, 23),
346: (0, 86, 81, 97, 81, 107, 43),
347: (0, 45, 95, 50, 40, 50, 75),
348: (0, 75, 125, 100, 70, 80, 45),
349: (0, 20, 15, 20, 10, 55, 80),
350: (0, 95, 60, 79, 100, 125, 81),
351: (2, 70, 70, 70, 70, 70, 70),
352: (3, 60, 90, 70, 60, 120, 40),
353: (1, 44, 75, 35, 63, 33, 45),
354: (1, 64, 115, 65, 83, 63, 65),
355: (1, 20, 40, 90, 30, 90, 25),
356: (1, 40, 70, 130, 60, 130, 25),
357: (4, 99, 68, 83, 72, 87, 51),
358: (1, 65, 50, 70, 95, 80, 65),
359: (3, 65, 130, 60, 75, 60, 75),
360: (2, 95, 23, 48, 23, 48, 23),
361: (2, 50, 50, 50, 50, 50, 50),
362: (2, 80, 80, 80, 80, 80, 80),
363: (3, 70, 40, 50, 55, 50, 25),
364: (3, 90, 60, 70, 75, 70, 45),
365: (3, 110, 80, 90, 95, 90, 65),
366: (0, 35, 64, 85, 74, 55, 32),
367: (0, 55, 104, 105, 94, 75, 52),
368: (0, 55, 84, 105, 114, 75, 52),
369: (4, 100, 90, 130, 45, 65, 55),
370: (1, 43, 30, 55, 40, 65, 97),
371: (4, 45, 75, 60, 40, 30, 50),
372: (4, 65, 95, 100, 60, 50, 50),
373: (4, 95, 135, 80, 110, 80, 100),
374: (4, 40, 55, 80, 35, 60, 30),
375: (4, 60, 75, 100, 55, 80, 50),
376: (4, 80, 135, 130, 95, 90, 70),
377: (4, 80, 100, 200, 50, 100, 50),
378: (4, 80, 50, 100, 100, 200, 50),
379: (4, 80, 75, 150, 75, 150, 50),
380: (4, 80, 80, 90, 110, 130, 110),
381: (4, 80, 90, 80, 130, 110, 110),
382: (4, 100, 100, 90, 150, 140, 90),
383: (4, 100, 150, 140, 100, 90, 90),
384: (4, 105, 150, 90, 150, 90, 95),
385: (4, 100, 100, 100, 100, 100, 100),
386: (4, 50, 150, 50, 150, 50, 150),
387: (3, 55, 68, 64, 45, 55, 31),
388: (3, 75, 89, 85, 55, 65, 36),
389: (3, 95, 109, 105, 75, 85, 56),
390: (3, 44, 58, 44, 58, 44, 61),
391: (3, 64, 78, 52, 78, 52, 81),
392: (3, 76, 104, 71, 104, 71, 108),
393: (3, 53, 51, 53, 61, 56, 40),
394: (3, 64, 66, 68, 81, 76, 50),
395: (3, 84, 86, 88, 111, 101, 60),
396: (3, 40, 55, 30, 30, 30, 60),
397: (3, 55, 75, 50, 40, 40, 80),
398: (3, 85, 120, 70, 50, 50, 100),
399: (2, 59, 45, 40, 35, 40, 31),
400: (2, 79, 85, 60, 55, 60, 71),
401: (3, 37, 25, 41, 25, 41, 25),
402: (3, 77, 85, 51, 55, 51, 65),
403: (3, 45, 65, 34, 40, 34, 45),
404: (3, 60, 85, 49, 60, 49, 60),
405: (3, 80, 120, 79, 95, 79, 70),
406: (3, 40, 30, 35, 50, 70, 55),
407: (3, 60, 70, 55, 125, 105, 90),
408: (0, 67, 125, 40, 30, 30, 58),
409: (0, 97, 165, 60, 65, 50, 58),
410: (0, 30, 42, 118, 42, 88, 30),
411: (0, 60, 52, 168, 47, 138, 30),
412: (2, 40, 29, 45, 29, 45, 36),
413: (2, 60, 59, 85, 79, 105, 36),
414: (2, 70, 94, 50, 94, 50, 66),
415: (3, 30, 30, 42, 30, 42, 70),
416: (3, 70, 80, 102, 80, 102, 40),
417: (2, 60, 45, 70, 45, 90, 95),
418: (2, 55, 65, 35, 60, 30, 85),
419: (2, 85, 105, 55, 85, 50, 115),
420: (2, 45, 35, 45, 62, 53, 35),
421: (2, 70, 60, 70, 87, 78, 85),
422: (2, 76, 48, 48, 57, 62, 34),
423: (2, 111, 83, 68, 92, 82, 39),
424: (1, 75, 100, 66, 60, 66, 115),
425: (5, 90, 50, 34, 60, 44, 70),
426: (5, 150, 80, 44, 90, 54, 80),
427: (2, 55, 66, 44, 44, 56, 85),
428: (2, 65, 76, 84, 54, 96, 105),
429: (1, 60, 60, 60, 105, 105, 105),
430: (3, 100, 125, 52, 105, 52, 71),
431: (1, 49, 55, 42, 42, 37, 85),
432: (1, 71, 82, 64, 64, 59, 112),
433: (1, 45, 30, 50, 65, 50, 45),
434: (2, 63, 63, 47, 41, 41, 74),
435: (2, 103, 93, 67, 71, 61, 84),
436: (2, 57, 24, 86, 24, 86, 23),
437: (2, 67, 89, 116, 79, 116, 33),
438: (2, 50, 80, 95, 10, 45, 10),
439: (2, 20, 25, 45, 70, 90, 60),
440: (1, 100, 5, 5, 15, 65, 30),
441: (3, 76, 65, 45, 92, 42, 91),
442: (2, 50, 92, 108, 92, 108, 35),
443: (4, 58, 70, 45, 40, 45, 42),
444: (4, 68, 90, 65, 50, 55, 82),
445: (4, 108, 130, 95, 80, 85, 102),
446: (4, 135, 85, 40, 40, 85, 5),
447: (3, 40, 70, 40, 35, 40, 60),
448: (3, 70, 110, 70, 115, 70, 90),
449: (4, 68, 72, 78, 38, 42, 32),
450: (4, 108, 112, 118, 68, 72, 47),
451: (4, 40, 50, 90, 30, 55, 65),
452: (4, 70, 90, 110, 60, 75, 95),
453: (2, 48, 61, 40, 61, 40, 50),
454: (2, 83, 106, 65, 86, 65, 85),
455: (4, 74, 100, 72, 90, 72, 46),
456: (0, 49, 49, 56, 49, 61, 66),
457: (0, 69, 69, 76, 69, 86, 91),
458: (4, 45, 20, 50, 60, 120, 50),
459: (4, 60, 62, 50, 62, 60, 40),
460: (4, 90, 92, 75, 92, 85, 60),
461: (3, 70, 120, 65, 45, 85, 125),
462: (2, 70, 70, 115, 130, 90, 60),
463: (2, 110, 85, 95, 80, 95, 50),
464: (4, 115, 140, 130, 55, 55, 40),
465: (2, 100, 100, 125, 110, 50, 50),
466: (2, 75, 123, 67, 95, 85, 95),
467: (2, 75, 95, 67, 125, 95, 83),
468: (1, 85, 50, 95, 120, 115, 80),
469: (2, 86, 76, 86, 116, 56, 95),
470: (2, 65, 110, 130, 60, 65, 95),
471: (2, 65, 60, 110, 130, 95, 65),
472: (3, 75, 95, 125, 45, 75, 95),
473: (4, 110, 130, 80, 70, 60, 80),
474: (2, 85, 80, 70, 135, 75, 90),
475: (4, 68, 125, 65, 65, 115, 80),
476: (2, 60, 55, 145, 75, 150, 40),
477: (1, 45, 100, 135, 65, 135, 45),
478: (2, 70, 80, 70, 80, 70, 110),
479: (2, 50, 50, 77, 95, 77, 91),
480: (4, 75, 75, 130, 75, 130, 95),
481: (4, 80, 105, 105, 105, 105, 80),
482: (4, 75, 125, 70, 125, 70, 115),
483: (4, 100, 120, 120, 150, 100, 90),
484: (4, 90, 120, 100, 150, 120, 100),
485: (4, 91, 90, 106, 130, 106, 77),
486: (4, 110, 160, 110, 80, 110, 100),
487: (4, 150, 100, 120, 100, 120, 90),
488: (4, 120, 70, 120, 75, 130, 85),
489: (4, 80, 80, 80, 80, 80, 80),
490: (4, 100, 100, 100, 100, 100, 100),
491: (4, 70, 90, 90, 135, 90, 125),
492: (3, 100, 100, 100, 100, 100, 100),
493: (4, 120, 120, 120, 120, 120, 120),
494: (4, 100, 100, 100, 100, 100, 100),
495: (3, 45, 45, 55, 45, 55, 63),
496: (3, 60, 60, 75, 60, 75, 83),
497: (3, 75, 75, 95, 75, 95, 113),
498: (3, 65, 63, 45, 45, 45, 45),
499: (3, 90, 93, 55, 70, 55, 55),
500: (3, 110, 123, 65, 100, 65, 65),
501: (3, 55, 55, 45, 63, 45, 45),
502: (3, 75, 75, 60, 83, 60, 60),
503: (3, 95, 100, 85, 108, 70, 70),
504: (2, 45, 55, 39, 35, 39, 42),
505: (2, 60, 85, 69, 60, 69, 77),
506: (3, 45, 60, 45, 25, 45, 55),
507: (3, 65, 80, 65, 35, 65, 60),
508: (3, 85, 100, 90, 45, 90, 80),
509: (2, 41, 50, 37, 50, 37, 66),
510: (2, 64, 88, 50, 88, 50, 106),
511: (2, 50, 53, 48, 53, 48, 64),
512: (2, 75, 98, 63, 98, 63, 101),
513: (2, 50, 53, 48, 53, 48, 64),
514: (2, 75, 98, 63, 98, 63, 101),
515: (2, 50, 53, 48, 53, 48, 64),
516: (2, 75, 98, 63, 98, 63, 101),
517: (1, 76, 25, 45, 67, 55, 24),
518: (1, 116, 55, 85, 107, 95, 29),
519: (3, 50, 55, 50, 36, 30, 43),
520: (3, 62, 77, 62, 50, 42, 65),
521: (3, 80, 105, 80, 65, 55, 93),
522: (2, 45, 60, 32, 50, 32, 76),
523: (2, 75, 100, 63, 80, 63, 116),
524: (3, 55, 75, 85, 25, 25, 15),
525: (3, 70, 105, 105, 50, 40, 20),
526: (3, 85, 135, 130, 60, 70, 25),
527: (2, 55, 45, 43, 55, 43, 72),
528: (2, 67, 57, 55, 77, 55, 114),
529: (2, 60, 85, 40, 30, 45, 68),
530: (2, 110, 135, 60, 50, 65, 88),
531: (1, 103, 60, 86, 60, 86, 50),
532: (3, 75, 80, 55, 25, 35, 35),
533: (3, 85, 105, 85, 40, 50, 40),
534: (3, 105, 140, 95, 55, 65, 45),
535: (3, 50, 50, 40, 50, 40, 64),
536: (3, 75, 65, 55, 65, 55, 69),
537: (3, 105, 85, 75, 85, 75, 74),
538: (2, 120, 100, 85, 30, 85, 45),
539: (2, 75, 125, 75, 30, 75, 85),
540: (3, 45, 53, 70, 40, 60, 42),
541: (3, 55, 63, 90, 50, 80, 42),
542: (3, 75, 103, 80, 70, 70, 92),
543: (3, 30, 45, 59, 30, 39, 57),
544: (3, 40, 55, 99, 40, 79, 47),
545: (3, 60, 90, 89, 55, 69, 112),
546: (2, 40, 27, 60, 37, 50, 66),
547: (2, 60, 67, 85, 77, 75, 116),
548: (2, 45, 35, 50, 70, 50, 30),
549: (2, 70, 60, 75, 110, 75, 90),
550: (2, 70, 92, 65, 80, 55, 98),
551: (3, 50, 72, 35, 35, 35, 65),
552: (3, 60, 82, 45, 45, 45, 74),
553: (3, 95, 117, 70, 65, 70, 92),
554: (3, 70, 90, 45, 15, 45, 50),
555: (3, 105, 140, 55, 30, 55, 95),
556: (2, 75, 86, 67, 106, 67, 60),
557: (2, 50, 65, 85, 35, 35, 55),
558: (2, 70, 95, 125, 65, 75, 45),
559: (2, 50, 75, 70, 35, 70, 48),
560: (2, 65, 90, 115, 45, 115, 58),
561: (2, 72, 58, 80, 103, 80, 97),
562: (2, 38, 30, 85, 55, 65, 30),
563: (2, 58, 50, 145, 95, 105, 30),
564: (2, 54, 78, 103, 53, 45, 22),
565: (2, 74, 108, 133, 83, 65, 32),
566: (2, 55, 112, 45, 74, 45, 70),
567: (2, 75, 140, 65, 112, 65, 110),
568: (2, 50, 50, 62, 40, 62, 65),
569: (2, 80, 95, 82, 60, 82, 75),
570: (3, 40, 65, 40, 80, 40, 65),
571: (3, 60, 105, 60, 120, 60, 105),
572: (1, 55, 50, 40, 40, 40, 75),
573: (1, 75, 95, 60, 65, 60, 115),
574: (3, 45, 30, 50, 55, 65, 45),
575: (3, 60, 45, 70, 75, 85, 55),
576: (3, 70, 55, 95, 95, 110, 65),
577: (3, 45, 30, 40, 105, 50, 20),
578: (3, 65, 40, 50, 125, 60, 30),
579: (3, 110, 65, 75, 125, 85, 30),
580: (2, 62, 44, 50, 44, 50, 55),
581: (2, 75, 87, 63, 87, 63, 98),
582: (4, 36, 50, 50, 65, 60, 44),
583: (4, 51, 65, 65, 80, 75, 59),
584: (4, 71, 95, 85, 110, 95, 79),
585: (2, 60, 60, 50, 40, 50, 75),
586: (2, 80, 100, 70, 60, 70, 95),
587: (2, 55, 75, 60, 75, 60, 103),
588: (2, 50, 75, 45, 40, 45, 60),
589: (2, 70, 135, 105, 60, 105, 20),
590: (2, 69, 55, 45, 55, 55, 15),
591: (2, 114, 85, 70, 85, 80, 30),
592: (2, 55, 40, 50, 65, 85, 40),
593: (2, 100, 60, 70, 85, 105, 60),
594: (1, 165, 75, 80, 40, 45, 65),
595: (2, 50, 47, 50, 57, 50, 65),
596: (2, 70, 77, 60, 97, 60, 108),
597: (2, 44, 50, 91, 24, 86, 10),
598: (2, 74, 94, 131, 54, 116, 20),
599: (3, 40, 55, 70, 45, 60, 30),
600: (3, 60, 80, 95, 70, 85, 50),
601: (3, 60, 100, 115, 70, 85, 90),
602: (4, 35, 55, 40, 45, 40, 60),
603: (4, 65, 85, 70, 75, 70, 40),
604: (4, 85, 115, 80, 105, 80, 50),
605: (2, 55, 55, 55, 85, 55, 30),
606: (2, 75, 75, 75, 125, 95, 40),
607: (3, 50, 30, 55, 65, 55, 20),
608: (3, 60, 40, 60, 95, 60, 55),
609: (3, 60, 55, 90, 145, 90, 80),
610: (4, 46, 87, 60, 30, 40, 57),
611: (4, 66, 117, 70, 40, 50, 67),
612: (4, 76, 147, 90, 60, 70, 97),
613: (2, 55, 70, 40, 60, 40, 40),
614: (2, 95, 110, 80, 70, 80, 50),
615: (2, 70, 50, 30, 95, 135, 105),
616: (2, 50, 40, 85, 40, 65, 25),
617: (2, 80, 70, 40, 100, 60, 145),
618: (2, 109, 66, 84, 81, 99, 32),
619: (3, 45, 85, 50, 55, 50, 65),
620: (3, 65, 125, 60, 95, 60, 105),
621: (2, 77, 120, 90, 60, 90, 48),
622: (2, 59, 74, 50, 35, 50, 35),
623: (2, 89, 124, 80, 55, 80, 55),
624: (2, 45, 85, 70, 40, 40, 60),
625: (2, 65, 125, 100, 60, 70, 70),
626: (2, 95, 110, 95, 40, 95, 55),
627: (4, 70, 83, 50, 37, 50, 60),
628: (4, 100, 123, 75, 57, 75, 80),
629: (4, 70, 55, 75, 45, 65, 60),
630: (4, 110, 65, 105, 55, 95, 80),
631: (2, 85, 97, 66, 105, 66, 65),
632: (2, 58, 109, 112, 48, 48, 109),
633: (4, 52, 65, 50, 45, 50, 38),
634: (4, 72, 85, 70, 65, 70, 58),
635: (4, 92, 105, 90, 125, 90, 98),
636: (4, 55, 85, 55, 50, 55, 60),
637: (4, 85, 60, 65, 135, 105, 100),
638: (4, 91, 90, 129, 90, 72, 108),
639: (4, 91, 129, 90, 72, 90, 108),
640: (4, 91, 90, 72, 90, 129, 108),
641: (4, 79, 115, 70, 125, 80, 111),
642: (4, 79, 115, 70, 125, 80, 111),
643: (4, 100, 120, 100, 150, 120, 90),
644: (4, 100, 150, 120, 120, 100, 90),
645: (4, 89, 125, 90, 115, 80, 101),
646: (4, 125, 130, 90, 130, 90, 95),
647: (4, 91, 72, 90, 129, 90, 108),
648: (4, 100, 77, 77, 128, 128, 90),
649: (4, 71, 120, 95, 120, 95, 99)
}
# Exp lookup table
lvlexp = {
1: (0, 0, 0, 0, 0, 0),
2: (15, 6, 8, 9, 10, 4),
3: (52, 21, 27, 57, 33, 13),
4: (122, 51, 64, 96, 80, 32),
5: (237, 100, 125, 135, 156, 65),
6: (406, 172, 216, 179, 270, 112),
7: (637, 274, 343, 236, 428, 178),
8: (942, 409, 512, 314, 640, 276),
9: (1326, 583, 729, 419, 911, 393),
10: (1800, 800, 1000, 560, 1250, 540),
11: (2369, 1064, 1331, 742, 1663, 745),
12: (3041, 1382, 1728, 973, 2160, 967),
13: (3822, 1757, 2197, 1261, 2746, 1230),
14: (4719, 2195, 2744, 1612, 3430, 1591),
15: (5737, 2700, 3375, 2035, 4218, 1957),
16: (6881, 3276, 4096, 2535, 5120, 2457),
17: (8155, 3930, 4913, 3120, 6141, 3046),
18: (9564, 4665, 5832, 3798, 7290, 3732),
19: (11111, 5487, 6859, 4575, 8573, 4526),
20: (12800, 6400, 8000, 5460, 10000, 5440),
21: (14632, 7408, 9261, 6458, 11576, 6482),
22: (16610, 8518, 10648, 7577, 13310, 7666),
23: (18737, 9733, 12167, 8825, 15208, 9003),
24: (21012, 11059, 13824, 10208, 17280, 10506),
25: (23437, 12500, 15625, 11735, 19531, 12187),
26: (26012, 14060, 17576, 13411, 21970, 14060),
27: (28737, 15746, 19683, 15244, 24603, 16140),
28: (31610, 17561, 21952, 17242, 27440, 18439),
29: (34632, 19511, 24389, 19411, 30486, 20974),
30: (37800, 21600, 27000, 21760, 33750, 23760),
31: (41111, 23832, 29791, 24294, 37238, 26811),
32: (44564, 26214, 32768, 27021, 40960, 30146),
33: (48155, 28749, 35937, 29949, 44921, 33780),
34: (51881, 31443, 39304, 33084, 49130, 37731),
35: (55737, 34300, 42875, 36435, 53593, 42017),
36: (59719, 37324, 46656, 40007, 58320, 46656),
37: (63822, 40522, 50653, 43808, 63316, 50653),
38: (68041, 43897, 54872, 47846, 68590, 55969),
39: (72369, 47455, 59319, 52127, 74148, 60505),
40: (76800, 51200, 64000, 56660, 80000, 66560),
41: (81326, 55136, 68921, 61450, 86151, 71677),
42: (85942, 59270, 74088, 66505, 92610, 78533),
43: (90637, 63605, 79507, 71833, 99383, 84277),
44: (95406, 68147, 85184, 77440, 106480, 91998),
45: (100237, 72900, 91125, 83335, 113906, 98415),
46: (105122, 77868, 97336, 89523, 121670, 107069),
47: (110052, 83058, 103823, 96012, 129778, 114205),
48: (115015, 88473, 110592, 102810, 138240, 123863),
49: (120001, 94119, 117649, 109923, 147061, 131766),
50: (125000, 100000, 125000, 117360, 156250, 142500),
51: (131324, 106120, 132651, 125126, 165813, 151222),
52: (137795, 112486, 140608, 133229, 175760, 163105),
53: (144410, 119101, 148877, 141677, 186096, 172697),
54: (151165, 125971, 157464, 150476, 196830, 185807),
55: (158056, 133100, 166375, 159635, 207968, 196322),
56: (165079, 140492, 175616, 169159, 219520, 210739),
57: (172229, 148154, 185193, 179056, 231491, 222231),
58: (179503, 156089, 195112, 189334, 243890, 238036),
59: (186894, 164303, 205379, 199999, 256723, 250562),
60: (194400, 172800, 216000, 211060, 270000, 267840),
61: (202013, 181584, 226981, 222522, 283726, 281456),
62: (209728, 190662, 238328, 234393, 297910, 300293),
63: (217540, 200037, 250047, 246681, 312558, 315059),
64: (225443, 209715, 262144, 259392, 327680, 335544),
65: (233431, 219700, 274625, 272535, 343281, 351520),
66: (241496, 229996, 287496, 286115, 359370, 373744),
67: (249633, 240610, 300763, 300140, 375953, 390991),
68: (257834, 251545, 314432, 314618, 393040, 415050),
69: (267406, 262807, 328509, 329555, 410636, 433631),
70: (276458, 274400, 343000, 344960, 428750, 459620),
71: (286328, 286328, 357911, 360838, 447388, 479600),
72: (296358, 298598, 373248, 377197, 466560, 507617),
73: (305767, 311213, 389017, 394045, 486271, 529063),
74: (316074, 324179, 405224, 411388, 506530, 559209),
75: (326531, 337500, 421875, 429235, 527343, 582187),
76: (336255, 351180, 438976, 447591, 548720, 614566),
77: (346965, 365226, 456533, 466464, 570666, 639146),
78: (357812, 379641, 474552, 485862, 593190, 673863),
79: (367807, 394431, 493039, 505791, 616298, 700115),
80: (378880, 409600, 512000, 526260, 640000, 737280),
81: (390077, 425152, 531441, 547274, 664301, 765275),
82: (400293, 441094, 551368, 568841, 689210, 804997),
83: (411686, 457429, 571787, 590969, 714733, 834809),
84: (423190, 474163, 592704, 613664, 740880, 877201),
85: (433572, 491300, 614125, 636935, 767656, 908905),
86: (445239, 508844, 636056, 660787, 795070, 954084),
87: (457001, 526802, 658503, 685228, 823128, 987754),
88: (467489, 545177, 681472, 710266, 851840, 1035837),
89: (479378, 563975, 704969, 735907, 881211, 1071552),
90: (491346, 583200, 729000, 762160, 911250, 1122660),
91: (501878, 602856, 753571, 789030, 941963, 1160499),
92: (513934, 622950, 778688, 816525, 973360, 1214753),
93: (526049, 643485, 804357, 844653, 1005446, 1254796),
94: (536557, 664467, 830584, 873420, 1038230, 1312322),
95: (548720, 685900, 857375, 902835, 1071718, 1354652),
96: (560922, 707788, 884736, 932903, 1105920, 1415577),
97: (571333, 730138, 912673, 963632, 1140841, 1460276),
98: (583539, 752953, 941192, 995030, 1176490, 1524731),
99: (591882, 776239, 970299, 1027103, 1212873, 1571884),
100: (600000, 800000, 1000000, 1059860, 1250000, 1640000)
}
name = {
0xa1: '0',
0xa2: '1',
0xa3: '2',
0xa4: '3',
0xa5: '4',
0xa6: '5',
0xa7: '6',
0xa8: '7',
0xa9: '8',
0xaa: '9',
0xbb: 'A',
0xbc: 'B',
0xbd: 'C',
0xbe: 'D',
0xbf: 'E',
0xc0: 'F',
0xc1: 'G',
0xc2: 'H',
0xc3: 'I',
0xc4: 'J',
0xc5: 'K',
0xc6: 'L',
0xc7: 'M',
0xc8: 'N',
0xc9: 'O',
0xca: 'P',
0xcb: 'Q',
0xcc: 'R',
0xcd: 'S',
0xce: 'T',
0xcf: 'U',
0xd0: 'V',
0xd1: 'W',
0xd2: 'X',
0xd3: 'Y',
0xd4: 'Z',
0xd5: 'a',
0xd6: 'b',
0xd7: 'c',
0xd8: 'd',
0xd9: 'e',
0xda: 'f',
0xdb: 'g',
0xdc: 'h',
0xdd: 'i',
0xde: 'j',
0xdf: 'k',
0xe0: 'l',
0xe1: 'm',
0xe2: 'n',
0xe3: 'o',
0xe4: 'p',
0xe5: 'q',
0xe6: 'r',
0xe7: 's',
0xe8: 't',
0xe9: 'u',
0xea: 'v',
0xeb: 'w',
0xec: 'x',
0xed: 'y',
0xee: 'z'
}
abilities = {
1: ('\x41', '\x41'),
2: ('\x41', '\x41'),
3: ('\x41', '\x41'),
4: ('\x42', '\x42'),
5: ('\x42', '\x42'),
6: ('\x42', '\x42'),
7: ('\x43', '\x43'),
8: ('\x43', '\x43'),
9: ('\x43', '\x43'),
10: ('\x13', '\x13'),
11: ('\x3d', '\x3d'),
12: ('\x0e', '\x0e'),
13: ('\x13', '\x13'),
14: ('\x3d', '\x3d'),
15: ('\x44', '\x44'),
16: ('\x33', '\x33'),
17: ('\x33', '\x33'),
18: ('\x33', '\x33'),
19: ('\x32', '\x3e'),
20: ('\x32', '\x3e'),
21: ('\x33', '\x33'),
22: ('\x33', '\x33'),
23: ('\x3d', '\x16'),
24: ('\x3d', '\x16'),
25: ('\x09', '\x09'),
26: ('\x09', '\x09'),
27: ('\x08', '\x08'),
28: ('\x08', '\x08'),
29: ('\x26', '\x26'),
30: ('\x26', '\x26'),
31: ('\x26', '\x26'),
32: ('\x26', '\x26'),
33: ('\x26', '\x26'),
34: ('\x26', '\x26'),
35: ('\x38', '\x38'),
36: ('\x38', '\x38'),
37: ('\x12', '\x12'),
38: ('\x12', '\x12'),
39: ('\x38', '\x38'),
40: ('\x38', '\x38'),
41: ('\x27', '\x27'),
42: ('\x27', '\x27'),
43: ('\x22', '\x22'),
44: ('\x22', '\x22'),
45: ('\x22', '\x22'),
46: ('\x1b', '\x1b'),
47: ('\x1b', '\x1b'),
48: ('\x0e', '\x0e'),
49: ('\x13', '\x13'),
50: ('\x08', '\x47'),
51: ('\x08', '\x47'),
52: ('\x35', '\x35'),
53: ('\x07', '\x07'),
54: ('\x06', '\x0d'),
55: ('\x06', '\x0d'),
56: ('\x48', '\x48'),
57: ('\x48', '\x48'),
58: ('\x16', '\x12'),
59: ('\x16', '\x12'),
60: ('\x06', '\x0b'),
61: ('\x06', '\x0b'),
62: ('\x06', '\x0b'),
63: ('\x1c', '\x27'),
64: ('\x1c', '\x27'),
65: ('\x1c', '\x27'),
66: ('\x3e', '\x3e'),
67: ('\x3e', '\x3e'),
68: ('\x3e', '\x3e'),
69: ('\x22', '\x22'),
70: ('\x22', '\x22'),
71: ('\x22', '\x22'),
72: ('\x1d', '\x40'),
73: ('\x1d', '\x40'),
74: ('\x45', '\x05'),
75: ('\x45', '\x05'),
76: ('\x45', '\x05'),
77: ('\x32', '\x12'),
78: ('\x32', '\x12'),
79: ('\x0c', '\x14'),
80: ('\x0c', '\x14'),
81: ('\x2a', '\x05'),
82: ('\x2a', '\x05'),
83: ('\x33', '\x27'),
84: ('\x32', '\x30'),
85: ('\x32', '\x30'),
86: ('\x2f', '\x2f'),
87: ('\x2f', '\x2f'),
88: ('\x01', '\x3c'),
89: ('\x01', '\x3c'),
90: ('\x4b', '\x4b'),
91: ('\x4b', '\x4b'),
92: ('\x1a', '\x1a'),
93: ('\x1a', '\x1a'),
94: ('\x1a', '\x1a'),
95: ('\x45', '\x05'),
96: ('\x0f', '\x0f'),
97: ('\x0f', '\x0f'),
98: ('\x34', '\x4b'),
99: ('\x34', '\x4b'),
100: ('\x2b', '\x09'),
101: ('\x2b', '\x09'),
102: ('\x22', '\x22'),
103: ('\x22', '\x22'),
104: ('\x45', '\x1f'),
105: ('\x45', '\x1f'),
106: ('\x07', '\x07'),
107: ('\x33', '\x33'),
108: ('\x0c', '\x14'),
109: ('\x1a', '\x1a'),
110: ('\x1a', '\x1a'),
111: ('\x45', '\x1f'),
112: ('\x45', '\x1f'),
113: ('\x1e', '\x20'),
114: ('\x22', '\x22'),
115: ('\x30', '\x30'),
116: ('\x21', '\x21'),
117: ('\x26', '\x26'),
118: ('\x21', '\x29'),
119: ('\x21', '\x29'),
120: ('\x23', '\x1e'),
121: ('\x23', '\x1e'),
122: ('\x2b', '\x2b'),
123: ('\x44', '\x44'),
124: ('\x0c', '\x0c'),
125: ('\x09', '\x09'),
126: ('\x31', '\x31'),
127: ('\x34', '\x34'),
128: ('\x16', '\x16'),
129: ('\x21', '\x21'),
130: ('\x16', '\x16'),
131: ('\x0b', '\x4b'),
132: ('\x07', '\x07'),
133: ('\x32', '\x32'),
134: ('\x0b', '\x0b'),
135: ('\x0a', '\x0a'),
136: ('\x12', '\x12'),
137: ('\x24', '\x24'),
138: ('\x21', '\x4b'),
139: ('\x21', '\x4b'),
140: ('\x21', '\x04'),
141: ('\x21', '\x04'),
142: ('\x45', '\x2e'),
143: ('\x11', '\x2f'),
144: ('\x2e', '\x2e'),
145: ('\x2e', '\x2e'),
146: ('\x2e', '\x2e'),
147: ('\x3d', '\x3d'),
148: ('\x3d', '\x3d'),
149: ('\x27', '\x27'),
150: ('\x2e', '\x2e'),
151: ('\x1c', '\x1c'),
152: ('\x41', '\x41'),
153: ('\x41', '\x41'),
154: ('\x41', '\x41'),
155: ('\x42', '\x42'),
156: ('\x42', '\x42'),
157: ('\x42', '\x42'),
158: ('\x43', '\x43'),
159: ('\x43', '\x43'),
160: ('\x43', '\x43'),
161: ('\x32', '\x33'),
162: ('\x32', '\x33'),
163: ('\x0f', '\x33'),
164: ('\x0f', '\x33'),
165: ('\x44', '\x30'),
166: ('\x44', '\x30'),
167: ('\x0f', '\x44'),
168: ('\x0f', '\x44'),
169: ('\x27', '\x27'),
170: ('\x0a', '\x23'),
171: ('\x0a', '\x23'),
172: ('\x09', '\x09'),
173: ('\x38', '\x38'),
174: ('\x38', '\x38'),
175: ('\x37', '\x20'),
176: ('\x37', '\x20'),
177: ('\x1c', '\x30'),
178: ('\x1c', '\x30'),
179: ('\x09', '\x09'),
180: ('\x09', '\x09'),
181: ('\x09', '\x09'),
182: ('\x22', '\x22'),
183: ('\x2f', '\x25'),
184: ('\x2f', '\x25'),
185: ('\x45', '\x05'),
186: ('\x06', '\x0b'),
187: ('\x22', '\x22'),
188: ('\x22', '\x22'),
189: ('\x22', '\x22'),
190: ('\x32', '\x35'),
191: ('\x22', '\x22'),
192: ('\x22', '\x22'),
193: ('\x03', '\x0e'),
194: ('\x06', '\x0b'),
195: ('\x06', '\x0b'),
196: ('\x1c', '\x1c'),
197: ('\x1c', '\x1c'),
198: ('\x0f', '\x0f'),
199: ('\x0c', '\x14'),
200: ('\x1a', '\x1a'),
201: ('\x1a', '\x1a'),
202: ('\x17', '\x17'),
203: ('\x27', '\x30'),
204: ('\x05', '\x05'),
205: ('\x05', '\x05'),
206: ('\x20', '\x32'),
207: ('\x08', '\x34'),
208: ('\x45', '\x05'),
209: ('\x16', '\x32'),
210: ('\x16', '\x16'),
211: ('\x21', '\x26'),
212: ('\x44', '\x44'),
213: ('\x05', '\x05'),
214: ('\x44', '\x3e'),
215: ('\x27', '\x33'),
216: ('\x35', '\x35'),
217: ('\x3e', '\x3e'),
218: ('\x28', '\x31'),
219: ('\x28', '\x31'),
220: ('\x0c', '\x0c'),
221: ('\x0c', '\x0c'),
222: ('\x37', '\x1e'),
223: ('\x37', '\x37'),
224: ('\x15', '\x15'),
225: ('\x37', '\x48'),
226: ('\x21', '\x0b'),
227: ('\x33', '\x05'),
228: ('\x30', '\x12'),
229: ('\x30', '\x12'),
230: ('\x21', '\x21'),
231: ('\x35', '\x35'),
232: ('\x05', '\x05'),
233: ('\x24', '\x24'),
234: ('\x16', '\x16'),
235: ('\x14', '\x14'),
236: ('\x3e', '\x3e'),
237: ('\x16', '\x16'),
238: ('\x0c', '\x0c'),
239: ('\x09', '\x09'),
240: ('\x31', '\x31'),
241: ('\x2f', '\x2f'),
242: ('\x1e', '\x20'),
243: ('\x2e', '\x2e'),
244: ('\x2e', '\x2e'),
245: ('\x2e', '\x2e'),
246: ('\x3e', '\x3e'),
247: ('\x3d', '\x3d'),
248: ('\x2d', '\x2d'),
249: ('\x2e', '\x2e'),
250: ('\x2e', '\x2e'),
251: ('\x1e', '\x1e'),
252: ('\x41', '\x41'),
253: ('\x41', '\x41'),
254: ('\x41', '\x41'),
255: ('\x42', '\x42'),
256: ('\x42', '\x42'),
257: ('\x42', '\x42'),
258: ('\x43', '\x43'),
259: ('\x43', '\x43'),
260: ('\x43', '\x43'),
261: ('\x32', '\x32'),
262: ('\x16', '\x16'),
263: ('\x35', '\x35'),
264: ('\x35', '\x35'),
265: ('\x13', '\x13'),
266: ('\x3d', '\x3d'),
267: ('\x44', '\x44'),
268: ('\x3d', '\x3d'),
269: ('\x13', '\x13'),
270: ('\x21', '\x2c'),
271: ('\x21', '\x2c'),
272: ('\x21', '\x2c'),
273: ('\x22', '\x30'),
274: ('\x22', '\x30'),
275: ('\x22', '\x30'),
276: ('\x3e', '\x3e'),
277: ('\x3e', '\x3e'),
278: ('\x33', '\x33'),
279: ('\x33', '\x33'),
280: ('\x1c', '\x24'),
281: ('\x1c', '\x24'),
282: ('\x1c', '\x24'),
283: ('\x21', '\x21'),
284: ('\x16', '\x16'),
285: ('\x1b', '\x1b'),
286: ('\x1b', '\x1b'),
287: ('\x36', '\x36'),
288: ('\x48', '\x48'),
289: ('\x36', '\x36'),
290: ('\x0e', '\x0e'),
291: ('\x03', '\x03'),
292: ('\x19', '\x19'),
293: ('\x2b', '\x2b'),
294: ('\x2b', '\x2b'),
295: ('\x2b', '\x2b'),
296: ('\x2f', '\x3e'),
297: ('\x2f', '\x3e'),
298: ('\x2f', '\x3e'),
299: ('\x05', '\x2a'),
300: ('\x38', '\x38'),
301: ('\x38', '\x38'),
302: ('\x33', '\x33'),
303: ('\x34', '\x16'),
304: ('\x45', '\x05'),
305: ('\x45', '\x05'),
306: ('\x45', '\x05'),
307: ('\x4a', '\x4a'),
308: ('\x4a', '\x4a'),
309: ('\x09', '\x1f'),
310: ('\x09', '\x1f'),
311: ('\x39', '\x39'),
312: ('\x3a', '\x3a'),
313: ('\x23', '\x44'),
314: ('\x0c', '\x0c'),
315: ('\x1e', '\x26'),
316: ('\x40', '\x3c'),
317: ('\x40', '\x3c'),
318: ('\x18', '\x18'),
319: ('\x18', '\x18'),
320: ('\x29', '\x0c'),
321: ('\x29', '\x0c'),
322: ('\x0c', '\x0c'),
323: ('\x28', '\x28'),
324: ('\x49', '\x49'),
325: ('\x2f', '\x14'),
326: ('\x2f', '\x14'),
327: ('\x14', '\x14'),
328: ('\x34', '\x47'),
329: ('\x1a', '\x1a'),
330: ('\x1a', '\x1a'),
331: ('\x08', '\x08'),
332: ('\x08', '\x08'),
333: ('\x1e', '\x1e'),
334: ('\x1e', '\x1e'),
335: ('\x11', '\x11'),
336: ('\x3d', '\x3d'),
337: ('\x1a', '\x1a'),
338: ('\x1a', '\x1a'),
339: ('\x0c', '\x0c'),
340: ('\x0c', '\x0c'),
341: ('\x34', '\x4b'),
342: ('\x34', '\x4b'),
343: ('\x1a', '\x1a'),
344: ('\x1a', '\x1a'),
345: ('\x15', '\x15'),
346: ('\x15', '\x15'),
347: ('\x04', '\x04'),
348: ('\x04', '\x04'),
349: ('\x21', '\x21'),
350: ('\x3f', '\x3f'),
351: ('\x3b', '\x3b'),
352: ('\x10', '\x10'),
353: ('\x0f', '\x0f'),
354: ('\x0f', '\x0f'),
355: ('\x1a', '\x1a'),
356: ('\x2e', '\x2e'),
357: ('\x22', '\x22'),
358: ('\x1a', '\x1a'),
359: ('\x2e', '\x2e'),
360: ('\x17', '\x17'),
361: ('\x27', '\x27'),
362: ('\x27', '\x27'),
363: ('\x2f', '\x2f'),
364: ('\x2f', '\x2f'),
365: ('\x2f', '\x2f'),
366: ('\x4b', '\x4b'),
367: ('\x21', '\x21'),
368: ('\x21', '\x21'),
369: ('\x21', '\x45'),
370: ('\x21', '\x21'),
371: ('\x45', '\x45'),
372: ('\x45', '\x45'),
373: ('\x16', '\x16'),
374: ('\x1d', '\x1d'),
375: ('\x1d', '\x1d'),
376: ('\x1d', '\x1d'),
377: ('\x1d', '\x1d'),
378: ('\x1d', '\x1d'),
379: ('\x1d', '\x1d'),
380: ('\x1a', '\x1a'),
381: ('\x1a', '\x1a'),
382: ('\x02', '\x02'),
383: ('\x46', '\x46'),
384: ('\x4c', '\x4c'),
385: ('\x20', '\x20'),
386: ('\x2e', '\x2e')
}
gender = {
1: '87.5 %',
2: '87.5 %',
3: '87.5 %',
4: '87.5 %',
5: '87.5 %',
6: '87.5 %',
7: '87.5 %',
8: '87.5 %',
9: '87.5 %',
10: '50 %',
11: '50 %',
12: '50 %',
13: '50 %',
14: '50 %',
15: '50 %',
16: '50 %',
17: '50 %',
18: '50 %',
19: '50 %',
20: '50 %',
21: '50 %',
22: '50 %',
23: '50 %',
24: '50 %',
25: '50 %',
26: '50 %',
27: '50 %',
28: '50 %',
29: '0 %',
30: '0 %',
31: '0 %',
32: '100 %',
33: '100 %',
34: '100 %',
35: '25 %',
36: '25 %',
37: '25 %',
38: '25 %',
39: '25 %',
40: '25 %',
41: '50 %',
42: '50 %',
43: '50 %',
44: '50 %',
45: '50 %',
46: '50 %',
47: '50 %',
48: '50 %',
49: '50 %',
50: '50 %',
51: '50 %',
52: '50 %',
53: '50 %',
54: '50 %',
55: '50 %',
56: '50 %',
57: '50 %',
58: '75 %',
59: '75 %',
60: '50 %',
61: '50 %',
62: '50 %',
63: '75 %',
64: '75 %',
65: '75 %',
66: '75 %',
67: '75 %',
68: '75 %',
69: '50 %',
70: '50 %',
71: '50 %',
72: '50 %',
73: '50 %',
74: '50 %',
75: '50 %',
76: '50 %',
77: '50 %',
78: '50 %',
79: '50 %',
80: '50 %',
81: 'Genderless',
82: 'Genderless',
83: '50 %',
84: '50 %',
85: '50 %',
86: '50 %',
87: '50 %',
88: '50 %',
89: '50 %',
90: '50 %',
91: '50 %',
92: '50 %',
93: '50 %',
94: '50 %',
95: '50 %',
96: '50 %',
97: '50 %',
98: '50 %',
99: '50 %',
100: 'Genderless',
101: 'Genderless',
102: '50 %',
103: '50 %',
104: '50 %',
105: '50 %',
106: '100 %',
107: '100 %',
108: '50 %',
109: '50 %',
110: '50 %',
111: '50 %',
112: '50 %',
113: '0 %',
114: '50 %',
115: '0 %',
116: '50 %',
117: '50 %',
118: '50 %',
119: '50 %',
120: 'Genderless',
121: 'Genderless',
122: '50 %',
123: '50 %',
124: '0 %',
125: '75 %',
126: '75 %',
127: '50 %',
128: '100 %',
129: '50 %',
130: '50 %',
131: '50 %',
132: 'Genderless',
133: '87.5 %',
134: '87.5 %',
135: '87.5 %',
136: '87.5 %',
137: 'Genderless',
138: '87.5 %',
139: '87.5 %',
140: '87.5 %',
141: '87.5 %',
142: '87.5 %',
143: '87.5 %',
144: 'Genderless',
145: 'Genderless',
146: 'Genderless',
147: '50 %',
148: '50 %',
149: '50 %',
150: 'Genderless',
151: 'Genderless',
152: '87.5 %',
153: '87.5 %',
154: '87.5 %',
155: '87.5 %',
156: '87.5 %',
157: '87.5 %',
158: '87.5 %',
159: '87.5 %',
160: '87.5 %',
161: '50 %',
162: '50 %',
163: '50 %',
164: '50 %',
165: '50 %',
166: '50 %',
167: '50 %',
168: '50 %',
169: '50 %',
170: '50 %',
171: '50 %',
172: '50 %',
173: '25 %',
174: '25 %',
175: '87.5 %',
176: '87.5 %',
177: '50 %',
178: '50 %',
179: '50 %',
180: '50 %',
181: '50 %',
182: '50 %',
183: '50 %',
184: '50 %',
185: '50 %',
186: '50 %',
187: '50 %',
188: '50 %',
189: '50 %',
190: '50 %',
191: '50 %',
192: '50 %',
193: '50 %',
194: '50 %',
195: '50 %',
196: '87.5 %',
197: '87.5 %',
198: '50 %',
199: '50 %',
200: '50 %',
201: 'Genderless',
202: '50 %',
203: '50 %',
204: '50 %',
205: '50 %',
206: '50 %',
207: '50 %',
208: '50 %',
209: '25 %',
210: '25 %',
211: '50 %',
212: '50 %',
213: '50 %',
214: '50 %',
215: '50 %',
216: '50 %',
217: '50 %',
218: '50 %',
219: '50 %',
220: '50 %',
221: '50 %',
222: '25 %',
223: '50 %',
224: '50 %',
225: '50 %',
226: '50 %',
227: '50 %',
228: '50 %',
229: '50 %',
230: '50 %',
231: '50 %',
232: '50 %',
233: 'Genderless',
234: '50 %',
235: '50 %',
236: '100 %',
237: '100 %',
238: '0 %',
239: '75 %',
240: '75 %',
241: '0 %',
242: '0 %',
243: 'Genderless',
244: 'Genderless',
245: 'Genderless',
246: '50 %',
247: '50 %',
248: '50 %',
249: 'Genderless',
250: 'Genderless',
251: 'Genderless',
252: '87.5 %',
253: '87.5 %',
254: '87.5 %',
255: '87.5 %',
256: '87.5 %',
257: '87.5 %',
258: '87.5 %',
259: '87.5 %',
260: '87.5 %',
261: '50 %',
262: '50 %',
263: '50 %',
264: '50 %',
265: '50 %',
266: '50 %',
267: '50 %',
268: '50 %',
269: '50 %',
270: '50 %',
271: '50 %',
272: '50 %',
273: '50 %',
274: '50 %',
275: '50 %',
276: '50 %',
277: '50 %',
278: '50 %',
279: '50 %',
280: '50 %',
281: '50 %',
282: '50 %',
283: '50 %',
284: '50 %',
285: '50 %',
286: '50 %',
287: '50 %',
288: '50 %',
289: '50 %',
290: '50 %',
291: '50 %',
292: 'Genderless',
293: '50 %',
294: '50 %',
295: '50 %',
296: '75 %',
297: '75 %',
298: '75 %',
299: '50 %',
300: '25 %',
301: '25 %',
302: '50 %',
303: '50 %',
304: '50 %',
305: '50 %',
306: '50 %',
307: '50 %',
308: '50 %',
309: '50 %',
310: '50 %',
311: '50 %',
312: '50 %',
313: '100 %',
314: '0 %',
315: '50 %',
316: '50 %',
317: '50 %',
318: '50 %',
319: '50 %',
320: '50 %',
321: '50 %',
322: '50 %',
323: '50 %',
324: '50 %',
325: '50 %',
326: '50 %',
327: '50 %',
328: '50 %',
329: '50 %',
330: '50 %',
331: '50 %',
332: '50 %',
333: '50 %',
334: '50 %',
335: '50 %',
336: '50 %',
337: 'Genderless',
338: 'Genderless',
339: '50 %',
340: '50 %',
341: '50 %',
342: '50 %',
343: 'Genderless',
344: 'Genderless',
345: '87.5 %',
346: '87.5 %',
347: '87.5 %',
348: '87.5 %',
349: '50 %',
350: '50 %',
351: '50 %',
352: '50 %',
353: '50 %',
354: '50 %',
355: '50 %',
356: '50 %',
357: '50 %',
358: '50 %',
359: '50 %',
360: '50 %',
361: '50 %',
362: '50 %',
363: '50 %',
364: '50 %',
365: '50 %',
366: '50 %',
367: '50 %',
368: '50 %',
369: '87.5 %',
370: '25 %',
371: '50 %',
372: '50 %',
373: '50 %',
374: 'Genderless',
375: 'Genderless',
376: 'Genderless',
377: 'Genderless',
378: 'Genderless',
379: 'Genderless',
380: '0 %',
381: '100 %',
382: 'Genderless',
383: 'Genderless',
384: 'Genderless',
385: 'Genderless',
386: 'Genderless'
}
unown = {
0: 0x00,
1: 0x08,
2: 0x10,
3: 0x18,
4: 0x20,
5: 0x28,
6: 0x30,
7: 0x38,
8: 0x40,
9: 0x48,
10: 0x50,
11: 0x58,
12: 0x60,
13: 0x68,
14: 0x70,
15: 0x78,
16: 0x80,
17: 0x88,
18: 0x90,
19: 0x98,
20: 0xa0,
21: 0xa8,
22: 0xb0,
23: 0xb8,
24: 0xc0,
25: 0xc8,
26: 0xd0,
27: 0xd8
}
pokemonindex = {
1: 1,
2: 2,
3: 3,
4: 4,
5: 5,
6: 6,
7: 7,
8: 8,
9: 9,
10: 10,
11: 11,
12: 12,
13: 13,
14: 14,
15: 15,
16: 16,
17: 17,
18: 18,
19: 19,
20: 20,
21: 21,
22: 22,
23: 23,
24: 24,
25: 25,
26: 26,
27: 27,
28: 28,
29: 29,
30: 30,
31: 31,
32: 32,
33: 33,
34: 34,
35: 35,
36: 36,
37: 37,
38: 38,
39: 39,
40: 40,
41: 41,
42: 42,
43: 43,
44: 44,
45: 45,
46: 46,
47: 47,
48: 48,
49: 49,
50: 50,
51: 51,
52: 52,
53: 53,
54: 54,
55: 55,
56: 56,
57: 57,
58: 58,
59: 59,
60: 60,
61: 61,
62: 62,
63: 63,
64: 64,
65: 65,
66: 66,
67: 67,
68: 68,
69: 69,
70: 70,
71: 71,
72: 72,
73: 73,
74: 74,
75: 75,
76: 76,
77: 77,
78: 77,
79: 79,
80: 80,
81: 81,
82: 82,
83: 83,
84: 84,
85: 85,
86: 86,
87: 87,
88: 88,
89: 89,
90: 90,
91: 91,
92: 92,
93: 93,
94: 94,
95: 95,
96: 96,
97: 97,
98: 98,
99: 99,
100: 100,
101: 101,
102: 102,
103: 103,
104: 104,
105: 105,
106: 106,
107: 107,
108: 108,
109: 109,
110: 110,
111: 111,
112: 112,
113: 113,
114: 114,
115: 115,
116: 116,
117: 117,
118: 118,
119: 119,
120: 120,
121: 121,
122: 122,
123: 123,
124: 124,
125: 125,
126: 126,
127: 127,
128: 128,
129: 129,
130: 130,
131: 131,
132: 132,
133: 133,
134: 134,
135: 135,
136: 136,
137: 137,
138: 138,
139: 139,
140: 140,
141: 141,
142: 142,
143: 143,
144: 144,
145: 145,
146: 146,
147: 147,
148: 148,
149: 149,
150: 150,
151: 151,
152: 152,
153: 153,
154: 154,
155: 155,
156: 156,
157: 157,
158: 158,
159: 159,
160: 160,
161: 161,
162: 162,
163: 163,
164: 164,
165: 165,
166: 166,
167: 167,
168: 168,
169: 169,
170: 170,
171: 171,
172: 172,
173: 173,
174: 174,
175: 175,
176: 176,
177: 177,
178: 178,
179: 179,
180: 180,
181: 181,
182: 182,
183: 183,
184: 184,
185: 185,
186: 186,
187: 187,
188: 188,
189: 189,
190: 190,
191: 191,
192: 192,
193: 193,
194: 194,
195: 195,
196: 196,
197: 197,
198: 198,
199: 199,
200: 200,
201: 201,
202: 202,
203: 203,
204: 204,
205: 205,
206: 206,
207: 207,
208: 208,
209: 209,
210: 210,
211: 211,
212: 212,
213: 213,
214: 214,
215: 215,
216: 216,
217: 217,
218: 218,
219: 219,
220: 220,
221: 221,
222: 222,
223: 223,
224: 224,
225: 225,
226: 226,
227: 227,
228: 228,
229: 229,
230: 230,
231: 231,
232: 232,
233: 233,
234: 234,
235: 235,
236: 236,
237: 237,
238: 238,
239: 239,
240: 240,
241: 241,
242: 242,
243: 243,
244: 244,
245: 245,
246: 246,
247: 247,
248: 248,
249: 249,
250: 250,
251: 251,
277: 252,
278: 253,
279: 254,
280: 255,
281: 256,
282: 257,
283: 258,
284: 259,
285: 260,
286: 261,
287: 262,
288: 263,
289: 264,
290: 265,
291: 266,
292: 267,
293: 268,
294: 269,
295: 270,
296: 271,
297: 272,
298: 273,
299: 274,
300: 275,
301: 290,
302: 291,
303: 292,
304: 276,
305: 277,
306: 285,
307: 286,
308: 327,
309: 278,
310: 279,
311: 283,
312: 284,
313: 320,
314: 321,
315: 300,
316: 301,
317: 352,
318: 343,
319: 344,
320: 299,
321: 324,
322: 302,
323: 339,
324: 340,
325: 370,
326: 341,
327: 342,
328: 349,
329: 350,
330: 318,
331: 319,
332: 328,
333: 329,
334: 330,
335: 296,
336: 297,
337: 309,
338: 310,
339: 322,
340: 323,
341: 363,
342: 364,
343: 365,
344: 331,
345: 332,
346: 361,
347: 362,
348: 337,
349: 338,
350: 298,
351: 325,
352: 326,
353: 311,
354: 312,
355: 303,
356: 307,
357: 308,
358: 333,
359: 334,
360: 360,
361: 355,
362: 356,
363: 315,
364: 287,
365: 288,
366: 289,
367: 316,
368: 317,
369: 357,
370: 293,
371: 294,
372: 295,
373: 366,
374: 367,
375: 368,
376: 359,
377: 353,
378: 354,
379: 336,
380: 335,
381: 369,
382: 304,
383: 305,
384: 306,
385: 351,
386: 313,
387: 314,
388: 345,
389: 346,
390: 347,
391: 348,
392: 280,
393: 281,
394: 282,
395: 371,
396: 372,
397: 373,
398: 374,
399: 375,
400: 376,
401: 377,
402: 378,
403: 379,
404: 382,
405: 383,
406: 384,
407: 380,
408: 381,
409: 385,
410: 386,
411: 358
}
movepp = {
0: 0,
1: 35,
2: 25,
3: 10,
4: 15,
5: 20,
6: 20,
7: 15,
8: 15,
9: 15,
10: 35,
11: 30,
12: 5,
13: 10,
14: 30,
15: 30,
16: 35,
17: 35,
18: 20,
19: 15,
20: 20,
21: 20,
22: 15,
23: 20,
24: 30,
25: 5,
26: 25,
27: 15,
28: 15,
29: 15,
30: 25,
31: 20,
32: 5,
33: 35,
34: 15,
35: 20,
36: 20,
37: 20,
38: 15,
39: 30,
40: 35,
41: 20,
42: 20,
43: 30,
44: 25,
45: 40,
46: 20,
47: 15,
48: 20,
49: 20,
50: 20,
51: 30,
52: 25,
53: 15,
54: 30,
55: 25,
56: 5,
57: 15,
58: 10,
59: 5,
60: 20,
61: 20,
62: 20,
63: 5,
64: 35,
65: 20,
66: 25,
67: 20,
68: 20,
69: 20,
70: 15,
71: 25,
72: 15,
73: 10,
74: 40,
75: 25,
76: 10,
77: 35,
78: 30,
79: 15,
80: 20,
81: 40,
82: 10,
83: 15,
84: 30,
85: 15,
86: 20,
87: 10,
88: 15,
89: 10,
90: 5,
91: 10,
92: 10,
93: 25,
94: 10,
95: 20,
96: 40,
97: 30,
98: 30,
99: 20,
100: 20,
101: 15,
102: 10,
103: 40,
104: 15,
105: 10,
106: 30,
107: 20,
108: 20,
109: 10,
110: 40,
111: 40,
112: 30,
113: 30,
114: 30,
115: 20,
116: 30,
117: 10,
118: 10,
119: 20,
120: 5,
121: 10,
122: 30,
123: 20,
124: 20,
125: 20,
126: 5,
127: 15,
128: 10,
129: 20,
130: 15,
131: 15,
132: 35,
133: 20,
134: 15,
135: 10,
136: 20,
137: 30,
138: 15,
139: 40,
140: 20,
141: 15,
142: 10,
143: 5,
144: 10,
145: 30,
146: 10,
147: 15,
148: 20,
149: 15,
150: 40,
151: 40,
152: 10,
153: 5,
154: 15,
155: 10,
156: 10,
157: 10,
158: 15,
159: 30,
160: 30,
161: 10,
162: 10,
163: 20,
164: 10,
165: 1,
166: 1,
167: 10,
168: 10,
169: 10,
170: 5,
171: 15,
172: 25,
173: 15,
174: 10,
175: 15,
176: 30,
177: 5,
178: 40,
179: 15,
180: 10,
181: 25,
182: 10,
183: 30,
184: 10,
185: 20,
186: 10,
187: 10,
188: 10,
189: 10,
190: 10,
191: 20,
192: 5,
193: 40,
194: 5,
195: 5,
196: 15,
197: 5,
198: 10,
199: 5,
200: 15,
201: 10,
202: 10,
203: 10,
204: 20,
205: 20,
206: 40,
207: 15,
208: 10,
209: 20,
210: 20,
211: 25,
212: 5,
213: 15,
214: 10,
215: 5,
216: 20,
217: 15,
218: 20,
219: 25,
220: 20,
221: 5,
222: 30,
223: 5,
224: 10,
225: 20,
226: 40,
227: 5,
228: 20,
229: 40,
230: 20,
231: 15,
232: 35,
233: 10,
234: 5,
235: 5,
236: 5,
237: 15,
238: 5,
239: 20,
240: 5,
241: 5,
242: 15,
243: 20,
244: 10,
245: 5,
246: 5,
247: 15,
248: 15,
249: 15,
250: 15,
251: 10,
252: 10,
253: 10,
254: 20,
255: 10,
256: 10,
257: 10,
258: 10,
259: 15,
260: 15,
261: 15,
262: 10,
263: 20,
264: 20,
265: 10,
266: 20,
267: 20,
268: 20,
269: 20,
270: 20,
271: 10,
272: 10,
273: 10,
274: 20,
275: 20,
276: 5,
277: 15,
278: 10,
279: 10,
280: 15,
281: 10,
282: 20,
283: 5,
284: 5,
285: 10,
286: 10,
287: 20,
288: 5,
289: 10,
290: 20,
291: 10,
292: 20,
293: 20,
294: 20,
295: 5,
296: 5,
297: 15,
298: 20,
299: 10,
300: 15,
301: 20,
302: 15,
303: 10,
304: 10,
305: 15,
306: 10,
307: 5,
308: 5,
309: 10,
310: 15,
311: 10,
312: 5,
313: 20,
314: 25,
315: 5,
316: 40,
317: 10,
318: 5,
319: 40,
320: 15,
321: 20,
322: 20,
323: 5,
324: 15,
325: 20,
326: 30,
327: 15,
328: 15,
329: 5,
330: 10,
331: 30,
332: 20,
333: 30,
334: 15,
335: 5,
336: 40,
337: 15,
338: 5,
339: 20,
340: 5,
341: 15,
342: 25,
343: 40,
344: 15,
345: 20,
346: 15,
347: 20,
348: 15,
349: 20,
350: 10,
351: 20,
352: 20,
353: 5,
354: 5
}