From 9f297e2b492576856585e37d627a02b23bd97e58 Mon Sep 17 00:00:00 2001 From: Nick Quaranto Date: Tue, 16 Sep 2008 14:18:08 -0400 Subject: [PATCH] Repacking gems since a rake gems:install wasn't working properly. --- .gitignore | 1 + config/environment.rb | 3 +- vendor/gems/RedCloth-4.0.3/.specification | 107 + vendor/gems/RedCloth-4.0.3/CHANGELOG | 65 + vendor/gems/RedCloth-4.0.3/COPYING | 18 + vendor/gems/RedCloth-4.0.3/README | 156 + vendor/gems/RedCloth-4.0.3/Rakefile | 240 + vendor/gems/RedCloth-4.0.3/bin/redcloth | 28 + .../ext/redcloth_scan/extconf.rb | 9 + .../ext/redcloth_scan/redcloth.h | 149 + .../ext/redcloth_scan/redcloth_attributes.c | 650 + .../ext/redcloth_scan/redcloth_attributes.rl | 78 + .../ext/redcloth_scan/redcloth_common.rl | 113 + .../ext/redcloth_scan/redcloth_inline.c | 7530 +++++++++++ .../ext/redcloth_scan/redcloth_inline.rl | 294 + .../ext/redcloth_scan/redcloth_scan.c | 11248 ++++++++++++++++ .../ext/redcloth_scan/redcloth_scan.rl | 527 + .../RedCloth-4.0.3/extras/mingw-rbconfig.rb | 176 + .../RedCloth-4.0.3/extras/ragel_profiler.rb | 73 + .../lib/case_sensitive_require/RedCloth.rb | 6 + vendor/gems/RedCloth-4.0.3/lib/redcloth.rb | 31 + .../lib/redcloth/formatters/base.rb | 57 + .../lib/redcloth/formatters/html.rb | 345 + .../lib/redcloth/formatters/latex.rb | 223 + .../redcloth/formatters/latex_entities.yml | 2414 ++++ .../lib/redcloth/textile_doc.rb | 105 + .../RedCloth-4.0.3/lib/redcloth/version.rb | 28 + .../RedCloth-4.0.3/lib/redcloth_scan.bundle | Bin 0 -> 544052 bytes vendor/gems/RedCloth-4.0.3/test/basic.yml | 815 ++ vendor/gems/RedCloth-4.0.3/test/code.yml | 203 + .../gems/RedCloth-4.0.3/test/definitions.yml | 82 + .../RedCloth-4.0.3/test/extra_whitespace.yml | 64 + .../gems/RedCloth-4.0.3/test/filter_html.yml | 177 + .../gems/RedCloth-4.0.3/test/filter_pba.yml | 20 + vendor/gems/RedCloth-4.0.3/test/helper.rb | 108 + vendor/gems/RedCloth-4.0.3/test/html.yml | 299 + vendor/gems/RedCloth-4.0.3/test/images.yml | 214 + vendor/gems/RedCloth-4.0.3/test/instiki.yml | 38 + vendor/gems/RedCloth-4.0.3/test/links.yml | 231 + vendor/gems/RedCloth-4.0.3/test/lists.yml | 283 + vendor/gems/RedCloth-4.0.3/test/poignant.yml | 89 + .../RedCloth-4.0.3/test/sanitize_html.yml | 42 + vendor/gems/RedCloth-4.0.3/test/table.yml | 267 + .../RedCloth-4.0.3/test/test_custom_tags.rb | 46 + .../RedCloth-4.0.3/test/test_extensions.rb | 31 + .../RedCloth-4.0.3/test/test_formatters.rb | 15 + .../gems/RedCloth-4.0.3/test/test_parser.rb | 73 + .../RedCloth-4.0.3/test/test_restrictions.rb | 41 + vendor/gems/RedCloth-4.0.3/test/textism.yml | 480 + vendor/gems/RedCloth-4.0.3/test/threshold.yml | 772 ++ .../RedCloth-4.0.3/test/validate_fixtures.rb | 73 + .../gems/feed-normalizer-1.5.1/.specification | 6 +- .../.specification | 55 +- .../CHANGELOG | 0 .../{hpricot-0.6 => hpricot-0.6.161}/COPYING | 0 .../{hpricot-0.6 => hpricot-0.6.161}/README | 0 .../{hpricot-0.6 => hpricot-0.6.161}/Rakefile | 116 +- .../ext/fast_xs/FastXsService.java | 1018 ++ .../hpricot-0.6.161/ext/fast_xs/extconf.rb | 4 + .../hpricot-0.6.161/ext/fast_xs/fast_xs.c | 194 + .../ext/hpricot_scan/HpricotScanService.java | 1531 +++ .../ext/hpricot_scan/extconf.rb | 0 .../ext/hpricot_scan/hpricot_common.rl | 0 .../ext/hpricot_scan/hpricot_scan.c | 3958 +++--- .../ext/hpricot_scan/hpricot_scan.h | 0 .../ext/hpricot_scan/hpricot_scan.java.java | 1300 ++ .../ext/hpricot_scan/hpricot_scan.java.rl | 8 +- .../ext/hpricot_scan/hpricot_scan.rl | 14 +- .../extras/mingw-rbconfig.rb | 0 .../lib/hpricot.rb | 0 .../lib/hpricot/blankslate.rb | 0 .../lib/hpricot/builder.rb | 25 +- .../lib/hpricot/elements.rb | 12 +- .../lib/hpricot/htmlinfo.rb | 0 .../lib/hpricot/inspect.rb | 0 .../lib/hpricot/modules.rb | 0 .../lib/hpricot/parse.rb | 7 +- .../lib/hpricot/tag.rb | 8 +- .../lib/hpricot/tags.rb | 0 .../lib/hpricot/traverse.rb | 23 +- .../lib/hpricot/xchar.rb | 0 .../test/files/basic.xhtml | 0 .../test/files/boingboing.html | 0 .../test/files/cy0.html | 0 .../test/files/immob.html | 0 .../test/files/pace_application.html | 0 .../test/files/tenderlove.html | 0 .../test/files/uswebgen.html | 0 .../test/files/utf8.html | 0 .../test/files/week9.html | 0 .../test/files/why.xml | 0 .../test/load_files.rb | 0 .../test/test_alter.rb | 12 + .../test/test_builder.rb | 13 + .../test/test_parser.rb | 7 + .../gems/hpricot-0.6.161/test/test_paths.rb | 25 + .../test/test_preserved.rb | 0 .../test/test_xml.rb | 0 .../ext/hpricot_scan/HpricotScanService.java | 1340 -- vendor/gems/hpricot-0.6/test/test_paths.rb | 16 - vendor/gems/rubypants-0.2.0/.specification | 3 +- 101 files changed, 35400 insertions(+), 3432 deletions(-) create mode 100644 vendor/gems/RedCloth-4.0.3/.specification create mode 100644 vendor/gems/RedCloth-4.0.3/CHANGELOG create mode 100644 vendor/gems/RedCloth-4.0.3/COPYING create mode 100644 vendor/gems/RedCloth-4.0.3/README create mode 100644 vendor/gems/RedCloth-4.0.3/Rakefile create mode 100755 vendor/gems/RedCloth-4.0.3/bin/redcloth create mode 100644 vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/extconf.rb create mode 100644 vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/redcloth.h create mode 100644 vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/redcloth_attributes.c create mode 100644 vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/redcloth_attributes.rl create mode 100644 vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/redcloth_common.rl create mode 100644 vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/redcloth_inline.c create mode 100644 vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/redcloth_inline.rl create mode 100644 vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/redcloth_scan.c create mode 100644 vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/redcloth_scan.rl create mode 100644 vendor/gems/RedCloth-4.0.3/extras/mingw-rbconfig.rb create mode 100644 vendor/gems/RedCloth-4.0.3/extras/ragel_profiler.rb create mode 100644 vendor/gems/RedCloth-4.0.3/lib/case_sensitive_require/RedCloth.rb create mode 100644 vendor/gems/RedCloth-4.0.3/lib/redcloth.rb create mode 100644 vendor/gems/RedCloth-4.0.3/lib/redcloth/formatters/base.rb create mode 100644 vendor/gems/RedCloth-4.0.3/lib/redcloth/formatters/html.rb create mode 100644 vendor/gems/RedCloth-4.0.3/lib/redcloth/formatters/latex.rb create mode 100644 vendor/gems/RedCloth-4.0.3/lib/redcloth/formatters/latex_entities.yml create mode 100644 vendor/gems/RedCloth-4.0.3/lib/redcloth/textile_doc.rb create mode 100644 vendor/gems/RedCloth-4.0.3/lib/redcloth/version.rb create mode 100755 vendor/gems/RedCloth-4.0.3/lib/redcloth_scan.bundle create mode 100644 vendor/gems/RedCloth-4.0.3/test/basic.yml create mode 100644 vendor/gems/RedCloth-4.0.3/test/code.yml create mode 100644 vendor/gems/RedCloth-4.0.3/test/definitions.yml create mode 100644 vendor/gems/RedCloth-4.0.3/test/extra_whitespace.yml create mode 100644 vendor/gems/RedCloth-4.0.3/test/filter_html.yml create mode 100644 vendor/gems/RedCloth-4.0.3/test/filter_pba.yml create mode 100644 vendor/gems/RedCloth-4.0.3/test/helper.rb create mode 100644 vendor/gems/RedCloth-4.0.3/test/html.yml create mode 100644 vendor/gems/RedCloth-4.0.3/test/images.yml create mode 100644 vendor/gems/RedCloth-4.0.3/test/instiki.yml create mode 100644 vendor/gems/RedCloth-4.0.3/test/links.yml create mode 100644 vendor/gems/RedCloth-4.0.3/test/lists.yml create mode 100644 vendor/gems/RedCloth-4.0.3/test/poignant.yml create mode 100644 vendor/gems/RedCloth-4.0.3/test/sanitize_html.yml create mode 100644 vendor/gems/RedCloth-4.0.3/test/table.yml create mode 100644 vendor/gems/RedCloth-4.0.3/test/test_custom_tags.rb create mode 100644 vendor/gems/RedCloth-4.0.3/test/test_extensions.rb create mode 100644 vendor/gems/RedCloth-4.0.3/test/test_formatters.rb create mode 100644 vendor/gems/RedCloth-4.0.3/test/test_parser.rb create mode 100644 vendor/gems/RedCloth-4.0.3/test/test_restrictions.rb create mode 100644 vendor/gems/RedCloth-4.0.3/test/textism.yml create mode 100644 vendor/gems/RedCloth-4.0.3/test/threshold.yml create mode 100644 vendor/gems/RedCloth-4.0.3/test/validate_fixtures.rb rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/.specification (89%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/CHANGELOG (100%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/COPYING (100%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/README (100%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/Rakefile (65%) create mode 100644 vendor/gems/hpricot-0.6.161/ext/fast_xs/FastXsService.java create mode 100644 vendor/gems/hpricot-0.6.161/ext/fast_xs/extconf.rb create mode 100644 vendor/gems/hpricot-0.6.161/ext/fast_xs/fast_xs.c create mode 100644 vendor/gems/hpricot-0.6.161/ext/hpricot_scan/HpricotScanService.java rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/ext/hpricot_scan/extconf.rb (100%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/ext/hpricot_scan/hpricot_common.rl (100%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/ext/hpricot_scan/hpricot_scan.c (66%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/ext/hpricot_scan/hpricot_scan.h (100%) create mode 100644 vendor/gems/hpricot-0.6.161/ext/hpricot_scan/hpricot_scan.java.java rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/ext/hpricot_scan/hpricot_scan.java.rl (97%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/ext/hpricot_scan/hpricot_scan.rl (94%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/extras/mingw-rbconfig.rb (100%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/lib/hpricot.rb (100%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/lib/hpricot/blankslate.rb (100%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/lib/hpricot/builder.rb (90%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/lib/hpricot/elements.rb (97%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/lib/hpricot/htmlinfo.rb (100%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/lib/hpricot/inspect.rb (100%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/lib/hpricot/modules.rb (100%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/lib/hpricot/parse.rb (98%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/lib/hpricot/tag.rb (96%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/lib/hpricot/tags.rb (100%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/lib/hpricot/traverse.rb (97%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/lib/hpricot/xchar.rb (100%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/test/files/basic.xhtml (100%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/test/files/boingboing.html (100%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/test/files/cy0.html (100%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/test/files/immob.html (100%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/test/files/pace_application.html (100%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/test/files/tenderlove.html (100%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/test/files/uswebgen.html (100%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/test/files/utf8.html (100%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/test/files/week9.html (100%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/test/files/why.xml (100%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/test/load_files.rb (100%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/test/test_alter.rb (83%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/test/test_builder.rb (63%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/test/test_parser.rb (97%) create mode 100644 vendor/gems/hpricot-0.6.161/test/test_paths.rb rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/test/test_preserved.rb (100%) rename vendor/gems/{hpricot-0.6 => hpricot-0.6.161}/test/test_xml.rb (100%) delete mode 100644 vendor/gems/hpricot-0.6/ext/hpricot_scan/HpricotScanService.java delete mode 100644 vendor/gems/hpricot-0.6/test/test_paths.rb diff --git a/.gitignore b/.gitignore index a14cab0..4168620 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +*~ log/* tmp/* db/*.sqlite3 diff --git a/config/environment.rb b/config/environment.rb index a01cd96..0a78261 100644 --- a/config/environment.rb +++ b/config/environment.rb @@ -25,8 +25,9 @@ config.gem 'feed-normalizer' config.gem 'hpricot' config.gem 'rubypants' + config.gem 'RedCloth' end require 'authenticated_model' -ActionController::Base.cache_store = :file_store, "#{RAILS_ROOT}/public/cache" \ No newline at end of file +ActionController::Base.cache_store = :file_store, "#{RAILS_ROOT}/public/cache" diff --git a/vendor/gems/RedCloth-4.0.3/.specification b/vendor/gems/RedCloth-4.0.3/.specification new file mode 100644 index 0000000..7d612c4 --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/.specification @@ -0,0 +1,107 @@ +--- !ruby/object:Gem::Specification +name: RedCloth +version: !ruby/object:Gem::Version + version: 4.0.3 +platform: ruby +authors: +- Jason Garber +autorequire: +bindir: bin +cert_chain: [] + +date: 2008-08-18 00:00:00 -04:00 +default_executable: redcloth +dependencies: [] + +description: RedCloth-4.0.3 - Textile parser for Ruby. http://redcloth.org/ +email: redcloth-upwards@rubyforge.org +executables: +- redcloth +extensions: +- ext/redcloth_scan/extconf.rb +extra_rdoc_files: +- README +- CHANGELOG +- COPYING +files: +- CHANGELOG +- COPYING +- README +- Rakefile +- bin/redcloth +- test/basic.yml +- test/code.yml +- test/definitions.yml +- test/extra_whitespace.yml +- test/filter_html.yml +- test/filter_pba.yml +- test/helper.rb +- test/html.yml +- test/images.yml +- test/instiki.yml +- test/links.yml +- test/lists.yml +- test/poignant.yml +- test/sanitize_html.yml +- test/table.yml +- test/test_custom_tags.rb +- test/test_extensions.rb +- test/test_formatters.rb +- test/test_parser.rb +- test/test_restrictions.rb +- test/textism.yml +- test/threshold.yml +- test/validate_fixtures.rb +- lib/case_sensitive_require +- lib/case_sensitive_require/RedCloth.rb +- lib/redcloth +- lib/redcloth/formatters +- lib/redcloth/formatters/base.rb +- lib/redcloth/formatters/html.rb +- lib/redcloth/formatters/latex.rb +- lib/redcloth/formatters/latex_entities.yml +- lib/redcloth/textile_doc.rb +- lib/redcloth/version.rb +- lib/redcloth.rb +- lib/redcloth_scan.bundle +- extras/mingw-rbconfig.rb +- extras/ragel_profiler.rb +- ext/redcloth_scan/redcloth.h +- ext/redcloth_scan/redcloth_attributes.c +- ext/redcloth_scan/redcloth_inline.c +- ext/redcloth_scan/redcloth_scan.c +- ext/redcloth_scan/extconf.rb +- ext/redcloth_scan/redcloth_attributes.rl +- ext/redcloth_scan/redcloth_common.rl +- ext/redcloth_scan/redcloth_inline.rl +- ext/redcloth_scan/redcloth_scan.rl +has_rdoc: true +homepage: http://redcloth.org/ +post_install_message: +rdoc_options: [] + +require_paths: +- bin +- lib +- lib/case_sensitive_require +required_ruby_version: !ruby/object:Gem::Requirement + requirements: + - - ">=" + - !ruby/object:Gem::Version + version: "0" + version: +required_rubygems_version: !ruby/object:Gem::Requirement + requirements: + - - ">=" + - !ruby/object:Gem::Version + version: "0" + version: +requirements: [] + +rubyforge_project: redcloth +rubygems_version: 1.2.0 +signing_key: +specification_version: 2 +summary: RedCloth-4.0.3 - Textile parser for Ruby. http://redcloth.org/ +test_files: [] + diff --git a/vendor/gems/RedCloth-4.0.3/CHANGELOG b/vendor/gems/RedCloth-4.0.3/CHANGELOG new file mode 100644 index 0000000..2d8df82 --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/CHANGELOG @@ -0,0 +1,65 @@ +*4.0.3 (August 18, 2008)* + +* Fix NoMethodError: private method gsub!' called for nil:NilClass when two dimensions followed by a space. #38 + +* Fixed unititialized constant RedCloth::TextileDoc with Rails 2.1. Came from a workaround for Rails bug #320 that was applied even when not necessary. #42 + + +*4.0.2 (August 15, 2008)* + +* Fixed link references/aliases not being recognized when they include hyphens. #36 + +* Dimensions in feet and inches use correct typographic characters. #25 + +* Limit overzealous superscript and subscript. Sup/sub phrases must be surrounded by spaces or square brackets, as in Textile 2. #35 + +* Fixed HTML before tables causing the opening table tag to be emitted twice. #33 + +* Cleaned up unused code that was causing a warning. #28 + +* Workaround for Rails 2.1 bug that loads a previous version of RedCloth before loading the unpacked gem. Has since been fixed in edge rails. #30 + +* Added a RedCloth::VERSION.to_s and .== methods so you can puts and compare RedCloth::VERSION just like in previous RedCloth releases. #26 + +* Fixed HTML block ending tags terminating blocks prematurely. #22 + + +*4.0.1 (July 24, 2008)* + +* Fixed lines starting with dashes being recognized as a definition list when there were no definitions. + +* Created alias RedCloth.rb so Rails 2.1 gem dependency works on case-sensitive operating systems . +* Fixed parsing sentences that had two em dashes surrounded by spaces from becoming del phrases. #19 + +* Fixed links including prior quoted phrases. #17 + + +*4.0.0 (July 21, 2008)* + +* New SuperRedCloth (RedCloth 4.0) is a total rewrite using Ragel for the parsing. + +* Markdown support has been removed. + +* Single newlines become
tags, just as in traditional RedCloth and other Textile parsers. + +* HTML special characters are automatically escaped inside code signatures, like Textile 2. This means you can simply write @
@ and the symbols are escaped whereas in RedCloth 3 you had to write @<br />@ to make the code fragment readable. + +* The restrictions parameter is observed just like previous versions (except :hard_breaks is now the default). + +* Arguments to RedCloth#to_html are called so extensions made for prior versions can work. Note: extensions need to be included rather than defined directly within the RedCloth class as was previously possible. + +* Custom block tags can be implemented as in the previous version, though the means of implementing them differs. + +* HTML embedded in the Textile input does not often need to be escaped from Textile parsing. + +* The parser will not wrap lines that begin with a space in paragraph tags. + +* Rudimentary support for LaTeX is built in. + +* RedCloth::VERSION on a line by itself inserts the version number into the output. + +* Output (less newlines and tabs) is identical to Textile 2 except a few cases where the RedCloth way was preferable. + +* Over 500 tests prevent regression + +* It's 40 times faster than the previous version. \ No newline at end of file diff --git a/vendor/gems/RedCloth-4.0.3/COPYING b/vendor/gems/RedCloth-4.0.3/COPYING new file mode 100644 index 0000000..95dcee2 --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/COPYING @@ -0,0 +1,18 @@ +Copyright (c) 2008 Jason Garber + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/gems/RedCloth-4.0.3/README b/vendor/gems/RedCloth-4.0.3/README new file mode 100644 index 0000000..ab9d587 --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/README @@ -0,0 +1,156 @@ += RedCloth - Textile parser for Ruby + +Homepage:: http://redcloth.org +Author:: Jason Garber +Copyright:: (c) 2008 Jason Garber +License:: MIT + +(See http://redcloth.org/textile/ for a Textile reference.) + += RedCloth + +RedCloth is a Ruby library for converting Textile into HTML. + +== Installing + +RedCloth can be installed via RubyGems: + + sudo gem install RedCloth + +Or can be compiled from its Ragel source with rake compile. Ragel 6.2 +or greater is required to build RedCloth. + +== What is Textile? + +Textile is a simple formatting style for text +documents, loosely based on some HTML conventions. + +== Sample Textile Text + + h2. This is a title + + h3. This is a subhead + + This is a bit of paragraph. + + bq. This is a blockquote. + += Writing Textile + +A Textile document consists of paragraphs. Paragraphs +can be specially formatted by adding a small instruction +to the beginning of the paragraph. + + h3. Header 3. + bq. Blockquote. + # Numeric list. + * Bulleted list. + +== Quick Phrase Modifiers + +Quick phrase modifiers are also included, to allow formatting +of small portions of text within a paragraph. + + _emphasis_ + __italicized__ + *strong* + **bold** + ??citation?? + -deleted text- + +inserted text+ + ^superscript^ + ~subscript~ + @code@ + %(classname)span% + + ==notextile== (leave text alone) + +== Links + +To make a hypertext link, put the link text in "quotation +marks" followed immediately by a colon and the URL of the link. + +Optional: text in (parentheses) following the link text, +but before the closing quotation mark, will become a title +attribute for the link, visible as a tool tip when a cursor is above it. + +Example: + + "This is a link (This is a title)":http://www.textism.com + +Will become: + + This is a link + +== Images + +To insert an image, put the URL for the image inside exclamation marks. + +Optional: text that immediately follows the URL in (parentheses) will +be used as the Alt text for the image. Images on the web should always +have descriptive Alt text for the benefit of readers using non-graphical +browsers. + +Optional: place a colon followed by a URL immediately after the +closing ! to make the image into a link. + +Example: + + !http://www.textism.com/common/textist.gif(Textist)! + +Will become: + + Textist + +With a link: + + !/common/textist.gif(Textist)!:http://textism.com + +Will become: + + Textist + +== Defining Acronyms + +HTML allows authors to define acronyms via the tag. The definition appears as a +tool tip when a cursor hovers over the acronym. A crucial aid to clear writing, +this should be used at least once for each acronym in documents where they appear. + +To quickly define an acronym in Textile, place the full text in (parentheses) +immediately following the acronym. + +Example: + + ACLU(American Civil Liberties Union) + +Will become: + + ACLU + +== Adding Tables + +In Textile, simple tables can be added by separating each column by +a pipe. + + |a|simple|table|row| + |And|Another|table|row| + +Styles are applied with curly braces. + + table{border:1px solid black}. + {background:#ddd;color:red}. |a|red|row| + +== Using RedCloth + +RedCloth is simply an extension of the String class, which can handle +Textile formatting. Use it like a String and output HTML with its +RedCloth#to_html method. + + doc = RedCloth.new " + + h2. Test document + + Just a simple test." + + puts doc.to_html + diff --git a/vendor/gems/RedCloth-4.0.3/Rakefile b/vendor/gems/RedCloth-4.0.3/Rakefile new file mode 100644 index 0000000..4b2e242 --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/Rakefile @@ -0,0 +1,240 @@ +require 'rake' +require 'rake/clean' +require 'rake/gempackagetask' +require 'rake/rdoctask' +require 'rake/testtask' +require 'fileutils' +include FileUtils +require 'lib/redcloth/version' + +NAME = RedCloth::NAME +SUMMARY = RedCloth::DESCRIPTION +VERS = RedCloth::VERSION::STRING +CLEAN.include ['ext/redcloth_scan/*.{bundle,so,obj,pdb,lib,def,exp,c,o,xml}', 'ext/redcloth_scan/Makefile', '**/.*.sw?', '*.gem', '.config'] +CLOBBER.include ['lib/*.{bundle,so,obj,pdb,lib,def,exp}'] + +desc "Does a full compile, test run" +task :default => [:compile, :test] + +desc "Compiles all extensions" +task :compile => [:redcloth_scan] do + if Dir.glob(File.join("lib","redcloth_scan.*")).length == 0 + STDERR.puts "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" + STDERR.puts "Gem actually failed to build. Your system is" + STDERR.puts "NOT configured properly to build redcloth." + STDERR.puts "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" + exit(1) + end +end + +desc "Packages up RedCloth." +task :package => [:clean, :compile] + +desc "Releases packages for all RedCloth packages and platforms." +task :release => [:package, :rubygems_win32] + +desc "Run all the tests" +Rake::TestTask.new do |t| + t.libs << "test" + t.test_files = FileList['test/test_*.rb'] + t.verbose = true +end + +# Run specific tests or test files +# +# rake test:parser +# => Runs the full TestParser unit test +# +# rake test:parser:textism +# => Runs the tests matching /textism/ in the TestParser unit test +rule "" do |t| + # test:file:method + if /test:(.*)(:([^.]+))?$/.match(t.name) + arguments = t.name.split(":")[1..-1] + file_name = arguments.first + test_name = arguments[1..-1] + + if File.exist?("test/test_#{file_name}.rb") + run_file_name = "test_#{file_name}.rb" + end + + sh "ruby -Ilib:test test/#{run_file_name} -n /#{test_name}/" + end +end + +Rake::RDocTask.new do |rdoc| + rdoc.rdoc_dir = 'doc/rdoc' + # rdoc.options += RDOC_OPTS + # rdoc.template = "extras/flipbook_rdoc.rb" + rdoc.main = "README" + rdoc.title = "RedCloth Documentation" + rdoc.rdoc_files.add ['README', 'CHANGELOG', 'COPYING', 'lib/**/*.rb', 'ext/**/*.c'] +end + +PKG_FILES = %w(CHANGELOG COPYING README Rakefile) + + Dir.glob("{bin,doc,test,lib,extras}/**/*") + + Dir.glob("ext/**/*.{h,c,rb,rl}") + + %w[attributes inline scan].map {|f| "ext/redcloth_scan/redcloth_#{f}.c"} + +spec = + Gem::Specification.new do |s| + s.name = NAME + s.version = VERS + s.platform = Gem::Platform::RUBY + s.has_rdoc = true + s.extra_rdoc_files = ["README", "CHANGELOG", "COPYING"] + s.summary = SUMMARY + s.description = s.summary + s.author = "Jason Garber" + s.email = 'redcloth-upwards@rubyforge.org' + s.homepage = 'http://redcloth.org/' + s.rubyforge_project = 'redcloth' + + s.files = PKG_FILES + + s.require_paths << "lib/case_sensitive_require" + #s.autorequire = "redcloth" # no no no this is tHe 3v1l + s.extensions = FileList["ext/**/extconf.rb"].to_a + s.executables = ["redcloth"] + end + +Rake::GemPackageTask.new(spec) do |p| + p.need_tar = true + p.gem_spec = spec +end + +extension = "redcloth_scan" +ext = "ext/redcloth_scan" +ext_so = "#{ext}/#{extension}.#{Config::CONFIG['DLEXT']}" +ext_files = FileList[ + "#{ext}/redcloth_scan.c", + "#{ext}/redcloth_inline.c", + "#{ext}/redcloth_attributes.c", + "#{ext}/extconf.rb", + "#{ext}/Makefile", + "lib" +] + +file ext_so => ext_files do + Dir.chdir(ext) do + sh(PLATFORM =~ /win32/ ? 'nmake' : 'make') + end + cp ext_so, "lib" +end + +task "lib" do + directory "lib" +end + +["#{ext}/redcloth_scan.c","#{ext}/redcloth_inline.c","#{ext}/redcloth_attributes.c"].each do |name| + @code_style ||= "T0" + source = name.sub(/\.c$/, '.rl') + file name => [source, "#{ext}/redcloth_common.rl", "#{ext}/redcloth.h"] do + @ragel_v ||= `ragel -v`[/(version )(\S*)/,2].split('.').map{|s| s.to_i} + if @ragel_v[0] > 6 || (@ragel_v[0] == 6 && @ragel_v[1] >= 2) + sh %{ragel #{source} -#{@code_style} -o #{name}} + else + STDERR.puts "Ragel 6.2 or greater is required to generate #{name}." + exit(1) + end + end +end + +desc "Builds just the #{extension} extension" +task extension.to_sym => ["#{ext}/Makefile", ext_so ] + +file "#{ext}/Makefile" => ["#{ext}/extconf.rb", "#{ext}/redcloth_scan.c","#{ext}/redcloth_inline.c","#{ext}/redcloth_attributes.c"] do + Dir.chdir(ext) do ruby "extconf.rb" end +end + +Win32Spec = Gem::Specification.new do |s| + s.name = NAME + s.version = VERS + s.platform = 'x86-mswin32-60' + s.has_rdoc = false + s.extra_rdoc_files = ["README", "CHANGELOG", "COPYING"] + s.summary = SUMMARY + s.description = s.summary + s.author = "Jason Garber" + s.email = 'redcloth-upwards@rubyforge.org' + s.homepage = 'http://redcloth.org/' + s.rubyforge_project = 'redcloth' + + s.files = PKG_FILES + ["lib/redcloth_scan.so"] + + s.require_path = "lib" + #s.autorequire = "redcloth" # no no no this is tHe 3v1l + s.extensions = [] + s.bindir = "bin" +end + +WIN32_PKG_DIR = "pkg/#{NAME}-#{VERS}-mswin32" + +file WIN32_PKG_DIR => [:package] do + cp_r "pkg/#{NAME}-#{VERS}", "#{WIN32_PKG_DIR}" +end + +desc "Cross-compile the redcloth_scan extension for win32" +file "redcloth_scan_win32" => [WIN32_PKG_DIR] do + cp "extras/mingw-rbconfig.rb", "#{WIN32_PKG_DIR}/ext/redcloth_scan/rbconfig.rb" + sh "cd #{WIN32_PKG_DIR}/ext/redcloth_scan/ && ruby -I. extconf.rb && make" + mv "#{WIN32_PKG_DIR}/ext/redcloth_scan/redcloth_scan.so", "#{WIN32_PKG_DIR}/lib" +end + +desc "Build the binary RubyGems package for win32" +task :rubygems_win32 => ["redcloth_scan_win32"] do + Dir.chdir("#{WIN32_PKG_DIR}") do + Gem::Builder.new(Win32Spec).build + verbose(true) { + cp Dir["*.gem"].first, "../" + } + end +end + +CLEAN.include WIN32_PKG_DIR + +desc "Build and install the RedCloth gem on your system" +task :install => [:package] do + sh %{sudo gem install pkg/#{NAME}-#{VERS}} +end + +desc "Uninstall the RedCloth gem from your system" +task :uninstall => [:clean] do + sh %{sudo gem uninstall #{NAME}} +end + +RAGEL_CODE_GENERATION_STYLES = { + 'T0' => "Table driven FSM (default)", + 'T1' => "Faster table driven FSM", + 'F0' => "Flat table driven FSM", + 'F1' => "Faster flat table-driven FSM", + 'G0' => "Goto-driven FSM", + 'G1' => "Faster goto-driven FSM", + 'G2' => "Really fast goto-driven FSM" +} + +desc "Find the fastest code generation style for Ragel" +task :optimize do + require 'extras/ragel_profiler' + results = [] + RAGEL_CODE_GENERATION_STYLES.each do |style, name| + @code_style = style + profiler = RagelProfiler.new(style + " " + name) + + # Hack to get everything to invoke again. Could use #execute, but then it + # doesn't execute prerequisites the second+ time + Rake::Task.tasks.each {|t| t.instance_eval "@already_invoked = false" } + + Rake::Task['clobber'].invoke + + profiler.measure(:compile) do + Rake::Task['compile'].invoke + end + profiler.measure(:test) do + Rake::Task['test'].invoke + end + profiler.ext_size(ext_so) + + end + puts RagelProfiler.results +end diff --git a/vendor/gems/RedCloth-4.0.3/bin/redcloth b/vendor/gems/RedCloth-4.0.3/bin/redcloth new file mode 100755 index 0000000..5de665f --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/bin/redcloth @@ -0,0 +1,28 @@ +#!/usr/bin/env ruby +$:.unshift(File.dirname(__FILE__) + '/../lib/') +require 'optparse' +require 'redcloth' + +if %w(--version -v).include? ARGV.first + puts "#{RedCloth::NAME} #{RedCloth::VERSION}" + exit(0) +end + +output_as = "html" +opts = OptionParser.new do |opts| + opts.banner = "Usage: redcloth [options] [redcloth_formatted.txt]" + opts.separator "If no file specified, STDIN will be used. If you are typing input, you can send an EOF by pressing ^D (^Z on Windows)" + opts.separator "" + opts.on("-o", "--output STYLE", "Output format (defaults to #{output_as})") do |o| + output_as = o + end +end +opts.parse! ARGV + +red = RedCloth.new( ARGF.read ) +out_meth = "to_#{ output_as }" +if red.respond_to? out_meth + puts red.method( out_meth ).call +else + abort "** No to_#{ output_as } method found for the `#{ output_as }' format" +end diff --git a/vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/extconf.rb b/vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/extconf.rb new file mode 100644 index 0000000..10d43e4 --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/extconf.rb @@ -0,0 +1,9 @@ +require 'mkmf' + +$CFLAGS << " -O2 " + +### It seems to work fine without these +# dir_config("redcloth_scan") +# have_library("c", "main") + +create_makefile("redcloth_scan") diff --git a/vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/redcloth.h b/vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/redcloth.h new file mode 100644 index 0000000..b052e14 --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/redcloth.h @@ -0,0 +1,149 @@ +#ifndef redcloth_h +#define redcloth_h + +/* variable defs */ +#ifndef redcloth_scan_c +extern VALUE super_ParseError, mRedCloth, super_RedCloth; +extern int SYM_escape_preformatted; +#endif + +/* function defs */ +void rb_str_cat_escaped(VALUE self, VALUE str, char *ts, char *te); +void rb_str_cat_escaped_for_preformatted(VALUE self, VALUE str, char *ts, char *te); +VALUE redcloth_inline(VALUE, char *, char *, VALUE); +VALUE redcloth_inline2(VALUE, VALUE, VALUE); +VALUE redcloth_attribute_parser(int, VALUE, char *, char *); +VALUE redcloth_attributes(VALUE, VALUE); +VALUE redcloth_link_attributes(VALUE, VALUE); +VALUE redcloth_transform(VALUE, char *, char *, VALUE); +VALUE redcloth_transform2(VALUE, VALUE); +void red_inc(VALUE, VALUE); +VALUE red_block(VALUE, VALUE, VALUE, VALUE); +VALUE red_blockcode(VALUE, VALUE, VALUE); +VALUE red_pass(VALUE, VALUE, VALUE, ID, VALUE); +VALUE red_pass_code(VALUE, VALUE, VALUE, ID); + +/* parser macros */ +#define CLEAR_REGS() regs = rb_hash_new(); +#define CAT(H) rb_str_cat(H, ts, te-ts) +#define CLEAR(H) H = rb_str_new2("") +#define INLINE(H, T) rb_str_append(H, rb_funcall(self, rb_intern(#T), 1, regs)) +#define DONE(H) rb_str_append(html, H); CLEAR(H); CLEAR_REGS() +#define PASS(H, A, T) rb_str_append(H, red_pass(self, regs, ID2SYM(rb_intern(#A)), rb_intern(#T), refs)) +#define PARSE_ATTR(A) red_parse_attr(self, regs, ID2SYM(rb_intern(#A))) +#define PARSE_LINK_ATTR(A) red_parse_link_attr(self, regs, ID2SYM(rb_intern(#A))) +#define PASS_CODE(H, A, T, O) rb_str_append(H, red_pass_code(self, regs, ID2SYM(rb_intern(#A)), rb_intern(#T))) +#define ADD_BLOCK() \ + rb_str_append(html, red_block(self, regs, block, refs)); \ + extend = Qnil; \ + CLEAR(block); \ + CLEAR_REGS() +#define ADD_EXTENDED_BLOCK() rb_str_append(html, red_block(self, regs, block, refs)); CLEAR(block); +#define END_EXTENDED() extend = Qnil; CLEAR_REGS(); +#define ADD_BLOCKCODE() rb_str_append(html, red_blockcode(self, regs, block)); CLEAR(block); CLEAR_REGS() +#define ADD_EXTENDED_BLOCKCODE() rb_str_append(html, red_blockcode(self, regs, block)); CLEAR(block); +#define ASET(T, V) rb_hash_aset(regs, ID2SYM(rb_intern(#T)), rb_str_new2(#V)); +#define AINC(T) red_inc(regs, ID2SYM(rb_intern(#T))); +#define SET_ATTRIBUTES() \ + VALUE buf = Qnil; \ + SET_ATTRIBUTE("class_buf", "class"); \ + SET_ATTRIBUTE("id_buf", "id"); \ + SET_ATTRIBUTE("lang_buf", "lang"); \ + SET_ATTRIBUTE("style_buf", "style"); +#define SET_ATTRIBUTE(B, A) \ + buf = rb_hash_aref(regs, ID2SYM(rb_intern(B))); \ + if (buf != Qnil) rb_hash_aset(regs, ID2SYM(rb_intern(A)), buf); +#define TRANSFORM(T) \ + if (p > reg && reg >= ts) { \ + VALUE str = redcloth_transform(self, reg, p, refs); \ + rb_hash_aset(regs, ID2SYM(rb_intern(#T)), str); \ + /* printf("TRANSFORM(" #T ") '%s' (p:'%d' reg:'%d')\n", RSTRING(str)->ptr, p, reg);*/ \ + } else { \ + rb_hash_aset(regs, ID2SYM(rb_intern(#T)), Qnil); \ + } +#define STORE(T) \ + if (p > reg && reg >= ts) { \ + VALUE str = rb_str_new(reg, p-reg); \ + rb_hash_aset(regs, ID2SYM(rb_intern(#T)), str); \ + /* printf("STORE(" #T ") '%s' (p:'%d' reg:'%d')\n", RSTRING(str)->ptr, p, reg);*/ \ + } else { \ + rb_hash_aset(regs, ID2SYM(rb_intern(#T)), Qnil); \ + } +#define STORE_B(T) \ + if (p > bck && bck >= ts) { \ + VALUE str = rb_str_new(bck, p-bck); \ + rb_hash_aset(regs, ID2SYM(rb_intern(#T)), str); \ + /* printf("STORE_B(" #T ") '%s' (p:'%d' reg:'%d')\n", RSTRING(str)->ptr, p, reg);*/ \ + } else { \ + rb_hash_aset(regs, ID2SYM(rb_intern(#T)), Qnil); \ + } +#define STORE_URL(T) \ + if (p > reg && reg >= ts) { \ + char punct = 1; \ + while (p > reg && punct == 1) { \ + switch (*(p - 1)) { \ + case '!': case '"': case '#': case '$': case '%': case ']': case '[': case '&': case '\'': \ + case '*': case '+': case ',': case '-': case '.': case ')': case '(': case ':': \ + case ';': case '=': case '?': case '@': case '\\': case '^': case '_': \ + case '`': case '|': case '~': p--; break; \ + default: punct = 0; \ + } \ + } \ + te = p; \ + } \ + STORE(T); \ + if ( !NIL_P(refs) && rb_funcall(refs, rb_intern("has_key?"), 1, rb_hash_aref(regs, ID2SYM(rb_intern(#T)))) ) { \ + rb_hash_aset(regs, ID2SYM(rb_intern(#T)), rb_hash_aref(refs, rb_hash_aref(regs, ID2SYM(rb_intern(#T))))); \ + } +#define LIST_ITEM() \ + int aint = 0; \ + VALUE aval = rb_ary_entry(list_index, nest-1); \ + if (aval != Qnil) aint = NUM2INT(aval); \ + if (strcmp(list_type, "ol") == 0) \ + { \ + rb_ary_store(list_index, nest-1, INT2NUM(aint + 1)); \ + } \ + if (nest > RARRAY(list_layout)->len) \ + { \ + sprintf(listm, "%s_open", list_type); \ + if (list_continue == 1) \ + { \ + list_continue = 0; \ + rb_hash_aset(regs, ID2SYM(rb_intern("start")), rb_ary_entry(list_index, nest-1)); \ + } \ + else \ + { \ + VALUE start = rb_hash_aref(regs, ID2SYM(rb_intern("start"))); \ + if (NIL_P(start) ) \ + { \ + rb_ary_store(list_index, nest-1, INT2NUM(1)); \ + } \ + else \ + { \ + VALUE start_num = rb_funcall(start,rb_intern("to_i"),0); \ + rb_ary_store(list_index, nest-1, start_num); \ + } \ + } \ + rb_hash_aset(regs, ID2SYM(rb_intern("nest")), INT2NUM(nest)); \ + rb_str_append(html, rb_funcall(self, rb_intern(listm), 1, regs)); \ + rb_ary_store(list_layout, nest-1, rb_str_new2(list_type)); \ + CLEAR_REGS(); \ + ASET(first, true); \ + } \ + LIST_CLOSE(); \ + rb_hash_aset(regs, ID2SYM(rb_intern("nest")), INT2NUM(RARRAY(list_layout)->len)); \ + ASET(type, li_open) +#define LIST_CLOSE() \ + while (nest < RARRAY(list_layout)->len) \ + { \ + rb_hash_aset(regs, ID2SYM(rb_intern("nest")), INT2NUM(RARRAY(list_layout)->len)); \ + VALUE end_list = rb_ary_pop(list_layout); \ + if (!NIL_P(end_list)) \ + { \ + StringValue(end_list); \ + sprintf(listm, "%s_close", RSTRING(end_list)->ptr); \ + rb_str_append(html, rb_funcall(self, rb_intern(listm), 1, regs)); \ + } \ + } + +#endif diff --git a/vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/redcloth_attributes.c b/vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/redcloth_attributes.c new file mode 100644 index 0000000..64fbfd1 --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/redcloth_attributes.c @@ -0,0 +1,650 @@ +#line 1 "ext/redcloth_scan/redcloth_attributes.rl" +/* + * redcloth_attributes.rl + * + * Copyright (C) 2008 Jason Garber + */ +#include +#include "redcloth.h" + +#line 37 "ext/redcloth_scan/redcloth_attributes.rl" + + + +#line 15 "ext/redcloth_scan/redcloth_attributes.c" +static const char _redcloth_attributes_actions[] = { + 0, 1, 0, 1, 3, 1, 4, 1, + 5, 1, 6, 1, 7, 1, 9, 1, + 10, 1, 12, 1, 13, 1, 16, 1, + 17, 1, 22, 1, 23, 1, 24, 2, + 0, 9, 2, 2, 15, 2, 8, 20, + 2, 9, 21, 2, 10, 11, 2, 13, + 0, 2, 13, 1, 2, 13, 4, 2, + 13, 5, 2, 13, 6, 2, 13, 7, + 2, 13, 14, 2, 13, 18, 2, 13, + 19, 3, 8, 9, 20, 3, 13, 0, + 14, 3, 13, 0, 18, 3, 13, 0, + 19, 3, 13, 1, 19, 3, 13, 4, + 14, 3, 13, 4, 18, 3, 13, 4, + 19 +}; + +static const short _redcloth_attributes_key_offsets[] = { + 0, 0, 6, 11, 13, 14, 15, 23, + 29, 34, 38, 46, 53, 60, 66, 72, + 73, 80, 86, 87, 94, 100, 108, 115, + 122, 128, 134, 139, 145, 153, 160, 167, + 173, 179, 186, 192, 199, 205, 212, 218, + 225, 231, 233, 235, 236, 237, 244, 250, + 255, 263, 270, 277, 283, 284, 291, 297, + 298, 305, 311, 312, 313, 320, 326, 334, + 342, 348, 356, 364, 371, 378, 388, 395, + 402, 409, 416, 423, 430, 437, 447, 453, + 461, 469, 476, 483, 493, 500, 507, 514, + 521, 528, 535, 542, 549, 556, 559, 565, + 573, 581, 588, 595, 604, 611, 618, 625 +}; + +static const char _redcloth_attributes_trans_keys[] = { + 0, 9, 10, 32, 11, 13, 0, 9, + 32, 10, 13, 35, 41, 41, 41, 0, + 32, 40, 46, 91, 123, 9, 13, 0, + 9, 10, 32, 11, 13, 0, 9, 32, + 10, 13, 0, 32, 9, 13, 0, 9, + 10, 32, 35, 41, 11, 13, 0, 9, + 32, 35, 41, 10, 13, 0, 9, 10, + 32, 41, 11, 13, 0, 9, 32, 41, + 10, 13, 0, 9, 10, 32, 11, 13, + 93, 0, 9, 10, 32, 93, 11, 13, + 0, 9, 32, 93, 10, 13, 125, 0, + 9, 10, 32, 125, 11, 13, 0, 9, + 32, 125, 10, 13, 0, 9, 10, 32, + 35, 41, 11, 13, 0, 9, 32, 35, + 41, 10, 13, 0, 9, 10, 32, 41, + 11, 13, 0, 9, 32, 41, 10, 13, + 0, 9, 10, 32, 11, 13, 0, 9, + 32, 10, 13, 0, 9, 10, 32, 11, + 13, 0, 9, 10, 32, 35, 41, 11, + 13, 0, 9, 32, 35, 41, 10, 13, + 0, 9, 10, 32, 41, 11, 13, 0, + 9, 32, 41, 10, 13, 0, 9, 10, + 32, 11, 13, 0, 9, 10, 32, 93, + 11, 13, 0, 9, 32, 93, 10, 13, + 0, 9, 10, 32, 125, 11, 13, 0, + 9, 32, 125, 10, 13, 0, 9, 10, + 32, 93, 11, 13, 0, 9, 32, 93, + 10, 13, 0, 9, 10, 32, 125, 11, + 13, 0, 9, 32, 125, 10, 13, 35, + 41, 35, 41, 41, 41, 0, 32, 40, + 91, 123, 9, 13, 0, 9, 10, 32, + 11, 13, 0, 9, 32, 10, 13, 0, + 9, 10, 32, 35, 41, 11, 13, 0, + 9, 32, 35, 41, 10, 13, 0, 9, + 10, 32, 41, 11, 13, 0, 9, 32, + 41, 10, 13, 93, 0, 9, 10, 32, + 93, 11, 13, 0, 9, 32, 93, 10, + 13, 125, 0, 9, 10, 32, 125, 11, + 13, 0, 9, 32, 125, 10, 13, 93, + 125, 0, 32, 40, 91, 123, 9, 13, + 0, 9, 10, 32, 11, 13, 0, 9, + 10, 32, 35, 41, 11, 13, 0, 9, + 10, 32, 35, 41, 11, 13, 0, 9, + 10, 32, 11, 13, 0, 9, 10, 32, + 35, 41, 11, 13, 0, 9, 10, 32, + 35, 41, 11, 13, 0, 9, 10, 32, + 41, 11, 13, 0, 9, 10, 32, 41, + 11, 13, 0, 9, 10, 32, 40, 46, + 91, 123, 11, 13, 0, 9, 10, 32, + 46, 11, 13, 0, 9, 10, 32, 93, + 11, 13, 0, 9, 10, 32, 93, 11, + 13, 0, 9, 10, 32, 125, 11, 13, + 0, 9, 10, 32, 125, 11, 13, 0, + 9, 10, 32, 41, 11, 13, 0, 9, + 10, 32, 41, 11, 13, 0, 9, 10, + 32, 40, 46, 91, 123, 11, 13, 0, + 9, 10, 32, 11, 13, 0, 9, 10, + 32, 35, 41, 11, 13, 0, 9, 10, + 32, 35, 41, 11, 13, 0, 9, 10, + 32, 41, 11, 13, 0, 9, 10, 32, + 41, 11, 13, 0, 9, 10, 32, 40, + 46, 91, 123, 11, 13, 0, 9, 10, + 32, 46, 11, 13, 0, 9, 10, 32, + 93, 11, 13, 0, 9, 10, 32, 93, + 11, 13, 0, 9, 10, 32, 125, 11, + 13, 0, 9, 10, 32, 125, 11, 13, + 0, 9, 10, 32, 93, 11, 13, 0, + 9, 10, 32, 93, 11, 13, 0, 9, + 10, 32, 125, 11, 13, 0, 9, 10, + 32, 125, 11, 13, 40, 91, 123, 0, + 9, 10, 32, 11, 13, 0, 9, 10, + 32, 35, 41, 11, 13, 0, 9, 10, + 32, 35, 41, 11, 13, 0, 9, 10, + 32, 41, 11, 13, 0, 9, 10, 32, + 41, 11, 13, 0, 9, 10, 32, 40, + 91, 123, 11, 13, 0, 9, 10, 32, + 93, 11, 13, 0, 9, 10, 32, 93, + 11, 13, 0, 9, 10, 32, 125, 11, + 13, 0, 9, 10, 32, 125, 11, 13, + 0 +}; + +static const char _redcloth_attributes_single_lengths[] = { + 0, 4, 3, 2, 1, 1, 6, 4, + 3, 2, 6, 5, 5, 4, 4, 1, + 5, 4, 1, 5, 4, 6, 5, 5, + 4, 4, 3, 4, 6, 5, 5, 4, + 4, 5, 4, 5, 4, 5, 4, 5, + 4, 2, 2, 1, 1, 5, 4, 3, + 6, 5, 5, 4, 1, 5, 4, 1, + 5, 4, 1, 1, 5, 4, 6, 6, + 4, 6, 6, 5, 5, 8, 5, 5, + 5, 5, 5, 5, 5, 8, 4, 6, + 6, 5, 5, 8, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 3, 4, 6, + 6, 5, 5, 7, 5, 5, 5, 5 +}; + +static const char _redcloth_attributes_range_lengths[] = { + 0, 1, 1, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0, + 1, 1, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 0, 0, 0, 0, 1, 1, 1, + 1, 1, 1, 1, 0, 1, 1, 0, + 1, 1, 0, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1 +}; + +static const short _redcloth_attributes_index_offsets[] = { + 0, 0, 6, 11, 14, 16, 18, 26, + 32, 37, 41, 49, 56, 63, 69, 75, + 77, 84, 90, 92, 99, 105, 113, 120, + 127, 133, 139, 144, 150, 158, 165, 172, + 178, 184, 191, 197, 204, 210, 217, 223, + 230, 236, 239, 242, 244, 246, 253, 259, + 264, 272, 279, 286, 292, 294, 301, 307, + 309, 316, 322, 324, 326, 333, 339, 347, + 355, 361, 369, 377, 384, 391, 401, 408, + 415, 422, 429, 436, 443, 450, 460, 466, + 474, 482, 489, 496, 506, 513, 520, 527, + 534, 541, 548, 555, 562, 569, 573, 579, + 587, 595, 602, 609, 618, 625, 632, 639 +}; + +static const unsigned char _redcloth_attributes_indicies[] = { + 0, 2, 3, 2, 0, 1, 0, 2, + 2, 0, 1, 6, 7, 5, 4, 8, + 10, 9, 4, 12, 13, 14, 15, 16, + 4, 11, 17, 19, 20, 19, 17, 18, + 17, 19, 19, 17, 18, 4, 12, 4, + 11, 5, 22, 23, 22, 24, 25, 5, + 21, 5, 22, 22, 24, 25, 5, 21, + 9, 27, 28, 27, 29, 9, 26, 9, + 27, 27, 29, 9, 26, 17, 19, 20, + 30, 17, 11, 32, 31, 31, 34, 35, + 34, 36, 31, 33, 31, 34, 34, 36, + 31, 33, 38, 37, 37, 40, 41, 40, + 42, 37, 39, 37, 40, 40, 42, 37, + 39, 5, 44, 45, 44, 46, 47, 5, + 43, 5, 44, 44, 46, 47, 5, 43, + 9, 49, 50, 49, 51, 9, 48, 9, + 49, 49, 51, 9, 48, 17, 53, 54, + 53, 17, 52, 17, 53, 53, 17, 52, + 0, 2, 3, 56, 0, 55, 5, 58, + 59, 58, 60, 61, 5, 57, 5, 58, + 58, 60, 61, 5, 57, 9, 63, 64, + 63, 65, 9, 62, 9, 63, 63, 65, + 9, 62, 17, 53, 54, 66, 17, 55, + 31, 68, 69, 68, 70, 31, 67, 31, + 68, 68, 70, 31, 67, 37, 72, 73, + 72, 74, 37, 71, 37, 72, 72, 74, + 37, 71, 31, 76, 77, 76, 78, 31, + 75, 31, 76, 76, 78, 31, 75, 37, + 80, 81, 80, 82, 37, 79, 37, 80, + 80, 82, 37, 79, 84, 85, 83, 88, + 89, 87, 86, 90, 92, 91, 86, 86, + 94, 95, 96, 86, 93, 97, 99, 100, + 99, 97, 98, 97, 99, 99, 97, 98, + 87, 102, 103, 102, 104, 105, 87, 101, + 87, 102, 102, 104, 105, 87, 101, 91, + 107, 108, 107, 109, 91, 106, 91, 107, + 107, 109, 91, 106, 111, 110, 110, 113, + 114, 113, 115, 110, 112, 110, 113, 113, + 115, 110, 112, 117, 116, 116, 119, 120, + 119, 121, 116, 118, 116, 119, 119, 121, + 116, 118, 123, 122, 123, 124, 123, 123, + 126, 127, 128, 123, 125, 129, 2, 3, + 2, 129, 1, 131, 132, 133, 132, 134, + 135, 131, 130, 136, 44, 45, 44, 46, + 47, 136, 43, 137, 19, 20, 19, 137, + 18, 139, 140, 141, 140, 142, 143, 139, + 138, 5, 22, 23, 22, 24, 25, 5, + 21, 8, 145, 146, 145, 18, 8, 144, + 9, 27, 28, 27, 29, 9, 26, 137, + 19, 20, 30, 13, 14, 15, 16, 137, + 11, 137, 19, 20, 30, 14, 137, 11, + 148, 149, 150, 149, 18, 148, 147, 31, + 34, 35, 34, 36, 31, 33, 152, 153, + 154, 153, 18, 152, 151, 37, 40, 41, + 40, 42, 37, 39, 156, 157, 158, 157, + 1, 156, 155, 159, 49, 50, 49, 51, + 159, 48, 129, 2, 3, 56, 160, 161, + 162, 163, 129, 55, 164, 53, 54, 53, + 164, 52, 131, 166, 167, 166, 168, 169, + 131, 165, 136, 58, 59, 58, 60, 61, + 136, 57, 156, 171, 172, 171, 52, 156, + 170, 159, 63, 64, 63, 65, 159, 62, + 164, 53, 54, 66, 160, 161, 162, 163, + 164, 55, 164, 53, 54, 66, 161, 164, + 55, 174, 175, 176, 175, 52, 174, 173, + 177, 68, 69, 68, 70, 177, 67, 179, + 180, 181, 180, 52, 179, 178, 182, 72, + 73, 72, 74, 182, 71, 174, 184, 185, + 184, 1, 174, 183, 177, 76, 77, 76, + 78, 177, 75, 179, 187, 188, 187, 1, + 179, 186, 182, 80, 81, 80, 82, 182, + 79, 189, 190, 191, 123, 192, 99, 100, + 99, 192, 98, 83, 194, 195, 194, 196, + 197, 83, 193, 87, 102, 103, 102, 104, + 105, 87, 101, 90, 199, 200, 199, 98, + 90, 198, 91, 107, 108, 107, 109, 91, + 106, 192, 99, 100, 99, 94, 95, 96, + 192, 93, 122, 202, 203, 202, 98, 122, + 201, 110, 113, 114, 113, 115, 110, 112, + 124, 205, 206, 205, 98, 124, 204, 116, + 119, 120, 119, 121, 116, 118, 0 +}; + +static const char _redcloth_attributes_trans_targs[] = { + 60, 61, 1, 2, 60, 3, 4, 6, + 5, 5, 6, 64, 9, 65, 70, 71, + 73, 60, 64, 7, 8, 66, 10, 11, + 67, 69, 68, 12, 13, 69, 14, 15, + 6, 72, 16, 17, 69, 18, 6, 74, + 19, 20, 69, 63, 21, 22, 75, 77, + 76, 23, 24, 77, 78, 25, 26, 78, + 27, 80, 28, 29, 81, 83, 82, 30, + 31, 83, 32, 86, 33, 34, 83, 88, + 35, 36, 83, 90, 37, 38, 77, 92, + 39, 40, 77, 42, 43, 45, 93, 42, + 43, 45, 44, 44, 45, 94, 95, 100, + 102, 93, 94, 46, 47, 96, 48, 49, + 97, 99, 98, 50, 51, 99, 52, 45, + 101, 53, 54, 99, 55, 45, 103, 56, + 57, 99, 52, 0, 55, 61, 62, 89, + 91, 60, 63, 3, 21, 22, 75, 77, + 3, 60, 66, 3, 10, 11, 67, 69, + 68, 12, 13, 72, 15, 16, 17, 74, + 18, 19, 20, 76, 5, 23, 24, 5, + 79, 84, 85, 87, 60, 80, 28, 29, + 81, 83, 82, 30, 31, 86, 15, 33, + 34, 15, 88, 18, 35, 36, 18, 90, + 37, 38, 92, 39, 40, 41, 58, 59, + 93, 96, 48, 49, 97, 99, 98, 50, + 51, 101, 53, 54, 103, 56, 57 +}; + +static const char _redcloth_attributes_trans_actions[] = { + 27, 19, 0, 0, 29, 0, 5, 5, + 1, 0, 7, 46, 0, 81, 46, 81, + 81, 25, 19, 0, 0, 67, 0, 0, + 97, 52, 67, 0, 0, 55, 0, 0, + 9, 67, 0, 0, 58, 0, 11, 67, + 0, 0, 61, 70, 0, 0, 101, 52, + 70, 0, 0, 55, 19, 0, 0, 46, + 0, 67, 0, 0, 97, 52, 67, 0, + 0, 55, 0, 67, 0, 0, 58, 67, + 0, 0, 61, 70, 0, 0, 58, 70, + 0, 0, 61, 1, 0, 0, 23, 0, + 5, 5, 1, 0, 7, 46, 77, 77, + 77, 21, 19, 0, 0, 64, 0, 0, + 93, 52, 64, 0, 0, 55, 0, 9, + 64, 0, 0, 58, 0, 11, 64, 0, + 0, 61, 1, 0, 1, 49, 89, 89, + 89, 40, 85, 31, 1, 1, 70, 19, + 13, 37, 81, 1, 1, 1, 67, 19, + 81, 1, 1, 81, 1, 1, 1, 81, + 1, 1, 1, 85, 31, 1, 1, 13, + 81, 46, 81, 81, 73, 81, 1, 1, + 67, 19, 81, 1, 1, 81, 31, 1, + 1, 13, 81, 31, 1, 1, 13, 85, + 1, 1, 85, 1, 1, 3, 3, 3, + 34, 77, 1, 1, 64, 19, 77, 1, + 1, 77, 1, 1, 77, 1, 1 +}; + +static const char _redcloth_attributes_to_state_actions[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 43, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +}; + +static const char _redcloth_attributes_from_state_actions[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 17, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 +}; + +static const short _redcloth_attributes_eof_trans[] = { + 0, 1, 1, 5, 5, 5, 5, 18, + 18, 5, 18, 18, 18, 18, 18, 5, + 18, 18, 5, 18, 18, 1, 1, 1, + 1, 18, 18, 1, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 1, 1, 1, + 1, 0, 87, 87, 87, 87, 98, 98, + 98, 98, 98, 98, 87, 98, 98, 87, + 98, 98, 0, 0, 0, 130, 130, 130, + 138, 138, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 130, 130, 130, 165, 165, + 165, 165, 165, 165, 165, 165, 165, 165, + 165, 130, 130, 130, 130, 0, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 193 +}; + +static const int redcloth_attributes_start = 60; +static const int redcloth_attributes_error = 0; + +static const int redcloth_attributes_en_inline = 93; +static const int redcloth_attributes_en_link_says = 60; + +#line 40 "ext/redcloth_scan/redcloth_attributes.rl" + + +VALUE +redcloth_attribute_parser(machine, self, p, pe) + int machine; + VALUE self; + char *p, *pe; +{ + int cs, act; + char *ts, *te, *reg, *bck, *eof; + VALUE regs = rb_hash_new(); + VALUE buf = Qnil; + + +#line 391 "ext/redcloth_scan/redcloth_attributes.c" + { + cs = redcloth_attributes_start; + ts = 0; + te = 0; + act = 0; + } +#line 54 "ext/redcloth_scan/redcloth_attributes.rl" + + cs = machine; + + +#line 403 "ext/redcloth_scan/redcloth_attributes.c" + { + int _klen; + unsigned int _trans; + const char *_acts; + unsigned int _nacts; + const char *_keys; + + if ( p == pe ) + goto _test_eof; + if ( cs == 0 ) + goto _out; +_resume: + _acts = _redcloth_attributes_actions + _redcloth_attributes_from_state_actions[cs]; + _nacts = (unsigned int) *_acts++; + while ( _nacts-- > 0 ) { + switch ( *_acts++ ) { + case 12: +#line 1 "ext/redcloth_scan/redcloth_attributes.rl" + {ts = p;} + break; +#line 424 "ext/redcloth_scan/redcloth_attributes.c" + } + } + + _keys = _redcloth_attributes_trans_keys + _redcloth_attributes_key_offsets[cs]; + _trans = _redcloth_attributes_index_offsets[cs]; + + _klen = _redcloth_attributes_single_lengths[cs]; + if ( _klen > 0 ) { + const char *_lower = _keys; + const char *_mid; + const char *_upper = _keys + _klen - 1; + while (1) { + if ( _upper < _lower ) + break; + + _mid = _lower + ((_upper-_lower) >> 1); + if ( (*p) < *_mid ) + _upper = _mid - 1; + else if ( (*p) > *_mid ) + _lower = _mid + 1; + else { + _trans += (_mid - _keys); + goto _match; + } + } + _keys += _klen; + _trans += _klen; + } + + _klen = _redcloth_attributes_range_lengths[cs]; + if ( _klen > 0 ) { + const char *_lower = _keys; + const char *_mid; + const char *_upper = _keys + (_klen<<1) - 2; + while (1) { + if ( _upper < _lower ) + break; + + _mid = _lower + (((_upper-_lower) >> 1) & ~1); + if ( (*p) < _mid[0] ) + _upper = _mid - 2; + else if ( (*p) > _mid[1] ) + _lower = _mid + 2; + else { + _trans += ((_mid - _keys)>>1); + goto _match; + } + } + _trans += _klen; + } + +_match: + _trans = _redcloth_attributes_indicies[_trans]; +_eof_trans: + cs = _redcloth_attributes_trans_targs[_trans]; + + if ( _redcloth_attributes_trans_actions[_trans] == 0 ) + goto _again; + + _acts = _redcloth_attributes_actions + _redcloth_attributes_trans_actions[_trans]; + _nacts = (unsigned int) *_acts++; + while ( _nacts-- > 0 ) + { + switch ( *_acts++ ) + { + case 0: +#line 5 "ext/redcloth_scan/redcloth_attributes.rl" + { reg = p; } + break; + case 1: +#line 6 "ext/redcloth_scan/redcloth_attributes.rl" + { bck = p; } + break; + case 2: +#line 7 "ext/redcloth_scan/redcloth_attributes.rl" + { STORE(text); } + break; + case 3: +#line 8 "ext/redcloth_scan/redcloth_attributes.rl" + { CLEAR_REGS(); reg = NULL; } + break; + case 4: +#line 14 "ext/redcloth_scan/redcloth_attributes.rl" + { STORE(class_buf) } + break; + case 5: +#line 14 "ext/redcloth_scan/redcloth_attributes.rl" + {STORE(id_buf)} + break; + case 6: +#line 15 "ext/redcloth_scan/redcloth_attributes.rl" + { STORE(lang_buf) } + break; + case 7: +#line 16 "ext/redcloth_scan/redcloth_attributes.rl" + { STORE(style_buf) } + break; + case 8: +#line 27 "ext/redcloth_scan/redcloth_attributes.rl" + { STORE(name) } + break; + case 9: +#line 28 "ext/redcloth_scan/redcloth_attributes.rl" + { STORE_B(name_without_attributes) } + break; + case 13: +#line 1 "ext/redcloth_scan/redcloth_attributes.rl" + {te = p+1;} + break; + case 14: +#line 23 "ext/redcloth_scan/redcloth_attributes.rl" + {act = 1;} + break; + case 15: +#line 23 "ext/redcloth_scan/redcloth_attributes.rl" + {te = p;p--;{ SET_ATTRIBUTES(); }} + break; + case 16: +#line 23 "ext/redcloth_scan/redcloth_attributes.rl" + {{p = ((te))-1;}{ SET_ATTRIBUTES(); }} + break; + case 17: +#line 1 "ext/redcloth_scan/redcloth_attributes.rl" + { switch( act ) { + case 0: + {{cs = 0; goto _again;}} + break; + case 1: + {{p = ((te))-1;} SET_ATTRIBUTES(); } + break; + } + } + break; + case 18: +#line 32 "ext/redcloth_scan/redcloth_attributes.rl" + {act = 2;} + break; + case 19: +#line 33 "ext/redcloth_scan/redcloth_attributes.rl" + {act = 3;} + break; + case 20: +#line 32 "ext/redcloth_scan/redcloth_attributes.rl" + {te = p;p--;{ SET_ATTRIBUTES(); }} + break; + case 21: +#line 33 "ext/redcloth_scan/redcloth_attributes.rl" + {te = p;p--;{ SET_ATTRIBUTE("name_without_attributes", "name"); }} + break; + case 22: +#line 32 "ext/redcloth_scan/redcloth_attributes.rl" + {{p = ((te))-1;}{ SET_ATTRIBUTES(); }} + break; + case 23: +#line 33 "ext/redcloth_scan/redcloth_attributes.rl" + {{p = ((te))-1;}{ SET_ATTRIBUTE("name_without_attributes", "name"); }} + break; + case 24: +#line 1 "ext/redcloth_scan/redcloth_attributes.rl" + { switch( act ) { + case 2: + {{p = ((te))-1;} SET_ATTRIBUTES(); } + break; + case 3: + {{p = ((te))-1;} SET_ATTRIBUTE("name_without_attributes", "name"); } + break; + } + } + break; +#line 594 "ext/redcloth_scan/redcloth_attributes.c" + } + } + +_again: + _acts = _redcloth_attributes_actions + _redcloth_attributes_to_state_actions[cs]; + _nacts = (unsigned int) *_acts++; + while ( _nacts-- > 0 ) { + switch ( *_acts++ ) { + case 10: +#line 1 "ext/redcloth_scan/redcloth_attributes.rl" + {ts = 0;} + break; + case 11: +#line 1 "ext/redcloth_scan/redcloth_attributes.rl" + {act = 0;} + break; +#line 611 "ext/redcloth_scan/redcloth_attributes.c" + } + } + + if ( cs == 0 ) + goto _out; + if ( ++p != pe ) + goto _resume; + _test_eof: {} + if ( p == eof ) + { + if ( _redcloth_attributes_eof_trans[cs] > 0 ) { + _trans = _redcloth_attributes_eof_trans[cs] - 1; + goto _eof_trans; + } + } + + _out: {} + } +#line 58 "ext/redcloth_scan/redcloth_attributes.rl" + + return regs; +} + +VALUE +redcloth_attributes(self, str) + VALUE self, str; +{ + StringValue(str); + int cs = redcloth_attributes_en_inline; + return redcloth_attribute_parser(cs, self, RSTRING(str)->ptr, RSTRING(str)->ptr + RSTRING(str)->len + 1); +} + +VALUE +redcloth_link_attributes(self, str) + VALUE self, str; +{ + StringValue(str); + int cs = redcloth_attributes_en_link_says; + return redcloth_attribute_parser(cs, self, RSTRING(str)->ptr, RSTRING(str)->ptr + RSTRING(str)->len + 1); +} \ No newline at end of file diff --git a/vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/redcloth_attributes.rl b/vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/redcloth_attributes.rl new file mode 100644 index 0000000..2fe7a2e --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/redcloth_attributes.rl @@ -0,0 +1,78 @@ +/* + * redcloth_attributes.rl + * + * Copyright (C) 2008 Jason Garber + */ +#include +#include "redcloth.h" + +%%{ + + machine redcloth_attributes; + include redcloth_common "redcloth_common.rl"; + + C2_CLAS = ( "(" ( [^)#]+ >A %{ STORE(class_buf) } )? ("#" [^)]+ >A %{STORE(id_buf)} )? ")" ) ; + C2_LNGE = ( "[" [^\]]+ >A %{ STORE(lang_buf) } "]" ) ; + C2_STYL = ( "{" [^}]+ >A %{ STORE(style_buf) } "}" ) ; + C2 = ( C2_CLAS | C2_STYL | C2_LNGE )+ ; + + mtext_with_attributes = ( C2 mtext >A %T ) >X ; + + inline := |* + + mtext_with_attributes { SET_ATTRIBUTES(); } ; + + *|; + + link_text_with_attributes = C2 "."* " "* ( mtext+ ) >A %{ STORE(name) } ; + link_text_without_attributes = ( mtext+ ) >B %{ STORE_B(name_without_attributes) } ; + + link_says := |* + + link_text_with_attributes { SET_ATTRIBUTES(); } ; + link_text_without_attributes { SET_ATTRIBUTE("name_without_attributes", "name"); } ; + + *|; + +}%% + +%% write data nofinal; + + +VALUE +redcloth_attribute_parser(machine, self, p, pe) + int machine; + VALUE self; + char *p, *pe; +{ + int cs, act; + char *ts, *te, *reg, *bck, *eof; + VALUE regs = rb_hash_new(); + VALUE buf = Qnil; + + %% write init; + + cs = machine; + + %% write exec; + + return regs; +} + +VALUE +redcloth_attributes(self, str) + VALUE self, str; +{ + StringValue(str); + int cs = redcloth_attributes_en_inline; + return redcloth_attribute_parser(cs, self, RSTRING(str)->ptr, RSTRING(str)->ptr + RSTRING(str)->len + 1); +} + +VALUE +redcloth_link_attributes(self, str) + VALUE self, str; +{ + StringValue(str); + int cs = redcloth_attributes_en_link_says; + return redcloth_attribute_parser(cs, self, RSTRING(str)->ptr, RSTRING(str)->ptr + RSTRING(str)->len + 1); +} \ No newline at end of file diff --git a/vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/redcloth_common.rl b/vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/redcloth_common.rl new file mode 100644 index 0000000..a07c2df --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/redcloth_common.rl @@ -0,0 +1,113 @@ +%%{ + + machine redcloth_common; + + action A { reg = p; } + action B { bck = p; } + action T { STORE(text); } + action X { CLEAR_REGS(); reg = NULL; } + action cat { CAT(block); } + action esc { rb_str_cat_escaped(self, block, ts, te); } + action esc_pre { rb_str_cat_escaped_for_preformatted(self, block, ts, te); } + action ignore { rb_str_append(block, rb_funcall(self, rb_intern("ignore"), 1, regs)); } + + # simple + LF = ( '\n' ) ; + default = ^0 ; + EOF = 0 ; + + # textile modifiers + A_LEFT = "<" %{ ASET(align, left) } ; + A_RIGHT = ">" %{ ASET(align, right) } ; + A_JUSTIFIED = "<>" %{ ASET(align, justify) } ; + A_CENTER = "=" %{ ASET(align, center) } ; + A_PADLEFT = "(" >A %{ AINC(padding-left) } ; + A_PADRIGHT = ")" >A %{ AINC(padding-right) } ; + A_HLGN = ( A_LEFT | A_RIGHT | A_JUSTIFIED | A_CENTER | A_PADLEFT | A_PADRIGHT ) ; + A_LIMIT = ( A_LEFT | A_CENTER | A_RIGHT ) ; + A_VLGN = ( "-" %{ ASET(vertical-align, middle) } | "^" %{ ASET(vertical-align, top) } | "~" %{ ASET(vertical-align, bottom) } ) ; + C_CLAS = ( "(" ( [^)#]+ >A %{ STORE(class) } )? ("#" [^)]+ >A %{STORE(id)} )? ")" ) ; + C_LNGE = ( "[" [^\]]+ >A %{ STORE(lang) } "]" ) ; + C_STYL = ( "{" [^}]+ >A %{ STORE(style) } "}" ) ; + S_CSPN = ( "\\" [0-9]+ >A %{ STORE(colspan) } ) ; + S_RSPN = ( "/" [0-9]+ >A %{ STORE(rowspan) } ) ; + D_HEADER = "_" %{ ASET(th, true) } ; + A = ( ( A_HLGN | A_VLGN )* ) ; + A2 = ( A_LIMIT? ) ; + S = ( S_CSPN | S_RSPN )* ; + C = ( C_CLAS | C_STYL | C_LNGE )* ; + D = ( D_HEADER ) ; + N_CONT = "_" %{ list_continue = 1; }; + N_NUM = digit+ >A %{ STORE(start) }; + N = ( N_CONT | N_NUM )? ; + PUNCT = ( "!" | '"' | "#" | "$" | "%" | "&" | "'" | "," | "-" | "." | "/" | ":" | ";" | "=" | "?" | "\\" | "^" | "`" | "|" | "~" | "[" | "(" | "<" ) ; + dotspace = ("." " "*) ; + indent = [ \t]* ; + + # very un-DRY; Adrian says an action-stripping macro will come in a future Ragel version + A_LEFT_noactions = "<" ; + A_RIGHT_noactions = ">" ; + A_JUSTIFIED_noactions = "<>" ; + A_CENTER_noactions = "=" ; + A_PADLEFT_noactions = "(" ; + A_PADRIGHT_noactions = ")" ; + A_HLGN_noactions = ( A_LEFT_noactions | A_RIGHT_noactions | A_JUSTIFIED_noactions | A_CENTER_noactions | A_PADLEFT_noactions | A_PADRIGHT_noactions ) ; + A_VLGN_noactions = ( "-" | "^" | "~" ) ; + C_CLAS_noactions = ( "(" ( [^)#]+ )? ("#" [^)]+ )? ")" ) ; + C_LNGE_noactions = ( "[" [^\]]+ "]" ) ; + C_STYL_noactions = ( "{" [^}]+ "}" ) ; + A_noactions = ( ( A_HLGN_noactions | A_VLGN_noactions )* ) ; + C_noactions = ( C_CLAS_noactions | C_STYL_noactions | C_LNGE_noactions )* ; + + + # text blocks + trailing = PUNCT - ("'" | '"') ; + chars = (default - space)+ ; + phrase = chars -- trailing ; + + # html tags (from Hpricot) + NameChar = [\-A-Za-z0-9._:?] ; + Name = [A-Za-z_:] NameChar* ; + NameAttr = NameChar+ ; + Q1Attr = [^']* ; + Q2Attr = [^"]* ; + UnqAttr = ( space | [^ \t\r\n<>"'] [^ \t\r\n<>]* ) ; + Nmtoken = NameChar+ ; + Attr = NameAttr space* "=" space* ('"' Q2Attr '"' | "'" Q1Attr "'" | UnqAttr space+ ) space* ; + AttrEnd = ( NameAttr space* "=" space* UnqAttr? | Nmtoken ) ; + AttrSet = ( Attr | Nmtoken space+ ) ; + + script_tag_start = ( "]* ">" ) >X >A %T ; + script_tag_end = ( "" >A %T LF? ) >X ; + + + # URI tokens (lifted from Mongrel) + CTL = (cntrl | 127); + safe = ("$" | "-" | "_" | "."); + extra = ("!" | "*" | "'" | "(" | ")" | "," | "#"); + reserved = (";" | "/" | "?" | ":" | "@" | "&" | "=" | "+"); + unsafe = (CTL | " " | "\"" | "%" | "<" | ">"); + national = any -- (alpha | digit | reserved | extra | safe | unsafe); + unreserved = (alpha | digit | safe | extra | national); + escape = ("%" xdigit xdigit); + uchar = (unreserved | escape); + pchar = (uchar | ":" | "@" | "&" | "=" | "+"); + scheme = ( alpha | digit | "+" | "-" | "." )+ ; + absolute_uri = (scheme ":" (uchar | reserved )*); + safepath = (pchar* (alpha | digit | safe) pchar*) ; + path = (safepath ( "/" pchar* )*) ; + query = ( uchar | reserved )* ; + param = ( pchar | "/" )* ; + params = (param ( ";" param )*) ; + rel_path = (path (";" params)?) ("?" query)?; + absolute_path = ("/"+ rel_path?); + target = ("#" pchar*) ; + uri = (target | absolute_uri | absolute_path | rel_path) ; + + # common + title = ( '(' default+ >A %{ STORE(title) } :> ')' ) ; + word = ( alnum | safe | " " ) ; + mspace = ( ( " " | "\t" | LF )+ ) -- LF{2} ; + mtext = ( chars (mspace chars)* ) ; + +}%%; diff --git a/vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/redcloth_inline.c b/vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/redcloth_inline.c new file mode 100644 index 0000000..beddece --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/redcloth_inline.c @@ -0,0 +1,7530 @@ +#line 1 "ext/redcloth_scan/redcloth_inline.rl" +/* + * redcloth_inline.rl + * + * Copyright (C) 2008 Jason Garber + */ +#include +#include "redcloth.h" + +#line 150 "ext/redcloth_scan/redcloth_inline.rl" + + + +#line 15 "ext/redcloth_scan/redcloth_inline.c" +static const char _redcloth_inline_actions[] = { + 0, 1, 0, 1, 1, 1, 2, 1, + 6, 1, 7, 1, 8, 1, 9, 1, + 10, 1, 11, 1, 14, 1, 16, 1, + 18, 1, 20, 1, 21, 1, 22, 1, + 23, 1, 24, 1, 25, 1, 26, 1, + 47, 1, 48, 1, 49, 1, 50, 1, + 51, 1, 52, 1, 53, 1, 54, 1, + 56, 1, 57, 1, 59, 1, 61, 1, + 62, 1, 63, 1, 64, 1, 65, 1, + 66, 1, 67, 1, 68, 1, 69, 1, + 70, 1, 72, 1, 73, 1, 74, 1, + 77, 1, 78, 1, 79, 1, 80, 1, + 81, 1, 83, 1, 84, 1, 85, 1, + 86, 1, 87, 1, 88, 1, 89, 1, + 90, 1, 91, 1, 92, 1, 93, 1, + 94, 1, 95, 1, 96, 1, 97, 1, + 104, 1, 105, 1, 106, 1, 107, 1, + 108, 1, 109, 1, 110, 1, 111, 1, + 112, 1, 113, 1, 114, 2, 0, 1, + 2, 0, 45, 2, 0, 81, 2, 1, + 75, 2, 1, 76, 2, 1, 98, 2, + 1, 99, 2, 1, 100, 2, 1, 101, + 2, 1, 102, 2, 1, 103, 2, 1, + 114, 2, 2, 0, 2, 3, 0, 2, + 4, 0, 2, 5, 0, 2, 12, 82, + 2, 13, 46, 2, 15, 81, 2, 17, + 55, 2, 17, 58, 2, 17, 60, 2, + 19, 71, 2, 22, 0, 2, 22, 2, + 2, 22, 14, 2, 22, 15, 2, 22, + 27, 2, 22, 28, 2, 22, 29, 2, + 22, 30, 2, 22, 31, 2, 22, 32, + 2, 22, 33, 2, 22, 34, 2, 22, + 35, 2, 22, 36, 2, 22, 37, 2, + 22, 38, 2, 22, 39, 2, 22, 40, + 2, 22, 41, 2, 22, 42, 2, 22, + 43, 3, 22, 0, 27, 3, 22, 0, + 42, 3, 22, 1, 36, 3, 22, 2, + 42, 3, 22, 2, 43, 3, 22, 11, + 42, 4, 22, 1, 30, 0, 4, 22, + 1, 32, 0, 4, 22, 2, 0, 42, + 4, 22, 2, 0, 43, 4, 22, 2, + 0, 44, 4, 22, 11, 1, 36, 5, + 22, 2, 0, 1, 43, 5, 22, 2, + 0, 16, 43 +}; + +static const short _redcloth_inline_key_offsets[] = { + 0, 0, 4, 5, 7, 8, 16, 23, + 29, 34, 52, 61, 70, 72, 73, 74, + 81, 89, 97, 98, 105, 111, 121, 129, + 137, 138, 145, 151, 170, 188, 196, 203, + 211, 219, 226, 232, 251, 270, 277, 283, + 290, 296, 301, 308, 315, 334, 352, 353, + 354, 358, 359, 361, 362, 369, 376, 382, + 387, 405, 414, 423, 425, 426, 427, 435, + 442, 450, 458, 465, 471, 481, 489, 497, + 498, 505, 511, 529, 537, 545, 546, 553, + 559, 578, 597, 616, 623, 630, 636, 641, + 659, 668, 677, 679, 680, 681, 689, 696, + 704, 712, 719, 725, 735, 743, 751, 752, + 759, 765, 783, 791, 799, 800, 807, 813, + 832, 851, 870, 888, 896, 916, 934, 940, + 946, 952, 958, 964, 970, 989, 995, 1001, + 1002, 1004, 1005, 1011, 1017, 1036, 1042, 1048, + 1068, 1088, 1090, 1091, 1092, 1116, 1135, 1144, + 1164, 1183, 1202, 1221, 1222, 1231, 1238, 1245, + 1258, 1267, 1276, 1285, 1286, 1293, 1300, 1307, + 1314, 1333, 1352, 1359, 1366, 1385, 1404, 1413, + 1420, 1427, 1434, 1441, 1451, 1460, 1468, 1476, + 1484, 1492, 1516, 1540, 1564, 1571, 1578, 1584, + 1592, 1599, 1606, 1612, 1619, 1627, 1634, 1641, + 1647, 1655, 1662, 1669, 1675, 1683, 1691, 1698, + 1705, 1712, 1718, 1726, 1734, 1741, 1749, 1769, + 1787, 1793, 1799, 1805, 1811, 1817, 1823, 1842, + 1849, 1855, 1860, 1867, 1874, 1880, 1888, 1895, + 1903, 1910, 1915, 1922, 1929, 1935, 1942, 1950, + 1958, 1965, 1972, 1978, 1986, 1993, 2001, 2008, + 2015, 2021, 2029, 2037, 2044, 2052, 2060, 2068, + 2076, 2083, 2090, 2096, 2104, 2111, 2119, 2126, + 2133, 2139, 2147, 2156, 2158, 2159, 2160, 2169, + 2178, 2187, 2195, 2205, 2214, 2223, 2231, 2239, + 2247, 2255, 2262, 2271, 2279, 2288, 2296, 2304, + 2311, 2320, 2329, 2337, 2345, 2353, 2360, 2369, + 2378, 2386, 2395, 2405, 2414, 2423, 2431, 2441, + 2451, 2460, 2470, 2478, 2499, 2519, 2538, 2557, + 2564, 2571, 2584, 2597, 2606, 2616, 2625, 2634, + 2642, 2652, 2662, 2671, 2679, 2690, 2697, 2704, + 2710, 2718, 2725, 2733, 2741, 2749, 2758, 2767, + 2775, 2783, 2791, 2799, 2806, 2817, 2824, 2832, + 2840, 2848, 2856, 2857, 2865, 2872, 2881, 2889, + 2897, 2904, 2913, 2921, 2929, 2937, 2944, 2953, + 2962, 2970, 2979, 3000, 3019, 3026, 3033, 3040, + 3047, 3075, 3101, 3114, 3127, 3155, 3165, 3174, + 3185, 3192, 3199, 3207, 3215, 3222, 3229, 3237, + 3245, 3253, 3261, 3268, 3277, 3285, 3293, 3300, + 3308, 3317, 3328, 3336, 3344, 3345, 3353, 3360, + 3369, 3377, 3385, 3392, 3400, 3409, 3417, 3425, + 3432, 3441, 3450, 3458, 3466, 3474, 3481, 3490, + 3499, 3507, 3516, 3537, 3556, 3563, 3570, 3577, + 3584, 3591, 3598, 3611, 3624, 3632, 3640, 3647, + 3655, 3664, 3685, 3692, 3699, 3706, 3713, 3733, + 3747, 3761, 3769, 3778, 3792, 3806, 3814, 3823, + 3837, 3851, 3865, 3879, 3893, 3907, 3921, 3935, + 3950, 3958, 3973, 3993, 4020, 4047, 4061, 4075, + 4105, 4132, 4159, 4173, 4187, 4214, 4241, 4255, + 4269, 4284, 4299, 4306, 4313, 4333, 4342, 4350, + 4358, 4366, 4373, 4382, 4391, 4401, 4416, 4431, + 4439, 4447, 4455, 4463, 4484, 4492, 4500, 4509, + 4517, 4527, 4536, 4545, 4553, 4561, 4569, 4577, + 4584, 4593, 4601, 4610, 4618, 4626, 4633, 4642, + 4653, 4660, 4667, 4673, 4680, 4688, 4697, 4706, + 4714, 4724, 4733, 4742, 4750, 4758, 4767, 4775, + 4782, 4790, 4798, 4805, 4811, 4822, 4829, 4837, + 4845, 4852, 4859, 4867, 4875, 4883, 4891, 4898, + 4907, 4915, 4923, 4930, 4941, 4948, 4955, 4963, + 4971, 4979, 4986, 4995, 5003, 5011, 5018, 5026, + 5035, 5043, 5051, 5058, 5067, 5075, 5082, 5088, + 5099, 5107, 5115, 5124, 5132, 5140, 5147, 5156, + 5164, 5171, 5177, 5185, 5193, 5201, 5209, 5216, + 5227, 5234, 5242, 5250, 5258, 5266, 5273, 5281, + 5289, 5297, 5304, 5313, 5323, 5331, 5339, 5347, + 5354, 5362, 5371, 5378, 5384, 5389, 5391, 5394, + 5400, 5407, 5413, 5420, 5425, 5426, 5432, 5439, + 5444, 5450, 5457, 5462, 5468, 5475, 5480, 5481, + 5487, 5494, 5499, 5500, 5501, 5504, 5505, 5506, + 5509, 5511, 5518, 5525, 5526, 5527, 5528, 5530, + 5532, 5535, 5541, 5555, 5559, 5572, 5585, 5599, + 5600, 5611, 5620, 5637, 5655, 5664, 5675, 5694, + 5713, 5723, 5737, 5738, 5753, 5755, 5766, 5777, + 5796, 5815, 5833, 5852, 5862, 5873, 5884, 5899, + 5901, 5915, 5916, 5931, 5933, 5944, 5954, 5972, + 5991, 6001, 6012, 6031, 6050, 6061, 6077, 6080, + 6091, 6102, 6121, 6140, 6159, 6179, 6190, 6201, + 6212, 6226, 6240, 6254, 6267, 6268, 6281, 6295, + 6296, 6307, 6316, 6333, 6351, 6360, 6371, 6390, + 6409, 6419, 6433, 6435, 6450, 6452, 6463, 6474, + 6493, 6512, 6530, 6549, 6559, 6570, 6581, 6596, + 6599, 6613, 6615, 6630, 6632, 6643, 6653, 6671, + 6690, 6700, 6711, 6730, 6749, 6760, 6776, 6779, + 6790, 6801, 6820, 6839, 6858, 6878, 6889, 6900, + 6911, 6925, 6939, 6953, 6967, 6981, 6995, 7009, + 7023, 7036, 7038, 7041, 7044, 7047, 7050, 7053, + 7056, 7059, 7062, 7065, 7068, 7071, 7074, 7077, + 7080, 7083, 7086, 7089, 7092, 7095, 7098, 7101, + 7104, 7118, 7132, 7146, 7160, 7174, 7187, 7188, + 7190, 7192, 7195, 7198, 7201, 7204, 7207, 7210, + 7213, 7216, 7219, 7222, 7225, 7228, 7231, 7234, + 7237, 7240, 7253, 7267, 7268, 7279, 7288, 7305, + 7323, 7332, 7343, 7362, 7381, 7391, 7405, 7407, + 7410, 7413, 7428, 7444, 7447, 7459, 7469, 7487, + 7506, 7516, 7528, 7548, 7568, 7579, 7595, 7612, + 7616, 7620, 7624, 7628, 7632, 7636, 7640, 7644, + 7648, 7660, 7672, 7692, 7712, 7731, 7751, 7762, + 7774, 7786, 7803, 7807, 7823, 7826, 7830, 7834, + 7838, 7842, 7846, 7850, 7854, 7858, 7875, 7879, + 7891, 7902, 7921, 7941, 7952, 7964, 7984, 8004, + 8016, 8021, 8026, 8031, 8036, 8041, 8046, 8051, + 8056, 8074, 8079, 8091, 8103, 8123, 8143, 8163, + 8184, 8196, 8208, 8220, 8224, 8228, 8232, 8236, + 8240, 8244, 8248, 8252, 8267, 8269, 8280, 8291, + 8310, 8329, 8347, 8366, 8376, 8387, 8398, 8413, + 8416, 8430, 8432, 8435, 8439, 8443, 8447, 8451, + 8455, 8459, 8463, 8467, 8482, 8484, 8495, 8505, + 8523, 8542, 8552, 8563, 8582, 8601, 8612, 8616, + 8621, 8626, 8631, 8636, 8641, 8646, 8651, 8656, + 8672, 8675, 8686, 8697, 8716, 8735, 8754, 8774, + 8785, 8796, 8807, 8811, 8818, 8824, 8829, 8830, + 8834, 8841, 8847, 8852, 8853, 8859, 8866, 8871, + 8872, 8874, 8899, 8908, 8915, 8922, 8928, 8936, + 8943, 8950, 8956, 8963, 8971, 8978, 8985, 8991, + 8999, 9006, 9013, 9019, 9027, 9035, 9042, 9049, + 9056, 9062, 9070, 9078, 9085, 9093, 9113, 9131, + 9139, 9145, 9151, 9157, 9163, 9182, 9188, 9194, + 9213, 9232, 9239, 9246, 9252, 9260, 9267, 9275, + 9282, 9287, 9294, 9301, 9307, 9314, 9322, 9330, + 9337, 9344, 9350, 9358, 9365, 9373, 9380, 9387, + 9393, 9401, 9409, 9416, 9424, 9432, 9440, 9448, + 9456, 9463, 9470, 9476, 9484, 9491, 9499, 9506, + 9513, 9519, 9527, 9536, 9538, 9539, 9540, 9549, + 9558, 9567, 9575, 9585, 9594, 9603, 9611, 9619, + 9627, 9635, 9642, 9651, 9659, 9668, 9676, 9684, + 9691, 9700, 9709, 9717, 9725, 9733, 9740, 9749, + 9758, 9766, 9775, 9785, 9794, 9803, 9811, 9821, + 9831, 9840, 9850, 9858, 9879, 9899, 9918, 9937, + 9946, 9953, 9960, 9978, 9994, 10007, 10020, 10038, + 10047, 10057, 10066, 10075, 10083, 10093, 10103, 10112, + 10120, 10131, 10138, 10145, 10151, 10159, 10166, 10174, + 10182, 10190, 10199, 10208, 10216, 10224, 10232, 10240, + 10247, 10258, 10265, 10273, 10281, 10289, 10297, 10298, + 10306, 10313, 10322, 10330, 10338, 10345, 10354, 10362, + 10370, 10378, 10385, 10394, 10403, 10411, 10420, 10441, + 10460, 10468, 10475, 10482, 10489, 10496, 10524, 10550, + 10563, 10576, 10604, 10614, 10623, 10634, 10641, 10648, + 10656, 10664, 10671, 10678, 10686, 10694, 10702, 10710, + 10717, 10726, 10734, 10742, 10749, 10757, 10766, 10777, + 10785, 10793, 10794, 10802, 10809, 10818, 10826, 10834, + 10841, 10849, 10858, 10866, 10874, 10881, 10890, 10899, + 10907, 10915, 10923, 10930, 10939, 10948, 10956, 10965, + 10986, 11005, 11014, 11021, 11028, 11035, 11042, 11062, + 11069, 11076, 11105, 11132, 11145, 11158, 11187, 11215, + 11243, 11251, 11259, 11266, 11274, 11283, 11304, 11324, + 11331, 11338, 11345, 11352, 11372, 11392, 11409, 11423, + 11437, 11457, 11474, 11490, 11498, 11507, 11521, 11535, + 11552, 11569, 11577, 11586, 11600, 11614, 11628, 11642, + 11673, 11700, 11714, 11728, 11756, 11784, 11798, 11812, + 11827, 11835, 11850, 11870, 11890, 11917, 11944, 11958, + 11972, 12002, 12029, 12056, 12070, 12084, 12111, 12138, + 12152, 12166, 12181, 12196, 12215, 12222, 12229, 12249, + 12268, 12277, 12285, 12293, 12301, 12308, 12317, 12326, + 12336, 12353, 12368, 12383, 12393, 12402, 12410, 12418, + 12426, 12434, 12454, 12475, 12496, 12504, 12512, 12521, + 12529, 12539, 12548, 12557, 12565, 12573, 12581, 12589, + 12596, 12605, 12613, 12622, 12630, 12638, 12645, 12654, + 12665, 12672, 12679, 12685, 12692, 12700, 12709, 12718, + 12726, 12736, 12745, 12754, 12762, 12770, 12779, 12787, + 12794, 12802, 12810, 12817, 12823, 12834, 12841, 12849, + 12856, 12863, 12871, 12879, 12887, 12895, 12902, 12911, + 12919, 12927, 12934, 12945, 12952, 12959, 12967, 12975, + 12983, 12990, 12999, 13007, 13015, 13022, 13030, 13039, + 13047, 13055, 13062, 13071, 13079, 13086, 13092, 13103, + 13111, 13119, 13128, 13136, 13144, 13151, 13160, 13168, + 13175, 13181, 13189, 13197, 13205, 13213, 13220, 13231, + 13238, 13246, 13254, 13262, 13270, 13277, 13285, 13293, + 13301, 13308, 13317, 13327, 13335, 13343, 13351, 13358, + 13366, 13375, 13379, 13383, 13388, 13395, 13399, 13406, + 13413, 13419, 13424, 13432, 13441, 13450, 13452, 13453, + 13454, 13462, 13469, 13477, 13485, 13492, 13498, 13508, + 13516, 13524, 13525, 13532, 13538, 13546, 13554, 13562, + 13563, 13570, 13576, 13585, 13594, 13604, 13607, 13608, + 13609, 13613, 13614, 13616, 13617, 13618, 13619, 13620, + 13621, 13622, 13623, 13624, 13625, 13626, 13627, 13628, + 13629, 13630, 13631, 13632, 13636, 13643, 13649, 13654, + 13655, 13660, 13667, 13673, 13678, 13685, 13692, 13698, + 13703, 13710, 13716, 13721, 13722, 13723, 13724, 13728, + 13735, 13741, 13746, 13747, 13748, 13752, 13759, 13765, + 13770, 13771, 13772, 13773, 13774, 13775, 13776, 13811, + 13832, 13853, 13875, 13892, 13898, 13923, 13925, 13933, + 13952, 13971, 13989, 14012, 14035, 14044, 14051, 14069, + 14087, 14094, 14095, 14104, 14113, 14120, 14129, 14153, + 14176, 14200, 14224, 14249, 14268, 14292, 14316, 14341, + 14365, 14384, 14408, 14431, 14440, 14447, 14456, 14465, + 14472, 14496, 14519, 14543, 14567, 14591, 14616, 14635, + 14659, 14683, 14708, 14732, 14751, 14775, 14783, 14800, + 14815, 14832, 14840, 14848, 14867, 14895, 14921, 14949, + 14976, 15003, 15022, 15041, 15057, 15076, 15092, 15108, + 15124, 15140, 15156, 15186, 15213, 15240, 15267, 15294, + 15313, 15332, 15351, 15367, 15376, 15384, 15403, 15423, + 15433, 15441, 15450, 15459, 15468, 15479, 15488, 15497, + 15506, 15515, 15524, 15534, 15542, 15544, 15545, 15555, + 15565, 15573, 15583, 15592, 15603, 15604, 15613, 15622, + 15631, 15642, 15651, 15653, 15654, 15657, 15659, 15668, + 15677, 15687, 15697, 15708, 15718, 15728, 15736, 15747, + 15758, 15767, 15777, 15788, 15812, 15836, 15861, 15885, + 15910, 15935, 15961, 15981, 16006, 16029, 16053, 16077, + 16102, 16126, 16145, 16169, 16193, 16217, 16241, 16266, + 16291, 16317, 16342, 16362, 16387, 16411, 16436, 16461, + 16487, 16512, 16532, 16557, 16581, 16585, 16586, 16591, + 16612, 16635, 16636, 16657, 16681, 16705, 16724, 16746, + 16752, 16774, 16798, 16799, 16820, 16845, 16870, 16890, + 16914, 16938, 16940, 16941, 16963, 16984, 17009, 17034, + 17054, 17078, 17102, 17124, 17149, 17174, 17194, 17215, + 17239, 17240, 17261, 17286, 17311, 17331, 17333, 17340, + 17347, 17352, 17352, 17354, 17361, 17384, 17406, 17428, + 17439, 17439, 17439, 17439, 17440, 17441, 17443, 17444, + 17445, 17447, 17449, 17450, 17450, 17452, 17454, 17456, + 17458, 17460, 17461, 17464, 17467, 17469, 17470, 17473, + 17476, 17479, 17481, 17485, 17489, 17492, 17495, 17498, + 17501, 17505, 17509, 17510, 17511, 17512, 17513, 17534, + 17558, 17559, 17584, 17609, 17630, 17650, 17673, 17696, + 17720, 17743, 17766, 17789, 17811, 17820, 17827, 17836, + 17845, 17852, 17861, 17870, 17877, 17886, 17895, 17902, + 17911, 17921, 17929, 17938, 17947, 17956, 17967, 17976, + 17985, 17994, 18003, 18013, 18021, 18023, 18024, 18034, + 18044, 18052, 18062, 18071, 18082, 18083, 18092, 18101, + 18110, 18121, 18130, 18132, 18133, 18136, 18138, 18147, + 18156, 18166, 18176, 18187, 18197, 18207, 18215, 18226, + 18237, 18246, 18256, 18267, 18275, 18282, 18283, 18285, + 18286, 18294, 18301, 18302, 18309, 18331, 18355, 18380, + 18405, 18426, 18446, 18470, 18494, 18519, 18544, 18565, + 18586, 18606, 18629, 18653, 18678, 18703, 18725, 18745, + 18746, 18753, 18755 +}; + +static const char _redcloth_inline_trans_keys[] = { + 82, 84, 114, 116, 41, 77, 109, 41, + 0, 32, 40, 45, 91, 123, 9, 13, + 0, 9, 10, 32, 45, 11, 13, 0, + 9, 10, 32, 11, 13, 0, 9, 32, + 10, 13, 0, 9, 10, 63, 94, 96, + 124, 126, 11, 13, 32, 40, 44, 47, + 58, 61, 91, 92, 0, 9, 10, 32, + 35, 41, 45, 11, 13, 0, 9, 10, + 32, 35, 41, 45, 11, 13, 35, 41, + 41, 41, 0, 32, 40, 91, 123, 9, + 13, 0, 9, 10, 32, 45, 93, 11, + 13, 0, 9, 10, 32, 45, 93, 11, + 13, 93, 0, 9, 10, 32, 93, 11, + 13, 0, 9, 32, 93, 10, 13, 0, + 9, 10, 32, 40, 45, 91, 123, 11, + 13, 0, 9, 10, 32, 45, 125, 11, + 13, 0, 9, 10, 32, 45, 125, 11, + 13, 125, 0, 9, 10, 32, 125, 11, + 13, 0, 9, 32, 125, 10, 13, 0, + 9, 10, 63, 94, 96, 125, 11, 13, + 32, 40, 44, 47, 58, 61, 91, 92, + 124, 126, 0, 9, 10, 63, 93, 96, + 124, 126, 11, 13, 32, 40, 44, 47, + 58, 61, 91, 94, 0, 9, 10, 32, + 35, 41, 11, 13, 0, 9, 32, 35, + 41, 10, 13, 0, 9, 10, 32, 41, + 45, 11, 13, 0, 9, 10, 32, 41, + 45, 11, 13, 0, 9, 10, 32, 41, + 11, 13, 0, 9, 32, 41, 10, 13, + 0, 9, 10, 41, 63, 94, 96, 124, + 126, 11, 13, 32, 40, 44, 47, 58, + 61, 91, 92, 0, 9, 10, 41, 63, + 94, 96, 124, 126, 11, 13, 32, 40, + 44, 47, 58, 61, 91, 92, 0, 9, + 10, 32, 45, 11, 13, 0, 9, 10, + 32, 11, 13, 0, 9, 10, 32, 45, + 11, 13, 0, 9, 10, 32, 11, 13, + 0, 9, 32, 10, 13, 0, 9, 10, + 32, 45, 11, 13, 0, 9, 10, 32, + 45, 11, 13, 0, 9, 10, 32, 63, + 94, 96, 124, 126, 11, 13, 33, 40, + 44, 47, 58, 61, 91, 92, 0, 9, + 10, 63, 94, 96, 124, 126, 11, 13, + 32, 40, 44, 47, 58, 61, 91, 92, + 46, 46, 82, 84, 114, 116, 93, 77, + 109, 93, 0, 32, 40, 91, 123, 9, + 13, 0, 9, 10, 32, 94, 11, 13, + 0, 9, 10, 32, 11, 13, 0, 9, + 32, 10, 13, 0, 9, 10, 63, 94, + 96, 124, 126, 11, 13, 32, 40, 44, + 47, 58, 61, 91, 92, 0, 9, 10, + 32, 35, 41, 94, 11, 13, 0, 9, + 10, 32, 35, 41, 94, 11, 13, 35, + 41, 41, 41, 0, 9, 10, 32, 35, + 41, 11, 13, 0, 9, 32, 35, 41, + 10, 13, 0, 9, 10, 32, 41, 94, + 11, 13, 0, 9, 10, 32, 41, 94, + 11, 13, 0, 9, 10, 32, 41, 11, + 13, 0, 9, 32, 41, 10, 13, 0, + 9, 10, 32, 40, 91, 94, 123, 11, + 13, 0, 9, 10, 32, 93, 94, 11, + 13, 0, 9, 10, 32, 93, 94, 11, + 13, 93, 0, 9, 10, 32, 93, 11, + 13, 0, 9, 32, 93, 10, 13, 0, + 9, 10, 63, 93, 96, 124, 126, 11, + 13, 32, 40, 44, 47, 58, 61, 91, + 94, 0, 9, 10, 32, 94, 125, 11, + 13, 0, 9, 10, 32, 94, 125, 11, + 13, 125, 0, 9, 10, 32, 125, 11, + 13, 0, 9, 32, 125, 10, 13, 0, + 9, 10, 63, 94, 96, 125, 11, 13, + 32, 40, 44, 47, 58, 61, 91, 92, + 124, 126, 0, 9, 10, 41, 63, 94, + 96, 124, 126, 11, 13, 32, 40, 44, + 47, 58, 61, 91, 92, 0, 9, 10, + 41, 63, 94, 96, 124, 126, 11, 13, + 32, 40, 44, 47, 58, 61, 91, 92, + 0, 32, 40, 91, 123, 9, 13, 0, + 9, 10, 32, 126, 11, 13, 0, 9, + 10, 32, 11, 13, 0, 9, 32, 10, + 13, 0, 9, 10, 63, 94, 96, 124, + 126, 11, 13, 32, 40, 44, 47, 58, + 61, 91, 92, 0, 9, 10, 32, 35, + 41, 126, 11, 13, 0, 9, 10, 32, + 35, 41, 126, 11, 13, 35, 41, 41, + 41, 0, 9, 10, 32, 35, 41, 11, + 13, 0, 9, 32, 35, 41, 10, 13, + 0, 9, 10, 32, 41, 126, 11, 13, + 0, 9, 10, 32, 41, 126, 11, 13, + 0, 9, 10, 32, 41, 11, 13, 0, + 9, 32, 41, 10, 13, 0, 9, 10, + 32, 40, 91, 123, 126, 11, 13, 0, + 9, 10, 32, 93, 126, 11, 13, 0, + 9, 10, 32, 93, 126, 11, 13, 93, + 0, 9, 10, 32, 93, 11, 13, 0, + 9, 32, 93, 10, 13, 0, 9, 10, + 63, 93, 96, 124, 126, 11, 13, 32, + 40, 44, 47, 58, 61, 91, 94, 0, + 9, 10, 32, 125, 126, 11, 13, 0, + 9, 10, 32, 125, 126, 11, 13, 125, + 0, 9, 10, 32, 125, 11, 13, 0, + 9, 32, 125, 10, 13, 0, 9, 10, + 63, 94, 96, 125, 11, 13, 32, 40, + 44, 47, 58, 61, 91, 92, 124, 126, + 0, 9, 10, 41, 63, 94, 96, 124, + 126, 11, 13, 32, 40, 44, 47, 58, + 61, 91, 92, 0, 9, 10, 41, 63, + 94, 96, 124, 126, 11, 13, 32, 40, + 44, 47, 58, 61, 91, 92, 34, 36, + 37, 47, 95, 127, 0, 32, 45, 57, + 59, 60, 62, 63, 65, 90, 97, 122, + 33, 37, 40, 60, 62, 127, 0, 34, + 34, 35, 36, 37, 43, 47, 95, 127, + 0, 32, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 34, 36, 37, 47, + 95, 127, 0, 32, 45, 57, 59, 60, + 62, 63, 65, 90, 97, 122, 48, 57, + 65, 70, 97, 102, 48, 57, 65, 70, + 97, 102, 48, 57, 65, 70, 97, 102, + 48, 57, 65, 70, 97, 102, 48, 57, + 65, 70, 97, 102, 48, 57, 65, 70, + 97, 102, 34, 36, 37, 43, 47, 95, + 127, 0, 32, 45, 58, 59, 60, 62, + 63, 65, 90, 97, 122, 48, 57, 65, + 70, 97, 102, 48, 57, 65, 70, 97, + 102, 0, 0, 41, 33, 48, 57, 65, + 70, 97, 102, 48, 57, 65, 70, 97, + 102, 33, 36, 37, 40, 47, 95, 127, + 0, 34, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 48, 57, 65, 70, + 97, 102, 48, 57, 65, 70, 97, 102, + 34, 35, 36, 37, 41, 47, 95, 127, + 0, 32, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 34, 35, 36, 37, + 41, 47, 95, 127, 0, 32, 45, 57, + 59, 60, 62, 63, 65, 90, 97, 122, + 35, 41, 41, 41, 34, 35, 36, 37, + 40, 43, 46, 47, 91, 95, 123, 127, + 0, 32, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 34, 36, 37, 43, + 47, 95, 127, 0, 32, 45, 58, 59, + 60, 62, 63, 65, 90, 97, 122, 32, + 33, 37, 40, 60, 62, 127, 0, 34, + 34, 35, 36, 37, 43, 47, 95, 127, + 0, 32, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 33, 36, 37, 40, + 47, 95, 127, 0, 34, 45, 57, 59, + 60, 62, 63, 65, 90, 97, 122, 34, + 36, 37, 47, 93, 95, 127, 0, 32, + 45, 57, 59, 60, 62, 63, 65, 90, + 97, 122, 34, 36, 37, 47, 93, 95, + 127, 0, 32, 45, 57, 59, 60, 62, + 63, 65, 90, 97, 122, 93, 33, 37, + 40, 60, 62, 93, 127, 0, 34, 93, + 48, 57, 65, 70, 97, 102, 93, 48, + 57, 65, 70, 97, 102, 33, 37, 40, + 46, 59, 60, 62, 63, 91, 123, 127, + 0, 34, 33, 37, 40, 60, 62, 93, + 127, 0, 34, 33, 37, 40, 60, 62, + 125, 127, 0, 34, 33, 37, 40, 60, + 62, 125, 127, 0, 34, 125, 125, 48, + 57, 65, 70, 97, 102, 125, 48, 57, + 65, 70, 97, 102, 93, 48, 57, 65, + 70, 97, 102, 93, 48, 57, 65, 70, + 97, 102, 34, 36, 37, 47, 95, 125, + 127, 0, 32, 45, 57, 59, 60, 62, + 63, 65, 90, 97, 122, 34, 36, 37, + 47, 95, 125, 127, 0, 32, 45, 57, + 59, 60, 62, 63, 65, 90, 97, 122, + 125, 48, 57, 65, 70, 97, 102, 125, + 48, 57, 65, 70, 97, 102, 34, 36, + 37, 41, 47, 95, 127, 0, 32, 45, + 57, 59, 60, 62, 63, 65, 90, 97, + 122, 34, 36, 37, 41, 47, 95, 127, + 0, 32, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 33, 37, 40, 41, + 60, 62, 127, 0, 34, 41, 48, 57, + 65, 70, 97, 102, 41, 48, 57, 65, + 70, 97, 102, 41, 48, 57, 65, 70, + 97, 102, 41, 48, 57, 65, 70, 97, + 102, 33, 35, 37, 40, 41, 60, 62, + 127, 0, 34, 33, 37, 40, 41, 60, + 62, 127, 0, 34, 35, 41, 48, 57, + 65, 70, 97, 102, 35, 41, 48, 57, + 65, 70, 97, 102, 35, 41, 48, 57, + 65, 70, 97, 102, 35, 41, 48, 57, + 65, 70, 97, 102, 34, 35, 36, 37, + 40, 43, 46, 47, 91, 95, 123, 127, + 0, 32, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 34, 35, 36, 37, + 40, 43, 46, 47, 91, 95, 123, 127, + 0, 32, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 34, 35, 36, 37, + 40, 43, 46, 47, 91, 95, 123, 127, + 0, 32, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 0, 9, 10, 32, + 34, 11, 13, 0, 9, 10, 32, 34, + 11, 13, 0, 9, 32, 34, 10, 13, + 0, 9, 10, 32, 34, 58, 11, 13, + 0, 9, 10, 32, 34, 11, 13, 0, + 9, 10, 32, 34, 11, 13, 0, 9, + 32, 34, 10, 13, 0, 9, 10, 32, + 34, 11, 13, 0, 9, 10, 32, 34, + 58, 11, 13, 0, 9, 10, 32, 34, + 11, 13, 0, 9, 10, 32, 34, 11, + 13, 0, 9, 32, 34, 10, 13, 0, + 9, 10, 32, 34, 58, 11, 13, 0, + 9, 10, 32, 34, 11, 13, 0, 9, + 10, 32, 34, 11, 13, 0, 9, 32, + 34, 10, 13, 0, 9, 10, 32, 34, + 58, 11, 13, 0, 9, 10, 32, 34, + 58, 11, 13, 0, 9, 10, 32, 34, + 11, 13, 0, 9, 10, 32, 34, 11, + 13, 0, 9, 10, 32, 34, 11, 13, + 0, 9, 32, 34, 10, 13, 0, 9, + 10, 32, 34, 58, 11, 13, 0, 9, + 10, 32, 34, 58, 11, 13, 0, 9, + 10, 32, 34, 11, 13, 0, 9, 10, + 32, 34, 58, 11, 13, 34, 35, 36, + 37, 43, 47, 95, 127, 0, 32, 45, + 57, 59, 60, 62, 63, 65, 90, 97, + 122, 34, 36, 37, 47, 95, 127, 0, + 32, 45, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 48, 57, 65, 70, 97, + 102, 48, 57, 65, 70, 97, 102, 48, + 57, 65, 70, 97, 102, 48, 57, 65, + 70, 97, 102, 48, 57, 65, 70, 97, + 102, 48, 57, 65, 70, 97, 102, 34, + 36, 37, 43, 47, 95, 127, 0, 32, + 45, 58, 59, 60, 62, 63, 65, 90, + 97, 122, 0, 9, 10, 32, 34, 11, + 13, 0, 9, 10, 32, 11, 13, 0, + 9, 32, 10, 13, 0, 9, 10, 32, + 34, 11, 13, 0, 9, 10, 32, 34, + 11, 13, 0, 9, 32, 34, 10, 13, + 0, 9, 10, 32, 34, 58, 11, 13, + 0, 9, 10, 32, 34, 11, 13, 0, + 9, 10, 32, 34, 58, 11, 13, 0, + 9, 10, 32, 34, 11, 13, 0, 32, + 34, 9, 13, 0, 9, 10, 32, 34, + 11, 13, 0, 9, 10, 32, 34, 11, + 13, 0, 9, 32, 34, 10, 13, 0, + 9, 10, 32, 34, 11, 13, 0, 9, + 10, 32, 34, 58, 11, 13, 0, 9, + 10, 32, 34, 58, 11, 13, 0, 9, + 10, 32, 34, 11, 13, 0, 9, 10, + 32, 34, 11, 13, 0, 9, 32, 34, + 10, 13, 0, 9, 10, 32, 34, 58, + 11, 13, 0, 9, 10, 32, 34, 11, + 13, 0, 9, 10, 32, 34, 58, 11, + 13, 0, 9, 10, 32, 34, 11, 13, + 0, 9, 10, 32, 34, 11, 13, 0, + 9, 32, 34, 10, 13, 0, 9, 10, + 32, 34, 58, 11, 13, 0, 9, 10, + 32, 34, 58, 11, 13, 0, 9, 10, + 32, 34, 11, 13, 0, 9, 10, 32, + 34, 58, 11, 13, 0, 9, 10, 32, + 34, 58, 11, 13, 0, 9, 10, 32, + 34, 58, 11, 13, 0, 9, 10, 32, + 34, 58, 11, 13, 0, 9, 10, 32, + 34, 11, 13, 0, 9, 10, 32, 34, + 11, 13, 0, 9, 32, 34, 10, 13, + 0, 9, 10, 32, 34, 58, 11, 13, + 0, 9, 10, 32, 34, 11, 13, 0, + 9, 10, 32, 34, 58, 11, 13, 0, + 9, 10, 32, 34, 11, 13, 0, 9, + 10, 32, 34, 11, 13, 0, 9, 32, + 34, 10, 13, 0, 9, 10, 32, 34, + 58, 11, 13, 0, 9, 10, 32, 34, + 35, 41, 11, 13, 35, 41, 41, 41, + 0, 32, 34, 40, 46, 91, 123, 9, + 13, 0, 9, 10, 32, 34, 35, 41, + 11, 13, 0, 9, 10, 32, 34, 35, + 41, 11, 13, 0, 9, 32, 34, 35, + 41, 10, 13, 0, 9, 10, 32, 34, + 35, 41, 58, 11, 13, 0, 9, 10, + 32, 34, 35, 41, 11, 13, 0, 9, + 10, 32, 34, 35, 41, 11, 13, 0, + 9, 32, 34, 35, 41, 10, 13, 0, + 9, 10, 32, 34, 41, 11, 13, 0, + 9, 10, 32, 34, 41, 11, 13, 0, + 9, 10, 32, 34, 41, 11, 13, 0, + 9, 32, 34, 41, 10, 13, 0, 9, + 10, 32, 34, 41, 58, 11, 13, 0, + 9, 10, 32, 34, 41, 11, 13, 0, + 9, 10, 32, 34, 41, 58, 11, 13, + 0, 9, 10, 32, 34, 41, 11, 13, + 0, 9, 10, 32, 34, 41, 11, 13, + 0, 9, 32, 34, 41, 10, 13, 0, + 9, 10, 32, 34, 41, 58, 11, 13, + 0, 9, 10, 32, 34, 41, 58, 11, + 13, 0, 9, 10, 32, 34, 41, 11, + 13, 0, 9, 10, 32, 34, 41, 11, + 13, 0, 9, 10, 32, 34, 41, 11, + 13, 0, 9, 32, 34, 41, 10, 13, + 0, 9, 10, 32, 34, 41, 58, 11, + 13, 0, 9, 10, 32, 34, 41, 58, + 11, 13, 0, 9, 10, 32, 34, 41, + 11, 13, 0, 9, 10, 32, 34, 41, + 58, 11, 13, 0, 9, 10, 32, 34, + 40, 91, 123, 11, 13, 0, 9, 10, + 32, 34, 35, 41, 11, 13, 0, 9, + 10, 32, 34, 35, 41, 11, 13, 0, + 9, 32, 34, 35, 41, 10, 13, 0, + 9, 10, 32, 34, 35, 41, 58, 11, + 13, 0, 9, 10, 32, 34, 35, 41, + 58, 11, 13, 0, 9, 10, 32, 34, + 35, 41, 11, 13, 0, 9, 10, 32, + 34, 35, 41, 58, 11, 13, 0, 9, + 10, 32, 34, 41, 11, 13, 34, 35, + 36, 37, 41, 43, 47, 95, 127, 0, + 32, 45, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 34, 35, 36, 37, 41, + 47, 95, 127, 0, 32, 45, 57, 59, + 60, 62, 63, 65, 90, 97, 122, 34, + 36, 37, 41, 47, 95, 127, 0, 32, + 45, 57, 59, 60, 62, 63, 65, 90, + 97, 122, 34, 36, 37, 41, 47, 95, + 127, 0, 32, 45, 57, 59, 60, 62, + 63, 65, 90, 97, 122, 41, 48, 57, + 65, 70, 97, 102, 41, 48, 57, 65, + 70, 97, 102, 0, 9, 10, 32, 34, + 11, 13, 48, 57, 65, 70, 97, 102, + 0, 9, 10, 32, 34, 11, 13, 48, + 57, 65, 70, 97, 102, 0, 9, 10, + 32, 34, 35, 41, 11, 13, 0, 9, + 10, 32, 34, 35, 41, 58, 11, 13, + 0, 9, 10, 32, 34, 35, 41, 11, + 13, 0, 9, 10, 32, 34, 35, 41, + 11, 13, 0, 9, 32, 34, 35, 41, + 10, 13, 0, 9, 10, 32, 34, 35, + 41, 58, 11, 13, 0, 9, 10, 32, + 34, 35, 41, 58, 11, 13, 0, 9, + 10, 32, 34, 35, 41, 11, 13, 0, + 9, 10, 32, 34, 41, 11, 13, 0, + 9, 10, 32, 34, 40, 46, 91, 123, + 11, 13, 0, 9, 10, 32, 34, 11, + 13, 0, 9, 10, 32, 34, 11, 13, + 0, 9, 32, 34, 10, 13, 0, 9, + 10, 32, 34, 58, 11, 13, 0, 9, + 10, 32, 34, 11, 13, 0, 9, 10, + 32, 34, 58, 11, 13, 0, 9, 10, + 32, 34, 58, 11, 13, 0, 9, 10, + 32, 34, 58, 11, 13, 0, 9, 10, + 32, 34, 35, 41, 11, 13, 0, 9, + 10, 32, 34, 35, 41, 11, 13, 0, + 9, 32, 34, 35, 41, 10, 13, 0, + 9, 10, 32, 34, 41, 11, 13, 0, + 9, 10, 32, 34, 41, 11, 13, 0, + 9, 10, 32, 34, 41, 11, 13, 0, + 9, 32, 34, 41, 10, 13, 0, 9, + 10, 32, 34, 40, 46, 91, 123, 11, + 13, 0, 9, 10, 32, 34, 11, 13, + 0, 9, 10, 32, 34, 58, 11, 13, + 0, 9, 10, 32, 34, 46, 11, 13, + 0, 9, 10, 32, 34, 93, 11, 13, + 0, 9, 10, 32, 34, 93, 11, 13, + 93, 0, 9, 10, 32, 34, 93, 11, + 13, 0, 9, 32, 34, 93, 10, 13, + 0, 9, 10, 32, 34, 58, 93, 11, + 13, 0, 9, 10, 32, 34, 93, 11, + 13, 0, 9, 10, 32, 34, 93, 11, + 13, 0, 9, 32, 34, 93, 10, 13, + 0, 9, 10, 32, 34, 58, 93, 11, + 13, 0, 9, 10, 32, 34, 93, 11, + 13, 0, 9, 10, 32, 34, 93, 11, + 13, 0, 9, 10, 32, 34, 93, 11, + 13, 0, 9, 32, 34, 93, 10, 13, + 0, 9, 10, 32, 34, 58, 93, 11, + 13, 0, 9, 10, 32, 34, 58, 93, + 11, 13, 0, 9, 10, 32, 34, 93, + 11, 13, 0, 9, 10, 32, 34, 58, + 93, 11, 13, 34, 35, 36, 37, 43, + 47, 93, 95, 127, 0, 32, 45, 57, + 59, 60, 62, 63, 65, 90, 97, 122, + 34, 36, 37, 47, 93, 95, 127, 0, + 32, 45, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 93, 48, 57, 65, 70, + 97, 102, 93, 48, 57, 65, 70, 97, + 102, 93, 48, 57, 65, 70, 97, 102, + 93, 48, 57, 65, 70, 97, 102, 0, + 32, 34, 36, 37, 40, 46, 47, 91, + 95, 123, 127, 1, 8, 9, 13, 14, + 31, 45, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 0, 9, 10, 32, 34, + 36, 37, 47, 95, 127, 1, 8, 11, + 13, 14, 31, 45, 57, 59, 60, 62, + 63, 65, 90, 97, 122, 0, 9, 10, + 32, 34, 11, 13, 48, 57, 65, 70, + 97, 102, 0, 9, 10, 32, 34, 11, + 13, 48, 57, 65, 70, 97, 102, 0, + 9, 10, 32, 34, 35, 36, 37, 41, + 47, 95, 127, 1, 8, 11, 13, 14, + 31, 45, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 0, 9, 10, 32, 34, + 35, 41, 58, 11, 13, 0, 9, 10, + 32, 34, 35, 41, 11, 13, 0, 9, + 10, 32, 34, 40, 46, 91, 123, 11, + 13, 0, 9, 10, 32, 34, 11, 13, + 0, 9, 10, 32, 34, 11, 13, 0, + 9, 10, 32, 34, 58, 11, 13, 0, + 9, 10, 32, 34, 46, 11, 13, 0, + 9, 10, 32, 34, 11, 13, 0, 9, + 10, 32, 34, 11, 13, 0, 9, 10, + 32, 34, 58, 11, 13, 0, 9, 10, + 32, 34, 93, 11, 13, 0, 9, 10, + 32, 34, 93, 11, 13, 0, 9, 10, + 32, 34, 93, 11, 13, 0, 9, 32, + 34, 93, 10, 13, 0, 9, 10, 32, + 34, 58, 93, 11, 13, 0, 9, 10, + 32, 34, 93, 11, 13, 0, 9, 10, + 32, 34, 93, 11, 13, 0, 9, 32, + 34, 93, 10, 13, 0, 9, 10, 32, + 34, 93, 11, 13, 0, 9, 10, 32, + 34, 58, 93, 11, 13, 0, 9, 10, + 32, 34, 40, 46, 91, 123, 11, 13, + 0, 9, 10, 32, 34, 125, 11, 13, + 0, 9, 10, 32, 34, 125, 11, 13, + 125, 0, 9, 10, 32, 34, 125, 11, + 13, 0, 9, 32, 34, 125, 10, 13, + 0, 9, 10, 32, 34, 58, 125, 11, + 13, 0, 9, 10, 32, 34, 125, 11, + 13, 0, 9, 10, 32, 34, 125, 11, + 13, 0, 9, 32, 34, 125, 10, 13, + 0, 9, 10, 32, 34, 125, 11, 13, + 0, 9, 10, 32, 34, 58, 125, 11, + 13, 0, 9, 10, 32, 34, 125, 11, + 13, 0, 9, 10, 32, 34, 125, 11, + 13, 0, 9, 32, 34, 125, 10, 13, + 0, 9, 10, 32, 34, 58, 125, 11, + 13, 0, 9, 10, 32, 34, 58, 125, + 11, 13, 0, 9, 10, 32, 34, 125, + 11, 13, 0, 9, 10, 32, 34, 125, + 11, 13, 0, 9, 10, 32, 34, 125, + 11, 13, 0, 9, 32, 34, 125, 10, + 13, 0, 9, 10, 32, 34, 58, 125, + 11, 13, 0, 9, 10, 32, 34, 58, + 125, 11, 13, 0, 9, 10, 32, 34, + 125, 11, 13, 0, 9, 10, 32, 34, + 58, 125, 11, 13, 34, 35, 36, 37, + 43, 47, 95, 125, 127, 0, 32, 45, + 57, 59, 60, 62, 63, 65, 90, 97, + 122, 34, 36, 37, 47, 95, 125, 127, + 0, 32, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 125, 48, 57, 65, + 70, 97, 102, 125, 48, 57, 65, 70, + 97, 102, 125, 48, 57, 65, 70, 97, + 102, 125, 48, 57, 65, 70, 97, 102, + 125, 48, 57, 65, 70, 97, 102, 125, + 48, 57, 65, 70, 97, 102, 0, 9, + 10, 32, 34, 11, 13, 48, 57, 65, + 70, 97, 102, 0, 9, 10, 32, 34, + 11, 13, 48, 57, 65, 70, 97, 102, + 0, 9, 10, 32, 34, 41, 11, 13, + 0, 9, 10, 32, 34, 41, 11, 13, + 0, 9, 32, 34, 41, 10, 13, 0, + 9, 10, 32, 34, 41, 11, 13, 0, + 9, 10, 32, 34, 41, 58, 11, 13, + 34, 35, 36, 37, 41, 43, 47, 95, + 127, 0, 32, 45, 57, 59, 60, 62, + 63, 65, 90, 97, 122, 41, 48, 57, + 65, 70, 97, 102, 41, 48, 57, 65, + 70, 97, 102, 41, 48, 57, 65, 70, + 97, 102, 41, 48, 57, 65, 70, 97, + 102, 34, 36, 37, 41, 43, 47, 95, + 127, 0, 32, 45, 58, 59, 60, 62, + 63, 65, 90, 97, 122, 0, 9, 10, + 32, 34, 41, 11, 13, 48, 57, 65, + 70, 97, 102, 0, 9, 10, 32, 34, + 41, 11, 13, 48, 57, 65, 70, 97, + 102, 0, 9, 10, 32, 34, 93, 11, + 13, 0, 9, 10, 32, 34, 58, 93, + 11, 13, 0, 9, 10, 32, 34, 93, + 11, 13, 48, 57, 65, 70, 97, 102, + 0, 9, 10, 32, 34, 93, 11, 13, + 48, 57, 65, 70, 97, 102, 0, 9, + 10, 32, 34, 125, 11, 13, 0, 9, + 10, 32, 34, 58, 125, 11, 13, 0, + 9, 10, 32, 34, 125, 11, 13, 48, + 57, 65, 70, 97, 102, 0, 9, 10, + 32, 34, 125, 11, 13, 48, 57, 65, + 70, 97, 102, 0, 9, 10, 32, 34, + 41, 11, 13, 48, 57, 65, 70, 97, + 102, 0, 9, 10, 32, 34, 41, 11, + 13, 48, 57, 65, 70, 97, 102, 0, + 9, 10, 32, 34, 93, 11, 13, 48, + 57, 65, 70, 97, 102, 0, 9, 10, + 32, 34, 93, 11, 13, 48, 57, 65, + 70, 97, 102, 0, 9, 10, 32, 34, + 125, 11, 13, 48, 57, 65, 70, 97, + 102, 0, 9, 10, 32, 34, 125, 11, + 13, 48, 57, 65, 70, 97, 102, 0, + 9, 10, 32, 34, 35, 41, 11, 13, + 48, 57, 65, 70, 97, 102, 0, 9, + 10, 32, 34, 41, 11, 13, 0, 9, + 10, 32, 34, 35, 41, 11, 13, 48, + 57, 65, 70, 97, 102, 34, 36, 37, + 43, 47, 95, 125, 127, 0, 32, 45, + 58, 59, 60, 62, 63, 65, 90, 97, + 122, 0, 9, 10, 32, 34, 36, 37, + 41, 47, 95, 127, 1, 8, 11, 13, + 14, 31, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 0, 9, 10, 32, + 34, 36, 37, 41, 47, 95, 127, 1, + 8, 11, 13, 14, 31, 45, 57, 59, + 60, 62, 63, 65, 90, 97, 122, 0, + 9, 10, 32, 34, 41, 11, 13, 48, + 57, 65, 70, 97, 102, 0, 9, 10, + 32, 34, 41, 11, 13, 48, 57, 65, + 70, 97, 102, 0, 9, 10, 32, 34, + 36, 37, 40, 46, 47, 91, 95, 123, + 127, 1, 8, 11, 13, 14, 31, 45, + 57, 59, 60, 62, 63, 65, 90, 97, + 122, 0, 9, 10, 32, 34, 36, 37, + 47, 93, 95, 127, 1, 8, 11, 13, + 14, 31, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 0, 9, 10, 32, + 34, 36, 37, 47, 93, 95, 127, 1, + 8, 11, 13, 14, 31, 45, 57, 59, + 60, 62, 63, 65, 90, 97, 122, 0, + 9, 10, 32, 34, 93, 11, 13, 48, + 57, 65, 70, 97, 102, 0, 9, 10, + 32, 34, 93, 11, 13, 48, 57, 65, + 70, 97, 102, 0, 9, 10, 32, 34, + 36, 37, 47, 95, 125, 127, 1, 8, + 11, 13, 14, 31, 45, 57, 59, 60, + 62, 63, 65, 90, 97, 122, 0, 9, + 10, 32, 34, 36, 37, 47, 95, 125, + 127, 1, 8, 11, 13, 14, 31, 45, + 57, 59, 60, 62, 63, 65, 90, 97, + 122, 0, 9, 10, 32, 34, 125, 11, + 13, 48, 57, 65, 70, 97, 102, 0, + 9, 10, 32, 34, 125, 11, 13, 48, + 57, 65, 70, 97, 102, 0, 9, 10, + 32, 34, 35, 41, 11, 13, 48, 57, + 65, 70, 97, 102, 0, 9, 10, 32, + 34, 35, 41, 11, 13, 48, 57, 65, + 70, 97, 102, 93, 48, 57, 65, 70, + 97, 102, 93, 48, 57, 65, 70, 97, + 102, 34, 36, 37, 43, 47, 93, 95, + 127, 0, 32, 45, 58, 59, 60, 62, + 63, 65, 90, 97, 122, 0, 9, 10, + 32, 34, 58, 93, 11, 13, 0, 9, + 10, 32, 34, 125, 11, 13, 0, 9, + 10, 32, 34, 125, 11, 13, 0, 9, + 10, 32, 34, 125, 11, 13, 0, 9, + 32, 34, 125, 10, 13, 0, 9, 10, + 32, 34, 58, 125, 11, 13, 0, 9, + 10, 32, 34, 41, 58, 11, 13, 0, + 9, 10, 32, 34, 35, 41, 58, 11, + 13, 0, 9, 10, 32, 34, 35, 41, + 11, 13, 48, 57, 65, 70, 97, 102, + 0, 9, 10, 32, 34, 35, 41, 11, + 13, 48, 57, 65, 70, 97, 102, 35, + 41, 48, 57, 65, 70, 97, 102, 35, + 41, 48, 57, 65, 70, 97, 102, 35, + 41, 48, 57, 65, 70, 97, 102, 35, + 41, 48, 57, 65, 70, 97, 102, 34, + 35, 36, 37, 41, 43, 47, 95, 127, + 0, 32, 45, 58, 59, 60, 62, 63, + 65, 90, 97, 122, 0, 9, 10, 32, + 34, 93, 11, 13, 0, 9, 10, 32, + 34, 125, 11, 13, 0, 9, 10, 32, + 34, 35, 41, 11, 13, 0, 9, 32, + 34, 35, 41, 10, 13, 0, 9, 10, + 32, 34, 35, 41, 58, 11, 13, 0, + 9, 10, 32, 34, 35, 41, 11, 13, + 0, 9, 10, 32, 34, 35, 41, 11, + 13, 0, 9, 32, 34, 35, 41, 10, + 13, 0, 9, 10, 32, 34, 41, 11, + 13, 0, 9, 10, 32, 34, 41, 11, + 13, 0, 9, 10, 32, 34, 41, 11, + 13, 0, 9, 32, 34, 41, 10, 13, + 0, 9, 10, 32, 34, 41, 58, 11, + 13, 0, 9, 10, 32, 34, 41, 11, + 13, 0, 9, 10, 32, 34, 41, 58, + 11, 13, 0, 9, 10, 32, 34, 41, + 11, 13, 0, 9, 10, 32, 34, 41, + 11, 13, 0, 9, 32, 34, 41, 10, + 13, 0, 9, 10, 32, 34, 41, 58, + 11, 13, 0, 9, 10, 32, 34, 40, + 46, 91, 123, 11, 13, 0, 9, 10, + 32, 34, 11, 13, 0, 9, 10, 32, + 34, 11, 13, 0, 9, 32, 34, 10, + 13, 0, 9, 10, 32, 34, 11, 13, + 0, 9, 10, 32, 34, 58, 11, 13, + 0, 9, 10, 32, 34, 35, 41, 11, + 13, 0, 9, 10, 32, 34, 35, 41, + 11, 13, 0, 9, 32, 34, 35, 41, + 10, 13, 0, 9, 10, 32, 34, 35, + 41, 58, 11, 13, 0, 9, 10, 32, + 34, 35, 41, 11, 13, 0, 9, 10, + 32, 34, 35, 41, 11, 13, 0, 9, + 32, 34, 35, 41, 10, 13, 0, 9, + 10, 32, 34, 41, 11, 13, 0, 9, + 10, 32, 34, 35, 41, 11, 13, 0, + 9, 10, 32, 35, 41, 11, 13, 0, + 9, 32, 35, 41, 10, 13, 0, 9, + 10, 32, 34, 41, 11, 13, 0, 9, + 10, 32, 34, 41, 11, 13, 0, 9, + 10, 32, 41, 11, 13, 0, 9, 32, + 41, 10, 13, 0, 9, 10, 32, 34, + 40, 46, 91, 123, 11, 13, 0, 9, + 10, 32, 34, 11, 13, 0, 9, 10, + 32, 34, 58, 11, 13, 0, 9, 10, + 32, 34, 46, 11, 13, 0, 9, 10, + 32, 34, 11, 13, 0, 9, 10, 32, + 34, 11, 13, 0, 9, 10, 32, 34, + 58, 11, 13, 0, 9, 10, 32, 34, + 93, 11, 13, 0, 9, 10, 32, 34, + 93, 11, 13, 0, 9, 10, 32, 34, + 93, 11, 13, 0, 9, 32, 34, 93, + 10, 13, 0, 9, 10, 32, 34, 58, + 93, 11, 13, 0, 9, 10, 32, 34, + 93, 11, 13, 0, 9, 10, 32, 34, + 93, 11, 13, 0, 9, 32, 34, 93, + 10, 13, 0, 9, 10, 32, 34, 40, + 46, 91, 123, 11, 13, 0, 9, 10, + 32, 34, 11, 13, 0, 9, 10, 32, + 34, 11, 13, 0, 9, 10, 32, 34, + 125, 11, 13, 0, 9, 10, 32, 34, + 125, 11, 13, 0, 9, 10, 32, 34, + 125, 11, 13, 0, 9, 32, 34, 125, + 10, 13, 0, 9, 10, 32, 34, 58, + 125, 11, 13, 0, 9, 10, 32, 34, + 125, 11, 13, 0, 9, 10, 32, 34, + 125, 11, 13, 0, 9, 32, 34, 125, + 10, 13, 0, 9, 10, 32, 34, 125, + 11, 13, 0, 9, 10, 32, 34, 58, + 125, 11, 13, 0, 9, 10, 32, 34, + 125, 11, 13, 0, 9, 10, 32, 34, + 125, 11, 13, 0, 9, 32, 34, 125, + 10, 13, 0, 9, 10, 32, 34, 58, + 125, 11, 13, 0, 9, 10, 32, 34, + 125, 11, 13, 0, 9, 10, 32, 125, + 11, 13, 0, 9, 32, 125, 10, 13, + 0, 9, 10, 32, 34, 40, 46, 91, + 123, 11, 13, 0, 9, 10, 32, 34, + 125, 11, 13, 0, 9, 10, 32, 34, + 93, 11, 13, 0, 9, 10, 32, 34, + 58, 93, 11, 13, 0, 9, 10, 32, + 34, 93, 11, 13, 0, 9, 10, 32, + 34, 93, 11, 13, 0, 9, 32, 34, + 93, 10, 13, 0, 9, 10, 32, 34, + 58, 93, 11, 13, 0, 9, 10, 32, + 34, 93, 11, 13, 0, 9, 10, 32, + 93, 11, 13, 0, 9, 32, 93, 10, + 13, 0, 9, 10, 32, 34, 93, 11, + 13, 0, 9, 10, 32, 34, 41, 11, + 13, 0, 9, 10, 32, 34, 41, 11, + 13, 0, 9, 10, 32, 34, 41, 11, + 13, 0, 9, 32, 34, 41, 10, 13, + 0, 9, 10, 32, 34, 40, 46, 91, + 123, 11, 13, 0, 9, 10, 32, 34, + 11, 13, 0, 9, 10, 32, 34, 46, + 11, 13, 0, 9, 10, 32, 34, 93, + 11, 13, 0, 9, 10, 32, 34, 93, + 11, 13, 0, 9, 10, 32, 34, 93, + 11, 13, 0, 9, 32, 34, 93, 10, + 13, 0, 9, 10, 32, 34, 125, 11, + 13, 0, 9, 10, 32, 34, 125, 11, + 13, 0, 9, 10, 32, 34, 125, 11, + 13, 0, 9, 32, 34, 125, 10, 13, + 0, 9, 10, 32, 34, 35, 41, 11, + 13, 0, 9, 10, 32, 34, 35, 41, + 58, 11, 13, 0, 9, 10, 32, 34, + 41, 11, 13, 0, 9, 10, 32, 34, + 41, 11, 13, 0, 9, 10, 32, 34, + 41, 11, 13, 0, 9, 32, 34, 41, + 10, 13, 0, 9, 10, 32, 34, 41, + 11, 13, 0, 9, 10, 32, 34, 35, + 41, 11, 13, 0, 9, 10, 32, 37, + 11, 13, 0, 9, 10, 32, 11, 13, + 0, 9, 32, 10, 13, 48, 57, 59, + 48, 57, 48, 57, 65, 90, 97, 122, + 59, 48, 57, 65, 90, 97, 122, 0, + 9, 10, 32, 11, 13, 0, 9, 10, + 32, 39, 11, 13, 0, 9, 32, 10, + 13, 41, 0, 9, 10, 32, 11, 13, + 0, 9, 10, 32, 42, 11, 13, 0, + 9, 32, 10, 13, 0, 9, 10, 32, + 11, 13, 0, 9, 10, 32, 42, 11, + 13, 0, 9, 32, 10, 13, 0, 9, + 10, 32, 11, 13, 0, 9, 10, 32, + 42, 11, 13, 0, 9, 32, 10, 13, + 42, 0, 9, 10, 32, 11, 13, 0, + 9, 10, 32, 43, 11, 13, 0, 9, + 32, 10, 13, 120, 32, 46, 48, 57, + 120, 32, 46, 48, 57, 32, 120, 32, + 34, 39, 46, 120, 48, 57, 32, 34, + 39, 46, 120, 48, 57, 45, 45, 0, + 0, 45, 0, 45, 0, 45, 62, 58, + 95, 65, 90, 97, 122, 32, 62, 63, + 95, 9, 13, 45, 46, 48, 58, 65, + 90, 97, 122, 32, 62, 9, 13, 32, + 47, 62, 63, 95, 9, 13, 45, 58, + 65, 90, 97, 122, 32, 47, 62, 63, + 95, 9, 13, 45, 58, 65, 90, 97, + 122, 32, 47, 61, 62, 63, 95, 9, + 13, 45, 58, 65, 90, 97, 122, 62, + 13, 32, 34, 39, 47, 60, 62, 9, + 10, 11, 12, 13, 32, 47, 60, 62, + 9, 10, 11, 12, 13, 32, 47, 60, + 62, 63, 95, 9, 10, 11, 12, 45, + 58, 65, 90, 97, 122, 13, 32, 47, + 60, 61, 62, 63, 95, 9, 10, 11, + 12, 45, 58, 65, 90, 97, 122, 13, + 32, 47, 60, 62, 9, 10, 11, 12, + 13, 32, 34, 39, 47, 60, 62, 9, + 10, 11, 12, 13, 32, 34, 39, 47, + 60, 62, 63, 95, 9, 10, 11, 12, + 45, 58, 65, 90, 97, 122, 13, 32, + 34, 39, 47, 60, 62, 63, 95, 9, + 10, 11, 12, 45, 58, 65, 90, 97, + 122, 13, 32, 34, 47, 60, 62, 9, + 10, 11, 12, 32, 34, 47, 62, 63, + 95, 9, 13, 45, 58, 65, 90, 97, + 122, 34, 32, 34, 47, 61, 62, 63, + 95, 9, 13, 45, 58, 65, 90, 97, + 122, 34, 62, 13, 32, 34, 39, 47, + 60, 62, 9, 10, 11, 12, 13, 32, + 34, 39, 47, 60, 62, 9, 10, 11, + 12, 13, 32, 34, 39, 47, 60, 62, + 63, 95, 9, 10, 11, 12, 45, 58, + 65, 90, 97, 122, 13, 32, 34, 39, + 47, 60, 62, 63, 95, 9, 10, 11, + 12, 45, 58, 65, 90, 97, 122, 13, + 32, 34, 47, 60, 62, 63, 95, 9, + 10, 11, 12, 45, 58, 65, 90, 97, + 122, 13, 32, 34, 47, 60, 61, 62, + 63, 95, 9, 10, 11, 12, 45, 58, + 65, 90, 97, 122, 13, 32, 34, 47, + 60, 62, 9, 10, 11, 12, 13, 32, + 34, 39, 47, 60, 62, 9, 10, 11, + 12, 13, 32, 34, 39, 47, 60, 62, + 9, 10, 11, 12, 32, 34, 39, 47, + 62, 63, 95, 9, 13, 45, 58, 65, + 90, 97, 122, 34, 39, 32, 39, 47, + 62, 63, 95, 9, 13, 45, 58, 65, + 90, 97, 122, 39, 32, 39, 47, 61, + 62, 63, 95, 9, 13, 45, 58, 65, + 90, 97, 122, 39, 62, 13, 32, 34, + 39, 47, 60, 62, 9, 10, 11, 12, + 13, 32, 39, 47, 60, 62, 9, 10, + 11, 12, 13, 32, 39, 47, 60, 62, + 63, 95, 9, 10, 11, 12, 45, 58, + 65, 90, 97, 122, 13, 32, 39, 47, + 60, 61, 62, 63, 95, 9, 10, 11, + 12, 45, 58, 65, 90, 97, 122, 13, + 32, 39, 47, 60, 62, 9, 10, 11, + 12, 13, 32, 34, 39, 47, 60, 62, + 9, 10, 11, 12, 13, 32, 34, 39, + 47, 60, 62, 63, 95, 9, 10, 11, + 12, 45, 58, 65, 90, 97, 122, 13, + 32, 34, 39, 47, 60, 62, 63, 95, + 9, 10, 11, 12, 45, 58, 65, 90, + 97, 122, 13, 32, 34, 39, 47, 60, + 62, 9, 10, 11, 12, 32, 34, 39, + 47, 61, 62, 63, 95, 9, 13, 45, + 58, 65, 90, 97, 122, 34, 39, 62, + 13, 32, 34, 39, 47, 60, 62, 9, + 10, 11, 12, 13, 32, 34, 39, 47, + 60, 62, 9, 10, 11, 12, 13, 32, + 34, 39, 47, 60, 62, 63, 95, 9, + 10, 11, 12, 45, 58, 65, 90, 97, + 122, 13, 32, 34, 39, 47, 60, 62, + 63, 95, 9, 10, 11, 12, 45, 58, + 65, 90, 97, 122, 13, 32, 34, 39, + 47, 60, 62, 63, 95, 9, 10, 11, + 12, 45, 58, 65, 90, 97, 122, 13, + 32, 34, 39, 47, 60, 61, 62, 63, + 95, 9, 10, 11, 12, 45, 58, 65, + 90, 97, 122, 13, 32, 34, 39, 47, + 60, 62, 9, 10, 11, 12, 13, 32, + 34, 39, 47, 60, 62, 9, 10, 11, + 12, 13, 32, 34, 39, 47, 60, 62, + 9, 10, 11, 12, 32, 47, 62, 63, + 95, 111, 9, 13, 45, 58, 65, 90, + 97, 122, 32, 47, 62, 63, 95, 100, + 9, 13, 45, 58, 65, 90, 97, 122, + 32, 47, 62, 63, 95, 101, 9, 13, + 45, 58, 65, 90, 97, 122, 32, 47, + 62, 63, 95, 9, 13, 45, 58, 65, + 90, 97, 122, 62, 32, 47, 62, 63, + 95, 9, 13, 45, 58, 65, 90, 97, + 122, 32, 47, 61, 62, 63, 95, 9, + 13, 45, 58, 65, 90, 97, 122, 62, + 13, 32, 34, 39, 47, 60, 62, 9, + 10, 11, 12, 13, 32, 47, 60, 62, + 9, 10, 11, 12, 13, 32, 47, 60, + 62, 63, 95, 9, 10, 11, 12, 45, + 58, 65, 90, 97, 122, 13, 32, 47, + 60, 61, 62, 63, 95, 9, 10, 11, + 12, 45, 58, 65, 90, 97, 122, 13, + 32, 47, 60, 62, 9, 10, 11, 12, + 13, 32, 34, 39, 47, 60, 62, 9, + 10, 11, 12, 13, 32, 34, 39, 47, + 60, 62, 63, 95, 9, 10, 11, 12, + 45, 58, 65, 90, 97, 122, 13, 32, + 34, 39, 47, 60, 62, 63, 95, 9, + 10, 11, 12, 45, 58, 65, 90, 97, + 122, 13, 32, 34, 47, 60, 62, 9, + 10, 11, 12, 32, 34, 47, 62, 63, + 95, 9, 13, 45, 58, 65, 90, 97, + 122, 34, 62, 32, 34, 47, 61, 62, + 63, 95, 9, 13, 45, 58, 65, 90, + 97, 122, 34, 62, 13, 32, 34, 39, + 47, 60, 62, 9, 10, 11, 12, 13, + 32, 34, 39, 47, 60, 62, 9, 10, + 11, 12, 13, 32, 34, 39, 47, 60, + 62, 63, 95, 9, 10, 11, 12, 45, + 58, 65, 90, 97, 122, 13, 32, 34, + 39, 47, 60, 62, 63, 95, 9, 10, + 11, 12, 45, 58, 65, 90, 97, 122, + 13, 32, 34, 47, 60, 62, 63, 95, + 9, 10, 11, 12, 45, 58, 65, 90, + 97, 122, 13, 32, 34, 47, 60, 61, + 62, 63, 95, 9, 10, 11, 12, 45, + 58, 65, 90, 97, 122, 13, 32, 34, + 47, 60, 62, 9, 10, 11, 12, 13, + 32, 34, 39, 47, 60, 62, 9, 10, + 11, 12, 13, 32, 34, 39, 47, 60, + 62, 9, 10, 11, 12, 32, 34, 39, + 47, 62, 63, 95, 9, 13, 45, 58, + 65, 90, 97, 122, 34, 39, 62, 32, + 39, 47, 62, 63, 95, 9, 13, 45, + 58, 65, 90, 97, 122, 39, 62, 32, + 39, 47, 61, 62, 63, 95, 9, 13, + 45, 58, 65, 90, 97, 122, 39, 62, + 13, 32, 34, 39, 47, 60, 62, 9, + 10, 11, 12, 13, 32, 39, 47, 60, + 62, 9, 10, 11, 12, 13, 32, 39, + 47, 60, 62, 63, 95, 9, 10, 11, + 12, 45, 58, 65, 90, 97, 122, 13, + 32, 39, 47, 60, 61, 62, 63, 95, + 9, 10, 11, 12, 45, 58, 65, 90, + 97, 122, 13, 32, 39, 47, 60, 62, + 9, 10, 11, 12, 13, 32, 34, 39, + 47, 60, 62, 9, 10, 11, 12, 13, + 32, 34, 39, 47, 60, 62, 63, 95, + 9, 10, 11, 12, 45, 58, 65, 90, + 97, 122, 13, 32, 34, 39, 47, 60, + 62, 63, 95, 9, 10, 11, 12, 45, + 58, 65, 90, 97, 122, 13, 32, 34, + 39, 47, 60, 62, 9, 10, 11, 12, + 32, 34, 39, 47, 61, 62, 63, 95, + 9, 13, 45, 58, 65, 90, 97, 122, + 34, 39, 62, 13, 32, 34, 39, 47, + 60, 62, 9, 10, 11, 12, 13, 32, + 34, 39, 47, 60, 62, 9, 10, 11, + 12, 13, 32, 34, 39, 47, 60, 62, + 63, 95, 9, 10, 11, 12, 45, 58, + 65, 90, 97, 122, 13, 32, 34, 39, + 47, 60, 62, 63, 95, 9, 10, 11, + 12, 45, 58, 65, 90, 97, 122, 13, + 32, 34, 39, 47, 60, 62, 63, 95, + 9, 10, 11, 12, 45, 58, 65, 90, + 97, 122, 13, 32, 34, 39, 47, 60, + 61, 62, 63, 95, 9, 10, 11, 12, + 45, 58, 65, 90, 97, 122, 13, 32, + 34, 39, 47, 60, 62, 9, 10, 11, + 12, 13, 32, 34, 39, 47, 60, 62, + 9, 10, 11, 12, 13, 32, 34, 39, + 47, 60, 62, 9, 10, 11, 12, 32, + 47, 62, 63, 95, 111, 9, 13, 45, + 58, 65, 90, 97, 122, 32, 47, 62, + 63, 95, 116, 9, 13, 45, 58, 65, + 90, 97, 122, 32, 47, 62, 63, 95, + 101, 9, 13, 45, 58, 65, 90, 97, + 122, 32, 47, 62, 63, 95, 120, 9, + 13, 45, 58, 65, 90, 97, 122, 32, + 47, 62, 63, 95, 116, 9, 13, 45, + 58, 65, 90, 97, 122, 32, 47, 62, + 63, 95, 105, 9, 13, 45, 58, 65, + 90, 97, 122, 32, 47, 62, 63, 95, + 108, 9, 13, 45, 58, 65, 90, 97, + 122, 32, 47, 62, 63, 95, 101, 9, + 13, 45, 58, 65, 90, 97, 122, 32, + 47, 62, 63, 95, 9, 13, 45, 58, + 65, 90, 97, 122, 0, 60, 0, 47, + 60, 0, 60, 110, 0, 60, 111, 0, + 60, 116, 0, 60, 101, 0, 60, 120, + 0, 60, 116, 0, 60, 105, 0, 60, + 108, 0, 60, 101, 0, 60, 62, 0, + 47, 60, 0, 60, 110, 0, 60, 111, + 0, 60, 116, 0, 60, 101, 0, 60, + 120, 0, 60, 116, 0, 60, 105, 0, + 60, 108, 0, 60, 101, 0, 60, 62, + 32, 47, 62, 63, 95, 99, 9, 13, + 45, 58, 65, 90, 97, 122, 32, 47, + 62, 63, 95, 114, 9, 13, 45, 58, + 65, 90, 97, 122, 32, 47, 62, 63, + 95, 105, 9, 13, 45, 58, 65, 90, + 97, 122, 32, 47, 62, 63, 95, 112, + 9, 13, 45, 58, 65, 90, 97, 122, + 32, 47, 62, 63, 95, 116, 9, 13, + 45, 58, 65, 90, 97, 122, 32, 47, + 62, 63, 95, 9, 13, 45, 58, 65, + 90, 97, 122, 62, 0, 60, 0, 60, + 0, 47, 60, 0, 60, 115, 0, 60, + 99, 0, 60, 114, 0, 60, 105, 0, + 60, 112, 0, 60, 116, 0, 60, 62, + 0, 47, 60, 0, 60, 115, 0, 60, + 99, 0, 60, 114, 0, 60, 105, 0, + 60, 112, 0, 60, 116, 0, 60, 62, + 32, 47, 62, 63, 95, 9, 13, 45, + 58, 65, 90, 97, 122, 32, 47, 61, + 62, 63, 95, 9, 13, 45, 58, 65, + 90, 97, 122, 62, 13, 32, 34, 39, + 47, 60, 62, 9, 10, 11, 12, 13, + 32, 47, 60, 62, 9, 10, 11, 12, + 13, 32, 47, 60, 62, 63, 95, 9, + 10, 11, 12, 45, 58, 65, 90, 97, + 122, 13, 32, 47, 60, 61, 62, 63, + 95, 9, 10, 11, 12, 45, 58, 65, + 90, 97, 122, 13, 32, 47, 60, 62, + 9, 10, 11, 12, 13, 32, 34, 39, + 47, 60, 62, 9, 10, 11, 12, 13, + 32, 34, 39, 47, 60, 62, 63, 95, + 9, 10, 11, 12, 45, 58, 65, 90, + 97, 122, 13, 32, 34, 39, 47, 60, + 62, 63, 95, 9, 10, 11, 12, 45, + 58, 65, 90, 97, 122, 13, 32, 34, + 47, 60, 62, 9, 10, 11, 12, 32, + 34, 47, 62, 63, 95, 9, 13, 45, + 58, 65, 90, 97, 122, 34, 62, 0, + 34, 60, 0, 34, 60, 0, 32, 47, + 60, 62, 63, 95, 9, 13, 45, 58, + 65, 90, 97, 122, 0, 32, 47, 60, + 61, 62, 63, 95, 9, 13, 45, 58, + 65, 90, 97, 122, 0, 60, 62, 0, + 13, 32, 34, 39, 47, 60, 62, 9, + 10, 11, 12, 0, 13, 32, 47, 60, + 62, 9, 10, 11, 12, 0, 13, 32, + 47, 60, 62, 63, 95, 9, 10, 11, + 12, 45, 58, 65, 90, 97, 122, 0, + 13, 32, 47, 60, 61, 62, 63, 95, + 9, 10, 11, 12, 45, 58, 65, 90, + 97, 122, 0, 13, 32, 47, 60, 62, + 9, 10, 11, 12, 0, 13, 32, 34, + 39, 47, 60, 62, 9, 10, 11, 12, + 0, 13, 32, 34, 39, 47, 60, 62, + 63, 95, 9, 10, 11, 12, 45, 58, + 65, 90, 97, 122, 0, 13, 32, 34, + 39, 47, 60, 62, 63, 95, 9, 10, + 11, 12, 45, 58, 65, 90, 97, 122, + 0, 13, 32, 34, 47, 60, 62, 9, + 10, 11, 12, 0, 32, 34, 47, 60, + 62, 63, 95, 9, 13, 45, 58, 65, + 90, 97, 122, 0, 32, 34, 47, 60, + 61, 62, 63, 95, 9, 13, 45, 58, + 65, 90, 97, 122, 0, 34, 60, 62, + 0, 34, 47, 60, 0, 34, 60, 115, + 0, 34, 60, 99, 0, 34, 60, 114, + 0, 34, 60, 105, 0, 34, 60, 112, + 0, 34, 60, 116, 0, 34, 60, 62, + 0, 13, 32, 34, 39, 47, 60, 62, + 9, 10, 11, 12, 0, 13, 32, 34, + 39, 47, 60, 62, 9, 10, 11, 12, + 0, 13, 32, 34, 39, 47, 60, 62, + 63, 95, 9, 10, 11, 12, 45, 58, + 65, 90, 97, 122, 0, 13, 32, 34, + 39, 47, 60, 62, 63, 95, 9, 10, + 11, 12, 45, 58, 65, 90, 97, 122, + 0, 13, 32, 34, 47, 60, 62, 63, + 95, 9, 10, 11, 12, 45, 58, 65, + 90, 97, 122, 0, 13, 32, 34, 47, + 60, 61, 62, 63, 95, 9, 10, 11, + 12, 45, 58, 65, 90, 97, 122, 0, + 13, 32, 34, 47, 60, 62, 9, 10, + 11, 12, 0, 13, 32, 34, 39, 47, + 60, 62, 9, 10, 11, 12, 0, 13, + 32, 34, 39, 47, 60, 62, 9, 10, + 11, 12, 0, 32, 34, 39, 47, 60, + 62, 63, 95, 9, 13, 45, 58, 65, + 90, 97, 122, 0, 34, 39, 60, 0, + 32, 39, 47, 60, 62, 63, 95, 9, + 13, 45, 58, 65, 90, 97, 122, 0, + 39, 60, 0, 39, 47, 60, 0, 39, + 60, 115, 0, 39, 60, 99, 0, 39, + 60, 114, 0, 39, 60, 105, 0, 39, + 60, 112, 0, 39, 60, 116, 0, 39, + 60, 62, 0, 32, 39, 47, 60, 61, + 62, 63, 95, 9, 13, 45, 58, 65, + 90, 97, 122, 0, 39, 60, 62, 0, + 13, 32, 34, 39, 47, 60, 62, 9, + 10, 11, 12, 0, 13, 32, 39, 47, + 60, 62, 9, 10, 11, 12, 0, 13, + 32, 39, 47, 60, 62, 63, 95, 9, + 10, 11, 12, 45, 58, 65, 90, 97, + 122, 0, 13, 32, 39, 47, 60, 61, + 62, 63, 95, 9, 10, 11, 12, 45, + 58, 65, 90, 97, 122, 0, 13, 32, + 39, 47, 60, 62, 9, 10, 11, 12, + 0, 13, 32, 34, 39, 47, 60, 62, + 9, 10, 11, 12, 0, 13, 32, 34, + 39, 47, 60, 62, 63, 95, 9, 10, + 11, 12, 45, 58, 65, 90, 97, 122, + 0, 13, 32, 34, 39, 47, 60, 62, + 63, 95, 9, 10, 11, 12, 45, 58, + 65, 90, 97, 122, 0, 13, 32, 34, + 39, 47, 60, 62, 9, 10, 11, 12, + 0, 34, 39, 47, 60, 0, 34, 39, + 60, 115, 0, 34, 39, 60, 99, 0, + 34, 39, 60, 114, 0, 34, 39, 60, + 105, 0, 34, 39, 60, 112, 0, 34, + 39, 60, 116, 0, 34, 39, 60, 62, + 0, 32, 34, 39, 47, 60, 61, 62, + 63, 95, 9, 13, 45, 58, 65, 90, + 97, 122, 0, 34, 39, 60, 62, 0, + 13, 32, 34, 39, 47, 60, 62, 9, + 10, 11, 12, 0, 13, 32, 34, 39, + 47, 60, 62, 9, 10, 11, 12, 0, + 13, 32, 34, 39, 47, 60, 62, 63, + 95, 9, 10, 11, 12, 45, 58, 65, + 90, 97, 122, 0, 13, 32, 34, 39, + 47, 60, 62, 63, 95, 9, 10, 11, + 12, 45, 58, 65, 90, 97, 122, 0, + 13, 32, 34, 39, 47, 60, 62, 63, + 95, 9, 10, 11, 12, 45, 58, 65, + 90, 97, 122, 0, 13, 32, 34, 39, + 47, 60, 61, 62, 63, 95, 9, 10, + 11, 12, 45, 58, 65, 90, 97, 122, + 0, 13, 32, 34, 39, 47, 60, 62, + 9, 10, 11, 12, 0, 13, 32, 34, + 39, 47, 60, 62, 9, 10, 11, 12, + 0, 13, 32, 34, 39, 47, 60, 62, + 9, 10, 11, 12, 0, 34, 47, 60, + 0, 34, 60, 115, 0, 34, 60, 99, + 0, 34, 60, 114, 0, 34, 60, 105, + 0, 34, 60, 112, 0, 34, 60, 116, + 0, 34, 60, 62, 32, 34, 47, 61, + 62, 63, 95, 9, 13, 45, 58, 65, + 90, 97, 122, 34, 62, 13, 32, 34, + 39, 47, 60, 62, 9, 10, 11, 12, + 13, 32, 34, 39, 47, 60, 62, 9, + 10, 11, 12, 13, 32, 34, 39, 47, + 60, 62, 63, 95, 9, 10, 11, 12, + 45, 58, 65, 90, 97, 122, 13, 32, + 34, 39, 47, 60, 62, 63, 95, 9, + 10, 11, 12, 45, 58, 65, 90, 97, + 122, 13, 32, 34, 47, 60, 62, 63, + 95, 9, 10, 11, 12, 45, 58, 65, + 90, 97, 122, 13, 32, 34, 47, 60, + 61, 62, 63, 95, 9, 10, 11, 12, + 45, 58, 65, 90, 97, 122, 13, 32, + 34, 47, 60, 62, 9, 10, 11, 12, + 13, 32, 34, 39, 47, 60, 62, 9, + 10, 11, 12, 13, 32, 34, 39, 47, + 60, 62, 9, 10, 11, 12, 32, 34, + 39, 47, 62, 63, 95, 9, 13, 45, + 58, 65, 90, 97, 122, 34, 39, 62, + 32, 39, 47, 62, 63, 95, 9, 13, + 45, 58, 65, 90, 97, 122, 39, 62, + 0, 39, 60, 0, 39, 47, 60, 0, + 39, 60, 115, 0, 39, 60, 99, 0, + 39, 60, 114, 0, 39, 60, 105, 0, + 39, 60, 112, 0, 39, 60, 116, 0, + 39, 60, 62, 32, 39, 47, 61, 62, + 63, 95, 9, 13, 45, 58, 65, 90, + 97, 122, 39, 62, 13, 32, 34, 39, + 47, 60, 62, 9, 10, 11, 12, 13, + 32, 39, 47, 60, 62, 9, 10, 11, + 12, 13, 32, 39, 47, 60, 62, 63, + 95, 9, 10, 11, 12, 45, 58, 65, + 90, 97, 122, 13, 32, 39, 47, 60, + 61, 62, 63, 95, 9, 10, 11, 12, + 45, 58, 65, 90, 97, 122, 13, 32, + 39, 47, 60, 62, 9, 10, 11, 12, + 13, 32, 34, 39, 47, 60, 62, 9, + 10, 11, 12, 13, 32, 34, 39, 47, + 60, 62, 63, 95, 9, 10, 11, 12, + 45, 58, 65, 90, 97, 122, 13, 32, + 34, 39, 47, 60, 62, 63, 95, 9, + 10, 11, 12, 45, 58, 65, 90, 97, + 122, 13, 32, 34, 39, 47, 60, 62, + 9, 10, 11, 12, 0, 34, 39, 60, + 0, 34, 39, 47, 60, 0, 34, 39, + 60, 115, 0, 34, 39, 60, 99, 0, + 34, 39, 60, 114, 0, 34, 39, 60, + 105, 0, 34, 39, 60, 112, 0, 34, + 39, 60, 116, 0, 34, 39, 60, 62, + 32, 34, 39, 47, 61, 62, 63, 95, + 9, 13, 45, 58, 65, 90, 97, 122, + 34, 39, 62, 13, 32, 34, 39, 47, + 60, 62, 9, 10, 11, 12, 13, 32, + 34, 39, 47, 60, 62, 9, 10, 11, + 12, 13, 32, 34, 39, 47, 60, 62, + 63, 95, 9, 10, 11, 12, 45, 58, + 65, 90, 97, 122, 13, 32, 34, 39, + 47, 60, 62, 63, 95, 9, 10, 11, + 12, 45, 58, 65, 90, 97, 122, 13, + 32, 34, 39, 47, 60, 62, 63, 95, + 9, 10, 11, 12, 45, 58, 65, 90, + 97, 122, 13, 32, 34, 39, 47, 60, + 61, 62, 63, 95, 9, 10, 11, 12, + 45, 58, 65, 90, 97, 122, 13, 32, + 34, 39, 47, 60, 62, 9, 10, 11, + 12, 13, 32, 34, 39, 47, 60, 62, + 9, 10, 11, 12, 13, 32, 34, 39, + 47, 60, 62, 9, 10, 11, 12, 0, + 32, 9, 13, 0, 9, 10, 32, 61, + 11, 13, 0, 9, 10, 32, 11, 13, + 0, 9, 32, 10, 13, 61, 0, 32, + 9, 13, 0, 9, 10, 32, 63, 11, + 13, 0, 9, 10, 32, 11, 13, 0, + 9, 32, 10, 13, 63, 0, 9, 10, + 32, 11, 13, 0, 9, 10, 32, 64, + 11, 13, 0, 9, 32, 10, 13, 0, + 0, 41, 34, 35, 36, 37, 40, 43, + 46, 47, 60, 61, 62, 91, 95, 123, + 127, 0, 32, 45, 57, 59, 63, 65, + 90, 97, 122, 0, 32, 34, 40, 46, + 91, 123, 9, 13, 0, 9, 10, 32, + 34, 11, 13, 0, 9, 10, 32, 34, + 11, 13, 0, 9, 32, 34, 10, 13, + 0, 9, 10, 32, 34, 58, 11, 13, + 0, 9, 10, 32, 34, 11, 13, 0, + 9, 10, 32, 34, 11, 13, 0, 9, + 32, 34, 10, 13, 0, 9, 10, 32, + 34, 11, 13, 0, 9, 10, 32, 34, + 58, 11, 13, 0, 9, 10, 32, 34, + 11, 13, 0, 9, 10, 32, 34, 11, + 13, 0, 9, 32, 34, 10, 13, 0, + 9, 10, 32, 34, 58, 11, 13, 0, + 9, 10, 32, 34, 11, 13, 0, 9, + 10, 32, 34, 11, 13, 0, 9, 32, + 34, 10, 13, 0, 9, 10, 32, 34, + 58, 11, 13, 0, 9, 10, 32, 34, + 58, 11, 13, 0, 9, 10, 32, 34, + 11, 13, 0, 9, 10, 32, 34, 11, + 13, 0, 9, 10, 32, 34, 11, 13, + 0, 9, 32, 34, 10, 13, 0, 9, + 10, 32, 34, 58, 11, 13, 0, 9, + 10, 32, 34, 58, 11, 13, 0, 9, + 10, 32, 34, 11, 13, 0, 9, 10, + 32, 34, 58, 11, 13, 34, 35, 36, + 37, 43, 47, 95, 127, 0, 32, 45, + 57, 59, 60, 62, 63, 65, 90, 97, + 122, 34, 36, 37, 47, 95, 127, 0, + 32, 45, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 34, 37, 60, 62, 93, + 127, 0, 32, 48, 57, 65, 70, 97, + 102, 48, 57, 65, 70, 97, 102, 48, + 57, 65, 70, 97, 102, 48, 57, 65, + 70, 97, 102, 34, 36, 37, 47, 93, + 95, 127, 0, 32, 45, 57, 59, 60, + 62, 63, 65, 90, 97, 122, 48, 57, + 65, 70, 97, 102, 48, 57, 65, 70, + 97, 102, 34, 36, 37, 43, 47, 95, + 127, 0, 32, 45, 58, 59, 60, 62, + 63, 65, 90, 97, 122, 34, 36, 37, + 47, 93, 95, 127, 0, 32, 45, 57, + 59, 60, 62, 63, 65, 90, 97, 122, + 0, 9, 10, 32, 34, 11, 13, 0, + 9, 10, 32, 34, 11, 13, 0, 9, + 32, 34, 10, 13, 0, 9, 10, 32, + 34, 58, 11, 13, 0, 9, 10, 32, + 34, 11, 13, 0, 9, 10, 32, 34, + 58, 11, 13, 0, 9, 10, 32, 34, + 11, 13, 0, 32, 34, 9, 13, 0, + 9, 10, 32, 34, 11, 13, 0, 9, + 10, 32, 34, 11, 13, 0, 9, 32, + 34, 10, 13, 0, 9, 10, 32, 34, + 11, 13, 0, 9, 10, 32, 34, 58, + 11, 13, 0, 9, 10, 32, 34, 58, + 11, 13, 0, 9, 10, 32, 34, 11, + 13, 0, 9, 10, 32, 34, 11, 13, + 0, 9, 32, 34, 10, 13, 0, 9, + 10, 32, 34, 58, 11, 13, 0, 9, + 10, 32, 34, 11, 13, 0, 9, 10, + 32, 34, 58, 11, 13, 0, 9, 10, + 32, 34, 11, 13, 0, 9, 10, 32, + 34, 11, 13, 0, 9, 32, 34, 10, + 13, 0, 9, 10, 32, 34, 58, 11, + 13, 0, 9, 10, 32, 34, 58, 11, + 13, 0, 9, 10, 32, 34, 11, 13, + 0, 9, 10, 32, 34, 58, 11, 13, + 0, 9, 10, 32, 34, 58, 11, 13, + 0, 9, 10, 32, 34, 58, 11, 13, + 0, 9, 10, 32, 34, 58, 11, 13, + 0, 9, 10, 32, 34, 58, 11, 13, + 0, 9, 10, 32, 34, 11, 13, 0, + 9, 10, 32, 34, 11, 13, 0, 9, + 32, 34, 10, 13, 0, 9, 10, 32, + 34, 58, 11, 13, 0, 9, 10, 32, + 34, 11, 13, 0, 9, 10, 32, 34, + 58, 11, 13, 0, 9, 10, 32, 34, + 11, 13, 0, 9, 10, 32, 34, 11, + 13, 0, 9, 32, 34, 10, 13, 0, + 9, 10, 32, 34, 58, 11, 13, 0, + 9, 10, 32, 34, 35, 41, 11, 13, + 35, 41, 41, 41, 0, 32, 34, 40, + 46, 91, 123, 9, 13, 0, 9, 10, + 32, 34, 35, 41, 11, 13, 0, 9, + 10, 32, 34, 35, 41, 11, 13, 0, + 9, 32, 34, 35, 41, 10, 13, 0, + 9, 10, 32, 34, 35, 41, 58, 11, + 13, 0, 9, 10, 32, 34, 35, 41, + 11, 13, 0, 9, 10, 32, 34, 35, + 41, 11, 13, 0, 9, 32, 34, 35, + 41, 10, 13, 0, 9, 10, 32, 34, + 41, 11, 13, 0, 9, 10, 32, 34, + 41, 11, 13, 0, 9, 10, 32, 34, + 41, 11, 13, 0, 9, 32, 34, 41, + 10, 13, 0, 9, 10, 32, 34, 41, + 58, 11, 13, 0, 9, 10, 32, 34, + 41, 11, 13, 0, 9, 10, 32, 34, + 41, 58, 11, 13, 0, 9, 10, 32, + 34, 41, 11, 13, 0, 9, 10, 32, + 34, 41, 11, 13, 0, 9, 32, 34, + 41, 10, 13, 0, 9, 10, 32, 34, + 41, 58, 11, 13, 0, 9, 10, 32, + 34, 41, 58, 11, 13, 0, 9, 10, + 32, 34, 41, 11, 13, 0, 9, 10, + 32, 34, 41, 11, 13, 0, 9, 10, + 32, 34, 41, 11, 13, 0, 9, 32, + 34, 41, 10, 13, 0, 9, 10, 32, + 34, 41, 58, 11, 13, 0, 9, 10, + 32, 34, 41, 58, 11, 13, 0, 9, + 10, 32, 34, 41, 11, 13, 0, 9, + 10, 32, 34, 41, 58, 11, 13, 0, + 9, 10, 32, 34, 40, 91, 123, 11, + 13, 0, 9, 10, 32, 34, 35, 41, + 11, 13, 0, 9, 10, 32, 34, 35, + 41, 11, 13, 0, 9, 32, 34, 35, + 41, 10, 13, 0, 9, 10, 32, 34, + 35, 41, 58, 11, 13, 0, 9, 10, + 32, 34, 35, 41, 58, 11, 13, 0, + 9, 10, 32, 34, 35, 41, 11, 13, + 0, 9, 10, 32, 34, 35, 41, 58, + 11, 13, 0, 9, 10, 32, 34, 41, + 11, 13, 34, 35, 36, 37, 41, 43, + 47, 95, 127, 0, 32, 45, 57, 59, + 60, 62, 63, 65, 90, 97, 122, 34, + 35, 36, 37, 41, 47, 95, 127, 0, + 32, 45, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 34, 36, 37, 41, 47, + 95, 127, 0, 32, 45, 57, 59, 60, + 62, 63, 65, 90, 97, 122, 34, 36, + 37, 41, 47, 95, 127, 0, 32, 45, + 57, 59, 60, 62, 63, 65, 90, 97, + 122, 34, 37, 41, 60, 62, 93, 127, + 0, 32, 41, 48, 57, 65, 70, 97, + 102, 41, 48, 57, 65, 70, 97, 102, + 0, 32, 34, 37, 40, 46, 60, 62, + 91, 93, 123, 127, 1, 8, 9, 13, + 14, 31, 0, 9, 10, 32, 34, 37, + 60, 62, 93, 127, 1, 8, 11, 13, + 14, 31, 0, 9, 10, 32, 34, 11, + 13, 48, 57, 65, 70, 97, 102, 0, + 9, 10, 32, 34, 11, 13, 48, 57, + 65, 70, 97, 102, 0, 9, 10, 32, + 34, 35, 37, 41, 60, 62, 93, 127, + 1, 8, 11, 13, 14, 31, 0, 9, + 10, 32, 34, 35, 41, 11, 13, 0, + 9, 10, 32, 34, 35, 41, 58, 11, + 13, 0, 9, 10, 32, 34, 35, 41, + 11, 13, 0, 9, 10, 32, 34, 35, + 41, 11, 13, 0, 9, 32, 34, 35, + 41, 10, 13, 0, 9, 10, 32, 34, + 35, 41, 58, 11, 13, 0, 9, 10, + 32, 34, 35, 41, 58, 11, 13, 0, + 9, 10, 32, 34, 35, 41, 11, 13, + 0, 9, 10, 32, 34, 41, 11, 13, + 0, 9, 10, 32, 34, 40, 46, 91, + 123, 11, 13, 0, 9, 10, 32, 34, + 11, 13, 0, 9, 10, 32, 34, 11, + 13, 0, 9, 32, 34, 10, 13, 0, + 9, 10, 32, 34, 58, 11, 13, 0, + 9, 10, 32, 34, 11, 13, 0, 9, + 10, 32, 34, 58, 11, 13, 0, 9, + 10, 32, 34, 58, 11, 13, 0, 9, + 10, 32, 34, 58, 11, 13, 0, 9, + 10, 32, 34, 35, 41, 11, 13, 0, + 9, 10, 32, 34, 35, 41, 11, 13, + 0, 9, 32, 34, 35, 41, 10, 13, + 0, 9, 10, 32, 34, 41, 11, 13, + 0, 9, 10, 32, 34, 41, 11, 13, + 0, 9, 10, 32, 34, 41, 11, 13, + 0, 9, 32, 34, 41, 10, 13, 0, + 9, 10, 32, 34, 40, 46, 91, 123, + 11, 13, 0, 9, 10, 32, 34, 11, + 13, 0, 9, 10, 32, 34, 58, 11, + 13, 0, 9, 10, 32, 34, 46, 11, + 13, 0, 9, 10, 32, 34, 93, 11, + 13, 0, 9, 10, 32, 34, 93, 11, + 13, 93, 0, 9, 10, 32, 34, 93, + 11, 13, 0, 9, 32, 34, 93, 10, + 13, 0, 9, 10, 32, 34, 58, 93, + 11, 13, 0, 9, 10, 32, 34, 93, + 11, 13, 0, 9, 10, 32, 34, 93, + 11, 13, 0, 9, 32, 34, 93, 10, + 13, 0, 9, 10, 32, 34, 58, 93, + 11, 13, 0, 9, 10, 32, 34, 93, + 11, 13, 0, 9, 10, 32, 34, 93, + 11, 13, 0, 9, 10, 32, 34, 93, + 11, 13, 0, 9, 32, 34, 93, 10, + 13, 0, 9, 10, 32, 34, 58, 93, + 11, 13, 0, 9, 10, 32, 34, 58, + 93, 11, 13, 0, 9, 10, 32, 34, + 93, 11, 13, 0, 9, 10, 32, 34, + 58, 93, 11, 13, 34, 35, 36, 37, + 43, 47, 93, 95, 127, 0, 32, 45, + 57, 59, 60, 62, 63, 65, 90, 97, + 122, 34, 36, 37, 47, 93, 95, 127, + 0, 32, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 34, 37, 60, 62, + 93, 127, 0, 32, 93, 48, 57, 65, + 70, 97, 102, 93, 48, 57, 65, 70, + 97, 102, 93, 48, 57, 65, 70, 97, + 102, 93, 48, 57, 65, 70, 97, 102, + 0, 32, 34, 36, 37, 40, 46, 47, + 91, 95, 123, 127, 1, 8, 9, 13, + 14, 31, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 0, 9, 10, 32, + 34, 36, 37, 47, 95, 127, 1, 8, + 11, 13, 14, 31, 45, 57, 59, 60, + 62, 63, 65, 90, 97, 122, 0, 9, + 10, 32, 34, 11, 13, 48, 57, 65, + 70, 97, 102, 0, 9, 10, 32, 34, + 11, 13, 48, 57, 65, 70, 97, 102, + 0, 9, 10, 32, 34, 35, 36, 37, + 41, 47, 95, 127, 1, 8, 11, 13, + 14, 31, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 0, 9, 10, 32, + 34, 35, 41, 58, 11, 13, 0, 9, + 10, 32, 34, 35, 41, 11, 13, 0, + 9, 10, 32, 34, 40, 46, 91, 123, + 11, 13, 0, 9, 10, 32, 34, 11, + 13, 0, 9, 10, 32, 34, 11, 13, + 0, 9, 10, 32, 34, 58, 11, 13, + 0, 9, 10, 32, 34, 46, 11, 13, + 0, 9, 10, 32, 34, 11, 13, 0, + 9, 10, 32, 34, 11, 13, 0, 9, + 10, 32, 34, 58, 11, 13, 0, 9, + 10, 32, 34, 93, 11, 13, 0, 9, + 10, 32, 34, 93, 11, 13, 0, 9, + 10, 32, 34, 93, 11, 13, 0, 9, + 32, 34, 93, 10, 13, 0, 9, 10, + 32, 34, 58, 93, 11, 13, 0, 9, + 10, 32, 34, 93, 11, 13, 0, 9, + 10, 32, 34, 93, 11, 13, 0, 9, + 32, 34, 93, 10, 13, 0, 9, 10, + 32, 34, 93, 11, 13, 0, 9, 10, + 32, 34, 58, 93, 11, 13, 0, 9, + 10, 32, 34, 40, 46, 91, 123, 11, + 13, 0, 9, 10, 32, 34, 125, 11, + 13, 0, 9, 10, 32, 34, 125, 11, + 13, 125, 0, 9, 10, 32, 34, 125, + 11, 13, 0, 9, 32, 34, 125, 10, + 13, 0, 9, 10, 32, 34, 58, 125, + 11, 13, 0, 9, 10, 32, 34, 125, + 11, 13, 0, 9, 10, 32, 34, 125, + 11, 13, 0, 9, 32, 34, 125, 10, + 13, 0, 9, 10, 32, 34, 125, 11, + 13, 0, 9, 10, 32, 34, 58, 125, + 11, 13, 0, 9, 10, 32, 34, 125, + 11, 13, 0, 9, 10, 32, 34, 125, + 11, 13, 0, 9, 32, 34, 125, 10, + 13, 0, 9, 10, 32, 34, 58, 125, + 11, 13, 0, 9, 10, 32, 34, 58, + 125, 11, 13, 0, 9, 10, 32, 34, + 125, 11, 13, 0, 9, 10, 32, 34, + 125, 11, 13, 0, 9, 10, 32, 34, + 125, 11, 13, 0, 9, 32, 34, 125, + 10, 13, 0, 9, 10, 32, 34, 58, + 125, 11, 13, 0, 9, 10, 32, 34, + 58, 125, 11, 13, 0, 9, 10, 32, + 34, 125, 11, 13, 0, 9, 10, 32, + 34, 58, 125, 11, 13, 34, 35, 36, + 37, 43, 47, 95, 125, 127, 0, 32, + 45, 57, 59, 60, 62, 63, 65, 90, + 97, 122, 34, 36, 37, 47, 95, 125, + 127, 0, 32, 45, 57, 59, 60, 62, + 63, 65, 90, 97, 122, 34, 37, 60, + 62, 93, 125, 127, 0, 32, 125, 48, + 57, 65, 70, 97, 102, 125, 48, 57, + 65, 70, 97, 102, 125, 48, 57, 65, + 70, 97, 102, 125, 48, 57, 65, 70, + 97, 102, 34, 36, 37, 47, 93, 95, + 125, 127, 0, 32, 45, 57, 59, 60, + 62, 63, 65, 90, 97, 122, 125, 48, + 57, 65, 70, 97, 102, 125, 48, 57, + 65, 70, 97, 102, 0, 32, 34, 36, + 37, 40, 46, 47, 91, 93, 95, 123, + 127, 1, 8, 9, 13, 14, 31, 45, + 57, 59, 60, 62, 63, 65, 90, 97, + 122, 0, 9, 10, 32, 34, 36, 37, + 47, 93, 95, 127, 1, 8, 11, 13, + 14, 31, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 0, 9, 10, 32, + 34, 11, 13, 48, 57, 65, 70, 97, + 102, 0, 9, 10, 32, 34, 11, 13, + 48, 57, 65, 70, 97, 102, 0, 9, + 10, 32, 34, 35, 36, 37, 41, 47, + 93, 95, 127, 1, 8, 11, 13, 14, + 31, 45, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 0, 9, 10, 32, 34, + 36, 37, 41, 47, 93, 95, 127, 1, + 8, 11, 13, 14, 31, 45, 57, 59, + 60, 62, 63, 65, 90, 97, 122, 0, + 9, 10, 32, 34, 36, 37, 41, 47, + 93, 95, 127, 1, 8, 11, 13, 14, + 31, 45, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 0, 9, 10, 32, 34, + 41, 11, 13, 0, 9, 10, 32, 34, + 41, 11, 13, 0, 9, 32, 34, 41, + 10, 13, 0, 9, 10, 32, 34, 41, + 11, 13, 0, 9, 10, 32, 34, 41, + 58, 11, 13, 34, 35, 36, 37, 41, + 43, 47, 95, 127, 0, 32, 45, 57, + 59, 60, 62, 63, 65, 90, 97, 122, + 34, 36, 37, 41, 47, 93, 95, 127, + 0, 32, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 41, 48, 57, 65, + 70, 97, 102, 41, 48, 57, 65, 70, + 97, 102, 41, 48, 57, 65, 70, 97, + 102, 41, 48, 57, 65, 70, 97, 102, + 34, 36, 37, 41, 43, 47, 95, 127, + 0, 32, 45, 58, 59, 60, 62, 63, + 65, 90, 97, 122, 34, 36, 37, 41, + 47, 93, 95, 127, 0, 32, 45, 57, + 59, 60, 62, 63, 65, 90, 97, 122, + 0, 9, 10, 32, 34, 37, 41, 60, + 62, 93, 127, 1, 8, 11, 13, 14, + 31, 0, 9, 10, 32, 34, 41, 11, + 13, 48, 57, 65, 70, 97, 102, 0, + 9, 10, 32, 34, 41, 11, 13, 48, + 57, 65, 70, 97, 102, 0, 9, 10, + 32, 34, 37, 40, 46, 60, 62, 91, + 93, 123, 127, 1, 8, 11, 13, 14, + 31, 0, 9, 10, 32, 34, 37, 46, + 60, 62, 93, 127, 1, 8, 11, 13, + 14, 31, 0, 9, 10, 32, 34, 37, + 60, 62, 93, 127, 1, 8, 11, 13, + 14, 31, 0, 9, 10, 32, 34, 93, + 11, 13, 0, 9, 10, 32, 34, 58, + 93, 11, 13, 0, 9, 10, 32, 34, + 93, 11, 13, 48, 57, 65, 70, 97, + 102, 0, 9, 10, 32, 34, 93, 11, + 13, 48, 57, 65, 70, 97, 102, 0, + 9, 10, 32, 34, 37, 60, 62, 93, + 125, 127, 1, 8, 11, 13, 14, 31, + 0, 9, 10, 32, 34, 37, 60, 62, + 93, 125, 127, 1, 8, 11, 13, 14, + 31, 0, 9, 10, 32, 34, 125, 11, + 13, 0, 9, 10, 32, 34, 58, 125, + 11, 13, 0, 9, 10, 32, 34, 125, + 11, 13, 48, 57, 65, 70, 97, 102, + 0, 9, 10, 32, 34, 125, 11, 13, + 48, 57, 65, 70, 97, 102, 0, 9, + 10, 32, 34, 41, 11, 13, 48, 57, + 65, 70, 97, 102, 0, 9, 10, 32, + 34, 41, 11, 13, 48, 57, 65, 70, + 97, 102, 0, 9, 10, 32, 34, 36, + 37, 40, 46, 47, 91, 93, 95, 123, + 127, 1, 8, 11, 13, 14, 31, 45, + 57, 59, 60, 62, 63, 65, 90, 97, + 122, 0, 9, 10, 32, 34, 36, 37, + 47, 93, 95, 127, 1, 8, 11, 13, + 14, 31, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 0, 9, 10, 32, + 34, 93, 11, 13, 48, 57, 65, 70, + 97, 102, 0, 9, 10, 32, 34, 93, + 11, 13, 48, 57, 65, 70, 97, 102, + 0, 9, 10, 32, 34, 36, 37, 47, + 93, 95, 125, 127, 1, 8, 11, 13, + 14, 31, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 0, 9, 10, 32, + 34, 36, 37, 47, 93, 95, 125, 127, + 1, 8, 11, 13, 14, 31, 45, 57, + 59, 60, 62, 63, 65, 90, 97, 122, + 0, 9, 10, 32, 34, 125, 11, 13, + 48, 57, 65, 70, 97, 102, 0, 9, + 10, 32, 34, 125, 11, 13, 48, 57, + 65, 70, 97, 102, 0, 9, 10, 32, + 34, 35, 41, 11, 13, 48, 57, 65, + 70, 97, 102, 0, 9, 10, 32, 34, + 41, 11, 13, 0, 9, 10, 32, 34, + 35, 41, 11, 13, 48, 57, 65, 70, + 97, 102, 34, 36, 37, 43, 47, 95, + 125, 127, 0, 32, 45, 58, 59, 60, + 62, 63, 65, 90, 97, 122, 34, 36, + 37, 47, 93, 95, 125, 127, 0, 32, + 45, 57, 59, 60, 62, 63, 65, 90, + 97, 122, 0, 9, 10, 32, 34, 36, + 37, 41, 47, 95, 127, 1, 8, 11, + 13, 14, 31, 45, 57, 59, 60, 62, + 63, 65, 90, 97, 122, 0, 9, 10, + 32, 34, 36, 37, 41, 47, 95, 127, + 1, 8, 11, 13, 14, 31, 45, 57, + 59, 60, 62, 63, 65, 90, 97, 122, + 0, 9, 10, 32, 34, 41, 11, 13, + 48, 57, 65, 70, 97, 102, 0, 9, + 10, 32, 34, 41, 11, 13, 48, 57, + 65, 70, 97, 102, 0, 9, 10, 32, + 34, 36, 37, 40, 46, 47, 91, 95, + 123, 127, 1, 8, 11, 13, 14, 31, + 45, 57, 59, 60, 62, 63, 65, 90, + 97, 122, 0, 9, 10, 32, 34, 36, + 37, 47, 93, 95, 127, 1, 8, 11, + 13, 14, 31, 45, 57, 59, 60, 62, + 63, 65, 90, 97, 122, 0, 9, 10, + 32, 34, 36, 37, 47, 93, 95, 127, + 1, 8, 11, 13, 14, 31, 45, 57, + 59, 60, 62, 63, 65, 90, 97, 122, + 0, 9, 10, 32, 34, 93, 11, 13, + 48, 57, 65, 70, 97, 102, 0, 9, + 10, 32, 34, 93, 11, 13, 48, 57, + 65, 70, 97, 102, 0, 9, 10, 32, + 34, 36, 37, 47, 95, 125, 127, 1, + 8, 11, 13, 14, 31, 45, 57, 59, + 60, 62, 63, 65, 90, 97, 122, 0, + 9, 10, 32, 34, 36, 37, 47, 95, + 125, 127, 1, 8, 11, 13, 14, 31, + 45, 57, 59, 60, 62, 63, 65, 90, + 97, 122, 0, 9, 10, 32, 34, 125, + 11, 13, 48, 57, 65, 70, 97, 102, + 0, 9, 10, 32, 34, 125, 11, 13, + 48, 57, 65, 70, 97, 102, 0, 9, + 10, 32, 34, 35, 41, 11, 13, 48, + 57, 65, 70, 97, 102, 0, 9, 10, + 32, 34, 35, 41, 11, 13, 48, 57, + 65, 70, 97, 102, 34, 36, 37, 47, + 93, 95, 127, 0, 32, 45, 57, 59, + 60, 62, 63, 65, 90, 97, 122, 93, + 48, 57, 65, 70, 97, 102, 93, 48, + 57, 65, 70, 97, 102, 34, 36, 37, + 43, 47, 93, 95, 127, 0, 32, 45, + 58, 59, 60, 62, 63, 65, 90, 97, + 122, 34, 36, 37, 47, 93, 95, 127, + 0, 32, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 0, 9, 10, 32, + 34, 58, 93, 11, 13, 0, 9, 10, + 32, 34, 125, 11, 13, 0, 9, 10, + 32, 34, 125, 11, 13, 0, 9, 10, + 32, 34, 125, 11, 13, 0, 9, 32, + 34, 125, 10, 13, 0, 9, 10, 32, + 34, 58, 125, 11, 13, 0, 9, 10, + 32, 34, 41, 58, 11, 13, 0, 9, + 10, 32, 34, 35, 41, 58, 11, 13, + 0, 9, 10, 32, 34, 37, 41, 60, + 62, 93, 127, 1, 8, 11, 13, 14, + 31, 0, 9, 10, 32, 34, 35, 41, + 11, 13, 48, 57, 65, 70, 97, 102, + 0, 9, 10, 32, 34, 35, 41, 11, + 13, 48, 57, 65, 70, 97, 102, 34, + 35, 37, 41, 60, 62, 93, 127, 0, + 32, 34, 37, 41, 60, 62, 93, 127, + 0, 32, 35, 41, 48, 57, 65, 70, + 97, 102, 35, 41, 48, 57, 65, 70, + 97, 102, 35, 41, 48, 57, 65, 70, + 97, 102, 35, 41, 48, 57, 65, 70, + 97, 102, 34, 36, 37, 41, 47, 93, + 95, 127, 0, 32, 45, 57, 59, 60, + 62, 63, 65, 90, 97, 122, 34, 35, + 36, 37, 41, 43, 47, 95, 127, 0, + 32, 45, 58, 59, 60, 62, 63, 65, + 90, 97, 122, 34, 35, 36, 37, 41, + 47, 93, 95, 127, 0, 32, 45, 57, + 59, 60, 62, 63, 65, 90, 97, 122, + 0, 9, 10, 32, 34, 93, 11, 13, + 0, 9, 10, 32, 34, 125, 11, 13, + 0, 9, 10, 32, 34, 35, 41, 11, + 13, 0, 9, 32, 34, 35, 41, 10, + 13, 0, 9, 10, 32, 34, 35, 41, + 58, 11, 13, 0, 9, 10, 32, 34, + 35, 41, 11, 13, 0, 9, 10, 32, + 34, 35, 41, 11, 13, 0, 9, 32, + 34, 35, 41, 10, 13, 0, 9, 10, + 32, 34, 41, 11, 13, 0, 9, 10, + 32, 34, 41, 11, 13, 0, 9, 10, + 32, 34, 41, 11, 13, 0, 9, 32, + 34, 41, 10, 13, 0, 9, 10, 32, + 34, 41, 58, 11, 13, 0, 9, 10, + 32, 34, 41, 11, 13, 0, 9, 10, + 32, 34, 41, 58, 11, 13, 0, 9, + 10, 32, 34, 41, 11, 13, 0, 9, + 10, 32, 34, 41, 11, 13, 0, 9, + 32, 34, 41, 10, 13, 0, 9, 10, + 32, 34, 41, 58, 11, 13, 0, 9, + 10, 32, 34, 40, 46, 91, 123, 11, + 13, 0, 9, 10, 32, 34, 11, 13, + 0, 9, 10, 32, 34, 11, 13, 0, + 9, 32, 34, 10, 13, 0, 9, 10, + 32, 34, 11, 13, 0, 9, 10, 32, + 34, 58, 11, 13, 0, 9, 10, 32, + 34, 35, 41, 11, 13, 0, 9, 10, + 32, 34, 35, 41, 11, 13, 0, 9, + 32, 34, 35, 41, 10, 13, 0, 9, + 10, 32, 34, 35, 41, 58, 11, 13, + 0, 9, 10, 32, 34, 35, 41, 11, + 13, 0, 9, 10, 32, 34, 35, 41, + 11, 13, 0, 9, 32, 34, 35, 41, + 10, 13, 0, 9, 10, 32, 34, 41, + 11, 13, 0, 9, 10, 32, 34, 35, + 41, 11, 13, 0, 9, 10, 32, 35, + 41, 11, 13, 0, 9, 32, 35, 41, + 10, 13, 0, 9, 10, 32, 34, 41, + 11, 13, 0, 9, 10, 32, 34, 41, + 11, 13, 0, 9, 10, 32, 41, 11, + 13, 0, 9, 32, 41, 10, 13, 0, + 9, 10, 32, 34, 40, 46, 91, 123, + 11, 13, 0, 9, 10, 32, 34, 11, + 13, 0, 9, 10, 32, 34, 46, 11, + 13, 0, 9, 10, 32, 34, 11, 13, + 0, 9, 10, 32, 34, 11, 13, 0, + 9, 10, 32, 34, 58, 11, 13, 0, + 9, 10, 32, 34, 93, 11, 13, 0, + 9, 10, 32, 34, 93, 11, 13, 0, + 9, 10, 32, 34, 93, 11, 13, 0, + 9, 32, 34, 93, 10, 13, 0, 9, + 10, 32, 34, 58, 93, 11, 13, 0, + 9, 10, 32, 34, 93, 11, 13, 0, + 9, 10, 32, 34, 93, 11, 13, 0, + 9, 32, 34, 93, 10, 13, 0, 9, + 10, 32, 34, 40, 46, 91, 123, 11, + 13, 0, 9, 10, 32, 34, 11, 13, + 0, 9, 10, 32, 34, 11, 13, 0, + 9, 10, 32, 34, 125, 11, 13, 0, + 9, 10, 32, 34, 125, 11, 13, 0, + 9, 10, 32, 34, 125, 11, 13, 0, + 9, 32, 34, 125, 10, 13, 0, 9, + 10, 32, 34, 58, 125, 11, 13, 0, + 9, 10, 32, 34, 125, 11, 13, 0, + 9, 10, 32, 34, 125, 11, 13, 0, + 9, 32, 34, 125, 10, 13, 0, 9, + 10, 32, 34, 125, 11, 13, 0, 9, + 10, 32, 34, 58, 125, 11, 13, 0, + 9, 10, 32, 34, 125, 11, 13, 0, + 9, 10, 32, 34, 125, 11, 13, 0, + 9, 32, 34, 125, 10, 13, 0, 9, + 10, 32, 34, 58, 125, 11, 13, 0, + 9, 10, 32, 34, 125, 11, 13, 0, + 9, 10, 32, 125, 11, 13, 0, 9, + 32, 125, 10, 13, 0, 9, 10, 32, + 34, 40, 46, 91, 123, 11, 13, 0, + 9, 10, 32, 34, 125, 11, 13, 0, + 9, 10, 32, 34, 93, 11, 13, 0, + 9, 10, 32, 34, 58, 93, 11, 13, + 0, 9, 10, 32, 34, 93, 11, 13, + 0, 9, 10, 32, 34, 93, 11, 13, + 0, 9, 32, 34, 93, 10, 13, 0, + 9, 10, 32, 34, 58, 93, 11, 13, + 0, 9, 10, 32, 34, 93, 11, 13, + 0, 9, 10, 32, 93, 11, 13, 0, + 9, 32, 93, 10, 13, 0, 9, 10, + 32, 34, 93, 11, 13, 0, 9, 10, + 32, 34, 41, 11, 13, 0, 9, 10, + 32, 34, 41, 11, 13, 0, 9, 10, + 32, 34, 41, 11, 13, 0, 9, 32, + 34, 41, 10, 13, 0, 9, 10, 32, + 34, 40, 46, 91, 123, 11, 13, 0, + 9, 10, 32, 34, 11, 13, 0, 9, + 10, 32, 34, 46, 11, 13, 0, 9, + 10, 32, 34, 93, 11, 13, 0, 9, + 10, 32, 34, 93, 11, 13, 0, 9, + 10, 32, 34, 93, 11, 13, 0, 9, + 32, 34, 93, 10, 13, 0, 9, 10, + 32, 34, 125, 11, 13, 0, 9, 10, + 32, 34, 125, 11, 13, 0, 9, 10, + 32, 34, 125, 11, 13, 0, 9, 32, + 34, 125, 10, 13, 0, 9, 10, 32, + 34, 35, 41, 11, 13, 0, 9, 10, + 32, 34, 35, 41, 58, 11, 13, 0, + 9, 10, 32, 34, 41, 11, 13, 0, + 9, 10, 32, 34, 41, 11, 13, 0, + 9, 10, 32, 34, 41, 11, 13, 0, + 9, 32, 34, 41, 10, 13, 0, 9, + 10, 32, 34, 41, 11, 13, 0, 9, + 10, 32, 34, 35, 41, 11, 13, 0, + 32, 9, 13, 0, 32, 9, 13, 0, + 32, 42, 9, 13, 0, 9, 10, 32, + 42, 11, 13, 0, 32, 9, 13, 0, + 32, 40, 91, 123, 9, 13, 0, 9, + 10, 32, 45, 11, 13, 0, 9, 10, + 32, 11, 13, 0, 9, 32, 10, 13, + 0, 9, 10, 32, 45, 93, 11, 13, + 0, 9, 10, 32, 35, 41, 45, 11, + 13, 0, 9, 10, 32, 35, 41, 45, + 11, 13, 35, 41, 41, 41, 0, 9, + 10, 32, 35, 41, 11, 13, 0, 9, + 32, 35, 41, 10, 13, 0, 9, 10, + 32, 41, 45, 11, 13, 0, 9, 10, + 32, 41, 45, 11, 13, 0, 9, 10, + 32, 41, 11, 13, 0, 9, 32, 41, + 10, 13, 0, 9, 10, 32, 40, 45, + 91, 123, 11, 13, 0, 9, 10, 32, + 45, 93, 11, 13, 0, 9, 10, 32, + 45, 93, 11, 13, 93, 0, 9, 10, + 32, 93, 11, 13, 0, 9, 32, 93, + 10, 13, 0, 9, 10, 32, 45, 93, + 11, 13, 0, 9, 10, 32, 45, 125, + 11, 13, 0, 9, 10, 32, 45, 125, + 11, 13, 125, 0, 9, 10, 32, 125, + 11, 13, 0, 9, 32, 125, 10, 13, + 0, 9, 10, 32, 45, 93, 125, 11, + 13, 0, 9, 10, 32, 41, 45, 93, + 11, 13, 0, 9, 10, 32, 35, 41, + 45, 93, 11, 13, 93, 48, 57, 61, + 63, 0, 32, 9, 13, 93, 93, 101, + 100, 67, 108, 111, 116, 104, 58, 58, + 86, 69, 82, 83, 73, 79, 78, 93, + 0, 32, 9, 13, 0, 9, 10, 32, + 94, 11, 13, 0, 9, 10, 32, 11, + 13, 0, 9, 32, 10, 13, 93, 0, + 32, 95, 9, 13, 0, 9, 10, 32, + 95, 11, 13, 0, 9, 10, 32, 11, + 13, 0, 9, 32, 10, 13, 0, 9, + 10, 32, 95, 11, 13, 0, 9, 10, + 32, 95, 11, 13, 0, 9, 10, 32, + 11, 13, 0, 9, 32, 10, 13, 0, + 9, 10, 32, 95, 11, 13, 0, 9, + 10, 32, 11, 13, 0, 9, 32, 10, + 13, 95, 96, 96, 0, 32, 9, 13, + 0, 9, 10, 32, 96, 11, 13, 0, + 9, 10, 32, 11, 13, 0, 9, 32, + 10, 13, 96, 96, 0, 32, 9, 13, + 0, 9, 10, 32, 126, 11, 13, 0, + 9, 10, 32, 11, 13, 0, 9, 32, + 10, 13, 93, 99, 111, 100, 101, 62, + 0, 32, 33, 34, 37, 38, 39, 40, + 42, 43, 45, 46, 60, 61, 63, 64, + 91, 92, 94, 95, 96, 124, 126, 9, + 13, 35, 36, 44, 47, 48, 57, 58, + 59, 65, 90, 0, 40, 63, 94, 96, + 124, 126, 9, 13, 32, 33, 35, 38, + 44, 47, 48, 57, 58, 61, 91, 92, + 0, 34, 39, 63, 94, 96, 120, 124, + 126, 9, 13, 32, 40, 44, 47, 48, + 57, 58, 61, 91, 92, 0, 40, 63, + 94, 96, 120, 124, 126, 9, 13, 32, + 33, 35, 38, 44, 47, 48, 57, 58, + 61, 91, 92, 0, 40, 63, 94, 96, + 124, 126, 9, 13, 32, 33, 35, 38, + 44, 61, 91, 92, 40, 45, 46, 91, + 94, 126, 34, 35, 36, 37, 40, 43, + 46, 47, 60, 61, 62, 91, 95, 123, + 127, 0, 32, 45, 57, 59, 63, 65, + 90, 97, 122, 58, 93, 34, 37, 60, + 62, 93, 127, 0, 32, 34, 36, 37, + 47, 93, 95, 127, 0, 32, 45, 57, + 59, 60, 62, 63, 65, 90, 97, 122, + 34, 36, 37, 47, 93, 95, 127, 0, + 32, 45, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 34, 36, 37, 47, 95, + 127, 0, 32, 45, 57, 59, 60, 62, + 63, 65, 90, 97, 122, 0, 32, 34, + 40, 46, 63, 91, 92, 94, 96, 123, + 124, 126, 9, 13, 33, 38, 44, 47, + 48, 57, 58, 61, 0, 9, 10, 32, + 34, 40, 63, 94, 96, 124, 126, 11, + 13, 33, 38, 44, 47, 48, 57, 58, + 61, 91, 92, 0, 9, 10, 32, 34, + 58, 93, 11, 13, 34, 37, 60, 62, + 127, 0, 32, 34, 36, 37, 47, 95, + 127, 0, 32, 45, 57, 59, 60, 62, + 63, 65, 90, 97, 122, 34, 36, 37, + 47, 95, 127, 0, 32, 45, 57, 59, + 60, 62, 63, 65, 90, 97, 122, 0, + 9, 10, 32, 34, 11, 13, 93, 0, + 9, 10, 32, 34, 58, 93, 11, 13, + 0, 9, 10, 32, 34, 58, 93, 11, + 13, 0, 9, 10, 32, 34, 11, 13, + 0, 9, 10, 32, 34, 58, 93, 11, + 13, 0, 9, 10, 32, 34, 40, 58, + 63, 93, 96, 124, 126, 11, 13, 33, + 38, 44, 47, 48, 57, 59, 61, 91, + 94, 0, 9, 10, 32, 34, 40, 63, + 94, 96, 124, 126, 11, 13, 33, 38, + 44, 47, 48, 57, 58, 61, 91, 92, + 0, 9, 10, 32, 34, 40, 58, 63, + 94, 96, 124, 126, 11, 13, 33, 38, + 44, 47, 48, 57, 59, 61, 91, 92, + 0, 9, 10, 32, 34, 39, 63, 94, + 96, 120, 124, 126, 11, 13, 33, 40, + 44, 47, 48, 57, 58, 61, 91, 92, + 0, 9, 10, 32, 34, 40, 58, 63, + 94, 96, 120, 124, 126, 11, 13, 33, + 38, 44, 47, 48, 57, 59, 61, 91, + 92, 0, 9, 10, 32, 34, 40, 63, + 94, 96, 124, 126, 11, 13, 33, 38, + 44, 61, 91, 92, 0, 9, 10, 32, + 34, 40, 63, 94, 96, 120, 124, 126, + 11, 13, 33, 38, 44, 47, 48, 57, + 58, 61, 91, 92, 0, 9, 10, 32, + 34, 39, 63, 94, 96, 120, 124, 126, + 11, 13, 33, 40, 44, 47, 48, 57, + 58, 61, 91, 92, 0, 9, 10, 32, + 34, 40, 58, 63, 93, 96, 120, 124, + 126, 11, 13, 33, 38, 44, 47, 48, + 57, 59, 61, 91, 94, 0, 9, 10, + 32, 34, 40, 63, 94, 96, 120, 124, + 126, 11, 13, 33, 38, 44, 47, 48, + 57, 58, 61, 91, 92, 0, 9, 10, + 32, 34, 40, 63, 94, 96, 124, 126, + 11, 13, 33, 38, 44, 61, 91, 92, + 0, 9, 10, 32, 34, 40, 58, 63, + 94, 96, 124, 126, 11, 13, 33, 38, + 44, 47, 48, 57, 59, 61, 91, 92, + 0, 9, 10, 32, 34, 40, 63, 94, + 96, 124, 126, 11, 13, 33, 38, 44, + 47, 48, 57, 58, 61, 91, 92, 0, + 9, 10, 32, 34, 58, 93, 11, 13, + 0, 9, 10, 32, 34, 11, 13, 0, + 9, 10, 32, 34, 58, 93, 11, 13, + 0, 9, 10, 32, 34, 58, 93, 11, + 13, 0, 9, 10, 32, 34, 11, 13, + 0, 9, 10, 32, 34, 40, 58, 63, + 93, 96, 124, 126, 11, 13, 33, 38, + 44, 47, 48, 57, 59, 61, 91, 94, + 0, 9, 10, 32, 34, 40, 63, 94, + 96, 124, 126, 11, 13, 33, 38, 44, + 47, 48, 57, 58, 61, 91, 92, 0, + 9, 10, 32, 34, 40, 58, 63, 94, + 96, 124, 126, 11, 13, 33, 38, 44, + 47, 48, 57, 59, 61, 91, 92, 0, + 9, 10, 32, 34, 40, 58, 63, 94, + 96, 124, 126, 11, 13, 33, 38, 44, + 47, 48, 57, 59, 61, 91, 92, 0, + 9, 10, 32, 34, 39, 63, 94, 96, + 120, 124, 126, 11, 13, 33, 40, 44, + 47, 48, 57, 58, 61, 91, 92, 0, + 9, 10, 32, 34, 40, 58, 63, 94, + 96, 120, 124, 126, 11, 13, 33, 38, + 44, 47, 48, 57, 59, 61, 91, 92, + 0, 9, 10, 32, 34, 40, 63, 94, + 96, 124, 126, 11, 13, 33, 38, 44, + 61, 91, 92, 0, 9, 10, 32, 34, + 40, 63, 94, 96, 120, 124, 126, 11, + 13, 33, 38, 44, 47, 48, 57, 58, + 61, 91, 92, 0, 9, 10, 32, 34, + 39, 63, 94, 96, 120, 124, 126, 11, + 13, 33, 40, 44, 47, 48, 57, 58, + 61, 91, 92, 0, 9, 10, 32, 34, + 40, 58, 63, 93, 96, 120, 124, 126, + 11, 13, 33, 38, 44, 47, 48, 57, + 59, 61, 91, 94, 0, 9, 10, 32, + 34, 40, 63, 94, 96, 120, 124, 126, + 11, 13, 33, 38, 44, 47, 48, 57, + 58, 61, 91, 92, 0, 9, 10, 32, + 34, 40, 63, 94, 96, 124, 126, 11, + 13, 33, 38, 44, 61, 91, 92, 0, + 9, 10, 32, 34, 40, 58, 63, 93, + 96, 124, 126, 11, 13, 33, 38, 44, + 47, 48, 57, 59, 61, 91, 94, 34, + 37, 41, 60, 62, 127, 0, 32, 0, + 32, 34, 37, 40, 46, 60, 62, 91, + 123, 127, 1, 8, 9, 13, 14, 31, + 0, 9, 10, 32, 34, 37, 60, 62, + 127, 1, 8, 11, 13, 14, 31, 0, + 9, 10, 32, 34, 35, 37, 41, 60, + 62, 127, 1, 8, 11, 13, 14, 31, + 34, 37, 60, 62, 93, 127, 0, 32, + 34, 37, 60, 62, 125, 127, 0, 32, + 34, 36, 37, 47, 95, 125, 127, 0, + 32, 45, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 0, 32, 34, 36, 37, + 40, 46, 47, 91, 95, 123, 127, 1, + 8, 9, 13, 14, 31, 45, 57, 59, + 60, 62, 63, 65, 90, 97, 122, 0, + 9, 10, 32, 34, 36, 37, 47, 95, + 127, 1, 8, 11, 13, 14, 31, 45, + 57, 59, 60, 62, 63, 65, 90, 97, + 122, 0, 9, 10, 32, 34, 35, 36, + 37, 41, 47, 95, 127, 1, 8, 11, + 13, 14, 31, 45, 57, 59, 60, 62, + 63, 65, 90, 97, 122, 0, 9, 10, + 32, 34, 36, 37, 41, 47, 95, 127, + 1, 8, 11, 13, 14, 31, 45, 57, + 59, 60, 62, 63, 65, 90, 97, 122, + 0, 9, 10, 32, 34, 36, 37, 41, + 47, 95, 127, 1, 8, 11, 13, 14, + 31, 45, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 34, 36, 37, 41, 47, + 95, 127, 0, 32, 45, 57, 59, 60, + 62, 63, 65, 90, 97, 122, 34, 36, + 37, 41, 47, 95, 127, 0, 32, 45, + 57, 59, 60, 62, 63, 65, 90, 97, + 122, 0, 9, 10, 32, 34, 37, 41, + 60, 62, 127, 1, 8, 11, 13, 14, + 31, 0, 9, 10, 32, 34, 37, 40, + 46, 60, 62, 91, 123, 127, 1, 8, + 11, 13, 14, 31, 0, 9, 10, 32, + 34, 37, 46, 60, 62, 127, 1, 8, + 11, 13, 14, 31, 0, 9, 10, 32, + 34, 37, 60, 62, 93, 127, 1, 8, + 11, 13, 14, 31, 0, 9, 10, 32, + 34, 37, 60, 62, 93, 127, 1, 8, + 11, 13, 14, 31, 0, 9, 10, 32, + 34, 37, 60, 62, 125, 127, 1, 8, + 11, 13, 14, 31, 0, 9, 10, 32, + 34, 37, 60, 62, 125, 127, 1, 8, + 11, 13, 14, 31, 0, 9, 10, 32, + 34, 36, 37, 40, 46, 47, 91, 95, + 123, 127, 1, 8, 11, 13, 14, 31, + 45, 57, 59, 60, 62, 63, 65, 90, + 97, 122, 0, 9, 10, 32, 34, 36, + 37, 47, 93, 95, 127, 1, 8, 11, + 13, 14, 31, 45, 57, 59, 60, 62, + 63, 65, 90, 97, 122, 0, 9, 10, + 32, 34, 36, 37, 47, 93, 95, 127, + 1, 8, 11, 13, 14, 31, 45, 57, + 59, 60, 62, 63, 65, 90, 97, 122, + 0, 9, 10, 32, 34, 36, 37, 47, + 95, 125, 127, 1, 8, 11, 13, 14, + 31, 45, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 0, 9, 10, 32, 34, + 36, 37, 47, 95, 125, 127, 1, 8, + 11, 13, 14, 31, 45, 57, 59, 60, + 62, 63, 65, 90, 97, 122, 34, 36, + 37, 47, 95, 125, 127, 0, 32, 45, + 57, 59, 60, 62, 63, 65, 90, 97, + 122, 34, 36, 37, 47, 93, 95, 127, + 0, 32, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 34, 36, 37, 47, + 93, 95, 127, 0, 32, 45, 57, 59, + 60, 62, 63, 65, 90, 97, 122, 0, + 9, 10, 32, 34, 37, 41, 60, 62, + 127, 1, 8, 11, 13, 14, 31, 34, + 35, 37, 41, 60, 62, 127, 0, 32, + 34, 37, 41, 60, 62, 127, 0, 32, + 34, 36, 37, 41, 47, 95, 127, 0, + 32, 45, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 34, 35, 36, 37, 41, + 47, 95, 127, 0, 32, 45, 57, 59, + 60, 62, 63, 65, 90, 97, 122, 0, + 9, 10, 32, 34, 41, 58, 93, 11, + 13, 0, 9, 10, 32, 34, 41, 11, + 13, 0, 9, 10, 32, 34, 58, 93, + 11, 13, 0, 9, 10, 32, 34, 58, + 93, 11, 13, 0, 9, 10, 32, 34, + 58, 93, 11, 13, 0, 9, 10, 32, + 34, 35, 41, 58, 93, 11, 13, 0, + 9, 10, 32, 34, 35, 41, 11, 13, + 0, 9, 10, 32, 34, 58, 93, 11, + 13, 0, 9, 10, 32, 34, 58, 93, + 11, 13, 0, 9, 10, 32, 34, 58, + 93, 11, 13, 0, 9, 10, 32, 34, + 58, 93, 11, 13, 0, 9, 10, 32, + 34, 58, 93, 125, 11, 13, 0, 9, + 10, 32, 34, 125, 11, 13, 93, 125, + 125, 0, 9, 10, 32, 34, 58, 93, + 125, 11, 13, 0, 9, 10, 32, 34, + 58, 93, 125, 11, 13, 0, 9, 10, + 32, 34, 125, 11, 13, 0, 9, 10, + 32, 34, 58, 93, 125, 11, 13, 0, + 9, 10, 32, 34, 58, 93, 11, 13, + 0, 9, 10, 32, 34, 40, 46, 91, + 123, 11, 13, 93, 0, 32, 34, 40, + 46, 91, 123, 9, 13, 0, 9, 10, + 32, 34, 58, 93, 11, 13, 0, 9, + 10, 32, 34, 58, 93, 11, 13, 0, + 9, 10, 32, 34, 40, 46, 91, 123, + 11, 13, 0, 9, 10, 32, 34, 58, + 93, 11, 13, 41, 93, 41, 35, 41, + 93, 35, 41, 0, 9, 10, 32, 34, + 58, 93, 11, 13, 0, 9, 10, 32, + 34, 58, 93, 11, 13, 0, 9, 10, + 32, 34, 58, 93, 125, 11, 13, 0, + 9, 10, 32, 34, 41, 58, 93, 11, + 13, 0, 9, 10, 32, 34, 35, 41, + 58, 93, 11, 13, 0, 9, 10, 32, + 34, 41, 58, 93, 11, 13, 0, 9, + 10, 32, 34, 41, 58, 93, 11, 13, + 0, 9, 10, 32, 34, 41, 11, 13, + 0, 9, 10, 32, 34, 35, 41, 58, + 93, 11, 13, 0, 9, 10, 32, 34, + 35, 41, 58, 93, 11, 13, 0, 9, + 10, 32, 34, 35, 41, 11, 13, 0, + 9, 10, 32, 34, 41, 58, 93, 11, + 13, 0, 9, 10, 32, 34, 35, 41, + 58, 93, 11, 13, 0, 9, 10, 32, + 34, 40, 63, 94, 96, 125, 11, 13, + 33, 38, 44, 47, 48, 57, 58, 61, + 91, 92, 124, 126, 0, 9, 10, 32, + 34, 40, 63, 94, 96, 125, 11, 13, + 33, 38, 44, 47, 48, 57, 58, 61, + 91, 92, 124, 126, 0, 9, 10, 32, + 34, 40, 58, 63, 93, 96, 125, 11, + 13, 33, 38, 44, 47, 48, 57, 59, + 61, 91, 94, 124, 126, 0, 9, 10, + 32, 34, 40, 63, 94, 96, 125, 11, + 13, 33, 38, 44, 47, 48, 57, 58, + 61, 91, 92, 124, 126, 0, 9, 10, + 32, 34, 40, 58, 63, 94, 96, 125, + 11, 13, 33, 38, 44, 47, 48, 57, + 59, 61, 91, 92, 124, 126, 0, 9, + 10, 32, 34, 39, 63, 94, 96, 120, + 125, 11, 13, 33, 40, 44, 47, 48, + 57, 58, 61, 91, 92, 124, 126, 0, + 9, 10, 32, 34, 40, 58, 63, 94, + 96, 120, 125, 11, 13, 33, 38, 44, + 47, 48, 57, 59, 61, 91, 92, 124, + 126, 0, 9, 10, 32, 34, 40, 63, + 94, 96, 125, 11, 13, 33, 38, 44, + 61, 91, 92, 124, 126, 0, 9, 10, + 32, 34, 40, 46, 63, 91, 92, 94, + 96, 123, 124, 126, 11, 13, 33, 38, + 44, 47, 48, 57, 58, 61, 0, 9, + 10, 32, 34, 40, 63, 94, 96, 124, + 126, 11, 13, 33, 38, 44, 47, 48, + 57, 58, 61, 91, 92, 0, 9, 10, + 32, 34, 40, 58, 63, 94, 96, 124, + 126, 11, 13, 33, 38, 44, 47, 48, + 57, 59, 61, 91, 92, 0, 9, 10, + 32, 34, 39, 63, 94, 96, 120, 124, + 126, 11, 13, 33, 40, 44, 47, 48, + 57, 58, 61, 91, 92, 0, 9, 10, + 32, 34, 40, 58, 63, 94, 96, 120, + 124, 126, 11, 13, 33, 38, 44, 47, + 48, 57, 59, 61, 91, 92, 0, 9, + 10, 32, 34, 40, 63, 94, 96, 120, + 124, 126, 11, 13, 33, 38, 44, 47, + 48, 57, 58, 61, 91, 92, 0, 9, + 10, 32, 34, 40, 63, 94, 96, 124, + 126, 11, 13, 33, 38, 44, 61, 91, + 92, 0, 9, 10, 32, 34, 40, 58, + 63, 94, 96, 124, 126, 11, 13, 33, + 38, 44, 47, 48, 57, 59, 61, 91, + 92, 0, 9, 10, 32, 34, 40, 58, + 63, 94, 96, 124, 126, 11, 13, 33, + 38, 44, 47, 48, 57, 59, 61, 91, + 92, 0, 9, 10, 32, 34, 40, 63, + 94, 96, 125, 11, 13, 33, 38, 44, + 47, 48, 57, 58, 61, 91, 92, 124, + 126, 0, 9, 10, 32, 34, 40, 63, + 94, 96, 125, 11, 13, 33, 38, 44, + 47, 48, 57, 58, 61, 91, 92, 124, + 126, 0, 9, 10, 32, 34, 40, 58, + 63, 94, 96, 125, 11, 13, 33, 38, + 44, 47, 48, 57, 59, 61, 91, 92, + 124, 126, 0, 9, 10, 32, 34, 39, + 63, 94, 96, 120, 125, 11, 13, 33, + 40, 44, 47, 48, 57, 58, 61, 91, + 92, 124, 126, 0, 9, 10, 32, 34, + 40, 58, 63, 94, 96, 120, 125, 11, + 13, 33, 38, 44, 47, 48, 57, 59, + 61, 91, 92, 124, 126, 0, 9, 10, + 32, 34, 40, 63, 94, 96, 120, 125, + 11, 13, 33, 38, 44, 47, 48, 57, + 58, 61, 91, 92, 124, 126, 0, 9, + 10, 32, 34, 40, 63, 94, 96, 125, + 11, 13, 33, 38, 44, 61, 91, 92, + 124, 126, 0, 9, 10, 32, 34, 40, + 46, 63, 91, 92, 94, 96, 123, 124, + 126, 11, 13, 33, 38, 44, 47, 48, + 57, 58, 61, 0, 9, 10, 32, 34, + 40, 58, 63, 94, 96, 124, 126, 11, + 13, 33, 38, 44, 47, 48, 57, 59, + 61, 91, 92, 0, 9, 10, 32, 34, + 40, 63, 94, 96, 120, 125, 11, 13, + 33, 38, 44, 47, 48, 57, 58, 61, + 91, 92, 124, 126, 0, 9, 10, 32, + 34, 39, 63, 94, 96, 120, 125, 11, + 13, 33, 40, 44, 47, 48, 57, 58, + 61, 91, 92, 124, 126, 0, 9, 10, + 32, 34, 40, 58, 63, 93, 96, 120, + 125, 11, 13, 33, 38, 44, 47, 48, + 57, 59, 61, 91, 94, 124, 126, 0, + 9, 10, 32, 34, 40, 63, 94, 96, + 120, 125, 11, 13, 33, 38, 44, 47, + 48, 57, 58, 61, 91, 92, 124, 126, + 0, 9, 10, 32, 34, 40, 63, 94, + 96, 125, 11, 13, 33, 38, 44, 61, + 91, 92, 124, 126, 0, 9, 10, 32, + 34, 40, 46, 63, 91, 92, 94, 96, + 123, 124, 126, 11, 13, 33, 38, 44, + 47, 48, 57, 58, 61, 0, 9, 10, + 32, 34, 40, 58, 63, 93, 96, 124, + 126, 11, 13, 33, 38, 44, 47, 48, + 57, 59, 61, 91, 94, 0, 32, 9, + 13, 93, 35, 65, 90, 97, 122, 0, + 32, 33, 40, 63, 94, 96, 124, 126, + 9, 13, 35, 38, 44, 47, 48, 57, + 58, 61, 91, 92, 0, 9, 10, 32, + 33, 39, 63, 94, 96, 124, 126, 11, + 13, 35, 40, 44, 47, 48, 57, 58, + 61, 91, 92, 93, 0, 40, 63, 93, + 96, 124, 126, 9, 13, 32, 33, 35, + 38, 44, 47, 48, 57, 58, 61, 91, + 94, 0, 9, 10, 32, 34, 39, 63, + 94, 96, 120, 124, 126, 11, 13, 33, + 40, 44, 47, 48, 57, 58, 61, 91, + 92, 0, 9, 10, 32, 33, 39, 63, + 94, 96, 120, 124, 126, 11, 13, 35, + 40, 44, 47, 48, 57, 58, 61, 91, + 92, 0, 9, 10, 32, 33, 39, 63, + 94, 96, 124, 126, 11, 13, 35, 40, + 44, 61, 91, 92, 0, 40, 63, 93, + 96, 120, 124, 126, 9, 13, 32, 33, + 35, 38, 44, 47, 48, 57, 58, 61, + 91, 94, 67, 82, 84, 99, 114, 116, + 0, 32, 33, 40, 42, 63, 94, 96, + 124, 126, 9, 13, 35, 38, 44, 47, + 48, 57, 58, 61, 91, 92, 0, 9, + 10, 32, 33, 40, 42, 63, 94, 96, + 124, 126, 11, 13, 35, 38, 44, 47, + 48, 57, 58, 61, 91, 92, 93, 0, + 40, 63, 93, 96, 124, 126, 9, 13, + 32, 33, 35, 38, 44, 47, 48, 57, + 58, 61, 91, 94, 0, 9, 10, 32, + 34, 39, 42, 63, 94, 96, 120, 124, + 126, 11, 13, 33, 40, 44, 47, 48, + 57, 58, 61, 91, 92, 0, 9, 10, + 32, 33, 40, 42, 63, 94, 96, 120, + 124, 126, 11, 13, 35, 38, 44, 47, + 48, 57, 58, 61, 91, 92, 0, 9, + 10, 32, 33, 40, 42, 63, 94, 96, + 124, 126, 11, 13, 35, 38, 44, 61, + 91, 92, 0, 9, 10, 32, 33, 40, + 42, 63, 94, 96, 124, 126, 11, 13, + 35, 38, 44, 47, 48, 57, 58, 61, + 91, 92, 0, 9, 10, 32, 33, 40, + 42, 63, 94, 96, 124, 126, 11, 13, + 35, 38, 44, 47, 48, 57, 58, 61, + 91, 92, 42, 93, 93, 0, 40, 42, + 63, 93, 96, 124, 126, 9, 13, 32, + 33, 35, 38, 44, 47, 48, 57, 58, + 61, 91, 94, 0, 40, 63, 93, 96, + 124, 126, 9, 13, 32, 33, 35, 38, + 44, 47, 48, 57, 58, 61, 91, 94, + 0, 9, 10, 32, 34, 39, 42, 63, + 94, 96, 120, 124, 126, 11, 13, 33, + 40, 44, 47, 48, 57, 58, 61, 91, + 92, 0, 9, 10, 32, 33, 40, 42, + 63, 94, 96, 120, 124, 126, 11, 13, + 35, 38, 44, 47, 48, 57, 58, 61, + 91, 92, 0, 9, 10, 32, 33, 40, + 42, 63, 94, 96, 124, 126, 11, 13, + 35, 38, 44, 61, 91, 92, 0, 9, + 10, 32, 33, 40, 42, 63, 93, 96, + 124, 126, 11, 13, 35, 38, 44, 47, + 48, 57, 58, 61, 91, 94, 0, 9, + 10, 32, 33, 40, 42, 63, 94, 96, + 124, 126, 11, 13, 35, 38, 44, 47, + 48, 57, 58, 61, 91, 92, 0, 40, + 42, 63, 94, 96, 124, 126, 9, 13, + 32, 33, 35, 38, 44, 47, 48, 57, + 58, 61, 91, 92, 0, 9, 10, 32, + 34, 39, 42, 63, 94, 96, 120, 124, + 126, 11, 13, 33, 40, 44, 47, 48, + 57, 58, 61, 91, 92, 0, 9, 10, + 32, 33, 40, 42, 63, 94, 96, 120, + 124, 126, 11, 13, 35, 38, 44, 47, + 48, 57, 58, 61, 91, 92, 0, 9, + 10, 32, 33, 40, 42, 63, 94, 96, + 124, 126, 11, 13, 35, 38, 44, 61, + 91, 92, 0, 32, 33, 40, 63, 94, + 96, 124, 126, 9, 13, 35, 38, 44, + 47, 48, 57, 58, 61, 91, 92, 0, + 9, 10, 32, 33, 40, 43, 63, 94, + 96, 124, 126, 11, 13, 35, 38, 44, + 47, 48, 57, 58, 61, 91, 92, 93, + 0, 40, 63, 93, 96, 124, 126, 9, + 13, 32, 33, 35, 38, 44, 47, 48, + 57, 58, 61, 91, 94, 0, 9, 10, + 32, 34, 39, 43, 63, 94, 96, 120, + 124, 126, 11, 13, 33, 40, 44, 47, + 48, 57, 58, 61, 91, 92, 0, 9, + 10, 32, 33, 40, 43, 63, 94, 96, + 120, 124, 126, 11, 13, 35, 38, 44, + 47, 48, 57, 58, 61, 91, 92, 0, + 9, 10, 32, 33, 40, 43, 63, 94, + 96, 124, 126, 11, 13, 35, 38, 44, + 61, 91, 92, 45, 62, 32, 34, 39, + 46, 120, 48, 57, 32, 34, 39, 46, + 120, 48, 57, 34, 39, 46, 48, 57, + 32, 120, 32, 34, 39, 46, 120, 48, + 57, 0, 32, 34, 39, 46, 63, 94, + 96, 120, 124, 126, 9, 13, 33, 40, + 44, 47, 48, 57, 58, 61, 91, 92, + 0, 32, 33, 40, 63, 94, 96, 120, + 124, 126, 9, 13, 35, 38, 44, 47, + 48, 57, 58, 61, 91, 92, 0, 40, + 46, 63, 94, 96, 124, 126, 9, 13, + 32, 33, 35, 38, 44, 47, 48, 57, + 58, 61, 91, 92, 33, 47, 58, 95, + 99, 110, 115, 65, 90, 97, 122, 34, + 39, 34, 39, 34, 39, 34, 39, 0, + 60, 10, 0, 60, 0, 60, 0, 60, + 0, 60, 10, 34, 34, 0, 34, 60, + 0, 34, 60, 10, 39, 39, 0, 39, + 60, 0, 39, 60, 10, 34, 39, 34, + 39, 0, 34, 39, 60, 0, 34, 39, + 60, 0, 34, 60, 0, 34, 60, 0, + 39, 60, 0, 39, 60, 0, 34, 39, + 60, 0, 34, 39, 60, 61, 93, 63, + 93, 0, 32, 33, 40, 63, 94, 96, + 124, 126, 9, 13, 35, 38, 44, 47, + 48, 57, 58, 61, 91, 92, 0, 9, + 10, 32, 33, 40, 63, 64, 94, 96, + 124, 126, 11, 13, 35, 38, 44, 47, + 48, 57, 58, 61, 91, 92, 93, 0, + 9, 10, 32, 34, 39, 63, 64, 94, + 96, 120, 124, 126, 11, 13, 33, 40, + 44, 47, 48, 57, 58, 61, 91, 92, + 0, 9, 10, 32, 33, 40, 63, 64, + 94, 96, 120, 124, 126, 11, 13, 35, + 38, 44, 47, 48, 57, 58, 61, 91, + 92, 0, 40, 63, 93, 96, 124, 126, + 9, 13, 32, 33, 35, 38, 44, 47, + 48, 57, 58, 61, 91, 94, 0, 9, + 10, 32, 33, 40, 63, 64, 94, 96, + 124, 126, 11, 13, 35, 38, 44, 61, + 91, 92, 0, 40, 63, 94, 96, 124, + 126, 9, 13, 32, 33, 35, 38, 44, + 47, 48, 57, 58, 61, 65, 90, 91, + 92, 0, 34, 39, 63, 94, 96, 120, + 124, 126, 9, 13, 32, 40, 44, 47, + 48, 57, 58, 61, 65, 90, 91, 92, + 0, 34, 39, 40, 63, 94, 96, 120, + 124, 126, 9, 13, 32, 38, 44, 47, + 48, 57, 58, 61, 65, 90, 91, 92, + 0, 40, 63, 94, 96, 124, 126, 9, + 13, 32, 33, 35, 38, 44, 47, 48, + 57, 58, 61, 65, 90, 91, 92, 0, + 40, 63, 94, 96, 124, 126, 9, 13, + 32, 33, 35, 38, 44, 47, 48, 57, + 58, 61, 65, 90, 91, 92, 0, 40, + 63, 94, 96, 124, 126, 9, 13, 32, + 33, 35, 38, 44, 47, 48, 57, 58, + 61, 65, 90, 91, 92, 33, 34, 37, + 39, 42, 43, 45, 61, 63, 64, 67, + 82, 84, 94, 95, 96, 99, 114, 116, + 126, 48, 57, 0, 9, 10, 32, 34, + 58, 93, 11, 13, 0, 9, 10, 32, + 34, 11, 13, 0, 9, 10, 32, 34, + 58, 93, 11, 13, 0, 9, 10, 32, + 34, 58, 93, 11, 13, 0, 9, 10, + 32, 34, 11, 13, 0, 9, 10, 32, + 34, 58, 93, 11, 13, 0, 9, 10, + 32, 34, 58, 93, 11, 13, 0, 9, + 10, 32, 34, 11, 13, 0, 9, 10, + 32, 34, 58, 93, 11, 13, 0, 9, + 10, 32, 34, 58, 93, 11, 13, 0, + 9, 10, 32, 34, 11, 13, 0, 9, + 10, 32, 34, 58, 93, 11, 13, 0, + 9, 10, 32, 34, 41, 58, 93, 11, + 13, 0, 9, 10, 32, 34, 41, 11, + 13, 0, 9, 10, 32, 34, 58, 93, + 11, 13, 0, 9, 10, 32, 34, 58, + 93, 11, 13, 0, 9, 10, 32, 34, + 58, 93, 11, 13, 0, 9, 10, 32, + 34, 35, 41, 58, 93, 11, 13, 0, + 9, 10, 32, 34, 35, 41, 11, 13, + 0, 9, 10, 32, 34, 58, 93, 11, + 13, 0, 9, 10, 32, 34, 58, 93, + 11, 13, 0, 9, 10, 32, 34, 58, + 93, 11, 13, 0, 9, 10, 32, 34, + 58, 93, 125, 11, 13, 0, 9, 10, + 32, 34, 125, 11, 13, 93, 125, 125, + 0, 9, 10, 32, 34, 58, 93, 125, + 11, 13, 0, 9, 10, 32, 34, 58, + 93, 125, 11, 13, 0, 9, 10, 32, + 34, 125, 11, 13, 0, 9, 10, 32, + 34, 58, 93, 125, 11, 13, 0, 9, + 10, 32, 34, 58, 93, 11, 13, 0, + 9, 10, 32, 34, 40, 46, 91, 123, + 11, 13, 93, 0, 32, 34, 40, 46, + 91, 123, 9, 13, 0, 9, 10, 32, + 34, 58, 93, 11, 13, 0, 9, 10, + 32, 34, 58, 93, 11, 13, 0, 9, + 10, 32, 34, 40, 46, 91, 123, 11, + 13, 0, 9, 10, 32, 34, 58, 93, + 11, 13, 41, 93, 41, 35, 41, 93, + 35, 41, 0, 9, 10, 32, 34, 58, + 93, 11, 13, 0, 9, 10, 32, 34, + 58, 93, 11, 13, 0, 9, 10, 32, + 34, 58, 93, 125, 11, 13, 0, 9, + 10, 32, 34, 41, 58, 93, 11, 13, + 0, 9, 10, 32, 34, 35, 41, 58, + 93, 11, 13, 0, 9, 10, 32, 34, + 41, 58, 93, 11, 13, 0, 9, 10, + 32, 34, 41, 58, 93, 11, 13, 0, + 9, 10, 32, 34, 41, 11, 13, 0, + 9, 10, 32, 34, 35, 41, 58, 93, + 11, 13, 0, 9, 10, 32, 34, 35, + 41, 58, 93, 11, 13, 0, 9, 10, + 32, 34, 35, 41, 11, 13, 0, 9, + 10, 32, 34, 41, 58, 93, 11, 13, + 0, 9, 10, 32, 34, 35, 41, 58, + 93, 11, 13, 0, 9, 10, 32, 42, + 93, 11, 13, 0, 9, 10, 32, 42, + 11, 13, 93, 93, 95, 93, 0, 9, + 10, 32, 93, 95, 11, 13, 0, 9, + 10, 32, 95, 11, 13, 93, 0, 32, + 40, 91, 123, 9, 13, 0, 32, 33, + 40, 63, 95, 124, 126, 9, 13, 35, + 38, 44, 47, 48, 57, 58, 61, 91, + 92, 94, 96, 0, 9, 10, 32, 33, + 40, 63, 95, 124, 126, 11, 13, 35, + 38, 44, 47, 48, 57, 58, 61, 91, + 92, 94, 96, 0, 9, 10, 32, 34, + 39, 63, 95, 120, 124, 126, 11, 13, + 33, 40, 44, 47, 48, 57, 58, 61, + 91, 92, 94, 96, 0, 9, 10, 32, + 33, 40, 63, 95, 120, 124, 126, 11, + 13, 35, 38, 44, 47, 48, 57, 58, + 61, 91, 92, 94, 96, 0, 40, 63, + 93, 96, 124, 126, 9, 13, 32, 33, + 35, 38, 44, 47, 48, 57, 58, 61, + 91, 94, 0, 9, 10, 32, 33, 40, + 63, 95, 124, 126, 11, 13, 35, 38, + 44, 61, 91, 92, 94, 96, 0, 9, + 10, 32, 33, 40, 63, 95, 124, 126, + 11, 13, 35, 38, 44, 47, 48, 57, + 58, 61, 91, 92, 94, 96, 0, 9, + 10, 32, 33, 40, 63, 95, 124, 126, + 11, 13, 35, 38, 44, 47, 48, 57, + 58, 61, 91, 92, 94, 96, 0, 9, + 10, 32, 34, 39, 63, 95, 120, 124, + 126, 11, 13, 33, 40, 44, 47, 48, + 57, 58, 61, 91, 92, 94, 96, 0, + 9, 10, 32, 33, 40, 63, 95, 120, + 124, 126, 11, 13, 35, 38, 44, 47, + 48, 57, 58, 61, 91, 92, 94, 96, + 0, 40, 63, 93, 95, 124, 126, 9, + 13, 32, 33, 35, 38, 44, 47, 48, + 57, 58, 61, 91, 96, 0, 40, 63, + 93, 96, 124, 126, 9, 13, 32, 33, + 35, 38, 44, 47, 48, 57, 58, 61, + 91, 94, 0, 9, 10, 32, 33, 40, + 63, 95, 124, 126, 11, 13, 35, 38, + 44, 61, 91, 92, 94, 96, 0, 9, + 10, 32, 33, 40, 63, 93, 95, 124, + 126, 11, 13, 35, 38, 44, 47, 48, + 57, 58, 61, 91, 96, 0, 9, 10, + 32, 33, 40, 63, 95, 124, 126, 11, + 13, 35, 38, 44, 47, 48, 57, 58, + 61, 91, 92, 94, 96, 0, 9, 10, + 32, 34, 39, 63, 95, 120, 124, 126, + 11, 13, 33, 40, 44, 47, 48, 57, + 58, 61, 91, 92, 94, 96, 0, 9, + 10, 32, 33, 40, 63, 95, 120, 124, + 126, 11, 13, 35, 38, 44, 47, 48, + 57, 58, 61, 91, 92, 94, 96, 0, + 40, 63, 95, 124, 126, 9, 13, 32, + 33, 35, 38, 44, 47, 48, 57, 58, + 61, 91, 92, 94, 96, 0, 9, 10, + 32, 33, 40, 63, 95, 124, 126, 11, + 13, 35, 38, 44, 61, 91, 92, 94, + 96, 96, 0, 32, 40, 91, 123, 9, + 13, 0, 60, 47, 0 +}; + +static const char _redcloth_inline_single_lengths[] = { + 0, 4, 1, 2, 1, 6, 5, 4, + 3, 8, 7, 7, 2, 1, 1, 5, + 6, 6, 1, 5, 4, 8, 6, 6, + 1, 5, 4, 7, 8, 6, 5, 6, + 6, 5, 4, 9, 9, 5, 4, 5, + 4, 3, 5, 5, 9, 8, 1, 1, + 4, 1, 2, 1, 5, 5, 4, 3, + 8, 7, 7, 2, 1, 1, 6, 5, + 6, 6, 5, 4, 8, 6, 6, 1, + 5, 4, 8, 6, 6, 1, 5, 4, + 7, 9, 9, 5, 5, 4, 3, 8, + 7, 7, 2, 1, 1, 6, 5, 6, + 6, 5, 4, 8, 6, 6, 1, 5, + 4, 8, 6, 6, 1, 5, 4, 7, + 9, 9, 6, 6, 8, 6, 0, 0, + 0, 0, 0, 0, 7, 0, 0, 1, + 2, 1, 0, 0, 7, 0, 0, 8, + 8, 2, 1, 1, 12, 7, 7, 8, + 7, 7, 7, 1, 7, 1, 1, 11, + 7, 7, 7, 1, 1, 1, 1, 1, + 7, 7, 1, 1, 7, 7, 7, 1, + 1, 1, 1, 8, 7, 2, 2, 2, + 2, 12, 12, 12, 5, 5, 4, 6, + 5, 5, 4, 5, 6, 5, 5, 4, + 6, 5, 5, 4, 6, 6, 5, 5, + 5, 4, 6, 6, 5, 6, 8, 6, + 0, 0, 0, 0, 0, 0, 7, 5, + 4, 3, 5, 5, 4, 6, 5, 6, + 5, 3, 5, 5, 4, 5, 6, 6, + 5, 5, 4, 6, 5, 6, 5, 5, + 4, 6, 6, 5, 6, 6, 6, 6, + 5, 5, 4, 6, 5, 6, 5, 5, + 4, 6, 7, 2, 1, 1, 7, 7, + 7, 6, 8, 7, 7, 6, 6, 6, + 6, 5, 7, 6, 7, 6, 6, 5, + 7, 7, 6, 6, 6, 5, 7, 7, + 6, 7, 8, 7, 7, 6, 8, 8, + 7, 8, 6, 9, 8, 7, 7, 1, + 1, 5, 5, 7, 8, 7, 7, 6, + 8, 8, 7, 6, 9, 5, 5, 4, + 6, 5, 6, 6, 6, 7, 7, 6, + 6, 6, 6, 5, 9, 5, 6, 6, + 6, 6, 1, 6, 5, 7, 6, 6, + 5, 7, 6, 6, 6, 5, 7, 7, + 6, 7, 9, 7, 1, 1, 1, 1, + 12, 10, 5, 5, 12, 8, 7, 9, + 5, 5, 6, 6, 5, 5, 6, 6, + 6, 6, 5, 7, 6, 6, 5, 6, + 7, 9, 6, 6, 1, 6, 5, 7, + 6, 6, 5, 6, 7, 6, 6, 5, + 7, 7, 6, 6, 6, 5, 7, 7, + 6, 7, 9, 7, 1, 1, 1, 1, + 1, 1, 5, 5, 6, 6, 5, 6, + 7, 9, 1, 1, 1, 1, 8, 6, + 6, 6, 7, 6, 6, 6, 7, 6, + 6, 6, 6, 6, 6, 6, 6, 7, + 6, 7, 8, 11, 11, 6, 6, 14, + 11, 11, 6, 6, 11, 11, 6, 6, + 7, 7, 1, 1, 8, 7, 6, 6, + 6, 5, 7, 7, 8, 7, 7, 2, + 2, 2, 2, 9, 6, 6, 7, 6, + 8, 7, 7, 6, 6, 6, 6, 5, + 7, 6, 7, 6, 6, 5, 7, 9, + 5, 5, 4, 5, 6, 7, 7, 6, + 8, 7, 7, 6, 6, 7, 6, 5, + 6, 6, 5, 4, 9, 5, 6, 6, + 5, 5, 6, 6, 6, 6, 5, 7, + 6, 6, 5, 9, 5, 5, 6, 6, + 6, 5, 7, 6, 6, 5, 6, 7, + 6, 6, 5, 7, 6, 5, 4, 9, + 6, 6, 7, 6, 6, 5, 7, 6, + 5, 4, 6, 6, 6, 6, 5, 9, + 5, 6, 6, 6, 6, 5, 6, 6, + 6, 5, 7, 8, 6, 6, 6, 5, + 6, 7, 5, 4, 3, 0, 1, 0, + 1, 4, 5, 3, 1, 4, 5, 3, + 4, 5, 3, 4, 5, 3, 1, 4, + 5, 3, 1, 1, 1, 1, 1, 1, + 2, 5, 5, 1, 1, 1, 2, 2, + 3, 2, 4, 2, 5, 5, 6, 1, + 7, 5, 7, 8, 5, 7, 9, 9, + 6, 6, 1, 7, 2, 7, 7, 9, + 9, 8, 9, 6, 7, 7, 7, 2, + 6, 1, 7, 2, 7, 6, 8, 9, + 6, 7, 9, 9, 7, 8, 3, 7, + 7, 9, 9, 9, 10, 7, 7, 7, + 6, 6, 6, 5, 1, 5, 6, 1, + 7, 5, 7, 8, 5, 7, 9, 9, + 6, 6, 2, 7, 2, 7, 7, 9, + 9, 8, 9, 6, 7, 7, 7, 3, + 6, 2, 7, 2, 7, 6, 8, 9, + 6, 7, 9, 9, 7, 8, 3, 7, + 7, 9, 9, 9, 10, 7, 7, 7, + 6, 6, 6, 6, 6, 6, 6, 6, + 5, 2, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 6, 6, 6, 6, 6, 5, 1, 2, + 2, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 5, 6, 1, 7, 5, 7, 8, + 5, 7, 9, 9, 6, 6, 2, 3, + 3, 7, 8, 3, 8, 6, 8, 9, + 6, 8, 10, 10, 7, 8, 9, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 8, 8, 10, 10, 9, 10, 7, 8, + 8, 9, 4, 8, 3, 4, 4, 4, + 4, 4, 4, 4, 4, 9, 4, 8, + 7, 9, 10, 7, 8, 10, 10, 8, + 5, 5, 5, 5, 5, 5, 5, 5, + 10, 5, 8, 8, 10, 10, 10, 11, + 8, 8, 8, 4, 4, 4, 4, 4, + 4, 4, 4, 7, 2, 7, 7, 9, + 9, 8, 9, 6, 7, 7, 7, 3, + 6, 2, 3, 4, 4, 4, 4, 4, + 4, 4, 4, 7, 2, 7, 6, 8, + 9, 6, 7, 9, 9, 7, 4, 5, + 5, 5, 5, 5, 5, 5, 5, 8, + 3, 7, 7, 9, 9, 9, 10, 7, + 7, 7, 2, 5, 4, 3, 1, 2, + 5, 4, 3, 1, 4, 5, 3, 1, + 2, 15, 7, 5, 5, 4, 6, 5, + 5, 4, 5, 6, 5, 5, 4, 6, + 5, 5, 4, 6, 6, 5, 5, 5, + 4, 6, 6, 5, 6, 8, 6, 6, + 0, 0, 0, 0, 7, 0, 0, 7, + 7, 5, 5, 4, 6, 5, 6, 5, + 3, 5, 5, 4, 5, 6, 6, 5, + 5, 4, 6, 5, 6, 5, 5, 4, + 6, 6, 5, 6, 6, 6, 6, 6, + 5, 5, 4, 6, 5, 6, 5, 5, + 4, 6, 7, 2, 1, 1, 7, 7, + 7, 6, 8, 7, 7, 6, 6, 6, + 6, 5, 7, 6, 7, 6, 6, 5, + 7, 7, 6, 6, 6, 5, 7, 7, + 6, 7, 8, 7, 7, 6, 8, 8, + 7, 8, 6, 9, 8, 7, 7, 7, + 1, 1, 12, 10, 5, 5, 12, 7, + 8, 7, 7, 6, 8, 8, 7, 6, + 9, 5, 5, 4, 6, 5, 6, 6, + 6, 7, 7, 6, 6, 6, 6, 5, + 9, 5, 6, 6, 6, 6, 1, 6, + 5, 7, 6, 6, 5, 7, 6, 6, + 6, 5, 7, 7, 6, 7, 9, 7, + 6, 1, 1, 1, 1, 12, 10, 5, + 5, 12, 8, 7, 9, 5, 5, 6, + 6, 5, 5, 6, 6, 6, 6, 5, + 7, 6, 6, 5, 6, 7, 9, 6, + 6, 1, 6, 5, 7, 6, 6, 5, + 6, 7, 6, 6, 5, 7, 7, 6, + 6, 6, 5, 7, 7, 6, 7, 9, + 7, 7, 1, 1, 1, 1, 8, 1, + 1, 13, 11, 5, 5, 13, 12, 12, + 6, 6, 5, 6, 7, 9, 8, 1, + 1, 1, 1, 8, 8, 11, 6, 6, + 14, 11, 10, 6, 7, 6, 6, 11, + 11, 6, 7, 6, 6, 6, 6, 15, + 11, 6, 6, 12, 12, 6, 6, 7, + 6, 7, 8, 8, 11, 11, 6, 6, + 14, 11, 11, 6, 6, 11, 11, 6, + 6, 7, 7, 7, 1, 1, 8, 7, + 7, 6, 6, 6, 5, 7, 7, 8, + 11, 7, 7, 8, 7, 2, 2, 2, + 2, 8, 9, 9, 6, 6, 7, 6, + 8, 7, 7, 6, 6, 6, 6, 5, + 7, 6, 7, 6, 6, 5, 7, 9, + 5, 5, 4, 5, 6, 7, 7, 6, + 8, 7, 7, 6, 6, 7, 6, 5, + 6, 6, 5, 4, 9, 5, 6, 5, + 5, 6, 6, 6, 6, 5, 7, 6, + 6, 5, 9, 5, 5, 6, 6, 6, + 5, 7, 6, 6, 5, 6, 7, 6, + 6, 5, 7, 6, 5, 4, 9, 6, + 6, 7, 6, 6, 5, 7, 6, 5, + 4, 6, 6, 6, 6, 5, 9, 5, + 6, 6, 6, 6, 5, 6, 6, 6, + 5, 7, 8, 6, 6, 6, 5, 6, + 7, 2, 2, 3, 5, 2, 5, 5, + 4, 3, 6, 7, 7, 2, 1, 1, + 6, 5, 6, 6, 5, 4, 8, 6, + 6, 1, 5, 4, 6, 6, 6, 1, + 5, 4, 7, 7, 8, 1, 1, 1, + 2, 1, 2, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 5, 4, 3, 1, + 3, 5, 4, 3, 5, 5, 4, 3, + 5, 4, 3, 1, 1, 1, 2, 5, + 4, 3, 1, 1, 2, 5, 4, 3, + 1, 1, 1, 1, 1, 1, 23, 7, + 9, 8, 7, 6, 15, 2, 6, 7, + 7, 6, 13, 11, 7, 5, 6, 6, + 5, 1, 7, 7, 5, 7, 12, 11, + 12, 12, 13, 11, 12, 12, 13, 12, + 11, 12, 11, 7, 5, 7, 7, 5, + 12, 11, 12, 12, 12, 13, 11, 12, + 12, 13, 12, 11, 12, 6, 11, 9, + 11, 6, 6, 7, 12, 10, 12, 11, + 11, 7, 7, 10, 13, 10, 10, 10, + 10, 10, 14, 11, 11, 11, 11, 7, + 7, 7, 10, 7, 6, 7, 8, 8, + 6, 7, 7, 7, 9, 7, 7, 7, + 7, 7, 8, 6, 2, 1, 8, 8, + 6, 8, 7, 9, 1, 7, 7, 7, + 9, 7, 2, 1, 3, 2, 7, 7, + 8, 8, 9, 8, 8, 6, 9, 9, + 7, 8, 9, 10, 10, 11, 10, 11, + 11, 12, 10, 15, 11, 12, 12, 13, + 12, 11, 12, 12, 10, 10, 11, 11, + 12, 11, 10, 15, 12, 11, 11, 12, + 11, 10, 15, 12, 2, 1, 1, 9, + 11, 1, 7, 12, 12, 11, 8, 6, + 10, 12, 1, 7, 13, 13, 12, 12, + 12, 2, 1, 8, 7, 13, 13, 12, + 12, 12, 8, 13, 13, 12, 9, 12, + 1, 7, 13, 13, 12, 2, 5, 5, + 3, 0, 2, 5, 11, 10, 8, 7, + 0, 0, 0, 1, 1, 2, 1, 1, + 2, 2, 1, 0, 2, 2, 2, 2, + 2, 1, 3, 3, 2, 1, 3, 3, + 3, 2, 4, 4, 3, 3, 3, 3, + 4, 4, 1, 1, 1, 1, 9, 12, + 1, 13, 13, 7, 12, 7, 9, 10, + 7, 7, 7, 20, 7, 5, 7, 7, + 5, 7, 7, 5, 7, 7, 5, 7, + 8, 6, 7, 7, 7, 9, 7, 7, + 7, 7, 8, 6, 2, 1, 8, 8, + 6, 8, 7, 9, 1, 7, 7, 7, + 9, 7, 2, 1, 3, 2, 7, 7, + 8, 8, 9, 8, 8, 6, 9, 9, + 7, 8, 9, 6, 5, 1, 2, 1, + 6, 5, 1, 5, 8, 10, 11, 11, + 7, 10, 10, 10, 11, 11, 7, 7, + 10, 11, 10, 11, 11, 6, 10, 1, + 5, 2, 1 +}; + +static const char _redcloth_inline_range_lengths[] = { + 0, 0, 0, 0, 0, 1, 1, 1, + 1, 5, 1, 1, 0, 0, 0, 1, + 1, 1, 0, 1, 1, 1, 1, 1, + 0, 1, 1, 6, 5, 1, 1, 1, + 1, 1, 1, 5, 5, 1, 1, 1, + 1, 1, 1, 1, 5, 5, 0, 0, + 0, 0, 0, 0, 1, 1, 1, 1, + 5, 1, 1, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0, + 1, 1, 5, 1, 1, 0, 1, 1, + 6, 5, 5, 1, 1, 1, 1, 5, + 1, 1, 0, 0, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 1, + 1, 5, 1, 1, 0, 1, 1, 6, + 5, 5, 6, 1, 6, 6, 3, 3, + 3, 3, 3, 3, 6, 3, 3, 0, + 0, 0, 3, 3, 6, 3, 3, 6, + 6, 0, 0, 0, 6, 6, 1, 6, + 6, 6, 6, 0, 1, 3, 3, 1, + 1, 1, 1, 0, 3, 3, 3, 3, + 6, 6, 3, 3, 6, 6, 1, 3, + 3, 3, 3, 1, 1, 3, 3, 3, + 3, 6, 6, 6, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 6, 6, + 3, 3, 3, 3, 3, 3, 6, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 6, 6, 6, 6, 3, + 3, 4, 4, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 6, 6, 3, 3, 3, 3, + 8, 8, 4, 4, 8, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 6, 6, 3, 3, 3, 3, + 3, 3, 4, 4, 1, 1, 1, 1, + 1, 6, 3, 3, 3, 3, 6, 4, + 4, 1, 1, 4, 4, 1, 1, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 1, 4, 6, 8, 8, 4, 4, 8, + 8, 8, 4, 4, 8, 8, 4, 4, + 4, 4, 3, 3, 6, 1, 1, 1, + 1, 1, 1, 1, 1, 4, 4, 3, + 3, 3, 3, 6, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 3, + 3, 1, 1, 1, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 1, + 1, 1, 0, 0, 1, 0, 0, 1, + 0, 1, 1, 0, 0, 0, 0, 0, + 0, 2, 5, 1, 4, 4, 4, 0, + 2, 2, 5, 5, 2, 2, 5, 5, + 2, 4, 0, 4, 0, 2, 2, 5, + 5, 5, 5, 2, 2, 2, 4, 0, + 4, 0, 4, 0, 2, 2, 5, 5, + 2, 2, 5, 5, 2, 4, 0, 2, + 2, 5, 5, 5, 5, 2, 2, 2, + 4, 4, 4, 4, 0, 4, 4, 0, + 2, 2, 5, 5, 2, 2, 5, 5, + 2, 4, 0, 4, 0, 2, 2, 5, + 5, 5, 5, 2, 2, 2, 4, 0, + 4, 0, 4, 0, 2, 2, 5, 5, + 2, 2, 5, 5, 2, 4, 0, 2, + 2, 5, 5, 5, 5, 2, 2, 2, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 4, 4, 4, 4, 4, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 4, 0, 2, 2, 5, 5, + 2, 2, 5, 5, 2, 4, 0, 0, + 0, 4, 4, 0, 2, 2, 5, 5, + 2, 2, 5, 5, 2, 4, 4, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 2, 2, 5, 5, 5, 5, 2, 2, + 2, 4, 0, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4, 0, 2, + 2, 5, 5, 2, 2, 5, 5, 2, + 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 2, 2, 5, 5, 5, 5, + 2, 2, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 0, 2, 2, 5, + 5, 5, 5, 2, 2, 2, 4, 0, + 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 0, 2, 2, 5, + 5, 2, 2, 5, 5, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4, + 0, 2, 2, 5, 5, 5, 5, 2, + 2, 2, 1, 1, 1, 1, 0, 1, + 1, 1, 1, 0, 1, 1, 1, 0, + 0, 5, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 6, 6, 1, + 3, 3, 3, 3, 6, 3, 3, 6, + 6, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 6, 6, 6, 6, 1, + 3, 3, 3, 3, 4, 4, 3, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 6, 6, + 1, 3, 3, 3, 3, 8, 8, 4, + 4, 8, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 0, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 6, + 6, 1, 3, 3, 3, 3, 6, 3, + 3, 8, 8, 4, 4, 8, 8, 8, + 1, 1, 1, 1, 1, 6, 6, 3, + 3, 3, 3, 6, 6, 3, 4, 4, + 3, 3, 3, 1, 1, 4, 4, 3, + 3, 1, 1, 4, 4, 4, 4, 8, + 8, 4, 4, 8, 8, 4, 4, 4, + 1, 4, 6, 6, 8, 8, 4, 4, + 8, 8, 8, 4, 4, 8, 8, 4, + 4, 4, 4, 6, 3, 3, 6, 6, + 1, 1, 1, 1, 1, 1, 1, 1, + 3, 4, 4, 1, 1, 3, 3, 3, + 3, 6, 6, 6, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 0, 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 1, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 1, 1, + 1, 1, 0, 0, 1, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 6, 7, + 6, 7, 5, 0, 5, 0, 1, 6, + 6, 6, 5, 6, 1, 1, 6, 6, + 1, 0, 1, 1, 1, 1, 6, 6, + 6, 6, 6, 4, 6, 6, 6, 6, + 4, 6, 6, 1, 1, 1, 1, 1, + 6, 6, 6, 6, 6, 6, 4, 6, + 6, 6, 6, 4, 6, 1, 3, 3, + 3, 1, 1, 6, 8, 8, 8, 8, + 8, 6, 6, 3, 3, 3, 3, 3, + 3, 3, 8, 8, 8, 8, 8, 6, + 6, 6, 3, 1, 1, 6, 6, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 0, 0, 1, 1, + 1, 1, 1, 1, 0, 1, 1, 1, + 1, 1, 0, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 7, 7, 7, 7, 7, + 7, 7, 5, 5, 6, 6, 6, 6, + 6, 4, 6, 6, 7, 7, 7, 7, + 7, 7, 5, 5, 6, 7, 7, 7, + 7, 5, 5, 6, 1, 0, 2, 6, + 6, 0, 7, 6, 6, 4, 7, 0, + 6, 6, 0, 7, 6, 6, 4, 6, + 6, 0, 0, 7, 7, 6, 6, 4, + 6, 6, 7, 6, 6, 4, 6, 6, + 0, 7, 6, 6, 4, 0, 1, 1, + 1, 0, 0, 1, 6, 6, 7, 2, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 6, 6, + 0, 6, 6, 7, 4, 8, 7, 7, + 8, 8, 8, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 0, 0, 1, 1, + 1, 1, 1, 1, 0, 1, 1, 1, + 1, 1, 0, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 0, 0, + 1, 1, 0, 1, 7, 7, 7, 7, + 7, 5, 7, 7, 7, 7, 7, 7, + 5, 6, 7, 7, 7, 8, 5, 0, + 1, 0, 0 +}; + +static const short _redcloth_inline_index_offsets[] = { + 0, 0, 5, 7, 10, 12, 20, 27, + 33, 38, 52, 61, 70, 73, 75, 77, + 84, 92, 100, 102, 109, 115, 125, 133, + 141, 143, 150, 156, 170, 184, 192, 199, + 207, 215, 222, 228, 243, 258, 265, 271, + 278, 284, 289, 296, 303, 318, 332, 334, + 336, 341, 343, 346, 348, 355, 362, 368, + 373, 387, 396, 405, 408, 410, 412, 420, + 427, 435, 443, 450, 456, 466, 474, 482, + 484, 491, 497, 511, 519, 527, 529, 536, + 542, 556, 571, 586, 593, 600, 606, 611, + 625, 634, 643, 646, 648, 650, 658, 665, + 673, 681, 688, 694, 704, 712, 720, 722, + 729, 735, 749, 757, 765, 767, 774, 780, + 794, 809, 824, 837, 845, 860, 873, 877, + 881, 885, 889, 893, 897, 911, 915, 919, + 921, 924, 926, 930, 934, 948, 952, 956, + 971, 986, 989, 991, 993, 1012, 1026, 1035, + 1050, 1064, 1078, 1092, 1094, 1103, 1108, 1113, + 1126, 1135, 1144, 1153, 1155, 1160, 1165, 1170, + 1175, 1189, 1203, 1208, 1213, 1227, 1241, 1250, + 1255, 1260, 1265, 1270, 1280, 1289, 1295, 1301, + 1307, 1313, 1332, 1351, 1370, 1377, 1384, 1390, + 1398, 1405, 1412, 1418, 1425, 1433, 1440, 1447, + 1453, 1461, 1468, 1475, 1481, 1489, 1497, 1504, + 1511, 1518, 1524, 1532, 1540, 1547, 1555, 1570, + 1583, 1587, 1591, 1595, 1599, 1603, 1607, 1621, + 1628, 1634, 1639, 1646, 1653, 1659, 1667, 1674, + 1682, 1689, 1694, 1701, 1708, 1714, 1721, 1729, + 1737, 1744, 1751, 1757, 1765, 1772, 1780, 1787, + 1794, 1800, 1808, 1816, 1823, 1831, 1839, 1847, + 1855, 1862, 1869, 1875, 1883, 1890, 1898, 1905, + 1912, 1918, 1926, 1935, 1938, 1940, 1942, 1951, + 1960, 1969, 1977, 1987, 1996, 2005, 2013, 2021, + 2029, 2037, 2044, 2053, 2061, 2070, 2078, 2086, + 2093, 2102, 2111, 2119, 2127, 2135, 2142, 2151, + 2160, 2168, 2177, 2187, 2196, 2205, 2213, 2223, + 2233, 2242, 2252, 2260, 2276, 2291, 2305, 2319, + 2324, 2329, 2339, 2349, 2358, 2368, 2377, 2386, + 2394, 2404, 2414, 2423, 2431, 2442, 2449, 2456, + 2462, 2470, 2477, 2485, 2493, 2501, 2510, 2519, + 2527, 2535, 2543, 2551, 2558, 2569, 2576, 2584, + 2592, 2600, 2608, 2610, 2618, 2625, 2634, 2642, + 2650, 2657, 2666, 2674, 2682, 2690, 2697, 2706, + 2715, 2723, 2732, 2748, 2762, 2767, 2772, 2777, + 2782, 2803, 2822, 2832, 2842, 2863, 2873, 2882, + 2893, 2900, 2907, 2915, 2923, 2930, 2937, 2945, + 2953, 2961, 2969, 2976, 2985, 2993, 3001, 3008, + 3016, 3025, 3036, 3044, 3052, 3054, 3062, 3069, + 3078, 3086, 3094, 3101, 3109, 3118, 3126, 3134, + 3141, 3150, 3159, 3167, 3175, 3183, 3190, 3199, + 3208, 3216, 3225, 3241, 3255, 3260, 3265, 3270, + 3275, 3280, 3285, 3295, 3305, 3313, 3321, 3328, + 3336, 3345, 3361, 3366, 3371, 3376, 3381, 3396, + 3407, 3418, 3426, 3435, 3446, 3457, 3465, 3474, + 3485, 3496, 3507, 3518, 3529, 3540, 3551, 3562, + 3574, 3582, 3594, 3609, 3629, 3649, 3660, 3671, + 3694, 3714, 3734, 3745, 3756, 3776, 3796, 3807, + 3818, 3830, 3842, 3847, 3852, 3867, 3876, 3884, + 3892, 3900, 3907, 3916, 3925, 3935, 3947, 3959, + 3965, 3971, 3977, 3983, 3999, 4007, 4015, 4024, + 4032, 4042, 4051, 4060, 4068, 4076, 4084, 4092, + 4099, 4108, 4116, 4125, 4133, 4141, 4148, 4157, + 4168, 4175, 4182, 4188, 4195, 4203, 4212, 4221, + 4229, 4239, 4248, 4257, 4265, 4273, 4282, 4290, + 4297, 4305, 4313, 4320, 4326, 4337, 4344, 4352, + 4360, 4367, 4374, 4382, 4390, 4398, 4406, 4413, + 4422, 4430, 4438, 4445, 4456, 4463, 4470, 4478, + 4486, 4494, 4501, 4510, 4518, 4526, 4533, 4541, + 4550, 4558, 4566, 4573, 4582, 4590, 4597, 4603, + 4614, 4622, 4630, 4639, 4647, 4655, 4662, 4671, + 4679, 4686, 4692, 4700, 4708, 4716, 4724, 4731, + 4742, 4749, 4757, 4765, 4773, 4781, 4788, 4796, + 4804, 4812, 4819, 4828, 4838, 4846, 4854, 4862, + 4869, 4877, 4886, 4893, 4899, 4904, 4906, 4909, + 4913, 4918, 4924, 4931, 4936, 4938, 4944, 4951, + 4956, 4962, 4969, 4974, 4980, 4987, 4992, 4994, + 5000, 5007, 5012, 5014, 5016, 5019, 5021, 5023, + 5026, 5029, 5036, 5043, 5045, 5047, 5049, 5052, + 5055, 5059, 5064, 5074, 5078, 5088, 5098, 5109, + 5111, 5121, 5129, 5142, 5156, 5164, 5174, 5189, + 5204, 5213, 5224, 5226, 5238, 5241, 5251, 5261, + 5276, 5291, 5305, 5320, 5329, 5339, 5349, 5361, + 5364, 5375, 5377, 5389, 5392, 5402, 5411, 5425, + 5440, 5449, 5459, 5474, 5489, 5499, 5512, 5516, + 5526, 5536, 5551, 5566, 5581, 5597, 5607, 5617, + 5627, 5638, 5649, 5660, 5670, 5672, 5682, 5693, + 5695, 5705, 5713, 5726, 5740, 5748, 5758, 5773, + 5788, 5797, 5808, 5811, 5823, 5826, 5836, 5846, + 5861, 5876, 5890, 5905, 5914, 5924, 5934, 5946, + 5950, 5961, 5964, 5976, 5979, 5989, 5998, 6012, + 6027, 6036, 6046, 6061, 6076, 6086, 6099, 6103, + 6113, 6123, 6138, 6153, 6168, 6184, 6194, 6204, + 6214, 6225, 6236, 6247, 6258, 6269, 6280, 6291, + 6302, 6312, 6315, 6319, 6323, 6327, 6331, 6335, + 6339, 6343, 6347, 6351, 6355, 6359, 6363, 6367, + 6371, 6375, 6379, 6383, 6387, 6391, 6395, 6399, + 6403, 6414, 6425, 6436, 6447, 6458, 6468, 6470, + 6473, 6476, 6480, 6484, 6488, 6492, 6496, 6500, + 6504, 6508, 6512, 6516, 6520, 6524, 6528, 6532, + 6536, 6540, 6550, 6561, 6563, 6573, 6581, 6594, + 6608, 6616, 6626, 6641, 6656, 6665, 6676, 6679, + 6683, 6687, 6699, 6712, 6716, 6727, 6736, 6750, + 6765, 6774, 6785, 6801, 6817, 6827, 6840, 6854, + 6859, 6864, 6869, 6874, 6879, 6884, 6889, 6894, + 6899, 6910, 6921, 6937, 6953, 6968, 6984, 6994, + 7005, 7016, 7030, 7035, 7048, 7052, 7057, 7062, + 7067, 7072, 7077, 7082, 7087, 7092, 7106, 7111, + 7122, 7132, 7147, 7163, 7173, 7184, 7200, 7216, + 7227, 7233, 7239, 7245, 7251, 7257, 7263, 7269, + 7275, 7290, 7296, 7307, 7318, 7334, 7350, 7366, + 7383, 7394, 7405, 7416, 7421, 7426, 7431, 7436, + 7441, 7446, 7451, 7456, 7468, 7471, 7481, 7491, + 7506, 7521, 7535, 7550, 7559, 7569, 7579, 7591, + 7595, 7606, 7609, 7613, 7618, 7623, 7628, 7633, + 7638, 7643, 7648, 7653, 7665, 7668, 7678, 7687, + 7701, 7716, 7725, 7735, 7750, 7765, 7775, 7780, + 7786, 7792, 7798, 7804, 7810, 7816, 7822, 7828, + 7841, 7845, 7855, 7865, 7880, 7895, 7910, 7926, + 7936, 7946, 7956, 7960, 7967, 7973, 7978, 7980, + 7984, 7991, 7997, 8002, 8004, 8010, 8017, 8022, + 8024, 8027, 8048, 8057, 8064, 8071, 8077, 8085, + 8092, 8099, 8105, 8112, 8120, 8127, 8134, 8140, + 8148, 8155, 8162, 8168, 8176, 8184, 8191, 8198, + 8205, 8211, 8219, 8227, 8234, 8242, 8257, 8270, + 8278, 8282, 8286, 8290, 8294, 8308, 8312, 8316, + 8330, 8344, 8351, 8358, 8364, 8372, 8379, 8387, + 8394, 8399, 8406, 8413, 8419, 8426, 8434, 8442, + 8449, 8456, 8462, 8470, 8477, 8485, 8492, 8499, + 8505, 8513, 8521, 8528, 8536, 8544, 8552, 8560, + 8568, 8575, 8582, 8588, 8596, 8603, 8611, 8618, + 8625, 8631, 8639, 8648, 8651, 8653, 8655, 8664, + 8673, 8682, 8690, 8700, 8709, 8718, 8726, 8734, + 8742, 8750, 8757, 8766, 8774, 8783, 8791, 8799, + 8806, 8815, 8824, 8832, 8840, 8848, 8855, 8864, + 8873, 8881, 8890, 8900, 8909, 8918, 8926, 8936, + 8946, 8955, 8965, 8973, 8989, 9004, 9018, 9032, + 9041, 9046, 9051, 9067, 9081, 9091, 9101, 9117, + 9126, 9136, 9145, 9154, 9162, 9172, 9182, 9191, + 9199, 9210, 9217, 9224, 9230, 9238, 9245, 9253, + 9261, 9269, 9278, 9287, 9295, 9303, 9311, 9319, + 9326, 9337, 9344, 9352, 9360, 9368, 9376, 9378, + 9386, 9393, 9402, 9410, 9418, 9425, 9434, 9442, + 9450, 9458, 9465, 9474, 9483, 9491, 9500, 9516, + 9530, 9538, 9543, 9548, 9553, 9558, 9579, 9598, + 9608, 9618, 9639, 9649, 9658, 9669, 9676, 9683, + 9691, 9699, 9706, 9713, 9721, 9729, 9737, 9745, + 9752, 9761, 9769, 9777, 9784, 9792, 9801, 9812, + 9820, 9828, 9830, 9838, 9845, 9854, 9862, 9870, + 9877, 9885, 9894, 9902, 9910, 9917, 9926, 9935, + 9943, 9951, 9959, 9966, 9975, 9984, 9992, 10001, + 10017, 10031, 10040, 10045, 10050, 10055, 10060, 10075, + 10080, 10085, 10107, 10127, 10137, 10147, 10169, 10190, + 10211, 10219, 10227, 10234, 10242, 10251, 10267, 10282, + 10287, 10292, 10297, 10302, 10317, 10332, 10347, 10358, + 10369, 10387, 10402, 10416, 10424, 10433, 10444, 10455, + 10470, 10485, 10493, 10502, 10513, 10524, 10535, 10546, + 10570, 10590, 10601, 10612, 10633, 10654, 10665, 10676, + 10688, 10696, 10708, 10723, 10738, 10758, 10778, 10789, + 10800, 10823, 10843, 10863, 10874, 10885, 10905, 10925, + 10936, 10947, 10959, 10971, 10985, 10990, 10995, 11010, + 11024, 11033, 11041, 11049, 11057, 11064, 11073, 11082, + 11092, 11107, 11119, 11131, 11141, 11150, 11156, 11162, + 11168, 11174, 11189, 11205, 11221, 11229, 11237, 11246, + 11254, 11264, 11273, 11282, 11290, 11298, 11306, 11314, + 11321, 11330, 11338, 11347, 11355, 11363, 11370, 11379, + 11390, 11397, 11404, 11410, 11417, 11425, 11434, 11443, + 11451, 11461, 11470, 11479, 11487, 11495, 11504, 11512, + 11519, 11527, 11535, 11542, 11548, 11559, 11566, 11574, + 11581, 11588, 11596, 11604, 11612, 11620, 11627, 11636, + 11644, 11652, 11659, 11670, 11677, 11684, 11692, 11700, + 11708, 11715, 11724, 11732, 11740, 11747, 11755, 11764, + 11772, 11780, 11787, 11796, 11804, 11811, 11817, 11828, + 11836, 11844, 11853, 11861, 11869, 11876, 11885, 11893, + 11900, 11906, 11914, 11922, 11930, 11938, 11945, 11956, + 11963, 11971, 11979, 11987, 11995, 12002, 12010, 12018, + 12026, 12033, 12042, 12052, 12060, 12068, 12076, 12083, + 12091, 12100, 12104, 12108, 12113, 12120, 12124, 12131, + 12138, 12144, 12149, 12157, 12166, 12175, 12178, 12180, + 12182, 12190, 12197, 12205, 12213, 12220, 12226, 12236, + 12244, 12252, 12254, 12261, 12267, 12275, 12283, 12291, + 12293, 12300, 12306, 12315, 12324, 12334, 12337, 12339, + 12341, 12345, 12347, 12350, 12352, 12354, 12356, 12358, + 12360, 12362, 12364, 12366, 12368, 12370, 12372, 12374, + 12376, 12378, 12380, 12382, 12386, 12393, 12399, 12404, + 12406, 12411, 12418, 12424, 12429, 12436, 12443, 12449, + 12454, 12461, 12467, 12472, 12474, 12476, 12478, 12482, + 12489, 12495, 12500, 12502, 12504, 12508, 12515, 12521, + 12526, 12528, 12530, 12532, 12534, 12536, 12538, 12568, + 12583, 12599, 12615, 12628, 12635, 12656, 12659, 12667, + 12681, 12695, 12708, 12727, 12745, 12754, 12761, 12774, + 12787, 12794, 12796, 12805, 12814, 12821, 12830, 12849, + 12867, 12886, 12905, 12925, 12941, 12960, 12979, 12999, + 13018, 13034, 13053, 13071, 13080, 13087, 13096, 13105, + 13112, 13131, 13149, 13168, 13187, 13206, 13226, 13242, + 13261, 13280, 13300, 13319, 13335, 13354, 13362, 13377, + 13390, 13405, 13413, 13421, 13435, 13456, 13475, 13496, + 13516, 13536, 13550, 13564, 13578, 13595, 13609, 13623, + 13637, 13651, 13665, 13688, 13708, 13728, 13748, 13768, + 13782, 13796, 13810, 13824, 13833, 13841, 13855, 13870, + 13880, 13888, 13897, 13906, 13915, 13926, 13935, 13944, + 13953, 13962, 13971, 13981, 13989, 13992, 13994, 14004, + 14014, 14022, 14032, 14041, 14052, 14054, 14063, 14072, + 14081, 14092, 14101, 14104, 14106, 14110, 14113, 14122, + 14131, 14141, 14151, 14162, 14172, 14182, 14190, 14201, + 14212, 14221, 14231, 14242, 14260, 14278, 14297, 14315, + 14334, 14353, 14373, 14389, 14410, 14428, 14447, 14466, + 14486, 14505, 14521, 14540, 14559, 14577, 14595, 14614, + 14633, 14653, 14672, 14688, 14709, 14728, 14747, 14766, + 14786, 14805, 14821, 14842, 14861, 14865, 14867, 14871, + 14887, 14905, 14907, 14922, 14941, 14960, 14976, 14992, + 14999, 15016, 15035, 15037, 15052, 15072, 15092, 15109, + 15128, 15147, 15150, 15152, 15168, 15183, 15203, 15223, + 15240, 15259, 15278, 15294, 15314, 15334, 15351, 15367, + 15386, 15388, 15403, 15423, 15443, 15460, 15463, 15470, + 15477, 15482, 15483, 15486, 15493, 15511, 15528, 15544, + 15554, 15555, 15556, 15557, 15559, 15561, 15564, 15566, + 15568, 15571, 15574, 15576, 15577, 15580, 15583, 15586, + 15589, 15592, 15594, 15598, 15602, 15605, 15607, 15611, + 15615, 15619, 15622, 15627, 15632, 15636, 15640, 15644, + 15648, 15653, 15658, 15660, 15662, 15664, 15666, 15682, + 15701, 15703, 15723, 15743, 15758, 15775, 15791, 15808, + 15826, 15842, 15858, 15874, 15896, 15905, 15912, 15921, + 15930, 15937, 15946, 15955, 15962, 15971, 15980, 15987, + 15996, 16006, 16014, 16023, 16032, 16041, 16052, 16061, + 16070, 16079, 16088, 16098, 16106, 16109, 16111, 16121, + 16131, 16139, 16149, 16158, 16169, 16171, 16180, 16189, + 16198, 16209, 16218, 16221, 16223, 16227, 16230, 16239, + 16248, 16258, 16268, 16279, 16289, 16299, 16307, 16318, + 16329, 16338, 16348, 16359, 16367, 16374, 16376, 16379, + 16381, 16389, 16396, 16398, 16405, 16421, 16439, 16458, + 16477, 16492, 16508, 16526, 16544, 16563, 16582, 16597, + 16612, 16628, 16646, 16664, 16683, 16702, 16717, 16733, + 16735, 16742, 16745 +}; + +static const short _redcloth_inline_indicies[] = { + 1, 2, 1, 2, 0, 4, 3, 5, + 5, 3, 6, 3, 0, 8, 9, 10, + 11, 12, 0, 7, 0, 14, 15, 14, + 16, 0, 13, 0, 14, 15, 14, 0, + 13, 0, 14, 14, 0, 13, 17, 14, + 17, 17, 17, 17, 17, 17, 0, 17, + 17, 17, 17, 13, 19, 20, 21, 20, + 22, 23, 24, 19, 18, 26, 27, 28, + 27, 29, 30, 31, 26, 25, 32, 33, + 26, 0, 34, 36, 35, 0, 0, 9, + 11, 12, 0, 7, 38, 39, 40, 39, + 41, 13, 38, 37, 43, 44, 45, 44, + 46, 47, 43, 42, 48, 43, 43, 44, + 45, 44, 47, 43, 42, 43, 44, 44, + 47, 43, 42, 0, 14, 15, 14, 9, + 49, 11, 12, 0, 7, 51, 52, 53, + 52, 54, 13, 51, 50, 56, 57, 58, + 57, 59, 60, 56, 55, 61, 56, 56, + 57, 58, 57, 60, 56, 55, 56, 57, + 57, 60, 56, 55, 17, 57, 17, 17, + 17, 17, 60, 56, 17, 17, 17, 17, + 17, 55, 17, 44, 17, 17, 47, 17, + 17, 17, 43, 17, 17, 17, 17, 42, + 26, 27, 28, 27, 29, 30, 26, 25, + 26, 27, 27, 29, 30, 26, 25, 34, + 63, 64, 63, 13, 65, 34, 62, 35, + 67, 68, 67, 69, 70, 35, 66, 35, + 67, 68, 67, 69, 35, 66, 35, 67, + 67, 69, 35, 66, 17, 67, 17, 69, + 17, 17, 17, 17, 17, 35, 17, 17, + 17, 17, 66, 17, 27, 17, 30, 17, + 17, 17, 17, 17, 26, 17, 17, 17, + 17, 25, 0, 14, 15, 71, 16, 0, + 13, 0, 14, 15, 14, 0, 72, 0, + 73, 74, 75, 76, 0, 72, 0, 73, + 74, 73, 0, 72, 0, 73, 73, 0, + 72, 0, 73, 74, 73, 77, 0, 72, + 0, 73, 74, 75, 78, 0, 72, 17, + 73, 17, 0, 17, 17, 17, 17, 17, + 0, 17, 17, 17, 17, 72, 17, 73, + 17, 17, 17, 17, 17, 17, 0, 17, + 17, 17, 17, 72, 79, 0, 80, 0, + 81, 82, 81, 82, 0, 4, 3, 83, + 83, 3, 6, 3, 3, 3, 85, 86, + 87, 3, 84, 3, 89, 90, 89, 91, + 3, 88, 3, 89, 90, 89, 3, 88, + 3, 89, 89, 3, 88, 92, 89, 92, + 92, 92, 92, 92, 92, 3, 92, 92, + 92, 92, 88, 94, 95, 96, 95, 97, + 98, 99, 94, 93, 101, 102, 103, 102, + 104, 105, 106, 101, 100, 107, 108, 101, + 3, 109, 111, 110, 101, 102, 103, 102, + 104, 105, 101, 100, 101, 102, 102, 104, + 105, 101, 100, 109, 113, 114, 113, 88, + 115, 109, 112, 110, 117, 118, 117, 119, + 120, 110, 116, 110, 117, 118, 117, 119, + 110, 116, 110, 117, 117, 119, 110, 116, + 3, 89, 90, 89, 85, 86, 121, 87, + 3, 84, 123, 124, 125, 124, 88, 126, + 123, 122, 128, 129, 130, 129, 131, 132, + 128, 127, 133, 128, 128, 129, 130, 129, + 131, 128, 127, 128, 129, 129, 131, 128, + 127, 92, 129, 92, 92, 131, 92, 92, + 92, 128, 92, 92, 92, 92, 127, 135, + 136, 137, 136, 138, 88, 135, 134, 140, + 141, 142, 141, 143, 144, 140, 139, 145, + 140, 140, 141, 142, 141, 144, 140, 139, + 140, 141, 141, 144, 140, 139, 92, 141, + 92, 92, 92, 92, 144, 140, 92, 92, + 92, 92, 92, 139, 92, 117, 92, 119, + 92, 92, 92, 92, 92, 110, 92, 92, + 92, 92, 116, 92, 102, 92, 105, 92, + 92, 92, 92, 92, 101, 92, 92, 92, + 92, 100, 3, 3, 147, 148, 149, 3, + 146, 3, 151, 152, 151, 153, 3, 150, + 3, 151, 152, 151, 3, 150, 3, 151, + 151, 3, 150, 154, 151, 154, 154, 154, + 154, 154, 154, 3, 154, 154, 154, 154, + 150, 156, 157, 158, 157, 159, 160, 161, + 156, 155, 163, 164, 165, 164, 166, 167, + 168, 163, 162, 169, 170, 163, 3, 171, + 173, 172, 163, 164, 165, 164, 166, 167, + 163, 162, 163, 164, 164, 166, 167, 163, + 162, 171, 175, 176, 175, 150, 177, 171, + 174, 172, 179, 180, 179, 181, 182, 172, + 178, 172, 179, 180, 179, 181, 172, 178, + 172, 179, 179, 181, 172, 178, 3, 151, + 152, 151, 147, 148, 149, 183, 3, 146, + 185, 186, 187, 186, 150, 188, 185, 184, + 190, 191, 192, 191, 193, 194, 190, 189, + 195, 190, 190, 191, 192, 191, 193, 190, + 189, 190, 191, 191, 193, 190, 189, 154, + 191, 154, 154, 193, 154, 154, 154, 190, + 154, 154, 154, 154, 189, 197, 198, 199, + 198, 150, 200, 197, 196, 202, 203, 204, + 203, 205, 206, 202, 201, 207, 202, 202, + 203, 204, 203, 205, 202, 201, 202, 203, + 203, 205, 202, 201, 154, 203, 154, 154, + 154, 154, 205, 202, 154, 154, 154, 154, + 154, 201, 154, 179, 154, 181, 154, 154, + 154, 154, 154, 172, 154, 154, 154, 154, + 178, 154, 164, 154, 167, 154, 154, 154, + 154, 154, 163, 154, 154, 154, 154, 162, + 208, 210, 211, 208, 210, 208, 208, 210, + 208, 208, 210, 210, 209, 212, 213, 214, + 208, 208, 208, 208, 210, 215, 217, 218, + 219, 220, 221, 218, 215, 215, 218, 215, + 215, 218, 218, 216, 215, 223, 224, 215, + 223, 215, 215, 223, 215, 215, 223, 223, + 222, 225, 225, 225, 215, 223, 223, 223, + 215, 226, 226, 226, 215, 222, 222, 222, + 215, 227, 227, 227, 215, 228, 228, 228, + 215, 215, 223, 224, 229, 215, 223, 215, + 215, 223, 215, 215, 223, 223, 222, 230, + 230, 230, 208, 210, 210, 210, 208, 208, + 231, 208, 233, 232, 234, 208, 235, 235, + 235, 208, 209, 209, 209, 208, 212, 210, + 237, 214, 208, 210, 208, 208, 210, 208, + 208, 210, 210, 236, 238, 238, 238, 208, + 236, 236, 236, 208, 240, 241, 242, 243, + 244, 240, 242, 240, 240, 242, 240, 240, + 242, 242, 239, 246, 247, 248, 249, 250, + 246, 248, 246, 246, 248, 246, 246, 248, + 248, 245, 251, 250, 246, 208, 252, 254, + 253, 208, 256, 257, 258, 259, 260, 261, + 262, 263, 257, 264, 208, 208, 257, 208, + 208, 257, 257, 255, 208, 210, 211, 265, + 208, 210, 208, 208, 210, 208, 208, 210, + 210, 209, 266, 212, 213, 214, 208, 208, + 208, 208, 210, 208, 256, 257, 258, 260, + 262, 257, 208, 208, 257, 208, 208, 257, + 257, 255, 212, 210, 211, 214, 267, 210, + 208, 208, 210, 208, 208, 210, 210, 209, + 269, 270, 271, 269, 209, 270, 269, 269, + 270, 269, 269, 270, 270, 268, 273, 274, + 275, 273, 276, 274, 273, 273, 274, 273, + 273, 274, 274, 272, 276, 273, 212, 277, + 214, 273, 273, 278, 273, 273, 274, 276, + 279, 279, 279, 273, 276, 274, 274, 274, + 273, 212, 280, 214, 261, 210, 208, 208, + 210, 281, 282, 208, 208, 257, 212, 283, + 214, 269, 269, 210, 269, 269, 270, 212, + 286, 214, 285, 285, 210, 285, 285, 284, + 212, 289, 214, 288, 288, 290, 288, 288, + 287, 291, 288, 291, 292, 292, 292, 288, + 291, 287, 287, 287, 288, 276, 293, 293, + 293, 273, 276, 272, 272, 272, 273, 285, + 284, 295, 285, 284, 209, 285, 285, 284, + 285, 285, 284, 284, 294, 288, 287, 297, + 288, 287, 291, 288, 288, 287, 288, 288, + 287, 287, 296, 291, 298, 298, 298, 288, + 291, 296, 296, 296, 288, 252, 300, 301, + 209, 252, 300, 252, 252, 300, 252, 252, + 300, 300, 299, 253, 303, 304, 254, 253, + 303, 253, 253, 303, 253, 253, 303, 303, + 302, 212, 305, 214, 306, 253, 253, 253, + 253, 303, 254, 307, 307, 307, 253, 254, + 303, 303, 303, 253, 254, 308, 308, 308, + 253, 254, 302, 302, 302, 253, 212, 309, + 310, 214, 311, 246, 246, 246, 246, 248, + 212, 312, 214, 210, 252, 252, 252, 252, + 300, 251, 250, 313, 313, 313, 246, 251, + 250, 248, 248, 248, 246, 251, 250, 314, + 314, 314, 246, 251, 250, 245, 245, 245, + 246, 208, 316, 317, 318, 319, 320, 321, + 322, 323, 317, 324, 208, 208, 317, 208, + 208, 317, 317, 315, 208, 326, 327, 328, + 329, 330, 331, 332, 333, 327, 334, 208, + 208, 327, 208, 208, 327, 327, 325, 208, + 336, 337, 338, 339, 340, 341, 342, 343, + 337, 344, 208, 208, 337, 208, 208, 337, + 337, 335, 345, 347, 348, 347, 349, 345, + 346, 345, 347, 348, 350, 351, 345, 346, + 345, 347, 347, 349, 345, 346, 345, 353, + 354, 355, 356, 357, 345, 352, 345, 353, + 354, 355, 356, 345, 352, 345, 353, 354, + 353, 349, 345, 352, 345, 353, 353, 349, + 345, 352, 345, 353, 354, 353, 358, 345, + 352, 345, 353, 354, 355, 360, 357, 345, + 359, 345, 361, 362, 361, 363, 345, 359, + 345, 361, 362, 361, 364, 345, 359, 345, + 361, 361, 364, 345, 359, 345, 361, 362, + 361, 363, 357, 345, 359, 3, 366, 367, + 366, 368, 3, 365, 3, 366, 367, 366, + 369, 3, 365, 3, 366, 366, 369, 3, + 365, 3, 366, 367, 366, 368, 3, 3, + 365, 3, 366, 367, 370, 368, 3, 3, + 365, 3, 366, 367, 366, 372, 3, 371, + 3, 373, 374, 373, 375, 3, 371, 3, + 373, 374, 373, 376, 3, 371, 3, 373, + 373, 376, 3, 371, 3, 373, 374, 373, + 375, 3, 3, 371, 3, 373, 374, 377, + 375, 378, 3, 371, 3, 373, 374, 373, + 372, 3, 371, 3, 373, 374, 373, 375, + 378, 3, 371, 3, 380, 381, 382, 383, + 384, 381, 3, 3, 381, 3, 3, 381, + 381, 379, 3, 386, 387, 3, 386, 3, + 3, 386, 3, 3, 386, 386, 385, 389, + 389, 389, 388, 386, 386, 386, 388, 390, + 390, 390, 3, 385, 385, 385, 3, 391, + 391, 391, 388, 392, 392, 392, 388, 3, + 386, 387, 393, 3, 386, 3, 3, 386, + 3, 3, 386, 386, 385, 3, 394, 395, + 394, 396, 3, 357, 3, 394, 395, 394, + 3, 357, 3, 394, 394, 3, 357, 3, + 398, 399, 400, 401, 3, 397, 3, 398, + 399, 398, 401, 3, 397, 3, 398, 398, + 401, 3, 397, 3, 398, 399, 400, 401, + 3, 3, 397, 3, 398, 399, 398, 402, + 3, 397, 3, 398, 399, 400, 369, 3, + 3, 365, 345, 347, 348, 347, 358, 345, + 346, 3, 404, 405, 3, 403, 3, 406, + 407, 408, 409, 3, 403, 3, 406, 407, + 406, 401, 3, 403, 3, 406, 406, 401, + 3, 403, 3, 406, 407, 406, 402, 3, + 403, 3, 398, 399, 400, 401, 378, 3, + 397, 3, 398, 399, 400, 411, 3, 3, + 410, 3, 412, 413, 414, 415, 3, 410, + 3, 412, 413, 412, 411, 3, 410, 3, + 412, 412, 411, 3, 410, 3, 412, 413, + 414, 415, 3, 3, 410, 3, 412, 413, + 412, 416, 3, 410, 3, 412, 413, 414, + 418, 3, 3, 417, 3, 419, 420, 419, + 421, 3, 417, 3, 419, 420, 419, 422, + 3, 417, 3, 419, 419, 422, 3, 417, + 3, 419, 420, 419, 421, 3, 3, 417, + 3, 419, 420, 423, 424, 3, 3, 417, + 3, 419, 420, 419, 372, 3, 371, 3, + 419, 420, 423, 424, 378, 3, 417, 3, + 419, 420, 419, 424, 3, 3, 417, 3, + 412, 413, 414, 425, 3, 3, 410, 3, + 412, 413, 414, 425, 378, 3, 410, 345, + 427, 428, 427, 429, 345, 426, 345, 427, + 428, 430, 431, 345, 426, 345, 427, 427, + 429, 345, 426, 345, 427, 428, 430, 431, + 357, 345, 426, 345, 427, 428, 427, 432, + 345, 426, 345, 427, 428, 430, 434, 357, + 345, 433, 345, 435, 436, 435, 437, 345, + 433, 345, 435, 436, 435, 438, 345, 433, + 345, 435, 435, 438, 345, 433, 345, 435, + 436, 435, 437, 357, 345, 433, 440, 441, + 442, 443, 444, 445, 446, 440, 439, 447, + 448, 440, 3, 449, 448, 449, 3, 404, + 405, 450, 451, 452, 453, 3, 403, 440, + 454, 455, 456, 457, 458, 459, 440, 450, + 440, 454, 455, 454, 460, 458, 459, 440, + 450, 440, 454, 454, 460, 458, 459, 440, + 450, 440, 462, 463, 464, 460, 465, 466, + 440, 440, 461, 440, 462, 463, 464, 460, + 465, 466, 440, 461, 440, 462, 463, 462, + 460, 465, 466, 440, 461, 440, 462, 462, + 460, 465, 466, 440, 461, 449, 468, 469, + 470, 471, 397, 449, 467, 449, 468, 469, + 470, 471, 466, 449, 467, 449, 468, 469, + 468, 471, 466, 449, 467, 449, 468, 468, + 471, 466, 449, 467, 449, 468, 469, 470, + 471, 466, 449, 449, 467, 449, 468, 469, + 468, 472, 466, 449, 467, 449, 468, 469, + 470, 474, 475, 449, 449, 473, 449, 476, + 477, 476, 478, 475, 449, 473, 449, 476, + 477, 476, 474, 475, 449, 473, 449, 476, + 476, 474, 475, 449, 473, 449, 476, 477, + 476, 478, 475, 449, 449, 473, 449, 476, + 477, 479, 478, 475, 449, 449, 473, 449, + 476, 477, 476, 481, 482, 449, 480, 449, + 483, 484, 483, 485, 482, 449, 480, 449, + 483, 484, 483, 486, 482, 449, 480, 449, + 483, 483, 486, 482, 449, 480, 449, 483, + 484, 483, 485, 482, 449, 449, 480, 449, + 483, 484, 487, 485, 482, 488, 449, 480, + 449, 483, 484, 483, 481, 482, 449, 480, + 449, 483, 484, 483, 485, 482, 488, 449, + 480, 3, 373, 374, 373, 375, 489, 490, + 491, 3, 371, 440, 492, 493, 492, 494, + 495, 482, 440, 489, 440, 492, 493, 492, + 496, 495, 482, 440, 489, 440, 492, 492, + 496, 495, 482, 440, 489, 440, 492, 493, + 492, 494, 495, 482, 440, 440, 489, 440, + 492, 493, 497, 494, 495, 482, 498, 440, + 489, 440, 492, 493, 492, 499, 495, 482, + 440, 489, 440, 492, 493, 492, 494, 495, + 482, 498, 440, 489, 449, 483, 484, 483, + 485, 371, 449, 480, 440, 501, 502, 503, + 504, 505, 506, 502, 440, 440, 502, 440, + 440, 502, 502, 500, 440, 508, 509, 510, + 511, 440, 509, 440, 440, 509, 440, 440, + 509, 509, 507, 449, 513, 514, 385, 449, + 513, 449, 449, 513, 449, 449, 513, 513, + 512, 449, 513, 514, 511, 449, 513, 449, + 449, 513, 449, 449, 513, 513, 512, 448, + 515, 515, 515, 449, 448, 513, 513, 513, + 449, 388, 406, 407, 408, 409, 388, 516, + 516, 516, 403, 388, 406, 407, 408, 409, + 388, 517, 517, 517, 403, 440, 454, 455, + 454, 518, 458, 459, 440, 450, 440, 462, + 463, 464, 520, 521, 475, 440, 440, 519, + 440, 522, 523, 522, 524, 521, 475, 440, + 519, 440, 522, 523, 522, 520, 521, 475, + 440, 519, 440, 522, 522, 520, 521, 475, + 440, 519, 440, 522, 523, 522, 524, 521, + 475, 440, 440, 519, 440, 522, 523, 525, + 524, 521, 475, 440, 440, 519, 440, 522, + 523, 522, 499, 495, 482, 440, 489, 449, + 476, 477, 476, 478, 365, 449, 473, 3, + 366, 367, 527, 528, 529, 530, 531, 532, + 3, 526, 3, 533, 534, 533, 535, 3, + 526, 3, 533, 534, 533, 369, 3, 526, + 3, 533, 533, 369, 3, 526, 3, 366, + 367, 370, 368, 378, 3, 365, 3, 366, + 367, 527, 536, 3, 526, 3, 366, 367, + 366, 537, 3, 3, 417, 3, 419, 420, + 423, 421, 3, 3, 417, 3, 366, 367, + 370, 537, 3, 3, 417, 440, 538, 539, + 538, 540, 541, 542, 440, 529, 440, 538, + 539, 538, 520, 541, 542, 440, 529, 440, + 538, 538, 520, 541, 542, 440, 529, 449, + 544, 545, 544, 546, 526, 449, 543, 449, + 544, 545, 544, 546, 542, 449, 543, 449, + 544, 545, 544, 474, 542, 449, 543, 449, + 544, 544, 474, 542, 449, 543, 3, 533, + 534, 547, 548, 529, 530, 531, 532, 3, + 526, 3, 533, 534, 547, 536, 3, 526, + 3, 366, 367, 370, 537, 378, 3, 417, + 3, 533, 534, 547, 548, 530, 3, 526, + 550, 551, 552, 551, 553, 526, 550, 549, + 550, 551, 552, 551, 553, 542, 550, 549, + 448, 550, 550, 551, 552, 551, 554, 542, + 550, 549, 550, 551, 551, 554, 542, 550, + 549, 550, 556, 557, 556, 558, 550, 475, + 550, 555, 550, 556, 557, 556, 558, 475, + 550, 555, 550, 556, 557, 556, 554, 475, + 550, 555, 550, 556, 556, 554, 475, 550, + 555, 550, 556, 557, 559, 558, 550, 475, + 550, 555, 550, 556, 557, 556, 561, 482, + 550, 560, 550, 562, 563, 562, 564, 482, + 550, 560, 550, 562, 563, 562, 565, 482, + 550, 560, 550, 562, 562, 565, 482, 550, + 560, 550, 562, 563, 562, 564, 550, 482, + 550, 560, 550, 562, 563, 566, 564, 567, + 482, 550, 560, 550, 562, 563, 562, 561, + 482, 550, 560, 550, 562, 563, 562, 564, + 567, 482, 550, 560, 550, 569, 570, 571, + 572, 573, 504, 570, 550, 550, 570, 550, + 550, 570, 570, 568, 550, 575, 576, 550, + 511, 575, 550, 550, 575, 550, 550, 575, + 575, 574, 448, 577, 577, 577, 550, 448, + 575, 575, 575, 550, 448, 578, 578, 578, + 550, 448, 574, 574, 574, 550, 3, 404, + 405, 517, 580, 581, 582, 403, 583, 517, + 584, 403, 403, 3, 403, 517, 403, 403, + 517, 517, 579, 3, 406, 407, 408, 409, + 517, 580, 403, 517, 403, 403, 3, 403, + 517, 403, 403, 517, 517, 579, 3, 406, + 407, 408, 409, 3, 585, 585, 585, 403, + 3, 406, 407, 408, 409, 3, 579, 579, + 579, 403, 440, 454, 455, 456, 457, 586, + 587, 588, 589, 450, 587, 450, 450, 440, + 450, 587, 450, 450, 587, 587, 581, 440, + 462, 463, 464, 460, 465, 466, 498, 440, + 461, 440, 462, 463, 462, 518, 465, 466, + 440, 461, 3, 398, 399, 590, 405, 450, + 451, 452, 453, 3, 403, 3, 398, 399, + 591, 592, 3, 403, 3, 398, 399, 591, + 405, 3, 403, 3, 398, 399, 400, 422, + 3, 3, 417, 3, 406, 407, 593, 594, + 451, 3, 403, 3, 406, 407, 595, 592, + 3, 403, 3, 406, 407, 595, 405, 3, + 403, 3, 398, 399, 400, 411, 378, 3, + 410, 550, 597, 598, 599, 600, 403, 550, + 596, 550, 597, 598, 599, 600, 459, 550, + 596, 550, 597, 598, 597, 601, 459, 550, + 596, 550, 597, 597, 601, 459, 550, 596, + 550, 603, 604, 605, 601, 550, 466, 550, + 602, 550, 603, 604, 605, 601, 466, 550, + 602, 550, 603, 604, 603, 601, 466, 550, + 602, 550, 603, 603, 601, 466, 550, 602, + 550, 603, 604, 603, 606, 466, 550, 602, + 550, 603, 604, 605, 554, 550, 475, 550, + 555, 3, 406, 407, 593, 594, 450, 451, + 452, 453, 3, 403, 608, 609, 610, 611, + 612, 403, 608, 607, 608, 609, 610, 611, + 612, 459, 608, 607, 448, 608, 608, 609, + 610, 609, 613, 459, 608, 607, 608, 609, + 609, 613, 459, 608, 607, 608, 615, 616, + 617, 613, 608, 466, 608, 614, 608, 615, + 616, 617, 613, 466, 608, 614, 608, 615, + 616, 615, 613, 466, 608, 614, 608, 615, + 615, 613, 466, 608, 614, 608, 615, 616, + 615, 618, 466, 608, 614, 608, 615, 616, + 617, 620, 608, 475, 608, 619, 608, 621, + 622, 621, 623, 475, 608, 619, 608, 621, + 622, 621, 620, 475, 608, 619, 608, 621, + 621, 620, 475, 608, 619, 608, 621, 622, + 621, 623, 608, 475, 608, 619, 608, 621, + 622, 624, 623, 608, 475, 608, 619, 608, + 621, 622, 621, 626, 482, 608, 625, 608, + 627, 628, 627, 629, 482, 608, 625, 608, + 627, 628, 627, 630, 482, 608, 625, 608, + 627, 627, 630, 482, 608, 625, 608, 627, + 628, 627, 629, 608, 482, 608, 625, 608, + 627, 628, 631, 629, 632, 482, 608, 625, + 608, 627, 628, 627, 626, 482, 608, 625, + 608, 627, 628, 627, 629, 632, 482, 608, + 625, 608, 634, 635, 636, 637, 638, 635, + 504, 608, 608, 635, 608, 608, 635, 635, + 633, 608, 640, 641, 608, 640, 511, 608, + 608, 640, 608, 608, 640, 640, 639, 448, + 642, 642, 642, 608, 448, 640, 640, 640, + 608, 448, 643, 643, 643, 608, 448, 639, + 639, 639, 608, 448, 644, 644, 644, 608, + 448, 645, 645, 645, 608, 388, 406, 407, + 408, 409, 388, 646, 646, 646, 403, 388, + 406, 407, 408, 409, 388, 647, 647, 647, + 403, 449, 649, 650, 651, 652, 459, 449, + 648, 449, 649, 650, 649, 471, 459, 449, + 648, 449, 649, 649, 471, 459, 449, 648, + 449, 649, 650, 649, 472, 459, 449, 648, + 449, 468, 469, 470, 471, 466, 488, 449, + 467, 449, 654, 655, 656, 504, 657, 658, + 655, 449, 449, 655, 449, 449, 655, 655, + 653, 448, 659, 659, 659, 449, 448, 660, + 660, 660, 449, 448, 661, 661, 661, 449, + 448, 512, 512, 512, 449, 449, 513, 514, + 511, 662, 449, 513, 449, 449, 513, 449, + 449, 513, 513, 512, 449, 649, 650, 651, + 652, 459, 449, 663, 663, 663, 648, 449, + 649, 650, 651, 652, 459, 449, 664, 664, + 664, 648, 550, 597, 598, 597, 606, 459, + 550, 596, 550, 603, 604, 605, 601, 567, + 466, 550, 602, 550, 597, 598, 599, 600, + 459, 550, 665, 665, 665, 596, 550, 597, + 598, 599, 600, 459, 550, 666, 666, 666, + 596, 608, 609, 610, 609, 618, 459, 608, + 607, 608, 615, 616, 617, 613, 632, 466, + 608, 614, 608, 609, 610, 611, 612, 459, + 608, 667, 667, 667, 607, 608, 609, 610, + 611, 612, 459, 608, 668, 668, 668, 607, + 449, 649, 650, 651, 652, 459, 449, 669, + 669, 669, 648, 449, 649, 650, 651, 652, + 459, 449, 670, 670, 670, 648, 550, 597, + 598, 599, 600, 459, 550, 671, 671, 671, + 596, 550, 597, 598, 599, 600, 459, 550, + 672, 672, 672, 596, 608, 609, 610, 611, + 612, 459, 608, 673, 673, 673, 607, 608, + 609, 610, 611, 612, 459, 608, 674, 674, + 674, 607, 440, 454, 455, 456, 457, 458, + 459, 440, 675, 675, 675, 450, 449, 649, + 650, 651, 652, 403, 449, 648, 440, 454, + 455, 456, 457, 458, 459, 440, 676, 676, + 676, 450, 608, 640, 641, 677, 608, 640, + 511, 608, 608, 640, 608, 608, 640, 640, + 639, 449, 649, 650, 651, 652, 664, 679, + 579, 648, 664, 648, 648, 449, 648, 664, + 648, 648, 664, 664, 678, 449, 649, 650, + 651, 652, 664, 679, 589, 648, 664, 648, + 648, 449, 648, 664, 648, 648, 664, 664, + 678, 449, 649, 650, 651, 652, 459, 449, + 680, 680, 680, 648, 449, 649, 650, 651, + 652, 459, 449, 678, 678, 678, 648, 3, + 406, 407, 593, 594, 517, 580, 581, 582, + 403, 583, 517, 584, 403, 403, 3, 403, + 517, 403, 403, 517, 517, 579, 550, 597, + 598, 599, 600, 666, 682, 596, 579, 666, + 596, 596, 550, 596, 666, 596, 596, 666, + 666, 681, 550, 597, 598, 599, 600, 666, + 682, 596, 589, 666, 596, 596, 550, 596, + 666, 596, 596, 666, 666, 681, 550, 597, + 598, 599, 600, 459, 550, 683, 683, 683, + 596, 550, 597, 598, 599, 600, 459, 550, + 681, 681, 681, 596, 608, 609, 610, 611, + 612, 668, 685, 607, 668, 579, 607, 607, + 608, 607, 668, 607, 607, 668, 668, 684, + 608, 609, 610, 611, 612, 668, 685, 607, + 668, 589, 607, 607, 608, 607, 668, 607, + 607, 668, 668, 684, 608, 609, 610, 611, + 612, 459, 608, 686, 686, 686, 607, 608, + 609, 610, 611, 612, 459, 608, 684, 684, + 684, 607, 440, 454, 455, 456, 457, 458, + 459, 440, 687, 687, 687, 450, 440, 454, + 455, 456, 457, 458, 459, 440, 581, 581, + 581, 450, 448, 688, 688, 688, 550, 448, + 689, 689, 689, 550, 550, 575, 576, 690, + 550, 511, 575, 550, 550, 575, 550, 550, + 575, 575, 574, 550, 556, 557, 559, 558, + 567, 475, 550, 555, 608, 692, 693, 692, + 694, 526, 608, 691, 608, 692, 693, 692, + 694, 542, 608, 691, 608, 692, 693, 692, + 620, 542, 608, 691, 608, 692, 692, 620, + 542, 608, 691, 608, 621, 622, 624, 623, + 632, 475, 608, 619, 449, 476, 477, 479, + 478, 475, 488, 449, 473, 440, 522, 523, + 525, 524, 521, 475, 498, 440, 519, 440, + 454, 455, 456, 457, 458, 459, 440, 695, + 695, 695, 450, 440, 454, 455, 456, 457, + 458, 459, 440, 587, 587, 587, 450, 447, + 448, 696, 696, 696, 440, 447, 448, 509, + 509, 509, 440, 447, 448, 697, 697, 697, + 440, 447, 448, 507, 507, 507, 440, 440, + 508, 509, 510, 511, 698, 440, 509, 440, + 440, 509, 440, 440, 509, 509, 507, 550, + 562, 563, 562, 564, 371, 550, 560, 608, + 627, 628, 627, 629, 371, 608, 625, 440, + 441, 442, 441, 699, 445, 446, 440, 439, + 440, 441, 441, 699, 445, 446, 440, 439, + 440, 701, 702, 703, 704, 705, 706, 707, + 440, 700, 440, 701, 702, 703, 704, 705, + 706, 440, 700, 440, 701, 702, 701, 699, + 705, 706, 440, 700, 440, 701, 701, 699, + 705, 706, 440, 700, 449, 709, 710, 711, + 712, 352, 449, 708, 449, 709, 710, 711, + 712, 706, 449, 708, 449, 709, 710, 709, + 713, 706, 449, 708, 449, 709, 709, 713, + 706, 449, 708, 449, 709, 710, 711, 712, + 706, 714, 449, 708, 449, 709, 710, 709, + 715, 706, 449, 708, 449, 709, 710, 711, + 717, 718, 714, 449, 716, 449, 719, 720, + 719, 721, 718, 449, 716, 449, 719, 720, + 719, 722, 718, 449, 716, 449, 719, 719, + 722, 718, 449, 716, 449, 719, 720, 719, + 721, 718, 714, 449, 716, 345, 361, 362, + 724, 725, 726, 727, 728, 729, 345, 723, + 345, 730, 731, 730, 732, 345, 723, 345, + 730, 731, 730, 364, 345, 723, 345, 730, + 730, 364, 345, 723, 345, 361, 362, 724, + 733, 345, 723, 345, 361, 362, 361, 734, + 357, 345, 433, 440, 735, 736, 735, 737, + 738, 739, 440, 726, 440, 735, 736, 735, + 740, 738, 739, 440, 726, 440, 735, 735, + 740, 738, 739, 440, 726, 440, 742, 743, + 742, 744, 745, 718, 707, 440, 741, 440, + 742, 743, 742, 744, 745, 718, 440, 741, + 440, 742, 743, 742, 740, 745, 718, 440, + 741, 440, 742, 742, 740, 745, 718, 440, + 741, 449, 719, 720, 719, 721, 359, 449, + 716, 440, 746, 747, 746, 748, 749, 750, + 440, 707, 440, 746, 747, 746, 749, 750, + 440, 707, 440, 746, 746, 749, 750, 440, + 707, 449, 751, 752, 751, 753, 357, 449, + 714, 449, 751, 752, 751, 753, 750, 449, + 714, 449, 751, 752, 751, 750, 449, 714, + 449, 751, 751, 750, 449, 714, 345, 394, + 395, 754, 755, 439, 756, 757, 758, 345, + 346, 345, 394, 395, 754, 759, 345, 346, + 345, 353, 354, 355, 760, 357, 345, 426, + 345, 347, 348, 761, 762, 756, 345, 346, + 345, 347, 348, 763, 764, 345, 346, 345, + 347, 348, 763, 759, 345, 346, 345, 353, + 354, 355, 765, 357, 345, 433, 550, 767, + 768, 769, 770, 346, 550, 766, 550, 767, + 768, 769, 770, 446, 550, 766, 550, 767, + 768, 767, 771, 446, 550, 766, 550, 767, + 767, 771, 446, 550, 766, 550, 773, 774, + 775, 776, 777, 706, 550, 772, 550, 773, + 774, 775, 776, 706, 550, 772, 550, 773, + 774, 773, 771, 706, 550, 772, 550, 773, + 773, 771, 706, 550, 772, 345, 353, 354, + 778, 755, 439, 756, 757, 758, 345, 346, + 345, 353, 354, 779, 764, 345, 346, 345, + 353, 354, 779, 759, 345, 346, 608, 781, + 782, 783, 784, 346, 608, 780, 608, 781, + 782, 783, 784, 446, 608, 780, 608, 781, + 782, 781, 785, 446, 608, 780, 608, 781, + 781, 785, 446, 608, 780, 608, 787, 788, + 789, 790, 791, 706, 608, 786, 608, 787, + 788, 789, 790, 706, 608, 786, 608, 787, + 788, 787, 785, 706, 608, 786, 608, 787, + 787, 785, 706, 608, 786, 608, 787, 788, + 787, 792, 706, 608, 786, 608, 787, 788, + 789, 794, 791, 718, 608, 793, 608, 795, + 796, 795, 797, 718, 608, 793, 608, 795, + 796, 795, 798, 718, 608, 793, 608, 795, + 795, 798, 718, 608, 793, 608, 795, 796, + 795, 797, 791, 718, 608, 793, 608, 799, + 800, 799, 801, 750, 608, 791, 608, 799, + 800, 799, 750, 608, 791, 608, 799, 799, + 750, 608, 791, 345, 347, 348, 761, 762, + 439, 756, 757, 758, 345, 346, 608, 781, + 782, 781, 792, 446, 608, 780, 550, 773, + 774, 773, 802, 706, 550, 772, 550, 773, + 774, 775, 804, 777, 718, 550, 803, 550, + 805, 806, 805, 807, 718, 550, 803, 550, + 805, 806, 805, 808, 718, 550, 803, 550, + 805, 805, 808, 718, 550, 803, 550, 805, + 806, 805, 807, 777, 718, 550, 803, 550, + 809, 810, 809, 811, 750, 550, 777, 550, + 809, 810, 809, 750, 550, 777, 550, 809, + 809, 750, 550, 777, 550, 767, 768, 767, + 802, 446, 550, 766, 449, 813, 814, 813, + 815, 723, 449, 812, 449, 813, 814, 813, + 815, 739, 449, 812, 449, 813, 814, 813, + 722, 739, 449, 812, 449, 813, 813, 722, + 739, 449, 812, 345, 730, 731, 816, 817, + 726, 727, 728, 729, 345, 723, 345, 730, + 731, 816, 733, 345, 723, 345, 730, 731, + 816, 817, 727, 345, 723, 550, 819, 820, + 819, 821, 723, 550, 818, 550, 819, 820, + 819, 821, 739, 550, 818, 550, 819, 820, + 819, 808, 739, 550, 818, 550, 819, 819, + 808, 739, 550, 818, 608, 823, 824, 823, + 825, 723, 608, 822, 608, 823, 824, 823, + 825, 739, 608, 822, 608, 823, 824, 823, + 798, 739, 608, 822, 608, 823, 823, 798, + 739, 608, 822, 440, 701, 702, 701, 826, + 705, 706, 440, 700, 440, 701, 702, 703, + 827, 745, 718, 707, 440, 741, 449, 829, + 830, 831, 832, 346, 449, 828, 449, 829, + 830, 831, 832, 446, 449, 828, 449, 829, + 830, 829, 713, 446, 449, 828, 449, 829, + 829, 713, 446, 449, 828, 449, 829, 830, + 829, 715, 446, 449, 828, 440, 441, 442, + 441, 826, 445, 446, 440, 439, 208, 834, + 835, 834, 836, 208, 833, 208, 834, 835, + 834, 208, 833, 208, 834, 834, 208, 833, + 837, 208, 838, 837, 208, 839, 839, 839, + 208, 838, 839, 839, 839, 208, 3, 841, + 842, 841, 3, 840, 3, 841, 842, 841, + 843, 3, 840, 3, 841, 841, 3, 840, + 844, 208, 3, 846, 847, 846, 3, 845, + 3, 846, 847, 846, 848, 3, 845, 3, + 846, 846, 3, 845, 3, 850, 851, 850, + 3, 849, 3, 850, 851, 850, 852, 3, + 849, 3, 850, 850, 3, 849, 3, 854, + 855, 854, 3, 853, 3, 854, 855, 854, + 856, 3, 853, 3, 854, 854, 3, 853, + 857, 3, 3, 859, 860, 859, 3, 858, + 3, 859, 860, 859, 861, 3, 858, 3, + 859, 859, 3, 858, 862, 3, 863, 3, + 864, 864, 3, 866, 865, 867, 865, 868, + 868, 865, 869, 863, 3, 869, 870, 870, + 871, 863, 872, 208, 869, 870, 870, 872, + 863, 872, 3, 873, 208, 874, 208, 208, + 875, 208, 876, 875, 208, 877, 875, 208, + 877, 878, 875, 879, 879, 879, 879, 208, + 880, 881, 879, 879, 880, 879, 879, 879, + 879, 208, 880, 881, 880, 208, 882, 884, + 885, 883, 883, 882, 883, 883, 883, 208, + 882, 884, 885, 886, 886, 882, 886, 886, + 886, 3, 886, 884, 887, 885, 886, 886, + 886, 886, 886, 886, 3, 888, 3, 890, + 890, 892, 893, 894, 3, 885, 890, 891, + 889, 882, 882, 894, 3, 885, 882, 895, + 889, 882, 882, 894, 3, 885, 896, 896, + 882, 895, 896, 896, 896, 889, 886, 886, + 894, 3, 891, 885, 896, 896, 886, 896, + 896, 896, 896, 889, 882, 882, 894, 3, + 885, 882, 895, 889, 897, 897, 899, 900, + 894, 3, 885, 897, 898, 889, 897, 897, + 892, 893, 894, 3, 885, 896, 896, 897, + 898, 896, 896, 896, 889, 897, 897, 899, + 900, 894, 3, 885, 896, 896, 897, 898, + 896, 896, 896, 889, 901, 901, 895, 903, + 892, 904, 901, 902, 899, 901, 882, 906, + 904, 905, 905, 901, 905, 905, 905, 892, + 882, 892, 905, 882, 906, 907, 904, 905, + 905, 905, 905, 905, 905, 892, 882, 908, + 892, 909, 909, 901, 911, 903, 892, 904, + 909, 910, 899, 912, 912, 901, 911, 903, + 892, 904, 912, 913, 899, 912, 912, 901, + 911, 903, 892, 904, 914, 914, 912, 913, + 914, 914, 914, 899, 912, 912, 902, 915, + 903, 892, 904, 914, 914, 912, 913, 914, + 914, 914, 899, 901, 901, 895, 903, 892, + 904, 914, 914, 901, 902, 914, 914, 914, + 899, 905, 905, 895, 903, 892, 910, 904, + 914, 914, 905, 914, 914, 914, 914, 899, + 901, 901, 895, 903, 892, 904, 901, 902, + 899, 912, 912, 902, 915, 903, 892, 904, + 912, 913, 899, 916, 916, 918, 902, 919, + 911, 920, 916, 917, 915, 916, 921, 901, + 923, 920, 922, 922, 916, 922, 922, 922, + 911, 921, 901, 911, 921, 882, 925, 926, + 924, 924, 921, 924, 924, 924, 893, 882, + 893, 924, 882, 925, 927, 926, 924, 924, + 924, 924, 924, 924, 893, 882, 928, 893, + 929, 929, 911, 921, 931, 893, 926, 929, + 930, 900, 921, 921, 895, 931, 893, 926, + 921, 918, 900, 921, 921, 895, 931, 893, + 926, 932, 932, 921, 918, 932, 932, 932, + 900, 924, 924, 895, 931, 893, 930, 926, + 932, 932, 924, 932, 932, 932, 932, 900, + 921, 921, 895, 931, 893, 926, 921, 918, + 900, 933, 933, 915, 918, 931, 893, 926, + 933, 934, 900, 933, 933, 911, 921, 931, + 893, 926, 932, 932, 933, 934, 932, 932, + 932, 900, 933, 933, 915, 918, 931, 893, + 926, 932, 932, 933, 934, 932, 932, 932, + 900, 933, 933, 911, 921, 931, 893, 926, + 933, 934, 900, 922, 921, 901, 923, 935, + 920, 922, 922, 922, 922, 922, 922, 911, + 921, 901, 936, 911, 937, 937, 916, 916, + 919, 911, 920, 937, 938, 915, 939, 939, + 916, 916, 919, 911, 920, 939, 940, 915, + 939, 939, 916, 916, 919, 911, 920, 941, + 941, 939, 940, 941, 941, 941, 915, 939, + 939, 917, 917, 919, 911, 920, 941, 941, + 939, 940, 941, 941, 941, 915, 916, 916, + 918, 902, 919, 911, 920, 941, 941, 916, + 917, 941, 941, 941, 915, 922, 922, 918, + 902, 919, 911, 938, 920, 941, 941, 922, + 941, 941, 941, 941, 915, 916, 916, 918, + 902, 919, 911, 920, 916, 917, 915, 939, + 939, 917, 917, 919, 911, 920, 939, 940, + 915, 897, 897, 892, 893, 894, 3, 885, + 897, 898, 889, 882, 884, 885, 883, 883, + 942, 882, 883, 883, 883, 208, 882, 884, + 885, 883, 883, 943, 882, 883, 883, 883, + 208, 882, 884, 885, 883, 883, 944, 882, + 883, 883, 883, 208, 946, 947, 948, 944, + 944, 946, 944, 944, 944, 945, 949, 945, + 946, 947, 948, 950, 950, 946, 950, 950, + 950, 945, 950, 947, 951, 948, 950, 950, + 950, 950, 950, 950, 945, 948, 945, 953, + 953, 955, 956, 957, 945, 948, 953, 954, + 952, 946, 946, 957, 945, 948, 946, 958, + 952, 946, 946, 957, 945, 948, 959, 959, + 946, 958, 959, 959, 959, 952, 950, 950, + 957, 945, 954, 948, 959, 959, 950, 959, + 959, 959, 959, 952, 946, 946, 957, 945, + 948, 946, 958, 952, 960, 960, 962, 963, + 957, 945, 948, 960, 961, 952, 960, 960, + 955, 956, 957, 945, 948, 959, 959, 960, + 961, 959, 959, 959, 952, 960, 960, 962, + 963, 957, 945, 948, 959, 959, 960, 961, + 959, 959, 959, 952, 964, 964, 958, 966, + 955, 967, 964, 965, 962, 964, 946, 969, + 967, 968, 968, 964, 968, 968, 968, 955, + 946, 970, 955, 968, 946, 969, 971, 967, + 968, 968, 968, 968, 968, 968, 955, 946, + 967, 955, 972, 972, 964, 974, 966, 955, + 967, 972, 973, 962, 975, 975, 964, 974, + 966, 955, 967, 975, 976, 962, 975, 975, + 964, 974, 966, 955, 967, 977, 977, 975, + 976, 977, 977, 977, 962, 975, 975, 965, + 978, 966, 955, 967, 977, 977, 975, 976, + 977, 977, 977, 962, 964, 964, 958, 966, + 955, 967, 977, 977, 964, 965, 977, 977, + 977, 962, 968, 968, 958, 966, 955, 973, + 967, 977, 977, 968, 977, 977, 977, 977, + 962, 964, 964, 958, 966, 955, 967, 964, + 965, 962, 975, 975, 965, 978, 966, 955, + 967, 975, 976, 962, 979, 979, 981, 965, + 982, 974, 983, 979, 980, 978, 979, 984, + 964, 986, 983, 985, 985, 979, 985, 985, + 985, 974, 984, 964, 987, 974, 984, 946, + 989, 990, 988, 988, 984, 988, 988, 988, + 956, 946, 991, 956, 988, 946, 989, 992, + 990, 988, 988, 988, 988, 988, 988, 956, + 946, 990, 956, 993, 993, 974, 984, 995, + 956, 990, 993, 994, 963, 984, 984, 958, + 995, 956, 990, 984, 981, 963, 984, 984, + 958, 995, 956, 990, 996, 996, 984, 981, + 996, 996, 996, 963, 988, 988, 958, 995, + 956, 994, 990, 996, 996, 988, 996, 996, + 996, 996, 963, 984, 984, 958, 995, 956, + 990, 984, 981, 963, 997, 997, 978, 981, + 995, 956, 990, 997, 998, 963, 997, 997, + 974, 984, 995, 956, 990, 996, 996, 997, + 998, 996, 996, 996, 963, 997, 997, 978, + 981, 995, 956, 990, 996, 996, 997, 998, + 996, 996, 996, 963, 997, 997, 974, 984, + 995, 956, 990, 997, 998, 963, 985, 984, + 964, 986, 999, 983, 985, 985, 985, 985, + 985, 985, 974, 984, 964, 983, 974, 1000, + 1000, 979, 979, 982, 974, 983, 1000, 1001, + 978, 1002, 1002, 979, 979, 982, 974, 983, + 1002, 1003, 978, 1002, 1002, 979, 979, 982, + 974, 983, 1004, 1004, 1002, 1003, 1004, 1004, + 1004, 978, 1002, 1002, 980, 980, 982, 974, + 983, 1004, 1004, 1002, 1003, 1004, 1004, 1004, + 978, 979, 979, 981, 965, 982, 974, 983, + 1004, 1004, 979, 980, 1004, 1004, 1004, 978, + 985, 985, 981, 965, 982, 974, 1001, 983, + 1004, 1004, 985, 1004, 1004, 1004, 1004, 978, + 979, 979, 981, 965, 982, 974, 983, 979, + 980, 978, 1002, 1002, 980, 980, 982, 974, + 983, 1002, 1003, 978, 960, 960, 955, 956, + 957, 945, 948, 960, 961, 952, 882, 884, + 885, 883, 883, 1005, 882, 883, 883, 883, + 208, 882, 884, 885, 883, 883, 1006, 882, + 883, 883, 883, 208, 882, 884, 885, 883, + 883, 1007, 882, 883, 883, 883, 208, 882, + 884, 885, 883, 883, 1008, 882, 883, 883, + 883, 208, 882, 884, 885, 883, 883, 1009, + 882, 883, 883, 883, 208, 882, 884, 885, + 883, 883, 1010, 882, 883, 883, 883, 208, + 882, 884, 885, 883, 883, 1011, 882, 883, + 883, 883, 208, 882, 884, 885, 883, 883, + 1012, 882, 883, 883, 883, 208, 882, 884, + 1013, 883, 883, 882, 883, 883, 883, 208, + 1014, 1016, 1015, 1014, 1017, 1016, 1015, 1014, + 1016, 1018, 1015, 1014, 1016, 1019, 1015, 1014, + 1016, 1020, 1015, 1014, 1016, 1021, 1015, 1014, + 1016, 1022, 1015, 1014, 1016, 1023, 1015, 1014, + 1016, 1024, 1015, 1014, 1016, 1025, 1015, 1014, + 1016, 1026, 1015, 1014, 1016, 1027, 1015, 1014, + 1028, 1016, 1015, 1014, 1016, 1029, 1015, 1014, + 1016, 1030, 1015, 1014, 1016, 1031, 1015, 1014, + 1016, 1032, 1015, 1014, 1016, 1033, 1015, 1014, + 1016, 1034, 1015, 1014, 1016, 1035, 1015, 1014, + 1016, 1036, 1015, 1014, 1016, 1037, 1015, 1014, + 1016, 1014, 1015, 882, 884, 885, 883, 883, + 1038, 882, 883, 883, 883, 208, 882, 884, + 885, 883, 883, 1039, 882, 883, 883, 883, + 208, 882, 884, 885, 883, 883, 1040, 882, + 883, 883, 883, 208, 882, 884, 885, 883, + 883, 1041, 882, 883, 883, 883, 208, 882, + 884, 885, 883, 883, 1042, 882, 883, 883, + 883, 208, 1044, 1045, 1046, 1042, 1042, 1044, + 1042, 1042, 1042, 1043, 1047, 1043, 208, 1049, + 1048, 3, 1050, 1048, 3, 1051, 1050, 1048, + 3, 1050, 1052, 1048, 3, 1050, 1053, 1048, + 3, 1050, 1054, 1048, 3, 1050, 1055, 1048, + 3, 1050, 1056, 1048, 3, 1050, 1057, 1048, + 3, 1050, 1058, 1048, 3, 1059, 1050, 1048, + 3, 1050, 1060, 1048, 3, 1050, 1061, 1048, + 3, 1050, 1062, 1048, 3, 1050, 1063, 1048, + 3, 1050, 1064, 1048, 3, 1050, 1065, 1048, + 3, 1050, 3, 1048, 1044, 1045, 1046, 1066, + 1066, 1044, 1066, 1066, 1066, 1043, 1066, 1045, + 1067, 1046, 1066, 1066, 1066, 1066, 1066, 1066, + 1043, 1068, 1043, 1070, 1070, 1072, 1073, 1074, + 1043, 1046, 1070, 1071, 1069, 1044, 1044, 1074, + 1043, 1046, 1044, 1075, 1069, 1044, 1044, 1074, + 1043, 1046, 1076, 1076, 1044, 1075, 1076, 1076, + 1076, 1069, 1066, 1066, 1074, 1043, 1071, 1046, + 1076, 1076, 1066, 1076, 1076, 1076, 1076, 1069, + 1044, 1044, 1074, 1043, 1046, 1044, 1075, 1069, + 1077, 1077, 1079, 1080, 1074, 1043, 1046, 1077, + 1078, 1069, 1077, 1077, 1072, 1073, 1074, 1043, + 1046, 1076, 1076, 1077, 1078, 1076, 1076, 1076, + 1069, 1077, 1077, 1079, 1080, 1074, 1043, 1046, + 1076, 1076, 1077, 1078, 1076, 1076, 1076, 1069, + 1081, 1081, 1075, 1083, 1072, 1084, 1081, 1082, + 1079, 1081, 1044, 1086, 1084, 1085, 1085, 1081, + 1085, 1085, 1085, 1072, 1044, 1087, 1072, 892, + 1089, 1090, 1088, 892, 1089, 1091, 1088, 3, + 1089, 1093, 1050, 1094, 1092, 1092, 1089, 1092, + 1092, 1092, 1048, 3, 1092, 1093, 1050, 1095, + 1094, 1092, 1092, 1092, 1092, 1092, 1092, 1048, + 3, 1050, 1096, 1048, 889, 1098, 1098, 1088, + 1100, 1101, 1050, 1094, 1098, 1099, 1097, 889, + 1089, 1089, 1101, 1050, 1094, 1089, 1102, 1097, + 889, 1089, 1089, 1101, 1050, 1094, 1103, 1103, + 1089, 1102, 1103, 1103, 1103, 1097, 889, 1092, + 1092, 1101, 1050, 1099, 1094, 1103, 1103, 1092, + 1103, 1103, 1103, 1103, 1097, 889, 1089, 1089, + 1101, 1050, 1094, 1089, 1102, 1097, 889, 1104, + 1104, 1106, 1107, 1101, 1050, 1094, 1104, 1105, + 1097, 889, 1104, 1104, 1088, 1100, 1101, 1050, + 1094, 1103, 1103, 1104, 1105, 1103, 1103, 1103, + 1097, 889, 1104, 1104, 1106, 1107, 1101, 1050, + 1094, 1103, 1103, 1104, 1105, 1103, 1103, 1103, + 1097, 899, 1108, 1108, 1102, 1110, 1091, 1111, + 1108, 1109, 1106, 892, 1108, 1089, 1113, 1091, + 1111, 1112, 1112, 1108, 1112, 1112, 1112, 1088, + 892, 1112, 1089, 1113, 1091, 1114, 1111, 1112, + 1112, 1112, 1112, 1112, 1112, 1088, 892, 1089, + 1091, 1115, 1088, 892, 1089, 1116, 1091, 1088, + 892, 1089, 1091, 1117, 1088, 892, 1089, 1091, + 1118, 1088, 892, 1089, 1091, 1119, 1088, 892, + 1089, 1091, 1120, 1088, 892, 1089, 1091, 1121, + 1088, 892, 1089, 1091, 1122, 1088, 892, 1089, + 1091, 1123, 1088, 899, 1124, 1124, 1108, 1126, + 1110, 1091, 1111, 1124, 1125, 1106, 899, 1127, + 1127, 1108, 1126, 1110, 1091, 1111, 1127, 1128, + 1106, 899, 1127, 1127, 1108, 1126, 1110, 1091, + 1111, 1129, 1129, 1127, 1128, 1129, 1129, 1129, + 1106, 899, 1127, 1127, 1109, 1130, 1110, 1091, + 1111, 1129, 1129, 1127, 1128, 1129, 1129, 1129, + 1106, 899, 1108, 1108, 1102, 1110, 1091, 1111, + 1129, 1129, 1108, 1109, 1129, 1129, 1129, 1106, + 899, 1112, 1112, 1102, 1110, 1091, 1125, 1111, + 1129, 1129, 1112, 1129, 1129, 1129, 1129, 1106, + 899, 1108, 1108, 1102, 1110, 1091, 1111, 1108, + 1109, 1106, 899, 1127, 1127, 1109, 1130, 1110, + 1091, 1111, 1127, 1128, 1106, 915, 1131, 1131, + 1133, 1109, 1134, 1135, 1136, 1131, 1132, 1130, + 911, 1131, 1137, 1108, 1139, 1135, 1136, 1138, + 1138, 1131, 1138, 1138, 1138, 1126, 911, 1137, + 1108, 1135, 1126, 893, 1137, 1089, 1141, 1142, + 1143, 1140, 1140, 1137, 1140, 1140, 1140, 1100, + 893, 1089, 1142, 1100, 893, 1089, 1144, 1142, + 1100, 893, 1089, 1142, 1145, 1100, 893, 1089, + 1142, 1146, 1100, 893, 1089, 1142, 1147, 1100, + 893, 1089, 1142, 1148, 1100, 893, 1089, 1142, + 1149, 1100, 893, 1089, 1142, 1150, 1100, 893, + 1089, 1142, 1151, 1100, 893, 1140, 1089, 1141, + 1142, 1152, 1143, 1140, 1140, 1140, 1140, 1140, + 1140, 1100, 893, 1089, 1142, 1153, 1100, 900, + 1154, 1154, 1126, 1137, 1156, 1142, 1143, 1154, + 1155, 1107, 900, 1137, 1137, 1102, 1156, 1142, + 1143, 1137, 1133, 1107, 900, 1137, 1137, 1102, + 1156, 1142, 1143, 1157, 1157, 1137, 1133, 1157, + 1157, 1157, 1107, 900, 1140, 1140, 1102, 1156, + 1142, 1155, 1143, 1157, 1157, 1140, 1157, 1157, + 1157, 1157, 1107, 900, 1137, 1137, 1102, 1156, + 1142, 1143, 1137, 1133, 1107, 900, 1158, 1158, + 1130, 1133, 1156, 1142, 1143, 1158, 1159, 1107, + 900, 1158, 1158, 1126, 1137, 1156, 1142, 1143, + 1157, 1157, 1158, 1159, 1157, 1157, 1157, 1107, + 900, 1158, 1158, 1130, 1133, 1156, 1142, 1143, + 1157, 1157, 1158, 1159, 1157, 1157, 1157, 1107, + 900, 1158, 1158, 1126, 1137, 1156, 1142, 1143, + 1158, 1159, 1107, 911, 1137, 1108, 1160, 1135, + 1126, 911, 1137, 1108, 1135, 1161, 1126, 911, + 1137, 1108, 1135, 1162, 1126, 911, 1137, 1108, + 1135, 1163, 1126, 911, 1137, 1108, 1135, 1164, + 1126, 911, 1137, 1108, 1135, 1165, 1126, 911, + 1137, 1108, 1135, 1166, 1126, 911, 1137, 1108, + 1135, 1167, 1126, 911, 1138, 1137, 1108, 1139, + 1135, 1168, 1136, 1138, 1138, 1138, 1138, 1138, + 1138, 1126, 911, 1137, 1108, 1135, 1169, 1126, + 915, 1170, 1170, 1131, 1131, 1134, 1135, 1136, + 1170, 1171, 1130, 915, 1172, 1172, 1131, 1131, + 1134, 1135, 1136, 1172, 1173, 1130, 915, 1172, + 1172, 1131, 1131, 1134, 1135, 1136, 1174, 1174, + 1172, 1173, 1174, 1174, 1174, 1130, 915, 1172, + 1172, 1132, 1132, 1134, 1135, 1136, 1174, 1174, + 1172, 1173, 1174, 1174, 1174, 1130, 915, 1131, + 1131, 1133, 1109, 1134, 1135, 1136, 1174, 1174, + 1131, 1132, 1174, 1174, 1174, 1130, 915, 1138, + 1138, 1133, 1109, 1134, 1135, 1171, 1136, 1174, + 1174, 1138, 1174, 1174, 1174, 1174, 1130, 915, + 1131, 1131, 1133, 1109, 1134, 1135, 1136, 1131, + 1132, 1130, 915, 1172, 1172, 1132, 1132, 1134, + 1135, 1136, 1172, 1173, 1130, 889, 1104, 1104, + 1088, 1100, 1101, 1050, 1094, 1104, 1105, 1097, + 892, 1089, 1175, 1091, 1088, 892, 1089, 1091, + 1176, 1088, 892, 1089, 1091, 1177, 1088, 892, + 1089, 1091, 1178, 1088, 892, 1089, 1091, 1179, + 1088, 892, 1089, 1091, 1180, 1088, 892, 1089, + 1091, 1181, 1088, 892, 1089, 1091, 892, 1088, + 1085, 1044, 1086, 1182, 1084, 1085, 1085, 1085, + 1085, 1085, 1085, 1072, 1044, 1183, 1072, 1184, + 1184, 1081, 1186, 1083, 1072, 1084, 1184, 1185, + 1079, 1187, 1187, 1081, 1186, 1083, 1072, 1084, + 1187, 1188, 1079, 1187, 1187, 1081, 1186, 1083, + 1072, 1084, 1189, 1189, 1187, 1188, 1189, 1189, + 1189, 1079, 1187, 1187, 1082, 1190, 1083, 1072, + 1084, 1189, 1189, 1187, 1188, 1189, 1189, 1189, + 1079, 1081, 1081, 1075, 1083, 1072, 1084, 1189, + 1189, 1081, 1082, 1189, 1189, 1189, 1079, 1085, + 1085, 1075, 1083, 1072, 1185, 1084, 1189, 1189, + 1085, 1189, 1189, 1189, 1189, 1079, 1081, 1081, + 1075, 1083, 1072, 1084, 1081, 1082, 1079, 1187, + 1187, 1082, 1190, 1083, 1072, 1084, 1187, 1188, + 1079, 1191, 1191, 1193, 1082, 1194, 1186, 1195, + 1191, 1192, 1190, 1191, 1196, 1081, 1198, 1195, + 1197, 1197, 1191, 1197, 1197, 1197, 1186, 1196, + 1081, 1199, 1186, 1196, 1044, 1201, 1202, 1200, + 1200, 1196, 1200, 1200, 1200, 1073, 1044, 1203, + 1073, 893, 1089, 1204, 1100, 893, 1089, 1205, + 1142, 1100, 893, 1089, 1142, 1206, 1100, 893, + 1089, 1142, 1207, 1100, 893, 1089, 1142, 1208, + 1100, 893, 1089, 1142, 1209, 1100, 893, 1089, + 1142, 1210, 1100, 893, 1089, 1142, 1211, 1100, + 893, 1089, 1142, 893, 1100, 1200, 1044, 1201, + 1212, 1202, 1200, 1200, 1200, 1200, 1200, 1200, + 1073, 1044, 1213, 1073, 1214, 1214, 1186, 1196, + 1216, 1073, 1202, 1214, 1215, 1080, 1196, 1196, + 1075, 1216, 1073, 1202, 1196, 1193, 1080, 1196, + 1196, 1075, 1216, 1073, 1202, 1217, 1217, 1196, + 1193, 1217, 1217, 1217, 1080, 1200, 1200, 1075, + 1216, 1073, 1215, 1202, 1217, 1217, 1200, 1217, + 1217, 1217, 1217, 1080, 1196, 1196, 1075, 1216, + 1073, 1202, 1196, 1193, 1080, 1218, 1218, 1190, + 1193, 1216, 1073, 1202, 1218, 1219, 1080, 1218, + 1218, 1186, 1196, 1216, 1073, 1202, 1217, 1217, + 1218, 1219, 1217, 1217, 1217, 1080, 1218, 1218, + 1190, 1193, 1216, 1073, 1202, 1217, 1217, 1218, + 1219, 1217, 1217, 1217, 1080, 1218, 1218, 1186, + 1196, 1216, 1073, 1202, 1218, 1219, 1080, 911, + 1137, 1108, 1220, 1126, 911, 1137, 1108, 1221, + 1135, 1126, 911, 1137, 1108, 1135, 1222, 1126, + 911, 1137, 1108, 1135, 1223, 1126, 911, 1137, + 1108, 1135, 1224, 1126, 911, 1137, 1108, 1135, + 1225, 1126, 911, 1137, 1108, 1135, 1226, 1126, + 911, 1137, 1108, 1135, 1227, 1126, 911, 1137, + 1108, 1135, 911, 1126, 1197, 1196, 1081, 1198, + 1228, 1195, 1197, 1197, 1197, 1197, 1197, 1197, + 1186, 1196, 1081, 1229, 1186, 1230, 1230, 1191, + 1191, 1194, 1186, 1195, 1230, 1231, 1190, 1232, + 1232, 1191, 1191, 1194, 1186, 1195, 1232, 1233, + 1190, 1232, 1232, 1191, 1191, 1194, 1186, 1195, + 1234, 1234, 1232, 1233, 1234, 1234, 1234, 1190, + 1232, 1232, 1192, 1192, 1194, 1186, 1195, 1234, + 1234, 1232, 1233, 1234, 1234, 1234, 1190, 1191, + 1191, 1193, 1082, 1194, 1186, 1195, 1234, 1234, + 1191, 1192, 1234, 1234, 1234, 1190, 1197, 1197, + 1193, 1082, 1194, 1186, 1231, 1195, 1234, 1234, + 1197, 1234, 1234, 1234, 1234, 1190, 1191, 1191, + 1193, 1082, 1194, 1186, 1195, 1191, 1192, 1190, + 1232, 1232, 1192, 1192, 1194, 1186, 1195, 1232, + 1233, 1190, 1077, 1077, 1072, 1073, 1074, 1043, + 1046, 1077, 1078, 1069, 208, 208, 208, 1235, + 208, 1237, 1238, 1237, 1239, 208, 1236, 208, + 1237, 1238, 1237, 208, 1236, 208, 1237, 1237, + 208, 1236, 1240, 208, 208, 208, 208, 1241, + 208, 1243, 1244, 1243, 1245, 208, 1242, 208, + 1243, 1244, 1243, 208, 1242, 208, 1243, 1243, + 208, 1242, 1246, 208, 3, 1248, 1249, 1248, + 3, 1247, 3, 1248, 1249, 1248, 1250, 3, + 1247, 3, 1248, 1248, 3, 1247, 3, 1251, + 3, 1253, 1252, 208, 256, 257, 258, 259, + 260, 261, 262, 1254, 1255, 1256, 263, 257, + 264, 208, 208, 257, 208, 257, 257, 255, + 208, 1258, 1259, 1260, 1261, 1262, 1263, 208, + 1257, 208, 1265, 1266, 1267, 1268, 208, 1264, + 208, 1265, 1266, 1265, 1269, 208, 1264, 208, + 1265, 1265, 1269, 208, 1264, 208, 1271, 1272, + 1273, 1274, 357, 208, 1270, 208, 1271, 1272, + 1273, 1274, 208, 1270, 208, 1271, 1272, 1271, + 1269, 208, 1270, 208, 1271, 1271, 1269, 208, + 1270, 208, 1271, 1272, 1271, 1275, 208, 1270, + 208, 1271, 1272, 1273, 1277, 357, 208, 1276, + 208, 1278, 1279, 1278, 1280, 208, 1276, 208, + 1278, 1279, 1278, 1281, 208, 1276, 208, 1278, + 1278, 1281, 208, 1276, 208, 1278, 1279, 1278, + 1280, 357, 208, 1276, 3, 1283, 1284, 1283, + 1285, 3, 1282, 3, 1283, 1284, 1283, 1286, + 3, 1282, 3, 1283, 1283, 1286, 3, 1282, + 3, 1283, 1284, 1283, 1285, 3, 3, 1282, + 3, 1283, 1284, 1287, 1285, 3, 3, 1282, + 3, 1283, 1284, 1283, 1289, 3, 1288, 3, + 1290, 1291, 1290, 1292, 3, 1288, 3, 1290, + 1291, 1290, 1293, 3, 1288, 3, 1290, 1290, + 1293, 3, 1288, 3, 1290, 1291, 1290, 1292, + 3, 3, 1288, 3, 1290, 1291, 1294, 1292, + 1295, 3, 1288, 3, 1290, 1291, 1290, 1289, + 3, 1288, 3, 1290, 1291, 1290, 1292, 1295, + 3, 1288, 3, 1297, 1298, 1299, 1300, 1301, + 1298, 3, 3, 1298, 3, 3, 1298, 1298, + 1296, 3, 1303, 1304, 3, 1303, 3, 3, + 1303, 3, 3, 1303, 1303, 1302, 3, 1305, + 3, 3, 1306, 3, 3, 1303, 1307, 1307, + 1307, 3, 1303, 1303, 1303, 3, 1308, 1308, + 1308, 3, 1302, 1302, 1302, 3, 3, 1303, + 1310, 3, 1306, 1303, 3, 3, 1303, 3, + 3, 1303, 1303, 1309, 1311, 1311, 1311, 3, + 1309, 1309, 1309, 3, 3, 1303, 1304, 1312, + 3, 1303, 3, 3, 1303, 3, 3, 1303, + 1303, 1302, 3, 1303, 1304, 1313, 1306, 1303, + 3, 3, 1303, 3, 3, 1303, 1303, 1302, + 3, 1315, 1316, 1317, 1318, 3, 1314, 3, + 1315, 1316, 1315, 1318, 3, 1314, 3, 1315, + 1315, 1318, 3, 1314, 3, 1315, 1316, 1317, + 1318, 3, 3, 1314, 3, 1315, 1316, 1315, + 1319, 3, 1314, 3, 1315, 1316, 1317, 1286, + 3, 3, 1282, 208, 1265, 1266, 1265, 1275, + 208, 1264, 3, 1321, 1322, 3, 1320, 3, + 1323, 1324, 1325, 1326, 3, 1320, 3, 1323, + 1324, 1323, 1318, 3, 1320, 3, 1323, 1323, + 1318, 3, 1320, 3, 1323, 1324, 1323, 1319, + 3, 1320, 3, 1315, 1316, 1317, 1318, 1295, + 3, 1314, 3, 1315, 1316, 1317, 1328, 3, + 3, 1327, 3, 1329, 1330, 1331, 1332, 3, + 1327, 3, 1329, 1330, 1329, 1328, 3, 1327, + 3, 1329, 1329, 1328, 3, 1327, 3, 1329, + 1330, 1331, 1332, 3, 3, 1327, 3, 1329, + 1330, 1329, 1333, 3, 1327, 3, 1329, 1330, + 1331, 1335, 3, 3, 1334, 3, 1336, 1337, + 1336, 1338, 3, 1334, 3, 1336, 1337, 1336, + 1339, 3, 1334, 3, 1336, 1336, 1339, 3, + 1334, 3, 1336, 1337, 1336, 1338, 3, 3, + 1334, 3, 1336, 1337, 1340, 1341, 3, 3, + 1334, 3, 1336, 1337, 1336, 1289, 3, 1288, + 3, 1336, 1337, 1340, 1341, 1295, 3, 1334, + 3, 1336, 1337, 1336, 1341, 3, 3, 1334, + 3, 1329, 1330, 1331, 1342, 3, 3, 1327, + 3, 1329, 1330, 1331, 1342, 1295, 3, 1327, + 208, 1271, 1272, 1273, 1344, 357, 208, 1343, + 208, 1345, 1346, 1347, 1348, 208, 1343, 208, + 1345, 1346, 1345, 1349, 208, 1343, 208, 1345, + 1345, 1349, 208, 1343, 208, 1345, 1346, 1347, + 1348, 357, 208, 1343, 208, 1345, 1346, 1345, + 1350, 208, 1343, 208, 1345, 1346, 1347, 1352, + 357, 208, 1351, 208, 1353, 1354, 1353, 1355, + 208, 1351, 208, 1353, 1354, 1353, 1356, 208, + 1351, 208, 1353, 1353, 1356, 208, 1351, 208, + 1353, 1354, 1353, 1355, 357, 208, 1351, 1358, + 1359, 1360, 1361, 1362, 1363, 1364, 1358, 1357, + 1365, 1366, 1358, 3, 1367, 1366, 1367, 3, + 1321, 1322, 1368, 1369, 1370, 1371, 3, 1320, + 1358, 1372, 1373, 1374, 1375, 1376, 1377, 1358, + 1368, 1358, 1372, 1373, 1372, 1378, 1376, 1377, + 1358, 1368, 1358, 1372, 1372, 1378, 1376, 1377, + 1358, 1368, 1358, 1380, 1381, 1382, 1378, 1383, + 1384, 1358, 1358, 1379, 1358, 1380, 1381, 1382, + 1378, 1383, 1384, 1358, 1379, 1358, 1380, 1381, + 1380, 1378, 1383, 1384, 1358, 1379, 1358, 1380, + 1380, 1378, 1383, 1384, 1358, 1379, 1367, 1386, + 1387, 1388, 1389, 1314, 1367, 1385, 1367, 1386, + 1387, 1388, 1389, 1384, 1367, 1385, 1367, 1386, + 1387, 1386, 1389, 1384, 1367, 1385, 1367, 1386, + 1386, 1389, 1384, 1367, 1385, 1367, 1386, 1387, + 1388, 1389, 1384, 1367, 1367, 1385, 1367, 1386, + 1387, 1386, 1390, 1384, 1367, 1385, 1367, 1386, + 1387, 1388, 1392, 1393, 1367, 1367, 1391, 1367, + 1394, 1395, 1394, 1396, 1393, 1367, 1391, 1367, + 1394, 1395, 1394, 1392, 1393, 1367, 1391, 1367, + 1394, 1394, 1392, 1393, 1367, 1391, 1367, 1394, + 1395, 1394, 1396, 1393, 1367, 1367, 1391, 1367, + 1394, 1395, 1397, 1396, 1393, 1367, 1367, 1391, + 1367, 1394, 1395, 1394, 1399, 1400, 1367, 1398, + 1367, 1401, 1402, 1401, 1403, 1400, 1367, 1398, + 1367, 1401, 1402, 1401, 1404, 1400, 1367, 1398, + 1367, 1401, 1401, 1404, 1400, 1367, 1398, 1367, + 1401, 1402, 1401, 1403, 1400, 1367, 1367, 1398, + 1367, 1401, 1402, 1405, 1403, 1400, 1406, 1367, + 1398, 1367, 1401, 1402, 1401, 1399, 1400, 1367, + 1398, 1367, 1401, 1402, 1401, 1403, 1400, 1406, + 1367, 1398, 3, 1290, 1291, 1290, 1292, 1407, + 1408, 1409, 3, 1288, 1358, 1410, 1411, 1410, + 1412, 1413, 1400, 1358, 1407, 1358, 1410, 1411, + 1410, 1414, 1413, 1400, 1358, 1407, 1358, 1410, + 1410, 1414, 1413, 1400, 1358, 1407, 1358, 1410, + 1411, 1410, 1412, 1413, 1400, 1358, 1358, 1407, + 1358, 1410, 1411, 1415, 1412, 1413, 1400, 1416, + 1358, 1407, 1358, 1410, 1411, 1410, 1417, 1413, + 1400, 1358, 1407, 1358, 1410, 1411, 1410, 1412, + 1413, 1400, 1416, 1358, 1407, 1367, 1401, 1402, + 1401, 1403, 1288, 1367, 1398, 1358, 1419, 1420, + 1421, 1422, 1423, 1424, 1420, 1358, 1358, 1420, + 1358, 1358, 1420, 1420, 1418, 1358, 1426, 1427, + 1428, 1429, 1358, 1427, 1358, 1358, 1427, 1358, + 1358, 1427, 1427, 1425, 1367, 1431, 1432, 1302, + 1367, 1431, 1367, 1367, 1431, 1367, 1367, 1431, + 1431, 1430, 1367, 1431, 1432, 1429, 1367, 1431, + 1367, 1367, 1431, 1367, 1367, 1431, 1431, 1430, + 1367, 1433, 1434, 1367, 1367, 1306, 1367, 1367, + 1431, 1366, 1435, 1435, 1435, 1367, 1366, 1431, + 1431, 1431, 1367, 3, 1321, 1322, 1437, 1438, + 1439, 1320, 1320, 1440, 1306, 1441, 1320, 1320, + 3, 1320, 1436, 3, 1323, 1324, 1325, 1326, + 1437, 1320, 1320, 1306, 1320, 1320, 3, 1320, + 1436, 3, 1323, 1324, 1325, 1326, 3, 1442, + 1442, 1442, 1320, 3, 1323, 1324, 1325, 1326, + 3, 1436, 1436, 1436, 1320, 1358, 1372, 1373, + 1374, 1375, 1443, 1444, 1445, 1368, 1368, 1306, + 1368, 1368, 1358, 1368, 1438, 1358, 1372, 1373, + 1372, 1446, 1376, 1377, 1358, 1368, 1358, 1380, + 1381, 1382, 1448, 1449, 1393, 1358, 1358, 1447, + 1358, 1450, 1451, 1450, 1452, 1449, 1393, 1358, + 1447, 1358, 1450, 1451, 1450, 1448, 1449, 1393, + 1358, 1447, 1358, 1450, 1450, 1448, 1449, 1393, + 1358, 1447, 1358, 1450, 1451, 1450, 1452, 1449, + 1393, 1358, 1358, 1447, 1358, 1450, 1451, 1453, + 1452, 1449, 1393, 1358, 1358, 1447, 1358, 1450, + 1451, 1450, 1417, 1413, 1400, 1358, 1407, 1367, + 1394, 1395, 1394, 1396, 1282, 1367, 1391, 3, + 1283, 1284, 1455, 1456, 1457, 1458, 1459, 1460, + 3, 1454, 3, 1461, 1462, 1461, 1463, 3, + 1454, 3, 1461, 1462, 1461, 1286, 3, 1454, + 3, 1461, 1461, 1286, 3, 1454, 3, 1283, + 1284, 1287, 1285, 1295, 3, 1282, 3, 1283, + 1284, 1455, 1464, 3, 1454, 3, 1283, 1284, + 1283, 1465, 3, 3, 1334, 3, 1336, 1337, + 1340, 1338, 3, 3, 1334, 3, 1283, 1284, + 1287, 1465, 3, 3, 1334, 1358, 1466, 1467, + 1466, 1468, 1469, 1470, 1358, 1457, 1358, 1466, + 1467, 1466, 1448, 1469, 1470, 1358, 1457, 1358, + 1466, 1466, 1448, 1469, 1470, 1358, 1457, 1367, + 1472, 1473, 1472, 1474, 1454, 1367, 1471, 1367, + 1472, 1473, 1472, 1474, 1470, 1367, 1471, 1367, + 1472, 1473, 1472, 1392, 1470, 1367, 1471, 1367, + 1472, 1472, 1392, 1470, 1367, 1471, 3, 1461, + 1462, 1475, 1476, 1457, 1458, 1459, 1460, 3, + 1454, 3, 1461, 1462, 1475, 1464, 3, 1454, + 3, 1283, 1284, 1287, 1465, 1295, 3, 1334, + 3, 1461, 1462, 1475, 1476, 1458, 3, 1454, + 1478, 1479, 1480, 1479, 1481, 1454, 1478, 1477, + 1478, 1479, 1480, 1479, 1481, 1470, 1478, 1477, + 1366, 1478, 1478, 1479, 1480, 1479, 1482, 1470, + 1478, 1477, 1478, 1479, 1479, 1482, 1470, 1478, + 1477, 1478, 1484, 1485, 1484, 1486, 1478, 1393, + 1478, 1483, 1478, 1484, 1485, 1484, 1486, 1393, + 1478, 1483, 1478, 1484, 1485, 1484, 1482, 1393, + 1478, 1483, 1478, 1484, 1484, 1482, 1393, 1478, + 1483, 1478, 1484, 1485, 1487, 1486, 1478, 1393, + 1478, 1483, 1478, 1484, 1485, 1484, 1489, 1400, + 1478, 1488, 1478, 1490, 1491, 1490, 1492, 1400, + 1478, 1488, 1478, 1490, 1491, 1490, 1493, 1400, + 1478, 1488, 1478, 1490, 1490, 1493, 1400, 1478, + 1488, 1478, 1490, 1491, 1490, 1492, 1478, 1400, + 1478, 1488, 1478, 1490, 1491, 1494, 1492, 1495, + 1400, 1478, 1488, 1478, 1490, 1491, 1490, 1489, + 1400, 1478, 1488, 1478, 1490, 1491, 1490, 1492, + 1495, 1400, 1478, 1488, 1478, 1497, 1498, 1499, + 1500, 1501, 1422, 1498, 1478, 1478, 1498, 1478, + 1478, 1498, 1498, 1496, 1478, 1503, 1504, 1478, + 1429, 1503, 1478, 1478, 1503, 1478, 1478, 1503, + 1503, 1502, 1478, 1505, 1478, 1478, 1306, 1478, + 1478, 1503, 1366, 1506, 1506, 1506, 1478, 1366, + 1503, 1503, 1503, 1478, 1366, 1507, 1507, 1507, + 1478, 1366, 1502, 1502, 1502, 1478, 3, 1321, + 1322, 1436, 1509, 1510, 1439, 1320, 1511, 1436, + 1512, 1320, 1320, 3, 1320, 1436, 1320, 1320, + 1436, 1436, 1508, 3, 1323, 1324, 1325, 1326, + 1436, 1509, 1320, 1436, 1320, 1320, 3, 1320, + 1436, 1320, 1320, 1436, 1436, 1508, 3, 1323, + 1324, 1325, 1326, 3, 1513, 1513, 1513, 1320, + 3, 1323, 1324, 1325, 1326, 3, 1508, 1508, + 1508, 1320, 1358, 1372, 1373, 1374, 1375, 1514, + 1438, 1515, 1516, 1368, 1438, 1368, 1368, 1358, + 1368, 1438, 1368, 1368, 1438, 1438, 1510, 1358, + 1380, 1381, 1382, 1378, 1383, 1384, 1416, 1358, + 1379, 1358, 1380, 1381, 1380, 1446, 1383, 1384, + 1358, 1379, 3, 1315, 1316, 1517, 1322, 1368, + 1369, 1370, 1371, 3, 1320, 3, 1315, 1316, + 1518, 1519, 3, 1320, 3, 1315, 1316, 1518, + 1322, 3, 1320, 3, 1315, 1316, 1317, 1339, + 3, 3, 1334, 3, 1323, 1324, 1520, 1521, + 1369, 3, 1320, 3, 1323, 1324, 1522, 1519, + 3, 1320, 3, 1323, 1324, 1522, 1322, 3, + 1320, 3, 1315, 1316, 1317, 1328, 1295, 3, + 1327, 1478, 1524, 1525, 1526, 1527, 1320, 1478, + 1523, 1478, 1524, 1525, 1526, 1527, 1377, 1478, + 1523, 1478, 1524, 1525, 1524, 1528, 1377, 1478, + 1523, 1478, 1524, 1524, 1528, 1377, 1478, 1523, + 1478, 1530, 1531, 1532, 1528, 1478, 1384, 1478, + 1529, 1478, 1530, 1531, 1532, 1528, 1384, 1478, + 1529, 1478, 1530, 1531, 1530, 1528, 1384, 1478, + 1529, 1478, 1530, 1530, 1528, 1384, 1478, 1529, + 1478, 1530, 1531, 1530, 1533, 1384, 1478, 1529, + 1478, 1530, 1531, 1532, 1482, 1478, 1393, 1478, + 1483, 3, 1323, 1324, 1520, 1521, 1368, 1369, + 1370, 1371, 3, 1320, 1535, 1536, 1537, 1538, + 1539, 1320, 1535, 1534, 1535, 1536, 1537, 1538, + 1539, 1377, 1535, 1534, 1366, 1535, 1535, 1536, + 1537, 1536, 1540, 1377, 1535, 1534, 1535, 1536, + 1536, 1540, 1377, 1535, 1534, 1535, 1542, 1543, + 1544, 1540, 1535, 1384, 1535, 1541, 1535, 1542, + 1543, 1544, 1540, 1384, 1535, 1541, 1535, 1542, + 1543, 1542, 1540, 1384, 1535, 1541, 1535, 1542, + 1542, 1540, 1384, 1535, 1541, 1535, 1542, 1543, + 1542, 1545, 1384, 1535, 1541, 1535, 1542, 1543, + 1544, 1547, 1535, 1393, 1535, 1546, 1535, 1548, + 1549, 1548, 1550, 1393, 1535, 1546, 1535, 1548, + 1549, 1548, 1547, 1393, 1535, 1546, 1535, 1548, + 1548, 1547, 1393, 1535, 1546, 1535, 1548, 1549, + 1548, 1550, 1535, 1393, 1535, 1546, 1535, 1548, + 1549, 1551, 1550, 1535, 1393, 1535, 1546, 1535, + 1548, 1549, 1548, 1553, 1400, 1535, 1552, 1535, + 1554, 1555, 1554, 1556, 1400, 1535, 1552, 1535, + 1554, 1555, 1554, 1557, 1400, 1535, 1552, 1535, + 1554, 1554, 1557, 1400, 1535, 1552, 1535, 1554, + 1555, 1554, 1556, 1535, 1400, 1535, 1552, 1535, + 1554, 1555, 1558, 1556, 1559, 1400, 1535, 1552, + 1535, 1554, 1555, 1554, 1553, 1400, 1535, 1552, + 1535, 1554, 1555, 1554, 1556, 1559, 1400, 1535, + 1552, 1535, 1561, 1562, 1563, 1564, 1565, 1562, + 1422, 1535, 1535, 1562, 1535, 1535, 1562, 1562, + 1560, 1535, 1567, 1568, 1535, 1567, 1429, 1535, + 1535, 1567, 1535, 1535, 1567, 1567, 1566, 1535, + 1569, 1535, 1535, 1306, 1434, 1535, 1535, 1567, + 1366, 1570, 1570, 1570, 1535, 1366, 1567, 1567, + 1567, 1535, 1366, 1571, 1571, 1571, 1535, 1366, + 1566, 1566, 1566, 1535, 1535, 1567, 1573, 1535, + 1306, 1567, 1574, 1535, 1535, 1567, 1535, 1535, + 1567, 1567, 1572, 1366, 1575, 1575, 1575, 1535, + 1366, 1572, 1572, 1572, 1535, 3, 1321, 1322, + 1436, 1577, 1578, 1439, 1320, 1579, 1306, 1436, + 1580, 1320, 1320, 3, 1320, 1436, 1320, 1320, + 1436, 1436, 1576, 3, 1323, 1324, 1325, 1326, + 1436, 1577, 1320, 1306, 1436, 1320, 1320, 3, + 1320, 1436, 1320, 1320, 1436, 1436, 1576, 3, + 1323, 1324, 1325, 1326, 3, 1581, 1581, 1581, + 1320, 3, 1323, 1324, 1325, 1326, 3, 1576, + 1576, 1576, 1320, 1358, 1372, 1373, 1374, 1375, + 1582, 1438, 1583, 1584, 1368, 1306, 1438, 1368, + 1368, 1358, 1368, 1438, 1368, 1368, 1438, 1438, + 1578, 1367, 1587, 1588, 1589, 1590, 1591, 1592, + 1576, 1586, 1306, 1591, 1586, 1586, 1367, 1586, + 1591, 1586, 1586, 1591, 1591, 1585, 1367, 1587, + 1588, 1589, 1590, 1591, 1592, 1584, 1586, 1306, + 1591, 1586, 1586, 1367, 1586, 1591, 1586, 1586, + 1591, 1591, 1585, 1367, 1587, 1588, 1589, 1590, + 1377, 1367, 1586, 1367, 1587, 1588, 1587, 1389, + 1377, 1367, 1586, 1367, 1587, 1587, 1389, 1377, + 1367, 1586, 1367, 1587, 1588, 1587, 1390, 1377, + 1367, 1586, 1367, 1386, 1387, 1388, 1389, 1384, + 1406, 1367, 1385, 1367, 1594, 1595, 1596, 1422, + 1597, 1598, 1595, 1367, 1367, 1595, 1367, 1367, + 1595, 1595, 1593, 1367, 1431, 1600, 1574, 1367, + 1306, 1431, 1367, 1367, 1431, 1367, 1367, 1431, + 1431, 1599, 1366, 1601, 1601, 1601, 1367, 1366, + 1599, 1599, 1599, 1367, 1366, 1602, 1602, 1602, + 1367, 1366, 1430, 1430, 1430, 1367, 1367, 1431, + 1432, 1429, 1603, 1367, 1431, 1367, 1367, 1431, + 1367, 1367, 1431, 1431, 1430, 1367, 1431, 1432, + 1429, 1604, 1306, 1431, 1367, 1367, 1431, 1367, + 1367, 1431, 1431, 1430, 1367, 1587, 1588, 1589, + 1590, 1605, 1445, 1586, 1586, 1306, 1586, 1586, + 1367, 1586, 1591, 1367, 1587, 1588, 1589, 1590, + 1377, 1367, 1606, 1606, 1606, 1586, 1367, 1587, + 1588, 1589, 1590, 1377, 1367, 1591, 1591, 1591, + 1586, 3, 1323, 1324, 1520, 1521, 1437, 1438, + 1439, 1320, 1320, 1440, 1306, 1441, 1320, 1320, + 3, 1320, 1436, 3, 1323, 1324, 1520, 1521, + 1437, 1439, 1320, 1320, 1306, 1320, 1320, 3, + 1320, 1436, 1478, 1524, 1525, 1526, 1527, 1607, + 1523, 1523, 1306, 1523, 1523, 1478, 1523, 1440, + 1478, 1524, 1525, 1524, 1533, 1377, 1478, 1523, + 1478, 1530, 1531, 1532, 1528, 1495, 1384, 1478, + 1529, 1478, 1524, 1525, 1526, 1527, 1377, 1478, + 1608, 1608, 1608, 1523, 1478, 1524, 1525, 1526, + 1527, 1377, 1478, 1440, 1440, 1440, 1523, 1535, + 1536, 1537, 1538, 1539, 1610, 1534, 1534, 1306, + 1436, 1534, 1534, 1535, 1534, 1609, 1535, 1536, + 1537, 1538, 1539, 1610, 1534, 1534, 1306, 1445, + 1534, 1534, 1535, 1534, 1609, 1535, 1536, 1537, + 1536, 1545, 1377, 1535, 1534, 1535, 1542, 1543, + 1544, 1540, 1559, 1384, 1535, 1541, 1535, 1536, + 1537, 1538, 1539, 1377, 1535, 1611, 1611, 1611, + 1534, 1535, 1536, 1537, 1538, 1539, 1377, 1535, + 1609, 1609, 1609, 1534, 1367, 1587, 1588, 1589, + 1590, 1377, 1367, 1612, 1612, 1612, 1586, 1367, + 1587, 1588, 1589, 1590, 1377, 1367, 1585, 1585, + 1585, 1586, 3, 1323, 1324, 1520, 1521, 1436, + 1577, 1578, 1439, 1320, 1579, 1306, 1436, 1580, + 1320, 1320, 3, 1320, 1436, 1320, 1320, 1436, + 1436, 1576, 1478, 1524, 1525, 1526, 1527, 1440, + 1613, 1523, 1306, 1440, 1523, 1523, 1478, 1523, + 1440, 1523, 1523, 1440, 1440, 1579, 1478, 1524, + 1525, 1526, 1527, 1377, 1478, 1614, 1614, 1614, + 1523, 1478, 1524, 1525, 1526, 1527, 1377, 1478, + 1579, 1579, 1579, 1523, 1535, 1536, 1537, 1538, + 1539, 1609, 1616, 1534, 1306, 1609, 1576, 1534, + 1534, 1535, 1534, 1609, 1534, 1534, 1609, 1609, + 1615, 1535, 1536, 1537, 1538, 1539, 1609, 1616, + 1534, 1306, 1609, 1584, 1534, 1534, 1535, 1534, + 1609, 1534, 1534, 1609, 1609, 1615, 1535, 1536, + 1537, 1538, 1539, 1377, 1535, 1617, 1617, 1617, + 1534, 1535, 1536, 1537, 1538, 1539, 1377, 1535, + 1615, 1615, 1615, 1534, 1358, 1372, 1373, 1374, + 1375, 1376, 1377, 1358, 1618, 1618, 1618, 1368, + 1367, 1587, 1588, 1589, 1590, 1320, 1367, 1586, + 1358, 1372, 1373, 1374, 1375, 1376, 1377, 1358, + 1578, 1578, 1578, 1368, 1535, 1567, 1568, 1619, + 1535, 1567, 1429, 1535, 1535, 1567, 1535, 1535, + 1567, 1567, 1566, 1535, 1567, 1568, 1620, 1306, + 1567, 1429, 1535, 1535, 1567, 1535, 1535, 1567, + 1567, 1566, 1367, 1587, 1588, 1589, 1590, 1591, + 1622, 1508, 1586, 1591, 1586, 1586, 1367, 1586, + 1591, 1586, 1586, 1591, 1591, 1621, 1367, 1587, + 1588, 1589, 1590, 1591, 1622, 1516, 1586, 1591, + 1586, 1586, 1367, 1586, 1591, 1586, 1586, 1591, + 1591, 1621, 1367, 1587, 1588, 1589, 1590, 1377, + 1367, 1623, 1623, 1623, 1586, 1367, 1587, 1588, + 1589, 1590, 1377, 1367, 1621, 1621, 1621, 1586, + 3, 1323, 1324, 1520, 1521, 1436, 1509, 1510, + 1439, 1320, 1511, 1436, 1512, 1320, 1320, 3, + 1320, 1436, 1320, 1320, 1436, 1436, 1508, 1478, + 1524, 1525, 1526, 1527, 1440, 1625, 1523, 1508, + 1440, 1523, 1523, 1478, 1523, 1440, 1523, 1523, + 1440, 1440, 1624, 1478, 1524, 1525, 1526, 1527, + 1440, 1625, 1523, 1516, 1440, 1523, 1523, 1478, + 1523, 1440, 1523, 1523, 1440, 1440, 1624, 1478, + 1524, 1525, 1526, 1527, 1377, 1478, 1626, 1626, + 1626, 1523, 1478, 1524, 1525, 1526, 1527, 1377, + 1478, 1624, 1624, 1624, 1523, 1535, 1536, 1537, + 1538, 1539, 1609, 1628, 1534, 1609, 1508, 1534, + 1534, 1535, 1534, 1609, 1534, 1534, 1609, 1609, + 1627, 1535, 1536, 1537, 1538, 1539, 1609, 1628, + 1534, 1609, 1516, 1534, 1534, 1535, 1534, 1609, + 1534, 1534, 1609, 1609, 1627, 1535, 1536, 1537, + 1538, 1539, 1377, 1535, 1629, 1629, 1629, 1534, + 1535, 1536, 1537, 1538, 1539, 1377, 1535, 1627, + 1627, 1627, 1534, 1358, 1372, 1373, 1374, 1375, + 1376, 1377, 1358, 1630, 1630, 1630, 1368, 1358, + 1372, 1373, 1374, 1375, 1376, 1377, 1358, 1510, + 1510, 1510, 1368, 1478, 1503, 1632, 1478, 1306, + 1503, 1478, 1478, 1503, 1478, 1478, 1503, 1503, + 1631, 1366, 1633, 1633, 1633, 1478, 1366, 1631, + 1631, 1631, 1478, 1478, 1503, 1504, 1634, 1478, + 1429, 1503, 1478, 1478, 1503, 1478, 1478, 1503, + 1503, 1502, 1478, 1503, 1504, 1635, 1306, 1503, + 1478, 1478, 1503, 1478, 1478, 1503, 1503, 1502, + 1478, 1484, 1485, 1487, 1486, 1495, 1393, 1478, + 1483, 1535, 1637, 1638, 1637, 1639, 1454, 1535, + 1636, 1535, 1637, 1638, 1637, 1639, 1470, 1535, + 1636, 1535, 1637, 1638, 1637, 1547, 1470, 1535, + 1636, 1535, 1637, 1637, 1547, 1470, 1535, 1636, + 1535, 1548, 1549, 1551, 1550, 1559, 1393, 1535, + 1546, 1367, 1394, 1395, 1397, 1396, 1393, 1406, + 1367, 1391, 1358, 1450, 1451, 1453, 1452, 1449, + 1393, 1416, 1358, 1447, 1367, 1587, 1588, 1589, + 1590, 1605, 1436, 1586, 1586, 1306, 1586, 1586, + 1367, 1586, 1591, 1358, 1372, 1373, 1374, 1375, + 1376, 1377, 1358, 1640, 1640, 1640, 1368, 1358, + 1372, 1373, 1374, 1375, 1376, 1377, 1358, 1438, + 1438, 1438, 1368, 1358, 1641, 1642, 1434, 1358, + 1358, 1306, 1358, 1358, 1427, 1367, 1433, 1303, + 1367, 1367, 1306, 1367, 1367, 1431, 1365, 1366, + 1643, 1643, 1643, 1358, 1365, 1366, 1427, 1427, + 1427, 1358, 1365, 1366, 1644, 1644, 1644, 1358, + 1365, 1366, 1425, 1425, 1425, 1358, 1367, 1431, + 1600, 1309, 1367, 1306, 1431, 1367, 1367, 1431, + 1367, 1367, 1431, 1431, 1599, 1358, 1426, 1427, + 1428, 1429, 1645, 1358, 1427, 1358, 1358, 1427, + 1358, 1358, 1427, 1427, 1425, 1358, 1426, 1427, + 1428, 1429, 1646, 1306, 1427, 1358, 1358, 1427, + 1358, 1358, 1427, 1427, 1425, 1478, 1490, 1491, + 1490, 1492, 1288, 1478, 1488, 1535, 1554, 1555, + 1554, 1556, 1288, 1535, 1552, 1358, 1359, 1360, + 1359, 1647, 1363, 1364, 1358, 1357, 1358, 1359, + 1359, 1647, 1363, 1364, 1358, 1357, 1358, 1649, + 1650, 1651, 1652, 1653, 1654, 1655, 1358, 1648, + 1358, 1649, 1650, 1651, 1652, 1653, 1654, 1358, + 1648, 1358, 1649, 1650, 1649, 1647, 1653, 1654, + 1358, 1648, 1358, 1649, 1649, 1647, 1653, 1654, + 1358, 1648, 1367, 1657, 1658, 1659, 1660, 1270, + 1367, 1656, 1367, 1657, 1658, 1659, 1660, 1654, + 1367, 1656, 1367, 1657, 1658, 1657, 1661, 1654, + 1367, 1656, 1367, 1657, 1657, 1661, 1654, 1367, + 1656, 1367, 1657, 1658, 1659, 1660, 1654, 1662, + 1367, 1656, 1367, 1657, 1658, 1657, 1663, 1654, + 1367, 1656, 1367, 1657, 1658, 1659, 1665, 1666, + 1662, 1367, 1664, 1367, 1667, 1668, 1667, 1669, + 1666, 1367, 1664, 1367, 1667, 1668, 1667, 1670, + 1666, 1367, 1664, 1367, 1667, 1667, 1670, 1666, + 1367, 1664, 1367, 1667, 1668, 1667, 1669, 1666, + 1662, 1367, 1664, 208, 1278, 1279, 1672, 1673, + 1674, 1675, 1676, 1677, 208, 1671, 208, 1678, + 1679, 1678, 1680, 208, 1671, 208, 1678, 1679, + 1678, 1281, 208, 1671, 208, 1678, 1678, 1281, + 208, 1671, 208, 1278, 1279, 1672, 1681, 208, + 1671, 208, 1278, 1279, 1278, 1682, 357, 208, + 1351, 1358, 1683, 1684, 1683, 1685, 1686, 1687, + 1358, 1674, 1358, 1683, 1684, 1683, 1688, 1686, + 1687, 1358, 1674, 1358, 1683, 1683, 1688, 1686, + 1687, 1358, 1674, 1358, 1690, 1691, 1690, 1692, + 1693, 1666, 1655, 1358, 1689, 1358, 1690, 1691, + 1690, 1692, 1693, 1666, 1358, 1689, 1358, 1690, + 1691, 1690, 1688, 1693, 1666, 1358, 1689, 1358, + 1690, 1690, 1688, 1693, 1666, 1358, 1689, 1367, + 1667, 1668, 1667, 1669, 1276, 1367, 1664, 1358, + 1694, 1695, 1694, 1696, 1697, 1698, 1358, 1655, + 1358, 1694, 1695, 1694, 1697, 1698, 1358, 1655, + 1358, 1694, 1694, 1697, 1698, 1358, 1655, 1367, + 1699, 1700, 1699, 1701, 357, 1367, 1662, 1367, + 1699, 1700, 1699, 1701, 1698, 1367, 1662, 1367, + 1699, 1700, 1699, 1698, 1367, 1662, 1367, 1699, + 1699, 1698, 1367, 1662, 208, 394, 395, 1702, + 1703, 1357, 1704, 1705, 1706, 208, 1264, 208, + 394, 395, 1702, 1707, 208, 1264, 208, 1265, + 1266, 1708, 1709, 1704, 208, 1264, 208, 1265, + 1266, 1710, 1711, 208, 1264, 208, 1265, 1266, + 1710, 1707, 208, 1264, 208, 1271, 1272, 1273, + 1712, 357, 208, 1351, 1478, 1714, 1715, 1716, + 1717, 1264, 1478, 1713, 1478, 1714, 1715, 1716, + 1717, 1364, 1478, 1713, 1478, 1714, 1715, 1714, + 1718, 1364, 1478, 1713, 1478, 1714, 1714, 1718, + 1364, 1478, 1713, 1478, 1720, 1721, 1722, 1723, + 1724, 1654, 1478, 1719, 1478, 1720, 1721, 1722, + 1723, 1654, 1478, 1719, 1478, 1720, 1721, 1720, + 1718, 1654, 1478, 1719, 1478, 1720, 1720, 1718, + 1654, 1478, 1719, 208, 1271, 1272, 1725, 1703, + 1357, 1704, 1705, 1706, 208, 1264, 208, 1271, + 1272, 1726, 1711, 208, 1264, 208, 1271, 1272, + 1726, 1707, 208, 1264, 1535, 1728, 1729, 1730, + 1731, 1264, 1535, 1727, 1535, 1728, 1729, 1730, + 1731, 1364, 1535, 1727, 1535, 1728, 1729, 1728, + 1732, 1364, 1535, 1727, 1535, 1728, 1728, 1732, + 1364, 1535, 1727, 1535, 1734, 1735, 1736, 1737, + 1738, 1654, 1535, 1733, 1535, 1734, 1735, 1736, + 1737, 1654, 1535, 1733, 1535, 1734, 1735, 1734, + 1732, 1654, 1535, 1733, 1535, 1734, 1734, 1732, + 1654, 1535, 1733, 1535, 1734, 1735, 1734, 1739, + 1654, 1535, 1733, 1535, 1734, 1735, 1736, 1741, + 1738, 1666, 1535, 1740, 1535, 1742, 1743, 1742, + 1744, 1666, 1535, 1740, 1535, 1742, 1743, 1742, + 1745, 1666, 1535, 1740, 1535, 1742, 1742, 1745, + 1666, 1535, 1740, 1535, 1742, 1743, 1742, 1744, + 1738, 1666, 1535, 1740, 1535, 1746, 1747, 1746, + 1748, 1698, 1535, 1738, 1535, 1746, 1747, 1746, + 1698, 1535, 1738, 1535, 1746, 1746, 1698, 1535, + 1738, 208, 1265, 1266, 1708, 1709, 1357, 1704, + 1705, 1706, 208, 1264, 1535, 1728, 1729, 1728, + 1739, 1364, 1535, 1727, 1478, 1720, 1721, 1720, + 1749, 1654, 1478, 1719, 1478, 1720, 1721, 1722, + 1751, 1724, 1666, 1478, 1750, 1478, 1752, 1753, + 1752, 1754, 1666, 1478, 1750, 1478, 1752, 1753, + 1752, 1755, 1666, 1478, 1750, 1478, 1752, 1752, + 1755, 1666, 1478, 1750, 1478, 1752, 1753, 1752, + 1754, 1724, 1666, 1478, 1750, 1478, 1756, 1757, + 1756, 1758, 1698, 1478, 1724, 1478, 1756, 1757, + 1756, 1698, 1478, 1724, 1478, 1756, 1756, 1698, + 1478, 1724, 1478, 1714, 1715, 1714, 1749, 1364, + 1478, 1713, 1367, 1760, 1761, 1760, 1762, 1671, + 1367, 1759, 1367, 1760, 1761, 1760, 1762, 1687, + 1367, 1759, 1367, 1760, 1761, 1760, 1670, 1687, + 1367, 1759, 1367, 1760, 1760, 1670, 1687, 1367, + 1759, 208, 1678, 1679, 1763, 1764, 1674, 1675, + 1676, 1677, 208, 1671, 208, 1678, 1679, 1763, + 1681, 208, 1671, 208, 1678, 1679, 1763, 1764, + 1675, 208, 1671, 1478, 1766, 1767, 1766, 1768, + 1671, 1478, 1765, 1478, 1766, 1767, 1766, 1768, + 1687, 1478, 1765, 1478, 1766, 1767, 1766, 1755, + 1687, 1478, 1765, 1478, 1766, 1766, 1755, 1687, + 1478, 1765, 1535, 1770, 1771, 1770, 1772, 1671, + 1535, 1769, 1535, 1770, 1771, 1770, 1772, 1687, + 1535, 1769, 1535, 1770, 1771, 1770, 1745, 1687, + 1535, 1769, 1535, 1770, 1770, 1745, 1687, 1535, + 1769, 1358, 1649, 1650, 1649, 1773, 1653, 1654, + 1358, 1648, 1358, 1649, 1650, 1651, 1774, 1693, + 1666, 1655, 1358, 1689, 1367, 1776, 1777, 1778, + 1779, 1264, 1367, 1775, 1367, 1776, 1777, 1778, + 1779, 1364, 1367, 1775, 1367, 1776, 1777, 1776, + 1661, 1364, 1367, 1775, 1367, 1776, 1776, 1661, + 1364, 1367, 1775, 1367, 1776, 1777, 1776, 1663, + 1364, 1367, 1775, 1358, 1359, 1360, 1359, 1773, + 1363, 1364, 1358, 1357, 208, 208, 208, 1780, + 208, 208, 208, 1781, 208, 208, 1783, 208, + 1782, 208, 846, 847, 846, 1785, 208, 1784, + 208, 208, 208, 1786, 208, 208, 1788, 1789, + 1790, 208, 1787, 208, 1792, 1793, 1792, 1794, + 208, 1791, 208, 1792, 1793, 1792, 208, 1791, + 208, 1792, 1792, 208, 1791, 208, 1792, 1793, + 1792, 1794, 1795, 208, 1791, 1797, 1798, 1799, + 1798, 1800, 1801, 1802, 1797, 1796, 1804, 1805, + 1806, 1805, 1807, 1808, 1809, 1804, 1803, 1810, + 1811, 1804, 208, 1812, 1814, 1813, 1804, 1805, + 1806, 1805, 1807, 1808, 1804, 1803, 1804, 1805, + 1805, 1807, 1808, 1804, 1803, 1812, 1816, 1817, + 1816, 1791, 1818, 1812, 1815, 1813, 1820, 1821, + 1820, 1822, 1823, 1813, 1819, 1813, 1820, 1821, + 1820, 1822, 1813, 1819, 1813, 1820, 1820, 1822, + 1813, 1819, 208, 1792, 1793, 1792, 1788, 1824, + 1789, 1790, 208, 1787, 1826, 1827, 1828, 1827, + 1829, 1791, 1826, 1825, 1831, 1832, 1833, 1832, + 1834, 1835, 1831, 1830, 1836, 1831, 1831, 1832, + 1833, 1832, 1835, 1831, 1830, 1831, 1832, 1832, + 1835, 1831, 1830, 1831, 1832, 1833, 1832, 1834, + 1795, 1831, 1830, 1838, 1839, 1840, 1839, 1841, + 1791, 1838, 1837, 1843, 1844, 1845, 1844, 1846, + 1847, 1843, 1842, 1848, 1843, 1843, 1844, 1845, + 1844, 1847, 1843, 1842, 1843, 1844, 1844, 1847, + 1843, 1842, 1843, 1844, 1845, 1844, 1846, 1795, + 1847, 1843, 1842, 1813, 1820, 1821, 1820, 1822, + 1823, 1795, 1813, 1819, 1804, 1805, 1806, 1805, + 1807, 1808, 1809, 1795, 1804, 1803, 1850, 1849, + 208, 1851, 208, 1852, 208, 208, 208, 208, + 1853, 844, 208, 4, 1854, 208, 1855, 208, + 1856, 208, 1857, 208, 1858, 208, 1859, 208, + 1860, 208, 1861, 208, 1862, 208, 1863, 208, + 1864, 208, 1865, 208, 1866, 208, 1867, 208, + 1868, 208, 1869, 208, 1870, 208, 208, 208, + 208, 1871, 208, 1873, 1874, 1873, 1875, 208, + 1872, 208, 1873, 1874, 1873, 208, 1872, 208, + 1873, 1873, 208, 1872, 1876, 208, 208, 208, + 1878, 208, 1877, 3, 1880, 1881, 1880, 1882, + 3, 1879, 3, 1880, 1881, 1880, 3, 1879, + 3, 1880, 1880, 3, 1879, 208, 1880, 1881, + 1880, 1884, 208, 1883, 3, 1886, 1887, 1886, + 1888, 3, 1885, 3, 1886, 1887, 1886, 3, + 1885, 3, 1886, 1886, 3, 1885, 3, 1890, + 1891, 1890, 1892, 3, 1889, 3, 1890, 1891, + 1890, 3, 1889, 3, 1890, 1890, 3, 1889, + 1893, 3, 1894, 208, 1895, 208, 208, 208, + 208, 1896, 208, 1898, 1899, 1898, 1900, 208, + 1897, 208, 1898, 1899, 1898, 208, 1897, 208, + 1898, 1898, 208, 1897, 1901, 208, 1902, 208, + 208, 208, 208, 1903, 208, 1905, 1906, 1905, + 1907, 208, 1904, 208, 1905, 1906, 1905, 208, + 1904, 208, 1905, 1905, 208, 1904, 1908, 208, + 1910, 1909, 1911, 1909, 1912, 1909, 1913, 1909, + 1914, 1909, 1916, 1918, 1919, 1920, 1922, 1923, + 1924, 1925, 1926, 1927, 1928, 1929, 1931, 1932, + 1933, 1934, 1936, 1921, 1937, 1938, 1939, 1921, + 1940, 1917, 1921, 1921, 1930, 1921, 1935, 1915, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 1941, 3, 3, 1915, 1942, + 1943, 1943, 1942, 1942, 1942, 1944, 1942, 1942, + 1942, 1942, 1942, 1941, 1942, 1942, 1915, 1942, + 1942, 1942, 1942, 1942, 1944, 1942, 1942, 1942, + 1942, 1942, 1942, 1941, 1942, 1942, 1915, 1942, + 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, + 1942, 1942, 1942, 1915, 1946, 1947, 1948, 1949, + 1950, 1951, 1945, 1952, 256, 257, 258, 259, + 260, 261, 262, 1254, 1255, 1256, 263, 257, + 264, 1952, 1952, 257, 1952, 257, 257, 255, + 1954, 1955, 1953, 1956, 1957, 1956, 1956, 1958, + 1956, 1956, 223, 1956, 223, 1959, 1956, 1960, + 223, 1956, 1956, 223, 1956, 1956, 223, 223, + 228, 1956, 223, 224, 1961, 1962, 223, 1956, + 1956, 223, 1956, 1956, 223, 223, 222, 1963, + 223, 224, 1963, 223, 1963, 1963, 223, 1963, + 1963, 223, 223, 222, 1942, 1965, 1967, 1968, + 1969, 1966, 1971, 1966, 1966, 1966, 1972, 1966, + 1966, 1942, 1966, 1966, 1970, 1966, 1964, 1942, + 347, 348, 350, 1974, 346, 346, 346, 346, + 346, 346, 1942, 346, 346, 1975, 346, 346, + 1973, 1976, 366, 367, 370, 368, 1976, 1977, + 1976, 365, 1978, 1979, 1978, 1978, 1978, 1978, + 386, 1978, 386, 1980, 1978, 386, 1978, 1978, + 386, 1978, 1978, 386, 386, 392, 1978, 386, + 387, 1981, 386, 1978, 1978, 386, 1978, 1978, + 386, 386, 385, 1976, 366, 367, 366, 368, + 1976, 365, 1982, 1976, 1976, 366, 367, 366, + 368, 1976, 1977, 1976, 365, 1976, 398, 399, + 400, 401, 1976, 1983, 1976, 397, 1976, 398, + 399, 400, 401, 1976, 397, 1976, 398, 399, + 400, 401, 378, 1983, 1976, 397, 1976, 398, + 399, 400, 1985, 397, 378, 397, 1987, 397, + 397, 397, 1976, 397, 397, 1986, 397, 397, + 1984, 3, 398, 399, 400, 1985, 397, 397, + 397, 397, 397, 397, 3, 397, 397, 1986, + 397, 397, 1984, 1942, 398, 399, 400, 1985, + 397, 1942, 397, 397, 397, 397, 397, 1942, + 397, 397, 1986, 397, 397, 1984, 1942, 398, + 399, 400, 1988, 1989, 397, 397, 397, 1990, + 397, 397, 1942, 397, 397, 1986, 397, 397, + 1984, 1942, 398, 399, 400, 1985, 397, 1942, + 397, 397, 397, 1990, 397, 397, 1942, 397, + 397, 1986, 397, 397, 1984, 1942, 398, 399, + 400, 1985, 397, 397, 397, 397, 397, 397, + 1942, 397, 397, 397, 1984, 1942, 398, 399, + 400, 1985, 397, 397, 397, 397, 1990, 397, + 397, 1942, 397, 397, 1986, 397, 397, 1984, + 1942, 347, 348, 350, 1991, 1992, 346, 346, + 346, 1993, 346, 346, 1942, 346, 346, 1975, + 346, 346, 1973, 1976, 398, 399, 400, 1985, + 397, 378, 397, 1987, 397, 1990, 397, 397, + 1976, 397, 397, 1986, 397, 397, 1984, 1942, + 347, 348, 350, 1974, 346, 346, 346, 346, + 1993, 346, 346, 1942, 346, 346, 1975, 346, + 346, 1973, 1942, 347, 348, 350, 1974, 346, + 346, 346, 346, 346, 346, 1942, 346, 346, + 346, 1973, 1942, 353, 354, 355, 1995, 426, + 357, 426, 426, 426, 426, 426, 1942, 426, + 426, 1996, 426, 426, 1994, 1942, 427, 428, + 430, 1997, 426, 426, 426, 426, 426, 426, + 1942, 426, 426, 1996, 426, 426, 1994, 1976, + 419, 420, 423, 424, 1976, 1998, 1976, 417, + 1976, 419, 420, 419, 421, 1976, 417, 1976, + 419, 420, 419, 424, 1976, 1998, 1976, 417, + 1976, 412, 413, 414, 425, 1976, 1999, 1976, + 410, 1976, 412, 413, 414, 415, 1976, 410, + 1976, 412, 413, 414, 2001, 410, 1976, 410, + 2003, 410, 410, 410, 1976, 410, 410, 2002, + 410, 410, 2000, 3, 412, 413, 414, 2004, + 410, 410, 410, 410, 410, 410, 3, 410, + 410, 2002, 410, 410, 2000, 1942, 412, 413, + 414, 2001, 410, 1942, 410, 410, 410, 410, + 410, 1942, 410, 410, 2002, 410, 410, 2000, + 1942, 412, 413, 414, 2001, 410, 378, 410, + 410, 410, 410, 410, 1942, 410, 410, 2002, + 410, 410, 2000, 1942, 412, 413, 414, 2005, + 2006, 410, 410, 410, 2007, 410, 410, 1942, + 410, 410, 2002, 410, 410, 2000, 1942, 412, + 413, 414, 2001, 410, 1942, 410, 410, 410, + 2007, 410, 410, 1942, 410, 410, 2002, 410, + 410, 2000, 1942, 412, 413, 414, 2004, 410, + 410, 410, 410, 410, 410, 1942, 410, 410, + 410, 2000, 1942, 412, 413, 414, 2004, 410, + 410, 410, 410, 2007, 410, 410, 1942, 410, + 410, 2002, 410, 410, 2000, 1942, 427, 428, + 430, 2008, 2009, 426, 426, 426, 2010, 426, + 426, 1942, 426, 426, 1996, 426, 426, 1994, + 1976, 412, 413, 414, 2001, 410, 1976, 410, + 2003, 410, 2007, 410, 410, 1976, 410, 410, + 2002, 410, 410, 2000, 1942, 427, 428, 430, + 1997, 426, 426, 426, 426, 2010, 426, 426, + 1942, 426, 426, 1996, 426, 426, 1994, 1942, + 427, 428, 430, 1997, 426, 426, 426, 426, + 426, 426, 1942, 426, 426, 426, 1994, 1976, + 412, 413, 414, 2004, 410, 1976, 410, 2003, + 410, 410, 410, 1976, 410, 410, 2002, 410, + 410, 2000, 449, 2011, 2012, 449, 449, 449, + 449, 513, 1978, 404, 405, 2013, 587, 582, + 403, 403, 2014, 2015, 403, 403, 1978, 403, + 517, 1978, 406, 407, 408, 409, 2013, 403, + 403, 403, 403, 1978, 403, 517, 440, 454, + 455, 456, 457, 2016, 2017, 2018, 450, 450, + 450, 450, 440, 450, 587, 550, 2019, 550, + 550, 2012, 550, 550, 575, 608, 2020, 608, + 608, 2012, 608, 608, 640, 608, 640, 2021, + 608, 640, 2022, 608, 608, 640, 608, 608, + 640, 640, 645, 1978, 404, 405, 517, 2023, + 676, 582, 403, 2024, 517, 2025, 403, 403, + 1978, 403, 517, 403, 403, 517, 517, 647, + 1978, 406, 407, 408, 409, 517, 2023, 403, + 517, 403, 403, 1978, 403, 517, 403, 403, + 517, 517, 647, 440, 454, 455, 456, 457, + 2026, 587, 2027, 2028, 450, 587, 450, 450, + 440, 450, 587, 450, 450, 587, 587, 676, + 449, 649, 650, 651, 652, 664, 2029, 647, + 648, 664, 648, 648, 449, 648, 664, 648, + 648, 664, 664, 670, 449, 649, 650, 651, + 652, 664, 2029, 2028, 648, 664, 648, 648, + 449, 648, 664, 648, 648, 664, 664, 670, + 449, 513, 2030, 2022, 449, 513, 449, 449, + 513, 449, 449, 513, 513, 660, 449, 513, + 514, 511, 2031, 513, 449, 449, 513, 449, + 449, 513, 513, 512, 449, 649, 650, 651, + 652, 2032, 2018, 648, 648, 648, 648, 449, + 648, 664, 1978, 406, 407, 593, 594, 2013, + 587, 582, 403, 403, 2014, 2015, 403, 403, + 1978, 403, 517, 1978, 406, 407, 593, 594, + 2013, 582, 403, 403, 403, 403, 1978, 403, + 517, 550, 597, 598, 599, 600, 2033, 596, + 596, 517, 596, 596, 550, 596, 666, 550, + 597, 598, 599, 600, 2033, 596, 596, 2018, + 596, 596, 550, 596, 666, 608, 609, 610, + 611, 612, 2034, 607, 607, 517, 607, 607, + 608, 607, 668, 608, 609, 610, 611, 612, + 2034, 607, 607, 2018, 607, 607, 608, 607, + 668, 1978, 406, 407, 593, 594, 517, 2023, + 676, 582, 403, 2024, 517, 2025, 403, 403, + 1978, 403, 517, 403, 403, 517, 517, 647, + 550, 597, 598, 599, 600, 666, 2035, 596, + 647, 666, 596, 596, 550, 596, 666, 596, + 596, 666, 666, 672, 550, 597, 598, 599, + 600, 666, 2035, 596, 2028, 666, 596, 596, + 550, 596, 666, 596, 596, 666, 666, 672, + 608, 609, 610, 611, 612, 668, 2036, 607, + 668, 647, 607, 607, 608, 607, 668, 607, + 607, 668, 668, 674, 608, 609, 610, 611, + 612, 668, 2036, 607, 668, 2028, 607, 607, + 608, 607, 668, 607, 607, 668, 668, 674, + 608, 640, 641, 2037, 640, 511, 608, 608, + 640, 608, 608, 640, 640, 639, 550, 575, + 2038, 550, 2022, 575, 550, 550, 575, 550, + 550, 575, 575, 689, 550, 575, 576, 2039, + 511, 575, 550, 550, 575, 550, 550, 575, + 575, 574, 449, 649, 650, 651, 652, 2032, + 517, 648, 648, 648, 648, 449, 648, 664, + 440, 2040, 2041, 2012, 440, 440, 440, 440, + 509, 449, 2011, 386, 449, 449, 449, 449, + 513, 449, 513, 2030, 392, 449, 513, 449, + 449, 513, 449, 449, 513, 513, 660, 440, + 508, 509, 510, 511, 2042, 509, 440, 440, + 509, 440, 440, 509, 509, 507, 449, 476, + 477, 479, 478, 475, 449, 2043, 449, 473, + 449, 476, 477, 476, 478, 475, 449, 473, + 1976, 366, 367, 370, 368, 378, 1977, 1976, + 365, 1976, 419, 420, 423, 421, 1976, 1998, + 1976, 417, 1976, 366, 367, 370, 537, 1976, + 1998, 1976, 417, 440, 522, 523, 525, 524, + 521, 475, 440, 2044, 440, 519, 440, 522, + 523, 522, 524, 521, 475, 440, 519, 1976, + 412, 413, 414, 415, 1976, 1999, 1976, 410, + 1976, 398, 399, 400, 411, 1976, 1999, 1976, + 410, 1976, 419, 420, 419, 421, 1976, 1998, + 1976, 417, 1976, 398, 399, 400, 411, 378, + 1999, 1976, 410, 608, 621, 622, 624, 623, + 608, 2045, 475, 608, 619, 608, 621, 622, + 621, 623, 475, 608, 619, 2046, 448, 608, + 448, 608, 608, 621, 622, 621, 623, 608, + 2045, 475, 608, 619, 608, 615, 616, 617, + 613, 608, 2047, 466, 608, 614, 608, 615, + 616, 617, 613, 466, 608, 614, 608, 615, + 616, 617, 613, 632, 2047, 466, 608, 614, + 550, 556, 557, 559, 558, 550, 2048, 550, + 555, 1976, 366, 367, 527, 528, 529, 530, + 531, 532, 1976, 526, 2049, 550, 1976, 404, + 405, 450, 451, 452, 453, 1976, 403, 550, + 556, 557, 556, 558, 550, 2048, 550, 555, + 550, 603, 604, 605, 601, 550, 2050, 550, + 602, 1976, 398, 399, 590, 405, 450, 451, + 452, 453, 1976, 403, 550, 603, 604, 605, + 601, 567, 2050, 550, 602, 448, 2051, 449, + 448, 449, 447, 448, 2052, 440, 447, 448, + 440, 1976, 366, 367, 370, 537, 378, 1998, + 1976, 417, 550, 556, 557, 559, 558, 567, + 2048, 550, 555, 608, 621, 622, 624, 623, + 632, 2045, 475, 608, 619, 449, 476, 477, + 479, 478, 475, 488, 2043, 449, 473, 440, + 522, 523, 525, 524, 521, 475, 498, 2044, + 440, 519, 449, 476, 477, 476, 478, 475, + 449, 2043, 449, 473, 449, 468, 469, 470, + 471, 466, 449, 2053, 449, 467, 449, 468, + 469, 470, 471, 466, 449, 467, 440, 522, + 523, 522, 524, 521, 475, 440, 2044, 440, + 519, 440, 462, 463, 464, 460, 465, 466, + 440, 2054, 440, 461, 440, 462, 463, 464, + 460, 465, 466, 440, 461, 449, 468, 469, + 470, 471, 466, 488, 2053, 449, 467, 440, + 462, 463, 464, 460, 465, 466, 498, 2054, + 440, 461, 608, 781, 782, 783, 2056, 780, + 780, 780, 780, 1973, 608, 780, 780, 2057, + 780, 780, 780, 2055, 608, 781, 782, 783, + 2056, 780, 780, 780, 780, 2058, 608, 780, + 780, 2057, 780, 780, 780, 2055, 608, 615, + 616, 617, 2060, 614, 632, 614, 2062, 614, + 2063, 608, 614, 614, 2061, 614, 614, 614, + 2059, 608, 615, 616, 617, 2060, 614, 614, + 614, 614, 2063, 608, 614, 614, 2061, 614, + 614, 614, 2059, 608, 615, 616, 617, 2060, + 614, 608, 614, 614, 614, 2063, 608, 614, + 614, 2061, 614, 614, 614, 2059, 608, 615, + 616, 617, 2064, 2065, 614, 614, 614, 2066, + 2063, 608, 614, 614, 2061, 614, 614, 614, + 2059, 608, 615, 616, 617, 2060, 614, 608, + 614, 614, 614, 2066, 2063, 608, 614, 614, + 2061, 614, 614, 614, 2059, 608, 615, 616, + 617, 2060, 614, 614, 614, 614, 2063, 608, + 614, 614, 614, 614, 2059, 1942, 398, 399, + 590, 2068, 450, 451, 403, 452, 403, 403, + 403, 2070, 403, 403, 1942, 403, 403, 2069, + 403, 2067, 1942, 406, 407, 408, 2071, 403, + 403, 403, 403, 403, 403, 1942, 403, 403, + 2069, 403, 403, 2067, 1942, 398, 399, 400, + 1985, 397, 378, 397, 397, 397, 397, 397, + 1942, 397, 397, 1986, 397, 397, 1984, 1942, + 406, 407, 408, 2072, 2073, 403, 403, 403, + 2074, 403, 403, 1942, 403, 403, 2069, 403, + 403, 2067, 1942, 398, 399, 400, 1985, 397, + 378, 397, 397, 397, 1990, 397, 397, 1942, + 397, 397, 1986, 397, 397, 1984, 1942, 406, + 407, 408, 2071, 403, 403, 403, 403, 2074, + 403, 403, 1942, 403, 403, 2069, 403, 403, + 2067, 1942, 406, 407, 408, 2071, 403, 403, + 403, 403, 403, 403, 1942, 403, 403, 403, + 2067, 1942, 398, 399, 400, 2075, 410, 1942, + 410, 410, 410, 410, 410, 1942, 410, 410, + 2002, 410, 410, 2000, 1942, 412, 413, 414, + 2004, 410, 1942, 410, 410, 410, 410, 410, + 1942, 410, 410, 2002, 410, 410, 2000, 608, + 609, 610, 611, 2077, 607, 607, 607, 607, + 2067, 608, 607, 607, 2078, 607, 607, 607, + 2076, 608, 609, 610, 611, 2077, 607, 607, + 607, 607, 2079, 608, 607, 607, 2078, 607, + 607, 607, 2076, 608, 615, 616, 617, 2060, + 614, 632, 614, 614, 614, 2063, 608, 614, + 614, 2061, 614, 614, 614, 2059, 608, 609, + 610, 611, 2080, 2081, 607, 607, 607, 2082, + 2079, 608, 607, 607, 2078, 607, 607, 607, + 2076, 608, 615, 616, 617, 2060, 614, 632, + 614, 614, 614, 2066, 2063, 608, 614, 614, + 2061, 614, 614, 614, 2059, 608, 609, 610, + 611, 2077, 607, 607, 607, 607, 2082, 2079, + 608, 607, 607, 2078, 607, 607, 607, 2076, + 608, 609, 610, 611, 2077, 607, 607, 607, + 607, 2079, 608, 607, 607, 607, 607, 2076, + 1942, 406, 407, 593, 2083, 450, 451, 403, + 452, 403, 403, 403, 2070, 403, 403, 1942, + 403, 403, 2069, 403, 2067, 1942, 398, 399, + 400, 2075, 410, 378, 410, 410, 410, 410, + 410, 1942, 410, 410, 2002, 410, 410, 2000, + 608, 615, 616, 617, 2060, 614, 614, 614, + 614, 2066, 2063, 608, 614, 614, 2061, 614, + 614, 614, 2059, 608, 781, 782, 783, 2084, + 2085, 780, 780, 780, 2086, 2058, 608, 780, + 780, 2057, 780, 780, 780, 2055, 608, 615, + 616, 617, 2060, 614, 632, 614, 2062, 614, + 2066, 2063, 608, 614, 614, 2061, 614, 614, + 614, 2059, 608, 781, 782, 783, 2056, 780, + 780, 780, 780, 2086, 2058, 608, 780, 780, + 2057, 780, 780, 780, 2055, 608, 781, 782, + 783, 2056, 780, 780, 780, 780, 2058, 608, + 780, 780, 780, 780, 2055, 1942, 347, 348, + 761, 2087, 439, 756, 346, 757, 346, 346, + 346, 2088, 346, 346, 1942, 346, 346, 1975, + 346, 1973, 1976, 398, 399, 400, 2075, 410, + 378, 410, 2003, 410, 410, 410, 1976, 410, + 410, 2002, 410, 410, 2000, 1952, 1952, 1952, + 1780, 2090, 2089, 2091, 2092, 2092, 1952, 1942, + 1942, 1781, 1781, 1781, 1781, 1781, 1781, 1781, + 1942, 1781, 1781, 2094, 1781, 1781, 2093, 1942, + 841, 842, 841, 840, 2096, 840, 840, 840, + 840, 840, 1942, 840, 840, 2097, 840, 840, + 2095, 2099, 2098, 2098, 2098, 2098, 2100, 2098, + 2098, 2098, 2098, 2098, 2098, 2098, 1941, 2098, + 2098, 1915, 1942, 841, 842, 841, 2101, 2102, + 840, 840, 840, 2103, 840, 840, 1942, 840, + 840, 2097, 840, 840, 2095, 1942, 841, 842, + 841, 840, 2096, 840, 840, 840, 2103, 840, + 840, 1942, 840, 840, 2097, 840, 840, 2095, + 1942, 841, 842, 841, 840, 2096, 840, 840, + 840, 840, 840, 1942, 840, 840, 840, 2095, + 2098, 2098, 2098, 2100, 2098, 1944, 2098, 2098, + 2098, 2098, 2098, 2098, 1941, 2098, 2098, 1915, + 2104, 1, 2, 2104, 1, 2, 1952, 1942, + 1942, 1782, 1782, 2106, 1782, 1782, 1782, 1782, + 1782, 1942, 1782, 1782, 2107, 1782, 1782, 2105, + 1942, 846, 847, 846, 845, 845, 2109, 845, + 845, 845, 845, 845, 1942, 845, 845, 2110, + 845, 845, 2108, 2112, 2111, 2111, 2111, 2111, + 2113, 2111, 2111, 2111, 2111, 2111, 2111, 2111, + 1941, 2111, 2111, 1915, 1942, 846, 847, 846, + 2114, 2114, 2109, 845, 845, 845, 2115, 845, + 845, 1942, 845, 845, 2110, 845, 845, 2108, + 1942, 846, 847, 846, 845, 845, 2109, 845, + 845, 845, 2115, 845, 845, 1942, 845, 845, + 2110, 845, 845, 2108, 1942, 846, 847, 846, + 845, 845, 2109, 845, 845, 845, 845, 845, + 1942, 845, 845, 845, 2108, 1942, 846, 847, + 846, 1784, 1784, 2117, 1784, 1784, 1784, 1784, + 1784, 1942, 1784, 1784, 2118, 1784, 1784, 2116, + 1942, 850, 851, 850, 849, 849, 2120, 849, + 849, 849, 849, 849, 1942, 849, 849, 2121, + 849, 849, 2119, 857, 2112, 2111, 2123, 2122, + 2111, 2111, 2124, 2111, 2113, 2111, 2111, 2111, + 2111, 2111, 2111, 2111, 1941, 2111, 2111, 1915, + 2122, 2122, 2122, 2125, 2122, 2122, 2122, 2122, + 2122, 2122, 2122, 1941, 2122, 2122, 1915, 1942, + 850, 851, 850, 2126, 2126, 2120, 849, 849, + 849, 2127, 849, 849, 1942, 849, 849, 2121, + 849, 849, 2119, 1942, 850, 851, 850, 849, + 849, 2120, 849, 849, 849, 2127, 849, 849, + 1942, 849, 849, 2121, 849, 849, 2119, 1942, + 850, 851, 850, 849, 849, 2120, 849, 849, + 849, 849, 849, 1942, 849, 849, 849, 2119, + 2111, 854, 855, 854, 853, 853, 2129, 853, + 2131, 853, 853, 853, 2111, 853, 853, 2130, + 853, 853, 2128, 3, 854, 855, 854, 853, + 853, 2129, 853, 853, 853, 853, 853, 3, + 853, 853, 2130, 853, 853, 2128, 1942, 1942, + 2124, 1942, 1942, 1942, 1942, 1942, 1942, 1942, + 1942, 1942, 1941, 1942, 1942, 1915, 1942, 854, + 855, 854, 2132, 2132, 2129, 853, 853, 853, + 2133, 853, 853, 1942, 853, 853, 2130, 853, + 853, 2128, 1942, 854, 855, 854, 853, 853, + 2129, 853, 853, 853, 2133, 853, 853, 1942, + 853, 853, 2130, 853, 853, 2128, 1942, 854, + 855, 854, 853, 853, 2129, 853, 853, 853, + 853, 853, 1942, 853, 853, 853, 2128, 1942, + 1942, 1786, 1786, 1786, 1786, 1786, 1786, 1786, + 1942, 1786, 1786, 2135, 1786, 1786, 2134, 1942, + 859, 860, 859, 858, 858, 2137, 858, 858, + 858, 858, 858, 1942, 858, 858, 2138, 858, + 858, 2136, 2140, 2139, 2139, 2139, 2139, 2141, + 2139, 2139, 2139, 2139, 2139, 2139, 2139, 1941, + 2139, 2139, 1915, 1942, 859, 860, 859, 2142, + 2142, 2137, 858, 858, 858, 2143, 858, 858, + 1942, 858, 858, 2138, 858, 858, 2136, 1942, + 859, 860, 859, 858, 858, 2137, 858, 858, + 858, 2143, 858, 858, 1942, 858, 858, 2138, + 858, 858, 2136, 1942, 859, 860, 859, 858, + 858, 2137, 858, 858, 858, 858, 858, 1942, + 858, 858, 858, 2136, 2144, 2145, 1952, 869, + 870, 870, 2146, 863, 872, 1952, 2148, 2149, + 2149, 864, 2150, 864, 2147, 2151, 2151, 868, + 868, 2147, 2147, 2148, 2150, 2147, 869, 870, + 870, 872, 863, 872, 2152, 1942, 869, 2153, + 2153, 872, 1942, 1942, 1942, 2155, 1942, 1942, + 1942, 1942, 1942, 2154, 1942, 1942, 1915, 1942, + 869, 1942, 1942, 1942, 1942, 1942, 2155, 1942, + 1942, 1942, 1942, 1942, 1941, 1942, 1942, 1915, + 1942, 1942, 864, 1942, 1942, 1942, 1942, 1942, + 1942, 1942, 1942, 1942, 864, 1942, 1942, 1915, + 2156, 2157, 883, 883, 2158, 2159, 2160, 883, + 883, 1952, 2161, 2162, 2163, 882, 892, 882, + 893, 921, 901, 911, 882, 892, 882, 893, + 921, 901, 911, 2165, 2167, 2166, 2169, 2168, + 2168, 2170, 2172, 2171, 2165, 2172, 2171, 2170, + 2173, 2171, 2165, 2173, 2171, 2175, 2176, 2174, + 2176, 2174, 892, 1089, 1091, 1088, 892, 1089, + 1091, 1088, 2178, 2176, 2177, 2176, 2177, 893, + 1089, 1142, 1100, 893, 1089, 1142, 1100, 2180, + 2181, 2182, 2179, 2181, 2182, 2179, 911, 1137, + 1108, 1135, 1126, 911, 1137, 1108, 1135, 1126, + 892, 1089, 1090, 1088, 892, 1089, 1090, 1088, + 893, 1089, 1204, 1100, 893, 1089, 1204, 1100, + 911, 1137, 1108, 1220, 1126, 911, 1137, 1108, + 1220, 1126, 1851, 1952, 2184, 2183, 1852, 1952, + 2186, 2185, 1942, 1942, 1853, 1853, 1853, 1853, + 1853, 1853, 1853, 1942, 1853, 1853, 2188, 1853, + 1853, 2187, 1942, 1248, 1249, 1248, 1247, 1247, + 1247, 2191, 1247, 1247, 1247, 1247, 1942, 1247, + 1247, 2190, 1247, 1247, 2189, 2193, 2192, 1942, + 1248, 1249, 1248, 2194, 2194, 1247, 2191, 1247, + 1247, 2195, 1247, 1247, 1942, 1247, 1247, 2190, + 1247, 1247, 2189, 1942, 1248, 1249, 1248, 1247, + 1247, 1247, 2191, 1247, 1247, 2195, 1247, 1247, + 1942, 1247, 1247, 2190, 1247, 1247, 2189, 2192, + 2192, 2192, 2196, 2192, 2192, 2192, 2192, 2192, + 2192, 2192, 1941, 2192, 2192, 1915, 1942, 1248, + 1249, 1248, 1247, 1247, 1247, 2191, 1247, 1247, + 1247, 1247, 1942, 1247, 1247, 1247, 2189, 1942, + 1942, 1942, 1942, 1942, 1942, 1942, 1942, 1942, + 1942, 1942, 2197, 1942, 2198, 1942, 1915, 1942, + 1943, 1943, 1942, 1942, 1942, 1944, 1942, 1942, + 1942, 1942, 1942, 2199, 1942, 2200, 1942, 1915, + 1942, 1943, 1943, 2201, 1942, 1942, 1942, 1944, + 1942, 1942, 1942, 1942, 1942, 2199, 1942, 2200, + 1942, 1915, 1942, 2201, 1942, 1942, 1942, 1942, + 1942, 1942, 1942, 1942, 1942, 2199, 1942, 2200, + 1942, 1915, 1942, 1942, 1942, 1942, 1942, 1942, + 1942, 1942, 1942, 1942, 1942, 2199, 1942, 2202, + 1942, 1915, 2203, 2201, 2203, 2203, 2203, 2203, + 2203, 2203, 2203, 2203, 2203, 2199, 2203, 2202, + 2203, 1915, 2204, 2205, 2206, 2207, 2208, 2209, + 2210, 2212, 2213, 2214, 2215, 2216, 82, 2217, + 2218, 2219, 2215, 81, 82, 2220, 2211, 1952, + 1976, 1283, 1284, 1287, 1285, 1976, 2221, 1976, + 1282, 1976, 1283, 1284, 1283, 1285, 1976, 1282, + 1976, 1283, 1284, 1283, 1285, 1976, 2221, 1976, + 1282, 1976, 1315, 1316, 1317, 1318, 1976, 2222, + 1976, 1314, 1976, 1315, 1316, 1317, 1318, 1976, + 1314, 1976, 1315, 1316, 1317, 1318, 1295, 2222, + 1976, 1314, 1976, 1336, 1337, 1340, 1341, 1976, + 2223, 1976, 1334, 1976, 1336, 1337, 1336, 1338, + 1976, 1334, 1976, 1336, 1337, 1336, 1341, 1976, + 2223, 1976, 1334, 1976, 1329, 1330, 1331, 1342, + 1976, 2224, 1976, 1327, 1976, 1329, 1330, 1331, + 1332, 1976, 1327, 1976, 1329, 1330, 1331, 1332, + 1976, 2224, 1976, 1327, 1367, 1394, 1395, 1397, + 1396, 1393, 1367, 2225, 1367, 1391, 1367, 1394, + 1395, 1394, 1396, 1393, 1367, 1391, 1976, 1283, + 1284, 1287, 1285, 1295, 2221, 1976, 1282, 1976, + 1336, 1337, 1340, 1338, 1976, 2223, 1976, 1334, + 1976, 1283, 1284, 1287, 1465, 1976, 2223, 1976, + 1334, 1358, 1450, 1451, 1453, 1452, 1449, 1393, + 1358, 2226, 1358, 1447, 1358, 1450, 1451, 1450, + 1452, 1449, 1393, 1358, 1447, 1976, 1315, 1316, + 1317, 1328, 1976, 2224, 1976, 1327, 1976, 1336, + 1337, 1336, 1338, 1976, 2223, 1976, 1334, 1976, + 1315, 1316, 1317, 1328, 1295, 2224, 1976, 1327, + 1535, 1548, 1549, 1551, 1550, 1535, 2227, 1393, + 1535, 1546, 1535, 1548, 1549, 1548, 1550, 1393, + 1535, 1546, 2228, 1366, 1535, 1366, 1535, 1535, + 1548, 1549, 1548, 1550, 1535, 2227, 1393, 1535, + 1546, 1535, 1542, 1543, 1544, 1540, 1535, 2229, + 1384, 1535, 1541, 1535, 1542, 1543, 1544, 1540, + 1384, 1535, 1541, 1535, 1542, 1543, 1544, 1540, + 1559, 2229, 1384, 1535, 1541, 1478, 1484, 1485, + 1487, 1486, 1478, 2230, 1478, 1483, 1976, 1283, + 1284, 1455, 1456, 1457, 1458, 1459, 1460, 1976, + 1454, 2231, 1478, 1976, 1321, 1322, 1368, 1369, + 1370, 1371, 1976, 1320, 1478, 1484, 1485, 1484, + 1486, 1478, 2230, 1478, 1483, 1478, 1530, 1531, + 1532, 1528, 1478, 2232, 1478, 1529, 1976, 1315, + 1316, 1517, 1322, 1368, 1369, 1370, 1371, 1976, + 1320, 1478, 1530, 1531, 1532, 1528, 1495, 2232, + 1478, 1529, 1366, 2233, 1367, 1366, 1367, 1365, + 1366, 2234, 1358, 1365, 1366, 1358, 1976, 1283, + 1284, 1287, 1465, 1295, 2223, 1976, 1334, 1478, + 1484, 1485, 1487, 1486, 1495, 2230, 1478, 1483, + 1535, 1548, 1549, 1551, 1550, 1559, 2227, 1393, + 1535, 1546, 1367, 1394, 1395, 1397, 1396, 1393, + 1406, 2225, 1367, 1391, 1358, 1450, 1451, 1453, + 1452, 1449, 1393, 1416, 2226, 1358, 1447, 1367, + 1394, 1395, 1394, 1396, 1393, 1367, 2225, 1367, + 1391, 1367, 1386, 1387, 1388, 1389, 1384, 1367, + 2235, 1367, 1385, 1367, 1386, 1387, 1388, 1389, + 1384, 1367, 1385, 1358, 1450, 1451, 1450, 1452, + 1449, 1393, 1358, 2226, 1358, 1447, 1358, 1380, + 1381, 1382, 1378, 1383, 1384, 1358, 2236, 1358, + 1379, 1358, 1380, 1381, 1382, 1378, 1383, 1384, + 1358, 1379, 1367, 1386, 1387, 1388, 1389, 1384, + 1406, 2235, 1367, 1385, 1358, 1380, 1381, 1382, + 1378, 1383, 1384, 1416, 2236, 1358, 1379, 2111, + 854, 855, 854, 856, 2237, 2111, 853, 2111, + 854, 855, 854, 856, 2111, 853, 2239, 2238, + 2239, 1893, 2238, 2241, 2240, 2238, 1890, 1891, + 1890, 2242, 1892, 2238, 1889, 2238, 1890, 1891, + 1890, 1892, 2238, 1889, 2244, 2243, 1952, 1952, + 85, 86, 87, 1952, 84, 1942, 1942, 1877, + 1877, 1877, 2247, 1877, 1877, 1942, 1877, 1877, + 2246, 1877, 1877, 1877, 2245, 1942, 1880, 1881, + 1880, 1879, 1879, 1879, 2250, 1879, 1879, 1942, + 1879, 1879, 2249, 1879, 1879, 1879, 2248, 1942, + 1880, 1881, 1880, 2251, 2251, 1879, 2250, 2252, + 1879, 1879, 1942, 1879, 1879, 2249, 1879, 1879, + 1879, 2248, 1942, 1880, 1881, 1880, 1879, 1879, + 1879, 2250, 2252, 1879, 1879, 1942, 1879, 1879, + 2249, 1879, 1879, 1879, 2248, 2238, 2238, 2238, + 2253, 2238, 2238, 2238, 2238, 2238, 2238, 2238, + 1941, 2238, 2238, 1915, 1942, 1880, 1881, 1880, + 1879, 1879, 1879, 2250, 1879, 1879, 1942, 1879, + 1879, 1879, 1879, 2248, 1942, 1880, 1881, 1880, + 1883, 1883, 1883, 2256, 1883, 1883, 1942, 1883, + 1883, 2255, 1883, 1883, 1883, 2254, 1942, 1886, + 1887, 1886, 1885, 1885, 1885, 2259, 1885, 1885, + 1942, 1885, 1885, 2258, 1885, 1885, 1885, 2257, + 1942, 1886, 1887, 1886, 2260, 2260, 1885, 2259, + 2261, 1885, 1885, 1942, 1885, 1885, 2258, 1885, + 1885, 1885, 2257, 1942, 1886, 1887, 1886, 1885, + 1885, 1885, 2259, 2261, 1885, 1885, 1942, 1885, + 1885, 2258, 1885, 1885, 1885, 2257, 2238, 2238, + 2238, 2253, 2262, 2238, 2238, 2238, 2238, 2238, + 2238, 1941, 2238, 2238, 1915, 2240, 2240, 2240, + 2263, 2240, 2240, 2240, 2240, 2240, 2240, 2240, + 1941, 2240, 2240, 1915, 1942, 1886, 1887, 1886, + 1885, 1885, 1885, 2259, 1885, 1885, 1942, 1885, + 1885, 1885, 1885, 2257, 2238, 1890, 1891, 1890, + 1889, 1889, 1889, 2266, 2267, 1889, 1889, 2238, + 1889, 1889, 2265, 1889, 1889, 2264, 3, 1890, + 1891, 1890, 1889, 1889, 1889, 2267, 1889, 1889, + 3, 1889, 1889, 2265, 1889, 1889, 1889, 2264, + 1942, 1890, 1891, 1890, 2268, 2268, 1889, 2267, + 2269, 1889, 1889, 1942, 1889, 1889, 2265, 1889, + 1889, 1889, 2264, 1942, 1890, 1891, 1890, 1889, + 1889, 1889, 2267, 2269, 1889, 1889, 1942, 1889, + 1889, 2265, 1889, 1889, 1889, 2264, 1942, 1942, + 1942, 2262, 1942, 1942, 1942, 1942, 1942, 1942, + 1941, 1942, 1942, 1942, 1915, 1942, 1890, 1891, + 1890, 1889, 1889, 1889, 2267, 1889, 1889, 1942, + 1889, 1889, 1889, 1889, 2264, 1894, 1952, 1952, + 1952, 147, 148, 149, 1952, 146, 2271, 2272, + 2270, 2274, 2273, 0 +}; + +static const short _redcloth_inline_trans_targs[] = { + 1510, 2, 3, 1510, 1510, 4, 1510, 6, + 1510, 10, 37, 16, 22, 6, 7, 8, + 9, 1510, 11, 12, 29, 30, 31, 21, + 36, 11, 12, 29, 30, 31, 21, 36, + 13, 15, 14, 14, 15, 17, 18, 19, + 20, 28, 17, 18, 19, 20, 28, 21, + 15, 9, 23, 24, 25, 26, 27, 23, + 24, 25, 26, 27, 21, 15, 32, 33, + 34, 35, 32, 33, 34, 21, 35, 38, + 39, 40, 41, 42, 45, 43, 44, 47, + 1510, 49, 50, 51, 53, 57, 69, 75, + 53, 54, 55, 56, 1510, 58, 59, 62, + 63, 64, 68, 82, 58, 59, 62, 63, + 64, 68, 82, 60, 52, 61, 61, 52, + 65, 66, 67, 81, 65, 66, 67, 68, + 81, 56, 70, 71, 72, 73, 74, 70, + 71, 72, 73, 68, 74, 52, 76, 77, + 78, 79, 80, 76, 77, 78, 79, 80, + 68, 52, 84, 88, 100, 106, 84, 85, + 86, 87, 1510, 89, 90, 93, 94, 95, + 99, 113, 89, 90, 93, 94, 95, 99, + 113, 91, 83, 92, 92, 83, 96, 97, + 98, 112, 96, 97, 98, 99, 112, 87, + 101, 102, 103, 104, 105, 101, 102, 103, + 104, 99, 105, 83, 107, 108, 109, 110, + 111, 107, 108, 109, 110, 99, 111, 83, + 1510, 114, 115, 130, 1517, 125, 127, 1510, + 117, 1519, 1518, 120, 124, 1520, 117, 1518, + 120, 119, 121, 123, 1519, 124, 126, 128, + 128, 129, 1517, 131, 132, 133, 134, 136, + 137, 164, 171, 175, 140, 136, 137, 164, + 171, 175, 140, 138, 139, 139, 140, 114, + 132, 115, 130, 135, 141, 142, 144, 145, + 160, 141, 143, 144, 146, 147, 148, 158, + 146, 147, 148, 158, 140, 149, 151, 150, + 125, 152, 153, 149, 154, 155, 156, 154, + 155, 156, 151, 140, 157, 159, 161, 162, + 161, 162, 163, 165, 166, 169, 165, 166, + 169, 167, 151, 168, 170, 172, 173, 151, + 167, 174, 176, 114, 132, 115, 130, 135, + 141, 142, 144, 145, 160, 114, 132, 115, + 130, 135, 141, 142, 144, 145, 160, 114, + 132, 115, 130, 135, 141, 142, 144, 145, + 160, 1510, 181, 180, 182, 183, 224, 1533, + 184, 185, 186, 187, 1531, 215, 188, 189, + 1530, 190, 191, 1524, 192, 193, 194, 195, + 197, 196, 198, 199, 205, 200, 201, 203, + 202, 204, 206, 207, 1526, 1525, 210, 214, + 1527, 207, 1525, 210, 1510, 209, 211, 213, + 1526, 214, 216, 217, 1529, 218, 219, 220, + 222, 221, 223, 226, 225, 231, 227, 228, + 229, 230, 232, 235, 233, 234, 236, 246, + 237, 238, 245, 239, 240, 242, 241, 243, + 244, 247, 249, 248, 250, 251, 252, 1550, + 253, 254, 1549, 255, 256, 1547, 257, 258, + 259, 486, 487, 593, 1642, 588, 559, 260, + 262, 261, 263, 371, 375, 386, 264, 265, + 307, 365, 448, 385, 266, 267, 268, 269, + 366, 270, 367, 271, 272, 273, 275, 274, + 276, 277, 280, 316, 278, 279, 281, 282, + 283, 289, 290, 284, 285, 287, 286, 288, + 425, 291, 484, 485, 292, 293, 295, 298, + 294, 296, 299, 297, 300, 1597, 1595, 481, + 360, 483, 1598, 300, 301, 1595, 481, 360, + 302, 1565, 428, 304, 306, 1567, 308, 309, + 312, 315, 310, 311, 313, 314, 317, 321, + 324, 325, 335, 336, 470, 318, 319, 320, + 322, 323, 326, 327, 476, 328, 332, 329, + 330, 331, 475, 333, 334, 337, 338, 339, + 340, 469, 341, 342, 343, 344, 345, 346, + 347, 353, 348, 349, 351, 350, 352, 354, + 355, 1592, 1569, 358, 468, 1593, 355, 1569, + 358, 357, 359, 361, 362, 364, 1581, 456, + 460, 363, 451, 1568, 464, 455, 368, 369, + 370, 372, 374, 373, 376, 377, 378, 433, + 434, 379, 380, 381, 382, 383, 384, 387, + 388, 389, 390, 437, 438, 391, 392, 393, + 394, 395, 396, 397, 400, 398, 399, 401, + 402, 403, 409, 404, 405, 407, 406, 408, + 410, 411, 1571, 1570, 414, 450, 1591, 411, + 1570, 414, 413, 415, 417, 1571, 419, 1573, + 420, 421, 422, 423, 424, 302, 1577, 1565, + 428, 430, 1578, 427, 1577, 429, 430, 432, + 1579, 436, 1583, 440, 1585, 442, 1576, 444, + 1588, 446, 1590, 449, 1574, 450, 452, 453, + 454, 457, 458, 459, 461, 462, 463, 465, + 467, 1592, 468, 471, 472, 473, 474, 478, + 480, 482, 483, 488, 489, 490, 491, 586, + 1639, 492, 539, 517, 493, 494, 495, 497, + 1636, 496, 521, 498, 499, 1635, 503, 500, + 501, 1599, 502, 504, 507, 1603, 509, 577, + 578, 582, 505, 506, 1601, 508, 1602, 510, + 511, 1634, 571, 575, 512, 513, 514, 515, + 1604, 516, 518, 519, 1628, 520, 524, 522, + 523, 1626, 525, 1607, 527, 531, 542, 526, + 1606, 528, 1609, 529, 530, 1608, 532, 533, + 534, 570, 1625, 535, 536, 537, 538, 561, + 1623, 567, 540, 541, 543, 544, 545, 560, + 1617, 546, 547, 548, 549, 550, 1615, 556, + 551, 552, 1614, 553, 554, 1610, 555, 557, + 558, 1612, 562, 563, 1622, 564, 565, 1618, + 566, 568, 569, 1620, 572, 573, 574, 1633, + 576, 1630, 579, 580, 581, 1631, 583, 584, + 585, 1632, 587, 1638, 589, 590, 591, 592, + 1641, 594, 595, 596, 1677, 598, 1510, 600, + 602, 601, 603, 1681, 1510, 606, 605, 607, + 1690, 609, 608, 610, 1697, 612, 611, 613, + 614, 1698, 616, 615, 617, 1712, 619, 620, + 1719, 1510, 622, 623, 1720, 618, 624, 1723, + 626, 628, 629, 630, 631, 632, 1728, 634, + 635, 1729, 637, 636, 639, 1730, 638, 640, + 1730, 641, 687, 645, 650, 665, 644, 642, + 643, 646, 647, 648, 669, 649, 657, 659, + 1731, 651, 652, 653, 1731, 654, 660, 663, + 655, 656, 658, 661, 662, 683, 670, 685, + 1733, 664, 677, 678, 666, 667, 1732, 668, + 1732, 676, 673, 672, 671, 674, 675, 679, + 1733, 680, 686, 681, 682, 684, 689, 690, + 691, 692, 693, 695, 1730, 1510, 694, 696, + 697, 743, 701, 706, 721, 700, 698, 699, + 702, 703, 704, 725, 705, 713, 715, 1731, + 707, 708, 1734, 709, 710, 716, 719, 711, + 712, 714, 717, 718, 739, 726, 741, 1733, + 720, 733, 734, 1736, 722, 723, 1732, 1735, + 724, 732, 729, 728, 727, 730, 731, 735, + 736, 742, 737, 738, 740, 745, 746, 747, + 748, 749, 750, 751, 752, 1737, 1510, 753, + 754, 755, 756, 757, 758, 759, 760, 761, + 762, 763, 764, 1510, 766, 767, 768, 769, + 770, 771, 772, 773, 774, 775, 777, 778, + 779, 780, 781, 782, 801, 803, 1741, 783, + 784, 793, 785, 786, 787, 788, 789, 790, + 791, 792, 1738, 794, 795, 796, 797, 798, + 799, 800, 802, 804, 1740, 805, 953, 809, + 814, 913, 808, 806, 807, 810, 811, 812, + 926, 813, 905, 907, 1757, 899, 900, 815, + 816, 817, 891, 832, 818, 819, 1743, 820, + 1742, 821, 890, 825, 852, 824, 822, 823, + 826, 827, 828, 864, 829, 844, 846, 1747, + 830, 831, 840, 1746, 833, 834, 835, 836, + 837, 838, 839, 1744, 841, 847, 850, 842, + 843, 845, 848, 849, 886, 865, 888, 872, + 1755, 851, 880, 881, 861, 862, 853, 1751, + 854, 855, 856, 857, 858, 859, 860, 1748, + 863, 1750, 871, 868, 867, 866, 869, 870, + 873, 874, 875, 876, 877, 878, 879, 1752, + 882, 1754, 883, 889, 884, 885, 887, 892, + 893, 894, 895, 896, 897, 898, 901, 1756, + 902, 908, 911, 903, 904, 906, 909, 910, + 949, 927, 951, 1761, 912, 943, 944, 934, + 923, 924, 1759, 914, 915, 916, 917, 918, + 919, 920, 921, 922, 925, 1758, 933, 930, + 929, 928, 931, 932, 935, 936, 937, 938, + 939, 940, 941, 942, 945, 1760, 946, 952, + 947, 948, 950, 955, 955, 956, 957, 958, + 1763, 960, 960, 961, 962, 963, 1765, 965, + 964, 966, 1768, 968, 968, 1510, 177, 178, + 179, 971, 1016, 1039, 1050, 1350, 1354, 1365, + 971, 972, 973, 1015, 1785, 974, 975, 976, + 977, 978, 1783, 979, 980, 1782, 981, 982, + 1780, 983, 984, 985, 986, 988, 987, 989, + 990, 996, 991, 992, 994, 993, 995, 997, + 998, 1004, 999, 1002, 1007, 1008, 998, 999, + 1002, 1000, 1510, 1001, 1003, 1004, 1005, 1006, + 1007, 1008, 1009, 1010, 1011, 1013, 1012, 1014, + 1017, 1016, 1022, 1018, 1019, 1020, 1021, 1023, + 1026, 1024, 1025, 1027, 1037, 1028, 1029, 1036, + 1030, 1031, 1033, 1032, 1034, 1035, 1038, 1040, + 1791, 1041, 1042, 1044, 1789, 1043, 1045, 1046, + 1788, 1047, 1048, 1786, 1049, 1050, 1051, 1310, + 1311, 1416, 1834, 1411, 1382, 1052, 1054, 1053, + 1055, 1168, 1172, 1183, 1056, 1057, 1103, 1162, + 1264, 1182, 1058, 1059, 1060, 1061, 1163, 1062, + 1164, 1063, 1064, 1065, 1067, 1066, 1068, 1069, + 1072, 1112, 1070, 1071, 1073, 1074, 1075, 1081, + 1082, 1076, 1077, 1079, 1078, 1080, 1229, 1083, + 1308, 1309, 1084, 1085, 1087, 1090, 1086, 1088, + 1091, 1089, 1092, 1305, 1299, 1303, 1157, 1306, + 1307, 1092, 1093, 1299, 1303, 1157, 1094, 1095, + 1233, 1096, 1098, 1097, 1099, 1100, 1102, 1241, + 1242, 1247, 1101, 1296, 1297, 1240, 1104, 1105, + 1108, 1111, 1106, 1107, 1109, 1110, 1113, 1117, + 1120, 1121, 1131, 1132, 1289, 1114, 1115, 1116, + 1118, 1119, 1122, 1123, 1295, 1124, 1128, 1125, + 1126, 1127, 1294, 1129, 1130, 1133, 1134, 1135, + 1136, 1288, 1137, 1138, 1139, 1140, 1141, 1142, + 1143, 1149, 1144, 1145, 1147, 1146, 1148, 1150, + 1151, 1283, 1152, 1155, 1286, 1287, 1151, 1152, + 1155, 1153, 1154, 1156, 1158, 1159, 1161, 1273, + 1277, 1160, 1268, 1281, 1272, 1165, 1166, 1167, + 1169, 1171, 1170, 1173, 1174, 1175, 1243, 1244, + 1176, 1177, 1178, 1179, 1180, 1181, 1184, 1185, + 1186, 1187, 1249, 1250, 1188, 1189, 1190, 1191, + 1192, 1193, 1194, 1197, 1195, 1196, 1198, 1199, + 1200, 1206, 1201, 1202, 1204, 1203, 1205, 1207, + 1208, 1214, 1209, 1212, 1266, 1267, 1208, 1209, + 1212, 1210, 1211, 1213, 1214, 1215, 1217, 1216, + 1218, 1219, 1221, 1256, 1259, 1220, 1222, 1263, + 1255, 1223, 1224, 1225, 1226, 1227, 1228, 1237, + 1253, 1094, 1230, 1095, 1233, 1235, 1236, 1230, + 1231, 1232, 1234, 1235, 1236, 1238, 1239, 1245, + 1246, 1248, 1251, 1252, 1254, 1257, 1258, 1260, + 1261, 1262, 1265, 1266, 1267, 1269, 1270, 1271, + 1274, 1275, 1276, 1278, 1279, 1280, 1282, 1283, + 1284, 1285, 1286, 1287, 1290, 1291, 1292, 1293, + 1298, 1300, 1301, 1302, 1304, 1306, 1307, 1312, + 1313, 1314, 1315, 1409, 1831, 1316, 1362, 1341, + 1317, 1318, 1319, 1321, 1828, 1320, 1345, 1322, + 1323, 1827, 1327, 1324, 1325, 1792, 1326, 1328, + 1331, 1796, 1333, 1400, 1401, 1405, 1329, 1330, + 1794, 1332, 1795, 1334, 1335, 1826, 1394, 1398, + 1336, 1337, 1338, 1339, 1797, 1340, 1342, 1343, + 1820, 1344, 1348, 1346, 1347, 1818, 1349, 1799, + 1350, 1354, 1365, 1039, 1351, 1801, 1352, 1353, + 1800, 1355, 1356, 1357, 1393, 1817, 1358, 1359, + 1360, 1361, 1384, 1815, 1390, 1363, 1364, 1366, + 1367, 1368, 1383, 1809, 1369, 1370, 1371, 1372, + 1373, 1807, 1379, 1374, 1375, 1806, 1376, 1377, + 1802, 1378, 1380, 1381, 1804, 1385, 1386, 1814, + 1387, 1388, 1810, 1389, 1391, 1392, 1812, 1395, + 1396, 1397, 1825, 1399, 1822, 1402, 1403, 1404, + 1823, 1406, 1407, 1408, 1824, 1410, 1830, 1412, + 1413, 1414, 1415, 1833, 594, 602, 606, 1420, + 609, 1835, 616, 1423, 1427, 1439, 1445, 1423, + 1424, 1425, 1426, 1510, 1428, 1429, 1432, 1433, + 1434, 1438, 1452, 1428, 1429, 1432, 1433, 1434, + 1438, 1452, 1430, 1422, 1431, 1431, 1422, 1435, + 1436, 1437, 1451, 1435, 1436, 1437, 1438, 1451, + 1426, 1440, 1441, 1442, 1443, 1444, 1440, 1441, + 1442, 1443, 1444, 1438, 1422, 1446, 1447, 1448, + 1449, 1450, 1446, 1447, 1448, 1449, 1450, 1438, + 1422, 1453, 1510, 954, 959, 965, 1459, 1460, + 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, + 1469, 1470, 1471, 1472, 1473, 1474, 1510, 1476, + 1476, 1477, 1478, 1479, 1510, 1481, 1484, 1481, + 1482, 1483, 1837, 1485, 1840, 1485, 1486, 1487, + 1838, 1488, 1489, 1490, 1491, 1839, 1493, 1494, + 1495, 1495, 1496, 1497, 1498, 1499, 1842, 1501, + 1501, 1502, 1503, 1504, 1510, 1865, 1506, 1507, + 1508, 1509, 1865, 1511, 1510, 1510, 1515, 1516, + 1522, 1510, 1676, 1678, 1679, 1687, 1688, 1710, + 1717, 1718, 1724, 1727, 1762, 1764, 1766, 1773, + 1779, 1843, 1844, 1863, 1864, 1512, 1510, 1513, + 1514, 1510, 1, 5, 46, 48, 52, 83, + 1510, 1510, 116, 1510, 1510, 118, 1518, 122, + 1519, 1520, 1521, 1510, 1523, 225, 181, 1545, + 258, 527, 1541, 531, 1643, 1523, 1534, 1541, + 1510, 1528, 1510, 208, 212, 1527, 1510, 1532, + 1535, 1536, 1537, 1535, 1538, 1540, 1539, 1542, + 1543, 1544, 1546, 1564, 1560, 1552, 1548, 1551, + 1553, 1555, 1556, 1553, 1554, 1557, 1559, 1558, + 1561, 1562, 1563, 303, 1566, 305, 1582, 1584, + 1594, 477, 1580, 356, 412, 416, 1572, 418, + 1587, 1589, 1575, 447, 1586, 441, 426, 1578, + 431, 435, 439, 443, 445, 1591, 466, 1593, + 1596, 479, 1598, 1600, 1605, 1611, 1613, 1616, + 1619, 1621, 1624, 1627, 1629, 1637, 1640, 1644, + 1645, 1670, 1674, 1646, 1647, 1648, 1646, 1651, + 1649, 1669, 1650, 1652, 1658, 1654, 1660, 1653, + 1655, 1656, 1657, 1659, 1661, 1662, 1663, 1667, + 1664, 1665, 1666, 1668, 1671, 1672, 1673, 1675, + 1643, 1510, 1510, 597, 599, 1680, 1683, 1680, + 1682, 1683, 1510, 1510, 1511, 1684, 1686, 1685, + 604, 1689, 1695, 1692, 1689, 1691, 1692, 1510, + 1510, 1511, 1693, 1694, 1696, 1704, 1701, 1696, + 1699, 1701, 1510, 1510, 1700, 1511, 1702, 1703, + 1705, 1706, 1707, 1705, 1708, 1709, 1711, 1714, + 1711, 1713, 1714, 1510, 1510, 1511, 1715, 1716, + 1510, 1510, 625, 1510, 621, 1722, 623, 1721, + 1510, 1725, 1724, 1726, 627, 633, 688, 744, + 776, 1510, 1510, 1510, 1510, 1510, 753, 765, + 1510, 1739, 1510, 784, 793, 785, 650, 1745, + 637, 665, 1749, 663, 1753, 664, 649, 1510, + 1510, 1510, 1510, 1767, 1769, 1767, 1769, 1771, + 1510, 1510, 1770, 1772, 1511, 1774, 1777, 1775, + 1776, 967, 1778, 1510, 969, 970, 1417, 1418, + 1419, 1421, 1422, 1453, 1454, 1455, 1456, 1457, + 1458, 1475, 1480, 1492, 1500, 1781, 1784, 1787, + 1790, 1793, 1798, 1803, 1805, 1808, 1811, 1813, + 1816, 1819, 1821, 1829, 1832, 1836, 1510, 1510, + 1510, 1510, 1841, 1510, 1510, 1845, 1846, 1850, + 1845, 1846, 1848, 1847, 1849, 1511, 1851, 1852, + 1857, 1851, 1852, 1854, 1853, 1856, 1855, 1511, + 1858, 1859, 1858, 1861, 1860, 1862, 1865, 0, + 1866, 1865, 1505 +}; + +static const short _redcloth_inline_trans_actions[] = { + 145, 0, 0, 147, 83, 0, 81, 1, + 77, 1, 1, 1, 1, 0, 0, 0, + 3, 206, 1, 1, 1, 1, 0, 0, + 149, 0, 0, 0, 0, 7, 7, 3, + 7, 7, 1, 0, 9, 1, 1, 1, + 1, 149, 0, 0, 0, 0, 3, 11, + 11, 149, 1, 1, 1, 1, 149, 0, + 0, 0, 0, 3, 13, 13, 1, 1, + 1, 149, 0, 0, 0, 9, 3, 0, + 0, 0, 0, 0, 3, 0, 3, 0, + 73, 0, 0, 0, 1, 1, 1, 1, + 0, 0, 0, 3, 209, 1, 1, 1, + 1, 0, 0, 149, 0, 0, 0, 0, + 7, 7, 3, 7, 7, 1, 0, 9, + 1, 1, 1, 149, 0, 0, 0, 9, + 3, 149, 1, 1, 1, 1, 149, 0, + 0, 0, 0, 11, 3, 11, 1, 1, + 1, 1, 149, 0, 0, 0, 0, 3, + 13, 13, 1, 1, 1, 1, 0, 0, + 0, 3, 212, 1, 1, 1, 1, 0, + 0, 149, 0, 0, 0, 0, 7, 7, + 3, 7, 7, 1, 0, 9, 1, 1, + 1, 149, 0, 0, 0, 9, 3, 149, + 1, 1, 1, 1, 149, 0, 0, 0, + 0, 11, 3, 11, 1, 1, 1, 1, + 149, 0, 0, 0, 0, 13, 3, 13, + 143, 0, 0, 0, 224, 0, 19, 133, + 1, 218, 218, 1, 1, 218, 0, 29, + 0, 0, 0, 0, 29, 0, 0, 1, + 0, 15, 29, 0, 0, 0, 0, 1, + 1, 0, 1, 1, 0, 0, 0, 7, + 0, 0, 7, 7, 1, 0, 9, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 0, 0, 0, 1, 1, 1, 1, + 0, 0, 0, 0, 11, 0, 11, 0, + 1, 1, 1, 1, 1, 1, 1, 0, + 0, 0, 13, 13, 0, 0, 1, 1, + 0, 0, 0, 1, 1, 1, 0, 0, + 0, 0, 9, 0, 0, 7, 0, 7, + 1, 0, 0, 188, 188, 188, 188, 188, + 188, 188, 188, 188, 188, 194, 194, 194, + 194, 194, 194, 194, 194, 194, 194, 191, + 191, 191, 191, 191, 191, 191, 191, 191, + 191, 141, 0, 0, 0, 0, 0, 330, + 0, 0, 0, 0, 289, 0, 0, 0, + 289, 0, 0, 289, 0, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 17, + 0, 0, 0, 1, 218, 218, 1, 1, + 281, 0, 29, 0, 135, 0, 0, 0, + 29, 0, 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 17, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 17, 17, 0, 0, 0, 0, 0, 289, + 0, 0, 289, 0, 0, 289, 0, 0, + 0, 0, 0, 0, 330, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 17, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 17, 0, 0, 0, 17, 0, 0, + 0, 0, 0, 0, 0, 0, 17, 0, + 0, 0, 0, 17, 1, 281, 281, 1, + 1, 1, 281, 0, 0, 230, 0, 0, + 0, 230, 0, 0, 0, 230, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 17, + 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 17, 0, 17, 0, 0, 0, + 0, 17, 0, 0, 0, 0, 0, 0, + 0, 17, 0, 0, 17, 0, 0, 0, + 1, 281, 281, 1, 1, 281, 0, 230, + 0, 0, 0, 0, 0, 0, 230, 0, + 0, 0, 0, 230, 0, 0, 0, 0, + 0, 0, 17, 0, 0, 0, 0, 0, + 17, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 17, 0, 0, 17, 0, 0, + 0, 1, 281, 281, 1, 1, 281, 0, + 230, 0, 0, 0, 0, 230, 0, 230, + 0, 0, 0, 0, 17, 1, 281, 281, + 1, 1, 281, 0, 230, 0, 0, 0, + 230, 0, 230, 0, 230, 0, 230, 0, + 230, 0, 230, 0, 230, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 230, 0, 0, 0, 0, 17, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 289, 0, 0, 0, 0, 0, 0, 0, + 289, 0, 0, 0, 0, 289, 0, 0, + 0, 289, 0, 0, 0, 289, 0, 0, + 0, 0, 0, 0, 330, 0, 289, 0, + 0, 330, 0, 0, 0, 0, 0, 0, + 289, 0, 0, 0, 289, 0, 0, 0, + 0, 289, 0, 289, 0, 0, 0, 0, + 289, 0, 330, 0, 0, 289, 0, 0, + 0, 0, 330, 0, 0, 0, 0, 0, + 289, 0, 0, 0, 0, 0, 0, 0, + 330, 0, 0, 0, 0, 0, 289, 0, + 0, 0, 289, 0, 0, 289, 0, 0, + 0, 289, 0, 0, 289, 0, 0, 289, + 0, 0, 0, 289, 0, 0, 0, 330, + 0, 330, 0, 0, 0, 330, 0, 0, + 0, 330, 0, 289, 0, 0, 0, 0, + 330, 0, 0, 0, 3, 0, 161, 0, + 0, 0, 0, 3, 85, 0, 0, 0, + 3, 0, 0, 0, 3, 0, 0, 0, + 3, 0, 0, 0, 0, 3, 0, 0, + 29, 137, 0, 0, 0, 0, 0, 260, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 269, 0, 0, + 272, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 269, 0, 0, 0, 272, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 269, 0, 0, 0, 0, 0, 269, 0, + 272, 0, 0, 0, 0, 0, 0, 0, + 272, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 236, 41, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 236, + 0, 0, 236, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 236, + 0, 0, 0, 236, 0, 0, 236, 236, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 29, 139, 0, + 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 43, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 269, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 272, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 269, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 269, 0, + 272, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 269, + 0, 0, 0, 272, 0, 0, 0, 0, + 0, 0, 0, 266, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 269, 0, 0, 0, 0, 0, 0, 269, + 0, 0, 0, 0, 0, 0, 0, 266, + 0, 272, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 266, + 0, 272, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 272, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 269, 0, 0, 0, 0, + 0, 0, 269, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 272, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 272, 0, 0, + 0, 0, 0, 1, 0, 0, 0, 3, + 0, 1, 0, 0, 0, 3, 0, 0, + 0, 0, 3, 1, 0, 215, 0, 1, + 0, 1, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 330, 0, 0, 0, + 0, 0, 289, 0, 0, 289, 0, 0, + 289, 0, 0, 0, 0, 0, 0, 0, + 0, 17, 0, 0, 17, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 0, 0, + 0, 0, 200, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 17, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 17, 17, 0, + 289, 0, 0, 0, 289, 0, 0, 0, + 289, 0, 0, 289, 0, 0, 0, 0, + 0, 0, 330, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 17, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 17, + 0, 0, 0, 17, 0, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, + 0, 17, 1, 1, 1, 1, 1, 1, + 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 17, + 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 17, 0, 17, 0, 0, 0, + 0, 17, 0, 0, 0, 0, 0, 0, + 0, 17, 0, 0, 17, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 17, 0, 0, 0, 0, 0, 17, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 17, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 17, 0, 0, 17, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 17, 0, + 0, 1, 1, 1, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 17, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 289, 0, 0, 0, + 0, 0, 0, 0, 289, 0, 0, 0, + 0, 289, 0, 0, 0, 289, 0, 0, + 0, 289, 0, 0, 0, 0, 0, 0, + 330, 0, 289, 0, 0, 330, 0, 0, + 0, 0, 0, 0, 289, 0, 0, 0, + 289, 0, 0, 0, 0, 289, 0, 289, + 0, 0, 0, 0, 0, 330, 0, 0, + 289, 0, 0, 0, 0, 330, 0, 0, + 0, 0, 0, 289, 0, 0, 0, 0, + 0, 0, 0, 330, 0, 0, 0, 0, + 0, 289, 0, 0, 0, 289, 0, 0, + 289, 0, 0, 0, 289, 0, 0, 289, + 0, 0, 289, 0, 0, 0, 289, 0, + 0, 0, 330, 0, 330, 0, 0, 0, + 330, 0, 0, 0, 330, 0, 289, 0, + 0, 0, 0, 330, 1, 1, 1, 1, + 1, 305, 1, 1, 1, 1, 1, 0, + 0, 0, 3, 53, 1, 1, 1, 1, + 0, 0, 149, 0, 0, 0, 0, 7, + 7, 3, 7, 7, 1, 0, 9, 1, + 1, 1, 149, 0, 0, 0, 9, 3, + 149, 1, 1, 1, 1, 149, 0, 0, + 0, 0, 3, 11, 11, 1, 1, 1, + 1, 149, 0, 0, 0, 0, 3, 13, + 13, 0, 158, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 87, 1, + 0, 0, 0, 3, 57, 1, 1, 0, + 0, 0, 3, 1, 310, 0, 0, 0, + 3, 0, 0, 0, 3, 0, 0, 0, + 1, 0, 0, 0, 3, 0, 0, 1, + 0, 0, 0, 3, 59, 37, 0, 0, + 0, 0, 31, 275, 93, 91, 325, 221, + 293, 89, 221, 221, 293, 278, 293, 293, + 0, 335, 315, 320, 221, 221, 293, 185, + 297, 341, 293, 221, 341, 0, 127, 0, + 0, 131, 0, 23, 3, 0, 21, 21, + 129, 155, 1, 152, 203, 0, 227, 0, + 227, 29, 227, 95, 285, 1, 1, 285, + 1, 1, 285, 1, 285, 275, 330, 275, + 121, 257, 197, 0, 0, 230, 71, 257, + 275, 275, 275, 257, 275, 275, 275, 330, + 275, 275, 275, 289, 275, 289, 257, 257, + 275, 301, 275, 257, 275, 275, 275, 275, + 289, 275, 275, 0, 230, 0, 230, 230, + 230, 0, 230, 0, 0, 0, 230, 0, + 230, 230, 230, 0, 230, 0, 0, 230, + 0, 0, 0, 0, 0, 230, 0, 230, + 230, 0, 230, 257, 257, 257, 257, 257, + 257, 257, 257, 257, 257, 257, 257, 275, + 330, 275, 275, 275, 275, 275, 257, 275, + 275, 275, 275, 275, 275, 275, 275, 301, + 301, 275, 275, 275, 275, 301, 275, 275, + 301, 275, 275, 301, 330, 275, 275, 330, + 275, 111, 61, 1, 1, 285, 285, 275, + 3, 275, 119, 69, 254, 275, 3, 275, + 0, 285, 285, 285, 275, 3, 275, 101, + 45, 239, 275, 275, 285, 305, 285, 275, + 3, 275, 103, 47, 0, 242, 275, 275, + 275, 3, 275, 239, 275, 275, 285, 285, + 275, 3, 275, 109, 55, 251, 275, 275, + 75, 79, 0, 164, 3, 29, 3, 0, + 123, 275, 275, 0, 0, 0, 0, 0, + 0, 179, 173, 182, 99, 170, 149, 149, + 167, 0, 176, 3, 3, 3, 3, 266, + 3, 3, 266, 3, 266, 3, 3, 115, + 65, 113, 63, 285, 285, 275, 275, 3, + 97, 39, 275, 275, 233, 0, 0, 275, + 275, 3, 263, 125, 0, 5, 5, 5, + 5, 5, 0, 1, 5, 5, 5, 0, + 0, 0, 5, 5, 0, 257, 257, 257, + 257, 257, 257, 257, 257, 257, 257, 257, + 257, 257, 257, 257, 257, 239, 105, 49, + 107, 51, 245, 117, 67, 285, 285, 285, + 275, 275, 3, 275, 275, 245, 285, 285, + 310, 275, 275, 3, 275, 275, 0, 248, + 275, 275, 245, 3, 275, 275, 33, 0, + 29, 35, 0 +}; + +static const short _redcloth_inline_to_state_actions[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 25, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 25, 0 +}; + +static const short _redcloth_inline_from_state_actions[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 27, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 27, 0 +}; + +static const short _redcloth_inline_eof_trans[] = { + 0, 1, 4, 4, 4, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 209, 209, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, + 346, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 389, 389, 4, 4, 389, 389, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 346, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 389, + 389, 389, 389, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 389, 389, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 389, 389, 4, 4, + 389, 389, 389, 389, 4, 4, 4, 4, + 4, 4, 389, 389, 4, 4, 4, 389, + 389, 4, 4, 389, 389, 4, 4, 389, + 389, 389, 389, 389, 389, 389, 389, 389, + 4, 389, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 389, 389, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 389, 389, 389, + 389, 4, 4, 4, 4, 4, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 209, 209, 209, 209, 209, 209, + 209, 4, 4, 4, 209, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 866, 866, 866, + 4, 209, 4, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 1015, 1015, 1015, 1015, 1015, 1015, 1015, + 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, + 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, + 209, 209, 209, 209, 209, 209, 209, 209, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 4, 4, 4, 4, 4, + 4, 4, 4, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 4, + 4, 4, 4, 4, 4, 4, 4, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 4, 4, 4, 4, + 4, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 209, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 4, 4, 4, 209, 4, 4, 4, + 4, 4, 4, 4, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 209, 209, 209, + 209, 1910, 1910, 1910, 1910, 1910, 0, 4, + 1943, 1943, 1943, 1946, 1953, 1954, 1957, 1957, + 1957, 1964, 1943, 1943, 1977, 1979, 1979, 1979, + 1977, 1977, 1977, 1977, 1977, 1977, 1977, 4, + 1943, 1943, 1943, 1943, 1943, 1943, 1977, 1943, + 1943, 1943, 1943, 1977, 1977, 1977, 1977, 1977, + 1977, 4, 1943, 1943, 1943, 1943, 1943, 1943, + 1943, 1977, 1943, 1943, 1977, 1979, 1979, 1979, + 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, + 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, + 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1979, + 1979, 1979, 1979, 1979, 1979, 1979, 1979, 1977, + 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, + 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, + 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, + 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, + 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, + 1977, 1977, 1977, 1943, 1943, 1977, 4, 1943, + 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, + 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1943, + 1943, 1943, 1943, 1943, 1943, 1943, 1943, 1977, + 1943, 1943, 1943, 1977, 1953, 2090, 1953, 1943, + 1943, 2099, 2099, 1943, 1943, 1943, 2099, 1953, + 1943, 1943, 2112, 2112, 1943, 1943, 1943, 1943, + 1943, 2112, 2123, 2112, 2123, 1943, 1943, 1943, + 2112, 4, 1943, 1943, 1943, 1943, 1943, 1943, + 2140, 2140, 1943, 1943, 1943, 1953, 1953, 2148, + 2148, 2148, 2148, 2153, 1943, 1943, 1943, 1953, + 2162, 2163, 2164, 2164, 2164, 2164, 2165, 2165, + 2165, 2166, 2169, 2169, 2171, 2166, 2171, 2166, + 2169, 2169, 2171, 2166, 2169, 2169, 2171, 2166, + 2169, 2169, 2171, 2166, 2171, 2166, 2171, 2166, + 2171, 2166, 1953, 2184, 1953, 2186, 1943, 1943, + 2193, 1943, 1943, 2193, 1943, 1943, 1943, 1943, + 1943, 1943, 2204, 1953, 1977, 1977, 1977, 1977, + 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, + 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, + 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, + 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, + 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, + 1977, 1977, 1977, 1977, 1977, 1977, 1977, 1977, + 1977, 1977, 1977, 2112, 2112, 2239, 2239, 2241, + 2239, 2239, 2244, 1953, 1943, 1943, 1943, 1943, + 2239, 1943, 1943, 1943, 1943, 1943, 2239, 2241, + 1943, 2239, 4, 1943, 1943, 1943, 1943, 1953, + 1953, 0, 2274 +}; + +static const int redcloth_inline_start = 1510; +static const int redcloth_inline_error = 0; + +static const int redcloth_inline_en_code_tag = 1865; +static const int redcloth_inline_en_main = 1510; + +#line 153 "ext/redcloth_scan/redcloth_inline.rl" + +VALUE +red_pass(VALUE self, VALUE regs, VALUE ref, ID meth, VALUE refs) +{ + VALUE txt = rb_hash_aref(regs, ref); + if (!NIL_P(txt)) rb_hash_aset(regs, ref, redcloth_inline2(self, txt, refs)); + return rb_funcall(self, meth, 1, regs); +} + +VALUE +red_parse_attr(VALUE self, VALUE regs, VALUE ref) +{ + VALUE txt = rb_hash_aref(regs, ref); + VALUE new_regs = redcloth_attributes(self, txt); + return rb_funcall(regs, rb_intern("update"), 1, new_regs); +} + +VALUE +red_parse_link_attr(VALUE self, VALUE regs, VALUE ref) +{ + VALUE txt = rb_hash_aref(regs, ref); + VALUE new_regs = redcloth_link_attributes(self, txt); + return rb_funcall(regs, rb_intern("update"), 1, new_regs); +} + +VALUE +red_pass_code(VALUE self, VALUE regs, VALUE ref, ID meth) +{ + VALUE txt = rb_hash_aref(regs, ref); + if (!NIL_P(txt)) { + VALUE txt2 = rb_str_new2(""); + rb_str_cat_escaped_for_preformatted(self, txt2, RSTRING(txt)->ptr, RSTRING(txt)->ptr + RSTRING(txt)->len); + rb_hash_aset(regs, ref, txt2); + } + return rb_funcall(self, meth, 1, regs); +} + +VALUE +red_block(VALUE self, VALUE regs, VALUE block, VALUE refs) +{ + ID method; + VALUE fallback; + VALUE sym_text = ID2SYM(rb_intern("text")); + VALUE btype = rb_hash_aref(regs, ID2SYM(rb_intern("type"))); + block = rb_funcall(block, rb_intern("strip"), 0); + if ((RSTRING(block)->len > 0) && !NIL_P(btype)) + { + method = rb_intern(RSTRING(btype)->ptr); + if (method == rb_intern("notextile")) { + rb_hash_aset(regs, sym_text, block); + } else { + rb_hash_aset(regs, sym_text, redcloth_inline2(self, block, refs)); + } + if (rb_respond_to(self, method)) { + block = rb_funcall(self, method, 1, regs); + } else { + fallback = rb_hash_aref(regs, ID2SYM(rb_intern("fallback"))); + if (!NIL_P(fallback)) { + rb_str_append(fallback, rb_hash_aref(regs, sym_text)); + CLEAR_REGS(); + rb_hash_aset(regs, sym_text, fallback); + } + block = rb_funcall(self, rb_intern("p"), 1, regs); + } + } + return block; +} + +VALUE +red_blockcode(VALUE self, VALUE regs, VALUE block) +{ + VALUE btype = rb_hash_aref(regs, ID2SYM(rb_intern("type"))); + block = rb_funcall(block, rb_intern("strip"), 0); + if (RSTRING(block)->len > 0) + { + rb_hash_aset(regs, ID2SYM(rb_intern("text")), block); + block = rb_funcall(self, rb_intern(RSTRING(btype)->ptr), 1, regs); + } + return block; +} + +void +red_inc(VALUE regs, VALUE ref) +{ + int aint = 0; + VALUE aval = rb_hash_aref(regs, ref); + if (aval != Qnil) aint = NUM2INT(aval); + rb_hash_aset(regs, ref, INT2NUM(aint + 1)); +} + +VALUE +redcloth_inline(self, p, pe, refs) + VALUE self; + char *p, *pe; + VALUE refs; +{ + int cs, act; + char *ts, *te, *reg, *eof; + VALUE block = rb_str_new2(""); + VALUE regs = Qnil; + unsigned int opts = 0; + VALUE buf = Qnil; + + +#line 6854 "ext/redcloth_scan/redcloth_inline.c" + { + cs = redcloth_inline_start; + ts = 0; + te = 0; + act = 0; + } +#line 257 "ext/redcloth_scan/redcloth_inline.rl" + + +#line 6864 "ext/redcloth_scan/redcloth_inline.c" + { + int _klen; + unsigned int _trans; + const char *_acts; + unsigned int _nacts; + const char *_keys; + + if ( p == pe ) + goto _test_eof; + if ( cs == 0 ) + goto _out; +_resume: + _acts = _redcloth_inline_actions + _redcloth_inline_from_state_actions[cs]; + _nacts = (unsigned int) *_acts++; + while ( _nacts-- > 0 ) { + switch ( *_acts++ ) { + case 1: +#line 7 "ext/redcloth_scan/redcloth_inline.rl" + { STORE(text); } + break; + case 21: +#line 1 "ext/redcloth_scan/redcloth_inline.rl" + {ts = p;} + break; +#line 6889 "ext/redcloth_scan/redcloth_inline.c" + } + } + + _keys = _redcloth_inline_trans_keys + _redcloth_inline_key_offsets[cs]; + _trans = _redcloth_inline_index_offsets[cs]; + + _klen = _redcloth_inline_single_lengths[cs]; + if ( _klen > 0 ) { + const char *_lower = _keys; + const char *_mid; + const char *_upper = _keys + _klen - 1; + while (1) { + if ( _upper < _lower ) + break; + + _mid = _lower + ((_upper-_lower) >> 1); + if ( (*p) < *_mid ) + _upper = _mid - 1; + else if ( (*p) > *_mid ) + _lower = _mid + 1; + else { + _trans += (_mid - _keys); + goto _match; + } + } + _keys += _klen; + _trans += _klen; + } + + _klen = _redcloth_inline_range_lengths[cs]; + if ( _klen > 0 ) { + const char *_lower = _keys; + const char *_mid; + const char *_upper = _keys + (_klen<<1) - 2; + while (1) { + if ( _upper < _lower ) + break; + + _mid = _lower + (((_upper-_lower) >> 1) & ~1); + if ( (*p) < _mid[0] ) + _upper = _mid - 2; + else if ( (*p) > _mid[1] ) + _lower = _mid + 2; + else { + _trans += ((_mid - _keys)>>1); + goto _match; + } + } + _trans += _klen; + } + +_match: + _trans = _redcloth_inline_indicies[_trans]; +_eof_trans: + cs = _redcloth_inline_trans_targs[_trans]; + + if ( _redcloth_inline_trans_actions[_trans] == 0 ) + goto _again; + + _acts = _redcloth_inline_actions + _redcloth_inline_trans_actions[_trans]; + _nacts = (unsigned int) *_acts++; + while ( _nacts-- > 0 ) + { + switch ( *_acts++ ) + { + case 0: +#line 5 "ext/redcloth_scan/redcloth_inline.rl" + { reg = p; } + break; + case 1: +#line 7 "ext/redcloth_scan/redcloth_inline.rl" + { STORE(text); } + break; + case 2: +#line 8 "ext/redcloth_scan/redcloth_inline.rl" + { CLEAR_REGS(); reg = NULL; } + break; + case 3: +#line 20 "ext/redcloth_scan/redcloth_inline.rl" + { ASET(align, left) } + break; + case 4: +#line 21 "ext/redcloth_scan/redcloth_inline.rl" + { ASET(align, right) } + break; + case 5: +#line 23 "ext/redcloth_scan/redcloth_inline.rl" + { ASET(align, center) } + break; + case 6: +#line 29 "ext/redcloth_scan/redcloth_inline.rl" + { STORE(class) } + break; + case 7: +#line 29 "ext/redcloth_scan/redcloth_inline.rl" + {STORE(id)} + break; + case 8: +#line 30 "ext/redcloth_scan/redcloth_inline.rl" + { STORE(lang) } + break; + case 9: +#line 31 "ext/redcloth_scan/redcloth_inline.rl" + { STORE(style) } + break; + case 10: +#line 108 "ext/redcloth_scan/redcloth_inline.rl" + { STORE(title) } + break; + case 11: +#line 18 "ext/redcloth_scan/redcloth_inline.rl" + { STORE(link_text); } + break; + case 12: +#line 19 "ext/redcloth_scan/redcloth_inline.rl" + { STORE_URL(href); } + break; + case 13: +#line 20 "ext/redcloth_scan/redcloth_inline.rl" + { STORE(href); } + break; + case 14: +#line 23 "ext/redcloth_scan/redcloth_inline.rl" + { STORE(src) } + break; + case 15: +#line 25 "ext/redcloth_scan/redcloth_inline.rl" + { STORE_URL(href); } + break; + case 16: +#line 32 "ext/redcloth_scan/redcloth_inline.rl" + { STORE(beginning_space); } + break; + case 17: +#line 33 "ext/redcloth_scan/redcloth_inline.rl" + { p--; } + break; + case 18: +#line 45 "ext/redcloth_scan/redcloth_inline.rl" + { STORE(beginning_space); } + break; + case 19: +#line 69 "ext/redcloth_scan/redcloth_inline.rl" + { STORE(title) } + break; + case 22: +#line 1 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;} + break; + case 23: +#line 89 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ CAT(block); {cs = 1510; goto _again;} }} + break; + case 24: +#line 11 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ rb_str_cat_escaped_for_preformatted(self, block, ts, te); }} + break; + case 25: +#line 11 "ext/redcloth_scan/redcloth_inline.rl" + {te = p;p--;{ rb_str_cat_escaped_for_preformatted(self, block, ts, te); }} + break; + case 26: +#line 11 "ext/redcloth_scan/redcloth_inline.rl" + {{p = ((te))-1;}{ rb_str_cat_escaped_for_preformatted(self, block, ts, te); }} + break; + case 27: +#line 97 "ext/redcloth_scan/redcloth_inline.rl" + {act = 4;} + break; + case 28: +#line 100 "ext/redcloth_scan/redcloth_inline.rl" + {act = 6;} + break; + case 29: +#line 101 "ext/redcloth_scan/redcloth_inline.rl" + {act = 7;} + break; + case 30: +#line 103 "ext/redcloth_scan/redcloth_inline.rl" + {act = 9;} + break; + case 31: +#line 104 "ext/redcloth_scan/redcloth_inline.rl" + {act = 10;} + break; + case 32: +#line 105 "ext/redcloth_scan/redcloth_inline.rl" + {act = 11;} + break; + case 33: +#line 106 "ext/redcloth_scan/redcloth_inline.rl" + {act = 12;} + break; + case 34: +#line 109 "ext/redcloth_scan/redcloth_inline.rl" + {act = 15;} + break; + case 35: +#line 118 "ext/redcloth_scan/redcloth_inline.rl" + {act = 24;} + break; + case 36: +#line 119 "ext/redcloth_scan/redcloth_inline.rl" + {act = 25;} + break; + case 37: +#line 121 "ext/redcloth_scan/redcloth_inline.rl" + {act = 26;} + break; + case 38: +#line 125 "ext/redcloth_scan/redcloth_inline.rl" + {act = 30;} + break; + case 39: +#line 134 "ext/redcloth_scan/redcloth_inline.rl" + {act = 38;} + break; + case 40: +#line 135 "ext/redcloth_scan/redcloth_inline.rl" + {act = 39;} + break; + case 41: +#line 137 "ext/redcloth_scan/redcloth_inline.rl" + {act = 41;} + break; + case 42: +#line 10 "ext/redcloth_scan/redcloth_inline.rl" + {act = 44;} + break; + case 43: +#line 10 "ext/redcloth_scan/redcloth_inline.rl" + {act = 45;} + break; + case 44: +#line 10 "ext/redcloth_scan/redcloth_inline.rl" + {act = 46;} + break; + case 45: +#line 95 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ INLINE(block, image); }} + break; + case 46: +#line 98 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ PARSE_LINK_ATTR(link_text); PASS(block, name, link); }} + break; + case 47: +#line 100 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ PARSE_ATTR(text); PASS_CODE(block, text, code, opts); }} + break; + case 48: +#line 101 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ CAT(block); {cs = 1865; goto _again;} }} + break; + case 49: +#line 102 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ INLINE(block, notextile); }} + break; + case 50: +#line 103 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ PARSE_ATTR(text); PASS(block, text, strong); }} + break; + case 51: +#line 104 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ PARSE_ATTR(text); PASS(block, text, b); }} + break; + case 52: +#line 105 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ PARSE_ATTR(text); PASS(block, text, em); }} + break; + case 53: +#line 106 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ PARSE_ATTR(text); PASS(block, text, i); }} + break; + case 54: +#line 107 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ PASS(block, text, del); }} + break; + case 55: +#line 108 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ PASS(block, text, del_phrase); }} + break; + case 56: +#line 109 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ PARSE_ATTR(text); PASS(block, text, ins); }} + break; + case 57: +#line 110 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ PARSE_ATTR(text); PASS(block, text, sup); }} + break; + case 58: +#line 111 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ PARSE_ATTR(text); PASS(block, text, sup_phrase); }} + break; + case 59: +#line 112 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ PARSE_ATTR(text); PASS(block, text, sub); }} + break; + case 60: +#line 113 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ PARSE_ATTR(text); PASS(block, text, sub_phrase); }} + break; + case 61: +#line 114 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ PARSE_ATTR(text); PASS(block, text, span); }} + break; + case 62: +#line 115 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ PARSE_ATTR(text); PASS(block, text, cite); }} + break; + case 63: +#line 12 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ rb_str_append(block, rb_funcall(self, rb_intern("ignore"), 1, regs)); }} + break; + case 64: +#line 117 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ PASS(block, text, snip); }} + break; + case 65: +#line 118 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ PASS(block, text, quote1); }} + break; + case 66: +#line 119 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ PASS(block, text, quote2); }} + break; + case 67: +#line 121 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ INLINE(block, ellipsis); }} + break; + case 68: +#line 122 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ INLINE(block, emdash); }} + break; + case 69: +#line 123 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ INLINE(block, endash); }} + break; + case 70: +#line 124 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ INLINE(block, arrow); }} + break; + case 71: +#line 126 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ INLINE(block, acronym); }} + break; + case 72: +#line 128 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ INLINE(block, trademark); }} + break; + case 73: +#line 129 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ INLINE(block, registered); }} + break; + case 74: +#line 130 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ INLINE(block, copyright); }} + break; + case 75: +#line 131 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ PASS(block, text, footno); }} + break; + case 76: +#line 132 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ INLINE(block, entity); }} + break; + case 77: +#line 140 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ INLINE(block, inline_redcloth_version); }} + break; + case 78: +#line 10 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ rb_str_cat_escaped(self, block, ts, te); }} + break; + case 79: +#line 10 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;{ rb_str_cat_escaped(self, block, ts, te); }} + break; + case 80: +#line 146 "ext/redcloth_scan/redcloth_inline.rl" + {te = p+1;} + break; + case 81: +#line 95 "ext/redcloth_scan/redcloth_inline.rl" + {te = p;p--;{ INLINE(block, image); }} + break; + case 82: +#line 97 "ext/redcloth_scan/redcloth_inline.rl" + {te = p;p--;{ PARSE_LINK_ATTR(link_text); PASS(block, name, link); }} + break; + case 83: +#line 100 "ext/redcloth_scan/redcloth_inline.rl" + {te = p;p--;{ PARSE_ATTR(text); PASS_CODE(block, text, code, opts); }} + break; + case 84: +#line 101 "ext/redcloth_scan/redcloth_inline.rl" + {te = p;p--;{ CAT(block); {cs = 1865; goto _again;} }} + break; + case 85: +#line 103 "ext/redcloth_scan/redcloth_inline.rl" + {te = p;p--;{ PARSE_ATTR(text); PASS(block, text, strong); }} + break; + case 86: +#line 104 "ext/redcloth_scan/redcloth_inline.rl" + {te = p;p--;{ PARSE_ATTR(text); PASS(block, text, b); }} + break; + case 87: +#line 105 "ext/redcloth_scan/redcloth_inline.rl" + {te = p;p--;{ PARSE_ATTR(text); PASS(block, text, em); }} + break; + case 88: +#line 106 "ext/redcloth_scan/redcloth_inline.rl" + {te = p;p--;{ PARSE_ATTR(text); PASS(block, text, i); }} + break; + case 89: +#line 109 "ext/redcloth_scan/redcloth_inline.rl" + {te = p;p--;{ PARSE_ATTR(text); PASS(block, text, ins); }} + break; + case 90: +#line 114 "ext/redcloth_scan/redcloth_inline.rl" + {te = p;p--;{ PARSE_ATTR(text); PASS(block, text, span); }} + break; + case 91: +#line 115 "ext/redcloth_scan/redcloth_inline.rl" + {te = p;p--;{ PARSE_ATTR(text); PASS(block, text, cite); }} + break; + case 92: +#line 12 "ext/redcloth_scan/redcloth_inline.rl" + {te = p;p--;{ rb_str_append(block, rb_funcall(self, rb_intern("ignore"), 1, regs)); }} + break; + case 93: +#line 117 "ext/redcloth_scan/redcloth_inline.rl" + {te = p;p--;{ PASS(block, text, snip); }} + break; + case 94: +#line 118 "ext/redcloth_scan/redcloth_inline.rl" + {te = p;p--;{ PASS(block, text, quote1); }} + break; + case 95: +#line 119 "ext/redcloth_scan/redcloth_inline.rl" + {te = p;p--;{ PASS(block, text, quote2); }} + break; + case 96: +#line 121 "ext/redcloth_scan/redcloth_inline.rl" + {te = p;p--;{ INLINE(block, ellipsis); }} + break; + case 97: +#line 125 "ext/redcloth_scan/redcloth_inline.rl" + {te = p;p--;{ INLINE(block, caps); }} + break; + case 98: +#line 127 "ext/redcloth_scan/redcloth_inline.rl" + {te = p;p--;{ INLINE(block, dim); }} + break; + case 99: +#line 134 "ext/redcloth_scan/redcloth_inline.rl" + {te = p;p--;{ INLINE(block, inline_html); }} + break; + case 100: +#line 135 "ext/redcloth_scan/redcloth_inline.rl" + {te = p;p--;{ INLINE(block, inline_html); }} + break; + case 101: +#line 136 "ext/redcloth_scan/redcloth_inline.rl" + {te = p;p--;{ INLINE(block, inline_html); }} + break; + case 102: +#line 137 "ext/redcloth_scan/redcloth_inline.rl" + {te = p;p--;{ INLINE(block, inline_html); }} + break; + case 103: +#line 138 "ext/redcloth_scan/redcloth_inline.rl" + {te = p;p--;{ INLINE(block, inline_html); }} + break; + case 104: +#line 10 "ext/redcloth_scan/redcloth_inline.rl" + {te = p;p--;{ rb_str_cat_escaped(self, block, ts, te); }} + break; + case 105: +#line 10 "ext/redcloth_scan/redcloth_inline.rl" + {te = p;p--;{ rb_str_cat_escaped(self, block, ts, te); }} + break; + case 106: +#line 10 "ext/redcloth_scan/redcloth_inline.rl" + {te = p;p--;{ rb_str_cat_escaped(self, block, ts, te); }} + break; + case 107: +#line 95 "ext/redcloth_scan/redcloth_inline.rl" + {{p = ((te))-1;}{ INLINE(block, image); }} + break; + case 108: +#line 97 "ext/redcloth_scan/redcloth_inline.rl" + {{p = ((te))-1;}{ PARSE_LINK_ATTR(link_text); PASS(block, name, link); }} + break; + case 109: +#line 127 "ext/redcloth_scan/redcloth_inline.rl" + {{p = ((te))-1;}{ INLINE(block, dim); }} + break; + case 110: +#line 135 "ext/redcloth_scan/redcloth_inline.rl" + {{p = ((te))-1;}{ INLINE(block, inline_html); }} + break; + case 111: +#line 10 "ext/redcloth_scan/redcloth_inline.rl" + {{p = ((te))-1;}{ rb_str_cat_escaped(self, block, ts, te); }} + break; + case 112: +#line 10 "ext/redcloth_scan/redcloth_inline.rl" + {{p = ((te))-1;}{ rb_str_cat_escaped(self, block, ts, te); }} + break; + case 113: +#line 10 "ext/redcloth_scan/redcloth_inline.rl" + {{p = ((te))-1;}{ rb_str_cat_escaped(self, block, ts, te); }} + break; + case 114: +#line 1 "ext/redcloth_scan/redcloth_inline.rl" + { switch( act ) { + case 4: + {{p = ((te))-1;} PARSE_LINK_ATTR(link_text); PASS(block, name, link); } + break; + case 6: + {{p = ((te))-1;} PARSE_ATTR(text); PASS_CODE(block, text, code, opts); } + break; + case 7: + {{p = ((te))-1;} CAT(block); {cs = 1865; goto _again;} } + break; + case 9: + {{p = ((te))-1;} PARSE_ATTR(text); PASS(block, text, strong); } + break; + case 10: + {{p = ((te))-1;} PARSE_ATTR(text); PASS(block, text, b); } + break; + case 11: + {{p = ((te))-1;} PARSE_ATTR(text); PASS(block, text, em); } + break; + case 12: + {{p = ((te))-1;} PARSE_ATTR(text); PASS(block, text, i); } + break; + case 15: + {{p = ((te))-1;} PARSE_ATTR(text); PASS(block, text, ins); } + break; + case 24: + {{p = ((te))-1;} PASS(block, text, quote1); } + break; + case 25: + {{p = ((te))-1;} PASS(block, text, quote2); } + break; + case 26: + {{p = ((te))-1;} INLINE(block, ellipsis); } + break; + case 30: + {{p = ((te))-1;} INLINE(block, caps); } + break; + case 38: + {{p = ((te))-1;} INLINE(block, inline_html); } + break; + case 39: + {{p = ((te))-1;} INLINE(block, inline_html); } + break; + case 41: + {{p = ((te))-1;} INLINE(block, inline_html); } + break; + case 44: + {{p = ((te))-1;} rb_str_cat_escaped(self, block, ts, te); } + break; + case 45: + {{p = ((te))-1;} rb_str_cat_escaped(self, block, ts, te); } + break; + case 46: + {{p = ((te))-1;} rb_str_cat_escaped(self, block, ts, te); } + break; + } + } + break; +#line 7463 "ext/redcloth_scan/redcloth_inline.c" + } + } + +_again: + _acts = _redcloth_inline_actions + _redcloth_inline_to_state_actions[cs]; + _nacts = (unsigned int) *_acts++; + while ( _nacts-- > 0 ) { + switch ( *_acts++ ) { + case 20: +#line 1 "ext/redcloth_scan/redcloth_inline.rl" + {ts = 0;} + break; +#line 7476 "ext/redcloth_scan/redcloth_inline.c" + } + } + + if ( cs == 0 ) + goto _out; + if ( ++p != pe ) + goto _resume; + _test_eof: {} + if ( p == eof ) + { + if ( _redcloth_inline_eof_trans[cs] > 0 ) { + _trans = _redcloth_inline_eof_trans[cs] - 1; + goto _eof_trans; + } + } + + _out: {} + } +#line 259 "ext/redcloth_scan/redcloth_inline.rl" + + return block; +} + +/** Append characters to a string, escaping (&, <, >, ", ') using the formatter's escape method. + * @param str ruby string + * @param ts start of character buffer to append + * @param te end of character buffer + */ +void +rb_str_cat_escaped(self, str, ts, te) + VALUE self, str; + char *ts, *te; +{ + VALUE source_str = rb_str_new(ts, te-ts); + VALUE escaped_str = rb_funcall(self, rb_intern("escape"), 1, source_str); + rb_str_concat(str, escaped_str); +} + +void +rb_str_cat_escaped_for_preformatted(self, str, ts, te) + VALUE self, str; + char *ts, *te; +{ + VALUE source_str = rb_str_new(ts, te-ts); + VALUE escaped_str = rb_funcall(self, rb_intern("escape_pre"), 1, source_str); + rb_str_concat(str, escaped_str); +} + +VALUE +redcloth_inline2(self, str, refs) + VALUE self, str, refs; +{ + StringValue(str); + return redcloth_inline(self, RSTRING(str)->ptr, RSTRING(str)->ptr + RSTRING(str)->len + 1, refs); +} diff --git a/vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/redcloth_inline.rl b/vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/redcloth_inline.rl new file mode 100644 index 0000000..010a744 --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/redcloth_inline.rl @@ -0,0 +1,294 @@ +/* + * redcloth_inline.rl + * + * Copyright (C) 2008 Jason Garber + */ +#include +#include "redcloth.h" + +%%{ + + machine redcloth_inline; + include redcloth_common "redcloth_common.rl"; + + # links + quoted_mtext = '"' mtext '"' ; + mtext_including_quotes = (mtext ' "' mtext '" ' mtext?)+ ; + mtext_no_quotes = mtext -- '"' ; + link_says = ( C_noactions "."* " "* ((quoted_mtext | mtext_including_quotes | mtext_no_quotes) -- '":') ) >A %{ STORE(link_text); } ; + link = ( '"' link_says '":' %A uri %{ STORE_URL(href); } ) >X ; + bracketed_link = ( '["' link_says '":' %A uri %{ STORE(href); } :> "]" ) >X ; + + # images + image_src = ( uri ) >A %{ STORE(src) } ; + image_is = ( A2 C ". "? image_src :> title? ) ; + image_link = ( ":" uri >A %{ STORE_URL(href); } ) ; + image = ( "["? "!" image_is "!" %A image_link? "]"? ) >X ; + + # footnotes + footno = "[" >X %A digit+ %T "]" ; + + # markup + begin_markup_phrase = " "? >A %{ STORE(beginning_space); }; + end_markup_phrase = (" " | PUNCT | EOF | LF) @{ fhold; }; + code = "["? "@" >X mtext >A %T :> "@" "]"? ; + code_tag_start = "]* ">" ; + code_tag_end = "" ; + script_tag = ( "]* ">" (default+ -- "") "" LF? ) >X >A %T ; + notextile = "" >X (default+ -- "") >A %T ""; + strong = "["? "*" >X mtext >A %T :> "*" "]"? ; + b = "["? "**" >X mtext >A %T :> "**" "]"? ; + em = "["? "_" >X mtext >A %T :> "_" "]"? ; + i = "["? "__" >X mtext >A %T :> "__" "]"? ; + del = "[-" >X C ( mtext ) >A %T :>> "-]" ; + emdash_parenthetical_phrase_with_spaces = " -- " mtext " -- " ; + del_phrase = (( " " >A %{ STORE(beginning_space); } "-") >X C ( mtext ) >A %T :>> ( "-" end_markup_phrase )) - emdash_parenthetical_phrase_with_spaces ; + ins = "["? "+" >X mtext >A %T :> "+" "]"? ; + sup = "[^" >X mtext >A %T :> "^]" ; + sup_phrase = ( begin_markup_phrase "^") >X C ( mtext ) >A %T :>> ( "^" end_markup_phrase ) ; + sub = "[~" >X mtext >A %T :> "~]" ; + sub_phrase = ( begin_markup_phrase "~") >X C ( mtext ) >A %T :>> ( "~" end_markup_phrase ) ; + span = "["? "%" >X mtext >A %T :> "%" "]"? ; + cite = "["? "??" >X mtext >A %T :> "??" "]"? ; + ignore = "["? "==" >X %A mtext %T :> "==" "]"? ; + snip = "["? "```" >X %A mtext %T :> "```" "]"? ; + quote1 = "["? "'" >X %A mtext %T :> "'" "]"? ; + quote2 = "["? '"' >X %A mtext %T :> '"' "]"? ; + + # html + start_tag = ( "<" Name space+ AttrSet* (AttrEnd)? ">" | "<" Name ">" ) >X >A %T ; + empty_tag = ( "<" Name space+ AttrSet* (AttrEnd)? "/>" | "<" Name "/>" ) >X >A %T ; + end_tag = ( "" ) >X >A %T ; + html_comment = ("") >X >A %T; + + # glyphs + ellipsis = ( " "? >A %T "..." ) >X ; + emdash = "--" ; + arrow = "->" ; + endash = " - " ; + acronym = ( [A-Z] >A [A-Z0-9]{2,} %T "(" default+ >A %{ STORE(title) } :> ")" ) >X ; + caps = ( upper{3,} >A %*T ) >X ; + dim_digit = [0-9.]+ ; + prime = ("'" | '"')?; + dim_noactions = dim_digit prime (("x" | " x ") dim_digit prime) %T (("x" | " x ") dim_digit prime)? ; + dim = dim_noactions >X >A %T ; + tm = [Tt] [Mm] ; + trademark = " "? ( "[" tm "]" | "(" tm ")" ) ; + reg = [Rr] ; + registered = " "? ( "[" reg "]" | "(" reg ")" ) ; + cee = [Cc] ; + copyright = ( "[" cee "]" | "(" cee ")" ) ; + entity = ( "&" %A ( '#' digit+ | ( alpha ( alpha | digit )+ ) ) %T ';' ) >X ; + + # info + redcloth_version = "[RedCloth::VERSION]" ; + + other_phrase = phrase -- dim_noactions; + + code_tag := |* + code_tag_end { CAT(block); fgoto main; }; + default => esc_pre; + *|; + + main := |* + + image { INLINE(block, image); }; + + link { PARSE_LINK_ATTR(link_text); PASS(block, name, link); }; + bracketed_link { PARSE_LINK_ATTR(link_text); PASS(block, name, link); }; + + code { PARSE_ATTR(text); PASS_CODE(block, text, code, opts); }; + code_tag_start { CAT(block); fgoto code_tag; }; + notextile { INLINE(block, notextile); }; + strong { PARSE_ATTR(text); PASS(block, text, strong); }; + b { PARSE_ATTR(text); PASS(block, text, b); }; + em { PARSE_ATTR(text); PASS(block, text, em); }; + i { PARSE_ATTR(text); PASS(block, text, i); }; + del { PASS(block, text, del); }; + del_phrase { PASS(block, text, del_phrase); }; + ins { PARSE_ATTR(text); PASS(block, text, ins); }; + sup { PARSE_ATTR(text); PASS(block, text, sup); }; + sup_phrase { PARSE_ATTR(text); PASS(block, text, sup_phrase); }; + sub { PARSE_ATTR(text); PASS(block, text, sub); }; + sub_phrase { PARSE_ATTR(text); PASS(block, text, sub_phrase); }; + span { PARSE_ATTR(text); PASS(block, text, span); }; + cite { PARSE_ATTR(text); PASS(block, text, cite); }; + ignore => ignore; + snip { PASS(block, text, snip); }; + quote1 { PASS(block, text, quote1); }; + quote2 { PASS(block, text, quote2); }; + + ellipsis { INLINE(block, ellipsis); }; + emdash { INLINE(block, emdash); }; + endash { INLINE(block, endash); }; + arrow { INLINE(block, arrow); }; + caps { INLINE(block, caps); }; + acronym { INLINE(block, acronym); }; + dim { INLINE(block, dim); }; + trademark { INLINE(block, trademark); }; + registered { INLINE(block, registered); }; + copyright { INLINE(block, copyright); }; + footno { PASS(block, text, footno); }; + entity { INLINE(block, entity); }; + + script_tag { INLINE(block, inline_html); }; + start_tag { INLINE(block, inline_html); }; + end_tag { INLINE(block, inline_html); }; + empty_tag { INLINE(block, inline_html); }; + html_comment { INLINE(block, inline_html); }; + + redcloth_version { INLINE(block, inline_redcloth_version); }; + + other_phrase => esc; + PUNCT => esc; + space => esc; + + EOF; + + *|; + +}%% + +%% write data nofinal; + +VALUE +red_pass(VALUE self, VALUE regs, VALUE ref, ID meth, VALUE refs) +{ + VALUE txt = rb_hash_aref(regs, ref); + if (!NIL_P(txt)) rb_hash_aset(regs, ref, redcloth_inline2(self, txt, refs)); + return rb_funcall(self, meth, 1, regs); +} + +VALUE +red_parse_attr(VALUE self, VALUE regs, VALUE ref) +{ + VALUE txt = rb_hash_aref(regs, ref); + VALUE new_regs = redcloth_attributes(self, txt); + return rb_funcall(regs, rb_intern("update"), 1, new_regs); +} + +VALUE +red_parse_link_attr(VALUE self, VALUE regs, VALUE ref) +{ + VALUE txt = rb_hash_aref(regs, ref); + VALUE new_regs = redcloth_link_attributes(self, txt); + return rb_funcall(regs, rb_intern("update"), 1, new_regs); +} + +VALUE +red_pass_code(VALUE self, VALUE regs, VALUE ref, ID meth) +{ + VALUE txt = rb_hash_aref(regs, ref); + if (!NIL_P(txt)) { + VALUE txt2 = rb_str_new2(""); + rb_str_cat_escaped_for_preformatted(self, txt2, RSTRING(txt)->ptr, RSTRING(txt)->ptr + RSTRING(txt)->len); + rb_hash_aset(regs, ref, txt2); + } + return rb_funcall(self, meth, 1, regs); +} + +VALUE +red_block(VALUE self, VALUE regs, VALUE block, VALUE refs) +{ + ID method; + VALUE fallback; + VALUE sym_text = ID2SYM(rb_intern("text")); + VALUE btype = rb_hash_aref(regs, ID2SYM(rb_intern("type"))); + block = rb_funcall(block, rb_intern("strip"), 0); + if ((RSTRING(block)->len > 0) && !NIL_P(btype)) + { + method = rb_intern(RSTRING(btype)->ptr); + if (method == rb_intern("notextile")) { + rb_hash_aset(regs, sym_text, block); + } else { + rb_hash_aset(regs, sym_text, redcloth_inline2(self, block, refs)); + } + if (rb_respond_to(self, method)) { + block = rb_funcall(self, method, 1, regs); + } else { + fallback = rb_hash_aref(regs, ID2SYM(rb_intern("fallback"))); + if (!NIL_P(fallback)) { + rb_str_append(fallback, rb_hash_aref(regs, sym_text)); + CLEAR_REGS(); + rb_hash_aset(regs, sym_text, fallback); + } + block = rb_funcall(self, rb_intern("p"), 1, regs); + } + } + return block; +} + +VALUE +red_blockcode(VALUE self, VALUE regs, VALUE block) +{ + VALUE btype = rb_hash_aref(regs, ID2SYM(rb_intern("type"))); + block = rb_funcall(block, rb_intern("strip"), 0); + if (RSTRING(block)->len > 0) + { + rb_hash_aset(regs, ID2SYM(rb_intern("text")), block); + block = rb_funcall(self, rb_intern(RSTRING(btype)->ptr), 1, regs); + } + return block; +} + +void +red_inc(VALUE regs, VALUE ref) +{ + int aint = 0; + VALUE aval = rb_hash_aref(regs, ref); + if (aval != Qnil) aint = NUM2INT(aval); + rb_hash_aset(regs, ref, INT2NUM(aint + 1)); +} + +VALUE +redcloth_inline(self, p, pe, refs) + VALUE self; + char *p, *pe; + VALUE refs; +{ + int cs, act; + char *ts, *te, *reg, *eof; + VALUE block = rb_str_new2(""); + VALUE regs = Qnil; + unsigned int opts = 0; + VALUE buf = Qnil; + + %% write init; + + %% write exec; + + return block; +} + +/** Append characters to a string, escaping (&, <, >, ", ') using the formatter's escape method. + * @param str ruby string + * @param ts start of character buffer to append + * @param te end of character buffer + */ +void +rb_str_cat_escaped(self, str, ts, te) + VALUE self, str; + char *ts, *te; +{ + VALUE source_str = rb_str_new(ts, te-ts); + VALUE escaped_str = rb_funcall(self, rb_intern("escape"), 1, source_str); + rb_str_concat(str, escaped_str); +} + +void +rb_str_cat_escaped_for_preformatted(self, str, ts, te) + VALUE self, str; + char *ts, *te; +{ + VALUE source_str = rb_str_new(ts, te-ts); + VALUE escaped_str = rb_funcall(self, rb_intern("escape_pre"), 1, source_str); + rb_str_concat(str, escaped_str); +} + +VALUE +redcloth_inline2(self, str, refs) + VALUE self, str, refs; +{ + StringValue(str); + return redcloth_inline(self, RSTRING(str)->ptr, RSTRING(str)->ptr + RSTRING(str)->len + 1, refs); +} diff --git a/vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/redcloth_scan.c b/vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/redcloth_scan.c new file mode 100644 index 0000000..f2d0db7 --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/redcloth_scan.c @@ -0,0 +1,11248 @@ +#line 1 "ext/redcloth_scan/redcloth_scan.rl" +/* + * redcloth_scan.rl + * + * Copyright (C) 2008 Jason Garber + */ +#define redcloth_scan_c + +#include +#include "redcloth.h" + +VALUE mRedCloth, super_ParseError, super_RedCloth, super_HTML, super_LATEX; +int SYM_escape_preformatted, SYM_escape_attributes; + +#line 332 "ext/redcloth_scan/redcloth_scan.rl" + + + +#line 20 "ext/redcloth_scan/redcloth_scan.c" +static const unsigned char _redcloth_scan_actions[] = { + 0, 1, 0, 1, 2, 1, 3, 1, + 4, 1, 5, 1, 7, 1, 8, 1, + 9, 1, 10, 1, 11, 1, 12, 1, + 13, 1, 14, 1, 15, 1, 16, 1, + 17, 1, 18, 1, 19, 1, 20, 1, + 21, 1, 22, 1, 23, 1, 24, 1, + 25, 1, 26, 1, 27, 1, 28, 1, + 29, 1, 32, 1, 33, 1, 34, 1, + 35, 1, 37, 1, 39, 1, 40, 1, + 41, 1, 42, 1, 45, 1, 55, 1, + 56, 1, 57, 1, 58, 1, 59, 1, + 60, 1, 61, 1, 62, 1, 63, 1, + 64, 1, 66, 1, 67, 1, 68, 1, + 69, 1, 71, 1, 72, 1, 74, 1, + 75, 1, 76, 1, 77, 1, 78, 1, + 79, 1, 80, 1, 81, 1, 82, 1, + 83, 1, 85, 1, 86, 1, 87, 1, + 88, 1, 89, 1, 91, 1, 92, 1, + 93, 1, 95, 1, 96, 1, 97, 1, + 98, 1, 99, 1, 102, 1, 103, 1, + 104, 1, 105, 1, 106, 1, 107, 1, + 110, 1, 111, 1, 112, 1, 113, 1, + 114, 1, 115, 1, 118, 1, 119, 1, + 120, 1, 121, 1, 122, 1, 123, 1, + 124, 1, 125, 1, 126, 1, 127, 1, + 128, 1, 129, 1, 130, 1, 131, 1, + 132, 1, 133, 1, 134, 1, 135, 1, + 147, 1, 148, 1, 149, 1, 150, 1, + 151, 1, 152, 1, 153, 1, 154, 1, + 156, 1, 157, 1, 158, 1, 160, 1, + 161, 1, 163, 1, 164, 1, 165, 1, + 169, 1, 170, 1, 171, 1, 172, 1, + 173, 1, 174, 1, 175, 2, 0, 2, + 2, 0, 15, 2, 0, 16, 2, 0, + 39, 2, 2, 0, 2, 2, 70, 2, + 2, 73, 2, 2, 155, 2, 3, 0, + 2, 4, 0, 2, 5, 0, 2, 5, + 6, 2, 7, 0, 2, 8, 0, 2, + 9, 0, 2, 10, 0, 2, 11, 0, + 2, 12, 0, 2, 13, 0, 2, 13, + 14, 2, 14, 0, 2, 15, 2, 2, + 16, 0, 2, 17, 0, 2, 18, 0, + 2, 19, 0, 2, 20, 0, 2, 21, + 0, 2, 23, 0, 2, 24, 0, 2, + 25, 0, 2, 26, 0, 2, 28, 0, + 2, 29, 162, 2, 30, 65, 2, 30, + 84, 2, 30, 94, 2, 30, 100, 2, + 30, 108, 2, 31, 0, 2, 32, 0, + 2, 33, 0, 2, 34, 0, 2, 36, + 0, 2, 39, 167, 2, 40, 168, 2, + 41, 168, 2, 43, 1, 2, 44, 1, + 2, 45, 159, 2, 46, 1, 2, 47, + 1, 2, 48, 90, 2, 49, 101, 2, + 49, 109, 2, 52, 3, 2, 52, 166, + 2, 53, 3, 2, 58, 0, 2, 58, + 1, 2, 58, 35, 2, 58, 116, 2, + 58, 117, 2, 58, 136, 2, 58, 137, + 2, 58, 138, 2, 58, 139, 2, 58, + 140, 2, 58, 141, 2, 58, 142, 2, + 58, 144, 3, 0, 15, 2, 3, 2, + 44, 1, 3, 3, 0, 2, 3, 3, + 0, 39, 3, 4, 0, 13, 3, 5, + 0, 13, 3, 5, 6, 0, 3, 7, + 0, 13, 3, 8, 0, 13, 3, 10, + 0, 13, 3, 11, 0, 13, 3, 12, + 0, 13, 3, 13, 14, 0, 3, 15, + 2, 40, 3, 15, 2, 41, 3, 44, + 1, 45, 3, 51, 3, 0, 3, 52, + 3, 39, 3, 52, 39, 166, 3, 53, + 3, 0, 3, 58, 0, 1, 3, 58, + 0, 144, 3, 58, 1, 0, 3, 58, + 1, 46, 3, 58, 1, 146, 3, 58, + 2, 50, 3, 58, 2, 139, 3, 58, + 2, 144, 3, 58, 3, 0, 3, 58, + 7, 144, 3, 58, 8, 144, 3, 58, + 9, 144, 3, 58, 10, 144, 3, 58, + 11, 144, 3, 58, 12, 144, 3, 58, + 13, 144, 3, 58, 14, 144, 3, 58, + 16, 144, 3, 58, 17, 144, 3, 58, + 18, 144, 3, 58, 19, 144, 3, 58, + 42, 145, 3, 58, 136, 1, 3, 58, + 139, 45, 4, 2, 44, 1, 45, 4, + 5, 6, 0, 13, 4, 44, 1, 45, + 156, 4, 44, 1, 45, 159, 4, 47, + 1, 48, 90, 4, 51, 3, 0, 2, + 4, 51, 3, 0, 39, 4, 58, 0, + 2, 144, 4, 58, 0, 16, 144, 4, + 58, 1, 0, 55, 4, 58, 2, 0, + 144, 4, 58, 2, 50, 143, 4, 58, + 3, 0, 144, 4, 58, 7, 0, 144, + 4, 58, 8, 0, 144, 4, 58, 9, + 0, 144, 4, 58, 10, 0, 144, 4, + 58, 11, 0, 144, 4, 58, 12, 0, + 144, 4, 58, 13, 0, 144, 4, 58, + 13, 14, 144, 4, 58, 14, 0, 144, + 4, 58, 15, 2, 144, 4, 58, 16, + 0, 144, 4, 58, 17, 0, 144, 4, + 58, 18, 0, 144, 4, 58, 19, 0, + 144, 4, 58, 44, 1, 140, 5, 2, + 44, 1, 45, 155, 5, 58, 0, 15, + 2, 144, 5, 58, 2, 44, 1, 140, + 5, 58, 2, 50, 143, 0, 5, 58, + 3, 0, 2, 144, 5, 58, 7, 0, + 13, 144, 5, 58, 8, 0, 13, 144, + 5, 58, 10, 0, 13, 144, 5, 58, + 11, 0, 13, 144, 5, 58, 12, 0, + 13, 144, 5, 58, 13, 14, 0, 144, + 5, 58, 51, 3, 0, 144, 5, 58, + 54, 53, 3, 146, 5, 58, 139, 44, + 1, 45, 6, 58, 1, 0, 54, 3, + 146, 6, 58, 51, 3, 0, 2, 144, + 6, 58, 54, 53, 3, 0, 146, 7, + 58, 54, 53, 3, 38, 0, 146, 8, + 58, 3, 0, 1, 43, 54, 53, 146 + +}; + +static const short _redcloth_scan_key_offsets[] = { + 0, 0, 3, 27, 50, 64, 68, 71, + 84, 99, 114, 124, 139, 154, 169, 184, + 199, 214, 229, 244, 259, 273, 288, 303, + 318, 333, 348, 363, 378, 394, 409, 424, + 439, 455, 470, 485, 498, 513, 528, 543, + 558, 573, 588, 603, 618, 633, 648, 663, + 678, 693, 708, 723, 738, 753, 768, 783, + 799, 814, 829, 845, 860, 875, 890, 905, + 920, 935, 950, 965, 981, 996, 1011, 1027, + 1042, 1055, 1068, 1082, 1083, 1093, 1101, 1119, + 1138, 1148, 1168, 1188, 1197, 1211, 1212, 1227, + 1229, 1233, 1243, 1253, 1273, 1293, 1312, 1332, + 1342, 1352, 1367, 1369, 1383, 1384, 1399, 1401, + 1405, 1415, 1424, 1443, 1463, 1473, 1493, 1513, + 1523, 1539, 1542, 1547, 1557, 1567, 1587, 1607, + 1627, 1648, 1658, 1668, 1681, 1695, 1709, 1719, + 1733, 1747, 1761, 1775, 1789, 1803, 1817, 1831, + 1845, 1859, 1873, 1887, 1901, 1915, 1929, 1943, + 1957, 1972, 1986, 2000, 2014, 2029, 2043, 2057, + 2070, 2084, 2098, 2112, 2126, 2140, 2154, 2168, + 2182, 2196, 2210, 2224, 2238, 2252, 2266, 2280, + 2294, 2308, 2322, 2336, 2351, 2365, 2379, 2395, + 2409, 2423, 2437, 2451, 2465, 2479, 2493, 2507, + 2522, 2536, 2550, 2565, 2579, 2595, 2607, 2609, + 2610, 2611, 2615, 2617, 2618, 2619, 2620, 2621, + 2633, 2644, 2655, 2666, 2677, 2688, 2699, 2710, + 2721, 2733, 2745, 2757, 2769, 2772, 2775, 2777, + 2779, 2784, 2787, 2793, 2795, 2798, 2801, 2803, + 2805, 2810, 2813, 2815, 2817, 2818, 2823, 2825, + 2827, 2828, 2830, 2832, 2833, 2835, 2847, 2859, + 2871, 2887, 2900, 2911, 2913, 2914, 2915, 2919, + 2921, 2923, 2939, 2942, 2943, 2944, 2956, 2968, + 2970, 2971, 2972, 2976, 2978, 2980, 2996, 2999, + 3000, 3001, 3016, 3021, 3023, 3024, 3025, 3029, + 3031, 3034, 3038, 3039, 3040, 3041, 3042, 3045, + 3048, 3052, 3056, 3058, 3060, 3067, 3072, 3076, + 3080, 3082, 3084, 3088, 3092, 3094, 3096, 3111, + 3125, 3139, 3153, 3167, 3181, 3195, 3209, 3223, + 3238, 3253, 3268, 3283, 3289, 3295, 3298, 3300, + 3302, 3307, 3310, 3316, 3318, 3321, 3324, 3327, + 3329, 3331, 3336, 3339, 3341, 3343, 3344, 3349, + 3351, 3353, 3354, 3356, 3358, 3359, 3361, 3365, + 3369, 3374, 3379, 3382, 3385, 3393, 3399, 3408, + 3413, 3419, 3425, 3429, 3433, 3438, 3443, 3446, + 3449, 3457, 3463, 3468, 3473, 3476, 3479, 3483, + 3491, 3496, 3501, 3504, 3507, 3511, 3516, 3521, + 3525, 3530, 3545, 3560, 3575, 3580, 3598, 3603, + 3621, 3637, 3638, 3639, 3640, 3641, 3653, 3664, + 3675, 3686, 3697, 3708, 3719, 3730, 3741, 3753, + 3765, 3777, 3789, 3792, 3795, 3797, 3799, 3804, + 3807, 3813, 3815, 3818, 3821, 3823, 3825, 3830, + 3833, 3835, 3837, 3838, 3843, 3845, 3847, 3848, + 3850, 3852, 3853, 3855, 3867, 3879, 3891, 3906, + 3911, 3913, 3914, 3915, 3919, 3921, 3924, 3928, + 3929, 3930, 3931, 3932, 3935, 3938, 3942, 3946, + 3948, 3950, 3957, 3962, 3966, 3970, 3972, 3974, + 3978, 3982, 3984, 3986, 4001, 4015, 4029, 4043, + 4057, 4071, 4085, 4099, 4113, 4128, 4143, 4158, + 4173, 4179, 4185, 4188, 4190, 4192, 4197, 4200, + 4206, 4208, 4211, 4214, 4217, 4219, 4221, 4226, + 4229, 4231, 4233, 4234, 4239, 4241, 4243, 4244, + 4246, 4248, 4249, 4251, 4255, 4259, 4264, 4269, + 4272, 4275, 4283, 4289, 4298, 4303, 4309, 4315, + 4319, 4323, 4328, 4333, 4336, 4339, 4347, 4353, + 4358, 4363, 4366, 4369, 4373, 4381, 4386, 4391, + 4394, 4397, 4401, 4406, 4411, 4415, 4420, 4435, + 4450, 4465, 4470, 4488, 4493, 4511, 4527, 4528, + 4529, 4530, 4531, 4543, 4554, 4566, 4578, 4590, + 4602, 4614, 4617, 4620, 4622, 4624, 4629, 4632, + 4638, 4640, 4643, 4646, 4648, 4650, 4655, 4658, + 4660, 4662, 4663, 4668, 4670, 4672, 4673, 4675, + 4677, 4678, 4680, 4692, 4704, 4716, 4727, 4738, + 4749, 4760, 4771, 4782, 4793, 4797, 4803, 4809, + 4814, 4821, 4835, 4849, 4863, 4877, 4891, 4905, + 4919, 4933, 4944, 4959, 4973, 4984, 4985, 4989, + 4990, 4991, 4992, 4993, 4994, 5007, 5020, 5034, + 5035, 5041, 5051, 5059, 5077, 5096, 5106, 5126, + 5146, 5155, 5169, 5171, 5176, 5178, 5180, 5182, + 5184, 5186, 5201, 5203, 5210, 5220, 5230, 5250, + 5270, 5289, 5309, 5319, 5329, 5344, 5347, 5361, + 5363, 5368, 5370, 5372, 5374, 5376, 5378, 5393, + 5395, 5402, 5412, 5421, 5440, 5460, 5470, 5490, + 5510, 5520, 5526, 5529, 5532, 5535, 5538, 5541, + 5557, 5560, 5568, 5578, 5588, 5608, 5628, 5648, + 5669, 5679, 5689, 5705, 5719, 5733, 5747, 5761, + 5772, 5773, 5786, 5799, 5813, 5814, 5824, 5832, + 5850, 5869, 5879, 5899, 5919, 5928, 5942, 5944, + 5959, 5961, 5971, 5981, 6001, 6021, 6040, 6060, + 6070, 6080, 6095, 6098, 6112, 6114, 6129, 6131, + 6141, 6150, 6169, 6189, 6199, 6219, 6239, 6249, + 6265, 6268, 6278, 6288, 6308, 6328, 6348, 6369, + 6379, 6389, 6401, 6403, 6404, 6405, 6409, 6411, + 6413, 6414, 6415, 6416, 6417, 6418, 6430, 6441, + 6452, 6463, 6474, 6485, 6496, 6507, 6518, 6530, + 6542, 6554, 6566, 6569, 6572, 6574, 6576, 6581, + 6584, 6590, 6592, 6595, 6598, 6600, 6602, 6607, + 6610, 6612, 6614, 6615, 6620, 6622, 6624, 6625, + 6627, 6629, 6630, 6632, 6644, 6656, 6668, 6689, + 6713, 6734, 6754, 6776, 6798, 6820, 6843, 6865, + 6887, 6909, 6931, 6953, 6975, 6997, 7019, 7041, + 7063, 7085, 7108, 7110, 7112, 7114, 7116, 7118, + 7120, 7122, 7124, 7125, 7126, 7127, 7128, 7129, + 7130, 7131, 7132, 7133, 7134, 7135, 7136, 7137, + 7138, 7139, 7140, 7141, 7143, 7145, 7146, 7147, + 7149, 7151, 7153, 7155, 7157, 7159, 7161, 7165, + 7170, 7201, 7226, 7231, 7258, 7269, 7280, 7291, + 7302, 7313, 7324, 7350, 7377, 7404, 7411, 7417, + 7423, 7432, 7439, 7467, 7479, 7491, 7519, 7545, + 7557, 7569, 7598, 7605, 7634, 7661, 7674, 7687, + 7706, 7715, 7723, 7731, 7742, 7751, 7781, 7810, + 7838, 7866, 7880, 7894, 7924, 7938, 7952, 7965, + 7978, 7992, 8006, 8037, 8066, 8079, 8092, 8107, + 8122, 8140, 8158, 8176, 8183, 8201, 8219, 8226, + 8233, 8266, 8294, 8331, 8346, 8361, 8398, 8434, + 8470, 8497, 8524, 8537, 8550, 8558, 8588, 8616, + 8630, 8644, 8658, 8672, 8701, 8715, 8729, 8742, + 8755, 8791, 8819, 8855, 8874, 8893, 8912, 8931, + 8950, 8959, 8968, 8976, 8984, 8995, 9004, 9038, + 9067, 9097, 9126, 9155, 9183, 9211, 9225, 9239, + 9273, 9302, 9331, 9340, 9348, 9378, 9393, 9408, + 9423, 9438, 9468, 9496, 9525, 9553, 9567, 9581, + 9612, 9641, 9656, 9671, 9681, 9690, 9699, 9711, + 9721, 9752, 9782, 9811, 9840, 9855, 9870, 9901, + 9916, 9931, 9943, 9952, 9960, 9969, 9984, 9999, + 10013, 10027, 10040, 10053, 10068, 10083, 10098, 10113, + 10129, 10145, 10158, 10167, 10177, 10193, 10209, 10241, + 10271, 10304, 10334, 10362, 10390, 10398, 10432, 10460, + 10474, 10488, 10504, 10520, 10534, 10548, 10562, 10576, + 10591, 10606, 10638, 10667, 10697, 10728, 10736, 10744, + 10759, 10774, 10801, 10829, 10836, 10844, 10863, 10882, + 10901, 10938, 10975, 11012, 11021, 11043, 11052, 11074, + 11092, 11100, 11118, 11147, 11165, 11185, 11210, 11235, + 11246, 11257, 11263, 11291, 11317, 11329, 11341, 11353, + 11365, 11378, 11391, 11417, 11430, 11443, 11454, 11465, + 11492, 11504, 11516, 11529, 11542, 11553, 11564, 11590, + 11617, 11629, 11641, 11669, 11675, 11695, 11700, 11706, + 11713, 11724, 11736, 11738, 11739, 11740, 11744, 11746, + 11748, 11749, 11750, 11751, 11752, 11753, 11765, 11776, + 11787, 11798, 11809, 11820, 11831, 11842, 11853, 11865, + 11877, 11889, 11901, 11904, 11907, 11909, 11911, 11916, + 11919, 11925, 11927, 11930, 11933, 11935, 11937, 11942, + 11945, 11947, 11949, 11950, 11955, 11957, 11959, 11960, + 11962, 11964, 11965, 11967, 11979, 11991, 12003, 12014, + 12026, 12028, 12029, 12030, 12034, 12036, 12039, 12041, + 12061, 12079, 12087, 12093, 12099, 12105, 12111, 12130, + 12136, 12142, 12161, 12180, 12181, 12182, 12183, 12184, + 12196, 12207, 12218, 12229, 12240, 12251, 12262, 12273, + 12284, 12296, 12308, 12320, 12332, 12335, 12338, 12340, + 12342, 12347, 12350, 12356, 12358, 12361, 12364, 12366, + 12368, 12373, 12376, 12378, 12380, 12381, 12386, 12388, + 12390, 12391, 12393, 12395, 12396, 12398, 12410, 12422, + 12434, 12456, 12469, 12481, 12483, 12484, 12485, 12489, + 12491, 12492, 12493, 12494, 12495, 12507, 12518, 12529, + 12540, 12551, 12562, 12573, 12584, 12595, 12607, 12619, + 12631, 12643, 12646, 12649, 12651, 12653, 12658, 12661, + 12667, 12669, 12672, 12675, 12677, 12679, 12684, 12687, + 12689, 12691, 12692, 12697, 12699, 12701, 12702, 12704, + 12706, 12707, 12709, 12721, 12733, 12745, 12767, 12789, + 12811, 12833, 12855, 12877, 12899, 12910, 12922, 12924, + 12925, 12926, 12930, 12932, 12934, 12935, 12936, 12937, + 12938, 12939, 12951, 12962, 12973, 12984, 12995, 13006, + 13017, 13028, 13039, 13051, 13063, 13075, 13087, 13090, + 13093, 13095, 13097, 13102, 13105, 13111, 13113, 13116, + 13119, 13121, 13123, 13128, 13131, 13133, 13135, 13136, + 13141, 13143, 13145, 13146, 13148, 13150, 13151, 13153, + 13165, 13177, 13189, 13211, 13222, 13234, 13236, 13237, + 13238, 13242, 13244, 13246, 13247, 13248, 13249, 13250, + 13251, 13263, 13274, 13285, 13296, 13307, 13318, 13329, + 13340, 13351, 13363, 13375, 13387, 13399, 13402, 13405, + 13407, 13409, 13414, 13417, 13423, 13425, 13428, 13431, + 13433, 13435, 13440, 13443, 13445, 13447, 13448, 13453, + 13455, 13457, 13458, 13460, 13462, 13463, 13465, 13477, + 13489, 13501, 13522, 13547, 13569, 13590, 13602, 13604, + 13605, 13606, 13610, 13612, 13615, 13627, 13628, 13629, + 13630, 13631, 13643, 13654, 13665, 13676, 13687, 13698, + 13709, 13720, 13731, 13743, 13755, 13767, 13779, 13782, + 13785, 13787, 13789, 13794, 13797, 13803, 13805, 13808, + 13811, 13813, 13815, 13820, 13823, 13825, 13827, 13828, + 13833, 13835, 13837, 13838, 13840, 13842, 13843, 13845, + 13857, 13869, 13881, 13883, 13884, 13885, 13886, 13887, + 13891, 13892, 13893, 13894, 13895, 13896, 13916, 13927, + 13929, 13930, 13931, 13935, 13937, 13938, 13939, 13940, + 13941, 13951, 13954, 13957, 13959, 13961, 13965, 13967, + 13969, 13973, 13976, 13978, 13980, 13984, 13986, 13988, + 13993, 13996, 13998, 14021, 14041, 14060, 14081, 14102, + 14123, 14145, 14166, 14187, 14208, 14229, 14250, 14272, + 14293, 14314, 14335, 14356, 14377, 14398, 14419, 14440, + 14461, 14462, 14463, 14464, 14465, 14466, 14467, 14468, + 14469, 14470, 14471, 14472, 14473, 14474, 14475, 14476, + 14477, 14478, 14498, 14509, 14511, 14512, 14513, 14517, + 14519, 14520, 14521, 14522, 14523, 14533, 14536, 14539, + 14541, 14543, 14547, 14549, 14551, 14555, 14558, 14560, + 14562, 14566, 14568, 14570, 14575, 14578, 14580, 14603, + 14623, 14642, 14663, 14684, 14705, 14727, 14748, 14769, + 14790, 14811, 14832, 14854, 14875, 14896, 14917, 14938, + 14959, 14980, 15001, 15022, 15043, 15046, 15047, 15070, + 15084, 15088, 15101, 15116, 15131, 15141, 15156, 15171, + 15186, 15201, 15216, 15231, 15246, 15261, 15276, 15290, + 15305, 15320, 15335, 15350, 15365, 15380, 15395, 15411, + 15426, 15441, 15456, 15472, 15487, 15502, 15515, 15530, + 15545, 15560, 15575, 15590, 15605, 15620, 15635, 15650, + 15665, 15680, 15695, 15710, 15725, 15740, 15755, 15770, + 15785, 15800, 15816, 15831, 15846, 15862, 15877, 15892, + 15907, 15922, 15937, 15952, 15967, 15982, 15998, 16013, + 16028, 16044, 16059, 16079, 16090, 16092, 16093, 16094, + 16098, 16100, 16101, 16102, 16103, 16104, 16114, 16117, + 16120, 16122, 16124, 16128, 16130, 16132, 16136, 16139, + 16141, 16143, 16147, 16149, 16151, 16156, 16159, 16161, + 16184, 16204, 16223, 16244, 16265, 16286, 16308, 16329, + 16350, 16371, 16392, 16413, 16435, 16456, 16477, 16498, + 16519, 16540, 16561, 16582, 16603, 16624, 16627, 16628, + 16651, 16665, 16669, 16682, 16697, 16712, 16722, 16737, + 16752, 16767, 16782, 16797, 16812, 16827, 16842, 16857, + 16871, 16886, 16901, 16916, 16931, 16946, 16961, 16976, + 16992, 17007, 17022, 17037, 17053, 17068, 17083, 17096, + 17111, 17126, 17141, 17156, 17171, 17186, 17201, 17216, + 17231, 17246, 17261, 17276, 17291, 17306, 17321, 17336, + 17351, 17366, 17381, 17397, 17412, 17427, 17443, 17458, + 17473, 17488, 17503, 17518, 17533, 17548, 17563, 17579, + 17594, 17609, 17625, 17640, 17660, 17671, 17673, 17674, + 17675, 17679, 17681, 17682, 17683, 17684, 17685, 17695, + 17698, 17701, 17703, 17705, 17709, 17711, 17713, 17717, + 17720, 17722, 17724, 17728, 17730, 17732, 17737, 17740, + 17742, 17765, 17785, 17804, 17825, 17846, 17867, 17889, + 17910, 17931, 17952, 17973, 17994, 18016, 18037, 18058, + 18079, 18100, 18121, 18142, 18163, 18184, 18205, 18208, + 18209, 18232, 18246, 18250, 18263, 18278, 18293, 18303, + 18318, 18333, 18348, 18363, 18378, 18393, 18408, 18423, + 18438, 18452, 18467, 18482, 18497, 18512, 18527, 18542, + 18557, 18573, 18588, 18603, 18618, 18634, 18649, 18664, + 18677, 18692, 18707, 18722, 18737, 18752, 18767, 18782, + 18797, 18812, 18827, 18842, 18857, 18872, 18887, 18902, + 18917, 18932, 18947, 18962, 18978, 18993, 19008, 19024, + 19039, 19054, 19069, 19084, 19099, 19114, 19129, 19144, + 19160, 19175, 19190, 19206, 19221, 19241, 19252, 19254, + 19255, 19256, 19260, 19262, 19263, 19264, 19265, 19266, + 19276, 19279, 19282, 19284, 19286, 19290, 19292, 19294, + 19298, 19301, 19303, 19305, 19309, 19311, 19313, 19318, + 19321, 19323, 19346, 19366, 19385, 19406, 19427, 19448, + 19470, 19491, 19512, 19533, 19554, 19575, 19597, 19618, + 19639, 19660, 19681, 19702, 19723, 19744, 19765, 19786, + 19802, 19814, 19816, 19817, 19818, 19822, 19824, 19825, + 19826, 19827, 19828, 19840, 19851, 19862, 19873, 19884, + 19895, 19906, 19917, 19928, 19940, 19952, 19964, 19976, + 19979, 19982, 19984, 19986, 19991, 19994, 20000, 20002, + 20005, 20008, 20010, 20012, 20017, 20020, 20022, 20024, + 20025, 20030, 20032, 20034, 20035, 20037, 20039, 20040, + 20042, 20054, 20066, 20078, 20094, 20107, 20118, 20134, + 20146, 20148, 20149, 20150, 20154, 20156, 20157, 20158, + 20159, 20160, 20172, 20183, 20194, 20205, 20216, 20227, + 20238, 20249, 20260, 20272, 20284, 20296, 20308, 20311, + 20314, 20316, 20318, 20323, 20326, 20332, 20334, 20337, + 20340, 20342, 20344, 20349, 20352, 20354, 20356, 20357, + 20362, 20364, 20366, 20367, 20369, 20371, 20372, 20374, + 20386, 20398, 20410, 20426, 20439, 20450, 20451, 20451, + 20452, 20454, 20456, 20485, 20488, 20489, 20491, 20493, + 20497, 20501, 20504, 20509, 20514, 20518, 20522, 20525, + 20528, 20531, 20533, 20533, 20533, 20549, 20550, 20562, + 20578, 20594, 20605, 20621, 20633, 20639, 20641, 20676, + 20680, 20686, 20691, 20696, 20697, 20704, 20710, 20715, + 20716, 20723, 20729, 20736, 20743, 20749, 20751, 20759, + 20766, 20774, 20782, 20789, 20796, 20802, 20808, 20808, + 20811, 20812, 20816, 20817, 20821, 20825, 20827, 20832, + 20837, 20841, 20844, 20855, 20866, 20887, 20888, 20910, + 20912, 20918, 20943, 20957, 20973, 20999, 21025, 21050, + 21076, 21102, 21117, 21132, 21159, 21175, 21195, 21212, + 21240, 21271, 21298, 21326, 21354, 21390, 21427, 21456, + 21484, 21513, 21542, 21570, 21588, 21605, 21624, 21644, + 21662, 21682, 21709, 21735, 21761, 21786, 21811, 21827, + 21845, 21881, 21897, 21919, 21935, 21952, 21969, 21997, + 22026, 22055, 22083, 22102, 22128, 22157, 22174, 22202, + 22220, 22237, 22257, 22286, 22304, 22321, 22344, 22362, + 22379, 22399, 22417, 22441, 22459, 22477, 22496, 22515, + 22533, 22562, 22594, 22624, 22654, 22683, 22713, 22743, + 22775, 22804, 22833, 22863, 22893, 22921, 22949, 22980, + 23007, 23039, 23068, 23098, 23128, 23155, 23182, 23210, + 23239, 23268, 23296, 23329, 23358, 23392, 23421, 23450, + 23480, 23511, 23542, 23575, 23605, 23622, 23645, 23664, + 23682, 23702, 23723, 23740, 23757, 23778, 23796, 23817, + 23839, 23866, 23894, 23922, 23955, 23983, 24011, 24040, + 24056, 24073, 24099, 24125, 24151, 24180, 24198, 24227, + 24252, 24277, 24302, 24320, 24347, 24384, 24420, 24456, + 24492, 24528, 24565, 24602, 24639, 24668, 24682, 24702, + 24718, 24734, 24749, 24766, 24784, 24798, 24813, 24828, + 24854, 24881, 24908, 24937, 24964, 24991, 25019, 25047, + 25074, 25099, 25124, 25154, 25180, 25206, 25223, 25241, + 25267, 25294, 25321, 25326, 25331, 25342, 25365, 25366, + 25367, 25388, 25389, 25411, 25412, 25434, 25435, 25457, + 25459, 25460, 25476, 25487, 25489, 25490, 25491, 25493, + 25494, 25503, 25505, 25506, 25507, 25509, 25511, 25512, + 25513, 25515, 25516, 25525, 25529, 25532, 25535, 25538, + 25538, 25539, 25541, 25542, 25551, 25553, 25557, 25566, + 25568, 25574, 25583, 25584, 25586, 25587, 25589, 25592, + 25593, 25594, 25597, 25599, 25600, 25601, 25602 +}; + +static const char _redcloth_scan_trans_keys[] = { + 9, 32, 60, 47, 58, 95, 97, 98, + 99, 100, 101, 102, 105, 107, 109, 110, + 111, 112, 113, 115, 116, 117, 118, 65, + 90, 103, 122, 58, 95, 97, 98, 99, + 100, 101, 102, 105, 107, 109, 110, 111, + 112, 113, 115, 116, 117, 118, 65, 90, + 103, 122, 32, 62, 63, 95, 9, 13, + 45, 46, 48, 58, 65, 90, 97, 122, + 32, 62, 9, 13, 9, 10, 32, 63, + 95, 98, 99, 112, 45, 46, 48, 58, + 65, 90, 97, 122, 32, 62, 63, 95, + 98, 9, 13, 45, 46, 48, 58, 65, + 90, 97, 122, 32, 62, 63, 95, 114, + 9, 13, 45, 46, 48, 58, 65, 90, + 97, 122, 63, 95, 45, 46, 48, 58, + 65, 90, 97, 122, 32, 62, 63, 95, + 114, 9, 13, 45, 46, 48, 58, 65, + 90, 97, 122, 32, 62, 63, 95, 111, + 9, 13, 45, 46, 48, 58, 65, 90, + 97, 122, 32, 62, 63, 95, 110, 9, + 13, 45, 46, 48, 58, 65, 90, 97, + 122, 32, 62, 63, 95, 121, 9, 13, + 45, 46, 48, 58, 65, 90, 97, 122, + 32, 62, 63, 95, 109, 9, 13, 45, + 46, 48, 58, 65, 90, 97, 122, 32, + 62, 63, 95, 112, 9, 13, 45, 46, + 48, 58, 65, 90, 97, 122, 32, 62, + 63, 95, 108, 9, 13, 45, 46, 48, + 58, 65, 90, 97, 122, 32, 62, 63, + 95, 101, 9, 13, 45, 46, 48, 58, + 65, 90, 97, 122, 32, 62, 63, 95, + 116, 9, 13, 45, 46, 48, 58, 65, + 90, 97, 122, 63, 95, 97, 100, 105, + 114, 45, 46, 48, 58, 65, 90, 98, + 122, 32, 62, 63, 95, 115, 9, 13, + 45, 46, 48, 58, 65, 90, 97, 122, + 32, 62, 63, 95, 101, 9, 13, 45, + 46, 48, 58, 65, 90, 97, 122, 32, + 62, 63, 95, 102, 9, 13, 45, 46, + 48, 58, 65, 90, 97, 122, 32, 62, + 63, 95, 111, 9, 13, 45, 46, 48, + 58, 65, 90, 97, 122, 32, 62, 63, + 95, 110, 9, 13, 45, 46, 48, 58, + 65, 90, 97, 122, 32, 62, 63, 95, + 111, 9, 13, 45, 46, 48, 58, 65, + 90, 97, 122, 32, 62, 63, 95, 103, + 9, 13, 45, 46, 48, 58, 65, 90, + 97, 122, 32, 62, 63, 95, 105, 111, + 9, 13, 45, 46, 48, 58, 65, 90, + 97, 122, 32, 62, 63, 95, 116, 9, + 13, 45, 46, 48, 58, 65, 90, 97, + 122, 32, 62, 63, 95, 101, 9, 13, + 45, 46, 48, 58, 65, 90, 97, 122, + 32, 62, 63, 95, 100, 9, 13, 45, + 46, 48, 58, 65, 90, 97, 122, 32, + 62, 63, 95, 101, 102, 9, 13, 45, + 46, 48, 58, 65, 90, 97, 122, 32, + 62, 63, 95, 108, 9, 13, 45, 46, + 48, 58, 65, 90, 97, 122, 32, 62, + 63, 95, 110, 9, 13, 45, 46, 48, + 58, 65, 90, 97, 122, 63, 95, 102, + 109, 110, 45, 46, 48, 58, 65, 90, + 97, 122, 32, 62, 63, 95, 114, 9, + 13, 45, 46, 48, 58, 65, 90, 97, + 122, 32, 62, 63, 95, 97, 9, 13, + 45, 46, 48, 58, 65, 90, 98, 122, + 32, 62, 63, 95, 109, 9, 13, 45, + 46, 48, 58, 65, 90, 97, 122, 32, + 62, 63, 95, 115, 9, 13, 45, 46, + 48, 58, 65, 90, 97, 122, 32, 62, + 63, 95, 98, 9, 13, 45, 46, 48, + 58, 65, 90, 97, 122, 32, 62, 63, + 95, 100, 9, 13, 45, 46, 48, 58, + 65, 90, 97, 122, 32, 62, 63, 95, + 97, 9, 13, 45, 46, 48, 58, 65, + 90, 98, 122, 32, 62, 63, 95, 112, + 9, 13, 45, 46, 48, 58, 65, 90, + 97, 122, 32, 62, 63, 95, 111, 9, + 13, 45, 46, 48, 58, 65, 90, 97, + 122, 32, 62, 63, 95, 116, 9, 13, + 45, 46, 48, 58, 65, 90, 97, 122, + 32, 62, 63, 95, 101, 9, 13, 45, + 46, 48, 58, 65, 90, 97, 122, 32, + 62, 63, 95, 120, 9, 13, 45, 46, + 48, 58, 65, 90, 97, 122, 32, 62, + 63, 95, 116, 9, 13, 45, 46, 48, + 58, 65, 90, 97, 122, 32, 62, 63, + 95, 105, 9, 13, 45, 46, 48, 58, + 65, 90, 97, 122, 32, 62, 63, 95, + 108, 9, 13, 45, 46, 48, 58, 65, + 90, 97, 122, 32, 62, 63, 95, 98, + 9, 13, 45, 46, 48, 58, 65, 90, + 97, 122, 32, 62, 63, 95, 106, 9, + 13, 45, 46, 48, 58, 65, 90, 97, + 122, 32, 62, 63, 95, 101, 9, 13, + 45, 46, 48, 58, 65, 90, 97, 122, + 32, 62, 63, 95, 99, 9, 13, 45, + 46, 48, 58, 65, 90, 97, 122, 32, + 62, 63, 95, 97, 114, 9, 13, 45, + 46, 48, 58, 65, 90, 98, 122, 32, + 62, 63, 95, 114, 9, 13, 45, 46, + 48, 58, 65, 90, 97, 122, 32, 62, + 63, 95, 97, 9, 13, 45, 46, 48, + 58, 65, 90, 98, 122, 63, 95, 97, + 99, 109, 112, 116, 117, 45, 46, 48, + 58, 65, 90, 98, 122, 32, 62, 63, + 95, 109, 9, 13, 45, 46, 48, 58, + 65, 90, 97, 122, 32, 62, 63, 95, + 114, 9, 13, 45, 46, 48, 58, 65, + 90, 97, 122, 32, 62, 63, 95, 105, + 9, 13, 45, 46, 48, 58, 65, 90, + 97, 122, 32, 62, 63, 95, 112, 9, + 13, 45, 46, 48, 58, 65, 90, 97, + 122, 32, 62, 63, 95, 97, 9, 13, + 45, 46, 48, 58, 65, 90, 98, 122, + 32, 62, 63, 95, 108, 9, 13, 45, + 46, 48, 58, 65, 90, 97, 122, 32, + 62, 63, 95, 97, 9, 13, 45, 46, + 48, 58, 65, 90, 98, 122, 32, 62, + 63, 95, 114, 9, 13, 45, 46, 48, + 58, 65, 90, 97, 122, 32, 62, 63, + 95, 105, 111, 9, 13, 45, 46, 48, + 58, 65, 90, 97, 122, 32, 62, 63, + 95, 107, 9, 13, 45, 46, 48, 58, + 65, 90, 97, 122, 32, 62, 63, 95, + 110, 9, 13, 45, 46, 48, 58, 65, + 90, 97, 122, 32, 62, 63, 95, 98, + 112, 9, 13, 45, 46, 48, 58, 65, + 90, 97, 122, 32, 62, 63, 95, 97, + 9, 13, 45, 46, 48, 58, 65, 90, + 98, 122, 32, 47, 62, 63, 95, 9, + 13, 45, 58, 65, 90, 97, 122, 32, + 47, 62, 63, 95, 9, 13, 45, 58, + 65, 90, 97, 122, 32, 47, 61, 62, + 63, 95, 9, 13, 45, 58, 65, 90, + 97, 122, 62, 13, 32, 34, 39, 60, + 62, 9, 10, 11, 12, 13, 32, 60, + 62, 9, 10, 11, 12, 13, 32, 60, + 62, 63, 95, 9, 10, 11, 12, 45, + 46, 48, 58, 65, 90, 97, 122, 13, + 32, 60, 61, 62, 63, 95, 9, 10, + 11, 12, 45, 46, 48, 58, 65, 90, + 97, 122, 13, 32, 34, 39, 60, 62, + 9, 10, 11, 12, 13, 32, 34, 39, + 60, 62, 63, 95, 9, 10, 11, 12, + 45, 46, 48, 58, 65, 90, 97, 122, + 13, 32, 34, 39, 60, 62, 63, 95, + 9, 10, 11, 12, 45, 46, 48, 58, + 65, 90, 97, 122, 13, 32, 34, 60, + 62, 9, 10, 11, 12, 32, 34, 47, + 62, 63, 95, 9, 13, 45, 58, 65, + 90, 97, 122, 34, 32, 34, 47, 61, + 62, 63, 95, 9, 13, 45, 58, 65, + 90, 97, 122, 34, 62, 9, 10, 32, + 34, 13, 32, 34, 39, 60, 62, 9, + 10, 11, 12, 13, 32, 34, 39, 60, + 62, 9, 10, 11, 12, 13, 32, 34, + 39, 60, 62, 63, 95, 9, 10, 11, + 12, 45, 46, 48, 58, 65, 90, 97, + 122, 13, 32, 34, 39, 60, 62, 63, + 95, 9, 10, 11, 12, 45, 46, 48, + 58, 65, 90, 97, 122, 13, 32, 34, + 60, 62, 63, 95, 9, 10, 11, 12, + 45, 46, 48, 58, 65, 90, 97, 122, + 13, 32, 34, 60, 61, 62, 63, 95, + 9, 10, 11, 12, 45, 46, 48, 58, + 65, 90, 97, 122, 13, 32, 34, 39, + 60, 62, 9, 10, 11, 12, 13, 32, + 34, 39, 60, 62, 9, 10, 11, 12, + 32, 34, 39, 47, 62, 63, 95, 9, + 13, 45, 58, 65, 90, 97, 122, 34, + 39, 32, 39, 47, 62, 63, 95, 9, + 13, 45, 58, 65, 90, 97, 122, 39, + 32, 39, 47, 61, 62, 63, 95, 9, + 13, 45, 58, 65, 90, 97, 122, 39, + 62, 9, 10, 32, 39, 13, 32, 34, + 39, 60, 62, 9, 10, 11, 12, 13, + 32, 39, 60, 62, 9, 10, 11, 12, + 13, 32, 39, 60, 62, 63, 95, 9, + 10, 11, 12, 45, 46, 48, 58, 65, + 90, 97, 122, 13, 32, 39, 60, 61, + 62, 63, 95, 9, 10, 11, 12, 45, + 46, 48, 58, 65, 90, 97, 122, 13, + 32, 34, 39, 60, 62, 9, 10, 11, + 12, 13, 32, 34, 39, 60, 62, 63, + 95, 9, 10, 11, 12, 45, 46, 48, + 58, 65, 90, 97, 122, 13, 32, 34, + 39, 60, 62, 63, 95, 9, 10, 11, + 12, 45, 46, 48, 58, 65, 90, 97, + 122, 13, 32, 34, 39, 60, 62, 9, + 10, 11, 12, 32, 34, 39, 47, 61, + 62, 63, 95, 9, 13, 45, 58, 65, + 90, 97, 122, 34, 39, 62, 9, 10, + 32, 34, 39, 13, 32, 34, 39, 60, + 62, 9, 10, 11, 12, 13, 32, 34, + 39, 60, 62, 9, 10, 11, 12, 13, + 32, 34, 39, 60, 62, 63, 95, 9, + 10, 11, 12, 45, 46, 48, 58, 65, + 90, 97, 122, 13, 32, 34, 39, 60, + 62, 63, 95, 9, 10, 11, 12, 45, + 46, 48, 58, 65, 90, 97, 122, 13, + 32, 34, 39, 60, 62, 63, 95, 9, + 10, 11, 12, 45, 46, 48, 58, 65, + 90, 97, 122, 13, 32, 34, 39, 60, + 61, 62, 63, 95, 9, 10, 11, 12, + 45, 46, 48, 58, 65, 90, 97, 122, + 13, 32, 34, 39, 60, 62, 9, 10, + 11, 12, 13, 32, 34, 39, 60, 62, + 9, 10, 11, 12, 63, 95, 98, 99, + 112, 45, 46, 48, 58, 65, 90, 97, + 122, 32, 47, 62, 63, 95, 98, 9, + 13, 45, 58, 65, 90, 97, 122, 32, + 47, 62, 63, 95, 114, 9, 13, 45, + 58, 65, 90, 97, 122, 63, 95, 45, + 46, 48, 58, 65, 90, 97, 122, 32, + 47, 62, 63, 95, 114, 9, 13, 45, + 58, 65, 90, 97, 122, 32, 47, 62, + 63, 95, 111, 9, 13, 45, 58, 65, + 90, 97, 122, 32, 47, 62, 63, 95, + 110, 9, 13, 45, 58, 65, 90, 97, + 122, 32, 47, 62, 63, 95, 121, 9, + 13, 45, 58, 65, 90, 97, 122, 32, + 47, 62, 63, 95, 109, 9, 13, 45, + 58, 65, 90, 97, 122, 32, 47, 62, + 63, 95, 112, 9, 13, 45, 58, 65, + 90, 97, 122, 32, 47, 62, 63, 95, + 108, 9, 13, 45, 58, 65, 90, 97, + 122, 32, 47, 62, 63, 95, 101, 9, + 13, 45, 58, 65, 90, 97, 122, 32, + 47, 62, 63, 95, 116, 9, 13, 45, + 58, 65, 90, 97, 122, 63, 95, 97, + 100, 105, 114, 45, 46, 48, 58, 65, + 90, 98, 122, 32, 47, 62, 63, 95, + 115, 9, 13, 45, 58, 65, 90, 97, + 122, 32, 47, 62, 63, 95, 101, 9, + 13, 45, 58, 65, 90, 97, 122, 32, + 47, 62, 63, 95, 102, 9, 13, 45, + 58, 65, 90, 97, 122, 32, 47, 62, + 63, 95, 111, 9, 13, 45, 58, 65, + 90, 97, 122, 32, 47, 62, 63, 95, + 110, 9, 13, 45, 58, 65, 90, 97, + 122, 32, 47, 62, 63, 95, 111, 9, + 13, 45, 58, 65, 90, 97, 122, 32, + 47, 62, 63, 95, 103, 9, 13, 45, + 58, 65, 90, 97, 122, 32, 47, 62, + 63, 95, 105, 111, 9, 13, 45, 58, + 65, 90, 97, 122, 32, 47, 62, 63, + 95, 116, 9, 13, 45, 58, 65, 90, + 97, 122, 32, 47, 62, 63, 95, 101, + 9, 13, 45, 58, 65, 90, 97, 122, + 32, 47, 62, 63, 95, 100, 9, 13, + 45, 58, 65, 90, 97, 122, 32, 47, + 62, 63, 95, 101, 102, 9, 13, 45, + 58, 65, 90, 97, 122, 32, 47, 62, + 63, 95, 108, 9, 13, 45, 58, 65, + 90, 97, 122, 32, 47, 62, 63, 95, + 110, 9, 13, 45, 58, 65, 90, 97, + 122, 63, 95, 102, 109, 110, 45, 46, + 48, 58, 65, 90, 97, 122, 32, 47, + 62, 63, 95, 114, 9, 13, 45, 58, + 65, 90, 97, 122, 32, 47, 62, 63, + 95, 97, 9, 13, 45, 58, 65, 90, + 98, 122, 32, 47, 62, 63, 95, 109, + 9, 13, 45, 58, 65, 90, 97, 122, + 32, 47, 62, 63, 95, 115, 9, 13, + 45, 58, 65, 90, 97, 122, 32, 47, + 62, 63, 95, 98, 9, 13, 45, 58, + 65, 90, 97, 122, 32, 47, 62, 63, + 95, 100, 9, 13, 45, 58, 65, 90, + 97, 122, 32, 47, 62, 63, 95, 97, + 9, 13, 45, 58, 65, 90, 98, 122, + 32, 47, 62, 63, 95, 112, 9, 13, + 45, 58, 65, 90, 97, 122, 32, 47, + 62, 63, 95, 111, 9, 13, 45, 58, + 65, 90, 97, 122, 32, 47, 62, 63, + 95, 116, 9, 13, 45, 58, 65, 90, + 97, 122, 32, 47, 62, 63, 95, 101, + 9, 13, 45, 58, 65, 90, 97, 122, + 32, 47, 62, 63, 95, 120, 9, 13, + 45, 58, 65, 90, 97, 122, 32, 47, + 62, 63, 95, 116, 9, 13, 45, 58, + 65, 90, 97, 122, 32, 47, 62, 63, + 95, 105, 9, 13, 45, 58, 65, 90, + 97, 122, 32, 47, 62, 63, 95, 108, + 9, 13, 45, 58, 65, 90, 97, 122, + 32, 47, 62, 63, 95, 98, 9, 13, + 45, 58, 65, 90, 97, 122, 32, 47, + 62, 63, 95, 106, 9, 13, 45, 58, + 65, 90, 97, 122, 32, 47, 62, 63, + 95, 101, 9, 13, 45, 58, 65, 90, + 97, 122, 32, 47, 62, 63, 95, 99, + 9, 13, 45, 58, 65, 90, 97, 122, + 32, 47, 62, 63, 95, 97, 114, 9, + 13, 45, 58, 65, 90, 98, 122, 32, + 47, 62, 63, 95, 114, 9, 13, 45, + 58, 65, 90, 97, 122, 32, 47, 62, + 63, 95, 97, 9, 13, 45, 58, 65, + 90, 98, 122, 63, 95, 97, 99, 109, + 112, 116, 117, 45, 46, 48, 58, 65, + 90, 98, 122, 32, 47, 62, 63, 95, + 109, 9, 13, 45, 58, 65, 90, 97, + 122, 32, 47, 62, 63, 95, 114, 9, + 13, 45, 58, 65, 90, 97, 122, 32, + 47, 62, 63, 95, 105, 9, 13, 45, + 58, 65, 90, 97, 122, 32, 47, 62, + 63, 95, 112, 9, 13, 45, 58, 65, + 90, 97, 122, 32, 47, 62, 63, 95, + 97, 9, 13, 45, 58, 65, 90, 98, + 122, 32, 47, 62, 63, 95, 108, 9, + 13, 45, 58, 65, 90, 97, 122, 32, + 47, 62, 63, 95, 97, 9, 13, 45, + 58, 65, 90, 98, 122, 32, 47, 62, + 63, 95, 114, 9, 13, 45, 58, 65, + 90, 97, 122, 32, 47, 62, 63, 95, + 105, 111, 9, 13, 45, 58, 65, 90, + 97, 122, 32, 47, 62, 63, 95, 107, + 9, 13, 45, 58, 65, 90, 97, 122, + 32, 47, 62, 63, 95, 110, 9, 13, + 45, 58, 65, 90, 97, 122, 32, 47, + 62, 63, 95, 98, 112, 9, 13, 45, + 58, 65, 90, 97, 122, 32, 47, 62, + 63, 95, 97, 9, 13, 45, 58, 65, + 90, 98, 122, 32, 35, 40, 41, 42, + 45, 60, 61, 62, 91, 94, 95, 123, + 126, 48, 57, 32, 35, 40, 41, 45, + 60, 61, 62, 91, 94, 123, 126, 35, + 41, 41, 41, 32, 40, 91, 123, 35, + 41, 93, 93, 125, 125, 32, 35, 40, + 41, 45, 60, 61, 62, 91, 94, 123, + 126, 32, 40, 41, 45, 60, 61, 62, + 91, 94, 123, 126, 32, 40, 41, 45, + 60, 61, 62, 91, 94, 123, 126, 32, + 40, 41, 45, 60, 61, 62, 91, 94, + 123, 126, 32, 40, 41, 45, 60, 61, + 62, 91, 94, 123, 126, 32, 40, 41, + 45, 60, 61, 62, 91, 94, 123, 126, + 32, 40, 41, 45, 60, 61, 62, 91, + 94, 123, 126, 32, 40, 41, 45, 60, + 61, 62, 91, 94, 123, 126, 32, 40, + 41, 45, 60, 61, 62, 91, 94, 123, + 126, 32, 35, 40, 41, 45, 60, 61, + 62, 91, 94, 123, 126, 32, 35, 40, + 41, 45, 60, 61, 62, 91, 94, 123, + 126, 32, 35, 40, 41, 45, 60, 61, + 62, 91, 94, 123, 126, 32, 35, 40, + 41, 45, 60, 61, 62, 91, 94, 123, + 126, 35, 41, 93, 35, 41, 93, 41, + 93, 41, 93, 32, 40, 91, 93, 123, + 35, 41, 93, 32, 35, 40, 41, 91, + 123, 35, 41, 35, 41, 125, 35, 41, + 125, 41, 125, 41, 125, 32, 40, 91, + 123, 125, 35, 41, 125, 93, 125, 93, + 125, 125, 32, 40, 41, 91, 123, 35, + 41, 35, 41, 41, 41, 93, 41, 125, + 93, 93, 125, 32, 35, 40, 41, 45, + 60, 61, 62, 91, 94, 123, 126, 32, + 35, 40, 41, 45, 60, 61, 62, 91, + 94, 123, 126, 32, 35, 40, 41, 45, + 60, 61, 62, 91, 94, 123, 126, 32, + 35, 40, 41, 42, 45, 60, 61, 62, + 91, 94, 95, 123, 126, 48, 57, 32, + 40, 41, 45, 60, 61, 62, 91, 94, + 123, 126, 48, 57, 32, 40, 41, 45, + 60, 61, 62, 91, 94, 123, 126, 35, + 41, 41, 41, 40, 46, 91, 123, 35, + 41, 32, 124, 0, 10, 40, 41, 45, + 46, 47, 60, 61, 62, 91, 92, 94, + 95, 123, 126, 0, 10, 124, 10, 124, + 40, 41, 45, 46, 60, 61, 62, 91, + 94, 123, 124, 126, 35, 40, 41, 45, + 46, 60, 61, 62, 91, 94, 123, 126, + 35, 41, 41, 41, 40, 46, 91, 123, + 35, 41, 32, 124, 0, 10, 40, 41, + 45, 46, 47, 60, 61, 62, 91, 92, + 94, 95, 123, 126, 0, 10, 124, 10, + 124, 0, 10, 35, 40, 41, 45, 46, + 60, 61, 62, 91, 94, 123, 124, 126, + 0, 10, 35, 41, 124, 35, 41, 41, + 41, 40, 46, 91, 123, 35, 41, 0, + 10, 32, 0, 10, 32, 124, 93, 93, + 125, 125, 10, 35, 41, 35, 41, 124, + 0, 10, 41, 124, 0, 10, 41, 124, + 10, 41, 41, 124, 0, 10, 40, 46, + 91, 123, 124, 0, 10, 35, 41, 124, + 0, 10, 93, 124, 0, 10, 93, 124, + 10, 93, 93, 124, 0, 10, 124, 125, + 0, 10, 124, 125, 10, 125, 124, 125, + 0, 10, 35, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 123, 124, 126, 0, + 10, 40, 41, 45, 46, 60, 61, 62, + 91, 94, 123, 124, 126, 0, 10, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 123, 124, 126, 0, 10, 40, 41, 45, + 46, 60, 61, 62, 91, 94, 123, 124, + 126, 0, 10, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 123, 124, 126, 0, + 10, 40, 41, 45, 46, 60, 61, 62, + 91, 94, 123, 124, 126, 0, 10, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 123, 124, 126, 0, 10, 40, 41, 45, + 46, 60, 61, 62, 91, 94, 123, 124, + 126, 0, 10, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 123, 124, 126, 0, + 10, 35, 40, 41, 45, 46, 60, 61, + 62, 91, 94, 123, 124, 126, 0, 10, + 35, 40, 41, 45, 46, 60, 61, 62, + 91, 94, 123, 124, 126, 0, 10, 35, + 40, 41, 45, 46, 60, 61, 62, 91, + 94, 123, 124, 126, 0, 10, 35, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 123, 124, 126, 0, 10, 35, 41, 93, + 124, 0, 10, 35, 41, 93, 124, 35, + 41, 93, 41, 93, 41, 93, 40, 46, + 91, 93, 123, 35, 41, 93, 35, 40, + 41, 46, 91, 123, 35, 41, 35, 41, + 93, 35, 41, 125, 35, 41, 125, 41, + 125, 41, 125, 40, 46, 91, 123, 125, + 35, 41, 125, 93, 125, 93, 125, 125, + 40, 41, 46, 91, 123, 35, 41, 35, + 41, 41, 41, 93, 41, 125, 93, 93, + 125, 10, 35, 41, 93, 35, 41, 93, + 124, 0, 10, 41, 93, 124, 0, 10, + 41, 93, 124, 10, 41, 93, 41, 93, + 124, 0, 10, 40, 46, 91, 93, 123, + 124, 0, 10, 35, 41, 93, 124, 0, + 10, 35, 40, 41, 46, 91, 123, 124, + 0, 10, 35, 41, 124, 0, 10, 35, + 41, 124, 125, 0, 10, 35, 41, 124, + 125, 10, 35, 41, 125, 35, 41, 124, + 125, 0, 10, 41, 124, 125, 0, 10, + 41, 124, 125, 10, 41, 125, 41, 124, + 125, 0, 10, 40, 46, 91, 123, 124, + 125, 0, 10, 35, 41, 124, 125, 0, + 10, 93, 124, 125, 0, 10, 93, 124, + 125, 10, 93, 125, 93, 124, 125, 0, + 10, 124, 125, 0, 10, 40, 41, 46, + 91, 123, 124, 0, 10, 35, 41, 124, + 0, 10, 35, 41, 124, 10, 35, 41, + 35, 41, 124, 0, 10, 41, 124, 0, + 10, 41, 93, 124, 0, 10, 41, 124, + 125, 0, 10, 93, 124, 0, 10, 93, + 124, 125, 0, 10, 35, 40, 41, 45, + 46, 60, 61, 62, 91, 94, 123, 124, + 126, 0, 10, 35, 40, 41, 45, 46, + 60, 61, 62, 91, 94, 123, 124, 126, + 0, 10, 35, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 123, 124, 126, 0, + 10, 124, 48, 57, 0, 10, 40, 41, + 45, 46, 47, 60, 61, 62, 91, 92, + 94, 123, 124, 126, 48, 57, 0, 10, + 124, 48, 57, 0, 10, 40, 41, 45, + 46, 47, 60, 61, 62, 91, 92, 94, + 123, 124, 126, 48, 57, 0, 10, 40, + 41, 45, 46, 47, 60, 61, 62, 91, + 92, 94, 123, 124, 126, 93, 93, 125, + 125, 35, 40, 41, 45, 46, 60, 61, + 62, 91, 94, 123, 126, 40, 41, 45, + 46, 60, 61, 62, 91, 94, 123, 126, + 40, 41, 45, 46, 60, 61, 62, 91, + 94, 123, 126, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 123, 126, 40, 41, + 45, 46, 60, 61, 62, 91, 94, 123, + 126, 40, 41, 45, 46, 60, 61, 62, + 91, 94, 123, 126, 40, 41, 45, 46, + 60, 61, 62, 91, 94, 123, 126, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 123, 126, 40, 41, 45, 46, 60, 61, + 62, 91, 94, 123, 126, 35, 40, 41, + 45, 46, 60, 61, 62, 91, 94, 123, + 126, 35, 40, 41, 45, 46, 60, 61, + 62, 91, 94, 123, 126, 35, 40, 41, + 45, 46, 60, 61, 62, 91, 94, 123, + 126, 35, 40, 41, 45, 46, 60, 61, + 62, 91, 94, 123, 126, 35, 41, 93, + 35, 41, 93, 41, 93, 41, 93, 40, + 46, 91, 93, 123, 35, 41, 93, 35, + 40, 41, 46, 91, 123, 35, 41, 35, + 41, 125, 35, 41, 125, 41, 125, 41, + 125, 40, 46, 91, 123, 125, 35, 41, + 125, 93, 125, 93, 125, 125, 40, 41, + 46, 91, 123, 35, 41, 35, 41, 41, + 41, 93, 41, 125, 93, 93, 125, 35, + 40, 41, 45, 46, 60, 61, 62, 91, + 94, 123, 126, 35, 40, 41, 45, 46, + 60, 61, 62, 91, 94, 123, 126, 35, + 40, 41, 45, 46, 60, 61, 62, 91, + 94, 123, 126, 0, 10, 35, 40, 41, + 45, 46, 60, 61, 62, 91, 94, 123, + 124, 126, 0, 10, 35, 41, 124, 35, + 41, 41, 41, 40, 46, 91, 123, 35, + 41, 0, 10, 32, 0, 10, 32, 124, + 93, 93, 125, 125, 10, 35, 41, 35, + 41, 124, 0, 10, 41, 124, 0, 10, + 41, 124, 10, 41, 41, 124, 0, 10, + 40, 46, 91, 123, 124, 0, 10, 35, + 41, 124, 0, 10, 93, 124, 0, 10, + 93, 124, 10, 93, 93, 124, 0, 10, + 124, 125, 0, 10, 124, 125, 10, 125, + 124, 125, 0, 10, 35, 40, 41, 45, + 46, 60, 61, 62, 91, 94, 123, 124, + 126, 0, 10, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 123, 124, 126, 0, + 10, 40, 41, 45, 46, 60, 61, 62, + 91, 94, 123, 124, 126, 0, 10, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 123, 124, 126, 0, 10, 40, 41, 45, + 46, 60, 61, 62, 91, 94, 123, 124, + 126, 0, 10, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 123, 124, 126, 0, + 10, 40, 41, 45, 46, 60, 61, 62, + 91, 94, 123, 124, 126, 0, 10, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 123, 124, 126, 0, 10, 40, 41, 45, + 46, 60, 61, 62, 91, 94, 123, 124, + 126, 0, 10, 35, 40, 41, 45, 46, + 60, 61, 62, 91, 94, 123, 124, 126, + 0, 10, 35, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 123, 124, 126, 0, + 10, 35, 40, 41, 45, 46, 60, 61, + 62, 91, 94, 123, 124, 126, 0, 10, + 35, 40, 41, 45, 46, 60, 61, 62, + 91, 94, 123, 124, 126, 0, 10, 35, + 41, 93, 124, 0, 10, 35, 41, 93, + 124, 35, 41, 93, 41, 93, 41, 93, + 40, 46, 91, 93, 123, 35, 41, 93, + 35, 40, 41, 46, 91, 123, 35, 41, + 35, 41, 93, 35, 41, 125, 35, 41, + 125, 41, 125, 41, 125, 40, 46, 91, + 123, 125, 35, 41, 125, 93, 125, 93, + 125, 125, 40, 41, 46, 91, 123, 35, + 41, 35, 41, 41, 41, 93, 41, 125, + 93, 93, 125, 10, 35, 41, 93, 35, + 41, 93, 124, 0, 10, 41, 93, 124, + 0, 10, 41, 93, 124, 10, 41, 93, + 41, 93, 124, 0, 10, 40, 46, 91, + 93, 123, 124, 0, 10, 35, 41, 93, + 124, 0, 10, 35, 40, 41, 46, 91, + 123, 124, 0, 10, 35, 41, 124, 0, + 10, 35, 41, 124, 125, 0, 10, 35, + 41, 124, 125, 10, 35, 41, 125, 35, + 41, 124, 125, 0, 10, 41, 124, 125, + 0, 10, 41, 124, 125, 10, 41, 125, + 41, 124, 125, 0, 10, 40, 46, 91, + 123, 124, 125, 0, 10, 35, 41, 124, + 125, 0, 10, 93, 124, 125, 0, 10, + 93, 124, 125, 10, 93, 125, 93, 124, + 125, 0, 10, 124, 125, 0, 10, 40, + 41, 46, 91, 123, 124, 0, 10, 35, + 41, 124, 0, 10, 35, 41, 124, 10, + 35, 41, 35, 41, 124, 0, 10, 41, + 124, 0, 10, 41, 93, 124, 0, 10, + 41, 124, 125, 0, 10, 93, 124, 0, + 10, 93, 124, 125, 0, 10, 35, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 123, 124, 126, 0, 10, 35, 40, 41, + 45, 46, 60, 61, 62, 91, 94, 123, + 124, 126, 0, 10, 35, 40, 41, 45, + 46, 60, 61, 62, 91, 94, 123, 124, + 126, 0, 10, 124, 48, 57, 0, 10, + 40, 41, 45, 46, 47, 60, 61, 62, + 91, 92, 94, 123, 124, 126, 48, 57, + 0, 10, 124, 48, 57, 0, 10, 40, + 41, 45, 46, 47, 60, 61, 62, 91, + 92, 94, 123, 124, 126, 48, 57, 0, + 10, 40, 41, 45, 46, 47, 60, 61, + 62, 91, 92, 94, 123, 124, 126, 93, + 93, 125, 125, 35, 40, 41, 45, 46, + 60, 61, 62, 91, 94, 123, 126, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 123, 126, 35, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 123, 126, 35, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 123, 126, 35, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 123, 126, 35, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 123, 126, 35, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 123, 126, 35, 41, + 93, 35, 41, 93, 41, 93, 41, 93, + 40, 46, 91, 93, 123, 35, 41, 93, + 35, 40, 41, 46, 91, 123, 35, 41, + 35, 41, 125, 35, 41, 125, 41, 125, + 41, 125, 40, 46, 91, 123, 125, 35, + 41, 125, 93, 125, 93, 125, 125, 40, + 41, 46, 91, 123, 35, 41, 35, 41, + 41, 41, 93, 41, 125, 93, 93, 125, + 35, 40, 41, 45, 46, 60, 61, 62, + 91, 94, 123, 126, 35, 40, 41, 45, + 46, 60, 61, 62, 91, 94, 123, 126, + 35, 40, 41, 45, 46, 60, 61, 62, + 91, 94, 123, 126, 40, 41, 45, 46, + 60, 61, 62, 91, 94, 123, 126, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 123, 126, 40, 41, 45, 46, 60, 61, + 62, 91, 94, 123, 126, 40, 41, 45, + 46, 60, 61, 62, 91, 94, 123, 126, + 40, 41, 45, 46, 60, 61, 62, 91, + 94, 123, 126, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 123, 126, 40, 41, + 45, 46, 60, 61, 62, 91, 94, 123, + 126, 0, 32, 9, 13, 0, 9, 10, + 58, 11, 13, 0, 9, 10, 32, 11, + 13, 0, 9, 32, 10, 13, 0, 9, + 10, 58, 61, 11, 13, 32, 47, 62, + 63, 95, 111, 9, 13, 45, 58, 65, + 90, 97, 122, 32, 47, 62, 63, 95, + 116, 9, 13, 45, 58, 65, 90, 97, + 122, 32, 47, 62, 63, 95, 101, 9, + 13, 45, 58, 65, 90, 97, 122, 32, + 47, 62, 63, 95, 120, 9, 13, 45, + 58, 65, 90, 97, 122, 32, 47, 62, + 63, 95, 116, 9, 13, 45, 58, 65, + 90, 97, 122, 32, 47, 62, 63, 95, + 105, 9, 13, 45, 58, 65, 90, 97, + 122, 32, 47, 62, 63, 95, 108, 9, + 13, 45, 58, 65, 90, 97, 122, 32, + 47, 62, 63, 95, 101, 9, 13, 45, + 58, 65, 90, 97, 122, 62, 63, 95, + 45, 46, 48, 58, 65, 90, 97, 122, + 32, 47, 62, 63, 95, 97, 114, 9, + 13, 45, 58, 65, 90, 98, 122, 32, + 47, 62, 63, 95, 101, 9, 13, 45, + 58, 65, 90, 97, 122, 62, 63, 95, + 45, 46, 48, 58, 65, 90, 97, 122, + 62, 32, 60, 9, 13, 99, 111, 100, + 101, 62, 32, 47, 62, 63, 95, 9, + 13, 45, 58, 65, 90, 97, 122, 32, + 47, 62, 63, 95, 9, 13, 45, 58, + 65, 90, 97, 122, 32, 47, 61, 62, + 63, 95, 9, 13, 45, 58, 65, 90, + 97, 122, 62, 9, 10, 32, 60, 11, + 13, 13, 32, 34, 39, 60, 62, 9, + 10, 11, 12, 13, 32, 60, 62, 9, + 10, 11, 12, 13, 32, 60, 62, 63, + 95, 9, 10, 11, 12, 45, 46, 48, + 58, 65, 90, 97, 122, 13, 32, 60, + 61, 62, 63, 95, 9, 10, 11, 12, + 45, 46, 48, 58, 65, 90, 97, 122, + 13, 32, 34, 39, 60, 62, 9, 10, + 11, 12, 13, 32, 34, 39, 60, 62, + 63, 95, 9, 10, 11, 12, 45, 46, + 48, 58, 65, 90, 97, 122, 13, 32, + 34, 39, 60, 62, 63, 95, 9, 10, + 11, 12, 45, 46, 48, 58, 65, 90, + 97, 122, 13, 32, 34, 60, 62, 9, + 10, 11, 12, 32, 34, 47, 62, 63, + 95, 9, 13, 45, 58, 65, 90, 97, + 122, 34, 62, 32, 34, 60, 9, 13, + 34, 99, 34, 111, 34, 100, 34, 101, + 34, 62, 32, 34, 47, 61, 62, 63, + 95, 9, 13, 45, 58, 65, 90, 97, + 122, 34, 62, 9, 10, 32, 34, 60, + 11, 13, 13, 32, 34, 39, 60, 62, + 9, 10, 11, 12, 13, 32, 34, 39, + 60, 62, 9, 10, 11, 12, 13, 32, + 34, 39, 60, 62, 63, 95, 9, 10, + 11, 12, 45, 46, 48, 58, 65, 90, + 97, 122, 13, 32, 34, 39, 60, 62, + 63, 95, 9, 10, 11, 12, 45, 46, + 48, 58, 65, 90, 97, 122, 13, 32, + 34, 60, 62, 63, 95, 9, 10, 11, + 12, 45, 46, 48, 58, 65, 90, 97, + 122, 13, 32, 34, 60, 61, 62, 63, + 95, 9, 10, 11, 12, 45, 46, 48, + 58, 65, 90, 97, 122, 13, 32, 34, + 39, 60, 62, 9, 10, 11, 12, 13, + 32, 34, 39, 60, 62, 9, 10, 11, + 12, 32, 34, 39, 47, 62, 63, 95, + 9, 13, 45, 58, 65, 90, 97, 122, + 34, 39, 62, 32, 39, 47, 62, 63, + 95, 9, 13, 45, 58, 65, 90, 97, + 122, 39, 62, 32, 39, 60, 9, 13, + 39, 99, 39, 111, 39, 100, 39, 101, + 39, 62, 32, 39, 47, 61, 62, 63, + 95, 9, 13, 45, 58, 65, 90, 97, + 122, 39, 62, 9, 10, 32, 39, 60, + 11, 13, 13, 32, 34, 39, 60, 62, + 9, 10, 11, 12, 13, 32, 39, 60, + 62, 9, 10, 11, 12, 13, 32, 39, + 60, 62, 63, 95, 9, 10, 11, 12, + 45, 46, 48, 58, 65, 90, 97, 122, + 13, 32, 39, 60, 61, 62, 63, 95, + 9, 10, 11, 12, 45, 46, 48, 58, + 65, 90, 97, 122, 13, 32, 34, 39, + 60, 62, 9, 10, 11, 12, 13, 32, + 34, 39, 60, 62, 63, 95, 9, 10, + 11, 12, 45, 46, 48, 58, 65, 90, + 97, 122, 13, 32, 34, 39, 60, 62, + 63, 95, 9, 10, 11, 12, 45, 46, + 48, 58, 65, 90, 97, 122, 13, 32, + 34, 39, 60, 62, 9, 10, 11, 12, + 32, 34, 39, 60, 9, 13, 34, 39, + 99, 34, 39, 111, 34, 39, 100, 34, + 39, 101, 34, 39, 62, 32, 34, 39, + 47, 61, 62, 63, 95, 9, 13, 45, + 58, 65, 90, 97, 122, 34, 39, 62, + 9, 10, 32, 34, 39, 60, 11, 13, + 13, 32, 34, 39, 60, 62, 9, 10, + 11, 12, 13, 32, 34, 39, 60, 62, + 9, 10, 11, 12, 13, 32, 34, 39, + 60, 62, 63, 95, 9, 10, 11, 12, + 45, 46, 48, 58, 65, 90, 97, 122, + 13, 32, 34, 39, 60, 62, 63, 95, + 9, 10, 11, 12, 45, 46, 48, 58, + 65, 90, 97, 122, 13, 32, 34, 39, + 60, 62, 63, 95, 9, 10, 11, 12, + 45, 46, 48, 58, 65, 90, 97, 122, + 13, 32, 34, 39, 60, 61, 62, 63, + 95, 9, 10, 11, 12, 45, 46, 48, + 58, 65, 90, 97, 122, 13, 32, 34, + 39, 60, 62, 9, 10, 11, 12, 13, + 32, 34, 39, 60, 62, 9, 10, 11, + 12, 63, 95, 97, 99, 109, 112, 116, + 117, 45, 46, 48, 58, 65, 90, 98, + 122, 32, 47, 62, 63, 95, 114, 9, + 13, 45, 58, 65, 90, 97, 122, 32, + 47, 62, 63, 95, 105, 9, 13, 45, + 58, 65, 90, 97, 122, 32, 47, 62, + 63, 95, 112, 9, 13, 45, 58, 65, + 90, 97, 122, 32, 47, 62, 63, 95, + 116, 9, 13, 45, 58, 65, 90, 97, + 122, 62, 63, 95, 45, 46, 48, 58, + 65, 90, 97, 122, 62, 32, 47, 62, + 63, 95, 9, 13, 45, 58, 65, 90, + 97, 122, 32, 47, 62, 63, 95, 9, + 13, 45, 58, 65, 90, 97, 122, 32, + 47, 61, 62, 63, 95, 9, 13, 45, + 58, 65, 90, 97, 122, 62, 13, 32, + 34, 39, 60, 62, 9, 10, 11, 12, + 13, 32, 60, 62, 9, 10, 11, 12, + 13, 32, 60, 62, 63, 95, 9, 10, + 11, 12, 45, 46, 48, 58, 65, 90, + 97, 122, 13, 32, 60, 61, 62, 63, + 95, 9, 10, 11, 12, 45, 46, 48, + 58, 65, 90, 97, 122, 13, 32, 34, + 39, 60, 62, 9, 10, 11, 12, 13, + 32, 34, 39, 60, 62, 63, 95, 9, + 10, 11, 12, 45, 46, 48, 58, 65, + 90, 97, 122, 13, 32, 34, 39, 60, + 62, 63, 95, 9, 10, 11, 12, 45, + 46, 48, 58, 65, 90, 97, 122, 13, + 32, 34, 60, 62, 9, 10, 11, 12, + 32, 34, 47, 62, 63, 95, 9, 13, + 45, 58, 65, 90, 97, 122, 34, 62, + 32, 34, 47, 61, 62, 63, 95, 9, + 13, 45, 58, 65, 90, 97, 122, 34, + 62, 13, 32, 34, 39, 60, 62, 9, + 10, 11, 12, 13, 32, 34, 39, 60, + 62, 9, 10, 11, 12, 13, 32, 34, + 39, 60, 62, 63, 95, 9, 10, 11, + 12, 45, 46, 48, 58, 65, 90, 97, + 122, 13, 32, 34, 39, 60, 62, 63, + 95, 9, 10, 11, 12, 45, 46, 48, + 58, 65, 90, 97, 122, 13, 32, 34, + 60, 62, 63, 95, 9, 10, 11, 12, + 45, 46, 48, 58, 65, 90, 97, 122, + 13, 32, 34, 60, 61, 62, 63, 95, + 9, 10, 11, 12, 45, 46, 48, 58, + 65, 90, 97, 122, 13, 32, 34, 39, + 60, 62, 9, 10, 11, 12, 13, 32, + 34, 39, 60, 62, 9, 10, 11, 12, + 32, 34, 39, 47, 62, 63, 95, 9, + 13, 45, 58, 65, 90, 97, 122, 34, + 39, 62, 32, 39, 47, 62, 63, 95, + 9, 13, 45, 58, 65, 90, 97, 122, + 39, 62, 32, 39, 47, 61, 62, 63, + 95, 9, 13, 45, 58, 65, 90, 97, + 122, 39, 62, 13, 32, 34, 39, 60, + 62, 9, 10, 11, 12, 13, 32, 39, + 60, 62, 9, 10, 11, 12, 13, 32, + 39, 60, 62, 63, 95, 9, 10, 11, + 12, 45, 46, 48, 58, 65, 90, 97, + 122, 13, 32, 39, 60, 61, 62, 63, + 95, 9, 10, 11, 12, 45, 46, 48, + 58, 65, 90, 97, 122, 13, 32, 34, + 39, 60, 62, 9, 10, 11, 12, 13, + 32, 34, 39, 60, 62, 63, 95, 9, + 10, 11, 12, 45, 46, 48, 58, 65, + 90, 97, 122, 13, 32, 34, 39, 60, + 62, 63, 95, 9, 10, 11, 12, 45, + 46, 48, 58, 65, 90, 97, 122, 13, + 32, 34, 39, 60, 62, 9, 10, 11, + 12, 32, 34, 39, 47, 61, 62, 63, + 95, 9, 13, 45, 58, 65, 90, 97, + 122, 34, 39, 62, 13, 32, 34, 39, + 60, 62, 9, 10, 11, 12, 13, 32, + 34, 39, 60, 62, 9, 10, 11, 12, + 13, 32, 34, 39, 60, 62, 63, 95, + 9, 10, 11, 12, 45, 46, 48, 58, + 65, 90, 97, 122, 13, 32, 34, 39, + 60, 62, 63, 95, 9, 10, 11, 12, + 45, 46, 48, 58, 65, 90, 97, 122, + 13, 32, 34, 39, 60, 62, 63, 95, + 9, 10, 11, 12, 45, 46, 48, 58, + 65, 90, 97, 122, 13, 32, 34, 39, + 60, 61, 62, 63, 95, 9, 10, 11, + 12, 45, 46, 48, 58, 65, 90, 97, + 122, 13, 32, 34, 39, 60, 62, 9, + 10, 11, 12, 13, 32, 34, 39, 60, + 62, 9, 10, 11, 12, 35, 40, 41, + 45, 46, 60, 61, 62, 91, 94, 123, + 126, 35, 41, 41, 41, 40, 46, 91, + 123, 35, 41, 32, 46, 32, 93, 93, + 125, 125, 35, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 123, 126, 40, 41, + 45, 46, 60, 61, 62, 91, 94, 123, + 126, 40, 41, 45, 46, 60, 61, 62, + 91, 94, 123, 126, 40, 41, 45, 46, + 60, 61, 62, 91, 94, 123, 126, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 123, 126, 40, 41, 45, 46, 60, 61, + 62, 91, 94, 123, 126, 40, 41, 45, + 46, 60, 61, 62, 91, 94, 123, 126, + 40, 41, 45, 46, 60, 61, 62, 91, + 94, 123, 126, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 123, 126, 35, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 123, 126, 35, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 123, 126, 35, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 123, 126, 35, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 123, 126, 35, 41, + 93, 35, 41, 93, 41, 93, 41, 93, + 40, 46, 91, 93, 123, 35, 41, 93, + 35, 40, 41, 46, 91, 123, 35, 41, + 35, 41, 125, 35, 41, 125, 41, 125, + 41, 125, 40, 46, 91, 123, 125, 35, + 41, 125, 93, 125, 93, 125, 125, 40, + 41, 46, 91, 123, 35, 41, 35, 41, + 41, 41, 93, 41, 125, 93, 93, 125, + 35, 40, 41, 45, 46, 60, 61, 62, + 91, 94, 123, 126, 35, 40, 41, 45, + 46, 60, 61, 62, 91, 94, 123, 126, + 35, 40, 41, 45, 46, 60, 61, 62, + 91, 94, 123, 126, 40, 41, 45, 46, + 60, 61, 62, 91, 94, 98, 102, 110, + 112, 123, 126, 48, 57, 65, 90, 97, + 122, 40, 41, 45, 46, 60, 61, 62, + 91, 94, 97, 98, 102, 110, 112, 123, + 126, 48, 57, 65, 90, 100, 111, 114, + 122, 40, 41, 45, 46, 60, 61, 62, + 91, 94, 98, 102, 110, 112, 123, 126, + 48, 57, 65, 90, 97, 122, 40, 41, + 45, 46, 60, 61, 62, 91, 94, 98, + 102, 110, 111, 112, 123, 126, 65, 90, + 97, 122, 40, 41, 45, 46, 60, 61, + 62, 91, 94, 98, 102, 110, 111, 112, + 123, 126, 48, 57, 65, 90, 97, 122, + 40, 41, 45, 46, 60, 61, 62, 91, + 94, 98, 102, 110, 112, 116, 123, 126, + 48, 57, 65, 90, 97, 122, 40, 41, + 45, 46, 60, 61, 62, 91, 94, 98, + 102, 110, 112, 114, 123, 126, 48, 57, + 65, 90, 97, 122, 40, 41, 45, 46, + 60, 61, 62, 91, 94, 98, 102, 110, + 112, 123, 126, 48, 57, 65, 90, 97, + 100, 103, 122, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 98, 101, 102, 110, + 112, 123, 126, 48, 57, 65, 90, 97, + 122, 40, 41, 45, 46, 60, 61, 62, + 91, 94, 98, 102, 110, 112, 120, 123, + 126, 48, 57, 65, 90, 97, 122, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 98, 102, 110, 112, 116, 123, 126, 48, + 57, 65, 90, 97, 122, 40, 41, 45, + 46, 60, 61, 62, 91, 94, 98, 102, + 105, 110, 112, 123, 126, 48, 57, 65, + 90, 97, 122, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 98, 102, 108, 110, + 112, 123, 126, 48, 57, 65, 90, 97, + 122, 40, 41, 45, 46, 60, 61, 62, + 91, 94, 98, 100, 102, 110, 112, 123, + 126, 48, 57, 65, 90, 97, 122, 40, + 41, 45, 46, 60, 61, 62, 67, 91, + 94, 98, 102, 110, 112, 123, 126, 48, + 57, 65, 90, 97, 122, 40, 41, 45, + 46, 60, 61, 62, 91, 94, 98, 102, + 108, 110, 112, 123, 126, 48, 57, 65, + 90, 97, 122, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 98, 102, 110, 111, + 112, 123, 126, 48, 57, 65, 90, 97, + 122, 40, 41, 45, 46, 60, 61, 62, + 91, 94, 98, 102, 110, 112, 116, 123, + 126, 48, 57, 65, 90, 97, 122, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 98, 102, 104, 110, 112, 123, 126, 48, + 57, 65, 90, 97, 122, 32, 40, 41, + 45, 46, 58, 60, 61, 62, 91, 94, + 98, 102, 110, 112, 123, 126, 48, 57, + 65, 90, 97, 122, 86, 118, 69, 101, + 82, 114, 83, 115, 73, 105, 79, 111, + 78, 110, 32, 58, 82, 101, 100, 67, + 108, 111, 116, 104, 58, 58, 86, 69, + 82, 83, 73, 79, 78, 0, 10, 0, + 10, 32, 58, 86, 118, 69, 101, 82, + 114, 83, 115, 73, 105, 79, 111, 78, + 110, 0, 10, 32, 58, 0, 32, 93, + 9, 13, 0, 32, 34, 35, 36, 37, + 40, 43, 46, 47, 91, 93, 95, 123, + 127, 1, 8, 9, 13, 14, 31, 45, + 57, 59, 60, 62, 63, 65, 90, 97, + 122, 0, 32, 34, 36, 37, 47, 93, + 95, 127, 1, 8, 9, 13, 14, 31, + 45, 57, 59, 60, 62, 63, 65, 90, + 97, 122, 0, 32, 93, 9, 13, 0, + 32, 34, 35, 36, 37, 43, 47, 93, + 95, 127, 1, 8, 9, 13, 14, 31, + 45, 57, 59, 60, 62, 63, 65, 90, + 97, 122, 0, 32, 93, 9, 13, 48, + 57, 65, 70, 97, 102, 0, 32, 93, + 9, 13, 48, 57, 65, 70, 97, 102, + 0, 32, 93, 9, 13, 48, 57, 65, + 70, 97, 102, 0, 32, 93, 9, 13, + 48, 57, 65, 70, 97, 102, 0, 32, + 93, 9, 13, 48, 57, 65, 70, 97, + 102, 0, 32, 93, 9, 13, 48, 57, + 65, 70, 97, 102, 0, 32, 34, 36, + 37, 43, 47, 93, 95, 127, 1, 8, + 9, 13, 14, 31, 45, 58, 59, 60, + 62, 63, 65, 90, 97, 122, 0, 32, + 34, 35, 36, 37, 41, 47, 93, 95, + 127, 1, 8, 9, 13, 14, 31, 45, + 57, 59, 60, 62, 63, 65, 90, 97, + 122, 0, 32, 34, 35, 36, 37, 41, + 47, 93, 95, 127, 1, 8, 9, 13, + 14, 31, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 0, 32, 35, 41, + 93, 9, 13, 0, 32, 41, 93, 9, + 13, 0, 32, 41, 93, 9, 13, 0, + 32, 40, 46, 91, 93, 123, 9, 13, + 0, 32, 35, 41, 93, 9, 13, 0, + 32, 34, 35, 36, 37, 41, 43, 47, + 93, 95, 127, 1, 8, 9, 13, 14, + 31, 45, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 0, 32, 41, 93, 9, + 13, 48, 57, 65, 70, 97, 102, 0, + 32, 41, 93, 9, 13, 48, 57, 65, + 70, 97, 102, 0, 32, 34, 35, 36, + 37, 41, 43, 47, 93, 95, 127, 1, + 8, 9, 13, 14, 31, 45, 57, 59, + 60, 62, 63, 65, 90, 97, 122, 0, + 32, 34, 36, 37, 41, 47, 93, 95, + 127, 1, 8, 9, 13, 14, 31, 45, + 57, 59, 60, 62, 63, 65, 90, 97, + 122, 0, 32, 41, 93, 9, 13, 48, + 57, 65, 70, 97, 102, 0, 32, 41, + 93, 9, 13, 48, 57, 65, 70, 97, + 102, 0, 32, 34, 36, 37, 40, 46, + 47, 91, 93, 95, 123, 127, 1, 8, + 9, 13, 14, 31, 45, 57, 59, 60, + 62, 63, 65, 90, 97, 122, 0, 10, + 32, 93, 124, 9, 13, 0, 10, 32, + 34, 35, 36, 37, 43, 47, 93, 95, + 124, 127, 1, 8, 9, 13, 14, 31, + 45, 57, 59, 60, 62, 63, 65, 90, + 97, 122, 0, 10, 32, 34, 36, 37, + 47, 93, 95, 124, 127, 1, 8, 9, + 13, 14, 31, 45, 57, 59, 60, 62, + 63, 65, 90, 97, 122, 0, 10, 32, + 93, 124, 9, 13, 48, 57, 65, 70, + 97, 102, 0, 10, 32, 93, 124, 9, + 13, 48, 57, 65, 70, 97, 102, 0, + 10, 32, 35, 40, 41, 45, 46, 60, + 61, 62, 91, 93, 94, 123, 124, 126, + 9, 13, 0, 10, 32, 35, 41, 93, + 124, 9, 13, 0, 10, 32, 41, 93, + 124, 9, 13, 0, 10, 32, 41, 93, + 124, 9, 13, 0, 10, 32, 40, 46, + 91, 93, 123, 124, 9, 13, 0, 10, + 32, 35, 41, 93, 124, 9, 13, 0, + 10, 32, 34, 35, 36, 37, 41, 43, + 47, 93, 95, 124, 127, 1, 8, 9, + 13, 14, 31, 45, 57, 59, 60, 62, + 63, 65, 90, 97, 122, 0, 10, 32, + 34, 35, 36, 37, 41, 47, 93, 95, + 124, 127, 1, 8, 9, 13, 14, 31, + 45, 57, 59, 60, 62, 63, 65, 90, + 97, 122, 0, 10, 32, 34, 36, 37, + 41, 47, 93, 95, 124, 127, 1, 8, + 9, 13, 14, 31, 45, 57, 59, 60, + 62, 63, 65, 90, 97, 122, 0, 10, + 32, 34, 36, 37, 41, 47, 93, 95, + 124, 127, 1, 8, 9, 13, 14, 31, + 45, 57, 59, 60, 62, 63, 65, 90, + 97, 122, 0, 10, 32, 41, 93, 124, + 9, 13, 48, 57, 65, 70, 97, 102, + 0, 10, 32, 41, 93, 124, 9, 13, + 48, 57, 65, 70, 97, 102, 0, 10, + 32, 34, 35, 36, 37, 41, 43, 47, + 93, 95, 124, 127, 1, 8, 9, 13, + 14, 31, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 0, 10, 32, 41, + 93, 124, 9, 13, 48, 57, 65, 70, + 97, 102, 0, 10, 32, 41, 93, 124, + 9, 13, 48, 57, 65, 70, 97, 102, + 0, 10, 32, 93, 124, 9, 13, 48, + 57, 65, 70, 97, 102, 0, 10, 32, + 93, 124, 9, 13, 48, 57, 65, 70, + 97, 102, 0, 10, 32, 41, 93, 124, + 9, 13, 48, 57, 65, 70, 97, 102, + 0, 10, 32, 41, 93, 124, 9, 13, + 48, 57, 65, 70, 97, 102, 0, 10, + 32, 34, 36, 37, 40, 46, 47, 91, + 93, 95, 123, 124, 127, 1, 8, 9, + 13, 14, 31, 45, 57, 59, 60, 62, + 63, 65, 90, 97, 122, 0, 10, 32, + 34, 35, 36, 37, 41, 47, 93, 95, + 124, 127, 1, 8, 9, 13, 14, 31, + 45, 57, 59, 60, 62, 63, 65, 90, + 97, 122, 0, 10, 32, 93, 124, 9, + 13, 48, 57, 65, 70, 97, 102, 0, + 10, 32, 93, 124, 9, 13, 48, 57, + 65, 70, 97, 102, 0, 10, 32, 35, + 41, 93, 124, 9, 13, 48, 57, 65, + 70, 97, 102, 0, 10, 32, 35, 41, + 93, 124, 9, 13, 48, 57, 65, 70, + 97, 102, 0, 10, 32, 40, 41, 45, + 46, 60, 61, 62, 91, 93, 94, 123, + 124, 126, 9, 13, 0, 10, 32, 40, + 41, 45, 46, 60, 61, 62, 91, 93, + 94, 123, 124, 126, 9, 13, 0, 10, + 32, 40, 41, 45, 46, 60, 61, 62, + 91, 93, 94, 123, 124, 126, 9, 13, + 0, 10, 32, 93, 124, 9, 13, 0, + 10, 32, 40, 41, 45, 46, 60, 61, + 62, 91, 93, 94, 123, 124, 126, 9, + 13, 0, 10, 32, 40, 41, 45, 46, + 60, 61, 62, 91, 93, 94, 123, 124, + 126, 9, 13, 0, 10, 32, 93, 124, + 9, 13, 0, 10, 32, 93, 124, 9, + 13, 0, 10, 32, 34, 35, 36, 37, + 40, 43, 46, 47, 91, 93, 95, 123, + 124, 127, 1, 8, 9, 13, 14, 31, + 45, 57, 59, 60, 62, 63, 65, 90, + 97, 122, 0, 10, 32, 34, 36, 37, + 43, 47, 93, 95, 124, 127, 1, 8, + 9, 13, 14, 31, 45, 58, 59, 60, + 62, 63, 65, 90, 97, 122, 0, 10, + 32, 34, 35, 36, 37, 40, 41, 45, + 46, 47, 60, 61, 62, 91, 93, 94, + 95, 123, 124, 126, 127, 1, 8, 9, + 13, 14, 31, 48, 57, 59, 63, 65, + 90, 97, 122, 0, 10, 32, 35, 41, + 93, 124, 9, 13, 48, 57, 65, 70, + 97, 102, 0, 10, 32, 35, 41, 93, + 124, 9, 13, 48, 57, 65, 70, 97, + 102, 0, 10, 32, 34, 35, 36, 37, + 40, 41, 45, 46, 47, 60, 61, 62, + 91, 93, 94, 95, 123, 124, 126, 127, + 1, 8, 9, 13, 14, 31, 48, 57, + 59, 63, 65, 90, 97, 122, 0, 10, + 32, 34, 36, 37, 40, 41, 45, 46, + 47, 60, 61, 62, 91, 93, 94, 95, + 123, 124, 126, 127, 1, 8, 9, 13, + 14, 31, 48, 57, 59, 63, 65, 90, + 97, 122, 0, 10, 32, 34, 36, 37, + 40, 41, 45, 46, 47, 60, 61, 62, + 91, 93, 94, 95, 123, 124, 126, 127, + 1, 8, 9, 13, 14, 31, 48, 57, + 59, 63, 65, 90, 97, 122, 0, 10, + 32, 34, 36, 37, 47, 93, 95, 124, + 127, 1, 8, 9, 13, 14, 31, 45, + 57, 59, 60, 62, 63, 65, 90, 97, + 122, 0, 10, 32, 34, 36, 37, 47, + 93, 95, 124, 127, 1, 8, 9, 13, + 14, 31, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 0, 10, 32, 93, + 124, 9, 13, 48, 57, 65, 70, 97, + 102, 0, 10, 32, 93, 124, 9, 13, + 48, 57, 65, 70, 97, 102, 0, 10, + 32, 93, 124, 125, 9, 13, 0, 10, + 32, 34, 35, 36, 37, 43, 47, 93, + 95, 124, 125, 127, 1, 8, 9, 13, + 14, 31, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 0, 10, 32, 34, + 36, 37, 47, 93, 95, 124, 125, 127, + 1, 8, 9, 13, 14, 31, 45, 57, + 59, 60, 62, 63, 65, 90, 97, 122, + 0, 10, 32, 93, 124, 125, 9, 13, + 48, 57, 65, 70, 97, 102, 0, 10, + 32, 93, 124, 125, 9, 13, 48, 57, + 65, 70, 97, 102, 0, 10, 32, 93, + 124, 125, 9, 13, 48, 57, 65, 70, + 97, 102, 0, 10, 32, 93, 124, 125, + 9, 13, 48, 57, 65, 70, 97, 102, + 0, 10, 32, 34, 36, 37, 43, 47, + 93, 95, 124, 125, 127, 1, 8, 9, + 13, 14, 31, 45, 58, 59, 60, 62, + 63, 65, 90, 97, 122, 0, 10, 32, + 93, 124, 125, 9, 13, 48, 57, 65, + 70, 97, 102, 0, 10, 32, 93, 124, + 125, 9, 13, 48, 57, 65, 70, 97, + 102, 0, 10, 32, 93, 124, 9, 13, + 48, 57, 65, 70, 97, 102, 0, 10, + 32, 93, 124, 9, 13, 48, 57, 65, + 70, 97, 102, 0, 10, 32, 34, 36, + 37, 40, 41, 45, 46, 47, 60, 61, + 62, 91, 93, 94, 95, 123, 124, 126, + 127, 1, 8, 9, 13, 14, 31, 48, + 57, 59, 63, 65, 90, 97, 122, 0, + 10, 32, 34, 36, 37, 47, 93, 95, + 124, 125, 127, 1, 8, 9, 13, 14, + 31, 45, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 0, 10, 32, 34, 36, + 37, 40, 41, 45, 46, 47, 60, 61, + 62, 91, 93, 94, 95, 123, 124, 126, + 127, 1, 8, 9, 13, 14, 31, 48, + 57, 59, 63, 65, 90, 97, 122, 0, + 10, 32, 35, 40, 41, 45, 46, 60, + 61, 62, 91, 93, 94, 123, 124, 126, + 9, 13, 0, 10, 32, 35, 40, 41, + 45, 46, 60, 61, 62, 91, 93, 94, + 123, 124, 126, 9, 13, 0, 10, 32, + 35, 40, 41, 45, 46, 60, 61, 62, + 91, 93, 94, 123, 124, 126, 9, 13, + 0, 10, 32, 35, 40, 41, 45, 46, + 60, 61, 62, 91, 93, 94, 123, 124, + 126, 9, 13, 0, 10, 32, 35, 40, + 41, 45, 46, 60, 61, 62, 91, 93, + 94, 123, 124, 126, 9, 13, 0, 10, + 32, 35, 41, 93, 124, 9, 13, 0, + 10, 32, 35, 41, 93, 124, 9, 13, + 0, 10, 32, 41, 93, 124, 9, 13, + 0, 10, 32, 41, 93, 124, 9, 13, + 0, 10, 32, 40, 46, 91, 93, 123, + 124, 9, 13, 0, 10, 32, 35, 41, + 93, 124, 9, 13, 0, 10, 32, 34, + 35, 36, 37, 40, 41, 43, 46, 47, + 91, 93, 95, 123, 124, 127, 1, 8, + 9, 13, 14, 31, 45, 57, 59, 60, + 62, 63, 65, 90, 97, 122, 0, 10, + 32, 34, 35, 36, 37, 41, 47, 93, + 95, 124, 127, 1, 8, 9, 13, 14, + 31, 45, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 0, 10, 32, 34, 35, + 36, 37, 41, 43, 47, 93, 95, 124, + 127, 1, 8, 9, 13, 14, 31, 45, + 58, 59, 60, 62, 63, 65, 90, 97, + 122, 0, 10, 32, 34, 35, 36, 37, + 41, 47, 93, 95, 124, 127, 1, 8, + 9, 13, 14, 31, 45, 57, 59, 60, + 62, 63, 65, 90, 97, 122, 0, 10, + 32, 34, 35, 36, 37, 41, 47, 93, + 95, 124, 127, 1, 8, 9, 13, 14, + 31, 45, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 0, 10, 32, 34, 36, + 37, 41, 47, 93, 95, 124, 127, 1, + 8, 9, 13, 14, 31, 45, 57, 59, + 60, 62, 63, 65, 90, 97, 122, 0, + 10, 32, 34, 36, 37, 41, 47, 93, + 95, 124, 127, 1, 8, 9, 13, 14, + 31, 45, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 0, 10, 32, 41, 93, + 124, 9, 13, 48, 57, 65, 70, 97, + 102, 0, 10, 32, 41, 93, 124, 9, + 13, 48, 57, 65, 70, 97, 102, 0, + 10, 32, 34, 35, 36, 37, 40, 41, + 43, 46, 47, 91, 93, 95, 123, 124, + 127, 1, 8, 9, 13, 14, 31, 45, + 57, 59, 60, 62, 63, 65, 90, 97, + 122, 0, 10, 32, 34, 35, 36, 37, + 41, 47, 93, 95, 124, 127, 1, 8, + 9, 13, 14, 31, 45, 57, 59, 60, + 62, 63, 65, 90, 97, 122, 0, 10, + 32, 34, 35, 36, 37, 41, 47, 93, + 95, 124, 127, 1, 8, 9, 13, 14, + 31, 45, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 0, 10, 32, 35, 41, + 93, 124, 9, 13, 0, 10, 32, 41, + 93, 124, 9, 13, 0, 10, 32, 34, + 35, 36, 37, 41, 43, 47, 93, 95, + 124, 127, 1, 8, 9, 13, 14, 31, + 45, 57, 59, 60, 62, 63, 65, 90, + 97, 122, 0, 10, 32, 35, 41, 93, + 124, 9, 13, 48, 57, 65, 70, 97, + 102, 0, 10, 32, 35, 41, 93, 124, + 9, 13, 48, 57, 65, 70, 97, 102, + 0, 10, 32, 35, 41, 93, 124, 9, + 13, 48, 57, 65, 70, 97, 102, 0, + 10, 32, 35, 41, 93, 124, 9, 13, + 48, 57, 65, 70, 97, 102, 0, 10, + 32, 34, 35, 36, 37, 41, 43, 47, + 93, 95, 124, 127, 1, 8, 9, 13, + 14, 31, 45, 58, 59, 60, 62, 63, + 65, 90, 97, 122, 0, 10, 32, 34, + 36, 37, 41, 47, 93, 95, 124, 127, + 1, 8, 9, 13, 14, 31, 45, 57, + 59, 60, 62, 63, 65, 90, 97, 122, + 0, 10, 32, 34, 36, 37, 41, 43, + 47, 93, 95, 124, 127, 1, 8, 9, + 13, 14, 31, 45, 58, 59, 60, 62, + 63, 65, 90, 97, 122, 0, 10, 32, + 34, 36, 37, 41, 47, 93, 95, 124, + 127, 1, 8, 9, 13, 14, 31, 45, + 57, 59, 60, 62, 63, 65, 90, 97, + 122, 0, 10, 32, 41, 93, 124, 9, + 13, 48, 57, 65, 70, 97, 102, 0, + 10, 32, 41, 93, 124, 9, 13, 48, + 57, 65, 70, 97, 102, 0, 10, 32, + 34, 36, 37, 40, 46, 47, 91, 93, + 95, 123, 124, 127, 1, 8, 9, 13, + 14, 31, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 0, 10, 32, 34, + 35, 36, 37, 41, 47, 93, 95, 124, + 127, 1, 8, 9, 13, 14, 31, 45, + 57, 59, 60, 62, 63, 65, 90, 97, + 122, 0, 10, 32, 35, 41, 93, 124, + 9, 13, 48, 57, 65, 70, 97, 102, + 0, 10, 32, 35, 41, 93, 124, 9, + 13, 48, 57, 65, 70, 97, 102, 0, + 10, 32, 35, 41, 93, 124, 125, 9, + 13, 0, 10, 32, 41, 93, 124, 125, + 9, 13, 0, 10, 32, 41, 93, 124, + 125, 9, 13, 0, 10, 32, 40, 46, + 91, 93, 123, 124, 125, 9, 13, 0, + 10, 32, 35, 41, 93, 124, 125, 9, + 13, 0, 10, 32, 34, 35, 36, 37, + 41, 43, 47, 93, 95, 124, 125, 127, + 1, 8, 9, 13, 14, 31, 45, 57, + 59, 60, 62, 63, 65, 90, 97, 122, + 0, 10, 32, 34, 35, 36, 37, 41, + 47, 93, 95, 124, 125, 127, 1, 8, + 9, 13, 14, 31, 45, 57, 59, 60, + 62, 63, 65, 90, 97, 122, 0, 10, + 32, 34, 36, 37, 41, 47, 93, 95, + 124, 125, 127, 1, 8, 9, 13, 14, + 31, 45, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 0, 10, 32, 34, 36, + 37, 41, 47, 93, 95, 124, 125, 127, + 1, 8, 9, 13, 14, 31, 45, 57, + 59, 60, 62, 63, 65, 90, 97, 122, + 0, 10, 32, 41, 93, 124, 125, 9, + 13, 48, 57, 65, 70, 97, 102, 0, + 10, 32, 41, 93, 124, 125, 9, 13, + 48, 57, 65, 70, 97, 102, 0, 10, + 32, 34, 35, 36, 37, 41, 43, 47, + 93, 95, 124, 125, 127, 1, 8, 9, + 13, 14, 31, 45, 57, 59, 60, 62, + 63, 65, 90, 97, 122, 0, 10, 32, + 41, 93, 124, 125, 9, 13, 48, 57, + 65, 70, 97, 102, 0, 10, 32, 41, + 93, 124, 125, 9, 13, 48, 57, 65, + 70, 97, 102, 0, 10, 32, 40, 41, + 46, 91, 93, 123, 124, 9, 13, 0, + 10, 32, 35, 41, 93, 124, 9, 13, + 0, 10, 32, 41, 93, 124, 9, 13, + 0, 10, 32, 41, 93, 124, 125, 9, + 13, 0, 10, 32, 35, 41, 93, 124, + 9, 13, 48, 57, 65, 70, 97, 102, + 0, 10, 32, 35, 41, 93, 124, 9, + 13, 48, 57, 65, 70, 97, 102, 0, + 10, 32, 41, 93, 124, 9, 13, 48, + 57, 65, 70, 97, 102, 0, 10, 32, + 41, 93, 124, 9, 13, 48, 57, 65, + 70, 97, 102, 0, 10, 32, 93, 124, + 9, 13, 48, 57, 65, 70, 97, 102, + 0, 10, 32, 93, 124, 9, 13, 48, + 57, 65, 70, 97, 102, 0, 10, 32, + 35, 41, 93, 124, 9, 13, 48, 57, + 65, 70, 97, 102, 0, 10, 32, 35, + 41, 93, 124, 9, 13, 48, 57, 65, + 70, 97, 102, 0, 10, 32, 35, 41, + 93, 124, 9, 13, 48, 57, 65, 70, + 97, 102, 0, 10, 32, 35, 41, 93, + 124, 9, 13, 48, 57, 65, 70, 97, + 102, 0, 10, 32, 35, 41, 93, 124, + 125, 9, 13, 48, 57, 65, 70, 97, + 102, 0, 10, 32, 35, 41, 93, 124, + 125, 9, 13, 48, 57, 65, 70, 97, + 102, 0, 10, 32, 35, 40, 41, 46, + 91, 93, 123, 124, 9, 13, 0, 10, + 32, 35, 41, 93, 124, 9, 13, 0, + 10, 32, 35, 41, 93, 124, 125, 9, + 13, 0, 10, 32, 35, 41, 93, 124, + 125, 9, 13, 48, 57, 65, 70, 97, + 102, 0, 10, 32, 35, 41, 93, 124, + 125, 9, 13, 48, 57, 65, 70, 97, + 102, 0, 10, 32, 34, 36, 37, 40, + 46, 47, 91, 93, 95, 123, 124, 125, + 127, 1, 8, 9, 13, 14, 31, 45, + 57, 59, 60, 62, 63, 65, 90, 97, + 122, 0, 10, 32, 34, 35, 36, 37, + 41, 47, 93, 95, 124, 125, 127, 1, + 8, 9, 13, 14, 31, 45, 57, 59, + 60, 62, 63, 65, 90, 97, 122, 0, + 10, 32, 34, 35, 36, 37, 40, 41, + 46, 47, 91, 93, 95, 123, 124, 127, + 1, 8, 9, 13, 14, 31, 45, 57, + 59, 60, 62, 63, 65, 90, 97, 122, + 0, 10, 32, 34, 35, 36, 37, 41, + 47, 93, 95, 124, 125, 127, 1, 8, + 9, 13, 14, 31, 45, 57, 59, 60, + 62, 63, 65, 90, 97, 122, 0, 10, + 32, 34, 36, 37, 47, 93, 95, 124, + 125, 127, 1, 8, 9, 13, 14, 31, + 45, 57, 59, 60, 62, 63, 65, 90, + 97, 122, 0, 10, 32, 34, 36, 37, + 47, 93, 95, 124, 125, 127, 1, 8, + 9, 13, 14, 31, 45, 57, 59, 60, + 62, 63, 65, 90, 97, 122, 0, 10, + 32, 93, 124, 125, 9, 13, 0, 10, + 32, 34, 35, 36, 37, 40, 43, 46, + 47, 91, 93, 95, 123, 124, 125, 127, + 1, 8, 9, 13, 14, 31, 45, 57, + 59, 60, 62, 63, 65, 90, 97, 122, + 0, 10, 32, 34, 36, 37, 47, 93, + 95, 124, 125, 127, 1, 8, 9, 13, + 14, 31, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 0, 10, 32, 93, + 124, 125, 9, 13, 48, 57, 65, 70, + 97, 102, 0, 10, 32, 93, 124, 125, + 9, 13, 48, 57, 65, 70, 97, 102, + 0, 10, 32, 35, 41, 93, 124, 125, + 9, 13, 48, 57, 65, 70, 97, 102, + 0, 10, 32, 35, 41, 93, 124, 125, + 9, 13, 48, 57, 65, 70, 97, 102, + 0, 10, 32, 93, 124, 125, 9, 13, + 48, 57, 65, 70, 97, 102, 0, 10, + 32, 93, 124, 125, 9, 13, 48, 57, + 65, 70, 97, 102, 0, 10, 32, 93, + 124, 125, 9, 13, 48, 57, 65, 70, + 97, 102, 0, 10, 32, 93, 124, 125, + 9, 13, 48, 57, 65, 70, 97, 102, + 0, 10, 32, 41, 93, 124, 125, 9, + 13, 48, 57, 65, 70, 97, 102, 0, + 10, 32, 41, 93, 124, 125, 9, 13, + 48, 57, 65, 70, 97, 102, 0, 10, + 32, 34, 36, 37, 40, 41, 46, 47, + 91, 93, 95, 123, 124, 127, 1, 8, + 9, 13, 14, 31, 45, 57, 59, 60, + 62, 63, 65, 90, 97, 122, 0, 10, + 32, 34, 36, 37, 41, 47, 93, 95, + 124, 125, 127, 1, 8, 9, 13, 14, + 31, 45, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 0, 10, 32, 34, 36, + 37, 41, 43, 47, 93, 95, 124, 125, + 127, 1, 8, 9, 13, 14, 31, 45, + 58, 59, 60, 62, 63, 65, 90, 97, + 122, 0, 10, 32, 34, 35, 36, 37, + 41, 43, 47, 93, 95, 124, 125, 127, + 1, 8, 9, 13, 14, 31, 45, 58, + 59, 60, 62, 63, 65, 90, 97, 122, + 0, 10, 32, 93, 124, 125, 9, 13, + 0, 10, 32, 93, 124, 125, 9, 13, + 0, 10, 32, 35, 41, 93, 124, 9, + 13, 48, 57, 65, 70, 97, 102, 0, + 10, 32, 35, 41, 93, 124, 9, 13, + 48, 57, 65, 70, 97, 102, 0, 10, + 32, 34, 36, 37, 47, 93, 95, 124, + 127, 1, 8, 9, 13, 14, 31, 45, + 57, 59, 60, 62, 63, 65, 90, 97, + 122, 0, 10, 32, 34, 36, 37, 47, + 93, 95, 124, 125, 127, 1, 8, 9, + 13, 14, 31, 45, 57, 59, 60, 62, + 63, 65, 90, 97, 122, 0, 10, 32, + 93, 124, 9, 13, 0, 10, 32, 93, + 124, 125, 9, 13, 0, 10, 32, 35, + 40, 41, 45, 46, 60, 61, 62, 91, + 93, 94, 123, 124, 126, 9, 13, 0, + 10, 32, 35, 40, 41, 45, 46, 60, + 61, 62, 91, 93, 94, 123, 124, 126, + 9, 13, 0, 10, 32, 35, 40, 41, + 45, 46, 60, 61, 62, 91, 93, 94, + 123, 124, 126, 9, 13, 0, 10, 32, + 34, 35, 36, 37, 40, 41, 45, 46, + 47, 60, 61, 62, 91, 93, 94, 95, + 123, 124, 126, 127, 1, 8, 9, 13, + 14, 31, 48, 57, 59, 63, 65, 90, + 97, 122, 0, 10, 32, 34, 35, 36, + 37, 40, 41, 45, 46, 47, 60, 61, + 62, 91, 93, 94, 95, 123, 124, 126, + 127, 1, 8, 9, 13, 14, 31, 48, + 57, 59, 63, 65, 90, 97, 122, 0, + 10, 32, 34, 35, 36, 37, 40, 41, + 45, 46, 47, 60, 61, 62, 91, 93, + 94, 95, 123, 124, 126, 127, 1, 8, + 9, 13, 14, 31, 48, 57, 59, 63, + 65, 90, 97, 122, 0, 10, 32, 93, + 124, 9, 13, 48, 57, 0, 10, 32, + 40, 41, 45, 46, 47, 60, 61, 62, + 91, 92, 93, 94, 123, 124, 126, 9, + 13, 48, 57, 0, 10, 32, 93, 124, + 9, 13, 48, 57, 0, 10, 32, 40, + 41, 45, 46, 47, 60, 61, 62, 91, + 92, 93, 94, 123, 124, 126, 9, 13, + 48, 57, 0, 10, 32, 40, 41, 45, + 46, 60, 61, 62, 91, 93, 94, 123, + 124, 126, 9, 13, 0, 10, 32, 93, + 124, 125, 9, 13, 0, 10, 32, 40, + 41, 45, 46, 60, 61, 62, 91, 93, + 94, 123, 124, 126, 9, 13, 0, 10, + 32, 34, 36, 37, 47, 93, 95, 124, + 127, 1, 8, 9, 13, 14, 31, 45, + 46, 48, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 0, 10, 32, 40, 41, + 45, 46, 60, 61, 62, 91, 93, 94, + 123, 124, 126, 9, 13, 0, 10, 32, + 40, 41, 45, 46, 47, 60, 61, 62, + 91, 92, 93, 94, 123, 124, 126, 9, + 13, 0, 32, 34, 36, 37, 47, 93, + 95, 127, 1, 8, 9, 13, 14, 31, + 45, 57, 59, 60, 62, 63, 65, 90, + 97, 122, 0, 32, 34, 36, 37, 47, + 93, 95, 127, 1, 8, 9, 13, 14, + 31, 45, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 0, 32, 93, 9, 13, + 48, 57, 65, 70, 97, 102, 0, 32, + 93, 9, 13, 48, 57, 65, 70, 97, + 102, 0, 32, 93, 125, 9, 13, 0, + 32, 34, 35, 36, 37, 43, 47, 93, + 95, 125, 127, 1, 8, 9, 13, 14, + 31, 45, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 0, 32, 34, 36, 37, + 47, 93, 95, 125, 127, 1, 8, 9, + 13, 14, 31, 45, 57, 59, 60, 62, + 63, 65, 90, 97, 122, 0, 32, 93, + 125, 9, 13, 48, 57, 65, 70, 97, + 102, 0, 32, 93, 125, 9, 13, 48, + 57, 65, 70, 97, 102, 0, 32, 93, + 125, 9, 13, 48, 57, 65, 70, 97, + 102, 0, 32, 93, 125, 9, 13, 48, + 57, 65, 70, 97, 102, 0, 32, 35, + 41, 93, 9, 13, 48, 57, 65, 70, + 97, 102, 0, 32, 35, 41, 93, 9, + 13, 48, 57, 65, 70, 97, 102, 0, + 32, 34, 36, 37, 41, 47, 93, 95, + 127, 1, 8, 9, 13, 14, 31, 45, + 57, 59, 60, 62, 63, 65, 90, 97, + 122, 0, 32, 35, 41, 93, 9, 13, + 48, 57, 65, 70, 97, 102, 0, 32, + 35, 41, 93, 9, 13, 48, 57, 65, + 70, 97, 102, 0, 32, 93, 9, 13, + 48, 57, 65, 70, 97, 102, 0, 32, + 93, 9, 13, 48, 57, 65, 70, 97, + 102, 0, 32, 34, 36, 37, 43, 47, + 93, 95, 125, 127, 1, 8, 9, 13, + 14, 31, 45, 58, 59, 60, 62, 63, + 65, 90, 97, 122, 0, 32, 93, 125, + 9, 13, 48, 57, 65, 70, 97, 102, + 0, 32, 93, 125, 9, 13, 48, 57, + 65, 70, 97, 102, 0, 32, 35, 41, + 93, 9, 13, 48, 57, 65, 70, 97, + 102, 0, 32, 35, 41, 93, 9, 13, + 48, 57, 65, 70, 97, 102, 0, 32, + 93, 9, 13, 48, 57, 65, 70, 97, + 102, 0, 32, 93, 9, 13, 48, 57, + 65, 70, 97, 102, 0, 32, 34, 36, + 37, 47, 93, 95, 125, 127, 1, 8, + 9, 13, 14, 31, 45, 57, 59, 60, + 62, 63, 65, 90, 97, 122, 0, 32, + 34, 36, 37, 41, 43, 47, 93, 95, + 127, 1, 8, 9, 13, 14, 31, 45, + 58, 59, 60, 62, 63, 65, 90, 97, + 122, 0, 32, 41, 93, 9, 13, 48, + 57, 65, 70, 97, 102, 0, 32, 41, + 93, 9, 13, 48, 57, 65, 70, 97, + 102, 0, 32, 34, 35, 36, 37, 41, + 43, 47, 93, 95, 127, 1, 8, 9, + 13, 14, 31, 45, 58, 59, 60, 62, + 63, 65, 90, 97, 122, 0, 32, 93, + 124, 9, 13, 0, 10, 32, 40, 41, + 45, 46, 47, 60, 61, 62, 91, 92, + 93, 94, 95, 123, 126, 9, 13, 0, + 32, 93, 9, 13, 0, 32, 93, 125, + 9, 13, 0, 32, 60, 62, 93, 9, + 13, 40, 41, 45, 46, 60, 61, 62, + 91, 94, 123, 126, 35, 40, 41, 45, + 46, 60, 61, 62, 91, 94, 123, 126, + 35, 41, 41, 41, 40, 46, 91, 123, + 35, 41, 32, 46, 32, 93, 93, 125, + 125, 35, 40, 41, 45, 46, 60, 61, + 62, 91, 94, 123, 126, 40, 41, 45, + 46, 60, 61, 62, 91, 94, 123, 126, + 40, 41, 45, 46, 60, 61, 62, 91, + 94, 123, 126, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 123, 126, 40, 41, + 45, 46, 60, 61, 62, 91, 94, 123, + 126, 40, 41, 45, 46, 60, 61, 62, + 91, 94, 123, 126, 40, 41, 45, 46, + 60, 61, 62, 91, 94, 123, 126, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 123, 126, 40, 41, 45, 46, 60, 61, + 62, 91, 94, 123, 126, 35, 40, 41, + 45, 46, 60, 61, 62, 91, 94, 123, + 126, 35, 40, 41, 45, 46, 60, 61, + 62, 91, 94, 123, 126, 35, 40, 41, + 45, 46, 60, 61, 62, 91, 94, 123, + 126, 35, 40, 41, 45, 46, 60, 61, + 62, 91, 94, 123, 126, 35, 41, 93, + 35, 41, 93, 41, 93, 41, 93, 40, + 46, 91, 93, 123, 35, 41, 93, 35, + 40, 41, 46, 91, 123, 35, 41, 35, + 41, 125, 35, 41, 125, 41, 125, 41, + 125, 40, 46, 91, 123, 125, 35, 41, + 125, 93, 125, 93, 125, 125, 40, 41, + 46, 91, 123, 35, 41, 35, 41, 41, + 41, 93, 41, 125, 93, 93, 125, 35, + 40, 41, 45, 46, 60, 61, 62, 91, + 94, 123, 126, 35, 40, 41, 45, 46, + 60, 61, 62, 91, 94, 123, 126, 35, + 40, 41, 45, 46, 60, 61, 62, 91, + 94, 123, 126, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 123, 126, 35, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 123, 126, 35, 41, 41, 41, 40, 46, + 91, 123, 35, 41, 32, 46, 58, 32, + 58, 34, 35, 36, 37, 43, 47, 95, + 127, 0, 32, 45, 57, 59, 60, 62, + 63, 65, 90, 97, 122, 34, 36, 37, + 47, 95, 127, 0, 32, 45, 57, 59, + 60, 62, 63, 65, 90, 97, 122, 32, + 34, 37, 60, 62, 127, 0, 31, 48, + 57, 65, 70, 97, 102, 48, 57, 65, + 70, 97, 102, 48, 57, 65, 70, 97, + 102, 48, 57, 65, 70, 97, 102, 32, + 34, 36, 37, 47, 95, 127, 0, 31, + 45, 57, 59, 60, 62, 63, 65, 90, + 97, 122, 48, 57, 65, 70, 97, 102, + 48, 57, 65, 70, 97, 102, 34, 36, + 37, 43, 47, 95, 127, 0, 32, 45, + 58, 59, 60, 62, 63, 65, 90, 97, + 122, 32, 34, 36, 37, 47, 95, 127, + 0, 31, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 93, 93, 125, 125, + 35, 40, 41, 45, 46, 60, 61, 62, + 91, 94, 123, 126, 40, 41, 45, 46, + 60, 61, 62, 91, 94, 123, 126, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 123, 126, 40, 41, 45, 46, 60, 61, + 62, 91, 94, 123, 126, 40, 41, 45, + 46, 60, 61, 62, 91, 94, 123, 126, + 40, 41, 45, 46, 60, 61, 62, 91, + 94, 123, 126, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 123, 126, 40, 41, + 45, 46, 60, 61, 62, 91, 94, 123, + 126, 40, 41, 45, 46, 60, 61, 62, + 91, 94, 123, 126, 35, 40, 41, 45, + 46, 60, 61, 62, 91, 94, 123, 126, + 35, 40, 41, 45, 46, 60, 61, 62, + 91, 94, 123, 126, 35, 40, 41, 45, + 46, 60, 61, 62, 91, 94, 123, 126, + 35, 40, 41, 45, 46, 60, 61, 62, + 91, 94, 123, 126, 35, 41, 93, 35, + 41, 93, 41, 93, 41, 93, 40, 46, + 91, 93, 123, 35, 41, 93, 35, 40, + 41, 46, 91, 123, 35, 41, 35, 41, + 125, 35, 41, 125, 41, 125, 41, 125, + 40, 46, 91, 123, 125, 35, 41, 125, + 93, 125, 93, 125, 125, 40, 41, 46, + 91, 123, 35, 41, 35, 41, 41, 41, + 93, 41, 125, 93, 93, 125, 35, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 123, 126, 35, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 123, 126, 35, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 123, 126, 40, 41, 45, 46, 60, 61, + 62, 91, 94, 98, 102, 110, 111, 112, + 123, 126, 48, 57, 65, 90, 97, 122, + 40, 41, 45, 46, 60, 61, 62, 91, + 94, 123, 126, 48, 57, 35, 40, 41, + 45, 46, 60, 61, 62, 91, 94, 123, + 126, 35, 41, 41, 41, 40, 46, 91, + 123, 35, 41, 93, 93, 125, 125, 35, + 40, 41, 45, 46, 60, 61, 62, 91, + 94, 123, 126, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 123, 126, 40, 41, + 45, 46, 60, 61, 62, 91, 94, 123, + 126, 40, 41, 45, 46, 60, 61, 62, + 91, 94, 123, 126, 40, 41, 45, 46, + 60, 61, 62, 91, 94, 123, 126, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 123, 126, 40, 41, 45, 46, 60, 61, + 62, 91, 94, 123, 126, 40, 41, 45, + 46, 60, 61, 62, 91, 94, 123, 126, + 40, 41, 45, 46, 60, 61, 62, 91, + 94, 123, 126, 35, 40, 41, 45, 46, + 60, 61, 62, 91, 94, 123, 126, 35, + 40, 41, 45, 46, 60, 61, 62, 91, + 94, 123, 126, 35, 40, 41, 45, 46, + 60, 61, 62, 91, 94, 123, 126, 35, + 40, 41, 45, 46, 60, 61, 62, 91, + 94, 123, 126, 35, 41, 93, 35, 41, + 93, 41, 93, 41, 93, 40, 46, 91, + 93, 123, 35, 41, 93, 35, 40, 41, + 46, 91, 123, 35, 41, 35, 41, 125, + 35, 41, 125, 41, 125, 41, 125, 40, + 46, 91, 123, 125, 35, 41, 125, 93, + 125, 93, 125, 125, 40, 41, 46, 91, + 123, 35, 41, 35, 41, 41, 41, 93, + 41, 125, 93, 93, 125, 35, 40, 41, + 45, 46, 60, 61, 62, 91, 94, 123, + 126, 35, 40, 41, 45, 46, 60, 61, + 62, 91, 94, 123, 126, 35, 40, 41, + 45, 46, 60, 61, 62, 91, 94, 123, + 126, 40, 41, 45, 46, 60, 61, 62, + 91, 94, 98, 102, 110, 112, 116, 123, + 126, 48, 57, 65, 90, 97, 122, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 98, 101, 102, 110, 112, 123, 126, 48, + 57, 65, 90, 97, 122, 40, 41, 45, + 46, 60, 61, 62, 91, 94, 98, 102, + 110, 112, 120, 123, 126, 48, 57, 65, + 90, 97, 122, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 98, 102, 110, 112, + 116, 123, 126, 48, 57, 65, 90, 97, + 122, 40, 41, 45, 46, 60, 61, 62, + 91, 94, 98, 102, 105, 110, 112, 123, + 126, 48, 57, 65, 90, 97, 122, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 98, 102, 108, 110, 112, 123, 126, 48, + 57, 65, 90, 97, 122, 40, 41, 45, + 46, 60, 61, 62, 91, 94, 98, 101, + 102, 110, 112, 123, 126, 48, 57, 65, + 90, 97, 122, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 123, 126, 35, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 123, 126, 35, 41, 41, 41, 40, 46, + 91, 123, 35, 41, 32, 46, 32, 93, + 93, 125, 125, 35, 40, 41, 45, 46, + 60, 61, 62, 91, 94, 123, 126, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 123, 126, 40, 41, 45, 46, 60, 61, + 62, 91, 94, 123, 126, 40, 41, 45, + 46, 60, 61, 62, 91, 94, 123, 126, + 40, 41, 45, 46, 60, 61, 62, 91, + 94, 123, 126, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 123, 126, 40, 41, + 45, 46, 60, 61, 62, 91, 94, 123, + 126, 40, 41, 45, 46, 60, 61, 62, + 91, 94, 123, 126, 40, 41, 45, 46, + 60, 61, 62, 91, 94, 123, 126, 35, + 40, 41, 45, 46, 60, 61, 62, 91, + 94, 123, 126, 35, 40, 41, 45, 46, + 60, 61, 62, 91, 94, 123, 126, 35, + 40, 41, 45, 46, 60, 61, 62, 91, + 94, 123, 126, 35, 40, 41, 45, 46, + 60, 61, 62, 91, 94, 123, 126, 35, + 41, 93, 35, 41, 93, 41, 93, 41, + 93, 40, 46, 91, 93, 123, 35, 41, + 93, 35, 40, 41, 46, 91, 123, 35, + 41, 35, 41, 125, 35, 41, 125, 41, + 125, 41, 125, 40, 46, 91, 123, 125, + 35, 41, 125, 93, 125, 93, 125, 125, + 40, 41, 46, 91, 123, 35, 41, 35, + 41, 41, 41, 93, 41, 125, 93, 93, + 125, 35, 40, 41, 45, 46, 60, 61, + 62, 91, 94, 123, 126, 35, 40, 41, + 45, 46, 60, 61, 62, 91, 94, 123, + 126, 35, 40, 41, 45, 46, 60, 61, + 62, 91, 94, 123, 126, 40, 41, 45, + 46, 60, 61, 62, 91, 94, 98, 101, + 102, 110, 112, 123, 126, 48, 57, 65, + 90, 97, 122, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 123, 126, 35, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 123, 126, 35, 41, 41, 41, 40, 46, + 91, 123, 35, 41, 32, 46, 32, 93, + 93, 125, 125, 35, 40, 41, 45, 46, + 60, 61, 62, 91, 94, 123, 126, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 123, 126, 40, 41, 45, 46, 60, 61, + 62, 91, 94, 123, 126, 40, 41, 45, + 46, 60, 61, 62, 91, 94, 123, 126, + 40, 41, 45, 46, 60, 61, 62, 91, + 94, 123, 126, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 123, 126, 40, 41, + 45, 46, 60, 61, 62, 91, 94, 123, + 126, 40, 41, 45, 46, 60, 61, 62, + 91, 94, 123, 126, 40, 41, 45, 46, + 60, 61, 62, 91, 94, 123, 126, 35, + 40, 41, 45, 46, 60, 61, 62, 91, + 94, 123, 126, 35, 40, 41, 45, 46, + 60, 61, 62, 91, 94, 123, 126, 35, + 40, 41, 45, 46, 60, 61, 62, 91, + 94, 123, 126, 35, 40, 41, 45, 46, + 60, 61, 62, 91, 94, 123, 126, 35, + 41, 93, 35, 41, 93, 41, 93, 41, + 93, 40, 46, 91, 93, 123, 35, 41, + 93, 35, 40, 41, 46, 91, 123, 35, + 41, 35, 41, 125, 35, 41, 125, 41, + 125, 41, 125, 40, 46, 91, 123, 125, + 35, 41, 125, 93, 125, 93, 125, 125, + 40, 41, 46, 91, 123, 35, 41, 35, + 41, 41, 41, 93, 41, 125, 93, 93, + 125, 35, 40, 41, 45, 46, 60, 61, + 62, 91, 94, 123, 126, 35, 40, 41, + 45, 46, 60, 61, 62, 91, 94, 123, + 126, 35, 40, 41, 45, 46, 60, 61, + 62, 91, 94, 123, 126, 40, 41, 45, + 46, 60, 61, 62, 91, 94, 98, 102, + 110, 112, 123, 126, 48, 57, 65, 90, + 97, 122, 40, 41, 45, 46, 60, 61, + 62, 91, 94, 97, 98, 102, 108, 110, + 112, 123, 126, 48, 57, 65, 90, 100, + 111, 114, 122, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 98, 101, 102, 110, + 112, 123, 126, 48, 57, 65, 90, 97, + 122, 40, 41, 45, 46, 60, 61, 62, + 91, 94, 98, 102, 110, 112, 123, 126, + 48, 57, 65, 90, 97, 122, 35, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 123, 126, 35, 41, 41, 41, 40, 46, + 91, 123, 35, 41, 10, 32, 46, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 123, 124, 126, 93, 93, 125, 125, 35, + 40, 41, 45, 46, 60, 61, 62, 91, + 94, 123, 126, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 123, 126, 40, 41, + 45, 46, 60, 61, 62, 91, 94, 123, + 126, 40, 41, 45, 46, 60, 61, 62, + 91, 94, 123, 126, 40, 41, 45, 46, + 60, 61, 62, 91, 94, 123, 126, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 123, 126, 40, 41, 45, 46, 60, 61, + 62, 91, 94, 123, 126, 40, 41, 45, + 46, 60, 61, 62, 91, 94, 123, 126, + 40, 41, 45, 46, 60, 61, 62, 91, + 94, 123, 126, 35, 40, 41, 45, 46, + 60, 61, 62, 91, 94, 123, 126, 35, + 40, 41, 45, 46, 60, 61, 62, 91, + 94, 123, 126, 35, 40, 41, 45, 46, + 60, 61, 62, 91, 94, 123, 126, 35, + 40, 41, 45, 46, 60, 61, 62, 91, + 94, 123, 126, 35, 41, 93, 35, 41, + 93, 41, 93, 41, 93, 40, 46, 91, + 93, 123, 35, 41, 93, 35, 40, 41, + 46, 91, 123, 35, 41, 35, 41, 125, + 35, 41, 125, 41, 125, 41, 125, 40, + 46, 91, 123, 125, 35, 41, 125, 93, + 125, 93, 125, 125, 40, 41, 46, 91, + 123, 35, 41, 35, 41, 41, 41, 93, + 41, 125, 93, 93, 125, 35, 40, 41, + 45, 46, 60, 61, 62, 91, 94, 123, + 126, 35, 40, 41, 45, 46, 60, 61, + 62, 91, 94, 123, 126, 35, 40, 41, + 45, 46, 60, 61, 62, 91, 94, 123, + 126, 99, 112, 111, 100, 101, 62, 32, + 60, 9, 13, 47, 112, 114, 101, 62, + 40, 41, 45, 46, 91, 94, 98, 102, + 110, 112, 123, 126, 48, 57, 60, 62, + 65, 90, 97, 122, 35, 40, 41, 45, + 46, 91, 94, 123, 126, 60, 62, 35, + 41, 41, 41, 40, 46, 91, 123, 32, + 46, 93, 93, 125, 125, 40, 41, 45, + 46, 91, 94, 123, 126, 60, 62, 35, + 41, 93, 35, 41, 93, 41, 93, 41, + 93, 40, 46, 93, 123, 93, 125, 93, + 125, 40, 46, 91, 125, 35, 41, 125, + 41, 125, 41, 125, 41, 46, 91, 123, + 41, 93, 41, 125, 35, 41, 46, 91, + 123, 35, 41, 125, 93, 125, 40, 41, + 45, 46, 91, 94, 97, 98, 102, 110, + 112, 123, 126, 48, 57, 60, 62, 65, + 90, 100, 111, 114, 122, 40, 41, 45, + 46, 91, 94, 98, 102, 110, 112, 123, + 126, 48, 57, 60, 62, 65, 90, 97, + 122, 40, 41, 45, 46, 91, 94, 98, + 102, 110, 111, 112, 123, 126, 60, 62, + 65, 90, 97, 122, 40, 41, 45, 46, + 91, 94, 98, 102, 110, 111, 112, 123, + 126, 48, 57, 60, 62, 65, 90, 97, + 122, 40, 41, 45, 46, 91, 94, 98, + 102, 110, 112, 116, 123, 126, 48, 57, + 60, 62, 65, 90, 97, 122, 40, 41, + 45, 46, 91, 94, 98, 102, 110, 112, + 114, 123, 126, 48, 57, 60, 62, 65, + 90, 97, 122, 40, 41, 45, 46, 91, + 94, 98, 102, 110, 112, 123, 126, 48, + 57, 60, 62, 65, 90, 97, 100, 103, + 122, 40, 41, 45, 46, 91, 94, 98, + 101, 102, 110, 112, 123, 126, 48, 57, + 60, 62, 65, 90, 97, 122, 40, 41, + 45, 46, 91, 94, 98, 102, 110, 112, + 120, 123, 126, 48, 57, 60, 62, 65, + 90, 97, 122, 40, 41, 45, 46, 91, + 94, 98, 102, 110, 112, 116, 123, 126, + 48, 57, 60, 62, 65, 90, 97, 122, + 40, 41, 45, 46, 91, 94, 98, 102, + 105, 110, 112, 123, 126, 48, 57, 60, + 62, 65, 90, 97, 122, 40, 41, 45, + 46, 91, 94, 98, 102, 108, 110, 112, + 123, 126, 48, 57, 60, 62, 65, 90, + 97, 122, 40, 41, 45, 46, 91, 94, + 98, 99, 102, 110, 112, 113, 123, 126, + 48, 57, 60, 62, 65, 90, 97, 122, + 40, 41, 45, 46, 91, 94, 98, 102, + 110, 111, 112, 123, 126, 48, 57, 60, + 62, 65, 90, 97, 122, 40, 41, 45, + 46, 91, 94, 98, 102, 110, 112, 116, + 123, 126, 48, 57, 60, 62, 65, 90, + 97, 122, 40, 41, 45, 46, 91, 94, + 98, 101, 102, 110, 112, 123, 126, 48, + 57, 60, 62, 65, 90, 97, 122, 40, + 41, 45, 46, 91, 94, 98, 102, 110, + 112, 120, 123, 126, 48, 57, 60, 62, + 65, 90, 97, 122, 40, 41, 45, 46, + 91, 94, 98, 102, 110, 112, 116, 123, + 126, 48, 57, 60, 62, 65, 90, 97, + 122, 40, 41, 45, 46, 91, 94, 98, + 102, 105, 110, 112, 123, 126, 48, 57, + 60, 62, 65, 90, 97, 122, 40, 41, + 45, 46, 91, 94, 98, 102, 108, 110, + 112, 123, 126, 48, 57, 60, 62, 65, + 90, 97, 122, 40, 41, 45, 46, 91, + 94, 98, 101, 102, 110, 112, 123, 126, + 48, 57, 60, 62, 65, 90, 97, 122, + 40, 41, 45, 46, 91, 94, 98, 102, + 110, 112, 114, 123, 126, 48, 57, 60, + 62, 65, 90, 97, 122, 115, 99, 114, + 105, 112, 116, 62, 110, 111, 116, 101, + 120, 116, 105, 108, 101, 62, 40, 41, + 45, 46, 91, 94, 98, 102, 110, 112, + 123, 126, 48, 57, 60, 62, 65, 90, + 97, 122, 35, 40, 41, 45, 46, 91, + 94, 123, 126, 60, 62, 35, 41, 41, + 41, 40, 46, 91, 123, 32, 46, 93, + 93, 125, 125, 40, 41, 45, 46, 91, + 94, 123, 126, 60, 62, 35, 41, 93, + 35, 41, 93, 41, 93, 41, 93, 40, + 46, 93, 123, 93, 125, 93, 125, 40, + 46, 91, 125, 35, 41, 125, 41, 125, + 41, 125, 41, 46, 91, 123, 41, 93, + 41, 125, 35, 41, 46, 91, 123, 35, + 41, 125, 93, 125, 40, 41, 45, 46, + 91, 94, 97, 98, 102, 110, 112, 123, + 126, 48, 57, 60, 62, 65, 90, 100, + 111, 114, 122, 40, 41, 45, 46, 91, + 94, 98, 102, 110, 112, 123, 126, 48, + 57, 60, 62, 65, 90, 97, 122, 40, + 41, 45, 46, 91, 94, 98, 102, 110, + 111, 112, 123, 126, 60, 62, 65, 90, + 97, 122, 40, 41, 45, 46, 91, 94, + 98, 102, 110, 111, 112, 123, 126, 48, + 57, 60, 62, 65, 90, 97, 122, 40, + 41, 45, 46, 91, 94, 98, 102, 110, + 112, 116, 123, 126, 48, 57, 60, 62, + 65, 90, 97, 122, 40, 41, 45, 46, + 91, 94, 98, 102, 110, 112, 114, 123, + 126, 48, 57, 60, 62, 65, 90, 97, + 122, 40, 41, 45, 46, 91, 94, 98, + 102, 110, 112, 123, 126, 48, 57, 60, + 62, 65, 90, 97, 100, 103, 122, 40, + 41, 45, 46, 91, 94, 98, 101, 102, + 110, 112, 123, 126, 48, 57, 60, 62, + 65, 90, 97, 122, 40, 41, 45, 46, + 91, 94, 98, 102, 110, 112, 120, 123, + 126, 48, 57, 60, 62, 65, 90, 97, + 122, 40, 41, 45, 46, 91, 94, 98, + 102, 110, 112, 116, 123, 126, 48, 57, + 60, 62, 65, 90, 97, 122, 40, 41, + 45, 46, 91, 94, 98, 102, 105, 110, + 112, 123, 126, 48, 57, 60, 62, 65, + 90, 97, 122, 40, 41, 45, 46, 91, + 94, 98, 102, 108, 110, 112, 123, 126, + 48, 57, 60, 62, 65, 90, 97, 122, + 40, 41, 45, 46, 91, 94, 98, 99, + 102, 110, 112, 113, 123, 126, 48, 57, + 60, 62, 65, 90, 97, 122, 40, 41, + 45, 46, 91, 94, 98, 102, 110, 111, + 112, 123, 126, 48, 57, 60, 62, 65, + 90, 97, 122, 40, 41, 45, 46, 91, + 94, 98, 102, 110, 112, 116, 123, 126, + 48, 57, 60, 62, 65, 90, 97, 122, + 40, 41, 45, 46, 91, 94, 98, 101, + 102, 110, 112, 123, 126, 48, 57, 60, + 62, 65, 90, 97, 122, 40, 41, 45, + 46, 91, 94, 98, 102, 110, 112, 120, + 123, 126, 48, 57, 60, 62, 65, 90, + 97, 122, 40, 41, 45, 46, 91, 94, + 98, 102, 110, 112, 116, 123, 126, 48, + 57, 60, 62, 65, 90, 97, 122, 40, + 41, 45, 46, 91, 94, 98, 102, 105, + 110, 112, 123, 126, 48, 57, 60, 62, + 65, 90, 97, 122, 40, 41, 45, 46, + 91, 94, 98, 102, 108, 110, 112, 123, + 126, 48, 57, 60, 62, 65, 90, 97, + 122, 40, 41, 45, 46, 91, 94, 98, + 101, 102, 110, 112, 123, 126, 48, 57, + 60, 62, 65, 90, 97, 122, 40, 41, + 45, 46, 91, 94, 98, 102, 110, 112, + 114, 123, 126, 48, 57, 60, 62, 65, + 90, 97, 122, 9, 32, 60, 47, 58, + 95, 97, 98, 99, 100, 101, 102, 105, + 107, 109, 110, 111, 112, 113, 115, 116, + 117, 118, 65, 90, 103, 122, 32, 62, + 63, 95, 9, 13, 45, 46, 48, 58, + 65, 90, 97, 122, 32, 62, 9, 13, + 63, 95, 98, 99, 112, 45, 46, 48, + 58, 65, 90, 97, 122, 32, 62, 63, + 95, 98, 9, 13, 45, 46, 48, 58, + 65, 90, 97, 122, 32, 62, 63, 95, + 114, 9, 13, 45, 46, 48, 58, 65, + 90, 97, 122, 63, 95, 45, 46, 48, + 58, 65, 90, 97, 122, 32, 62, 63, + 95, 114, 9, 13, 45, 46, 48, 58, + 65, 90, 97, 122, 32, 62, 63, 95, + 111, 9, 13, 45, 46, 48, 58, 65, + 90, 97, 122, 32, 62, 63, 95, 110, + 9, 13, 45, 46, 48, 58, 65, 90, + 97, 122, 32, 62, 63, 95, 121, 9, + 13, 45, 46, 48, 58, 65, 90, 97, + 122, 32, 62, 63, 95, 109, 9, 13, + 45, 46, 48, 58, 65, 90, 97, 122, + 32, 62, 63, 95, 112, 9, 13, 45, + 46, 48, 58, 65, 90, 97, 122, 32, + 62, 63, 95, 108, 9, 13, 45, 46, + 48, 58, 65, 90, 97, 122, 32, 62, + 63, 95, 101, 9, 13, 45, 46, 48, + 58, 65, 90, 97, 122, 32, 62, 63, + 95, 116, 9, 13, 45, 46, 48, 58, + 65, 90, 97, 122, 63, 95, 97, 100, + 105, 114, 45, 46, 48, 58, 65, 90, + 98, 122, 32, 62, 63, 95, 115, 9, + 13, 45, 46, 48, 58, 65, 90, 97, + 122, 32, 62, 63, 95, 101, 9, 13, + 45, 46, 48, 58, 65, 90, 97, 122, + 32, 62, 63, 95, 102, 9, 13, 45, + 46, 48, 58, 65, 90, 97, 122, 32, + 62, 63, 95, 111, 9, 13, 45, 46, + 48, 58, 65, 90, 97, 122, 32, 62, + 63, 95, 110, 9, 13, 45, 46, 48, + 58, 65, 90, 97, 122, 32, 62, 63, + 95, 111, 9, 13, 45, 46, 48, 58, + 65, 90, 97, 122, 32, 62, 63, 95, + 103, 9, 13, 45, 46, 48, 58, 65, + 90, 97, 122, 32, 62, 63, 95, 105, + 111, 9, 13, 45, 46, 48, 58, 65, + 90, 97, 122, 32, 62, 63, 95, 116, + 9, 13, 45, 46, 48, 58, 65, 90, + 97, 122, 32, 62, 63, 95, 101, 9, + 13, 45, 46, 48, 58, 65, 90, 97, + 122, 32, 62, 63, 95, 100, 9, 13, + 45, 46, 48, 58, 65, 90, 97, 122, + 32, 62, 63, 95, 101, 102, 9, 13, + 45, 46, 48, 58, 65, 90, 97, 122, + 32, 62, 63, 95, 108, 9, 13, 45, + 46, 48, 58, 65, 90, 97, 122, 32, + 62, 63, 95, 110, 9, 13, 45, 46, + 48, 58, 65, 90, 97, 122, 63, 95, + 102, 109, 110, 45, 46, 48, 58, 65, + 90, 97, 122, 32, 62, 63, 95, 114, + 9, 13, 45, 46, 48, 58, 65, 90, + 97, 122, 32, 62, 63, 95, 97, 9, + 13, 45, 46, 48, 58, 65, 90, 98, + 122, 32, 62, 63, 95, 109, 9, 13, + 45, 46, 48, 58, 65, 90, 97, 122, + 32, 62, 63, 95, 115, 9, 13, 45, + 46, 48, 58, 65, 90, 97, 122, 32, + 62, 63, 95, 98, 9, 13, 45, 46, + 48, 58, 65, 90, 97, 122, 32, 62, + 63, 95, 100, 9, 13, 45, 46, 48, + 58, 65, 90, 97, 122, 32, 62, 63, + 95, 97, 9, 13, 45, 46, 48, 58, + 65, 90, 98, 122, 32, 62, 63, 95, + 112, 9, 13, 45, 46, 48, 58, 65, + 90, 97, 122, 32, 62, 63, 95, 111, + 9, 13, 45, 46, 48, 58, 65, 90, + 97, 122, 32, 62, 63, 95, 116, 9, + 13, 45, 46, 48, 58, 65, 90, 97, + 122, 32, 62, 63, 95, 101, 9, 13, + 45, 46, 48, 58, 65, 90, 97, 122, + 32, 62, 63, 95, 120, 9, 13, 45, + 46, 48, 58, 65, 90, 97, 122, 32, + 62, 63, 95, 116, 9, 13, 45, 46, + 48, 58, 65, 90, 97, 122, 32, 62, + 63, 95, 105, 9, 13, 45, 46, 48, + 58, 65, 90, 97, 122, 32, 62, 63, + 95, 108, 9, 13, 45, 46, 48, 58, + 65, 90, 97, 122, 32, 62, 63, 95, + 98, 9, 13, 45, 46, 48, 58, 65, + 90, 97, 122, 32, 62, 63, 95, 106, + 9, 13, 45, 46, 48, 58, 65, 90, + 97, 122, 32, 62, 63, 95, 101, 9, + 13, 45, 46, 48, 58, 65, 90, 97, + 122, 32, 62, 63, 95, 99, 9, 13, + 45, 46, 48, 58, 65, 90, 97, 122, + 32, 62, 63, 95, 97, 114, 9, 13, + 45, 46, 48, 58, 65, 90, 98, 122, + 32, 62, 63, 95, 114, 9, 13, 45, + 46, 48, 58, 65, 90, 97, 122, 32, + 62, 63, 95, 97, 9, 13, 45, 46, + 48, 58, 65, 90, 98, 122, 63, 95, + 97, 99, 109, 112, 116, 117, 45, 46, + 48, 58, 65, 90, 98, 122, 32, 62, + 63, 95, 109, 9, 13, 45, 46, 48, + 58, 65, 90, 97, 122, 32, 62, 63, + 95, 114, 9, 13, 45, 46, 48, 58, + 65, 90, 97, 122, 32, 62, 63, 95, + 105, 9, 13, 45, 46, 48, 58, 65, + 90, 97, 122, 32, 62, 63, 95, 112, + 9, 13, 45, 46, 48, 58, 65, 90, + 97, 122, 32, 62, 63, 95, 97, 9, + 13, 45, 46, 48, 58, 65, 90, 98, + 122, 32, 62, 63, 95, 108, 9, 13, + 45, 46, 48, 58, 65, 90, 97, 122, + 32, 62, 63, 95, 97, 9, 13, 45, + 46, 48, 58, 65, 90, 98, 122, 32, + 62, 63, 95, 114, 9, 13, 45, 46, + 48, 58, 65, 90, 97, 122, 32, 62, + 63, 95, 105, 111, 9, 13, 45, 46, + 48, 58, 65, 90, 97, 122, 32, 62, + 63, 95, 107, 9, 13, 45, 46, 48, + 58, 65, 90, 97, 122, 32, 62, 63, + 95, 110, 9, 13, 45, 46, 48, 58, + 65, 90, 97, 122, 32, 62, 63, 95, + 98, 112, 9, 13, 45, 46, 48, 58, + 65, 90, 97, 122, 32, 62, 63, 95, + 97, 9, 13, 45, 46, 48, 58, 65, + 90, 98, 122, 40, 41, 45, 46, 91, + 94, 98, 102, 110, 112, 123, 126, 48, + 57, 60, 62, 65, 90, 97, 122, 35, + 40, 41, 45, 46, 91, 94, 123, 126, + 60, 62, 35, 41, 41, 41, 40, 46, + 91, 123, 32, 46, 93, 93, 125, 125, + 40, 41, 45, 46, 91, 94, 123, 126, + 60, 62, 35, 41, 93, 35, 41, 93, + 41, 93, 41, 93, 40, 46, 93, 123, + 93, 125, 93, 125, 40, 46, 91, 125, + 35, 41, 125, 41, 125, 41, 125, 41, + 46, 91, 123, 41, 93, 41, 125, 35, + 41, 46, 91, 123, 35, 41, 125, 93, + 125, 40, 41, 45, 46, 91, 94, 97, + 98, 102, 110, 112, 123, 126, 48, 57, + 60, 62, 65, 90, 100, 111, 114, 122, + 40, 41, 45, 46, 91, 94, 98, 102, + 110, 112, 123, 126, 48, 57, 60, 62, + 65, 90, 97, 122, 40, 41, 45, 46, + 91, 94, 98, 102, 110, 111, 112, 123, + 126, 60, 62, 65, 90, 97, 122, 40, + 41, 45, 46, 91, 94, 98, 102, 110, + 111, 112, 123, 126, 48, 57, 60, 62, + 65, 90, 97, 122, 40, 41, 45, 46, + 91, 94, 98, 102, 110, 112, 116, 123, + 126, 48, 57, 60, 62, 65, 90, 97, + 122, 40, 41, 45, 46, 91, 94, 98, + 102, 110, 112, 114, 123, 126, 48, 57, + 60, 62, 65, 90, 97, 122, 40, 41, + 45, 46, 91, 94, 98, 102, 110, 112, + 123, 126, 48, 57, 60, 62, 65, 90, + 97, 100, 103, 122, 40, 41, 45, 46, + 91, 94, 98, 101, 102, 110, 112, 123, + 126, 48, 57, 60, 62, 65, 90, 97, + 122, 40, 41, 45, 46, 91, 94, 98, + 102, 110, 112, 120, 123, 126, 48, 57, + 60, 62, 65, 90, 97, 122, 40, 41, + 45, 46, 91, 94, 98, 102, 110, 112, + 116, 123, 126, 48, 57, 60, 62, 65, + 90, 97, 122, 40, 41, 45, 46, 91, + 94, 98, 102, 105, 110, 112, 123, 126, + 48, 57, 60, 62, 65, 90, 97, 122, + 40, 41, 45, 46, 91, 94, 98, 102, + 108, 110, 112, 123, 126, 48, 57, 60, + 62, 65, 90, 97, 122, 40, 41, 45, + 46, 91, 94, 98, 99, 102, 110, 112, + 113, 123, 126, 48, 57, 60, 62, 65, + 90, 97, 122, 40, 41, 45, 46, 91, + 94, 98, 102, 110, 111, 112, 123, 126, + 48, 57, 60, 62, 65, 90, 97, 122, + 40, 41, 45, 46, 91, 94, 98, 102, + 110, 112, 116, 123, 126, 48, 57, 60, + 62, 65, 90, 97, 122, 40, 41, 45, + 46, 91, 94, 98, 101, 102, 110, 112, + 123, 126, 48, 57, 60, 62, 65, 90, + 97, 122, 40, 41, 45, 46, 91, 94, + 98, 102, 110, 112, 120, 123, 126, 48, + 57, 60, 62, 65, 90, 97, 122, 40, + 41, 45, 46, 91, 94, 98, 102, 110, + 112, 116, 123, 126, 48, 57, 60, 62, + 65, 90, 97, 122, 40, 41, 45, 46, + 91, 94, 98, 102, 105, 110, 112, 123, + 126, 48, 57, 60, 62, 65, 90, 97, + 122, 40, 41, 45, 46, 91, 94, 98, + 102, 108, 110, 112, 123, 126, 48, 57, + 60, 62, 65, 90, 97, 122, 40, 41, + 45, 46, 91, 94, 98, 101, 102, 110, + 112, 123, 126, 48, 57, 60, 62, 65, + 90, 97, 122, 40, 41, 45, 46, 91, + 94, 98, 102, 110, 112, 114, 123, 126, + 48, 57, 60, 62, 65, 90, 97, 122, + 9, 32, 60, 47, 58, 95, 97, 98, + 99, 100, 101, 102, 105, 107, 109, 110, + 111, 112, 113, 115, 116, 117, 118, 65, + 90, 103, 122, 32, 62, 63, 95, 9, + 13, 45, 46, 48, 58, 65, 90, 97, + 122, 32, 62, 9, 13, 63, 95, 98, + 99, 112, 45, 46, 48, 58, 65, 90, + 97, 122, 32, 62, 63, 95, 98, 9, + 13, 45, 46, 48, 58, 65, 90, 97, + 122, 32, 62, 63, 95, 114, 9, 13, + 45, 46, 48, 58, 65, 90, 97, 122, + 63, 95, 45, 46, 48, 58, 65, 90, + 97, 122, 32, 62, 63, 95, 114, 9, + 13, 45, 46, 48, 58, 65, 90, 97, + 122, 32, 62, 63, 95, 111, 9, 13, + 45, 46, 48, 58, 65, 90, 97, 122, + 32, 62, 63, 95, 110, 9, 13, 45, + 46, 48, 58, 65, 90, 97, 122, 32, + 62, 63, 95, 121, 9, 13, 45, 46, + 48, 58, 65, 90, 97, 122, 32, 62, + 63, 95, 109, 9, 13, 45, 46, 48, + 58, 65, 90, 97, 122, 32, 62, 63, + 95, 112, 9, 13, 45, 46, 48, 58, + 65, 90, 97, 122, 32, 62, 63, 95, + 108, 9, 13, 45, 46, 48, 58, 65, + 90, 97, 122, 32, 62, 63, 95, 101, + 9, 13, 45, 46, 48, 58, 65, 90, + 97, 122, 32, 62, 63, 95, 116, 9, + 13, 45, 46, 48, 58, 65, 90, 97, + 122, 63, 95, 97, 100, 105, 114, 45, + 46, 48, 58, 65, 90, 98, 122, 32, + 62, 63, 95, 115, 9, 13, 45, 46, + 48, 58, 65, 90, 97, 122, 32, 62, + 63, 95, 101, 9, 13, 45, 46, 48, + 58, 65, 90, 97, 122, 32, 62, 63, + 95, 102, 9, 13, 45, 46, 48, 58, + 65, 90, 97, 122, 32, 62, 63, 95, + 111, 9, 13, 45, 46, 48, 58, 65, + 90, 97, 122, 32, 62, 63, 95, 110, + 9, 13, 45, 46, 48, 58, 65, 90, + 97, 122, 32, 62, 63, 95, 111, 9, + 13, 45, 46, 48, 58, 65, 90, 97, + 122, 32, 62, 63, 95, 103, 9, 13, + 45, 46, 48, 58, 65, 90, 97, 122, + 32, 62, 63, 95, 105, 111, 9, 13, + 45, 46, 48, 58, 65, 90, 97, 122, + 32, 62, 63, 95, 116, 9, 13, 45, + 46, 48, 58, 65, 90, 97, 122, 32, + 62, 63, 95, 101, 9, 13, 45, 46, + 48, 58, 65, 90, 97, 122, 32, 62, + 63, 95, 100, 9, 13, 45, 46, 48, + 58, 65, 90, 97, 122, 32, 62, 63, + 95, 101, 102, 9, 13, 45, 46, 48, + 58, 65, 90, 97, 122, 32, 62, 63, + 95, 108, 9, 13, 45, 46, 48, 58, + 65, 90, 97, 122, 32, 62, 63, 95, + 110, 9, 13, 45, 46, 48, 58, 65, + 90, 97, 122, 63, 95, 102, 109, 110, + 45, 46, 48, 58, 65, 90, 97, 122, + 32, 62, 63, 95, 114, 9, 13, 45, + 46, 48, 58, 65, 90, 97, 122, 32, + 62, 63, 95, 97, 9, 13, 45, 46, + 48, 58, 65, 90, 98, 122, 32, 62, + 63, 95, 109, 9, 13, 45, 46, 48, + 58, 65, 90, 97, 122, 32, 62, 63, + 95, 115, 9, 13, 45, 46, 48, 58, + 65, 90, 97, 122, 32, 62, 63, 95, + 98, 9, 13, 45, 46, 48, 58, 65, + 90, 97, 122, 32, 62, 63, 95, 100, + 9, 13, 45, 46, 48, 58, 65, 90, + 97, 122, 32, 62, 63, 95, 97, 9, + 13, 45, 46, 48, 58, 65, 90, 98, + 122, 32, 62, 63, 95, 112, 9, 13, + 45, 46, 48, 58, 65, 90, 97, 122, + 32, 62, 63, 95, 111, 9, 13, 45, + 46, 48, 58, 65, 90, 97, 122, 32, + 62, 63, 95, 116, 9, 13, 45, 46, + 48, 58, 65, 90, 97, 122, 32, 62, + 63, 95, 101, 9, 13, 45, 46, 48, + 58, 65, 90, 97, 122, 32, 62, 63, + 95, 120, 9, 13, 45, 46, 48, 58, + 65, 90, 97, 122, 32, 62, 63, 95, + 116, 9, 13, 45, 46, 48, 58, 65, + 90, 97, 122, 32, 62, 63, 95, 105, + 9, 13, 45, 46, 48, 58, 65, 90, + 97, 122, 32, 62, 63, 95, 108, 9, + 13, 45, 46, 48, 58, 65, 90, 97, + 122, 32, 62, 63, 95, 98, 9, 13, + 45, 46, 48, 58, 65, 90, 97, 122, + 32, 62, 63, 95, 106, 9, 13, 45, + 46, 48, 58, 65, 90, 97, 122, 32, + 62, 63, 95, 101, 9, 13, 45, 46, + 48, 58, 65, 90, 97, 122, 32, 62, + 63, 95, 99, 9, 13, 45, 46, 48, + 58, 65, 90, 97, 122, 32, 62, 63, + 95, 97, 114, 9, 13, 45, 46, 48, + 58, 65, 90, 98, 122, 32, 62, 63, + 95, 114, 9, 13, 45, 46, 48, 58, + 65, 90, 97, 122, 32, 62, 63, 95, + 97, 9, 13, 45, 46, 48, 58, 65, + 90, 98, 122, 63, 95, 97, 99, 109, + 112, 116, 117, 45, 46, 48, 58, 65, + 90, 98, 122, 32, 62, 63, 95, 109, + 9, 13, 45, 46, 48, 58, 65, 90, + 97, 122, 32, 62, 63, 95, 114, 9, + 13, 45, 46, 48, 58, 65, 90, 97, + 122, 32, 62, 63, 95, 105, 9, 13, + 45, 46, 48, 58, 65, 90, 97, 122, + 32, 62, 63, 95, 112, 9, 13, 45, + 46, 48, 58, 65, 90, 97, 122, 32, + 62, 63, 95, 97, 9, 13, 45, 46, + 48, 58, 65, 90, 98, 122, 32, 62, + 63, 95, 108, 9, 13, 45, 46, 48, + 58, 65, 90, 97, 122, 32, 62, 63, + 95, 97, 9, 13, 45, 46, 48, 58, + 65, 90, 98, 122, 32, 62, 63, 95, + 114, 9, 13, 45, 46, 48, 58, 65, + 90, 97, 122, 32, 62, 63, 95, 105, + 111, 9, 13, 45, 46, 48, 58, 65, + 90, 97, 122, 32, 62, 63, 95, 107, + 9, 13, 45, 46, 48, 58, 65, 90, + 97, 122, 32, 62, 63, 95, 110, 9, + 13, 45, 46, 48, 58, 65, 90, 97, + 122, 32, 62, 63, 95, 98, 112, 9, + 13, 45, 46, 48, 58, 65, 90, 97, + 122, 32, 62, 63, 95, 97, 9, 13, + 45, 46, 48, 58, 65, 90, 98, 122, + 40, 41, 45, 46, 91, 94, 98, 102, + 110, 112, 123, 126, 48, 57, 60, 62, + 65, 90, 97, 122, 35, 40, 41, 45, + 46, 91, 94, 123, 126, 60, 62, 35, + 41, 41, 41, 40, 46, 91, 123, 32, + 46, 93, 93, 125, 125, 40, 41, 45, + 46, 91, 94, 123, 126, 60, 62, 35, + 41, 93, 35, 41, 93, 41, 93, 41, + 93, 40, 46, 93, 123, 93, 125, 93, + 125, 40, 46, 91, 125, 35, 41, 125, + 41, 125, 41, 125, 41, 46, 91, 123, + 41, 93, 41, 125, 35, 41, 46, 91, + 123, 35, 41, 125, 93, 125, 40, 41, + 45, 46, 91, 94, 97, 98, 102, 110, + 112, 123, 126, 48, 57, 60, 62, 65, + 90, 100, 111, 114, 122, 40, 41, 45, + 46, 91, 94, 98, 102, 110, 112, 123, + 126, 48, 57, 60, 62, 65, 90, 97, + 122, 40, 41, 45, 46, 91, 94, 98, + 102, 110, 111, 112, 123, 126, 60, 62, + 65, 90, 97, 122, 40, 41, 45, 46, + 91, 94, 98, 102, 110, 111, 112, 123, + 126, 48, 57, 60, 62, 65, 90, 97, + 122, 40, 41, 45, 46, 91, 94, 98, + 102, 110, 112, 116, 123, 126, 48, 57, + 60, 62, 65, 90, 97, 122, 40, 41, + 45, 46, 91, 94, 98, 102, 110, 112, + 114, 123, 126, 48, 57, 60, 62, 65, + 90, 97, 122, 40, 41, 45, 46, 91, + 94, 98, 102, 110, 112, 123, 126, 48, + 57, 60, 62, 65, 90, 97, 100, 103, + 122, 40, 41, 45, 46, 91, 94, 98, + 101, 102, 110, 112, 123, 126, 48, 57, + 60, 62, 65, 90, 97, 122, 40, 41, + 45, 46, 91, 94, 98, 102, 110, 112, + 120, 123, 126, 48, 57, 60, 62, 65, + 90, 97, 122, 40, 41, 45, 46, 91, + 94, 98, 102, 110, 112, 116, 123, 126, + 48, 57, 60, 62, 65, 90, 97, 122, + 40, 41, 45, 46, 91, 94, 98, 102, + 105, 110, 112, 123, 126, 48, 57, 60, + 62, 65, 90, 97, 122, 40, 41, 45, + 46, 91, 94, 98, 102, 108, 110, 112, + 123, 126, 48, 57, 60, 62, 65, 90, + 97, 122, 40, 41, 45, 46, 91, 94, + 98, 99, 102, 110, 112, 113, 123, 126, + 48, 57, 60, 62, 65, 90, 97, 122, + 40, 41, 45, 46, 91, 94, 98, 102, + 110, 111, 112, 123, 126, 48, 57, 60, + 62, 65, 90, 97, 122, 40, 41, 45, + 46, 91, 94, 98, 102, 110, 112, 116, + 123, 126, 48, 57, 60, 62, 65, 90, + 97, 122, 40, 41, 45, 46, 91, 94, + 98, 101, 102, 110, 112, 123, 126, 48, + 57, 60, 62, 65, 90, 97, 122, 40, + 41, 45, 46, 91, 94, 98, 102, 110, + 112, 120, 123, 126, 48, 57, 60, 62, + 65, 90, 97, 122, 40, 41, 45, 46, + 91, 94, 98, 102, 110, 112, 116, 123, + 126, 48, 57, 60, 62, 65, 90, 97, + 122, 40, 41, 45, 46, 91, 94, 98, + 102, 105, 110, 112, 123, 126, 48, 57, + 60, 62, 65, 90, 97, 122, 40, 41, + 45, 46, 91, 94, 98, 102, 108, 110, + 112, 123, 126, 48, 57, 60, 62, 65, + 90, 97, 122, 40, 41, 45, 46, 91, + 94, 98, 101, 102, 110, 112, 123, 126, + 48, 57, 60, 62, 65, 90, 97, 122, + 40, 41, 45, 46, 91, 94, 98, 102, + 110, 112, 114, 123, 126, 48, 57, 60, + 62, 65, 90, 97, 122, 9, 32, 60, + 47, 58, 95, 97, 98, 99, 100, 101, + 102, 105, 107, 109, 110, 111, 112, 113, + 115, 116, 117, 118, 65, 90, 103, 122, + 32, 62, 63, 95, 9, 13, 45, 46, + 48, 58, 65, 90, 97, 122, 32, 62, + 9, 13, 63, 95, 98, 99, 112, 45, + 46, 48, 58, 65, 90, 97, 122, 32, + 62, 63, 95, 98, 9, 13, 45, 46, + 48, 58, 65, 90, 97, 122, 32, 62, + 63, 95, 114, 9, 13, 45, 46, 48, + 58, 65, 90, 97, 122, 63, 95, 45, + 46, 48, 58, 65, 90, 97, 122, 32, + 62, 63, 95, 114, 9, 13, 45, 46, + 48, 58, 65, 90, 97, 122, 32, 62, + 63, 95, 111, 9, 13, 45, 46, 48, + 58, 65, 90, 97, 122, 32, 62, 63, + 95, 110, 9, 13, 45, 46, 48, 58, + 65, 90, 97, 122, 32, 62, 63, 95, + 121, 9, 13, 45, 46, 48, 58, 65, + 90, 97, 122, 32, 62, 63, 95, 109, + 9, 13, 45, 46, 48, 58, 65, 90, + 97, 122, 32, 62, 63, 95, 112, 9, + 13, 45, 46, 48, 58, 65, 90, 97, + 122, 32, 62, 63, 95, 108, 9, 13, + 45, 46, 48, 58, 65, 90, 97, 122, + 32, 62, 63, 95, 101, 9, 13, 45, + 46, 48, 58, 65, 90, 97, 122, 32, + 62, 63, 95, 116, 9, 13, 45, 46, + 48, 58, 65, 90, 97, 122, 63, 95, + 97, 100, 105, 114, 45, 46, 48, 58, + 65, 90, 98, 122, 32, 62, 63, 95, + 115, 9, 13, 45, 46, 48, 58, 65, + 90, 97, 122, 32, 62, 63, 95, 101, + 9, 13, 45, 46, 48, 58, 65, 90, + 97, 122, 32, 62, 63, 95, 102, 9, + 13, 45, 46, 48, 58, 65, 90, 97, + 122, 32, 62, 63, 95, 111, 9, 13, + 45, 46, 48, 58, 65, 90, 97, 122, + 32, 62, 63, 95, 110, 9, 13, 45, + 46, 48, 58, 65, 90, 97, 122, 32, + 62, 63, 95, 111, 9, 13, 45, 46, + 48, 58, 65, 90, 97, 122, 32, 62, + 63, 95, 103, 9, 13, 45, 46, 48, + 58, 65, 90, 97, 122, 32, 62, 63, + 95, 105, 111, 9, 13, 45, 46, 48, + 58, 65, 90, 97, 122, 32, 62, 63, + 95, 116, 9, 13, 45, 46, 48, 58, + 65, 90, 97, 122, 32, 62, 63, 95, + 101, 9, 13, 45, 46, 48, 58, 65, + 90, 97, 122, 32, 62, 63, 95, 100, + 9, 13, 45, 46, 48, 58, 65, 90, + 97, 122, 32, 62, 63, 95, 101, 102, + 9, 13, 45, 46, 48, 58, 65, 90, + 97, 122, 32, 62, 63, 95, 108, 9, + 13, 45, 46, 48, 58, 65, 90, 97, + 122, 32, 62, 63, 95, 110, 9, 13, + 45, 46, 48, 58, 65, 90, 97, 122, + 63, 95, 102, 109, 110, 45, 46, 48, + 58, 65, 90, 97, 122, 32, 62, 63, + 95, 114, 9, 13, 45, 46, 48, 58, + 65, 90, 97, 122, 32, 62, 63, 95, + 97, 9, 13, 45, 46, 48, 58, 65, + 90, 98, 122, 32, 62, 63, 95, 109, + 9, 13, 45, 46, 48, 58, 65, 90, + 97, 122, 32, 62, 63, 95, 115, 9, + 13, 45, 46, 48, 58, 65, 90, 97, + 122, 32, 62, 63, 95, 98, 9, 13, + 45, 46, 48, 58, 65, 90, 97, 122, + 32, 62, 63, 95, 100, 9, 13, 45, + 46, 48, 58, 65, 90, 97, 122, 32, + 62, 63, 95, 97, 9, 13, 45, 46, + 48, 58, 65, 90, 98, 122, 32, 62, + 63, 95, 112, 9, 13, 45, 46, 48, + 58, 65, 90, 97, 122, 32, 62, 63, + 95, 111, 9, 13, 45, 46, 48, 58, + 65, 90, 97, 122, 32, 62, 63, 95, + 116, 9, 13, 45, 46, 48, 58, 65, + 90, 97, 122, 32, 62, 63, 95, 101, + 9, 13, 45, 46, 48, 58, 65, 90, + 97, 122, 32, 62, 63, 95, 120, 9, + 13, 45, 46, 48, 58, 65, 90, 97, + 122, 32, 62, 63, 95, 116, 9, 13, + 45, 46, 48, 58, 65, 90, 97, 122, + 32, 62, 63, 95, 105, 9, 13, 45, + 46, 48, 58, 65, 90, 97, 122, 32, + 62, 63, 95, 108, 9, 13, 45, 46, + 48, 58, 65, 90, 97, 122, 32, 62, + 63, 95, 98, 9, 13, 45, 46, 48, + 58, 65, 90, 97, 122, 32, 62, 63, + 95, 106, 9, 13, 45, 46, 48, 58, + 65, 90, 97, 122, 32, 62, 63, 95, + 101, 9, 13, 45, 46, 48, 58, 65, + 90, 97, 122, 32, 62, 63, 95, 99, + 9, 13, 45, 46, 48, 58, 65, 90, + 97, 122, 32, 62, 63, 95, 97, 114, + 9, 13, 45, 46, 48, 58, 65, 90, + 98, 122, 32, 62, 63, 95, 114, 9, + 13, 45, 46, 48, 58, 65, 90, 97, + 122, 32, 62, 63, 95, 97, 9, 13, + 45, 46, 48, 58, 65, 90, 98, 122, + 63, 95, 97, 99, 109, 112, 116, 117, + 45, 46, 48, 58, 65, 90, 98, 122, + 32, 62, 63, 95, 109, 9, 13, 45, + 46, 48, 58, 65, 90, 97, 122, 32, + 62, 63, 95, 114, 9, 13, 45, 46, + 48, 58, 65, 90, 97, 122, 32, 62, + 63, 95, 105, 9, 13, 45, 46, 48, + 58, 65, 90, 97, 122, 32, 62, 63, + 95, 112, 9, 13, 45, 46, 48, 58, + 65, 90, 97, 122, 32, 62, 63, 95, + 97, 9, 13, 45, 46, 48, 58, 65, + 90, 98, 122, 32, 62, 63, 95, 108, + 9, 13, 45, 46, 48, 58, 65, 90, + 97, 122, 32, 62, 63, 95, 97, 9, + 13, 45, 46, 48, 58, 65, 90, 98, + 122, 32, 62, 63, 95, 114, 9, 13, + 45, 46, 48, 58, 65, 90, 97, 122, + 32, 62, 63, 95, 105, 111, 9, 13, + 45, 46, 48, 58, 65, 90, 97, 122, + 32, 62, 63, 95, 107, 9, 13, 45, + 46, 48, 58, 65, 90, 97, 122, 32, + 62, 63, 95, 110, 9, 13, 45, 46, + 48, 58, 65, 90, 97, 122, 32, 62, + 63, 95, 98, 112, 9, 13, 45, 46, + 48, 58, 65, 90, 97, 122, 32, 62, + 63, 95, 97, 9, 13, 45, 46, 48, + 58, 65, 90, 98, 122, 40, 41, 45, + 46, 91, 94, 98, 102, 110, 112, 123, + 126, 48, 57, 60, 62, 65, 90, 97, + 122, 35, 40, 41, 45, 46, 91, 94, + 123, 126, 60, 62, 35, 41, 41, 41, + 40, 46, 91, 123, 32, 46, 93, 93, + 125, 125, 40, 41, 45, 46, 91, 94, + 123, 126, 60, 62, 35, 41, 93, 35, + 41, 93, 41, 93, 41, 93, 40, 46, + 93, 123, 93, 125, 93, 125, 40, 46, + 91, 125, 35, 41, 125, 41, 125, 41, + 125, 41, 46, 91, 123, 41, 93, 41, + 125, 35, 41, 46, 91, 123, 35, 41, + 125, 93, 125, 40, 41, 45, 46, 91, + 94, 97, 98, 102, 110, 112, 123, 126, + 48, 57, 60, 62, 65, 90, 100, 111, + 114, 122, 40, 41, 45, 46, 91, 94, + 98, 102, 110, 112, 123, 126, 48, 57, + 60, 62, 65, 90, 97, 122, 40, 41, + 45, 46, 91, 94, 98, 102, 110, 111, + 112, 123, 126, 60, 62, 65, 90, 97, + 122, 40, 41, 45, 46, 91, 94, 98, + 102, 110, 111, 112, 123, 126, 48, 57, + 60, 62, 65, 90, 97, 122, 40, 41, + 45, 46, 91, 94, 98, 102, 110, 112, + 116, 123, 126, 48, 57, 60, 62, 65, + 90, 97, 122, 40, 41, 45, 46, 91, + 94, 98, 102, 110, 112, 114, 123, 126, + 48, 57, 60, 62, 65, 90, 97, 122, + 40, 41, 45, 46, 91, 94, 98, 102, + 110, 112, 123, 126, 48, 57, 60, 62, + 65, 90, 97, 100, 103, 122, 40, 41, + 45, 46, 91, 94, 98, 101, 102, 110, + 112, 123, 126, 48, 57, 60, 62, 65, + 90, 97, 122, 40, 41, 45, 46, 91, + 94, 98, 102, 110, 112, 120, 123, 126, + 48, 57, 60, 62, 65, 90, 97, 122, + 40, 41, 45, 46, 91, 94, 98, 102, + 110, 112, 116, 123, 126, 48, 57, 60, + 62, 65, 90, 97, 122, 40, 41, 45, + 46, 91, 94, 98, 102, 105, 110, 112, + 123, 126, 48, 57, 60, 62, 65, 90, + 97, 122, 40, 41, 45, 46, 91, 94, + 98, 102, 108, 110, 112, 123, 126, 48, + 57, 60, 62, 65, 90, 97, 122, 40, + 41, 45, 46, 91, 94, 98, 99, 102, + 110, 112, 113, 123, 126, 48, 57, 60, + 62, 65, 90, 97, 122, 40, 41, 45, + 46, 91, 94, 98, 102, 110, 111, 112, + 123, 126, 48, 57, 60, 62, 65, 90, + 97, 122, 40, 41, 45, 46, 91, 94, + 98, 102, 110, 112, 116, 123, 126, 48, + 57, 60, 62, 65, 90, 97, 122, 40, + 41, 45, 46, 91, 94, 98, 101, 102, + 110, 112, 123, 126, 48, 57, 60, 62, + 65, 90, 97, 122, 40, 41, 45, 46, + 91, 94, 98, 102, 110, 112, 120, 123, + 126, 48, 57, 60, 62, 65, 90, 97, + 122, 40, 41, 45, 46, 91, 94, 98, + 102, 110, 112, 116, 123, 126, 48, 57, + 60, 62, 65, 90, 97, 122, 40, 41, + 45, 46, 91, 94, 98, 102, 105, 110, + 112, 123, 126, 48, 57, 60, 62, 65, + 90, 97, 122, 40, 41, 45, 46, 91, + 94, 98, 102, 108, 110, 112, 123, 126, + 48, 57, 60, 62, 65, 90, 97, 122, + 40, 41, 45, 46, 91, 94, 98, 101, + 102, 110, 112, 123, 126, 48, 57, 60, + 62, 65, 90, 97, 122, 40, 41, 45, + 46, 91, 94, 98, 102, 110, 112, 114, + 123, 126, 48, 57, 60, 62, 65, 90, + 97, 122, 32, 35, 40, 41, 42, 45, + 60, 61, 62, 91, 94, 95, 123, 126, + 48, 57, 32, 35, 40, 41, 45, 60, + 61, 62, 91, 94, 123, 126, 35, 41, + 41, 41, 32, 40, 91, 123, 35, 41, + 93, 93, 125, 125, 32, 35, 40, 41, + 45, 60, 61, 62, 91, 94, 123, 126, + 32, 40, 41, 45, 60, 61, 62, 91, + 94, 123, 126, 32, 40, 41, 45, 60, + 61, 62, 91, 94, 123, 126, 32, 40, + 41, 45, 60, 61, 62, 91, 94, 123, + 126, 32, 40, 41, 45, 60, 61, 62, + 91, 94, 123, 126, 32, 40, 41, 45, + 60, 61, 62, 91, 94, 123, 126, 32, + 40, 41, 45, 60, 61, 62, 91, 94, + 123, 126, 32, 40, 41, 45, 60, 61, + 62, 91, 94, 123, 126, 32, 40, 41, + 45, 60, 61, 62, 91, 94, 123, 126, + 32, 35, 40, 41, 45, 60, 61, 62, + 91, 94, 123, 126, 32, 35, 40, 41, + 45, 60, 61, 62, 91, 94, 123, 126, + 32, 35, 40, 41, 45, 60, 61, 62, + 91, 94, 123, 126, 32, 35, 40, 41, + 45, 60, 61, 62, 91, 94, 123, 126, + 35, 41, 93, 35, 41, 93, 41, 93, + 41, 93, 32, 40, 91, 93, 123, 35, + 41, 93, 32, 35, 40, 41, 91, 123, + 35, 41, 35, 41, 125, 35, 41, 125, + 41, 125, 41, 125, 32, 40, 91, 123, + 125, 35, 41, 125, 93, 125, 93, 125, + 125, 32, 40, 41, 91, 123, 35, 41, + 35, 41, 41, 41, 93, 41, 125, 93, + 93, 125, 32, 35, 40, 41, 45, 60, + 61, 62, 91, 94, 123, 126, 32, 35, + 40, 41, 45, 60, 61, 62, 91, 94, + 123, 126, 32, 35, 40, 41, 45, 60, + 61, 62, 91, 94, 123, 126, 32, 35, + 40, 41, 42, 45, 60, 61, 62, 91, + 94, 95, 123, 126, 48, 57, 32, 40, + 41, 45, 60, 61, 62, 91, 94, 123, + 126, 48, 57, 32, 40, 41, 45, 60, + 61, 62, 91, 94, 123, 126, 32, 35, + 40, 41, 42, 45, 60, 61, 62, 91, + 94, 95, 123, 126, 48, 57, 32, 35, + 40, 41, 45, 60, 61, 62, 91, 94, + 123, 126, 35, 41, 41, 41, 32, 40, + 91, 123, 35, 41, 93, 93, 125, 125, + 32, 35, 40, 41, 45, 60, 61, 62, + 91, 94, 123, 126, 32, 40, 41, 45, + 60, 61, 62, 91, 94, 123, 126, 32, + 40, 41, 45, 60, 61, 62, 91, 94, + 123, 126, 32, 40, 41, 45, 60, 61, + 62, 91, 94, 123, 126, 32, 40, 41, + 45, 60, 61, 62, 91, 94, 123, 126, + 32, 40, 41, 45, 60, 61, 62, 91, + 94, 123, 126, 32, 40, 41, 45, 60, + 61, 62, 91, 94, 123, 126, 32, 40, + 41, 45, 60, 61, 62, 91, 94, 123, + 126, 32, 40, 41, 45, 60, 61, 62, + 91, 94, 123, 126, 32, 35, 40, 41, + 45, 60, 61, 62, 91, 94, 123, 126, + 32, 35, 40, 41, 45, 60, 61, 62, + 91, 94, 123, 126, 32, 35, 40, 41, + 45, 60, 61, 62, 91, 94, 123, 126, + 32, 35, 40, 41, 45, 60, 61, 62, + 91, 94, 123, 126, 35, 41, 93, 35, + 41, 93, 41, 93, 41, 93, 32, 40, + 91, 93, 123, 35, 41, 93, 32, 35, + 40, 41, 91, 123, 35, 41, 35, 41, + 125, 35, 41, 125, 41, 125, 41, 125, + 32, 40, 91, 123, 125, 35, 41, 125, + 93, 125, 93, 125, 125, 32, 40, 41, + 91, 123, 35, 41, 35, 41, 41, 41, + 93, 41, 125, 93, 93, 125, 32, 35, + 40, 41, 45, 60, 61, 62, 91, 94, + 123, 126, 32, 35, 40, 41, 45, 60, + 61, 62, 91, 94, 123, 126, 32, 35, + 40, 41, 45, 60, 61, 62, 91, 94, + 123, 126, 32, 35, 40, 41, 42, 45, + 60, 61, 62, 91, 94, 95, 123, 126, + 48, 57, 32, 40, 41, 45, 60, 61, + 62, 91, 94, 123, 126, 48, 57, 32, + 40, 41, 45, 60, 61, 62, 91, 94, + 123, 126, 32, 61, 58, 61, 10, 32, + 0, 9, 10, 32, 33, 35, 40, 41, + 42, 45, 46, 60, 61, 62, 82, 91, + 94, 98, 102, 110, 112, 116, 123, 124, + 126, 65, 90, 97, 122, 9, 32, 60, + 10, 10, 34, 10, 39, 9, 10, 32, + 39, 9, 10, 32, 39, 10, 34, 39, + 9, 10, 32, 34, 39, 9, 10, 32, + 34, 39, 9, 10, 32, 34, 9, 10, + 32, 34, 9, 10, 32, 9, 10, 32, + 9, 32, 60, 60, 62, 32, 35, 40, + 41, 42, 45, 60, 61, 62, 91, 94, + 95, 123, 126, 48, 57, 32, 35, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 123, 126, 0, 10, 40, 41, 45, 46, + 47, 60, 61, 62, 91, 92, 94, 95, + 123, 126, 0, 10, 40, 41, 45, 46, + 47, 60, 61, 62, 91, 92, 94, 95, + 123, 126, 40, 41, 45, 46, 60, 61, + 62, 91, 94, 123, 126, 32, 35, 40, + 41, 42, 45, 60, 61, 62, 91, 94, + 95, 123, 126, 48, 57, 32, 40, 41, + 45, 46, 60, 61, 62, 91, 94, 123, + 126, 0, 9, 10, 58, 11, 13, 32, + 124, 40, 41, 45, 46, 47, 58, 60, + 61, 62, 91, 94, 95, 97, 98, 99, + 100, 101, 102, 105, 107, 109, 110, 111, + 112, 113, 115, 116, 117, 118, 123, 126, + 65, 90, 103, 122, 32, 60, 9, 13, + 9, 10, 32, 60, 11, 13, 10, 32, + 60, 9, 13, 32, 34, 60, 9, 13, + 34, 9, 10, 32, 34, 60, 11, 13, + 10, 32, 34, 60, 9, 13, 32, 39, + 60, 9, 13, 39, 9, 10, 32, 39, + 60, 11, 13, 10, 32, 39, 60, 9, + 13, 9, 10, 32, 39, 60, 11, 13, + 9, 10, 32, 39, 60, 11, 13, 32, + 34, 39, 60, 9, 13, 34, 39, 9, + 10, 32, 34, 39, 60, 11, 13, 10, + 32, 34, 39, 60, 9, 13, 9, 10, + 32, 34, 39, 60, 11, 13, 9, 10, + 32, 34, 39, 60, 11, 13, 9, 10, + 32, 34, 60, 11, 13, 9, 10, 32, + 34, 60, 11, 13, 9, 10, 32, 60, + 11, 13, 9, 10, 32, 60, 11, 13, + 9, 10, 32, 34, 9, 10, 32, 34, + 39, 9, 10, 32, 39, 9, 10, 32, + 39, 34, 39, 9, 10, 32, 34, 39, + 9, 10, 32, 34, 39, 9, 10, 32, + 34, 9, 10, 32, 40, 41, 45, 46, + 60, 61, 62, 91, 94, 123, 126, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 123, 126, 40, 41, 45, 46, 60, 61, + 62, 91, 94, 98, 102, 110, 112, 123, + 126, 48, 57, 65, 90, 97, 122, 32, + 40, 41, 45, 46, 60, 61, 62, 91, + 94, 98, 101, 102, 110, 112, 123, 126, + 48, 57, 65, 90, 97, 122, 0, 10, + 0, 32, 33, 93, 9, 13, 0, 32, + 34, 36, 37, 47, 93, 95, 127, 1, + 8, 9, 13, 14, 31, 45, 57, 59, + 60, 62, 63, 65, 90, 97, 122, 0, + 32, 34, 37, 60, 62, 93, 127, 1, + 8, 9, 13, 14, 31, 0, 32, 34, + 37, 59, 60, 62, 63, 93, 127, 1, + 8, 9, 13, 14, 31, 0, 32, 34, + 36, 37, 43, 47, 93, 95, 127, 1, + 8, 9, 13, 14, 31, 45, 57, 59, + 60, 62, 63, 65, 90, 97, 122, 0, + 32, 34, 36, 37, 43, 47, 93, 95, + 127, 1, 8, 9, 13, 14, 31, 45, + 58, 59, 60, 62, 63, 65, 90, 97, + 122, 0, 32, 34, 36, 37, 47, 93, + 95, 127, 1, 8, 9, 13, 14, 31, + 45, 57, 59, 60, 62, 63, 65, 90, + 97, 122, 0, 32, 34, 36, 37, 41, + 47, 93, 95, 127, 1, 8, 9, 13, + 14, 31, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 0, 32, 34, 36, + 37, 41, 47, 93, 95, 127, 1, 8, + 9, 13, 14, 31, 45, 57, 59, 60, + 62, 63, 65, 90, 97, 122, 0, 32, + 34, 37, 41, 60, 62, 93, 127, 1, + 8, 9, 13, 14, 31, 0, 32, 34, + 37, 60, 62, 93, 124, 127, 1, 8, + 9, 13, 14, 31, 0, 10, 32, 34, + 37, 40, 41, 45, 46, 47, 60, 61, + 62, 91, 92, 93, 94, 95, 123, 126, + 127, 1, 8, 9, 13, 14, 31, 0, + 10, 32, 34, 37, 60, 62, 93, 124, + 127, 1, 8, 9, 13, 14, 31, 0, + 10, 32, 40, 41, 45, 46, 47, 60, + 61, 62, 91, 92, 93, 94, 95, 123, + 126, 9, 13, 0, 10, 32, 34, 37, + 41, 60, 62, 93, 124, 127, 1, 8, + 9, 13, 14, 31, 0, 10, 32, 34, + 36, 37, 41, 47, 93, 95, 124, 127, + 1, 8, 9, 13, 14, 31, 45, 57, + 59, 60, 62, 63, 65, 90, 97, 122, + 0, 10, 32, 34, 36, 37, 40, 46, + 47, 91, 93, 95, 123, 124, 127, 1, + 8, 9, 13, 14, 31, 45, 57, 59, + 60, 62, 63, 65, 90, 97, 122, 0, + 10, 32, 34, 36, 37, 47, 93, 95, + 124, 127, 1, 8, 9, 13, 14, 31, + 45, 57, 59, 60, 62, 63, 65, 90, + 97, 122, 0, 10, 32, 34, 36, 37, + 43, 47, 93, 95, 124, 127, 1, 8, + 9, 13, 14, 31, 45, 57, 59, 60, + 62, 63, 65, 90, 97, 122, 0, 10, + 32, 34, 36, 37, 43, 47, 93, 95, + 124, 127, 1, 8, 9, 13, 14, 31, + 45, 58, 59, 60, 62, 63, 65, 90, + 97, 122, 0, 10, 32, 34, 36, 37, + 40, 41, 45, 46, 47, 60, 61, 62, + 91, 92, 93, 94, 95, 123, 126, 127, + 1, 8, 9, 13, 14, 31, 48, 57, + 59, 63, 65, 90, 97, 122, 0, 10, + 32, 34, 35, 36, 37, 40, 41, 45, + 46, 47, 60, 61, 62, 91, 93, 94, + 95, 123, 124, 126, 127, 1, 8, 9, + 13, 14, 31, 48, 57, 59, 63, 65, + 90, 97, 122, 0, 10, 32, 34, 35, + 36, 37, 41, 47, 93, 95, 124, 127, + 1, 8, 9, 13, 14, 31, 45, 57, + 59, 60, 62, 63, 65, 90, 97, 122, + 0, 10, 32, 34, 36, 37, 41, 47, + 93, 95, 124, 127, 1, 8, 9, 13, + 14, 31, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 0, 10, 32, 34, + 36, 37, 41, 43, 47, 93, 95, 124, + 127, 1, 8, 9, 13, 14, 31, 45, + 57, 59, 60, 62, 63, 65, 90, 97, + 122, 0, 10, 32, 34, 36, 37, 41, + 43, 47, 93, 95, 124, 127, 1, 8, + 9, 13, 14, 31, 45, 58, 59, 60, + 62, 63, 65, 90, 97, 122, 0, 10, + 32, 34, 36, 37, 41, 47, 93, 95, + 124, 127, 1, 8, 9, 13, 14, 31, + 45, 57, 59, 60, 62, 63, 65, 90, + 97, 122, 0, 10, 32, 34, 35, 37, + 41, 60, 62, 93, 124, 127, 1, 8, + 9, 13, 14, 31, 0, 10, 32, 34, + 37, 41, 60, 62, 93, 124, 127, 1, + 8, 9, 13, 14, 31, 0, 10, 32, + 34, 37, 41, 59, 60, 62, 63, 93, + 124, 127, 1, 8, 9, 13, 14, 31, + 0, 10, 32, 34, 37, 40, 46, 60, + 62, 91, 93, 123, 124, 127, 1, 8, + 9, 13, 14, 31, 0, 10, 32, 34, + 35, 37, 41, 60, 62, 93, 124, 127, + 1, 8, 9, 13, 14, 31, 0, 10, + 32, 34, 35, 37, 41, 59, 60, 62, + 63, 93, 124, 127, 1, 8, 9, 13, + 14, 31, 0, 10, 32, 34, 37, 40, + 41, 45, 46, 47, 60, 61, 62, 91, + 92, 93, 94, 95, 123, 126, 127, 1, + 8, 9, 13, 14, 31, 0, 10, 32, + 34, 35, 37, 40, 41, 45, 46, 60, + 61, 62, 91, 93, 94, 123, 124, 126, + 127, 1, 8, 9, 13, 14, 31, 0, + 10, 32, 34, 35, 37, 40, 41, 45, + 46, 60, 61, 62, 91, 93, 94, 123, + 124, 126, 127, 1, 8, 9, 13, 14, + 31, 0, 10, 32, 34, 37, 40, 41, + 45, 46, 60, 61, 62, 91, 93, 94, + 123, 124, 126, 127, 1, 8, 9, 13, + 14, 31, 0, 10, 32, 34, 37, 40, + 41, 45, 46, 60, 61, 62, 91, 93, + 94, 123, 124, 126, 127, 1, 8, 9, + 13, 14, 31, 0, 10, 32, 34, 37, + 60, 62, 93, 124, 127, 1, 8, 9, + 13, 14, 31, 0, 10, 32, 34, 37, + 59, 60, 62, 63, 93, 124, 127, 1, + 8, 9, 13, 14, 31, 0, 10, 32, + 34, 36, 37, 40, 41, 45, 46, 47, + 60, 61, 62, 91, 92, 93, 94, 95, + 123, 126, 127, 1, 8, 9, 13, 14, + 31, 48, 57, 59, 63, 65, 90, 97, + 122, 0, 10, 32, 34, 37, 60, 62, + 93, 124, 127, 1, 8, 9, 13, 14, + 31, 0, 10, 32, 34, 37, 40, 46, + 59, 60, 62, 63, 91, 93, 123, 124, + 127, 1, 8, 9, 13, 14, 31, 0, + 10, 32, 34, 37, 60, 62, 93, 124, + 127, 1, 8, 9, 13, 14, 31, 0, + 10, 32, 34, 37, 60, 62, 93, 124, + 125, 127, 1, 8, 9, 13, 14, 31, + 0, 10, 32, 34, 37, 60, 62, 93, + 124, 125, 127, 1, 8, 9, 13, 14, + 31, 0, 10, 32, 34, 36, 37, 47, + 93, 95, 124, 125, 127, 1, 8, 9, + 13, 14, 31, 45, 57, 59, 60, 62, + 63, 65, 90, 97, 122, 0, 10, 32, + 34, 36, 37, 43, 47, 93, 95, 124, + 125, 127, 1, 8, 9, 13, 14, 31, + 45, 57, 59, 60, 62, 63, 65, 90, + 97, 122, 0, 10, 32, 34, 36, 37, + 43, 47, 93, 95, 124, 125, 127, 1, + 8, 9, 13, 14, 31, 45, 58, 59, + 60, 62, 63, 65, 90, 97, 122, 0, + 10, 32, 34, 36, 37, 47, 93, 95, + 124, 125, 127, 1, 8, 9, 13, 14, + 31, 45, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 0, 10, 32, 34, 37, + 59, 60, 62, 63, 93, 124, 125, 127, + 1, 8, 9, 13, 14, 31, 0, 10, + 32, 34, 35, 37, 40, 41, 45, 46, + 60, 61, 62, 91, 93, 94, 123, 124, + 126, 127, 1, 8, 9, 13, 14, 31, + 0, 10, 32, 34, 35, 36, 37, 41, + 47, 93, 95, 124, 127, 1, 8, 9, + 13, 14, 31, 45, 57, 59, 60, 62, + 63, 65, 90, 97, 122, 0, 10, 32, + 34, 37, 41, 60, 62, 93, 124, 127, + 1, 8, 9, 13, 14, 31, 0, 10, + 32, 34, 36, 37, 41, 47, 93, 95, + 124, 127, 1, 8, 9, 13, 14, 31, + 45, 57, 59, 60, 62, 63, 65, 90, + 97, 122, 0, 10, 32, 34, 35, 37, + 41, 60, 62, 93, 124, 127, 1, 8, + 9, 13, 14, 31, 0, 10, 32, 34, + 37, 41, 60, 62, 93, 124, 127, 1, + 8, 9, 13, 14, 31, 0, 10, 32, + 34, 35, 37, 41, 59, 60, 62, 63, + 93, 124, 127, 1, 8, 9, 13, 14, + 31, 0, 10, 32, 34, 35, 36, 37, + 41, 47, 93, 95, 124, 127, 1, 8, + 9, 13, 14, 31, 45, 57, 59, 60, + 62, 63, 65, 90, 97, 122, 0, 10, + 32, 34, 35, 37, 41, 60, 62, 93, + 124, 127, 1, 8, 9, 13, 14, 31, + 0, 10, 32, 34, 37, 41, 60, 62, + 93, 124, 127, 1, 8, 9, 13, 14, + 31, 0, 10, 32, 34, 37, 40, 41, + 46, 59, 60, 62, 63, 91, 93, 123, + 124, 127, 1, 8, 9, 13, 14, 31, + 0, 10, 32, 34, 35, 37, 41, 60, + 62, 93, 124, 127, 1, 8, 9, 13, + 14, 31, 0, 10, 32, 34, 37, 41, + 60, 62, 93, 124, 127, 1, 8, 9, + 13, 14, 31, 0, 10, 32, 34, 37, + 40, 46, 60, 62, 91, 93, 123, 124, + 127, 1, 8, 9, 13, 14, 31, 0, + 10, 32, 34, 35, 37, 41, 60, 62, + 93, 124, 127, 1, 8, 9, 13, 14, + 31, 0, 10, 32, 34, 35, 37, 40, + 41, 46, 59, 60, 62, 63, 91, 93, + 123, 124, 127, 1, 8, 9, 13, 14, + 31, 0, 10, 32, 34, 35, 37, 41, + 60, 62, 93, 124, 127, 1, 8, 9, + 13, 14, 31, 0, 10, 32, 34, 35, + 37, 41, 60, 62, 93, 124, 127, 1, + 8, 9, 13, 14, 31, 0, 10, 32, + 34, 35, 37, 41, 60, 62, 93, 124, + 125, 127, 1, 8, 9, 13, 14, 31, + 0, 10, 32, 34, 35, 37, 41, 60, + 62, 93, 124, 125, 127, 1, 8, 9, + 13, 14, 31, 0, 10, 32, 34, 37, + 41, 60, 62, 93, 124, 125, 127, 1, + 8, 9, 13, 14, 31, 0, 10, 32, + 34, 36, 37, 41, 47, 93, 95, 124, + 125, 127, 1, 8, 9, 13, 14, 31, + 45, 57, 59, 60, 62, 63, 65, 90, + 97, 122, 0, 10, 32, 34, 36, 37, + 40, 46, 47, 91, 93, 95, 123, 124, + 125, 127, 1, 8, 9, 13, 14, 31, + 45, 57, 59, 60, 62, 63, 65, 90, + 97, 122, 0, 10, 32, 34, 35, 36, + 37, 41, 47, 93, 95, 124, 125, 127, + 1, 8, 9, 13, 14, 31, 45, 57, + 59, 60, 62, 63, 65, 90, 97, 122, + 0, 10, 32, 34, 35, 36, 37, 41, + 47, 93, 95, 124, 125, 127, 1, 8, + 9, 13, 14, 31, 45, 57, 59, 60, + 62, 63, 65, 90, 97, 122, 0, 10, + 32, 34, 36, 37, 41, 47, 93, 95, + 124, 125, 127, 1, 8, 9, 13, 14, + 31, 45, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 0, 10, 32, 34, 36, + 37, 41, 43, 47, 93, 95, 124, 125, + 127, 1, 8, 9, 13, 14, 31, 45, + 57, 59, 60, 62, 63, 65, 90, 97, + 122, 0, 10, 32, 34, 36, 37, 41, + 43, 47, 93, 95, 124, 125, 127, 1, + 8, 9, 13, 14, 31, 45, 58, 59, + 60, 62, 63, 65, 90, 97, 122, 0, + 10, 32, 34, 36, 37, 40, 41, 46, + 47, 91, 93, 95, 123, 124, 127, 1, + 8, 9, 13, 14, 31, 45, 57, 59, + 60, 62, 63, 65, 90, 97, 122, 0, + 10, 32, 34, 35, 36, 37, 41, 47, + 93, 95, 124, 127, 1, 8, 9, 13, + 14, 31, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 0, 10, 32, 34, + 35, 36, 37, 41, 47, 93, 95, 124, + 127, 1, 8, 9, 13, 14, 31, 45, + 57, 59, 60, 62, 63, 65, 90, 97, + 122, 0, 10, 32, 34, 35, 36, 37, + 41, 43, 47, 93, 95, 124, 127, 1, + 8, 9, 13, 14, 31, 45, 57, 59, + 60, 62, 63, 65, 90, 97, 122, 0, + 10, 32, 34, 35, 36, 37, 41, 43, + 47, 93, 95, 124, 127, 1, 8, 9, + 13, 14, 31, 45, 58, 59, 60, 62, + 63, 65, 90, 97, 122, 0, 10, 32, + 34, 36, 37, 41, 47, 93, 95, 124, + 127, 1, 8, 9, 13, 14, 31, 45, + 57, 59, 60, 62, 63, 65, 90, 97, + 122, 0, 10, 32, 34, 36, 37, 41, + 47, 93, 95, 124, 127, 1, 8, 9, + 13, 14, 31, 45, 57, 59, 60, 62, + 63, 65, 90, 97, 122, 0, 10, 32, + 34, 36, 37, 40, 46, 47, 91, 93, + 95, 123, 124, 127, 1, 8, 9, 13, + 14, 31, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 0, 10, 32, 34, + 36, 37, 47, 93, 95, 124, 127, 1, + 8, 9, 13, 14, 31, 45, 57, 59, + 60, 62, 63, 65, 90, 97, 122, 0, + 10, 32, 34, 36, 37, 40, 43, 46, + 47, 91, 93, 95, 123, 124, 127, 1, + 8, 9, 13, 14, 31, 45, 57, 59, + 60, 62, 63, 65, 90, 97, 122, 0, + 10, 32, 34, 35, 36, 37, 41, 47, + 93, 95, 124, 127, 1, 8, 9, 13, + 14, 31, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 0, 10, 32, 34, + 35, 36, 37, 41, 43, 47, 93, 95, + 124, 127, 1, 8, 9, 13, 14, 31, + 45, 57, 59, 60, 62, 63, 65, 90, + 97, 122, 0, 10, 32, 34, 35, 36, + 37, 41, 43, 47, 93, 95, 124, 127, + 1, 8, 9, 13, 14, 31, 45, 58, + 59, 60, 62, 63, 65, 90, 97, 122, + 0, 10, 32, 34, 36, 37, 47, 93, + 95, 124, 127, 1, 8, 9, 13, 14, + 31, 45, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 0, 10, 32, 34, 36, + 37, 47, 93, 95, 124, 127, 1, 8, + 9, 13, 14, 31, 45, 57, 59, 60, + 62, 63, 65, 90, 97, 122, 0, 10, + 32, 34, 36, 37, 47, 93, 95, 124, + 125, 127, 1, 8, 9, 13, 14, 31, + 45, 57, 59, 60, 62, 63, 65, 90, + 97, 122, 0, 10, 32, 34, 35, 36, + 37, 41, 47, 93, 95, 124, 127, 1, + 8, 9, 13, 14, 31, 45, 57, 59, + 60, 62, 63, 65, 90, 97, 122, 0, + 10, 32, 34, 35, 36, 37, 41, 47, + 93, 95, 124, 127, 1, 8, 9, 13, + 14, 31, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 0, 10, 32, 34, + 36, 37, 41, 47, 93, 95, 124, 127, + 1, 8, 9, 13, 14, 31, 45, 57, + 59, 60, 62, 63, 65, 90, 97, 122, + 0, 10, 32, 34, 36, 37, 40, 41, + 43, 46, 47, 91, 93, 95, 123, 124, + 127, 1, 8, 9, 13, 14, 31, 45, + 57, 59, 60, 62, 63, 65, 90, 97, + 122, 0, 10, 32, 34, 36, 37, 41, + 47, 93, 95, 124, 125, 127, 1, 8, + 9, 13, 14, 31, 45, 57, 59, 60, + 62, 63, 65, 90, 97, 122, 0, 10, + 32, 34, 35, 36, 37, 40, 41, 43, + 46, 47, 91, 93, 95, 123, 124, 127, + 1, 8, 9, 13, 14, 31, 45, 57, + 59, 60, 62, 63, 65, 90, 97, 122, + 0, 10, 32, 34, 35, 36, 37, 41, + 47, 93, 95, 124, 127, 1, 8, 9, + 13, 14, 31, 45, 57, 59, 60, 62, + 63, 65, 90, 97, 122, 0, 10, 32, + 34, 35, 36, 37, 41, 47, 93, 95, + 124, 127, 1, 8, 9, 13, 14, 31, + 45, 57, 59, 60, 62, 63, 65, 90, + 97, 122, 0, 10, 32, 34, 35, 36, + 37, 41, 47, 93, 95, 124, 125, 127, + 1, 8, 9, 13, 14, 31, 45, 57, + 59, 60, 62, 63, 65, 90, 97, 122, + 0, 10, 32, 34, 35, 36, 37, 41, + 43, 47, 93, 95, 124, 125, 127, 1, + 8, 9, 13, 14, 31, 45, 57, 59, + 60, 62, 63, 65, 90, 97, 122, 0, + 10, 32, 34, 35, 36, 37, 41, 43, + 47, 93, 95, 124, 125, 127, 1, 8, + 9, 13, 14, 31, 45, 58, 59, 60, + 62, 63, 65, 90, 97, 122, 0, 10, + 32, 34, 35, 36, 37, 40, 41, 46, + 47, 91, 93, 95, 123, 124, 127, 1, + 8, 9, 13, 14, 31, 45, 57, 59, + 60, 62, 63, 65, 90, 97, 122, 0, + 10, 32, 34, 35, 36, 37, 41, 47, + 93, 95, 124, 125, 127, 1, 8, 9, + 13, 14, 31, 45, 57, 59, 60, 62, + 63, 65, 90, 97, 122, 0, 10, 32, + 34, 37, 60, 62, 93, 124, 125, 127, + 1, 8, 9, 13, 14, 31, 0, 10, + 32, 34, 37, 40, 46, 59, 60, 62, + 63, 91, 93, 123, 124, 125, 127, 1, + 8, 9, 13, 14, 31, 0, 10, 32, + 34, 35, 37, 41, 60, 62, 93, 124, + 125, 127, 1, 8, 9, 13, 14, 31, + 0, 10, 32, 34, 37, 41, 60, 62, + 93, 124, 125, 127, 1, 8, 9, 13, + 14, 31, 0, 10, 32, 34, 37, 41, + 59, 60, 62, 63, 93, 124, 125, 127, + 1, 8, 9, 13, 14, 31, 0, 10, + 32, 34, 37, 40, 46, 60, 62, 91, + 93, 123, 124, 125, 127, 1, 8, 9, + 13, 14, 31, 0, 10, 32, 34, 37, + 60, 62, 93, 124, 125, 127, 1, 8, + 9, 13, 14, 31, 0, 10, 32, 34, + 37, 60, 62, 93, 124, 125, 127, 1, + 8, 9, 13, 14, 31, 0, 10, 32, + 34, 37, 40, 41, 46, 60, 62, 91, + 93, 123, 124, 127, 1, 8, 9, 13, + 14, 31, 0, 10, 32, 34, 37, 41, + 60, 62, 93, 124, 125, 127, 1, 8, + 9, 13, 14, 31, 0, 10, 32, 34, + 35, 37, 41, 59, 60, 62, 63, 93, + 124, 125, 127, 1, 8, 9, 13, 14, + 31, 0, 10, 32, 34, 35, 37, 40, + 41, 46, 60, 62, 91, 93, 123, 124, + 127, 1, 8, 9, 13, 14, 31, 0, + 10, 32, 34, 36, 37, 47, 93, 95, + 124, 127, 1, 8, 9, 13, 14, 31, + 45, 57, 59, 60, 62, 63, 65, 90, + 97, 122, 0, 10, 32, 34, 36, 37, + 47, 93, 95, 124, 125, 127, 1, 8, + 9, 13, 14, 31, 45, 57, 59, 60, + 62, 63, 65, 90, 97, 122, 0, 10, + 32, 34, 36, 37, 47, 93, 95, 124, + 125, 127, 1, 8, 9, 13, 14, 31, + 45, 57, 59, 60, 62, 63, 65, 90, + 97, 122, 0, 10, 32, 34, 36, 37, + 40, 43, 46, 47, 91, 93, 95, 123, + 124, 125, 127, 1, 8, 9, 13, 14, + 31, 45, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 0, 10, 32, 34, 36, + 37, 47, 93, 95, 124, 125, 127, 1, + 8, 9, 13, 14, 31, 45, 57, 59, + 60, 62, 63, 65, 90, 97, 122, 0, + 10, 32, 34, 36, 37, 47, 93, 95, + 124, 125, 127, 1, 8, 9, 13, 14, + 31, 45, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 0, 10, 32, 34, 36, + 37, 41, 47, 93, 95, 124, 125, 127, + 1, 8, 9, 13, 14, 31, 45, 57, + 59, 60, 62, 63, 65, 90, 97, 122, + 0, 10, 32, 34, 37, 60, 62, 93, + 124, 127, 1, 8, 9, 13, 14, 31, + 0, 10, 32, 34, 37, 60, 62, 93, + 124, 125, 127, 1, 8, 9, 13, 14, + 31, 0, 10, 32, 34, 35, 37, 40, + 41, 45, 46, 60, 61, 62, 91, 93, + 94, 123, 124, 126, 127, 1, 8, 9, + 13, 14, 31, 0, 10, 32, 34, 35, + 37, 40, 41, 45, 46, 60, 61, 62, + 91, 93, 94, 123, 124, 126, 127, 1, + 8, 9, 13, 14, 31, 0, 10, 32, + 34, 35, 37, 40, 41, 45, 46, 60, + 61, 62, 91, 93, 94, 123, 124, 126, + 127, 1, 8, 9, 13, 14, 31, 0, + 10, 32, 34, 37, 40, 41, 45, 46, + 47, 60, 61, 62, 91, 92, 93, 94, + 123, 124, 126, 127, 1, 8, 9, 13, + 14, 31, 48, 57, 0, 10, 32, 34, + 37, 60, 62, 93, 124, 127, 1, 8, + 9, 13, 14, 31, 48, 57, 0, 10, + 32, 34, 37, 40, 41, 45, 46, 47, + 60, 61, 62, 91, 92, 93, 94, 123, + 124, 126, 127, 1, 8, 9, 13, 14, + 31, 48, 57, 0, 10, 32, 34, 37, + 40, 41, 45, 46, 60, 61, 62, 91, + 93, 94, 123, 124, 126, 127, 1, 8, + 9, 13, 14, 31, 0, 10, 32, 34, + 37, 40, 41, 45, 46, 60, 61, 62, + 91, 93, 94, 123, 124, 126, 127, 1, + 8, 9, 13, 14, 31, 0, 10, 32, + 34, 37, 40, 41, 45, 46, 60, 61, + 62, 91, 93, 94, 123, 124, 126, 127, + 1, 8, 9, 13, 14, 31, 0, 10, + 32, 34, 37, 60, 62, 93, 124, 127, + 1, 8, 9, 13, 14, 31, 48, 57, + 0, 10, 32, 34, 37, 40, 41, 45, + 46, 47, 60, 61, 62, 91, 92, 93, + 94, 123, 124, 126, 127, 1, 8, 9, + 13, 14, 31, 0, 10, 32, 34, 35, + 36, 37, 40, 41, 45, 46, 47, 60, + 61, 62, 91, 93, 94, 95, 123, 124, + 126, 127, 1, 8, 9, 13, 14, 31, + 48, 57, 59, 63, 65, 90, 97, 122, + 0, 10, 32, 34, 36, 37, 40, 41, + 45, 46, 47, 60, 61, 62, 91, 93, + 94, 95, 123, 124, 126, 127, 1, 8, + 9, 13, 14, 31, 48, 57, 59, 63, + 65, 90, 97, 122, 0, 10, 32, 34, + 36, 37, 40, 41, 45, 46, 47, 60, + 61, 62, 91, 93, 94, 95, 123, 124, + 126, 127, 1, 8, 9, 13, 14, 31, + 48, 57, 59, 63, 65, 90, 97, 122, + 0, 10, 32, 34, 36, 37, 40, 41, + 45, 46, 47, 60, 61, 62, 91, 93, + 94, 95, 123, 124, 126, 127, 1, 8, + 9, 13, 14, 31, 48, 57, 59, 63, + 65, 90, 97, 122, 0, 10, 32, 34, + 36, 37, 40, 41, 45, 46, 47, 60, + 61, 62, 91, 93, 94, 95, 123, 124, + 126, 127, 1, 8, 9, 13, 14, 31, + 48, 57, 59, 63, 65, 90, 97, 122, + 0, 10, 32, 34, 35, 36, 37, 40, + 41, 45, 46, 47, 60, 61, 62, 91, + 93, 94, 95, 123, 124, 126, 127, 1, + 8, 9, 13, 14, 31, 48, 57, 59, + 63, 65, 90, 97, 122, 0, 10, 32, + 34, 35, 36, 37, 40, 41, 45, 46, + 47, 60, 61, 62, 91, 93, 94, 95, + 123, 124, 126, 127, 1, 8, 9, 13, + 14, 31, 48, 57, 59, 63, 65, 90, + 97, 122, 0, 10, 32, 34, 35, 36, + 37, 40, 41, 45, 46, 47, 60, 61, + 62, 91, 93, 94, 95, 123, 124, 126, + 127, 1, 8, 9, 13, 14, 31, 48, + 57, 59, 63, 65, 90, 97, 122, 0, + 10, 32, 34, 36, 37, 47, 93, 95, + 124, 127, 1, 8, 9, 13, 14, 31, + 45, 46, 48, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 0, 32, 34, 37, + 60, 62, 93, 127, 1, 8, 9, 13, + 14, 31, 0, 32, 34, 37, 40, 46, + 59, 60, 62, 63, 91, 93, 123, 127, + 1, 8, 9, 13, 14, 31, 0, 32, + 34, 35, 37, 41, 60, 62, 93, 127, + 1, 8, 9, 13, 14, 31, 0, 32, + 34, 35, 37, 41, 60, 62, 93, 127, + 1, 8, 9, 13, 14, 31, 0, 32, + 34, 37, 41, 60, 62, 93, 127, 1, + 8, 9, 13, 14, 31, 0, 32, 34, + 37, 41, 59, 60, 62, 63, 93, 127, + 1, 8, 9, 13, 14, 31, 0, 32, + 34, 37, 40, 46, 60, 62, 91, 93, + 123, 127, 1, 8, 9, 13, 14, 31, + 0, 32, 34, 37, 60, 62, 93, 127, + 1, 8, 9, 13, 14, 31, 0, 32, + 34, 37, 60, 62, 93, 125, 127, 1, + 8, 9, 13, 14, 31, 0, 32, 34, + 37, 60, 62, 93, 125, 127, 1, 8, + 9, 13, 14, 31, 0, 32, 34, 36, + 37, 47, 93, 95, 125, 127, 1, 8, + 9, 13, 14, 31, 45, 57, 59, 60, + 62, 63, 65, 90, 97, 122, 0, 32, + 34, 36, 37, 43, 47, 93, 95, 125, + 127, 1, 8, 9, 13, 14, 31, 45, + 57, 59, 60, 62, 63, 65, 90, 97, + 122, 0, 32, 34, 36, 37, 43, 47, + 93, 95, 125, 127, 1, 8, 9, 13, + 14, 31, 45, 58, 59, 60, 62, 63, + 65, 90, 97, 122, 0, 32, 34, 36, + 37, 40, 46, 47, 91, 93, 95, 123, + 127, 1, 8, 9, 13, 14, 31, 45, + 57, 59, 60, 62, 63, 65, 90, 97, + 122, 0, 32, 34, 35, 36, 37, 41, + 47, 93, 95, 127, 1, 8, 9, 13, + 14, 31, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 0, 32, 34, 35, + 36, 37, 41, 47, 93, 95, 127, 1, + 8, 9, 13, 14, 31, 45, 57, 59, + 60, 62, 63, 65, 90, 97, 122, 0, + 32, 34, 35, 36, 37, 41, 43, 47, + 93, 95, 127, 1, 8, 9, 13, 14, + 31, 45, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 0, 32, 34, 35, 36, + 37, 41, 43, 47, 93, 95, 127, 1, + 8, 9, 13, 14, 31, 45, 58, 59, + 60, 62, 63, 65, 90, 97, 122, 0, + 32, 34, 35, 36, 37, 41, 47, 93, + 95, 127, 1, 8, 9, 13, 14, 31, + 45, 57, 59, 60, 62, 63, 65, 90, + 97, 122, 0, 32, 34, 36, 37, 47, + 93, 95, 127, 1, 8, 9, 13, 14, + 31, 45, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 0, 32, 34, 36, 37, + 47, 93, 95, 127, 1, 8, 9, 13, + 14, 31, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 0, 32, 34, 36, + 37, 40, 43, 46, 47, 91, 93, 95, + 123, 127, 1, 8, 9, 13, 14, 31, + 45, 57, 59, 60, 62, 63, 65, 90, + 97, 122, 0, 32, 34, 36, 37, 47, + 93, 95, 125, 127, 1, 8, 9, 13, + 14, 31, 45, 57, 59, 60, 62, 63, + 65, 90, 97, 122, 0, 32, 34, 36, + 37, 47, 93, 95, 125, 127, 1, 8, + 9, 13, 14, 31, 45, 57, 59, 60, + 62, 63, 65, 90, 97, 122, 0, 32, + 34, 37, 59, 60, 62, 63, 93, 125, + 127, 1, 8, 9, 13, 14, 31, 0, + 32, 34, 35, 37, 41, 59, 60, 62, + 63, 93, 127, 1, 8, 9, 13, 14, + 31, 0, 32, 34, 36, 37, 41, 47, + 93, 95, 127, 1, 8, 9, 13, 14, + 31, 45, 57, 59, 60, 62, 63, 65, + 90, 97, 122, 0, 32, 34, 36, 37, + 41, 43, 47, 93, 95, 127, 1, 8, + 9, 13, 14, 31, 45, 57, 59, 60, + 62, 63, 65, 90, 97, 122, 0, 32, + 34, 36, 37, 41, 43, 47, 93, 95, + 127, 1, 8, 9, 13, 14, 31, 45, + 58, 59, 60, 62, 63, 65, 90, 97, + 122, 0, 32, 93, 9, 13, 0, 32, + 93, 9, 13, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 123, 126, 40, 41, + 45, 46, 60, 61, 62, 91, 94, 98, + 99, 102, 110, 112, 113, 123, 126, 48, + 57, 65, 90, 97, 122, 32, 32, 40, + 41, 45, 46, 60, 61, 62, 91, 94, + 98, 102, 110, 112, 123, 126, 48, 57, + 65, 90, 97, 122, 32, 40, 41, 45, + 46, 60, 61, 62, 91, 94, 98, 102, + 110, 111, 112, 123, 126, 48, 57, 65, + 90, 97, 122, 32, 40, 41, 45, 46, + 60, 61, 62, 91, 94, 98, 102, 110, + 112, 114, 123, 126, 48, 57, 65, 90, + 97, 122, 32, 40, 41, 45, 46, 60, + 61, 62, 91, 94, 97, 98, 102, 110, + 112, 123, 126, 48, 57, 65, 90, 99, + 122, 10, 32, 125, 0, 10, 40, 41, + 45, 46, 47, 60, 61, 62, 91, 92, + 94, 95, 123, 126, 40, 41, 45, 46, + 60, 61, 62, 91, 94, 123, 126, 0, + 60, 47, 10, 0, 10, 10, 10, 98, + 102, 110, 112, 65, 90, 97, 122, 0, + 60, 47, 10, 0, 10, 0, 60, 47, + 10, 0, 10, 10, 10, 98, 102, 110, + 112, 65, 90, 97, 122, 0, 9, 32, + 60, 9, 32, 60, 9, 10, 32, 9, + 10, 32, 47, 0, 10, 10, 10, 98, + 102, 110, 112, 65, 90, 97, 122, 0, + 10, 9, 10, 32, 60, 10, 98, 102, + 110, 112, 65, 90, 97, 122, 0, 10, + 9, 10, 32, 35, 42, 60, 10, 98, + 102, 110, 112, 65, 90, 97, 122, 32, + 0, 10, 10, 0, 10, 10, 35, 42, + 10, 32, 0, 10, 58, 10, 45, 10, + 32, 61, 10, 32, 0 +}; + +static const char _redcloth_scan_single_lengths[] = { + 0, 3, 20, 19, 4, 2, 3, 5, + 5, 5, 2, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 6, 5, 5, 5, + 5, 5, 5, 5, 6, 5, 5, 5, + 6, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 6, + 5, 5, 8, 5, 5, 5, 5, 5, + 5, 5, 5, 6, 5, 5, 6, 5, + 5, 5, 6, 1, 6, 4, 6, 7, + 6, 8, 8, 5, 6, 1, 7, 2, + 4, 6, 6, 8, 8, 7, 8, 6, + 6, 7, 2, 6, 1, 7, 2, 4, + 6, 5, 7, 8, 6, 8, 8, 6, + 8, 3, 5, 6, 6, 8, 8, 8, + 9, 6, 6, 5, 6, 6, 2, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 7, 6, 6, 6, 7, 6, 6, 5, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 7, 6, 6, 8, 6, + 6, 6, 6, 6, 6, 6, 6, 7, + 6, 6, 7, 6, 14, 12, 2, 1, + 1, 4, 2, 1, 1, 1, 1, 12, + 11, 11, 11, 11, 11, 11, 11, 11, + 12, 12, 12, 12, 3, 3, 2, 2, + 5, 3, 6, 2, 3, 3, 2, 2, + 5, 3, 2, 2, 1, 5, 2, 2, + 1, 2, 2, 1, 2, 12, 12, 12, + 14, 11, 11, 2, 1, 1, 4, 2, + 2, 16, 3, 1, 1, 12, 12, 2, + 1, 1, 4, 2, 2, 16, 3, 1, + 1, 15, 5, 2, 1, 1, 4, 2, + 3, 4, 1, 1, 1, 1, 3, 3, + 4, 4, 2, 2, 7, 5, 4, 4, + 2, 2, 4, 4, 2, 2, 15, 14, + 14, 14, 14, 14, 14, 14, 14, 15, + 15, 15, 15, 6, 6, 3, 2, 2, + 5, 3, 6, 2, 3, 3, 3, 2, + 2, 5, 3, 2, 2, 1, 5, 2, + 2, 1, 2, 2, 1, 2, 4, 4, + 5, 5, 3, 3, 8, 6, 9, 5, + 6, 6, 4, 4, 5, 5, 3, 3, + 8, 6, 5, 5, 3, 3, 4, 8, + 5, 5, 3, 3, 4, 5, 5, 4, + 5, 15, 15, 15, 3, 16, 3, 16, + 16, 1, 1, 1, 1, 12, 11, 11, + 11, 11, 11, 11, 11, 11, 12, 12, + 12, 12, 3, 3, 2, 2, 5, 3, + 6, 2, 3, 3, 2, 2, 5, 3, + 2, 2, 1, 5, 2, 2, 1, 2, + 2, 1, 2, 12, 12, 12, 15, 5, + 2, 1, 1, 4, 2, 3, 4, 1, + 1, 1, 1, 3, 3, 4, 4, 2, + 2, 7, 5, 4, 4, 2, 2, 4, + 4, 2, 2, 15, 14, 14, 14, 14, + 14, 14, 14, 14, 15, 15, 15, 15, + 6, 6, 3, 2, 2, 5, 3, 6, + 2, 3, 3, 3, 2, 2, 5, 3, + 2, 2, 1, 5, 2, 2, 1, 2, + 2, 1, 2, 4, 4, 5, 5, 3, + 3, 8, 6, 9, 5, 6, 6, 4, + 4, 5, 5, 3, 3, 8, 6, 5, + 5, 3, 3, 4, 8, 5, 5, 3, + 3, 4, 5, 5, 4, 5, 15, 15, + 15, 3, 16, 3, 16, 16, 1, 1, + 1, 1, 12, 11, 12, 12, 12, 12, + 12, 3, 3, 2, 2, 5, 3, 6, + 2, 3, 3, 2, 2, 5, 3, 2, + 2, 1, 5, 2, 2, 1, 2, 2, + 1, 2, 12, 12, 12, 11, 11, 11, + 11, 11, 11, 11, 2, 4, 4, 3, + 5, 6, 6, 6, 6, 6, 6, 6, + 6, 3, 7, 6, 3, 1, 2, 1, + 1, 1, 1, 1, 5, 5, 6, 1, + 4, 6, 4, 6, 7, 6, 8, 8, + 5, 6, 2, 3, 2, 2, 2, 2, + 2, 7, 2, 5, 6, 6, 8, 8, + 7, 8, 6, 6, 7, 3, 6, 2, + 3, 2, 2, 2, 2, 2, 7, 2, + 5, 6, 5, 7, 8, 6, 8, 8, + 6, 4, 3, 3, 3, 3, 3, 8, + 3, 6, 6, 6, 8, 8, 8, 9, + 6, 6, 8, 6, 6, 6, 6, 3, + 1, 5, 5, 6, 1, 6, 4, 6, + 7, 6, 8, 8, 5, 6, 2, 7, + 2, 6, 6, 8, 8, 7, 8, 6, + 6, 7, 3, 6, 2, 7, 2, 6, + 5, 7, 8, 6, 8, 8, 6, 8, + 3, 6, 6, 8, 8, 8, 9, 6, + 6, 12, 2, 1, 1, 4, 2, 2, + 1, 1, 1, 1, 1, 12, 11, 11, + 11, 11, 11, 11, 11, 11, 12, 12, + 12, 12, 3, 3, 2, 2, 5, 3, + 6, 2, 3, 3, 2, 2, 5, 3, + 2, 2, 1, 5, 2, 2, 1, 2, + 2, 1, 2, 12, 12, 12, 15, 16, + 15, 16, 16, 16, 16, 15, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 17, 2, 2, 2, 2, 2, 2, + 2, 2, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 2, 1, 1, 2, + 2, 2, 2, 2, 2, 2, 4, 3, + 15, 9, 3, 11, 3, 3, 3, 3, + 3, 3, 10, 11, 11, 5, 4, 4, + 7, 5, 12, 4, 4, 12, 10, 4, + 4, 13, 5, 13, 11, 5, 5, 17, + 7, 6, 6, 9, 7, 14, 13, 12, + 12, 6, 6, 14, 6, 6, 5, 5, + 6, 6, 15, 13, 5, 5, 7, 7, + 16, 16, 16, 5, 16, 16, 5, 5, + 17, 12, 23, 7, 7, 23, 22, 22, + 11, 11, 5, 5, 6, 14, 12, 6, + 6, 6, 6, 13, 6, 6, 5, 5, + 22, 12, 22, 17, 17, 17, 17, 17, + 7, 7, 6, 6, 9, 7, 18, 13, + 14, 13, 13, 12, 12, 6, 6, 18, + 13, 13, 7, 6, 14, 7, 7, 7, + 7, 14, 12, 13, 12, 6, 6, 15, + 13, 7, 7, 8, 7, 7, 10, 8, + 15, 14, 13, 13, 7, 7, 15, 7, + 7, 10, 7, 6, 7, 7, 7, 6, + 6, 5, 5, 7, 7, 7, 7, 8, + 8, 11, 7, 8, 8, 8, 16, 14, + 17, 14, 12, 12, 6, 18, 12, 6, + 6, 8, 8, 6, 6, 6, 6, 7, + 7, 16, 13, 14, 15, 6, 6, 7, + 7, 11, 12, 5, 6, 17, 17, 17, + 23, 23, 23, 5, 18, 5, 18, 16, + 6, 16, 11, 16, 18, 9, 9, 3, + 3, 4, 12, 10, 4, 4, 4, 4, + 5, 5, 10, 5, 5, 3, 3, 11, + 4, 4, 5, 5, 3, 3, 10, 11, + 4, 4, 12, 4, 18, 3, 4, 5, + 11, 12, 2, 1, 1, 4, 2, 2, + 1, 1, 1, 1, 1, 12, 11, 11, + 11, 11, 11, 11, 11, 11, 12, 12, + 12, 12, 3, 3, 2, 2, 5, 3, + 6, 2, 3, 3, 2, 2, 5, 3, + 2, 2, 1, 5, 2, 2, 1, 2, + 2, 1, 2, 12, 12, 12, 11, 12, + 2, 1, 1, 4, 2, 3, 2, 8, + 6, 6, 0, 0, 0, 0, 7, 0, + 0, 7, 7, 1, 1, 1, 1, 12, + 11, 11, 11, 11, 11, 11, 11, 11, + 12, 12, 12, 12, 3, 3, 2, 2, + 5, 3, 6, 2, 3, 3, 2, 2, + 5, 3, 2, 2, 1, 5, 2, 2, + 1, 2, 2, 1, 2, 12, 12, 12, + 16, 11, 12, 2, 1, 1, 4, 2, + 1, 1, 1, 1, 12, 11, 11, 11, + 11, 11, 11, 11, 11, 12, 12, 12, + 12, 3, 3, 2, 2, 5, 3, 6, + 2, 3, 3, 2, 2, 5, 3, 2, + 2, 1, 5, 2, 2, 1, 2, 2, + 1, 2, 12, 12, 12, 16, 16, 16, + 16, 16, 16, 16, 11, 12, 2, 1, + 1, 4, 2, 2, 1, 1, 1, 1, + 1, 12, 11, 11, 11, 11, 11, 11, + 11, 11, 12, 12, 12, 12, 3, 3, + 2, 2, 5, 3, 6, 2, 3, 3, + 2, 2, 5, 3, 2, 2, 1, 5, + 2, 2, 1, 2, 2, 1, 2, 12, + 12, 12, 16, 11, 12, 2, 1, 1, + 4, 2, 2, 1, 1, 1, 1, 1, + 12, 11, 11, 11, 11, 11, 11, 11, + 11, 12, 12, 12, 12, 3, 3, 2, + 2, 5, 3, 6, 2, 3, 3, 2, + 2, 5, 3, 2, 2, 1, 5, 2, + 2, 1, 2, 2, 1, 2, 12, 12, + 12, 15, 17, 16, 15, 12, 2, 1, + 1, 4, 2, 3, 12, 1, 1, 1, + 1, 12, 11, 11, 11, 11, 11, 11, + 11, 11, 12, 12, 12, 12, 3, 3, + 2, 2, 5, 3, 6, 2, 3, 3, + 2, 2, 5, 3, 2, 2, 1, 5, + 2, 2, 1, 2, 2, 1, 2, 12, + 12, 12, 2, 1, 1, 1, 1, 2, + 1, 1, 1, 1, 1, 12, 9, 2, + 1, 1, 4, 2, 1, 1, 1, 1, + 8, 3, 3, 2, 2, 4, 2, 2, + 4, 3, 2, 2, 4, 2, 2, 5, + 3, 2, 13, 12, 13, 13, 13, 13, + 12, 13, 13, 13, 13, 13, 14, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 12, 9, 2, 1, 1, 4, 2, + 1, 1, 1, 1, 8, 3, 3, 2, + 2, 4, 2, 2, 4, 3, 2, 2, + 4, 2, 2, 5, 3, 2, 13, 12, + 13, 13, 13, 13, 12, 13, 13, 13, + 13, 13, 14, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 3, 1, 19, 4, + 2, 5, 5, 5, 2, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 6, 5, + 5, 5, 5, 5, 5, 5, 6, 5, + 5, 5, 6, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 6, 5, 5, 8, 5, 5, 5, + 5, 5, 5, 5, 5, 6, 5, 5, + 6, 5, 12, 9, 2, 1, 1, 4, + 2, 1, 1, 1, 1, 8, 3, 3, + 2, 2, 4, 2, 2, 4, 3, 2, + 2, 4, 2, 2, 5, 3, 2, 13, + 12, 13, 13, 13, 13, 12, 13, 13, + 13, 13, 13, 14, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 3, 1, 19, + 4, 2, 5, 5, 5, 2, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 6, + 5, 5, 5, 5, 5, 5, 5, 6, + 5, 5, 5, 6, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 6, 5, 5, 8, 5, 5, + 5, 5, 5, 5, 5, 5, 6, 5, + 5, 6, 5, 12, 9, 2, 1, 1, + 4, 2, 1, 1, 1, 1, 8, 3, + 3, 2, 2, 4, 2, 2, 4, 3, + 2, 2, 4, 2, 2, 5, 3, 2, + 13, 12, 13, 13, 13, 13, 12, 13, + 13, 13, 13, 13, 14, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 3, 1, + 19, 4, 2, 5, 5, 5, 2, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 6, 5, 5, 5, 5, 5, 5, 5, + 6, 5, 5, 5, 6, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 6, 5, 5, 8, 5, + 5, 5, 5, 5, 5, 5, 5, 6, + 5, 5, 6, 5, 12, 9, 2, 1, + 1, 4, 2, 1, 1, 1, 1, 8, + 3, 3, 2, 2, 4, 2, 2, 4, + 3, 2, 2, 4, 2, 2, 5, 3, + 2, 13, 12, 13, 13, 13, 13, 12, + 13, 13, 13, 13, 13, 14, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 14, + 12, 2, 1, 1, 4, 2, 1, 1, + 1, 1, 12, 11, 11, 11, 11, 11, + 11, 11, 11, 12, 12, 12, 12, 3, + 3, 2, 2, 5, 3, 6, 2, 3, + 3, 2, 2, 5, 3, 2, 2, 1, + 5, 2, 2, 1, 2, 2, 1, 2, + 12, 12, 12, 14, 11, 11, 14, 12, + 2, 1, 1, 4, 2, 1, 1, 1, + 1, 12, 11, 11, 11, 11, 11, 11, + 11, 11, 12, 12, 12, 12, 3, 3, + 2, 2, 5, 3, 6, 2, 3, 3, + 2, 2, 5, 3, 2, 2, 1, 5, + 2, 2, 1, 2, 2, 1, 2, 12, + 12, 12, 14, 11, 11, 1, 0, 1, + 2, 2, 25, 3, 1, 2, 2, 4, + 4, 3, 5, 5, 4, 4, 3, 3, + 3, 2, 0, 0, 14, 1, 12, 16, + 16, 11, 14, 12, 4, 2, 31, 2, + 4, 3, 3, 1, 5, 4, 3, 1, + 5, 4, 5, 5, 4, 2, 6, 5, + 6, 6, 5, 5, 4, 4, 0, 3, + 1, 4, 1, 4, 4, 2, 5, 5, + 4, 3, 11, 11, 15, 1, 16, 2, + 4, 9, 8, 10, 10, 10, 9, 10, + 10, 9, 9, 21, 10, 18, 11, 12, + 15, 11, 12, 12, 22, 23, 13, 12, + 13, 13, 12, 12, 11, 13, 14, 12, + 14, 21, 20, 20, 19, 19, 10, 12, + 22, 10, 16, 10, 11, 11, 12, 13, + 13, 12, 13, 20, 13, 11, 12, 12, + 11, 14, 13, 12, 11, 17, 12, 11, + 14, 12, 18, 12, 12, 13, 13, 12, + 13, 16, 14, 14, 13, 14, 14, 16, + 13, 13, 14, 14, 12, 12, 15, 11, + 16, 13, 14, 14, 11, 11, 12, 13, + 13, 12, 17, 13, 18, 13, 13, 14, + 15, 15, 17, 14, 11, 17, 13, 12, + 14, 15, 11, 11, 15, 12, 15, 16, + 11, 12, 12, 17, 12, 12, 13, 10, + 11, 20, 20, 20, 21, 10, 21, 19, + 19, 19, 10, 21, 23, 22, 22, 22, + 22, 23, 23, 23, 11, 8, 14, 10, + 10, 9, 11, 12, 8, 9, 9, 10, + 11, 11, 13, 11, 11, 12, 12, 11, + 9, 9, 14, 10, 10, 11, 12, 10, + 11, 11, 3, 3, 11, 17, 1, 1, + 15, 1, 16, 1, 16, 1, 16, 2, + 1, 16, 11, 2, 1, 1, 2, 1, + 5, 2, 1, 1, 2, 2, 1, 1, + 2, 1, 5, 4, 3, 3, 3, 0, + 1, 2, 1, 5, 2, 4, 5, 2, + 6, 5, 1, 2, 1, 2, 3, 1, + 1, 3, 2, 1, 1, 1, 2 +}; + +static const char _redcloth_scan_range_lengths[] = { + 0, 0, 2, 2, 5, 1, 0, 4, + 5, 5, 4, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 4, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 4, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 4, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 4, 4, 4, 0, 2, 2, 6, 6, + 2, 6, 6, 2, 4, 0, 4, 0, + 0, 2, 2, 6, 6, 6, 6, 2, + 2, 4, 0, 4, 0, 4, 0, 0, + 2, 2, 6, 6, 2, 6, 6, 2, + 4, 0, 0, 2, 2, 6, 6, 6, + 6, 2, 2, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 1, 1, + 1, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 0, 1, 0, + 0, 0, 0, 0, 4, 4, 4, 0, + 1, 2, 2, 6, 6, 2, 6, 6, + 2, 4, 0, 1, 0, 0, 0, 0, + 0, 4, 0, 1, 2, 2, 6, 6, + 6, 6, 2, 2, 4, 0, 4, 0, + 1, 0, 0, 0, 0, 0, 4, 0, + 1, 2, 2, 6, 6, 2, 6, 6, + 2, 1, 0, 0, 0, 0, 0, 4, + 0, 1, 2, 2, 6, 6, 6, 6, + 2, 2, 4, 4, 4, 4, 4, 4, + 0, 4, 4, 4, 0, 2, 2, 6, + 6, 2, 6, 6, 2, 4, 0, 4, + 0, 2, 2, 6, 6, 6, 6, 2, + 2, 4, 0, 4, 0, 4, 0, 2, + 2, 6, 6, 2, 6, 6, 2, 4, + 0, 2, 2, 6, 6, 6, 6, 2, + 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 4, + 3, 2, 3, 3, 3, 4, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, + 8, 8, 1, 8, 4, 4, 4, 4, + 4, 4, 8, 8, 8, 1, 1, 1, + 1, 1, 8, 4, 4, 8, 8, 4, + 4, 8, 1, 8, 8, 4, 4, 1, + 1, 1, 1, 1, 1, 8, 8, 8, + 8, 4, 4, 8, 4, 4, 4, 4, + 4, 4, 8, 8, 4, 4, 4, 4, + 1, 1, 1, 1, 1, 1, 1, 1, + 8, 8, 7, 4, 4, 7, 7, 7, + 8, 8, 4, 4, 1, 8, 8, 4, + 4, 4, 4, 8, 4, 4, 4, 4, + 7, 8, 7, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 8, 8, + 8, 8, 8, 8, 8, 4, 4, 8, + 8, 8, 1, 1, 8, 4, 4, 4, + 4, 8, 8, 8, 8, 4, 4, 8, + 8, 4, 4, 1, 1, 1, 1, 1, + 8, 8, 8, 8, 4, 4, 8, 4, + 4, 1, 1, 1, 1, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 1, 1, 1, 4, 4, 8, 8, + 8, 8, 8, 8, 1, 8, 8, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 8, 8, 8, 8, 1, 1, 4, + 4, 8, 8, 1, 1, 1, 1, 1, + 7, 7, 7, 2, 2, 2, 2, 1, + 1, 1, 9, 1, 1, 8, 8, 4, + 4, 1, 8, 8, 4, 4, 4, 4, + 4, 4, 8, 4, 4, 4, 4, 8, + 4, 4, 4, 4, 4, 4, 8, 8, + 4, 4, 8, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 6, + 6, 1, 3, 3, 3, 3, 6, 3, + 3, 6, 6, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 3, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 3, 3, + 3, 3, 3, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 4, 3, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 4, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 5, 4, 3, 4, 4, 4, + 5, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 5, 4, + 3, 4, 4, 4, 5, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 0, 0, 2, 5, + 1, 4, 5, 5, 4, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 4, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 4, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 4, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 4, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 5, + 4, 3, 4, 4, 4, 5, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 0, 0, 2, + 5, 1, 4, 5, 5, 4, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 4, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 4, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 4, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 4, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 5, 4, 3, 4, 4, 4, 5, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 0, 0, + 2, 5, 1, 4, 5, 5, 4, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 4, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 4, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 4, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 4, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 5, 4, 3, 4, 4, 4, 5, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 1, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 1, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 1, 0, 1, 0, 2, 1, + 1, 1, 1, 0, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3, 0, 3, 0, + 1, 8, 3, 3, 8, 8, 8, 8, + 8, 3, 3, 3, 3, 1, 3, 8, + 8, 8, 8, 8, 7, 7, 8, 8, + 8, 8, 8, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 7, 3, 3, 3, 3, 3, 8, 8, + 8, 8, 3, 3, 8, 3, 8, 3, + 3, 3, 8, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 8, 8, 8, 8, 8, 8, 8, 3, + 3, 3, 3, 3, 4, 4, 4, 3, + 3, 3, 4, 3, 7, 7, 7, 7, + 7, 7, 7, 7, 9, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 8, + 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 3, 3, 8, + 8, 8, 1, 1, 0, 3, 0, 0, + 3, 0, 3, 0, 3, 0, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 0, 0, 2, 0, + 0, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0 +}; + +static const short _redcloth_scan_index_offsets[] = { + 0, 0, 4, 27, 49, 59, 63, 67, + 77, 88, 99, 106, 117, 128, 139, 150, + 161, 172, 183, 194, 205, 216, 227, 238, + 249, 260, 271, 282, 293, 305, 316, 327, + 338, 350, 361, 372, 382, 393, 404, 415, + 426, 437, 448, 459, 470, 481, 492, 503, + 514, 525, 536, 547, 558, 569, 580, 591, + 603, 614, 625, 638, 649, 660, 671, 682, + 693, 704, 715, 726, 738, 749, 760, 772, + 783, 793, 803, 814, 816, 825, 832, 845, + 859, 868, 883, 898, 906, 917, 919, 931, + 934, 939, 948, 957, 972, 987, 1001, 1016, + 1025, 1034, 1046, 1049, 1060, 1062, 1074, 1077, + 1082, 1091, 1099, 1113, 1128, 1137, 1152, 1167, + 1176, 1189, 1193, 1199, 1208, 1217, 1232, 1247, + 1262, 1278, 1287, 1296, 1306, 1317, 1328, 1335, + 1346, 1357, 1368, 1379, 1390, 1401, 1412, 1423, + 1434, 1445, 1456, 1467, 1478, 1489, 1500, 1511, + 1522, 1534, 1545, 1556, 1567, 1579, 1590, 1601, + 1611, 1622, 1633, 1644, 1655, 1666, 1677, 1688, + 1699, 1710, 1721, 1732, 1743, 1754, 1765, 1776, + 1787, 1798, 1809, 1820, 1832, 1843, 1854, 1867, + 1878, 1889, 1900, 1911, 1922, 1933, 1944, 1955, + 1967, 1978, 1989, 2001, 2012, 2028, 2041, 2044, + 2046, 2048, 2053, 2056, 2058, 2060, 2062, 2064, + 2077, 2089, 2101, 2113, 2125, 2137, 2149, 2161, + 2173, 2186, 2199, 2212, 2225, 2229, 2233, 2236, + 2239, 2245, 2249, 2256, 2259, 2263, 2267, 2270, + 2273, 2279, 2283, 2286, 2289, 2291, 2297, 2300, + 2303, 2305, 2308, 2311, 2313, 2316, 2329, 2342, + 2355, 2371, 2384, 2396, 2399, 2401, 2403, 2408, + 2411, 2414, 2431, 2435, 2437, 2439, 2452, 2465, + 2468, 2470, 2472, 2477, 2480, 2483, 2500, 2504, + 2506, 2508, 2524, 2530, 2533, 2535, 2537, 2542, + 2545, 2549, 2554, 2556, 2558, 2560, 2562, 2566, + 2570, 2575, 2580, 2583, 2586, 2594, 2600, 2605, + 2610, 2613, 2616, 2621, 2626, 2629, 2632, 2648, + 2663, 2678, 2693, 2708, 2723, 2738, 2753, 2768, + 2784, 2800, 2816, 2832, 2839, 2846, 2850, 2853, + 2856, 2862, 2866, 2873, 2876, 2880, 2884, 2888, + 2891, 2894, 2900, 2904, 2907, 2910, 2912, 2918, + 2921, 2924, 2926, 2929, 2932, 2934, 2937, 2942, + 2947, 2953, 2959, 2963, 2967, 2976, 2983, 2993, + 2999, 3006, 3013, 3018, 3023, 3029, 3035, 3039, + 3043, 3052, 3059, 3065, 3071, 3075, 3079, 3084, + 3093, 3099, 3105, 3109, 3113, 3118, 3124, 3130, + 3135, 3141, 3157, 3173, 3189, 3194, 3212, 3217, + 3235, 3252, 3254, 3256, 3258, 3260, 3273, 3285, + 3297, 3309, 3321, 3333, 3345, 3357, 3369, 3382, + 3395, 3408, 3421, 3425, 3429, 3432, 3435, 3441, + 3445, 3452, 3455, 3459, 3463, 3466, 3469, 3475, + 3479, 3482, 3485, 3487, 3493, 3496, 3499, 3501, + 3504, 3507, 3509, 3512, 3525, 3538, 3551, 3567, + 3573, 3576, 3578, 3580, 3585, 3588, 3592, 3597, + 3599, 3601, 3603, 3605, 3609, 3613, 3618, 3623, + 3626, 3629, 3637, 3643, 3648, 3653, 3656, 3659, + 3664, 3669, 3672, 3675, 3691, 3706, 3721, 3736, + 3751, 3766, 3781, 3796, 3811, 3827, 3843, 3859, + 3875, 3882, 3889, 3893, 3896, 3899, 3905, 3909, + 3916, 3919, 3923, 3927, 3931, 3934, 3937, 3943, + 3947, 3950, 3953, 3955, 3961, 3964, 3967, 3969, + 3972, 3975, 3977, 3980, 3985, 3990, 3996, 4002, + 4006, 4010, 4019, 4026, 4036, 4042, 4049, 4056, + 4061, 4066, 4072, 4078, 4082, 4086, 4095, 4102, + 4108, 4114, 4118, 4122, 4127, 4136, 4142, 4148, + 4152, 4156, 4161, 4167, 4173, 4178, 4184, 4200, + 4216, 4232, 4237, 4255, 4260, 4278, 4295, 4297, + 4299, 4301, 4303, 4316, 4328, 4341, 4354, 4367, + 4380, 4393, 4397, 4401, 4404, 4407, 4413, 4417, + 4424, 4427, 4431, 4435, 4438, 4441, 4447, 4451, + 4454, 4457, 4459, 4465, 4468, 4471, 4473, 4476, + 4479, 4481, 4484, 4497, 4510, 4523, 4535, 4547, + 4559, 4571, 4583, 4595, 4607, 4611, 4617, 4623, + 4628, 4635, 4646, 4657, 4668, 4679, 4690, 4701, + 4712, 4723, 4731, 4743, 4754, 4762, 4764, 4768, + 4770, 4772, 4774, 4776, 4778, 4788, 4798, 4809, + 4811, 4817, 4826, 4833, 4846, 4860, 4869, 4884, + 4899, 4907, 4918, 4921, 4926, 4929, 4932, 4935, + 4938, 4941, 4953, 4956, 4963, 4972, 4981, 4996, + 5011, 5025, 5040, 5049, 5058, 5070, 5074, 5085, + 5088, 5093, 5096, 5099, 5102, 5105, 5108, 5120, + 5123, 5130, 5139, 5147, 5161, 5176, 5185, 5200, + 5215, 5224, 5230, 5234, 5238, 5242, 5246, 5250, + 5263, 5267, 5275, 5284, 5293, 5308, 5323, 5338, + 5354, 5363, 5372, 5385, 5396, 5407, 5418, 5429, + 5437, 5439, 5449, 5459, 5470, 5472, 5481, 5488, + 5501, 5515, 5524, 5539, 5554, 5562, 5573, 5576, + 5588, 5591, 5600, 5609, 5624, 5639, 5653, 5668, + 5677, 5686, 5698, 5702, 5713, 5716, 5728, 5731, + 5740, 5748, 5762, 5777, 5786, 5801, 5816, 5825, + 5838, 5842, 5851, 5860, 5875, 5890, 5905, 5921, + 5930, 5939, 5952, 5955, 5957, 5959, 5964, 5967, + 5970, 5972, 5974, 5976, 5978, 5980, 5993, 6005, + 6017, 6029, 6041, 6053, 6065, 6077, 6089, 6102, + 6115, 6128, 6141, 6145, 6149, 6152, 6155, 6161, + 6165, 6172, 6175, 6179, 6183, 6186, 6189, 6195, + 6199, 6202, 6205, 6207, 6213, 6216, 6219, 6221, + 6224, 6227, 6229, 6232, 6245, 6258, 6271, 6290, + 6311, 6330, 6349, 6369, 6389, 6409, 6429, 6449, + 6469, 6489, 6509, 6529, 6549, 6569, 6589, 6609, + 6629, 6649, 6670, 6673, 6676, 6679, 6682, 6685, + 6688, 6691, 6694, 6696, 6698, 6700, 6702, 6704, + 6706, 6708, 6710, 6712, 6714, 6716, 6718, 6720, + 6722, 6724, 6726, 6728, 6731, 6734, 6736, 6738, + 6741, 6744, 6747, 6750, 6753, 6756, 6759, 6764, + 6769, 6793, 6811, 6816, 6836, 6844, 6852, 6860, + 6868, 6876, 6884, 6903, 6923, 6943, 6950, 6956, + 6962, 6971, 6978, 6999, 7008, 7017, 7038, 7057, + 7066, 7075, 7097, 7104, 7126, 7146, 7156, 7166, + 7185, 7194, 7202, 7210, 7221, 7230, 7253, 7275, + 7296, 7317, 7328, 7339, 7362, 7373, 7384, 7394, + 7404, 7415, 7426, 7450, 7472, 7482, 7492, 7504, + 7516, 7534, 7552, 7570, 7577, 7595, 7613, 7620, + 7627, 7653, 7674, 7705, 7717, 7729, 7760, 7790, + 7820, 7840, 7860, 7870, 7880, 7888, 7911, 7932, + 7943, 7954, 7965, 7976, 7998, 8009, 8020, 8030, + 8040, 8070, 8091, 8121, 8140, 8159, 8178, 8197, + 8216, 8225, 8234, 8242, 8250, 8261, 8270, 8297, + 8319, 8342, 8364, 8386, 8407, 8428, 8439, 8450, + 8477, 8499, 8521, 8530, 8538, 8561, 8573, 8585, + 8597, 8609, 8632, 8653, 8675, 8696, 8707, 8718, + 8742, 8764, 8776, 8788, 8798, 8807, 8816, 8828, + 8838, 8862, 8885, 8907, 8929, 8941, 8953, 8977, + 8989, 9001, 9013, 9022, 9030, 9039, 9051, 9063, + 9074, 9085, 9095, 9105, 9117, 9129, 9141, 9153, + 9166, 9179, 9192, 9201, 9211, 9224, 9237, 9262, + 9285, 9311, 9334, 9355, 9376, 9384, 9411, 9432, + 9443, 9454, 9467, 9480, 9491, 9502, 9513, 9524, + 9536, 9548, 9573, 9595, 9618, 9642, 9650, 9658, + 9670, 9682, 9702, 9723, 9730, 9738, 9757, 9776, + 9795, 9826, 9857, 9888, 9896, 9917, 9925, 9946, + 9964, 9972, 9990, 10011, 10029, 10049, 10067, 10085, + 10093, 10101, 10107, 10128, 10147, 10156, 10165, 10174, + 10183, 10193, 10203, 10222, 10232, 10242, 10250, 10258, + 10278, 10287, 10296, 10306, 10316, 10324, 10332, 10351, + 10371, 10380, 10389, 10410, 10416, 10436, 10441, 10447, + 10454, 10466, 10479, 10482, 10484, 10486, 10491, 10494, + 10497, 10499, 10501, 10503, 10505, 10507, 10520, 10532, + 10544, 10556, 10568, 10580, 10592, 10604, 10616, 10629, + 10642, 10655, 10668, 10672, 10676, 10679, 10682, 10688, + 10692, 10699, 10702, 10706, 10710, 10713, 10716, 10722, + 10726, 10729, 10732, 10734, 10740, 10743, 10746, 10748, + 10751, 10754, 10756, 10759, 10772, 10785, 10798, 10810, + 10823, 10826, 10828, 10830, 10835, 10838, 10842, 10845, + 10860, 10873, 10881, 10885, 10889, 10893, 10897, 10911, + 10915, 10919, 10933, 10947, 10949, 10951, 10953, 10955, + 10968, 10980, 10992, 11004, 11016, 11028, 11040, 11052, + 11064, 11077, 11090, 11103, 11116, 11120, 11124, 11127, + 11130, 11136, 11140, 11147, 11150, 11154, 11158, 11161, + 11164, 11170, 11174, 11177, 11180, 11182, 11188, 11191, + 11194, 11196, 11199, 11202, 11204, 11207, 11220, 11233, + 11246, 11266, 11279, 11292, 11295, 11297, 11299, 11304, + 11307, 11309, 11311, 11313, 11315, 11328, 11340, 11352, + 11364, 11376, 11388, 11400, 11412, 11424, 11437, 11450, + 11463, 11476, 11480, 11484, 11487, 11490, 11496, 11500, + 11507, 11510, 11514, 11518, 11521, 11524, 11530, 11534, + 11537, 11540, 11542, 11548, 11551, 11554, 11556, 11559, + 11562, 11564, 11567, 11580, 11593, 11606, 11626, 11646, + 11666, 11686, 11706, 11726, 11746, 11758, 11771, 11774, + 11776, 11778, 11783, 11786, 11789, 11791, 11793, 11795, + 11797, 11799, 11812, 11824, 11836, 11848, 11860, 11872, + 11884, 11896, 11908, 11921, 11934, 11947, 11960, 11964, + 11968, 11971, 11974, 11980, 11984, 11991, 11994, 11998, + 12002, 12005, 12008, 12014, 12018, 12021, 12024, 12026, + 12032, 12035, 12038, 12040, 12043, 12046, 12048, 12051, + 12064, 12077, 12090, 12110, 12122, 12135, 12138, 12140, + 12142, 12147, 12150, 12153, 12155, 12157, 12159, 12161, + 12163, 12176, 12188, 12200, 12212, 12224, 12236, 12248, + 12260, 12272, 12285, 12298, 12311, 12324, 12328, 12332, + 12335, 12338, 12344, 12348, 12355, 12358, 12362, 12366, + 12369, 12372, 12378, 12382, 12385, 12388, 12390, 12396, + 12399, 12402, 12404, 12407, 12410, 12412, 12415, 12428, + 12441, 12454, 12473, 12495, 12515, 12534, 12547, 12550, + 12552, 12554, 12559, 12562, 12566, 12579, 12581, 12583, + 12585, 12587, 12600, 12612, 12624, 12636, 12648, 12660, + 12672, 12684, 12696, 12709, 12722, 12735, 12748, 12752, + 12756, 12759, 12762, 12768, 12772, 12779, 12782, 12786, + 12790, 12793, 12796, 12802, 12806, 12809, 12812, 12814, + 12820, 12823, 12826, 12828, 12831, 12834, 12836, 12839, + 12852, 12865, 12878, 12881, 12883, 12885, 12887, 12889, + 12893, 12895, 12897, 12899, 12901, 12903, 12920, 12931, + 12934, 12936, 12938, 12943, 12946, 12948, 12950, 12952, + 12954, 12964, 12968, 12972, 12975, 12978, 12983, 12986, + 12989, 12994, 12998, 13001, 13004, 13009, 13012, 13015, + 13021, 13025, 13028, 13047, 13064, 13081, 13099, 13117, + 13135, 13153, 13171, 13189, 13207, 13225, 13243, 13262, + 13280, 13298, 13316, 13334, 13352, 13370, 13388, 13406, + 13424, 13426, 13428, 13430, 13432, 13434, 13436, 13438, + 13440, 13442, 13444, 13446, 13448, 13450, 13452, 13454, + 13456, 13458, 13475, 13486, 13489, 13491, 13493, 13498, + 13501, 13503, 13505, 13507, 13509, 13519, 13523, 13527, + 13530, 13533, 13538, 13541, 13544, 13549, 13553, 13556, + 13559, 13564, 13567, 13570, 13576, 13580, 13583, 13602, + 13619, 13636, 13654, 13672, 13690, 13708, 13726, 13744, + 13762, 13780, 13798, 13817, 13835, 13853, 13871, 13889, + 13907, 13925, 13943, 13961, 13979, 13983, 13985, 14007, + 14017, 14021, 14031, 14042, 14053, 14060, 14071, 14082, + 14093, 14104, 14115, 14126, 14137, 14148, 14159, 14170, + 14181, 14192, 14203, 14214, 14225, 14236, 14247, 14259, + 14270, 14281, 14292, 14304, 14315, 14326, 14336, 14347, + 14358, 14369, 14380, 14391, 14402, 14413, 14424, 14435, + 14446, 14457, 14468, 14479, 14490, 14501, 14512, 14523, + 14534, 14545, 14557, 14568, 14579, 14592, 14603, 14614, + 14625, 14636, 14647, 14658, 14669, 14680, 14692, 14703, + 14714, 14726, 14737, 14754, 14765, 14768, 14770, 14772, + 14777, 14780, 14782, 14784, 14786, 14788, 14798, 14802, + 14806, 14809, 14812, 14817, 14820, 14823, 14828, 14832, + 14835, 14838, 14843, 14846, 14849, 14855, 14859, 14862, + 14881, 14898, 14915, 14933, 14951, 14969, 14987, 15005, + 15023, 15041, 15059, 15077, 15096, 15114, 15132, 15150, + 15168, 15186, 15204, 15222, 15240, 15258, 15262, 15264, + 15286, 15296, 15300, 15310, 15321, 15332, 15339, 15350, + 15361, 15372, 15383, 15394, 15405, 15416, 15427, 15438, + 15449, 15460, 15471, 15482, 15493, 15504, 15515, 15526, + 15538, 15549, 15560, 15571, 15583, 15594, 15605, 15615, + 15626, 15637, 15648, 15659, 15670, 15681, 15692, 15703, + 15714, 15725, 15736, 15747, 15758, 15769, 15780, 15791, + 15802, 15813, 15824, 15836, 15847, 15858, 15871, 15882, + 15893, 15904, 15915, 15926, 15937, 15948, 15959, 15971, + 15982, 15993, 16005, 16016, 16033, 16044, 16047, 16049, + 16051, 16056, 16059, 16061, 16063, 16065, 16067, 16077, + 16081, 16085, 16088, 16091, 16096, 16099, 16102, 16107, + 16111, 16114, 16117, 16122, 16125, 16128, 16134, 16138, + 16141, 16160, 16177, 16194, 16212, 16230, 16248, 16266, + 16284, 16302, 16320, 16338, 16356, 16375, 16393, 16411, + 16429, 16447, 16465, 16483, 16501, 16519, 16537, 16541, + 16543, 16565, 16575, 16579, 16589, 16600, 16611, 16618, + 16629, 16640, 16651, 16662, 16673, 16684, 16695, 16706, + 16717, 16728, 16739, 16750, 16761, 16772, 16783, 16794, + 16805, 16817, 16828, 16839, 16850, 16862, 16873, 16884, + 16894, 16905, 16916, 16927, 16938, 16949, 16960, 16971, + 16982, 16993, 17004, 17015, 17026, 17037, 17048, 17059, + 17070, 17081, 17092, 17103, 17115, 17126, 17137, 17150, + 17161, 17172, 17183, 17194, 17205, 17216, 17227, 17238, + 17250, 17261, 17272, 17284, 17295, 17312, 17323, 17326, + 17328, 17330, 17335, 17338, 17340, 17342, 17344, 17346, + 17356, 17360, 17364, 17367, 17370, 17375, 17378, 17381, + 17386, 17390, 17393, 17396, 17401, 17404, 17407, 17413, + 17417, 17420, 17439, 17456, 17473, 17491, 17509, 17527, + 17545, 17563, 17581, 17599, 17617, 17635, 17654, 17672, + 17690, 17708, 17726, 17744, 17762, 17780, 17798, 17816, + 17832, 17845, 17848, 17850, 17852, 17857, 17860, 17862, + 17864, 17866, 17868, 17881, 17893, 17905, 17917, 17929, + 17941, 17953, 17965, 17977, 17990, 18003, 18016, 18029, + 18033, 18037, 18040, 18043, 18049, 18053, 18060, 18063, + 18067, 18071, 18074, 18077, 18083, 18087, 18090, 18093, + 18095, 18101, 18104, 18107, 18109, 18112, 18115, 18117, + 18120, 18133, 18146, 18159, 18175, 18188, 18200, 18216, + 18229, 18232, 18234, 18236, 18241, 18244, 18246, 18248, + 18250, 18252, 18265, 18277, 18289, 18301, 18313, 18325, + 18337, 18349, 18361, 18374, 18387, 18400, 18413, 18417, + 18421, 18424, 18427, 18433, 18437, 18444, 18447, 18451, + 18455, 18458, 18461, 18467, 18471, 18474, 18477, 18479, + 18485, 18488, 18491, 18493, 18496, 18499, 18501, 18504, + 18517, 18530, 18543, 18559, 18572, 18584, 18586, 18587, + 18589, 18592, 18595, 18623, 18627, 18629, 18632, 18635, + 18640, 18645, 18649, 18655, 18661, 18666, 18671, 18675, + 18679, 18683, 18686, 18687, 18688, 18704, 18706, 18719, + 18736, 18753, 18765, 18781, 18794, 18800, 18803, 18837, + 18841, 18847, 18852, 18857, 18859, 18866, 18872, 18877, + 18879, 18886, 18892, 18899, 18906, 18912, 18915, 18923, + 18930, 18938, 18946, 18953, 18960, 18966, 18972, 18973, + 18977, 18979, 18984, 18986, 18991, 18996, 18999, 19005, + 19011, 19016, 19020, 19032, 19044, 19063, 19065, 19085, + 19088, 19094, 19112, 19124, 19138, 19157, 19176, 19194, + 19213, 19232, 19245, 19258, 19283, 19297, 19317, 19332, + 19353, 19377, 19397, 19418, 19439, 19469, 19500, 19522, + 19543, 19565, 19587, 19608, 19624, 19639, 19656, 19674, + 19690, 19708, 19733, 19757, 19781, 19804, 19827, 19841, + 19857, 19887, 19901, 19921, 19935, 19950, 19965, 19986, + 20008, 20030, 20051, 20068, 20092, 20114, 20129, 20150, + 20166, 20181, 20199, 20221, 20237, 20252, 20273, 20289, + 20304, 20322, 20338, 20360, 20376, 20392, 20409, 20426, + 20442, 20464, 20489, 20512, 20535, 20557, 20580, 20603, + 20628, 20650, 20672, 20695, 20718, 20739, 20760, 20784, + 20804, 20829, 20851, 20874, 20897, 20917, 20937, 20958, + 20980, 21002, 21023, 21049, 21071, 21098, 21120, 21142, + 21165, 21189, 21213, 21239, 21262, 21277, 21298, 21315, + 21331, 21349, 21368, 21383, 21398, 21417, 21433, 21452, + 21472, 21492, 21513, 21534, 21560, 21581, 21602, 21624, + 21638, 21653, 21677, 21701, 21725, 21751, 21766, 21792, + 21815, 21838, 21861, 21876, 21901, 21932, 21962, 21992, + 22022, 22052, 22083, 22114, 22145, 22166, 22178, 22196, + 22210, 22224, 22237, 22252, 22268, 22280, 22293, 22306, + 22325, 22345, 22365, 22387, 22407, 22427, 22448, 22469, + 22489, 22507, 22525, 22548, 22567, 22586, 22601, 22617, + 22636, 22656, 22676, 22681, 22686, 22698, 22719, 22721, + 22723, 22742, 22744, 22764, 22766, 22786, 22788, 22808, + 22811, 22813, 22830, 22842, 22845, 22847, 22849, 22852, + 22854, 22862, 22865, 22867, 22869, 22872, 22875, 22877, + 22879, 22882, 22884, 22892, 22897, 22901, 22905, 22909, + 22910, 22912, 22915, 22917, 22925, 22928, 22933, 22941, + 22944, 22951, 22959, 22961, 22964, 22966, 22969, 22973, + 22975, 22977, 22981, 22984, 22986, 22988, 22990 +}; + +static const short _redcloth_scan_indicies[] = { + 1, 1, 2, 0, 3, 4, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 17, 20, + 4, 4, 0, 21, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 34, 37, 21, 21, + 0, 38, 39, 21, 21, 38, 21, 21, + 21, 21, 0, 38, 39, 38, 0, 39, + 40, 39, 0, 21, 21, 41, 42, 43, + 21, 21, 21, 21, 0, 38, 39, 21, + 21, 44, 38, 21, 21, 21, 21, 0, + 38, 39, 21, 21, 34, 38, 21, 21, + 21, 21, 0, 21, 21, 21, 21, 21, + 21, 0, 38, 39, 21, 21, 45, 38, + 21, 21, 21, 21, 0, 38, 39, 21, + 21, 46, 38, 21, 21, 21, 21, 0, + 38, 39, 21, 21, 47, 38, 21, 21, + 21, 21, 0, 38, 39, 21, 21, 26, + 38, 21, 21, 21, 21, 0, 38, 39, + 21, 21, 34, 38, 21, 21, 21, 21, + 0, 38, 39, 21, 21, 48, 38, 21, + 21, 21, 21, 0, 38, 39, 21, 21, + 49, 38, 21, 21, 21, 21, 0, 38, + 39, 21, 21, 36, 38, 21, 21, 21, + 21, 0, 38, 39, 21, 21, 34, 38, + 21, 21, 21, 21, 0, 21, 21, 50, + 51, 52, 34, 21, 21, 21, 21, 0, + 38, 39, 21, 21, 53, 38, 21, 21, + 21, 21, 0, 38, 39, 21, 21, 54, + 38, 21, 21, 21, 21, 0, 38, 39, + 21, 21, 27, 38, 21, 21, 21, 21, + 0, 38, 39, 21, 21, 55, 38, 21, + 21, 21, 21, 0, 38, 39, 21, 21, + 36, 38, 21, 21, 21, 21, 0, 38, + 39, 21, 21, 34, 38, 21, 21, 21, + 21, 0, 38, 39, 21, 21, 34, 38, + 21, 21, 21, 21, 0, 38, 39, 21, + 21, 56, 57, 38, 21, 21, 21, 21, + 0, 38, 39, 21, 21, 58, 38, 21, + 21, 21, 21, 0, 38, 39, 21, 21, + 34, 38, 21, 21, 21, 21, 0, 38, + 39, 21, 21, 58, 38, 21, 21, 21, + 21, 0, 38, 39, 21, 21, 59, 60, + 38, 21, 21, 21, 21, 0, 38, 39, + 21, 21, 34, 38, 21, 21, 21, 21, + 0, 38, 39, 21, 21, 34, 38, 21, + 21, 21, 21, 0, 21, 21, 61, 52, + 62, 21, 21, 21, 21, 0, 38, 39, + 21, 21, 63, 38, 21, 21, 21, 21, + 0, 38, 39, 21, 21, 64, 38, 21, + 21, 21, 21, 0, 38, 39, 21, 21, + 58, 38, 21, 21, 21, 21, 0, 38, + 39, 21, 21, 34, 38, 21, 21, 21, + 21, 0, 38, 39, 21, 21, 65, 38, + 21, 21, 21, 21, 0, 38, 39, 21, + 21, 34, 38, 21, 21, 21, 21, 0, + 38, 39, 21, 21, 66, 38, 21, 21, + 21, 21, 0, 38, 39, 21, 21, 34, + 38, 21, 21, 21, 21, 0, 38, 39, + 21, 21, 67, 38, 21, 21, 21, 21, + 0, 38, 39, 21, 21, 68, 38, 21, + 21, 21, 21, 0, 38, 39, 21, 21, + 69, 38, 21, 21, 21, 21, 0, 38, + 39, 21, 21, 70, 38, 21, 21, 21, + 21, 0, 38, 39, 21, 21, 71, 38, + 21, 21, 21, 21, 0, 38, 39, 21, + 21, 72, 38, 21, 21, 21, 21, 0, + 38, 39, 21, 21, 58, 38, 21, 21, + 21, 21, 0, 38, 39, 21, 21, 73, + 38, 21, 21, 21, 21, 0, 38, 39, + 21, 21, 74, 38, 21, 21, 21, 21, + 0, 38, 39, 21, 21, 75, 38, 21, + 21, 21, 21, 0, 38, 39, 21, 21, + 36, 38, 21, 21, 21, 21, 0, 38, + 39, 21, 21, 76, 58, 38, 21, 21, + 21, 21, 0, 38, 39, 21, 21, 77, + 38, 21, 21, 21, 21, 0, 38, 39, + 21, 21, 26, 38, 21, 21, 21, 21, + 0, 21, 21, 78, 79, 80, 81, 82, + 83, 21, 21, 21, 21, 0, 38, 39, + 21, 21, 66, 38, 21, 21, 21, 21, + 0, 38, 39, 21, 21, 84, 38, 21, + 21, 21, 21, 0, 38, 39, 21, 21, + 85, 38, 21, 21, 21, 21, 0, 38, + 39, 21, 21, 36, 38, 21, 21, 21, + 21, 0, 38, 39, 21, 21, 86, 38, + 21, 21, 21, 21, 0, 38, 39, 21, + 21, 59, 38, 21, 21, 21, 21, 0, + 38, 39, 21, 21, 60, 38, 21, 21, + 21, 21, 0, 38, 39, 21, 21, 87, + 38, 21, 21, 21, 21, 0, 38, 39, + 21, 21, 88, 89, 38, 21, 21, 21, + 21, 0, 38, 39, 21, 21, 58, 38, + 21, 21, 21, 21, 0, 38, 39, 21, + 21, 52, 38, 21, 21, 21, 21, 0, + 38, 39, 21, 21, 34, 34, 38, 21, + 21, 21, 21, 0, 38, 39, 21, 21, + 44, 38, 21, 21, 21, 21, 0, 90, + 91, 92, 4, 4, 90, 4, 4, 4, + 0, 90, 91, 92, 93, 93, 90, 93, + 93, 93, 0, 93, 91, 94, 92, 93, + 93, 93, 93, 93, 93, 0, 39, 0, + 96, 96, 98, 99, 0, 92, 96, 97, + 95, 90, 90, 0, 92, 90, 100, 95, + 90, 90, 0, 92, 101, 101, 90, 100, + 101, 101, 101, 101, 95, 93, 93, 0, + 97, 92, 101, 101, 93, 101, 101, 101, + 101, 101, 95, 102, 102, 104, 105, 0, + 92, 102, 103, 95, 102, 102, 98, 99, + 0, 92, 101, 101, 102, 103, 101, 101, + 101, 101, 95, 102, 102, 104, 105, 0, + 92, 101, 101, 102, 103, 101, 101, 101, + 101, 95, 106, 106, 100, 98, 108, 106, + 107, 104, 106, 90, 110, 108, 109, 109, + 106, 109, 109, 109, 98, 90, 98, 109, + 90, 110, 111, 108, 109, 109, 109, 109, + 109, 109, 98, 90, 112, 98, 112, 113, + 112, 90, 98, 114, 114, 106, 116, 98, + 108, 114, 115, 104, 117, 117, 106, 116, + 98, 108, 117, 118, 104, 117, 117, 106, + 116, 98, 108, 119, 119, 117, 118, 119, + 119, 119, 119, 104, 117, 117, 107, 120, + 98, 108, 119, 119, 117, 118, 119, 119, + 119, 119, 104, 106, 106, 100, 98, 108, + 119, 119, 106, 107, 119, 119, 119, 119, + 104, 109, 109, 100, 98, 115, 108, 119, + 119, 109, 119, 119, 119, 119, 119, 104, + 117, 117, 107, 120, 98, 108, 117, 118, + 104, 121, 121, 123, 107, 116, 124, 121, + 122, 120, 121, 125, 106, 127, 124, 126, + 126, 121, 126, 126, 126, 116, 125, 106, + 116, 125, 90, 129, 130, 128, 128, 125, + 128, 128, 128, 99, 90, 99, 128, 90, + 129, 131, 130, 128, 128, 128, 128, 128, + 128, 99, 90, 132, 99, 132, 133, 132, + 90, 99, 134, 134, 116, 125, 99, 130, + 134, 135, 105, 125, 125, 100, 99, 130, + 125, 123, 105, 125, 125, 100, 99, 130, + 136, 136, 125, 123, 136, 136, 136, 136, + 105, 128, 128, 100, 99, 135, 130, 136, + 136, 128, 136, 136, 136, 136, 136, 105, + 137, 137, 120, 123, 99, 130, 137, 138, + 105, 137, 137, 116, 125, 99, 130, 136, + 136, 137, 138, 136, 136, 136, 136, 105, + 137, 137, 120, 123, 99, 130, 136, 136, + 137, 138, 136, 136, 136, 136, 105, 137, + 137, 116, 125, 99, 130, 137, 138, 105, + 126, 125, 106, 127, 139, 124, 126, 126, + 126, 126, 126, 126, 116, 125, 106, 140, + 116, 140, 141, 140, 125, 106, 116, 142, + 142, 121, 121, 116, 124, 142, 143, 120, + 144, 144, 121, 121, 116, 124, 144, 145, + 120, 144, 144, 121, 121, 116, 124, 146, + 146, 144, 145, 146, 146, 146, 146, 120, + 144, 144, 122, 122, 116, 124, 146, 146, + 144, 145, 146, 146, 146, 146, 120, 121, + 121, 123, 107, 116, 124, 146, 146, 121, + 122, 146, 146, 146, 146, 120, 126, 126, + 123, 107, 116, 143, 124, 146, 146, 126, + 146, 146, 146, 146, 146, 120, 144, 144, + 122, 122, 116, 124, 144, 145, 120, 102, + 102, 98, 99, 0, 92, 102, 103, 95, + 4, 4, 147, 148, 149, 4, 4, 4, + 4, 0, 90, 91, 92, 4, 4, 150, + 90, 4, 4, 4, 0, 90, 91, 92, + 4, 4, 17, 90, 4, 4, 4, 0, + 4, 4, 4, 4, 4, 4, 0, 90, + 91, 92, 4, 4, 151, 90, 4, 4, + 4, 0, 90, 91, 92, 4, 4, 152, + 90, 4, 4, 4, 0, 90, 91, 92, + 4, 4, 153, 90, 4, 4, 4, 0, + 90, 91, 92, 4, 4, 9, 90, 4, + 4, 4, 0, 90, 91, 92, 4, 4, + 17, 90, 4, 4, 4, 0, 90, 91, + 92, 4, 4, 154, 90, 4, 4, 4, + 0, 90, 91, 92, 4, 4, 155, 90, + 4, 4, 4, 0, 90, 91, 92, 4, + 4, 19, 90, 4, 4, 4, 0, 90, + 91, 92, 4, 4, 17, 90, 4, 4, + 4, 0, 4, 4, 156, 157, 158, 17, + 4, 4, 4, 4, 0, 90, 91, 92, + 4, 4, 159, 90, 4, 4, 4, 0, + 90, 91, 92, 4, 4, 160, 90, 4, + 4, 4, 0, 90, 91, 92, 4, 4, + 10, 90, 4, 4, 4, 0, 90, 91, + 92, 4, 4, 161, 90, 4, 4, 4, + 0, 90, 91, 92, 4, 4, 19, 90, + 4, 4, 4, 0, 90, 91, 92, 4, + 4, 17, 90, 4, 4, 4, 0, 90, + 91, 92, 4, 4, 17, 90, 4, 4, + 4, 0, 90, 91, 92, 4, 4, 162, + 163, 90, 4, 4, 4, 0, 90, 91, + 92, 4, 4, 164, 90, 4, 4, 4, + 0, 90, 91, 92, 4, 4, 17, 90, + 4, 4, 4, 0, 90, 91, 92, 4, + 4, 164, 90, 4, 4, 4, 0, 90, + 91, 92, 4, 4, 165, 166, 90, 4, + 4, 4, 0, 90, 91, 92, 4, 4, + 17, 90, 4, 4, 4, 0, 90, 91, + 92, 4, 4, 17, 90, 4, 4, 4, + 0, 4, 4, 167, 158, 168, 4, 4, + 4, 4, 0, 90, 91, 92, 4, 4, + 169, 90, 4, 4, 4, 0, 90, 91, + 92, 4, 4, 170, 90, 4, 4, 4, + 0, 90, 91, 92, 4, 4, 164, 90, + 4, 4, 4, 0, 90, 91, 92, 4, + 4, 17, 90, 4, 4, 4, 0, 90, + 91, 92, 4, 4, 171, 90, 4, 4, + 4, 0, 90, 91, 92, 4, 4, 17, + 90, 4, 4, 4, 0, 90, 91, 92, + 4, 4, 172, 90, 4, 4, 4, 0, + 90, 91, 92, 4, 4, 17, 90, 4, + 4, 4, 0, 90, 91, 92, 4, 4, + 173, 90, 4, 4, 4, 0, 90, 91, + 92, 4, 4, 174, 90, 4, 4, 4, + 0, 90, 91, 92, 4, 4, 175, 90, + 4, 4, 4, 0, 90, 91, 92, 4, + 4, 176, 90, 4, 4, 4, 0, 90, + 91, 92, 4, 4, 177, 90, 4, 4, + 4, 0, 90, 91, 92, 4, 4, 178, + 90, 4, 4, 4, 0, 90, 91, 92, + 4, 4, 164, 90, 4, 4, 4, 0, + 90, 91, 92, 4, 4, 179, 90, 4, + 4, 4, 0, 90, 91, 92, 4, 4, + 180, 90, 4, 4, 4, 0, 90, 91, + 92, 4, 4, 181, 90, 4, 4, 4, + 0, 90, 91, 92, 4, 4, 19, 90, + 4, 4, 4, 0, 90, 91, 92, 4, + 4, 182, 164, 90, 4, 4, 4, 0, + 90, 91, 92, 4, 4, 183, 90, 4, + 4, 4, 0, 90, 91, 92, 4, 4, + 9, 90, 4, 4, 4, 0, 4, 4, + 184, 185, 186, 187, 188, 189, 4, 4, + 4, 4, 0, 90, 91, 92, 4, 4, + 172, 90, 4, 4, 4, 0, 90, 91, + 92, 4, 4, 190, 90, 4, 4, 4, + 0, 90, 91, 92, 4, 4, 191, 90, + 4, 4, 4, 0, 90, 91, 92, 4, + 4, 19, 90, 4, 4, 4, 0, 90, + 91, 92, 4, 4, 192, 90, 4, 4, + 4, 0, 90, 91, 92, 4, 4, 165, + 90, 4, 4, 4, 0, 90, 91, 92, + 4, 4, 166, 90, 4, 4, 4, 0, + 90, 91, 92, 4, 4, 193, 90, 4, + 4, 4, 0, 90, 91, 92, 4, 4, + 194, 195, 90, 4, 4, 4, 0, 90, + 91, 92, 4, 4, 164, 90, 4, 4, + 4, 0, 90, 91, 92, 4, 4, 158, + 90, 4, 4, 4, 0, 90, 91, 92, + 4, 4, 17, 17, 90, 4, 4, 4, + 0, 90, 91, 92, 4, 4, 150, 90, + 4, 4, 4, 0, 197, 198, 199, 200, + 201, 202, 204, 205, 206, 207, 208, 209, + 210, 211, 203, 196, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, + 212, 226, 227, 225, 196, 228, 230, 229, + 231, 232, 233, 234, 196, 214, 235, 212, + 196, 236, 238, 237, 196, 239, 241, 240, + 213, 226, 215, 242, 217, 218, 219, 220, + 221, 222, 223, 224, 212, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, + 196, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 196, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, + 196, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 196, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, + 196, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 196, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, + 196, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 196, 254, 226, 331, + 332, 333, 334, 335, 336, 337, 338, 339, + 340, 225, 265, 226, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 225, 276, + 226, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 225, 287, 226, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, + 225, 372, 373, 225, 371, 375, 376, 377, + 374, 237, 379, 378, 381, 382, 380, 231, + 383, 384, 238, 385, 237, 386, 387, 388, + 371, 231, 226, 389, 227, 390, 391, 225, + 226, 227, 212, 393, 394, 225, 392, 396, + 397, 398, 395, 240, 400, 399, 402, 403, + 401, 231, 404, 405, 406, 241, 240, 407, + 408, 409, 392, 240, 411, 410, 413, 414, + 412, 241, 239, 231, 415, 230, 416, 417, + 229, 419, 230, 418, 421, 422, 420, 230, + 228, 423, 229, 378, 424, 229, 399, 238, + 236, 425, 237, 410, 298, 226, 426, 427, + 428, 429, 430, 431, 432, 433, 434, 435, + 225, 309, 226, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 225, 320, 226, + 446, 447, 448, 449, 450, 451, 452, 453, + 454, 455, 225, 456, 457, 458, 459, 460, + 461, 463, 464, 465, 466, 467, 468, 469, + 470, 462, 196, 471, 472, 473, 474, 476, + 477, 478, 479, 480, 481, 482, 475, 196, + 483, 484, 485, 486, 487, 488, 489, 490, + 491, 492, 493, 196, 495, 496, 494, 0, + 497, 499, 498, 500, 501, 502, 503, 0, + 505, 506, 504, 501, 507, 0, 0, 0, + 509, 510, 511, 512, 513, 514, 515, 516, + 517, 518, 519, 520, 521, 522, 508, 0, + 524, 525, 523, 526, 0, 525, 0, 528, + 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 527, 541, 542, 543, 544, + 545, 546, 547, 548, 549, 550, 551, 552, + 540, 554, 555, 553, 527, 556, 558, 557, + 559, 560, 561, 562, 527, 541, 563, 540, + 560, 564, 527, 527, 527, 566, 567, 568, + 569, 570, 571, 572, 573, 574, 575, 576, + 577, 578, 579, 565, 527, 581, 582, 580, + 583, 527, 582, 527, 585, 586, 587, 588, + 589, 590, 591, 592, 593, 594, 595, 596, + 597, 582, 598, 584, 600, 601, 602, 603, + 582, 599, 604, 605, 600, 527, 606, 608, + 607, 609, 610, 611, 612, 527, 613, 614, + 585, 527, 527, 616, 615, 527, 581, 616, + 582, 615, 527, 617, 619, 618, 527, 620, + 622, 621, 623, 604, 605, 600, 604, 605, + 582, 600, 606, 625, 580, 582, 624, 607, + 627, 628, 582, 626, 629, 608, 607, 608, + 582, 607, 527, 581, 630, 631, 632, 633, + 582, 580, 585, 586, 587, 634, 582, 584, + 617, 636, 580, 582, 635, 618, 638, 639, + 582, 637, 640, 619, 618, 619, 582, 618, + 620, 642, 582, 580, 641, 621, 644, 582, + 645, 643, 646, 622, 621, 582, 622, 621, + 585, 586, 602, 588, 647, 590, 591, 592, + 593, 594, 595, 596, 597, 582, 598, 584, + 527, 581, 648, 649, 650, 651, 652, 653, + 654, 655, 656, 657, 582, 658, 580, 527, + 581, 659, 660, 661, 662, 663, 664, 665, + 666, 667, 668, 582, 669, 580, 527, 581, + 670, 671, 672, 673, 674, 675, 676, 677, + 678, 679, 582, 680, 580, 527, 581, 681, + 682, 683, 684, 685, 686, 687, 688, 689, + 690, 582, 691, 580, 527, 581, 692, 693, + 694, 695, 696, 697, 698, 699, 700, 701, + 582, 702, 580, 527, 581, 703, 704, 705, + 706, 707, 708, 709, 710, 711, 712, 582, + 713, 580, 527, 581, 714, 715, 716, 717, + 718, 719, 720, 721, 722, 723, 582, 724, + 580, 527, 581, 725, 726, 727, 728, 729, + 730, 731, 732, 733, 734, 582, 735, 580, + 600, 601, 602, 736, 737, 738, 662, 739, + 740, 741, 742, 743, 744, 582, 745, 599, + 600, 601, 602, 746, 747, 748, 673, 749, + 750, 751, 752, 753, 754, 582, 755, 599, + 600, 601, 602, 756, 757, 758, 684, 759, + 760, 761, 762, 763, 764, 582, 765, 599, + 600, 601, 602, 766, 767, 768, 695, 769, + 770, 771, 772, 773, 774, 582, 775, 599, + 777, 778, 779, 780, 599, 582, 776, 782, + 783, 784, 785, 786, 582, 781, 787, 788, + 789, 782, 618, 791, 790, 793, 794, 792, + 795, 610, 796, 619, 797, 618, 798, 799, + 800, 777, 604, 801, 605, 610, 802, 803, + 600, 604, 605, 585, 804, 805, 600, 777, + 807, 808, 600, 806, 810, 811, 812, 809, + 621, 814, 813, 816, 817, 815, 818, 610, + 819, 820, 622, 621, 821, 822, 823, 806, + 621, 825, 824, 827, 828, 826, 622, 620, + 829, 608, 610, 830, 831, 607, 833, 608, + 832, 835, 836, 834, 608, 606, 837, 607, + 790, 838, 607, 813, 619, 617, 839, 618, + 824, 840, 787, 788, 789, 782, 787, 788, + 789, 582, 782, 790, 842, 637, 843, 582, + 841, 792, 845, 846, 847, 582, 844, 848, + 793, 794, 792, 793, 794, 582, 792, 618, + 638, 849, 631, 850, 639, 851, 582, 637, + 777, 778, 852, 853, 854, 582, 776, 600, + 601, 602, 855, 603, 631, 856, 857, 582, + 599, 585, 586, 602, 603, 582, 584, 806, + 859, 860, 861, 582, 599, 858, 809, 863, + 864, 865, 582, 866, 862, 867, 810, 811, + 812, 809, 810, 811, 582, 812, 809, 813, + 869, 643, 582, 870, 868, 815, 872, 873, + 582, 874, 871, 875, 816, 817, 815, 816, + 582, 817, 815, 621, 644, 876, 631, 877, + 878, 582, 645, 643, 806, 859, 879, 880, + 582, 881, 858, 824, 883, 643, 582, 884, + 882, 826, 886, 887, 582, 888, 885, 889, + 827, 828, 826, 827, 582, 828, 826, 620, + 642, 582, 645, 641, 607, 627, 890, 628, + 631, 891, 892, 582, 626, 832, 894, 895, + 628, 582, 893, 834, 897, 898, 899, 582, + 896, 900, 835, 836, 834, 835, 836, 582, + 834, 606, 625, 628, 582, 624, 790, 842, + 901, 626, 582, 841, 813, 869, 902, 582, + 626, 868, 617, 636, 639, 582, 635, 824, + 883, 903, 582, 637, 882, 600, 601, 602, + 904, 905, 906, 706, 907, 908, 909, 910, + 911, 912, 582, 913, 599, 600, 601, 602, + 914, 915, 916, 717, 917, 918, 919, 920, + 921, 922, 582, 923, 599, 600, 601, 602, + 924, 925, 926, 728, 927, 928, 929, 930, + 931, 932, 582, 933, 599, 527, 581, 582, + 934, 580, 527, 581, 935, 936, 937, 938, + 939, 941, 942, 943, 944, 945, 946, 947, + 582, 948, 940, 580, 527, 581, 582, 949, + 580, 527, 581, 950, 951, 952, 953, 954, + 956, 957, 958, 959, 960, 961, 962, 582, + 963, 955, 580, 527, 581, 964, 965, 966, + 967, 968, 969, 970, 971, 972, 973, 974, + 975, 582, 976, 580, 527, 977, 979, 978, + 527, 980, 982, 981, 554, 542, 983, 544, + 545, 546, 547, 548, 549, 550, 551, 552, + 540, 984, 985, 986, 987, 988, 989, 990, + 991, 992, 993, 994, 527, 995, 996, 997, + 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, + 527, 1006, 1007, 1008, 1009, 1010, 1011, 1012, + 1013, 1014, 1015, 1016, 527, 1017, 1018, 1019, + 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, + 527, 1028, 1029, 1030, 1031, 1032, 1033, 1034, + 1035, 1036, 1037, 1038, 527, 1039, 1040, 1041, + 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, + 527, 1050, 1051, 1052, 1053, 1054, 1055, 1056, + 1057, 1058, 1059, 1060, 527, 1061, 1062, 1063, + 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, + 527, 554, 1072, 1073, 1074, 998, 1075, 1076, + 1077, 1078, 1079, 1080, 1081, 553, 554, 1082, + 1083, 1084, 1009, 1085, 1086, 1087, 1088, 1089, + 1090, 1091, 553, 554, 1092, 1093, 1094, 1020, + 1095, 1096, 1097, 1098, 1099, 1100, 1101, 553, + 554, 1102, 1103, 1104, 1031, 1105, 1106, 1107, + 1108, 1109, 1110, 1111, 553, 1113, 1114, 553, + 1112, 1116, 1117, 1118, 1115, 978, 1120, 1119, + 1122, 1123, 1121, 1124, 560, 1125, 979, 1126, + 978, 1127, 1128, 1129, 1112, 554, 1130, 555, + 560, 1131, 1132, 553, 554, 555, 540, 1134, + 1135, 553, 1133, 1137, 1138, 1139, 1136, 981, + 1141, 1140, 1143, 1144, 1142, 1145, 560, 1146, + 1147, 982, 981, 1148, 1149, 1150, 1133, 981, + 1152, 1151, 1154, 1155, 1153, 982, 980, 1156, + 558, 560, 1157, 1158, 557, 1160, 558, 1159, + 1162, 1163, 1161, 558, 556, 1164, 557, 1119, + 1165, 557, 1140, 979, 977, 1166, 978, 1151, + 554, 1167, 1168, 1169, 1042, 1170, 1171, 1172, + 1173, 1174, 1175, 1176, 553, 554, 1177, 1178, + 1179, 1053, 1180, 1181, 1182, 1183, 1184, 1185, + 1186, 553, 554, 1187, 1188, 1189, 1064, 1190, + 1191, 1192, 1193, 1194, 1195, 1196, 553, 1198, + 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 1207, 1208, 1209, 1210, 525, 1211, 1197, 1213, + 1214, 1215, 1216, 525, 1212, 1217, 1218, 1213, + 0, 1219, 1221, 1220, 1222, 1223, 1224, 1225, + 0, 1226, 1227, 1198, 0, 0, 1229, 1228, + 0, 524, 1229, 525, 1228, 0, 1230, 1232, + 1231, 0, 1233, 1235, 1234, 1236, 1217, 1218, + 1213, 1217, 1218, 525, 1213, 1219, 1238, 523, + 525, 1237, 1220, 1240, 1241, 525, 1239, 1242, + 1221, 1220, 1221, 525, 1220, 0, 524, 1243, + 1244, 1245, 1246, 525, 523, 1198, 1199, 1200, + 1247, 525, 1197, 1230, 1249, 523, 525, 1248, + 1231, 1251, 1252, 525, 1250, 1253, 1232, 1231, + 1232, 525, 1231, 1233, 1255, 525, 523, 1254, + 1234, 1257, 525, 1258, 1256, 1259, 1235, 1234, + 525, 1235, 1234, 1198, 1199, 1215, 1201, 1260, + 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, + 525, 1211, 1197, 0, 524, 1261, 1262, 1263, + 1264, 1265, 1266, 1267, 1268, 1269, 1270, 525, + 1271, 523, 0, 524, 1272, 1273, 1274, 1275, + 1276, 1277, 1278, 1279, 1280, 1281, 525, 1282, + 523, 0, 524, 1283, 1284, 1285, 1286, 1287, + 1288, 1289, 1290, 1291, 1292, 525, 1293, 523, + 0, 524, 1294, 1295, 1296, 1297, 1298, 1299, + 1300, 1301, 1302, 1303, 525, 1304, 523, 0, + 524, 1305, 1306, 1307, 1308, 1309, 1310, 1311, + 1312, 1313, 1314, 525, 1315, 523, 0, 524, + 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, + 1324, 1325, 525, 1326, 523, 0, 524, 1327, + 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, + 1336, 525, 1337, 523, 0, 524, 1338, 1339, + 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, + 525, 1348, 523, 1213, 1214, 1215, 1349, 1350, + 1351, 1275, 1352, 1353, 1354, 1355, 1356, 1357, + 525, 1358, 1212, 1213, 1214, 1215, 1359, 1360, + 1361, 1286, 1362, 1363, 1364, 1365, 1366, 1367, + 525, 1368, 1212, 1213, 1214, 1215, 1369, 1370, + 1371, 1297, 1372, 1373, 1374, 1375, 1376, 1377, + 525, 1378, 1212, 1213, 1214, 1215, 1379, 1380, + 1381, 1308, 1382, 1383, 1384, 1385, 1386, 1387, + 525, 1388, 1212, 1390, 1391, 1392, 1393, 1212, + 525, 1389, 1395, 1396, 1397, 1398, 1399, 525, + 1394, 1400, 1401, 1402, 1395, 1231, 1404, 1403, + 1406, 1407, 1405, 1408, 1223, 1409, 1232, 1410, + 1231, 1411, 1412, 1413, 1390, 1217, 1414, 1218, + 1223, 1415, 1416, 1213, 1217, 1218, 1198, 1417, + 1418, 1213, 1390, 1420, 1421, 1213, 1419, 1423, + 1424, 1425, 1422, 1234, 1427, 1426, 1429, 1430, + 1428, 1431, 1223, 1432, 1433, 1235, 1234, 1434, + 1435, 1436, 1419, 1234, 1438, 1437, 1440, 1441, + 1439, 1235, 1233, 1442, 1221, 1223, 1443, 1444, + 1220, 1446, 1221, 1445, 1448, 1449, 1447, 1221, + 1219, 1450, 1220, 1403, 1451, 1220, 1426, 1232, + 1230, 1452, 1231, 1437, 1453, 1400, 1401, 1402, + 1395, 1400, 1401, 1402, 525, 1395, 1403, 1455, + 1250, 1456, 525, 1454, 1405, 1458, 1459, 1460, + 525, 1457, 1461, 1406, 1407, 1405, 1406, 1407, + 525, 1405, 1231, 1251, 1462, 1244, 1463, 1252, + 1464, 525, 1250, 1390, 1391, 1465, 1466, 1467, + 525, 1389, 1213, 1214, 1215, 1468, 1216, 1244, + 1469, 1470, 525, 1212, 1198, 1199, 1215, 1216, + 525, 1197, 1419, 1472, 1473, 1474, 525, 1212, + 1471, 1422, 1476, 1477, 1478, 525, 1479, 1475, + 1480, 1423, 1424, 1425, 1422, 1423, 1424, 525, + 1425, 1422, 1426, 1482, 1256, 525, 1483, 1481, + 1428, 1485, 1486, 525, 1487, 1484, 1488, 1429, + 1430, 1428, 1429, 525, 1430, 1428, 1234, 1257, + 1489, 1244, 1490, 1491, 525, 1258, 1256, 1419, + 1472, 1492, 1493, 525, 1494, 1471, 1437, 1496, + 1256, 525, 1497, 1495, 1439, 1499, 1500, 525, + 1501, 1498, 1502, 1440, 1441, 1439, 1440, 525, + 1441, 1439, 1233, 1255, 525, 1258, 1254, 1220, + 1240, 1503, 1241, 1244, 1504, 1505, 525, 1239, + 1445, 1507, 1508, 1241, 525, 1506, 1447, 1510, + 1511, 1512, 525, 1509, 1513, 1448, 1449, 1447, + 1448, 1449, 525, 1447, 1219, 1238, 1241, 525, + 1237, 1403, 1455, 1514, 1239, 525, 1454, 1426, + 1482, 1515, 525, 1239, 1481, 1230, 1249, 1252, + 525, 1248, 1437, 1496, 1516, 525, 1250, 1495, + 1213, 1214, 1215, 1517, 1518, 1519, 1319, 1520, + 1521, 1522, 1523, 1524, 1525, 525, 1526, 1212, + 1213, 1214, 1215, 1527, 1528, 1529, 1330, 1530, + 1531, 1532, 1533, 1534, 1535, 525, 1536, 1212, + 1213, 1214, 1215, 1537, 1538, 1539, 1341, 1540, + 1541, 1542, 1543, 1544, 1545, 525, 1546, 1212, + 0, 524, 525, 1547, 523, 0, 524, 1548, + 1549, 1550, 1551, 1552, 1554, 1555, 1556, 1557, + 1558, 1559, 1560, 525, 1561, 1553, 523, 0, + 524, 525, 1562, 523, 0, 524, 1563, 1564, + 1565, 1566, 1567, 1569, 1570, 1571, 1572, 1573, + 1574, 1575, 525, 1576, 1568, 523, 0, 524, + 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, + 1585, 1586, 1587, 1588, 525, 1589, 523, 0, + 1590, 1592, 1591, 0, 1593, 1595, 1594, 495, + 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, + 1604, 1605, 1606, 504, 1607, 1608, 1609, 1610, + 1611, 1612, 1613, 1614, 1615, 1616, 1617, 0, + 505, 1596, 1618, 1598, 1599, 1600, 1601, 1602, + 1603, 1604, 1605, 1606, 504, 495, 1619, 1620, + 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, + 1629, 494, 495, 1630, 1631, 1632, 1633, 1634, + 1635, 1636, 1637, 1638, 1639, 1640, 494, 495, + 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, + 1649, 1650, 1651, 494, 495, 1652, 1653, 1654, + 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, + 494, 1664, 1665, 494, 1663, 1667, 1668, 1669, + 1666, 1591, 1671, 1670, 1673, 1674, 1672, 1675, + 501, 1676, 1592, 1677, 1591, 1678, 1679, 1680, + 1663, 495, 1681, 496, 501, 1682, 1683, 494, + 495, 496, 504, 1685, 1686, 494, 1684, 1688, + 1689, 1690, 1687, 1594, 1692, 1691, 1694, 1695, + 1693, 1696, 501, 1697, 1698, 1595, 1594, 1699, + 1700, 1701, 1684, 1594, 1703, 1702, 1705, 1706, + 1704, 1595, 1593, 1707, 499, 501, 1708, 1709, + 498, 1711, 499, 1710, 1713, 1714, 1712, 499, + 497, 1715, 498, 1670, 1716, 498, 1691, 1592, + 1590, 1717, 1591, 1702, 495, 1718, 1719, 1720, + 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, + 494, 495, 1729, 1730, 1731, 1732, 1733, 1734, + 1735, 1736, 1737, 1738, 1739, 494, 495, 1740, + 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, + 1749, 1750, 494, 1751, 1752, 1753, 1622, 1754, + 1755, 1756, 1757, 1758, 1759, 1760, 0, 1761, + 1762, 1763, 1633, 1764, 1765, 1766, 1767, 1768, + 1769, 1770, 0, 1771, 1772, 1773, 1644, 1774, + 1775, 1776, 1777, 1778, 1779, 1780, 0, 1781, + 1782, 1783, 1655, 1784, 1785, 1786, 1787, 1788, + 1789, 1790, 0, 1791, 1792, 1793, 1721, 1794, + 1795, 1796, 1797, 1798, 1799, 1800, 0, 1801, + 1802, 1803, 1732, 1804, 1805, 1806, 1807, 1808, + 1809, 1810, 0, 1811, 1812, 1813, 1743, 1814, + 1815, 1816, 1817, 1818, 1819, 1820, 0, 196, + 1822, 196, 1821, 0, 1823, 1824, 1825, 0, + 1821, 0, 1823, 1824, 1823, 0, 1821, 0, + 1823, 1823, 0, 1821, 0, 1823, 1824, 1825, + 1826, 0, 1821, 90, 91, 92, 4, 4, + 1827, 90, 4, 4, 4, 196, 90, 91, + 92, 4, 4, 1828, 90, 4, 4, 4, + 196, 90, 91, 92, 4, 4, 1829, 90, + 4, 4, 4, 196, 90, 91, 92, 4, + 4, 1830, 90, 4, 4, 4, 196, 90, + 91, 92, 4, 4, 1831, 90, 4, 4, + 4, 196, 90, 91, 92, 4, 4, 1832, + 90, 4, 4, 4, 196, 90, 91, 92, + 4, 4, 1833, 90, 4, 4, 4, 196, + 90, 91, 92, 4, 4, 1834, 90, 4, + 4, 4, 196, 1835, 4, 4, 4, 4, + 4, 4, 196, 90, 91, 92, 4, 4, + 182, 1836, 90, 4, 4, 4, 196, 90, + 91, 92, 4, 4, 1837, 90, 4, 4, + 4, 196, 1840, 1839, 1839, 1839, 1839, 1839, + 1839, 1838, 1840, 1838, 1841, 1842, 1841, 0, + 1843, 0, 1844, 0, 1845, 0, 1846, 0, + 1847, 0, 1848, 1849, 1850, 1839, 1839, 1848, + 1839, 1839, 1839, 1838, 1848, 1849, 1850, 1851, + 1851, 1848, 1851, 1851, 1851, 1838, 1851, 1849, + 1852, 1850, 1851, 1851, 1851, 1851, 1851, 1851, + 1838, 1853, 1838, 1855, 1856, 1855, 1842, 1841, + 1854, 1858, 1858, 1860, 1861, 1838, 1850, 1858, + 1859, 1857, 1848, 1848, 1838, 1850, 1848, 1862, + 1857, 1848, 1848, 1838, 1850, 1863, 1863, 1848, + 1862, 1863, 1863, 1863, 1863, 1857, 1851, 1851, + 1838, 1859, 1850, 1863, 1863, 1851, 1863, 1863, + 1863, 1863, 1863, 1857, 1864, 1864, 1866, 1867, + 1838, 1850, 1864, 1865, 1857, 1864, 1864, 1860, + 1861, 1838, 1850, 1863, 1863, 1864, 1865, 1863, + 1863, 1863, 1863, 1857, 1864, 1864, 1866, 1867, + 1838, 1850, 1863, 1863, 1864, 1865, 1863, 1863, + 1863, 1863, 1857, 1868, 1868, 1862, 1860, 1870, + 1868, 1869, 1866, 1868, 1848, 1872, 1870, 1871, + 1871, 1868, 1871, 1871, 1871, 1860, 1848, 1873, + 1860, 1874, 90, 1875, 1874, 98, 90, 1876, + 98, 90, 1877, 98, 90, 1878, 98, 90, + 1879, 98, 90, 1880, 98, 1871, 1848, 1872, + 1881, 1870, 1871, 1871, 1871, 1871, 1871, 1871, + 1860, 1848, 1882, 1860, 1883, 1884, 1883, 90, + 1875, 1874, 98, 1885, 1885, 1868, 1887, 1860, + 1870, 1885, 1886, 1866, 1888, 1888, 1868, 1887, + 1860, 1870, 1888, 1889, 1866, 1888, 1888, 1868, + 1887, 1860, 1870, 1890, 1890, 1888, 1889, 1890, + 1890, 1890, 1890, 1866, 1888, 1888, 1869, 1891, + 1860, 1870, 1890, 1890, 1888, 1889, 1890, 1890, + 1890, 1890, 1866, 1868, 1868, 1862, 1860, 1870, + 1890, 1890, 1868, 1869, 1890, 1890, 1890, 1890, + 1866, 1871, 1871, 1862, 1860, 1886, 1870, 1890, + 1890, 1871, 1890, 1890, 1890, 1890, 1890, 1866, + 1888, 1888, 1869, 1891, 1860, 1870, 1888, 1889, + 1866, 1892, 1892, 1894, 1869, 1887, 1895, 1892, + 1893, 1891, 1892, 1896, 1868, 1898, 1895, 1897, + 1897, 1892, 1897, 1897, 1897, 1887, 1896, 1868, + 1899, 1887, 1896, 1848, 1901, 1902, 1900, 1900, + 1896, 1900, 1900, 1900, 1861, 1848, 1903, 1861, + 1904, 90, 1905, 1904, 99, 90, 1906, 99, + 90, 1907, 99, 90, 1908, 99, 90, 1909, + 99, 90, 1910, 99, 1900, 1848, 1901, 1911, + 1902, 1900, 1900, 1900, 1900, 1900, 1900, 1861, + 1848, 1912, 1861, 1913, 1914, 1913, 90, 1905, + 1904, 99, 1915, 1915, 1887, 1896, 1861, 1902, + 1915, 1916, 1867, 1896, 1896, 1862, 1861, 1902, + 1896, 1894, 1867, 1896, 1896, 1862, 1861, 1902, + 1917, 1917, 1896, 1894, 1917, 1917, 1917, 1917, + 1867, 1900, 1900, 1862, 1861, 1916, 1902, 1917, + 1917, 1900, 1917, 1917, 1917, 1917, 1917, 1867, + 1918, 1918, 1891, 1894, 1861, 1902, 1918, 1919, + 1867, 1918, 1918, 1887, 1896, 1861, 1902, 1917, + 1917, 1918, 1919, 1917, 1917, 1917, 1917, 1867, + 1918, 1918, 1891, 1894, 1861, 1902, 1917, 1917, + 1918, 1919, 1917, 1917, 1917, 1917, 1867, 1918, + 1918, 1887, 1896, 1861, 1902, 1918, 1919, 1867, + 1920, 125, 106, 1921, 1920, 116, 125, 106, + 1922, 116, 125, 106, 1923, 116, 125, 106, + 1924, 116, 125, 106, 1925, 116, 125, 106, + 1926, 116, 1897, 1896, 1868, 1898, 1927, 1895, + 1897, 1897, 1897, 1897, 1897, 1897, 1887, 1896, + 1868, 1928, 1887, 1929, 1930, 1929, 125, 106, + 1921, 1920, 116, 1931, 1931, 1892, 1892, 1887, + 1895, 1931, 1932, 1891, 1933, 1933, 1892, 1892, + 1887, 1895, 1933, 1934, 1891, 1933, 1933, 1892, + 1892, 1887, 1895, 1935, 1935, 1933, 1934, 1935, + 1935, 1935, 1935, 1891, 1933, 1933, 1893, 1893, + 1887, 1895, 1935, 1935, 1933, 1934, 1935, 1935, + 1935, 1935, 1891, 1892, 1892, 1894, 1869, 1887, + 1895, 1935, 1935, 1892, 1893, 1935, 1935, 1935, + 1935, 1891, 1897, 1897, 1894, 1869, 1887, 1932, + 1895, 1935, 1935, 1897, 1935, 1935, 1935, 1935, + 1935, 1891, 1933, 1933, 1893, 1893, 1887, 1895, + 1933, 1934, 1891, 1864, 1864, 1860, 1861, 1838, + 1850, 1864, 1865, 1857, 4, 4, 184, 1936, + 186, 187, 188, 189, 4, 4, 4, 4, + 196, 90, 91, 92, 4, 4, 1937, 90, + 4, 4, 4, 196, 90, 91, 92, 4, + 4, 1938, 90, 4, 4, 4, 196, 90, + 91, 92, 4, 4, 1939, 90, 4, 4, + 4, 196, 90, 91, 92, 4, 4, 1940, + 90, 4, 4, 4, 196, 1943, 1942, 1942, + 1942, 1942, 1942, 1942, 1941, 1943, 1941, 1944, + 1945, 1946, 1942, 1942, 1944, 1942, 1942, 1942, + 1941, 1944, 1945, 1946, 1947, 1947, 1944, 1947, + 1947, 1947, 1941, 1947, 1945, 1948, 1946, 1947, + 1947, 1947, 1947, 1947, 1947, 1941, 1949, 1941, + 1951, 1951, 1953, 1954, 1941, 1946, 1951, 1952, + 1950, 1944, 1944, 1941, 1946, 1944, 1955, 1950, + 1944, 1944, 1941, 1946, 1956, 1956, 1944, 1955, + 1956, 1956, 1956, 1956, 1950, 1947, 1947, 1941, + 1952, 1946, 1956, 1956, 1947, 1956, 1956, 1956, + 1956, 1956, 1950, 1957, 1957, 1959, 1960, 1941, + 1946, 1957, 1958, 1950, 1957, 1957, 1953, 1954, + 1941, 1946, 1956, 1956, 1957, 1958, 1956, 1956, + 1956, 1956, 1950, 1957, 1957, 1959, 1960, 1941, + 1946, 1956, 1956, 1957, 1958, 1956, 1956, 1956, + 1956, 1950, 1961, 1961, 1955, 1953, 1963, 1961, + 1962, 1959, 1961, 1944, 1965, 1963, 1964, 1964, + 1961, 1964, 1964, 1964, 1953, 1944, 1966, 1953, + 1964, 1944, 1965, 1967, 1963, 1964, 1964, 1964, + 1964, 1964, 1964, 1953, 1944, 1968, 1953, 1969, + 1969, 1961, 1971, 1953, 1963, 1969, 1970, 1959, + 1972, 1972, 1961, 1971, 1953, 1963, 1972, 1973, + 1959, 1972, 1972, 1961, 1971, 1953, 1963, 1974, + 1974, 1972, 1973, 1974, 1974, 1974, 1974, 1959, + 1972, 1972, 1962, 1975, 1953, 1963, 1974, 1974, + 1972, 1973, 1974, 1974, 1974, 1974, 1959, 1961, + 1961, 1955, 1953, 1963, 1974, 1974, 1961, 1962, + 1974, 1974, 1974, 1974, 1959, 1964, 1964, 1955, + 1953, 1970, 1963, 1974, 1974, 1964, 1974, 1974, + 1974, 1974, 1974, 1959, 1972, 1972, 1962, 1975, + 1953, 1963, 1972, 1973, 1959, 1976, 1976, 1978, + 1962, 1971, 1979, 1976, 1977, 1975, 1976, 1980, + 1961, 1982, 1979, 1981, 1981, 1976, 1981, 1981, + 1981, 1971, 1980, 1961, 1983, 1971, 1980, 1944, + 1985, 1986, 1984, 1984, 1980, 1984, 1984, 1984, + 1954, 1944, 1987, 1954, 1984, 1944, 1985, 1988, + 1986, 1984, 1984, 1984, 1984, 1984, 1984, 1954, + 1944, 1989, 1954, 1990, 1990, 1971, 1980, 1954, + 1986, 1990, 1991, 1960, 1980, 1980, 1955, 1954, + 1986, 1980, 1978, 1960, 1980, 1980, 1955, 1954, + 1986, 1992, 1992, 1980, 1978, 1992, 1992, 1992, + 1992, 1960, 1984, 1984, 1955, 1954, 1991, 1986, + 1992, 1992, 1984, 1992, 1992, 1992, 1992, 1992, + 1960, 1993, 1993, 1975, 1978, 1954, 1986, 1993, + 1994, 1960, 1993, 1993, 1971, 1980, 1954, 1986, + 1992, 1992, 1993, 1994, 1992, 1992, 1992, 1992, + 1960, 1993, 1993, 1975, 1978, 1954, 1986, 1992, + 1992, 1993, 1994, 1992, 1992, 1992, 1992, 1960, + 1993, 1993, 1971, 1980, 1954, 1986, 1993, 1994, + 1960, 1981, 1980, 1961, 1982, 1995, 1979, 1981, + 1981, 1981, 1981, 1981, 1981, 1971, 1980, 1961, + 1996, 1971, 1997, 1997, 1976, 1976, 1971, 1979, + 1997, 1998, 1975, 1999, 1999, 1976, 1976, 1971, + 1979, 1999, 2000, 1975, 1999, 1999, 1976, 1976, + 1971, 1979, 2001, 2001, 1999, 2000, 2001, 2001, + 2001, 2001, 1975, 1999, 1999, 1977, 1977, 1971, + 1979, 2001, 2001, 1999, 2000, 2001, 2001, 2001, + 2001, 1975, 1976, 1976, 1978, 1962, 1971, 1979, + 2001, 2001, 1976, 1977, 2001, 2001, 2001, 2001, + 1975, 1981, 1981, 1978, 1962, 1971, 1998, 1979, + 2001, 2001, 1981, 2001, 2001, 2001, 2001, 2001, + 1975, 1999, 1999, 1977, 1977, 1971, 1979, 1999, + 2000, 1975, 1957, 1957, 1953, 1954, 1941, 1946, + 1957, 1958, 1950, 2003, 2004, 2005, 2006, 2007, + 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2002, + 2016, 2017, 2015, 196, 2018, 2020, 2019, 2021, + 2022, 2023, 2024, 196, 2003, 2025, 2002, 2026, + 2027, 196, 2028, 196, 196, 2029, 2031, 2030, + 196, 2032, 2034, 2033, 2016, 2004, 2035, 2006, + 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, + 2002, 2036, 2037, 2038, 2039, 2040, 2041, 2042, + 2043, 2044, 2045, 2046, 196, 2047, 2048, 2049, + 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, + 196, 2058, 2059, 2060, 2061, 2062, 2063, 2064, + 2065, 2066, 2067, 2068, 196, 2069, 2070, 2071, + 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, + 196, 2080, 2081, 2082, 2083, 2084, 2085, 2086, + 2087, 2088, 2089, 2090, 196, 2091, 2092, 2093, + 2094, 2095, 2096, 2097, 2098, 2099, 2100, 2101, + 196, 2102, 2103, 2104, 2105, 2106, 2107, 2108, + 2109, 2110, 2111, 2112, 196, 2113, 2114, 2115, + 2116, 2117, 2118, 2119, 2120, 2121, 2122, 2123, + 196, 2016, 2124, 2125, 2126, 2050, 2127, 2128, + 2129, 2130, 2131, 2132, 2133, 2015, 2016, 2134, + 2135, 2136, 2061, 2137, 2138, 2139, 2140, 2141, + 2142, 2143, 2015, 2016, 2144, 2145, 2146, 2072, + 2147, 2148, 2149, 2150, 2151, 2152, 2153, 2015, + 2016, 2154, 2155, 2156, 2083, 2157, 2158, 2159, + 2160, 2161, 2162, 2163, 2015, 2165, 2166, 2015, + 2164, 2168, 2169, 2170, 2167, 2030, 2172, 2171, + 2174, 2175, 2173, 2176, 2022, 2177, 2031, 2178, + 2030, 2179, 2180, 2181, 2164, 2016, 2182, 2017, + 2022, 2183, 2184, 2015, 2016, 2017, 2002, 2186, + 2187, 2015, 2185, 2189, 2190, 2191, 2188, 2033, + 2193, 2192, 2195, 2196, 2194, 2197, 2022, 2198, + 2199, 2034, 2033, 2200, 2201, 2202, 2185, 2033, + 2204, 2203, 2206, 2207, 2205, 2034, 2032, 2208, + 2020, 2022, 2209, 2210, 2019, 2212, 2020, 2211, + 2214, 2215, 2213, 2020, 2018, 2216, 2019, 2171, + 2217, 2019, 2192, 2031, 2029, 2218, 2030, 2203, + 2016, 2219, 2220, 2221, 2094, 2222, 2223, 2224, + 2225, 2226, 2227, 2228, 2015, 2016, 2229, 2230, + 2231, 2105, 2232, 2233, 2234, 2235, 2236, 2237, + 2238, 2015, 2016, 2239, 2240, 2241, 2116, 2242, + 2243, 2244, 2245, 2246, 2247, 2248, 2015, 2249, + 2250, 2251, 2252, 2254, 2255, 2256, 2257, 2258, + 2259, 2260, 2261, 2262, 2263, 2264, 2253, 2253, + 2253, 196, 2249, 2250, 2251, 2252, 2254, 2255, + 2256, 2257, 2258, 2253, 2259, 2260, 2261, 2262, + 2263, 2264, 2253, 2253, 2253, 2253, 196, 2249, + 2250, 2251, 2252, 2254, 2255, 2256, 2257, 2258, + 2259, 2260, 2265, 2262, 2263, 2264, 2253, 2253, + 2253, 196, 2249, 2250, 2251, 2252, 2254, 2255, + 2256, 2257, 2258, 2259, 2260, 2261, 2266, 2262, + 2263, 2264, 2253, 2253, 196, 2249, 2250, 2251, + 2252, 2254, 2255, 2256, 2257, 2258, 2259, 2260, + 2261, 2266, 2262, 2263, 2264, 2253, 2253, 2253, + 196, 2249, 2250, 2251, 2252, 2254, 2255, 2256, + 2257, 2258, 2259, 2260, 2261, 2262, 2267, 2263, + 2264, 2253, 2253, 2253, 196, 2249, 2250, 2251, + 2252, 2254, 2255, 2256, 2257, 2258, 2259, 2260, + 2261, 2262, 2268, 2263, 2264, 2253, 2253, 2253, + 196, 2249, 2250, 2251, 2252, 2254, 2255, 2256, + 2257, 2258, 2259, 2260, 2261, 2262, 2263, 2264, + 2253, 2253, 2253, 2253, 196, 2249, 2250, 2251, + 2252, 2254, 2255, 2256, 2257, 2258, 2259, 2269, + 2260, 2261, 2262, 2263, 2264, 2253, 2253, 2253, + 196, 2249, 2250, 2251, 2252, 2254, 2255, 2256, + 2257, 2258, 2259, 2260, 2261, 2262, 2270, 2263, + 2264, 2253, 2253, 2253, 196, 2249, 2250, 2251, + 2252, 2254, 2255, 2256, 2257, 2258, 2259, 2260, + 2261, 2262, 2271, 2263, 2264, 2253, 2253, 2253, + 196, 2249, 2250, 2251, 2252, 2254, 2255, 2256, + 2257, 2258, 2259, 2260, 2272, 2261, 2262, 2263, + 2264, 2253, 2253, 2253, 196, 2249, 2250, 2251, + 2252, 2254, 2255, 2256, 2257, 2258, 2259, 2260, + 2268, 2261, 2262, 2263, 2264, 2253, 2253, 2253, + 196, 2249, 2250, 2251, 2252, 2254, 2255, 2256, + 2257, 2258, 2259, 2273, 2260, 2261, 2262, 2263, + 2264, 2253, 2253, 2253, 196, 2249, 2250, 2251, + 2252, 2254, 2255, 2256, 2274, 2257, 2258, 2259, + 2260, 2261, 2262, 2263, 2264, 2253, 2253, 2253, + 196, 2249, 2250, 2251, 2252, 2254, 2255, 2256, + 2257, 2258, 2259, 2260, 2275, 2261, 2262, 2263, + 2264, 2253, 2253, 2253, 196, 2249, 2250, 2251, + 2252, 2254, 2255, 2256, 2257, 2258, 2259, 2260, + 2261, 2276, 2262, 2263, 2264, 2253, 2253, 2253, + 196, 2249, 2250, 2251, 2252, 2254, 2255, 2256, + 2257, 2258, 2259, 2260, 2261, 2262, 2277, 2263, + 2264, 2253, 2253, 2253, 196, 2249, 2250, 2251, + 2252, 2254, 2255, 2256, 2257, 2258, 2259, 2260, + 2278, 2261, 2262, 2263, 2264, 2253, 2253, 2253, + 196, 2279, 2249, 2250, 2251, 2252, 2280, 2254, + 2255, 2256, 2257, 2258, 2259, 2260, 2261, 2262, + 2263, 2264, 2253, 2253, 2253, 196, 2281, 2281, + 196, 2282, 2282, 196, 2283, 2283, 196, 2284, + 2284, 196, 2285, 2285, 196, 2286, 2286, 196, + 2287, 2287, 196, 2288, 2289, 196, 2290, 196, + 2291, 196, 2292, 196, 2293, 196, 2294, 196, + 2295, 196, 2296, 196, 2297, 196, 2298, 196, + 2299, 196, 2300, 196, 2301, 196, 2302, 196, + 2303, 196, 2304, 196, 2305, 196, 2306, 196, + 2307, 2308, 196, 2307, 2309, 196, 2288, 196, + 2310, 196, 2311, 2281, 196, 2312, 2282, 196, + 2313, 2283, 196, 2314, 2284, 196, 2315, 2285, + 196, 2316, 2286, 196, 2317, 2287, 196, 2307, + 2308, 2288, 2289, 196, 1591, 1591, 2319, 1591, + 2318, 0, 0, 2321, 2322, 2323, 2324, 2325, + 2326, 2327, 2328, 2329, 2330, 2323, 2331, 2321, + 2321, 0, 2321, 2323, 2321, 2321, 2323, 2323, + 2320, 0, 0, 2321, 2333, 2334, 2321, 2335, + 2333, 2321, 2321, 0, 2321, 2333, 2321, 2321, + 2333, 2333, 2332, 0, 0, 2335, 0, 2321, + 0, 0, 2321, 2322, 2323, 2324, 2326, 2328, + 2330, 2323, 2321, 2321, 0, 2321, 2323, 2321, + 2321, 2323, 2323, 2320, 2336, 2336, 2335, 2336, + 2337, 2337, 2337, 2321, 2336, 2336, 2335, 2336, + 2333, 2333, 2333, 2321, 2336, 2336, 2335, 2336, + 2338, 2338, 2338, 2321, 2336, 2336, 2335, 2336, + 2339, 2339, 2339, 2321, 0, 0, 2335, 0, + 2340, 2340, 2340, 2321, 0, 0, 2335, 0, + 2332, 2332, 2332, 2321, 0, 0, 2321, 2333, + 2334, 2341, 2321, 2335, 2333, 2321, 2321, 0, + 2321, 2333, 2321, 2321, 2333, 2333, 2332, 504, + 504, 2343, 2344, 2345, 2346, 2347, 2343, 2348, + 2345, 2343, 2343, 504, 2343, 2345, 2343, 2343, + 2345, 2345, 2342, 494, 494, 2350, 2351, 2352, + 2353, 2354, 2350, 2355, 2352, 2350, 2350, 494, + 2350, 2352, 2350, 2350, 2352, 2352, 2349, 494, + 494, 2356, 2357, 2355, 494, 2350, 497, 497, + 2321, 2359, 497, 2358, 498, 498, 2361, 2362, + 498, 2360, 0, 0, 2363, 2364, 2365, 2335, + 2366, 0, 2321, 504, 504, 2367, 2368, 2348, + 504, 2343, 494, 494, 2350, 2369, 2345, 2346, + 2370, 2371, 2372, 2373, 2345, 2350, 2350, 494, + 2350, 2345, 2350, 2350, 2345, 2345, 2342, 498, + 498, 2361, 2362, 498, 2374, 2374, 2374, 2360, + 498, 498, 2361, 2362, 498, 2375, 2375, 2375, + 2360, 498, 498, 2360, 2377, 2378, 2379, 2380, + 2381, 2382, 2383, 2378, 2360, 2360, 498, 2360, + 2378, 2360, 2360, 2378, 2378, 2376, 498, 498, + 2360, 2375, 2385, 2386, 2360, 2362, 2375, 2360, + 2360, 498, 2360, 2375, 2360, 2360, 2375, 2375, + 2384, 498, 498, 2361, 2362, 498, 2387, 2387, + 2387, 2360, 498, 498, 2361, 2362, 498, 2384, + 2384, 2384, 2360, 0, 0, 2321, 2333, 2334, + 2388, 2389, 2321, 2390, 2335, 2333, 2391, 2321, + 2321, 0, 2321, 2333, 2321, 2321, 2333, 2333, + 2332, 0, 524, 523, 2393, 2394, 523, 2392, + 0, 524, 523, 2392, 2396, 2397, 2398, 2399, + 2400, 2401, 2397, 2402, 2392, 2392, 523, 2392, + 2397, 2392, 2392, 2397, 2397, 2395, 0, 524, + 523, 2392, 2404, 2405, 2392, 2393, 2404, 2406, + 2392, 2392, 523, 2392, 2404, 2392, 2392, 2404, + 2404, 2403, 0, 524, 523, 2393, 2394, 523, + 2407, 2407, 2407, 2392, 0, 524, 523, 2393, + 2394, 523, 2403, 2403, 2403, 2392, 1198, 1199, + 1197, 2409, 2410, 2411, 2412, 2413, 2414, 2415, + 2416, 2417, 2418, 2419, 2420, 2394, 2421, 1197, + 2408, 1213, 1214, 1212, 2423, 2424, 2425, 2394, + 1212, 2422, 1219, 1238, 1237, 2392, 2427, 2394, + 1237, 2426, 1220, 1240, 1239, 2429, 2430, 2394, + 1239, 2428, 0, 524, 523, 2431, 2432, 2433, + 2393, 2434, 2394, 523, 2392, 1198, 1199, 1197, + 2409, 2435, 2418, 2394, 1197, 2408, 1213, 1214, + 1212, 2422, 2437, 2438, 2439, 2440, 2441, 2442, + 2443, 2438, 2402, 2422, 2422, 1212, 2422, 2438, + 2422, 2422, 2438, 2438, 2436, 1213, 1214, 1212, + 2422, 2445, 2446, 2447, 2448, 2422, 2425, 2446, + 2406, 2422, 2422, 1212, 2422, 2446, 2422, 2422, + 2446, 2446, 2444, 1219, 1238, 1237, 2426, 2450, + 2451, 2403, 2426, 2427, 2450, 2406, 2426, 2426, + 1237, 2426, 2450, 2426, 2426, 2450, 2450, 2449, + 1220, 1240, 1239, 2428, 2453, 2454, 2455, 2428, + 2430, 2453, 2406, 2428, 2428, 1239, 2428, 2453, + 2428, 2428, 2453, 2453, 2452, 1220, 1240, 1239, + 2429, 2430, 2394, 1239, 2456, 2456, 2456, 2428, + 1220, 1240, 1239, 2429, 2430, 2394, 1239, 2453, + 2453, 2453, 2428, 1220, 1240, 1239, 2428, 2457, + 2450, 2451, 2458, 2459, 2460, 2461, 2450, 2402, + 2428, 2428, 1239, 2428, 2450, 2428, 2428, 2450, + 2450, 2449, 1220, 1240, 1239, 2429, 2430, 2394, + 1239, 2462, 2462, 2462, 2428, 1220, 1240, 1239, + 2429, 2430, 2394, 1239, 2463, 2463, 2463, 2428, + 0, 524, 523, 2393, 2394, 523, 2464, 2464, + 2464, 2392, 0, 524, 523, 2393, 2394, 523, + 2465, 2465, 2465, 2392, 1220, 1240, 1239, 2429, + 2430, 2394, 1239, 2466, 2466, 2466, 2428, 1220, + 1240, 1239, 2429, 2430, 2394, 1239, 2452, 2452, + 2452, 2428, 0, 524, 523, 2392, 2404, 2405, + 2467, 2468, 2392, 2469, 2393, 2404, 2470, 2406, + 2392, 2392, 523, 2392, 2404, 2392, 2392, 2404, + 2404, 2403, 1198, 1199, 1197, 2408, 2471, 2438, + 2439, 2472, 2408, 2418, 2438, 2406, 2408, 2408, + 1197, 2408, 2438, 2408, 2408, 2438, 2438, 2436, + 0, 524, 523, 2393, 2394, 523, 2473, 2473, + 2473, 2392, 0, 524, 523, 2393, 2394, 523, + 2404, 2404, 2404, 2392, 1213, 1214, 1212, 2423, + 2424, 2425, 2394, 1212, 2474, 2474, 2474, 2422, + 1213, 1214, 1212, 2423, 2424, 2425, 2394, 1212, + 2446, 2446, 2446, 2422, 0, 524, 523, 2475, + 2476, 2477, 2478, 2479, 2480, 2481, 2482, 2393, + 2483, 2484, 2394, 2485, 523, 2392, 0, 524, + 523, 2486, 2487, 2488, 2489, 2490, 2491, 2492, + 2493, 2393, 2494, 2495, 2394, 2496, 523, 2392, + 0, 524, 523, 2497, 2498, 2499, 2500, 2501, + 2502, 2503, 2504, 2393, 2505, 2506, 2394, 2507, + 523, 2392, 0, 524, 1229, 2509, 2394, 1228, + 2508, 0, 524, 523, 2510, 2511, 2512, 2513, + 2514, 2515, 2516, 2517, 2393, 2518, 2519, 2394, + 2520, 523, 2392, 0, 524, 523, 2521, 2522, + 2523, 2524, 2525, 2526, 2527, 2528, 2393, 2529, + 2530, 2394, 2531, 523, 2392, 1230, 1249, 1248, + 2393, 2394, 1248, 2532, 1231, 1251, 1250, 2534, + 2394, 1250, 2533, 0, 524, 523, 2392, 2396, + 2397, 2398, 2535, 2399, 2536, 2400, 2537, 2401, + 2397, 2538, 2402, 2392, 2392, 523, 2392, 2397, + 2392, 2392, 2397, 2397, 2395, 0, 524, 523, + 2392, 2404, 2405, 2539, 2392, 2393, 2404, 2406, + 2392, 2392, 523, 2392, 2404, 2392, 2392, 2404, + 2404, 2403, 1198, 1199, 1197, 2408, 2471, 2438, + 2439, 2540, 2541, 2542, 2543, 2408, 2414, 2544, + 2416, 2545, 2418, 2546, 2438, 2547, 2406, 2548, + 2408, 2408, 1197, 2408, 2438, 2408, 2438, 2438, + 2436, 1213, 1214, 1212, 2423, 2424, 2425, 2394, + 1212, 2549, 2549, 2549, 2422, 1213, 1214, 1212, + 2423, 2424, 2425, 2394, 1212, 2444, 2444, 2444, + 2422, 1198, 1199, 1197, 2408, 2445, 2438, 2439, + 2540, 2550, 2542, 2543, 2408, 2414, 2544, 2416, + 2545, 2418, 2546, 2438, 2547, 2406, 2548, 2408, + 2408, 1197, 2408, 2438, 2408, 2438, 2438, 2436, + 527, 524, 523, 2392, 2404, 2405, 2551, 2552, + 2553, 2554, 2392, 2490, 2555, 2492, 2556, 2393, + 2557, 2404, 2558, 2406, 2559, 2392, 2392, 523, + 2392, 2404, 2392, 2404, 2404, 2403, 527, 524, + 523, 2392, 2404, 2405, 2560, 2561, 2562, 2563, + 2392, 2514, 2564, 2516, 2565, 2393, 2566, 2404, + 2567, 2406, 2568, 2392, 2392, 523, 2392, 2404, + 2392, 2404, 2404, 2403, 1230, 1249, 1248, 2532, + 2570, 2571, 2532, 2393, 2570, 2406, 2532, 2532, + 1248, 2532, 2570, 2532, 2532, 2570, 2570, 2569, + 1231, 1251, 1250, 2533, 2573, 2574, 2533, 2534, + 2573, 2406, 2533, 2533, 1250, 2533, 2573, 2533, + 2533, 2573, 2573, 2572, 1231, 1251, 1250, 2534, + 2394, 1250, 2575, 2575, 2575, 2533, 1231, 1251, + 1250, 2534, 2394, 1250, 2573, 2573, 2573, 2533, + 1234, 1257, 1256, 2577, 2394, 2578, 1256, 2576, + 1234, 1257, 1256, 2576, 2580, 2581, 2582, 2583, + 2584, 2585, 2581, 2402, 2586, 2576, 2576, 1256, + 2576, 2581, 2576, 2576, 2581, 2581, 2579, 1234, + 1257, 1256, 2576, 2588, 2589, 2576, 2577, 2588, + 2406, 2590, 2576, 2576, 1256, 2576, 2588, 2576, + 2576, 2588, 2588, 2587, 1234, 1257, 1256, 2577, + 2394, 2578, 1256, 2591, 2591, 2591, 2576, 1234, + 1257, 1256, 2577, 2394, 2578, 1256, 2587, 2587, + 2587, 2576, 1234, 1257, 1256, 2577, 2394, 2578, + 1256, 2592, 2592, 2592, 2576, 1234, 1257, 1256, + 2577, 2394, 2578, 1256, 2593, 2593, 2593, 2576, + 1234, 1257, 1256, 2576, 2588, 2589, 2594, 2576, + 2577, 2588, 2406, 2590, 2576, 2576, 1256, 2576, + 2588, 2576, 2576, 2588, 2588, 2587, 1234, 1257, + 1256, 2577, 2394, 2578, 1256, 2595, 2595, 2595, + 2576, 1234, 1257, 1256, 2577, 2394, 2578, 1256, + 2588, 2588, 2588, 2576, 1231, 1251, 1250, 2534, + 2394, 1250, 2596, 2596, 2596, 2533, 1231, 1251, + 1250, 2534, 2394, 1250, 2572, 2572, 2572, 2533, + 527, 524, 523, 2392, 2404, 2405, 2597, 2598, + 2599, 2600, 2392, 2601, 2602, 2603, 2604, 2393, + 2605, 2404, 2606, 2406, 2607, 2392, 2392, 523, + 2392, 2404, 2392, 2404, 2404, 2403, 1233, 1255, + 1254, 2608, 2581, 2582, 2608, 2609, 2581, 2406, + 2403, 2608, 2608, 1254, 2608, 2581, 2608, 2608, + 2581, 2581, 2579, 527, 524, 523, 2392, 2404, + 2405, 2610, 2611, 2612, 2613, 2392, 2614, 2615, + 2616, 2617, 2393, 2618, 2404, 2619, 2406, 2620, + 2392, 2392, 523, 2392, 2404, 2392, 2404, 2404, + 2403, 1213, 1214, 1212, 2423, 2621, 2622, 2623, + 2478, 2624, 2625, 2626, 2627, 2425, 2628, 2629, + 2394, 2630, 1212, 2422, 1198, 1199, 1197, 2423, + 2410, 2631, 2412, 2413, 2414, 2415, 2416, 2417, + 2418, 2419, 2420, 2394, 2421, 1197, 2408, 1213, + 1214, 1212, 2423, 2632, 2633, 2634, 2500, 2635, + 2636, 2637, 2638, 2425, 2639, 2640, 2394, 2641, + 1212, 2422, 1213, 1214, 1212, 2423, 2642, 2643, + 2644, 2513, 2645, 2646, 2647, 2648, 2425, 2649, + 2650, 2394, 2651, 1212, 2422, 1213, 1214, 1212, + 2423, 2652, 2653, 2654, 2524, 2655, 2656, 2657, + 2658, 2425, 2659, 2660, 2394, 2661, 1212, 2422, + 1390, 1391, 1389, 2663, 2664, 2425, 2394, 1389, + 2662, 1395, 1396, 1394, 2666, 2667, 2668, 2394, + 1394, 2665, 1403, 1455, 1454, 2533, 2670, 2394, + 1454, 2669, 1405, 1458, 1457, 2672, 2673, 2394, + 1457, 2671, 1231, 1251, 1250, 2674, 2432, 2675, + 2534, 2676, 2394, 1250, 2533, 1390, 1391, 1389, + 2677, 2678, 2679, 2394, 1389, 2662, 1213, 1214, + 1212, 2422, 2437, 2438, 2439, 2680, 2440, 2441, + 2536, 2442, 2681, 2443, 2438, 2682, 2402, 2422, + 2422, 1212, 2422, 2438, 2422, 2422, 2438, 2438, + 2436, 1198, 1199, 1197, 2408, 2445, 2438, 2439, + 2448, 2408, 2418, 2438, 2406, 2408, 2408, 1197, + 2408, 2438, 2408, 2408, 2438, 2438, 2436, 1213, + 1214, 1212, 2422, 2445, 2446, 2447, 2448, 2683, + 2422, 2425, 2446, 2406, 2422, 2422, 1212, 2422, + 2446, 2422, 2422, 2446, 2446, 2444, 1390, 1391, + 1389, 2662, 2685, 2686, 2687, 2688, 2662, 2425, + 2686, 2406, 2662, 2662, 1389, 2662, 2686, 2662, + 2662, 2686, 2686, 2684, 1395, 1396, 1394, 2665, + 2690, 2691, 2692, 2693, 2665, 2668, 2691, 2406, + 2665, 2665, 1394, 2665, 2691, 2665, 2665, 2691, + 2691, 2689, 1403, 1455, 1454, 2669, 2695, 2696, + 2572, 2669, 2670, 2695, 2406, 2669, 2669, 1454, + 2669, 2695, 2669, 2669, 2695, 2695, 2694, 1405, + 1458, 1457, 2671, 2698, 2699, 2700, 2671, 2673, + 2698, 2406, 2671, 2671, 1457, 2671, 2698, 2671, + 2671, 2698, 2698, 2697, 1405, 1458, 1457, 2672, + 2673, 2394, 1457, 2701, 2701, 2701, 2671, 1405, + 1458, 1457, 2672, 2673, 2394, 1457, 2698, 2698, + 2698, 2671, 1220, 1240, 1239, 2428, 2457, 2450, + 2451, 2702, 2458, 2459, 2536, 2460, 2703, 2461, + 2450, 2704, 2402, 2428, 2428, 1239, 2428, 2450, + 2428, 2428, 2450, 2450, 2449, 1445, 1507, 1506, + 2706, 2707, 2708, 2709, 2455, 2706, 2710, 2708, + 2406, 2706, 2706, 1506, 2706, 2708, 2706, 2706, + 2708, 2708, 2705, 1447, 1510, 1509, 2712, 2713, + 2714, 2715, 2716, 2712, 2717, 2714, 2406, 2712, + 2712, 1509, 2712, 2714, 2712, 2712, 2714, 2714, + 2711, 1447, 1510, 1509, 2718, 2719, 2717, 2394, + 1509, 2712, 1219, 1238, 1237, 2429, 2427, 2394, + 1237, 2426, 1447, 1510, 1509, 2712, 2720, 2708, + 2709, 2721, 2722, 2723, 2724, 2708, 2402, 2712, + 2712, 1509, 2712, 2708, 2712, 2712, 2708, 2708, + 2705, 1447, 1510, 1509, 2718, 2719, 2717, 2394, + 1509, 2725, 2725, 2725, 2712, 1447, 1510, 1509, + 2718, 2719, 2717, 2394, 1509, 2714, 2714, 2714, + 2712, 1447, 1510, 1509, 2718, 2719, 2717, 2394, + 1509, 2726, 2726, 2726, 2712, 1447, 1510, 1509, + 2718, 2719, 2717, 2394, 1509, 2711, 2711, 2711, + 2712, 1447, 1510, 1509, 2712, 2713, 2714, 2715, + 2716, 2727, 2712, 2717, 2714, 2406, 2712, 2712, + 1509, 2712, 2714, 2712, 2712, 2714, 2714, 2711, + 1219, 1238, 1237, 2426, 2450, 2451, 2455, 2426, + 2427, 2450, 2406, 2426, 2426, 1237, 2426, 2450, + 2426, 2426, 2450, 2450, 2449, 1220, 1240, 1239, + 2428, 2453, 2454, 2455, 2728, 2428, 2430, 2453, + 2406, 2428, 2428, 1239, 2428, 2453, 2428, 2428, + 2453, 2453, 2452, 1403, 1455, 1454, 2669, 2695, + 2696, 2729, 2669, 2430, 2695, 2406, 2669, 2669, + 1454, 2669, 2695, 2669, 2669, 2695, 2695, 2694, + 1405, 1458, 1457, 2672, 2673, 2394, 1457, 2730, + 2730, 2730, 2671, 1405, 1458, 1457, 2672, 2673, + 2394, 1457, 2697, 2697, 2697, 2671, 1231, 1251, + 1250, 2533, 2573, 2574, 2731, 2468, 2533, 2732, + 2534, 2573, 2733, 2406, 2533, 2533, 1250, 2533, + 2573, 2533, 2533, 2573, 2573, 2572, 1390, 1391, + 1389, 2662, 2734, 2686, 2687, 2735, 2662, 2679, + 2686, 2406, 2662, 2662, 1389, 2662, 2686, 2662, + 2662, 2686, 2686, 2684, 1395, 1396, 1394, 2666, + 2667, 2668, 2394, 1394, 2736, 2736, 2736, 2665, + 1395, 1396, 1394, 2666, 2667, 2668, 2394, 1394, + 2691, 2691, 2691, 2665, 1422, 1476, 1475, 2738, + 2739, 2740, 2394, 2741, 1475, 2737, 1426, 1482, + 1481, 2576, 2743, 2394, 2744, 1481, 2742, 1428, + 1485, 1484, 2746, 2747, 2394, 2748, 1484, 2745, + 1234, 1257, 1256, 2749, 2432, 2750, 2577, 2751, + 2394, 2578, 1256, 2576, 1419, 1472, 1471, 2753, + 2754, 2755, 2394, 2756, 1471, 2752, 1422, 1476, + 1475, 2737, 2758, 2759, 2760, 2761, 2762, 2763, + 2764, 2759, 2402, 2765, 2737, 2737, 1475, 2737, + 2759, 2737, 2737, 2759, 2759, 2757, 1422, 1476, + 1475, 2737, 2767, 2768, 2769, 2770, 2737, 2740, + 2768, 2406, 2771, 2737, 2737, 1475, 2737, 2768, + 2737, 2737, 2768, 2768, 2766, 1426, 1482, 1481, + 2742, 2773, 2774, 2587, 2742, 2743, 2773, 2406, + 2775, 2742, 2742, 1481, 2742, 2773, 2742, 2742, + 2773, 2773, 2772, 1428, 1485, 1484, 2745, 2777, + 2778, 2779, 2745, 2747, 2777, 2406, 2780, 2745, + 2745, 1484, 2745, 2777, 2745, 2745, 2777, 2777, + 2776, 1428, 1485, 1484, 2746, 2747, 2394, 2748, + 1484, 2781, 2781, 2781, 2745, 1428, 1485, 1484, + 2746, 2747, 2394, 2748, 1484, 2777, 2777, 2777, + 2745, 1428, 1485, 1484, 2745, 2782, 2773, 2774, + 2783, 2784, 2785, 2786, 2773, 2402, 2787, 2745, + 2745, 1484, 2745, 2773, 2745, 2745, 2773, 2773, + 2772, 1428, 1485, 1484, 2746, 2747, 2394, 2748, + 1484, 2788, 2788, 2788, 2745, 1428, 1485, 1484, + 2746, 2747, 2394, 2748, 1484, 2789, 2789, 2789, + 2745, 1220, 1240, 1239, 2790, 2429, 2432, 2791, + 2430, 2792, 2394, 1239, 2428, 1445, 1507, 1506, + 2793, 2429, 2710, 2394, 1506, 2706, 1403, 1455, + 1454, 2794, 2430, 2394, 1454, 2669, 1426, 1482, + 1481, 2795, 2743, 2394, 2428, 1481, 2742, 1447, + 1510, 1509, 2718, 2719, 2717, 2394, 1509, 2796, + 2796, 2796, 2712, 1447, 1510, 1509, 2718, 2719, + 2717, 2394, 1509, 2797, 2797, 2797, 2712, 1405, + 1458, 1457, 2672, 2673, 2394, 1457, 2798, 2798, + 2798, 2671, 1405, 1458, 1457, 2672, 2673, 2394, + 1457, 2799, 2799, 2799, 2671, 1231, 1251, 1250, + 2534, 2394, 1250, 2800, 2800, 2800, 2533, 1231, + 1251, 1250, 2534, 2394, 1250, 2801, 2801, 2801, + 2533, 1213, 1214, 1212, 2423, 2424, 2425, 2394, + 1212, 2802, 2802, 2802, 2422, 1213, 1214, 1212, + 2423, 2424, 2425, 2394, 1212, 2803, 2803, 2803, + 2422, 1395, 1396, 1394, 2666, 2667, 2668, 2394, + 1394, 2804, 2804, 2804, 2665, 1395, 1396, 1394, + 2666, 2667, 2668, 2394, 1394, 2805, 2805, 2805, + 2665, 1422, 1476, 1475, 2738, 2739, 2740, 2394, + 2741, 1475, 2806, 2806, 2806, 2737, 1422, 1476, + 1475, 2738, 2739, 2740, 2394, 2741, 1475, 2807, + 2807, 2807, 2737, 1213, 1214, 1212, 2423, 2808, + 2424, 2432, 2809, 2425, 2810, 2394, 1212, 2422, + 1198, 1199, 1197, 2423, 2424, 2418, 2394, 1197, + 2408, 1419, 1472, 1471, 2811, 2812, 2755, 2394, + 2422, 1471, 2752, 1422, 1476, 1475, 2738, 2739, + 2740, 2394, 2741, 1475, 2813, 2813, 2813, 2737, + 1422, 1476, 1475, 2738, 2739, 2740, 2394, 2741, + 1475, 2766, 2766, 2766, 2737, 1234, 1257, 1256, + 2576, 2588, 2589, 2814, 2468, 2576, 2815, 2577, + 2588, 2816, 2406, 2590, 2576, 2576, 1256, 2576, + 2588, 2576, 2576, 2588, 2588, 2587, 1419, 1472, + 1471, 2752, 2817, 2759, 2760, 2818, 2752, 2755, + 2759, 2406, 2819, 2752, 2752, 1471, 2752, 2759, + 2752, 2752, 2759, 2759, 2757, 1213, 1214, 1212, + 2422, 2445, 2446, 2447, 2820, 2448, 2468, 2422, + 2821, 2425, 2446, 2822, 2406, 2422, 2422, 1212, + 2422, 2446, 2422, 2422, 2446, 2446, 2444, 1419, + 1472, 1471, 2752, 2823, 2759, 2760, 2761, 2752, + 2755, 2759, 2406, 2444, 2752, 2752, 1471, 2752, + 2759, 2752, 2752, 2759, 2759, 2757, 1437, 1496, + 1495, 2825, 2826, 2827, 2825, 2577, 2826, 2406, + 2828, 2825, 2825, 1495, 2825, 2826, 2825, 2825, + 2826, 2826, 2824, 1439, 1499, 1498, 2830, 2831, + 2832, 2830, 2833, 2831, 2406, 2834, 2830, 2830, + 1498, 2830, 2831, 2830, 2830, 2831, 2831, 2829, + 1439, 1499, 1498, 2833, 2394, 2835, 1498, 2830, + 1234, 1257, 1256, 2576, 2580, 2581, 2582, 2836, + 2583, 2536, 2584, 2837, 2585, 2581, 2838, 2402, + 2586, 2576, 2576, 1256, 2576, 2581, 2576, 2576, + 2581, 2581, 2579, 1233, 1255, 1254, 2608, 2581, + 2582, 2608, 2609, 2581, 2406, 2590, 2608, 2608, + 1254, 2608, 2581, 2608, 2608, 2581, 2581, 2579, + 1439, 1499, 1498, 2833, 2394, 2835, 1498, 2839, + 2839, 2839, 2830, 1439, 1499, 1498, 2833, 2394, + 2835, 1498, 2831, 2831, 2831, 2830, 1422, 1476, + 1475, 2738, 2739, 2740, 2394, 2741, 1475, 2840, + 2840, 2840, 2737, 1422, 1476, 1475, 2738, 2739, + 2740, 2394, 2741, 1475, 2768, 2768, 2768, 2737, + 1439, 1499, 1498, 2833, 2394, 2835, 1498, 2841, + 2841, 2841, 2830, 1439, 1499, 1498, 2833, 2394, + 2835, 1498, 2829, 2829, 2829, 2830, 1439, 1499, + 1498, 2833, 2394, 2835, 1498, 2842, 2842, 2842, + 2830, 1439, 1499, 1498, 2833, 2394, 2835, 1498, + 2843, 2843, 2843, 2830, 1428, 1485, 1484, 2746, + 2747, 2394, 2748, 1484, 2844, 2844, 2844, 2745, + 1428, 1485, 1484, 2746, 2747, 2394, 2748, 1484, + 2776, 2776, 2776, 2745, 1220, 1240, 1239, 2428, + 2453, 2454, 2845, 2455, 2468, 2428, 2846, 2430, + 2453, 2847, 2406, 2428, 2428, 1239, 2428, 2453, + 2428, 2428, 2453, 2453, 2452, 1426, 1482, 1481, + 2742, 2773, 2774, 2783, 2742, 2743, 2773, 2406, + 2452, 2742, 2742, 1481, 2742, 2773, 2742, 2742, + 2773, 2773, 2772, 1428, 1485, 1484, 2745, 2777, + 2778, 2779, 2848, 2745, 2747, 2777, 2406, 2780, + 2745, 2745, 1484, 2745, 2777, 2745, 2745, 2777, + 2777, 2776, 1422, 1476, 1475, 2737, 2767, 2768, + 2769, 2770, 2849, 2737, 2740, 2768, 2406, 2771, + 2737, 2737, 1475, 2737, 2768, 2737, 2737, 2768, + 2768, 2766, 1437, 1496, 1495, 2577, 2394, 2850, + 1495, 2825, 1233, 1255, 1254, 2609, 2394, 2578, + 1254, 2608, 1395, 1396, 1394, 2666, 2667, 2668, + 2394, 1394, 2851, 2851, 2851, 2665, 1395, 1396, + 1394, 2666, 2667, 2668, 2394, 1394, 2689, 2689, + 2689, 2665, 1230, 1249, 1248, 2532, 2570, 2571, + 2532, 2534, 2570, 2406, 2532, 2532, 1248, 2532, + 2570, 2532, 2532, 2570, 2570, 2569, 1437, 1496, + 1495, 2825, 2826, 2827, 2825, 2852, 2826, 2406, + 2572, 2825, 2825, 1495, 2825, 2826, 2825, 2825, + 2826, 2826, 2824, 1230, 1249, 1248, 2534, 2394, + 1248, 2532, 1437, 1496, 1495, 2852, 2394, 2533, + 1495, 2825, 1213, 1214, 1212, 2423, 2853, 2854, + 2855, 2856, 2857, 2858, 2859, 2860, 2425, 2861, + 2862, 2394, 2863, 1212, 2422, 1213, 1214, 1212, + 2423, 2864, 2865, 2866, 2867, 2868, 2869, 2870, + 2871, 2425, 2872, 2873, 2394, 2874, 1212, 2422, + 1213, 1214, 1212, 2423, 2875, 2876, 2877, 2878, + 2879, 2880, 2881, 2882, 2425, 2883, 2884, 2394, + 2885, 1212, 2422, 1213, 1214, 1212, 2422, 2445, + 2446, 2447, 2886, 2887, 2888, 2563, 2422, 2645, + 2889, 2647, 2890, 2425, 2891, 2446, 2892, 2406, + 2893, 2422, 2422, 1212, 2422, 2446, 2422, 2446, + 2446, 2444, 1213, 1214, 1212, 2422, 2445, 2446, + 2447, 2894, 2895, 2896, 2600, 2422, 2857, 2897, + 2859, 2898, 2425, 2899, 2446, 2900, 2406, 2901, + 2422, 2422, 1212, 2422, 2446, 2422, 2446, 2446, + 2444, 1213, 1214, 1212, 2422, 2445, 2446, 2447, + 2902, 2903, 2904, 2613, 2422, 2868, 2905, 2870, + 2906, 2425, 2907, 2446, 2908, 2406, 2909, 2422, + 2422, 1212, 2422, 2446, 2422, 2446, 2446, 2444, + 0, 524, 523, 2393, 2394, 523, 2910, 2392, + 0, 524, 523, 2911, 2912, 2913, 2914, 2915, + 2917, 2918, 2919, 2920, 2921, 2393, 2922, 2923, + 2394, 2924, 523, 2916, 2392, 0, 524, 523, + 2393, 2394, 523, 2925, 2392, 0, 524, 523, + 2926, 2927, 2928, 2929, 2930, 2932, 2933, 2934, + 2935, 2936, 2393, 2937, 2938, 2394, 2939, 523, + 2931, 2392, 0, 524, 523, 2940, 2941, 2942, + 2856, 2601, 2943, 2603, 2944, 2393, 2945, 2946, + 2394, 2947, 523, 2392, 1233, 1255, 1254, 2609, + 2394, 2392, 1254, 2608, 0, 524, 523, 2948, + 2949, 2950, 2867, 2614, 2951, 2616, 2952, 2393, + 2953, 2954, 2394, 2955, 523, 2392, 527, 524, + 523, 2392, 2404, 2405, 2392, 2393, 2404, 2406, + 2392, 2392, 523, 2392, 2404, 2956, 2392, 2392, + 2404, 2404, 2403, 0, 524, 523, 2957, 2958, + 2959, 2878, 2960, 2961, 2962, 2963, 2393, 2964, + 2965, 2394, 2966, 523, 2392, 0, 524, 523, + 2967, 2968, 2969, 2970, 2971, 2972, 2973, 2974, + 2975, 2976, 2393, 2977, 2978, 2394, 2979, 523, + 2392, 1590, 1590, 2981, 2982, 2983, 2981, 2335, + 2982, 2981, 2981, 1590, 2981, 2982, 2981, 2981, + 2982, 2982, 2980, 1591, 1591, 2318, 2985, 2986, + 2318, 2319, 2985, 2318, 2318, 1591, 2318, 2985, + 2318, 2318, 2985, 2985, 2984, 1591, 1591, 2319, + 1591, 2987, 2987, 2987, 2318, 1591, 1591, 2319, + 1591, 2985, 2985, 2985, 2318, 1594, 1594, 2989, + 2990, 1594, 2988, 1594, 1594, 2988, 2992, 2993, + 2994, 2995, 2996, 2997, 2993, 2998, 2988, 2988, + 1594, 2988, 2993, 2988, 2988, 2993, 2993, 2991, + 1594, 1594, 2988, 3000, 3001, 2988, 2989, 3000, + 3002, 2988, 2988, 1594, 2988, 3000, 2988, 2988, + 3000, 3000, 2999, 1594, 1594, 2989, 2990, 1594, + 3003, 3003, 3003, 2988, 1594, 1594, 2989, 2990, + 1594, 2999, 2999, 2999, 2988, 1594, 1594, 2989, + 2990, 1594, 3004, 3004, 3004, 2988, 1594, 1594, + 2989, 2990, 1594, 3005, 3005, 3005, 2988, 494, + 494, 2356, 2357, 2355, 494, 3006, 3006, 3006, + 2350, 494, 494, 2356, 2357, 2355, 494, 3007, + 3007, 3007, 2350, 497, 497, 2358, 2378, 2379, + 2332, 2358, 2359, 2378, 2358, 2358, 497, 2358, + 2378, 2358, 2358, 2378, 2378, 2376, 494, 494, + 2356, 2357, 2355, 494, 3008, 3008, 3008, 2350, + 494, 494, 2356, 2357, 2355, 494, 2349, 2349, + 2349, 2350, 1591, 1591, 2319, 1591, 3009, 3009, + 3009, 2318, 1591, 1591, 2319, 1591, 3010, 3010, + 3010, 2318, 1594, 1594, 2988, 3000, 3001, 3011, + 2988, 2989, 3000, 3002, 2988, 2988, 1594, 2988, + 3000, 2988, 2988, 3000, 3000, 2999, 1594, 1594, + 2989, 2990, 1594, 3012, 3012, 3012, 2988, 1594, + 1594, 2989, 2990, 1594, 3000, 3000, 3000, 2988, + 494, 494, 2356, 2357, 2355, 494, 3013, 3013, + 3013, 2350, 494, 494, 2356, 2357, 2355, 494, + 2352, 2352, 2352, 2350, 1591, 1591, 2319, 1591, + 3014, 3014, 3014, 2318, 1591, 1591, 2319, 1591, + 2984, 2984, 2984, 2318, 1593, 1593, 3015, 2993, + 2994, 3015, 3016, 2993, 2332, 3015, 3015, 1593, + 3015, 2993, 3015, 3015, 2993, 2993, 2991, 498, + 498, 2360, 2375, 2385, 2386, 3017, 2360, 2362, + 2375, 2360, 2360, 498, 2360, 2375, 2360, 2360, + 2375, 2375, 2384, 498, 498, 2361, 2362, 498, + 3018, 3018, 3018, 2360, 498, 498, 2361, 2362, + 498, 3019, 3019, 3019, 2360, 494, 494, 2350, + 2351, 2352, 2353, 2354, 3020, 2350, 2355, 2352, + 2350, 2350, 494, 2350, 2352, 2350, 2350, 2352, + 2352, 2349, 0, 501, 2335, 3021, 0, 2321, + 0, 0, 508, 3023, 3024, 3025, 3026, 3027, + 3028, 3029, 3030, 3031, 3032, 3033, 3034, 3035, + 3036, 3037, 508, 3022, 1590, 1590, 2335, 1590, + 2981, 1593, 1593, 3016, 2321, 1593, 3015, 1591, + 1591, 3038, 3039, 2319, 1591, 2318, 3040, 3041, + 3042, 3043, 3044, 3045, 3046, 3047, 3048, 3049, + 3050, 196, 3052, 3053, 3054, 3055, 3056, 3057, + 3058, 3059, 3060, 3061, 3062, 3063, 3051, 3065, + 3066, 3064, 196, 3067, 3069, 3068, 3070, 3071, + 3072, 3073, 196, 3052, 3074, 3051, 3075, 3076, + 196, 3077, 196, 196, 3078, 3080, 3079, 196, + 3081, 3083, 3082, 3065, 3053, 3084, 3055, 3056, + 3057, 3058, 3059, 3060, 3061, 3062, 3063, 3051, + 3085, 3086, 3087, 3088, 3089, 3090, 3091, 3092, + 3093, 3094, 3095, 196, 3096, 3097, 3098, 3099, + 3100, 3101, 3102, 3103, 3104, 3105, 3106, 196, + 3107, 3108, 3109, 3110, 3111, 3112, 3113, 3114, + 3115, 3116, 3117, 196, 3118, 3119, 3120, 3121, + 3122, 3123, 3124, 3125, 3126, 3127, 3128, 196, + 3129, 3130, 3131, 3132, 3133, 3134, 3135, 3136, + 3137, 3138, 3139, 196, 3140, 3141, 3142, 3143, + 3144, 3145, 3146, 3147, 3148, 3149, 3150, 196, + 3151, 3152, 3153, 3154, 3155, 3156, 3157, 3158, + 3159, 3160, 3161, 196, 3162, 3163, 3164, 3165, + 3166, 3167, 3168, 3169, 3170, 3171, 3172, 196, + 3065, 3173, 3174, 3175, 3099, 3176, 3177, 3178, + 3179, 3180, 3181, 3182, 3064, 3065, 3183, 3184, + 3185, 3110, 3186, 3187, 3188, 3189, 3190, 3191, + 3192, 3064, 3065, 3193, 3194, 3195, 3121, 3196, + 3197, 3198, 3199, 3200, 3201, 3202, 3064, 3065, + 3203, 3204, 3205, 3132, 3206, 3207, 3208, 3209, + 3210, 3211, 3212, 3064, 3214, 3215, 3064, 3213, + 3217, 3218, 3219, 3216, 3079, 3221, 3220, 3223, + 3224, 3222, 3225, 3071, 3226, 3080, 3227, 3079, + 3228, 3229, 3230, 3213, 3065, 3231, 3066, 3071, + 3232, 3233, 3064, 3065, 3066, 3051, 3235, 3236, + 3064, 3234, 3238, 3239, 3240, 3237, 3082, 3242, + 3241, 3244, 3245, 3243, 3246, 3071, 3247, 3248, + 3083, 3082, 3249, 3250, 3251, 3234, 3082, 3253, + 3252, 3255, 3256, 3254, 3083, 3081, 3257, 3069, + 3071, 3258, 3259, 3068, 3261, 3069, 3260, 3263, + 3264, 3262, 3069, 3067, 3265, 3068, 3220, 3266, + 3068, 3241, 3080, 3078, 3267, 3079, 3252, 3065, + 3268, 3269, 3270, 3143, 3271, 3272, 3273, 3274, + 3275, 3276, 3277, 3064, 3065, 3278, 3279, 3280, + 3154, 3281, 3282, 3283, 3284, 3285, 3286, 3287, + 3064, 3065, 3288, 3289, 3290, 3165, 3291, 3292, + 3293, 3294, 3295, 3296, 3297, 3064, 3298, 3299, + 3300, 3301, 3302, 3303, 3304, 3305, 3306, 3307, + 3308, 196, 3310, 3311, 3312, 3313, 3314, 3315, + 3316, 3317, 3318, 3319, 3320, 3321, 3309, 3323, + 3324, 3322, 196, 3325, 3327, 3326, 3328, 3329, + 3330, 3331, 196, 3310, 3332, 3309, 3333, 3334, + 3335, 196, 3336, 3337, 196, 196, 3339, 3340, + 3341, 3342, 3343, 3340, 196, 196, 3340, 196, + 196, 3340, 3340, 3338, 196, 3345, 3346, 196, + 3345, 196, 196, 3345, 196, 196, 3345, 3345, + 3344, 3347, 196, 3348, 196, 196, 196, 196, + 3345, 3349, 3349, 3349, 196, 3345, 3345, 3345, + 196, 3350, 3350, 3350, 196, 3344, 3344, 3344, + 196, 3347, 196, 3345, 3352, 196, 3345, 196, + 196, 3345, 196, 196, 3345, 3345, 3351, 3353, + 3353, 3353, 196, 3351, 3351, 3351, 196, 196, + 3345, 3346, 3354, 196, 3345, 196, 196, 3345, + 196, 196, 3345, 3345, 3344, 3347, 196, 3345, + 3346, 3355, 3345, 196, 196, 3345, 196, 196, + 3345, 3345, 3344, 196, 3356, 3358, 3357, 196, + 3359, 3361, 3360, 3323, 3311, 3362, 3313, 3314, + 3315, 3316, 3317, 3318, 3319, 3320, 3321, 3309, + 3363, 3364, 3365, 3366, 3367, 3368, 3369, 3370, + 3371, 3372, 3373, 196, 3374, 3375, 3376, 3377, + 3378, 3379, 3380, 3381, 3382, 3383, 3384, 196, + 3385, 3386, 3387, 3388, 3389, 3390, 3391, 3392, + 3393, 3394, 3395, 196, 3396, 3397, 3398, 3399, + 3400, 3401, 3402, 3403, 3404, 3405, 3406, 196, + 3407, 3408, 3409, 3410, 3411, 3412, 3413, 3414, + 3415, 3416, 3417, 196, 3418, 3419, 3420, 3421, + 3422, 3423, 3424, 3425, 3426, 3427, 3428, 196, + 3429, 3430, 3431, 3432, 3433, 3434, 3435, 3436, + 3437, 3438, 3439, 196, 3440, 3441, 3442, 3443, + 3444, 3445, 3446, 3447, 3448, 3449, 3450, 196, + 3323, 3451, 3452, 3453, 3377, 3454, 3455, 3456, + 3457, 3458, 3459, 3460, 3322, 3323, 3461, 3462, + 3463, 3388, 3464, 3465, 3466, 3467, 3468, 3469, + 3470, 3322, 3323, 3471, 3472, 3473, 3399, 3474, + 3475, 3476, 3477, 3478, 3479, 3480, 3322, 3323, + 3481, 3482, 3483, 3410, 3484, 3485, 3486, 3487, + 3488, 3489, 3490, 3322, 3492, 3493, 3322, 3491, + 3495, 3496, 3497, 3494, 3357, 3499, 3498, 3501, + 3502, 3500, 3503, 3329, 3504, 3358, 3505, 3357, + 3506, 3507, 3508, 3491, 3323, 3509, 3324, 3329, + 3510, 3511, 3322, 3323, 3324, 3309, 3513, 3514, + 3322, 3512, 3516, 3517, 3518, 3515, 3360, 3520, + 3519, 3522, 3523, 3521, 3524, 3329, 3525, 3526, + 3361, 3360, 3527, 3528, 3529, 3512, 3360, 3531, + 3530, 3533, 3534, 3532, 3361, 3359, 3535, 3327, + 3329, 3536, 3537, 3326, 3539, 3327, 3538, 3541, + 3542, 3540, 3327, 3325, 3543, 3326, 3498, 3544, + 3326, 3519, 3358, 3356, 3545, 3357, 3530, 3323, + 3546, 3547, 3548, 3421, 3549, 3550, 3551, 3552, + 3553, 3554, 3555, 3322, 3323, 3556, 3557, 3558, + 3432, 3559, 3560, 3561, 3562, 3563, 3564, 3565, + 3322, 3323, 3566, 3567, 3568, 3443, 3569, 3570, + 3571, 3572, 3573, 3574, 3575, 3322, 2249, 2250, + 2251, 2252, 2254, 2255, 2256, 2257, 2258, 2259, + 2260, 2261, 2266, 2262, 2263, 2264, 3576, 2253, + 2253, 196, 3577, 3578, 3579, 3580, 3582, 3583, + 3584, 3585, 3586, 3587, 3588, 3581, 196, 3590, + 3591, 3592, 3593, 3594, 3595, 3596, 3597, 3598, + 3599, 3600, 3601, 3589, 3603, 3604, 3602, 196, + 3605, 3607, 3606, 3608, 3609, 3610, 3611, 196, + 3590, 3612, 3589, 196, 3613, 3615, 3614, 196, + 3616, 3618, 3617, 3603, 3591, 3619, 3593, 3594, + 3595, 3596, 3597, 3598, 3599, 3600, 3601, 3589, + 3620, 3621, 3622, 3623, 3624, 3625, 3626, 3627, + 3628, 3629, 3630, 196, 3631, 3632, 3633, 3634, + 3635, 3636, 3637, 3638, 3639, 3640, 3641, 196, + 3642, 3643, 3644, 3645, 3646, 3647, 3648, 3649, + 3650, 3651, 3652, 196, 3653, 3654, 3655, 3656, + 3657, 3658, 3659, 3660, 3661, 3662, 3663, 196, + 3664, 3665, 3666, 3667, 3668, 3669, 3670, 3671, + 3672, 3673, 3674, 196, 3675, 3676, 3677, 3678, + 3679, 3680, 3681, 3682, 3683, 3684, 3685, 196, + 3686, 3687, 3688, 3689, 3690, 3691, 3692, 3693, + 3694, 3695, 3696, 196, 3697, 3698, 3699, 3700, + 3701, 3702, 3703, 3704, 3705, 3706, 3707, 196, + 3603, 3708, 3709, 3710, 3634, 3711, 3712, 3713, + 3714, 3715, 3716, 3717, 3602, 3603, 3718, 3719, + 3720, 3645, 3721, 3722, 3723, 3724, 3725, 3726, + 3727, 3602, 3603, 3728, 3729, 3730, 3656, 3731, + 3732, 3733, 3734, 3735, 3736, 3737, 3602, 3603, + 3738, 3739, 3740, 3667, 3741, 3742, 3743, 3744, + 3745, 3746, 3747, 3602, 3749, 3750, 3602, 3748, + 3752, 3753, 3754, 3751, 3614, 3756, 3755, 3758, + 3759, 3757, 3760, 3609, 3761, 3615, 3762, 3614, + 3763, 3764, 3765, 3748, 3603, 3766, 3604, 3609, + 3767, 3768, 3602, 3603, 3604, 3589, 3770, 3771, + 3602, 3769, 3773, 3774, 3775, 3772, 3617, 3777, + 3776, 3779, 3780, 3778, 3781, 3609, 3782, 3783, + 3618, 3617, 3784, 3785, 3786, 3769, 3617, 3788, + 3787, 3790, 3791, 3789, 3618, 3616, 3792, 3607, + 3609, 3793, 3794, 3606, 3796, 3607, 3795, 3798, + 3799, 3797, 3607, 3605, 3800, 3606, 3755, 3801, + 3606, 3776, 3615, 3613, 3802, 3614, 3787, 3603, + 3803, 3804, 3805, 3678, 3806, 3807, 3808, 3809, + 3810, 3811, 3812, 3602, 3603, 3813, 3814, 3815, + 3689, 3816, 3817, 3818, 3819, 3820, 3821, 3822, + 3602, 3603, 3823, 3824, 3825, 3700, 3826, 3827, + 3828, 3829, 3830, 3831, 3832, 3602, 2249, 2250, + 2251, 2252, 2254, 2255, 2256, 2257, 2258, 2259, + 2260, 2261, 2262, 3833, 2263, 2264, 2253, 2253, + 2253, 196, 2249, 2250, 2251, 2252, 2254, 2255, + 2256, 2257, 2258, 2259, 3834, 2260, 2261, 2262, + 2263, 2264, 2253, 2253, 2253, 196, 2249, 2250, + 2251, 2252, 2254, 2255, 2256, 2257, 2258, 2259, + 2260, 2261, 2262, 3835, 2263, 2264, 2253, 2253, + 2253, 196, 2249, 2250, 2251, 2252, 2254, 2255, + 2256, 2257, 2258, 2259, 2260, 2261, 2262, 3836, + 2263, 2264, 2253, 2253, 2253, 196, 2249, 2250, + 2251, 2252, 2254, 2255, 2256, 2257, 2258, 2259, + 2260, 3837, 2261, 2262, 2263, 2264, 2253, 2253, + 2253, 196, 2249, 2250, 2251, 2252, 2254, 2255, + 2256, 2257, 2258, 2259, 2260, 3838, 2261, 2262, + 2263, 2264, 2253, 2253, 2253, 196, 2249, 2250, + 2251, 2252, 2254, 2255, 2256, 2257, 2258, 2259, + 3839, 2260, 2261, 2262, 2263, 2264, 2253, 2253, + 2253, 196, 3840, 3841, 3842, 3843, 3844, 3845, + 3846, 3847, 3848, 3849, 3850, 196, 3852, 3853, + 3854, 3855, 3856, 3857, 3858, 3859, 3860, 3861, + 3862, 3863, 3851, 3865, 3866, 3864, 196, 3867, + 3869, 3868, 3870, 3871, 3872, 3873, 196, 3852, + 3874, 3851, 3875, 3876, 196, 3877, 196, 196, + 3878, 3880, 3879, 196, 3881, 3883, 3882, 3865, + 3853, 3884, 3855, 3856, 3857, 3858, 3859, 3860, + 3861, 3862, 3863, 3851, 3885, 3886, 3887, 3888, + 3889, 3890, 3891, 3892, 3893, 3894, 3895, 196, + 3896, 3897, 3898, 3899, 3900, 3901, 3902, 3903, + 3904, 3905, 3906, 196, 3907, 3908, 3909, 3910, + 3911, 3912, 3913, 3914, 3915, 3916, 3917, 196, + 3918, 3919, 3920, 3921, 3922, 3923, 3924, 3925, + 3926, 3927, 3928, 196, 3929, 3930, 3931, 3932, + 3933, 3934, 3935, 3936, 3937, 3938, 3939, 196, + 3940, 3941, 3942, 3943, 3944, 3945, 3946, 3947, + 3948, 3949, 3950, 196, 3951, 3952, 3953, 3954, + 3955, 3956, 3957, 3958, 3959, 3960, 3961, 196, + 3962, 3963, 3964, 3965, 3966, 3967, 3968, 3969, + 3970, 3971, 3972, 196, 3865, 3973, 3974, 3975, + 3899, 3976, 3977, 3978, 3979, 3980, 3981, 3982, + 3864, 3865, 3983, 3984, 3985, 3910, 3986, 3987, + 3988, 3989, 3990, 3991, 3992, 3864, 3865, 3993, + 3994, 3995, 3921, 3996, 3997, 3998, 3999, 4000, + 4001, 4002, 3864, 3865, 4003, 4004, 4005, 3932, + 4006, 4007, 4008, 4009, 4010, 4011, 4012, 3864, + 4014, 4015, 3864, 4013, 4017, 4018, 4019, 4016, + 3879, 4021, 4020, 4023, 4024, 4022, 4025, 3871, + 4026, 3880, 4027, 3879, 4028, 4029, 4030, 4013, + 3865, 4031, 3866, 3871, 4032, 4033, 3864, 3865, + 3866, 3851, 4035, 4036, 3864, 4034, 4038, 4039, + 4040, 4037, 3882, 4042, 4041, 4044, 4045, 4043, + 4046, 3871, 4047, 4048, 3883, 3882, 4049, 4050, + 4051, 4034, 3882, 4053, 4052, 4055, 4056, 4054, + 3883, 3881, 4057, 3869, 3871, 4058, 4059, 3868, + 4061, 3869, 4060, 4063, 4064, 4062, 3869, 3867, + 4065, 3868, 4020, 4066, 3868, 4041, 3880, 3878, + 4067, 3879, 4052, 3865, 4068, 4069, 4070, 3943, + 4071, 4072, 4073, 4074, 4075, 4076, 4077, 3864, + 3865, 4078, 4079, 4080, 3954, 4081, 4082, 4083, + 4084, 4085, 4086, 4087, 3864, 3865, 4088, 4089, + 4090, 3965, 4091, 4092, 4093, 4094, 4095, 4096, + 4097, 3864, 2249, 2250, 2251, 2252, 2254, 2255, + 2256, 2257, 2258, 2259, 4098, 2260, 2261, 2262, + 2263, 2264, 2253, 2253, 2253, 196, 4099, 4100, + 4101, 4102, 4103, 4104, 4105, 4106, 4107, 4108, + 4109, 196, 4111, 4112, 4113, 4114, 4115, 4116, + 4117, 4118, 4119, 4120, 4121, 4122, 4110, 4124, + 4125, 4123, 196, 4126, 4128, 4127, 4129, 4130, + 4131, 4132, 196, 4111, 4133, 4110, 4134, 4135, + 196, 4136, 196, 196, 4137, 4139, 4138, 196, + 4140, 4142, 4141, 4124, 4112, 4143, 4114, 4115, + 4116, 4117, 4118, 4119, 4120, 4121, 4122, 4110, + 4144, 4145, 4146, 4147, 4148, 4149, 4150, 4151, + 4152, 4153, 4154, 196, 4155, 4156, 4157, 4158, + 4159, 4160, 4161, 4162, 4163, 4164, 4165, 196, + 4166, 4167, 4168, 4169, 4170, 4171, 4172, 4173, + 4174, 4175, 4176, 196, 4177, 4178, 4179, 4180, + 4181, 4182, 4183, 4184, 4185, 4186, 4187, 196, + 4188, 4189, 4190, 4191, 4192, 4193, 4194, 4195, + 4196, 4197, 4198, 196, 4199, 4200, 4201, 4202, + 4203, 4204, 4205, 4206, 4207, 4208, 4209, 196, + 4210, 4211, 4212, 4213, 4214, 4215, 4216, 4217, + 4218, 4219, 4220, 196, 4221, 4222, 4223, 4224, + 4225, 4226, 4227, 4228, 4229, 4230, 4231, 196, + 4124, 4232, 4233, 4234, 4158, 4235, 4236, 4237, + 4238, 4239, 4240, 4241, 4123, 4124, 4242, 4243, + 4244, 4169, 4245, 4246, 4247, 4248, 4249, 4250, + 4251, 4123, 4124, 4252, 4253, 4254, 4180, 4255, + 4256, 4257, 4258, 4259, 4260, 4261, 4123, 4124, + 4262, 4263, 4264, 4191, 4265, 4266, 4267, 4268, + 4269, 4270, 4271, 4123, 4273, 4274, 4123, 4272, + 4276, 4277, 4278, 4275, 4138, 4280, 4279, 4282, + 4283, 4281, 4284, 4130, 4285, 4139, 4286, 4138, + 4287, 4288, 4289, 4272, 4124, 4290, 4125, 4130, + 4291, 4292, 4123, 4124, 4125, 4110, 4294, 4295, + 4123, 4293, 4297, 4298, 4299, 4296, 4141, 4301, + 4300, 4303, 4304, 4302, 4305, 4130, 4306, 4307, + 4142, 4141, 4308, 4309, 4310, 4293, 4141, 4312, + 4311, 4314, 4315, 4313, 4142, 4140, 4316, 4128, + 4130, 4317, 4318, 4127, 4320, 4128, 4319, 4322, + 4323, 4321, 4128, 4126, 4324, 4127, 4279, 4325, + 4127, 4300, 4139, 4137, 4326, 4138, 4311, 4124, + 4327, 4328, 4329, 4202, 4330, 4331, 4332, 4333, + 4334, 4335, 4336, 4123, 4124, 4337, 4338, 4339, + 4213, 4340, 4341, 4342, 4343, 4344, 4345, 4346, + 4123, 4124, 4347, 4348, 4349, 4224, 4350, 4351, + 4352, 4353, 4354, 4355, 4356, 4123, 2249, 2250, + 2251, 2252, 2254, 2255, 2256, 2257, 2258, 4357, + 2260, 2261, 2262, 2263, 2264, 2253, 2253, 2253, + 196, 2249, 2250, 2251, 2252, 2254, 2255, 2256, + 2257, 2258, 2253, 2259, 2260, 4358, 2261, 2262, + 2263, 2264, 2253, 2253, 2253, 2253, 196, 2249, + 2250, 2251, 2252, 2254, 2255, 2256, 2257, 2258, + 2259, 4359, 2260, 2261, 2262, 2263, 2264, 2253, + 2253, 2253, 196, 4360, 4361, 4362, 4363, 4364, + 4365, 4366, 4367, 4368, 2259, 2260, 2261, 2262, + 4369, 4370, 2253, 2253, 2253, 196, 4372, 4373, + 4374, 4375, 4376, 4377, 4378, 4379, 4380, 4381, + 4382, 4383, 4371, 4385, 4386, 4384, 196, 4387, + 4389, 4388, 4390, 4391, 4392, 4393, 196, 4372, + 4394, 4371, 4395, 4396, 2027, 196, 4397, 4398, + 4399, 4400, 4401, 4402, 4403, 4404, 4405, 4406, + 4407, 4408, 0, 196, 4409, 4411, 4410, 196, + 4412, 4414, 4413, 4385, 4373, 4415, 4375, 4376, + 4377, 4378, 4379, 4380, 4381, 4382, 4383, 4371, + 4416, 4417, 4418, 4419, 4420, 4421, 4422, 4423, + 4424, 4425, 4426, 196, 4427, 4428, 4429, 4430, + 4431, 4432, 4433, 4434, 4435, 4436, 4437, 196, + 4438, 4439, 4440, 4441, 4442, 4443, 4444, 4445, + 4446, 4447, 4448, 196, 4449, 4450, 4451, 4452, + 4453, 4454, 4455, 4456, 4457, 4458, 4459, 196, + 4460, 4461, 4462, 4463, 4464, 4465, 4466, 4467, + 4468, 4469, 4470, 196, 4471, 4472, 4473, 4474, + 4475, 4476, 4477, 4478, 4479, 4480, 4481, 196, + 4482, 4483, 4484, 4485, 4486, 4487, 4488, 4489, + 4490, 4491, 4492, 196, 4493, 4494, 4495, 4496, + 4497, 4498, 4499, 4500, 4501, 4502, 4503, 196, + 4385, 4504, 4505, 4506, 4430, 4507, 4508, 4509, + 4510, 4511, 4512, 4513, 4384, 4385, 4514, 4515, + 4516, 4441, 4517, 4518, 4519, 4520, 4521, 4522, + 4523, 4384, 4385, 4524, 4525, 4526, 4452, 4527, + 4528, 4529, 4530, 4531, 4532, 4533, 4384, 4385, + 4534, 4535, 4536, 4463, 4537, 4538, 4539, 4540, + 4541, 4542, 4543, 4384, 4545, 4546, 4384, 4544, + 4548, 4549, 4550, 4547, 4410, 4552, 4551, 4554, + 4555, 4553, 4556, 4391, 4557, 4411, 4558, 4410, + 4559, 4560, 4561, 4544, 4385, 4562, 4386, 4391, + 4563, 4564, 4384, 4385, 4386, 4371, 4566, 4567, + 4384, 4565, 4569, 4570, 4571, 4568, 4413, 4573, + 4572, 4575, 4576, 4574, 4577, 4391, 4578, 4579, + 4414, 4413, 4580, 4581, 4582, 4565, 4413, 4584, + 4583, 4586, 4587, 4585, 4414, 4412, 4588, 4389, + 4391, 4589, 4590, 4388, 4592, 4389, 4591, 4594, + 4595, 4593, 4389, 4387, 4596, 4388, 4551, 4597, + 4388, 4572, 4411, 4409, 4598, 4410, 4583, 4385, + 4599, 4600, 4601, 4474, 4602, 4603, 4604, 4605, + 4606, 4607, 4608, 4384, 4385, 4609, 4610, 4611, + 4485, 4612, 4613, 4614, 4615, 4616, 4617, 4618, + 4384, 4385, 4619, 4620, 4621, 4496, 4622, 4623, + 4624, 4625, 4626, 4627, 4628, 4384, 4630, 4631, + 4629, 4632, 4629, 4633, 4629, 4634, 4629, 4635, + 4629, 4635, 4636, 4635, 4629, 4637, 4629, 4631, + 4629, 4638, 4629, 4639, 4629, 4640, 4629, 4642, + 4643, 4643, 4644, 4646, 4643, 4647, 4648, 4649, + 4650, 4651, 4643, 4645, 4643, 4645, 4645, 4641, + 4653, 4642, 4643, 4642, 4644, 4654, 4642, 4655, + 4642, 4642, 4652, 4653, 4656, 4652, 4641, 4657, + 4656, 4657, 4652, 4644, 4646, 4651, 4641, 4658, + 4644, 4641, 4641, 4659, 4656, 4659, 4641, 4660, + 4656, 4660, 4642, 4643, 4643, 4644, 4646, 4643, + 4651, 4643, 4643, 4641, 4662, 4663, 4652, 4661, + 4662, 4663, 4664, 4661, 4659, 4666, 4665, 4663, + 4666, 4665, 4661, 4644, 4656, 4667, 4659, 4669, + 4659, 4668, 4669, 4663, 4668, 4670, 4644, 4671, + 4656, 4660, 4672, 4669, 4664, 4670, 4660, 4666, + 4673, 4669, 4666, 4673, 4656, 4644, 4674, 4675, + 4657, 4663, 4657, 4665, 4669, 4657, 4673, 4653, + 4656, 4644, 4654, 4655, 4652, 4672, 4669, 4652, + 4670, 4660, 4663, 4668, 4642, 4643, 4643, 4644, + 4646, 4643, 4645, 4647, 4648, 4649, 4650, 4651, + 4643, 4645, 4643, 4645, 4645, 4645, 4641, 4642, + 4643, 4643, 4644, 4646, 4643, 4647, 4648, 4676, + 4650, 4651, 4643, 4645, 4643, 4645, 4645, 4641, + 4642, 4643, 4643, 4644, 4646, 4643, 4647, 4648, + 4649, 4677, 4650, 4651, 4643, 4643, 4645, 4645, + 4641, 4642, 4643, 4643, 4644, 4646, 4643, 4647, + 4648, 4649, 4677, 4650, 4651, 4643, 4645, 4643, + 4645, 4645, 4641, 4642, 4643, 4643, 4644, 4646, + 4643, 4647, 4648, 4649, 4650, 4678, 4651, 4643, + 4645, 4643, 4645, 4645, 4641, 4642, 4643, 4643, + 4644, 4646, 4643, 4647, 4648, 4649, 4650, 4679, + 4651, 4643, 4645, 4643, 4645, 4645, 4641, 4642, + 4643, 4643, 4644, 4646, 4643, 4647, 4648, 4649, + 4650, 4651, 4643, 4645, 4643, 4645, 4645, 4645, + 4641, 4642, 4643, 4643, 4644, 4646, 4643, 4647, + 4680, 4648, 4649, 4650, 4651, 4643, 4645, 4643, + 4645, 4645, 4641, 4642, 4643, 4643, 4644, 4646, + 4643, 4647, 4648, 4649, 4650, 4681, 4651, 4643, + 4645, 4643, 4645, 4645, 4641, 4642, 4643, 4643, + 4644, 4646, 4643, 4647, 4648, 4649, 4650, 4682, + 4651, 4643, 4645, 4643, 4645, 4645, 4641, 4642, + 4643, 4643, 4644, 4646, 4643, 4647, 4648, 4683, + 4649, 4650, 4651, 4643, 4645, 4643, 4645, 4645, + 4641, 4642, 4643, 4643, 4644, 4646, 4643, 4647, + 4648, 4679, 4649, 4650, 4651, 4643, 4645, 4643, + 4645, 4645, 4641, 4642, 4643, 4643, 4644, 4646, + 4643, 4647, 4643, 4648, 4649, 4650, 4643, 4651, + 4643, 4645, 4643, 4645, 4645, 4641, 4642, 4643, + 4643, 4644, 4646, 4643, 4647, 4648, 4649, 4684, + 4650, 4651, 4643, 4645, 4643, 4645, 4645, 4641, + 4642, 4643, 4643, 4644, 4646, 4643, 4647, 4648, + 4649, 4650, 4685, 4651, 4643, 4645, 4643, 4645, + 4645, 4641, 4642, 4643, 4643, 4644, 4646, 4643, + 4647, 4686, 4648, 4649, 4650, 4651, 4643, 4645, + 4643, 4645, 4645, 4641, 4642, 4643, 4643, 4644, + 4646, 4643, 4647, 4648, 4649, 4650, 4687, 4651, + 4643, 4645, 4643, 4645, 4645, 4641, 4642, 4643, + 4643, 4644, 4646, 4643, 4647, 4648, 4649, 4650, + 4688, 4651, 4643, 4645, 4643, 4645, 4645, 4641, + 4642, 4643, 4643, 4644, 4646, 4643, 4647, 4648, + 4689, 4649, 4650, 4651, 4643, 4645, 4643, 4645, + 4645, 4641, 4642, 4643, 4643, 4644, 4646, 4643, + 4647, 4648, 4690, 4649, 4650, 4651, 4643, 4645, + 4643, 4645, 4645, 4641, 4642, 4643, 4643, 4644, + 4646, 4643, 4647, 4643, 4648, 4649, 4650, 4651, + 4643, 4645, 4643, 4645, 4645, 4641, 4642, 4643, + 4643, 4644, 4646, 4643, 4647, 4648, 4649, 4650, + 4690, 4651, 4643, 4645, 4643, 4645, 4645, 4641, + 4692, 4691, 4693, 4691, 4694, 4691, 4695, 4691, + 4696, 4691, 4697, 4691, 4698, 4691, 4700, 4699, + 4701, 4699, 4702, 4699, 4703, 4699, 4704, 4699, + 4705, 4699, 4706, 4699, 4707, 4699, 4708, 4699, + 4709, 4699, 4711, 4712, 4712, 4713, 4715, 4712, + 4716, 4717, 4718, 4719, 4720, 4712, 4714, 4712, + 4714, 4714, 4710, 4722, 4711, 4712, 4711, 4713, + 4723, 4711, 4724, 4711, 4711, 4721, 4722, 4725, + 4721, 4710, 4726, 4725, 4726, 4721, 4713, 4715, + 4720, 4710, 4727, 4713, 4710, 4710, 4728, 4725, + 4728, 4710, 4729, 4725, 4729, 4711, 4712, 4712, + 4713, 4715, 4712, 4720, 4712, 4712, 4710, 4731, + 4732, 4721, 4730, 4731, 4732, 4733, 4730, 4728, + 4735, 4734, 4732, 4735, 4734, 4730, 4713, 4725, + 4736, 4728, 4738, 4728, 4737, 4738, 4732, 4737, + 4739, 4713, 4740, 4725, 4729, 4741, 4738, 4733, + 4739, 4729, 4735, 4742, 4738, 4735, 4742, 4725, + 4713, 4743, 4744, 4726, 4732, 4726, 4734, 4738, + 4726, 4742, 4722, 4725, 4713, 4723, 4724, 4721, + 4741, 4738, 4721, 4739, 4729, 4732, 4737, 4711, + 4712, 4712, 4713, 4715, 4712, 4714, 4716, 4717, + 4718, 4719, 4720, 4712, 4714, 4712, 4714, 4714, + 4714, 4710, 4711, 4712, 4712, 4713, 4715, 4712, + 4716, 4717, 4745, 4719, 4720, 4712, 4714, 4712, + 4714, 4714, 4710, 4711, 4712, 4712, 4713, 4715, + 4712, 4716, 4717, 4718, 4746, 4719, 4720, 4712, + 4712, 4714, 4714, 4710, 4711, 4712, 4712, 4713, + 4715, 4712, 4716, 4717, 4718, 4746, 4719, 4720, + 4712, 4714, 4712, 4714, 4714, 4710, 4711, 4712, + 4712, 4713, 4715, 4712, 4716, 4717, 4718, 4719, + 4747, 4720, 4712, 4714, 4712, 4714, 4714, 4710, + 4711, 4712, 4712, 4713, 4715, 4712, 4716, 4717, + 4718, 4719, 4748, 4720, 4712, 4714, 4712, 4714, + 4714, 4710, 4711, 4712, 4712, 4713, 4715, 4712, + 4716, 4717, 4718, 4719, 4720, 4712, 4714, 4712, + 4714, 4714, 4714, 4710, 4711, 4712, 4712, 4713, + 4715, 4712, 4716, 4749, 4717, 4718, 4719, 4720, + 4712, 4714, 4712, 4714, 4714, 4710, 4711, 4712, + 4712, 4713, 4715, 4712, 4716, 4717, 4718, 4719, + 4750, 4720, 4712, 4714, 4712, 4714, 4714, 4710, + 4711, 4712, 4712, 4713, 4715, 4712, 4716, 4717, + 4718, 4719, 4751, 4720, 4712, 4714, 4712, 4714, + 4714, 4710, 4711, 4712, 4712, 4713, 4715, 4712, + 4716, 4717, 4752, 4718, 4719, 4720, 4712, 4714, + 4712, 4714, 4714, 4710, 4711, 4712, 4712, 4713, + 4715, 4712, 4716, 4717, 4748, 4718, 4719, 4720, + 4712, 4714, 4712, 4714, 4714, 4710, 4711, 4712, + 4712, 4713, 4715, 4712, 4716, 4712, 4717, 4718, + 4719, 4712, 4720, 4712, 4714, 4712, 4714, 4714, + 4710, 4711, 4712, 4712, 4713, 4715, 4712, 4716, + 4717, 4718, 4753, 4719, 4720, 4712, 4714, 4712, + 4714, 4714, 4710, 4711, 4712, 4712, 4713, 4715, + 4712, 4716, 4717, 4718, 4719, 4754, 4720, 4712, + 4714, 4712, 4714, 4714, 4710, 4711, 4712, 4712, + 4713, 4715, 4712, 4716, 4755, 4717, 4718, 4719, + 4720, 4712, 4714, 4712, 4714, 4714, 4710, 4711, + 4712, 4712, 4713, 4715, 4712, 4716, 4717, 4718, + 4719, 4756, 4720, 4712, 4714, 4712, 4714, 4714, + 4710, 4711, 4712, 4712, 4713, 4715, 4712, 4716, + 4717, 4718, 4719, 4757, 4720, 4712, 4714, 4712, + 4714, 4714, 4710, 4711, 4712, 4712, 4713, 4715, + 4712, 4716, 4717, 4758, 4718, 4719, 4720, 4712, + 4714, 4712, 4714, 4714, 4710, 4711, 4712, 4712, + 4713, 4715, 4712, 4716, 4717, 4759, 4718, 4719, + 4720, 4712, 4714, 4712, 4714, 4714, 4710, 4711, + 4712, 4712, 4713, 4715, 4712, 4716, 4712, 4717, + 4718, 4719, 4720, 4712, 4714, 4712, 4714, 4714, + 4710, 4711, 4712, 4712, 4713, 4715, 4712, 4716, + 4717, 4718, 4719, 4759, 4720, 4712, 4714, 4712, + 4714, 4714, 4710, 4761, 4761, 4762, 4760, 4763, + 4760, 4764, 4764, 4765, 4766, 4767, 4768, 4769, + 4770, 4771, 4772, 4773, 4774, 4775, 4776, 4777, + 4778, 4779, 4777, 4780, 4764, 4764, 4760, 4781, + 4782, 4764, 4764, 4781, 4764, 4764, 4764, 4764, + 4760, 4781, 4782, 4781, 4760, 4764, 4764, 4783, + 4784, 4785, 4764, 4764, 4764, 4764, 4760, 4781, + 4782, 4764, 4764, 4786, 4781, 4764, 4764, 4764, + 4764, 4760, 4781, 4782, 4764, 4764, 4777, 4781, + 4764, 4764, 4764, 4764, 4760, 4764, 4764, 4764, + 4764, 4764, 4764, 4760, 4781, 4782, 4764, 4764, + 4787, 4781, 4764, 4764, 4764, 4764, 4760, 4781, + 4782, 4764, 4764, 4788, 4781, 4764, 4764, 4764, + 4764, 4760, 4781, 4782, 4764, 4764, 4789, 4781, + 4764, 4764, 4764, 4764, 4760, 4781, 4782, 4764, + 4764, 4769, 4781, 4764, 4764, 4764, 4764, 4760, + 4781, 4782, 4764, 4764, 4777, 4781, 4764, 4764, + 4764, 4764, 4760, 4781, 4782, 4764, 4764, 4790, + 4781, 4764, 4764, 4764, 4764, 4760, 4781, 4782, + 4764, 4764, 4791, 4781, 4764, 4764, 4764, 4764, + 4760, 4781, 4782, 4764, 4764, 4779, 4781, 4764, + 4764, 4764, 4764, 4760, 4781, 4782, 4764, 4764, + 4777, 4781, 4764, 4764, 4764, 4764, 4760, 4764, + 4764, 4792, 4793, 4794, 4777, 4764, 4764, 4764, + 4764, 4760, 4781, 4782, 4764, 4764, 4795, 4781, + 4764, 4764, 4764, 4764, 4760, 4781, 4782, 4764, + 4764, 4796, 4781, 4764, 4764, 4764, 4764, 4760, + 4781, 4782, 4764, 4764, 4770, 4781, 4764, 4764, + 4764, 4764, 4760, 4781, 4782, 4764, 4764, 4797, + 4781, 4764, 4764, 4764, 4764, 4760, 4781, 4782, + 4764, 4764, 4779, 4781, 4764, 4764, 4764, 4764, + 4760, 4781, 4782, 4764, 4764, 4777, 4781, 4764, + 4764, 4764, 4764, 4760, 4781, 4782, 4764, 4764, + 4777, 4781, 4764, 4764, 4764, 4764, 4760, 4781, + 4782, 4764, 4764, 4798, 4799, 4781, 4764, 4764, + 4764, 4764, 4760, 4781, 4782, 4764, 4764, 4800, + 4781, 4764, 4764, 4764, 4764, 4760, 4781, 4782, + 4764, 4764, 4777, 4781, 4764, 4764, 4764, 4764, + 4760, 4781, 4782, 4764, 4764, 4800, 4781, 4764, + 4764, 4764, 4764, 4760, 4781, 4782, 4764, 4764, + 4801, 4802, 4781, 4764, 4764, 4764, 4764, 4760, + 4781, 4782, 4764, 4764, 4777, 4781, 4764, 4764, + 4764, 4764, 4760, 4781, 4782, 4764, 4764, 4777, + 4781, 4764, 4764, 4764, 4764, 4760, 4764, 4764, + 4803, 4794, 4804, 4764, 4764, 4764, 4764, 4760, + 4781, 4782, 4764, 4764, 4805, 4781, 4764, 4764, + 4764, 4764, 4760, 4781, 4782, 4764, 4764, 4806, + 4781, 4764, 4764, 4764, 4764, 4760, 4781, 4782, + 4764, 4764, 4800, 4781, 4764, 4764, 4764, 4764, + 4760, 4781, 4782, 4764, 4764, 4777, 4781, 4764, + 4764, 4764, 4764, 4760, 4781, 4782, 4764, 4764, + 4807, 4781, 4764, 4764, 4764, 4764, 4760, 4781, + 4782, 4764, 4764, 4777, 4781, 4764, 4764, 4764, + 4764, 4760, 4781, 4782, 4764, 4764, 4808, 4781, + 4764, 4764, 4764, 4764, 4760, 4781, 4782, 4764, + 4764, 4777, 4781, 4764, 4764, 4764, 4764, 4760, + 4781, 4782, 4764, 4764, 4809, 4781, 4764, 4764, + 4764, 4764, 4760, 4781, 4782, 4764, 4764, 4810, + 4781, 4764, 4764, 4764, 4764, 4760, 4781, 4782, + 4764, 4764, 4811, 4781, 4764, 4764, 4764, 4764, + 4760, 4781, 4782, 4764, 4764, 4812, 4781, 4764, + 4764, 4764, 4764, 4760, 4781, 4782, 4764, 4764, + 4813, 4781, 4764, 4764, 4764, 4764, 4760, 4781, + 4782, 4764, 4764, 4814, 4781, 4764, 4764, 4764, + 4764, 4760, 4781, 4782, 4764, 4764, 4800, 4781, + 4764, 4764, 4764, 4764, 4760, 4781, 4782, 4764, + 4764, 4815, 4781, 4764, 4764, 4764, 4764, 4760, + 4781, 4782, 4764, 4764, 4816, 4781, 4764, 4764, + 4764, 4764, 4760, 4781, 4782, 4764, 4764, 4817, + 4781, 4764, 4764, 4764, 4764, 4760, 4781, 4782, + 4764, 4764, 4779, 4781, 4764, 4764, 4764, 4764, + 4760, 4781, 4782, 4764, 4764, 4818, 4800, 4781, + 4764, 4764, 4764, 4764, 4760, 4781, 4782, 4764, + 4764, 4819, 4781, 4764, 4764, 4764, 4764, 4760, + 4781, 4782, 4764, 4764, 4769, 4781, 4764, 4764, + 4764, 4764, 4760, 4764, 4764, 4820, 4821, 4822, + 4823, 4824, 4825, 4764, 4764, 4764, 4764, 4760, + 4781, 4782, 4764, 4764, 4808, 4781, 4764, 4764, + 4764, 4764, 4760, 4781, 4782, 4764, 4764, 4826, + 4781, 4764, 4764, 4764, 4764, 4760, 4781, 4782, + 4764, 4764, 4827, 4781, 4764, 4764, 4764, 4764, + 4760, 4781, 4782, 4764, 4764, 4779, 4781, 4764, + 4764, 4764, 4764, 4760, 4781, 4782, 4764, 4764, + 4828, 4781, 4764, 4764, 4764, 4764, 4760, 4781, + 4782, 4764, 4764, 4801, 4781, 4764, 4764, 4764, + 4764, 4760, 4781, 4782, 4764, 4764, 4802, 4781, + 4764, 4764, 4764, 4764, 4760, 4781, 4782, 4764, + 4764, 4829, 4781, 4764, 4764, 4764, 4764, 4760, + 4781, 4782, 4764, 4764, 4830, 4831, 4781, 4764, + 4764, 4764, 4764, 4760, 4781, 4782, 4764, 4764, + 4800, 4781, 4764, 4764, 4764, 4764, 4760, 4781, + 4782, 4764, 4764, 4794, 4781, 4764, 4764, 4764, + 4764, 4760, 4781, 4782, 4764, 4764, 4777, 4777, + 4781, 4764, 4764, 4764, 4764, 4760, 4781, 4782, + 4764, 4764, 4786, 4781, 4764, 4764, 4764, 4764, + 4760, 4833, 4834, 4834, 4835, 4837, 4834, 4838, + 4839, 4840, 4841, 4842, 4834, 4836, 4834, 4836, + 4836, 4832, 4844, 4833, 4834, 4833, 4835, 4845, + 4833, 4846, 4833, 4833, 4843, 4844, 4847, 4843, + 4832, 4848, 4847, 4848, 4843, 4835, 4837, 4842, + 4832, 4849, 4835, 4832, 4832, 4850, 4847, 4850, + 4832, 4851, 4847, 4851, 4833, 4834, 4834, 4835, + 4837, 4834, 4842, 4834, 4834, 4832, 4853, 4854, + 4843, 4852, 4853, 4854, 4855, 4852, 4850, 4857, + 4856, 4854, 4857, 4856, 4852, 4835, 4847, 4858, + 4850, 4860, 4850, 4859, 4860, 4854, 4859, 4861, + 4835, 4862, 4847, 4851, 4863, 4860, 4855, 4861, + 4851, 4857, 4864, 4860, 4857, 4864, 4847, 4835, + 4865, 4866, 4848, 4854, 4848, 4856, 4860, 4848, + 4864, 4844, 4847, 4835, 4845, 4846, 4843, 4863, + 4860, 4843, 4861, 4851, 4854, 4859, 4833, 4834, + 4834, 4835, 4837, 4834, 4836, 4838, 4839, 4840, + 4841, 4842, 4834, 4836, 4834, 4836, 4836, 4836, + 4832, 4833, 4834, 4834, 4835, 4837, 4834, 4838, + 4839, 4867, 4841, 4842, 4834, 4836, 4834, 4836, + 4836, 4832, 4833, 4834, 4834, 4835, 4837, 4834, + 4838, 4839, 4840, 4868, 4841, 4842, 4834, 4834, + 4836, 4836, 4832, 4833, 4834, 4834, 4835, 4837, + 4834, 4838, 4839, 4840, 4868, 4841, 4842, 4834, + 4836, 4834, 4836, 4836, 4832, 4833, 4834, 4834, + 4835, 4837, 4834, 4838, 4839, 4840, 4841, 4869, + 4842, 4834, 4836, 4834, 4836, 4836, 4832, 4833, + 4834, 4834, 4835, 4837, 4834, 4838, 4839, 4840, + 4841, 4870, 4842, 4834, 4836, 4834, 4836, 4836, + 4832, 4833, 4834, 4834, 4835, 4837, 4834, 4838, + 4839, 4840, 4841, 4842, 4834, 4836, 4834, 4836, + 4836, 4836, 4832, 4833, 4834, 4834, 4835, 4837, + 4834, 4838, 4871, 4839, 4840, 4841, 4842, 4834, + 4836, 4834, 4836, 4836, 4832, 4833, 4834, 4834, + 4835, 4837, 4834, 4838, 4839, 4840, 4841, 4872, + 4842, 4834, 4836, 4834, 4836, 4836, 4832, 4833, + 4834, 4834, 4835, 4837, 4834, 4838, 4839, 4840, + 4841, 4873, 4842, 4834, 4836, 4834, 4836, 4836, + 4832, 4833, 4834, 4834, 4835, 4837, 4834, 4838, + 4839, 4874, 4840, 4841, 4842, 4834, 4836, 4834, + 4836, 4836, 4832, 4833, 4834, 4834, 4835, 4837, + 4834, 4838, 4839, 4870, 4840, 4841, 4842, 4834, + 4836, 4834, 4836, 4836, 4832, 4833, 4834, 4834, + 4835, 4837, 4834, 4838, 4834, 4839, 4840, 4841, + 4834, 4842, 4834, 4836, 4834, 4836, 4836, 4832, + 4833, 4834, 4834, 4835, 4837, 4834, 4838, 4839, + 4840, 4875, 4841, 4842, 4834, 4836, 4834, 4836, + 4836, 4832, 4833, 4834, 4834, 4835, 4837, 4834, + 4838, 4839, 4840, 4841, 4876, 4842, 4834, 4836, + 4834, 4836, 4836, 4832, 4833, 4834, 4834, 4835, + 4837, 4834, 4838, 4877, 4839, 4840, 4841, 4842, + 4834, 4836, 4834, 4836, 4836, 4832, 4833, 4834, + 4834, 4835, 4837, 4834, 4838, 4839, 4840, 4841, + 4878, 4842, 4834, 4836, 4834, 4836, 4836, 4832, + 4833, 4834, 4834, 4835, 4837, 4834, 4838, 4839, + 4840, 4841, 4879, 4842, 4834, 4836, 4834, 4836, + 4836, 4832, 4833, 4834, 4834, 4835, 4837, 4834, + 4838, 4839, 4880, 4840, 4841, 4842, 4834, 4836, + 4834, 4836, 4836, 4832, 4833, 4834, 4834, 4835, + 4837, 4834, 4838, 4839, 4881, 4840, 4841, 4842, + 4834, 4836, 4834, 4836, 4836, 4832, 4833, 4834, + 4834, 4835, 4837, 4834, 4838, 4834, 4839, 4840, + 4841, 4842, 4834, 4836, 4834, 4836, 4836, 4832, + 4833, 4834, 4834, 4835, 4837, 4834, 4838, 4839, + 4840, 4841, 4881, 4842, 4834, 4836, 4834, 4836, + 4836, 4832, 4883, 4883, 4884, 4882, 4885, 4882, + 4886, 4886, 4887, 4888, 4889, 4890, 4891, 4892, + 4893, 4894, 4895, 4896, 4897, 4898, 4899, 4900, + 4901, 4899, 4902, 4886, 4886, 4882, 4903, 4904, + 4886, 4886, 4903, 4886, 4886, 4886, 4886, 4882, + 4903, 4904, 4903, 4882, 4886, 4886, 4905, 4906, + 4907, 4886, 4886, 4886, 4886, 4882, 4903, 4904, + 4886, 4886, 4908, 4903, 4886, 4886, 4886, 4886, + 4882, 4903, 4904, 4886, 4886, 4899, 4903, 4886, + 4886, 4886, 4886, 4882, 4886, 4886, 4886, 4886, + 4886, 4886, 4882, 4903, 4904, 4886, 4886, 4909, + 4903, 4886, 4886, 4886, 4886, 4882, 4903, 4904, + 4886, 4886, 4910, 4903, 4886, 4886, 4886, 4886, + 4882, 4903, 4904, 4886, 4886, 4911, 4903, 4886, + 4886, 4886, 4886, 4882, 4903, 4904, 4886, 4886, + 4891, 4903, 4886, 4886, 4886, 4886, 4882, 4903, + 4904, 4886, 4886, 4899, 4903, 4886, 4886, 4886, + 4886, 4882, 4903, 4904, 4886, 4886, 4912, 4903, + 4886, 4886, 4886, 4886, 4882, 4903, 4904, 4886, + 4886, 4913, 4903, 4886, 4886, 4886, 4886, 4882, + 4903, 4904, 4886, 4886, 4901, 4903, 4886, 4886, + 4886, 4886, 4882, 4903, 4904, 4886, 4886, 4899, + 4903, 4886, 4886, 4886, 4886, 4882, 4886, 4886, + 4914, 4915, 4916, 4899, 4886, 4886, 4886, 4886, + 4882, 4903, 4904, 4886, 4886, 4917, 4903, 4886, + 4886, 4886, 4886, 4882, 4903, 4904, 4886, 4886, + 4918, 4903, 4886, 4886, 4886, 4886, 4882, 4903, + 4904, 4886, 4886, 4892, 4903, 4886, 4886, 4886, + 4886, 4882, 4903, 4904, 4886, 4886, 4919, 4903, + 4886, 4886, 4886, 4886, 4882, 4903, 4904, 4886, + 4886, 4901, 4903, 4886, 4886, 4886, 4886, 4882, + 4903, 4904, 4886, 4886, 4899, 4903, 4886, 4886, + 4886, 4886, 4882, 4903, 4904, 4886, 4886, 4899, + 4903, 4886, 4886, 4886, 4886, 4882, 4903, 4904, + 4886, 4886, 4920, 4921, 4903, 4886, 4886, 4886, + 4886, 4882, 4903, 4904, 4886, 4886, 4922, 4903, + 4886, 4886, 4886, 4886, 4882, 4903, 4904, 4886, + 4886, 4899, 4903, 4886, 4886, 4886, 4886, 4882, + 4903, 4904, 4886, 4886, 4922, 4903, 4886, 4886, + 4886, 4886, 4882, 4903, 4904, 4886, 4886, 4923, + 4924, 4903, 4886, 4886, 4886, 4886, 4882, 4903, + 4904, 4886, 4886, 4899, 4903, 4886, 4886, 4886, + 4886, 4882, 4903, 4904, 4886, 4886, 4899, 4903, + 4886, 4886, 4886, 4886, 4882, 4886, 4886, 4925, + 4916, 4926, 4886, 4886, 4886, 4886, 4882, 4903, + 4904, 4886, 4886, 4927, 4903, 4886, 4886, 4886, + 4886, 4882, 4903, 4904, 4886, 4886, 4928, 4903, + 4886, 4886, 4886, 4886, 4882, 4903, 4904, 4886, + 4886, 4922, 4903, 4886, 4886, 4886, 4886, 4882, + 4903, 4904, 4886, 4886, 4899, 4903, 4886, 4886, + 4886, 4886, 4882, 4903, 4904, 4886, 4886, 4929, + 4903, 4886, 4886, 4886, 4886, 4882, 4903, 4904, + 4886, 4886, 4899, 4903, 4886, 4886, 4886, 4886, + 4882, 4903, 4904, 4886, 4886, 4930, 4903, 4886, + 4886, 4886, 4886, 4882, 4903, 4904, 4886, 4886, + 4899, 4903, 4886, 4886, 4886, 4886, 4882, 4903, + 4904, 4886, 4886, 4931, 4903, 4886, 4886, 4886, + 4886, 4882, 4903, 4904, 4886, 4886, 4932, 4903, + 4886, 4886, 4886, 4886, 4882, 4903, 4904, 4886, + 4886, 4933, 4903, 4886, 4886, 4886, 4886, 4882, + 4903, 4904, 4886, 4886, 4934, 4903, 4886, 4886, + 4886, 4886, 4882, 4903, 4904, 4886, 4886, 4935, + 4903, 4886, 4886, 4886, 4886, 4882, 4903, 4904, + 4886, 4886, 4936, 4903, 4886, 4886, 4886, 4886, + 4882, 4903, 4904, 4886, 4886, 4922, 4903, 4886, + 4886, 4886, 4886, 4882, 4903, 4904, 4886, 4886, + 4937, 4903, 4886, 4886, 4886, 4886, 4882, 4903, + 4904, 4886, 4886, 4938, 4903, 4886, 4886, 4886, + 4886, 4882, 4903, 4904, 4886, 4886, 4939, 4903, + 4886, 4886, 4886, 4886, 4882, 4903, 4904, 4886, + 4886, 4901, 4903, 4886, 4886, 4886, 4886, 4882, + 4903, 4904, 4886, 4886, 4940, 4922, 4903, 4886, + 4886, 4886, 4886, 4882, 4903, 4904, 4886, 4886, + 4941, 4903, 4886, 4886, 4886, 4886, 4882, 4903, + 4904, 4886, 4886, 4891, 4903, 4886, 4886, 4886, + 4886, 4882, 4886, 4886, 4942, 4943, 4944, 4945, + 4946, 4947, 4886, 4886, 4886, 4886, 4882, 4903, + 4904, 4886, 4886, 4930, 4903, 4886, 4886, 4886, + 4886, 4882, 4903, 4904, 4886, 4886, 4948, 4903, + 4886, 4886, 4886, 4886, 4882, 4903, 4904, 4886, + 4886, 4949, 4903, 4886, 4886, 4886, 4886, 4882, + 4903, 4904, 4886, 4886, 4901, 4903, 4886, 4886, + 4886, 4886, 4882, 4903, 4904, 4886, 4886, 4950, + 4903, 4886, 4886, 4886, 4886, 4882, 4903, 4904, + 4886, 4886, 4923, 4903, 4886, 4886, 4886, 4886, + 4882, 4903, 4904, 4886, 4886, 4924, 4903, 4886, + 4886, 4886, 4886, 4882, 4903, 4904, 4886, 4886, + 4951, 4903, 4886, 4886, 4886, 4886, 4882, 4903, + 4904, 4886, 4886, 4952, 4953, 4903, 4886, 4886, + 4886, 4886, 4882, 4903, 4904, 4886, 4886, 4922, + 4903, 4886, 4886, 4886, 4886, 4882, 4903, 4904, + 4886, 4886, 4916, 4903, 4886, 4886, 4886, 4886, + 4882, 4903, 4904, 4886, 4886, 4899, 4899, 4903, + 4886, 4886, 4886, 4886, 4882, 4903, 4904, 4886, + 4886, 4908, 4903, 4886, 4886, 4886, 4886, 4882, + 4955, 4956, 4956, 4957, 4959, 4956, 4960, 4961, + 4962, 4963, 4964, 4956, 4958, 4956, 4958, 4958, + 4954, 4966, 4955, 4956, 4955, 4957, 4967, 4955, + 4968, 4955, 4955, 4965, 4966, 4969, 4965, 4954, + 4970, 4969, 4970, 4965, 4957, 4959, 4964, 4954, + 4971, 4957, 4954, 4954, 4972, 4969, 4972, 4954, + 4973, 4969, 4973, 4955, 4956, 4956, 4957, 4959, + 4956, 4964, 4956, 4956, 4954, 4975, 4976, 4965, + 4974, 4975, 4976, 4977, 4974, 4972, 4979, 4978, + 4976, 4979, 4978, 4974, 4957, 4969, 4980, 4972, + 4982, 4972, 4981, 4982, 4976, 4981, 4983, 4957, + 4984, 4969, 4973, 4985, 4982, 4977, 4983, 4973, + 4979, 4986, 4982, 4979, 4986, 4969, 4957, 4987, + 4988, 4970, 4976, 4970, 4978, 4982, 4970, 4986, + 4966, 4969, 4957, 4967, 4968, 4965, 4985, 4982, + 4965, 4983, 4973, 4976, 4981, 4955, 4956, 4956, + 4957, 4959, 4956, 4958, 4960, 4961, 4962, 4963, + 4964, 4956, 4958, 4956, 4958, 4958, 4958, 4954, + 4955, 4956, 4956, 4957, 4959, 4956, 4960, 4961, + 4989, 4963, 4964, 4956, 4958, 4956, 4958, 4958, + 4954, 4955, 4956, 4956, 4957, 4959, 4956, 4960, + 4961, 4962, 4990, 4963, 4964, 4956, 4956, 4958, + 4958, 4954, 4955, 4956, 4956, 4957, 4959, 4956, + 4960, 4961, 4962, 4990, 4963, 4964, 4956, 4958, + 4956, 4958, 4958, 4954, 4955, 4956, 4956, 4957, + 4959, 4956, 4960, 4961, 4962, 4963, 4991, 4964, + 4956, 4958, 4956, 4958, 4958, 4954, 4955, 4956, + 4956, 4957, 4959, 4956, 4960, 4961, 4962, 4963, + 4992, 4964, 4956, 4958, 4956, 4958, 4958, 4954, + 4955, 4956, 4956, 4957, 4959, 4956, 4960, 4961, + 4962, 4963, 4964, 4956, 4958, 4956, 4958, 4958, + 4958, 4954, 4955, 4956, 4956, 4957, 4959, 4956, + 4960, 4993, 4961, 4962, 4963, 4964, 4956, 4958, + 4956, 4958, 4958, 4954, 4955, 4956, 4956, 4957, + 4959, 4956, 4960, 4961, 4962, 4963, 4994, 4964, + 4956, 4958, 4956, 4958, 4958, 4954, 4955, 4956, + 4956, 4957, 4959, 4956, 4960, 4961, 4962, 4963, + 4995, 4964, 4956, 4958, 4956, 4958, 4958, 4954, + 4955, 4956, 4956, 4957, 4959, 4956, 4960, 4961, + 4996, 4962, 4963, 4964, 4956, 4958, 4956, 4958, + 4958, 4954, 4955, 4956, 4956, 4957, 4959, 4956, + 4960, 4961, 4992, 4962, 4963, 4964, 4956, 4958, + 4956, 4958, 4958, 4954, 4955, 4956, 4956, 4957, + 4959, 4956, 4960, 4956, 4961, 4962, 4963, 4956, + 4964, 4956, 4958, 4956, 4958, 4958, 4954, 4955, + 4956, 4956, 4957, 4959, 4956, 4960, 4961, 4962, + 4997, 4963, 4964, 4956, 4958, 4956, 4958, 4958, + 4954, 4955, 4956, 4956, 4957, 4959, 4956, 4960, + 4961, 4962, 4963, 4998, 4964, 4956, 4958, 4956, + 4958, 4958, 4954, 4955, 4956, 4956, 4957, 4959, + 4956, 4960, 4999, 4961, 4962, 4963, 4964, 4956, + 4958, 4956, 4958, 4958, 4954, 4955, 4956, 4956, + 4957, 4959, 4956, 4960, 4961, 4962, 4963, 5000, + 4964, 4956, 4958, 4956, 4958, 4958, 4954, 4955, + 4956, 4956, 4957, 4959, 4956, 4960, 4961, 4962, + 4963, 5001, 4964, 4956, 4958, 4956, 4958, 4958, + 4954, 4955, 4956, 4956, 4957, 4959, 4956, 4960, + 4961, 5002, 4962, 4963, 4964, 4956, 4958, 4956, + 4958, 4958, 4954, 4955, 4956, 4956, 4957, 4959, + 4956, 4960, 4961, 5003, 4962, 4963, 4964, 4956, + 4958, 4956, 4958, 4958, 4954, 4955, 4956, 4956, + 4957, 4959, 4956, 4960, 4956, 4961, 4962, 4963, + 4964, 4956, 4958, 4956, 4958, 4958, 4954, 4955, + 4956, 4956, 4957, 4959, 4956, 4960, 4961, 4962, + 4963, 5003, 4964, 4956, 4958, 4956, 4958, 4958, + 4954, 5005, 5005, 5006, 5004, 5007, 5004, 5008, + 5008, 5009, 5010, 5011, 5012, 5013, 5014, 5015, + 5016, 5017, 5018, 5019, 5020, 5021, 5022, 5023, + 5021, 5024, 5008, 5008, 5004, 5025, 5026, 5008, + 5008, 5025, 5008, 5008, 5008, 5008, 5004, 5025, + 5026, 5025, 5004, 5008, 5008, 5027, 5028, 5029, + 5008, 5008, 5008, 5008, 5004, 5025, 5026, 5008, + 5008, 5030, 5025, 5008, 5008, 5008, 5008, 5004, + 5025, 5026, 5008, 5008, 5021, 5025, 5008, 5008, + 5008, 5008, 5004, 5008, 5008, 5008, 5008, 5008, + 5008, 5004, 5025, 5026, 5008, 5008, 5031, 5025, + 5008, 5008, 5008, 5008, 5004, 5025, 5026, 5008, + 5008, 5032, 5025, 5008, 5008, 5008, 5008, 5004, + 5025, 5026, 5008, 5008, 5033, 5025, 5008, 5008, + 5008, 5008, 5004, 5025, 5026, 5008, 5008, 5013, + 5025, 5008, 5008, 5008, 5008, 5004, 5025, 5026, + 5008, 5008, 5021, 5025, 5008, 5008, 5008, 5008, + 5004, 5025, 5026, 5008, 5008, 5034, 5025, 5008, + 5008, 5008, 5008, 5004, 5025, 5026, 5008, 5008, + 5035, 5025, 5008, 5008, 5008, 5008, 5004, 5025, + 5026, 5008, 5008, 5023, 5025, 5008, 5008, 5008, + 5008, 5004, 5025, 5026, 5008, 5008, 5021, 5025, + 5008, 5008, 5008, 5008, 5004, 5008, 5008, 5036, + 5037, 5038, 5021, 5008, 5008, 5008, 5008, 5004, + 5025, 5026, 5008, 5008, 5039, 5025, 5008, 5008, + 5008, 5008, 5004, 5025, 5026, 5008, 5008, 5040, + 5025, 5008, 5008, 5008, 5008, 5004, 5025, 5026, + 5008, 5008, 5014, 5025, 5008, 5008, 5008, 5008, + 5004, 5025, 5026, 5008, 5008, 5041, 5025, 5008, + 5008, 5008, 5008, 5004, 5025, 5026, 5008, 5008, + 5023, 5025, 5008, 5008, 5008, 5008, 5004, 5025, + 5026, 5008, 5008, 5021, 5025, 5008, 5008, 5008, + 5008, 5004, 5025, 5026, 5008, 5008, 5021, 5025, + 5008, 5008, 5008, 5008, 5004, 5025, 5026, 5008, + 5008, 5042, 5043, 5025, 5008, 5008, 5008, 5008, + 5004, 5025, 5026, 5008, 5008, 5044, 5025, 5008, + 5008, 5008, 5008, 5004, 5025, 5026, 5008, 5008, + 5021, 5025, 5008, 5008, 5008, 5008, 5004, 5025, + 5026, 5008, 5008, 5044, 5025, 5008, 5008, 5008, + 5008, 5004, 5025, 5026, 5008, 5008, 5045, 5046, + 5025, 5008, 5008, 5008, 5008, 5004, 5025, 5026, + 5008, 5008, 5021, 5025, 5008, 5008, 5008, 5008, + 5004, 5025, 5026, 5008, 5008, 5021, 5025, 5008, + 5008, 5008, 5008, 5004, 5008, 5008, 5047, 5038, + 5048, 5008, 5008, 5008, 5008, 5004, 5025, 5026, + 5008, 5008, 5049, 5025, 5008, 5008, 5008, 5008, + 5004, 5025, 5026, 5008, 5008, 5050, 5025, 5008, + 5008, 5008, 5008, 5004, 5025, 5026, 5008, 5008, + 5044, 5025, 5008, 5008, 5008, 5008, 5004, 5025, + 5026, 5008, 5008, 5021, 5025, 5008, 5008, 5008, + 5008, 5004, 5025, 5026, 5008, 5008, 5051, 5025, + 5008, 5008, 5008, 5008, 5004, 5025, 5026, 5008, + 5008, 5021, 5025, 5008, 5008, 5008, 5008, 5004, + 5025, 5026, 5008, 5008, 5052, 5025, 5008, 5008, + 5008, 5008, 5004, 5025, 5026, 5008, 5008, 5021, + 5025, 5008, 5008, 5008, 5008, 5004, 5025, 5026, + 5008, 5008, 5053, 5025, 5008, 5008, 5008, 5008, + 5004, 5025, 5026, 5008, 5008, 5054, 5025, 5008, + 5008, 5008, 5008, 5004, 5025, 5026, 5008, 5008, + 5055, 5025, 5008, 5008, 5008, 5008, 5004, 5025, + 5026, 5008, 5008, 5056, 5025, 5008, 5008, 5008, + 5008, 5004, 5025, 5026, 5008, 5008, 5057, 5025, + 5008, 5008, 5008, 5008, 5004, 5025, 5026, 5008, + 5008, 5058, 5025, 5008, 5008, 5008, 5008, 5004, + 5025, 5026, 5008, 5008, 5044, 5025, 5008, 5008, + 5008, 5008, 5004, 5025, 5026, 5008, 5008, 5059, + 5025, 5008, 5008, 5008, 5008, 5004, 5025, 5026, + 5008, 5008, 5060, 5025, 5008, 5008, 5008, 5008, + 5004, 5025, 5026, 5008, 5008, 5061, 5025, 5008, + 5008, 5008, 5008, 5004, 5025, 5026, 5008, 5008, + 5023, 5025, 5008, 5008, 5008, 5008, 5004, 5025, + 5026, 5008, 5008, 5062, 5044, 5025, 5008, 5008, + 5008, 5008, 5004, 5025, 5026, 5008, 5008, 5063, + 5025, 5008, 5008, 5008, 5008, 5004, 5025, 5026, + 5008, 5008, 5013, 5025, 5008, 5008, 5008, 5008, + 5004, 5008, 5008, 5064, 5065, 5066, 5067, 5068, + 5069, 5008, 5008, 5008, 5008, 5004, 5025, 5026, + 5008, 5008, 5052, 5025, 5008, 5008, 5008, 5008, + 5004, 5025, 5026, 5008, 5008, 5070, 5025, 5008, + 5008, 5008, 5008, 5004, 5025, 5026, 5008, 5008, + 5071, 5025, 5008, 5008, 5008, 5008, 5004, 5025, + 5026, 5008, 5008, 5023, 5025, 5008, 5008, 5008, + 5008, 5004, 5025, 5026, 5008, 5008, 5072, 5025, + 5008, 5008, 5008, 5008, 5004, 5025, 5026, 5008, + 5008, 5045, 5025, 5008, 5008, 5008, 5008, 5004, + 5025, 5026, 5008, 5008, 5046, 5025, 5008, 5008, + 5008, 5008, 5004, 5025, 5026, 5008, 5008, 5073, + 5025, 5008, 5008, 5008, 5008, 5004, 5025, 5026, + 5008, 5008, 5074, 5075, 5025, 5008, 5008, 5008, + 5008, 5004, 5025, 5026, 5008, 5008, 5044, 5025, + 5008, 5008, 5008, 5008, 5004, 5025, 5026, 5008, + 5008, 5038, 5025, 5008, 5008, 5008, 5008, 5004, + 5025, 5026, 5008, 5008, 5021, 5021, 5025, 5008, + 5008, 5008, 5008, 5004, 5025, 5026, 5008, 5008, + 5030, 5025, 5008, 5008, 5008, 5008, 5004, 5077, + 5078, 5078, 5079, 5081, 5078, 5082, 5083, 5084, + 5085, 5086, 5078, 5080, 5078, 5080, 5080, 5076, + 5088, 5077, 5078, 5077, 5079, 5089, 5077, 5090, + 5077, 5077, 5087, 5088, 5091, 5087, 5076, 5092, + 5091, 5092, 5087, 5079, 5081, 5086, 5076, 5093, + 5079, 5076, 5076, 5094, 5091, 5094, 5076, 5095, + 5091, 5095, 5077, 5078, 5078, 5079, 5081, 5078, + 5086, 5078, 5078, 5076, 5097, 5098, 5087, 5096, + 5097, 5098, 5099, 5096, 5094, 5101, 5100, 5098, + 5101, 5100, 5096, 5079, 5091, 5102, 5094, 5104, + 5094, 5103, 5104, 5098, 5103, 5105, 5079, 5106, + 5091, 5095, 5107, 5104, 5099, 5105, 5095, 5101, + 5108, 5104, 5101, 5108, 5091, 5079, 5109, 5110, + 5092, 5098, 5092, 5100, 5104, 5092, 5108, 5088, + 5091, 5079, 5089, 5090, 5087, 5107, 5104, 5087, + 5105, 5095, 5098, 5103, 5077, 5078, 5078, 5079, + 5081, 5078, 5080, 5082, 5083, 5084, 5085, 5086, + 5078, 5080, 5078, 5080, 5080, 5080, 5076, 5077, + 5078, 5078, 5079, 5081, 5078, 5082, 5083, 5111, + 5085, 5086, 5078, 5080, 5078, 5080, 5080, 5076, + 5077, 5078, 5078, 5079, 5081, 5078, 5082, 5083, + 5084, 5112, 5085, 5086, 5078, 5078, 5080, 5080, + 5076, 5077, 5078, 5078, 5079, 5081, 5078, 5082, + 5083, 5084, 5112, 5085, 5086, 5078, 5080, 5078, + 5080, 5080, 5076, 5077, 5078, 5078, 5079, 5081, + 5078, 5082, 5083, 5084, 5085, 5113, 5086, 5078, + 5080, 5078, 5080, 5080, 5076, 5077, 5078, 5078, + 5079, 5081, 5078, 5082, 5083, 5084, 5085, 5114, + 5086, 5078, 5080, 5078, 5080, 5080, 5076, 5077, + 5078, 5078, 5079, 5081, 5078, 5082, 5083, 5084, + 5085, 5086, 5078, 5080, 5078, 5080, 5080, 5080, + 5076, 5077, 5078, 5078, 5079, 5081, 5078, 5082, + 5115, 5083, 5084, 5085, 5086, 5078, 5080, 5078, + 5080, 5080, 5076, 5077, 5078, 5078, 5079, 5081, + 5078, 5082, 5083, 5084, 5085, 5116, 5086, 5078, + 5080, 5078, 5080, 5080, 5076, 5077, 5078, 5078, + 5079, 5081, 5078, 5082, 5083, 5084, 5085, 5117, + 5086, 5078, 5080, 5078, 5080, 5080, 5076, 5077, + 5078, 5078, 5079, 5081, 5078, 5082, 5083, 5118, + 5084, 5085, 5086, 5078, 5080, 5078, 5080, 5080, + 5076, 5077, 5078, 5078, 5079, 5081, 5078, 5082, + 5083, 5114, 5084, 5085, 5086, 5078, 5080, 5078, + 5080, 5080, 5076, 5077, 5078, 5078, 5079, 5081, + 5078, 5082, 5078, 5083, 5084, 5085, 5078, 5086, + 5078, 5080, 5078, 5080, 5080, 5076, 5077, 5078, + 5078, 5079, 5081, 5078, 5082, 5083, 5084, 5119, + 5085, 5086, 5078, 5080, 5078, 5080, 5080, 5076, + 5077, 5078, 5078, 5079, 5081, 5078, 5082, 5083, + 5084, 5085, 5120, 5086, 5078, 5080, 5078, 5080, + 5080, 5076, 5077, 5078, 5078, 5079, 5081, 5078, + 5082, 5121, 5083, 5084, 5085, 5086, 5078, 5080, + 5078, 5080, 5080, 5076, 5077, 5078, 5078, 5079, + 5081, 5078, 5082, 5083, 5084, 5085, 5122, 5086, + 5078, 5080, 5078, 5080, 5080, 5076, 5077, 5078, + 5078, 5079, 5081, 5078, 5082, 5083, 5084, 5085, + 5123, 5086, 5078, 5080, 5078, 5080, 5080, 5076, + 5077, 5078, 5078, 5079, 5081, 5078, 5082, 5083, + 5124, 5084, 5085, 5086, 5078, 5080, 5078, 5080, + 5080, 5076, 5077, 5078, 5078, 5079, 5081, 5078, + 5082, 5083, 5125, 5084, 5085, 5086, 5078, 5080, + 5078, 5080, 5080, 5076, 5077, 5078, 5078, 5079, + 5081, 5078, 5082, 5078, 5083, 5084, 5085, 5086, + 5078, 5080, 5078, 5080, 5080, 5076, 5077, 5078, + 5078, 5079, 5081, 5078, 5082, 5083, 5084, 5085, + 5125, 5086, 5078, 5080, 5078, 5080, 5080, 5076, + 5126, 5127, 5128, 5129, 5130, 5131, 5133, 5134, + 5135, 5136, 5137, 5138, 5139, 5140, 5132, 5004, + 5142, 5143, 5144, 5145, 5146, 5147, 5148, 5149, + 5150, 5151, 5152, 5153, 5141, 5155, 5156, 5154, + 5004, 5157, 5159, 5158, 5160, 5161, 5162, 5163, + 5004, 5143, 5164, 5141, 5004, 5165, 5167, 5166, + 5004, 5168, 5170, 5169, 5142, 5155, 5144, 5171, + 5146, 5147, 5148, 5149, 5150, 5151, 5152, 5153, + 5141, 5172, 5173, 5174, 5175, 5176, 5177, 5178, + 5179, 5180, 5181, 5182, 5004, 5183, 5184, 5185, + 5186, 5187, 5188, 5189, 5190, 5191, 5192, 5193, + 5004, 5194, 5195, 5196, 5197, 5198, 5199, 5200, + 5201, 5202, 5203, 5204, 5004, 5205, 5206, 5207, + 5208, 5209, 5210, 5211, 5212, 5213, 5214, 5215, + 5004, 5216, 5217, 5218, 5219, 5220, 5221, 5222, + 5223, 5224, 5225, 5226, 5004, 5227, 5228, 5229, + 5230, 5231, 5232, 5233, 5234, 5235, 5236, 5237, + 5004, 5238, 5239, 5240, 5241, 5242, 5243, 5244, + 5245, 5246, 5247, 5248, 5004, 5249, 5250, 5251, + 5252, 5253, 5254, 5255, 5256, 5257, 5258, 5259, + 5004, 5183, 5155, 5260, 5261, 5262, 5263, 5264, + 5265, 5266, 5267, 5268, 5269, 5154, 5194, 5155, + 5270, 5271, 5272, 5273, 5274, 5275, 5276, 5277, + 5278, 5279, 5154, 5205, 5155, 5280, 5281, 5282, + 5283, 5284, 5285, 5286, 5287, 5288, 5289, 5154, + 5216, 5155, 5290, 5291, 5292, 5293, 5294, 5295, + 5296, 5297, 5298, 5299, 5154, 5301, 5302, 5154, + 5300, 5304, 5305, 5306, 5303, 5166, 5308, 5307, + 5310, 5311, 5309, 5160, 5312, 5313, 5167, 5314, + 5166, 5315, 5316, 5317, 5300, 5160, 5155, 5318, + 5156, 5319, 5320, 5154, 5155, 5156, 5141, 5322, + 5323, 5154, 5321, 5325, 5326, 5327, 5324, 5169, + 5329, 5328, 5331, 5332, 5330, 5160, 5333, 5334, + 5335, 5170, 5169, 5336, 5337, 5338, 5321, 5169, + 5340, 5339, 5342, 5343, 5341, 5170, 5168, 5160, + 5344, 5159, 5345, 5346, 5158, 5348, 5159, 5347, + 5350, 5351, 5349, 5159, 5157, 5352, 5158, 5307, + 5353, 5158, 5328, 5167, 5165, 5354, 5166, 5339, + 5227, 5155, 5355, 5356, 5357, 5358, 5359, 5360, + 5361, 5362, 5363, 5364, 5154, 5238, 5155, 5365, + 5366, 5367, 5368, 5369, 5370, 5371, 5372, 5373, + 5374, 5154, 5249, 5155, 5375, 5376, 5377, 5378, + 5379, 5380, 5381, 5382, 5383, 5384, 5154, 5385, + 5386, 5387, 5388, 5389, 5390, 5392, 5393, 5394, + 5395, 5396, 5397, 5398, 5399, 5391, 5004, 5400, + 5401, 5402, 5403, 5405, 5406, 5407, 5408, 5409, + 5410, 5411, 5404, 5004, 5412, 5413, 5414, 5415, + 5416, 5417, 5418, 5419, 5420, 5421, 5422, 5004, + 5424, 5425, 5426, 5427, 5428, 5429, 5431, 5432, + 5433, 5434, 5435, 5436, 5437, 5438, 5430, 5423, + 5440, 5441, 5442, 5443, 5444, 5445, 5446, 5447, + 5448, 5449, 5450, 5451, 5439, 5453, 5454, 5452, + 5423, 5455, 5457, 5456, 5458, 5459, 5460, 5461, + 5423, 5441, 5462, 5439, 5423, 5463, 5465, 5464, + 5423, 5466, 5468, 5467, 5440, 5453, 5442, 5469, + 5444, 5445, 5446, 5447, 5448, 5449, 5450, 5451, + 5439, 5470, 5471, 5472, 5473, 5474, 5475, 5476, + 5477, 5478, 5479, 5480, 5423, 5481, 5482, 5483, + 5484, 5485, 5486, 5487, 5488, 5489, 5490, 5491, + 5423, 5492, 5493, 5494, 5495, 5496, 5497, 5498, + 5499, 5500, 5501, 5502, 5423, 5503, 5504, 5505, + 5506, 5507, 5508, 5509, 5510, 5511, 5512, 5513, + 5423, 5514, 5515, 5516, 5517, 5518, 5519, 5520, + 5521, 5522, 5523, 5524, 5423, 5525, 5526, 5527, + 5528, 5529, 5530, 5531, 5532, 5533, 5534, 5535, + 5423, 5536, 5537, 5538, 5539, 5540, 5541, 5542, + 5543, 5544, 5545, 5546, 5423, 5547, 5548, 5549, + 5550, 5551, 5552, 5553, 5554, 5555, 5556, 5557, + 5423, 5481, 5453, 5558, 5559, 5560, 5561, 5562, + 5563, 5564, 5565, 5566, 5567, 5452, 5492, 5453, + 5568, 5569, 5570, 5571, 5572, 5573, 5574, 5575, + 5576, 5577, 5452, 5503, 5453, 5578, 5579, 5580, + 5581, 5582, 5583, 5584, 5585, 5586, 5587, 5452, + 5514, 5453, 5588, 5589, 5590, 5591, 5592, 5593, + 5594, 5595, 5596, 5597, 5452, 5599, 5600, 5452, + 5598, 5602, 5603, 5604, 5601, 5464, 5606, 5605, + 5608, 5609, 5607, 5458, 5610, 5611, 5465, 5612, + 5464, 5613, 5614, 5615, 5598, 5458, 5453, 5616, + 5454, 5617, 5618, 5452, 5453, 5454, 5439, 5620, + 5621, 5452, 5619, 5623, 5624, 5625, 5622, 5467, + 5627, 5626, 5629, 5630, 5628, 5458, 5631, 5632, + 5633, 5468, 5467, 5634, 5635, 5636, 5619, 5467, + 5638, 5637, 5640, 5641, 5639, 5468, 5466, 5458, + 5642, 5457, 5643, 5644, 5456, 5646, 5457, 5645, + 5648, 5649, 5647, 5457, 5455, 5650, 5456, 5605, + 5651, 5456, 5626, 5465, 5463, 5652, 5464, 5637, + 5525, 5453, 5653, 5654, 5655, 5656, 5657, 5658, + 5659, 5660, 5661, 5662, 5452, 5536, 5453, 5663, + 5664, 5665, 5666, 5667, 5668, 5669, 5670, 5671, + 5672, 5452, 5547, 5453, 5673, 5674, 5675, 5676, + 5677, 5678, 5679, 5680, 5681, 5682, 5452, 5683, + 5684, 5685, 5686, 5687, 5688, 5690, 5691, 5692, + 5693, 5694, 5695, 5696, 5697, 5689, 5423, 5698, + 5699, 5700, 5701, 5703, 5704, 5705, 5706, 5707, + 5708, 5709, 5702, 5423, 5710, 5711, 5712, 5713, + 5714, 5715, 5716, 5717, 5718, 5719, 5720, 5423, + 5722, 5721, 5724, 5726, 5725, 5727, 5726, 5725, + 5728, 5729, 5723, 5731, 5732, 5733, 5734, 5735, + 5736, 5737, 5738, 5739, 5740, 5741, 5742, 5743, + 5744, 5746, 5747, 5748, 5749, 5750, 5751, 5752, + 5753, 5754, 5755, 5756, 5745, 5745, 5730, 1, + 1, 2, 5757, 40, 5758, 113, 90, 98, + 133, 90, 99, 5760, 133, 5760, 90, 99, + 5762, 133, 5762, 90, 99, 141, 125, 106, + 116, 5763, 141, 5763, 125, 106, 116, 5764, + 141, 5764, 125, 106, 116, 5765, 113, 5765, + 90, 98, 5766, 113, 5766, 90, 98, 5767, + 5768, 5767, 5759, 5769, 5770, 5769, 5761, 1, + 5772, 2, 5771, 5773, 5774, 5757, 5775, 5776, + 197, 198, 199, 200, 201, 202, 204, 205, + 206, 207, 208, 209, 210, 211, 203, 5757, + 231, 5777, 505, 1596, 1618, 1598, 1599, 1600, + 1601, 1602, 1603, 1604, 1605, 1606, 504, 5778, + 5780, 5781, 5782, 5783, 5784, 5785, 5786, 5787, + 5788, 5789, 5790, 5791, 5792, 5793, 5794, 5779, + 5778, 5780, 5796, 5797, 5798, 5799, 5800, 5801, + 5802, 5803, 5804, 5805, 5806, 5807, 5808, 5809, + 5795, 1607, 1608, 1609, 1610, 1611, 1612, 1613, + 1614, 1615, 1616, 1617, 5757, 456, 457, 458, + 459, 460, 461, 463, 464, 465, 466, 467, + 468, 469, 470, 462, 5757, 1822, 1751, 1752, + 1753, 1622, 1754, 1755, 1756, 1757, 1758, 1759, + 1760, 5757, 5810, 1823, 1824, 1825, 5810, 1821, + 501, 507, 5757, 1761, 1762, 1763, 1633, 3, + 4, 1764, 1765, 1766, 1767, 1768, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, + 5811, 15, 5812, 17, 5813, 19, 17, 20, + 1769, 1770, 4, 4, 5757, 1841, 1842, 1841, + 5814, 1855, 1856, 1855, 1842, 1841, 5814, 1856, + 1841, 1842, 1841, 5758, 1874, 90, 1875, 1874, + 98, 90, 98, 1883, 1884, 1883, 90, 1875, + 1874, 98, 1884, 1874, 90, 1875, 1874, 98, + 1904, 90, 1905, 1904, 99, 90, 99, 1913, + 1914, 1913, 90, 1905, 1904, 99, 1914, 1904, + 90, 1905, 1904, 99, 5816, 1914, 5816, 90, + 1905, 1904, 99, 5817, 1914, 5817, 90, 1905, + 1904, 99, 1920, 125, 106, 1921, 1920, 116, + 125, 106, 116, 1929, 1930, 1929, 125, 106, + 1921, 1920, 116, 1930, 1920, 125, 106, 1921, + 1920, 116, 5818, 1930, 5818, 125, 106, 1921, + 1920, 116, 5819, 1930, 5819, 125, 106, 1921, + 1920, 116, 5820, 1884, 5820, 90, 1875, 1874, + 98, 5821, 1884, 5821, 90, 1875, 1874, 98, + 5822, 5823, 5822, 5825, 5824, 5815, 5826, 5827, + 5826, 5829, 5828, 5761, 5830, 5831, 5832, 5831, + 5830, 5834, 5833, 5835, 5836, 5835, 5834, 5833, + 5834, 5837, 5838, 5839, 5838, 5834, 5837, 5841, + 5839, 5841, 5834, 5837, 5843, 5844, 5842, 5845, + 5846, 5845, 5843, 5844, 5842, 5847, 5846, 5847, + 5843, 5844, 5842, 5848, 5836, 5848, 5834, 5833, + 5849, 5850, 5849, 5840, 1771, 1772, 1773, 1644, + 1774, 1775, 1776, 1777, 1778, 1779, 1780, 5757, + 1781, 1782, 1783, 1655, 1784, 1785, 1786, 1787, + 1788, 1789, 1790, 5757, 2249, 2250, 2251, 2252, + 2254, 2255, 2256, 2257, 2258, 2259, 2260, 2261, + 2262, 2263, 2264, 2253, 2253, 2253, 5757, 2026, + 5851, 2249, 2250, 2251, 2252, 2254, 2255, 2256, + 2257, 2258, 2259, 5852, 2260, 2261, 2262, 2263, + 2264, 2253, 2253, 2253, 5757, 2307, 2309, 5853, + 1590, 1590, 5854, 5855, 1590, 2981, 5856, 5856, + 2321, 2333, 5857, 2321, 5858, 2333, 2321, 2321, + 5856, 2321, 2333, 2321, 2321, 2333, 2333, 2339, + 5856, 5856, 2321, 5859, 2321, 2321, 5860, 2321, + 2321, 5856, 2321, 2333, 5856, 5856, 2321, 5861, + 2333, 2321, 2321, 2333, 5862, 2321, 2321, 5856, + 2321, 2323, 5856, 5856, 2321, 2323, 5863, 5864, + 2328, 5865, 2323, 2321, 2321, 5856, 2321, 2323, + 2321, 2321, 2323, 2323, 2322, 5856, 5856, 2321, + 2333, 5857, 5866, 2321, 5858, 2333, 2321, 2321, + 5856, 2321, 2333, 2321, 2321, 2333, 2333, 2339, + 5856, 5856, 2321, 2333, 2334, 5867, 2335, 2333, + 2321, 2321, 5856, 2321, 2333, 2321, 2321, 2333, + 2333, 2332, 5868, 5868, 2358, 2378, 5869, 2339, + 2358, 5870, 2378, 2358, 2358, 5868, 2358, 2378, + 2358, 2358, 2378, 2378, 2377, 5871, 5871, 2360, + 2375, 5872, 5873, 2360, 5874, 2375, 2360, 2360, + 5871, 2360, 2375, 2360, 2360, 2375, 2375, 3019, + 5871, 5871, 2360, 5875, 5876, 2360, 2360, 5877, + 2360, 2360, 5871, 2360, 2375, 5856, 5878, 2321, + 5859, 2321, 2321, 5860, 5879, 2321, 2321, 5856, + 2321, 2333, 5856, 5856, 5881, 3022, 5882, 5883, + 5884, 5885, 5886, 5887, 3028, 5888, 3030, 5889, + 5890, 5891, 5892, 5893, 5894, 5895, 3022, 3022, + 5881, 3022, 5880, 5856, 5897, 5896, 2392, 5898, + 2392, 2392, 5899, 5900, 2392, 2392, 5896, 2392, + 2404, 5778, 5780, 5779, 5902, 5903, 5904, 5905, + 5906, 5907, 5908, 5909, 5910, 5911, 5912, 5913, + 5914, 5915, 5916, 5779, 5901, 5917, 5919, 5918, + 2428, 5920, 5921, 2428, 2428, 5922, 5900, 2428, + 2428, 5918, 2428, 2453, 5917, 5919, 5918, 2428, + 2453, 5923, 5924, 2428, 5925, 2453, 5926, 2428, + 2428, 5918, 2428, 2453, 2428, 2428, 2453, 2453, + 2463, 5856, 5897, 5896, 2392, 2404, 5927, 5928, + 2468, 2392, 5929, 5930, 2404, 5931, 5926, 2392, + 2392, 5896, 2392, 2404, 2392, 2392, 2404, 2404, + 2465, 5856, 5897, 5896, 2392, 2404, 5927, 2392, + 5930, 2404, 5926, 2392, 2392, 5896, 2392, 2404, + 2392, 2392, 2404, 2404, 2465, 5856, 5897, 5896, + 2392, 2397, 5932, 5933, 2400, 5934, 2397, 5935, + 2392, 2392, 5896, 2392, 2397, 2392, 2392, 2397, + 2397, 2396, 5856, 5897, 5896, 2392, 2404, 5927, + 5936, 2392, 5930, 2404, 5926, 2392, 2392, 5896, + 2392, 2404, 2392, 2392, 2404, 2404, 2465, 5937, + 5940, 5939, 5901, 5941, 5942, 5943, 5944, 5945, + 5946, 5906, 5907, 5947, 5909, 5948, 5949, 5950, + 5951, 5952, 5953, 5954, 5901, 5901, 5939, 5901, + 5941, 5901, 5941, 5941, 5938, 5956, 5958, 5957, + 2408, 5959, 2438, 5960, 5961, 5962, 2542, 2543, + 2408, 2414, 5963, 2416, 5964, 5965, 5966, 2438, + 5967, 5926, 5968, 2408, 2408, 5957, 2408, 2438, + 2408, 2438, 2438, 5955, 5969, 5971, 5970, 2422, + 5972, 2446, 5973, 5974, 2422, 5975, 2446, 5926, + 2422, 2422, 5970, 2422, 2446, 2422, 2422, 2446, + 2446, 2803, 5976, 5978, 5977, 2426, 2450, 5979, + 2465, 2426, 5980, 2450, 5926, 2426, 2426, 5977, + 2426, 2450, 2426, 2426, 2450, 2450, 2457, 5917, + 5919, 5918, 2428, 2450, 5979, 5981, 5982, 2460, + 5983, 2450, 5935, 2428, 2428, 5918, 2428, 2450, + 2428, 2428, 2450, 2450, 2457, 5917, 5919, 5918, + 2428, 2453, 5923, 5924, 5984, 2428, 5925, 2453, + 5926, 2428, 2428, 5918, 2428, 2453, 2428, 2428, + 2453, 2453, 2463, 5917, 5919, 5918, 2428, 2453, + 2454, 2455, 5985, 2430, 2453, 2406, 2428, 2428, + 5918, 2428, 2453, 2428, 2428, 2453, 2453, 2452, + 5969, 5971, 5970, 2422, 5986, 5987, 5988, 2422, + 2422, 5989, 5900, 2422, 2422, 5970, 2422, 2446, + 5976, 5978, 5977, 2426, 5990, 2404, 2426, 2426, + 5991, 5900, 2426, 2426, 5977, 2426, 2450, 5917, + 5919, 5918, 2428, 5990, 5992, 2453, 2428, 2428, + 2453, 5993, 5994, 2428, 2428, 5918, 2428, 2450, + 5856, 5897, 5896, 2392, 5898, 5995, 2468, 2392, + 2392, 5996, 5899, 5997, 5900, 2392, 2392, 5896, + 2392, 2404, 5956, 5958, 5957, 2408, 5998, 5999, + 6000, 2408, 2408, 6001, 5900, 2408, 2408, 5957, + 2408, 2438, 5969, 5971, 5970, 2422, 6002, 5999, + 6003, 2446, 2422, 2422, 2446, 6004, 5994, 2422, + 2422, 5970, 2422, 2438, 5937, 5940, 5939, 5901, + 6005, 6006, 6007, 5945, 5946, 6008, 5907, 6009, + 5909, 6010, 6011, 6012, 6013, 5952, 6014, 6015, + 5901, 5901, 5939, 5901, 5941, 5956, 5958, 5957, + 2408, 5998, 5999, 6016, 6017, 2542, 2543, 2414, + 6018, 2416, 6019, 6001, 6020, 6021, 5900, 6022, + 2408, 2408, 5957, 2408, 2438, 5956, 5958, 5957, + 2408, 5986, 5999, 6016, 6023, 2542, 2543, 2414, + 6018, 2416, 6019, 6001, 6020, 6021, 5900, 6022, + 2408, 2408, 5957, 2408, 2438, 5856, 5897, 5896, + 2392, 5898, 6024, 6025, 2553, 2554, 2490, 6026, + 2492, 6027, 5899, 6028, 6029, 5900, 6030, 2392, + 2392, 5896, 2392, 2404, 5856, 5897, 5896, 2392, + 5898, 6031, 6032, 6033, 6034, 2501, 6035, 2503, + 6036, 5899, 6037, 6038, 5900, 6039, 2392, 2392, + 5896, 2392, 2404, 5856, 5897, 6041, 2508, 6042, + 2508, 2508, 6043, 5900, 2508, 2508, 6040, 2508, + 2397, 5856, 5897, 5896, 2392, 6042, 2404, 2392, + 2392, 2404, 6044, 5994, 2392, 2392, 5896, 2392, + 2397, 5778, 5780, 5779, 5901, 5941, 6046, 6047, + 6048, 5945, 5946, 5906, 5907, 6049, 5909, 6050, + 6051, 5912, 6052, 5952, 6053, 6054, 5901, 5901, + 5779, 5901, 5941, 5901, 5941, 5941, 6045, 6055, + 6057, 6056, 2533, 6058, 2533, 2533, 6059, 5900, + 2533, 2533, 6056, 2533, 2573, 5856, 5897, 5896, + 2392, 6042, 6060, 2536, 2404, 2392, 2392, 2404, + 6061, 6044, 6062, 5994, 2392, 2392, 5896, 2392, + 2397, 6063, 6065, 6064, 2532, 6066, 2532, 2532, + 5899, 5900, 2532, 2532, 6064, 2532, 2570, 6067, + 6069, 6068, 2608, 6070, 2608, 2608, 6071, 5900, + 2404, 2608, 2608, 6068, 2608, 2581, 6072, 6074, + 6073, 2576, 6075, 2576, 2576, 6076, 5900, 6077, + 2576, 2576, 6073, 2576, 2588, 6072, 6074, 6073, + 2576, 2588, 6078, 2576, 6079, 2588, 5926, 6080, + 2576, 2576, 6073, 2576, 2588, 2576, 2576, 2588, + 2588, 2593, 6072, 6074, 6073, 2576, 2581, 6081, + 6082, 2584, 6083, 2581, 5935, 6084, 2576, 2576, + 6073, 2576, 2581, 2576, 2576, 2581, 2581, 2580, + 6072, 6074, 6073, 2576, 2588, 6078, 6085, 2576, + 6079, 2588, 5926, 6080, 2576, 2576, 6073, 2576, + 2588, 2576, 2576, 2588, 2588, 2593, 6072, 6074, + 6073, 2576, 2588, 2589, 6086, 2577, 2588, 2406, + 2590, 2576, 2576, 6073, 2576, 2588, 2576, 2576, + 2588, 2588, 2587, 6072, 6074, 6073, 2576, 6070, + 2588, 2576, 2576, 2588, 6087, 5994, 6088, 2576, + 2576, 6073, 2576, 2581, 5969, 5971, 5970, 2422, + 5986, 5987, 6089, 6090, 6091, 6034, 2635, 6092, + 2637, 6093, 5989, 6094, 6095, 5900, 6096, 2422, + 2422, 5970, 2422, 2446, 5969, 5971, 5970, 2422, + 2445, 2446, 2447, 2448, 6097, 2425, 2446, 2406, + 2422, 2422, 5970, 2422, 2446, 2422, 2422, 2446, + 2446, 2444, 6098, 6100, 6099, 2671, 6101, 6102, + 2671, 2671, 6103, 5900, 2671, 2671, 6099, 2671, + 2698, 5976, 5978, 5977, 2426, 2450, 5979, 5924, + 2426, 5980, 2450, 5926, 2426, 2426, 5977, 2426, + 2450, 2426, 2426, 2450, 2450, 2457, 6104, 6106, + 6105, 2712, 6107, 6108, 6109, 2712, 2712, 6110, + 5900, 2712, 2712, 6105, 2712, 2714, 5976, 5978, + 5977, 2426, 5990, 5921, 2426, 2426, 5991, 5900, + 2426, 2426, 5977, 2426, 2450, 6104, 6106, 6105, + 2712, 6111, 6112, 6113, 2714, 2712, 2712, 2714, + 6114, 5994, 2712, 2712, 6105, 2712, 2708, 6104, + 6106, 6105, 2712, 2713, 2714, 2715, 2716, 6115, + 2717, 2714, 2406, 2712, 2712, 6105, 2712, 2714, + 2712, 2712, 2714, 2714, 2711, 6116, 6118, 6117, + 2665, 6119, 6120, 6121, 2665, 2665, 6122, 5900, + 2665, 2665, 6117, 2665, 2691, 6123, 6125, 6124, + 2669, 6126, 2573, 2669, 2669, 6127, 5900, 2669, + 2669, 6124, 2669, 2695, 5917, 5919, 5918, 2428, + 5990, 6128, 5992, 2536, 2453, 2428, 2428, 2453, + 6129, 5993, 6130, 5994, 2428, 2428, 5918, 2428, + 2450, 6131, 6133, 6132, 2706, 6134, 6112, 5921, + 2706, 2706, 6135, 5900, 2706, 2706, 6132, 2706, + 2708, 6123, 6125, 6124, 2669, 6126, 6136, 2669, + 2669, 5922, 5900, 2669, 2669, 6124, 2669, 2695, + 6055, 6057, 6056, 2533, 6058, 6137, 2468, 2533, + 2533, 6138, 6059, 6139, 5900, 2533, 2533, 6056, + 2533, 2573, 6140, 6142, 6141, 2662, 6143, 6144, + 6145, 2662, 2662, 6146, 5900, 2662, 2662, 6141, + 2662, 2686, 5969, 5971, 5970, 2422, 6002, 5999, + 6147, 6003, 2536, 2446, 2422, 2422, 2446, 6148, + 6004, 6149, 5994, 2422, 2422, 5970, 2422, 2438, + 5956, 5958, 5957, 2408, 5986, 5999, 5988, 2408, + 2408, 6001, 5900, 2408, 2408, 5957, 2408, 2438, + 6140, 6142, 6141, 2662, 6150, 6144, 6151, 2662, + 2662, 5989, 5900, 2662, 2662, 6141, 2662, 2686, + 6152, 6154, 6153, 2752, 6155, 6156, 6157, 2752, + 2752, 6158, 5900, 2446, 2752, 2752, 6153, 2752, + 2759, 6159, 6161, 6160, 2737, 6162, 6163, 6164, + 2737, 2737, 6165, 5900, 6166, 2737, 2737, 6160, + 2737, 2768, 6167, 6169, 6168, 2745, 6170, 6171, + 2745, 2745, 6172, 5900, 6173, 2745, 2745, 6168, + 2745, 2777, 6167, 6169, 6168, 2745, 2777, 6174, + 6175, 2745, 6176, 2777, 5926, 6177, 2745, 2745, + 6168, 2745, 2777, 2745, 2745, 2777, 2777, 2789, + 6072, 6074, 6073, 2576, 2588, 6078, 6178, 2468, + 2576, 6179, 6079, 2588, 6180, 5926, 6080, 2576, + 2576, 6073, 2576, 2588, 2576, 2576, 2588, 2588, + 2593, 6152, 6154, 6153, 2752, 6182, 2759, 6183, + 6184, 2752, 6185, 2759, 5926, 6186, 2752, 2752, + 6153, 2752, 2759, 2752, 2752, 2759, 2759, 6181, + 6159, 6161, 6160, 2737, 6187, 2768, 6188, 6189, + 2737, 6190, 2768, 5926, 6191, 2737, 2737, 6160, + 2737, 2768, 2737, 2737, 2768, 2768, 2807, 6192, + 6194, 6193, 2742, 2773, 6195, 2593, 2742, 6196, + 2773, 5926, 6197, 2742, 2742, 6193, 2742, 2773, + 2742, 2742, 2773, 2773, 2782, 6167, 6169, 6168, + 2745, 2773, 6195, 6198, 6199, 2785, 6200, 2773, + 5935, 6201, 2745, 2745, 6168, 2745, 2773, 2745, + 2745, 2773, 2773, 2782, 6167, 6169, 6168, 2745, + 2777, 6174, 6175, 6202, 2745, 6176, 2777, 5926, + 6177, 2745, 2745, 6168, 2745, 2777, 2745, 2745, + 2777, 2777, 2789, 5917, 5919, 5918, 2428, 2453, + 5923, 6203, 5924, 2468, 2428, 6204, 5925, 2453, + 6205, 5926, 2428, 2428, 5918, 2428, 2453, 2428, + 2428, 2453, 2453, 2463, 6131, 6133, 6132, 2706, + 6207, 2708, 6208, 5924, 2706, 6209, 2708, 5926, + 2706, 2706, 6132, 2706, 2708, 2706, 2706, 2708, + 2708, 6206, 6104, 6106, 6105, 2712, 6210, 2714, + 6211, 6212, 2712, 6213, 2714, 5926, 2712, 2712, + 6105, 2712, 2714, 2712, 2712, 2714, 2714, 2797, + 6104, 6106, 6105, 2712, 2720, 2708, 6208, 6214, + 6215, 2723, 6216, 2708, 5935, 2712, 2712, 6105, + 2712, 2708, 2712, 2712, 2708, 2708, 6206, 6104, + 6106, 6105, 2712, 6210, 2714, 6211, 6212, 6217, + 2712, 6213, 2714, 5926, 2712, 2712, 6105, 2712, + 2714, 2712, 2712, 2714, 2714, 2797, 6123, 6125, + 6124, 2669, 2695, 6219, 6220, 2669, 5925, 2695, + 5926, 2669, 2669, 6124, 2669, 2695, 2669, 2669, + 2695, 2695, 6218, 6098, 6100, 6099, 2671, 2698, + 6221, 6222, 2671, 6223, 2698, 5926, 2671, 2671, + 6099, 2671, 2698, 2671, 2671, 2698, 2698, 2799, + 6055, 6057, 6056, 2533, 2573, 6224, 6225, 2468, + 2533, 6226, 6227, 2573, 6228, 5926, 2533, 2533, + 6056, 2533, 2573, 2533, 2533, 2573, 2573, 2801, + 6055, 6057, 6056, 2533, 2573, 6224, 2533, 6227, + 2573, 5926, 2533, 2533, 6056, 2533, 2573, 2533, + 2533, 2573, 2573, 2801, 5856, 5897, 5896, 2392, + 2397, 5932, 6229, 5933, 2536, 2400, 6230, 5934, + 2397, 6231, 5935, 2392, 2392, 5896, 2392, 2397, + 2392, 2392, 2397, 2397, 2396, 5956, 5958, 5957, + 2408, 5959, 2438, 5960, 6232, 2408, 5965, 2438, + 5926, 2408, 2408, 5957, 2408, 2438, 2408, 2408, + 2438, 2438, 5955, 5969, 5971, 5970, 2422, 2437, + 2438, 5960, 6233, 6234, 2442, 6235, 2438, 5935, + 2422, 2422, 5970, 2422, 2438, 2422, 2422, 2438, + 2438, 5955, 5969, 5971, 5970, 2422, 5972, 2446, + 5973, 5974, 6236, 2422, 5975, 2446, 5926, 2422, + 2422, 5970, 2422, 2446, 2422, 2422, 2446, 2446, + 2803, 5856, 5897, 5896, 2392, 2404, 2405, 6237, + 2393, 2404, 2406, 2392, 2392, 5896, 2392, 2404, + 2392, 2392, 2404, 2404, 2403, 6063, 6065, 6064, + 2532, 2570, 6239, 2532, 5930, 2570, 5926, 2532, + 2532, 6064, 2532, 2570, 2532, 2532, 2570, 2570, + 6238, 6067, 6069, 6068, 2608, 2581, 6081, 2608, + 6240, 2581, 5926, 2465, 2608, 2608, 6068, 2608, + 2581, 2608, 2608, 2581, 2581, 2580, 6140, 6142, + 6141, 2662, 6242, 2686, 6243, 6244, 2662, 6245, + 2686, 5926, 2662, 2662, 6141, 2662, 2686, 2662, + 2662, 2686, 2686, 6241, 6116, 6118, 6117, 2665, + 6246, 2691, 6247, 6248, 2665, 6249, 2691, 5926, + 2665, 2665, 6117, 2665, 2691, 2665, 2665, 2691, + 2691, 2805, 6123, 6125, 6124, 2669, 2695, 6219, + 2801, 2669, 6250, 2695, 5926, 2669, 2669, 6124, + 2669, 2695, 2669, 2669, 2695, 2695, 6218, 5917, + 5919, 5918, 2428, 2450, 5979, 6251, 5981, 5982, + 2536, 2460, 6252, 5983, 2450, 6253, 5935, 2428, + 2428, 5918, 2428, 2450, 2428, 2428, 2450, 2450, + 2457, 6192, 6194, 6193, 2742, 2773, 6195, 6198, + 2742, 6196, 2773, 5926, 2463, 2742, 2742, 6193, + 2742, 2773, 2742, 2742, 2773, 2773, 2782, 5969, + 5971, 5970, 2422, 2437, 2438, 5960, 6254, 6233, + 6234, 2536, 2442, 6255, 6235, 2438, 6256, 5935, + 2422, 2422, 5970, 2422, 2438, 2422, 2422, 2438, + 2438, 5955, 5956, 5958, 5957, 2408, 5972, 2438, + 5960, 5974, 2408, 5965, 2438, 5926, 2408, 2408, + 5957, 2408, 2438, 2408, 2408, 2438, 2438, 5955, + 6140, 6142, 6141, 2662, 6257, 2686, 6243, 6258, + 2662, 5975, 2686, 5926, 2662, 2662, 6141, 2662, + 2686, 2662, 2662, 2686, 2686, 6241, 6152, 6154, + 6153, 2752, 2758, 2759, 6183, 6259, 2752, 6185, + 2759, 5926, 2803, 2752, 2752, 6153, 2752, 2759, + 2752, 2752, 2759, 2759, 6181, 6159, 6161, 6160, + 2737, 2758, 2759, 6183, 6259, 6260, 2763, 6261, + 2759, 5935, 6262, 2737, 2737, 6160, 2737, 2759, + 2737, 2737, 2759, 2759, 6181, 6159, 6161, 6160, + 2737, 6187, 2768, 6188, 6189, 6263, 2737, 6190, + 2768, 5926, 6191, 2737, 2737, 6160, 2737, 2768, + 2737, 2737, 2768, 2768, 2807, 5969, 5971, 5970, + 2422, 5972, 2446, 5973, 6264, 5974, 2468, 2422, + 6265, 5975, 2446, 6266, 5926, 2422, 2422, 5970, + 2422, 2446, 2422, 2422, 2446, 2446, 2803, 6159, + 6161, 6160, 2737, 2767, 2768, 2769, 2770, 6267, + 2740, 2768, 2406, 2771, 2737, 2737, 6160, 2737, + 2768, 2737, 2737, 2768, 2768, 2766, 6268, 6270, + 6269, 2830, 6271, 2830, 2830, 6272, 5900, 6273, + 2830, 2830, 6269, 2830, 2831, 6072, 6074, 6073, + 2576, 6070, 6274, 2536, 2588, 2576, 2576, 2588, + 6275, 6087, 6276, 5994, 6088, 2576, 2576, 6073, + 2576, 2581, 6152, 6154, 6153, 2752, 6277, 6156, + 6278, 2752, 2752, 6158, 5900, 6279, 2752, 2752, + 6153, 2752, 2759, 6192, 6194, 6193, 2742, 6280, + 2588, 2742, 2742, 6281, 5900, 6282, 2742, 2742, + 6193, 2742, 2773, 6167, 6169, 6168, 2745, 6280, + 6283, 2777, 2745, 2745, 2777, 6284, 5994, 6285, + 2745, 2745, 6168, 2745, 2773, 6072, 6074, 6073, + 2576, 6075, 6286, 2468, 2576, 2576, 6287, 6076, + 6288, 5900, 6077, 2576, 2576, 6073, 2576, 2588, + 6289, 6291, 6290, 2825, 6292, 2825, 2825, 6076, + 5900, 6293, 2825, 2825, 6290, 2825, 2826, 6067, + 6069, 6068, 2608, 6070, 2608, 2608, 6071, 5900, + 6077, 2608, 2608, 6068, 2608, 2581, 5917, 5919, + 5918, 2428, 5920, 6294, 5921, 2468, 2428, 2428, + 6295, 5922, 6296, 5900, 2428, 2428, 5918, 2428, + 2453, 6192, 6194, 6193, 2742, 6280, 6283, 2742, + 2742, 6281, 5900, 2453, 2742, 2742, 6193, 2742, + 2773, 6159, 6161, 6160, 2737, 6155, 6156, 6157, + 2768, 2737, 2737, 2768, 6297, 5994, 6298, 2737, + 2737, 6160, 2737, 2759, 5969, 5971, 5970, 2422, + 5986, 5987, 6299, 5988, 2468, 2422, 2422, 6300, + 5989, 6301, 5900, 2422, 2422, 5970, 2422, 2446, + 6063, 6065, 6064, 2532, 2570, 6239, 2532, 6227, + 2570, 5926, 2532, 2532, 6064, 2532, 2570, 2532, + 2532, 2570, 2570, 6238, 6289, 6291, 6290, 2825, + 2826, 6303, 2825, 6304, 2826, 5926, 2801, 2825, + 2825, 6290, 2825, 2826, 2825, 2825, 2826, 2826, + 6302, 6268, 6270, 6269, 2830, 2831, 6305, 2830, + 6306, 2831, 5926, 6307, 2830, 2830, 6269, 2830, + 2831, 2830, 2830, 2831, 2831, 2843, 6072, 6074, + 6073, 2576, 2581, 6081, 6308, 6082, 2536, 2584, + 6309, 6083, 2581, 6310, 5935, 6084, 2576, 2576, + 6073, 2576, 2581, 2576, 2576, 2581, 2581, 2580, + 6289, 6291, 6290, 2825, 2826, 6303, 2825, 6079, + 2826, 5926, 6311, 2825, 2825, 6290, 2825, 2826, + 2825, 2825, 2826, 2826, 6302, 6067, 6069, 6068, + 2608, 2581, 6081, 2608, 6240, 2581, 5926, 6080, + 2608, 2608, 6068, 2608, 2581, 2608, 2608, 2581, + 2581, 2580, 6167, 6169, 6168, 2745, 2777, 2778, + 2779, 6312, 2747, 2777, 2406, 2780, 2745, 2745, + 6168, 2745, 2777, 2745, 2745, 2777, 2777, 2776, + 6063, 6065, 6064, 2532, 6066, 2532, 2532, 6059, + 5900, 2532, 2532, 6064, 2532, 2570, 6289, 6291, + 6290, 2825, 6292, 2825, 2825, 6313, 5900, 2573, + 2825, 2825, 6290, 2825, 2826, 5969, 5971, 5970, + 2422, 5986, 5987, 6314, 6315, 2888, 2563, 2645, + 6316, 2647, 6317, 5989, 6318, 6319, 5900, 6320, + 2422, 2422, 5970, 2422, 2446, 5969, 5971, 5970, + 2422, 5986, 5987, 6321, 6322, 2896, 2600, 2857, + 6323, 2859, 6324, 5989, 6325, 6326, 5900, 6327, + 2422, 2422, 5970, 2422, 2446, 5969, 5971, 5970, + 2422, 5986, 5987, 6328, 6329, 2904, 2613, 2868, + 6330, 2870, 6331, 5989, 6332, 6333, 5900, 6334, + 2422, 2422, 5970, 2422, 2446, 5856, 5897, 5896, + 2392, 5898, 6335, 6336, 6337, 6338, 6339, 2932, + 6341, 2934, 6342, 6343, 5899, 6344, 6345, 5900, + 6346, 2392, 2392, 5896, 2392, 6340, 2404, 5856, + 5897, 5896, 2392, 5898, 2392, 2392, 5899, 5900, + 2392, 2392, 5896, 2392, 6347, 2404, 5856, 5897, + 5896, 2392, 5898, 6348, 6349, 6350, 6351, 6352, + 2917, 6354, 2919, 6355, 6356, 5899, 6357, 6358, + 5900, 6359, 2392, 2392, 5896, 2392, 6353, 2404, + 5856, 5897, 5896, 2392, 5898, 6360, 6361, 2562, + 2563, 2514, 6362, 2516, 6363, 5899, 6364, 6365, + 5900, 6366, 2392, 2392, 5896, 2392, 2404, 5856, + 5897, 5896, 2392, 5898, 6367, 6368, 2599, 2600, + 2601, 6369, 2603, 6370, 5899, 6371, 6372, 5900, + 6373, 2392, 2392, 5896, 2392, 2404, 5856, 5897, + 5896, 2392, 5898, 6374, 6375, 2612, 2613, 2614, + 6376, 2616, 6377, 5899, 6378, 6379, 5900, 6380, + 2392, 2392, 5896, 2392, 2404, 5856, 5897, 5896, + 2392, 5898, 2392, 2392, 5899, 5900, 2392, 2392, + 5896, 2392, 2956, 2404, 5856, 5897, 5896, 2392, + 5898, 6381, 6382, 6383, 6384, 6385, 2972, 6386, + 2974, 6387, 6388, 5899, 6389, 6390, 5900, 6391, + 2392, 2392, 5896, 2392, 2404, 5956, 5958, 5957, + 2408, 5972, 2438, 5960, 5961, 6392, 2542, 2543, + 2408, 2414, 5963, 2416, 5964, 5965, 5966, 2438, + 5967, 5926, 5968, 2408, 2408, 5957, 2408, 2438, + 2408, 2438, 2438, 5955, 5856, 5897, 5896, 2392, + 2404, 5927, 6393, 6394, 2553, 2554, 2392, 2490, + 6395, 2492, 6396, 5930, 6397, 2404, 6398, 5926, + 6399, 2392, 2392, 5896, 2392, 2404, 2392, 2404, + 2404, 2465, 5856, 5897, 5896, 2392, 2404, 5927, + 6400, 6401, 2562, 2563, 2392, 2514, 6402, 2516, + 6403, 5930, 6404, 2404, 6405, 5926, 6406, 2392, + 2392, 5896, 2392, 2404, 2392, 2404, 2404, 2465, + 5856, 5897, 5896, 2392, 2404, 5927, 6407, 6408, + 2599, 2600, 2392, 2601, 6409, 2603, 6410, 5930, + 6411, 2404, 6412, 5926, 6413, 2392, 2392, 5896, + 2392, 2404, 2392, 2404, 2404, 2465, 5856, 5897, + 5896, 2392, 2404, 5927, 6414, 6415, 2612, 2613, + 2392, 2614, 6416, 2616, 6417, 5930, 6418, 2404, + 6419, 5926, 6420, 2392, 2392, 5896, 2392, 2404, + 2392, 2404, 2404, 2465, 5969, 5971, 5970, 2422, + 5972, 2446, 5973, 6421, 6422, 2888, 2563, 2422, + 2645, 6423, 2647, 6424, 5975, 6425, 2446, 6426, + 5926, 6427, 2422, 2422, 5970, 2422, 2446, 2422, + 2446, 2446, 2803, 5969, 5971, 5970, 2422, 5972, + 2446, 5973, 6428, 6429, 2896, 2600, 2422, 2857, + 6430, 2859, 6431, 5975, 6432, 2446, 6433, 5926, + 6434, 2422, 2422, 5970, 2422, 2446, 2422, 2446, + 2446, 2803, 5969, 5971, 5970, 2422, 5972, 2446, + 5973, 6435, 6436, 2904, 2613, 2422, 2868, 6437, + 2870, 6438, 5975, 6439, 2446, 6440, 5926, 6441, + 2422, 2422, 5970, 2422, 2446, 2422, 2446, 2446, + 2803, 5856, 5897, 5896, 2392, 2404, 5927, 2392, + 5930, 2404, 5926, 2392, 2392, 5896, 2392, 2404, + 2956, 2392, 2392, 2404, 2404, 2465, 6442, 6442, + 2318, 6443, 2318, 2318, 6444, 2318, 2318, 6442, + 2318, 2985, 5856, 5856, 2321, 5861, 6445, 2327, + 2333, 2321, 2321, 2333, 6446, 5862, 6447, 2321, + 2321, 5856, 2321, 2323, 6448, 6448, 2343, 6449, + 6450, 6451, 2343, 2343, 6452, 2343, 2343, 6448, + 2343, 2345, 6453, 6453, 2350, 6454, 6455, 6456, + 2350, 2350, 6457, 2350, 2350, 6453, 2350, 2352, + 5868, 5868, 2358, 6458, 2333, 2358, 2358, 6459, + 2358, 2358, 5868, 2358, 2378, 5871, 5871, 2360, + 6458, 6460, 2375, 2360, 2360, 2375, 6461, 2360, + 2360, 5871, 2360, 2378, 5856, 5856, 2321, 5859, + 6462, 2389, 2321, 2321, 6463, 5860, 6464, 2321, + 2321, 5856, 2321, 2333, 6465, 6465, 2981, 6466, + 2981, 2981, 5860, 2981, 2981, 6465, 2981, 2982, + 6467, 6467, 3015, 6468, 3015, 3015, 6469, 2333, + 3015, 3015, 6467, 3015, 2993, 6470, 6470, 2988, + 6471, 2988, 2988, 6472, 6473, 2988, 2988, 6470, + 2988, 3000, 6470, 6470, 2988, 3000, 6474, 2988, + 6475, 3000, 6476, 2988, 2988, 6470, 2988, 3000, + 2988, 2988, 3000, 3000, 3005, 6470, 6470, 2988, + 2993, 6477, 6478, 2996, 6479, 2993, 6480, 2988, + 2988, 6470, 2988, 2993, 2988, 2988, 2993, 2993, + 2992, 6470, 6470, 2988, 3000, 6474, 6481, 2988, + 6475, 3000, 6476, 2988, 2988, 6470, 2988, 3000, + 2988, 2988, 3000, 3000, 3005, 5856, 5856, 2321, + 2333, 5857, 6482, 2389, 2321, 6483, 5858, 2333, + 6484, 2321, 2321, 5856, 2321, 2333, 2321, 2321, + 2333, 2333, 2339, 6448, 6448, 2343, 6486, 2345, + 6487, 6488, 2343, 6489, 2345, 2343, 2343, 6448, + 2343, 2345, 2343, 2343, 2345, 2345, 6485, 6453, + 6453, 2350, 6490, 2352, 6491, 6492, 2350, 6493, + 2352, 2350, 2350, 6453, 2350, 2352, 2350, 2350, + 2352, 2352, 3007, 6453, 6453, 2350, 2369, 2345, + 6487, 6494, 6495, 2372, 6496, 2345, 2350, 2350, + 6453, 2350, 2345, 2350, 2350, 2345, 2345, 6485, + 6453, 6453, 2350, 6490, 2352, 6491, 6492, 6497, + 2350, 6493, 2352, 2350, 2350, 6453, 2350, 2352, + 2350, 2350, 2352, 2352, 3007, 6453, 6453, 2350, + 2351, 2352, 2353, 2354, 6498, 2355, 2352, 2350, + 2350, 6453, 2350, 2352, 2350, 2350, 2352, 2352, + 2349, 6465, 6465, 2981, 2982, 6500, 2981, 5858, + 2982, 2981, 2981, 6465, 2981, 2982, 2981, 2981, + 2982, 2982, 6499, 6442, 6442, 2318, 2985, 6501, + 2318, 6502, 2985, 2318, 2318, 6442, 2318, 2985, + 2318, 2318, 2985, 2985, 3010, 5856, 5856, 2321, + 2323, 5863, 6503, 5864, 2327, 2328, 6504, 5865, + 2323, 6505, 2321, 2321, 5856, 2321, 2323, 2321, + 2321, 2323, 2323, 2322, 6467, 6467, 3015, 2993, + 6477, 3015, 6506, 2993, 2339, 3015, 3015, 6467, + 3015, 2993, 3015, 3015, 2993, 2993, 2992, 6470, + 6470, 2988, 3000, 3001, 6507, 2989, 3000, 3002, + 2988, 2988, 6470, 2988, 3000, 2988, 2988, 3000, + 3000, 2999, 6470, 6470, 2988, 6468, 3000, 2988, + 2988, 3000, 6508, 6509, 2988, 2988, 6470, 2988, + 2993, 6453, 6453, 2350, 6510, 6450, 6511, 2352, + 2350, 2350, 2352, 6512, 2350, 2350, 6453, 2350, + 2345, 5871, 5871, 2360, 2375, 2385, 2386, 6513, + 2362, 2375, 2360, 2360, 5871, 2360, 2375, 2360, + 2360, 2375, 2375, 2384, 5871, 5871, 2360, 2378, + 5869, 6514, 6515, 2382, 6516, 2378, 2360, 2360, + 5871, 2360, 2378, 2360, 2360, 2378, 2378, 2377, + 5871, 5871, 2360, 2375, 5872, 5873, 6517, 2360, + 5874, 2375, 2360, 2360, 5871, 2360, 2375, 2360, + 2360, 2375, 2375, 3019, 6519, 6519, 6520, 6519, + 6518, 6522, 6522, 6523, 6522, 6521, 1791, 1792, + 1793, 1721, 1794, 1795, 1796, 1797, 1798, 1799, + 1800, 5757, 2249, 2250, 2251, 2252, 2254, 2255, + 2256, 2257, 2258, 2259, 6524, 2260, 2261, 2262, + 6525, 2263, 2264, 2253, 2253, 2253, 5757, 3075, + 6526, 3333, 6527, 2249, 2250, 2251, 2252, 2254, + 2255, 2256, 2257, 2258, 2259, 2260, 6528, 2262, + 2263, 2264, 2253, 2253, 2253, 5757, 3609, 6529, + 2249, 2250, 2251, 2252, 2254, 2255, 2256, 2257, + 2258, 2259, 2260, 2261, 6530, 2262, 2263, 2264, + 2253, 2253, 2253, 5757, 3875, 6531, 2249, 2250, + 2251, 2252, 2254, 2255, 2256, 2257, 2258, 2259, + 2260, 2261, 2262, 6532, 2263, 2264, 2253, 2253, + 2253, 5757, 4134, 6533, 2249, 2250, 2251, 2252, + 2254, 2255, 2256, 2257, 2258, 6534, 2259, 2260, + 2261, 2262, 2263, 2264, 2253, 2253, 2253, 5757, + 6535, 4396, 5851, 5757, 1593, 5757, 5757, 509, + 510, 511, 512, 513, 514, 515, 516, 517, + 518, 519, 520, 521, 522, 508, 1801, 1802, + 1803, 1732, 1804, 1805, 1806, 1807, 1808, 1809, + 1810, 5757, 6537, 6538, 6536, 6540, 6539, 6542, + 6541, 6544, 6545, 6543, 6547, 6546, 6547, 6550, + 6551, 6552, 6553, 6549, 6549, 6548, 6555, 6556, + 6554, 6558, 6557, 6560, 6559, 6537, 6562, 6561, + 6537, 6564, 6563, 6566, 6565, 6568, 6567, 6570, + 6571, 6569, 6573, 6572, 6573, 6576, 6577, 6578, + 6579, 6575, 6575, 6574, 6537, 6581, 6581, 6582, + 6580, 4761, 4761, 4762, 6583, 6585, 6586, 6585, + 6584, 6588, 6589, 6588, 6587, 6587, 4763, 6583, + 6591, 6592, 6590, 6594, 6593, 6594, 6597, 6598, + 6599, 6600, 6596, 6596, 6595, 6602, 6603, 6601, + 4883, 6605, 4883, 4884, 6604, 6605, 6608, 6609, + 6610, 6611, 6607, 6607, 6606, 6613, 6614, 6612, + 5005, 6616, 5005, 6617, 6618, 5006, 6615, 6616, + 6621, 6622, 6623, 6624, 6620, 6620, 6619, 5160, + 6625, 6627, 6628, 6626, 6630, 6629, 6632, 6633, + 6631, 6635, 6636, 6637, 6634, 6635, 6638, 5458, + 6639, 6641, 6642, 6643, 6640, 6645, 6646, 6644, + 6645, 6647, 5722, 6648, 6649, 6644, 5728, 5729, + 6650, 0 +}; + +static const short _redcloth_scan_trans_targs[] = { + 2042, 1, 2, 3, 72, 123, 136, 144, + 148, 131, 140, 151, 156, 158, 160, 167, + 171, 126, 174, 135, 187, 4, 7, 20, + 28, 32, 15, 24, 35, 40, 42, 44, + 51, 55, 10, 58, 19, 71, 5, 6, + 2044, 8, 11, 16, 9, 12, 13, 14, + 17, 18, 21, 26, 27, 22, 23, 25, + 29, 31, 30, 33, 34, 36, 39, 37, + 38, 41, 43, 45, 46, 47, 48, 49, + 50, 52, 53, 54, 56, 57, 59, 60, + 63, 65, 66, 70, 61, 62, 64, 67, + 68, 69, 73, 75, 2054, 74, 76, 77, + 122, 80, 85, 100, 78, 79, 81, 82, + 83, 105, 84, 93, 2052, 86, 87, 89, + 88, 2045, 90, 95, 98, 91, 92, 94, + 96, 97, 119, 106, 2050, 99, 112, 113, + 101, 102, 2047, 104, 103, 2046, 111, 108, + 107, 109, 110, 115, 114, 2049, 116, 121, + 117, 118, 120, 124, 127, 132, 125, 128, + 129, 130, 133, 134, 137, 142, 143, 138, + 139, 141, 145, 147, 146, 149, 150, 152, + 155, 153, 154, 157, 159, 161, 162, 163, + 164, 165, 166, 168, 169, 170, 172, 173, + 175, 176, 179, 181, 182, 186, 177, 178, + 180, 183, 184, 185, 2042, 2061, 188, 189, + 200, 240, 201, 241, 202, 203, 204, 195, + 205, 242, 197, 206, 190, 2061, 191, 199, + 200, 208, 209, 210, 211, 212, 237, 220, + 238, 190, 191, 193, 192, 192, 193, 2061, + 194, 195, 197, 193, 196, 196, 193, 198, + 198, 193, 200, 2061, 189, 200, 201, 202, + 203, 204, 195, 205, 197, 206, 2061, 189, + 200, 201, 202, 203, 204, 195, 205, 197, + 206, 2061, 189, 200, 201, 202, 203, 207, + 195, 205, 197, 206, 2061, 189, 200, 201, + 202, 203, 204, 195, 205, 197, 206, 2061, + 189, 200, 201, 202, 203, 204, 195, 205, + 197, 206, 2061, 189, 200, 201, 202, 203, + 204, 195, 205, 197, 206, 2061, 189, 200, + 201, 202, 203, 204, 195, 205, 197, 206, + 2061, 189, 200, 201, 202, 203, 204, 195, + 205, 197, 206, 199, 200, 208, 209, 210, + 211, 212, 237, 220, 238, 199, 200, 208, + 209, 210, 239, 212, 237, 220, 238, 199, + 200, 208, 209, 210, 211, 212, 237, 220, + 238, 199, 200, 208, 209, 210, 211, 212, + 237, 220, 238, 213, 214, 216, 213, 214, + 216, 218, 215, 229, 215, 216, 229, 217, + 235, 236, 214, 216, 218, 219, 212, 220, + 221, 222, 224, 221, 222, 224, 218, 223, + 229, 223, 224, 229, 225, 226, 228, 222, + 224, 218, 227, 216, 227, 224, 216, 230, + 233, 234, 231, 232, 231, 232, 193, 216, + 224, 224, 199, 200, 208, 209, 210, 211, + 212, 237, 220, 238, 199, 200, 208, 209, + 210, 211, 212, 237, 220, 238, 199, 200, + 208, 209, 210, 211, 212, 237, 220, 238, + 2061, 188, 189, 200, 240, 201, 241, 202, + 203, 204, 195, 205, 242, 197, 206, 2061, + 189, 200, 201, 241, 202, 203, 204, 195, + 205, 197, 206, 2061, 189, 200, 201, 202, + 203, 204, 195, 205, 197, 206, 243, 244, + 246, 245, 245, 246, 247, 248, 534, 536, + 243, 244, 246, 249, 250, 422, 452, 453, + 430, 529, 454, 455, 456, 443, 531, 457, + 533, 447, 458, 250, 251, 2063, 252, 2042, + 254, 382, 383, 260, 384, 385, 386, 377, + 387, 379, 261, 388, 255, 256, 381, 382, + 390, 260, 391, 392, 393, 394, 419, 402, + 420, 255, 256, 258, 257, 257, 258, 259, + 260, 377, 379, 258, 261, 262, 265, 295, + 296, 273, 372, 297, 298, 299, 286, 374, + 300, 376, 290, 301, 262, 263, 2064, 264, + 266, 267, 278, 280, 294, 295, 303, 273, + 304, 305, 306, 307, 369, 344, 370, 266, + 267, 278, 280, 284, 268, 270, 269, 269, + 270, 271, 272, 274, 276, 268, 270, 262, + 273, 275, 275, 270, 277, 277, 270, 279, + 281, 282, 281, 282, 284, 283, 285, 273, + 286, 290, 284, 287, 288, 287, 288, 284, + 289, 291, 292, 291, 292, 284, 293, 295, + 265, 295, 296, 273, 297, 298, 299, 286, + 300, 290, 301, 265, 295, 296, 273, 297, + 298, 299, 286, 300, 290, 301, 265, 295, + 296, 273, 297, 298, 302, 286, 300, 290, + 301, 265, 295, 296, 273, 297, 298, 299, + 286, 300, 290, 301, 265, 295, 296, 273, + 297, 298, 299, 286, 300, 290, 301, 265, + 295, 296, 273, 297, 298, 299, 286, 300, + 290, 301, 265, 295, 296, 273, 297, 298, + 299, 286, 300, 290, 301, 265, 295, 296, + 273, 297, 298, 299, 286, 300, 290, 301, + 294, 295, 303, 304, 305, 306, 307, 369, + 344, 370, 294, 295, 303, 304, 305, 371, + 307, 369, 344, 370, 294, 295, 303, 304, + 305, 306, 307, 369, 344, 370, 294, 295, + 303, 304, 305, 306, 307, 369, 344, 370, + 308, 309, 334, 336, 340, 308, 309, 334, + 336, 340, 342, 310, 312, 314, 311, 326, + 311, 312, 326, 313, 332, 333, 310, 312, + 314, 315, 316, 317, 310, 312, 318, 319, + 321, 318, 319, 321, 314, 320, 326, 320, + 321, 326, 322, 323, 325, 319, 321, 314, + 324, 312, 324, 321, 312, 327, 330, 331, + 328, 329, 328, 329, 270, 312, 321, 321, + 335, 337, 338, 359, 337, 338, 340, 359, + 339, 341, 367, 368, 336, 340, 342, 343, + 307, 344, 345, 346, 348, 352, 345, 346, + 348, 352, 342, 347, 349, 350, 359, 349, + 350, 352, 359, 351, 353, 354, 358, 348, + 352, 342, 355, 356, 340, 355, 356, 352, + 340, 357, 360, 365, 366, 361, 362, 364, + 361, 362, 364, 284, 363, 340, 352, 352, + 294, 295, 303, 304, 305, 306, 307, 369, + 344, 370, 294, 295, 303, 304, 305, 306, + 307, 369, 344, 370, 294, 295, 303, 304, + 305, 306, 307, 369, 344, 370, 373, 265, + 295, 296, 273, 372, 373, 297, 298, 299, + 286, 374, 300, 290, 301, 375, 265, 295, + 296, 273, 372, 375, 297, 298, 299, 286, + 374, 300, 290, 301, 265, 295, 296, 273, + 372, 297, 298, 299, 286, 374, 300, 290, + 301, 378, 378, 258, 380, 380, 258, 382, + 254, 382, 383, 260, 384, 385, 386, 377, + 387, 379, 388, 254, 382, 383, 260, 384, + 385, 386, 377, 387, 379, 388, 254, 382, + 383, 260, 384, 385, 389, 377, 387, 379, + 388, 254, 382, 383, 260, 384, 385, 386, + 377, 387, 379, 388, 254, 382, 383, 260, + 384, 385, 386, 377, 387, 379, 388, 254, + 382, 383, 260, 384, 385, 386, 377, 387, + 379, 388, 254, 382, 383, 260, 384, 385, + 386, 377, 387, 379, 388, 254, 382, 383, + 260, 384, 385, 386, 377, 387, 379, 388, + 381, 382, 390, 391, 392, 393, 394, 419, + 402, 420, 381, 382, 390, 391, 392, 421, + 394, 419, 402, 420, 381, 382, 390, 391, + 392, 393, 394, 419, 402, 420, 381, 382, + 390, 391, 392, 393, 394, 419, 402, 420, + 395, 396, 398, 395, 396, 398, 400, 397, + 411, 397, 398, 411, 399, 417, 418, 396, + 398, 400, 401, 394, 402, 403, 404, 406, + 403, 404, 406, 400, 405, 411, 405, 406, + 411, 407, 408, 410, 404, 406, 400, 409, + 398, 409, 406, 398, 412, 415, 416, 413, + 414, 413, 414, 258, 398, 406, 406, 381, + 382, 390, 391, 392, 393, 394, 419, 402, + 420, 381, 382, 390, 391, 392, 393, 394, + 419, 402, 420, 381, 382, 390, 391, 392, + 393, 394, 419, 402, 420, 423, 424, 435, + 437, 451, 452, 460, 430, 461, 462, 463, + 464, 526, 501, 527, 423, 424, 435, 437, + 441, 425, 427, 426, 426, 427, 428, 429, + 431, 433, 425, 427, 250, 430, 432, 432, + 427, 434, 434, 427, 436, 438, 439, 438, + 439, 441, 440, 442, 430, 443, 447, 441, + 444, 445, 444, 445, 441, 446, 448, 449, + 448, 449, 441, 450, 452, 422, 452, 453, + 430, 454, 455, 456, 443, 457, 447, 458, + 422, 452, 453, 430, 454, 455, 456, 443, + 457, 447, 458, 422, 452, 453, 430, 454, + 455, 459, 443, 457, 447, 458, 422, 452, + 453, 430, 454, 455, 456, 443, 457, 447, + 458, 422, 452, 453, 430, 454, 455, 456, + 443, 457, 447, 458, 422, 452, 453, 430, + 454, 455, 456, 443, 457, 447, 458, 422, + 452, 453, 430, 454, 455, 456, 443, 457, + 447, 458, 422, 452, 453, 430, 454, 455, + 456, 443, 457, 447, 458, 451, 452, 460, + 461, 462, 463, 464, 526, 501, 527, 451, + 452, 460, 461, 462, 528, 464, 526, 501, + 527, 451, 452, 460, 461, 462, 463, 464, + 526, 501, 527, 451, 452, 460, 461, 462, + 463, 464, 526, 501, 527, 465, 466, 491, + 493, 497, 465, 466, 491, 493, 497, 499, + 467, 469, 471, 468, 483, 468, 469, 483, + 470, 489, 490, 467, 469, 471, 472, 473, + 474, 467, 469, 475, 476, 478, 475, 476, + 478, 471, 477, 483, 477, 478, 483, 479, + 480, 482, 476, 478, 471, 481, 469, 481, + 478, 469, 484, 487, 488, 485, 486, 485, + 486, 427, 469, 478, 478, 492, 494, 495, + 516, 494, 495, 497, 516, 496, 498, 524, + 525, 493, 497, 499, 500, 464, 501, 502, + 503, 505, 509, 502, 503, 505, 509, 499, + 504, 506, 507, 516, 506, 507, 509, 516, + 508, 510, 511, 515, 505, 509, 499, 512, + 513, 497, 512, 513, 509, 497, 514, 517, + 522, 523, 518, 519, 521, 518, 519, 521, + 441, 520, 497, 509, 509, 451, 452, 460, + 461, 462, 463, 464, 526, 501, 527, 451, + 452, 460, 461, 462, 463, 464, 526, 501, + 527, 451, 452, 460, 461, 462, 463, 464, + 526, 501, 527, 530, 422, 452, 453, 430, + 529, 530, 454, 455, 456, 443, 531, 457, + 447, 458, 532, 422, 452, 453, 430, 529, + 532, 454, 455, 456, 443, 531, 457, 447, + 458, 422, 452, 453, 430, 529, 454, 455, + 456, 443, 531, 457, 447, 458, 535, 535, + 246, 537, 537, 246, 538, 539, 541, 248, + 542, 543, 544, 545, 570, 553, 571, 540, + 539, 573, 248, 574, 575, 576, 534, 577, + 536, 578, 539, 538, 539, 541, 248, 542, + 543, 544, 545, 570, 553, 571, 538, 539, + 541, 248, 542, 543, 572, 545, 570, 553, + 571, 538, 539, 541, 248, 542, 543, 544, + 545, 570, 553, 571, 538, 539, 541, 248, + 542, 543, 544, 545, 570, 553, 571, 546, + 547, 549, 546, 547, 549, 551, 548, 562, + 548, 549, 562, 550, 568, 569, 547, 549, + 551, 552, 545, 553, 554, 555, 557, 554, + 555, 557, 551, 556, 562, 556, 557, 562, + 558, 559, 561, 555, 557, 551, 560, 549, + 560, 557, 549, 563, 566, 567, 564, 565, + 564, 565, 246, 549, 557, 557, 538, 539, + 541, 248, 542, 543, 544, 545, 570, 553, + 571, 538, 539, 541, 248, 542, 543, 544, + 545, 570, 553, 571, 538, 539, 541, 248, + 542, 543, 544, 545, 570, 553, 571, 540, + 539, 573, 574, 575, 576, 534, 577, 536, + 578, 540, 539, 573, 574, 575, 579, 534, + 577, 536, 578, 540, 539, 573, 574, 575, + 576, 534, 577, 536, 578, 540, 539, 573, + 574, 575, 576, 534, 577, 536, 578, 540, + 539, 573, 574, 575, 576, 534, 577, 536, + 578, 540, 539, 573, 574, 575, 576, 534, + 577, 536, 578, 540, 539, 573, 574, 575, + 576, 534, 577, 536, 578, 581, 580, 582, + 583, 584, 2068, 586, 587, 588, 589, 590, + 591, 592, 593, 2042, 595, 596, 597, 604, + 2071, 598, 599, 600, 601, 602, 603, 2042, + 605, 607, 2092, 606, 609, 2072, 2042, 608, + 2073, 610, 673, 613, 618, 639, 611, 612, + 614, 615, 616, 650, 617, 632, 2090, 625, + 626, 2074, 619, 620, 621, 622, 623, 624, + 2075, 628, 2076, 627, 2077, 629, 634, 637, + 630, 631, 633, 635, 636, 670, 651, 2088, + 638, 663, 664, 2084, 646, 647, 2082, 2078, + 640, 641, 642, 643, 644, 645, 2079, 649, + 2080, 648, 2081, 656, 653, 652, 654, 655, + 657, 658, 659, 660, 661, 662, 2085, 666, + 2086, 665, 2087, 667, 672, 668, 669, 671, + 675, 676, 677, 678, 679, 680, 681, 2094, + 682, 684, 2105, 683, 685, 2095, 686, 728, + 689, 694, 708, 687, 688, 690, 691, 692, + 712, 693, 701, 2104, 695, 696, 2096, 697, + 2097, 698, 703, 706, 699, 700, 702, 704, + 705, 725, 713, 2103, 707, 719, 720, 2101, + 709, 710, 2100, 2098, 711, 2099, 718, 715, + 714, 716, 717, 721, 2102, 722, 727, 723, + 724, 726, 730, 731, 741, 742, 750, 735, + 751, 752, 753, 754, 779, 762, 780, 730, + 731, 733, 732, 732, 733, 734, 735, 737, + 739, 733, 2109, 736, 2109, 738, 738, 733, + 740, 740, 733, 742, 729, 742, 743, 735, + 744, 745, 746, 737, 747, 739, 748, 729, + 742, 743, 735, 744, 745, 746, 737, 747, + 739, 748, 729, 742, 743, 735, 744, 745, + 749, 737, 747, 739, 748, 729, 742, 743, + 735, 744, 745, 746, 737, 747, 739, 748, + 729, 742, 743, 735, 744, 745, 746, 737, + 747, 739, 748, 729, 742, 743, 735, 744, + 745, 746, 737, 747, 739, 748, 729, 742, + 743, 735, 744, 745, 746, 737, 747, 739, + 748, 729, 742, 743, 735, 744, 745, 746, + 737, 747, 739, 748, 741, 742, 750, 751, + 752, 753, 754, 779, 762, 780, 741, 742, + 750, 751, 752, 781, 754, 779, 762, 780, + 741, 742, 750, 751, 752, 753, 754, 779, + 762, 780, 741, 742, 750, 751, 752, 753, + 754, 779, 762, 780, 755, 756, 758, 755, + 756, 758, 760, 757, 771, 757, 758, 771, + 759, 777, 778, 756, 758, 760, 761, 754, + 762, 763, 764, 766, 763, 764, 766, 760, + 765, 771, 765, 766, 771, 767, 768, 770, + 764, 766, 760, 769, 758, 769, 766, 758, + 772, 775, 776, 773, 774, 773, 774, 733, + 758, 766, 766, 741, 742, 750, 751, 752, + 753, 754, 779, 762, 780, 741, 742, 750, + 751, 752, 753, 754, 779, 762, 780, 741, + 742, 750, 751, 752, 753, 754, 779, 762, + 780, 729, 742, 743, 735, 782, 744, 745, + 746, 737, 747, 783, 784, 786, 788, 739, + 748, 785, 787, 790, 789, 791, 792, 793, + 794, 796, 797, 798, 799, 800, 801, 802, + 830, 803, 804, 805, 806, 807, 808, 809, + 810, 829, 811, 812, 813, 814, 815, 816, + 817, 818, 819, 820, 821, 822, 823, 824, + 825, 826, 827, 2042, 828, 2111, 831, 832, + 833, 834, 835, 836, 837, 838, 839, 840, + 841, 842, 2113, 2114, 848, 851, 850, 2122, + 2118, 1053, 843, 1078, 841, 2114, 848, 843, + 2042, 845, 847, 2113, 849, 850, 852, 853, + 1066, 2264, 1067, 865, 858, 852, 853, 1066, + 2264, 1067, 865, 858, 854, 856, 855, 861, + 855, 856, 861, 857, 1083, 1085, 1086, 854, + 856, 2119, 865, 1082, 2279, 858, 860, 2121, + 862, 2120, 2121, 863, 865, 1079, 2287, 861, + 862, 863, 865, 864, 851, 2122, 1053, 1078, + 866, 867, 2125, 868, 2129, 2124, 869, 905, + 2204, 867, 2152, 868, 2124, 869, 2152, 870, + 872, 873, 932, 897, 933, 899, 931, 934, + 935, 936, 877, 1037, 1003, 1038, 872, 873, + 875, 877, 874, 883, 874, 875, 883, 876, + 899, 902, 1048, 875, 878, 2135, 2139, 907, + 890, 944, 2164, 877, 878, 879, 2139, 907, + 890, 880, 2126, 888, 880, 2126, 888, 890, + 882, 2127, 890, 963, 2138, 883, 885, 2127, + 887, 2129, 889, 891, 2150, 912, 929, 879, + 890, 893, 895, 871, 897, 898, 899, 896, + 900, 1051, 902, 1047, 1048, 1049, 871, 897, + 898, 899, 896, 900, 901, 902, 1047, 1048, + 1049, 871, 897, 898, 899, 896, 900, 901, + 902, 1047, 1048, 1049, 866, 867, 871, 897, + 898, 899, 896, 900, 901, 902, 1047, 1048, + 1049, 871, 897, 898, 899, 896, 900, 901, + 902, 1047, 1048, 1049, 903, 903, 904, 891, + 2150, 912, 929, 905, 909, 910, 2163, 2150, + 1040, 945, 1041, 1009, 1042, 908, 910, 906, + 910, 2149, 2150, 911, 912, 928, 929, 930, + 906, 910, 2149, 2150, 911, 912, 928, 929, + 930, 913, 2153, 926, 913, 2153, 926, 915, + 916, 917, 875, 918, 2158, 2157, 919, 923, + 2161, 917, 890, 918, 2157, 919, 890, 920, + 922, 2158, 923, 925, 927, 906, 910, 2149, + 2150, 896, 911, 901, 912, 928, 929, 930, + 916, 917, 906, 910, 2149, 2150, 896, 911, + 901, 912, 928, 929, 930, 932, 897, 933, + 931, 934, 1039, 936, 1037, 1003, 1038, 897, + 932, 897, 933, 931, 934, 935, 936, 1037, + 1003, 1038, 932, 897, 933, 931, 934, 935, + 936, 1037, 1003, 1038, 932, 897, 933, 931, + 934, 935, 936, 1037, 1003, 1038, 937, 938, + 940, 937, 938, 940, 942, 939, 951, 939, + 940, 951, 941, 1035, 1036, 938, 940, 942, + 943, 945, 1009, 944, 946, 947, 2171, 1031, + 967, 946, 947, 2171, 1031, 967, 948, 2165, + 965, 948, 2165, 965, 967, 950, 952, 964, + 1026, 953, 954, 962, 2167, 959, 956, 953, + 954, 962, 2167, 959, 890, 956, 955, 875, + 2166, 890, 961, 2170, 956, 958, 960, 961, + 963, 967, 966, 968, 1033, 1034, 947, 967, + 970, 971, 972, 974, 976, 1001, 973, 982, + 985, 973, 974, 982, 985, 975, 1029, 1030, + 971, 972, 974, 976, 1001, 977, 2188, 2182, + 1004, 1006, 1028, 2219, 976, 1008, 977, 978, + 2182, 1004, 1006, 1008, 979, 2183, 1023, 1025, + 979, 2183, 1023, 1006, 1025, 981, 2184, 1006, + 1027, 2238, 982, 1025, 984, 2184, 986, 987, + 988, 955, 940, 974, 990, 2193, 992, 2197, + 994, 2199, 996, 2134, 998, 2208, 1000, 2187, + 1002, 936, 1003, 972, 974, 1005, 1007, 1010, + 1014, 978, 1006, 1008, 943, 945, 1009, 978, + 1011, 1012, 2220, 1019, 967, 1011, 1012, 2220, + 1019, 1013, 967, 940, 1007, 1010, 1014, 1016, + 1018, 1020, 1022, 2234, 1024, 952, 964, 1026, + 1027, 1028, 940, 1032, 1013, 932, 897, 933, + 899, 931, 934, 935, 936, 1037, 1003, 1038, + 932, 897, 933, 899, 931, 934, 935, 936, + 1037, 1003, 1038, 932, 897, 933, 899, 931, + 934, 935, 936, 1037, 1003, 1038, 909, 910, + 2163, 1040, 945, 1041, 1009, 1042, 909, 910, + 2163, 1040, 945, 1041, 1009, 1042, 909, 910, + 2163, 1040, 945, 1041, 1009, 1042, 1044, 871, + 897, 898, 899, 1043, 1044, 896, 900, 901, + 902, 1045, 1047, 1048, 1049, 1046, 871, 897, + 898, 899, 1043, 1046, 896, 900, 901, 902, + 1045, 1047, 1048, 1049, 871, 897, 898, 900, + 902, 1047, 1048, 1049, 871, 897, 898, 900, + 902, 1047, 1048, 1049, 2244, 871, 897, 898, + 896, 900, 901, 902, 1047, 1048, 1049, 871, + 897, 898, 899, 1043, 896, 900, 901, 902, + 1045, 1047, 1048, 1049, 1054, 839, 2261, 1076, + 1054, 2261, 1076, 1056, 1057, 1058, 856, 1059, + 2271, 2270, 1060, 1071, 2284, 1058, 865, 1059, + 2270, 1060, 865, 1061, 1063, 2271, 1065, 2276, + 1068, 1070, 2281, 1071, 1073, 1075, 1077, 1057, + 1058, 1079, 1081, 2120, 1082, 1084, 866, 871, + 897, 898, 899, 1043, 896, 900, 901, 902, + 1045, 867, 1047, 1052, 1048, 1049, 2290, 2291, + 1089, 1102, 1103, 1095, 1104, 1105, 1106, 1097, + 1107, 1099, 1108, 1090, 1091, 1101, 1102, 1110, + 1095, 1111, 1112, 1113, 1114, 1139, 1122, 1140, + 1090, 1091, 1093, 1092, 1092, 1093, 1094, 1095, + 1097, 1099, 1093, 2294, 1096, 2294, 1098, 1098, + 1093, 1100, 1100, 1093, 1102, 1089, 1102, 1103, + 1095, 1104, 1105, 1106, 1097, 1107, 1099, 1108, + 1089, 1102, 1103, 1095, 1104, 1105, 1106, 1097, + 1107, 1099, 1108, 1089, 1102, 1103, 1095, 1104, + 1105, 1109, 1097, 1107, 1099, 1108, 1089, 1102, + 1103, 1095, 1104, 1105, 1106, 1097, 1107, 1099, + 1108, 1089, 1102, 1103, 1095, 1104, 1105, 1106, + 1097, 1107, 1099, 1108, 1089, 1102, 1103, 1095, + 1104, 1105, 1106, 1097, 1107, 1099, 1108, 1089, + 1102, 1103, 1095, 1104, 1105, 1106, 1097, 1107, + 1099, 1108, 1089, 1102, 1103, 1095, 1104, 1105, + 1106, 1097, 1107, 1099, 1108, 1101, 1102, 1110, + 1111, 1112, 1113, 1114, 1139, 1122, 1140, 1101, + 1102, 1110, 1111, 1112, 1141, 1114, 1139, 1122, + 1140, 1101, 1102, 1110, 1111, 1112, 1113, 1114, + 1139, 1122, 1140, 1101, 1102, 1110, 1111, 1112, + 1113, 1114, 1139, 1122, 1140, 1115, 1116, 1118, + 1115, 1116, 1118, 1120, 1117, 1131, 1117, 1118, + 1131, 1119, 1137, 1138, 1116, 1118, 1120, 1121, + 1114, 1122, 1123, 1124, 1126, 1123, 1124, 1126, + 1120, 1125, 1131, 1125, 1126, 1131, 1127, 1128, + 1130, 1124, 1126, 1120, 1129, 1118, 1129, 1126, + 1118, 1132, 1135, 1136, 1133, 1134, 1133, 1134, + 1093, 1118, 1126, 1126, 1101, 1102, 1110, 1111, + 1112, 1113, 1114, 1139, 1122, 1140, 1101, 1102, + 1110, 1111, 1112, 1113, 1114, 1139, 1122, 1140, + 1101, 1102, 1110, 1111, 1112, 1113, 1114, 1139, + 1122, 1140, 1143, 1168, 1169, 1149, 1170, 1171, + 1172, 1163, 1173, 1165, 1174, 1144, 1145, 1167, + 1168, 1176, 1149, 1177, 1178, 1179, 1180, 1205, + 1188, 1206, 1144, 1145, 1147, 1146, 1146, 1147, + 1148, 1149, 1163, 1165, 1147, 2295, 1150, 1151, + 2295, 1151, 1152, 1158, 1153, 1156, 1161, 1162, + 1152, 1153, 1156, 2295, 1154, 1155, 1157, 1158, + 1159, 1160, 1161, 1162, 1164, 1164, 1147, 1166, + 1166, 1147, 1168, 1143, 1168, 1169, 1149, 1170, + 1171, 1172, 1163, 1173, 1165, 1174, 1143, 1168, + 1169, 1149, 1170, 1171, 1172, 1163, 1173, 1165, + 1174, 1143, 1168, 1169, 1149, 1170, 1171, 1175, + 1163, 1173, 1165, 1174, 1143, 1168, 1169, 1149, + 1170, 1171, 1172, 1163, 1173, 1165, 1174, 1143, + 1168, 1169, 1149, 1170, 1171, 1172, 1163, 1173, + 1165, 1174, 1143, 1168, 1169, 1149, 1170, 1171, + 1172, 1163, 1173, 1165, 1174, 1143, 1168, 1169, + 1149, 1170, 1171, 1172, 1163, 1173, 1165, 1174, + 1143, 1168, 1169, 1149, 1170, 1171, 1172, 1163, + 1173, 1165, 1174, 1167, 1168, 1176, 1177, 1178, + 1179, 1180, 1205, 1188, 1206, 1167, 1168, 1176, + 1177, 1178, 1207, 1180, 1205, 1188, 1206, 1167, + 1168, 1176, 1177, 1178, 1179, 1180, 1205, 1188, + 1206, 1167, 1168, 1176, 1177, 1178, 1179, 1180, + 1205, 1188, 1206, 1181, 1182, 1184, 1181, 1182, + 1184, 1186, 1183, 1197, 1183, 1184, 1197, 1185, + 1203, 1204, 1182, 1184, 1186, 1187, 1180, 1188, + 1189, 1190, 1192, 1189, 1190, 1192, 1186, 1191, + 1197, 1191, 1192, 1197, 1193, 1194, 1196, 1190, + 1192, 1186, 1195, 1184, 1195, 1192, 1184, 1198, + 1201, 1202, 1199, 1200, 1199, 1200, 1147, 1184, + 1192, 1192, 1167, 1168, 1176, 1177, 1178, 1179, + 1180, 1205, 1188, 1206, 1167, 1168, 1176, 1177, + 1178, 1179, 1180, 1205, 1188, 1206, 1167, 1168, + 1176, 1177, 1178, 1179, 1180, 1205, 1188, 1206, + 1209, 1210, 1221, 1222, 2297, 1209, 1223, 1224, + 1225, 1216, 1226, 1218, 1227, 1211, 1212, 1220, + 1221, 1229, 2297, 1230, 1231, 1232, 1233, 1258, + 1241, 1259, 1211, 1212, 1214, 1213, 1213, 1214, + 1215, 2297, 1216, 1218, 1214, 1217, 1217, 1214, + 1219, 1219, 1214, 1221, 1210, 1221, 1222, 2297, + 1223, 1224, 1225, 1216, 1226, 1218, 1227, 1210, + 1221, 1222, 2297, 1223, 1224, 1225, 1216, 1226, + 1218, 1227, 1210, 1221, 1222, 2297, 1223, 1224, + 1228, 1216, 1226, 1218, 1227, 1210, 1221, 1222, + 2297, 1223, 1224, 1225, 1216, 1226, 1218, 1227, + 1210, 1221, 1222, 2297, 1223, 1224, 1225, 1216, + 1226, 1218, 1227, 1210, 1221, 1222, 2297, 1223, + 1224, 1225, 1216, 1226, 1218, 1227, 1210, 1221, + 1222, 2297, 1223, 1224, 1225, 1216, 1226, 1218, + 1227, 1210, 1221, 1222, 2297, 1223, 1224, 1225, + 1216, 1226, 1218, 1227, 1220, 1221, 1229, 1230, + 1231, 1232, 1233, 1258, 1241, 1259, 1220, 1221, + 1229, 1230, 1231, 1260, 1233, 1258, 1241, 1259, + 1220, 1221, 1229, 1230, 1231, 1232, 1233, 1258, + 1241, 1259, 1220, 1221, 1229, 1230, 1231, 1232, + 1233, 1258, 1241, 1259, 1234, 1235, 1237, 1234, + 1235, 1237, 1239, 1236, 1250, 1236, 1237, 1250, + 1238, 1256, 1257, 1235, 1237, 1239, 1240, 1233, + 1241, 1242, 1243, 1245, 1242, 1243, 1245, 1239, + 1244, 1250, 1244, 1245, 1250, 1246, 1247, 1249, + 1243, 1245, 1239, 1248, 1237, 1248, 1245, 1237, + 1251, 1254, 1255, 1252, 1253, 1252, 1253, 1214, + 1237, 1245, 1245, 1220, 1221, 1229, 1230, 1231, + 1232, 1233, 1258, 1241, 1259, 1220, 1221, 1229, + 1230, 1231, 1232, 1233, 1258, 1241, 1259, 1220, + 1221, 1229, 1230, 1231, 1232, 1233, 1258, 1241, + 1259, 1262, 1263, 1264, 1265, 1266, 1267, 1268, + 1269, 1282, 1283, 1275, 1284, 1285, 1286, 1277, + 1287, 1279, 1288, 1270, 1271, 1281, 1282, 1290, + 1275, 1291, 1292, 1293, 1294, 1319, 1302, 1320, + 1270, 1271, 1273, 1272, 1272, 1273, 1274, 1275, + 1277, 1279, 1273, 2299, 1276, 2299, 1278, 1278, + 1273, 1280, 1280, 1273, 1282, 1269, 1282, 1283, + 1275, 1284, 1285, 1286, 1277, 1287, 1279, 1288, + 1269, 1282, 1283, 1275, 1284, 1285, 1286, 1277, + 1287, 1279, 1288, 1269, 1282, 1283, 1275, 1284, + 1285, 1289, 1277, 1287, 1279, 1288, 1269, 1282, + 1283, 1275, 1284, 1285, 1286, 1277, 1287, 1279, + 1288, 1269, 1282, 1283, 1275, 1284, 1285, 1286, + 1277, 1287, 1279, 1288, 1269, 1282, 1283, 1275, + 1284, 1285, 1286, 1277, 1287, 1279, 1288, 1269, + 1282, 1283, 1275, 1284, 1285, 1286, 1277, 1287, + 1279, 1288, 1269, 1282, 1283, 1275, 1284, 1285, + 1286, 1277, 1287, 1279, 1288, 1281, 1282, 1290, + 1291, 1292, 1293, 1294, 1319, 1302, 1320, 1281, + 1282, 1290, 1291, 1292, 1321, 1294, 1319, 1302, + 1320, 1281, 1282, 1290, 1291, 1292, 1293, 1294, + 1319, 1302, 1320, 1281, 1282, 1290, 1291, 1292, + 1293, 1294, 1319, 1302, 1320, 1295, 1296, 1298, + 1295, 1296, 1298, 1300, 1297, 1311, 1297, 1298, + 1311, 1299, 1317, 1318, 1296, 1298, 1300, 1301, + 1294, 1302, 1303, 1304, 1306, 1303, 1304, 1306, + 1300, 1305, 1311, 1305, 1306, 1311, 1307, 1308, + 1310, 1304, 1306, 1300, 1309, 1298, 1309, 1306, + 1298, 1312, 1315, 1316, 1313, 1314, 1313, 1314, + 1273, 1298, 1306, 1306, 1281, 1282, 1290, 1291, + 1292, 1293, 1294, 1319, 1302, 1320, 1281, 1282, + 1290, 1291, 1292, 1293, 1294, 1319, 1302, 1320, + 1281, 1282, 1290, 1291, 1292, 1293, 1294, 1319, + 1302, 1320, 1323, 1324, 1337, 1338, 1330, 1339, + 1340, 1341, 1332, 1342, 1334, 1343, 1325, 1326, + 1336, 1337, 1345, 1330, 1346, 1347, 1348, 1349, + 1374, 1357, 1375, 1325, 1326, 1328, 1327, 1327, + 1328, 1329, 1330, 1332, 1334, 1328, 2301, 1331, + 2301, 1333, 1333, 1328, 1335, 1335, 1328, 1337, + 1324, 1337, 1338, 1330, 1339, 1340, 1341, 1332, + 1342, 1334, 1343, 1324, 1337, 1338, 1330, 1339, + 1340, 1341, 1332, 1342, 1334, 1343, 1324, 1337, + 1338, 1330, 1339, 1340, 1344, 1332, 1342, 1334, + 1343, 1324, 1337, 1338, 1330, 1339, 1340, 1341, + 1332, 1342, 1334, 1343, 1324, 1337, 1338, 1330, + 1339, 1340, 1341, 1332, 1342, 1334, 1343, 1324, + 1337, 1338, 1330, 1339, 1340, 1341, 1332, 1342, + 1334, 1343, 1324, 1337, 1338, 1330, 1339, 1340, + 1341, 1332, 1342, 1334, 1343, 1324, 1337, 1338, + 1330, 1339, 1340, 1341, 1332, 1342, 1334, 1343, + 1336, 1337, 1345, 1346, 1347, 1348, 1349, 1374, + 1357, 1375, 1336, 1337, 1345, 1346, 1347, 1376, + 1349, 1374, 1357, 1375, 1336, 1337, 1345, 1346, + 1347, 1348, 1349, 1374, 1357, 1375, 1336, 1337, + 1345, 1346, 1347, 1348, 1349, 1374, 1357, 1375, + 1350, 1351, 1353, 1350, 1351, 1353, 1355, 1352, + 1366, 1352, 1353, 1366, 1354, 1372, 1373, 1351, + 1353, 1355, 1356, 1349, 1357, 1358, 1359, 1361, + 1358, 1359, 1361, 1355, 1360, 1366, 1360, 1361, + 1366, 1362, 1363, 1365, 1359, 1361, 1355, 1364, + 1353, 1364, 1361, 1353, 1367, 1370, 1371, 1368, + 1369, 1368, 1369, 1328, 1353, 1361, 1361, 1336, + 1337, 1345, 1346, 1347, 1348, 1349, 1374, 1357, + 1375, 1336, 1337, 1345, 1346, 1347, 1348, 1349, + 1374, 1357, 1375, 1336, 1337, 1345, 1346, 1347, + 1348, 1349, 1374, 1357, 1375, 1378, 1379, 1380, + 1381, 1394, 1395, 1387, 1396, 1397, 1398, 1389, + 1399, 1391, 1400, 1382, 1383, 1393, 1394, 1402, + 1387, 1403, 1404, 1405, 1406, 1431, 1414, 1432, + 1382, 1383, 1385, 1384, 1384, 1385, 1386, 1387, + 1389, 1391, 1385, 1388, 2303, 540, 539, 573, + 248, 574, 575, 576, 534, 577, 536, 249, + 578, 1390, 1390, 1385, 1392, 1392, 1385, 1394, + 1381, 1394, 1395, 1387, 1396, 1397, 1398, 1389, + 1399, 1391, 1400, 1381, 1394, 1395, 1387, 1396, + 1397, 1398, 1389, 1399, 1391, 1400, 1381, 1394, + 1395, 1387, 1396, 1397, 1401, 1389, 1399, 1391, + 1400, 1381, 1394, 1395, 1387, 1396, 1397, 1398, + 1389, 1399, 1391, 1400, 1381, 1394, 1395, 1387, + 1396, 1397, 1398, 1389, 1399, 1391, 1400, 1381, + 1394, 1395, 1387, 1396, 1397, 1398, 1389, 1399, + 1391, 1400, 1381, 1394, 1395, 1387, 1396, 1397, + 1398, 1389, 1399, 1391, 1400, 1381, 1394, 1395, + 1387, 1396, 1397, 1398, 1389, 1399, 1391, 1400, + 1393, 1394, 1402, 1403, 1404, 1405, 1406, 1431, + 1414, 1432, 1393, 1394, 1402, 1403, 1404, 1433, + 1406, 1431, 1414, 1432, 1393, 1394, 1402, 1403, + 1404, 1405, 1406, 1431, 1414, 1432, 1393, 1394, + 1402, 1403, 1404, 1405, 1406, 1431, 1414, 1432, + 1407, 1408, 1410, 1407, 1408, 1410, 1412, 1409, + 1423, 1409, 1410, 1423, 1411, 1429, 1430, 1408, + 1410, 1412, 1413, 1406, 1414, 1415, 1416, 1418, + 1415, 1416, 1418, 1412, 1417, 1423, 1417, 1418, + 1423, 1419, 1420, 1422, 1416, 1418, 1412, 1421, + 1410, 1421, 1418, 1410, 1424, 1427, 1428, 1425, + 1426, 1425, 1426, 1385, 1410, 1418, 1418, 1393, + 1394, 1402, 1403, 1404, 1405, 1406, 1431, 1414, + 1432, 1393, 1394, 1402, 1403, 1404, 1405, 1406, + 1431, 1414, 1432, 1393, 1394, 1402, 1403, 1404, + 1405, 1406, 1431, 1414, 1432, 2307, 1435, 1442, + 1436, 1437, 1438, 1439, 1440, 1441, 1443, 1444, + 2309, 2310, 1446, 1456, 1451, 1445, 1452, 1474, + 1475, 1477, 1479, 1454, 1447, 1448, 1457, 1472, + 1450, 1449, 2310, 1453, 1455, 1458, 1459, 1461, + 1471, 1460, 1468, 1462, 1463, 1464, 1465, 1473, + 1466, 1467, 1469, 1470, 1476, 1478, 1481, 1480, + 1482, 1483, 1484, 1485, 1488, 1489, 1490, 1491, + 1492, 1493, 1494, 2313, 1497, 1498, 1499, 1500, + 1501, 1502, 2315, 2317, 1504, 1505, 1506, 1507, + 1508, 1509, 1510, 1511, 1512, 2319, 2320, 1514, + 1524, 1519, 1513, 1520, 1542, 1543, 1545, 1547, + 1522, 1515, 1516, 1525, 1540, 1518, 1517, 2320, + 1521, 1523, 1526, 1527, 1529, 1539, 1528, 1536, + 1530, 1531, 1532, 1533, 1541, 1534, 1535, 1537, + 1538, 1544, 1546, 1549, 1548, 1550, 1551, 1552, + 1553, 1556, 1557, 1558, 1559, 1560, 1561, 1562, + 2323, 1564, 1565, 1566, 1567, 1569, 1582, 1590, + 1594, 1577, 1586, 1597, 1602, 1604, 1606, 1613, + 1617, 1572, 1620, 1581, 1633, 1568, 2325, 1570, + 1573, 1578, 1571, 1574, 1575, 1576, 1579, 1580, + 1583, 1588, 1589, 1584, 1585, 1587, 1591, 1593, + 1592, 1595, 1596, 1598, 1601, 1599, 1600, 1603, + 1605, 1607, 1608, 1609, 1610, 1611, 1612, 1614, + 1615, 1616, 1618, 1619, 1621, 1622, 1625, 1627, + 1628, 1632, 1623, 1624, 1626, 1629, 1630, 1631, + 2329, 1635, 1645, 1640, 1634, 1641, 1663, 1664, + 1666, 1668, 1643, 1636, 1637, 1646, 1661, 1639, + 1638, 2329, 1642, 1644, 1647, 1648, 1650, 1660, + 1649, 1657, 1651, 1652, 1653, 1654, 1662, 1655, + 1656, 1658, 1659, 1665, 1667, 1670, 1669, 1671, + 1672, 1673, 1674, 1677, 1678, 1679, 1680, 1681, + 1682, 1683, 2332, 1685, 1686, 1687, 1688, 1690, + 1703, 1711, 1715, 1698, 1707, 1718, 1723, 1725, + 1727, 1734, 1738, 1693, 1741, 1702, 1754, 1689, + 2332, 1691, 1694, 1699, 1692, 1695, 1696, 1697, + 1700, 1701, 1704, 1709, 1710, 1705, 1706, 1708, + 1712, 1714, 1713, 1716, 1717, 1719, 1722, 1720, + 1721, 1724, 1726, 1728, 1729, 1730, 1731, 1732, + 1733, 1735, 1736, 1737, 1739, 1740, 1742, 1743, + 1746, 1748, 1749, 1753, 1744, 1745, 1747, 1750, + 1751, 1752, 2332, 1756, 1766, 1761, 1755, 1762, + 1784, 1785, 1787, 1789, 1764, 1757, 1758, 1767, + 1782, 1760, 1759, 2332, 1763, 1765, 1768, 1769, + 1771, 1781, 1770, 1778, 1772, 1773, 1774, 1775, + 1783, 1776, 1777, 1779, 1780, 1786, 1788, 1791, + 1790, 1792, 1793, 1794, 1795, 1798, 1799, 1800, + 1801, 1802, 1803, 1804, 2335, 1806, 1807, 1808, + 1809, 1811, 1824, 1832, 1836, 1819, 1828, 1839, + 1844, 1846, 1848, 1855, 1859, 1814, 1862, 1823, + 1875, 1810, 2335, 1812, 1815, 1820, 1813, 1816, + 1817, 1818, 1821, 1822, 1825, 1830, 1831, 1826, + 1827, 1829, 1833, 1835, 1834, 1837, 1838, 1840, + 1843, 1841, 1842, 1845, 1847, 1849, 1850, 1851, + 1852, 1853, 1854, 1856, 1857, 1858, 1860, 1861, + 1863, 1864, 1867, 1869, 1870, 1874, 1865, 1866, + 1868, 1871, 1872, 1873, 2335, 1877, 1887, 1882, + 1876, 1883, 1905, 1906, 1908, 1910, 1885, 1878, + 1879, 1888, 1903, 1881, 1880, 2335, 1884, 1886, + 1889, 1890, 1892, 1902, 1891, 1899, 1893, 1894, + 1895, 1896, 1904, 1897, 1898, 1900, 1901, 1907, + 1909, 1912, 1911, 1913, 1914, 1915, 1916, 1919, + 1920, 1921, 1922, 1923, 1924, 1925, 2338, 1927, + 1928, 1939, 1979, 1940, 1980, 1941, 1942, 1943, + 1934, 1944, 1981, 1936, 1945, 1929, 2338, 1930, + 1938, 1939, 1947, 1948, 1949, 1950, 1951, 1976, + 1959, 1977, 1929, 1930, 1932, 1931, 1931, 1932, + 2338, 1933, 1934, 1936, 1932, 1935, 1935, 1932, + 1937, 1937, 1932, 1939, 2338, 1928, 1939, 1940, + 1941, 1942, 1943, 1934, 1944, 1936, 1945, 2338, + 1928, 1939, 1940, 1941, 1942, 1943, 1934, 1944, + 1936, 1945, 2338, 1928, 1939, 1940, 1941, 1942, + 1946, 1934, 1944, 1936, 1945, 2338, 1928, 1939, + 1940, 1941, 1942, 1943, 1934, 1944, 1936, 1945, + 2338, 1928, 1939, 1940, 1941, 1942, 1943, 1934, + 1944, 1936, 1945, 2338, 1928, 1939, 1940, 1941, + 1942, 1943, 1934, 1944, 1936, 1945, 2338, 1928, + 1939, 1940, 1941, 1942, 1943, 1934, 1944, 1936, + 1945, 2338, 1928, 1939, 1940, 1941, 1942, 1943, + 1934, 1944, 1936, 1945, 1938, 1939, 1947, 1948, + 1949, 1950, 1951, 1976, 1959, 1977, 1938, 1939, + 1947, 1948, 1949, 1978, 1951, 1976, 1959, 1977, + 1938, 1939, 1947, 1948, 1949, 1950, 1951, 1976, + 1959, 1977, 1938, 1939, 1947, 1948, 1949, 1950, + 1951, 1976, 1959, 1977, 1952, 1953, 1955, 1952, + 1953, 1955, 1957, 1954, 1968, 1954, 1955, 1968, + 1956, 1974, 1975, 1953, 1955, 1957, 1958, 1951, + 1959, 1960, 1961, 1963, 1960, 1961, 1963, 1957, + 1962, 1968, 1962, 1963, 1968, 1964, 1965, 1967, + 1961, 1963, 1957, 1966, 1955, 1966, 1963, 1955, + 1969, 1972, 1973, 1970, 1971, 1970, 1971, 1932, + 1955, 1963, 1963, 1938, 1939, 1947, 1948, 1949, + 1950, 1951, 1976, 1959, 1977, 1938, 1939, 1947, + 1948, 1949, 1950, 1951, 1976, 1959, 1977, 1938, + 1939, 1947, 1948, 1949, 1950, 1951, 1976, 1959, + 1977, 2338, 1927, 1928, 1939, 1979, 1940, 1980, + 1941, 1942, 1943, 1934, 1944, 1981, 1936, 1945, + 2338, 1928, 1939, 1940, 1980, 1941, 1942, 1943, + 1934, 1944, 1936, 1945, 2338, 1928, 1939, 1940, + 1941, 1942, 1943, 1934, 1944, 1936, 1945, 2341, + 2344, 1982, 1983, 1994, 2034, 1995, 2035, 1996, + 1997, 1998, 1989, 1999, 2036, 1991, 2000, 1984, + 2344, 1985, 1993, 1994, 2002, 2003, 2004, 2005, + 2006, 2031, 2014, 2032, 1984, 1985, 1987, 1986, + 1986, 1987, 2344, 1988, 1989, 1991, 1987, 1990, + 1990, 1987, 1992, 1992, 1987, 1994, 2344, 1983, + 1994, 1995, 1996, 1997, 1998, 1989, 1999, 1991, + 2000, 2344, 1983, 1994, 1995, 1996, 1997, 1998, + 1989, 1999, 1991, 2000, 2344, 1983, 1994, 1995, + 1996, 1997, 2001, 1989, 1999, 1991, 2000, 2344, + 1983, 1994, 1995, 1996, 1997, 1998, 1989, 1999, + 1991, 2000, 2344, 1983, 1994, 1995, 1996, 1997, + 1998, 1989, 1999, 1991, 2000, 2344, 1983, 1994, + 1995, 1996, 1997, 1998, 1989, 1999, 1991, 2000, + 2344, 1983, 1994, 1995, 1996, 1997, 1998, 1989, + 1999, 1991, 2000, 2344, 1983, 1994, 1995, 1996, + 1997, 1998, 1989, 1999, 1991, 2000, 1993, 1994, + 2002, 2003, 2004, 2005, 2006, 2031, 2014, 2032, + 1993, 1994, 2002, 2003, 2004, 2033, 2006, 2031, + 2014, 2032, 1993, 1994, 2002, 2003, 2004, 2005, + 2006, 2031, 2014, 2032, 1993, 1994, 2002, 2003, + 2004, 2005, 2006, 2031, 2014, 2032, 2007, 2008, + 2010, 2007, 2008, 2010, 2012, 2009, 2023, 2009, + 2010, 2023, 2011, 2029, 2030, 2008, 2010, 2012, + 2013, 2006, 2014, 2015, 2016, 2018, 2015, 2016, + 2018, 2012, 2017, 2023, 2017, 2018, 2023, 2019, + 2020, 2022, 2016, 2018, 2012, 2021, 2010, 2021, + 2018, 2010, 2024, 2027, 2028, 2025, 2026, 2025, + 2026, 1987, 2010, 2018, 2018, 1993, 1994, 2002, + 2003, 2004, 2005, 2006, 2031, 2014, 2032, 1993, + 1994, 2002, 2003, 2004, 2005, 2006, 2031, 2014, + 2032, 1993, 1994, 2002, 2003, 2004, 2005, 2006, + 2031, 2014, 2032, 2344, 1982, 1983, 1994, 2034, + 1995, 2035, 1996, 1997, 1998, 1989, 1999, 2036, + 1991, 2000, 2344, 1983, 1994, 1995, 2035, 1996, + 1997, 1998, 1989, 1999, 1991, 2000, 2344, 1983, + 1994, 1995, 1996, 1997, 1998, 1989, 1999, 1991, + 2000, 2345, 2348, 2345, 2039, 2039, 2040, 2345, + 2038, 2041, 2042, 2042, 2043, 2042, 2056, 2057, + 2060, 2062, 2065, 2066, 2067, 2069, 2070, 2106, + 2107, 2108, 2110, 2112, 2292, 2293, 2296, 2298, + 2300, 2302, 2304, 2305, 2306, 2042, 2042, 2042, + 2048, 2042, 2048, 2051, 2051, 2053, 2053, 2055, + 2044, 2055, 2044, 2042, 2056, 2058, 2059, 2042, + 2042, 2042, 2042, 250, 253, 422, 452, 453, + 430, 529, 454, 455, 456, 443, 531, 457, + 533, 447, 458, 262, 265, 295, 296, 273, + 372, 297, 298, 299, 286, 374, 300, 376, + 290, 301, 2042, 585, 594, 674, 2042, 2042, + 2083, 2083, 2089, 2089, 2091, 2091, 2093, 2073, + 598, 599, 2093, 2073, 598, 599, 2042, 6, + 2044, 85, 73, 88, 2045, 100, 103, 2046, + 2042, 2048, 98, 99, 84, 114, 2049, 2051, + 2053, 2055, 2044, 2042, 795, 2042, 1087, 842, + 2042, 846, 2116, 844, 2115, 844, 2115, 846, + 2117, 2116, 2117, 2118, 245, 1080, 2288, 245, + 1080, 2274, 2288, 859, 2267, 2266, 248, 2123, + 2124, 250, 892, 2146, 2148, 2149, 2150, 2245, + 2247, 2155, 2250, 2151, 2248, 2251, 2156, 2249, + 250, 251, 892, 2151, 2145, 866, 871, 897, + 898, 899, 1043, 896, 900, 901, 902, 1045, + 867, 1047, 1052, 1048, 1049, 426, 438, 439, + 881, 2142, 2141, 884, 2128, 2136, 2132, 886, + 2201, 2205, 2130, 2206, 886, 2131, 2130, 2132, + 2131, 2042, 2129, 250, 253, 2124, 886, 2133, + 2253, 2149, 2150, 2254, 2205, 2260, 2130, 2255, + 2251, 2206, 2256, 2134, 424, 423, 435, 2135, + 995, 2252, 2253, 2257, 2214, 2202, 2258, 2215, + 2259, 424, 423, 435, 2135, 995, 2128, 2202, + 426, 438, 439, 884, 2136, 2128, 2137, 2136, + 2137, 2138, 2140, 894, 2142, 2144, 881, 2141, + 2142, 2141, 2145, 2143, 2155, 2156, 2140, 894, + 2142, 2144, 2140, 2142, 2144, 892, 2146, 2148, + 2245, 2247, 2155, 2250, 2151, 2248, 2156, 2249, + 2147, 2148, 2241, 2180, 2242, 2181, 2243, 2148, + 2146, 2148, 2247, 2155, 2248, 2156, 2249, 2146, + 2148, 2149, 2150, 2247, 2155, 2248, 2156, 2249, + 250, 430, 892, 2151, 2151, 868, 869, 906, + 910, 911, 912, 1050, 928, 929, 930, 432, + 444, 445, 914, 2154, 2143, 2155, 2156, 432, + 444, 445, 914, 434, 448, 449, 924, 2162, + 434, 448, 449, 924, 2162, 2142, 921, 2159, + 2128, 921, 2160, 2159, 2128, 2160, 2161, 2162, + 2142, 2147, 2148, 2163, 2241, 2180, 2242, 2181, + 2243, 2164, 468, 494, 495, 949, 2176, 2173, + 485, 518, 519, 2168, 957, 2142, 2169, 2168, + 957, 2142, 2169, 2170, 466, 465, 491, 2172, + 969, 2176, 2178, 468, 494, 495, 949, 2173, + 2174, 2175, 2229, 485, 518, 519, 2168, 2169, + 2176, 2177, 2239, 2240, 466, 465, 491, 2172, + 969, 2176, 2178, 2179, 2180, 2181, 2172, 2176, + 475, 502, 503, 2223, 1017, 2225, 2230, 475, + 502, 503, 2223, 1017, 2225, 2230, 2231, 477, + 506, 507, 980, 2225, 2224, 2228, 983, 2185, + 2189, 2191, 2186, 2236, 2237, 2187, 2188, 999, + 2185, 2216, 2218, 2188, 999, 2185, 2216, 2218, + 477, 506, 507, 983, 2189, 2191, 2185, 2190, + 2189, 2191, 2190, 2192, 2196, 2211, 2193, 2166, + 989, 2194, 2166, 989, 2128, 2194, 2128, 2195, + 2194, 2195, 2197, 991, 2198, 991, 2198, 2210, + 993, 2207, 2232, 2200, 2233, 2201, 2205, 2206, + 2128, 2128, 2203, 2202, 2203, 2204, 2199, 993, + 2159, 2208, 2209, 997, 2198, 2212, 2209, 997, + 2198, 2212, 2210, 2192, 2196, 2211, 2213, 2214, + 2215, 2209, 2198, 2185, 2217, 2216, 2218, 2217, + 2213, 2214, 2215, 2219, 481, 512, 513, 1015, + 2221, 2176, 2222, 2226, 2227, 2223, 2225, 2231, + 980, 2224, 2228, 2225, 2224, 2228, 2222, 2226, + 2227, 481, 512, 513, 1015, 2176, 2174, 2175, + 2229, 2230, 2231, 2179, 2180, 2181, 2234, 1021, + 2235, 1021, 2235, 2198, 2186, 2236, 2237, 2198, + 2238, 2221, 2147, 2148, 2241, 2180, 2242, 2181, + 2243, 2147, 2148, 2241, 2180, 2242, 2181, 2243, + 2147, 2148, 2241, 2180, 2242, 2181, 2243, 2146, + 2148, 2149, 2150, 2245, 2244, 2247, 2155, 2250, + 2248, 2156, 2249, 2246, 2146, 2148, 2149, 2150, + 2245, 2246, 2247, 2155, 2250, 2248, 2156, 2249, + 2146, 2148, 2247, 2155, 2248, 2156, 2249, 2146, + 2148, 2247, 2155, 2248, 2156, 2249, 2146, 2148, + 2247, 2155, 2248, 2156, 2249, 2146, 2148, 2149, + 2150, 2245, 2247, 2155, 2250, 2248, 2156, 2249, + 2253, 2133, 2253, 2254, 2205, 2255, 2206, 2256, + 2133, 2253, 2254, 2205, 2255, 2206, 2256, 2133, + 2253, 2254, 2205, 2255, 2206, 2256, 2133, 2253, + 2254, 2205, 2255, 2206, 2256, 2252, 2253, 2257, + 2214, 2258, 2215, 2259, 2252, 2253, 2257, 2214, + 2258, 2215, 2259, 2252, 2253, 2257, 2214, 2258, + 2215, 2259, 535, 1055, 2262, 2263, 2268, 2269, + 243, 2265, 1074, 2267, 2286, 243, 2265, 1074, + 2267, 2286, 859, 2266, 2267, 2266, 2263, 2268, + 2269, 535, 1055, 537, 1072, 2285, 537, 1072, + 2285, 2267, 1062, 2272, 2274, 1062, 2273, 2272, + 2274, 2273, 2275, 2280, 2283, 2276, 2119, 1064, + 2274, 2277, 2119, 1064, 2274, 2277, 2274, 2278, + 2277, 2278, 2279, 2281, 1069, 1069, 2282, 2275, + 2280, 2283, 2272, 2284, 2285, 2267, 2265, 2267, + 2286, 2287, 2274, 2289, 2288, 2289, 839, 535, + 840, 839, 535, 840, 1088, 1142, 2042, 2042, + 1208, 2042, 1261, 2042, 1322, 2042, 1377, 1388, + 2307, 0, 2308, 2307, 1434, 2307, 2307, 2310, + 2310, 2311, 2310, 2312, 2310, 1445, 1486, 1475, + 1487, 1495, 2313, 2313, 2314, 2313, 1496, 2313, + 2313, 2316, 2316, 2317, 2318, 2317, 1503, 2317, + 2317, 2320, 2320, 2321, 2320, 2322, 2320, 1513, + 1554, 1543, 1555, 1563, 2323, 2324, 2328, 2323, + 2323, 2326, 2327, 2323, 2326, 2327, 2329, 2329, + 2330, 2329, 2331, 2329, 1634, 1675, 1664, 1676, + 1684, 2332, 2332, 2333, 2332, 2334, 2332, 1755, + 1796, 1785, 1797, 1805, 2335, 2335, 2336, 2335, + 2337, 1927, 1979, 2335, 1876, 1917, 1906, 1918, + 1926, 2335, 2339, 2339, 2340, 2339, 2340, 2341, + 2341, 2342, 2341, 2343, 1982, 2034, 2341, 2341, + 2345, 2345, 2346, 2349, 2345, 2347, 2037, 2345, + 2345, 2350, 2345 +}; + +static const short _redcloth_scan_trans_actions[] = { + 259, 0, 402, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 462, 0, 0, 0, + 0, 459, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 462, 0, 0, 0, + 0, 0, 462, 0, 0, 459, 0, 0, + 0, 0, 0, 0, 0, 459, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 257, 61, 61, 387, + 387, 61, 61, 387, 61, 61, 61, 61, + 61, 61, 61, 61, 1, 13, 0, 300, + 300, 300, 300, 300, 300, 300, 300, 300, + 300, 0, 23, 23, 1, 0, 25, 0, + 0, 0, 0, 0, 1, 0, 27, 1, + 0, 29, 506, 15, 303, 303, 15, 15, + 15, 15, 15, 15, 15, 15, 17, 306, + 306, 17, 17, 17, 17, 17, 17, 17, + 17, 7, 288, 288, 7, 7, 7, 7, + 7, 7, 7, 7, 11, 297, 297, 11, + 11, 11, 11, 11, 11, 11, 11, 9, + 291, 291, 9, 9, 9, 9, 9, 9, + 9, 9, 19, 309, 309, 19, 19, 19, + 19, 19, 19, 19, 19, 21, 312, 312, + 21, 21, 21, 21, 21, 21, 21, 21, + 294, 498, 498, 294, 294, 294, 294, 294, + 294, 294, 294, 306, 510, 17, 17, 17, + 17, 17, 17, 17, 17, 288, 490, 7, + 7, 7, 7, 7, 7, 7, 7, 297, + 502, 11, 11, 11, 11, 11, 11, 11, + 11, 291, 494, 9, 9, 9, 9, 9, + 9, 9, 9, 1, 315, 315, 0, 23, + 23, 27, 1, 264, 0, 25, 27, 0, + 0, 0, 0, 0, 264, 0, 0, 0, + 1, 315, 315, 0, 23, 23, 29, 1, + 267, 0, 25, 29, 0, 0, 0, 0, + 0, 267, 1, 327, 0, 27, 29, 0, + 0, 0, 1, 0, 0, 23, 318, 321, + 321, 264, 309, 514, 19, 19, 19, 19, + 19, 19, 19, 19, 312, 518, 21, 21, + 21, 21, 21, 21, 21, 21, 498, 655, + 294, 294, 294, 294, 294, 294, 294, 294, + 59, 59, 384, 384, 59, 59, 384, 59, + 59, 59, 59, 59, 59, 59, 59, 39, + 342, 342, 39, 0, 39, 39, 39, 39, + 39, 39, 39, 37, 339, 339, 37, 37, + 37, 37, 37, 37, 37, 37, 0, 23, + 23, 1, 0, 25, 0, 0, 0, 0, + 1, 0, 0, 0, 538, 538, 538, 538, + 538, 538, 538, 538, 538, 538, 538, 538, + 538, 538, 538, 0, 0, 705, 0, 253, + 285, 285, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 1, 0, 300, 300, + 300, 13, 300, 300, 300, 300, 300, 300, + 300, 0, 23, 23, 1, 0, 25, 0, + 0, 0, 0, 0, 0, 538, 538, 538, + 538, 538, 538, 538, 538, 538, 538, 538, + 538, 538, 538, 538, 0, 0, 574, 0, + 1, 1, 1, 0, 300, 300, 300, 13, + 300, 300, 300, 300, 300, 300, 300, 0, + 0, 0, 23, 23, 23, 23, 1, 0, + 25, 0, 0, 0, 0, 0, 0, 1, + 1, 1, 0, 27, 1, 0, 29, 0, + 1, 1, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 1, 1, 0, 0, 27, + 0, 1, 1, 0, 0, 29, 0, 506, + 303, 303, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 306, 306, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 288, 288, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 297, 297, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 291, 291, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 309, + 309, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 312, 312, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 498, 498, 294, + 294, 294, 294, 294, 294, 294, 294, 294, + 306, 510, 17, 17, 17, 17, 17, 17, + 17, 17, 288, 490, 7, 7, 7, 7, + 7, 7, 7, 7, 297, 502, 11, 11, + 11, 11, 11, 11, 11, 11, 291, 494, + 9, 9, 9, 9, 9, 9, 9, 9, + 1, 1, 1, 315, 315, 0, 0, 0, + 23, 23, 27, 23, 23, 27, 1, 264, + 0, 25, 27, 0, 0, 0, 0, 0, + 264, 0, 0, 0, 315, 315, 1, 315, + 315, 0, 23, 23, 29, 1, 267, 0, + 25, 29, 0, 0, 0, 0, 0, 267, + 1, 327, 0, 27, 29, 0, 0, 0, + 1, 0, 0, 23, 318, 321, 321, 264, + 0, 1, 1, 264, 0, 0, 25, 27, + 0, 0, 0, 0, 0, 0, 264, 0, + 0, 0, 1, 1, 315, 315, 0, 0, + 23, 23, 29, 0, 1, 1, 267, 0, + 0, 25, 29, 0, 0, 0, 0, 0, + 0, 267, 1, 1, 327, 0, 0, 27, + 29, 0, 0, 0, 0, 1, 1, 0, + 0, 0, 23, 318, 0, 321, 321, 264, + 309, 514, 19, 19, 19, 19, 19, 19, + 19, 19, 312, 518, 21, 21, 21, 21, + 21, 21, 21, 21, 498, 655, 294, 294, + 294, 294, 294, 294, 294, 294, 1, 333, + 333, 33, 33, 33, 0, 33, 33, 33, + 33, 33, 33, 33, 33, 1, 330, 330, + 31, 31, 31, 0, 31, 31, 31, 31, + 31, 31, 31, 31, 336, 336, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 1, 0, 27, 1, 0, 29, 506, + 303, 303, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 306, 306, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 288, 288, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 297, 297, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 291, 291, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 309, + 309, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 312, 312, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 498, 498, 294, + 294, 294, 294, 294, 294, 294, 294, 294, + 306, 510, 17, 17, 17, 17, 17, 17, + 17, 17, 288, 490, 7, 7, 7, 7, + 7, 7, 7, 7, 297, 502, 11, 11, + 11, 11, 11, 11, 11, 11, 291, 494, + 9, 9, 9, 9, 9, 9, 9, 9, + 1, 315, 315, 0, 23, 23, 27, 1, + 264, 0, 25, 27, 0, 0, 0, 0, + 0, 264, 0, 0, 0, 1, 315, 315, + 0, 23, 23, 29, 1, 267, 0, 25, + 29, 0, 0, 0, 0, 0, 267, 1, + 327, 0, 27, 29, 0, 0, 0, 1, + 0, 0, 23, 318, 321, 321, 264, 309, + 514, 19, 19, 19, 19, 19, 19, 19, + 19, 312, 518, 21, 21, 21, 21, 21, + 21, 21, 21, 498, 655, 294, 294, 294, + 294, 294, 294, 294, 294, 1, 1, 1, + 0, 300, 300, 300, 13, 300, 300, 300, + 300, 300, 300, 300, 0, 0, 0, 23, + 23, 23, 23, 1, 0, 25, 0, 0, + 0, 0, 0, 0, 1, 1, 1, 0, + 27, 1, 0, 29, 0, 1, 1, 0, + 0, 25, 0, 0, 0, 0, 0, 0, + 1, 1, 0, 0, 27, 0, 1, 1, + 0, 0, 29, 0, 506, 303, 303, 15, + 15, 15, 15, 15, 15, 15, 15, 15, + 306, 306, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 288, 288, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 297, 297, + 11, 11, 11, 11, 11, 11, 11, 11, + 11, 291, 291, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 309, 309, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 312, + 312, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 498, 498, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 306, 510, 17, + 17, 17, 17, 17, 17, 17, 17, 288, + 490, 7, 7, 7, 7, 7, 7, 7, + 7, 297, 502, 11, 11, 11, 11, 11, + 11, 11, 11, 291, 494, 9, 9, 9, + 9, 9, 9, 9, 9, 1, 1, 1, + 315, 315, 0, 0, 0, 23, 23, 27, + 23, 23, 27, 1, 264, 0, 25, 27, + 0, 0, 0, 0, 0, 264, 0, 0, + 0, 315, 315, 1, 315, 315, 0, 23, + 23, 29, 1, 267, 0, 25, 29, 0, + 0, 0, 0, 0, 267, 1, 327, 0, + 27, 29, 0, 0, 0, 1, 0, 0, + 23, 318, 321, 321, 264, 0, 1, 1, + 264, 0, 0, 25, 27, 0, 0, 0, + 0, 0, 0, 264, 0, 0, 0, 1, + 1, 315, 315, 0, 0, 23, 23, 29, + 0, 1, 1, 267, 0, 0, 25, 29, + 0, 0, 0, 0, 0, 0, 267, 1, + 1, 327, 0, 0, 27, 29, 0, 0, + 0, 0, 1, 1, 0, 0, 0, 23, + 318, 0, 321, 321, 264, 309, 514, 19, + 19, 19, 19, 19, 19, 19, 19, 312, + 518, 21, 21, 21, 21, 21, 21, 21, + 21, 498, 655, 294, 294, 294, 294, 294, + 294, 294, 294, 1, 333, 333, 33, 33, + 33, 0, 33, 33, 33, 33, 33, 33, + 33, 33, 1, 330, 330, 31, 31, 31, + 0, 31, 31, 31, 31, 31, 31, 31, + 31, 336, 336, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 1, 0, + 27, 1, 0, 29, 300, 506, 300, 13, + 300, 300, 300, 300, 300, 300, 300, 303, + 303, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 300, 306, 510, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 288, 490, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 297, 502, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 291, 494, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 1, + 315, 315, 0, 23, 23, 27, 1, 264, + 0, 25, 27, 0, 0, 0, 0, 0, + 264, 0, 0, 0, 1, 315, 315, 0, + 23, 23, 29, 1, 267, 0, 25, 29, + 0, 0, 0, 0, 0, 267, 1, 327, + 0, 27, 29, 0, 0, 0, 1, 0, + 0, 23, 318, 321, 321, 264, 309, 514, + 19, 19, 19, 19, 19, 19, 19, 19, + 19, 312, 518, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 498, 655, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 306, + 306, 17, 17, 17, 17, 17, 17, 17, + 17, 288, 288, 7, 7, 7, 7, 7, + 7, 7, 7, 297, 297, 11, 11, 11, + 11, 11, 11, 11, 11, 291, 291, 9, + 9, 9, 9, 9, 9, 9, 9, 309, + 309, 19, 19, 19, 19, 19, 19, 19, + 19, 312, 312, 21, 21, 21, 21, 21, + 21, 21, 21, 498, 498, 294, 294, 294, + 294, 294, 294, 294, 294, 0, 0, 0, + 0, 0, 468, 0, 0, 0, 0, 0, + 0, 0, 0, 215, 0, 0, 0, 0, + 456, 0, 0, 0, 0, 0, 0, 217, + 0, 0, 456, 0, 0, 456, 251, 0, + 459, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 456, 0, + 0, 456, 0, 0, 0, 0, 0, 0, + 456, 0, 456, 0, 459, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 456, + 0, 0, 0, 456, 0, 0, 456, 456, + 0, 0, 0, 0, 0, 0, 456, 0, + 456, 0, 459, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 456, 0, + 456, 0, 459, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 453, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 453, 0, 0, 453, 0, + 453, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 453, 0, 0, 0, 453, + 0, 0, 453, 453, 0, 453, 0, 0, + 0, 0, 0, 0, 453, 0, 0, 0, + 0, 0, 1, 0, 300, 300, 300, 13, + 300, 300, 300, 300, 300, 300, 300, 0, + 23, 23, 1, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 41, 1, 0, 27, + 1, 0, 29, 506, 303, 303, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 306, + 306, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 288, 288, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 297, 297, 11, + 11, 11, 11, 11, 11, 11, 11, 11, + 291, 291, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 309, 309, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 312, 312, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 498, 498, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 306, 510, 17, 17, + 17, 17, 17, 17, 17, 17, 288, 490, + 7, 7, 7, 7, 7, 7, 7, 7, + 297, 502, 11, 11, 11, 11, 11, 11, + 11, 11, 291, 494, 9, 9, 9, 9, + 9, 9, 9, 9, 1, 315, 315, 0, + 23, 23, 27, 1, 264, 0, 25, 27, + 0, 0, 0, 0, 0, 264, 0, 0, + 0, 1, 315, 315, 0, 23, 23, 29, + 1, 267, 0, 25, 29, 0, 0, 0, + 0, 0, 267, 1, 327, 0, 27, 29, + 0, 0, 0, 1, 0, 0, 23, 318, + 321, 321, 264, 309, 514, 19, 19, 19, + 19, 19, 19, 19, 19, 312, 518, 21, + 21, 21, 21, 21, 21, 21, 21, 498, + 655, 294, 294, 294, 294, 294, 294, 294, + 294, 357, 357, 53, 53, 0, 53, 53, + 53, 53, 53, 0, 0, 0, 0, 53, + 53, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 77, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 219, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 324, + 1, 0, 558, 558, 1, 1, 1, 558, + 558, 1, 273, 1, 0, 471, 0, 3, + 255, 0, 0, 471, 0, 0, 1, 1, + 0, 558, 1, 0, 261, 0, 0, 23, + 471, 0, 23, 3, 23, 23, 1, 261, + 0, 25, 3, 0, 0, 0, 0, 0, + 0, 745, 315, 1, 558, 273, 0, 471, + 1, 558, 558, 1, 321, 1, 558, 273, + 0, 0, 25, 0, 0, 471, 0, 0, + 0, 3, 705, 1, 558, 558, 1, 1, + 558, 273, 808, 0, 471, 0, 705, 0, + 1, 0, 300, 300, 300, 13, 300, 300, + 300, 300, 261, 300, 300, 300, 0, 23, + 23, 3, 1, 261, 0, 25, 3, 0, + 0, 0, 0, 0, 1, 745, 558, 1, + 315, 1, 558, 273, 0, 23, 471, 0, + 23, 1, 558, 1, 0, 471, 0, 25, + 0, 558, 321, 1, 558, 273, 0, 471, + 0, 471, 0, 0, 471, 0, 0, 0, + 0, 0, 0, 288, 288, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 303, 303, + 15, 15, 15, 15, 15, 15, 15, 15, + 15, 306, 306, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 1, 261, 297, 297, + 11, 11, 11, 11, 11, 11, 11, 11, + 11, 291, 291, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 1, 0, 324, 1, + 558, 1, 1, 0, 300, 300, 720, 594, + 300, 300, 300, 300, 300, 0, 506, 303, + 303, 598, 598, 15, 15, 15, 15, 15, + 297, 297, 590, 590, 11, 11, 11, 11, + 11, 1, 558, 1, 0, 471, 0, 0, + 0, 3, 29, 1, 558, 558, 1, 1, + 558, 273, 327, 0, 471, 0, 29, 0, + 0, 471, 0, 0, 0, 309, 309, 606, + 606, 19, 19, 19, 19, 19, 19, 19, + 1, 261, 312, 312, 610, 610, 21, 21, + 21, 21, 21, 21, 21, 288, 490, 7, + 7, 7, 7, 7, 7, 7, 7, 506, + 306, 510, 17, 17, 17, 17, 17, 17, + 17, 17, 297, 502, 11, 11, 11, 11, + 11, 11, 11, 11, 291, 494, 9, 9, + 9, 9, 9, 9, 9, 9, 1, 315, + 315, 0, 23, 23, 324, 1, 474, 0, + 25, 324, 0, 0, 0, 0, 0, 474, + 1, 1, 1, 0, 1, 315, 558, 1, + 315, 0, 23, 471, 0, 23, 1, 558, + 1, 0, 471, 0, 25, 0, 1, 1, + 1, 1, 1, 0, 558, 1, 261, 0, + 0, 23, 471, 0, 318, 3, 23, 318, + 745, 522, 1, 558, 273, 0, 0, 0, + 0, 321, 0, 0, 0, 0, 0, 0, + 0, 0, 23, 23, 3, 29, 1, 261, + 267, 0, 25, 3, 29, 0, 0, 0, + 1, 0, 0, 261, 267, 1, 745, 558, + 1, 315, 1, 558, 273, 327, 0, 23, + 471, 0, 23, 29, 1, 558, 1, 267, + 0, 471, 0, 25, 29, 0, 558, 321, + 1, 558, 273, 327, 0, 471, 0, 0, + 0, 0, 321, 321, 0, 471, 0, 471, + 0, 471, 0, 471, 0, 471, 0, 471, + 0, 0, 0, 315, 315, 0, 0, 0, + 0, 0, 0, 267, 0, 0, 0, 315, + 1, 1, 558, 1, 327, 0, 0, 471, + 0, 324, 29, 29, 1, 1, 1, 0, + 0, 0, 0, 471, 0, 0, 0, 0, + 0, 0, 327, 0, 474, 309, 514, 19, + 19, 19, 19, 19, 19, 19, 19, 19, + 312, 518, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 498, 655, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 297, 502, + 590, 11, 11, 11, 11, 11, 309, 514, + 606, 19, 19, 19, 19, 19, 312, 518, + 610, 21, 21, 21, 21, 21, 1, 333, + 333, 33, 33, 33, 0, 33, 33, 33, + 33, 33, 33, 33, 33, 1, 330, 330, + 31, 31, 31, 0, 31, 31, 31, 31, + 31, 31, 31, 31, 309, 309, 19, 19, + 19, 19, 19, 19, 312, 312, 21, 21, + 21, 21, 21, 21, 558, 498, 498, 294, + 294, 294, 294, 294, 294, 294, 294, 336, + 336, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 1, 1, 558, 1, + 0, 471, 0, 0, 0, 3, 29, 1, + 558, 558, 1, 1, 558, 273, 327, 0, + 471, 0, 29, 0, 0, 471, 0, 471, + 0, 0, 471, 0, 0, 0, 0, 1, + 261, 0, 0, 471, 0, 0, 538, 538, + 538, 538, 538, 538, 538, 538, 538, 538, + 538, 675, 538, 538, 538, 538, 638, 638, + 351, 351, 47, 47, 47, 47, 47, 47, + 47, 47, 47, 1, 0, 300, 300, 300, + 13, 300, 300, 300, 300, 300, 300, 300, + 0, 23, 23, 1, 0, 25, 0, 0, + 0, 0, 0, 0, 0, 41, 1, 0, + 27, 1, 0, 29, 506, 303, 303, 15, + 15, 15, 15, 15, 15, 15, 15, 15, + 306, 306, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 288, 288, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 297, 297, + 11, 11, 11, 11, 11, 11, 11, 11, + 11, 291, 291, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 309, 309, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 312, + 312, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 498, 498, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 306, 510, 17, + 17, 17, 17, 17, 17, 17, 17, 288, + 490, 7, 7, 7, 7, 7, 7, 7, + 7, 297, 502, 11, 11, 11, 11, 11, + 11, 11, 11, 291, 494, 9, 9, 9, + 9, 9, 9, 9, 9, 1, 315, 315, + 0, 23, 23, 27, 1, 264, 0, 25, + 27, 0, 0, 0, 0, 0, 264, 0, + 0, 0, 1, 315, 315, 0, 23, 23, + 29, 1, 267, 0, 25, 29, 0, 0, + 0, 0, 0, 267, 1, 327, 0, 27, + 29, 0, 0, 0, 1, 0, 0, 23, + 318, 321, 321, 264, 309, 514, 19, 19, + 19, 19, 19, 19, 19, 19, 312, 518, + 21, 21, 21, 21, 21, 21, 21, 21, + 498, 655, 294, 294, 294, 294, 294, 294, + 294, 294, 354, 354, 49, 49, 49, 49, + 49, 49, 49, 49, 49, 1, 0, 300, + 300, 300, 13, 300, 300, 300, 300, 300, + 300, 300, 0, 23, 23, 1, 0, 25, + 0, 0, 0, 0, 0, 0, 0, 0, + 41, 41, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 51, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 27, 1, + 0, 29, 506, 303, 303, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 306, 306, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 288, 288, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 297, 297, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 291, + 291, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 309, 309, 19, 19, 19, 19, + 19, 19, 19, 19, 19, 312, 312, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 498, 498, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 306, 510, 17, 17, 17, + 17, 17, 17, 17, 17, 288, 490, 7, + 7, 7, 7, 7, 7, 7, 7, 297, + 502, 11, 11, 11, 11, 11, 11, 11, + 11, 291, 494, 9, 9, 9, 9, 9, + 9, 9, 9, 1, 315, 315, 0, 23, + 23, 27, 1, 264, 0, 25, 27, 0, + 0, 0, 0, 0, 264, 0, 0, 0, + 1, 315, 315, 0, 23, 23, 29, 1, + 267, 0, 25, 29, 0, 0, 0, 0, + 0, 267, 1, 327, 0, 27, 29, 0, + 0, 0, 1, 0, 0, 23, 318, 321, + 321, 264, 309, 514, 19, 19, 19, 19, + 19, 19, 19, 19, 312, 518, 21, 21, + 21, 21, 21, 21, 21, 21, 498, 655, + 294, 294, 294, 294, 294, 294, 294, 294, + 378, 381, 381, 57, 57, 0, 57, 57, + 57, 57, 57, 57, 57, 1, 0, 300, + 300, 300, 13, 300, 300, 300, 300, 300, + 300, 300, 0, 23, 23, 1, 0, 25, + 0, 0, 0, 0, 0, 1, 0, 27, + 1, 0, 29, 506, 303, 303, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 306, + 306, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 288, 288, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 297, 297, 11, + 11, 11, 11, 11, 11, 11, 11, 11, + 291, 291, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 309, 309, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 312, 312, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 498, 498, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 306, 510, 17, 17, + 17, 17, 17, 17, 17, 17, 288, 490, + 7, 7, 7, 7, 7, 7, 7, 7, + 297, 502, 11, 11, 11, 11, 11, 11, + 11, 11, 291, 494, 9, 9, 9, 9, + 9, 9, 9, 9, 1, 315, 315, 0, + 23, 23, 27, 1, 264, 0, 25, 27, + 0, 0, 0, 0, 0, 264, 0, 0, + 0, 1, 315, 315, 0, 23, 23, 29, + 1, 267, 0, 25, 29, 0, 0, 0, + 0, 0, 267, 1, 327, 0, 27, 29, + 0, 0, 0, 1, 0, 0, 23, 318, + 321, 321, 264, 309, 514, 19, 19, 19, + 19, 19, 19, 19, 19, 312, 518, 21, + 21, 21, 21, 21, 21, 21, 21, 498, + 655, 294, 294, 294, 294, 294, 294, 294, + 294, 0, 0, 0, 0, 0, 0, 0, + 345, 345, 43, 43, 43, 43, 43, 43, + 43, 43, 43, 1, 0, 300, 300, 300, + 13, 300, 300, 300, 300, 300, 300, 300, + 0, 23, 23, 1, 0, 25, 0, 0, + 0, 0, 0, 0, 0, 41, 1, 0, + 27, 1, 0, 29, 506, 303, 303, 15, + 15, 15, 15, 15, 15, 15, 15, 15, + 306, 306, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 288, 288, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 297, 297, + 11, 11, 11, 11, 11, 11, 11, 11, + 11, 291, 291, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 309, 309, 19, 19, + 19, 19, 19, 19, 19, 19, 19, 312, + 312, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 498, 498, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 306, 510, 17, + 17, 17, 17, 17, 17, 17, 17, 288, + 490, 7, 7, 7, 7, 7, 7, 7, + 7, 297, 502, 11, 11, 11, 11, 11, + 11, 11, 11, 291, 494, 9, 9, 9, + 9, 9, 9, 9, 9, 1, 315, 315, + 0, 23, 23, 27, 1, 264, 0, 25, + 27, 0, 0, 0, 0, 0, 264, 0, + 0, 0, 1, 315, 315, 0, 23, 23, + 29, 1, 267, 0, 25, 29, 0, 0, + 0, 0, 0, 267, 1, 327, 0, 27, + 29, 0, 0, 0, 1, 0, 0, 23, + 318, 321, 321, 264, 309, 514, 19, 19, + 19, 19, 19, 19, 19, 19, 312, 518, + 21, 21, 21, 21, 21, 21, 21, 21, + 498, 655, 294, 294, 294, 294, 294, 294, + 294, 294, 0, 348, 348, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 1, 0, + 300, 300, 300, 13, 300, 300, 300, 300, + 300, 300, 300, 0, 23, 23, 1, 0, + 25, 0, 0, 0, 0, 0, 0, 0, + 41, 1, 0, 27, 1, 0, 29, 506, + 303, 303, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 306, 306, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 288, 288, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 297, 297, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 291, 291, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 309, + 309, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 312, 312, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 498, 498, 294, + 294, 294, 294, 294, 294, 294, 294, 294, + 306, 510, 17, 17, 17, 17, 17, 17, + 17, 17, 288, 490, 7, 7, 7, 7, + 7, 7, 7, 7, 297, 502, 11, 11, + 11, 11, 11, 11, 11, 11, 291, 494, + 9, 9, 9, 9, 9, 9, 9, 9, + 1, 315, 315, 0, 23, 23, 27, 1, + 264, 0, 25, 27, 0, 0, 0, 0, + 0, 264, 0, 0, 0, 1, 315, 315, + 0, 23, 23, 29, 1, 267, 0, 25, + 29, 0, 0, 0, 0, 0, 267, 1, + 327, 0, 27, 29, 0, 0, 0, 1, + 0, 0, 23, 318, 321, 321, 264, 309, + 514, 19, 19, 19, 19, 19, 19, 19, + 19, 312, 518, 21, 21, 21, 21, 21, + 21, 21, 21, 498, 655, 294, 294, 294, + 294, 294, 294, 294, 294, 0, 0, 0, + 357, 357, 53, 53, 53, 53, 53, 53, + 53, 53, 53, 1, 0, 300, 300, 300, + 13, 300, 300, 300, 300, 300, 300, 300, + 0, 23, 23, 1, 0, 25, 0, 0, + 0, 0, 0, 0, 465, 550, 550, 432, + 432, 432, 432, 432, 432, 432, 432, 432, + 432, 1, 0, 27, 1, 0, 29, 506, + 303, 303, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 306, 306, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 288, 288, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 297, 297, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 291, 291, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 309, + 309, 19, 19, 19, 19, 19, 19, 19, + 19, 19, 312, 312, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 498, 498, 294, + 294, 294, 294, 294, 294, 294, 294, 294, + 306, 510, 17, 17, 17, 17, 17, 17, + 17, 17, 288, 490, 7, 7, 7, 7, + 7, 7, 7, 7, 297, 502, 11, 11, + 11, 11, 11, 11, 11, 11, 291, 494, + 9, 9, 9, 9, 9, 9, 9, 9, + 1, 315, 315, 0, 23, 23, 27, 1, + 264, 0, 25, 27, 0, 0, 0, 0, + 0, 264, 0, 0, 0, 1, 315, 315, + 0, 23, 23, 29, 1, 267, 0, 25, + 29, 0, 0, 0, 0, 0, 267, 1, + 327, 0, 27, 29, 0, 0, 0, 1, + 0, 0, 23, 318, 321, 321, 264, 309, + 514, 19, 19, 19, 19, 19, 19, 19, + 19, 312, 518, 21, 21, 21, 21, 21, + 21, 21, 21, 498, 655, 294, 294, 294, + 294, 294, 294, 294, 294, 93, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 103, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 363, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 111, 0, 0, 0, 0, + 0, 0, 0, 125, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 135, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 366, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 141, 0, 411, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 151, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 369, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 163, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 420, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 161, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 372, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 177, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 423, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 175, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 375, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 61, 61, + 387, 387, 61, 61, 387, 61, 61, 61, + 61, 61, 61, 61, 61, 1, 13, 0, + 300, 300, 300, 300, 300, 300, 300, 300, + 300, 300, 0, 23, 23, 1, 0, 25, + 0, 0, 0, 0, 0, 1, 0, 27, + 1, 0, 29, 506, 15, 303, 303, 15, + 15, 15, 15, 15, 15, 15, 15, 17, + 306, 306, 17, 17, 17, 17, 17, 17, + 17, 17, 7, 288, 288, 7, 7, 7, + 7, 7, 7, 7, 7, 11, 297, 297, + 11, 11, 11, 11, 11, 11, 11, 11, + 9, 291, 291, 9, 9, 9, 9, 9, + 9, 9, 9, 19, 309, 309, 19, 19, + 19, 19, 19, 19, 19, 19, 21, 312, + 312, 21, 21, 21, 21, 21, 21, 21, + 21, 294, 498, 498, 294, 294, 294, 294, + 294, 294, 294, 294, 306, 510, 17, 17, + 17, 17, 17, 17, 17, 17, 288, 490, + 7, 7, 7, 7, 7, 7, 7, 7, + 297, 502, 11, 11, 11, 11, 11, 11, + 11, 11, 291, 494, 9, 9, 9, 9, + 9, 9, 9, 9, 1, 315, 315, 0, + 23, 23, 27, 1, 264, 0, 25, 27, + 0, 0, 0, 0, 0, 264, 0, 0, + 0, 1, 315, 315, 0, 23, 23, 29, + 1, 267, 0, 25, 29, 0, 0, 0, + 0, 0, 267, 1, 327, 0, 27, 29, + 0, 0, 0, 1, 0, 0, 23, 318, + 321, 321, 264, 309, 514, 19, 19, 19, + 19, 19, 19, 19, 19, 312, 518, 21, + 21, 21, 21, 21, 21, 21, 21, 498, + 655, 294, 294, 294, 294, 294, 294, 294, + 294, 59, 59, 384, 384, 59, 59, 384, + 59, 59, 59, 59, 59, 59, 59, 59, + 39, 342, 342, 39, 0, 39, 39, 39, + 39, 39, 39, 39, 37, 339, 339, 37, + 37, 37, 37, 37, 37, 37, 37, 195, + 61, 61, 387, 387, 61, 61, 387, 61, + 61, 61, 61, 61, 61, 61, 61, 1, + 13, 0, 300, 300, 300, 300, 300, 300, + 300, 300, 300, 300, 0, 23, 23, 1, + 0, 25, 0, 0, 0, 0, 0, 1, + 0, 27, 1, 0, 29, 506, 15, 303, + 303, 15, 15, 15, 15, 15, 15, 15, + 15, 17, 306, 306, 17, 17, 17, 17, + 17, 17, 17, 17, 7, 288, 288, 7, + 7, 7, 7, 7, 7, 7, 7, 11, + 297, 297, 11, 11, 11, 11, 11, 11, + 11, 11, 9, 291, 291, 9, 9, 9, + 9, 9, 9, 9, 9, 19, 309, 309, + 19, 19, 19, 19, 19, 19, 19, 19, + 21, 312, 312, 21, 21, 21, 21, 21, + 21, 21, 21, 294, 498, 498, 294, 294, + 294, 294, 294, 294, 294, 294, 306, 510, + 17, 17, 17, 17, 17, 17, 17, 17, + 288, 490, 7, 7, 7, 7, 7, 7, + 7, 7, 297, 502, 11, 11, 11, 11, + 11, 11, 11, 11, 291, 494, 9, 9, + 9, 9, 9, 9, 9, 9, 1, 315, + 315, 0, 23, 23, 27, 1, 264, 0, + 25, 27, 0, 0, 0, 0, 0, 264, + 0, 0, 0, 1, 315, 315, 0, 23, + 23, 29, 1, 267, 0, 25, 29, 0, + 0, 0, 0, 0, 267, 1, 327, 0, + 27, 29, 0, 0, 0, 1, 0, 0, + 23, 318, 321, 321, 264, 309, 514, 19, + 19, 19, 19, 19, 19, 19, 19, 312, + 518, 21, 21, 21, 21, 21, 21, 21, + 21, 498, 655, 294, 294, 294, 294, 294, + 294, 294, 294, 59, 59, 384, 384, 59, + 59, 384, 59, 59, 59, 59, 59, 59, + 59, 59, 39, 342, 342, 39, 0, 39, + 39, 39, 39, 39, 39, 39, 37, 339, + 339, 37, 37, 37, 37, 37, 37, 37, + 37, 213, 0, 211, 390, 0, 65, 197, + 0, 0, 223, 225, 570, 221, 642, 1, + 441, 888, 888, 441, 862, 862, 903, 862, + 862, 562, 695, 895, 862, 554, 562, 554, + 554, 874, 862, 862, 862, 249, 235, 665, + 785, 408, 462, 785, 462, 785, 462, 405, + 534, 0, 75, 227, 450, 73, 73, 396, + 399, 243, 429, 285, 426, 285, 285, 285, + 285, 285, 285, 285, 285, 285, 285, 285, + 285, 285, 285, 285, 285, 285, 285, 285, + 285, 285, 285, 285, 285, 285, 285, 285, + 285, 285, 245, 0, 0, 0, 231, 660, + 785, 462, 785, 462, 785, 462, 785, 868, + 534, 534, 462, 646, 75, 75, 282, 3, + 3, 3, 3, 3, 578, 3, 3, 578, + 790, 802, 3, 3, 3, 3, 578, 802, + 802, 478, 650, 360, 0, 247, 1, 1, + 393, 0, 582, 0, 582, 1, 700, 1, + 558, 700, 471, 471, 270, 1, 685, 67, + 0, 618, 582, 0, 618, 582, 67, 471, + 856, 680, 538, 856, 856, 856, 856, 856, + 856, 856, 856, 881, 856, 856, 856, 856, + 67, 67, 0, 582, 705, 285, 285, 285, + 285, 285, 285, 285, 285, 285, 285, 285, + 482, 285, 285, 285, 285, 67, 67, 67, + 0, 618, 582, 0, 618, 582, 705, 0, + 471, 471, 582, 471, 1, 558, 700, 808, + 471, 546, 710, 486, 542, 710, 285, 710, + 710, 710, 710, 710, 710, 710, 814, 710, + 710, 710, 710, 558, 270, 270, 270, 471, + 1, 720, 720, 720, 720, 685, 720, 720, + 720, 67, 67, 67, 614, 0, 614, 582, + 270, 270, 270, 1, 685, 755, 558, 700, + 471, 471, 614, 0, 614, 582, 1, 685, + 755, 700, 808, 471, 471, 471, 471, 1, + 471, 685, 745, 745, 700, 285, 710, 710, + 710, 710, 710, 710, 814, 710, 710, 710, + 720, 720, 720, 720, 720, 720, 720, 826, + 725, 725, 598, 598, 598, 598, 598, 730, + 730, 602, 602, 602, 602, 602, 602, 602, + 270, 270, 1, 685, 700, 285, 285, 285, + 285, 285, 285, 285, 285, 285, 285, 67, + 67, 67, 0, 760, 558, 558, 558, 270, + 270, 270, 1, 270, 270, 270, 1, 685, + 67, 67, 67, 0, 582, 622, 0, 582, + 622, 1, 558, 700, 765, 471, 471, 700, + 765, 730, 832, 602, 602, 602, 602, 602, + 602, 471, 67, 67, 67, 0, 618, 760, + 67, 67, 67, 614, 0, 750, 582, 745, + 1, 850, 700, 471, 67, 67, 67, 614, + 0, 614, 760, 270, 270, 270, 1, 796, + 558, 558, 558, 270, 270, 270, 471, 685, + 755, 471, 471, 471, 270, 270, 270, 471, + 1, 471, 796, 558, 558, 558, 745, 745, + 270, 270, 270, 745, 1, 745, 685, 67, + 67, 67, 614, 0, 614, 582, 622, 67, + 67, 67, 0, 618, 582, 622, 0, 618, + 582, 622, 471, 471, 471, 558, 471, 1, + 471, 685, 690, 614, 0, 614, 582, 622, + 270, 270, 270, 1, 685, 690, 755, 558, + 700, 765, 471, 471, 471, 471, 558, 471, + 1, 685, 614, 0, 750, 582, 850, 558, + 700, 471, 558, 1, 755, 0, 618, 760, + 0, 471, 471, 760, 471, 558, 558, 558, + 471, 745, 558, 700, 471, 471, 558, 1, + 685, 558, 471, 1, 471, 796, 614, 0, + 614, 760, 796, 558, 558, 558, 558, 558, + 558, 745, 745, 745, 558, 700, 765, 471, + 471, 471, 471, 471, 67, 67, 67, 0, + 760, 622, 558, 558, 558, 471, 471, 690, + 1, 685, 690, 755, 700, 765, 471, 471, + 471, 270, 270, 270, 1, 765, 471, 471, + 471, 700, 765, 471, 471, 471, 558, 1, + 796, 0, 760, 622, 558, 558, 558, 765, + 471, 796, 715, 820, 590, 590, 590, 590, + 590, 735, 838, 606, 606, 606, 606, 606, + 740, 844, 610, 610, 610, 610, 610, 770, + 770, 626, 626, 626, 471, 626, 626, 626, + 626, 626, 626, 558, 775, 775, 630, 630, + 630, 471, 630, 630, 630, 630, 630, 630, + 715, 715, 590, 590, 590, 590, 590, 735, + 735, 606, 606, 606, 606, 606, 740, 740, + 610, 610, 610, 610, 610, 780, 780, 634, + 634, 634, 634, 634, 634, 634, 634, 634, + 826, 725, 725, 598, 598, 598, 598, 598, + 715, 715, 590, 590, 590, 590, 590, 735, + 735, 606, 606, 606, 606, 606, 740, 740, + 610, 610, 610, 610, 610, 715, 820, 590, + 590, 590, 590, 590, 735, 838, 606, 606, + 606, 606, 606, 740, 844, 610, 610, 610, + 610, 610, 67, 0, 760, 558, 558, 558, + 270, 471, 1, 471, 685, 67, 614, 0, + 614, 582, 1, 685, 755, 700, 471, 471, + 471, 270, 1, 270, 1, 685, 67, 0, + 582, 622, 0, 582, 622, 1, 558, 700, + 765, 471, 471, 471, 471, 558, 471, 1, + 471, 685, 614, 0, 614, 582, 745, 558, + 700, 471, 471, 558, 1, 0, 760, 558, + 558, 558, 685, 471, 700, 765, 745, 745, + 700, 471, 755, 558, 700, 471, 69, 69, + 526, 71, 71, 530, 0, 0, 237, 239, + 0, 241, 0, 229, 0, 233, 0, 55, + 87, 0, 83, 91, 0, 89, 85, 97, + 95, 0, 101, 83, 99, 1, 1, 1, + 1, 1, 107, 105, 586, 109, 0, 279, + 276, 115, 113, 119, 83, 123, 0, 121, + 117, 129, 127, 0, 133, 83, 131, 1, + 1, 1, 1, 1, 137, 438, 566, 139, + 670, 414, 414, 417, 0, 0, 145, 143, + 0, 149, 83, 147, 1, 1, 1, 1, + 1, 155, 153, 435, 159, 83, 157, 1, + 1, 1, 1, 1, 167, 165, 435, 173, + 83, 63, 63, 169, 1, 1, 1, 1, + 1, 171, 181, 179, 447, 183, 444, 187, + 185, 83, 193, 0, 63, 63, 191, 189, + 201, 199, 83, 0, 209, 0, 0, 207, + 203, 83, 205 +}; + +static const short _redcloth_scan_to_state_actions[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 79, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 79, 0, 0, 79, 0, + 0, 79, 0, 0, 79, 79, 0, 0, + 79, 0, 0, 79, 0, 0, 0, 0, + 0, 79, 0, 0, 79, 0, 0, 79, + 0, 0, 0, 79, 0, 79, 0, 0, + 0, 79, 0, 0, 0, 0, 0 +}; + +static const short _redcloth_scan_from_state_actions[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 81, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 81, 0, 0, 81, 0, + 0, 81, 0, 0, 81, 81, 0, 0, + 81, 0, 0, 81, 0, 0, 0, 0, + 0, 81, 0, 0, 81, 0, 0, 81, + 0, 0, 0, 81, 0, 81, 0, 0, + 0, 81, 0, 0, 0, 0, 0 +}; + +static const short _redcloth_scan_eof_trans[] = { + 0, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 528, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 197, 1, 1, 1, + 1, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 1, 1, + 1, 1, 1, 1, 197, 197, 197, 197, + 1855, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 1, 1, 1, 1, 1, + 1, 197, 197, 1855, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 1, 1, 1, 1, 1, 1, 197, 197, + 1855, 197, 197, 197, 197, 197, 197, 197, + 197, 1, 1, 1, 1, 1, 1, 197, + 197, 1855, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 1, + 1, 1, 1, 1, 2337, 2337, 2337, 2337, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2337, 2337, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2337, 2337, 1, 2337, 2337, 1, 1, + 1, 1, 1, 1, 1, 1, 2337, 2337, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 528, 1, 1, 528, 528, 528, + 1, 1, 2337, 2337, 1, 1, 1, 1, + 1, 2337, 2337, 1, 2337, 2337, 1, 1, + 528, 1, 528, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2337, 2337, 1, + 1, 1, 1, 1, 1, 2337, 2337, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2337, 2337, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 2337, 2337, 1, 2337, + 2337, 1, 1, 1, 1, 2337, 2337, 2337, + 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, + 2337, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2337, + 2337, 2337, 2337, 1, 1, 2337, 2337, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 528, 528, 528, 1, 1, 1, 1, 1, + 1, 1, 528, 1, 1, 1, 1, 2337, + 2337, 1, 1, 1, 1, 1, 2337, 2337, + 2337, 2337, 1, 1, 1, 2337, 2337, 1, + 2337, 2337, 2337, 2337, 1, 1, 1, 1, + 2337, 2337, 1, 1, 1, 1, 1, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 1, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 4630, 4630, 4630, 4630, 4630, 4630, + 4630, 4630, 4630, 4630, 4630, 4642, 4642, 4642, + 4642, 4642, 4642, 4642, 4642, 4642, 4642, 4642, + 4642, 4642, 4642, 4642, 4642, 4642, 4642, 4642, + 4642, 4642, 4642, 4642, 4642, 4642, 4642, 4642, + 4642, 4642, 4642, 4642, 4642, 4642, 4642, 4642, + 4642, 4642, 4642, 4642, 4642, 4642, 4642, 4642, + 4642, 4642, 4642, 4642, 4642, 4642, 4642, 4642, + 4692, 4692, 4692, 4692, 4692, 4692, 4692, 4700, + 4700, 4700, 4700, 4700, 4700, 4700, 4700, 4700, + 4700, 4711, 4711, 4711, 4711, 4711, 4711, 4711, + 4711, 4711, 4711, 4711, 4711, 4711, 4711, 4711, + 4711, 4711, 4711, 4711, 4711, 4711, 4711, 4711, + 4711, 4711, 4711, 4711, 4711, 4711, 4711, 4711, + 4711, 4711, 4711, 4711, 4711, 4711, 4711, 4711, + 4711, 4711, 4711, 4711, 4711, 4711, 4711, 4711, + 4711, 4711, 4711, 4711, 4761, 4761, 4761, 4761, + 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4761, + 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4761, + 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4761, + 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4761, + 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4761, + 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4761, + 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4761, + 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4761, + 4761, 4761, 4833, 4833, 4833, 4833, 4833, 4833, + 4833, 4833, 4833, 4833, 4833, 4833, 4833, 4833, + 4833, 4833, 4833, 4833, 4833, 4833, 4833, 4833, + 4833, 4833, 4833, 4833, 4833, 4833, 4833, 4833, + 4833, 4833, 4833, 4833, 4833, 4833, 4833, 4833, + 4833, 4833, 4833, 4833, 4833, 4833, 4833, 4833, + 4833, 4833, 4833, 4833, 4833, 4883, 4883, 4883, + 4883, 4883, 4883, 4883, 4883, 4883, 4883, 4883, + 4883, 4883, 4883, 4883, 4883, 4883, 4883, 4883, + 4883, 4883, 4883, 4883, 4883, 4883, 4883, 4883, + 4883, 4883, 4883, 4883, 4883, 4883, 4883, 4883, + 4883, 4883, 4883, 4883, 4883, 4883, 4883, 4883, + 4883, 4883, 4883, 4883, 4883, 4883, 4883, 4883, + 4883, 4883, 4883, 4883, 4883, 4883, 4883, 4883, + 4883, 4883, 4883, 4883, 4883, 4883, 4883, 4883, + 4883, 4883, 4883, 4955, 4955, 4955, 4955, 4955, + 4955, 4955, 4955, 4955, 4955, 4955, 4955, 4955, + 4955, 4955, 4955, 4955, 4955, 4955, 4955, 4955, + 4955, 4955, 4955, 4955, 4955, 4955, 4955, 4955, + 4955, 4955, 4955, 4955, 4955, 4955, 4955, 4955, + 4955, 4955, 4955, 4955, 4955, 4955, 4955, 4955, + 4955, 4955, 4955, 4955, 4955, 4955, 5005, 5005, + 5005, 5005, 5005, 5005, 5005, 5005, 5005, 5005, + 5005, 5005, 5005, 5005, 5005, 5005, 5005, 5005, + 5005, 5005, 5005, 5005, 5005, 5005, 5005, 5005, + 5005, 5005, 5005, 5005, 5005, 5005, 5005, 5005, + 5005, 5005, 5005, 5005, 5005, 5005, 5005, 5005, + 5005, 5005, 5005, 5005, 5005, 5005, 5005, 5005, + 5005, 5005, 5005, 5005, 5005, 5005, 5005, 5005, + 5005, 5005, 5005, 5005, 5005, 5005, 5005, 5005, + 5005, 5005, 5005, 5005, 5077, 5077, 5077, 5077, + 5077, 5077, 5077, 5077, 5077, 5077, 5077, 5077, + 5077, 5077, 5077, 5077, 5077, 5077, 5077, 5077, + 5077, 5077, 5077, 5077, 5077, 5077, 5077, 5077, + 5077, 5077, 5077, 5077, 5077, 5077, 5077, 5077, + 5077, 5077, 5077, 5077, 5077, 5077, 5077, 5077, + 5077, 5077, 5077, 5077, 5077, 5077, 5077, 5005, + 5005, 5005, 5005, 5005, 5005, 5005, 5005, 5005, + 5005, 5005, 5005, 5005, 5005, 5005, 5005, 5005, + 5005, 5005, 5005, 5005, 5005, 5005, 5005, 5005, + 5005, 5005, 5005, 5005, 5005, 5005, 5005, 5005, + 5005, 5005, 5005, 5005, 5005, 5005, 5005, 5005, + 5005, 5005, 5005, 5005, 5005, 5005, 5005, 5005, + 5005, 5005, 5005, 5005, 5005, 5005, 5424, 5424, + 5424, 5424, 5424, 5424, 5424, 5424, 5424, 5424, + 5424, 5424, 5424, 5424, 5424, 5424, 5424, 5424, + 5424, 5424, 5424, 5424, 5424, 5424, 5424, 5424, + 5424, 5424, 5424, 5424, 5424, 5424, 5424, 5424, + 5424, 5424, 5424, 5424, 5424, 5424, 5424, 5424, + 5424, 5424, 5424, 5424, 5424, 5424, 5424, 5424, + 5424, 5424, 5424, 5424, 5424, 5722, 5724, 5724, + 5724, 5724, 0, 5758, 5759, 5759, 5759, 5760, + 5762, 5759, 5760, 5762, 5760, 5762, 5760, 5762, + 5772, 5758, 5776, 5777, 5758, 5778, 5758, 5779, + 5779, 5758, 5758, 5758, 5811, 5758, 5758, 5815, + 5815, 5759, 5815, 5815, 5815, 5759, 5815, 5815, + 5815, 5759, 5816, 5762, 5815, 5815, 5815, 5759, + 5816, 5762, 5816, 5762, 5816, 5762, 5831, 5831, + 5831, 5831, 5831, 5831, 5841, 5831, 5831, 5841, + 5841, 5841, 5758, 5758, 5758, 5852, 5758, 5854, + 5758, 5857, 5857, 5857, 5857, 5857, 5857, 5857, + 5857, 5857, 5857, 5857, 5857, 5779, 5857, 5857, + 5857, 5857, 5857, 5857, 5938, 5857, 5857, 5857, + 5857, 5857, 5857, 5857, 5857, 5857, 5857, 5857, + 5857, 5938, 5857, 5857, 5857, 5857, 5857, 5857, + 5779, 5857, 5857, 5857, 5857, 5857, 5857, 5857, + 5857, 5857, 5857, 5857, 5857, 5857, 5857, 5857, + 5857, 5857, 5857, 5857, 5857, 5857, 5857, 5857, + 5857, 5857, 5857, 5857, 5857, 5857, 5857, 5857, + 5857, 5857, 5857, 5857, 5857, 5857, 5857, 5857, + 5857, 5857, 5857, 5857, 5857, 5857, 5857, 5857, + 5857, 5857, 5857, 5857, 5857, 5857, 5857, 5857, + 5857, 5857, 5857, 5857, 5857, 5857, 5857, 5857, + 5857, 5857, 5857, 5857, 5857, 5857, 5857, 5857, + 5857, 5857, 5857, 5857, 5857, 5857, 5857, 5857, + 5857, 5857, 5857, 5857, 5857, 5857, 5857, 5857, + 5857, 5857, 5857, 5857, 5857, 5857, 5857, 5857, + 5857, 5857, 5857, 5857, 5857, 5857, 5857, 5857, + 5857, 5857, 5857, 5857, 5857, 5857, 5857, 5857, + 5857, 5857, 5857, 5857, 5857, 5857, 5857, 5857, + 5857, 5857, 5857, 5857, 5857, 5857, 5857, 5857, + 5857, 5857, 5857, 5857, 5857, 5857, 5857, 5857, + 5857, 5857, 5776, 5777, 5758, 5758, 6527, 6528, + 5758, 6530, 5758, 6532, 5758, 6534, 5758, 5852, + 5758, 5758, 5758, 0, 6540, 6542, 0, 6547, + 6549, 0, 6558, 6560, 0, 0, 6566, 6568, + 0, 6573, 6575, 0, 6584, 6585, 6588, 6588, + 6584, 0, 6594, 6596, 0, 6605, 6607, 0, + 6616, 6620, 6626, 0, 6630, 0, 6635, 6639, + 6640, 0, 6645, 6648, 6649, 6645, 6651 +}; + +static const int redcloth_scan_start = 2042; +static const int redcloth_scan_error = 0; + +static const int redcloth_scan_en_pre_tag = 2307; +static const int redcloth_scan_en_pre_block = 2310; +static const int redcloth_scan_en_script_tag = 2313; +static const int redcloth_scan_en_noparagraph_line = 2316; +static const int redcloth_scan_en_notextile_tag = 2317; +static const int redcloth_scan_en_notextile_block = 2320; +static const int redcloth_scan_en_html = 2323; +static const int redcloth_scan_en_bc = 2329; +static const int redcloth_scan_en_bq = 2332; +static const int redcloth_scan_en_block = 2335; +static const int redcloth_scan_en_footnote = 2339; +static const int redcloth_scan_en_list = 2341; +static const int redcloth_scan_en_dl = 2345; +static const int redcloth_scan_en_main = 2042; + +#line 335 "ext/redcloth_scan/redcloth_scan.rl" + +VALUE +redcloth_transform(self, p, pe, refs) + VALUE self; + char *p, *pe; + VALUE refs; +{ + char *orig_p = p, *orig_pe = pe; + int cs, act, nest; + char *ts = NULL, *te = NULL, *reg = NULL, *bck = NULL, *eof = NULL; + VALUE html = rb_str_new2(""); + VALUE table = rb_str_new2(""); + VALUE block = rb_str_new2(""); + VALUE regs; CLEAR_REGS() + + + VALUE list_layout = Qnil; + char *list_type = NULL; + VALUE list_index = rb_ary_new(); + int list_continue = 0; + VALUE plain_block = rb_str_new2("p"); + VALUE extend = Qnil; + char listm[10] = ""; + VALUE refs_found = rb_hash_new(); + + +#line 10015 "ext/redcloth_scan/redcloth_scan.c" + { + cs = redcloth_scan_start; + ts = 0; + te = 0; + act = 0; + } +#line 361 "ext/redcloth_scan/redcloth_scan.rl" + + +#line 10025 "ext/redcloth_scan/redcloth_scan.c" + { + int _klen; + unsigned int _trans; + const unsigned char *_acts; + unsigned int _nacts; + const char *_keys; + + if ( p == pe ) + goto _test_eof; + if ( cs == 0 ) + goto _out; +_resume: + _acts = _redcloth_scan_actions + _redcloth_scan_from_state_actions[cs]; + _nacts = (unsigned int) *_acts++; + while ( _nacts-- > 0 ) { + switch ( *_acts++ ) { + case 57: +#line 1 "ext/redcloth_scan/redcloth_scan.rl" + {ts = p;} + break; +#line 10046 "ext/redcloth_scan/redcloth_scan.c" + } + } + + _keys = _redcloth_scan_trans_keys + _redcloth_scan_key_offsets[cs]; + _trans = _redcloth_scan_index_offsets[cs]; + + _klen = _redcloth_scan_single_lengths[cs]; + if ( _klen > 0 ) { + const char *_lower = _keys; + const char *_mid; + const char *_upper = _keys + _klen - 1; + while (1) { + if ( _upper < _lower ) + break; + + _mid = _lower + ((_upper-_lower) >> 1); + if ( (*p) < *_mid ) + _upper = _mid - 1; + else if ( (*p) > *_mid ) + _lower = _mid + 1; + else { + _trans += (_mid - _keys); + goto _match; + } + } + _keys += _klen; + _trans += _klen; + } + + _klen = _redcloth_scan_range_lengths[cs]; + if ( _klen > 0 ) { + const char *_lower = _keys; + const char *_mid; + const char *_upper = _keys + (_klen<<1) - 2; + while (1) { + if ( _upper < _lower ) + break; + + _mid = _lower + (((_upper-_lower) >> 1) & ~1); + if ( (*p) < _mid[0] ) + _upper = _mid - 2; + else if ( (*p) > _mid[1] ) + _lower = _mid + 2; + else { + _trans += ((_mid - _keys)>>1); + goto _match; + } + } + _trans += _klen; + } + +_match: + _trans = _redcloth_scan_indicies[_trans]; +_eof_trans: + cs = _redcloth_scan_trans_targs[_trans]; + + if ( _redcloth_scan_trans_actions[_trans] == 0 ) + goto _again; + + _acts = _redcloth_scan_actions + _redcloth_scan_trans_actions[_trans]; + _nacts = (unsigned int) *_acts++; + while ( _nacts-- > 0 ) + { + switch ( *_acts++ ) + { + case 0: +#line 5 "ext/redcloth_scan/redcloth_scan.rl" + { reg = p; } + break; + case 1: +#line 6 "ext/redcloth_scan/redcloth_scan.rl" + { bck = p; } + break; + case 2: +#line 7 "ext/redcloth_scan/redcloth_scan.rl" + { STORE(text); } + break; + case 3: +#line 8 "ext/redcloth_scan/redcloth_scan.rl" + { CLEAR_REGS(); reg = NULL; } + break; + case 4: +#line 20 "ext/redcloth_scan/redcloth_scan.rl" + { ASET(align, left) } + break; + case 5: +#line 21 "ext/redcloth_scan/redcloth_scan.rl" + { ASET(align, right) } + break; + case 6: +#line 22 "ext/redcloth_scan/redcloth_scan.rl" + { ASET(align, justify) } + break; + case 7: +#line 23 "ext/redcloth_scan/redcloth_scan.rl" + { ASET(align, center) } + break; + case 8: +#line 24 "ext/redcloth_scan/redcloth_scan.rl" + { AINC(padding-left) } + break; + case 9: +#line 25 "ext/redcloth_scan/redcloth_scan.rl" + { AINC(padding-right) } + break; + case 10: +#line 28 "ext/redcloth_scan/redcloth_scan.rl" + { ASET(vertical-align, middle) } + break; + case 11: +#line 28 "ext/redcloth_scan/redcloth_scan.rl" + { ASET(vertical-align, top) } + break; + case 12: +#line 28 "ext/redcloth_scan/redcloth_scan.rl" + { ASET(vertical-align, bottom) } + break; + case 13: +#line 29 "ext/redcloth_scan/redcloth_scan.rl" + { STORE(class) } + break; + case 14: +#line 29 "ext/redcloth_scan/redcloth_scan.rl" + {STORE(id)} + break; + case 15: +#line 30 "ext/redcloth_scan/redcloth_scan.rl" + { STORE(lang) } + break; + case 16: +#line 31 "ext/redcloth_scan/redcloth_scan.rl" + { STORE(style) } + break; + case 17: +#line 32 "ext/redcloth_scan/redcloth_scan.rl" + { STORE(colspan) } + break; + case 18: +#line 33 "ext/redcloth_scan/redcloth_scan.rl" + { STORE(rowspan) } + break; + case 19: +#line 34 "ext/redcloth_scan/redcloth_scan.rl" + { ASET(th, true) } + break; + case 20: +#line 40 "ext/redcloth_scan/redcloth_scan.rl" + { list_continue = 1; } + break; + case 21: +#line 41 "ext/redcloth_scan/redcloth_scan.rl" + { STORE(start) } + break; + case 22: +#line 19 "ext/redcloth_scan/redcloth_scan.rl" + { extend = rb_hash_aref(regs, ID2SYM(rb_intern("type"))); } + break; + case 23: +#line 25 "ext/redcloth_scan/redcloth_scan.rl" + { STORE(type) } + break; + case 24: +#line 28 "ext/redcloth_scan/redcloth_scan.rl" + { STORE(type) } + break; + case 25: +#line 29 "ext/redcloth_scan/redcloth_scan.rl" + { STORE(type) } + break; + case 26: +#line 30 "ext/redcloth_scan/redcloth_scan.rl" + { STORE(type) } + break; + case 27: +#line 30 "ext/redcloth_scan/redcloth_scan.rl" + { STORE(cite) } + break; + case 28: +#line 33 "ext/redcloth_scan/redcloth_scan.rl" + { STORE(type) } + break; + case 29: +#line 33 "ext/redcloth_scan/redcloth_scan.rl" + { STORE_B(fallback) } + break; + case 30: +#line 35 "ext/redcloth_scan/redcloth_scan.rl" + { p = reg - 1; } + break; + case 31: +#line 38 "ext/redcloth_scan/redcloth_scan.rl" + { STORE(type) } + break; + case 32: +#line 38 "ext/redcloth_scan/redcloth_scan.rl" + { STORE(id) } + break; + case 33: +#line 40 "ext/redcloth_scan/redcloth_scan.rl" + {nest++; list_type = "ul";} + break; + case 34: +#line 41 "ext/redcloth_scan/redcloth_scan.rl" + {nest++; list_type = "ol";} + break; + case 35: +#line 42 "ext/redcloth_scan/redcloth_scan.rl" + {nest = 0;} + break; + case 36: +#line 45 "ext/redcloth_scan/redcloth_scan.rl" + { ADD_BLOCK(); ASET(type, dd); } + break; + case 37: +#line 45 "ext/redcloth_scan/redcloth_scan.rl" + { TRANSFORM(text) } + break; + case 38: +#line 48 "ext/redcloth_scan/redcloth_scan.rl" + { ASET(type, ignore) } + break; + case 39: +#line 48 "ext/redcloth_scan/redcloth_scan.rl" + { STORE_URL(href); } + break; + case 40: +#line 51 "ext/redcloth_scan/redcloth_scan.rl" + { ASET(float, left) } + break; + case 41: +#line 52 "ext/redcloth_scan/redcloth_scan.rl" + { ASET(float, right) } + break; + case 42: +#line 53 "ext/redcloth_scan/redcloth_scan.rl" + { p = reg - 1; } + break; + case 43: +#line 60 "ext/redcloth_scan/redcloth_scan.rl" + {STORE_B(indent_before_start)} + break; + case 44: +#line 60 "ext/redcloth_scan/redcloth_scan.rl" + {STORE_B(start_tag)} + break; + case 45: +#line 60 "ext/redcloth_scan/redcloth_scan.rl" + {STORE_B(indent_after_start)} + break; + case 46: +#line 61 "ext/redcloth_scan/redcloth_scan.rl" + {STORE_B(indent_before_end)} + break; + case 47: +#line 61 "ext/redcloth_scan/redcloth_scan.rl" + {STORE_B(end_tag)} + break; + case 48: +#line 61 "ext/redcloth_scan/redcloth_scan.rl" + {STORE_B(indent_after_end)} + break; + case 49: +#line 63 "ext/redcloth_scan/redcloth_scan.rl" + { p = reg - 1; } + break; + case 50: +#line 69 "ext/redcloth_scan/redcloth_scan.rl" + {PASS(table, text, td);} + break; + case 51: +#line 71 "ext/redcloth_scan/redcloth_scan.rl" + {INLINE(table, tr_open);} + break; + case 52: +#line 71 "ext/redcloth_scan/redcloth_scan.rl" + {INLINE(table, tr_close);} + break; + case 53: +#line 74 "ext/redcloth_scan/redcloth_scan.rl" + {table = rb_str_new2(""); INLINE(table, table_open);} + break; + case 54: +#line 74 "ext/redcloth_scan/redcloth_scan.rl" + { reg = NULL; } + break; + case 55: +#line 77 "ext/redcloth_scan/redcloth_scan.rl" + {STORE(prefix)} + break; + case 58: +#line 1 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;} + break; + case 59: +#line 80 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ CAT(block); DONE(block); {cs = 2042; goto _again;} }} + break; + case 60: +#line 11 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ rb_str_cat_escaped_for_preformatted(self, block, ts, te); }} + break; + case 61: +#line 80 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ CAT(block); DONE(block); {cs = 2042; goto _again;} }} + break; + case 62: +#line 11 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ rb_str_cat_escaped_for_preformatted(self, block, ts, te); }} + break; + case 63: +#line 11 "ext/redcloth_scan/redcloth_scan.rl" + {{p = ((te))-1;}{ rb_str_cat_escaped_for_preformatted(self, block, ts, te); }} + break; + case 64: +#line 85 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ + ADD_BLOCKCODE(); + {cs = 2042; goto _again;} + }} + break; + case 65: +#line 97 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ + if (NIL_P(extend)) { + ADD_BLOCKCODE(); + {cs = 2042; goto _again;} + } else { + ADD_EXTENDED_BLOCKCODE(); + END_EXTENDED(); + {cs = 2042; goto _again;} + } + }} + break; + case 66: +#line 11 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ rb_str_cat_escaped_for_preformatted(self, block, ts, te); }} + break; + case 67: +#line 89 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ + if (NIL_P(extend)) { + ADD_BLOCKCODE(); + {cs = 2042; goto _again;} + } else { + ADD_EXTENDED_BLOCKCODE(); + } + }} + break; + case 68: +#line 11 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ rb_str_cat_escaped_for_preformatted(self, block, ts, te); }} + break; + case 69: +#line 89 "ext/redcloth_scan/redcloth_scan.rl" + {{p = ((te))-1;}{ + if (NIL_P(extend)) { + ADD_BLOCKCODE(); + {cs = 2042; goto _again;} + } else { + ADD_EXTENDED_BLOCKCODE(); + } + }} + break; + case 70: +#line 111 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ CAT(block); ASET(type, ignore); ADD_BLOCK(); {cs = 2042; goto _again;} }} + break; + case 71: +#line 112 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ ASET(type, ignore); ADD_BLOCK(); {cs = 2042; goto _again;} }} + break; + case 72: +#line 9 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ CAT(block); }} + break; + case 73: +#line 111 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ CAT(block); ASET(type, ignore); ADD_BLOCK(); {cs = 2042; goto _again;} }} + break; + case 74: +#line 9 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ CAT(block); }} + break; + case 75: +#line 9 "ext/redcloth_scan/redcloth_scan.rl" + {{p = ((te))-1;}{ CAT(block); }} + break; + case 76: +#line 117 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ ADD_BLOCK(); {cs = 2042; goto _again;} }} + break; + case 77: +#line 9 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ CAT(block); }} + break; + case 78: +#line 122 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ ADD_BLOCK(); {cs = 2042; goto _again;} }} + break; + case 79: +#line 9 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ CAT(block); }} + break; + case 80: +#line 122 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ ADD_BLOCK(); {cs = 2042; goto _again;} }} + break; + case 81: +#line 9 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ CAT(block); }} + break; + case 82: +#line 9 "ext/redcloth_scan/redcloth_scan.rl" + {{p = ((te))-1;}{ CAT(block); }} + break; + case 83: +#line 127 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ + ADD_BLOCK(); + {cs = 2042; goto _again;} + }} + break; + case 84: +#line 142 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ + if (NIL_P(extend)) { + ADD_BLOCK(); + CAT(html); + {cs = 2042; goto _again;} + } else { + CAT(block); + ADD_EXTENDED_BLOCK(); + END_EXTENDED(); + {cs = 2042; goto _again;} + } + }} + break; + case 85: +#line 9 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ CAT(block); }} + break; + case 86: +#line 131 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ + if (NIL_P(extend)) { + ADD_BLOCK(); + CAT(html); + {cs = 2042; goto _again;} + } else { + CAT(block); + ADD_EXTENDED_BLOCK(); + CAT(html); + } + }} + break; + case 87: +#line 9 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ CAT(block); }} + break; + case 88: +#line 131 "ext/redcloth_scan/redcloth_scan.rl" + {{p = ((te))-1;}{ + if (NIL_P(extend)) { + ADD_BLOCK(); + CAT(html); + {cs = 2042; goto _again;} + } else { + CAT(block); + ADD_EXTENDED_BLOCK(); + CAT(html); + } + }} + break; + case 89: +#line 9 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ CAT(block); }} + break; + case 90: +#line 158 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ ADD_BLOCK(); {cs = 2042; goto _again;} }} + break; + case 91: +#line 9 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ CAT(block); }} + break; + case 92: +#line 9 "ext/redcloth_scan/redcloth_scan.rl" + {{p = ((te))-1;}{ CAT(block); }} + break; + case 93: +#line 163 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ + ADD_BLOCKCODE(); + INLINE(html, bc_close); + plain_block = rb_str_new2("p"); + {cs = 2042; goto _again;} + }} + break; + case 94: +#line 180 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ + if (NIL_P(extend)) { + ADD_BLOCKCODE(); + INLINE(html, bc_close); + plain_block = rb_str_new2("p"); + {cs = 2042; goto _again;} + } else { + ADD_EXTENDED_BLOCKCODE(); + CAT(html); + INLINE(html, bc_close); + plain_block = rb_str_new2("p"); + END_EXTENDED(); + {cs = 2042; goto _again;} + } + }} + break; + case 95: +#line 11 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ rb_str_cat_escaped_for_preformatted(self, block, ts, te); }} + break; + case 96: +#line 169 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ + if (NIL_P(extend)) { + ADD_BLOCKCODE(); + INLINE(html, bc_close); + plain_block = rb_str_new2("p"); + {cs = 2042; goto _again;} + } else { + ADD_EXTENDED_BLOCKCODE(); + CAT(html); + } + }} + break; + case 97: +#line 11 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ rb_str_cat_escaped_for_preformatted(self, block, ts, te); }} + break; + case 98: +#line 169 "ext/redcloth_scan/redcloth_scan.rl" + {{p = ((te))-1;}{ + if (NIL_P(extend)) { + ADD_BLOCKCODE(); + INLINE(html, bc_close); + plain_block = rb_str_new2("p"); + {cs = 2042; goto _again;} + } else { + ADD_EXTENDED_BLOCKCODE(); + CAT(html); + } + }} + break; + case 99: +#line 199 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ + ADD_BLOCK(); + INLINE(html, bq_close); + {cs = 2042; goto _again;} + }} + break; + case 100: +#line 213 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ + if (NIL_P(extend)) { + ADD_BLOCK(); + INLINE(html, bq_close); + {cs = 2042; goto _again;} + } else { + ADD_EXTENDED_BLOCK(); + INLINE(html, bq_close); + END_EXTENDED(); + {cs = 2042; goto _again;} + } + }} + break; + case 101: +#line 225 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ + if (NIL_P(extend)) { + ADD_BLOCK(); + INLINE(html, bq_close); + {cs = 2042; goto _again;} + } else { + ADD_EXTENDED_BLOCK(); + INLINE(html, bq_close); + END_EXTENDED(); + {cs = 2042; goto _again;} + } + }} + break; + case 102: +#line 9 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ CAT(block); }} + break; + case 103: +#line 204 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ + if (NIL_P(extend)) { + ADD_BLOCK(); + INLINE(html, bq_close); + {cs = 2042; goto _again;} + } else { + ADD_EXTENDED_BLOCK(); + } + }} + break; + case 104: +#line 9 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ CAT(block); }} + break; + case 105: +#line 204 "ext/redcloth_scan/redcloth_scan.rl" + {{p = ((te))-1;}{ + if (NIL_P(extend)) { + ADD_BLOCK(); + INLINE(html, bq_close); + {cs = 2042; goto _again;} + } else { + ADD_EXTENDED_BLOCK(); + } + }} + break; + case 106: +#line 9 "ext/redcloth_scan/redcloth_scan.rl" + {{p = ((te))-1;}{ CAT(block); }} + break; + case 107: +#line 241 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ + ADD_BLOCK(); + {cs = 2042; goto _again;} + }} + break; + case 108: +#line 253 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ + if (NIL_P(extend)) { + ADD_BLOCK(); + {cs = 2042; goto _again;} + } else { + ADD_EXTENDED_BLOCK(); + END_EXTENDED(); + {cs = 2042; goto _again;} + } + }} + break; + case 109: +#line 263 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ + if (NIL_P(extend)) { + ADD_BLOCK(); + {cs = 2042; goto _again;} + } else { + ADD_EXTENDED_BLOCK(); + END_EXTENDED(); + {cs = 2042; goto _again;} + } + }} + break; + case 110: +#line 9 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ CAT(block); }} + break; + case 111: +#line 245 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ + if (NIL_P(extend)) { + ADD_BLOCK(); + {cs = 2042; goto _again;} + } else { + ADD_EXTENDED_BLOCK(); + } + }} + break; + case 112: +#line 273 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ + ADD_BLOCK(); + list_layout = rb_ary_new(); + LIST_ITEM(); + {cs = 2341; goto _again;} + }} + break; + case 113: +#line 9 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ CAT(block); }} + break; + case 114: +#line 245 "ext/redcloth_scan/redcloth_scan.rl" + {{p = ((te))-1;}{ + if (NIL_P(extend)) { + ADD_BLOCK(); + {cs = 2042; goto _again;} + } else { + ADD_EXTENDED_BLOCK(); + } + }} + break; + case 115: +#line 9 "ext/redcloth_scan/redcloth_scan.rl" + {{p = ((te))-1;}{ CAT(block); }} + break; + case 116: +#line 284 "ext/redcloth_scan/redcloth_scan.rl" + {act = 35;} + break; + case 117: +#line 9 "ext/redcloth_scan/redcloth_scan.rl" + {act = 36;} + break; + case 118: +#line 284 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ ADD_BLOCK(); {cs = 2042; goto _again;} }} + break; + case 119: +#line 9 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ CAT(block); }} + break; + case 120: +#line 1 "ext/redcloth_scan/redcloth_scan.rl" + { switch( act ) { + case 35: + {{p = ((te))-1;} ADD_BLOCK(); {cs = 2042; goto _again;} } + break; + case 36: + {{p = ((te))-1;} CAT(block); } + break; + } + } + break; + case 121: +#line 290 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ ADD_BLOCK(); nest = 0; LIST_CLOSE(); {cs = 2042; goto _again;} }} + break; + case 122: +#line 9 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ CAT(block); }} + break; + case 123: +#line 289 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ ADD_BLOCK(); LIST_ITEM(); }} + break; + case 124: +#line 290 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ ADD_BLOCK(); nest = 0; LIST_CLOSE(); {cs = 2042; goto _again;} }} + break; + case 125: +#line 9 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ CAT(block); }} + break; + case 126: +#line 9 "ext/redcloth_scan/redcloth_scan.rl" + {{p = ((te))-1;}{ CAT(block); }} + break; + case 127: +#line 297 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ INLINE(html, dd); }} + break; + case 128: +#line 298 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ ADD_BLOCK(); INLINE(html, dl_close); {cs = 2042; goto _again;} }} + break; + case 129: +#line 9 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ CAT(block); }} + break; + case 130: +#line 295 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ ADD_BLOCK(); ASET(type, dt); }} + break; + case 131: +#line 296 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ ADD_BLOCK(); ASET(type, dd); }} + break; + case 132: +#line 298 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ ADD_BLOCK(); INLINE(html, dl_close); {cs = 2042; goto _again;} }} + break; + case 133: +#line 9 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ CAT(block); }} + break; + case 134: +#line 296 "ext/redcloth_scan/redcloth_scan.rl" + {{p = ((te))-1;}{ ADD_BLOCK(); ASET(type, dd); }} + break; + case 135: +#line 9 "ext/redcloth_scan/redcloth_scan.rl" + {{p = ((te))-1;}{ CAT(block); }} + break; + case 136: +#line 303 "ext/redcloth_scan/redcloth_scan.rl" + {act = 45;} + break; + case 137: +#line 306 "ext/redcloth_scan/redcloth_scan.rl" + {act = 48;} + break; + case 138: +#line 307 "ext/redcloth_scan/redcloth_scan.rl" + {act = 49;} + break; + case 139: +#line 309 "ext/redcloth_scan/redcloth_scan.rl" + {act = 51;} + break; + case 140: +#line 310 "ext/redcloth_scan/redcloth_scan.rl" + {act = 52;} + break; + case 141: +#line 313 "ext/redcloth_scan/redcloth_scan.rl" + {act = 55;} + break; + case 142: +#line 316 "ext/redcloth_scan/redcloth_scan.rl" + {act = 58;} + break; + case 143: +#line 317 "ext/redcloth_scan/redcloth_scan.rl" + {act = 59;} + break; + case 144: +#line 318 "ext/redcloth_scan/redcloth_scan.rl" + {act = 60;} + break; + case 145: +#line 319 "ext/redcloth_scan/redcloth_scan.rl" + {act = 61;} + break; + case 146: +#line 323 "ext/redcloth_scan/redcloth_scan.rl" + {act = 64;} + break; + case 147: +#line 304 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ ASET(type, notextile); {cs = 2317; goto _again;} }} + break; + case 148: +#line 307 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ ASET(type, notextile); CAT(block); {cs = 2307; goto _again;} }} + break; + case 149: +#line 320 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ INLINE(html, redcloth_version); }} + break; + case 150: +#line 9 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ CAT(block); }} + break; + case 151: +#line 323 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;{ + CLEAR_REGS(); + rb_hash_aset(regs, ID2SYM(rb_intern("type")), plain_block); + CAT(block); + {cs = 2335; goto _again;} + }} + break; + case 152: +#line 329 "ext/redcloth_scan/redcloth_scan.rl" + {te = p+1;} + break; + case 153: +#line 303 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ ASET(type, ignored_line); {cs = 2316; goto _again;} }} + break; + case 154: +#line 305 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ ASET(type, notextile); {cs = 2320; goto _again;} }} + break; + case 155: +#line 306 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ CAT(block); {cs = 2313; goto _again;} }} + break; + case 156: +#line 307 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ ASET(type, notextile); CAT(block); {cs = 2307; goto _again;} }} + break; + case 157: +#line 308 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ {cs = 2310; goto _again;} }} + break; + case 158: +#line 309 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ ASET(type, html); CAT(block); ADD_BLOCK(); }} + break; + case 159: +#line 310 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ ASET(type, html_block); {cs = 2323; goto _again;} }} + break; + case 160: +#line 311 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ INLINE(html, bc_open); ASET(type, code); plain_block = rb_str_new2("code"); {cs = 2329; goto _again;} }} + break; + case 161: +#line 312 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ INLINE(html, bq_open); ASET(type, p); {cs = 2332; goto _again;} }} + break; + case 162: +#line 313 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ {cs = 2335; goto _again;} }} + break; + case 163: +#line 314 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ {cs = 2339; goto _again;} }} + break; + case 164: +#line 315 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ list_layout = rb_ary_new(); LIST_ITEM(); {cs = 2341; goto _again;} }} + break; + case 165: +#line 316 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ p = ts; INLINE(html, dl_open); ASET(type, dt); {cs = 2345; goto _again;} }} + break; + case 166: +#line 317 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ INLINE(table, table_close); DONE(table); {cs = 2335; goto _again;} }} + break; + case 167: +#line 318 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ rb_hash_aset(refs_found, rb_hash_aref(regs, ID2SYM(rb_intern("text"))), rb_hash_aref(regs, ID2SYM(rb_intern("href")))); DONE(block); }} + break; + case 168: +#line 319 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ rb_hash_aset(regs, ID2SYM(rb_intern("type")), plain_block); {cs = 2335; goto _again;} }} + break; + case 169: +#line 320 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ INLINE(html, redcloth_version); }} + break; + case 170: +#line 323 "ext/redcloth_scan/redcloth_scan.rl" + {te = p;p--;{ + CLEAR_REGS(); + rb_hash_aset(regs, ID2SYM(rb_intern("type")), plain_block); + CAT(block); + {cs = 2335; goto _again;} + }} + break; + case 171: +#line 307 "ext/redcloth_scan/redcloth_scan.rl" + {{p = ((te))-1;}{ ASET(type, notextile); CAT(block); {cs = 2307; goto _again;} }} + break; + case 172: +#line 317 "ext/redcloth_scan/redcloth_scan.rl" + {{p = ((te))-1;}{ INLINE(table, table_close); DONE(table); {cs = 2335; goto _again;} }} + break; + case 173: +#line 318 "ext/redcloth_scan/redcloth_scan.rl" + {{p = ((te))-1;}{ rb_hash_aset(refs_found, rb_hash_aref(regs, ID2SYM(rb_intern("text"))), rb_hash_aref(regs, ID2SYM(rb_intern("href")))); DONE(block); }} + break; + case 174: +#line 323 "ext/redcloth_scan/redcloth_scan.rl" + {{p = ((te))-1;}{ + CLEAR_REGS(); + rb_hash_aset(regs, ID2SYM(rb_intern("type")), plain_block); + CAT(block); + {cs = 2335; goto _again;} + }} + break; + case 175: +#line 1 "ext/redcloth_scan/redcloth_scan.rl" + { switch( act ) { + case 45: + {{p = ((te))-1;} ASET(type, ignored_line); {cs = 2316; goto _again;} } + break; + case 48: + {{p = ((te))-1;} CAT(block); {cs = 2313; goto _again;} } + break; + case 49: + {{p = ((te))-1;} ASET(type, notextile); CAT(block); {cs = 2307; goto _again;} } + break; + case 51: + {{p = ((te))-1;} ASET(type, html); CAT(block); ADD_BLOCK(); } + break; + case 52: + {{p = ((te))-1;} ASET(type, html_block); {cs = 2323; goto _again;} } + break; + case 55: + {{p = ((te))-1;} {cs = 2335; goto _again;} } + break; + case 58: + {{p = ((te))-1;} p = ts; INLINE(html, dl_open); ASET(type, dt); {cs = 2345; goto _again;} } + break; + case 59: + {{p = ((te))-1;} INLINE(table, table_close); DONE(table); {cs = 2335; goto _again;} } + break; + case 60: + {{p = ((te))-1;} rb_hash_aset(refs_found, rb_hash_aref(regs, ID2SYM(rb_intern("text"))), rb_hash_aref(regs, ID2SYM(rb_intern("href")))); DONE(block); } + break; + case 61: + {{p = ((te))-1;} rb_hash_aset(regs, ID2SYM(rb_intern("type")), plain_block); {cs = 2335; goto _again;} } + break; + case 64: + {{p = ((te))-1;} + CLEAR_REGS(); + rb_hash_aset(regs, ID2SYM(rb_intern("type")), plain_block); + CAT(block); + {cs = 2335; goto _again;} + } + break; + } + } + break; +#line 11052 "ext/redcloth_scan/redcloth_scan.c" + } + } + +_again: + _acts = _redcloth_scan_actions + _redcloth_scan_to_state_actions[cs]; + _nacts = (unsigned int) *_acts++; + while ( _nacts-- > 0 ) { + switch ( *_acts++ ) { + case 56: +#line 1 "ext/redcloth_scan/redcloth_scan.rl" + {ts = 0;} + break; +#line 11065 "ext/redcloth_scan/redcloth_scan.c" + } + } + + if ( cs == 0 ) + goto _out; + if ( ++p != pe ) + goto _resume; + _test_eof: {} + if ( p == eof ) + { + if ( _redcloth_scan_eof_trans[cs] > 0 ) { + _trans = _redcloth_scan_eof_trans[cs] - 1; + goto _eof_trans; + } + } + + _out: {} + } +#line 363 "ext/redcloth_scan/redcloth_scan.rl" + + if (RSTRING(block)->len > 0) + { + ADD_BLOCK(); + } + + if ( NIL_P(refs) && rb_funcall(refs_found, rb_intern("empty?"), 0) == Qfalse ) { + return redcloth_transform(self, orig_p, orig_pe, refs_found); + } else { + rb_funcall(self, rb_intern("after_transform"), 1, html); + return html; + } +} + +VALUE +redcloth_transform2(self, str) + VALUE self, str; +{ + rb_str_cat2(str, "\n"); + StringValue(str); + rb_funcall(self, rb_intern("before_transform"), 1, str); + return redcloth_transform(self, RSTRING(str)->ptr, RSTRING(str)->ptr + RSTRING(str)->len + 1, Qnil); +} + +/* + * Converts special characters into HTML entities. + */ +static VALUE +redcloth_html_esc(int argc, VALUE* argv, VALUE self) //(self, str, level) +{ + VALUE str, level; + + rb_scan_args(argc, argv, "11", &str, &level); + + VALUE new_str = rb_str_new2(""); + StringValue(str); + + if (RSTRING(str)->len == 0) + return new_str; + + char *ts = RSTRING(str)->ptr, *te = RSTRING(str)->ptr + RSTRING(str)->len; + char *t = ts, *t2 = ts, *ch = NULL; + if (te <= ts) return; + + while (t2 < te) { + ch = NULL; + + // normal + pre + switch (*t2) + { + case '&': ch = "amp"; break; + case '>': ch = "gt"; break; + case '<': ch = "lt"; break; + } + + // normal (non-pre) + if (level != SYM_escape_preformatted) { + switch (*t2) + { + case '\n': ch = "br"; break; + case '"' : ch = "quot"; break; + case '\'': + ch = (level == SYM_escape_attributes) ? "apos" : "squot"; + break; + } + } + + if (ch != NULL) + { + if (t2 > t) + rb_str_cat(new_str, t, t2-t); + rb_str_concat(new_str, rb_funcall(self, rb_intern(ch), 1, rb_hash_new())); + t = t2 + 1; + } + + t2++; + } + if (t2 > t) + rb_str_cat(new_str, t, t2-t); + + return new_str; +} + +/* + * Converts special characters into LaTeX entities. + */ +static VALUE +redcloth_latex_esc(VALUE self, VALUE str) +{ + VALUE new_str = rb_str_new2(""); + StringValue(str); + + char *ts = RSTRING(str)->ptr, *te = RSTRING(str)->ptr + RSTRING(str)->len; + char *t = ts, *t2 = ts, *ch = NULL; + if (te <= ts) return; + + while (t2 < te) { + ch = NULL; + + switch (*t2) + { + case '{': ch = "#123"; break; + case '}': ch = "#125"; break; + case '\\': ch = "#92"; break; + case '#': ch = "#35"; break; + case '$': ch = "#36"; break; + case '%': ch = "#37"; break; + case '&': ch = "amp"; break; + case '_': ch = "#95"; break; + case '^': ch = "circ"; break; + case '~': ch = "tilde"; break; + case '<': ch = "lt"; break; + case '>': ch = "gt"; break; + case '\n': ch = "#10"; break; + } + + if (ch != NULL) + { + if (t2 > t) + rb_str_cat(new_str, t, t2-t); + VALUE opts = rb_hash_new(); + rb_hash_aset(opts, ID2SYM(rb_intern("text")), rb_str_new2(ch)); + rb_str_concat(new_str, rb_funcall(self, rb_intern("entity"), 1, opts)); + t = t2 + 1; + } + + t2++; + } + if (t2 > t) + rb_str_cat(new_str, t, t2-t); + + return new_str; +} + +static VALUE +redcloth_to(self, formatter) + VALUE self, formatter; +{ + char *pe, *p; + int len = 0; + + rb_funcall(self, rb_intern("delete!"), 1, rb_str_new2("\r")); + VALUE working_copy = rb_obj_clone(self); + rb_extend_object(working_copy, formatter); + if (rb_funcall(working_copy, rb_intern("lite_mode"), 0) == Qtrue) { + return redcloth_inline2(working_copy, self, rb_hash_new()); + } else { + return redcloth_transform2(working_copy, self); + } +} + +void Init_redcloth_scan() +{ + mRedCloth = rb_define_module("RedCloth"); + /* A Textile document that can be converted to other formats. See + the README for Textile syntax. */ + super_RedCloth = rb_define_class_under(mRedCloth, "TextileDoc", rb_cString); + rb_define_method(super_RedCloth, "to", redcloth_to, 1); + super_ParseError = rb_define_class_under(super_RedCloth, "ParseError", rb_eException); + /* Escaping */ + rb_define_method(super_RedCloth, "html_esc", redcloth_html_esc, -1); + rb_define_method(super_RedCloth, "latex_esc", redcloth_latex_esc, 1); + SYM_escape_preformatted = ID2SYM(rb_intern("html_escape_preformatted")); + SYM_escape_attributes = ID2SYM(rb_intern("html_escape_attributes")); +} diff --git a/vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/redcloth_scan.rl b/vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/redcloth_scan.rl new file mode 100644 index 0000000..c958dae --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/ext/redcloth_scan/redcloth_scan.rl @@ -0,0 +1,527 @@ +/* + * redcloth_scan.rl + * + * Copyright (C) 2008 Jason Garber + */ +#define redcloth_scan_c + +#include +#include "redcloth.h" + +VALUE mRedCloth, super_ParseError, super_RedCloth, super_HTML, super_LATEX; +int SYM_escape_preformatted, SYM_escape_attributes; + +%%{ + + machine redcloth_scan; + include redcloth_common "redcloth_common.rl"; + + action extend { extend = rb_hash_aref(regs, ID2SYM(rb_intern("type"))); } + + # blocks + notextile_tag_start = "" ; + notextile_tag_end = "" LF? ; + noparagraph_line_start = " "+ ; + notextile_block_start = ( "notextile" >A %{ STORE(type) } A C :> "." ( "." %extend | "" ) " "+ ) ; + pre_tag_start = "]* ">" (space* "")? ; + pre_tag_end = ("" space*)? "" LF? ; + pre_block_start = ( "pre" >A %{ STORE(type) } A C :> "." ( "." %extend | "" ) " "+ ) ; + bc_start = ( "bc" >A %{ STORE(type) } A C :> "." ( "." %extend | "" ) " "+ ) ; + bq_start = ( "bq" >A %{ STORE(type) } A C :> "." ( "." %extend | "" ) ( ":" %A uri %{ STORE(cite) } )? " "+ ) ; + non_ac_btype = ( "bq" | "bc" | "pre" | "notextile" ); + btype = (alpha alnum*) -- (non_ac_btype | "fn" digit+); + block_start = ( btype >A %{ STORE(type) } A C :> "." ( "." %extend | "" ) " "+ ) >B %{ STORE_B(fallback) }; + all_btypes = btype | non_ac_btype; + next_block_start = ( all_btypes A_noactions C_noactions :> "."+ " " ) >A @{ p = reg - 1; } ; + double_return = LF{2,} ; + block_end = ( double_return | EOF ); + ftype = ( "fn" >A %{ STORE(type) } digit+ >A %{ STORE(id) } ) ; + footnote_start = ( ftype A C :> dotspace ) ; + ul = "*" %{nest++; list_type = "ul";}; + ol = "#" %{nest++; list_type = "ol";}; + list_start = ( ( ul | ol )+ N A C :> " "+ ) >{nest = 0;} ; + dt_start = "-" . " "+ ; + dd_start = ":=" ; + long_dd = dd_start " "* LF %{ ADD_BLOCK(); ASET(type, dd); } any+ >A %{ TRANSFORM(text) } :>> "=:" ; + dl_start = (dt_start mtext (LF dt_start mtext)* " "* dd_start) ; + blank_line = LF; + link_alias = ( "[" >{ ASET(type, ignore) } %A chars %T "]" %A uri %{ STORE_URL(href); } ) ; + + # image lookahead + IMG_A_LEFT = "<" %{ ASET(float, left) } ; + IMG_A_RIGHT = ">" %{ ASET(float, right) } ; + aligned_image = ( "["? "!" (IMG_A_LEFT | IMG_A_RIGHT) ) >A @{ p = reg - 1; } ; + + # html blocks + BlockTagName = Name - ("pre" | "notextile" | "a" | "applet" | "basefont" | "bdo" | "br" | "font" | "iframe" | "img" | "map" | "object" | "param" | "q" | "script" | "span" | "sub" | "sup" | "abbr" | "acronym" | "cite" | "code" | "del" | "dfn" | "em" | "ins" | "kbd" | "samp" | "strong" | "var" | "b" | "big" | "i" | "s" | "small" | "strike" | "tt" | "u"); + block_start_tag = "<" BlockTagName space+ AttrSet* (AttrEnd)? ">" | "<" BlockTagName ">"; + block_empty_tag = "<" BlockTagName space+ AttrSet* (AttrEnd)? "/>" | "<" BlockTagName "/>" ; + block_end_tag = "" ; + html_start = indent >B %{STORE_B(indent_before_start)} block_start_tag >B %{STORE_B(start_tag)} indent >B %{STORE_B(indent_after_start)} ; + html_end = indent >B %{STORE_B(indent_before_end)} block_end_tag >B %{STORE_B(end_tag)} (indent LF?) >B %{STORE_B(indent_after_end)} ; + standalone_html = indent (block_start_tag | block_empty_tag | block_end_tag) indent LF+; + html_end_terminating_block = ( LF indent block_end_tag ) >A @{ p = reg - 1; } ; + + # tables + para = ( default+ ) -- LF ; + btext = para ( LF{2} )? ; + tddef = ( D? S A C :> dotspace ) ; + td = ( tddef? btext >A %T :> "|" >{PASS(table, text, td);} ) >X ; + trdef = ( A C :> dotspace ) ; + tr = ( trdef? "|" %{INLINE(table, tr_open);} td+ ) >X %{INLINE(table, tr_close);} ; + trows = ( tr (LF >X tr)* ) ; + tdef = ( "table" >X A C :> dotspace LF ) ; + table = ( tdef? trows >{table = rb_str_new2(""); INLINE(table, table_open);} ) >{ reg = NULL; } ; + + # info + redcloth_version = ("RedCloth" >A ("::" | " " ) "VERSION"i ":"? " ")? %{STORE(prefix)} "RedCloth::VERSION" (LF* EOF | double_return) ; + + pre_tag := |* + pre_tag_end { CAT(block); DONE(block); fgoto main; }; + default => esc_pre; + *|; + + pre_block := |* + EOF { + ADD_BLOCKCODE(); + fgoto main; + }; + double_return { + if (NIL_P(extend)) { + ADD_BLOCKCODE(); + fgoto main; + } else { + ADD_EXTENDED_BLOCKCODE(); + } + }; + double_return next_block_start { + if (NIL_P(extend)) { + ADD_BLOCKCODE(); + fgoto main; + } else { + ADD_EXTENDED_BLOCKCODE(); + END_EXTENDED(); + fgoto main; + } + }; + default => esc_pre; + *|; + + script_tag := |* + script_tag_end { CAT(block); ASET(type, ignore); ADD_BLOCK(); fgoto main; }; + EOF { ASET(type, ignore); ADD_BLOCK(); fgoto main; }; + default => cat; + *|; + + noparagraph_line := |* + LF { ADD_BLOCK(); fgoto main; }; + default => cat; + *|; + + notextile_tag := |* + notextile_tag_end { ADD_BLOCK(); fgoto main; }; + default => cat; + *|; + + notextile_block := |* + EOF { + ADD_BLOCK(); + fgoto main; + }; + double_return { + if (NIL_P(extend)) { + ADD_BLOCK(); + CAT(html); + fgoto main; + } else { + CAT(block); + ADD_EXTENDED_BLOCK(); + CAT(html); + } + }; + double_return next_block_start { + if (NIL_P(extend)) { + ADD_BLOCK(); + CAT(html); + fgoto main; + } else { + CAT(block); + ADD_EXTENDED_BLOCK(); + END_EXTENDED(); + fgoto main; + } + }; + default => cat; + *|; + + html := |* + html_end { ADD_BLOCK(); fgoto main; }; + default => cat; + *|; + + bc := |* + EOF { + ADD_BLOCKCODE(); + INLINE(html, bc_close); + plain_block = rb_str_new2("p"); + fgoto main; + }; + double_return { + if (NIL_P(extend)) { + ADD_BLOCKCODE(); + INLINE(html, bc_close); + plain_block = rb_str_new2("p"); + fgoto main; + } else { + ADD_EXTENDED_BLOCKCODE(); + CAT(html); + } + }; + double_return next_block_start { + if (NIL_P(extend)) { + ADD_BLOCKCODE(); + INLINE(html, bc_close); + plain_block = rb_str_new2("p"); + fgoto main; + } else { + ADD_EXTENDED_BLOCKCODE(); + CAT(html); + INLINE(html, bc_close); + plain_block = rb_str_new2("p"); + END_EXTENDED(); + fgoto main; + } + }; + default => esc_pre; + *|; + + bq := |* + EOF { + ADD_BLOCK(); + INLINE(html, bq_close); + fgoto main; + }; + double_return { + if (NIL_P(extend)) { + ADD_BLOCK(); + INLINE(html, bq_close); + fgoto main; + } else { + ADD_EXTENDED_BLOCK(); + } + }; + double_return next_block_start { + if (NIL_P(extend)) { + ADD_BLOCK(); + INLINE(html, bq_close); + fgoto main; + } else { + ADD_EXTENDED_BLOCK(); + INLINE(html, bq_close); + END_EXTENDED(); + fgoto main; + } + }; + html_end_terminating_block { + if (NIL_P(extend)) { + ADD_BLOCK(); + INLINE(html, bq_close); + fgoto main; + } else { + ADD_EXTENDED_BLOCK(); + INLINE(html, bq_close); + END_EXTENDED(); + fgoto main; + } + }; + default => cat; + *|; + + block := |* + EOF { + ADD_BLOCK(); + fgoto main; + }; + double_return { + if (NIL_P(extend)) { + ADD_BLOCK(); + fgoto main; + } else { + ADD_EXTENDED_BLOCK(); + } + }; + double_return next_block_start { + if (NIL_P(extend)) { + ADD_BLOCK(); + fgoto main; + } else { + ADD_EXTENDED_BLOCK(); + END_EXTENDED(); + fgoto main; + } + }; + html_end_terminating_block { + if (NIL_P(extend)) { + ADD_BLOCK(); + fgoto main; + } else { + ADD_EXTENDED_BLOCK(); + END_EXTENDED(); + fgoto main; + } + }; + LF list_start { + ADD_BLOCK(); + list_layout = rb_ary_new(); + LIST_ITEM(); + fgoto list; + }; + + default => cat; + *|; + + footnote := |* + block_end { ADD_BLOCK(); fgoto main; }; + default => cat; + *|; + + list := |* + LF list_start { ADD_BLOCK(); LIST_ITEM(); }; + block_end { ADD_BLOCK(); nest = 0; LIST_CLOSE(); fgoto main; }; + default => cat; + *|; + + dl := |* + LF dt_start { ADD_BLOCK(); ASET(type, dt); }; + dd_start { ADD_BLOCK(); ASET(type, dd); }; + long_dd { INLINE(html, dd); }; + block_end { ADD_BLOCK(); INLINE(html, dl_close); fgoto main; }; + default => cat; + *|; + + main := |* + noparagraph_line_start { ASET(type, ignored_line); fgoto noparagraph_line; }; + notextile_tag_start { ASET(type, notextile); fgoto notextile_tag; }; + notextile_block_start { ASET(type, notextile); fgoto notextile_block; }; + script_tag_start { CAT(block); fgoto script_tag; }; + pre_tag_start { ASET(type, notextile); CAT(block); fgoto pre_tag; }; + pre_block_start { fgoto pre_block; }; + standalone_html { ASET(type, html); CAT(block); ADD_BLOCK(); }; + html_start { ASET(type, html_block); fgoto html; }; + bc_start { INLINE(html, bc_open); ASET(type, code); plain_block = rb_str_new2("code"); fgoto bc; }; + bq_start { INLINE(html, bq_open); ASET(type, p); fgoto bq; }; + block_start { fgoto block; }; + footnote_start { fgoto footnote; }; + list_start { list_layout = rb_ary_new(); LIST_ITEM(); fgoto list; }; + dl_start { p = ts; INLINE(html, dl_open); ASET(type, dt); fgoto dl; }; + table { INLINE(table, table_close); DONE(table); fgoto block; }; + link_alias { rb_hash_aset(refs_found, rb_hash_aref(regs, ID2SYM(rb_intern("text"))), rb_hash_aref(regs, ID2SYM(rb_intern("href")))); DONE(block); }; + aligned_image { rb_hash_aset(regs, ID2SYM(rb_intern("type")), plain_block); fgoto block; }; + redcloth_version { INLINE(html, redcloth_version); }; + blank_line => cat; + default + { + CLEAR_REGS(); + rb_hash_aset(regs, ID2SYM(rb_intern("type")), plain_block); + CAT(block); + fgoto block; + }; + EOF; + *|; + +}%% + +%% write data nofinal; + +VALUE +redcloth_transform(self, p, pe, refs) + VALUE self; + char *p, *pe; + VALUE refs; +{ + char *orig_p = p, *orig_pe = pe; + int cs, act, nest; + char *ts = NULL, *te = NULL, *reg = NULL, *bck = NULL, *eof = NULL; + VALUE html = rb_str_new2(""); + VALUE table = rb_str_new2(""); + VALUE block = rb_str_new2(""); + VALUE regs; CLEAR_REGS() + + + VALUE list_layout = Qnil; + char *list_type = NULL; + VALUE list_index = rb_ary_new(); + int list_continue = 0; + VALUE plain_block = rb_str_new2("p"); + VALUE extend = Qnil; + char listm[10] = ""; + VALUE refs_found = rb_hash_new(); + + %% write init; + + %% write exec; + + if (RSTRING(block)->len > 0) + { + ADD_BLOCK(); + } + + if ( NIL_P(refs) && rb_funcall(refs_found, rb_intern("empty?"), 0) == Qfalse ) { + return redcloth_transform(self, orig_p, orig_pe, refs_found); + } else { + rb_funcall(self, rb_intern("after_transform"), 1, html); + return html; + } +} + +VALUE +redcloth_transform2(self, str) + VALUE self, str; +{ + rb_str_cat2(str, "\n"); + StringValue(str); + rb_funcall(self, rb_intern("before_transform"), 1, str); + return redcloth_transform(self, RSTRING(str)->ptr, RSTRING(str)->ptr + RSTRING(str)->len + 1, Qnil); +} + +/* + * Converts special characters into HTML entities. + */ +static VALUE +redcloth_html_esc(int argc, VALUE* argv, VALUE self) //(self, str, level) +{ + VALUE str, level; + + rb_scan_args(argc, argv, "11", &str, &level); + + VALUE new_str = rb_str_new2(""); + StringValue(str); + + if (RSTRING(str)->len == 0) + return new_str; + + char *ts = RSTRING(str)->ptr, *te = RSTRING(str)->ptr + RSTRING(str)->len; + char *t = ts, *t2 = ts, *ch = NULL; + if (te <= ts) return; + + while (t2 < te) { + ch = NULL; + + // normal + pre + switch (*t2) + { + case '&': ch = "amp"; break; + case '>': ch = "gt"; break; + case '<': ch = "lt"; break; + } + + // normal (non-pre) + if (level != SYM_escape_preformatted) { + switch (*t2) + { + case '\n': ch = "br"; break; + case '"' : ch = "quot"; break; + case '\'': + ch = (level == SYM_escape_attributes) ? "apos" : "squot"; + break; + } + } + + if (ch != NULL) + { + if (t2 > t) + rb_str_cat(new_str, t, t2-t); + rb_str_concat(new_str, rb_funcall(self, rb_intern(ch), 1, rb_hash_new())); + t = t2 + 1; + } + + t2++; + } + if (t2 > t) + rb_str_cat(new_str, t, t2-t); + + return new_str; +} + +/* + * Converts special characters into LaTeX entities. + */ +static VALUE +redcloth_latex_esc(VALUE self, VALUE str) +{ + VALUE new_str = rb_str_new2(""); + StringValue(str); + + char *ts = RSTRING(str)->ptr, *te = RSTRING(str)->ptr + RSTRING(str)->len; + char *t = ts, *t2 = ts, *ch = NULL; + if (te <= ts) return; + + while (t2 < te) { + ch = NULL; + + switch (*t2) + { + case '{': ch = "#123"; break; + case '}': ch = "#125"; break; + case '\\': ch = "#92"; break; + case '#': ch = "#35"; break; + case '$': ch = "#36"; break; + case '%': ch = "#37"; break; + case '&': ch = "amp"; break; + case '_': ch = "#95"; break; + case '^': ch = "circ"; break; + case '~': ch = "tilde"; break; + case '<': ch = "lt"; break; + case '>': ch = "gt"; break; + case '\n': ch = "#10"; break; + } + + if (ch != NULL) + { + if (t2 > t) + rb_str_cat(new_str, t, t2-t); + VALUE opts = rb_hash_new(); + rb_hash_aset(opts, ID2SYM(rb_intern("text")), rb_str_new2(ch)); + rb_str_concat(new_str, rb_funcall(self, rb_intern("entity"), 1, opts)); + t = t2 + 1; + } + + t2++; + } + if (t2 > t) + rb_str_cat(new_str, t, t2-t); + + return new_str; +} + +static VALUE +redcloth_to(self, formatter) + VALUE self, formatter; +{ + char *pe, *p; + int len = 0; + + rb_funcall(self, rb_intern("delete!"), 1, rb_str_new2("\r")); + VALUE working_copy = rb_obj_clone(self); + rb_extend_object(working_copy, formatter); + if (rb_funcall(working_copy, rb_intern("lite_mode"), 0) == Qtrue) { + return redcloth_inline2(working_copy, self, rb_hash_new()); + } else { + return redcloth_transform2(working_copy, self); + } +} + +void Init_redcloth_scan() +{ + mRedCloth = rb_define_module("RedCloth"); + /* A Textile document that can be converted to other formats. See + the README for Textile syntax. */ + super_RedCloth = rb_define_class_under(mRedCloth, "TextileDoc", rb_cString); + rb_define_method(super_RedCloth, "to", redcloth_to, 1); + super_ParseError = rb_define_class_under(super_RedCloth, "ParseError", rb_eException); + /* Escaping */ + rb_define_method(super_RedCloth, "html_esc", redcloth_html_esc, -1); + rb_define_method(super_RedCloth, "latex_esc", redcloth_latex_esc, 1); + SYM_escape_preformatted = ID2SYM(rb_intern("html_escape_preformatted")); + SYM_escape_attributes = ID2SYM(rb_intern("html_escape_attributes")); +} diff --git a/vendor/gems/RedCloth-4.0.3/extras/mingw-rbconfig.rb b/vendor/gems/RedCloth-4.0.3/extras/mingw-rbconfig.rb new file mode 100644 index 0000000..b58aed5 --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/extras/mingw-rbconfig.rb @@ -0,0 +1,176 @@ + +# This rbconfig.rb corresponds to a Ruby installation for win32 cross-compiled +# with mingw under i686-linux. It can be used to cross-compile extensions for +# win32 using said toolchain. +# +# This file assumes that a cross-compiled mingw32 build (compatible with the +# mswin32 builds) is installed under $HOME/ruby-mingw32. + +module Config + #RUBY_VERSION == "1.8.5" or + # raise "ruby lib version (1.8.5) doesn't match executable version (#{RUBY_VERSION})" + + mingw32 = ENV['MINGW32_RUBY'] || "#{ENV["HOME"]}/ruby-mingw32" + mingwpre = ENV['MINGW32_PREFIX'] + TOPDIR = File.dirname(__FILE__).chomp!("/lib/ruby/1.8/i386-mingw32") + DESTDIR = '' unless defined? DESTDIR + CONFIG = {} + CONFIG["DESTDIR"] = DESTDIR + CONFIG["INSTALL"] = "/usr/bin/install -c" + CONFIG["prefix"] = (TOPDIR || DESTDIR + mingw32) + CONFIG["EXEEXT"] = ".exe" + CONFIG["ruby_install_name"] = "ruby" + CONFIG["RUBY_INSTALL_NAME"] = "ruby" + CONFIG["RUBY_SO_NAME"] = "msvcrt-ruby18" + CONFIG["SHELL"] = "/bin/sh" + CONFIG["PATH_SEPARATOR"] = ":" + CONFIG["PACKAGE_NAME"] = "" + CONFIG["PACKAGE_TARNAME"] = "" + CONFIG["PACKAGE_VERSION"] = "" + CONFIG["PACKAGE_STRING"] = "" + CONFIG["PACKAGE_BUGREPORT"] = "" + CONFIG["exec_prefix"] = "$(prefix)" + CONFIG["bindir"] = "$(exec_prefix)/bin" + CONFIG["sbindir"] = "$(exec_prefix)/sbin" + CONFIG["libexecdir"] = "$(exec_prefix)/libexec" + CONFIG["datadir"] = "$(prefix)/share" + CONFIG["sysconfdir"] = "$(prefix)/etc" + CONFIG["sharedstatedir"] = "$(prefix)/com" + CONFIG["localstatedir"] = "$(prefix)/var" + CONFIG["libdir"] = "$(exec_prefix)/lib" + CONFIG["includedir"] = "$(prefix)/include" + CONFIG["oldincludedir"] = "/usr/include" + CONFIG["infodir"] = "$(prefix)/info" + CONFIG["mandir"] = "$(prefix)/man" + CONFIG["build_alias"] = "i686-linux" + CONFIG["host_alias"] = "#{mingwpre}" + CONFIG["target_alias"] = "i386-mingw32" + CONFIG["ECHO_C"] = "" + CONFIG["ECHO_N"] = "-n" + CONFIG["ECHO_T"] = "" + CONFIG["LIBS"] = "-lwsock32 " + CONFIG["MAJOR"] = "1" + CONFIG["MINOR"] = "8" + CONFIG["TEENY"] = "4" + CONFIG["build"] = "i686-pc-linux" + CONFIG["build_cpu"] = "i686" + CONFIG["build_vendor"] = "pc" + CONFIG["build_os"] = "linux" + CONFIG["host"] = "i586-pc-mingw32msvc" + CONFIG["host_cpu"] = "i586" + CONFIG["host_vendor"] = "pc" + CONFIG["host_os"] = "mingw32msvc" + CONFIG["target"] = "i386-pc-mingw32" + CONFIG["target_cpu"] = "i386" + CONFIG["target_vendor"] = "pc" + CONFIG["target_os"] = "mingw32" + CONFIG["CC"] = "#{mingwpre}-gcc" + CONFIG["CFLAGS"] = "-g " + CONFIG["LDFLAGS"] = "" + CONFIG["CPPFLAGS"] = "" + CONFIG["OBJEXT"] = "o" + CONFIG["CPP"] = "#{mingwpre}-gcc -E" + CONFIG["EGREP"] = "grep -E" + CONFIG["GNU_LD"] = "yes" + CONFIG["CPPOUTFILE"] = "-o conftest.i" + CONFIG["OUTFLAG"] = "-o " + CONFIG["YACC"] = "bison -y" + CONFIG["RANLIB"] = "#{mingwpre}-ranlib" + CONFIG["AR"] = "#{mingwpre}-ar" + CONFIG["NM"] = "#{mingwpre}-nm" + CONFIG["WINDRES"] = "#{mingwpre}-windres" + CONFIG["DLLWRAP"] = "#{mingwpre}-dllwrap" + CONFIG["OBJDUMP"] = "#{mingwpre}-objdump" + CONFIG["LN_S"] = "ln -s" + CONFIG["SET_MAKE"] = "" + CONFIG["INSTALL_PROGRAM"] = "$(INSTALL)" + CONFIG["INSTALL_SCRIPT"] = "$(INSTALL)" + CONFIG["INSTALL_DATA"] = "$(INSTALL) -m 644" + CONFIG["RM"] = "rm -f" + CONFIG["CP"] = "cp" + CONFIG["MAKEDIRS"] = "mkdir -p" + CONFIG["LIBOBJS"] = " fileblocks$(U).o crypt$(U).o flock$(U).o acosh$(U).o win32$(U).o" + CONFIG["ALLOCA"] = "" + CONFIG["DLDFLAGS"] = " -Wl,--enable-auto-import,--export-all" + CONFIG["ARCH_FLAG"] = "" + CONFIG["STATIC"] = "" + CONFIG["CCDLFLAGS"] = "" + CONFIG["LDSHARED"] = "#{mingwpre}-gcc -shared -s" + CONFIG["DLEXT"] = "so" + CONFIG["DLEXT2"] = "dll" + CONFIG["LIBEXT"] = "a" + CONFIG["LINK_SO"] = "" + CONFIG["LIBPATHFLAG"] = " -L\"%s\"" + CONFIG["RPATHFLAG"] = "" + CONFIG["LIBPATHENV"] = "" + CONFIG["TRY_LINK"] = "" + CONFIG["STRIP"] = "strip" + CONFIG["EXTSTATIC"] = "" + CONFIG["setup"] = "Setup" + CONFIG["MINIRUBY"] = "ruby -rfake" + CONFIG["PREP"] = "fake.rb" + CONFIG["RUNRUBY"] = "$(MINIRUBY) -I`cd $(srcdir)/lib; pwd`" + CONFIG["EXTOUT"] = ".ext" + CONFIG["ARCHFILE"] = "" + CONFIG["RDOCTARGET"] = "" + CONFIG["XCFLAGS"] = " -DRUBY_EXPORT" + CONFIG["XLDFLAGS"] = " -Wl,--stack,0x02000000 -L." + CONFIG["LIBRUBY_LDSHARED"] = "#{mingwpre}-gcc -shared -s" + CONFIG["LIBRUBY_DLDFLAGS"] = " -Wl,--enable-auto-import,--export-all -Wl,--out-implib=$(LIBRUBY)" + CONFIG["rubyw_install_name"] = "rubyw" + CONFIG["RUBYW_INSTALL_NAME"] = "rubyw" + CONFIG["LIBRUBY_A"] = "lib$(RUBY_SO_NAME)-static.a" + CONFIG["LIBRUBY_SO"] = "$(RUBY_SO_NAME).dll" + CONFIG["LIBRUBY_ALIASES"] = "" + CONFIG["LIBRUBY"] = "lib$(LIBRUBY_SO).a" + CONFIG["LIBRUBYARG"] = "$(LIBRUBYARG_SHARED)" + CONFIG["LIBRUBYARG_STATIC"] = "-l$(RUBY_SO_NAME)-static" + CONFIG["LIBRUBYARG_SHARED"] = "-l$(RUBY_SO_NAME)" + CONFIG["SOLIBS"] = "$(LIBS)" + CONFIG["DLDLIBS"] = "" + CONFIG["ENABLE_SHARED"] = "yes" + CONFIG["MAINLIBS"] = "" + CONFIG["COMMON_LIBS"] = "m" + CONFIG["COMMON_MACROS"] = "" + CONFIG["COMMON_HEADERS"] = "windows.h winsock.h" + CONFIG["EXPORT_PREFIX"] = "" + CONFIG["MINIOBJS"] = "dmydln.o" + CONFIG["MAKEFILES"] = "Makefile GNUmakefile" + CONFIG["arch"] = "i386-mingw32" + CONFIG["sitearch"] = "i386-msvcrt" + CONFIG["sitedir"] = "$(prefix)/lib/ruby/site_ruby" + CONFIG["configure_args"] = "'--host=#{mingwpre}' '--target=i386-mingw32' '--build=i686-linux' '--prefix=#{mingw32}' 'build_alias=i686-linux' 'host_alias=#{mingwpre}' 'target_alias=i386-mingw32'" + CONFIG["NROFF"] = "/usr/bin/nroff" + CONFIG["MANTYPE"] = "doc" + CONFIG["LTLIBOBJS"] = " fileblocks$(U).lo crypt$(U).lo flock$(U).lo acosh$(U).lo win32$(U).lo" + CONFIG["ruby_version"] = "$(MAJOR).$(MINOR)" + CONFIG["rubylibdir"] = "$(libdir)/ruby/$(ruby_version)" + CONFIG["archdir"] = "$(rubylibdir)/$(arch)" + CONFIG["sitelibdir"] = "$(sitedir)/$(ruby_version)" + CONFIG["sitearchdir"] = "$(sitelibdir)/$(sitearch)" + CONFIG["topdir"] = File.dirname(__FILE__) + MAKEFILE_CONFIG = {} + CONFIG.each{|k,v| MAKEFILE_CONFIG[k] = v.dup} + def Config::expand(val, config = CONFIG) + val.gsub!(/\$\$|\$\(([^()]+)\)|\$\{([^{}]+)\}/) do |var| + if !(v = $1 || $2) + '$' + elsif key = config[v = v[/\A[^:]+(?=(?::(.*?)=(.*))?\z)/]] + pat, sub = $1, $2 + config[v] = false + Config::expand(key, config) + config[v] = key + key = key.gsub(/#{Regexp.quote(pat)}(?=\s|\z)/n) {sub} if pat + key + else + var + end + end + val + end + CONFIG.each_value do |val| + Config::expand(val) + end +end +RbConfig = Config # compatibility for ruby-1.9 +CROSS_COMPILING = nil unless defined? CROSS_COMPILING diff --git a/vendor/gems/RedCloth-4.0.3/extras/ragel_profiler.rb b/vendor/gems/RedCloth-4.0.3/extras/ragel_profiler.rb new file mode 100644 index 0000000..9d84b6a --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/extras/ragel_profiler.rb @@ -0,0 +1,73 @@ +class RagelProfiler + MEM_CONVERSION = 1024 + + COMMANDS = { :compile => %w(ragel rlgen-cd gcc-4.0 gnumake cc1), + :test => %w(ruby) } + + FIELDS = %w(compile_time compile_max_rss test_time test_max_rss ext_so_size) + + @@results = {} + + def initialize(name) + @name = name + @@results[name] = [] + end + + def measure(type) + raise "not a valid type" unless COMMANDS.keys.include?(type) + regex = COMMANDS[type].map {|c| Regexp.escape(c) }.join("|") + t = Thread.new do + Thread.current[:max] = 0 + loop do + Thread.current[:max] = [run(regex), Thread.current[:max]].max + sleep 0.5 + end + end + begin_time = Time.now + yield + total_time = Time.now - begin_time + + t.kill + store_result(type, "time", total_time) + store_result(type, "max_rss", t[:max]) + end + + def ext_size(ext_so) + store_result(:ext_so, "size", File.size(ext_so) / MEM_CONVERSION) + end + + def self.results + out = [] + out << "name\t" + FIELDS.join("\t") + @@results.each do |name, results| + out << [name, results ].flatten.join("\t") + end + out.join("\n") + end + + private + + def store_result(type, metric, value) + index = FIELDS.index("#{type.to_s}_#{metric}") + @@results[@name][index] = "%.2f" % value + end + + def run(ps_regex) + ps_command = "ps axucww" + ps_output = `#{ps_command}` + fields = ps_output.to_a.first.downcase.split + memory_index = fields.index("rss") + pid_index = fields.index("pid") + ppid_index = fields.index("ppid") + total = ps_output.grep(/(#{ps_regex})\s+$/i).map do |com| + Float(com.split[memory_index]).abs + end.inject(0) { |s,v| s += v } + if total + return total/MEM_CONVERSION + else + STDERR.puts "Command not found. No processes found matching #{ps_regex}." + end + + end + +end \ No newline at end of file diff --git a/vendor/gems/RedCloth-4.0.3/lib/case_sensitive_require/RedCloth.rb b/vendor/gems/RedCloth-4.0.3/lib/case_sensitive_require/RedCloth.rb new file mode 100644 index 0000000..a333be6 --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/lib/case_sensitive_require/RedCloth.rb @@ -0,0 +1,6 @@ +# A workaround to make Rails 2.1 gem dependency easier on case-sensitive filesystems. +# Since the gem name is RedCloth and the file is redcloth.rb, config.gem 'RedCloth' doesn't +# work. You'd have to use config.gem 'RedCloth', :lib => 'redcloth', and that's not +# immediately obvious. This file remedies that. +# +require File.join(File.dirname(__FILE__), '..', 'redcloth') \ No newline at end of file diff --git a/vendor/gems/RedCloth-4.0.3/lib/redcloth.rb b/vendor/gems/RedCloth-4.0.3/lib/redcloth.rb new file mode 100644 index 0000000..6f9ccf0 --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/lib/redcloth.rb @@ -0,0 +1,31 @@ +$:.unshift(File.dirname(__FILE__)) + +# If this is a frozen gem in Rails 2.1 and RedCloth 3.x was already +# loaded by Rails' ActionView::Helpers::TextHelper, the user will get +# "redcloth_scan.bundle: Class is not a module (TypeError)" +# This hack is to work around that Rails loading problem. The problem +# appears to be fixed in Edge Rails [51e4106]. +Object.send(:remove_const, :RedCloth) if Object.const_defined?(:RedCloth) && RedCloth.is_a?(Class) + +require 'redcloth_scan' +require 'redcloth/version' +require 'redcloth/textile_doc' +require 'redcloth/formatters/base' +require 'redcloth/formatters/html' +require 'redcloth/formatters/latex' + +module RedCloth + + # A convenience method for creating a new TextileDoc. See + # RedCloth::TextileDoc. + def self.new( *args, &block ) + RedCloth::TextileDoc.new( *args, &block ) + end + + # Include extension modules (if any) in TextileDoc. + def self.include(*args) + RedCloth::TextileDoc.send(:include, *args) + end + +end + diff --git a/vendor/gems/RedCloth-4.0.3/lib/redcloth/formatters/base.rb b/vendor/gems/RedCloth-4.0.3/lib/redcloth/formatters/base.rb new file mode 100644 index 0000000..50db6a4 --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/lib/redcloth/formatters/base.rb @@ -0,0 +1,57 @@ +module RedCloth::Formatters + module Base + + def pba(opts) + opts.delete(:style) if filter_styles + opts.delete(:class) if filter_classes + opts.delete(:id) if filter_ids + + atts = '' + opts[:"text-align"] = opts.delete(:align) + opts[:style] += ';' if opts[:style] && (opts[:style][-1..-1] != ';') + [:float, :"text-align", :"vertical-align"].each do |a| + opts[:style] = "#{a}:#{opts[a]};#{opts[:style]}" if opts[a] + end + [:"padding-right", :"padding-left"].each do |a| + opts[:style] = "#{a}:#{opts[a]}em;#{opts[:style]}" if opts[a] + end + [:style, :class, :lang, :id, :colspan, :rowspan, :title, :start, :align].each do |a| + atts << " #{a}=\"#{ html_esc(opts[a].to_s, :html_escape_attributes) }\"" if opts[a] + end + atts + end + + def ignore(opts) + opts[:text] + end + alias_method :notextile, :ignore + + def redcloth_version(opts) + p(:text => "#{opts[:prefix]}#{RedCloth::VERSION}") + end + + def inline_redcloth_version(opts) + RedCloth::VERSION::STRING + end + + [:del_phrase, :sup_phrase, :sub_phrase].each do |phrase_method| + method = phrase_method.to_s[0..2] + define_method(phrase_method) do |opts| + "#{opts[:beginning_space]}#{self.send(method, opts)}" + end + end + + def method_missing(method, opts) + opts[:text] || "" + end + + def before_transform(text) + + end + + def after_transform(text) + + end + + end +end diff --git a/vendor/gems/RedCloth-4.0.3/lib/redcloth/formatters/html.rb b/vendor/gems/RedCloth-4.0.3/lib/redcloth/formatters/html.rb new file mode 100644 index 0000000..8129ca5 --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/lib/redcloth/formatters/html.rb @@ -0,0 +1,345 @@ +module RedCloth::Formatters::HTML + include RedCloth::Formatters::Base + + # escapement for regular HTML (not in PRE tag) + def escape(text) + html_esc(text) + end + + # escapement for HTML in a PRE tag + def escape_pre(text) + html_esc(text, :html_escape_preformatted) + end + + # escaping for HTML attributes + def escape_attribute(text) + html_esc(text, :html_escape_attributes) + end + + def after_transform(text) + text.chomp! + end + + [:h1, :h2, :h3, :h4, :h5, :h6, :p, :pre, :div].each do |m| + define_method(m) do |opts| + "<#{m}#{pba(opts)}>#{opts[:text]}\n" + end + end + + [:strong, :code, :em, :i, :b, :ins, :sup, :sub, :span, :cite].each do |m| + define_method(m) do |opts| + opts[:block] = true + "<#{m}#{pba(opts)}>#{opts[:text]}" + end + end + + def acronym(opts) + opts[:block] = true + "#{caps(:text => opts[:text])}" + end + + def caps(opts) + if no_span_caps + opts[:text] + else + opts[:class] = 'caps' + span(opts) + end + end + + def del(opts) + opts[:block] = true + "#{opts[:text]}" + end + + [:ol, :ul].each do |m| + define_method("#{m}_open") do |opts| + opts[:block] = true + "#{"\n" if opts[:nest] > 1}#{"\t" * (opts[:nest] - 1)}<#{m}#{pba(opts)}>\n" + end + define_method("#{m}_close") do |opts| + "#{li_close}#{"\t" * (opts[:nest] - 1)}#{"\n" if opts[:nest] <= 1}" + end + end + + def li_open(opts) + "#{li_close unless opts.delete(:first)}#{"\t" * opts[:nest]}#{opts[:text]}" + end + + def li_close(opts=nil) + "\n" + end + + def dl_open(opts) + opts[:block] = true + "\n" + end + + def dl_close(opts=nil) + "\n" + end + + [:dt, :dd].each do |m| + define_method(m) do |opts| + "\t<#{m}#{pba(opts)}>#{opts[:text]}\n" + end + end + + def td(opts) + tdtype = opts[:th] ? 'th' : 'td' + "\t\t<#{tdtype}#{pba(opts)}>#{opts[:text]}\n" + end + + def tr_open(opts) + "\t\n" + end + + def tr_close(opts) + "\t\n" + end + + def table_open(opts) + "\n" + end + + def table_close(opts) + "\n" + end + + def bc_open(opts) + opts[:block] = true + "" + end + + def bc_close(opts) + "\n" + end + + def bq_open(opts) + opts[:block] = true + cite = opts[:cite] ? " cite=\"#{ escape_attribute opts[:cite] }\"" : '' + "\n" + end + + def bq_close(opts) + "\n" + end + + LINK_TEXT_WITH_TITLE_RE = / + ([^"]+?) # $text + \s? + \(([^)]+?)\) # $title + $ + /x + def link(opts) + if opts[:name] =~ LINK_TEXT_WITH_TITLE_RE + md = LINK_TEXT_WITH_TITLE_RE.match(opts[:name]) + opts[:name] = md[1] + opts[:title] = md[2] + end + "#{opts[:name]}" + end + + def image(opts) + opts.delete(:align) + opts[:alt] = opts[:title] + img = "\"#{escape_attribute" + img = "#{img}" if opts[:href] + img + end + + def footno(opts) + opts[:id] ||= opts[:text] + %Q{#{opts[:text]}} + end + + def fn(opts) + no = opts[:id] + opts[:id] = "fn#{no}" + opts[:class] = ["footnote", opts[:class]].compact.join(" ") + "#{no} #{opts[:text]}

\n" + end + + def snip(opts) + "#{opts[:text]}\n" + end + + def quote1(opts) + "‘#{opts[:text]}’" + end + + def quote2(opts) + "“#{opts[:text]}”" + end + + def ellipsis(opts) + "#{opts[:text]}…" + end + + def emdash(opts) + "—" + end + + def endash(opts) + " – " + end + + def arrow(opts) + "→" + end + + def dim(opts) + opts[:text].gsub!('x', '×') + opts[:text].gsub!("'", '′') + opts[:text].gsub!('"', '″') + opts[:text] + end + + def trademark(opts) + "™" + end + + def registered(opts) + "®" + end + + def copyright(opts) + "©" + end + + def entity(opts) + "&#{opts[:text]};" + end + + def amp(opts) + "&" + end + + def gt(opts) + ">" + end + + def lt(opts) + "<" + end + + def br(opts) + if hard_breaks == false + "\n" + else + "
\n" + end + end + + def quot(opts) + """ + end + + def squot(opts) + "’" + end + + def apos(opts) + "'" + end + + def html(opts) + "#{opts[:text]}\n" + end + + def html_block(opts) + inline_html(:text => "#{opts[:indent_before_start]}#{opts[:start_tag]}#{opts[:indent_after_start]}") + + "#{opts[:text]}" + + inline_html(:text => "#{opts[:indent_before_end]}#{opts[:end_tag]}#{opts[:indent_after_end]}") + end + + def notextile(opts) + if filter_html + html_esc(opts[:text], :html_escape_preformatted) + else + opts[:text] + end + end + + def inline_html(opts) + if filter_html + html_esc(opts[:text], :html_escape_preformatted) + else + "#{opts[:text]}" # nil-safe + end + end + + def ignored_line(opts) + opts[:text] + "\n" + end + + def before_transform(text) + clean_html(text) if sanitize_html + end + + # HTML cleansing stuff + BASIC_TAGS = { + 'a' => ['href', 'title'], + 'img' => ['src', 'alt', 'title'], + 'br' => [], + 'i' => nil, + 'u' => nil, + 'b' => nil, + 'pre' => nil, + 'kbd' => nil, + 'code' => ['lang'], + 'cite' => nil, + 'strong' => nil, + 'em' => nil, + 'ins' => nil, + 'sup' => nil, + 'sub' => nil, + 'del' => nil, + 'table' => nil, + 'tr' => nil, + 'td' => ['colspan', 'rowspan'], + 'th' => nil, + 'ol' => ['start'], + 'ul' => nil, + 'li' => nil, + 'p' => nil, + 'h1' => nil, + 'h2' => nil, + 'h3' => nil, + 'h4' => nil, + 'h5' => nil, + 'h6' => nil, + 'blockquote' => ['cite'], + 'notextile' => nil + } + + # Clean unauthorized tags. + def clean_html( text, allowed_tags = BASIC_TAGS ) + text.gsub!( /]*?)(\s?\/?)>/ ) do |m| + raw = $~ + tag = raw[2].downcase + if allowed_tags.has_key? tag + pcs = [tag] + allowed_tags[tag].each do |prop| + ['"', "'", ''].each do |q| + q2 = ( q != '' ? q : '\s' ) + if raw[3] =~ /#{prop}\s*=\s*#{q}([^#{q2}]+)#{q}/i + attrv = $1 + next if (prop == 'src' or prop == 'href') and not attrv =~ %r{^(http|https|ftp):} + pcs << "#{prop}=\"#{attrv.gsub('"', '\\"')}\"" + break + end + end + end if allowed_tags[tag] + "<#{raw[1]}#{pcs.join " "}#{raw[4]}>" + else # Unauthorized tag + if block_given? + yield m + else + '' + end + end + end + end +end diff --git a/vendor/gems/RedCloth-4.0.3/lib/redcloth/formatters/latex.rb b/vendor/gems/RedCloth-4.0.3/lib/redcloth/formatters/latex.rb new file mode 100644 index 0000000..c4e403d --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/lib/redcloth/formatters/latex.rb @@ -0,0 +1,223 @@ +require 'yaml' + +module RedCloth::Formatters::LATEX + include RedCloth::Formatters::Base + + ENTITIES = YAML::load(File.read(File.dirname(__FILE__)+'/latex_entities.yml')) + + def escape(text) + latex_esc(text) + end + + def escape_pre(text) + text + end + + # headers + { :h1 => 'section*', + :h2 => 'subsection*', + :h3 => 'subsubsection*', + :h4 => 'textbf', + :h5 => 'textbf', + :h6 => 'textbf', + }.each do |m,tag| + define_method(m) do |opts| + "\\#{tag}{#{opts[:text]}}\n\n" + end + end + + # commands + { :strong => 'textbf', + :em => 'emph', + :i => 'emph', + :b => 'textbf', + :ins => 'underline', + :del => 'sout', + :acronym => 'MakeUppercase', + :caps => 'MakeUppercase', + }.each do |m,tag| + define_method(m) do |opts| + "\\#{tag}{#{opts[:text]}}" + end + end + + { :sup => '\ensuremath{^\textrm{#1}}', + :sub => '\ensuremath{_\textrm{#1}}', + }.each do |m, expr| + define_method(m) do |opts| + expr.sub('#1', opts[:text]) + end + end + + # environments + { :pre => 'verbatim', + :code => 'verbatim', + :cite => 'quote', + }.each do |m, env| + define_method(m) do |opts| + begin_chunk(env) + opts[:text] + end_chunk(env) + end + end + + # ignore (or find a good solution later) + [ :span, + :div, + ].each do |m| + define_method(m) do |opts| + opts[:text].to_s + end + end + + { :ol => 'enumerate', + :ul => 'itemize', + }.each do |m, env| + define_method("#{m}_open") do |opts| + opts[:block] = true + "\\begin{#{env}}\n" + end + define_method("#{m}_close") do |opts| + "#{li_close}\\end{#{env}}\n\n" + end + end + + def li_open(opts) + "#{li_close unless opts.delete(:first)}\t\\item #{opts[:text]}" + end + + def li_close(opts=nil) + "\n" + end + + def p(opts) + opts[:text] + "\n\n" + end + + def td(opts) + "\t\t\t#{opts[:text]} &\n" + end + + def tr_open(opts) + "\t\t" + end + + def tr_close(opts) + "\t\t\\\\\n" + end + + # FIXME: we need to know the column count before opening tabular context. + def table_open(opts) + "\\begin{align*}\n" + end + + def table_close(opts) + "\t\\end{align*}\n" + end + + def bc_open(opts) + opts[:block] = true + begin_chunk("verbatim") + "\n" + end + + def bc_close(opts) + end_chunk("verbatim") + "\n" + end + + def bq_open(opts) + opts[:block] = true + "\\begin{quotation}\n" + end + + def bq_close(opts) + "\\end{quotation}\n\n" + end + + def link(opts) + "\\href{#{opts[:href]}}{#{opts[:name]}}" + end + + # FIXME: use includegraphics with security verification + def image(opts) + "" + end + + def footno(opts) + # TODO: insert a placeholder until we know the footnote content. + # For this to work, we need some kind of post-processing... + "\\footnotemark[#{opts[:text]}]" + end + + def fn(opts) + "\\footnotetext[#{opts[:id]}]{#{opts[:text]}}" + end + + def snip(opts) + "\\begin{verbatim}#{opts[:text]}\\end{verbatim}" + end + + def quote1(opts) + "`#{opts[:text]}'" + end + + def quote2(opts) + "``#{opts[:text]}\"" + end + + def ellipsis(opts) + "#{opts[:text]}\\ldots{}" + end + + def emdash(opts) + "---" + end + + def endash(opts) + "--" + end + + def arrow(opts) + "\\rightarrow{}" + end + + def trademark(opts) + "\\texttrademark{}" + end + + def registered(opts) + "\\textregistered{}" + end + + def copyright(opts) + "\\copyright{}" + end + + # TODO: what do we do with (unknown) unicode entities ? + # + def entity(opts) + text = opts[:text][0..0] == '#' ? opts[:text][1..-1] : opts[:text] + ENTITIES[text] + end + + def dim(opts) + space = opts[:space] ? " " : '' + "#{opts[:text]}#{space}\\texttimes{}#{space}" + end + + private + + def begin_chunk(type) + chunk_counter[type] += 1 + return "\\begin{#{type}}" if 1 == chunk_counter[type] + '' + end + + def end_chunk(type) + chunk_counter[type] -= 1 + raise RuntimeError, "Bad latex #{type} nesting detected" if chunk_counter[type] < 0 # This should never need to happen + return "\\end{#{type}}" if 0 == chunk_counter[type] + '' + end + + def chunk_counter + @chunk_counter ||= Hash.new 0 + end +end diff --git a/vendor/gems/RedCloth-4.0.3/lib/redcloth/formatters/latex_entities.yml b/vendor/gems/RedCloth-4.0.3/lib/redcloth/formatters/latex_entities.yml new file mode 100644 index 0000000..3621fc8 --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/lib/redcloth/formatters/latex_entities.yml @@ -0,0 +1,2414 @@ +# based on "SGML/XML character entity reference" at http://www.bitjungle.com/isoent/ +# +--- +#EM SPACE +emsp: \hspace{1em} +#EM SPACE +"8195": \hspace{1em} +#EN SPACE +ensp: \hspace{0.5em} +#EN SPACE +"8194": \hspace{0.5em} +#THREE-PER-EM SPACE +"8196": \hspace{0.33em} +#FOUR-PER-EM SPACE +"8197": \hspace{0.25em} +#FIGURE SPACE +"8199": \hphantom{0} +#PUNCTUATION SPACE +"8200": \hphantom{,} +#THIN SPACE +thinsp: \hspace{0.167em} +#THIN SPACE +"8201": \hspace{0.167em} +#HAIR SPACE +"8202": \hspace{1pt} +#EM DASH +mdash: --- +#EM DASH +"8212": --- +#EN DASH +ndash: -- +#EN DASH +"8211": -- +#HYPHEN +"8208": "-" +#OPEN BOX +"9251": \textvisiblespace{} +#HORIZONTAL ELLIPSIS +hellip: \ldots{} +#HORIZONTAL ELLIPSIS +"8230": \ldots{} +#TWO DOT LEADER +"8229": \nldr{} +#VULGAR FRACTION ONE THIRD +"8531": \sfrac{1}{3} +#VULGAR FRACTION TWO THIRDS +"8532": \sfrac{2}{3} +#VULGAR FRACTION ONE FIFTH +"8533": \sfrac{1}{5} +#VULGAR FRACTION TWO FIFTHS +"8534": \sfrac{2}{5} +#VULGAR FRACTION THREE FIFTHS +"8535": \sfrac{3}{5} +#VULGAR FRACTION FOUR FIFTHS +"8536": \sfrac{4}{5} +#VULGAR FRACTION ONE SIXTH +"8537": \sfrac{1}{6} +#VULGAR FRACTION FIVE SIXTHS +"8538": \sfrac{5}{6} +#CARE OF +"8453": "{^c\\!/\\!_o}" +#FULL BLOCK +"9608": \block{} +#UPPER HALF BLOCK +"9600": \uhblk{} +#LOWER HALF BLOCK +"9604": \lhblk{} +#LIGHT SHADE +#requires color +"9617": \textcolor[gray]{.75}{\block} +#MEDIUM SHADE +#requires color +"9618": \textcolor[gray]{.5}{\block} +#DARK SHADE +#requires color +"9619": \textcolor[gray]{.25}{\block} +#BLACK VERTICAL RECTANGLE +"9646": \marker{} +#WHITE CIRCLE +"9675": \circ{} +#WHITE SQUARE +#requires amssymb +"9633": \square{} +#WHITE RECTANGLE +"9645": \fbox{~~} +#WHITE UP-POINTING TRIANGLE +#requires amssymb +"9653": \vartriangle{} +#WHITE DOWN-POINTING TRIANGLE +#requires amssymb +"9663": \triangledown{} +#WHITE STAR +#requires pifont +"9734": \ding{73} +#BULLET +bull: \textbullet{} +#BULLET +"8226": \textbullet{} +#BLACK SMALL SQUARE +#requires amssymb +"9642": \blacksquare{} +#BLACK UP-POINTING TRIANGLE +#requires amssymb +"9652": \blacktriangle{} +#BLACK DOWN-POINTING TRIANGLE +#requires amssymb +"9662": \blacktriangledown{} +#BLACK LEFT-POINTING TRIANGLE +#requires amssymb +"9666": \blacktriangleleft{} +#BLACK RIGHT-POINTING TRIANGLE +#requires amssymb +"9656": \blacktriangleright{} +#BLACK CLUB SUIT +#requires pifont +clubs: \ding{168} +#BLACK CLUB SUIT +#requires pifont +"9827": \ding{168} +#BLACK DIAMOND SUIT +#requires pifont +diams: \ding{169} +#BLACK DIAMOND SUIT +#requires pifont +"9830": \ding{169} +#BLACK HEART SUIT +#requires pifont +hearts: \ding{170} +#BLACK HEART SUIT +"9829": \ding{170} +#BLACK SPADE SUIT +#requires pifont +spades: \ding{171} +#BLACK SPADE SUIT +#requires pifont +"9824": \ding{171} +#MALTESE CROSS +#requires pifont +"10016": \maltese{} +#DAGGER +dagger: \dag{} +#DAGGER +"8224": \dag{} +#DOUBLE DAGGER +Dagger: \ddag{} +#DOUBLE DAGGER +"8225": \ddag{} +#CHECK MARK +#requires pifont +"10003": \checkmark{} +#BALLOT X +#requires pifont +"10007": \ding{55} +#MUSIC SHARP SIGN +"9839": \sharp{} +#MUSIC FLAT SIGN +"9837": \flat{} +#MALE SIGN +#requires wasysym +"9794": \male{} +#FEMALE SIGN +#requires wasysym +"9792": \female{} +#TELEPHONE SIGN +#requires pifont +"9742": \phone{} +#TELEPHONE RECORDER +#requires wasysym +"8981": \recorder{} +#SOUND RECORDING COPYRIGHT +#requires textcomp +"8471": \textcircledP{} +#CARET +"8257": \mathchar"1356 +#SINGLE LOW-9 QUOTATION MARK +#requires fontenc:T1 +lsquor: "," +#SINGLE LOW-9 QUOTATION MARK +#requires fontenc:T1 +"8218": "," +#DOUBLE LOW-9 QUOTATION MARK +#requires fontenc:T1 +ldquor: ,, +#DOUBLE LOW-9 QUOTATION MARK +#requires fontenc:T1 +"8222": ,, +#LATIN SMALL LIGATURE FF +"64256": ff +#LATIN SMALL LIGATURE FI +"64257": fi +#SMALL FJ LIGATURE +"58290": fj +#LATIN SMALL LIGATURE FFI +"64259": ffi +#LATIN SMALL LIGATURE FFL +"64260": ffl +#LATIN SMALL LIGATURE FL +"64258": fl +#DOUBLE HIGH-REVERSED-9 QUOTATION MARK +"8223": `` +#SINGLE HIGH-REVERSED-9 QUOTATION MARK +"8219": ` +#VERTICAL ELLIPSIS +"8942": \vdots{} +#HYPHEN BULLET +"8259": \hybull{} +#LOZENGE +#requires amssymb +loz: \lozenge{} +#LOZENGE +#requires amssymb +"9674": \lozenge{} +#LOZENGE, FILLED +#requires amssymb +"59403": \blacklozenge{} +#WHITE LEFT-POINTING TRIANGLE +"9667": \triangleleft{} +#WHITE RIGHT-POINTING TRIANGLE +"9657": \triangleright{} +#BLACK STAR +#requires amssymb +"9733": \bigstar{} +#MUSIC NATURAL SIGN +"9838": \natural{} +#PRESCRIPTION TAKE +#requires textcomp +"8478": \textrecipe{} +#SIX POINTED BLACK STAR +#requires pifont +"10038": \ding{86} +#POSITION INDICATOR +"8982": \mathchar"2208 +#BOTTOM LEFT CROP +"8973": \dlcrop{} +#BOTTOM RIGHT CROP +"8972": \drcrop{} +#TOP LEFT CROP +"8975": \ulcrop{} +#TOP RIGHT CROP +"8974": \urcrop{} +#VULGAR FRACTION ONE HALF +frac12: \sfrac{1}{2} +#VULGAR FRACTION ONE HALF +"189": \sfrac{1}{2} +#VULGAR FRACTION ONE QUARTER +frac14: \sfrac{1}{4} +#VULGAR FRACTION ONE QUARTER +"188": \sfrac{1}{4} +#VULGAR FRACTION THREE QUARTERS +frac34: \sfrac{3}{4} +#VULGAR FRACTION THREE QUARTERS +"190": \sfrac{3}{4} +#VULGAR FRACTION ONE EIGHTH +"8539": \sfrac{1}{8} +#VULGAR FRACTION THREE EIGHTHS +"8540": \sfrac{3}{8} +#VULGAR FRACTION FIVE EIGHTHS +"8541": \sfrac{5}{8} +#VULGAR FRACTION SEVEN EIGHTHS +"8542": \sfrac{7}{8} +#SUPERSCRIPT ONE +sup1: ^1 +#SUPERSCRIPT ONE +"185": ^1 +#SUPERSCRIPT TWO +sup2: ^2 +#SUPERSCRIPT TWO +"178": ^2 +#SUPERSCRIPT THREE +sup3: ^3 +#SUPERSCRIPT THREE +"179": ^3 +#PLUS SIGN +"43": + +#PLUS-MINUS SIGN +#requires textcomp +plusmn: \textpm{} +#PLUS-MINUS SIGN +#requires textcomp +"177": \textpm{} +#LESS-THAN SIGN +lt: \textless{} +#LESS-THAN SIGN +"60": \textless{} +#EQUALS SIGN +"61": "=" +#GREATER-THAN SIGN +gt: \textgreater{} +#GREATER-THAN SIGN +"62": \textgreater{} +#DIVISION SIGN +#requires textcomp +divide: \textdiv{} +#DIVISION SIGN +#requires textcomp +"247": \textdiv{} +#MULTIPLICATION SIGN +#requires textcomp +times: \texttimes{} +#MULTIPLICATION SIGN +#requires textcomp +"215": \texttimes{} +#CURRENCY SIGN +#requires wasysym +curren: \textcurrency{} +#CURRENCY SIGN +#requires wasysym +"164": \textcurrency{} +#POUND SIGN +pound: \pounds{} +#POUND SIGN +"163": \pounds{} +#DOLLAR SIGN +"36": \$ +#CENT SIGN +#requires wasysym +cent: \textcent{} +#CENT SIGN +#requires wasysym +"162": \textcent{} +#YEN SIGN +#requires amsfonts +yen: \textyen{} +#YEN SIGN +#requires amsfonts +"165": \textyen{} +#NUMBER SIGN +"35": \# +#PERCENT SIGN +"37": \% +#AMPERSAND +amp: \& +#AMPERSAND +"38": \& +#ASTERISK +"42": \ast{} +#COMMERCIAL AT +"64": "@" +#LEFT SQUARE BRACKET +"91": "[" +#REVERSE SOLIDUS +"92": \textbackslash{} +#RIGHT SQUARE BRACKET +"93": "]" +#LEFT CURLY BRACKET +"123": \{ +#HORIZONTAL BAR +"8213": --- +#VERTICAL LINE +"124": \textbar{} +#RIGHT CURLY BRACKET +"125": \} +#MICRO SIGN +#requires textcomp +micro: \textmu{} +#MICRO SIGN +#requires textcomp +"181": \textmu{} +#OHM SIGN +#requires textcomp +"8486": \textohm{} +#DEGREE SIGN +#requires textcomp +deg: \textdegree{} +#DEGREE SIGN +#requires textcomp +"176": \textdegree{} +#MASCULINE ORDINAL INDICATOR +#requires textcomp +ordm: \textordmasculine{} +#MASCULINE ORDINAL INDICATOR +#requires textcomp +"186": \textordmasculine{} +#FEMININE ORDINAL INDICATOR +#requires textcomp +ordf: \textordfeminine{} +#FEMININE ORDINAL INDICATOR +#requires textcomp +"170": \textordfeminine{} +#SECTION SIGN +#requires textcomp +sect: \S{} +#SECTION SIGN +#requires textcomp +"167": \S{} +#PILCROW SIGN +#requires textcomp +para: \P{} +#PILCROW SIGN +#requires textcomp +"182": \P{} +#MIDDLE DOT +#requires amssymb +middot: \textperiodcentered{} +#MIDDLE DOT +#requires amssymb +"183": \textperiodcentered{} +#LEFTWARDS ARROW +#requires textcomp +larr: \textleftarrow{} +#LEFTWARDS ARROW +#requires textcomp +"8592": \textleftarrow{} +#RIGHTWARDS ARROW +#requires textcomp +rarr: \textrightarrow{} +#RIGHTWARDS ARROW +#requires textcomp +"8594": \textrightarrow{} +#UPWARDS ARROW +#requires textcomp +uarr: \textuparrow{} +#UPWARDS ARROW +#requires textcomp +"8593": \textuparrow{} +#DOWNWARDS ARROW +#requires textcomp +darr: \textdownarrow{} +#DOWNWARDS ARROW +#requires textcomp +"8595": \textdownarrow{} +#COPYRIGHT SIGN +#requires textcomp +copy: \copyright{} +#COPYRIGHT SIGN +#requires textcomp +"169": \copyright{} +#REGISTERED SIGN +#requires amssymb +reg: \textregistered{} +#REGISTERED SIGN +#requires amssymb +"174": \textregistered{} +#TRADE MARK SIGN +trade: \texttrademark{} +#TRADE MARK SIGN +"8482": \texttrademark{} +#BROKEN BAR +#requires wasysym +brvbar: \textbrokenbar{} +#BROKEN BAR +#requires wasysym +"166": \textbrokenbar{} +#NOT SIGN +#requires textcomp +not: \textlnot{} +#NOT SIGN +#requires textcomp +"172": \textlnot{} +#EIGHTH NOTE +#requires wasysym +"9834": \textmusicalnote{} +#EXCLAMATION MARK +"33": "!" +#INVERTED EXCLAMATION MARK +iexcl: "!`" +#INVERTED EXCLAMATION MARK +"161": "!`" +#QUOTATION MARK +#requires fontenc:T1 +quot: "\"" +#QUOTATION MARK +#requires fontenc:T1 +"34": "\"" +#APOSTROPHE +#requires textcomp +"39": "'" +#LEFT PARENTHESIS +"40": ( +#RIGHT PARENTHESIS +"41": ) +#COMMA +"44": "," +#LOW LINE +"95": \_ +#HYPHEN-MINUS +"45": "-" +#FULL STOP +"46": . +#SOLIDUS +"47": / +#COLON +"58": ":" +#SEMICOLON +"59": ; +#QUESTION MARK +"63": "?" +#INVERTED QUESTION MARK +iquest: ?` +#INVERTED QUESTION MARK +"191": ?` +#LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +#requires fontenc:T1 +laquo: \guillemotleft{} +#LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +#requires fontenc:T1 +"171": \guillemotleft{} +#RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +#requires fontenc:T1 +raquo: \guillemotright{} +#RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +#requires fontenc:T1 +"187": \guillemotright{} +#LEFT SINGLE QUOTATION MARK +lsquo: ` +#LEFT SINGLE QUOTATION MARK +"8216": ` +#RIGHT SINGLE QUOTATION MARK +rsquo: "'" +#RIGHT SINGLE QUOTATION MARK +"8217": "'" +#LEFT DOUBLE QUOTATION MARK +ldquo: `` +#LEFT DOUBLE QUOTATION MARK +"8220": `` +#RIGHT DOUBLE QUOTATION MARK +rdquo: "''" +#RIGHT DOUBLE QUOTATION MARK +"8221": "''" +#NO-BREAK SPACE +nbsp: "~" +#NO-BREAK SPACE +"160": "~" +#SOFT HYPHEN +shy: \- +#SOFT HYPHEN +"173": \- +#BOX DRAWINGS LIGHT HORIZONTAL +"9472": \boxh{} +#BOX DRAWINGS LIGHT VERTICAL +"9474": \boxv{} +#BOX DRAWINGS LIGHT UP AND RIGHT +"9492": \boxur{} +#BOX DRAWINGS LIGHT UP AND LEFT +"9496": \boxul{} +#BOX DRAWINGS LIGHT DOWN AND LEFT +"9488": \boxdl{} +#BOX DRAWINGS LIGHT DOWN AND RIGHT +"9484": \boxdr{} +#BOX DRAWINGS LIGHT VERTICAL AND RIGHT +"9500": \boxvr{} +#BOX DRAWINGS LIGHT UP AND HORIZONTAL +"9524": \boxhu{} +#BOX DRAWINGS LIGHT VERTICAL AND LEFT +"9508": \boxvl{} +#BOX DRAWINGS LIGHT DOWN AND HORIZONTAL +"9516": \boxhd{} +#BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL +"9532": \boxvh{} +#BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE +"9566": \boxvR{} +#BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE +"9576": \boxhU{} +#BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE +"9569": \boxvL{} +#BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE +"9573": \boxhD{} +#BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE +"9578": \boxvH{} +#BOX DRAWINGS DOUBLE HORIZONTAL +"9552": \boxH{} +#BOX DRAWINGS DOUBLE VERTICAL +"9553": \boxV{} +#BOX DRAWINGS DOUBLE UP AND RIGHT +"9562": \boxUR{} +#BOX DRAWINGS DOUBLE UP AND LEFT +"9565": \boxUL{} +#BOX DRAWINGS DOUBLE DOWN AND LEFT +"9559": \boxDL{} +#BOX DRAWINGS DOUBLE DOWN AND RIGHT +"9556": \boxDR{} +#BOX DRAWINGS DOUBLE VERTICAL AND RIGHT +"9568": \boxVR{} +#BOX DRAWINGS DOUBLE UP AND HORIZONTAL +"9577": \boxHU{} +#BOX DRAWINGS DOUBLE VERTICAL AND LEFT +"9571": \boxVL{} +#BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL +"9574": \boxHD{} +#BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL +"9580": \boxVH{} +#BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE +"9567": \boxVr{} +#BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE +"9575": \boxHu{} +#BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE +"9570": \boxVl{} +#BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE +"9572": \boxHd{} +#BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE +"9579": \boxVh{} +#BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE +"9560": \boxuR{} +#BOX DRAWINGS UP DOUBLE AND LEFT SINGLE +"9564": \boxUl{} +#BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE +"9557": \boxdL{} +#BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE +"9555": \boxDr{} +#BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE +"9561": \boxUr{} +#BOX DRAWINGS UP SINGLE AND LEFT DOUBLE +"9563": \boxuL{} +#BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE +"9558": \boxDl{} +#BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE +"9554": \boxdR{} +#ALEF SYMBOL +alefsym: \aleph{} +#ALEF SYMBOL +"8501": \aleph{} +#LOGICAL AND +and: \wedge{} +#LOGICAL AND +"8743": \wedge{} +#RIGHT ANGLE +"8735": \sqangle{} +#SPHERICAL ANGLE +#requires amssymb +"8738": \sphericalangle{} +#ALMOST EQUAL TO +"8776": \approx{} +#BECAUSE +#requires amssymb +"8757": \because{} +#UP TACK +"8869": \bot{} +#INTERSECTION +cap: \cap{} +#INTERSECTION +"8745": \cap{} +#APPROXIMATELY EQUAL TO +cong: \cong{} +#APPROXIMATELY EQUAL TO +"8773": \cong{} +#CONTOUR INTEGRAL +"8750": \oint{} +#UNION +cup: \cup{} +#UNION +"8746": \cup{} +#IDENTICAL TO +equiv: \equiv{} +#IDENTICAL TO +"8801": \equiv{} +#THERE EXISTS +exist: \exists{} +#THERE EXISTS +"8707": \exists{} +#FOR ALL +forall: \forall{} +#FOR ALL +"8704": \forall{} +#LATIN SMALL LETTER F WITH HOOK +fnof: f +#LATIN SMALL LETTER F WITH HOOK +"402": f +#GREATER-THAN OR EQUAL TO +ge: \geq{} +#GREATER-THAN OR EQUAL TO +"8805": \geq{} +#LEFT RIGHT DOUBLE ARROW +"8660": \iff{} +#INFINITY +infin: \infty{} +#INFINITY +"8734": \infty{} +#INTEGRAL +int: \int{} +#INTEGRAL +"8747": \int{} +#ELEMENT OF +isin: \in{} +#ELEMENT OF +"8712": \in{} +#LEFT ANGLE BRACKET +#requires textcomp +lang: \textlangle{} +#LEFT ANGLE BRACKET +#requires textcomp +"12296": \textlangle{} +#LEFTWARDS DOUBLE ARROW +lArr: \Leftarrow{} +#LEFTWARDS DOUBLE ARROW +"8656": \Leftarrow{} +#LESS-THAN OR EQUAL TO +le: \leq{} +#LESS-THAN OR EQUAL TO +"8804": \leq{} +#MINUS SIGN +#requires textcomp +minus: \textminus{} +#MINUS SIGN +#requires textcomp +"8722": \textminus{} +#MINUS-OR-PLUS SIGN +"8723": \mp{} +#NABLA +nabla: \nabla{} +#NABLA +"8711": \nabla{} +#NOT EQUAL TO +ne: \not= +#NOT EQUAL TO +"8800": \not= +#CONTAINS AS MEMBER +ni: \ni{} +#CONTAINS AS MEMBER +"8715": \ni{} +#LOGICAL OR +or: \vee{} +#LOGICAL OR +"8744": \vee{} +#PARALLEL TO +"8741": \parallel{} +#PARTIAL DIFFERENTIAL +part: \partial{} +#PARTIAL DIFFERENTIAL +"8706": \partial{} +#PER MILLE SIGN +#requires wasysym +permil: \textperthousand{} +#PER MILLE SIGN +#requires wasysym +"8240": \textperthousand{} +#UP TACK +perp: \perp{} +#UP TACK +"8869": \perp{} +#PRIME +prime: ^\prime +#PRIME +"8242": ^\prime +#DOUBLE PRIME +Prime: "{''}" +#DOUBLE PRIME +"8243": "{''}" +#PROPORTIONAL TO +prop: \propto{} +#PROPORTIONAL TO +"8733": \propto{} +#FOURTH ROOT +#requires textcomp +radic: \textsurd{} +#FOURTH ROOT +#requires textcomp +"8730": \textsurd{} +#RIGHT ANGLE BRACKET +#requires textcomp +rang: \textrangle{} +#RIGHT ANGLE BRACKET +#requires textcomp +"12297": \textrangle{} +#RIGHTWARDS DOUBLE ARROW +rArr: \Rightarrow{} +#RIGHTWARDS DOUBLE ARROW +"8658": \Rightarrow{} +#TILDE OPERATOR +sim: \sim{} +#TILDE OPERATOR +"8764": \sim{} +#APPROXIMATELY EQUAL TO +"8771": \simeq{} +#BLACK SQUARE +#requires amssymb +"9632": \square{} +#SUBSET OF +sub: \subset{} +#SUBSET OF +"8834": \subset{} +#SUBSET OF OR EQUAL TO +sube: \subseteq{} +#SUBSET OF OR EQUAL TO +"8838": \subseteq{} +#SUPERSET OF +sup: \supset{} +#SUPERSET OF +"8835": \supset{} +#SUPERSET OF OR EQUAL TO +supe: \supseteq{} +#SUPERSET OF OR EQUAL TO +"8839": \supseteq{} +#THEREFORE +#requires amssymb +there4: \therefore{} +#THEREFORE +#requires amssymb +"8756": \therefore{} +#DOUBLE VERTICAL LINE +#requires textcomp +"8214": \textbardbl{} +#ANGSTROM SIGN +"8491": \AA{} +#SCRIPT CAPITAL B +#requires mathrsfs +"8492": B +#RING OPERATOR +"8728": \circ{} +#DIAERESIS +"168": \ddot{} +#COMBINING FOUR DOTS ABOVE +"8412": \ddot{}\kern4.5pt\ddot{ } +#SCRIPT CAPITAL H +#requires mathrsfs +"8459": H +#SCRIPT CAPITAL L +#requires mathrsfs +"8466": L +#ASTERISK OPERATOR +lowast: _\ast +#ASTERISK OPERATOR +"8727": _\ast +#NOT AN ELEMENT OF +notin: \not\in{} +#NOT AN ELEMENT OF +"8713": \not\in{} +#SCRIPT SMALL O +"8500": \mathit{o} +#SCRIPT CAPITAL M +#requires mathrsfs +"8499": M +#COMBINING THREE DOTS ABOVE +"8411": \ddot{}\kern 3pt\dot{ } +#TRIPLE PRIME +"8244": "{'''}" +#ESTIMATES +"8793": \stackrel{\wedge}{=} +#GREEK SMALL LETTER ALPHA +alpha: \alpha{} +#GREEK SMALL LETTER ALPHA +"945": \alpha{} +#GREEK SMALL LETTER BETA +beta: \beta{} +#GREEK SMALL LETTER BETA +"946": \beta{} +#GREEK SMALL LETTER GAMMA +gamma: \gamma{} +#GREEK SMALL LETTER GAMMA +"947": \gamma{} +#GREEK CAPITAL LETTER GAMMA +Gamma: \Gamma{} +#GREEK CAPITAL LETTER GAMMA +"915": \Gamma{} +#GREEK LETTER DIGAMMA +#requires amssymb +"988": \digamma{} +#GREEK SMALL LETTER DELTA +delta: \delta{} +#GREEK SMALL LETTER DELTA +"948": \delta{} +#GREEK CAPITAL LETTER DELTA +Delta: \Delta{} +#GREEK CAPITAL LETTER DELTA +"916": \Delta{} +#GREEK SMALL LETTER EPSILON +epsilon: \epsilon{} +#GREEK SMALL LETTER EPSILON +"949": \epsilon{} +#SMALL ELEMENT OF +"8714": \epsilon{} +#GREEK SMALL LETTER ZETA +zeta: \zeta{} +#GREEK SMALL LETTER ZETA +"950": \zeta{} +#GREEK SMALL LETTER ETA +eta: \eta{} +#GREEK SMALL LETTER ETA +"951": \eta{} +#GREEK SMALL LETTER THETA +theta: \theta{} +#GREEK SMALL LETTER THETA +"952": \theta{} +#GREEK CAPITAL LETTER THETA +Theta: \Theta{} +#GREEK CAPITAL LETTER THETA +"920": \Theta{} +#GREEK THETA SYMBOL +thetasym: \vartheta{} +#GREEK THETA SYMBOL +"977": \vartheta{} +#GREEK SMALL LETTER IOTA +iota: \iota{} +#GREEK SMALL LETTER IOTA +"953": \iota{} +#GREEK SMALL LETTER KAPPA +kappa: \kappa{} +#GREEK SMALL LETTER KAPPA +"954": \kappa{} +#GREEK KAPPA SYMBOL +#requires amssymb +"1008": \varkappa{} +#GREEK SMALL LETTER LAMDA +lambda: \lambda{} +#GREEK SMALL LETTER LAMDA +"955": \lambda{} +#GREEK CAPITAL LETTER LAMDA +Lambda: \Lambda{} +#GREEK CAPITAL LETTER LAMDA +"923": \Lambda{} +#GREEK SMALL LETTER MU +mu: \mu{} +#GREEK SMALL LETTER MU +"956": \mu{} +#GREEK SMALL LETTER NU +nu: \nu{} +#GREEK SMALL LETTER NU +"957": \nu{} +#GREEK SMALL LETTER XI +xi: \xi{} +#GREEK SMALL LETTER XI +"958": \xi{} +#GREEK CAPITAL LETTER XI +Xi: \Xi{} +#GREEK CAPITAL LETTER XI +"926": \Xi{} +#GREEK SMALL LETTER PI +pi: \pi{} +#GREEK SMALL LETTER PI +"960": \pi{} +#GREEK PI SYMBOL +piv: \varpi{} +#GREEK PI SYMBOL +"982": \varpi{} +#GREEK CAPITAL LETTER PI +Pi: \Pi{} +#GREEK CAPITAL LETTER PI +"928": \Pi{} +#GREEK SMALL LETTER RHO +rho: \rho{} +#GREEK SMALL LETTER RHO +"961": \rho{} +#GREEK RHO SYMBOL +"1009": \varrho{} +#GREEK SMALL LETTER SIGMA +sigma: \sigma{} +#GREEK SMALL LETTER SIGMA +"963": \sigma{} +#GREEK CAPITAL LETTER SIGMA +Sigma: \Sigma{} +#GREEK CAPITAL LETTER SIGMA +"931": \Sigma{} +#GREEK SMALL LETTER FINAL SIGMA +sigmaf: \varsigma{} +#GREEK SMALL LETTER FINAL SIGMA +"962": \varsigma{} +#GREEK SMALL LETTER TAU +tau: \tau{} +#GREEK SMALL LETTER TAU +"964": \tau{} +#GREEK SMALL LETTER UPSILON +upsi: \upsilon{} +#GREEK SMALL LETTER UPSILON +"965": \upsilon{} +#GREEK UPSILON WITH HOOK SYMBOL +upsih: \Upsilon{} +#GREEK UPSILON WITH HOOK SYMBOL +"978": \Upsilon{} +#GREEK SMALL LETTER PHI +phis: \phi{} +#GREEK SMALL LETTER PHI +"966": \phi{} +#GREEK CAPITAL LETTER PHI +Phi: \Phi{} +#GREEK CAPITAL LETTER PHI +"934": \Phi{} +#GREEK PHI SYMBOL +"981": \varphi{} +#GREEK SMALL LETTER CHI +chi: \chi{} +#GREEK SMALL LETTER CHI +"967": \chi{} +#GREEK SMALL LETTER PSI +psi: \psi{} +#GREEK SMALL LETTER PSI +"968": \psi{} +#GREEK CAPITAL LETTER PSI +Psi: \Psi{} +#GREEK CAPITAL LETTER PSI +"936": \Psi{} +#GREEK SMALL LETTER OMEGA +omega: \omega{} +#GREEK SMALL LETTER OMEGA +"969": \omega{} +#GREEK CAPITAL LETTER OMEGA +Omega: \Omega{} +#GREEK CAPITAL LETTER OMEGA +"937": \Omega{} +#GREEK SMALL LETTER ALPHA +#requires amsbsy +"945": \alpha{} +#GREEK SMALL LETTER BETA +#requires amsbsy +"946": \beta{} +#GREEK SMALL LETTER GAMMA +#requires amsbsy +"947": \gamma{} +#GREEK CAPITAL LETTER GAMMA +#requires amsbsy +"915": \Gamma{} +#GREEK LETTER DIGAMMA +#requires amsbsy,amssymb +"988": \digamma{} +#GREEK SMALL LETTER DELTA +#requires amsbsy +"948": \delta{} +#GREEK CAPITAL LETTER DELTA +#requires amsbsy +"916": \Delta{} +#GREEK SMALL LETTER EPSILON +#requires amsbsy +"949": \epsilon{} +#GREEK SMALL LETTER EPSILON +#requires amsbsy +"949": \varepsilon{} +#GREEK SMALL LETTER EPSILON +#requires amsbsy +"949": \epsilon{} +#GREEK SMALL LETTER ZETA +#requires amsbsy +"950": \zeta{} +#GREEK SMALL LETTER ETA +#requires amsbsy +"951": \eta{} +#GREEK SMALL LETTER THETA +#requires amsbsy +"952": \theta{} +#GREEK CAPITAL LETTER THETA +#requires amsbsy +"920": \Theta{} +#GREEK THETA SYMBOL +#requires amsbsy +"977": \vartheta{} +#GREEK SMALL LETTER IOTA +#requires amsbsy +"953": \iota{} +#GREEK SMALL LETTER KAPPA +#requires amsbsy +"954": \kappa{} +#GREEK KAPPA SYMBOL +#requires amsbsy,amssymb +"1008": \varkappa{} +#GREEK SMALL LETTER LAMDA +#requires amsbsy +"955": \lambda{} +#GREEK CAPITAL LETTER LAMDA +#requires amsbsy +"923": \Lambda{} +#GREEK SMALL LETTER MU +#requires amsbsy +"956": \mu{} +#GREEK SMALL LETTER NU +#requires amsbsy +"957": \nu{} +#GREEK SMALL LETTER XI +#requires amsbsy +"958": \xi{} +#GREEK CAPITAL LETTER XI +#requires amsbsy +"926": \Xi{} +#GREEK SMALL LETTER PI +#requires amsbsy +"960": \pi{} +#GREEK CAPITAL LETTER PI +#requires amsbsy +"928": \Pi{} +#GREEK PI SYMBOL +#requires amsbsy +"982": \varpi{} +#GREEK SMALL LETTER RHO +#requires amsbsy +"961": \rho{} +#GREEK RHO SYMBOL +#requires amsbsy +"1009": \varrho{} +#GREEK SMALL LETTER SIGMA +#requires amsbsy +"963": \sigma{} +#GREEK CAPITAL LETTER SIGMA +#requires amsbsy +"931": \Sigma{} +#GREEK SMALL LETTER FINAL SIGMA +#requires amsbsy +"962": \varsigma{} +#GREEK SMALL LETTER TAU +#requires amsbsy +"964": \tau{} +#GREEK SMALL LETTER UPSILON +#requires amsbsy +"965": \upsilon{} +#GREEK CAPITAL LETTER UPSILON +#requires amsbsy +"978": \Upsilon{} +#GREEK SMALL LETTER PHI +#requires amsbsy +"966": \phi{} +#GREEK CAPITAL LETTER PHI +#requires amsbsy +"934": \Phi{} +#GREEK PHI SYMBOL +#requires amsbsy +"981": \varphi{} +#GREEK SMALL LETTER CHI +#requires amsbsy +"967": \chi{} +#GREEK SMALL LETTER PSI +#requires amsbsy +"968": \psi{} +#GREEK CAPITAL LETTER PSI +#requires amsbsy +"936": \Psi{} +#GREEK SMALL LETTER OMEGA +#requires amsbsy +"969": \omega{} +#GREEK CAPITAL LETTER OMEGA +#requires amsbsy +"937": \Omega{} +#ANGLE +ang: \angle{} +#ANGLE +"8736": \angle{} +#MEASURED ANGLE +#requires amssymb +"8737": \measuredangle{} +#BET SYMBOL +#requires amssymb +"8502": \beth{} +#REVERSED PRIME +#requires amssymb +"8245": ^\backprime +#COMPLEMENT +#requires amssymb +"8705": \complement{} +#DALET SYMBOL +#requires amssymb +"8504": \daleth{} +#SCRIPT SMALL L +"8467": \ell{} +#EMPTY SET +empty: \emptyset{} +#EMPTY SET +"8709": \emptyset{} +#GIMEL SYMBOL +#requires amssymb +"8503": \gimel{} +#BLACK-LETTER CAPITAL I +image: \Im{} +#BLACK-LETTER CAPITAL I +"8465": \Im{} +#THERE DOES NOT EXIST +#requires amssymb +"8708": \nexists{} +#CIRCLED LATIN CAPITAL LETTER S +#requires amssymb +"9416": \textcircled{S} +#PLANCK CONSTANT OVER TWO PI +"8463": \hbar{} +#BLACK-LETTER CAPITAL R +real: \Re{} +#BLACK-LETTER CAPITAL R +"8476": \Re{} +#SMALL REVERSE SOLIDUS +#requires amssymb +"65128": \smallsetminus{} +#SCRIPT CAPITAL P +weierp: \wp{} +#SCRIPT CAPITAL P +"8472": \wp{} +#N-ARY COPRODUCT +"8720": \amalg{} +#PERSPECTIVE +#requires amssymb +"8966": \doublebarwedge{} +#NAND +#requires amssymb +"8892": \barwedge{} +#DOUBLE INTERSECTION +#requires amssymb +"8914": \Cap{} +#DOUBLE UNION +#requires amssymb +"8915": \Cup{} +#CURLY LOGICAL OR +#requires amssymb +"8910": \curlyvee{} +#CURLY LOGICAL AND +#requires amssymb +"8911": \curlywedge{} +#DIAMOND OPERATOR +"8900": \diamond{} +#DIVISION TIMES +#requires amssymb +"8903": \divideontimes{} +#INTERCALATE +#requires amssymb +"8890": \intercal{} +#LEFT SEMIDIRECT PRODUCT +#requires amssymb +"8907": \leftthreetimes{} +#LEFT NORMAL FACTOR SEMIDIRECT PRODUCT +#requires amssymb +"8905": \ltimes{} +#SQUARED MINUS +#requires amssymb +"8863": \boxminus{} +#CIRCLED ASTERISK OPERATOR +#requires amssymb +"8859": \circledast{} +#CIRCLED RING OPERATOR +#requires amssymb +"8858": \circledcirc{} +#CIRCLED DASH +#requires amssymb +"8861": \circleddash{} +#CIRCLED DOT OPERATOR +"8857": \odot{} +#CIRCLED MINUS +"8854": \ominus{} +#CIRCLED PLUS +oplus: \oplus{} +#CIRCLED PLUS +"8853": \oplus{} +#CIRCLED DIVISION SLASH +"8856": \oslash{} +#CIRCLED TIMES +otimes: \otimes{} +#CIRCLED TIMES +"8855": \otimes{} +#SQUARED PLUS +#requires amssymb +"8862": \boxplus{} +#DOT PLUS +#requires amssymb +"8724": \dotplus{} +#RIGHT SEMIDIRECT PRODUCT +#requires amssymb +"8908": \rightthreetimes{} +#RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT +#requires amssymb +"8906": \rtimes{} +#DOT OPERATOR +sdot: \cdot{} +#DOT OPERATOR +"8901": \cdot{} +#SQUARED DOT OPERATOR +#requires amssymb +"8865": \boxdot{} +#SET MINUS +"8726": \setminus{} +#SQUARE CAP +"8851": \sqcap{} +#SQUARE CUP +"8852": \sqcup{} +#STAR OPERATOR +"8902": \star{} +#SQUARED TIMES +#requires amssymb +"8864": \boxtimes{} +#DOWN TACK +"8868": \top{} +#MULTISET UNION +"8846": \uplus{} +#WREATH PRODUCT +"8768": \wr{} +#LARGE CIRCLE +#requires textcomp +"9711": \textbigcircle{} +#WHITE DOWN-POINTING TRIANGLE +"9661": \bigtriangledown{} +#WHITE UP-POINTING TRIANGLE +"9651": \bigtriangleup{} +#N-ARY COPRODUCT +"8720": \coprod{} +#N-ARY PRODUCT +prod: \prod{} +#N-ARY PRODUCT +"8719": \prod{} +#N-ARY SUMMATION +sum: \sum{} +#N-ARY SUMMATION +"8721": \sum{} +#ALMOST EQUAL OR EQUAL TO +#requires amssymb +"8778": \approxeq{} +#EQUIVALENT TO +asymp: \asymp{} +#EQUIVALENT TO +"8781": \asymp{} +#ALL EQUAL TO +#requires amssymb +"8780": \backcong{} +#SMALL CONTAINS AS MEMBER +#requires amssymb +"8717": \backepsilon{} +#BOWTIE +"8904": \bowtie{} +#REVERSED TILDE +#requires amssymb +"8765": \backsim{} +#REVERSED TILDE EQUALS +#requires amssymb +"8909": \backsimeq{} +#GEOMETRICALLY EQUIVALENT TO +#requires amssymb +"8782": \Bumpeq{} +#DIFFERENCE BETWEEN +#requires amssymb +"8783": \bumpeq{} +#RING EQUAL TO +#requires amssymb +"8791": \circeq{} +#COLON EQUALS +"8788": ":=" +#EQUAL TO OR PRECEDES +#requires amssymb +"8926": \curlyeqprec{} +#EQUAL TO OR SUCCEEDS +#requires amssymb +"8927": \curlyeqsucc{} +#PRECEDES OR EQUAL TO +#requires amssymb +"8828": \preccurlyeq{} +#LEFT TACK +"8867": \dashv{} +#RING IN EQUAL TO +#requires amssymb +"8790": \eqcirc{} +#EQUALS COLON +"8789": "=:" +#GEOMETRICALLY EQUAL TO +#requires amssymb +"8785": \doteqdot{} +#APPROACHES THE LIMIT +"8784": \doteq{} +#APPROXIMATELY EQUAL TO OR THE IMAGE OF +#requires amssymb +"8786": \fallingdotseq{} +#EQUAL TO OR GREATER-THAN +#requires amssymb +"8925": \eqslantgtr{} +#EQUAL TO OR LESS-THAN +#requires amssymb +"8924": \eqslantless{} +#IMAGE OF OR APPROXIMATELY EQUAL TO +#requires amssymb +"8787": \risingdotseq{} +#PITCHFORK +#requires amssymb +"8916": \pitchfork{} +#FROWN +"8994": \frown{} +#GREATER-THAN WITH DOT +#requires amssymb +"8919": \gtrdot{} +#GREATER-THAN OVER EQUAL TO +#requires amssymb +"8807": \geqq{} +#GREATER-THAN EQUAL TO OR LESS-THAN +#requires amssymb +"8923": \gtreqless{} +#GREATER-THAN EQUAL TO OR LESS-THAN +#requires amssymb +"8923": \gtreqqless{} +#VERY MUCH GREATER-THAN +#requires amssymb +"8921": \ggg{} +#GREATER-THAN OR LESS-THAN +#requires amssymb +"8823": \gtrless{} +#GREATER-THAN OR EQUIVALENT TO +#requires amssymb +"8819": \gtrsim{} +#MUCH GREATER-THAN +"8811": \gg{} +#LESS-THAN WITH DOT +#requires amssymb +"8918": \lessdot{} +#LESS-THAN OVER EQUAL TO +#requires amssymb +"8806": \leqq{} +#LESS-THAN EQUAL TO OR GREATER-THAN +#requires amssymb +"8922": \lesseqqgtr{} +#LESS-THAN EQUAL TO OR GREATER-THAN +#requires amssymb +"8922": \lesseqgtr{} +#LESS-THAN OR GREATER-THAN +#requires amssymb +"8822": \lessgtr{} +#VERY MUCH LESS-THAN +#requires amssymb +"8920": \lll{} +#LESS-THAN OR EQUIVALENT TO +#requires amssymb +"8818": \lesssim{} +#MUCH LESS-THAN +"8810": \ll{} +#NORMAL SUBGROUP OF OR EQUAL TO +#requires amssymb +"8884": \trianglelefteq{} +#DIVIDES +"8739": \mid{} +#MODELS +"8871": \models{} +#PRECEDES +"8826": \prec{} +#PRECEDES OR EQUAL TO +"8828": \preceq{} +#PRECEDES OR EQUIVALENT TO +#requires amssymb +"8830": \precsim{} +#CONTAINS AS NORMAL SUBGROUP OR EQUAL TO +#requires amssymb +"8885": \trianglerighteq{} +#SUCCEEDS +"8827": \succ{} +#SUCCEEDS OR EQUAL TO +#requires amssymb +"8829": \succcurlyeq{} +#SUCCEEDS OR EQUAL TO +"8829": \succeq{} +#SUCCEEDS OR EQUIVALENT TO +#requires amssymb +"8831": \succsim{} +#SMILE +"8995": \smile{} +#SQUARE IMAGE OF +#requires amssymb +"8847": \sqsubset{} +#SQUARE IMAGE OF OR EQUAL TO +"8849": \sqsubseteq{} +#SQUARE ORIGINAL OF +#requires amssymb +"8848": \sqsupset{} +#SQUARE ORIGINAL OF OR EQUAL TO +"8850": \sqsupseteq{} +#DOUBLE SUBSET +#requires amssymb +"8912": \Subset{} +#SUBSET OF OR EQUAL TO +#requires amssymb +"8838": \subseteqq{} +#DOUBLE SUPERSET +#requires amssymb +"8913": \Supset{} +#SUPERSET OF OR EQUAL TO +#requires amssymb +"8839": \supseteqq{} +#DELTA EQUAL TO +#requires amssymb +"8796": \triangleq{} +#BETWEEN +#requires amssymb +"8812": \between{} +#RIGHT TACK +"8866": \vdash{} +#FORCES +#requires amssymb +"8873": \Vdash{} +#TRUE +#requires amssymb +"8872": \vDash{} +#XOR +#requires amssymb +"8891": \veebar{} +#NORMAL SUBGROUP OF +#requires amssymb +"8882": \vartriangleleft{} +#PROPORTIONAL TO +#requires amssymb +"8733": \varpropto{} +#CONTAINS AS NORMAL SUBGROUP +#requires amssymb +"8883": \vartriangleright{} +#TRIPLE VERTICAL BAR RIGHT TURNSTILE +#requires amssymb +"8874": \Vvdash{} +#GREATER-THAN BUT NOT EQUAL TO +#requires amssymb +"8809": \gneq{} +#GREATER-THAN BUT NOT EQUAL TO +#requires amssymb +"8809": \gneqq{} +#GREATER-THAN BUT NOT EQUIVALENT TO +#requires amssymb +"8935": \gnsim{} +#GREATER-THAN BUT NOT EQUAL TO +#requires amssymb +"8809": \gvertneqq{} +#LESS-THAN BUT NOT EQUAL TO +#requires amssymb +"8808": \lneqq{} +#LESS-THAN BUT NOT EQUAL TO +#requires amssymb +"8808": \lneq{} +#LESS-THAN BUT NOT EQUIVALENT TO +#requires amssymb +"8934": \lnsim{} +#LESS-THAN BUT NOT EQUAL TO +#requires amssymb +"8808": \lvertneqq{} +#NOT ALMOST EQUAL TO +"8777": \not\approx{} +#NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO +#requires amssymb +"8775": \not\cong{} +#NOT IDENTICAL TO +"8802": \not\equiv{} +#NEITHER GREATER-THAN NOR EQUAL TO +#requires amssymb +"8817": \not\geq{} +#NEITHER GREATER-THAN NOR EQUAL TO +#requires amssymb +"8817": \ngeqslant{} +#NOT GREATER-THAN +#requires amssymb +"8815": \not> +#NEITHER LESS-THAN NOR EQUAL TO +#requires amssymb +"8816": \not\leq{} +#NEITHER LESS-THAN NOR EQUAL TO +#requires amssymb +"8816": \nleqslant{} +#NOT LESS-THAN +#requires amssymb +"8814": \not< +#NOT NORMAL SUBGROUP OF +#requires amssymb +"8938": \ntriangleleft{} +#NOT NORMAL SUBGROUP OF OR EQUAL TO +#requires amssymb +"8940": \ntrianglelefteq{} +#DOES NOT DIVIDE +#requires amssymb +"8740": \nmid{} +#NOT PARALLEL TO +#requires amssymb +"8742": \nparallel{} +#DOES NOT PRECEDE +#requires amssymb +"8832": \not\prec{} +#DOES NOT PRECEDE OR EQUAL +#requires amssymb +"8928": \not\preceq{} +#DOES NOT CONTAIN AS NORMAL SUBGROUP +#requires amssymb +"8939": \ntriangleright{} +#DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL +#requires amssymb +"8941": \ntrianglerighteq{} +#DOES NOT SUCCEED +#requires amssymb +"8833": \not\succ{} +#DOES NOT SUCCEED OR EQUAL +#requires amssymb +"8929": \not\succeq{} +#NOT TILDE +#requires amssymb +"8769": \not\sim{} +#NOT ASYMPTOTICALLY EQUAL TO +"8772": \not\simeq{} +#NOT A SUBSET OF +nsub: \not\subset{} +#NOT A SUBSET OF +"8836": \not\subset{} +#NEITHER A SUBSET OF NOR EQUAL TO +#requires amssymb +"8840": \not\subseteq{} +#NEITHER A SUBSET OF NOR EQUAL TO +#requires amssymb +"8840": \nsubseteqq{} +#NOT A SUPERSET OF +"8837": \not\supset{} +#NEITHER A SUPERSET OF NOR EQUAL TO +#requires amssymb +"8841": \nsupseteqq{} +#NEITHER A SUPERSET OF NOR EQUAL TO +#requires amssymb +"8841": \not\supseteq{} +#DOES NOT PROVE +#requires amssymb +"8876": \nvdash{} +#NOT TRUE +#requires amssymb +"8877": \nvDash{} +#NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE +#requires amssymb +"8879": \nVDash{} +#DOES NOT FORCE +#requires amssymb +"8878": \nVdash{} +#PRECEDES BUT NOT EQUIVALENT TO +#requires amssymb +"8936": \precnsim{} +#SUCCEEDS BUT NOT EQUIVALENT TO +#requires amssymb +"8937": \succnsim{} +#TRUE +#requires amssymb +"8842": \subsetneq{} +#TRUE +#requires amssymb +"8842": \subsetneqq{} +#SUPERSET OF WITH NOT EQUAL TO +#requires amssymb +"8843": \supsetneq{} +#SUPERSET OF WITH NOT EQUAL TO +#requires amssymb +"8843": \supsetneqq{} +#ANTICLOCKWISE TOP SEMICIRCLE ARROW +#requires amssymb +"8630": \curvearrowleft{} +#CLOCKWISE TOP SEMICIRCLE ARROW +#requires amssymb +"8631": \curvearrowright{} +#DOWNWARDS DOUBLE ARROW +dArr: \Downarrow{} +#DOWNWARDS DOUBLE ARROW +"8659": \Downarrow{} +#DOWNWARDS PAIRED ARROWS +#requires amssymb +"8650": \downdownarrows{} +#DOWNWARDS HARPOON WITH BARB LEFTWARDS +#requires amssymb +"8643": \downharpoonleft{} +#DOWNWARDS HARPOON WITH BARB RIGHTWARDS +#requires amssymb +"8642": \downharpoonright{} +#LEFTWARDS TRIPLE ARROW +#requires amssymb +"8666": \Lleftarrow{} +#LEFTWARDS TWO HEADED ARROW +#requires amssymb +"8606": \twoheadleftarrow{} +#LEFTWARDS PAIRED ARROWS +#requires amssymb +"8647": \leftleftarrows{} +#LEFTWARDS ARROW WITH HOOK +"8617": \hookleftarrow{} +#LEFTWARDS ARROW WITH LOOP +#requires amssymb +"8619": \looparrowleft{} +#LEFTWARDS ARROW WITH TAIL +#requires amssymb +"8610": \leftarrowtail{} +#LEFTWARDS HARPOON WITH BARB DOWNWARDS +"8637": \leftharpoondown{} +#LEFTWARDS HARPOON WITH BARB UPWARDS +"8636": \leftharpoonup{} +#LEFT RIGHT DOUBLE ARROW +hArr: \Leftrightarrow{} +#LEFT RIGHT DOUBLE ARROW +"8660": \Leftrightarrow{} +#LEFT RIGHT ARROW +harr: \leftrightarrow{} +#LEFT RIGHT ARROW +"8596": \leftrightarrow{} +#LEFTWARDS ARROW OVER RIGHTWARDS ARROW +#requires amssymb +"8646": \leftrightarrows{} +#RIGHTWARDS ARROW OVER LEFTWARDS ARROW +#requires amssymb +"8644": \rightleftarrows{} +#LEFT RIGHT WAVE ARROW +#requires amssymb +"8621": \leftrightsquigarrow{} +#RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON +"8652": \rightleftharpoons{} +#LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON +#requires amssymb +"8651": \leftrightharpoons{} +#UPWARDS ARROW WITH TIP LEFTWARDS +#requires amssymb +"8624": \Lsh{} +#RIGHTWARDS ARROW FROM BAR +"8614": \mapsto{} +#MULTIMAP +#requires amssymb +"8888": \multimap{} +#NORTH EAST ARROW +"8599": \nearrow{} +#LEFTWARDS DOUBLE ARROW WITH STROKE +#requires amssymb +"8653": \nLeftarrow{} +#LEFTWARDS ARROW WITH STROKE +#requires amssymb +"8602": \nleftarrow{} +#LEFT RIGHT DOUBLE ARROW WITH STROKE +#requires amssymb +"8654": \nLeftrightarrow{} +#LEFT RIGHT ARROW WITH STROKE +#requires amssymb +"8622": \nleftrightarrow{} +#RIGHTWARDS ARROW WITH STROKE +#requires amssymb +"8603": \nrightarrow{} +#RIGHTWARDS DOUBLE ARROW WITH STROKE +#requires amssymb +"8655": \nRightarrow{} +#NORTH WEST ARROW +"8598": \nwarrow{} +#ANTICLOCKWISE OPEN CIRCLE ARROW +#requires amssymb +"8634": \circlearrowleft{} +#CLOCKWISE OPEN CIRCLE ARROW +#requires amssymb +"8635": \circlearrowright{} +#RIGHTWARDS TRIPLE ARROW +#requires amssymb +"8667": \Rrightarrow{} +#RIGHTWARDS TWO HEADED ARROW +#requires amssymb +"8608": \twoheadrightarrow{} +#RIGHTWARDS PAIRED ARROWS +#requires amssymb +"8649": \rightrightarrows{} +#RIGHTWARDS ARROW WITH HOOK +"8618": \hookrightarrow{} +#RIGHTWARDS ARROW WITH LOOP +#requires amssymb +"8620": \looparrowright{} +#RIGHTWARDS ARROW WITH TAIL +#requires amssymb +"8611": \rightarrowtail{} +#RIGHTWARDS SQUIGGLE ARROW +#requires amssymb +"8669": \rightsquigarrow{} +#RIGHTWARDS HARPOON WITH BARB DOWNWARDS +"8641": \rightharpoondown{} +#RIGHTWARDS HARPOON WITH BARB UPWARDS +"8640": \rightharpoonup{} +#UPWARDS ARROW WITH TIP RIGHTWARDS +#requires amssymb +"8625": \Rsh{} +#SOUTH EAST ARROW +"8600": \searrow{} +#SOUTH WEST ARROW +"8601": \swarrow{} +#UPWARDS DOUBLE ARROW +uArr: \Uparrow{} +#UPWARDS DOUBLE ARROW +"8657": \Uparrow{} +#UPWARDS PAIRED ARROWS +#requires amssymb +"8648": \upuparrows{} +#UP DOWN DOUBLE ARROW +"8661": \Updownarrow{} +#UP DOWN ARROW +"8597": \updownarrow{} +#UPWARDS HARPOON WITH BARB LEFTWARDS +#requires amssymb +"8639": \upharpoonleft{} +#UPWARDS HARPOON WITH BARB RIGHTWARDS +#requires amssymb +"8638": \upharpoonright{} +#RIGHT CEILING +rceil: \rceil{} +#RIGHT CEILING +"8969": \rceil{} +#RIGHT FLOOR +rfloor: \rfloor{} +#RIGHT FLOOR +"8971": \rfloor{} +#TOP RIGHT CORNER +#requires amsfonts +"8989": \urcorner{} +#BOTTOM RIGHT CORNER +#requires amsfonts +"8991": \lrcorner{} +#LEFT CEILING +lceil: \lceil{} +#LEFT CEILING +"8968": \lceil{} +#LEFT FLOOR +lfloor: \lfloor{} +#LEFT FLOOR +"8970": \lfloor{} +#TOP LEFT CORNER +#requires amsfonts +"8988": \ulcorner{} +#BOTTOM LEFT CORNER +#requires amsfonts +"8990": \llcorner{} +#LATIN SMALL LETTER A WITH ACUTE +aacute: \'{a} +#LATIN SMALL LETTER A WITH ACUTE +"225": \'{a} +#LATIN CAPITAL LETTER A WITH ACUTE +Aacute: \'{A} +#LATIN CAPITAL LETTER A WITH ACUTE +"193": \'{A} +#LATIN SMALL LETTER A WITH CIRCUMFLEX +acirc: \^{a} +#LATIN SMALL LETTER A WITH CIRCUMFLEX +"226": \^{a} +#LATIN CAPITAL LETTER A WITH CIRCUMFLEX +Acirc: \^{A} +#LATIN CAPITAL LETTER A WITH CIRCUMFLEX +"194": \^{A} +#LATIN SMALL LETTER A WITH GRAVE +agrave: \`{a} +#LATIN SMALL LETTER A WITH GRAVE +"224": \`{a} +#LATIN CAPITAL LETTER A WITH GRAVE +Agrave: \`{A} +#LATIN CAPITAL LETTER A WITH GRAVE +"192": \`{A} +#LATIN SMALL LETTER A WITH RING ABOVE +aring: \aa{} +#LATIN SMALL LETTER A WITH RING ABOVE +"229": \aa{} +#LATIN CAPITAL LETTER A WITH RING ABOVE +Aring: \AA{} +#LATIN CAPITAL LETTER A WITH RING ABOVE +"197": \AA{} +#LATIN SMALL LETTER A WITH TILDE +atilde: \~{a} +#LATIN SMALL LETTER A WITH TILDE +"227": \~{a} +#LATIN CAPITAL LETTER A WITH TILDE +Atilde: \~{A} +#LATIN CAPITAL LETTER A WITH TILDE +"195": \~{A} +#LATIN SMALL LETTER A WITH DIAERESIS +auml: \"{a} +#LATIN SMALL LETTER A WITH DIAERESIS +"228": \"{a} +#LATIN CAPITAL LETTER A WITH DIAERESIS +Auml: \"{A} +#LATIN CAPITAL LETTER A WITH DIAERESIS +"196": \"{A} +#LATIN SMALL LETTER AE +aelig: \ae{} +#LATIN SMALL LETTER AE +"230": \ae{} +#LATIN CAPITAL LETTER AE +AElig: \AE{} +#LATIN CAPITAL LETTER AE +"198": \AE{} +#LATIN SMALL LETTER C WITH CEDILLA +ccedil: \c{c} +#LATIN SMALL LETTER C WITH CEDILLA +"231": \c{c} +#LATIN CAPITAL LETTER C WITH CEDILLA +Ccedil: \c{C} +#LATIN CAPITAL LETTER C WITH CEDILLA +"199": \c{C} +#LATIN SMALL LETTER ETH +#requires amssymb +eth: \dh{} +#LATIN SMALL LETTER ETH +#requires amssymb +"240": \dh{} +#LATIN CAPITAL LETTER ETH +#requires wasysym +ETH: \DH{} +#LATIN CAPITAL LETTER ETH +#requires wasysym +"208": \DH{} +#LATIN SMALL LETTER E WITH ACUTE +eacute: \'{e} +#LATIN SMALL LETTER E WITH ACUTE +"233": \'{e} +#LATIN CAPITAL LETTER E WITH ACUTE +Eacute: \'{E} +#LATIN CAPITAL LETTER E WITH ACUTE +"201": \'{E} +#LATIN SMALL LETTER E WITH CIRCUMFLEX +ecirc: \^{e} +#LATIN SMALL LETTER E WITH CIRCUMFLEX +"234": \^{e} +#LATIN CAPITAL LETTER E WITH CIRCUMFLEX +Ecirc: \^{E} +#LATIN CAPITAL LETTER E WITH CIRCUMFLEX +"202": \^{E} +#LATIN SMALL LETTER E WITH GRAVE +egrave: \`{e} +#LATIN SMALL LETTER E WITH GRAVE +"232": \`{e} +#LATIN CAPITAL LETTER E WITH GRAVE +Egrave: \`{E} +#LATIN CAPITAL LETTER E WITH GRAVE +"200": \`{E} +#LATIN SMALL LETTER E WITH DIAERESIS +euml: \"{e} +#LATIN SMALL LETTER E WITH DIAERESIS +"235": \"{e} +#LATIN CAPITAL LETTER E WITH DIAERESIS +Euml: \"{E} +#LATIN CAPITAL LETTER E WITH DIAERESIS +"203": \"{E} +#LATIN SMALL LETTER I WITH ACUTE +iacute: \'{\i} +#LATIN SMALL LETTER I WITH ACUTE +"237": \'{\i} +#LATIN CAPITAL LETTER I WITH ACUTE +Iacute: \'{I} +#LATIN CAPITAL LETTER I WITH ACUTE +"205": \'{I} +#LATIN SMALL LETTER I WITH CIRCUMFLEX +icirc: \^{\i} +#LATIN SMALL LETTER I WITH CIRCUMFLEX +"238": \^{\i} +#LATIN CAPITAL LETTER I WITH CIRCUMFLEX +Icirc: \^{I} +#LATIN CAPITAL LETTER I WITH CIRCUMFLEX +"206": \^{I} +#LATIN SMALL LETTER I WITH GRAVE +igrave: \`{\i} +#LATIN SMALL LETTER I WITH GRAVE +"236": \`{\i} +#LATIN CAPITAL LETTER I WITH GRAVE +Igrave: \`{I} +#LATIN CAPITAL LETTER I WITH GRAVE +"204": \`{I} +#LATIN SMALL LETTER I WITH DIAERESIS +iuml: \"{\i} +#LATIN SMALL LETTER I WITH DIAERESIS +"239": \"{\i} +#LATIN CAPITAL LETTER I WITH DIAERESIS +Iuml: \"{I} +#LATIN CAPITAL LETTER I WITH DIAERESIS +"207": \"{I} +#LATIN SMALL LETTER N WITH TILDE +ntilde: \~{n} +#LATIN SMALL LETTER N WITH TILDE +"241": \~{n} +#LATIN CAPITAL LETTER N WITH TILDE +Ntilde: \~{N} +#LATIN CAPITAL LETTER N WITH TILDE +"209": \~{N} +#LATIN SMALL LETTER O WITH ACUTE +oacute: \'{o} +#LATIN SMALL LETTER O WITH ACUTE +"243": \'{o} +#LATIN CAPITAL LETTER O WITH ACUTE +Oacute: \'{O} +#LATIN CAPITAL LETTER O WITH ACUTE +"211": \'{O} +#LATIN SMALL LETTER O WITH CIRCUMFLEX +ocirc: \^{o} +#LATIN SMALL LETTER O WITH CIRCUMFLEX +"244": \^{o} +#LATIN CAPITAL LETTER O WITH CIRCUMFLEX +Ocirc: \^{O} +#LATIN CAPITAL LETTER O WITH CIRCUMFLEX +"212": \^{O} +#LATIN SMALL LETTER O WITH GRAVE +ograve: \`{o} +#LATIN SMALL LETTER O WITH GRAVE +"242": \`{o} +#LATIN CAPITAL LETTER O WITH GRAVE +Ograve: \`{O} +#LATIN CAPITAL LETTER O WITH GRAVE +"210": \`{O} +#LATIN SMALL LETTER O WITH STROKE +oslash: \o{} +#LATIN SMALL LETTER O WITH STROKE +"248": \o{} +#LATIN CAPITAL LETTER O WITH STROKE +Oslash: \O{} +#LATIN CAPITAL LETTER O WITH STROKE +"216": \O{} +#LATIN SMALL LETTER O WITH TILDE +otilde: \~{o} +#LATIN SMALL LETTER O WITH TILDE +"245": \~{o} +#LATIN CAPITAL LETTER O WITH TILDE +Otilde: \~{O} +#LATIN CAPITAL LETTER O WITH TILDE +"213": \~{O} +#LATIN SMALL LETTER O WITH DIAERESIS +ouml: \"{o} +#LATIN SMALL LETTER O WITH DIAERESIS +"246": \"{o} +#LATIN CAPITAL LETTER O WITH DIAERESIS +Ouml: \"{O} +#LATIN CAPITAL LETTER O WITH DIAERESIS +"214": \"{O} +#LATIN SMALL LETTER SHARP S +szlig: \ss{} +#LATIN SMALL LETTER SHARP S +"223": \ss{} +#LATIN SMALL LETTER THORN +#requires wasysym +thorn: \th{} +#LATIN SMALL LETTER THORN +#requires wasysym +"254": \th{} +#LATIN CAPITAL LETTER THORN +#requires wasysym +THORN: \TH{} +#LATIN CAPITAL LETTER THORN +#requires wasysym +"222": \TH{} +#LATIN SMALL LETTER U WITH ACUTE +uacute: \'{u} +#LATIN SMALL LETTER U WITH ACUTE +"250": \'{u} +#LATIN CAPITAL LETTER U WITH ACUTE +Uacute: \'{U} +#LATIN CAPITAL LETTER U WITH ACUTE +"218": \'{U} +#LATIN SMALL LETTER U WITH CIRCUMFLEX +ucirc: \^{u} +#LATIN SMALL LETTER U WITH CIRCUMFLEX +"251": \^{u} +#LATIN CAPITAL LETTER U WITH CIRCUMFLEX +Ucirc: \^{U} +#LATIN CAPITAL LETTER U WITH CIRCUMFLEX +"219": \^{U} +#LATIN SMALL LETTER U WITH GRAVE +ugrave: \`{u} +#LATIN SMALL LETTER U WITH GRAVE +"249": \`{u} +#LATIN CAPITAL LETTER U WITH GRAVE +Ugrave: \`{U} +#LATIN CAPITAL LETTER U WITH GRAVE +"217": \`{U} +#LATIN SMALL LETTER U WITH DIAERESIS +uuml: \"{u} +#LATIN SMALL LETTER U WITH DIAERESIS +"252": \"{u} +#LATIN CAPITAL LETTER U WITH DIAERESIS +Uuml: \"{U} +#LATIN CAPITAL LETTER U WITH DIAERESIS +"220": \"{U} +#LATIN SMALL LETTER Y WITH ACUTE +yacute: \'{y} +#LATIN SMALL LETTER Y WITH ACUTE +"253": \'{y} +#LATIN CAPITAL LETTER Y WITH ACUTE +Yacute: \'{Y} +#LATIN CAPITAL LETTER Y WITH ACUTE +"221": \'{Y} +#LATIN SMALL LETTER Y WITH DIAERESIS +yuml: \"{y} +#LATIN SMALL LETTER Y WITH DIAERESIS +"255": \"{y} +#LATIN SMALL LETTER A WITH BREVE +"259": \u{a} +#LATIN CAPITAL LETTER A WITH BREVE +"258": \u{A} +#LATIN SMALL LETTER A WITH MACRON +"257": \={a} +#LATIN CAPITAL LETTER A WITH MACRON +"256": \={A} +#LATIN SMALL LETTER A WITH OGONEK +#requires fontenc:T1 +"261": \k{a} +#LATIN CAPITAL LETTER A WITH OGONEK +#requires fontenc:T1 +"260": \k{A} +#LATIN SMALL LETTER C WITH ACUTE +"263": \'{c} +#LATIN CAPITAL LETTER C WITH ACUTE +"262": \'{C} +#LATIN SMALL LETTER C WITH CARON +"269": \v{c} +#LATIN CAPITAL LETTER C WITH CARON +"268": \v{C} +#LATIN SMALL LETTER C WITH CIRCUMFLEX +"265": \^{c} +#LATIN CAPITAL LETTER C WITH CIRCUMFLEX +"264": \^{C} +#LATIN SMALL LETTER C WITH DOT ABOVE +"267": \.{c} +#LATIN CAPITAL LETTER C WITH DOT ABOVE +"266": \.{C} +#LATIN SMALL LETTER D WITH CARON +"271": \v{d} +#LATIN CAPITAL LETTER D WITH CARON +"270": \v{D} +#LATIN SMALL LETTER D WITH STROKE +#requires fontenc:T1 +"273": \dj{} +#LATIN CAPITAL LETTER D WITH STROKE +#requires fontenc:T1 +"272": \DJ{} +#LATIN SMALL LETTER E WITH CARON +"283": \v{e} +#LATIN CAPITAL LETTER E WITH CARON +"282": \v{E} +#LATIN SMALL LETTER E WITH DOT ABOVE +"279": \.{e} +#LATIN CAPITAL LETTER E WITH DOT ABOVE +"278": \.{E} +#LATIN SMALL LETTER E WITH MACRON +"275": \={e} +#LATIN CAPITAL LETTER E WITH MACRON +"274": \={E} +#LATIN SMALL LETTER E WITH OGONEK +#requires fontenc:T1 +"281": \k{e} +#LATIN CAPITAL LETTER E WITH OGONEK +#requires fontenc:T1 +"280": \k{E} +#LATIN SMALL LETTER G WITH ACUTE +"501": \'{g} +#LATIN SMALL LETTER G WITH BREVE +"287": \u{g} +#LATIN CAPITAL LETTER G WITH BREVE +"286": \u{G} +#LATIN CAPITAL LETTER G WITH CEDILLA +"290": \c{G} +#LATIN SMALL LETTER G WITH CIRCUMFLEX +"285": \^{g} +#LATIN CAPITAL LETTER G WITH CIRCUMFLEX +"284": \^{G} +#LATIN SMALL LETTER G WITH DOT ABOVE +"289": \.{g} +#LATIN CAPITAL LETTER G WITH DOT ABOVE +"288": \.{G} +#LATIN SMALL LETTER H WITH CIRCUMFLEX +"293": \^{h} +#LATIN CAPITAL LETTER H WITH CIRCUMFLEX +"292": \^{H} +#LATIN SMALL LETTER H WITH STROKE +"295": \hstrok{} +#LATIN CAPITAL LETTER H WITH STROKE +"294": \Hstrok{} +#LATIN CAPITAL LETTER I WITH DOT ABOVE +"304": \.{I} +#LATIN CAPITAL LETTER I WITH MACRON +"298": \={I} +#LATIN SMALL LETTER I WITH MACRON +"299": \={\i} +#LATIN SMALL LIGATURE IJ +"307": i\kern -.15em j +#LATIN CAPITAL LIGATURE IJ +"306": I\kern -.15em J +#LATIN SMALL LETTER DOTLESS I +"305": \i{} +#LATIN SMALL LETTER I WITH OGONEK +#requires fontenc:T1 +"303": \k{i} +#LATIN CAPITAL LETTER I WITH OGONEK +#requires fontenc:T1 +"302": \k{I} +#LATIN SMALL LETTER I WITH TILDE +"297": \~{\i} +#LATIN CAPITAL LETTER I WITH TILDE +"296": \~{I} +#LATIN SMALL LETTER J WITH CIRCUMFLEX +"309": \^{\j} +#LATIN CAPITAL LETTER J WITH CIRCUMFLEX +"308": \^{J} +#LATIN SMALL LETTER K WITH CEDILLA +"311": \c{k} +#LATIN CAPITAL LETTER K WITH CEDILLA +"310": \c{K} +#LATIN SMALL LETTER KRA +"312": \textsc{k} +#LATIN SMALL LETTER L WITH ACUTE +"314": \'{l} +#LATIN CAPITAL LETTER L WITH ACUTE +"313": \'{L} +#LATIN SMALL LETTER L WITH CARON +"318": \v{l} +#LATIN CAPITAL LETTER L WITH CARON +"317": \v{L} +#LATIN SMALL LETTER L WITH CEDILLA +"316": \c{l} +#LATIN CAPITAL LETTER L WITH CEDILLA +"315": \c{L} +#LATIN SMALL LETTER L WITH MIDDLE DOT +"320": \lmidot{} +#LATIN CAPITAL LETTER L WITH MIDDLE DOT +"319": \Lmidot{} +#LATIN SMALL LETTER L WITH STROKE +"322": \l{} +#LATIN CAPITAL LETTER L WITH STROKE +"321": \L{} +#LATIN SMALL LETTER N WITH ACUTE +"324": \'{n} +#LATIN CAPITAL LETTER N WITH ACUTE +"323": \'{N} +#LATIN SMALL LETTER ENG +#requires fontenc:T1 +"331": \ng{} +#LATIN CAPITAL LETTER ENG +#requires fontenc:T1 +"330": \NG{} +#LATIN SMALL LETTER N PRECEDED BY APOSTROPHE +"329": n\kern-.2em\textsf{'} +#LATIN SMALL LETTER N WITH CARON +"328": \v{n} +#LATIN CAPITAL LETTER N WITH CARON +"327": \v{N} +#LATIN SMALL LETTER N WITH CEDILLA +"326": \c{n} +#LATIN CAPITAL LETTER N WITH CEDILLA +"325": \c{N} +#LATIN SMALL LETTER O WITH DOUBLE ACUTE +"337": \H{o} +#LATIN CAPITAL LETTER O WITH DOUBLE ACUTE +"336": \H{O} +#LATIN CAPITAL LETTER O WITH MACRON +"332": \={O} +#LATIN SMALL LETTER O WITH MACRON +"333": \={o} +#LATIN SMALL LIGATURE OE +oelig: \oe{} +#LATIN SMALL LIGATURE OE +"339": \oe{} +#LATIN CAPITAL LIGATURE OE +OElig: \OE{} +#LATIN CAPITAL LIGATURE OE +"338": \OE{} +#LATIN SMALL LETTER R WITH ACUTE +"341": \'{r} +#LATIN CAPITAL LETTER R WITH ACUTE +"340": \'{R} +#LATIN SMALL LETTER R WITH CARON +"345": \v{r} +#LATIN CAPITAL LETTER R WITH CARON +"344": \v{R} +#LATIN SMALL LETTER R WITH CEDILLA +"343": \c{r} +#LATIN CAPITAL LETTER R WITH CEDILLA +"342": \c{R} +#LATIN SMALL LETTER S WITH ACUTE +"347": \'{s} +#LATIN CAPITAL LETTER S WITH ACUTE +"346": \'{S} +#LATIN SMALL LETTER S WITH CARON +scaron: \v{s} +#LATIN SMALL LETTER S WITH CARON +"353": \v{s} +#LATIN CAPITAL LETTER S WITH CARON +Scaron: \v{S} +#LATIN CAPITAL LETTER S WITH CARON +"352": \v{S} +#LATIN SMALL LETTER S WITH CEDILLA +"351": \c{s} +#LATIN CAPITAL LETTER S WITH CEDILLA +"350": \c{S} +#LATIN SMALL LETTER S WITH CIRCUMFLEX +"349": \^{s} +#LATIN CAPITAL LETTER S WITH CIRCUMFLEX +"348": \^{S} +#LATIN SMALL LETTER T WITH CARON +"357": \v{t} +#LATIN CAPITAL LETTER T WITH CARON +"356": \v{T} +#LATIN SMALL LETTER T WITH CEDILLA +"355": \c{t} +#LATIN CAPITAL LETTER T WITH CEDILLA +"354": \c{T} +#LATIN SMALL LETTER T WITH STROKE +"359": \tstrok{} +#LATIN CAPITAL LETTER T WITH STROKE +"358": \Tstrok{} +#LATIN SMALL LETTER U WITH BREVE +"365": \u{u} +#LATIN CAPITAL LETTER U WITH BREVE +"364": \u{U} +#LATIN SMALL LETTER U WITH DOUBLE ACUTE +"369": \H{u} +#LATIN CAPITAL LETTER U WITH DOUBLE ACUTE +"368": \H{U} +#LATIN SMALL LETTER U WITH MACRON +"363": \={u} +#LATIN CAPITAL LETTER U WITH MACRON +"362": \={U} +#LATIN SMALL LETTER U WITH OGONEK +#requires fontenc:T1 +"371": \k{u} +#LATIN CAPITAL LETTER U WITH OGONEK +#requires fontenc:T1 +"370": \k{U} +#LATIN SMALL LETTER U WITH RING ABOVE +"367": \r{u} +#LATIN CAPITAL LETTER U WITH RING ABOVE +"366": \r{U} +#LATIN SMALL LETTER U WITH TILDE +"361": \~{u} +#LATIN CAPITAL LETTER U WITH TILDE +"360": \~{U} +#LATIN SMALL LETTER W WITH CIRCUMFLEX +"373": \^{w} +#LATIN CAPITAL LETTER W WITH CIRCUMFLEX +"372": \^{W} +#LATIN SMALL LETTER Y WITH CIRCUMFLEX +"375": \^{y} +#LATIN CAPITAL LETTER Y WITH CIRCUMFLEX +"374": \^{Y} +#LATIN CAPITAL LETTER Y WITH DIAERESIS +Yuml: \"{Y} +#LATIN CAPITAL LETTER Y WITH DIAERESIS +"376": \"{Y} +#LATIN SMALL LETTER Z WITH ACUTE +"378": \'{z} +#LATIN CAPITAL LETTER Z WITH ACUTE +"377": \'{Z} +#LATIN SMALL LETTER Z WITH CARON +"382": \v{z} +#LATIN CAPITAL LETTER Z WITH CARON +"381": \v{Z} +#LATIN SMALL LETTER Z WITH DOT ABOVE +"380": \.{z} +#LATIN CAPITAL LETTER Z WITH DOT ABOVE +"379": \.{Z} +#ACUTE ACCENT +#requires textcomp +acute: \'{} +#ACUTE ACCENT +#requires textcomp +"180": \'{} +#BREVE +#requires textcomp +"728": \u{} +#CARON +#requires textcomp +"711": \v{} +#CEDILLA +cedil: \c{} +#CEDILLA +"184": \c{} +#CIRCUMFLEX ACCENT +circ: \^{} +#CIRCUMFLEX ACCENT +"94": \^{} +#DOUBLE ACUTE ACCENT +#requires textcomp +"733": \H{} +#DIAERESIS +#requires textcomp +uml: \"{} +#DIAERESIS +#requires textcomp +"168": \"{} +#DOT ABOVE +"729": \.{} +#GRAVE ACCENT +#requires textcomp +"96": \`{} +#MACRON +#requires textcomp +macr: \={} +#MACRON +#requires textcomp +"175": \={} +#OGONEK +#requires fontenc:T1 +"731": \k{} +#RING ABOVE +"730": \r{} +#TILDE +#requires textcomp +tilde: \~{} +#TILDE +#requires textcomp +"126": \~{} +#HORIZONTAL TABULATION +"9": \>,\= +#LINE FEED +"10": \\ +#SINGLE LEFT-POINTING ANGLE QUOTATION MARK +#requires fontenc:T1 +lsaquo: \guilsinglleft{} +#SINGLE LEFT-POINTING ANGLE QUOTATION MARK +#requires fontenc:T1 +"8249": \guilsinglleft{} +#SINGLE RIGHT-POINTING ANGLE QUOTATION MARK +#requires fontenc:T1 +rsaquo: \guilsinglright{} +#SINGLE RIGHT-POINTING ANGLE QUOTATION MARK +#requires fontenc:T1 +"8250": \guilsinglright{} +#OVERLINE +oline: \={} +#OVERLINE +"8254": \={} +#FRACTION SLASH +#requires textcomp +frasl: \textfractionsolidus{} +#FRACTION SLASH +#requires textcomp +"8260": \textfractionsolidus{} +#EURO SIGN +#requires textcomp +euro: \texteuro{} +#EURO SIGN +#requires textcomp +"8364": \texteuro{} +#LEFTWARDS DASHED ARROW +#requires amssymb +"8672": \dashleftarrow{} +#RIGHTWARDS DASHED ARROW +#requires amssymb +"8674": \dashrightarrow{} +#INVERTED OHM SIGN +#requires amssymb +"8487": \textmho{} +#PROPORTION +"8759": "::" +#LEFT WHITE SQUARE BRACKET +#requires stmaryrd +"12314": \textlbrackdbl{} +#PER TEN THOUSAND SIGN +#requires textcomp +"8241": \textpertenthousand{} +#RIGHT WHITE SQUARE BRACKET +#requires stmaryrd +"12315": \textrbrackdbl{} +#MODIFIER LETTER LOW MACRON +"717": \b{} +#COMBINING DOT BELOW +"803": \d{} +#COMBINING DOUBLE INVERTED BREVE +"865": \t{} +#REFERENCE MARK +#requires textcomp +"8251": \textreferencemark{} \ No newline at end of file diff --git a/vendor/gems/RedCloth-4.0.3/lib/redcloth/textile_doc.rb b/vendor/gems/RedCloth-4.0.3/lib/redcloth/textile_doc.rb new file mode 100644 index 0000000..6440200 --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/lib/redcloth/textile_doc.rb @@ -0,0 +1,105 @@ +module RedCloth + class TextileDoc < String + # + # Accessors for setting security restrictions. + # + # This is a nice thing if you're using RedCloth for + # formatting in public places (e.g. Wikis) where you + # don't want users to abuse HTML for bad things. + # + # If +:filter_html+ is set, HTML which wasn't + # created by the Textile processor will be escaped. + # Alternatively, if +:sanitize_html+ is set, + # HTML can pass through the Textile processor but + # unauthorized tags and attributes will be removed. + # + # If +:filter_styles+ is set, it will also disable + # the style markup specifier. ('{color: red}') + # + # If +:filter_classes+ is set, it will also disable + # class attributes. ('!(classname)image!') + # + # If +:filter_ids+ is set, it will also disable + # id attributes. ('!(classname#id)image!') + # + attr_accessor :filter_html, :sanitize_html, :filter_styles, :filter_classes, :filter_ids + + # + # Deprecated accessor for toggling hard breaks. + # + # Traditional RedCloth converted single newlines + # to HTML break tags, but later versions required + # +:hard_breaks+ be set to enable this behavior. + # +:hard_breaks+ is once again the default. The + # accessor is deprecated and will be removed in a + # future version. + # + attr_accessor :hard_breaks + + # Accessor for toggling lite mode. + # + # In lite mode, block-level rules are ignored. This means + # that tables, paragraphs, lists, and such aren't available. + # Only the inline markup for bold, italics, entities and so on. + # + # r = RedCloth.new( "And then? She *fell*!", [:lite_mode] ) + # r.to_html + # #=> "And then? She fell!" + # + attr_accessor :lite_mode + + # + # Accessor for toggling span caps. + # + # Textile places `span' tags around capitalized + # words by default, but this wreaks havoc on Wikis. + # If +:no_span_caps+ is set, this will be + # suppressed. + # + attr_accessor :no_span_caps + + # Returns a new RedCloth object, based on _string_, observing + # any _restrictions_ specified. + # + # r = RedCloth.new( "h1. A *bold* man" ) + # #=> "h1. A *bold* man" + # r.to_html + # #=>"

A bold man

" + # + def initialize( string, restrictions = [] ) + restrictions.each { |r| method("#{r}=").call( true ) } + super( string ) + end + + # + # Generates HTML from the Textile contents. + # + # RedCloth.new( "And then? She *fell*!" ).to_html + # #=>"

And then? She fell!

" + # + def to_html( *rules ) + apply_rules(rules) + + to(RedCloth::Formatters::HTML) + end + + # + # Generates LaTeX from the Textile contents. + # + # RedCloth.new( "And then? She *fell*!" ).to_latex + # #=> "And then? She \\textbf{fell}!\n\n" + # + def to_latex( *rules ) + apply_rules(rules) + + to(RedCloth::Formatters::LATEX) + end + + private + def apply_rules(rules) + rules.each do |r| + method(r).call(self) if self.respond_to?(r) + end + end + end +end \ No newline at end of file diff --git a/vendor/gems/RedCloth-4.0.3/lib/redcloth/version.rb b/vendor/gems/RedCloth-4.0.3/lib/redcloth/version.rb new file mode 100644 index 0000000..f00e796 --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/lib/redcloth/version.rb @@ -0,0 +1,28 @@ +module RedCloth + module VERSION + MAJOR = 4 + MINOR = 0 + TINY = 3 + RELEASE_CANDIDATE = nil + + STRING = [MAJOR, MINOR, TINY].join('.') + TAG = "REL_#{[MAJOR, MINOR, TINY, RELEASE_CANDIDATE].compact.join('_')}".upcase.gsub(/\.|-/, '_') + FULL_VERSION = "#{[MAJOR, MINOR, TINY, RELEASE_CANDIDATE].compact.join('.')}" + + class << self + def to_s + STRING + end + + def ==(arg) + STRING == arg + end + end + end + + NAME = "RedCloth" + GEM_NAME = NAME + URL = "http://redcloth.org/" + + DESCRIPTION = "#{NAME}-#{VERSION::FULL_VERSION} - Textile parser for Ruby.\n#{URL}" +end \ No newline at end of file diff --git a/vendor/gems/RedCloth-4.0.3/lib/redcloth_scan.bundle b/vendor/gems/RedCloth-4.0.3/lib/redcloth_scan.bundle new file mode 100755 index 0000000000000000000000000000000000000000..a39a745f4b74681f1013b0a7d63d9b9f0e560b1f GIT binary patch literal 544052 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 z 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 literal 0 HcmV?d00001 diff --git a/vendor/gems/RedCloth-4.0.3/test/basic.yml b/vendor/gems/RedCloth-4.0.3/test/basic.yml new file mode 100644 index 0000000..f2ca88a --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/test/basic.yml @@ -0,0 +1,815 @@ +--- +name: paragraphs +desc: Textile looks for paragraphs in your text. Paragraphs are separated by one blank line. Every paragraph is translated as an HTML paragraph. +in: |- + A single paragraph. + + Followed by another. +html: |- +

A single paragraph.

+

Followed by another.

+--- +name: block containing block start +in: |- + I saw a ship. It ate my elephant. +html: |- +

I saw a ship. It ate my elephant.

+--- +name: extended block containing block start +in: |- + p.. I saw a ship. It ate my elephant. + + When the elephant comes to take a p. you... +html: |- +

I saw a ship. It ate my elephant.

+

When the elephant comes to take a p. you…

+--- +name: blockquote containing block start +in: |- + bq. I saw a ship. It ate my elephant. +html: |- +
+

I saw a ship. It ate my elephant.

+
+--- +name: extended blockquote containing block start +in: |- + bq.. I saw a ship. It ate my elephant. + + When the elephant comes to take a p. you... +html: |- +
+

I saw a ship. It ate my elephant.

+

When the elephant comes to take a p. you…

+
+--- +name: notextile block containing block start +in: |- + notextile. I saw a ship. It ate my elephant. +html: |- + I saw a ship. It ate my elephant. +valid_html: false +--- +name: extended notextile block containing block start +in: |- + notextile.. I saw a ship. It ate my elephant. + + When the elephant comes to take a p. you... +html: |- + I saw a ship. It ate my elephant. + + When the elephant comes to take a p. you... +valid_html: false +--- +name: pre block containing block start +in: |- + pre. I saw a ship. It ate my elephant. +html: |- +
I saw a ship. It ate my elephant.
+--- +name: extended pre block containing block start +in: |- + pre.. I saw a ship. It ate my elephant. + + When the elephant comes to take a p. you... +html: |- +
I saw a ship. It ate my elephant.
+ +
When the elephant comes to take a p. you…
+ --- +name: html tags +desc: You can certainly use HTML tags inside your Textile documents. HTML will only be escaped if it’s found in a pre or code block. +in: |- + I am very serious. + +
+    I am very serious.
+  
+html: |- +

I am very serious.

+
+    I am <b>very</b> serious.
+  
+--- +name: line breaks +desc: Line breaks are converted to HTML breaks. +in: |- + I spoke. + And none replied. +html: |- +

I spoke.
+ And none replied.

+html_no_breaks: |- +

I spoke. + And none replied.

+lite_mode_html: |- + I spoke.
+ And none replied. +--- +name: curly quotes +desc: Single- and double-quotes around words or phrases are converted to curly quotations, much easier on the eye. +in: "\"Observe!\"" +html:

“Observe!”

+--- +name: double hyphens +desc: Double hyphens are replaced with an em-dash. +in: Observe--very nice! +html:

Observe—very nice!

+latex: "Observe---very nice!\n\n" +--- +name: double hyphens with spaces +desc: Double hyphens are replaced with an em-dash and surrounding spaces are preserved. +in: Observe -- very nice! +html:

Observe — very nice!

+latex: "Observe --- very nice!\n\n" +--- +name: parenthetical phrase set off with em dashes +desc: Sentences with two em dashes should not turn them into strikethroughs +in: An emdash indicates a parenthetical thought--like this one--which is set apart from the rest of a sentence. +html: "

An emdash indicates a parenthetical thought—like this one—which is set apart from the rest of a sentence.

" +latex: "An emdash indicates a parenthetical thought---like this one---which is set apart from the rest of a sentence.\n\n" +--- +name: parenthetical phrase set off with em dashes surrounded by spaces +desc: Sentences with two em dashes should not turn them into strikethroughs +in: An emdash indicates a parenthetical thought -- like this one -- which is set apart from the rest of a sentence. +html: "

An emdash indicates a parenthetical thought — like this one — which is set apart from the rest of a sentence.

" +latex: "An emdash indicates a parenthetical thought --- like this one --- which is set apart from the rest of a sentence.\n\n" +--- +name: single hyphens with spaces +desc: Single hyphens are replaced with en-dashes if they are surrounded by spaces. +in: Observe - tiny and brief. +html:

Observe – tiny and brief.

+latex: "Observe--tiny and brief.\n\n" +--- +name: midword hyphens +desc: Single hyphens are left alone if not surrounded by spaces. +in: Observe the nicely-done hyphen. +html:

Observe the nicely-done hyphen.

+--- +name: ellipses +desc: Triplets of periods become an ellipsis. +in: Observe... +html:

Observe…

+lite_mode_html: Observe… +--- +name: dimension sign +desc: The letter 'x' becomes a dimension sign when used between digits. +in: "Observe: 2x3." +html: "

Observe: 2×3.

" +--- +name: dimension sign with space after +in: "The room is 2x3 inches big." +html: "

The room is 2×3 inches big.

" +--- +name: dimension sign with spaces +in: "Observe: 2 x 4." +html: "

Observe: 2 × 4.

" +--- +name: dimension signs chained +in: "Observe: 2x3x4." +html: "

Observe: 2×3×4.

" +lite_mode_html: "Observe: 2×3×4." +--- +name: dimension signs with double primes +in: 'My mouse: 2.5" x 4".' +html: '

My mouse: 2.5″ × 4″.

' +--- +name: dimension signs with single primes +in: "My office: 5' x 4.5'." +html: "

My office: 5′ × 4.5′.

" +--- +name: trademark and copyright +desc: Conversion of trademark and copyright symbols. +in: one(TM), two(R), three(C). +html:

one™, two®, three©.

+lite_mode_html: one™, two®, three©. +--- +name: headers +desc: To make an entire paragraph into a Header, place “hn.” at its beginning, where n is a number from 1-6. +in: h3. Header 3 +html:

Header 3

+--- +name: blockquote +desc: To make an entire paragraph into a block quotation, place “bq.” before it. +in: |- + Any old text + + bq. A block quotation. + + Any old text +html: |- +

Any old text

+
+

A block quotation.

+
+

Any old text

+--- +name: footnote reference +desc: Numeric references within text to footnotes appear between square brackets. +in: This is covered elsewhere[1]. +html:
+--- +name: footnote +desc: To create the footnote that corresponds to its reference within the text, begin a new paragraph with fn and the footnote’s number, followed by a dot and a space. +in: fn1. Down here, in fact. +html:

1 Down here, in fact.

+--- +name: em +desc: Emphasis to text is added by surrounding a phrase with underscores. In HTML, this often appears as italics. +in: I _believe_ every word. +html:

I believe every word.

+lite_mode_html: "I believe every word." +--- +name: strong +desc: Strength can be give to text by surrounding with asterisks. In HTML, this strength appears as bold. +in: And then? She *fell*! +html:

And then? She fell!

+lite_mode_html: "And then? She fell!" +--- +name: force bold italics +desc: Both italics and bold can be forced by doubling the underscores or asterisks. +in: |- + I __know__. + I **really** __know__. +html: |- +

I know.
+ I really know.

+--- +name: citation +desc: Use double question marks to indicate citation. The title of a book, for instance. +in: ??Cat's Cradle?? by Vonnegut +html:

Cat’s Cradle by Vonnegut

+--- +name: code phrases +desc: Code phrases can be surrounded by at-symbols. +in: Convert with @r.to_html@ +html:

Convert with r.to_html

+lite_mode_html: Convert with r.to_html +--- +name: code phrases not created with multiple email addresses +in: Please email why@domain.com or jason@domain.com. +html:

Please email why@domain.com or jason@domain.com.

+--- +name: del +desc: To indicate a passage which has been deleted, surround the passage with hypens. +in: I'm -sure- not sure. +html:

I’m sure not sure.

+--- +name: ins +desc: Pluses around a passage indicate its insertion. +in: You are a +pleasant+ child. +html:

You are a pleasant child.

+--- +name: superscript +desc: To superscript a phrase, surround with carets. +in: a ^2^ + b ^2^ = c ^2^ +html:

a 2 + b 2 = c 2

+--- +name: subscript +desc: To subscript, surround with tildes. +in: log ~2~ x +html:

log 2 x

+--- +name: tight superscript and subscript +desc: if you want your superscript or subscript to not be surrounded by spaces, you must use square brackets +in: f(x, n) = log[~4~]x[^n^] +html: '

f(x, n) = log4xn

' +--- +name: span +desc: Lastly, if you find yourself needing to customize the style of a passage, use percent symbols to translate the passage as an HTML span. +in: I'm %unaware% of most soft drinks. +html:

I’m unaware of most soft drinks.

+--- +name: style span +desc: This way, you can apply style settings, as described in the next section to arbitrary phrases. +in: |- + I'm %{color:red}unaware% + of most soft drinks. +html: |- +

I’m unaware
+ of most soft drinks.

+lite_mode_html: |- + I’m unaware
+ of most soft drinks. +--- +name: css class +desc: A block can be tagged with a CSS class by circling the class in parentheses and placing it just before the period which marks the block. +in: p(example1). An example +html:

An example

+--- +name: css id +desc: An element ID can be given by prefixing the ID with a pound symbol and using it in place of the class. +in: p(#big-red). Red here +html:

Red here

+--- +name: class and id combined +desc: Class and ID can be combined by placing the class first. +in: p(example1#big-red2). Red here +html:

Red here

+--- +name: css style +desc: Style settings can be provided directly by surrounding them in curly braces. +in: p{color:blue;margin:30px}. Spacey blue +html:

Spacey blue

+--- +name: language designations +desc: Language designations can be given between angel brackets. +in: p[fr]. rouge +html:

rouge

+--- +name: block attributes on phrase modifiers +desc: All block attributes can be applied to phrases as well by placing them just inside the opening modifier. +in: |- + I seriously *{color:red}blushed* + when I _(big)sprouted_ that + corn stalk from my + %[es]cabeza%. +html: |- +

I seriously blushed
+ when I sprouted that
+ corn stalk from my
+ cabeza.

+--- +name: inline attributes preceded by text are treated as literal +desc: modifiers must come first, without anything before them +in: |- + I *seriously {color:red}blushed* + when I _first (big)sprouted_ that + corn stalk from my + %grande [es]cabeza%. +html: |- +

I seriously {color:red}blushed
+ when I first (big)sprouted that
+ corn stalk from my
+ grande [es]cabeza.

+--- +name: align justified +desc: Text inside blocks can be aligned in four basic ways. +in: p<>. justified +html:

justified

+--- +name: indentation +desc: Indentation can also be specified by provide a single left paren for every 1em to the left. A single right paren for every 1em to the right. +in: p))). right ident 3em +html:

right ident 3em

+--- +name: indentation and alignment +desc: Identation may be coupled with alignment. +in: h2()>. Bingo. +html:

Bingo.

+--- +name: many modifiers combined +desc: And, furthermore, coupled with language settings and CSS styles. +in: h3()>[no]{color:red}. Bingo +html:

Bingo

+--- +name: code blocks +desc: For example, long code blocks belong between pre and code tags. Please also indent your code inside the tags to be sure that all Textile processors out there will ignore the contents. +in: | +
+  
+    a.gsub!( /
+  
+html: |- +
+  
+    a.gsub!( /</, '' )
+  
+  
+--- +name: div tags +desc: You may also choose to surround sections with div tags to separate your document into sections. Instiki uses this technique to float a sidebar to the right. +in: | +
+ + h3. Sidebar + + "Hobix":http://hobix.com/ + "Ruby":http://ruby-lang.org/ + +
+ + The main text of the page goes here and will stay to the left of the sidebar. +html: |- +
+

Sidebar

+

Hobix
+ Ruby

+
+

The main text of the page goes here and will stay to the left of the sidebar.

+--- +name: numbered list +desc: To make a numbered list, place each item in its own paragraph, preceded by ”#”. +in: |- + # A first item + # A second item + # A third +html: |- +
    +
  1. A first item
  2. +
  3. A second item
  4. +
  5. A third
  6. +
+--- +name: nested numbered lists +desc: These lists may be nested by increasing the number of pound symbols preceding child entries. +in: |- + # Fuel could be: + ## Coal + ## Gasoline + ## Electricity + # Humans need only: + ## Water + ## Protein +html: |- +
    +
  1. Fuel could be: +
      +
    1. Coal
    2. +
    3. Gasoline
    4. +
    5. Electricity
    6. +
  2. +
  3. Humans need only: +
      +
    1. Water
    2. +
    3. Protein
    4. +
  4. +
+--- +name: bulleted list +desc: Bulleted lists use an asterisk in place of the pound. +in: |- + * A first item + * A second item + * A third +html: |- +
    +
  • A first item
  • +
  • A second item
  • +
  • A third
  • +
+--- +name: nested bulleted lists +desc: These lists may be nested in like manner. +in: |- + * Fuel could be: + ** Coal + ** Gasoline + ** Electricity + * Humans need only: + ** Water + ** Protein +html: |- +
    +
  • Fuel could be: +
      +
    • Coal
    • +
    • Gasoline
    • +
    • Electricity
    • +
  • +
  • Humans need only: +
      +
    • Water
    • +
    • Protein
    • +
  • +
+--- +name: links +desc: Basic links are comprised of a phrase which is linked to a URL. Place the descriptive phrase in quotation marks. Follow it immediately by a colon and the URL. +in: I searched "Google":http://google.com. +html:

I searched Google.

+lite_mode_html: I searched Google. +--- +name: link aliases +desc: If you are using the same link several times in your document, or you’d just like to be a tad more organized, you can use a link alias. Place the URL anywhere in your document, beginning with its alias in square brackets. Then, use the alias in place of the URL, using the link format above. +in: |- + I am crazy about "Hobix":hobix + and "it's":hobix "all":hobix I ever + "link to":hobix! + + [hobix]http://hobix.com +html: |- +

I am crazy about Hobix
+ and it’s all I ever
+ link to!

+--- +name: image +desc: You can embed an image in your Textile document by surrounding its URL with exclamation marks. +in: "!http://hobix.com/sample.jpg!" +html:

+lite_mode_html: +--- +name: image title +desc: A title for the image can also be provided in parens, just before the closing exclamation. +in: "!openwindow1.gif(Bunny.)!" +html:

Bunny.

+--- +name: image links +desc: Links can be attached to images with a colon. +in: "!openwindow1.gif!:http://hobix.com/" +html:

+--- +name: image alignments +desc: Alignments can be applied as well to images. +in: |- + !>obake.gif! + + And others sat all round the small + machine and paid it to sing to them. +html: |- +

+

And others sat all round the small
+ machine and paid it to sing to them.

+--- +name: acronym definitions +desc: Definitions for acronyms can be provided by following an acronym with its definition in parens. +in: We use CSS(Cascading Style Sheets). +html:

We use CSS.

+lite_mode_html: We use CSS. +no_span_caps_html:

We use CSS.

+--- +name: tables +desc: Simple tables can be built by separating fields with pipe characters +in: |- + | name | age | sex | + | joan | 24 | f | + | archie | 29 | m | + | bella | 45 | f | +html: |- + + + + + + + + + + + + + + + + + + + + + +
name age sex
joan 24 f
archie 29 m
bella 45 f
+--- +name: table headers +desc: Specify header cells by marking them with an underscore and period. +in: |- + |_. name |_. age |_. sex | + | joan | 24 | f | + | archie | 29 | m | + | bella | 45 | f | +html: |- + + + + + + + + + + + + + + + + + + + + + +
name age sex
joan 24 f
archie 29 m
bella 45 f
+--- +name: table cell attributes +desc: The period used above marks the end of a cell’s attributes. Other attributes can be applied as well. +in: |- + |_. attribute list | + |<. align left | + |>. align right| + |=. center | + |<>. justify | + |^. valign top | + |~. bottom | +html: |- + + + + + + + + + + + + + + + + + + + + + + +
attribute list
align left
align right
center
justify
valign top
bottom
+--- +name: table colspan +desc: You can also specify colspans with a backslash, followed by the cell width. +in: |- + |\2. spans two cols | + | col 1 | col 2 | +html: |- + + + + + + + + +
spans two cols
col 1 col 2
+--- +name: table rowspan +desc: Rowspan is specified by a forward slash, followed by the row height. +in: |- + |/3. spans 3 rows | a | + | b | + | c | +html: |- + + + + + + + + + + + +
spans 3 rows a
b
c
+--- +name: block attributes applied to table cells +desc: All block attributes can be applied to table cells as well. +in: "|{background:#ddd}. Grey cell|" +html: |- + + + + +
Grey cell
+--- +name: black attributes applied to a table +desc: Table-wide attributes can be applied before the first row of the table. On its own line, followed by a period. +in: |- + table{border:1px solid black}. + |This|is|a|row| + |This|is|a|row| +html: |- + + + + + + + + + + + + + +
Thisisarow
Thisisarow
+--- +name: black attributes applied to a table row +desc: Attributes can be applied to a single row by supplying the attribute before the row starts, using a table modifier and following it by a period. +in: |- + |This|is|a|row| + {background:#ddd}. |This|is|grey|row| +html: |- + + + + + + + + + + + + + +
Thisisarow
Thisisgreyrow
+--- +name: extended block followed by pre block +in: |- + div.. Just a test. + + Second div. + + pre. A pre block ends it. +html: |- +
Just a test.
+
Second div.
+
A pre block ends it.
+--- +name: extended block followed by blockquote +in: |- + div.. Just a test. + + Second div. + + bq. A blockquote ends it. +html: |- +
Just a test.
+
Second div.
+
+

A blockquote ends it.

+
+--- +name: extended block followed by block code +in: |- + div.. Just a test. + + Second div. + + bc. A blockcode ends it. +html: |- +
Just a test.
+
Second div.
+
A blockcode ends it.
+--- +name: extended block followed by notextile block +in: |- + div.. Just a test. + + Second div. + + notextile. A notextile block ends it. +html: |- +
Just a test.
+
Second div.
+ A notextile block ends it. +valid_html: false +--- +name: simple parentheses +in: |- + before (in parens) after +html: |- +

before (in parens) after

+--- +name: parentheses in underscores +in: |- + before _(in parens)_ after +html: |- +

before (in parens) after

+--- +name: parentheses in asterisks +in: |- + before *(in parens)* after +html: |- +

before (in parens) after

+--- +name: parentheses in underscores in quotes +in: |- + "before _(in parens)_ after" +html: |- +

“before (in parens) after”

+--- +name: underscores in parentheses +in: |- + one _two three_ (four _five six_) seven +html: |- +

one two three (four five six) seven

+--- +name: underscores in parentheses in quotes +in: |- + "one _two three_ (four _five six_) seven" +html: |- +

“one two three (four five six) seven”

+--- +name: underscores in parentheses 2 +in: |- + one (two _three four_) five +html: |- +

one (two three four) five

+--- +name: underscores in parentheses in quotes 2 +in: |- + "one (two _three four_) five" +html: |- +

“one (two three four) five”

\ No newline at end of file diff --git a/vendor/gems/RedCloth-4.0.3/test/code.yml b/vendor/gems/RedCloth-4.0.3/test/code.yml new file mode 100644 index 0000000..f781c2f --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/test/code.yml @@ -0,0 +1,203 @@ +--- +name: inline code +in: 'This is an empty dictionary: @{}@' +html: '

This is an empty dictionary: {}

' +--- +name: inline code escapement +in: 'Please type @cat "file.txt" > otherfile.txt@ at the prompt.' +html: '

Please type cat "file.txt" > otherfile.txt at the prompt.

' +--- +name: inline code escapement with digits +in: |- + Regex-based string substitution with Ruby's gsub!: @"123<789".gsub!(/ "123789"@ +html: |- +

Regex-based string substitution with Ruby’s gsub!: "123<789".gsub!(/</, "") => "123789"

+--- +name: inlne code escapement describing textile paragraph styling +in: 'This paragraph is aligned left but if you add this: @p>.@ to the beginning it will be aligned right.' +html: '

This paragraph is aligned left but if you add this: p>. to the beginning it will be aligned right.

' +--- +name: escapes code snippet containing html tag +in: 'At the top of each page, please put @

Title

@ in the HTML.' +html: '

At the top of each page, please put <h2>Title</h2> in the HTML.

' +--- +name: escaping in blockcode +in: 'bc. This is within a block of code, so < and > should be entities. You can talk about a

tag if you wish and it will be properly escaped.' +html: '

This is within a block of code, so < and > should be entities.  You can talk about a <p class="foo"> tag if you wish and it will be properly escaped.
' +--- +name: escaping in pre +in: '
This is within a block of code, so < and > should be entities.  You can talk about a 

tag in pre tags too.

' +html: '
This is within a block of code, so < and > should be entities.  You can talk about a <p class="foo"> tag in pre tags too.
' +--- +name: escaping in normal text +in: |- + This is a regular paragraph. AT&T. £38 > $38. +html: |- +

This is a regular paragraph. AT&T. £38 > $38.

+latex: "This is a regular paragraph. AT\\&T. \\pounds{}38 \\textgreater{} \\$38.\n\n" +--- +name: preservation of existing entities +in: "Math fact: 3 < 5 & 5 > 3 but £6 > $6. Oh, and 2 ÷ 4 is ½." +html: "

Math fact: 3 < 5 & 5 > 3 but £6 > $6. Oh, and 2 ÷ 4 is ½.

" +latex: "Math fact: 3 \\textless{} 5 \\& 5 \\textgreater{} 3 but \\pounds{}6 \\textgreater{} \\$6. Oh, and 2 \\textdiv{} 4 is \\sfrac{1}{2}.\n\n" +--- +name: escaping of existing entities in blockcode +in: "bc. Math fact: 3 < 5 & 5 > 3 but £5 > $5. +" +html: "
Math fact: 3 &lt; 5 &amp; 5 &gt; 3 but &pound;5 &#62; $5.
" +latex: "\\begin{verbatim}\nMath fact: 3 < 5 & 5 > 3 but £5 > $5.\\end{verbatim}\n" +--- +name: no formatting within pre +in: |- +
+  
+  # *test*
+  __not italics__
+  no hard breaks
+  
+  
+html: |- +
+  
+  # *test*
+  __not italics__
+  no hard breaks
+  
+  
+--- +name: no formatting within blockcode +in: |- + bc. __not italics__ +html: |- +
__not italics__
+--- +name: double-equals as inline notextile +in: |- + p. Regular paragraph + + ==Escaped portion -- will not be formatted by Textile at all== + + p. Back to normal. +html: |- +

Regular paragraph

+

Escaped portion -- will not be formatted by Textile at all

+

Back to normal.

+--- +name: notextile tags +in: |- + + # *test* + +html: |- + # *test* +valid_html: false +--- +name: unfinished notextile tag +in: |- + + # *test* +html: |- + # *test* +valid_html: false +--- +name: unfinished script tag +in: |- + +filtered_html:

Just a little harmless xss <script src=http://ha.ckers.org/xss.js></script>

+--- +name: escapes partial inline script tag +desc: The end tag is malformed, but it must be escaped since a browser would recognize it +in: Just a little harmless xss Just a little harmless xss <script src=http://ha.ckers.org/xss.js></script

+valid_html: false +--- +name: escapes partial scanner-level script tag +desc: The end tag is malformed, but it must be escaped since a browser would recognize it anyway. +in: +filtered_html: '<hr />' +valid_html: false +--- +name: processes text beginning with space +in: ' This should be escaped: ' +filtered_html: 'This should be <b>escaped</b>: <script type="text/javascript">alert("Hai. I`m in ya PC. Makin ya XSS viruzz! KThxBye");</script>' +--- +name: processes script tags beginning with space +in: ' ' +filtered_html: '<script type="text/javascript">alert("Hai. I`m in ya PC. Makin ya XSS viruzz! KThxBye");</script>' +--- +name: processes text in notextile tags +in: |- + + This should be escaped: + +filtered_html: |- + This should be <b>escaped</b>: <script type="text/javascript">alert("Hai. I`m in ya PC. Makin ya XSS viruzz! KThxBye");</script> +--- +name: processes text in inline notextile tags +in: |- + This should be escaped: +filtered_html: |- +

This should be <b>escaped</b>: <script type="text/javascript">alert("Hai. I`m in ya PC. Makin ya XSS viruzz! KThxBye");</script>

+--- +name: escapes script tags +in: |- + +filtered_html: |- + <script type="text/javascript"> + alert("Hai. I`m in ya PC. Makin ya XSS viruzz! KThxBye"); + </script> +--- +name: escapes HTML entities within script tags +in: |- + +filtered_html: |- + <script type="text/javascript"> + <!-- + document.write("Hello World!") + //--> + </script> +--- +name: escapes inline html tags +in: |- + p. Letting people inject their own HTML can be dangerous!. +filtered_html: |- +

Letting people inject their own HTML can be <em>dangerous</em>!.

+--- +name: escapes html in comments +in: |- + p. You can't have people injecting HTML into . +filtered_html: |- +

You can’t have people injecting HTML into <!-- <b>comments</b>! -->.

+--- +name: escapes html in inline code tags +in: |- + p. I have some awesome code here. +filtered_html: |- +

I have some <em>awesome</em> code here.

+--- +name: escapes html notextile block +in: |- + notextile. This is a notextile block. +filtered_html: |- + This is a <em>notextile</em> block. +--- +name: escapes html in pre tags +in: |- +
+  This should be escaped.
+  
+filtered_html: |- +
+  This should be <em>escaped</em>.
+  
+--- +name: escapes html +in: |- +
This should be escaped
+filtered_html: |- + <div>This should be escaped</div> +--- +name: escapes html in html +in: |- +
This should be bold
+filtered_html: |- + <div>This should be <b>bold</b></div> +--- +in: Here's a bad image +filtered_html:

Here’s a bad image <img src="JaVaScRiPt:alert('XSS');">

+--- +in: Just some random > and < characters, but also a
tag. +filtered_html:

Just some random > and < characters, but also a <br/> tag.

+--- +in: |- + Quotes outside "pre" tags are escaped. + + Tags are completely escaped outside pre tags. + +
+  
+    # only < and > are escaped inside pre tags.  "Quotes" remain.
+
+    
+ a = 1 +
+ + Bad code here. + + +
+
+ +filtered_html: |- +

Quotes outside “pre” tags are escaped.

+

<a href="test">Tags are completely escaped outside pre tags.</a>

+
+  
+    # only < and > are escaped inside pre tags.  "Quotes" remain.
+
+    <div>
+      a = 1
+    </div>
+
+    Bad code here.
+
+    <script language="JavaScript">
+      window.open( "abfiltered_html:blank" );
+    </script>
+  
+  
+--- +in: /me <3 beer +filtered_html:

/me <3 beer

diff --git a/vendor/gems/RedCloth-4.0.3/test/filter_pba.yml b/vendor/gems/RedCloth-4.0.3/test/filter_pba.yml new file mode 100644 index 0000000..c3b8106 --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/test/filter_pba.yml @@ -0,0 +1,20 @@ +--- +name: filter styles +in: "p{color:red}. Test" +style_filtered_html: "

Test

" +--- +name: filter classes +in: "p(myclass). Test" +class_filtered_html: "

Test

" +--- +name: filter ids +in: "p(#myid). Test" +id_filtered_html: "

Test

" +--- +name: correct application of double quote entity when using styles +in: 'p{background: #white url("../chunky_bacon.jpg")}. The quick brown "cartoon" fox jumps over the lazy dog' +html: '

The quick brown “cartoon” fox jumps over the lazy dog

' +--- +name: correct application of single quote entity when using styles +in: "p{background: #white url('../chunky_bacon.jpg')}. The quick brown 'cartoon' fox jumps over the lazy dog" +html: '

The quick brown ‘cartoon’ fox jumps over the lazy dog

' diff --git a/vendor/gems/RedCloth-4.0.3/test/helper.rb b/vendor/gems/RedCloth-4.0.3/test/helper.rb new file mode 100644 index 0000000..0d2ab74 --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/test/helper.rb @@ -0,0 +1,108 @@ +require 'test/unit' +$:.unshift File.dirname(__FILE__) + "/../lib" +require 'redcloth' +require 'yaml' + +module Test + module Unit + + class TestCase + def self.generate_formatter_tests(formatter, &block) + define_method("format_as_#{formatter}", &block) + + fixtures.each do |name, doc| + if doc[formatter] + define_method("test_#{formatter}_#{name}") do + output = method("format_as_#{formatter}").call(doc) + assert_equal doc[formatter], output + end + else + define_method("test_#{formatter}_#{name}_raises_nothing") do + assert_nothing_raised(Exception) { method("format_as_#{formatter}").call(doc) } + end + end + end + end + + def self.fixtures + return @fixtures if @fixtures + @fixtures = {} + Dir[File.join(File.dirname(__FILE__), "*.yml")].each do |testfile| + testgroup = File.basename(testfile, '.yml') + num = 0 + YAML::load_documents(File.open(testfile)) do |doc| + name = doc['name'] ? doc['name'].downcase.gsub(/[- ]/, '_') : num + @fixtures["#{testgroup}_#{name}"] = doc + num += 1 + end + end + @fixtures + end + + end + + module Assertions + # Browsers ignore tabs and newlines (generally), so don't quibble + def assert_html_equal(expected, actual, message=nil) + assert_equal(expected.gsub(/[\n\t]+/, ''), actual.gsub(/[\n\t]+/, ''), message) + end + end + end +end + +# Colorize differences in assert_equal failure messages. +begin + require 'rubygems' + require 'diff/lcs' + require 'test/unit' + + DIFF_COLOR = "\e[7m" unless defined?(DIFF_COLOR) + DEFAULT_COLOR = "\e[0m" unless defined?(DEFAULT_COLOR) + + def highlight_differences(a, b) + sdiff = Diff::LCS.sdiff(a, b, Diff::LCS::ContextDiffCallbacks) + return highlight_string(sdiff, :old, a), highlight_string(sdiff, :new, b) + end + + def highlight_string(sdiff, pos, s) + s = s.dup + offset = 0 + sdiff.each do |hunk| + if hunk.first.send("#{pos}_element") + s.insert(hunk.first.send("#{pos}_position") + offset, DIFF_COLOR) + offset += DIFF_COLOR.length + end + if hunk.last.send("#{pos}_element") + s.insert(hunk.last.send("#{pos}_position") + 1 + offset, DEFAULT_COLOR) + offset += DEFAULT_COLOR.length + end + end + s = DEFAULT_COLOR + s + DEFAULT_COLOR + end + + module Test::Unit::Assertions + # Show differences in expected and actual + def assert_equal(expected, actual, message=nil) + full_message = build_message(message, < is strong*' +html: '

this is strong

' +--- +in: '*this test is strong*' +html: '

this test is strong

' +--- +in: 'A simple ' +html: '

A simple

' +--- +in: 'A simple ' +html: '

A simple

' +--- +name: no breaks between HTML elements +in: |- +
    +
  • You can put HTML code right in Textile.
  • +
  • It will not insert a break between elements
  • +
  • or wrap it all in a p tag.
  • +
  • It should insert a hard break + if you break.
  • +
+html: |- +
    +
  • You can put HTML code right in Textile.
  • +
  • It will not insert a break between elements
  • +
  • or wrap it all in a p tag.
  • +
  • It should insert a hard break
    + if you break.
  • +
+--- +name: mixing of textile and XHTML +in: |- + test + + Regular *paragraph*. + +
+ This is one paragraph. + + This is another. + + !an/image.jpg! + + * A list + * in a div. + +
+ + Another paragraph. +html: |- +

test

+

Regular paragraph.

+
+

This is one paragraph.

+

This is another.

+

+
    +
  • A list
  • +
  • in a div.
  • +
+
+

Another paragraph.

+--- +name: mixing of textile and XHTML +in: |- + test + + Regular *paragraph*. +html: |- +

test

+

Regular paragraph.

+--- +name: wraps inline HTML in paragraphs +in: 'asd blabla "google":http://google.com' +html: '

asd blabla google

' +--- +name: self closing XHTML with following text not recognized +comment: it will not recognize the self-closing block element +in: '
this has been a horizontal rule' +html: '


this has been a horizontal rule

' +valid_html: false +--- +name: self closing HTML with following text not recognized +comment: it will not recognize the self-closing block element +in: '
that was a horizontal rule too' +html: '
that was a horizontal rule too' +valid_html: false +--- +name: preserves block html +in: |- +
123 Anystreet
+ +

Explicit paragraph

+html: |- +
123 Anystreet
+

Explicit paragraph

+valid_html: false +--- +name: preserves empty block standalone elements +in: "
" +html: "
" +valid_html: false +--- +name: unfinished standalone HTML +in: |- +
+ This is some div text. + + More div text. +html: |- +
+

This is some div text.

+

More div text.

+valid_html: false +--- +name: unfinished HTML block +in: |- +
This is some div text. + + More div text. +html: |- +
This is some div text.
+
+ More div text. +valid_html: false +--- +name: complex example from real life +in: |- +
+
+ +
+ h1. Contact + + Please contact us if you have questions or need help making arrangements. + +
+
+ +
+ h2. Tom + + (540) 555-1212 + + h3. Jerry + + (540) 555-1234 + +
+html: |- +
+
+
+

Contact

+

Please contact us if you have questions or need help making arrangements.

+
+
+
+

Tom

+

(540) 555-1212

+

Jerry

+

(540) 555-1234

+
+valid_html: false +--- +name: embedded javascript +in: |- + +html: |- + +--- +name: inline embedded javascript +in: |- + Please email me at . +html: |- +

Please email me at .

+--- +name: HTML end tag can end paragraph +in: |- +
+ This is a paragraph. +
+html: |- +
+

This is a paragraph.

+
+--- +name: HTML end tag can end blockquote +in: |- +
+ bq. This is a blockquote. +
+html: |- +
+
+

This is a blockquote.

+
+
+--- +name: before table does not affect table +in: |- +
+ + h2. heading + + |a|b|c| + |d|e|f| +html: |- +
+

heading

+ + + + + + + + + + + +
abc
def
+--- +name: tilde in innerHTML is not altered +in: 'http://foo.com/bar?something=1~2~3' +html: '

http://foo.com/bar?something=1~2~3

' \ No newline at end of file diff --git a/vendor/gems/RedCloth-4.0.3/test/images.yml b/vendor/gems/RedCloth-4.0.3/test/images.yml new file mode 100644 index 0000000..54240cc --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/test/images.yml @@ -0,0 +1,214 @@ +--- +in: This is an !image.jpg! +html:

This is an

+--- +in: This is an !image.jpg(with alt text)! +html:

This is an with alt text

+--- +in: This is an !http://example.com/i/image.jpg! +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg#a1! +html:

This is an

+--- +in: This is an !image.jpg!. +html:

This is an .

+--- +in: This is an !image.jpg(with alt text)!. +html:

This is an with alt text.

+--- +in: This is an !http://example.com/i/image.jpg!. +html:

This is an .

+--- +in: This is an !http://example.com/i/image.jpg#a1!. +html:

This is an .

+--- +in: This is not an image!!! +html:

This is not an image!!!

+--- +in: This is not an! image! +html:

This is not an! image!

+--- +in: This is an !http://example.com/i/image.jpg!:#1 +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:#a +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:#a1 +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:#a10 +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:index.html +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:index.html#1 +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:index.html#a1 +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:index.html#a10 +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:index.html?foo=bar +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:index.html?foo=bar#1 +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:index.html?foo=bar#a +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:index.html?foo=bar#a1 +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:index.html?foo=bar#a10 +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:http://example.com/ +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:http://example.com/#1 +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:http://example.com/#a +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:http://example.com/#a1 +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:http://example.com/#a10 +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:http://example.com/index.html +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:http://example.com/index.html#1 +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:http://example.com/index.html#a +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:http://example.com/index.html#a1 +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:http://example.com/index.html#a10 +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:http://example.com/index.html?foo=bar +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:http://example.com/index.html?foo=bar#1 +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:http://example.com/index.html?foo=bar#a +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:http://example.com/index.html?foo=bar#a1 +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:http://example.com/index.html?foo=bar#a10 +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:http://example.com/index.html?foo=bar&a=b +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:http://example.com/index.html?foo=bar&a=b#1 +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:http://example.com/index.html?foo=bar&a=b#a +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:http://example.com/index.html?foo=bar&a=b#a1 +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:http://example.com/index.html?foo=bar&a=b#a10 +html:

This is an

+--- +in: This is an !http://example.com/i/image.jpg!:http://example.com/index.html?foo=bar&a=b. +html:

This is an .

+--- +in: This is an !http://example.com/i/image.jpg!:http://example.com/index.html?foo=bar&a=b#1. +html:

This is an .

+--- +in: This is an !http://example.com/i/image.jpg!:http://example.com/index.html?foo=bar&a=b#a. +html:

This is an .

+--- +in: This is an !http://example.com/i/image.jpg!:http://example.com/index.html?foo=bar&a=b#a1. +html:

This is an .

+--- +in: This is an !http://example.com/i/image.jpg!:http://example.com/index.html?foo=bar&a=b#a10. +html:

This is an .

+--- +in: This is an !http://example.com/i/image.jpg!:http://example.com/index.html?foo=bar&a=b, but this is not. +html:

This is an , but this is not.

+--- +in: This is an !http://example.com/i/image.jpg!:http://example.com/index.html?foo=bar&a=b#1, but this is not. +html:

This is an , but this is not.

+--- +in: This is an !http://example.com/i/image.jpg!:http://example.com/index.html?foo=bar&a=b#a, but this is not. +html:

This is an , but this is not.

+--- +in: This is an !http://example.com/i/image.jpg!:http://example.com/index.html?foo=bar&a=b#a1, but this is not. +html:

This is an , but this is not.

+--- +in: (This is an !http://example.com/i/image.jpg!:http://example.com/index.html?foo=bar&a=b#a10) This is not. +html:

(This is an ) This is not.

+--- +in: (This is an !http://example.com/i/image.jpg!:http://example.com/index.html?foo=bar&a=b) This is not. +html:

(This is an ) This is not.

+--- +in: (This is an !http://example.com/i/image.jpg!:http://example.com/index.html?foo=bar&a=b#1) This is not. +html:

(This is an ) This is not.

+--- +in: (This is an !http://example.com/i/image.jpg!:http://example.com/index.html?foo=bar&a=b#a) This is not. +html:

(This is an ) This is not.

+--- +in: (This is an !http://example.com/i/image.jpg!:http://example.com/index.html?foo=bar&a=b#a1) This is not. +html:

(This is an ) This is not.

+--- +in: (This is an !http://example.com/i/image.jpg!:http://example.com/index.html?foo=bar&a=b#a10) This is not. +html:

(This is an ) This is not.

+--- +name: image with relative src with dot +in: "!../../image.jpg!" +html:

+--- +name: image with class +in: "!(myclass)image.jpg!" +html:

+--- +name: image with class and dotspace +in: "!(myclass). image.jpg!" +html:

+--- +name: image with class and relative src with dots +in: "!(myclass)../../image.jpg!" +html:

+--- +name: image with class and dotspace and relative src with dots +in: "!(myclass). ../../image.jpg!" +html:

+--- +name: image with style +in: "!{color:red}image.jpg!" +html:

+--- +name: image with style and dotspace +in: "!{color:red}. image.jpg!" +html:

+--- +name: image attributes has ampersand html entity in alt and title +in: "!/pictures/cat_and_fox.jpg(Trady Blix & The cartoon fox)!" +html: '

Trady Blix & The cartoon fox

' +--- +name: image attributes has double quote html entity in alt and title +in: '!/pictures/bacon.jpg(The fox said: "Have some chunky bacon")!' +html: '

The fox said: "Have some chunky bacon"

' +--- +name: image attributes has single quote html entity in alt and title +in: "!/pictures/bacon.jpg(The fox said: 'Have some chunky bacon')!" +html: '

The fox said: 'Have some chunky bacon'

' diff --git a/vendor/gems/RedCloth-4.0.3/test/instiki.yml b/vendor/gems/RedCloth-4.0.3/test/instiki.yml new file mode 100644 index 0000000..e27a7e8 --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/test/instiki.yml @@ -0,0 +1,38 @@ +--- # Bugs filed at http://www.instiki.org/show/BugReports +in: |- + _Hi, Joe Bob?, this should all be in italic!_ +html: |- +

Hi, Joe Bob?, this should all be in italic!

+--- +in: '*this span is strong*' +html: '

this span is strong

' +--- +in: '*this Camel Thing? is strong*' +html: '

this Camel Thing? is strong

' +--- +in: '_this span is italic_' +html: '

this span is italic

' +--- +in: '%{color:red}nested span because of Camel Word?%' +html: '

nested span because of Camel Word?

' +--- +in: |- + h2. Version History + + * "Version + 0.0":http://www.threewordslong.com/render-0-8-9b.patch - Early version using MD5 hashes. + * "Version + 0.1":http://www.threewordslong.com/chunk-0-1.patch.gz - First cut of new system. Much cleaner. + * "Version 0.2":http://www.threewordslong.com/chunk-0-2.patch.gz - Fixed problem with "authors" page and some tests. +html: |- +

Version History

+
    +
  • Version
    + 0.0
    – Early version using MD5 hashes.
  • +
  • Version
    + 0.1
    – First cut of new system. Much cleaner.
  • +
  • Version 0.2 – Fixed problem with “authors” page and some tests.
  • +
+--- +in: "--richSeymour --whyTheLuckyStiff" +html: "

—richSeymour —whyTheLuckyStiff

" diff --git a/vendor/gems/RedCloth-4.0.3/test/links.yml b/vendor/gems/RedCloth-4.0.3/test/links.yml new file mode 100644 index 0000000..3a88439 --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/test/links.yml @@ -0,0 +1,231 @@ +--- +in: '"link text":#1' +html:

link text

+--- +in: '"link text":#a' +html:

link text

+--- +in: '"link text":#a1' +html:

link text

+--- +in: '"link text":#a10' +html:

link text

+--- +in: '"link text":index.html' +html:

link text

+--- +in: '"link text":index.html#1' +html:

link text

+--- +in: '"link text":index.html#a' +html:

link text

+--- +in: '"link text":index.html#a1' +html:

link text

+--- +in: '"link text":index.html#a10' +html:

link text

+--- +in: '"link text":http://example.com/' +html:

link text

+--- +in: '"link text":http://example.com/#1' +html:

link text

+--- +in: '"link text":http://example.com/#a' +html:

link text

+--- +in: '"link text":http://example.com/#a1' +html:

link text

+--- +in: '"link text":http://example.com/#a10' +html:

link text

+--- +in: '"link text":http://example.com/index.html' +html:

link text

+--- +in: '"link text":http://example.com/index.html#a' +html:

link text

+--- +in: '"link text":http://example.com/index.html#1' +html:

link text

+--- +in: '"link text":http://example.com/index.html#a1' +html:

link text

+--- +in: '"link text":http://example.com/index.html#a10' +html:

link text

+--- +in: '"link text":http://example.com/?foo=bar' +html:

link text

+--- +in: '"link text":http://example.com/?foo=bar#a' +html:

link text

+--- +in: '"link & text":http://example.com/?foo=bar#a' +html:

link & text

+--- +in: '"link text":http://example.com/?foo=bar#1' +html:

link text

+--- +in: '"link text":http://example.com/?foo=bar#a1' +html:

link text

+--- +in: '"link text":http://example.com/?foo=bar#a10' +html:

link text

+--- +in: '"link text":http://example.com/?foo=bar&a=b' +html:

link text

+--- +in: '"link text":http://example.com/?foo=bar&a=b#1' +html:

link text

+--- +in: '"link text":http://example.com/?foo=bar&a=b#a' +html:

link text

+--- +in: '"link text":http://example.com/?foo=bar&a=b#a1' +html:

link text

+--- +in: '"link text":http://example.com/?foo=bar&a=b#a10' +html:

link text

+--- +in: 'This is a "link":http://example.com/' +html:

This is a link

+--- +in: 'This is a "link":http://example.com/.' +html:

This is a link.

+--- +in: 'This is a "link":http://example.com/index.html.' +html:

This is a link.

+--- +in: 'This is a "link":http://example.com/index.html#a.' +html:

This is a link.

+--- +in: 'This is a "link":http://example.com/index.html#1.' +html:

This is a link.

+--- +in: 'This is a "link":http://example.com/index.html#a1.' +html:

This is a link.

+--- +in: 'This is a "link":http://example.com/index.html#a10.' +html:

This is a link.

+--- +in: 'This is a "link":http://example.com/?foo=bar.' +html:

This is a link.

+--- +in: 'This is a "link":http://example.com/?foo=bar#1.' +html:

This is a link.

+--- +in: 'This is a "link":http://example.com/?foo=bar#a.' +html:

This is a link.

+--- +in: 'This is a "link":http://example.com/?foo=bar#a1.' +html:

This is a link.

+--- +in: 'This is a "link":http://example.com/?foo=bar#a10.' +html:

This is a link.

+--- +in: 'This is a "link":http://example.com/?foo=bar#a10, but this is not.' +html:

This is a link, but this is not.

+--- +in: '(This is a "link":http://example.com/?foo=bar#a10) but this is not.' +html:

(This is a link) but this is not.

+--- +in: '"link text(link title)":http://example.com/' +html:

link text

+# --- +# in: '"link text(link title) ":http://example.com/' +# html:

“link text(link title) “:http://example.com/

+# comments: this is a real test and should pass +--- +name: link with title attribute +in: '"(link) text(link title)":http://example.com/' +html:

text

+comments: link text can not contain parentheses +--- +name: link with space between link text and title attribute +in: '"text (link title)":http://example.com/' +html:

text

+--- +in: '"Dive Into XML":http://www.xml.com/pub/au/164' +html:

Dive Into XML

+--- +in: '"Lab Exercises":../lab/exercises/exercises.html.' +html:

Lab Exercises.

+--- +in: 'Go to "discuss":http://www.dreammoods.com/cgibin/cutecast/cutecast.pl?forum=1&thread=26627 to discuss.' +html:

Go to discuss to discuss.

+--- +in: '* "rubylang":http://www.ruby-lang.org/en/' +html: "" +--- +in: 'The ION coding style document found at "IONCodingStyleGuide.doc":http://perforce:8081/@md=d&cd=//&c=82E@//depot/systest/system/main/pub/doc/IONCodingStyleGuide.doc?ac=22 codifies a couple of rules to ensure reasonably consistent code and documentation of libraries in ION. Test text' +html:

The ION coding style document found at IONCodingStyleGuide.doc codifies a couple of rules to ensure reasonably consistent code and documentation of libraries in ION. Test text

+--- +in: '"testing":' +html: "

“testing”:

" +--- +name: trailing space not absorbed by link +in: '"Link":/foo.html me' +html: "

Link me

" +--- +name: trailing comma stays outside link +in: '"Link":/foo.html, me' +html: "

Link, me

" +--- +name: trailing exclamation stays outside link +in: '"Link":/foo.html! me' +html: "

Link! me

" +--- +name: trailing semicolon stays outside link +in: '"Link":/foo.html; me' +html: "

Link; me

" +--- +name: trailing period stays outside link +in: '"Link":/foo.html.' +html: "

Link.

" +--- +name: parenthetical statement as a link +in: '"(just in case you were wondering)":http://slashdot.org/' +html: '

(just in case you were wondering)

' +--- +name: link containing parentheses +in: '"It is (very) fortunate that this works":http://slashdot.org/' +html: '

It is (very) fortunate that this works

' +--- +name: link containing quotes +in: '"He said it is "very unlikely" this works":http://slashdot.org/' +html: '

He said it is “very unlikely” this works

' +--- +name: link containing multiple quotes +in: '"He said it is "very unlikely" the "economic stimulus" works":http://slashdot.org/' +html: '

He said it is “very unlikely” the “economic stimulus” works

' +--- +name: linked quoted phrase +in: '""Open the pod bay doors please, HAL."":http://www.youtube.com/watch?v=npN9l2Bd06s' +html: '

“Open the pod bay doors please, HAL.”

' +--- +name: links containing underscores +in: 'This is a link to a "Wikipedia article about Barack":http://en.wikipedia.org/wiki/Barack_Obama' +html: '

This is a link to a Wikipedia article about Barack

' +--- +name: links containing parentheses +in: 'This is a link to a ["Wikipedia article about Textile":http://en.wikipedia.org/wiki/Textile_(markup_language)]' +html: '

This is a link to a Wikipedia article about Textile

' +--- +name: links contained in parentheses +in: 'This is a regular link (but in parentheses: "Google":http://www.google.com)' +html: '

This is a regular link (but in parentheses: Google)

' +--- +name: quotes and follow link +in: 'Some "text" followed by a "link":http://redcloth.org.' +html: '

Some “text” followed by a link.

' +lite_mode_html: 'Some “text” followed by a link.' +--- +name: link alias containing dashes +in: |- + "link":google-rocks + + [google-rocks]http://google.com +html: |- +

link

\ No newline at end of file diff --git a/vendor/gems/RedCloth-4.0.3/test/lists.yml b/vendor/gems/RedCloth-4.0.3/test/lists.yml new file mode 100644 index 0000000..695783c --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/test/lists.yml @@ -0,0 +1,283 @@ +--- +name: code in bullet list +in: "* command run: @time ruby run-tests.rb > toto@" +html: "
    \n\t
  • command run: time ruby run-tests.rb > toto
  • \n
" +--- # Bret Pettichord, Thanks. +name: hard break in list +in: |- + * first line + * second + line + * third line +html: |- +
    +
  • first line
  • +
  • second
    + line
  • +
  • third line
  • +
+--- +name: mixed nesting +in: |- + * bullet + *# number + *# number + *#* bullet + *# number + *# number with + a break + * bullet + ** okay +html: |- +
    +
  • bullet +
      +
    1. number
    2. +
    3. number +
        +
      • bullet
      • +
    4. +
    5. number
    6. +
    7. number with
      + a break
    8. +
  • +
  • bullet +
      +
    • okay
    • +
  • +
+--- +name: list continuation +in: |- + # one + # two + # three + + # one + # two + # three + + #_ four + # five + # six +html: |- +
    +
  1. one
  2. +
  3. two
  4. +
  5. three
  6. +
+
    +
  1. one
  2. +
  3. two
  4. +
  5. three
  6. +
+
    +
  1. four
  2. +
  3. five
  4. +
  5. six
  6. +
+valid_html: false +comment: there's not a good, valid alternative to the start attribute +--- +name: continue after break +in: |- + # one + # two + # three + + test + + #_ four + # five + # six + + test + + #_ seven + # eight + # nine +html: |- +
    +
  1. one
  2. +
  3. two
  4. +
  5. three
  6. +
+

test

+
    +
  1. four
  2. +
  3. five
  4. +
  5. six
  6. +
+

test

+
    +
  1. seven
  2. +
  3. eight
  4. +
  5. nine
  6. +
+valid_html: false +comment: there's not a good, valid alternative to the start attribute +--- +name: continue list when prior list contained nested list +in: |- + # one + # two + # three + + #_ four + # five + ## sub-note + ## another sub-note + # six + + #_ seven + # eight + # nine +html: |- +
    +
  1. one
  2. +
  3. two
  4. +
  5. three
  6. +
+
    +
  1. four
  2. +
  3. five +
      +
    1. sub-note
    2. +
    3. another sub-note
    4. +
  4. +
  5. six
  6. +
+
    +
  1. seven
  2. +
  3. eight
  4. +
  5. nine
  6. +
+valid_html: false +comment: there's not a good, valid alternative to the start attribute +--- +name: list start number +in: |- + #293 two ninety three + # two ninety four + # two ninety five + + #9 nine + # ten + # eleven +html: |- +
    +
  1. two ninety three
  2. +
  3. two ninety four
  4. +
  5. two ninety five
  6. +
+
    +
  1. nine
  2. +
  3. ten
  4. +
  5. eleven
  6. +
+valid_html: false +comment: there's not a good, valid alternative to the start attribute +--- +name: continue list after started list +in: |- + #9 nine + # ten + # eleven + + #_ twelve + # thirteen + # fourteen +html: |- +
    +
  1. nine
  2. +
  3. ten
  4. +
  5. eleven
  6. +
+
    +
  1. twelve
  2. +
  3. thirteen
  4. +
  5. fourteen
  6. +
+valid_html: false +comment: there's not a good, valid alternative to the start attribute +--- +name: end notes +in: |- + h2. End Notes + + # End Notes should be a numbered list + # Like this + # They must have anchors in the text + + h2. See Also + + * See Also notes should be bullets + * Like this + +html: |- +

End Notes

+
    +
  1. End Notes should be a numbered list
  2. +
  3. Like this
  4. +
  5. They must have anchors in the text
  6. +
+

See Also

+
    +
  • See Also notes should be bullets
  • +
  • Like this
  • +
+--- +name: ordered list immediately following paragraph +desc: Normally a paragraph and a list that follows it should be separated by two newlines. Textile-2.0.0 recognizes the list even when separated by only one newline, but creates invalid XHTML by placing the list inside the paragraph. RedCloth recognizes the pattern for backward compatibility, but creates valid XHTML. +in: |- + A simple example. + # One + # Two +html: |- +

A simple example.

+
    +
  1. One
  2. +
  3. Two
  4. +
+--- +name: unordered list immediately following paragraph +in: |- + A simple example. + * One + * Two +html: |- +

A simple example.

+
    +
  • One
  • +
  • Two
  • +
+--- +name: ordered list immediately following extended block +in: |- + div.. Here it comes. + + A simple example. + # One + # Two +html: |- +
Here it comes.
+
A simple example.
+
    +
  1. One
  2. +
  3. Two
  4. +
+--- +name: unordered list immediately following extended block +in: |- + div.. Here it comes. + + A simple example. + * One + * Two +html: |- +
Here it comes.
+
A simple example.
+
    +
  • One
  • +
  • Two
  • +
\ No newline at end of file diff --git a/vendor/gems/RedCloth-4.0.3/test/poignant.yml b/vendor/gems/RedCloth-4.0.3/test/poignant.yml new file mode 100644 index 0000000..1f5884a --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/test/poignant.yml @@ -0,0 +1,89 @@ +--- # Tests from the (Poignant Guide) +in: > + h3. False + + + ! + if plastic_cup + print "Plastic cup is on the up 'n' up!" + end + + + + If @plastic_cup@ contains either @nil@ or @false@, you won't see anything print + to the screen. They're not on the @if@ guest list. So @if@ isn't going to run + any of the code it's protecting. + + + But @nil@ and @false@ need not walk away in shame. They may be of questionable + character, but @unless@ runs a smaller establishment that caters to the bedraggled. + The @unless@ keyword has a policy of only allowing those with a negative charge in. + Who are: @nil@ and @false@. + + +
+    unless plastic_cup
+      print "Plastic cup is on the down low."
+    end
+  
+ + + You can also use @if@ and @unless@ at the end of a single line of code, if that's + all that is being protected. + + +
+    print "Yeah, plastic cup is up again!" if plastic_cup
+    print "Hardly. It's down." unless plastic_cup
+  
+ + + Now that you've met @false@, I'm sure you can see what's on next. + +html: |- +

False

+

Shape of a cat.

+

The cat Trady Blix. Frozen in emptiness. Immaculate whiskers rigid. Placid eyes of lake. Tail of warm icicle. Sponsored by a Very Powerful Pause Button.

+

The darkness surrounding Blix can be called negative space. Hang on to that phrase. Let it suggest that the emptiness has a negative connotation. In a similar way, nil has a slightly sour note that it whistles.

+

Generally speaking, everything in Ruby has a positive charge to it. This spark flows through strings, numbers, regexps, all of it. Only two keywords wear a shady cloak: nil and false draggin us down.

+

You can test that charge with an if keyword. It looks very much like the do blocks we saw in the last chapter, in that both end with an end.

+
+    if plastic_cup
+      print "Plastic cup is on the up 'n' up!"
+    end
+  
+

If plastic_cup contains either nil or false, you won’t see anything print to the screen. They’re not on the if guest list. So if isn’t going to run any of the code it’s protecting.

+

But nil and false need not walk away in shame. They may be of questionable character, but unless runs a smaller establishment that caters to the bedraggled. The unless keyword has a policy of only allowing those with a negative charge in. Who are: nil and false.

+
+    unless plastic_cup
+      print "Plastic cup is on the down low."
+    end
+  
+

You can also use if and unless at the end of a single line of code, if that’s all that is being protected.

+
+    print "Yeah, plastic cup is up again!" if plastic_cup
+    print "Hardly. It's down." unless plastic_cup
+  
+

Now that you’ve met false, I’m sure you can see what’s on next.

+ \ No newline at end of file diff --git a/vendor/gems/RedCloth-4.0.3/test/sanitize_html.yml b/vendor/gems/RedCloth-4.0.3/test/sanitize_html.yml new file mode 100644 index 0000000..7b6052e --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/test/sanitize_html.yml @@ -0,0 +1,42 @@ +--- +in: Just a little harmless xss . +sanitized_html:

Just a little harmless xss stuff.

+--- +in: Here's a bad image +sanitized_html:

Here’s a bad image

+--- +in: Just some random > and < characters, but also a
tag. +sanitized_html:

Just some random > and < characters, but also a
tag.

+--- +name: processes text beginning with space +in: ' This began with a space and ends with some XSS: ' +sanitized_html: 'This began with a space and ends with some XSS: alert(“Hai. I`m in ya PC. Makin ya XSS viruzz! KThxBye”);' +--- +name: processes text in notextile tags +in: |- + + The bad tags should be missing: + +sanitized_html: |- + The bad tags should be missing: alert("Hai. I`m in ya PC. Makin ya XSS viruzz! KThxBye"); +--- +name: processes text in inline notextile tags +in: |- + The bad tags should be missing: +sanitized_html: |- +

The bad tags should be missing: alert("Hai. I`m in ya PC. Makin ya XSS viruzz! KThxBye");

+--- +name: removes script tags +in: |- + +sanitized_html: "alert(“Hai. I`m in ya PC. Makin ya XSS viruzz! KThxBye”);" +--- +name: removes nested script tags +in: |- + +sanitized_html: |- + alert(“Hai. I`m in ya PC. Makin ya XSS viruzz! KThxBye”); \ No newline at end of file diff --git a/vendor/gems/RedCloth-4.0.3/test/table.yml b/vendor/gems/RedCloth-4.0.3/test/table.yml new file mode 100644 index 0000000..3e6903b --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/test/table.yml @@ -0,0 +1,267 @@ +--- +in: | + |a|b|c| + |1|2|3| + + h3. A header after the table +html: |- + + + + + + + + + + + +
abc
123
+

A header after the table

+--- +in: | + |_. a|_. b|_. c| + |1|2|3| +html: |- + + + + + + + + + + + +
abc
123
+--- +in: |- + |This|is|a|simple|table| + |This|is|a|simple|row| +html: |- + + + + + + + + + + + + + + + +
Thisisasimpletable
Thisisasimplerow
+--- +in: |- + table{border:1px solid black}. + |This|is|a|row| + |This|is|a|row| +html: |- + + + + + + + + + + + + + +
Thisisarow
Thisisarow
+--- +in: '{background:#ddd}. |This|is|a|row|' +html: |- + + + + + + + +
Thisisarow
+--- +in: |- + |a|b|c| + | |2|3| +html: |- + + + + + + + + + + + +
abc
23
+--- +in: |- + table{width: 200px; border:2px solid gray;}. + |_=. Alignment| + |=. centered| + |=(. a bit right| + |=). a bit left| + |>). almost right| + |<(. almost left| + |>. right| + |<. left| +html: |- + + + + + + + + + + + + + + + + + + + + + + + + + +
Alignment
centered
a bit right
a bit left
almost right
almost left
right
left
+--- +in: |- + |{background:#ddd}. Cell with gray background| + |\2. Cell spanning 2 columns| + |/3. Cell spanning 3 rows| + |>. Right-aligned cell| +html: |- + + + + + + + + + + + + + +
Cell with gray background
Cell spanning 2 columns
Cell spanning 3 rows
Right-aligned cell
+--- +in: | + {background:#ddd}. |S|Target|Complete|App|Milestone| + |!/i/g.gif!|11/29/04|11/29/04|011|XML spec complete (KH is on schedule)| + |!/i/g.gif!|11/22/04|11/22/04|070|Dialog pass 1 builds an index file| + |!/i/g.gif!|11/24/04|11/24/04|070|Dialog pass 2 98% complete| + |!/i/g.gif!|11/30/04|11/30/04|070|Feature complete. Passes end-to-end smoke test.| + |!/i/w.gif!|12/02/04| |011|Dialog pass 1 and 2 complete (98+%)| + |!/i/w.gif!|12/03/04| |081|Feature complete| +html: |- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
STargetCompleteAppMilestone
11/29/0411/29/04011XML spec complete (KH is on schedule)
11/22/0411/22/04070Dialog pass 1 builds an index file
11/24/0411/24/04070Dialog pass 2 98% complete
11/30/0411/30/04070Feature complete. Passes end-to-end smoke test.
12/02/04 011Dialog pass 1 and 2 complete (98+%)
12/03/04 081Feature complete
+--- +name: combined table header and colspan +in: |- + table(my_class). + |_\2. a |_. b |_. c | + | 1 | 2 | 3 | 4 | +html: |- + + + + + + + + + + + + +
a b c
1 2 3 4
+--- +name: two adjacent tables +in: |- + |a|b|c| + + |1|2|3| +html: |- + + + + + + +
abc
+ + + + + + +
123
diff --git a/vendor/gems/RedCloth-4.0.3/test/test_custom_tags.rb b/vendor/gems/RedCloth-4.0.3/test/test_custom_tags.rb new file mode 100644 index 0000000..d724af0 --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/test/test_custom_tags.rb @@ -0,0 +1,46 @@ +#!/usr/bin/env ruby + +require 'helper' + +class TestCustomTags < Test::Unit::TestCase + + module FigureTag + def fig( opts ) + label, img = opts[:text].split('|').map! {|str| str.strip} + + html = %Q{
\n} + html << %Q{ \n} + html << %Q{ Figure #{label}\n} + html << %Q{ \n} + html << %Q{

Figure #{label}

\n} + html << %Q{
\n} + end + end + + def test_fig_tag + input = %Q{The first line of text.\n\n} + input << %Q{fig. 1.1 | img.jpg\n\n} + input << %Q{The last line of text.\n} + r = RedCloth.new input + r.extend FigureTag + str = r.to_html + + html = %Q{

The first line of text.

\n} + html << %Q{
\n} + html << %Q{ \n} + html << %Q{ Figure 1.1\n} + html << %Q{ \n} + html << %Q{

Figure 1.1

\n} + html << %Q{
\n} + html << %Q{

The last line of text.

} + + assert_equal(html, str) + end + + def test_fallback + r = RedCloth.new %Q/fig()>[no]{color:red}. 1.1 | img.jpg/ + str = r.to_html + + assert_equal "

fig()>[no]{color:red}. 1.1 | img.jpg

", str + end +end diff --git a/vendor/gems/RedCloth-4.0.3/test/test_extensions.rb b/vendor/gems/RedCloth-4.0.3/test/test_extensions.rb new file mode 100644 index 0000000..56cecbd --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/test/test_extensions.rb @@ -0,0 +1,31 @@ +#!/usr/bin/env ruby + +require 'helper' + +class TestExtensions < Test::Unit::TestCase + + require 'redcloth' + + # http://www.ralree.info/2006/9/13/extending-redcloth + module RedClothSmileyExtension + def refs_smiley(text) + text.gsub!(/(\s)~(:P|:D|:O|:o|:S|:\||;\)|:'\(|:\)|:\()/) do |m| + bef,ma = $~[1..2] + filename = "/images/emoticons/"+(ma.split(//).collect{|l| l[0] }.join('_'))+".png" + "#{bef}" + end + end + end + + RedCloth.send(:include, RedClothSmileyExtension) + + def test_smiley + input = %Q{You're so silly! ~:P} + + str = RedCloth.new(input).to_html(:textile, :refs_smiley) + + html = %Q{

You’re so silly!

} + + assert_equal(html, str) + end +end diff --git a/vendor/gems/RedCloth-4.0.3/test/test_formatters.rb b/vendor/gems/RedCloth-4.0.3/test/test_formatters.rb new file mode 100644 index 0000000..e763733 --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/test/test_formatters.rb @@ -0,0 +1,15 @@ +#!/usr/bin/env ruby + +require 'helper' + +class TestFormatters < Test::Unit::TestCase + + generate_formatter_tests('html') do |doc| + RedCloth.new(doc['in']).to_html + end + + generate_formatter_tests('latex') do |doc| + RedCloth.new(doc['in']).to_latex + end + +end diff --git a/vendor/gems/RedCloth-4.0.3/test/test_parser.rb b/vendor/gems/RedCloth-4.0.3/test/test_parser.rb new file mode 100644 index 0000000..d2026f7 --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/test/test_parser.rb @@ -0,0 +1,73 @@ +#!/usr/bin/env ruby + +require 'helper' + +class TestParser < Test::Unit::TestCase + + def test_parser_accepts_options + assert_nothing_raised(ArgumentError) do + RedCloth.new("test", [:hard_breaks]) + end + end + + def test_redcloth_has_version + assert RedCloth.const_defined?("VERSION") + assert RedCloth::VERSION.const_defined?("STRING") + end + + def test_redcloth_version_to_s + assert_equal RedCloth::VERSION::STRING, RedCloth::VERSION.to_s + assert RedCloth::VERSION == RedCloth::VERSION::STRING + end + + def test_badly_formatted_table_does_not_segfault + assert_match(/td/, RedCloth.new(%Q{| one | two |\nthree | four |}).to_html) + end + + def test_table_without_block_end_does_not_segfault + assert_match(/h3/, RedCloth.new("| a | b |\n| c | d |\nh3. foo").to_html) + end + + def test_table_with_empty_cells_does_not_segfault + assert_match(/td/, RedCloth.new(%Q{|one || |\nthree | four |}).to_html) + end + + def test_unfinished_html_block_does_not_segfault_with_filter_html + assert_nothing_raised { RedCloth.new(%Q{
Some text}, [:filter_html]).to_html } + end + + def test_redcloth_version_in_output + assert_equal "

#{RedCloth::VERSION::STRING}

", RedCloth.new("RedCloth::VERSION").to_html + end + + def test_redcloth_version_only_on_line_by_itself + input = "RedCloth::VERSION won't output the RedCloth::VERSION unless it's on a line all by itself.\n\nRedCloth::VERSION" + html = "

RedCloth::VERSION won’t output the RedCloth::VERSION unless it’s on a line all by itself.

\n

#{RedCloth::VERSION::STRING}

" + assert_equal html, RedCloth.new(input).to_html + end + + def test_redcloth_version_with_label + input = "RedCloth::VERSION: RedCloth::VERSION" + html = "

RedCloth::VERSION: #{RedCloth::VERSION::STRING}

" + assert_equal html, RedCloth.new(input).to_html + end + + def test_redcloth_version_with_label_2 + input = "RedCloth version RedCloth::VERSION" + html = "

RedCloth version #{RedCloth::VERSION::STRING}

" + assert_equal html, RedCloth.new(input).to_html + end + + def test_inline_redcloth_version + input = "The current RedCloth version is [RedCloth::VERSION]" + html = "

The current RedCloth version is #{RedCloth::VERSION::STRING}

" + assert_equal html, RedCloth.new(input).to_html + end + + def test_parser_strips_carriage_returns + input = "This is a paragraph\r\n\r\nThis is a\r\nline break.\r\n\r\n
\r\ntest\r\n\r\n
" + html = "

This is a paragraph

\n

This is a
\nline break.

\n
\n

test

\n
" + assert_equal html, RedCloth.new(input).to_html + end + +end diff --git a/vendor/gems/RedCloth-4.0.3/test/test_restrictions.rb b/vendor/gems/RedCloth-4.0.3/test/test_restrictions.rb new file mode 100644 index 0000000..c6df07d --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/test/test_restrictions.rb @@ -0,0 +1,41 @@ +#!/usr/bin/env ruby + +require 'helper' + +class TestRestrictions < Test::Unit::TestCase + + # security restrictions + generate_formatter_tests('filtered_html') do |doc| + RedCloth.new(doc['in'], [:filter_html]).to_html + end + generate_formatter_tests('sanitized_html') do |doc| + RedCloth.new(doc['in'], [:sanitize_html]).to_html + end + + # pba filters (style, class, id) + generate_formatter_tests('style_filtered_html') do |doc| + RedCloth.new(doc['in'], [:filter_styles]).to_html + end + generate_formatter_tests('class_filtered_html') do |doc| + RedCloth.new(doc['in'], [:filter_classes]).to_html + end + generate_formatter_tests('id_filtered_html') do |doc| + RedCloth.new(doc['in'], [:filter_ids]).to_html + end + + # hard breaks - has been deprecated and will be removed in a future version + generate_formatter_tests('html_no_breaks') do |doc| + red = RedCloth.new(doc['in']) + red.hard_breaks = false + red.to_html + end + + generate_formatter_tests('lite_mode_html') do |doc| + RedCloth.new(doc['in'], [:lite_mode]).to_html + end + + generate_formatter_tests('no_span_caps_html') do |doc| + RedCloth.new(doc['in'], [:no_span_caps]).to_html + end + +end diff --git a/vendor/gems/RedCloth-4.0.3/test/textism.yml b/vendor/gems/RedCloth-4.0.3/test/textism.yml new file mode 100644 index 0000000..20a65c8 --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/test/textism.yml @@ -0,0 +1,480 @@ +--- +name: header one +in: h1. Header 1 +html:

Header 1

+latex: "\section*{Header 1}\n\n" +--- +name: header two +in: h2. Header 2 +html:

Header 2

+latex: "\subsection*{Header 2}\n\n" +--- +name: header three +in: h3. Header 3 +html:

Header 3

+latex: "\subsubsection*{Header 3}\n\n" +--- +name: blockquote +in: |- + Any old text. + + bq. A block quotation. + + Any old text. + +html: |- +

Any old text.

+
+

A block quotation.

+
+

Any old text.

+ +latex: |+ + Any old text. + + \begin{quotation} + A block quotation. + + \end{quotation} + + Any old text. + +--- +in: |- + # A first item + # A second item + # A third item + # A fourth item +html: |- +
    +
  1. A first item
  2. +
  3. A second item
  4. +
  5. A third item
  6. +
  7. A fourth item
  8. +
+latex: |+ + \begin{enumerate} + \item A first item + \item A second item + \item A third item + \item A fourth item + \end{enumerate} + +--- +in: |- + * A first item + * A second item + * A third item + * A fourth item + +html: |- +
    +
  • A first item
  • +
  • A second item
  • +
  • A third item
  • +
  • A fourth item
  • +
+latex: |+ + \begin{itemize} + \item A first item + \item A second item + \item A third item + \item A fourth item + \end{itemize} + +--- +in: _a phrase_ +html:

a phrase

+latex: "\\emph{a phrase}\n\n" +--- +in: __a phrase__ +html:

a phrase

+latex: "\\emph{a phrase}\n\n" +--- +in: '*a phrase*' +html:

a phrase

+latex: "\\textbf{a phrase}\n\n" +--- +in: '**a phrase**' +html:

a phrase

+latex: "\\textbf{a phrase}\n\n" +--- +in: Nabokov's ??Pnin?? +html:

Nabokov’s Pnin

+latex: "Nabokov's \\begin{quote}Pnin\\end{quote}\n\n" +--- +name: del part of word +in: 'A very [-extra-]ordinary day.' +html: "

A very extraordinary day.

" +latex: "A very \\sout{extra}ordinary day.\n\n" +--- +name: del part of word that contains a hyphen +in: 'An [-extra-extra-]ordinary day.' +html:

An extra-extraordinary day.

+latex: "An \\sout{extra-extra}ordinary day.\n\n" +--- +name: del a phrase +in: 'Delete -a phrase- this way.' +html:

Delete a phrase this way.

+latex: "Delete \\sout{a phrase} this way.\n\n" +--- +name: del a phrase that contains hyphens +in: 'Delete -a no-nonsense phrase- this way.' +html:

Delete a no-nonsense phrase this way.

+latex: "Delete \\sout{a no-nonsense phrase} this way.\n\n" +--- +in: +a phrase+ +html:

a phrase

+latex: "\\underline{a phrase}\n\n" +--- +in: ^a phrase^ +html:

a phrase

+latex: "\\ensuremath{^\\textrm{a phrase}}\n\n" +--- +in: ~a phrase~ +html:

a phrase

+--- +in: %(myclass)SPAN% +html:

SPAN

+no_span_caps_html:

SPAN

+--- +in: %{color:red}red% +html:

red

+--- +in: %[fr]rouge% +html:

rouge

+--- +in: _(big)red_ +html:

red

+--- +in: p(bob). A paragraph +html:

A paragraph

+--- +in: p{color:#ddd}. A paragraph +html:

A paragraph

+--- +in: p[fr]. A paragraph +html:

A paragraph

+--- +in: h2()>. right-aligned header2, indented 1em both side +html:

right-aligned header2, indented 1em both side

+--- +in: h3=. centered header +html:

centered header

+--- +in: '!>/image.gif! right-aligned image' +html:

right-aligned image

+--- +in: p[no]{color:red}. A Norse of a different colour. +html:

A Norse of a different colour.

+--- +in: |- + |This|is|a|simple|table| + |This|is|a|simple|row| +html: |- + + + + + + + + + + + + + + + +
Thisisasimpletable
Thisisasimplerow
+--- +in: |- + table{border:1px solid black}. + |This|is|a|row| + |This|is|a|row| +html: |- + + + + + + + + + + + + + +
Thisisarow
Thisisarow
+--- +in: '{background:#ddd}. |This|is|a|row|' +html: |- + + + + + + + +
Thisisarow
+--- +in: |- + |{background:#ddd}. Cell with gray background| + |\2. Cell spanning 2 columns| + |/3. Cell spanning 3 rows| + |>. Right-aligned cell| +html: |- + + + + + + + + + + + + + +
Cell with gray background
Cell spanning 2 columns
Cell spanning 3 rows
Right-aligned cell
+--- +name: basics +in: |- + h2{color:green}. This is a title + + h3. This is a subhead + + p{color:red}. This is some text of dubious character. Isn't the use of "quotes" just lazy writing -- and theft of 'intellectual property' besides? I think the time has come to see a block quote. + + bq[fr]. This is a block quote. I'll admit it's not the most exciting block quote ever devised. + + Simple list: + + #{color:blue} one + # two + # three + + Multi-level list: + + # one + ## aye + ## bee + ## see + # two + ## x + ## y + # three + +html: |- +

This is a title

+

This is a subhead

+

This is some text of dubious character. Isn’t the use of “quotes” just lazy writing — and theft of ‘intellectual property’ besides? I think the time has come to see a block quote.

+
+

This is a block quote. I’ll admit it’s not the most exciting block quote ever devised.

+
+

Simple list:

+
    +
  1. one
  2. +
  3. two
  4. +
  5. three
  6. +
+

Multi-level list:

+
    +
  1. one +
      +
    1. aye
    2. +
    3. bee
    4. +
    5. see
    6. +
  2. +
  3. two +
      +
    1. x
    2. +
    3. y
    4. +
  4. +
  5. three
  6. +
+--- +name: tougher stuff +in: |- + + Multi-level list: + + # one + ## aye + ## bee + ## see + # two + ## x + ## y + # three + + Mixed list: + + * Point one + * Point two + ## Step 1 + ## Step 2 + ## Step 3 + * Point three + ** Sub point 1 + ** Sub point 2 + + + Well, that went well. How about we insert an old-fashioned hypertext link? Will the quote marks in the tags get messed up? No! + + "This is a link (optional title)":http://www.textism.com + +html: |- +

Multi-level list:

+
    +
  1. one +
      +
    1. aye
    2. +
    3. bee
    4. +
    5. see
    6. +
  2. +
  3. two +
      +
    1. x
    2. +
    3. y
    4. +
  4. +
  5. three
  6. +
+

Mixed list:

+
    +
  • Point one
  • +
  • Point two +
      +
    1. Step 1
    2. +
    3. Step 2
    4. +
    5. Step 3
    6. +
  • +
  • Point three +
      +
    • Sub point 1
    • +
    • Sub point 2
    • +
  • +
+

Well, that went well. How about we insert an old-fashioned hypertext link? Will the quote marks in the tags get messed up? No!

+

This is a link

+--- +name: table +in: |- + table{border:1px solid black}. + |_. this|_. is|_. a|_. header| + <{background:gray}. |\2. this is|{background:red;width:200px}. a|^<>{height:200px}. row| + |this|<>{padding:10px}. is|^. another|(bob#bob). row| +html: |- + + + + + + + + + + + + + + + + + + +
thisisaheader
this isarow
thisisanotherrow
+--- +in: |- + An image: + + !/common/textist.gif(optional alt text)! + + # Librarians rule + # Yes they do + # But you knew that + + Some more text of dubious character. Here is a noisome string of CAPITAL letters. Here is something we want to _emphasize_. + That was a linebreak. And something to indicate *strength*. Of course I could use my own HTML tags if I felt like it. +html: |- +

An image:

+

optional alt text

+
    +
  1. Librarians rule
  2. +
  3. Yes they do
  4. +
  5. But you knew that
  6. +
+

Some more text of dubious character. Here is a noisome string of CAPITAL letters. Here is something we want to emphasize.
+ That was a linebreak. And something to indicate strength. Of course I could use my own HTML tags if I felt like it.

+--- +name: code +in: |- + h3. Coding + + This is some code, "isn't it". Watch those quote marks! Now for some preformatted text: + +
+  
+      $text = str_replace("

%::%

","",$text); + $text = str_replace("%::%

","",$text); + $text = str_replace("%::%","",$text); + +
+
+ + This isn't code. + + +html: |- +

Coding

+

This is some code, "isn't it". Watch those quote marks! Now for some preformatted text:

+
+  
+      $text = str_replace("<p>%::%</p>","",$text);
+      $text = str_replace("%::%</p>","",$text);
+      $text = str_replace("%::%","",$text);
+  
+  
+  
+

This isn’t code.

+--- +name: hard break +in: |- + trivial + break + + next +html: |- +

trivial
+ break

+

next

+--- +name: normal paragraphs +in: |- + trivial + + paragraphs +html: |- +

trivial

+

paragraphs

+--- +name: hard break in a list +in: |- + * first line + * second + line + * third line +html: |- +
    +
  • first line
  • +
  • second
    + line
  • +
  • third line
  • +
+--- +name: copyright symbol at line start +in: "(C) copyright conversion (C) test." +html: "

© copyright conversion © test.

" \ No newline at end of file diff --git a/vendor/gems/RedCloth-4.0.3/test/threshold.yml b/vendor/gems/RedCloth-4.0.3/test/threshold.yml new file mode 100644 index 0000000..f16d5d9 --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/test/threshold.yml @@ -0,0 +1,772 @@ +--- # From http://thresholdstate.com/articles/4312/the-textile-reference-manual +name: paragraph +desc: Paragraphs are separated by blank lines. Each paragraph of text is transformed into a XHTML

paragraph block. +in: |- + A paragraph. + + Another paragraph. +html: |- +

A paragraph.

+

Another paragraph.

+--- +name: line breaks +desc: Line breaks within paragraphs are transformed into XHTML line breaks. +in: |- + A paragraph with + a line break. +html: |- +

A paragraph with
+ a line break.

+--- +name: xhtml tags +desc: Simple XHTML tags may be included in a paragraph. +in: Here's some bold text. +html:

Here’s some bold text.

+--- +name: no paragraph tags +desc: A line beginning with a space will be left untouched, and not wrapped in

tags. +in: " No paragraph tags here." +html: "No paragraph tags here." +valid_html: false +--- +name: smart quotes +desc: Single and double typewriter quotation marks ' and " are transformed into typographically correct “curly” quote marks. +in: '"Proceed!" said he to the host.' +html: '

“Proceed!” said he to the host.

' +--- +name: smart quotes 2 +in: "'Proceed!' said he to the host." +html: "

‘Proceed!’ said he to the host.

" +--- +name: nested quotation marks +desc: Single and double quotation marks may be nested one inside the other. +in: |- + "'I swear, captain,' replied I." +html: |- +

“‘I swear, captain,’ replied I.”

+--- +name: nested quotation marks 2 +in: |- + '"I swear, captain," replied I.' +html: |- +

‘“I swear, captain,” replied I.’

+--- +name: apostrophe glyphs +desc: Single quotation marks ' will be turned into apostrophe glyphs when used as such. +in: Greengrocers' apostrophe's. +html:

Greengrocers’ apostrophe’s.

+--- +name: em-dash glyphs +desc: Double -- dashes become an em-dash glyph. +in: You know the Italian proverb -- Chi ha compagno ha padrone. +html:

You know the Italian proverb — Chi ha compagno ha padrone.

+--- +name: em-dash glyphs 2 +in: You know the Italian proverb--Chi ha compagno ha padrone. +html:

You know the Italian proverb—Chi ha compagno ha padrone.

+--- +name: en-dash glyphs +desc: Single - dashes are replaced with en-dashes. +in: You know the Italian proverb - Chi ha compagno ha padrone. +html:

You know the Italian proverb – Chi ha compagno ha padrone.

+--- +name: ellipsis character +desc: Three period marks become an ellipsis character. +in: Meanwhile... +html:

Meanwhile…

+--- +name: dimension character +desc: An “x” is replaced with the dimension character when used between numbers. +in: 1 x 2 x 3 = 6 +html:

1 × 2 × 3 = 6

+--- +name: dimension character 2 +in: 1x2x3 = 6 +html:

1×2×3 = 6

+--- +name: trademark register copyright +desc: Trademark, Registered and Copyright symbols are represented by their common plain text equivalents. +in: Registered(r) Trademark(tm) Copyright (c). +html:

Registered® Trademark™ Copyright ©.

+--- +name: acronyms +desc: Acronyms consist of three or more uppercase characters, followed immediately by words in parentheses. +in: ABC(Always Be Closing) +html:

ABC

+no_span_caps_html:

ABC

+--- +name: uppercase +desc: Uppercase words of three or more characters are enclosed with a special span element. +in: IBM or HAL +html:

IBM or HAL

+no_span_caps_html:

IBM or HAL

+--- +name: emphasis +desc: Emphasis is added with _ underscores. +in: The _underlying_ cause. +html:

The underlying cause.

+--- +name: strong text +desc: Strong text is indicated by * asterisks. +in: The *underlying* cause. +html:

The underlying cause.

+--- +name: italic text +desc: em is a semantic tag, usually represented by browsers as italic text. To produce italic tags instead, use double underscores. +in: The __underlying__ cause. +html:

The underlying cause.

+--- +name: bold text +desc: strong is a semantic tag, usually represented by browsers as bold text. To produce bold tags instead, use double asterisks. +in: The **underlying** cause. +html:

The underlying cause.

+--- +name: citation +desc: Double question marks represent a citation, like the title of a book. +in: ??The Count of Monte Cristo??, by Dumas. +html:

The Count of Monte Cristo, by Dumas.

+--- +name: inserted and deleted text +desc: Inserted and deleted text is represented by + plus and - minus symbols. +in: Scratch -that-, replace with +this+. +html:

Scratch that, replace with this.

+--- +name: subscript +desc: Subscript text is indicated by ~ tilde characters. +in: log ~2~ n +html:

log 2 n

+--- +name: superscript +desc: Superscript text is indicated by ^ caret characters. +in: 2 ^x^ +html:

2 x

+--- +name: span tag +desc: Percentage marks will enclose text with a XHTML span tag. +in: The %underlying% cause. +html:

The underlying cause.

+--- +name: code +desc: To include a short snippet of code such as XHTML or Javascript, surround it with @ “at” symbols. XHTML significant characters within a code phrase will be escaped for display to the reader. +in: About the @
@ tag. +html:

About the <hr /> tag.

+--- +name: links +desc: Links are represented by double quotes and a colon. +in: '"link text":http://example.com/' +html:

link text

+--- +name: local links +desc: The host name may be ommitted for local links. +in: '"link text":/example' +html:

link text

+--- +name: link title +desc: A title may be placed in () parentheses. +in: '"link text(with title)":http://example.com/' +html:

link text

+--- +name: link alias +desc: For frequent linking to a single URL, you can specify a link alias with [] square brackets. +in: |- + Here's "a link":tstate, and + "another link":tstate to the same site. + + [tstate]http://thresholdstate.com/ +html: |- +

Here’s a link, and
+ another link to the same site.

+--- +name: image +desc: Use ! exclamation marks to insert an image tag. +in: "!/img.gif!" +html:

+--- +name: image 2 +in: "!http://thresholdstate.com/img.gif!" +html:

+--- +name: image alt +desc: Use () parentheses to include “alt” text. +in: "!/img.gif(alt text)!" +html:

alt text

+--- +name: image links +desc: Images may be combined with links by using an !image! in place of the link text. +in: "!/img.gif!:http://textpattern.com/" +html:

+--- +name: headers +desc: Headers are represented by h1., h2., … h6.. +in: h1. Heading 1 +html:

Heading 1

+--- +name: headers 2 +in: h2. Heading 2 +html:

Heading 2

+--- +name: headers 3 +in: h6. Heading 6 +html:
Heading 6
+--- +name: paragraph text +desc: "Paragraph p text is represented by p.. This is the default block type: any paragraph without a block modifier will automatically be enclosed with p tags." +in: |- + p. A paragraph. + Continued. + + Also a paragraph. +html: |- +

A paragraph.
+ Continued.

+

Also a paragraph.

+--- +name: block quote +desc: bq. indicates a quoted block of text. +in: |- + bq. A quotation. + Continued. + + Regular paragraph. +html: |- +
+

A quotation.
+ Continued.

+
+

Regular paragraph.

+--- +name: block quote citation +desc: Block quotes may include a citation URL immediately following the period. +in: bq.:http://thresholdstate.com/ A cited quotation. +html: |- +
+

A cited quotation.

+
+--- +name: footnotes +desc: Footnotes are represented by the fn1., fn2., … block modifiers. +in: |- + A footnote reference[1]. + + fn1. The footnote. +html: |- +

A footnote reference1.

+

1 The footnote.

+# html: |- +#

A footnote reference1.

+#

1 The footnote.

+--- +name: block code +desc: Code such as XHTML, Javascript or PHP may be displayed using the bc. “block code” modifier. XHTML significant characters such as < and > will be escaped within code blocks – bc is used for displaying code to the reader, not for executing it. +note: Note that Textile will interpret any blank lines within the code as indicating the end of the code block. See Extended Blocks below for an explanation of how to display longer blocks of code. +in: |- + bc. +html: |- +
<script>
+  // a Javascript example
+  alert("Hello World");
+  </script>
+--- +name: preformatted text +desc: Use the pre. block modifier for pre-formatted text. XHTML significant characters within the block will be escaped. +note: pre. is almost identical to bc., with the exception that ... tags are not used within the
 block.
+in: |-
+  pre. Pre-formatted
+  text
+html: |-
+  
Pre-formatted
+  text
+--- +name: notextile +desc: The notextile. block modifier applies no Textile processing at all to a block. Raw XHTML characters are passed through untouched, so this may be used to insert explicit XHTML markup, or execute Javascript or PHP code. +in: |- + notextile. + +html: |- + + +valid_html: false +--- +name: class attribute +desc: CSS classes are specified with () parentheses. +in: p(myclass). My classy paragraph. +html:

My classy paragraph.

+--- +name: id attribute +desc: CSS IDs are specified with () parentheses. +in: p(#myid). My ID paragraph. +html:

My ID paragraph.

+--- +name: style attribute +desc: CSS styles are specified with {} braces. +in: p{color:red}. Red rum. +html:

Red rum.

+--- +name: lang attribute +desc: Languages are specified with [] brackets. +in: p[fr-fr]. En français. +html:

En français.

+--- +name: phrase modifiers +desc: The same syntax may be applied to phrase modifiers. +in: A *(myclass)classy* phrase. +html:

A classy phrase.

+--- +name: phrase modifiers 2 +in: An _(#myid2)ID_ phrase. +html:

An ID phrase.

+--- +name: phrase modifiers 3 +in: The %{color:blue}blue% room. +html:

The blue room.

+--- +name: block and phrase attributes combined +desc: Block and phrase attributes may be combined. +in: p(myclass#myid3){color:green}[de-de]. A complex paragraph. +html:

A complex paragraph.

+--- +name: block and phrase attributes combined 2 +in: A ??(myclass#myid4){color:green}[de-de]complex?? phrase. +html:

A complex phrase.

+--- +name: extended blocks +desc: Normally a block modifier covers a single block of text, and ends at the first blank line. To extend a block over multiple paragraphs that include blank lines, use a block modifier with two period marks instead of one. To close the extended block, use a different block modifier on the next paragraph. +in: |- + bq.. A quote. + + The quote continued. + + p. Back to paragraph text. +html: |- +
+

A quote.

+

The quote continued.

+
+

Back to paragraph text.

+--- +name: extended block code +desc: Extended blocks are useful for displaying longer examples of code that contain blank lines. +in: |- + A PHP code example. + + bc.. + + p. Following paragraph. +html: |- +

A PHP code example.

+
<?php
+  function hello() {
+  // display a hello message
+
+  print "Hello, World";
+  }
+  ?>
+
+  
+

Following paragraph.

+--- +name: extended block attributes +desc: Any block attributes on an extended block will be included on each following block. +in: |- + p(myclass).. A classy paragraph. + + Another classy paragraph. + + p. Not so classy. +html: |- +

A classy paragraph.

+

Another classy paragraph.

+

Not so classy.

+--- +name: extended block quote attributes +desc: Attributes on bq.. extended blocks will be included on both the inner and outer blocks. +in: |- + bq(myclass).. Quote paragraph 1. + + Paragraph 2. +html: |- +
+

Quote paragraph 1.

+

Paragraph 2.

+
+--- +name: extended block code attributes +desc: Attributes on bc.. extended blocks will be included on both the inner and outer blocks. +in: |- + bc(myclass).. Code block 1. + + Code block 2. +html: |- +
Code block 1.
+
+  Code block 2.
+--- +name: raw xhtml left in tact +desc: Raw XHTML tags are generally left untouched by Textile. Span tags that enclose only part of a block of text will be left intact, while the block itself is treated normally. +in: bold and italic, the hard way. +html:

bold and italic, the hard way.

+--- +name: paragraphs entirely raw xhtml +desc: Paragraphs that consist entirely of raw XHTML block tags will not be enclosed in

...

tags. +in:
My div
+html:
My div
+--- +name: paragraphs with inline xhtml +desc: Paragraphs that consist only of inline XHTML tags, will be enclosed in

...

tags. +in: image +html:

image

+--- +name: paragraphs with inline xhtml 2 +in: I'll make my own way. +html: '

I’ll make my own way.

' +--- +name: paragraphs partly enclosed in xhtml block tags +desc: Paragraphs that are only partly enclosed in block tags will be enclosed in

...

tags. +in:
inside
and outside. +html:
inside

and outside.

+# html:

inside
and outside.

+--- +name: complex xhtml blocks +desc: Textile can’t always identify the beginning and end of long or complex blocks of XHTML. To prevent Textile from enclosing complex XHTML blocks in paragraph tags, either use a space at the beginning of each line... +in: "
\n My div\n
" +html: "
\nMy div\n
" +--- +name: complex xhtml blocks 2 +desc: ...or a notexile.. extended block. +in: |- + notextile..
+ + My div + +
+html: |- +
+ + My div + +
+--- +name: complex xhtml blocks with inline formatting +desc: Textile will not wrap lines that start with a space in paragraph tags, but it should parse inline signatures +in: "
\n My *div*\n
" +html: "
\nMy div\n
" +--- +name: explicit pre escapement +desc: The contents of explicit
...
tags are escaped for display. +in: |- +
+  A HTML example
+  
+html: |- +
+  A HTML <b>example</b>
+  
+note: This syntax is supported for backwards compatibility only, and doesn’t always work as expected. The block modifier pre. should be used instead. +--- +name: explicit code escapement +desc: The contents of explicit ... tags are escaped for display. +in: |- + + Another HTML example + +html: |- +

+ Another HTML <b>example</b> +

+note: This syntax is supported for backwards compatibility only, and doesn’t always work as expected. The block modifier bc. should be used instead. +--- +name: notextile tags +desc: Blocks enclosed by the pseudo tag ... will be left untouched. +in: |- + + p. Leave me alone + +html: |- + p. Leave me alone +# html: |- +#

+# p. Leave me alone +#

+note: This syntax is supported for backwards compatibility only, and doesn’t always work as expected. The block modifier notextile. should be used instead. +valid_html: false +--- +name: left aligned text +desc: Left alignment is specified with a < less than symbol. +in: p<. Left-aligned paragraph. +html:

Left-aligned paragraph.

+--- +name: right aligned text +desc: Right alignment is specified with a > greater than symbol. +in: h3>. Right-aligned heading. +html:

Right-aligned heading.

+--- +name: justified text +desc: Use both <> symbols for justified text. +in: p<>. Justified paragraph. +html:

Justified paragraph.

+--- +name: centered text +desc: An = equals symbol represents centered text. +in: h3=. Centered heading. +html:

Centered heading.

+--- +name: padding +desc: Use empty ( and ) parentheses to add padding to blocks, in multiples of 1 em. +in: p(. Left pad 1em. +html:

Left pad 1em.

+--- +name: padding 2 +in: p)). Right pad 2em. +html:

Right pad 2em.

+--- +name: padding 3 +in: p(). Left and right pad 1em. +html:

Left and right pad 1em.

+--- +name: numeric lists +desc: Numeric lists are represented by lines beginning with #. +in: |- + # Item one + # Item two + # Item three +html: |- +
    +
  1. Item one
  2. +
  3. Item two
  4. +
  5. Item three
  6. +
+--- +name: bulleted lists +desc: Bulleted lists are represented by lines beginning with *. +in: |- + * Item A + * Item B + * Item C +html: |- +
    +
  • Item A
  • +
  • Item B
  • +
  • Item C
  • +
+--- +name: list attributes +desc: Attributes applied to the first list item will apply to the list itself. +in: |- + *{color:red} Item one + * Item two + * Item three +html: |- +
    +
  • Item one
  • +
  • Item two
  • +
  • Item three
  • +
+--- +name: nested lists +desc: Use multiple # or * symbols to create nested lists. +in: |- + # Item one + ## Item one-A + ## Item one-B + ### Item one-B-a + # Item two +html: |- +
    +
  1. Item one +
      +
    1. Item one-A
    2. +
    3. Item one-B +
        +
      1. Item one-B-a
      2. +
    4. +
  2. +
  3. Item two
  4. +
+--- +name: tables +desc: Tables can be constructed using | “pipe” symbols to separate cells. +in: |a|simple|table| +html: |- + + + + + + +
asimpletable
+--- +name: table heading cells +desc: Use _. to indicate table heading cells. +in: |- + |_. a|_. table|_. heading| + |a|table|row| +html: |- + + + + + + + + + + + +
atableheading
atablerow
+--- +name: cell attributes +desc: Attributes may be applied separately to individual cells, rows, and entire tables. Cell attributes are placed within each cell. +in: |a|{color:red}. styled|cell| +html: |- + + + + + + +
astyledcell
+--- +name: row attributes +desc: Row attributes are placed at the beginning of a row, followed by a dot and a space. +in: (rowclass). |a|classy|row| +html: |- + + + + + + +
aclassyrow
+--- +name: table attributes +desc: Table attributes are specified by placing the special table. block modifier immediately before the table. +in: |- + table(tableclass). + |a|classy|table| + |a|classy|table| +html: |- + + + + + + + + + + + +
aclassytable
aclassytable
+--- +name: vertical alignment +desc: Special alignment symbols are available for vertical alignment within table cells. +in: |^. top alignment| +html: |- + + + + +
top alignment
+--- +name: vertical alignment 2 +in: |- + |-. middle alignment| +html: |- + + + + +
middle alignment
+--- +name: vertical alignment 3 +in: |- + |~. bottom alignment| +html: |- + + + + +
bottom alignment
+--- +name: column span +desc: Use a \ backslash to indicate a column span. +in: |- + |\2. spans two cols | + | col 1 | col 2 | +html: |- + + + + + + + + +
spans two cols
col 1 col 2
+--- +name: row span +desc: Use a / forward slash to indicate a row span. +in: |- + |/3. spans 3 rows | row a | + | row b | + | row c | +html: |- + + + + + + + + + + + +
spans 3 rows row a
row b
row c
+--- +name: whitespace required +desc: Links, images and phrase modifiers normally require surrounding whitespace. +in: this*won't*work +html:

this*won’t*work

+--- +name: modifier without whitespace +desc: To use these without whitespace, surround the modifier with [] square brackets. +in: this[*will*]work +html:

thiswillwork

+--- +name: modifier without whitespace 2 +desc: This is particularly useful in conjunction with superscript and subscript. +in: 1[^st^], 2[^nd^], 3[^rd^]. +html:

1st, 2nd, 3rd.

+--- +name: modifier without whitespace 3 +in: 2 log[~n~] +html:

2 logn

+--- +name: modifier without whitespace 4 +desc: It can also be used to include links and images without surrounding whitespace. +in: |- + A close[!/img.gif!]image. + A tight["text":http://thresholdstate.com/]link. + A ["footnoted link":http://thresholdstate.com/][1]. +html: |- +

A closeimage.
+ A tighttextlink.
+ A footnoted link1.

+# html: |- +#

A closeimage.
+# A tighttextlink.
+# A footnoted link1.

\ No newline at end of file diff --git a/vendor/gems/RedCloth-4.0.3/test/validate_fixtures.rb b/vendor/gems/RedCloth-4.0.3/test/validate_fixtures.rb new file mode 100644 index 0000000..9dc6ed8 --- /dev/null +++ b/vendor/gems/RedCloth-4.0.3/test/validate_fixtures.rb @@ -0,0 +1,73 @@ +#!/usr/bin/env ruby + +require 'helper' +require 'erb' +require 'w3c_validators' + +class ValidateFixtures < Test::Unit::TestCase + include W3CValidators + + def setup + @v = MarkupValidator.new + sleep 1 # delay per WC3 request + end + + HTML_4_0_TEMPLATE = < + + + <%= test_name %> + + +<%= content %> + + +EOD + XHTML_1_0_TEMPLATE = < + + +<%= test_name %> + + +<%= content %> + + +EOD + + fixtures.each do |name, doc| + if doc['html'] && (doc['valid_html'].nil? || doc['valid_html']) + define_method("test_html_output_validity_of_#{name}") do + assert_produces_valid_html(name, doc['html']) + end + define_method("test_xhtml_output_validity_of_#{name}") do + assert_produces_valid_xhtml(name, doc['html']) + end + end + end + + private + def assert_produces_valid_html(test_name, content) + body = ERB.new(HTML_4_0_TEMPLATE, nil,'-%').result(binding) + assert_validates(body) + end + + def assert_produces_valid_xhtml(test_name, content) + body = ERB.new(XHTML_1_0_TEMPLATE, nil,'-%').result(binding) + assert_validates(body) + end + + def assert_validates(body) + results = @v.validate_text(body) + errors = results.errors + warnings = results.warnings.reject {|w| w.message_id == "247" } # NET-enabling start-tag requires SHORTTAG YES. + + assert(errors.empty?, "Validator errors: \n" + + errors.collect {|e| "'#{e.to_s}'"}.join("\n")) + + assert(warnings.empty?, "Validator warnings: \n" + + warnings.collect {|w| "'#{w.to_s}'"}.join("\n")) + end + +end diff --git a/vendor/gems/feed-normalizer-1.5.1/.specification b/vendor/gems/feed-normalizer-1.5.1/.specification index 861cd95..3e255cb 100644 --- a/vendor/gems/feed-normalizer-1.5.1/.specification +++ b/vendor/gems/feed-normalizer-1.5.1/.specification @@ -13,6 +13,7 @@ default_executable: dependencies: - !ruby/object:Gem::Dependency name: simple-rss + type: :runtime version_requirement: version_requirements: !ruby/object:Gem::Requirement requirements: @@ -22,6 +23,7 @@ dependencies: version: - !ruby/object:Gem::Dependency name: hpricot + type: :runtime version_requirement: version_requirements: !ruby/object:Gem::Requirement requirements: @@ -31,6 +33,7 @@ dependencies: version: - !ruby/object:Gem::Dependency name: hoe + type: :runtime version_requirement: version_requirements: !ruby/object:Gem::Requirement requirements: @@ -76,6 +79,7 @@ rdoc_options: - --main - README.txt require_paths: +- bin - lib required_ruby_version: !ruby/object:Gem::Requirement requirements: @@ -92,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement requirements: [] rubyforge_project: feed-normalizer -rubygems_version: 1.1.0 +rubygems_version: 1.2.0 signing_key: specification_version: 1 summary: Extensible Ruby wrapper for Atom and RSS parsers diff --git a/vendor/gems/hpricot-0.6/.specification b/vendor/gems/hpricot-0.6.161/.specification similarity index 89% rename from vendor/gems/hpricot-0.6/.specification rename to vendor/gems/hpricot-0.6.161/.specification index 8b56edf..9e1858c 100644 --- a/vendor/gems/hpricot-0.6/.specification +++ b/vendor/gems/hpricot-0.6.161/.specification @@ -1,7 +1,7 @@ --- !ruby/object:Gem::Specification name: hpricot version: !ruby/object:Gem::Version - version: "0.6" + version: 0.6.161 platform: ruby authors: - why the lucky stiff @@ -9,7 +9,7 @@ autorequire: bindir: bin cert_chain: [] -date: 2007-06-15 00:00:00 -04:00 +date: 2008-03-19 00:00:00 -04:00 default_executable: dependencies: [] @@ -18,6 +18,7 @@ email: why@ruby-lang.org executables: [] extensions: +- ext/fast_xs/extconf.rb - ext/hpricot_scan/extconf.rb extra_rdoc_files: - README @@ -29,45 +30,48 @@ files: - README - Rakefile - test/files -- test/test_preserved.rb -- test/test_paths.rb -- test/load_files.rb -- test/test_xml.rb -- test/test_parser.rb -- test/test_alter.rb -- test/test_builder.rb -- test/files/why.xml -- test/files/boingboing.html -- test/files/uswebgen.html -- test/files/immob.html -- test/files/week9.html -- test/files/utf8.html - test/files/basic.xhtml +- test/files/boingboing.html - test/files/cy0.html -- test/files/tenderlove.html +- test/files/immob.html - test/files/pace_application.html +- test/files/tenderlove.html +- test/files/uswebgen.html +- test/files/utf8.html +- test/files/week9.html +- test/files/why.xml +- test/load_files.rb +- test/test_alter.rb +- test/test_builder.rb +- test/test_parser.rb +- test/test_paths.rb +- test/test_preserved.rb +- test/test_xml.rb - lib/hpricot -- lib/hpricot.rb -- lib/i686-linux +- lib/hpricot/blankslate.rb - lib/hpricot/builder.rb +- lib/hpricot/elements.rb - lib/hpricot/htmlinfo.rb -- lib/hpricot/xchar.rb - lib/hpricot/inspect.rb - lib/hpricot/modules.rb - lib/hpricot/parse.rb - lib/hpricot/tag.rb -- lib/hpricot/traverse.rb -- lib/hpricot/elements.rb - lib/hpricot/tags.rb -- lib/hpricot/blankslate.rb +- lib/hpricot/traverse.rb +- lib/hpricot/xchar.rb +- lib/hpricot.rb - extras/mingw-rbconfig.rb - ext/hpricot_scan/hpricot_scan.h +- ext/fast_xs/FastXsService.java +- ext/hpricot_scan/hpricot_scan.java.java - ext/hpricot_scan/HpricotScanService.java +- ext/fast_xs/fast_xs.c - ext/hpricot_scan/hpricot_scan.c +- ext/fast_xs/extconf.rb - ext/hpricot_scan/extconf.rb - ext/hpricot_scan/hpricot_common.rl -- ext/hpricot_scan/hpricot_scan.rl - ext/hpricot_scan/hpricot_scan.java.rl +- ext/hpricot_scan/hpricot_scan.rl has_rdoc: true homepage: http://code.whytheluckystiff.net/hpricot/ post_install_message: @@ -79,7 +83,8 @@ rdoc_options: - README - --inline-source require_paths: -- lib/i686-linux +- bin +- lib/universal-darwin9.0 - lib required_ruby_version: !ruby/object:Gem::Requirement requirements: @@ -96,7 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement requirements: [] rubyforge_project: -rubygems_version: 1.1.0 +rubygems_version: 1.2.0 signing_key: specification_version: 2 summary: a swift, liberal HTML parser with a fantastic library diff --git a/vendor/gems/hpricot-0.6/CHANGELOG b/vendor/gems/hpricot-0.6.161/CHANGELOG similarity index 100% rename from vendor/gems/hpricot-0.6/CHANGELOG rename to vendor/gems/hpricot-0.6.161/CHANGELOG diff --git a/vendor/gems/hpricot-0.6/COPYING b/vendor/gems/hpricot-0.6.161/COPYING similarity index 100% rename from vendor/gems/hpricot-0.6/COPYING rename to vendor/gems/hpricot-0.6.161/COPYING diff --git a/vendor/gems/hpricot-0.6/README b/vendor/gems/hpricot-0.6.161/README similarity index 100% rename from vendor/gems/hpricot-0.6/README rename to vendor/gems/hpricot-0.6.161/README diff --git a/vendor/gems/hpricot-0.6/Rakefile b/vendor/gems/hpricot-0.6.161/Rakefile similarity index 65% rename from vendor/gems/hpricot-0.6/Rakefile rename to vendor/gems/hpricot-0.6.161/Rakefile index 9c6cb43..604ab7f 100644 --- a/vendor/gems/hpricot-0.6/Rakefile +++ b/vendor/gems/hpricot-0.6.161/Rakefile @@ -6,19 +6,22 @@ require 'rake/testtask' require 'fileutils' include FileUtils +RbConfig = Config unless defined?(RbConfig) + NAME = "hpricot" REV = `svn info`[/Revision: (\d+)/, 1] rescue nil VERS = ENV['VERSION'] || "0.6" + (REV ? ".#{REV}" : "") PKG = "#{NAME}-#{VERS}" -BIN = "*.{bundle,jar,so,obj,pdb,lib,def,exp}" +BIN = "*.{bundle,jar,so,obj,pdb,lib,def,exp,class}" ARCHLIB = "lib/#{::Config::CONFIG['arch']}" -CLEAN.include ["ext/hpricot_scan/#{BIN}", "lib/**/#{BIN}", 'ext/hpricot_scan/Makefile', - '**/.*.sw?', '*.gem', '.config'] +CLEAN.include ["ext/hpricot_scan/#{BIN}", "ext/fast_xs/#{BIN}", "lib/**/#{BIN}", ARCHLIB, + 'ext/fast_xs/Makefile', 'ext/hpricot_scan/Makefile', + '**/.*.sw?', '*.gem', '.config', 'pkg'] RDOC_OPTS = ['--quiet', '--title', 'The Hpricot Reference', '--main', 'README', '--inline-source'] PKG_FILES = %w(CHANGELOG COPYING README Rakefile) + Dir.glob("{bin,doc,test,lib,extras}/**/*") + Dir.glob("ext/**/*.{h,java,c,rb,rl}") + - %w[ext/hpricot_scan/hpricot_scan.c] # needed because it's generated later + %w[ext/hpricot_scan/hpricot_scan.c ext/hpricot_scan/HpricotScanService.java] # needed because it's generated later SPEC = Gem::Specification.new do |s| s.name = NAME @@ -66,24 +69,40 @@ Rake::GemPackageTask.new(SPEC) do |p| p.gem_spec = SPEC end -extension = "hpricot_scan" -ext = "ext/hpricot_scan" -ext_so = "#{ext}/#{extension}.#{Config::CONFIG['DLEXT']}" -ext_files = FileList[ - "#{ext}/*.c", - "#{ext}/*.h", - "#{ext}/*.rl", - "#{ext}/extconf.rb", - "#{ext}/Makefile", - "lib" -] +['hpricot_scan', 'fast_xs'].each do |extension| + ext = "ext/#{extension}" + ext_so = "#{ext}/#{extension}.#{Config::CONFIG['DLEXT']}" + ext_files = FileList[ + "#{ext}/*.c", + "#{ext}/*.h", + "#{ext}/*.rl", + "#{ext}/extconf.rb", + "#{ext}/Makefile", + "lib" + ] + + desc "Builds just the #{extension} extension" + task extension.to_sym => ["#{ext}/Makefile", ext_so ] + + file "#{ext}/Makefile" => ["#{ext}/extconf.rb"] do + Dir.chdir(ext) do ruby "extconf.rb" end + end + + file ext_so => ext_files do + Dir.chdir(ext) do + sh(RUBY_PLATFORM =~ /win32/ ? 'nmake' : 'make') + end + mkdir_p ARCHLIB + cp ext_so, ARCHLIB + end +end task "lib" do directory "lib" end desc "Compiles the Ruby extension" -task :compile => [:hpricot_scan] do +task :compile => [:hpricot_scan, :fast_xs] do if Dir.glob(File.join(ARCHLIB,"hpricot_scan.*")).length == 0 STDERR.puts "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" STDERR.puts "Gem actually failed to build. Your system is" @@ -94,21 +113,6 @@ task :compile => [:hpricot_scan] do end task :hpricot_scan => [:ragel] -desc "Builds just the #{extension} extension" -task extension.to_sym => ["#{ext}/Makefile", ext_so ] - -file "#{ext}/Makefile" => ["#{ext}/extconf.rb"] do - Dir.chdir(ext) do ruby "extconf.rb" end -end - -file ext_so => ext_files do - Dir.chdir(ext) do - sh(PLATFORM =~ /win32/ ? 'nmake' : 'make') - end - mkdir_p ARCHLIB - cp ext_so, ARCHLIB -end - desc "returns the ragel version" task :ragel_version do @ragel_v = `ragel -v`[/(version )(\S*)/,2].to_f @@ -127,8 +131,8 @@ end ### Win32 Packages ### Win32Spec = SPEC.dup -Win32Spec.platform = Gem::Platform::WIN32 -Win32Spec.files = PKG_FILES + ["#{ARCHLIB}/hpricot_scan.so"] +Win32Spec.platform = Gem::Platform::CURRENT +Win32Spec.files = PKG_FILES + ["#{ARCHLIB}/hpricot_scan.so", "#{ARCHLIB}/fast_xs.so"] Win32Spec.extensions = [] WIN32_PKG_DIR = "#{PKG}-mswin32" @@ -160,19 +164,44 @@ CLEAN.include WIN32_PKG_DIR ### JRuby Packages ### -compile_java = proc do - sh %{javac -source 1.4 -target 1.4 -classpath $JRUBY_HOME/lib/jruby.jar HpricotScanService.java} - sh %{jar cf hpricot_scan.jar HpricotScanService.class} +def java_classpath_arg + # A myriad of ways to discover the JRuby classpath + classpath = begin + require 'java' + # Already running in a JRuby JVM + Java::java.lang.System.getProperty('java.class.path') + rescue LoadError + ENV['JRUBY_PARENT_CLASSPATH'] || ENV['JRUBY_HOME'] && FileList["#{ENV['JRUBY_HOME']}/lib/*.jar"].join(File::PATH_SEPARATOR) + end + classpath ? "-cp #{classpath}" : "" +end + +def compile_java(filename, jarname) + sh %{javac -source 1.4 -target 1.4 #{java_classpath_arg} #{filename}} + sh %{jar cf #{jarname} *.class} end -desc "Compiles the JRuby extension" task :hpricot_scan_java => [:ragel_java] do - Dir.chdir("ext/hpricot_scan", &compile_java) + Dir.chdir "ext/hpricot_scan" do + compile_java("HpricotScanService.java", "hpricot_scan.jar") + end +end + +task :fast_xs_java do + Dir.chdir "ext/fast_xs" do + compile_java("FastXsService.java", "fast_xs.jar") + end +end + +desc "Compiles the JRuby extensions" +task :hpricot_java => [:hpricot_scan_java, :fast_xs_java] do + mkdir_p "#{ARCHLIB}" + %w(hpricot_scan fast_xs).each {|ext| mv "ext/#{ext}/#{ext}.jar", "#{ARCHLIB}"} end JRubySpec = SPEC.dup JRubySpec.platform = 'jruby' -JRubySpec.files = PKG_FILES + ["#{ARCHLIB}/hpricot_scan.jar"] +JRubySpec.files = PKG_FILES + ["#{ARCHLIB}/hpricot_scan.jar", "#{ARCHLIB}/fast_xs.jar"] JRubySpec.extensions = [] JRUBY_PKG_DIR = "#{PKG}-jruby" @@ -183,15 +212,10 @@ file JRUBY_PKG_DIR => [:ragel_java, :package] do mv PKG, JRUBY_PKG_DIR end -desc "Cross-compile the hpricot_scan extension for JRuby" -file "hpricot_scan_jruby" => [JRUBY_PKG_DIR] do - Dir.chdir("#{JRUBY_PKG_DIR}/ext/hpricot_scan", &compile_java) - mv "#{JRUBY_PKG_DIR}/ext/hpricot_scan/hpricot_scan.jar", "#{JRUBY_PKG_DIR}/#{ARCHLIB}" -end - desc "Build the RubyGems package for JRuby" -task :package_jruby => ["hpricot_scan_jruby"] do +task :package_jruby => JRUBY_PKG_DIR do Dir.chdir("#{JRUBY_PKG_DIR}") do + Rake::Task[:hpricot_java].invoke Gem::Builder.new(JRubySpec).build verbose(true) { mv Dir["*.gem"].first, "../pkg/#{JRUBY_PKG_DIR}.gem" diff --git a/vendor/gems/hpricot-0.6.161/ext/fast_xs/FastXsService.java b/vendor/gems/hpricot-0.6.161/ext/fast_xs/FastXsService.java new file mode 100644 index 0000000..c711f71 --- /dev/null +++ b/vendor/gems/hpricot-0.6.161/ext/fast_xs/FastXsService.java @@ -0,0 +1,1018 @@ + +import java.io.IOException; +import java.io.StringWriter; +import java.io.Writer; +import java.util.HashMap; +import java.util.Map; +import java.util.TreeMap; +import org.jruby.Ruby; +import org.jruby.RubyModule; +import org.jruby.runtime.CallbackFactory; +import org.jruby.runtime.builtin.IRubyObject; +import org.jruby.runtime.load.BasicLibraryService; +import org.jruby.util.collections.IntHashMap; + +public class FastXsService implements BasicLibraryService { + + public boolean basicLoad(final Ruby runtime) throws IOException { + RubyModule string = runtime.getModule("String"); + CallbackFactory fact = runtime.callbackFactory(FastXsService.class); + string.defineMethod("fast_xs",fact.getFastSingletonMethod("fast_xs")); + return true; + } + + public static IRubyObject fast_xs(IRubyObject recv) { + String string = recv.convertToString().getUnicodeValue(); + StringWriter writer = new StringWriter ((int)(string.length() * 1.5)); + try { + Entities.HTML40.escape(writer, string); + return recv.getRuntime().newString(writer.toString()); + } catch (IOException e) { + throw recv.getRuntime().newIOErrorFromException(e); + } + } +} + +// From Apache commons-lang, +// http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/java/org/apache/commons/lang/Entities.java?revision=560660&view=markup +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + *

+ * Provides HTML and XML entity utilities. + *

+ * + * @see ISO Entities + * @see HTML 3.2 Character Entities for ISO Latin-1 + * @see HTML 4.0 Character entity references + * @see HTML 4.01 Character References + * @see HTML 4.01 Code positions + * + * @author Alexander Day Chaffee + * @author Gary Gregory + * @since 2.0 + * @version $Id$ + */ +class Entities { + + private static final String[][] BASIC_ARRAY = {{"quot", "34"}, // " - double-quote + {"amp", "38"}, // & - ampersand + {"lt", "60"}, // < - less-than + {"gt", "62"}, // > - greater-than + }; + + private static final String[][] APOS_ARRAY = {{"apos", "39"}, // XML apostrophe + }; + + // package scoped for testing + static final String[][] ISO8859_1_ARRAY = {{"nbsp", "160"}, // non-breaking space + {"iexcl", "161"}, // inverted exclamation mark + {"cent", "162"}, // cent sign + {"pound", "163"}, // pound sign + {"curren", "164"}, // currency sign + {"yen", "165"}, // yen sign = yuan sign + {"brvbar", "166"}, // broken bar = broken vertical bar + {"sect", "167"}, // section sign + {"uml", "168"}, // diaeresis = spacing diaeresis + {"copy", "169"}, // © - copyright sign + {"ordf", "170"}, // feminine ordinal indicator + {"laquo", "171"}, // left-pointing double angle quotation mark = left pointing guillemet + {"not", "172"}, // not sign + {"shy", "173"}, // soft hyphen = discretionary hyphen + {"reg", "174"}, // ® - registered trademark sign + {"macr", "175"}, // macron = spacing macron = overline = APL overbar + {"deg", "176"}, // degree sign + {"plusmn", "177"}, // plus-minus sign = plus-or-minus sign + {"sup2", "178"}, // superscript two = superscript digit two = squared + {"sup3", "179"}, // superscript three = superscript digit three = cubed + {"acute", "180"}, // acute accent = spacing acute + {"micro", "181"}, // micro sign + {"para", "182"}, // pilcrow sign = paragraph sign + {"middot", "183"}, // middle dot = Georgian comma = Greek middle dot + {"cedil", "184"}, // cedilla = spacing cedilla + {"sup1", "185"}, // superscript one = superscript digit one + {"ordm", "186"}, // masculine ordinal indicator + {"raquo", "187"}, // right-pointing double angle quotation mark = right pointing guillemet + {"frac14", "188"}, // vulgar fraction one quarter = fraction one quarter + {"frac12", "189"}, // vulgar fraction one half = fraction one half + {"frac34", "190"}, // vulgar fraction three quarters = fraction three quarters + {"iquest", "191"}, // inverted question mark = turned question mark + {"Agrave", "192"}, // À - uppercase A, grave accent + {"Aacute", "193"}, // Á - uppercase A, acute accent + {"Acirc", "194"}, // Â - uppercase A, circumflex accent + {"Atilde", "195"}, // Ã - uppercase A, tilde + {"Auml", "196"}, // Ä - uppercase A, umlaut + {"Aring", "197"}, // Å - uppercase A, ring + {"AElig", "198"}, // Æ - uppercase AE + {"Ccedil", "199"}, // Ç - uppercase C, cedilla + {"Egrave", "200"}, // È - uppercase E, grave accent + {"Eacute", "201"}, // É - uppercase E, acute accent + {"Ecirc", "202"}, // Ê - uppercase E, circumflex accent + {"Euml", "203"}, // Ë - uppercase E, umlaut + {"Igrave", "204"}, // Ì - uppercase I, grave accent + {"Iacute", "205"}, // Í - uppercase I, acute accent + {"Icirc", "206"}, // Î - uppercase I, circumflex accent + {"Iuml", "207"}, // Ï - uppercase I, umlaut + {"ETH", "208"}, // Ð - uppercase Eth, Icelandic + {"Ntilde", "209"}, // Ñ - uppercase N, tilde + {"Ograve", "210"}, // Ò - uppercase O, grave accent + {"Oacute", "211"}, // Ó - uppercase O, acute accent + {"Ocirc", "212"}, // Ô - uppercase O, circumflex accent + {"Otilde", "213"}, // Õ - uppercase O, tilde + {"Ouml", "214"}, // Ö - uppercase O, umlaut + {"times", "215"}, // multiplication sign + {"Oslash", "216"}, // Ø - uppercase O, slash + {"Ugrave", "217"}, // Ù - uppercase U, grave accent + {"Uacute", "218"}, // Ú - uppercase U, acute accent + {"Ucirc", "219"}, // Û - uppercase U, circumflex accent + {"Uuml", "220"}, // Ü - uppercase U, umlaut + {"Yacute", "221"}, // Ý - uppercase Y, acute accent + {"THORN", "222"}, // Þ - uppercase THORN, Icelandic + {"szlig", "223"}, // ß - lowercase sharps, German + {"agrave", "224"}, // à - lowercase a, grave accent + {"aacute", "225"}, // á - lowercase a, acute accent + {"acirc", "226"}, // â - lowercase a, circumflex accent + {"atilde", "227"}, // ã - lowercase a, tilde + {"auml", "228"}, // ä - lowercase a, umlaut + {"aring", "229"}, // å - lowercase a, ring + {"aelig", "230"}, // æ - lowercase ae + {"ccedil", "231"}, // ç - lowercase c, cedilla + {"egrave", "232"}, // è - lowercase e, grave accent + {"eacute", "233"}, // é - lowercase e, acute accent + {"ecirc", "234"}, // ê - lowercase e, circumflex accent + {"euml", "235"}, // ë - lowercase e, umlaut + {"igrave", "236"}, // ì - lowercase i, grave accent + {"iacute", "237"}, // í - lowercase i, acute accent + {"icirc", "238"}, // î - lowercase i, circumflex accent + {"iuml", "239"}, // ï - lowercase i, umlaut + {"eth", "240"}, // ð - lowercase eth, Icelandic + {"ntilde", "241"}, // ñ - lowercase n, tilde + {"ograve", "242"}, // ò - lowercase o, grave accent + {"oacute", "243"}, // ó - lowercase o, acute accent + {"ocirc", "244"}, // ô - lowercase o, circumflex accent + {"otilde", "245"}, // õ - lowercase o, tilde + {"ouml", "246"}, // ö - lowercase o, umlaut + {"divide", "247"}, // division sign + {"oslash", "248"}, // ø - lowercase o, slash + {"ugrave", "249"}, // ù - lowercase u, grave accent + {"uacute", "250"}, // ú - lowercase u, acute accent + {"ucirc", "251"}, // û - lowercase u, circumflex accent + {"uuml", "252"}, // ü - lowercase u, umlaut + {"yacute", "253"}, // ý - lowercase y, acute accent + {"thorn", "254"}, // þ - lowercase thorn, Icelandic + {"yuml", "255"}, // ÿ - lowercase y, umlaut + }; + + // http://www.w3.org/TR/REC-html40/sgml/entities.html + // package scoped for testing + static final String[][] HTML40_ARRAY = { + // + {"fnof", "402"}, // latin small f with hook = function= florin, U+0192 ISOtech --> + // + {"Alpha", "913"}, // greek capital letter alpha, U+0391 --> + {"Beta", "914"}, // greek capital letter beta, U+0392 --> + {"Gamma", "915"}, // greek capital letter gamma,U+0393 ISOgrk3 --> + {"Delta", "916"}, // greek capital letter delta,U+0394 ISOgrk3 --> + {"Epsilon", "917"}, // greek capital letter epsilon, U+0395 --> + {"Zeta", "918"}, // greek capital letter zeta, U+0396 --> + {"Eta", "919"}, // greek capital letter eta, U+0397 --> + {"Theta", "920"}, // greek capital letter theta,U+0398 ISOgrk3 --> + {"Iota", "921"}, // greek capital letter iota, U+0399 --> + {"Kappa", "922"}, // greek capital letter kappa, U+039A --> + {"Lambda", "923"}, // greek capital letter lambda,U+039B ISOgrk3 --> + {"Mu", "924"}, // greek capital letter mu, U+039C --> + {"Nu", "925"}, // greek capital letter nu, U+039D --> + {"Xi", "926"}, // greek capital letter xi, U+039E ISOgrk3 --> + {"Omicron", "927"}, // greek capital letter omicron, U+039F --> + {"Pi", "928"}, // greek capital letter pi, U+03A0 ISOgrk3 --> + {"Rho", "929"}, // greek capital letter rho, U+03A1 --> + // + {"Sigma", "931"}, // greek capital letter sigma,U+03A3 ISOgrk3 --> + {"Tau", "932"}, // greek capital letter tau, U+03A4 --> + {"Upsilon", "933"}, // greek capital letter upsilon,U+03A5 ISOgrk3 --> + {"Phi", "934"}, // greek capital letter phi,U+03A6 ISOgrk3 --> + {"Chi", "935"}, // greek capital letter chi, U+03A7 --> + {"Psi", "936"}, // greek capital letter psi,U+03A8 ISOgrk3 --> + {"Omega", "937"}, // greek capital letter omega,U+03A9 ISOgrk3 --> + {"alpha", "945"}, // greek small letter alpha,U+03B1 ISOgrk3 --> + {"beta", "946"}, // greek small letter beta, U+03B2 ISOgrk3 --> + {"gamma", "947"}, // greek small letter gamma,U+03B3 ISOgrk3 --> + {"delta", "948"}, // greek small letter delta,U+03B4 ISOgrk3 --> + {"epsilon", "949"}, // greek small letter epsilon,U+03B5 ISOgrk3 --> + {"zeta", "950"}, // greek small letter zeta, U+03B6 ISOgrk3 --> + {"eta", "951"}, // greek small letter eta, U+03B7 ISOgrk3 --> + {"theta", "952"}, // greek small letter theta,U+03B8 ISOgrk3 --> + {"iota", "953"}, // greek small letter iota, U+03B9 ISOgrk3 --> + {"kappa", "954"}, // greek small letter kappa,U+03BA ISOgrk3 --> + {"lambda", "955"}, // greek small letter lambda,U+03BB ISOgrk3 --> + {"mu", "956"}, // greek small letter mu, U+03BC ISOgrk3 --> + {"nu", "957"}, // greek small letter nu, U+03BD ISOgrk3 --> + {"xi", "958"}, // greek small letter xi, U+03BE ISOgrk3 --> + {"omicron", "959"}, // greek small letter omicron, U+03BF NEW --> + {"pi", "960"}, // greek small letter pi, U+03C0 ISOgrk3 --> + {"rho", "961"}, // greek small letter rho, U+03C1 ISOgrk3 --> + {"sigmaf", "962"}, // greek small letter final sigma,U+03C2 ISOgrk3 --> + {"sigma", "963"}, // greek small letter sigma,U+03C3 ISOgrk3 --> + {"tau", "964"}, // greek small letter tau, U+03C4 ISOgrk3 --> + {"upsilon", "965"}, // greek small letter upsilon,U+03C5 ISOgrk3 --> + {"phi", "966"}, // greek small letter phi, U+03C6 ISOgrk3 --> + {"chi", "967"}, // greek small letter chi, U+03C7 ISOgrk3 --> + {"psi", "968"}, // greek small letter psi, U+03C8 ISOgrk3 --> + {"omega", "969"}, // greek small letter omega,U+03C9 ISOgrk3 --> + {"thetasym", "977"}, // greek small letter theta symbol,U+03D1 NEW --> + {"upsih", "978"}, // greek upsilon with hook symbol,U+03D2 NEW --> + {"piv", "982"}, // greek pi symbol, U+03D6 ISOgrk3 --> + // + {"bull", "8226"}, // bullet = black small circle,U+2022 ISOpub --> + // + {"hellip", "8230"}, // horizontal ellipsis = three dot leader,U+2026 ISOpub --> + {"prime", "8242"}, // prime = minutes = feet, U+2032 ISOtech --> + {"Prime", "8243"}, // double prime = seconds = inches,U+2033 ISOtech --> + {"oline", "8254"}, // overline = spacing overscore,U+203E NEW --> + {"frasl", "8260"}, // fraction slash, U+2044 NEW --> + // + {"weierp", "8472"}, // script capital P = power set= Weierstrass p, U+2118 ISOamso --> + {"image", "8465"}, // blackletter capital I = imaginary part,U+2111 ISOamso --> + {"real", "8476"}, // blackletter capital R = real part symbol,U+211C ISOamso --> + {"trade", "8482"}, // trade mark sign, U+2122 ISOnum --> + {"alefsym", "8501"}, // alef symbol = first transfinite cardinal,U+2135 NEW --> + // + // + {"larr", "8592"}, // leftwards arrow, U+2190 ISOnum --> + {"uarr", "8593"}, // upwards arrow, U+2191 ISOnum--> + {"rarr", "8594"}, // rightwards arrow, U+2192 ISOnum --> + {"darr", "8595"}, // downwards arrow, U+2193 ISOnum --> + {"harr", "8596"}, // left right arrow, U+2194 ISOamsa --> + {"crarr", "8629"}, // downwards arrow with corner leftwards= carriage return, U+21B5 NEW --> + {"lArr", "8656"}, // leftwards double arrow, U+21D0 ISOtech --> + // + {"uArr", "8657"}, // upwards double arrow, U+21D1 ISOamsa --> + {"rArr", "8658"}, // rightwards double arrow,U+21D2 ISOtech --> + // + {"dArr", "8659"}, // downwards double arrow, U+21D3 ISOamsa --> + {"hArr", "8660"}, // left right double arrow,U+21D4 ISOamsa --> + // + {"forall", "8704"}, // for all, U+2200 ISOtech --> + {"part", "8706"}, // partial differential, U+2202 ISOtech --> + {"exist", "8707"}, // there exists, U+2203 ISOtech --> + {"empty", "8709"}, // empty set = null set = diameter,U+2205 ISOamso --> + {"nabla", "8711"}, // nabla = backward difference,U+2207 ISOtech --> + {"isin", "8712"}, // element of, U+2208 ISOtech --> + {"notin", "8713"}, // not an element of, U+2209 ISOtech --> + {"ni", "8715"}, // contains as member, U+220B ISOtech --> + // + {"prod", "8719"}, // n-ary product = product sign,U+220F ISOamsb --> + // + {"sum", "8721"}, // n-ary summation, U+2211 ISOamsb --> + // + {"minus", "8722"}, // minus sign, U+2212 ISOtech --> + {"lowast", "8727"}, // asterisk operator, U+2217 ISOtech --> + {"radic", "8730"}, // square root = radical sign,U+221A ISOtech --> + {"prop", "8733"}, // proportional to, U+221D ISOtech --> + {"infin", "8734"}, // infinity, U+221E ISOtech --> + {"ang", "8736"}, // angle, U+2220 ISOamso --> + {"and", "8743"}, // logical and = wedge, U+2227 ISOtech --> + {"or", "8744"}, // logical or = vee, U+2228 ISOtech --> + {"cap", "8745"}, // intersection = cap, U+2229 ISOtech --> + {"cup", "8746"}, // union = cup, U+222A ISOtech --> + {"int", "8747"}, // integral, U+222B ISOtech --> + {"there4", "8756"}, // therefore, U+2234 ISOtech --> + {"sim", "8764"}, // tilde operator = varies with = similar to,U+223C ISOtech --> + // + {"cong", "8773"}, // approximately equal to, U+2245 ISOtech --> + {"asymp", "8776"}, // almost equal to = asymptotic to,U+2248 ISOamsr --> + {"ne", "8800"}, // not equal to, U+2260 ISOtech --> + {"equiv", "8801"}, // identical to, U+2261 ISOtech --> + {"le", "8804"}, // less-than or equal to, U+2264 ISOtech --> + {"ge", "8805"}, // greater-than or equal to,U+2265 ISOtech --> + {"sub", "8834"}, // subset of, U+2282 ISOtech --> + {"sup", "8835"}, // superset of, U+2283 ISOtech --> + // + {"sube", "8838"}, // subset of or equal to, U+2286 ISOtech --> + {"supe", "8839"}, // superset of or equal to,U+2287 ISOtech --> + {"oplus", "8853"}, // circled plus = direct sum,U+2295 ISOamsb --> + {"otimes", "8855"}, // circled times = vector product,U+2297 ISOamsb --> + {"perp", "8869"}, // up tack = orthogonal to = perpendicular,U+22A5 ISOtech --> + {"sdot", "8901"}, // dot operator, U+22C5 ISOamsb --> + // + // + {"lceil", "8968"}, // left ceiling = apl upstile,U+2308 ISOamsc --> + {"rceil", "8969"}, // right ceiling, U+2309 ISOamsc --> + {"lfloor", "8970"}, // left floor = apl downstile,U+230A ISOamsc --> + {"rfloor", "8971"}, // right floor, U+230B ISOamsc --> + {"lang", "9001"}, // left-pointing angle bracket = bra,U+2329 ISOtech --> + // + {"rang", "9002"}, // right-pointing angle bracket = ket,U+232A ISOtech --> + // + // + {"loz", "9674"}, // lozenge, U+25CA ISOpub --> + // + {"spades", "9824"}, // black spade suit, U+2660 ISOpub --> + // + {"clubs", "9827"}, // black club suit = shamrock,U+2663 ISOpub --> + {"hearts", "9829"}, // black heart suit = valentine,U+2665 ISOpub --> + {"diams", "9830"}, // black diamond suit, U+2666 ISOpub --> + + // + {"OElig", "338"}, // -- latin capital ligature OE,U+0152 ISOlat2 --> + {"oelig", "339"}, // -- latin small ligature oe, U+0153 ISOlat2 --> + // + {"Scaron", "352"}, // -- latin capital letter S with caron,U+0160 ISOlat2 --> + {"scaron", "353"}, // -- latin small letter s with caron,U+0161 ISOlat2 --> + {"Yuml", "376"}, // -- latin capital letter Y with diaeresis,U+0178 ISOlat2 --> + // + {"circ", "710"}, // -- modifier letter circumflex accent,U+02C6 ISOpub --> + {"tilde", "732"}, // small tilde, U+02DC ISOdia --> + // + {"ensp", "8194"}, // en space, U+2002 ISOpub --> + {"emsp", "8195"}, // em space, U+2003 ISOpub --> + {"thinsp", "8201"}, // thin space, U+2009 ISOpub --> + {"zwnj", "8204"}, // zero width non-joiner,U+200C NEW RFC 2070 --> + {"zwj", "8205"}, // zero width joiner, U+200D NEW RFC 2070 --> + {"lrm", "8206"}, // left-to-right mark, U+200E NEW RFC 2070 --> + {"rlm", "8207"}, // right-to-left mark, U+200F NEW RFC 2070 --> + {"ndash", "8211"}, // en dash, U+2013 ISOpub --> + {"mdash", "8212"}, // em dash, U+2014 ISOpub --> + {"lsquo", "8216"}, // left single quotation mark,U+2018 ISOnum --> + {"rsquo", "8217"}, // right single quotation mark,U+2019 ISOnum --> + {"sbquo", "8218"}, // single low-9 quotation mark, U+201A NEW --> + {"ldquo", "8220"}, // left double quotation mark,U+201C ISOnum --> + {"rdquo", "8221"}, // right double quotation mark,U+201D ISOnum --> + {"bdquo", "8222"}, // double low-9 quotation mark, U+201E NEW --> + {"dagger", "8224"}, // dagger, U+2020 ISOpub --> + {"Dagger", "8225"}, // double dagger, U+2021 ISOpub --> + {"permil", "8240"}, // per mille sign, U+2030 ISOtech --> + {"lsaquo", "8249"}, // single left-pointing angle quotation mark,U+2039 ISO proposed --> + // + {"rsaquo", "8250"}, // single right-pointing angle quotation mark,U+203A ISO proposed --> + // + {"euro", "8364"}, // -- euro sign, U+20AC NEW --> + }; + + /** + *

+ * The set of entities supported by standard XML. + *

+ */ + public static final Entities XML; + + /** + *

+ * The set of entities supported by HTML 3.2. + *

+ */ + public static final Entities HTML32; + + /** + *

+ * The set of entities supported by HTML 4.0. + *

+ */ + public static final Entities HTML40; + + static { + XML = new Entities(); + XML.addEntities(BASIC_ARRAY); + XML.addEntities(APOS_ARRAY); + } + + static { + HTML32 = new Entities(); + HTML32.addEntities(BASIC_ARRAY); + HTML32.addEntities(ISO8859_1_ARRAY); + } + + static { + HTML40 = new Entities(); + fillWithHtml40Entities(HTML40); + } + + /** + *

+ * Fills the specified entities instance with HTML 40 entities. + *

+ * + * @param entities + * the instance to be filled. + */ + static void fillWithHtml40Entities(Entities entities) { + entities.addEntities(BASIC_ARRAY); + entities.addEntities(ISO8859_1_ARRAY); + entities.addEntities(HTML40_ARRAY); + } + + static interface EntityMap { + /** + *

+ * Add an entry to this entity map. + *

+ * + * @param name + * the entity name + * @param value + * the entity value + */ + void add(String name, int value); + + /** + *

+ * Returns the name of the entity identified by the specified value. + *

+ * + * @param value + * the value to locate + * @return entity name associated with the specified value + */ + String name(int value); + + /** + *

+ * Returns the value of the entity identified by the specified name. + *

+ * + * @param name + * the name to locate + * @return entity value associated with the specified name + */ + int value(String name); + } + + static class PrimitiveEntityMap implements EntityMap { + private Map mapNameToValue = new HashMap(); + + private IntHashMap mapValueToName = new IntHashMap(); + + /** + * {@inheritDoc} + */ + public void add(String name, int value) { + mapNameToValue.put(name, new Integer(value)); + mapValueToName.put(value, name); + } + + /** + * {@inheritDoc} + */ + public String name(int value) { + return (String) mapValueToName.get(value); + } + + /** + * {@inheritDoc} + */ + public int value(String name) { + Object value = mapNameToValue.get(name); + if (value == null) { + return -1; + } + return ((Integer) value).intValue(); + } + } + + static abstract class MapIntMap implements Entities.EntityMap { + protected Map mapNameToValue; + + protected Map mapValueToName; + + /** + * {@inheritDoc} + */ + public void add(String name, int value) { + mapNameToValue.put(name, new Integer(value)); + mapValueToName.put(new Integer(value), name); + } + + /** + * {@inheritDoc} + */ + public String name(int value) { + return (String) mapValueToName.get(new Integer(value)); + } + + /** + * {@inheritDoc} + */ + public int value(String name) { + Object value = mapNameToValue.get(name); + if (value == null) { + return -1; + } + return ((Integer) value).intValue(); + } + } + + static class HashEntityMap extends MapIntMap { + /** + * Constructs a new instance of HashEntityMap. + */ + public HashEntityMap() { + mapNameToValue = new HashMap(); + mapValueToName = new HashMap(); + } + } + + static class TreeEntityMap extends MapIntMap { + /** + * Constructs a new instance of TreeEntityMap. + */ + public TreeEntityMap() { + mapNameToValue = new TreeMap(); + mapValueToName = new TreeMap(); + } + } + + static class LookupEntityMap extends PrimitiveEntityMap { + private String[] lookupTable; + + private int LOOKUP_TABLE_SIZE = 256; + + /** + * {@inheritDoc} + */ + public String name(int value) { + if (value < LOOKUP_TABLE_SIZE) { + return lookupTable()[value]; + } + return super.name(value); + } + + /** + *

+ * Returns the lookup table for this entity map. The lookup table is created if it has not been previously. + *

+ * + * @return the lookup table + */ + private String[] lookupTable() { + if (lookupTable == null) { + createLookupTable(); + } + return lookupTable; + } + + /** + *

+ * Creates an entity lookup table of LOOKUP_TABLE_SIZE elements, initialized with entity names. + *

+ */ + private void createLookupTable() { + lookupTable = new String[LOOKUP_TABLE_SIZE]; + for (int i = 0; i < LOOKUP_TABLE_SIZE; ++i) { + lookupTable[i] = super.name(i); + } + } + } + + static class ArrayEntityMap implements EntityMap { + protected int growBy = 100; + + protected int size = 0; + + protected String[] names; + + protected int[] values; + + /** + * Constructs a new instance of ArrayEntityMap. + */ + public ArrayEntityMap() { + names = new String[growBy]; + values = new int[growBy]; + } + + /** + * Constructs a new instance of ArrayEntityMap specifying the size by which the array should + * grow. + * + * @param growBy + * array will be initialized to and will grow by this amount + */ + public ArrayEntityMap(int growBy) { + this.growBy = growBy; + names = new String[growBy]; + values = new int[growBy]; + } + + /** + * {@inheritDoc} + */ + public void add(String name, int value) { + ensureCapacity(size + 1); + names[size] = name; + values[size] = value; + size++; + } + + /** + * Verifies the capacity of the entity array, adjusting the size if necessary. + * + * @param capacity + * size the array should be + */ + protected void ensureCapacity(int capacity) { + if (capacity > names.length) { + int newSize = Math.max(capacity, size + growBy); + String[] newNames = new String[newSize]; + System.arraycopy(names, 0, newNames, 0, size); + names = newNames; + int[] newValues = new int[newSize]; + System.arraycopy(values, 0, newValues, 0, size); + values = newValues; + } + } + + /** + * {@inheritDoc} + */ + public String name(int value) { + for (int i = 0; i < size; ++i) { + if (values[i] == value) { + return names[i]; + } + } + return null; + } + + /** + * {@inheritDoc} + */ + public int value(String name) { + for (int i = 0; i < size; ++i) { + if (names[i].equals(name)) { + return values[i]; + } + } + return -1; + } + } + + static class BinaryEntityMap extends ArrayEntityMap { + + /** + * Constructs a new instance of BinaryEntityMap. + */ + public BinaryEntityMap() { + super(); + } + + /** + * Constructs a new instance of ArrayEntityMap specifying the size by which the underlying array + * should grow. + * + * @param growBy + * array will be initialized to and will grow by this amount + */ + public BinaryEntityMap(int growBy) { + super(growBy); + } + + /** + * Performs a binary search of the entity array for the specified key. This method is based on code in + * {@link java.util.Arrays}. + * + * @param key + * the key to be found + * @return the index of the entity array matching the specified key + */ + private int binarySearch(int key) { + int low = 0; + int high = size - 1; + + while (low <= high) { + int mid = (low + high) >> 1; + int midVal = values[mid]; + + if (midVal < key) { + low = mid + 1; + } else if (midVal > key) { + high = mid - 1; + } else { + return mid; // key found + } + } + return -(low + 1); // key not found. + } + + /** + * {@inheritDoc} + */ + public void add(String name, int value) { + ensureCapacity(size + 1); + int insertAt = binarySearch(value); + if (insertAt > 0) { + return; // note: this means you can't insert the same value twice + } + insertAt = -(insertAt + 1); // binarySearch returns it negative and off-by-one + System.arraycopy(values, insertAt, values, insertAt + 1, size - insertAt); + values[insertAt] = value; + System.arraycopy(names, insertAt, names, insertAt + 1, size - insertAt); + names[insertAt] = name; + size++; + } + + /** + * {@inheritDoc} + */ + public String name(int value) { + int index = binarySearch(value); + if (index < 0) { + return null; + } + return names[index]; + } + } + + // package scoped for testing + EntityMap map = new Entities.LookupEntityMap(); + + /** + *

+ * Adds entities to this entity. + *

+ * + * @param entityArray + * array of entities to be added + */ + public void addEntities(String[][] entityArray) { + for (int i = 0; i < entityArray.length; ++i) { + addEntity(entityArray[i][0], Integer.parseInt(entityArray[i][1])); + } + } + + /** + *

+ * Add an entity to this entity. + *

+ * + * @param name + * name of the entity + * @param value + * vale of the entity + */ + public void addEntity(String name, int value) { + map.add(name, value); + } + + /** + *

+ * Returns the name of the entity identified by the specified value. + *

+ * + * @param value + * the value to locate + * @return entity name associated with the specified value + */ + public String entityName(int value) { + return map.name(value); + } + + /** + *

+ * Returns the value of the entity identified by the specified name. + *

+ * + * @param name + * the name to locate + * @return entity value associated with the specified name + */ + public int entityValue(String name) { + return map.value(name); + } + + /** + *

+ * Escapes the characters in a String. + *

+ * + *

+ * For example, if you have called addEntity("foo", 0xA1), escape("\u00A1") will return + * "&foo;" + *

+ * + * @param str + * The String to escape. + * @return A new escaped String. + */ + public String escape(String str) { + StringWriter stringWriter = createStringWriter(str); + try { + this.escape(stringWriter, str); + } catch (IOException e) { + // This should never happen because ALL the StringWriter methods called by #escape(Writer, String) do not + // throw IOExceptions. + throw new RuntimeException(e); + } + return stringWriter.toString(); + } + + /** + *

+ * Escapes the characters in the String passed and writes the result to the Writer + * passed. + *

+ * + * @param writer + * The Writer to write the results of the escaping to. Assumed to be a non-null value. + * @param str + * The String to escape. Assumed to be a non-null value. + * @throws IOException + * when Writer passed throws the exception from calls to the {@link Writer#write(int)} + * methods. + * + * @see #escape(String) + * @see Writer + */ + public void escape(Writer writer, String str) throws IOException { + int len = str.length(); + for (int i = 0; i < len; i++) { + char c = str.charAt(i); + String entityName = this.entityName(c); + if (entityName == null) { + if (c > 0x7F) { + writer.write("&#"); + writer.write(Integer.toString(c, 10)); + writer.write(';'); + } else { + writer.write(c); + } + } else { + writer.write('&'); + writer.write(entityName); + writer.write(';'); + } + } + } + + /** + *

+ * Unescapes the entities in a String. + *

+ * + *

+ * For example, if you have called addEntity("foo", 0xA1), unescape("&foo;") will return + * "\u00A1" + *

+ * + * @param str + * The String to escape. + * @return A new escaped String. + */ + public String unescape(String str) { + int firstAmp = str.indexOf('&'); + if (firstAmp < 0) { + return str; + } else { + StringWriter stringWriter = createStringWriter(str); + try { + this.doUnescape(stringWriter, str, firstAmp); + } catch (IOException e) { + // This should never happen because ALL the StringWriter methods called by #escape(Writer, String) + // do not throw IOExceptions. + throw new RuntimeException(e); + } + return stringWriter.toString(); + } + } + + /** + * Make the StringWriter 10% larger than the source String to avoid growing the writer + * + * @param str The source string + * @return A newly created StringWriter + */ + private StringWriter createStringWriter(String str) { + return new StringWriter((int) (str.length() + (str.length() * 0.1))); + } + + /** + *

+ * Unescapes the escaped entities in the String passed and writes the result to the + * Writer passed. + *

+ * + * @param writer + * The Writer to write the results to; assumed to be non-null. + * @param str + * The source String to unescape; assumed to be non-null. + * @throws IOException + * when Writer passed throws the exception from calls to the {@link Writer#write(int)} + * methods. + * + * @see #escape(String) + * @see Writer + */ + public void unescape(Writer writer, String str) throws IOException { + int firstAmp = str.indexOf('&'); + if (firstAmp < 0) { + writer.write(str); + return; + } else { + doUnescape(writer, str, firstAmp); + } + } + + /** + * Underlying unescape method that allows the optimisation of not starting from the 0 index again. + * + * @param writer + * The Writer to write the results to; assumed to be non-null. + * @param str + * The source String to unescape; assumed to be non-null. + * @param firstAmp + * The int index of the first ampersand in the source String. + * @throws IOException + * when Writer passed throws the exception from calls to the {@link Writer#write(int)} + * methods. + */ + private void doUnescape(Writer writer, String str, int firstAmp) throws IOException { + writer.write(str, 0, firstAmp); + int len = str.length(); + for (int i = firstAmp; i < len; i++) { + char c = str.charAt(i); + if (c == '&') { + int nextIdx = i + 1; + int semiColonIdx = str.indexOf(';', nextIdx); + if (semiColonIdx == -1) { + writer.write(c); + continue; + } + int amphersandIdx = str.indexOf('&', i + 1); + if (amphersandIdx != -1 && amphersandIdx < semiColonIdx) { + // Then the text looks like &...&...; + writer.write(c); + continue; + } + String entityContent = str.substring(nextIdx, semiColonIdx); + int entityValue = -1; + int entityContentLen = entityContent.length(); + if (entityContentLen > 0) { + if (entityContent.charAt(0) == '#') { // escaped value content is an integer (decimal or + // hexidecimal) + if (entityContentLen > 1) { + char isHexChar = entityContent.charAt(1); + try { + switch (isHexChar) { + case 'X' : + case 'x' : { + entityValue = Integer.parseInt(entityContent.substring(2), 16); + break; + } + default : { + entityValue = Integer.parseInt(entityContent.substring(1), 10); + } + } + if (entityValue > 0xFFFF) { + entityValue = -1; + } + } catch (NumberFormatException e) { + entityValue = -1; + } + } + } else { // escaped value content is an entity name + entityValue = this.entityValue(entityContent); + } + } + + if (entityValue == -1) { + writer.write('&'); + writer.write(entityContent); + writer.write(';'); + } else { + writer.write(entityValue); + } + i = semiColonIdx; // move index up to the semi-colon + } else { + writer.write(c); + } + } + } + +} diff --git a/vendor/gems/hpricot-0.6.161/ext/fast_xs/extconf.rb b/vendor/gems/hpricot-0.6.161/ext/fast_xs/extconf.rb new file mode 100644 index 0000000..fad371c --- /dev/null +++ b/vendor/gems/hpricot-0.6.161/ext/fast_xs/extconf.rb @@ -0,0 +1,4 @@ +require 'mkmf' +have_header('stdio.h') or exit +dir_config('fast_xs') +create_makefile('fast_xs') diff --git a/vendor/gems/hpricot-0.6.161/ext/fast_xs/fast_xs.c b/vendor/gems/hpricot-0.6.161/ext/fast_xs/fast_xs.c new file mode 100644 index 0000000..171094f --- /dev/null +++ b/vendor/gems/hpricot-0.6.161/ext/fast_xs/fast_xs.c @@ -0,0 +1,194 @@ +#define VERSION "0.1" + +#include +#include +/* #include */ + +static ID unpack_id; +static VALUE U_fmt, C_fmt; + +/* give GCC hints for better branch prediction + * (we layout branches so that ASCII characters are handled faster) */ +#if defined(__GNUC__) && (__GNUC__ >= 3) +# define likely(x) __builtin_expect (!!(x), 1) +# define unlikely(x) __builtin_expect (!!(x), 0) +#else +# define unlikely(x) (x) +# define likely(x) (x) +#endif + +/* pass-through certain characters for CP-1252 */ +#define p(x) (x-128) + +static const int cp_1252[] = { + 8364, /* 128 => 8364, euro sign */ + p(129), /* 129 => 129, pass-through */ + 8218, /* 130 => 8218, single low-9 quotation mark */ + 402, /* 131 => 402, latin small letter f with hook */ + 8222, /* 132 => 8222, double low-9 quotation mark */ + 8230, /* 133 => 8230, horizontal ellipsis */ + 8224, /* 134 => 8224, dagger */ + 8225, /* 135 => 8225, double dagger */ + 710, /* 136 => 710, modifier letter circumflex accent */ + 8240, /* 137 => 8240, per mille sign */ + 352, /* 138 => 352, latin capital letter s with caron */ + 8249, /* 139 => 8249, single left-pointing angle quotation mark */ + 338, /* 140 => 338, latin capital ligature oe */ + p(141), /* 141 => 141, pass-through */ + 381, /* 142 => 381, latin capital letter z with caron */ + p(143), /* 143 => 143, pass-through */ + p(144), /* 144 => 144, pass-through */ + 8216, /* 145 => 8216, left single quotation mark */ + 8217, /* 146 => 8217, right single quotation mark */ + 8220, /* 147 => 8220, left double quotation mark */ + 8221, /* 148 => 8221, right double quotation mark */ + 8226, /* 149 => 8226, bullet */ + 8211, /* 150 => 8211, en dash */ + 8212, /* 151 => 8212, em dash */ + 732, /* 152 => 732, small tilde */ + 8482, /* 153 => 8482, trade mark sign */ + 353, /* 154 => 353, latin small letter s with caron */ + 8250, /* 155 => 8250, single right-pointing angle quotation mark */ + 339, /* 156 => 339, latin small ligature oe */ + p(157), /* 157 => 157, pass-through */ + 382, /* 158 => 382, latin small letter z with caron */ + 376 /* 159 => 376} latin capital letter y with diaeresis */ +}; + +#define VALID_VALUE(n) \ + (n >= 0x20 && n <= 0xD7FF) || \ + (n >= 0xE000 && n <= 0xFFFD) || \ + (n >= 0x10000 && n <= 0x10FFFF) + +#define CP_1252_ESCAPE(n) do { \ + if (n >= 128 && n <= 159) \ + n = cp_1252[n - 128]; \ + } while(0) + +#define return_const_len(x) do { \ + memcpy(buf, x, sizeof(x) - 1); \ + return (sizeof(x) - 1); \ +} while (0) + +static inline size_t bytes_for(int n) +{ + if (n < 1000) + return sizeof("ϧ") - 1; + if (n < 10000) + return sizeof("✏") - 1; + if (n < 100000) + return sizeof("𘚟") - 1; + if (n < 1000000) + return sizeof("󴈿") - 1; + /* if (n < 10000000), we won't have cases above 0x10FFFF */ + return sizeof("�") - 1; +} + +static long escape(char *buf, int n) +{ + /* handle ASCII first */ + if (likely(n < 128)) { + if (likely(n >= 0x20 || n == 0x9 || n == 0xA || n == 0xD)) { + if (unlikely(n == 34)) + return_const_len("""); + if (unlikely(n == 38)) + return_const_len("&"); + if (unlikely(n == 60)) + return_const_len("<"); + if (unlikely(n == 62)) + return_const_len(">"); + buf[0] = (char)n; + return 1; + } + + buf[0] = '*'; + return 1; + } + + CP_1252_ESCAPE(n); + + if (VALID_VALUE(n)) { + /* return snprintf(buf, sizeof("􏿿"), "&#%i;", n); */ + extern const char ruby_digitmap[]; + int rv = 3; /* &#; */ + buf += bytes_for(n); + *--buf = ';'; + do { + *--buf = ruby_digitmap[(int)(n % 10)]; + ++rv; + } while (n /= 10); + *--buf = '#'; + *--buf = '&'; + return rv; + } + buf[0] = '*'; + return 1; +} + +#undef return_const_len + +static long escaped_len(int n) +{ + if (likely(n < 128)) { + if (unlikely(n == 34)) + return (sizeof(""") - 1); + if (unlikely(n == 38)) + return (sizeof("&") - 1); + if (unlikely(n == 60 || n == 62)) + return (sizeof(">") - 1); + return 1; + } + + CP_1252_ESCAPE(n); + + if (VALID_VALUE(n)) + return bytes_for(n); + return 1; +} + +static VALUE unpack_utf8(VALUE self) +{ + return rb_funcall(self, unpack_id, 1, U_fmt); +} + +static VALUE unpack_uchar(VALUE self) +{ + return rb_funcall(self, unpack_id, 1, C_fmt); +} + +VALUE fast_xs(VALUE self) +{ + long i; + struct RArray *array; + char *s, *c; + long s_len = 0; + VALUE *tmp; + + array = RARRAY(rb_rescue(unpack_utf8, self, unpack_uchar, self)); + + tmp = array->ptr; + for (i = array->len; --i >= 0; tmp++) + s_len += escaped_len(NUM2INT(*tmp)); + + c = s = alloca(s_len + 1); + + tmp = array->ptr; + for (i = array->len; --i >= 0; tmp++) + c += escape(c, NUM2INT(*tmp)); + + *c = '\0'; + return rb_str_new(s, s_len); +} + +void Init_fast_xs(void) +{ + assert(cp_1252[159 - 128] == 376); /* just in case I skipped a line */ + + unpack_id = rb_intern("unpack"); + U_fmt = rb_str_new("U*", 2); + C_fmt = rb_str_new("C*", 2); + rb_global_variable(&U_fmt); + rb_global_variable(&C_fmt); + + rb_define_method(rb_cString, "fast_xs", fast_xs, 0); +} diff --git a/vendor/gems/hpricot-0.6.161/ext/hpricot_scan/HpricotScanService.java b/vendor/gems/hpricot-0.6.161/ext/hpricot_scan/HpricotScanService.java new file mode 100644 index 0000000..dcfc5ad --- /dev/null +++ b/vendor/gems/hpricot-0.6.161/ext/hpricot_scan/HpricotScanService.java @@ -0,0 +1,1531 @@ +// line 1 "ext/hpricot_scan/hpricot_scan.java.rl" + +import java.io.IOException; + +import org.jruby.Ruby; +import org.jruby.RubyClass; +import org.jruby.RubyHash; +import org.jruby.RubyModule; +import org.jruby.RubyNumeric; +import org.jruby.RubyObjectAdapter; +import org.jruby.RubyString; +import org.jruby.javasupport.JavaEmbedUtils; +import org.jruby.runtime.Block; +import org.jruby.runtime.CallbackFactory; +import org.jruby.runtime.builtin.IRubyObject; +import org.jruby.exceptions.RaiseException; +import org.jruby.runtime.load.BasicLibraryService; + +public class HpricotScanService implements BasicLibraryService { + public static String NO_WAY_SERIOUSLY="*** This should not happen, please send a bug report with the HTML you're parsing to why@whytheluckystiff.net. So sorry!"; + private static RubyObjectAdapter rubyApi; + + public void ELE(IRubyObject N) { + if (tokend > tokstart || text) { + IRubyObject raw_string = runtime.getNil(); + ele_open = false; text = false; + if (tokstart != -1 && N != cdata && N != sym_text && N != procins && N != comment) { + raw_string = runtime.newString(new String(buf,tokstart,tokend-tokstart)); + } + rb_yield_tokens(N, tag[0], attr, raw_string, taint); + } + } + + public void SET(IRubyObject[] N, int E) { + int mark = 0; + if(N == tag) { + if(mark_tag == -1 || E == mark_tag) { + tag[0] = runtime.newString(""); + } else if(E > mark_tag) { + tag[0] = runtime.newString(new String(buf,mark_tag, E-mark_tag)); + } + } else if(N == akey) { + if(mark_akey == -1 || E == mark_akey) { + akey[0] = runtime.newString(""); + } else if(E > mark_akey) { + akey[0] = runtime.newString(new String(buf,mark_akey, E-mark_akey)); + } + } else if(N == aval) { + if(mark_aval == -1 || E == mark_aval) { + aval[0] = runtime.newString(""); + } else if(E > mark_aval) { + aval[0] = runtime.newString(new String(buf,mark_aval, E-mark_aval)); + } + } + } + + public void CAT(IRubyObject[] N, int E) { + if(N[0].isNil()) { + SET(N,E); + } else { + int mark = 0; + if(N == tag) { + mark = mark_tag; + } else if(N == akey) { + mark = mark_akey; + } else if(N == aval) { + mark = mark_aval; + } + ((RubyString)(N[0])).append(runtime.newString(new String(buf, mark, E-mark))); + } + } + + public void SLIDE(Object N) { + int mark = 0; + if(N == tag) { + mark = mark_tag; + } else if(N == akey) { + mark = mark_akey; + } else if(N == aval) { + mark = mark_aval; + } + if(mark > tokstart) { + if(N == tag) { + mark_tag -= tokstart; + } else if(N == akey) { + mark_akey -= tokstart; + } else if(N == aval) { + mark_aval -= tokstart; + } + } + } + + public void ATTR(IRubyObject K, IRubyObject V) { + if(!K.isNil()) { + if(attr.isNil()) { + attr = RubyHash.newHash(runtime); + } + ((RubyHash)attr).aset(K,V); + } + } + + public void ATTR(IRubyObject[] K, IRubyObject V) { + ATTR(K[0],V); + } + + public void ATTR(IRubyObject K, IRubyObject[] V) { + ATTR(K,V[0]); + } + + public void ATTR(IRubyObject[] K, IRubyObject[] V) { + ATTR(K[0],V[0]); + } + + public void TEXT_PASS() { + if(!text) { + if(ele_open) { + ele_open = false; + if(tokstart > -1) { + mark_tag = tokstart; + } + } else { + mark_tag = p; + } + attr = runtime.getNil(); + tag[0] = runtime.getNil(); + text = true; + } + } + + public void EBLK(IRubyObject N, int T) { + CAT(tag, p - T + 1); + ELE(N); + } + + + public void rb_raise(RubyClass error, String message) { + throw new RaiseException(runtime, error, message, true); + } + + public IRubyObject rb_str_new2(String s) { + return runtime.newString(s); + } + +// line 188 "ext/hpricot_scan/hpricot_scan.java.rl" + + + +// line 149 "ext/hpricot_scan/HpricotScanService.java" +private static void init__hpricot_scan_actions_0( byte[] r ) +{ + r[0]=0; r[1]=1; r[2]=1; r[3]=1; r[4]=2; r[5]=1; r[6]=4; r[7]=1; + r[8]=5; r[9]=1; r[10]=6; r[11]=1; r[12]=7; r[13]=1; r[14]=8; r[15]=1; + r[16]=9; r[17]=1; r[18]=10; r[19]=1; r[20]=11; r[21]=1; r[22]=12; r[23]=1; + r[24]=14; r[25]=1; r[26]=16; r[27]=1; r[28]=20; r[29]=1; r[30]=21; r[31]=1; + r[32]=22; r[33]=1; r[34]=24; r[35]=1; r[36]=25; r[37]=1; r[38]=26; r[39]=1; + r[40]=28; r[41]=1; r[42]=29; r[43]=1; r[44]=30; r[45]=1; r[46]=32; r[47]=1; + r[48]=33; r[49]=1; r[50]=38; r[51]=1; r[52]=39; r[53]=1; r[54]=40; r[55]=1; + r[56]=41; r[57]=1; r[58]=42; r[59]=1; r[60]=43; r[61]=1; r[62]=44; r[63]=1; + r[64]=45; r[65]=1; r[66]=46; r[67]=1; r[68]=47; r[69]=1; r[70]=48; r[71]=1; + r[72]=49; r[73]=1; r[74]=50; r[75]=2; r[76]=2; r[77]=5; r[78]=2; r[79]=2; + r[80]=6; r[81]=2; r[82]=2; r[83]=11; r[84]=2; r[85]=2; r[86]=12; r[87]=2; + r[88]=2; r[89]=14; r[90]=2; r[91]=4; r[92]=39; r[93]=2; r[94]=4; r[95]=40; + r[96]=2; r[97]=4; r[98]=41; r[99]=2; r[100]=5; r[101]=2; r[102]=2; r[103]=6; + r[104]=14; r[105]=2; r[106]=7; r[107]=6; r[108]=2; r[109]=7; r[110]=14; r[111]=2; + r[112]=11; r[113]=12; r[114]=2; r[115]=13; r[116]=3; r[117]=2; r[118]=14; r[119]=6; + r[120]=2; r[121]=14; r[122]=40; r[123]=2; r[124]=15; r[125]=24; r[126]=2; r[127]=15; + r[128]=28; r[129]=2; r[130]=15; r[131]=32; r[132]=2; r[133]=15; r[134]=45; r[135]=2; + r[136]=17; r[137]=23; r[138]=2; r[139]=18; r[140]=27; r[141]=2; r[142]=19; r[143]=31; + r[144]=2; r[145]=22; r[146]=34; r[147]=2; r[148]=22; r[149]=36; r[150]=3; r[151]=2; + r[152]=6; r[153]=14; r[154]=3; r[155]=2; r[156]=14; r[157]=6; r[158]=3; r[159]=6; + r[160]=7; r[161]=14; r[162]=3; r[163]=6; r[164]=14; r[165]=40; r[166]=3; r[167]=7; + r[168]=14; r[169]=40; r[170]=3; r[171]=14; r[172]=6; r[173]=40; r[174]=3; r[175]=14; + r[176]=13; r[177]=3; r[178]=3; r[179]=22; r[180]=0; r[181]=37; r[182]=3; r[183]=22; + r[184]=2; r[185]=34; r[186]=3; r[187]=22; r[188]=14; r[189]=35; r[190]=4; r[191]=2; + r[192]=14; r[193]=13; r[194]=3; r[195]=4; r[196]=6; r[197]=7; r[198]=14; r[199]=40; + r[200]=4; r[201]=22; r[202]=2; r[203]=14; r[204]=35; r[205]=4; r[206]=22; r[207]=6; + r[208]=14; r[209]=35; r[210]=4; r[211]=22; r[212]=7; r[213]=14; r[214]=35; r[215]=4; + r[216]=22; r[217]=14; r[218]=6; r[219]=35; r[220]=5; r[221]=22; r[222]=2; r[223]=6; + r[224]=14; r[225]=35; r[226]=5; r[227]=22; r[228]=2; r[229]=14; r[230]=6; r[231]=35; + r[232]=5; r[233]=22; r[234]=6; r[235]=7; r[236]=14; r[237]=35; +} + +private static byte[] create__hpricot_scan_actions( ) +{ + byte[] r = new byte[238]; + init__hpricot_scan_actions_0( r ); + return r; +} + +private static final byte _hpricot_scan_actions[] = create__hpricot_scan_actions(); + + +private static void init__hpricot_scan_key_offsets_0( short[] r ) +{ + r[0]=0; r[1]=3; r[2]=4; r[3]=5; r[4]=6; r[5]=7; r[6]=8; r[7]=9; + r[8]=10; r[9]=13; r[10]=22; r[11]=37; r[12]=44; r[13]=45; r[14]=46; r[15]=47; + r[16]=48; r[17]=49; r[18]=52; r[19]=57; r[20]=69; r[21]=81; r[22]=86; r[23]=93; + r[24]=94; r[25]=95; r[26]=100; r[27]=101; r[28]=105; r[29]=106; r[30]=107; r[31]=121; + r[32]=135; r[33]=152; r[34]=169; r[35]=186; r[36]=203; r[37]=210; r[38]=212; r[39]=214; + r[40]=220; r[41]=222; r[42]=227; r[43]=232; r[44]=238; r[45]=240; r[46]=245; r[47]=251; + r[48]=265; r[49]=266; r[50]=267; r[51]=268; r[52]=269; r[53]=270; r[54]=271; r[55]=272; + r[56]=273; r[57]=274; r[58]=275; r[59]=276; r[60]=282; r[61]=296; r[62]=300; r[63]=313; + r[64]=326; r[65]=340; r[66]=354; r[67]=355; r[68]=366; r[69]=375; r[70]=388; r[71]=405; + r[72]=423; r[73]=441; r[74]=450; r[75]=461; r[76]=480; r[77]=499; r[78]=510; r[79]=521; + r[80]=536; r[81]=538; r[82]=540; r[83]=556; r[84]=572; r[85]=575; r[86]=587; r[87]=599; + r[88]=619; r[89]=639; r[90]=658; r[91]=677; r[92]=697; r[93]=717; r[94]=728; r[95]=739; + r[96]=751; r[97]=763; r[98]=775; r[99]=791; r[100]=794; r[101]=809; r[102]=811; r[103]=813; + r[104]=829; r[105]=845; r[106]=848; r[107]=860; r[108]=871; r[109]=890; r[110]=910; r[111]=930; + r[112]=941; r[113]=952; r[114]=964; r[115]=984; r[116]=1004; r[117]=1016; r[118]=1036; r[119]=1057; + r[120]=1074; r[121]=1091; r[122]=1095; r[123]=1098; r[124]=1110; r[125]=1122; r[126]=1142; r[127]=1162; + r[128]=1182; r[129]=1194; r[130]=1206; r[131]=1226; r[132]=1242; r[133]=1258; r[134]=1270; r[135]=1291; + r[136]=1310; r[137]=1313; r[138]=1328; r[139]=1340; r[140]=1355; r[141]=1358; r[142]=1369; r[143]=1371; + r[144]=1373; r[145]=1384; r[146]=1391; r[147]=1404; r[148]=1418; r[149]=1432; r[150]=1445; r[151]=1446; + r[152]=1447; r[153]=1448; r[154]=1449; r[155]=1450; r[156]=1451; r[157]=1455; r[158]=1460; r[159]=1469; + r[160]=1479; r[161]=1484; r[162]=1491; r[163]=1492; r[164]=1493; r[165]=1494; r[166]=1495; r[167]=1496; + r[168]=1497; r[169]=1498; r[170]=1499; r[171]=1503; r[172]=1508; r[173]=1512; r[174]=1522; r[175]=1527; + r[176]=1533; r[177]=1534; r[178]=1535; r[179]=1536; r[180]=1537; r[181]=1538; r[182]=1539; r[183]=1540; + r[184]=1541; r[185]=1542; r[186]=1546; r[187]=1551; r[188]=1553; r[189]=1554; r[190]=1555; r[191]=1560; + r[192]=1561; r[193]=1562; r[194]=1564; r[195]=1565; r[196]=1566; r[197]=1567; r[198]=1568; r[199]=1572; + r[200]=1582; r[201]=1591; r[202]=1601; r[203]=1602; r[204]=1603; r[205]=1605; r[206]=1614; r[207]=1615; + r[208]=1616; r[209]=1617; r[210]=1619; r[211]=1621; r[212]=1624; r[213]=1627; r[214]=1631; r[215]=1633; + r[216]=1634; r[217]=1636; r[218]=1637; r[219]=1640; +} + +private static short[] create__hpricot_scan_key_offsets( ) +{ + short[] r = new short[220]; + init__hpricot_scan_key_offsets_0( r ); + return r; +} + +private static final short _hpricot_scan_key_offsets[] = create__hpricot_scan_key_offsets(); + + +private static void init__hpricot_scan_trans_keys_0( char[] r ) +{ + r[0]=45; r[1]=68; r[2]=91; r[3]=45; r[4]=79; r[5]=67; r[6]=84; r[7]=89; + r[8]=80; r[9]=69; r[10]=32; r[11]=9; r[12]=13; r[13]=32; r[14]=58; r[15]=95; + r[16]=9; r[17]=13; r[18]=65; r[19]=90; r[20]=97; r[21]=122; r[22]=32; r[23]=62; + r[24]=63; r[25]=91; r[26]=95; r[27]=9; r[28]=13; r[29]=45; r[30]=46; r[31]=48; + r[32]=58; r[33]=65; r[34]=90; r[35]=97; r[36]=122; r[37]=32; r[38]=62; r[39]=80; + r[40]=83; r[41]=91; r[42]=9; r[43]=13; r[44]=85; r[45]=66; r[46]=76; r[47]=73; + r[48]=67; r[49]=32; r[50]=9; r[51]=13; r[52]=32; r[53]=34; r[54]=39; r[55]=9; + r[56]=13; r[57]=9; r[58]=34; r[59]=61; r[60]=95; r[61]=32; r[62]=37; r[63]=39; + r[64]=59; r[65]=63; r[66]=90; r[67]=97; r[68]=122; r[69]=9; r[70]=34; r[71]=61; + r[72]=95; r[73]=32; r[74]=37; r[75]=39; r[76]=59; r[77]=63; r[78]=90; r[79]=97; + r[80]=122; r[81]=32; r[82]=62; r[83]=91; r[84]=9; r[85]=13; r[86]=32; r[87]=34; + r[88]=39; r[89]=62; r[90]=91; r[91]=9; r[92]=13; r[93]=34; r[94]=34; r[95]=32; + r[96]=62; r[97]=91; r[98]=9; r[99]=13; r[100]=93; r[101]=32; r[102]=62; r[103]=9; + r[104]=13; r[105]=39; r[106]=39; r[107]=9; r[108]=39; r[109]=61; r[110]=95; r[111]=32; + r[112]=33; r[113]=35; r[114]=37; r[115]=40; r[116]=59; r[117]=63; r[118]=90; r[119]=97; + r[120]=122; r[121]=9; r[122]=39; r[123]=61; r[124]=95; r[125]=32; r[126]=33; r[127]=35; + r[128]=37; r[129]=40; r[130]=59; r[131]=63; r[132]=90; r[133]=97; r[134]=122; r[135]=9; + r[136]=32; r[137]=33; r[138]=39; r[139]=62; r[140]=91; r[141]=95; r[142]=10; r[143]=13; + r[144]=35; r[145]=37; r[146]=40; r[147]=59; r[148]=61; r[149]=90; r[150]=97; r[151]=122; + r[152]=9; r[153]=32; r[154]=34; r[155]=39; r[156]=62; r[157]=91; r[158]=95; r[159]=10; + r[160]=13; r[161]=33; r[162]=37; r[163]=40; r[164]=59; r[165]=61; r[166]=90; r[167]=97; + r[168]=122; r[169]=9; r[170]=32; r[171]=33; r[172]=39; r[173]=62; r[174]=91; r[175]=95; + r[176]=10; r[177]=13; r[178]=35; r[179]=37; r[180]=40; r[181]=59; r[182]=61; r[183]=90; + r[184]=97; r[185]=122; r[186]=9; r[187]=32; r[188]=34; r[189]=39; r[190]=62; r[191]=91; + r[192]=95; r[193]=10; r[194]=13; r[195]=33; r[196]=37; r[197]=40; r[198]=59; r[199]=61; + r[200]=90; r[201]=97; r[202]=122; r[203]=32; r[204]=34; r[205]=39; r[206]=62; r[207]=91; + r[208]=9; r[209]=13; r[210]=34; r[211]=39; r[212]=34; r[213]=39; r[214]=32; r[215]=39; + r[216]=62; r[217]=91; r[218]=9; r[219]=13; r[220]=39; r[221]=93; r[222]=32; r[223]=62; + r[224]=93; r[225]=9; r[226]=13; r[227]=32; r[228]=39; r[229]=62; r[230]=9; r[231]=13; + r[232]=32; r[233]=34; r[234]=62; r[235]=91; r[236]=9; r[237]=13; r[238]=34; r[239]=93; + r[240]=32; r[241]=34; r[242]=62; r[243]=9; r[244]=13; r[245]=32; r[246]=39; r[247]=62; + r[248]=91; r[249]=9; r[250]=13; r[251]=9; r[252]=39; r[253]=61; r[254]=95; r[255]=32; + r[256]=33; r[257]=35; r[258]=37; r[259]=40; r[260]=59; r[261]=63; r[262]=90; r[263]=97; + r[264]=122; r[265]=89; r[266]=83; r[267]=84; r[268]=69; r[269]=77; r[270]=67; r[271]=68; + r[272]=65; r[273]=84; r[274]=65; r[275]=91; r[276]=58; r[277]=95; r[278]=65; r[279]=90; + r[280]=97; r[281]=122; r[282]=32; r[283]=62; r[284]=63; r[285]=95; r[286]=9; r[287]=13; + r[288]=45; r[289]=46; r[290]=48; r[291]=58; r[292]=65; r[293]=90; r[294]=97; r[295]=122; + r[296]=32; r[297]=62; r[298]=9; r[299]=13; r[300]=32; r[301]=47; r[302]=62; r[303]=63; + r[304]=95; r[305]=9; r[306]=13; r[307]=45; r[308]=58; r[309]=65; r[310]=90; r[311]=97; + r[312]=122; r[313]=32; r[314]=47; r[315]=62; r[316]=63; r[317]=95; r[318]=9; r[319]=13; + r[320]=45; r[321]=58; r[322]=65; r[323]=90; r[324]=97; r[325]=122; r[326]=32; r[327]=47; + r[328]=61; r[329]=62; r[330]=63; r[331]=95; r[332]=9; r[333]=13; r[334]=45; r[335]=58; + r[336]=65; r[337]=90; r[338]=97; r[339]=122; r[340]=32; r[341]=47; r[342]=61; r[343]=62; + r[344]=63; r[345]=95; r[346]=9; r[347]=13; r[348]=45; r[349]=58; r[350]=65; r[351]=90; + r[352]=97; r[353]=122; r[354]=62; r[355]=13; r[356]=32; r[357]=34; r[358]=39; r[359]=47; + r[360]=60; r[361]=62; r[362]=9; r[363]=10; r[364]=11; r[365]=12; r[366]=13; r[367]=32; + r[368]=47; r[369]=60; r[370]=62; r[371]=9; r[372]=10; r[373]=11; r[374]=12; r[375]=32; + r[376]=47; r[377]=62; r[378]=63; r[379]=95; r[380]=9; r[381]=13; r[382]=45; r[383]=58; + r[384]=65; r[385]=90; r[386]=97; r[387]=122; r[388]=13; r[389]=32; r[390]=47; r[391]=60; + r[392]=62; r[393]=63; r[394]=95; r[395]=9; r[396]=10; r[397]=11; r[398]=12; r[399]=45; + r[400]=58; r[401]=65; r[402]=90; r[403]=97; r[404]=122; r[405]=13; r[406]=32; r[407]=47; + r[408]=60; r[409]=61; r[410]=62; r[411]=63; r[412]=95; r[413]=9; r[414]=10; r[415]=11; + r[416]=12; r[417]=45; r[418]=58; r[419]=65; r[420]=90; r[421]=97; r[422]=122; r[423]=13; + r[424]=32; r[425]=47; r[426]=60; r[427]=61; r[428]=62; r[429]=63; r[430]=95; r[431]=9; + r[432]=10; r[433]=11; r[434]=12; r[435]=45; r[436]=58; r[437]=65; r[438]=90; r[439]=97; + r[440]=122; r[441]=13; r[442]=32; r[443]=47; r[444]=60; r[445]=62; r[446]=9; r[447]=10; + r[448]=11; r[449]=12; r[450]=13; r[451]=32; r[452]=34; r[453]=39; r[454]=47; r[455]=60; + r[456]=62; r[457]=9; r[458]=10; r[459]=11; r[460]=12; r[461]=13; r[462]=32; r[463]=34; + r[464]=39; r[465]=47; r[466]=60; r[467]=62; r[468]=63; r[469]=95; r[470]=9; r[471]=10; + r[472]=11; r[473]=12; r[474]=45; r[475]=58; r[476]=65; r[477]=90; r[478]=97; r[479]=122; + r[480]=13; r[481]=32; r[482]=34; r[483]=39; r[484]=47; r[485]=60; r[486]=62; r[487]=63; + r[488]=95; r[489]=9; r[490]=10; r[491]=11; r[492]=12; r[493]=45; r[494]=58; r[495]=65; + r[496]=90; r[497]=97; r[498]=122; r[499]=13; r[500]=32; r[501]=34; r[502]=47; r[503]=60; + r[504]=62; r[505]=92; r[506]=9; r[507]=10; r[508]=11; r[509]=12; r[510]=13; r[511]=32; + r[512]=34; r[513]=47; r[514]=60; r[515]=62; r[516]=92; r[517]=9; r[518]=10; r[519]=11; + r[520]=12; r[521]=32; r[522]=34; r[523]=47; r[524]=62; r[525]=63; r[526]=92; r[527]=95; + r[528]=9; r[529]=13; r[530]=45; r[531]=58; r[532]=65; r[533]=90; r[534]=97; r[535]=122; + r[536]=34; r[537]=92; r[538]=34; r[539]=92; r[540]=32; r[541]=34; r[542]=47; r[543]=61; + r[544]=62; r[545]=63; r[546]=92; r[547]=95; r[548]=9; r[549]=13; r[550]=45; r[551]=58; + r[552]=65; r[553]=90; r[554]=97; r[555]=122; r[556]=32; r[557]=34; r[558]=47; r[559]=61; + r[560]=62; r[561]=63; r[562]=92; r[563]=95; r[564]=9; r[565]=13; r[566]=45; r[567]=58; + r[568]=65; r[569]=90; r[570]=97; r[571]=122; r[572]=34; r[573]=62; r[574]=92; r[575]=13; + r[576]=32; r[577]=34; r[578]=39; r[579]=47; r[580]=60; r[581]=62; r[582]=92; r[583]=9; + r[584]=10; r[585]=11; r[586]=12; r[587]=13; r[588]=32; r[589]=34; r[590]=39; r[591]=47; + r[592]=60; r[593]=62; r[594]=92; r[595]=9; r[596]=10; r[597]=11; r[598]=12; r[599]=13; + r[600]=32; r[601]=34; r[602]=39; r[603]=47; r[604]=60; r[605]=62; r[606]=63; r[607]=92; + r[608]=95; r[609]=9; r[610]=10; r[611]=11; r[612]=12; r[613]=45; r[614]=58; r[615]=65; + r[616]=90; r[617]=97; r[618]=122; r[619]=13; r[620]=32; r[621]=34; r[622]=39; r[623]=47; + r[624]=60; r[625]=62; r[626]=63; r[627]=92; r[628]=95; r[629]=9; r[630]=10; r[631]=11; + r[632]=12; r[633]=45; r[634]=58; r[635]=65; r[636]=90; r[637]=97; r[638]=122; r[639]=13; + r[640]=32; r[641]=34; r[642]=47; r[643]=60; r[644]=62; r[645]=63; r[646]=92; r[647]=95; + r[648]=9; r[649]=10; r[650]=11; r[651]=12; r[652]=45; r[653]=58; r[654]=65; r[655]=90; + r[656]=97; r[657]=122; r[658]=13; r[659]=32; r[660]=34; r[661]=47; r[662]=60; r[663]=62; + r[664]=63; r[665]=92; r[666]=95; r[667]=9; r[668]=10; r[669]=11; r[670]=12; r[671]=45; + r[672]=58; r[673]=65; r[674]=90; r[675]=97; r[676]=122; r[677]=13; r[678]=32; r[679]=34; + r[680]=47; r[681]=60; r[682]=61; r[683]=62; r[684]=63; r[685]=92; r[686]=95; r[687]=9; + r[688]=10; r[689]=11; r[690]=12; r[691]=45; r[692]=58; r[693]=65; r[694]=90; r[695]=97; + r[696]=122; r[697]=13; r[698]=32; r[699]=34; r[700]=47; r[701]=60; r[702]=61; r[703]=62; + r[704]=63; r[705]=92; r[706]=95; r[707]=9; r[708]=10; r[709]=11; r[710]=12; r[711]=45; + r[712]=58; r[713]=65; r[714]=90; r[715]=97; r[716]=122; r[717]=13; r[718]=32; r[719]=34; + r[720]=47; r[721]=60; r[722]=62; r[723]=92; r[724]=9; r[725]=10; r[726]=11; r[727]=12; + r[728]=13; r[729]=32; r[730]=34; r[731]=47; r[732]=60; r[733]=62; r[734]=92; r[735]=9; + r[736]=10; r[737]=11; r[738]=12; r[739]=13; r[740]=32; r[741]=34; r[742]=39; r[743]=47; + r[744]=60; r[745]=62; r[746]=92; r[747]=9; r[748]=10; r[749]=11; r[750]=12; r[751]=13; + r[752]=32; r[753]=34; r[754]=39; r[755]=47; r[756]=60; r[757]=62; r[758]=92; r[759]=9; + r[760]=10; r[761]=11; r[762]=12; r[763]=13; r[764]=32; r[765]=34; r[766]=39; r[767]=47; + r[768]=60; r[769]=62; r[770]=92; r[771]=9; r[772]=10; r[773]=11; r[774]=12; r[775]=32; + r[776]=34; r[777]=39; r[778]=47; r[779]=62; r[780]=63; r[781]=92; r[782]=95; r[783]=9; + r[784]=13; r[785]=45; r[786]=58; r[787]=65; r[788]=90; r[789]=97; r[790]=122; r[791]=34; + r[792]=39; r[793]=92; r[794]=32; r[795]=39; r[796]=47; r[797]=62; r[798]=63; r[799]=92; + r[800]=95; r[801]=9; r[802]=13; r[803]=45; r[804]=58; r[805]=65; r[806]=90; r[807]=97; + r[808]=122; r[809]=39; r[810]=92; r[811]=39; r[812]=92; r[813]=32; r[814]=39; r[815]=47; + r[816]=61; r[817]=62; r[818]=63; r[819]=92; r[820]=95; r[821]=9; r[822]=13; r[823]=45; + r[824]=58; r[825]=65; r[826]=90; r[827]=97; r[828]=122; r[829]=32; r[830]=39; r[831]=47; + r[832]=61; r[833]=62; r[834]=63; r[835]=92; r[836]=95; r[837]=9; r[838]=13; r[839]=45; + r[840]=58; r[841]=65; r[842]=90; r[843]=97; r[844]=122; r[845]=39; r[846]=62; r[847]=92; + r[848]=13; r[849]=32; r[850]=34; r[851]=39; r[852]=47; r[853]=60; r[854]=62; r[855]=92; + r[856]=9; r[857]=10; r[858]=11; r[859]=12; r[860]=13; r[861]=32; r[862]=39; r[863]=47; + r[864]=60; r[865]=62; r[866]=92; r[867]=9; r[868]=10; r[869]=11; r[870]=12; r[871]=13; + r[872]=32; r[873]=39; r[874]=47; r[875]=60; r[876]=62; r[877]=63; r[878]=92; r[879]=95; + r[880]=9; r[881]=10; r[882]=11; r[883]=12; r[884]=45; r[885]=58; r[886]=65; r[887]=90; + r[888]=97; r[889]=122; r[890]=13; r[891]=32; r[892]=39; r[893]=47; r[894]=60; r[895]=61; + r[896]=62; r[897]=63; r[898]=92; r[899]=95; r[900]=9; r[901]=10; r[902]=11; r[903]=12; + r[904]=45; r[905]=58; r[906]=65; r[907]=90; r[908]=97; r[909]=122; r[910]=13; r[911]=32; + r[912]=39; r[913]=47; r[914]=60; r[915]=61; r[916]=62; r[917]=63; r[918]=92; r[919]=95; + r[920]=9; r[921]=10; r[922]=11; r[923]=12; r[924]=45; r[925]=58; r[926]=65; r[927]=90; + r[928]=97; r[929]=122; r[930]=13; r[931]=32; r[932]=39; r[933]=47; r[934]=60; r[935]=62; + r[936]=92; r[937]=9; r[938]=10; r[939]=11; r[940]=12; r[941]=13; r[942]=32; r[943]=39; + r[944]=47; r[945]=60; r[946]=62; r[947]=92; r[948]=9; r[949]=10; r[950]=11; r[951]=12; + r[952]=13; r[953]=32; r[954]=34; r[955]=39; r[956]=47; r[957]=60; r[958]=62; r[959]=92; + r[960]=9; r[961]=10; r[962]=11; r[963]=12; r[964]=13; r[965]=32; r[966]=34; r[967]=39; + r[968]=47; r[969]=60; r[970]=62; r[971]=63; r[972]=92; r[973]=95; r[974]=9; r[975]=10; + r[976]=11; r[977]=12; r[978]=45; r[979]=58; r[980]=65; r[981]=90; r[982]=97; r[983]=122; + r[984]=13; r[985]=32; r[986]=34; r[987]=39; r[988]=47; r[989]=60; r[990]=62; r[991]=63; + r[992]=92; r[993]=95; r[994]=9; r[995]=10; r[996]=11; r[997]=12; r[998]=45; r[999]=58; + r[1000]=65; r[1001]=90; r[1002]=97; r[1003]=122; r[1004]=13; r[1005]=32; r[1006]=34; r[1007]=39; + r[1008]=47; r[1009]=60; r[1010]=62; r[1011]=92; r[1012]=9; r[1013]=10; r[1014]=11; r[1015]=12; + r[1016]=13; r[1017]=32; r[1018]=34; r[1019]=39; r[1020]=47; r[1021]=60; r[1022]=62; r[1023]=63; + r[1024]=92; r[1025]=95; r[1026]=9; r[1027]=10; r[1028]=11; r[1029]=12; r[1030]=45; r[1031]=58; + r[1032]=65; r[1033]=90; r[1034]=97; r[1035]=122; r[1036]=13; r[1037]=32; r[1038]=34; r[1039]=39; + r[1040]=47; r[1041]=60; r[1042]=61; r[1043]=62; r[1044]=63; r[1045]=92; r[1046]=95; r[1047]=9; + r[1048]=10; r[1049]=11; r[1050]=12; r[1051]=45; r[1052]=58; r[1053]=65; r[1054]=90; r[1055]=97; + r[1056]=122; r[1057]=32; r[1058]=34; r[1059]=39; r[1060]=47; r[1061]=61; r[1062]=62; r[1063]=63; + r[1064]=92; r[1065]=95; r[1066]=9; r[1067]=13; r[1068]=45; r[1069]=58; r[1070]=65; r[1071]=90; + r[1072]=97; r[1073]=122; r[1074]=32; r[1075]=34; r[1076]=39; r[1077]=47; r[1078]=61; r[1079]=62; + r[1080]=63; r[1081]=92; r[1082]=95; r[1083]=9; r[1084]=13; r[1085]=45; r[1086]=58; r[1087]=65; + r[1088]=90; r[1089]=97; r[1090]=122; r[1091]=34; r[1092]=39; r[1093]=62; r[1094]=92; r[1095]=34; + r[1096]=39; r[1097]=92; r[1098]=13; r[1099]=32; r[1100]=34; r[1101]=39; r[1102]=47; r[1103]=60; + r[1104]=62; r[1105]=92; r[1106]=9; r[1107]=10; r[1108]=11; r[1109]=12; r[1110]=13; r[1111]=32; + r[1112]=34; r[1113]=39; r[1114]=47; r[1115]=60; r[1116]=62; r[1117]=92; r[1118]=9; r[1119]=10; + r[1120]=11; r[1121]=12; r[1122]=13; r[1123]=32; r[1124]=34; r[1125]=39; r[1126]=47; r[1127]=60; + r[1128]=62; r[1129]=63; r[1130]=92; r[1131]=95; r[1132]=9; r[1133]=10; r[1134]=11; r[1135]=12; + r[1136]=45; r[1137]=58; r[1138]=65; r[1139]=90; r[1140]=97; r[1141]=122; r[1142]=13; r[1143]=32; + r[1144]=34; r[1145]=39; r[1146]=47; r[1147]=60; r[1148]=62; r[1149]=63; r[1150]=92; r[1151]=95; + r[1152]=9; r[1153]=10; r[1154]=11; r[1155]=12; r[1156]=45; r[1157]=58; r[1158]=65; r[1159]=90; + r[1160]=97; r[1161]=122; r[1162]=13; r[1163]=32; r[1164]=34; r[1165]=39; r[1166]=47; r[1167]=60; + r[1168]=62; r[1169]=63; r[1170]=92; r[1171]=95; r[1172]=9; r[1173]=10; r[1174]=11; r[1175]=12; + r[1176]=45; r[1177]=58; r[1178]=65; r[1179]=90; r[1180]=97; r[1181]=122; r[1182]=13; r[1183]=32; + r[1184]=34; r[1185]=39; r[1186]=47; r[1187]=60; r[1188]=62; r[1189]=92; r[1190]=9; r[1191]=10; + r[1192]=11; r[1193]=12; r[1194]=13; r[1195]=32; r[1196]=34; r[1197]=39; r[1198]=47; r[1199]=60; + r[1200]=62; r[1201]=92; r[1202]=9; r[1203]=10; r[1204]=11; r[1205]=12; r[1206]=13; r[1207]=32; + r[1208]=34; r[1209]=39; r[1210]=47; r[1211]=60; r[1212]=62; r[1213]=63; r[1214]=92; r[1215]=95; + r[1216]=9; r[1217]=10; r[1218]=11; r[1219]=12; r[1220]=45; r[1221]=58; r[1222]=65; r[1223]=90; + r[1224]=97; r[1225]=122; r[1226]=32; r[1227]=34; r[1228]=39; r[1229]=47; r[1230]=62; r[1231]=63; + r[1232]=92; r[1233]=95; r[1234]=9; r[1235]=13; r[1236]=45; r[1237]=58; r[1238]=65; r[1239]=90; + r[1240]=97; r[1241]=122; r[1242]=32; r[1243]=34; r[1244]=39; r[1245]=47; r[1246]=62; r[1247]=63; + r[1248]=92; r[1249]=95; r[1250]=9; r[1251]=13; r[1252]=45; r[1253]=58; r[1254]=65; r[1255]=90; + r[1256]=97; r[1257]=122; r[1258]=13; r[1259]=32; r[1260]=34; r[1261]=39; r[1262]=47; r[1263]=60; + r[1264]=62; r[1265]=92; r[1266]=9; r[1267]=10; r[1268]=11; r[1269]=12; r[1270]=13; r[1271]=32; + r[1272]=34; r[1273]=39; r[1274]=47; r[1275]=60; r[1276]=61; r[1277]=62; r[1278]=63; r[1279]=92; + r[1280]=95; r[1281]=9; r[1282]=10; r[1283]=11; r[1284]=12; r[1285]=45; r[1286]=58; r[1287]=65; + r[1288]=90; r[1289]=97; r[1290]=122; r[1291]=13; r[1292]=32; r[1293]=39; r[1294]=47; r[1295]=60; + r[1296]=62; r[1297]=63; r[1298]=92; r[1299]=95; r[1300]=9; r[1301]=10; r[1302]=11; r[1303]=12; + r[1304]=45; r[1305]=58; r[1306]=65; r[1307]=90; r[1308]=97; r[1309]=122; r[1310]=34; r[1311]=39; + r[1312]=92; r[1313]=32; r[1314]=39; r[1315]=47; r[1316]=62; r[1317]=63; r[1318]=92; r[1319]=95; + r[1320]=9; r[1321]=13; r[1322]=45; r[1323]=58; r[1324]=65; r[1325]=90; r[1326]=97; r[1327]=122; + r[1328]=13; r[1329]=32; r[1330]=34; r[1331]=39; r[1332]=47; r[1333]=60; r[1334]=62; r[1335]=92; + r[1336]=9; r[1337]=10; r[1338]=11; r[1339]=12; r[1340]=32; r[1341]=34; r[1342]=47; r[1343]=62; + r[1344]=63; r[1345]=92; r[1346]=95; r[1347]=9; r[1348]=13; r[1349]=45; r[1350]=58; r[1351]=65; + r[1352]=90; r[1353]=97; r[1354]=122; r[1355]=34; r[1356]=39; r[1357]=92; r[1358]=13; r[1359]=32; + r[1360]=39; r[1361]=47; r[1362]=60; r[1363]=62; r[1364]=92; r[1365]=9; r[1366]=10; r[1367]=11; + r[1368]=12; r[1369]=34; r[1370]=92; r[1371]=39; r[1372]=92; r[1373]=13; r[1374]=32; r[1375]=34; + r[1376]=39; r[1377]=47; r[1378]=60; r[1379]=62; r[1380]=9; r[1381]=10; r[1382]=11; r[1383]=12; + r[1384]=58; r[1385]=95; r[1386]=120; r[1387]=65; r[1388]=90; r[1389]=97; r[1390]=122; r[1391]=32; + r[1392]=63; r[1393]=95; r[1394]=9; r[1395]=13; r[1396]=45; r[1397]=46; r[1398]=48; r[1399]=58; + r[1400]=65; r[1401]=90; r[1402]=97; r[1403]=122; r[1404]=32; r[1405]=63; r[1406]=95; r[1407]=109; + r[1408]=9; r[1409]=13; r[1410]=45; r[1411]=46; r[1412]=48; r[1413]=58; r[1414]=65; r[1415]=90; + r[1416]=97; r[1417]=122; r[1418]=32; r[1419]=63; r[1420]=95; r[1421]=108; r[1422]=9; r[1423]=13; + r[1424]=45; r[1425]=46; r[1426]=48; r[1427]=58; r[1428]=65; r[1429]=90; r[1430]=97; r[1431]=122; + r[1432]=32; r[1433]=63; r[1434]=95; r[1435]=9; r[1436]=13; r[1437]=45; r[1438]=46; r[1439]=48; + r[1440]=58; r[1441]=65; r[1442]=90; r[1443]=97; r[1444]=122; r[1445]=101; r[1446]=114; r[1447]=115; + r[1448]=105; r[1449]=111; r[1450]=110; r[1451]=32; r[1452]=61; r[1453]=9; r[1454]=13; r[1455]=32; + r[1456]=34; r[1457]=39; r[1458]=9; r[1459]=13; r[1460]=95; r[1461]=45; r[1462]=46; r[1463]=48; + r[1464]=58; r[1465]=65; r[1466]=90; r[1467]=97; r[1468]=122; r[1469]=34; r[1470]=95; r[1471]=45; + r[1472]=46; r[1473]=48; r[1474]=58; r[1475]=65; r[1476]=90; r[1477]=97; r[1478]=122; r[1479]=32; + r[1480]=62; r[1481]=63; r[1482]=9; r[1483]=13; r[1484]=32; r[1485]=62; r[1486]=63; r[1487]=101; + r[1488]=115; r[1489]=9; r[1490]=13; r[1491]=62; r[1492]=110; r[1493]=99; r[1494]=111; r[1495]=100; + r[1496]=105; r[1497]=110; r[1498]=103; r[1499]=32; r[1500]=61; r[1501]=9; r[1502]=13; r[1503]=32; + r[1504]=34; r[1505]=39; r[1506]=9; r[1507]=13; r[1508]=65; r[1509]=90; r[1510]=97; r[1511]=122; + r[1512]=34; r[1513]=95; r[1514]=45; r[1515]=46; r[1516]=48; r[1517]=57; r[1518]=65; r[1519]=90; + r[1520]=97; r[1521]=122; r[1522]=32; r[1523]=62; r[1524]=63; r[1525]=9; r[1526]=13; r[1527]=32; + r[1528]=62; r[1529]=63; r[1530]=115; r[1531]=9; r[1532]=13; r[1533]=116; r[1534]=97; r[1535]=110; + r[1536]=100; r[1537]=97; r[1538]=108; r[1539]=111; r[1540]=110; r[1541]=101; r[1542]=32; r[1543]=61; + r[1544]=9; r[1545]=13; r[1546]=32; r[1547]=34; r[1548]=39; r[1549]=9; r[1550]=13; r[1551]=110; + r[1552]=121; r[1553]=111; r[1554]=34; r[1555]=32; r[1556]=62; r[1557]=63; r[1558]=9; r[1559]=13; + r[1560]=101; r[1561]=115; r[1562]=110; r[1563]=121; r[1564]=111; r[1565]=39; r[1566]=101; r[1567]=115; + r[1568]=65; r[1569]=90; r[1570]=97; r[1571]=122; r[1572]=39; r[1573]=95; r[1574]=45; r[1575]=46; + r[1576]=48; r[1577]=57; r[1578]=65; r[1579]=90; r[1580]=97; r[1581]=122; r[1582]=95; r[1583]=45; + r[1584]=46; r[1585]=48; r[1586]=58; r[1587]=65; r[1588]=90; r[1589]=97; r[1590]=122; r[1591]=39; + r[1592]=95; r[1593]=45; r[1594]=46; r[1595]=48; r[1596]=58; r[1597]=65; r[1598]=90; r[1599]=97; + r[1600]=122; r[1601]=62; r[1602]=62; r[1603]=10; r[1604]=60; r[1605]=33; r[1606]=47; r[1607]=58; + r[1608]=63; r[1609]=95; r[1610]=65; r[1611]=90; r[1612]=97; r[1613]=122; r[1614]=39; r[1615]=93; + r[1616]=34; r[1617]=34; r[1618]=92; r[1619]=39; r[1620]=92; r[1621]=34; r[1622]=39; r[1623]=92; + r[1624]=32; r[1625]=9; r[1626]=13; r[1627]=32; r[1628]=118; r[1629]=9; r[1630]=13; r[1631]=10; + r[1632]=45; r[1633]=45; r[1634]=10; r[1635]=93; r[1636]=93; r[1637]=10; r[1638]=62; r[1639]=63; + r[1640]=62; r[1641]=0; +} + +private static char[] create__hpricot_scan_trans_keys( ) +{ + char[] r = new char[1642]; + init__hpricot_scan_trans_keys_0( r ); + return r; +} + +private static final char _hpricot_scan_trans_keys[] = create__hpricot_scan_trans_keys(); + + +private static void init__hpricot_scan_single_lengths_0( byte[] r ) +{ + r[0]=3; r[1]=1; r[2]=1; r[3]=1; r[4]=1; r[5]=1; r[6]=1; r[7]=1; + r[8]=1; r[9]=3; r[10]=5; r[11]=5; r[12]=1; r[13]=1; r[14]=1; r[15]=1; + r[16]=1; r[17]=1; r[18]=3; r[19]=4; r[20]=4; r[21]=3; r[22]=5; r[23]=1; + r[24]=1; r[25]=3; r[26]=1; r[27]=2; r[28]=1; r[29]=1; r[30]=4; r[31]=4; + r[32]=7; r[33]=7; r[34]=7; r[35]=7; r[36]=5; r[37]=2; r[38]=2; r[39]=4; + r[40]=2; r[41]=3; r[42]=3; r[43]=4; r[44]=2; r[45]=3; r[46]=4; r[47]=4; + r[48]=1; r[49]=1; r[50]=1; r[51]=1; r[52]=1; r[53]=1; r[54]=1; r[55]=1; + r[56]=1; r[57]=1; r[58]=1; r[59]=2; r[60]=4; r[61]=2; r[62]=5; r[63]=5; + r[64]=6; r[65]=6; r[66]=1; r[67]=7; r[68]=5; r[69]=5; r[70]=7; r[71]=8; + r[72]=8; r[73]=5; r[74]=7; r[75]=9; r[76]=9; r[77]=7; r[78]=7; r[79]=7; + r[80]=2; r[81]=2; r[82]=8; r[83]=8; r[84]=3; r[85]=8; r[86]=8; r[87]=10; + r[88]=10; r[89]=9; r[90]=9; r[91]=10; r[92]=10; r[93]=7; r[94]=7; r[95]=8; + r[96]=8; r[97]=8; r[98]=8; r[99]=3; r[100]=7; r[101]=2; r[102]=2; r[103]=8; + r[104]=8; r[105]=3; r[106]=8; r[107]=7; r[108]=9; r[109]=10; r[110]=10; r[111]=7; + r[112]=7; r[113]=8; r[114]=10; r[115]=10; r[116]=8; r[117]=10; r[118]=11; r[119]=9; + r[120]=9; r[121]=4; r[122]=3; r[123]=8; r[124]=8; r[125]=10; r[126]=10; r[127]=10; + r[128]=8; r[129]=8; r[130]=10; r[131]=8; r[132]=8; r[133]=8; r[134]=11; r[135]=9; + r[136]=3; r[137]=7; r[138]=8; r[139]=7; r[140]=3; r[141]=7; r[142]=2; r[143]=2; + r[144]=7; r[145]=3; r[146]=3; r[147]=4; r[148]=4; r[149]=3; r[150]=1; r[151]=1; + r[152]=1; r[153]=1; r[154]=1; r[155]=1; r[156]=2; r[157]=3; r[158]=1; r[159]=2; + r[160]=3; r[161]=5; r[162]=1; r[163]=1; r[164]=1; r[165]=1; r[166]=1; r[167]=1; + r[168]=1; r[169]=1; r[170]=2; r[171]=3; r[172]=0; r[173]=2; r[174]=3; r[175]=4; + r[176]=1; r[177]=1; r[178]=1; r[179]=1; r[180]=1; r[181]=1; r[182]=1; r[183]=1; + r[184]=1; r[185]=2; r[186]=3; r[187]=2; r[188]=1; r[189]=1; r[190]=3; r[191]=1; + r[192]=1; r[193]=2; r[194]=1; r[195]=1; r[196]=1; r[197]=1; r[198]=0; r[199]=2; + r[200]=1; r[201]=2; r[202]=1; r[203]=1; r[204]=2; r[205]=5; r[206]=1; r[207]=1; + r[208]=1; r[209]=2; r[210]=2; r[211]=3; r[212]=1; r[213]=2; r[214]=2; r[215]=1; + r[216]=2; r[217]=1; r[218]=3; r[219]=1; +} + +private static byte[] create__hpricot_scan_single_lengths( ) +{ + byte[] r = new byte[220]; + init__hpricot_scan_single_lengths_0( r ); + return r; +} + +private static final byte _hpricot_scan_single_lengths[] = create__hpricot_scan_single_lengths(); + + +private static void init__hpricot_scan_range_lengths_0( byte[] r ) +{ + r[0]=0; r[1]=0; r[2]=0; r[3]=0; r[4]=0; r[5]=0; r[6]=0; r[7]=0; + r[8]=1; r[9]=3; r[10]=5; r[11]=1; r[12]=0; r[13]=0; r[14]=0; r[15]=0; + r[16]=0; r[17]=1; r[18]=1; r[19]=4; r[20]=4; r[21]=1; r[22]=1; r[23]=0; + r[24]=0; r[25]=1; r[26]=0; r[27]=1; r[28]=0; r[29]=0; r[30]=5; r[31]=5; + r[32]=5; r[33]=5; r[34]=5; r[35]=5; r[36]=1; r[37]=0; r[38]=0; r[39]=1; + r[40]=0; r[41]=1; r[42]=1; r[43]=1; r[44]=0; r[45]=1; r[46]=1; r[47]=5; + r[48]=0; r[49]=0; r[50]=0; r[51]=0; r[52]=0; r[53]=0; r[54]=0; r[55]=0; + r[56]=0; r[57]=0; r[58]=0; r[59]=2; r[60]=5; r[61]=1; r[62]=4; r[63]=4; + r[64]=4; r[65]=4; r[66]=0; r[67]=2; r[68]=2; r[69]=4; r[70]=5; r[71]=5; + r[72]=5; r[73]=2; r[74]=2; r[75]=5; r[76]=5; r[77]=2; r[78]=2; r[79]=4; + r[80]=0; r[81]=0; r[82]=4; r[83]=4; r[84]=0; r[85]=2; r[86]=2; r[87]=5; + r[88]=5; r[89]=5; r[90]=5; r[91]=5; r[92]=5; r[93]=2; r[94]=2; r[95]=2; + r[96]=2; r[97]=2; r[98]=4; r[99]=0; r[100]=4; r[101]=0; r[102]=0; r[103]=4; + r[104]=4; r[105]=0; r[106]=2; r[107]=2; r[108]=5; r[109]=5; r[110]=5; r[111]=2; + r[112]=2; r[113]=2; r[114]=5; r[115]=5; r[116]=2; r[117]=5; r[118]=5; r[119]=4; + r[120]=4; r[121]=0; r[122]=0; r[123]=2; r[124]=2; r[125]=5; r[126]=5; r[127]=5; + r[128]=2; r[129]=2; r[130]=5; r[131]=4; r[132]=4; r[133]=2; r[134]=5; r[135]=5; + r[136]=0; r[137]=4; r[138]=2; r[139]=4; r[140]=0; r[141]=2; r[142]=0; r[143]=0; + r[144]=2; r[145]=2; r[146]=5; r[147]=5; r[148]=5; r[149]=5; r[150]=0; r[151]=0; + r[152]=0; r[153]=0; r[154]=0; r[155]=0; r[156]=1; r[157]=1; r[158]=4; r[159]=4; + r[160]=1; r[161]=1; r[162]=0; r[163]=0; r[164]=0; r[165]=0; r[166]=0; r[167]=0; + r[168]=0; r[169]=0; r[170]=1; r[171]=1; r[172]=2; r[173]=4; r[174]=1; r[175]=1; + r[176]=0; r[177]=0; r[178]=0; r[179]=0; r[180]=0; r[181]=0; r[182]=0; r[183]=0; + r[184]=0; r[185]=1; r[186]=1; r[187]=0; r[188]=0; r[189]=0; r[190]=1; r[191]=0; + r[192]=0; r[193]=0; r[194]=0; r[195]=0; r[196]=0; r[197]=0; r[198]=2; r[199]=4; + r[200]=4; r[201]=4; r[202]=0; r[203]=0; r[204]=0; r[205]=2; r[206]=0; r[207]=0; + r[208]=0; r[209]=0; r[210]=0; r[211]=0; r[212]=1; r[213]=1; r[214]=0; r[215]=0; + r[216]=0; r[217]=0; r[218]=0; r[219]=0; +} + +private static byte[] create__hpricot_scan_range_lengths( ) +{ + byte[] r = new byte[220]; + init__hpricot_scan_range_lengths_0( r ); + return r; +} + +private static final byte _hpricot_scan_range_lengths[] = create__hpricot_scan_range_lengths(); + + +private static void init__hpricot_scan_index_offsets_0( short[] r ) +{ + r[0]=0; r[1]=4; r[2]=6; r[3]=8; r[4]=10; r[5]=12; r[6]=14; r[7]=16; + r[8]=18; r[9]=21; r[10]=28; r[11]=39; r[12]=46; r[13]=48; r[14]=50; r[15]=52; + r[16]=54; r[17]=56; r[18]=59; r[19]=64; r[20]=73; r[21]=82; r[22]=87; r[23]=94; + r[24]=96; r[25]=98; r[26]=103; r[27]=105; r[28]=109; r[29]=111; r[30]=113; r[31]=123; + r[32]=133; r[33]=146; r[34]=159; r[35]=172; r[36]=185; r[37]=192; r[38]=195; r[39]=198; + r[40]=204; r[41]=207; r[42]=212; r[43]=217; r[44]=223; r[45]=226; r[46]=231; r[47]=237; + r[48]=247; r[49]=249; r[50]=251; r[51]=253; r[52]=255; r[53]=257; r[54]=259; r[55]=261; + r[56]=263; r[57]=265; r[58]=267; r[59]=269; r[60]=274; r[61]=284; r[62]=288; r[63]=298; + r[64]=308; r[65]=319; r[66]=330; r[67]=332; r[68]=342; r[69]=350; r[70]=360; r[71]=373; + r[72]=387; r[73]=401; r[74]=409; r[75]=419; r[76]=434; r[77]=449; r[78]=459; r[79]=469; + r[80]=481; r[81]=484; r[82]=487; r[83]=500; r[84]=513; r[85]=517; r[86]=528; r[87]=539; + r[88]=555; r[89]=571; r[90]=586; r[91]=601; r[92]=617; r[93]=633; r[94]=643; r[95]=653; + r[96]=664; r[97]=675; r[98]=686; r[99]=699; r[100]=703; r[101]=715; r[102]=718; r[103]=721; + r[104]=734; r[105]=747; r[106]=751; r[107]=762; r[108]=772; r[109]=787; r[110]=803; r[111]=819; + r[112]=829; r[113]=839; r[114]=850; r[115]=866; r[116]=882; r[117]=893; r[118]=909; r[119]=926; + r[120]=940; r[121]=954; r[122]=959; r[123]=963; r[124]=974; r[125]=985; r[126]=1001; r[127]=1017; + r[128]=1033; r[129]=1044; r[130]=1055; r[131]=1071; r[132]=1084; r[133]=1097; r[134]=1108; r[135]=1125; + r[136]=1140; r[137]=1144; r[138]=1156; r[139]=1167; r[140]=1179; r[141]=1183; r[142]=1193; r[143]=1196; + r[144]=1199; r[145]=1209; r[146]=1215; r[147]=1224; r[148]=1234; r[149]=1244; r[150]=1253; r[151]=1255; + r[152]=1257; r[153]=1259; r[154]=1261; r[155]=1263; r[156]=1265; r[157]=1269; r[158]=1274; r[159]=1280; + r[160]=1287; r[161]=1292; r[162]=1299; r[163]=1301; r[164]=1303; r[165]=1305; r[166]=1307; r[167]=1309; + r[168]=1311; r[169]=1313; r[170]=1315; r[171]=1319; r[172]=1324; r[173]=1327; r[174]=1334; r[175]=1339; + r[176]=1345; r[177]=1347; r[178]=1349; r[179]=1351; r[180]=1353; r[181]=1355; r[182]=1357; r[183]=1359; + r[184]=1361; r[185]=1363; r[186]=1367; r[187]=1372; r[188]=1375; r[189]=1377; r[190]=1379; r[191]=1384; + r[192]=1386; r[193]=1388; r[194]=1391; r[195]=1393; r[196]=1395; r[197]=1397; r[198]=1399; r[199]=1402; + r[200]=1409; r[201]=1415; r[202]=1422; r[203]=1424; r[204]=1426; r[205]=1429; r[206]=1437; r[207]=1439; + r[208]=1441; r[209]=1443; r[210]=1446; r[211]=1449; r[212]=1453; r[213]=1456; r[214]=1460; r[215]=1463; + r[216]=1465; r[217]=1468; r[218]=1470; r[219]=1474; +} + +private static short[] create__hpricot_scan_index_offsets( ) +{ + short[] r = new short[220]; + init__hpricot_scan_index_offsets_0( r ); + return r; +} + +private static final short _hpricot_scan_index_offsets[] = create__hpricot_scan_index_offsets(); + + +private static void init__hpricot_scan_indicies_0( short[] r ) +{ + r[0]=1; r[1]=2; r[2]=3; r[3]=0; r[4]=4; r[5]=0; r[6]=5; r[7]=0; + r[8]=6; r[9]=0; r[10]=7; r[11]=0; r[12]=8; r[13]=0; r[14]=9; r[15]=0; + r[16]=10; r[17]=0; r[18]=11; r[19]=11; r[20]=0; r[21]=11; r[22]=12; r[23]=12; + r[24]=11; r[25]=12; r[26]=12; r[27]=0; r[28]=13; r[29]=15; r[30]=14; r[31]=16; + r[32]=14; r[33]=13; r[34]=14; r[35]=14; r[36]=14; r[37]=14; r[38]=0; r[39]=17; + r[40]=18; r[41]=19; r[42]=20; r[43]=21; r[44]=17; r[45]=0; r[46]=22; r[47]=0; + r[48]=23; r[49]=0; r[50]=24; r[51]=0; r[52]=25; r[53]=0; r[54]=26; r[55]=0; + r[56]=27; r[57]=27; r[58]=0; r[59]=27; r[60]=28; r[61]=29; r[62]=27; r[63]=0; + r[64]=30; r[65]=31; r[66]=30; r[67]=30; r[68]=30; r[69]=30; r[70]=30; r[71]=30; + r[72]=0; r[73]=32; r[74]=31; r[75]=32; r[76]=32; r[77]=32; r[78]=32; r[79]=32; + r[80]=32; r[81]=0; r[82]=33; r[83]=18; r[84]=21; r[85]=33; r[86]=0; r[87]=33; + r[88]=34; r[89]=35; r[90]=18; r[91]=21; r[92]=33; r[93]=0; r[94]=37; r[95]=36; + r[96]=37; r[97]=38; r[98]=40; r[99]=18; r[100]=21; r[101]=40; r[102]=39; r[103]=41; + r[104]=21; r[105]=41; r[106]=18; r[107]=41; r[108]=39; r[109]=37; r[110]=42; r[111]=37; + r[112]=43; r[113]=44; r[114]=45; r[115]=44; r[116]=44; r[117]=44; r[118]=44; r[119]=44; + r[120]=44; r[121]=44; r[122]=0; r[123]=46; r[124]=47; r[125]=46; r[126]=46; r[127]=46; + r[128]=46; r[129]=46; r[130]=46; r[131]=46; r[132]=0; r[133]=48; r[134]=48; r[135]=46; + r[136]=47; r[137]=18; r[138]=21; r[139]=46; r[140]=33; r[141]=46; r[142]=46; r[143]=46; + r[144]=46; r[145]=0; r[146]=48; r[147]=48; r[148]=34; r[149]=49; r[150]=18; r[151]=21; + r[152]=46; r[153]=33; r[154]=46; r[155]=46; r[156]=46; r[157]=46; r[158]=0; r[159]=50; + r[160]=50; r[161]=52; r[162]=53; r[163]=54; r[164]=55; r[165]=52; r[166]=51; r[167]=52; + r[168]=52; r[169]=52; r[170]=52; r[171]=42; r[172]=56; r[173]=56; r[174]=59; r[175]=60; + r[176]=61; r[177]=62; r[178]=58; r[179]=57; r[180]=58; r[181]=58; r[182]=58; r[183]=58; + r[184]=43; r[185]=57; r[186]=59; r[187]=63; r[188]=61; r[189]=62; r[190]=57; r[191]=43; + r[192]=65; r[193]=66; r[194]=64; r[195]=65; r[196]=68; r[197]=67; r[198]=69; r[199]=37; + r[200]=61; r[201]=62; r[202]=69; r[203]=43; r[204]=70; r[205]=71; r[206]=62; r[207]=72; + r[208]=73; r[209]=41; r[210]=72; r[211]=21; r[212]=71; r[213]=37; r[214]=61; r[215]=71; + r[216]=43; r[217]=74; r[218]=37; r[219]=75; r[220]=76; r[221]=74; r[222]=38; r[223]=70; + r[224]=77; r[225]=76; r[226]=77; r[227]=37; r[228]=75; r[229]=77; r[230]=38; r[231]=78; + r[232]=37; r[233]=54; r[234]=55; r[235]=78; r[236]=42; r[237]=58; r[238]=53; r[239]=58; + r[240]=58; r[241]=58; r[242]=58; r[243]=58; r[244]=58; r[245]=58; r[246]=43; r[247]=79; + r[248]=0; r[249]=80; r[250]=0; r[251]=81; r[252]=0; r[253]=82; r[254]=0; r[255]=83; + r[256]=0; r[257]=84; r[258]=0; r[259]=85; r[260]=0; r[261]=86; r[262]=0; r[263]=87; + r[264]=0; r[265]=88; r[266]=0; r[267]=89; r[268]=0; r[269]=90; r[270]=90; r[271]=90; + r[272]=90; r[273]=0; r[274]=91; r[275]=93; r[276]=92; r[277]=92; r[278]=91; r[279]=92; + r[280]=92; r[281]=92; r[282]=92; r[283]=0; r[284]=94; r[285]=95; r[286]=94; r[287]=0; + r[288]=96; r[289]=98; r[290]=99; r[291]=97; r[292]=97; r[293]=96; r[294]=97; r[295]=97; + r[296]=97; r[297]=0; r[298]=100; r[299]=102; r[300]=103; r[301]=101; r[302]=101; r[303]=100; + r[304]=101; r[305]=101; r[306]=101; r[307]=0; r[308]=104; r[309]=106; r[310]=107; r[311]=108; + r[312]=105; r[313]=105; r[314]=104; r[315]=105; r[316]=105; r[317]=105; r[318]=39; r[319]=109; + r[320]=111; r[321]=112; r[322]=113; r[323]=110; r[324]=110; r[325]=109; r[326]=110; r[327]=110; + r[328]=110; r[329]=39; r[330]=114; r[331]=39; r[332]=116; r[333]=116; r[334]=118; r[335]=119; + r[336]=120; r[337]=39; r[338]=113; r[339]=116; r[340]=117; r[341]=115; r[342]=122; r[343]=122; + r[344]=124; r[345]=39; r[346]=125; r[347]=122; r[348]=123; r[349]=121; r[350]=126; r[351]=111; + r[352]=113; r[353]=110; r[354]=110; r[355]=126; r[356]=110; r[357]=110; r[358]=110; r[359]=39; + r[360]=122; r[361]=122; r[362]=128; r[363]=39; r[364]=129; r[365]=127; r[366]=127; r[367]=122; + r[368]=123; r[369]=127; r[370]=127; r[371]=127; r[372]=121; r[373]=130; r[374]=130; r[375]=133; + r[376]=39; r[377]=134; r[378]=135; r[379]=132; r[380]=132; r[381]=130; r[382]=131; r[383]=132; + r[384]=132; r[385]=132; r[386]=121; r[387]=136; r[388]=136; r[389]=128; r[390]=39; r[391]=138; + r[392]=129; r[393]=127; r[394]=127; r[395]=136; r[396]=137; r[397]=127; r[398]=127; r[399]=127; + r[400]=121; r[401]=122; r[402]=122; r[403]=124; r[404]=39; r[405]=125; r[406]=122; r[407]=123; + r[408]=121; r[409]=139; r[410]=139; r[411]=141; r[412]=142; r[413]=143; r[414]=39; r[415]=125; + r[416]=139; r[417]=140; r[418]=115; r[419]=144; r[420]=144; r[421]=118; r[422]=119; r[423]=120; + r[424]=39; r[425]=113; r[426]=146; r[427]=146; r[428]=144; r[429]=145; r[430]=146; r[431]=146; + r[432]=146; r[433]=115; r[434]=139; r[435]=139; r[436]=141; r[437]=142; r[438]=147; r[439]=39; + r[440]=129; r[441]=146; r[442]=146; r[443]=139; r[444]=140; r[445]=146; r[446]=146; r[447]=146; + r[448]=115; r[449]=149; r[450]=149; r[451]=151; r[452]=152; r[453]=153; r[454]=154; r[455]=155; + r[456]=149; r[457]=150; r[458]=148; r[459]=157; r[460]=157; r[461]=151; r[462]=159; r[463]=160; + r[464]=161; r[465]=162; r[466]=157; r[467]=158; r[468]=156; r[469]=163; r[470]=164; r[471]=166; + r[472]=167; r[473]=165; r[474]=168; r[475]=165; r[476]=163; r[477]=165; r[478]=165; r[479]=165; + r[480]=160; r[481]=164; r[482]=168; r[483]=160; r[484]=169; r[485]=168; r[486]=160; r[487]=170; + r[488]=164; r[489]=172; r[490]=173; r[491]=174; r[492]=171; r[493]=168; r[494]=171; r[495]=170; + r[496]=171; r[497]=171; r[498]=171; r[499]=160; r[500]=175; r[501]=164; r[502]=166; r[503]=176; + r[504]=167; r[505]=165; r[506]=168; r[507]=165; r[508]=175; r[509]=165; r[510]=165; r[511]=165; + r[512]=160; r[513]=164; r[514]=177; r[515]=168; r[516]=160; r[517]=178; r[518]=178; r[519]=180; + r[520]=181; r[521]=182; r[522]=160; r[523]=167; r[524]=155; r[525]=178; r[526]=179; r[527]=148; + r[528]=183; r[529]=183; r[530]=180; r[531]=181; r[532]=182; r[533]=160; r[534]=167; r[535]=155; + r[536]=183; r[537]=184; r[538]=148; r[539]=183; r[540]=183; r[541]=180; r[542]=181; r[543]=182; + r[544]=160; r[545]=167; r[546]=185; r[547]=155; r[548]=185; r[549]=183; r[550]=184; r[551]=185; + r[552]=185; r[553]=185; r[554]=148; r[555]=186; r[556]=186; r[557]=188; r[558]=189; r[559]=190; + r[560]=160; r[561]=191; r[562]=185; r[563]=155; r[564]=185; r[565]=186; r[566]=187; r[567]=185; + r[568]=185; r[569]=185; r[570]=148; r[571]=149; r[572]=149; r[573]=151; r[574]=190; r[575]=153; + r[576]=192; r[577]=185; r[578]=155; r[579]=185; r[580]=149; r[581]=150; r[582]=185; r[583]=185; + r[584]=185; r[585]=148; r[586]=157; r[587]=157; r[588]=151; r[589]=194; r[590]=160; r[591]=191; + r[592]=193; r[593]=162; r[594]=193; r[595]=157; r[596]=158; r[597]=193; r[598]=193; r[599]=193; + r[600]=156; r[601]=195; r[602]=195; r[603]=151; r[604]=198; r[605]=160; r[606]=199; r[607]=200; + r[608]=197; r[609]=162; r[610]=197; r[611]=195; r[612]=196; r[613]=197; r[614]=197; r[615]=197; + r[616]=156; r[617]=201; r[618]=201; r[619]=151; r[620]=194; r[621]=160; r[622]=203; r[623]=191; + r[624]=193; r[625]=162; r[626]=193; r[627]=201; r[628]=202; r[629]=193; r[630]=193; r[631]=193; + r[632]=156; r[633]=157; r[634]=157; r[635]=151; r[636]=159; r[637]=160; r[638]=161; r[639]=162; + r[640]=157; r[641]=158; r[642]=156; r[643]=157; r[644]=157; r[645]=204; r[646]=159; r[647]=160; + r[648]=161; r[649]=162; r[650]=157; r[651]=158; r[652]=156; r[653]=186; r[654]=186; r[655]=188; + r[656]=189; r[657]=152; r[658]=160; r[659]=161; r[660]=155; r[661]=186; r[662]=187; r[663]=148; + r[664]=206; r[665]=206; r[666]=208; r[667]=204; r[668]=209; r[669]=210; r[670]=211; r[671]=212; + r[672]=206; r[673]=207; r[674]=205; r[675]=214; r[676]=214; r[677]=216; r[678]=204; r[679]=217; + r[680]=218; r[681]=219; r[682]=220; r[683]=214; r[684]=215; r[685]=213; r[686]=221; r[687]=222; + r[688]=169; r[689]=224; r[690]=225; r[691]=223; r[692]=226; r[693]=223; r[694]=221; r[695]=223; + r[696]=223; r[697]=223; r[698]=218; r[699]=222; r[700]=169; r[701]=226; r[702]=218; r[703]=228; + r[704]=164; r[705]=230; r[706]=231; r[707]=229; r[708]=232; r[709]=229; r[710]=228; r[711]=229; + r[712]=229; r[713]=229; r[714]=227; r[715]=164; r[716]=232; r[717]=227; r[718]=222; r[719]=232; + r[720]=227; r[721]=233; r[722]=164; r[723]=235; r[724]=236; r[725]=237; r[726]=234; r[727]=232; + r[728]=234; r[729]=233; r[730]=234; r[731]=234; r[732]=234; r[733]=227; r[734]=238; r[735]=164; + r[736]=230; r[737]=239; r[738]=231; r[739]=229; r[740]=232; r[741]=229; r[742]=238; r[743]=229; + r[744]=229; r[745]=229; r[746]=227; r[747]=164; r[748]=240; r[749]=232; r[750]=227; r[751]=242; + r[752]=242; r[753]=244; r[754]=245; r[755]=246; r[756]=227; r[757]=231; r[758]=247; r[759]=242; + r[760]=243; r[761]=241; r[762]=249; r[763]=249; r[764]=151; r[765]=251; r[766]=227; r[767]=252; + r[768]=253; r[769]=249; r[770]=250; r[771]=248; r[772]=249; r[773]=249; r[774]=151; r[775]=255; + r[776]=227; r[777]=256; r[778]=254; r[779]=253; r[780]=254; r[781]=249; r[782]=250; r[783]=254; + r[784]=254; r[785]=254; r[786]=248; r[787]=257; r[788]=257; r[789]=151; r[790]=260; r[791]=227; + r[792]=261; r[793]=262; r[794]=259; r[795]=253; r[796]=259; r[797]=257; r[798]=258; r[799]=259; + r[800]=259; r[801]=259; r[802]=248; r[803]=263; r[804]=263; r[805]=151; r[806]=255; r[807]=227; + r[808]=265; r[809]=256; r[810]=254; r[811]=253; r[812]=254; r[813]=263; r[814]=264; r[815]=254; + r[816]=254; r[817]=254; r[818]=248; r[819]=249; r[820]=249; r[821]=151; r[822]=251; r[823]=227; + r[824]=252; r[825]=253; r[826]=249; r[827]=250; r[828]=248; r[829]=249; r[830]=249; r[831]=216; + r[832]=251; r[833]=227; r[834]=252; r[835]=253; r[836]=249; r[837]=250; r[838]=248; r[839]=266; + r[840]=266; r[841]=268; r[842]=269; r[843]=270; r[844]=227; r[845]=252; r[846]=247; r[847]=266; + r[848]=267; r[849]=241; r[850]=271; r[851]=271; r[852]=244; r[853]=245; r[854]=246; r[855]=227; + r[856]=231; r[857]=273; r[858]=247; r[859]=273; r[860]=271; r[861]=272; r[862]=273; r[863]=273; + r[864]=273; r[865]=241; r[866]=266; r[867]=266; r[868]=268; r[869]=269; r[870]=274; r[871]=227; + r[872]=256; r[873]=273; r[874]=247; r[875]=273; r[876]=266; r[877]=267; r[878]=273; r[879]=273; + r[880]=273; r[881]=241; r[882]=206; r[883]=206; r[884]=216; r[885]=275; r[886]=209; r[887]=210; + r[888]=211; r[889]=212; r[890]=206; r[891]=207; r[892]=205; r[893]=214; r[894]=214; r[895]=216; + r[896]=204; r[897]=277; r[898]=218; r[899]=278; r[900]=276; r[901]=220; r[902]=276; r[903]=214; + r[904]=215; r[905]=276; r[906]=276; r[907]=276; r[908]=213; r[909]=279; r[910]=279; r[911]=216; + r[912]=204; r[913]=282; r[914]=218; r[915]=283; r[916]=284; r[917]=281; r[918]=220; r[919]=281; + r[920]=279; r[921]=280; r[922]=281; r[923]=281; r[924]=281; r[925]=213; r[926]=285; r[927]=222; + r[928]=169; r[929]=224; r[930]=286; r[931]=225; r[932]=223; r[933]=226; r[934]=223; r[935]=285; + r[936]=223; r[937]=223; r[938]=223; r[939]=218; r[940]=287; r[941]=222; r[942]=169; r[943]=289; + r[944]=290; r[945]=291; r[946]=288; r[947]=226; r[948]=288; r[949]=287; r[950]=288; r[951]=288; + r[952]=288; r[953]=218; r[954]=222; r[955]=169; r[956]=292; r[957]=226; r[958]=218; r[959]=293; + r[960]=293; r[961]=226; r[962]=218; r[963]=294; r[964]=294; r[965]=296; r[966]=297; r[967]=298; + r[968]=218; r[969]=225; r[970]=212; r[971]=294; r[972]=295; r[973]=205; r[974]=299; r[975]=299; + r[976]=296; r[977]=297; r[978]=298; r[979]=218; r[980]=225; r[981]=212; r[982]=299; r[983]=300; + r[984]=205; r[985]=299; r[986]=299; r[987]=296; r[988]=297; r[989]=298; r[990]=218; r[991]=225; + r[992]=301; r[993]=212; r[994]=301; r[995]=299; r[996]=300; r[997]=301; r[998]=301; r[999]=301; + r[1000]=205; r[1001]=302; r[1002]=302; r[1003]=304; r[1004]=305; r[1005]=306; r[1006]=218; r[1007]=278; + r[1008]=301; r[1009]=212; r[1010]=301; r[1011]=302; r[1012]=303; r[1013]=301; r[1014]=301; r[1015]=301; + r[1016]=205; r[1017]=206; r[1018]=206; r[1019]=216; r[1020]=275; r[1021]=306; r[1022]=210; r[1023]=307; + r[1024]=301; r[1025]=212; r[1026]=301; r[1027]=206; r[1028]=207; r[1029]=301; r[1030]=301; r[1031]=301; + r[1032]=205; r[1033]=214; r[1034]=214; r[1035]=216; r[1036]=204; r[1037]=217; r[1038]=218; r[1039]=219; + r[1040]=220; r[1041]=214; r[1042]=215; r[1043]=213; r[1044]=214; r[1045]=214; r[1046]=308; r[1047]=308; + r[1048]=217; r[1049]=218; r[1050]=219; r[1051]=220; r[1052]=214; r[1053]=215; r[1054]=213; r[1055]=206; + r[1056]=206; r[1057]=208; r[1058]=204; r[1059]=306; r[1060]=210; r[1061]=307; r[1062]=301; r[1063]=212; + r[1064]=301; r[1065]=206; r[1066]=207; r[1067]=301; r[1068]=301; r[1069]=301; r[1070]=205; r[1071]=309; + r[1072]=222; r[1073]=310; r[1074]=312; r[1075]=313; r[1076]=311; r[1077]=314; r[1078]=311; r[1079]=309; + r[1080]=311; r[1081]=311; r[1082]=311; r[1083]=210; r[1084]=309; r[1085]=315; r[1086]=169; r[1087]=312; + r[1088]=313; r[1089]=311; r[1090]=314; r[1091]=311; r[1092]=309; r[1093]=311; r[1094]=311; r[1095]=311; + r[1096]=210; r[1097]=302; r[1098]=302; r[1099]=304; r[1100]=305; r[1101]=209; r[1102]=218; r[1103]=219; + r[1104]=212; r[1105]=302; r[1106]=303; r[1107]=205; r[1108]=316; r[1109]=316; r[1110]=216; r[1111]=204; + r[1112]=277; r[1113]=218; r[1114]=318; r[1115]=278; r[1116]=276; r[1117]=220; r[1118]=276; r[1119]=316; + r[1120]=317; r[1121]=276; r[1122]=276; r[1123]=276; r[1124]=213; r[1125]=319; r[1126]=319; r[1127]=151; + r[1128]=274; r[1129]=321; r[1130]=322; r[1131]=273; r[1132]=247; r[1133]=273; r[1134]=319; r[1135]=320; + r[1136]=273; r[1137]=273; r[1138]=273; r[1139]=241; r[1140]=222; r[1141]=310; r[1142]=314; r[1143]=210; + r[1144]=323; r[1145]=164; r[1146]=325; r[1147]=326; r[1148]=324; r[1149]=327; r[1150]=324; r[1151]=323; + r[1152]=324; r[1153]=324; r[1154]=324; r[1155]=321; r[1156]=271; r[1157]=271; r[1158]=244; r[1159]=245; + r[1160]=246; r[1161]=227; r[1162]=231; r[1163]=247; r[1164]=271; r[1165]=272; r[1166]=241; r[1167]=328; + r[1168]=164; r[1169]=330; r[1170]=331; r[1171]=329; r[1172]=332; r[1173]=329; r[1174]=328; r[1175]=329; + r[1176]=329; r[1177]=329; r[1178]=153; r[1179]=315; r[1180]=169; r[1181]=314; r[1182]=210; r[1183]=319; + r[1184]=319; r[1185]=151; r[1186]=270; r[1187]=321; r[1188]=333; r[1189]=247; r[1190]=319; r[1191]=320; + r[1192]=241; r[1193]=164; r[1194]=332; r[1195]=153; r[1196]=164; r[1197]=327; r[1198]=321; r[1199]=144; + r[1200]=144; r[1201]=118; r[1202]=119; r[1203]=120; r[1204]=39; r[1205]=113; r[1206]=144; r[1207]=145; + r[1208]=115; r[1209]=334; r[1210]=334; r[1211]=335; r[1212]=334; r[1213]=334; r[1214]=0; r[1215]=336; + r[1216]=337; r[1217]=337; r[1218]=336; r[1219]=337; r[1220]=337; r[1221]=337; r[1222]=337; r[1223]=0; + r[1224]=336; r[1225]=337; r[1226]=337; r[1227]=338; r[1228]=336; r[1229]=337; r[1230]=337; r[1231]=337; + r[1232]=337; r[1233]=0; r[1234]=336; r[1235]=337; r[1236]=337; r[1237]=339; r[1238]=336; r[1239]=337; + r[1240]=337; r[1241]=337; r[1242]=337; r[1243]=0; r[1244]=340; r[1245]=337; r[1246]=337; r[1247]=340; + r[1248]=337; r[1249]=337; r[1250]=337; r[1251]=337; r[1252]=0; r[1253]=342; r[1254]=341; r[1255]=343; + r[1256]=341; r[1257]=344; r[1258]=341; r[1259]=345; r[1260]=341; r[1261]=346; r[1262]=341; r[1263]=347; + r[1264]=341; r[1265]=347; r[1266]=348; r[1267]=347; r[1268]=341; r[1269]=348; r[1270]=349; r[1271]=350; + r[1272]=348; r[1273]=341; r[1274]=351; r[1275]=351; r[1276]=351; r[1277]=351; r[1278]=351; r[1279]=341; + r[1280]=352; r[1281]=353; r[1282]=353; r[1283]=353; r[1284]=353; r[1285]=353; r[1286]=341; r[1287]=354; + r[1288]=355; r[1289]=356; r[1290]=354; r[1291]=341; r[1292]=354; r[1293]=355; r[1294]=356; r[1295]=357; + r[1296]=358; r[1297]=354; r[1298]=341; r[1299]=355; r[1300]=341; r[1301]=359; r[1302]=341; r[1303]=360; + r[1304]=341; r[1305]=361; r[1306]=341; r[1307]=362; r[1308]=341; r[1309]=363; r[1310]=341; r[1311]=364; + r[1312]=341; r[1313]=365; r[1314]=341; r[1315]=365; r[1316]=366; r[1317]=365; r[1318]=341; r[1319]=366; + r[1320]=367; r[1321]=368; r[1322]=366; r[1323]=341; r[1324]=369; r[1325]=369; r[1326]=341; r[1327]=370; + r[1328]=371; r[1329]=371; r[1330]=371; r[1331]=371; r[1332]=371; r[1333]=341; r[1334]=372; r[1335]=355; + r[1336]=356; r[1337]=372; r[1338]=341; r[1339]=372; r[1340]=355; r[1341]=356; r[1342]=358; r[1343]=372; + r[1344]=341; r[1345]=373; r[1346]=341; r[1347]=374; r[1348]=341; r[1349]=375; r[1350]=341; r[1351]=376; + r[1352]=341; r[1353]=377; r[1354]=341; r[1355]=378; r[1356]=341; r[1357]=379; r[1358]=341; r[1359]=380; + r[1360]=341; r[1361]=381; r[1362]=341; r[1363]=381; r[1364]=382; r[1365]=381; r[1366]=341; r[1367]=382; + r[1368]=383; r[1369]=384; r[1370]=382; r[1371]=341; r[1372]=385; r[1373]=386; r[1374]=341; r[1375]=387; + r[1376]=341; r[1377]=388; r[1378]=341; r[1379]=389; r[1380]=355; r[1381]=356; r[1382]=389; r[1383]=341; + r[1384]=390; r[1385]=341; r[1386]=387; r[1387]=341; r[1388]=391; r[1389]=392; r[1390]=341; r[1391]=393; + r[1392]=341; r[1393]=388; r[1394]=341; r[1395]=394; r[1396]=341; r[1397]=393; r[1398]=341; r[1399]=395; + r[1400]=395; r[1401]=341; r[1402]=370; r[1403]=396; r[1404]=396; r[1405]=396; r[1406]=396; r[1407]=396; + r[1408]=341; r[1409]=397; r[1410]=397; r[1411]=397; r[1412]=397; r[1413]=397; r[1414]=341; r[1415]=352; + r[1416]=398; r[1417]=398; r[1418]=398; r[1419]=398; r[1420]=398; r[1421]=341; r[1422]=400; r[1423]=399; + r[1424]=402; r[1425]=401; r[1426]=404; r[1427]=405; r[1428]=403; r[1429]=407; r[1430]=408; r[1431]=409; + r[1432]=410; r[1433]=409; r[1434]=409; r[1435]=409; r[1436]=406; r[1437]=37; r[1438]=43; r[1439]=41; + r[1440]=21; r[1441]=37; r[1442]=38; r[1443]=164; r[1444]=168; r[1445]=160; r[1446]=164; r[1447]=232; + r[1448]=227; r[1449]=222; r[1450]=169; r[1451]=226; r[1452]=218; r[1453]=336; r[1454]=336; r[1455]=411; + r[1456]=340; r[1457]=412; r[1458]=340; r[1459]=411; r[1460]=414; r[1461]=415; r[1462]=413; r[1463]=417; + r[1464]=416; r[1465]=419; r[1466]=420; r[1467]=418; r[1468]=422; r[1469]=421; r[1470]=424; r[1471]=425; + r[1472]=426; r[1473]=423; r[1474]=425; r[1475]=427; r[1476]=0; +} + +private static short[] create__hpricot_scan_indicies( ) +{ + short[] r = new short[1477]; + init__hpricot_scan_indicies_0( r ); + return r; +} + +private static final short _hpricot_scan_indicies[] = create__hpricot_scan_indicies(); + + +private static void init__hpricot_scan_trans_targs_wi_0( short[] r ) +{ + r[0]=204; r[1]=1; r[2]=2; r[3]=53; r[4]=204; r[5]=3; r[6]=4; r[7]=5; + r[8]=6; r[9]=7; r[10]=8; r[11]=9; r[12]=10; r[13]=11; r[14]=10; r[15]=204; + r[16]=26; r[17]=11; r[18]=204; r[19]=12; r[20]=48; r[21]=26; r[22]=13; r[23]=14; + r[24]=15; r[25]=16; r[26]=17; r[27]=18; r[28]=19; r[29]=30; r[30]=20; r[31]=21; + r[32]=20; r[33]=22; r[34]=23; r[35]=28; r[36]=24; r[37]=25; r[38]=24; r[39]=204; + r[40]=25; r[41]=27; r[42]=29; r[43]=29; r[44]=31; r[45]=32; r[46]=31; r[47]=32; + r[48]=33; r[49]=34; r[50]=35; r[51]=36; r[52]=47; r[53]=32; r[54]=206; r[55]=40; + r[56]=35; r[57]=36; r[58]=47; r[59]=37; r[60]=34; r[61]=206; r[62]=40; r[63]=46; + r[64]=38; r[65]=39; r[66]=43; r[67]=38; r[68]=43; r[69]=39; r[70]=41; r[71]=42; + r[72]=41; r[73]=207; r[74]=43; r[75]=208; r[76]=44; r[77]=45; r[78]=39; r[79]=49; + r[80]=50; r[81]=51; r[82]=52; r[83]=21; r[84]=54; r[85]=55; r[86]=56; r[87]=57; + r[88]=58; r[89]=204; r[90]=60; r[91]=61; r[92]=60; r[93]=204; r[94]=61; r[95]=204; + r[96]=63; r[97]=62; r[98]=66; r[99]=204; r[100]=63; r[101]=64; r[102]=66; r[103]=204; + r[104]=65; r[105]=64; r[106]=66; r[107]=67; r[108]=204; r[109]=65; r[110]=64; r[111]=66; + r[112]=67; r[113]=204; r[114]=204; r[115]=68; r[116]=144; r[117]=74; r[118]=142; r[119]=143; + r[120]=73; r[121]=68; r[122]=69; r[123]=70; r[124]=73; r[125]=204; r[126]=69; r[127]=71; + r[128]=73; r[129]=204; r[130]=65; r[131]=72; r[132]=71; r[133]=73; r[134]=74; r[135]=204; + r[136]=65; r[137]=72; r[138]=74; r[139]=75; r[140]=76; r[141]=77; r[142]=141; r[143]=73; + r[144]=75; r[145]=76; r[146]=71; r[147]=73; r[148]=78; r[149]=79; r[150]=90; r[151]=70; + r[152]=93; r[153]=80; r[154]=209; r[155]=94; r[156]=78; r[157]=79; r[158]=90; r[159]=93; + r[160]=80; r[161]=209; r[162]=94; r[163]=79; r[164]=69; r[165]=82; r[166]=84; r[167]=209; + r[168]=81; r[169]=79; r[170]=83; r[171]=82; r[172]=84; r[173]=85; r[174]=209; r[175]=83; + r[176]=85; r[177]=209; r[178]=86; r[179]=95; r[180]=139; r[181]=140; r[182]=93; r[183]=87; + r[184]=88; r[185]=91; r[186]=87; r[187]=88; r[188]=89; r[189]=96; r[190]=93; r[191]=209; + r[192]=209; r[193]=91; r[194]=93; r[195]=83; r[196]=92; r[197]=91; r[198]=93; r[199]=95; + r[200]=209; r[201]=83; r[202]=92; r[203]=95; r[204]=90; r[205]=97; r[206]=98; r[207]=117; + r[208]=108; r[209]=128; r[210]=99; r[211]=211; r[212]=129; r[213]=97; r[214]=98; r[215]=117; + r[216]=108; r[217]=128; r[218]=99; r[219]=211; r[220]=129; r[221]=98; r[222]=100; r[223]=120; + r[224]=121; r[225]=211; r[226]=122; r[227]=101; r[228]=100; r[229]=103; r[230]=105; r[231]=210; + r[232]=102; r[233]=104; r[234]=103; r[235]=105; r[236]=106; r[237]=210; r[238]=104; r[239]=106; + r[240]=210; r[241]=107; r[242]=138; r[243]=113; r[244]=136; r[245]=137; r[246]=111; r[247]=112; + r[248]=107; r[249]=100; r[250]=108; r[251]=111; r[252]=210; r[253]=112; r[254]=109; r[255]=111; + r[256]=210; r[257]=104; r[258]=110; r[259]=109; r[260]=111; r[261]=113; r[262]=210; r[263]=104; + r[264]=110; r[265]=113; r[266]=114; r[267]=115; r[268]=116; r[269]=135; r[270]=111; r[271]=114; + r[272]=115; r[273]=109; r[274]=111; r[275]=90; r[276]=118; r[277]=128; r[278]=211; r[279]=119; + r[280]=134; r[281]=118; r[282]=128; r[283]=133; r[284]=211; r[285]=119; r[286]=123; r[287]=119; + r[288]=120; r[289]=121; r[290]=123; r[291]=211; r[292]=211; r[293]=98; r[294]=124; r[295]=133; + r[296]=131; r[297]=132; r[298]=128; r[299]=125; r[300]=126; r[301]=118; r[302]=125; r[303]=126; + r[304]=127; r[305]=130; r[306]=128; r[307]=211; r[308]=117; r[309]=98; r[310]=79; r[311]=120; + r[312]=121; r[313]=211; r[314]=122; r[315]=100; r[316]=119; r[317]=134; r[318]=133; r[319]=100; + r[320]=108; r[321]=101; r[322]=210; r[323]=100; r[324]=103; r[325]=105; r[326]=210; r[327]=102; + r[328]=79; r[329]=82; r[330]=84; r[331]=209; r[332]=81; r[333]=210; r[334]=146; r[335]=147; + r[336]=212; r[337]=146; r[338]=148; r[339]=149; r[340]=213; r[341]=204; r[342]=151; r[343]=152; + r[344]=153; r[345]=154; r[346]=155; r[347]=156; r[348]=157; r[349]=158; r[350]=200; r[351]=159; + r[352]=160; r[353]=159; r[354]=161; r[355]=204; r[356]=162; r[357]=163; r[358]=176; r[359]=164; + r[360]=165; r[361]=166; r[362]=167; r[363]=168; r[364]=169; r[365]=170; r[366]=171; r[367]=172; + r[368]=198; r[369]=173; r[370]=174; r[371]=173; r[372]=175; r[373]=177; r[374]=178; r[375]=179; + r[376]=180; r[377]=181; r[378]=182; r[379]=183; r[380]=184; r[381]=185; r[382]=186; r[383]=187; + r[384]=193; r[385]=188; r[386]=191; r[387]=189; r[388]=190; r[389]=190; r[390]=192; r[391]=194; + r[392]=196; r[393]=195; r[394]=197; r[395]=199; r[396]=199; r[397]=201; r[398]=201; r[399]=214; + r[400]=214; r[401]=216; r[402]=216; r[403]=204; r[404]=204; r[405]=205; r[406]=204; r[407]=0; + r[408]=59; r[409]=62; r[410]=145; r[411]=204; r[412]=150; r[413]=214; r[414]=214; r[415]=215; + r[416]=214; r[417]=202; r[418]=216; r[419]=216; r[420]=217; r[421]=216; r[422]=203; r[423]=218; + r[424]=218; r[425]=218; r[426]=219; r[427]=218; +} + +private static short[] create__hpricot_scan_trans_targs_wi( ) +{ + short[] r = new short[428]; + init__hpricot_scan_trans_targs_wi_0( r ); + return r; +} + +private static final short _hpricot_scan_trans_targs_wi[] = create__hpricot_scan_trans_targs_wi(); + + +private static void init__hpricot_scan_trans_actions_wi_0( short[] r ) +{ + r[0]=71; r[1]=0; r[2]=0; r[3]=0; r[4]=59; r[5]=0; r[6]=0; r[7]=0; + r[8]=0; r[9]=0; r[10]=0; r[11]=0; r[12]=1; r[13]=5; r[14]=0; r[15]=90; + r[16]=5; r[17]=0; r[18]=51; r[19]=0; r[20]=0; r[21]=0; r[22]=0; r[23]=0; + r[24]=0; r[25]=0; r[26]=0; r[27]=0; r[28]=0; r[29]=0; r[30]=3; r[31]=19; + r[32]=0; r[33]=0; r[34]=0; r[35]=0; r[36]=3; r[37]=21; r[38]=0; r[39]=73; + r[40]=0; r[41]=0; r[42]=3; r[43]=0; r[44]=3; r[45]=81; r[46]=0; r[47]=19; + r[48]=0; r[49]=19; r[50]=3; r[51]=3; r[52]=3; r[53]=111; r[54]=182; r[55]=3; + r[56]=0; r[57]=0; r[58]=0; r[59]=0; r[60]=111; r[61]=144; r[62]=0; r[63]=21; + r[64]=3; r[65]=21; r[66]=84; r[67]=0; r[68]=21; r[69]=0; r[70]=21; r[71]=0; + r[72]=0; r[73]=144; r[74]=0; r[75]=144; r[76]=0; r[77]=0; r[78]=3; r[79]=0; + r[80]=0; r[81]=0; r[82]=0; r[83]=0; r[84]=0; r[85]=0; r[86]=0; r[87]=0; + r[88]=0; r[89]=61; r[90]=1; r[91]=5; r[92]=0; r[93]=96; r[94]=0; r[95]=55; + r[96]=5; r[97]=0; r[98]=5; r[99]=93; r[100]=0; r[101]=114; r[102]=0; r[103]=53; + r[104]=11; r[105]=0; r[106]=108; r[107]=11; r[108]=166; r[109]=0; r[110]=174; r[111]=23; + r[112]=0; r[113]=120; r[114]=57; r[115]=3; r[116]=3; r[117]=3; r[118]=0; r[119]=0; + r[120]=87; r[121]=0; r[122]=9; r[123]=9; r[124]=102; r[125]=162; r[126]=0; r[127]=174; + r[128]=117; r[129]=170; r[130]=105; r[131]=105; r[132]=0; r[133]=158; r[134]=11; r[135]=195; + r[136]=9; r[137]=9; r[138]=0; r[139]=78; r[140]=78; r[141]=0; r[142]=0; r[143]=150; + r[144]=3; r[145]=3; r[146]=190; r[147]=154; r[148]=3; r[149]=78; r[150]=78; r[151]=7; + r[152]=150; r[153]=3; r[154]=220; r[155]=3; r[156]=0; r[157]=9; r[158]=9; r[159]=102; + r[160]=0; r[161]=205; r[162]=0; r[163]=0; r[164]=7; r[165]=174; r[166]=23; r[167]=186; + r[168]=0; r[169]=7; r[170]=11; r[171]=0; r[172]=108; r[173]=11; r[174]=210; r[175]=0; + r[176]=0; r[177]=147; r[178]=3; r[179]=3; r[180]=7; r[181]=0; r[182]=87; r[183]=3; + r[184]=3; r[185]=190; r[186]=78; r[187]=78; r[188]=7; r[189]=0; r[190]=154; r[191]=215; + r[192]=226; r[193]=174; r[194]=117; r[195]=105; r[196]=105; r[197]=0; r[198]=158; r[199]=11; + r[200]=232; r[201]=9; r[202]=9; r[203]=0; r[204]=7; r[205]=3; r[206]=78; r[207]=78; + r[208]=99; r[209]=150; r[210]=3; r[211]=220; r[212]=3; r[213]=0; r[214]=9; r[215]=9; + r[216]=7; r[217]=102; r[218]=0; r[219]=205; r[220]=0; r[221]=0; r[222]=7; r[223]=174; + r[224]=23; r[225]=186; r[226]=0; r[227]=0; r[228]=0; r[229]=174; r[230]=23; r[231]=186; + r[232]=0; r[233]=11; r[234]=0; r[235]=108; r[236]=11; r[237]=210; r[238]=0; r[239]=0; + r[240]=147; r[241]=3; r[242]=3; r[243]=3; r[244]=0; r[245]=7; r[246]=87; r[247]=3; + r[248]=0; r[249]=9; r[250]=9; r[251]=102; r[252]=205; r[253]=0; r[254]=174; r[255]=117; + r[256]=215; r[257]=105; r[258]=105; r[259]=0; r[260]=158; r[261]=11; r[262]=232; r[263]=9; + r[264]=9; r[265]=0; r[266]=78; r[267]=78; r[268]=0; r[269]=7; r[270]=150; r[271]=3; + r[272]=3; r[273]=190; r[274]=154; r[275]=75; r[276]=174; r[277]=117; r[278]=215; r[279]=105; + r[280]=105; r[281]=0; r[282]=158; r[283]=11; r[284]=232; r[285]=0; r[286]=0; r[287]=11; + r[288]=0; r[289]=108; r[290]=11; r[291]=210; r[292]=147; r[293]=7; r[294]=3; r[295]=3; + r[296]=7; r[297]=7; r[298]=87; r[299]=3; r[300]=3; r[301]=190; r[302]=78; r[303]=78; + r[304]=7; r[305]=7; r[306]=154; r[307]=226; r[308]=7; r[309]=3; r[310]=75; r[311]=190; + r[312]=87; r[313]=200; r[314]=3; r[315]=99; r[316]=9; r[317]=9; r[318]=0; r[319]=78; + r[320]=78; r[321]=3; r[322]=226; r[323]=3; r[324]=190; r[325]=87; r[326]=200; r[327]=3; + r[328]=3; r[329]=190; r[330]=87; r[331]=200; r[332]=3; r[333]=220; r[334]=25; r[335]=25; + r[336]=0; r[337]=0; r[338]=0; r[339]=0; r[340]=31; r[341]=69; r[342]=0; r[343]=0; + r[344]=0; r[345]=0; r[346]=0; r[347]=0; r[348]=0; r[349]=0; r[350]=0; r[351]=3; + r[352]=13; r[353]=0; r[354]=0; r[355]=49; r[356]=0; r[357]=0; r[358]=0; r[359]=0; + r[360]=0; r[361]=0; r[362]=0; r[363]=0; r[364]=0; r[365]=0; r[366]=0; r[367]=0; + r[368]=0; r[369]=3; r[370]=15; r[371]=0; r[372]=0; r[373]=0; r[374]=0; r[375]=0; + r[376]=0; r[377]=0; r[378]=0; r[379]=0; r[380]=0; r[381]=0; r[382]=0; r[383]=0; + r[384]=0; r[385]=3; r[386]=3; r[387]=0; r[388]=17; r[389]=0; r[390]=0; r[391]=3; + r[392]=3; r[393]=0; r[394]=0; r[395]=3; r[396]=0; r[397]=3; r[398]=0; r[399]=37; + r[400]=135; r[401]=43; r[402]=138; r[403]=63; r[404]=132; r[405]=178; r[406]=67; r[407]=0; + r[408]=0; r[409]=1; r[410]=0; r[411]=65; r[412]=0; r[413]=33; r[414]=123; r[415]=31; + r[416]=35; r[417]=0; r[418]=39; r[419]=126; r[420]=31; r[421]=41; r[422]=0; r[423]=45; + r[424]=129; r[425]=141; r[426]=0; r[427]=47; +} + +private static short[] create__hpricot_scan_trans_actions_wi( ) +{ + short[] r = new short[428]; + init__hpricot_scan_trans_actions_wi_0( r ); + return r; +} + +private static final short _hpricot_scan_trans_actions_wi[] = create__hpricot_scan_trans_actions_wi(); + + +private static void init__hpricot_scan_to_state_actions_0( short[] r ) +{ + r[0]=0; r[1]=0; r[2]=0; r[3]=0; r[4]=0; r[5]=0; r[6]=0; r[7]=0; + r[8]=0; r[9]=0; r[10]=0; r[11]=0; r[12]=0; r[13]=0; r[14]=0; r[15]=0; + r[16]=0; r[17]=0; r[18]=0; r[19]=0; r[20]=0; r[21]=0; r[22]=0; r[23]=0; + r[24]=0; r[25]=0; r[26]=0; r[27]=0; r[28]=0; r[29]=0; r[30]=0; r[31]=0; + r[32]=0; r[33]=0; r[34]=0; r[35]=0; r[36]=0; r[37]=0; r[38]=0; r[39]=0; + r[40]=0; r[41]=0; r[42]=0; r[43]=0; r[44]=0; r[45]=0; r[46]=0; r[47]=0; + r[48]=0; r[49]=0; r[50]=0; r[51]=0; r[52]=0; r[53]=0; r[54]=0; r[55]=0; + r[56]=0; r[57]=0; r[58]=0; r[59]=0; r[60]=0; r[61]=0; r[62]=0; r[63]=0; + r[64]=0; r[65]=0; r[66]=0; r[67]=0; r[68]=0; r[69]=0; r[70]=0; r[71]=0; + r[72]=0; r[73]=0; r[74]=0; r[75]=0; r[76]=0; r[77]=0; r[78]=0; r[79]=0; + r[80]=0; r[81]=0; r[82]=0; r[83]=0; r[84]=0; r[85]=0; r[86]=0; r[87]=0; + r[88]=0; r[89]=0; r[90]=0; r[91]=0; r[92]=0; r[93]=0; r[94]=0; r[95]=0; + r[96]=0; r[97]=0; r[98]=0; r[99]=0; r[100]=0; r[101]=0; r[102]=0; r[103]=0; + r[104]=0; r[105]=0; r[106]=0; r[107]=0; r[108]=0; r[109]=0; r[110]=0; r[111]=0; + r[112]=0; r[113]=0; r[114]=0; r[115]=0; r[116]=0; r[117]=0; r[118]=0; r[119]=0; + r[120]=0; r[121]=0; r[122]=0; r[123]=0; r[124]=0; r[125]=0; r[126]=0; r[127]=0; + r[128]=0; r[129]=0; r[130]=0; r[131]=0; r[132]=0; r[133]=0; r[134]=0; r[135]=0; + r[136]=0; r[137]=0; r[138]=0; r[139]=0; r[140]=0; r[141]=0; r[142]=0; r[143]=0; + r[144]=0; r[145]=0; r[146]=0; r[147]=0; r[148]=0; r[149]=0; r[150]=0; r[151]=0; + r[152]=0; r[153]=0; r[154]=0; r[155]=0; r[156]=0; r[157]=0; r[158]=0; r[159]=0; + r[160]=0; r[161]=0; r[162]=0; r[163]=0; r[164]=0; r[165]=0; r[166]=0; r[167]=0; + r[168]=0; r[169]=0; r[170]=0; r[171]=0; r[172]=0; r[173]=0; r[174]=0; r[175]=0; + r[176]=0; r[177]=0; r[178]=0; r[179]=0; r[180]=0; r[181]=0; r[182]=0; r[183]=0; + r[184]=0; r[185]=0; r[186]=0; r[187]=0; r[188]=0; r[189]=0; r[190]=0; r[191]=0; + r[192]=0; r[193]=0; r[194]=0; r[195]=0; r[196]=0; r[197]=0; r[198]=0; r[199]=0; + r[200]=0; r[201]=0; r[202]=0; r[203]=0; r[204]=27; r[205]=0; r[206]=0; r[207]=0; + r[208]=0; r[209]=0; r[210]=0; r[211]=0; r[212]=0; r[213]=0; r[214]=27; r[215]=0; + r[216]=27; r[217]=0; r[218]=27; r[219]=0; +} + +private static short[] create__hpricot_scan_to_state_actions( ) +{ + short[] r = new short[220]; + init__hpricot_scan_to_state_actions_0( r ); + return r; +} + +private static final short _hpricot_scan_to_state_actions[] = create__hpricot_scan_to_state_actions(); + + +private static void init__hpricot_scan_from_state_actions_0( short[] r ) +{ + r[0]=0; r[1]=0; r[2]=0; r[3]=0; r[4]=0; r[5]=0; r[6]=0; r[7]=0; + r[8]=0; r[9]=0; r[10]=0; r[11]=0; r[12]=0; r[13]=0; r[14]=0; r[15]=0; + r[16]=0; r[17]=0; r[18]=0; r[19]=0; r[20]=0; r[21]=0; r[22]=0; r[23]=0; + r[24]=0; r[25]=0; r[26]=0; r[27]=0; r[28]=0; r[29]=0; r[30]=0; r[31]=0; + r[32]=0; r[33]=0; r[34]=0; r[35]=0; r[36]=0; r[37]=0; r[38]=0; r[39]=0; + r[40]=0; r[41]=0; r[42]=0; r[43]=0; r[44]=0; r[45]=0; r[46]=0; r[47]=0; + r[48]=0; r[49]=0; r[50]=0; r[51]=0; r[52]=0; r[53]=0; r[54]=0; r[55]=0; + r[56]=0; r[57]=0; r[58]=0; r[59]=0; r[60]=0; r[61]=0; r[62]=0; r[63]=0; + r[64]=0; r[65]=0; r[66]=0; r[67]=0; r[68]=0; r[69]=0; r[70]=0; r[71]=0; + r[72]=0; r[73]=0; r[74]=0; r[75]=0; r[76]=0; r[77]=0; r[78]=0; r[79]=0; + r[80]=0; r[81]=0; r[82]=0; r[83]=0; r[84]=0; r[85]=0; r[86]=0; r[87]=0; + r[88]=0; r[89]=0; r[90]=0; r[91]=0; r[92]=0; r[93]=0; r[94]=0; r[95]=0; + r[96]=0; r[97]=0; r[98]=0; r[99]=0; r[100]=0; r[101]=0; r[102]=0; r[103]=0; + r[104]=0; r[105]=0; r[106]=0; r[107]=0; r[108]=0; r[109]=0; r[110]=0; r[111]=0; + r[112]=0; r[113]=0; r[114]=0; r[115]=0; r[116]=0; r[117]=0; r[118]=0; r[119]=0; + r[120]=0; r[121]=0; r[122]=0; r[123]=0; r[124]=0; r[125]=0; r[126]=0; r[127]=0; + r[128]=0; r[129]=0; r[130]=0; r[131]=0; r[132]=0; r[133]=0; r[134]=0; r[135]=0; + r[136]=0; r[137]=0; r[138]=0; r[139]=0; r[140]=0; r[141]=0; r[142]=0; r[143]=0; + r[144]=0; r[145]=0; r[146]=0; r[147]=0; r[148]=0; r[149]=0; r[150]=0; r[151]=0; + r[152]=0; r[153]=0; r[154]=0; r[155]=0; r[156]=0; r[157]=0; r[158]=0; r[159]=0; + r[160]=0; r[161]=0; r[162]=0; r[163]=0; r[164]=0; r[165]=0; r[166]=0; r[167]=0; + r[168]=0; r[169]=0; r[170]=0; r[171]=0; r[172]=0; r[173]=0; r[174]=0; r[175]=0; + r[176]=0; r[177]=0; r[178]=0; r[179]=0; r[180]=0; r[181]=0; r[182]=0; r[183]=0; + r[184]=0; r[185]=0; r[186]=0; r[187]=0; r[188]=0; r[189]=0; r[190]=0; r[191]=0; + r[192]=0; r[193]=0; r[194]=0; r[195]=0; r[196]=0; r[197]=0; r[198]=0; r[199]=0; + r[200]=0; r[201]=0; r[202]=0; r[203]=0; r[204]=29; r[205]=0; r[206]=0; r[207]=0; + r[208]=0; r[209]=0; r[210]=0; r[211]=0; r[212]=0; r[213]=0; r[214]=29; r[215]=0; + r[216]=29; r[217]=0; r[218]=29; r[219]=0; +} + +private static short[] create__hpricot_scan_from_state_actions( ) +{ + short[] r = new short[220]; + init__hpricot_scan_from_state_actions_0( r ); + return r; +} + +private static final short _hpricot_scan_from_state_actions[] = create__hpricot_scan_from_state_actions(); + + +static final int hpricot_scan_start = 204; +static final int hpricot_scan_error = -1; + +static final int hpricot_scan_en_html_comment = 214; +static final int hpricot_scan_en_html_cdata = 216; +static final int hpricot_scan_en_html_procins = 218; +static final int hpricot_scan_en_main = 204; + +// line 191 "ext/hpricot_scan/hpricot_scan.java.rl" + +public final static int BUFSIZE=16384; + +private void rb_yield_tokens(IRubyObject sym, IRubyObject tag, IRubyObject attr, IRubyObject raw, boolean taint) { + IRubyObject ary; + if (sym == runtime.newSymbol("text")) { + raw = tag; + } + ary = runtime.newArray(new IRubyObject[]{sym, tag, attr, raw}); + if (taint) { + ary.setTaint(true); + tag.setTaint(true); + attr.setTaint(true); + raw.setTaint(true); + } + block.yield(runtime.getCurrentContext(), ary, null, null, false); +} + + +int cs, act, have = 0, nread = 0, curline = 1, p=-1; +boolean text = false; +int tokstart=-1, tokend; +char[] buf; +Ruby runtime; +IRubyObject attr, bufsize; +IRubyObject[] tag, akey, aval; +int mark_tag, mark_akey, mark_aval; +boolean done = false, ele_open = false; +int buffer_size = 0; +boolean taint = false; +Block block = null; + + +IRubyObject xmldecl, doctype, procins, stag, etag, emptytag, comment, + cdata, sym_text; + +IRubyObject hpricot_scan(IRubyObject recv, IRubyObject port) { + attr = bufsize = runtime.getNil(); + tag = new IRubyObject[]{runtime.getNil()}; + akey = new IRubyObject[]{runtime.getNil()}; + aval = new IRubyObject[]{runtime.getNil()}; + + RubyClass rb_eHpricotParseError = runtime.getModule("Hpricot").getClass("ParseError"); + + taint = port.isTaint(); + if ( !port.respondsTo("read")) { + if ( port.respondsTo("to_str")) { + port = port.callMethod(runtime.getCurrentContext(),"to_str"); + } else { + throw runtime.newArgumentError("bad Hpricot argument, String or IO only please."); + } + } + + buffer_size = BUFSIZE; + if (rubyApi.getInstanceVariable(recv, "@buffer_size") != null) { + bufsize = rubyApi.getInstanceVariable(recv, "@buffer_size"); + if (!bufsize.isNil()) { + buffer_size = RubyNumeric.fix2int(bufsize); + } + } + buf = new char[buffer_size]; + + +// line 1073 "ext/hpricot_scan/HpricotScanService.java" + { + cs = hpricot_scan_start; + tokstart = -1; + tokend = -1; + act = 0; + } +// line 254 "ext/hpricot_scan/hpricot_scan.java.rl" + + while( !done ) { + IRubyObject str; + p = have; + int pe; + int len, space = buffer_size - have; + + if ( space == 0 ) { + /* We've used up the entire buffer storing an already-parsed token + * prefix that must be preserved. Likely caused by super-long attributes. + * See ticket #13. */ + rb_raise(rb_eHpricotParseError, "ran out of buffer space on element <" + tag.toString() + ">, starting on line "+curline+"."); + } + + if (port.respondsTo("read")) { + str = port.callMethod(runtime.getCurrentContext(),"read",runtime.newFixnum(space)); + } else { + str = ((RubyString)port).substr(nread,space); + } + + str = str.convertToString(); + String sss = str.toString(); + char[] chars = sss.toCharArray(); + System.arraycopy(chars,0,buf,p,chars.length); + + len = sss.length(); + nread += len; + + if ( len < space ) { + len++; + done = true; + } + + pe = p + len; + char[] data = buf; + + +// line 1118 "ext/hpricot_scan/HpricotScanService.java" + { + int _klen; + int _trans; + int _acts; + int _nacts; + int _keys; + + if ( p != pe ) { + _resume: while ( true ) { + _again: do { + _acts = _hpricot_scan_from_state_actions[cs]; + _nacts = (int) _hpricot_scan_actions[_acts++]; + while ( _nacts-- > 0 ) { + switch ( _hpricot_scan_actions[_acts++] ) { + case 21: +// line 1 "ext/hpricot_scan/hpricot_scan.java.rl" + {tokstart = p;} + break; +// line 1137 "ext/hpricot_scan/HpricotScanService.java" + } + } + + _match: do { + _keys = _hpricot_scan_key_offsets[cs]; + _trans = _hpricot_scan_index_offsets[cs]; + _klen = _hpricot_scan_single_lengths[cs]; + if ( _klen > 0 ) { + int _lower = _keys; + int _mid; + int _upper = _keys + _klen - 1; + while (true) { + if ( _upper < _lower ) + break; + + _mid = _lower + ((_upper-_lower) >> 1); + if ( data[p] < _hpricot_scan_trans_keys[_mid] ) + _upper = _mid - 1; + else if ( data[p] > _hpricot_scan_trans_keys[_mid] ) + _lower = _mid + 1; + else { + _trans += (_mid - _keys); + break _match; + } + } + _keys += _klen; + _trans += _klen; + } + + _klen = _hpricot_scan_range_lengths[cs]; + if ( _klen > 0 ) { + int _lower = _keys; + int _mid; + int _upper = _keys + (_klen<<1) - 2; + while (true) { + if ( _upper < _lower ) + break; + + _mid = _lower + (((_upper-_lower) >> 1) & ~1); + if ( data[p] < _hpricot_scan_trans_keys[_mid] ) + _upper = _mid - 2; + else if ( data[p] > _hpricot_scan_trans_keys[_mid+1] ) + _lower = _mid + 2; + else { + _trans += ((_mid - _keys)>>1); + break _match; + } + } + _trans += _klen; + } + } while (false); + + _trans = _hpricot_scan_indicies[_trans]; + cs = _hpricot_scan_trans_targs_wi[_trans]; + + if ( _hpricot_scan_trans_actions_wi[_trans] == 0 ) + break _again; + + _acts = _hpricot_scan_trans_actions_wi[_trans]; + _nacts = (int) _hpricot_scan_actions[_acts++]; + while ( _nacts-- > 0 ) + { + switch ( _hpricot_scan_actions[_acts++] ) + { + case 0: +// line 146 "ext/hpricot_scan/hpricot_scan.java.rl" + { + if (text) { + CAT(tag, p); + ELE(sym_text); + text = false; + } + attr = runtime.getNil(); + tag[0] = runtime.getNil(); + mark_tag = -1; + ele_open = true; + } + break; + case 1: +// line 158 "ext/hpricot_scan/hpricot_scan.java.rl" + { mark_tag = p; } + break; + case 2: +// line 159 "ext/hpricot_scan/hpricot_scan.java.rl" + { mark_aval = p; } + break; + case 3: +// line 160 "ext/hpricot_scan/hpricot_scan.java.rl" + { mark_akey = p; } + break; + case 4: +// line 161 "ext/hpricot_scan/hpricot_scan.java.rl" + { SET(tag, p); } + break; + case 5: +// line 163 "ext/hpricot_scan/hpricot_scan.java.rl" + { SET(aval, p); } + break; + case 6: +// line 164 "ext/hpricot_scan/hpricot_scan.java.rl" + { + if (buf[p-1] == '"' || buf[p-1] == '\'') { SET(aval, p-1); } + else { SET(aval, p); } + } + break; + case 7: +// line 168 "ext/hpricot_scan/hpricot_scan.java.rl" + { SET(akey, p); } + break; + case 8: +// line 169 "ext/hpricot_scan/hpricot_scan.java.rl" + { SET(aval, p); ATTR(rb_str_new2("version"), aval); } + break; + case 9: +// line 170 "ext/hpricot_scan/hpricot_scan.java.rl" + { SET(aval, p); ATTR(rb_str_new2("encoding"), aval); } + break; + case 10: +// line 171 "ext/hpricot_scan/hpricot_scan.java.rl" + { SET(aval, p); ATTR(rb_str_new2("standalone"), aval); } + break; + case 11: +// line 172 "ext/hpricot_scan/hpricot_scan.java.rl" + { SET(aval, p); ATTR(rb_str_new2("public_id"), aval); } + break; + case 12: +// line 173 "ext/hpricot_scan/hpricot_scan.java.rl" + { SET(aval, p); ATTR(rb_str_new2("system_id"), aval); } + break; + case 13: +// line 175 "ext/hpricot_scan/hpricot_scan.java.rl" + { + akey[0] = runtime.getNil(); + aval[0] = runtime.getNil(); + mark_akey = -1; + mark_aval = -1; + } + break; + case 14: +// line 182 "ext/hpricot_scan/hpricot_scan.java.rl" + { + ATTR(akey, aval); + } + break; + case 15: +// line 9 "ext/hpricot_scan/hpricot_scan.java.rl" + {curline += 1;} + break; + case 16: +// line 46 "ext/hpricot_scan/hpricot_scan.java.rl" + { TEXT_PASS(); } + break; + case 17: +// line 50 "ext/hpricot_scan/hpricot_scan.java.rl" + { EBLK(comment, 3); {cs = 204; if (true) break _again;} } + break; + case 18: +// line 55 "ext/hpricot_scan/hpricot_scan.java.rl" + { EBLK(cdata, 3); {cs = 204; if (true) break _again;} } + break; + case 19: +// line 60 "ext/hpricot_scan/hpricot_scan.java.rl" + { EBLK(procins, 2); {cs = 204; if (true) break _again;} } + break; + case 22: +// line 1 "ext/hpricot_scan/hpricot_scan.java.rl" + {tokend = p+1;} + break; + case 23: +// line 50 "ext/hpricot_scan/hpricot_scan.java.rl" + {tokend = p+1;} + break; + case 24: +// line 51 "ext/hpricot_scan/hpricot_scan.java.rl" + {tokend = p+1;{ TEXT_PASS(); }} + break; + case 25: +// line 51 "ext/hpricot_scan/hpricot_scan.java.rl" + {tokend = p;p--;{ TEXT_PASS(); }} + break; + case 26: +// line 51 "ext/hpricot_scan/hpricot_scan.java.rl" + {{p = ((tokend))-1;}{ TEXT_PASS(); }} + break; + case 27: +// line 55 "ext/hpricot_scan/hpricot_scan.java.rl" + {tokend = p+1;} + break; + case 28: +// line 56 "ext/hpricot_scan/hpricot_scan.java.rl" + {tokend = p+1;{ TEXT_PASS(); }} + break; + case 29: +// line 56 "ext/hpricot_scan/hpricot_scan.java.rl" + {tokend = p;p--;{ TEXT_PASS(); }} + break; + case 30: +// line 56 "ext/hpricot_scan/hpricot_scan.java.rl" + {{p = ((tokend))-1;}{ TEXT_PASS(); }} + break; + case 31: +// line 60 "ext/hpricot_scan/hpricot_scan.java.rl" + {tokend = p+1;} + break; + case 32: +// line 61 "ext/hpricot_scan/hpricot_scan.java.rl" + {tokend = p+1;{ TEXT_PASS(); }} + break; + case 33: +// line 61 "ext/hpricot_scan/hpricot_scan.java.rl" + {tokend = p;p--;{ TEXT_PASS(); }} + break; + case 34: +// line 66 "ext/hpricot_scan/hpricot_scan.java.rl" + {act = 8;} + break; + case 35: +// line 68 "ext/hpricot_scan/hpricot_scan.java.rl" + {act = 10;} + break; + case 36: +// line 70 "ext/hpricot_scan/hpricot_scan.java.rl" + {act = 12;} + break; + case 37: +// line 73 "ext/hpricot_scan/hpricot_scan.java.rl" + {act = 15;} + break; + case 38: +// line 65 "ext/hpricot_scan/hpricot_scan.java.rl" + {tokend = p+1;{ ELE(xmldecl); }} + break; + case 39: +// line 66 "ext/hpricot_scan/hpricot_scan.java.rl" + {tokend = p+1;{ ELE(doctype); }} + break; + case 40: +// line 68 "ext/hpricot_scan/hpricot_scan.java.rl" + {tokend = p+1;{ ELE(stag); }} + break; + case 41: +// line 69 "ext/hpricot_scan/hpricot_scan.java.rl" + {tokend = p+1;{ ELE(etag); }} + break; + case 42: +// line 70 "ext/hpricot_scan/hpricot_scan.java.rl" + {tokend = p+1;{ ELE(emptytag); }} + break; + case 43: +// line 71 "ext/hpricot_scan/hpricot_scan.java.rl" + {tokend = p+1;{ {cs = 214; if (true) break _again;} }} + break; + case 44: +// line 72 "ext/hpricot_scan/hpricot_scan.java.rl" + {tokend = p+1;{ {cs = 216; if (true) break _again;} }} + break; + case 45: +// line 73 "ext/hpricot_scan/hpricot_scan.java.rl" + {tokend = p+1;{ TEXT_PASS(); }} + break; + case 46: +// line 67 "ext/hpricot_scan/hpricot_scan.java.rl" + {tokend = p;p--;{ {cs = 218; if (true) break _again;} }} + break; + case 47: +// line 73 "ext/hpricot_scan/hpricot_scan.java.rl" + {tokend = p;p--;{ TEXT_PASS(); }} + break; + case 48: +// line 67 "ext/hpricot_scan/hpricot_scan.java.rl" + {{p = ((tokend))-1;}{ {cs = 218; if (true) break _again;} }} + break; + case 49: +// line 73 "ext/hpricot_scan/hpricot_scan.java.rl" + {{p = ((tokend))-1;}{ TEXT_PASS(); }} + break; + case 50: +// line 1 "ext/hpricot_scan/hpricot_scan.java.rl" + { switch( act ) { + case 8: + {{p = ((tokend))-1;} ELE(doctype); } + break; + case 10: + {{p = ((tokend))-1;} ELE(stag); } + break; + case 12: + {{p = ((tokend))-1;} ELE(emptytag); } + break; + case 15: + {{p = ((tokend))-1;} TEXT_PASS(); } + break; + default: break; + } + } + break; +// line 1433 "ext/hpricot_scan/HpricotScanService.java" + } + } + + } while (false); + _acts = _hpricot_scan_to_state_actions[cs]; + _nacts = (int) _hpricot_scan_actions[_acts++]; + while ( _nacts-- > 0 ) { + switch ( _hpricot_scan_actions[_acts++] ) { + case 20: +// line 1 "ext/hpricot_scan/hpricot_scan.java.rl" + {tokstart = -1;} + break; +// line 1446 "ext/hpricot_scan/HpricotScanService.java" + } + } + + if ( ++p == pe ) + break _resume; + } + } + } +// line 291 "ext/hpricot_scan/hpricot_scan.java.rl" + + if ( cs == hpricot_scan_error ) { + if(!tag[0].isNil()) { + rb_raise(rb_eHpricotParseError, "parse error on element <"+tag.toString()+">, starting on line "+curline+".\n" + NO_WAY_SERIOUSLY); + } else { + rb_raise(rb_eHpricotParseError, "parse error on line "+curline+".\n" + NO_WAY_SERIOUSLY); + } + } + + if ( done && ele_open ) { + ele_open = false; + if(tokstart > -1) { + mark_tag = tokstart; + tokstart = -1; + text = true; + } + } + + if(tokstart == -1) { + have = 0; + /* text nodes have no tokstart because each byte is parsed alone */ + if(mark_tag != -1 && text) { + if (done) { + if(mark_tag < p-1) { + CAT(tag, p-1); + ELE(sym_text); + } + } else { + CAT(tag, p); + } + } + mark_tag = 0; + } else { + have = pe - tokstart; + System.arraycopy(buf,tokstart,buf,0,have); + SLIDE(tag); + SLIDE(akey); + SLIDE(aval); + tokend = (tokend - tokstart); + tokstart = 0; + } + } + return runtime.getNil(); +} + +public static IRubyObject __hpricot_scan(IRubyObject recv, IRubyObject port, Block block) { + Ruby runtime = recv.getRuntime(); + HpricotScanService service = new HpricotScanService(); + service.runtime = runtime; + service.xmldecl = runtime.newSymbol("xmldecl"); + service.doctype = runtime.newSymbol("doctype"); + service.procins = runtime.newSymbol("procins"); + service.stag = runtime.newSymbol("stag"); + service.etag = runtime.newSymbol("etag"); + service.emptytag = runtime.newSymbol("emptytag"); + service.comment = runtime.newSymbol("comment"); + service.cdata = runtime.newSymbol("cdata"); + service.sym_text = runtime.newSymbol("text"); + service.block = block; + return service.hpricot_scan(recv, port); +} + + +public boolean basicLoad(final Ruby runtime) throws IOException { + Init_hpricot_scan(runtime); + return true; +} + +public static void Init_hpricot_scan(Ruby runtime) { + RubyModule mHpricot = runtime.defineModule("Hpricot"); + mHpricot.getMetaClass().attr_accessor(new IRubyObject[]{runtime.newSymbol("buffer_size")}); + CallbackFactory fact = runtime.callbackFactory(HpricotScanService.class); + mHpricot.getMetaClass().defineMethod("scan",fact.getSingletonMethod("__hpricot_scan",IRubyObject.class)); + mHpricot.defineClassUnder("ParseError",runtime.getClass("Exception"),runtime.getClass("Exception").getAllocator()); + rubyApi = JavaEmbedUtils.newObjectAdapter(); +} +} diff --git a/vendor/gems/hpricot-0.6/ext/hpricot_scan/extconf.rb b/vendor/gems/hpricot-0.6.161/ext/hpricot_scan/extconf.rb similarity index 100% rename from vendor/gems/hpricot-0.6/ext/hpricot_scan/extconf.rb rename to vendor/gems/hpricot-0.6.161/ext/hpricot_scan/extconf.rb diff --git a/vendor/gems/hpricot-0.6/ext/hpricot_scan/hpricot_common.rl b/vendor/gems/hpricot-0.6.161/ext/hpricot_scan/hpricot_common.rl similarity index 100% rename from vendor/gems/hpricot-0.6/ext/hpricot_scan/hpricot_common.rl rename to vendor/gems/hpricot-0.6.161/ext/hpricot_scan/hpricot_common.rl diff --git a/vendor/gems/hpricot-0.6/ext/hpricot_scan/hpricot_scan.c b/vendor/gems/hpricot-0.6.161/ext/hpricot_scan/hpricot_scan.c similarity index 66% rename from vendor/gems/hpricot-0.6/ext/hpricot_scan/hpricot_scan.c rename to vendor/gems/hpricot-0.6.161/ext/hpricot_scan/hpricot_scan.c index 15db082..6d319b2 100644 --- a/vendor/gems/hpricot-0.6/ext/hpricot_scan/hpricot_scan.c +++ b/vendor/gems/hpricot-0.6.161/ext/hpricot_scan/hpricot_scan.c @@ -9,6 +9,12 @@ */ #include +#ifndef RARRAY_LEN +#define RARRAY_LEN(arr) RARRAY(arr)->len +#define RSTRING_LEN(str) RSTRING(str)->len +#define RSTRING_PTR(str) RSTRING(str)->ptr +#endif + #define NO_WAY_SERIOUSLY "*** This should not happen, please send a bug report with the HTML you're parsing to why@whytheluckystiff.net. So sorry!" static VALUE sym_xmldecl, sym_doctype, sym_procins, sym_stag, sym_etag, sym_emptytag, sym_comment, @@ -60,16 +66,20 @@ static ID s_read, s_to_str; #define EBLK(N, T) CAT(tag, p - T + 1); ELE(N); -#line 107 "ext/hpricot_scan/hpricot_scan.rl" +#line 113 "ext/hpricot_scan/hpricot_scan.rl" -#line 68 "ext/hpricot_scan/hpricot_scan.c" +#line 74 "ext/hpricot_scan/hpricot_scan.c" static const int hpricot_scan_start = 204; - static const int hpricot_scan_error = -1; -#line 110 "ext/hpricot_scan/hpricot_scan.rl" +static const int hpricot_scan_en_html_comment = 214; +static const int hpricot_scan_en_html_cdata = 216; +static const int hpricot_scan_en_html_procins = 218; +static const int hpricot_scan_en_main = 204; + +#line 116 "ext/hpricot_scan/hpricot_scan.rl" #define BUFSIZE 16384 @@ -122,14 +132,14 @@ VALUE hpricot_scan(VALUE self, VALUE port) buf = ALLOC_N(char, buffer_size); -#line 126 "ext/hpricot_scan/hpricot_scan.c" +#line 136 "ext/hpricot_scan/hpricot_scan.c" { cs = hpricot_scan_start; tokstart = 0; tokend = 0; act = 0; } -#line 162 "ext/hpricot_scan/hpricot_scan.rl" +#line 168 "ext/hpricot_scan/hpricot_scan.rl" while ( !done ) { VALUE str; @@ -140,7 +150,7 @@ VALUE hpricot_scan(VALUE self, VALUE port) /* We've used up the entire buffer storing an already-parsed token * prefix that must be preserved. Likely caused by super-long attributes. * See ticket #13. */ - rb_raise(rb_eHpricotParseError, "ran out of buffer space on element <%s>, starting on line %d.", RSTRING(tag)->ptr, curline); + rb_raise(rb_eHpricotParseError, "ran out of buffer space on element <%s>, starting on line %d.", RSTRING_PTR(tag), curline); } if ( rb_respond_to( port, s_read ) ) @@ -153,8 +163,8 @@ VALUE hpricot_scan(VALUE self, VALUE port) } StringValue(str); - memcpy( p, RSTRING(str)->ptr, RSTRING(str)->len ); - len = RSTRING(str)->len; + memcpy( p, RSTRING_PTR(str), RSTRING_LEN(str) ); + len = RSTRING_LEN(str); nread += len; /* If this is the last buffer, tack on an EOF. */ @@ -165,161 +175,161 @@ VALUE hpricot_scan(VALUE self, VALUE port) pe = p + len; -#line 169 "ext/hpricot_scan/hpricot_scan.c" +#line 179 "ext/hpricot_scan/hpricot_scan.c" { if ( p == pe ) goto _out; switch ( cs ) { -tr14: -#line 67 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p;{ {{p = ((tokend))-1;}{goto st218;}} }{p = ((tokend))-1;}} - goto st204; -tr18: +tr0: #line 73 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p;{ TEXT_PASS(); }{p = ((tokend))-1;}} + {{p = ((tokend))-1;}{ TEXT_PASS(); }} goto st204; -tr23: -#line 73 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p+1;{ TEXT_PASS(); }{p = ((tokend))-1;}} +tr4: +#line 71 "ext/hpricot_scan/hpricot_scan.rl" + {tokend = p+1;{ {goto st214;} }} goto st204; -tr24: -#line 9 "ext/hpricot_scan/hpricot_scan.rl" - {curline += 1;} -#line 73 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p+1;{ TEXT_PASS(); }{p = ((tokend))-1;}} +tr15: +#line 86 "ext/hpricot_scan/hpricot_scan.rl" + { SET(tag, p); } +#line 66 "ext/hpricot_scan/hpricot_scan.rl" + {tokend = p+1;{ ELE(doctype); }} + goto st204; +tr18: +#line 66 "ext/hpricot_scan/hpricot_scan.rl" + {tokend = p+1;{ ELE(doctype); }} goto st204; -tr69: +tr39: #line 1 "ext/hpricot_scan/hpricot_scan.rl" { switch( act ) { case 8: - { ELE(doctype); } + {{p = ((tokend))-1;} ELE(doctype); } break; case 10: - { ELE(stag); } + {{p = ((tokend))-1;} ELE(stag); } break; case 12: - { ELE(emptytag); } + {{p = ((tokend))-1;} ELE(emptytag); } break; case 15: - { TEXT_PASS(); } + {{p = ((tokend))-1;} TEXT_PASS(); } break; default: break; } - {p = ((tokend))-1;}} + } goto st204; -tr70: -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +tr89: +#line 72 "ext/hpricot_scan/hpricot_scan.rl" + {tokend = p+1;{ {goto st216;} }} + goto st204; +tr93: +#line 86 "ext/hpricot_scan/hpricot_scan.rl" + { SET(tag, p); } +#line 69 "ext/hpricot_scan/hpricot_scan.rl" + {tokend = p+1;{ ELE(etag); }} + goto st204; +tr95: +#line 69 "ext/hpricot_scan/hpricot_scan.rl" + {tokend = p+1;{ ELE(etag); }} + goto st204; +tr99: +#line 86 "ext/hpricot_scan/hpricot_scan.rl" + { SET(tag, p); } +#line 68 "ext/hpricot_scan/hpricot_scan.rl" + {tokend = p+1;{ ELE(stag); }} + goto st204; +tr103: +#line 68 "ext/hpricot_scan/hpricot_scan.rl" + {tokend = p+1;{ ELE(stag); }} + goto st204; +tr108: +#line 93 "ext/hpricot_scan/hpricot_scan.rl" + { SET(akey, p); } +#line 107 "ext/hpricot_scan/hpricot_scan.rl" + { + ATTR(akey, aval); + } +#line 68 "ext/hpricot_scan/hpricot_scan.rl" + {tokend = p+1;{ ELE(stag); }} + goto st204; +tr113: +#line 107 "ext/hpricot_scan/hpricot_scan.rl" + { + ATTR(akey, aval); + } +#line 68 "ext/hpricot_scan/hpricot_scan.rl" + {tokend = p+1;{ ELE(stag); }} + goto st204; +tr114: +#line 70 "ext/hpricot_scan/hpricot_scan.rl" + {tokend = p+1;{ ELE(emptytag); }} + goto st204; +tr125: +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } #line 68 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p+1;{ ELE(stag); }{p = ((tokend))-1;}} + {tokend = p+1;{ ELE(stag); }} goto st204; -tr76: -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +tr129: +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } #line 68 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p+1;{ ELE(stag); }{p = ((tokend))-1;}} + {tokend = p+1;{ ELE(stag); }} goto st204; -tr137: -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +tr135: +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } -#line 87 "ext/hpricot_scan/hpricot_scan.rl" +#line 93 "ext/hpricot_scan/hpricot_scan.rl" { SET(akey, p); } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" - { - ATTR(akey, aval); - } -#line 68 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p+1;{ ELE(stag); }{p = ((tokend))-1;}} - goto st204; -tr162: -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } #line 68 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p+1;{ ELE(stag); }{p = ((tokend))-1;}} + {tokend = p+1;{ ELE(stag); }} goto st204; -tr264: +tr341: #line 67 "ext/hpricot_scan/hpricot_scan.rl" - {{ {{p = ((tokend))-1;}{goto st218;}} }{p = ((tokend))-1;}} + {{p = ((tokend))-1;}{ {goto st218;} }} goto st204; -tr270: +tr355: #line 65 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p+1;{ ELE(xmldecl); }{p = ((tokend))-1;}} + {tokend = p+1;{ ELE(xmldecl); }} goto st204; -tr296: +tr403: #line 73 "ext/hpricot_scan/hpricot_scan.rl" - {{ TEXT_PASS(); }{p = ((tokend))-1;}} - goto st204; -tr302: -#line 66 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p+1;{ ELE(doctype); }{p = ((tokend))-1;}} - goto st204; -tr314: -#line 69 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p+1;{ ELE(etag); }{p = ((tokend))-1;}} - goto st204; -tr318: -#line 68 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p+1;{ ELE(stag); }{p = ((tokend))-1;}} - goto st204; -tr327: -#line 80 "ext/hpricot_scan/hpricot_scan.rl" - { SET(tag, p); } -#line 68 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p+1;{ ELE(stag); }{p = ((tokend))-1;}} - goto st204; -tr330: -#line 80 "ext/hpricot_scan/hpricot_scan.rl" - { SET(tag, p); } -#line 66 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p+1;{ ELE(doctype); }{p = ((tokend))-1;}} - goto st204; -tr334: -#line 80 "ext/hpricot_scan/hpricot_scan.rl" - { SET(tag, p); } -#line 69 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p+1;{ ELE(etag); }{p = ((tokend))-1;}} - goto st204; -tr355: -#line 72 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p+1;{ {{p = ((tokend))-1;}{goto st216;}} }{p = ((tokend))-1;}} + {tokend = p+1;{ TEXT_PASS(); }} goto st204; -tr356: -#line 71 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p+1;{ {{p = ((tokend))-1;}{goto st214;}} }{p = ((tokend))-1;}} +tr404: +#line 9 "ext/hpricot_scan/hpricot_scan.rl" + {curline += 1;} +#line 73 "ext/hpricot_scan/hpricot_scan.rl" + {tokend = p+1;{ TEXT_PASS(); }} goto st204; -tr368: -#line 87 "ext/hpricot_scan/hpricot_scan.rl" - { SET(akey, p); } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" - { - ATTR(akey, aval); - } -#line 68 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p+1;{ ELE(stag); }{p = ((tokend))-1;}} +tr406: +#line 73 "ext/hpricot_scan/hpricot_scan.rl" + {tokend = p;p--;{ TEXT_PASS(); }} goto st204; -tr369: -#line 70 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p+1;{ ELE(emptytag); }{p = ((tokend))-1;}} +tr411: +#line 67 "ext/hpricot_scan/hpricot_scan.rl" + {tokend = p;p--;{ {goto st218;} }} goto st204; st204: #line 1 "ext/hpricot_scan/hpricot_scan.rl" @@ -329,16 +339,16 @@ VALUE hpricot_scan(VALUE self, VALUE port) case 204: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokstart = p;} -#line 333 "ext/hpricot_scan/hpricot_scan.c" +#line 343 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 10: goto tr24; - case 60: goto tr25; + case 10: goto tr404; + case 60: goto tr405; } - goto tr23; -tr25: + goto tr403; +tr405: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokend = p+1;} -#line 65 "ext/hpricot_scan/hpricot_scan.rl" +#line 71 "ext/hpricot_scan/hpricot_scan.rl" { if (text == 1) { CAT(tag, p); @@ -357,20 +367,20 @@ case 204: if ( ++p == pe ) goto _out205; case 205: -#line 361 "ext/hpricot_scan/hpricot_scan.c" +#line 371 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { case 33: goto st0; case 47: goto st59; - case 58: goto tr21; + case 58: goto tr409; case 63: goto st145; - case 95: goto tr21; + case 95: goto tr409; } if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr21; + goto tr409; } else if ( (*p) >= 65 ) - goto tr21; - goto tr18; + goto tr409; + goto tr406; st0: if ( ++p == pe ) goto _out0; @@ -380,56 +390,56 @@ case 0: case 68: goto st2; case 91: goto st53; } - goto tr296; + goto tr0; st1: if ( ++p == pe ) goto _out1; case 1: if ( (*p) == 45 ) - goto tr356; - goto tr296; + goto tr4; + goto tr0; st2: if ( ++p == pe ) goto _out2; case 2: if ( (*p) == 79 ) goto st3; - goto tr296; + goto tr0; st3: if ( ++p == pe ) goto _out3; case 3: if ( (*p) == 67 ) goto st4; - goto tr296; + goto tr0; st4: if ( ++p == pe ) goto _out4; case 4: if ( (*p) == 84 ) goto st5; - goto tr296; + goto tr0; st5: if ( ++p == pe ) goto _out5; case 5: if ( (*p) == 89 ) goto st6; - goto tr296; + goto tr0; st6: if ( ++p == pe ) goto _out6; case 6: if ( (*p) == 80 ) goto st7; - goto tr296; + goto tr0; st7: if ( ++p == pe ) goto _out7; case 7: if ( (*p) == 69 ) goto st8; - goto tr296; + goto tr0; st8: if ( ++p == pe ) goto _out8; @@ -438,39 +448,39 @@ case 8: goto st9; if ( 9 <= (*p) && (*p) <= 13 ) goto st9; - goto tr296; + goto tr0; st9: if ( ++p == pe ) goto _out9; case 9: switch( (*p) ) { case 32: goto st9; - case 58: goto tr309; - case 95: goto tr309; + case 58: goto tr12; + case 95: goto tr12; } if ( (*p) < 65 ) { if ( 9 <= (*p) && (*p) <= 13 ) goto st9; } else if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr309; + goto tr12; } else - goto tr309; - goto tr296; -tr309: -#line 77 "ext/hpricot_scan/hpricot_scan.rl" + goto tr12; + goto tr0; +tr12: +#line 83 "ext/hpricot_scan/hpricot_scan.rl" { mark_tag = p; } goto st10; st10: if ( ++p == pe ) goto _out10; case 10: -#line 469 "ext/hpricot_scan/hpricot_scan.c" +#line 479 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 32: goto tr328; - case 62: goto tr330; + case 32: goto tr13; + case 62: goto tr15; case 63: goto st10; - case 91: goto tr331; + case 91: goto tr16; case 95: goto st10; } if ( (*p) < 48 ) { @@ -478,7 +488,7 @@ case 10: if ( 45 <= (*p) && (*p) <= 46 ) goto st10; } else if ( (*p) >= 9 ) - goto tr328; + goto tr13; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) @@ -487,61 +497,61 @@ case 10: goto st10; } else goto st10; - goto tr296; -tr328: -#line 80 "ext/hpricot_scan/hpricot_scan.rl" + goto tr0; +tr13: +#line 86 "ext/hpricot_scan/hpricot_scan.rl" { SET(tag, p); } goto st11; st11: if ( ++p == pe ) goto _out11; case 11: -#line 500 "ext/hpricot_scan/hpricot_scan.c" +#line 510 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { case 32: goto st11; - case 62: goto tr302; + case 62: goto tr18; case 80: goto st12; case 83: goto st48; case 91: goto st26; } if ( 9 <= (*p) && (*p) <= 13 ) goto st11; - goto tr296; + goto tr0; st12: if ( ++p == pe ) goto _out12; case 12: if ( (*p) == 85 ) goto st13; - goto tr296; + goto tr0; st13: if ( ++p == pe ) goto _out13; case 13: if ( (*p) == 66 ) goto st14; - goto tr296; + goto tr0; st14: if ( ++p == pe ) goto _out14; case 14: if ( (*p) == 76 ) goto st15; - goto tr296; + goto tr0; st15: if ( ++p == pe ) goto _out15; case 15: if ( (*p) == 73 ) goto st16; - goto tr296; + goto tr0; st16: if ( ++p == pe ) goto _out16; case 16: if ( (*p) == 67 ) goto st17; - goto tr296; + goto tr0; st17: if ( ++p == pe ) goto _out17; @@ -550,7 +560,7 @@ case 17: goto st18; if ( 9 <= (*p) && (*p) <= 13 ) goto st18; - goto tr296; + goto tr0; st18: if ( ++p == pe ) goto _out18; @@ -562,41 +572,41 @@ case 18: } if ( 9 <= (*p) && (*p) <= 13 ) goto st18; - goto tr296; + goto tr0; st19: if ( ++p == pe ) goto _out19; case 19: switch( (*p) ) { - case 9: goto tr321; - case 34: goto tr320; - case 61: goto tr321; - case 95: goto tr321; + case 9: goto tr30; + case 34: goto tr31; + case 61: goto tr30; + case 95: goto tr30; } if ( (*p) < 39 ) { if ( 32 <= (*p) && (*p) <= 37 ) - goto tr321; + goto tr30; } else if ( (*p) > 59 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr321; + goto tr30; } else if ( (*p) >= 63 ) - goto tr321; + goto tr30; } else - goto tr321; - goto tr296; -tr321: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" + goto tr30; + goto tr0; +tr30: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st20; st20: if ( ++p == pe ) goto _out20; case 20: -#line 597 "ext/hpricot_scan/hpricot_scan.c" +#line 607 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { case 9: goto st20; - case 34: goto tr320; + case 34: goto tr31; case 61: goto st20; case 95: goto st20; } @@ -611,24 +621,24 @@ case 20: goto st20; } else goto st20; - goto tr296; -tr320: -#line 91 "ext/hpricot_scan/hpricot_scan.rl" + goto tr0; +tr31: +#line 97 "ext/hpricot_scan/hpricot_scan.rl" { SET(aval, p); ATTR(rb_str_new2("public_id"), aval); } goto st21; st21: if ( ++p == pe ) goto _out21; case 21: -#line 624 "ext/hpricot_scan/hpricot_scan.c" +#line 634 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { case 32: goto st22; - case 62: goto tr302; + case 62: goto tr18; case 91: goto st26; } if ( 9 <= (*p) && (*p) <= 13 ) goto st22; - goto tr296; + goto tr0; st22: if ( ++p == pe ) goto _out22; @@ -637,57 +647,57 @@ case 22: case 32: goto st22; case 34: goto st23; case 39: goto st28; - case 62: goto tr302; + case 62: goto tr18; case 91: goto st26; } if ( 9 <= (*p) && (*p) <= 13 ) goto st22; - goto tr296; + goto tr0; st23: if ( ++p == pe ) goto _out23; case 23: if ( (*p) == 34 ) - goto tr6; - goto tr222; -tr222: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" + goto tr37; + goto tr36; +tr36: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st24; st24: if ( ++p == pe ) goto _out24; case 24: -#line 662 "ext/hpricot_scan/hpricot_scan.c" +#line 672 "ext/hpricot_scan/hpricot_scan.c" if ( (*p) == 34 ) - goto tr6; + goto tr37; goto st24; -tr6: -#line 92 "ext/hpricot_scan/hpricot_scan.rl" +tr37: +#line 98 "ext/hpricot_scan/hpricot_scan.rl" { SET(aval, p); ATTR(rb_str_new2("system_id"), aval); } goto st25; st25: if ( ++p == pe ) goto _out25; case 25: -#line 674 "ext/hpricot_scan/hpricot_scan.c" +#line 684 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { case 32: goto st25; - case 62: goto tr302; + case 62: goto tr18; case 91: goto st26; } if ( 9 <= (*p) && (*p) <= 13 ) goto st25; - goto tr69; -tr331: -#line 80 "ext/hpricot_scan/hpricot_scan.rl" + goto tr39; +tr16: +#line 86 "ext/hpricot_scan/hpricot_scan.rl" { SET(tag, p); } goto st26; st26: if ( ++p == pe ) goto _out26; case 26: -#line 691 "ext/hpricot_scan/hpricot_scan.c" +#line 701 "ext/hpricot_scan/hpricot_scan.c" if ( (*p) == 93 ) goto st27; goto st26; @@ -697,67 +707,67 @@ case 26: case 27: switch( (*p) ) { case 32: goto st27; - case 62: goto tr302; + case 62: goto tr18; } if ( 9 <= (*p) && (*p) <= 13 ) goto st27; - goto tr69; + goto tr39; st28: if ( ++p == pe ) goto _out28; case 28: if ( (*p) == 39 ) - goto tr6; - goto tr182; -tr182: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" + goto tr37; + goto tr42; +tr42: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st29; st29: if ( ++p == pe ) goto _out29; case 29: -#line 721 "ext/hpricot_scan/hpricot_scan.c" +#line 731 "ext/hpricot_scan/hpricot_scan.c" if ( (*p) == 39 ) - goto tr6; + goto tr37; goto st29; st30: if ( ++p == pe ) goto _out30; case 30: switch( (*p) ) { - case 9: goto tr322; - case 39: goto tr323; - case 61: goto tr322; - case 95: goto tr322; + case 9: goto tr44; + case 39: goto tr45; + case 61: goto tr44; + case 95: goto tr44; } if ( (*p) < 40 ) { if ( (*p) > 33 ) { if ( 35 <= (*p) && (*p) <= 37 ) - goto tr322; + goto tr44; } else if ( (*p) >= 32 ) - goto tr322; + goto tr44; } else if ( (*p) > 59 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr322; + goto tr44; } else if ( (*p) >= 63 ) - goto tr322; + goto tr44; } else - goto tr322; - goto tr296; -tr322: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" + goto tr44; + goto tr0; +tr44: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st31; st31: if ( ++p == pe ) goto _out31; case 31: -#line 758 "ext/hpricot_scan/hpricot_scan.c" +#line 768 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { case 9: goto st31; - case 39: goto tr303; + case 39: goto tr47; case 61: goto st31; case 95: goto st31; } @@ -775,34 +785,34 @@ case 31: goto st31; } else goto st31; - goto tr296; -tr42: -#line 91 "ext/hpricot_scan/hpricot_scan.rl" + goto tr0; +tr47: +#line 97 "ext/hpricot_scan/hpricot_scan.rl" { SET(aval, p); ATTR(rb_str_new2("public_id"), aval); } -#line 92 "ext/hpricot_scan/hpricot_scan.rl" - { SET(aval, p); ATTR(rb_str_new2("system_id"), aval); } goto st32; -tr303: -#line 91 "ext/hpricot_scan/hpricot_scan.rl" +tr45: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" + { mark_aval = p; } +#line 97 "ext/hpricot_scan/hpricot_scan.rl" { SET(aval, p); ATTR(rb_str_new2("public_id"), aval); } goto st32; -tr323: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" - { mark_aval = p; } -#line 91 "ext/hpricot_scan/hpricot_scan.rl" +tr53: +#line 97 "ext/hpricot_scan/hpricot_scan.rl" { SET(aval, p); ATTR(rb_str_new2("public_id"), aval); } +#line 98 "ext/hpricot_scan/hpricot_scan.rl" + { SET(aval, p); ATTR(rb_str_new2("system_id"), aval); } goto st32; st32: if ( ++p == pe ) goto _out32; case 32: -#line 800 "ext/hpricot_scan/hpricot_scan.c" +#line 810 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { case 9: goto st33; case 32: goto st33; case 33: goto st31; - case 39: goto tr303; - case 62: goto tr302; + case 39: goto tr47; + case 62: goto tr18; case 91: goto st26; case 95: goto st31; } @@ -820,7 +830,7 @@ case 32: goto st31; } else goto st31; - goto tr296; + goto tr0; st33: if ( ++p == pe ) goto _out33; @@ -829,8 +839,8 @@ case 33: case 9: goto st33; case 32: goto st33; case 34: goto st23; - case 39: goto tr301; - case 62: goto tr302; + case 39: goto tr49; + case 62: goto tr18; case 91: goto st26; case 95: goto st31; } @@ -848,61 +858,61 @@ case 33: goto st31; } else goto st31; - goto tr296; -tr44: -#line 91 "ext/hpricot_scan/hpricot_scan.rl" + goto tr0; +tr49: +#line 97 "ext/hpricot_scan/hpricot_scan.rl" { SET(aval, p); ATTR(rb_str_new2("public_id"), aval); } -#line 92 "ext/hpricot_scan/hpricot_scan.rl" - { SET(aval, p); ATTR(rb_str_new2("system_id"), aval); } goto st34; -tr301: -#line 91 "ext/hpricot_scan/hpricot_scan.rl" +tr60: +#line 97 "ext/hpricot_scan/hpricot_scan.rl" { SET(aval, p); ATTR(rb_str_new2("public_id"), aval); } +#line 98 "ext/hpricot_scan/hpricot_scan.rl" + { SET(aval, p); ATTR(rb_str_new2("system_id"), aval); } goto st34; st34: if ( ++p == pe ) goto _out34; case 34: -#line 867 "ext/hpricot_scan/hpricot_scan.c" +#line 877 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 9: goto tr186; - case 32: goto tr186; - case 33: goto tr188; - case 39: goto tr42; - case 62: goto tr184; - case 91: goto tr185; - case 95: goto tr188; + case 9: goto tr50; + case 32: goto tr50; + case 33: goto tr52; + case 39: goto tr53; + case 62: goto tr54; + case 91: goto tr55; + case 95: goto tr52; } if ( (*p) < 40 ) { if ( (*p) > 13 ) { if ( 35 <= (*p) && (*p) <= 37 ) - goto tr188; + goto tr52; } else if ( (*p) >= 10 ) - goto tr187; + goto tr51; } else if ( (*p) > 59 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr188; + goto tr52; } else if ( (*p) >= 61 ) - goto tr188; + goto tr52; } else - goto tr188; - goto tr182; -tr186: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" + goto tr52; + goto tr42; +tr50: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st35; st35: if ( ++p == pe ) goto _out35; case 35: -#line 900 "ext/hpricot_scan/hpricot_scan.c" +#line 910 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { case 9: goto st35; case 32: goto st35; case 34: goto st37; - case 39: goto tr44; - case 62: goto tr40; + case 39: goto tr60; + case 62: goto tr61; case 91: goto st40; case 95: goto st47; } @@ -921,20 +931,20 @@ case 35: } else goto st47; goto st29; -tr187: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr51: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st36; st36: if ( ++p == pe ) goto _out36; case 36: -#line 933 "ext/hpricot_scan/hpricot_scan.c" +#line 943 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { case 32: goto st36; case 34: goto st37; - case 39: goto tr39; - case 62: goto tr40; + case 39: goto tr63; + case 62: goto tr61; case 91: goto st40; } if ( 9 <= (*p) && (*p) <= 13 ) @@ -945,57 +955,57 @@ case 36: goto _out37; case 37: switch( (*p) ) { - case 34: goto tr63; - case 39: goto tr224; + case 34: goto tr65; + case 39: goto tr66; } - goto tr223; -tr223: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" + goto tr64; +tr64: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st38; st38: if ( ++p == pe ) goto _out38; case 38: -#line 961 "ext/hpricot_scan/hpricot_scan.c" +#line 971 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 34: goto tr63; - case 39: goto tr64; + case 34: goto tr65; + case 39: goto tr68; } goto st38; -tr63: -#line 92 "ext/hpricot_scan/hpricot_scan.rl" - { SET(aval, p); ATTR(rb_str_new2("system_id"), aval); } - goto st39; -tr183: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr78: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st39; +tr65: +#line 98 "ext/hpricot_scan/hpricot_scan.rl" + { SET(aval, p); ATTR(rb_str_new2("system_id"), aval); } + goto st39; st39: if ( ++p == pe ) goto _out39; case 39: -#line 979 "ext/hpricot_scan/hpricot_scan.c" +#line 989 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { case 32: goto st39; - case 39: goto tr6; - case 62: goto tr40; + case 39: goto tr37; + case 62: goto tr61; case 91: goto st40; } if ( 9 <= (*p) && (*p) <= 13 ) goto st39; goto st29; -tr40: +tr54: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokend = p+1;} +#line 84 "ext/hpricot_scan/hpricot_scan.rl" + { mark_aval = p; } #line 66 "ext/hpricot_scan/hpricot_scan.rl" {act = 8;} goto st206; -tr184: +tr61: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokend = p+1;} -#line 78 "ext/hpricot_scan/hpricot_scan.rl" - { mark_aval = p; } #line 66 "ext/hpricot_scan/hpricot_scan.rl" {act = 8;} goto st206; @@ -1003,42 +1013,42 @@ case 39: if ( ++p == pe ) goto _out206; case 206: -#line 1007 "ext/hpricot_scan/hpricot_scan.c" +#line 1017 "ext/hpricot_scan/hpricot_scan.c" if ( (*p) == 39 ) - goto tr6; + goto tr37; goto st29; -tr185: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr55: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st40; st40: if ( ++p == pe ) goto _out40; case 40: -#line 1019 "ext/hpricot_scan/hpricot_scan.c" +#line 1029 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 39: goto tr35; + case 39: goto tr70; case 93: goto st42; } goto st40; -tr35: -#line 92 "ext/hpricot_scan/hpricot_scan.rl" +tr70: +#line 98 "ext/hpricot_scan/hpricot_scan.rl" { SET(aval, p); ATTR(rb_str_new2("system_id"), aval); } goto st41; st41: if ( ++p == pe ) goto _out41; case 41: -#line 1033 "ext/hpricot_scan/hpricot_scan.c" +#line 1043 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { case 32: goto st41; - case 62: goto tr27; + case 62: goto tr73; case 93: goto st27; } if ( 9 <= (*p) && (*p) <= 13 ) goto st41; goto st26; -tr27: +tr73: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokend = p+1;} #line 66 "ext/hpricot_scan/hpricot_scan.rl" @@ -1048,7 +1058,7 @@ case 41: if ( ++p == pe ) goto _out207; case 207: -#line 1052 "ext/hpricot_scan/hpricot_scan.c" +#line 1062 "ext/hpricot_scan/hpricot_scan.c" if ( (*p) == 93 ) goto st27; goto st26; @@ -1058,37 +1068,37 @@ case 207: case 42: switch( (*p) ) { case 32: goto st42; - case 39: goto tr6; - case 62: goto tr40; + case 39: goto tr37; + case 62: goto tr61; } if ( 9 <= (*p) && (*p) <= 13 ) goto st42; goto st29; -tr64: -#line 92 "ext/hpricot_scan/hpricot_scan.rl" +tr68: +#line 98 "ext/hpricot_scan/hpricot_scan.rl" { SET(aval, p); ATTR(rb_str_new2("system_id"), aval); } goto st43; -tr224: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr66: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 92 "ext/hpricot_scan/hpricot_scan.rl" +#line 98 "ext/hpricot_scan/hpricot_scan.rl" { SET(aval, p); ATTR(rb_str_new2("system_id"), aval); } goto st43; st43: if ( ++p == pe ) goto _out43; case 43: -#line 1082 "ext/hpricot_scan/hpricot_scan.c" +#line 1092 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { case 32: goto st43; - case 34: goto tr6; - case 62: goto tr61; + case 34: goto tr37; + case 62: goto tr75; case 91: goto st44; } if ( 9 <= (*p) && (*p) <= 13 ) goto st43; goto st24; -tr61: +tr75: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokend = p+1;} #line 66 "ext/hpricot_scan/hpricot_scan.rl" @@ -1098,16 +1108,16 @@ case 43: if ( ++p == pe ) goto _out208; case 208: -#line 1102 "ext/hpricot_scan/hpricot_scan.c" +#line 1112 "ext/hpricot_scan/hpricot_scan.c" if ( (*p) == 34 ) - goto tr6; + goto tr37; goto st24; st44: if ( ++p == pe ) goto _out44; case 44: switch( (*p) ) { - case 34: goto tr35; + case 34: goto tr70; case 93: goto st45; } goto st44; @@ -1117,42 +1127,42 @@ case 44: case 45: switch( (*p) ) { case 32: goto st45; - case 34: goto tr6; - case 62: goto tr61; + case 34: goto tr37; + case 62: goto tr75; } if ( 9 <= (*p) && (*p) <= 13 ) goto st45; goto st24; -tr39: -#line 92 "ext/hpricot_scan/hpricot_scan.rl" +tr63: +#line 98 "ext/hpricot_scan/hpricot_scan.rl" { SET(aval, p); ATTR(rb_str_new2("system_id"), aval); } goto st46; st46: if ( ++p == pe ) goto _out46; case 46: -#line 1135 "ext/hpricot_scan/hpricot_scan.c" +#line 1145 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 32: goto tr183; - case 39: goto tr6; - case 62: goto tr184; - case 91: goto tr185; + case 32: goto tr78; + case 39: goto tr37; + case 62: goto tr54; + case 91: goto tr55; } if ( 9 <= (*p) && (*p) <= 13 ) - goto tr183; - goto tr182; -tr188: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" + goto tr78; + goto tr42; +tr52: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st47; st47: if ( ++p == pe ) goto _out47; case 47: -#line 1153 "ext/hpricot_scan/hpricot_scan.c" +#line 1163 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { case 9: goto st47; - case 39: goto tr42; + case 39: goto tr53; case 61: goto st47; case 95: goto st47; } @@ -1177,103 +1187,103 @@ case 47: case 48: if ( (*p) == 89 ) goto st49; - goto tr296; + goto tr0; st49: if ( ++p == pe ) goto _out49; case 49: if ( (*p) == 83 ) goto st50; - goto tr296; + goto tr0; st50: if ( ++p == pe ) goto _out50; case 50: if ( (*p) == 84 ) goto st51; - goto tr296; + goto tr0; st51: if ( ++p == pe ) goto _out51; case 51: if ( (*p) == 69 ) goto st52; - goto tr296; + goto tr0; st52: if ( ++p == pe ) goto _out52; case 52: if ( (*p) == 77 ) goto st21; - goto tr296; + goto tr0; st53: if ( ++p == pe ) goto _out53; case 53: if ( (*p) == 67 ) goto st54; - goto tr296; + goto tr0; st54: if ( ++p == pe ) goto _out54; case 54: if ( (*p) == 68 ) goto st55; - goto tr296; + goto tr0; st55: if ( ++p == pe ) goto _out55; case 55: if ( (*p) == 65 ) goto st56; - goto tr296; + goto tr0; st56: if ( ++p == pe ) goto _out56; case 56: if ( (*p) == 84 ) goto st57; - goto tr296; + goto tr0; st57: if ( ++p == pe ) goto _out57; case 57: if ( (*p) == 65 ) goto st58; - goto tr296; + goto tr0; st58: if ( ++p == pe ) goto _out58; case 58: if ( (*p) == 91 ) - goto tr355; - goto tr296; + goto tr89; + goto tr0; st59: if ( ++p == pe ) goto _out59; case 59: switch( (*p) ) { - case 58: goto tr338; - case 95: goto tr338; + case 58: goto tr90; + case 95: goto tr90; } if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr338; + goto tr90; } else if ( (*p) >= 65 ) - goto tr338; - goto tr296; -tr338: -#line 77 "ext/hpricot_scan/hpricot_scan.rl" + goto tr90; + goto tr0; +tr90: +#line 83 "ext/hpricot_scan/hpricot_scan.rl" { mark_tag = p; } goto st60; st60: if ( ++p == pe ) goto _out60; case 60: -#line 1274 "ext/hpricot_scan/hpricot_scan.c" +#line 1284 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 32: goto tr332; - case 62: goto tr334; + case 32: goto tr91; + case 62: goto tr93; case 63: goto st60; case 95: goto st60; } @@ -1282,7 +1292,7 @@ case 60: if ( 45 <= (*p) && (*p) <= 46 ) goto st60; } else if ( (*p) >= 9 ) - goto tr332; + goto tr91; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) @@ -1291,42 +1301,42 @@ case 60: goto st60; } else goto st60; - goto tr296; -tr332: -#line 80 "ext/hpricot_scan/hpricot_scan.rl" + goto tr0; +tr91: +#line 86 "ext/hpricot_scan/hpricot_scan.rl" { SET(tag, p); } goto st61; st61: if ( ++p == pe ) goto _out61; case 61: -#line 1304 "ext/hpricot_scan/hpricot_scan.c" +#line 1314 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { case 32: goto st61; - case 62: goto tr314; + case 62: goto tr95; } if ( 9 <= (*p) && (*p) <= 13 ) goto st61; - goto tr296; -tr21: -#line 77 "ext/hpricot_scan/hpricot_scan.rl" + goto tr0; +tr409: +#line 83 "ext/hpricot_scan/hpricot_scan.rl" { mark_tag = p; } goto st62; st62: if ( ++p == pe ) goto _out62; case 62: -#line 1320 "ext/hpricot_scan/hpricot_scan.c" +#line 1330 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 32: goto tr324; - case 47: goto tr326; - case 62: goto tr327; + case 32: goto tr96; + case 47: goto tr98; + case 62: goto tr99; case 63: goto st62; case 95: goto st62; } if ( (*p) < 45 ) { if ( 9 <= (*p) && (*p) <= 13 ) - goto tr324; + goto tr96; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) @@ -1335,22 +1345,22 @@ case 62: goto st62; } else goto st62; - goto tr296; -tr324: -#line 80 "ext/hpricot_scan/hpricot_scan.rl" + goto tr0; +tr96: +#line 86 "ext/hpricot_scan/hpricot_scan.rl" { SET(tag, p); } goto st63; st63: if ( ++p == pe ) goto _out63; case 63: -#line 1348 "ext/hpricot_scan/hpricot_scan.c" +#line 1358 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { case 32: goto st63; case 47: goto st66; - case 62: goto tr318; - case 63: goto tr316; - case 95: goto tr316; + case 62: goto tr103; + case 63: goto tr101; + case 95: goto tr101; } if ( (*p) < 45 ) { if ( 9 <= (*p) && (*p) <= 13 ) @@ -1358,54 +1368,54 @@ case 63: } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr316; + goto tr101; } else if ( (*p) >= 65 ) - goto tr316; + goto tr101; } else - goto tr316; - goto tr296; -tr360: -#line 101 "ext/hpricot_scan/hpricot_scan.rl" - { - ATTR(akey, aval); - } -#line 94 "ext/hpricot_scan/hpricot_scan.rl" + goto tr101; + goto tr0; +tr101: +#line 100 "ext/hpricot_scan/hpricot_scan.rl" { akey = Qnil; aval = Qnil; mark_akey = NULL; mark_aval = NULL; } -#line 79 "ext/hpricot_scan/hpricot_scan.rl" +#line 85 "ext/hpricot_scan/hpricot_scan.rl" { mark_akey = p; } goto st64; -tr316: -#line 94 "ext/hpricot_scan/hpricot_scan.rl" +tr110: +#line 107 "ext/hpricot_scan/hpricot_scan.rl" + { + ATTR(akey, aval); + } +#line 100 "ext/hpricot_scan/hpricot_scan.rl" { akey = Qnil; aval = Qnil; mark_akey = NULL; mark_aval = NULL; } -#line 79 "ext/hpricot_scan/hpricot_scan.rl" +#line 85 "ext/hpricot_scan/hpricot_scan.rl" { mark_akey = p; } goto st64; st64: if ( ++p == pe ) goto _out64; case 64: -#line 1398 "ext/hpricot_scan/hpricot_scan.c" +#line 1408 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 32: goto tr364; - case 47: goto tr366; - case 61: goto tr367; - case 62: goto tr368; + case 32: goto tr104; + case 47: goto tr106; + case 61: goto tr107; + case 62: goto tr108; case 63: goto st64; case 95: goto st64; } if ( (*p) < 45 ) { if ( 9 <= (*p) && (*p) <= 13 ) - goto tr364; + goto tr104; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) @@ -1414,22 +1424,22 @@ case 64: goto st64; } else goto st64; - goto tr69; -tr71: -#line 83 "ext/hpricot_scan/hpricot_scan.rl" + goto tr39; +tr104: +#line 93 "ext/hpricot_scan/hpricot_scan.rl" + { SET(akey, p); } + goto st65; +tr136: +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } goto st65; -tr364: -#line 87 "ext/hpricot_scan/hpricot_scan.rl" - { SET(akey, p); } - goto st65; -tr132: -#line 87 "ext/hpricot_scan/hpricot_scan.rl" +tr130: +#line 93 "ext/hpricot_scan/hpricot_scan.rl" { SET(akey, p); } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } @@ -1439,14 +1449,14 @@ case 64: if ( ++p == pe ) goto _out65; case 65: -#line 1443 "ext/hpricot_scan/hpricot_scan.c" +#line 1453 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { case 32: goto st65; - case 47: goto tr361; + case 47: goto tr111; case 61: goto st67; - case 62: goto tr162; - case 63: goto tr360; - case 95: goto tr360; + case 62: goto tr113; + case 63: goto tr110; + case 95: goto tr110; } if ( (*p) < 45 ) { if ( 9 <= (*p) && (*p) <= 13 ) @@ -1454,106 +1464,106 @@ case 65: } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr360; + goto tr110; } else if ( (*p) >= 65 ) - goto tr360; + goto tr110; } else - goto tr360; - goto tr69; -tr361: -#line 101 "ext/hpricot_scan/hpricot_scan.rl" + goto tr110; + goto tr39; +tr98: +#line 86 "ext/hpricot_scan/hpricot_scan.rl" + { SET(tag, p); } + goto st66; +tr106: +#line 93 "ext/hpricot_scan/hpricot_scan.rl" + { SET(akey, p); } +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } goto st66; -tr366: -#line 87 "ext/hpricot_scan/hpricot_scan.rl" - { SET(akey, p); } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +tr111: +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } goto st66; -tr326: -#line 80 "ext/hpricot_scan/hpricot_scan.rl" - { SET(tag, p); } - goto st66; st66: if ( ++p == pe ) goto _out66; case 66: -#line 1486 "ext/hpricot_scan/hpricot_scan.c" +#line 1496 "ext/hpricot_scan/hpricot_scan.c" if ( (*p) == 62 ) - goto tr369; - goto tr69; -tr367: -#line 87 "ext/hpricot_scan/hpricot_scan.rl" + goto tr114; + goto tr39; +tr107: +#line 93 "ext/hpricot_scan/hpricot_scan.rl" { SET(akey, p); } goto st67; st67: if ( ++p == pe ) goto _out67; case 67: -#line 1498 "ext/hpricot_scan/hpricot_scan.c" +#line 1508 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr157; - case 32: goto tr157; + case 13: goto tr116; + case 32: goto tr116; case 34: goto st142; case 39: goto st143; - case 47: goto tr161; - case 60: goto tr69; - case 62: goto tr162; + case 47: goto tr120; + case 60: goto tr39; + case 62: goto tr113; } if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr158; + goto tr117; } else if ( (*p) >= 9 ) - goto tr157; - goto tr156; -tr156: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" + goto tr116; + goto tr115; +tr115: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st68; st68: if ( ++p == pe ) goto _out68; case 68: -#line 1522 "ext/hpricot_scan/hpricot_scan.c" +#line 1532 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr66; - case 32: goto tr66; - case 47: goto tr68; - case 60: goto tr69; - case 62: goto tr70; + case 13: goto tr122; + case 32: goto tr122; + case 47: goto tr124; + case 60: goto tr39; + case 62: goto tr125; } if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr67; + goto tr123; } else if ( (*p) >= 9 ) - goto tr66; + goto tr122; goto st68; -tr3: -#line 82 "ext/hpricot_scan/hpricot_scan.rl" - { SET(aval, p); } - goto st69; -tr66: -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +tr122: +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } goto st69; -st69: +tr164: +#line 88 "ext/hpricot_scan/hpricot_scan.rl" + { SET(aval, p); } + goto st69; +st69: if ( ++p == pe ) goto _out69; case 69: -#line 1551 "ext/hpricot_scan/hpricot_scan.c" +#line 1561 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { case 32: goto st69; - case 47: goto tr361; - case 62: goto tr162; - case 63: goto tr360; - case 95: goto tr360; + case 47: goto tr111; + case 62: goto tr113; + case 63: goto tr110; + case 95: goto tr110; } if ( (*p) < 45 ) { if ( 9 <= (*p) && (*p) <= 13 ) @@ -1561,105 +1571,105 @@ case 69: } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr360; + goto tr110; } else if ( (*p) >= 65 ) - goto tr360; + goto tr110; } else - goto tr360; - goto tr69; -tr84: -#line 82 "ext/hpricot_scan/hpricot_scan.rl" - { SET(aval, p); } - goto st70; -tr67: -#line 83 "ext/hpricot_scan/hpricot_scan.rl" + goto tr110; + goto tr39; +tr123: +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } goto st70; +tr151: +#line 88 "ext/hpricot_scan/hpricot_scan.rl" + { SET(aval, p); } + goto st70; st70: if ( ++p == pe ) goto _out70; case 70: -#line 1586 "ext/hpricot_scan/hpricot_scan.c" +#line 1596 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr66; - case 32: goto tr66; - case 47: goto tr74; - case 60: goto tr69; - case 62: goto tr76; - case 63: goto tr73; - case 95: goto tr73; + case 13: goto tr122; + case 32: goto tr122; + case 47: goto tr128; + case 60: goto tr39; + case 62: goto tr129; + case 63: goto tr127; + case 95: goto tr127; } if ( (*p) < 45 ) { if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr67; + goto tr123; } else if ( (*p) >= 9 ) - goto tr66; + goto tr122; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr73; + goto tr127; } else if ( (*p) >= 65 ) - goto tr73; + goto tr127; } else - goto tr73; + goto tr127; goto st68; -tr73: -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +tr127: +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } -#line 94 "ext/hpricot_scan/hpricot_scan.rl" +#line 100 "ext/hpricot_scan/hpricot_scan.rl" { akey = Qnil; aval = Qnil; mark_akey = NULL; mark_aval = NULL; } -#line 79 "ext/hpricot_scan/hpricot_scan.rl" +#line 85 "ext/hpricot_scan/hpricot_scan.rl" { mark_akey = p; } goto st71; -tr165: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr146: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } -#line 94 "ext/hpricot_scan/hpricot_scan.rl" +#line 100 "ext/hpricot_scan/hpricot_scan.rl" { akey = Qnil; aval = Qnil; mark_akey = NULL; mark_aval = NULL; } -#line 79 "ext/hpricot_scan/hpricot_scan.rl" +#line 85 "ext/hpricot_scan/hpricot_scan.rl" { mark_akey = p; } goto st71; st71: if ( ++p == pe ) goto _out71; case 71: -#line 1647 "ext/hpricot_scan/hpricot_scan.c" - switch( (*p) ) { - case 13: goto tr132; - case 32: goto tr132; - case 47: goto tr135; - case 60: goto tr69; - case 61: goto tr136; - case 62: goto tr137; +#line 1657 "ext/hpricot_scan/hpricot_scan.c" + switch( (*p) ) { + case 13: goto tr130; + case 32: goto tr130; + case 47: goto tr133; + case 60: goto tr39; + case 61: goto tr134; + case 62: goto tr135; case 63: goto st71; case 95: goto st71; } if ( (*p) < 45 ) { if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr133; + goto tr131; } else if ( (*p) >= 9 ) - goto tr132; + goto tr130; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) @@ -1669,17 +1679,17 @@ case 71: } else goto st71; goto st68; -tr72: -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +tr137: +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } goto st72; -tr133: -#line 87 "ext/hpricot_scan/hpricot_scan.rl" +tr131: +#line 93 "ext/hpricot_scan/hpricot_scan.rl" { SET(akey, p); } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } @@ -1689,96 +1699,96 @@ case 71: if ( ++p == pe ) goto _out72; case 72: -#line 1693 "ext/hpricot_scan/hpricot_scan.c" +#line 1703 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr71; - case 32: goto tr71; - case 47: goto tr74; - case 60: goto tr69; + case 13: goto tr136; + case 32: goto tr136; + case 47: goto tr128; + case 60: goto tr39; case 61: goto st74; - case 62: goto tr76; - case 63: goto tr73; - case 95: goto tr73; + case 62: goto tr129; + case 63: goto tr127; + case 95: goto tr127; } if ( (*p) < 45 ) { if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr72; + goto tr137; } else if ( (*p) >= 9 ) - goto tr71; + goto tr136; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr73; + goto tr127; } else if ( (*p) >= 65 ) - goto tr73; + goto tr127; } else - goto tr73; + goto tr127; goto st68; -tr68: -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +tr120: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" + { mark_aval = p; } +#line 107 "ext/hpricot_scan/hpricot_scan.rl" + { + ATTR(akey, aval); + } + goto st73; +tr124: +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } goto st73; -tr74: -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +tr128: +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } goto st73; -tr135: -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +tr133: +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } -#line 87 "ext/hpricot_scan/hpricot_scan.rl" +#line 93 "ext/hpricot_scan/hpricot_scan.rl" { SET(akey, p); } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" - { - ATTR(akey, aval); - } - goto st73; -tr161: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" - { mark_aval = p; } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } goto st73; -tr230: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr143: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } goto st73; -tr231: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr147: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } @@ -1788,56 +1798,56 @@ case 72: if ( ++p == pe ) goto _out73; case 73: -#line 1792 "ext/hpricot_scan/hpricot_scan.c" +#line 1802 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr66; - case 32: goto tr66; - case 47: goto tr68; - case 60: goto tr69; - case 62: goto tr70; + case 13: goto tr122; + case 32: goto tr122; + case 47: goto tr124; + case 60: goto tr39; + case 62: goto tr125; } if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr67; + goto tr123; } else if ( (*p) >= 9 ) - goto tr66; + goto tr122; goto st68; -tr136: -#line 87 "ext/hpricot_scan/hpricot_scan.rl" - { SET(akey, p); } - goto st74; -tr158: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr117: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st74; +tr134: +#line 93 "ext/hpricot_scan/hpricot_scan.rl" + { SET(akey, p); } + goto st74; st74: if ( ++p == pe ) goto _out74; case 74: -#line 1818 "ext/hpricot_scan/hpricot_scan.c" +#line 1828 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr226; - case 32: goto tr226; + case 13: goto tr139; + case 32: goto tr139; case 34: goto st77; case 39: goto st141; - case 47: goto tr230; - case 60: goto tr69; - case 62: goto tr70; + case 47: goto tr143; + case 60: goto tr39; + case 62: goto tr125; } if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr227; + goto tr140; } else if ( (*p) >= 9 ) - goto tr226; - goto tr156; -tr163: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" + goto tr139; + goto tr115; +tr144: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st75; -tr226: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr139: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } @@ -1847,41 +1857,41 @@ case 74: if ( ++p == pe ) goto _out75; case 75: -#line 1851 "ext/hpricot_scan/hpricot_scan.c" +#line 1861 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr163; - case 32: goto tr163; + case 13: goto tr144; + case 32: goto tr144; case 34: goto st142; case 39: goto st143; - case 47: goto tr161; - case 60: goto tr69; - case 62: goto tr162; - case 63: goto tr165; - case 95: goto tr165; + case 47: goto tr120; + case 60: goto tr39; + case 62: goto tr113; + case 63: goto tr146; + case 95: goto tr146; } if ( (*p) < 45 ) { if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr164; + goto tr145; } else if ( (*p) >= 9 ) - goto tr163; + goto tr144; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr165; + goto tr146; } else if ( (*p) >= 65 ) - goto tr165; + goto tr146; } else - goto tr165; - goto tr156; -tr164: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" + goto tr146; + goto tr115; +tr145: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st76; -tr227: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr140: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } @@ -1891,119 +1901,119 @@ case 75: if ( ++p == pe ) goto _out76; case 76: -#line 1895 "ext/hpricot_scan/hpricot_scan.c" +#line 1905 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr226; - case 32: goto tr226; + case 13: goto tr139; + case 32: goto tr139; case 34: goto st77; case 39: goto st141; - case 47: goto tr231; - case 60: goto tr69; - case 62: goto tr76; - case 63: goto tr165; - case 95: goto tr165; + case 47: goto tr147; + case 60: goto tr39; + case 62: goto tr129; + case 63: goto tr146; + case 95: goto tr146; } if ( (*p) < 45 ) { if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr227; + goto tr140; } else if ( (*p) >= 9 ) - goto tr226; + goto tr139; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr165; + goto tr146; } else if ( (*p) >= 65 ) - goto tr165; + goto tr146; } else - goto tr165; - goto tr156; + goto tr146; + goto tr115; st77: if ( ++p == pe ) goto _out77; case 77: switch( (*p) ) { - case 13: goto tr248; - case 32: goto tr248; - case 34: goto tr84; - case 47: goto tr246; - case 60: goto tr199; - case 62: goto tr250; - case 92: goto tr195; + case 13: goto tr149; + case 32: goto tr149; + case 34: goto tr151; + case 47: goto tr152; + case 60: goto tr153; + case 62: goto tr154; + case 92: goto tr155; } if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr249; + goto tr150; } else if ( (*p) >= 9 ) - goto tr248; - goto tr189; -tr189: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" + goto tr149; + goto tr148; +tr148: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st78; st78: if ( ++p == pe ) goto _out78; case 78: -#line 1949 "ext/hpricot_scan/hpricot_scan.c" +#line 1959 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr92; - case 32: goto tr92; - case 34: goto tr84; - case 47: goto tr95; + case 13: goto tr157; + case 32: goto tr157; + case 34: goto tr151; + case 47: goto tr159; case 60: goto st80; - case 62: goto tr96; + case 62: goto tr161; case 92: goto st94; } if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr93; + goto tr158; } else if ( (*p) >= 9 ) - goto tr92; + goto tr157; goto st78; -tr11: -#line 82 "ext/hpricot_scan/hpricot_scan.rl" - { SET(aval, p); } +tr328: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" + { mark_aval = p; } goto st79; -tr92: -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +tr157: +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } goto st79; -tr201: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" - { mark_aval = p; } - goto st79; -tr216: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" - { mark_aval = p; } -#line 82 "ext/hpricot_scan/hpricot_scan.rl" - { SET(aval, p); } - goto st79; -tr248: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr149: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } goto st79; +tr169: +#line 88 "ext/hpricot_scan/hpricot_scan.rl" + { SET(aval, p); } + goto st79; +tr310: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" + { mark_aval = p; } +#line 88 "ext/hpricot_scan/hpricot_scan.rl" + { SET(aval, p); } + goto st79; st79: if ( ++p == pe ) goto _out79; case 79: -#line 1999 "ext/hpricot_scan/hpricot_scan.c" +#line 2009 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { case 32: goto st79; - case 34: goto tr3; - case 47: goto tr48; - case 62: goto tr50; - case 63: goto tr47; + case 34: goto tr164; + case 47: goto tr166; + case 62: goto tr167; + case 63: goto tr165; case 92: goto st81; - case 95: goto tr47; + case 95: goto tr165; } if ( (*p) < 45 ) { if ( 9 <= (*p) && (*p) <= 13 ) @@ -2011,90 +2021,90 @@ case 79: } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr47; + goto tr165; } else if ( (*p) >= 65 ) - goto tr47; + goto tr165; } else - goto tr47; + goto tr165; goto st80; -tr199: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr153: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st80; st80: if ( ++p == pe ) goto _out80; case 80: -#line 2029 "ext/hpricot_scan/hpricot_scan.c" +#line 2039 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 34: goto tr3; + case 34: goto tr164; case 92: goto st81; } goto st80; -tr200: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr332: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st81; st81: if ( ++p == pe ) goto _out81; case 81: -#line 2043 "ext/hpricot_scan/hpricot_scan.c" +#line 2053 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 34: goto tr11; + case 34: goto tr169; case 92: goto st81; } goto st80; -tr47: -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +tr165: +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } -#line 94 "ext/hpricot_scan/hpricot_scan.rl" +#line 100 "ext/hpricot_scan/hpricot_scan.rl" { akey = Qnil; aval = Qnil; mark_akey = NULL; mark_aval = NULL; } -#line 79 "ext/hpricot_scan/hpricot_scan.rl" +#line 85 "ext/hpricot_scan/hpricot_scan.rl" { mark_akey = p; } goto st82; -tr202: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr329: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } -#line 94 "ext/hpricot_scan/hpricot_scan.rl" +#line 100 "ext/hpricot_scan/hpricot_scan.rl" { akey = Qnil; aval = Qnil; mark_akey = NULL; mark_aval = NULL; } -#line 79 "ext/hpricot_scan/hpricot_scan.rl" +#line 85 "ext/hpricot_scan/hpricot_scan.rl" { mark_akey = p; } goto st82; st82: if ( ++p == pe ) goto _out82; case 82: -#line 2085 "ext/hpricot_scan/hpricot_scan.c" +#line 2095 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 32: goto tr122; - case 34: goto tr3; - case 47: goto tr124; - case 61: goto tr125; - case 62: goto tr126; + case 32: goto tr170; + case 34: goto tr164; + case 47: goto tr172; + case 61: goto tr173; + case 62: goto tr174; case 63: goto st82; case 92: goto st81; case 95: goto st82; } if ( (*p) < 45 ) { if ( 9 <= (*p) && (*p) <= 13 ) - goto tr122; + goto tr170; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) @@ -2104,21 +2114,21 @@ case 82: } else goto st82; goto st80; -tr98: -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +tr170: +#line 93 "ext/hpricot_scan/hpricot_scan.rl" + { SET(akey, p); } + goto st83; +tr201: +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } goto st83; -tr122: -#line 87 "ext/hpricot_scan/hpricot_scan.rl" - { SET(akey, p); } - goto st83; -tr144: -#line 87 "ext/hpricot_scan/hpricot_scan.rl" +tr195: +#line 93 "ext/hpricot_scan/hpricot_scan.rl" { SET(akey, p); } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } @@ -2128,16 +2138,16 @@ case 82: if ( ++p == pe ) goto _out83; case 83: -#line 2132 "ext/hpricot_scan/hpricot_scan.c" +#line 2142 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { case 32: goto st83; - case 34: goto tr3; - case 47: goto tr48; + case 34: goto tr164; + case 47: goto tr166; case 61: goto st85; - case 62: goto tr50; - case 63: goto tr47; + case 62: goto tr167; + case 63: goto tr165; case 92: goto st81; - case 95: goto tr47; + case 95: goto tr165; } if ( (*p) < 45 ) { if ( 9 <= (*p) && (*p) <= 13 ) @@ -2145,30 +2155,30 @@ case 83: } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr47; + goto tr165; } else if ( (*p) >= 65 ) - goto tr47; + goto tr165; } else - goto tr47; + goto tr165; goto st80; -tr48: -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +tr172: +#line 93 "ext/hpricot_scan/hpricot_scan.rl" + { SET(akey, p); } +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } goto st84; -tr124: -#line 87 "ext/hpricot_scan/hpricot_scan.rl" - { SET(akey, p); } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +tr166: +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } goto st84; -tr203: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr330: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } @@ -2177,131 +2187,131 @@ case 83: if ( ++p == pe ) goto _out84; case 84: -#line 2181 "ext/hpricot_scan/hpricot_scan.c" +#line 2191 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 34: goto tr3; - case 62: goto tr45; + case 34: goto tr164; + case 62: goto tr177; case 92: goto st81; } goto st80; -tr45: -#line 1 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p+1;} -#line 70 "ext/hpricot_scan/hpricot_scan.rl" - {act = 12;} - goto st209; -tr50: +tr154: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokend = p+1;} -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 84 "ext/hpricot_scan/hpricot_scan.rl" + { mark_aval = p; } +#line 89 "ext/hpricot_scan/hpricot_scan.rl" + { + if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } + else { SET(aval, p); } + } +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } #line 68 "ext/hpricot_scan/hpricot_scan.rl" {act = 10;} goto st209; -tr96: +tr161: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokend = p+1;} -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } #line 68 "ext/hpricot_scan/hpricot_scan.rl" {act = 10;} goto st209; -tr103: +tr167: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokend = p+1;} -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" - { - if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } - else { SET(aval, p); } - } #line 68 "ext/hpricot_scan/hpricot_scan.rl" {act = 10;} goto st209; -tr126: +tr174: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokend = p+1;} -#line 87 "ext/hpricot_scan/hpricot_scan.rl" +#line 93 "ext/hpricot_scan/hpricot_scan.rl" { SET(akey, p); } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } #line 68 "ext/hpricot_scan/hpricot_scan.rl" {act = 10;} goto st209; -tr149: +tr177: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokend = p+1;} -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 70 "ext/hpricot_scan/hpricot_scan.rl" + {act = 12;} + goto st209; +tr191: +#line 1 "ext/hpricot_scan/hpricot_scan.rl" + {tokend = p+1;} +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { - if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } - else { SET(aval, p); } + ATTR(akey, aval); } -#line 87 "ext/hpricot_scan/hpricot_scan.rl" - { SET(akey, p); } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { - ATTR(akey, aval); + if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } + else { SET(aval, p); } } #line 68 "ext/hpricot_scan/hpricot_scan.rl" {act = 10;} goto st209; -tr204: +tr192: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokend = p+1;} -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } +#line 89 "ext/hpricot_scan/hpricot_scan.rl" + { + if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } + else { SET(aval, p); } + } #line 68 "ext/hpricot_scan/hpricot_scan.rl" {act = 10;} goto st209; -tr250: +tr200: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokend = p+1;} -#line 78 "ext/hpricot_scan/hpricot_scan.rl" - { mark_aval = p; } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 93 "ext/hpricot_scan/hpricot_scan.rl" + { SET(akey, p); } +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } #line 68 "ext/hpricot_scan/hpricot_scan.rl" {act = 10;} goto st209; -tr251: +tr331: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokend = p+1;} -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" - { - if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } - else { SET(aval, p); } - } #line 68 "ext/hpricot_scan/hpricot_scan.rl" {act = 10;} goto st209; @@ -2309,70 +2319,70 @@ case 84: if ( ++p == pe ) goto _out209; case 209: -#line 2313 "ext/hpricot_scan/hpricot_scan.c" +#line 2323 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 34: goto tr3; + case 34: goto tr164; case 92: goto st81; } goto st80; -tr125: -#line 87 "ext/hpricot_scan/hpricot_scan.rl" +tr173: +#line 93 "ext/hpricot_scan/hpricot_scan.rl" { SET(akey, p); } goto st85; st85: if ( ++p == pe ) goto _out85; case 85: -#line 2327 "ext/hpricot_scan/hpricot_scan.c" +#line 2337 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr190; - case 32: goto tr190; - case 34: goto tr192; + case 13: goto tr178; + case 32: goto tr178; + case 34: goto tr180; case 39: goto st140; - case 47: goto tr194; + case 47: goto tr182; case 60: goto st80; - case 62: goto tr50; - case 92: goto tr195; + case 62: goto tr167; + case 92: goto tr155; } if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr191; + goto tr179; } else if ( (*p) >= 9 ) - goto tr190; - goto tr189; -tr190: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" + goto tr178; + goto tr148; +tr178: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st86; st86: if ( ++p == pe ) goto _out86; case 86: -#line 2352 "ext/hpricot_scan/hpricot_scan.c" +#line 2362 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr196; - case 32: goto tr196; - case 34: goto tr192; + case 13: goto tr183; + case 32: goto tr183; + case 34: goto tr180; case 39: goto st140; - case 47: goto tr194; + case 47: goto tr182; case 60: goto st80; - case 62: goto tr50; - case 92: goto tr195; + case 62: goto tr167; + case 92: goto tr155; } if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr197; + goto tr184; } else if ( (*p) >= 9 ) - goto tr196; - goto tr189; -tr196: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" + goto tr183; + goto tr148; +tr183: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st87; -tr242: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr186: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } @@ -2382,42 +2392,42 @@ case 86: if ( ++p == pe ) goto _out87; case 87: -#line 2386 "ext/hpricot_scan/hpricot_scan.c" +#line 2396 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr196; - case 32: goto tr196; - case 34: goto tr192; + case 13: goto tr183; + case 32: goto tr183; + case 34: goto tr180; case 39: goto st140; - case 47: goto tr194; + case 47: goto tr182; case 60: goto st80; - case 62: goto tr50; - case 63: goto tr198; - case 92: goto tr195; - case 95: goto tr198; + case 62: goto tr167; + case 63: goto tr185; + case 92: goto tr155; + case 95: goto tr185; } if ( (*p) < 45 ) { if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr197; + goto tr184; } else if ( (*p) >= 9 ) - goto tr196; + goto tr183; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr198; + goto tr185; } else if ( (*p) >= 65 ) - goto tr198; + goto tr185; } else - goto tr198; - goto tr189; -tr197: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" + goto tr185; + goto tr148; +tr184: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st88; -tr243: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr187: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } @@ -2427,171 +2437,171 @@ case 87: if ( ++p == pe ) goto _out88; case 88: -#line 2431 "ext/hpricot_scan/hpricot_scan.c" +#line 2441 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr242; - case 32: goto tr242; - case 34: goto tr244; + case 13: goto tr186; + case 32: goto tr186; + case 34: goto tr188; case 39: goto st96; - case 47: goto tr247; + case 47: goto tr190; case 60: goto st80; - case 62: goto tr103; - case 63: goto tr198; - case 92: goto tr195; - case 95: goto tr198; + case 62: goto tr191; + case 63: goto tr185; + case 92: goto tr155; + case 95: goto tr185; } if ( (*p) < 45 ) { if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr243; + goto tr187; } else if ( (*p) >= 9 ) - goto tr242; + goto tr186; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr198; + goto tr185; } else if ( (*p) >= 65 ) - goto tr198; + goto tr185; } else - goto tr198; - goto tr189; -tr244: -#line 82 "ext/hpricot_scan/hpricot_scan.rl" + goto tr185; + goto tr148; +tr188: +#line 88 "ext/hpricot_scan/hpricot_scan.rl" { SET(aval, p); } goto st89; st89: if ( ++p == pe ) goto _out89; case 89: -#line 2467 "ext/hpricot_scan/hpricot_scan.c" - switch( (*p) ) { - case 13: goto tr248; - case 32: goto tr248; - case 34: goto tr84; - case 47: goto tr247; - case 60: goto tr199; - case 62: goto tr251; - case 63: goto tr198; - case 92: goto tr195; - case 95: goto tr198; +#line 2477 "ext/hpricot_scan/hpricot_scan.c" + switch( (*p) ) { + case 13: goto tr149; + case 32: goto tr149; + case 34: goto tr151; + case 47: goto tr190; + case 60: goto tr153; + case 62: goto tr192; + case 63: goto tr185; + case 92: goto tr155; + case 95: goto tr185; } if ( (*p) < 45 ) { if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr249; + goto tr150; } else if ( (*p) >= 9 ) - goto tr248; + goto tr149; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr198; + goto tr185; } else if ( (*p) >= 65 ) - goto tr198; + goto tr185; } else - goto tr198; - goto tr189; -tr94: -#line 82 "ext/hpricot_scan/hpricot_scan.rl" - { SET(aval, p); } - goto st90; -tr93: -#line 83 "ext/hpricot_scan/hpricot_scan.rl" + goto tr185; + goto tr148; +tr158: +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } goto st90; -tr260: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" - { mark_aval = p; } -#line 82 "ext/hpricot_scan/hpricot_scan.rl" - { SET(aval, p); } - goto st90; -tr249: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr150: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } goto st90; +tr204: +#line 88 "ext/hpricot_scan/hpricot_scan.rl" + { SET(aval, p); } + goto st90; +tr275: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" + { mark_aval = p; } +#line 88 "ext/hpricot_scan/hpricot_scan.rl" + { SET(aval, p); } + goto st90; st90: if ( ++p == pe ) goto _out90; case 90: -#line 2524 "ext/hpricot_scan/hpricot_scan.c" +#line 2534 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr92; - case 32: goto tr92; - case 34: goto tr84; - case 47: goto tr101; + case 13: goto tr157; + case 32: goto tr157; + case 34: goto tr151; + case 47: goto tr194; case 60: goto st80; - case 62: goto tr103; - case 63: goto tr100; + case 62: goto tr191; + case 63: goto tr193; case 92: goto st94; - case 95: goto tr100; + case 95: goto tr193; } if ( (*p) < 45 ) { if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr93; + goto tr158; } else if ( (*p) >= 9 ) - goto tr92; + goto tr157; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr100; + goto tr193; } else if ( (*p) >= 65 ) - goto tr100; + goto tr193; } else - goto tr100; + goto tr193; goto st78; -tr100: -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +tr193: +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } -#line 94 "ext/hpricot_scan/hpricot_scan.rl" +#line 100 "ext/hpricot_scan/hpricot_scan.rl" { akey = Qnil; aval = Qnil; mark_akey = NULL; mark_aval = NULL; } -#line 79 "ext/hpricot_scan/hpricot_scan.rl" +#line 85 "ext/hpricot_scan/hpricot_scan.rl" { mark_akey = p; } goto st91; -tr198: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr185: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } -#line 94 "ext/hpricot_scan/hpricot_scan.rl" +#line 100 "ext/hpricot_scan/hpricot_scan.rl" { akey = Qnil; aval = Qnil; mark_akey = NULL; mark_aval = NULL; } -#line 79 "ext/hpricot_scan/hpricot_scan.rl" +#line 85 "ext/hpricot_scan/hpricot_scan.rl" { mark_akey = p; } goto st91; st91: if ( ++p == pe ) goto _out91; case 91: -#line 2587 "ext/hpricot_scan/hpricot_scan.c" +#line 2597 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr144; - case 32: goto tr144; - case 34: goto tr84; - case 47: goto tr147; + case 13: goto tr195; + case 32: goto tr195; + case 34: goto tr151; + case 47: goto tr198; case 60: goto st80; - case 61: goto tr148; - case 62: goto tr149; + case 61: goto tr199; + case 62: goto tr200; case 63: goto st91; case 92: goto st94; case 95: goto st91; @@ -2599,9 +2609,9 @@ case 91: if ( (*p) < 45 ) { if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr145; + goto tr196; } else if ( (*p) >= 9 ) - goto tr144; + goto tr195; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) @@ -2611,17 +2621,17 @@ case 91: } else goto st91; goto st78; -tr99: -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +tr202: +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } goto st92; -tr145: -#line 87 "ext/hpricot_scan/hpricot_scan.rl" +tr196: +#line 93 "ext/hpricot_scan/hpricot_scan.rl" { SET(akey, p); } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } @@ -2631,98 +2641,98 @@ case 91: if ( ++p == pe ) goto _out92; case 92: -#line 2635 "ext/hpricot_scan/hpricot_scan.c" +#line 2645 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr98; - case 32: goto tr98; - case 34: goto tr84; - case 47: goto tr101; + case 13: goto tr201; + case 32: goto tr201; + case 34: goto tr151; + case 47: goto tr194; case 60: goto st80; case 61: goto st95; - case 62: goto tr103; - case 63: goto tr100; + case 62: goto tr191; + case 63: goto tr193; case 92: goto st94; - case 95: goto tr100; + case 95: goto tr193; } if ( (*p) < 45 ) { if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr99; + goto tr202; } else if ( (*p) >= 9 ) - goto tr98; + goto tr201; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr100; + goto tr193; } else if ( (*p) >= 65 ) - goto tr100; + goto tr193; } else - goto tr100; + goto tr193; goto st78; -tr95: -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +tr182: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" + { mark_aval = p; } +#line 107 "ext/hpricot_scan/hpricot_scan.rl" + { + ATTR(akey, aval); + } + goto st93; +tr159: +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } goto st93; -tr101: -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +tr194: +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } goto st93; -tr147: -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +tr198: +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } -#line 87 "ext/hpricot_scan/hpricot_scan.rl" +#line 93 "ext/hpricot_scan/hpricot_scan.rl" { SET(akey, p); } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" - { - ATTR(akey, aval); - } - goto st93; -tr194: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" - { mark_aval = p; } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } goto st93; -tr246: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr152: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } goto st93; -tr247: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr190: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } @@ -2732,158 +2742,158 @@ case 92: if ( ++p == pe ) goto _out93; case 93: -#line 2736 "ext/hpricot_scan/hpricot_scan.c" +#line 2746 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr92; - case 32: goto tr92; - case 34: goto tr84; - case 47: goto tr95; + case 13: goto tr157; + case 32: goto tr157; + case 34: goto tr151; + case 47: goto tr159; case 60: goto st80; - case 62: goto tr96; + case 62: goto tr161; case 92: goto st94; } if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr93; + goto tr158; } else if ( (*p) >= 9 ) - goto tr92; + goto tr157; goto st78; -tr195: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr155: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st94; st94: if ( ++p == pe ) goto _out94; case 94: -#line 2760 "ext/hpricot_scan/hpricot_scan.c" +#line 2770 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr92; - case 32: goto tr92; - case 34: goto tr94; - case 47: goto tr95; + case 13: goto tr157; + case 32: goto tr157; + case 34: goto tr204; + case 47: goto tr159; case 60: goto st80; - case 62: goto tr96; + case 62: goto tr161; case 92: goto st94; } if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr93; + goto tr158; } else if ( (*p) >= 9 ) - goto tr92; + goto tr157; goto st78; -tr148: -#line 87 "ext/hpricot_scan/hpricot_scan.rl" - { SET(akey, p); } - goto st95; -tr191: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr179: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st95; +tr199: +#line 93 "ext/hpricot_scan/hpricot_scan.rl" + { SET(akey, p); } + goto st95; st95: if ( ++p == pe ) goto _out95; case 95: -#line 2788 "ext/hpricot_scan/hpricot_scan.c" +#line 2798 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr242; - case 32: goto tr242; - case 34: goto tr244; + case 13: goto tr186; + case 32: goto tr186; + case 34: goto tr188; case 39: goto st96; - case 47: goto tr246; + case 47: goto tr152; case 60: goto st80; - case 62: goto tr96; - case 92: goto tr195; + case 62: goto tr161; + case 92: goto tr155; } if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr243; + goto tr187; } else if ( (*p) >= 9 ) - goto tr242; - goto tr189; + goto tr186; + goto tr148; st96: if ( ++p == pe ) goto _out96; case 96: switch( (*p) ) { - case 13: goto tr258; - case 32: goto tr258; - case 34: goto tr263; - case 39: goto tr94; - case 47: goto tr256; - case 60: goto tr215; - case 62: goto tr261; - case 92: goto tr211; + case 13: goto tr206; + case 32: goto tr206; + case 34: goto tr208; + case 39: goto tr204; + case 47: goto tr209; + case 60: goto tr210; + case 62: goto tr211; + case 92: goto tr212; } if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr259; + goto tr207; } else if ( (*p) >= 9 ) - goto tr258; + goto tr206; goto tr205; tr205: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st97; st97: if ( ++p == pe ) goto _out97; case 97: -#line 2833 "ext/hpricot_scan/hpricot_scan.c" +#line 2843 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr105; - case 32: goto tr105; - case 34: goto tr80; - case 39: goto tr94; - case 47: goto tr108; + case 13: goto tr214; + case 32: goto tr214; + case 34: goto tr216; + case 39: goto tr204; + case 47: goto tr217; case 60: goto st99; - case 62: goto tr109; + case 62: goto tr219; case 92: goto st129; } if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr106; + goto tr215; } else if ( (*p) >= 9 ) - goto tr105; + goto tr214; goto st97; -tr51: -#line 82 "ext/hpricot_scan/hpricot_scan.rl" - { SET(aval, p); } +tr309: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" + { mark_aval = p; } goto st98; -tr105: -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +tr214: +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } goto st98; -tr218: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" - { mark_aval = p; } - goto st98; -tr258: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr206: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } goto st98; +tr293: +#line 88 "ext/hpricot_scan/hpricot_scan.rl" + { SET(aval, p); } + goto st98; st98: if ( ++p == pe ) goto _out98; case 98: -#line 2878 "ext/hpricot_scan/hpricot_scan.c" +#line 2888 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { case 32: goto st98; - case 34: goto tr10; - case 39: goto tr11; - case 47: goto tr55; - case 62: goto tr57; - case 63: goto tr54; + case 34: goto tr222; + case 39: goto tr169; + case 47: goto tr224; + case 62: goto tr225; + case 63: goto tr223; case 92: goto st122; - case 95: goto tr54; + case 95: goto tr223; } if ( (*p) < 45 ) { if ( 9 <= (*p) && (*p) <= 13 ) @@ -2891,70 +2901,70 @@ case 98: } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr54; + goto tr223; } else if ( (*p) >= 65 ) - goto tr54; + goto tr223; } else - goto tr54; + goto tr223; goto st99; -tr215: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr210: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st99; st99: if ( ++p == pe ) goto _out99; case 99: -#line 2909 "ext/hpricot_scan/hpricot_scan.c" +#line 2919 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 34: goto tr10; - case 39: goto tr11; + case 34: goto tr222; + case 39: goto tr169; case 92: goto st122; } goto st99; -tr10: -#line 82 "ext/hpricot_scan/hpricot_scan.rl" - { SET(aval, p); } +tr323: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" + { mark_aval = p; } goto st100; -tr78: -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +tr249: +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } goto st100; -tr178: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" - { mark_aval = p; } - goto st100; -tr225: -#line 82 "ext/hpricot_scan/hpricot_scan.rl" - { SET(aval, p); } -#line 78 "ext/hpricot_scan/hpricot_scan.rl" - { mark_aval = p; } - goto st100; -tr238: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr319: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } goto st100; +tr222: +#line 88 "ext/hpricot_scan/hpricot_scan.rl" + { SET(aval, p); } + goto st100; +tr315: +#line 88 "ext/hpricot_scan/hpricot_scan.rl" + { SET(aval, p); } +#line 84 "ext/hpricot_scan/hpricot_scan.rl" + { mark_aval = p; } + goto st100; st100: if ( ++p == pe ) goto _out100; case 100: -#line 2950 "ext/hpricot_scan/hpricot_scan.c" +#line 2960 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { case 32: goto st100; - case 39: goto tr3; - case 47: goto tr31; - case 62: goto tr33; - case 63: goto tr30; + case 39: goto tr164; + case 47: goto tr230; + case 62: goto tr231; + case 63: goto tr229; case 92: goto st102; - case 95: goto tr30; + case 95: goto tr229; } if ( (*p) < 45 ) { if ( 9 <= (*p) && (*p) <= 13 ) @@ -2962,90 +2972,90 @@ case 100: } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr30; + goto tr229; } else if ( (*p) >= 65 ) - goto tr30; + goto tr229; } else - goto tr30; + goto tr229; goto st101; -tr176: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr321: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st101; st101: if ( ++p == pe ) goto _out101; case 101: -#line 2980 "ext/hpricot_scan/hpricot_scan.c" +#line 2990 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 39: goto tr3; + case 39: goto tr164; case 92: goto st102; } goto st101; -tr177: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr327: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st102; st102: if ( ++p == pe ) goto _out102; case 102: -#line 2994 "ext/hpricot_scan/hpricot_scan.c" +#line 3004 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 39: goto tr10; + case 39: goto tr222; case 92: goto st102; } goto st101; -tr30: -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +tr229: +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } -#line 94 "ext/hpricot_scan/hpricot_scan.rl" +#line 100 "ext/hpricot_scan/hpricot_scan.rl" { akey = Qnil; aval = Qnil; mark_akey = NULL; mark_aval = NULL; } -#line 79 "ext/hpricot_scan/hpricot_scan.rl" +#line 85 "ext/hpricot_scan/hpricot_scan.rl" { mark_akey = p; } goto st103; -tr179: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr324: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } -#line 94 "ext/hpricot_scan/hpricot_scan.rl" +#line 100 "ext/hpricot_scan/hpricot_scan.rl" { akey = Qnil; aval = Qnil; mark_akey = NULL; mark_aval = NULL; } -#line 79 "ext/hpricot_scan/hpricot_scan.rl" +#line 85 "ext/hpricot_scan/hpricot_scan.rl" { mark_akey = p; } goto st103; st103: if ( ++p == pe ) goto _out103; case 103: -#line 3036 "ext/hpricot_scan/hpricot_scan.c" +#line 3046 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 32: goto tr117; - case 39: goto tr3; - case 47: goto tr119; - case 61: goto tr120; - case 62: goto tr121; + case 32: goto tr233; + case 39: goto tr164; + case 47: goto tr235; + case 61: goto tr236; + case 62: goto tr237; case 63: goto st103; case 92: goto st102; case 95: goto st103; } if ( (*p) < 45 ) { if ( 9 <= (*p) && (*p) <= 13 ) - goto tr117; + goto tr233; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) @@ -3055,21 +3065,21 @@ case 103: } else goto st103; goto st101; -tr85: -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +tr233: +#line 93 "ext/hpricot_scan/hpricot_scan.rl" + { SET(akey, p); } + goto st104; +tr263: +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } goto st104; -tr117: -#line 87 "ext/hpricot_scan/hpricot_scan.rl" - { SET(akey, p); } - goto st104; -tr138: -#line 87 "ext/hpricot_scan/hpricot_scan.rl" +tr257: +#line 93 "ext/hpricot_scan/hpricot_scan.rl" { SET(akey, p); } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } @@ -3079,16 +3089,16 @@ case 103: if ( ++p == pe ) goto _out104; case 104: -#line 3083 "ext/hpricot_scan/hpricot_scan.c" +#line 3093 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { case 32: goto st104; - case 39: goto tr3; - case 47: goto tr31; + case 39: goto tr164; + case 47: goto tr230; case 61: goto st106; - case 62: goto tr33; - case 63: goto tr30; + case 62: goto tr231; + case 63: goto tr229; case 92: goto st102; - case 95: goto tr30; + case 95: goto tr229; } if ( (*p) < 45 ) { if ( 9 <= (*p) && (*p) <= 13 ) @@ -3096,30 +3106,30 @@ case 104: } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr30; + goto tr229; } else if ( (*p) >= 65 ) - goto tr30; + goto tr229; } else - goto tr30; + goto tr229; goto st101; -tr31: -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +tr235: +#line 93 "ext/hpricot_scan/hpricot_scan.rl" + { SET(akey, p); } +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } goto st105; -tr119: -#line 87 "ext/hpricot_scan/hpricot_scan.rl" - { SET(akey, p); } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +tr230: +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } goto st105; -tr180: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr325: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } @@ -3128,131 +3138,131 @@ case 104: if ( ++p == pe ) goto _out105; case 105: -#line 3132 "ext/hpricot_scan/hpricot_scan.c" +#line 3142 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 39: goto tr3; - case 62: goto tr28; + case 39: goto tr164; + case 62: goto tr240; case 92: goto st102; } goto st101; -tr28: -#line 1 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p+1;} -#line 70 "ext/hpricot_scan/hpricot_scan.rl" - {act = 12;} - goto st210; -tr33: +tr333: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokend = p+1;} -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 84 "ext/hpricot_scan/hpricot_scan.rl" + { mark_aval = p; } +#line 89 "ext/hpricot_scan/hpricot_scan.rl" + { + if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } + else { SET(aval, p); } + } +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } #line 68 "ext/hpricot_scan/hpricot_scan.rl" {act = 10;} goto st210; -tr82: +tr252: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokend = p+1;} -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } #line 68 "ext/hpricot_scan/hpricot_scan.rl" {act = 10;} goto st210; -tr90: +tr231: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokend = p+1;} -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" - { - if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } - else { SET(aval, p); } - } #line 68 "ext/hpricot_scan/hpricot_scan.rl" {act = 10;} goto st210; -tr121: +tr237: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokend = p+1;} -#line 87 "ext/hpricot_scan/hpricot_scan.rl" +#line 93 "ext/hpricot_scan/hpricot_scan.rl" { SET(akey, p); } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } #line 68 "ext/hpricot_scan/hpricot_scan.rl" {act = 10;} goto st210; -tr143: +tr240: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokend = p+1;} -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 70 "ext/hpricot_scan/hpricot_scan.rl" + {act = 12;} + goto st210; +tr256: +#line 1 "ext/hpricot_scan/hpricot_scan.rl" + {tokend = p+1;} +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { - if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } - else { SET(aval, p); } + ATTR(akey, aval); } -#line 87 "ext/hpricot_scan/hpricot_scan.rl" - { SET(akey, p); } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { - ATTR(akey, aval); + if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } + else { SET(aval, p); } } #line 68 "ext/hpricot_scan/hpricot_scan.rl" {act = 10;} goto st210; -tr181: +tr322: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokend = p+1;} -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } +#line 89 "ext/hpricot_scan/hpricot_scan.rl" + { + if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } + else { SET(aval, p); } + } #line 68 "ext/hpricot_scan/hpricot_scan.rl" {act = 10;} goto st210; -tr240: +tr262: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokend = p+1;} -#line 78 "ext/hpricot_scan/hpricot_scan.rl" - { mark_aval = p; } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 93 "ext/hpricot_scan/hpricot_scan.rl" + { SET(akey, p); } +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } #line 68 "ext/hpricot_scan/hpricot_scan.rl" {act = 10;} goto st210; -tr241: +tr326: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokend = p+1;} -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" - { - if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } - else { SET(aval, p); } - } #line 68 "ext/hpricot_scan/hpricot_scan.rl" {act = 10;} goto st210; @@ -3260,163 +3270,163 @@ case 105: if ( ++p == pe ) goto _out210; case 210: -#line 3264 "ext/hpricot_scan/hpricot_scan.c" +#line 3274 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 39: goto tr3; + case 39: goto tr164; case 92: goto st102; } goto st101; -tr120: -#line 87 "ext/hpricot_scan/hpricot_scan.rl" +tr236: +#line 93 "ext/hpricot_scan/hpricot_scan.rl" { SET(akey, p); } goto st106; st106: if ( ++p == pe ) goto _out106; case 106: -#line 3278 "ext/hpricot_scan/hpricot_scan.c" +#line 3288 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr167; - case 32: goto tr167; + case 13: goto tr242; + case 32: goto tr242; case 34: goto st136; - case 39: goto tr170; - case 47: goto tr171; + case 39: goto tr245; + case 47: goto tr246; case 60: goto st101; - case 62: goto tr33; - case 92: goto tr172; + case 62: goto tr231; + case 92: goto tr247; } if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr168; + goto tr243; } else if ( (*p) >= 9 ) - goto tr167; - goto tr166; -tr166: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" + goto tr242; + goto tr241; +tr241: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st107; st107: if ( ++p == pe ) goto _out107; case 107: -#line 3303 "ext/hpricot_scan/hpricot_scan.c" +#line 3313 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr78; - case 32: goto tr78; - case 39: goto tr84; - case 47: goto tr81; + case 13: goto tr249; + case 32: goto tr249; + case 39: goto tr151; + case 47: goto tr251; case 60: goto st101; - case 62: goto tr82; + case 62: goto tr252; case 92: goto st112; } if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr79; + goto tr250; } else if ( (*p) >= 9 ) - goto tr78; + goto tr249; goto st107; -tr80: -#line 82 "ext/hpricot_scan/hpricot_scan.rl" - { SET(aval, p); } - goto st108; -tr79: -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +tr250: +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } goto st108; -tr263: -#line 82 "ext/hpricot_scan/hpricot_scan.rl" - { SET(aval, p); } -#line 78 "ext/hpricot_scan/hpricot_scan.rl" - { mark_aval = p; } - goto st108; -tr239: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr320: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } goto st108; +tr216: +#line 88 "ext/hpricot_scan/hpricot_scan.rl" + { SET(aval, p); } + goto st108; +tr208: +#line 88 "ext/hpricot_scan/hpricot_scan.rl" + { SET(aval, p); } +#line 84 "ext/hpricot_scan/hpricot_scan.rl" + { mark_aval = p; } + goto st108; st108: if ( ++p == pe ) goto _out108; case 108: -#line 3349 "ext/hpricot_scan/hpricot_scan.c" +#line 3359 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr78; - case 32: goto tr78; - case 39: goto tr84; - case 47: goto tr88; + case 13: goto tr249; + case 32: goto tr249; + case 39: goto tr151; + case 47: goto tr255; case 60: goto st101; - case 62: goto tr90; - case 63: goto tr87; + case 62: goto tr256; + case 63: goto tr254; case 92: goto st112; - case 95: goto tr87; + case 95: goto tr254; } if ( (*p) < 45 ) { if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr79; + goto tr250; } else if ( (*p) >= 9 ) - goto tr78; + goto tr249; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr87; + goto tr254; } else if ( (*p) >= 65 ) - goto tr87; + goto tr254; } else - goto tr87; + goto tr254; goto st107; -tr87: -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +tr254: +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } -#line 94 "ext/hpricot_scan/hpricot_scan.rl" +#line 100 "ext/hpricot_scan/hpricot_scan.rl" { akey = Qnil; aval = Qnil; mark_akey = NULL; mark_aval = NULL; } -#line 79 "ext/hpricot_scan/hpricot_scan.rl" +#line 85 "ext/hpricot_scan/hpricot_scan.rl" { mark_akey = p; } goto st109; -tr175: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr273: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } -#line 94 "ext/hpricot_scan/hpricot_scan.rl" +#line 100 "ext/hpricot_scan/hpricot_scan.rl" { akey = Qnil; aval = Qnil; mark_akey = NULL; mark_aval = NULL; } -#line 79 "ext/hpricot_scan/hpricot_scan.rl" +#line 85 "ext/hpricot_scan/hpricot_scan.rl" { mark_akey = p; } goto st109; st109: if ( ++p == pe ) goto _out109; case 109: -#line 3412 "ext/hpricot_scan/hpricot_scan.c" +#line 3422 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr138; - case 32: goto tr138; - case 39: goto tr84; - case 47: goto tr141; + case 13: goto tr257; + case 32: goto tr257; + case 39: goto tr151; + case 47: goto tr260; case 60: goto st101; - case 61: goto tr142; - case 62: goto tr143; + case 61: goto tr261; + case 62: goto tr262; case 63: goto st109; case 92: goto st112; case 95: goto st109; @@ -3424,9 +3434,9 @@ case 109: if ( (*p) < 45 ) { if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr139; + goto tr258; } else if ( (*p) >= 9 ) - goto tr138; + goto tr257; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) @@ -3436,17 +3446,17 @@ case 109: } else goto st109; goto st107; -tr86: -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +tr264: +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } goto st110; -tr139: -#line 87 "ext/hpricot_scan/hpricot_scan.rl" +tr258: +#line 93 "ext/hpricot_scan/hpricot_scan.rl" { SET(akey, p); } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } @@ -3456,98 +3466,98 @@ case 109: if ( ++p == pe ) goto _out110; case 110: -#line 3460 "ext/hpricot_scan/hpricot_scan.c" +#line 3470 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr85; - case 32: goto tr85; - case 39: goto tr84; - case 47: goto tr88; + case 13: goto tr263; + case 32: goto tr263; + case 39: goto tr151; + case 47: goto tr255; case 60: goto st101; case 61: goto st113; - case 62: goto tr90; - case 63: goto tr87; + case 62: goto tr256; + case 63: goto tr254; case 92: goto st112; - case 95: goto tr87; + case 95: goto tr254; } if ( (*p) < 45 ) { if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr86; + goto tr264; } else if ( (*p) >= 9 ) - goto tr85; + goto tr263; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr87; + goto tr254; } else if ( (*p) >= 65 ) - goto tr87; + goto tr254; } else - goto tr87; + goto tr254; goto st107; -tr81: -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +tr246: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" + { mark_aval = p; } +#line 107 "ext/hpricot_scan/hpricot_scan.rl" + { + ATTR(akey, aval); + } + goto st111; +tr251: +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } goto st111; -tr88: -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +tr255: +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } goto st111; -tr141: -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +tr260: +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } -#line 87 "ext/hpricot_scan/hpricot_scan.rl" +#line 93 "ext/hpricot_scan/hpricot_scan.rl" { SET(akey, p); } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" - { - ATTR(akey, aval); - } - goto st111; -tr171: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" - { mark_aval = p; } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } goto st111; -tr236: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr270: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } goto st111; -tr237: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr274: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } @@ -3557,83 +3567,83 @@ case 110: if ( ++p == pe ) goto _out111; case 111: -#line 3561 "ext/hpricot_scan/hpricot_scan.c" +#line 3571 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr78; - case 32: goto tr78; - case 39: goto tr84; - case 47: goto tr81; + case 13: goto tr249; + case 32: goto tr249; + case 39: goto tr151; + case 47: goto tr251; case 60: goto st101; - case 62: goto tr82; + case 62: goto tr252; case 92: goto st112; } if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr79; + goto tr250; } else if ( (*p) >= 9 ) - goto tr78; + goto tr249; goto st107; -tr172: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr247: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st112; st112: if ( ++p == pe ) goto _out112; case 112: -#line 3585 "ext/hpricot_scan/hpricot_scan.c" +#line 3595 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr78; - case 32: goto tr78; - case 39: goto tr80; - case 47: goto tr81; + case 13: goto tr249; + case 32: goto tr249; + case 39: goto tr216; + case 47: goto tr251; case 60: goto st101; - case 62: goto tr82; + case 62: goto tr252; case 92: goto st112; } if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr79; + goto tr250; } else if ( (*p) >= 9 ) - goto tr78; + goto tr249; goto st107; -tr142: -#line 87 "ext/hpricot_scan/hpricot_scan.rl" - { SET(akey, p); } - goto st113; -tr168: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr243: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st113; +tr261: +#line 93 "ext/hpricot_scan/hpricot_scan.rl" + { SET(akey, p); } + goto st113; st113: if ( ++p == pe ) goto _out113; case 113: -#line 3613 "ext/hpricot_scan/hpricot_scan.c" +#line 3623 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr232; - case 32: goto tr232; + case 13: goto tr266; + case 32: goto tr266; case 34: goto st116; - case 39: goto tr235; - case 47: goto tr236; + case 39: goto tr269; + case 47: goto tr270; case 60: goto st101; - case 62: goto tr82; - case 92: goto tr172; + case 62: goto tr252; + case 92: goto tr247; } if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr233; + goto tr267; } else if ( (*p) >= 9 ) - goto tr232; - goto tr166; -tr173: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" + goto tr266; + goto tr241; +tr271: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st114; -tr232: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr266: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } @@ -3643,42 +3653,42 @@ case 113: if ( ++p == pe ) goto _out114; case 114: -#line 3647 "ext/hpricot_scan/hpricot_scan.c" +#line 3657 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr173; - case 32: goto tr173; + case 13: goto tr271; + case 32: goto tr271; case 34: goto st136; - case 39: goto tr170; - case 47: goto tr171; + case 39: goto tr245; + case 47: goto tr246; case 60: goto st101; - case 62: goto tr33; - case 63: goto tr175; - case 92: goto tr172; - case 95: goto tr175; + case 62: goto tr231; + case 63: goto tr273; + case 92: goto tr247; + case 95: goto tr273; } if ( (*p) < 45 ) { if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr174; + goto tr272; } else if ( (*p) >= 9 ) - goto tr173; + goto tr271; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr175; + goto tr273; } else if ( (*p) >= 65 ) - goto tr175; + goto tr273; } else - goto tr175; - goto tr166; -tr174: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" + goto tr273; + goto tr241; +tr272: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st115; -tr233: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr267: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } @@ -3688,152 +3698,152 @@ case 114: if ( ++p == pe ) goto _out115; case 115: -#line 3692 "ext/hpricot_scan/hpricot_scan.c" +#line 3702 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr232; - case 32: goto tr232; + case 13: goto tr266; + case 32: goto tr266; case 34: goto st116; - case 39: goto tr235; - case 47: goto tr237; + case 39: goto tr269; + case 47: goto tr274; case 60: goto st101; - case 62: goto tr90; - case 63: goto tr175; - case 92: goto tr172; - case 95: goto tr175; + case 62: goto tr256; + case 63: goto tr273; + case 92: goto tr247; + case 95: goto tr273; } if ( (*p) < 45 ) { if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr233; + goto tr267; } else if ( (*p) >= 9 ) - goto tr232; + goto tr266; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr175; + goto tr273; } else if ( (*p) >= 65 ) - goto tr175; + goto tr273; } else - goto tr175; - goto tr166; + goto tr273; + goto tr241; st116: if ( ++p == pe ) goto _out116; case 116: switch( (*p) ) { - case 13: goto tr258; - case 32: goto tr258; - case 34: goto tr80; - case 39: goto tr260; - case 47: goto tr256; - case 60: goto tr215; - case 62: goto tr261; - case 92: goto tr211; + case 13: goto tr206; + case 32: goto tr206; + case 34: goto tr216; + case 39: goto tr275; + case 47: goto tr209; + case 60: goto tr210; + case 62: goto tr211; + case 92: goto tr212; } if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr259; + goto tr207; } else if ( (*p) >= 9 ) - goto tr258; + goto tr206; goto tr205; -tr107: -#line 82 "ext/hpricot_scan/hpricot_scan.rl" - { SET(aval, p); } - goto st117; -tr106: -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +tr215: +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } goto st117; -tr259: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr207: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } goto st117; +tr308: +#line 88 "ext/hpricot_scan/hpricot_scan.rl" + { SET(aval, p); } + goto st117; st117: if ( ++p == pe ) goto _out117; case 117: -#line 3764 "ext/hpricot_scan/hpricot_scan.c" +#line 3774 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr105; - case 32: goto tr105; - case 34: goto tr80; - case 39: goto tr94; - case 47: goto tr114; + case 13: goto tr214; + case 32: goto tr214; + case 34: goto tr216; + case 39: goto tr204; + case 47: goto tr277; case 60: goto st99; - case 62: goto tr116; - case 63: goto tr113; + case 62: goto tr278; + case 63: goto tr276; case 92: goto st129; - case 95: goto tr113; + case 95: goto tr276; } if ( (*p) < 45 ) { if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr106; + goto tr215; } else if ( (*p) >= 9 ) - goto tr105; + goto tr214; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr113; + goto tr276; } else if ( (*p) >= 65 ) - goto tr113; + goto tr276; } else - goto tr113; + goto tr276; goto st97; -tr113: -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +tr276: +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } -#line 94 "ext/hpricot_scan/hpricot_scan.rl" +#line 100 "ext/hpricot_scan/hpricot_scan.rl" { akey = Qnil; aval = Qnil; mark_akey = NULL; mark_aval = NULL; } -#line 79 "ext/hpricot_scan/hpricot_scan.rl" +#line 85 "ext/hpricot_scan/hpricot_scan.rl" { mark_akey = p; } goto st118; -tr214: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr301: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } -#line 94 "ext/hpricot_scan/hpricot_scan.rl" +#line 100 "ext/hpricot_scan/hpricot_scan.rl" { akey = Qnil; aval = Qnil; mark_akey = NULL; mark_aval = NULL; } -#line 79 "ext/hpricot_scan/hpricot_scan.rl" +#line 85 "ext/hpricot_scan/hpricot_scan.rl" { mark_akey = p; } goto st118; st118: if ( ++p == pe ) goto _out118; case 118: -#line 3828 "ext/hpricot_scan/hpricot_scan.c" +#line 3838 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr150; - case 32: goto tr150; - case 34: goto tr80; - case 39: goto tr94; - case 47: goto tr153; + case 13: goto tr279; + case 32: goto tr279; + case 34: goto tr216; + case 39: goto tr204; + case 47: goto tr282; case 60: goto st99; - case 61: goto tr154; - case 62: goto tr155; + case 61: goto tr283; + case 62: goto tr284; case 63: goto st118; case 92: goto st129; case 95: goto st118; @@ -3841,9 +3851,9 @@ case 118: if ( (*p) < 45 ) { if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr151; + goto tr280; } else if ( (*p) >= 9 ) - goto tr150; + goto tr279; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) @@ -3853,21 +3863,21 @@ case 118: } else goto st118; goto st97; -tr111: -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +tr287: +#line 93 "ext/hpricot_scan/hpricot_scan.rl" + { SET(akey, p); } + goto st119; +tr316: +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } goto st119; -tr127: -#line 87 "ext/hpricot_scan/hpricot_scan.rl" - { SET(akey, p); } - goto st119; -tr150: -#line 87 "ext/hpricot_scan/hpricot_scan.rl" +tr279: +#line 93 "ext/hpricot_scan/hpricot_scan.rl" { SET(akey, p); } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } @@ -3877,17 +3887,17 @@ case 118: if ( ++p == pe ) goto _out119; case 119: -#line 3881 "ext/hpricot_scan/hpricot_scan.c" +#line 3891 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { case 32: goto st119; - case 34: goto tr10; - case 39: goto tr11; - case 47: goto tr55; + case 34: goto tr222; + case 39: goto tr169; + case 47: goto tr224; case 61: goto st123; - case 62: goto tr57; - case 63: goto tr54; + case 62: goto tr225; + case 63: goto tr223; case 92: goto st122; - case 95: goto tr54; + case 95: goto tr223; } if ( (*p) < 45 ) { if ( 9 <= (*p) && (*p) <= 13 ) @@ -3895,63 +3905,63 @@ case 119: } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr54; + goto tr223; } else if ( (*p) >= 65 ) - goto tr54; + goto tr223; } else - goto tr54; + goto tr223; goto st99; -tr54: -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +tr223: +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } -#line 94 "ext/hpricot_scan/hpricot_scan.rl" +#line 100 "ext/hpricot_scan/hpricot_scan.rl" { akey = Qnil; aval = Qnil; mark_akey = NULL; mark_aval = NULL; } -#line 79 "ext/hpricot_scan/hpricot_scan.rl" +#line 85 "ext/hpricot_scan/hpricot_scan.rl" { mark_akey = p; } goto st120; -tr219: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr311: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } -#line 94 "ext/hpricot_scan/hpricot_scan.rl" +#line 100 "ext/hpricot_scan/hpricot_scan.rl" { akey = Qnil; aval = Qnil; mark_akey = NULL; mark_aval = NULL; } -#line 79 "ext/hpricot_scan/hpricot_scan.rl" +#line 85 "ext/hpricot_scan/hpricot_scan.rl" { mark_akey = p; } goto st120; st120: if ( ++p == pe ) goto _out120; case 120: -#line 3941 "ext/hpricot_scan/hpricot_scan.c" - switch( (*p) ) { - case 32: goto tr127; - case 34: goto tr10; - case 39: goto tr11; - case 47: goto tr129; - case 61: goto tr130; - case 62: goto tr131; +#line 3951 "ext/hpricot_scan/hpricot_scan.c" + switch( (*p) ) { + case 32: goto tr287; + case 34: goto tr222; + case 39: goto tr169; + case 47: goto tr289; + case 61: goto tr290; + case 62: goto tr291; case 63: goto st120; case 92: goto st122; case 95: goto st120; } if ( (*p) < 45 ) { if ( 9 <= (*p) && (*p) <= 13 ) - goto tr127; + goto tr287; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) @@ -3961,24 +3971,24 @@ case 120: } else goto st120; goto st99; -tr55: -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +tr289: +#line 93 "ext/hpricot_scan/hpricot_scan.rl" + { SET(akey, p); } +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } goto st121; -tr129: -#line 87 "ext/hpricot_scan/hpricot_scan.rl" - { SET(akey, p); } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +tr224: +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } goto st121; -tr220: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr312: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } @@ -3987,132 +3997,132 @@ case 120: if ( ++p == pe ) goto _out121; case 121: -#line 3991 "ext/hpricot_scan/hpricot_scan.c" +#line 4001 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 34: goto tr10; - case 39: goto tr11; - case 62: goto tr52; - case 92: goto st122; - } - goto st99; -tr52: -#line 1 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p+1;} -#line 70 "ext/hpricot_scan/hpricot_scan.rl" - {act = 12;} - goto st211; -tr57: + case 34: goto tr222; + case 39: goto tr169; + case 62: goto tr292; + case 92: goto st122; + } + goto st99; +tr211: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokend = p+1;} -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 84 "ext/hpricot_scan/hpricot_scan.rl" + { mark_aval = p; } +#line 89 "ext/hpricot_scan/hpricot_scan.rl" + { + if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } + else { SET(aval, p); } + } +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } #line 68 "ext/hpricot_scan/hpricot_scan.rl" {act = 10;} goto st211; -tr109: +tr219: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokend = p+1;} -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } #line 68 "ext/hpricot_scan/hpricot_scan.rl" {act = 10;} goto st211; -tr116: +tr225: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokend = p+1;} -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" - { - if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } - else { SET(aval, p); } - } #line 68 "ext/hpricot_scan/hpricot_scan.rl" {act = 10;} goto st211; -tr131: +tr291: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokend = p+1;} -#line 87 "ext/hpricot_scan/hpricot_scan.rl" +#line 93 "ext/hpricot_scan/hpricot_scan.rl" { SET(akey, p); } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } #line 68 "ext/hpricot_scan/hpricot_scan.rl" {act = 10;} goto st211; -tr155: +tr292: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokend = p+1;} -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 70 "ext/hpricot_scan/hpricot_scan.rl" + {act = 12;} + goto st211; +tr278: +#line 1 "ext/hpricot_scan/hpricot_scan.rl" + {tokend = p+1;} +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { - if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } - else { SET(aval, p); } + ATTR(akey, aval); } -#line 87 "ext/hpricot_scan/hpricot_scan.rl" - { SET(akey, p); } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { - ATTR(akey, aval); + if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } + else { SET(aval, p); } } #line 68 "ext/hpricot_scan/hpricot_scan.rl" {act = 10;} goto st211; -tr221: +tr307: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokend = p+1;} -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } +#line 89 "ext/hpricot_scan/hpricot_scan.rl" + { + if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } + else { SET(aval, p); } + } #line 68 "ext/hpricot_scan/hpricot_scan.rl" {act = 10;} goto st211; -tr261: +tr284: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokend = p+1;} -#line 78 "ext/hpricot_scan/hpricot_scan.rl" - { mark_aval = p; } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 93 "ext/hpricot_scan/hpricot_scan.rl" + { SET(akey, p); } +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } #line 68 "ext/hpricot_scan/hpricot_scan.rl" {act = 10;} goto st211; -tr262: +tr313: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokend = p+1;} -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" - { - if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } - else { SET(aval, p); } - } #line 68 "ext/hpricot_scan/hpricot_scan.rl" {act = 10;} goto st211; @@ -4120,86 +4130,86 @@ case 121: if ( ++p == pe ) goto _out211; case 211: -#line 4124 "ext/hpricot_scan/hpricot_scan.c" +#line 4134 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 34: goto tr10; - case 39: goto tr11; + case 34: goto tr222; + case 39: goto tr169; case 92: goto st122; } goto st99; -tr217: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr314: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st122; st122: if ( ++p == pe ) goto _out122; case 122: -#line 4139 "ext/hpricot_scan/hpricot_scan.c" +#line 4149 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 34: goto tr51; - case 39: goto tr51; + case 34: goto tr293; + case 39: goto tr293; case 92: goto st122; } goto st99; -tr130: -#line 87 "ext/hpricot_scan/hpricot_scan.rl" +tr290: +#line 93 "ext/hpricot_scan/hpricot_scan.rl" { SET(akey, p); } goto st123; st123: if ( ++p == pe ) goto _out123; case 123: -#line 4154 "ext/hpricot_scan/hpricot_scan.c" +#line 4164 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr206; - case 32: goto tr206; - case 34: goto tr208; - case 39: goto tr209; - case 47: goto tr210; + case 13: goto tr294; + case 32: goto tr294; + case 34: goto tr296; + case 39: goto tr297; + case 47: goto tr298; case 60: goto st99; - case 62: goto tr57; - case 92: goto tr211; + case 62: goto tr225; + case 92: goto tr212; } if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr207; + goto tr295; } else if ( (*p) >= 9 ) - goto tr206; + goto tr294; goto tr205; -tr206: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr294: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st124; st124: if ( ++p == pe ) goto _out124; case 124: -#line 4179 "ext/hpricot_scan/hpricot_scan.c" +#line 4189 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr212; - case 32: goto tr212; - case 34: goto tr208; - case 39: goto tr209; - case 47: goto tr210; + case 13: goto tr299; + case 32: goto tr299; + case 34: goto tr296; + case 39: goto tr297; + case 47: goto tr298; case 60: goto st99; - case 62: goto tr57; - case 92: goto tr211; + case 62: goto tr225; + case 92: goto tr212; } if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr213; + goto tr300; } else if ( (*p) >= 9 ) - goto tr212; + goto tr299; goto tr205; -tr212: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr299: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st125; -tr252: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr302: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } @@ -4209,42 +4219,42 @@ case 124: if ( ++p == pe ) goto _out125; case 125: -#line 4213 "ext/hpricot_scan/hpricot_scan.c" +#line 4223 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr212; - case 32: goto tr212; - case 34: goto tr208; - case 39: goto tr209; - case 47: goto tr210; + case 13: goto tr299; + case 32: goto tr299; + case 34: goto tr296; + case 39: goto tr297; + case 47: goto tr298; case 60: goto st99; - case 62: goto tr57; - case 63: goto tr214; - case 92: goto tr211; - case 95: goto tr214; + case 62: goto tr225; + case 63: goto tr301; + case 92: goto tr212; + case 95: goto tr301; } if ( (*p) < 45 ) { if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr213; + goto tr300; } else if ( (*p) >= 9 ) - goto tr212; + goto tr299; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr214; + goto tr301; } else if ( (*p) >= 65 ) - goto tr214; + goto tr301; } else - goto tr214; + goto tr301; goto tr205; -tr213: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr300: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st126; -tr253: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr303: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } @@ -4254,134 +4264,134 @@ case 125: if ( ++p == pe ) goto _out126; case 126: -#line 4258 "ext/hpricot_scan/hpricot_scan.c" +#line 4268 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr252; - case 32: goto tr252; - case 34: goto tr254; - case 39: goto tr255; - case 47: goto tr257; + case 13: goto tr302; + case 32: goto tr302; + case 34: goto tr304; + case 39: goto tr305; + case 47: goto tr306; case 60: goto st99; - case 62: goto tr116; - case 63: goto tr214; - case 92: goto tr211; - case 95: goto tr214; + case 62: goto tr278; + case 63: goto tr301; + case 92: goto tr212; + case 95: goto tr301; } if ( (*p) < 45 ) { if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr253; + goto tr303; } else if ( (*p) >= 9 ) - goto tr252; + goto tr302; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr214; + goto tr301; } else if ( (*p) >= 65 ) - goto tr214; + goto tr301; } else - goto tr214; + goto tr301; goto tr205; -tr254: -#line 82 "ext/hpricot_scan/hpricot_scan.rl" +tr304: +#line 88 "ext/hpricot_scan/hpricot_scan.rl" { SET(aval, p); } goto st127; st127: if ( ++p == pe ) goto _out127; case 127: -#line 4294 "ext/hpricot_scan/hpricot_scan.c" - switch( (*p) ) { - case 13: goto tr258; - case 32: goto tr258; - case 34: goto tr80; - case 39: goto tr260; - case 47: goto tr257; - case 60: goto tr215; - case 62: goto tr262; - case 63: goto tr214; - case 92: goto tr211; - case 95: goto tr214; +#line 4304 "ext/hpricot_scan/hpricot_scan.c" + switch( (*p) ) { + case 13: goto tr206; + case 32: goto tr206; + case 34: goto tr216; + case 39: goto tr275; + case 47: goto tr306; + case 60: goto tr210; + case 62: goto tr307; + case 63: goto tr301; + case 92: goto tr212; + case 95: goto tr301; } if ( (*p) < 45 ) { if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr259; + goto tr207; } else if ( (*p) >= 9 ) - goto tr258; + goto tr206; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr214; + goto tr301; } else if ( (*p) >= 65 ) - goto tr214; + goto tr301; } else - goto tr214; + goto tr301; goto tr205; -tr108: -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +tr298: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" + { mark_aval = p; } +#line 107 "ext/hpricot_scan/hpricot_scan.rl" + { + ATTR(akey, aval); + } + goto st128; +tr217: +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } goto st128; -tr114: -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +tr277: +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } goto st128; -tr153: -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +tr282: +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } -#line 87 "ext/hpricot_scan/hpricot_scan.rl" +#line 93 "ext/hpricot_scan/hpricot_scan.rl" { SET(akey, p); } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" - { - ATTR(akey, aval); - } - goto st128; -tr210: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" - { mark_aval = p; } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } goto st128; -tr256: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr209: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } goto st128; -tr257: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr306: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } -#line 101 "ext/hpricot_scan/hpricot_scan.rl" +#line 107 "ext/hpricot_scan/hpricot_scan.rl" { ATTR(akey, aval); } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } @@ -4391,186 +4401,186 @@ case 127: if ( ++p == pe ) goto _out128; case 128: -#line 4395 "ext/hpricot_scan/hpricot_scan.c" +#line 4405 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr105; - case 32: goto tr105; - case 34: goto tr80; - case 39: goto tr94; - case 47: goto tr108; + case 13: goto tr214; + case 32: goto tr214; + case 34: goto tr216; + case 39: goto tr204; + case 47: goto tr217; case 60: goto st99; - case 62: goto tr109; + case 62: goto tr219; case 92: goto st129; } if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr106; + goto tr215; } else if ( (*p) >= 9 ) - goto tr105; + goto tr214; goto st97; -tr211: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" +tr212: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st129; st129: if ( ++p == pe ) goto _out129; case 129: -#line 4420 "ext/hpricot_scan/hpricot_scan.c" +#line 4430 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr105; - case 32: goto tr105; - case 34: goto tr107; - case 39: goto tr107; - case 47: goto tr108; + case 13: goto tr214; + case 32: goto tr214; + case 34: goto tr308; + case 39: goto tr308; + case 47: goto tr217; case 60: goto st99; - case 62: goto tr109; + case 62: goto tr219; case 92: goto st129; } if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr106; + goto tr215; } else if ( (*p) >= 9 ) - goto tr105; + goto tr214; goto st97; -tr255: -#line 82 "ext/hpricot_scan/hpricot_scan.rl" +tr305: +#line 88 "ext/hpricot_scan/hpricot_scan.rl" { SET(aval, p); } goto st130; st130: if ( ++p == pe ) goto _out130; case 130: -#line 4445 "ext/hpricot_scan/hpricot_scan.c" - switch( (*p) ) { - case 13: goto tr258; - case 32: goto tr258; - case 34: goto tr263; - case 39: goto tr94; - case 47: goto tr257; - case 60: goto tr215; - case 62: goto tr262; - case 63: goto tr214; - case 92: goto tr211; - case 95: goto tr214; +#line 4455 "ext/hpricot_scan/hpricot_scan.c" + switch( (*p) ) { + case 13: goto tr206; + case 32: goto tr206; + case 34: goto tr208; + case 39: goto tr204; + case 47: goto tr306; + case 60: goto tr210; + case 62: goto tr307; + case 63: goto tr301; + case 92: goto tr212; + case 95: goto tr301; } if ( (*p) < 45 ) { if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr259; + goto tr207; } else if ( (*p) >= 9 ) - goto tr258; + goto tr206; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr214; + goto tr301; } else if ( (*p) >= 65 ) - goto tr214; + goto tr301; } else - goto tr214; + goto tr301; goto tr205; -tr208: -#line 82 "ext/hpricot_scan/hpricot_scan.rl" +tr296: +#line 88 "ext/hpricot_scan/hpricot_scan.rl" { SET(aval, p); } goto st131; st131: if ( ++p == pe ) goto _out131; case 131: -#line 4481 "ext/hpricot_scan/hpricot_scan.c" +#line 4491 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 32: goto tr218; - case 34: goto tr10; - case 39: goto tr216; - case 47: goto tr220; - case 62: goto tr221; - case 63: goto tr219; - case 92: goto tr217; - case 95: goto tr219; + case 32: goto tr309; + case 34: goto tr222; + case 39: goto tr310; + case 47: goto tr312; + case 62: goto tr313; + case 63: goto tr311; + case 92: goto tr314; + case 95: goto tr311; } if ( (*p) < 45 ) { if ( 9 <= (*p) && (*p) <= 13 ) - goto tr218; + goto tr309; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr219; + goto tr311; } else if ( (*p) >= 65 ) - goto tr219; + goto tr311; } else - goto tr219; - goto tr215; -tr209: -#line 82 "ext/hpricot_scan/hpricot_scan.rl" + goto tr311; + goto tr210; +tr297: +#line 88 "ext/hpricot_scan/hpricot_scan.rl" { SET(aval, p); } goto st132; st132: if ( ++p == pe ) goto _out132; case 132: -#line 4512 "ext/hpricot_scan/hpricot_scan.c" +#line 4522 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 32: goto tr218; - case 34: goto tr225; - case 39: goto tr11; - case 47: goto tr220; - case 62: goto tr221; - case 63: goto tr219; - case 92: goto tr217; - case 95: goto tr219; + case 32: goto tr309; + case 34: goto tr315; + case 39: goto tr169; + case 47: goto tr312; + case 62: goto tr313; + case 63: goto tr311; + case 92: goto tr314; + case 95: goto tr311; } if ( (*p) < 45 ) { if ( 9 <= (*p) && (*p) <= 13 ) - goto tr218; + goto tr309; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr219; + goto tr311; } else if ( (*p) >= 65 ) - goto tr219; + goto tr311; } else - goto tr219; - goto tr215; -tr154: -#line 87 "ext/hpricot_scan/hpricot_scan.rl" - { SET(akey, p); } - goto st133; -tr207: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" + goto tr311; + goto tr210; +tr295: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st133; +tr283: +#line 93 "ext/hpricot_scan/hpricot_scan.rl" + { SET(akey, p); } + goto st133; st133: if ( ++p == pe ) goto _out133; case 133: -#line 4547 "ext/hpricot_scan/hpricot_scan.c" +#line 4557 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr252; - case 32: goto tr252; - case 34: goto tr254; - case 39: goto tr255; - case 47: goto tr256; + case 13: goto tr302; + case 32: goto tr302; + case 34: goto tr304; + case 39: goto tr305; + case 47: goto tr209; case 60: goto st99; - case 62: goto tr109; - case 92: goto tr211; + case 62: goto tr219; + case 92: goto tr212; } if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr253; + goto tr303; } else if ( (*p) >= 9 ) - goto tr252; + goto tr302; goto tr205; -tr112: -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +tr317: +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } } goto st134; -tr151: -#line 87 "ext/hpricot_scan/hpricot_scan.rl" +tr280: +#line 93 "ext/hpricot_scan/hpricot_scan.rl" { SET(akey, p); } -#line 83 "ext/hpricot_scan/hpricot_scan.rl" +#line 89 "ext/hpricot_scan/hpricot_scan.rl" { if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); } else { SET(aval, p); } @@ -4580,252 +4590,252 @@ case 133: if ( ++p == pe ) goto _out134; case 134: -#line 4584 "ext/hpricot_scan/hpricot_scan.c" +#line 4594 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr111; - case 32: goto tr111; - case 34: goto tr80; - case 39: goto tr94; - case 47: goto tr114; + case 13: goto tr316; + case 32: goto tr316; + case 34: goto tr216; + case 39: goto tr204; + case 47: goto tr277; case 60: goto st99; case 61: goto st133; - case 62: goto tr116; - case 63: goto tr113; + case 62: goto tr278; + case 63: goto tr276; case 92: goto st129; - case 95: goto tr113; + case 95: goto tr276; } if ( (*p) < 45 ) { if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr112; + goto tr317; } else if ( (*p) >= 9 ) - goto tr111; + goto tr316; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr113; + goto tr276; } else if ( (*p) >= 65 ) - goto tr113; + goto tr276; } else - goto tr113; + goto tr276; goto st97; -tr235: -#line 82 "ext/hpricot_scan/hpricot_scan.rl" +tr269: +#line 88 "ext/hpricot_scan/hpricot_scan.rl" { SET(aval, p); } goto st135; st135: if ( ++p == pe ) goto _out135; case 135: -#line 4621 "ext/hpricot_scan/hpricot_scan.c" - switch( (*p) ) { - case 13: goto tr238; - case 32: goto tr238; - case 39: goto tr84; - case 47: goto tr237; - case 60: goto tr176; - case 62: goto tr241; - case 63: goto tr175; - case 92: goto tr172; - case 95: goto tr175; +#line 4631 "ext/hpricot_scan/hpricot_scan.c" + switch( (*p) ) { + case 13: goto tr319; + case 32: goto tr319; + case 39: goto tr151; + case 47: goto tr274; + case 60: goto tr321; + case 62: goto tr322; + case 63: goto tr273; + case 92: goto tr247; + case 95: goto tr273; } if ( (*p) < 45 ) { if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr239; + goto tr320; } else if ( (*p) >= 9 ) - goto tr238; + goto tr319; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr175; + goto tr273; } else if ( (*p) >= 65 ) - goto tr175; + goto tr273; } else - goto tr175; - goto tr166; + goto tr273; + goto tr241; st136: if ( ++p == pe ) goto _out136; case 136: switch( (*p) ) { - case 34: goto tr10; - case 39: goto tr216; - case 92: goto tr217; + case 34: goto tr222; + case 39: goto tr310; + case 92: goto tr314; } - goto tr215; -tr170: -#line 82 "ext/hpricot_scan/hpricot_scan.rl" + goto tr210; +tr245: +#line 88 "ext/hpricot_scan/hpricot_scan.rl" { SET(aval, p); } goto st137; st137: if ( ++p == pe ) goto _out137; case 137: -#line 4666 "ext/hpricot_scan/hpricot_scan.c" +#line 4676 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 32: goto tr178; - case 39: goto tr3; - case 47: goto tr180; - case 62: goto tr181; - case 63: goto tr179; - case 92: goto tr177; - case 95: goto tr179; + case 32: goto tr323; + case 39: goto tr164; + case 47: goto tr325; + case 62: goto tr326; + case 63: goto tr324; + case 92: goto tr327; + case 95: goto tr324; } if ( (*p) < 45 ) { if ( 9 <= (*p) && (*p) <= 13 ) - goto tr178; + goto tr323; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr179; + goto tr324; } else if ( (*p) >= 65 ) - goto tr179; + goto tr324; } else - goto tr179; - goto tr176; -tr167: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" + goto tr324; + goto tr321; +tr242: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st138; st138: if ( ++p == pe ) goto _out138; case 138: -#line 4696 "ext/hpricot_scan/hpricot_scan.c" +#line 4706 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr173; - case 32: goto tr173; + case 13: goto tr271; + case 32: goto tr271; case 34: goto st136; - case 39: goto tr170; - case 47: goto tr171; + case 39: goto tr245; + case 47: goto tr246; case 60: goto st101; - case 62: goto tr33; - case 92: goto tr172; + case 62: goto tr231; + case 92: goto tr247; } if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr174; + goto tr272; } else if ( (*p) >= 9 ) - goto tr173; - goto tr166; -tr192: -#line 82 "ext/hpricot_scan/hpricot_scan.rl" + goto tr271; + goto tr241; +tr180: +#line 88 "ext/hpricot_scan/hpricot_scan.rl" { SET(aval, p); } goto st139; st139: if ( ++p == pe ) goto _out139; case 139: -#line 4721 "ext/hpricot_scan/hpricot_scan.c" +#line 4731 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 32: goto tr201; - case 34: goto tr3; - case 47: goto tr203; - case 62: goto tr204; - case 63: goto tr202; - case 92: goto tr200; - case 95: goto tr202; + case 32: goto tr328; + case 34: goto tr164; + case 47: goto tr330; + case 62: goto tr331; + case 63: goto tr329; + case 92: goto tr332; + case 95: goto tr329; } if ( (*p) < 45 ) { if ( 9 <= (*p) && (*p) <= 13 ) - goto tr201; + goto tr328; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr202; + goto tr329; } else if ( (*p) >= 65 ) - goto tr202; + goto tr329; } else - goto tr202; - goto tr199; + goto tr329; + goto tr153; st140: if ( ++p == pe ) goto _out140; case 140: switch( (*p) ) { - case 34: goto tr225; - case 39: goto tr11; - case 92: goto tr217; + case 34: goto tr315; + case 39: goto tr169; + case 92: goto tr314; } - goto tr215; + goto tr210; st141: if ( ++p == pe ) goto _out141; case 141: switch( (*p) ) { - case 13: goto tr238; - case 32: goto tr238; - case 39: goto tr84; - case 47: goto tr236; - case 60: goto tr176; - case 62: goto tr240; - case 92: goto tr172; + case 13: goto tr319; + case 32: goto tr319; + case 39: goto tr151; + case 47: goto tr270; + case 60: goto tr321; + case 62: goto tr333; + case 92: goto tr247; } if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr239; + goto tr320; } else if ( (*p) >= 9 ) - goto tr238; - goto tr166; + goto tr319; + goto tr241; st142: if ( ++p == pe ) goto _out142; case 142: switch( (*p) ) { - case 34: goto tr3; - case 92: goto tr200; + case 34: goto tr164; + case 92: goto tr332; } - goto tr199; + goto tr153; st143: if ( ++p == pe ) goto _out143; case 143: switch( (*p) ) { - case 39: goto tr3; - case 92: goto tr177; + case 39: goto tr164; + case 92: goto tr327; } - goto tr176; -tr157: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" + goto tr321; +tr116: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st144; st144: if ( ++p == pe ) goto _out144; case 144: -#line 4798 "ext/hpricot_scan/hpricot_scan.c" +#line 4808 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 13: goto tr163; - case 32: goto tr163; + case 13: goto tr144; + case 32: goto tr144; case 34: goto st142; case 39: goto st143; - case 47: goto tr161; - case 60: goto tr69; - case 62: goto tr162; + case 47: goto tr120; + case 60: goto tr39; + case 62: goto tr113; } if ( (*p) > 10 ) { if ( 11 <= (*p) && (*p) <= 12 ) - goto tr164; + goto tr145; } else if ( (*p) >= 9 ) - goto tr163; - goto tr156; + goto tr144; + goto tr115; st145: if ( ++p == pe ) goto _out145; case 145: switch( (*p) ) { - case 58: goto tr339; - case 95: goto tr339; - case 120: goto tr340; + case 58: goto tr334; + case 95: goto tr334; + case 120: goto tr335; } if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr339; + goto tr334; } else if ( (*p) >= 65 ) - goto tr339; - goto tr296; -tr339: + goto tr334; + goto tr0; +tr334: #line 46 "ext/hpricot_scan/hpricot_scan.rl" { TEXT_PASS(); } goto st146; @@ -4833,7 +4843,7 @@ case 145: if ( ++p == pe ) goto _out146; case 146: -#line 4837 "ext/hpricot_scan/hpricot_scan.c" +#line 4847 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { case 32: goto st212; case 63: goto st146; @@ -4853,7 +4863,7 @@ case 146: goto st146; } else goto st146; - goto tr296; + goto tr0; st212: if ( ++p == pe ) goto _out212; @@ -4862,8 +4872,8 @@ case 212: goto st212; if ( 9 <= (*p) && (*p) <= 13 ) goto st212; - goto tr14; -tr340: + goto tr411; +tr335: #line 46 "ext/hpricot_scan/hpricot_scan.rl" { TEXT_PASS(); } goto st147; @@ -4871,7 +4881,7 @@ case 212: if ( ++p == pe ) goto _out147; case 147: -#line 4875 "ext/hpricot_scan/hpricot_scan.c" +#line 4885 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { case 32: goto st212; case 63: goto st146; @@ -4892,7 +4902,7 @@ case 147: goto st146; } else goto st146; - goto tr296; + goto tr0; st148: if ( ++p == pe ) goto _out148; @@ -4917,13 +4927,13 @@ case 148: goto st146; } else goto st146; - goto tr296; + goto tr0; st149: if ( ++p == pe ) goto _out149; case 149: switch( (*p) ) { - case 32: goto tr16; + case 32: goto tr340; case 63: goto st146; case 95: goto st146; } @@ -4932,7 +4942,7 @@ case 149: if ( 45 <= (*p) && (*p) <= 46 ) goto st146; } else if ( (*p) >= 9 ) - goto tr16; + goto tr340; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) @@ -4941,8 +4951,8 @@ case 149: goto st146; } else goto st146; - goto tr296; -tr16: + goto tr0; +tr340: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokend = p+1;} goto st213; @@ -4950,56 +4960,56 @@ case 149: if ( ++p == pe ) goto _out213; case 213: -#line 4954 "ext/hpricot_scan/hpricot_scan.c" +#line 4964 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 32: goto tr16; + case 32: goto tr340; case 118: goto st150; } if ( 9 <= (*p) && (*p) <= 13 ) - goto tr16; - goto tr14; + goto tr340; + goto tr411; st150: if ( ++p == pe ) goto _out150; case 150: if ( (*p) == 101 ) goto st151; - goto tr264; + goto tr341; st151: if ( ++p == pe ) goto _out151; case 151: if ( (*p) == 114 ) goto st152; - goto tr264; + goto tr341; st152: if ( ++p == pe ) goto _out152; case 152: if ( (*p) == 115 ) goto st153; - goto tr264; + goto tr341; st153: if ( ++p == pe ) goto _out153; case 153: if ( (*p) == 105 ) goto st154; - goto tr264; + goto tr341; st154: if ( ++p == pe ) goto _out154; case 154: if ( (*p) == 111 ) goto st155; - goto tr264; + goto tr341; st155: if ( ++p == pe ) goto _out155; case 155: if ( (*p) == 110 ) goto st156; - goto tr264; + goto tr341; st156: if ( ++p == pe ) goto _out156; @@ -5010,7 +5020,7 @@ case 156: } if ( 9 <= (*p) && (*p) <= 13 ) goto st156; - goto tr264; + goto tr341; st157: if ( ++p == pe ) goto _out157; @@ -5022,36 +5032,36 @@ case 157: } if ( 9 <= (*p) && (*p) <= 13 ) goto st157; - goto tr264; + goto tr341; st158: if ( ++p == pe ) goto _out158; case 158: if ( (*p) == 95 ) - goto tr282; + goto tr351; if ( (*p) < 48 ) { if ( 45 <= (*p) && (*p) <= 46 ) - goto tr282; + goto tr351; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr282; + goto tr351; } else if ( (*p) >= 65 ) - goto tr282; + goto tr351; } else - goto tr282; - goto tr264; -tr282: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" + goto tr351; + goto tr341; +tr351: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st159; st159: if ( ++p == pe ) goto _out159; case 159: -#line 5053 "ext/hpricot_scan/hpricot_scan.c" +#line 5063 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 34: goto tr275; + case 34: goto tr352; case 95: goto st159; } if ( (*p) < 48 ) { @@ -5065,94 +5075,94 @@ case 159: goto st159; } else goto st159; - goto tr264; -tr275: -#line 88 "ext/hpricot_scan/hpricot_scan.rl" + goto tr341; +tr352: +#line 94 "ext/hpricot_scan/hpricot_scan.rl" { SET(aval, p); ATTR(rb_str_new2("version"), aval); } goto st160; st160: if ( ++p == pe ) goto _out160; case 160: -#line 5078 "ext/hpricot_scan/hpricot_scan.c" +#line 5088 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { case 32: goto st161; - case 62: goto tr270; + case 62: goto tr355; case 63: goto st162; } if ( 9 <= (*p) && (*p) <= 13 ) goto st161; - goto tr264; + goto tr341; st161: if ( ++p == pe ) goto _out161; case 161: switch( (*p) ) { case 32: goto st161; - case 62: goto tr270; + case 62: goto tr355; case 63: goto st162; case 101: goto st163; case 115: goto st176; } if ( 9 <= (*p) && (*p) <= 13 ) goto st161; - goto tr264; + goto tr341; st162: if ( ++p == pe ) goto _out162; case 162: if ( (*p) == 62 ) - goto tr270; - goto tr264; + goto tr355; + goto tr341; st163: if ( ++p == pe ) goto _out163; case 163: if ( (*p) == 110 ) goto st164; - goto tr264; + goto tr341; st164: if ( ++p == pe ) goto _out164; case 164: if ( (*p) == 99 ) goto st165; - goto tr264; + goto tr341; st165: if ( ++p == pe ) goto _out165; case 165: if ( (*p) == 111 ) goto st166; - goto tr264; + goto tr341; st166: if ( ++p == pe ) goto _out166; case 166: if ( (*p) == 100 ) goto st167; - goto tr264; + goto tr341; st167: if ( ++p == pe ) goto _out167; case 167: if ( (*p) == 105 ) goto st168; - goto tr264; + goto tr341; st168: if ( ++p == pe ) goto _out168; case 168: if ( (*p) == 110 ) goto st169; - goto tr264; + goto tr341; st169: if ( ++p == pe ) goto _out169; case 169: if ( (*p) == 103 ) goto st170; - goto tr264; + goto tr341; st170: if ( ++p == pe ) goto _out170; @@ -5163,7 +5173,7 @@ case 170: } if ( 9 <= (*p) && (*p) <= 13 ) goto st170; - goto tr264; + goto tr341; st171: if ( ++p == pe ) goto _out171; @@ -5175,28 +5185,28 @@ case 171: } if ( 9 <= (*p) && (*p) <= 13 ) goto st171; - goto tr264; + goto tr341; st172: if ( ++p == pe ) goto _out172; case 172: if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr283; + goto tr369; } else if ( (*p) >= 65 ) - goto tr283; - goto tr264; -tr283: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" + goto tr369; + goto tr341; +tr369: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st173; st173: if ( ++p == pe ) goto _out173; case 173: -#line 5198 "ext/hpricot_scan/hpricot_scan.c" +#line 5208 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 34: goto tr277; + case 34: goto tr370; case 95: goto st173; } if ( (*p) < 48 ) { @@ -5210,100 +5220,100 @@ case 173: goto st173; } else goto st173; - goto tr264; -tr277: -#line 89 "ext/hpricot_scan/hpricot_scan.rl" + goto tr341; +tr370: +#line 95 "ext/hpricot_scan/hpricot_scan.rl" { SET(aval, p); ATTR(rb_str_new2("encoding"), aval); } goto st174; st174: if ( ++p == pe ) goto _out174; case 174: -#line 5223 "ext/hpricot_scan/hpricot_scan.c" +#line 5233 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { case 32: goto st175; - case 62: goto tr270; + case 62: goto tr355; case 63: goto st162; } if ( 9 <= (*p) && (*p) <= 13 ) goto st175; - goto tr264; + goto tr341; st175: if ( ++p == pe ) goto _out175; case 175: switch( (*p) ) { case 32: goto st175; - case 62: goto tr270; + case 62: goto tr355; case 63: goto st162; case 115: goto st176; } if ( 9 <= (*p) && (*p) <= 13 ) goto st175; - goto tr264; + goto tr341; st176: if ( ++p == pe ) goto _out176; case 176: if ( (*p) == 116 ) goto st177; - goto tr264; + goto tr341; st177: if ( ++p == pe ) goto _out177; case 177: if ( (*p) == 97 ) goto st178; - goto tr264; + goto tr341; st178: if ( ++p == pe ) goto _out178; case 178: if ( (*p) == 110 ) goto st179; - goto tr264; + goto tr341; st179: if ( ++p == pe ) goto _out179; case 179: if ( (*p) == 100 ) goto st180; - goto tr264; + goto tr341; st180: if ( ++p == pe ) goto _out180; case 180: if ( (*p) == 97 ) goto st181; - goto tr264; + goto tr341; st181: if ( ++p == pe ) goto _out181; case 181: if ( (*p) == 108 ) goto st182; - goto tr264; + goto tr341; st182: if ( ++p == pe ) goto _out182; case 182: if ( (*p) == 111 ) goto st183; - goto tr264; + goto tr341; st183: if ( ++p == pe ) goto _out183; case 183: if ( (*p) == 110 ) goto st184; - goto tr264; + goto tr341; st184: if ( ++p == pe ) goto _out184; case 184: if ( (*p) == 101 ) goto st185; - goto tr264; + goto tr341; st185: if ( ++p == pe ) goto _out185; @@ -5314,7 +5324,7 @@ case 185: } if ( 9 <= (*p) && (*p) <= 13 ) goto st185; - goto tr264; + goto tr341; st186: if ( ++p == pe ) goto _out186; @@ -5326,139 +5336,139 @@ case 186: } if ( 9 <= (*p) && (*p) <= 13 ) goto st186; - goto tr264; + goto tr341; st187: if ( ++p == pe ) goto _out187; case 187: switch( (*p) ) { - case 110: goto tr291; - case 121: goto tr292; + case 110: goto tr385; + case 121: goto tr386; } - goto tr264; -tr291: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" + goto tr341; +tr385: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st188; st188: if ( ++p == pe ) goto _out188; case 188: -#line 5348 "ext/hpricot_scan/hpricot_scan.c" +#line 5358 "ext/hpricot_scan/hpricot_scan.c" if ( (*p) == 111 ) goto st189; - goto tr264; + goto tr341; st189: if ( ++p == pe ) goto _out189; case 189: if ( (*p) == 34 ) - goto tr279; - goto tr264; -tr279: -#line 90 "ext/hpricot_scan/hpricot_scan.rl" + goto tr388; + goto tr341; +tr388: +#line 96 "ext/hpricot_scan/hpricot_scan.rl" { SET(aval, p); ATTR(rb_str_new2("standalone"), aval); } goto st190; st190: if ( ++p == pe ) goto _out190; case 190: -#line 5367 "ext/hpricot_scan/hpricot_scan.c" +#line 5377 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { case 32: goto st190; - case 62: goto tr270; + case 62: goto tr355; case 63: goto st162; } if ( 9 <= (*p) && (*p) <= 13 ) goto st190; - goto tr264; -tr292: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" + goto tr341; +tr386: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st191; st191: if ( ++p == pe ) goto _out191; case 191: -#line 5384 "ext/hpricot_scan/hpricot_scan.c" +#line 5394 "ext/hpricot_scan/hpricot_scan.c" if ( (*p) == 101 ) goto st192; - goto tr264; + goto tr341; st192: if ( ++p == pe ) goto _out192; case 192: if ( (*p) == 115 ) goto st189; - goto tr264; + goto tr341; st193: if ( ++p == pe ) goto _out193; case 193: switch( (*p) ) { - case 110: goto tr405; - case 121: goto tr406; + case 110: goto tr391; + case 121: goto tr392; } - goto tr264; -tr405: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" + goto tr341; +tr391: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st194; st194: if ( ++p == pe ) goto _out194; case 194: -#line 5412 "ext/hpricot_scan/hpricot_scan.c" +#line 5422 "ext/hpricot_scan/hpricot_scan.c" if ( (*p) == 111 ) goto st195; - goto tr264; + goto tr341; st195: if ( ++p == pe ) goto _out195; case 195: if ( (*p) == 39 ) - goto tr279; - goto tr264; -tr406: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" + goto tr388; + goto tr341; +tr392: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st196; st196: if ( ++p == pe ) goto _out196; case 196: -#line 5431 "ext/hpricot_scan/hpricot_scan.c" +#line 5441 "ext/hpricot_scan/hpricot_scan.c" if ( (*p) == 101 ) goto st197; - goto tr264; + goto tr341; st197: if ( ++p == pe ) goto _out197; case 197: if ( (*p) == 115 ) goto st195; - goto tr264; + goto tr341; st198: if ( ++p == pe ) goto _out198; case 198: if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr383; + goto tr395; } else if ( (*p) >= 65 ) - goto tr383; - goto tr264; -tr383: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" + goto tr395; + goto tr341; +tr395: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st199; st199: if ( ++p == pe ) goto _out199; case 199: -#line 5460 "ext/hpricot_scan/hpricot_scan.c" +#line 5470 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 39: goto tr277; + case 39: goto tr370; case 95: goto st199; } if ( (*p) < 48 ) { @@ -5472,36 +5482,36 @@ case 199: goto st199; } else goto st199; - goto tr264; + goto tr341; st200: if ( ++p == pe ) goto _out200; case 200: if ( (*p) == 95 ) - goto tr382; + goto tr397; if ( (*p) < 48 ) { if ( 45 <= (*p) && (*p) <= 46 ) - goto tr382; + goto tr397; } else if ( (*p) > 58 ) { if ( (*p) > 90 ) { if ( 97 <= (*p) && (*p) <= 122 ) - goto tr382; + goto tr397; } else if ( (*p) >= 65 ) - goto tr382; + goto tr397; } else - goto tr382; - goto tr264; -tr382: -#line 78 "ext/hpricot_scan/hpricot_scan.rl" + goto tr397; + goto tr341; +tr397: +#line 84 "ext/hpricot_scan/hpricot_scan.rl" { mark_aval = p; } goto st201; st201: if ( ++p == pe ) goto _out201; case 201: -#line 5503 "ext/hpricot_scan/hpricot_scan.c" +#line 5513 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 39: goto tr275; + case 39: goto tr352; case 95: goto st201; } if ( (*p) < 48 ) { @@ -5515,30 +5525,30 @@ case 201: goto st201; } else goto st201; - goto tr264; -tr409: + goto tr341; +tr399: #line 51 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p;{ TEXT_PASS(); }{p = ((tokend))-1;}} + {{p = ((tokend))-1;}{ TEXT_PASS(); }} goto st214; -tr411: +tr400: +#line 50 "ext/hpricot_scan/hpricot_scan.rl" + { EBLK(comment, 3); {goto st204;} } +#line 50 "ext/hpricot_scan/hpricot_scan.rl" + {tokend = p+1;} + goto st214; +tr413: #line 51 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p+1;{ TEXT_PASS(); }{p = ((tokend))-1;}} + {tokend = p+1;{ TEXT_PASS(); }} goto st214; -tr412: +tr414: #line 9 "ext/hpricot_scan/hpricot_scan.rl" {curline += 1;} #line 51 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p+1;{ TEXT_PASS(); }{p = ((tokend))-1;}} + {tokend = p+1;{ TEXT_PASS(); }} goto st214; -tr414: +tr416: #line 51 "ext/hpricot_scan/hpricot_scan.rl" - {{ TEXT_PASS(); }{p = ((tokend))-1;}} - goto st214; -tr415: -#line 50 "ext/hpricot_scan/hpricot_scan.rl" - { EBLK(comment, 3); {goto st204;} } -#line 50 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p+1;{p = ((tokend))-1;}} + {tokend = p;p--;{ TEXT_PASS(); }} goto st214; st214: #line 1 "ext/hpricot_scan/hpricot_scan.rl" @@ -5548,13 +5558,13 @@ case 201: case 214: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokstart = p;} -#line 5552 "ext/hpricot_scan/hpricot_scan.c" +#line 5562 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 10: goto tr412; - case 45: goto tr413; + case 10: goto tr414; + case 45: goto tr415; } - goto tr411; -tr413: + goto tr413; +tr415: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokend = p+1;} goto st215; @@ -5562,40 +5572,40 @@ case 214: if ( ++p == pe ) goto _out215; case 215: -#line 5566 "ext/hpricot_scan/hpricot_scan.c" +#line 5576 "ext/hpricot_scan/hpricot_scan.c" if ( (*p) == 45 ) goto st202; - goto tr409; + goto tr416; st202: if ( ++p == pe ) goto _out202; case 202: if ( (*p) == 62 ) - goto tr415; - goto tr414; -tr416: + goto tr400; + goto tr399; +tr401: #line 56 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p;{ TEXT_PASS(); }{p = ((tokend))-1;}} + {{p = ((tokend))-1;}{ TEXT_PASS(); }} + goto st216; +tr402: +#line 55 "ext/hpricot_scan/hpricot_scan.rl" + { EBLK(cdata, 3); {goto st204;} } +#line 55 "ext/hpricot_scan/hpricot_scan.rl" + {tokend = p+1;} goto st216; tr418: #line 56 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p+1;{ TEXT_PASS(); }{p = ((tokend))-1;}} + {tokend = p+1;{ TEXT_PASS(); }} goto st216; tr419: #line 9 "ext/hpricot_scan/hpricot_scan.rl" {curline += 1;} #line 56 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p+1;{ TEXT_PASS(); }{p = ((tokend))-1;}} + {tokend = p+1;{ TEXT_PASS(); }} goto st216; tr421: #line 56 "ext/hpricot_scan/hpricot_scan.rl" - {{ TEXT_PASS(); }{p = ((tokend))-1;}} - goto st216; -tr422: -#line 55 "ext/hpricot_scan/hpricot_scan.rl" - { EBLK(cdata, 3); {goto st204;} } -#line 55 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p+1;{p = ((tokend))-1;}} + {tokend = p;p--;{ TEXT_PASS(); }} goto st216; st216: #line 1 "ext/hpricot_scan/hpricot_scan.rl" @@ -5605,7 +5615,7 @@ case 202: case 216: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokstart = p;} -#line 5609 "ext/hpricot_scan/hpricot_scan.c" +#line 5619 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { case 10: goto tr419; case 93: goto tr420; @@ -5619,36 +5629,36 @@ case 216: if ( ++p == pe ) goto _out217; case 217: -#line 5623 "ext/hpricot_scan/hpricot_scan.c" +#line 5633 "ext/hpricot_scan/hpricot_scan.c" if ( (*p) == 93 ) goto st203; - goto tr416; + goto tr421; st203: if ( ++p == pe ) goto _out203; case 203: if ( (*p) == 62 ) - goto tr422; - goto tr421; + goto tr402; + goto tr401; tr423: #line 61 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p;{ TEXT_PASS(); }{p = ((tokend))-1;}} + {tokend = p+1;{ TEXT_PASS(); }} goto st218; tr424: +#line 9 "ext/hpricot_scan/hpricot_scan.rl" + {curline += 1;} +#line 61 "ext/hpricot_scan/hpricot_scan.rl" + {tokend = p+1;{ TEXT_PASS(); }} + goto st218; +tr425: #line 60 "ext/hpricot_scan/hpricot_scan.rl" { EBLK(procins, 2); {goto st204;} } #line 60 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p+1;{p = ((tokend))-1;}} - goto st218; -tr425: -#line 61 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p+1;{ TEXT_PASS(); }{p = ((tokend))-1;}} + {tokend = p+1;} goto st218; -tr426: -#line 9 "ext/hpricot_scan/hpricot_scan.rl" - {curline += 1;} +tr427: #line 61 "ext/hpricot_scan/hpricot_scan.rl" - {tokend = p+1;{ TEXT_PASS(); }{p = ((tokend))-1;}} + {tokend = p;p--;{ TEXT_PASS(); }} goto st218; st218: #line 1 "ext/hpricot_scan/hpricot_scan.rl" @@ -5658,20 +5668,20 @@ case 203: case 218: #line 1 "ext/hpricot_scan/hpricot_scan.rl" {tokstart = p;} -#line 5662 "ext/hpricot_scan/hpricot_scan.c" +#line 5672 "ext/hpricot_scan/hpricot_scan.c" switch( (*p) ) { - case 10: goto tr426; - case 62: goto tr424; + case 10: goto tr424; + case 62: goto tr425; case 63: goto st219; } - goto tr425; + goto tr423; st219: if ( ++p == pe ) goto _out219; case 219: if ( (*p) == 62 ) - goto tr424; - goto tr423; + goto tr425; + goto tr427; } _out204: cs = 204; goto _out; _out205: cs = 205; goto _out; @@ -5896,13 +5906,13 @@ case 219: _out: {} } -#line 197 "ext/hpricot_scan/hpricot_scan.rl" +#line 203 "ext/hpricot_scan/hpricot_scan.rl" if ( cs == hpricot_scan_error ) { free(buf); if ( !NIL_P(tag) ) { - rb_raise(rb_eHpricotParseError, "parse error on element <%s>, starting on line %d.\n" NO_WAY_SERIOUSLY, RSTRING(tag)->ptr, curline); + rb_raise(rb_eHpricotParseError, "parse error on element <%s>, starting on line %d.\n" NO_WAY_SERIOUSLY, RSTRING_PTR(tag), curline); } else { diff --git a/vendor/gems/hpricot-0.6/ext/hpricot_scan/hpricot_scan.h b/vendor/gems/hpricot-0.6.161/ext/hpricot_scan/hpricot_scan.h similarity index 100% rename from vendor/gems/hpricot-0.6/ext/hpricot_scan/hpricot_scan.h rename to vendor/gems/hpricot-0.6.161/ext/hpricot_scan/hpricot_scan.h diff --git a/vendor/gems/hpricot-0.6.161/ext/hpricot_scan/hpricot_scan.java.java b/vendor/gems/hpricot-0.6.161/ext/hpricot_scan/hpricot_scan.java.java new file mode 100644 index 0000000..3980efa --- /dev/null +++ b/vendor/gems/hpricot-0.6.161/ext/hpricot_scan/hpricot_scan.java.java @@ -0,0 +1,1300 @@ +// line 1 "ext/hpricot_scan/hpricot_scan.java.rl" + +import java.io.IOException; + +import org.jruby.Ruby; +import org.jruby.RubyClass; +import org.jruby.RubyHash; +import org.jruby.RubyModule; +import org.jruby.RubyNumeric; +import org.jruby.RubyObjectAdapter; +import org.jruby.RubyString; +import org.jruby.javasupport.JavaEmbedUtils; +import org.jruby.runtime.Block; +import org.jruby.runtime.CallbackFactory; +import org.jruby.runtime.builtin.IRubyObject; +import org.jruby.exceptions.RaiseException; +import org.jruby.runtime.load.BasicLibraryService; + +public class HpricotScanService implements BasicLibraryService { + public static String NO_WAY_SERIOUSLY="*** This should not happen, please send a bug report with the HTML you're parsing to why@whytheluckystiff.net. So sorry!"; + private static RubyObjectAdapter rubyApi; + + public void ELE(IRubyObject N) { + if (tokend > tokstart || text) { + IRubyObject raw_string = runtime.getNil(); + ele_open = false; text = false; + if (tokstart != -1 && N != cdata && N != sym_text && N != procins && N != comment) { + raw_string = runtime.newString(new String(buf,tokstart,tokend-tokstart)); + } + rb_yield_tokens(N, tag[0], attr, raw_string, taint); + } + } + + public void SET(IRubyObject[] N, int E) { + int mark = 0; + if(N == tag) { + if(mark_tag == -1 || E == mark_tag) { + tag[0] = runtime.newString(""); + } else if(E > mark_tag) { + tag[0] = runtime.newString(new String(buf,mark_tag, E-mark_tag)); + } + } else if(N == akey) { + if(mark_akey == -1 || E == mark_akey) { + akey[0] = runtime.newString(""); + } else if(E > mark_akey) { + akey[0] = runtime.newString(new String(buf,mark_akey, E-mark_akey)); + } + } else if(N == aval) { + if(mark_aval == -1 || E == mark_aval) { + aval[0] = runtime.newString(""); + } else if(E > mark_aval) { + aval[0] = runtime.newString(new String(buf,mark_aval, E-mark_aval)); + } + } + } + + public void CAT(IRubyObject[] N, int E) { + if(N[0].isNil()) { + SET(N,E); + } else { + int mark = 0; + if(N == tag) { + mark = mark_tag; + } else if(N == akey) { + mark = mark_akey; + } else if(N == aval) { + mark = mark_aval; + } + ((RubyString)(N[0])).append(runtime.newString(new String(buf, mark, E-mark))); + } + } + + public void SLIDE(Object N) { + int mark = 0; + if(N == tag) { + mark = mark_tag; + } else if(N == akey) { + mark = mark_akey; + } else if(N == aval) { + mark = mark_aval; + } + if(mark > tokstart) { + if(N == tag) { + mark_tag -= tokstart; + } else if(N == akey) { + mark_akey -= tokstart; + } else if(N == aval) { + mark_aval -= tokstart; + } + } + } + + public void ATTR(IRubyObject K, IRubyObject V) { + if(!K.isNil()) { + if(attr.isNil()) { + attr = RubyHash.newHash(runtime); + } + ((RubyHash)attr).aset(K,V); + } + } + + public void ATTR(IRubyObject[] K, IRubyObject V) { + ATTR(K[0],V); + } + + public void ATTR(IRubyObject K, IRubyObject[] V) { + ATTR(K,V[0]); + } + + public void ATTR(IRubyObject[] K, IRubyObject[] V) { + ATTR(K[0],V[0]); + } + + public void TEXT_PASS() { + if(!text) { + if(ele_open) { + ele_open = false; + if(tokstart > -1) { + mark_tag = tokstart; + } + } else { + mark_tag = p; + } + attr = runtime.getNil(); + tag[0] = runtime.getNil(); + text = true; + } + } + + public void EBLK(IRubyObject N, int T) { + CAT(tag, p - T + 1); + ELE(N); + } + + + public void rb_raise(RubyClass error, String message) { + throw new RaiseException(runtime, error, message, true); + } + + public IRubyObject rb_str_new2(String s) { + return runtime.newString(s); + } + +// line 188 "ext/hpricot_scan/hpricot_scan.java.rl" + + + +// line 149 "ext/hpricot_scan/hpricot_scan.java.java" +private static byte[] init__hpricot_scan_actions_0() +{ + return new byte [] { + 0, 1, 1, 1, 2, 1, 4, 1, 5, 1, 6, 1, + 7, 1, 8, 1, 9, 1, 10, 1, 11, 1, 12, 1, + 14, 1, 16, 1, 20, 1, 21, 1, 22, 1, 24, 1, + 25, 1, 26, 1, 28, 1, 29, 1, 30, 1, 32, 1, + 33, 1, 38, 1, 39, 1, 40, 1, 41, 1, 42, 1, + 43, 1, 44, 1, 45, 1, 46, 1, 47, 1, 48, 1, + 49, 1, 50, 1, 51, 2, 2, 5, 2, 2, 6, 2, + 2, 11, 2, 2, 12, 2, 2, 14, 2, 4, 39, 2, + 4, 40, 2, 4, 41, 2, 5, 2, 2, 6, 14, 2, + 7, 6, 2, 7, 14, 2, 11, 12, 2, 13, 3, 2, + 14, 6, 2, 14, 40, 2, 15, 24, 2, 15, 28, 2, + 15, 32, 2, 15, 45, 2, 17, 23, 2, 18, 27, 2, + 19, 31, 2, 22, 34, 2, 22, 36, 3, 2, 6, 14, + 3, 2, 14, 6, 3, 6, 7, 14, 3, 6, 14, 40, + 3, 7, 14, 40, 3, 11, 2, 12, 3, 14, 6, 40, + 3, 14, 13, 3, 3, 22, 0, 37, 3, 22, 2, 34, + 3, 22, 14, 35, 4, 2, 14, 13, 3, 4, 6, 7, + 14, 40, 4, 22, 2, 14, 35, 4, 22, 6, 14, 35, + 4, 22, 7, 14, 35, 4, 22, 14, 6, 35, 5, 22, + 2, 6, 14, 35, 5, 22, 2, 14, 6, 35, 5, 22, + 6, 7, 14, 35 + }; +} + +private static final byte _hpricot_scan_actions[] = init__hpricot_scan_actions_0(); + + +private static short[] init__hpricot_scan_key_offsets_0() +{ + return new short [] { + 0, 3, 4, 5, 6, 7, 8, 9, 10, 13, 22, 37, + 44, 45, 46, 47, 48, 49, 52, 57, 69, 81, 86, 93, + 94, 95, 100, 101, 105, 106, 107, 121, 135, 152, 169, 186, + 203, 210, 212, 214, 220, 222, 227, 232, 238, 240, 245, 251, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 282, 296, 300, 313, 326, 340, 354, 355, 366, 375, 388, 405, + 423, 441, 450, 461, 480, 499, 510, 521, 536, 538, 540, 556, + 572, 575, 587, 599, 619, 639, 658, 677, 697, 717, 728, 739, + 751, 763, 775, 791, 794, 809, 811, 813, 829, 845, 848, 860, + 871, 890, 910, 930, 941, 952, 964, 984, 1004, 1016, 1036, 1057, + 1074, 1091, 1095, 1098, 1110, 1122, 1142, 1162, 1182, 1194, 1206, 1226, + 1242, 1258, 1270, 1291, 1310, 1313, 1328, 1340, 1355, 1358, 1369, 1371, + 1373, 1384, 1391, 1404, 1418, 1432, 1445, 1446, 1447, 1448, 1449, 1450, + 1451, 1455, 1460, 1469, 1479, 1484, 1491, 1492, 1493, 1494, 1495, 1496, + 1497, 1498, 1499, 1503, 1508, 1512, 1522, 1527, 1533, 1534, 1535, 1536, + 1537, 1538, 1539, 1540, 1541, 1542, 1546, 1551, 1553, 1554, 1555, 1560, + 1561, 1562, 1564, 1565, 1566, 1567, 1568, 1572, 1582, 1591, 1601, 1602, + 1603, 1605, 1614, 1615, 1616, 1617, 1619, 1621, 1624, 1627, 1631, 1633, + 1634, 1636, 1637, 1640 + }; +} + +private static final short _hpricot_scan_key_offsets[] = init__hpricot_scan_key_offsets_0(); + + +private static char[] init__hpricot_scan_trans_keys_0() +{ + return new char [] { + 45, 68, 91, 45, 79, 67, 84, 89, 80, 69, 32, 9, + 13, 32, 58, 95, 9, 13, 65, 90, 97, 122, 32, 62, + 63, 91, 95, 9, 13, 45, 46, 48, 58, 65, 90, 97, + 122, 32, 62, 80, 83, 91, 9, 13, 85, 66, 76, 73, + 67, 32, 9, 13, 32, 34, 39, 9, 13, 9, 34, 61, + 95, 32, 37, 39, 59, 63, 90, 97, 122, 9, 34, 61, + 95, 32, 37, 39, 59, 63, 90, 97, 122, 32, 62, 91, + 9, 13, 32, 34, 39, 62, 91, 9, 13, 34, 34, 32, + 62, 91, 9, 13, 93, 32, 62, 9, 13, 39, 39, 9, + 39, 61, 95, 32, 33, 35, 37, 40, 59, 63, 90, 97, + 122, 9, 39, 61, 95, 32, 33, 35, 37, 40, 59, 63, + 90, 97, 122, 9, 32, 33, 39, 62, 91, 95, 10, 13, + 35, 37, 40, 59, 61, 90, 97, 122, 9, 32, 34, 39, + 62, 91, 95, 10, 13, 33, 37, 40, 59, 61, 90, 97, + 122, 9, 32, 33, 39, 62, 91, 95, 10, 13, 35, 37, + 40, 59, 61, 90, 97, 122, 9, 32, 34, 39, 62, 91, + 95, 10, 13, 33, 37, 40, 59, 61, 90, 97, 122, 32, + 34, 39, 62, 91, 9, 13, 34, 39, 34, 39, 32, 39, + 62, 91, 9, 13, 39, 93, 32, 62, 93, 9, 13, 32, + 39, 62, 9, 13, 32, 34, 62, 91, 9, 13, 34, 93, + 32, 34, 62, 9, 13, 32, 39, 62, 91, 9, 13, 9, + 39, 61, 95, 32, 33, 35, 37, 40, 59, 63, 90, 97, + 122, 89, 83, 84, 69, 77, 67, 68, 65, 84, 65, 91, + 58, 95, 65, 90, 97, 122, 32, 62, 63, 95, 9, 13, + 45, 46, 48, 58, 65, 90, 97, 122, 32, 62, 9, 13, + 32, 47, 62, 63, 95, 9, 13, 45, 58, 65, 90, 97, + 122, 32, 47, 62, 63, 95, 9, 13, 45, 58, 65, 90, + 97, 122, 32, 47, 61, 62, 63, 95, 9, 13, 45, 58, + 65, 90, 97, 122, 32, 47, 61, 62, 63, 95, 9, 13, + 45, 58, 65, 90, 97, 122, 62, 13, 32, 34, 39, 47, + 60, 62, 9, 10, 11, 12, 13, 32, 47, 60, 62, 9, + 10, 11, 12, 32, 47, 62, 63, 95, 9, 13, 45, 58, + 65, 90, 97, 122, 13, 32, 47, 60, 62, 63, 95, 9, + 10, 11, 12, 45, 58, 65, 90, 97, 122, 13, 32, 47, + 60, 61, 62, 63, 95, 9, 10, 11, 12, 45, 58, 65, + 90, 97, 122, 13, 32, 47, 60, 61, 62, 63, 95, 9, + 10, 11, 12, 45, 58, 65, 90, 97, 122, 13, 32, 47, + 60, 62, 9, 10, 11, 12, 13, 32, 34, 39, 47, 60, + 62, 9, 10, 11, 12, 13, 32, 34, 39, 47, 60, 62, + 63, 95, 9, 10, 11, 12, 45, 58, 65, 90, 97, 122, + 13, 32, 34, 39, 47, 60, 62, 63, 95, 9, 10, 11, + 12, 45, 58, 65, 90, 97, 122, 13, 32, 34, 47, 60, + 62, 92, 9, 10, 11, 12, 13, 32, 34, 47, 60, 62, + 92, 9, 10, 11, 12, 32, 34, 47, 62, 63, 92, 95, + 9, 13, 45, 58, 65, 90, 97, 122, 34, 92, 34, 92, + 32, 34, 47, 61, 62, 63, 92, 95, 9, 13, 45, 58, + 65, 90, 97, 122, 32, 34, 47, 61, 62, 63, 92, 95, + 9, 13, 45, 58, 65, 90, 97, 122, 34, 62, 92, 13, + 32, 34, 39, 47, 60, 62, 92, 9, 10, 11, 12, 13, + 32, 34, 39, 47, 60, 62, 92, 9, 10, 11, 12, 13, + 32, 34, 39, 47, 60, 62, 63, 92, 95, 9, 10, 11, + 12, 45, 58, 65, 90, 97, 122, 13, 32, 34, 39, 47, + 60, 62, 63, 92, 95, 9, 10, 11, 12, 45, 58, 65, + 90, 97, 122, 13, 32, 34, 47, 60, 62, 63, 92, 95, + 9, 10, 11, 12, 45, 58, 65, 90, 97, 122, 13, 32, + 34, 47, 60, 62, 63, 92, 95, 9, 10, 11, 12, 45, + 58, 65, 90, 97, 122, 13, 32, 34, 47, 60, 61, 62, + 63, 92, 95, 9, 10, 11, 12, 45, 58, 65, 90, 97, + 122, 13, 32, 34, 47, 60, 61, 62, 63, 92, 95, 9, + 10, 11, 12, 45, 58, 65, 90, 97, 122, 13, 32, 34, + 47, 60, 62, 92, 9, 10, 11, 12, 13, 32, 34, 47, + 60, 62, 92, 9, 10, 11, 12, 13, 32, 34, 39, 47, + 60, 62, 92, 9, 10, 11, 12, 13, 32, 34, 39, 47, + 60, 62, 92, 9, 10, 11, 12, 13, 32, 34, 39, 47, + 60, 62, 92, 9, 10, 11, 12, 32, 34, 39, 47, 62, + 63, 92, 95, 9, 13, 45, 58, 65, 90, 97, 122, 34, + 39, 92, 32, 39, 47, 62, 63, 92, 95, 9, 13, 45, + 58, 65, 90, 97, 122, 39, 92, 39, 92, 32, 39, 47, + 61, 62, 63, 92, 95, 9, 13, 45, 58, 65, 90, 97, + 122, 32, 39, 47, 61, 62, 63, 92, 95, 9, 13, 45, + 58, 65, 90, 97, 122, 39, 62, 92, 13, 32, 34, 39, + 47, 60, 62, 92, 9, 10, 11, 12, 13, 32, 39, 47, + 60, 62, 92, 9, 10, 11, 12, 13, 32, 39, 47, 60, + 62, 63, 92, 95, 9, 10, 11, 12, 45, 58, 65, 90, + 97, 122, 13, 32, 39, 47, 60, 61, 62, 63, 92, 95, + 9, 10, 11, 12, 45, 58, 65, 90, 97, 122, 13, 32, + 39, 47, 60, 61, 62, 63, 92, 95, 9, 10, 11, 12, + 45, 58, 65, 90, 97, 122, 13, 32, 39, 47, 60, 62, + 92, 9, 10, 11, 12, 13, 32, 39, 47, 60, 62, 92, + 9, 10, 11, 12, 13, 32, 34, 39, 47, 60, 62, 92, + 9, 10, 11, 12, 13, 32, 34, 39, 47, 60, 62, 63, + 92, 95, 9, 10, 11, 12, 45, 58, 65, 90, 97, 122, + 13, 32, 34, 39, 47, 60, 62, 63, 92, 95, 9, 10, + 11, 12, 45, 58, 65, 90, 97, 122, 13, 32, 34, 39, + 47, 60, 62, 92, 9, 10, 11, 12, 13, 32, 34, 39, + 47, 60, 62, 63, 92, 95, 9, 10, 11, 12, 45, 58, + 65, 90, 97, 122, 13, 32, 34, 39, 47, 60, 61, 62, + 63, 92, 95, 9, 10, 11, 12, 45, 58, 65, 90, 97, + 122, 32, 34, 39, 47, 61, 62, 63, 92, 95, 9, 13, + 45, 58, 65, 90, 97, 122, 32, 34, 39, 47, 61, 62, + 63, 92, 95, 9, 13, 45, 58, 65, 90, 97, 122, 34, + 39, 62, 92, 34, 39, 92, 13, 32, 34, 39, 47, 60, + 62, 92, 9, 10, 11, 12, 13, 32, 34, 39, 47, 60, + 62, 92, 9, 10, 11, 12, 13, 32, 34, 39, 47, 60, + 62, 63, 92, 95, 9, 10, 11, 12, 45, 58, 65, 90, + 97, 122, 13, 32, 34, 39, 47, 60, 62, 63, 92, 95, + 9, 10, 11, 12, 45, 58, 65, 90, 97, 122, 13, 32, + 34, 39, 47, 60, 62, 63, 92, 95, 9, 10, 11, 12, + 45, 58, 65, 90, 97, 122, 13, 32, 34, 39, 47, 60, + 62, 92, 9, 10, 11, 12, 13, 32, 34, 39, 47, 60, + 62, 92, 9, 10, 11, 12, 13, 32, 34, 39, 47, 60, + 62, 63, 92, 95, 9, 10, 11, 12, 45, 58, 65, 90, + 97, 122, 32, 34, 39, 47, 62, 63, 92, 95, 9, 13, + 45, 58, 65, 90, 97, 122, 32, 34, 39, 47, 62, 63, + 92, 95, 9, 13, 45, 58, 65, 90, 97, 122, 13, 32, + 34, 39, 47, 60, 62, 92, 9, 10, 11, 12, 13, 32, + 34, 39, 47, 60, 61, 62, 63, 92, 95, 9, 10, 11, + 12, 45, 58, 65, 90, 97, 122, 13, 32, 39, 47, 60, + 62, 63, 92, 95, 9, 10, 11, 12, 45, 58, 65, 90, + 97, 122, 34, 39, 92, 32, 39, 47, 62, 63, 92, 95, + 9, 13, 45, 58, 65, 90, 97, 122, 13, 32, 34, 39, + 47, 60, 62, 92, 9, 10, 11, 12, 32, 34, 47, 62, + 63, 92, 95, 9, 13, 45, 58, 65, 90, 97, 122, 34, + 39, 92, 13, 32, 39, 47, 60, 62, 92, 9, 10, 11, + 12, 34, 92, 39, 92, 13, 32, 34, 39, 47, 60, 62, + 9, 10, 11, 12, 58, 95, 120, 65, 90, 97, 122, 32, + 63, 95, 9, 13, 45, 46, 48, 58, 65, 90, 97, 122, + 32, 63, 95, 109, 9, 13, 45, 46, 48, 58, 65, 90, + 97, 122, 32, 63, 95, 108, 9, 13, 45, 46, 48, 58, + 65, 90, 97, 122, 32, 63, 95, 9, 13, 45, 46, 48, + 58, 65, 90, 97, 122, 101, 114, 115, 105, 111, 110, 32, + 61, 9, 13, 32, 34, 39, 9, 13, 95, 45, 46, 48, + 58, 65, 90, 97, 122, 34, 95, 45, 46, 48, 58, 65, + 90, 97, 122, 32, 62, 63, 9, 13, 32, 62, 63, 101, + 115, 9, 13, 62, 110, 99, 111, 100, 105, 110, 103, 32, + 61, 9, 13, 32, 34, 39, 9, 13, 65, 90, 97, 122, + 34, 95, 45, 46, 48, 57, 65, 90, 97, 122, 32, 62, + 63, 9, 13, 32, 62, 63, 115, 9, 13, 116, 97, 110, + 100, 97, 108, 111, 110, 101, 32, 61, 9, 13, 32, 34, + 39, 9, 13, 110, 121, 111, 34, 32, 62, 63, 9, 13, + 101, 115, 110, 121, 111, 39, 101, 115, 65, 90, 97, 122, + 39, 95, 45, 46, 48, 57, 65, 90, 97, 122, 95, 45, + 46, 48, 58, 65, 90, 97, 122, 39, 95, 45, 46, 48, + 58, 65, 90, 97, 122, 62, 62, 10, 60, 33, 47, 58, + 63, 95, 65, 90, 97, 122, 39, 93, 34, 34, 92, 39, + 92, 34, 39, 92, 32, 9, 13, 32, 118, 9, 13, 10, + 45, 45, 10, 93, 93, 10, 62, 63, 62, 0 + }; +} + +private static final char _hpricot_scan_trans_keys[] = init__hpricot_scan_trans_keys_0(); + + +private static byte[] init__hpricot_scan_single_lengths_0() +{ + return new byte [] { + 3, 1, 1, 1, 1, 1, 1, 1, 1, 3, 5, 5, + 1, 1, 1, 1, 1, 1, 3, 4, 4, 3, 5, 1, + 1, 3, 1, 2, 1, 1, 4, 4, 7, 7, 7, 7, + 5, 2, 2, 4, 2, 3, 3, 4, 2, 3, 4, 4, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 4, 2, 5, 5, 6, 6, 1, 7, 5, 5, 7, 8, + 8, 5, 7, 9, 9, 7, 7, 7, 2, 2, 8, 8, + 3, 8, 8, 10, 10, 9, 9, 10, 10, 7, 7, 8, + 8, 8, 8, 3, 7, 2, 2, 8, 8, 3, 8, 7, + 9, 10, 10, 7, 7, 8, 10, 10, 8, 10, 11, 9, + 9, 4, 3, 8, 8, 10, 10, 10, 8, 8, 10, 8, + 8, 8, 11, 9, 3, 7, 8, 7, 3, 7, 2, 2, + 7, 3, 3, 4, 4, 3, 1, 1, 1, 1, 1, 1, + 2, 3, 1, 2, 3, 5, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 3, 0, 2, 3, 4, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 3, 2, 1, 1, 3, 1, + 1, 2, 1, 1, 1, 1, 0, 2, 1, 2, 1, 1, + 2, 5, 1, 1, 1, 2, 2, 3, 1, 2, 2, 1, + 2, 1, 3, 1 + }; +} + +private static final byte _hpricot_scan_single_lengths[] = init__hpricot_scan_single_lengths_0(); + + +private static byte[] init__hpricot_scan_range_lengths_0() +{ + return new byte [] { + 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 5, 1, + 0, 0, 0, 0, 0, 1, 1, 4, 4, 1, 1, 0, + 0, 1, 0, 1, 0, 0, 5, 5, 5, 5, 5, 5, + 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 5, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 5, 1, 4, 4, 4, 4, 0, 2, 2, 4, 5, 5, + 5, 2, 2, 5, 5, 2, 2, 4, 0, 0, 4, 4, + 0, 2, 2, 5, 5, 5, 5, 5, 5, 2, 2, 2, + 2, 2, 4, 0, 4, 0, 0, 4, 4, 0, 2, 2, + 5, 5, 5, 2, 2, 2, 5, 5, 2, 5, 5, 4, + 4, 0, 0, 2, 2, 5, 5, 5, 2, 2, 5, 4, + 4, 2, 5, 5, 0, 4, 2, 4, 0, 2, 0, 0, + 2, 2, 5, 5, 5, 5, 0, 0, 0, 0, 0, 0, + 1, 1, 4, 4, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 1, 2, 4, 1, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 0, 0, + 0, 2, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, + 0, 0, 0, 0 + }; +} + +private static final byte _hpricot_scan_range_lengths[] = init__hpricot_scan_range_lengths_0(); + + +private static short[] init__hpricot_scan_index_offsets_0() +{ + return new short [] { + 0, 4, 6, 8, 10, 12, 14, 16, 18, 21, 28, 39, + 46, 48, 50, 52, 54, 56, 59, 64, 73, 82, 87, 94, + 96, 98, 103, 105, 109, 111, 113, 123, 133, 146, 159, 172, + 185, 192, 195, 198, 204, 207, 212, 217, 223, 226, 231, 237, + 247, 249, 251, 253, 255, 257, 259, 261, 263, 265, 267, 269, + 274, 284, 288, 298, 308, 319, 330, 332, 342, 350, 360, 373, + 387, 401, 409, 419, 434, 449, 459, 469, 481, 484, 487, 500, + 513, 517, 528, 539, 555, 571, 586, 601, 617, 633, 643, 653, + 664, 675, 686, 699, 703, 715, 718, 721, 734, 747, 751, 762, + 772, 787, 803, 819, 829, 839, 850, 866, 882, 893, 909, 926, + 940, 954, 959, 963, 974, 985, 1001, 1017, 1033, 1044, 1055, 1071, + 1084, 1097, 1108, 1125, 1140, 1144, 1156, 1167, 1179, 1183, 1193, 1196, + 1199, 1209, 1215, 1224, 1234, 1244, 1253, 1255, 1257, 1259, 1261, 1263, + 1265, 1269, 1274, 1280, 1287, 1292, 1299, 1301, 1303, 1305, 1307, 1309, + 1311, 1313, 1315, 1319, 1324, 1327, 1334, 1339, 1345, 1347, 1349, 1351, + 1353, 1355, 1357, 1359, 1361, 1363, 1367, 1372, 1375, 1377, 1379, 1384, + 1386, 1388, 1391, 1393, 1395, 1397, 1399, 1402, 1409, 1415, 1422, 1424, + 1426, 1429, 1437, 1439, 1441, 1443, 1446, 1449, 1453, 1456, 1460, 1463, + 1465, 1468, 1470, 1474 + }; +} + +private static final short _hpricot_scan_index_offsets[] = init__hpricot_scan_index_offsets_0(); + + +private static short[] init__hpricot_scan_indicies_0() +{ + return new short [] { + 1, 2, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, + 8, 0, 9, 0, 10, 0, 11, 11, 0, 11, 12, 12, + 11, 12, 12, 0, 13, 15, 14, 16, 14, 13, 14, 14, + 14, 14, 0, 17, 18, 19, 20, 21, 17, 0, 22, 0, + 23, 0, 24, 0, 25, 0, 26, 0, 27, 27, 0, 27, + 28, 29, 27, 0, 30, 31, 30, 30, 30, 30, 30, 30, + 0, 32, 33, 32, 32, 32, 32, 32, 32, 0, 34, 18, + 21, 34, 0, 34, 35, 36, 18, 21, 34, 0, 38, 37, + 41, 40, 42, 18, 21, 42, 39, 43, 21, 43, 18, 43, + 39, 38, 44, 41, 45, 46, 47, 46, 46, 46, 46, 46, + 46, 46, 0, 48, 49, 48, 48, 48, 48, 48, 48, 48, + 0, 50, 50, 48, 49, 18, 21, 48, 34, 48, 48, 48, + 48, 0, 50, 50, 35, 51, 18, 21, 48, 34, 48, 48, + 48, 48, 0, 52, 52, 54, 55, 56, 57, 54, 53, 54, + 54, 54, 54, 44, 58, 58, 61, 62, 63, 64, 60, 59, + 60, 60, 60, 60, 45, 59, 61, 65, 63, 64, 59, 45, + 67, 68, 66, 70, 71, 69, 72, 41, 63, 64, 72, 45, + 73, 74, 64, 75, 76, 43, 75, 21, 74, 41, 63, 74, + 45, 77, 41, 78, 79, 77, 40, 73, 80, 79, 80, 41, + 78, 80, 40, 81, 38, 56, 57, 81, 44, 60, 82, 60, + 60, 60, 60, 60, 60, 60, 45, 83, 0, 84, 0, 85, + 0, 86, 0, 87, 0, 88, 0, 89, 0, 90, 0, 91, + 0, 92, 0, 93, 0, 94, 94, 94, 94, 0, 95, 97, + 96, 96, 95, 96, 96, 96, 96, 0, 98, 99, 98, 0, + 100, 102, 103, 101, 101, 100, 101, 101, 101, 0, 104, 106, + 107, 105, 105, 104, 105, 105, 105, 0, 108, 110, 111, 112, + 109, 109, 108, 109, 109, 109, 39, 113, 115, 116, 117, 114, + 114, 113, 114, 114, 114, 39, 118, 39, 120, 120, 122, 123, + 124, 39, 117, 120, 121, 119, 126, 126, 128, 39, 129, 126, + 127, 125, 130, 115, 117, 114, 114, 130, 114, 114, 114, 39, + 126, 126, 132, 39, 133, 131, 131, 126, 127, 131, 131, 131, + 125, 134, 134, 137, 39, 138, 139, 136, 136, 134, 135, 136, + 136, 136, 125, 140, 140, 132, 39, 142, 133, 131, 131, 140, + 141, 131, 131, 131, 125, 126, 126, 128, 39, 129, 126, 127, + 125, 143, 143, 145, 146, 147, 39, 129, 143, 144, 119, 148, + 148, 122, 123, 124, 39, 117, 150, 150, 148, 149, 150, 150, + 150, 119, 143, 143, 145, 146, 151, 39, 133, 150, 150, 143, + 144, 150, 150, 150, 119, 153, 153, 155, 156, 157, 158, 159, + 153, 154, 152, 161, 161, 163, 164, 165, 166, 167, 161, 162, + 160, 168, 169, 171, 172, 170, 173, 170, 168, 170, 170, 170, + 165, 169, 173, 165, 174, 173, 165, 175, 169, 177, 178, 179, + 176, 173, 176, 175, 176, 176, 176, 165, 180, 169, 171, 181, + 172, 170, 173, 170, 180, 170, 170, 170, 165, 169, 182, 173, + 165, 183, 183, 185, 186, 187, 165, 172, 159, 183, 184, 152, + 188, 188, 185, 186, 187, 165, 172, 159, 188, 189, 152, 188, + 188, 185, 186, 187, 165, 172, 190, 159, 190, 188, 189, 190, + 190, 190, 152, 191, 191, 193, 194, 195, 165, 196, 190, 159, + 190, 191, 192, 190, 190, 190, 152, 153, 153, 155, 195, 157, + 197, 190, 159, 190, 153, 154, 190, 190, 190, 152, 161, 161, + 163, 199, 165, 196, 198, 167, 198, 161, 162, 198, 198, 198, + 160, 200, 200, 163, 203, 165, 204, 205, 202, 167, 202, 200, + 201, 202, 202, 202, 160, 206, 206, 163, 199, 165, 208, 196, + 198, 167, 198, 206, 207, 198, 198, 198, 160, 161, 161, 163, + 164, 165, 166, 167, 161, 162, 160, 161, 161, 209, 164, 165, + 166, 167, 161, 162, 160, 191, 191, 193, 194, 156, 165, 166, + 159, 191, 192, 152, 211, 211, 213, 214, 215, 216, 217, 218, + 211, 212, 210, 220, 220, 222, 209, 223, 224, 225, 226, 220, + 221, 219, 227, 228, 174, 230, 231, 229, 232, 229, 227, 229, + 229, 229, 224, 228, 174, 232, 224, 234, 169, 236, 237, 235, + 238, 235, 234, 235, 235, 235, 233, 169, 238, 233, 228, 238, + 233, 239, 169, 241, 242, 243, 240, 238, 240, 239, 240, 240, + 240, 233, 244, 169, 236, 245, 237, 235, 238, 235, 244, 235, + 235, 235, 233, 169, 246, 238, 233, 248, 248, 250, 251, 252, + 233, 237, 253, 248, 249, 247, 255, 255, 163, 257, 233, 258, + 259, 255, 256, 254, 255, 255, 163, 261, 233, 262, 260, 259, + 260, 255, 256, 260, 260, 260, 254, 263, 263, 163, 266, 233, + 267, 268, 265, 259, 265, 263, 264, 265, 265, 265, 254, 269, + 269, 163, 261, 233, 271, 262, 260, 259, 260, 269, 270, 260, + 260, 260, 254, 255, 255, 163, 257, 233, 258, 259, 255, 256, + 254, 255, 255, 222, 257, 233, 258, 259, 255, 256, 254, 272, + 272, 274, 275, 276, 233, 258, 253, 272, 273, 247, 277, 277, + 250, 251, 252, 233, 237, 279, 253, 279, 277, 278, 279, 279, + 279, 247, 272, 272, 274, 275, 280, 233, 262, 279, 253, 279, + 272, 273, 279, 279, 279, 247, 211, 211, 281, 214, 215, 216, + 217, 218, 211, 212, 210, 220, 220, 222, 209, 283, 224, 284, + 282, 226, 282, 220, 221, 282, 282, 282, 219, 285, 285, 222, + 209, 288, 224, 289, 290, 287, 226, 287, 285, 286, 287, 287, + 287, 219, 291, 228, 174, 230, 292, 231, 229, 232, 229, 291, + 229, 229, 229, 224, 293, 228, 174, 295, 296, 297, 294, 232, + 294, 293, 294, 294, 294, 224, 228, 174, 298, 232, 224, 299, + 299, 232, 224, 300, 300, 302, 303, 304, 224, 231, 218, 300, + 301, 210, 305, 305, 302, 303, 304, 224, 231, 218, 305, 306, + 210, 305, 305, 302, 303, 304, 224, 231, 307, 218, 307, 305, + 306, 307, 307, 307, 210, 308, 308, 310, 311, 312, 224, 284, + 307, 218, 307, 308, 309, 307, 307, 307, 210, 211, 211, 281, + 214, 312, 216, 313, 307, 218, 307, 211, 212, 307, 307, 307, + 210, 220, 220, 222, 209, 223, 224, 225, 226, 220, 221, 219, + 220, 220, 314, 314, 223, 224, 225, 226, 220, 221, 219, 211, + 211, 213, 214, 312, 216, 313, 307, 218, 307, 211, 212, 307, + 307, 307, 210, 315, 316, 317, 319, 320, 318, 321, 318, 315, + 318, 318, 318, 216, 315, 322, 317, 319, 320, 318, 321, 318, + 315, 318, 318, 318, 216, 308, 308, 310, 311, 215, 224, 225, + 218, 308, 309, 210, 323, 323, 222, 209, 283, 224, 325, 284, + 282, 226, 282, 323, 324, 282, 282, 282, 219, 326, 326, 155, + 280, 328, 329, 279, 253, 279, 326, 327, 279, 279, 279, 247, + 316, 317, 321, 216, 330, 331, 333, 334, 332, 335, 332, 330, + 332, 332, 332, 328, 277, 277, 250, 251, 252, 233, 237, 253, + 277, 278, 247, 336, 331, 338, 339, 337, 340, 337, 336, 337, + 337, 337, 157, 322, 317, 321, 216, 326, 326, 155, 276, 328, + 341, 253, 326, 327, 247, 331, 340, 157, 331, 335, 328, 148, + 148, 122, 123, 124, 39, 117, 148, 149, 119, 342, 342, 343, + 342, 342, 0, 344, 345, 345, 344, 345, 345, 345, 345, 0, + 344, 345, 345, 346, 344, 345, 345, 345, 345, 0, 344, 345, + 345, 347, 344, 345, 345, 345, 345, 0, 348, 345, 345, 348, + 345, 345, 345, 345, 0, 350, 349, 351, 349, 352, 349, 353, + 349, 354, 349, 355, 349, 355, 356, 355, 349, 356, 357, 358, + 356, 349, 359, 359, 359, 359, 359, 349, 360, 361, 361, 361, + 361, 361, 349, 362, 363, 364, 362, 349, 362, 363, 364, 365, + 366, 362, 349, 363, 349, 367, 349, 368, 349, 369, 349, 370, + 349, 371, 349, 372, 349, 373, 349, 373, 374, 373, 349, 374, + 375, 376, 374, 349, 377, 377, 349, 378, 379, 379, 379, 379, + 379, 349, 380, 363, 364, 380, 349, 380, 363, 364, 366, 380, + 349, 381, 349, 382, 349, 383, 349, 384, 349, 385, 349, 386, + 349, 387, 349, 388, 349, 389, 349, 389, 390, 389, 349, 390, + 391, 392, 390, 349, 393, 394, 349, 395, 349, 396, 349, 397, + 363, 364, 397, 349, 398, 349, 395, 349, 399, 400, 349, 401, + 349, 396, 349, 402, 349, 401, 349, 403, 403, 349, 378, 404, + 404, 404, 404, 404, 349, 405, 405, 405, 405, 405, 349, 360, + 406, 406, 406, 406, 406, 349, 408, 407, 410, 409, 412, 413, + 411, 415, 416, 417, 418, 417, 417, 417, 414, 41, 45, 43, + 21, 41, 40, 169, 173, 165, 169, 238, 233, 228, 174, 232, + 224, 344, 344, 420, 348, 421, 348, 420, 423, 424, 422, 426, + 425, 428, 429, 427, 431, 430, 433, 434, 435, 432, 434, 436, + 0 + }; +} + +private static final short _hpricot_scan_indicies[] = init__hpricot_scan_indicies_0(); + + +private static short[] init__hpricot_scan_trans_targs_wi_0() +{ + return new short [] { + 204, 1, 2, 53, 204, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 10, 204, 26, 11, 204, 12, 48, 26, 13, 14, + 15, 16, 17, 18, 19, 30, 20, 21, 20, 21, 22, 23, + 28, 24, 25, 204, 24, 25, 25, 27, 29, 29, 31, 32, + 31, 32, 33, 34, 35, 36, 47, 32, 206, 40, 35, 36, + 47, 37, 34, 206, 40, 46, 38, 39, 43, 38, 39, 43, + 39, 41, 42, 41, 207, 43, 208, 44, 45, 39, 32, 49, + 50, 51, 52, 21, 54, 55, 56, 57, 58, 204, 60, 61, + 60, 204, 61, 204, 63, 62, 66, 204, 63, 64, 66, 204, + 65, 64, 66, 67, 204, 65, 64, 66, 67, 204, 204, 68, + 144, 74, 142, 143, 73, 68, 69, 70, 73, 204, 69, 71, + 73, 204, 65, 72, 71, 73, 74, 204, 65, 72, 74, 75, + 76, 77, 141, 73, 75, 76, 71, 73, 78, 79, 90, 70, + 93, 80, 209, 94, 78, 79, 90, 70, 93, 80, 209, 94, + 79, 69, 82, 84, 209, 81, 79, 83, 82, 84, 85, 209, + 83, 85, 209, 86, 95, 139, 140, 93, 87, 88, 91, 87, + 88, 89, 96, 93, 209, 209, 91, 93, 83, 92, 91, 93, + 95, 209, 83, 92, 95, 90, 97, 98, 117, 108, 90, 128, + 99, 211, 129, 97, 98, 117, 108, 128, 99, 211, 129, 98, + 100, 120, 121, 211, 122, 101, 100, 103, 105, 210, 102, 104, + 103, 105, 106, 210, 104, 106, 210, 107, 138, 113, 136, 137, + 111, 112, 107, 100, 108, 111, 210, 112, 109, 111, 210, 104, + 110, 109, 111, 113, 210, 104, 110, 113, 114, 115, 116, 135, + 111, 114, 115, 109, 111, 108, 118, 128, 211, 119, 134, 118, + 128, 133, 211, 119, 123, 119, 120, 121, 123, 211, 211, 98, + 124, 133, 131, 132, 128, 125, 126, 118, 125, 126, 127, 130, + 128, 211, 117, 98, 100, 79, 120, 121, 211, 122, 100, 119, + 134, 133, 100, 108, 101, 210, 100, 69, 103, 105, 210, 102, + 79, 82, 84, 209, 81, 210, 146, 147, 212, 146, 148, 149, + 213, 204, 151, 152, 153, 154, 155, 156, 157, 158, 200, 159, + 160, 159, 161, 204, 162, 163, 176, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 198, 173, 174, 173, 175, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 193, 188, 191, 189, + 190, 190, 192, 194, 196, 195, 197, 199, 199, 201, 201, 214, + 214, 216, 216, 204, 204, 205, 204, 0, 59, 62, 145, 204, + 204, 150, 214, 214, 215, 214, 202, 216, 216, 217, 216, 203, + 218, 218, 218, 219, 218 + }; +} + +private static final short _hpricot_scan_trans_targs_wi[] = init__hpricot_scan_trans_targs_wi_0(); + + +private static short[] init__hpricot_scan_trans_actions_wi_0() +{ + return new short [] { + 73, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, + 1, 5, 0, 92, 5, 0, 51, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 83, 0, 19, 0, 0, + 0, 3, 86, 75, 0, 21, 0, 0, 3, 0, 3, 83, + 0, 19, 0, 19, 3, 3, 3, 172, 188, 3, 0, 0, + 0, 0, 113, 146, 0, 21, 3, 86, 86, 0, 21, 21, + 0, 21, 0, 0, 146, 0, 146, 0, 0, 3, 113, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 1, 5, + 0, 98, 0, 55, 5, 0, 5, 95, 0, 116, 0, 53, + 11, 0, 110, 11, 168, 0, 180, 23, 0, 122, 57, 3, + 3, 3, 0, 0, 89, 0, 9, 9, 104, 164, 0, 180, + 119, 176, 107, 107, 0, 160, 11, 201, 9, 9, 0, 80, + 80, 0, 0, 152, 3, 3, 196, 156, 3, 80, 80, 77, + 152, 3, 226, 3, 0, 9, 9, 7, 104, 0, 211, 0, + 0, 7, 180, 23, 192, 0, 7, 11, 0, 110, 11, 216, + 0, 0, 149, 3, 3, 7, 0, 89, 3, 3, 196, 80, + 80, 7, 0, 156, 221, 232, 180, 119, 107, 107, 0, 160, + 11, 238, 9, 9, 0, 7, 3, 80, 80, 101, 77, 152, + 3, 226, 3, 0, 9, 9, 7, 104, 0, 211, 0, 0, + 7, 180, 23, 192, 0, 0, 0, 180, 23, 192, 0, 11, + 0, 110, 11, 216, 0, 0, 149, 3, 3, 3, 0, 7, + 89, 3, 0, 9, 9, 104, 211, 0, 180, 119, 221, 107, + 107, 0, 160, 11, 238, 9, 9, 0, 80, 80, 0, 7, + 152, 3, 3, 196, 156, 77, 180, 119, 221, 107, 107, 0, + 160, 11, 238, 0, 0, 11, 0, 110, 11, 216, 149, 7, + 3, 3, 7, 7, 89, 3, 3, 196, 80, 80, 7, 7, + 156, 232, 7, 3, 77, 77, 196, 89, 206, 3, 101, 9, + 9, 0, 80, 80, 3, 232, 3, 77, 196, 89, 206, 3, + 3, 196, 89, 206, 3, 226, 25, 25, 0, 0, 0, 0, + 31, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, + 13, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 15, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, + 17, 0, 0, 3, 3, 0, 0, 3, 0, 3, 0, 37, + 137, 43, 140, 63, 134, 184, 69, 0, 0, 1, 0, 65, + 67, 0, 33, 125, 31, 35, 0, 39, 128, 31, 41, 0, + 45, 131, 143, 0, 47 + }; +} + +private static final short _hpricot_scan_trans_actions_wi[] = init__hpricot_scan_trans_actions_wi_0(); + + +private static short[] init__hpricot_scan_to_state_actions_0() +{ + return new short [] { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, + 27, 0, 27, 0 + }; +} + +private static final short _hpricot_scan_to_state_actions[] = init__hpricot_scan_to_state_actions_0(); + + +private static short[] init__hpricot_scan_from_state_actions_0() +{ + return new short [] { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, + 29, 0, 29, 0 + }; +} + +private static final short _hpricot_scan_from_state_actions[] = init__hpricot_scan_from_state_actions_0(); + + +private static short[] init__hpricot_scan_eof_trans_0() +{ + return new short [] { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 40, 40, 40, 40, 1, 40, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 1, 1, 1, 1, 1, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 408, 410, + 0, 415, 420, 420, 420, 40, 40, 40, 421, 421, 0, 426, + 0, 431, 0, 437 + }; +} + +private static final short _hpricot_scan_eof_trans[] = init__hpricot_scan_eof_trans_0(); + + +static final int hpricot_scan_start = 204; +static final int hpricot_scan_error = -1; + +static final int hpricot_scan_en_html_comment = 214; +static final int hpricot_scan_en_html_cdata = 216; +static final int hpricot_scan_en_html_procins = 218; +static final int hpricot_scan_en_main = 204; + +// line 191 "ext/hpricot_scan/hpricot_scan.java.rl" + +public final static int BUFSIZE=16384; + +private void rb_yield_tokens(IRubyObject sym, IRubyObject tag, IRubyObject attr, IRubyObject raw, boolean taint) { + IRubyObject ary; + if (sym == runtime.newSymbol("text")) { + raw = tag; + } + ary = runtime.newArray(new IRubyObject[]{sym, tag, attr, raw}); + if (taint) { + ary.setTaint(true); + tag.setTaint(true); + attr.setTaint(true); + raw.setTaint(true); + } + block.yield(runtime.getCurrentContext(), ary, null, null, false); +} + + +int cs, act, have = 0, nread = 0, curline = 1, p=-1; +boolean text = false; +int tokstart=-1, tokend; +char[] buf; +Ruby runtime; +IRubyObject attr, bufsize; +IRubyObject[] tag, akey, aval; +int mark_tag, mark_akey, mark_aval; +boolean done = false, ele_open = false; +int buffer_size = 0; +boolean taint = false; +Block block = null; + + +IRubyObject xmldecl, doctype, procins, stag, etag, emptytag, comment, + cdata, sym_text; + +IRubyObject hpricot_scan(IRubyObject recv, IRubyObject port) { + attr = bufsize = runtime.getNil(); + tag = new IRubyObject[]{runtime.getNil()}; + akey = new IRubyObject[]{runtime.getNil()}; + aval = new IRubyObject[]{runtime.getNil()}; + + RubyClass rb_eHpricotParseError = runtime.getModule("Hpricot").getClass("ParseError"); + + taint = port.isTaint(); + if ( !port.respondsTo("read")) { + if ( port.respondsTo("to_str")) { + port = port.callMethod(runtime.getCurrentContext(),"to_str"); + } else { + throw runtime.newArgumentError("bad Hpricot argument, String or IO only please."); + } + } + + buffer_size = BUFSIZE; + if (rubyApi.getInstanceVariable(recv, "@buffer_size") != null) { + bufsize = rubyApi.getInstanceVariable(recv, "@buffer_size"); + if (!bufsize.isNil()) { + buffer_size = RubyNumeric.fix2int(bufsize); + } + } + buf = new char[buffer_size]; + + +// line 819 "ext/hpricot_scan/hpricot_scan.java.java" + { + cs = hpricot_scan_start; + ts = -1; + te = -1; + act = 0; + } +// line 254 "ext/hpricot_scan/hpricot_scan.java.rl" + + while( !done ) { + IRubyObject str; + p = have; + int pe; + int len, space = buffer_size - have; + + if ( space == 0 ) { + /* We've used up the entire buffer storing an already-parsed token + * prefix that must be preserved. Likely caused by super-long attributes. + * See ticket #13. */ + rb_raise(rb_eHpricotParseError, "ran out of buffer space on element <" + tag.toString() + ">, starting on line "+curline+"."); + } + + if (port.respondsTo("read")) { + str = port.callMethod(runtime.getCurrentContext(),"read",runtime.newFixnum(space)); + } else { + str = ((RubyString)port).substr(nread,space); + } + + str = str.convertToString(); + String sss = str.toString(); + char[] chars = sss.toCharArray(); + System.arraycopy(chars,0,buf,p,chars.length); + + len = sss.length(); + nread += len; + + if ( len < space ) { + len++; + done = true; + } + + pe = p + len; + char[] data = buf; + + +// line 864 "ext/hpricot_scan/hpricot_scan.java.java" + { + int _klen; + int _trans = 0; + int _acts; + int _nacts; + int _keys; + int _goto_targ = 0; + + _goto: while (true) { + switch ( _goto_targ ) { + case 0: + if ( p == pe ) { + _goto_targ = 4; + continue _goto; + } +case 1: + _acts = _hpricot_scan_from_state_actions[cs]; + _nacts = (int) _hpricot_scan_actions[_acts++]; + while ( _nacts-- > 0 ) { + switch ( _hpricot_scan_actions[_acts++] ) { + case 21: +// line 1 "ext/hpricot_scan/hpricot_scan.java.rl" + {ts = p;} + break; +// line 889 "ext/hpricot_scan/hpricot_scan.java.java" + } + } + + _match: do { + _keys = _hpricot_scan_key_offsets[cs]; + _trans = _hpricot_scan_index_offsets[cs]; + _klen = _hpricot_scan_single_lengths[cs]; + if ( _klen > 0 ) { + int _lower = _keys; + int _mid; + int _upper = _keys + _klen - 1; + while (true) { + if ( _upper < _lower ) + break; + + _mid = _lower + ((_upper-_lower) >> 1); + if ( data[p] < _hpricot_scan_trans_keys[_mid] ) + _upper = _mid - 1; + else if ( data[p] > _hpricot_scan_trans_keys[_mid] ) + _lower = _mid + 1; + else { + _trans += (_mid - _keys); + break _match; + } + } + _keys += _klen; + _trans += _klen; + } + + _klen = _hpricot_scan_range_lengths[cs]; + if ( _klen > 0 ) { + int _lower = _keys; + int _mid; + int _upper = _keys + (_klen<<1) - 2; + while (true) { + if ( _upper < _lower ) + break; + + _mid = _lower + (((_upper-_lower) >> 1) & ~1); + if ( data[p] < _hpricot_scan_trans_keys[_mid] ) + _upper = _mid - 2; + else if ( data[p] > _hpricot_scan_trans_keys[_mid+1] ) + _lower = _mid + 2; + else { + _trans += ((_mid - _keys)>>1); + break _match; + } + } + _trans += _klen; + } + } while (false); + + _trans = _hpricot_scan_indicies[_trans]; +case 3: + cs = _hpricot_scan_trans_targs_wi[_trans]; + + if ( _hpricot_scan_trans_actions_wi[_trans] != 0 ) { + _acts = _hpricot_scan_trans_actions_wi[_trans]; + _nacts = (int) _hpricot_scan_actions[_acts++]; + while ( _nacts-- > 0 ) + { + switch ( _hpricot_scan_actions[_acts++] ) + { + case 0: +// line 146 "ext/hpricot_scan/hpricot_scan.java.rl" + { + if (text) { + CAT(tag, p); + ELE(sym_text); + text = false; + } + attr = runtime.getNil(); + tag[0] = runtime.getNil(); + mark_tag = -1; + ele_open = true; + } + break; + case 1: +// line 158 "ext/hpricot_scan/hpricot_scan.java.rl" + { mark_tag = p; } + break; + case 2: +// line 159 "ext/hpricot_scan/hpricot_scan.java.rl" + { mark_aval = p; } + break; + case 3: +// line 160 "ext/hpricot_scan/hpricot_scan.java.rl" + { mark_akey = p; } + break; + case 4: +// line 161 "ext/hpricot_scan/hpricot_scan.java.rl" + { SET(tag, p); } + break; + case 5: +// line 163 "ext/hpricot_scan/hpricot_scan.java.rl" + { SET(aval, p); } + break; + case 6: +// line 164 "ext/hpricot_scan/hpricot_scan.java.rl" + { + if (buf[p-1] == '"' || buf[p-1] == '\'') { SET(aval, p-1); } + else { SET(aval, p); } + } + break; + case 7: +// line 168 "ext/hpricot_scan/hpricot_scan.java.rl" + { SET(akey, p); } + break; + case 8: +// line 169 "ext/hpricot_scan/hpricot_scan.java.rl" + { SET(aval, p); ATTR(rb_str_new2("version"), aval); } + break; + case 9: +// line 170 "ext/hpricot_scan/hpricot_scan.java.rl" + { SET(aval, p); ATTR(rb_str_new2("encoding"), aval); } + break; + case 10: +// line 171 "ext/hpricot_scan/hpricot_scan.java.rl" + { SET(aval, p); ATTR(rb_str_new2("standalone"), aval); } + break; + case 11: +// line 172 "ext/hpricot_scan/hpricot_scan.java.rl" + { SET(aval, p); ATTR(rb_str_new2("public_id"), aval); } + break; + case 12: +// line 173 "ext/hpricot_scan/hpricot_scan.java.rl" + { SET(aval, p); ATTR(rb_str_new2("system_id"), aval); } + break; + case 13: +// line 175 "ext/hpricot_scan/hpricot_scan.java.rl" + { + akey[0] = runtime.getNil(); + aval[0] = runtime.getNil(); + mark_akey = -1; + mark_aval = -1; + } + break; + case 14: +// line 182 "ext/hpricot_scan/hpricot_scan.java.rl" + { + ATTR(akey, aval); + } + break; + case 15: +// line 9 "ext/hpricot_scan/hpricot_scan.java.rl" + {curline += 1;} + break; + case 16: +// line 46 "ext/hpricot_scan/hpricot_scan.java.rl" + { TEXT_PASS(); } + break; + case 17: +// line 50 "ext/hpricot_scan/hpricot_scan.java.rl" + { EBLK(comment, 3); {cs = 204; _goto_targ = 2; if (true) continue _goto;} } + break; + case 18: +// line 55 "ext/hpricot_scan/hpricot_scan.java.rl" + { EBLK(cdata, 3); {cs = 204; _goto_targ = 2; if (true) continue _goto;} } + break; + case 19: +// line 60 "ext/hpricot_scan/hpricot_scan.java.rl" + { EBLK(procins, 2); {cs = 204; _goto_targ = 2; if (true) continue _goto;} } + break; + case 22: +// line 1 "ext/hpricot_scan/hpricot_scan.java.rl" + {te = p+1;} + break; + case 23: +// line 50 "ext/hpricot_scan/hpricot_scan.java.rl" + {te = p+1;} + break; + case 24: +// line 51 "ext/hpricot_scan/hpricot_scan.java.rl" + {te = p+1;{ TEXT_PASS(); }} + break; + case 25: +// line 51 "ext/hpricot_scan/hpricot_scan.java.rl" + {te = p;p--;{ TEXT_PASS(); }} + break; + case 26: +// line 51 "ext/hpricot_scan/hpricot_scan.java.rl" + {{p = ((te))-1;}{ TEXT_PASS(); }} + break; + case 27: +// line 55 "ext/hpricot_scan/hpricot_scan.java.rl" + {te = p+1;} + break; + case 28: +// line 56 "ext/hpricot_scan/hpricot_scan.java.rl" + {te = p+1;{ TEXT_PASS(); }} + break; + case 29: +// line 56 "ext/hpricot_scan/hpricot_scan.java.rl" + {te = p;p--;{ TEXT_PASS(); }} + break; + case 30: +// line 56 "ext/hpricot_scan/hpricot_scan.java.rl" + {{p = ((te))-1;}{ TEXT_PASS(); }} + break; + case 31: +// line 60 "ext/hpricot_scan/hpricot_scan.java.rl" + {te = p+1;} + break; + case 32: +// line 61 "ext/hpricot_scan/hpricot_scan.java.rl" + {te = p+1;{ TEXT_PASS(); }} + break; + case 33: +// line 61 "ext/hpricot_scan/hpricot_scan.java.rl" + {te = p;p--;{ TEXT_PASS(); }} + break; + case 34: +// line 66 "ext/hpricot_scan/hpricot_scan.java.rl" + {act = 8;} + break; + case 35: +// line 68 "ext/hpricot_scan/hpricot_scan.java.rl" + {act = 10;} + break; + case 36: +// line 70 "ext/hpricot_scan/hpricot_scan.java.rl" + {act = 12;} + break; + case 37: +// line 73 "ext/hpricot_scan/hpricot_scan.java.rl" + {act = 15;} + break; + case 38: +// line 65 "ext/hpricot_scan/hpricot_scan.java.rl" + {te = p+1;{ ELE(xmldecl); }} + break; + case 39: +// line 66 "ext/hpricot_scan/hpricot_scan.java.rl" + {te = p+1;{ ELE(doctype); }} + break; + case 40: +// line 68 "ext/hpricot_scan/hpricot_scan.java.rl" + {te = p+1;{ ELE(stag); }} + break; + case 41: +// line 69 "ext/hpricot_scan/hpricot_scan.java.rl" + {te = p+1;{ ELE(etag); }} + break; + case 42: +// line 70 "ext/hpricot_scan/hpricot_scan.java.rl" + {te = p+1;{ ELE(emptytag); }} + break; + case 43: +// line 71 "ext/hpricot_scan/hpricot_scan.java.rl" + {te = p+1;{ {cs = 214; _goto_targ = 2; if (true) continue _goto;} }} + break; + case 44: +// line 72 "ext/hpricot_scan/hpricot_scan.java.rl" + {te = p+1;{ {cs = 216; _goto_targ = 2; if (true) continue _goto;} }} + break; + case 45: +// line 73 "ext/hpricot_scan/hpricot_scan.java.rl" + {te = p+1;{ TEXT_PASS(); }} + break; + case 46: +// line 66 "ext/hpricot_scan/hpricot_scan.java.rl" + {te = p;p--;{ ELE(doctype); }} + break; + case 47: +// line 67 "ext/hpricot_scan/hpricot_scan.java.rl" + {te = p;p--;{ {cs = 218; _goto_targ = 2; if (true) continue _goto;} }} + break; + case 48: +// line 73 "ext/hpricot_scan/hpricot_scan.java.rl" + {te = p;p--;{ TEXT_PASS(); }} + break; + case 49: +// line 67 "ext/hpricot_scan/hpricot_scan.java.rl" + {{p = ((te))-1;}{ {cs = 218; _goto_targ = 2; if (true) continue _goto;} }} + break; + case 50: +// line 73 "ext/hpricot_scan/hpricot_scan.java.rl" + {{p = ((te))-1;}{ TEXT_PASS(); }} + break; + case 51: +// line 1 "ext/hpricot_scan/hpricot_scan.java.rl" + { switch( act ) { + case 8: + {{p = ((te))-1;} ELE(doctype); } + break; + case 10: + {{p = ((te))-1;} ELE(stag); } + break; + case 12: + {{p = ((te))-1;} ELE(emptytag); } + break; + case 15: + {{p = ((te))-1;} TEXT_PASS(); } + break; + default: break; + } + } + break; +// line 1188 "ext/hpricot_scan/hpricot_scan.java.java" + } + } + } + +case 2: + _acts = _hpricot_scan_to_state_actions[cs]; + _nacts = (int) _hpricot_scan_actions[_acts++]; + while ( _nacts-- > 0 ) { + switch ( _hpricot_scan_actions[_acts++] ) { + case 20: +// line 1 "ext/hpricot_scan/hpricot_scan.java.rl" + {ts = -1;} + break; +// line 1202 "ext/hpricot_scan/hpricot_scan.java.java" + } + } + + if ( ++p != pe ) { + _goto_targ = 1; + continue _goto; + } +case 4: + if ( p == eof ) + { + if ( _hpricot_scan_eof_trans[cs] > 0 ) { + _trans = _hpricot_scan_eof_trans[cs] - 1; + _goto_targ = 3; + continue _goto; + } + } + +case 5: + } + break; } + } +// line 291 "ext/hpricot_scan/hpricot_scan.java.rl" + + if ( cs == hpricot_scan_error ) { + if(!tag[0].isNil()) { + rb_raise(rb_eHpricotParseError, "parse error on element <"+tag.toString()+">, starting on line "+curline+".\n" + NO_WAY_SERIOUSLY); + } else { + rb_raise(rb_eHpricotParseError, "parse error on line "+curline+".\n" + NO_WAY_SERIOUSLY); + } + } + + if ( done && ele_open ) { + ele_open = false; + if(tokstart > -1) { + mark_tag = tokstart; + tokstart = -1; + text = true; + } + } + + if(tokstart == -1) { + have = 0; + /* text nodes have no tokstart because each byte is parsed alone */ + if(mark_tag != -1 && text) { + if (done) { + if(mark_tag < p-1) { + CAT(tag, p-1); + ELE(sym_text); + } + } else { + CAT(tag, p); + } + } + mark_tag = 0; + } else { + have = pe - tokstart; + System.arraycopy(buf,tokstart,buf,0,have); + SLIDE(tag); + SLIDE(akey); + SLIDE(aval); + tokend = (tokend - tokstart); + tokstart = 0; + } + } + return runtime.getNil(); +} + +public static IRubyObject __hpricot_scan(IRubyObject recv, IRubyObject port, Block block) { + Ruby runtime = recv.getRuntime(); + HpricotScanService service = new HpricotScanService(); + service.runtime = runtime; + service.xmldecl = runtime.newSymbol("xmldecl"); + service.doctype = runtime.newSymbol("doctype"); + service.procins = runtime.newSymbol("procins"); + service.stag = runtime.newSymbol("stag"); + service.etag = runtime.newSymbol("etag"); + service.emptytag = runtime.newSymbol("emptytag"); + service.comment = runtime.newSymbol("comment"); + service.cdata = runtime.newSymbol("cdata"); + service.sym_text = runtime.newSymbol("text"); + service.block = block; + return service.hpricot_scan(recv, port); +} + + +public boolean basicLoad(final Ruby runtime) throws IOException { + Init_hpricot_scan(runtime); + return true; +} + +public static void Init_hpricot_scan(Ruby runtime) { + RubyModule mHpricot = runtime.defineModule("Hpricot"); + mHpricot.getMetaClass().attr_accessor(new IRubyObject[]{runtime.newSymbol("buffer_size")}); + CallbackFactory fact = runtime.callbackFactory(HpricotScanService.class); + mHpricot.getMetaClass().defineMethod("scan",fact.getSingletonMethod("__hpricot_scan",IRubyObject.class)); + mHpricot.defineClassUnder("ParseError",runtime.getClass("Exception"),runtime.getClass("Exception").getAllocator()); + rubyApi = JavaEmbedUtils.newObjectAdapter(); +} +} diff --git a/vendor/gems/hpricot-0.6/ext/hpricot_scan/hpricot_scan.java.rl b/vendor/gems/hpricot-0.6.161/ext/hpricot_scan/hpricot_scan.java.rl similarity index 97% rename from vendor/gems/hpricot-0.6/ext/hpricot_scan/hpricot_scan.java.rl rename to vendor/gems/hpricot-0.6.161/ext/hpricot_scan/hpricot_scan.java.rl index b5860a8..e38a39e 100644 --- a/vendor/gems/hpricot-0.6/ext/hpricot_scan/hpricot_scan.java.rl +++ b/vendor/gems/hpricot-0.6.161/ext/hpricot_scan/hpricot_scan.java.rl @@ -6,7 +6,9 @@ import org.jruby.RubyClass; import org.jruby.RubyHash; import org.jruby.RubyModule; import org.jruby.RubyNumeric; +import org.jruby.RubyObjectAdapter; import org.jruby.RubyString; +import org.jruby.javasupport.JavaEmbedUtils; import org.jruby.runtime.Block; import org.jruby.runtime.CallbackFactory; import org.jruby.runtime.builtin.IRubyObject; @@ -15,6 +17,7 @@ import org.jruby.runtime.load.BasicLibraryService; public class HpricotScanService implements BasicLibraryService { public static String NO_WAY_SERIOUSLY="*** This should not happen, please send a bug report with the HTML you're parsing to why@whytheluckystiff.net. So sorry!"; + private static RubyObjectAdapter rubyApi; public void ELE(IRubyObject N) { if (tokend > tokstart || text) { @@ -239,8 +242,8 @@ IRubyObject hpricot_scan(IRubyObject recv, IRubyObject port) { } buffer_size = BUFSIZE; - if (recv.getInstanceVariable("@buffer_size") != null) { - bufsize = recv.getInstanceVariable("@buffer_size"); + if (rubyApi.getInstanceVariable(recv, "@buffer_size") != null) { + bufsize = rubyApi.getInstanceVariable(recv, "@buffer_size"); if (!bufsize.isNil()) { buffer_size = RubyNumeric.fix2int(bufsize); } @@ -359,5 +362,6 @@ public static void Init_hpricot_scan(Ruby runtime) { CallbackFactory fact = runtime.callbackFactory(HpricotScanService.class); mHpricot.getMetaClass().defineMethod("scan",fact.getSingletonMethod("__hpricot_scan",IRubyObject.class)); mHpricot.defineClassUnder("ParseError",runtime.getClass("Exception"),runtime.getClass("Exception").getAllocator()); + rubyApi = JavaEmbedUtils.newObjectAdapter(); } } diff --git a/vendor/gems/hpricot-0.6/ext/hpricot_scan/hpricot_scan.rl b/vendor/gems/hpricot-0.6.161/ext/hpricot_scan/hpricot_scan.rl similarity index 94% rename from vendor/gems/hpricot-0.6/ext/hpricot_scan/hpricot_scan.rl rename to vendor/gems/hpricot-0.6.161/ext/hpricot_scan/hpricot_scan.rl index df6d114..94477e2 100644 --- a/vendor/gems/hpricot-0.6/ext/hpricot_scan/hpricot_scan.rl +++ b/vendor/gems/hpricot-0.6.161/ext/hpricot_scan/hpricot_scan.rl @@ -8,6 +8,12 @@ */ #include +#ifndef RARRAY_LEN +#define RARRAY_LEN(arr) RARRAY(arr)->len +#define RSTRING_LEN(str) RSTRING(str)->len +#define RSTRING_PTR(str) RSTRING(str)->ptr +#endif + #define NO_WAY_SERIOUSLY "*** This should not happen, please send a bug report with the HTML you're parsing to why@whytheluckystiff.net. So sorry!" static VALUE sym_xmldecl, sym_doctype, sym_procins, sym_stag, sym_etag, sym_emptytag, sym_comment, @@ -169,7 +175,7 @@ VALUE hpricot_scan(VALUE self, VALUE port) /* We've used up the entire buffer storing an already-parsed token * prefix that must be preserved. Likely caused by super-long attributes. * See ticket #13. */ - rb_raise(rb_eHpricotParseError, "ran out of buffer space on element <%s>, starting on line %d.", RSTRING(tag)->ptr, curline); + rb_raise(rb_eHpricotParseError, "ran out of buffer space on element <%s>, starting on line %d.", RSTRING_PTR(tag), curline); } if ( rb_respond_to( port, s_read ) ) @@ -182,8 +188,8 @@ VALUE hpricot_scan(VALUE self, VALUE port) } StringValue(str); - memcpy( p, RSTRING(str)->ptr, RSTRING(str)->len ); - len = RSTRING(str)->len; + memcpy( p, RSTRING_PTR(str), RSTRING_LEN(str) ); + len = RSTRING_LEN(str); nread += len; /* If this is the last buffer, tack on an EOF. */ @@ -199,7 +205,7 @@ VALUE hpricot_scan(VALUE self, VALUE port) free(buf); if ( !NIL_P(tag) ) { - rb_raise(rb_eHpricotParseError, "parse error on element <%s>, starting on line %d.\n" NO_WAY_SERIOUSLY, RSTRING(tag)->ptr, curline); + rb_raise(rb_eHpricotParseError, "parse error on element <%s>, starting on line %d.\n" NO_WAY_SERIOUSLY, RSTRING_PTR(tag), curline); } else { diff --git a/vendor/gems/hpricot-0.6/extras/mingw-rbconfig.rb b/vendor/gems/hpricot-0.6.161/extras/mingw-rbconfig.rb similarity index 100% rename from vendor/gems/hpricot-0.6/extras/mingw-rbconfig.rb rename to vendor/gems/hpricot-0.6.161/extras/mingw-rbconfig.rb diff --git a/vendor/gems/hpricot-0.6/lib/hpricot.rb b/vendor/gems/hpricot-0.6.161/lib/hpricot.rb similarity index 100% rename from vendor/gems/hpricot-0.6/lib/hpricot.rb rename to vendor/gems/hpricot-0.6.161/lib/hpricot.rb diff --git a/vendor/gems/hpricot-0.6/lib/hpricot/blankslate.rb b/vendor/gems/hpricot-0.6.161/lib/hpricot/blankslate.rb similarity index 100% rename from vendor/gems/hpricot-0.6/lib/hpricot/blankslate.rb rename to vendor/gems/hpricot-0.6.161/lib/hpricot/blankslate.rb diff --git a/vendor/gems/hpricot-0.6/lib/hpricot/builder.rb b/vendor/gems/hpricot-0.6.161/lib/hpricot/builder.rb similarity index 90% rename from vendor/gems/hpricot-0.6/lib/hpricot/builder.rb rename to vendor/gems/hpricot-0.6.161/lib/hpricot/builder.rb index 37c31e0..216603a 100644 --- a/vendor/gems/hpricot-0.6/lib/hpricot/builder.rb +++ b/vendor/gems/hpricot-0.6.161/lib/hpricot/builder.rb @@ -1,8 +1,23 @@ require 'hpricot/tags' -require 'hpricot/xchar' +require 'fast_xs' require 'hpricot/blankslate' module Hpricot + PREDEFINED = { + 34 => '"', # quotation mark + 38 => '&', # ampersand + 60 => '<', # left angle bracket + 62 => '>' # right angle bracket + } + PREDEFINED_U = PREDEFINED.inject({}) { |hsh, (k, v)| hsh[v] = k; hsh } + + # XML unescape + def self.uxs(str) + str.to_s. + gsub(/\&\w+;/) { |x| (PREDEFINED_U[x] || ??).chr }. + gsub(/\&\#(\d+);/) { [$1.to_i].pack("U*") } + end + def self.build(ele = Doc.new, assigns = {}, &blk) ele.extend Builder assigns.each do |k, v| @@ -32,7 +47,7 @@ def self.set(option, value) # Write a +string+ to the HTML stream, making sure to escape it. def text!(string) - @children << Text.new(Hpricot.xs(string)) + @children << Text.new(string.fast_xs) end # Write a +string+ to the HTML stream without escaping it. @@ -75,16 +90,16 @@ def tag!(tag, *args, &block) # turn arguments into children or attributes childs = [] attrs = args.grep(Hash) - childs.concat((args - attrs).map do |x| + childs.concat((args - attrs).flatten.map do |x| if x.respond_to? :to_html Hpricot.make(x.to_html) elsif x - Text.new(Hpricot.xs(x)) + Text.new(x.fast_xs) end end.flatten) attrs = attrs.inject({}) do |hsh, ath| ath.each do |k, v| - hsh[k] = Hpricot.xs(v.to_s) if v + hsh[k] = v.to_s.fast_xs if v end hsh end diff --git a/vendor/gems/hpricot-0.6/lib/hpricot/elements.rb b/vendor/gems/hpricot-0.6.161/lib/hpricot/elements.rb similarity index 97% rename from vendor/gems/hpricot-0.6/lib/hpricot/elements.rb rename to vendor/gems/hpricot-0.6.161/lib/hpricot/elements.rb index 26c0636..83fcc9e 100644 --- a/vendor/gems/hpricot-0.6/lib/hpricot/elements.rb +++ b/vendor/gems/hpricot-0.6.161/lib/hpricot/elements.rb @@ -130,25 +130,25 @@ def empty # Add to the end of the contents inside each element in this list. # Pass in an HTML +str+, which is turned into Hpricot elements. def append(str = nil, &blk) - each { |x| x.html(x.children + Hpricot.make(str, &blk)) } + each { |x| x.html(x.children + x.make(str, &blk)) } end # Add to the start of the contents inside each element in this list. # Pass in an HTML +str+, which is turned into Hpricot elements. def prepend(str = nil, &blk) - each { |x| x.html(Hpricot.make(str, &blk) + x.children) } + each { |x| x.html(x.make(str, &blk) + x.children) } end # Add some HTML just previous to each element in this list. # Pass in an HTML +str+, which is turned into Hpricot elements. def before(str = nil, &blk) - each { |x| x.parent.insert_before Hpricot.make(str, &blk), x } + each { |x| x.parent.insert_before x.make(str, &blk), x } end # Just after each element in this list, add some HTML. # Pass in an HTML +str+, which is turned into Hpricot elements. def after(str = nil, &blk) - each { |x| x.parent.insert_after Hpricot.make(str, &blk), x } + each { |x| x.parent.insert_after x.make(str, &blk), x } end # Wraps each element in the list inside the element created by HTML +str+. @@ -161,7 +161,7 @@ def after(str = nil, &blk) # This code wraps every link on the page inside a +div.link+ and a +div.link_inner+ nest. def wrap(str = nil, &blk) each do |x| - wrap = Hpricot.make(str, &blk) + wrap = x.make(str, &blk) nest = wrap.detect { |w| w.respond_to? :children } unless nest raise Exception, "No wrapping element found." @@ -261,7 +261,7 @@ def remove_class name = nil self end - ATTR_RE = %r!\[ *(?:(@)([\w\(\)-]+)|([\w\(\)-]+\(\))) *([~\!\|\*$\^=]*) *'?"?([^\]'"]*)'?"? *\]!i + ATTR_RE = %r!\[ *(?:(@)([\w\(\)-]+)|([\w\(\)-]+\(\))) *([~\!\|\*$\^=]*) *'?"?([^'"]*)'?"? *\]!i BRACK_RE = %r!(\[) *([^\]]*) *\]+!i FUNC_RE = %r!(:)?([a-zA-Z0-9\*_-]*)\( *[\"']?([^ \)]*?)['\"]? *\)! CUST_RE = %r!(:)([a-zA-Z0-9\*_-]*)()! diff --git a/vendor/gems/hpricot-0.6/lib/hpricot/htmlinfo.rb b/vendor/gems/hpricot-0.6.161/lib/hpricot/htmlinfo.rb similarity index 100% rename from vendor/gems/hpricot-0.6/lib/hpricot/htmlinfo.rb rename to vendor/gems/hpricot-0.6.161/lib/hpricot/htmlinfo.rb diff --git a/vendor/gems/hpricot-0.6/lib/hpricot/inspect.rb b/vendor/gems/hpricot-0.6.161/lib/hpricot/inspect.rb similarity index 100% rename from vendor/gems/hpricot-0.6/lib/hpricot/inspect.rb rename to vendor/gems/hpricot-0.6.161/lib/hpricot/inspect.rb diff --git a/vendor/gems/hpricot-0.6/lib/hpricot/modules.rb b/vendor/gems/hpricot-0.6.161/lib/hpricot/modules.rb similarity index 100% rename from vendor/gems/hpricot-0.6/lib/hpricot/modules.rb rename to vendor/gems/hpricot-0.6.161/lib/hpricot/modules.rb diff --git a/vendor/gems/hpricot-0.6/lib/hpricot/parse.rb b/vendor/gems/hpricot-0.6.161/lib/hpricot/parse.rb similarity index 98% rename from vendor/gems/hpricot-0.6/lib/hpricot/parse.rb rename to vendor/gems/hpricot-0.6.161/lib/hpricot/parse.rb index 47ed217..28fc364 100644 --- a/vendor/gems/hpricot-0.6/lib/hpricot/parse.rb +++ b/vendor/gems/hpricot-0.6.161/lib/hpricot/parse.rb @@ -12,13 +12,14 @@ class EncodingError < StandardError; end # Hpricot.parse parses input and return a document tree. # represented by Hpricot::Doc. def Hpricot.parse(input = nil, opts = {}, &blk) - Doc.new(make(input, opts, &blk)) + Doc.new(make(input, opts, &blk), opts) end # Hpricot::XML parses input, disregarding all the HTML rules # and returning a document tree. - def Hpricot.XML(input, opts = {}) - Doc.new(make(input, opts.merge(:xml => true))) + def Hpricot.XML(input = nil, opts = {}, &blk) + opts.merge! :xml => true + Doc.new(make(input, opts, &blk), opts) end # :stopdoc: diff --git a/vendor/gems/hpricot-0.6/lib/hpricot/tag.rb b/vendor/gems/hpricot-0.6.161/lib/hpricot/tag.rb similarity index 96% rename from vendor/gems/hpricot-0.6/lib/hpricot/tag.rb rename to vendor/gems/hpricot-0.6.161/lib/hpricot/tag.rb index 7fe5479..35f9b4f 100644 --- a/vendor/gems/hpricot-0.6/lib/hpricot/tag.rb +++ b/vendor/gems/hpricot-0.6.161/lib/hpricot/tag.rb @@ -3,8 +3,9 @@ module Hpricot class Doc attr_accessor :children - def initialize(children = []) + def initialize(children = [], options = {}) @children = children ? children.each { |c| c.parent = self } : [] + @options = options end def output(out, opts = {}) @children.each do |n| @@ -12,6 +13,9 @@ def output(out, opts = {}) end out end + def make(input = nil, &blk) + Hpricot.make(input, @options, &blk) + end def altered!; end end @@ -100,7 +104,7 @@ def attributes_as_html if @raw_attributes @raw_attributes.map do |aname, aval| " #{aname}" + - (aval ? "=\"#{aval}\"" : "") + (aval ? "=#{html_quote aval}" : "") end.join end end diff --git a/vendor/gems/hpricot-0.6/lib/hpricot/tags.rb b/vendor/gems/hpricot-0.6.161/lib/hpricot/tags.rb similarity index 100% rename from vendor/gems/hpricot-0.6/lib/hpricot/tags.rb rename to vendor/gems/hpricot-0.6.161/lib/hpricot/tags.rb diff --git a/vendor/gems/hpricot-0.6/lib/hpricot/traverse.rb b/vendor/gems/hpricot-0.6.161/lib/hpricot/traverse.rb similarity index 97% rename from vendor/gems/hpricot-0.6/lib/hpricot/traverse.rb rename to vendor/gems/hpricot-0.6.161/lib/hpricot/traverse.rb index 4ccb853..d2e68ef 100644 --- a/vendor/gems/hpricot-0.6/lib/hpricot/traverse.rb +++ b/vendor/gems/hpricot-0.6.161/lib/hpricot/traverse.rb @@ -20,6 +20,16 @@ def comment?() Comment::Trav === self end # Is this object a stranded end tag? def bogusetag?() BogusETag::Trav === self end + # Parses an HTML string, making an HTML fragment based on + # the options used to create the container document. + def make(input = nil, &blk) + if parent and parent.respond_to? :make + parent.make(input, &blk) + else + Hpricot.make(input, &blk) + end + end + # Builds an HTML string from this node and its contents. # If you need to write to a stream, try calling output(io) # as a method on this object. @@ -109,12 +119,12 @@ def following # Adds elements immediately after this element, contained in the +html+ string. def after(html = nil, &blk) - parent.insert_after(Hpricot.make(html, &blk), self) + parent.insert_after(make(html, &blk), self) end # Adds elements immediately before this element, contained in the +html+ string. def before(html = nil, &blk) - parent.insert_before(Hpricot.make(html, &blk), self) + parent.insert_before(make(html, &blk), self) end @@ -122,7 +132,7 @@ def before(html = nil, &blk) # in the +html+ string. def swap(html = nil, &blk) parent.altered! - parent.replace_child(self, Hpricot.make(html, &blk)) + parent.replace_child(self, make(html, &blk)) end def get_subnode(*indexes) @@ -158,7 +168,7 @@ def html(inner = nil, &blk) when Array self.children = inner else - self.children = Hpricot.make(inner, &blk) + self.children = make(inner, &blk) end reparent self.children else @@ -513,8 +523,9 @@ def get_element_by_id(id) def get_elements_by_tag_name(*a) list = Elements[] + a.delete("*") traverse_element(*a.map { |tag| [tag, "{http://www.w3.org/1999/xhtml}#{tag}"] }.flatten) do |e| - list << e + list << e if e.elem? end list end @@ -806,7 +817,7 @@ def get_attribute(name) def set_attribute(name, val) altered! self.raw_attributes ||= {} - self.raw_attributes[name.to_s] = Hpricot.xs(val) + self.raw_attributes[name.to_s] = val.fast_xs end alias_method :[]=, :set_attribute def remove_attribute(name) diff --git a/vendor/gems/hpricot-0.6/lib/hpricot/xchar.rb b/vendor/gems/hpricot-0.6.161/lib/hpricot/xchar.rb similarity index 100% rename from vendor/gems/hpricot-0.6/lib/hpricot/xchar.rb rename to vendor/gems/hpricot-0.6.161/lib/hpricot/xchar.rb diff --git a/vendor/gems/hpricot-0.6/test/files/basic.xhtml b/vendor/gems/hpricot-0.6.161/test/files/basic.xhtml similarity index 100% rename from vendor/gems/hpricot-0.6/test/files/basic.xhtml rename to vendor/gems/hpricot-0.6.161/test/files/basic.xhtml diff --git a/vendor/gems/hpricot-0.6/test/files/boingboing.html b/vendor/gems/hpricot-0.6.161/test/files/boingboing.html similarity index 100% rename from vendor/gems/hpricot-0.6/test/files/boingboing.html rename to vendor/gems/hpricot-0.6.161/test/files/boingboing.html diff --git a/vendor/gems/hpricot-0.6/test/files/cy0.html b/vendor/gems/hpricot-0.6.161/test/files/cy0.html similarity index 100% rename from vendor/gems/hpricot-0.6/test/files/cy0.html rename to vendor/gems/hpricot-0.6.161/test/files/cy0.html diff --git a/vendor/gems/hpricot-0.6/test/files/immob.html b/vendor/gems/hpricot-0.6.161/test/files/immob.html similarity index 100% rename from vendor/gems/hpricot-0.6/test/files/immob.html rename to vendor/gems/hpricot-0.6.161/test/files/immob.html diff --git a/vendor/gems/hpricot-0.6/test/files/pace_application.html b/vendor/gems/hpricot-0.6.161/test/files/pace_application.html similarity index 100% rename from vendor/gems/hpricot-0.6/test/files/pace_application.html rename to vendor/gems/hpricot-0.6.161/test/files/pace_application.html diff --git a/vendor/gems/hpricot-0.6/test/files/tenderlove.html b/vendor/gems/hpricot-0.6.161/test/files/tenderlove.html similarity index 100% rename from vendor/gems/hpricot-0.6/test/files/tenderlove.html rename to vendor/gems/hpricot-0.6.161/test/files/tenderlove.html diff --git a/vendor/gems/hpricot-0.6/test/files/uswebgen.html b/vendor/gems/hpricot-0.6.161/test/files/uswebgen.html similarity index 100% rename from vendor/gems/hpricot-0.6/test/files/uswebgen.html rename to vendor/gems/hpricot-0.6.161/test/files/uswebgen.html diff --git a/vendor/gems/hpricot-0.6/test/files/utf8.html b/vendor/gems/hpricot-0.6.161/test/files/utf8.html similarity index 100% rename from vendor/gems/hpricot-0.6/test/files/utf8.html rename to vendor/gems/hpricot-0.6.161/test/files/utf8.html diff --git a/vendor/gems/hpricot-0.6/test/files/week9.html b/vendor/gems/hpricot-0.6.161/test/files/week9.html similarity index 100% rename from vendor/gems/hpricot-0.6/test/files/week9.html rename to vendor/gems/hpricot-0.6.161/test/files/week9.html diff --git a/vendor/gems/hpricot-0.6/test/files/why.xml b/vendor/gems/hpricot-0.6.161/test/files/why.xml similarity index 100% rename from vendor/gems/hpricot-0.6/test/files/why.xml rename to vendor/gems/hpricot-0.6.161/test/files/why.xml diff --git a/vendor/gems/hpricot-0.6/test/load_files.rb b/vendor/gems/hpricot-0.6.161/test/load_files.rb similarity index 100% rename from vendor/gems/hpricot-0.6/test/load_files.rb rename to vendor/gems/hpricot-0.6.161/test/load_files.rb diff --git a/vendor/gems/hpricot-0.6/test/test_alter.rb b/vendor/gems/hpricot-0.6.161/test/test_alter.rb similarity index 83% rename from vendor/gems/hpricot-0.6/test/test_alter.rb rename to vendor/gems/hpricot-0.6.161/test/test_alter.rb index 69e9568..d220299 100644 --- a/vendor/gems/hpricot-0.6/test/test_alter.rb +++ b/vendor/gems/hpricot-0.6.161/test/test_alter.rb @@ -58,6 +58,18 @@ def test_remove_all_classes assert_changed(@basic, "p[@class]", all_c2) { |p| p['class'].nil? } end + def test_xml_casing + doc = Hpricot.XML("text") + (doc/:root/:wildCat).after("gravity") + assert_equal doc.to_s, "textgravity" + + frag = Hpricot.XML do + b { i "A bit of HTML" } + end + (frag/:b).after("gravity") + assert_equal frag.to_s, "A bit of HTMLgravity" + end + def assert_changed original, selector, set, &block assert set.all?(&block) assert Hpricot(original.to_html).search(selector).all?(&block) diff --git a/vendor/gems/hpricot-0.6/test/test_builder.rb b/vendor/gems/hpricot-0.6.161/test/test_builder.rb similarity index 63% rename from vendor/gems/hpricot-0.6/test/test_builder.rb rename to vendor/gems/hpricot-0.6.161/test/test_builder.rb index 3cfe759..57be7e9 100644 --- a/vendor/gems/hpricot-0.6/test/test_builder.rb +++ b/vendor/gems/hpricot-0.6.161/test/test_builder.rb @@ -21,4 +21,17 @@ def test_latin1_entities assert_equal "€•", doc.to_html assert_equal "\342\202\254\342\200\242", doc.at("text()").to_s end + + def test_escaping_attrs + text = "Some text" + assert_equal "Some text", + Hpricot(text).to_html + end + + def test_korean_utf8_entities + # a = '한글' + a = "\xed\x95\x9c\xea\xb8\x80" + doc = Hpricot() { b a } + assert_equal "한글", doc.to_html + end end diff --git a/vendor/gems/hpricot-0.6/test/test_parser.rb b/vendor/gems/hpricot-0.6.161/test/test_parser.rb similarity index 97% rename from vendor/gems/hpricot-0.6/test/test_parser.rb rename to vendor/gems/hpricot-0.6.161/test/test_parser.rb index 88c7681..4c77adf 100644 --- a/vendor/gems/hpricot-0.6/test/test_parser.rb +++ b/vendor/gems/hpricot-0.6.161/test/test_parser.rb @@ -47,6 +47,13 @@ def test_get_element_by_tag_name assert_equal 'link1', @basic.get_elements_by_tag_name('a')[0].get_attribute('id') assert_equal 'link1', @basic.get_elements_by_tag_name('body')[0].get_element_by_id('link1').get_attribute('id') end + + def test_get_elements_by_tag_name_star + simple = Hpricot.parse("

First

Second

") + assert_equal 3, simple.get_elements_by_tag_name("*").size + assert_equal 1, simple.get_elements_by_tag_name("div").size + assert_equal 2, simple.get_elements_by_tag_name("p").size + end def test_output_basic @basic = Hpricot.parse(TestFiles::BASIC) diff --git a/vendor/gems/hpricot-0.6.161/test/test_paths.rb b/vendor/gems/hpricot-0.6.161/test/test_paths.rb new file mode 100644 index 0000000..4313c9b --- /dev/null +++ b/vendor/gems/hpricot-0.6.161/test/test_paths.rb @@ -0,0 +1,25 @@ +#!/usr/bin/env ruby + +require 'test/unit' +require 'hpricot' +require 'load_files' + +class TestParser < Test::Unit::TestCase + def test_roundtrip + @basic = Hpricot.parse(TestFiles::BASIC) + %w[link link[2] body #link1 a p.ohmy].each do |css_sel| + ele = @basic.at(css_sel) + assert_equal ele, @basic.at(ele.css_path) + assert_equal ele, @basic.at(ele.xpath) + end + end + def test_attr_brackets + doc = Hpricot('') + assert_equal 1, (doc/'input[@name^="vendor[porkpies]"]').length + assert_equal 1, (doc/'input[@name="vendor[porkpies]"]').length + assert_equal 0, (doc/'input[@name$="]]]]]"]').length + + doc = Hpricot('') + assert_equal 1, (doc/'input[@name^="vendor[porkpies][meaty]"]').length + end +end diff --git a/vendor/gems/hpricot-0.6/test/test_preserved.rb b/vendor/gems/hpricot-0.6.161/test/test_preserved.rb similarity index 100% rename from vendor/gems/hpricot-0.6/test/test_preserved.rb rename to vendor/gems/hpricot-0.6.161/test/test_preserved.rb diff --git a/vendor/gems/hpricot-0.6/test/test_xml.rb b/vendor/gems/hpricot-0.6.161/test/test_xml.rb similarity index 100% rename from vendor/gems/hpricot-0.6/test/test_xml.rb rename to vendor/gems/hpricot-0.6.161/test/test_xml.rb diff --git a/vendor/gems/hpricot-0.6/ext/hpricot_scan/HpricotScanService.java b/vendor/gems/hpricot-0.6/ext/hpricot_scan/HpricotScanService.java deleted file mode 100644 index efbc941..0000000 --- a/vendor/gems/hpricot-0.6/ext/hpricot_scan/HpricotScanService.java +++ /dev/null @@ -1,1340 +0,0 @@ - -import java.io.IOException; - -import org.jruby.Ruby; -import org.jruby.RubyClass; -import org.jruby.RubyHash; -import org.jruby.RubyModule; -import org.jruby.RubyNumeric; -import org.jruby.RubyString; -import org.jruby.runtime.Block; -import org.jruby.runtime.CallbackFactory; -import org.jruby.runtime.builtin.IRubyObject; -import org.jruby.exceptions.RaiseException; -import org.jruby.runtime.load.BasicLibraryService; - -public class HpricotScanService implements BasicLibraryService { - public static String NO_WAY_SERIOUSLY="*** This should not happen, please send a bug report with the HTML you're parsing to why@whytheluckystiff.net. So sorry!"; - - public void ELE(IRubyObject N) { - if (tokend > tokstart || text) { - IRubyObject raw_string = runtime.getNil(); - ele_open = false; text = false; - if (tokstart != -1 && N != cdata && N != sym_text && N != procins && N != comment) { - raw_string = runtime.newString(new String(buf,tokstart,tokend-tokstart)); - } - rb_yield_tokens(N, tag[0], attr, raw_string, taint); - } - } - - public void SET(IRubyObject[] N, int E) { - int mark = 0; - if(N == tag) { - if(mark_tag == -1 || E == mark_tag) { - tag[0] = runtime.newString(""); - } else if(E > mark_tag) { - tag[0] = runtime.newString(new String(buf,mark_tag, E-mark_tag)); - } - } else if(N == akey) { - if(mark_akey == -1 || E == mark_akey) { - akey[0] = runtime.newString(""); - } else if(E > mark_akey) { - akey[0] = runtime.newString(new String(buf,mark_akey, E-mark_akey)); - } - } else if(N == aval) { - if(mark_aval == -1 || E == mark_aval) { - aval[0] = runtime.newString(""); - } else if(E > mark_aval) { - aval[0] = runtime.newString(new String(buf,mark_aval, E-mark_aval)); - } - } - } - - public void CAT(IRubyObject[] N, int E) { - if(N[0].isNil()) { - SET(N,E); - } else { - int mark = 0; - if(N == tag) { - mark = mark_tag; - } else if(N == akey) { - mark = mark_akey; - } else if(N == aval) { - mark = mark_aval; - } - ((RubyString)(N[0])).append(runtime.newString(new String(buf, mark, E-mark))); - } - } - - public void SLIDE(Object N) { - int mark = 0; - if(N == tag) { - mark = mark_tag; - } else if(N == akey) { - mark = mark_akey; - } else if(N == aval) { - mark = mark_aval; - } - if(mark > tokstart) { - if(N == tag) { - mark_tag -= tokstart; - } else if(N == akey) { - mark_akey -= tokstart; - } else if(N == aval) { - mark_aval -= tokstart; - } - } - } - - public void ATTR(IRubyObject K, IRubyObject V) { - if(!K.isNil()) { - if(attr.isNil()) { - attr = RubyHash.newHash(runtime); - } - ((RubyHash)attr).aset(K,V); - } - } - - public void ATTR(IRubyObject[] K, IRubyObject V) { - ATTR(K[0],V); - } - - public void ATTR(IRubyObject K, IRubyObject[] V) { - ATTR(K,V[0]); - } - - public void ATTR(IRubyObject[] K, IRubyObject[] V) { - ATTR(K[0],V[0]); - } - - public void TEXT_PASS() { - if(!text) { - if(ele_open) { - ele_open = false; - if(tokstart > -1) { - mark_tag = tokstart; - } - } else { - mark_tag = p; - } - attr = runtime.getNil(); - tag[0] = runtime.getNil(); - text = true; - } - } - - public void EBLK(IRubyObject N, int T) { - CAT(tag, p - T + 1); - ELE(N); - } - - - public void rb_raise(RubyClass error, String message) { - throw new RaiseException(runtime, error, message, true); - } - - public IRubyObject rb_str_new2(String s) { - return runtime.newString(s); - } - - - - -static final byte[] _hpricot_scan_actions = { - 0, 1, 1, 1, 2, 1, 4, 1, - 5, 1, 6, 1, 7, 1, 8, 1, - 9, 1, 10, 1, 11, 1, 12, 1, - 14, 1, 16, 1, 20, 1, 21, 1, - 22, 1, 24, 1, 25, 1, 26, 1, - 28, 1, 29, 1, 30, 1, 32, 1, - 33, 1, 38, 1, 39, 1, 40, 1, - 41, 1, 42, 1, 43, 1, 44, 1, - 45, 1, 46, 1, 47, 1, 48, 1, - 49, 1, 50, 2, 2, 5, 2, 2, - 6, 2, 2, 11, 2, 2, 12, 2, - 2, 14, 2, 4, 39, 2, 4, 40, - 2, 4, 41, 2, 5, 2, 2, 6, - 14, 2, 7, 6, 2, 7, 14, 2, - 11, 12, 2, 13, 3, 2, 14, 6, - 2, 14, 40, 2, 15, 24, 2, 15, - 28, 2, 15, 32, 2, 15, 45, 2, - 17, 23, 2, 18, 27, 2, 19, 31, - 2, 22, 34, 2, 22, 36, 3, 2, - 6, 14, 3, 2, 14, 6, 3, 6, - 7, 14, 3, 6, 14, 40, 3, 7, - 14, 40, 3, 14, 6, 40, 3, 14, - 13, 3, 3, 22, 0, 37, 3, 22, - 2, 34, 3, 22, 14, 35, 4, 2, - 14, 13, 3, 4, 6, 7, 14, 40, - 4, 22, 2, 14, 35, 4, 22, 6, - 14, 35, 4, 22, 7, 14, 35, 4, - 22, 14, 6, 35, 5, 22, 2, 6, - 14, 35, 5, 22, 2, 14, 6, 35, - 5, 22, 6, 7, 14, 35 -}; - -static final short[] _hpricot_scan_key_offsets = { - 0, 3, 4, 5, 6, 7, 8, 9, - 10, 13, 22, 37, 44, 45, 46, 47, - 48, 49, 52, 57, 69, 81, 86, 93, - 94, 95, 100, 101, 105, 106, 107, 121, - 135, 152, 169, 186, 203, 210, 212, 214, - 220, 222, 227, 232, 238, 240, 245, 251, - 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 282, 296, 300, 313, - 326, 340, 354, 355, 366, 375, 388, 405, - 423, 441, 450, 461, 480, 499, 510, 521, - 536, 538, 540, 556, 572, 575, 587, 599, - 619, 639, 658, 677, 697, 717, 728, 739, - 751, 763, 775, 791, 794, 809, 811, 813, - 829, 845, 848, 860, 871, 890, 910, 930, - 941, 952, 964, 984, 1004, 1016, 1036, 1057, - 1074, 1091, 1095, 1098, 1110, 1122, 1142, 1162, - 1182, 1194, 1206, 1226, 1242, 1258, 1270, 1291, - 1310, 1313, 1328, 1340, 1355, 1358, 1369, 1371, - 1373, 1384, 1391, 1404, 1418, 1432, 1445, 1446, - 1447, 1448, 1449, 1450, 1451, 1455, 1460, 1469, - 1479, 1484, 1491, 1492, 1493, 1494, 1495, 1496, - 1497, 1498, 1499, 1503, 1508, 1512, 1522, 1527, - 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, - 1541, 1542, 1546, 1551, 1553, 1554, 1555, 1560, - 1561, 1562, 1564, 1565, 1566, 1567, 1568, 1572, - 1582, 1591, 1601, 1602, 1603, 1605, 1614, 1615, - 1616, 1617, 1619, 1621, 1624, 1627, 1631, 1633, - 1634, 1636, 1637, 1640 -}; - -static final char[] _hpricot_scan_trans_keys = { - 45, 68, 91, 45, 79, 67, 84, 89, - 80, 69, 32, 9, 13, 32, 58, 95, - 9, 13, 65, 90, 97, 122, 32, 62, - 63, 91, 95, 9, 13, 45, 46, 48, - 58, 65, 90, 97, 122, 32, 62, 80, - 83, 91, 9, 13, 85, 66, 76, 73, - 67, 32, 9, 13, 32, 34, 39, 9, - 13, 9, 34, 61, 95, 32, 37, 39, - 59, 63, 90, 97, 122, 9, 34, 61, - 95, 32, 37, 39, 59, 63, 90, 97, - 122, 32, 62, 91, 9, 13, 32, 34, - 39, 62, 91, 9, 13, 34, 34, 32, - 62, 91, 9, 13, 93, 32, 62, 9, - 13, 39, 39, 9, 39, 61, 95, 32, - 33, 35, 37, 40, 59, 63, 90, 97, - 122, 9, 39, 61, 95, 32, 33, 35, - 37, 40, 59, 63, 90, 97, 122, 9, - 32, 33, 39, 62, 91, 95, 10, 13, - 35, 37, 40, 59, 61, 90, 97, 122, - 9, 32, 34, 39, 62, 91, 95, 10, - 13, 33, 37, 40, 59, 61, 90, 97, - 122, 9, 32, 33, 39, 62, 91, 95, - 10, 13, 35, 37, 40, 59, 61, 90, - 97, 122, 9, 32, 34, 39, 62, 91, - 95, 10, 13, 33, 37, 40, 59, 61, - 90, 97, 122, 32, 34, 39, 62, 91, - 9, 13, 34, 39, 34, 39, 32, 39, - 62, 91, 9, 13, 39, 93, 32, 62, - 93, 9, 13, 32, 39, 62, 9, 13, - 32, 34, 62, 91, 9, 13, 34, 93, - 32, 34, 62, 9, 13, 32, 39, 62, - 91, 9, 13, 9, 39, 61, 95, 32, - 33, 35, 37, 40, 59, 63, 90, 97, - 122, 89, 83, 84, 69, 77, 67, 68, - 65, 84, 65, 91, 58, 95, 65, 90, - 97, 122, 32, 62, 63, 95, 9, 13, - 45, 46, 48, 58, 65, 90, 97, 122, - 32, 62, 9, 13, 32, 47, 62, 63, - 95, 9, 13, 45, 58, 65, 90, 97, - 122, 32, 47, 62, 63, 95, 9, 13, - 45, 58, 65, 90, 97, 122, 32, 47, - 61, 62, 63, 95, 9, 13, 45, 58, - 65, 90, 97, 122, 32, 47, 61, 62, - 63, 95, 9, 13, 45, 58, 65, 90, - 97, 122, 62, 13, 32, 34, 39, 47, - 60, 62, 9, 10, 11, 12, 13, 32, - 47, 60, 62, 9, 10, 11, 12, 32, - 47, 62, 63, 95, 9, 13, 45, 58, - 65, 90, 97, 122, 13, 32, 47, 60, - 62, 63, 95, 9, 10, 11, 12, 45, - 58, 65, 90, 97, 122, 13, 32, 47, - 60, 61, 62, 63, 95, 9, 10, 11, - 12, 45, 58, 65, 90, 97, 122, 13, - 32, 47, 60, 61, 62, 63, 95, 9, - 10, 11, 12, 45, 58, 65, 90, 97, - 122, 13, 32, 47, 60, 62, 9, 10, - 11, 12, 13, 32, 34, 39, 47, 60, - 62, 9, 10, 11, 12, 13, 32, 34, - 39, 47, 60, 62, 63, 95, 9, 10, - 11, 12, 45, 58, 65, 90, 97, 122, - 13, 32, 34, 39, 47, 60, 62, 63, - 95, 9, 10, 11, 12, 45, 58, 65, - 90, 97, 122, 13, 32, 34, 47, 60, - 62, 92, 9, 10, 11, 12, 13, 32, - 34, 47, 60, 62, 92, 9, 10, 11, - 12, 32, 34, 47, 62, 63, 92, 95, - 9, 13, 45, 58, 65, 90, 97, 122, - 34, 92, 34, 92, 32, 34, 47, 61, - 62, 63, 92, 95, 9, 13, 45, 58, - 65, 90, 97, 122, 32, 34, 47, 61, - 62, 63, 92, 95, 9, 13, 45, 58, - 65, 90, 97, 122, 34, 62, 92, 13, - 32, 34, 39, 47, 60, 62, 92, 9, - 10, 11, 12, 13, 32, 34, 39, 47, - 60, 62, 92, 9, 10, 11, 12, 13, - 32, 34, 39, 47, 60, 62, 63, 92, - 95, 9, 10, 11, 12, 45, 58, 65, - 90, 97, 122, 13, 32, 34, 39, 47, - 60, 62, 63, 92, 95, 9, 10, 11, - 12, 45, 58, 65, 90, 97, 122, 13, - 32, 34, 47, 60, 62, 63, 92, 95, - 9, 10, 11, 12, 45, 58, 65, 90, - 97, 122, 13, 32, 34, 47, 60, 62, - 63, 92, 95, 9, 10, 11, 12, 45, - 58, 65, 90, 97, 122, 13, 32, 34, - 47, 60, 61, 62, 63, 92, 95, 9, - 10, 11, 12, 45, 58, 65, 90, 97, - 122, 13, 32, 34, 47, 60, 61, 62, - 63, 92, 95, 9, 10, 11, 12, 45, - 58, 65, 90, 97, 122, 13, 32, 34, - 47, 60, 62, 92, 9, 10, 11, 12, - 13, 32, 34, 47, 60, 62, 92, 9, - 10, 11, 12, 13, 32, 34, 39, 47, - 60, 62, 92, 9, 10, 11, 12, 13, - 32, 34, 39, 47, 60, 62, 92, 9, - 10, 11, 12, 13, 32, 34, 39, 47, - 60, 62, 92, 9, 10, 11, 12, 32, - 34, 39, 47, 62, 63, 92, 95, 9, - 13, 45, 58, 65, 90, 97, 122, 34, - 39, 92, 32, 39, 47, 62, 63, 92, - 95, 9, 13, 45, 58, 65, 90, 97, - 122, 39, 92, 39, 92, 32, 39, 47, - 61, 62, 63, 92, 95, 9, 13, 45, - 58, 65, 90, 97, 122, 32, 39, 47, - 61, 62, 63, 92, 95, 9, 13, 45, - 58, 65, 90, 97, 122, 39, 62, 92, - 13, 32, 34, 39, 47, 60, 62, 92, - 9, 10, 11, 12, 13, 32, 39, 47, - 60, 62, 92, 9, 10, 11, 12, 13, - 32, 39, 47, 60, 62, 63, 92, 95, - 9, 10, 11, 12, 45, 58, 65, 90, - 97, 122, 13, 32, 39, 47, 60, 61, - 62, 63, 92, 95, 9, 10, 11, 12, - 45, 58, 65, 90, 97, 122, 13, 32, - 39, 47, 60, 61, 62, 63, 92, 95, - 9, 10, 11, 12, 45, 58, 65, 90, - 97, 122, 13, 32, 39, 47, 60, 62, - 92, 9, 10, 11, 12, 13, 32, 39, - 47, 60, 62, 92, 9, 10, 11, 12, - 13, 32, 34, 39, 47, 60, 62, 92, - 9, 10, 11, 12, 13, 32, 34, 39, - 47, 60, 62, 63, 92, 95, 9, 10, - 11, 12, 45, 58, 65, 90, 97, 122, - 13, 32, 34, 39, 47, 60, 62, 63, - 92, 95, 9, 10, 11, 12, 45, 58, - 65, 90, 97, 122, 13, 32, 34, 39, - 47, 60, 62, 92, 9, 10, 11, 12, - 13, 32, 34, 39, 47, 60, 62, 63, - 92, 95, 9, 10, 11, 12, 45, 58, - 65, 90, 97, 122, 13, 32, 34, 39, - 47, 60, 61, 62, 63, 92, 95, 9, - 10, 11, 12, 45, 58, 65, 90, 97, - 122, 32, 34, 39, 47, 61, 62, 63, - 92, 95, 9, 13, 45, 58, 65, 90, - 97, 122, 32, 34, 39, 47, 61, 62, - 63, 92, 95, 9, 13, 45, 58, 65, - 90, 97, 122, 34, 39, 62, 92, 34, - 39, 92, 13, 32, 34, 39, 47, 60, - 62, 92, 9, 10, 11, 12, 13, 32, - 34, 39, 47, 60, 62, 92, 9, 10, - 11, 12, 13, 32, 34, 39, 47, 60, - 62, 63, 92, 95, 9, 10, 11, 12, - 45, 58, 65, 90, 97, 122, 13, 32, - 34, 39, 47, 60, 62, 63, 92, 95, - 9, 10, 11, 12, 45, 58, 65, 90, - 97, 122, 13, 32, 34, 39, 47, 60, - 62, 63, 92, 95, 9, 10, 11, 12, - 45, 58, 65, 90, 97, 122, 13, 32, - 34, 39, 47, 60, 62, 92, 9, 10, - 11, 12, 13, 32, 34, 39, 47, 60, - 62, 92, 9, 10, 11, 12, 13, 32, - 34, 39, 47, 60, 62, 63, 92, 95, - 9, 10, 11, 12, 45, 58, 65, 90, - 97, 122, 32, 34, 39, 47, 62, 63, - 92, 95, 9, 13, 45, 58, 65, 90, - 97, 122, 32, 34, 39, 47, 62, 63, - 92, 95, 9, 13, 45, 58, 65, 90, - 97, 122, 13, 32, 34, 39, 47, 60, - 62, 92, 9, 10, 11, 12, 13, 32, - 34, 39, 47, 60, 61, 62, 63, 92, - 95, 9, 10, 11, 12, 45, 58, 65, - 90, 97, 122, 13, 32, 39, 47, 60, - 62, 63, 92, 95, 9, 10, 11, 12, - 45, 58, 65, 90, 97, 122, 34, 39, - 92, 32, 39, 47, 62, 63, 92, 95, - 9, 13, 45, 58, 65, 90, 97, 122, - 13, 32, 34, 39, 47, 60, 62, 92, - 9, 10, 11, 12, 32, 34, 47, 62, - 63, 92, 95, 9, 13, 45, 58, 65, - 90, 97, 122, 34, 39, 92, 13, 32, - 39, 47, 60, 62, 92, 9, 10, 11, - 12, 34, 92, 39, 92, 13, 32, 34, - 39, 47, 60, 62, 9, 10, 11, 12, - 58, 95, 120, 65, 90, 97, 122, 32, - 63, 95, 9, 13, 45, 46, 48, 58, - 65, 90, 97, 122, 32, 63, 95, 109, - 9, 13, 45, 46, 48, 58, 65, 90, - 97, 122, 32, 63, 95, 108, 9, 13, - 45, 46, 48, 58, 65, 90, 97, 122, - 32, 63, 95, 9, 13, 45, 46, 48, - 58, 65, 90, 97, 122, 101, 114, 115, - 105, 111, 110, 32, 61, 9, 13, 32, - 34, 39, 9, 13, 95, 45, 46, 48, - 58, 65, 90, 97, 122, 34, 95, 45, - 46, 48, 58, 65, 90, 97, 122, 32, - 62, 63, 9, 13, 32, 62, 63, 101, - 115, 9, 13, 62, 110, 99, 111, 100, - 105, 110, 103, 32, 61, 9, 13, 32, - 34, 39, 9, 13, 65, 90, 97, 122, - 34, 95, 45, 46, 48, 57, 65, 90, - 97, 122, 32, 62, 63, 9, 13, 32, - 62, 63, 115, 9, 13, 116, 97, 110, - 100, 97, 108, 111, 110, 101, 32, 61, - 9, 13, 32, 34, 39, 9, 13, 110, - 121, 111, 34, 32, 62, 63, 9, 13, - 101, 115, 110, 121, 111, 39, 101, 115, - 65, 90, 97, 122, 39, 95, 45, 46, - 48, 57, 65, 90, 97, 122, 95, 45, - 46, 48, 58, 65, 90, 97, 122, 39, - 95, 45, 46, 48, 58, 65, 90, 97, - 122, 62, 62, 10, 60, 33, 47, 58, - 63, 95, 65, 90, 97, 122, 39, 93, - 34, 34, 92, 39, 92, 34, 39, 92, - 32, 9, 13, 32, 118, 9, 13, 10, - 45, 45, 10, 93, 93, 10, 62, 63, - 62, 0 -}; - -static final byte[] _hpricot_scan_single_lengths = { - 3, 1, 1, 1, 1, 1, 1, 1, - 1, 3, 5, 5, 1, 1, 1, 1, - 1, 1, 3, 4, 4, 3, 5, 1, - 1, 3, 1, 2, 1, 1, 4, 4, - 7, 7, 7, 7, 5, 2, 2, 4, - 2, 3, 3, 4, 2, 3, 4, 4, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 4, 2, 5, 5, - 6, 6, 1, 7, 5, 5, 7, 8, - 8, 5, 7, 9, 9, 7, 7, 7, - 2, 2, 8, 8, 3, 8, 8, 10, - 10, 9, 9, 10, 10, 7, 7, 8, - 8, 8, 8, 3, 7, 2, 2, 8, - 8, 3, 8, 7, 9, 10, 10, 7, - 7, 8, 10, 10, 8, 10, 11, 9, - 9, 4, 3, 8, 8, 10, 10, 10, - 8, 8, 10, 8, 8, 8, 11, 9, - 3, 7, 8, 7, 3, 7, 2, 2, - 7, 3, 3, 4, 4, 3, 1, 1, - 1, 1, 1, 1, 2, 3, 1, 2, - 3, 5, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 3, 0, 2, 3, 4, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 3, 2, 1, 1, 3, 1, - 1, 2, 1, 1, 1, 1, 0, 2, - 1, 2, 1, 1, 2, 5, 1, 1, - 1, 2, 2, 3, 1, 2, 2, 1, - 2, 1, 3, 1 -}; - -static final byte[] _hpricot_scan_range_lengths = { - 0, 0, 0, 0, 0, 0, 0, 0, - 1, 3, 5, 1, 0, 0, 0, 0, - 0, 1, 1, 4, 4, 1, 1, 0, - 0, 1, 0, 1, 0, 0, 5, 5, - 5, 5, 5, 5, 1, 0, 0, 1, - 0, 1, 1, 1, 0, 1, 1, 5, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2, 5, 1, 4, 4, - 4, 4, 0, 2, 2, 4, 5, 5, - 5, 2, 2, 5, 5, 2, 2, 4, - 0, 0, 4, 4, 0, 2, 2, 5, - 5, 5, 5, 5, 5, 2, 2, 2, - 2, 2, 4, 0, 4, 0, 0, 4, - 4, 0, 2, 2, 5, 5, 5, 2, - 2, 2, 5, 5, 2, 5, 5, 4, - 4, 0, 0, 2, 2, 5, 5, 5, - 2, 2, 5, 4, 4, 2, 5, 5, - 0, 4, 2, 4, 0, 2, 0, 0, - 2, 2, 5, 5, 5, 5, 0, 0, - 0, 0, 0, 0, 1, 1, 4, 4, - 1, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 1, 2, 4, 1, 1, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 2, 4, - 4, 4, 0, 0, 0, 2, 0, 0, - 0, 0, 0, 0, 1, 1, 0, 0, - 0, 0, 0, 0 -}; - -static final short[] _hpricot_scan_index_offsets = { - 0, 4, 6, 8, 10, 12, 14, 16, - 18, 21, 28, 39, 46, 48, 50, 52, - 54, 56, 59, 64, 73, 82, 87, 94, - 96, 98, 103, 105, 109, 111, 113, 123, - 133, 146, 159, 172, 185, 192, 195, 198, - 204, 207, 212, 217, 223, 226, 231, 237, - 247, 249, 251, 253, 255, 257, 259, 261, - 263, 265, 267, 269, 274, 284, 288, 298, - 308, 319, 330, 332, 342, 350, 360, 373, - 387, 401, 409, 419, 434, 449, 459, 469, - 481, 484, 487, 500, 513, 517, 528, 539, - 555, 571, 586, 601, 617, 633, 643, 653, - 664, 675, 686, 699, 703, 715, 718, 721, - 734, 747, 751, 762, 772, 787, 803, 819, - 829, 839, 850, 866, 882, 893, 909, 926, - 940, 954, 959, 963, 974, 985, 1001, 1017, - 1033, 1044, 1055, 1071, 1084, 1097, 1108, 1125, - 1140, 1144, 1156, 1167, 1179, 1183, 1193, 1196, - 1199, 1209, 1215, 1224, 1234, 1244, 1253, 1255, - 1257, 1259, 1261, 1263, 1265, 1269, 1274, 1280, - 1287, 1292, 1299, 1301, 1303, 1305, 1307, 1309, - 1311, 1313, 1315, 1319, 1324, 1327, 1334, 1339, - 1345, 1347, 1349, 1351, 1353, 1355, 1357, 1359, - 1361, 1363, 1367, 1372, 1375, 1377, 1379, 1384, - 1386, 1388, 1391, 1393, 1395, 1397, 1399, 1402, - 1409, 1415, 1422, 1424, 1426, 1429, 1437, 1439, - 1441, 1443, 1446, 1449, 1453, 1456, 1460, 1463, - 1465, 1468, 1470, 1474 -}; - -static final short[] _hpricot_scan_indicies = { - 335, 336, 337, 296, 356, 296, 349, 296, - 399, 296, 401, 296, 354, 296, 350, 296, - 400, 296, 308, 308, 296, 308, 309, 309, - 308, 309, 309, 296, 328, 330, 329, 331, - 329, 328, 329, 329, 329, 329, 296, 310, - 302, 311, 312, 0, 310, 296, 353, 296, - 342, 296, 347, 296, 346, 296, 343, 296, - 304, 304, 296, 304, 305, 306, 304, 296, - 321, 320, 321, 321, 321, 321, 321, 321, - 296, 319, 320, 319, 319, 319, 319, 319, - 319, 296, 298, 302, 0, 298, 296, 298, - 300, 307, 302, 0, 298, 296, 6, 222, - 6, 13, 358, 302, 0, 358, 69, 1, - 0, 1, 302, 1, 69, 6, 182, 6, - 5, 322, 323, 322, 322, 322, 322, 322, - 322, 322, 296, 299, 303, 299, 299, 299, - 299, 299, 299, 299, 296, 297, 297, 299, - 303, 302, 0, 299, 298, 299, 299, 299, - 299, 296, 297, 297, 300, 301, 302, 0, - 299, 298, 299, 299, 299, 299, 296, 186, - 186, 188, 42, 184, 185, 188, 187, 188, - 188, 188, 188, 182, 43, 43, 38, 44, - 40, 34, 41, 37, 41, 41, 41, 41, - 5, 37, 38, 39, 40, 34, 37, 5, - 63, 224, 223, 63, 64, 62, 371, 6, - 40, 34, 371, 5, 35, 36, 34, 26, - 27, 1, 26, 0, 36, 6, 40, 36, - 5, 60, 6, 61, 58, 60, 13, 35, - 59, 58, 59, 6, 61, 59, 13, 183, - 6, 184, 185, 183, 182, 41, 42, 41, - 41, 41, 41, 41, 41, 41, 5, 403, - 296, 351, 296, 352, 296, 345, 296, 348, - 296, 398, 296, 344, 296, 341, 296, 402, - 296, 397, 296, 355, 296, 338, 338, 338, - 338, 296, 332, 334, 333, 333, 332, 333, - 333, 333, 333, 296, 313, 314, 313, 296, - 324, 326, 327, 325, 325, 324, 325, 325, - 325, 296, 315, 317, 318, 316, 316, 315, - 316, 316, 316, 296, 364, 366, 367, 368, - 365, 365, 364, 365, 365, 365, 69, 359, - 361, 362, 162, 360, 360, 359, 360, 360, - 360, 69, 369, 69, 157, 157, 159, 160, - 161, 69, 162, 157, 158, 156, 66, 66, - 68, 69, 70, 66, 67, 65, 363, 361, - 162, 360, 360, 363, 360, 360, 360, 69, - 66, 66, 74, 69, 76, 73, 73, 66, - 67, 73, 73, 73, 65, 132, 132, 135, - 69, 136, 137, 134, 134, 132, 133, 134, - 134, 134, 65, 71, 71, 74, 69, 75, - 76, 73, 73, 71, 72, 73, 73, 73, - 65, 66, 66, 68, 69, 70, 66, 67, - 65, 226, 226, 228, 229, 230, 69, 70, - 226, 227, 156, 163, 163, 159, 160, 161, - 69, 162, 165, 165, 163, 164, 165, 165, - 165, 156, 226, 226, 228, 229, 231, 69, - 76, 165, 165, 226, 227, 165, 165, 165, - 156, 248, 248, 84, 246, 199, 250, 195, - 248, 249, 189, 92, 92, 84, 95, 7, - 96, 97, 92, 93, 91, 372, 3, 48, - 50, 47, 8, 47, 372, 47, 47, 47, - 7, 3, 8, 7, 11, 8, 7, 122, - 3, 124, 125, 126, 123, 8, 123, 122, - 123, 123, 123, 7, 46, 3, 48, 49, - 50, 47, 8, 47, 46, 47, 47, 47, - 7, 3, 45, 8, 7, 190, 190, 192, - 193, 194, 7, 50, 195, 190, 191, 189, - 196, 196, 192, 193, 194, 7, 50, 195, - 196, 197, 189, 196, 196, 192, 193, 194, - 7, 50, 198, 195, 198, 196, 197, 198, - 198, 198, 189, 242, 242, 244, 245, 247, - 7, 103, 198, 195, 198, 242, 243, 198, - 198, 198, 189, 248, 248, 84, 247, 199, - 251, 198, 195, 198, 248, 249, 198, 198, - 198, 189, 92, 92, 84, 101, 7, 103, - 100, 97, 100, 92, 93, 100, 100, 100, - 91, 144, 144, 84, 147, 7, 148, 149, - 146, 97, 146, 144, 145, 146, 146, 146, - 91, 98, 98, 84, 101, 7, 102, 103, - 100, 97, 100, 98, 99, 100, 100, 100, - 91, 92, 92, 84, 95, 7, 96, 97, - 92, 93, 91, 92, 92, 94, 95, 7, - 96, 97, 92, 93, 91, 242, 242, 244, - 245, 246, 7, 96, 195, 242, 243, 189, - 258, 258, 263, 94, 256, 215, 261, 211, - 258, 259, 205, 105, 105, 80, 94, 108, - 9, 109, 110, 105, 106, 104, 373, 10, - 11, 55, 57, 54, 12, 54, 373, 54, - 54, 54, 9, 10, 11, 12, 9, 370, - 3, 31, 33, 30, 4, 30, 370, 30, - 30, 30, 2, 3, 4, 2, 10, 4, - 2, 117, 3, 119, 120, 121, 118, 4, - 118, 117, 118, 118, 118, 2, 29, 3, - 31, 32, 33, 30, 4, 30, 29, 30, - 30, 30, 2, 3, 28, 4, 2, 167, - 167, 169, 170, 171, 2, 33, 172, 167, - 168, 166, 78, 78, 84, 81, 2, 82, - 83, 78, 79, 77, 78, 78, 84, 88, - 2, 90, 87, 83, 87, 78, 79, 87, - 87, 87, 77, 138, 138, 84, 141, 2, - 142, 143, 140, 83, 140, 138, 139, 140, - 140, 140, 77, 85, 85, 84, 88, 2, - 89, 90, 87, 83, 87, 85, 86, 87, - 87, 87, 77, 78, 78, 84, 81, 2, - 82, 83, 78, 79, 77, 78, 78, 80, - 81, 2, 82, 83, 78, 79, 77, 232, - 232, 234, 235, 236, 2, 82, 172, 232, - 233, 166, 173, 173, 169, 170, 171, 2, - 33, 175, 172, 175, 173, 174, 175, 175, - 175, 166, 232, 232, 234, 235, 237, 2, - 90, 175, 172, 175, 232, 233, 175, 175, - 175, 166, 258, 258, 80, 260, 256, 215, - 261, 211, 258, 259, 205, 105, 105, 80, - 94, 114, 9, 116, 113, 110, 113, 105, - 106, 113, 113, 113, 104, 150, 150, 80, - 94, 153, 9, 154, 155, 152, 110, 152, - 150, 151, 152, 152, 152, 104, 53, 10, - 11, 55, 56, 57, 54, 12, 54, 53, - 54, 54, 54, 9, 127, 10, 11, 129, - 130, 131, 128, 12, 128, 127, 128, 128, - 128, 9, 10, 11, 52, 12, 9, 51, - 51, 12, 9, 206, 206, 208, 209, 210, - 9, 57, 211, 206, 207, 205, 212, 212, - 208, 209, 210, 9, 57, 211, 212, 213, - 205, 212, 212, 208, 209, 210, 9, 57, - 214, 211, 214, 212, 213, 214, 214, 214, - 205, 252, 252, 254, 255, 257, 9, 116, - 214, 211, 214, 252, 253, 214, 214, 214, - 205, 258, 258, 80, 260, 257, 215, 262, - 214, 211, 214, 258, 259, 214, 214, 214, - 205, 105, 105, 80, 94, 108, 9, 109, - 110, 105, 106, 104, 105, 105, 107, 107, - 108, 9, 109, 110, 105, 106, 104, 258, - 258, 263, 94, 257, 215, 262, 214, 211, - 214, 258, 259, 214, 214, 214, 205, 218, - 10, 216, 220, 221, 219, 217, 219, 218, - 219, 219, 219, 215, 218, 225, 11, 220, - 221, 219, 217, 219, 218, 219, 219, 219, - 215, 252, 252, 254, 255, 256, 9, 109, - 211, 252, 253, 205, 111, 111, 80, 94, - 114, 9, 115, 116, 113, 110, 113, 111, - 112, 113, 113, 113, 104, 238, 238, 84, - 237, 176, 241, 175, 172, 175, 238, 239, - 175, 175, 175, 166, 10, 216, 217, 215, - 178, 3, 180, 181, 179, 177, 179, 178, - 179, 179, 179, 176, 173, 173, 169, 170, - 171, 2, 33, 172, 173, 174, 166, 201, - 3, 203, 204, 202, 200, 202, 201, 202, - 202, 202, 199, 225, 11, 217, 215, 238, - 238, 84, 236, 176, 240, 172, 238, 239, - 166, 3, 200, 199, 3, 177, 176, 163, - 163, 159, 160, 161, 69, 162, 163, 164, - 156, 339, 339, 340, 339, 339, 296, 15, - 357, 357, 15, 357, 357, 357, 357, 296, - 15, 357, 357, 408, 15, 357, 357, 357, - 357, 296, 15, 357, 357, 404, 15, 357, - 357, 357, 357, 296, 16, 357, 357, 16, - 357, 357, 357, 357, 296, 287, 264, 294, - 264, 396, 264, 387, 264, 393, 264, 268, - 264, 268, 265, 268, 264, 265, 266, 267, - 265, 264, 282, 282, 282, 282, 282, 264, - 275, 276, 276, 276, 276, 276, 264, 269, - 270, 271, 269, 264, 269, 270, 271, 272, - 273, 269, 264, 270, 264, 388, 264, 285, - 264, 394, 264, 385, 264, 289, 264, 390, - 264, 288, 264, 288, 374, 288, 264, 374, - 375, 376, 374, 264, 283, 283, 264, 277, - 278, 278, 278, 278, 278, 264, 274, 270, - 271, 274, 264, 274, 270, 271, 273, 274, - 264, 295, 264, 384, 264, 389, 264, 286, - 264, 284, 264, 290, 264, 395, 264, 391, - 264, 380, 264, 380, 377, 380, 264, 377, - 378, 379, 377, 264, 291, 292, 264, 293, - 264, 279, 264, 381, 270, 271, 381, 264, - 386, 264, 293, 264, 405, 406, 264, 392, - 264, 279, 264, 407, 264, 392, 264, 383, - 383, 264, 277, 281, 281, 281, 281, 281, - 264, 382, 382, 382, 382, 382, 264, 275, - 280, 280, 280, 280, 280, 264, 415, 414, - 422, 421, 24, 25, 23, 19, 20, 21, - 22, 21, 21, 21, 18, 6, 5, 1, - 0, 6, 13, 3, 8, 7, 3, 4, - 2, 10, 11, 12, 9, 15, 15, 14, - 16, 17, 16, 14, 412, 413, 411, 410, - 409, 419, 420, 418, 417, 416, 426, 424, - 427, 425, 424, 423, 0 -}; - -static final short[] _hpricot_scan_trans_targs_wi = { - 26, 27, 101, 69, 102, 29, 25, 80, - 81, 99, 100, 79, 122, 24, 204, 212, - 213, 150, 204, 0, 59, 62, 145, 204, - 204, 205, 41, 207, 210, 104, 103, 105, - 106, 210, 40, 41, 42, 36, 37, 46, - 206, 47, 32, 35, 34, 209, 83, 82, - 84, 85, 209, 98, 211, 119, 120, 121, - 123, 211, 44, 45, 43, 208, 38, 39, - 43, 68, 69, 70, 73, 204, 204, 65, - 72, 71, 73, 74, 204, 107, 100, 108, - 108, 111, 210, 112, 70, 104, 110, 109, - 111, 113, 210, 78, 79, 90, 90, 93, - 209, 94, 83, 92, 91, 93, 95, 209, - 97, 98, 117, 117, 128, 211, 129, 119, - 134, 118, 128, 133, 211, 104, 103, 105, - 106, 210, 83, 82, 84, 85, 209, 119, - 120, 121, 123, 211, 65, 72, 71, 73, - 74, 204, 104, 110, 109, 111, 113, 210, - 83, 92, 91, 93, 95, 209, 119, 134, - 118, 128, 133, 211, 68, 144, 74, 142, - 143, 73, 204, 75, 76, 71, 107, 138, - 113, 136, 137, 111, 112, 114, 115, 109, - 101, 102, 100, 103, 105, 210, 29, 39, - 206, 40, 35, 36, 47, 78, 86, 95, - 139, 140, 93, 94, 87, 88, 91, 80, - 81, 79, 82, 84, 209, 97, 124, 133, - 131, 132, 128, 129, 125, 126, 118, 99, - 79, 122, 98, 120, 121, 211, 24, 38, - 43, 100, 75, 76, 77, 141, 73, 73, - 114, 115, 116, 135, 111, 111, 100, 108, - 210, 210, 87, 88, 89, 96, 93, 93, - 79, 90, 209, 209, 125, 126, 127, 130, - 128, 128, 98, 117, 90, 211, 211, 108, - 204, 157, 158, 200, 156, 161, 204, 162, - 163, 176, 175, 160, 159, 174, 173, 190, - 201, 199, 159, 173, 181, 165, 180, 151, - 170, 168, 182, 188, 191, 189, 152, 177, - 204, 33, 22, 31, 23, 34, 204, 32, - 18, 19, 30, 28, 9, 10, 11, 12, - 48, 61, 204, 63, 64, 66, 204, 20, - 21, 20, 31, 32, 63, 62, 66, 204, - 11, 10, 204, 26, 61, 60, 204, 1, - 2, 53, 60, 146, 147, 56, 14, 17, - 55, 52, 16, 15, 21, 3, 7, 50, - 51, 13, 6, 204, 204, 146, 25, 65, - 64, 66, 67, 69, 65, 64, 66, 67, - 204, 204, 100, 39, 79, 98, 171, 172, - 198, 186, 187, 193, 185, 190, 201, 199, - 178, 167, 192, 154, 164, 179, 169, 184, - 195, 155, 166, 183, 153, 58, 54, 4, - 8, 5, 57, 49, 149, 194, 196, 197, - 148, 214, 202, 214, 214, 215, 214, 214, - 216, 203, 216, 216, 217, 216, 216, 218, - 218, 218, 218, 219 -}; - -static final short[] _hpricot_scan_trans_actions_wi = { - 0, 0, 0, 7, 0, 0, 21, 0, - 0, 0, 7, 7, 0, 0, 65, 0, - 31, 0, 67, 0, 0, 1, 0, 63, - 132, 178, 0, 144, 147, 0, 174, 23, - 0, 186, 0, 21, 0, 0, 0, 21, - 144, 0, 111, 0, 111, 147, 0, 174, - 23, 0, 186, 7, 147, 0, 174, 23, - 0, 186, 0, 0, 0, 144, 0, 21, - 21, 0, 9, 9, 102, 73, 162, 9, - 9, 174, 117, 0, 170, 0, 9, 9, - 7, 102, 205, 0, 7, 9, 9, 174, - 117, 0, 215, 0, 9, 9, 7, 102, - 205, 0, 9, 9, 174, 117, 0, 215, - 0, 9, 9, 7, 102, 205, 0, 9, - 9, 174, 117, 0, 215, 11, 0, 108, - 11, 210, 11, 0, 108, 11, 210, 11, - 0, 108, 11, 210, 105, 105, 0, 158, - 11, 195, 105, 105, 0, 158, 11, 232, - 105, 105, 0, 158, 11, 232, 105, 105, - 0, 158, 11, 232, 3, 3, 3, 0, - 0, 87, 120, 3, 3, 190, 3, 3, - 3, 0, 7, 87, 3, 3, 3, 190, - 3, 3, 3, 190, 87, 200, 3, 3, - 182, 3, 3, 3, 3, 3, 3, 3, - 7, 0, 87, 3, 3, 3, 190, 3, - 3, 3, 190, 87, 200, 3, 3, 3, - 7, 7, 87, 3, 3, 3, 190, 3, - 75, 3, 3, 190, 87, 200, 3, 3, - 84, 99, 78, 78, 0, 0, 150, 154, - 78, 78, 0, 7, 150, 154, 78, 78, - 220, 226, 78, 78, 7, 0, 150, 154, - 78, 78, 220, 226, 78, 78, 7, 7, - 150, 154, 78, 78, 75, 220, 226, 99, - 69, 0, 0, 0, 0, 0, 49, 0, - 0, 0, 0, 13, 0, 15, 0, 17, - 0, 0, 3, 3, 0, 0, 0, 0, - 0, 0, 0, 3, 3, 0, 0, 0, - 71, 0, 0, 0, 0, 19, 51, 19, - 0, 0, 0, 0, 0, 1, 0, 0, - 0, 0, 55, 0, 114, 0, 53, 0, - 19, 3, 3, 81, 5, 0, 5, 93, - 5, 0, 90, 5, 5, 0, 96, 0, - 0, 0, 1, 25, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 61, 59, 0, 0, 0, - 174, 23, 0, 0, 11, 0, 108, 11, - 166, 57, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3, 3, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3, 3, 0, - 0, 35, 0, 33, 123, 31, 37, 135, - 41, 0, 39, 126, 31, 43, 138, 47, - 141, 45, 129, 0 -}; - -static final short[] _hpricot_scan_to_state_actions = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 27, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 27, 0, - 27, 0, 27, 0 -}; - -static final short[] _hpricot_scan_from_state_actions = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 29, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 29, 0, - 29, 0, 29, 0 -}; - -static final int hpricot_scan_start = 204; - -static final int hpricot_scan_error = -1; - - -public final static int BUFSIZE=16384; - -private void rb_yield_tokens(IRubyObject sym, IRubyObject tag, IRubyObject attr, IRubyObject raw, boolean taint) { - IRubyObject ary; - if (sym == runtime.newSymbol("text")) { - raw = tag; - } - ary = runtime.newArray(new IRubyObject[]{sym, tag, attr, raw}); - if (taint) { - ary.setTaint(true); - tag.setTaint(true); - attr.setTaint(true); - raw.setTaint(true); - } - block.yield(runtime.getCurrentContext(), ary, null, null, false); -} - - -int cs, act, have = 0, nread = 0, curline = 1, p=-1; -boolean text = false; -int tokstart=-1, tokend; -char[] buf; -Ruby runtime; -IRubyObject attr, bufsize; -IRubyObject[] tag, akey, aval; -int mark_tag, mark_akey, mark_aval; -boolean done = false, ele_open = false; -int buffer_size = 0; -boolean taint = false; -Block block = null; - - -IRubyObject xmldecl, doctype, procins, stag, etag, emptytag, comment, - cdata, sym_text; - -IRubyObject hpricot_scan(IRubyObject recv, IRubyObject port) { - attr = bufsize = runtime.getNil(); - tag = new IRubyObject[]{runtime.getNil()}; - akey = new IRubyObject[]{runtime.getNil()}; - aval = new IRubyObject[]{runtime.getNil()}; - - RubyClass rb_eHpricotParseError = runtime.getModule("Hpricot").getClass("ParseError"); - - taint = port.isTaint(); - if ( !port.respondsTo("read")) { - if ( port.respondsTo("to_str")) { - port = port.callMethod(runtime.getCurrentContext(),"to_str"); - } else { - throw runtime.newArgumentError("bad Hpricot argument, String or IO only please."); - } - } - - buffer_size = BUFSIZE; - if (recv.getInstanceVariable("@buffer_size") != null) { - bufsize = recv.getInstanceVariable("@buffer_size"); - if (!bufsize.isNil()) { - buffer_size = RubyNumeric.fix2int(bufsize); - } - } - buf = new char[buffer_size]; - - - { - cs = hpricot_scan_start; - tokstart = -1; - tokend = -1; - act = 0; - } - - while( !done ) { - IRubyObject str; - p = have; - int pe; - int len, space = buffer_size - have; - - if ( space == 0 ) { - /* We've used up the entire buffer storing an already-parsed token - * prefix that must be preserved. Likely caused by super-long attributes. - * See ticket #13. */ - rb_raise(rb_eHpricotParseError, "ran out of buffer space on element <" + tag.toString() + ">, starting on line "+curline+"."); - } - - if (port.respondsTo("read")) { - str = port.callMethod(runtime.getCurrentContext(),"read",runtime.newFixnum(space)); - } else { - str = ((RubyString)port).substr(nread,space); - } - - str = str.convertToString(); - String sss = str.toString(); - char[] chars = sss.toCharArray(); - System.arraycopy(chars,0,buf,p,chars.length); - - len = sss.length(); - nread += len; - - if ( len < space ) { - len++; - done = true; - } - - pe = p + len; - char[] data = buf; - - - { - int _klen; - int _trans; - int _acts; - int _nacts; - int _keys; - - if ( p != pe ) { - _resume: while ( true ) { - _again: do { - _acts = _hpricot_scan_from_state_actions[cs]; - _nacts = (int) _hpricot_scan_actions[_acts++]; - while ( _nacts-- > 0 ) { - switch ( _hpricot_scan_actions[_acts++] ) { - case 21: - {tokstart = p;} - break; - } - } - - _match: do { - _keys = _hpricot_scan_key_offsets[cs]; - _trans = _hpricot_scan_index_offsets[cs]; - _klen = _hpricot_scan_single_lengths[cs]; - if ( _klen > 0 ) { - int _lower = _keys; - int _mid; - int _upper = _keys + _klen - 1; - while (true) { - if ( _upper < _lower ) - break; - - _mid = _lower + ((_upper-_lower) >> 1); - if ( data[p] < _hpricot_scan_trans_keys[_mid] ) - _upper = _mid - 1; - else if ( data[p] > _hpricot_scan_trans_keys[_mid] ) - _lower = _mid + 1; - else { - _trans += (_mid - _keys); - break _match; - } - } - _keys += _klen; - _trans += _klen; - } - - _klen = _hpricot_scan_range_lengths[cs]; - if ( _klen > 0 ) { - int _lower = _keys; - int _mid; - int _upper = _keys + (_klen<<1) - 2; - while (true) { - if ( _upper < _lower ) - break; - - _mid = _lower + (((_upper-_lower) >> 1) & ~1); - if ( data[p] < _hpricot_scan_trans_keys[_mid] ) - _upper = _mid - 2; - else if ( data[p] > _hpricot_scan_trans_keys[_mid+1] ) - _lower = _mid + 2; - else { - _trans += ((_mid - _keys)>>1); - break _match; - } - } - _trans += _klen; - } - } while (false); - - _trans = _hpricot_scan_indicies[_trans]; - cs = _hpricot_scan_trans_targs_wi[_trans]; - - if ( _hpricot_scan_trans_actions_wi[_trans] == 0 ) - break _again; - - _acts = _hpricot_scan_trans_actions_wi[_trans]; - _nacts = (int) _hpricot_scan_actions[_acts++]; - while ( _nacts-- > 0 ) - { - switch ( _hpricot_scan_actions[_acts++] ) - { - case 0: - { - if (text) { - CAT(tag, p); - ELE(sym_text); - text = false; - } - attr = runtime.getNil(); - tag[0] = runtime.getNil(); - mark_tag = -1; - ele_open = true; - } - break; - case 1: - { mark_tag = p; } - break; - case 2: - { mark_aval = p; } - break; - case 3: - { mark_akey = p; } - break; - case 4: - { SET(tag, p); } - break; - case 5: - { SET(aval, p); } - break; - case 6: - { - if (buf[p-1] == '"' || buf[p-1] == '\'') { SET(aval, p-1); } - else { SET(aval, p); } - } - break; - case 7: - { SET(akey, p); } - break; - case 8: - { SET(aval, p); ATTR(rb_str_new2("version"), aval); } - break; - case 9: - { SET(aval, p); ATTR(rb_str_new2("encoding"), aval); } - break; - case 10: - { SET(aval, p); ATTR(rb_str_new2("standalone"), aval); } - break; - case 11: - { SET(aval, p); ATTR(rb_str_new2("public_id"), aval); } - break; - case 12: - { SET(aval, p); ATTR(rb_str_new2("system_id"), aval); } - break; - case 13: - { - akey[0] = runtime.getNil(); - aval[0] = runtime.getNil(); - mark_akey = -1; - mark_aval = -1; - } - break; - case 14: - { - ATTR(akey, aval); - } - break; - case 15: - {curline += 1;} - break; - case 16: - { TEXT_PASS(); } - break; - case 17: - { EBLK(comment, 3); {cs = 204; if (true) break _again;} } - break; - case 18: - { EBLK(cdata, 3); {cs = 204; if (true) break _again;} } - break; - case 19: - { EBLK(procins, 2); {cs = 204; if (true) break _again;} } - break; - case 22: - {tokend = p+1;} - break; - case 23: - {tokend = p+1;{p = ((tokend))-1;}} - break; - case 24: - {tokend = p+1;{ TEXT_PASS(); }{p = ((tokend))-1;}} - break; - case 25: - {tokend = p;{ TEXT_PASS(); }{p = ((tokend))-1;}} - break; - case 26: - {{ TEXT_PASS(); }{p = ((tokend))-1;}} - break; - case 27: - {tokend = p+1;{p = ((tokend))-1;}} - break; - case 28: - {tokend = p+1;{ TEXT_PASS(); }{p = ((tokend))-1;}} - break; - case 29: - {tokend = p;{ TEXT_PASS(); }{p = ((tokend))-1;}} - break; - case 30: - {{ TEXT_PASS(); }{p = ((tokend))-1;}} - break; - case 31: - {tokend = p+1;{p = ((tokend))-1;}} - break; - case 32: - {tokend = p+1;{ TEXT_PASS(); }{p = ((tokend))-1;}} - break; - case 33: - {tokend = p;{ TEXT_PASS(); }{p = ((tokend))-1;}} - break; - case 34: - {act = 8;} - break; - case 35: - {act = 10;} - break; - case 36: - {act = 12;} - break; - case 37: - {act = 15;} - break; - case 38: - {tokend = p+1;{ ELE(xmldecl); }{p = ((tokend))-1;}} - break; - case 39: - {tokend = p+1;{ ELE(doctype); }{p = ((tokend))-1;}} - break; - case 40: - {tokend = p+1;{ ELE(stag); }{p = ((tokend))-1;}} - break; - case 41: - {tokend = p+1;{ ELE(etag); }{p = ((tokend))-1;}} - break; - case 42: - {tokend = p+1;{ ELE(emptytag); }{p = ((tokend))-1;}} - break; - case 43: - {tokend = p+1;{ {{p = ((tokend))-1;}{cs = 214; if (true) break _again;}} }{p = ((tokend))-1;}} - break; - case 44: - {tokend = p+1;{ {{p = ((tokend))-1;}{cs = 216; if (true) break _again;}} }{p = ((tokend))-1;}} - break; - case 45: - {tokend = p+1;{ TEXT_PASS(); }{p = ((tokend))-1;}} - break; - case 46: - {tokend = p;{ {{p = ((tokend))-1;}{cs = 218; if (true) break _again;}} }{p = ((tokend))-1;}} - break; - case 47: - {tokend = p;{ TEXT_PASS(); }{p = ((tokend))-1;}} - break; - case 48: - {{ {{p = ((tokend))-1;}{cs = 218; if (true) break _again;}} }{p = ((tokend))-1;}} - break; - case 49: - {{ TEXT_PASS(); }{p = ((tokend))-1;}} - break; - case 50: - { switch( act ) { - case 8: - { ELE(doctype); } - break; - case 10: - { ELE(stag); } - break; - case 12: - { ELE(emptytag); } - break; - case 15: - { TEXT_PASS(); } - break; - default: break; - } - {p = ((tokend))-1;}} - break; - } - } - - } while (false); - _acts = _hpricot_scan_to_state_actions[cs]; - _nacts = (int) _hpricot_scan_actions[_acts++]; - while ( _nacts-- > 0 ) { - switch ( _hpricot_scan_actions[_acts++] ) { - case 20: - {tokstart = -1;} - break; - } - } - - if ( ++p == pe ) - break _resume; - } - } - } - - if ( cs == hpricot_scan_error ) { - if(!tag[0].isNil()) { - rb_raise(rb_eHpricotParseError, "parse error on element <"+tag.toString()+">, starting on line "+curline+".\n" + NO_WAY_SERIOUSLY); - } else { - rb_raise(rb_eHpricotParseError, "parse error on line "+curline+".\n" + NO_WAY_SERIOUSLY); - } - } - - if ( done && ele_open ) { - ele_open = false; - if(tokstart > -1) { - mark_tag = tokstart; - tokstart = -1; - text = true; - } - } - - if(tokstart == -1) { - have = 0; - /* text nodes have no tokstart because each byte is parsed alone */ - if(mark_tag != -1 && text) { - if (done) { - if(mark_tag < p-1) { - CAT(tag, p-1); - ELE(sym_text); - } - } else { - CAT(tag, p); - } - } - mark_tag = 0; - } else { - have = pe - tokstart; - System.arraycopy(buf,tokstart,buf,0,have); - SLIDE(tag); - SLIDE(akey); - SLIDE(aval); - tokend = (tokend - tokstart); - tokstart = 0; - } - } - return runtime.getNil(); -} - -public static IRubyObject __hpricot_scan(IRubyObject recv, IRubyObject port, Block block) { - Ruby runtime = recv.getRuntime(); - HpricotScanService service = new HpricotScanService(); - service.runtime = runtime; - service.xmldecl = runtime.newSymbol("xmldecl"); - service.doctype = runtime.newSymbol("doctype"); - service.procins = runtime.newSymbol("procins"); - service.stag = runtime.newSymbol("stag"); - service.etag = runtime.newSymbol("etag"); - service.emptytag = runtime.newSymbol("emptytag"); - service.comment = runtime.newSymbol("comment"); - service.cdata = runtime.newSymbol("cdata"); - service.sym_text = runtime.newSymbol("text"); - service.block = block; - return service.hpricot_scan(recv, port); -} - - -public boolean basicLoad(final Ruby runtime) throws IOException { - Init_hpricot_scan(runtime); - return true; -} - -public static void Init_hpricot_scan(Ruby runtime) { - RubyModule mHpricot = runtime.defineModule("Hpricot"); - mHpricot.getMetaClass().attr_accessor(new IRubyObject[]{runtime.newSymbol("buffer_size")}); - CallbackFactory fact = runtime.callbackFactory(HpricotScanService.class); - mHpricot.getMetaClass().defineMethod("scan",fact.getSingletonMethod("__hpricot_scan",IRubyObject.class)); - mHpricot.defineClassUnder("ParseError",runtime.getClass("Exception"),runtime.getClass("Exception").getAllocator()); -} -} diff --git a/vendor/gems/hpricot-0.6/test/test_paths.rb b/vendor/gems/hpricot-0.6/test/test_paths.rb deleted file mode 100644 index 7204b77..0000000 --- a/vendor/gems/hpricot-0.6/test/test_paths.rb +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'hpricot' -require 'load_files' - -class TestParser < Test::Unit::TestCase - def test_roundtrip - @basic = Hpricot.parse(TestFiles::BASIC) - %w[link link[2] body #link1 a p.ohmy].each do |css_sel| - ele = @basic.at(css_sel) - assert_equal ele, @basic.at(ele.css_path) - assert_equal ele, @basic.at(ele.xpath) - end - end -end diff --git a/vendor/gems/rubypants-0.2.0/.specification b/vendor/gems/rubypants-0.2.0/.specification index 533ac6f..3e79e4f 100644 --- a/vendor/gems/rubypants-0.2.0/.specification +++ b/vendor/gems/rubypants-0.2.0/.specification @@ -38,6 +38,7 @@ rdoc_options: - --exclude - test_rubypants.rb require_paths: +- bin - . required_ruby_version: !ruby/object:Gem::Requirement requirements: @@ -54,7 +55,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement requirements: [] rubyforge_project: -rubygems_version: 1.1.0 +rubygems_version: 1.2.0 signing_key: specification_version: 1 summary: RubyPants is a Ruby port of the smart-quotes library SmartyPants.

This is covered elsewhere1.