rubyjedi-oga 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +13 -0
  3. data/LICENSE +362 -0
  4. data/README.md +317 -0
  5. data/doc/css/common.css +77 -0
  6. data/doc/css_selectors.md +935 -0
  7. data/doc/manually_creating_documents.md +67 -0
  8. data/doc/migrating_from_nokogiri.md +169 -0
  9. data/doc/xml_namespaces.md +63 -0
  10. data/ext/c/extconf.rb +11 -0
  11. data/ext/c/lexer.c +2595 -0
  12. data/ext/c/lexer.h +16 -0
  13. data/ext/c/lexer.rl +198 -0
  14. data/ext/c/liboga.c +6 -0
  15. data/ext/c/liboga.h +11 -0
  16. data/ext/java/Liboga.java +14 -0
  17. data/ext/java/org/liboga/xml/Lexer.java +1363 -0
  18. data/ext/java/org/liboga/xml/Lexer.rl +223 -0
  19. data/ext/ragel/base_lexer.rl +633 -0
  20. data/lib/oga.rb +57 -0
  21. data/lib/oga/blacklist.rb +40 -0
  22. data/lib/oga/css/lexer.rb +743 -0
  23. data/lib/oga/css/parser.rb +976 -0
  24. data/lib/oga/entity_decoder.rb +21 -0
  25. data/lib/oga/html/entities.rb +2150 -0
  26. data/lib/oga/html/parser.rb +25 -0
  27. data/lib/oga/html/sax_parser.rb +18 -0
  28. data/lib/oga/lru.rb +160 -0
  29. data/lib/oga/oga.rb +57 -0
  30. data/lib/oga/version.rb +3 -0
  31. data/lib/oga/whitelist.rb +20 -0
  32. data/lib/oga/xml/attribute.rb +136 -0
  33. data/lib/oga/xml/cdata.rb +17 -0
  34. data/lib/oga/xml/character_node.rb +37 -0
  35. data/lib/oga/xml/comment.rb +17 -0
  36. data/lib/oga/xml/default_namespace.rb +13 -0
  37. data/lib/oga/xml/doctype.rb +82 -0
  38. data/lib/oga/xml/document.rb +108 -0
  39. data/lib/oga/xml/element.rb +428 -0
  40. data/lib/oga/xml/entities.rb +122 -0
  41. data/lib/oga/xml/html_void_elements.rb +15 -0
  42. data/lib/oga/xml/lexer.rb +550 -0
  43. data/lib/oga/xml/namespace.rb +48 -0
  44. data/lib/oga/xml/node.rb +219 -0
  45. data/lib/oga/xml/node_set.rb +333 -0
  46. data/lib/oga/xml/parser.rb +631 -0
  47. data/lib/oga/xml/processing_instruction.rb +37 -0
  48. data/lib/oga/xml/pull_parser.rb +175 -0
  49. data/lib/oga/xml/querying.rb +56 -0
  50. data/lib/oga/xml/sax_parser.rb +192 -0
  51. data/lib/oga/xml/text.rb +66 -0
  52. data/lib/oga/xml/traversal.rb +50 -0
  53. data/lib/oga/xml/xml_declaration.rb +65 -0
  54. data/lib/oga/xpath/evaluator.rb +1798 -0
  55. data/lib/oga/xpath/lexer.rb +1958 -0
  56. data/lib/oga/xpath/parser.rb +622 -0
  57. data/oga.gemspec +45 -0
  58. metadata +227 -0
@@ -0,0 +1,1958 @@
1
+
2
+ # line 1 "lib/oga/xpath/lexer.rl"
3
+
4
+ # line 3 "lib/oga/xpath/lexer.rl"
5
+ module Oga
6
+ module XPath
7
+ ##
8
+ # Lexer for turning XPath expressions into a set of tokens. Tokens are
9
+ # returned as arrays with every array having two values:
10
+ #
11
+ # 1. The token type as a symbol
12
+ # 2. The token value or nil if there is no value
13
+ #
14
+ # Basic usage of this lexer is as following:
15
+ #
16
+ # lexer = Oga::XPath::Lexer.new('//foo/bar')
17
+ # tokens = lexer.lex
18
+ #
19
+ # Alternatively you can stream tokens instead of returning them as a whole:
20
+ #
21
+ # lexer = Oga::XPath::Lexer.new('//foo/bar')
22
+ #
23
+ # lexer.advance do |type, value|
24
+ #
25
+ # end
26
+ #
27
+ # Unlike the XML lexer the XPath lexer does not support IO instances, it can
28
+ # only lex strings.
29
+ #
30
+ # ## Thread Safety
31
+ #
32
+ # This class keeps track of an internal state. As a result it's not safe to
33
+ # share a single instance between multiple threads. However, you're free to
34
+ # use separate instances per thread as there is no global (= class level)
35
+ # shared state.
36
+ #
37
+ # @api private
38
+ #
39
+ class Lexer
40
+
41
+ # line 42 "lib/oga/xpath/lexer.rb"
42
+ class << self
43
+ attr_accessor :_xpath_lexer_trans_keys
44
+ private :_xpath_lexer_trans_keys, :_xpath_lexer_trans_keys=
45
+ end
46
+ self._xpath_lexer_trans_keys = [
47
+ 0, 0, 32, 32, 32, 32,
48
+ 110, 110, 100, 100, 32,
49
+ 32, 105, 105, 118, 118,
50
+ 32, 32, 111, 111, 100, 100,
51
+ 32, 32, 114, 114, 32,
52
+ 32, 61, 61, 34, 34,
53
+ 42, 122, 39, 39, 43, 57,
54
+ 48, 57, 58, 58, 41,
55
+ 41, 9, 124, 42, 111,
56
+ 0, 0, 0, 0, 0, 0,
57
+ 0, 0, 0, 0, 0,
58
+ 0, 0, 0, 45, 122,
59
+ 43, 57, 46, 57, 46, 57,
60
+ 46, 46, 47, 47, 61,
61
+ 61, 0, 0, 0, 0,
62
+ 61, 61, 0, 0, 45, 122,
63
+ 45, 122, 45, 122, 45,
64
+ 122, 45, 122, 45, 122,
65
+ 45, 122, 45, 122, 45, 122,
66
+ 45, 122, 45, 122, 45,
67
+ 122, 45, 122, 45, 122,
68
+ 45, 122, 45, 122, 45, 122,
69
+ 45, 122, 45, 122, 45,
70
+ 122, 45, 122, 45, 122,
71
+ 45, 122, 45, 122, 45, 122,
72
+ 45, 122, 45, 122, 45,
73
+ 122, 45, 122, 45, 122,
74
+ 45, 122, 45, 122, 45, 122,
75
+ 40, 122, 45, 122, 45,
76
+ 122, 45, 122, 45, 122,
77
+ 45, 122, 45, 122, 45, 122,
78
+ 45, 122, 45, 122, 45,
79
+ 122, 45, 122, 45, 122,
80
+ 45, 122, 45, 122, 45, 122,
81
+ 45, 122, 45, 122, 45,
82
+ 122, 45, 122, 45, 122,
83
+ 45, 122, 45, 122, 45, 122,
84
+ 45, 122, 45, 122, 45,
85
+ 122, 45, 122, 45, 122,
86
+ 45, 122, 45, 122, 45, 122,
87
+ 45, 122, 45, 122, 45,
88
+ 122, 45, 122, 45, 122,
89
+ 45, 122, 45, 122, 45, 122,
90
+ 45, 122, 45, 122, 45,
91
+ 122, 45, 122, 45, 122,
92
+ 45, 122, 45, 122, 45, 122,
93
+ 45, 122, 45, 122, 45,
94
+ 122, 45, 122, 45, 122,
95
+ 45, 122, 45, 122, 45, 122,
96
+ 45, 122, 45, 122, 45,
97
+ 122, 45, 122, 45, 122,
98
+ 45, 122, 45, 122, 45, 122,
99
+ 45, 122, 0, 0, 0
100
+ ]
101
+
102
+ class << self
103
+ attr_accessor :_xpath_lexer_key_spans
104
+ private :_xpath_lexer_key_spans, :_xpath_lexer_key_spans=
105
+ end
106
+ self._xpath_lexer_key_spans = [
107
+ 0, 1, 1, 1, 1, 1, 1, 1,
108
+ 1, 1, 1, 1, 1, 1, 1, 1,
109
+ 81, 1, 15, 10, 1, 1, 116, 70,
110
+ 0, 0, 0, 0, 0, 0, 0, 78,
111
+ 15, 12, 12, 1, 1, 1, 0, 0,
112
+ 1, 0, 78, 78, 78, 78, 78, 78,
113
+ 78, 78, 78, 78, 78, 78, 78, 78,
114
+ 78, 78, 78, 78, 78, 78, 78, 78,
115
+ 78, 78, 78, 78, 78, 78, 78, 78,
116
+ 78, 78, 78, 83, 78, 78, 78, 78,
117
+ 78, 78, 78, 78, 78, 78, 78, 78,
118
+ 78, 78, 78, 78, 78, 78, 78, 78,
119
+ 78, 78, 78, 78, 78, 78, 78, 78,
120
+ 78, 78, 78, 78, 78, 78, 78, 78,
121
+ 78, 78, 78, 78, 78, 78, 78, 78,
122
+ 78, 78, 78, 78, 78, 78, 78, 78,
123
+ 78, 78, 78, 78, 78, 78, 78, 78,
124
+ 78, 78, 78, 78, 0
125
+ ]
126
+
127
+ class << self
128
+ attr_accessor :_xpath_lexer_index_offsets
129
+ private :_xpath_lexer_index_offsets, :_xpath_lexer_index_offsets=
130
+ end
131
+ self._xpath_lexer_index_offsets = [
132
+ 0, 0, 2, 4, 6, 8, 10, 12,
133
+ 14, 16, 18, 20, 22, 24, 26, 28,
134
+ 30, 112, 114, 130, 141, 143, 145, 262,
135
+ 333, 334, 335, 336, 337, 338, 339, 340,
136
+ 419, 435, 448, 461, 463, 465, 467, 468,
137
+ 469, 471, 472, 551, 630, 709, 788, 867,
138
+ 946, 1025, 1104, 1183, 1262, 1341, 1420, 1499,
139
+ 1578, 1657, 1736, 1815, 1894, 1973, 2052, 2131,
140
+ 2210, 2289, 2368, 2447, 2526, 2605, 2684, 2763,
141
+ 2842, 2921, 3000, 3079, 3163, 3242, 3321, 3400,
142
+ 3479, 3558, 3637, 3716, 3795, 3874, 3953, 4032,
143
+ 4111, 4190, 4269, 4348, 4427, 4506, 4585, 4664,
144
+ 4743, 4822, 4901, 4980, 5059, 5138, 5217, 5296,
145
+ 5375, 5454, 5533, 5612, 5691, 5770, 5849, 5928,
146
+ 6007, 6086, 6165, 6244, 6323, 6402, 6481, 6560,
147
+ 6639, 6718, 6797, 6876, 6955, 7034, 7113, 7192,
148
+ 7271, 7350, 7429, 7508, 7587, 7666, 7745, 7824,
149
+ 7903, 7982, 8061, 8140, 8219
150
+ ]
151
+
152
+ class << self
153
+ attr_accessor :_xpath_lexer_indicies
154
+ private :_xpath_lexer_indicies, :_xpath_lexer_indicies=
155
+ end
156
+ self._xpath_lexer_indicies = [
157
+ 1, 0, 2, 0, 3, 0, 4, 0,
158
+ 5, 0, 6, 0, 7, 0, 8, 0,
159
+ 9, 0, 10, 0, 11, 0, 12, 0,
160
+ 13, 0, 14, 15, 17, 16, 18, 15,
161
+ 15, 15, 15, 15, 15, 15, 15, 15,
162
+ 15, 15, 15, 15, 15, 15, 15, 15,
163
+ 15, 15, 15, 15, 15, 19, 19, 19,
164
+ 19, 19, 19, 19, 19, 19, 19, 19,
165
+ 19, 19, 19, 19, 19, 19, 19, 19,
166
+ 19, 19, 19, 19, 19, 19, 19, 15,
167
+ 15, 15, 15, 19, 15, 19, 19, 19,
168
+ 19, 19, 19, 19, 19, 19, 19, 19,
169
+ 19, 19, 19, 19, 19, 19, 19, 19,
170
+ 19, 19, 19, 19, 19, 19, 19, 15,
171
+ 17, 20, 22, 21, 22, 21, 21, 23,
172
+ 23, 23, 23, 23, 23, 23, 23, 23,
173
+ 23, 21, 24, 24, 24, 24, 24, 24,
174
+ 24, 24, 24, 24, 21, 26, 25, 27,
175
+ 25, 28, 28, 15, 15, 15, 15, 15,
176
+ 15, 15, 15, 15, 15, 15, 15, 15,
177
+ 15, 15, 15, 15, 15, 15, 15, 15,
178
+ 29, 30, 16, 15, 31, 15, 15, 20,
179
+ 32, 33, 34, 35, 36, 22, 37, 38,
180
+ 23, 23, 23, 23, 23, 23, 23, 23,
181
+ 23, 23, 39, 15, 40, 41, 42, 15,
182
+ 43, 44, 44, 44, 44, 44, 44, 44,
183
+ 44, 44, 44, 44, 44, 44, 44, 44,
184
+ 44, 44, 44, 44, 44, 44, 44, 44,
185
+ 44, 44, 44, 45, 15, 46, 15, 44,
186
+ 15, 47, 44, 48, 49, 44, 50, 44,
187
+ 44, 44, 44, 44, 44, 44, 51, 44,
188
+ 52, 44, 44, 53, 54, 44, 44, 44,
189
+ 44, 44, 44, 15, 55, 15, 57, 56,
190
+ 56, 58, 56, 56, 56, 56, 56, 56,
191
+ 56, 56, 56, 56, 56, 56, 56, 56,
192
+ 56, 56, 56, 56, 56, 56, 56, 56,
193
+ 56, 56, 56, 56, 56, 56, 56, 56,
194
+ 56, 56, 56, 56, 56, 56, 56, 56,
195
+ 56, 56, 56, 56, 56, 56, 56, 56,
196
+ 56, 56, 56, 56, 56, 59, 56, 56,
197
+ 60, 56, 56, 56, 56, 56, 56, 56,
198
+ 56, 61, 56, 62, 56, 63, 64, 65,
199
+ 66, 67, 68, 69, 19, 70, 70, 19,
200
+ 19, 19, 19, 19, 19, 19, 19, 19,
201
+ 19, 70, 70, 70, 70, 70, 70, 70,
202
+ 19, 19, 19, 19, 19, 19, 19, 19,
203
+ 19, 19, 19, 19, 19, 19, 19, 19,
204
+ 19, 19, 19, 19, 19, 19, 19, 19,
205
+ 19, 19, 70, 70, 70, 70, 19, 70,
206
+ 19, 19, 19, 19, 19, 19, 19, 19,
207
+ 19, 19, 19, 19, 19, 19, 19, 19,
208
+ 19, 19, 19, 19, 19, 19, 19, 19,
209
+ 19, 19, 70, 72, 71, 72, 71, 71,
210
+ 73, 73, 73, 73, 73, 73, 73, 73,
211
+ 73, 73, 71, 75, 74, 23, 23, 23,
212
+ 23, 23, 23, 23, 23, 23, 23, 74,
213
+ 75, 76, 24, 24, 24, 24, 24, 24,
214
+ 24, 24, 24, 24, 76, 43, 77, 43,
215
+ 56, 79, 78, 80, 81, 83, 82, 84,
216
+ 44, 85, 85, 44, 44, 44, 44, 44,
217
+ 44, 44, 44, 44, 44, 85, 85, 85,
218
+ 85, 85, 85, 85, 44, 44, 44, 44,
219
+ 44, 44, 44, 44, 44, 44, 44, 44,
220
+ 44, 44, 44, 44, 44, 44, 44, 44,
221
+ 44, 44, 44, 44, 44, 44, 85, 85,
222
+ 85, 85, 44, 85, 44, 44, 44, 44,
223
+ 44, 44, 44, 44, 44, 44, 44, 44,
224
+ 44, 44, 44, 44, 44, 44, 44, 44,
225
+ 44, 44, 44, 44, 44, 44, 85, 44,
226
+ 85, 85, 44, 44, 44, 44, 44, 44,
227
+ 44, 44, 44, 44, 85, 85, 85, 85,
228
+ 85, 85, 85, 44, 44, 44, 44, 44,
229
+ 44, 44, 44, 44, 44, 44, 44, 44,
230
+ 44, 44, 44, 44, 44, 44, 44, 44,
231
+ 44, 44, 44, 44, 44, 85, 85, 85,
232
+ 85, 44, 85, 44, 44, 44, 44, 44,
233
+ 44, 44, 44, 44, 44, 44, 44, 44,
234
+ 86, 44, 44, 44, 44, 44, 87, 44,
235
+ 44, 44, 44, 44, 44, 85, 44, 85,
236
+ 85, 44, 44, 44, 44, 44, 44, 44,
237
+ 44, 44, 44, 85, 85, 85, 85, 85,
238
+ 85, 85, 44, 44, 44, 44, 44, 44,
239
+ 44, 44, 44, 44, 44, 44, 44, 44,
240
+ 44, 44, 44, 44, 44, 44, 44, 44,
241
+ 44, 44, 44, 44, 85, 85, 85, 85,
242
+ 44, 85, 44, 44, 88, 44, 44, 44,
243
+ 44, 44, 44, 44, 44, 44, 44, 44,
244
+ 44, 44, 44, 44, 44, 44, 44, 44,
245
+ 44, 44, 44, 44, 85, 44, 85, 85,
246
+ 44, 44, 44, 44, 44, 44, 44, 44,
247
+ 44, 44, 85, 85, 85, 85, 85, 85,
248
+ 85, 44, 44, 44, 44, 44, 44, 44,
249
+ 44, 44, 44, 44, 44, 44, 44, 44,
250
+ 44, 44, 44, 44, 44, 44, 44, 44,
251
+ 44, 44, 44, 85, 85, 85, 85, 44,
252
+ 85, 44, 44, 44, 44, 89, 44, 44,
253
+ 44, 44, 44, 44, 44, 44, 44, 44,
254
+ 44, 44, 44, 44, 44, 44, 44, 44,
255
+ 44, 44, 44, 85, 44, 85, 85, 44,
256
+ 44, 44, 44, 44, 44, 44, 44, 44,
257
+ 44, 85, 85, 85, 85, 85, 85, 85,
258
+ 44, 44, 44, 44, 44, 44, 44, 44,
259
+ 44, 44, 44, 44, 44, 44, 44, 44,
260
+ 44, 44, 44, 44, 44, 44, 44, 44,
261
+ 44, 44, 85, 85, 85, 85, 44, 85,
262
+ 44, 44, 44, 44, 44, 44, 44, 44,
263
+ 44, 44, 44, 44, 44, 44, 44, 44,
264
+ 44, 44, 90, 44, 44, 44, 44, 44,
265
+ 44, 44, 85, 44, 85, 85, 44, 44,
266
+ 44, 44, 44, 44, 44, 44, 44, 44,
267
+ 85, 85, 85, 85, 85, 85, 85, 44,
268
+ 44, 44, 44, 44, 44, 44, 44, 44,
269
+ 44, 44, 44, 44, 44, 44, 44, 44,
270
+ 44, 44, 44, 44, 44, 44, 44, 44,
271
+ 44, 85, 85, 85, 85, 44, 85, 44,
272
+ 44, 44, 44, 44, 44, 44, 44, 44,
273
+ 44, 44, 44, 44, 44, 44, 44, 44,
274
+ 44, 44, 91, 44, 44, 44, 44, 44,
275
+ 44, 85, 44, 85, 85, 44, 44, 44,
276
+ 44, 44, 44, 44, 44, 44, 44, 85,
277
+ 85, 85, 85, 85, 85, 85, 44, 44,
278
+ 44, 44, 44, 44, 44, 44, 44, 44,
279
+ 44, 44, 44, 44, 44, 44, 44, 44,
280
+ 44, 44, 44, 44, 44, 44, 44, 44,
281
+ 85, 85, 85, 85, 44, 85, 44, 44,
282
+ 44, 44, 44, 44, 44, 44, 44, 44,
283
+ 44, 44, 44, 44, 92, 44, 44, 44,
284
+ 44, 44, 44, 44, 44, 44, 44, 44,
285
+ 85, 44, 85, 85, 44, 44, 44, 44,
286
+ 44, 44, 44, 44, 44, 44, 85, 85,
287
+ 85, 85, 85, 85, 85, 44, 44, 44,
288
+ 44, 44, 44, 44, 44, 44, 44, 44,
289
+ 44, 44, 44, 44, 44, 44, 44, 44,
290
+ 44, 44, 44, 44, 44, 44, 44, 85,
291
+ 85, 85, 85, 44, 85, 44, 44, 44,
292
+ 44, 44, 44, 44, 44, 44, 44, 44,
293
+ 44, 44, 44, 44, 44, 44, 93, 44,
294
+ 44, 44, 44, 44, 44, 44, 44, 85,
295
+ 94, 85, 85, 44, 44, 44, 44, 44,
296
+ 44, 44, 44, 44, 44, 95, 85, 85,
297
+ 85, 85, 85, 85, 44, 44, 44, 44,
298
+ 44, 44, 44, 44, 44, 44, 44, 44,
299
+ 44, 44, 44, 44, 44, 44, 44, 44,
300
+ 44, 44, 44, 44, 44, 44, 85, 85,
301
+ 85, 85, 44, 85, 44, 44, 44, 44,
302
+ 44, 44, 44, 44, 44, 44, 44, 44,
303
+ 44, 44, 44, 44, 44, 44, 44, 44,
304
+ 44, 44, 44, 44, 44, 44, 85, 44,
305
+ 85, 85, 44, 44, 44, 44, 44, 44,
306
+ 44, 44, 44, 44, 85, 85, 85, 85,
307
+ 85, 85, 85, 44, 44, 44, 44, 44,
308
+ 44, 44, 44, 44, 44, 44, 44, 44,
309
+ 44, 44, 44, 44, 44, 44, 44, 44,
310
+ 44, 44, 44, 44, 44, 85, 85, 85,
311
+ 85, 44, 85, 44, 44, 44, 44, 44,
312
+ 44, 44, 44, 44, 44, 44, 44, 44,
313
+ 44, 96, 44, 44, 44, 44, 44, 44,
314
+ 44, 44, 44, 44, 44, 85, 44, 85,
315
+ 85, 44, 44, 44, 44, 44, 44, 44,
316
+ 44, 44, 44, 85, 85, 85, 85, 85,
317
+ 85, 85, 44, 44, 44, 44, 44, 44,
318
+ 44, 44, 44, 44, 44, 44, 44, 44,
319
+ 44, 44, 44, 44, 44, 44, 44, 44,
320
+ 44, 44, 44, 44, 85, 85, 85, 85,
321
+ 44, 85, 44, 44, 44, 44, 44, 44,
322
+ 44, 44, 44, 44, 44, 44, 44, 44,
323
+ 44, 44, 44, 97, 44, 44, 44, 44,
324
+ 44, 44, 44, 44, 85, 98, 85, 85,
325
+ 44, 44, 44, 44, 44, 44, 44, 44,
326
+ 44, 44, 85, 85, 85, 85, 85, 85,
327
+ 85, 44, 44, 44, 44, 44, 44, 44,
328
+ 44, 44, 44, 44, 44, 44, 44, 44,
329
+ 44, 44, 44, 44, 44, 44, 44, 44,
330
+ 44, 44, 44, 85, 85, 85, 85, 44,
331
+ 85, 44, 44, 44, 44, 44, 44, 44,
332
+ 44, 44, 44, 44, 44, 44, 44, 44,
333
+ 44, 44, 44, 44, 44, 44, 44, 44,
334
+ 44, 44, 44, 85, 44, 85, 85, 44,
335
+ 44, 44, 44, 44, 44, 44, 44, 44,
336
+ 44, 85, 85, 85, 85, 85, 85, 85,
337
+ 44, 44, 44, 44, 44, 44, 44, 44,
338
+ 44, 44, 44, 44, 44, 44, 44, 44,
339
+ 44, 44, 44, 44, 44, 44, 44, 44,
340
+ 44, 44, 85, 85, 85, 85, 44, 85,
341
+ 44, 44, 44, 44, 44, 44, 44, 44,
342
+ 44, 44, 44, 44, 44, 44, 44, 44,
343
+ 44, 44, 53, 44, 44, 44, 44, 44,
344
+ 44, 44, 85, 44, 85, 85, 44, 44,
345
+ 44, 44, 44, 44, 44, 44, 44, 44,
346
+ 85, 85, 85, 85, 85, 85, 85, 44,
347
+ 44, 44, 44, 44, 44, 44, 44, 44,
348
+ 44, 44, 44, 44, 44, 44, 44, 44,
349
+ 44, 44, 44, 44, 44, 44, 44, 44,
350
+ 44, 85, 85, 85, 85, 44, 85, 44,
351
+ 44, 44, 44, 99, 44, 44, 44, 44,
352
+ 44, 44, 44, 44, 44, 44, 44, 44,
353
+ 44, 44, 44, 44, 44, 44, 44, 44,
354
+ 44, 85, 44, 85, 85, 44, 44, 44,
355
+ 44, 44, 44, 44, 44, 44, 44, 85,
356
+ 85, 85, 85, 85, 85, 85, 44, 44,
357
+ 44, 44, 44, 44, 44, 44, 44, 44,
358
+ 44, 44, 44, 44, 44, 44, 44, 44,
359
+ 44, 44, 44, 44, 44, 44, 44, 44,
360
+ 85, 85, 85, 85, 44, 85, 44, 44,
361
+ 44, 44, 44, 44, 44, 44, 44, 44,
362
+ 44, 100, 44, 44, 44, 44, 44, 44,
363
+ 44, 44, 44, 44, 44, 44, 44, 44,
364
+ 85, 44, 85, 85, 44, 44, 44, 44,
365
+ 44, 44, 44, 44, 44, 44, 85, 85,
366
+ 85, 85, 85, 85, 85, 44, 44, 44,
367
+ 44, 44, 44, 44, 44, 44, 44, 44,
368
+ 44, 44, 44, 44, 44, 44, 44, 44,
369
+ 44, 44, 44, 44, 44, 44, 44, 85,
370
+ 85, 85, 85, 44, 85, 44, 44, 44,
371
+ 44, 44, 101, 44, 44, 44, 44, 44,
372
+ 44, 44, 44, 44, 44, 44, 44, 44,
373
+ 44, 44, 44, 44, 44, 44, 44, 85,
374
+ 44, 85, 85, 44, 44, 44, 44, 44,
375
+ 44, 44, 44, 44, 44, 95, 85, 85,
376
+ 85, 85, 85, 85, 44, 44, 44, 44,
377
+ 44, 44, 44, 44, 44, 44, 44, 44,
378
+ 44, 44, 44, 44, 44, 44, 44, 44,
379
+ 44, 44, 44, 44, 44, 44, 85, 85,
380
+ 85, 85, 44, 85, 44, 44, 44, 44,
381
+ 44, 44, 44, 44, 44, 44, 44, 44,
382
+ 44, 44, 44, 44, 44, 44, 44, 44,
383
+ 44, 44, 44, 44, 44, 44, 85, 44,
384
+ 85, 85, 44, 44, 44, 44, 44, 44,
385
+ 44, 44, 44, 44, 85, 85, 85, 85,
386
+ 85, 85, 85, 44, 44, 44, 44, 44,
387
+ 44, 44, 44, 44, 44, 44, 44, 44,
388
+ 44, 44, 44, 44, 44, 44, 44, 44,
389
+ 44, 44, 44, 44, 44, 85, 85, 85,
390
+ 85, 44, 85, 44, 44, 44, 44, 44,
391
+ 44, 44, 44, 44, 44, 44, 44, 44,
392
+ 44, 44, 44, 44, 44, 44, 102, 44,
393
+ 44, 44, 44, 44, 44, 85, 44, 85,
394
+ 85, 44, 44, 44, 44, 44, 44, 44,
395
+ 44, 44, 44, 85, 85, 85, 85, 85,
396
+ 85, 85, 44, 44, 44, 44, 44, 44,
397
+ 44, 44, 44, 44, 44, 44, 44, 44,
398
+ 44, 44, 44, 44, 44, 44, 44, 44,
399
+ 44, 44, 44, 44, 85, 85, 85, 85,
400
+ 44, 85, 44, 44, 44, 44, 44, 44,
401
+ 44, 44, 44, 44, 44, 44, 44, 44,
402
+ 44, 44, 44, 103, 44, 44, 44, 44,
403
+ 44, 44, 44, 44, 85, 44, 85, 85,
404
+ 44, 44, 44, 44, 44, 44, 44, 44,
405
+ 44, 44, 85, 85, 85, 85, 85, 85,
406
+ 85, 44, 44, 44, 44, 44, 44, 44,
407
+ 44, 44, 44, 44, 44, 44, 44, 44,
408
+ 44, 44, 44, 44, 44, 44, 44, 44,
409
+ 44, 44, 44, 85, 85, 85, 85, 44,
410
+ 85, 44, 44, 44, 44, 44, 44, 44,
411
+ 44, 104, 44, 44, 44, 44, 44, 44,
412
+ 44, 44, 44, 44, 44, 44, 44, 44,
413
+ 44, 44, 44, 85, 44, 85, 85, 44,
414
+ 44, 44, 44, 44, 44, 44, 44, 44,
415
+ 44, 85, 85, 85, 85, 85, 85, 85,
416
+ 44, 44, 44, 44, 44, 44, 44, 44,
417
+ 44, 44, 44, 44, 44, 44, 44, 44,
418
+ 44, 44, 44, 44, 44, 44, 44, 44,
419
+ 44, 44, 85, 85, 85, 85, 44, 85,
420
+ 44, 105, 44, 44, 44, 44, 44, 44,
421
+ 44, 44, 44, 44, 44, 44, 44, 44,
422
+ 44, 44, 44, 44, 44, 44, 44, 44,
423
+ 44, 44, 85, 44, 85, 85, 44, 44,
424
+ 44, 44, 44, 44, 44, 44, 44, 44,
425
+ 85, 85, 85, 85, 85, 85, 85, 44,
426
+ 44, 44, 44, 44, 44, 44, 44, 44,
427
+ 44, 44, 44, 44, 44, 44, 44, 44,
428
+ 44, 44, 44, 44, 44, 44, 44, 44,
429
+ 44, 85, 85, 85, 85, 44, 85, 44,
430
+ 44, 44, 44, 44, 44, 44, 44, 44,
431
+ 44, 44, 44, 44, 44, 44, 44, 44,
432
+ 44, 44, 44, 106, 44, 44, 44, 44,
433
+ 44, 85, 44, 85, 85, 44, 44, 44,
434
+ 44, 44, 44, 44, 44, 44, 44, 85,
435
+ 85, 85, 85, 85, 85, 85, 44, 44,
436
+ 44, 44, 44, 44, 44, 44, 44, 44,
437
+ 44, 44, 44, 44, 44, 44, 44, 44,
438
+ 44, 44, 44, 44, 44, 44, 44, 44,
439
+ 85, 85, 85, 85, 44, 85, 44, 44,
440
+ 44, 44, 44, 44, 44, 44, 44, 44,
441
+ 44, 44, 44, 44, 44, 44, 44, 44,
442
+ 44, 107, 44, 44, 44, 44, 44, 44,
443
+ 85, 44, 85, 85, 44, 44, 44, 44,
444
+ 44, 44, 44, 44, 44, 44, 85, 85,
445
+ 85, 85, 85, 85, 85, 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, 44, 44, 85,
449
+ 85, 85, 85, 44, 85, 44, 44, 44,
450
+ 44, 101, 44, 44, 44, 44, 44, 44,
451
+ 44, 44, 44, 44, 44, 44, 44, 44,
452
+ 44, 44, 44, 44, 44, 44, 44, 85,
453
+ 44, 85, 85, 44, 44, 44, 44, 44,
454
+ 44, 44, 44, 44, 44, 85, 85, 85,
455
+ 85, 85, 85, 85, 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, 44, 44, 85, 85,
459
+ 85, 85, 44, 85, 44, 44, 44, 44,
460
+ 44, 44, 44, 108, 44, 44, 44, 44,
461
+ 44, 44, 109, 44, 44, 44, 44, 44,
462
+ 44, 44, 44, 44, 44, 44, 85, 44,
463
+ 85, 85, 44, 44, 44, 44, 44, 44,
464
+ 44, 44, 44, 44, 85, 85, 85, 85,
465
+ 85, 85, 85, 44, 44, 44, 44, 44,
466
+ 44, 44, 44, 44, 44, 44, 44, 44,
467
+ 44, 44, 44, 44, 44, 44, 44, 44,
468
+ 44, 44, 44, 44, 44, 85, 85, 85,
469
+ 85, 44, 85, 44, 44, 44, 44, 44,
470
+ 44, 44, 44, 110, 44, 44, 44, 44,
471
+ 44, 44, 44, 44, 44, 44, 44, 44,
472
+ 44, 44, 44, 44, 44, 85, 44, 85,
473
+ 85, 44, 44, 44, 44, 44, 44, 44,
474
+ 44, 44, 44, 85, 85, 85, 85, 85,
475
+ 85, 85, 44, 44, 44, 44, 44, 44,
476
+ 44, 44, 44, 44, 44, 44, 44, 44,
477
+ 44, 44, 44, 44, 44, 44, 44, 44,
478
+ 44, 44, 44, 44, 85, 85, 85, 85,
479
+ 44, 85, 44, 44, 44, 44, 44, 44,
480
+ 44, 44, 44, 44, 44, 111, 44, 44,
481
+ 44, 44, 44, 44, 44, 44, 44, 44,
482
+ 44, 44, 44, 44, 85, 44, 85, 85,
483
+ 44, 44, 44, 44, 44, 44, 44, 44,
484
+ 44, 44, 85, 85, 85, 85, 85, 85,
485
+ 85, 44, 44, 44, 44, 44, 44, 44,
486
+ 44, 44, 44, 44, 44, 44, 44, 44,
487
+ 44, 44, 44, 44, 44, 44, 44, 44,
488
+ 44, 44, 44, 85, 85, 85, 85, 44,
489
+ 85, 44, 44, 44, 101, 44, 44, 44,
490
+ 44, 44, 44, 44, 44, 44, 44, 44,
491
+ 44, 44, 44, 44, 44, 44, 44, 44,
492
+ 44, 44, 44, 85, 44, 85, 85, 44,
493
+ 44, 44, 44, 44, 44, 44, 44, 44,
494
+ 44, 85, 85, 85, 85, 85, 85, 85,
495
+ 44, 44, 44, 44, 44, 44, 44, 44,
496
+ 44, 44, 44, 44, 44, 44, 44, 44,
497
+ 44, 44, 44, 44, 44, 44, 44, 44,
498
+ 44, 44, 85, 85, 85, 85, 44, 85,
499
+ 44, 44, 44, 44, 44, 44, 44, 44,
500
+ 44, 44, 44, 44, 112, 44, 44, 44,
501
+ 44, 44, 44, 44, 44, 44, 44, 44,
502
+ 44, 44, 85, 44, 85, 85, 44, 44,
503
+ 44, 44, 44, 44, 44, 44, 44, 44,
504
+ 85, 85, 85, 85, 85, 85, 85, 44,
505
+ 44, 44, 44, 44, 44, 44, 44, 44,
506
+ 44, 44, 44, 44, 44, 44, 44, 44,
507
+ 44, 44, 44, 44, 44, 44, 44, 44,
508
+ 44, 85, 85, 85, 85, 44, 85, 44,
509
+ 44, 44, 44, 44, 44, 44, 44, 44,
510
+ 44, 44, 44, 113, 44, 44, 44, 44,
511
+ 44, 44, 44, 44, 44, 44, 44, 44,
512
+ 44, 85, 44, 85, 85, 44, 44, 44,
513
+ 44, 44, 44, 44, 44, 44, 44, 85,
514
+ 85, 85, 85, 85, 85, 85, 44, 44,
515
+ 44, 44, 44, 44, 44, 44, 44, 44,
516
+ 44, 44, 44, 44, 44, 44, 44, 44,
517
+ 44, 44, 44, 44, 44, 44, 44, 44,
518
+ 85, 85, 85, 85, 44, 85, 44, 44,
519
+ 44, 44, 114, 44, 44, 44, 44, 44,
520
+ 44, 44, 44, 44, 44, 44, 44, 44,
521
+ 44, 44, 44, 44, 44, 44, 44, 44,
522
+ 85, 44, 85, 85, 44, 44, 44, 44,
523
+ 44, 44, 44, 44, 44, 44, 85, 85,
524
+ 85, 85, 85, 85, 85, 44, 44, 44,
525
+ 44, 44, 44, 44, 44, 44, 44, 44,
526
+ 44, 44, 44, 44, 44, 44, 44, 44,
527
+ 44, 44, 44, 44, 44, 44, 44, 85,
528
+ 85, 85, 85, 44, 85, 44, 44, 44,
529
+ 44, 44, 44, 44, 44, 44, 44, 44,
530
+ 44, 44, 115, 44, 44, 44, 44, 44,
531
+ 44, 44, 44, 44, 44, 44, 44, 85,
532
+ 44, 85, 85, 44, 44, 44, 44, 44,
533
+ 44, 44, 44, 44, 44, 85, 85, 85,
534
+ 85, 85, 85, 85, 44, 44, 44, 44,
535
+ 44, 44, 44, 44, 44, 44, 44, 44,
536
+ 44, 44, 44, 44, 44, 44, 44, 44,
537
+ 44, 44, 44, 44, 44, 44, 85, 85,
538
+ 85, 85, 44, 85, 44, 44, 44, 44,
539
+ 44, 44, 44, 44, 44, 44, 44, 44,
540
+ 44, 44, 44, 44, 44, 44, 44, 116,
541
+ 44, 44, 44, 44, 44, 44, 85, 117,
542
+ 85, 85, 85, 85, 44, 85, 85, 44,
543
+ 44, 44, 44, 44, 44, 44, 44, 44,
544
+ 44, 85, 85, 85, 85, 85, 85, 85,
545
+ 44, 44, 44, 44, 44, 44, 44, 44,
546
+ 44, 44, 44, 44, 44, 44, 44, 44,
547
+ 44, 44, 44, 44, 44, 44, 44, 44,
548
+ 44, 44, 85, 85, 85, 85, 44, 85,
549
+ 44, 44, 44, 44, 44, 44, 44, 44,
550
+ 44, 44, 44, 44, 44, 44, 44, 44,
551
+ 44, 44, 44, 44, 44, 44, 44, 44,
552
+ 44, 44, 85, 44, 85, 85, 44, 44,
553
+ 44, 44, 44, 44, 44, 44, 44, 44,
554
+ 85, 85, 85, 85, 85, 85, 85, 44,
555
+ 44, 44, 44, 44, 44, 44, 44, 44,
556
+ 44, 44, 44, 44, 44, 44, 44, 44,
557
+ 44, 44, 44, 44, 44, 44, 44, 44,
558
+ 44, 85, 85, 85, 85, 44, 85, 44,
559
+ 44, 44, 44, 118, 44, 44, 44, 44,
560
+ 44, 44, 44, 44, 44, 44, 44, 44,
561
+ 44, 44, 44, 44, 44, 44, 44, 44,
562
+ 44, 85, 44, 85, 85, 44, 44, 44,
563
+ 44, 44, 44, 44, 44, 44, 44, 85,
564
+ 85, 85, 85, 85, 85, 85, 44, 44,
565
+ 44, 44, 44, 44, 44, 44, 44, 44,
566
+ 44, 44, 44, 44, 44, 44, 44, 44,
567
+ 44, 44, 44, 44, 44, 44, 44, 44,
568
+ 85, 85, 85, 85, 44, 85, 44, 44,
569
+ 44, 44, 44, 44, 44, 44, 44, 44,
570
+ 44, 44, 44, 44, 44, 44, 44, 44,
571
+ 119, 44, 44, 44, 44, 44, 44, 44,
572
+ 85, 44, 85, 85, 44, 44, 44, 44,
573
+ 44, 44, 44, 44, 44, 44, 85, 85,
574
+ 85, 85, 85, 85, 85, 44, 44, 44,
575
+ 44, 44, 44, 44, 44, 44, 44, 44,
576
+ 44, 44, 44, 44, 44, 44, 44, 44,
577
+ 44, 44, 44, 44, 44, 44, 44, 85,
578
+ 85, 85, 85, 44, 85, 44, 44, 120,
579
+ 44, 44, 44, 44, 44, 44, 44, 44,
580
+ 44, 44, 44, 44, 44, 44, 44, 44,
581
+ 44, 44, 44, 44, 44, 44, 44, 85,
582
+ 44, 85, 85, 44, 44, 44, 44, 44,
583
+ 44, 44, 44, 44, 44, 85, 85, 85,
584
+ 85, 85, 85, 85, 44, 44, 44, 44,
585
+ 44, 44, 44, 44, 44, 44, 44, 44,
586
+ 44, 44, 44, 44, 44, 44, 44, 44,
587
+ 44, 44, 44, 44, 44, 44, 85, 85,
588
+ 85, 85, 44, 85, 44, 44, 44, 44,
589
+ 121, 44, 44, 44, 44, 44, 44, 44,
590
+ 44, 44, 44, 44, 44, 44, 44, 44,
591
+ 44, 44, 44, 44, 44, 44, 85, 44,
592
+ 85, 85, 44, 44, 44, 44, 44, 44,
593
+ 44, 44, 44, 44, 85, 85, 85, 85,
594
+ 85, 85, 85, 44, 44, 44, 44, 44,
595
+ 44, 44, 44, 44, 44, 44, 44, 44,
596
+ 44, 44, 44, 44, 44, 44, 44, 44,
597
+ 44, 44, 44, 44, 44, 85, 85, 85,
598
+ 85, 44, 85, 44, 44, 44, 44, 44,
599
+ 44, 44, 44, 44, 44, 44, 44, 44,
600
+ 122, 44, 44, 44, 44, 44, 44, 44,
601
+ 44, 44, 44, 44, 44, 85, 44, 85,
602
+ 85, 44, 44, 44, 44, 44, 44, 44,
603
+ 44, 44, 44, 85, 85, 85, 85, 85,
604
+ 85, 85, 44, 44, 44, 44, 44, 44,
605
+ 44, 44, 44, 44, 44, 44, 44, 44,
606
+ 44, 44, 44, 44, 44, 44, 44, 44,
607
+ 44, 44, 44, 44, 85, 85, 85, 85,
608
+ 44, 85, 44, 44, 44, 123, 44, 44,
609
+ 44, 44, 44, 44, 44, 44, 44, 44,
610
+ 44, 44, 44, 44, 44, 44, 44, 44,
611
+ 44, 44, 44, 44, 85, 44, 85, 85,
612
+ 44, 44, 44, 44, 44, 44, 44, 44,
613
+ 44, 44, 85, 85, 85, 85, 85, 85,
614
+ 85, 44, 44, 44, 44, 44, 44, 44,
615
+ 44, 44, 44, 44, 44, 44, 44, 44,
616
+ 44, 44, 44, 44, 44, 44, 44, 44,
617
+ 44, 44, 44, 85, 85, 85, 85, 44,
618
+ 85, 124, 44, 44, 44, 44, 44, 44,
619
+ 44, 44, 44, 44, 44, 44, 44, 44,
620
+ 44, 44, 44, 44, 44, 44, 44, 44,
621
+ 44, 44, 44, 85, 44, 85, 85, 44,
622
+ 44, 44, 44, 44, 44, 44, 44, 44,
623
+ 44, 85, 85, 85, 85, 85, 85, 85,
624
+ 44, 44, 44, 44, 44, 44, 44, 44,
625
+ 44, 44, 44, 44, 44, 44, 44, 44,
626
+ 44, 44, 44, 44, 44, 44, 44, 44,
627
+ 44, 44, 85, 85, 85, 85, 44, 85,
628
+ 44, 44, 44, 44, 44, 44, 44, 44,
629
+ 44, 44, 44, 44, 44, 125, 44, 44,
630
+ 44, 44, 44, 44, 44, 44, 44, 44,
631
+ 44, 44, 85, 44, 85, 85, 44, 44,
632
+ 44, 44, 44, 44, 44, 44, 44, 44,
633
+ 85, 85, 85, 85, 85, 85, 85, 44,
634
+ 44, 44, 44, 44, 44, 44, 44, 44,
635
+ 44, 44, 44, 44, 44, 44, 44, 44,
636
+ 44, 44, 44, 44, 44, 44, 44, 44,
637
+ 44, 85, 85, 85, 85, 44, 85, 44,
638
+ 44, 44, 44, 44, 44, 44, 44, 44,
639
+ 44, 44, 44, 44, 44, 44, 44, 44,
640
+ 44, 44, 93, 44, 44, 44, 44, 44,
641
+ 44, 85, 44, 85, 85, 44, 44, 44,
642
+ 44, 44, 44, 44, 44, 44, 44, 85,
643
+ 85, 85, 85, 85, 85, 85, 44, 44,
644
+ 44, 44, 44, 44, 44, 44, 44, 44,
645
+ 44, 44, 44, 44, 44, 44, 44, 44,
646
+ 44, 44, 44, 44, 44, 44, 44, 44,
647
+ 85, 85, 85, 85, 44, 85, 44, 44,
648
+ 44, 44, 44, 44, 44, 44, 44, 44,
649
+ 44, 44, 44, 44, 126, 44, 44, 44,
650
+ 44, 44, 44, 44, 44, 44, 44, 44,
651
+ 85, 44, 85, 85, 44, 44, 44, 44,
652
+ 44, 44, 44, 44, 44, 44, 85, 85,
653
+ 85, 85, 85, 85, 85, 44, 44, 44,
654
+ 44, 44, 44, 44, 44, 44, 44, 44,
655
+ 44, 44, 44, 44, 44, 44, 44, 44,
656
+ 44, 44, 44, 44, 44, 44, 44, 85,
657
+ 85, 85, 85, 44, 85, 44, 44, 44,
658
+ 44, 44, 44, 44, 44, 44, 44, 44,
659
+ 127, 44, 44, 44, 44, 44, 44, 44,
660
+ 44, 44, 44, 44, 44, 44, 44, 85,
661
+ 44, 85, 85, 44, 44, 44, 44, 44,
662
+ 44, 44, 44, 44, 44, 85, 85, 85,
663
+ 85, 85, 85, 85, 44, 44, 44, 44,
664
+ 44, 44, 44, 44, 44, 44, 44, 44,
665
+ 44, 44, 44, 44, 44, 44, 44, 44,
666
+ 44, 44, 44, 44, 44, 44, 85, 85,
667
+ 85, 85, 44, 85, 44, 44, 44, 44,
668
+ 44, 44, 44, 44, 44, 44, 44, 128,
669
+ 44, 44, 44, 44, 44, 44, 44, 44,
670
+ 44, 44, 44, 44, 44, 44, 85, 44,
671
+ 85, 85, 44, 44, 44, 44, 44, 44,
672
+ 44, 44, 44, 44, 85, 85, 85, 85,
673
+ 85, 85, 85, 44, 44, 44, 44, 44,
674
+ 44, 44, 44, 44, 44, 44, 44, 44,
675
+ 44, 44, 44, 44, 44, 44, 44, 44,
676
+ 44, 44, 44, 44, 44, 85, 85, 85,
677
+ 85, 44, 85, 44, 44, 44, 44, 44,
678
+ 44, 44, 44, 44, 44, 44, 44, 44,
679
+ 44, 129, 44, 44, 44, 44, 44, 44,
680
+ 44, 44, 44, 44, 44, 85, 44, 85,
681
+ 85, 44, 44, 44, 44, 44, 44, 44,
682
+ 44, 44, 44, 85, 85, 85, 85, 85,
683
+ 85, 85, 44, 44, 44, 44, 44, 44,
684
+ 44, 44, 44, 44, 44, 44, 44, 44,
685
+ 44, 44, 44, 44, 44, 44, 44, 44,
686
+ 44, 44, 44, 44, 85, 85, 85, 85,
687
+ 44, 85, 44, 44, 44, 44, 44, 44,
688
+ 44, 44, 44, 44, 44, 44, 44, 44,
689
+ 44, 44, 44, 44, 44, 44, 44, 44,
690
+ 130, 44, 44, 44, 85, 44, 85, 85,
691
+ 44, 44, 44, 44, 44, 44, 44, 44,
692
+ 44, 44, 85, 85, 85, 85, 85, 85,
693
+ 85, 44, 44, 44, 44, 44, 44, 44,
694
+ 44, 44, 44, 44, 44, 44, 44, 44,
695
+ 44, 44, 44, 44, 44, 44, 44, 44,
696
+ 44, 44, 44, 85, 85, 85, 85, 44,
697
+ 85, 44, 44, 44, 44, 44, 44, 44,
698
+ 44, 131, 44, 44, 44, 44, 44, 44,
699
+ 44, 44, 44, 44, 44, 44, 44, 44,
700
+ 44, 44, 44, 85, 44, 85, 85, 44,
701
+ 44, 44, 44, 44, 44, 44, 44, 44,
702
+ 44, 85, 85, 85, 85, 85, 85, 85,
703
+ 44, 44, 44, 44, 44, 44, 44, 44,
704
+ 44, 44, 44, 44, 44, 44, 44, 44,
705
+ 44, 44, 44, 44, 44, 44, 44, 44,
706
+ 44, 44, 85, 85, 85, 85, 44, 85,
707
+ 44, 44, 44, 44, 44, 44, 44, 44,
708
+ 44, 44, 44, 44, 44, 132, 44, 44,
709
+ 44, 44, 44, 44, 44, 44, 44, 44,
710
+ 44, 44, 85, 44, 85, 85, 44, 44,
711
+ 44, 44, 44, 44, 44, 44, 44, 44,
712
+ 85, 85, 85, 85, 85, 85, 85, 44,
713
+ 44, 44, 44, 44, 44, 44, 44, 44,
714
+ 44, 44, 44, 44, 44, 44, 44, 44,
715
+ 44, 44, 44, 44, 44, 44, 44, 44,
716
+ 44, 85, 85, 85, 85, 44, 85, 44,
717
+ 44, 44, 44, 44, 44, 133, 44, 44,
718
+ 44, 44, 44, 44, 44, 44, 44, 44,
719
+ 44, 44, 44, 44, 44, 44, 44, 44,
720
+ 44, 85, 134, 85, 85, 44, 44, 44,
721
+ 44, 44, 44, 44, 44, 44, 44, 95,
722
+ 85, 85, 85, 85, 85, 85, 44, 44,
723
+ 44, 44, 44, 44, 44, 44, 44, 44,
724
+ 44, 44, 44, 44, 44, 44, 44, 44,
725
+ 44, 44, 44, 44, 44, 44, 44, 44,
726
+ 85, 85, 85, 85, 44, 85, 44, 44,
727
+ 44, 44, 44, 44, 44, 44, 44, 44,
728
+ 44, 44, 44, 44, 44, 44, 44, 44,
729
+ 44, 44, 44, 44, 44, 44, 44, 44,
730
+ 85, 44, 85, 85, 44, 44, 44, 44,
731
+ 44, 44, 44, 44, 44, 44, 85, 85,
732
+ 85, 85, 85, 85, 85, 44, 44, 44,
733
+ 44, 44, 44, 44, 44, 44, 44, 44,
734
+ 44, 44, 44, 44, 44, 44, 44, 44,
735
+ 44, 44, 44, 44, 44, 44, 44, 85,
736
+ 85, 85, 85, 44, 85, 44, 44, 44,
737
+ 44, 44, 44, 44, 44, 44, 44, 44,
738
+ 44, 44, 44, 44, 44, 44, 44, 135,
739
+ 44, 44, 44, 44, 44, 44, 44, 85,
740
+ 44, 85, 85, 44, 44, 44, 44, 44,
741
+ 44, 44, 44, 44, 44, 85, 85, 85,
742
+ 85, 85, 85, 85, 44, 44, 44, 44,
743
+ 44, 44, 44, 44, 44, 44, 44, 44,
744
+ 44, 44, 44, 44, 44, 44, 44, 44,
745
+ 44, 44, 44, 44, 44, 44, 85, 85,
746
+ 85, 85, 44, 85, 44, 44, 44, 44,
747
+ 44, 44, 44, 44, 136, 44, 44, 44,
748
+ 44, 44, 44, 44, 44, 44, 44, 44,
749
+ 44, 44, 44, 44, 44, 44, 85, 44,
750
+ 85, 85, 44, 44, 44, 44, 44, 44,
751
+ 44, 44, 44, 44, 85, 85, 85, 85,
752
+ 85, 85, 85, 44, 44, 44, 44, 44,
753
+ 44, 44, 44, 44, 44, 44, 44, 44,
754
+ 44, 44, 44, 44, 44, 44, 44, 44,
755
+ 44, 44, 44, 44, 44, 85, 85, 85,
756
+ 85, 44, 85, 44, 137, 44, 44, 44,
757
+ 44, 44, 44, 44, 44, 44, 44, 44,
758
+ 44, 44, 44, 44, 44, 44, 44, 44,
759
+ 44, 44, 44, 44, 44, 85, 44, 85,
760
+ 85, 44, 44, 44, 44, 44, 44, 44,
761
+ 44, 44, 44, 85, 85, 85, 85, 85,
762
+ 85, 85, 44, 44, 44, 44, 44, 44,
763
+ 44, 44, 44, 44, 44, 44, 44, 44,
764
+ 44, 44, 44, 44, 44, 44, 44, 44,
765
+ 44, 44, 44, 44, 85, 85, 85, 85,
766
+ 44, 85, 44, 44, 44, 44, 44, 44,
767
+ 44, 44, 44, 44, 44, 138, 44, 44,
768
+ 44, 44, 44, 44, 44, 44, 44, 44,
769
+ 44, 44, 44, 44, 85, 44, 85, 85,
770
+ 44, 44, 44, 44, 44, 44, 44, 44,
771
+ 44, 44, 85, 85, 85, 85, 85, 85,
772
+ 85, 44, 44, 44, 44, 44, 44, 44,
773
+ 44, 44, 44, 44, 44, 44, 44, 44,
774
+ 44, 44, 44, 44, 44, 44, 44, 44,
775
+ 44, 44, 44, 85, 85, 85, 85, 44,
776
+ 85, 44, 44, 44, 44, 44, 44, 44,
777
+ 44, 139, 44, 44, 44, 44, 44, 44,
778
+ 44, 44, 44, 44, 44, 44, 44, 44,
779
+ 44, 44, 44, 85, 44, 85, 85, 44,
780
+ 44, 44, 44, 44, 44, 44, 44, 44,
781
+ 44, 85, 85, 85, 85, 85, 85, 85,
782
+ 44, 44, 44, 44, 44, 44, 44, 44,
783
+ 44, 44, 44, 44, 44, 44, 44, 44,
784
+ 44, 44, 44, 44, 44, 44, 44, 44,
785
+ 44, 44, 85, 85, 85, 85, 44, 85,
786
+ 44, 44, 44, 44, 44, 44, 44, 44,
787
+ 44, 44, 44, 44, 44, 140, 44, 44,
788
+ 44, 44, 44, 44, 44, 44, 44, 44,
789
+ 44, 44, 85, 44, 85, 85, 44, 44,
790
+ 44, 44, 44, 44, 44, 44, 44, 44,
791
+ 85, 85, 85, 85, 85, 85, 85, 44,
792
+ 44, 44, 44, 44, 44, 44, 44, 44,
793
+ 44, 44, 44, 44, 44, 44, 44, 44,
794
+ 44, 44, 44, 44, 44, 44, 44, 44,
795
+ 44, 85, 85, 85, 85, 44, 85, 44,
796
+ 44, 44, 44, 44, 44, 101, 44, 44,
797
+ 44, 44, 44, 44, 44, 44, 44, 44,
798
+ 44, 44, 44, 44, 44, 44, 44, 44,
799
+ 44, 85, 44, 85, 85, 44, 44, 44,
800
+ 44, 44, 44, 44, 44, 44, 44, 85,
801
+ 85, 85, 85, 85, 85, 85, 44, 44,
802
+ 44, 44, 44, 44, 44, 44, 44, 44,
803
+ 44, 44, 44, 44, 44, 44, 44, 44,
804
+ 44, 44, 44, 44, 44, 44, 44, 44,
805
+ 85, 85, 85, 85, 44, 85, 141, 44,
806
+ 44, 44, 44, 44, 44, 44, 44, 44,
807
+ 44, 44, 44, 44, 142, 44, 44, 44,
808
+ 44, 44, 44, 44, 44, 44, 44, 44,
809
+ 85, 44, 85, 85, 44, 44, 44, 44,
810
+ 44, 44, 44, 44, 44, 44, 85, 85,
811
+ 85, 85, 85, 85, 85, 44, 44, 44,
812
+ 44, 44, 44, 44, 44, 44, 44, 44,
813
+ 44, 44, 44, 44, 44, 44, 44, 44,
814
+ 44, 44, 44, 44, 44, 44, 44, 85,
815
+ 85, 85, 85, 44, 85, 44, 44, 44,
816
+ 44, 44, 44, 44, 44, 44, 44, 44,
817
+ 44, 143, 44, 44, 44, 44, 44, 44,
818
+ 44, 44, 44, 44, 44, 44, 44, 85,
819
+ 44, 85, 85, 44, 44, 44, 44, 44,
820
+ 44, 44, 44, 44, 44, 85, 85, 85,
821
+ 85, 85, 85, 85, 44, 44, 44, 44,
822
+ 44, 44, 44, 44, 44, 44, 44, 44,
823
+ 44, 44, 44, 44, 44, 44, 44, 44,
824
+ 44, 44, 44, 44, 44, 44, 85, 85,
825
+ 85, 85, 44, 85, 44, 44, 44, 44,
826
+ 144, 44, 44, 44, 44, 44, 44, 44,
827
+ 44, 44, 44, 44, 44, 44, 44, 44,
828
+ 44, 44, 44, 44, 44, 44, 85, 44,
829
+ 85, 85, 44, 44, 44, 44, 44, 44,
830
+ 44, 44, 44, 44, 85, 85, 85, 85,
831
+ 85, 85, 85, 44, 44, 44, 44, 44,
832
+ 44, 44, 44, 44, 44, 44, 44, 44,
833
+ 44, 44, 44, 44, 44, 44, 44, 44,
834
+ 44, 44, 44, 44, 44, 85, 85, 85,
835
+ 85, 44, 85, 44, 44, 44, 44, 44,
836
+ 44, 44, 44, 44, 44, 44, 44, 44,
837
+ 44, 44, 44, 44, 44, 145, 44, 44,
838
+ 44, 44, 44, 44, 44, 85, 44, 85,
839
+ 85, 44, 44, 44, 44, 44, 44, 44,
840
+ 44, 44, 44, 85, 85, 85, 85, 85,
841
+ 85, 85, 44, 44, 44, 44, 44, 44,
842
+ 44, 44, 44, 44, 44, 44, 44, 44,
843
+ 44, 44, 44, 44, 44, 44, 44, 44,
844
+ 44, 44, 44, 44, 85, 85, 85, 85,
845
+ 44, 85, 44, 44, 44, 44, 44, 44,
846
+ 44, 44, 44, 44, 44, 44, 44, 44,
847
+ 44, 146, 44, 44, 44, 44, 44, 44,
848
+ 44, 44, 44, 44, 85, 44, 85, 85,
849
+ 44, 44, 44, 44, 44, 44, 44, 44,
850
+ 44, 44, 85, 85, 85, 85, 85, 85,
851
+ 85, 44, 44, 44, 44, 44, 44, 44,
852
+ 44, 44, 44, 44, 44, 44, 44, 44,
853
+ 44, 44, 44, 44, 44, 44, 44, 44,
854
+ 44, 44, 44, 85, 85, 85, 85, 44,
855
+ 85, 147, 44, 44, 44, 44, 44, 44,
856
+ 44, 44, 44, 44, 44, 44, 44, 44,
857
+ 44, 44, 44, 44, 44, 44, 44, 44,
858
+ 44, 44, 44, 85, 44, 85, 85, 44,
859
+ 44, 44, 44, 44, 44, 44, 44, 44,
860
+ 44, 85, 85, 85, 85, 85, 85, 85,
861
+ 44, 44, 44, 44, 44, 44, 44, 44,
862
+ 44, 44, 44, 44, 44, 44, 44, 44,
863
+ 44, 44, 44, 44, 44, 44, 44, 44,
864
+ 44, 44, 85, 85, 85, 85, 44, 85,
865
+ 44, 44, 107, 44, 44, 44, 44, 44,
866
+ 44, 44, 44, 44, 44, 44, 44, 44,
867
+ 44, 44, 44, 44, 44, 44, 44, 44,
868
+ 44, 44, 85, 44, 85, 85, 44, 44,
869
+ 44, 44, 44, 44, 44, 44, 44, 44,
870
+ 85, 85, 85, 85, 85, 85, 85, 44,
871
+ 44, 44, 44, 44, 44, 44, 44, 44,
872
+ 44, 44, 44, 44, 44, 44, 44, 44,
873
+ 44, 44, 44, 44, 44, 44, 44, 44,
874
+ 44, 85, 85, 85, 85, 44, 85, 44,
875
+ 44, 44, 148, 44, 44, 44, 44, 44,
876
+ 44, 44, 44, 44, 44, 44, 44, 44,
877
+ 44, 44, 44, 44, 44, 44, 44, 44,
878
+ 44, 85, 44, 85, 85, 44, 44, 44,
879
+ 44, 44, 44, 44, 44, 44, 44, 85,
880
+ 85, 85, 85, 85, 85, 85, 44, 44,
881
+ 44, 44, 44, 44, 44, 44, 44, 44,
882
+ 44, 44, 44, 44, 44, 44, 44, 44,
883
+ 44, 44, 44, 44, 44, 44, 44, 44,
884
+ 85, 85, 85, 85, 44, 85, 44, 44,
885
+ 44, 44, 116, 44, 44, 44, 44, 44,
886
+ 44, 44, 44, 44, 44, 44, 44, 44,
887
+ 44, 44, 44, 44, 44, 44, 44, 44,
888
+ 85, 44, 85, 85, 44, 44, 44, 44,
889
+ 44, 44, 44, 44, 44, 44, 85, 85,
890
+ 85, 85, 85, 85, 85, 44, 44, 44,
891
+ 44, 44, 44, 44, 44, 44, 44, 44,
892
+ 44, 44, 44, 44, 44, 44, 44, 44,
893
+ 44, 44, 44, 44, 44, 44, 44, 85,
894
+ 85, 85, 85, 44, 85, 149, 44, 44,
895
+ 44, 44, 44, 44, 44, 44, 44, 44,
896
+ 44, 44, 44, 44, 44, 44, 150, 44,
897
+ 44, 44, 44, 44, 44, 44, 44, 85,
898
+ 44, 85, 85, 44, 44, 44, 44, 44,
899
+ 44, 44, 44, 44, 44, 85, 85, 85,
900
+ 85, 85, 85, 85, 44, 44, 44, 44,
901
+ 44, 44, 44, 44, 44, 44, 44, 44,
902
+ 44, 44, 44, 44, 44, 44, 44, 44,
903
+ 44, 44, 44, 44, 44, 44, 85, 85,
904
+ 85, 85, 44, 85, 44, 44, 44, 44,
905
+ 44, 44, 44, 44, 44, 44, 44, 44,
906
+ 44, 44, 44, 44, 44, 151, 44, 44,
907
+ 44, 44, 44, 44, 44, 44, 85, 44,
908
+ 85, 85, 44, 44, 44, 44, 44, 44,
909
+ 44, 44, 44, 44, 85, 85, 85, 85,
910
+ 85, 85, 85, 44, 44, 44, 44, 44,
911
+ 44, 44, 44, 44, 44, 44, 44, 44,
912
+ 44, 44, 44, 44, 44, 44, 44, 44,
913
+ 44, 44, 44, 44, 44, 85, 85, 85,
914
+ 85, 44, 85, 44, 44, 44, 44, 152,
915
+ 44, 44, 44, 44, 44, 44, 44, 44,
916
+ 44, 44, 44, 44, 44, 44, 44, 44,
917
+ 44, 44, 44, 44, 44, 85, 44, 85,
918
+ 85, 44, 44, 44, 44, 44, 44, 44,
919
+ 44, 44, 44, 85, 85, 85, 85, 85,
920
+ 85, 85, 44, 44, 44, 44, 44, 44,
921
+ 44, 44, 44, 44, 44, 44, 44, 44,
922
+ 44, 44, 44, 44, 44, 44, 44, 44,
923
+ 44, 44, 44, 44, 85, 85, 85, 85,
924
+ 44, 85, 44, 44, 44, 44, 44, 44,
925
+ 44, 44, 44, 44, 44, 44, 44, 153,
926
+ 44, 44, 44, 44, 44, 44, 44, 44,
927
+ 44, 44, 44, 44, 85, 44, 85, 85,
928
+ 44, 44, 44, 44, 44, 44, 44, 44,
929
+ 44, 44, 85, 85, 85, 85, 85, 85,
930
+ 85, 44, 44, 44, 44, 44, 44, 44,
931
+ 44, 44, 44, 44, 44, 44, 44, 44,
932
+ 44, 44, 44, 44, 44, 44, 44, 44,
933
+ 44, 44, 44, 85, 85, 85, 85, 44,
934
+ 85, 44, 44, 44, 44, 44, 44, 44,
935
+ 44, 44, 44, 44, 44, 44, 44, 44,
936
+ 44, 44, 44, 44, 101, 44, 44, 44,
937
+ 44, 44, 44, 85, 44, 85, 85, 44,
938
+ 44, 44, 44, 44, 44, 44, 44, 44,
939
+ 44, 85, 85, 85, 85, 85, 85, 85,
940
+ 44, 44, 44, 44, 44, 44, 44, 44,
941
+ 44, 44, 44, 44, 44, 44, 44, 44,
942
+ 44, 44, 44, 44, 44, 44, 44, 44,
943
+ 44, 44, 85, 85, 85, 85, 44, 85,
944
+ 44, 44, 44, 44, 154, 44, 44, 44,
945
+ 44, 44, 44, 44, 44, 44, 155, 44,
946
+ 44, 44, 44, 44, 44, 44, 44, 44,
947
+ 44, 44, 85, 44, 85, 85, 44, 44,
948
+ 44, 44, 44, 44, 44, 44, 44, 44,
949
+ 85, 85, 85, 85, 85, 85, 85, 44,
950
+ 44, 44, 44, 44, 44, 44, 44, 44,
951
+ 44, 44, 44, 44, 44, 44, 44, 44,
952
+ 44, 44, 44, 44, 44, 44, 44, 44,
953
+ 44, 85, 85, 85, 85, 44, 85, 44,
954
+ 44, 156, 44, 44, 44, 44, 44, 44,
955
+ 44, 44, 44, 44, 44, 44, 44, 44,
956
+ 44, 44, 44, 44, 44, 44, 44, 44,
957
+ 44, 85, 44, 85, 85, 44, 44, 44,
958
+ 44, 44, 44, 44, 44, 44, 44, 85,
959
+ 85, 85, 85, 85, 85, 85, 44, 44,
960
+ 44, 44, 44, 44, 44, 44, 44, 44,
961
+ 44, 44, 44, 44, 44, 44, 44, 44,
962
+ 44, 44, 44, 44, 44, 44, 44, 44,
963
+ 85, 85, 85, 85, 44, 85, 44, 44,
964
+ 44, 44, 157, 44, 44, 44, 44, 44,
965
+ 44, 44, 44, 44, 44, 44, 44, 44,
966
+ 44, 44, 44, 44, 44, 44, 44, 44,
967
+ 85, 44, 85, 85, 44, 44, 44, 44,
968
+ 44, 44, 44, 44, 44, 44, 85, 85,
969
+ 85, 85, 85, 85, 85, 44, 44, 44,
970
+ 44, 44, 44, 44, 44, 44, 44, 44,
971
+ 44, 44, 44, 44, 44, 44, 44, 44,
972
+ 44, 44, 44, 44, 44, 44, 44, 85,
973
+ 85, 85, 85, 44, 85, 44, 44, 44,
974
+ 130, 44, 44, 44, 44, 44, 44, 44,
975
+ 44, 44, 44, 44, 44, 44, 44, 44,
976
+ 44, 44, 44, 44, 44, 44, 44, 85,
977
+ 44, 85, 85, 44, 44, 44, 44, 44,
978
+ 44, 44, 44, 44, 44, 85, 85, 85,
979
+ 85, 85, 85, 85, 44, 44, 44, 44,
980
+ 44, 44, 44, 44, 44, 44, 44, 44,
981
+ 44, 44, 44, 44, 44, 44, 44, 44,
982
+ 44, 44, 44, 44, 44, 44, 85, 85,
983
+ 85, 85, 44, 85, 44, 44, 158, 44,
984
+ 44, 44, 44, 44, 44, 44, 44, 44,
985
+ 44, 44, 44, 44, 44, 44, 44, 44,
986
+ 44, 44, 44, 44, 44, 44, 85, 44,
987
+ 85, 85, 44, 44, 44, 44, 44, 44,
988
+ 44, 44, 44, 44, 85, 85, 85, 85,
989
+ 85, 85, 85, 44, 44, 44, 44, 44,
990
+ 44, 44, 44, 44, 44, 44, 44, 44,
991
+ 44, 44, 44, 44, 44, 44, 44, 44,
992
+ 44, 44, 44, 44, 44, 85, 85, 85,
993
+ 85, 44, 85, 44, 44, 44, 44, 159,
994
+ 44, 44, 44, 44, 44, 44, 44, 44,
995
+ 44, 44, 44, 44, 44, 44, 44, 44,
996
+ 44, 44, 44, 44, 44, 85, 44, 85,
997
+ 85, 44, 44, 44, 44, 44, 44, 44,
998
+ 44, 44, 44, 85, 85, 85, 85, 85,
999
+ 85, 85, 44, 44, 44, 44, 44, 44,
1000
+ 44, 44, 44, 44, 44, 44, 44, 44,
1001
+ 44, 44, 44, 44, 44, 44, 44, 44,
1002
+ 44, 44, 44, 44, 85, 85, 85, 85,
1003
+ 44, 85, 44, 44, 44, 44, 44, 44,
1004
+ 44, 44, 44, 44, 44, 44, 44, 44,
1005
+ 44, 44, 44, 44, 160, 44, 44, 44,
1006
+ 44, 44, 44, 44, 85, 44, 85, 85,
1007
+ 44, 44, 44, 44, 44, 44, 44, 44,
1008
+ 44, 44, 85, 85, 85, 85, 85, 85,
1009
+ 85, 44, 44, 44, 44, 44, 44, 44,
1010
+ 44, 44, 44, 44, 44, 44, 44, 44,
1011
+ 44, 44, 44, 44, 44, 44, 44, 44,
1012
+ 44, 44, 44, 85, 85, 85, 85, 44,
1013
+ 85, 44, 44, 44, 44, 44, 44, 44,
1014
+ 44, 44, 44, 44, 44, 44, 44, 44,
1015
+ 44, 44, 44, 161, 44, 44, 44, 44,
1016
+ 44, 44, 44, 85, 44, 85, 85, 44,
1017
+ 44, 44, 44, 44, 44, 44, 44, 44,
1018
+ 44, 85, 85, 85, 85, 85, 85, 85,
1019
+ 44, 44, 44, 44, 44, 44, 44, 44,
1020
+ 44, 44, 44, 44, 44, 44, 44, 44,
1021
+ 44, 44, 44, 44, 44, 44, 44, 44,
1022
+ 44, 44, 85, 85, 85, 85, 44, 85,
1023
+ 44, 44, 44, 44, 44, 44, 44, 44,
1024
+ 162, 44, 44, 44, 44, 44, 44, 44,
1025
+ 44, 44, 44, 44, 44, 44, 44, 44,
1026
+ 44, 44, 85, 44, 85, 85, 44, 44,
1027
+ 44, 44, 44, 44, 44, 44, 44, 44,
1028
+ 85, 85, 85, 85, 85, 85, 85, 44,
1029
+ 44, 44, 44, 44, 44, 44, 44, 44,
1030
+ 44, 44, 44, 44, 44, 44, 44, 44,
1031
+ 44, 44, 44, 44, 44, 44, 44, 44,
1032
+ 44, 85, 85, 85, 85, 44, 85, 44,
1033
+ 44, 44, 44, 44, 44, 44, 44, 44,
1034
+ 44, 44, 44, 44, 163, 44, 44, 44,
1035
+ 44, 44, 44, 44, 44, 44, 44, 44,
1036
+ 44, 85, 44, 85, 85, 44, 44, 44,
1037
+ 44, 44, 44, 44, 44, 44, 44, 85,
1038
+ 85, 85, 85, 85, 85, 85, 44, 44,
1039
+ 44, 44, 44, 44, 44, 44, 44, 44,
1040
+ 44, 44, 44, 44, 44, 44, 44, 44,
1041
+ 44, 44, 44, 44, 44, 44, 44, 44,
1042
+ 85, 85, 85, 85, 44, 85, 44, 44,
1043
+ 44, 44, 44, 44, 164, 44, 44, 44,
1044
+ 44, 44, 44, 44, 44, 44, 44, 44,
1045
+ 44, 44, 44, 44, 44, 44, 44, 44,
1046
+ 85, 165, 85, 85, 44, 44, 44, 44,
1047
+ 44, 44, 44, 44, 44, 44, 85, 85,
1048
+ 85, 85, 85, 85, 85, 44, 44, 44,
1049
+ 44, 44, 44, 44, 44, 44, 44, 44,
1050
+ 44, 44, 44, 44, 44, 44, 44, 44,
1051
+ 44, 44, 44, 44, 44, 44, 44, 85,
1052
+ 85, 85, 85, 44, 85, 44, 44, 44,
1053
+ 44, 44, 44, 44, 44, 44, 44, 44,
1054
+ 44, 44, 44, 44, 44, 44, 44, 44,
1055
+ 44, 44, 44, 44, 44, 44, 44, 85,
1056
+ 44, 85, 85, 44, 44, 44, 44, 44,
1057
+ 44, 44, 44, 44, 44, 85, 85, 85,
1058
+ 85, 85, 85, 85, 44, 44, 44, 44,
1059
+ 44, 44, 44, 44, 44, 44, 44, 44,
1060
+ 44, 44, 44, 44, 44, 44, 44, 44,
1061
+ 44, 44, 44, 44, 44, 44, 85, 85,
1062
+ 85, 85, 44, 85, 44, 44, 44, 44,
1063
+ 44, 44, 44, 44, 166, 44, 44, 44,
1064
+ 44, 44, 44, 44, 44, 44, 44, 44,
1065
+ 44, 44, 44, 44, 44, 44, 85, 44,
1066
+ 85, 85, 44, 44, 44, 44, 44, 44,
1067
+ 44, 44, 44, 44, 85, 85, 85, 85,
1068
+ 85, 85, 85, 44, 44, 44, 44, 44,
1069
+ 44, 44, 44, 44, 44, 44, 44, 44,
1070
+ 44, 44, 44, 44, 44, 44, 44, 44,
1071
+ 44, 44, 44, 44, 44, 85, 85, 85,
1072
+ 85, 44, 85, 44, 44, 44, 44, 44,
1073
+ 44, 44, 44, 44, 44, 44, 44, 44,
1074
+ 167, 44, 44, 44, 44, 44, 44, 44,
1075
+ 44, 44, 44, 44, 44, 85, 44, 85,
1076
+ 85, 44, 44, 44, 44, 44, 44, 44,
1077
+ 44, 44, 44, 85, 85, 85, 85, 85,
1078
+ 85, 85, 44, 44, 44, 44, 44, 44,
1079
+ 44, 44, 44, 44, 44, 44, 44, 44,
1080
+ 44, 44, 44, 44, 44, 44, 44, 44,
1081
+ 44, 44, 44, 44, 85, 85, 85, 85,
1082
+ 44, 85, 44, 44, 44, 44, 44, 44,
1083
+ 44, 44, 44, 44, 44, 44, 44, 44,
1084
+ 44, 44, 44, 44, 168, 44, 44, 44,
1085
+ 44, 44, 44, 44, 85, 44, 85, 85,
1086
+ 44, 44, 44, 44, 44, 44, 44, 44,
1087
+ 44, 44, 85, 85, 85, 85, 85, 85,
1088
+ 85, 44, 44, 44, 44, 44, 44, 44,
1089
+ 44, 44, 44, 44, 44, 44, 44, 44,
1090
+ 44, 44, 44, 44, 44, 44, 44, 44,
1091
+ 44, 44, 44, 85, 85, 85, 85, 44,
1092
+ 85, 44, 44, 44, 44, 44, 44, 44,
1093
+ 44, 44, 44, 44, 44, 44, 44, 44,
1094
+ 44, 44, 44, 44, 169, 44, 44, 44,
1095
+ 44, 44, 44, 85, 44, 85, 85, 44,
1096
+ 44, 44, 44, 44, 44, 44, 44, 44,
1097
+ 44, 85, 85, 85, 85, 85, 85, 85,
1098
+ 44, 44, 44, 44, 44, 44, 44, 44,
1099
+ 44, 44, 44, 44, 44, 44, 44, 44,
1100
+ 44, 44, 44, 44, 44, 44, 44, 44,
1101
+ 44, 44, 85, 85, 85, 85, 44, 85,
1102
+ 44, 44, 44, 44, 44, 44, 44, 44,
1103
+ 44, 44, 44, 44, 44, 44, 44, 44,
1104
+ 44, 170, 44, 44, 44, 44, 44, 44,
1105
+ 44, 44, 85, 44, 85, 85, 44, 44,
1106
+ 44, 44, 44, 44, 44, 44, 44, 44,
1107
+ 85, 85, 85, 85, 85, 85, 85, 44,
1108
+ 44, 44, 44, 44, 44, 44, 44, 44,
1109
+ 44, 44, 44, 44, 44, 44, 44, 44,
1110
+ 44, 44, 44, 44, 44, 44, 44, 44,
1111
+ 44, 85, 85, 85, 85, 44, 85, 44,
1112
+ 44, 44, 44, 44, 44, 44, 44, 44,
1113
+ 44, 44, 44, 44, 44, 44, 44, 44,
1114
+ 44, 44, 44, 171, 44, 44, 44, 44,
1115
+ 44, 85, 44, 85, 85, 44, 44, 44,
1116
+ 44, 44, 44, 44, 44, 44, 44, 85,
1117
+ 85, 85, 85, 85, 85, 85, 44, 44,
1118
+ 44, 44, 44, 44, 44, 44, 44, 44,
1119
+ 44, 44, 44, 44, 44, 44, 44, 44,
1120
+ 44, 44, 44, 44, 44, 44, 44, 44,
1121
+ 85, 85, 85, 85, 44, 85, 44, 44,
1122
+ 172, 44, 44, 44, 44, 44, 44, 44,
1123
+ 44, 44, 44, 44, 44, 44, 44, 44,
1124
+ 44, 44, 44, 44, 44, 44, 44, 44,
1125
+ 85, 44, 85, 85, 44, 44, 44, 44,
1126
+ 44, 44, 44, 44, 44, 44, 85, 85,
1127
+ 85, 85, 85, 85, 85, 44, 44, 44,
1128
+ 44, 44, 44, 44, 44, 44, 44, 44,
1129
+ 44, 44, 44, 44, 44, 44, 44, 44,
1130
+ 44, 44, 44, 44, 44, 44, 44, 85,
1131
+ 85, 85, 85, 44, 85, 44, 44, 44,
1132
+ 44, 44, 44, 44, 44, 44, 44, 44,
1133
+ 44, 44, 44, 44, 44, 44, 44, 44,
1134
+ 173, 44, 44, 44, 44, 44, 44, 85,
1135
+ 44, 85, 85, 44, 44, 44, 44, 44,
1136
+ 44, 44, 44, 44, 44, 85, 85, 85,
1137
+ 85, 85, 85, 85, 44, 44, 44, 44,
1138
+ 44, 44, 44, 44, 44, 44, 44, 44,
1139
+ 44, 44, 44, 44, 44, 44, 44, 44,
1140
+ 44, 44, 44, 44, 44, 44, 85, 85,
1141
+ 85, 85, 44, 85, 44, 44, 44, 44,
1142
+ 44, 44, 44, 44, 174, 44, 44, 44,
1143
+ 44, 44, 44, 44, 44, 44, 44, 44,
1144
+ 44, 44, 44, 44, 44, 44, 85, 44,
1145
+ 85, 85, 44, 44, 44, 44, 44, 44,
1146
+ 44, 44, 44, 44, 85, 85, 85, 85,
1147
+ 85, 85, 85, 44, 44, 44, 44, 44,
1148
+ 44, 44, 44, 44, 44, 44, 44, 44,
1149
+ 44, 44, 44, 44, 44, 44, 44, 44,
1150
+ 44, 44, 44, 44, 44, 85, 85, 85,
1151
+ 85, 44, 85, 44, 44, 44, 44, 44,
1152
+ 44, 44, 44, 44, 44, 44, 44, 44,
1153
+ 44, 175, 44, 44, 44, 44, 44, 44,
1154
+ 44, 44, 44, 44, 44, 85, 44, 85,
1155
+ 85, 44, 44, 44, 44, 44, 44, 44,
1156
+ 44, 44, 44, 85, 85, 85, 85, 85,
1157
+ 85, 85, 44, 44, 44, 44, 44, 44,
1158
+ 44, 44, 44, 44, 44, 44, 44, 44,
1159
+ 44, 44, 44, 44, 44, 44, 44, 44,
1160
+ 44, 44, 44, 44, 85, 85, 85, 85,
1161
+ 44, 85, 44, 44, 44, 44, 44, 44,
1162
+ 44, 44, 44, 44, 44, 44, 44, 116,
1163
+ 44, 44, 44, 44, 44, 44, 44, 44,
1164
+ 44, 44, 44, 44, 85, 44, 85, 85,
1165
+ 44, 44, 44, 44, 44, 44, 44, 44,
1166
+ 44, 44, 85, 85, 85, 85, 85, 85,
1167
+ 85, 44, 44, 44, 44, 44, 44, 44,
1168
+ 44, 44, 44, 44, 44, 44, 44, 44,
1169
+ 44, 44, 44, 44, 44, 44, 44, 44,
1170
+ 44, 44, 44, 85, 85, 85, 85, 44,
1171
+ 85, 44, 44, 44, 44, 176, 44, 44,
1172
+ 44, 44, 44, 44, 44, 44, 44, 44,
1173
+ 44, 44, 44, 44, 44, 44, 44, 44,
1174
+ 44, 44, 44, 85, 44, 85, 85, 44,
1175
+ 44, 44, 44, 44, 44, 44, 44, 44,
1176
+ 44, 85, 85, 85, 85, 85, 85, 85,
1177
+ 44, 44, 44, 44, 44, 44, 44, 44,
1178
+ 44, 44, 44, 44, 44, 44, 44, 44,
1179
+ 44, 44, 44, 44, 44, 44, 44, 44,
1180
+ 44, 44, 85, 85, 85, 85, 44, 85,
1181
+ 44, 44, 44, 44, 44, 44, 44, 44,
1182
+ 44, 44, 44, 44, 44, 44, 44, 44,
1183
+ 44, 44, 44, 44, 44, 44, 44, 115,
1184
+ 44, 44, 85, 177, 0
1185
+ ]
1186
+
1187
+ class << self
1188
+ attr_accessor :_xpath_lexer_trans_targs
1189
+ private :_xpath_lexer_trans_targs, :_xpath_lexer_trans_targs=
1190
+ end
1191
+ self._xpath_lexer_trans_targs = [
1192
+ 22, 24, 25, 4, 5, 26, 7, 8,
1193
+ 27, 10, 11, 28, 13, 29, 30, 0,
1194
+ 15, 22, 22, 31, 17, 22, 18, 33,
1195
+ 34, 22, 22, 22, 22, 23, 14, 16,
1196
+ 22, 22, 22, 32, 22, 35, 36, 22,
1197
+ 37, 39, 40, 22, 42, 22, 22, 43,
1198
+ 66, 76, 85, 101, 110, 55, 138, 140,
1199
+ 22, 1, 2, 3, 6, 9, 12, 22,
1200
+ 22, 22, 22, 22, 22, 22, 22, 22,
1201
+ 18, 33, 22, 19, 22, 22, 22, 38,
1202
+ 22, 22, 22, 41, 22, 22, 44, 59,
1203
+ 45, 46, 47, 48, 49, 50, 51, 20,
1204
+ 52, 53, 54, 56, 57, 58, 60, 61,
1205
+ 62, 63, 64, 65, 67, 70, 68, 69,
1206
+ 71, 72, 73, 74, 75, 21, 77, 78,
1207
+ 79, 80, 81, 82, 83, 84, 86, 87,
1208
+ 88, 89, 90, 91, 92, 93, 94, 95,
1209
+ 96, 97, 98, 99, 100, 102, 108, 103,
1210
+ 104, 105, 106, 107, 109, 111, 115, 112,
1211
+ 113, 114, 116, 119, 117, 118, 120, 121,
1212
+ 122, 123, 124, 125, 126, 127, 128, 129,
1213
+ 130, 131, 132, 133, 134, 135, 136, 137,
1214
+ 139, 22
1215
+ ]
1216
+
1217
+ class << self
1218
+ attr_accessor :_xpath_lexer_trans_actions
1219
+ private :_xpath_lexer_trans_actions, :_xpath_lexer_trans_actions=
1220
+ end
1221
+ self._xpath_lexer_trans_actions = [
1222
+ 1, 0, 0, 0, 0, 0, 0, 0,
1223
+ 0, 0, 0, 0, 0, 0, 0, 0,
1224
+ 0, 2, 3, 0, 0, 4, 0, 5,
1225
+ 6, 7, 8, 9, 12, 13, 0, 0,
1226
+ 14, 15, 16, 17, 18, 0, 19, 20,
1227
+ 0, 0, 0, 21, 0, 22, 23, 0,
1228
+ 0, 0, 0, 0, 0, 0, 0, 0,
1229
+ 24, 0, 0, 0, 0, 0, 0, 25,
1230
+ 26, 27, 28, 29, 30, 31, 32, 33,
1231
+ 34, 35, 36, 0, 37, 38, 39, 0,
1232
+ 40, 41, 42, 0, 43, 44, 0, 0,
1233
+ 0, 0, 0, 0, 0, 13, 0, 0,
1234
+ 0, 0, 0, 0, 0, 13, 0, 0,
1235
+ 0, 0, 0, 0, 0, 0, 0, 0,
1236
+ 0, 0, 0, 0, 13, 0, 0, 0,
1237
+ 0, 0, 0, 0, 0, 0, 0, 0,
1238
+ 0, 0, 0, 0, 0, 13, 0, 0,
1239
+ 0, 0, 0, 0, 0, 0, 0, 0,
1240
+ 0, 0, 0, 0, 0, 0, 0, 0,
1241
+ 0, 0, 0, 0, 0, 0, 0, 0,
1242
+ 0, 0, 0, 0, 0, 0, 0, 0,
1243
+ 0, 0, 0, 0, 0, 0, 0, 0,
1244
+ 0, 45
1245
+ ]
1246
+
1247
+ class << self
1248
+ attr_accessor :_xpath_lexer_to_state_actions
1249
+ private :_xpath_lexer_to_state_actions, :_xpath_lexer_to_state_actions=
1250
+ end
1251
+ self._xpath_lexer_to_state_actions = [
1252
+ 0, 0, 0, 0, 0, 0, 0, 0,
1253
+ 0, 0, 0, 0, 0, 0, 0, 0,
1254
+ 0, 0, 0, 0, 0, 0, 10, 0,
1255
+ 0, 0, 0, 0, 0, 0, 0, 0,
1256
+ 0, 0, 0, 0, 0, 0, 0, 0,
1257
+ 0, 0, 0, 0, 0, 0, 0, 0,
1258
+ 0, 0, 0, 0, 0, 0, 0, 0,
1259
+ 0, 0, 0, 0, 0, 0, 0, 0,
1260
+ 0, 0, 0, 0, 0, 0, 0, 0,
1261
+ 0, 0, 0, 0, 0, 0, 0, 0,
1262
+ 0, 0, 0, 0, 0, 0, 0, 0,
1263
+ 0, 0, 0, 0, 0, 0, 0, 0,
1264
+ 0, 0, 0, 0, 0, 0, 0, 0,
1265
+ 0, 0, 0, 0, 0, 0, 0, 0,
1266
+ 0, 0, 0, 0, 0, 0, 0, 0,
1267
+ 0, 0, 0, 0, 0, 0, 0, 0,
1268
+ 0, 0, 0, 0, 0, 0, 0, 0,
1269
+ 0, 0, 0, 0, 0
1270
+ ]
1271
+
1272
+ class << self
1273
+ attr_accessor :_xpath_lexer_from_state_actions
1274
+ private :_xpath_lexer_from_state_actions, :_xpath_lexer_from_state_actions=
1275
+ end
1276
+ self._xpath_lexer_from_state_actions = [
1277
+ 0, 0, 0, 0, 0, 0, 0, 0,
1278
+ 0, 0, 0, 0, 0, 0, 0, 0,
1279
+ 0, 0, 0, 0, 0, 0, 11, 0,
1280
+ 0, 0, 0, 0, 0, 0, 0, 0,
1281
+ 0, 0, 0, 0, 0, 0, 0, 0,
1282
+ 0, 0, 0, 0, 0, 0, 0, 0,
1283
+ 0, 0, 0, 0, 0, 0, 0, 0,
1284
+ 0, 0, 0, 0, 0, 0, 0, 0,
1285
+ 0, 0, 0, 0, 0, 0, 0, 0,
1286
+ 0, 0, 0, 0, 0, 0, 0, 0,
1287
+ 0, 0, 0, 0, 0, 0, 0, 0,
1288
+ 0, 0, 0, 0, 0, 0, 0, 0,
1289
+ 0, 0, 0, 0, 0, 0, 0, 0,
1290
+ 0, 0, 0, 0, 0, 0, 0, 0,
1291
+ 0, 0, 0, 0, 0, 0, 0, 0,
1292
+ 0, 0, 0, 0, 0, 0, 0, 0,
1293
+ 0, 0, 0, 0, 0, 0, 0, 0,
1294
+ 0, 0, 0, 0, 0
1295
+ ]
1296
+
1297
+ class << self
1298
+ attr_accessor :_xpath_lexer_eof_trans
1299
+ private :_xpath_lexer_eof_trans, :_xpath_lexer_eof_trans=
1300
+ end
1301
+ self._xpath_lexer_eof_trans = [
1302
+ 0, 1, 1, 1, 1, 1, 1, 1,
1303
+ 1, 1, 1, 1, 1, 1, 0, 0,
1304
+ 0, 0, 22, 22, 26, 26, 0, 57,
1305
+ 64, 65, 66, 67, 68, 69, 70, 71,
1306
+ 72, 75, 77, 78, 57, 79, 81, 82,
1307
+ 83, 85, 86, 86, 86, 86, 86, 86,
1308
+ 86, 86, 86, 86, 86, 86, 86, 86,
1309
+ 86, 86, 86, 86, 86, 86, 86, 86,
1310
+ 86, 86, 86, 86, 86, 86, 86, 86,
1311
+ 86, 86, 86, 86, 86, 86, 86, 86,
1312
+ 86, 86, 86, 86, 86, 86, 86, 86,
1313
+ 86, 86, 86, 86, 86, 86, 86, 86,
1314
+ 86, 86, 86, 86, 86, 86, 86, 86,
1315
+ 86, 86, 86, 86, 86, 86, 86, 86,
1316
+ 86, 86, 86, 86, 86, 86, 86, 86,
1317
+ 86, 86, 86, 86, 86, 86, 86, 86,
1318
+ 86, 86, 86, 86, 86, 86, 86, 86,
1319
+ 86, 86, 86, 86, 178
1320
+ ]
1321
+
1322
+ class << self
1323
+ attr_accessor :xpath_lexer_start
1324
+ end
1325
+ self.xpath_lexer_start = 22;
1326
+ class << self
1327
+ attr_accessor :xpath_lexer_first_final
1328
+ end
1329
+ self.xpath_lexer_first_final = 22;
1330
+ class << self
1331
+ attr_accessor :xpath_lexer_error
1332
+ end
1333
+ self.xpath_lexer_error = 0;
1334
+
1335
+ class << self
1336
+ attr_accessor :xpath_lexer_en_main
1337
+ end
1338
+ self.xpath_lexer_en_main = 22;
1339
+
1340
+
1341
+ # line 39 "lib/oga/xpath/lexer.rl"
1342
+
1343
+ # % fix highlight
1344
+
1345
+ ##
1346
+ # Maps certain XPath axes written in their short form to their long form
1347
+ # equivalents.
1348
+ #
1349
+ # @return [Hash]
1350
+ #
1351
+ AXIS_MAPPING = {
1352
+ '@' => 'attribute',
1353
+ '//' => 'descendant-or-self',
1354
+ '..' => 'parent',
1355
+ '.' => 'self'
1356
+ }
1357
+
1358
+ ##
1359
+ # Axes that require a separate `node()` call to be emitted.
1360
+ #
1361
+ # @return [Array]
1362
+ #
1363
+ AXIS_EMIT_NODE = %w{descendant-or-self parent self}
1364
+
1365
+ ##
1366
+ # Axes that require an extra T_SLASH token to be emitted.
1367
+ #
1368
+ # @return [Array]
1369
+ #
1370
+ AXIS_EMIT_EXTRA_SLASH = %w{descendant-or-self}
1371
+
1372
+ ##
1373
+ # @param [String] data The data to lex.
1374
+ #
1375
+ def initialize(data)
1376
+ @data = data
1377
+ end
1378
+
1379
+ ##
1380
+ # Gathers all the tokens for the input and returns them as an Array.
1381
+ #
1382
+ # @see [#advance]
1383
+ # @return [Array]
1384
+ #
1385
+ def lex
1386
+ tokens = []
1387
+
1388
+ advance do |type, value|
1389
+ tokens << [type, value]
1390
+ end
1391
+
1392
+ return tokens
1393
+ end
1394
+
1395
+ ##
1396
+ # Advances through the input and generates the corresponding tokens. Each
1397
+ # token is yielded to the supplied block.
1398
+ #
1399
+ # Each token is an Array in the following format:
1400
+ #
1401
+ # [TYPE, VALUE]
1402
+ #
1403
+ # The type is a symbol, the value is either nil or a String.
1404
+ #
1405
+ # This method stores the supplied block in `@block` and resets it after
1406
+ # the lexer loop has finished.
1407
+ #
1408
+ # @see [#add_token]
1409
+ #
1410
+ def advance(&block)
1411
+ @block = block
1412
+
1413
+ data = @data # saves ivar lookups while lexing.
1414
+ ts = nil
1415
+ te = nil
1416
+ stack = []
1417
+ top = 0
1418
+ cs = self.class.xpath_lexer_start
1419
+ act = 0
1420
+ eof = @data.bytesize
1421
+ p = 0
1422
+ pe = eof
1423
+
1424
+ _xpath_lexer_eof_trans = self.class.send(:_xpath_lexer_eof_trans)
1425
+ _xpath_lexer_from_state_actions = self.class.send(:_xpath_lexer_from_state_actions)
1426
+ _xpath_lexer_index_offsets = self.class.send(:_xpath_lexer_index_offsets)
1427
+ _xpath_lexer_indicies = self.class.send(:_xpath_lexer_indicies)
1428
+ _xpath_lexer_key_spans = self.class.send(:_xpath_lexer_key_spans)
1429
+ _xpath_lexer_to_state_actions = self.class.send(:_xpath_lexer_to_state_actions)
1430
+ _xpath_lexer_trans_actions = self.class.send(:_xpath_lexer_trans_actions)
1431
+ _xpath_lexer_trans_keys = self.class.send(:_xpath_lexer_trans_keys)
1432
+ _xpath_lexer_trans_targs = self.class.send(:_xpath_lexer_trans_targs)
1433
+
1434
+
1435
+ # line 1436 "lib/oga/xpath/lexer.rb"
1436
+ begin
1437
+ testEof = false
1438
+ _slen, _trans, _keys, _inds, _acts, _nacts = nil
1439
+ _goto_level = 0
1440
+ _resume = 10
1441
+ _eof_trans = 15
1442
+ _again = 20
1443
+ _test_eof = 30
1444
+ _out = 40
1445
+ while true
1446
+ if _goto_level <= 0
1447
+ if p == pe
1448
+ _goto_level = _test_eof
1449
+ next
1450
+ end
1451
+ if cs == 0
1452
+ _goto_level = _out
1453
+ next
1454
+ end
1455
+ end
1456
+ if _goto_level <= _resume
1457
+ case _xpath_lexer_from_state_actions[cs]
1458
+ when 11 then
1459
+ # line 1 "NONE"
1460
+ begin
1461
+ ts = p
1462
+ end
1463
+ # line 1464 "lib/oga/xpath/lexer.rb"
1464
+ end
1465
+ _keys = cs << 1
1466
+ _inds = _xpath_lexer_index_offsets[cs]
1467
+ _slen = _xpath_lexer_key_spans[cs]
1468
+ _trans = if ( _slen > 0 &&
1469
+ _xpath_lexer_trans_keys[_keys] <= ( (data.getbyte(p) || 0)) &&
1470
+ ( (data.getbyte(p) || 0)) <= _xpath_lexer_trans_keys[_keys + 1]
1471
+ ) then
1472
+ _xpath_lexer_indicies[ _inds + ( (data.getbyte(p) || 0)) - _xpath_lexer_trans_keys[_keys] ]
1473
+ else
1474
+ _xpath_lexer_indicies[ _inds + _slen ]
1475
+ end
1476
+ end
1477
+ if _goto_level <= _eof_trans
1478
+ cs = _xpath_lexer_trans_targs[_trans]
1479
+ if _xpath_lexer_trans_actions[_trans] != 0
1480
+ case _xpath_lexer_trans_actions[_trans]
1481
+ when 19 then
1482
+ # line 186 "lib/oga/xpath/lexer.rl"
1483
+ begin
1484
+ add_token(:T_SLASH) end
1485
+ when 34 then
1486
+ # line 298 "lib/oga/xpath/lexer.rl"
1487
+ begin
1488
+ add_token(:T_ADD) end
1489
+ when 13 then
1490
+ # line 1 "NONE"
1491
+ begin
1492
+ te = p+1
1493
+ end
1494
+ when 12 then
1495
+ # line 370 "lib/oga/xpath/lexer.rl"
1496
+ begin
1497
+ te = p+1
1498
+ end
1499
+ when 9 then
1500
+ # line 351 "lib/oga/xpath/lexer.rl"
1501
+ begin
1502
+ te = p+1
1503
+ begin
1504
+ emit(:T_TYPE_TEST, ts, te - 2)
1505
+ end
1506
+ end
1507
+ when 3 then
1508
+ # line 364 "lib/oga/xpath/lexer.rl"
1509
+ begin
1510
+ te = p+1
1511
+ begin
1512
+ emit(:T_VAR, ts + 1, te)
1513
+ end
1514
+ end
1515
+ when 2 then
1516
+ # line 240 "lib/oga/xpath/lexer.rl"
1517
+ begin
1518
+ te = p+1
1519
+ begin
1520
+ emit(:T_STRING, ts + 1, te - 1)
1521
+ end
1522
+ end
1523
+ when 8 then
1524
+ # line 262 "lib/oga/xpath/lexer.rl"
1525
+ begin
1526
+ te = p+1
1527
+ begin
1528
+ emit(:T_AXIS, ts, te - 2)
1529
+ end
1530
+ end
1531
+ when 21 then
1532
+ # line 274 "lib/oga/xpath/lexer.rl"
1533
+ begin
1534
+ te = p+1
1535
+ begin
1536
+ value = AXIS_MAPPING[slice_input(ts, te)]
1537
+
1538
+ add_token(:T_AXIS, value)
1539
+
1540
+ # Short axes that use node() as their default, implicit test. This is
1541
+ # added on lexer level to make it easier to handle these cases on
1542
+ # parser/evaluator level.
1543
+ if AXIS_EMIT_NODE.include?(value)
1544
+ add_token(:T_TYPE_TEST, 'node')
1545
+
1546
+ if AXIS_EMIT_EXTRA_SLASH.include?(value) and te != eof
1547
+ add_token(:T_SLASH)
1548
+ end
1549
+ end
1550
+ end
1551
+ end
1552
+ when 16 then
1553
+ # line 201 "lib/oga/xpath/lexer.rl"
1554
+ begin
1555
+ te = p+1
1556
+ begin
1557
+ emit(:T_IDENT, ts, te)
1558
+ end
1559
+ end
1560
+ when 24 then
1561
+ # line 370 "lib/oga/xpath/lexer.rl"
1562
+ begin
1563
+ te = p
1564
+ p = p - 1; end
1565
+ when 32 then
1566
+ # line 364 "lib/oga/xpath/lexer.rl"
1567
+ begin
1568
+ te = p
1569
+ p = p - 1; begin
1570
+ emit(:T_VAR, ts + 1, te)
1571
+ end
1572
+ end
1573
+ when 36 then
1574
+ # line 215 "lib/oga/xpath/lexer.rl"
1575
+ begin
1576
+ te = p
1577
+ p = p - 1; begin
1578
+ value = slice_input(ts, te).to_i
1579
+
1580
+ add_token(:T_INT, value)
1581
+ end
1582
+ end
1583
+ when 37 then
1584
+ # line 221 "lib/oga/xpath/lexer.rl"
1585
+ begin
1586
+ te = p
1587
+ p = p - 1; begin
1588
+ value = slice_input(ts, te).to_f
1589
+
1590
+ add_token(:T_FLOAT, value)
1591
+ end
1592
+ end
1593
+ when 38 then
1594
+ # line 274 "lib/oga/xpath/lexer.rl"
1595
+ begin
1596
+ te = p
1597
+ p = p - 1; begin
1598
+ value = AXIS_MAPPING[slice_input(ts, te)]
1599
+
1600
+ add_token(:T_AXIS, value)
1601
+
1602
+ # Short axes that use node() as their default, implicit test. This is
1603
+ # added on lexer level to make it easier to handle these cases on
1604
+ # parser/evaluator level.
1605
+ if AXIS_EMIT_NODE.include?(value)
1606
+ add_token(:T_TYPE_TEST, 'node')
1607
+
1608
+ if AXIS_EMIT_EXTRA_SLASH.include?(value) and te != eof
1609
+ add_token(:T_SLASH)
1610
+ end
1611
+ end
1612
+ end
1613
+ end
1614
+ when 44 then
1615
+ # line 201 "lib/oga/xpath/lexer.rl"
1616
+ begin
1617
+ te = p
1618
+ p = p - 1; begin
1619
+ emit(:T_IDENT, ts, te)
1620
+ end
1621
+ end
1622
+ when 1 then
1623
+ # line 370 "lib/oga/xpath/lexer.rl"
1624
+ begin
1625
+ begin p = ((te))-1; end
1626
+ end
1627
+ when 7 then
1628
+ # line 201 "lib/oga/xpath/lexer.rl"
1629
+ begin
1630
+ begin p = ((te))-1; end
1631
+ begin
1632
+ emit(:T_IDENT, ts, te)
1633
+ end
1634
+ end
1635
+ when 4 then
1636
+ # line 1 "NONE"
1637
+ begin
1638
+ case act
1639
+ when 0 then
1640
+ begin begin
1641
+ cs = 0
1642
+ _goto_level = _again
1643
+ next
1644
+ end
1645
+ end
1646
+ when 6 then
1647
+ begin begin p = ((te))-1; end
1648
+
1649
+ value = slice_input(ts, te).to_i
1650
+
1651
+ add_token(:T_INT, value)
1652
+ end
1653
+ when 7 then
1654
+ begin begin p = ((te))-1; end
1655
+
1656
+ value = slice_input(ts, te).to_f
1657
+
1658
+ add_token(:T_FLOAT, value)
1659
+ end
1660
+ else
1661
+ begin begin p = ((te))-1; end
1662
+ end
1663
+ end
1664
+ end
1665
+ when 14 then
1666
+ # line 187 "lib/oga/xpath/lexer.rl"
1667
+ begin
1668
+ add_token(:T_LPAREN) end
1669
+ # line 370 "lib/oga/xpath/lexer.rl"
1670
+ begin
1671
+ te = p+1
1672
+ end
1673
+ when 15 then
1674
+ # line 188 "lib/oga/xpath/lexer.rl"
1675
+ begin
1676
+ add_token(:T_RPAREN) end
1677
+ # line 370 "lib/oga/xpath/lexer.rl"
1678
+ begin
1679
+ te = p+1
1680
+ end
1681
+ when 18 then
1682
+ # line 189 "lib/oga/xpath/lexer.rl"
1683
+ begin
1684
+ add_token(:T_COMMA) end
1685
+ # line 370 "lib/oga/xpath/lexer.rl"
1686
+ begin
1687
+ te = p+1
1688
+ end
1689
+ when 20 then
1690
+ # line 190 "lib/oga/xpath/lexer.rl"
1691
+ begin
1692
+ add_token(:T_COLON) end
1693
+ # line 370 "lib/oga/xpath/lexer.rl"
1694
+ begin
1695
+ te = p+1
1696
+ end
1697
+ when 22 then
1698
+ # line 191 "lib/oga/xpath/lexer.rl"
1699
+ begin
1700
+ add_token(:T_LBRACK) end
1701
+ # line 370 "lib/oga/xpath/lexer.rl"
1702
+ begin
1703
+ te = p+1
1704
+ end
1705
+ when 23 then
1706
+ # line 192 "lib/oga/xpath/lexer.rl"
1707
+ begin
1708
+ add_token(:T_RBRACK) end
1709
+ # line 370 "lib/oga/xpath/lexer.rl"
1710
+ begin
1711
+ te = p+1
1712
+ end
1713
+ when 45 then
1714
+ # line 297 "lib/oga/xpath/lexer.rl"
1715
+ begin
1716
+ add_token(:T_PIPE) end
1717
+ # line 369 "lib/oga/xpath/lexer.rl"
1718
+ begin
1719
+ te = p
1720
+ p = p - 1; end
1721
+ when 33 then
1722
+ # line 298 "lib/oga/xpath/lexer.rl"
1723
+ begin
1724
+ add_token(:T_ADD) end
1725
+ # line 369 "lib/oga/xpath/lexer.rl"
1726
+ begin
1727
+ te = p
1728
+ p = p - 1; end
1729
+ when 41 then
1730
+ # line 299 "lib/oga/xpath/lexer.rl"
1731
+ begin
1732
+ add_token(:T_EQ) end
1733
+ # line 369 "lib/oga/xpath/lexer.rl"
1734
+ begin
1735
+ te = p
1736
+ p = p - 1; end
1737
+ when 31 then
1738
+ # line 300 "lib/oga/xpath/lexer.rl"
1739
+ begin
1740
+ add_token(:T_NEQ) end
1741
+ # line 369 "lib/oga/xpath/lexer.rl"
1742
+ begin
1743
+ te = p
1744
+ p = p - 1; end
1745
+ when 39 then
1746
+ # line 301 "lib/oga/xpath/lexer.rl"
1747
+ begin
1748
+ add_token(:T_LT) end
1749
+ # line 369 "lib/oga/xpath/lexer.rl"
1750
+ begin
1751
+ te = p
1752
+ p = p - 1; end
1753
+ when 42 then
1754
+ # line 302 "lib/oga/xpath/lexer.rl"
1755
+ begin
1756
+ add_token(:T_GT) end
1757
+ # line 369 "lib/oga/xpath/lexer.rl"
1758
+ begin
1759
+ te = p
1760
+ p = p - 1; end
1761
+ when 40 then
1762
+ # line 303 "lib/oga/xpath/lexer.rl"
1763
+ begin
1764
+ add_token(:T_LTE) end
1765
+ # line 369 "lib/oga/xpath/lexer.rl"
1766
+ begin
1767
+ te = p
1768
+ p = p - 1; end
1769
+ when 43 then
1770
+ # line 304 "lib/oga/xpath/lexer.rl"
1771
+ begin
1772
+ add_token(:T_GTE) end
1773
+ # line 369 "lib/oga/xpath/lexer.rl"
1774
+ begin
1775
+ te = p
1776
+ p = p - 1; end
1777
+ when 27 then
1778
+ # line 314 "lib/oga/xpath/lexer.rl"
1779
+ begin
1780
+ add_token(:T_AND) end
1781
+ # line 369 "lib/oga/xpath/lexer.rl"
1782
+ begin
1783
+ te = p
1784
+ p = p - 1; end
1785
+ when 30 then
1786
+ # line 315 "lib/oga/xpath/lexer.rl"
1787
+ begin
1788
+ add_token(:T_OR) end
1789
+ # line 369 "lib/oga/xpath/lexer.rl"
1790
+ begin
1791
+ te = p
1792
+ p = p - 1; end
1793
+ when 28 then
1794
+ # line 316 "lib/oga/xpath/lexer.rl"
1795
+ begin
1796
+ add_token(:T_DIV) end
1797
+ # line 369 "lib/oga/xpath/lexer.rl"
1798
+ begin
1799
+ te = p
1800
+ p = p - 1; end
1801
+ when 29 then
1802
+ # line 317 "lib/oga/xpath/lexer.rl"
1803
+ begin
1804
+ add_token(:T_MOD) end
1805
+ # line 369 "lib/oga/xpath/lexer.rl"
1806
+ begin
1807
+ te = p
1808
+ p = p - 1; end
1809
+ when 25 then
1810
+ # line 318 "lib/oga/xpath/lexer.rl"
1811
+ begin
1812
+ add_token(:T_MUL) end
1813
+ # line 369 "lib/oga/xpath/lexer.rl"
1814
+ begin
1815
+ te = p
1816
+ p = p - 1; end
1817
+ when 26 then
1818
+ # line 319 "lib/oga/xpath/lexer.rl"
1819
+ begin
1820
+ add_token(:T_SUB) end
1821
+ # line 369 "lib/oga/xpath/lexer.rl"
1822
+ begin
1823
+ te = p
1824
+ p = p - 1; end
1825
+ when 17 then
1826
+ # line 1 "NONE"
1827
+ begin
1828
+ te = p+1
1829
+ end
1830
+ # line 369 "lib/oga/xpath/lexer.rl"
1831
+ begin
1832
+ act = 1; end
1833
+ when 5 then
1834
+ # line 1 "NONE"
1835
+ begin
1836
+ te = p+1
1837
+ end
1838
+ # line 215 "lib/oga/xpath/lexer.rl"
1839
+ begin
1840
+ act = 6; end
1841
+ when 6 then
1842
+ # line 1 "NONE"
1843
+ begin
1844
+ te = p+1
1845
+ end
1846
+ # line 221 "lib/oga/xpath/lexer.rl"
1847
+ begin
1848
+ act = 7; end
1849
+ when 35 then
1850
+ # line 1 "NONE"
1851
+ begin
1852
+ te = p+1
1853
+ end
1854
+ # line 298 "lib/oga/xpath/lexer.rl"
1855
+ begin
1856
+ add_token(:T_ADD) end
1857
+ # line 215 "lib/oga/xpath/lexer.rl"
1858
+ begin
1859
+ act = 6; end
1860
+ # line 1861 "lib/oga/xpath/lexer.rb"
1861
+ end
1862
+ end
1863
+ end
1864
+ if _goto_level <= _again
1865
+ case _xpath_lexer_to_state_actions[cs]
1866
+ when 10 then
1867
+ # line 1 "NONE"
1868
+ begin
1869
+ ts = nil; end
1870
+ # line 1 "NONE"
1871
+ begin
1872
+ act = 0
1873
+ end
1874
+ # line 1875 "lib/oga/xpath/lexer.rb"
1875
+ end
1876
+
1877
+ if cs == 0
1878
+ _goto_level = _out
1879
+ next
1880
+ end
1881
+ p += 1
1882
+ if p != pe
1883
+ _goto_level = _resume
1884
+ next
1885
+ end
1886
+ end
1887
+ if _goto_level <= _test_eof
1888
+ if p == eof
1889
+ if _xpath_lexer_eof_trans[cs] > 0
1890
+ _trans = _xpath_lexer_eof_trans[cs] - 1;
1891
+ _goto_level = _eof_trans
1892
+ next;
1893
+ end
1894
+ end
1895
+
1896
+ end
1897
+ if _goto_level <= _out
1898
+ break
1899
+ end
1900
+ end
1901
+ end
1902
+
1903
+ # line 132 "lib/oga/xpath/lexer.rl"
1904
+
1905
+ # % fix highlight
1906
+ ensure
1907
+ @block = nil
1908
+ end
1909
+
1910
+ private
1911
+
1912
+ ##
1913
+ # Emits a token of which the value is based on the supplied start/stop
1914
+ # position.
1915
+ #
1916
+ # @param [Symbol] type The token type.
1917
+ # @param [Fixnum] start
1918
+ # @param [Fixnum] stop
1919
+ #
1920
+ # @see [#text]
1921
+ # @see [#add_token]
1922
+ #
1923
+ def emit(type, start, stop)
1924
+ value = slice_input(start, stop)
1925
+
1926
+ add_token(type, value)
1927
+ end
1928
+
1929
+ ##
1930
+ # Returns the text between the specified start and stop position.
1931
+ #
1932
+ # @param [Fixnum] start
1933
+ # @param [Fixnum] stop
1934
+ # @return [String]
1935
+ #
1936
+ def slice_input(start, stop)
1937
+ return @data.byteslice(start, stop - start)
1938
+ end
1939
+
1940
+ ##
1941
+ # Yields a new token to the supplied block.
1942
+ #
1943
+ # @param [Symbol] type The token type.
1944
+ # @param [String] value The token value.
1945
+ #
1946
+ # @yieldparam [Symbol] type
1947
+ # @yieldparam [String|NilClass] value
1948
+ #
1949
+ def add_token(type, value = nil)
1950
+ @block.call(type, value)
1951
+ end
1952
+
1953
+
1954
+ # line 381 "lib/oga/xpath/lexer.rl"
1955
+
1956
+ end # Lexer
1957
+ end # XPath
1958
+ end # Oga