lib/regexp_parser/scanner.rb



# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"

# line 621 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"



module Regexp::Scanner
  
# line 11 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner.rb"
class << self
	attr_accessor :_re_scanner_trans_keys
	private :_re_scanner_trans_keys, :_re_scanner_trans_keys=
end
self._re_scanner_trans_keys = [
	0, 0, -128, -65, -128, -65, 
	-128, -65, -128, -65, -128, 
	-65, -128, -65, 41, 41, 
	41, 41, 65, 122, 39, 122, 
	33, 122, 48, 122, 39, 
	60, 45, 122, 49, 57, 
	39, 57, 48, 57, 39, 57, 
	39, 122, 45, 122, 49, 
	57, 43, 62, 48, 57, 
	48, 62, 43, 122, 44, 125, 
	48, 125, 123, 123, 9, 
	122, 9, 125, 9, 125, 
	9, 125, 9, 125, 49, 54, 
	46, 46, 49, 49, 125, 
	125, 46, 46, 48, 49, 
	46, 46, 48, 50, 46, 46, 
	48, 48, 9, 122, -128, 
	-65, -128, -65, -128, -65, 
	-128, -65, -128, -65, -128, -65, 
	48, 122, 45, 122, 45, 
	122, 93, 93, 94, 120, 
	97, 120, 108, 115, 110, 112, 
	117, 117, 109, 109, 58, 
	58, 93, 93, 104, 104, 
	97, 97, 99, 99, 105, 105, 
	105, 105, 108, 108, 97, 
	97, 110, 110, 107, 107, 
	110, 110, 116, 116, 114, 114, 
	108, 108, 105, 105, 103, 
	103, 105, 105, 116, 116, 
	114, 114, 97, 97, 112, 112, 
	104, 104, 111, 111, 119, 
	119, 101, 101, 114, 114, 
	114, 117, 105, 105, 110, 110, 
	110, 110, 99, 99, 112, 
	112, 97, 97, 99, 99, 
	101, 101, 112, 112, 112, 112, 
	111, 111, 114, 114, 100, 
	100, 100, 100, 65, 122, 
	61, 61, 93, 93, -128, -65, 
	-128, -65, -128, -65, -128, 
	-65, -128, -65, -128, -65, 
	92, 92, 120, 120, 48, 102, 
	45, 45, 65, 122, 45, 
	45, 65, 122, 67, 99, 
	45, 45, 65, 122, 48, 123, 
	48, 102, 48, 102, 48, 
	102, 48, 102, 48, 102, 
	48, 102, 48, 102, 9, 125, 
	48, 125, 48, 123, 48, 
	102, 48, 125, 48, 125, 
	48, 125, 48, 125, 48, 125, 
	48, 125, 48, 125, 125, 
	125, -128, 127, -62, -33, 
	-32, -17, -16, -12, 1, 127, 
	32, 126, 63, 63, 33, 
	120, 105, 120, 105, 120, 
	105, 120, 45, 120, 45, 120, 
	45, 120, 43, 63, 43, 
	63, 43, 63, 65, 122, 
	43, 63, 80, 112, -62, 127, 
	-128, -65, -62, -33, -128, 
	-65, -32, -17, -128, -65, 
	-16, -12, 1, 127, 38, 38, 
	93, 93, 45, 45, 46, 
	61, -62, 127, -62, -33, 
	-32, -17, -16, -12, 1, 127, 
	32, 126, 32, 126, 32, 
	126, 48, 102, 32, 126, 
	36, 125, 48, 55, 48, 55, 
	48, 102, 0
]

class << self
	attr_accessor :_re_scanner_key_spans
	private :_re_scanner_key_spans, :_re_scanner_key_spans=
end
self._re_scanner_key_spans = [
	0, 64, 64, 64, 64, 64, 64, 1, 
	1, 58, 84, 90, 75, 22, 78, 9, 
	19, 10, 19, 84, 78, 9, 20, 10, 
	15, 80, 82, 78, 1, 114, 117, 117, 
	117, 117, 6, 1, 1, 1, 1, 2, 
	1, 3, 1, 1, 114, 64, 64, 64, 
	64, 64, 64, 75, 78, 78, 1, 27, 
	24, 8, 3, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	4, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 58, 
	1, 1, 64, 64, 64, 64, 64, 64, 
	1, 1, 55, 1, 58, 1, 58, 33, 
	1, 58, 76, 55, 55, 55, 55, 55, 
	55, 55, 117, 78, 76, 55, 78, 78, 
	78, 78, 78, 78, 78, 1, 256, 30, 
	16, 5, 127, 95, 1, 88, 16, 16, 
	16, 76, 76, 76, 21, 21, 21, 58, 
	21, 33, 190, 64, 30, 64, 16, 64, 
	5, 127, 1, 1, 1, 16, 190, 30, 
	16, 5, 127, 95, 95, 95, 55, 95, 
	90, 8, 8, 55
]

class << self
	attr_accessor :_re_scanner_index_offsets
	private :_re_scanner_index_offsets, :_re_scanner_index_offsets=
end
self._re_scanner_index_offsets = [
	0, 0, 65, 130, 195, 260, 325, 390, 
	392, 394, 453, 538, 629, 705, 728, 807, 
	817, 837, 848, 868, 953, 1032, 1042, 1063, 
	1074, 1090, 1171, 1254, 1333, 1335, 1450, 1568, 
	1686, 1804, 1922, 1929, 1931, 1933, 1935, 1937, 
	1940, 1942, 1946, 1948, 1950, 2065, 2130, 2195, 
	2260, 2325, 2390, 2455, 2531, 2610, 2689, 2691, 
	2719, 2744, 2753, 2757, 2759, 2761, 2763, 2765, 
	2767, 2769, 2771, 2773, 2775, 2777, 2779, 2781, 
	2783, 2785, 2787, 2789, 2791, 2793, 2795, 2797, 
	2799, 2801, 2803, 2805, 2807, 2809, 2811, 2813, 
	2815, 2820, 2822, 2824, 2826, 2828, 2830, 2832, 
	2834, 2836, 2838, 2840, 2842, 2844, 2846, 2848, 
	2907, 2909, 2911, 2976, 3041, 3106, 3171, 3236, 
	3301, 3303, 3305, 3361, 3363, 3422, 3424, 3483, 
	3517, 3519, 3578, 3655, 3711, 3767, 3823, 3879, 
	3935, 3991, 4047, 4165, 4244, 4321, 4377, 4456, 
	4535, 4614, 4693, 4772, 4851, 4930, 4932, 5189, 
	5220, 5237, 5243, 5371, 5467, 5469, 5558, 5575, 
	5592, 5609, 5686, 5763, 5840, 5862, 5884, 5906, 
	5965, 5987, 6021, 6212, 6277, 6308, 6373, 6390, 
	6455, 6461, 6589, 6591, 6593, 6595, 6612, 6803, 
	6834, 6851, 6857, 6985, 7081, 7177, 7273, 7329, 
	7425, 7516, 7525, 7534
]

class << self
	attr_accessor :_re_scanner_indicies
	private :_re_scanner_indicies, :_re_scanner_indicies=
end
self._re_scanner_indicies = [
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	1, 1, 1, 1, 1, 1, 1, 1, 
	0, 2, 2, 2, 2, 2, 2, 2, 
	2, 2, 2, 2, 2, 2, 2, 2, 
	2, 2, 2, 2, 2, 2, 2, 2, 
	2, 2, 2, 2, 2, 2, 2, 2, 
	2, 2, 2, 2, 2, 2, 2, 2, 
	2, 2, 2, 2, 2, 2, 2, 2, 
	2, 2, 2, 2, 2, 2, 2, 2, 
	2, 2, 2, 2, 2, 2, 2, 2, 
	2, 0, 3, 3, 3, 3, 3, 3, 
	3, 3, 3, 3, 3, 3, 3, 3, 
	3, 3, 3, 3, 3, 3, 3, 3, 
	3, 3, 3, 3, 3, 3, 3, 3, 
	3, 3, 3, 3, 3, 3, 3, 3, 
	3, 3, 3, 3, 3, 3, 3, 3, 
	3, 3, 3, 3, 3, 3, 3, 3, 
	3, 3, 3, 3, 3, 3, 3, 3, 
	3, 3, 0, 4, 4, 4, 4, 4, 
	4, 4, 4, 4, 4, 4, 4, 4, 
	4, 4, 4, 4, 4, 4, 4, 4, 
	4, 4, 4, 4, 4, 4, 4, 4, 
	4, 4, 4, 4, 4, 4, 4, 4, 
	4, 4, 4, 4, 4, 4, 4, 4, 
	4, 4, 4, 4, 4, 4, 4, 4, 
	4, 4, 4, 4, 4, 4, 4, 4, 
	4, 4, 4, 0, 5, 5, 5, 5, 
	5, 5, 5, 5, 5, 5, 5, 5, 
	5, 5, 5, 5, 5, 5, 5, 5, 
	5, 5, 5, 5, 5, 5, 5, 5, 
	5, 5, 5, 5, 5, 5, 5, 5, 
	5, 5, 5, 5, 5, 5, 5, 5, 
	5, 5, 5, 5, 5, 5, 5, 5, 
	5, 5, 5, 5, 5, 5, 5, 5, 
	5, 5, 5, 5, 0, 6, 6, 6, 
	6, 6, 6, 6, 6, 6, 6, 6, 
	6, 6, 6, 6, 6, 6, 6, 6, 
	6, 6, 6, 6, 6, 6, 6, 6, 
	6, 6, 6, 6, 6, 6, 6, 6, 
	6, 6, 6, 6, 6, 6, 6, 6, 
	6, 6, 6, 6, 6, 6, 6, 6, 
	6, 6, 6, 6, 6, 6, 6, 6, 
	6, 6, 6, 6, 6, 0, 7, 8, 
	9, 8, 10, 10, 10, 10, 10, 10, 
	10, 10, 10, 10, 10, 10, 10, 10, 
	10, 10, 10, 10, 10, 10, 10, 10, 
	10, 10, 10, 10, 7, 7, 7, 7, 
	7, 7, 10, 10, 10, 10, 10, 10, 
	10, 10, 10, 10, 10, 10, 10, 10, 
	10, 10, 10, 10, 10, 10, 10, 10, 
	10, 10, 10, 10, 7, 11, 7, 7, 
	7, 7, 7, 7, 7, 7, 10, 10, 
	10, 10, 10, 10, 10, 10, 10, 10, 
	7, 7, 7, 7, 7, 7, 7, 10, 
	10, 10, 10, 10, 10, 10, 10, 10, 
	10, 10, 10, 10, 10, 10, 10, 10, 
	10, 10, 10, 10, 10, 10, 10, 10, 
	10, 7, 7, 7, 7, 7, 7, 10, 
	10, 10, 10, 10, 10, 10, 10, 10, 
	10, 10, 10, 10, 10, 10, 10, 10, 
	10, 10, 10, 10, 10, 10, 10, 10, 
	10, 7, 12, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 7, 7, 
	7, 7, 7, 7, 7, 7, 12, 7, 
	7, 7, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 7, 7, 7, 7, 
	7, 7, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 7, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 7, 
	7, 7, 7, 11, 7, 7, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	7, 7, 7, 7, 7, 7, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	13, 13, 13, 13, 13, 13, 13, 13, 
	7, 15, 14, 14, 14, 14, 14, 14, 
	14, 14, 14, 14, 14, 14, 14, 14, 
	14, 14, 14, 14, 14, 14, 16, 14, 
	17, 14, 14, 14, 18, 18, 18, 18, 
	18, 18, 18, 18, 18, 14, 14, 14, 
	14, 14, 14, 14, 19, 19, 19, 19, 
	19, 19, 19, 19, 19, 19, 19, 19, 
	19, 19, 19, 19, 19, 19, 19, 19, 
	19, 19, 19, 19, 19, 19, 14, 14, 
	14, 14, 14, 14, 19, 19, 19, 19, 
	19, 19, 19, 19, 19, 19, 19, 19, 
	19, 19, 19, 19, 19, 19, 19, 19, 
	19, 19, 19, 19, 19, 19, 14, 18, 
	18, 18, 18, 18, 18, 18, 18, 18, 
	14, 20, 14, 14, 14, 21, 14, 21, 
	14, 14, 18, 18, 18, 18, 18, 18, 
	18, 18, 18, 18, 14, 22, 22, 22, 
	22, 22, 22, 22, 22, 22, 22, 14, 
	20, 14, 14, 14, 14, 14, 14, 14, 
	14, 22, 22, 22, 22, 22, 22, 22, 
	22, 22, 22, 14, 20, 14, 14, 14, 
	21, 14, 21, 14, 14, 19, 19, 19, 
	19, 19, 19, 19, 19, 19, 19, 14, 
	14, 14, 14, 14, 14, 14, 19, 19, 
	19, 19, 19, 19, 19, 19, 19, 19, 
	19, 19, 19, 19, 19, 19, 19, 19, 
	19, 19, 19, 19, 19, 19, 19, 19, 
	14, 14, 14, 14, 14, 14, 19, 19, 
	19, 19, 19, 19, 19, 19, 19, 19, 
	19, 19, 19, 19, 19, 19, 19, 19, 
	19, 19, 19, 19, 19, 19, 19, 19, 
	14, 23, 14, 14, 14, 24, 24, 24, 
	24, 24, 24, 24, 24, 24, 14, 14, 
	14, 14, 14, 14, 14, 25, 25, 25, 
	25, 25, 25, 25, 25, 25, 25, 25, 
	25, 25, 25, 25, 25, 25, 25, 25, 
	25, 25, 25, 25, 25, 25, 25, 14, 
	14, 14, 14, 14, 14, 25, 25, 25, 
	25, 25, 25, 25, 25, 25, 25, 25, 
	25, 25, 25, 25, 25, 25, 25, 25, 
	25, 25, 25, 25, 25, 25, 25, 14, 
	24, 24, 24, 24, 24, 24, 24, 24, 
	24, 14, 26, 14, 26, 14, 14, 24, 
	24, 24, 24, 24, 24, 24, 24, 24, 
	24, 14, 14, 14, 14, 20, 14, 27, 
	27, 27, 27, 27, 27, 27, 27, 27, 
	27, 14, 27, 27, 27, 27, 27, 27, 
	27, 27, 27, 27, 14, 14, 14, 14, 
	20, 14, 26, 14, 26, 14, 14, 25, 
	25, 25, 25, 25, 25, 25, 25, 25, 
	25, 14, 14, 14, 14, 20, 14, 14, 
	25, 25, 25, 25, 25, 25, 25, 25, 
	25, 25, 25, 25, 25, 25, 25, 25, 
	25, 25, 25, 25, 25, 25, 25, 25, 
	25, 25, 14, 14, 14, 14, 14, 14, 
	25, 25, 25, 25, 25, 25, 25, 25, 
	25, 25, 25, 25, 25, 25, 25, 25, 
	25, 25, 25, 25, 25, 25, 25, 25, 
	25, 25, 14, 29, 28, 28, 28, 30, 
	30, 30, 30, 30, 30, 30, 30, 30, 
	30, 28, 28, 28, 28, 28, 28, 28, 
	28, 28, 28, 28, 28, 28, 28, 28, 
	28, 28, 28, 28, 28, 28, 28, 28, 
	28, 28, 28, 28, 28, 28, 28, 28, 
	28, 28, 28, 28, 28, 28, 28, 28, 
	28, 28, 28, 28, 28, 28, 28, 28, 
	28, 28, 28, 28, 28, 28, 28, 28, 
	28, 28, 28, 28, 28, 28, 28, 28, 
	28, 28, 28, 28, 31, 28, 29, 29, 
	29, 29, 29, 29, 29, 29, 29, 29, 
	28, 28, 28, 28, 28, 28, 28, 28, 
	28, 28, 28, 28, 28, 28, 28, 28, 
	28, 28, 28, 28, 28, 28, 28, 28, 
	28, 28, 28, 28, 28, 28, 28, 28, 
	28, 28, 28, 28, 28, 28, 28, 28, 
	28, 28, 28, 28, 28, 28, 28, 28, 
	28, 28, 28, 28, 28, 28, 28, 28, 
	28, 28, 28, 28, 28, 28, 28, 28, 
	28, 28, 28, 31, 28, 32, 33, 34, 
	34, 34, 34, 34, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 34, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 35, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	34, 33, 33, 33, 36, 34, 33, 35, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	34, 33, 34, 34, 34, 34, 34, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 34, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 34, 34, 34, 34, 34, 34, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	34, 34, 34, 34, 33, 33, 33, 33, 
	34, 33, 34, 34, 34, 34, 34, 34, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	34, 34, 34, 34, 33, 33, 37, 33, 
	34, 34, 34, 34, 34, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 34, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	34, 34, 34, 34, 34, 34, 38, 34, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	34, 34, 33, 33, 33, 33, 34, 33, 
	34, 34, 34, 34, 34, 34, 38, 34, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	34, 34, 33, 33, 37, 33, 34, 34, 
	34, 34, 34, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 34, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 34, 34, 
	34, 34, 39, 34, 34, 34, 34, 34, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	33, 33, 33, 33, 34, 33, 34, 34, 
	34, 34, 39, 34, 34, 34, 34, 34, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	33, 33, 37, 33, 34, 34, 34, 34, 
	34, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 34, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	40, 33, 33, 33, 34, 34, 34, 34, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	34, 34, 34, 34, 34, 34, 33, 33, 
	33, 33, 34, 33, 34, 34, 34, 34, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	34, 34, 34, 34, 34, 34, 33, 33, 
	37, 33, 41, 42, 43, 42, 43, 44, 
	33, 45, 33, 46, 33, 37, 33, 47, 
	33, 46, 46, 33, 48, 33, 46, 46, 
	46, 33, 49, 33, 46, 33, 34, 34, 
	34, 34, 34, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 34, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 35, 34, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	33, 33, 33, 33, 34, 33, 35, 34, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	34, 34, 34, 34, 34, 34, 34, 34, 
	33, 51, 51, 51, 51, 51, 51, 51, 
	51, 51, 51, 51, 51, 51, 51, 51, 
	51, 51, 51, 51, 51, 51, 51, 51, 
	51, 51, 51, 51, 51, 51, 51, 51, 
	51, 51, 51, 51, 51, 51, 51, 51, 
	51, 51, 51, 51, 51, 51, 51, 51, 
	51, 51, 51, 51, 51, 51, 51, 51, 
	51, 51, 51, 51, 51, 51, 51, 51, 
	51, 50, 52, 52, 52, 52, 52, 52, 
	52, 52, 52, 52, 52, 52, 52, 52, 
	52, 52, 52, 52, 52, 52, 52, 52, 
	52, 52, 52, 52, 52, 52, 52, 52, 
	52, 52, 52, 52, 52, 52, 52, 52, 
	52, 52, 52, 52, 52, 52, 52, 52, 
	52, 52, 52, 52, 52, 52, 52, 52, 
	52, 52, 52, 52, 52, 52, 52, 52, 
	52, 52, 50, 53, 53, 53, 53, 53, 
	53, 53, 53, 53, 53, 53, 53, 53, 
	53, 53, 53, 53, 53, 53, 53, 53, 
	53, 53, 53, 53, 53, 53, 53, 53, 
	53, 53, 53, 53, 53, 53, 53, 53, 
	53, 53, 53, 53, 53, 53, 53, 53, 
	53, 53, 53, 53, 53, 53, 53, 53, 
	53, 53, 53, 53, 53, 53, 53, 53, 
	53, 53, 53, 50, 54, 54, 54, 54, 
	54, 54, 54, 54, 54, 54, 54, 54, 
	54, 54, 54, 54, 54, 54, 54, 54, 
	54, 54, 54, 54, 54, 54, 54, 54, 
	54, 54, 54, 54, 54, 54, 54, 54, 
	54, 54, 54, 54, 54, 54, 54, 54, 
	54, 54, 54, 54, 54, 54, 54, 54, 
	54, 54, 54, 54, 54, 54, 54, 54, 
	54, 54, 54, 54, 50, 55, 55, 55, 
	55, 55, 55, 55, 55, 55, 55, 55, 
	55, 55, 55, 55, 55, 55, 55, 55, 
	55, 55, 55, 55, 55, 55, 55, 55, 
	55, 55, 55, 55, 55, 55, 55, 55, 
	55, 55, 55, 55, 55, 55, 55, 55, 
	55, 55, 55, 55, 55, 55, 55, 55, 
	55, 55, 55, 55, 55, 55, 55, 55, 
	55, 55, 55, 55, 55, 50, 56, 56, 
	56, 56, 56, 56, 56, 56, 56, 56, 
	56, 56, 56, 56, 56, 56, 56, 56, 
	56, 56, 56, 56, 56, 56, 56, 56, 
	56, 56, 56, 56, 56, 56, 56, 56, 
	56, 56, 56, 56, 56, 56, 56, 56, 
	56, 56, 56, 56, 56, 56, 56, 56, 
	56, 56, 56, 56, 56, 56, 56, 56, 
	56, 56, 56, 56, 56, 56, 50, 57, 
	57, 57, 57, 57, 57, 57, 57, 57, 
	57, 50, 50, 50, 50, 50, 50, 50, 
	57, 57, 57, 57, 57, 57, 57, 57, 
	57, 57, 57, 57, 57, 57, 57, 57, 
	57, 57, 57, 57, 57, 57, 57, 57, 
	57, 57, 50, 50, 50, 50, 50, 50, 
	57, 57, 57, 57, 57, 57, 57, 57, 
	57, 57, 57, 57, 57, 57, 57, 57, 
	57, 57, 57, 57, 57, 57, 57, 57, 
	57, 57, 50, 60, 59, 59, 59, 59, 
	59, 59, 59, 59, 59, 59, 59, 59, 
	59, 59, 59, 59, 59, 59, 59, 60, 
	60, 60, 60, 60, 60, 60, 60, 60, 
	60, 60, 60, 60, 60, 60, 60, 60, 
	60, 60, 60, 60, 60, 60, 60, 60, 
	60, 59, 59, 59, 59, 59, 59, 60, 
	60, 60, 60, 60, 60, 60, 60, 60, 
	60, 60, 60, 60, 60, 60, 60, 60, 
	60, 60, 60, 60, 60, 60, 60, 60, 
	60, 59, 60, 61, 59, 59, 59, 59, 
	59, 59, 59, 59, 59, 59, 59, 59, 
	59, 59, 59, 59, 59, 59, 60, 60, 
	60, 60, 60, 60, 60, 60, 60, 60, 
	60, 60, 60, 60, 60, 60, 60, 60, 
	60, 60, 60, 60, 60, 60, 60, 60, 
	59, 59, 59, 59, 59, 59, 60, 60, 
	60, 60, 60, 60, 60, 60, 60, 60, 
	60, 60, 60, 60, 60, 60, 60, 60, 
	60, 60, 60, 60, 60, 60, 60, 60, 
	59, 62, 59, 63, 59, 59, 64, 65, 
	66, 67, 59, 59, 68, 59, 59, 59, 
	59, 69, 59, 59, 59, 70, 59, 59, 
	71, 59, 72, 59, 73, 74, 59, 64, 
	65, 66, 67, 59, 59, 68, 59, 59, 
	59, 59, 69, 59, 59, 59, 70, 59, 
	59, 71, 59, 72, 59, 73, 74, 59, 
	75, 59, 59, 59, 59, 59, 59, 76, 
	59, 77, 59, 78, 59, 79, 59, 80, 
	59, 81, 59, 82, 59, 83, 59, 80, 
	59, 84, 59, 85, 59, 80, 59, 86, 
	59, 87, 59, 88, 59, 80, 59, 89, 
	59, 90, 59, 91, 59, 80, 59, 92, 
	59, 93, 59, 94, 59, 80, 59, 95, 
	59, 96, 59, 97, 59, 80, 59, 98, 
	59, 99, 59, 100, 59, 80, 59, 101, 
	59, 59, 102, 59, 103, 59, 94, 59, 
	104, 59, 94, 59, 105, 59, 106, 59, 
	107, 59, 80, 59, 108, 59, 99, 59, 
	109, 59, 110, 59, 80, 59, 67, 59, 
	111, 111, 111, 111, 111, 111, 111, 111, 
	111, 111, 111, 111, 111, 111, 111, 111, 
	111, 111, 111, 111, 111, 111, 111, 111, 
	111, 111, 59, 59, 59, 59, 59, 59, 
	111, 111, 111, 111, 111, 111, 111, 111, 
	111, 111, 111, 111, 111, 111, 111, 111, 
	111, 111, 111, 111, 111, 111, 111, 111, 
	111, 111, 59, 112, 59, 113, 59, 115, 
	115, 115, 115, 115, 115, 115, 115, 115, 
	115, 115, 115, 115, 115, 115, 115, 115, 
	115, 115, 115, 115, 115, 115, 115, 115, 
	115, 115, 115, 115, 115, 115, 115, 115, 
	115, 115, 115, 115, 115, 115, 115, 115, 
	115, 115, 115, 115, 115, 115, 115, 115, 
	115, 115, 115, 115, 115, 115, 115, 115, 
	115, 115, 115, 115, 115, 115, 115, 114, 
	116, 116, 116, 116, 116, 116, 116, 116, 
	116, 116, 116, 116, 116, 116, 116, 116, 
	116, 116, 116, 116, 116, 116, 116, 116, 
	116, 116, 116, 116, 116, 116, 116, 116, 
	116, 116, 116, 116, 116, 116, 116, 116, 
	116, 116, 116, 116, 116, 116, 116, 116, 
	116, 116, 116, 116, 116, 116, 116, 116, 
	116, 116, 116, 116, 116, 116, 116, 116, 
	114, 117, 117, 117, 117, 117, 117, 117, 
	117, 117, 117, 117, 117, 117, 117, 117, 
	117, 117, 117, 117, 117, 117, 117, 117, 
	117, 117, 117, 117, 117, 117, 117, 117, 
	117, 117, 117, 117, 117, 117, 117, 117, 
	117, 117, 117, 117, 117, 117, 117, 117, 
	117, 117, 117, 117, 117, 117, 117, 117, 
	117, 117, 117, 117, 117, 117, 117, 117, 
	117, 114, 118, 118, 118, 118, 118, 118, 
	118, 118, 118, 118, 118, 118, 118, 118, 
	118, 118, 118, 118, 118, 118, 118, 118, 
	118, 118, 118, 118, 118, 118, 118, 118, 
	118, 118, 118, 118, 118, 118, 118, 118, 
	118, 118, 118, 118, 118, 118, 118, 118, 
	118, 118, 118, 118, 118, 118, 118, 118, 
	118, 118, 118, 118, 118, 118, 118, 118, 
	118, 118, 114, 119, 119, 119, 119, 119, 
	119, 119, 119, 119, 119, 119, 119, 119, 
	119, 119, 119, 119, 119, 119, 119, 119, 
	119, 119, 119, 119, 119, 119, 119, 119, 
	119, 119, 119, 119, 119, 119, 119, 119, 
	119, 119, 119, 119, 119, 119, 119, 119, 
	119, 119, 119, 119, 119, 119, 119, 119, 
	119, 119, 119, 119, 119, 119, 119, 119, 
	119, 119, 119, 114, 120, 120, 120, 120, 
	120, 120, 120, 120, 120, 120, 120, 120, 
	120, 120, 120, 120, 120, 120, 120, 120, 
	120, 120, 120, 120, 120, 120, 120, 120, 
	120, 120, 120, 120, 120, 120, 120, 120, 
	120, 120, 120, 120, 120, 120, 120, 120, 
	120, 120, 120, 120, 120, 120, 120, 120, 
	120, 120, 120, 120, 120, 120, 120, 120, 
	120, 120, 120, 120, 114, 122, 121, 123, 
	121, 124, 124, 124, 124, 124, 124, 124, 
	124, 124, 124, 121, 121, 121, 121, 121, 
	121, 121, 124, 124, 124, 124, 124, 124, 
	121, 121, 121, 121, 121, 121, 121, 121, 
	121, 121, 121, 121, 121, 121, 121, 121, 
	121, 121, 121, 121, 121, 121, 121, 121, 
	121, 121, 124, 124, 124, 124, 124, 124, 
	121, 125, 33, 126, 126, 126, 126, 126, 
	126, 126, 126, 126, 126, 126, 126, 126, 
	126, 126, 126, 126, 126, 126, 126, 126, 
	126, 126, 126, 126, 126, 33, 33, 33, 
	33, 33, 33, 126, 126, 126, 126, 126, 
	126, 126, 126, 126, 126, 126, 126, 126, 
	126, 126, 126, 126, 126, 126, 126, 126, 
	126, 126, 126, 126, 126, 33, 127, 33, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 33, 129, 33, 33, 33, 33, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 33, 130, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 131, 33, 131, 33, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 33, 33, 33, 33, 33, 33, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 128, 128, 128, 128, 128, 128, 128, 
	128, 33, 132, 132, 132, 132, 132, 132, 
	132, 132, 132, 132, 33, 33, 33, 33, 
	33, 33, 33, 132, 132, 132, 132, 132, 
	132, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 132, 132, 132, 132, 132, 
	132, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 133, 33, 134, 
	134, 134, 134, 134, 134, 134, 134, 134, 
	134, 33, 33, 33, 33, 33, 33, 33, 
	134, 134, 134, 134, 134, 134, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	134, 134, 134, 134, 134, 134, 33, 135, 
	135, 135, 135, 135, 135, 135, 135, 135, 
	135, 33, 33, 33, 33, 33, 33, 33, 
	135, 135, 135, 135, 135, 135, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	135, 135, 135, 135, 135, 135, 33, 136, 
	136, 136, 136, 136, 136, 136, 136, 136, 
	136, 33, 33, 33, 33, 33, 33, 33, 
	136, 136, 136, 136, 136, 136, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	136, 136, 136, 136, 136, 136, 33, 137, 
	137, 137, 137, 137, 137, 137, 137, 137, 
	137, 33, 33, 33, 33, 33, 33, 33, 
	137, 137, 137, 137, 137, 137, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	137, 137, 137, 137, 137, 137, 33, 138, 
	138, 138, 138, 138, 138, 138, 138, 138, 
	138, 33, 33, 33, 33, 33, 33, 33, 
	138, 138, 138, 138, 138, 138, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	138, 138, 138, 138, 138, 138, 33, 139, 
	139, 139, 139, 139, 139, 139, 139, 139, 
	139, 33, 33, 33, 33, 33, 33, 33, 
	139, 139, 139, 139, 139, 139, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	139, 139, 139, 139, 139, 139, 33, 140, 
	140, 140, 140, 140, 140, 140, 140, 140, 
	140, 33, 33, 33, 33, 33, 33, 33, 
	140, 140, 140, 140, 140, 140, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	140, 140, 140, 140, 140, 140, 33, 141, 
	141, 141, 141, 141, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 141, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 137, 137, 
	137, 137, 137, 137, 137, 137, 137, 137, 
	33, 33, 33, 33, 33, 33, 33, 137, 
	137, 137, 137, 137, 137, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 137, 
	137, 137, 137, 137, 137, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 136, 33, 137, 137, 137, 
	137, 137, 137, 137, 137, 137, 137, 33, 
	33, 33, 33, 33, 33, 33, 137, 137, 
	137, 137, 137, 137, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 137, 137, 
	137, 137, 137, 137, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 136, 33, 142, 142, 142, 142, 
	142, 142, 142, 142, 142, 142, 33, 33, 
	33, 33, 33, 33, 33, 142, 142, 142, 
	142, 142, 142, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 142, 142, 142, 
	142, 142, 142, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 143, 
	33, 144, 144, 144, 144, 144, 144, 144, 
	144, 144, 144, 33, 33, 33, 33, 33, 
	33, 33, 144, 144, 144, 144, 144, 144, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 144, 144, 144, 144, 144, 144, 
	33, 145, 145, 145, 145, 145, 145, 145, 
	145, 145, 145, 33, 33, 33, 33, 33, 
	33, 33, 145, 145, 145, 145, 145, 145, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 145, 145, 145, 145, 145, 145, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 146, 33, 
	147, 147, 147, 147, 147, 147, 147, 147, 
	147, 147, 33, 33, 33, 33, 33, 33, 
	33, 147, 147, 147, 147, 147, 147, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 147, 147, 147, 147, 147, 147, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 146, 33, 148, 
	148, 148, 148, 148, 148, 148, 148, 148, 
	148, 33, 33, 33, 33, 33, 33, 33, 
	148, 148, 148, 148, 148, 148, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	148, 148, 148, 148, 148, 148, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 146, 33, 149, 149, 
	149, 149, 149, 149, 149, 149, 149, 149, 
	33, 33, 33, 33, 33, 33, 33, 149, 
	149, 149, 149, 149, 149, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 149, 
	149, 149, 149, 149, 149, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 146, 33, 150, 150, 150, 
	150, 150, 150, 150, 150, 150, 150, 33, 
	33, 33, 33, 33, 33, 33, 150, 150, 
	150, 150, 150, 150, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 150, 150, 
	150, 150, 150, 150, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 146, 33, 151, 151, 151, 151, 
	151, 151, 151, 151, 151, 151, 33, 33, 
	33, 33, 33, 33, 33, 151, 151, 151, 
	151, 151, 151, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 151, 151, 151, 
	151, 151, 151, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 146, 33, 152, 152, 152, 152, 152, 
	152, 152, 152, 152, 152, 33, 33, 33, 
	33, 33, 33, 33, 152, 152, 152, 152, 
	152, 152, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 152, 152, 152, 152, 
	152, 152, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	146, 33, 146, 33, 28, 28, 28, 28, 
	28, 28, 28, 28, 28, 28, 28, 28, 
	28, 28, 28, 28, 28, 28, 28, 28, 
	28, 28, 28, 28, 28, 28, 28, 28, 
	28, 28, 28, 28, 28, 28, 28, 28, 
	28, 28, 28, 28, 28, 28, 28, 28, 
	28, 28, 28, 28, 28, 28, 28, 28, 
	28, 28, 28, 28, 28, 28, 28, 28, 
	28, 28, 28, 28, 28, 28, 153, 153, 
	153, 153, 153, 153, 153, 153, 153, 153, 
	153, 153, 153, 153, 153, 153, 153, 153, 
	153, 153, 153, 153, 153, 153, 153, 153, 
	153, 153, 153, 153, 154, 154, 154, 154, 
	154, 154, 154, 154, 154, 154, 154, 154, 
	154, 154, 154, 154, 155, 155, 155, 155, 
	155, 28, 28, 28, 28, 28, 28, 28, 
	28, 28, 28, 28, 28, 156, 156, 156, 
	156, 156, 156, 156, 156, 156, 156, 156, 
	156, 156, 156, 156, 156, 156, 156, 156, 
	156, 156, 156, 156, 156, 156, 156, 156, 
	156, 156, 156, 156, 157, 157, 157, 157, 
	158, 157, 157, 157, 159, 160, 161, 162, 
	157, 157, 163, 157, 157, 157, 157, 157, 
	157, 157, 157, 157, 157, 157, 157, 157, 
	157, 157, 157, 164, 157, 157, 157, 157, 
	157, 157, 157, 157, 157, 157, 157, 157, 
	157, 157, 157, 157, 157, 157, 157, 157, 
	157, 157, 157, 157, 157, 157, 157, 165, 
	166, 28, 167, 157, 157, 157, 157, 157, 
	157, 157, 157, 157, 157, 157, 157, 157, 
	157, 157, 157, 157, 157, 157, 157, 157, 
	157, 157, 157, 157, 157, 157, 157, 30, 
	168, 28, 157, 156, 157, 153, 153, 153, 
	153, 153, 153, 153, 153, 153, 153, 153, 
	153, 153, 153, 153, 153, 153, 153, 153, 
	153, 153, 153, 153, 153, 153, 153, 153, 
	153, 153, 153, 169, 154, 154, 154, 154, 
	154, 154, 154, 154, 154, 154, 154, 154, 
	154, 154, 154, 154, 169, 155, 155, 155, 
	155, 155, 169, 156, 156, 156, 156, 156, 
	156, 156, 156, 156, 156, 156, 156, 156, 
	156, 156, 156, 156, 156, 156, 156, 156, 
	156, 156, 156, 156, 156, 156, 156, 156, 
	156, 156, 169, 169, 169, 169, 169, 169, 
	169, 169, 169, 169, 169, 169, 169, 169, 
	169, 169, 169, 169, 169, 169, 169, 169, 
	169, 169, 169, 169, 169, 169, 169, 169, 
	169, 169, 169, 169, 169, 169, 169, 169, 
	169, 169, 169, 169, 169, 169, 169, 169, 
	169, 169, 169, 169, 169, 169, 169, 169, 
	169, 169, 169, 169, 169, 169, 169, 169, 
	169, 169, 169, 169, 169, 169, 169, 169, 
	169, 169, 169, 169, 169, 169, 169, 169, 
	169, 169, 169, 169, 169, 169, 169, 169, 
	169, 169, 169, 169, 169, 169, 169, 169, 
	169, 156, 169, 157, 157, 157, 157, 169, 
	157, 157, 157, 169, 169, 169, 169, 157, 
	157, 169, 157, 157, 157, 157, 157, 157, 
	157, 157, 157, 157, 157, 157, 157, 157, 
	157, 157, 169, 157, 157, 157, 157, 157, 
	157, 157, 157, 157, 157, 157, 157, 157, 
	157, 157, 157, 157, 157, 157, 157, 157, 
	157, 157, 157, 157, 157, 157, 169, 169, 
	169, 169, 157, 157, 157, 157, 157, 157, 
	157, 157, 157, 157, 157, 157, 157, 157, 
	157, 157, 157, 157, 157, 157, 157, 157, 
	157, 157, 157, 157, 157, 157, 169, 169, 
	169, 157, 169, 171, 170, 12, 172, 173, 
	172, 172, 172, 174, 172, 172, 172, 172, 
	172, 175, 172, 172, 172, 172, 172, 172, 
	172, 172, 172, 172, 172, 172, 11, 172, 
	176, 12, 11, 172, 172, 172, 172, 172, 
	172, 172, 172, 172, 172, 172, 172, 172, 
	172, 172, 172, 172, 172, 172, 172, 172, 
	172, 172, 172, 172, 172, 172, 172, 172, 
	172, 172, 172, 172, 172, 172, 172, 172, 
	172, 172, 172, 172, 172, 177, 172, 172, 
	172, 177, 172, 172, 172, 172, 172, 172, 
	172, 172, 172, 172, 177, 172, 178, 172, 
	172, 172, 178, 172, 172, 172, 172, 172, 
	172, 172, 172, 172, 172, 178, 172, 179, 
	172, 172, 172, 179, 172, 172, 172, 172, 
	172, 172, 172, 172, 172, 172, 179, 172, 
	180, 172, 172, 172, 180, 172, 172, 172, 
	172, 172, 172, 172, 172, 172, 172, 180, 
	172, 175, 172, 172, 172, 172, 172, 172, 
	172, 172, 172, 172, 172, 172, 172, 172, 
	172, 172, 172, 172, 172, 172, 172, 172, 
	172, 172, 172, 172, 172, 172, 172, 172, 
	172, 172, 172, 172, 172, 172, 172, 172, 
	172, 172, 172, 172, 172, 172, 172, 172, 
	172, 172, 172, 172, 172, 172, 172, 172, 
	172, 172, 172, 172, 172, 181, 172, 172, 
	172, 181, 172, 172, 172, 172, 172, 172, 
	172, 172, 172, 172, 181, 172, 175, 172, 
	172, 172, 172, 172, 172, 172, 172, 172, 
	172, 172, 172, 172, 172, 172, 172, 172, 
	172, 172, 172, 172, 172, 172, 172, 172, 
	172, 172, 172, 172, 172, 172, 172, 172, 
	172, 172, 172, 172, 172, 172, 172, 172, 
	172, 172, 172, 172, 172, 172, 172, 172, 
	172, 172, 172, 172, 172, 172, 172, 172, 
	172, 172, 182, 172, 172, 172, 182, 172, 
	172, 172, 172, 172, 172, 172, 172, 172, 
	172, 182, 172, 175, 172, 172, 172, 172, 
	172, 172, 172, 172, 172, 172, 172, 172, 
	172, 172, 172, 172, 172, 172, 172, 172, 
	172, 172, 172, 172, 172, 172, 172, 172, 
	172, 172, 172, 172, 172, 172, 172, 172, 
	172, 172, 172, 172, 172, 172, 172, 172, 
	172, 172, 172, 172, 172, 172, 172, 172, 
	172, 172, 172, 172, 172, 172, 172, 178, 
	172, 172, 172, 178, 172, 172, 172, 172, 
	172, 172, 172, 172, 172, 172, 178, 172, 
	184, 183, 183, 183, 183, 183, 183, 183, 
	183, 183, 183, 183, 183, 183, 183, 183, 
	183, 183, 183, 183, 184, 183, 186, 185, 
	185, 185, 185, 185, 185, 185, 185, 185, 
	185, 185, 185, 185, 185, 185, 185, 185, 
	185, 185, 186, 185, 188, 187, 187, 187, 
	187, 187, 187, 187, 187, 187, 187, 187, 
	187, 187, 187, 187, 187, 187, 187, 187, 
	188, 187, 190, 190, 189, 191, 189, 189, 
	190, 191, 189, 189, 189, 189, 189, 189, 
	189, 189, 189, 189, 191, 189, 189, 189, 
	191, 189, 189, 190, 189, 189, 189, 189, 
	189, 189, 189, 190, 189, 191, 189, 189, 
	192, 191, 189, 189, 192, 189, 189, 189, 
	189, 189, 189, 189, 191, 189, 189, 189, 
	191, 189, 189, 190, 189, 194, 193, 193, 
	193, 193, 193, 193, 193, 193, 193, 193, 
	193, 193, 193, 193, 193, 193, 193, 193, 
	193, 194, 193, 195, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 195, 33, 197, 197, 197, 
	197, 197, 197, 197, 197, 197, 197, 197, 
	197, 197, 197, 197, 197, 197, 197, 197, 
	197, 197, 197, 197, 197, 197, 197, 197, 
	197, 197, 197, 198, 198, 198, 198, 198, 
	198, 198, 198, 198, 198, 198, 198, 198, 
	198, 198, 198, 199, 199, 199, 199, 199, 
	196, 196, 196, 196, 196, 196, 196, 196, 
	196, 196, 196, 196, 200, 200, 200, 200, 
	200, 200, 200, 200, 200, 200, 200, 200, 
	200, 200, 200, 200, 200, 200, 200, 200, 
	200, 200, 200, 200, 200, 200, 200, 200, 
	200, 200, 200, 196, 196, 196, 196, 201, 
	196, 202, 196, 201, 201, 201, 201, 196, 
	203, 201, 196, 204, 204, 204, 204, 204, 
	204, 204, 204, 204, 204, 196, 196, 196, 
	196, 196, 201, 196, 204, 204, 204, 204, 
	204, 204, 204, 204, 204, 204, 204, 204, 
	204, 204, 204, 204, 204, 204, 204, 204, 
	204, 204, 204, 204, 204, 204, 205, 206, 
	207, 208, 196, 196, 204, 204, 204, 204, 
	204, 204, 204, 204, 204, 204, 204, 204, 
	204, 204, 204, 204, 204, 204, 204, 204, 
	204, 204, 204, 204, 204, 204, 201, 201, 
	201, 196, 200, 196, 51, 51, 51, 51, 
	51, 51, 51, 51, 51, 51, 51, 51, 
	51, 51, 51, 51, 51, 51, 51, 51, 
	51, 51, 51, 51, 51, 51, 51, 51, 
	51, 51, 51, 51, 51, 51, 51, 51, 
	51, 51, 51, 51, 51, 51, 51, 51, 
	51, 51, 51, 51, 51, 51, 51, 51, 
	51, 51, 51, 51, 51, 51, 51, 51, 
	51, 51, 51, 51, 209, 210, 210, 210, 
	210, 210, 210, 210, 210, 210, 210, 210, 
	210, 210, 210, 210, 210, 210, 210, 210, 
	210, 210, 210, 210, 210, 210, 210, 210, 
	210, 210, 210, 209, 53, 53, 53, 53, 
	53, 53, 53, 53, 53, 53, 53, 53, 
	53, 53, 53, 53, 53, 53, 53, 53, 
	53, 53, 53, 53, 53, 53, 53, 53, 
	53, 53, 53, 53, 53, 53, 53, 53, 
	53, 53, 53, 53, 53, 53, 53, 53, 
	53, 53, 53, 53, 53, 53, 53, 53, 
	53, 53, 53, 53, 53, 53, 53, 53, 
	53, 53, 53, 53, 209, 211, 211, 211, 
	211, 211, 211, 211, 211, 211, 211, 211, 
	211, 211, 211, 211, 211, 209, 56, 56, 
	56, 56, 56, 56, 56, 56, 56, 56, 
	56, 56, 56, 56, 56, 56, 56, 56, 
	56, 56, 56, 56, 56, 56, 56, 56, 
	56, 56, 56, 56, 56, 56, 56, 56, 
	56, 56, 56, 56, 56, 56, 56, 56, 
	56, 56, 56, 56, 56, 56, 56, 56, 
	56, 56, 56, 56, 56, 56, 56, 56, 
	56, 56, 56, 56, 56, 56, 209, 212, 
	212, 212, 212, 212, 209, 200, 200, 200, 
	200, 200, 200, 200, 200, 200, 200, 200, 
	200, 200, 200, 200, 200, 200, 200, 200, 
	200, 200, 200, 200, 200, 200, 200, 200, 
	200, 200, 200, 200, 209, 209, 209, 209, 
	209, 209, 209, 209, 209, 209, 209, 209, 
	209, 209, 209, 209, 209, 209, 209, 209, 
	209, 209, 209, 209, 209, 209, 209, 209, 
	209, 209, 209, 209, 209, 209, 209, 209, 
	209, 209, 209, 209, 209, 209, 209, 209, 
	209, 209, 209, 209, 209, 209, 209, 209, 
	209, 209, 209, 209, 209, 209, 209, 209, 
	209, 209, 209, 209, 209, 209, 209, 209, 
	209, 209, 209, 209, 209, 209, 209, 209, 
	209, 209, 209, 209, 209, 209, 209, 209, 
	209, 209, 209, 209, 209, 209, 209, 209, 
	209, 209, 209, 200, 209, 213, 209, 214, 
	209, 215, 209, 218, 217, 217, 217, 217, 
	217, 217, 217, 217, 217, 217, 217, 219, 
	217, 217, 220, 217, 221, 221, 221, 221, 
	221, 221, 221, 221, 221, 221, 221, 221, 
	221, 221, 221, 221, 221, 221, 221, 221, 
	221, 221, 221, 221, 221, 221, 221, 221, 
	221, 221, 222, 222, 222, 222, 222, 222, 
	222, 222, 222, 222, 222, 222, 222, 222, 
	222, 222, 223, 223, 223, 223, 223, 33, 
	33, 33, 33, 33, 33, 33, 33, 33, 
	33, 33, 33, 224, 224, 224, 224, 224, 
	224, 224, 224, 224, 224, 224, 224, 224, 
	224, 224, 224, 224, 224, 224, 224, 224, 
	224, 224, 224, 224, 224, 224, 224, 224, 
	224, 224, 225, 225, 225, 225, 226, 225, 
	225, 225, 226, 226, 226, 226, 227, 226, 
	226, 225, 225, 225, 225, 225, 225, 225, 
	225, 225, 225, 225, 225, 225, 225, 225, 
	225, 226, 225, 225, 225, 225, 228, 225, 
	225, 225, 228, 225, 225, 225, 225, 225, 
	225, 225, 229, 225, 225, 228, 225, 225, 
	225, 228, 225, 225, 225, 226, 226, 226, 
	226, 225, 225, 225, 230, 225, 228, 225, 
	225, 225, 228, 225, 225, 225, 225, 225, 
	225, 225, 229, 225, 225, 228, 225, 225, 
	225, 228, 231, 225, 225, 226, 226, 226, 
	225, 224, 33, 221, 221, 221, 221, 221, 
	221, 221, 221, 221, 221, 221, 221, 221, 
	221, 221, 221, 221, 221, 221, 221, 221, 
	221, 221, 221, 221, 221, 221, 221, 221, 
	221, 232, 222, 222, 222, 222, 222, 222, 
	222, 222, 222, 222, 222, 222, 222, 222, 
	222, 222, 232, 223, 223, 223, 223, 223, 
	232, 224, 224, 224, 224, 224, 224, 224, 
	224, 224, 224, 224, 224, 224, 224, 224, 
	224, 224, 224, 224, 224, 224, 224, 224, 
	224, 224, 224, 224, 224, 224, 224, 224, 
	232, 232, 232, 232, 232, 232, 232, 232, 
	232, 232, 232, 232, 232, 232, 232, 232, 
	232, 232, 232, 232, 232, 232, 232, 232, 
	232, 232, 232, 232, 232, 232, 232, 232, 
	232, 232, 232, 232, 232, 232, 232, 232, 
	232, 232, 232, 232, 232, 232, 232, 232, 
	232, 232, 232, 232, 232, 232, 232, 232, 
	232, 232, 232, 232, 232, 232, 232, 232, 
	232, 232, 232, 232, 232, 232, 232, 232, 
	232, 232, 232, 232, 232, 232, 232, 232, 
	232, 232, 232, 232, 232, 232, 232, 232, 
	232, 232, 232, 232, 232, 232, 232, 224, 
	232, 225, 225, 225, 225, 114, 225, 225, 
	225, 114, 114, 114, 114, 225, 114, 114, 
	225, 225, 225, 225, 225, 225, 225, 225, 
	225, 225, 225, 225, 225, 225, 225, 225, 
	114, 225, 225, 225, 225, 225, 225, 225, 
	225, 225, 225, 225, 225, 225, 225, 225, 
	225, 225, 225, 225, 225, 225, 225, 225, 
	225, 225, 225, 225, 114, 114, 114, 114, 
	225, 225, 225, 225, 225, 225, 225, 225, 
	225, 225, 225, 225, 225, 225, 225, 225, 
	225, 225, 225, 225, 225, 225, 225, 225, 
	225, 225, 225, 225, 114, 114, 114, 225, 
	114, 225, 225, 225, 225, 232, 225, 225, 
	225, 232, 232, 232, 232, 225, 232, 232, 
	225, 233, 233, 233, 233, 233, 233, 233, 
	233, 233, 233, 225, 225, 225, 225, 225, 
	232, 225, 233, 233, 233, 233, 233, 233, 
	225, 225, 225, 225, 225, 225, 225, 225, 
	225, 225, 225, 225, 225, 225, 225, 225, 
	225, 225, 225, 225, 232, 232, 232, 232, 
	225, 225, 233, 233, 233, 233, 233, 233, 
	225, 225, 225, 225, 225, 225, 225, 225, 
	225, 225, 225, 225, 225, 225, 225, 225, 
	225, 225, 225, 225, 232, 232, 232, 225, 
	232, 225, 225, 225, 225, 234, 225, 225, 
	225, 234, 234, 234, 234, 225, 235, 234, 
	225, 236, 236, 236, 236, 236, 236, 236, 
	236, 236, 236, 225, 225, 225, 225, 225, 
	234, 225, 236, 236, 236, 236, 236, 236, 
	225, 225, 225, 225, 225, 225, 225, 225, 
	225, 225, 225, 225, 225, 225, 225, 225, 
	225, 225, 225, 225, 234, 234, 234, 234, 
	225, 225, 236, 236, 236, 236, 236, 236, 
	225, 225, 225, 225, 225, 225, 225, 225, 
	225, 225, 225, 225, 225, 225, 225, 225, 
	225, 225, 225, 225, 234, 234, 234, 225, 
	234, 238, 238, 238, 238, 238, 238, 238, 
	238, 238, 238, 237, 237, 237, 237, 237, 
	237, 237, 238, 238, 238, 238, 238, 238, 
	237, 237, 237, 237, 237, 237, 237, 237, 
	237, 237, 237, 237, 237, 237, 237, 237, 
	237, 237, 237, 237, 237, 237, 237, 237, 
	237, 237, 238, 238, 238, 238, 238, 238, 
	237, 225, 225, 225, 225, 234, 225, 225, 
	225, 234, 234, 234, 234, 225, 235, 234, 
	225, 225, 225, 225, 225, 225, 225, 225, 
	225, 225, 225, 225, 225, 225, 225, 225, 
	234, 225, 225, 225, 225, 225, 225, 225, 
	225, 225, 225, 225, 225, 225, 225, 225, 
	225, 225, 225, 225, 225, 225, 225, 225, 
	225, 225, 225, 225, 234, 234, 234, 234, 
	225, 225, 225, 225, 225, 225, 225, 225, 
	225, 225, 225, 225, 225, 225, 225, 225, 
	225, 225, 225, 225, 225, 225, 225, 225, 
	225, 225, 225, 225, 234, 234, 234, 225, 
	234, 240, 239, 239, 239, 240, 240, 240, 
	240, 239, 239, 240, 239, 241, 242, 242, 
	242, 242, 242, 242, 242, 243, 243, 239, 
	239, 239, 239, 239, 240, 239, 33, 33, 
	244, 33, 239, 239, 33, 33, 239, 239, 
	239, 239, 245, 239, 239, 246, 239, 239, 
	33, 239, 239, 239, 33, 239, 239, 33, 
	240, 240, 240, 240, 239, 239, 247, 247, 
	125, 33, 247, 247, 33, 33, 239, 239, 
	33, 239, 239, 247, 239, 246, 239, 247, 
	247, 247, 248, 247, 33, 249, 239, 33, 
	240, 240, 240, 239, 251, 251, 251, 251, 
	251, 251, 251, 251, 250, 253, 253, 253, 
	253, 253, 253, 253, 253, 252, 255, 255, 
	255, 255, 255, 255, 255, 255, 255, 255, 
	254, 254, 254, 254, 254, 254, 254, 255, 
	255, 255, 255, 255, 255, 254, 254, 254, 
	254, 254, 254, 254, 254, 254, 254, 254, 
	254, 254, 254, 254, 254, 254, 254, 254, 
	254, 254, 254, 254, 254, 254, 254, 255, 
	255, 255, 255, 255, 255, 254, 0
]

class << self
	attr_accessor :_re_scanner_trans_targs
	private :_re_scanner_trans_targs, :_re_scanner_trans_targs=
end
self._re_scanner_trans_targs = [
	142, 143, 3, 144, 5, 6, 145, 142, 
	8, 142, 10, 142, 142, 12, 142, 14, 
	20, 15, 16, 19, 142, 17, 18, 21, 
	22, 25, 23, 24, 0, 27, 26, 160, 
	29, 0, 30, 31, 44, 161, 32, 33, 
	34, 35, 38, 40, 42, 36, 37, 39, 
	41, 43, 162, 164, 166, 46, 49, 168, 
	48, 162, 162, 162, 53, 54, 162, 56, 
	57, 68, 72, 76, 80, 84, 88, 93, 
	97, 99, 102, 58, 65, 59, 63, 60, 
	61, 62, 162, 64, 66, 67, 69, 70, 
	71, 73, 74, 75, 77, 78, 79, 81, 
	82, 83, 85, 86, 87, 89, 91, 90, 
	92, 94, 95, 96, 98, 100, 101, 104, 
	105, 162, 174, 175, 108, 176, 110, 111, 
	177, 174, 113, 114, 182, 116, 184, 118, 
	184, 119, 120, 121, 123, 126, 124, 125, 
	184, 127, 128, 129, 130, 131, 187, 133, 
	134, 135, 184, 136, 137, 138, 139, 140, 
	141, 1, 2, 4, 146, 147, 142, 148, 
	142, 156, 157, 142, 158, 142, 159, 142, 
	142, 142, 142, 149, 142, 7, 9, 150, 
	11, 153, 151, 152, 142, 154, 155, 142, 
	142, 142, 142, 142, 142, 142, 142, 142, 
	13, 142, 142, 28, 162, 163, 165, 167, 
	169, 162, 170, 171, 172, 173, 162, 162, 
	162, 162, 45, 47, 50, 162, 162, 51, 
	162, 162, 52, 55, 103, 106, 107, 109, 
	178, 179, 174, 179, 179, 174, 179, 180, 
	174, 181, 174, 112, 183, 174, 174, 184, 
	184, 185, 185, 184, 115, 117, 184, 184, 
	122, 132, 184, 186, 184, 184, 184, 184
]

class << self
	attr_accessor :_re_scanner_trans_actions
	private :_re_scanner_trans_actions, :_re_scanner_trans_actions=
end
self._re_scanner_trans_actions = [
	1, 2, 0, 2, 0, 0, 2, 3, 
	4, 5, 0, 6, 7, 0, 8, 0, 
	0, 0, 0, 0, 9, 0, 0, 0, 
	0, 0, 0, 0, 10, 0, 0, 0, 
	0, 0, 0, 0, 0, 12, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 13, 14, 14, 0, 0, 14, 
	0, 15, 16, 17, 0, 0, 18, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 19, 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, 20, 21, 22, 0, 22, 0, 0, 
	22, 23, 0, 0, 0, 0, 24, 0, 
	25, 0, 0, 0, 0, 0, 0, 0, 
	26, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 27, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 30, 31, 
	32, 0, 0, 33, 0, 34, 14, 35, 
	36, 37, 38, 39, 40, 4, 0, 0, 
	0, 0, 0, 0, 41, 0, 0, 42, 
	43, 44, 45, 46, 47, 48, 49, 50, 
	0, 51, 52, 0, 54, 0, 14, 14, 
	0, 55, 0, 0, 14, 14, 56, 57, 
	58, 59, 0, 0, 0, 60, 61, 0, 
	62, 63, 0, 0, 0, 0, 0, 0, 
	0, 22, 64, 65, 66, 67, 68, 0, 
	69, 14, 70, 0, 14, 71, 72, 73, 
	74, 75, 76, 77, 0, 0, 78, 79, 
	0, 0, 80, 0, 81, 82, 83, 84
]

class << self
	attr_accessor :_re_scanner_to_state_actions
	private :_re_scanner_to_state_actions, :_re_scanner_to_state_actions=
end
self._re_scanner_to_state_actions = [
	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, 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, 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, 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, 28, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 53, 53, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 28, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	53, 0, 0, 0
]

class << self
	attr_accessor :_re_scanner_from_state_actions
	private :_re_scanner_from_state_actions, :_re_scanner_from_state_actions=
end
self._re_scanner_from_state_actions = [
	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, 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, 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, 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, 29, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 29, 29, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 29, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	29, 0, 0, 0
]

class << self
	attr_accessor :_re_scanner_eof_actions
	private :_re_scanner_eof_actions, :_re_scanner_eof_actions=
end
self._re_scanner_eof_actions = [
	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, 10, 10, 11, 11, 11, 11, 
	11, 11, 11, 11, 11, 11, 11, 11, 
	11, 11, 11, 11, 11, 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, 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, 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, 10, 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 :_re_scanner_eof_trans
	private :_re_scanner_eof_trans, :_re_scanner_eof_trans=
end
self._re_scanner_eof_trans = [
	0, 1, 1, 1, 1, 1, 1, 8, 
	8, 8, 8, 8, 8, 15, 15, 15, 
	15, 15, 15, 15, 15, 15, 15, 15, 
	15, 15, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 0, 0, 0, 
	0, 0, 0, 0, 0, 51, 51, 51, 
	51, 51, 51, 51, 59, 59, 59, 59, 
	59, 59, 59, 59, 59, 59, 59, 59, 
	59, 59, 59, 59, 59, 59, 59, 59, 
	59, 59, 59, 59, 59, 59, 59, 59, 
	59, 59, 59, 59, 59, 59, 59, 59, 
	59, 59, 59, 59, 59, 59, 59, 59, 
	59, 59, 59, 59, 59, 59, 59, 59, 
	59, 59, 115, 115, 115, 115, 115, 115, 
	122, 122, 122, 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, 170, 
	170, 170, 170, 170, 171, 173, 173, 173, 
	173, 173, 173, 173, 184, 186, 188, 190, 
	194, 0, 0, 210, 210, 210, 210, 210, 
	210, 210, 210, 210, 210, 217, 0, 233, 
	233, 233, 233, 115, 233, 235, 238, 235, 
	0, 251, 253, 255
]

class << self
	attr_accessor :re_scanner_start
end
self.re_scanner_start = 142;
class << self
	attr_accessor :re_scanner_first_final
end
self.re_scanner_first_final = 142;
class << self
	attr_accessor :re_scanner_error
end
self.re_scanner_error = 0;

class << self
	attr_accessor :re_scanner_en_unicode_property
end
self.re_scanner_en_unicode_property = 161;
class << self
	attr_accessor :re_scanner_en_character_set
end
self.re_scanner_en_character_set = 162;
class << self
	attr_accessor :re_scanner_en_set_escape_sequence
end
self.re_scanner_en_set_escape_sequence = 174;
class << self
	attr_accessor :re_scanner_en_escape_sequence
end
self.re_scanner_en_escape_sequence = 184;
class << self
	attr_accessor :re_scanner_en_main
end
self.re_scanner_en_main = 142;


# line 626 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"

  class ScannerError < StandardError
    def initialize(what)
      super what
    end
  end

  class PrematureEndError < ScannerError
    def initialize(where = '')
      super "Premature end of pattern: #{where}"
    end
  end

  class UnknownUnicodePropertyError < ScannerError
    def initialize(name)
      super "Unknown unicode character property name #{name}"
    end
  end


  # Scans the given regular expression text, or Regexp object and collects the
  # emitted token into an array that gets returned at the end. If a block is
  # given, it gets called for each emitted token.
  #
  # This method may raise errors if a syntax error is encountered.
  # --------------------------------------------------------------------------
  def self.scan(input, &block)
    top, stack = 0, []

    input = input.source if input.is_a?(Regexp)
    data  = input.unpack("c*") if input.is_a?(String)
    eof   = data.length

    @tokens = []
    @block  = block_given? ? block : nil

    in_group, group_depth = false, 0
    in_set,   set_depth, set_type   = false, 0, :set

    
# line 1386 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner.rb"
begin
	p ||= 0
	pe ||= data.length
	cs = re_scanner_start
	top = 0
	ts = nil
	te = nil
	act = 0
end

# line 666 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
    
# line 1399 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner.rb"
begin
	testEof = false
	_slen, _trans, _keys, _inds, _acts, _nacts = nil
	_goto_level = 0
	_resume = 10
	_eof_trans = 15
	_again = 20
	_test_eof = 30
	_out = 40
	while true
	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
	case _re_scanner_from_state_actions[cs] 
	when 29 then
# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
ts = p
		end
# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
# line 1428 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner.rb"
	end
	_keys = cs << 1
	_inds = _re_scanner_index_offsets[cs]
	_slen = _re_scanner_key_spans[cs]
	_trans = if (   _slen > 0 && 
			_re_scanner_trans_keys[_keys] <= data[p] && 
			data[p] <= _re_scanner_trans_keys[_keys + 1] 
		    ) then
			_re_scanner_indicies[ _inds + data[p] - _re_scanner_trans_keys[_keys] ] 
		 else 
			_re_scanner_indicies[ _inds + _slen ]
		 end
	end
	if _goto_level <= _eof_trans
	cs = _re_scanner_trans_targs[_trans]
	if _re_scanner_trans_actions[_trans] != 0
	case _re_scanner_trans_actions[_trans]
	when 10 then
# line 116 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
 raise PrematureEndError 		end
# line 116 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 31 then
# line 119 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
 group_depth += 1; in_group = true 		end
# line 119 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 4 then
# line 120 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
 group_depth -= 1; in_group = group_depth > 0 ? true : false 		end
# line 120 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 14 then
# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
		end
# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 12 then
# line 60 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      text = data[ts-1..te-1].pack('c*')
      if in_set
        type = :set
      else
        type = text[1,1] == 'p' ? :property : :nonproperty
      end

      name = data[ts+2..te-2].pack('c*').gsub(/[\s_]/,'').downcase
      if name[0].chr == '^'
        name = name[1..-1]
        type = :nonproperty
      end

      case name
      # Named
      when 'alnum'
        self.emit(type, :alnum,       text, ts-1, te)
      when 'alpha'
        self.emit(type, :alpha,       text, ts-1, te)
      when 'ascii'
        self.emit(type, :ascii,       text, ts-1, te)
      when 'blank'
        self.emit(type, :blank,       text, ts-1, te)
      when 'cntrl'
        self.emit(type, :cntrl,       text, ts-1, te)
      when 'digit'
        self.emit(type, :digit,       text, ts-1, te)
      when 'graph'
        self.emit(type, :graph,       text, ts-1, te)
      when 'lower'
        self.emit(type, :lower,       text, ts-1, te)
      when 'print'
        self.emit(type, :print,       text, ts-1, te)
      when 'punct'
        self.emit(type, :punct,       text, ts-1, te)
      when 'space'
        self.emit(type, :space,       text, ts-1, te)
      when 'upper'
        self.emit(type, :upper,       text, ts-1, te)
      when 'xdigit'
        self.emit(type, :xdigit,      text, ts-1, te)

      when 'any'
        self.emit(type, :any,         text, ts-1, te)
      when 'assigned'
        self.emit(type, :assigned,    text, ts-1, te)
      when 'newline'
        self.emit(type, :newline,     text, ts-1, te)
      when 'word'
        self.emit(type, :word,        text, ts-1, te)

      # Letters
      when 'l', 'letter'
        self.emit(type, :letter_any,       text, ts-1, te)
      when 'lu', 'uppercaseletter'
        self.emit(type, :letter_uppercase, text, ts-1, te)
      when 'll', 'lowercaseletter'
        self.emit(type, :letter_lowercase, text, ts-1, te)
      when 'lt', 'titlecaseletter'
        self.emit(type, :letter_titlecase, text, ts-1, te)
      when 'lm', 'modifierletter'
        self.emit(type, :letter_modifier,  text, ts-1, te)
      when 'lo', 'otherletter'
        self.emit(type, :letter_other,     text, ts-1, te)

      # Marks
      when 'm', 'mark'
        self.emit(type, :mark_any,         text, ts-1, te)
      when 'mn', 'nonspacingmark'
        self.emit(type, :mark_nonspacing,  text, ts-1, te)
      when 'mc', 'spacingmark'
        self.emit(type, :mark_spacing,     text, ts-1, te)
      when 'me', 'enclosingmark'
        self.emit(type, :mark_enclosing,   text, ts-1, te)

      # Numbers
      when 'n', 'number'
        self.emit(type, :number_any,       text, ts-1, te)
      when 'nd', 'decimalnumber'
        self.emit(type, :number_decimal,   text, ts-1, te)
      when 'nl', 'letternumber'
        self.emit(type, :number_letter,    text, ts-1, te)
      when 'no', 'othernumber'
        self.emit(type, :number_other,     text, ts-1, te)

      # Punctuation
      when 'p', 'punctuation'
        self.emit(type, :punct_any,        text, ts-1, te)
      when 'pc', 'connectorpunctuation'
        self.emit(type, :punct_connector,  text, ts-1, te)
      when 'pd', 'dashpunctuation'
        self.emit(type, :punct_dash,       text, ts-1, te)
      when 'ps', 'openpunctuation'
        self.emit(type, :punct_open,       text, ts-1, te)
      when 'pe', 'closepunctuation'
        self.emit(type, :punct_close,      text, ts-1, te)
      when 'pi', 'initialpunctuation'
        self.emit(type, :punct_initial,    text, ts-1, te)
      when 'pf', 'finalpunctuation'
        self.emit(type, :punct_final,      text, ts-1, te)
      when 'po', 'otherpunctuation'
        self.emit(type, :punct_other,      text, ts-1, te)

      # Symbols
      when 's', 'symbol'
        self.emit(type, :symbol_any,       text, ts-1, te)
      when 'sm', 'mathsymbol'
        self.emit(type, :symbol_math,      text, ts-1, te)
      when 'sc', 'currencysymbol'
        self.emit(type, :symbol_currency,  text, ts-1, te)
      when 'sk', 'modifiersymbol'
        self.emit(type, :symbol_modifier,  text, ts-1, te)
      when 'so', 'othersymbol'
        self.emit(type, :symbol_other,     text, ts-1, te)

      # Separators
      when 'z', 'separator'
        self.emit(type, :separator_any,    text, ts-1, te)
      when 'zs', 'spaceseparator'
        self.emit(type, :separator_space,  text, ts-1, te)
      when 'zl', 'lineseparator'
        self.emit(type, :separator_line,   text, ts-1, te)
      when 'zp', 'paragraphseparator'
        self.emit(type, :separator_para,   text, ts-1, te)

      # Codepoints
      when 'c', 'other'
        self.emit(type, :other,         text, ts-1, te)
      when 'cc', 'control'
        self.emit(type, :control,       text, ts-1, te)
      when 'cf', 'format'
        self.emit(type, :format,        text, ts-1, te)
      when 'cs', 'surrogate'
        self.emit(type, :surrogate,     text, ts-1, te)
      when 'co', 'privateuse'
        self.emit(type, :private_use,   text, ts-1, te)
      when 'cn', 'unassigned'
        self.emit(type, :unassigned,    text, ts-1, te)

      # Age
      when 'age=1.1'
        self.emit(type, :age_1_1,     text, ts-1, te)
      when 'age=2.0'
        self.emit(type, :age_2_0,     text, ts-1, te)
      when 'age=2.1'
        self.emit(type, :age_2_1,     text, ts-1, te)
      when 'age=3.0'
        self.emit(type, :age_3_0,     text, ts-1, te)
      when 'age=3.1'
        self.emit(type, :age_3_1,     text, ts-1, te)
      when 'age=3.2'
        self.emit(type, :age_3_2,     text, ts-1, te)
      when 'age=4.0'
        self.emit(type, :age_4_0,     text, ts-1, te)
      when 'age=4.1'
        self.emit(type, :age_4_1,     text, ts-1, te)
      when 'age=5.0'
        self.emit(type, :age_5_0,     text, ts-1, te)
      when 'age=5.1'
        self.emit(type, :age_5_1,     text, ts-1, te)
      when 'age=5.2'
        self.emit(type, :age_5_2,     text, ts-1, te)
      when 'age=6.0'
        self.emit(type, :age_6_0,     text, ts-1, te)

      # Derived Properties
      when 'ahex', 'asciihexdigit'
        self.emit(type, :ascii_hex,                       text, ts-1, te)
      when 'alphabetic'
        self.emit(type, :alphabetic,                      text, ts-1, te)
      when 'cased'
        self.emit(type, :cased,                           text, ts-1, te)
      when 'cwcf', 'changeswhencasefolded'
        self.emit(type, :changes_when_casefolded,         text, ts-1, te)
      when 'cwcm', 'changeswhencasemapped'
        self.emit(type, :changes_when_casemapped,         text, ts-1, te)
      when 'cwl', 'changeswhenlowercased'
        self.emit(type, :changes_when_lowercased,         text, ts-1, te)
      when 'cwt', 'changeswhentitlecased'
        self.emit(type, :changes_when_titlecased,         text, ts-1, te)
      when 'cwu', 'changeswhenuppercased'
        self.emit(type, :changes_when_uppercased,         text, ts-1, te)
      when 'ci', 'caseignorable'
        self.emit(type, :case_ignorable,                  text, ts-1, te)
      when 'bidic', 'bidicontrol'
        self.emit(type, :bidi_control,                    text, ts-1, te)
      when 'dash'
        self.emit(type, :dash,                            text, ts-1, te)
      when 'dep', 'deprecated'
        self.emit(type, :deprecated,                      text, ts-1, te)
      when 'di', 'defaultignorablecodepoint'
        self.emit(type, :default_ignorable_cp,            text, ts-1, te)
      when 'dia', 'diacritic'
        self.emit(type, :diacritic,                       text, ts-1, te)
      when 'ext', 'extender'
        self.emit(type, :extender,                        text, ts-1, te)
      when 'grbase', 'graphemebase'
        self.emit(type, :grapheme_base,                   text, ts-1, te)
      when 'grext', 'graphemeextend'
        self.emit(type, :grapheme_extend,                 text, ts-1, te)
      when 'grlink', 'graphemelink' # NOTE: deprecated as of Unicode 5.0
        self.emit(type, :grapheme_link,                   text, ts-1, te)
      when 'hex', 'hexdigit'
        self.emit(type, :hex_digit,                       text, ts-1, te)
      when 'hyphen' # NOTE: deprecated as of Unicode 6.0
        self.emit(type, :hyphen,                          text, ts-1, te)
      when 'idc', 'idcontinue'
        self.emit(type, :id_continue,                     text, ts-1, te)
      when 'ideo', 'ideographic'
        self.emit(type, :ideographic,                     text, ts-1, te)
      when 'ids', 'idstart'
        self.emit(type, :id_start,                        text, ts-1, te)
      when 'idsb', 'idsbinaryoperator'
        self.emit(type, :ids_binary_op,                   text, ts-1, te)
      when 'idst', 'idstrinaryoperator'
        self.emit(type, :ids_trinary_op,                  text, ts-1, te)
      when 'joinc', 'joincontrol'
        self.emit(type, :join_control,                    text, ts-1, te)
      when 'loe', 'logicalorderexception'
        self.emit(type, :logical_order_exception,         text, ts-1, te)
      when 'lowercase'
        self.emit(type, :lowercase,                       text, ts-1, te)
      when 'math'
        self.emit(type, :math,                            text, ts-1, te)
      when 'nchar', 'noncharactercodepoint'
        self.emit(type, :non_character_cp,                text, ts-1, te)
      when 'oalpha', 'otheralphabetic'
        self.emit(type, :other_alphabetic,                text, ts-1, te)
      when 'odi', 'otherdefaultignorablecodepoint'
        self.emit(type, :other_default_ignorable_cp,      text, ts-1, te)
      when 'ogrext', 'othergraphemeextend'
        self.emit(type, :other_grapheme_extended,         text, ts-1, te)
      when 'oidc', 'otheridcontinue'
        self.emit(type, :other_id_continue,               text, ts-1, te)
      when 'oids', 'otheridstart'
        self.emit(type, :other_id_start,                  text, ts-1, te)
      when 'olower', 'otherlowercase'
        self.emit(type, :other_lowercase,                 text, ts-1, te)
      when 'omath', 'othermath'
        self.emit(type, :other_math,                      text, ts-1, te)
      when 'oupper', 'otheruppercase'
        self.emit(type, :other_uppercase,                 text, ts-1, te)
      when 'patsyn', 'patternsyntax'
        self.emit(type, :pattern_syntax,                  text, ts-1, te)
      when 'patws', 'patternwhitespace'
        self.emit(type, :pattern_whitespace,              text, ts-1, te)
      when 'qmark', 'quotationmark'
        self.emit(type, :quotation_mark,                  text, ts-1, te)
      when 'radical'
        self.emit(type, :radical,                         text, ts-1, te)
      when 'sd', 'softdotted'
        self.emit(type, :soft_dotted,                     text, ts-1, te)
      when 'sterm'
        self.emit(type, :sentence_terminal,               text, ts-1, te)
      when 'term', 'terminalpunctuation'
        self.emit(type, :terminal_punctuation,            text, ts-1, te)
      when 'uideo', 'unifiedideograph'
        self.emit(type, :unified_ideograph,               text, ts-1, te)
      when 'uppercase'
        self.emit(type, :uppercase,                       text, ts-1, te)
      when 'vs', 'variationselector'
        self.emit(type, :variation_selector,              text, ts-1, te)
      when 'wspace', 'whitespace'
        self.emit(type, :whitespace,                      text, ts-1, te)
      when 'xids', 'xidstart'
        self.emit(type, :xid_start,                       text, ts-1, te)
      when 'xidc', 'xidcontinue'
        self.emit(type, :xid_continue,                    text, ts-1, te)


      # Scripts
      when 'arab', 'arabic'
        self.emit(type, :script_arabic,                   text, ts-1, te)
      when 'armi', 'imperialaramaic'
        self.emit(type, :script_imperial_aramaic,         text, ts-1, te)
      when 'armn', 'armenian'
        self.emit(type, :script_armenian,                 text, ts-1, te)
      when 'avst', 'avestan'
        self.emit(type, :script_avestan,                  text, ts-1, te)
      when 'bali', 'balinese'
        self.emit(type, :script_balinese,                 text, ts-1, te)
      when 'bamu', 'bamum'
        self.emit(type, :script_bamum,                    text, ts-1, te)
      when 'batk', 'batak'
        self.emit(type, :script_batak,                    text, ts-1, te)
      when 'beng', 'bengali'
        self.emit(type, :script_bengali,                  text, ts-1, te)
      when 'bopo', 'bopomofo'
        self.emit(type, :script_bopomofo,                 text, ts-1, te)
      when 'brah', 'brahmi'
        self.emit(type, :script_brahmi,                   text, ts-1, te)
      when 'brai', 'braille'
        self.emit(type, :script_braille,                  text, ts-1, te)
      when 'bugi', 'buginese'
        self.emit(type, :script_buginese,                 text, ts-1, te)
      when 'buhd', 'buhid'
        self.emit(type, :script_buhid,                    text, ts-1, te)
      when 'cans', 'canadianaboriginal'
        self.emit(type, :script_canadian_aboriginal,      text, ts-1, te)
      when 'cari', 'carian'
        self.emit(type, :script_carian,                   text, ts-1, te)
      when 'cham'
        self.emit(type, :script_cham,                     text, ts-1, te)
      when 'cher', 'cherokee'
        self.emit(type, :script_cherokee,                 text, ts-1, te)
      when 'copt', 'coptic', 'qaac'
        self.emit(type, :script_coptic,                   text, ts-1, te)
      when 'cprt', 'cypriot'
        self.emit(type, :script_cypriot,                  text, ts-1, te)
      when 'cyrl', 'cyrillic'
        self.emit(type, :script_cyrillic,                 text, ts-1, te)
      when 'deva', 'devanagari'
        self.emit(type, :script_devanagari,               text, ts-1, te)
      when 'dsrt', 'deseret'
        self.emit(type, :script_deseret,                  text, ts-1, te)
      when 'egyp', 'egyptianhieroglyphs'
        self.emit(type, :script_egyptian_hieroglyphs,     text, ts-1, te)
      when 'ethi', 'ethiopic'
        self.emit(type, :script_ethiopic,                 text, ts-1, te)
      when 'geor', 'georgian'
        self.emit(type, :script_georgian,                 text, ts-1, te)
      when 'glag', 'glagolitic'
        self.emit(type, :script_glagolitic,               text, ts-1, te)
      when 'goth', 'gothic'
        self.emit(type, :script_gothic,                   text, ts-1, te)
      when 'grek', 'greek'
        self.emit(type, :script_greek,                    text, ts-1, te)
      when 'gujr', 'gujarati'
        self.emit(type, :script_gujarati,                 text, ts-1, te)
      when 'guru', 'gurmukhi'
        self.emit(type, :script_gurmukhi,                 text, ts-1, te)
      when 'hang', 'hangul'
        self.emit(type, :script_hangul,                   text, ts-1, te)
      when 'hani', 'han'
        self.emit(type, :script_han,                      text, ts-1, te)
      when 'hano', 'hanunoo'
        self.emit(type, :script_hanunoo,                  text, ts-1, te)
      when 'hebr', 'hebrew'
        self.emit(type, :script_hebrew,                   text, ts-1, te)
      when 'hira', 'hiragana'
        self.emit(type, :script_hiragana,                 text, ts-1, te)
      when 'hrkt', 'katakanaorhiragana'
        self.emit(type, :script_katakana_or_hiragana,     text, ts-1, te)
      when 'ital', 'olditalic'
        self.emit(type, :script_old_italic,               text, ts-1, te)
      when 'java', 'javanese'
        self.emit(type, :script_javanese,                 text, ts-1, te)
      when 'kali', 'kayahli'
        self.emit(type, :script_kayah_li,                 text, ts-1, te)
      when 'kana', 'katakana'
        self.emit(type, :script_katakana,                 text, ts-1, te)
      when 'khar', 'kharoshthi'
        self.emit(type, :script_kharoshthi,               text, ts-1, te)
      when 'khmr', 'khmer'
        self.emit(type, :script_khmer,                    text, ts-1, te)
      when 'knda', 'kannada'
        self.emit(type, :script_kannada,                  text, ts-1, te)
      when 'kthi', 'kaithi'
        self.emit(type, :script_kaithi,                   text, ts-1, te)
      when 'lana', 'taitham'
        self.emit(type, :script_tai_tham,                 text, ts-1, te)
      when 'laoo', 'lao'
        self.emit(type, :script_lao,                      text, ts-1, te)
      when 'latn', 'latin'
        self.emit(type, :script_latin,                    text, ts-1, te)
      when 'lepc', 'lepcha'
        self.emit(type, :script_lepcha,                   text, ts-1, te)
      when 'limb', 'limbu'
        self.emit(type, :script_limbu,                    text, ts-1, te)
      when 'linb', 'linearb'
        self.emit(type, :script_linear_b,                 text, ts-1, te)
      when 'lisu'
        self.emit(type, :script_lisu,                     text, ts-1, te)
      when 'lyci', 'lycian'
        self.emit(type, :script_lycian,                   text, ts-1, te)
      when 'lydi', 'lydian'
        self.emit(type, :script_lydian,                   text, ts-1, te)
      when 'mlym', 'malayalam'
        self.emit(type, :script_malayalam,                text, ts-1, te)
      when 'mand', 'mandaic'
        self.emit(type, :script_mandaic,                  text, ts-1, te)
      when 'mong', 'mongolian'
        self.emit(type, :script_mongolian,                text, ts-1, te)
      when 'mtei', 'meeteimayek'
        self.emit(type, :script_meetei_mayek,             text, ts-1, te)
      when 'mymr', 'myanmar'
        self.emit(type, :script_myanmar,                  text, ts-1, te)
      when 'nkoo', 'nko'
        self.emit(type, :script_nko,                      text, ts-1, te)
      when 'ogam', 'ogham'
        self.emit(type, :script_ogham,                    text, ts-1, te)
      when 'olck', 'olchiki'
        self.emit(type, :script_ol_chiki,                 text, ts-1, te)
      when 'orkh', 'oldturkic'
        self.emit(type, :script_old_turkic,               text, ts-1, te)
      when 'orya', 'oriya'
        self.emit(type, :script_oriya,                    text, ts-1, te)
      when 'osma', 'osmanya'
        self.emit(type, :script_osmanya,                  text, ts-1, te)
      when 'phag', 'phagspa'
        self.emit(type, :script_phags_pa,                 text, ts-1, te)
      when 'phli', 'inscriptionalpahlavi'
        self.emit(type, :script_inscriptional_pahlavi,    text, ts-1, te)
      when 'phnx', 'phoenician'
        self.emit(type, :script_phoenician,               text, ts-1, te)
      when 'prti', 'inscriptionalparthian'
        self.emit(type, :script_inscriptional_parthian,   text, ts-1, te)
      when 'rjng', 'rejang'
        self.emit(type, :script_rejang,                   text, ts-1, te)
      when 'runr', 'runic'
        self.emit(type, :script_runic,                    text, ts-1, te)
      when 'samr', 'samaritan'
        self.emit(type, :script_samaritan,                text, ts-1, te)
      when 'sarb', 'oldsoutharabian'
        self.emit(type, :script_old_south_arabian,        text, ts-1, te)
      when 'saur', 'saurashtra'
        self.emit(type, :script_saurashtra,               text, ts-1, te)
      when 'shaw', 'shavian'
        self.emit(type, :script_shavian,                  text, ts-1, te)
      when 'sinh', 'sinhala'
        self.emit(type, :script_sinhala,                  text, ts-1, te)
      when 'sund', 'sundanese'
        self.emit(type, :script_sundanese,                text, ts-1, te)
      when 'sylo', 'sylotinagri'
        self.emit(type, :script_syloti_nagri,             text, ts-1, te)
      when 'syrc', 'syriac'
        self.emit(type, :script_syriac,                   text, ts-1, te)
      when 'tagb', 'tagbanwa'
        self.emit(type, :script_tagbanwa,                 text, ts-1, te)
      when 'tale', 'taile'
        self.emit(type, :script_tai_le,                   text, ts-1, te)
      when 'talu', 'newtailue'
        self.emit(type, :script_new_tai_lue,              text, ts-1, te)
      when 'taml', 'tamil'
        self.emit(type, :script_tamil,                    text, ts-1, te)
      when 'tavt', 'taiviet'
        self.emit(type, :script_tai_viet,                 text, ts-1, te)
      when 'telu', 'telugu'
        self.emit(type, :script_telugu,                   text, ts-1, te)
      when 'tfng', 'tifinagh'
        self.emit(type, :script_tifinagh,                 text, ts-1, te)
      when 'tglg', 'tagalog'
        self.emit(type, :script_tagalog,                  text, ts-1, te)
      when 'thaa', 'thaana'
        self.emit(type, :script_thaana,                   text, ts-1, te)
      when 'thai' 
        self.emit(type, :script_thai,                     text, ts-1, te)
      when 'tibt', 'tibetan'
        self.emit(type, :script_tibetan,                  text, ts-1, te)
      when 'ugar', 'ugaritic'
        self.emit(type, :script_ugaritic,                 text, ts-1, te)
      when 'vaii', 'vai'
        self.emit(type, :script_vai,                      text, ts-1, te)
      when 'xpeo', 'oldpersian'
        self.emit(type, :script_old_persian,              text, ts-1, te)
      when 'xsux', 'cuneiform'
        self.emit(type, :script_cuneiform,                text, ts-1, te)
      when 'yiii', 'yi'
        self.emit(type, :script_yi,                       text, ts-1, te)
      when 'zinh', 'inherited', 'qaai'
        self.emit(type, :script_inherited,                text, ts-1, te)
      when 'zyyy', 'common'
        self.emit(type, :script_common,                   text, ts-1, te)
      when 'zzzz', 'unknown'
        self.emit(type, :script_unknown,                  text, ts-1, te)

      else
        raise UnknownUnicodePropertyError.new(name)

      end
      	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

     end
		end
# line 60 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 57 then
# line 126 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      set_type  = set_depth > 1 ? :subset : :set
      set_depth -= 1; in_set = set_depth > 0 ? true : false

      self.emit(set_type, :close, data[ts..te-1].pack('c*'), ts, te)

      if set_depth == 0
        	begin
		cs = 142
		_goto_level = _again
		next
	end

      else
        	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

      end
     end
		end
# line 126 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 61 then
# line 139 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin  # special case, emits two tokens
      set_type  = set_depth > 1 ? :subset : :set
      set_depth -= 1; in_set = set_depth > 0 ? true : false

      self.emit(set_type, :member, data[ts..te-2].pack('c*'), ts, te)
      self.emit(set_type, :close,  data[ts+1..te-1].pack('c*'), ts, te)

      if set_depth == 0
        	begin
		cs = 142
		_goto_level = _again
		next
	end

      else
        	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

      end
     end
		end
# line 139 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 58 then
# line 153 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      text = data[ts..te-1].pack('c*')
      if @tokens.last[1] == :open
        self.emit(set_type, :negate, text, ts, te)
      else
        self.emit(set_type, :member, text, ts, te)
      end
     end
		end
# line 153 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 15 then
# line 162 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      self.emit(set_type, :range, data[ts..te-1].pack('c*'), ts, te)
     end
		end
# line 162 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 60 then
# line 166 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      self.emit(set_type, :intersection, data[ts..te-1].pack('c*'), ts, te)
     end
		end
# line 166 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 56 then
# line 170 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      	begin
		stack[top] = cs
		top+= 1
		cs = 174
		_goto_level = _again
		next
	end

     end
		end
# line 170 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 19 then
# line 182 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      text = data[ts..te-1].pack('c*')

      class_name = text[2..-3]
      if class_name[0].chr == '^'
        class_name = "non#{class_name[1..-1]}"
      end

      token_sym = "class_#{class_name}".to_sym
      self.emit(set_type, token_sym, text, ts, te)
     end
		end
# line 182 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 18 then
# line 194 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      self.emit(set_type, :collation, data[ts..te-1].pack('c*'), ts, te)
     end
		end
# line 194 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 20 then
# line 198 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      self.emit(set_type, :equivalent, data[ts..te-1].pack('c*'), ts, te)
     end
		end
# line 198 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 55 then
# line 204 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
     self.emit(set_type, :member, data[ts..te-1].pack('c*'), ts, te)
     end
		end
# line 204 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 54 then
# line 212 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      self.emit(set_type, :member, data[ts..te-1].pack('c*'), ts, te)
     end
		end
# line 212 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 63 then
# line 174 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p
p = p - 1; begin 
      set_depth += 1; in_set = true
      set_type  = set_depth > 1 ? :subset : :set

      self.emit(set_type, :open, data[ts..te-1].pack('c*'), ts, te)
      	begin
		stack[top] = cs
		top+= 1
		cs = 162
		_goto_level = _again
		next
	end

     end
		end
# line 174 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 59 then
# line 212 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p
p = p - 1; begin 
      self.emit(set_type, :member, data[ts..te-1].pack('c*'), ts, te)
     end
		end
# line 212 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 17 then
# line 174 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
 begin p = ((te))-1; end
 begin 
      set_depth += 1; in_set = true
      set_type  = set_depth > 1 ? :subset : :set

      self.emit(set_type, :open, data[ts..te-1].pack('c*'), ts, te)
      	begin
		stack[top] = cs
		top+= 1
		cs = 162
		_goto_level = _again
		next
	end

     end
		end
# line 174 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 13 then
# line 212 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
 begin p = ((te))-1; end
 begin 
      self.emit(set_type, :member, data[ts..te-1].pack('c*'), ts, te)
     end
		end
# line 212 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 72 then
# line 239 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      self.emit(set_type, :range_hex, data[ts-1..te-1].pack('c*'), ts-1, te)
      	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

     end
		end
# line 239 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 64 then
# line 249 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      self.emit(set_type, :escape, data[ts-1..te-1].pack('c*'), ts-1, te)
      	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

     end
		end
# line 249 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 67 then
# line 254 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      p = p - 1;
      cs = 162;
      	begin
		stack[top] = cs
		top+= 1
		cs = 161
		_goto_level = _again
		next
	end

      	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

     end
		end
# line 254 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 71 then
# line 239 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p
p = p - 1; begin 
      self.emit(set_type, :range_hex, data[ts-1..te-1].pack('c*'), ts-1, te)
      	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

     end
		end
# line 239 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 70 then
# line 244 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p
p = p - 1; begin 
      self.emit(set_type, :member_hex, data[ts-1..te-1].pack('c*'), ts-1, te)
      	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

     end
		end
# line 244 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 69 then
# line 266 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p
p = p - 1; begin 
      self.emit(set_type, :escape, data[ts-1..te-1].pack('c*'), ts-1, te)
      	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

     end
		end
# line 266 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 23 then
# line 244 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
 begin p = ((te))-1; end
 begin 
      self.emit(set_type, :member_hex, data[ts-1..te-1].pack('c*'), ts-1, te)
      	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

     end
		end
# line 244 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 21 then
# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
	case act
	when 0 then
	begin	begin
		cs = 0
		_goto_level = _again
		next
	end
end
	when 14 then
	begin begin p = ((te))-1; end

      self.emit(set_type, :backspace, data[ts-1..te-1].pack('c*'), ts-1, te)
      	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

    end
	when 15 then
	begin begin p = ((te))-1; end

      case text = data[ts-1..te-1].pack('c*')
      when '\d'; self.emit(set_type, :type_digit,     text, ts-1, te)
      when '\D'; self.emit(set_type, :type_nondigit,  text, ts-1, te)
      when '\h'; self.emit(set_type, :type_hex,       text, ts-1, te)
      when '\H'; self.emit(set_type, :type_nonhex,    text, ts-1, te)
      when '\s'; self.emit(set_type, :type_space,     text, ts-1, te)
      when '\S'; self.emit(set_type, :type_nonspace,  text, ts-1, te)
      when '\w'; self.emit(set_type, :type_word,      text, ts-1, te)
      when '\W'; self.emit(set_type, :type_nonword,   text, ts-1, te)
      end
      	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

    end
	when 18 then
	begin begin p = ((te))-1; end

      self.emit(set_type, :escape, data[ts-1..te-1].pack('c*'), ts-1, te)
      	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

    end
	when 20 then
	begin begin p = ((te))-1; end

      self.emit(set_type, :escape, data[ts-1..te-1].pack('c*'), ts-1, te)
      	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

    end
end 
			end
# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 77 then
# line 276 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      text = data[ts-1..te-1].pack('c*')
      self.emit(:backref, :number, text, ts-1, te)
      	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

     end
		end
# line 276 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 82 then
# line 282 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      self.emit(:escape, :octal, data[ts-1..te-1].pack('c*'), ts-1, te)
      	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

     end
		end
# line 282 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 74 then
# line 287 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      case text = data[ts-1..te-1].pack('c*')
      when '\.';  self.emit(:escape, :dot,               text, ts-1, te)
      when '\|';  self.emit(:escape, :alternation,       text, ts-1, te)
      when '\^';  self.emit(:escape, :beginning_of_line, text, ts-1, te)
      when '\$';  self.emit(:escape, :end_of_line,       text, ts-1, te)
      when '\?';  self.emit(:escape, :zero_or_one,       text, ts-1, te)
      when '\*';  self.emit(:escape, :zero_or_more,      text, ts-1, te)
      when '\+';  self.emit(:escape, :one_or_more,       text, ts-1, te)
      when '\(';  self.emit(:escape, :group_open,        text, ts-1, te)
      when '\)';  self.emit(:escape, :group_close,       text, ts-1, te)
      when '\{';  self.emit(:escape, :interval_open,     text, ts-1, te)
      when '\}';  self.emit(:escape, :interval_close,    text, ts-1, te)
      when '\[';  self.emit(:escape, :set_open,          text, ts-1, te)
      when '\]';  self.emit(:escape, :set_close,         text, ts-1, te)
      when "\\\\";
        self.emit(:escape, :backslash, text, ts-1, te)
      end
      	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

     end
		end
# line 287 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 79 then
# line 308 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      # \b is emitted as backspace only when inside a character set, otherwise
      # it is a word boundary anchor. A syntax might "normalize" it if needed.
      case text = data[ts-1..te-1].pack('c*')
      when '\a'; self.emit(:escape, :bell,           text, ts-1, te)
      when '\e'; self.emit(:escape, :escape,         text, ts-1, te)
      when '\f'; self.emit(:escape, :form_feed,      text, ts-1, te)
      when '\n'; self.emit(:escape, :newline,        text, ts-1, te)
      when '\r'; self.emit(:escape, :carriage,       text, ts-1, te)
      when '\s'; self.emit(:escape, :space,          text, ts-1, te)
      when '\t'; self.emit(:escape, :tab,            text, ts-1, te)
      when '\v'; self.emit(:escape, :vertical_tab,   text, ts-1, te)
      end
      	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

     end
		end
# line 308 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 26 then
# line 324 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      text = data[ts-1..te-1].pack('c*')
      if text[2].chr == '{'
        self.emit(:escape, :codepoint_list, text, ts-1, te)
      else
        self.emit(:escape, :codepoint,      text, ts-1, te)
      end
      	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

     end
		end
# line 324 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 84 then
# line 334 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      self.emit(:escape, :hex, data[ts-1..te-1].pack('c*'), ts-1, te)
      	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

     end
		end
# line 334 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 27 then
# line 339 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      self.emit(:escape, :hex_wide, data[ts-1..te-1].pack('c*'), ts-1, te)
      	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

     end
		end
# line 339 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 24 then
# line 344 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      self.emit(:escape, :control, data[ts-1..te-1].pack('c*'), ts-1, te)
      	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

     end
		end
# line 344 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 25 then
# line 349 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      self.emit(:escape, :meta_sequence, data[ts-1..te-1].pack('c*'), ts-1, te)
     end
		end
# line 349 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 78 then
# line 353 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      p = p - 1;
      cs = 142;
      	begin
		stack[top] = cs
		top+= 1
		cs = 161
		_goto_level = _again
		next
	end
 	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

     end
		end
# line 353 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 73 then
# line 359 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      self.emit(:escape, :literal, data[ts-1..te-1].pack('c*'), ts-1, te)
      	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

     end
		end
# line 359 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 81 then
# line 282 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p
p = p - 1; begin 
      self.emit(:escape, :octal, data[ts-1..te-1].pack('c*'), ts-1, te)
      	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

     end
		end
# line 282 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 83 then
# line 334 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p
p = p - 1; begin 
      self.emit(:escape, :hex, data[ts-1..te-1].pack('c*'), ts-1, te)
      	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

     end
		end
# line 334 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 80 then
# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
	case act
	when 21 then
	begin begin p = ((te))-1; end

      text = data[ts-1..te-1].pack('c*')
      self.emit(:backref, :number, text, ts-1, te)
      	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

    end
	when 22 then
	begin begin p = ((te))-1; end

      self.emit(:escape, :octal, data[ts-1..te-1].pack('c*'), ts-1, te)
      	begin
		top -= 1
		cs = stack[top]
		_goto_level = _again
		next
	end

    end
end 
			end
# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 33 then
# line 372 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      self.emit(:meta, :dot, data[ts..te-1].pack('c*'), ts, te)
     end
		end
# line 372 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 36 then
# line 376 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      self.emit(:meta, :alternation, data[ts..te-1].pack('c*'), ts, te)
     end
		end
# line 376 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 35 then
# line 382 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      self.emit(:anchor, :beginning_of_line, data[ts..te-1].pack('c*'), ts, te)
     end
		end
# line 382 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 30 then
# line 386 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      self.emit(:anchor, :end_of_line, data[ts..te-1].pack('c*'), ts, te)
     end
		end
# line 386 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 49 then
# line 390 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      case text = data[ts..te-1].pack('c*')
      when '\\A'; self.emit(:anchor, :bos,                text, ts, te)
      when '\\z'; self.emit(:anchor, :eos,                text, ts, te)
      when '\\Z'; self.emit(:anchor, :eos_ob_eol,         text, ts, te)
      when '\\b'; self.emit(:anchor, :word_boundary,      text, ts, te)
      when '\\B'; self.emit(:anchor, :nonword_boundary,   text, ts, te)
      when '\\G'; self.emit(:anchor, :match_start,        text, ts, te)
      else raise ScannerError.new("Unsupported anchor at #{text} (char #{ts})")
      end
     end
		end
# line 390 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 50 then
# line 408 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      case text = data[ts..te-1].pack('c*')
      when '\\d'; self.emit(:type, :digit,      text, ts, te)
      when '\\D'; self.emit(:type, :nondigit,   text, ts, te)
      when '\\h'; self.emit(:type, :hex,        text, ts, te)
      when '\\H'; self.emit(:type, :nonhex,     text, ts, te)
      when '\\s'; self.emit(:type, :space,      text, ts, te)
      when '\\S'; self.emit(:type, :nonspace,   text, ts, te)
      when '\\w'; self.emit(:type, :word,       text, ts, te)
      when '\\W'; self.emit(:type, :nonword,    text, ts, te)
      end
     end
		end
# line 408 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 34 then
# line 424 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      set_depth += 1; in_set = true
      set_type  = set_depth > 1 ? :subset : :set

      self.emit(set_type, :open, data[ts..te-1].pack('c*'), ts, te)
      	begin
		stack[top] = cs
		top+= 1
		cs = 162
		_goto_level = _again
		next
	end

     end
		end
# line 424 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 41 then
# line 449 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      # special handling to resolve ambiguity with passive groups
      if data[te]
        c = data[te].chr
        if c == ':' # include the ':'
          self.emit(:group, :options, data[ts..te].pack('c*'), ts, te+1)
          p += 1
        elsif c == ')' # just options by themselves
          self.emit(:group, :options, data[ts..te-1].pack('c*'), ts, te)
        else
          raise ScannerError.new(
            "Unexpected '#{c}' in options sequence, ':' or ')' expected")
        end
      else
        raise PrematureEndError.new("options") unless data[te]
      end
     end
		end
# line 449 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 7 then
# line 473 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      case text =  data[ts..te-1].pack('c*')
      when '(?=';  self.emit(:assertion, :lookahead,    text, ts, te)
      when '(?!';  self.emit(:assertion, :nlookahead,   text, ts, te)
      when '(?<='; self.emit(:assertion, :lookbehind,   text, ts, te)
      when '(?<!'; self.emit(:assertion, :nlookbehind,  text, ts, te)
      end
     end
		end
# line 473 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 6 then
# line 489 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      case text =  data[ts..te-1].pack('c*')
      when '(?:';  self.emit(:group, :passive,      text, ts, te)
      when '(?>';  self.emit(:group, :atomic,       text, ts, te)

      when /\(\?<\w+>/
        self.emit(:group, :named_ab,  text, ts, te)
      when /\(\?'\w+'/
        self.emit(:group, :named_sq,  text, ts, te)
      end
     end
		end
# line 489 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 9 then
# line 513 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      case text = data[ts..te-1].pack('c*')
      when /\\([gk])<[^\d-](\w+)?>/ # angle-brackets
        if $1 == 'k'
          self.emit(:backref, :name_ref_ab,  text, ts, te)
        else
          self.emit(:backref, :name_call_ab,  text, ts, te)
        end

      when /\\([gk])'[^\d-](\w+)?'/ #single quotes
        if $1 == 'k'
          self.emit(:backref, :name_ref_sq,  text, ts, te)
        else
          self.emit(:backref, :name_call_sq,  text, ts, te)
        end

      when /\\([gk])<\d+>/ # angle-brackets
        if $1 == 'k'
          self.emit(:backref, :number_ref_ab,  text, ts, te)
        else
          self.emit(:backref, :number_call_ab,  text, ts, te)
        end

      when /\\([gk])'\d+'/ # single quotes
        if $1 == 'k'
          self.emit(:backref, :number_ref_sq,  text, ts, te)
        else
          self.emit(:backref, :number_call_sq,  text, ts, te)
        end

      when /\\([gk])<-\d+>/ # angle-brackets
        if $1 == 'k'
          self.emit(:backref, :number_rel_ref_ab,  text, ts, te)
        else
          self.emit(:backref, :number_rel_call_ab,  text, ts, te)
        end

      when /\\([gk])'-\d+'/ # single quotes
        if $1 == 'k'
          self.emit(:backref, :number_rel_ref_sq,  text, ts, te)
        else
          self.emit(:backref, :number_rel_call_sq,  text, ts, te)
        end

      when /\\k<[^\d-](\w+)?[+\-]\d+>/ # angle-brackets
        self.emit(:backref, :name_nest_ref_ab,  text, ts, te)

      when /\\k'[^\d-](\w+)?[+\-]\d+'/ # single-quotes
        self.emit(:backref, :name_nest_ref_sq,  text, ts, te)

      when /\\([gk])<\d+[+\-]\d+>/ # angle-brackets
        self.emit(:backref, :number_nest_ref_ab,  text, ts, te)

      when /\\([gk])'\d+[+\-]\d+'/ # single-quotes
        self.emit(:backref, :number_nest_ref_sq,  text, ts, te)

      end
     end
		end
# line 513 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 47 then
# line 575 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      case text =  data[ts..te-1].pack('c*')
      when '?' ;  self.emit(:quantifier, :zero_or_one,            text, ts, te)
      when '??';  self.emit(:quantifier, :zero_or_one_reluctant,  text, ts, te)
      when '?+';  self.emit(:quantifier, :zero_or_one_possessive, text, ts, te)
      end
     end
		end
# line 575 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 43 then
# line 583 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      case text =  data[ts..te-1].pack('c*')
      when '*' ;  self.emit(:quantifier, :zero_or_more,            text, ts, te)
      when '*?';  self.emit(:quantifier, :zero_or_more_reluctant,  text, ts, te)
      when '*+';  self.emit(:quantifier, :zero_or_more_possessive, text, ts, te)
      end
     end
		end
# line 583 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 45 then
# line 591 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      case text =  data[ts..te-1].pack('c*')
      when '+' ;  self.emit(:quantifier, :one_or_more,            text, ts, te)
      when '+?';  self.emit(:quantifier, :one_or_more_reluctant,  text, ts, te)
      when '++';  self.emit(:quantifier, :one_or_more_possessive, text, ts, te)
      end
     end
		end
# line 591 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 52 then
# line 599 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      self.emit(:quantifier, :interval, data[ts..te-1].pack('c*'), ts, te)
     end
		end
# line 599 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 40 then
# line 449 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p
p = p - 1; begin 
      # special handling to resolve ambiguity with passive groups
      if data[te]
        c = data[te].chr
        if c == ':' # include the ':'
          self.emit(:group, :options, data[ts..te].pack('c*'), ts, te+1)
          p += 1
        elsif c == ')' # just options by themselves
          self.emit(:group, :options, data[ts..te-1].pack('c*'), ts, te)
        else
          raise ScannerError.new(
            "Unexpected '#{c}' in options sequence, ':' or ')' expected")
        end
      else
        raise PrematureEndError.new("options") unless data[te]
      end
     end
		end
# line 449 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 38 then
# line 501 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p
p = p - 1; begin 
      text =  data[ts..te-1].pack('c*')
      self.emit(:group, :capture, text, ts, te)
     end
		end
# line 501 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 46 then
# line 575 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p
p = p - 1; begin 
      case text =  data[ts..te-1].pack('c*')
      when '?' ;  self.emit(:quantifier, :zero_or_one,            text, ts, te)
      when '??';  self.emit(:quantifier, :zero_or_one_reluctant,  text, ts, te)
      when '?+';  self.emit(:quantifier, :zero_or_one_possessive, text, ts, te)
      end
     end
		end
# line 575 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 42 then
# line 583 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p
p = p - 1; begin 
      case text =  data[ts..te-1].pack('c*')
      when '*' ;  self.emit(:quantifier, :zero_or_more,            text, ts, te)
      when '*?';  self.emit(:quantifier, :zero_or_more_reluctant,  text, ts, te)
      when '*+';  self.emit(:quantifier, :zero_or_more_possessive, text, ts, te)
      end
     end
		end
# line 583 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 44 then
# line 591 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p
p = p - 1; begin 
      case text =  data[ts..te-1].pack('c*')
      when '+' ;  self.emit(:quantifier, :one_or_more,            text, ts, te)
      when '+?';  self.emit(:quantifier, :one_or_more_reluctant,  text, ts, te)
      when '++';  self.emit(:quantifier, :one_or_more_possessive, text, ts, te)
      end
     end
		end
# line 591 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 51 then
# line 599 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p
p = p - 1; begin 
      self.emit(:quantifier, :interval, data[ts..te-1].pack('c*'), ts, te)
     end
		end
# line 599 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 48 then
# line 605 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p
p = p - 1; begin 
      	begin
		stack[top] = cs
		top+= 1
		cs = 184
		_goto_level = _again
		next
	end

     end
		end
# line 605 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 37 then
# line 616 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p
p = p - 1; begin 
      self.append_literal(data, ts, te)
     end
		end
# line 616 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 3 then
# line 449 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
 begin p = ((te))-1; end
 begin 
      # special handling to resolve ambiguity with passive groups
      if data[te]
        c = data[te].chr
        if c == ':' # include the ':'
          self.emit(:group, :options, data[ts..te].pack('c*'), ts, te+1)
          p += 1
        elsif c == ')' # just options by themselves
          self.emit(:group, :options, data[ts..te-1].pack('c*'), ts, te)
        else
          raise ScannerError.new(
            "Unexpected '#{c}' in options sequence, ':' or ')' expected")
        end
      else
        raise PrematureEndError.new("options") unless data[te]
      end
     end
		end
# line 449 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 8 then
# line 605 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
 begin p = ((te))-1; end
 begin 
      	begin
		stack[top] = cs
		top+= 1
		cs = 184
		_goto_level = _again
		next
	end

     end
		end
# line 605 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 1 then
# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
	case act
	when 0 then
	begin	begin
		cs = 0
		_goto_level = _again
		next
	end
end
	when 51 then
	begin begin p = ((te))-1; end

      self.append_literal(data, ts, te)
    end
end 
			end
# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 62 then
# line 116 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
 raise PrematureEndError 		end
# line 116 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
# line 174 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p
p = p - 1; begin 
      set_depth += 1; in_set = true
      set_type  = set_depth > 1 ? :subset : :set

      self.emit(set_type, :open, data[ts..te-1].pack('c*'), ts, te)
      	begin
		stack[top] = cs
		top+= 1
		cs = 162
		_goto_level = _again
		next
	end

     end
		end
# line 174 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 16 then
# line 116 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
 raise PrematureEndError 		end
# line 116 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
# line 174 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
 begin p = ((te))-1; end
 begin 
      set_depth += 1; in_set = true
      set_type  = set_depth > 1 ? :subset : :set

      self.emit(set_type, :open, data[ts..te-1].pack('c*'), ts, te)
      	begin
		stack[top] = cs
		top+= 1
		cs = 162
		_goto_level = _again
		next
	end

     end
		end
# line 174 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 5 then
# line 120 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
 group_depth -= 1; in_group = group_depth > 0 ? true : false 		end
# line 120 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
# line 437 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      self.emit(:group, :comment, data[ts..te-1].pack('c*'), ts, te)
     end
		end
# line 437 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 32 then
# line 120 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
 group_depth -= 1; in_group = group_depth > 0 ? true : false 		end
# line 120 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
# line 506 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
 begin 
      self.emit(:group, :close, data[ts..te-1].pack('c*'), ts, te)
     end
		end
# line 506 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 68 then
# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
		end
# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
# line 220 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
act = 14;		end
# line 220 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 66 then
# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
		end
# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
# line 225 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
act = 15;		end
# line 225 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 65 then
# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
		end
# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
# line 249 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
act = 18;		end
# line 249 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 22 then
# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
		end
# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
# line 266 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
act = 20;		end
# line 266 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 76 then
# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
		end
# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
# line 276 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
act = 21;		end
# line 276 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 75 then
# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
		end
# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
# line 282 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
act = 22;		end
# line 282 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 2 then
# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
		end
# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
# line 616 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
act = 51;		end
# line 616 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 39 then
# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
te = p+1
		end
# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
# line 120 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
 group_depth -= 1; in_group = group_depth > 0 ? true : false 		end
# line 120 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
# line 119 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
 group_depth += 1; in_group = true 		end
# line 119 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
# line 3215 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner.rb"
	end
	end
	end
	if _goto_level <= _again
	case _re_scanner_to_state_actions[cs] 
	when 53 then
# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
ts = nil;		end
# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 28 then
# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
ts = nil;		end
# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
act = 0
		end
# line 1 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
# line 3236 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner.rb"
	end

	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
	if _re_scanner_eof_trans[cs] > 0
		_trans = _re_scanner_eof_trans[cs] - 1;
		_goto_level = _eof_trans
		next;
	end
	  case _re_scanner_eof_actions[cs]
	when 11 then
# line 52 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin

    raise PrematureEndError.new('unicode property')
  		end
# line 52 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
	when 10 then
# line 116 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
		begin
 raise PrematureEndError 		end
# line 116 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
# line 3269 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner.rb"
	  end
	end

	end
	if _goto_level <= _out
		break
	end
end
	end

# line 667 "/ama/src/ruby/regexp_parser/lib/regexp_parser/scanner/scanner.rl"

    raise PrematureEndError.new("(missing group closing paranthesis) "+
          "[#{in_group}:#{group_depth}]") if in_group
    raise PrematureEndError.new("(missing set closing bracket) "+
          "[#{in_set}:#{set_depth}]") if in_set

    # when the entire expression is a literal run
    self.emit_literal if @literal

    @tokens
  end

  # appends one or more characters to the literal buffer, to be emitted later
  # by a call to emit_literal. contents a mix of ASCII and UTF-8
  def self.append_literal(data, ts, te)
    @literal ||= []
    @literal << [data[ts..te-1].pack('c*'), ts, te]
  end

  # emits the collected literal run collected by one or more calls to the 
  # append_literal method
  def self.emit_literal
    ts, te = @literal.first[1], @literal.last[2]
    text = @literal.map {|t| t[0]}.join

    text.force_encoding('utf-8') if text.respond_to?(:force_encoding)

    self.emit(:literal, :literal, text, ts, te)
    @literal = nil
  end

  def self.emit(type, token, text, ts, te)
    #puts " > emit: #{type}:#{token} '#{text}' [#{ts}..#{te}]"

    if @literal and type != :literal
      self.emit_literal
    end

    if @block
      @block.call type, token, text, ts, te
    end

    @tokens << [type, token, text, ts, te]
  end

end # module Regexp::Scanner