rubyjedi-oga 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
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