
# line 1 "mpf.rl"
require "rubygems"
require "awesome_print"


# line 41 "mpf.rl"


class MPF
  attr_accessor :eof
  def parse(string)
    
# line 15 "mpf.rb"
class << self
	attr_accessor :_mpf_actions
	private :_mpf_actions, :_mpf_actions=
end
self._mpf_actions = [
	0, 1, 0, 1, 1, 1, 2, 1, 
	3
]

class << self
	attr_accessor :_mpf_key_offsets
	private :_mpf_key_offsets, :_mpf_key_offsets=
end
self._mpf_key_offsets = [
	0, 0, 10, 21, 25, 34, 44, 48, 
	58, 69, 73, 74, 88, 90, 95, 100, 
	110, 121, 133, 144, 146, 147, 153, 154, 
	159, 166, 177, 179, 180, 182, 185, 198, 
	210, 223, 229, 240, 252, 258, 270, 283, 
	289, 292, 306, 309, 311, 318, 325, 337, 
	350, 356, 359, 373, 376, 383, 385, 387, 
	394, 406, 419, 425, 428, 442, 454, 466, 
	472, 485, 497, 510, 516, 527, 541, 552, 
	555, 558, 566, 569, 576, 585, 596, 599, 
	602, 609, 616, 628, 631, 635, 649, 662, 
	676, 683, 695, 708, 715, 728, 742, 749, 
	753, 767, 771, 774, 782, 790, 803, 817, 
	824, 828, 842, 855, 868, 875, 889, 902, 
	916, 923, 935, 950, 961, 969, 977, 984, 
	991, 1003, 1016, 1022, 1025, 1039, 1042, 1050, 
	1053, 1060, 1069, 1080, 1083, 1090, 1092, 1094, 
	1097, 1110, 1122, 1135, 1141, 1152, 1164, 1170, 
	1182, 1195, 1201, 1204, 1218, 1232, 1243, 1246, 
	1249, 1257, 1260, 1267, 1276, 1287, 1290, 1293, 
	1297, 1311, 1324, 1338, 1345, 1357, 1370, 1377, 
	1390, 1404, 1411, 1415, 1429, 1433, 1436, 1444, 
	1452, 1465, 1479, 1486, 1490, 1504, 1517, 1530, 
	1537, 1551, 1564, 1578, 1585, 1597, 1612, 1623, 
	1631, 1639, 1642, 1644, 1647, 1655, 1658, 1665, 
	1674, 1685, 1688, 1696, 1699, 1706, 1715, 1726, 
	1730, 1734, 1747, 1759, 1772, 1778, 1789, 1801, 
	1807, 1821, 1832, 1835, 1838, 1840, 1842, 1850, 
	1853, 1860, 1869, 1880, 1883, 1886, 1899, 1911, 
	1924, 1930, 1941, 1953, 1959, 1971, 1984, 1990, 
	1993, 2007, 2010, 2017, 2024, 2036, 2039, 2047, 
	2055, 2068, 2082, 2089, 2093, 2107, 2111, 2120, 
	2124, 2132, 2142, 2153, 2161, 2169, 2182, 2187, 
	2200, 2213, 2220, 2234, 2247, 2261, 2268, 2280, 
	2295, 2306, 2314, 2322, 2335, 2349, 2356, 2360, 
	2374, 2378, 2387, 2391, 2399, 2409, 2420, 2428, 
	2436, 2449, 2463, 2470, 2474, 2488, 2492, 2496, 
	2505, 2509, 2517, 2527, 2538, 2546, 2554, 2567, 
	2572, 2575, 2579, 2593, 2606, 2620, 2627, 2639, 
	2652, 2659, 2674, 2685, 2689, 2692, 2696, 2705, 
	2709, 2717, 2727, 2738, 2742, 2751, 2755, 2763, 
	2773, 2784, 2788, 2797, 2801, 2809, 2819, 2830, 
	2835, 2840, 2844, 2847, 2851, 2865, 2878, 2892, 
	2899, 2911, 2924, 2931, 2944, 2958, 2965, 2969, 
	2983, 2987, 2996, 3000, 3008, 3018, 3029, 3034, 
	3038, 3041, 3045, 3054, 3058, 3066, 3076, 3087, 
	3092, 3106, 3119, 3133, 3140, 3152, 3165, 3172, 
	3185, 3199, 3206, 3210, 3224, 3239, 3250, 3265, 
	3276, 3285, 3289, 3297, 3307, 3318, 3323, 3328, 
	3342, 3355, 3369, 3376, 3388, 3401, 3408, 3423, 
	3434, 3447, 3452, 3465, 3479, 3490, 3494, 3507, 
	3522, 3533, 3537, 3544, 3556, 3560, 3572, 3585, 
	3600, 3611, 3615, 3627, 3639, 3645, 3658, 3670, 
	3683, 3689, 3700, 3714, 3725, 3739, 3750, 3752, 
	3752, 3754, 3756, 3759, 3762, 3764, 3767, 3770, 
	3772, 3774, 3777, 3780, 3783, 3786, 3789
]

class << self
	attr_accessor :_mpf_trans_keys
	private :_mpf_trans_keys, :_mpf_trans_keys=
end
self._mpf_trans_keys = [
	32, 95, 9, 10, 48, 58, 65, 90, 
	97, 122, 32, 95, 123, 9, 10, 48, 
	58, 65, 90, 97, 122, 32, 123, 9, 
	10, 32, 9, 10, 48, 57, 65, 90, 
	97, 122, 32, 58, 9, 10, 48, 57, 
	65, 90, 97, 122, 32, 58, 9, 10, 
	32, 95, 9, 10, 48, 57, 65, 90, 
	97, 122, 32, 61, 95, 9, 10, 48, 
	57, 65, 90, 97, 122, 32, 61, 9, 
	10, 62, 32, 34, 39, 43, 45, 93, 
	9, 10, 48, 58, 65, 91, 97, 122, 
	34, 92, 32, 44, 59, 9, 10, 32, 
	44, 59, 9, 10, 32, 125, 9, 10, 
	48, 57, 65, 90, 97, 122, 0, 32, 
	95, 9, 10, 48, 58, 65, 90, 97, 
	122, 32, 91, 95, 123, 9, 10, 48, 
	58, 65, 90, 97, 122, 34, 39, 43, 
	45, 93, 48, 58, 65, 91, 97, 122, 
	34, 92, 93, 32, 45, 60, 126, 9, 
	10, 62, 32, 9, 10, 65, 90, 91, 
	48, 58, 65, 90, 97, 122, 34, 39, 
	43, 45, 93, 48, 58, 65, 91, 97, 
	122, 34, 92, 93, 34, 92, 34, 92, 
	93, 0, 32, 34, 92, 95, 9, 10, 
	48, 58, 65, 90, 97, 122, 32, 34, 
	92, 95, 9, 10, 48, 58, 65, 90, 
	97, 122, 32, 34, 92, 95, 123, 9, 
	10, 48, 58, 65, 90, 97, 122, 32, 
	34, 92, 123, 9, 10, 32, 34, 92, 
	9, 10, 48, 57, 65, 90, 97, 122, 
	32, 34, 58, 92, 9, 10, 48, 57, 
	65, 90, 97, 122, 32, 34, 58, 92, 
	9, 10, 32, 34, 92, 95, 9, 10, 
	48, 57, 65, 90, 97, 122, 32, 34, 
	61, 92, 95, 9, 10, 48, 57, 65, 
	90, 97, 122, 32, 34, 61, 92, 9, 
	10, 34, 62, 92, 32, 34, 39, 43, 
	45, 92, 9, 10, 48, 58, 65, 93, 
	97, 122, 34, 92, 93, 34, 92, 32, 
	34, 44, 59, 92, 9, 10, 32, 34, 
	44, 59, 92, 9, 10, 32, 34, 92, 
	95, 9, 10, 48, 57, 65, 90, 97, 
	122, 32, 34, 61, 92, 95, 9, 10, 
	48, 57, 65, 90, 97, 122, 32, 34, 
	61, 92, 9, 10, 34, 62, 92, 32, 
	34, 39, 43, 45, 92, 9, 10, 48, 
	58, 65, 93, 97, 122, 34, 39, 92, 
	32, 39, 44, 59, 92, 9, 10, 39, 
	92, 39, 92, 32, 39, 44, 59, 92, 
	9, 10, 32, 39, 92, 95, 9, 10, 
	48, 57, 65, 90, 97, 122, 32, 39, 
	61, 92, 95, 9, 10, 48, 57, 65, 
	90, 97, 122, 32, 39, 61, 92, 9, 
	10, 39, 62, 92, 32, 34, 39, 43, 
	45, 92, 9, 10, 48, 58, 65, 93, 
	97, 122, 32, 39, 92, 125, 9, 10, 
	48, 57, 65, 90, 97, 122, 32, 39, 
	58, 92, 9, 10, 48, 57, 65, 90, 
	97, 122, 32, 39, 58, 92, 9, 10, 
	0, 32, 39, 92, 95, 9, 10, 48, 
	58, 65, 90, 97, 122, 32, 39, 92, 
	95, 9, 10, 48, 58, 65, 90, 97, 
	122, 32, 39, 92, 95, 123, 9, 10, 
	48, 58, 65, 90, 97, 122, 32, 39, 
	92, 123, 9, 10, 32, 39, 92, 9, 
	10, 48, 57, 65, 90, 97, 122, 32, 
	39, 91, 92, 95, 123, 9, 10, 48, 
	58, 65, 90, 97, 122, 34, 39, 43, 
	45, 92, 48, 58, 65, 93, 97, 122, 
	34, 39, 92, 39, 92, 93, 32, 39, 
	45, 60, 92, 126, 9, 10, 39, 62, 
	92, 32, 39, 92, 9, 10, 65, 90, 
	39, 91, 92, 48, 58, 65, 90, 97, 
	122, 34, 39, 43, 45, 92, 48, 58, 
	65, 93, 97, 122, 34, 39, 92, 39, 
	92, 93, 32, 34, 44, 59, 92, 9, 
	10, 32, 34, 44, 59, 92, 9, 10, 
	32, 34, 92, 125, 9, 10, 48, 57, 
	65, 90, 97, 122, 34, 39, 92, 34, 
	39, 92, 93, 0, 32, 34, 39, 92, 
	95, 9, 10, 48, 58, 65, 90, 97, 
	122, 32, 34, 39, 92, 95, 9, 10, 
	48, 58, 65, 90, 97, 122, 32, 34, 
	39, 92, 95, 123, 9, 10, 48, 58, 
	65, 90, 97, 122, 32, 34, 39, 92, 
	123, 9, 10, 32, 34, 39, 92, 9, 
	10, 48, 57, 65, 90, 97, 122, 32, 
	34, 39, 58, 92, 9, 10, 48, 57, 
	65, 90, 97, 122, 32, 34, 39, 58, 
	92, 9, 10, 32, 34, 39, 92, 95, 
	9, 10, 48, 57, 65, 90, 97, 122, 
	32, 34, 39, 61, 92, 95, 9, 10, 
	48, 57, 65, 90, 97, 122, 32, 34, 
	39, 61, 92, 9, 10, 34, 39, 62, 
	92, 32, 34, 39, 43, 45, 92, 9, 
	10, 48, 58, 65, 93, 97, 122, 34, 
	39, 92, 93, 34, 39, 92, 32, 34, 
	39, 44, 59, 92, 9, 10, 32, 34, 
	39, 44, 59, 92, 9, 10, 32, 34, 
	39, 92, 95, 9, 10, 48, 57, 65, 
	90, 97, 122, 32, 34, 39, 61, 92, 
	95, 9, 10, 48, 57, 65, 90, 97, 
	122, 32, 34, 39, 61, 92, 9, 10, 
	34, 39, 62, 92, 32, 34, 39, 43, 
	45, 92, 9, 10, 48, 58, 65, 93, 
	97, 122, 32, 34, 39, 92, 125, 9, 
	10, 48, 57, 65, 90, 97, 122, 32, 
	34, 39, 58, 92, 9, 10, 48, 57, 
	65, 90, 97, 122, 32, 34, 39, 58, 
	92, 9, 10, 0, 32, 34, 39, 92, 
	95, 9, 10, 48, 58, 65, 90, 97, 
	122, 32, 34, 39, 92, 95, 9, 10, 
	48, 58, 65, 90, 97, 122, 32, 34, 
	39, 92, 95, 123, 9, 10, 48, 58, 
	65, 90, 97, 122, 32, 34, 39, 92, 
	123, 9, 10, 32, 34, 39, 92, 9, 
	10, 48, 57, 65, 90, 97, 122, 32, 
	34, 39, 91, 92, 95, 123, 9, 10, 
	48, 58, 65, 90, 97, 122, 34, 39, 
	43, 45, 92, 48, 58, 65, 93, 97, 
	122, 32, 34, 39, 44, 59, 92, 9, 
	10, 32, 34, 39, 44, 59, 92, 9, 
	10, 32, 34, 44, 59, 92, 9, 10, 
	32, 34, 44, 59, 92, 9, 10, 32, 
	34, 92, 95, 9, 10, 48, 57, 65, 
	90, 97, 122, 32, 34, 61, 92, 95, 
	9, 10, 48, 57, 65, 90, 97, 122, 
	32, 34, 61, 92, 9, 10, 34, 62, 
	92, 32, 34, 39, 43, 45, 92, 9, 
	10, 48, 58, 65, 93, 97, 122, 34, 
	92, 93, 32, 34, 45, 60, 92, 126, 
	9, 10, 34, 62, 92, 32, 34, 92, 
	9, 10, 65, 90, 34, 91, 92, 48, 
	58, 65, 90, 97, 122, 34, 39, 43, 
	45, 92, 48, 58, 65, 93, 97, 122, 
	34, 39, 92, 32, 39, 44, 59, 92, 
	9, 10, 39, 92, 39, 92, 39, 92, 
	93, 0, 32, 39, 92, 95, 9, 10, 
	48, 58, 65, 90, 97, 122, 32, 39, 
	92, 95, 9, 10, 48, 58, 65, 90, 
	97, 122, 32, 39, 92, 95, 123, 9, 
	10, 48, 58, 65, 90, 97, 122, 32, 
	39, 92, 123, 9, 10, 32, 39, 92, 
	9, 10, 48, 57, 65, 90, 97, 122, 
	32, 39, 58, 92, 9, 10, 48, 57, 
	65, 90, 97, 122, 32, 39, 58, 92, 
	9, 10, 32, 39, 92, 95, 9, 10, 
	48, 57, 65, 90, 97, 122, 32, 39, 
	61, 92, 95, 9, 10, 48, 57, 65, 
	90, 97, 122, 32, 39, 61, 92, 9, 
	10, 39, 62, 92, 32, 34, 39, 43, 
	45, 92, 9, 10, 48, 58, 65, 93, 
	97, 122, 32, 39, 91, 92, 95, 123, 
	9, 10, 48, 58, 65, 90, 97, 122, 
	34, 39, 43, 45, 92, 48, 58, 65, 
	93, 97, 122, 34, 39, 92, 39, 92, 
	93, 32, 39, 45, 60, 92, 126, 9, 
	10, 39, 62, 92, 32, 39, 92, 9, 
	10, 65, 90, 39, 91, 92, 48, 58, 
	65, 90, 97, 122, 34, 39, 43, 45, 
	92, 48, 58, 65, 93, 97, 122, 34, 
	39, 92, 34, 39, 92, 34, 39, 92, 
	93, 0, 32, 34, 39, 92, 95, 9, 
	10, 48, 58, 65, 90, 97, 122, 32, 
	34, 39, 92, 95, 9, 10, 48, 58, 
	65, 90, 97, 122, 32, 34, 39, 92, 
	95, 123, 9, 10, 48, 58, 65, 90, 
	97, 122, 32, 34, 39, 92, 123, 9, 
	10, 32, 34, 39, 92, 9, 10, 48, 
	57, 65, 90, 97, 122, 32, 34, 39, 
	58, 92, 9, 10, 48, 57, 65, 90, 
	97, 122, 32, 34, 39, 58, 92, 9, 
	10, 32, 34, 39, 92, 95, 9, 10, 
	48, 57, 65, 90, 97, 122, 32, 34, 
	39, 61, 92, 95, 9, 10, 48, 57, 
	65, 90, 97, 122, 32, 34, 39, 61, 
	92, 9, 10, 34, 39, 62, 92, 32, 
	34, 39, 43, 45, 92, 9, 10, 48, 
	58, 65, 93, 97, 122, 34, 39, 92, 
	93, 34, 39, 92, 32, 34, 39, 44, 
	59, 92, 9, 10, 32, 34, 39, 44, 
	59, 92, 9, 10, 32, 34, 39, 92, 
	95, 9, 10, 48, 57, 65, 90, 97, 
	122, 32, 34, 39, 61, 92, 95, 9, 
	10, 48, 57, 65, 90, 97, 122, 32, 
	34, 39, 61, 92, 9, 10, 34, 39, 
	62, 92, 32, 34, 39, 43, 45, 92, 
	9, 10, 48, 58, 65, 93, 97, 122, 
	32, 34, 39, 92, 125, 9, 10, 48, 
	57, 65, 90, 97, 122, 32, 34, 39, 
	58, 92, 9, 10, 48, 57, 65, 90, 
	97, 122, 32, 34, 39, 58, 92, 9, 
	10, 0, 32, 34, 39, 92, 95, 9, 
	10, 48, 58, 65, 90, 97, 122, 32, 
	34, 39, 92, 95, 9, 10, 48, 58, 
	65, 90, 97, 122, 32, 34, 39, 92, 
	95, 123, 9, 10, 48, 58, 65, 90, 
	97, 122, 32, 34, 39, 92, 123, 9, 
	10, 32, 34, 39, 92, 9, 10, 48, 
	57, 65, 90, 97, 122, 32, 34, 39, 
	91, 92, 95, 123, 9, 10, 48, 58, 
	65, 90, 97, 122, 34, 39, 43, 45, 
	92, 48, 58, 65, 93, 97, 122, 32, 
	34, 39, 44, 59, 92, 9, 10, 32, 
	34, 39, 44, 59, 92, 9, 10, 34, 
	92, 93, 34, 92, 34, 92, 93, 32, 
	34, 45, 60, 92, 126, 9, 10, 34, 
	62, 92, 32, 34, 92, 9, 10, 65, 
	90, 34, 91, 92, 48, 58, 65, 90, 
	97, 122, 34, 39, 43, 45, 92, 48, 
	58, 65, 93, 97, 122, 34, 92, 93, 
	32, 34, 45, 60, 92, 126, 9, 10, 
	34, 62, 92, 32, 34, 92, 9, 10, 
	65, 90, 34, 91, 92, 48, 58, 65, 
	90, 97, 122, 34, 39, 43, 45, 92, 
	48, 58, 65, 93, 97, 122, 34, 45, 
	92, 126, 34, 45, 92, 126, 0, 32, 
	34, 92, 95, 9, 10, 48, 58, 65, 
	90, 97, 122, 32, 34, 92, 95, 9, 
	10, 48, 58, 65, 90, 97, 122, 32, 
	34, 92, 95, 123, 9, 10, 48, 58, 
	65, 90, 97, 122, 32, 34, 92, 123, 
	9, 10, 32, 34, 92, 9, 10, 48, 
	57, 65, 90, 97, 122, 32, 34, 58, 
	92, 9, 10, 48, 57, 65, 90, 97, 
	122, 32, 34, 58, 92, 9, 10, 32, 
	34, 91, 92, 95, 123, 9, 10, 48, 
	58, 65, 90, 97, 122, 34, 39, 43, 
	45, 92, 48, 58, 65, 93, 97, 122, 
	34, 39, 92, 39, 92, 93, 39, 92, 
	39, 92, 32, 39, 45, 60, 92, 126, 
	9, 10, 39, 62, 92, 32, 39, 92, 
	9, 10, 65, 90, 39, 91, 92, 48, 
	58, 65, 90, 97, 122, 34, 39, 43, 
	45, 92, 48, 58, 65, 93, 97, 122, 
	34, 39, 92, 39, 92, 93, 0, 32, 
	39, 92, 95, 9, 10, 48, 58, 65, 
	90, 97, 122, 32, 39, 92, 95, 9, 
	10, 48, 58, 65, 90, 97, 122, 32, 
	39, 92, 95, 123, 9, 10, 48, 58, 
	65, 90, 97, 122, 32, 39, 92, 123, 
	9, 10, 32, 39, 92, 9, 10, 48, 
	57, 65, 90, 97, 122, 32, 39, 58, 
	92, 9, 10, 48, 57, 65, 90, 97, 
	122, 32, 39, 58, 92, 9, 10, 32, 
	39, 92, 95, 9, 10, 48, 57, 65, 
	90, 97, 122, 32, 39, 61, 92, 95, 
	9, 10, 48, 57, 65, 90, 97, 122, 
	32, 39, 61, 92, 9, 10, 39, 62, 
	92, 32, 34, 39, 43, 45, 92, 9, 
	10, 48, 58, 65, 93, 97, 122, 34, 
	39, 92, 32, 39, 44, 59, 92, 9, 
	10, 32, 39, 44, 59, 92, 9, 10, 
	32, 39, 92, 125, 9, 10, 48, 57, 
	65, 90, 97, 122, 34, 39, 92, 32, 
	34, 39, 44, 59, 92, 9, 10, 32, 
	34, 39, 44, 59, 92, 9, 10, 32, 
	34, 39, 92, 95, 9, 10, 48, 57, 
	65, 90, 97, 122, 32, 34, 39, 61, 
	92, 95, 9, 10, 48, 57, 65, 90, 
	97, 122, 32, 34, 39, 61, 92, 9, 
	10, 34, 39, 62, 92, 32, 34, 39, 
	43, 45, 92, 9, 10, 48, 58, 65, 
	93, 97, 122, 34, 39, 92, 93, 32, 
	34, 39, 45, 60, 92, 126, 9, 10, 
	34, 39, 62, 92, 32, 34, 39, 92, 
	9, 10, 65, 90, 34, 39, 91, 92, 
	48, 58, 65, 90, 97, 122, 34, 39, 
	43, 45, 92, 48, 58, 65, 93, 97, 
	122, 32, 34, 39, 44, 59, 92, 9, 
	10, 32, 34, 39, 44, 59, 92, 9, 
	10, 32, 34, 39, 92, 125, 9, 10, 
	48, 57, 65, 90, 97, 122, 34, 39, 
	45, 92, 126, 32, 34, 39, 92, 125, 
	9, 10, 48, 57, 65, 90, 97, 122, 
	32, 34, 39, 58, 92, 9, 10, 48, 
	57, 65, 90, 97, 122, 32, 34, 39, 
	58, 92, 9, 10, 0, 32, 34, 39, 
	92, 95, 9, 10, 48, 58, 65, 90, 
	97, 122, 32, 34, 39, 92, 95, 9, 
	10, 48, 58, 65, 90, 97, 122, 32, 
	34, 39, 92, 95, 123, 9, 10, 48, 
	58, 65, 90, 97, 122, 32, 34, 39, 
	92, 123, 9, 10, 32, 34, 39, 92, 
	9, 10, 48, 57, 65, 90, 97, 122, 
	32, 34, 39, 91, 92, 95, 123, 9, 
	10, 48, 58, 65, 90, 97, 122, 34, 
	39, 43, 45, 92, 48, 58, 65, 93, 
	97, 122, 32, 34, 39, 44, 59, 92, 
	9, 10, 32, 34, 39, 44, 59, 92, 
	9, 10, 32, 34, 39, 92, 95, 9, 
	10, 48, 57, 65, 90, 97, 122, 32, 
	34, 39, 61, 92, 95, 9, 10, 48, 
	57, 65, 90, 97, 122, 32, 34, 39, 
	61, 92, 9, 10, 34, 39, 62, 92, 
	32, 34, 39, 43, 45, 92, 9, 10, 
	48, 58, 65, 93, 97, 122, 34, 39, 
	92, 93, 32, 34, 39, 45, 60, 92, 
	126, 9, 10, 34, 39, 62, 92, 32, 
	34, 39, 92, 9, 10, 65, 90, 34, 
	39, 91, 92, 48, 58, 65, 90, 97, 
	122, 34, 39, 43, 45, 92, 48, 58, 
	65, 93, 97, 122, 32, 34, 39, 44, 
	59, 92, 9, 10, 32, 34, 39, 44, 
	59, 92, 9, 10, 32, 34, 39, 92, 
	95, 9, 10, 48, 57, 65, 90, 97, 
	122, 32, 34, 39, 61, 92, 95, 9, 
	10, 48, 57, 65, 90, 97, 122, 32, 
	34, 39, 61, 92, 9, 10, 34, 39, 
	62, 92, 32, 34, 39, 43, 45, 92, 
	9, 10, 48, 58, 65, 93, 97, 122, 
	34, 39, 92, 93, 34, 39, 92, 93, 
	32, 34, 39, 45, 60, 92, 126, 9, 
	10, 34, 39, 62, 92, 32, 34, 39, 
	92, 9, 10, 65, 90, 34, 39, 91, 
	92, 48, 58, 65, 90, 97, 122, 34, 
	39, 43, 45, 92, 48, 58, 65, 93, 
	97, 122, 32, 34, 39, 44, 59, 92, 
	9, 10, 32, 34, 39, 44, 59, 92, 
	9, 10, 32, 34, 39, 92, 125, 9, 
	10, 48, 57, 65, 90, 97, 122, 34, 
	39, 45, 92, 126, 34, 39, 92, 34, 
	39, 92, 93, 0, 32, 34, 39, 92, 
	95, 9, 10, 48, 58, 65, 90, 97, 
	122, 32, 34, 39, 92, 95, 9, 10, 
	48, 58, 65, 90, 97, 122, 32, 34, 
	39, 92, 95, 123, 9, 10, 48, 58, 
	65, 90, 97, 122, 32, 34, 39, 92, 
	123, 9, 10, 32, 34, 39, 92, 9, 
	10, 48, 57, 65, 90, 97, 122, 32, 
	34, 39, 58, 92, 9, 10, 48, 57, 
	65, 90, 97, 122, 32, 34, 39, 58, 
	92, 9, 10, 32, 34, 39, 91, 92, 
	95, 123, 9, 10, 48, 58, 65, 90, 
	97, 122, 34, 39, 43, 45, 92, 48, 
	58, 65, 93, 97, 122, 34, 39, 92, 
	93, 34, 39, 92, 34, 39, 92, 93, 
	32, 34, 39, 45, 60, 92, 126, 9, 
	10, 34, 39, 62, 92, 32, 34, 39, 
	92, 9, 10, 65, 90, 34, 39, 91, 
	92, 48, 58, 65, 90, 97, 122, 34, 
	39, 43, 45, 92, 48, 58, 65, 93, 
	97, 122, 34, 39, 92, 93, 32, 34, 
	39, 45, 60, 92, 126, 9, 10, 34, 
	39, 62, 92, 32, 34, 39, 92, 9, 
	10, 65, 90, 34, 39, 91, 92, 48, 
	58, 65, 90, 97, 122, 34, 39, 43, 
	45, 92, 48, 58, 65, 93, 97, 122, 
	34, 39, 92, 93, 32, 34, 39, 45, 
	60, 92, 126, 9, 10, 34, 39, 62, 
	92, 32, 34, 39, 92, 9, 10, 65, 
	90, 34, 39, 91, 92, 48, 58, 65, 
	90, 97, 122, 34, 39, 43, 45, 92, 
	48, 58, 65, 93, 97, 122, 34, 39, 
	45, 92, 126, 34, 39, 45, 92, 126, 
	34, 39, 92, 93, 34, 39, 92, 34, 
	39, 92, 93, 0, 32, 34, 39, 92, 
	95, 9, 10, 48, 58, 65, 90, 97, 
	122, 32, 34, 39, 92, 95, 9, 10, 
	48, 58, 65, 90, 97, 122, 32, 34, 
	39, 92, 95, 123, 9, 10, 48, 58, 
	65, 90, 97, 122, 32, 34, 39, 92, 
	123, 9, 10, 32, 34, 39, 92, 9, 
	10, 48, 57, 65, 90, 97, 122, 32, 
	34, 39, 58, 92, 9, 10, 48, 57, 
	65, 90, 97, 122, 32, 34, 39, 58, 
	92, 9, 10, 32, 34, 39, 92, 95, 
	9, 10, 48, 57, 65, 90, 97, 122, 
	32, 34, 39, 61, 92, 95, 9, 10, 
	48, 57, 65, 90, 97, 122, 32, 34, 
	39, 61, 92, 9, 10, 34, 39, 62, 
	92, 32, 34, 39, 43, 45, 92, 9, 
	10, 48, 58, 65, 93, 97, 122, 34, 
	39, 92, 93, 32, 34, 39, 45, 60, 
	92, 126, 9, 10, 34, 39, 62, 92, 
	32, 34, 39, 92, 9, 10, 65, 90, 
	34, 39, 91, 92, 48, 58, 65, 90, 
	97, 122, 34, 39, 43, 45, 92, 48, 
	58, 65, 93, 97, 122, 34, 39, 45, 
	92, 126, 34, 39, 92, 93, 34, 39, 
	92, 34, 39, 92, 93, 32, 34, 39, 
	45, 60, 92, 126, 9, 10, 34, 39, 
	62, 92, 32, 34, 39, 92, 9, 10, 
	65, 90, 34, 39, 91, 92, 48, 58, 
	65, 90, 97, 122, 34, 39, 43, 45, 
	92, 48, 58, 65, 93, 97, 122, 34, 
	39, 45, 92, 126, 0, 32, 34, 39, 
	92, 95, 9, 10, 48, 58, 65, 90, 
	97, 122, 32, 34, 39, 92, 95, 9, 
	10, 48, 58, 65, 90, 97, 122, 32, 
	34, 39, 92, 95, 123, 9, 10, 48, 
	58, 65, 90, 97, 122, 32, 34, 39, 
	92, 123, 9, 10, 32, 34, 39, 92, 
	9, 10, 48, 57, 65, 90, 97, 122, 
	32, 34, 39, 58, 92, 9, 10, 48, 
	57, 65, 90, 97, 122, 32, 34, 39, 
	58, 92, 9, 10, 32, 34, 39, 92, 
	95, 9, 10, 48, 57, 65, 90, 97, 
	122, 32, 34, 39, 61, 92, 95, 9, 
	10, 48, 57, 65, 90, 97, 122, 32, 
	34, 39, 61, 92, 9, 10, 34, 39, 
	62, 92, 32, 34, 39, 43, 45, 92, 
	9, 10, 48, 58, 65, 93, 97, 122, 
	32, 34, 39, 91, 92, 95, 123, 9, 
	10, 48, 58, 65, 90, 97, 122, 34, 
	39, 43, 45, 92, 48, 58, 65, 93, 
	97, 122, 32, 34, 39, 91, 92, 95, 
	123, 9, 10, 48, 58, 65, 90, 97, 
	122, 34, 39, 43, 45, 92, 48, 58, 
	65, 93, 97, 122, 32, 34, 39, 45, 
	60, 92, 126, 9, 10, 34, 39, 62, 
	92, 32, 34, 39, 92, 9, 10, 65, 
	90, 34, 39, 91, 92, 48, 58, 65, 
	90, 97, 122, 34, 39, 43, 45, 92, 
	48, 58, 65, 93, 97, 122, 34, 39, 
	45, 92, 126, 34, 39, 45, 92, 126, 
	0, 32, 34, 39, 92, 95, 9, 10, 
	48, 58, 65, 90, 97, 122, 32, 34, 
	39, 92, 95, 9, 10, 48, 58, 65, 
	90, 97, 122, 32, 34, 39, 92, 95, 
	123, 9, 10, 48, 58, 65, 90, 97, 
	122, 32, 34, 39, 92, 123, 9, 10, 
	32, 34, 39, 92, 9, 10, 48, 57, 
	65, 90, 97, 122, 32, 34, 39, 58, 
	92, 9, 10, 48, 57, 65, 90, 97, 
	122, 32, 34, 39, 58, 92, 9, 10, 
	32, 34, 39, 91, 92, 95, 123, 9, 
	10, 48, 58, 65, 90, 97, 122, 34, 
	39, 43, 45, 92, 48, 58, 65, 93, 
	97, 122, 32, 34, 39, 92, 125, 9, 
	10, 48, 57, 65, 90, 97, 122, 34, 
	39, 45, 92, 126, 32, 34, 39, 92, 
	125, 9, 10, 48, 57, 65, 90, 97, 
	122, 32, 39, 91, 92, 95, 123, 9, 
	10, 48, 58, 65, 90, 97, 122, 34, 
	39, 43, 45, 92, 48, 58, 65, 93, 
	97, 122, 39, 45, 92, 126, 32, 34, 
	39, 92, 125, 9, 10, 48, 57, 65, 
	90, 97, 122, 32, 34, 39, 91, 92, 
	95, 123, 9, 10, 48, 58, 65, 90, 
	97, 122, 34, 39, 43, 45, 92, 48, 
	58, 65, 93, 97, 122, 39, 45, 92, 
	126, 32, 39, 44, 59, 92, 9, 10, 
	32, 39, 92, 125, 9, 10, 48, 57, 
	65, 90, 97, 122, 34, 45, 92, 126, 
	32, 34, 92, 125, 9, 10, 48, 57, 
	65, 90, 97, 122, 32, 34, 39, 92, 
	125, 9, 10, 48, 57, 65, 90, 97, 
	122, 32, 34, 39, 91, 92, 95, 123, 
	9, 10, 48, 58, 65, 90, 97, 122, 
	34, 39, 43, 45, 92, 48, 58, 65, 
	93, 97, 122, 39, 45, 92, 126, 32, 
	34, 92, 125, 9, 10, 48, 57, 65, 
	90, 97, 122, 32, 34, 58, 92, 9, 
	10, 48, 57, 65, 90, 97, 122, 32, 
	34, 58, 92, 9, 10, 0, 32, 34, 
	92, 95, 9, 10, 48, 58, 65, 90, 
	97, 122, 32, 34, 92, 95, 9, 10, 
	48, 58, 65, 90, 97, 122, 32, 34, 
	92, 95, 123, 9, 10, 48, 58, 65, 
	90, 97, 122, 32, 34, 92, 123, 9, 
	10, 32, 34, 92, 9, 10, 48, 57, 
	65, 90, 97, 122, 32, 34, 91, 92, 
	95, 123, 9, 10, 48, 58, 65, 90, 
	97, 122, 34, 39, 43, 45, 92, 48, 
	58, 65, 93, 97, 122, 32, 34, 91, 
	92, 95, 123, 9, 10, 48, 58, 65, 
	90, 97, 122, 34, 39, 43, 45, 92, 
	48, 58, 65, 93, 97, 122, 45, 126, 
	34, 92, 39, 92, 34, 39, 92, 34, 
	39, 92, 39, 92, 34, 39, 92, 34, 
	39, 92, 34, 92, 39, 92, 34, 39, 
	92, 34, 39, 92, 34, 39, 92, 34, 
	39, 92, 34, 39, 92, 34, 92, 0
]

class << self
	attr_accessor :_mpf_single_lengths
	private :_mpf_single_lengths, :_mpf_single_lengths=
end
self._mpf_single_lengths = [
	0, 2, 3, 2, 1, 2, 2, 2, 
	3, 2, 1, 6, 2, 3, 3, 2, 
	3, 4, 5, 2, 1, 4, 1, 1, 
	1, 5, 2, 1, 2, 3, 5, 4, 
	5, 4, 3, 4, 4, 4, 5, 4, 
	3, 6, 3, 2, 5, 5, 4, 5, 
	4, 3, 6, 3, 5, 2, 2, 5, 
	4, 5, 4, 3, 6, 4, 4, 4, 
	5, 4, 5, 4, 3, 6, 5, 3, 
	3, 6, 3, 3, 3, 5, 3, 3, 
	5, 5, 4, 3, 4, 6, 5, 6, 
	5, 4, 5, 5, 5, 6, 5, 4, 
	6, 4, 3, 6, 6, 5, 6, 5, 
	4, 6, 5, 5, 5, 6, 5, 6, 
	5, 4, 7, 5, 6, 6, 5, 5, 
	4, 5, 4, 3, 6, 3, 6, 3, 
	3, 3, 5, 3, 5, 2, 2, 3, 
	5, 4, 5, 4, 3, 4, 4, 4, 
	5, 4, 3, 6, 6, 5, 3, 3, 
	6, 3, 3, 3, 5, 3, 3, 4, 
	6, 5, 6, 5, 4, 5, 5, 5, 
	6, 5, 4, 6, 4, 3, 6, 6, 
	5, 6, 5, 4, 6, 5, 5, 5, 
	6, 5, 6, 5, 4, 7, 5, 6, 
	6, 3, 2, 3, 6, 3, 3, 3, 
	5, 3, 6, 3, 3, 3, 5, 4, 
	4, 5, 4, 5, 4, 3, 4, 4, 
	6, 5, 3, 3, 2, 2, 6, 3, 
	3, 3, 5, 3, 3, 5, 4, 5, 
	4, 3, 4, 4, 4, 5, 4, 3, 
	6, 3, 5, 5, 4, 3, 6, 6, 
	5, 6, 5, 4, 6, 4, 7, 4, 
	4, 4, 5, 6, 6, 5, 5, 5, 
	5, 5, 6, 5, 6, 5, 4, 7, 
	5, 6, 6, 5, 6, 5, 4, 6, 
	4, 7, 4, 4, 4, 5, 6, 6, 
	5, 6, 5, 4, 6, 4, 4, 7, 
	4, 4, 4, 5, 6, 6, 5, 5, 
	3, 4, 6, 5, 6, 5, 4, 5, 
	5, 7, 5, 4, 3, 4, 7, 4, 
	4, 4, 5, 4, 7, 4, 4, 4, 
	5, 4, 7, 4, 4, 4, 5, 5, 
	5, 4, 3, 4, 6, 5, 6, 5, 
	4, 5, 5, 5, 6, 5, 4, 6, 
	4, 7, 4, 4, 4, 5, 5, 4, 
	3, 4, 7, 4, 4, 4, 5, 5, 
	6, 5, 6, 5, 4, 5, 5, 5, 
	6, 5, 4, 6, 7, 5, 7, 5, 
	7, 4, 4, 4, 5, 5, 5, 6, 
	5, 6, 5, 4, 5, 5, 7, 5, 
	5, 5, 5, 6, 5, 4, 5, 7, 
	5, 4, 5, 4, 4, 4, 5, 7, 
	5, 4, 4, 4, 4, 5, 4, 5, 
	4, 3, 6, 5, 6, 5, 2, 0, 
	2, 2, 3, 3, 2, 3, 3, 2, 
	2, 3, 3, 3, 3, 3, 2
]

class << self
	attr_accessor :_mpf_range_lengths
	private :_mpf_range_lengths, :_mpf_range_lengths=
end
self._mpf_range_lengths = [
	0, 4, 4, 1, 4, 4, 1, 4, 
	4, 1, 0, 4, 0, 1, 1, 4, 
	4, 4, 3, 0, 0, 1, 0, 2, 
	3, 3, 0, 0, 0, 0, 4, 4, 
	4, 1, 4, 4, 1, 4, 4, 1, 
	0, 4, 0, 0, 1, 1, 4, 4, 
	1, 0, 4, 0, 1, 0, 0, 1, 
	4, 4, 1, 0, 4, 4, 4, 1, 
	4, 4, 4, 1, 4, 4, 3, 0, 
	0, 1, 0, 2, 3, 3, 0, 0, 
	1, 1, 4, 0, 0, 4, 4, 4, 
	1, 4, 4, 1, 4, 4, 1, 0, 
	4, 0, 0, 1, 1, 4, 4, 1, 
	0, 4, 4, 4, 1, 4, 4, 4, 
	1, 4, 4, 3, 1, 1, 1, 1, 
	4, 4, 1, 0, 4, 0, 1, 0, 
	2, 3, 3, 0, 1, 0, 0, 0, 
	4, 4, 4, 1, 4, 4, 1, 4, 
	4, 1, 0, 4, 4, 3, 0, 0, 
	1, 0, 2, 3, 3, 0, 0, 0, 
	4, 4, 4, 1, 4, 4, 1, 4, 
	4, 1, 0, 4, 0, 0, 1, 1, 
	4, 4, 1, 0, 4, 4, 4, 1, 
	4, 4, 4, 1, 4, 4, 3, 1, 
	1, 0, 0, 0, 1, 0, 2, 3, 
	3, 0, 1, 0, 2, 3, 3, 0, 
	0, 4, 4, 4, 1, 4, 4, 1, 
	4, 3, 0, 0, 0, 0, 1, 0, 
	2, 3, 3, 0, 0, 4, 4, 4, 
	1, 4, 4, 1, 4, 4, 1, 0, 
	4, 0, 1, 1, 4, 0, 1, 1, 
	4, 4, 1, 0, 4, 0, 1, 0, 
	2, 3, 3, 1, 1, 4, 0, 4, 
	4, 1, 4, 4, 4, 1, 4, 4, 
	3, 1, 1, 4, 4, 1, 0, 4, 
	0, 1, 0, 2, 3, 3, 1, 1, 
	4, 4, 1, 0, 4, 0, 0, 1, 
	0, 2, 3, 3, 1, 1, 4, 0, 
	0, 0, 4, 4, 4, 1, 4, 4, 
	1, 4, 3, 0, 0, 0, 1, 0, 
	2, 3, 3, 0, 1, 0, 2, 3, 
	3, 0, 1, 0, 2, 3, 3, 0, 
	0, 0, 0, 0, 4, 4, 4, 1, 
	4, 4, 1, 4, 4, 1, 0, 4, 
	0, 1, 0, 2, 3, 3, 0, 0, 
	0, 0, 1, 0, 2, 3, 3, 0, 
	4, 4, 4, 1, 4, 4, 1, 4, 
	4, 1, 0, 4, 4, 3, 4, 3, 
	1, 0, 2, 3, 3, 0, 0, 4, 
	4, 4, 1, 4, 4, 1, 4, 3, 
	4, 0, 4, 4, 3, 0, 4, 4, 
	3, 0, 1, 4, 0, 4, 4, 4, 
	3, 0, 4, 4, 1, 4, 4, 4, 
	1, 4, 4, 3, 4, 3, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0
]

class << self
	attr_accessor :_mpf_index_offsets
	private :_mpf_index_offsets, :_mpf_index_offsets=
end
self._mpf_index_offsets = [
	0, 0, 7, 15, 19, 25, 32, 36, 
	43, 51, 55, 57, 68, 71, 76, 81, 
	88, 96, 105, 114, 117, 119, 125, 127, 
	131, 136, 145, 148, 150, 153, 157, 167, 
	176, 186, 192, 200, 209, 215, 224, 234, 
	240, 244, 255, 259, 262, 269, 276, 285, 
	295, 301, 305, 316, 320, 327, 330, 333, 
	340, 349, 359, 365, 369, 380, 389, 398, 
	404, 414, 423, 433, 439, 447, 458, 467, 
	471, 475, 483, 487, 493, 500, 509, 513, 
	517, 524, 531, 540, 544, 549, 560, 570, 
	581, 588, 597, 607, 614, 624, 635, 642, 
	647, 658, 663, 667, 675, 683, 693, 704, 
	711, 716, 727, 737, 747, 754, 765, 775, 
	786, 793, 802, 814, 823, 831, 839, 846, 
	853, 862, 872, 878, 882, 893, 897, 905, 
	909, 915, 922, 931, 935, 942, 945, 948, 
	952, 962, 971, 981, 987, 995, 1004, 1010, 
	1019, 1029, 1035, 1039, 1050, 1061, 1070, 1074, 
	1078, 1086, 1090, 1096, 1103, 1112, 1116, 1120, 
	1125, 1136, 1146, 1157, 1164, 1173, 1183, 1190, 
	1200, 1211, 1218, 1223, 1234, 1239, 1243, 1251, 
	1259, 1269, 1280, 1287, 1292, 1303, 1313, 1323, 
	1330, 1341, 1351, 1362, 1369, 1378, 1390, 1399, 
	1407, 1415, 1419, 1422, 1426, 1434, 1438, 1444, 
	1451, 1460, 1464, 1472, 1476, 1482, 1489, 1498, 
	1503, 1508, 1518, 1527, 1537, 1543, 1551, 1560, 
	1566, 1577, 1586, 1590, 1594, 1597, 1600, 1608, 
	1612, 1618, 1625, 1634, 1638, 1642, 1652, 1661, 
	1671, 1677, 1685, 1694, 1700, 1709, 1719, 1725, 
	1729, 1740, 1744, 1751, 1758, 1767, 1771, 1779, 
	1787, 1797, 1808, 1815, 1820, 1831, 1836, 1845, 
	1850, 1857, 1865, 1874, 1882, 1890, 1900, 1906, 
	1916, 1926, 1933, 1944, 1954, 1965, 1972, 1981, 
	1993, 2002, 2010, 2018, 2028, 2039, 2046, 2051, 
	2062, 2067, 2076, 2081, 2088, 2096, 2105, 2113, 
	2121, 2131, 2142, 2149, 2154, 2165, 2170, 2175, 
	2184, 2189, 2196, 2204, 2213, 2221, 2229, 2239, 
	2245, 2249, 2254, 2265, 2275, 2286, 2293, 2302, 
	2312, 2319, 2331, 2340, 2345, 2349, 2354, 2363, 
	2368, 2375, 2383, 2392, 2397, 2406, 2411, 2418, 
	2426, 2435, 2440, 2449, 2454, 2461, 2469, 2478, 
	2484, 2490, 2495, 2499, 2504, 2515, 2525, 2536, 
	2543, 2552, 2562, 2569, 2579, 2590, 2597, 2602, 
	2613, 2618, 2627, 2632, 2639, 2647, 2656, 2662, 
	2667, 2671, 2676, 2685, 2690, 2697, 2705, 2714, 
	2720, 2731, 2741, 2752, 2759, 2768, 2778, 2785, 
	2795, 2806, 2813, 2818, 2829, 2841, 2850, 2862, 
	2871, 2880, 2885, 2892, 2900, 2909, 2915, 2921, 
	2932, 2942, 2953, 2960, 2969, 2979, 2986, 2998, 
	3007, 3017, 3023, 3033, 3044, 3053, 3058, 3068, 
	3080, 3089, 3094, 3101, 3110, 3115, 3124, 3134, 
	3146, 3155, 3160, 3169, 3178, 3184, 3194, 3203, 
	3213, 3219, 3227, 3238, 3247, 3258, 3267, 3270, 
	3271, 3274, 3277, 3281, 3285, 3288, 3292, 3296, 
	3299, 3302, 3306, 3310, 3314, 3318, 3322
]

class << self
	attr_accessor :_mpf_indicies
	private :_mpf_indicies, :_mpf_indicies=
end
self._mpf_indicies = [
	0, 2, 0, 2, 3, 2, 1, 4, 
	2, 5, 4, 2, 2, 2, 1, 4, 
	5, 4, 1, 5, 5, 6, 6, 6, 
	1, 7, 8, 7, 6, 6, 6, 1, 
	7, 8, 7, 1, 8, 9, 8, 9, 
	9, 9, 1, 10, 11, 9, 10, 9, 
	9, 9, 1, 10, 11, 10, 1, 12, 
	1, 12, 13, 14, 15, 15, 15, 12, 
	15, 15, 15, 1, 15, 16, 13, 17, 
	18, 19, 17, 1, 20, 8, 21, 20, 
	1, 21, 22, 21, 6, 6, 6, 1, 
	24, 0, 2, 0, 2, 3, 2, 23, 
	4, 25, 2, 5, 4, 3, 3, 3, 
	1, 26, 27, 28, 28, 28, 28, 28, 
	28, 1, 28, 29, 26, 30, 1, 30, 
	31, 32, 31, 30, 1, 33, 1, 33, 
	33, 34, 1, 35, 34, 34, 34, 1, 
	36, 37, 38, 38, 38, 38, 38, 38, 
	1, 38, 39, 36, 40, 1, 41, 39, 
	36, 38, 39, 42, 36, 43, 44, 38, 
	39, 45, 44, 45, 46, 45, 36, 44, 
	38, 39, 45, 44, 45, 46, 45, 36, 
	47, 38, 39, 45, 48, 47, 45, 45, 
	45, 36, 47, 38, 39, 48, 47, 36, 
	48, 38, 39, 48, 49, 49, 49, 36, 
	50, 38, 51, 39, 50, 49, 49, 49, 
	36, 50, 38, 51, 39, 50, 36, 51, 
	38, 39, 52, 51, 52, 52, 52, 36, 
	53, 38, 54, 39, 52, 53, 52, 52, 
	52, 36, 53, 38, 54, 39, 53, 36, 
	38, 55, 39, 36, 55, 56, 57, 58, 
	58, 39, 55, 58, 58, 58, 36, 15, 
	16, 59, 13, 60, 16, 13, 61, 15, 
	62, 63, 16, 61, 13, 64, 15, 65, 
	66, 16, 64, 13, 65, 15, 16, 67, 
	65, 67, 67, 67, 13, 68, 15, 69, 
	16, 67, 68, 67, 67, 67, 13, 68, 
	15, 69, 16, 68, 13, 15, 70, 16, 
	13, 70, 60, 71, 60, 60, 16, 70, 
	60, 60, 60, 13, 72, 60, 73, 71, 
	74, 15, 75, 76, 77, 74, 14, 15, 
	77, 14, 72, 77, 14, 78, 15, 79, 
	80, 77, 78, 14, 79, 15, 77, 81, 
	79, 81, 81, 81, 14, 82, 15, 83, 
	77, 81, 82, 81, 81, 81, 14, 82, 
	15, 83, 77, 82, 14, 15, 84, 77, 
	14, 84, 71, 72, 72, 72, 77, 84, 
	72, 72, 72, 14, 80, 15, 77, 86, 
	80, 85, 85, 85, 14, 87, 15, 79, 
	77, 87, 85, 85, 85, 14, 87, 15, 
	79, 77, 87, 14, 88, 89, 15, 77, 
	90, 89, 90, 91, 90, 14, 89, 15, 
	77, 90, 89, 90, 91, 90, 14, 92, 
	15, 77, 90, 93, 92, 90, 90, 90, 
	14, 92, 15, 77, 93, 92, 14, 93, 
	15, 77, 93, 85, 85, 85, 14, 92, 
	15, 94, 77, 90, 93, 92, 91, 91, 
	91, 14, 95, 96, 97, 97, 77, 97, 
	97, 97, 14, 97, 98, 99, 95, 15, 
	77, 100, 14, 100, 15, 101, 102, 77, 
	101, 100, 14, 15, 103, 77, 14, 103, 
	15, 77, 103, 104, 14, 15, 105, 77, 
	104, 104, 104, 14, 57, 106, 107, 107, 
	77, 107, 107, 107, 14, 107, 58, 108, 
	57, 15, 77, 109, 14, 110, 38, 111, 
	112, 39, 110, 36, 113, 38, 51, 114, 
	39, 113, 36, 114, 38, 39, 115, 114, 
	49, 49, 49, 36, 116, 117, 108, 57, 
	107, 58, 108, 118, 57, 119, 120, 107, 
	58, 108, 121, 120, 121, 122, 121, 57, 
	120, 107, 58, 108, 121, 120, 121, 122, 
	121, 57, 123, 107, 58, 108, 121, 124, 
	123, 121, 121, 121, 57, 123, 107, 58, 
	108, 124, 123, 57, 124, 107, 58, 108, 
	124, 125, 125, 125, 57, 126, 107, 58, 
	127, 108, 126, 125, 125, 125, 57, 126, 
	107, 58, 127, 108, 126, 57, 127, 107, 
	58, 108, 128, 127, 128, 128, 128, 57, 
	129, 107, 58, 130, 108, 128, 129, 128, 
	128, 128, 57, 129, 107, 58, 130, 108, 
	129, 57, 107, 58, 131, 108, 57, 131, 
	132, 117, 117, 117, 108, 131, 117, 117, 
	117, 57, 72, 60, 73, 133, 71, 134, 
	134, 73, 71, 135, 72, 60, 136, 137, 
	73, 135, 71, 138, 72, 60, 139, 140, 
	73, 138, 71, 139, 72, 60, 73, 141, 
	139, 141, 141, 141, 71, 142, 72, 60, 
	143, 73, 141, 142, 141, 141, 141, 71, 
	142, 72, 60, 143, 73, 142, 71, 72, 
	60, 144, 73, 71, 144, 134, 134, 134, 
	134, 73, 144, 134, 134, 134, 71, 140, 
	72, 60, 73, 146, 140, 145, 145, 145, 
	71, 147, 72, 60, 139, 73, 147, 145, 
	145, 145, 71, 147, 72, 60, 139, 73, 
	147, 71, 148, 149, 72, 60, 73, 150, 
	149, 150, 151, 150, 71, 149, 72, 60, 
	73, 150, 149, 150, 151, 150, 71, 152, 
	72, 60, 73, 150, 153, 152, 150, 150, 
	150, 71, 152, 72, 60, 73, 153, 152, 
	71, 153, 72, 60, 73, 153, 145, 145, 
	145, 71, 152, 72, 60, 154, 73, 150, 
	153, 152, 151, 151, 151, 71, 155, 156, 
	157, 157, 73, 157, 157, 157, 71, 158, 
	97, 98, 159, 160, 99, 158, 95, 161, 
	97, 98, 162, 163, 99, 161, 95, 164, 
	28, 165, 166, 29, 164, 26, 167, 28, 
	168, 169, 29, 167, 26, 168, 28, 29, 
	170, 168, 170, 170, 170, 26, 171, 28, 
	172, 29, 170, 171, 170, 170, 170, 26, 
	171, 28, 172, 29, 171, 26, 28, 173, 
	29, 26, 173, 174, 95, 98, 98, 29, 
	173, 98, 98, 98, 26, 15, 16, 175, 
	13, 175, 15, 176, 177, 16, 176, 175, 
	13, 15, 178, 16, 13, 178, 15, 16, 
	178, 179, 13, 15, 180, 16, 179, 179, 
	179, 13, 58, 181, 56, 56, 16, 56, 
	56, 56, 13, 106, 56, 182, 181, 183, 
	38, 184, 185, 186, 183, 37, 38, 186, 
	37, 187, 186, 37, 38, 186, 188, 37, 
	189, 190, 38, 186, 191, 190, 191, 192, 
	191, 37, 190, 38, 186, 191, 190, 191, 
	192, 191, 37, 193, 38, 186, 191, 194, 
	193, 191, 191, 191, 37, 193, 38, 186, 
	194, 193, 37, 194, 38, 186, 194, 195, 
	195, 195, 37, 196, 38, 197, 186, 196, 
	195, 195, 195, 37, 196, 38, 197, 186, 
	196, 37, 197, 38, 186, 198, 197, 198, 
	198, 198, 37, 199, 38, 200, 186, 198, 
	199, 198, 198, 198, 37, 199, 38, 200, 
	186, 199, 37, 38, 201, 186, 37, 201, 
	181, 107, 106, 106, 186, 201, 106, 106, 
	106, 37, 193, 38, 202, 186, 191, 194, 
	193, 192, 192, 192, 37, 203, 204, 205, 
	205, 186, 205, 205, 205, 37, 205, 206, 
	207, 203, 38, 186, 208, 37, 208, 38, 
	209, 210, 186, 209, 208, 37, 38, 211, 
	186, 37, 211, 38, 186, 211, 212, 37, 
	38, 213, 186, 212, 212, 212, 37, 214, 
	187, 187, 187, 186, 187, 187, 187, 37, 
	187, 41, 215, 214, 216, 216, 215, 214, 
	187, 41, 215, 217, 214, 218, 219, 187, 
	41, 215, 220, 219, 220, 221, 220, 214, 
	219, 187, 41, 215, 220, 219, 220, 221, 
	220, 214, 222, 187, 41, 215, 220, 223, 
	222, 220, 220, 220, 214, 222, 187, 41, 
	215, 223, 222, 214, 223, 187, 41, 215, 
	223, 224, 224, 224, 214, 225, 187, 41, 
	226, 215, 225, 224, 224, 224, 214, 225, 
	187, 41, 226, 215, 225, 214, 226, 187, 
	41, 215, 227, 226, 227, 227, 227, 214, 
	228, 187, 41, 229, 215, 227, 228, 227, 
	227, 227, 214, 228, 187, 41, 229, 215, 
	228, 214, 187, 41, 230, 215, 214, 230, 
	231, 116, 232, 232, 215, 230, 232, 232, 
	232, 214, 106, 56, 182, 233, 181, 234, 
	231, 182, 181, 235, 106, 56, 236, 237, 
	182, 235, 181, 238, 106, 56, 239, 240, 
	182, 238, 181, 239, 106, 56, 182, 241, 
	239, 241, 241, 241, 181, 242, 106, 56, 
	243, 182, 241, 242, 241, 241, 241, 181, 
	242, 106, 56, 243, 182, 242, 181, 106, 
	56, 244, 182, 181, 244, 234, 132, 234, 
	234, 182, 244, 234, 234, 234, 181, 240, 
	106, 56, 182, 246, 240, 245, 245, 245, 
	181, 247, 106, 56, 239, 182, 247, 245, 
	245, 245, 181, 247, 106, 56, 239, 182, 
	247, 181, 248, 249, 106, 56, 182, 250, 
	249, 250, 251, 250, 181, 249, 106, 56, 
	182, 250, 249, 250, 251, 250, 181, 252, 
	106, 56, 182, 250, 253, 252, 250, 250, 
	250, 181, 252, 106, 56, 182, 253, 252, 
	181, 253, 106, 56, 182, 253, 245, 245, 
	245, 181, 252, 106, 56, 254, 182, 250, 
	253, 252, 251, 251, 251, 181, 255, 256, 
	257, 257, 182, 257, 257, 257, 181, 258, 
	205, 206, 259, 260, 207, 258, 203, 261, 
	205, 206, 262, 263, 207, 261, 203, 28, 
	29, 264, 26, 265, 29, 26, 28, 29, 
	266, 26, 266, 28, 267, 268, 29, 267, 
	266, 26, 28, 269, 29, 26, 269, 28, 
	29, 269, 270, 26, 28, 271, 29, 270, 
	270, 270, 26, 272, 203, 206, 206, 29, 
	206, 206, 206, 26, 38, 39, 273, 36, 
	273, 38, 274, 275, 39, 274, 273, 36, 
	38, 276, 39, 36, 276, 38, 39, 276, 
	277, 36, 38, 278, 39, 277, 277, 277, 
	36, 41, 214, 41, 41, 39, 41, 41, 
	41, 36, 38, 276, 39, 276, 36, 28, 
	269, 29, 269, 26, 279, 280, 28, 29, 
	281, 280, 281, 282, 281, 26, 280, 28, 
	29, 281, 280, 281, 282, 281, 26, 283, 
	28, 29, 281, 284, 283, 281, 281, 281, 
	26, 283, 28, 29, 284, 283, 26, 284, 
	28, 29, 284, 285, 285, 285, 26, 286, 
	28, 168, 29, 286, 285, 285, 285, 26, 
	286, 28, 168, 29, 286, 26, 283, 28, 
	287, 29, 281, 284, 283, 282, 282, 282, 
	26, 265, 288, 265, 265, 29, 265, 265, 
	265, 26, 289, 265, 290, 288, 28, 291, 
	292, 27, 28, 291, 27, 289, 291, 27, 
	292, 28, 293, 294, 291, 293, 292, 27, 
	28, 295, 291, 27, 295, 28, 291, 295, 
	296, 27, 28, 297, 291, 296, 296, 296, 
	27, 298, 205, 204, 204, 291, 204, 204, 
	204, 27, 204, 272, 299, 298, 28, 291, 
	300, 27, 301, 302, 28, 291, 303, 302, 
	303, 304, 303, 27, 302, 28, 291, 303, 
	302, 303, 304, 303, 27, 305, 28, 291, 
	303, 306, 305, 303, 303, 303, 27, 305, 
	28, 291, 306, 305, 27, 306, 28, 291, 
	306, 307, 307, 307, 27, 308, 28, 309, 
	291, 308, 307, 307, 307, 27, 308, 28, 
	309, 291, 308, 27, 309, 28, 291, 310, 
	309, 310, 310, 310, 27, 311, 28, 312, 
	291, 310, 311, 310, 310, 310, 27, 311, 
	28, 312, 291, 311, 27, 28, 313, 291, 
	27, 313, 314, 97, 96, 96, 291, 313, 
	96, 96, 96, 27, 96, 174, 315, 314, 
	316, 28, 317, 318, 291, 316, 27, 319, 
	28, 309, 320, 291, 319, 27, 320, 28, 
	291, 321, 320, 307, 307, 307, 27, 156, 
	322, 315, 314, 323, 96, 174, 324, 325, 
	315, 323, 314, 326, 96, 174, 327, 328, 
	315, 326, 314, 327, 96, 174, 315, 329, 
	327, 329, 329, 329, 314, 330, 96, 174, 
	331, 315, 329, 330, 329, 329, 329, 314, 
	330, 96, 174, 331, 315, 330, 314, 96, 
	174, 332, 315, 314, 332, 156, 157, 156, 
	156, 315, 332, 156, 156, 156, 314, 72, 
	60, 73, 333, 71, 333, 72, 60, 334, 
	335, 73, 334, 333, 71, 72, 60, 336, 
	73, 71, 336, 72, 60, 73, 336, 337, 
	71, 72, 60, 338, 73, 337, 337, 337, 
	71, 117, 234, 132, 132, 73, 132, 132, 
	132, 71, 339, 107, 58, 340, 341, 108, 
	339, 57, 342, 107, 58, 127, 343, 108, 
	342, 57, 343, 107, 58, 108, 344, 343, 
	125, 125, 125, 57, 72, 60, 336, 73, 
	336, 71, 328, 96, 174, 315, 346, 328, 
	345, 345, 345, 314, 347, 96, 174, 327, 
	315, 347, 345, 345, 345, 314, 347, 96, 
	174, 327, 315, 347, 314, 348, 349, 96, 
	174, 315, 350, 349, 350, 351, 350, 314, 
	349, 96, 174, 315, 350, 349, 350, 351, 
	350, 314, 352, 96, 174, 315, 350, 353, 
	352, 350, 350, 350, 314, 352, 96, 174, 
	315, 353, 352, 314, 353, 96, 174, 315, 
	353, 345, 345, 345, 314, 352, 96, 174, 
	354, 315, 350, 353, 352, 351, 351, 351, 
	314, 355, 322, 322, 322, 315, 322, 322, 
	322, 314, 356, 289, 265, 357, 358, 290, 
	356, 288, 359, 289, 265, 360, 361, 290, 
	359, 288, 360, 289, 265, 290, 362, 360, 
	362, 362, 362, 288, 363, 289, 265, 364, 
	290, 362, 363, 362, 362, 362, 288, 363, 
	289, 265, 364, 290, 363, 288, 289, 265, 
	365, 290, 288, 365, 322, 366, 355, 355, 
	290, 365, 355, 355, 355, 288, 96, 174, 
	315, 367, 314, 367, 96, 174, 368, 369, 
	315, 368, 367, 314, 96, 174, 370, 315, 
	314, 370, 96, 174, 315, 370, 371, 314, 
	96, 174, 372, 315, 371, 371, 371, 314, 
	373, 257, 256, 256, 315, 256, 256, 256, 
	314, 374, 204, 272, 375, 376, 299, 374, 
	298, 377, 204, 272, 378, 379, 299, 377, 
	298, 378, 204, 272, 299, 380, 378, 380, 
	380, 380, 298, 381, 204, 272, 382, 299, 
	380, 381, 380, 380, 380, 298, 381, 204, 
	272, 382, 299, 381, 298, 204, 272, 383, 
	299, 298, 383, 256, 384, 373, 373, 299, 
	383, 373, 373, 373, 298, 96, 174, 315, 
	385, 314, 107, 58, 108, 386, 57, 386, 
	107, 58, 387, 388, 108, 387, 386, 57, 
	107, 58, 389, 108, 57, 389, 107, 58, 
	108, 389, 390, 57, 107, 58, 391, 108, 
	390, 390, 390, 57, 116, 232, 116, 116, 
	108, 116, 116, 116, 57, 392, 187, 41, 
	393, 394, 215, 392, 214, 395, 187, 41, 
	226, 396, 215, 395, 214, 396, 187, 41, 
	215, 397, 396, 224, 224, 224, 214, 107, 
	58, 389, 108, 389, 57, 398, 399, 299, 
	298, 204, 272, 299, 400, 298, 401, 402, 
	204, 272, 299, 403, 402, 403, 404, 403, 
	298, 402, 204, 272, 299, 403, 402, 403, 
	404, 403, 298, 405, 204, 272, 299, 403, 
	406, 405, 403, 403, 403, 298, 405, 204, 
	272, 299, 406, 405, 298, 406, 204, 272, 
	299, 406, 407, 407, 407, 298, 408, 204, 
	272, 378, 299, 408, 407, 407, 407, 298, 
	408, 204, 272, 378, 299, 408, 298, 405, 
	204, 272, 409, 299, 403, 406, 405, 404, 
	404, 404, 298, 410, 399, 399, 399, 299, 
	399, 399, 399, 298, 289, 265, 290, 411, 
	288, 412, 412, 290, 288, 289, 265, 290, 
	413, 288, 413, 289, 265, 414, 415, 290, 
	414, 413, 288, 289, 265, 416, 290, 288, 
	416, 289, 265, 290, 416, 417, 288, 289, 
	265, 418, 290, 417, 417, 417, 288, 399, 
	419, 410, 410, 290, 410, 410, 410, 288, 
	204, 272, 299, 420, 298, 420, 204, 272, 
	421, 422, 299, 421, 420, 298, 204, 272, 
	423, 299, 298, 423, 204, 272, 299, 423, 
	424, 298, 204, 272, 425, 299, 424, 424, 
	424, 298, 398, 426, 398, 398, 299, 398, 
	398, 398, 298, 187, 41, 215, 427, 214, 
	427, 187, 41, 428, 429, 215, 428, 427, 
	214, 187, 41, 430, 215, 214, 430, 187, 
	41, 215, 430, 431, 214, 187, 41, 432, 
	215, 431, 431, 431, 214, 216, 216, 216, 
	216, 215, 216, 216, 216, 214, 187, 41, 
	430, 215, 430, 214, 204, 272, 423, 299, 
	423, 298, 205, 206, 207, 433, 203, 419, 
	434, 207, 203, 205, 206, 207, 435, 203, 
	436, 437, 205, 206, 207, 438, 437, 438, 
	439, 438, 203, 437, 205, 206, 207, 438, 
	437, 438, 439, 438, 203, 440, 205, 206, 
	207, 438, 441, 440, 438, 438, 438, 203, 
	440, 205, 206, 207, 441, 440, 203, 441, 
	205, 206, 207, 441, 442, 442, 442, 203, 
	443, 205, 206, 262, 207, 443, 442, 442, 
	442, 203, 443, 205, 206, 262, 207, 443, 
	203, 262, 205, 206, 207, 444, 262, 444, 
	444, 444, 203, 445, 205, 206, 446, 207, 
	444, 445, 444, 444, 444, 203, 445, 205, 
	206, 446, 207, 445, 203, 205, 206, 447, 
	207, 203, 447, 257, 448, 255, 255, 207, 
	447, 255, 255, 255, 203, 106, 56, 182, 
	449, 181, 449, 106, 56, 450, 451, 182, 
	450, 449, 181, 106, 56, 452, 182, 181, 
	452, 106, 56, 182, 452, 453, 181, 106, 
	56, 454, 182, 453, 453, 453, 181, 232, 
	231, 231, 231, 182, 231, 231, 231, 181, 
	106, 56, 452, 182, 452, 181, 97, 98, 
	99, 455, 95, 366, 155, 99, 95, 97, 
	98, 99, 456, 95, 456, 97, 98, 457, 
	458, 99, 457, 456, 95, 97, 98, 459, 
	99, 95, 459, 97, 98, 99, 459, 460, 
	95, 97, 98, 461, 99, 460, 460, 460, 
	95, 384, 255, 448, 448, 99, 448, 448, 
	448, 95, 97, 98, 459, 99, 459, 95, 
	462, 463, 97, 98, 99, 464, 463, 464, 
	465, 464, 95, 463, 97, 98, 99, 464, 
	463, 464, 465, 464, 95, 466, 97, 98, 
	99, 464, 467, 466, 464, 464, 464, 95, 
	466, 97, 98, 99, 467, 466, 95, 467, 
	97, 98, 99, 467, 468, 468, 468, 95, 
	469, 97, 98, 162, 99, 469, 468, 468, 
	468, 95, 469, 97, 98, 162, 99, 469, 
	95, 162, 97, 98, 99, 470, 162, 470, 
	470, 470, 95, 471, 97, 98, 472, 99, 
	470, 471, 470, 470, 470, 95, 471, 97, 
	98, 472, 99, 471, 95, 97, 98, 473, 
	99, 95, 473, 157, 155, 155, 155, 99, 
	473, 155, 155, 155, 95, 466, 97, 98, 
	474, 99, 464, 467, 466, 465, 465, 465, 
	95, 366, 355, 366, 366, 99, 366, 366, 
	366, 95, 440, 205, 206, 475, 207, 438, 
	441, 440, 439, 439, 439, 203, 419, 410, 
	419, 419, 207, 419, 419, 419, 203, 433, 
	205, 206, 476, 477, 207, 476, 433, 203, 
	205, 206, 478, 207, 203, 478, 205, 206, 
	207, 478, 479, 203, 205, 206, 480, 207, 
	479, 479, 479, 203, 426, 434, 434, 434, 
	207, 434, 434, 434, 203, 205, 206, 478, 
	207, 478, 203, 289, 265, 416, 290, 416, 
	288, 481, 482, 289, 265, 290, 483, 482, 
	483, 484, 483, 288, 482, 289, 265, 290, 
	483, 482, 483, 484, 483, 288, 485, 289, 
	265, 290, 483, 486, 485, 483, 483, 483, 
	288, 485, 289, 265, 290, 486, 485, 288, 
	486, 289, 265, 290, 486, 487, 487, 487, 
	288, 488, 289, 265, 360, 290, 488, 487, 
	487, 487, 288, 488, 289, 265, 360, 290, 
	488, 288, 485, 289, 265, 489, 290, 483, 
	486, 485, 484, 484, 484, 288, 412, 412, 
	412, 412, 290, 412, 412, 412, 288, 379, 
	204, 272, 299, 490, 379, 407, 407, 407, 
	298, 96, 174, 370, 315, 370, 314, 361, 
	289, 265, 290, 491, 361, 487, 487, 487, 
	288, 305, 28, 492, 291, 303, 306, 305, 
	304, 304, 304, 27, 288, 289, 289, 289, 
	291, 289, 289, 289, 27, 28, 295, 291, 
	295, 27, 263, 205, 206, 207, 493, 263, 
	442, 442, 442, 203, 222, 187, 41, 494, 
	215, 220, 223, 222, 221, 221, 221, 214, 
	434, 398, 426, 426, 215, 426, 426, 426, 
	214, 38, 211, 186, 211, 37, 495, 38, 
	197, 496, 186, 495, 37, 496, 38, 186, 
	497, 496, 195, 195, 195, 37, 15, 178, 
	16, 178, 13, 169, 28, 29, 498, 169, 
	285, 285, 285, 26, 163, 97, 98, 99, 
	499, 163, 468, 468, 468, 95, 123, 107, 
	58, 500, 108, 121, 124, 123, 122, 122, 
	122, 57, 448, 373, 384, 384, 108, 384, 
	384, 384, 57, 15, 103, 77, 103, 14, 
	66, 15, 16, 502, 66, 501, 501, 501, 
	13, 503, 15, 65, 16, 503, 501, 501, 
	501, 13, 503, 15, 65, 16, 503, 13, 
	504, 505, 15, 16, 506, 505, 506, 507, 
	506, 13, 505, 15, 16, 506, 505, 506, 
	507, 506, 13, 508, 15, 16, 506, 509, 
	508, 506, 506, 506, 13, 508, 15, 16, 
	509, 508, 13, 509, 15, 16, 509, 501, 
	501, 501, 13, 508, 15, 510, 16, 506, 
	509, 508, 507, 507, 507, 13, 98, 314, 
	174, 174, 16, 174, 174, 174, 13, 47, 
	38, 511, 39, 45, 48, 47, 46, 46, 
	46, 36, 206, 298, 272, 272, 39, 272, 
	272, 272, 36, 33, 33, 1, 23, 38, 
	39, 36, 15, 77, 14, 107, 58, 108, 
	57, 72, 60, 73, 71, 38, 186, 37, 
	187, 41, 215, 214, 106, 56, 182, 181, 
	28, 29, 26, 28, 291, 27, 96, 174, 
	315, 314, 204, 272, 299, 298, 205, 206, 
	207, 203, 97, 98, 99, 95, 289, 265, 
	290, 288, 15, 16, 13, 0
]

class << self
	attr_accessor :_mpf_trans_targs
	private :_mpf_trans_targs, :_mpf_trans_targs=
end
self._mpf_trans_targs = [
	1, 0, 2, 17, 3, 4, 5, 6, 
	7, 8, 9, 10, 11, 12, 53, 13, 
	43, 14, 7, 15, 14, 15, 16, 0, 
	431, 18, 19, 220, 20, 194, 21, 22, 
	430, 23, 24, 25, 26, 133, 27, 28, 
	16, 29, 30, 432, 31, 32, 428, 33, 
	34, 35, 36, 37, 38, 39, 40, 41, 
	42, 78, 80, 421, 44, 45, 46, 418, 
	45, 46, 418, 47, 48, 49, 50, 51, 
	52, 98, 55, 56, 61, 54, 55, 56, 
	61, 57, 58, 59, 60, 62, 64, 63, 
	433, 65, 66, 69, 67, 68, 70, 71, 
	242, 72, 118, 360, 73, 74, 417, 75, 
	76, 77, 132, 79, 83, 64, 81, 37, 
	82, 81, 82, 30, 84, 259, 85, 434, 
	86, 87, 415, 88, 89, 90, 91, 92, 
	93, 94, 95, 96, 97, 109, 99, 100, 
	101, 106, 100, 101, 106, 102, 103, 104, 
	105, 107, 109, 108, 435, 110, 111, 114, 
	112, 113, 115, 116, 246, 253, 117, 375, 
	414, 117, 375, 414, 119, 120, 413, 119, 
	120, 413, 121, 122, 123, 124, 125, 126, 
	127, 412, 128, 129, 130, 131, 173, 410, 
	143, 411, 134, 135, 136, 436, 137, 138, 
	148, 139, 140, 141, 142, 143, 144, 145, 
	146, 147, 149, 150, 228, 151, 193, 338, 
	152, 153, 409, 154, 155, 156, 157, 158, 
	159, 160, 437, 161, 162, 407, 163, 164, 
	165, 166, 167, 168, 169, 170, 171, 172, 
	300, 184, 174, 175, 176, 181, 175, 176, 
	181, 177, 178, 179, 180, 182, 184, 183, 
	438, 185, 186, 189, 187, 188, 190, 191, 
	293, 352, 192, 347, 406, 192, 347, 406, 
	209, 195, 196, 197, 208, 198, 199, 200, 
	201, 202, 203, 207, 204, 205, 206, 439, 
	210, 211, 216, 212, 213, 214, 215, 217, 
	218, 219, 316, 221, 222, 223, 405, 224, 
	225, 226, 227, 304, 229, 440, 230, 231, 
	403, 232, 233, 234, 235, 236, 237, 238, 
	239, 240, 241, 245, 243, 236, 244, 243, 
	244, 229, 280, 247, 248, 263, 247, 248, 
	263, 249, 250, 251, 252, 254, 255, 262, 
	256, 257, 258, 260, 92, 261, 260, 261, 
	85, 264, 266, 265, 441, 267, 268, 271, 
	269, 270, 272, 273, 274, 275, 402, 274, 
	275, 402, 276, 277, 278, 279, 361, 281, 
	282, 401, 283, 284, 285, 286, 287, 288, 
	400, 287, 288, 400, 289, 290, 291, 292, 
	294, 266, 295, 296, 303, 297, 298, 299, 
	301, 167, 302, 301, 302, 160, 305, 323, 
	306, 442, 307, 308, 313, 309, 310, 311, 
	312, 314, 315, 391, 317, 318, 319, 390, 
	320, 321, 322, 337, 324, 325, 336, 326, 
	327, 328, 329, 330, 331, 335, 332, 333, 
	334, 384, 339, 340, 443, 341, 342, 382, 
	343, 344, 345, 346, 348, 349, 350, 351, 
	359, 353, 354, 358, 355, 356, 357, 368, 
	362, 363, 367, 364, 365, 366, 444, 369, 
	370, 380, 371, 372, 373, 374, 376, 377, 
	378, 379, 381, 383, 385, 389, 386, 387, 
	388, 445, 392, 393, 398, 394, 395, 396, 
	397, 399, 306, 391, 404, 340, 408, 410, 
	411, 136, 209, 368, 416, 419, 421, 420, 
	446, 422, 423, 426, 424, 425, 427, 429
]

class << self
	attr_accessor :_mpf_trans_actions
	private :_mpf_trans_actions, :_mpf_trans_actions=
end
self._mpf_trans_actions = [
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 3, 3, 3, 0, 0, 1, 7, 
	5, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 5, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 3, 3, 3, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 3, 3, 3, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 1, 0, 
	5, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 3, 3, 
	3, 0, 0, 1, 0, 0, 0, 5, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 3, 
	3, 3, 0, 0, 0, 0, 0, 0, 
	0, 0, 1, 0, 5, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 3, 3, 
	3, 0, 0, 0, 3, 3, 3, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 3, 
	3, 3, 0, 0, 0, 5, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 5, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 3, 3, 3, 0, 0, 
	0, 0, 0, 0, 0, 0, 1, 0, 
	5, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 3, 3, 3, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 5, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 5, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 3, 3, 3, 0, 
	0, 1, 0, 3, 3, 3, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 3, 3, 3, 0, 0, 
	1, 0, 1, 0, 5, 0, 0, 0, 
	0, 0, 0, 0, 3, 3, 3, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 3, 3, 
	3, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	3, 3, 3, 0, 0, 1, 0, 0, 
	0, 5, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 5, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 5, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 5, 0, 0, 0, 0, 0, 0, 
	0, 0, 1, 1, 0, 1, 0, 0, 
	0, 1, 1, 1, 0, 0, 1, 0, 
	5, 0, 0, 0, 0, 0, 0, 0
]

class << self
	attr_accessor :_mpf_eof_actions
	private :_mpf_eof_actions, :_mpf_eof_actions=
end
self._mpf_eof_actions = [
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	7, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 7, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	7, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 7, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 7, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	7, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	7, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	7, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 7, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 7, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 7, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 7, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 7, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	7, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 7, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 7, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0
]

class << self
	attr_accessor :mpf_start
end
self.mpf_start = 1;
class << self
	attr_accessor :mpf_first_final
end
self.mpf_first_final = 431;
class << self
	attr_accessor :mpf_error
end
self.mpf_error = 0;

class << self
	attr_accessor :mpf_en_main
end
self.mpf_en_main = 1;


# line 47 "mpf.rl"

    data = string.unpack("c*")

    
# line 1410 "mpf.rb"
begin
	p ||= 0
	pe ||= data.length
	cs = mpf_start
end

# line 51 "mpf.rl"
    
# line 1419 "mpf.rb"
begin
	_klen, _trans, _keys, _acts, _nacts = nil
	_goto_level = 0
	_resume = 10
	_eof_trans = 15
	_again = 20
	_test_eof = 30
	_out = 40
	while true
	_trigger_goto = false
	if _goto_level <= 0
	if p == pe
		_goto_level = _test_eof
		next
	end
	if cs == 0
		_goto_level = _out
		next
	end
	end
	if _goto_level <= _resume
	_keys = _mpf_key_offsets[cs]
	_trans = _mpf_index_offsets[cs]
	_klen = _mpf_single_lengths[cs]
	_break_match = false
	
	begin
	  if _klen > 0
	     _lower = _keys
	     _upper = _keys + _klen - 1

	     loop do
	        break if _upper < _lower
	        _mid = _lower + ( (_upper - _lower) >> 1 )

	        if data[p] < _mpf_trans_keys[_mid]
	           _upper = _mid - 1
	        elsif data[p] > _mpf_trans_keys[_mid]
	           _lower = _mid + 1
	        else
	           _trans += (_mid - _keys)
	           _break_match = true
	           break
	        end
	     end # loop
	     break if _break_match
	     _keys += _klen
	     _trans += _klen
	  end
	  _klen = _mpf_range_lengths[cs]
	  if _klen > 0
	     _lower = _keys
	     _upper = _keys + (_klen << 1) - 2
	     loop do
	        break if _upper < _lower
	        _mid = _lower + (((_upper-_lower) >> 1) & ~1)
	        if data[p] < _mpf_trans_keys[_mid]
	          _upper = _mid - 2
	        elsif data[p] > _mpf_trans_keys[_mid+1]
	          _lower = _mid + 2
	        else
	          _trans += ((_mid - _keys) >> 1)
	          _break_match = true
	          break
	        end
	     end # loop
	     break if _break_match
	     _trans += _klen
	  end
	end while false
	_trans = _mpf_indicies[_trans]
	cs = _mpf_trans_targs[_trans]
	if _mpf_trans_actions[_trans] != 0
		_acts = _mpf_trans_actions[_trans]
		_nacts = _mpf_actions[_acts]
		_acts += 1
		while _nacts > 0
			_nacts -= 1
			_acts += 1
			case _mpf_actions[_acts - 1]
when 0 then
# line 7 "mpf.rl"
		begin

    puts "OK"
  		end
# line 7 "mpf.rl"
when 1 then
# line 23 "mpf.rl"
		begin
 
    ap [p, pe, cs] 
  		end
# line 23 "mpf.rl"
when 2 then
# line 39 "mpf.rl"
		begin
 puts "Failed" 		end
# line 39 "mpf.rl"
when 3 then
# line 40 "mpf.rl"
		begin
 puts "Error" 		end
# line 40 "mpf.rl"
# line 1524 "mpf.rb"
			end # action switch
		end
	end
	if _trigger_goto
		next
	end
	end
	if _goto_level <= _again
	if cs == 0
		_goto_level = _out
		next
	end
	p += 1
	if p != pe
		_goto_level = _resume
		next
	end
	end
	if _goto_level <= _test_eof
	if p == eof
	__acts = _mpf_eof_actions[cs]
	__nacts =  _mpf_actions[__acts]
	__acts += 1
	while __nacts > 0
		__nacts -= 1
		__acts += 1
		case _mpf_actions[__acts - 1]
when 3 then
# line 40 "mpf.rl"
		begin
 puts "Error" 		end
# line 40 "mpf.rl"
# line 1557 "mpf.rb"
		end # eof action switch
	end
	if _trigger_goto
		next
	end
end
	end
	if _goto_level <= _out
		break
	end
	end
	end

# line 52 "mpf.rl"
  end

end # class MPF

def parse(string)
  MPF.new.parse(string)
end

#parse("foo { bar: fizzle => baz; }")
parse("
  foo { 
    test: 
      fizzle => 'bar'; 
    foo:
      bar => 'baz';
  }
")
