regexp_parser 1.7.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +80 -1
  3. data/README.md +24 -12
  4. data/lib/regexp_parser/expression.rb +10 -19
  5. data/lib/regexp_parser/expression/classes/group.rb +17 -2
  6. data/lib/regexp_parser/expression/classes/root.rb +4 -16
  7. data/lib/regexp_parser/expression/quantifier.rb +9 -0
  8. data/lib/regexp_parser/expression/sequence.rb +0 -10
  9. data/lib/regexp_parser/lexer.rb +6 -6
  10. data/lib/regexp_parser/parser.rb +45 -12
  11. data/lib/regexp_parser/scanner.rb +1305 -1193
  12. data/lib/regexp_parser/scanner/char_type.rl +11 -11
  13. data/lib/regexp_parser/scanner/property.rl +2 -2
  14. data/lib/regexp_parser/scanner/scanner.rl +194 -171
  15. data/lib/regexp_parser/syntax/version_lookup.rb +2 -2
  16. data/lib/regexp_parser/version.rb +1 -1
  17. data/regexp_parser.gemspec +1 -1
  18. data/spec/expression/base_spec.rb +10 -0
  19. data/spec/expression/to_s_spec.rb +16 -0
  20. data/spec/lexer/delimiters_spec.rb +68 -0
  21. data/spec/lexer/literals_spec.rb +24 -49
  22. data/spec/parser/escapes_spec.rb +1 -1
  23. data/spec/parser/options_spec.rb +28 -0
  24. data/spec/parser/quantifiers_spec.rb +16 -0
  25. data/spec/parser/set/ranges_spec.rb +3 -3
  26. data/spec/scanner/delimiters_spec.rb +52 -0
  27. data/spec/scanner/errors_spec.rb +0 -1
  28. data/spec/scanner/escapes_spec.rb +10 -0
  29. data/spec/scanner/free_space_spec.rb +32 -0
  30. data/spec/scanner/literals_spec.rb +28 -38
  31. data/spec/scanner/options_spec.rb +36 -0
  32. data/spec/scanner/quantifiers_spec.rb +18 -13
  33. data/spec/scanner/sets_spec.rb +8 -2
  34. metadata +65 -61
  35. data/spec/expression/root_spec.rb +0 -9
  36. data/spec/expression/sequence_spec.rb +0 -9
@@ -2,7 +2,7 @@
2
2
 
3
3
  # line 1 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
4
4
 
5
- # line 661 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
5
+ # line 680 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
6
6
 
7
7
 
8
8
  # THIS IS A GENERATED FILE, DO NOT EDIT DIRECTLY
@@ -67,21 +67,16 @@ class Regexp::Scanner
67
67
  #
68
68
  # This method may raise errors if a syntax error is encountered.
69
69
  # --------------------------------------------------------------------------
70
- def self.scan(input_object, &block)
71
- new.scan(input_object, &block)
70
+ def self.scan(input_object, options: nil, &block)
71
+ new.scan(input_object, options: options, &block)
72
72
  end
73
73
 
74
- def scan(input_object, &block)
74
+ def scan(input_object, options: nil, &block)
75
75
  self.literal = nil
76
76
  stack = []
77
77
 
78
- if input_object.is_a?(Regexp)
79
- input = input_object.source
80
- self.free_spacing = (input_object.options & Regexp::EXTENDED != 0)
81
- else
82
- input = input_object
83
- self.free_spacing = false
84
- end
78
+ input = input_object.is_a?(Regexp) ? input_object.source : input_object
79
+ self.free_spacing = free_spacing?(input_object, options)
85
80
  self.spacing_stack = [{:free_spacing => free_spacing, :depth => 0}]
86
81
 
87
82
  data = input.unpack("c*") if input.is_a?(String)
@@ -93,9 +88,10 @@ class Regexp::Scanner
93
88
  self.set_depth = 0
94
89
  self.group_depth = 0
95
90
  self.conditional_stack = []
91
+ self.char_pos = 0
96
92
 
97
93
 
98
- # line 98 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
94
+ # line 94 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
99
95
  class << self
100
96
  attr_accessor :_re_scanner_trans_keys
101
97
  private :_re_scanner_trans_keys, :_re_scanner_trans_keys=
@@ -103,14 +99,14 @@ end
103
99
  self._re_scanner_trans_keys = [
104
100
  0, 0, -128, -65, -128, -65,
105
101
  -128, -65, -128, -65, -128,
106
- -65, -128, -65, 10, 10,
107
- 41, 41, 39, 122, 33, 122,
108
- 48, 122, 39, 60, 39,
109
- 122, 48, 57, 39, 57,
110
- 48, 57, 39, 57, 39, 122,
111
- 43, 122, 48, 57, 48,
112
- 62, 48, 57, 43, 62,
113
- 43, 122, 44, 125, 48, 125,
102
+ -65, -128, -65, 41, 41,
103
+ 39, 122, 33, 122, 48, 122,
104
+ 39, 60, 39, 122, 48,
105
+ 57, 39, 57, 48, 57,
106
+ 39, 57, 39, 122, 43, 122,
107
+ 48, 57, 48, 62, 48,
108
+ 57, 43, 62, 43, 122,
109
+ 48, 57, 48, 125, 44, 125,
114
110
  123, 123, 9, 122, 9,
115
111
  125, 9, 122, -128, -65,
116
112
  -128, -65, 38, 38, 45, 122,
@@ -134,31 +130,33 @@ self._re_scanner_trans_keys = [
134
130
  112, 112, 111, 111, 114, 114,
135
131
  100, 100, 100, 100, 65,
136
132
  122, 61, 61, 93, 93,
137
- 45, 45, 92, 92, 92, 92,
138
- 45, 45, 92, 92, 92,
139
- 92, 48, 123, 48, 102,
140
- 48, 102, 48, 102, 48, 102,
141
- 9, 125, 9, 125, 9,
133
+ -128, -65, -128, -65, 45, 45,
134
+ 92, 92, 92, 92, 45,
135
+ 45, 92, 92, 92, 92,
136
+ 48, 123, 48, 102, 48, 102,
137
+ 48, 102, 48, 102, 9,
142
138
  125, 9, 125, 9, 125,
143
- 9, 125, 48, 123, 41, 41,
144
- 39, 122, 41, 57, 48,
145
- 122, -62, 127, -62, -33,
146
- -32, -17, -16, -12, 1, 127,
147
- 1, 127, 9, 32, 33,
148
- 126, 10, 126, 63, 63,
149
- 33, 126, 33, 126, 43, 63,
150
- 43, 63, 43, 63, 65,
151
- 122, 43, 63, 68, 119,
152
- 80, 112, -62, 125, -128, -65,
153
- -128, -65, -128, -65, 38,
154
- 38, 38, 93, 46, 61,
155
- 48, 122, 36, 125, 48, 55,
156
- 48, 55, 77, 77, 45,
157
- 45, 0, 0, 67, 99,
158
- 45, 45, 0, 0, 92, 92,
159
- 48, 102, 39, 60, 39,
160
- 122, 49, 57, 41, 57,
161
- 48, 122, 0
139
+ 9, 125, 9, 125, 9, 125,
140
+ 48, 123, 41, 41, 39,
141
+ 122, 41, 57, 48, 122,
142
+ -128, 127, -62, -33, -32, -17,
143
+ -16, -12, 1, 127, 1,
144
+ 127, 9, 32, 33, 126,
145
+ 10, 10, 63, 63, 33, 126,
146
+ 33, 126, 43, 63, 43,
147
+ 63, 43, 63, 65, 122,
148
+ 44, 57, 43, 63, 68, 119,
149
+ 80, 112, -62, 125, -128,
150
+ -65, -128, -65, -128, -65,
151
+ 38, 38, 38, 93, 46, 61,
152
+ 48, 122, -62, 125, -128,
153
+ -65, -128, -65, -128, -65,
154
+ 48, 55, 48, 55, 77, 77,
155
+ 45, 45, 0, 0, 67,
156
+ 99, 45, 45, 0, 0,
157
+ 92, 92, 48, 102, 39, 60,
158
+ 39, 122, 49, 57, 41,
159
+ 57, 48, 122, 0
162
160
  ]
163
161
 
164
162
  class << self
@@ -167,9 +165,9 @@ class << self
167
165
  end
168
166
  self._re_scanner_key_spans = [
169
167
  0, 64, 64, 64, 64, 64, 64, 1,
170
- 1, 84, 90, 75, 22, 84, 10, 19,
171
- 10, 19, 84, 80, 10, 15, 10, 20,
172
- 80, 82, 78, 1, 114, 117, 114, 64,
168
+ 84, 90, 75, 22, 84, 10, 19, 10,
169
+ 19, 84, 80, 10, 15, 10, 20, 80,
170
+ 10, 78, 82, 1, 114, 117, 114, 64,
173
171
  64, 1, 78, 78, 1, 27, 24, 8,
174
172
  3, 1, 1, 1, 1, 1, 1, 1,
175
173
  1, 1, 1, 1, 1, 1, 1, 1,
@@ -177,15 +175,15 @@ self._re_scanner_key_spans = [
177
175
  1, 1, 1, 1, 1, 1, 4, 1,
178
176
  1, 1, 1, 1, 1, 1, 1, 1,
179
177
  1, 1, 1, 1, 1, 58, 1, 1,
180
- 1, 1, 1, 1, 1, 1, 76, 55,
181
- 55, 55, 55, 117, 117, 117, 117, 117,
182
- 117, 76, 1, 84, 17, 75, 190, 30,
183
- 16, 5, 127, 127, 24, 94, 117, 1,
184
- 94, 94, 21, 21, 21, 58, 21, 52,
185
- 33, 188, 64, 64, 64, 1, 56, 16,
186
- 75, 90, 8, 8, 1, 1, 0, 33,
187
- 1, 0, 1, 55, 22, 84, 9, 17,
188
- 75
178
+ 64, 64, 1, 1, 1, 1, 1, 1,
179
+ 76, 55, 55, 55, 55, 117, 117, 117,
180
+ 117, 117, 117, 76, 1, 84, 17, 75,
181
+ 256, 30, 16, 5, 127, 127, 24, 94,
182
+ 1, 1, 94, 94, 21, 21, 21, 58,
183
+ 14, 21, 52, 33, 188, 64, 64, 64,
184
+ 1, 56, 16, 75, 188, 64, 64, 64,
185
+ 8, 8, 1, 1, 0, 33, 1, 0,
186
+ 1, 55, 22, 84, 9, 17, 75
189
187
  ]
190
188
 
191
189
  class << self
@@ -194,25 +192,25 @@ class << self
194
192
  end
195
193
  self._re_scanner_index_offsets = [
196
194
  0, 0, 65, 130, 195, 260, 325, 390,
197
- 392, 394, 479, 570, 646, 669, 754, 765,
198
- 785, 796, 816, 901, 982, 993, 1009, 1020,
199
- 1041, 1122, 1205, 1284, 1286, 1401, 1519, 1634,
200
- 1699, 1764, 1766, 1845, 1924, 1926, 1954, 1979,
201
- 1988, 1992, 1994, 1996, 1998, 2000, 2002, 2004,
202
- 2006, 2008, 2010, 2012, 2014, 2016, 2018, 2020,
203
- 2022, 2024, 2026, 2028, 2030, 2032, 2034, 2036,
204
- 2038, 2040, 2042, 2044, 2046, 2048, 2050, 2055,
205
- 2057, 2059, 2061, 2063, 2065, 2067, 2069, 2071,
206
- 2073, 2075, 2077, 2079, 2081, 2083, 2142, 2144,
207
- 2146, 2148, 2150, 2152, 2154, 2156, 2158, 2235,
208
- 2291, 2347, 2403, 2459, 2577, 2695, 2813, 2931,
209
- 3049, 3167, 3244, 3246, 3331, 3349, 3425, 3616,
210
- 3647, 3664, 3670, 3798, 3926, 3951, 4046, 4164,
211
- 4166, 4261, 4356, 4378, 4400, 4422, 4481, 4503,
212
- 4556, 4590, 4779, 4844, 4909, 4974, 4976, 5033,
213
- 5050, 5126, 5217, 5226, 5235, 5237, 5239, 5240,
214
- 5274, 5276, 5277, 5279, 5335, 5358, 5443, 5453,
215
- 5471
195
+ 392, 477, 568, 644, 667, 752, 763, 783,
196
+ 794, 814, 899, 980, 991, 1007, 1018, 1039,
197
+ 1120, 1131, 1210, 1293, 1295, 1410, 1528, 1643,
198
+ 1708, 1773, 1775, 1854, 1933, 1935, 1963, 1988,
199
+ 1997, 2001, 2003, 2005, 2007, 2009, 2011, 2013,
200
+ 2015, 2017, 2019, 2021, 2023, 2025, 2027, 2029,
201
+ 2031, 2033, 2035, 2037, 2039, 2041, 2043, 2045,
202
+ 2047, 2049, 2051, 2053, 2055, 2057, 2059, 2064,
203
+ 2066, 2068, 2070, 2072, 2074, 2076, 2078, 2080,
204
+ 2082, 2084, 2086, 2088, 2090, 2092, 2151, 2153,
205
+ 2155, 2220, 2285, 2287, 2289, 2291, 2293, 2295,
206
+ 2297, 2374, 2430, 2486, 2542, 2598, 2716, 2834,
207
+ 2952, 3070, 3188, 3306, 3383, 3385, 3470, 3488,
208
+ 3564, 3821, 3852, 3869, 3875, 4003, 4131, 4156,
209
+ 4251, 4253, 4255, 4350, 4445, 4467, 4489, 4511,
210
+ 4570, 4585, 4607, 4660, 4694, 4883, 4948, 5013,
211
+ 5078, 5080, 5137, 5154, 5230, 5419, 5484, 5549,
212
+ 5614, 5623, 5632, 5634, 5636, 5637, 5671, 5673,
213
+ 5674, 5676, 5732, 5755, 5840, 5850, 5868
216
214
  ]
217
215
 
218
216
  class << self
@@ -269,651 +267,701 @@ self._re_scanner_indicies = [
269
267
  6, 6, 6, 6, 6, 6, 6, 6,
270
268
  6, 6, 6, 6, 6, 6, 6, 6,
271
269
  6, 6, 6, 6, 6, 0, 9, 8,
272
- 12, 11, 13, 10, 10, 10, 10, 10,
273
- 10, 10, 10, 14, 14, 14, 14, 14,
274
- 14, 14, 14, 14, 14, 10, 10, 10,
275
- 10, 10, 10, 10, 14, 14, 14, 14,
276
- 14, 14, 14, 14, 14, 14, 14, 14,
270
+ 10, 7, 7, 7, 7, 7, 7, 7,
271
+ 7, 11, 11, 11, 11, 11, 11, 11,
272
+ 11, 11, 11, 7, 7, 7, 7, 7,
273
+ 7, 7, 11, 11, 11, 11, 11, 11,
274
+ 11, 11, 11, 11, 11, 11, 11, 11,
275
+ 11, 11, 11, 11, 11, 11, 11, 11,
276
+ 11, 11, 11, 11, 7, 7, 7, 7,
277
+ 11, 7, 11, 11, 11, 11, 11, 11,
278
+ 11, 11, 11, 11, 11, 11, 11, 11,
279
+ 11, 11, 11, 11, 11, 11, 11, 11,
280
+ 11, 11, 11, 11, 7, 12, 7, 7,
281
+ 7, 7, 7, 7, 7, 7, 7, 7,
282
+ 7, 7, 7, 7, 13, 13, 13, 13,
283
+ 13, 13, 13, 13, 13, 13, 7, 7,
284
+ 7, 12, 10, 7, 7, 13, 13, 13,
285
+ 13, 13, 13, 13, 13, 13, 13, 13,
286
+ 13, 13, 13, 13, 13, 13, 13, 13,
287
+ 13, 13, 13, 13, 13, 13, 13, 7,
288
+ 7, 7, 7, 13, 7, 13, 13, 13,
289
+ 13, 13, 13, 13, 13, 13, 13, 13,
290
+ 13, 13, 13, 13, 13, 13, 13, 13,
291
+ 13, 13, 13, 13, 13, 13, 13, 7,
292
+ 13, 13, 13, 13, 13, 13, 13, 13,
293
+ 13, 13, 7, 7, 7, 7, 10, 7,
294
+ 7, 13, 13, 13, 13, 13, 13, 13,
295
+ 13, 13, 13, 13, 13, 13, 13, 13,
296
+ 13, 13, 13, 13, 13, 13, 13, 13,
297
+ 13, 13, 13, 7, 7, 7, 7, 13,
298
+ 7, 13, 13, 13, 13, 13, 13, 13,
299
+ 13, 13, 13, 13, 13, 13, 13, 13,
300
+ 13, 13, 13, 13, 13, 13, 13, 13,
301
+ 13, 13, 13, 7, 15, 14, 14, 14,
277
302
  14, 14, 14, 14, 14, 14, 14, 14,
278
- 14, 14, 14, 14, 14, 14, 10, 10,
279
- 10, 10, 14, 10, 14, 14, 14, 14,
280
303
  14, 14, 14, 14, 14, 14, 14, 14,
281
- 14, 14, 14, 14, 14, 14, 14, 14,
282
- 14, 14, 14, 14, 14, 14, 10, 15,
283
- 10, 10, 10, 10, 10, 10, 10, 10,
284
- 10, 10, 10, 10, 10, 10, 16, 16,
285
- 16, 16, 16, 16, 16, 16, 16, 16,
286
- 10, 10, 10, 15, 13, 10, 10, 16,
287
- 16, 16, 16, 16, 16, 16, 16, 16,
288
- 16, 16, 16, 16, 16, 16, 16, 16,
289
- 16, 16, 16, 16, 16, 16, 16, 16,
290
- 16, 10, 10, 10, 10, 16, 10, 16,
291
- 16, 16, 16, 16, 16, 16, 16, 16,
292
- 16, 16, 16, 16, 16, 16, 16, 16,
293
- 16, 16, 16, 16, 16, 16, 16, 16,
294
- 16, 10, 16, 16, 16, 16, 16, 16,
295
- 16, 16, 16, 16, 10, 10, 10, 10,
296
- 13, 10, 10, 16, 16, 16, 16, 16,
297
- 16, 16, 16, 16, 16, 16, 16, 16,
298
- 16, 16, 16, 16, 16, 16, 16, 16,
299
- 16, 16, 16, 16, 16, 10, 10, 10,
300
- 10, 16, 10, 16, 16, 16, 16, 16,
301
- 16, 16, 16, 16, 16, 16, 16, 16,
302
- 16, 16, 16, 16, 16, 16, 16, 16,
303
- 16, 16, 16, 16, 16, 10, 18, 17,
304
- 17, 17, 17, 17, 17, 17, 17, 17,
305
- 17, 17, 17, 17, 17, 17, 17, 17,
306
- 17, 17, 17, 19, 17, 20, 17, 17,
307
- 17, 21, 17, 22, 17, 17, 23, 23,
308
- 23, 23, 23, 23, 23, 23, 23, 23,
309
- 17, 17, 17, 17, 17, 17, 17, 23,
310
- 23, 23, 23, 23, 23, 23, 23, 23,
311
- 23, 23, 23, 23, 23, 23, 23, 23,
312
- 23, 23, 23, 23, 23, 23, 23, 23,
313
- 23, 17, 17, 17, 17, 23, 17, 23,
314
- 23, 23, 23, 23, 23, 23, 23, 23,
315
- 23, 23, 23, 23, 23, 23, 23, 23,
316
- 23, 23, 23, 23, 23, 23, 23, 23,
317
- 23, 17, 24, 24, 24, 24, 24, 24,
318
- 24, 24, 24, 24, 17, 20, 17, 17,
319
- 17, 17, 17, 17, 17, 17, 24, 24,
320
- 24, 24, 24, 24, 24, 24, 24, 24,
321
- 17, 24, 25, 25, 25, 25, 25, 25,
322
- 25, 25, 25, 17, 20, 17, 17, 17,
323
- 21, 17, 21, 17, 17, 25, 25, 25,
324
- 25, 25, 25, 25, 25, 25, 25, 17,
325
- 20, 17, 17, 17, 21, 17, 21, 17,
326
- 17, 23, 23, 23, 23, 23, 23, 23,
327
- 23, 23, 23, 17, 17, 17, 17, 17,
328
- 17, 17, 23, 23, 23, 23, 23, 23,
329
- 23, 23, 23, 23, 23, 23, 23, 23,
330
- 23, 23, 23, 23, 23, 23, 23, 23,
331
- 23, 23, 23, 23, 17, 17, 17, 17,
332
- 23, 17, 23, 23, 23, 23, 23, 23,
333
- 23, 23, 23, 23, 23, 23, 23, 23,
334
- 23, 23, 23, 23, 23, 23, 23, 23,
335
- 23, 23, 23, 23, 17, 26, 17, 27,
336
- 17, 17, 28, 28, 28, 28, 28, 28,
337
- 28, 28, 28, 28, 17, 17, 17, 17,
338
- 20, 17, 17, 28, 28, 28, 28, 28,
304
+ 14, 16, 14, 17, 14, 14, 14, 18,
305
+ 14, 19, 14, 14, 20, 20, 20, 20,
306
+ 20, 20, 20, 20, 20, 20, 14, 14,
307
+ 14, 14, 14, 14, 14, 20, 20, 20,
308
+ 20, 20, 20, 20, 20, 20, 20, 20,
309
+ 20, 20, 20, 20, 20, 20, 20, 20,
310
+ 20, 20, 20, 20, 20, 20, 20, 14,
311
+ 14, 14, 14, 20, 14, 20, 20, 20,
312
+ 20, 20, 20, 20, 20, 20, 20, 20,
313
+ 20, 20, 20, 20, 20, 20, 20, 20,
314
+ 20, 20, 20, 20, 20, 20, 20, 14,
315
+ 21, 21, 21, 21, 21, 21, 21, 21,
316
+ 21, 21, 14, 17, 14, 14, 14, 14,
317
+ 14, 14, 14, 14, 21, 21, 21, 21,
318
+ 21, 21, 21, 21, 21, 21, 14, 21,
319
+ 22, 22, 22, 22, 22, 22, 22, 22,
320
+ 22, 14, 17, 14, 14, 14, 18, 14,
321
+ 18, 14, 14, 22, 22, 22, 22, 22,
322
+ 22, 22, 22, 22, 22, 14, 17, 14,
323
+ 14, 14, 18, 14, 18, 14, 14, 20,
324
+ 20, 20, 20, 20, 20, 20, 20, 20,
325
+ 20, 14, 14, 14, 14, 14, 14, 14,
326
+ 20, 20, 20, 20, 20, 20, 20, 20,
327
+ 20, 20, 20, 20, 20, 20, 20, 20,
328
+ 20, 20, 20, 20, 20, 20, 20, 20,
329
+ 20, 20, 14, 14, 14, 14, 20, 14,
330
+ 20, 20, 20, 20, 20, 20, 20, 20,
331
+ 20, 20, 20, 20, 20, 20, 20, 20,
332
+ 20, 20, 20, 20, 20, 20, 20, 20,
333
+ 20, 20, 14, 23, 14, 24, 14, 14,
334
+ 25, 25, 25, 25, 25, 25, 25, 25,
335
+ 25, 25, 14, 14, 14, 14, 17, 14,
336
+ 14, 25, 25, 25, 25, 25, 25, 25,
337
+ 25, 25, 25, 25, 25, 25, 25, 25,
338
+ 25, 25, 25, 25, 25, 25, 25, 25,
339
+ 25, 25, 25, 14, 14, 14, 14, 25,
340
+ 14, 25, 25, 25, 25, 25, 25, 25,
341
+ 25, 25, 25, 25, 25, 25, 25, 25,
342
+ 25, 25, 25, 25, 25, 25, 25, 25,
343
+ 25, 25, 25, 14, 26, 26, 26, 26,
344
+ 26, 26, 26, 26, 26, 26, 14, 26,
345
+ 26, 26, 26, 26, 26, 26, 26, 26,
346
+ 26, 14, 14, 14, 14, 17, 14, 26,
347
+ 27, 27, 27, 27, 27, 27, 27, 27,
348
+ 27, 14, 23, 14, 23, 14, 14, 27,
349
+ 27, 27, 27, 27, 27, 27, 27, 27,
350
+ 27, 14, 14, 14, 14, 17, 14, 23,
351
+ 14, 23, 14, 14, 25, 25, 25, 25,
352
+ 25, 25, 25, 25, 25, 25, 14, 14,
353
+ 14, 14, 17, 14, 14, 25, 25, 25,
354
+ 25, 25, 25, 25, 25, 25, 25, 25,
355
+ 25, 25, 25, 25, 25, 25, 25, 25,
356
+ 25, 25, 25, 25, 25, 25, 25, 14,
357
+ 14, 14, 14, 25, 14, 25, 25, 25,
358
+ 25, 25, 25, 25, 25, 25, 25, 25,
359
+ 25, 25, 25, 25, 25, 25, 25, 25,
360
+ 25, 25, 25, 25, 25, 25, 25, 14,
361
+ 29, 29, 29, 29, 29, 29, 29, 29,
362
+ 29, 29, 28, 29, 29, 29, 29, 29,
363
+ 29, 29, 29, 29, 29, 28, 28, 28,
339
364
  28, 28, 28, 28, 28, 28, 28, 28,
340
365
  28, 28, 28, 28, 28, 28, 28, 28,
341
- 28, 28, 28, 28, 28, 17, 17, 17,
342
- 17, 28, 17, 28, 28, 28, 28, 28,
343
366
  28, 28, 28, 28, 28, 28, 28, 28,
344
367
  28, 28, 28, 28, 28, 28, 28, 28,
345
- 28, 28, 28, 28, 28, 17, 29, 29,
346
- 29, 29, 29, 29, 29, 29, 29, 29,
347
- 17, 29, 29, 29, 29, 29, 29, 29,
348
- 29, 29, 29, 17, 17, 17, 17, 20,
349
- 17, 29, 30, 30, 30, 30, 30, 30,
350
- 30, 30, 30, 17, 26, 17, 26, 17,
351
- 17, 30, 30, 30, 30, 30, 30, 30,
352
- 30, 30, 30, 17, 17, 17, 17, 20,
353
- 17, 26, 17, 26, 17, 17, 28, 28,
354
368
  28, 28, 28, 28, 28, 28, 28, 28,
355
- 17, 17, 17, 17, 20, 17, 17, 28,
356
369
  28, 28, 28, 28, 28, 28, 28, 28,
357
370
  28, 28, 28, 28, 28, 28, 28, 28,
358
371
  28, 28, 28, 28, 28, 28, 28, 28,
359
- 28, 17, 17, 17, 17, 28, 17, 28,
372
+ 30, 28, 29, 28, 28, 28, 31, 31,
373
+ 31, 31, 31, 31, 31, 31, 31, 31,
374
+ 28, 28, 28, 28, 28, 28, 28, 28,
375
+ 28, 28, 28, 28, 28, 28, 28, 28,
376
+ 28, 28, 28, 28, 28, 28, 28, 28,
360
377
  28, 28, 28, 28, 28, 28, 28, 28,
361
378
  28, 28, 28, 28, 28, 28, 28, 28,
362
379
  28, 28, 28, 28, 28, 28, 28, 28,
363
- 28, 17, 32, 31, 31, 31, 33, 33,
380
+ 28, 28, 28, 28, 28, 28, 28, 28,
381
+ 28, 28, 28, 28, 28, 28, 28, 28,
382
+ 28, 28, 28, 30, 28, 32, 33, 34,
383
+ 34, 34, 34, 34, 33, 33, 33, 33,
364
384
  33, 33, 33, 33, 33, 33, 33, 33,
365
- 31, 31, 31, 31, 31, 31, 31, 31,
366
- 31, 31, 31, 31, 31, 31, 31, 31,
367
- 31, 31, 31, 31, 31, 31, 31, 31,
368
- 31, 31, 31, 31, 31, 31, 31, 31,
369
- 31, 31, 31, 31, 31, 31, 31, 31,
370
- 31, 31, 31, 31, 31, 31, 31, 31,
371
- 31, 31, 31, 31, 31, 31, 31, 31,
372
- 31, 31, 31, 31, 31, 31, 31, 31,
373
- 31, 31, 31, 34, 31, 32, 32, 32,
374
- 32, 32, 32, 32, 32, 32, 32, 31,
375
- 31, 31, 31, 31, 31, 31, 31, 31,
376
- 31, 31, 31, 31, 31, 31, 31, 31,
377
- 31, 31, 31, 31, 31, 31, 31, 31,
378
- 31, 31, 31, 31, 31, 31, 31, 31,
379
- 31, 31, 31, 31, 31, 31, 31, 31,
380
- 31, 31, 31, 31, 31, 31, 31, 31,
381
- 31, 31, 31, 31, 31, 31, 31, 31,
382
- 31, 31, 31, 31, 31, 31, 31, 31,
383
- 31, 31, 34, 31, 35, 36, 37, 37,
384
- 37, 37, 37, 36, 36, 36, 36, 36,
385
- 36, 36, 36, 36, 36, 36, 36, 36,
386
- 36, 36, 36, 36, 36, 37, 36, 36,
387
- 36, 36, 36, 36, 36, 36, 36, 36,
388
- 36, 36, 37, 37, 36, 37, 37, 37,
389
- 37, 37, 37, 37, 37, 37, 37, 36,
390
- 36, 36, 37, 36, 36, 36, 37, 37,
391
- 37, 37, 37, 37, 37, 37, 37, 37,
392
- 37, 37, 37, 37, 37, 37, 37, 37,
393
- 37, 37, 37, 37, 37, 37, 37, 37,
394
- 36, 36, 36, 38, 37, 36, 37, 37,
395
- 37, 37, 37, 37, 37, 37, 37, 37,
396
- 37, 37, 37, 37, 37, 37, 37, 37,
397
- 37, 37, 37, 37, 37, 37, 37, 37,
398
- 36, 37, 37, 37, 37, 37, 36, 36,
399
- 36, 36, 36, 36, 36, 36, 36, 36,
400
- 36, 36, 36, 36, 36, 36, 36, 36,
401
- 37, 36, 36, 36, 36, 36, 36, 36,
402
- 36, 36, 36, 36, 36, 37, 37, 36,
403
- 37, 37, 37, 37, 37, 37, 37, 37,
404
- 37, 37, 36, 36, 36, 37, 36, 36,
405
- 36, 37, 37, 37, 37, 37, 37, 37,
406
- 37, 37, 37, 37, 37, 37, 37, 37,
407
- 37, 37, 37, 37, 37, 37, 37, 37,
408
- 37, 37, 37, 36, 36, 36, 36, 37,
409
- 36, 37, 37, 37, 37, 37, 37, 37,
410
- 37, 37, 37, 37, 37, 37, 37, 37,
411
- 37, 37, 37, 37, 37, 37, 37, 37,
412
- 37, 37, 37, 36, 36, 39, 36, 37,
413
- 37, 37, 37, 37, 36, 36, 36, 36,
414
- 36, 36, 36, 36, 36, 36, 36, 36,
415
- 36, 36, 36, 36, 36, 36, 37, 36,
416
- 36, 36, 36, 36, 36, 36, 36, 36,
417
- 36, 36, 36, 37, 37, 36, 37, 37,
418
- 37, 37, 37, 37, 37, 37, 37, 37,
419
- 36, 36, 36, 37, 36, 36, 36, 37,
420
- 37, 37, 37, 37, 37, 37, 37, 37,
421
- 37, 37, 37, 37, 37, 37, 37, 37,
422
- 37, 37, 37, 37, 37, 37, 37, 37,
423
- 37, 36, 36, 36, 36, 37, 36, 37,
424
- 37, 37, 37, 37, 37, 37, 37, 37,
425
- 37, 37, 37, 37, 37, 37, 37, 37,
426
- 37, 37, 37, 37, 37, 37, 37, 37,
427
- 37, 36, 41, 41, 41, 41, 41, 41,
428
- 41, 41, 41, 41, 41, 41, 41, 41,
429
- 41, 41, 41, 41, 41, 41, 41, 41,
430
- 41, 41, 41, 41, 41, 41, 41, 41,
431
- 41, 41, 41, 41, 41, 41, 41, 41,
432
- 41, 41, 41, 41, 41, 41, 41, 41,
433
- 41, 41, 41, 41, 41, 41, 41, 41,
434
- 41, 41, 41, 41, 41, 41, 41, 41,
435
- 41, 41, 40, 42, 42, 42, 42, 42,
436
- 42, 42, 42, 42, 42, 42, 42, 42,
437
- 42, 42, 42, 42, 42, 42, 42, 42,
438
- 42, 42, 42, 42, 42, 42, 42, 42,
439
- 42, 42, 42, 42, 42, 42, 42, 42,
440
- 42, 42, 42, 42, 42, 42, 42, 42,
441
- 42, 42, 42, 42, 42, 42, 42, 42,
442
- 42, 42, 42, 42, 42, 42, 42, 42,
443
- 42, 42, 42, 40, 44, 43, 47, 46,
444
- 46, 46, 46, 46, 46, 46, 46, 46,
445
- 46, 46, 46, 46, 46, 46, 46, 46,
446
- 46, 46, 47, 47, 47, 47, 47, 47,
447
- 47, 47, 47, 47, 47, 47, 47, 47,
448
- 47, 47, 47, 47, 47, 47, 47, 47,
449
- 47, 47, 47, 47, 46, 46, 46, 46,
450
- 46, 46, 47, 47, 47, 47, 47, 47,
451
- 47, 47, 47, 47, 47, 47, 47, 47,
452
- 47, 47, 47, 47, 47, 47, 47, 47,
453
- 47, 47, 47, 47, 46, 47, 48, 46,
454
- 46, 46, 46, 46, 46, 46, 46, 46,
455
- 46, 46, 46, 46, 46, 46, 46, 46,
456
- 46, 47, 47, 47, 47, 47, 47, 47,
457
- 47, 47, 47, 47, 47, 47, 47, 47,
458
- 47, 47, 47, 47, 47, 47, 47, 47,
459
- 47, 47, 47, 46, 46, 46, 46, 46,
460
- 46, 47, 47, 47, 47, 47, 47, 47,
461
- 47, 47, 47, 47, 47, 47, 47, 47,
462
- 47, 47, 47, 47, 47, 47, 47, 47,
463
- 47, 47, 47, 46, 49, 46, 50, 46,
464
- 46, 51, 52, 53, 54, 46, 46, 55,
465
- 46, 46, 46, 46, 56, 46, 46, 46,
466
- 57, 46, 46, 58, 46, 59, 46, 60,
467
- 61, 46, 51, 52, 53, 54, 46, 46,
468
- 55, 46, 46, 46, 46, 56, 46, 46,
469
- 46, 57, 46, 46, 58, 46, 59, 46,
470
- 60, 61, 46, 62, 46, 46, 46, 46,
471
- 46, 46, 63, 46, 64, 46, 65, 46,
472
- 66, 46, 67, 46, 68, 46, 69, 46,
473
- 70, 46, 67, 46, 71, 46, 72, 46,
474
- 67, 46, 73, 46, 74, 46, 75, 46,
475
- 67, 46, 76, 46, 77, 46, 78, 46,
476
- 67, 46, 79, 46, 80, 46, 81, 46,
477
- 67, 46, 82, 46, 83, 46, 84, 46,
478
- 67, 46, 85, 46, 86, 46, 87, 46,
479
- 67, 46, 88, 46, 46, 89, 46, 90,
480
- 46, 81, 46, 91, 46, 81, 46, 92,
481
- 46, 93, 46, 94, 46, 67, 46, 95,
482
- 46, 86, 46, 96, 46, 97, 46, 67,
483
- 46, 54, 46, 98, 98, 98, 98, 98,
484
- 98, 98, 98, 98, 98, 98, 98, 98,
485
- 98, 98, 98, 98, 98, 98, 98, 98,
486
- 98, 98, 98, 98, 98, 46, 46, 46,
487
- 46, 46, 46, 98, 98, 98, 98, 98,
488
- 98, 98, 98, 98, 98, 98, 98, 98,
489
- 98, 98, 98, 98, 98, 98, 98, 98,
490
- 98, 98, 98, 98, 98, 46, 99, 46,
491
- 100, 46, 101, 36, 103, 102, 105, 102,
492
- 106, 36, 108, 107, 110, 107, 111, 111,
493
- 111, 111, 111, 111, 111, 111, 111, 111,
494
- 36, 36, 36, 36, 36, 36, 36, 111,
495
- 111, 111, 111, 111, 111, 36, 36, 36,
496
- 36, 36, 36, 36, 36, 36, 36, 36,
497
- 36, 36, 36, 36, 36, 36, 36, 36,
498
- 36, 36, 36, 36, 36, 36, 36, 111,
499
- 111, 111, 111, 111, 111, 36, 36, 36,
500
- 36, 36, 36, 36, 36, 36, 36, 36,
501
- 36, 36, 36, 36, 36, 36, 36, 36,
502
- 36, 112, 36, 113, 113, 113, 113, 113,
503
- 113, 113, 113, 113, 113, 36, 36, 36,
504
- 36, 36, 36, 36, 113, 113, 113, 113,
505
- 113, 113, 36, 36, 36, 36, 36, 36,
506
- 36, 36, 36, 36, 36, 36, 36, 36,
507
- 36, 36, 36, 36, 36, 36, 36, 36,
508
- 36, 36, 36, 36, 113, 113, 113, 113,
509
- 113, 113, 36, 114, 114, 114, 114, 114,
510
- 114, 114, 114, 114, 114, 36, 36, 36,
511
- 36, 36, 36, 36, 114, 114, 114, 114,
512
- 114, 114, 36, 36, 36, 36, 36, 36,
513
- 36, 36, 36, 36, 36, 36, 36, 36,
514
- 36, 36, 36, 36, 36, 36, 36, 36,
515
- 36, 36, 36, 36, 114, 114, 114, 114,
516
- 114, 114, 36, 115, 115, 115, 115, 115,
517
- 115, 115, 115, 115, 115, 36, 36, 36,
518
- 36, 36, 36, 36, 115, 115, 115, 115,
519
- 115, 115, 36, 36, 36, 36, 36, 36,
520
- 36, 36, 36, 36, 36, 36, 36, 36,
521
- 36, 36, 36, 36, 36, 36, 36, 36,
522
- 36, 36, 36, 36, 115, 115, 115, 115,
523
- 115, 115, 36, 116, 116, 116, 116, 116,
524
- 116, 116, 116, 116, 116, 36, 36, 36,
525
- 36, 36, 36, 36, 116, 116, 116, 116,
526
- 116, 116, 36, 36, 36, 36, 36, 36,
527
- 36, 36, 36, 36, 36, 36, 36, 36,
528
- 36, 36, 36, 36, 36, 36, 36, 36,
529
- 36, 36, 36, 36, 116, 116, 116, 116,
530
- 116, 116, 36, 112, 112, 112, 112, 112,
531
- 36, 36, 36, 36, 36, 36, 36, 36,
532
- 36, 36, 36, 36, 36, 36, 36, 36,
533
- 36, 36, 112, 36, 36, 36, 36, 36,
534
- 36, 36, 36, 36, 36, 36, 36, 36,
535
- 36, 36, 117, 117, 117, 117, 117, 117,
536
- 117, 117, 117, 117, 36, 36, 36, 36,
537
- 36, 36, 36, 117, 117, 117, 117, 117,
538
- 117, 36, 36, 36, 36, 36, 36, 36,
539
- 36, 36, 36, 36, 36, 36, 36, 36,
540
- 36, 36, 36, 36, 36, 36, 36, 36,
541
- 36, 36, 36, 117, 117, 117, 117, 117,
542
- 117, 36, 36, 36, 36, 36, 36, 36,
543
- 36, 36, 36, 36, 36, 36, 36, 36,
544
- 36, 36, 36, 36, 36, 36, 36, 115,
545
- 36, 112, 112, 112, 112, 112, 36, 36,
546
- 36, 36, 36, 36, 36, 36, 36, 36,
547
- 36, 36, 36, 36, 36, 36, 36, 36,
548
- 112, 36, 36, 36, 36, 36, 36, 36,
549
- 36, 36, 36, 36, 36, 36, 36, 36,
550
- 118, 118, 118, 118, 118, 118, 118, 118,
551
- 118, 118, 36, 36, 36, 36, 36, 36,
552
- 36, 118, 118, 118, 118, 118, 118, 36,
553
- 36, 36, 36, 36, 36, 36, 36, 36,
554
- 36, 36, 36, 36, 36, 36, 36, 36,
555
- 36, 36, 36, 36, 36, 36, 36, 36,
556
- 36, 118, 118, 118, 118, 118, 118, 36,
557
- 36, 36, 36, 36, 36, 36, 36, 36,
558
- 36, 36, 36, 36, 36, 36, 36, 36,
559
- 36, 36, 36, 36, 36, 115, 36, 112,
560
- 112, 112, 112, 112, 36, 36, 36, 36,
561
- 36, 36, 36, 36, 36, 36, 36, 36,
562
- 36, 36, 36, 36, 36, 36, 112, 36,
563
- 36, 36, 36, 36, 36, 36, 36, 36,
564
- 36, 36, 36, 36, 36, 36, 119, 119,
565
- 119, 119, 119, 119, 119, 119, 119, 119,
566
- 36, 36, 36, 36, 36, 36, 36, 119,
567
- 119, 119, 119, 119, 119, 36, 36, 36,
568
- 36, 36, 36, 36, 36, 36, 36, 36,
569
- 36, 36, 36, 36, 36, 36, 36, 36,
570
- 36, 36, 36, 36, 36, 36, 36, 119,
571
- 119, 119, 119, 119, 119, 36, 36, 36,
572
- 36, 36, 36, 36, 36, 36, 36, 36,
573
- 36, 36, 36, 36, 36, 36, 36, 36,
574
- 36, 36, 36, 115, 36, 112, 112, 112,
575
- 112, 112, 36, 36, 36, 36, 36, 36,
576
- 36, 36, 36, 36, 36, 36, 36, 36,
577
- 36, 36, 36, 36, 112, 36, 36, 36,
578
- 36, 36, 36, 36, 36, 36, 36, 36,
579
- 36, 36, 36, 36, 120, 120, 120, 120,
580
- 120, 120, 120, 120, 120, 120, 36, 36,
581
- 36, 36, 36, 36, 36, 120, 120, 120,
582
- 120, 120, 120, 36, 36, 36, 36, 36,
583
- 36, 36, 36, 36, 36, 36, 36, 36,
584
- 36, 36, 36, 36, 36, 36, 36, 36,
585
- 36, 36, 36, 36, 36, 120, 120, 120,
586
- 120, 120, 120, 36, 36, 36, 36, 36,
587
- 36, 36, 36, 36, 36, 36, 36, 36,
588
- 36, 36, 36, 36, 36, 36, 36, 36,
589
- 36, 115, 36, 112, 112, 112, 112, 112,
590
- 36, 36, 36, 36, 36, 36, 36, 36,
591
- 36, 36, 36, 36, 36, 36, 36, 36,
592
- 36, 36, 112, 36, 36, 36, 36, 36,
593
- 36, 36, 36, 36, 36, 36, 36, 36,
594
- 36, 36, 121, 121, 121, 121, 121, 121,
595
- 121, 121, 121, 121, 36, 36, 36, 36,
596
- 36, 36, 36, 121, 121, 121, 121, 121,
597
- 121, 36, 36, 36, 36, 36, 36, 36,
598
- 36, 36, 36, 36, 36, 36, 36, 36,
599
- 36, 36, 36, 36, 36, 36, 36, 36,
600
- 36, 36, 36, 121, 121, 121, 121, 121,
601
- 121, 36, 36, 36, 36, 36, 36, 36,
602
- 36, 36, 36, 36, 36, 36, 36, 36,
603
- 36, 36, 36, 36, 36, 36, 36, 115,
604
- 36, 112, 112, 112, 112, 112, 36, 36,
605
- 36, 36, 36, 36, 36, 36, 36, 36,
606
- 36, 36, 36, 36, 36, 36, 36, 36,
607
- 112, 36, 36, 36, 36, 36, 36, 36,
608
- 36, 36, 36, 36, 36, 36, 36, 36,
609
- 36, 36, 36, 36, 36, 36, 36, 36,
610
- 36, 36, 36, 36, 36, 36, 36, 36,
611
- 36, 36, 36, 36, 36, 36, 36, 36,
612
- 36, 36, 36, 36, 36, 36, 36, 36,
613
- 36, 36, 36, 36, 36, 36, 36, 36,
614
- 36, 36, 36, 36, 36, 36, 36, 36,
615
- 36, 36, 36, 36, 36, 36, 36, 36,
616
- 36, 36, 36, 36, 36, 36, 36, 36,
617
- 36, 36, 36, 36, 36, 36, 36, 36,
618
- 36, 36, 36, 36, 36, 115, 36, 123,
619
- 123, 123, 123, 123, 123, 123, 123, 123,
385
+ 33, 33, 33, 33, 33, 33, 34, 33,
386
+ 33, 33, 33, 33, 33, 33, 33, 33,
387
+ 33, 33, 33, 34, 34, 33, 34, 34,
388
+ 34, 34, 34, 34, 34, 34, 34, 34,
389
+ 33, 33, 33, 34, 33, 33, 33, 34,
390
+ 34, 34, 34, 34, 34, 34, 34, 34,
391
+ 34, 34, 34, 34, 34, 34, 34, 34,
392
+ 34, 34, 34, 34, 34, 34, 34, 34,
393
+ 34, 33, 33, 33, 35, 34, 33, 34,
394
+ 34, 34, 34, 34, 34, 34, 34, 34,
395
+ 34, 34, 34, 34, 34, 34, 34, 34,
396
+ 34, 34, 34, 34, 34, 34, 34, 34,
397
+ 34, 33, 34, 34, 34, 34, 34, 33,
398
+ 33, 33, 33, 33, 33, 33, 33, 33,
399
+ 33, 33, 33, 33, 33, 33, 33, 33,
400
+ 33, 34, 33, 33, 33, 33, 33, 33,
401
+ 33, 33, 33, 33, 33, 33, 34, 34,
402
+ 33, 34, 34, 34, 34, 34, 34, 34,
403
+ 34, 34, 34, 33, 33, 33, 34, 33,
404
+ 33, 33, 34, 34, 34, 34, 34, 34,
405
+ 34, 34, 34, 34, 34, 34, 34, 34,
406
+ 34, 34, 34, 34, 34, 34, 34, 34,
407
+ 34, 34, 34, 34, 33, 33, 33, 33,
408
+ 34, 33, 34, 34, 34, 34, 34, 34,
409
+ 34, 34, 34, 34, 34, 34, 34, 34,
410
+ 34, 34, 34, 34, 34, 34, 34, 34,
411
+ 34, 34, 34, 34, 33, 33, 36, 33,
412
+ 34, 34, 34, 34, 34, 33, 33, 33,
413
+ 33, 33, 33, 33, 33, 33, 33, 33,
414
+ 33, 33, 33, 33, 33, 33, 33, 34,
415
+ 33, 33, 33, 33, 33, 33, 33, 33,
416
+ 33, 33, 33, 33, 34, 34, 33, 34,
417
+ 34, 34, 34, 34, 34, 34, 34, 34,
418
+ 34, 33, 33, 33, 34, 33, 33, 33,
419
+ 34, 34, 34, 34, 34, 34, 34, 34,
420
+ 34, 34, 34, 34, 34, 34, 34, 34,
421
+ 34, 34, 34, 34, 34, 34, 34, 34,
422
+ 34, 34, 33, 33, 33, 33, 34, 33,
423
+ 34, 34, 34, 34, 34, 34, 34, 34,
424
+ 34, 34, 34, 34, 34, 34, 34, 34,
425
+ 34, 34, 34, 34, 34, 34, 34, 34,
426
+ 34, 34, 33, 38, 38, 38, 38, 38,
427
+ 38, 38, 38, 38, 38, 38, 38, 38,
428
+ 38, 38, 38, 38, 38, 38, 38, 38,
429
+ 38, 38, 38, 38, 38, 38, 38, 38,
430
+ 38, 38, 38, 38, 38, 38, 38, 38,
431
+ 38, 38, 38, 38, 38, 38, 38, 38,
432
+ 38, 38, 38, 38, 38, 38, 38, 38,
433
+ 38, 38, 38, 38, 38, 38, 38, 38,
434
+ 38, 38, 38, 37, 39, 39, 39, 39,
435
+ 39, 39, 39, 39, 39, 39, 39, 39,
436
+ 39, 39, 39, 39, 39, 39, 39, 39,
437
+ 39, 39, 39, 39, 39, 39, 39, 39,
438
+ 39, 39, 39, 39, 39, 39, 39, 39,
439
+ 39, 39, 39, 39, 39, 39, 39, 39,
440
+ 39, 39, 39, 39, 39, 39, 39, 39,
441
+ 39, 39, 39, 39, 39, 39, 39, 39,
442
+ 39, 39, 39, 39, 37, 41, 40, 44,
443
+ 43, 43, 43, 43, 43, 43, 43, 43,
444
+ 43, 43, 43, 43, 43, 43, 43, 43,
445
+ 43, 43, 43, 44, 44, 44, 44, 44,
446
+ 44, 44, 44, 44, 44, 44, 44, 44,
447
+ 44, 44, 44, 44, 44, 44, 44, 44,
448
+ 44, 44, 44, 44, 44, 43, 43, 43,
449
+ 43, 43, 43, 44, 44, 44, 44, 44,
450
+ 44, 44, 44, 44, 44, 44, 44, 44,
451
+ 44, 44, 44, 44, 44, 44, 44, 44,
452
+ 44, 44, 44, 44, 44, 43, 44, 45,
453
+ 43, 43, 43, 43, 43, 43, 43, 43,
454
+ 43, 43, 43, 43, 43, 43, 43, 43,
455
+ 43, 43, 44, 44, 44, 44, 44, 44,
456
+ 44, 44, 44, 44, 44, 44, 44, 44,
457
+ 44, 44, 44, 44, 44, 44, 44, 44,
458
+ 44, 44, 44, 44, 43, 43, 43, 43,
459
+ 43, 43, 44, 44, 44, 44, 44, 44,
460
+ 44, 44, 44, 44, 44, 44, 44, 44,
461
+ 44, 44, 44, 44, 44, 44, 44, 44,
462
+ 44, 44, 44, 44, 43, 46, 43, 47,
463
+ 43, 43, 48, 49, 50, 51, 43, 43,
464
+ 52, 43, 43, 43, 43, 53, 43, 43,
465
+ 43, 54, 43, 43, 55, 43, 56, 43,
466
+ 57, 58, 43, 48, 49, 50, 51, 43,
467
+ 43, 52, 43, 43, 43, 43, 53, 43,
468
+ 43, 43, 54, 43, 43, 55, 43, 56,
469
+ 43, 57, 58, 43, 59, 43, 43, 43,
470
+ 43, 43, 43, 60, 43, 61, 43, 62,
471
+ 43, 63, 43, 64, 43, 65, 43, 66,
472
+ 43, 67, 43, 64, 43, 68, 43, 69,
473
+ 43, 64, 43, 70, 43, 71, 43, 72,
474
+ 43, 64, 43, 73, 43, 74, 43, 75,
475
+ 43, 64, 43, 76, 43, 77, 43, 78,
476
+ 43, 64, 43, 79, 43, 80, 43, 81,
477
+ 43, 64, 43, 82, 43, 83, 43, 84,
478
+ 43, 64, 43, 85, 43, 43, 86, 43,
479
+ 87, 43, 78, 43, 88, 43, 78, 43,
480
+ 89, 43, 90, 43, 91, 43, 64, 43,
481
+ 92, 43, 83, 43, 93, 43, 94, 43,
482
+ 64, 43, 51, 43, 95, 95, 95, 95,
483
+ 95, 95, 95, 95, 95, 95, 95, 95,
484
+ 95, 95, 95, 95, 95, 95, 95, 95,
485
+ 95, 95, 95, 95, 95, 95, 43, 43,
486
+ 43, 43, 43, 43, 95, 95, 95, 95,
487
+ 95, 95, 95, 95, 95, 95, 95, 95,
488
+ 95, 95, 95, 95, 95, 95, 95, 95,
489
+ 95, 95, 95, 95, 95, 95, 43, 96,
490
+ 43, 97, 43, 99, 99, 99, 99, 99,
491
+ 99, 99, 99, 99, 99, 99, 99, 99,
492
+ 99, 99, 99, 99, 99, 99, 99, 99,
493
+ 99, 99, 99, 99, 99, 99, 99, 99,
494
+ 99, 99, 99, 99, 99, 99, 99, 99,
495
+ 99, 99, 99, 99, 99, 99, 99, 99,
496
+ 99, 99, 99, 99, 99, 99, 99, 99,
497
+ 99, 99, 99, 99, 99, 99, 99, 99,
498
+ 99, 99, 99, 98, 100, 100, 100, 100,
499
+ 100, 100, 100, 100, 100, 100, 100, 100,
500
+ 100, 100, 100, 100, 100, 100, 100, 100,
501
+ 100, 100, 100, 100, 100, 100, 100, 100,
502
+ 100, 100, 100, 100, 100, 100, 100, 100,
503
+ 100, 100, 100, 100, 100, 100, 100, 100,
504
+ 100, 100, 100, 100, 100, 100, 100, 100,
505
+ 100, 100, 100, 100, 100, 100, 100, 100,
506
+ 100, 100, 100, 100, 98, 101, 33, 103,
507
+ 102, 105, 102, 106, 33, 108, 107, 110,
508
+ 107, 111, 111, 111, 111, 111, 111, 111,
509
+ 111, 111, 111, 33, 33, 33, 33, 33,
510
+ 33, 33, 111, 111, 111, 111, 111, 111,
511
+ 33, 33, 33, 33, 33, 33, 33, 33,
512
+ 33, 33, 33, 33, 33, 33, 33, 33,
513
+ 33, 33, 33, 33, 33, 33, 33, 33,
514
+ 33, 33, 111, 111, 111, 111, 111, 111,
515
+ 33, 33, 33, 33, 33, 33, 33, 33,
516
+ 33, 33, 33, 33, 33, 33, 33, 33,
517
+ 33, 33, 33, 33, 112, 33, 113, 113,
518
+ 113, 113, 113, 113, 113, 113, 113, 113,
519
+ 33, 33, 33, 33, 33, 33, 33, 113,
520
+ 113, 113, 113, 113, 113, 33, 33, 33,
521
+ 33, 33, 33, 33, 33, 33, 33, 33,
522
+ 33, 33, 33, 33, 33, 33, 33, 33,
523
+ 33, 33, 33, 33, 33, 33, 33, 113,
524
+ 113, 113, 113, 113, 113, 33, 114, 114,
525
+ 114, 114, 114, 114, 114, 114, 114, 114,
526
+ 33, 33, 33, 33, 33, 33, 33, 114,
527
+ 114, 114, 114, 114, 114, 33, 33, 33,
528
+ 33, 33, 33, 33, 33, 33, 33, 33,
529
+ 33, 33, 33, 33, 33, 33, 33, 33,
530
+ 33, 33, 33, 33, 33, 33, 33, 114,
531
+ 114, 114, 114, 114, 114, 33, 115, 115,
532
+ 115, 115, 115, 115, 115, 115, 115, 115,
533
+ 33, 33, 33, 33, 33, 33, 33, 115,
534
+ 115, 115, 115, 115, 115, 33, 33, 33,
535
+ 33, 33, 33, 33, 33, 33, 33, 33,
536
+ 33, 33, 33, 33, 33, 33, 33, 33,
537
+ 33, 33, 33, 33, 33, 33, 33, 115,
538
+ 115, 115, 115, 115, 115, 33, 116, 116,
539
+ 116, 116, 116, 116, 116, 116, 116, 116,
540
+ 33, 33, 33, 33, 33, 33, 33, 116,
541
+ 116, 116, 116, 116, 116, 33, 33, 33,
542
+ 33, 33, 33, 33, 33, 33, 33, 33,
543
+ 33, 33, 33, 33, 33, 33, 33, 33,
544
+ 33, 33, 33, 33, 33, 33, 33, 116,
545
+ 116, 116, 116, 116, 116, 33, 112, 112,
546
+ 112, 112, 112, 33, 33, 33, 33, 33,
547
+ 33, 33, 33, 33, 33, 33, 33, 33,
548
+ 33, 33, 33, 33, 33, 112, 33, 33,
549
+ 33, 33, 33, 33, 33, 33, 33, 33,
550
+ 33, 33, 33, 33, 33, 117, 117, 117,
551
+ 117, 117, 117, 117, 117, 117, 117, 33,
552
+ 33, 33, 33, 33, 33, 33, 117, 117,
553
+ 117, 117, 117, 117, 33, 33, 33, 33,
554
+ 33, 33, 33, 33, 33, 33, 33, 33,
555
+ 33, 33, 33, 33, 33, 33, 33, 33,
556
+ 33, 33, 33, 33, 33, 33, 117, 117,
557
+ 117, 117, 117, 117, 33, 33, 33, 33,
558
+ 33, 33, 33, 33, 33, 33, 33, 33,
559
+ 33, 33, 33, 33, 33, 33, 33, 33,
560
+ 33, 33, 115, 33, 112, 112, 112, 112,
561
+ 112, 33, 33, 33, 33, 33, 33, 33,
562
+ 33, 33, 33, 33, 33, 33, 33, 33,
563
+ 33, 33, 33, 112, 33, 33, 33, 33,
564
+ 33, 33, 33, 33, 33, 33, 33, 33,
565
+ 33, 33, 33, 118, 118, 118, 118, 118,
566
+ 118, 118, 118, 118, 118, 33, 33, 33,
567
+ 33, 33, 33, 33, 118, 118, 118, 118,
568
+ 118, 118, 33, 33, 33, 33, 33, 33,
569
+ 33, 33, 33, 33, 33, 33, 33, 33,
570
+ 33, 33, 33, 33, 33, 33, 33, 33,
571
+ 33, 33, 33, 33, 118, 118, 118, 118,
572
+ 118, 118, 33, 33, 33, 33, 33, 33,
573
+ 33, 33, 33, 33, 33, 33, 33, 33,
574
+ 33, 33, 33, 33, 33, 33, 33, 33,
575
+ 115, 33, 112, 112, 112, 112, 112, 33,
576
+ 33, 33, 33, 33, 33, 33, 33, 33,
577
+ 33, 33, 33, 33, 33, 33, 33, 33,
578
+ 33, 112, 33, 33, 33, 33, 33, 33,
579
+ 33, 33, 33, 33, 33, 33, 33, 33,
580
+ 33, 119, 119, 119, 119, 119, 119, 119,
581
+ 119, 119, 119, 33, 33, 33, 33, 33,
582
+ 33, 33, 119, 119, 119, 119, 119, 119,
583
+ 33, 33, 33, 33, 33, 33, 33, 33,
584
+ 33, 33, 33, 33, 33, 33, 33, 33,
585
+ 33, 33, 33, 33, 33, 33, 33, 33,
586
+ 33, 33, 119, 119, 119, 119, 119, 119,
587
+ 33, 33, 33, 33, 33, 33, 33, 33,
588
+ 33, 33, 33, 33, 33, 33, 33, 33,
589
+ 33, 33, 33, 33, 33, 33, 115, 33,
590
+ 112, 112, 112, 112, 112, 33, 33, 33,
591
+ 33, 33, 33, 33, 33, 33, 33, 33,
592
+ 33, 33, 33, 33, 33, 33, 33, 112,
593
+ 33, 33, 33, 33, 33, 33, 33, 33,
594
+ 33, 33, 33, 33, 33, 33, 33, 120,
595
+ 120, 120, 120, 120, 120, 120, 120, 120,
596
+ 120, 33, 33, 33, 33, 33, 33, 33,
597
+ 120, 120, 120, 120, 120, 120, 33, 33,
598
+ 33, 33, 33, 33, 33, 33, 33, 33,
599
+ 33, 33, 33, 33, 33, 33, 33, 33,
600
+ 33, 33, 33, 33, 33, 33, 33, 33,
601
+ 120, 120, 120, 120, 120, 120, 33, 33,
602
+ 33, 33, 33, 33, 33, 33, 33, 33,
603
+ 33, 33, 33, 33, 33, 33, 33, 33,
604
+ 33, 33, 33, 33, 115, 33, 112, 112,
605
+ 112, 112, 112, 33, 33, 33, 33, 33,
606
+ 33, 33, 33, 33, 33, 33, 33, 33,
607
+ 33, 33, 33, 33, 33, 112, 33, 33,
608
+ 33, 33, 33, 33, 33, 33, 33, 33,
609
+ 33, 33, 33, 33, 33, 121, 121, 121,
610
+ 121, 121, 121, 121, 121, 121, 121, 33,
611
+ 33, 33, 33, 33, 33, 33, 121, 121,
612
+ 121, 121, 121, 121, 33, 33, 33, 33,
613
+ 33, 33, 33, 33, 33, 33, 33, 33,
614
+ 33, 33, 33, 33, 33, 33, 33, 33,
615
+ 33, 33, 33, 33, 33, 33, 121, 121,
616
+ 121, 121, 121, 121, 33, 33, 33, 33,
617
+ 33, 33, 33, 33, 33, 33, 33, 33,
618
+ 33, 33, 33, 33, 33, 33, 33, 33,
619
+ 33, 33, 115, 33, 112, 112, 112, 112,
620
+ 112, 33, 33, 33, 33, 33, 33, 33,
621
+ 33, 33, 33, 33, 33, 33, 33, 33,
622
+ 33, 33, 33, 112, 33, 33, 33, 33,
623
+ 33, 33, 33, 33, 33, 33, 33, 33,
624
+ 33, 33, 33, 33, 33, 33, 33, 33,
625
+ 33, 33, 33, 33, 33, 33, 33, 33,
626
+ 33, 33, 33, 33, 33, 33, 33, 33,
627
+ 33, 33, 33, 33, 33, 33, 33, 33,
628
+ 33, 33, 33, 33, 33, 33, 33, 33,
629
+ 33, 33, 33, 33, 33, 33, 33, 33,
630
+ 33, 33, 33, 33, 33, 33, 33, 33,
631
+ 33, 33, 33, 33, 33, 33, 33, 33,
632
+ 33, 33, 33, 33, 33, 33, 33, 33,
633
+ 33, 33, 33, 33, 33, 33, 33, 33,
634
+ 115, 33, 123, 123, 123, 123, 123, 123,
635
+ 123, 123, 123, 123, 122, 122, 122, 122,
636
+ 122, 122, 122, 123, 123, 123, 123, 123,
620
637
  123, 122, 122, 122, 122, 122, 122, 122,
621
- 123, 123, 123, 123, 123, 123, 122, 122,
622
- 122, 122, 122, 122, 122, 122, 122, 122,
623
638
  122, 122, 122, 122, 122, 122, 122, 122,
624
639
  122, 122, 122, 122, 122, 122, 122, 122,
625
- 123, 123, 123, 123, 123, 123, 122, 122,
626
- 122, 122, 122, 122, 122, 122, 122, 122,
640
+ 122, 122, 122, 123, 123, 123, 123, 123,
641
+ 123, 122, 122, 122, 122, 122, 122, 122,
627
642
  122, 122, 122, 122, 122, 122, 122, 122,
628
- 122, 122, 36, 122, 125, 124, 126, 124,
629
- 124, 124, 124, 124, 124, 124, 124, 127,
630
- 127, 127, 127, 127, 127, 127, 127, 127,
631
- 127, 124, 124, 124, 124, 124, 124, 124,
632
- 127, 127, 127, 127, 127, 127, 127, 127,
633
- 127, 127, 127, 127, 127, 127, 127, 127,
643
+ 122, 122, 122, 122, 122, 33, 122, 125,
644
+ 124, 126, 124, 124, 124, 124, 124, 124,
645
+ 124, 124, 127, 127, 127, 127, 127, 127,
646
+ 127, 127, 127, 127, 124, 124, 124, 124,
647
+ 124, 124, 124, 127, 127, 127, 127, 127,
634
648
  127, 127, 127, 127, 127, 127, 127, 127,
635
- 127, 127, 124, 124, 124, 124, 127, 124,
636
649
  127, 127, 127, 127, 127, 127, 127, 127,
650
+ 127, 127, 127, 127, 127, 124, 124, 124,
651
+ 124, 127, 124, 127, 127, 127, 127, 127,
637
652
  127, 127, 127, 127, 127, 127, 127, 127,
638
653
  127, 127, 127, 127, 127, 127, 127, 127,
639
- 127, 127, 124, 125, 124, 124, 124, 124,
640
- 124, 124, 128, 128, 128, 128, 128, 128,
641
- 128, 128, 128, 128, 124, 129, 129, 129,
642
- 129, 129, 129, 129, 129, 129, 129, 124,
643
- 124, 124, 124, 126, 124, 124, 129, 129,
654
+ 127, 127, 127, 127, 127, 124, 125, 124,
655
+ 124, 124, 124, 124, 124, 128, 128, 128,
656
+ 128, 128, 128, 128, 128, 128, 128, 124,
644
657
  129, 129, 129, 129, 129, 129, 129, 129,
658
+ 129, 129, 124, 124, 124, 124, 126, 124,
659
+ 124, 129, 129, 129, 129, 129, 129, 129,
645
660
  129, 129, 129, 129, 129, 129, 129, 129,
646
661
  129, 129, 129, 129, 129, 129, 129, 129,
647
- 124, 124, 124, 124, 129, 124, 129, 129,
662
+ 129, 129, 129, 124, 124, 124, 124, 129,
663
+ 124, 129, 129, 129, 129, 129, 129, 129,
648
664
  129, 129, 129, 129, 129, 129, 129, 129,
649
665
  129, 129, 129, 129, 129, 129, 129, 129,
650
- 129, 129, 129, 129, 129, 129, 129, 129,
651
- 124, 130, 130, 130, 130, 130, 130, 130,
666
+ 129, 129, 129, 124, 33, 33, 33, 33,
667
+ 33, 33, 33, 33, 33, 33, 33, 33,
668
+ 33, 33, 33, 33, 33, 33, 33, 33,
669
+ 33, 33, 33, 33, 33, 33, 33, 33,
670
+ 33, 33, 33, 33, 33, 33, 33, 33,
671
+ 33, 33, 33, 33, 33, 33, 33, 33,
672
+ 33, 33, 33, 33, 33, 33, 33, 33,
673
+ 33, 33, 33, 33, 33, 33, 33, 33,
674
+ 33, 33, 33, 33, 33, 33, 130, 130,
675
+ 130, 130, 130, 130, 130, 130, 130, 130,
652
676
  130, 130, 130, 130, 130, 130, 130, 130,
653
677
  130, 130, 130, 130, 130, 130, 130, 130,
654
- 130, 130, 130, 130, 130, 130, 130, 131,
678
+ 130, 130, 130, 130, 131, 131, 131, 131,
655
679
  131, 131, 131, 131, 131, 131, 131, 131,
656
- 131, 131, 131, 131, 131, 131, 131, 132,
657
- 132, 132, 132, 132, 31, 31, 31, 31,
658
- 31, 31, 31, 31, 31, 31, 31, 31,
659
- 133, 133, 133, 133, 133, 133, 133, 133,
660
- 134, 134, 134, 134, 134, 133, 133, 133,
680
+ 131, 131, 131, 131, 132, 132, 132, 132,
681
+ 132, 33, 33, 33, 33, 33, 33, 33,
682
+ 33, 33, 33, 33, 33, 133, 133, 133,
683
+ 133, 133, 133, 133, 133, 134, 134, 134,
684
+ 134, 134, 133, 133, 133, 133, 133, 133,
661
685
  133, 133, 133, 133, 133, 133, 133, 133,
662
- 133, 133, 133, 133, 133, 133, 133, 135,
663
- 136, 136, 137, 138, 136, 136, 136, 139,
664
- 140, 141, 142, 136, 136, 143, 136, 136,
686
+ 133, 133, 133, 133, 135, 136, 136, 137,
687
+ 138, 136, 136, 136, 139, 140, 141, 142,
688
+ 136, 136, 143, 136, 136, 136, 136, 136,
665
689
  136, 136, 136, 136, 136, 136, 136, 136,
666
- 136, 136, 136, 136, 136, 136, 144, 136,
690
+ 136, 136, 136, 144, 136, 136, 136, 136,
667
691
  136, 136, 136, 136, 136, 136, 136, 136,
668
692
  136, 136, 136, 136, 136, 136, 136, 136,
693
+ 136, 136, 136, 136, 136, 136, 136, 145,
694
+ 146, 147, 148, 136, 136, 136, 136, 136,
669
695
  136, 136, 136, 136, 136, 136, 136, 136,
670
- 136, 136, 145, 146, 31, 147, 136, 136,
671
696
  136, 136, 136, 136, 136, 136, 136, 136,
672
- 136, 136, 136, 136, 136, 136, 136, 136,
673
- 136, 136, 136, 136, 136, 136, 136, 136,
674
- 136, 136, 33, 148, 31, 136, 133, 31,
697
+ 136, 136, 136, 136, 136, 136, 136, 149,
698
+ 150, 147, 136, 133, 136, 130, 130, 130,
675
699
  130, 130, 130, 130, 130, 130, 130, 130,
676
700
  130, 130, 130, 130, 130, 130, 130, 130,
677
701
  130, 130, 130, 130, 130, 130, 130, 130,
678
- 130, 130, 130, 130, 130, 130, 149, 131,
702
+ 130, 130, 130, 151, 131, 131, 131, 131,
679
703
  131, 131, 131, 131, 131, 131, 131, 131,
680
- 131, 131, 131, 131, 131, 131, 131, 149,
681
- 132, 132, 132, 132, 132, 149, 133, 133,
704
+ 131, 131, 131, 131, 151, 132, 132, 132,
705
+ 132, 132, 151, 133, 133, 133, 133, 133,
682
706
  133, 133, 133, 133, 133, 133, 133, 133,
683
707
  133, 133, 133, 133, 133, 133, 133, 133,
684
708
  133, 133, 133, 133, 133, 133, 133, 133,
685
- 133, 133, 133, 133, 133, 149, 149, 149,
686
- 149, 149, 149, 149, 149, 149, 149, 149,
687
- 149, 149, 149, 149, 149, 149, 149, 149,
688
- 149, 149, 149, 149, 149, 149, 149, 149,
689
- 149, 149, 149, 149, 149, 149, 149, 149,
690
- 149, 149, 149, 149, 149, 149, 149, 149,
691
- 149, 149, 149, 149, 149, 149, 149, 149,
692
- 149, 149, 149, 149, 149, 149, 149, 149,
693
- 149, 149, 149, 149, 149, 149, 149, 149,
694
- 149, 149, 149, 149, 149, 149, 149, 149,
695
- 149, 149, 149, 149, 149, 149, 149, 149,
696
- 149, 149, 149, 149, 149, 149, 149, 149,
697
- 149, 149, 149, 149, 133, 149, 133, 133,
698
- 133, 133, 133, 133, 133, 133, 134, 134,
699
- 134, 134, 134, 133, 133, 133, 133, 133,
709
+ 133, 133, 151, 151, 151, 151, 151, 151,
710
+ 151, 151, 151, 151, 151, 151, 151, 151,
711
+ 151, 151, 151, 151, 151, 151, 151, 151,
712
+ 151, 151, 151, 151, 151, 151, 151, 151,
713
+ 151, 151, 151, 151, 151, 151, 151, 151,
714
+ 151, 151, 151, 151, 151, 151, 151, 151,
715
+ 151, 151, 151, 151, 151, 151, 151, 151,
716
+ 151, 151, 151, 151, 151, 151, 151, 151,
717
+ 151, 151, 151, 151, 151, 151, 151, 151,
718
+ 151, 151, 151, 151, 151, 151, 151, 151,
719
+ 151, 151, 151, 151, 151, 151, 151, 151,
720
+ 151, 151, 151, 151, 151, 151, 151, 151,
721
+ 151, 133, 151, 133, 133, 133, 133, 133,
722
+ 133, 133, 133, 134, 134, 134, 134, 134,
700
723
  133, 133, 133, 133, 133, 133, 133, 133,
701
- 133, 133, 133, 133, 133, 135, 150, 150,
702
- 150, 150, 150, 150, 150, 150, 150, 150,
703
- 150, 150, 150, 150, 150, 150, 150, 150,
704
- 150, 150, 150, 150, 150, 150, 150, 150,
705
- 150, 150, 150, 150, 150, 150, 150, 150,
706
- 150, 150, 150, 150, 150, 150, 150, 150,
707
- 150, 150, 150, 150, 150, 150, 150, 150,
708
- 150, 150, 150, 150, 150, 150, 150, 150,
709
- 150, 150, 150, 150, 150, 150, 150, 150,
710
- 150, 150, 150, 150, 150, 150, 150, 150,
711
- 150, 150, 150, 150, 150, 150, 150, 150,
712
- 150, 150, 150, 150, 150, 150, 150, 150,
713
- 150, 150, 150, 150, 133, 150, 135, 135,
714
- 135, 135, 135, 150, 150, 150, 150, 150,
715
- 150, 150, 150, 150, 150, 150, 150, 150,
716
- 150, 150, 150, 150, 150, 135, 150, 136,
717
- 136, 136, 149, 136, 136, 136, 149, 149,
718
- 149, 149, 136, 136, 149, 136, 136, 136,
719
- 136, 136, 136, 136, 136, 136, 136, 136,
720
- 136, 136, 136, 136, 136, 149, 136, 136,
721
- 136, 136, 136, 136, 136, 136, 136, 136,
724
+ 133, 133, 133, 133, 133, 133, 133, 133,
725
+ 133, 133, 135, 152, 152, 152, 152, 152,
726
+ 152, 152, 152, 152, 152, 152, 152, 152,
727
+ 152, 152, 152, 152, 152, 152, 152, 152,
728
+ 152, 152, 152, 152, 152, 152, 152, 152,
729
+ 152, 152, 152, 152, 152, 152, 152, 152,
730
+ 152, 152, 152, 152, 152, 152, 152, 152,
731
+ 152, 152, 152, 152, 152, 152, 152, 152,
732
+ 152, 152, 152, 152, 152, 152, 152, 152,
733
+ 152, 152, 152, 152, 152, 152, 152, 152,
734
+ 152, 152, 152, 152, 152, 152, 152, 152,
735
+ 152, 152, 152, 152, 152, 152, 152, 152,
736
+ 152, 152, 152, 152, 152, 152, 152, 152,
737
+ 152, 133, 152, 135, 135, 135, 135, 135,
738
+ 152, 152, 152, 152, 152, 152, 152, 152,
739
+ 152, 152, 152, 152, 152, 152, 152, 152,
740
+ 152, 152, 135, 152, 136, 136, 151, 151,
741
+ 136, 136, 136, 151, 151, 151, 151, 136,
742
+ 136, 151, 136, 136, 136, 136, 136, 136,
722
743
  136, 136, 136, 136, 136, 136, 136, 136,
744
+ 136, 136, 151, 136, 136, 136, 136, 136,
723
745
  136, 136, 136, 136, 136, 136, 136, 136,
724
- 136, 149, 149, 149, 149, 136, 136, 136,
725
746
  136, 136, 136, 136, 136, 136, 136, 136,
747
+ 136, 136, 136, 136, 136, 136, 151, 151,
748
+ 151, 151, 136, 136, 136, 136, 136, 136,
726
749
  136, 136, 136, 136, 136, 136, 136, 136,
727
750
  136, 136, 136, 136, 136, 136, 136, 136,
728
- 136, 149, 149, 149, 136, 149, 9, 8,
729
- 8, 8, 8, 8, 8, 8, 8, 8,
730
- 8, 8, 8, 8, 8, 8, 8, 8,
731
- 8, 8, 8, 8, 8, 137, 137, 137,
732
- 8, 137, 137, 137, 8, 8, 8, 8,
733
- 137, 137, 8, 137, 137, 137, 137, 137,
734
- 137, 137, 137, 137, 137, 137, 137, 137,
735
- 137, 137, 137, 8, 137, 137, 137, 137,
736
- 137, 137, 137, 137, 137, 137, 137, 137,
737
- 137, 137, 137, 137, 137, 137, 137, 137,
738
- 137, 137, 137, 137, 137, 137, 137, 8,
739
- 8, 8, 8, 137, 137, 137, 137, 137,
740
- 137, 137, 137, 137, 137, 137, 137, 137,
741
- 137, 137, 137, 137, 137, 137, 137, 137,
742
- 137, 137, 137, 137, 137, 137, 137, 8,
743
- 8, 8, 137, 8, 152, 151, 15, 154,
744
- 11, 154, 154, 154, 14, 155, 153, 154,
745
- 154, 154, 154, 154, 154, 154, 154, 154,
746
- 154, 154, 154, 154, 154, 154, 154, 13,
747
- 154, 156, 15, 13, 154, 154, 154, 154,
748
- 154, 154, 154, 154, 154, 154, 154, 154,
749
- 154, 154, 154, 154, 154, 154, 154, 154,
750
- 154, 154, 154, 154, 154, 154, 154, 154,
751
- 154, 154, 154, 154, 154, 154, 154, 154,
752
- 154, 154, 154, 154, 154, 154, 154, 154,
753
- 154, 154, 154, 154, 154, 154, 154, 154,
754
- 154, 154, 154, 154, 154, 154, 154, 154,
755
- 154, 154, 154, 13, 154, 153, 154, 153,
756
- 154, 154, 154, 153, 153, 153, 154, 154,
757
- 154, 154, 154, 154, 154, 154, 154, 154,
758
- 154, 154, 154, 154, 154, 154, 157, 154,
759
- 153, 153, 153, 154, 154, 154, 154, 154,
760
- 154, 154, 154, 154, 154, 154, 154, 154,
761
- 154, 154, 154, 154, 154, 154, 154, 154,
762
- 154, 154, 154, 154, 154, 154, 154, 154,
763
- 154, 154, 154, 154, 154, 154, 154, 154,
764
- 154, 154, 154, 154, 154, 154, 154, 154,
765
- 154, 154, 154, 154, 154, 154, 154, 154,
766
- 154, 154, 154, 154, 154, 154, 154, 154,
767
- 154, 154, 153, 154, 159, 158, 158, 158,
751
+ 136, 136, 136, 136, 136, 136, 151, 151,
752
+ 151, 136, 151, 154, 137, 156, 155, 12,
753
+ 158, 8, 158, 158, 158, 11, 159, 157,
754
+ 158, 158, 158, 158, 158, 158, 158, 158,
755
+ 158, 158, 158, 158, 158, 158, 158, 158,
756
+ 10, 158, 160, 12, 10, 158, 158, 158,
757
+ 158, 158, 158, 158, 158, 158, 158, 158,
758
+ 158, 158, 158, 158, 158, 158, 158, 158,
759
+ 158, 158, 158, 158, 158, 158, 158, 158,
760
+ 158, 158, 158, 158, 158, 158, 158, 158,
761
+ 158, 158, 158, 158, 158, 158, 158, 158,
762
+ 158, 158, 158, 158, 158, 158, 158, 158,
763
+ 158, 158, 158, 158, 158, 158, 158, 158,
764
+ 158, 158, 158, 158, 10, 158, 157, 158,
765
+ 157, 158, 158, 158, 157, 157, 157, 158,
766
+ 158, 158, 158, 158, 158, 158, 158, 158,
767
+ 158, 158, 158, 158, 158, 158, 158, 161,
768
+ 158, 157, 157, 157, 158, 158, 158, 158,
769
+ 158, 158, 158, 158, 158, 158, 158, 158,
770
+ 158, 158, 158, 158, 158, 158, 158, 158,
768
771
  158, 158, 158, 158, 158, 158, 158, 158,
769
772
  158, 158, 158, 158, 158, 158, 158, 158,
770
- 159, 158, 161, 160, 160, 160, 160, 160,
771
- 160, 160, 160, 160, 160, 160, 160, 160,
772
- 160, 160, 160, 160, 160, 160, 161, 160,
773
- 163, 162, 162, 162, 162, 162, 162, 162,
773
+ 158, 158, 158, 158, 158, 158, 158, 158,
774
+ 158, 158, 158, 158, 158, 158, 158, 158,
775
+ 158, 158, 158, 158, 158, 158, 158, 158,
776
+ 158, 158, 158, 157, 158, 163, 162, 162,
774
777
  162, 162, 162, 162, 162, 162, 162, 162,
775
- 162, 162, 162, 162, 163, 162, 165, 165,
776
- 164, 164, 164, 164, 165, 164, 164, 164,
777
- 166, 164, 164, 164, 164, 164, 164, 164,
778
- 164, 164, 164, 164, 164, 164, 164, 165,
779
- 164, 164, 164, 164, 164, 164, 164, 165,
780
- 164, 164, 164, 164, 167, 164, 164, 164,
781
- 167, 164, 164, 164, 164, 164, 164, 164,
778
+ 162, 162, 162, 162, 162, 162, 162, 162,
779
+ 162, 163, 162, 165, 164, 164, 164, 164,
780
+ 164, 164, 164, 164, 164, 164, 164, 164,
782
781
  164, 164, 164, 164, 164, 164, 164, 165,
783
- 164, 169, 168, 168, 168, 168, 168, 168,
782
+ 164, 167, 166, 166, 166, 166, 166, 166,
783
+ 166, 166, 166, 166, 166, 166, 166, 166,
784
+ 166, 166, 166, 166, 166, 167, 166, 169,
785
+ 169, 168, 168, 168, 168, 169, 168, 168,
786
+ 168, 170, 168, 168, 168, 168, 168, 168,
787
+ 168, 168, 168, 168, 168, 168, 168, 168,
788
+ 169, 168, 168, 168, 168, 168, 168, 168,
789
+ 169, 168, 168, 168, 168, 171, 168, 168,
790
+ 168, 171, 168, 168, 168, 168, 168, 168,
784
791
  168, 168, 168, 168, 168, 168, 168, 168,
785
- 168, 168, 168, 168, 168, 169, 168, 170,
786
- 36, 36, 36, 170, 36, 36, 36, 36,
787
- 36, 36, 36, 36, 36, 170, 170, 36,
788
- 36, 36, 170, 170, 36, 36, 36, 36,
789
- 36, 36, 36, 36, 36, 36, 36, 170,
790
- 36, 36, 36, 170, 36, 36, 36, 36,
791
- 36, 36, 36, 36, 36, 36, 170, 36,
792
- 36, 36, 170, 36, 171, 36, 36, 36,
793
- 36, 36, 36, 36, 36, 36, 36, 36,
794
- 36, 36, 36, 36, 36, 36, 36, 36,
795
- 36, 36, 36, 36, 36, 36, 36, 36,
796
- 36, 36, 36, 36, 171, 36, 172, 172,
797
- 172, 172, 172, 172, 172, 172, 172, 172,
798
- 172, 172, 172, 172, 172, 172, 172, 172,
799
- 172, 172, 172, 172, 172, 172, 172, 172,
800
- 172, 172, 172, 172, 173, 173, 173, 173,
801
- 173, 173, 173, 173, 173, 173, 173, 173,
802
- 173, 173, 173, 173, 174, 174, 174, 174,
803
- 174, 41, 41, 41, 41, 41, 41, 41,
804
- 41, 41, 41, 41, 41, 41, 41, 41,
805
- 41, 41, 41, 41, 41, 41, 41, 41,
806
- 41, 41, 41, 41, 41, 41, 41, 41,
807
- 41, 41, 41, 41, 41, 41, 41, 41,
808
- 41, 41, 41, 41, 41, 41, 41, 41,
809
- 175, 41, 176, 41, 175, 175, 175, 175,
810
- 41, 177, 175, 41, 41, 41, 41, 41,
811
- 41, 41, 41, 41, 41, 41, 41, 41,
812
- 41, 41, 41, 175, 41, 41, 41, 41,
813
- 41, 41, 41, 41, 41, 41, 41, 41,
814
- 41, 41, 41, 41, 41, 41, 41, 41,
815
- 41, 41, 41, 41, 41, 41, 41, 178,
816
- 179, 180, 181, 41, 41, 41, 41, 41,
817
- 41, 41, 41, 41, 41, 41, 41, 41,
818
- 41, 41, 41, 41, 41, 41, 41, 41,
819
- 41, 41, 41, 41, 41, 41, 41, 175,
820
- 175, 175, 41, 41, 41, 41, 41, 41,
821
- 41, 41, 41, 41, 41, 41, 41, 41,
822
- 41, 41, 41, 41, 41, 41, 41, 41,
823
- 41, 41, 41, 41, 41, 41, 41, 41,
824
- 41, 41, 41, 41, 41, 41, 41, 41,
825
- 41, 41, 41, 41, 41, 41, 41, 41,
826
- 41, 41, 41, 41, 41, 41, 41, 41,
827
- 41, 41, 41, 41, 41, 41, 41, 41,
828
- 41, 41, 41, 182, 42, 42, 42, 42,
829
- 42, 42, 42, 42, 42, 42, 42, 42,
830
- 42, 42, 42, 42, 42, 42, 42, 42,
831
- 42, 42, 42, 42, 42, 42, 42, 42,
832
- 42, 42, 42, 42, 42, 42, 42, 42,
833
- 42, 42, 42, 42, 42, 42, 42, 42,
834
- 42, 42, 42, 42, 42, 42, 42, 42,
835
- 42, 42, 42, 42, 42, 42, 42, 42,
836
- 42, 42, 42, 42, 182, 183, 183, 183,
837
- 183, 183, 183, 183, 183, 183, 183, 183,
838
- 183, 183, 183, 183, 183, 183, 183, 183,
839
- 183, 183, 183, 183, 183, 183, 183, 183,
840
- 183, 183, 183, 183, 183, 183, 183, 183,
841
- 183, 183, 183, 183, 183, 183, 183, 183,
842
- 183, 183, 183, 183, 183, 183, 183, 183,
843
- 183, 183, 183, 183, 183, 183, 183, 183,
844
- 183, 183, 183, 183, 183, 182, 184, 182,
845
- 186, 185, 185, 185, 185, 185, 185, 185,
846
- 185, 185, 185, 185, 185, 185, 185, 185,
847
- 185, 185, 185, 185, 185, 185, 185, 185,
848
- 185, 185, 185, 185, 185, 185, 185, 185,
849
- 185, 185, 185, 185, 185, 185, 185, 185,
850
- 185, 185, 185, 185, 185, 185, 185, 185,
851
- 185, 185, 185, 185, 185, 185, 185, 187,
852
- 185, 190, 189, 189, 189, 189, 189, 189,
853
- 189, 189, 189, 189, 189, 191, 189, 189,
854
- 192, 189, 194, 194, 194, 194, 194, 194,
855
- 194, 194, 194, 194, 193, 193, 193, 193,
856
- 193, 193, 193, 194, 194, 194, 193, 193,
857
- 193, 194, 193, 193, 193, 194, 193, 194,
858
- 193, 193, 193, 193, 194, 193, 193, 193,
859
- 193, 193, 194, 193, 194, 193, 193, 193,
860
- 193, 193, 193, 193, 193, 194, 193, 193,
861
- 193, 194, 193, 193, 193, 194, 193, 193,
862
- 193, 193, 193, 193, 193, 193, 193, 193,
863
- 193, 193, 193, 193, 194, 193, 196, 195,
864
- 195, 195, 196, 196, 196, 196, 195, 195,
865
- 196, 195, 197, 198, 198, 198, 198, 198,
866
- 198, 198, 199, 199, 195, 195, 195, 195,
867
- 195, 196, 195, 36, 36, 200, 201, 195,
868
- 195, 36, 201, 195, 195, 36, 195, 202,
869
- 195, 195, 203, 195, 201, 201, 195, 195,
870
- 195, 201, 201, 195, 36, 196, 196, 196,
871
- 196, 195, 195, 204, 204, 101, 201, 204,
872
- 204, 36, 201, 195, 195, 36, 195, 195,
873
- 204, 195, 203, 195, 204, 201, 204, 205,
874
- 204, 201, 206, 195, 36, 196, 196, 196,
875
- 195, 208, 208, 208, 208, 208, 208, 208,
876
- 208, 207, 210, 210, 210, 210, 210, 210,
877
- 210, 210, 209, 212, 102, 214, 213, 102,
878
- 216, 107, 107, 107, 107, 107, 107, 107,
792
+ 169, 168, 173, 172, 172, 172, 31, 31,
793
+ 31, 31, 31, 31, 31, 31, 31, 31,
794
+ 172, 175, 174, 174, 174, 174, 174, 174,
795
+ 174, 174, 174, 174, 174, 174, 174, 174,
796
+ 174, 174, 174, 174, 174, 175, 174, 176,
797
+ 33, 33, 33, 176, 33, 33, 33, 33,
798
+ 33, 33, 33, 33, 33, 176, 176, 33,
799
+ 33, 33, 176, 176, 33, 33, 33, 33,
800
+ 33, 33, 33, 33, 33, 33, 33, 176,
801
+ 33, 33, 33, 176, 33, 33, 33, 33,
802
+ 33, 33, 33, 33, 33, 33, 176, 33,
803
+ 33, 33, 176, 33, 177, 33, 33, 33,
804
+ 33, 33, 33, 33, 33, 33, 33, 33,
805
+ 33, 33, 33, 33, 33, 33, 33, 33,
806
+ 33, 33, 33, 33, 33, 33, 33, 33,
807
+ 33, 33, 33, 33, 177, 33, 178, 178,
808
+ 178, 178, 178, 178, 178, 178, 178, 178,
809
+ 178, 178, 178, 178, 178, 178, 178, 178,
810
+ 178, 178, 178, 178, 178, 178, 178, 178,
811
+ 178, 178, 178, 178, 179, 179, 179, 179,
812
+ 179, 179, 179, 179, 179, 179, 179, 179,
813
+ 179, 179, 179, 179, 180, 180, 180, 180,
814
+ 180, 38, 38, 38, 38, 38, 38, 38,
815
+ 38, 38, 38, 38, 38, 38, 38, 38,
816
+ 38, 38, 38, 38, 38, 38, 38, 38,
817
+ 38, 38, 38, 38, 38, 38, 38, 38,
818
+ 38, 38, 38, 38, 38, 38, 38, 38,
819
+ 38, 38, 38, 38, 38, 38, 38, 38,
820
+ 181, 38, 182, 38, 181, 181, 181, 181,
821
+ 38, 183, 181, 38, 38, 38, 38, 38,
822
+ 38, 38, 38, 38, 38, 38, 38, 38,
823
+ 38, 38, 38, 181, 38, 38, 38, 38,
824
+ 38, 38, 38, 38, 38, 38, 38, 38,
825
+ 38, 38, 38, 38, 38, 38, 38, 38,
826
+ 38, 38, 38, 38, 38, 38, 38, 184,
827
+ 185, 186, 187, 38, 38, 38, 38, 38,
828
+ 38, 38, 38, 38, 38, 38, 38, 38,
829
+ 38, 38, 38, 38, 38, 38, 38, 38,
830
+ 38, 38, 38, 38, 38, 38, 38, 181,
831
+ 181, 181, 38, 38, 38, 38, 38, 38,
832
+ 38, 38, 38, 38, 38, 38, 38, 38,
833
+ 38, 38, 38, 38, 38, 38, 38, 38,
834
+ 38, 38, 38, 38, 38, 38, 38, 38,
835
+ 38, 38, 38, 38, 38, 38, 38, 38,
836
+ 38, 38, 38, 38, 38, 38, 38, 38,
837
+ 38, 38, 38, 38, 38, 38, 38, 38,
838
+ 38, 38, 38, 38, 38, 38, 38, 38,
839
+ 38, 38, 38, 188, 39, 39, 39, 39,
840
+ 39, 39, 39, 39, 39, 39, 39, 39,
841
+ 39, 39, 39, 39, 39, 39, 39, 39,
842
+ 39, 39, 39, 39, 39, 39, 39, 39,
843
+ 39, 39, 39, 39, 39, 39, 39, 39,
844
+ 39, 39, 39, 39, 39, 39, 39, 39,
845
+ 39, 39, 39, 39, 39, 39, 39, 39,
846
+ 39, 39, 39, 39, 39, 39, 39, 39,
847
+ 39, 39, 39, 39, 188, 189, 189, 189,
848
+ 189, 189, 189, 189, 189, 189, 189, 189,
849
+ 189, 189, 189, 189, 189, 189, 189, 189,
850
+ 189, 189, 189, 189, 189, 189, 189, 189,
851
+ 189, 189, 189, 189, 189, 189, 189, 189,
852
+ 189, 189, 189, 189, 189, 189, 189, 189,
853
+ 189, 189, 189, 189, 189, 189, 189, 189,
854
+ 189, 189, 189, 189, 189, 189, 189, 189,
855
+ 189, 189, 189, 189, 189, 188, 190, 188,
856
+ 192, 191, 191, 191, 191, 191, 191, 191,
857
+ 191, 191, 191, 191, 191, 191, 191, 191,
858
+ 191, 191, 191, 191, 191, 191, 191, 191,
859
+ 191, 191, 191, 191, 191, 191, 191, 191,
860
+ 191, 191, 191, 191, 191, 191, 191, 191,
861
+ 191, 191, 191, 191, 191, 191, 191, 191,
862
+ 191, 191, 191, 191, 191, 191, 191, 193,
863
+ 191, 196, 195, 195, 195, 195, 195, 195,
864
+ 195, 195, 195, 195, 195, 197, 195, 195,
865
+ 198, 195, 200, 200, 200, 200, 200, 200,
866
+ 200, 200, 200, 200, 199, 199, 199, 199,
867
+ 199, 199, 199, 200, 200, 200, 199, 199,
868
+ 199, 200, 199, 199, 199, 200, 199, 200,
869
+ 199, 199, 199, 199, 200, 199, 199, 199,
870
+ 199, 199, 200, 199, 200, 199, 199, 199,
871
+ 199, 199, 199, 199, 199, 200, 199, 199,
872
+ 199, 200, 199, 199, 199, 200, 199, 199,
873
+ 199, 199, 199, 199, 199, 199, 199, 199,
874
+ 199, 199, 199, 199, 200, 199, 201, 201,
875
+ 201, 201, 201, 201, 201, 201, 201, 201,
876
+ 201, 201, 201, 201, 201, 201, 201, 201,
877
+ 201, 201, 201, 201, 201, 201, 201, 201,
878
+ 201, 201, 201, 201, 202, 202, 202, 202,
879
+ 202, 202, 202, 202, 202, 202, 202, 202,
880
+ 202, 202, 202, 202, 203, 203, 203, 203,
881
+ 203, 99, 99, 99, 99, 99, 99, 99,
882
+ 99, 99, 99, 99, 99, 99, 99, 99,
883
+ 99, 99, 99, 99, 99, 99, 99, 99,
884
+ 99, 99, 99, 99, 99, 99, 99, 99,
885
+ 99, 99, 99, 99, 99, 99, 99, 99,
886
+ 99, 99, 99, 99, 99, 99, 99, 99,
887
+ 204, 99, 99, 99, 204, 204, 204, 204,
888
+ 99, 99, 204, 99, 205, 206, 206, 206,
889
+ 206, 206, 206, 206, 207, 207, 99, 99,
890
+ 99, 99, 99, 204, 99, 33, 33, 208,
891
+ 209, 99, 99, 33, 209, 99, 99, 33,
892
+ 99, 210, 99, 99, 211, 99, 209, 209,
893
+ 99, 99, 99, 209, 209, 99, 33, 204,
894
+ 204, 204, 204, 99, 99, 212, 212, 101,
895
+ 209, 212, 212, 99, 209, 99, 99, 99,
896
+ 99, 99, 212, 99, 211, 99, 212, 209,
897
+ 212, 213, 212, 209, 214, 99, 33, 204,
898
+ 204, 204, 99, 99, 99, 99, 99, 99,
899
+ 99, 99, 99, 99, 99, 99, 99, 99,
900
+ 99, 99, 99, 99, 99, 99, 99, 99,
901
+ 99, 99, 99, 99, 99, 99, 99, 99,
902
+ 99, 99, 99, 99, 99, 99, 99, 99,
903
+ 99, 99, 99, 99, 99, 99, 99, 99,
904
+ 99, 99, 99, 99, 99, 99, 99, 99,
905
+ 99, 99, 99, 99, 99, 99, 99, 99,
906
+ 99, 99, 99, 215, 100, 100, 100, 100,
907
+ 100, 100, 100, 100, 100, 100, 100, 100,
908
+ 100, 100, 100, 100, 100, 100, 100, 100,
909
+ 100, 100, 100, 100, 100, 100, 100, 100,
910
+ 100, 100, 100, 100, 100, 100, 100, 100,
911
+ 100, 100, 100, 100, 100, 100, 100, 100,
912
+ 100, 100, 100, 100, 100, 100, 100, 100,
913
+ 100, 100, 100, 100, 100, 100, 100, 100,
914
+ 100, 100, 100, 100, 215, 216, 216, 216,
915
+ 216, 216, 216, 216, 216, 216, 216, 216,
916
+ 216, 216, 216, 216, 216, 216, 216, 216,
917
+ 216, 216, 216, 216, 216, 216, 216, 216,
918
+ 216, 216, 216, 216, 216, 216, 216, 216,
919
+ 216, 216, 216, 216, 216, 216, 216, 216,
920
+ 216, 216, 216, 216, 216, 216, 216, 216,
921
+ 216, 216, 216, 216, 216, 216, 216, 216,
922
+ 216, 216, 216, 216, 216, 215, 218, 218,
923
+ 218, 218, 218, 218, 218, 218, 217, 220,
924
+ 220, 220, 220, 220, 220, 220, 220, 219,
925
+ 222, 102, 224, 223, 102, 226, 107, 107,
879
926
  107, 107, 107, 107, 107, 107, 107, 107,
880
927
  107, 107, 107, 107, 107, 107, 107, 107,
881
928
  107, 107, 107, 107, 107, 107, 107, 107,
882
- 217, 107, 219, 218, 107, 110, 107, 222,
883
- 222, 222, 222, 222, 222, 222, 222, 222,
884
- 222, 221, 221, 221, 221, 221, 221, 221,
885
- 222, 222, 222, 222, 222, 222, 221, 221,
886
- 221, 221, 221, 221, 221, 221, 221, 221,
887
- 221, 221, 221, 221, 221, 221, 221, 221,
888
- 221, 221, 221, 221, 221, 221, 221, 221,
889
- 222, 222, 222, 222, 222, 222, 221, 224,
890
- 223, 223, 223, 223, 223, 225, 223, 223,
891
- 223, 226, 226, 226, 226, 226, 226, 226,
892
- 226, 226, 223, 223, 227, 223, 126, 228,
893
- 228, 228, 228, 228, 228, 228, 228, 127,
894
- 127, 127, 127, 127, 127, 127, 127, 127,
895
- 127, 228, 228, 228, 228, 228, 228, 228,
896
- 127, 127, 127, 127, 127, 127, 127, 127,
897
- 127, 127, 127, 127, 127, 127, 127, 127,
929
+ 107, 107, 107, 107, 107, 227, 107, 229,
930
+ 228, 107, 110, 107, 232, 232, 232, 232,
931
+ 232, 232, 232, 232, 232, 232, 231, 231,
932
+ 231, 231, 231, 231, 231, 232, 232, 232,
933
+ 232, 232, 232, 231, 231, 231, 231, 231,
934
+ 231, 231, 231, 231, 231, 231, 231, 231,
935
+ 231, 231, 231, 231, 231, 231, 231, 231,
936
+ 231, 231, 231, 231, 231, 232, 232, 232,
937
+ 232, 232, 232, 231, 234, 233, 233, 233,
938
+ 233, 233, 235, 233, 233, 233, 236, 236,
939
+ 236, 236, 236, 236, 236, 236, 236, 233,
940
+ 233, 237, 233, 126, 238, 238, 238, 238,
941
+ 238, 238, 238, 238, 127, 127, 127, 127,
942
+ 127, 127, 127, 127, 127, 127, 238, 238,
943
+ 238, 238, 238, 238, 238, 127, 127, 127,
898
944
  127, 127, 127, 127, 127, 127, 127, 127,
899
- 127, 127, 228, 228, 228, 228, 127, 228,
900
945
  127, 127, 127, 127, 127, 127, 127, 127,
946
+ 127, 127, 127, 127, 127, 127, 127, 238,
947
+ 238, 238, 238, 127, 238, 127, 127, 127,
901
948
  127, 127, 127, 127, 127, 127, 127, 127,
902
949
  127, 127, 127, 127, 127, 127, 127, 127,
903
- 127, 127, 228, 128, 128, 128, 128, 128,
904
- 128, 128, 128, 128, 228, 125, 228, 228,
905
- 228, 228, 228, 228, 128, 128, 128, 128,
906
- 128, 128, 128, 128, 128, 128, 228, 129,
950
+ 127, 127, 127, 127, 127, 127, 127, 238,
951
+ 128, 128, 128, 128, 128, 128, 128, 128,
952
+ 128, 238, 125, 238, 238, 238, 238, 238,
953
+ 238, 128, 128, 128, 128, 128, 128, 128,
954
+ 128, 128, 128, 238, 129, 129, 129, 129,
955
+ 129, 129, 129, 129, 129, 129, 238, 238,
956
+ 238, 238, 126, 238, 238, 129, 129, 129,
907
957
  129, 129, 129, 129, 129, 129, 129, 129,
908
- 129, 228, 228, 228, 228, 126, 228, 228,
909
958
  129, 129, 129, 129, 129, 129, 129, 129,
959
+ 129, 129, 129, 129, 129, 129, 129, 238,
960
+ 238, 238, 238, 129, 238, 129, 129, 129,
910
961
  129, 129, 129, 129, 129, 129, 129, 129,
911
962
  129, 129, 129, 129, 129, 129, 129, 129,
912
- 129, 129, 228, 228, 228, 228, 129, 228,
913
- 129, 129, 129, 129, 129, 129, 129, 129,
914
- 129, 129, 129, 129, 129, 129, 129, 129,
915
- 129, 129, 129, 129, 129, 129, 129, 129,
916
- 129, 129, 228, 0
963
+ 129, 129, 129, 129, 129, 129, 129, 238,
964
+ 0
917
965
  ]
918
966
 
919
967
  class << self
@@ -921,35 +969,36 @@ class << self
921
969
  private :_re_scanner_trans_targs, :_re_scanner_trans_targs=
922
970
  end
923
971
  self._re_scanner_trans_targs = [
924
- 110, 111, 3, 112, 5, 6, 113, 110,
925
- 7, 110, 110, 8, 110, 110, 9, 110,
926
- 11, 110, 13, 19, 110, 14, 16, 18,
927
- 15, 17, 20, 22, 24, 21, 23, 0,
928
- 26, 25, 126, 28, 0, 29, 30, 128,
929
- 129, 129, 31, 129, 129, 129, 129, 35,
930
- 36, 129, 38, 39, 50, 54, 58, 62,
931
- 66, 70, 75, 79, 81, 84, 40, 47,
932
- 41, 45, 42, 43, 44, 129, 46, 48,
933
- 49, 51, 52, 53, 55, 56, 57, 59,
934
- 60, 61, 63, 64, 65, 67, 68, 69,
935
- 71, 73, 72, 74, 76, 77, 78, 80,
936
- 82, 83, 86, 87, 129, 89, 137, 140,
937
- 137, 142, 92, 137, 143, 137, 145, 95,
938
- 98, 96, 97, 137, 99, 100, 101, 102,
939
- 103, 104, 137, 147, 148, 148, 106, 107,
940
- 108, 109, 1, 2, 4, 114, 115, 116,
941
- 117, 118, 110, 119, 110, 122, 123, 110,
942
- 124, 110, 125, 110, 110, 110, 110, 110,
943
- 120, 110, 121, 110, 10, 110, 110, 110,
944
- 110, 110, 110, 110, 110, 110, 110, 12,
945
- 110, 110, 127, 27, 130, 131, 132, 129,
946
- 133, 134, 135, 129, 129, 129, 129, 32,
947
- 129, 129, 33, 129, 129, 129, 34, 37,
948
- 85, 136, 136, 137, 137, 138, 138, 137,
949
- 88, 137, 91, 137, 137, 94, 105, 137,
950
- 139, 137, 137, 137, 141, 137, 90, 137,
951
- 144, 146, 137, 93, 137, 137, 137, 148,
952
- 149, 150, 151, 152, 148
972
+ 112, 113, 3, 114, 5, 6, 115, 112,
973
+ 7, 112, 112, 8, 112, 10, 112, 12,
974
+ 18, 112, 13, 15, 17, 14, 16, 19,
975
+ 21, 23, 20, 22, 112, 25, 129, 26,
976
+ 28, 0, 29, 30, 131, 132, 132, 31,
977
+ 132, 132, 132, 132, 35, 36, 132, 38,
978
+ 39, 50, 54, 58, 62, 66, 70, 75,
979
+ 79, 81, 84, 40, 47, 41, 45, 42,
980
+ 43, 44, 132, 46, 48, 49, 51, 52,
981
+ 53, 55, 56, 57, 59, 60, 61, 63,
982
+ 64, 65, 67, 68, 69, 71, 73, 72,
983
+ 74, 76, 77, 78, 80, 82, 83, 86,
984
+ 87, 132, 140, 140, 88, 91, 140, 146,
985
+ 140, 148, 94, 140, 149, 140, 151, 97,
986
+ 100, 98, 99, 140, 101, 102, 103, 104,
987
+ 105, 106, 140, 153, 154, 154, 108, 109,
988
+ 110, 111, 1, 2, 4, 116, 117, 118,
989
+ 119, 120, 112, 121, 112, 124, 125, 112,
990
+ 126, 112, 127, 112, 112, 128, 112, 112,
991
+ 112, 112, 112, 112, 122, 112, 123, 112,
992
+ 9, 112, 112, 112, 112, 112, 112, 112,
993
+ 112, 112, 112, 11, 112, 24, 112, 112,
994
+ 130, 27, 133, 134, 135, 132, 136, 137,
995
+ 138, 132, 132, 132, 132, 32, 132, 132,
996
+ 33, 132, 132, 132, 34, 37, 85, 139,
997
+ 139, 141, 142, 143, 140, 144, 144, 140,
998
+ 90, 140, 93, 140, 140, 96, 107, 140,
999
+ 89, 140, 145, 140, 140, 140, 147, 140,
1000
+ 92, 140, 150, 152, 140, 95, 140, 140,
1001
+ 140, 154, 155, 156, 157, 158, 154
953
1002
  ]
954
1003
 
955
1004
  class << self
@@ -958,34 +1007,35 @@ class << self
958
1007
  end
959
1008
  self._re_scanner_trans_actions = [
960
1009
  1, 2, 0, 2, 0, 0, 2, 3,
961
- 0, 4, 5, 6, 7, 8, 0, 9,
962
- 0, 10, 0, 0, 11, 0, 0, 0,
963
- 0, 0, 0, 0, 0, 0, 0, 12,
964
- 0, 0, 0, 0, 0, 0, 0, 14,
965
- 15, 16, 0, 17, 18, 19, 20, 0,
966
- 0, 21, 0, 0, 0, 0, 0, 0,
1010
+ 4, 5, 6, 0, 7, 0, 8, 0,
1011
+ 0, 9, 0, 0, 0, 0, 0, 0,
1012
+ 0, 0, 0, 0, 10, 0, 0, 0,
1013
+ 0, 0, 0, 0, 12, 13, 14, 0,
1014
+ 15, 16, 17, 18, 0, 0, 19, 0,
967
1015
  0, 0, 0, 0, 0, 0, 0, 0,
968
- 0, 0, 0, 0, 0, 22, 0, 0,
969
1016
  0, 0, 0, 0, 0, 0, 0, 0,
1017
+ 0, 0, 20, 0, 0, 0, 0, 0,
970
1018
  0, 0, 0, 0, 0, 0, 0, 0,
971
1019
  0, 0, 0, 0, 0, 0, 0, 0,
972
- 0, 0, 0, 0, 23, 0, 24, 0,
973
- 25, 0, 0, 26, 0, 27, 0, 0,
974
- 0, 0, 0, 28, 0, 0, 0, 0,
975
- 0, 0, 29, 0, 30, 31, 0, 0,
976
1020
  0, 0, 0, 0, 0, 0, 0, 0,
977
- 0, 34, 35, 36, 37, 0, 0, 38,
978
- 0, 39, 34, 40, 41, 42, 43, 44,
979
- 45, 46, 0, 47, 0, 48, 49, 50,
980
- 51, 52, 53, 54, 55, 56, 57, 0,
981
- 58, 59, 61, 0, 0, 34, 34, 62,
982
- 0, 34, 63, 64, 65, 66, 67, 0,
983
- 68, 69, 0, 70, 71, 72, 0, 0,
984
- 0, 73, 74, 75, 76, 77, 78, 79,
985
- 0, 80, 0, 81, 82, 0, 0, 83,
986
- 0, 84, 85, 86, 34, 87, 0, 88,
987
- 34, 0, 89, 0, 90, 91, 92, 93,
988
- 34, 34, 34, 34, 94
1021
+ 0, 21, 22, 23, 0, 0, 25, 0,
1022
+ 26, 0, 0, 27, 0, 28, 0, 0,
1023
+ 0, 0, 0, 29, 0, 0, 0, 0,
1024
+ 0, 0, 30, 0, 31, 32, 0, 0,
1025
+ 0, 0, 0, 0, 0, 0, 0, 0,
1026
+ 0, 0, 35, 36, 37, 0, 0, 38,
1027
+ 0, 39, 40, 41, 42, 40, 43, 44,
1028
+ 45, 46, 47, 48, 49, 50, 0, 51,
1029
+ 0, 52, 53, 54, 55, 56, 57, 58,
1030
+ 59, 60, 61, 0, 62, 0, 63, 64,
1031
+ 66, 0, 0, 40, 40, 67, 0, 40,
1032
+ 68, 69, 70, 71, 72, 0, 73, 74,
1033
+ 0, 75, 76, 77, 0, 0, 0, 78,
1034
+ 79, 0, 40, 40, 80, 81, 82, 83,
1035
+ 0, 84, 0, 85, 86, 0, 0, 87,
1036
+ 0, 88, 0, 89, 90, 91, 40, 92,
1037
+ 0, 93, 40, 0, 94, 0, 95, 96,
1038
+ 97, 98, 40, 40, 40, 40, 99
989
1039
  ]
990
1040
 
991
1041
  class << self
@@ -1006,13 +1056,13 @@ self._re_scanner_to_state_actions = [
1006
1056
  0, 0, 0, 0, 0, 0, 0, 0,
1007
1057
  0, 0, 0, 0, 0, 0, 0, 0,
1008
1058
  0, 0, 0, 0, 0, 0, 0, 0,
1009
- 0, 0, 0, 0, 0, 0, 32, 0,
1010
1059
  0, 0, 0, 0, 0, 0, 0, 0,
1011
- 0, 0, 0, 0, 0, 0, 0, 60,
1012
- 60, 60, 0, 0, 0, 0, 0, 0,
1013
- 60, 60, 0, 0, 0, 0, 0, 0,
1014
- 0, 0, 0, 0, 60, 0, 0, 0,
1015
- 0
1060
+ 33, 0, 0, 0, 0, 0, 0, 0,
1061
+ 0, 0, 0, 0, 0, 0, 0, 0,
1062
+ 0, 0, 65, 65, 65, 0, 0, 0,
1063
+ 0, 0, 0, 65, 65, 0, 0, 0,
1064
+ 0, 0, 0, 0, 0, 0, 0, 0,
1065
+ 0, 0, 65, 0, 0, 0, 0
1016
1066
  ]
1017
1067
 
1018
1068
  class << self
@@ -1033,13 +1083,13 @@ self._re_scanner_from_state_actions = [
1033
1083
  0, 0, 0, 0, 0, 0, 0, 0,
1034
1084
  0, 0, 0, 0, 0, 0, 0, 0,
1035
1085
  0, 0, 0, 0, 0, 0, 0, 0,
1036
- 0, 0, 0, 0, 0, 0, 33, 0,
1037
1086
  0, 0, 0, 0, 0, 0, 0, 0,
1038
- 0, 0, 0, 0, 0, 0, 0, 33,
1039
- 33, 33, 0, 0, 0, 0, 0, 0,
1040
- 33, 33, 0, 0, 0, 0, 0, 0,
1041
- 0, 0, 0, 0, 33, 0, 0, 0,
1042
- 0
1087
+ 34, 0, 0, 0, 0, 0, 0, 0,
1088
+ 0, 0, 0, 0, 0, 0, 0, 0,
1089
+ 0, 0, 34, 34, 34, 0, 0, 0,
1090
+ 0, 0, 0, 34, 34, 0, 0, 0,
1091
+ 0, 0, 0, 0, 0, 0, 0, 0,
1092
+ 0, 0, 34, 0, 0, 0, 0
1043
1093
  ]
1044
1094
 
1045
1095
  class << self
@@ -1050,7 +1100,7 @@ self._re_scanner_eof_actions = [
1050
1100
  0, 0, 0, 0, 0, 0, 0, 0,
1051
1101
  0, 0, 0, 0, 0, 0, 0, 0,
1052
1102
  0, 0, 0, 0, 0, 0, 0, 0,
1053
- 0, 12, 12, 13, 13, 13, 13, 0,
1103
+ 0, 0, 0, 11, 11, 11, 11, 0,
1054
1104
  0, 0, 0, 0, 0, 0, 0, 0,
1055
1105
  0, 0, 0, 0, 0, 0, 0, 0,
1056
1106
  0, 0, 0, 0, 0, 0, 0, 0,
@@ -1058,15 +1108,15 @@ self._re_scanner_eof_actions = [
1058
1108
  0, 0, 0, 0, 0, 0, 0, 0,
1059
1109
  0, 0, 0, 0, 0, 0, 0, 0,
1060
1110
  0, 0, 0, 0, 0, 0, 0, 0,
1061
- 12, 12, 0, 12, 12, 0, 12, 12,
1062
- 12, 12, 12, 12, 12, 12, 12, 12,
1063
- 12, 12, 0, 0, 0, 0, 0, 0,
1111
+ 0, 0, 24, 24, 0, 24, 24, 0,
1112
+ 24, 24, 24, 24, 24, 24, 24, 24,
1113
+ 24, 24, 24, 24, 0, 0, 0, 0,
1064
1114
  0, 0, 0, 0, 0, 0, 0, 0,
1065
1115
  0, 0, 0, 0, 0, 0, 0, 0,
1066
- 0, 12, 0, 0, 0, 0, 0, 0,
1067
- 0, 12, 0, 0, 0, 0, 0, 0,
1116
+ 0, 0, 0, 0, 24, 0, 0, 0,
1117
+ 0, 0, 0, 0, 24, 0, 0, 0,
1068
1118
  0, 0, 0, 0, 0, 0, 0, 0,
1069
- 0
1119
+ 0, 0, 0, 0, 0, 0, 0
1070
1120
  ]
1071
1121
 
1072
1122
  class << self
@@ -1075,35 +1125,35 @@ class << self
1075
1125
  end
1076
1126
  self._re_scanner_eof_trans = [
1077
1127
  0, 1, 1, 1, 1, 1, 1, 8,
1078
- 11, 11, 11, 11, 18, 18, 18, 18,
1079
- 18, 18, 18, 18, 18, 18, 18, 18,
1080
- 18, 0, 0, 0, 0, 0, 0, 41,
1081
- 41, 44, 46, 46, 46, 46, 46, 46,
1082
- 46, 46, 46, 46, 46, 46, 46, 46,
1083
- 46, 46, 46, 46, 46, 46, 46, 46,
1084
- 46, 46, 46, 46, 46, 46, 46, 46,
1085
- 46, 46, 46, 46, 46, 46, 46, 46,
1086
- 46, 46, 46, 46, 46, 46, 46, 46,
1087
- 46, 46, 46, 46, 46, 46, 46, 46,
1088
- 0, 0, 105, 0, 0, 110, 0, 0,
1128
+ 8, 8, 8, 15, 15, 15, 15, 15,
1129
+ 15, 15, 15, 15, 15, 15, 15, 15,
1130
+ 29, 29, 29, 0, 0, 0, 0, 38,
1131
+ 38, 41, 43, 43, 43, 43, 43, 43,
1132
+ 43, 43, 43, 43, 43, 43, 43, 43,
1133
+ 43, 43, 43, 43, 43, 43, 43, 43,
1134
+ 43, 43, 43, 43, 43, 43, 43, 43,
1135
+ 43, 43, 43, 43, 43, 43, 43, 43,
1136
+ 43, 43, 43, 43, 43, 43, 43, 43,
1137
+ 43, 43, 43, 43, 43, 43, 43, 43,
1138
+ 99, 99, 0, 0, 105, 0, 0, 110,
1089
1139
  0, 0, 0, 0, 0, 0, 0, 0,
1090
- 0, 0, 125, 125, 125, 125, 0, 150,
1091
- 150, 150, 150, 151, 151, 150, 150, 152,
1092
- 154, 154, 159, 161, 163, 165, 169, 0,
1093
- 0, 0, 183, 183, 183, 183, 186, 189,
1094
- 0, 0, 208, 210, 212, 212, 212, 216,
1095
- 216, 216, 216, 221, 0, 229, 229, 229,
1096
- 229
1140
+ 0, 0, 0, 0, 125, 125, 125, 125,
1141
+ 0, 152, 152, 152, 152, 153, 153, 152,
1142
+ 154, 156, 158, 158, 163, 165, 167, 169,
1143
+ 173, 175, 0, 0, 0, 189, 189, 189,
1144
+ 189, 192, 195, 0, 0, 216, 216, 216,
1145
+ 218, 220, 222, 222, 222, 226, 226, 226,
1146
+ 226, 231, 0, 239, 239, 239, 239
1097
1147
  ]
1098
1148
 
1099
1149
  class << self
1100
1150
  attr_accessor :re_scanner_start
1101
1151
  end
1102
- self.re_scanner_start = 110;
1152
+ self.re_scanner_start = 112;
1103
1153
  class << self
1104
1154
  attr_accessor :re_scanner_first_final
1105
1155
  end
1106
- self.re_scanner_first_final = 110;
1156
+ self.re_scanner_first_final = 112;
1107
1157
  class << self
1108
1158
  attr_accessor :re_scanner_error
1109
1159
  end
@@ -1112,36 +1162,36 @@ self.re_scanner_error = 0;
1112
1162
  class << self
1113
1163
  attr_accessor :re_scanner_en_char_type
1114
1164
  end
1115
- self.re_scanner_en_char_type = 127;
1165
+ self.re_scanner_en_char_type = 130;
1116
1166
  class << self
1117
1167
  attr_accessor :re_scanner_en_unicode_property
1118
1168
  end
1119
- self.re_scanner_en_unicode_property = 128;
1169
+ self.re_scanner_en_unicode_property = 131;
1120
1170
  class << self
1121
1171
  attr_accessor :re_scanner_en_character_set
1122
1172
  end
1123
- self.re_scanner_en_character_set = 129;
1173
+ self.re_scanner_en_character_set = 132;
1124
1174
  class << self
1125
1175
  attr_accessor :re_scanner_en_set_escape_sequence
1126
1176
  end
1127
- self.re_scanner_en_set_escape_sequence = 136;
1177
+ self.re_scanner_en_set_escape_sequence = 139;
1128
1178
  class << self
1129
1179
  attr_accessor :re_scanner_en_escape_sequence
1130
1180
  end
1131
- self.re_scanner_en_escape_sequence = 137;
1181
+ self.re_scanner_en_escape_sequence = 140;
1132
1182
  class << self
1133
1183
  attr_accessor :re_scanner_en_conditional_expression
1134
1184
  end
1135
- self.re_scanner_en_conditional_expression = 148;
1185
+ self.re_scanner_en_conditional_expression = 154;
1136
1186
  class << self
1137
1187
  attr_accessor :re_scanner_en_main
1138
1188
  end
1139
- self.re_scanner_en_main = 110;
1189
+ self.re_scanner_en_main = 112;
1140
1190
 
1141
1191
 
1142
- # line 753 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1192
+ # line 768 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1143
1193
 
1144
- # line 1144 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
1194
+ # line 1194 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
1145
1195
  begin
1146
1196
  p ||= 0
1147
1197
  pe ||= data.length
@@ -1152,9 +1202,9 @@ begin
1152
1202
  act = 0
1153
1203
  end
1154
1204
 
1155
- # line 754 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1205
+ # line 769 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1156
1206
 
1157
- # line 1157 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
1207
+ # line 1207 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
1158
1208
  begin
1159
1209
  testEof = false
1160
1210
  _slen, _trans, _keys, _inds, _acts, _nacts = nil
@@ -1177,12 +1227,12 @@ begin
1177
1227
  end
1178
1228
  if _goto_level <= _resume
1179
1229
  case _re_scanner_from_state_actions[cs]
1180
- when 33 then
1230
+ when 34 then
1181
1231
  # line 1 "NONE"
1182
1232
  begin
1183
1233
  ts = p
1184
1234
  end
1185
- # line 1185 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
1235
+ # line 1235 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
1186
1236
  end
1187
1237
  _keys = cs << 1
1188
1238
  _inds = _re_scanner_index_offsets[cs]
@@ -1201,42 +1251,35 @@ ts = p
1201
1251
  cs = _re_scanner_trans_targs[_trans]
1202
1252
  if _re_scanner_trans_actions[_trans] != 0
1203
1253
  case _re_scanner_trans_actions[_trans]
1204
- when 12 then
1205
- # line 131 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1206
- begin
1207
-
1208
- text = ts ? copy(data, ts-1..-1) : data.pack('c*')
1209
- raise PrematureEndError.new( text )
1210
- end
1211
1254
  when 36 then
1212
- # line 143 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1255
+ # line 149 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1213
1256
  begin
1214
1257
  self.group_depth = group_depth + 1 end
1215
- when 6 then
1216
- # line 144 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1258
+ when 4 then
1259
+ # line 150 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1217
1260
  begin
1218
1261
  self.group_depth = group_depth - 1 end
1219
- when 34 then
1262
+ when 40 then
1220
1263
  # line 1 "NONE"
1221
1264
  begin
1222
1265
  te = p+1
1223
1266
  end
1224
- when 61 then
1267
+ when 66 then
1225
1268
  # line 12 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/char_type.rl"
1226
1269
  begin
1227
1270
  te = p+1
1228
1271
  begin
1229
- case text = text(data, ts, te, 1).first
1230
- when '\d'; emit(:type, :digit, text, ts - 1, te)
1231
- when '\D'; emit(:type, :nondigit, text, ts - 1, te)
1232
- when '\h'; emit(:type, :hex, text, ts - 1, te)
1233
- when '\H'; emit(:type, :nonhex, text, ts - 1, te)
1234
- when '\s'; emit(:type, :space, text, ts - 1, te)
1235
- when '\S'; emit(:type, :nonspace, text, ts - 1, te)
1236
- when '\w'; emit(:type, :word, text, ts - 1, te)
1237
- when '\W'; emit(:type, :nonword, text, ts - 1, te)
1238
- when '\R'; emit(:type, :linebreak, text, ts - 1, te)
1239
- when '\X'; emit(:type, :xgrapheme, text, ts - 1, te)
1272
+ case text = copy(data, ts-1, te)
1273
+ when '\d'; emit(:type, :digit, text)
1274
+ when '\D'; emit(:type, :nondigit, text)
1275
+ when '\h'; emit(:type, :hex, text)
1276
+ when '\H'; emit(:type, :nonhex, text)
1277
+ when '\s'; emit(:type, :space, text)
1278
+ when '\S'; emit(:type, :nonspace, text)
1279
+ when '\w'; emit(:type, :word, text)
1280
+ when '\W'; emit(:type, :nonword, text)
1281
+ when '\R'; emit(:type, :linebreak, text)
1282
+ when '\X'; emit(:type, :xgrapheme, text)
1240
1283
  end
1241
1284
  begin
1242
1285
  top -= 1
@@ -1247,12 +1290,12 @@ te = p+1
1247
1290
 
1248
1291
  end
1249
1292
  end
1250
- when 14 then
1293
+ when 12 then
1251
1294
  # line 16 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/property.rl"
1252
1295
  begin
1253
1296
  te = p+1
1254
1297
  begin
1255
- text = text(data, ts, te, 1).first
1298
+ text = copy(data, ts-1, te)
1256
1299
  type = (text[1] == 'P') ^ (text[3] == '^') ? :nonproperty : :property
1257
1300
 
1258
1301
  name = data[ts+2..te-2].pack('c*').gsub(/[\^\s_\-]/, '').downcase
@@ -1260,7 +1303,7 @@ te = p+1
1260
1303
  token = self.class.short_prop_map[name] || self.class.long_prop_map[name]
1261
1304
  raise UnknownUnicodePropertyError.new(name) unless token
1262
1305
 
1263
- self.emit(type, token.to_sym, text, ts-1, te)
1306
+ self.emit(type, token.to_sym, text)
1264
1307
 
1265
1308
  begin
1266
1309
  top -= 1
@@ -1271,155 +1314,152 @@ te = p+1
1271
1314
 
1272
1315
  end
1273
1316
  end
1274
- when 18 then
1275
- # line 171 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1317
+ when 16 then
1318
+ # line 177 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1276
1319
  begin
1277
1320
  te = p+1
1278
1321
  begin # special case, emits two tokens
1279
- emit(:literal, :literal, '-', ts, te)
1280
- emit(:set, :intersection, '&&', ts, te)
1322
+ emit(:literal, :literal, '-')
1323
+ emit(:set, :intersection, '&&')
1281
1324
  end
1282
1325
  end
1283
- when 66 then
1284
- # line 176 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1326
+ when 71 then
1327
+ # line 182 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1285
1328
  begin
1286
1329
  te = p+1
1287
1330
  begin
1288
- text = text(data, ts, te).first
1331
+ text = copy(data, ts, te)
1289
1332
  if tokens.last[1] == :open
1290
- emit(:set, :negate, text, ts, te)
1333
+ emit(:set, :negate, text)
1291
1334
  else
1292
- emit(:literal, :literal, text, ts, te)
1335
+ emit(:literal, :literal, text)
1293
1336
  end
1294
1337
  end
1295
1338
  end
1296
- when 68 then
1297
- # line 197 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1339
+ when 73 then
1340
+ # line 203 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1298
1341
  begin
1299
1342
  te = p+1
1300
1343
  begin
1301
- emit(:set, :intersection, *text(data, ts, te))
1344
+ emit(:set, :intersection, copy(data, ts, te))
1302
1345
  end
1303
1346
  end
1304
- when 64 then
1305
- # line 201 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1347
+ when 69 then
1348
+ # line 207 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1306
1349
  begin
1307
1350
  te = p+1
1308
1351
  begin
1309
1352
  begin
1310
1353
  stack[top] = cs
1311
1354
  top+= 1
1312
- cs = 136
1355
+ cs = 139
1313
1356
  _goto_level = _again
1314
1357
  next
1315
1358
  end
1316
1359
 
1317
1360
  end
1318
1361
  end
1319
- when 62 then
1320
- # line 231 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1362
+ when 67 then
1363
+ # line 237 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1321
1364
  begin
1322
1365
  te = p+1
1323
1366
  begin
1324
- emit(:literal, :literal, *text(data, ts, te))
1367
+ emit(:literal, :literal, copy(data, ts, te))
1325
1368
  end
1326
1369
  end
1327
- when 16 then
1328
- # line 239 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1370
+ when 14 then
1371
+ # line 245 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1329
1372
  begin
1330
1373
  te = p+1
1331
1374
  begin
1332
- char, *rest = *text(data, ts, te)
1333
- char.force_encoding('utf-8') if char.respond_to?(:force_encoding)
1334
- emit(:literal, :literal, char, *rest)
1375
+ text = copy(data, ts, te)
1376
+ emit(:literal, :literal, text)
1335
1377
  end
1336
1378
  end
1337
- when 69 then
1338
- # line 185 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1379
+ when 74 then
1380
+ # line 191 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1339
1381
  begin
1340
1382
  te = p
1341
1383
  p = p - 1; begin
1342
- text = text(data, ts, te).first
1384
+ text = copy(data, ts, te)
1343
1385
  # ranges cant start with a subset or intersection/negation/range operator
1344
1386
  if tokens.last[0] == :set
1345
- emit(:literal, :literal, text, ts, te)
1387
+ emit(:literal, :literal, text)
1346
1388
  else
1347
- emit(:set, :range, text, ts, te)
1389
+ emit(:set, :range, text)
1348
1390
  end
1349
1391
  end
1350
1392
  end
1351
- when 72 then
1352
- # line 205 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1393
+ when 77 then
1394
+ # line 211 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1353
1395
  begin
1354
1396
  te = p
1355
1397
  p = p - 1; begin
1356
- emit(:set, :open, *text(data, ts, te))
1398
+ emit(:set, :open, copy(data, ts, te))
1357
1399
  begin
1358
1400
  stack[top] = cs
1359
1401
  top+= 1
1360
- cs = 129
1402
+ cs = 132
1361
1403
  _goto_level = _again
1362
1404
  next
1363
1405
  end
1364
1406
 
1365
1407
  end
1366
1408
  end
1367
- when 67 then
1368
- # line 239 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1409
+ when 72 then
1410
+ # line 245 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1369
1411
  begin
1370
1412
  te = p
1371
1413
  p = p - 1; begin
1372
- char, *rest = *text(data, ts, te)
1373
- char.force_encoding('utf-8') if char.respond_to?(:force_encoding)
1374
- emit(:literal, :literal, char, *rest)
1414
+ text = copy(data, ts, te)
1415
+ emit(:literal, :literal, text)
1375
1416
  end
1376
1417
  end
1377
- when 17 then
1378
- # line 185 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1418
+ when 15 then
1419
+ # line 191 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1379
1420
  begin
1380
1421
  begin p = ((te))-1; end
1381
1422
  begin
1382
- text = text(data, ts, te).first
1423
+ text = copy(data, ts, te)
1383
1424
  # ranges cant start with a subset or intersection/negation/range operator
1384
1425
  if tokens.last[0] == :set
1385
- emit(:literal, :literal, text, ts, te)
1426
+ emit(:literal, :literal, text)
1386
1427
  else
1387
- emit(:set, :range, text, ts, te)
1428
+ emit(:set, :range, text)
1388
1429
  end
1389
1430
  end
1390
1431
  end
1391
- when 20 then
1392
- # line 205 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1432
+ when 18 then
1433
+ # line 211 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1393
1434
  begin
1394
1435
  begin p = ((te))-1; end
1395
1436
  begin
1396
- emit(:set, :open, *text(data, ts, te))
1437
+ emit(:set, :open, copy(data, ts, te))
1397
1438
  begin
1398
1439
  stack[top] = cs
1399
1440
  top+= 1
1400
- cs = 129
1441
+ cs = 132
1401
1442
  _goto_level = _again
1402
1443
  next
1403
1444
  end
1404
1445
 
1405
1446
  end
1406
1447
  end
1407
- when 15 then
1408
- # line 239 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1448
+ when 13 then
1449
+ # line 245 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1409
1450
  begin
1410
1451
  begin p = ((te))-1; end
1411
1452
  begin
1412
- char, *rest = *text(data, ts, te)
1413
- char.force_encoding('utf-8') if char.respond_to?(:force_encoding)
1414
- emit(:literal, :literal, char, *rest)
1453
+ text = copy(data, ts, te)
1454
+ emit(:literal, :literal, text)
1415
1455
  end
1416
1456
  end
1417
- when 74 then
1418
- # line 249 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1457
+ when 79 then
1458
+ # line 254 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1419
1459
  begin
1420
1460
  te = p+1
1421
1461
  begin
1422
- emit(:escape, :literal, *text(data, ts, te, 1))
1462
+ emit(:escape, :literal, copy(data, ts-1, te))
1423
1463
  begin
1424
1464
  top -= 1
1425
1465
  cs = stack[top]
@@ -1429,30 +1469,30 @@ te = p+1
1429
1469
 
1430
1470
  end
1431
1471
  end
1432
- when 73 then
1433
- # line 254 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1472
+ when 78 then
1473
+ # line 259 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1434
1474
  begin
1435
1475
  te = p+1
1436
1476
  begin
1437
1477
  p = p - 1;
1438
- cs = 129;
1478
+ cs = 132;
1439
1479
  begin
1440
1480
  stack[top] = cs
1441
1481
  top+= 1
1442
- cs = 137
1482
+ cs = 140
1443
1483
  _goto_level = _again
1444
1484
  next
1445
1485
  end
1446
1486
 
1447
1487
  end
1448
1488
  end
1449
- when 79 then
1450
- # line 265 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1489
+ when 83 then
1490
+ # line 270 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1451
1491
  begin
1452
1492
  te = p+1
1453
1493
  begin
1454
- text = text(data, ts, te, 1).first
1455
- emit(:backref, :number, text, ts-1, te)
1494
+ text = copy(data, ts-1, te)
1495
+ emit(:backref, :number, text)
1456
1496
  begin
1457
1497
  top -= 1
1458
1498
  cs = stack[top]
@@ -1462,12 +1502,12 @@ te = p+1
1462
1502
 
1463
1503
  end
1464
1504
  end
1465
- when 85 then
1466
- # line 271 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1505
+ when 90 then
1506
+ # line 276 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1467
1507
  begin
1468
1508
  te = p+1
1469
1509
  begin
1470
- emit(:escape, :octal, *text(data, ts, te, 1))
1510
+ emit(:escape, :octal, copy(data, ts-1, te))
1471
1511
  begin
1472
1512
  top -= 1
1473
1513
  cs = stack[top]
@@ -1477,27 +1517,27 @@ te = p+1
1477
1517
 
1478
1518
  end
1479
1519
  end
1480
- when 76 then
1481
- # line 276 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1520
+ when 80 then
1521
+ # line 281 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1482
1522
  begin
1483
1523
  te = p+1
1484
1524
  begin
1485
- case text = text(data, ts, te, 1).first
1486
- when '\.'; emit(:escape, :dot, text, ts-1, te)
1487
- when '\|'; emit(:escape, :alternation, text, ts-1, te)
1488
- when '\^'; emit(:escape, :bol, text, ts-1, te)
1489
- when '\$'; emit(:escape, :eol, text, ts-1, te)
1490
- when '\?'; emit(:escape, :zero_or_one, text, ts-1, te)
1491
- when '\*'; emit(:escape, :zero_or_more, text, ts-1, te)
1492
- when '\+'; emit(:escape, :one_or_more, text, ts-1, te)
1493
- when '\('; emit(:escape, :group_open, text, ts-1, te)
1494
- when '\)'; emit(:escape, :group_close, text, ts-1, te)
1495
- when '\{'; emit(:escape, :interval_open, text, ts-1, te)
1496
- when '\}'; emit(:escape, :interval_close, text, ts-1, te)
1497
- when '\['; emit(:escape, :set_open, text, ts-1, te)
1498
- when '\]'; emit(:escape, :set_close, text, ts-1, te)
1525
+ case text = copy(data, ts-1, te)
1526
+ when '\.'; emit(:escape, :dot, text)
1527
+ when '\|'; emit(:escape, :alternation, text)
1528
+ when '\^'; emit(:escape, :bol, text)
1529
+ when '\$'; emit(:escape, :eol, text)
1530
+ when '\?'; emit(:escape, :zero_or_one, text)
1531
+ when '\*'; emit(:escape, :zero_or_more, text)
1532
+ when '\+'; emit(:escape, :one_or_more, text)
1533
+ when '\('; emit(:escape, :group_open, text)
1534
+ when '\)'; emit(:escape, :group_close, text)
1535
+ when '\{'; emit(:escape, :interval_open, text)
1536
+ when '\}'; emit(:escape, :interval_close, text)
1537
+ when '\['; emit(:escape, :set_open, text)
1538
+ when '\]'; emit(:escape, :set_close, text)
1499
1539
  when "\\\\";
1500
- emit(:escape, :backslash, text, ts-1, te)
1540
+ emit(:escape, :backslash, text)
1501
1541
  end
1502
1542
  begin
1503
1543
  top -= 1
@@ -1508,22 +1548,22 @@ te = p+1
1508
1548
 
1509
1549
  end
1510
1550
  end
1511
- when 82 then
1512
- # line 297 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1551
+ when 86 then
1552
+ # line 302 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1513
1553
  begin
1514
1554
  te = p+1
1515
1555
  begin
1516
1556
  # \b is emitted as backspace only when inside a character set, otherwise
1517
1557
  # it is a word boundary anchor. A syntax might "normalize" it if needed.
1518
- case text = text(data, ts, te, 1).first
1519
- when '\a'; emit(:escape, :bell, text, ts-1, te)
1520
- when '\b'; emit(:escape, :backspace, text, ts-1, te)
1521
- when '\e'; emit(:escape, :escape, text, ts-1, te)
1522
- when '\f'; emit(:escape, :form_feed, text, ts-1, te)
1523
- when '\n'; emit(:escape, :newline, text, ts-1, te)
1524
- when '\r'; emit(:escape, :carriage, text, ts-1, te)
1525
- when '\t'; emit(:escape, :tab, text, ts-1, te)
1526
- when '\v'; emit(:escape, :vertical_tab, text, ts-1, te)
1558
+ case text = copy(data, ts-1, te)
1559
+ when '\a'; emit(:escape, :bell, text)
1560
+ when '\b'; emit(:escape, :backspace, text)
1561
+ when '\e'; emit(:escape, :escape, text)
1562
+ when '\f'; emit(:escape, :form_feed, text)
1563
+ when '\n'; emit(:escape, :newline, text)
1564
+ when '\r'; emit(:escape, :carriage, text)
1565
+ when '\t'; emit(:escape, :tab, text)
1566
+ when '\v'; emit(:escape, :vertical_tab, text)
1527
1567
  end
1528
1568
  begin
1529
1569
  top -= 1
@@ -1534,16 +1574,16 @@ te = p+1
1534
1574
 
1535
1575
  end
1536
1576
  end
1537
- when 28 then
1538
- # line 313 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1577
+ when 29 then
1578
+ # line 318 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1539
1579
  begin
1540
1580
  te = p+1
1541
1581
  begin
1542
- text = text(data, ts, te, 1).first
1582
+ text = copy(data, ts-1, te)
1543
1583
  if text[2].chr == '{'
1544
- emit(:escape, :codepoint_list, text, ts-1, te)
1584
+ emit(:escape, :codepoint_list, text)
1545
1585
  else
1546
- emit(:escape, :codepoint, text, ts-1, te)
1586
+ emit(:escape, :codepoint, text)
1547
1587
  end
1548
1588
  begin
1549
1589
  top -= 1
@@ -1554,12 +1594,12 @@ te = p+1
1554
1594
 
1555
1595
  end
1556
1596
  end
1557
- when 92 then
1558
- # line 323 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1597
+ when 97 then
1598
+ # line 328 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1559
1599
  begin
1560
1600
  te = p+1
1561
1601
  begin
1562
- emit(:escape, :hex, *text(data, ts, te, 1))
1602
+ emit(:escape, :hex, copy(data, ts-1, te))
1563
1603
  begin
1564
1604
  top -= 1
1565
1605
  cs = stack[top]
@@ -1569,8 +1609,8 @@ te = p+1
1569
1609
 
1570
1610
  end
1571
1611
  end
1572
- when 24 then
1573
- # line 332 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1612
+ when 25 then
1613
+ # line 337 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1574
1614
  begin
1575
1615
  te = p+1
1576
1616
  begin
@@ -1584,8 +1624,8 @@ te = p+1
1584
1624
 
1585
1625
  end
1586
1626
  end
1587
- when 26 then
1588
- # line 337 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1627
+ when 27 then
1628
+ # line 342 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1589
1629
  begin
1590
1630
  te = p+1
1591
1631
  begin
@@ -1599,46 +1639,46 @@ te = p+1
1599
1639
 
1600
1640
  end
1601
1641
  end
1602
- when 80 then
1603
- # line 342 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1642
+ when 84 then
1643
+ # line 347 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1604
1644
  begin
1605
1645
  te = p+1
1606
1646
  begin
1607
1647
  p = p - 1;
1608
- cs = ((in_set? ? 129 : 110));
1648
+ cs = ((in_set? ? 132 : 112));
1609
1649
  begin
1610
1650
  stack[top] = cs
1611
1651
  top+= 1
1612
- cs = 127
1652
+ cs = 130
1613
1653
  _goto_level = _again
1614
1654
  next
1615
1655
  end
1616
1656
 
1617
1657
  end
1618
1658
  end
1619
- when 81 then
1620
- # line 348 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1659
+ when 85 then
1660
+ # line 353 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1621
1661
  begin
1622
1662
  te = p+1
1623
1663
  begin
1624
1664
  p = p - 1;
1625
- cs = ((in_set? ? 129 : 110));
1665
+ cs = ((in_set? ? 132 : 112));
1626
1666
  begin
1627
1667
  stack[top] = cs
1628
1668
  top+= 1
1629
- cs = 128
1669
+ cs = 131
1630
1670
  _goto_level = _again
1631
1671
  next
1632
1672
  end
1633
1673
 
1634
1674
  end
1635
1675
  end
1636
- when 75 then
1637
- # line 354 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1676
+ when 23 then
1677
+ # line 362 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1638
1678
  begin
1639
1679
  te = p+1
1640
1680
  begin
1641
- emit(:escape, :literal, *text(data, ts, te, 1))
1681
+ emit(:escape, :literal, copy(data, ts-1, te))
1642
1682
  begin
1643
1683
  top -= 1
1644
1684
  cs = stack[top]
@@ -1648,12 +1688,12 @@ te = p+1
1648
1688
 
1649
1689
  end
1650
1690
  end
1651
- when 84 then
1652
- # line 271 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1691
+ when 89 then
1692
+ # line 276 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1653
1693
  begin
1654
1694
  te = p
1655
1695
  p = p - 1; begin
1656
- emit(:escape, :octal, *text(data, ts, te, 1))
1696
+ emit(:escape, :octal, copy(data, ts-1, te))
1657
1697
  begin
1658
1698
  top -= 1
1659
1699
  cs = stack[top]
@@ -1663,12 +1703,12 @@ p = p - 1; begin
1663
1703
 
1664
1704
  end
1665
1705
  end
1666
- when 91 then
1667
- # line 323 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1706
+ when 96 then
1707
+ # line 328 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1668
1708
  begin
1669
1709
  te = p
1670
1710
  p = p - 1; begin
1671
- emit(:escape, :hex, *text(data, ts, te, 1))
1711
+ emit(:escape, :hex, copy(data, ts-1, te))
1672
1712
  begin
1673
1713
  top -= 1
1674
1714
  cs = stack[top]
@@ -1678,8 +1718,8 @@ p = p - 1; begin
1678
1718
 
1679
1719
  end
1680
1720
  end
1681
- when 87 then
1682
- # line 332 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1721
+ when 92 then
1722
+ # line 337 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1683
1723
  begin
1684
1724
  te = p
1685
1725
  p = p - 1; begin
@@ -1693,8 +1733,8 @@ p = p - 1; begin
1693
1733
 
1694
1734
  end
1695
1735
  end
1696
- when 89 then
1697
- # line 337 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1736
+ when 94 then
1737
+ # line 342 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1698
1738
  begin
1699
1739
  te = p
1700
1740
  p = p - 1; begin
@@ -1708,15 +1748,45 @@ p = p - 1; begin
1708
1748
 
1709
1749
  end
1710
1750
  end
1711
- when 83 then
1751
+ when 87 then
1752
+ # line 362 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1753
+ begin
1754
+ te = p
1755
+ p = p - 1; begin
1756
+ emit(:escape, :literal, copy(data, ts-1, te))
1757
+ begin
1758
+ top -= 1
1759
+ cs = stack[top]
1760
+ _goto_level = _again
1761
+ next
1762
+ end
1763
+
1764
+ end
1765
+ end
1766
+ when 22 then
1767
+ # line 362 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1768
+ begin
1769
+ begin p = ((te))-1; end
1770
+ begin
1771
+ emit(:escape, :literal, copy(data, ts-1, te))
1772
+ begin
1773
+ top -= 1
1774
+ cs = stack[top]
1775
+ _goto_level = _again
1776
+ next
1777
+ end
1778
+
1779
+ end
1780
+ end
1781
+ when 88 then
1712
1782
  # line 1 "NONE"
1713
1783
  begin
1714
1784
  case act
1715
1785
  when 18 then
1716
1786
  begin begin p = ((te))-1; end
1717
1787
 
1718
- text = text(data, ts, te, 1).first
1719
- emit(:backref, :number, text, ts-1, te)
1788
+ text = copy(data, ts-1, te)
1789
+ emit(:backref, :number, text)
1720
1790
  begin
1721
1791
  top -= 1
1722
1792
  cs = stack[top]
@@ -1728,7 +1798,7 @@ p = p - 1; begin
1728
1798
  when 19 then
1729
1799
  begin begin p = ((te))-1; end
1730
1800
 
1731
- emit(:escape, :octal, *text(data, ts, te, 1))
1801
+ emit(:escape, :octal, copy(data, ts-1, te))
1732
1802
  begin
1733
1803
  top -= 1
1734
1804
  cs = stack[top]
@@ -1739,18 +1809,18 @@ p = p - 1; begin
1739
1809
  end
1740
1810
  end
1741
1811
  end
1742
- when 31 then
1743
- # line 364 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1812
+ when 32 then
1813
+ # line 372 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1744
1814
  begin
1745
1815
  te = p+1
1746
1816
  begin
1747
- text = text(data, ts, te-1).first
1748
- emit(:conditional, :condition, text, ts, te-1)
1749
- emit(:conditional, :condition_close, ')', te-1, te)
1817
+ text = copy(data, ts, te-1)
1818
+ emit(:conditional, :condition, text)
1819
+ emit(:conditional, :condition_close, ')')
1750
1820
  end
1751
1821
  end
1752
- when 93 then
1753
- # line 370 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1822
+ when 98 then
1823
+ # line 378 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1754
1824
  begin
1755
1825
  te = p+1
1756
1826
  begin
@@ -1758,15 +1828,15 @@ te = p+1
1758
1828
  begin
1759
1829
  stack[top] = cs
1760
1830
  top+= 1
1761
- cs = 110
1831
+ cs = 112
1762
1832
  _goto_level = _again
1763
1833
  next
1764
1834
  end
1765
1835
 
1766
1836
  end
1767
1837
  end
1768
- when 94 then
1769
- # line 370 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1838
+ when 99 then
1839
+ # line 378 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1770
1840
  begin
1771
1841
  te = p
1772
1842
  p = p - 1; begin
@@ -1774,15 +1844,15 @@ p = p - 1; begin
1774
1844
  begin
1775
1845
  stack[top] = cs
1776
1846
  top+= 1
1777
- cs = 110
1847
+ cs = 112
1778
1848
  _goto_level = _again
1779
1849
  next
1780
1850
  end
1781
1851
 
1782
1852
  end
1783
1853
  end
1784
- when 30 then
1785
- # line 370 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1854
+ when 31 then
1855
+ # line 378 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1786
1856
  begin
1787
1857
  begin p = ((te))-1; end
1788
1858
  begin
@@ -1790,7 +1860,7 @@ p = p - 1; begin
1790
1860
  begin
1791
1861
  stack[top] = cs
1792
1862
  top+= 1
1793
- cs = 110
1863
+ cs = 112
1794
1864
  _goto_level = _again
1795
1865
  next
1796
1866
  end
@@ -1798,387 +1868,421 @@ p = p - 1; begin
1798
1868
  end
1799
1869
  end
1800
1870
  when 38 then
1801
- # line 383 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1871
+ # line 391 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1802
1872
  begin
1803
1873
  te = p+1
1804
1874
  begin
1805
- emit(:meta, :dot, *text(data, ts, te))
1875
+ emit(:meta, :dot, copy(data, ts, te))
1806
1876
  end
1807
1877
  end
1808
- when 41 then
1809
- # line 387 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1878
+ when 43 then
1879
+ # line 395 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1810
1880
  begin
1811
1881
  te = p+1
1812
1882
  begin
1813
1883
  if conditional_stack.last == group_depth
1814
- emit(:conditional, :separator, *text(data, ts, te))
1884
+ emit(:conditional, :separator, copy(data, ts, te))
1815
1885
  else
1816
- emit(:meta, :alternation, *text(data, ts, te))
1886
+ emit(:meta, :alternation, copy(data, ts, te))
1817
1887
  end
1818
1888
  end
1819
1889
  end
1820
- when 40 then
1821
- # line 397 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1890
+ when 42 then
1891
+ # line 405 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1822
1892
  begin
1823
1893
  te = p+1
1824
1894
  begin
1825
- emit(:anchor, :bol, *text(data, ts, te))
1895
+ emit(:anchor, :bol, copy(data, ts, te))
1826
1896
  end
1827
1897
  end
1828
1898
  when 35 then
1829
- # line 401 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1899
+ # line 409 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1830
1900
  begin
1831
1901
  te = p+1
1832
1902
  begin
1833
- emit(:anchor, :eol, *text(data, ts, te))
1903
+ emit(:anchor, :eol, copy(data, ts, te))
1834
1904
  end
1835
1905
  end
1836
- when 57 then
1837
- # line 405 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1906
+ when 61 then
1907
+ # line 413 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1838
1908
  begin
1839
1909
  te = p+1
1840
1910
  begin
1841
- emit(:keep, :mark, *text(data, ts, te))
1911
+ emit(:keep, :mark, copy(data, ts, te))
1842
1912
  end
1843
1913
  end
1844
- when 56 then
1845
- # line 409 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1914
+ when 60 then
1915
+ # line 417 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1846
1916
  begin
1847
1917
  te = p+1
1848
1918
  begin
1849
- case text = text(data, ts, te).first
1850
- when '\\A'; emit(:anchor, :bos, text, ts, te)
1851
- when '\\z'; emit(:anchor, :eos, text, ts, te)
1852
- when '\\Z'; emit(:anchor, :eos_ob_eol, text, ts, te)
1853
- when '\\b'; emit(:anchor, :word_boundary, text, ts, te)
1854
- when '\\B'; emit(:anchor, :nonword_boundary, text, ts, te)
1855
- when '\\G'; emit(:anchor, :match_start, text, ts, te)
1919
+ case text = copy(data, ts, te)
1920
+ when '\\A'; emit(:anchor, :bos, text)
1921
+ when '\\z'; emit(:anchor, :eos, text)
1922
+ when '\\Z'; emit(:anchor, :eos_ob_eol, text)
1923
+ when '\\b'; emit(:anchor, :word_boundary, text)
1924
+ when '\\B'; emit(:anchor, :nonword_boundary, text)
1925
+ when '\\G'; emit(:anchor, :match_start, text)
1856
1926
  end
1857
1927
  end
1858
1928
  end
1859
- when 47 then
1860
- # line 431 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1929
+ when 41 then
1930
+ # line 428 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1931
+ begin
1932
+ te = p+1
1933
+ begin
1934
+ append_literal(data, ts, te)
1935
+ end
1936
+ end
1937
+ when 51 then
1938
+ # line 443 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1861
1939
  begin
1862
1940
  te = p+1
1863
1941
  begin
1864
- text = text(data, ts, te).first
1942
+ text = copy(data, ts, te)
1865
1943
 
1866
1944
  conditional_stack << group_depth
1867
1945
 
1868
- emit(:conditional, :open, text[0..-2], ts, te-1)
1869
- emit(:conditional, :condition_open, '(', te-1, te)
1946
+ emit(:conditional, :open, text[0..-2])
1947
+ emit(:conditional, :condition_open, '(')
1870
1948
  begin
1871
1949
  stack[top] = cs
1872
1950
  top+= 1
1873
- cs = 148
1951
+ cs = 154
1874
1952
  _goto_level = _again
1875
1953
  next
1876
1954
  end
1877
1955
 
1878
1956
  end
1879
1957
  end
1880
- when 48 then
1881
- # line 462 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1958
+ when 52 then
1959
+ # line 474 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1882
1960
  begin
1883
1961
  te = p+1
1884
1962
  begin
1885
- text = text(data, ts, te).first
1963
+ text = copy(data, ts, te)
1886
1964
  if text[2..-1] =~ /([^\-mixdau:]|^$)|-.*([dau])/
1887
1965
  raise InvalidGroupOption.new($1 || "-#{$2}", text)
1888
1966
  end
1889
- emit_options(text, ts, te)
1967
+ emit_options(text)
1890
1968
  end
1891
1969
  end
1892
- when 9 then
1893
- # line 476 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1970
+ when 7 then
1971
+ # line 488 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1894
1972
  begin
1895
1973
  te = p+1
1896
1974
  begin
1897
- case text = text(data, ts, te).first
1898
- when '(?='; emit(:assertion, :lookahead, text, ts, te)
1899
- when '(?!'; emit(:assertion, :nlookahead, text, ts, te)
1900
- when '(?<='; emit(:assertion, :lookbehind, text, ts, te)
1901
- when '(?<!'; emit(:assertion, :nlookbehind, text, ts, te)
1975
+ case text = copy(data, ts, te)
1976
+ when '(?='; emit(:assertion, :lookahead, text)
1977
+ when '(?!'; emit(:assertion, :nlookahead, text)
1978
+ when '(?<='; emit(:assertion, :lookbehind, text)
1979
+ when '(?<!'; emit(:assertion, :nlookbehind, text)
1902
1980
  end
1903
1981
  end
1904
1982
  end
1905
- when 8 then
1906
- # line 493 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1983
+ when 6 then
1984
+ # line 505 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1907
1985
  begin
1908
1986
  te = p+1
1909
1987
  begin
1910
- case text = text(data, ts, te).first
1911
- when '(?:'; emit(:group, :passive, text, ts, te)
1912
- when '(?>'; emit(:group, :atomic, text, ts, te)
1913
- when '(?~'; emit(:group, :absence, text, ts, te)
1988
+ case text = copy(data, ts, te)
1989
+ when '(?:'; emit(:group, :passive, text)
1990
+ when '(?>'; emit(:group, :atomic, text)
1991
+ when '(?~'; emit(:group, :absence, text)
1914
1992
 
1915
1993
  when /^\(\?(?:<>|'')/
1916
1994
  validation_error(:group, 'named group', 'name is empty')
1917
1995
 
1918
1996
  when /^\(\?<\w*>/
1919
- emit(:group, :named_ab, text, ts, te)
1997
+ emit(:group, :named_ab, text)
1920
1998
 
1921
1999
  when /^\(\?'\w*'/
1922
- emit(:group, :named_sq, text, ts, te)
2000
+ emit(:group, :named_sq, text)
1923
2001
 
1924
2002
  end
1925
2003
  end
1926
2004
  end
1927
- when 11 then
1928
- # line 534 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2005
+ when 9 then
2006
+ # line 546 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1929
2007
  begin
1930
2008
  te = p+1
1931
2009
  begin
1932
- case text = text(data, ts, te).first
2010
+ case text = copy(data, ts, te)
1933
2011
  when /^\\([gk])(<>|'')/ # angle brackets
1934
2012
  validation_error(:backref, 'ref/call', 'ref ID is empty')
1935
2013
 
1936
2014
  when /^\\([gk])<[^\d+-]\w*>/ # angle-brackets
1937
2015
  if $1 == 'k'
1938
- emit(:backref, :name_ref_ab, text, ts, te)
2016
+ emit(:backref, :name_ref_ab, text)
1939
2017
  else
1940
- emit(:backref, :name_call_ab, text, ts, te)
2018
+ emit(:backref, :name_call_ab, text)
1941
2019
  end
1942
2020
 
1943
2021
  when /^\\([gk])'[^\d+-]\w*'/ #single quotes
1944
2022
  if $1 == 'k'
1945
- emit(:backref, :name_ref_sq, text, ts, te)
2023
+ emit(:backref, :name_ref_sq, text)
1946
2024
  else
1947
- emit(:backref, :name_call_sq, text, ts, te)
2025
+ emit(:backref, :name_call_sq, text)
1948
2026
  end
1949
2027
 
1950
2028
  when /^\\([gk])<\d+>/ # angle-brackets
1951
2029
  if $1 == 'k'
1952
- emit(:backref, :number_ref_ab, text, ts, te)
2030
+ emit(:backref, :number_ref_ab, text)
1953
2031
  else
1954
- emit(:backref, :number_call_ab, text, ts, te)
2032
+ emit(:backref, :number_call_ab, text)
1955
2033
  end
1956
2034
 
1957
2035
  when /^\\([gk])'\d+'/ # single quotes
1958
2036
  if $1 == 'k'
1959
- emit(:backref, :number_ref_sq, text, ts, te)
2037
+ emit(:backref, :number_ref_sq, text)
1960
2038
  else
1961
- emit(:backref, :number_call_sq, text, ts, te)
2039
+ emit(:backref, :number_call_sq, text)
1962
2040
  end
1963
2041
 
1964
2042
  when /^\\(?:g<\+|g<-|(k)<-)\d+>/ # angle-brackets
1965
2043
  if $1 == 'k'
1966
- emit(:backref, :number_rel_ref_ab, text, ts, te)
2044
+ emit(:backref, :number_rel_ref_ab, text)
1967
2045
  else
1968
- emit(:backref, :number_rel_call_ab, text, ts, te)
2046
+ emit(:backref, :number_rel_call_ab, text)
1969
2047
  end
1970
2048
 
1971
2049
  when /^\\(?:g'\+|g'-|(k)'-)\d+'/ # single quotes
1972
2050
  if $1 == 'k'
1973
- emit(:backref, :number_rel_ref_sq, text, ts, te)
2051
+ emit(:backref, :number_rel_ref_sq, text)
1974
2052
  else
1975
- emit(:backref, :number_rel_call_sq, text, ts, te)
2053
+ emit(:backref, :number_rel_call_sq, text)
1976
2054
  end
1977
2055
 
1978
2056
  when /^\\k<[^\d+\-]\w*[+\-]\d+>/ # angle-brackets
1979
- emit(:backref, :name_recursion_ref_ab, text, ts, te)
2057
+ emit(:backref, :name_recursion_ref_ab, text)
1980
2058
 
1981
2059
  when /^\\k'[^\d+\-]\w*[+\-]\d+'/ # single-quotes
1982
- emit(:backref, :name_recursion_ref_sq, text, ts, te)
2060
+ emit(:backref, :name_recursion_ref_sq, text)
1983
2061
 
1984
2062
  when /^\\([gk])<[+\-]?\d+[+\-]\d+>/ # angle-brackets
1985
- emit(:backref, :number_recursion_ref_ab, text, ts, te)
2063
+ emit(:backref, :number_recursion_ref_ab, text)
1986
2064
 
1987
2065
  when /^\\([gk])'[+\-]?\d+[+\-]\d+'/ # single-quotes
1988
- emit(:backref, :number_recursion_ref_sq, text, ts, te)
2066
+ emit(:backref, :number_recursion_ref_sq, text)
1989
2067
 
1990
2068
  end
1991
2069
  end
1992
2070
  end
1993
- when 54 then
1994
- # line 599 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2071
+ when 58 then
2072
+ # line 611 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
1995
2073
  begin
1996
2074
  te = p+1
1997
2075
  begin
1998
- case text = text(data, ts, te).first
1999
- when '?' ; emit(:quantifier, :zero_or_one, text, ts, te)
2000
- when '??'; emit(:quantifier, :zero_or_one_reluctant, text, ts, te)
2001
- when '?+'; emit(:quantifier, :zero_or_one_possessive, text, ts, te)
2076
+ case text = copy(data, ts, te)
2077
+ when '?' ; emit(:quantifier, :zero_or_one, text)
2078
+ when '??'; emit(:quantifier, :zero_or_one_reluctant, text)
2079
+ when '?+'; emit(:quantifier, :zero_or_one_possessive, text)
2002
2080
  end
2003
2081
  end
2004
2082
  end
2005
- when 50 then
2006
- # line 607 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2083
+ when 54 then
2084
+ # line 619 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2007
2085
  begin
2008
2086
  te = p+1
2009
2087
  begin
2010
- case text = text(data, ts, te).first
2011
- when '*' ; emit(:quantifier, :zero_or_more, text, ts, te)
2012
- when '*?'; emit(:quantifier, :zero_or_more_reluctant, text, ts, te)
2013
- when '*+'; emit(:quantifier, :zero_or_more_possessive, text, ts, te)
2088
+ case text = copy(data, ts, te)
2089
+ when '*' ; emit(:quantifier, :zero_or_more, text)
2090
+ when '*?'; emit(:quantifier, :zero_or_more_reluctant, text)
2091
+ when '*+'; emit(:quantifier, :zero_or_more_possessive, text)
2014
2092
  end
2015
2093
  end
2016
2094
  end
2017
- when 52 then
2018
- # line 615 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2095
+ when 56 then
2096
+ # line 627 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2019
2097
  begin
2020
2098
  te = p+1
2021
2099
  begin
2022
- case text = text(data, ts, te).first
2023
- when '+' ; emit(:quantifier, :one_or_more, text, ts, te)
2024
- when '+?'; emit(:quantifier, :one_or_more_reluctant, text, ts, te)
2025
- when '++'; emit(:quantifier, :one_or_more_possessive, text, ts, te)
2100
+ case text = copy(data, ts, te)
2101
+ when '+' ; emit(:quantifier, :one_or_more, text)
2102
+ when '+?'; emit(:quantifier, :one_or_more_reluctant, text)
2103
+ when '++'; emit(:quantifier, :one_or_more_possessive, text)
2026
2104
  end
2027
2105
  end
2028
2106
  end
2029
- when 59 then
2030
- # line 623 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2107
+ when 64 then
2108
+ # line 635 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2031
2109
  begin
2032
2110
  te = p+1
2033
2111
  begin
2034
- emit(:quantifier, :interval, *text(data, ts, te))
2112
+ emit(:quantifier, :interval, copy(data, ts, te))
2035
2113
  end
2036
2114
  end
2037
- when 4 then
2038
- # line 633 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2115
+ when 47 then
2116
+ # line 650 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2039
2117
  begin
2040
2118
  te = p+1
2041
2119
  begin
2042
2120
  if free_spacing
2043
- emit(:free_space, :comment, *text(data, ts, te))
2121
+ emit(:free_space, :comment, copy(data, ts, te))
2044
2122
  else
2045
- append_literal(data, ts, te)
2123
+ # consume only the pound sign (#) and backtrack to do regular scanning
2124
+ append_literal(data, ts, ts + 1)
2125
+ begin p = (( ts + 1))-1; end
2126
+
2046
2127
  end
2047
2128
  end
2048
2129
  end
2049
- when 46 then
2050
- # line 462 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2130
+ when 50 then
2131
+ # line 474 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2051
2132
  begin
2052
2133
  te = p
2053
2134
  p = p - 1; begin
2054
- text = text(data, ts, te).first
2135
+ text = copy(data, ts, te)
2055
2136
  if text[2..-1] =~ /([^\-mixdau:]|^$)|-.*([dau])/
2056
2137
  raise InvalidGroupOption.new($1 || "-#{$2}", text)
2057
2138
  end
2058
- emit_options(text, ts, te)
2139
+ emit_options(text)
2059
2140
  end
2060
2141
  end
2061
- when 44 then
2062
- # line 511 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2142
+ when 48 then
2143
+ # line 523 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2063
2144
  begin
2064
2145
  te = p
2065
2146
  p = p - 1; begin
2066
- text = text(data, ts, te).first
2067
- emit(:group, :capture, text, ts, te)
2147
+ text = copy(data, ts, te)
2148
+ emit(:group, :capture, text)
2068
2149
  end
2069
2150
  end
2070
- when 53 then
2071
- # line 599 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2151
+ when 57 then
2152
+ # line 611 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2072
2153
  begin
2073
2154
  te = p
2074
2155
  p = p - 1; begin
2075
- case text = text(data, ts, te).first
2076
- when '?' ; emit(:quantifier, :zero_or_one, text, ts, te)
2077
- when '??'; emit(:quantifier, :zero_or_one_reluctant, text, ts, te)
2078
- when '?+'; emit(:quantifier, :zero_or_one_possessive, text, ts, te)
2156
+ case text = copy(data, ts, te)
2157
+ when '?' ; emit(:quantifier, :zero_or_one, text)
2158
+ when '??'; emit(:quantifier, :zero_or_one_reluctant, text)
2159
+ when '?+'; emit(:quantifier, :zero_or_one_possessive, text)
2079
2160
  end
2080
2161
  end
2081
2162
  end
2082
- when 49 then
2083
- # line 607 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2163
+ when 53 then
2164
+ # line 619 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2084
2165
  begin
2085
2166
  te = p
2086
2167
  p = p - 1; begin
2087
- case text = text(data, ts, te).first
2088
- when '*' ; emit(:quantifier, :zero_or_more, text, ts, te)
2089
- when '*?'; emit(:quantifier, :zero_or_more_reluctant, text, ts, te)
2090
- when '*+'; emit(:quantifier, :zero_or_more_possessive, text, ts, te)
2168
+ case text = copy(data, ts, te)
2169
+ when '*' ; emit(:quantifier, :zero_or_more, text)
2170
+ when '*?'; emit(:quantifier, :zero_or_more_reluctant, text)
2171
+ when '*+'; emit(:quantifier, :zero_or_more_possessive, text)
2091
2172
  end
2092
2173
  end
2093
2174
  end
2094
- when 51 then
2095
- # line 615 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2175
+ when 55 then
2176
+ # line 627 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2096
2177
  begin
2097
2178
  te = p
2098
2179
  p = p - 1; begin
2099
- case text = text(data, ts, te).first
2100
- when '+' ; emit(:quantifier, :one_or_more, text, ts, te)
2101
- when '+?'; emit(:quantifier, :one_or_more_reluctant, text, ts, te)
2102
- when '++'; emit(:quantifier, :one_or_more_possessive, text, ts, te)
2180
+ case text = copy(data, ts, te)
2181
+ when '+' ; emit(:quantifier, :one_or_more, text)
2182
+ when '+?'; emit(:quantifier, :one_or_more_reluctant, text)
2183
+ when '++'; emit(:quantifier, :one_or_more_possessive, text)
2103
2184
  end
2104
2185
  end
2105
2186
  end
2106
- when 58 then
2107
- # line 623 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2187
+ when 63 then
2188
+ # line 635 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2108
2189
  begin
2109
2190
  te = p
2110
2191
  p = p - 1; begin
2111
- emit(:quantifier, :interval, *text(data, ts, te))
2192
+ emit(:quantifier, :interval, copy(data, ts, te))
2112
2193
  end
2113
2194
  end
2114
- when 55 then
2115
- # line 629 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2195
+ when 62 then
2196
+ # line 640 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2197
+ begin
2198
+ te = p
2199
+ p = p - 1; begin
2200
+ append_literal(data, ts, te)
2201
+ end
2202
+ end
2203
+ when 59 then
2204
+ # line 646 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2116
2205
  begin
2117
2206
  te = p
2118
2207
  p = p - 1; begin
2119
2208
  begin
2120
2209
  stack[top] = cs
2121
2210
  top+= 1
2122
- cs = 137
2211
+ cs = 140
2123
2212
  _goto_level = _again
2124
2213
  next
2125
2214
  end
2126
2215
 
2127
2216
  end
2128
2217
  end
2129
- when 43 then
2130
- # line 641 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2218
+ when 46 then
2219
+ # line 650 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2220
+ begin
2221
+ te = p
2222
+ p = p - 1; begin
2223
+ if free_spacing
2224
+ emit(:free_space, :comment, copy(data, ts, te))
2225
+ else
2226
+ # consume only the pound sign (#) and backtrack to do regular scanning
2227
+ append_literal(data, ts, ts + 1)
2228
+ begin p = (( ts + 1))-1; end
2229
+
2230
+ end
2231
+ end
2232
+ end
2233
+ when 45 then
2234
+ # line 660 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2131
2235
  begin
2132
2236
  te = p
2133
2237
  p = p - 1; begin
2134
2238
  if free_spacing
2135
- emit(:free_space, :whitespace, *text(data, ts, te))
2239
+ emit(:free_space, :whitespace, copy(data, ts, te))
2136
2240
  else
2137
2241
  append_literal(data, ts, te)
2138
2242
  end
2139
2243
  end
2140
2244
  end
2141
- when 42 then
2142
- # line 656 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2245
+ when 44 then
2246
+ # line 675 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2143
2247
  begin
2144
2248
  te = p
2145
2249
  p = p - 1; begin
2146
2250
  append_literal(data, ts, te)
2147
2251
  end
2148
2252
  end
2149
- when 5 then
2150
- # line 462 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2253
+ when 3 then
2254
+ # line 474 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2151
2255
  begin
2152
2256
  begin p = ((te))-1; end
2153
2257
  begin
2154
- text = text(data, ts, te).first
2258
+ text = copy(data, ts, te)
2155
2259
  if text[2..-1] =~ /([^\-mixdau:]|^$)|-.*([dau])/
2156
2260
  raise InvalidGroupOption.new($1 || "-#{$2}", text)
2157
2261
  end
2158
- emit_options(text, ts, te)
2262
+ emit_options(text)
2159
2263
  end
2160
2264
  end
2161
2265
  when 10 then
2162
- # line 629 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2266
+ # line 640 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2267
+ begin
2268
+ begin p = ((te))-1; end
2269
+ begin
2270
+ append_literal(data, ts, te)
2271
+ end
2272
+ end
2273
+ when 8 then
2274
+ # line 646 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2163
2275
  begin
2164
2276
  begin p = ((te))-1; end
2165
2277
  begin
2166
2278
  begin
2167
2279
  stack[top] = cs
2168
2280
  top+= 1
2169
- cs = 137
2281
+ cs = 140
2170
2282
  _goto_level = _again
2171
2283
  next
2172
2284
  end
2173
2285
 
2174
- end
2175
- end
2176
- when 3 then
2177
- # line 656 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2178
- begin
2179
- begin p = ((te))-1; end
2180
- begin
2181
- append_literal(data, ts, te)
2182
2286
  end
2183
2287
  end
2184
2288
  when 1 then
@@ -2192,69 +2296,69 @@ p = p - 1; begin
2192
2296
  next
2193
2297
  end
2194
2298
  end
2195
- when 54 then
2299
+ when 56 then
2196
2300
  begin begin p = ((te))-1; end
2197
2301
 
2198
2302
  append_literal(data, ts, te)
2199
2303
  end
2200
2304
  end
2201
2305
  end
2202
- when 71 then
2203
- # line 131 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2306
+ when 76 then
2307
+ # line 137 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2204
2308
  begin
2205
2309
 
2206
- text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2310
+ text = copy(data, ts ? ts-1 : 0, -1)
2207
2311
  raise PrematureEndError.new( text )
2208
2312
  end
2209
- # line 205 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2313
+ # line 211 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2210
2314
  begin
2211
2315
  te = p
2212
2316
  p = p - 1; begin
2213
- emit(:set, :open, *text(data, ts, te))
2317
+ emit(:set, :open, copy(data, ts, te))
2214
2318
  begin
2215
2319
  stack[top] = cs
2216
2320
  top+= 1
2217
- cs = 129
2321
+ cs = 132
2218
2322
  _goto_level = _again
2219
2323
  next
2220
2324
  end
2221
2325
 
2222
2326
  end
2223
2327
  end
2224
- when 19 then
2225
- # line 131 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2328
+ when 17 then
2329
+ # line 137 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2226
2330
  begin
2227
2331
 
2228
- text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2332
+ text = copy(data, ts ? ts-1 : 0, -1)
2229
2333
  raise PrematureEndError.new( text )
2230
2334
  end
2231
- # line 205 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2335
+ # line 211 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2232
2336
  begin
2233
2337
  begin p = ((te))-1; end
2234
2338
  begin
2235
- emit(:set, :open, *text(data, ts, te))
2339
+ emit(:set, :open, copy(data, ts, te))
2236
2340
  begin
2237
2341
  stack[top] = cs
2238
2342
  top+= 1
2239
- cs = 129
2343
+ cs = 132
2240
2344
  _goto_level = _again
2241
2345
  next
2242
2346
  end
2243
2347
 
2244
2348
  end
2245
2349
  end
2246
- when 90 then
2247
- # line 131 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2350
+ when 95 then
2351
+ # line 137 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2248
2352
  begin
2249
2353
 
2250
- text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2354
+ text = copy(data, ts ? ts-1 : 0, -1)
2251
2355
  raise PrematureEndError.new( text )
2252
2356
  end
2253
- # line 323 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2357
+ # line 328 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2254
2358
  begin
2255
2359
  te = p
2256
2360
  p = p - 1; begin
2257
- emit(:escape, :hex, *text(data, ts, te, 1))
2361
+ emit(:escape, :hex, copy(data, ts-1, te))
2258
2362
  begin
2259
2363
  top -= 1
2260
2364
  cs = stack[top]
@@ -2264,14 +2368,14 @@ p = p - 1; begin
2264
2368
 
2265
2369
  end
2266
2370
  end
2267
- when 86 then
2268
- # line 131 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2371
+ when 91 then
2372
+ # line 137 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2269
2373
  begin
2270
2374
 
2271
- text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2375
+ text = copy(data, ts ? ts-1 : 0, -1)
2272
2376
  raise PrematureEndError.new( text )
2273
2377
  end
2274
- # line 332 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2378
+ # line 337 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2275
2379
  begin
2276
2380
  te = p
2277
2381
  p = p - 1; begin
@@ -2285,14 +2389,14 @@ p = p - 1; begin
2285
2389
 
2286
2390
  end
2287
2391
  end
2288
- when 88 then
2289
- # line 131 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2392
+ when 93 then
2393
+ # line 137 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2290
2394
  begin
2291
2395
 
2292
- text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2396
+ text = copy(data, ts ? ts-1 : 0, -1)
2293
2397
  raise PrematureEndError.new( text )
2294
2398
  end
2295
- # line 337 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2399
+ # line 342 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2296
2400
  begin
2297
2401
  te = p
2298
2402
  p = p - 1; begin
@@ -2306,14 +2410,14 @@ p = p - 1; begin
2306
2410
 
2307
2411
  end
2308
2412
  end
2309
- when 25 then
2310
- # line 131 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2413
+ when 26 then
2414
+ # line 137 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2311
2415
  begin
2312
2416
 
2313
- text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2417
+ text = copy(data, ts ? ts-1 : 0, -1)
2314
2418
  raise PrematureEndError.new( text )
2315
2419
  end
2316
- # line 332 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2420
+ # line 337 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2317
2421
  begin
2318
2422
  begin p = ((te))-1; end
2319
2423
  begin
@@ -2327,14 +2431,14 @@ p = p - 1; begin
2327
2431
 
2328
2432
  end
2329
2433
  end
2330
- when 27 then
2331
- # line 131 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2434
+ when 28 then
2435
+ # line 137 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2332
2436
  begin
2333
2437
 
2334
- text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2438
+ text = copy(data, ts ? ts-1 : 0, -1)
2335
2439
  raise PrematureEndError.new( text )
2336
2440
  end
2337
- # line 337 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2441
+ # line 342 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2338
2442
  begin
2339
2443
  begin p = ((te))-1; end
2340
2444
  begin
@@ -2348,14 +2452,14 @@ p = p - 1; begin
2348
2452
 
2349
2453
  end
2350
2454
  end
2351
- when 29 then
2352
- # line 137 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2455
+ when 30 then
2456
+ # line 143 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2353
2457
  begin
2354
2458
 
2355
- text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2459
+ text = copy(data, ts ? ts-1 : 0, -1)
2356
2460
  validation_error(:sequence, 'sequence', text)
2357
2461
  end
2358
- # line 328 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2462
+ # line 333 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2359
2463
  begin
2360
2464
  te = p+1
2361
2465
  begin
@@ -2368,28 +2472,28 @@ te = p+1
2368
2472
 
2369
2473
  end
2370
2474
  end
2371
- when 7 then
2372
- # line 144 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2475
+ when 5 then
2476
+ # line 150 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2373
2477
  begin
2374
2478
  self.group_depth = group_depth - 1 end
2375
- # line 447 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2479
+ # line 459 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2376
2480
  begin
2377
2481
  te = p+1
2378
2482
  begin
2379
- emit(:group, :comment, *text(data, ts, te))
2483
+ emit(:group, :comment, copy(data, ts, te))
2380
2484
  end
2381
2485
  end
2382
2486
  when 37 then
2383
- # line 144 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2487
+ # line 150 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2384
2488
  begin
2385
2489
  self.group_depth = group_depth - 1 end
2386
- # line 516 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2490
+ # line 528 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2387
2491
  begin
2388
2492
  te = p+1
2389
2493
  begin
2390
2494
  if conditional_stack.last == group_depth + 1
2391
2495
  conditional_stack.pop
2392
- emit(:conditional, :close, *text(data, ts, te))
2496
+ emit(:conditional, :close, copy(data, ts, te))
2393
2497
  else
2394
2498
  if spacing_stack.length > 1 &&
2395
2499
  spacing_stack.last[:depth] == group_depth + 1
@@ -2397,38 +2501,38 @@ te = p+1
2397
2501
  self.free_spacing = spacing_stack.last[:free_spacing]
2398
2502
  end
2399
2503
 
2400
- emit(:group, :close, *text(data, ts, te))
2504
+ emit(:group, :close, copy(data, ts, te))
2401
2505
  end
2402
2506
  end
2403
2507
  end
2404
2508
  when 39 then
2405
- # line 145 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2509
+ # line 151 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2406
2510
  begin
2407
2511
  self.set_depth = set_depth + 1 end
2408
- # line 422 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2512
+ # line 434 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2409
2513
  begin
2410
2514
  te = p+1
2411
2515
  begin
2412
- emit(:set, :open, *text(data, ts, te))
2516
+ emit(:set, :open, copy(data, ts, te))
2413
2517
  begin
2414
2518
  stack[top] = cs
2415
2519
  top+= 1
2416
- cs = 129
2520
+ cs = 132
2417
2521
  _goto_level = _again
2418
2522
  next
2419
2523
  end
2420
2524
 
2421
2525
  end
2422
2526
  end
2423
- when 65 then
2424
- # line 146 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2527
+ when 70 then
2528
+ # line 152 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2425
2529
  begin
2426
2530
  self.set_depth = set_depth - 1 end
2427
- # line 152 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2531
+ # line 158 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2428
2532
  begin
2429
2533
  te = p+1
2430
2534
  begin
2431
- emit(:set, :close, *text(data, ts, te))
2535
+ emit(:set, :close, copy(data, ts, te))
2432
2536
  if in_set?
2433
2537
  begin
2434
2538
  top -= 1
@@ -2439,7 +2543,7 @@ te = p+1
2439
2543
 
2440
2544
  else
2441
2545
  begin
2442
- cs = 110
2546
+ cs = 112
2443
2547
  _goto_level = _again
2444
2548
  next
2445
2549
  end
@@ -2447,16 +2551,16 @@ te = p+1
2447
2551
  end
2448
2552
  end
2449
2553
  end
2450
- when 70 then
2451
- # line 146 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2554
+ when 75 then
2555
+ # line 152 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2452
2556
  begin
2453
2557
  self.set_depth = set_depth - 1 end
2454
- # line 161 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2558
+ # line 167 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2455
2559
  begin
2456
2560
  te = p+1
2457
2561
  begin # special case, emits two tokens
2458
- emit(:literal, :literal, copy(data, ts..te-2), ts, te - 1)
2459
- emit(:set, :close, copy(data, ts+1..te-1), ts + 1, te)
2562
+ emit(:literal, :literal, copy(data, ts, te-1))
2563
+ emit(:set, :close, copy(data, ts+1, te))
2460
2564
  if in_set?
2461
2565
  begin
2462
2566
  top -= 1
@@ -2467,7 +2571,7 @@ te = p+1
2467
2571
 
2468
2572
  else
2469
2573
  begin
2470
- cs = 110
2574
+ cs = 112
2471
2575
  _goto_level = _again
2472
2576
  next
2473
2577
  end
@@ -2475,15 +2579,15 @@ te = p+1
2475
2579
  end
2476
2580
  end
2477
2581
  end
2478
- when 22 then
2479
- # line 146 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2582
+ when 20 then
2583
+ # line 152 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2480
2584
  begin
2481
2585
  self.set_depth = set_depth - 1 end
2482
- # line 210 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2586
+ # line 216 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2483
2587
  begin
2484
2588
  te = p+1
2485
2589
  begin
2486
- text = text(data, ts, te).first
2590
+ text = copy(data, ts, te)
2487
2591
 
2488
2592
  type = :posixclass
2489
2593
  class_name = text[2..-3]
@@ -2492,53 +2596,53 @@ te = p+1
2492
2596
  type = :nonposixclass
2493
2597
  end
2494
2598
 
2495
- emit(type, class_name.to_sym, text, ts, te)
2599
+ emit(type, class_name.to_sym, text)
2496
2600
  end
2497
2601
  end
2498
- when 21 then
2499
- # line 146 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2602
+ when 19 then
2603
+ # line 152 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2500
2604
  begin
2501
2605
  self.set_depth = set_depth - 1 end
2502
- # line 223 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2606
+ # line 229 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2503
2607
  begin
2504
2608
  te = p+1
2505
2609
  begin
2506
- emit(:set, :collation, *text(data, ts, te))
2610
+ emit(:set, :collation, copy(data, ts, te))
2507
2611
  end
2508
2612
  end
2509
- when 23 then
2510
- # line 146 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2613
+ when 21 then
2614
+ # line 152 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2511
2615
  begin
2512
2616
  self.set_depth = set_depth - 1 end
2513
- # line 227 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2617
+ # line 233 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2514
2618
  begin
2515
2619
  te = p+1
2516
2620
  begin
2517
- emit(:set, :equivalent, *text(data, ts, te))
2621
+ emit(:set, :equivalent, copy(data, ts, te))
2518
2622
  end
2519
2623
  end
2520
- when 63 then
2624
+ when 68 then
2521
2625
  # line 1 "NONE"
2522
2626
  begin
2523
2627
  te = p+1
2524
2628
  end
2525
- # line 145 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2629
+ # line 151 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2526
2630
  begin
2527
2631
  self.set_depth = set_depth + 1 end
2528
- when 78 then
2632
+ when 82 then
2529
2633
  # line 1 "NONE"
2530
2634
  begin
2531
2635
  te = p+1
2532
2636
  end
2533
- # line 265 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2637
+ # line 270 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2534
2638
  begin
2535
2639
  act = 18; end
2536
- when 77 then
2640
+ when 81 then
2537
2641
  # line 1 "NONE"
2538
2642
  begin
2539
2643
  te = p+1
2540
2644
  end
2541
- # line 271 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2645
+ # line 276 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2542
2646
  begin
2543
2647
  act = 19; end
2544
2648
  when 2 then
@@ -2546,31 +2650,31 @@ act = 19; end
2546
2650
  begin
2547
2651
  te = p+1
2548
2652
  end
2549
- # line 656 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2653
+ # line 675 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2550
2654
  begin
2551
- act = 54; end
2552
- when 45 then
2655
+ act = 56; end
2656
+ when 49 then
2553
2657
  # line 1 "NONE"
2554
2658
  begin
2555
2659
  te = p+1
2556
2660
  end
2557
- # line 144 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2661
+ # line 150 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2558
2662
  begin
2559
2663
  self.group_depth = group_depth - 1 end
2560
- # line 143 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2664
+ # line 149 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2561
2665
  begin
2562
2666
  self.group_depth = group_depth + 1 end
2563
- # line 2563 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
2667
+ # line 2667 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
2564
2668
  end
2565
2669
  end
2566
2670
  end
2567
2671
  if _goto_level <= _again
2568
2672
  case _re_scanner_to_state_actions[cs]
2569
- when 60 then
2673
+ when 65 then
2570
2674
  # line 1 "NONE"
2571
2675
  begin
2572
2676
  ts = nil; end
2573
- when 32 then
2677
+ when 33 then
2574
2678
  # line 1 "NONE"
2575
2679
  begin
2576
2680
  ts = nil; end
@@ -2578,7 +2682,7 @@ ts = nil; end
2578
2682
  begin
2579
2683
  act = 0
2580
2684
  end
2581
- # line 2581 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
2685
+ # line 2685 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
2582
2686
  end
2583
2687
 
2584
2688
  if cs == 0
@@ -2599,20 +2703,20 @@ act = 0
2599
2703
  next;
2600
2704
  end
2601
2705
  case _re_scanner_eof_actions[cs]
2602
- when 13 then
2706
+ when 11 then
2603
2707
  # line 8 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/property.rl"
2604
2708
  begin
2605
2709
 
2606
2710
  raise PrematureEndError.new('unicode property')
2607
2711
  end
2608
- when 12 then
2609
- # line 131 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2712
+ when 24 then
2713
+ # line 137 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2610
2714
  begin
2611
2715
 
2612
- text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2716
+ text = copy(data, ts ? ts-1 : 0, -1)
2613
2717
  raise PrematureEndError.new( text )
2614
2718
  end
2615
- # line 2615 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
2719
+ # line 2719 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner.rb"
2616
2720
  end
2617
2721
  end
2618
2722
 
@@ -2623,13 +2727,13 @@ act = 0
2623
2727
  end
2624
2728
  end
2625
2729
 
2626
- # line 755 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2730
+ # line 770 "/Users/jannoschmuller/code/regexp_parser/lib/regexp_parser/scanner/scanner.rl"
2627
2731
 
2628
2732
  # to avoid "warning: assigned but unused variable - testEof"
2629
2733
  testEof = testEof
2630
2734
 
2631
2735
  if cs == re_scanner_error
2632
- text = ts ? copy(data, ts-1..-1) : data.pack('c*')
2736
+ text = copy(data, ts ? ts-1 : 0, -1)
2633
2737
  raise ScannerError.new("Scan error at '#{text}'")
2634
2738
  end
2635
2739
 
@@ -2657,22 +2761,41 @@ end
2657
2761
  end
2658
2762
 
2659
2763
  # Emits an array with the details of the scanned pattern
2660
- def emit(type, token, text, ts, te)
2764
+ def emit(type, token, text)
2661
2765
  #puts "EMIT: type: #{type}, token: #{token}, text: #{text}, ts: #{ts}, te: #{te}"
2662
2766
 
2663
2767
  emit_literal if literal
2664
2768
 
2769
+ # Ragel runs with byte-based indices (ts, te). These are of little value to
2770
+ # end-users, so we keep track of char-based indices and emit those instead.
2771
+ ts_char_pos = char_pos
2772
+ te_char_pos = char_pos + text.length
2773
+
2665
2774
  if block
2666
- block.call type, token, text, ts, te
2775
+ block.call type, token, text, ts_char_pos, te_char_pos
2667
2776
  end
2668
2777
 
2669
- tokens << [type, token, text, ts, te]
2778
+ tokens << [type, token, text, ts_char_pos, te_char_pos]
2779
+
2780
+ self.char_pos = te_char_pos
2670
2781
  end
2671
2782
 
2672
2783
  private
2673
2784
 
2674
2785
  attr_accessor :tokens, :literal, :block, :free_spacing, :spacing_stack,
2675
- :group_depth, :set_depth, :conditional_stack
2786
+ :group_depth, :set_depth, :conditional_stack, :char_pos
2787
+
2788
+ def free_spacing?(input_object, options)
2789
+ if options && !input_object.is_a?(String)
2790
+ raise ArgumentError, 'options cannot be supplied unless scanning a String'
2791
+ end
2792
+
2793
+ options = input_object.options if input_object.is_a?(::Regexp)
2794
+
2795
+ return false unless options
2796
+
2797
+ options & Regexp::EXTENDED != 0
2798
+ end
2676
2799
 
2677
2800
  def in_group?
2678
2801
  group_depth > 0
@@ -2683,36 +2806,25 @@ end
2683
2806
  end
2684
2807
 
2685
2808
  # Copy from ts to te from data as text
2686
- def copy(data, range)
2687
- data[range].pack('c*')
2688
- end
2689
-
2690
- # Copy from ts to te from data as text, returning an array with the text
2691
- # and the offsets used to copy it.
2692
- def text(data, ts, te, soff = 0)
2693
- [copy(data, ts-soff..te-1), ts-soff, te]
2809
+ def copy(data, ts, te)
2810
+ data[ts...te].pack('c*').force_encoding('utf-8')
2694
2811
  end
2695
2812
 
2696
2813
  # Appends one or more characters to the literal buffer, to be emitted later
2697
- # by a call to emit_literal. Contents can be a mix of ASCII and UTF-8.
2814
+ # by a call to emit_literal.
2698
2815
  def append_literal(data, ts, te)
2699
2816
  self.literal = literal || []
2700
- literal << text(data, ts, te)
2817
+ literal << copy(data, ts, te)
2701
2818
  end
2702
2819
 
2703
- # Emits the literal run collected by calls to the append_literal method,
2704
- # using the total start (ts) and end (te) offsets of the run.
2820
+ # Emits the literal run collected by calls to the append_literal method.
2705
2821
  def emit_literal
2706
- ts, te = literal.first[1], literal.last[2]
2707
- text = literal.map {|t| t[0]}.join
2708
-
2709
- text.force_encoding('utf-8') if text.respond_to?(:force_encoding)
2710
-
2822
+ text = literal.join
2711
2823
  self.literal = nil
2712
- emit(:literal, :literal, text, ts, te)
2824
+ emit(:literal, :literal, text)
2713
2825
  end
2714
2826
 
2715
- def emit_options(text, ts, te)
2827
+ def emit_options(text)
2716
2828
  token = nil
2717
2829
 
2718
2830
  # Ruby allows things like '(?-xxxx)' or '(?xx-xx--xx-:abc)'.
@@ -2738,14 +2850,14 @@ end
2738
2850
  token = :options_switch
2739
2851
  end
2740
2852
 
2741
- emit(:group, token, text, ts, te)
2853
+ emit(:group, token, text)
2742
2854
  end
2743
2855
 
2744
2856
  def emit_meta_control_sequence(data, ts, te, token)
2745
2857
  if data.last < 0x00 || data.last > 0x7F
2746
2858
  validation_error(:sequence, 'escape', token.to_s)
2747
2859
  end
2748
- emit(:escape, token, *text(data, ts, te, 1))
2860
+ emit(:escape, token, copy(data, ts-1, te))
2749
2861
  end
2750
2862
 
2751
2863
  # Centralizes and unifies the handling of validation related